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
Application number
JP11286660A
Other languages
English (en)
Other versions
JP2000122916A5 (ja
JP4531890B2 (ja
Inventor
Mittall Millard
ミラード・ミッタル
J Wittiker Martin
マーティン・ジェイ・ウイッテカー
N Hammond Garry
ガリー・エヌ・ハモンド
C Hack Jerome
ジェローム・シー・ハック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMERGING ARCHITECTURES LLC
Original Assignee
EMERGING ARCHITECTURES LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by EMERGING ARCHITECTURES LLC filed Critical EMERGING ARCHITECTURES LLC
Publication of JP2000122916A publication Critical patent/JP2000122916A/ja
Publication of JP2000122916A5 publication Critical patent/JP2000122916A5/ja
Application granted granted Critical
Publication of JP4531890B2 publication Critical patent/JP4531890B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address 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

(57)【要約】 【課題】ソフトウェアが、ハードウェアにより提供され
る最高のパフォーマンスの原子的更新方法にアクセスで
きるようにする。 【解決手段】エクスポート可能な64ビットのFETCHADD
命令を定義する。それぞれの仮想メモリページは、ライ
トバック方式を使用するキャッシュ可(WB)、キャッシュ
不可(UC)、キュッシュ不可でエクスポート可(UCE)のい
ずれかのメモリ属性を持つ。FETCHADD命令が実行され、
WBに設定された属性のページにあるメモリ位置がアクセ
スされると、CPUはそのメモリ位置を含むキャッシュ
ラインの排他的使用を得ることによりFECHADDを原子的
に実行する。UCEに設定された属性のページのメモリ位
置がアクセスされると、メモリコントローラのような中
央ロケーションにFETCHADD命令をエクスポートすること
により、CPUはFETCHADDを原子的に実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムにおけるメモリアクセス操作に関する。より具体的
には、本発明は、典型的にはセマフォにアクセスするの
に使用される原子的メモリ更新処理に関する。
【0002】
【従来の技術】コンピュータシステムにおいては、2つ
以上のプロセスが同じリソースに対して競合することが
よくある。例えば、2つ以上のプロセスが、特定のコマ
ンドシーケンスをビデオコントローラに書き込もうとす
ることがある。これらのプロセスは、1つの中央処理装
置(CPU)により実行されることもあれば、マルチプ
ロセッサコンピュータシステムの2つ以上のCPUによ
り実行されることもある。ここでは、「CPU」及び
「プロセッサ」という用語を、互いに取り替え可能に使
用する。
【0003】複数のプロセスが、同時に1つのリソース
をアクセスすることができないので、コンピュータのオ
ペレーティングシステムは、リソースへのアクセスをス
ケジュールするなんらかの機構を提供しなければならな
い。当該技術分野で知られている一般的な機構の1つと
して、「番号取得(take-a-number)」スケジューリン
グ・アルゴリズムがある。このアルゴリズムは、1人の
店員の手があくのを待っている顧客の集団に多少似てい
る。顧客は店に入るときに番号を受け取る。店員がその
番号を呼ぶと、その顧客は店員のサービスを受けること
ができる。
【0004】これに類似したものとして、「番号」をプ
ロセスに提供する機構は、当該技術分野ではセマフォと
して知られている。典型的には、セマフォはメモリ位置
に記憶される。セマフォをアクセスしようとするプロセ
スは、最初にメモリ位置を読み出し、このメモリ位置か
ら読み出した値をインクリメントし、結果をそのメモリ
位置に記憶し戻す。メモリ位置から読み出された値は、
そのプロセスの「番号」の役割を果たし、メモリ位置に
記憶し戻された結果は、そのリソースをアクセスしよう
とする次のプロセスの次の「番号」の役割を果たす。特
定の「番号」の保持者がリソースにアクセスしてもよい
ことをオペレーティングシステムが示すとき、その「番
号」を持つプロセスがアクセスを行う。
【0005】「番号取得」スケジューリングアルゴリズ
ムが正確に作動するには、メモリ読み出し、インクリメ
ントおよびメモリ書き込み処理が、「原子的」に発生し
なければならない。言い換えると、第1のプロセスがメ
モリ位置を読み出した時点から、第1のプロセスがイン
クリメントした値をメモリ位置に記憶し戻す時点までの
間は、セマフォを保持するメモリ位置を第2のプロセス
が読み出す機会があってはならないということである。
もし第2のプロセスによるそのような読み出し処理が発
生すると、第1および第2のプロセスはそれぞれ同じ
「番号」を持つことになり、リソースへのアクセスを同
時に試みようとすることがある。
【0006】セマフォ操作が原子的に発生するのを確実
にすることは、バスに連結される他の装置が直接記憶ア
クセス(DMA)処理を行わない単一CPUのコンピュ
ータシステムにおいては比較的簡単なことである。例え
ば、32ビットのIntel(商標)のアーキテクチャ(I
A−32)は、Intel i486TM 、Pentium(商標)、Pent
ium Pro、Pentium IIおよびCeleronTM のCPUにより
使用され、「XADD(exchange and add;交換および
加算) 」命令を含んでいる。この命令を使ってセマフォ
を含むメモリ位置をアクセスするとき、XADD命令は
通常以下のように用いられる。 XADD 宛先メモリ位置,ソースレジスタ
【0007】この命令は、宛先メモリ位置およびソース
レジスタに含まれる値の合計を一時レジスタに記憶し、
宛先メモリ位置の内容をソースレジスタに記憶し、一時
レジスタの内容を宛先メモリ位置に記憶する。従って、
命令が実行されるときに値「1」がソースレジスタに記
憶されていると、命令が完了した時に宛先メモリ位置の
値は「1」だけインクリメントし、宛先メモリ位置にも
ともとあった値はソースレジスタに記憶される。命令が
完了するまでは割込みが処理されることは無く、またこ
の例のコンピュータシステムが単一CPU(他の装置
は、DMA処理を行わない)であるので、XADD命令
によって実行される「読み出し−変更−書き込み(read
-modify-write;リードモディファイライト)」処理の
間は、他のプロセスはセマフォにアクセスすることがで
きない。したがって、セマフォ処理は原子的に発生す
る。IA−32のXCHG(exchange;交換)命令及び
CMPXCHG(compareおよびexchange;比較および
交換)命令もまた、セマフォへの原子的アクセスを確実
にするのに広く用いられている。
【0008】マルチプロセッサコンピュータシステムお
よびDMA処理を実行するデバイスを備えるシステムに
おいては、第1のCPUがインクリメントしてセマフォ
をメモリ位置にと書き戻す前に、第2のCPUまたはデ
バイスがセマフォにアクセスしようとすることがあるの
で、原子性を保証するのがより複雑になる。このような
コンピュータシステムでは、バスのロック機構またはキ
ャッシュのコヒーレンシー機構のいずれかを使用するこ
とにより原子性が提供される。これらの機構を詳細を述
べる前に、CPUのキャッシュメモリの処理を最初に考
えるのが有用である。
【0009】キャッシュメモリは、メインメモリの内容
のサブセットを保持する比較的小容量で高速のメモリで
ある。例えば、Pentium(商標) IIのCPUをベースと
したコンピュータシステムは、レベル1(L1)のキャ
ッシュをCPUと同じ集積回路(IC)上に有してお
り、レベル2(L2)のキャッシュをCPUと同じモジ
ュールではあるが異なるIC上に有している。L1キャ
ッシュはL2キャッシュより小さく、より高速である。
メインメモリの内容は、キャッシュラインと呼ばれる単
位でキャッシュメモリに記憶される。Pentium IIのCP
Uでは、L1およびL2キャッシュのキャッシュライン
の大きさが32バイトである。
【0010】Intel(商標)i486TMのCPUは、「ライ
トスルー(write-through)」のL1キャッシュを採用
する。このようなキャッシュにおいては、CPUからの
メモリ書き込みが、キャッシュおよびメインメモリに同
時に書込まれる。Intel PentiumのCPU以降、Intelの
プロセッサは、「ライトバック(write-back)」のキャ
ッシュをサポートしている。ライトバックキャッシュに
おいては、CPUからのメモリ書き込みがキャッシュに
のみ書込まれる。その後、キャッシュ機構が、そのメモ
リ書き込みが実際にメインメモリにコミットされたかど
うか(および、いつコミットされたか)を判断する。こ
れにより、メインメモリがビジーでなくなるまでメイン
メモリへの書き込みを遅らせることができるので、性能
(パフォーマン)が上がる。さらに、メモリオペランド
をメインメモリに書き戻す前に、メモリオペランドが何
回か変わることがある。また、メモリにキャッシュライ
ンを書き戻す前に、キャッシュラインの変更を完全に組
み立てる機会がキャッシュに与えられるが、これは当該
技術分野ではコウレシング(coalescing;併合)として
知られている。
【0011】キャッシュ・コヒーレンシー機構は、CP
Uキャッシュおよびメインメモリに記憶されたメモリ内
容が確実にコヒーレンス(一貫性)に保たれるようにす
る。例えば、第1のCPUのキャッシュが、メインメモ
リにまだ書き戻されていない、変更された(即ち「ダー
ティな(dirty)」)内容を持つキャッシュラインを含ん
でおり、第2のCPUが、メインメモリから対応するメ
モリ位置を読み出そうと試みる場合、キャッシュ・コヒ
ーレンシー機構は、メインメモリに現在記憶された正し
くない内容ではなく、第1のCPUのキャッシュからの
正しい内容が、確実に第2のCPUに提供されるように
する。キャッシュ・コヒーレンシー機構は、これを幾つ
かの方法で実現することができる。1つの手法は、単純
に第1のCPUのキャッシュに対し、変更されたキャッ
シュラインをメインメモリに強制的に書き戻させること
である。他の手法は、第2のCPUのキャッシュが、第
1のCPUのキャッシュに対する変更を「スヌープ(sn
oop;監視する)」できるようにすることにより、第1の
CPUのキャッシュで行われた変更で、第2のCPUの
キャッシュを継続的に更新できるようにする。
【0012】さらに、CPUは、キャッシュラインが
「共用(shared)」または「専有(exclusive)」とし
てロードされるよう要求することができる。共用キャッ
シュラインはCPUにより変更することができず、従っ
てキャッシュラインの内容が変更されないことがわかっ
ているような状況(例えば、プログラムコード)で有利
に使用される。専有(または、代わりに「専用(privat
e)」とも言う)キャッシュラインは、CPUにより変
更することができる。典型的には、「ダーティビット
(dirty-bit)」が、専有キャッシュラインに関連して
おり、内容が変更されたかどうかを示す。ダーティビッ
トが設定され、キャッシュラインが変更されたことを示
すならば、キャッシュラインをメインメモリに書き戻さ
なくてはならない。ダーティビットがクリアされ、キャ
ッシュラインが変更されていないことを示すならば、メ
インメモリに書き戻されたものとしてキャッシュライン
を廃棄することができる。通常、いずれの時点において
も、1のみのCPUが特定のキャッシュラインを専有と
して保持することができる。
【0013】原子性の話に戻ると、初期のIA−32の
CPUは、キャッシュ不可のメモリまたはライトスルー
方法を使ってキャッシュされたメモリにセマフォを記憶
することにより、そしてセマフォにアクセスするときに
「バスロック(bus lock)」を発行することにより、原
子性を提供する。バスロックは、セマフォ処理によって
必要とされる「読み出し−変更−書き込み」トランザク
ションの間、1つのCPUが確実にバスの排他的所有権
を持つようにする。この方法では、他のCUPがセマフ
ォを含むメモリ領域にアクセスする必要がないとして
も、「読み出し−変更−書き込み」トランザクションが
完了するまでの間は、すべての他のCPUが、バスにア
クセスすることからブロックされるので、パフォーマン
スにかなり重い負担をかける。様々な相互接続構造を使
用するハイエンドのマルチプロセッサシステムにおいて
は、「バス」という概念が完全に消えてしまうことがあ
り、したがって「バスロック」という概念も完全に消え
てしまうことがあるということに注意されたい。例え
ば、4つのプロセッサから成るポッド(pod)を持ち、
1つのポッドにおけるそれぞれのプロセッサが従来のバ
スを介して結合され、ポッドのそれぞれがリング・トポ
ロジーで相互接続されているマルチプロセッサシステム
においては、1つのポッドにおけるCPUが、他のポッ
ドにおけるバスをロックすることが通常できない。
【0014】後のIA−32CPUは、キャッシュ・コ
ヒーレンシー機構を介して原子性を提供する。CPUが
セマフォをアクセスするとき、CPUのL1キャッシュ
が、セマフォを保持するメモリ位置を含むキャッシュラ
インの専有使用を要求する。従って、トランザクション
中に他のCPUがセマフォにアクセスできる可能性無し
に、CPUは、セマフォ処理により必要とされる「読み
出し−変更−書き込み」トランザクションを実行するこ
とができる。従って、他のCPUは引き続きバスにアク
セスすることができるので、引き続きメモリにアクセス
することができる。他のCPUに対してアクセス可能で
ないメインメモリ領域だけが、セマフォ処理を実行する
CPUのキャッシュに専有として保持されるキャッシュ
ラインであるので、本質的に、「キャッシュ内(in-cac
he)」の原子的更新が、「アドレスロック(address lo
ck)」を介して実行される。そのキャッシュライン全体
が専有として保持されるので、1つのキャッシュライン
に複数のセマフォを記憶しない方が望ましい場合が多い
ということに注意されたい。
【0015】このキャッシュ・コヒーレンシーを介した
原子性の提供は、バスロックを介してキャッシュ・コヒ
ーレンスを提供するよりもかなり良いパフォーマンスを
提供するが、「セマフォのキャッシュラインのスラッシ
ング」によってパフォーマンスがなお制限されることが
ある。セマフォのキャッシュラインのスラッシングは、
2つ以上のCPUが同じリソース、よって同じセマフォ
について継続的に競合する時に発生する。したがって、
それぞれのCPUがセマフォを含むキャッシュラインの
排他制御を得ようと継続的に試み、そのキャッシュライ
ンが継続的にそれぞれのCPUのキャッシュにロードさ
れて書き込まれる。通常、CPUがセマフォを含むキャ
ッシュラインに対する専有アクセス権を得るために待っ
ている間は、そのCPUの処理は進行することができな
い。
【0016】従来技術において、大型マルチプロセッサ
システムの中には、FETCHADD(fetch and add
(フェッチおよび加算))命令を用いてこの問題に対処
してきたものがある。「FETCHADD」命令に関連
する「インクリメント」処理は、メモリコントローラの
ような中央ロケーションにエクスポートされる。したが
って、CPUが、メモリ位置に記憶されたセマフォを参
照するFETCHADD命令を実行するとき、メモリコ
ントローラは、メモリ位置に記憶されたセマフォ値をそ
のCPUに提供する。さらに、メモリコントローラはセ
マフォをインクリメントし、その結果をそのメモリ位置
に記憶し戻す。従って、CPUが、セマフォを含むメモ
リ位置に書き込む必要が無いので、CPUは、セマフォ
を含むキャッシュラインへの専有アクセスを獲得する必
要はなく、それによりセマフォのキャッシュラインのス
ラッシングが取り除かれる。加えて、複数のセマフォ
が、パフォーマンスを犠牲にすることなくキャッシュラ
インの境界内に存在することができるので、セマフォを
より効率的にメモリに記憶することが可能になる。
【0017】
【発明が解決しようとする課題】コンピュータ産業にお
いては、より高性能なハードウェアに向かって積極的な
動きが続いている。しかしながら、それとは相反するよ
うに、原子的セマフォ更新を提供するよう設計されたバ
スロック、キャッシュ・コヒーレンシー機構および命令
のエクスポートを介して原子性を提供するハードウェア
・アーキテクチャも含め、幅広い多様なハードウェア・
アーキテクチャ上で実行可能な、より低コストの「既製
品でシュリンクラップされた(off-the-shelf shrink-w
rapped)」オペレーティングシステム(およびその他の
ソフトウェア)に積極的に向かう傾向もある。しかし、
従来技術による原子性を提供する方法は、通常、どの方
法で原子性が提供されるのかをソフトウェアが「認識し
て」いることを当然としている。したがって、バスロッ
クを使用してセマフォにアクセスするよう設計されたソ
フトウェアは、原子的セマフォ更新を提供するよう設計
されたキャッシュ・コヒーレンシー機構、および命令エ
クスポートによって提供されるより高いセマフォのパフ
ォーマンスを使用することができない。同様に、キャッ
シュ・コヒーレンシー機構を使用してセマフォにアクセ
スするよう設計されたソフトウェアも、原子的セマフォ
更新を提供するよう設計された命令エクスポートにより
提供される、より高いセマフォのパフォーマンスを使用
することができない。当該技術分野において必要なの
は、特定の原子的更新方法を利用するようソフトウェア
を明確にコード化する必要なく、低コストの「既製品で
シュリンクラップされた」ソフトウェアが、それが実行
されるコンピュータシステムのハードウェアにより提供
される最高のパフォーマンスの原子的更新方法にアクセ
スできるようにするコンピュータアーキテクチャであ
る。
【0018】
【課題を解決するための手段】上記の課題を解決するた
め、この発明は、メモリ属性フィールドをアクセスし
て、原子的更新処理によりアクセスされるメモリ位置
が、エクスポート可能な命令をサポートしているかどう
かを判断するステップと、前記原子的更新処理によりア
クセスされるメモリ位置がエクスポート可能な命令をサ
ポートしているならば、該原子的更新処理を中央ロケー
ションにエクスポートするステップと、前記原子的更新
処理によりアクセスされるメモリ位置がエクスポート可
能な命令をサポートしていないならば、キャッシュ・コ
ヒーレンシー機構を使用して原子的更新処理を実行する
ステップとを含む原子的更新処理を実行する方法を提供
する。この発明は、バスロックを必要とするIA−32
命令が、原子性を提供する優れた方法を提供するコンピ
ュータハードウェア上で効率的に実行するような、64
ビットのアーキテクチャ・フレームワークを提供するも
のである。さらに、この発明は、「既製品でシュリンク
ラップ」のソフトウェアにコード化することのできるエ
クスポート可能な64ビットのFETCHADD(フェ
ッチおよび加算)命令を定義するアーキテクチャ・フレ
ームワークを提供し、命令をエクスポートすることによ
り、またはキャッシュ・コヒーレンシー機構を用いるこ
とにより、FETCHADD命令を実行する上でハード
ウェアが原子性を保証するプログラム可能な方法を提供
する。
【0019】IA−32命令セットにおいては、LOC
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ビットのアーキテクチャにより提供される優
れたパフォーマンスを保つことができるようにする。
【0020】さらに、この発明は、以下のフォーマット
を持つエクスポート可能なFETCHADD命令を定義
する。
【数1】FETCHADD R=[R],INC
【0021】この命令は、レジスタRでのインデック
スがついたメモリ位置を読み出し、そのメモリ位置から
読み出された内容をレジスタRに置き、そのメモリ位
置から読み出された内容にINC値を加算し、そしてそ
の和をそのメモリ位置に記憶しなおす。
【0022】それぞれの仮想メモリページに関連するの
は、「ライトバック方式を用いたキャッシュ可(W
B)」、「キャッシュ不可(UC)」または「キャッシ
ュ不可で、エクスポート可(UCE)」の状態をとるこ
とができるメモリ属性である。FETCHADD命令が
実行され、アクセスされたメモリ位置が、WBに設定さ
れた属性を持つページにあるとき、そのメモリ位置を含
むキャッシュラインの専有使用を得ることで、CPUに
よりFETCHADD命令が原子的に実行される。しか
しながら、FETCHADD命令が実行され、アクセス
されたメモリ位置が、UCEに設定された属性を持つペ
ージにあるときは、FETCHADD命令を、メモリコ
ントローラのような中央ロケーションにエクスポートす
ることにより、そのFETCHADD命令は原子的に実
行され、それによりセマフォのキャッシュラインのスラ
ッシングを除去することができる。
【0023】したがって、この発明は、原子性が、キャ
ッシュ・コヒーレンシー機構により提供されるのか、ま
たはFETCHADD命令をメモリコントローラのよう
な中央ロケーションにエクスポートすることにより提供
されるのかをソフトウェアが「認識しなく」ても、FE
TCHADD命令によりアクセスされるセマフォで、
「既製品でシュリンクラップの」ソフトウェアをコード
化することのできるアーキテクチャ・フレームワークを
提供する。したがって、そのようなソフトウェアは、そ
れぞれの方法に対して個々のコードセグメントを必要と
するソフトウェア無しで、コンピュータのハードウェア
上で利用可能な原子的更新処理を提供する最速の方法に
アクセスすることができる。
【0024】
【発明の実施の形態】この発明は、キャッシュ・コヒー
レンスを提供する優れた方法を提供するコンピュータハ
ードウェア上で、バスロックを必要とするIA−32命
令が効率的に実行する64ビットのアーキテクチャ・フ
レームワークを提供する。さらに、この発明は、「既製
品でシュリンクラップ」のソフトウェアにコード化する
ことのできるエクスポート可能な64ビットのFETC
HADD命令を定義するアーキテクチャと、命令をエク
スポートすることにより、またはキャッシュ・コヒーレ
ンシー機構を用いることにより、FETCHADD命令
を実行する上で原子性をハードウェアが保証することの
できるプログラム可能な方法を提供する。
【0025】図1はコンピュータシステム10の概略図
であり、この発明を説明するのに使用される。コンピュ
ータシステム10は、CPU12および14のようなN
個のCPUを備える。また、システム10は、メモリコ
ントローラ16およびメインメモリ18を備える。メモ
リコントローラ16は、エクスポート可能なFETCH
ADD命令の実行をサポートする。
【0026】以下にCPU12および14について説明
する前に、この発明に従って定義されるFETCHAD
D命令について最初に述べる。この命令は、以下のフォ
ーマットを持つ。
【数2】FETCHADD R=[R],INC
【0027】この命令は、レジスタRのインデックス
がついたメモリ位置を読み出し、そのメモリ位置から読
み出した内容をレジスタRに置く。さらに、この命令
は、値INCを、そのメモリ位置から読み出した内容に
加算し、その和をそのメモリ位置に記憶しなおす。上記
のFETCHADD命令の表現は簡略化したものであ
る。追加の命令「コンプリーターズ(completers)」
は、メモリから読み出されるべきオペランドのサイズ、
他の命令に対するその命令の順序づけセマンティクス
(ordering semantics)、およびFETCHADD命令
をCPUキャッシュにプリフェッチ(先読み)するとき
に使用されるプリフェッチヒントなどのようなオプショ
ンを指定する。しかしながら、この発明を理解するには
上記の命令のフォーマットで充分である。
【0028】図2は、図1のCPU12のブロック図で
ある。当然ながら、図2は、コンピュータシステム10
におけるすべてのCPUを代表する。CPU12には、
命令レジスタ20、命令解読実行ロジック22、フォー
ルト・ハンドラー・ポインタ24、プログラムカウンタ
26、ソフトウェアベースのIA−32インターセプト
・ロックフォールト・ハンドラー28、省略時制御レジ
スタ(DCR)30、変換索引バッファ(TLB)3
6、L1およびL2キャッシュメモリ40を備える。図
2は概略図であり、この発明を実現するCPUがこれよ
りも著しく複雑であることは当業者には明らかであろ
う。しかしながら、図2は、この発明の新規な側面を説
明するのには充分である。
【0029】当該技術分野で知られているように、ほと
んどのコンピュータシステムは、実際に存在する物理メ
モリより多くのメモリがあるようシミュレートする仮想
メモリと呼ばれる技術を用いる。メインメモリアドレス
に対する仮想アドレスのマッピングは、仮想アドレス変
換として知られるプロセスである。仮想アドレスおよび
物理アドレス空間は、典型的にはページと呼ばれる等サ
イズのメモリブロックに分割され、ページテーブルが、
仮想アドレスおよび物理アドレスの間の変換を行う。そ
れぞれのページテーブルのエントリは、典型的には物理
アドレスと、ページに関する保護および状態情報とを含
む。保護および状態情報は、典型的にはページが受けた
アクセスの種類についての情報およびページ保護情報を
含む。例えば、ダーティビットは、そのページのデータ
に対して変更が加えられていることを示す。通常、ペー
ジテーブルは大きいのでメモリに記憶される。従って、
それぞれの規則的なメモリアクセスは、少なくとも2つ
のアクセスを実際には要求することができ、1つは変換
を得るためのものであり、2つめは物理メモリ位置にア
クセスするためのものである。
【0030】仮想アドレス変換をサポートするほとんど
のコンピュータシステムは、変換索引バッファ(TL
B)を使用する。TLBは、典型的には小容量で高速の
連想メモリであり、CPU上またはCPUの近傍に通常
は位置し、最近使用された仮想および物理アドレスの対
を記憶する。TLBは、ページテーブルにおける変換の
サブセットを含み、より高速にアクセスされることがで
きる。処理装置は、メインメモリから情報を必要とする
とき、仮想アドレスをTLBに送る。TLBは、仮想ア
ドレスのページ番号を受け取り、物理ページ番号を返
す。物理ページ番号は、メインメモリにおける所望のバ
イトまたはワードをアクセスするため、下位のアドレス
情報と組み合わされる。その仮想アドレスの変換がTL
Bに無いならば、ページテーブルから抽出される。ペー
ジテーブルにその変換が無いならば、ページフォールト
が生成される。
【0031】この発明によると、TLB36は、TLB
エントリにより表わされるページに対して読み出しおよ
び書き込みを行うFETCHADD命令を、エクスポー
ト可能であるか否かを決めるメモリアクセスビットを含
む。例えば、TLBエントリ38は、メモリアクセスビ
ットフィールド44を含む。上述したように、TLBは
通常、ページテーブルに含まれる仮想−物理マッピング
のサブセットを含んでいる。従って、この発明で使用す
るのに適合したページテーブルも、メモリアクセスビッ
トのコピーを含む。
【0032】表1は、メモリアクセスビットにより表す
ことができる仮想アドレッシングメモリ属性のコード化
を示す。
【表1】
【0033】表1に示されるコードは、この発明をより
わかりやすく説明するため簡略化されたものであること
に注意されたい。他の実施形態においては、追加の機能
性をメモリアクセスビットにコード化するのが望ましい
こともある。
【0034】これらのコードがどのように使用されるの
かを説明するため、CPU12、またはCPU12が作
動するコンピュータシステムのいずれも、エクスポート
可能のFETCHADD命令をサポートしていない場合
を想定する。そのようなコンピュータシステムにおいて
は、原子性は、キャッシュ・コヒーレンシーのアルゴリ
ズムによって提供される。セマフォを含むメモリ位置に
ついて仮想−物理マッピングが確立されると、ページテ
ーブルにおけるメモリアクセスビット、およびセマフォ
が記憶されたページに対応するTLBエントリが、WB
のメモリ方式に指定され、従ってメモリアクセスビット
が「00」に設定される。
【0035】従って、FETCHADD命令が命令レジ
スタ20にロードされると、命令解読実行ロジック22
は、FETCHADD命令により指定されたメモリ位置
に対応するTLBエントリに記憶されたメモリアクセス
ビットを調べる。メモリアクセスビットは、ライトバッ
ク方式を用いてキャッシュされたメモリページにセマフ
ォが記憶されることを示すので、セマフォを含むキャッ
シュラインがL1およびL2キャッシュ40にロードさ
れ、専有として保持される。その後、命令解読実行ロジ
ック22は、セマフォをL1キャッシュから抽出し、そ
のセマフォを、FETCHADD命令中に指定されたレ
ジスタファイル42のレジスタにロードし、セマフォを
インクリメントし、インクリメントされたセマフォをL
1キャッシュに記憶し直す。セマフォが他のCPUによ
り要求されるとき、CPU12は、セマフォを含むキャ
ッシュラインの専有使用を放棄し、他のCPUがそのキ
ャッシュラインの専有使用を獲得する。これにより、あ
る量のキャッシュラインのスラッシングとなるけれど
も、パフォーマンスは、ローエンドからミドルレンジの
コンピュータシステムにおいては充分過ぎると言える。
【0036】次に、CPU12、およびCPU12が作
動するコンピュータシステムの両方が、エクスポート可
能なFETCHADD命令をサポートする場合を想定す
る。そのようなコンピュータシステムにおいては、FE
TCHADD命令の原子性は、FETCHADD命令を
メモリコントローラ(または、その他の中央ロケーショ
ン)にエクスポートすることによるか、またはキャッシ
ュ・コヒーレンシー機構によるかのいずれかによって提
供することができる。仮想−物理マッピングが、セマフ
ォを含むメモリ位置について確立されるとき、ページテ
ーブルのメモリアクセスビット、およびセマフォが記憶
されているページに対応するTLBエントリが、UCE
メモリ方式に指定され、従ってメモリアクセスビットは
「10」に設定される。
【0037】従って、FETCHADD命令が命令レジ
スタ20にロードされるとき、命令解読実行ロジック2
2は、FETCHADD命令により指定されたメモリ位
置に対応するTLBエントリに記憶されたメモリアクセ
スビットを調べる。メモリアクセスビットは、セマフォ
が、キャッシュ不可でエクスポート可能なメモリページ
に記憶されていることを示す。従って、命令解読実行ロ
ジック22は、FETCHADD命令を図1のメモリコ
ントローラ16にエクスポートする。コントローラ16
は、図1のメインメモリ18からセマフォを読み出し、
そのセマフォを命令解読実行ロジック22に提供し、命
令解読実行ロジック22は、FETCHADD命令中に
指定されたレジスタファイル42のレジスタにセマフォ
を記憶する。メモリコントローラ16は、セマフォをイ
ンクリメントし、結果をメインメモリ18に記憶しなお
す。セマフォがキャッシュラインに専有として保持され
ることが無いので、他のCPUは、セマフォを含むキャ
ッシュラインの専有使用を得る必要なく、即座にセマフ
ォにアクセスすることができる。従って、キャッシュラ
インのスラッシングが除去される。メモリコントローラ
16が、FETCHADD命令によりアクセスされるセ
マフォのキャッシュを保持するのが好ましく、これによ
り、メモリコントローラ16は、メインメモリ18にア
クセスする必要がなくなってより速い応答が可能となる
点に注意されたい。
【0038】要約すると、この発明は、原子性がキャッ
シュ・コヒーレンシー機構により提供されるのか、また
はFETCHADD命令をメモリコントローラ16のよ
うな中央ロケーションへとエクスポートすることにより
提供されるのかを「既製品でシュリンクラップの」ソフ
トウェアが「知らない」場合でも、該ソフトウェアを、
FETCHADD命令によりアクセスされるセマフォで
コード化することのできるアーキテクチャ・フレームワ
ークを提供する。従って、このようなソフトウェアは、
それぞれの方法について個々のコードセグメントを必要
とするソフトウェアなしで、コンピュータハードウェア
上で利用可能な原子性更新処理を提供するもっとも高速
な方法をアクセスすることができる。
【0039】この発明により提供される他の利点は、F
ETCADD命令のエクスポートをサポートするのに、
非常に狭い範囲のメモリ位置を選択的にイネーブル(使
用可能)にできるということである。従って、オペレー
ティングシステムは、メモリの小さな部分を、キャッシ
ュ不可でエクスポート可能なよう構成することができ、
アプリケーションプログラムが、オペレーティングシス
テムからセマフォ用のメモリ空間を要求するとき、オペ
レーティングシステムは、そのような空間を、キャッシ
ュ不可でエクスポート可能なよう構成された領域に割り
振ることができる。また、この発明は、オペレーティン
グシステムが、I/O装置にマッピングされたメモリ位
置のような、エクスポート可能なFETCHADD命令
をサポートしないメモリ範囲に対するFETCHADD
命令のエクスポートを防ぐことができるようにする。
【0040】この発明は、キャッシュ・コヒーレンシー
機構またはFETCHADD命令のエクスポートのいず
れかを選択することにより原子性を提供する、64ビッ
トのFETCHADD命令およびそれをサポートするア
ーキテクチャ・フレームワークを提供するけれども、こ
の発明は、バスロックのプレフィクスを介して原子性を
提供するIA−32命令をもサポートする。IA−32
命令セットの詳細は、「Intel 命令セットリファレン
ス」に見つけることができ、ここで参照により取り入れ
る。
【0041】IA−32の命令セットにおいて、LOC
Kプレフィクスは、メモリオペランドにアクセスする形
の命令に限り、それらの命令の前に付けることが出来
る。すなわち、ADD、ADC、AND、BTC、BT
R、BTS、CMPXCHG、DEC、INC、NE
G、NOT、OR、SBB、SUB、XOR、XAD
D、XCHG命令につけることができる。
【0042】図2を参照すると、省略時制御レジスタ
(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アーキテクチャには外
部バスロックが必要となる。
【0043】複数の相互接続トポロジーで接続された複
数のプロセッサを持つコンピュータシステムのように、
バスをロックすることができないコンピュータシステム
においては、当然ながら、LOCKプレフィクスが前に
ついたIA−32命令は、IA−32インターセプト・
ロックフォールトにより取り扱われなければならない。
そのようなシステムでは、LCビット32の値は問題と
ならない。
【0044】しかしながら、バスをロックすることがで
きるコンピュータシステムを考えてみる。バスをロック
することが可能であるけれども、継続的にそうすること
によりパフォーマンスが著しく低下することがある。従
って、バスをロックしない命令を使ってLOCKプレフ
ィクスのついたIA−32命令をエミュレートするのが
望ましい。エミュレーションは、ハードウェアによって
直接実行する程速くはないが、LOCKプレフィクスの
ついたIA−32命令がエミュレートされる間に他のC
PUおよび装置がアクセスを続けることができるので、
システム全体のパフォーマンスを上げることができる。
このようなシステムにおいては、LOCKプレフィクス
のついたIA−32命令が、バスロックを使用してハー
ドウェアにより実行されるのか、またはバスロックを使
用せずにソフトウェアでエミュレートされるのかを、L
Cビット32の値が決定する。LOCKプレフィクスの
ついたIA−32命令をエミュレートするとき、当然な
がら、エミュレーションコードは、キャッシュ・コヒー
レンシー機構および/またはエクスポート可能なFET
CHADD命令を使用して原子性を確保することができ
る。
【0045】図2に戻ると、ADD、ADC、AND、
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は終了し、フォールトを引き起こした命令の
すぐ後の命令を続けて実行する。
【0046】フォールト・ハンドラー28が、上述した
ようなエクスポート可能なFETCHADD命令を含む
ことができる点に注意されたい。例えば、宛先メモリ位
置を「1」だけインクリメントするようコード化された
IA−32XADD命令を、「1」に設定されたインク
リメント値(INC)を持つFETCHADD命令によ
りエミュレートすることができる。FETCHADD命
令によりエミュレートすることのできない他の命令につ
いては、変更されるべきメモリ位置を含むキャッシュラ
インの専有使用を得る命令によりエミュレートすること
ができる。
【0047】要約すると、DCR30のLCビット32
およびソフトウェアベースのIA−32インターセプト
・ロックフォールト・ハンドラー28により、CPU1
2は、バスをロックすることなくLOCKプレフィクス
のついたIA−32命令を原子的に実行することができ
るようになる。従って、この発明により、64ビットの
アーキテクチャを持つコンピュータシステムは、64ビ
ットのアーキテクチャにより提供される優れたパフォー
マンスを維持しつつ、IA−32命令との2値互換性を
維持することができるようになる。
【0048】この発明を、好ましい実施形態を参照しつ
つ説明してきたけれども、当該技術分野の当業者には、
この発明の精神および範囲から離れること無く、形式お
よび詳細において変更を加えることができるということ
が明らかであろう。
【発明の効果】特定の原子的更新方法を利用するようソ
フトウェアを明確にコード化することなく、ソフトウェ
アは、ハードウェアにより提供される最高のパフォーマ
ンスの原子的更新方法をアクセスできるようになる。
【図面の簡単な説明】
【図1】N個のCPU、メモリコントローラおよびメイ
ンメモリを備えるコンピュータシステムの概略図。
【図2】この発明による、図1のCPUのうちの1つの
ブロック図。
【符号の説明】
12、14 CPU 16 メモリコントローラ 18 メインメモリ 36 TLB 44 メモリ属性フィールド
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ミラード・ミッタル アメリカ合衆国94080カリフォルニア州サ ウス・サン・フランシスコ、ヒルサイド・ ブルバード 1149 (72)発明者 マーティン・ジェイ・ウイッテカー アメリカ合衆国95014カリフォルニア州ク パーチノ、ストニーデイル・ドライブ 10241 (72)発明者 ガリー・エヌ・ハモンド アメリカ合衆国95008カリフォルニア州キ ャンベル、サニーブルック・ドライブ 519 (72)発明者 ジェローム・シー・ハック アメリカ合衆国94303カリフォルニア州パ ロ・アルト、タリスマン・ドライブ 851

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】メモリ属性フィールドをアクセスして、原
    子的更新処理によりアクセスされるメモリ位置が、エク
    スポート可能な命令をサポートしているかどうかを判断
    するステップと、 前記原子的更新処理によりアクセスされるメモリ位置が
    エクスポート可能な命令をサポートしているならば、該
    原子的更新処理を中央ロケーションにエクスポートする
    ステップと、 前記原子的更新処理によりアクセスされるメモリ位置が
    エクスポート可能な命令をサポートしていないならば、
    キャッシュ・コヒーレンシー機構を使用して原子的更新
    処理を実行するステップと、 を含む原子的更新処理を実行する方法。
JP28666099A 1998-10-12 1999-10-07 原子的更新処理を実行する方法 Expired - Fee Related JP4531890B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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&#39;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