JPH05233421A - コンピュータ装置およびロード命令と記憶命令を発生し、実行するために記憶装置へ供給する方法 - Google Patents

コンピュータ装置およびロード命令と記憶命令を発生し、実行するために記憶装置へ供給する方法

Info

Publication number
JPH05233421A
JPH05233421A JP4149015A JP14901592A JPH05233421A JP H05233421 A JPH05233421 A JP H05233421A JP 4149015 A JP4149015 A JP 4149015A JP 14901592 A JP14901592 A JP 14901592A JP H05233421 A JPH05233421 A JP H05233421A
Authority
JP
Japan
Prior art keywords
memory
instruction
store
processor
load
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.)
Pending
Application number
JP4149015A
Other languages
English (en)
Inventor
Jean-Marc Frailong
ジャン−マルク・フレイロング
Pradeep Sindhu
プラディープ・シンドゥ
Michel Cekleov
ミシェル・セクレオフ
Michael Powell
マイケル・ポウェル
Eric Jensen
エリック・ジェンセン
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH05233421A publication Critical patent/JPH05233421A/ja
Pending 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 改良したメモリ・モデルを実現する。 【構成】 メモリ・モデルはトータル・ストア・オーダ
ーリング(TSO)と、マルチプロセッサにより出され
るメモリ・オペレーションに部分順序をつけるパーシャ
ル・ストア・オーダーリング(PSO)とを含む。TS
OはStoreと、アトミックLoad−Storeの
各オペレーションのためのFIFO記憶バッファ31,
32…を含む。LoadオペレーションはFIFO記憶
バッファには置かれず、FIFO記憶バッファ内の同じ
場所に記憶されている値を検査し、値がなければ、求め
られている値がメモリから戻される。PSOも記憶バッ
ファを含むが、FIFOではなく、オペレーションは、
プロセッサにより出されたのとは異なる順序で実行でき
る。PSOでのLoadオペレーションは記憶バッファ
には置かれず、バッファ内の同じ場所に記憶されている
値をまず検査し、見つからないと、その値がメモリから
戻される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータ用のメモリ
装置に関するものであり、更に詳しくいえば、マルチプ
ロセッサ・データ処理装置に使用するための改良したメ
モリ・モデルに関するものである。
【0002】
【従来の技術】マルチプロセッサ装置はメモリ装置へ接
続されるいくつかのプロセッサを含む。プロセッサはア
トミックLoad−StoreのようなLoadオペレ
ーション、Storeオペレーションおよびその他の同
期化オペレーションを用いてメモリ装置と相互作用す
る。プログラムを走らせている時は、1つのレジスタの
内容を別のレジスタへ加えること、またはサブルーチン
の呼出しを実行すること、というような他のオペレーシ
ョンをプロセッサは実行できる。しかし、それらのオペ
レーションは、プロセッサから見たメモリ装置の挙動に
は影響しない。プロセッサにより見られるメモリ装置の
その挙動は「メモリ・モデル」と呼ばれる。
【0003】メモリ・モデルの「仕様」はメモリ装置が
どのように挙動すべきかについての記述である。そのよ
うな仕様の主な目的は、ハードウェアの設計者およびプ
ログラマが独立に作業を行えるようにし、しかもその仕
様に適合するコンピュータ装置のどのような実現に対し
ても、どのようなプログラムも意図した通りに機能する
ようにすることである。理想的には、仕様に適合するこ
とをあるレベルで確認できるように、仕様は「形式が整
ったもの」でなければならない。しかし、実際には、多
くの場合に仕様は「形式が整っていない」か、存在すら
ない。その場合には特定のハードウェア実現がデフォー
ルトによりメモリ・モデルの仕様になる。
【0004】メモリはNポート装置としてモデル化され
る。ここに、Nはプロセッサの数である。このメモリ・
モデルは単一プロセッサ装置およびマルチプロセッサ装
置へ適用される(図1参照)。プロセッサは、メモリ・
オペレーションを生ずることにより、メモリ装置と通信
する。プロセッサはそれのそれぞれのポートを介してオ
ペレーションを生ずる。図1に示すように、プロセッサ
P1はそれのそれぞれのポート11を介してメモリ装置
と通信する。同様に、プロセッサPNはポートNを介し
てメモリ10と通信する。
【0005】メモリ・モデルは強い(または順次)一貫
性(Consistency)から各種の弱い一貫性ま
でのどこにも及ぶことができる。強い一貫性は、ほとん
どのプログラマにとってなじみのメモリ・モデルであ
る。強い一貫性モデルにおいては、全てのプロセッサの
メモリ・オペレーションは、個々のプロセッサの発生順
序に適合する単一の全体的な順序で実行するように見え
る。このモデルは直観に訴えて、全体的に理解される
が、とくにコンピュータ装置が数多くのプロセッサを含
んでいる時に、そのモデルは性能が最悪のものでもあ
る。強い一貫性モデルについての詳細についてはIEE
E Trans.on Computers.1979
年9月号所載のラムポート(L.Lamport)の論
文「マルチプロセス・プログラムを正しく実行するマル
チプロセッサ・コンピュータをどのようにして製作する
か(How to Makea Multiproce
ssorComputer That Correct
ly Executes Multiprocess
Programs)」を参照されたい。
【0006】より弱いメモリ・モデルは、スケール可能
な(scalable)マルチプロセッサを一層効率良
く実現できるようにするために開発された。不幸なこと
に、弱いメモリ・モデルは強い一貫性モデルよりも理解
が困難であり、並列ソフトウェア・プログラムを書くこ
とができる方法を弱いメモリ・モデルは制約する。弱い
モデルの実現にはハードウェア設計者の側にかなり大き
な注意も要し、かつ、弱いメモリ・モデルの使用には、
強い一貫性により提供されるモデルを含むことを避ける
ためにプログラマの側に意識的な努力を必要とする。
【0007】したがって、メモリ・モデルの選択には、
プログラミングにとって便利なことと、ハードウェアを
高性能にする潜在力をもたらすものとの間でトレードオ
フを行うことが含まれる。このトレードオフの詳細につ
いては、プログラミン言語およびオペレーティング・シ
ステムの構造的支持についてのシンポジウム議事録(P
roc.Symp.Architectural Su
pport forProgramming Lang
uages and OperatingSyste
m)(1982)2〜11ページ所載のヘネッシー
(J.Hennessy)他の論文「性能向上のための
ハードウェア/ソフトウェア・トレードオフ(Hard
ware/Software Tradeoffs f
or Increased Performanc
e)」を参照されたい。後で説明するように、本発明は
2つの改良されたメモリ・モデルである、トータル・ス
トア・オーダーリング(Total Store Or
dering(TSO)、およびパーシャル・ストア・
オーダーリング(Partial Store Ord
ering(PSO)についての正式な仕様について説
明する。それら2つのメモリ・モデルは、プログラムす
るために十分に「強く」、かつ、性能を高くするために
十分に「弱い」。
【0008】
【発明が解決しようとする課題】トータル・ストア・オ
ーダーリング(TSO)とパーシャル・ストア・オーダ
ーリング(PSO)の2つの特定のモデルを有する改良
したメモリ・アーキテクチャを開示する。
【0009】
【課題を解決するための手段】両方のメモリ・モデル
は、LoadおよびStoreのようなメモリ・オペレ
ーションの意味を定め、それらのオペレーションがプロ
セッサにより発せられる順序が、それらのオペレーショ
ンがメモリにより実行される順序に対してどのように関
連づけられるかを指定する。それらのモデルは単一プロ
セッサとメモリ共用マルチプロセッサの両方に適用され
る。強い一貫性のメモリ・モデルを実現する装置はTS
OとPSOの両方も支持する。というのは、強い一貫性
に対する要求が一層厳しいからである。PSOはTSO
のより高性能のものである。トータル・ストア・オーダ
ーリング(TSO)メモリ・モデルは、全てのプロセッ
サによるStoreオペレーション、Flushオペレ
ーションおよびアトミックLoad−Storeオペレ
ーションが、「メモリ順序」と呼ばれる単一の順序でメ
モリにより直列に実行されることを保障する。更に、与
えられたプロセッサに対するメモリ順序におけるオペレ
ーションStore、FlushおよびアトミックLo
ad−Storeの順序は、プロセッサによりそれらの
オペレーションが出された順序と同じである。プロセッ
サにより出されたStore、Flusheおよびアト
ミックLoad−Storeはプロセッサの専用FIF
O記憶バッファに置かれる。
【0010】Loadオペレーションの場合には、プロ
セッサの記憶バッファが同じメモリ場所に対するSto
reを含むかどうかをまず決定する。プロセッサの記憶
バッファがそのようなStoreを含むものとすると、
Loadオペレーションは最近のそのようなStore
の値を戻し、含まなければLoadオペレーションはメ
モリへ直接行き、プロセッサは阻止される、すなわち、
Loadオペレーションが値を戻すまでそれ以上のメモ
リ・オペレーションを出すことを禁止される。
【0011】アトミックLoad−Storeオペレー
ションはLoadおよびStoreオペレーションのよ
うに挙動する。アトミックLoad−Storeオペレ
ーションは記憶バッファに置かれ(Storeオペレー
ションのように)、アトミックLoad−Storeは
Loadオペレーションの場合におけるようにプロセッ
サを阻止する。いいかえると、アトミックLoad−S
toreオペレーションは、プロセッサの記憶バッファ
が空になるまでプロセッサを阻止し、それからMemo
ryへ進む。
【0012】パーシャル・ストア・オーダーリング(P
SO)メモリ・モデルは、全てのプロセッサのオペレー
ションであるStore、Flush、およびアトミッ
クLoad−Storeがメモリ順序でメモリにより直
列に実行されることを保障する。しかし、与えられたプ
ロセッサに対するオペレーションであるStore、F
lush、およびアトミックLoad−Storeは、
一般に、そのプロセッサによりそれらのオペレーション
が出された順序とは同じではない。出す順序とメモリ順
序の一致は、STBARと呼ばれる新しい命令を用いる
ことにより行われる。2つのオペレーションがSTBA
Rによりプロセッサの出す順序で分離されるか、2つの
オペレーションが同じメモリ場所を基準にするものとす
ると、2つの対応するオペレーションのメモリ順序は出
す順序と同じである。
【0013】プロセッサから出されるStore、Fl
ush、アトミックLoad−Storeはプロセッサ
の専用の記憶バッファに置かれる。パーシャル・ストア
・オーダーリング・メモリ・モデルの記憶バッファはF
IFOではないが、プロセッサの記憶バッファは同じメ
モリ場所へのStoreの順序とLoad−Store
の順序を保つ。さもないと、記憶バッファはSTBAR
命令によってのみ区分される。
【0014】
【実施例】Load−Storeアーキテクチャ・コン
ピュータ装置に使用するための特定の用途を有する改良
したメモリ・アーキテクチャを開示する。以下の説明に
おいては、本発明をより完全に説明するために、特定の
メモリ装置、アーキテクチャ、部品などのような数多く
の特定の詳細について説明する。しかし、それらの特定
の詳細なしで本発明を実施できることが当業者には明ら
かであろう。他の場合には、本発明をあいまいにしない
ようにするために、周知の回路は説明しなかった。
【0015】基本メモリ・モデル 本発明のメモリ・アーキテクチャの仕様は、コンピュー
タ装置で走っているソフトウェア・プログラムにより観
察される挙動を指定するモデルである。実現がメモリ・
モデルに合致する限りは、ハードウェアは任意のやり方
で実現できる。メモリ・モデルの仕様によりソフトウェ
ア・プログラムとハードウェア実現を独立に開発できる
ようにされ、更に、ソフトウェア・プログラムを任意の
実現で走らすことができるようにされる。
【0016】まず、従来の強い一貫性メモリ装置の概念
図が示されている図2を参照する。概念的には、単一ポ
ート・メモリ20がプロセッサから「スイッチ」21を
介してメモリ・オペレーションを受ける。各プロセッサ
はそのプロセッサの専用ポートを通じてメモリ・オペレ
ーションを出す。図2に示すように、それぞれのプロセ
ッサのポートが参照番号22,23,24,25により
示されている。メモリがオペレーションを実行する順序
は、スイッチがプロセッサのポートを選択する順序に一
致する。実際の選択法はポート22と、ポート23と、
ポート24と、ポート25の間を動くスイッチ21によ
り概念的に示されている。
【0017】次に、本発明の教示を含むメモリ・モデル
の概念図が示されている図3を参照する。前記のよう
に、各プロセッサはそれのポートを通じてメモリ・オペ
レーションを単一ポート・メモリ30へ出す。プロセッ
サの各ポートは専用記憶バッファ、たとえば記憶バッフ
ァ32,33,34または35を有する。それらの各記
憶バッファはStore、Flush、アトミックLo
ad−Storeを保持する。概念的には、スイッチ3
1が単一ポート・メモリ30を各メモリ・オペレーショ
ンの持続する間に1度にプロセッサの1つのポートへ接
続する。スイッチ31が1つのポートから別のポートへ
動く順序はプログラムの立脚点からは決定的なものでは
なく、メモリ・オペレーションのメモリ順序を定める。
本発明のメモリ・モデルの構造および動作についてのこ
れ以上の詳細について以下に述べる。
【0018】アトミックLoad−Store命令はア
トミック・シーケンス「Loadにより戻される値のあ
る任意の関数である値のStoreに伴われるLoa
d」と定義される。たとえば、Swap、Compar
e−and−Swap、およびFetch−and−A
ddは全てアトミックLoad−Storeオペレーシ
ョンである。
【0019】次に、プロセッサの概念図が示されている
図4を参照する。プロセッサ40は理想化されたプロセ
ッサ(IP)41と命令バッファ(IBuf)43を含
む。理想化されたプロセッサ41は命令を重ねずに1度
に1つ実行する。各命令に対して、理想化されたプロセ
ッサ41は命令を命令バッファ43から取出し、その命
令を実行し、任意のデータLoadおよびStoreを
プロセッサのメモリ・ポートへ直接出す。命令が命令バ
ッファ43に既になければ、命令バッファ43は、理想
化されたプロセッサ41により取出された各命令に対し
て、プロセッサのメモリ・ポートを通じて命令Load
を出す。命令バッファ43は、理想化されたProce
ssor41から取出された命令を待つよりは、メモリ
・ポートを通じて命令を予め取出すことができる。トー
タル・ストア・オーダーリング(TSO)およびパーシ
ャル・ストア・オーダーリング(PSO)と呼ばれる2
つのモデルを有する本発明のメモリ・アーキテクチャに
ついて説明する。
【0020】トータル・ストア・オーダーリング(TS
O) ここで、本発明のトータル・ストア・オーダーリング
(TSO)メモリ・モデルが概念的に線図で示されてい
る図5を参照する。プロセッサの各ポート専用のFIF
O記憶バッファ51,52,53または54を含む。プ
ロセッサはメモリ・オペレーションをプロセッサのそれ
ぞれのポートを通じて単一ポート・メモリ50へ出す。
概念的には、各メモリ・オペレーションが行われている
間、スイッチ55が単一ポート・メモリ50を1度に1
つのポートへ接続する。プロセッサにより出されたSt
ore、Flush、アトミックLoad−Store
はプロセッサのFIFO記憶バッファに置かれる。TS
Oメモリ・モデルは、全てのプロセッサの命令Stor
e,FlushおよびアトミックLoad−Store
が、単一ポート・メモリ50により「メモリ順序」と呼
ばれるもので直列に実行されることを保障する。それら
のオペレーションのメモリ順序は、プロセッサのポート
が選択される順序に一致する。記憶バッファ51,5
2,53,54を含むポートの間を動くスイッチ55に
より選択法が概念的に示されている。したがって、与え
られたオペレーションに対して単一ポート・メモリ50
がそれらのオペレーションを実行する順序は、それらの
オペレーションをプロセッサが出した順序と同じであ
る。
【0021】プロセッサがLoadオペレーションを出
すと、記憶バッファが出されたLoadオペレーション
が含まれているメモリ場所と同じメモリ場所にStor
eオペレーションを含むかどうかを判定するために、プ
ロセッサはそれの専用FIFO記憶バッファをまず調べ
る。プロセッサのFIFO記憶バッファがその同じメモ
リ場所にStoreオペレーションを含むものとする
と、Loadオペレーションは最近のStoreオペレ
ーションの値を戻し、もし含まなければ、Loadオペ
レーションは単一ポート・メモリ50へ直接行く。Lo
adオペレーションが値を戻すまでは、プロセッサはL
oadの後はメモリ・オペレーションを出すことを禁止
される。
【0022】アトミックLoad−Storeオペレー
ションはLoadおよびStoreオペレーションのよ
うに挙動する。Storeオペレーションと同様に、ア
トミックLoad−Storeオペレーションはプロセ
ッサのFIFO記憶バッファに置かれる。アトミックL
oad−Storeオペレーションはプロセッサの阻止
も行う(Loadオペレーションと同様に)。いいかえ
ると、アトミックLoad−Storeオペレーション
は、プロセッサのFIFO記憶バッファが空になるま
で、他のどのようなオペレーションを出すことも禁止
し、それから単一ポート・メモリ50へ進む。Load
−Storeオペレーションがプロセッサを阻止する
と、プロセッサにより出されたオペレーションをプロセ
ッサの専用FIFO記憶バッファに置かないことができ
る。単一ポート・メモリ50はアトミックLoad−S
toreオペレーションを原子的に実行する、すなわ
ち、Load−StoreオペレーションのLoadと
Storeの間に他のオペレーションを介在させなくで
きる。
【0023】本発明のTSOメモリ・モデルは強い一貫
性のメモリ・モデルよりも高い性能を与える。TSOモ
デルのために書かれたプログラムは、強い一貫性メモリ
・モデルを実現するコンピュータ装置でも走る。図5に
示す直観的モデルに加えて、Order、Atomic
ity、Termination、Value、Loa
dOpおよびStoreStoreの6つの公理を用い
てTSOモデルを公式に記述することもできる。この公
式な記述が付録Aに現れる。
【0024】パーシャル・ストア・オーダーリング(P
SO) 次に、本発明のパーシャル・ストア・オーダーリング
(PSO)メモリ・モデルの概念が線図的に示されてい
る図6を参照する。PSOモデルはTSOモデルおよび
強い一貫性モデルよりも高い性能を与える。更に、PS
Oモデルのために書かれたプログラムは、TSOモデル
を実現するコンピュータ装置または強い一貫性モデルを
実現するコンピュータ装置でも走る。TSOモデルと同
様に、プロセッサの各ポートは専用の記憶バッファを含
む。その記憶バッファには、プロセッサにより出された
オペレーションであるStore、Flush、アトミ
ックLoad−Storeが置かれる。しかし、PSO
モデル内の記憶バッファはFIFOでなく、STBAR
オペレーションおよびアドレス一致により順序づけられ
るから、記憶バッファ中の2つのオペレーションがプロ
セッサの出す順序でSTBARにより分離されるか、同
じアドレスへ出されるものとすると、それらのオペレー
ションは順序づけられるだけである。プロセッサにより
出されたStore、Flush、アトミックLoad
−Storeはプロセッサの記憶バッファに置かれる。
メモリ・オペレーションの順序は、プロセッサのポート
が選択される順序に一致する。図6を再び参照して、各
メモリ・オペレーションの持続する間、単一ポート・メ
モリ80を1度にプロセッサのポートの1つへ接続する
スイッチ89により選択法が概念的に示されている。ス
イッチ89が1つのポートから別のポートへ動く順序は
プログラムの観点からは決定論的ではなく、オペレーシ
ョンのメモリ順序を定める。
【0025】プロセッサがLoadオペレーションを出
すと、プロセッサの記憶バッファがStoreオペレー
ションを同じメモリ場所に含んでいるかどうかを判定す
るために、プロセッサはその記憶バッファをまず検査す
る。プロセッサの記憶バッファがStoreオペレーシ
ョンを同じメモリ場所に含むものとすると、Loadオ
ペレーションが最近のStoreオペレーションの値を
含み、他の場合にはLoadオペレーションは単一ポー
ト・メモリ80(図6)へ直接行き、Loadオペレー
ションが値を戻すまでは、Loadオペレーションはプ
ロセッサがそれ以上のメモリ・オペレーションを出すこ
とを阻止もする。
【0026】アトミックLoad−Storeオペレー
ションはLoadおよびStoreオペレーションのよ
うに挙動する。アトミックLoad−Storeオペレ
ーションは記憶バッファに置かれ(Storeオペレー
ションと同様に)、アトミックLoad−Storeオ
ペレーションはプロセッサの阻止も行う(Loadオペ
レーションと同様に)。単一ポート・メモリ80はアト
ミックLoad−Storeをアトミックに実行する、
すなわち、アトミックLoad−Storeオペレーシ
ョンのLoadとStoreの間に他のオペレーション
を介在させなくすることができるPSOモデルは、Or
der、Aomicity、Termination、
Value、LoadOp、StoreStoreおよ
びStoreStoreEqの7つの公理で形式的に記
述することもできる。この形式的な記述が付録Aに現れ
る。FLUSH命令の意味 Flushを実行するプロセッサによるFlushのタ
ーゲット(すなわち、Flushによりアドレスされる
メモリ場所)への以後の命令取出しが、Flushの前
にそのプロセッサにより出された任意のLoad、St
ore、アトミックLoad−Storeの後で実行す
るように見えることがFlush命令により確保され
る。マルチプロセッサにおいては、Flushの実行の
ある時間後に他の全てのプロセッサの命令取出しにFl
ushが見えるようになる前に、Flushを実行する
プロセッサにより出されたFlushのターゲットへの
記憶およびアトミックLoad−StoreをFlus
hは確実にする。適切なFlush命令とSTBAR命
令(後の命令はPSOためだけに必要とされる)が点在
している一連のStoreおよびLoad−Store
をプロセッサが実行すると、全てのプロセッサの命令取
出しに現れる変化が、それらが生じさせられた順序で起
こる。
【0027】次に、Flush命令を実行するプロセッ
サ97が線図で概念的に示されている図7を参照する。
プロセッサ97の命令Buffer(IBuf)96が
ローカル・フラッシュ(lflush)遅延95と、I
Bufデータ94と、遠隔フラッシュ(rflush)
FIFO92とを含む。フラッシュ遅延95はある固定
された数(K)の命令によりローカルに発生されたFl
ushの実行を遅らせる。IBufデータ94はIBu
f96のデータを含む。rflush FIFO92は
遠隔プロセッサ(たとえば99,990,995)によ
り発生されたFlushオペレーションを含む。
【0028】プロセッサ97は、ローカル・フラッシュ
(lflush)オペレーションをIBuf96へ出
し、遠隔フラッシュ・オペレーション(rflush)
を記憶バッファ98に置くことによりFlush「A」
オペレーションを実行する。IBuf96は、IBuf
96内のアドレス「A」の内容を無効にすることによ
り、ある固定された数(K)の命令の遅れの後で、フラ
ッシュ・オペレーションを実行する。記憶バッファ98
に置かれたrflushオペレーションは、順序をつけ
る目的のためにStoreオペレーションのように取扱
われる。すなわち、rflushオペレーションは、ス
イッチ91を通って単一ポート・メモリ90へ概念的に
行き、他のプロセッサのrflush FIFO内に置
かれることにより、大域メモリ順序で現れる。他のプロ
セッサのrflush FIFOは番号93,991,
996で示されている。rflushはメモリの内容に
何の影響も及ぼさない。遠隔プロセッサのIBufは、
rflushがそのプロセッサのrflush FIF
Oのヘッドに来た時に、メモリ・アドレス「A」の内容
を無効にする。たとえば、rflush FIFO93
のヘッドへrflushオペレーションが来た時に、遠
隔プロセッサ99のIBuf2がアドレス「A」の内容
を無効にする。Flushオペレーションの後でプロセ
ッサにより出された、K個またはそれ以上の命令である
アドレスへの命令Fetchは、プロセッサのIBuf
には置かれず、プロセッサのポートに命令Loadとし
て出る順に現れることをlflushオペレーションが
保障する。たとえば、プロセッサ97により出されたF
lush「A」オペレーションに応じて、Flush
「A」オペレーションの後で少なくともK個の命令を出
したどのInstruction Fetchも、IB
uf96には置かれず、命令Loadとして出る順にプ
ロセッサ97のポートに現れることをlflushオペ
レーションは保障する。図7に示されている直観的なモ
デルに加えて、IFetchValue、FlushT
ermination、およびIFetchIFetc
hの3つの公理を用いて、FLUSH命令を公式に記述
することもできる。
【0029】好適な実施例 好適な実施例についての以下の説明は、本発明の教示を
含む主メモリへ結合されているマルチプロセッサ装置を
記述するものである。ここで、主メモリ109へ結合さ
れているマルチプロセッサ装置が線図で概念的に示され
ている図8を参照する。図示のように、プロセッサ10
4がプロセッサ・バス110と外部キャッシュ103へ
結合される。外部キャッシュ103はメモリ・バス10
1と102へ結合される。同様に、プロセッサ106が
プロセッサ・バス111と外部キャッシュ105へ結合
される。外部キャッシュ105はメモリ・バス101と
102へ結合される。図示のように、プロセッサ108
がプロセッサ・バス112と外部キャッシュ107へ結
合される。外部キャッシュ107はメモリ・バス101
と102へ結合される。主メモリ109はメモリ・バス
101と102へ結合される。この実施例においては、
帯域幅を広くするために、1つのメモリ・バスではなく
て2つのメモリ・バスが用いられる。こうすることによ
り装置をより多くのプロセッサで構成できる。各メモリ
・バスはそれ自身の独立仲裁器を有する。たとえば、メ
モリ・バス101は仲裁器116へ結合され、メモリ・
バス102は仲裁器117へ結合される。バス仲裁器の
詳細については、1990年11月30日に出願された
未決の米国特許出願 No.07/621,123、「メモ
リ共用マルチプロセッサ用のバスを含めた、パケット切
替えバスの仲裁(Arbitration of Pa
cket Switched Buses, incl
uding Buses for Shared Me
mory Multiprocessor)」を参照さ
れたい。各プロセッサの外部キャッシュ(たとえば、1
03,105,107)はトランザクションをメモリ・
バスを介して主メモリ109へ送る。この好適な実施例
においては、メモリ・バス101と102はトランザク
ション・アドレスを基にして交錯させられる。
【0030】各メモリ・バスは、ReadBlockト
ランザクションと、WriteSharedトランザク
ションと、アトミックOp−Sharedトランザクシ
ョンと、FlushBlockトランザクションとの少
なくとも4つのトランザクションをサポートする。Re
adBlockトランザクションは、外部キャッシュ
(たとえば103)に求められているデータが見つから
ない時に、主メモリ(たとえば109)から、または外
部キャッシュ(たとえば105)から、データのブロッ
クを読出すために、外部キャッシュ(たとえば103)
により出される。プロセッサ(たとえば104)がSt
oreオペレーションが共用バスへStoreオペレー
ションを出す時に、他の全ての外部キャッシュ、たとえ
ば105,107、へ書込みをブロードキャストするた
めに、WriteSharedが外部キャッシュにより
出される。「共用」場所は、2つ以上の外部キャッシュ
に存在するメモリのブロックである。Atomic O
p−Sharedは外部キャッシュ、たとえば103、
により出されて、Atomic Load−Store
オペレーションを共用場所へブロードキャストする。F
lushBlockが外部キャッシュ(たとえば10
3)により出されて、データのブロックを主メモリ(た
とえば109)へ書込む。
【0031】上記トランザクションのサポートに加え
て、特定のメモリ・オペレーションにおいて現れたアド
レスを有するメモリ・ブロックを外部キャッシュ(たと
えば103)が有するか、およびそのメモリ・ブロック
がその外部キャッシュのプロセッサ(たとえば104)
により最後に書込まれたか(これは「スヌーピング」と
も呼ばれる)、を他の外部キャッシュ(たとえば10
5,107)へその外部キャッシュ(たとえば103)
が指示することを各メモリは許す。メモリ・ブロックが
外部キャッシュのプロセッサにより書込まれたとする
と、そのメモリ・ブロックはそのプロセッサにより「所
有されている」といわれる。メモリ・バスの詳細につい
ては、1990年11月30日付の未決の米国特許出願
No.07/620,508、「共用メモリ・マルチプロ
セッサ用の一貫するパケット交換バス(Consist
ent Packet Switched Bus f
or Shared Memory Multipro
cessors)」を参照されたい。
【0032】各プロセッサは、利用されているメモリ・
モデルがTSOモデルであるか、PSOモデルであるか
を示すモード・ビットを有する。モード・ビットがPS
Oモデルにセットされると、プロセッサはPSOメモリ
・モデルの仕様に従ってメモリ・オペレーションを出
す。モード・ビットがTSOモデルにセットされると、
プロセッサはTSOメモリ・モデルの仕様に従ってメモ
リ・オペレーションを出す。Instruction
FetchおよびInstruction Execu
tion Unitに加えて、プロセッサ(たとえば1
04)は記憶バッファおよび内部キャッシュも含む。こ
こで、プロセッサ104の詳細な概念図が示されている
図9を参照する。プロセッサ104と、記憶バッファ1
102と、内部キャッシュ1104と、命令取出しおよ
び実行器1100を含む。内部キャッシュ1104はプ
ロセッサ104の命令とデータを保持する。内部キャッ
シュ1104の内容はプロセッサ104のそれぞれの外
部キャッシュ(たとえば103)の内容のサブセットで
もある。プロセッサ104がStoreオペレーション
を出すと、内部キャッシュ1104の内容がStore
オペレーションにより参照された同じメモリ場所も含む
ものとすると、プロセッサ104は内部キャッシュ11
04の内容を更新し、もし含まなければ、プロセッサ1
04は内部キャッシュ1104をバイパスする。内部キ
ャッシュ1104の内容とは無関係に、プロセッサ10
4はStoreオペレーションを、プロセッサ・バス1
10(図8)を介して、プロセッサ104の外部キャッ
シュ103へ出す。記憶バッファ1102は、プロセッ
サ104により出されたStoreとアトミックLoa
d−Storeの各オペレーションがプロセッサ・バス
110を通って行く前に、それらのオペレーションをバ
ッファするFIFO待ち行列である。
【0033】次に、外部キャッシュ103の詳細な概念
図が示されている図10を参照する。外部キャッシュ1
03はキャッシュ記憶装置1200と、制御論理120
2と、待ち行列1204,1206とを含む。制御論理
1202はプロセッサからオペレーションを受け、それ
らのオペレーションを外部キャッシュ103内で実行で
きるかどうかを判定する。オペレーションを外部キャッ
シュ103内で全面的に実行できるものとすると、制御
論理1202はオペレーションを出したプロセッサに従
って応答する。たとえば、プロセッサはロード・オペレ
ーションを外部キャッシュ103へ出すことができ、外
部キャッシュ103はそのロード・オペレーションによ
り求められたデータを含み、それから制御論理1202
はキャッシュ記憶装置1200からのデータを決定し、
Loadオペレーションを出したプロセッサへデータを
戻す。Loadオペレーションにより求められたデータ
を外部キャッシュ103が含まないとすると、制御論理
1202は、アドレスのインターリーブに応じて待ち行
列1204または1206にReadBlockトラン
ザクションを置く。このReadBlockトランザク
ションは適切なバス(101または102)へ行き、あ
る時間後に主メモリ109または別のキャッシュ(たと
えば105,107)がReadBlock(図8)に
応答する。応答が適切なメモリ・バスで受けられると、
制御論理1202は、Loadオペレーションを出した
プロセッサに応答し、ReadBlockからのデータ
をキャッシュ記憶装置1200に書き込む。
【0034】プロセッサがStoreオペレーションを
共用メモリ場所へ出すと、制御論理1202はStor
eオペレーションを受け、そのStoreオペレーショ
ンを、アドレスに応じて待ち行列1204または120
6に置く。注目すべき重要な事は、それらの待ち行列
が、仲裁されたバス(すなわち、メモリ・バス101ま
たは102)へ独立に行くので、Storeが最終的に
実行される順序が、プロセッサによりそれらが出された
順序と同じことが保障されないことである。実現により
その順序がどのようにして保障されるかについては、S
toreオペレーションについての説明において述べる
ことにする。下記の例は、本発明の教示を利用する好適
な実施例の主メモリへプロセッサにより出されるメモリ
・オペレーションの実現を説明するものである。
【0035】PSOモード・オペレーション 再び図9を参照する。プロセッサ104がLoad命令
を実行すると、プロセッサの実行器1100が要求され
ているデータについて内部キャッシュ1104を調べ
る。Load命令に応答して、求められているデータが
内部キャッシュ1104で見つかったとすると(これは
「ヒット」としても知られている)、実行器1100は
内部キャッシュ1104からデータを読出す。求められ
ているデータが内部キャッシュ1104で見つからない
とすると(これは「ミス」としても知られている)、同
じメモリ場所に対するStoreオペレーションがある
かを判定するために、プロセッサ104は記憶バッファ
1102を調べる。同じメモリ場所へのStoreオペ
レーションがあれば、Loadオペレーションは最後の
そのStoreオペレーションにより書かれた値を戻
し、もしなければ、プロセッサ104はLoadオペレ
ーションをプロセッサ・バス110を介して外部キャッ
シュ103へ出す。図8のように、Loadオペレーシ
ョンに応答して、求められているデータが外部キャッシ
ュ103で見つかったとすると、外部キャッシュ103
は求められているデータをプロセッサ・バス110を介
して戻す。求められているデータが外部キャッシュ10
3で見つけられなければ、外部キャッシュ103はRe
adBlockトランザクションを適切なメモリ・バス
(アドレスのインターリーブに応じてメモリ・バス10
1または102)へ出し、応答を待つ。Loadオペレ
ーションのアドレスにより占められるキャッシュ場所が
現在は別の場所により占められており、そのアドレスが
外部キャッシュ103により「所有されている」と記さ
れているものとすると、データを主メモリ109に書込
むために外部キャッシュ103はFlushBlock
トランザクションも出す。図10を参照して、Read
Blockに対する応答が受けられると、外部キャッシ
ュ103はデータをキャッシュ記憶装置1200に置
き、プロセッサ・バスへのLoadオペレーションに応
じてデータを戻す。図9を再び参照する。プロセッサ1
04がデータをプロセッサ・バス110を介して受ける
と、プロセッサ104はデータを内部キャッシュ110
4に置き、かつそのデータを実行器1100へ戻す。
【0036】Storeオペレーションについての説明 プロセッサ104の実行器1100により実行されるS
tore命令は、そのプロセッサの記憶バッファ110
2に直接置かれる(図9)。そのStore命令に応じ
て、内部キャッシュ1104がアドレスされたメモリ場
所を含んでいるとすると、内部キャッシュ1104の内
容は更新もされる。したがって、プロセッサにより出さ
れた全てのStore命令はそのプロセッサの外部キャ
ッシュへ送られる。
【0037】プロセッサ104の外部キャッシュ103
が、そのStoreオペレーションによりアドレスされ
たメモリ場所を含まないと、そのプロセッサの外部キャ
ッシュ103はReadBlockトランザクションを
適切なメモリ場所へ出し、メモリ・バスにおける応答を
待つ(図8)。Storeオペレーションのアドレスに
より占められるキャッシュ場所が別のアドレスにより現
在占められており、そのアドレスが、その外部キャッシ
ュ103により「所有されている」として記されている
ならば、そのデータを主メモリ109へ書き戻すため
に、外部キャッシュ103はFlushBlockも出
す。外部キャッシュ103が、ReadBlockトラ
ンザクションに応答して適切なメモリ・バスから応答デ
ータを受けると、外部キャッシュ103はデータをその
外部キャッシュ103のキャッシュ記憶装置に置き、外
部キャッシュ103がStoreオペレーションにより
アドレスされたメモリ場所を最初に持っていたかのよう
に、Storeオペレーションに応答する。
【0038】外部キャッシュ103が、Storeオペ
レーションによりアドレスされたメモリ場所を含んでい
るとすると、キャッシュ場所が共用されているか否かを
制御論理1202は判定する。外部キャッシュ103内
のキャッシュ場所が共用されないとすると、制御論理1
202はキャッシュ記憶装置1202をStoreオペ
レーションの値で更新する。外部キャッシュ103内の
キャッシュ場所が共用されているならば、制御論理12
02は適切なメモリ・バスにおけるWriteShar
edトランザクションを主メモリ109へ送る。主メモ
リ109は、アドレスと、そのアドレスに存在していた
データ値とを含んでいるWriteSharedトラン
ザクションへの応答を発生する。外部キャッシュ103
が主メモリ109から応答を受けると、外部キャッシュ
103はキャッシュ記憶装置1200をWriteSh
aredの値で更新する。
【0039】アトミックLoad−Storeオペレー
ションについての説明 実行器1100により実行されるアトミックLoad−
Store命令は記憶バッファ1102に直接置かれる
(図9)。実行器1100は、アトミックLoad−S
toreオペレーションが値を戻すまで停止する、すな
わち、アトミックLoad−Storeが値を戻すまで
それは別の命令を発生しない。プロセッサ104の内部
キャッシュ1104が、アトミックLoad−Stor
eオペレーションによりアドレスされる場所を含まなけ
れば、内部キャッシュ1104の内容も、アトミックL
oad−Storeにより書込まれる値により更新され
る。したがって、全てのアトミックLoad−Stor
eオペレーションも外部キャッシュ(たとえば、Sto
reオペレーションのように、103)へ送られる。
【0040】求められているデータを、外部キャッシュ
103がアトミックLoad−Storeオペレーショ
ンに応答して含まないとすると、外部キャッシュ103
はReadBlockトランザクションを適切なメモリ
・バスへ出し、応答を待つ(図8)。アトミックLoa
d−Store命令のアドレスにより占められるキャッ
シュ場所が別のアドレスにより現在占められており、そ
のアドレスが外部キャッシュ103により「所有されて
いる」ものとして記されているならば、その外部キャッ
シュ103はReadBlockトランザクションも出
して、現在のデータを主メモリ109へ書き戻す。外部
キャッシュ103がReadBlockに応答して適切
なメモリ・バスから応答データを受けると、外部キャッ
シュ103はそのデータをキャッシュ記憶装置1200
(図10)に置き、外部キャッシュ103が求められて
いるデータを最初から含んでいるかのように、アトミッ
クLoad−Storeオペレーションに応答する。
【0041】アトミックLoad−Storeによりア
ドレスされる場所を外部キャッシュ103が含んでいる
ならば、キャッシュ場所が共用されているか否かを制御
論理1202は判定する。(図10)。もし共用されて
いなければ、制御論理1202はその場所をアトミック
に読出し、読出しと書込みの間にStoreが介在しな
いように、新しい値を書込む。外部キャッシュ103の
場所が共用されておれば、制御論理1202は適切なメ
モリ・バス上のアトミックOp−Sharedトランザ
クションを主メモリ109(図8)へ送る。アドレス
と、そのトランザクションの要求部分としての値とを含
んでいるアトミックOp−Sharedに対する応答を
主メモリ109は発生する。外部キャッシュ103が主
メモリ109からの応答を受けると、読出しと書込みの
間にStoreオペレーションが介在しないように、外
部キャッシュ103はキャッシュ場所を読出し、新しい
データ値を書込む。最後に、外部キャッシュ103は、
キャッシュ場所から読出されたデータ値を、アトミック
Load−Storeオペレーションをプロセッサ・バ
スを介して出したプロセッサへ戻す。たとえば、プロセ
ッサ104がアトミックLoad−Storeにより戻
されたデータ値を受けると、プロセッサ104はそのデ
ータ値を実行器1100へ送り、それから実行器110
0は次の命令の実行へ進む(図9)。
【0042】STBARオペレーションについての説明 実行器1100により出されたSTBARオペレーショ
ンはプロセッサ104(図9)の記憶バッファに置かれ
る(Storeオペレーションに類似する)。STBA
Rオペレーションが記憶バッファ1102のヘッドに達
すると、プロセッサ104はSTBARを記憶バッファ
1102から除去し、STBARオペレーションより先
にプロセッサ104の外部キャッシュへ出された全ての
Storeオペレーションが、以後のStoreオペレ
ーションがプロセッサ・バスに現われることを許す前
に、実行を終わるまでプロセッサ104は待つ。プロセ
ッサによる待つ動作は、STBAR命令の前に出された
全てのStore命令が、STBAR命令の後で出され
たどのStore命令よりも前に実行を終わらなければ
ならないように、プロセッサがPSOメモリ・モデルの
重要な順序づけ要求を満たすことを許す。STBARは
プロセッサの実行器(たとえば1100)を阻止しない
ことに注目されたい。
【0043】Flush命令についての説明 Flush命令は、プロセッサ104の命令取出しおよ
び実行器1100に、内部命令バッファをパージさせ、
Flushの後で出された命令を実行できる任意の内部
パイプライン段をフラッシュさせる。
【0044】ReadBlockトランザクションにつ
いての説明 外部キャッシュ103がメモリ・バス(101または1
02)からReadBlockトランザクションを受け
ると、ReadBlockトランザクションのアドレス
が外部キャッシュのキャッシュ記憶装置に存在するか、
およびそのアドレスがその外部キャッシュにより「所有
されている」かどうかを外部キャッシュ103は判定す
る(図8)。図10を再び参照すれば、ReadBlo
ckトランザクションのアドレスがキャッシュ記憶装置
に存在し、そのアドレスがその外部キャッシュ103に
より「所有されている」ならば、その外部キャッシュ1
03は、主メモリ109がReadBlock要求に応
答することを禁止し、その外部キャッシュ103のキャ
ッシュ記憶装置から取出されたデータを含む応答を発生
する。
【0045】WriteSharedトランザクション
についての説明 外部キャッシュ103がWriteSharedを主メ
モリ109へ出し、応答を受けると、その外部キャッシ
ュ103は応答のデータをキャッシュ記憶装置1200
(図10)へ書込む。その後で、外部キャッシュ103
は所有されているキャッシュ場所にマークし、Stor
eが終わったことをプロセッサ104へ知らせる。再び
図8を参照する。外部キャッシュ105により出された
WriteSharedに対する応答を外部キャッシュ
103が主メモリ109から受けると、WriteSh
aredによりアドレスされる場所がその外部キャッシ
ュ103に存在しなければ、外部キャッシュ103は何
も行わない。その場所が外部キャッシュ103に存在す
るならば、外部キャッシュ103はデータをその外部キ
ャッシュ103のキャッシュ記憶装置に書込み、所有さ
れていない場所をマークし、内部キャッシュにキャッシ
ュ場所が存在するならばそのキャッシュ場所を無効にす
るために、プロセッサ104の内部キャッシュへ要求を
送る。内部キャッシュ場所を無効にすることにより、内
部キャッシュの内容が外部キャッシュの内容のサブセッ
トであるために、プロセッサの外部キャッシュと内部キ
ャッシュの間のデータの一貫性が維持される。キャッシ
ュ・コヒーレンシーについての詳細は、1990年11
月30日付の米国特許出願Serial No.07/
620,496号、「メモリ共用マルチプロセッサ用の
一貫性プロトコル(Consistency Prot
ocols for Shared Memory M
ultiprocessors)」を参照されたい。
【0046】アトミックOp−Sharedトランザク
ションについての説明 外部キャッシュ103がアトミックOp−Shared
を主メモリ109へ出し、応答を受けると、その外部キ
ャッシュ103は所有されているキャッシュ場所をマー
クし、古い値をアトミックに読出し、新しい値をキャッ
シュ場所へ書込み、キャッシュ場所から読出した値をプ
ロセッサへ戻す(図8)。外部キャッシュ103が、別
の外部キャッシュ105により出されたアトミックOp
−Sharedに対する応答を主メモリ109から受け
ると、アトミックOp−Sharedによりアドレスさ
れる場所が外部キャッシュ103に存在しなければ、そ
の外部キャッシュ103は何もしない。アトミックOp
−Sharedによりアドレスされる場所が外部キャッ
シュ103に存在するならば、外部キャッシュ103は
古い値をアトミックに読出し、新しい値を外部キャッシ
ュ103のキャッシュ記憶装置へ書込み、所有されてい
ない場所にマークし、キャッシュ場所が内部キャッシュ
に存在するならば、そのキャッシュ場所を無効にするた
めの要求をプロセッサ104の内部キャッシュへ送る。
キャッシュ場所を無効にすることにより、プロセッサの
外部キャッシュと内部キャッシュの間でデータの一貫性
が維持される。FlushBlockトランザクションについての説明 外部キャッシュはメモリ・バスにおけるFlushBl
ockトランザクションを無視する。
【0047】TSOモード・オペレーション Loadオペレーションについての説明 TSOモードにおけるLoadオペレーションの説明は
PSOモードにおけるのと同じである(21ページ参
照)。Storeオペレーションについての説明 TSOモードにおけるStoreオペレーションの説明
はPSOモードにおける説明(22ページ参照)と同じ
である。ただし、プロセッサ104により以前に出され
たStoreオペレーションが終わっていなければ、同
じプロセッサ104はStoreオペレーションをプロ
セッサ・バス110に出さない点は異なる。アトミックLoad−Storeオペレーションについ
ての説明 TSOモードにおけるアトミックLoad−Store
オペレーションについての説明は、PSOモードにおけ
る説明(23ページ参照)。STBARオペレーションについての説明 プロセッサは、TSOモードで実行する時は、STBA
Rオペレーションを無視する。いいかえると、STBA
Rオペレーションは零オペレーション(「NOP」)と
して実行される。Flush命令についての説明 TSOモードでのFlush命令についての説明はPS
Oモードでの説明(25ページ参照)と同じである。ReadBlockトランザクションについての説明 TSOモードでのReadBlockトランザクション
についての説明はPSOモードでの説明(25ページ参
照)と同じである。WriteSharedトランザクションについての説
TSOモードでのWriteSharedトランザクシ
ョンについての説明はPSOモードでの説明(26ペー
ジ参照)と同じである。アトミックOp−Sharedトランザクションについ
ての説明 TSOモードでのアトミックOp−Sharedトラン
ザクションについての説明はPSOモードでの説明(2
7ページ参照)と同じである。FlushBlockトランザクションについての説明 TSOモードでのFlushBlockトランザクショ
ンについての説明はPSOモードでの説明(27ページ
参照)と同じである。
【0048】付 録A 下記の詳しい説明は、コンピュータ装置におけるメモリ
・オペレーションのアーキテクチャおよび記号表現に関
して主として行ったものである。それらのアーキテクチ
ャと記号的な記述および記号表現は、データ処理技術に
おける専門家が自己の業績を、同じ技術の他の専門家へ
最も効果的に伝えるために用いる1つの手段である。下
記の公理的な記述は、TSO実現とPSO実現のために
本発明の前記メモリ・モデルを一層定義するために行っ
たものである。
【0049】本発明はメモリ・モデルを記述するもので
あることを記憶すべきである。この正式な記述は、任意
のコンピュータ装置で実現できるソフトウェア・プログ
ラムとハードウェア実現との間のインターフェイスを指
定するものである。以下に、公理において用いる記法に
ついて説明する。
【0050】データLoadオペレーションをL.で示
す。StoreオペレーションをS.で示す。アトミッ
クLoad−Storeを[L;S]で示す。ここに、
大括弧[]はアトミシティを表わす。STBARをS
(-) で示す。命令FlushをF.で示す。命令Fet
chをIF.で示す。命令LoadをIL.で示す。L
oad、命令Fetch、または命令Load、あるい
はStoreオペレーションにより戻される値を[Va
l]で示す。L、S、S(-) 、F、IF、ILの上付き
記号はプロセッサ番号を指す。それらのオペレーション
L、S、S(-) 、F、IF、ILの下付き記号はメモリ
場所を指す。#の後の数字はStoreオペレーション
により書かれた値を示す。たとえば、Si a#0 プロセ
ッサiにより出された場所「a」への「0」のStor
eを示す。Li a プロセッサiにより出された場所
「a」からのLoadを示す。[Li a;Si a] プロセ
ッサiにより出された場所「a」へのアトミックLoa
d−Storeを示す。S(-)i プロセッサiにより出
されたSTBARを示す。ILi a プロセッサiにより
出された場所「a」からの命令Loadを示す。Fi a
プロセッサiにより出された場所「a」への命令Flu
shを示す。IFi a プロセッサiにより出された場所
「a」からのの命令Fetchを示す。Val[Li a
i a命令により戻された値を示す。Val[Si a
i aにより記憶された直後の場所「a」における値を示
す。SOp SまたはFの速記記法を示す。Op L.
SまたはFの速記記法を示す。(Op;)∞ Opの無
限列を示す。
【0051】TSO公理 TSOメモリ・モデルの意味をOrder、Atomi
city、Termination、Value、Lo
adOp、StoreStoreの6つの公理で説明す
る。Order公理は、全てのStoreとFlush
esに対して部分順序(≦)が存在することを述べる。
Order公理は (SOpi a≦SOpj b)V(SOpj b≦SOpi a) と定められる。Atomicity公理は、アトミック
Load−StoreオペレーションがStoreの前
にLoadを出す、すなわち、Load−Storeオ
ペレーションのLoad部が、部分順序(≦)において
Storeより前に現われること、およびLoadとS
toreの間にメモリ順序の他のStoreを存在させ
ることができないことを述べる。Atomicity公
理は
【0052】
【数1】
【0053】と定められる。Termination公
理は、全てのStoreオペレーションとアトミックL
oad−Storeオペレーションが最後には終わるこ
とを述べる。これは、1つのプロセッサがStoreオ
ペレーションを出し、別のプロセッサが、Storeオ
ペレーションが出すのと同じメモリ場所へLoadオペ
レーションをくり返えし出すならば、部分順序(≦)で
Storeオペレーションの後であるLoadオペレー
ションが存在することを示すことにより、形式化され
る。Termination公理は下記のように定めら
れる。
【0054】
【数2】
【0055】Value公理は、データLoadの値が
最近のStoreオペレーションによりそのメモリ場所
へ書込まれた値であることを述べる。このValue公
理は下記のように定められる。
【0056】
【数3】
【0057】LoadOp公理は、Loadオペレーシ
ョンの後で出されたオペレーション中に、メモリ部分順
序(≦)で後に現われることを述べる。この公理は、後
の任意のオペレーションを出す前にLoadオペレーシ
ョンが終わるのをプロセッサが待つことを示す。Loa
dOp公理は下記のように定められる。 Li a;Opi b=>Lia≦Opj b StoreStore公理は、プロセッサにより出され
たStoreオペレーションとFlushオペレーショ
ンが、メモリ部分順序(≦)で同じ順序で現われること
を述べる。この公理は、プロセッサがStoreとFl
ushのオペレーションを出した順序と同じ順序で、メ
モリがそれらのオペレーションを実行する事実を反映す
る。StoreStore公理は下記のように定められ
る。 SOpi a;SOpi b=>SOpi a≦SOpi b
【0058】PSO公理 PSOメモリ・モデルはOrder、Atomicit
y、Termination、Value、LoadO
p、StoreStore、StoreStoreEq
の7つの公理により記述される。それらの公理は次のや
り方で定められる。Order公理は、全てのStor
eおよびFlushesに対して部分順序(≦)が存在
することを述べる。Order公理は下記のように定め
られる。 (SOpi a≦SOpj b)V(SOpj b≦SOpi a) Atomicity公理は、アトミックLoad−St
oreオペレーションがStoreの前にロードを出
す、すなわち、Load−Storeオペレーションの
ロード部が、部分順序(≦)でStoreより前に現わ
れること、およびLoadとStoreの間にメモリ順
序での他のStoreが存在できないことを述べる。こ
の公理は下記のように定められる。
【0059】
【数4】
【0060】Termination公理は、全てのS
toreオペレーションとLoad−Storeオペレ
ーションが最後には終わることを述べる。1つのプロセ
ッサがStoreオペレーションを行い、別のプロセッ
サがStoreオペレーションと同じメモリ場所に対し
てLoadオペレーションをくり返えし行うものとする
と、Storeオペレーションの後であるLoadオペ
レーションが存在することを示すことにより、この公理
は形式化される。Termination公理は下記の
ように定められる。
【0061】
【数5】
【0062】Value公理は、データ・ロードの値が
最近のStoreオペレーションによりそのメモリ場所
へ書込まれた値であることを述べる。Value公理は
下記のように定められる。
【0063】
【数6】
【0064】LoadOp公理は、Loadオペレーシ
ョンの後で出されたオペレーションにおいて、メモリ部
分順序(≦)で後の方で現われることを述べる。この公
理は、後の任意のオペレーションを出す前にロード・オ
ペレーションが終わるのをプロセッサが待つことを示
す。LoadOp公理は下記のように定められる。 Li a;Opi b=>Li a≦Opi b
【0065】StoreStore公理は、プロセッサ
の実行順序でSTBARにより分離された全てのオペレ
ーションが、メモリ部分順序(≦)における同じ順序で
現われることを述べる。この公理は、プロセッサがSt
oreオペレーションとFlushオペレーションをS
TBARにより分離するとした場合のみ、プロセッサが
それらのオペレーションを出すのと同じ順序でメモリは
それらのオペレーションを実行することを示す。Sto
reStore公理は下記のように定められる。 SOpi a;S(-);SOpi b=>SOpi a≦SOpi b
【0066】StoreStoreEq公理は、与えら
れたメモリ場所へプロセッサにより出されたStore
オペレーションとFlushオペレーションが、メモリ
部分順序(≦)での同じ順序で現われることを述べる。
この公理は、プロセッサがStoreオペレーションを
STBARで分離しなかったとしても、それらのオペレ
ーションがプロセッサにより出された順序と同じ順序
で、メモリがそれらのオペレーションを同じメモリ場所
へ記憶することを示す。StoreStoreEq公理
は下記のように定められる。 SOpi a;SOp′i a=>SOpj a≦SOp′j a
【0067】Flush公理 Flush命令は、Flushを出すプロセッサの命令
取出しを、そのプロセッサのLoads、Store、
アトミックLoad−Storesに同期させ、他の全
てのプロセッサの命令取出しに、Flushより先にF
lushターゲットに対して行われた任意のStore
を観察させる。Flushの意味がIFetchVal
ue、FlushTermination、IFetc
hlFetchの3つの公理により記述される。IFe
tchValue公理においては、K個またはそれ以上
の命令の任意の列を示すために記号「<K>」が用いられ
る。IFetchValueは、命令取出しの値が、最
近の(S;F)シーケンスによりその場所へ書込まれた
値であることを述べる。最近のそのようなシーケンスを
定めるために2つの項を組合わせる。第1の項は他のプ
ロセッサによるシーケンスに対応し、第2の項はLoa
dを出したプロセッサによるシーケンスに対応する。第
1のシーケンスセットにおいては、StoreとFlu
shを異なるプロセッサで出すことができることに注目
されたい。また、第2のシーケンスセットにおいて、F
lushの後には、Flushのターゲットへの命令取
出しの前のいくつかの仲裁命令が続かねばならないこと
にも注目されたい。IFetchValue公理は下記
のように定められる。
【0068】
【数7】
【0069】FlushTermination公理
は、1つのプロセッサにより行われたS;Fシーケンス
が、全てのプロセッサの命令取出しにより最後には観察
されることを述べる。FlushTerminatio
n公理は下記のように定められる。
【0070】
【数8】
【0071】IFetchIFetch公理は、プロセ
ッサにより出された2つの命令取出しが部分順序(≦)
での同じ順序で現われることを述べる。IFetchI
Fetch公理は下記のように定められる。 IFi a;IFi b=>IFi a≦IFi b 以上、好適な実施例と公理に関連して本発明を説明した
が、以上の説明から、数多くの代替、変更等が当業者に
は明らかであろう。
【図面の簡単な説明】
【図1】本発明の教示を含むメモリ装置へ結合された従
来のマルチプロセッサのブロック図である。
【図2】従来の強い一貫性メモリ・モデルの概念図であ
る。
【図3】本発明の教示を用いるメモリ・モデルの概念図
である。
【図4】プロセッサの概念図である。
【図5】本発明の教示を利用するトータル・ストア・オ
ーダーリング(TSO)メモリ・モデルの概念図であ
る。
【図6】本発明の教示を利用するパーシャル・ストア・
オーダーリング(PSO)の概念図である。
【図7】プロセッサのFlush命令オペレーションの
図である。
【図8】本発明の教示を用いる好適な実施例を示すマル
チプロセッサ装置の概念図である。
【図9】プロセッサのより詳しい概念図である。
【図10】外部キャッシュの概念図である。
【符号の説明】 10 メモリ装置 20,30,50,80,90 単一ポート・メモリ 40,104,106,108 プロセッサ 41 理想化したメモリ 51,52,53,54,85,86,87,98,8
80 記憶バッファ 55,89,91 スイッチ 103,105,107 外部キャッシュ 109 主メモリ 116,117 仲裁器 1104 内部キャッシュ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 プラディープ・シンドゥ アメリカ合衆国 94040 カリフォルニア 州・マウンテン ビュー・モンタルト ド ライブ・1557 (72)発明者 ミシェル・セクレオフ アメリカ合衆国 94043 カリフォルニア 州・マウンテン ビュー・ライト アヴェ ニュ ナンバー902・928 (72)発明者 マイケル・ポウェル アメリカ合衆国 94301 カリフォルニア 州・パロ アルト・エマーソン ストリー ト・2305 (72)発明者 エリック・ジェンセン アメリカ合衆国 94550 カリフォルニア 州・リバーモア・パーシェロン ロード・ 2192

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 メモリ装置へ結合され、メモリ・アドレ
    スと記憶すべきデータを有するLoad命令と、メモリ
    ・アドレスを有するStore命令とを発生し、それら
    の命令を実行するためにそれらの命令を前記メモリ装置
    へ供給する少なくとも1つのプロセッサを含むコンピュ
    ータ装置において、前記メモリ装置は、 ユーザーが前記Store命令を指定された順序で実行
    することを希望した時に、前記Store命令の実行順
    序を確実にする順序手段を含み、前記Store命令を
    記憶する記憶バッファ手段と、 データを記憶するための複数のアドレスを含み、前記記
    憶バッファ手段へ結合されて、前記Store命令を前
    記記憶バッファ手段から受けてそれらのStore命令
    を実行するメモリと、 前記記憶バッファ手段および前記プロセッサへ結合され
    て、前記プロセッサにより供給されたロード命令を検出
    し、前記ロード命令のメモリ・アドレスがStore命
    令のメモリ・アドレスと一致するならば、前記ロード命
    令に応答して前記Store命令のデータが前記プロセ
    ッサへ戻され、もし一致しなければ、前記ロード命令が
    実行のために前記メモリへ結合されるように、前記ロー
    ド命令のメモリ・アドレスを前記記憶バッファ手段内の
    Store命令のメモリ・アドレスと比較する検出手段
    と、を備えるコンピュータ装置。
  2. 【請求項2】 メモリ装置へ結合され、メモリ・アドレ
    スと記憶すべきデータを有するアトミックLoad命令
    と、メモリ・アドレスを有するアトミックStore命
    令を発生し、それらの命令を実行するためにそれらの命
    令を前記メモリ装置へ供給する少なくとも1つのプロセ
    ッサを含むコンピュータ装置において、前記メモリ装置
    は、 ユーザーが前記アトミックLoad命令と前記アトミッ
    クStore命令を指定された順序で実行することを希
    望した時に、前記アトミックLoad命令と前記アトミ
    ックStore命令の実行順序を確実にする順序手段を
    含み、前記アトミックLoad命令と前記アトミックS
    tore命令を記憶する記憶バッファ手段と、 データを記憶するための複数のアドレスを含み、前記記
    憶バッファ手段へ結合されて、前記アトミックLoad
    命令と前記アトミックStore命令を前記記憶バッフ
    ァ手段から受けてそれらのStore命令を実行するメ
    モリと、 前記記憶バッファ手段および前記プロセッサへ結合され
    て、前記プロセッサにより供給された前記アトミック・
    ロード命令と前記アトミックStore命令を検出し、
    前記アトミック・ロード命令と前記アトミックStor
    e命令のメモリ・アドレスが前記アトミック・ロード命
    令と前記アトミックStore命令のメモリ・アドレス
    と一致するならば、前記アトミック・ロード命令に応答
    して前記Store命令のデータが前記プロセッサへ戻
    され、もし一致しなければ、前記アトミック・ロード命
    令が実行のために前記メモリへ結合されるように、前記
    アトミック・ロード命令と前記アトミックStore命
    令とのメモリ・アドレスを前記記憶バッファ手段内の前
    記アトミック・ロード命令と前記アトミック・Stor
    e命令のメモリ・アドレスと比較する検出手段と、を備
    えるコンピュータ装置。
  3. 【請求項3】 メモリ装置へ結合され、メモリ・アドレ
    スと記憶すべきデータを有するLoad命令と、メモリ
    ・アドレスを有するStore命令とを発生し、それら
    の命令を実行するためにそれらの命令を前記メモリ装置
    へ供給する複数のプロセッサを含むコンピュータ装置に
    おいて、前記メモリ装置は、 前記Store命令を記憶するために各前記プロセッサ
    へ結合される記憶バッファ手段と、 データを記憶するための複数のアドレスを含み、前記記
    憶バッファ手段へ結合されて、前記Store命令を前
    記記憶バッファ手段から受けてそれらのStore命令
    を実行するメモリと、 前記記憶バッファ手段および前記プロセッサへ結合され
    て、前記プロセッサにより供給されたロード命令を検出
    し、前記Load命令のメモリ・アドレスがStore
    命令のメモリ・アドレスと一致するならば、前記Loa
    d命令に応答して前記Store命令のデータが前記プ
    ロセッサへ戻され、もし一致しなければ、前記Load
    命令が実行のために前記メモリへ結合されるように、前
    記ロード命令のメモリ・アドレスを前記記憶バッファ手
    段内のStore命令のメモリ・アドレスと比較する検
    出手段と、 前記記憶バッファ手段からの前記Store命令を実行
    のために前記メモリへ送るために前記記憶バッファ手段
    と前記メモリへ結合され、かつ前記Load命令を実行
    のために前記メモリへ送るために前記検出手段へ結合さ
    れるスイッチング手段と、を備えるコンピュータ装置。
  4. 【請求項4】 メモリ装置へ結合され、メモリ・アドレ
    スと記憶すべきデータを有するLoad命令と、メモリ
    ・アドレスを有するStore命令とを発生し、それら
    の命令を実行するためにそれらの命令を前記メモリ装置
    へ供給する複数のプロセッサを含むコンピュータ装置に
    おいて、前記メモリ装置は、 前記Store命令を所定の順序で記憶するために各前
    記プロセッサへ結合される記憶バッファ手段と、 データを記憶するための複数のアドレスを含み、前記記
    憶バッファ手段へ結合されて、前記Store命令を前
    記記憶バッファ手段から受けてそれらのStore命令
    を実行するメモリと、 前記記憶バッファ手段および前記プロセッサへ結合され
    てLoad命令を検出し、前記Load命令のメモリ・
    アドレスがStore命令のメモリ・アドレスと一致す
    るならば、前記Load命令に応答して前記Store
    命令のデータが前記プロセッサへ戻され、もし一致しな
    ければ、前記Load命令が実行のために前記メモリへ
    結合されるように、前記Load命令のメモリ・アドレ
    スを前記記憶バッファ手段内のStore命令のメモリ
    ・アドレスと比較する検出手段と、 前記記憶バッファ手段からの前記Store命令を実行
    のために前記メモリへ送るために前記記憶バッファ手段
    と前記メモリへ結合され、かつ前記Load命令を実行
    のために前記メモリへ送るために前記検出手段へ結合さ
    れるスイッチング手段と、を備えるコンピュータ装置。
  5. 【請求項5】 メモリ装置へ結合され、メモリ・アドレ
    スと記憶すべきデータを有するLoad命令と、メモリ
    ・アドレスを有するStore命令とを発生し、それら
    の命令を実行するためにそれらの命令を前記メモリ装置
    へ供給する複数のプロセッサを含むコンピュータ装置に
    おいて、前記メモリ装置は、 ユーザーが前記Store命令を指定された順序で実行
    することを希望した時に、前記Store命令の実行順
    序を確実にする順序手段を含み、前記Store命令を
    記憶する記憶バッファ手段と、 データを記憶するための複数のアドレスを含み、前記記
    憶バッファ手段へ結合されて、前記Store命令を前
    記記憶バッファ手段から受けてそれらのStore命令
    を実行するメモリと、 前記記憶バッファ手段および前記プロセッサへ結合され
    てLoad命令を検出し、前記Load命令のメモリ・
    アドレスがStore命令のメモリ・アドレスと一致す
    るならば、前記Load命令に応答して前記Store
    命令のデータが前記プロセッサへ戻され、もし一致しな
    ければ、前記Load命令が実行のために前記メモリへ
    結合されるように、前記Load命令のメモリ・アドレ
    スを前記記憶バッファ手段内のStore命令のメモリ
    ・アドレスと比較する検出手段と、 前記記憶バッファ手段からの前記Store命令を実行
    のために前記メモリへ送るために前記記憶バッファ手段
    と前記メモリへ結合され、かつ前記Load命令を実行
    のために前記メモリへ送るために前記検出手段へ結合さ
    れるスイッチング手段と、を備えるコンピュータ装置。
  6. 【請求項6】 メモリ装置へ結合される少なくとも1つ
    のプロセッサを有するコンピュータ装置のメモリ・アド
    レスと記憶すべきデータを有するLoad命令と、メモ
    リ・アドレスを有するStore命令を発生し、それら
    の命令を実行するためにそれらの命令を前記メモリ装置
    へ供給する方法において、 ユーザーが前記Store命令を指定された順序で実行
    することを希望した時に、前記Store命令の実行順
    序を確実にするようにStore命令を記憶バッファ手
    段に記憶する過程と、 データを記憶するための複数のアドレスを含み、前記記
    憶バッファ手段へ結合されているメモリ内に前記Sto
    re命令を受けて、それらのStore命令を実行する
    過程と、 前記プロセッサにより供給されたロード命令を検出する
    過程と、 を備え、この検出過程は、 前記Load命令のメモリ・アドレスを前記記憶バッフ
    ァ手段内の前記Store命令のメモリ・アドレスと比
    較する過程と、 前記Load命令のメモリ・アドレスが記憶命令のメモ
    リ・アドレスと一致する時に、前記Load命令に応答
    して前記Store命令のデータを前記プロセッサへ戻
    す過程と、 前記Load命令のメモリ・アドレスが記憶命令のメモ
    リ・アドレスと一致しなければ、前記ロード命令を前記
    データで実行する過程と、を備える方法。
  7. 【請求項7】 メモリ装置へ結合され少なくとも1つの
    プロセッサを含むコンピュータ装置のメモリ・アドレス
    と記憶すべきデータを有するLoad命令と、メモリ・
    アドレスを有するStore命令を発生し、それらの命
    令を実行するためにそれらの命令を前記メモリ装置へ供
    給する方法において、 前記Store命令を各前記プロセッサへ結合された記
    憶バッファ手段に記憶する過程と、 データを記憶するための複数のアドレスを有して前記記
    憶バッファ手段へ結合されたメモリ内の前記Store
    命令を受けて、それらのStore命令を実行する過程
    と、 前記プロセッサにより供給されたロード命令を検出手段
    で検出する過程と、を備え、この検出過程は、 前記Load命令のメモリ・アドレスを前記記憶バッフ
    ァ手段内の前記Store命令のメモリ・アドレスと比
    較する過程と、 前記Load命令のメモリ・アドレスが記憶命令のメモ
    リ・アドレスと一致する時に、前記Load命令に応答
    して前記Store命令の前記データを前記プロセッサ
    へ戻す過程と、 前記Load命令のメモリ・アドレスが記憶命令のメモ
    リ・アドレスと一致しなければ、前記記憶手段からの前
    記Store命令を実行のために前記メモリへ送り、前
    記検出手段からの前記Load命令を実行のために前記
    メモリへ送る過程と、を備える方法。
JP4149015A 1991-05-17 1992-05-18 コンピュータ装置およびロード命令と記憶命令を発生し、実行するために記憶装置へ供給する方法 Pending JPH05233421A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/702,781 US5265233A (en) 1991-05-17 1991-05-17 Method and apparatus for providing total and partial store ordering for a memory in multi-processor system
US702781 1991-05-17

Publications (1)

Publication Number Publication Date
JPH05233421A true JPH05233421A (ja) 1993-09-10

Family

ID=24822571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4149015A Pending JPH05233421A (ja) 1991-05-17 1992-05-18 コンピュータ装置およびロード命令と記憶命令を発生し、実行するために記憶装置へ供給する方法

Country Status (5)

Country Link
US (1) US5265233A (ja)
EP (1) EP0514024B1 (ja)
JP (1) JPH05233421A (ja)
KR (1) KR100243853B1 (ja)
DE (1) DE69231197T2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002189629A (ja) * 2000-08-23 2002-07-05 Nintendo Co Ltd 機能拡張型メモリコントローラを備えるグラフィックス処理システム
WO2008155827A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited キャッシュ制御装置及び制御方法
JP2010134928A (ja) * 2008-12-04 2010-06-17 Korea Electronics Telecommun 多重プロセッサを含むメモリアクセス装置
JP2014174868A (ja) * 2013-03-12 2014-09-22 Nec Corp メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5398325A (en) * 1992-05-07 1995-03-14 Sun Microsystems, Inc. Methods and apparatus for improving cache consistency using a single copy of a cache tag memory in multiple processor computer systems
US5434993A (en) * 1992-11-09 1995-07-18 Sun Microsystems, Inc. Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories
US6144930A (en) * 1993-06-09 2000-11-07 Compaq Computer Corporation Method for providing a memory model of a memory device for use in simulation
US5506967A (en) * 1993-06-15 1996-04-09 Unisys Corporation Storage queue with adjustable level thresholds for cache invalidation systems in cache oriented computer architectures
EP0679990B1 (en) * 1994-04-28 2000-03-01 Hewlett-Packard Company A computer apparatus having a means to force sequential instruction execution
US5745732A (en) * 1994-11-15 1998-04-28 Cherukuri; Ravikrishna V. Computer system including system controller with a write buffer and plural read buffers for decoupled busses
US5699538A (en) * 1994-12-09 1997-12-16 International Business Machines Corporation Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor
US6073211A (en) * 1994-12-13 2000-06-06 International Business Machines Corporation Method and system for memory updates within a multiprocessor data processing system
US5692153A (en) * 1995-03-16 1997-11-25 International Business Machines Corporation Method and system for verifying execution order within a multiprocessor data processing system
US5822553A (en) * 1996-03-13 1998-10-13 Diamond Multimedia Systems, Inc. Multiple parallel digital data stream channel controller architecture
US5797043A (en) * 1996-03-13 1998-08-18 Diamond Multimedia Systems, Inc. System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US5778244A (en) * 1996-10-07 1998-07-07 Timeplex, Inc. Digital signal processing unit using digital signal processor array with recirculation
US6748493B1 (en) 1998-11-30 2004-06-08 International Business Machines Corporation Method and apparatus for managing memory operations in a data processing system using a store buffer
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US6678807B2 (en) * 2000-12-21 2004-01-13 Intel Corporation System and method for multiple store buffer forwarding in a system with a restrictive memory model
US20050210204A1 (en) * 2003-01-27 2005-09-22 Fujitsu Limited Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method
JP4180569B2 (ja) * 2003-01-27 2008-11-12 富士通株式会社 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法
US7360035B2 (en) 2004-09-01 2008-04-15 International Business Machines Corporation Atomic read/write support in a multi-module memory configuration
US7606998B2 (en) * 2004-09-10 2009-10-20 Cavium Networks, Inc. Store instruction ordering for multi-core processor
KR101635395B1 (ko) * 2010-03-10 2016-07-01 삼성전자주식회사 멀티포트 데이터 캐시 장치 및 멀티포트 데이터 캐시 장치의 제어 방법
US9052890B2 (en) 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
US8713259B2 (en) * 2010-11-17 2014-04-29 Advanced Micro Devices, Inc. Method and apparatus for reacquiring lines in a cache
US9361103B2 (en) * 2012-11-02 2016-06-07 Advanced Micro Devices, Inc. Store replay policy
US10345883B2 (en) 2016-05-31 2019-07-09 Taiwan Semiconductor Manufacturing Co., Ltd. Power estimation
US11914511B2 (en) * 2020-06-22 2024-02-27 Apple Inc. Decoupling atomicity from operation size

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4136386A (en) * 1977-10-06 1979-01-23 International Business Machines Corporation Backing store access coordination in a multi-processor system
JPS621067A (ja) * 1985-02-25 1987-01-07 Hitachi Ltd ベクトル処理装置
JPH0731669B2 (ja) * 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
US5023776A (en) * 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage
US5148536A (en) * 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
US5043886A (en) * 1988-09-16 1991-08-27 Digital Equipment Corporation Load/store with write-intent for write-back caches
US4905141A (en) * 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
US5201041A (en) * 1988-12-29 1993-04-06 International Business Machines Corporation Cache bypass apparatus
US5202972A (en) * 1988-12-29 1993-04-13 International Business Machines Corporation Store buffer apparatus in a multiprocessor system
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002189629A (ja) * 2000-08-23 2002-07-05 Nintendo Co Ltd 機能拡張型メモリコントローラを備えるグラフィックス処理システム
JP2012089158A (ja) * 2000-08-23 2012-05-10 Nintendo Co Ltd 機能拡張型メモリコントローラを備えるグラフィックス処理システム
WO2008155827A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited キャッシュ制御装置及び制御方法
JPWO2008155827A1 (ja) * 2007-06-20 2010-08-26 富士通株式会社 キャッシュ制御装置及び制御方法
US8261021B2 (en) 2007-06-20 2012-09-04 Fujitsu Limited Cache control device and control method
JP2010134928A (ja) * 2008-12-04 2010-06-17 Korea Electronics Telecommun 多重プロセッサを含むメモリアクセス装置
US8244987B2 (en) 2008-12-04 2012-08-14 Electronics And Telecommunications Research Institute Memory access device including multiple processors
JP2014174868A (ja) * 2013-03-12 2014-09-22 Nec Corp メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。

Also Published As

Publication number Publication date
US5265233A (en) 1993-11-23
EP0514024A2 (en) 1992-11-19
DE69231197T2 (de) 2001-03-15
DE69231197D1 (de) 2000-08-03
KR920022101A (ko) 1992-12-19
EP0514024B1 (en) 2000-06-28
EP0514024A3 (ja) 1994-05-04
KR100243853B1 (ko) 2000-02-01

Similar Documents

Publication Publication Date Title
JPH05233421A (ja) コンピュータ装置およびロード命令と記憶命令を発生し、実行するために記憶装置へ供給する方法
US9842056B2 (en) Systems and methods for non-blocking implementation of cache flush instructions
US7073043B2 (en) Multiprocessor system supporting multiple outstanding TLBI operations per partition
EP1311956B1 (en) Method and apparatus for pipelining ordered input/output transactions in a cache coherent, multi-processor system
US7133968B2 (en) Method and apparatus for resolving additional load misses in a single pipeline processor under stalls of instructions not accessing memory-mapped I/O regions
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
US7617378B2 (en) Multiprocessor system with retry-less TLBI protocol
US5551005A (en) Apparatus and method of handling race conditions in mesi-based multiprocessor system with private caches
US6266768B1 (en) System and method for permitting out-of-order execution of load instructions
US6263404B1 (en) Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
JPH0561770A (ja) データ処理システムのコヒーレンス手段
KR19980063489A (ko) 멀티스레드 프로세서의 명령어 및 연관된 인출 요청의 백그라운드 완료
JPH06318177A (ja) キャッシュ・ミス・ペナルティを減少させる方法、装置及びコンピュータ・システム
US20090106498A1 (en) Coherent dram prefetcher
US20040123078A1 (en) Method and apparatus for processing a load-lock instruction using a scoreboard mechanism
US5621896A (en) Data processor with unified store queue permitting hit under miss memory accesses
US6301654B1 (en) System and method for permitting out-of-order execution of load and store instructions
US7080209B2 (en) Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
JPH0670779B2 (ja) フェッチ方法
JP3431850B2 (ja) 同期化するための処理を行う方法およびデータ処理システム
EP2284711A1 (en) Decoupled store address and data in a multiprocessor system
JP2004520634A (ja) ロード命令を処理するための方法および装置
JPH11272466A (ja) ロ―ド/ロ―ド検出及びリオ―ダ―方法及び装置
EP1039377A1 (en) System and method supporting multiple outstanding requests to multiple targets of a memory hierarchy
WO2001084304A2 (en) Active address content addressable memory

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040706