JPH0677233B2 - データ処理システム - Google Patents

データ処理システム

Info

Publication number
JPH0677233B2
JPH0677233B2 JP2330983A JP33098390A JPH0677233B2 JP H0677233 B2 JPH0677233 B2 JP H0677233B2 JP 2330983 A JP2330983 A JP 2330983A JP 33098390 A JP33098390 A JP 33098390A JP H0677233 B2 JPH0677233 B2 JP H0677233B2
Authority
JP
Japan
Prior art keywords
fetch
instruction
oos
entry
operand
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.)
Expired - Lifetime
Application number
JP2330983A
Other languages
English (en)
Other versions
JPH03201130A (ja
Inventor
ブラツドリー・ジヨージ・フレイ
レイマンド・ジエームス・ピーダスン
Original Assignee
インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
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 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン filed Critical インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Publication of JPH03201130A publication Critical patent/JPH03201130A/ja
Publication of JPH0677233B2 publication Critical patent/JPH0677233B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明は、オペランド・フェッチの順序付けの際にプロ
グラムによって指定された概念的順序からの逸脱を可能
にし、同時に多重処理(MP)環境において概念的順序と
同じプログラム実行結果を得ることのできる手段に関す
る。順序外れフェッチは、システム性能を大きく改善す
ることができる。
B.従来の技術 コンピュータ・プログラムによって得られる特定の機能
は、その命令の「概念的順序」、すなわちプログラムに
書かれた命令の順序に従属する。メモリ・ストア及びフ
ェッチ動作の「概念的順序」も、同様に、書かれた命令
の順序によって決まる。すなわち、各プログラムは、そ
の命令及びそれらの命令のフェッチ及びストアを概念的
順序で処理するものと期待される。このように、通常の
CPUは、プログラム設計者がそのプログラムに期待する
プログラム結果をシステム記憶装置内でもたらすため、
プログラム実行中、フェッチ及びストアの概念的順序を
維持する。
多重処理(MP)システムでは、プロセッサによるオペラ
ンド・フェッチが、実行プログラムの命令シーケンスに
よって指定されるオペランドの順序と異なる順序をもつ
ことが許されている場合、間違ったデータがMPシステム
内のいずれかのプロセッサによってフェッチされる可能
性がある。
間違ったデータが扱われる問題の例として、第2A図に示
す次のような単純なケースが挙げられる。
1.プログラムAとBが、MP内のそれぞれ異なるプロセッ
サaとbで実行されている。各プロセッサは、そのプロ
セッサが実行しているプログラムによって指定された順
序でフェッチ及びストアを完了する。すなわち、各プロ
セッサは、それぞれのプログラムの概念的順序オペラン
ドにアクセスする。
2.プログラムAは、位置xへのストア(すなわちSTx)
と、それに続いて位置yへのストア(すなわちSTy)を
含む命令シーケンスをもつ。ストアの順序は、STx・・
・STyである。
3.プログラムBは、位置yからのデータYをロードする
ロード命令Lyと、それに続いて位置xからのデータXを
ロードするロード命令Lxをもつ。ロード命令の順序は、
Ly・・・Lxであり、これは他のプロセッサ上での他方の
プログラムによるストア命令の順序STx...STyの逆にな
っている。
4.第2A図に示したケース1ないしケース6は、プログラ
ムBによって位置x及びyからフェッチ可能なオペラン
ド・データ値の可能なすべての組合せ(YX,YX′または
Y′X′)を表している。
5.YX,YX′またはY′X′のうちのどの組合せが、プロ
グラムBによって位置x及びyからフェッチされるか
は、プログラムBによるフェッチに対して、プログラム
Aがそのストアを行なう時間が前か後かによって決ま
る。フェッチされた組合せは、プログラムAとBの両方
がそれらのオペランドに概念的順序でアクセスした場合
には、アーキテクチャ的に正しいデータである。
6.しかし、プログラムB内のいれかのオペランドが、そ
の概念的順序でアクセスされない(すなわち、順序外
れ、OOS)場合は、このOOS状態によって、概念的順序ア
ーキテクチャ規則の下でプログラムが必要とするアーキ
テクチャ上正しいデータではなく、間違ったデータがフ
ェッチされることがあり得る。
7.たとえば、プログラムAとBの概念的順序がケース1
を生じさせる場合、その結果得られる必要なデータはYX
である。しかし、ケース1で、データYの第1オペラン
ド・フェッチがキャッシュ・ミスによって遅延し、デー
タXの第2オペランド・フェッチが遅延なくキャッシュ
内でアクセスされた場合、位置Yへのストアによってデ
ータYがY′に変更された後に、オペランドYが得られ
る。したがって、OOS状態によって、概念的順序アーキ
テクチャ規則の求める組合せYXではなく、アーキテクチ
ャ上不可能な組合せY′Xがフェッチされる。
概念的順序アーキテクチャ規則の違反を避けるために、
従来のコンピユータ・システムは、プログラム・シーケ
ンス内の直前の命令の実行が完了するまで、プログラム
内の次の命令の実行を開始しないで、概念的順序を維持
していた。したがって、プログラム・シーケンス内の次
の命令に対するメモリ・フェッチまたはストアは、プロ
グラム・シーケンス内の先行命令の実行が完了するまで
遅延された。どの命令内でもすべてのメモリ・フェッチ
及びストアが、それぞれの命令のアーキテクチャによっ
て指定される順序で実行された。
しかし、従来技術では、CPUがオペランドをフェッチ及
びストアする実際の順序をその概念的順序から変更した
にもかわらず、正しいプログラム結果を得たという、特
別のケースが開示されている。もうした従来技術の1つ
は、先行ストア・オペランドに対する従属性を検出する
ものである。これは、各オペランド・フェッチ要求のア
ドレスを先行する未完了の各オペランド・ストア要求の
アドレスと比較することによって実行され、比較した結
果等しくなかった場合は、先行ストアに対する従属性の
衝突は存在しなかったことになる。
大型CPUは、長年にわたって、特定のタイプの命令オー
バラップを使用してきた。このようなオーバラップした
実行には、ある程度の順序外れの実行を可能にする様々
な技法が必要であった。従来のオーバラップ技法は、多
数の異なる形態をとり、各技法はそれぞれ特有の制御上
の問題を伴っていた。これらの技法にいくつかは、複数
の実行装置を有するCPUを含むパイプライン式CPUで使用
された。それらの技法は、様々なタイプの従属性検出技
法を使用して、様々な実行状態で複数の命令が、それら
の実行をオーバラップする際に遭遇するいくつのタイプ
の問題を回避することができた。これらの技法は、命令
間の従属性を検出するために制御論理を使用して、これ
らの命令をオーバラップせずに、すなわち概念的順序に
従って1時に1つずつ実行した場合に得られるのと同じ
実行結果を確保することができた。
これらの従来のシステムは、命令オーバラップを制御す
るために、各命令に対する実行の終了を認識する命令完
了制御を使用して、それぞれの命令のフェッチ・オペラ
ンド及びストア・オペランドを相関させていた。
プログラムへの割込みは、通常、大部分の命令の実行の
完了時、及びシーケンス内の次の命令の実行開始前に許
されていた。未処理のフェッチ・オペランド及びストア
・オペランドをすべて獲得しないと、どの命令の実行も
完了できず、またそのような命令に対する確り込みも開
始できない。たとえば、割込みは、命令ストリームによ
って直列化される。直列化により、プログラム割込みが
オペランド・フェッチ及びオペランド・ストアの順序付
けに干渉することが防止される。長い実行時間を要する
命令だけは、その完了前に、かつそのとき未処理のフェ
ッチ及びストアの完了時にのみ、割込みを受けることが
できた。この未処理のフェッチおよびストアの完了によ
り、割込みが許される一時的命令停止時点が定義され
た。
また従来技術では、ある命令の実行に必要なフェッチさ
れたデータを受け取るために予約されたCPUレジスタの
サブセットが、フェッチされたデータを適切に受け取る
よう保証するために、メモリに対するオペランド・フェ
ッチ要求のタグ付けが行なわれた。各レジスタは、メモ
リからフェッチ・データが得られ、べてのレジスタに通
じる共通データ・バス上に置かれたとき、そのバス上で
フェッチされたデータと共に送られたタグを、予約れた
レジスタに記憶れたタグと比較する比較手段をもってい
た。比較の結果等しかった場合のみ、フェッチされたデ
ータは、予約されたレジスタのサブセットに入ることが
できた。
また従来システムでは、ある種の命令は、オーバラップ
を使用することができなかった。たとえば、S/370アー
キテクチャにおける直列化命令は、すべての先行命令が
実行を完了するまで実行を開始できない。直列化動作の
1つは、先行命令が、べてのオペランド・フェッチ及び
ストアをプログラム順序で完了し、他のCPU及びチャネ
ル・プログラムもこの順序を守ることである。このよう
な命令の例には、S/370の比較後スワップ命令や、テス
ト後セット命令などがある。他の多数の直列化命令が、
「IBM ESA/370解説書(Principles of Operation)」、
(資料番号SA22−7200−0)のpp.5−76及び5−77に記
載されている。
特開昭63−293639号公報は、フェッチ要求が、当該のフ
ェッチ要求を出した命令の概念的順序から外れてそのデ
ータを返されることを検出する、CPUの実行装置用のモ
ニタ手段を開示している。テーブル(すなわちスタッ
ク)に、メモリ・フェッチ要求に対するエントリを設け
る。各テーブル・エントリは、メモリ・アドレス、その
命令を識別するタグ、エントリ内のフィールドが満杯で
あるか否かを示す満/空フラグ、及び満杯のエントリが
有効か否かを示す有効フラグ・ビットを含め、フェチ要
求を表すフィールドを含む。各エントリは、無効にされ
るまでスタック内に残る。エントリは、無効にされる
と、新しいフェッチ要求のために使用できるようにな
る。テスト・アドレスは、ストア・アドレス、及び相互
無効化(XI)要求アドレスによって提供される。エント
リは、そのフェッチ・アドレス・フィールドがオペラン
ド・ストア比較動作の方法で比較してテスト・アドレス
と等しい場合、無効とマークされる。しかし、キャッシ
ュ・ミスまたは直列化事象が発生すると、スタック内の
すべてのエントリが、無効とマークされる。エントリが
無効にされると、それが順序外れの可能性のあるフェッ
チ要求を表していることを示す。
特定のオペランド・ストア比較に関する問題は、IBMテ
クニカル・ディスクロージャ・ブルテン、1985年12月、
pp.3173−3174に所載の“Handling of Fetches Subsequ
ent to Unexpected Stores"と題する論文に記載されて
いる。
ノイマン型コンピュータ・システムの基本的アーキテク
チャは、プログラムに対する意図した実行結果を得るた
めには、そのプログラム内の命令が「概念的順序」にな
っていることを必要とする。このアーキテクチャは、シ
ステムの主記憶装置(システム・メモリまたはジャスト
・メモリとも呼ばれる)内でオペランドを提供し、オペ
ランドを主記憶装置からフェッチし、主記憶装置に記憶
することを必要とする。プログラムが単一プロセッサ・
システム(UP)で実行されようと、多重プロセッサ・シ
ステム(MP)で実行されようと、これらの同じアーキテ
クチャ要件が存在する。
C.発明が解決しようとする課題 したがって、ノイマン型コンピュータ・システムの基本
的アーキテクチャは、プログラムの結果に“概念的順
序」という制約を課す。このような結果は、オペランド
・データのフェッチ(「フェッチ」と呼ぶ)と、他のフ
ェッチ及びオペランド・データの記憶(「ストア」と呼
ぶ)との時間的関係を使用することによって得られる。
プログラム実行の結果は、命令オペランド・アクセスの
概念的順序の影響を受けるので、記憶装置における任意
のオペランド・アクセスが命令の概念的順序によって必
要とされる順序になっていない場合に、プログラム実行
の結果が変更されてはならない。従来は、概念的順序が
後のオペランド記憶データは、記憶装置アクセスの実際
の順序で後でアクセスされていた。
D.課題を解決するための手段 本発明は、共通の記憶装置にアクセスする複数のプロセ
ッサに対して単一の記憶装置のイメージを維持すること
に関する。本発明は、ある種の従来のMPシステムで偶然
に起こりうる、単一イメージ概念の崩壊を回避する。
本発明は、オペランド・フェッチを順序付ける際に、プ
ログラムによって指定された概念的順序からのある程度
の逸脱を可能にする手段を提供する。フェッチの順序付
けの際に逸脱が許されるので、多重プロセッサ(MP)環
境における概念的順序と同じプログラム実行の結果が得
られ、かつシステム性能の大きな向上がもたされる。
本明発は、フェッチ・オペランド・データに対する記憶
装置要求が、それらのデータを要求された順序とは異な
る順序で返す、様々な種類の条件を扱う。このようなフ
ェッチを、以後順序外れ(OOS)フェッチと呼ぶ。オペ
ランド・データのOOSフェッチは、概念的順序と呼ばれ
るフェッチ・オペランド・シーケンスの復号された順序
に対して、返されるデータの順序を変える条件によって
OOSになる。いくつかの条件が、フェッチ要求を概念的
順序から外させることができる。たとえば、各フェッチ
要求が記憶装置に発行できる形になると直ちに、そのフ
ェッチ要求が記憶装置に発行されるのがその例である。
オペランド・フェッチ動作をOOSにすることのできる条
件としては、以下のものがある。1.記憶装置へのフェッ
チ要求の発行を遅延させる(たとえば、ある要求に対す
るアドレスを生成する際の遅延)。2.オペランド・デー
タの返送をスピードアップする(たとえば、オペランド
・データをフェッチするために記憶装に行かないで、そ
の実行装置内のストア・バッファ(SB)からそのデータ
をフェッチする)。3.オペランド・データの返送を遅延
させる(たとえば、フェッチ要求がキャッシュ・ミスと
なり、そのデータを記憶階層から得なければならないと
き)。または4.直列化命令のオペランドのフェッチを、
その完了前に、直列化命令より前にある命令のオペラン
ド、または直列化命令より後にある命令のオペランドへ
のアクセスとオーバラップさせる。直列化命令オペラン
ドも、OOSにすることができ、かつ他の命令のオペラン
ドとオーバラップさせることができる。
さらに、本発明は、任意の1つのフェッチ・オペランド
に対して、前段落で列挙した複数の条件が同時に存在す
るときに発生する、フェッチ・オペランドに対する複数
のOOS条件を扱うことができる。1つのフェッチ・オペ
ランドに対して存在できる同時OOS条件の許容される組
合せには、前段階で列挙した条件の各種の組合せが含ま
れる。ただし、キャッシュ・ミスと、SBからのフェッチ
は同時には存在できないが、それ以外の組合せなら2
重、3重などで存在することができる。
本発明によれば、フェッチを、他のフェッチ及びストア
に対して、プログラム指定された順序で制御された形で
順序を付け直すことが可能である。本発明では、プログ
ラムで指定されたオペランド・ストアまたは命令完了の
順序に実行の順序を変える必要はない。フェッチもスト
アも、命令完了時にはその概念的順序を保持し、それに
よって同じプログラム結果を維持することができる。
本発明は、暗示的にまたは明示的に、コンピュータ・シ
ステムの記憶階層の使用において次の要件を仮定する。
(1)フェッチは、プログラムで指定された順序で起こ
るように見えなければならない。(2)ストアは、プロ
グラムで指定された順序で起こるように見えなければな
らない。(3)所与の命令のためのストアが、そのCPU
には、後続の各命令のためのオペランド・フェッチに先
行するように見えなければならない。(4)所与の記憶
アドレスへのフェッチが、最近のストアからのデータを
そのアドレスに返さなければならない。(5)多重プロ
セッサ内のすべてのプロセッサに単一の記憶装置イメー
ジが見えなければならない。すなわち、すべてのプロセ
ッサに、記憶位置に対する同じ変更が同じ相対的順序で
見えなければならない。
本発明は、順序外れでフェッチを実行する際に、フェッ
チされたデータが、同じフェッチが概念的順序で行なわ
れた場合に得られるはずのデータと異なるときに、間違
ったプログラム結果が発生する危険を防止する、特別の
制御を提供する。
概念的順序より前に返されるフェッチ(早期フェッチ)
を考える。このフェッチは、以前のストアによって変更
されたデータをフェッチする必要があるが、フェッチが
順序外れであるためにこのストアがまだ起こっていない
場合には、間違ったデータを得ることがある。この場
合、早期フェッチは、変更されたデータを返すべきとき
に、未変更のデータを返す。この問題は、データが同じ
CPUによって変更されたか、異なるCPUによって変更され
たかに関係なく存在する。
ここで、早期フェッチからその概念的順序までの間には
ストアが行なわれないと仮定する。そうすると、早期フ
ェッチまたは概念的順序のフェッチによって同じデータ
がアクセスされる。早期フェッチを使用することによ
り、その命令が概念的順序で完了したときに害が生じる
ことはない。
次に、概念的順序より後に実行されるフェッチ(遅延フ
ェッチ)を考える。遅延フェッチでは、同じアドレスに
あるデータを変更する概念的順序が後にストアが、この
遅延フェッチがそのデータにアクセスする前に起こる場
合にのみ、間違ったプログラム結果が得られる。この場
合、遅延フェッチは、概念的順序で実行された場合に返
すはずのデータとは異なるデータを返す。
ここで、前の概念的順序から遅延フエッチまでの間には
ストアが行なわれないと仮定する。そうすると、遅延フ
ェッチまたは概念的順序のフェッチによって同じデータ
がアクセスされる。遅延フェッチを使用することによ
り、その命令が概念的順序で完了したときに害が生じる
ことはない。
本発明は、間違ったデータを得たかフェッチがあるかど
うかを判定するために、並べ換えられた(概念的順序外
れ)フェッチを検出することにより、間違ったプログラ
ム結果の生じる危険(露出)を検出するものである。
本発明は、共通記憶装置に緊密結合されたすべてのプロ
セッサに、それぞれのプロセッサが概念的順序で命令を
実行している場合に見えるはずのものと同じデータが記
憶装置内で見えなければならないという規則が遵守され
ることを保証する。
あるOOSフェッチについて間違った結果が発生する危険
が検出されたときは、たとえば、プログラムの危険にさ
らされたフェッチをもつ部分をその危険が存在し得ない
ような形で再実行することにより、その危険が回避され
るような形でデータを再フェッチすることによって矯正
される。
検出された危険を矯正するための多数の異なる実施態様
は自明であろう。実施態様のうちには、危険にさらされ
たフェッチの前または後の危険にさらされていないフェ
ッチも再実行することが必要となるものもある。このよ
うな余り正確でない実施態様は、その実施が簡単になる
ことがある。
フェッチ及びストアの順序は、各オペランドに、概念的
順序でその位置を指定する識別子を割り当てることによ
って決定できる。これは、概念的順序を表すIID(命令
識別子)をオペランドに割り当てることによって、たと
えば概念的順序が次の命令に割り当てられる次のIIDを
それぞれ1ずつ増分することによって行なうのが好都合
である。1つの命令内の複数のオペランドに対するIID
が同じ場合は、それらのオペランドはその命令を実行す
るためのグループとしてまとめられるので、問題は生じ
ない。大部分のコンピュータ・アーキテクチャは、どの
命令に対しても1つのストア・オペランドしか提出しな
い。そのストア・オペランドにも、その命令のIIDが与
えられる。それらのオペランドを区別する別々のオペラ
ンド識別子を、命令内部でオペランドに割り当てること
もできる。
このような場合、オペランドの概念的順序は、それに割
り当てられるIIDの順序によって示される。概念的順序
における各オペランドのIDDは、先行オペランドのIIDよ
り大きい、または等しい。また、概念的順序における各
オペランドのIIDは、後続オペランドのIIDより小さい、
または等しい。これらの不等関係が、本発明で順序外れ
(OOS)オペランドの検出に使用される。したがって、
のIIDが、時間順序が後のオペランドのIIDより大きいと
き、または時間順序が先のオペランドのIIDより小さい
とき、順序外れ(OOS)オペランドが検出される。
どのフェッチまたはストア動作も、多数の副動作を含
む。たとえば、命令装置によるオペランドの有効アドレ
スの生成、オペランド・データに対するキャッシュ記憶
域の要求、記憶装置内でデータがアクセスされるまでの
待機、及びフェッチ要求されたデータの返送、またはス
トア要求されたデータがストアされたことを示すストア
肯定応答信号の返送が含まれる。データ・アクセスの完
了を待つ時間は、L1キャッシュ・ヒットが起こった場合
の1サイクル待ちから、L2キャッシュ、L3主記憶装置、
及びDASDバックアップ記憶装置を含む記憶階層でデータ
にアクセスすることを必要とするL1キャッシュ・ミスが
起こった場合の数十サイクルまで様々である。
ストアは、実行装置でストア肯定応答信号を受け取った
ときに行なわれる。フェッチは、そのデータが記憶装置
から返されたときに行なわれる。データのデータをフェ
ッチが使用できるようになる通常の時点は、ストア肯定
応答信号を受け取った後である。本発明では、実行装置
内のストア・バッファ(SB)からのフェッチも可能であ
る。このフェッチは、ストア肯定応答信号より時間的に
早く、ストアされたデータがSB内でフェッチのために使
用できることが確認される。
多重プロセッサ複合体(MP)におけるストアは、ローカ
ル・ストアとリモート・ストアに分類できる。ローカル
・ストアは、ストアされたデータをフェッチするプロセ
ッサと同じプロセッサによって実行される。リモート・
ストアは、ストアされたデータをフェッチするプロセッ
サと異なるプロセッサによって実行される。リモート・
ストアは、相互無効化(XI)要求によって、ローカル・
プロセッサに知らされる。
フェッチは、そのデータが記憶階層からCPU内の実行装
置に返されるときに行なわれる。返されたデータは、も
はや、あるプロセッサのL1キャッシュからのデータ単位
のローカル・コピーを、別のプロセッサが同じデータ単
位にストアを行ないたいときに、除去するための相互無
効化(XI)信号など、記憶階層内の事象の影響を受けな
い。フェッチされたオペランド・データの返送時間によ
って、そのフェッチが早期と見なされるか、遅延と見な
されるかが決まる。
多重プロセッサ複合体(MP)におけるフェッチは、ロー
カル・フェッチとリモート・フェッチに分類できる。ロ
ーカル・フェッチは、L1キャッシュ内にフェッチ・デー
タを有するプロセッサと同じプロセッサによって要求さ
れる。リモート・フェッチは、異なるプロセッサに対し
て要求される。リモート・フェッチは、リモート・プロ
セッサが、たとえばデータ単位への書込みのためのデー
タ単位に対する排他的制御を要求するときに行なわれ、
その後、対応するデータ単位を無効にするために、ロー
カルCPUに相互無効化(XI)要求が送られる。
フェッチは、順序外れ(OOS)で要求されることがあ
る。あるいは、フェッチが順序通り要求されたときで
も、順序外れ(OOS)になることがある。たとえば、キ
ャッシュ・ミスまたは前のフェッチ動作時のインターロ
ックによって、その返されたデータ単位が遅延したとき
がそうである。あるいは、たとえばキャッシュからでは
なくローカル・ストア・バッファ内でアクセスすること
によってフェッチがスピードアップされて順序外れにさ
れることがある。あるいは、直列化命令に隣接するフェ
ッチのように、アーキテクチャ上OOS(本明細書では、
疑似OOSと呼ぶ)と見なされることがある。
フェッチ要求は、後続のストアがフェッチより概念的順
序が前であるとき、そのストア要求と同じアドレス(す
なわち、同じデータ単位)に対するものとなることがあ
る。このとき、「オペランド・ストア比較(OSC)」状
態が存在する。パイプライン化されオーバラップされた
従来技術のプロセッサは、前の命令によってフェッチ要
求されたアドレスにデータがストアされるまで後の命令
を待機させて、概念的順序を維持するため、概念的順序
に並んだオペランドをもつOSC検出/制御手段に使用し
ていた。しかし、従来のOSC制御手段は、本発明の場合
のようにOOSフェッチを許すことによって生じるOSC状態
は検出しない。
ストアが行なわれる前にOSCが検出された場合、影響を
受けるフェッチは、そのストアが完了するまで(OSC制
御手段にストア完了を報告する記憶手段によって)保持
される。しかし、間違ったデータを得た可能性のあるOO
Sフェッチに対してOSC状態が検出された場合、本発明で
は、ストアが完了した後で、正しいデータを得るため
に、要求されたアドレスからデータを再フェッチするた
め再試行させる。この再試行には、OOSフェッチ動作、
または概念的順序のフェッチ動作が含まれる。OOSフェ
ッチ動作に対するこのOSCは、MP内のXIヒット・データ
の場合は本発明によって解決され、UP内で他のOOSフェ
ッチに対しては標準技法が使用される。
ここに記述する実施例は、OOSであるフェッチ動作の検
出に関するもので、MP環境内でOOSフェッチ条件の下で
記憶装置の保全性を維持するための機構を提供する。
OOSフェッチを検出するための手段は、次のものを含
む。
(1)キャッシュ・ミスが記憶階層で処理されている間
に、キャッシュ内のOOSフェッチ要求を処理するための
特殊制御機構。これらのキャッシュ制御が呼び出される
と、OOSフェッチがキャッシュ・ミスとなったために遅
延であること、または前の要求がキャッシュ・ミスでま
だ戻されないうちにOOSフェッチがキャッシュ・ヒット
となったために早期であることを示す。XIヒットのOSC
をもつOOSフェッチは、これらの特殊制御機構によって
処理される。
(2)これらの特殊制御機構は、命令がOOSフェッチに
なるのを検出するために、それらの命令の有効アドレス
(EA)が生成されてキャッシュに発行されている間に、
命令の復号されたフェッチ・オペランド指定とともに動
作する。これらの特殊制御機構は、OOSフェッチIIDが、
生成されたがまだ要求されていないEAのIIDよりも大き
いとき、EAが生成された要求に対するOOSフェッチをL1
キャッシュに知らせる。
(3)フェッチ、ストア、及び直列化命令など他の事象
の間の特殊タイミング関係を指定するアーキテクチャ規
則から逸脱した疑似OOSフェッチを処理するための特殊
制御機構。
本発明は、OOSフェッチ状況でデータの保全性を維持す
るため、次の手段を含む。
(1)フェッチがOOSか疑似OOSかを判定する手段、 (2)別のCPUのXI要求が、OOSフェッチ露出ウィンドウ
中で発生しているのを検出する手段、 (3)正しいプログラム結果を確保するために非OOS条
件の下でそのデータを再フェッチすることにより、OOS
フェッチ露出ウィンドウ中で発生しているXIをもつプロ
グラムの命令の実行を繰り返す手段。
XI検出手段は、未処理のOOSフェッチ要求が必要とする
キャッシュ・データ単位をプロセッサ内で見つけるため
にキャッシュ・ディレクトリ・エントリを用いてアクセ
スされる、ディレクトリ・アレイ手段を含むことができ
る。XI要求がOOSフェッチ要求を受け取っているキャッ
シュ・データ単位に対するものであることをXI検出手段
が見つけた場合、キャッシュ・ディレクトリ手段は、そ
のXI要求がOOSフェッチ露出ウィンドウと衝突する可能
性があり、正しいプログラム結果を確保するために、プ
ログラムの当該部分に対して再実行を行なうべきである
との情報をそのフェッチ要求提供手段に送る。フェッチ
要求に対するOOS指示は、プログラムの当該部分が再試
行されるとき除去される。再試行手段は、引き続きOOS
フェッチ条件に服し、OOS露出の検出によって必要とな
ったとき再試行を行なわせる。
尚、再試行という解決方法を使用したOOSフェッチ露出
ウィンドウの過剰指示は、正しいプログラム・システム
動作をもたらすが、実施が経済的になるのと引き替えに
性能が多少低下する。
したがって、本発明の目的は、実行中の任意のプログラ
ム内の命令の概念的順序によって決まる実行結果を得な
がら、プロセッサがメモリから、他の命令のフェッチ・
オペランドに対して順序外れのオペランド・データをフ
ェッチできるようにすることである。
本発明の別の目的は、1つまたは複数の先行フェッチ・
オペランドがそのアドレス生成の遅延によって順序外れ
になったとき、それらのフェッチ・オペランドをフェッ
チできるようにすることである。
本発明の別の目的は、先行フェッチ・オペランドがキャ
ッシュ・ミスのとき、それらのフェッチ・オペランドに
アクセスできるようにすることである。
本発明の別の目的は、CPU実行装置内のストア・バッフ
ァからのデータを、そのストア・バッファ・データがCP
Uキャッシュに記憶される前に、フェッチできるように
することである。
本発明の別の目的は、同時に存在する複数のOOS状態を
もつフェッチ・オペランドに対する順序外れ(OOS)フ
ェッチを可能にすることである。
本発明の別の目的は、他の方法では正しい順序にするこ
とのできない順序外れのフェッチ・オペランド・データ
をもつ不完全な命令について、フェッチを再実行(再試
行)できるようにすることである。
本発明の別の目的は、多重プロセッサ(MP)内の他のプ
ロセッサとのOSC(オペランド・ストア比較衝突を処理
することである。
本発明の別の目的は、多重プロセッサ(MP)内の別のCP
Uによる相互無効化(XI)ヒットの発生する危険のある
オペランドの、順序外れ(OOS)フェッチを可能にする
ことである。
本発明の別の目的は、MP内のCPU間でのOSC衝突の検出を
可能にするために、各キャッシュ・ディレクトリ・エン
トリと共にOOSフラグ・フィールドを使用できるように
することである。
本発明の別の目的は、直列化命令のためのオペランド・
フェッチが、プログラム内の命令の概念的順序が直列化
命令より前である命令のためのオペランド・フェッチよ
り前に実行できるようにすることである。
本発明の別の目的は、連想式OOSフラグ・フィールド・
テーブルを使って、OOSフェッチ条件の下でXI処理のシ
ステム性能を改善できるようにすることである。
E.実施例 第2図は、CPUの概念的命令実行パイプライン内の命令
ストリームの実行処理の様々な段階を示す。ストリーム
内での命令の順序は、CPUハードウェアにおける命令実
行の開始によって決定される。この開始は、命令の実行
とオーバラップすることができる。このパイプラインの
一端にはまだ実行を開始していない命令があり、他端に
は実行を完了した命令がある。
その間には、処理が完了していない実行中の命令があ
る。未完了命令シーケンスは、一端で復号を開始した現
命令と接し、他端には、まもなく完了する命令がある。
ある命令はレジスタ・オペランドをもち、他の命令は記
憶装置オペランドをもつ。さらに他の命令は、記憶装置
オペランド及び別のタイプのオペランドをもつ。少なく
とも1つの記憶装置オペランドをもつどの命令も、本発
明では記憶装置タイプの命令と見なす。記憶装置命令
は、ただ1つまたは複数のフェッチ・オペランドをもつ
ことができ、あるいは1つまたは複数のフェッチ・オペ
ランド及び1つまたは複数の記憶装置オペランドをもつ
ことができる。本発明の目的は、フェッチ・オペランド
を、概念的命令順序から外れて早期または遅延して実行
できるようにすることである。
第3A図は、オペランドの概念的順序の1例で、各オペラ
ンドの命令IIDがこの順序で増加している。すなわち、
第3図で、オペランドの時間順序は、オペランドが主記
憶装置内でフェッチ(F)またはストア(S)を実行す
る時間に関して、1、2、3、4、5である。
第3B図は、IIDがそれぞれ4、3、2の順序外れ(OOS)
オペランドをもつ1例を示す。どのオペランドも、別の
オペランドに対するそのオペランドの相対的発生時間の
時間順序に応じて、早期オペランドまたは遅延オペラン
ドになりうる。
第3C図は、あるオペランドが早期であるか遅延であるか
を判定するための関係テストを示す。このテストは、先
行オペランドまたは後続オペランドとの関係で行なわれ
る。時間順序が次の各オペランドのIIDがその先行オペ
ランドのIIDより大きいかまたは等しく、あるいはその
後続オペランドのIIDより小さいかまたは等しいかぎ
り、オペランドは概念的順序にある。
早期フェッチ・オペランド・テストは、当該オペランド
のIIDと後続オペランドのIIDの相対的比較である。当該
オペランドのIIDが後続オペランドのIIDより大きい場
合、早期フェッチ・オペランドであることが示される。
図の例では、F4は、そのIID 4が後続のオペランドF3
のIID 3より大きいので、早期フェッチ・オペランド
である。
やはり第3C図で、遅延オペランド・テストは、当該オペ
ランドのIIDと後続のオペランドのIIDの相対的比較であ
る。当該オペランドのIIDがその先行オペランドのIIDよ
り小さい場合、遅延オペランドであることが示される。
図の例では、F2は、次の先行オペランドのIID 3が当
該フェッチ・オペランドのIID 2より大きいので、遅
延フェッチ・オペランドである。フェッチ・オペランド
F5は、そのIID 5が、オペランドの時間順序が先のオ
ペランドのIIDより大きく、時間順序が後のオペランド
のIID 6より小さいので、概念的順序に戻る。
命令オペランドのOOSフェッチが許されたとき、命令実
行動作において、未完了命令ストリーム内のいくつかま
たはすべての命令を再実行(再試行)することが必要に
なる時がある。
このような再試行処理は、未完了シーケンス内の完了し
た理現命令と「理論的再試行開始命令」との間にあるど
の命令から開始することもできる。論的再試行開始命令
とは、再試行が必須な最も古い命令であり、理論的再試
行開始命令と最も古い未完了命令の間にある他の命令に
対しては再試行は必須ではない。理論的再試行開始命令
は、異なるCPU上の先行命令のストア・オペランドとの
オペランド・ストア比較(OSC)動作でミスとなったフ
ェッチをもつ最も古い命令である。
理論上再始動するのに最も効率的位置は、理論的再試行
開始命令である。しかし、理論的再試行開始命令を正確
に検出するには、複雑で高価な追加のハードウェアが必
要になることがある。既存のハードウェアは、完了した
最も古い命令を検出するが、これは命令の再試行を開始
する最も簡単な位置である。
第1図は、本発明の適用環境を与えるCPUの1例を示
す。このCPUは、メモリからの命令のフェッチを制御す
る命令フェッチ制御機構11を含む。制御機構11は、命令
を含むキャッシュ行を要求してL1キャッシュ・ディレク
トリ19と通信する。L1キャッシュ構成19は、L1キャッシ
ュを含み、L2キャッシュ・ディレクトリ及びキャッシュ
26に接続されている。L2キャッシュ26は、L3主記憶装置
27に接続されている。
制御機構11によってフェッチされた命令の行は、命令バ
ッファに記憶され、関連する復号器12によって復号され
る。復号器12は、オペランド・アドレス成分値(B,X,
D)をオペランド・アドレス生成(AGEN)/要求装置16
に提供する。装置16は、式(B)+(X)+Dを使って
オペランド論理アドレスを生成する。この式は、本明細
書を通して使用されるコンピュータ・アーキテクチャで
あるIBM S/370アーキテクチャにおいて周知である。複
数のAGEN動作が並列に行なえるように、装置16内に複数
のAGEN要素が、設けられている。いずれかのAGEN要素が
オペランド・アドレスを生成するために必要なすべてア
ドレス成分と共に復号器16からAGEN要求を受け取ったと
き、そのAGEN要素は使用中となる。次の各オペランドAG
EN要求は、装置16内の使用中でないAGEN要素を選択す
る。AGEN要素は、受け取ったアドレス成分からオペラン
ドの有効アドレスを生成する。これらのアドレスは、復
号器12が要求した順序で生成される。有効アドレスは、
CPU内のプログラム状況ワード(PSW)の状態に応じて、
仮想または実論理アドレスである。
生成された各オペランド有効アドレス(これは仮想であ
る)は、変換ルックアサイド・テーブル(TLB)18を含
む周知の手段によってアドレス変換される。TLBは、変
換されたアドレス(絶対アドレス)を、L1データ・ディ
レクトリ及びキャッシュ19と、L2ディレクトリ及びキャ
ッシュ26に提供する。
好ましい実施例では、L1キャッシュ19はストア・スルー
型のキャッシュであり、L2ディレクトリ及びキャッシュ
26はストア・イン型のキャッシュであると仮定する。た
だし、本発明は、あらゆるタイプのキャッシュ構成で使
用することができる。
L1ディレクトリは、フェッチ・オペランドがL1、L2、L3
などの記憶装置からなる記憶階層内で遅延されているこ
とを知らせるL1ミス信号出力28を提供する。
TLB18はまた、その変換されたアドレスを、記憶装置へ
のオペランド・フェッチ要求用のオペランド・フェッチ
待ち行列21、及び記憶装置へのオペランド・ストア要求
用のオペランド・ストア待ち行列22に提供する。
各フェッチ・オペランドは、フェッチされると、オペラ
ンド・フェッチ・バッファ17内で受け取られる。実行装
置23がフェッチ・オペランドを受け取り、ストア・オペ
ランドを生成する。これらのストア・オペランドは、一
時的にオペランド・ストア・バッファ24内に入れられ、
L2キャッシュ26及びL3主記憶装置27に書き込むため、L1
キャッシュ19に転送される。
命令フェッチ制御機構11によってアクセスされた命令シ
ーケンスは、命令完了制御機構32によって駆動される順
序制御装置31によって制御される。制御装置31は、受け
取ったオン状態のOOSモード信号25によって、すべての
命令を概念的順序で実行するように指令されたとき、OO
Sオーバライド信号40を提供する。本発明のOOS動作が行
なわれるには、信号40がオフでなければならない。
プログラム割込み制御機構33は、命令完了制御機構32に
接続されており、実行中の命令ストリームに関して、た
とえば、実行中のどの命令の結果をも損なわずに、いつ
プログラム割込みが許されるかを決定する。
復号器12内の命令復号器は、ストリーム中の各命令を復
号し、それに命令識別子(IID)を割り当てる。IID番号
は、いつでもCPUによって現在処理されている命令に対
して一義的である。IID番号は、通常のカウンタ(図示
せず)によって、所与の時刻に必要なIIDの一義性を得
るのに十分な大きさのモジュロ値で繰り返すラウンド・
ロビン方式で生成される。復号器16によって概念的順序
で処理される命令に対してIIDが割り当てられるとき、
現活動状態のすべてのIIDに対して昇順のシーケンスが
得られる。
復号器12は、直列化命令が検出されたとき、直例化信号
をシーケンス制御装置31に提供する。その後、制御装置
31が、直列化命令状態信号29を提供する。
各オペランドは、初めにオペランド要求装置16によっ
て、それがフェッチ・オペランドであるかそれともスト
ア・オペランドか判定される。次に、フェッチ要求信号
またはストア要求信号が装置16によって適当な待ち行列
21または22に送られ、その中で各要求に対してエントリ
が割り振られる。さらに、生成された有効アドレス(E
A)及び対応するIIDが、待ち行列21または22内の新しく
割り振られたエントリに書き込まれる。
ストア要求は、たとえそのストア要求がキャッシュ・デ
ータ単位の全体を生成するとしても、各ストア要求に割
り当てられる装置24内の複数のストア・バッファの1つ
を必要とする。このため、各ストア要求は、実行装置23
によってフェッチ待ち行列21及びストア待ち行列22にも
提供される。したがって、ストア要求によって、通常、
キャッシュへの初期フェッチ要求(ストア問合せと呼
ぶ)で、必要なデータ単位が、割り当てられたストア・
バッファ24にコピーされる。これによって、エントリ
は、そのストア要求用のフェッチ待ち行列とストア待ち
行列の両方に割り振られる。フェッチ待ち行列エントリ
内で、そのエントリがストア要求を表すことを示す特別
のフラグ・ビットがオンにセットされる。(キャッシュ
記憶単位よりサイズの小さな)ストアが、データ・バッ
ファ内でマージされてフェッチされたデータになり、デ
ータ単位が変更される。次に、このデータ単位が、L1デ
ータ・キャッシュ及びL2データ・キャッシュに送られ
る。
フェッチ待ち行列の構造 第4図は、各エントリO−Nをもつフェッチ待ち行列
(FQ)21を表す。第5図は、各FQエントリの形式を示
す。各FQエントリは、IIDフィールド、IID有効ビットV
I、EAフィールド、EA有効ビットVE、フェッチ制御部
分、ストア制御部分、オペランド・ストア比較(OSC)
制御部分、及び直列化命令制御部分をもつ。フェッチ制
御部分は、フェッチ要求済みビット、OOSビット、キャ
ッシュ・ミス・ビット、及びデータ返送ビットを含む。
ストア制御部分は、ストア待ち行列フェッチ要求ビッ
ト、フェッチ・ノー・データ・ビット、ストア・バッフ
ァ(SB)利用可能ビット、及びSBフィールド内のデータ
を含む。OSC制御部分は、OSC標識ビット、及び前ストア
IIDフィールドを含む。直列化命令制御部分は、本明細
で後で説明するOOSDT実施例で直列化命令順序外れフェ
ッチ動作を支援する。
第5図に示したFQエントリは、次のフィールドをもつ。
IIDフィールド:このフェッチ待ち行列エントリを生成
しているフェッチ・オペランド・フィールドをもつ命令
のIIDを受る。IIDとオペランド番号を合わせたものが、
IDFO(フェッチ・オペランドの識別子)である。
オペランド番号(#):このオペランドを同じ命令中の
他のオペランドから区別する2ビットの標識。IIDと#
フィールドを合わせたものが、IDFO(フェッチ・オペラ
ンドの識別子)となる。
VIフィールド:1なら関連するIIDフィールドとオペラン
ド番号が有効、0なら無効であることを示す。
EAフィールド:このフェッチ待ち行列エントリを生成す
るフェッチ・オペランドに対する有効アドレスを受け取
る。EAは、(B)+(X)+Dによって生成される。こ
こで、(B)と(X)は、それぞれベース・レジスタと
インデックス汎用レジスタの内容である。
VEフィールド:1なら関連するEAフィールドが有効、0な
ら無効であることを示す。
フェッチ制御部分フィールドは、次のように定義され
る。
フェッチ要求済み(FR)ビット:このエントリによって
L1データ・キャッシュからデータを要求するとき、1に
セットされる。0にセットされると、このFQエントリに
対して記憶装置からデータがまだ要求されていないこと
を示す。
OOSビット:1にセットされると、少なくとも1つの後で
発行されたフェッチ要求より前にこの要求がフェッチさ
れており、したがって順序外れであることを示す。0に
セットされた場合は、このFQエントリが適切な命令順序
であることを示す。
L1キャッシュ・ミス・ビット:FQエントリがL1キャッシ
ュ・ミス信号及びOOSモード信号を受け取ると、1にセ
ットされる。0にセットされた場合は、キャッシュ・ミ
スが発生しなかったことを示す。
データ返送(DR)ビット:このエントリによって表され
る要求に対するデータをプロセッサがL1データ・キャッ
シュから受け取ると、1にセットされる。0にセットさ
れたときは、このFQエントリ用のデータを記憶装置から
まだ受け取っていないこを示す。
ストア制御部分フィールドは、次のように定義される。
SQフェッチ要求(SFR):1にセットされた場合、このFQ
エントリによって表されるフェッチ要求が、このFQエン
トリ内のIIDによって定義される命令によって発行され
たストア待ち行列22内のストア要求に対して実行される
ことを示す。0にセットされた場合は、このエントリが
純粋な(ストア要求を伴わない)フェッチ要求を表すこ
とを示す。
フェッチ・ノー・データ(FND)ビット:1にセットされ
た場合、ストア命令がデータ単位全体をストアしている
ので、ストア命令に対するこのフェッチ要求は、EAから
フェッチされるデータを必要としないことを示す。0に
セットされた場合は、EAからデータ単位がフェッチでき
ることを示す。
SBからのフェッチ(FSB)ビット:1にセットされた場
合、SBがこのFQエントリによって要求されるデータ単位
全体を含み、SB#フィールドがSB内のそのデータ単位の
位置を指示することを示す。0にセットされた場合は、
SBがこのFQエントリによって要求されるデータ単位全体
を含まず、したがってL1キャッシュ内でそのデータ単位
にアクセスしなければならないことを示す。
SB番号(SB#)フィールド:このFQエントリによって要
求されるデータ単位全体が、L1キャッシュからよりも迅
速にフェッチできるデータ・バッファ(SB)の位置を指
示する。
OSC制御部分フィールドは、次のように定義される。
OSC.IDSO:このフェッチ要求と同じ記憶アドレスにOSC衝
突をもつが、ストアはまだ行なわれていない、先行命令
中のストア・オペランドを識別するIID及びオペランド
番号を含む。
OSC.Vビット:1にセットされた場合、このFQE内のOSC.ID
SOフィールドが、現在未完了の先行命令の衝突するスト
ア・オペランドの有効なIID及びオペランド番号を含む
ことを示す。0にセットされた場合は、OSC.IDSOフィー
ルドの内容が有効でないことを示す。
直列化命令制御部分フィールド(OOSDT実施例で使用さ
れる)は、次のように定義される。
S1:1にセットされた場合は、そのFQEが直列化命令のフ
ェッチ・オペランドを表すことを示す。0にセットされ
た場合は、そのFQEが直列化命令のフェッチ・オペラン
ドを表さないことを示す。S1は、直列化命令に対するオ
ーバラップしたOOSフェッチを可能にするために使用さ
れる。
S2:1にセットされた場合は、そのFQEが未完了の直列化
命令の後に続く命令のフェッチ・オペランドを表すこと
を示す。0にセットされた場合は、そのFQEが未完了の
直列化命令の後に続くフェッチ・オペランドを表さない
ことを示す。S2は、直列化命令の後続のオペランドとオ
ーバラップしたOOSフェッチを可能にするために使用さ
れる。
ストア待ち行列の構造及び動作 第6図は、ストア待ち行列(SQ)22及びストア・バッフ
ァ(SB)24の構造を表す。SQは、各エントリ0−Kをも
つ。各SQエントリは、SB24内の1つの可変長データ単位
を表す。SB内のデータ単位は、1ワードから4ワードま
での可変長である。ストア・エントリは、ストア命令実
行のIIDの順序でストア待ち行列内に作成され、その順
序で処理される。すなわち、ストア要求は、この実施例
ではFQ内のフェッチ要求エントリと同様に順序外れでは
処理されない。
第7図は、各ストア待ち行列エントリの形式を示す。こ
れは、IID、EA、制御フィールドVIとVE、及びストア制
御部分をもつ。
各SQエントリは、次のフィールドをもつ。
IIDフィールド:このSQエントリを生成しているストア
・オペランド・フィールドをもつ命令のIIDを受け取
る。IIDとオペランド番号を合わせたものが、IDSO(ス
トア・オペランドの識別子)である。
オペランド番号(#):このオペランドを同じ命令内の
他のオペランドから区別する2ビットの標識。
VIフィールド:1なら関連するIIDフィールドとオペラン
ド番号が有効、0なら無効であることを示す。
EAフィールド:このストア待ち行列エントリを生成する
ストア・オペランドに対する有効アドレスを受け取る。
EAは、(B)+(X)+Dによって生成される。ここ
で、(B)と(X)は、それぞれベース・レジスタとイ
ンデックス汎用レジスタの内容である。
VEフィールド:1なら関連するEAフィールドが有効、0な
ら無効であることを示す。
ストア制御部分フィールドは、次のフィールドを含む。
SBポインタ・フィールド:このSBエントリによって表さ
れるデータ単位のSB内の位置を含む。
データ単位長フィールド:このエントリによって表され
るSB内の対応するデータ単位のデータ・ワードで表した
長さを含む。
マージ・マスク・フィールド:ストア・バッファ内のこ
のエントリによって表されるデータ単位内の対応するバ
イトを表す各ビットからなるバイト・フィールド。マス
ク内の任意のビットが1にセットされると、データ単位
内のその当該のバイト位置に、マージされたワードがス
トアされることを示す。マスク・フィールド内のすべて
のビットが値1にセットされると、データ単の全体が実
行装置によってストアされる。したがって、ストア・マ
ージ動作を行なう必要がない。
データ・ストア未完了ビット:1にセットされると、この
SBエントリによって表されるストア動作がまだ完了して
いず、データ単位にアクセスできないことを示す。この
SBエントリによって表されるストア動作が完了すると、
0にセットされる。
FQ単位位置付けビット:1にセットされた場合は、フェッ
チ要求が完了したとき、FQエントリによって要求されて
いるデータ単位が、このSBデータ単位内で完全に見か
る。
SBフェッチ・返送(FSBR)ビット:FSBRが1にセットさ
れると、このSBデータ単位の全部または一部分が、FQエ
ントリによるフェッチ要求に応答してフェッチされる。
ストア待ち行列内のSQエントリ、ストア動作がストア・
バッファ内で成功裡に完了し、L1キャッシュとL2キャッ
シュにコピーされたことを示すストア完了肯定応答信号
を、L1キャッシュ及びL2キャッシュから受け取ったと
き、割振りを解除される。
CPU内でのOOSフェッチ処理: オペランド・フェッチ要求は、システム主記憶装置(メ
モリ)からの少なくとも1つのデータ・フェッチを必要
とする命令によってのみ行なわれる。各オペランド・フ
ェッチ要求によって、フェッチ待ち行列(FQ)内でエン
トリが作成される。したがって、メモリからオペランド
をフェッチしない命令(たとえば、レジスタ間命令)
は、FQ内のエントリを表さない。
ストア・オペランドをもつ命令は、通常、ストアすべき
データ単位を得るためにフェッチ動作を必要とし、しが
って、フェッチ待ち行列を使用する。FQは、各位置0−
NにN+1個のエントリをもつ。したがって、FQ内の位
置の割振りの順序は0からNまで進み、エントリが再使
用されるとき、循環して0に戻る。
命令が復号されている間、各オペランド・フェッチ要求
(ストア・オペランドに対する各フェッチ要求を含む)
に対するエントリがFQ内に入れられる。復号処理は、メ
モリ内のアクセスされる各オペランド要求の有効アドレ
ス(EA)を決定するアドレス生成手段と、パイプライン
中でつながっている。各メモリ・フェッチに対して生成
されたEAは、FQ内のオペランドに対して割り振られたエ
ントリに書き込まれる。
本発明は、次に処理すべきエントリを決定する処理でFQ
及びSQを探索することを含む。理論的には、この探索
は、待ち行列内のエントリ全部について順次行なうこと
ができるが、すべての待ち行列エントリに対して同時に
並列に行なうことが好ましい。なぜなら、待ち行列内の
すべてのエントリの並列探索は、待ち行列の順次探索よ
りずっと高速で行なうとができ、探索の速度はシステム
の性能にとって最重要だからである。したがって、本発
明の好ましい実施例では、組合せ論理回路として一般に
知られる並列論理ハードウェアを使って並列動作を得る
が、れは順次動作として説明する方がわかりやすい。第
12図ないし第16図は、このような並列動作を得るための
組合せ論理回路を含む。
フェッチ待ち行列動作: 第4図は、異なるレジスタに含まれる4つのポインタに
よって制御されるハードウェア・アレイとしてのFQを示
す。それらのレジスタは、割振りポインタ・レジスタ
(APR)、順序が次のフェッチ・ポインタ・レジスタ(N
IPR)、実際に次のフェッチ・ポインタ・レジスタ(NAP
R)、及び待ち行列解除ポインタ・レジスタ(DQPR)で
ある。
本発明では、APR、NIPR、NAPR、及びDQPR中のポインタ
値を使って、メモリ参照命令の実行を制御する。APR、N
IPR、NAPR、及びDQPRの内容は、当初、それぞれ、FQ内
の位置0にある最初のエントリを指すようにセットされ
る。
第4図に示したNUPR(次の未フェッチ・ポインタ・レジ
スタ)は、後述するOOSDT実施例で使用される。
APR(割振りポインタ・レジスタ)動作: APRポインタは、次に割り振られるFQエントリを選択す
る。CPUの復号器は、次の命令がCPU内で復号され始める
とき、次のIID値を次の命令に割り当て、割り当てられ
たIID及びその有効信号VI=1を、選択された現APRエン
トリのIID及びVIフィールドに書き込む。このエントリ
は、次に割り振られるAPRエントリである。VI信号は、
このAPRを次のポインタ値に増分し、復号器は、その命
令が必要とする各フェッチ要求に対してFQエントリが割
り振られるまで、その命令に対する次のフェッチ要求に
対するエントリを書き込む。IIDがFQに入る順序は、非
メモリ・アクセス命令のIIDをスキップするので、APRに
提供されるIIDシーケンスは、順序が隣のIIDに対するも
のである必要はない。APRポインタは、復号された現命
令の各フェッチ要求ごとに1回ずつ増分された後、APR
動作のために次に使用されるFQ内の未割振りのエントリ
を指すようになる。
APRによって割り振られた最後のエントリのIIDは、必
ず、他のFQレジスタNAPR、NIPR、及びDQPRが指すエント
リのIIDより新しい。
第14図は、APRのためのハードウェア論理回路を示す。A
NDゲートは、次に割り振られるFQエントリへのAPRカウ
ンタの増分を制御する。このANDゲートは通常の2進カ
ウンタ回路でよい。ANDゲートが受け取る信号は、メモ
リ・オペランド命令が復号されている間活動状態となる
メモリ・オペランド信号、現FQエントリへのIIDの書き
込みを示す復号器VI信号、及び現エントリ内の非VI信号
である。現エントリ内のVI信号インバーを介してANDゲ
ートに提供される。したがって、後者の信号は、最初、
オフ状態にあり(このときVIは、まだエントリに書き込
まれていない)、VI信号が現エントリに書き込まれ次第
ANDゲートはディスエーブルされ、APRカウンタへの増分
信号を終了する。このとき、APRカウンタは、次に割り
振られるFQエントリを指すようになる。
APR動作によって単一マシン・サイクルで1つの命令に
ついて1つまたは複数のFQエントリが割り振られること
がある。各エントリ割振りは、次の表現によって記述で
きる。
If 現FQ(APR).VI=0 かつDECOER VI SIGNAL=1 かつMEMORY OPERAND SIGNAL=1、 Then、現FQ(APR).VIを1にセットする、 FQ(APR).IIDを現DECODER IIDにセットする、 次のAPRポインタを現APRポインタ+1(循環式)にセッ
トする、 End. AGEN動作及びOSCの動作: 各メモリ・オペランドの有効アドレス(EA)のアドレス
生成(AGEN)は、命令復号処理で記憶装置オペランドを
検出し、かつAGEN回路が利用可能となり次第、開始され
る。この復号処理で、割り当てられたAGEN回路に、記憶
装置オペランドのB値とX値とD値、IID、及びオペラ
ンド番号が提供される。必要とされるB値またはX値が
まだ入手できない場合、すべてのアドレス成分が入手可
能になるまでAGEN処理は遅延される。あるオペランドに
対するAGEN処理が完了すると、生成されたEAに対して記
憶されたものに等しいIID及びオペランド番号を含むFQ
エントリを求めてFQが探索される。見つかったFQエント
リにEAが書き込まれ、VEビットが状態1にセットされ
て、そのEAフィールドが有効であることを示す。
AGEN動作のための有効アドレスが生成され次第、未完了
の前のストア要求との衝突が存在するか否か判定するた
めに、生成されたEAに対するストア待ち行列(SQ)内で
オペランド・ストア比較(OSC)処理が実行される。こ
のOSC判定では、生成されたEAを、より古いIIDをもつす
べての有効SQエントリ内のEAと比較する。このOSC探索
は、CPUの性能上の理由から、すべてのSQエントリにつ
いて同時に並列に実行することが好ましい。
OSC動作で、生成されたEAがより古いIIDをもつすべての
SQエントリ内の有効EAに等しくないことが判明した場
合、生成されたEAを受け取るFQエントリ内のV(OSC)
ビットが0にセットされて、フェッチされたデータがOS
C衝突を有しないことを示す。しかし、より古いIIDをも
ついずれかのSQエントリ内のEAが生成されたEAに等しい
場合は、衝突が検出され、FQエントリのV(OSC)ビッ
トが1にセットされ、そのOSC IIDフィールドが、OSC衝
突するSQエントリ内で見つかったIIDにセットされる。
衝突は、同じサイズのデータ単位とのオーバラップであ
ることもあれば、ストア・バッファ(SB)内の可変長デ
ータ単位とのオーバラップであることもある。したがっ
て、FQエントリ内のOSC部分は、それ以降、そのエント
リで表されるフェッチ要求が、前のストア・オペランド
からの要求されたデータの変更を待っているかどうかを
示す。
NAPR(実際に次のポインタ・レジスタ)動作: L1キャッシュ要求(図示せず)の待ち行列内で現NAPRで
選択されたFQエントリによってフェッチ要求が行なわれ
次第、NAPRポインタは別のFQエントリを指すように変更
される。次のNAPRポインタは、データ・フェッチのため
にメモリ要求(たとえば、L1キャッシュ要求)を必要と
している最も古い準備のできたFQエントリを選択する。
NAPRが別のFQエントリを指すように変更されると、その
エントリはL1キャッシュに対するフェッチ要求を行なう
めに使用され、以下同様である。
NAPRの内容は、NIPRの内容に等しくセットされ、最初は
NAPRとNIPRは共にFQエントリ0を指す。NAPRとNIPRの両
者が同じFQエントリを指しながら一緒に移動する限り、
フェッチ・オペランドは概念的順序で要求される。フェ
ッチ要求が順序外れになると、NAPRとNIPRは異なるエン
トリを指すようになる。
このように、フェッチ要求(FR)がなされ次第、NAPRの
設定は、まだ要求されたメモリ・フェッチをもたず、有
効EAをしち、OSC衝突をもたない別のFQエントリを指す
ように変更される。複数のFQエントリがこれらの条件に
合致する場合は、これらの条件に合致する最も古いFQエ
ントリが選択される。すなわち、このようなグループ中
の最も古いFQエントリが、(循環する場合はその調整済
みの)最低のIID値をもつFQエントリになる。
NAPR動作は、第12図に示す並列組合せ論理回路2内で単
一マシン・サイクルで行なうことが好ましい。これは、
次の表現によって記述できる。
VE=1 AND FR=0を含み、FSB & OSCが共に0または共
に1である、すべてのFQエントリを検出する、 NAPRを検出された最も古いFQエントリの位置にセットす
る、 このNAPR FQエントリに対してL1フェッチ要求を行な
う、 このFQエントリ内のFRビットを1にセットする、 End。
第13図で、並列組合せ回路2は、複数のAND回路の並列
出力を、FQハードウェア内の各FQエントリごとに1つず
つ受け取る。各AND回路は、それぞれ、その対応するFQ
エントリ内のVE、V(OSC)、及びFRビットの状態を受
け取る。これらのAND回路の1つは、別のFQエントリが
その状態をどのFQエントリ位置が次のNAPR値になるかを
示すように(VE=1及びV(OSC)=0及びFR=1に)
変更した後ただちに、回路2内でヒットを得る。
したがって、NAPRは、FR=1(そのエントリに対するメ
モリ要求が以前に行なわれたことを示す)を含む、また
はV(OSC)=1かつFSB=0(そのFQエントリに対する
OSC衝突が未解決であることを示す)を含む、どのFQエ
ントリをも指さない。すなわち、このようなFQエントリ
はまだ、メモリにそれらのデータを要求する状態にな
い。
NIPR(順序が次のポインタ・レジスタ)動作: NIPRポインタは、FQエントリの概念的順序を、実行プロ
グラムの命令ストリーム内での命令の順序で選択するよ
うに増分される。これを行なうために、NIPRポインタ
は、そのフェッチ要求済み(FR)ビットがまだ状態0に
リセットされている最も古いFQエントリを選択する。す
なわち、NIPRエントリより古いどの有効FQエントリにつ
いてもFR=1である。NIPRが指すエントリは、有効EAを
もつ必要はない、すなわちVE=0または1である。
NIPRは、現NIPRエントリがフェッチ要求をするとき、す
なわちそのFRビットを0から1に変更したとき、FR=0
の次のFQエントリに順次増分される。NIPR値は、FR=0
のエントリに達するまで、FR=1をもつ後続の各FQエン
トリへと次々に増分され続ける。すなわち、NIPRは、単
一のNIDR動作で任意の数のFQエントリへと増分すること
ができる。1マシン・サイクルで、NIPRポインタ値は、
複数のFQエントリずつFQを順次上方に(循環を含み)移
動させて、NAPR動作によって以前にFR=1状態にセット
された1つまたは複数のエントリを通過することができ
る。
第12図は、N+1個のFQエントリすべてから反転FRビッ
トの並列出力を受け取る並列組合せ回路1を含もでい
る。組合せ回路1は、現NIPR値を受け取り、次のNIPR値
を出力する。NIPR動作は、次の表現で記述される。
現FQ(NIPR).FR=1のとき 次のNIPRポインタを現NIPRポインタ+1へと(循環を含
み)セットし続ける、 次のFQ(データ).FR=0のとき終了する。
したがって、NIPRは、NAPR動作の結果、その選択された
現FQエントリFRビットが状態1に変更されて、前記FQエ
ントリに対するフェッチ要求を示すようになったときだ
け、増分される。しかし、NAPRは、その条件を満たすど
のエントリにも変わることができる。これは、NIPRがフ
ェッチ要求をもたない最も古いエントリを指していると
きに生ずることができる。そのとき、NAPRは、最も新し
い順序外れフェッチ要求を指すようになる。
NIPRは、FQを上下いずれかの方向に移動しながらFQエン
トリをスキップできるNAPRとは違って、循環を含みFQエ
ントリ位置の増加方向にのみ変化する。したがって、NI
PR値は、NAPR値より大きくはなれない。
DQPR(待ち行列解除ポインタ・レジスタ)動作: 第4図で、フェッチを完了したFQエントリに対して待ち
行列解除動作が実行される。DQPRは、次に待ち行列から
外し、新しいFQエントリとして割り振るためにAPRが利
用できるようにすべきFQエントリを選択する。したがっ
て、APRポインタは、循環について調整されたFQエント
リの増加方向でDQPRポインタに等しくなることはできる
が、それより大きくなることはできない。
DQPRは、キャッシュから、またはキャッシュ・バイパス
を介してメモリからデータを返されていない最も古いFQ
エントリにセットされる。データ返送は、エントリのデ
ータ返送(DR)ビットを状態1にセットすることにより
指示される。
第14図は、DQPR動作を得るための回路を示す。この回路
は、並列組合せ回路4を含む。組合せ回路4は、現DQPR
値及びN+1個のFQエントリすべてのDRビットの並列出
力を受け取る。組合せ回路4のDQPR(次)出力は、次に
待ち行列から外すべきFQエントリを選択する。もう1つ
の出力は、DQPR(現)エントリのフィールド及びフラグ
・ビットをすべてオフ状態に有効にリセットすることを
含めて、DQPR(現)エントリを初期設定する。第14図の
DQPR並列動作は、次の表現によって記述されるように単
一マシン・サイクルで完全に実行される。
次に各FQ(DQPR).DR=1を検出するすべての有効ビッ
トを0にセットすることにより、FQ(DQPR)エントリを
無効にするFQ(DQPR).DR=1でないときは終了し、FQ
(DQPR)は最も古いFQ(DQPR)DR=0を指す。
複数のFQエントリでDRビットがオンの場合、複数のFQエ
ントリが単一サイクルで待ち行列から外されるこがあ
る。
OOS(順序外れ)検出 FQエントリ内のOOSビットは、状態0にセットされる
と、そのフェッチ要求が順序通りであることを示すが、
状態1にセットされると、そのフェッチ要求が概念的順
序外れであることを示す。
第12図は、比較機構3がNIPR及びNAPRの内容を受け取
る、好ましい実施例のOOS検出処理を表す。NAPRポイン
タが(循環について調整された)NIPRポインタより大き
くなると、OOS検出が行なわれる。このOOS検出は、NAPR
が「OOSフェッチ」要求を指していることを指示する。
というのは、NAPRが指すエントリは、概念的順序で(NI
PRポインタで)要求される場合よりも早くキャッシュか
らそのデータを要しているからである。現NIPRエントリ
はまだデータを要求していないが、OSS NAPRエントリは
データをすでに要求済みである。
したがって、NAPRが新しいポインタ値を受け取るごと
に、NIPRとNAPRの比較が行なわる。NAPRがNIPRより大き
い場合、NAPRが指すエントリでOOSフラグ・ビットが1
にセットされて、そのビットが順序外れ要求を表すこと
を示し、FQ(NAPR).OOS=1信号を線81上に送る。NAPR
がNIPRに等しいときは、OOSフラグ・ビットが0にセッ
トされて、そのビットが順序通りの要求を表すことを示
す。NAPRの動作によって、NAPRがNIPRポインタより小さ
くなることはない。NAPRポインタがNIPRポインタより小
さい場合には、エラー状態が存在する。
データ・フェッチ動作: IID及びオペランド番号(IDFO)は、記憶装置内でデー
タがアクセスされているときにそのデータとの関連を維
持するタグであり、したがって返されたデータとともに
実行装置に返送することができる。
FQとL1及びL2キャッシュとの間で交信される信号として
は、FQからL1キャッシュへのフェッチ要求信号及びキャ
ッシュ応答がある。それらの信号線には、フェッチ要求
済み(FR)信号線、EA信号線、IID及びL1フェッチを要
求するためのオペランド番号信号線などFQエントリ信号
用の電気線が含まれる。応答線には、データ返送(DR)
信号線、IID及びオペランド番号信号線、EA線、キャッ
シュ・ミス信号線などの電気線が含まれる。キャッシュ
からデータ返送信号を関連するオペランド識別子ととも
に受け取ると、CPUの実行装置に送られたキャッシュ・
データと同じEA及びIIDをもつFQエントリ内のDRビット
が、オンにセットされて状態1になる。
ストア要求のためのフェッチ要求 ほとんどのデータ・ストア要求は、フェッチされたデー
タ単位内でストア動作が実行できるように、予備データ
・フェッチを行なう。各FQエントリ内の「ストア制御」
フィールドは、ストア要求に関連するフェッチ制御ピッ
トのサブセットをもつ。「SQフェッチ要求」ビットが状
態1にセットされると、ストア要求に対するFQエントリ
がSQ内で作成されたことを示す。「SQフェッチ要求」ビ
ットは、このFQエントリがストア要求に対して作成され
なかった場合、状態0にセットされる。
しかし、ストア要求が全データ単位をストアするための
ものであるときには、予備データは必要でない。このデ
ータ不要状態は、「フェッチ・ノー・データ」ビットが
状態1にセットされることによって示される。
すなわち、ストア要求のためにフェッチされたデータが
必要となるのは、全データ単位より少なくデータ単位が
ストアされる場合だけである。次に、ストアされたデー
タは、以前にフェッチされたデータ単位に、データ単位
内の「マージ・マスク」内の1ビットによって示される
バイトまたはワード位置でマージされる。「マージ・マ
スク」フィールドが0ビットのときは、データ単位内の
位置が不変であることを示す。「マージ・マスク」フィ
ールドは、対応する(同じEA、IID、及びオペランド番
号をもつ)SQエントリ内にある。
この実施例では、L1キャッシュからフェッチされたデー
タ単位は、割り当てられたSB位置に入れられ、各SQエン
トリに割り当てられたストア・バッファ(SB)位置でス
トア・マージ動作が実行される。
「フェッチ・ノー・データ」ビットは、対応するSQエン
トリ内の「マージ・マスク」フィールドのすべてのマス
ク・ビットがオンにセットされて状態1になったとき、
状態1にセットされる(SB内のデータ単位全体が実行装
置によって提供され、したがってデータ単位のSBへの予
備フェッチ、及びデータ・マージの必要がないことを示
す)。
「SB内データ・フィールド」は、このFQエントリによっ
て表される要求されたデータ単位全体が後のフェッチ要
求によってL1キャッシュからよりも高速でフェッチでき
る、ストア・バッファ(SB)内の任意の位置を含む。
「SB使用可能ビット」が1にセットされた場合、そのSB
がこのFQエントリによって要求されたデータ単位全体を
含むことを示し、このとき「SB内データ」フィールドは
SB内でのそのデータ単位の位置を示す。0にセットされ
た場合、そのSBはこのFQエントリによって表されるデー
タ単位全体を含まず、したがってそのデータ単位にはL1
キャッシュ内でアクセスしなければならない。
多重プロセッサ(MP)内でのOOS処理: コンピュータ・アーキテクチャは、MP内の任意のCPUに
よって順序外れ(OOS)オペランド・フェッチによって
プログラム実行の結果が変化しないことを要求する。し
かし、OOSオペランド・フェッチは、MPシステムにおけ
るこのアーキテクチャ要件に違反するとがある。本発明
は、OOSオペランド・フェッチによってプログラム結果
が変化するのを防止するので、OOSフェッチ条件の下で
もアーキテクチャ要件が満たされる。
MP内であるCPUが別のCPUによって変更されているデータ
に対するOOSフェッチ要求を行ない、その際にそのOOSフ
ェッチによって、同じフェッチが順序通りである場合に
他方のCPUから得られるはずのデータとは異なるデータ
が他方のCPUから得られる場合には、OOS問題が発生す
る。
MP内でいずれかのCPUによってデータが変更されたと
き、相互無効化(XI)信号が他のすべてのCPUに送られ
る。OOSフェッチ問題は、要求側CPUがフェッチ要求を順
序外れで処理している間に、データが遠隔CPUによって
変更された場合に発生する。あるCPUが1つのフェッチ
要求を順序外れで処理する期間を、本明細書では「OOS
フェッチ・ウィンドウ」と呼ぶ。これは、OOSフェッチ
・アーキテクチャ違反が発生する危険のある期間であ
る。
このOOS問題は、第18A図ないし第18E図を使って説明す
ることができる。これらの図は、時間サイクル1−6の
間のフェッチ動作及びストア動作を示したものである。
記号Fはフェッチを表し、Sはストアを表し、(A)
(B)(C)(D)(E)(F)はシステム記憶装置内
の異なるアドレス位置を表す。すなわち、F(A)は記
憶位置Aからのデータのフェッチを表す。またS(E)
は位置Eへのデータのストアを意味する。
第18A図は、MP内のCPU1による順序通りのフェッチを示
す。そのオペランド・データ・フェッチは、6つの時間
サイクル中にF(A)、F(B)、F(C)、F
(D)、F(E)、F(F)として概念的順序を与えら
れる。第18B図は、サイクル4中のCPU2による位置Eへ
のストアS(E)を示す。
第18A図の順序通りのフェッチで動作しているCPU1は、
サイクル5で位置(E)のデータに対するフェッチF
(E)をもち、このフェッチはXIヒットで、前のサイク
ル4でCPU2によってストアされたデータS(E)をフェ
ッチする。この例では、CPU1のF(E)は、CPU2からデ
ータS(E)を得るが、OOSフェッチがないため、その
データはどのOOSフェッチの影響も受けない。
第18A図及び第18B図に関係して第18C図にOOS問題が表さ
れている。第18C図は、それぞれサイクル2ないし5で
のCPU1によるOOSフェッチF(E)、F(B)、F
(C)、F(D)を示し、CPU1サイクル1及び6で順序
通りのフェッチF(A)及びF(F)を行なう。すなわ
ち、OOSフェッチF(E)は、第18A図の順序通りのフェ
ッチF(E)より早く、サイクル2で位置Eに対して実
行される。早目フェッチF(E)は、サイクル4でデー
タが変更される前に、位置Eのデータを得る。すなわ
ち、第18C図のCPU1 OOSフェッチF(E)では未変更デ
ータF(E)を得たが、第18A図の順序通りに行なわれ
た同じCPU1フェッチF(E)では変更済みのデータS
(E)を得た。
第18C図は、F(E)に対する「OOSフェッチ・ウィンド
ウ」を示す。これはMP内のOOSフェッチ・データの保全
性が損なわれる恐れのある期間であり、この期間中は、
要求側CPUは順序通りにフェッチたなら変更されたはず
のデータを得ることができない。このウィンドウの終り
は、サイクル5の終り、すなわちF(E)が第18A図で
その概念的順序で行なわれるときである。したがって、
F(E)に対するこのOOSフェッチ露出ウィンドウは、
第18C図のサイクル2−5の間だけ存在する。
第18D図は、CPU1におけるF(E)に対するOOSフェッチ
・ウィンドウが終了した後、サイクル6でCPU2によって
ストアされたデータS(E)を示す。この場合はOOS露
出はない。他方、第18E図は、ウィンドウより前のサイ
クル1で実行されるストアS(E)を示す。したがっ
て、第18C図のサイクル2でOOSフェッチされたデータF
(E)も、第18E図のサイクル1でCPUにストアされたデ
ータS(E)の影響を受けない。これは、アーキテクチ
ャ上許されることである。
本発明によって提供されるOOSフェッチ問題の解決方法
は、MP内でOOSフェッチを要求しているCPUに、フェッチ
要求のOOSフェッチ・ウィンドウ中に他のCPUによって記
憶装置内でフェッチされているデータ単位に対してスト
ア要求が発生したことを知らせるものである。こうし
て、フェッチ要求しているCPUは、OOSフェッチの場合に
間違ったデータを得ることを避けることができる。
本発明は、OOSフェッチに伴うMP問題を回避するための
複数の実施例を提供する。これらの異なる解決方法は、
異なる動作特性を有し、異なるシステム効率をもたら
す。一般に、これらの解決方法は、ハードウェアの単純
性及びコストと動作効率のどちらか一方を重視するもの
である。
これらの実施例はそれぞれ、MP内の各CPUのL1キャッシ
ュ・ディレクトリに関連するハードウェア・テーブル・
ルックアップ手段を提供する。したがって、本発明のOO
Sフェッチ状態は、L1キャッシュの通常のXI探索の一部
分として探索することができる。
第9図及び第11図は、2つの異なるXI OOS実施例で使用
される異なるタイプのOOSフェッチ指示フィールドを示
す。これらのOOSフェッチ指示フィールドは、その有効
アドレス(EA)を使って選択される、他の点では従来通
(EA)を使って選択される、他の点で従来通りのL1キャ
ッシュ・ディレクトリ・エントリに追加される。最初に
記述した実施例では、第9図に示したOOSフェッチ指示
フィールドを使用し、第2のXI OOS実施例では、第10図
のより精密なXI OOSフィールドを使用する。
専用L1キャッシュ・ディレクトリに対する各FQ要求は、
L1ディレクトリ内の合同クラス(セット連想式エントリ
の行)の位置をすEAをFQエントリ内で提供する。アドレ
スされた行内の複数のL1ディレクトリ・エントリの1つ
が、各フェッチ要求に割り当てられ、そのエントリの内
容は、キャッシュ・ディレクトリ・エントリを生成する
通常の方法で生成される。
さらに各実施例で、要求側FQエントリ内のOOSビット=
1(オンにセット)のキャッシュ・エントリに対してフ
ェッチ要求が行なわれたとき、キャッシュ・エントリOO
S指示フィールドがオンにセットされる。OOSビットは、
そのOOSフェッチ要求に対するOOSフェッチ・ウィンドウ
の開始前及び終了後にそれぞれオン及びオフにセットさ
れる。第2の実施例の方が、L1 XI OOSフィールドをOOS
フェッチ・ウィンドウの終り近くでリセットることがで
き、潜在的に命令再試行がより少なくなり、CPU実行効
率が向上するので、より好ましい。
万一、OOSフィールドがオフに(非OOS状態を表す状態0
に)セットされたL1キャッシュ・エントリに対してXIヒ
ットが発生した場合、そのエントリはXIヒットに対する
通常の規則によって処理され、関連データのOOS状態は
考慮されない。
しかし、OOSフィールドが有効な(状態1にセットされ
た)L1キャッシュ・エントリに対してXIヒットが発生し
た場合は、そのエントリは、本発明の規則にしたがって
処理され、少なくともOOSフェッチ・オペランド・デー
タを要求する命令の再試行が必要となる。
上記の両実施例では、各L1キャッシュはストア・スルー
型であり、ストア・イン型の共通L2キャッシュが、MP内
のすべてのCPU L1キャッシュ用のバックアップ記憶装置
として設けられている。各CPUのL1キャッシュ内のデー
タは、共通L2キャッシュ内にもある。共通L2キャッシュ
は、XIヒット・データをストアのため、あるCPUのL1キ
ャッシュから、そのデータに対する排他的制御を要求す
る別のCPUのL1キャッシュに転送するために、MP内のす
べてのCPUが使用する。任意のL1キャッシュ・ディレク
トリ内の各データ単位(すなわちデータ行)に対する通
常のフラグ・ビット(図せず)は、セットされると、L1
キャッシュ・データ単位に対するそのCPUの排他的/非
排他的制御が存在することを示す。L1キャッシュ・デー
タ単位を無効にするには、キャッシュ・ディレクトリ・
エントリ内の有効ビットをオフにセットして、そのデー
タ単位がもうL1キャッシュ内に存在しないことを示す必
要がある。関連するL2データ単位は、対応するL1データ
単位がXIヒットに応答して無効にされたとき、無効にな
らない。というのは、その後、そのL2行は、MP内の別の
L1キャッシュのために対応するデータをバックアップし
続けなければならないからである。(L2データ単位は、
L1データ単位より大きくてもよい。) L1キャッシュOOSフラグ・フィールドは、通常のL1キャ
ッシュ・アドレス手段によってアドレスされる特別なア
レイとして編成することができる。そうすると、L1エン
トリのOOSフィールドは、当接のL1エントリがアドレス
されたとき、アドレスされる。別々のハードウェア・ア
レイの共通アドレシングを行なうと、OOSフィールドを
有するアレイがL1キャッシュ・エントリの一部になるよ
うな、論理的エントリ関係がそれらのアレイ間で得ら
れ、それらのエントリは、同じアレイ内にあるかのよう
に論理的に動作する。しかし、キャッシュ・ディレクト
リ・エントリ内の様々のタイプのフィールドに対して別
々のより小さなアレイを使用することにより、OOSフィ
ールドなど特定のタイプのフィールドを、キャッシュ・
ディレクトリのそれぞれの部分を形成するその成分アレ
イのすべてに等しい単一の大きなアレイを使用する場合
よりも、高速でセット及びリセットすることができる。
L2ディレクトリ・エントリ内の変更ビットは、アクセス
されたキャッシュ・データ単位が書き込まれるとき、オ
ンにセットされ、要求側にそのデータ単位が変更された
ことを知らせる。いずれかのCPUがデータ単位に書込み
を行ないたい場合は、そのデータ単位に対する排他的権
限を要求して、L1及びL2ディレクトリのそのエントリ内
で排他ビットがセットされる。データ単位のEAを送るこ
とにより、そのデータ単位のコピーを無効にするよう、
CPUに対してXI要求が行なわれる。このXIアドレスは、
システム内の各L1キャッシュ・ディレクトリをアドレス
して、そのアドレスを表す有効なセット連想式エントリ
にアクセスするために使用される。別のL1キャッシュ内
で有効なデータ単位が見つかった場合、そのデータ単位
は、OOSとマークされていようとそうでなかろうと、XI
要求によって無効にされる。
第5図でOOSモード信号で受け取り、ローカル・キャッ
シュ・ミスが発生した場合は、次のマシン・サイクル
で、FQ内のキャッシュ・ミス・ビットをオンにセットす
るよう、FQに指示される。NAPRでアドレスされたエント
リは、NAPRがNIPRより大きい場合のみ、そのOOSビット
が1にセットされる。FQエントリ内の「データ返送」ビ
ットは、現L1ミスに対するデータをキャッシュから実行
装置が受け取ったとき、1にセットされる。次いで、FQ
エントリ内の現L1ミス状態がオフになる。L1に対する新
しい各NAPR要求ごとにFQ内でいずれかのキャッシュ・ミ
ス・ビットがオンになるが、アドレスされたL1キャッシ
ュ・エントリ内のOOSビットは状態1にセットされる。
XI OOSビット実施例(第9図、第10図、及び第17図): 第10図は、第9図の各L1キャッシュ・エントリのOOSフ
ラグ・フィールドを使用する方法を支持する。ここで、
OOSフラグ・フィールドは、要求しているFQエントリ内
のEAによってアドレスされたディレクトリ・エントリ内
の単一ビットである。(特定のEAによって位置付けられ
ている)L1エントリのOOSフィールドは、L1 DIR(EA).
OOSとして参照される。OOSビットは、第17図からの線73
上の信号によってオンに(状態1に)セットされる。ど
の瞬間においても、いくつかの有効L1キャッシュ・エン
トリが、そのOOSビットを状態1にセットすることがで
き、そのとき残りの有効キャッシュ・エントリは、その
OOSビットがオフに(状態0に)セットされる。
第17図は。CPU OOSモード・ラッチ60を含む。このラッ
チがオン状態のとき、CPUがOOSフェッチを使用できるこ
とを示す。オフ状態のときは、CPUによるOOSフェッチの
使用が妨げられる。第1のXI実施例では、このラッチ
は、すべてのL1OOSフィールドがANDゲート66からの出力
によってL1キャッシュ・ディレクトリ内でオフにセット
されて0になるごとに、オンにセットされ、線40上の信
号は何の効果ももたない。この第1の実施例では、ラッ
チ60は、しきい値カウントに達したとき、第10図の線45
上のOOSディスエーブル信号によってオフにセットされ
る。第2のXI実施例では、第3図の命令順序制御装置31
から線40上でOOSイネーブル信号を受け取り、ラッチ60
がそのOOSモード信号を出力し、そのS及びR入力はラ
ッチ状態に何の影響も与えない。
アドレスされたL1 OOSビットは、OR回路61からの信号L1
DIR(EA).OOS→1によって状態1にセットされる。こ
のOR回路は、複数の異なる信号のいずれか1つによって
起動される。OR回路61は、第13図からの線81上のFQ(NA
PR).OOS=1信号、あるいはORゲート62または63の出
力、あるいはOR回路回路64の力によって起動される。OR
回路62は、第19図の完了待ち行列エントリ内の直列化命
令ビット、すなわちCQ(0).SERないしCQ(M).SERに
よって動作可能になる。ORゲート63は、FQエントリ内の
第5図からの線28上のL1ミス状態信号、すなわちFQ
(0).MISSないしFQ(N).MISSによって動作可能にな
る。OR回路64は、SQエントリ内のフェッチSB返送(FSB
R)ビット、すなわちストア待ち行列内のSQ(0).FSBR
ないしSQ(K).FSBRのオン状態をパスする。このと
き、SBから早目フェッチが得られる。
ANDゲート66は、信号L1 DIR(EA).OOS→0を出力す
る。この信号は、L1キャッシュ・ディレクトリ内のすべ
てのL1 OOSビットをオフにして状態0にする。ANDゲー
ト66は、ゲート62及び63の反転出力、及びOR回路64の反
転出力を受け取る。また、ANDゲート66は、FQ内にOOSフ
ェッチ状態がないことを示すOR回路71の反転出力を受け
取る。OR回路71は、FQ内のすべてのOOSビット、すなわ
ちFQ(0).OOSないしFQ(N).OOSの状態を受け取り、
すべてのFQ OOSビットがオフで状態0のとき、ゲート66
に、すべてのL1 OOSビットをオフにさせる。
この実施例は、最も古い未完了命令からプログラム実行
を再試行させるものである。すなわち、OOSフェッチ・
ウィンドウ期間中に別のCPUによるこのオペランドのデ
ータへのストアがあり得ることを示すXI信号で、OOSシ
ーケンス・オペランドをもつ命令を再実行する。未完了
命令が再試行され、再フェッチされたオペランド・デー
タはOOS状態の影響を受けることを免れる。
完了待ち行列(CQ)内の現在完了していない最も古い命
令のIIDは、第19図のICPR(命令完了ポインタ・レジス
タ)によって識別される。このレジスタは、命令順序制
御置31内にある。再試行されているCQ内の未完了命令
は、IDPR(命令復号ポインタ・レジスタ)内のIIDからI
CPR内のIIDに識別された命令である。各未完了命令は、
第19図で定義されるCQエントリによって表される。その
ECビットは、命令の実行が完了したときセットされる。
有効ビットVがオンにセットされると、そのエントリは
ある命令を表す。ビットFがオンのとき、その命令は1
つまたは複数のフェッチ・オペランドを有する。ビット
ADRがオンのとき、その命令のすべてのフェッチ・オペ
ランドが返されている。ビットSERがオンにセットされ
ると、そのエントリは直列化命令を表し、OOSモードが
存在する。
第21図は、IDPRによって現在アドレスされているCQエン
トリのビットV=0のとき、すなわちCQ(IDPR).V=0
のとき、IDPRが命令復号器12からの命令復号済み信号に
よってどのように増分されるかを示す。
第10図の命令順序制御装置からXIヒットの信号(第22図
の「再試行開始信号」)が送られたとき、第22図の線69
上のICPR(第3図の装置31の一部分)内の現IIDから再
試行動作が開始される。ICPRエントリのビットV、EC、
F、及びADRがすべて状態1にセットされたとき、ICPR
が次の値に増分される。次のICPRポインタは、現XI信号
の発生時に再試行がそこから開始できるIIDである。
尚、第22図のOR回路91のA、B、C及びDは、別の複数
のCPUからのXI信号の入来を示す。
XIによって影響を受けるフェッチ・オペランドの発生は
まれであると予想されるので、余分な命令がときどき再
試行されるにしても、必要なXI OOSフェッチ検出ハード
ウェアが単純であることが経済的には望ましい。
最大の再試行効率が得られるのは、再試行が開始され次
第、すべてのOOSビットが状態0にリセットされる場合
である。
第10図は、FQまたはSQ内にOOSフェッチ要求が存在しな
いとき、L1ディレクトリ内でオンにセットされたすべて
のOOSビットについてOOSビットをリセットする方法を示
している。状態0へのリセット前に異常に長に時間が経
過しないようにするため、一連のT個のOOSフェッチに
対してリセットが実行される。L1内で偽りのOOSが指示
されると、不必要な命令再試行が行なわれるので、CPU
効率は低下するが、システムの保全性には影響はない。
第10図に示した論理回路は、OOSカウンタ42を使って0
へのリセットが行なわれるOOSフェッチ要求の数をカウ
ントして、OOSビットを0にリセットする際の不当な遅
延を回避することができる。比較機構43は、OOSカウン
トがしきい値Tに達したのかを検出する。その後、OOS
カウンタ42は、その動作の次のサイクルに備えて0カウ
ントにリセットされる。
カウントTに達すると、命令順序制御装置31(第3図に
も図示)は、L1キャッシュのOOS状態のリセットを制御
するOOSモード・ディスエーブル信号を線45上に提供す
る。しかし、第17図の線74上のリセット信号の動作によ
って、FQまたはSQ内に未完了のOOSフェッチ要求が存在
することを装置31が認識している限り、OOSリセットは
起こらない。
第17図は、CPU OOSモード・ラッチ60をリセットするOOS
モード・ディスエーブル信号を線45上で受け取る。OOS
モード信号は、リセットされたとき、OOSフェッチ要求
を阻止する。インバータ67及び72からANDゲート66への
他の入力は、オンのストア待ち行列FSBR(フェッチ・ス
トア・バッファ返送)ビットがなくなる、すなわちすべ
てのSQ(j).FSBR=0、かつオンのFQ OOSビットがな
くなる、すなわちFQ(j).OOS=0になるまで、非活動
状態のままとなる。ANDゲート66への活動状態のOOS FQ
またはSQ入力がないとき、ゲート66は出力信号L1 DIR
(ALL).OOS→0を提供する。この出力信号は、すべて
のL1ディレクトリOOSビットをオフにして0にする。次
いで、装置31からの出力44が、OOSカウンタ42を0にリ
セットする。
したがって、第10図の回路は、すべてのL1キャッシュOO
Sフラグ・フィールドを0にリセットするのを、命令の
完了成功などによりFQ内のすべてのOOSフェッチ指示が
なくなるまで、遅らせる。
XI OOS IID実施例(第11図、第12図、及び第7図): 第12図は、XI OOS状態を処理するための第1実施例とは
かなり異なる第2の実施例を示している。第11図は、第
10図に示したタイプのL1エントリを実施したものであ
る。第3図からのOOSイネーブル信号によって第16図の
ラッチ60に対するOOSモードがオンにセットされ、その
S及びP入力が動作不能になる。尚、第16図の論回路
は、FQエントリ内のV(OSC)ビットをリセットする働
きを行う。
第12図は、OOSタグ・アレイ(OTA)61、OOSフェッチ・
スタック(OFS)62、及び命令完了論理回路63(これ
は、第1図の命令順序制御装置31の一部分である)を含
む。
OFS62は、OTAエントリを選択するEAをもつFQエントリが
待ち行列から外された後にOTA61内のエントリを削除す
るために必要である。完了した各命令のIIDを用いる
と、その命令に対する有効なOTAエントリが存在する場
合にそれを見つけることができる。どのオペランドもそ
の命令の完了が成功した後はもはやOOSではありえない
ので、そのOFS及びOTAエントリ(それらがある場合)無
効にならなければならない。すなわち、OFS62を用いる
と、OTA61内でOOS IIDエントリを見つけるために完了II
DをEAに変換することが可能となる。
OTA61は、すでに説明した性能上の理由から、L1ディレ
クトリ・アレイとは物理的に独立しているが、論理的に
はL1ディレクトリの一部分である。OTA61は、論理的に
はL1キャッシュ・ディレクトリの一部分である。OTA
は、同じキャッシュ・ディレクトリ・アドレスによって
L1ディレクトリと同時にアドレスされるからである。
(ハードウェア・アレイを分離しても、OTAフィールド
のL1キャッシュ・ディレクトリ・エントリに対する論理
的関係は変わらない。別個のより小さなアレイを使用す
ることによって、OTAフィールドのアクセスが、物理的
にキャッシュ・ディレクトリ・エントリと同じハードウ
ェア・アレイ内にある場合よりも容易にかつ高速で実行
できるようになる。) したがって、OTA61は、L1キャッシュ・ディレクトリと
同じ数の合同クラス及びセット連想性をもつ。OTA61の
各合同クラス(水平行)は、L1キャッシュ内のセット連
想式エントリに直接対応する4列のセット連想式エント
リを含む。OTA61内の各エントリは、IIDフィールドと有
効IID(VI)フィールドからなる。VIが1にセットされ
た場合、そのIIDフィールドは(同じエントリ内に)有
効IIDを含む。しかしVIが0にセットされた場合は、関
連するIIDフィールドは有効IIDを含まない。
OFS62は、L1キャッシュ内で指示できるOOS IIDに対する
M+1個のエントリをもつハードウェア・アレイであ
る。OFSアレイの行は、命令のIIDによってアドレスされ
ることによってインデックスされる。2つのOFSエント
リは、それぞれ異なるOTAエントリをもつ。OFS62内の各
エントリは、EAフィールドと有効アドレス(VE)フィー
ルドからなる。VEが1にセットされた場合、関連するEA
フィールドは有効アドレスを含む。しかしVEが0にセッ
トされた場合は、関連するEAフィールドはどのOTAエン
トリをも表さない。
FQフェッチ・エントリがL1内のOOSデータを要求すると
きは、そのエントリは第16図からのL1 DIR(EA).OOS=
1信号を第11図のゲート60に提供して、要求側命令のII
Dを線74上に提供する。IIDがOFS62内のエントリをイン
デックスし、FQエントリ内のEAが、0にセットされた有
効ビットVEをもつインデックスされたOFS行内のEA1また
はEA2位置のうちの使用可能な一方の位置に書き込ま
れ、有効ビットVEが1にセットされる。
FQエントリのEAはまた、有効とセットされた要求側IID
が書き込まれているOTA61内の行内で、対応する割り当
てられたL1ディレクトリ・エントリを見つけるために使
用される。しかし、見つかったOTAエントリの有効ビッ
トVI=1の場合、そのIIDはL1エントリのデータ単位に
アクセスしたOOSオペランドをもつ最後の命令を識別
し、現OOS命令は異なるIIDをもち、それが比較機構68−
1ないし68−4に提供される。IIDが見つかったOTAエン
トリ68内の有効IIDより大きいことが、見つかったOTAエ
ントリ68に対応する比較機構で検出された場合、関連す
る書込みゲートがイネーブルされて現IIDを新しいIIDと
してそのOTAエントリに書き込み、そのVIビットは1の
ままとなる。このように、IIDは以前の有効OOS IIDをオ
ーバレイできるので、任意のOTAエントリ内の有効IID
が、関連するL1データ単位に対するOOSフェッチを実行
する最も新しい命令のOOS IIDを表すようになる。
OFS62は、その命令のIIDを使用することによって、(1
つの命令に対して発生された最高で1対のフェッチ・オ
ペランドを表す)最高で1対のL1エントリのEA1及びEA2
アドレスをルックアップするために、完了IIDが使用で
きるようにする。EAは、関係するOOSフェッチ・エント
リのOTA62(及びL1ディレクトリ)内での位置を見つけ
るために使用される。
FQ要求のEAは、新しいOOS FQ要求がL1キャッシュに提供
されたときに、そのOOSフィールド、IID、及びVIをセッ
トすべきキャッシュ・エントリを見つけるために使用さ
れる。NAPR回路がフェッチ要求、すなわちFQ(NAPR).I
ID(ただしNAPR>NIPR)に信号L1 DIR(EA).OOS=1を
提供させるとき、第11図のANDゲート60からEAに信号が
送られる。OFS62内の選択された行で必要なエントリを
見つけるには、提供されたIIDをOFSアレイ内へのインデ
ックスとして使用する。その命令の提供されたIIDが、
必要な行をアドレスし、選択されたOFS行にEAを書き込
む。FQエントリ内のEAは、通常のL1 LRU回路(図示せ
ず)によってOTAエントリを割り当てられたキャッシュ
・ディレクトリ内の行をアドレスする。次いで、EAが割
り当てられたOFSエントリに書き込まれ、そのVEビット
が1にセットされ、さらにIIDが見つかったOTAエントリ
に書込まれ、そのVIビットが1にセットされる。
無効にされるL1エントリを探す(XIで提供されたEAを使
った)XI探索で、同時に有効OTAエントリが探される。X
IビットのOTAエントリが見つかった場合、そのOOS IID
が、4つの連想式ゲート66のうちの1つを介して命令完
了論理回路31に読み込まれて、OTA61及びOFS62内のすべ
てのエントリを無効にし、XIヒットIIDからまたはその
前からプログラム再試行を行なわせる。このプログラム
再試行は、XIヒットIIDによって識別される命令または
前の命令の再実行(再試行)から始まる現プログラムの
実行であり、以前のOOS問題を解消するためのものであ
る。リセットは、線70からの信号で指示され、いずれか
のゲート66がイネーブルされ次第、OFS62及びOTA61内の
すべての有効ビットVE及びVIに対して同時に行なうこと
が好ましい。
L1キャッシュ・エントリに対するXIヒットからそのIID
が決定された命令ではなく、最も古い未完了命令から再
試行プロセスを開始する命令順序制御論理回路31の方が
実施しやすいことがある。最も古い未完了命令の後のす
べての未完了命令も再試行されるので、それらの未完了
命令はすべて、XIヒットによって決定されたIIDをもつ
命令を含むことになる。追加の二三の命令の再実行によ
ってCPU性能がわずかに低下することがある。再試行プ
ロセスが、XI要求によって識別されるOOSシーケンス・
オペランドをもった命令に達すると、そのオペランド
は、必要ならL2キャッシュから更新を加えて再びアクセ
スされる。再試行された命令が実行されるとき、それら
の命令がOOS問題のあるフェッチ・オペランドをもち、O
TA61及びOFS62内でOOSエントリが再度セットされること
がある。
各命令実行が完了したときの通常の動作は、OTA61及びO
FS62内に関係するOOS IIDエントリがあればそれを無効
にすることである。これを行なうため、装置31からの完
了IIDがOFS62をアドレスして、IIDインデックスにある
エントリにアクセスする。そのOFSエントリのVEビット
=1である場合、IIDはL1キャッシュ内に少なくとも1
つのOOSフェッチ・オペランドをもつ命令を表し、そのE
Aが、OTA61内の行をアドレスし、その行内のOOS IIDエ
ントリの位置を連想的に探すためにゲート・アウトされ
る。すなわち、その行内の4つのエントリのうちの1つ
のエントリ内の1つのIIDが、セット連想式ゲート69に
よって読み出され、完了IIDがequal−to比較機構67−1
ないし67−4の1つによって検出される。したがって、
比較機構67が等しいIIDを見つけた場合、そのIIDが、そ
のVIビットを0にリセットることによって無効にされ
る。異なるIIDをもつ後の命令による後続のOOSフェッチ
がいずれかの有効OTAエントリにアクセスする場合は、
比較の結果等しくはならないが、4つのgreater−than
ゲート68の1つがイネーブルされて、そのOOS IIDを後
の命令のOOS IIDに変更する。
OOS直列化制御: 直列化命令は、CPU動作の直列化を行なう命令である。
この命令は、「IBMエンタープライズ・システム・アー
キテクチャ/370解説書」、(資料番号SA22−7200−0)
ページ5−76及び5−77の見出し「CPU直列化」の所で
定義されている。COMPARE AND SWAP、LOAD PSW、INVALI
DATE PAGE TABLE ENTRY、PROGRAM CALL、PROGRAM RETUR
NなどCPU直列化を引き起こすいくつかのCPU命令(すな
わち直列化命令)がそこにリストされている。
IBM S/370直列化命令のアーキテクチャは、直列化命令
のオペランドがフェッチされる前に、以前のすべての命
令オペランドにアクセスすることを要求している。
さらに、そのアーキテクチャは、次の命令が実行のため
にフェッチされる前に、各直列化命令の実行が完了し、
システムにその結果がすべて見えるようになることを要
求している。本発明では、XIが可能なOOSフェッチ環境
でこの要件を満たすために、PSIFT(直列化命令後フェ
ッチ・テーブル)を提供する。PSIFTは、第8図に示さ
れており、その各エントリはEA及びVフィールドをも
つ。直列化命令が未完了の間に、後続の各命令のエント
リがPSIFT内で作成される。このエントリ内のEAは、そ
れで表される命令の記憶アドレスであり、Vビットは、
このエントリが有効か否かを示す。入力された直列化命
令が完了したときにXIが発生しない場合は、PSIFT内の
すべてのエントリは、次の直列化命令発生の準備として
無効にされ、PSIFT動作が存在しなかった場合と同様に
命令フェッチが続行される。しかし、PSIFT内に有効エ
ントリがあるときにXIが発生した場合は、XI.EA(XI要
求のEA)がPSIFT内のいずれかの有効エントリのEAに等
しいかどうか再試行するよう指示され、次いで、PSIFT
内のすべてのエントリが無効にされる。
直列化命令が復号され、OOSモードが存在するとき、第1
9図のこの命令に対する完了待ち行列(CQ)エントリ内
でSERビットがオンにセットされる。この直列化命令が
フェッチを実行する場合、第5図のそのFQエントリ内で
そのOOSビットがオンにセットされる。次いで、フェッ
チ要求のためのデータが順序外れで返されるか、概念的
順序で返されるからには関係なく、第9図または第11図
のL1 OOSフィールドが、各直列化命令による各フェッチ
要求ごとにセットされ、またその直列化命令が未完了の
間に要求された後続の命令による各フェッチ要求ごとに
セットされる。
第5図のFQを使用すると、直列化命令の動作でフェッチ
をオーバラップさせることが可能になる。直列化命令の
実行が未完了の間、直列化命令の各フェッチ・オペラン
ド、後続のすべての命令の各フェッチ・オペランド、及
び後続の各命令フェッチは、OOSフェッチと見なされ、
各OOSフェッチにFQエントリが割り振られる。
プロセッサは、それらの動作を実行できるようになり次
第、直列化命令及び後続の命令のオペランドをフェッチ
することができる。
したがって、各直列化命令の前後で前のフェッチ及び後
のフェッチの完了を待つことなく、中断なしに命令復号
を続行することができる。
現在実行中の直列化命令の完了前に別の直列化命令に出
会った場合は、現直列化命令の完了まで次の直列化命令
が遅延されることがある。
OR回路62の出力は、第17図でOR回路61に入力として提供
されて、EAでアドレスされたL1キャッシュ・ディレクト
リ・エントリ内のOOSビットをオンにする。したがっ
て、直列化命令のオペランド、オーバラップしている先
行命令のオペランド、及び直列化命令の実行完了前に復
号された後続命令のオペランドを含めて、すべてのオペ
ランドは、直列化命令の実行中に実行される命令のため
に復号された場合、L1に対してOOSとマークされる。
L1 OOSフィールドは、各XI実施例について前述したよう
にしてリセットされる。
OOSDT実施例: 本発明の第3の実施例は、完全連想式OOSDT(順序外れ
従属性テーブル)を使用するもので、第24図に示されて
いる。この実施例は、OOSフェッチ露出ウィンドウの検
出サイズを縮小することにより、前述の実施例より命令
再試行効率が高くなる。すでに説明したように、「OOS
フェッチ・ウィンドウ」とは、XIが発生して、MP内のプ
ロセッサによるデータ・フェッチが、OOSフェッチされ
るデータの保全性を損なう恐れがある期間である。この
OOSDT実施例は、OOSウィンドウのサイズを最小サイズに
縮小し、OOSフェッチ保全性露出ウィンドウ内で発生し
うるXIの数を最小にする効果をもつ。
OOSDT実施例は、各OOSフェッチ中に検出可能なOOS露出
ウィンドウを有効に提供する。OOSDT実施例は、最小OOS
露出ウィンドウを検出するための実際の露出期間が終了
したときに各OOSウィンドウを終了させる、OOSフェッチ
間の従属関係を一義的に検出する。
前述の各実施例では、XI発生に対するフェッチ保全性保
護に必要な最小OOSウィンドウよりいくぶん大きいOOS X
I露出ウィンドウを検出する。しかし、他の実施例は、
コンピュータ・システムに組み込むのがより簡単になる
ことがあり、そのような場合には、それらの実施例が好
ましい。すなわち、検出可能な見かけのOOSウィンドウ
の間に他の実施例によって検出されたいくつかのXI要求
は、実際には実際の(最小)OOSウィンドウ外で発生
し、XI要求にとって不必要な命令再試行をもたらすXI露
出の偽検出であることがある。これらの不必要な再試行
で、CPUの実行効率が低下することがあるが、これらの
余分な再試行はCPUの実行データ結果の保全性には影響
を与えない。というのは、必要とされたオペランドをも
つ命令を適切な順序で再実行すると、必要な実行結果が
得られるからである。
OOSDT実施例では、命令再試行は、現プログラムの実行
を(異なる命令である場合にXIが検出されるOOSウィン
ドウを生ずるOOSフェッチを指定した命令からではな
く)その最も古い未完了命令から再開する命令順序制御
論理回路31によって、他の実施例と同様に実行される。
OOSDT実施例で検出される最小OOSウィンドウは、他の実
施例のOOSウィンドウより存在する期間が短く、前述の
他の実施例の場合より偽XI OOSヒットの検出が発生する
可能性が大きい。なぜなら、他の実施例では、検出され
たOOSフェッチ状態がOOSDT実施例ほど速く無効にされな
いからである。たとえば、OOS IID実施例では、露出OOS
データにアクセスしたフェッチ・オペランドをもつ命令
が完了するまで、OOS露出ウィンドウは終了しない。し
かし、OOSDT実施例では、OOSDT内で従属性が見つからな
いとき、OOSフェッチ・オペランドのためのデータの返
送時にOOSウィンドウが終了する。OOSDT実施例は、より
複雑であり、実施により費用がかかるので、特定のMPシ
ステム設計に最適の実施例が選択されるよう重視すべき
要件の取捨選択を行なわなければならない。
OOSDT実施例では、検出されたOOS露出ウィンドウは、有
効エントリがOOSDTテーブルに入れられたときに始ま
り、そのエントリがOOSDTテーブルから無効にされる
(除去される)まで存在する。したがって、XI発生に対
するOOSウィンドウは、対応するエントリがOOSDT内に存
在する間のみ使用可能である。
各OOSDTエントリは、従属性フィールドDIDOをもち、こ
れはOOSウィンドウの終了を決定するために使用され
る。1つまたは複数のOOSウィンドウに対する従属性が
同時に決定されないとき、それらのウィンドウが同時に
終了することがある。
OOSDT実施例では、用語IDFO、IDSO、及びIDOを使用する
が、これらはそれぞれ、命令内のあるオペランドに対す
るIIDとFQE内のオペランド番号の連結によって表され
る。IDFOは、識別済みのフェッチ・オペランドを表す。
IDSOは、識別済みのストア・オペランドを表す。IDO
は、フェッチかストアのいずれかのタイプの識別済みオ
ペランドを表す。すなわち、IDOは、IDFOかIDSOのいず
れかである。
FQエントリが存在する間は、それはIDFOによって表され
る。SQエントリが存在する間は、それはIDSOによって表
される。しかし、OOS要求または疑似OOS要求に対するID
FOまたはIDSOは、そのFQまたはSQが待ち行列から外され
てもはや存在しなくなった後も、記憶階層内で記憶され
続ける。記憶階層内のIDFOまたはIDSOは、アクセスされ
ているそのデータにタグ付けされるので、記憶装置アク
セスが完了し次第、IDFOまたはIDSOを要求プロセッサの
実行装置に返すことができる。
このように、OOSDT実施例では、キャッシュ制御機構が
各キャッシュ・ミスのIDFO及びEAを記憶し、それらは後
で実行装置に返されるときに、そのデータにタグ付けさ
れる。したがって、 IDFO(RETURN.IDFO)は、データCPUの実行装置に返すべ
きときにL1キャッシュ制御機構から得られる。RETURN.I
DFOは、フェッチされたデータがCPU内の実行装置に提供
されたとき、第24図の線171上から「データ返送用並列
論理回路」172に送られる。
第24図は、OOSDTアレイ160(ハードウェア・テーブル)
と、OOSDTアレイ160とともに動作するハードウェア論理
回路(以後OOSDTと呼ぶ)とを含むOOSDT実施例を示す。
OOSDT160は、完全連想式アレイであって、提供された値
とすべてのエントリ内の選択されたフィールドの内容と
の並列比較に基づく連想式探索が可能である。各OOSDT
エントリは、原理フィールドIDFO、従属性フィールドDI
DO、記憶位置フィールドEA、有効ビットV、及びL1に対
するその要求が未解決のキャッシュ・ミスとなったこと
を示すキャッシュ・ミス・ビットMをもつ。
OOSDTエントリは、各OOSフェッチ要求及び疑似OOSフェ
ッチ要求に対して作成されるが、非OOSフェッチ要求に
対しては作成されない。すなわち、OOSDTエントリは、F
SB、S1、S2、OSC.IDSO、OOS、またはMのいずれかのフ
ィールドがオンにセットされた各FQEに対して割り振ら
れ、作成される。OOSビット・フィールドは、NAPR>NIP
Rのときオンに(1に)セットされ、他のFQEフィールド
はそれぞれ疑似OOS状態をもたらす。これらのいずれか
の条件が存在する場合、割り振られたOOSDTエントリ内
のIDFOフィールドは、NAPRが現在指しているFQE内のIDF
Oを受け取る。このIDFOは、FQ(NAPR).IDFO信号として
線131上に提供され、L1に対するフェッチ要求の発行後
ただちに、割り振られたOOSDTエントリ内のIDFOフィー
ルドにゲートされ、FQE内のFRビットが1にセットされ
る。
第23図は、OOSDT実施例で提供される、L1キャッシュ対
するFQE要求を制御するためのNIPR論理回路及びNAPR論
理回路を示す。OOSDTエントリは、FR=0のFQEを指すNA
PRが新たに設定されるたびに、NAPR>NIPRの間に、また
はいずれかの疑似OOSフィールドがFQE内で1にセットさ
れている間に、OOSDT160内で作成される。どの(そのVI
ビットが0にセットされている)無効OOSDTエントリ
を、OOSフェッチ要求または疑似OOSフェッチ要求に対し
て割り振ることもできる。並列組合せ論理回路1は、す
べてのFQエントリ内の現NIPR値及びFRフィールドを受け
取って、次のNIPRポインタ値を生成する。並列組合せ論
理回路2は、すべてのFQエントリ内の現NAPR値及びFR、
VE、V(OSC)、FSB、S1、及びS2フィールドを受け取っ
て、次のNAPRポインタ値を生成する。比較機構3は、次
のNAPR値とNIPR値を比較して、線124上にNAPR>NIPR信
号を発生する。
また、各キャッシュ・ミスごとに新しいOOSDTエントリ
が作成される。キャッシュ・ミスは、IDFO及びEAがミス
信号と共にタグとしてOOSDT制御機構に提供される点を
除き、通常の方法でキャッシュによって信号で指示され
る。このミス信号によって新しいOOSDTエントリが割り
振られ、そのMフィールドが、そのミスが信号で指示さ
れたサイクル中に1にセットされる。キャッシュ・ミス
の場合、その要求がOOSであるために前のエントリをも
っていたか否に関係なく、新しいOOSDTエントリが提供
される。そのフェッチ要求がOOSでない場合は、前のOOS
DTエントリは存在しない。そのことは、第23図の比較機
構3からのNAPR=NIPR信号によって指示される。したが
って、任意のキャッシュ・ミス・フェッチに対して2つ
のOOSDTエントリが存在する場合でも、障害は起こらな
い。
第24図に示したように、割り振られたOOSDTエントリ内
のIDFOフィールド(OOSDT.IDFO)は、いくつかのタイプ
のOOSフェッチ要求または疑似OOSフェッチ要求のいずれ
か1つが存在する場合に、ゲート148または149よって書
き込まれる。FQ(NAPR).IDFO信号によって線131上に提
供される、OOSDTエントリ内のIDFOフィールドは、ゲー
ト148が以下の信号の1つによってイネーブルされると
き、ゲート148によって書き込まれる。
1.線124上のNAPR>NIPR信号。これは真のOOSフェッチ条
件である。
2.線121、122、または123の1本上の疑似OOSフェッチ信
号。これは、次のいずれかである。
a.FSB(ストア・バッファからのフェッチ)信号。これ
は線121上でFQ(NAPR).FSB信号として指定される。
b.直列化命令フェッチ・オペランド標識S1。これは線12
2上でFQ(NA PR).S1として指定される。
c.未完了の直列化命令に続き、それとオーバラップして
いる命令内のフェッチ・オペランド用の直列化命令後フ
ェッチ標識S2。これは線123上でFQ(NAPR).S2信号とし
て指定される。
OOSDTエントリは、OOS状態または疑似OOS状態のいずれ
かがFQE内に存在する場合に、それで表されるオペラン
ド・データに対するストア要求を行なうため、NAPRによ
ってFQEが選択されるマシン・サイクルで生成される。
次いで、FQE内のIDFO及びEAが、割り振られたOOSDTエン
トリ内のIDFOフィールド及びEAフィールドにゲートさ
れ、そのOOSDTエントリ内のVIビットが状態1にセット
される。第23図では、キャッシュ・ミス状態の場合を除
き、同じフェッチ・オペランド要求に対して複数のOOS
エントリを管理しなくてもいいように、前述のOOSDT実
施例の動作に対して制限が設けられている。すなわち、
キャッシュ・ミスの場合を除き、OOSDT実施例では、1
つのフェッチ要求につきただ1つのOOS状態が許され
る。FQEは、次のOOS状態または疑似OOS状態、すなわちN
APR>NIPR状態、またはSBからのフェッチ状態、またはS
1=1状態、またはS2=1状態のうちのいずれか1つで
フェッチ要求を行なうことができる。
フェッチ・オペランドに対する複数のOOS状態の処理に
より、OOSDT実施例の動作がきわめて複雑になり、その
ハードウェア実施態様はきわめて高価になることがある
が、複数OOS状態はまれにしか予想されないので、シス
テム全体の性能はほとんどまたは全く影響を受けない
(前の2つの実施例は、OOSDT実施例とはその動作が大
きく異なるので、複数OOS状態のどのような組合せをも
処理できる。) OOSDT実施例では、特別のNAPR動作内で追加テストを実
施することにより、「フェッチ要求1件当りせいぜい1
個のOOS状態」という制限を実施する。この追加テスト
は、NAPRが、NAPR動作に対して以前に定義されたフェッ
チ基準に合致するFQEを指すときに実行される。この追
加テストでは、NAPRが指すFQEに対して複数のOOS状態ま
たは疑似OOS状態が存在するか否かを判定する。NAPRが
指すFQEに対してOOS状態が存在しない場合、または1つ
のOOS状態が存在する場合は、L1キャッシュに対してフ
ェッチ要求が発行される。FQEに対して複数のOOS状態が
存在する場合は、NAPRが指すFQEは(それに対するフェ
ッチ要求を行なわず)スキップされる。最終的に、スキ
ップされたFQEは、そのOOS状態が解消される。スキップ
されたFQEがNAPRよって何回も指され、スキップされ
て、そのOOS状態がせいぜい1個のOOS状態に減少した
後、最終的にフェッチ要求されることもある。
たとえば、フェッチ・オペランドがFQE.S2=1をもつ
(まだ完了していない直列化命令の後に続くため疑似OO
S状態を示す)と仮定する。この場合、このFQEをNAPRが
指しているときにこのFQEがNAPR>NIPR状態(第2OOS状
態)をもつ場合は、追加のNAPRテストでフェッチ・オペ
ランドが2つのOOS状態をもっと判定され、フェッチ要
求に対してNAPRがそのFQEを選択することはできない。
このとき、NAPRは、OOSDT NAPR基準に合致する次のFQE
を選択する。
第23図では、NAPR>NIPR状態に関する制限は、NAPRが指
すFQEが、キャッシュ要求を行なう直前に、かつOOSDTエ
ントリを生成できる前に、次の状態、すなわちVE=1、
FR=0、FSB=0、V(OSC)=0、S1=0、及びS2=0
をもたなければならないという要件によって制御され
る。こうすると、疑似OOS状態が存在しない場合にだ
け、NAPR>NIPR状態に対してOOSDTエントリが作成され
るようになる。すなわち、FSB=0の間はFSB状態は存在
することができず、OSC=0の間はOSC状態は存在でき
ず、S1=0かつS2=0の間は直列化命令状態は存在でき
ない。OOSDTエントリをもつ要求が後でキャッシュ・ミ
スとなった場合、その要求に対する第2のOOSDTエント
リが作成され、その要求が(NAPR>NIPR状態によって示
される)早目のフェッチ要求及び(キャッシュ・ミス状
態によって示される)遅目のフェッチ要求になったこと
を示す。
各OOSDTエントリは、そのDIDOフィールド内で示される
除去従属性をもち、それがL1キャッシュ制御機構からOO
SDTに返されるIDFO情報と比較される。OOSDTエントリ内
のDIDOフィールドは、IDFOフィールドがそのOOSDTエン
トリに書き込まれるのと同時にそのOOSDTエントリ内に
書き込まれる。DIDOフィールドに書き込まれる内容は、
それに対するOOSDTエントリが作成されているFQE内で指
示されるOOS状態または疑似OOS状態のタイプによって制
御される。有効OOSDTエントリのDIDOフィールドの内容
によって、そのOOSDTエントリが後でそのOOSDTから(無
効にすることによって)どのように除去されるかが決ま
る。OOSDTエントリの除去は、DIDOフィールドで指示さ
れる情報が記憶装置から返されたときに行なわれる。
第24図に示すように、割り振られたOOSDTエントリ内のD
IDOフィールド(OOSDT.DIDO)は、いくつかのタイプのO
OSフェッチ要求または疑似OOSフェッチ要求の1つが発
生した場合に、ゲート142、143、144、または146のうち
の1つによって書き込まれる。OOSDTエントリ内に書き
込まれるDIDO値及びそのゲート信号は次のように指示さ
れる。
1.線124上の真のOOSキャッシュNAPR>NIPR状態は、DIDO
フィールド:FQ(NUPR).IDFOに書き込まれる。
2.線121、122、または122のうちの1本上の疑似OOSフェ
ッチ信号は、次のように動作する。
a.線121上のFSB(ストア・バッファからのフェッチ)信
号FQ(NAPR).FSBは、DIDOフィールド:FQ(NAPR).IDSO
(CSC)にゲートされる。
b.線122上の直列化命令フェッチ・オペランド標識FQ(N
APR).S1は、DIDOフィールド:PSOP.IDSOにゲートされ
る。
c.線123上の直列化命令後フェッチ標識FQ(NAPR).S2
は、DIDOフィールド:LSIDSO.IDSOにゲートされる。
ある要求に対してNAPR>NIPR OOS状態が存在する場合、
線129上に提供されるFQ(NUPR).IDFOと名付ける信号を
使って、第5図に示すNUPRが現在指してるFQE内のIDFO
フィールドである、割り振られたOOSDTエントリ内に書
き込まれたDIDOを決定するために、NUPRが指すFQEが使
用される。
NAPR>NIPR状態の場合、DIDOは、DIDOを表すFQエントリ
をアドレスするNUPR(次の未フェッチ・ポインタ・レジ
スタ)の動作によって選択される。NUPRによるDIDOの決
定が必要になるのは、NAPRポインタがNIPRポインタより
大きくなって、NAPRポインタとNUPRポインタの間に、フ
ェッチ要求を行なっていない少なくとも1−のFQエント
リが存在することを示すときである。このとき、NUPR
は、最初NAPRポインタにセットされ、NIPRポインタの方
向で次のFQエントリを指すようにNUPRポインタが減分さ
れる。フェッチ要求(FR)ビットは、FQエントリがテス
トされるとき使用され、FRが0に等しくならない限り、
NUPRは再び減分される。NUPRがFR=0のFQエントリを選
択するまで、このテストが繰り返される。
次に、NUPRによって選択されたFQEのIID及びオペランド
#が、OOSDTエントリに対するDIDOとして読み出され
る。NAPRによって選択された現FQEのIID及びオペランド
#が、同じOOSDTエントリに対する対応するIDFOとして
読み出される。また、NAPRエントリのEAが読み出され
て、選択された現OOSDTエントリ内に書き込まれ、OOSDT
エントリ内のVビットが1にセットされて、そのエント
リを有効にする。
疑似OOS状状態が存在しないとき、NUPR動作は、次の表
現によって記述することができる。
NAPR=NIPR=NUPRの場合、OOSFQエントリがなく(OOSDT
エントリが割り振られていず)、NUPRはどのDIDOも選択
できない。
NAPRが=NIPRでないとき、NUPRをNAPRにセットする NAPRは割り振られたOOSDTエントリに対するIDFOをもつF
Qエントリを選択するが、NUPRはNUPR=NAPRの間どのDID
Oも選択しない。NUPRを、より小さいIIDをもつ次の各FQ
Eを指すように−1ずつ減分しFQEのFR=1の場合、再び
減分する。
FQEのFR=0のとき、NUPRの減分を停止する。
NAPRがそのIDFOをもつFQEを指している間に、NUPRポイ
ンタは、OOSDTエントリに対するDIDOをもつRQEを選択す
る。
SBからのフェッチの場合、DIDOは、NAPRによって選択さ
れたFQエントリのOSC制御フィールド、すなわちFQ(NAP
R).IDSO(OSC)であり、このFQエントリ以前のSBに対
する最後のストア要求を識別する。次に、IDSO(OSC)
で識別されるSQエントリ内のFSBビットがオンにセット
される。FQエントリ内のSB#(ストア・バッファ番号)
フィールドが、そのストア要求に対するFQエントリが生
成されたとき、SB内の割り当てられた位置でセットされ
る。SBフェッチは、同じFQ要求に対するキャッシュ・ヒ
ットがデータを返すことができるとき(標準データ返送
時)より前にデータを返すので、早目フェッチと見なさ
れる。
キャッシュ・ミスの場合にOOSDTエントリが生成された
ときは、割り振られたOOSDTエントリ内のIDFOフィール
ドとDIDOフィールドは、その代りに、ミス信号とともに
L1キャッシュから返送されたRETURN.IDFOにセットされ
る。線138から提供されるキャッシュ・ミス信号が、ゲ
ート149、152、及び153をイネーブルする。これらのゲ
ートは、割り振られたOOSDTエントリ内のIDFOフィール
ド、EAフィールド、及びMフィールドに、それぞれ線13
2上でRETURN.IDFO、線133上でRETURN.EA、線137から状
態1をゲートする。
OOSDT直列化制御: OOSDT実施例はまた、命令ストリーム内の直列化命令の
影響を受けるオペランドのオーバラップしたフェッチを
も支援する。OOSDT実施例は、直例化に出会ったときに
命令ストリームの実行を遅らせる通常の直例化オーバヘ
ッドを解消または軽減し、通常のシステムで発生する、
直列化命令に対する命令復号プロセスの停止を回避す
る。
直列化命令の影響を受るフェッチ・オペランドは、FQ内
の各エントリに直列化制御ビット・フィールドS1及びS2
を追加することによってタグ付けされる。直列化命令の
各フェッチ・オペランドのFQE内のビットS1がオンに
(1に)セットされる。直列化命令に続く命令のフェッ
チ・オペランドに対するFQE内のビットS2が、その直列
化命令が実行を完了する前の期間中にオンに(1に)セ
ットされる。1にセットされたS1またはS2ビットによっ
てタグ付けされたすべてのフェッチ・オペランドは、本
発明では疑似OOSフェッチ・オペランドとして処理され
る。それらは、NAPRとNIPRの間の関係を使用しないの
で、疑似OOSフェッチと見なされる。
S1またはS2がオンのFQEに対してL1キャッシュ要求が発
行されると、FQ(NAPR).EA信号が第17図からの線73上
で第24図のOOSDT実施例に送られる。OOSDT実施例では、
この信号により、疑似OOSフェッチ要求に対するOOSDTエ
ントリを割り振る。
直列化命令のOOS処理は、PSOP(前のストア・オペラン
ド・ポインタ)レジスタ及びLSIDSOレジスタによって支
援される。どちらのレジスタも、第6図に示されてい
る。
PSOPレジスタは、新しく生成された各SQエントリ内のID
SOを受け取る。受け取られた各IDSOは、PSOPレジスタ内
のIDSOにオーバレイする。したがって、PSOPレジスタ
は、最後に復号されたストア・オペランドのIDSOを維持
する。ただし、PSOPの内容は、直列化命令が復号された
とき凍結される。
LSIDSOレジスタは、それぞれが次のものにオーバレイし
た、復号された各直列化命令の各ストア・オペランドの
IDSOを受ける。したがって、LSIDSOレジスタは、現在復
号されている直列化命令の最後に復号されたストア・オ
ペランドのIDSOを記憶する。
したがって、いずれかの直列化命令が復号されていると
き、PSOPレジスタは、その直列化命令の直前の最後のス
トア・オペランドのIDSOを含む。復号が進むにつれて、
直列化命令のために要求される各フェッチに対して割り
振られたFQE内のS1ビットが、オンにセットされる。た
だし、直列化命令内のストア・オペランドに対するFQE
は含まない。S1=1の各FQE要求に対してOOSDTエントリ
が作成され、そのDIDOフィールドは、PSOPレジスタ内の
現IDSO内容(PSOP.IDSO)にセットされる。
直列化命令がその実行を完了する前に、後続の命令はそ
のオペランド指定を復号することができ、次いで、直列
化命令の実行とオーバラップする後の各フェッチ・オペ
ランドに対して割り振られた各FQE内のS2ビットがオン
にセットされる。
直列化命令の最後に復号されるオペランド指定は、スト
ア・オペランドに対するものであることもあるが、すべ
ての直列化命令がストア・オペランドをもつわけではな
い。直列化命令がストア・オペランドをもつ場合、最後
のストア・オペランドを表すSQE内のIDSOがセットされ
て、LSIDSOレジスタに入れられる。S2=1のFQE要求に
対して作成されたOOSDTエントリ内のDIDOフィールド
が、LSIDSOレジスタ内の現IDSOの内容(LSIDSO.IDSO)
にセットされる。
データ返送: フェッチ要求を満たすためキャッシュからデータが返さ
れるとき、OOSDTエントリに対するDIDO従属性の決定が
行なわれる。このデータ返送動作では、XI要求に対する
OOS露出ウィンドウを終了するためにOOSDT内でいずれか
のOOSDTエントリを除去(無効化)すべきかどうか、ま
たは異なるオペランドのためのデータの反送を待つよう
に1つまたは複数のOOSDTエントリの除去従属性を変更
すべきかどうかを判定する。
キャッシュ回路は、各キャッシュ要求とともに提供され
たEA及びIDFOまたはIDSOを記憶する。これらは記憶階層
内でそのデータがアクセスされるとき、要求されたデー
タにタグ付けされる。記憶階層が要求されたデータのア
クセス(フェッチまたはストア)を完了したとき、キャ
ッシュは、フェッチされたデータまたはキャッシュ・ミ
ス信号と同時にEA及びIDFOを返送することによって、あ
るいはストアに対する完了信号と同時にEA及びIDSOを返
送することによって、アクセスの完了を伝える。RETUR
N.IDFO及びRETURN.EAが、第24図の線132及び134上で受
け取られる。
第25図は、第24図に見られる並列論理回路172をより詳
細に示したものである。回路172は、各RETURN.IDFOを、
すべての有効OOSDTエントリ内のすべてのIDFOフィール
ド及びすべてのDIDOフィールドと、並列に比較する。M
=0であり、かつOOSDTエントリiがRETURN.IDFOに等し
いOOSDT(i).IDFOフィールドをもつことが判明した場
合、そのOOSDT(i).DIDOフィールドがDIDOREGと呼ぶ
レジスタに読み込まれ、DIDOREG内のVビット・フィー
ルドがオンに(状態1に)セットされる。(エントリi
内のIDFOフィールド及びDIDOフィールドは、OOSDT
(i).IDFO及びOOSDT(i).DIDO、またはIDFO(i)
及びDIDO(i)として表されることがある。) しかし、OOSDT内の1つまたは複数のエントリj内でRET
URN.IDFOに等しいDIDOフィールドが見つかった場合は、
そのDIDOREG.DIDOがテーブル内の各OOSDT(j).DIDOフ
ィールドにコピーされる。この処理によってOOSDTエン
トリjに対する従属性が変更され、その結果、それらの
除去はその後はDIDO(i)で識別されるオペランドのた
めのデータの返送によって制御されるようになる。
しかし、OOSDT(i)エントリが見つからなかった場合
は、RETURN.IDFOに等しい各DIDO(j)フィールドにつ
いて、見つかった各OOSDTエントリjが、そのV=0を
セットすることによって無効にされる。
RETURN.IDFOに等しいOOSDT(i).IDFOフィールドをも
つことが判明したいずれかのエントリ内でM=1によっ
てキャッシュ・ミスが指示されたとき、OOSDTエントリ
iが、そのV=0をセットすることによって無効にされ
る。なぜなら、そのデータを受け取った後は、その要求
はもはやOOSではないからである。(M=1のOOSDTエン
トリ内ではIDFOとDIDOは等しい。) ストアの完了は、DIDO(j)がRETURN.IDO(すなわちID
SO)に等しいとき、OOSDTエントリに対して従属性効果
をもつ。ストアは概念的順序でアクセスされるので、OO
Sとは見なされない。
OOSDT XI動作: 各XI要求は、EA(XI.EAと呼ぶ)を提供し、このEAがす
べてのOOSDTエントリ内のEAと並列に比較される。OOSDT
エントリの比較の結果が等しい(XIヒット))場合は、
命令再試行信号が発生され、これによって再試行動作が
開始される。
正確な動作の説明: OOSDT実施例の動作は、以下の数学的記述によってより
正確に記述することができる。
I.MAKING ENTRIES IN OOSDT: 1.SET NAPR TO POINT TO NEXT FETCH REQUEST(FQE) A.IF NAPR>NIPR,THEN 1)SET NUPR TO POINT TO DIDO FQE 2)ASSIGN OOSDT ENTRY,&SET: a)OOSDT.EA=FQ(NAPR).EA b)OOSDT.IDFO=FQ(NAPR).IDFO c)OOSDT.DIDO=FQ(NUPR).IDFO d)OOSDT.V=1 NUPR設定の決定。FQEフェッチOOSに対するOOSDTエント
リを作成する。
B.IF FQ(NAPR).FSB=1,THEN 1)ASSIGN OOSDT ENTRY,& SET: a)OOSDT.EA=FQ(NAPR).EA b)OOSDT.IDFO=FQ(NAPR).IDFO c)OOSDT.DIDO=FQ(NAPR).IDSO(OSC) d)OOSDT.V=1 SBからのフェッチに対するOOSDTエントリをする。(FSB
タイプのOOSDTエントリの除去は、このOOSDTエントリに
対するOSCを引き起こす命令の完了に従属する。) C.IF FQ(NAPR).S1=1,THEN 1)ASSIGN OOSDT ENTRY,& SET: a)OOSDT.EA=FQ(NAPR).EA b)OOSDT.IDFO=FQ(NAPR).IDFO c)OOSDT.DIDO=SQ(PSOP).IDSO d)SET OOSDT.V=1 直列化命令の実行中のFQEフェッチに対するOOSDTエント
リを作成する。(S1タイプのOOSDTエントリの除去は、
直列化命令の前のストア命令の完了に従属する。) D.IF FQ(NAPR).S2=1,THEN 1)ASSIGN OOSDT ENTRY,& SET: a)OOSDT.EA=FQ(NAPR).EA b)OOSDT.IDFO=FQ(NAPR).IDFO c)OOSDT.DIDO=LSIDSO d)OOSDT.V=1 LSIDSO内の直列化命令の前の最後のストアの前に直例化
命令FQEフェッチに対するOOSDTエントリを作成する。
(S2タイプのOOSDTエントリの除去は、直列化命令の最
後のストアの完了に従属する。) 2.SEND FQ(NAPR)FETCH REQUEST TO CACHE 3.CACHE CONTROLS REMEMBER IDFO & EA OF REQUEST,&IF FQ(NAPR)FETCH REQUEST MISSES IN THE CACHE,IT SENDS TO OOSDT: RETURN.EA & RETURN.IDFO THEN 1)OOSDT ASSIGNS ENTRY,& SETS: a)OOSDT.EA=RETURN.EA b)OOSDT.IDFO=RETURN.IDFO c)OOSDT.DIDO=RETURN.IDFO d)OOSDT.V=1 e)OOSDT.M=1 キャッシュ・ミスの場合、ミス信号をもつOOSDTエント
リを作成する。(キャッシュ・ミスのOOSDTの除去は、
キャッシュ・ミス・データの返送に従属する。) II.OOSDT FQ CONTROL for SERIALIZER INSTRUCTIONS: (一時にただ1つの直列化命令が処理されるものと仮定
する) 1.NORMAL INSTRUCTION DECODING,AND UPON ENCOUNTERING EACH NON−SERIALIZER INSTRUCTION HAVING A STORE OPERAND: A.DECODE THE STORE INSTRUCTION B.ASSIGN A STORE QUEUE ENTRY(SQE) C.SET IDSO IN SQE INTO PSOP(前のストア・オペラン
ド・レジスタ) D.CONTINUE INSTRUCTION DECODING PROCESS 1)UNTIL A SERIALIZING INSTRUCTION IS ENCOUNTERED 直列化命令前の動作における「前のストア」を決定す
る。(PSOPは、各直列化命令に出会う前に最後のストア
をもつ。) 2.SERIALIZER INSTRUCTION ENCOUNTERED & DECODED: A.PROVIDE FQE FOR EACH SERIALIZER FETCH OPERAND SET FQE.S1=1 SET FQE.S2=0 B.SET CONTROLS TO HOLD the CONTENTS OF PSOP UNCHAN
GED C.PROVIDE SQE FOR EACH SERIALIZER STORE OPERAND D.SET IDSO OF LAST SERIALIZER STORE OPERAND INTO LSIDSO(最後の直列化命令のIDSO REG) (直列化命令動作。) 3.CONTINUE DECODING INSTRUCTIONS AFTER SERIALIZER A)PROVIDE FQE FOR EACH FETCH OPERAND SET FQE.S1=0 SET FQE.S2=1 B.PROVIDE SQE FOR EACH STORE OPERAND (直列化命令後動作。) 4.COMPLETE PRIOR STORE OPERATION INDICATED IN PSOP (前のストアは、その復号後いつでも完了できる。) 5.SET FQE(ALL).S1=0 6.COMPLETE SERIALIZER STORE OPERATION (直列化命令ストアは、直列化命令の復号及び「前のス
トア」がともに完了した後、いつでも完了できる。) 7.A.SET FQE(ALL).S2=0 B.SET CONTROLS TO ALLOW PSOP TO CHANGE 8.GOTO 1.ABOVE TO CONTINUE EXECUHING FOLLOWING INSTRUCTIONS III.REMOVAL OF OOSDT ENTRIES: A.SET DIDOREG.V=0 B.i=0 TO P(すべてのOOSDT
エントリ上で並列であることが好ましい) 1)IF(OOSDT(i).IDFO=RETURN.IDFO & V (i)=1 & M (i)=0),THEN a)SET DIDOREG.DIDO=OOSDT(i).DIDO b)SET DIDOREG.V=1 (OOSDT(i)=RETURN.IDFOを探し、OOSDT(i)が見
つかった場合、DIDO(i)をセットしてDIDOREGと呼ぶ
レジスタ内のDIDOフィールドに入れ、有効ビットV=1
にセットする。) 2)IF(OOSDT(i).IDFO=RETURN.IDFO & V (i)=1 & M(i)=1),THEN a)SET OOSDT(i).V=0 (OOSDT(i)が見つかり、M=1でキャッシュ・ミス
を表す場合、OOSDT(i)を除去する。) ENDDO C.IF(DIDOREG.V=0),THEN 1)IF(ANY OOSDT(j).DIDO=RETURN.IDFO), THEN a)SET ANY OOSDT(j).V=0 (OOSDT(i)が見つからない場合、DIDO(j)=RETUR
N IDFOのOOSDT(j)を探し、見つかった場合は、各OOS
DT(j)を除去する。) D.ELSE 1)IF(ANY OOSDT(j).DIDO=RETURN.IDFO),THEN a)SET OOSDT(j).DIDO=DIDOREG. DIDO (OOSDT(i)が見つかった場合、各DIDO(j)をDIDO
(i)にセットする。) IV.STORE COMPLETION REGARDING OOSDT: (ストア・オペランドは概念的順序でアクセスされ、し
たがってOOSではないので、OOSDTエントリをもたな
い。) IF(OOSDT(ANY).DIDO=STORE COMPLETE.IDSO)THEN S
ET OOSDT(ANY).V=0 (ストア完了は命令完了を指示し、これによって、この
命令のフェッチに対するOOSDTエントリが除去され
る。) V.XI HANDLING BY OOSDT: IF OOSDT(ANY).EA=XI.EA THEN SIGNAL THE COMPLETION QUEUE(CQ)TO RESET ALL INSTRUCTION EXECUTION IN PROCESS AND BEGIN EXECUTION FROM OLDEST INCOMPLETE INSTRUCTION
【図面の簡単な説明】
第1図は、多重プロセッサ(MP)環境におけるプロセッ
サ及びそれと記憶階層とのインタフェースを示す構成図
である。 第2A図は、概念的順序のアーキテクチャ規則、及び概念
的順序から外れてオペランドをフェッチすることにより
それらの規則にどう違反するのかを示す、ストア及びフ
ェッチ図である。 第2B図は、実行前と実行後の命令ならびに実行が未完了
の命令を含む、プロセッサにおけるパイプライン式命令
シーケンスを示す図である。 第3図は、シーケンス内の他のオペランドに対して早目
または遅目であるため、順序外れ(OOS)となっている
オペランドを含む、フェッチ・オペランドのシーケンス
を示す図である。 第4図は、APR、NAPR、NUPR、NIPR、DQPRという複数の
ポインタ・レジスタを有するフェッチ待ち行列(FQ)を
示す図である。 第5図は、各FQエントリ内のフィールドを表す図であ
る。 第6図は、ストア待ち行列(SQ)とそれに関連するスト
ア・バッファ(SB)、前のストア・オペランド・ポイン
タ・レジスタ、及び最後の直列化命令IDSO(識別済みス
トア・オペランド)を示す図である。 第7図は、各SQエントリ内のフィールドを表す図であ
る。 第8図は、直列化命令フェッチ(PSIFT)制御を示す図
である。 第9図は、本発明の一実施例の各キャッシュ・エントリ
に関連するOOSビット・フィールドを示す図である。 第10図は、第9図に示すOOSビット・フィールドを使用
する実施例を示す図である。 第11図は、本発明の別の実施例の各キャッシュ・エント
リに関連するOOS識別子(OOS IID)フィールドを示す図
である。 第12図は、第11図に示すOOS IIDフィールドを使用する
実施例を示す図である。 第13図は、OOSビット実施例及びOOSデータIIDビット実
施例で使用されるNAPR及びNIPR制御手段を示す論理図で
ある。 第14図は、APR制御手段を示す論理図である。 第15図は、DQPR制御手段を示す論理図である。 第16図は、FQエントリ内のV(OSC)ビットをリセット
するためのリセット論理回路を示す図である。 第17図は、L1(EA).OOSビットのセットとリセットを行
なうための論理回路を示す図である。 第18図は、OOSウィンドウの一例を示すサイクル・タイ
ミング図である。 第19図は、命令完了待ち行列(CQ)とそのポインタ・レ
ジスタを示す図である。 第20図は、CQエントリ内のフィールドを示す図である。 第21図は、CQとともに使用されるIDPR(命令復号ポイン
タ・レジスタ)に対する制御を示す論理図である。 第22図は、命令再試行動作を開始する際に使用される制
御を示す論理図である。 第23図は、OOSDT実施例で使用されるNAPR及びNIPR制御
手段を示す論理図である。 第24図は、OOSDT(順序外れ従属性テーブル)とその制
御を示す図である。 第25図は、OOSDT実施例で使用されるデータ返送用並列
論回路の詳細な構造を示す図である。 11……命令フェッチ制御機構、12……復号器、16……オ
ペランド・アドレス生成(AGEN)/要求装置、18……変
換ルックアサイド・テーブル(TLB)、19……L1キャッ
シュ、21……オペランド・フェッチ待ち行列、22……オ
ペランド・ストア待ち行列、23……実行装置、24……オ
ペランド・ストア・バッファ、26……L2キャッシュ、27
……主記憶装置、31……シーケンス制御装置、32……命
令実行制御機構、33……プログラム割込み制御機構。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】データと命令を記憶する記憶手段をもつ、
    マルチプロセッサ環境で使用される複数のプロセッサ環
    境をもつデータ処理システムにおいて、 該複数のプロセッサのうちの1つのプロセッサが、 (a)少なくとも各々のデコードされたストアされた命
    令に対して、命令が該プロセッサ上で実行されるプログ
    ラムによって与えられる順序で、順次的に命令識別子
    (IID)を割り振る、フェッチされた命令をストアする
    ための命令バッファをもち、上記複数のプロセッサの各
    々のプロセッサにおける命令の順序は、該プロセッサ中
    で割り振られたIIDの列で示され、該命令のオペランド
    には、該命令のIIDが割り振られてなる命令デコード手
    段と、 (b)プライベート(L1)ディレクトリをもつL1キャッ
    シュをし、該L1ディレクトリには各々のデータ単位に対
    応するデータ単位が含まれてなり、上記プロセッサによ
    って最近使用されたデータ単位をストアするための記憶
    手段と、 (c)別のプロセッサからの相互無効化(XI)要求が与
    えられてなる記憶アドレスに等しい記憶アドレスをもつ
    L1エントリを無効化するためのXI手段と、 (d)別のプロセッサにXI要求のためにアクセスされた
    L1エントリに関連付けられた順序外れ(OOS)フィール
    ド中にOOS表示があるかどうかテストするための手段
    と、 (e)フェッチ・オペランドに割り当てられたIIDの概
    念的順序とは無関係に、上記命令デコード手段によって
    デコードされつつある命令のフェッチ・オペランド指定
    のために、上記記憶手段から、データのフェッチを要求
    するための手段と、 (f)フェッチ・オペランドに割り当てれたIIDの概念
    的順序に関連して上記デコード手段によってデコードさ
    れたストア・オペランド指定をストアするために、デー
    タをストアする手段と、 (g)割り当てられたIIDの概念的順序を違反した命令
    のIIDを割れ当てられてなる、デコードされ、または完
    了された命令のフェッチ・オペランドについて、OOS条
    件を検出するためのOOS検出手段と、 (h)全てのフェッチ・オペランドとストア・オペラン
    ドを受け取り、上記OOS検出手段によってOOS条件が検出
    されない限り、上記記憶手段から返されたフェッチの順
    序とは無関係に、概念的順序で各々の命令を完了する命
    令実行手段と、 (i)上記OOS検出手段がOOS条件を検出したフェッチ・
    オペランドをもつ命令から、またはその命令の前から、
    上記プログラムの順序で、上記プログラムを再実行させ
    るように上記命令実行手段を開始させる手段とを有す
    る、 データ処理システム。
  2. 【請求項2】マルチプロセッサ・システムにおいて、該
    マルチプロセッサ・システム中の1つのプロセッサであ
    る特定のプロセッサは、データ及び命令記憶をもち、該
    特定のプロセッサは、プロセッサによって実行されてい
    る個々の命令においてフェッチ・オペランド指定とスト
    ア・オペランド指定を検出することを含む概念的順序で
    命令をデコードするためのデコード手段を含む命令実行
    ユニットと、プログラムの命令の必要に応じてオペラン
    ド・データにアクセスするために該特定のプロセッサに
    よって独占的に使用されるキャッシュを含む階層的記憶
    とを有し、該キャッシュは、該マルチプロセッサ・シス
    テムにおける相互無効化(XI)を要求する他のプロセッ
    サに対するデータ単位の制御を開放するために、該マル
    チプロセッサ・システムにおける他のプロセッサのLI要
    求を受け取るものである、マルチプロセッサ・システム
    において、 該特定のプロセッサが、 (a)上記キャッシュに対するフェッチ要求が、該特定
    のプロセッサのデコード手段によって現在デコードされ
    ている命令中のフェッチ・オペランド指定から生成され
    ると直ちに、フェッチ・オペランド・アドレスを生成し
    要求するための手段と、 (b)上記フェッチ要求が、上記デコード手段からのデ
    コードされたオペランド指定の概念的順序に従っている
    かどうかを決定するための決定手段と、 (c)上記決定手段によって、オペランドの概念的順序
    から外れたと決定された各々のフェッチ要求毎に生成さ
    れたOOSテーブル(OOST)エントリ順序外れ(OOS)テー
    ブル手段と、 (d)上記OOSTから上記OOSTエントリを除去する条件を
    決定するために、上記OOSTエントリに依存性識別子(DI
    DO)を与えるための手段を有し、 (e)各々のOOSTエントリは、オペランドのデータ単位
    毎に、OOSフェッチ・オペランドの識別子(IDFO)と、
    記憶位置(EA)を受け取るようになされている、 マルチプロセッサ・システム。
JP2330983A 1989-12-26 1990-11-30 データ処理システム Expired - Lifetime JPH0677233B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/457,222 US5185871A (en) 1989-12-26 1989-12-26 Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
US457222 1989-12-26

Publications (2)

Publication Number Publication Date
JPH03201130A JPH03201130A (ja) 1991-09-03
JPH0677233B2 true JPH0677233B2 (ja) 1994-09-28

Family

ID=23815897

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2330983A Expired - Lifetime JPH0677233B2 (ja) 1989-12-26 1990-11-30 データ処理システム

Country Status (3)

Country Link
US (1) US5185871A (ja)
EP (1) EP0436092A3 (ja)
JP (1) JPH0677233B2 (ja)

Families Citing this family (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224214A (en) * 1990-04-12 1993-06-29 Digital Equipment Corp. BuIffet for gathering write requests and resolving read conflicts by matching read and write requests
US5450564A (en) * 1990-05-04 1995-09-12 Unisys Corporation Method and apparatus for cache memory access with separate fetch and store queues
JPH0437927A (ja) * 1990-06-01 1992-02-07 Sony Corp プロセッサの処理方法
JPH04263323A (ja) * 1991-02-18 1992-09-18 Nec Corp 機械語命令列並べ換え方式
US5265233A (en) * 1991-05-17 1993-11-23 Sun Microsystems, Inc. Method and apparatus for providing total and partial store ordering for a memory in multi-processor system
US5630157A (en) * 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
EP0537721B1 (en) * 1991-10-15 1998-11-25 Hewlett-Packard Company Hardware-configured operating system kernel for a multitasking processor
US5386526A (en) * 1991-10-18 1995-01-31 Sun Microsystems, Inc. Cache memory controller and method for reducing CPU idle time by fetching data during a cache fill
JPH05241827A (ja) * 1992-02-27 1993-09-21 Nec Ibaraki Ltd 命令バッファ制御装置
JP3920931B2 (ja) * 1992-04-17 2007-05-30 サン・マイクロシステムズ・インコーポレイテッド キャッシュされたデータを読出しおよび書込む方法ならびにデータをキャッシングする装置
US6240508B1 (en) * 1992-07-06 2001-05-29 Compaq Computer Corporation Decode and execution synchronized pipeline processing using decode generated memory read queue with stop entry to allow execution generated memory read
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
EP0663083B1 (en) * 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
JP2560988B2 (ja) * 1993-07-16 1996-12-04 日本電気株式会社 情報処理装置および処理方法
US6138230A (en) * 1993-10-18 2000-10-24 Via-Cyrix, Inc. Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
WO1995016955A1 (en) * 1993-12-15 1995-06-22 Silicon Graphics, Inc. Load latency of zero for floating point load instructions using a load data queue
US5463745A (en) * 1993-12-22 1995-10-31 Intel Corporation Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
US5535358A (en) * 1993-12-27 1996-07-09 Matsushita Electric Industrial Co., Ltd. Cache memory control circuit and method for controlling reading and writing requests
US5826109A (en) * 1994-01-04 1998-10-20 Intel Corporation Method and apparatus for performing multiple load operations to the same memory location in a computer system
SG47981A1 (en) * 1994-03-01 1998-04-17 Intel Corp Pipeline process of instructions in a computer system
TW353732B (en) * 1994-03-31 1999-03-01 Ibm Processing system and method of operation
US5590352A (en) * 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
JPH07302200A (ja) 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
JP2587586B2 (ja) * 1994-05-25 1997-03-05 甲府日本電気株式会社 データ転送方法
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5742831A (en) * 1994-06-30 1998-04-21 Intel Corporation Methods and apparatus for maintaining cache coherency during copendency of load and store operations
US5465336A (en) * 1994-06-30 1995-11-07 International Business Machines Corporation Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system
US5627994A (en) * 1994-07-29 1997-05-06 International Business Machines Corporation Method for the assignment of request streams to cache memories
JPH0877021A (ja) * 1994-09-01 1996-03-22 Fujitsu Ltd 割込処理装置および方法
US5666506A (en) * 1994-10-24 1997-09-09 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle
JP3132749B2 (ja) * 1994-12-05 2001-02-05 インターナショナル・ビジネス・マシーンズ・コーポレ−ション マルチプロセッサ・データ処理システム
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
US5655103A (en) * 1995-02-13 1997-08-05 International Business Machines Corporation System and method for handling stale data in a multiprocessor system
US5887152A (en) * 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5832297A (en) * 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5802588A (en) * 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5761712A (en) * 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5802340A (en) * 1995-08-22 1998-09-01 International Business Machines Corporation Method and system of executing speculative store instructions in a parallel processing computer system
US5721864A (en) * 1995-09-18 1998-02-24 International Business Machines Corporation Prefetching instructions between caches
US5729726A (en) * 1995-10-02 1998-03-17 International Business Machines Corporation Method and system for performance monitoring efficiency of branch unit operation in a processing system
US5752062A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system
US5691920A (en) * 1995-10-02 1997-11-25 International Business Machines Corporation Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5949971A (en) * 1995-10-02 1999-09-07 International Business Machines Corporation Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system
US5797019A (en) * 1995-10-02 1998-08-18 International Business Machines Corporation Method and system for performance monitoring time lengths of disabled interrupts in a processing system
US5748855A (en) * 1995-10-02 1998-05-05 Iinternational Business Machines Corporation Method and system for performance monitoring of misaligned memory accesses in a processing system
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5737636A (en) * 1996-01-18 1998-04-07 International Business Machines Corporation Method and system for detecting bypass errors in a load/store unit of a superscalar processor
US5751946A (en) * 1996-01-18 1998-05-12 International Business Machines Corporation Method and system for detecting bypass error conditions in a load/store unit of a superscalar processor
US5961580A (en) * 1996-02-20 1999-10-05 Advanced Micro Devices, Inc. Apparatus and method for efficiently calculating a linear address in a microprocessor
US5794002A (en) * 1996-03-22 1998-08-11 Raytheon Company System and technique for synchronizing data to instructions in a real time computing application
US6085302A (en) * 1996-04-17 2000-07-04 Advanced Micro Devices, Inc. Microprocessor having address generation units for efficient generation of memory operation addresses
US5841999A (en) * 1996-04-17 1998-11-24 International Business Machines Corporation Information handling system having a register remap structure using a content addressable table
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
WO1998002805A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. A load/store unit with multiple pointers for completing store and load-miss instructions
JP3824657B2 (ja) * 1996-07-16 2006-09-20 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法
WO1998002804A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. Load/store unit and method for non-blocking completion of loads in a superscalar microprocessor
EP0912926B1 (en) * 1996-07-16 2012-02-01 Advanced Micro Devices, Inc. Unified load/store unit for a superscalar microprocessor and method of operating the same
US6163838A (en) * 1996-11-13 2000-12-19 Intel Corporation Computer processor with a replay system
US6385715B1 (en) 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
US6785803B1 (en) * 1996-11-13 2004-08-31 Intel Corporation Processor including replay queue to break livelocks
US6112270A (en) * 1997-10-31 2000-08-29 International Business Machines Corporation Method and system for high speed transferring of strictly ordered bus operations by reissuing bus operations in a multiprocessor system
US6145038A (en) * 1997-10-31 2000-11-07 International Business Machines Corporation Method and system for early slave forwarding of strictly ordered bus operations
US6625756B1 (en) * 1997-12-19 2003-09-23 Intel Corporation Replay mechanism for soft error recovery
US6148394A (en) * 1998-02-10 2000-11-14 International Business Machines Corporation Apparatus and method for tracking out of order load instructions to avoid data coherency violations in a processor
US6269360B1 (en) 1998-04-24 2001-07-31 International Business Machines Corporation Optimization of ordered stores on a pipelined bus via self-initiated retry
JP2001092657A (ja) * 1999-09-22 2001-04-06 Toshiba Corp 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
US6681320B1 (en) 1999-12-29 2004-01-20 Intel Corporation Causality-based memory ordering in a multiprocessing environment
US6848024B1 (en) 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6748492B1 (en) 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6622269B1 (en) * 2000-11-27 2003-09-16 Intel Corporation Memory fault isolation apparatus and methods
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US7266587B2 (en) 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7987341B2 (en) * 2002-10-31 2011-07-26 Lockheed Martin Corporation Computing machine using software objects for transferring data that includes no destination information
US20040123078A1 (en) * 2002-12-24 2004-06-24 Hum Herbert H Method and apparatus for processing a load-lock instruction using a scoreboard mechanism
US7080209B2 (en) * 2002-12-24 2006-07-18 Intel Corporation Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
US7089408B2 (en) * 2003-05-12 2006-08-08 International Business Machines Corporation Re-fetch of long operand buffered remainder after cache line invalidation in out-of-order multiprocessor system without instruction re-execution
US6973552B2 (en) * 2003-05-12 2005-12-06 International Business Machines Corporation System and method to handle page validation with out-of-order fetch
GB0415851D0 (en) * 2004-07-15 2004-08-18 Imagination Tech Ltd Microprocessor output ports and control of instructions provided therefrom
US7711721B2 (en) * 2004-09-01 2010-05-04 International Business Machines Corporation Apparatus, system, and method for suspending a request during file server serialization reinitialization
US7627578B2 (en) * 2004-09-01 2009-12-01 International Business Machines Corporation Apparatus, system, and method for file system serialization reinitialization
US7490088B2 (en) * 2004-09-01 2009-02-10 International Business Machines Corporation Apparatus, system, and method for preserving connection/position data integrity during file server serialization reinitialization
US8073974B2 (en) * 2004-10-01 2011-12-06 Lockheed Martin Corporation Object oriented mission framework and system and method
US8170041B1 (en) * 2005-09-14 2012-05-01 Sandia Corporation Message passing with parallel queue traversal
US8019914B1 (en) 2005-10-07 2011-09-13 Western Digital Technologies, Inc. Disk drive implementing shared buffer memory with reduced interrupt latency
US7461239B2 (en) * 2006-02-02 2008-12-02 International Business Machines Corporation Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines
US7461238B2 (en) 2006-06-07 2008-12-02 International Business Machines Corporation Simple load and store disambiguation and scheduling at predecode
US20070288725A1 (en) * 2006-06-07 2007-12-13 Luick David A A Fast and Inexpensive Store-Load Conflict Scheduling and Forwarding Mechanism
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US7849290B2 (en) * 2007-07-09 2010-12-07 Oracle America, Inc. Store queue architecture for a processor that supports speculative execution
US20090164758A1 (en) * 2007-12-20 2009-06-25 Haertel Michael J System and Method for Performing Locked Operations
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8560776B2 (en) * 2008-01-29 2013-10-15 International Business Machines Corporation Method for expediting return of line exclusivity to a given processor in a symmetric multiprocessing data processing system
US20100250850A1 (en) * 2009-03-25 2010-09-30 Faraday Technology Corp. Processor and method for executing load operation and store operation thereof
WO2013147820A1 (en) * 2012-03-29 2013-10-03 Intel Corporation System and method for managing persistence with a multi-level memory hierarchy including non-volatile memory
JP6221110B2 (ja) * 2013-05-01 2017-11-01 株式会社エルイーテック 処理装置におけるエラーを判定及び解決する装置及び方法
US10963255B2 (en) * 2013-07-15 2021-03-30 Texas Instruments Incorporated Implied fence on stream open
US9547553B1 (en) 2014-03-10 2017-01-17 Parallel Machines Ltd. Data resiliency in a shared memory pool
US9781027B1 (en) 2014-04-06 2017-10-03 Parallel Machines Ltd. Systems and methods to communicate with external destinations via a memory network
US9690713B1 (en) 2014-04-22 2017-06-27 Parallel Machines Ltd. Systems and methods for effectively interacting with a flash memory
US9477412B1 (en) 2014-12-09 2016-10-25 Parallel Machines Ltd. Systems and methods for automatically aggregating write requests
US9594696B1 (en) 2014-12-09 2017-03-14 Parallel Machines Ltd. Systems and methods for automatic generation of parallel data processing code
US9639473B1 (en) 2014-12-09 2017-05-02 Parallel Machines Ltd. Utilizing a cache mechanism by copying a data set from a cache-disabled memory location to a cache-enabled memory location
US9781225B1 (en) 2014-12-09 2017-10-03 Parallel Machines Ltd. Systems and methods for cache streams
US9690705B1 (en) 2014-12-09 2017-06-27 Parallel Machines Ltd. Systems and methods for processing data sets according to an instructed order
US9753873B1 (en) 2014-12-09 2017-09-05 Parallel Machines Ltd. Systems and methods for key-value transactions
US10228951B1 (en) * 2015-08-20 2019-03-12 Apple Inc. Out of order store commit
CN106874320A (zh) 2016-06-20 2017-06-20 阿里巴巴集团控股有限公司 分布式流式数据处理的方法和装置
US11334355B2 (en) * 2017-05-04 2022-05-17 Futurewei Technologies, Inc. Main processor prefetching operands for coprocessor operations
US11392380B2 (en) 2019-12-28 2022-07-19 Intel Corporation Apparatuses, methods, and systems to precisely monitor memory store accesses
US20230122466A1 (en) * 2021-10-20 2023-04-20 International Business Machines Corporation Cache coherence validation using delayed fulfillment of l2 requests

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3781814A (en) * 1971-10-07 1973-12-25 Raytheon Co Method and apparatus for applying source language statements to a digital computer
US3928857A (en) * 1973-08-30 1975-12-23 Ibm Instruction fetch apparatus with combined look-ahead and look-behind capability
JPS58114274A (ja) * 1981-12-28 1983-07-07 Hitachi Ltd デ−タ処理装置
US4521851A (en) * 1982-10-13 1985-06-04 Honeywell Information Systems Inc. Central processor
US4613935A (en) * 1983-02-02 1986-09-23 Couleur John F Method and apparatus for pipe line processing with a single arithmetic logic unit
EP0150177A1 (en) * 1983-07-11 1985-08-07 Prime Computer, Inc. Data processing system
US4731739A (en) * 1983-08-29 1988-03-15 Amdahl Corporation Eviction control apparatus
US4682281A (en) * 1983-08-30 1987-07-21 Amdahl Corporation Data storage unit employing translation lookaside buffer pointer
US4791557A (en) * 1985-07-31 1988-12-13 Wang Laboratories, Inc. Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system
US4872111A (en) * 1986-08-27 1989-10-03 Amdahl Corporation Monolithic semi-custom IC having standard LSI sections and coupling gate array sections
US4991090A (en) * 1987-05-18 1991-02-05 International Business Machines Corporation Posting out-of-sequence fetches
US4916652A (en) * 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel

Also Published As

Publication number Publication date
JPH03201130A (ja) 1991-09-03
EP0436092A3 (en) 1993-11-10
US5185871A (en) 1993-02-09
EP0436092A2 (en) 1991-07-10

Similar Documents

Publication Publication Date Title
JPH0677233B2 (ja) データ処理システム
JP3701814B2 (ja) マルチプロセッサ・システム及びそのシステム・シリアル化方法
JP3644959B2 (ja) マイクロプロセッサシステム
US6119219A (en) System serialization with early release of individual processor
EP0747816B1 (en) Method and system for high performance multithread operation in a data processing system
EP2503460B1 (en) Hardware acceleration for a software transactional memory system
US5018063A (en) Method for reducing cross-interrogate delays in a multiprocessor system
EP0495165B1 (en) Overlapped serialization
US5680565A (en) Method and apparatus for performing page table walks in a microprocessor capable of processing speculative instructions
US5590294A (en) Method and apparatus for retarting pipeline processing
JPH11272466A (ja) ロ―ド/ロ―ド検出及びリオ―ダ―方法及び装置
US5016168A (en) Method for storing into non-exclusive cache lines in multiprocessor systems
JPH0769825B2 (ja) 並列処理装置