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

データ処理システム

Info

Publication number
JPH03201130A
JPH03201130A JP2330983A JP33098390A JPH03201130A JP H03201130 A JPH03201130 A JP H03201130A JP 2330983 A JP2330983 A JP 2330983A JP 33098390 A JP33098390 A JP 33098390A JP H03201130 A JPH03201130 A JP H03201130A
Authority
JP
Japan
Prior art keywords
oos
fetch
entry
instruction
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.)
Granted
Application number
JP2330983A
Other languages
English (en)
Other versions
JPH0677233B2 (ja
Inventor
Bradly G Frey
ブラツドリー・ジヨージ・フレイ
Raymond J Pedersen
レイマンド・ジエームス・ピーダスン
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
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)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 A、産業上の利用分野 本発明は、オペランド・フェッチの順序付けの際にプロ
グラムによって指定された概念的順序からの逸脱を可能
にし、同時に多重処理(MP)環境において概念的順序
と同じプログラム実行結果を得ることのできる手段に関
する。順序外れフェッチは、システム性能を大きく改善
することができる。
B、従来の技術 ]ンピュータ・プログラムによって得られる特定の機能
は、その命令の「概念的順序」、すなわちプログラムに
書かれた命令の順序に従属する。
メモリ・ストア及びフェッチ動作の「概念的順序」も、
同様に、書かれた命令の順序によって決まる。
すなわち、各プログラムは、その命令及びそれらの命令
のフェッチ及びストアを概念的順序で処理するものと期
待される。このように、通常のCPUは、プログラム設
計者がそのプログラムに期待するプログラム結果をシス
テム記憶装置内でもたらすため、プログラム実行中、フ
ェッチ及びストアの概念的順序を維持する。
多重処理(MP)システムでは、プロセッサによるオペ
ランド・フェッチが、実行プログラムの命令シーケンス
によって指定されるオペランドの順序と異なる順序をも
つことが許されている場合、間違ったデータがMPシス
テム内のいずれかのプロセッサによってフェッチされる
可能性がある。
間違ったデータが扱われる問題の例として、第2A図に
示す次のような単純なケースが挙げられる。
1、プログラムAとBが、MP内のそれぞれ異なるプロ
セッサaとbで実行されている。各プロセッサは、その
プロセッサが実行しているプログラムによって指定され
た順序でフェッチ及びストアを完了する。すなわち、各
プロセッサは、それぞれのプログラムの概念的順序でそ
のオペランドにアクセスする。
2、プログラムAは、位置Xへのストア(すなわち5T
x)と、それに続いて位rlyへのス・ドア(すなわち
5Ty)を含む命令シーケンスをもつ。
ストアの順序は、STx、、、STyである。
3、プログラムBは、位置yからのデータYをロードす
るロード命令Lyと、それに続いて位置×からのデータ
Xをロードするロード命令Lxをもつ。ロード命令の順
序は、Ly−−−Lxであり、これは他方のプロセッサ
上での他方のプログラムによるストア命令の順序STx
、、、STyの逆になっている。
4、第2A図に示したケースiないしケース6は、プロ
グラムBによって位置X及びyからフェッチ可能なオペ
ランド・データ値の可能なすべての組合f (YX、Y
X’ *たjtY’ X’ ) を表り、−Cいる。
5、YX、YX”またsty’ X’ のJ5ちのどの
組合せが、プログラムBによって位置×及びyからフェ
ッチされるかは、プログラムBによるフェッチに対して
、プログラムAがそのストアを行なう時間が前か後かに
よって決まる。フェッチされた組合せは、プログラムA
とBの両方がそれらのオペランドに概°念的顧序でアク
セスした場合には、アーキテクチャ的に正しいデータで
ある。
8、しかし、プログラムB内のいずれかのオペランドが
、その概念的順序でアクセスされない(すなわち、順序
外れ、0O8)場合は、・このOOS状態によって、概
念的順序アーキテクチャ規則の下でプログラムが必要と
するアーキテクチャ上止しいデータではなく、間違った
データがフェッチされることがあり得る。
7、たとえば、プログラムAとBの概念的順序がケース
1を生じさせる場合、その結果得られる必要なデータは
YXである。しかし、ケース1で、データYの第1オペ
ランド・フェッチがキャッシュ・ミスによって遅延し、
データXの第2オペランド・フェッチが遅延なくキャッ
シュ内でアクセスされた場合、位置yへのストアによっ
てデータYがY9に変更された後に、オペランドYが得
られる。したがって、OOS状態によって、概念的順序
アーキテクチャ規則の求める組合せYXではなく、アー
キテクチャ上不可能な組合せY9Xがフェッチされる。
概念的順序アーキテクチャ規則の違反を避けるために、
従来のコンピュータ・システムは、プログラム・シーケ
ンス内の直前の命令の実行が完了するまで、プログラム
内の次の命令の実行を開始しないで、概念的順序を維持
していた。したがって、プログラム・シーケンス内の次
の命令に対するメモリ・フェッチまたはストアは、プロ
グラム・シーケンス内の先行命令の実行が完了するまで
遅延された。どの命令内でもすべてのメモリ・フェッチ
及びストアが、それぞれの命令のアーキテクチャによっ
て指定される順序で実行された。
しかし、従来技術では、CPUがオペランドをフェッチ
及びストアする実際の順序をその概念的順序から変更し
たにもかかわらず、正しいプログラム結果を得たといつ
、特別のケースが開示されている。モウした従来技術の
1つは、先行ストア・オペランドに対する従属性を検出
するものである。
これは、各オペランド・フェッチ要求のアドレスを先行
する未完了の各オペランド・ストア要求のアドレスと比
較することによって実行され、比較した結果等しくなか
った場合は、先行ストアに対する従属性の衝突は存在し
なかったことになる。
大型CPUは、長年にわたって、特定のタイプの命令オ
ーバラップを使用してきた。このようなオーバラップし
た実行には、ある程度の順序外れの実行を可能にする様
々な技法が必要であった。
従来のオーバラップ技法は、多数の異なる形態をとり、
各技法はそれぞれ特有の制御上の問題を伴っていた。こ
れらの技法のいくつかは、複数の実行装置を有するCP
Uを含むパイプライン式CPUで使用された。それらの
技法は、様々なタイプの従属性検出技法を使用して、様
々な実行状態で複数の命令が、それらの実行をオーバラ
ップする際に遭遇するいくつかのタイプの問題を回避す
ることができた。これらの技法は、命令r艷の従属性を
検出するために制御論理を使用して、これらの命令をオ
ーバラップせずに、すなわち概念的順序に従って1時に
1つずつ実行した場合に得られるのと同じ実行結果を確
保することができた。
これらの従来のシステムは、命令オーバラップを制御す
るために、各命令に対する実行の終了を認識する命令完
了制御を使用して、それぞれの命令のフェツチ・オペラ
ンド及びストア・オペランドを相関させていた。
プログラムへの割込みは、通常、大部分の命令の実行の
完了時、及びシーケンス内の次の命令の実行開始前に許
されていた。未処理のフェッチ・オペランド及びストア
・オペランドをすべて獲得しないと、どの命令の実行も
完了できず、またそのような命令に対する割り込みも開
始できない。
たとえば、割込みは、命令ストリームによって直列化さ
れる。直列化により、プログラム割込みがオペランド・
フェッチ及びオペランド・ストアの順序付けに干渉する
ことが防止される。長い実行時間を要する命令だけは、
その完了前に、かつそのとき未処理のフェッチ及びスト
アの完了時にのみ、割込みを受けることができた。この
未処理のフェッチおよびストアの完了により、割込みが
許される一時的命令停止時点が定義された。
また従来技術では、ある命令の実行に必要なフェッチさ
れたデータを受け取るために予約されたCPUレジスタ
のサブセットが、フェッチされたデータを適切に受け取
るよう保証するために、メモリに対するオペランド・フ
ェッチ要求のタグ付けが行なわれた。各レジスタは、メ
モリからフェッチ・データが得られ、すべてのレジスタ
に通じる共通データ・バス上に置かれたとき、そのバス
上でフェッチされたデータと共に送られたタグを、予約
されたレジスタに記憶されたタグと比較する比較手段を
もっていた。比較の結果等しかった場合のみ、フェッチ
されたデータは、予約されたレジスタのサブセットに入
ることができた。
また従来システムでは、ある種の命令は、オーバラップ
を使用することができなかった。たとえば、S/370
アーキテクチヤにおける直列化命令は、すべての先行命
令が実行を完了するまで実行を開始できない。直列化動
作の1つは、先行命令が、すべてのオペランド・フェッ
チ及びストアをプログラム順序で完了し、他のCPU及
びチャネル・プログラムもこの順序を守ることである。
このような命令の例には、S/370の比較後スワップ
命令や、テスト後セット命令などがある。
他の多数の直列化命令が、rIBM  ESA/370
解説書(Principles of 0perati
on)J、(資料番号5A22−7200−0)のpp
、5−76及び5−77に記載されている。
特開昭83−293839号公報は、フェッチ要求が、
当該のフェッチ要求を出した命令の概念的順序から外れ
てそのデータを返されることを検出する、CPUの実行
装置用のモニタ手段を開示している。テーブル(すなわ
ちスタック)に、メモリ・フェッチ要求に対するエント
リを設ける。
各テーブル・エントリは、メモリ・アドレス、その命令
を識別するタグ、エントリ肉のフィールドが満杯である
か否を示す満/空フラグ、及び満杯のエントリが有効か
否かを示す有効フラグ・ビットを含め、フェッチ要求を
表すフィールドを含む。
各エントリは、無効にされるまでスタック内に残る。エ
ントリは、無効にされると、新しいフェッチ要求のため
に使用できるようになる。テスト・アドレスは、ストア
・アドレス、及び相互無効化(XI)要求アドレスによ
って提供される。エントリは、そのフェッチ・アドレス
・フィールドがオペランド・ストア比較動作の方法で比
較してテスト・アドレスと等しい場合、無効とマークさ
れる。しかし、キャッジj・ミスまたは直列化事象が発
生すると、スタック内のすべてのエントリが、無効とマ
ークされる。エントリが無効にされると、それが順序外
れの可能性のあるフェッチ要求を表していることを示す
特定のオペランド・ストア比較に関する問題は、IBM
テクニカル・ディスクロージャ・プルテン、1985年
12月、pp、3173−3174に所載のHandl
ing of Fetches 5ubsequent
 t。
Unexpected 5tores″と題する論文に
記載されている。
ノイマン型コンピュータ・システムの基本的アーキテク
チャは、プログラムに対する意図した実行結果を得るた
めには、そのプログラム内の命令が「概念的順序」にな
っていることを必要とする。
このアーキテクチャは、システムの主記憶装置(システ
ム・メモリまたはジャスト・メモリとも呼ばれる)内で
オペランドを提供し、オペランドを主記憶装置からフェ
ッチし、主記憶装置に記憶することを必要とする。プロ
グラムが単一プロセッサ・システム(UP)で実行され
ようと、多重プロセッサ・システム(MP)で実行され
ようと、これらの同じアーキテクチャ要件が存在する。
C0発明が解決しようとする課題 したがって、ノイマン型コンピュータ・システムの基本
的アーキテクチャは、プログラムの結果にr概念的順序
」という制約を課す。このような結果は、オペランド・
データのフェッチ(「フェッチ」と呼ぶ)と、他のフェ
ッチ及びオペランド・データの記憶(「ストア」と呼ぶ
)との時間的関係を使用することによって得られる。プ
ログラム実行の結果は、命令オペランド・アクセスの概
念的順序の影響を受けるので、記憶装置における任意の
オペランド・アクセスが命令の概念的順序によって必要
とされる順序になっていない場合に、プログラム実行の
結果が変更されてはならない。
従来は、概念的順序が後のオペランド記憶データは、記
憶装置アクセスの実際の順序で後でアクセスされていた
00課題を解決するための手段 本発明は、共通の記憶装置にアクセスする複数のプロセ
ッサに対して単一の記憶装置のイメージを維持すること
に関する。本発明は、ある種の従来のMPシステムで偶
然に起こりつる、単一イメージ概念の崩壊を回避する。
本発明は、オペランド・フェッチを順序付ける際に、プ
ログラムによって指定された概念的順序からのある程度
の逸脱を可能にする手段を提供する。フェッチの順序付
けの際に逸脱が許されるので、多重プロセッサ(MP)
環境における概念的順序と同じプログラム実行の結果が
得られ、かつシステム性能の大きな向上がもたらされる
本発明は、フェッチ・オペランド・データに対する記憶
装置要求が、それらのデータを要求された順序とは異な
る順序で返す、様々な種類の条件を扱う。このようなフ
ェッチを、以後順序外れ(OOS)フェッチと呼ぶ。オ
ペランド・データのOOSフェッチは、概念的順序と呼
ばれるフェッチ・オペランド・シーケンスの復号された
順序に対して、返されるデータの順序を変える条件によ
ってOOSになる。いくつかの条件が、フェッチ要求を
概念的順序から外させることができる。たとえば、各フ
ェッチ要求が記憶装置に発行できる形になると直ちに、
そのフェッチ要求が記憶装置に発行されるのがその例で
ある。
オペランド・フェッチ動作をOOSにすることのできる
条件としては、以下のものがある。1゜記憶装置へのフ
ェッチ要求の発行を遅延させる(たとえば、ある要求に
対するアドレスを生成する際の遅延)。2.オペランド
・データの返送をスピードアップする(たとえば、オペ
ランド・データをフェッチするために記憶装置に行かな
いで、その実行装置内のストア・バッファ(S B)か
らそのデータをフェッチする)。3.オペランド・デー
タの返送を遅延させる(たとえば、フェッチ要求がキャ
ッシュ・ミスとなり、そのデータを記憶階層から得なけ
ればならないとき)。または4゜直列化命令のオペラン
ドのフェッチを、その完了前に、直列化命令より前にあ
る命令のオペランド、または直列化命令より後にある命
令のオペランドへのアクセスとオーバラップさせる。直
列化命令オペランドも、OOSにすることができ、かつ
他の命令のオペランドとオーバラップさせることができ
る。
さらに、本発明は、任意の1つのフェッチ・オペランド
に対して、前段落で列挙した複数の条件が同時に存在す
るときに発生する、フェッチ・オペランドに対する複数
のOOS条件を扱うことができる。1つのフェッチ・オ
ペランドに対して存在できる同時OOS条件の許容され
る組合せには、前段階で列挙した条件の各種の組合せが
含まれる。
ただし、キャッシュ・ミスと、SBからのフェッチは同
時には存在できないが、それ以外の組合せなら2重、3
重などで存在することができる。
本発明によれば、フェッチを、他のフェッチ及びストア
に対して、プログラムで指定された順序で制御された形
で順序を付は直すことが可能である。本発明では、プロ
グラムで指定されたオペランド・ストアまたは命令完了
の順序に実行の順序を変える必要はない。フェッチもス
トアも、命令完了時にはその概念的順序を保持し、それ
によって同じプログラム結果を維持することができる。
本発明は、暗示的にまたは明示的に、コンピュータ・シ
ステムの記憶階層の使用において次の要件を仮定する。
(1)フェッチは、プログラムで指定された順序で起こ
るように見えなければならない。(2)ストアは、プロ
グラムで指定された順序で起こるように見えなければな
らない。(3)所与の命令のためのストアが、そのCP
Uには、後続の各命令のためのオペランド・フェッチに
先行するように見えなければならない。(4)所与の記
憶アドレスへのフェッチが、最近のストアからのデータ
をそのアドレスに返さなければならない。(5)多重プ
ロセッサ内のすべてのプロセッサに単一の記憶装置イメ
ージが見えなければならない。すなわち、すべてのプロ
セッサに、記憶位置に対する同じ変更が同じ相対的順序
で見えなければならない。
本発明は、順序外れでフェッチを実行する際に、フェッ
チされたデータが、同じフェッチが概念的順序で行なわ
れた場合に得られるはずのデータと異なるときに、間違
ったプログラム結果が発生する危険を防止する、特別の
制御を提供する。
概念的順序より前に返されるフェッチ(早期フェッチ)
を考える。このフェッチは、以前のストアによって変更
されたデータをフェッチする必要があるが、フェッチが
順序外れであるためにこのストアがまだ起こっていない
場合には、間違ったデータを得ることがある。この場合
、早期フェッチは、変更されたデータを返すべきときに
、未変更のデータを返す。この問題は、データが同じC
PUによって変更されたか、異なるCPUによって変更
されたかに関係なく存在する。
ここで、早期フェッチからその概念的順序までノ間には
ストアが行なわれないと仮定する。そうすると、早期フ
ェッチまたは概念的順序のフエ。
チによって同じデータがアクセスされる。早期フェッチ
を使用することにより、その命令が概念的順序で完了し
たときに害が生じることはない。
次に、概念的順序より後に実行されるフェッチ(遅延フ
ェッチ)を考える。遅延フェッチでは、同じアドレスに
あるデータを変更する概念的順序が後のストアが、この
遅延フェッチがそのデータにアクセスする前に起こる場
合にのみ、間違ったプログラム結果が得られる。この場
合、遅延フェッチは、概念的順序で実行された場合に返
すはずのデータとは異なるデータを返す。
ここで、前の概念的順序から遅延フェッチまでの間には
ストアが行なわれないと仮定する。そうすると、遅延フ
ェッチまたは概念的順序のフェッチによって同じデータ
がアクセスされる。遅延フェッチを使用することにより
、その命令が概念的順序で完了したときに害が生じるこ
とはない。
本発明は、間違ったデータを得たかフェッチがあるかど
うかを判定するために、並べ換えられた(概念的順序外
れ)フェッチを検出することにより、間違ったプログラ
ム結果の生じる危険(露出)を検出するものである。
本発明は、共通記憶装置に緊密結合されたすべてのプロ
セッサに、それぞれのプロセッサが概念的順序で命令を
実行している場合に見えるはずのものと同じデータが記
憶装置内で見えなければならないという規則が遵守され
ることを保証する。
あるOOSフェッチについて間違った結果が発生する危
険が検出されたときは、たとえば、プログラムの危険に
さらされたフェッチをもつ部分をその危険が存在し得な
いような形で再実行することにより、その危険が回避さ
れるような形でデータを再フエツチすることによって矯
正される。
検出された危険を矯正するための多数の異なる実施態様
は自明であろう。実施態様のうちには、危険にさらされ
たフェッチの前または後の危険にさらされていないフェ
ッチも再実行することが必要となるものもある。このよ
うな余り正確でない実施態様は、その実施が簡単になる
ことがある。
フェッチ及びストアの順序は、各オペランドに、概念的
順序でその位置を指定する識別子を割り当てることによ
って決定できる。これは、概念的順序を表すIID(命
令識別子)をオペランドに割り当てることによって、た
とえば概念的実行順序が次の命令に割り当てられる次の
IIDをそれぞれ1ずつ増分することによって行なうの
が好都合である。1つの命令内の複数のオペランドに対
するIIDが同じ場合は、それらのオペランドはその命
令を実行するためのグループとしてまとめられるので、
問題は生じない。大部分のコンピュータ・アーキテクチ
ャは、どの命令に対しても1つのストア・オペランドし
か提供しない。そのストア・オペランドにも、その命令
のIIDが与えられる。それらのオペランドを区別する
別々のオペランド識別子を、命令内部でオペランドに割
り当てることもできる。
このよつな場合、オペランドの概念的順序は、それに割
り当てられるIIDの順序によって示される。概念的順
序における各オペランドのIDDは、先行オペランドの
IIDより大きい、または等しい。また、概念的順序に
おける各オペランドのIIDは、後続オペランドのII
Dより小さい、または等しい。これらの不等関係が、本
発明で順序外れ(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と
呼ぶ)と見なされることがある。
フェッチ要求は、後続のストアがフ、エッチより概念的
順序が前であるとき、そのストア要求と同・じアドレス
(すなわち、同じデータ単位)に対するものとなること
がある。このとき、「オペランド・ストア比較(O20
)J状態が存在する。パイプライン化されオーバラップ
された従来技術のプロセッサは、前の命令によってフェ
ッチ要求されたアドレスにデータがストアされるまで後
の命令を待機させて、概念的順序を維持するため、概念
的順序に並んだオペランドをもっO8c検出/制御手段
を使用していた。しかし、従来のOSC制御手段は、本
発明の場合のようにOOSフェッチを許すことによって
生じるOSC状態は検出しない。
ストアが行なわれる前にO20が検出された場合、影響
を受けるフェッチは、そのストアが完了するまで(OS
C制御手段にストア完了を報告する記憶手段によって)
保持される。しかし、間違ったデータを得た可能性のあ
るOOSフェッチに対してOSC状態が検出された場合
、本発明では、ストアが完了した後で、正しいデータを
得るために、要求されたアドレスからデータを再フエツ
チするため再試行させる。この再試行には、OOSフエ
、チ動作、または概念的順序のフェッチ動作が含まれる
。OOSフ工ツチ動作に対するこのO20は、MP内の
XIヒツト・データの場合は本発明によって解決され、
UP内で他のOOSフェッチに対しては標準技法が使用
される。
ここに記述する実施例は、OOSであるフェッチ動作の
検出に関するもので、MP環境内でOOSフェッチ条件
の下で記憶装置の保全性を維持するための機構を提供す
る。
OOSフェッチを検出するための手段は、次のものを含
む。
(1)キャッシュ・ミスが記憶階層で処理されている間
に、キャッシュ内のOOSフェッチ要求を処理するため
の特殊制御機構。これらのキャッシュ制御が呼び出され
ると、OOSフェッチがキャッシュ・ミスとなったため
に遅延であること、または前の要求がキャッシュ・ミス
でまだ戻されないうちにOOSフェッチがキャッシュ・
ヒツトとなっために早期であることを示す。XIヒツト
のO20をもつOOSフェッチは、これらの特殊制御機
構によって処理される。
(2)これらの特殊制御機構は、命令がOOSフエツチ
になるのを検出するために、それらの命令の有効アドレ
ス(EA)が生成されてキャッシュに発行されている間
に、命令の復号されたフェッチ・オペランド指定ととも
に動作する。これらの特殊制御機構は、OOSフェッチ
のIIDが、生成されたがまだ要求されていないEAの
IIDよりも大きいとき、EAが生成された要求に対す
るOOSフェッチをL1キャッシュに知らせる。
(3)フェッチ、ストア、及び直列化命令など他の事象
の間の特殊タイミング関係を指定するアーキテクチャ規
則から逸脱した疑似OOSフェッチを処理するための特
殊制御機構。
本発明は、OOSフェッチ状況でデータの保全性を維持
するため、次の手段を含む。
(1)フェッチがOOSか疑似OOSかを判定する手段
、 (2)別のCPUのXI要求が、OOSフェッチ露出ウ
ィンドウ中で発生しているのを検出する手段、 (3)正しいプログラム結果を確保するために非OOS
条件の下でそのデータを再フエツチすることにより、O
OSフェッチ露出ウィンドウ中で発生しているXIをも
つプログラムの命令の実行を繰り返す手段。
XI検出手段は、未処理のOOSフェッチ要求が必要と
するキャッシュ・データ単位をプロセッサ内で見つける
ためにキャッシュ・ディレクトリ・エントリを用いてア
クセスされる、ディレクトリ・アレイ手段を含むことが
できる。XI要求がOOSフェッチ要求を受け取ってい
るキャッシュ・データ単位に対するものであることをX
I検出手段が見つけた場合、キャッシュ・ディレクトリ
手段は、そのXI要求がOOSフェッチ露出ウィンドウ
と衝突する可能性があり、正しいプログラム結果を確保
するために、プログラムの当該部分に対して再実行を行
なうべきであるとの情報をそのフェッチ要求提供手段に
送る。フェッチ要求に対するOOS 1M示は、プログ
ラムの当該部分が再試行されるとき除去される。再試行
手段は、引き続きOOSフェッチ条件に服し、OOS露
出の検出によって必要となったとき再試行を行なわせる
尚、再試行という解決方法を使用したOOSフェッチ露
出ウィンドウの過剰指示は、正しいプログラム・システ
ム動作をもたらすが、実施が経済的になるのと引き替え
に性能が多少低下する。
したがって、本発明の目的は、実行中の任意のプログラ
ム内の命令の概念的順序によって決まる実行結果を得な
がら、プロセッサがメモリから、他の命令のフェッチ・
オペランドに対して順序外れのオペランド・データをフ
ェッチできるようにすることである。
本発明の別の目的は、1つまたは複数の先行フェッチ・
オペランドがそのアドレス生成の遅延によって順序外れ
になったとき、それらのフェッチ・オペランドをフェッ
チできるようにすることである。
本発明の別の目的は、先行フェッチ・オペ・ランドがキ
ャッシュ・ミスのとき、それらのフェッチ・オペランド
にアクセスできるようにすることである。
本発明の別の目的は、CPU実行装置内のストア、バッ
ファからのデータを、そのストア・バッファ・データが
CPUキャッシュに記憶される前に、フェッチできるよ
うにすることである。
本発明の別の目的は、同時に存在する複数のOOS状態
をもつフェッチ・オペランドに対する順序外れ(OOS
)フェッチを可能にすることである。
本発明の別の目的は、他の方法では正しい順序にするこ
とのできない順序外れのフェッチ・オペランド・データ
をもつ不完全な命令について、フェッチを再実行(再試
行)できるようにすることである。
本発明の別の目的は、多重プロセッサ(MP)内の他の
プロセッサとのO20(オペランド・ストア比較衝突を
処理することである。
本発明の別の目的は、多重プロセッサ(MP)内の別の
CPUによる相互無効化(XI)ヒツトの発生する危険
のあるオペランドの、順序外れ(OOS)フェッチを可
能にすることである=本発明の別の目的は、MP内のC
PU間での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図は、あるオペランドが早期であるか遅延である
かを判定するための関係テストを示す。
このテストは、先行オペランドまたは後続オペランドと
の関係で行なわれる。時間順序が次の各オペランドのI
IDがその先行オペランドのIIDより大きいかまたは
等しく、あるいはその後続オペランドのIIDより小さ
いかまたは等しいかぎり、オペランドは概念的順序にあ
る。
早期フェッチ・オペランド・テストは、当該オペランド
のIIDと後続オペランドのIIDの相対的比較である
。当該オペランドのIIDが後続オペランドのIIDよ
り大きい場合、早期フェッチ・オペランドであることが
示される。図の例では、F4は、そのIID  4が後
続のオペランドF3のIID  3より大きいので、早
期フェッチ・オペランドである。
やはり第3C図で、遅延オペランド・テストは、当該オ
ペランドのIIDと後続のオペランドのIIDの相対的
比較である。当該オペランドのIIDがその先行オペラ
ンドのIIDより小さい場合、遅延オペランドであるこ
とが示される。図の例では、F2は、次の先行オペラン
ドのIID  3が当該フェッチ・オペランドのIID
  2より大きいので、遅延フェッチ・オペランドであ
る。フェッチ・オペランI’F5は、そのIID  5
が、オペランドの時間順序が先のオペランドのIIDよ
り大きく、時間順序が後のオペランドのIID  6よ
り小さいので、概念的順序に戻る。
命令オペランドのOOSフェッチが許されたとき、命令
実行動作において、未完了命令ストリーム内のいくつか
またはすべての命令を再実行(再試行)することが必要
になる時がある。
このようか再試行処理は、未完了シーケンス内の完了し
た現命令と「理論的再試行開始命令」との間にあるどの
命令から開始することもできる。
理論的再試行開始命令とは、再試行が必須な最も古い命
令であり、理論的再試行開始命令と最も古い未完了命令
の間にある他の命令に対しては再試行は必須ではない。
理論的再試行開始命令は、異なるCPU上の先行命令の
ストア・オペランドとのオペランド・ストア比較(O2
0)動作でミスとなったフェッチをもつ最も古い命令で
ある。
理論上再始動するのに最も効率的位置は、理論的再試行
開始命令である。しかし、理論的再試行開始命令を正確
に検出するには、複雑で高価な追加のハードウェアが必
要になることがある。既存のハードウェアは、完了した
最も古い命令を検出するが、これは命令の再試行を開始
する最も簡単な位置である。
第1図は、本発明の適用環境を与えるCPUの1例を示
す。このCPUは、メモリからの命令のフェッチを制御
する命令フェッチ制御機構11を含む。制御機構11は
、命令を含むキャッシュ行を要求してL1キャッシュ・
ディレクトリ19と通信する。L1キャッシュ構成19
は、L1キャッシュを含み、L2キャッシュ・ディレク
トリ及びキャッシュ26に接続されている。L2キャッ
シュ26は、L3主記憶装置27に接続されている。
制御機構11によってフェッチされた命令の行は、命令
バッファに記憶され、関連する復号器12によって復号
される。復号器12は、オペランド・アドレス成分値(
B、X、D)をオペランV・アドレス生成(AGEN)
/要求装置16に提供する。装置16は、式(B)+ 
(X)+Dを使ってオペランド論理アドレスを生成する
。゛この式は、本明細書を通して使用されるコンピュー
タ・アーキテクチャであるIBM  S/370アーキ
テクチャにおいて周知である。複数のAGEN動作が並
列に行なえるように、装置16内に複数のAGEN要素
が、設けられている。いずれかのAGEN要素がオペラ
ンド・アドレスを生成するために必要なすべてアドレス
成分と共に復号器1eからAGEN要求を受け取ったと
き、そのAGEN要素は使用中となる。次の各オペラン
ドAGEN要求は、abltte内の使用中でないAG
EN要素を選択する。AGEN要素は、受け取ったアド
レス成分からオペランドの有効アドレスを生成する。
これらのアドレスは、復号器12が要求した順序で生成
される。有効アドレスは、CPU内のプログラム状況ワ
ード(PSW)の状態に応じて、仮想または実論理アド
レスである。
生成された各オペランド有効アドレス(これは仮想であ
る)は、変換ルックアサイド・テーブル(TLB)18
を含む周知の手段によってアドレス変換される。TLB
は、変換されたアドレス(絶対アドレス)を、LLデー
タ・ディレクトリ及びキャッシュ19と、L2デイレク
トV及びキャッシュ26に提供する。
好ましい実施例では、L1キャッシュ19はストア・ス
ルー型のキャッシュであり、L2ディレクトリ及びキャ
ッシュ26はストア・イン型のキャッシュであると仮定
する。ただし、本発明は、あらゆるタイプのキャッシュ
構成で使用することができる。
L1ディレクトリは、フェッチ・オペランドがLl、L
2、L3などの記憶装置からなる記憶階層内で遅延され
ていることを知らせるL1ミス信号出力28を提供する
TLB18はまた、その変換されたアドレスを、記憶H
rlへのオペランド・フェッチ要求用のオペランド・フ
ェッチ待ち行列21、及び記憶装置へのオペランド・ス
トア要求用のオペランド・ストア待ち行列22に提供す
る。
各フェッチ・オペランドは、フェッチされると、オペラ
ンド・フェッチ・バッファ17内で受け取られる。実行
1!1123がフェッチ・オペランドを受け取り、スト
ア・オペランドを生成する。これらのストア・オペラン
ドは、−時的にオペランド・ストア・バッファ24内に
入れられ、L2キャッジ、:L28及びL3主記憶装置
27に書き込むため、L1キャッシュ19に転送される
命令フェッチ制御機構11によってアクセスされた命令
シーケンスは、命令完了制御機構32によって駆動され
る順序制御装置31によって制御される。制御装置31
は、受け取ったオン状態のOOSモード信号25によっ
て、すべての命令を概念的順序で実行するように指令さ
れたとき、OOSオ一バライド信号40を提供する。本
発明のOOS動作が行なわれるには、信号4oがオフで
なければならない。
プログラム割込み制御機構33は、命令完了制御機構3
2に接続されており、実行中の命令ストリームに関して
、たとえば、実行中のどの命令の結果をも損なわずに、
いつプログラム割込みが許されるかを決定する。
復号器12内の命令復号器は、ストリーム中の各命令を
復号し、それに命令識別子(III5)を割り当てる。
IID番号は、いつでもCPUによって現在処理されて
いる命令に対して一義的である。
IID番号は、通常のカウンタ(図示せず)によって、
所与の時刻に必要なIIDの一義性を得るのに十分な大
きさのモジユロ値で繰り返すラウンド・ロビン方式で生
成される。復号器1Bによって概念的順序で処理される
命令に対してIIDが割り当てられるとき、現活動状態
のすべてのIIDに対して昇順のシーケンスが得られる
復号器12は、直列化命令が検出されたとき、直列化信
号をシーケンス制御装置31に提供する。
その後、制御装置31が、直列化命令状態信号28を提
供する。
各オペランドは、初めにオペランド要求装置18によっ
て、それがフェッチ・オペランドであるかそれともスト
ア・オペランドか判定される。次に、フェッチ要求信号
またはストア要求信号が装置16によって適当な待ち行
列21または22に送られ、その中で各要求に対してエ
ントリが割り振られる。さらに、生成された有効アドレ
ス(EA)及び対応するIIDが、待ち行列21または
22内の新しく割り振られたエントリに書き込まれる。
ストア要求は、たとえそのストア要求がキヤ。
シュ・データ単位の全体を生成するとしても、各ストア
要求に割り当てられる装置24内の複数のストア・バッ
ファの1つを必要とする。このため、各ストア要求は、
実行装置23によってフェッチ待ち行列21及びストア
待ち行列22にも提供される。したがって、ストア要求
によって、通常、キャッシュへの初期フェッチ要求(ス
トア間合せと呼ぶ)で、必要なデータ単位が、割り当て
られたストア・バッファ24にコピーされる。これによ
って、エントリは、そのストア要求用のフェッチ待ち行
列とストア待ち行列の両方に割り振られる。フェッチ待
ち行列エントリ肉で、そのエントリがストア要求を表す
ことを示す特別のフラグ・ビットがオンにセットされる
。(キャッシュ記憶単位よりサイズの小さな)ストアが
、ストア・バッファ内でマージされてフェッチされたデ
ータになり、データ単位が変更される。次に、このデー
タ単位が、Llデータ・キャッシュ及びL2データ・キ
ャッシュに送られる。
フェッチ ち  の構造 第4図は、各エントリO−Nをもつフェッチ待ち行列(
FQ)21を表す。第5図は、各FQエントリの形式を
示す。各FQエントリは、IIDフィールド、IID有
効ビッビット1EAフィールド、EA有効ピッ)VE、
フェッチ制御部分、ストア制御部分、オペランド・スト
ア比較(O20)制御部分、及び直列化命令制御部分を
もつ。
フェッチ制御部分は、フェッチ要求済みビット、OOS
ビット、キャッシュ・ミス・ビット、及びデータ返送ビ
ットを含む。ストア制御部分は、ストア待ち行列フェッ
チ要求ビット、フェッチ・ノー・データ・ビット、スト
ア・バッフy (SB)利用可能ビット、及びSBフィ
ールド内のデータを含む。OSC制御部分は、OSC標
識ビット、及び前ストアIIDフィールドを含む。直列
化命令制御部分は、本明細書で後で説明する0O3DT
実施例で直列化命令順序外れフェッチ動作を支援する。
第5図に示したFQエントリは、次のフィールドをもつ
IIDフィールド: このフェッチ待ち行列エントリを
生成しているフェッチ・オペランド・フィールドをもつ
命令のIIDを受け取る。IIDとオペランド番号を合
わせたものが、IDFO(フェッチ・オペランドの識別
子)である。
オペランド番号(#):  このオペランドを同じ命令
中の他のオペランドから区別する2ビツトの標識。II
Dと#フィールドを合わせたものが、IDFO(フェッ
チ・オペランドの識別子)となる。
VIフィールド: 1なら関連するIIDフィールドと
オペランド番号が有効、0なら無効であることを示す。
EAフィールド: 、このフェッチ待ち行列エントリを
生成するフェッチ・オペランドに対する有効アドレスを
受け取る。EAは、CB)+ (X)+Dによって生成
される。ここで、(B)と(X)は、それぞれベース−
レジスタとインデックス汎用レジスタの内容である。
VEフィールP: 1なら関連するEAフィールドが有
効、0なら無効であることを示す。
フェッチ制御部分フィールドは、次のように定義される
フェッチ要求済み(FR)ビット: このエントリによ
ってL1データ・キャッシュからデータを要求するとき
、1にセットされる。Oにセットされると、とのFQエ
ントリに対して記憶装置からデータがまだ要求されてい
ないことを示す。
OOSビツト=  1にセットされると、少なくとも1
つの後で発行されたフェッチ要求より前にこの要求がフ
ェッチされており、したがって順序外れであることを示
す。Oにセットされた場合は、とのFQエントリが適切
な命令順序であることを示す。
L1キャッシュ・ミス・ビット: FQエントリがL1
キャッシュ・ミス信号及びOOSモード信号を受け取る
と、1にセットされる。Oにセットされた場合は、キャ
ッシュ・ミスが発生しなかったことを示す。
データ返送(DR)ビット: このエントリによって表
される要求に対するデータをプロセッサがL1データ・
キャッシュから受け取ると、1にセットされる。Oにセ
ットされたときは、このFQエントリ用のデータを記憶
装置からまだ受け取っていないことを示す。
ストア制御部分フィールドは、次のように定義される。
SQフェッチ要求(SFR):  1にセットされた場
合、このFQエントリによって表されるフェッチ要求が
、このFQエントリ肉のIIDによって定義される命令
によって発行されたストア待ち行列22内のストア要求
に対して実行されることを示す。Oにセットされた場合
は、このエントリが純粋な(ストア要求を伴わない)フ
ェッチ要求を表すことを示す。
フェッチ・ノー・データ(FND)ビット:1にセット
された場合、ストア命令がデータ単位全体をストアして
いるので、ストア命令に対するこのフェッチ要求は、E
Aからフェッチされるデータを必要としないことを示す
。0にセットされた場合は、EAからデータ単位がフェ
ッチできることを示す。
SBからのフェッチ(FSB)ビット: 1にセットさ
れた場合、SBがこのFQエントリによって要求される
データ単位全体を含み、SB#フィールドがSB内のそ
のデータ単位の位置を指示することを示す。0にセット
された場合は、SBがこのFQエントリによって要求さ
れるデータ単位全体を含まず、したがってL1キャッシ
ュ内でそのデータ単位にアクセスしなければならないこ
とを示す。
SB番号(SBR)フィールド: このFQエントリに
よって要求されるデータ単位全体が、L1キャッシュか
らよりも迅速にフェッチできるストア・バッフy (S
B)の位置を指示する。
OSC制御部分フィールドは、次のように定義される。
O20,ID5O:  このフェッチ要求と同じ記憶ア
ドレスにOSC衝突をもつが、ストアはまだ行なわれて
いない、先行命令中のストア・オペランドを識別するI
ID及びオペランド番号を含む。
osc、vビット: 1にセットされた場合、このFQ
E内のO20,ID5Oフィールドが、現在未完了の先
行命令の衝突するストア・オペランドの有効なIID及
びオペランド番号を含むことを示す。0にセットされた
場合は、O20,ID5Oフィールドの内容が有効でな
いことを示す。
直列化命令制御部分フィールド(OOSDT実施例で使
用される)は、次のように定義される。
Sl: 1にセットされた場合は、そのFQEが直列化
命令のフェッチ・オペランドを表すことを示す。0にセ
ットされた場合は、そのFQEが直列化命令のフェッチ
・オペランドを表さないことを示す。Slは、直列化命
令に対するオーバラップしたOOSフェッチを可能にす
るために使用される。
S2: 1にセットされた場合は、そのFQEが未完了
の直列化命令の後に続く命令のフェッチ・オペランドを
表すことを示す。0にセットされた場合は、そのFQE
が未完了の直列化命令の後に続くフェッチ・オペランド
を表さないことを示す。
S2は、直列化命令の後続のオペランドとオーバラップ
したOOSフェッチを可能にするために使用される。
ストア ち  の    び 第8図は、ストア待ち行列(SQ)22及びストア・バ
ッファ(SB)24の構造を表す。SQは、各エントリ
0−Kをもつ。各SQエントリは、5B24内の1つの
可変長データ単位を表す。SB内のデータ単位は、1ワ
ードから4ワードまでの可変長である。ストア・エント
リは、ストア命令実行のIIDの順序でストア待ち行列
内に作成され、その順序で処理される。すなわち、スト
ア要求は、この実施例ではFQ内のフェッチ要求エント
リと同様に順序外れでは処理されない。
第7図は、各ストア待ち行列エントリの形式を示す。こ
れは、I ID、EA1制御フィールドV■とvE、及
びストア制御部分をもつ。
各SQエントリは、次のフィールドをもつ。
IIDフィールド: このSQ二ノントリ生成している
ストア・オペランド・フィールドをもつ命令のIIDを
受け取る。IIDとオペランド番号を合わせたものが、
ID5O(ストア・オペランドの識別子)である。
オペランド番号(#):  このオペランドを同じ命令
内の他のオペランドから区別する2ビツトの標識。
VIフィールド: 1なら関連するIIDフィールドと
オペランド番号が有効、Oなら無効であることを示す。
EAフィールド: このストア待ち行列エントリを生成
するストア・オペランドに対する有効アドレスを受け取
る。EAは、(B)+ (X)+Dによって生成される
。ここで、(B)と(X)は、それぞれベース・レジス
タとインデックス汎用レジスタの内容である。
VEフィールド: 1なら関連するEAフィールドが有
効、0なら無効であることを示す。
ストア制御部分フィールドは、次のフィールドを含む。
SBポインタ・フィールド: このSBエントリによっ
て表されるデータ単位のSB内の位置を含む。
データ単位長フィールド: このエントリによって表さ
れるSB内の対応するデータ単位のデータ・ワードで表
した長さを含む。
マージ・マスク・フィールド: ストア・バッファ内の
このエントリによって表されるデータ単位内の対応する
バイトを表す各ビットからなるバイト・フィールド。マ
スク内の任意のビットが1にセットされると、データ単
位内のその当該のバイト位置に、マージされたワードが
ストアされることを示す。マスク・フィールド内のすべ
てのビットが値1にセットされると、データ単位の全体
が実行装置によってストアされる。したがって、ストア
・マージ動作を行なう必要がない。
データ・ストア未完了ビット: 1にセットされると、
このSBエントリによって表されるストア動作がまだ完
了していす、データ単位にアクセスできないことを示す
。このSBエントリによって表されるストア動作が完了
すると、Oにセットされる。
FQQ位位置指定ビット: 1にセットされた場合は、
FQエントリによって要求されているデータ単位が、そ
の実行が完了したときこのSBデータ単位内で完全に見
つかる。
8Bフエツチ・返送(FSBR)ビット: FSBRが
1にセットされると、このSBデータ単位の全部または
一部分が、FQエントリによるフェッチ要求に応答して
フェッチされる。
ストア待ち行列内のSQエントリは、ストア動作がスト
ア・バッファ内で成功裡に完了し、L1キャッシュとL
2キャッシュにコピーされたことを示すストア完了肯定
応答信号を、L1キャッシュ及びL2キャッシュから受
け取ったとき、割振りを解除される。
CPU内でのOOSフェッチ処理: オペランド・フェッチ要求は、システム主記憶装置(メ
モリ)からの少なくとも1つのデータ・フェッチを必要
とする命令によってのみ行なわれる。各オペランド・フ
ェッチ要求によって、フェッチ待ち行列(FQ)内でエ
ントリが作成される。
したがって、メモリからオペランドをフェッチしない命
令(たとえば、レジスタ間命令)は、FQ内のエントリ
を表さない。
ストア・オペランドをもつ命令は、通常、ストアすべき
データ単位を得るためにフェッチ動作を必要とし、した
がって、フェッチ待ち行列を使用する。FQは、各位置
0−NにN+1個のエントリをもつ。したがって、FQ
内の位置の割振りの順序は0からNまで進み、エントリ
が再使用されるとき、循環して0に戻る。
命令が復号されている間、各オペランド・フェッチ要求
(ストア・オペランドに対する各フェッチ要求を含む)
に対するエントリがFQ内に入れられる。復号処理は、
メモリ内のアクセスされる各オペランド要求の有効アド
レス(EA)を決定するアドレス生成手段と、パイプラ
イン中でつながっている。各メモリ・フェッチに対して
生成されたEAは、FQ内のオペランドに対して割り振
られたエントリに書き込まれる。
本発明は、次に処理すべきエントリを決定する処理でF
Q及びSQを探索することを含む。理論的には、この探
索は、待ち行列内のエントリ全部について順次行なうこ
とができるが、すべての待ち行列エントリに対して同時
に並列に行なうことが好ましい。なぜなら、待ち行列内
のすべてのエントリの並列探索は、待ち行列の順次探索
よりずっと高速で行なうことができ、探索の速度はシス
テムの性能にとって最重要だからである。したがって、
本発明の好ましい実施例では、組合せ論理回路として一
般に知られる並列論理ハードウェアを使って並列動作を
得るが、これは順次動作として説明する方がわかりやす
い。第12図ないし第16図は、このような並列動作を
得るための組・合せ論理回路を含む。
フェッチ待ち行列動作: 第4図は、異なるレジスタに含まれる4つのポインタに
よって制御されるハードウェア・アレイとしてのFQを
示す、それらのレジスタは、割振りポインタ・レジスタ
(APR) 、順序が次のフェッチ・ポインタ・レジス
タ(N I PR) 、実際に次のフェッチ・ポインタ
・レジスタ(NAPR)、及び待ち行列解除ポインタ・
レジスタ(DQPR)である。
本発明では、APR,NI PR,NAPRl及びDQ
PR中のポインタ値を使って、メモリ参照命令の実行を
制御する。APR,NIPRlNAPR,及びDQPR
の内容は、当初、それぞれ、FQ内の位置Oにある最初
のエントリを指すようにセットされる。
第4図に示したNUPR(次の未フェッチ・ポインタ・
レジスタ)は、後述する0O8DT実施例で使用される
APR(割振りポインタ・レジスタ)動作:APRポイ
ンタは、次に割り振られるFQエントリを選択する。C
PUの復号器は、次の命令がCPU内で復号され始める
とき、次のIID値を次の命令に割り当て、割り当てら
れたIID及びその有効信号VI=1を、選択された現
APRエントリのIID及びVIフィールドに書き込む
このエントリは、次に割り振られるAPRエントリであ
る。VI信号は、このAPRを次のポインタ値に増分し
、復号器は、その命令が必要とする各フェッチ要求に対
してFQエントリが割り振られるまで、その命令に対す
る次のフェッチ要求に対するエントリを書き込む。II
DがFQに入る順序は、非メモリ・アクセス命令のII
Dをスキップするので、APRに提供されるIIDシー
ケンスは、順序が隣のIIDに対するものである必要は
ない。APRポインタは、復号された現命令の各フェッ
チ要求ごとに1回ずつ増分された後、APR動作のため
に次に使用されるFQ内の未開振りのエントリを指すよ
うになる。
APRによって割り振られた最後のエントリのIIDは
、必ず、他のFQレジスタNAPR1NIPR,及びD
QPRが指すエントリのIIDより新しい。
第14図は、APRのためのハードウェア論理回路を示
す。ANDゲートは、次に割り振られる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か’)DECO
DERVI  5IGNAL=かつMEMORY  0
PERAND  5IGNAL=1、 Thens現FQ (APR)、VIを1にセットする
、 FQ (APR)、I IDを現DECODERIID
にセットする、 次のAPRポインタを現APRポインタ+1(循環式)
にセットする、 End。
AGEN動作及びOSC動作: 各メモリ・オペランドの有効アドレス(EA)のアドレ
ス生成(AGEN)は、命令復号処理で記憶vtll!
オベラシドを検出し、かつAGEN回路が利用可能とな
り次第、開始される。この復号処°理で、割り当てられ
たAGEN回路に、記憶装置オペランドのB値とX値と
D値、IID、及びオペランド番号が提供される。必要
とされるB値またはX値がまだ入手できない場合、すべ
てのアドレス成分が入手可能になるまでAGEN処理は
遅延される。あるオペランドに対するAGEN処理が完
了すると、生成されたEAに対して記憶されたものに等
しいIID及びオペランド番号を含むFQエントリを求
めてFQが探索される。見つかったFQエントリにEA
が書き込まれ、■Eビットが状態1にセットされて、そ
のEAフィールドが有効であることを示す。
AGEN動作のための有効アドレスが生成され次第、未
完了の前のストア要求との衝突が存在するか否か判定す
るために、生成されたEAに対するストア待ち行列(S
Q)内でオペランド・ストア比較(O20)処理が実行
される。このOSC判定では、生成されたEAを、より
古いIIDをもつすべての有効SQエントリ内のEAと
比較する。このOSC探索は、CPUの性能上の理由か
う、スべてのSQエントリについて同時に並列に実行す
ることが好ましい。
OSC動作で、生成されたEAがより古いIIDをもつ
すべてのSQエントリ内の有効EAに等しくないことが
判明した場合、生成されたEAを受け取るFQエントリ
肉のV(O20)ビットが0にセットされて、フェッチ
されたデータがOSC衝突を有しないことを示す。しb
し、より古いIIDをもついずれかのSQエントリ内の
EAが生成されたEAに等しい場合は、衝突が検出され
、FQエントリのV(O20)ビットが1にセットされ
、そのO20IIDフィールドが、OSC衝突するSQ
エントリ内で見つかったIIDにセットされる。衝突は
、同じサイズのデータ単位とのオーバラップであること
もあれば、ストア・バッファ(S B)内の可変長デー
タ単位とのオーバラップであることもある。したがって
、FQエントリ内のOSC部分は、それ以降、そのエン
トリで表されるフェッチ要求が、前のストア・オペラン
ドからの要求されたデータの変更を待っているかどろか
を示す。
NAPR(実際に次のポインタ・レジスタ)動作:L1
キャッジ−要求(図示せず)の待ち行列内で現NAPR
で選択されたFQエントリによってフェッチ要求が行な
われ次第、NAPRポインタは別のFQエントリを指す
ように変更される。次のNAPRポインタは、データ・
フェッチのためにメモリ要求(たとえば、Llキャッシ
ュ要求)を必要としている最も古い準備のできたFQエ
ントリを選択する。NAPRが別のFQエントリを指す
ように変更されると、そのエントリはL1キャッシュに
対するフェッチ要求を行なうために使用され、以下同様
である。
NAPRの内容は、NIPRの内容に等しくセットされ
、最初はNAPRとNIPRは共にFQエントリ0を指
す。NAPRとNIPRの両者が同じFQエントリを指
しながら一緒に移動する限り、フェッチ・オペランドは
概念的順序で要求される。
フェッチ要求が順序外れになると、NAPRとNIPR
は異なるエントリを指すようになる。
このように、フェッチ要求(PR)がなされ次第、NA
PRの設定は、まだ要求されたメモリ・フェッチをもた
ず、有効EAをもち、OSC衝突をもたない別のFQエ
ントリを指すように変更される。複数のFQエントリが
これらの条件に合致する場合は、これらの条件に合致す
る最も古いFQエントリが選択される。すなわち、この
ようなグループ中の最も古いFQエントリが、(循環す
る場合はその調整済みの)最低のIID値をもつFQエ
ントリになる。
NAPR動作は、第12図に示す並列組合せ論理回路2
内で°単一マシン・サイクルで行なうことが好ましい。
これは、次の表現によって記述できる。
VE=I  AND  FR=0を含み、FSB&  
O20が共にOまたは共に1である、すべてのFQエン
トリを検出する、 NAPRを検出された最も古いFQエンドηの位置にセ
ットする、 このNAPRFQエントリに対してL1フェッチ要求を
行なう、 とのFQエントリ内のFRビットを1にセットする、 E n d * 第13図で、並列組合せ回路2は、複数のAND回路の
並列出力を、FQハードウェア内の各FQエントリごと
に1つずつ受け取る。各AND回路は、それぞれ、その
対応するFQエントリ内のVE、V (O20) 、及
CFFR1’y)の状態を受け取る。これらのAND回
路の1つは、別のFQエントリがその状態をとのFQエ
ントリ位置が次のNAPR値になるかを示すように(V
E=1及びV (O20)=O及びFR=1&l:)変
更した後ただちに、回路2内でヒツトを得る。
したがって、NAPRは、FR=1(そのエントリに対
するメモリ要求が以前に行なわれたことを示す)を含む
、またはV (O20)= 1かつFSB=O(そのF
Qエントリに対するOSC衝突が未解決であることを示
す)を含む、とのFQエントリをも指さない。すなわち
、このようなFQエントリはまだ、メモリにそれらのデ
ータを要求する状態にない。
NIPR(順序が次のポインタ・レジスタ)動作:NI
PRポインタは、FQエントリの概念的順序を、実行プ
ログラムの命令ストリーム内での命令の順序で選択する
ように増分される。これを行なうために、NIPRポイ
ンタは、そのフェッチ要求済み(FR)ビットがまだ状
態Oにリセットされている最も古いFQエントリを選択
する。すなわち、NIPRエントリより古いどの有効F
QエントリについてもFR=1である。NIPRが指す
エントリは、有効EAをもつ必要はない、すなわちVE
=0またはVE=1である。
NIPRは、現NIPRエントリがフェッチ要求をする
とき、すなわちそのFRビットをOから1に変更したと
き、FR=Oの次のFQエントリに順次増分される。N
IPR値は、FR=Oのエントリに達するまで、FR=
1をもつ後続の各FQエントリへと次々に増分され続け
る。すなわち、NIPRは、単一のNIPR動作で任意
の数のFQエントリへと増分することができる。1マシ
ン・サイクルで、NIPRポインタ値は、複数のFQエ
ントリずつFQを順次上方に(循環を含み)移動させて
、NAPR動作によって以前にFR= 1状態にセット
された1つまたは複数のエントリを通過することができ
る。
第12図は、N+1個のFQエントリすべてから反転F
Rビットの並列出力を受け取る並列組合せ回路1を含ん
でいる。組合せ回路1は、現NIPR値を受け取り、次
のNIPR値を出力する。
NIPR動作は、次の表現で記述される。
現FQ (NIPR)、FR=1のとき次のNIPRポ
インタを現NIPRポインタ+1へと(循環を含み)セ
ットし続ける、次のFQ (NIPR)、FR=Oのと
き終了する。
したがって、NIPRは、NAPR動作の結果、その選
択された現FQエントリFRビットが状態1に変更され
て、前記FQエントリに対するフェッチ要求を示すよう
になったときだけ、増分される。
しかし、NAPRは、その条件を満たすどのエントリに
も変わることができる。これは、NIPRがフェッチ要
求をもたない最も古いエントリを指しているときに生ず
ることができる。そのとき、NAPRは、最も新しい順
序外れフェッチ要求を指すよつになる。
NIPRは、FQを上下いずれかの方向に移動しなから
FQエントリをスキップできるNAPRとは違って、循
環を含みFQエントリ位置の増加方向にのみ変化する。
したがって、NIPR値は、NAPR値より大きくはな
れない。
DQPR(待ち行列解除ポインタ・レジスタ)動作: 第4図で、フェッチを完了したFQエントリに対して待
ち行列解除動作が実行される。DQPRは、次に待ち行
列から外し、新しいFQエントリとして割り振るために
APRが利用できるようにすべきFQエントリを選択す
る。したがって、APRポインタは、循環について調整
されたFQエントリの増加方向でDQPRポインタに等
しくなることはできるが、それより大きくなることはで
きない。
DQPRは、キャッシュから、またはキャッシュ・バイ
パスを介してメモリからデータを返されていない最も古
いFQエントリにセットされる。
データ返送は、エントリのデータ返送(DR)ビットを
状態1にセットすることにより指示される。
第1・4図は、DQPR動作を得るための回路を示す、
この回路は、並列組合せ回路4を含む。組合せ回路4は
、現DQPR値及びN+1個のFQエントリすべてのD
Rビットの並列出力を受け取る。組合せ回路4のDQP
R(次)出力は、次に待ち行列から外すべきFQエント
リを選択する。
もう1つの出力は、DQPR(現)エントリのフィール
ド及びフラグ・ビットをすべてオフ状態に有効にリセッ
トすることを含めて、DQPR(現)エントリを初期設
定する。第14図のDQPR並列動作は、次の表現によ
って記述されるように単一マシン・サイクルで完全に実
行される。
次の各FQ (DQPR)、DR=1を検出するすべて
の有効ビットをOにセットすることにより、FQ (D
QPR)エントリを無効にするFQ (DQPR)、D
R=1でないときは終了し、FQ (DQPR)は最も
古いFQ (DQPR)DR=Oを指す。
複数のFQエントリでDRビットがオンの場合、複数の
FQエントリが単一サイクルで待ち行列から外されるこ
とがある。
OOS (順序外れ)検出 FQエントリ内のOOSビットは、状態Oにセットされ
ると、そのフェッチ要求が順序通りであることを示すが
、状態1にセットされると、そのフェッチ要求が概念的
順序外れであることを示す。
第12図は、比較機構3がNIPR及びNAPRの内容
を受け取る、好ましい実施例のOOS検出処理を表す。
NAPRポインタが(循環について調整された)NIP
Rポインタより大きくなると、OOS検出が行なわれる
。このOOS検出は、NAPRがroosフェッチ」要
求を指していることを指示する。というのは、NAPR
が指すエントリは、概念的順序で(NIPRポインタで
)要求される場合よりも早くキャッシュからそのデータ
を要求しているからである。現NIPRエントリはまだ
データを要求していないが、0O8NAPRエントリは
データをすでに要求済みである。
したがって、NAPRが新しいポインタ値を受け取るご
とに、NIPRとNAPRの比較が行なわれる。NAP
RがNIPRより大きい場合、NAPRが指すエントリ
でOOSフラグ・ビットが1にセットされて、そのビッ
トが順序外れ要求を表すことを示し、FQ (NAPR
)、0O8= 1信号を線81上に送る。NAPRがN
IPRに等しいときは、OOSフラグ・ビットがOにセ
ットされて、そのビットが順序通りの要求を表すことを
示す。NAPRの動作によって、NAPRがNIPRポ
インタより小さくなることはない。NAPRポインタが
NIPRポインタより小さい場合には、エラー状態が存
在する。
データ・フェッチ動作: IID及びオペランド番号(IDFO)は、記憶装置内
でデータがアクセスされているときにそのデータとの関
連を維持するタグであり、したがって返されたデータと
ともに実行装置に返送することができる。
FQとLl及びL2キャッシュとの間で交信される信号
としては、FQからL1キャッシ二へのフェッチ要求信
号及びキャッシュ応答がある。それらの信号線には、フ
ェッチ要求済み(FR)信号線、ミス信号線、IID及
びL1フェッチを要求するためのオペランド番号信号線
などFQエントリ信号用の電気線が含まれる。応答線に
は、データ返送(DR)信号線、IID及びオペランド
番号信号線、EA線、キャッシュ・ミス信号線などの電
気線が含まれる。キャッシュからデータ返送信号を関連
するオペランド識別子とともに受け取ると、CPUの実
行装置に送られたキャッシュ・データと同じEA及びI
IDをもつFQエントリ内のDRビットが、オンにセッ
トされて状態1になる。
ストア要求のためのフェッチ要求 はとんどのデータ・ストア要求は、フェッチされたデー
タ単位内でストア動作が実行できるように、予備データ
・フェッチを行なう。各FQエントリ内の「ストア制御
」フィールドは、ストア要求に関連するフェッチ制御ビ
ットのサブセットをもつ、rsQフェッチ要求」ビット
が状態1にセットされると、ストア要求に対するFQエ
ントリがSQ内で作成されたことを示す。「SQフェッ
チ要求」ビットは、このFQエントリがストア要求に対
して作成されなかった場合、状態Oにセットされる。
しかし、ストア要求が全データ単位をストアするための
ものであるときには、予備データは必要でない。このデ
ータ不要状態は、「フェッチ・ノー・データ」ビットが
状態1にセットされることによって示される。
すなわち、ストア要求のためにフェッチされたデータが
必要となるのは、全データ単位より少ないデータ単位が
ストアされる場合だけである。次に、ストアされたデー
タは、以前にフェッチされたデータ単位に、データ単位
内の「マージ・マスク」フィールド内の1ビツトによっ
て示されるバイトまたはワード位置でマージされる。「
マージ・マスク」フィールドがOビットのときは、デー
タ単位内の位置が不変であることを示す。「マージ・マ
スク」フィールドは、対応する(同じEA、IID、及
びオペランド番号をもつ)SQエントリ内にある。
この実施例では、L1キャッシュからフェッチされたデ
ータ単位は、割り当てられたSB位置に入れられ、各S
Qエントリに割り当てられたストア・バッファ(SB)
位置でストア・マージ動作が実行される。
「フェッチ・ノー・データ」ビットは、対応するSQエ
ントリ内の「マージ・マスク」フィールドのすべてのマ
スク・ビットがオンにセットされて状態1になったとき
、状態1にセットされる(SB内のデータ単位全体が実
行装置によって提供され、したがってデータ単位のSB
への予備フェッチ、及びデータ・マージの必要がないこ
とを示す)。
「SB内データ・フィールド」は、このFQエントリに
よって表される要求されたデータ単位全体が後のフェッ
チ要求によってL1キャッシュからよりも高速でフェッ
チできる、ストア・バッファ(SB)内の任意の位置を
含む。
rSB使用可能ビット」が1にセットされた場合、その
SBがこのFQエントリによって要求されたデータ単位
全体を含むことを示し、このときrSBSB内タ」フィ
ールドはSB内でのそのデータ単位の位置を示す。0に
セットされた場合、そのSBはこのFQエントリによっ
て表されるデータ単位全体を含まず、したがってそのデ
ータ単位にはL1キャッシュ内でアクセスしなければな
らない。
多重プロセッサ(MP)内でのOOS処理:コンピュー
タ・アーキテクチャは、MP内の任意のCPUによって
順序外れ(OOS)オペランド・フェッチによってプロ
グラム実行の結果が変化しないことを要求する。しかし
、oosオペランド・フェッチは、MPシステムにおけ
るこのアーキテクチャ要件に違反することがある。本発
明は、OOSオペランド・フェッチによってプログラム
結果が変化するのを防止するので、oosフェッチ条件
の下でもアーキテクチャ要件が満たされる。
MP内であるCPUが別のCPUによって変更されてい
るデータに対する。osフェッチ要求を行ない、その際
にそのOosフェッチによって、同じフェッチが順序通
りである場合に他方のcPUから得られるはずのデータ
とは異なるデータが他方のCPUから得られる場合に、
oos問題が発生する。
MP内でいずれかのCPUによってデータが変更された
とき、相互無効化(Xり信号が他のすべてのCPUに送
られる。OOSフェッチ間層は、要求側CPUがフェッ
チ要求を順序外れで処理している間に、データが遠隔C
PUによって変更された場合に発生する。あるCPUが
1つのフェッチ要求を順序外れで処理する期間を、本明
細書では「OOSフェッチ−ウィンドウ」と呼ぶ。これ
は、OOSフェッチ・アーキテクチャ違反が発生する危
険のある期間である。
このOOS問題は、第18A図ないし第18E図を使っ
て説明することができる。これらの図は、時間サイクル
1−8の間のフェッチ動作及びストア動作を示したもの
である。記号Fはフェッチを表し、Sはストアを表し、
(A)(B)(C)(D)(E)CF)はシステム記憶
装置内の異なるアドレス位置を表す。すなわち、F (
A)は記憶位置Aからのデータのフェッチを表す。また
5(E)は位置Eへのデータのストアを意味する。
第18A図は、MP内のCPUIによる順序通りのフェ
ッチを示す。そのオペランド・データ・フェッチは、6
つの時間サイクル中にF (A)、F (B)、F (
C)、F (D)、F (E)、F(F)として概念的
順序を与えられる。第18B図は、サイクル4中のCP
U2による位置EへのストアS (E)を示す。
第18A図の順序通りのフェッチで動作しているCPU
Iは、サイクル5で位置(E)のデータに対するフェッ
チF (E)をもち、このフェッチはXIヒツトで、前
のサイクル4でCPU2によってストアされたデータS
 (E)をフェッチする。
この例では、CPUIのF (E)は、CPU2からデ
ータS (E)を得るが、OOSフェッチがないため、
そのデータはとのOOSフェッチの影響も受けない。
第18A図及び第18B図に関係して第18C図にOO
S問題が表されている。第18C図は、それぞれサイク
ル2ないし5でのCPUIによる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図のCPUI  OOSフエツチF (E)
では未変更データF (E)を得たが、第18A図の順
序通りに行なわれた同じCPUIフェッチF(E)では
変更済みのデータS (E)を得た。
第18C図は、F (E)に対するroosフェッチ・
ウィンドウ」を示す。これはMP内のOOSフエツチ・
データの保全性が損なわれる恐れのある期間であり、こ
の期間中は、要求側CPUは順序通りにフェッチしたな
ら変更されたはずのデータを得ることができない、この
ウィンドウの終りは、サイクル5の終り、すなわちF 
(E)が第18A図でその概念的順序で行なわれるとき
である。
したがって、F (E)に対するこのOOSフェッチ露
出ウィンドウは、第18C図のサイクル2−5の間だけ
存在する。
第18D図は、CPU1におけるF (E)に対するO
OSフェッチ・ウィンドウが終了した後、サイクル6で
CPU2によってストアされたデータ5(E)を示す。
この場合はOOS露出はない。
他方、第18E図は、ウィンドウより前のサイクル1で
実行されるストアS (E)を示す。したがって、第1
8C図のサイクル2でOOSフェッチされたデータF 
(E)も、第18E図のサイクル1でCPUにストアさ
れたデータS (E)の影響を受けない。これは、アー
キテクチャ上杵されることである。
本発明によって提供されるOOSフェッチ問題の解決方
法は、MP内でOOSフェッチを要求しているCPHに
、フェッチ要求のOOSフェッチ・ウィンドウ中に他の
CPUによって記憶装置内でフェッチされているデータ
単位に対してストア要求が発生したことを知らせるもの
である。こうして、フェッチ要求しているCPUは、O
OSフェッチの場合に間違ったデータを得ることを避け
ることができる。
本発明は、OOSフェッチに伴うMP問題を回避するた
めの複数の実施例を提供する。これらの興なる解決方法
は、異なる動作特性を有し、異なるシステム効率をもた
らす。一般に、これらの解決方法は、ハードウェアの単
純性及びコストと動作効率のどちらか一方を重視するも
のである。
これらの実施例はそれぞれ、MP内の各CPUのL1キ
ャッシュ・ディレクトリに関連するハードウェア・テー
ブル・ルックアップ手段を提供する。したがって、本発
明のOOSフェッチ状態は、L1キャッシュの通常のX
I探索の一部分として探索することができる。
第9図及び第11図は、2つの異なるXI  OOS実
施例で使用される異なるタイプのOOSフェッチ指示フ
ィールドを示す。これらのOOSフェッチ指示フィール
ドは、その有効アドレス(EA)を使って選択される、
他の点では従来通りのL1キャッシュ・ディレクトリ・
エントリに追加される。最初に記述した実施例では、第
8図に示したOOSフエツチ指示フィールドを使用し、
第2のXI  OOS実施例では、第10図のより精密
なXI  OOSフィールドを使用する。
専用L1キャッシュ・ディレクトリに対する各FQ要求
は、L1ディレクトリ内の合同クラス(セット連想式エ
ントリの行)の位置を示すEAをFQエントリ内で提供
する。アドレスされた行内の複数のL1ディレクトリ・
エントリの1つが、各フェッチ要求に割り当てられ、そ
のエントリの内容は、キャッシュ・ディレクトリ・エン
トリを生成する通常の方法で生成される。
さらに各実施例で、要求側FQエントリ内のOOSビッ
ト=1(オンにセット)のキャッシュ・エントリに対し
てフェッチ要求が行なわれたとき、キャッシュ・エント
リOOS指示フィールドがオンにセットされる。OOS
ビットは、そのOOSフェッチ要求に対するOOSフェ
ッチ・ウィンドウの開始前及び終了後にそれぞれオン及
びオフにセットされる。第2の実施例の方が、LI  
X1OOSフィールドをOOSフェッチ・ウィンドウ中
終す近くでリセットすることができ、潜在的に命令再試
行がより少なくなり、CPU実行効率が向上するので、
より好ましい。
万一、OOSフィールドがオフに(非OOS状態を表す
状態0に)セットされたL1キャッシュ・エントリに対
してXIヒツトが発生した場合、そのエントリはXIヒ
ツトに対する通常の規則によって処理され、関連データ
のOOS状態は考慮されない。
しかし、OOSフィールドが有効な(状態1にセットさ
れた)Llキャッシュ・エントリに対してX!ヒツトが
発生した場合は、そのエントリは、本発明の規則にした
がって処理され、少なくともOOSフエツチ・オペラン
ド・データを要求する命令の再試行が必要となる。
上記の両実施例では、各L1キャッシュはストア・スル
ー型であり、ストア・イン型の共通L2キャッシュが、
MP内のすべてのCPU  Llキャッシュ用のバック
アップ記憶装置として設けられている。各CPUのL1
キャッシュ内のデー夕は、共通L2キャッシュ内にもあ
る。共通L2キャッシュは、XIヒツト・データをスト
アのため、あるCPUのL1キャッシュから、そのデー
タに対する排他的制御を要求する別のCPUのL1キャ
ッシュに転送するために、MP内のすべてのCPUが使
用する。任意のL1キャッシュ・ディレクトリ内の各デ
ータ単位(すなわちデータ行)に対する通常のフラグ・
ビット(図示せず)は、セットされると、Llキャッシ
ュ・データ単位に対するそのCPUの排他的/非排他的
制御が存在することを示す。L1キャッシュ・データ単
位を無効にするには、キャッシュ・ディレクトリ・エン
トリ内の有効ビットをオフにセットして、そのデータ単
位がもうL1キャッシュ内に存在しないことを示す必要
がある。関連するL2データ単位は、対応するL1デー
タ単位がXIヒツトに応答して無効にされたとき、無効
にならない。というのは、その後、その12行は、MP
内の別のL1キャッシュのために゛対応するデータをバ
ックアップし続けなければならないからである。(L2
データ単位は、Llデータ単位より大きくてもよい。)
L1キャッジaoOsフラグ・フィールドは、通常のL
1キャッジ−・アドレス手段によってアドレスされる特
別なアレイとして編成することができる。そうすると、
L1エントリのOOSフィールドは、当該のL1エント
リがアドレスされたとき、アドレスされる。別々のハー
ドウェア・アレイの共通アドレシングを行なうと、OO
Sフィールドを有するアレイがL1キャッシュ・エント
リの一部分になるような、論理的エントリ関係がそれら
のアレイ間で得られ、それらのエントリは、同じアレイ
内にあるかのように論理的に動作する。
しかし、キャッシユ・ディレクトリ・エントリ内の様々
のタイプのフィールドに対して別々のより小さなアレイ
を使用することにより、Oosフィールドなど特定のタ
イプのフィールドを、キャッシュ・ディレクトリのそれ
ぞれの部分を形成するその成分アレイのすべてに等しい
単一の大きなアレイを使用する場合よりも、高速でセッ
ト及びリセットすることができる。
L2ディレクトリ・エントリ内の変更ビットは、アクセ
スされたキャッシュ・データ単位が書き込まれるとき、
オンにセットされ、要求側にそのデータ単位が変更され
たことを知らせる。いずれかのCPUがデータ単位に書
込みを行ないたい場合は、そのデータ単位に対する排他
的権限を要求して、Ll及びL2ディレクトリのそのエ
ントリ内で排他ビットがセットされる。データ単位のE
Aを送ることにより、そのデータ単位のコピーを無効に
するよう、CPUに対してXI要求が行なわれる。
このXIアドレスは、システム内の各L1キャッシュ・
ディレクトリをアドレスして、そのアドレスを表す有効
なセット連想式エントリにアクセスするために使用され
る。別のL1キャッシュ内で有効なデータ単位が見つか
った場合、そのデータ単位は、OOSとマークされてい
ようとそうでなかろうと、XI要求によって無効にされ
る。
第5図でOOSモード信号で受け取り、ローカル・キャ
ッシュ・ミスが発生した場合は、次のマシン・サイクル
で、FQ内のキャッシュ・ミス・ビットをオンにセット
するよう、FQに指示される。NAPRでアドレスされ
たエントリは、NAPRがNIPRより大きい場合のみ
、そのOOSビットが1にセットされる。FQエントリ
内の「データ返送」ビットは、現L1ミスに対するデー
タをキャッシュから実行装置が受け取ったとき、1にセ
ットされる。次いで、FQエントリ内の現L1ミス状態
がオフになる。Llに対する新しい各NAPR要求ごと
にFQ内でいずれかのキヤ。
シュ・ミス・ビットがオンになるが、アドレスされたL
1キャッシュ・エントリ内のOOSビットは状態1にセ
ットされる。
XI  OOSビット実施例(第8図、第10図、及び
第17図): 第10図は、第9図の各L1キャッシュ・エントリ内の
OOSフラグ・フィールドを使用する方法を支持する。
ここで、OOSフラグ・フィールドは、要求しているF
Qエントリ内のEAによってアドレスされたディレクト
リ・エントリ内の単−ビットである。(特定のEAによ
って位置付けられている)LlエントリのOOSフィー
ルドは、LI  DIR(EA)、OOSとして参照さ
れる。
OOSビツトは、第17図からの線73上の信号によっ
てオンに(状態1に)セットされる。どの瞬間において
も、いくつかの有効L1キャッシュ・エントリが、その
OOSビットを状態1にセットすることができ、そのと
き残りの有効キャッシュ・エントリは、そのOOSビツ
トがオフに(状態Oに)セットされる。
第17図は、CPU  OOSモード・ラッチ60を含
む。、このラッチがオン状態のとき、CPUがOOSフ
ェッチを使用できることを示す。オフ状態のときは、C
PUによるOOSフェッチの使用が妨げられる。第1の
XI実施例では、このラッチは、すべてのL1OOSフ
ィールドがAND’F’−)8Bからの出力によってL
1キャッシュ・ディレクトリ内でオフにセットされて0
になるごとに、オンにセットされ、線40上の信号は何
の効果ももたない。この第1の実施例では、ラッチ6o
は、しきい値カウントに達したとき、第10図の[45
上のOOSディスエーブル信号によってオフにセットさ
れる。第2のXI実施例では、第3図の命令順序制御装
置31から線40上でOOSイネーブル信号を受け取り
、ラッチeOがそのOOSモード信号を出力し、そのS
及びR入力はラッチ状態に何の影響も与えない。
アドレスされたLl  OOSビツトは、OR回路61
からの信号LI  DIR(EA)、OOS→1によっ
て状態1にセットされる。このOR回路は、複数の異な
る信号のいずれか1つによって起動される。OR回路8
1は、第13図からの線81上のFQ (NAPR)、
0O8=1信号、あるいはORゲート62または63の
出力、あるいはOR回路64の出力によって起動される
。OR回路82は、第19図の完了待ち行列エントリ内
の直列化命令ビット、すなわちCQ(0)、SERない
しCQ (M)、SERによって動作可能になる。OR
ゲートe3は、FQlエントリ内第5図からの線28上
のLitス状態信号、すなわちFQ(0)、MISSな
いLFQ(N)、MIS。
Sによって動作可能になる。OR回路64は、SQlエ
ントリ内フェッチ5Bffi送(FSBR)t’フット
すなわちストア待ち行列内の5Q(0)、FSBRない
しSQ (K)、FSBRのオン状態をパスする。この
とき、SBから早目フェッチが得られる。
ANDゲート66は、信号LI  DIR(EA)、O
OS−0を出力する。この信号は、L1キャツシェ・デ
ィレクトリ内のすべてのLI  OOSビットをオフに
して状態Oにする。ANDゲート86は、ゲー)CI2
及びe3の反転出力、及びOR回路64の反転出力を受
け取る。また、ANDゲー)8Bは、FQ内にOOSフ
ェッチ状態がないことを示すOR回路71の反転出力を
受け取る。OR回路71は、FQ内のすべてのOOSビ
ツト、すなわちFQ (0)、OOSないしFQ(N)
、OOSの状態を受け取り、すべてのFQOOSビット
がオフで状態Oのとき、ゲート6eに、すべてのLl 
 OOSビツトをオフにさせる。
この実施例は、最も古い未完了命令からプログラム実行
を再試行させるものである。すなわち、OOSフェフチ
・ウィンドウ期間中に別のCPUによるこのオペランド
のデータへのストアがあり得ることを示すX!信号で、
OOSフエツチ・オペランドをもつ命令を再実行する。
未完了命令が再試行され、再フエツチされたオペランド
・データはOOS状態の影響を受けることを免れる。
完了待ち行列(CQ)内の現在完了していない最も古い
命令のIIDは、第18図のICPR(命令完了ポイン
タ・レジスタ)によって識別される。このレジスタは、
命令順序制御装置31内にある。再試行されているCQ
内の未完了命令は、IDPR(命令複号ポインタ・レジ
スタ)内のIIDからICPR内のIIDに識別された
命令である。各未完了命令は、第18図で定義されるC
Qlエントリよって表される。そのECビットは、命令
の実行が完了したときセットされる。有効ビットvがオ
ンにセットされると、そのエントリはある命令を表す。
ビットFがオンのとき、その命令は1つまたは複数のフ
ェッチ・オペランドを有する。ビットADHがオンのと
き、その命令のすべてのフェッチ・オペランドが返され
ている。ピッ)SERがオンにセットされると、そのエ
ントリは直列化命令を表し、OOSモードが存在する。
第21図は、IDPRによって現在アドレスされている
CQエントリのビットv=Oのとき、すttbちcQ 
(IDPR)、V=0のとき、IDPRが命令復号器1
2からの命令復号済み信号によってどのように増分され
るかを示す。
第10図の命令順序制御装置からX!ヒツトの信号(第
22図の「再試行開始信号」)が送られたとき、第22
図の線69上のICPR(第3図の装置81の一部分)
内の現IIDから再試行動作が開始される。ICPRエ
ントリのビットv1EC,F、及びADRがすべて状態
1にセットされたとき、ICPRが次の値に増分される
。次のICPRポインタは、現XI信号の発生時に再試
行がそこから開始できるIIDである。
XIによって影響を受けるフェッチ・オペランドの発生
はまれであると予想されるので、余分な命令がときどき
再試行されるにしても、必要なXI  OOSフエツチ
検出ハードウエアが単純であることが経済的には望まし
い。
最大の再試行効率が得られるのは、再試行が開始され次
第、すべてのOOSビツトが状態Oにリセットされる場
合である。
第10図は、FQまたはSQ内にOOSフェッチ要求が
存在しないとき、L1ディレクトリ内でオンにセットさ
れたすべてのOOSビットについてOOSビツトをリセ
ットする方法を示している。
状態0へのリセット前に異常に長い時間が経過しないよ
うにするため、一連のT個のOOSフェッチに対してリ
セットが実行される。Ll内で偽りの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内に未完了のOO
Sフエツチ要求が存在することを装置31が認識してい
る限り、OOSリセットは起こらない。
第17図は、CPU  OOSモード・ラッチ60をリ
セットするOOSモード・ディスエーブル信号を線45
上で受け取る。OOSモ一ド信号は、リセットされたと
き、OOSフエツチ要求を阻止する。インバータ87及
び72からANDゲート66への他の入力は、オンのス
トア待ち行列FSBR(フェッチ・ストア・バッフ1返
送)ビットがなくなる、すなわちすべての5Q(j)、
FSBR=O1かつオンのFQ  OOSビツトがなく
なる、すなわちFQ (j)、0O8=0になるまで、
非活動状態のままとなる。ANDゲート6Bへの活動状
態のOOS  FQまたはSQ大入力ないとき、ゲート
66は出力信号LI  DIR(ALL)、005→0
を提供する。この出力信号は、すべてのL1ディレクト
リOOSビットをオフにして0にする0次いで、装置3
1からの出力44が、OOSカウンタ42を0にリセッ
トする。
したがって、第10図の回路は、すべてのL1キャッシ
ュOOSフラグ・フィールドをOにリセットするのを、
命令の完了成功などによりFQ内のすべてのOOSフェ
ッチ指示がなくなるまで、遅らせる。
XI  OOS 11D実施例(第11図、第12図、
及び第17図): 第12図は、XI  OOS状態を処理するための第1
の実施例とはかなり異なる第2の実施例を示している。
第11図は、第10図に示したタイプのL1エントリを
実施したものである。第3図からのOOSイネーブル信
号によって第16図のラッチ60に対するOOSモード
がオンにセットサレ、そのS及びR入力が動作不能にな
る。
第12図は、OOSタグ・アレイ(oTA)61、OO
Sフェッチ・スタック(oFs)62、及び命令完了論
理回路83(これは、第1図の命令順序制御装置31の
一部分である)を含む。
0FS82は、OTAエントリを選択するEAをもつF
Qlエントリ待ち行列から外された後に0TA81内の
エントリを削除するために必要である。完了した各命令
のIIDを用いると、その命令に対する有効なOTAエ
ントリが存在する場合にそれを見つけることができる。
どのオペランドもその命令の完了が成功した後はもはや
oosではありえないので、そのOFS及びOTAエン
トリは(それらがある場合)無効にならなければならな
い。すなわち、0F3B2を用いると、0TAB1内で
OOSIIDエントリを見つけるために完了IIDをE
Aに変換することが可能となる。
OT/l 1は、すでに説明した性能上の理由から、L
lディレクトリ・アレイとは物理的に独立しているが、
論理的にはL1ディレクトリの一部分である。0TA8
1は、論理的にはL1キャ。
シュ・ディレクトリの一部分である。OTAは、同じキ
ャッジ5・ディレクトリ・アドレスによってL1ディレ
クトリと同時にアドレスされるからである。(ハードウ
ェア・アレイを分離しても、OTAフィールドのL1キ
ャッシュ・ディレクトリ・エントリに対する論理的関係
は変わらない。
別個のより小さなアレイを使用することによって、OT
Aフィールドのアクセスが、物理的にキ+ツシェ・ディ
レクトリ・エントリと同じハードウェア・アレイ内にあ
る場合よりも容易にかつ高速で実行できるようになる。
) したがって、0TA81は、L1キャッシュ・ディレク
トリと同じ数の合同クラス及びセット連想性をもつ。0
TA81内の各合同クラス(水平行)は、L1キャッシ
ュ内のセット連想式1ントリに直接対応する4列のセッ
ト連想式エントリを含む。0TA61内の各エントリは
、IIDフィールドと有効IID(VI)フィールドか
らなる。
VIが1にセットされた場合、そのIIDフィールドは
(同じエントリ内に)有効IIDを含む。
しかしvIが0にセットされた場合は、関連するIID
フィールドは有効IIDを含まない。
0FSE12は、L1キャッシュ内で指示できるOOS
  IIDに対するM+1個のエントリをもつハードウ
ェア・7″レイである。OFSアレイの行は、命令のI
IDによってアドレスされることによってインデックス
される。2つのOFSエントリは、それぞれ異なるOT
Aエントリをもつ。
0FS82内の各エントリは、EAフィールドと有効ア
ドレス(VE)フィールドからなる。VEが1にセット
された場合、関連するEAフィールドは有効アドレスを
含む。しかしVEがOにセットされた場合は、関連する
EAフィールドはどのOTAエントリをも表さない。
FQフェッチ・エントリがLI内のOOSデータを要求
するときは、そのエントリは第16図からのLI  D
IR(EA)、0O8=1信号を第11図のゲート80
に提供して、要求側命令のIIDを!I74上に提供す
る。I IDが0FS82内のエントリをインデックス
し、FQlエントリ内EAが、0にセットされた有効ビ
ットVEをもつインデックスされたOFS行内のFAI
またはEA2位置のうちの使用可能な一方の位置に書き
込まれ、有効ビットVBが1にセットされる。
FQlエントリEAはまた、有効とセットされた要求側
IIDが書き込まれている0TA81内の行内で、対応
する割り当てられたL1ディレクトリ・エントリを見つ
けるために使用される。しかし、見つかったOTAエン
トリの有効ビットVI=1の場合、そのIIDはLlエ
ントリのデータ単位にアクセスしたOOSオペランドを
もつ最後の命令を識別し、現OOS命令は興なるIID
をもち、それが比較機構68−1ないし68−4に提供
される。IIDが見つかったOTAエントリ68内の有
効IIDより大きいことが、見つかったOTAエントリ
68に対応する比較機構で検出された場合、関連する書
込みゲートがイネーブルされて現IIDを新しいIID
としてそのOTAエントリに書き込み、そのVIビット
は1のままとなる。このように、IIDは以前の有効O
OSIIDをオーバレイできるので、任意のOTAエン
トリ内の有効IIDが、関連するL1データ単位に対す
るOOSフェッチを実行する最も新しい命令のOOS 
 IIDを表すようになる。
0FS82は、その命令のIIDを使用することによっ
て、(1つの命令に対して発生された最高で1対のフェ
ッチ・オペランドを表す)最高で1対のL1エントリの
EAI及びEA2アドレスをル、クア、プするために、
完了IIDが使用できるようにする。EAは、関係する
OOSフェッチ・エントリの0TA82(及びL1ディ
レクトリ)内での位置を見つけるために使用される。
FQ要求のEAは、新しいOOS  FQ要求がL1キ
ャッシュに提供されたときに、そのOOSフィールド、
IID、及びVIをセットすべきキャッシュ・エントリ
を見つけるために使用される。NAPR回路がフェッチ
要求、すなわちFQ(NAPR)、I ID (ただし
NAPR>NI PR)に信号LI  DIR(EA)
、0O8=1を提供させるとき、第11図のANDゲー
)EIOからEAに信号が送られる。0F8B2内の選
択された行で必要なエントリを見つけるには、提供され
たIIDをOFSアレイ内へのインデックスとして使用
する。その命令の提供されたIIDが、必要な行をアド
レスし、選択されたOFS行にEAを書き込む。FQエ
ントリ内のEAは、通常のLI  LRU回路(図示せ
ず)によってOTAエントリを割り当てられたキャッシ
ュ・ディレクトリ内の行をアドレスする。次いで、EA
が割り当てられたOFSエントリに書き込まれ、そのV
Eビットが1にセットされ、さらにIIDが見つかった
OTAエントリに書き込まれ、そのVIピットが1にセ
ットされる。
無効にされるL1エントリを探す(XIで提供されたE
Aを使った)XI探索で、同時に有効OTAエントリが
探される。XIビットのOTAエントリが見つかった場
合、そのOOSIIDが、4つの連想式ゲート66のう
ちの1つを介して命令完了論理回路31に読み込まれて
、0TA81及び0FS82内のすべてのエントリを無
効にし、XIヒ、)IIDからまたはその前からプログ
ラム再試行を行なわせる。このプログラム再試行は、X
IヒツトIIDによって識別される命令または前の命令
の再実行(再試行)から始まる現プログラムの実行であ
り、以前のOOS問題を解消するためのものである。リ
セットは、線70からの信号で指示され、いずれかのゲ
ート66がイネーブルされ次第、0FSE12及び0T
A−81内のすべての有効ビットVE及びVIに対して
同時に行なうことが好ましい。
L1キャッシュ・エントリに対するXIヒツトからその
IIDが決定された命令ではなく、最も古い未完了命令
から再試行プロセスを開始する命令順序制御論理回路3
1の方が実施しやすいことがある。最も古い未完了命令
の後のすべての未完了命令も再試行されるので、それら
の未完了命令はすべて、XIヒツトによって決定された
IIDをもつ命令を含むことになる。追加の二三の命令
の再実行によってCPU性能がわずかに低下することが
ある。再試行プロセスが、XI要求によって識別される
OOSフェッチ・オペランドをもった命令に達すると、
そのオペランドは、必要ならL2キャッシュから更新を
加えて再びアクセスされる。再試行された命令が実行さ
れるとき、それらの命令がOOS問題のあるフェッチ・
オペランドをもち、0TA81及び0FS82内でOO
Sエントリが再度セットされることがある。
各命令実行が完了したときの通常の動作は、0TA81
及び0FS82内に関係するOO3IIDエントリがあ
ればそれを無効にすることである。これを行なうため、
装置31からの完了IIDが0FS82をアドレスして
、IIDインデックスにあるエントリにアクセスする。
そのOFSエントリのVEビット=1である場合、II
DはL1キャッシュ内に少なくとも1つのOOSフェッ
チ・オペランドをもつ命令を表し、そのEAが、0TA
61内の行をアドレスし、その行内のOOS  IID
エントリの位置を連想的に探すためにゲート・アウトさ
れる。すなわち、その行内の4つのエントリのうちの1
つのエントリ内の1つのIIDが、セット連想式ゲート
69によって読み出され、完了IIDがequal−t
o比較機構67−1ないし67−4の1つによって検出
される。したがって、比較機構67が等しいIIDを見
つけた場合、そのIIDが、そのVIビットを0にリセ
ットすることによって無効にされる。異なるIIDをも
つ後の命令による後続のOOSフエツチがいずれかの有
効OTAエントリにアクセスする場合は、比較の結果等
しくはならないが、4つのgreater−thanゲ
ート68の1つがイネーブルされて、そのOOS 11
Dを後の命令のOOS  IIDに変更する。
OOS直列化制御: 直列化命令は、CPU動作の直列化を行なう命令である
。この命令は、rIBMエンタープライズ・システム・
アーキテクチャ/370解説書」、(資料番号5A22
−7200−0)ページ5−78及び5−77の見出し
rCPU直列化」の所テ定義* taティ!、 COM
PARE AlID 5VAP、 LOAD PSV。
INVALIDATE PAGE TABLE ENT
RY、 PROGRAM CALL。
PROGRAM RETURNなどCPU直列化を引き
起こすいくつかのCPU命令(すなわち直列化命令)が
そこにリストされている。
IBM  S/370直列化命令のアーキテクチャは、
直列化命令のオペランドがフェッチされる前に、以前の
すべての命令オペランドにアクセスすることを要求して
いる。
さらに、そのアーキテクチャは、次の命令が実行のため
にフェッチされる前に、各直列化命令の実行が完了し、
システムにその結果がすべて見えるようになることを要
求している。本発明では、XIが可能なOOSフェッチ
環境でこの要件を満たすために、PSIFT(直列化命
令後フェッチ・テーブル)を提供する。PSIFTは、
第8図に示されており、その各エントリはEA及びVフ
ィールドをもつ。直列化命令が未完了の間に、後続の各
命令のエントリがPSIFT内で作成される。
このエントリ内のEAは、それで表される命令の記憶ア
ドレスであり、Vビットは、このエントリが有効か否か
を示す。入力された直列化命令が完了したときにXIが
発生しない場合は、PSIFT内のすべてのエントリは
、次の直列化命令発生の準備として無効にされ、PSI
FT動作が存在しなかった場合と同様に命令フェッチが
続行される。しかし、PSIFT内に有効エントリがあ
るときにXIが発生した場合は、Xl、EA (XI要
求のEA)がPSIFT内のいずれかの有効エントリの
EAに等しいかどうか再試行するよう指示され、次いで
、PSIFT内のすべてのエントリが無効にされる。
直列化命令が復号され、OOSモードが存在するとき、
第19図のこの命令に対する完了待ち行列(CQ)エン
トリ内でSERビットがオンにセットされる。この直列
化命令がフェッチを実行する場合、第5図のそのFQエ
ントリ肉でそのOOSビツトがオンにセットされる。次
いで、フェッチ要求のためのデータが順序外れで返され
るか、概念的順序で返されるかには関係なく、第8図ま
たは第11図のLl  00gフィールドが、各直列化
命令による各フェッチ要求ごとにセットされ、またその
直列化命令が未完了の間に要求された後続の命令による
各フェッチ要求ごとにセットされる。
第5図のFQを使用すると、直列化命令の動作でフェッ
チをオーパラフプさせることが可能になる。直列化命令
の実行が未完了の間、直列化命令の各フェッチ・オペラ
ンド、後続のすべての命令の各フェッチ・オペランド、
及び後続の各命令フェッチは、OOSフエツチと見なさ
れ、各OOSフェッチにFQエントリが割り振られる。
プロセッサは、それらの動作を実行できるようになり次
第、直列化命令及び後続の命令のオペランドをフェッチ
することができる。
したがって、各直列化命令の前後で前のフェッチ及び後
のフェッチの完了を待つこと11 < 、中断なしに命
令復号を続行することができる。
現在実行中の直列化命令の完了前に別の直列化命令に出
会った場合は、現直列化命令の完了まで次の直列化命令
が遅延されることがある。
OR回路62の出力は、第17図でOR回路61に入力
として提供されて、EAでアドレスされたL1キャッシ
ュ・ディレクトリ・エントリ肉のOOSビツトをオンに
する。したがって、直列化命令のオペランド、オーパラ
フプしている先行命令のオペランド、及び直列化命令の
実行完了前に復号された後続命令のオペランドを含めて
、すべてのオペランドは、直列化命令の実行中に実行さ
れる命令のために復号された場合、Llに対してOOS
とマークされる。
Ll  OOSフィールドは、各XI実施例について前
述したようにしてリセットされる。
OOSDT実施例: 本発明の第3の実施例は、完全連想式OOSDT(順序
外れ従属性テーブル)を使用するもので、第24図に示
されている。この実施例は、OOSフェッチ露出ウィン
ドウの検出サイズを縮小することにより、前述の実施例
より命令再試行効率が高くなる。すでに説明したように
、roosフェッチ・ウィンドウ」とは、XIが発生し
て、MP内のプロセッサによるデータ・フェッチが、O
OSフェッチされるデータの保全性を損なう恐れがある
期間である。この0O8DT実施例は、OOSウインド
ウのサイズを最小サイズに縮小し、OOSフェッチ保全
性露出ウィンドウ内で発生しうるXIの数を最小にする
効果をもつ。
OOSDT実施例は、各OOSフェッチ中に検出可能な
OOS露出ウィンドウを有効に提供する。
OOSDT実施例は、最小OOS露出ウィンドウを検出
するための実際の露出期間が終了したときに各OOSウ
インドウを終了させる、OOSフ工ツチ間の従属関係を
一義的に検出する。
前述の各実施例では、XI発生に対するフェッチ保全性
保糟に必要な最小OOSウィンドウよりいくぶん大きい
OOSXI露出ウィンドウを検出する。しかし、他の実
施例は、コンピュータ・システムに組み込むのがより簡
単になることがあり、そのよつな場合には、それらの実
施例が好ましい。すなわち、検出可能な見かけのOOS
ウィンドウの間に他の実施例によって検出されたいくつ
かのXI要求は、実際には実際の(最小)OOSウイン
ドウ外で発生し、xI要求にとって不必要な命令再試行
をもたらすXI露出の偽検出であることがある。これら
の不必要な再試行で、CPUの実行効率が低下すること
があるが、これらの余分な再試行はCPUの実行データ
結果の保全性には影響を与えない。というのは、必要と
されたオペランドをもつ命令を適切な順序で再実行する
と、必要な実行結果が得られるからである。
OOSDT実施例では、命令再試行は、現プログラムの
実行を(異なる命令である場合にXIが検出されるOO
Sウィンドウを生ずるOOSフェッチを指定した命令か
らではなく)その最も古い未完了命令から再開する命令
順序制御論理回路31によって、他の実施例と同様に実
行される。
OOSDT実施例で検出される最小OOSウィンドウは
、他の実施例のOOSウィンドウより存在する期間が短
く、前述の他の実施例の場合より偽XI  OOSヒツ
トの検出が発生する可能性が大きい。なぜなら、他の実
施例では、検出された()OSフェッチ状態が0O8D
T実施例はど速く無効にされないからである。たとえば
、OOSIIDO8側では、露出OOSデータにアクセ
スしたフェッチ・オペランドをもつ命令が完了するまで
、OOS露出ウィンドウは終了しない。しかし、0O8
DT実施例では、0O8DT内で従属性が見つからない
とき、OOSフエツチ・オペランドのためのデータの返
送時にOOSウインドウが終了する。0O8DT実施例
は、より複雑であり、実施により費用がかかるので、特
定のMPシステム投計に最適の実施例が選択されるよう
重視すべき要件の取捨選択を行なわなければならない。
OOSDT実施例では、検出されたOOS露出ウインド
ウは、有効エントリが0O8DTテーブルに入れられた
ときに始まり、そのエントリが0O8DTテーブルから
無効にされる(除去される)まで存在する。したがって
、XI発生に対するOOSウインドウは、対応するエン
トリが0O8DT内に存在する間のみ使用可能である。
各OOSDTエントリは、従属性フィールドDIDOを
もち、これはOOSウィンドウの終了を決定するために
使用される。1つまたは複数のOOSウインドウに対す
る従属性が同時に決定されないとき、それらのウィンド
ウが同時に終了することがある。
OOSDT実施例では、用語IDFO%ID5O1及び
IDOを使用するが、これらはそれぞれ、命令内のある
オペランドに対するITDとFQE内のオペランド番号
の連結によって表される。IDFOは、識別済みのフェ
ッチ・オペランドを表す。ID5Oは、識別済みのスト
ア・オペランドを表す。IDOは、フェッチかストアの
いずれかのタイプの識別済みオペランドを表す。すなわ
ち、IDOは、IDFOかID5Oのいずれかである。
FQエントリが存在する間は、それはI DFOによっ
て表される。SQエントリが存在する間は、それはID
5Oによって表される。しかし、OOS要求または疑似
OOS要求に対するIDFOまたはID5Oは、そのF
QまたはSQが待ち行列から外されてもはや存在しなく
なった後も、記憶階層内で記憶され続ける。記憶階層内
のI DFOまたはID5Oは、アクセスされているそ
のデータにタグ付けされるので、記憶装置アクセスが完
了し次第、IDFOまたはID5Oを要求プロセッサの
実行装置に返すことができる。
このように、0O8DT実施例では、キャッシュ制御機
構が各キャッシュ・ミスのIDFO及びEAを記憶し、
それらは後で実行装置に返されるときに、そのデータに
タグ付けされる。したがって、IDFO(RETURN
、IDFO)は、データをCPUの実行装置に返すべき
ときにL1キャッジ5制御機構から得られる。RETU
RN、IDFOは、フェッチされたデータがCPU内の
実行装置に提供されたとき、第24図の線171上から
「データ返送用並列論理回路」172に送られる。
第24図は、0O8DTアレイ160(ハードウェア・
テーブル)と、0O8DTアレイ160とともに動作す
るハードウェア論理回路(以後0O8DTと呼ぶ)とを
含む0O8DT実施例を示す。0O8DT180は、完
全連想式アレイであって、提供された値とすべてのエン
トリ内の選択されたフィールドの内容との並列比較に基
づく連想式探索が可能である。各OOSDTエントリは
、原理フィールドIDFO,従属性フィールドDIDO
1記憶位置フィールドEA、有効ビットv1及びLlに
対するその要求が未解決のキャッシュ・ミスとなったこ
とを示すキャッシュ・ミス・ビットMをもつ。
OOSDTエントリは、各OOSフェッチ要求及び疑似
OOSフェッチ要求に対して作成されるが、非OOSフ
エツチ要求に対しては作成されない、すなわち、0OS
DTエントリは、FSB181.82、O20,ID5
O,OOS、またはMのいずれかのフィールドがオンに
セットされた各FQEに対して割り振られ、作成される
。OOSビツト・フィールドは、NAPR>NI PR
のときオンに(1に)セットされ、他のFQEフィール
ドはそれぞれ疑似OOS状態をもたらす。これらのいず
れかの条件が存在する場合、割り振られた0O8DTエ
ントリ内のIDFOフィールドは、NAPRが現在指し
ているFQE内のIDFOを受け取る。このIDFOは
、FQ (NAPR)。
IDFO信号としてl!131上に提供され、Llに対
するフェッチ要求の発行後ただちに、割り振られた0O
8DTエントリ内のIDFOフィールドにゲートされ、
FQE内のFRビットが1にセットされる。
第23図は、0O8DT実施例で提供される、L1キャ
ッシュに対するFQE要求を制御するためのNIPR論
理回路及びNAPR論理回路を示す、0O8DTエント
リは、FR=OのFQEを指すNAPRが新たに設定さ
れるたびに、NAPR>NI PRの間に、またはいず
れかの疑似OOSフィールドがFQE内で1にセットさ
れている間に、0O8DT160内で作成される。どの
(そのVIビットが0にセットされている)無効OOS
DTエントリを、OOSフエツチ要求または疑似0−O
Sフェッチ要求に対して割り振ることもできる。並列組
合せ論理回路1は、すべてのFQエントリ内の現NIP
R値及びFRフィールドを受け取って、次のNIPRポ
インタ値を生成する。並列組合せ論理回路2は、すべて
のFQエントリ肉の現NAPR値及びFR,VElV 
(O20)、FSBlSl、及びS2フィールドを受け
取って、次のNAPRポインタ値を生成する。比較機構
3は、次のNAPR値とNIPR値を比較して、線12
4上にNAPR>NIPR信号を発生する。
また、各キャッシュ・ミスごとに新しい0O8DTエン
トリが作成される。キャッシュ・ミスは、IDFO及び
EAがミス信号と共にタグとして0O8DT制御機構に
提供される点を除き、通常の方法でキャッシュによって
信号で指示される。このミス信号によって新しい0O8
DTエントリが割り振られ、そのMフィールドが、その
ミスが信号で指示されたサイクル中に1にセットされる
キャッシュ・ミスの場合、その要求がOOSであるため
に前のエントリをもっていたか否かに関係な(、新しい
0O8DTエントリが提供される。
そのフェッチ要求がOOSでない場合は、前の0O8D
Tエントリは存在しない。そのことは、第23図の比較
機構3からのNAPR=NI PR倍信号よって指示さ
れる。したがって、任意のキャッシュ・ミス・フェッチ
に対して2つの0O8DTエントリが存在する場合でも
、障害は起こらない。
第24図に示したように、割り振られた0O8DTエン
トリ内のI DFOフィールド(OOSDT、IDFO
)は、いくつかのタイプのOOSフェッチ要求または疑
似OOSフェッチ要求のいずれか1つが存在する場合に
、ゲート148または149によって書き込まれる。F
Q (NAPR)、IDFO信号によって線131上に
提供される、0O8DTエントリ内のI DFOフィー
ルドは、ゲート148が以下の信号の1つによってイネ
ーブルされるとき、ゲート148によって書き込まれる
1、線124上のNAPR>NI PR倍信号これは真
のOOSフェッチ条件である。
2、線121.122、または123の1本上の疑似O
OSフェッチ信号。これは、次のいずれかである。
a、FSB (ストア・バッファからのフェッチ)信号
。これは線121上でFQ (NAPR)、  FSB
信号として指定される。
b、直列化命令フェッチ・オペランド標識S1゜これは
線122上でFQ (NA  PR)。
Slとして指定される。
C0未完了の直列化命令に続き、それとオーバラップし
ている命令内のフェッチ・オペランド用の直列化命令後
フェッチ標!ls2゜これは線123上でFQ (NA
PR)、82信号として指定される。
OOSDTエントリは、OOS状態または疑似OOS状
態のいずれかがFQE内に存在する場合に、それで表さ
れるオペランド・データに対するストア要求を行なうた
め、NAPRによってFQEが選択されるマシン・サイ
クルで生成される。
次いで、FQE内のIDFO及びEAが、割り振られた
0O8DTエントリ内のI DFOフィールド及びEA
フィールドにゲートされ、その0O8DTエントリ内の
Vlビットが状態1にセットされる。 第23図では、
キャッシュ・ミス状態の場合を除き、同じフェッチ・オ
ペランド要求に対して複数のOOSエントリを管理しな
くてもいいように、前述の0O8DT実施例の動作に対
して制限が設けられている。すなわち、キャッシュ・ミ
スの場合を除き、0O8DT実施例では、1つのフェッ
チ要求につきただ1つのOOS状態が許される。FQE
は、次のOOS状態または疑似OOS状態、すなわちN
APR>NIPR状態、またはSBからのフェッチ状態
、または51=1状態、または52=1状態のうちのい
ずれか1つでフェッチ要求を行なうことができる。
フェッチ・オペランドに対する複数のOOS状態の処理
により、0O8DT実施例の動作がきわめて複雑にかり
、そのハードウェア実施態様はきわめて高価になること
があるが、複数OOS状態はまれにしか予想されないの
で、システム全体の性能はほとんどまたは全く影響を受
けない(前の2つの実施例は、0O8DT実施例とはそ
の動作が大きく異なるので、複数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個のO
OS状態に減少した後、最終的にフェッチ要求されるこ
ともある。
たとえば、フェッチ・オペランドがFQE、52=1を
もつ(まだ完了していない直列化命令の後に続くため疑
似OOS状態を示す)と仮定する。
この場合、このFQEをNAPRが指しているときにこ
のFQEがNAPR>NIPR状態(第20O8状態)
をもつ場合は、追加のNAPRテストでフェッチ・オペ
ランドが2つのOOS状態をもつと判定され、フェッチ
要求に対してNAPRがそのFQEを選択することはで
きない。このとき、NAPRは、0O8DT  NAP
R基準に合致する次のFQEを選択する。
第23図では、NAPR>NIPR状態に関する制限は
、NAPRが指すFQEが、キャッシュ要求を行なう直
前に、かつ0O8DTエントリを生成できる前に、次の
状態、すなわちVE=1、FR:01FSB=O1V 
(OSC)=O,S 1=01及び52=Oをもたなけ
ればならないという要件によって制御される。こうする
と、疑似OOS状態が存在しない場合にだけ、NAPR
>NIPR状態に対して0O8DTエントリが作成され
るようになる。すなわち、FSB=Oの間はFSB状態
は存在することができず、osc=oの間はOSC状態
は存在できず、51=Oかつ52=Oの間は直列化命令
状態は存在できない。0O8DTエントリをもつ要求が
後でキャッシュ・ミスとなった場合、その要求に対する
第2の0O8DTエントリが作成され、その要求が(N
APR>NIPR状態によって示される)早目のフェッ
チ要求及び(キャッシュ・ミス状態によって示される)
遅日のフェッチ要求になうたことを示す。
各OOSDTエントリは、そのDIDOフィールド内で
示される除去従属性をもち、それがL1キ中ツシー制御
機構から0O8DTに返されるIDFO情報と比較され
る。0O8DTエントリ内のDIDOID−ルドは、I
DFOフィールドがその0O8DTエントリに書き込ま
れるのと同時にその0O8DTエントリ内に書き込まれ
る。DIDOID−ルドに書き込まれる内容は、それに
対する0O8DTエントリが作成されているFQE内で
指示されるOOS状態または疑似OOS状態のタイプに
よって制御される。有効OOSDTエントリのDIDO
ID−ルドの内容によって、その0O8DTエントリが
後でその0O8DTから(無効にすることによって)ど
のように除去されるかが決まる。0O8DTエントリの
除去は、DIDOID−ルドで指示される情報が記憶装
置から返されたときに行なわれる。
第24図に示すように、割り振られた0O8DTエント
リ内のDIDOID−ルド(OOSDT。
D I Do)は、いくつかのタイプのOOSフエ。
チ要求または疑似OOSフエツチ要求の1つが発生した
場合に、ゲート142.143.144、または14B
のうちの1つによって書き込まれる。
OOSDTエントリ内に書き込まれるDIDO値及びそ
のゲート信号は次のように指示される。
1、線124上の真のOOSフェブチNAPR>NIP
R状態は、DIDOID−ルド:FQ(NUPR)、I
DFOに書き込まれる。
2、線121.122、または122のうちの1本上の
疑似OOSフェッチ信号は、次のよろに動作する。
a、線12i上のFSB (ストア・バッフ1からのフ
ェッチ)信号FQ (NAPR)、FSBは、DIDO
ID−ルド: FQ (NAPR)、ID5O(O20
)にゲートされる。
b、線122上の直列化命令フェッチ・オペランド標識
FQ (NAPR)、S 1は、DIDOID−ルド:
PSOP、ID5Oにゲートされる。
C0線123上の直列化命令後フェッチ標識FQ (N
APR)、82は、DIDOID−ルド:LSIDSO
,ID5Oにゲートされる。
ある要求に対してNAPR>NIPROOS状態が存在
する場合、線129上に提供されるFQ (NUPR)
、IDFOと名付ける信号を使って、第5図に示すNU
PRが現在指している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は再び減分される。NU
PRがFR=OのFQエントリを選択するまで、このテ
ストが繰り返される。
次に、NUPRによって選択されたFQEのIID及び
オペランド#が、OOSDTエントリに対するDIDO
として読み出される。NAPRによって選択された現F
QEのIID及びオペランド#が、同じ0O8DTエン
トリに対する対応するIDFOとして読み出される。ま
た、NAPRエントリのEAが読み出されて、選択され
た現OOSDTエントリ内に書き込まれ、0O8DTエ
ントリ内のVビットが1にセットされて、そのエントリ
を有効にする。
疑似OOS状態が存在しないとき、NUPR動作は、次
の表現によって記述することができる。
NAPR=NI PR=NUPRの場合、0O8FQエ
ントリがなく  (OOSDTエントリが割り振られて
いす)、NUPRはどのDIDOも選択できない、 NAPRが=N I PRでないとき、NUPRをNA
PRにセットする NAPRは割り振られた0O8DTエントリに対するI
DFOをもつFQエントリを選択するが、NUPRはN
UPR=NAPRの間どのDIDOも選択しない、NU
PRを、より小さいIIDをもつ次の各FQEを指すよ
うに−1ずつ減分し、FQEのFR=1の場合、再び減
分する。
FQEのFR=Oのとき、NUPRの減分を停止する。
NAPRがそのIDFOをもつFQEを指している閏に
、NUPRポインタは、0O8DTエントリに対するD
IDOをもつFQEを選択する。
SBからのフェッチの場合、DIDOは、NAPRによ
って選択されたFQエントリのOSC制御フィールド、
すなわちFQ (NAPR)、ID5O(O20)であ
り、このFQエントリ以前のSBに対する最後のストア
要求を識別する。次に、ID5O(O20)で識別され
るSQエントリ内のFSBビットがオンにセットされる
。FQエントリ内のSBR(ストア・バッファ番号)フ
ィールドが、そのストア要求に対するFQエントリが生
成されたときに、SB内の割り当てられた位置でセット
される。SBフェッチは、同じFQ要求に対するキャッ
シユ・ヒツトがデータを返すことができるとき(標準デ
ータ返送時)より前にデータを返すので、早目フェッチ
と見なされる。
キャッシュ・ミスの場合に0O8DTエントリが生成さ
れたときは、割り振られた0O8DTエントリ内のID
FOフィールドとDIDOID−ルドは、その代りに、
ミス信号とともにL1キャッシュから返送されたRET
URN、IDFOにセットされる。線138から提供さ
れるキャッシュ・ミス信号が、ゲー)149.152、
及び153をイネーブルする。これらのゲートは、割り
振られた0O8DT二ントリ内のIDFOフィールド、
EAフィールド、及びMフィールドに、それぞれ線13
2上でRETURN、IDFO,線133上でRETU
RN、EA、線137から状態1をゲートする。
OOSDT直列化制御: OOSDT実施例はまた、命令ストリーム内の直列化命
令の影響を受けるオペランドのオーバラップしたフェッ
チをも支援する。0O8DT実施例は、直列化命令に出
会ったときに命令ストリームの実行を遅らせる通常の直
列化オーバヘッドを解消または軽減し、通常のシステム
で発生する、直列化命令に対する命令復号プロセスの停
止を回避する。
直列化命令の影響を受けるフェッチ・オペランドは、F
Q内の各エントリに直列化制御ビット・フィールドS1
及びS2を追加することによってタグ付けされる。直列
化命令の各フェッチ・オペランドのFQE内のビットS
1がオンに(1に)セットされる。直列化命令に続く命
令のフェッチ・オペランドに対するFQE内のビットS
2が、その直列化命令が実行を完了する前の期間中にオ
ンに(1に)セットされる。1にセットされたSlまた
は82ビツトによってタグ付けされたすべてのフェッチ
・オペランドは、本発明では疑似OOSフェッチ・オペ
ランドとして処理される。それらは、NAPRとNIP
Rの間の関係を使用しないので、疑似OOSフェッチと
見なされる。
SlまたはS2がオンのFQEに対してL1キャッシュ
要求が発行されると、FQ (NAPR)、EA倍信号
第17図からの線73上で第24図の0O8DT実施例
に送られる。0O8DT実施例では、この信号により、
疑似OOSフェッチ要求に対する0O8DTエントリ、
を割り振る。
直列化命令のOOS処理は、PSOP (前のストア・
オペランド・ポインタ)レジスタ及びLSIDSOレジ
スタによって支援される。どちらのレジスタも、第6図
に示されている。
psopレジスタは、新しく生成された各SQエントリ
内のI DSOを受け取る。受け取られた各ID5Oは
、psopレジスタ内のID5Oにオーバレイする。し
たがって、PSOPレジスタは、最後に復号されたスト
ア・オペランドのID5Oを維持する。ただし、PSO
Pの内容は、直列化命令が復号されたとき凍結される。
LSIDSOレジスタは、それぞれが次のものにオーバ
レイした、復号された各直列化命令の各ストア・オペラ
ンドのID5Oを受け取る。したがって、LSIDSO
レジスタは、現在復号されている直列化命令の最後に復
号されたストア・オペランドのID5Oを記憶する。
したがって、いずれかの直列化命令が復号されていると
き、PSOPレジスタは、その直列化命令の直前の最後
のストア・オペランドのI DSOを含む。復号が進む
につれて、直列化命令のために要求される各フェッチに
対して割り振られたFQE内の81ビツトが、オンにセ
ットされる。ただし、直列化命令内のストア・オペラン
ドに対するFQEは含まない。51=1の各FQE要求
に対して0O8DTエントリが作成され、そのDIDo
ID−ルドは、PSOPレジスタ内の現ID5O内容(
PSOP、ID5O)にセットされる。
直列化命令がその実行を完了する前に、後続の命令はそ
のオペランド指定を復号することができ、次いで、直列
化命令の実行とオーバラップする後の各フェッチ・オペ
ランドに対して割り振られた各FQE内の82ピツトが
オンにセットされる。
直列化命令の最後に復号されるオペランド指定は、スト
ア・オペランドに対するものであることもあるが、すべ
ての直列化命令がストア・オペランドをもつわけではな
い。直列化命令がストア・オペランドをもつ場合、最後
のストア・オペランドを表すSQE内のID5Oがセッ
トされて、LS ID5Oレジスタに入れられる。52
=1のFQE要求に対して作成された0O8DTエント
リ内のDIDOID−ルドが、LS I DSOレジス
タ内の現ID5Oの内容(LSIDSO,ID5O)に
セットされる。
データ返送: フェッチ要求を満たすためキャッシュからデータが返さ
れるとき、0O8DTエントリに対するDIDOID性
の決定が行なわれる。このデータ返送動作では、XI要
求に対するOOS露出ウィンドウを終了するために0O
8DT内でいずれかの0O8DTエントリを除去(無効
化)すべきかどうか、または異なるオペランドのための
データの返送を待つように1つまたは複数の0O8DT
エントリの除去従属性を変更すべきかどうかを判定する
キャッシュ回路は、各キャッシュ要求とともに提供され
たEA及びIDFOまたはID5Oを記憶する。これら
は記憶階層内でそのデータがアクセスされるとき、要求
されたデータにタグ付けされる。記憶階層が要求された
データのアクセス(フェッチまたはストア)を完了した
とき、キャッシュは、フェッチされたデータまたはキャ
ッシュ・ミス信号と同時にEA及びIDFOを返送する
ことによって、あるいはストアに対する完了信号と同時
にEA及びID5Oを返送することによって、アクセス
の完了を伝える。RETURN、IDFO及びRETU
RN、EAが、第24図の線132及び134上で受け
取られる。
第25図は、第24図に見られる並列論理回路172を
より詳細に示したものである。回路172は、各RET
URN、IDFOを、すべての有効0O8DTエントリ
内のすべてのIDFOフィールド及びすべてのDIDO
ID−ルドと、並列に比較する。M=Oであり、かつ0
O8DTエントリiがRETURN、IDFOに等しい
0O8DT (i)、IDFOフィールドをもつことが
判明した場合、その0O8DT (i)、DIDOID
−ルドがDIDOREGと呼ぶレジスタに読み込まれ、
DIDOREG内のVビット・フィールドがオンに(状
態1に)セットされる。(エントリi内のIDFOフィ
ールド及びDIDOID−ルドは、0O8DT (i)
、IDFO及び0O8DT(i)、DIDOlまたはI
DFO(i)及びDIDO(i)として表されることが
ある。)しかし、0O8DT内の1つまたは複数のエン
トリj内でRETURN、IDFOに等しいDIDOI
D−ルドが見つかった場合は、そのDIDOREG、D
IDOがテーブル内の各OOSDT(j)、DIDOI
D−ルドにコピーされる。この処理によって0O8DT
エントリjに対する従属性が変更され、その結果、それ
らの除去はその後はDIDO(1)で識別されるオペラ
ンドのためのデータの返送によって制御されるようにな
る。
しかし、0O8DT (i)エントリが見つからなかっ
た場合は、RETURN、IDFOに等しt、1DID
o(j)フィールドについて、見つかった各OOSDT
エントリjが、そのv=Oをセットすることによって無
効にされる。
RETURN、IDFOに等しい0O8DT(i)、I
DFOフィールドをもつことが判明したいずれかのエン
トリ内でM=1によってキャッシュ・ミスが指示された
とき、0O8DTエントリiが、そのv=Oをセットす
ることによって無効にされる。なぜなら、そのデータを
受け取った彼は、その要求はもはやOOSではないから
である。(M=1の0O8DTエントリ内ではIDFO
とDIDOは等しい。) ストアの完了は、DIDO(j)がRETURN、ID
0(すなわちID5O)に等しいとき、OOSDTエン
トリに対して従属性効果をもつ。
ストアは概念的順序でアクセスされるので、OOSとは
見なされない。
OOSDT  XI動作: 各XI要求は、EA (Xl、EAと呼ぶ)を提供し、
このEAがすべての0O8DTエントリ内のEAと並列
に比較される。0O8DTエントリの比較の結果が等し
い(XIヒツト)場合は、命令再試行信号が発生され、
これによって再試行動作が開始される。
正確な動作の説明: OOSDT実施例の動作は、以下の数学的記述によって
より正確に記述することができる。
1 、  MARING ENTRIES  IN 0
OSDT:1、SET NAPRTo POINT T
o NEXT FETCHREQUEST(FQE) A、IF NAPR>  HIPR,THENl)SE
T NUPRTOPOINT To DIDOFQE2
) ASSIGN 0OSDT ENTRY、 & S
ET:a)  0O3DT、E^=FQ(NAPR)、
EAb)  OOSDT、IDFO=FO(HAPR)
、IDFOc)  0OSDT、DIDO=FQ(Nl
jPR)、IDFOd)OOSDTJ=1 NUPR設定の決定。FQEフェッチOOSに対する0
O8DTエントリを作成する。
B、 IF FO(NAPR)、FSB=1.7HEN
1) ASSIGN 0O3DT ENTRY、 & 
SET:a) OOSDT、ECFQ(NAPR)、E
Ab) OOSDT、IDFO=FQ(HAPR)、I
DFOc) OOSDT、DIDO=FQ(HAPR)
、ID5O(OSC)d) 0OSDT、V=1 SBThらのフェッチに対する0O8DTエントリをす
る。(FSBタイプの0O8DTエントリの除去は、こ
の0O8DTエントリに対するOSCを引き起こす命令
の完了に従属する。)C,IF FQ(NAPR)、5
1=1.7HEN1) ASSIGN 0OSDT E
NTRY、 & SET:a) OOSDT、E^=F
Q(tiAPR)、EAb) OOSDT、IDFO=
FQ(N、APR)、IDFOc) OOSDT、DI
DO=SQ(PSOP)、ID5Od) SET OO
SDT、V=1 直列化命令の実行中のFQEフェッチに対するOOSD
Tエントリを作成する。(81タイプのOOSDTエン
トリの除去は、直列化命令の前のストア命令の完了に従
属する。) D、 IF FQ(HAPR)、52=1. THEN
l)ASSIGN 0O3DT ENTRY、 & S
ET?a) OOSDT、EA=FO(HAPR)、E
Ab) OOSDT、IDFO=FO(NAPR)、I
DFOc) OOSDT、DIDO=LSIDSOd)
 0OSDTJ=1 LS ID5O内の直列化命令の前の最後のストアの前
に直列化命令FQEフェッチに対するOOSDTエント
リを作成する。(82タイプの0O8DTエントリの除
去は、直列化命令の最後のストアの完了に従属する。) 2、5END’FO(NAPR) FETCHREQU
EST TOCACHE3、 CACHE C0HTR
OLS REMEMBERIDFO& EA0FREQ
UEST、 & IF FQ (NAPR) FETC
HREOuESTMISSES IN THE CAC
HE、 IT 5EHDS TO0OSDT:RETu
RN、EA & RETURN、 IDFOHEN 1)  0O5DT  ASSIGNS  ENTRY
、  &  SE丁S:a) 0OSDT、E^=RE
TURN、EAb) 0OSDT、IDFO=RETt
lRH,IDFOc) 0OSDT、DIDO=RET
URH,IDFOd) OOSDT、V=1 e) OOSDT、N=1 キャッシュ・ミスの場合、ミス信号をもつ0O8DTエ
ントリを作成する。(キャッシュ・ミスの0O8DTの
除去は、キャッシュ・ミス・データの返送に従属する。
) n、 0OSDT FQ C0NTR0L for S
ERIALIZERlN5TR1lCTIOHS: (−時にただ1つの直列化命令が処理されるものと仮定
する) 1、 NORMAL IHSTRUCTIOHDECO
DING、 AND UPONEHCOUNTERIH
G EACHN0W−SERIALIZERIHSTR
UCTIOHHAVIHG A 5TORE 0PER
AND?A、  DECODE THE 5TORE 
lN5TR1lCTIONB、  ASSIGHA 5
TORE QllEtlE ENTRY (SQE)C
,SET ID5OIN SQE INTOPSOP 
(前のストア・オペランド・レジスタ) D、  C0HTINUE IHSTRUCTIOHD
ECODINGPROCESS 1、 UNTIL A 5ERIALIZING IH
STRUCTIOHIS EHCOUHTERED 直列化命令前の動作におけるr前のストア」を決定する
。(PSOPは、各直列化命令に出会う前に最後のスト
アをもつ。) 2、5ERIALIZERIHSTRtlCTIOHE
HCOUHTERED& DECODED: A、 PROVIDE FQE FOREACH5ER
IALIZER−FETCH0PERAND SET FOE、51=1 SET FQE、52=O B、SET C0HTROLS TOHOLD the
 C0HTEHTSOF  PSOP  uNcHAH
GEDC,PROVIDE SQE FOREACH5
ERIALIZERSTORE  0PERAND D、SET  ID5OOF LAST 5ERIAL
IZER5TOREOPERAND INTOLSIDSO(最後の直列化命令のID5OR
EG) (直列化命令動作。) 3、 C0NTINUE DECODING lN5T
RUCTIOHS AFTERSERIALIZER A、 PROVIDE FQE FOREACHFET
CH0PERANDSET FQE、51=O SET FQE、52=1 B、 PROVIDE SQE FOREACH5TO
RE 0PERAND(直列化命令後動作。) 4、 COMPLETE PRIOR5TORE 0P
ERATIONINDICATED  IN  PSO
P(前のストアは、その復号後いつでも完了できる。) 5、 SET FQE(ALL)、Sl = 06、 
COMPLETE 5ERIALIZER5TORE 
0PERATION(直列化命令ストアは、直列化命令
の復号及びr前のストア」がともに完了した後、いつで
も完了できる。) ?、 A、 SET FOR(ALL)、S2 = O
B、 SET C0NTR0LS TOALLOW P
SOP TOCIIANGE8、 GOTO1,ABO
VE To C0HTINtlE EXECUTIHG
FOLLOWING lN5TRUCTIONSII1
.  REMOVAL OF 0OSDT ENTRI
ES:A、 SET DIDOREG、V=OB、 i
 =OTOP  (すべての0O8DTエントリ上で並
列であることが好ましい) 1) IF(OOSDT(i)、IDFO=RETUR
H,IDFO& V(i)=1 & M(i)=O)、
TIIEHa) SET DIDOREG、DID(C
OOSDT(i)、DIDOb) SET DIDOR
EG、V=1(OOSDT (1)=RETUR N、IDFOを探し、0O8DT (i)が見つかった場合、DID O(i)をセットしてD I DOR EGと呼ぶレジスタ内のDIDO フィールドに入れ、有効ビットV =1にセットする。) 2) IF(OOSDT(i)、IDFO=RETuR
H,IDFO& V(i)=1 & M(i)=1)、
THEHa) SET 0OSDT(i)、V=0(O
OSDT (i)が見つかり、 M=1でキャッシュ・ミスを表す 場合、0O8DT (i)を除去す る。) HDDO C,IF (DIDOREG、V=O)、 THENl
) IF(ANY 0OSDT(j)、DIDO=RE
TURH,IDFO)。
HEN a) SET ANY 0OSDT(j)、V=0(O
OSDT (i)が見つからな い場合、DIDO(j)=RET URN  IDFOの0O8DT (j)を探し、見つかった場合は、 各OOSDT(j)を除去する。) D、  ELSE 1)  IF(ANY 0OSDT(j)、DIDO=
RETURH,IDFO)。
THEM a)  SET 0OSDT(j)、DIDO=DID
OREG。
ID0 (OOSDT (i)が見つかった 場合、各DIDO(j)をDID O(i)にセットする。) IV、 5TORE COMPLETIOHREGAR
DING 0O3DT:(ストア・オペランドは概念的
順序でアクセスされ、したがってOOSではないので、
OOSDTエントリをもたない。) IF (OO3DT(ANY)、DIDO=STORE
 COMPLETE、IDSO)THEM SET 0
OSDT(ANY)、V=0(ストア完了は命令完了を
指示し、これによって、この命令のフェッチに対する0
O8DTエントリが除去される。) V 、 XI HANDLING BY 0O3DT:
IF 0OSDT(ANY)、EA = Xl、EAH
EN SIG)IAL THE COMPLETIOHQuE
UE (CG) TORESET ALL lN5TR
UCTIOHEXECIITIOHINPROCESS
 A)4D BEGIN EXECUTIOHFROM
 OLDESTI)ICOMPLETE IHSTR1
lCTIOH
【図面の簡単な説明】
第1図は、多重プロセッサ(MP)環境におけるプロセ
ッサ及びそれと記憶階層とのインタフェースを示す構成
図である。 第2A図は、概念的順序のアーキテクチャ規則、及び概
念的順序から外れてオペランドをフェッチすることによ
りそれらの規則にどう違反するのかを示す、ストア及び
フェッチ図である。 第2B図は、実行前と実行後の命令ならびに実行が未完
了の命令を含む、プロセッサにおけるパイプライン式命
令シーケンスを示す図である。 第3図は、シーケンス内の他のオペランドに対して早目
または遅日であるため、順序外れ(OOS)となってい
るオペランドを含む、フェッチ・オペランドのシーケン
スを示す図である。 第4図は、APR,NAPRlNUPR,NIPR,D
QPRという複数のポインタ・レジスタを有するフェッ
チ待ち行列(FQ)を示す図である。 第5図は、各FQエントリ内のフィールドを表す図であ
る。 第6図は、ストア待ち行列(SQ)とそれに関連するス
トア・バッファ(SB)、前のストア・オペランド・ポ
インタ・レジスタ、及び最後の直列化命令ID5O(識
別済みストア・オペランド)を示す図である。 第7図は、各SQエントリ内のフィールドを表す図であ
る。 第8図は、直列化命令後フェッチ(PSI FT)制御
を示す図である。 第9図は、本発明の一実施例の各キャッシュ・エントリ
に関連するOOSビット・フィールドを示す図である。 第10図は、第9図に示すOOSビット・フィールドを
使用する実施例を示す図である。 、第11図は、本発明の別の実施例の各キャッシュ・エ
ントリに関連するOOS識別子(OOSIID)フィー
ルドを示す図である。 第12図は、第11図に示すOOSIIDフィールドを
使用する実施例を示す図である。 第13図は、OOSビット実施例及びOOSIID  
ビット実施例で使用されるNAPR及びNIPR制御手
段を示す論理図である。 第14図は、APR制御手段を示す論理図である。 第15図は、DQPR制御手段を示す論理図である。 第16図は、FQエントリ内のV (O20)ピットを
リセットするためのリセット論理回路を示す図である。 第17図は、Ll (EA)、OOSビツトのセットと
リセットを行なうための論理回路を示す図である。 第18図は、OOSウィンドウの一例を示すサイクル・
タイミング図である。 第19図は、命令完了待ち行列(CQ)とそのポインタ
・レジスタを示す図である。 第20図は、CQエントリ内のフィールドを示す図であ
る。 第21図は、CQとともに使用されるIDPR(命令復
号ポインタ・レジスタ)に対する制御を示す論理図であ
る。 第22図は、命令再試行動作を開始する際に使用される
制御を示す論理図である。 第23図は、0O8DT実施例で使用されるNAPR及
びNIPR制御手段を示す論理図である。 第24図は、OOSDT(順序外れ従属性テーブル)と
その制御を示す図である。 第25図は、OOSDT実施例で使用されるデータ返送
用並列論理回路の詳細な構造を示す図である。 11・・・・命令フェッチ制御機構、12・・・・復号
器、1e・・・・オペランド・アドレス生成(AGEN
)/要求装置、18・・・・変換ルックアサイド・テー
ブル(TLB)、19・・・・L1キャッシュ、21・
・・・オペランド・フェッチ待ち行列、22・・・・オ
ペランド・ストア待ち行列、23・・・・実行装置、2
4・・・・オペランド・ストア・バッファ、26・・・
・L2キャッシュ、27・・・・主記憶装置、31・・
・・シーケンス制御装置、32・・・・命令実行制御機
構、33・・・・プログラム割込み制御機構。

Claims (40)

    【特許請求の範囲】
  1. (1)各プロセッサ内で実行されているプログラム中の
    命令の概念的順序が、そのプロセッサ内での割り当てら
    れた命令識別子(IID)の順序によって示され、かつ
    命令のオペランドにその命令のIIDが割り当てられる
    ようにして、プロセッサ上で実行されているプログラム
    によって命令が提供される順序で、少なくとも復号され
    た各記憶命令に順番にIIDを割り当てる、プロセッサ
    内の命令復号手段と、 フェッチ・オペランドに割り当てられたIIDの概念的
    順序に関係なく、前記復号手段によって復号された各フ
    ェッチ・オペランド指定に対するフェッチ・データを返
    すよう記憶装置に要求する手段と、 ストア・オペランドに割り当てられたIIDの概念的順
    序を考慮して、前記復号手段によって復号された各スト
    ア・オペランド指定に対するデータを記憶する手段と、 フェッチ・オペランドに対する順序外れ(OOS)状態
    を検出する手段と、 前記OOS検出手段によってOOS状態が検出されない
    限り、記憶装置から返されるフェッチの順序に関係なく
    、すべてのフェッチ・オペランド及びストア・オペラン
    ドを受け取り、各命令の実行を概念的順序で完了する命
    令実行手段と、前記OOS検出手段によって検出された
    OOS状態のフェッチ・オペランドを有する命令をプロ
    グラムの順序で再実行することを含めて、プログラムの
    命令を実行する手段とを含む、 データ処理システム。
  2. (2)前記OOS検出手段が、 フェッチ要求のIIDが、割り当てられたIIDの順序
    であり、オペランドが概念的順序であることを示すか否
    かを判定するため、現フェッチ要求のIIDを最も古い
    未フェッチ要求のIIDと比較する手段と、 フェッチ要求のIIDが割り当てられた順序でないこと
    を前記比較手段が示す場合、比較されたフェッチ要求の
    一方または両方がOOS状態であることを知らせる信号
    を供給する手段とを含む、請求項1に記載の、データ処
    理システム。
  3. (3)記憶装置からデータをフェッチするための準備の
    処理でオペランドに対する複数のフェッチ要求表現を有
    し、少なくとも要求されたデータが得られるまで各フェ
    ッチ要求表現を保持する、要求保持手段と、 フェッチされるデータの記憶アドレスを含み、かつフェ
    ッチ要求に対する前記信号手段からのOOS状態信号を
    含む、フェッチ要求に対するフェッチ要求表現に情報を
    記憶するための手段とを含む、請求項2に記載の、デー
    タ処理システム。
  4. (4)プロセッサが多重プロセッサ・システム(MP)
    内の複数のCPUの1つであり、各CPUが、L1キャ
    ッシュ内の各データ単位に対するエントリをもつL1デ
    ィレクトリを有する専用L1キャッシュと、 フェッチ要求表現に記憶されたOOS状態信号を有する
    フェッチ要求によってアクセスされたL1エントリに関
    連するOOSフィールドをオンにセットする手段と、 別のCPUからの相互無効化(XI)要求と共に提供さ
    れた記憶アドレスに等しい記憶アドレスをもつL1エン
    トリを無効にするXI手段と、別のCPUのXI要求が
    あるかどうか、アクセスされたL1エントリに関連する
    OOS状態フィールドをテストする手段と、XI要求が
    あるかどうか前記試験手段によってテストされたOOS
    状態フィールドをオンにセットしたオペランドをもつ命
    令から、またはその命令の前で、プログラムを再実行す
    べく前記実行手段を始動する手段とを含む、 請求項3に記載の、データ処理システム。
  5. (5)プロセッサが多重プロセッサ・システム(MP)
    内の複数のCPUの1つであり、各L1ディレクトリ・
    エントリに関連するOOSフィールドが、OOS状態信
    号を伴う表現をもつフェッチ要求によってアクセスされ
    たことに応答してオンにセットされるOOSビットを含
    む、請求項4に記載の、データ処理システム。
  6. (6)プロセッサが多重プロセッサ・システム(MP)
    内の複数のCPUの1つであり、各CPUが、フェッチ
    要求がキャッシュ・ミスでデータが返されない間に要求
    された、すべてのフェッチに関連するOOSビットをオ
    ンにセットするOOSビット・ターンオン手段を含む、
    請求項5に記載の、データ処理システム。
  7. (7)プロセッサが多重プロセッサ・システム(MP)
    内の複数のCPUの1つであり、各CPUが、直列化命
    令がその実行を完了するまで、前記直列化命令の復号か
    ら要求されたすべてのフェッチに関連するOOSビット
    をオンにセットするOOSビット・ターンオン手段を含
    む、請求項5に記載の、データ処理システム。
  8. (8)プロセッサが多重プロセッサ・システム(MP)
    内の複数のCPUの1つであり、各CPUが、フェッチ
    された記憶装置から記憶オペランドに対するデータを受
    け取る、CPUの命令/実行部分内のストア・バッファ
    と、 ストア・バッファ内の記憶オペランドに対するデータに
    アクセスするフェッチ要求によってアクセスされたL1
    ディレクトリ・エントリに関連するOOSビットをオン
    にセットするOOSビット・ターンオン手段とを含む、 請求項5に記載の、データ処理システム。
  9. (9)プロセッサが多重プロセッサ・システム(MP)
    内の複数のCPUの1つであり、各CPUが、ストア・
    バッファからの記憶オペランドに対するデータにアクセ
    スしているフェッチ要求がなく、キャッシュ・ミスでデ
    ータが返されないフェッチ要求がなく、直列化タイプの
    命令のフェッチ・オペランドに対する処理されているフ
    ェッチ要求がなく、かつOOS状態の標識をもつ前記要
    求保持手段内のフェッチ要求表現がないとき、L1ディ
    レクトリに関連するすべてのOOSビットをオフにリセ
    ットするOOSビット・ターンオフ手段と、L1ディレ
    クトリ・エントリに関連するOOSビットをオンにセッ
    トできるようにするために、前記OOSビット・ターン
    オフ手段からの出力に応答してOOSモード状態にセッ
    トされるOOSモード状態手段とを含む、 請求項5に記載の、データ処理システム。
  10. (10)プロセッサが多重プロセッサ・システム(MP
    )内の複数のCPUの1つであり、前記OOSモード状
    態手段がさらに、 オンにされたOOSビットの数をカウントするカウンタ
    手段と、 前記カウンタ手段が所定のカウントに達したときに作動
    されて、OOSモード・ディスエーブル状態にセットさ
    れた前記OOSモード状態手段をオフにリセットする、
    OOSディスエーブル手段とを含む、 請求項9に記載の、データ処理システム。
  11. (11)プロセッサが多重プロセッサ・システム(MP
    )内の複数のCPUの1つであり、各L1ディレクトリ
    ・エントリに関連するOOSフィールドが、 各L1ディレクトリ・エントリに関連するOOSIID
    (命令識別子)フィールドと、 OOSIIDフィールドを、OOS状態信号に関連する
    L1ディレクトリ・エントリにアクセスするフェッチ要
    求のIIDにセットする手段とを含む、 請求項4に記載の、データ処理システム。
  12. (12)プロセッサが多重プロセッサ・システム(MP
    )内の複数のCPUの1つであり、CPUが、OOS標
    識をもつ各フェッチ要求のIIDを受け取り、それをタ
    グ・エントリの各フェッチ要求によってアクセスされた
    L1ディレクトリ・エントリに対応する位置に一時的に
    記憶するOOSIIDタグ記憶手段と、 各タグ・エントリの有効性を示す手段とを含む、請求項
    11に記載の、データ処理システム。
  13. (13)プロセッサが多重プロセッサ・システム(MP
    )内の複数のCPUの1つであり、CPUが、前記XI
    手段によってアクセスされたL1ディレクトリ・エント
    リに対応するタグ・エントリの有効性を検出する手段と
    、 タグ・エントリが有効であることを前記検出手段が示し
    た場合に、タグ・エントリ内のOOSIIDを読み取る
    手段と、 前記読取り手段によって読み取られたOOSIIDを有
    する命令から、またはその命令の前に、現プログラムの
    実行を再開する手段とを含む、請求項12に記載の、デ
    ータ処理システム。
  14. (14)プロセッサが多重プロセッサ・システム(MP
    )内の複数のCPUの1つであり、 CPUが、前記読取り手段によって読み取られたOOS
    IIDを有するタグ・エントリを無効状態にリセットす
    る手段を含み、 前記リセット手段が、 完了された各命令のIIDを提供する手段と、読み取ら
    れたタグ・エントリ内のOOSIIDを、完了された各
    命令のIIDと比較し、比較の結果が等しいとき、その
    タグ・エントリを無効状態にセットする手段とを含む、 請求項13に記載の、データ処理システム。
  15. (15)プロセッサが多重プロセッサ・システム(MP
    )内の複数のCPUの1つであり、CPUが、OOS標
    識をもつ各フェッチ要求のEA(有効アドレス)を受け
    取り、スタック・エントリの、受け取ったOOSIID
    に対応する位置にそれを一時的に記憶するOOSIID
    スタック記憶手段と、 各スタック・エントリの有効性を示すための手段とを含
    む、 請求項13に記載の、データ処理システム。
  16. (16)プロセッサが多重プロセッサ・システム(MP
    )内の複数のCPUの1つであり、タグ・エントリ無効
    化手段が、 前記開始手段に応答して完了された各命令のIIDを提
    供する手段と、 完了された各命令のIIDをもつ、前記スタック記憶手
    段内の有効なスタック・エントリを見つける手段と、 見つかったスタック・エントリ内のEAを読み出す手段
    と、 読み出されたEAをもつ前記タグ記憶手段内のタグ・エ
    ントリ内でOOSIIDを探し出す手段と、 探し出したタグ・エントリを無効状態にセットする手段
    とを含む、 請求項15に記載の、データ処理システム。
  17. (17)プロセッサが多重プロセッサ・システム(MP
    )内の複数のCPUの1つであり、 エントリ無効化手段が、すべてのタグ・エントリを無効
    化する手段を含む、 請求項13に記載の、データ処理システム。
  18. (18)プロセッサが多重プロセッサ・システム(MP
    )内の複数のCPUの1つであり、 エントリ無効化手段が、すべてのタグ・エントリ及びす
    べてのスタック・エントリを無効化する手段を含む、 請求項15に記載の、データ処理システム。
  19. (19)直列化タイプの命令を復号するときに、直列化
    命令フィールドをフェッチ・オペランド要求表現の直列
    化命令状態にセットするプロセッサ内の手段と、 直列化命令フィールドがフェッチ・オペランド要求表現
    の直列化命令状態にセットされたときフェッチ・オペラ
    ンドのOOS状態の発生の有無を検出し、前記オペラン
    ドに割り当てられたIIDを提供する検出手段と、 前記検出手段によって提供されたOOSIIDをもつ命
    令を含む現プログラムの再実行を開始する手段とを含む
    、 請求項2に記載の、データ処理システム。
  20. (20)複数のプロセッサと、データ及び命令を記憶す
    るために前記複数のプロセッサによって共通に使用され
    る記憶装置とを有する多重プロセッサ・システム(MP
    )であって、各プロセッサが、そのプロセッサが最近に
    使用したデータ単位を記憶するためのキャッシュ手段と
    、 各プロセッサ内で実行されているプログラム中の命令の
    概念的順序が、そのプロセッサ内での割り当てられた命
    令識別子(IID)の順序によって示され、かつ命令の
    オペランドにその命令のIIDが割り当てられるように
    して、プロセッサ上で実行されているプログラムによっ
    て命令が提供される順序で、少なくとも復号された各記
    憶命令に順番にIIDを割り当てる、命令復号手段と、
    フェッチ・オペランドに割り当てられたIIDの概念的
    順序に関係なく、前記復号手段によって復号された各フ
    ェッチ・オペランド指定に対するフェッチ・データを返
    すよう前記キャッシュ手段に要求する手段と、 ストア・オペランドに割り当てられたIIDの概念的順
    序を考慮して、前記復号手段によって復号された各スト
    ア・オペランド指定に対するデータにアクセスする手段
    と、 割り当てられた順序から外れた割り当てられたIIDを
    もつフェッチ・オペランドに対する順序外れ(OOS)
    状態を検出する手段と、 前記フェッチ・オペランドが前記検出手段によってOO
    Sとして検出される期間としてのOOSウィンドウを決
    定する手段と、 少なくとも前記OOSウィンドウの間、前記プロセッサ
    のキャッシュ内の影響を受けるエントリと連想式に、フ
    ェッチ・オペランドに対するOOS標識を、MP内のす
    べてのプロセッサがアクセス可能な位置に記憶する手段
    と、 他の各プロセッサ内のキャッシュからの記憶すべきデー
    タ単位のすべてのコピーを無効にするため、MP内の他
    の各プロセッサがそのキャッシュ内にストアを行なうこ
    とを要求するとき、そのプロセッサに送られる相互無効
    化(XI)要求を発生する手段と、 OOSウィンドウの間に別のプロセッサからXI要求が
    発生したとき、OOS状態を検出する手段と、 OOS状態が検出された場合に、プログラムによって提
    供されるプロセッサ内の命令を、少なくともOOS状態
    が検出されたフェッチ・オペランドをもつ命令から実行
    する手段とを含む、 前記多重プロセッサ・システム。
  21. (21)前記フェッチ要求表現が、 各フェッチ持ち行列(FQ)エントリがフェッチ要求を
    制御するためのフィールドを含み、それらのフィールド
    が要求されたデータが記憶装置から返されたときにセッ
    トされるフェッチ要求(FR)フィールドを含む、FQ
    内の複数のFQエントリと、 オフにセットされたFRフィールドをもち、記憶装置に
    フェッチ要求を出すため、FQ内で順序が次のFQエン
    トリである現FQエントリをアドレスするNIPR手段
    と、 アドレスされた現FQエントリがオフにセットされたF
    Rフィールドをもつとき、前記NIPR手段によってア
    ドレスされるFQエントリの概念的順序を制御するため
    、FQフィールドがオフにセットされた現在最も古い有
    効FQエントリをアドレスするNIPRの設定を非要求
    状態に変更するように、前記NIPR手段の設定を変更
    する手段とを含む、 請求項1に記載の、データ処理システム。
  22. (22)フェッチ要求表現が、 記憶装置内で要求されたデータを有効にアドレスする有
    効アドレス(EA)と、 記憶装置からデータが要求されたときにオンにセットさ
    れるフェッチ要求(FR)フィールドと、フェッチ待ち
    行列(FQ)エントリ内のEAが、ストア動作が完了し
    たことを示すストア肯定応答信号をもっていない前の命
    令のストア要求と同じ記憶位置をアドレスしたために、
    FQエントリがオペランド・ストア比較状態をもつこと
    を示すためにオンにセットされるOSC標識とを含む、
    フェッチ要求を制御するためのフィールドを各エントリ
    が含む、複数のFQエントリと、 EAフィールド及びOSCフィールド内に、FQエント
    リに対する要求がまだなされていないことを示すOSC
    状態がEA及びFRフィールドについては存在しないこ
    とを示す、有効アドレスをもつ各FQエントリを検出し
    、NAPRで各FQエントリが検出されるたびに、それ
    に応答して、概念的順序である必要のない、FQから記
    憶装置へのフェッチ要求の順序を制御するため、要求さ
    れた状態を示すようにFRフィールドをセットすること
    を含めて、当該のFQエントリ内のEAにある要求され
    たデータにアクセスするため、記憶装置にフェッチ要求
    を発行するNAPR手段とを含む、 請求項21に記載の、データ処理システム。
  23. (23)フェッチ要求表現が、 記憶装置内で要求されたデータを有効にアドレスする有
    効アドレス(EA)と、 記憶装置からデータが要求されたときオンにセットされ
    るフェッチ要求(FR)フィールドと、要求されたデー
    タが記憶装置から返されたときオンにセットされるデー
    タ返送フィールドと、フェッチ待ち行列(FQ)エント
    リ内のEAが、ストア動作が完了したことを示すストア
    肯定応答信号をもっていない前の命令のストア要求と同
    じ記憶位置をアドレスしたために、FQエントリがオペ
    ランド記憶比較状態をもつことを示すためにオンにセッ
    トされるOSC標識とを含む、 フェッチ要求を制御するためのフィールドを各エントリ
    が含む、複数のFQエントリと、当該の命令の実行のた
    めに要求されたデータが記憶装置から返されたことを示
    すオンにセットされたDRフィールドをもつ各FQエン
    トリを検出し、そのFQエントリを無効状態にリセット
    するDQPR手段とを含む、 請求項22に記載の、データ処理システム。
  24. (24)フェッチ要求表現が、 従属FQエントリ(DIDO)が、NAPRによってア
    ドレスされるFQエントリ(IDFO)の次にくるFQ
    エントリであり、DIDOと、DIDOがその不連続性
    を決定するために用いるIDFOとがIDFO/DID
    Oの対になっている、FQに提供されるエントリのII
    D順序に関してそのID内で不連続性をもつ各DIDO
    を検出しアドレスするNUPR手段を含む、 請求項22に記載の、データ処理システム。
  25. (25)NUPR手段がさらに、 NAPRポインタがNIPRポインタと異なるとき、N
    UPRをNAPRに含まれるポインタにセットする手段
    と、 記憶装置からフェッチ・オペランドが要求されていない
    ことを表すフェッチ待ち行列エントリ(FQE)が見つ
    かるまで、NUPR内のポインタ値をNIPR内のポイ
    ンタ値の方向に増分する手段と、 順序外れフェッチ要求の記憶アドレスを、MP内の別の
    プロセッサの相互無効化要求のアドレスと比較するため
    に、NUPR内のポインタ値をテーブルの従属フィール
    ドに書き込む手段とを含む、請求項24に記載の、デー
    タ処理システム。
  26. (26)データ及び命令記憶装置を有する特定のプロセ
    ッサであって、前記プロセッサが多重プロセッサ・シス
    テム(MP)内の複数のCPUの1つであり、前記プロ
    セッサによって実行されているプログラムの各命令内の
    フェッチ・オペランド指定及びストア・オペランド指定
    を検出することを含めて、命令を概念的順序で復号する
    ための復号手段を含む命令/実行装置と、前記プログラ
    ムの命令が必要とする記憶装置からのオペランド・デー
    タにアクセスするために前記プロセッサによって排他的
    に使用されるキャッシュを含む記憶階層とを含み、前記
    キャッシュが、MP内の他のプロセッサの相互無効化(
    XI)要求を受け取って、データ単位の制御を、MP内
    のXIを要求する他のプロセッサに解放するというもの
    で、さらに、前記プロセッサ内の前記復号手段によって
    現在復号されている命令内のフェッチ・オペランド指定
    から、前記キャッシュに対するフェッチ要求が生成され
    次第、フェッチ・オペランドを生成し要求する手段と、 前記フェッチ要求が、前記復号手段からの復号されたオ
    ペランド指定の概念的順序であるかどうかを判定する手
    段と、 オペランドの概念的順序になっていないと前記判定手段
    によって判定された各フェッチ要求に対して生成される
    OOSテーブル(OOST)エントリを有し、各エント
    リが、OOSフェッチ・オペランドの識別子(IDFO
    )及びそのオペランドに対するデータ単位のための記憶
    位置(EA)を受け取る、順序外れ(OOS)テーブル
    手段と、OOSTエントリをOOSTから除去するため
    の条件を決定するため、OOSTエントリ内に従属性識
    別子(DIDO)を提供する手段とを含む、前記特定の
    プロセッサ。
  27. (27)さらに、フェッチ・オペランドに対する実際の
    OOS状態とは独立して存在できる、そのオペランドに
    対する1つまたは複数の疑似OOS状態を決定する手段
    と、 疑似OOSオペランドに対するOOSTエントリが、そ
    のオペランドに対するデータ単位のためのIDFO及び
    EAをも受け取るように、疑似OOS状態をもつフェッ
    チ要求に対するOOSTエントリを生成する手段と、 OOSTから疑似OOSOOSTエントリを除去する条
    件を示す、疑似OOSオペランドに対する従属性識別子
    (DIDO)をOOSTエントリ内で提供する手段とを
    含む、 請求項26に記載の、MP内の特定のプロセッサ。
  28. (28)前記フェッチ要求生成及び要求手段がさらに、
    各OOSフェッチ要求のIDFO及びEAをキャッシュ
    に提供して、記憶階層が、前記要求に対してフェッチさ
    れたデータ単位でIDFO及びEAをタグ付けできるよ
    うにする手段と、 フェッチされたデータ単位でタグ付けされたIDFO及
    びEAをプロセッサの命令/実行装置に送るための、キ
    ャッシュを備えたデータ返送制御機構とを含む、 請求項27に記載の、MP内の特定のプロセッサ。
  29. (29)さらに、キャッシュに対する各OOSフェッチ
    要求のための各OOSTエントリを受け取るための、O
    OSTを含む連想式アレイと、 前記連想式アレイ内のすべての有効エントリ内で、フェ
    ッチ要求に対するデータ単位のためのキャッシュを備え
    た前記データ返送制御機構によって命令/実行装置に返
    されたタグ付けされたIDFOに等しいIDFO識別子
    があるかどうかを並列に探索するOOST探索手段とを
    含む、 請求項28に記載の、MP内の特定のプロセッサ。
  30. (30)OOSまたは疑似OOSフェッチ・オペランド
    に対する従属性識別子(DIDO)を提供する手段がさ
    らに、 前記復号器手段から提供された各フェッチ指定のエント
    リ(FQE)を受け取るフェッチ・オペランド待ち行列
    と、 次にキャッシュに対するフェッチ要求をもつ各FQEを
    選択する要求選択手段(NAPR)と、前記待ち行列内
    のフェッチ要求の概念的順序で発行された最後のフェッ
    チ要求を示す概念的順序指示手段(NIPR)と、 キャッシュに対してオペランド・データ単位のフェッチ
    要求を行なえる状態にある前記待ち行列内の最も古いエ
    ントリを示す従属性FQE指示手段(NUPR)と、 前記従属性FQE指示手段(NUPR)によって示され
    たFQEで表されるオペランドの識別子(IDFO)を
    書き込む手段とを含む、 請求項28に記載の、MP内の特定のプロセッサ。
  31. (31)OOSまたは疑似OOSフェッチ・オペランド
    に対する従属性識別子(DIDO)を提供する手段がさ
    らに、 キャッシュ・ミスによって遅延されているフェッチ要求
    のIDFO及びEAをOOSTに知らせるための、キャ
    ッシュを備えたキャッシュ・ミス信号手段と、 前記キャッシュ・ミス信号手段によって知らされた各キ
    ャッシュ・ミスのフェッチ・オペランドに対するエント
    リをOOST内に作成する手段と、前記作成手段によっ
    て提供されたOOSTエントリ内のIDFOとDIDO
    の両方を、キャッシュ・ミス信号と共に返されたIDF
    Oの値にセットし、かつそのOOSTエントリに対する
    キャッシュ・ミス標識をセットする手段とを含む、請求
    項28に記載の、MP内の特定のプロセッサ。
  32. (32)OOSまたは疑似OOSフェッチ・オペランド
    に対する従属性識別子(DIDO)を提供する手段がさ
    らに、 フェッチ要求がストア・オペランドに対するものである
    ことを示すフェッチ・オペランド要求手段と、 ストア・オペランド要求に応答してフェッチされたデー
    タ単位を受け取るストア・バッファ(SB)手段と、 SBフェッチがフェッチ要求に対する疑似OOS状態で
    あるという、SBからデータ単位をフェッチするために
    フェッチ要求を生成する手段と、SBからデータ単位を
    フェッチするための疑似OOSフェッチ要求に対するO
    OSTエントリを生成する手段と、 OOSTからのOOSTエントリの除去が、ストア・オ
    ペランドに対する記憶装置アクセスが完了したときに行
    なわれるという、それに対してSBフェッチが行なわれ
    ているストア・オペランドを識別する従属性識別子(D
    IDO)を、OOSTエントリ内に設ける手段とを含み
    、 請求項28に記載の、MP内の特定のプロセッサ。
  33. (33)OOS及び疑似OOSフェッチ・オペランドに
    対する従属識別子(DIDO)を提供する手段がさらに
    、 フェッチ・オペランドが直列化命令用のものであること
    を示す手段と、 直列化命令内の各オペランドに対するデータ単位を記憶
    階層からフェッチするためのフェッチ要求に対する疑似
    OOS状態を指示する手段と、直列化命令に対して行な
    われた各疑似OOSフェッチ要求に対するOOSTエン
    トリを生成する手段と、 OOSTからのOOSTエントリの除去が、最後のスト
    ア・オペランドに対する記憶アクセスが完了したときに
    行なわれるという、直列化命令の前に復号された最後の
    ストア・オペランドを識別する従属性識別子(DIDO
    )を、直列化命令のための各疑似OOSフェッチ要求に
    対して作成された各OOSTエントリ内に設ける手段と
    、直列化命令の実行が完了したことを知らせる手段と、 直列化命令の実行が完了したことを前記信号手段が知ら
    せる前に、直列化命令に続く任意の命令に対して提供さ
    れた各フェッチ要求に対する疑似OOS状態を指示する
    手段と、 直列化命令に続いて行なわれた各疑似OOSフェッチ要
    求に対するOOSTエントリを生成する手段と、 OOSTからのOOSTエントリの除去が、直列化命令
    のストア・オペランドに対する記憶装置アクセスが完了
    したときに行なわれるという、直列化命令内の任意のス
    トア・オペランドを識別する従属性識別子(DIDO)
    を、直列化命令に続く各疑似OOSフェッチ・オペラン
    ドに対して作成された各OOSTエントリ内に設ける手
    段とを含む、 請求項28に記載の、MP内の特定のプロセッサ。
  34. (34)OOS及び疑似OOSフェッチ・オペランドに
    対する従属性識別子(DIDO)を提供する手段がさら
    に、 現在データが返されていない記憶装置フェッチ要求のた
    めに使用されるフェッチ待ち行列内の任意の選択された
    エントリ(FQE)内に、セットされると直列化命令内
    のフェッチ・オペランドに対するフェッチ要求を示す第
    1標識フィールド、及びセットされると直列化命令に続
    く命令内のフェッチ・オペランドに対するフェッチ要求
    を示す第2標識フィールドを設ける手段を含む、請求項
    33に記載の、MP内の特定のプロセッサ。
  35. (35)OOS及び疑似OOSフェッチ・オペランドを
    支援するためのプロセッサ手段がさらに、データ返送制
    御機構によって提供される返されたIDFOを各OOS
    Tエントリ内のIDFOと比較する手段と、 返されたIDFOに等しいIDFO(i)をもつことが
    判明した、キャッシュ・ミスをもたない任意のエントリ
    OOST(i)内にDIDO(i)を登録するための手
    段、及びキャッシュ・ミスをもつ見つかったすベてのエ
    ントリOOST(i)を除去する手段と、 返されたIDFOに等しいDIDO(j)をもつOOS
    T(j)を見つけるため、返されたIDFOを各OOS
    Tエントリ内のDIDOと比較する手段と、 OOST(i)が見つからなかった場合、見つかったエ
    ントリOOST(j)を除去する手段と、OOST(i
    )が見つかった場合、各DIDO(j)を登録されたD
    IDO(i)にセットする手段とを含む、 請求項33に記載の、MP内の特定のプロセッサ。
  36. (36)OOS及び疑似OOSフェッチ・オペランドを
    支援するためのプロセッサ手段がさらに、返されたID
    FOが、すベてのOOSTエントリ内のIDFO及びD
    IDOと並列に比較できるようにするための、OOST
    を含む連想式アレイ手段を含む、 請求項34に記載の、MP内の特定のプロセッサ。
  37. (37)OOS及び疑似OOSフェッチ・オペランドを
    支援するためのプロセッサ手段がさらに、比較の結果、
    ストア・オペランドに対する返された識別子に等しいD
    IDOをもつOOSTエントリを無効にする手段を含む
    、 請求項35に記載の、MP内の特定のプロセッサ。
  38. (38)OOS及び疑似OOSフェッチ・オペランドを
    支援するためのプロセッサ手段がさらに、特定のプロセ
    ッサのキャッシュ内に記憶されたデータ単位に対する制
    御を得たいと要求している他のプロセッサに対して、相
    互無効化(XI)信号を前記データ単位に対する記憶位
    置EAと共に提供する手段と、 OOST内の各エントリ内のEAを、XI信号と共に提
    供されたEAと比較するための手段、及びOOST内の
    いずれかのEAがXIのEAと等しいことが判明した場
    合にXIヒット信号を提供する手段と、 いずれかのエントリがXIのEAに等しいEAをもつと
    き、OOST内のすベてのエントリを無効にする手段と
    を含む、 前記のプロセッサ。
  39. (39)OOS及び疑似OOSフェッチ・オペランドを
    支援するためのプロセッサ手段がさらに、XIヒット信
    号によって再試行が開始されることを知らせる手段と、 XIヒット信号に応答して、現在その実行が未完了の最
    も古い命令からプログラムの再始動を開始する手段とを
    含む、 請求項37に記載の、MP内の特定のプロセッサ。
  40. (40)OOS及び疑似OOSフェッチ・オペランドを
    支援するためのプロセッサ手段がさらに、特定のプロセ
    ッサの専用キャッシュ内のXIのEAに等しいEAをも
    つデータ単位を少なくとも無効にする手段を含む、 請求項37に記載の、MP内の特定のプロセッサ。
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 true JPH03201130A (ja) 1991-09-03
JPH0677233B2 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207238A (ja) * 2006-02-02 2007-08-16 Internatl Business Mach Corp <Ibm> 非同期式パイプラインのためのデータ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置及び方法
JP2008507020A (ja) * 2004-07-15 2008-03-06 イマジネイション テクノロジーズ リミテッド マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御
JP2009540411A (ja) * 2006-06-07 2009-11-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 高速で安価なストア−ロード競合スケジューリング及び転送機構
JP2014219728A (ja) * 2013-05-01 2014-11-20 株式会社エルイーテック 処理装置におけるエラーを判定及び解決する装置及び方法

Families Citing this family (109)

* 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
WO1994008287A1 (en) 1992-09-29 1994-04-14 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
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
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
GB2287111B (en) * 1994-03-01 1998-08-05 Intel Corp Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
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
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
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
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
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
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
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
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
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
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
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
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
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
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
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
EP1005675B1 (en) * 1996-07-16 2007-01-03 Advanced Micro Devices, Inc. A data memory unit configured to store data in one clock cycle and method for operating same
DE69611388T2 (de) * 1996-07-16 2001-08-09 Advanced Micro Devices Inc Lade/speichereinheit mit mehrfachen zeigern zum ergänzen von speicherung und fehlgriffladebefehlen
US6785803B1 (en) * 1996-11-13 2004-08-31 Intel Corporation Processor including replay queue to break livelocks
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
US6145038A (en) * 1997-10-31 2000-11-07 International Business Machines Corporation Method and system for early slave forwarding of strictly ordered bus operations
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
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
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6748492B1 (en) 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
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
US7386704B2 (en) * 2002-10-31 2008-06-10 Lockheed Martin Corporation Pipeline accelerator including pipeline circuits in communication via a bus, and related system and method
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
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
US7627578B2 (en) * 2004-09-01 2009-12-01 International Business Machines Corporation Apparatus, system, and method for file system serialization reinitialization
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
US7487302B2 (en) * 2004-10-01 2009-02-03 Lockheed Martin Corporation Service layer architecture for memory access 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
US7461238B2 (en) 2006-06-07 2008-12-02 International Business Machines Corporation Simple load and store disambiguation and scheduling at predecode
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
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
US9477412B1 (en) 2014-12-09 2016-10-25 Parallel Machines Ltd. Systems and methods for automatically aggregating write requests
US9529622B1 (en) 2014-12-09 2016-12-27 Parallel Machines Ltd. Systems and methods for automatic generation of task-splitting code
US9690713B1 (en) 2014-04-22 2017-06-27 Parallel Machines Ltd. Systems and methods for effectively interacting with a flash memory
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
US9753873B1 (en) 2014-12-09 2017-09-05 Parallel Machines Ltd. Systems and methods for key-value transactions
US9690705B1 (en) 2014-12-09 2017-06-27 Parallel Machines Ltd. Systems and methods for processing data sets according to an instructed order
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
WO1985000453A1 (en) * 1983-07-11 1985-01-31 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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008507020A (ja) * 2004-07-15 2008-03-06 イマジネイション テクノロジーズ リミテッド マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御
JP2007207238A (ja) * 2006-02-02 2007-08-16 Internatl Business Mach Corp <Ibm> 非同期式パイプラインのためのデータ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置及び方法
JP2009540411A (ja) * 2006-06-07 2009-11-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 高速で安価なストア−ロード競合スケジューリング及び転送機構
JP2014219728A (ja) * 2013-05-01 2014-11-20 株式会社エルイーテック 処理装置におけるエラーを判定及び解決する装置及び方法

Also Published As

Publication number Publication date
US5185871A (en) 1993-02-09
EP0436092A3 (en) 1993-11-10
JPH0677233B2 (ja) 1994-09-28
EP0436092A2 (en) 1991-07-10

Similar Documents

Publication Publication Date Title
JPH03201130A (ja) データ処理システム
EP0381470B1 (en) Processing of memory access exceptions along with prefetched instructions within the instruction pipeline of a virtual memory system-based digital computer
JP3644959B2 (ja) マイクロプロセッサシステム
JP3701814B2 (ja) マルチプロセッサ・システム及びそのシステム・シリアル化方法
US5809275A (en) Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US5018063A (en) Method for reducing cross-interrogate delays in a multiprocessor system
US4851991A (en) Central processor unit for digital data processing system including write buffer management mechanism
US5680565A (en) Method and apparatus for performing page table walks in a microprocessor capable of processing speculative instructions
JP2000029857A (ja) 個々のプロセッサの早期リリ―スによるシステム・シリアル化方法
US5590294A (en) Method and apparatus for retarting pipeline processing
JPH08278886A (ja) データ処理システムでの拡張システム管理操作のための方法およびシステム
US4831581A (en) Central processor unit for digital data processing system including cache management mechanism
JP2000259412A (ja) ストア命令転送方法およびプロセッサ
CA2260541C (en) Apparatus and method for tracking out of order load instructions to avoid data coherency violations in a processor
US5119484A (en) Selections between alternate control word and current instruction generated control word for alu in respond to alu output and current instruction
EP0380842A2 (en) Method and apparatus for interfacing a system control unit for a multiprocessor system with the central processing units
JPH0410102B2 (ja)
JPH0827757B2 (ja) データ・ブロック転送制御方法
EP0375892B1 (en) Data processing system
JPH0133856B2 (ja)
JP3715057B2 (ja) パニック・トラップ・システム
JPH03268041A (ja) キャッシュ操作明示化コンピュータ
JPS59172044A (ja) 命令制御方式
KR910007028B1 (ko) 데이타처리 시스템에서의 파이프라인 처리방법
JPH0784971A (ja) コンピュータシステム