JP2000122916A - 原子的更新処理を実行する方法 - Google Patents
原子的更新処理を実行する方法Info
- Publication number
- JP2000122916A JP2000122916A JP11286660A JP28666099A JP2000122916A JP 2000122916 A JP2000122916 A JP 2000122916A JP 11286660 A JP11286660 A JP 11286660A JP 28666099 A JP28666099 A JP 28666099A JP 2000122916 A JP2000122916 A JP 2000122916A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- memory
- cache
- semaphore
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
る最高のパフォーマンスの原子的更新方法にアクセスで
きるようにする。 【解決手段】エクスポート可能な64ビットのFETCHADD
命令を定義する。それぞれの仮想メモリページは、ライ
トバック方式を使用するキャッシュ可(WB)、キャッシュ
不可(UC)、キュッシュ不可でエクスポート可(UCE)のい
ずれかのメモリ属性を持つ。FETCHADD命令が実行され、
WBに設定された属性のページにあるメモリ位置がアクセ
スされると、CPUはそのメモリ位置を含むキャッシュ
ラインの排他的使用を得ることによりFECHADDを原子的
に実行する。UCEに設定された属性のページのメモリ位
置がアクセスされると、メモリコントローラのような中
央ロケーションにFETCHADD命令をエクスポートすること
により、CPUはFETCHADDを原子的に実行する。
Description
テムにおけるメモリアクセス操作に関する。より具体的
には、本発明は、典型的にはセマフォにアクセスするの
に使用される原子的メモリ更新処理に関する。
以上のプロセスが同じリソースに対して競合することが
よくある。例えば、2つ以上のプロセスが、特定のコマ
ンドシーケンスをビデオコントローラに書き込もうとす
ることがある。これらのプロセスは、1つの中央処理装
置(CPU)により実行されることもあれば、マルチプ
ロセッサコンピュータシステムの2つ以上のCPUによ
り実行されることもある。ここでは、「CPU」及び
「プロセッサ」という用語を、互いに取り替え可能に使
用する。
をアクセスすることができないので、コンピュータのオ
ペレーティングシステムは、リソースへのアクセスをス
ケジュールするなんらかの機構を提供しなければならな
い。当該技術分野で知られている一般的な機構の1つと
して、「番号取得(take-a-number)」スケジューリン
グ・アルゴリズムがある。このアルゴリズムは、1人の
店員の手があくのを待っている顧客の集団に多少似てい
る。顧客は店に入るときに番号を受け取る。店員がその
番号を呼ぶと、その顧客は店員のサービスを受けること
ができる。
ロセスに提供する機構は、当該技術分野ではセマフォと
して知られている。典型的には、セマフォはメモリ位置
に記憶される。セマフォをアクセスしようとするプロセ
スは、最初にメモリ位置を読み出し、このメモリ位置か
ら読み出した値をインクリメントし、結果をそのメモリ
位置に記憶し戻す。メモリ位置から読み出された値は、
そのプロセスの「番号」の役割を果たし、メモリ位置に
記憶し戻された結果は、そのリソースをアクセスしよう
とする次のプロセスの次の「番号」の役割を果たす。特
定の「番号」の保持者がリソースにアクセスしてもよい
ことをオペレーティングシステムが示すとき、その「番
号」を持つプロセスがアクセスを行う。
ムが正確に作動するには、メモリ読み出し、インクリメ
ントおよびメモリ書き込み処理が、「原子的」に発生し
なければならない。言い換えると、第1のプロセスがメ
モリ位置を読み出した時点から、第1のプロセスがイン
クリメントした値をメモリ位置に記憶し戻す時点までの
間は、セマフォを保持するメモリ位置を第2のプロセス
が読み出す機会があってはならないということである。
もし第2のプロセスによるそのような読み出し処理が発
生すると、第1および第2のプロセスはそれぞれ同じ
「番号」を持つことになり、リソースへのアクセスを同
時に試みようとすることがある。
にすることは、バスに連結される他の装置が直接記憶ア
クセス(DMA)処理を行わない単一CPUのコンピュ
ータシステムにおいては比較的簡単なことである。例え
ば、32ビットのIntel(商標)のアーキテクチャ(I
A−32)は、Intel i486TM 、Pentium(商標)、Pent
ium Pro、Pentium IIおよびCeleronTM のCPUにより
使用され、「XADD(exchange and add;交換および
加算) 」命令を含んでいる。この命令を使ってセマフォ
を含むメモリ位置をアクセスするとき、XADD命令は
通常以下のように用いられる。 XADD 宛先メモリ位置,ソースレジスタ
レジスタに含まれる値の合計を一時レジスタに記憶し、
宛先メモリ位置の内容をソースレジスタに記憶し、一時
レジスタの内容を宛先メモリ位置に記憶する。従って、
命令が実行されるときに値「1」がソースレジスタに記
憶されていると、命令が完了した時に宛先メモリ位置の
値は「1」だけインクリメントし、宛先メモリ位置にも
ともとあった値はソースレジスタに記憶される。命令が
完了するまでは割込みが処理されることは無く、またこ
の例のコンピュータシステムが単一CPU(他の装置
は、DMA処理を行わない)であるので、XADD命令
によって実行される「読み出し−変更−書き込み(read
-modify-write;リードモディファイライト)」処理の
間は、他のプロセスはセマフォにアクセスすることがで
きない。したがって、セマフォ処理は原子的に発生す
る。IA−32のXCHG(exchange;交換)命令及び
CMPXCHG(compareおよびexchange;比較および
交換)命令もまた、セマフォへの原子的アクセスを確実
にするのに広く用いられている。
よびDMA処理を実行するデバイスを備えるシステムに
おいては、第1のCPUがインクリメントしてセマフォ
をメモリ位置にと書き戻す前に、第2のCPUまたはデ
バイスがセマフォにアクセスしようとすることがあるの
で、原子性を保証するのがより複雑になる。このような
コンピュータシステムでは、バスのロック機構またはキ
ャッシュのコヒーレンシー機構のいずれかを使用するこ
とにより原子性が提供される。これらの機構を詳細を述
べる前に、CPUのキャッシュメモリの処理を最初に考
えるのが有用である。
のサブセットを保持する比較的小容量で高速のメモリで
ある。例えば、Pentium(商標) IIのCPUをベースと
したコンピュータシステムは、レベル1(L1)のキャ
ッシュをCPUと同じ集積回路(IC)上に有してお
り、レベル2(L2)のキャッシュをCPUと同じモジ
ュールではあるが異なるIC上に有している。L1キャ
ッシュはL2キャッシュより小さく、より高速である。
メインメモリの内容は、キャッシュラインと呼ばれる単
位でキャッシュメモリに記憶される。Pentium IIのCP
Uでは、L1およびL2キャッシュのキャッシュライン
の大きさが32バイトである。
トスルー(write-through)」のL1キャッシュを採用
する。このようなキャッシュにおいては、CPUからの
メモリ書き込みが、キャッシュおよびメインメモリに同
時に書込まれる。Intel PentiumのCPU以降、Intelの
プロセッサは、「ライトバック(write-back)」のキャ
ッシュをサポートしている。ライトバックキャッシュに
おいては、CPUからのメモリ書き込みがキャッシュに
のみ書込まれる。その後、キャッシュ機構が、そのメモ
リ書き込みが実際にメインメモリにコミットされたかど
うか(および、いつコミットされたか)を判断する。こ
れにより、メインメモリがビジーでなくなるまでメイン
メモリへの書き込みを遅らせることができるので、性能
(パフォーマン)が上がる。さらに、メモリオペランド
をメインメモリに書き戻す前に、メモリオペランドが何
回か変わることがある。また、メモリにキャッシュライ
ンを書き戻す前に、キャッシュラインの変更を完全に組
み立てる機会がキャッシュに与えられるが、これは当該
技術分野ではコウレシング(coalescing;併合)として
知られている。
Uキャッシュおよびメインメモリに記憶されたメモリ内
容が確実にコヒーレンス(一貫性)に保たれるようにす
る。例えば、第1のCPUのキャッシュが、メインメモ
リにまだ書き戻されていない、変更された(即ち「ダー
ティな(dirty)」)内容を持つキャッシュラインを含ん
でおり、第2のCPUが、メインメモリから対応するメ
モリ位置を読み出そうと試みる場合、キャッシュ・コヒ
ーレンシー機構は、メインメモリに現在記憶された正し
くない内容ではなく、第1のCPUのキャッシュからの
正しい内容が、確実に第2のCPUに提供されるように
する。キャッシュ・コヒーレンシー機構は、これを幾つ
かの方法で実現することができる。1つの手法は、単純
に第1のCPUのキャッシュに対し、変更されたキャッ
シュラインをメインメモリに強制的に書き戻させること
である。他の手法は、第2のCPUのキャッシュが、第
1のCPUのキャッシュに対する変更を「スヌープ(sn
oop;監視する)」できるようにすることにより、第1の
CPUのキャッシュで行われた変更で、第2のCPUの
キャッシュを継続的に更新できるようにする。
「共用(shared)」または「専有(exclusive)」とし
てロードされるよう要求することができる。共用キャッ
シュラインはCPUにより変更することができず、従っ
てキャッシュラインの内容が変更されないことがわかっ
ているような状況(例えば、プログラムコード)で有利
に使用される。専有(または、代わりに「専用(privat
e)」とも言う)キャッシュラインは、CPUにより変
更することができる。典型的には、「ダーティビット
(dirty-bit)」が、専有キャッシュラインに関連して
おり、内容が変更されたかどうかを示す。ダーティビッ
トが設定され、キャッシュラインが変更されたことを示
すならば、キャッシュラインをメインメモリに書き戻さ
なくてはならない。ダーティビットがクリアされ、キャ
ッシュラインが変更されていないことを示すならば、メ
インメモリに書き戻されたものとしてキャッシュライン
を廃棄することができる。通常、いずれの時点において
も、1のみのCPUが特定のキャッシュラインを専有と
して保持することができる。
CPUは、キャッシュ不可のメモリまたはライトスルー
方法を使ってキャッシュされたメモリにセマフォを記憶
することにより、そしてセマフォにアクセスするときに
「バスロック(bus lock)」を発行することにより、原
子性を提供する。バスロックは、セマフォ処理によって
必要とされる「読み出し−変更−書き込み」トランザク
ションの間、1つのCPUが確実にバスの排他的所有権
を持つようにする。この方法では、他のCUPがセマフ
ォを含むメモリ領域にアクセスする必要がないとして
も、「読み出し−変更−書き込み」トランザクションが
完了するまでの間は、すべての他のCPUが、バスにア
クセスすることからブロックされるので、パフォーマン
スにかなり重い負担をかける。様々な相互接続構造を使
用するハイエンドのマルチプロセッサシステムにおいて
は、「バス」という概念が完全に消えてしまうことがあ
り、したがって「バスロック」という概念も完全に消え
てしまうことがあるということに注意されたい。例え
ば、4つのプロセッサから成るポッド(pod)を持ち、
1つのポッドにおけるそれぞれのプロセッサが従来のバ
スを介して結合され、ポッドのそれぞれがリング・トポ
ロジーで相互接続されているマルチプロセッサシステム
においては、1つのポッドにおけるCPUが、他のポッ
ドにおけるバスをロックすることが通常できない。
ヒーレンシー機構を介して原子性を提供する。CPUが
セマフォをアクセスするとき、CPUのL1キャッシュ
が、セマフォを保持するメモリ位置を含むキャッシュラ
インの専有使用を要求する。従って、トランザクション
中に他のCPUがセマフォにアクセスできる可能性無し
に、CPUは、セマフォ処理により必要とされる「読み
出し−変更−書き込み」トランザクションを実行するこ
とができる。従って、他のCPUは引き続きバスにアク
セスすることができるので、引き続きメモリにアクセス
することができる。他のCPUに対してアクセス可能で
ないメインメモリ領域だけが、セマフォ処理を実行する
CPUのキャッシュに専有として保持されるキャッシュ
ラインであるので、本質的に、「キャッシュ内(in-cac
he)」の原子的更新が、「アドレスロック(address lo
ck)」を介して実行される。そのキャッシュライン全体
が専有として保持されるので、1つのキャッシュライン
に複数のセマフォを記憶しない方が望ましい場合が多い
ということに注意されたい。
原子性の提供は、バスロックを介してキャッシュ・コヒ
ーレンスを提供するよりもかなり良いパフォーマンスを
提供するが、「セマフォのキャッシュラインのスラッシ
ング」によってパフォーマンスがなお制限されることが
ある。セマフォのキャッシュラインのスラッシングは、
2つ以上のCPUが同じリソース、よって同じセマフォ
について継続的に競合する時に発生する。したがって、
それぞれのCPUがセマフォを含むキャッシュラインの
排他制御を得ようと継続的に試み、そのキャッシュライ
ンが継続的にそれぞれのCPUのキャッシュにロードさ
れて書き込まれる。通常、CPUがセマフォを含むキャ
ッシュラインに対する専有アクセス権を得るために待っ
ている間は、そのCPUの処理は進行することができな
い。
システムの中には、FETCHADD(fetch and add
(フェッチおよび加算))命令を用いてこの問題に対処
してきたものがある。「FETCHADD」命令に関連
する「インクリメント」処理は、メモリコントローラの
ような中央ロケーションにエクスポートされる。したが
って、CPUが、メモリ位置に記憶されたセマフォを参
照するFETCHADD命令を実行するとき、メモリコ
ントローラは、メモリ位置に記憶されたセマフォ値をそ
のCPUに提供する。さらに、メモリコントローラはセ
マフォをインクリメントし、その結果をそのメモリ位置
に記憶し戻す。従って、CPUが、セマフォを含むメモ
リ位置に書き込む必要が無いので、CPUは、セマフォ
を含むキャッシュラインへの専有アクセスを獲得する必
要はなく、それによりセマフォのキャッシュラインのス
ラッシングが取り除かれる。加えて、複数のセマフォ
が、パフォーマンスを犠牲にすることなくキャッシュラ
インの境界内に存在することができるので、セマフォを
より効率的にメモリに記憶することが可能になる。
いては、より高性能なハードウェアに向かって積極的な
動きが続いている。しかしながら、それとは相反するよ
うに、原子的セマフォ更新を提供するよう設計されたバ
スロック、キャッシュ・コヒーレンシー機構および命令
のエクスポートを介して原子性を提供するハードウェア
・アーキテクチャも含め、幅広い多様なハードウェア・
アーキテクチャ上で実行可能な、より低コストの「既製
品でシュリンクラップされた(off-the-shelf shrink-w
rapped)」オペレーティングシステム(およびその他の
ソフトウェア)に積極的に向かう傾向もある。しかし、
従来技術による原子性を提供する方法は、通常、どの方
法で原子性が提供されるのかをソフトウェアが「認識し
て」いることを当然としている。したがって、バスロッ
クを使用してセマフォにアクセスするよう設計されたソ
フトウェアは、原子的セマフォ更新を提供するよう設計
されたキャッシュ・コヒーレンシー機構、および命令エ
クスポートによって提供されるより高いセマフォのパフ
ォーマンスを使用することができない。同様に、キャッ
シュ・コヒーレンシー機構を使用してセマフォにアクセ
スするよう設計されたソフトウェアも、原子的セマフォ
更新を提供するよう設計された命令エクスポートにより
提供される、より高いセマフォのパフォーマンスを使用
することができない。当該技術分野において必要なの
は、特定の原子的更新方法を利用するようソフトウェア
を明確にコード化する必要なく、低コストの「既製品で
シュリンクラップされた」ソフトウェアが、それが実行
されるコンピュータシステムのハードウェアにより提供
される最高のパフォーマンスの原子的更新方法にアクセ
スできるようにするコンピュータアーキテクチャであ
る。
め、この発明は、メモリ属性フィールドをアクセスし
て、原子的更新処理によりアクセスされるメモリ位置
が、エクスポート可能な命令をサポートしているかどう
かを判断するステップと、前記原子的更新処理によりア
クセスされるメモリ位置がエクスポート可能な命令をサ
ポートしているならば、該原子的更新処理を中央ロケー
ションにエクスポートするステップと、前記原子的更新
処理によりアクセスされるメモリ位置がエクスポート可
能な命令をサポートしていないならば、キャッシュ・コ
ヒーレンシー機構を使用して原子的更新処理を実行する
ステップとを含む原子的更新処理を実行する方法を提供
する。この発明は、バスロックを必要とするIA−32
命令が、原子性を提供する優れた方法を提供するコンピ
ュータハードウェア上で効率的に実行するような、64
ビットのアーキテクチャ・フレームワークを提供するも
のである。さらに、この発明は、「既製品でシュリンク
ラップ」のソフトウェアにコード化することのできるエ
クスポート可能な64ビットのFETCHADD(フェ
ッチおよび加算)命令を定義するアーキテクチャ・フレ
ームワークを提供し、命令をエクスポートすることによ
り、またはキャッシュ・コヒーレンシー機構を用いるこ
とにより、FETCHADD命令を実行する上でハード
ウェアが原子性を保証するプログラム可能な方法を提供
する。
Kプレフィクスを、メモリオペランドにアクセスする形
の命令に限り、それらの命令の前につけることができ
る。すなわち、ADD、ADC、AND、BTC、BT
R、BTS、CMPXCHG、DEC、INC、NE
G、NOT、OR、SBB、SUB、XOR、XAD
D、XCHG命令の前につけることができる。この発明
によれば、CPUは、IA−32ロックチェック・イネ
ーブルビット(LC)を含む省略時制御レジスタを備え
る。LCビットが「1」に設定されており、IA−32
の原子的メモリ参照が、外部バスロック下でプロセッサ
の外部の「読み出し−変更−書き込み」処理を要求する
(例えば、命令が、LOCKプレフィクスを含む)と
き、IA−32インターセプト・ロックフォールトが発
生し、IA−32インターセプト・ロックフォールト・
ハンドラーが呼び出される。フォールト・ハンドラー
は、割り込みの原因となったIA−32命令を調べ、命
令を原子的にエミュレートするために適切なコードへと
分岐する。従ってこの発明は、この発明に基づいた64
ビットのアーキテクチャを持つコンピュータシステム
が、IA−32命令と2値(バイナリ)互換性を維持す
ることができるようにし、バスをロックしないことによ
って、64ビットのアーキテクチャにより提供される優
れたパフォーマンスを保つことができるようにする。
を持つエクスポート可能なFETCHADD命令を定義
する。
スがついたメモリ位置を読み出し、そのメモリ位置から
読み出された内容をレジスタR1に置き、そのメモリ位
置から読み出された内容にINC値を加算し、そしてそ
の和をそのメモリ位置に記憶しなおす。
は、「ライトバック方式を用いたキャッシュ可(W
B)」、「キャッシュ不可(UC)」または「キャッシ
ュ不可で、エクスポート可(UCE)」の状態をとるこ
とができるメモリ属性である。FETCHADD命令が
実行され、アクセスされたメモリ位置が、WBに設定さ
れた属性を持つページにあるとき、そのメモリ位置を含
むキャッシュラインの専有使用を得ることで、CPUに
よりFETCHADD命令が原子的に実行される。しか
しながら、FETCHADD命令が実行され、アクセス
されたメモリ位置が、UCEに設定された属性を持つペ
ージにあるときは、FETCHADD命令を、メモリコ
ントローラのような中央ロケーションにエクスポートす
ることにより、そのFETCHADD命令は原子的に実
行され、それによりセマフォのキャッシュラインのスラ
ッシングを除去することができる。
ッシュ・コヒーレンシー機構により提供されるのか、ま
たはFETCHADD命令をメモリコントローラのよう
な中央ロケーションにエクスポートすることにより提供
されるのかをソフトウェアが「認識しなく」ても、FE
TCHADD命令によりアクセスされるセマフォで、
「既製品でシュリンクラップの」ソフトウェアをコード
化することのできるアーキテクチャ・フレームワークを
提供する。したがって、そのようなソフトウェアは、そ
れぞれの方法に対して個々のコードセグメントを必要と
するソフトウェア無しで、コンピュータのハードウェア
上で利用可能な原子的更新処理を提供する最速の方法に
アクセスすることができる。
レンスを提供する優れた方法を提供するコンピュータハ
ードウェア上で、バスロックを必要とするIA−32命
令が効率的に実行する64ビットのアーキテクチャ・フ
レームワークを提供する。さらに、この発明は、「既製
品でシュリンクラップ」のソフトウェアにコード化する
ことのできるエクスポート可能な64ビットのFETC
HADD命令を定義するアーキテクチャと、命令をエク
スポートすることにより、またはキャッシュ・コヒーレ
ンシー機構を用いることにより、FETCHADD命令
を実行する上で原子性をハードウェアが保証することの
できるプログラム可能な方法を提供する。
であり、この発明を説明するのに使用される。コンピュ
ータシステム10は、CPU12および14のようなN
個のCPUを備える。また、システム10は、メモリコ
ントローラ16およびメインメモリ18を備える。メモ
リコントローラ16は、エクスポート可能なFETCH
ADD命令の実行をサポートする。
する前に、この発明に従って定義されるFETCHAD
D命令について最初に述べる。この命令は、以下のフォ
ーマットを持つ。
がついたメモリ位置を読み出し、そのメモリ位置から読
み出した内容をレジスタR1に置く。さらに、この命令
は、値INCを、そのメモリ位置から読み出した内容に
加算し、その和をそのメモリ位置に記憶しなおす。上記
のFETCHADD命令の表現は簡略化したものであ
る。追加の命令「コンプリーターズ(completers)」
は、メモリから読み出されるべきオペランドのサイズ、
他の命令に対するその命令の順序づけセマンティクス
(ordering semantics)、およびFETCHADD命令
をCPUキャッシュにプリフェッチ(先読み)するとき
に使用されるプリフェッチヒントなどのようなオプショ
ンを指定する。しかしながら、この発明を理解するには
上記の命令のフォーマットで充分である。
ある。当然ながら、図2は、コンピュータシステム10
におけるすべてのCPUを代表する。CPU12には、
命令レジスタ20、命令解読実行ロジック22、フォー
ルト・ハンドラー・ポインタ24、プログラムカウンタ
26、ソフトウェアベースのIA−32インターセプト
・ロックフォールト・ハンドラー28、省略時制御レジ
スタ(DCR)30、変換索引バッファ(TLB)3
6、L1およびL2キャッシュメモリ40を備える。図
2は概略図であり、この発明を実現するCPUがこれよ
りも著しく複雑であることは当業者には明らかであろ
う。しかしながら、図2は、この発明の新規な側面を説
明するのには充分である。
んどのコンピュータシステムは、実際に存在する物理メ
モリより多くのメモリがあるようシミュレートする仮想
メモリと呼ばれる技術を用いる。メインメモリアドレス
に対する仮想アドレスのマッピングは、仮想アドレス変
換として知られるプロセスである。仮想アドレスおよび
物理アドレス空間は、典型的にはページと呼ばれる等サ
イズのメモリブロックに分割され、ページテーブルが、
仮想アドレスおよび物理アドレスの間の変換を行う。そ
れぞれのページテーブルのエントリは、典型的には物理
アドレスと、ページに関する保護および状態情報とを含
む。保護および状態情報は、典型的にはページが受けた
アクセスの種類についての情報およびページ保護情報を
含む。例えば、ダーティビットは、そのページのデータ
に対して変更が加えられていることを示す。通常、ペー
ジテーブルは大きいのでメモリに記憶される。従って、
それぞれの規則的なメモリアクセスは、少なくとも2つ
のアクセスを実際には要求することができ、1つは変換
を得るためのものであり、2つめは物理メモリ位置にア
クセスするためのものである。
のコンピュータシステムは、変換索引バッファ(TL
B)を使用する。TLBは、典型的には小容量で高速の
連想メモリであり、CPU上またはCPUの近傍に通常
は位置し、最近使用された仮想および物理アドレスの対
を記憶する。TLBは、ページテーブルにおける変換の
サブセットを含み、より高速にアクセスされることがで
きる。処理装置は、メインメモリから情報を必要とする
とき、仮想アドレスをTLBに送る。TLBは、仮想ア
ドレスのページ番号を受け取り、物理ページ番号を返
す。物理ページ番号は、メインメモリにおける所望のバ
イトまたはワードをアクセスするため、下位のアドレス
情報と組み合わされる。その仮想アドレスの変換がTL
Bに無いならば、ページテーブルから抽出される。ペー
ジテーブルにその変換が無いならば、ページフォールト
が生成される。
エントリにより表わされるページに対して読み出しおよ
び書き込みを行うFETCHADD命令を、エクスポー
ト可能であるか否かを決めるメモリアクセスビットを含
む。例えば、TLBエントリ38は、メモリアクセスビ
ットフィールド44を含む。上述したように、TLBは
通常、ページテーブルに含まれる仮想−物理マッピング
のサブセットを含んでいる。従って、この発明で使用す
るのに適合したページテーブルも、メモリアクセスビッ
トのコピーを含む。
ことができる仮想アドレッシングメモリ属性のコード化
を示す。
わかりやすく説明するため簡略化されたものであること
に注意されたい。他の実施形態においては、追加の機能
性をメモリアクセスビットにコード化するのが望ましい
こともある。
かを説明するため、CPU12、またはCPU12が作
動するコンピュータシステムのいずれも、エクスポート
可能のFETCHADD命令をサポートしていない場合
を想定する。そのようなコンピュータシステムにおいて
は、原子性は、キャッシュ・コヒーレンシーのアルゴリ
ズムによって提供される。セマフォを含むメモリ位置に
ついて仮想−物理マッピングが確立されると、ページテ
ーブルにおけるメモリアクセスビット、およびセマフォ
が記憶されたページに対応するTLBエントリが、WB
のメモリ方式に指定され、従ってメモリアクセスビット
が「00」に設定される。
スタ20にロードされると、命令解読実行ロジック22
は、FETCHADD命令により指定されたメモリ位置
に対応するTLBエントリに記憶されたメモリアクセス
ビットを調べる。メモリアクセスビットは、ライトバッ
ク方式を用いてキャッシュされたメモリページにセマフ
ォが記憶されることを示すので、セマフォを含むキャッ
シュラインがL1およびL2キャッシュ40にロードさ
れ、専有として保持される。その後、命令解読実行ロジ
ック22は、セマフォをL1キャッシュから抽出し、そ
のセマフォを、FETCHADD命令中に指定されたレ
ジスタファイル42のレジスタにロードし、セマフォを
インクリメントし、インクリメントされたセマフォをL
1キャッシュに記憶し直す。セマフォが他のCPUによ
り要求されるとき、CPU12は、セマフォを含むキャ
ッシュラインの専有使用を放棄し、他のCPUがそのキ
ャッシュラインの専有使用を獲得する。これにより、あ
る量のキャッシュラインのスラッシングとなるけれど
も、パフォーマンスは、ローエンドからミドルレンジの
コンピュータシステムにおいては充分過ぎると言える。
動するコンピュータシステムの両方が、エクスポート可
能なFETCHADD命令をサポートする場合を想定す
る。そのようなコンピュータシステムにおいては、FE
TCHADD命令の原子性は、FETCHADD命令を
メモリコントローラ(または、その他の中央ロケーショ
ン)にエクスポートすることによるか、またはキャッシ
ュ・コヒーレンシー機構によるかのいずれかによって提
供することができる。仮想−物理マッピングが、セマフ
ォを含むメモリ位置について確立されるとき、ページテ
ーブルのメモリアクセスビット、およびセマフォが記憶
されているページに対応するTLBエントリが、UCE
メモリ方式に指定され、従ってメモリアクセスビットは
「10」に設定される。
スタ20にロードされるとき、命令解読実行ロジック2
2は、FETCHADD命令により指定されたメモリ位
置に対応するTLBエントリに記憶されたメモリアクセ
スビットを調べる。メモリアクセスビットは、セマフォ
が、キャッシュ不可でエクスポート可能なメモリページ
に記憶されていることを示す。従って、命令解読実行ロ
ジック22は、FETCHADD命令を図1のメモリコ
ントローラ16にエクスポートする。コントローラ16
は、図1のメインメモリ18からセマフォを読み出し、
そのセマフォを命令解読実行ロジック22に提供し、命
令解読実行ロジック22は、FETCHADD命令中に
指定されたレジスタファイル42のレジスタにセマフォ
を記憶する。メモリコントローラ16は、セマフォをイ
ンクリメントし、結果をメインメモリ18に記憶しなお
す。セマフォがキャッシュラインに専有として保持され
ることが無いので、他のCPUは、セマフォを含むキャ
ッシュラインの専有使用を得る必要なく、即座にセマフ
ォにアクセスすることができる。従って、キャッシュラ
インのスラッシングが除去される。メモリコントローラ
16が、FETCHADD命令によりアクセスされるセ
マフォのキャッシュを保持するのが好ましく、これによ
り、メモリコントローラ16は、メインメモリ18にア
クセスする必要がなくなってより速い応答が可能となる
点に注意されたい。
シュ・コヒーレンシー機構により提供されるのか、また
はFETCHADD命令をメモリコントローラ16のよ
うな中央ロケーションへとエクスポートすることにより
提供されるのかを「既製品でシュリンクラップの」ソフ
トウェアが「知らない」場合でも、該ソフトウェアを、
FETCHADD命令によりアクセスされるセマフォで
コード化することのできるアーキテクチャ・フレームワ
ークを提供する。従って、このようなソフトウェアは、
それぞれの方法について個々のコードセグメントを必要
とするソフトウェアなしで、コンピュータハードウェア
上で利用可能な原子性更新処理を提供するもっとも高速
な方法をアクセスすることができる。
ETCADD命令のエクスポートをサポートするのに、
非常に狭い範囲のメモリ位置を選択的にイネーブル(使
用可能)にできるということである。従って、オペレー
ティングシステムは、メモリの小さな部分を、キャッシ
ュ不可でエクスポート可能なよう構成することができ、
アプリケーションプログラムが、オペレーティングシス
テムからセマフォ用のメモリ空間を要求するとき、オペ
レーティングシステムは、そのような空間を、キャッシ
ュ不可でエクスポート可能なよう構成された領域に割り
振ることができる。また、この発明は、オペレーティン
グシステムが、I/O装置にマッピングされたメモリ位
置のような、エクスポート可能なFETCHADD命令
をサポートしないメモリ範囲に対するFETCHADD
命令のエクスポートを防ぐことができるようにする。
機構またはFETCHADD命令のエクスポートのいず
れかを選択することにより原子性を提供する、64ビッ
トのFETCHADD命令およびそれをサポートするア
ーキテクチャ・フレームワークを提供するけれども、こ
の発明は、バスロックのプレフィクスを介して原子性を
提供するIA−32命令をもサポートする。IA−32
命令セットの詳細は、「Intel 命令セットリファレン
ス」に見つけることができ、ここで参照により取り入れ
る。
Kプレフィクスは、メモリオペランドにアクセスする形
の命令に限り、それらの命令の前に付けることが出来
る。すなわち、ADD、ADC、AND、BTC、BT
R、BTS、CMPXCHG、DEC、INC、NE
G、NOT、OR、SBB、SUB、XOR、XAD
D、XCHG命令につけることができる。
(DCR)30は、IA−32ロックチェック・イネー
ブルビット(LC)32を含む。LCビット32が
「1」に設定され、IA−32の原子的メモリ参照が、
外部バスロック下でプロセッサの外部の「読み出し−変
更−書き込み」処理を要求する(例えば、命令がLOC
Kプレフィクスを含む)とき、IA−32インターセプ
ト・ロックフォールトが起こる。LCビット32が
「0」にクリアされ、IA−32原子的メモリ参照が、
外部バスロック下でプロセッサの外部の「読み出し−変
更−書き込み」処理を要求とするとき、プロセッサは、
IA−32インターセプト・ロックフォールトを生成す
るか(バスロックが、コンピュータシステムのハードウ
ェアによりサポートされていない場合)、または外部バ
スロックでトランザクションを実行することができる。
IA−32アーキテクチャにおいては、ライトバックの
キャッシュ方式を使用してキャッシュされないメモリに
対して行われる原子的メモリアクセスには、外部バスロ
ックが必要となる点に注意されたい。言い換えると、メ
モリがキャッシュ不可またはライトスルー方式でキャッ
シュされる場合には、IA−32アーキテクチャには外
部バスロックが必要となる。
数のプロセッサを持つコンピュータシステムのように、
バスをロックすることができないコンピュータシステム
においては、当然ながら、LOCKプレフィクスが前に
ついたIA−32命令は、IA−32インターセプト・
ロックフォールトにより取り扱われなければならない。
そのようなシステムでは、LCビット32の値は問題と
ならない。
きるコンピュータシステムを考えてみる。バスをロック
することが可能であるけれども、継続的にそうすること
によりパフォーマンスが著しく低下することがある。従
って、バスをロックしない命令を使ってLOCKプレフ
ィクスのついたIA−32命令をエミュレートするのが
望ましい。エミュレーションは、ハードウェアによって
直接実行する程速くはないが、LOCKプレフィクスの
ついたIA−32命令がエミュレートされる間に他のC
PUおよび装置がアクセスを続けることができるので、
システム全体のパフォーマンスを上げることができる。
このようなシステムにおいては、LOCKプレフィクス
のついたIA−32命令が、バスロックを使用してハー
ドウェアにより実行されるのか、またはバスロックを使
用せずにソフトウェアでエミュレートされるのかを、L
Cビット32の値が決定する。LOCKプレフィクスの
ついたIA−32命令をエミュレートするとき、当然な
がら、エミュレーションコードは、キャッシュ・コヒー
レンシー機構および/またはエクスポート可能なFET
CHADD命令を使用して原子性を確保することができ
る。
BTC、BTR、BTS、CMPXCHG、DEC、I
NC、NEG、NOT、OR、SBB、SUB、XO
R、XADDおよびXCHGの命令セットからのIA−
32命令が、LOCKプレフィクスが前につけられてお
り、メモリ位置をアクセスし、命令レジスタ20にロー
ドされると想定する。さらに、DCR30のLCビット
32が「1」に設定されていると想定する。このような
命令に応答して、命令解読実行ロジック22は、IA−
32インターセプト・ロックフォールトを生成する。ロ
ジック22は、フォールト・ハンドラー・ポインタ24
におけるIA−32インターセプト・ロックフォールト
エントリ34に記憶されたアドレスを、プログラムカウ
ンタ26にロードする。これにより、フォールト・ハン
ドラー28の最初の命令が命令レジスタ20にロードさ
れ、ソフトウェアベースのIA−32インターセプト・
ロックフォールト・ハンドラー28の最初の命令が実行
される。フォールト・ハンドラー28は、割り込みを引
き起こしたIA−32命令を調べ、原子的にその命令を
エミュレートするため適切なコードへと分岐する。IA
−32命令がエミュレートされ、適切な値がレジスタフ
ァイル42、L1およびL2キャッシュ40および図1
のメインメモリ18に記憶された後、フォールト・ハン
ドラー28は終了し、フォールトを引き起こした命令の
すぐ後の命令を続けて実行する。
ようなエクスポート可能なFETCHADD命令を含む
ことができる点に注意されたい。例えば、宛先メモリ位
置を「1」だけインクリメントするようコード化された
IA−32XADD命令を、「1」に設定されたインク
リメント値(INC)を持つFETCHADD命令によ
りエミュレートすることができる。FETCHADD命
令によりエミュレートすることのできない他の命令につ
いては、変更されるべきメモリ位置を含むキャッシュラ
インの専有使用を得る命令によりエミュレートすること
ができる。
およびソフトウェアベースのIA−32インターセプト
・ロックフォールト・ハンドラー28により、CPU1
2は、バスをロックすることなくLOCKプレフィクス
のついたIA−32命令を原子的に実行することができ
るようになる。従って、この発明により、64ビットの
アーキテクチャを持つコンピュータシステムは、64ビ
ットのアーキテクチャにより提供される優れたパフォー
マンスを維持しつつ、IA−32命令との2値互換性を
維持することができるようになる。
つ説明してきたけれども、当該技術分野の当業者には、
この発明の精神および範囲から離れること無く、形式お
よび詳細において変更を加えることができるということ
が明らかであろう。
フトウェアを明確にコード化することなく、ソフトウェ
アは、ハードウェアにより提供される最高のパフォーマ
ンスの原子的更新方法をアクセスできるようになる。
ンメモリを備えるコンピュータシステムの概略図。
ブロック図。
Claims (1)
- 【請求項1】メモリ属性フィールドをアクセスして、原
子的更新処理によりアクセスされるメモリ位置が、エク
スポート可能な命令をサポートしているかどうかを判断
するステップと、 前記原子的更新処理によりアクセスされるメモリ位置が
エクスポート可能な命令をサポートしているならば、該
原子的更新処理を中央ロケーションにエクスポートする
ステップと、 前記原子的更新処理によりアクセスされるメモリ位置が
エクスポート可能な命令をサポートしていないならば、
キャッシュ・コヒーレンシー機構を使用して原子的更新
処理を実行するステップと、 を含む原子的更新処理を実行する方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US170137 | 1980-07-18 | ||
US09/170,137 US6430657B1 (en) | 1998-10-12 | 1998-10-12 | Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000122916A true JP2000122916A (ja) | 2000-04-28 |
JP2000122916A5 JP2000122916A5 (ja) | 2006-11-16 |
JP4531890B2 JP4531890B2 (ja) | 2010-08-25 |
Family
ID=22618690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP28666099A Expired - Fee Related JP4531890B2 (ja) | 1998-10-12 | 1999-10-07 | 原子的更新処理を実行する方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6430657B1 (ja) |
JP (1) | JP4531890B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1309918A1 (en) * | 2000-08-15 | 2003-05-14 | SRC Computers Inc. | System and method for semaphore and atomic operation management in a multiprocessor |
US6804741B2 (en) * | 2002-01-16 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Coherent memory mapping tables for host I/O bridge |
JP2008522321A (ja) * | 2004-12-02 | 2008-06-26 | インテル・コーポレーション | 高性能な方法でcpu又は処理エレメントから物理メモリにアクセスするための方法及び装置 |
JP2010517144A (ja) * | 2007-01-23 | 2010-05-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | スピン・ロックによりロッキング公平性及びロッキング性能の両方を達成する方法及びシステム |
CN103064375A (zh) * | 2012-12-18 | 2013-04-24 | 国核电站运行服务技术有限公司 | 核级设备检测远程操控上位机的软件结构和控制方法 |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341338B1 (en) * | 1999-02-04 | 2002-01-22 | Sun Microsystems, Inc. | Protocol for coordinating the distribution of shared memory |
US6587964B1 (en) * | 2000-02-18 | 2003-07-01 | Hewlett-Packard Development Company, L.P. | Transparent software emulation as an alternative to hardware bus lock |
US6802057B1 (en) | 2000-05-03 | 2004-10-05 | Sun Microsystems, Inc. | Automatic generation of fortran 90 interfaces to fortran 77 code |
US6986130B1 (en) | 2000-07-28 | 2006-01-10 | Sun Microsystems, Inc. | Methods and apparatus for compiling computer programs using partial function inlining |
AU2003250575A1 (en) | 2002-08-07 | 2004-02-25 | Mmagix Technology Limited | Apparatus, method and system for a synchronicity independent, resource delegating, power and instruction optimizing processor |
US7146607B2 (en) * | 2002-09-17 | 2006-12-05 | International Business Machines Corporation | Method and system for transparent dynamic optimization in a multiprocessing environment |
US7953588B2 (en) * | 2002-09-17 | 2011-05-31 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host |
US7496494B2 (en) * | 2002-09-17 | 2009-02-24 | International Business Machines Corporation | Method and system for multiprocessor emulation on a multiprocessor host system |
US9043194B2 (en) * | 2002-09-17 | 2015-05-26 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor memory consistency |
US8108843B2 (en) | 2002-09-17 | 2012-01-31 | International Business Machines Corporation | Hybrid mechanism for more efficient emulation and method therefor |
US7103528B2 (en) * | 2002-09-19 | 2006-09-05 | Lsi Logic Corporation | Emulated atomic instruction sequences in a multiprocessor system |
US7130969B2 (en) * | 2002-12-19 | 2006-10-31 | Intel Corporation | Hierarchical directories for cache coherency in a multiprocessor system |
US7917646B2 (en) * | 2002-12-19 | 2011-03-29 | Intel Corporation | Speculative distributed conflict resolution for a cache coherency protocol |
US8751753B1 (en) | 2003-04-09 | 2014-06-10 | Guillermo J. Rozas | Coherence de-coupling buffer |
US7636815B1 (en) * | 2003-04-09 | 2009-12-22 | Klaiber Alexander C | System and method for handling direct memory accesses |
US20040263386A1 (en) * | 2003-06-26 | 2004-12-30 | King Thomas M. | Satellite positioning system receivers and methods |
US20050071606A1 (en) * | 2003-09-30 | 2005-03-31 | Roman Talyansky | Device, system and method of allocating spill cells in binary instrumentation using one free register |
US7822929B2 (en) | 2004-04-27 | 2010-10-26 | Intel Corporation | Two-hop cache coherency protocol |
US20050240734A1 (en) * | 2004-04-27 | 2005-10-27 | Batson Brannon J | Cache coherence protocol |
US20050262250A1 (en) * | 2004-04-27 | 2005-11-24 | Batson Brannon J | Messaging protocol |
US7971002B1 (en) * | 2005-04-07 | 2011-06-28 | Guillermo Rozas | Maintaining instruction coherency in a translation-based computer system architecture |
US7814292B2 (en) * | 2005-06-14 | 2010-10-12 | Intel Corporation | Memory attribute speculation |
US7676796B2 (en) * | 2005-09-29 | 2010-03-09 | Intel Corporation | Device, system and method for maintaining a pre-defined number of free registers within an instrumented program |
US7991965B2 (en) * | 2006-02-07 | 2011-08-02 | Intel Corporation | Technique for using memory attributes |
US9032100B2 (en) * | 2008-04-03 | 2015-05-12 | International Business Machines Corporation | I/O hub-supported atomic I/O operations |
US8275598B2 (en) * | 2009-03-02 | 2012-09-25 | International Business Machines Corporation | Software table walk during test verification of a simulated densely threaded network on a chip |
US9122476B2 (en) | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
US8793471B2 (en) | 2010-12-07 | 2014-07-29 | Advanced Micro Devices, Inc. | Atomic program verification |
US8788794B2 (en) | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Programmable atomic memory using stored atomic procedures |
US9058282B2 (en) | 2012-12-31 | 2015-06-16 | Intel Corporation | Dynamic cache write policy |
US10078613B1 (en) * | 2014-03-05 | 2018-09-18 | Mellanox Technologies, Ltd. | Computing in parallel processing environments |
US9558115B2 (en) * | 2014-04-22 | 2017-01-31 | Netapp, Inc. | Write-back caching-based atomicity in a distributed storage system |
US11775443B2 (en) | 2014-10-23 | 2023-10-03 | Hewlett Packard Enterprise Development Lp | Supervisory memory management unit |
FR3048526B1 (fr) * | 2016-03-07 | 2023-01-06 | Kalray | Instruction atomique de portee limitee a un niveau de cache intermediaire |
US10402218B2 (en) | 2016-08-30 | 2019-09-03 | Intel Corporation | Detecting bus locking conditions and avoiding bus locks |
US10394653B1 (en) | 2017-05-02 | 2019-08-27 | Mellanox Technologies, Ltd. | Computing in parallel processing environments |
US10528519B2 (en) | 2017-05-02 | 2020-01-07 | Mellanox Technologies Ltd. | Computing in parallel processing environments |
US10394747B1 (en) | 2017-05-31 | 2019-08-27 | Mellanox Technologies Ltd. | Implementing hierarchical PCI express switch topology over coherent mesh interconnect |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04340144A (ja) * | 1991-05-17 | 1992-11-26 | Nec Corp | バスロック制御装置 |
JPH07271668A (ja) * | 1994-03-24 | 1995-10-20 | Hewlett Packard Co <Hp> | 入出力アドレス変換機構用の計算システム |
JPH10143379A (ja) * | 1996-10-31 | 1998-05-29 | Internatl Business Mach Corp <Ibm> | 複数オペレーティング・システムによるスレッド同期化方法及びシステム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US5535365A (en) * | 1993-10-22 | 1996-07-09 | Cray Research, Inc. | Method and apparatus for locking shared memory locations in multiprocessing systems |
US5574922A (en) * | 1994-06-17 | 1996-11-12 | Apple Computer, Inc. | Processor with sequences of processor instructions for locked memory updates |
US5761731A (en) * | 1995-01-13 | 1998-06-02 | Digital Equipment Corporation | Method and apparatus for performing atomic transactions in a shared memory multi processor system |
US5895495A (en) * | 1997-03-13 | 1999-04-20 | International Business Machines Corporation | Demand-based larx-reserve protocol for SMP system buses |
-
1998
- 1998-10-12 US US09/170,137 patent/US6430657B1/en not_active Expired - Lifetime
-
1999
- 1999-10-07 JP JP28666099A patent/JP4531890B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04340144A (ja) * | 1991-05-17 | 1992-11-26 | Nec Corp | バスロック制御装置 |
JPH07271668A (ja) * | 1994-03-24 | 1995-10-20 | Hewlett Packard Co <Hp> | 入出力アドレス変換機構用の計算システム |
JPH10143379A (ja) * | 1996-10-31 | 1998-05-29 | Internatl Business Mach Corp <Ibm> | 複数オペレーティング・システムによるスレッド同期化方法及びシステム |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1309918A1 (en) * | 2000-08-15 | 2003-05-14 | SRC Computers Inc. | System and method for semaphore and atomic operation management in a multiprocessor |
EP1309918A4 (en) * | 2000-08-15 | 2008-12-03 | Src Computers Inc | SYSTEM AND METHOD FOR MANAGING SEMAPHORES AND ATOMIC OPERATIONS IN A MULTIPROCESSOR |
US6804741B2 (en) * | 2002-01-16 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Coherent memory mapping tables for host I/O bridge |
JP2008522321A (ja) * | 2004-12-02 | 2008-06-26 | インテル・コーポレーション | 高性能な方法でcpu又は処理エレメントから物理メモリにアクセスするための方法及び装置 |
US9280473B2 (en) | 2004-12-02 | 2016-03-08 | Intel Corporation | Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner |
US9710385B2 (en) | 2004-12-02 | 2017-07-18 | Intel Corporation | Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner |
US10282300B2 (en) | 2004-12-02 | 2019-05-07 | Intel Corporation | Accessing physical memory from a CPU or processing element in a high performance manner |
JP2010517144A (ja) * | 2007-01-23 | 2010-05-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | スピン・ロックによりロッキング公平性及びロッキング性能の両方を達成する方法及びシステム |
CN103064375A (zh) * | 2012-12-18 | 2013-04-24 | 国核电站运行服务技术有限公司 | 核级设备检测远程操控上位机的软件结构和控制方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4531890B2 (ja) | 2010-08-25 |
US6430657B1 (en) | 2002-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4531890B2 (ja) | 原子的更新処理を実行する方法 | |
US10365930B2 (en) | Instructions for managing a parallel cache hierarchy | |
US9064330B2 (en) | Shared virtual memory between a host and discrete graphics device in a computing system | |
US5715428A (en) | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system | |
US6006299A (en) | Apparatus and method for caching lock conditions in a multi-processor system | |
US5809530A (en) | Method and apparatus for processing multiple cache misses using reload folding and store merging | |
US6434639B1 (en) | System for combining requests associated with one or more memory locations that are collectively associated with a single cache line to furnish a single memory operation | |
JP3285644B2 (ja) | キャッシュメモリを有するデータプロセッサ | |
US7389402B2 (en) | Microprocessor including a configurable translation lookaside buffer | |
US5751995A (en) | Apparatus and method of maintaining processor ordering in a multiprocessor system which includes one or more processors that execute instructions speculatively | |
US20040103251A1 (en) | Microprocessor including a first level cache and a second level cache having different cache line sizes | |
US20060155935A1 (en) | System and method for maintaining cache coherency in a shared memory system | |
US7475190B2 (en) | Direct access of cache lock set data without backing memory | |
EP0817061A2 (en) | Method for increasing the data storage rate of a computer system | |
WO2008005687A2 (en) | Global overflow method for virtualized transactional memory | |
JPH07271668A (ja) | 入出力アドレス変換機構用の計算システム | |
KR20040045035A (ko) | 힌트 버퍼를 이용한 메모리 액세스 대기시간 숨김 | |
JPS60221851A (ja) | メモリ・アクセス・コントローラを具えるデータ処理装置 | |
US6321307B1 (en) | Computer system and method employing speculative snooping for optimizing performance | |
US6094711A (en) | Apparatus and method for reducing data bus pin count of an interface while substantially maintaining performance | |
US7310712B1 (en) | Virtual copy system and method | |
GB2200481A (en) | Maintaining coherence between a microprocessor's integrated cache and external memory | |
US20040111584A1 (en) | Dynamic software accessibility to a microprocessor system with a high speed memory cloner | |
US10754791B2 (en) | Software translation prefetch instructions | |
JP4565786B2 (ja) | ロックの開始と終了を要求するためのバスコマンドコードポイントの使用の最小化 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061003 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061003 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091117 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100113 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100118 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100414 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100512 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100610 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4531890 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130618 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |