JPH10269080A - 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置 - Google Patents

順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置

Info

Publication number
JPH10269080A
JPH10269080A JP10053198A JP5319898A JPH10269080A JP H10269080 A JPH10269080 A JP H10269080A JP 10053198 A JP10053198 A JP 10053198A JP 5319898 A JP5319898 A JP 5319898A JP H10269080 A JPH10269080 A JP H10269080A
Authority
JP
Japan
Prior art keywords
instruction
location
load instruction
order load
processor unit
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
JP10053198A
Other languages
English (en)
Other versions
JP2938426B2 (ja
Inventor
Umberto Moreno Haime
ハイメ・ウンベルト・モレーノ
Modogiru Mayan
マヤン・モウドギル
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 JPH10269080A publication Critical patent/JPH10269080A/ja
Application granted granted Critical
Publication of JP2938426B2 publication Critical patent/JP2938426B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)
  • Storage Device Security (AREA)

Abstract

(57)【要約】 【課題】 コンピュータ・システムのメモリ・アドレス
空間を複数の領域にマッピングし、順次先行(プログラ
ム順序で)ストア操作より前に行われるロード操作の間
違った実行を検出する装置を提供する。 【解決手段】 この装置は、順不同ロード操作を検出
し、順不同ロード操作によってアクセスされるメモリ領
域を追跡するために領域ベースのマッピング・テーブル
を使用し、順不同ロード操作によってアクセスされる領
域へのストア操作の実行を検出し、順序変更済み操作間
の干渉が検出されたときに回復シーケンスを実行するよ
うにプロセッサに指示する。本発明は、メモリ操作の静
的順序変更および動的順序変更に適用可能である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にプログラム
内の命令レベルの並列性を活用するためにプロセッサ内
のメモリ操作を順序変更することに関し、より具体的に
は、(プログラム順序で)先行するメモリ・ストア操作
より前に行われたメモリ・ロード操作を間違って実行し
たことを検出するための装置に関する。本発明は、プロ
グラムが生成されたときに順序変更された操作(静的順
序変更)ならびに実行時に順序変更された操作(動的順
序変更)に適用可能である。
【0002】
【従来の技術】最新の高性能プロセッサは、プログラム
内の命令レベルの並列性を活用するため、すなわち、一
度に複数の命令を実行するために、スーパスカラ、スー
パパイプライン、非常に長い命令ワード(VLIW)技
法に依存している。一般に、このようなプロセッサは、
複数の機能ユニットを含み、順次命令ストリームを実行
し、サイクル当たり複数の命令をメモリから取り出すこ
とができ、資源の依存関係および可用性を条件としてサ
イクル当たり複数の命令を実行のためにディスパッチす
ることができる。
【0003】所与の時点でディスパッチされるものをそ
こからプロセッサが選択する命令のプールは、順不同実
行を使用することによって拡大される。順不同実行と
は、その操作が必要とする資源が空いている場合に後か
ら現れる操作が先に実行され、その結果、プログラムの
全体的な実行時間が短縮されるように順次命令ストリー
ム内の操作を順序変更するための技法である。順不同実
行では、本来はアイドル状態の資源を使用することによ
って複数の機能ユニットの可用性を活用する。操作の実
行を順序変更するには、その操作によって得られる結果
を順序変更する必要があり、その結果、プログラムの機
能的な挙動は、命令が元の順次順序で実行された場合に
得られるものと同じになる。
【0004】メモリ関連操作の場合、メモリ・ロード操
作は、メモリからデータを読み取り、それをプロセッサ
・レジスタにロードし、ロードしたデータに依存する一
連の操作を頻繁に開始する。したがって、アイドル資源
の使用に加え、メモリ・ロード操作の早期(順不同)開
始によって、潜在的なキャッシュ・ミスを含む、メモリ
・アクセスの遅延が隠れてしまう可能性がある。
【0005】順不同実行と結果の順序変更を実施するた
めの基本的な手法には、動的順序変更と静的順序変更と
いう2通りがある。動的順序変更では、命令が実行時に
分析され、命令と結果がハードウェアで順序変更され
る。静的順序変更では、コンパイラ/プログラマが、プ
ログラムが生成されたときに命令とその命令によって得
られる結果を分析し順序変更するので、順序変更タスク
はソフトウェアで行われる。この2通りの手法はまとめ
て使用することもできる。
【0006】操作を順序変更できる能力を制限する要因
の1つは、曖昧なメモリ参照である。これは、順次命令
ストリーム内でメモリ・ストア操作の後にメモリ・ロー
ド操作が現れるケースであり、ロードとストアによって
アクセスされたメモリ位置が互いに異なるかどうかを早
期に判定することは不可能である。たとえば、以下のコ
ード断片について検討する。 *X=(a+b+2)<<4 r =((*Y)+c)^d ただし、*Xは、そのアドレスがX内に含まれるメモリ位
置を示す。<<は、左シフト操作を示す。^は、排他OR
(XOR)操作を示す。
【0007】a、b、c、dはプロセッサのレジスタr
1〜r4に格納された値であり、XとYはレジスタr8
およびr9内にあると想定すると、このコード断片は、
以下の命令シーケンスによって表すことができる(ただ
し、命令の名前の後の最初のレジスタはターゲット・レ
ジスタであり、残りのレジスタはオペランドである)。 add r10,r1,r2 ;r10=a+b add r11,r10,2 ;r11=a+b+2 shift_left r12,r11,4 ;r12=a+b+2<<4 store r12,(r8) ;*X=a+b+2<<4 load r20,(r9) ;r20=*Y add r21,r20,r3 ;r21=*Y+c xor r22,r21,r4 ;r22=(*Y+c)^d
【0008】XとYが互いに異なると判定できる場合、
上記2式はパラレル実行向けにスケジューリングするこ
とができ、同様のシーケンスが得られる(ただし、記号
‖はパラレル実行を示す)。 add r10,r1,r2 ‖ load r20,(r9) add r11,r10,2 shift_right r12,r11,4 ‖ add r21,r20,r3 store r12,(r8) ‖ xor r22,r21,r4
【0009】2つの実行ユニットを備えたマシンでは、
上記のシーケンスは完了するまでに4サイクルを要する
だろう(ロードが2サイクルを要し、他の操作が単一サ
イクルを要すると想定する)。
【0010】これに対して、XとYが必ず互いに異なる
と判定できない場合、すなわち、アドレスが曖昧である
場合、2つの式は元の順序でスケジューリングしなけれ
ばならず、8サイクルを要する(この場合も、ロードは
2サイクルを要すると想定する)。
【0011】上記の例は典型的なものではない。メモリ
参照の曖昧さは、本来はパラレルで実行可能な操作の順
次実行を強制することによって、かなり厳しくパフォー
マンスを制限する。しかし、ストア操作がロード操作に
干渉しない限り、このようなシリアル化は回避すること
ができる(すなわち、ストア操作より前にロード操作を
行うことができる)。ストア操作と順不同ロード操作に
よってアクセスされたメモリ位置がオーバラップする場
合、必ず操作同士が互いに干渉する。さらに、ストア操
作と順不同ロード操作が互いに干渉しない場合、順不同
でロードされたデータに依存する操作も順不同で実行す
ることができる。これに対して、操作同士が互いに干渉
する場合、順不同でロードされたデータとそれから得ら
れる結果が無効になり、ストア操作後のロード操作なら
びに関連の従属操作を再実行することが必要になる。
【0012】プロセッサによる曖昧参照を伴うメモリ操
作の順序変更の問題を解決するため、様々な試みが行わ
れてきた。このような方式では、ロード操作の順序変更
の範囲によって決まる実行ウィンドウ内で、順不同ロー
ドによってアクセスされたメモリ位置のアドレスを後続
ストア操作によってアクセスされたメモリ位置のアドレ
スと比較することによって干渉を検出する。アドレス同
士がオーバラップする場合、操作同士が互いに干渉する
と想定されるので、ロード操作(および、適用可能な場
合はすでに実行されたロードに依存する操作)を再実行
しなければならない。すなわち、このメカニズムでは、
メモリ・アドレスを追跡することによって順不同でロー
ドされたデータを含むメモリ位置に修正が加えられたか
どうかを監視する。この検出は、余分な命令(ソフトウ
ェアベースの方式)によるかまたは時にはソフトウェア
の支援を伴う専用ハードウェア資源(ハードウェアベー
スの方式)によって行われる。
【0013】たとえば、ソフトウェアベースの干渉検出
の場合、上記のコード断片は以下のように修正できるだ
ろう。 r =((*Y)+c)^d *X=(a+b+2)<<4if(X==Y) /*アドレスを比較する*/ r=((*Y)+c)^d endif すなわち、*Yによって暗示されるロード操作が*Xによっ
て暗示されるストア操作より前に行われるように、プロ
グラム・ステートメントを順序変更することができるだ
ろう。ロード操作とストア操作によって参照されるメモ
リ位置のアドレスを比較し、アドレス同士が一致する場
合にロード操作を含むステートメントを再実行するため
に、追加のステートメントが導入される。
【0014】静的順序変更の場合、コンパイラ/プログ
ラマによって生成される命令シーケンスは、曖昧なメモ
リ参照を処理するために提案された様々な方式間で異な
っている。通常、ストア命令より上に移動されたロード
命令は、ロード操作を実行し、ストア命令が使用するア
ドレスを監視することによってメカニズムをセットアッ
プするような任意の新しい命令または命令シーケンスに
よって置き換えられる。他の命令または順不同ロード命
令内の命令フィールドは、ロード命令が最初に配置され
た場所を示すために使用され、ストア操作に干渉するか
どうかの監視範囲の終わりを決定する。
【0015】動的順序変更の場合、ロード命令とストア
命令はプログラム順序でプロセッサに提示される。すな
わち、ストア命令に続いてロード命令が提示される。プ
ロセッサは、命令を順序変更し、ロード命令に順不同操
作のマークを付け、ストア操作から干渉を検出するため
のメカニズム(監視範囲の表示を含む)をセットアップ
し、干渉が検出されたときにプロセッサの正しい状態を
回復する。
【0016】本発明は、メモリ操作を間違って順序変更
した場合から回復するためのメカニズムによって、順不
同のロード操作とストア操作間の干渉をハードウェアベ
ースで検出する手法に従うものである。この分野の関連
技術の要約については以下に記載する。
【0017】順不同操作のパフォーマンスを改善するた
めの方法および装置については、本出願の譲受人に譲渡
され、1992年5月6日に出願された特許出願第07
/880102号の継続出願であり、1994年10月
7日に出願されたM. Kumar、M. Ebcioglu、E. Kronstad
tの「A method and apparatus for improving performa
nce of out-of-sequence load operations in a comput
er system」という名称の特許出願第08/32011
1号に記載されている。この方法および装置では、コン
パイラ技法と、4通りの新しい命令と、アドレス比較ユ
ニットとを使用する。コンパイラは、メモリ・ストア操
作の上にメモリ・ロード操作を静的に移動させ、それら
に順不同操作のマークを付ける。順不同でロードされた
オペランドのアドレスは結合メモリに保管される。要求
があると、アドレス比較ユニットは、結合メモリに保管
されたアドレスをストア操作によって生成されたアドレ
スと比較する。競合が検出された場合、問題を是正する
ために回復コードが実行される。このようなアドレスを
比較する必要がもはやなくなった場合、システムは結合
メモリに保管されたアドレスをクリアする。この手法
は、ハードウェア集中型であり、アドレス競合のチェッ
クをトリガするためならびにもはや不要になったオペラ
ンドのアドレスをクリアするために特殊な命令を必要と
する。
【0018】本出願の譲受人に譲渡され、Ebcioglu他の
名前で1995年5月10日に出願された米国特許出願
第08/435411号は、メモリ操作の順序変更とメ
モリ操作の推論的実行とを結合するものである。メモリ
操作の順序変更は、以下のものに依存する。 ・コンパイラによるコードの静的順序変更 ・メモリ参照の競合を検出し、順不同でロードされたデ
ータを操作するための特殊ハードウェア・サポート ・順不同でロードされたデータを操作し、競合の検出か
ら回復するためのコンパイラ生成コード
【0019】特殊ハードウェア・サポートは、順不同で
実行されたロード操作の結果の宛先になりうる各レジス
タ用のアドレス・レジスタと、このような各アドレス・
レジスタに関連する比較器と、順不同でデータをロード
し、このようなデータならびにプログラム内の適正順序
点(in-order points)でそれから得られる他の値を
「コミット」するための特殊命令からなる。各順不同ロ
ードにより、ロードされたデータのメモリ・アドレスと
サイズが対応するアドレス・レジスタに記録され、各ス
トア操作により、すべてのアドレス・レジスタの内容に
対する(アドレス、サイズ)タプルの比較がトリガされ
る。このような比較が真である場合、対応するアドレス
・レジスタには無効のマークが付けられる。特殊コミッ
ト命令はロード命令の適正順序点で実行され、関連アド
レス・レジスタが有効であるかどうかをチェックする。
有効である場合、順不同でロードされたデータとメモリ
内のデータは一貫したものになる。これに対して、アド
レス・レジスタが無効である場合、順不同でロードされ
たデータとメモリ内容は一貫したものにならないので、
ロード操作ならびにその他の操作を再実行しなければな
らない。その時点でトラップが呼び出され、ロード操作
ならびに従属操作を再実行するコンパイラによって生成
される回復コードに実行制御が転送される。
【0020】F. McKeen他の名前で1995年5月30
日に発行された「Apparatus and method for speculati
vely executing instructions in a computer system」
という名称の米国特許第5421022号には、曖昧メ
モリ操作に対して静的順序変更が行われた場合に使用可
能な装置が記載されており、これは、すべての実行済み
ストア操作のアドレスをすべての未解決順不同ロード命
令のアドレスと比較するために内容アドレス可能メモリ
(CAM)に依存する。オーバラップが検出された場
合、この装置は、例外を発生した場合と同じように順不
同ロードを処理し、その適正順序(または精密)状態で
その適正順序点においてロード操作の再実行を効果的に
行わせる。同様に、同じくF. McKeen他の名前で199
5年5月30日に発行された「Mechanism for enforcin
g the correct order of instruction execution」とい
う名称の米国特許第5420990号には、米国特許第
5421022号で提案されたものと密接に関連する
が、プロセッサによってメモリ操作の動的順序変更が行
われた場合に使用可能な装置が記載されており、この装
置も内容アドレス可能メモリに依存する。
【0021】ロード命令を順序変更するための方法およ
び装置については、F. Amerson、R.Gupta、V. Kathal、
M. Schlanskerの「Memory processor that permits agg
ressive execution of load instructions」という名称
の特許出願(1993年4月2日に出願された英国特許
出願GB2265481A、第9302148.3号)
に記載されている。この特許出願には、コンパイラが待
ち時間の長いロード命令を命令シーケンス内の前の方に
移動させて、ロードの待ち時間によって発生する効率の
損失を低減するようなコンピュータ・システム用のメモ
リ・プロセッサが記載されている。このメモリ・プロセ
ッサは、ロードより前に実行されたはずの後続ストア命
令がロード命令によって指定されたものと同じアドレス
を参照するかどうかを判定するのに十分な期間の間、ロ
ード命令を特殊レジスタ・ファイルに保管する。参照す
る場合、メモリ・プロセッサは、それが適正順序で実行
されるように、命令ストリーム内に元のロードを再挿入
する。したがって、このシステムは、コンパイラの制御
下でストアより前にロードを移動させることができ、競
合から回復するためのコードを挿入するためにハードウ
ェアに依存する。しかし、このシステムでは、ロードに
依存する他の命令を順序変更することができない(ハー
ドウェア資源はロード命令のみ再挿入することができ
る)。すなわち、この方法および装置は、ロード命令の
待ち時間を隠すことに限定され、コンパイル時にその最
大値が分かっていなければならない。
【0022】K. DiefendorffおよびM. Allenの論文「Or
ganization of the Motorola 88110superscalar RISC m
icroprocessor」(IEEE Micro、1992年4月、40
〜63ページ)には、モトローラの88110プロセッ
サ内の動的スケジューラが記載されており、これは、格
納すべきオペランドがまだ他の操作によって生成されて
いない場合にストア操作が停止するようにストア命令を
ストア待ち行列にディスパッチするものである。後続ロ
ード命令は、ストア操作をバイパスし、直ちにメモリに
アクセスし、メモリ・アクセスの動的順序変更を達成す
ることができる。アドレス比較器は、アドレス・ハザー
ドを検出し、ロード操作が同じアドレスへのストア操作
より先行しないように防止する。待ち行列は3つの未解
決ストア操作を保持する。この構造では、実際に順次実
行ストリーム内の前の方にロードを移動させるわけでな
く、むしろ、停止されたストア操作の結果としてロード
操作が遅延しないようにするだけである。
【0023】
【発明が解決しようとする課題】順序変更済み曖昧メモ
リ操作間の干渉を検出するためのソフトウェアベースの
技法では、実行しなければならない追加命令の形で多大
なオーバヘッドが発生する。具体的には、ロード命令
は、その上にそれが移動されるすべての曖昧ストア命令
と照らし合わせてチェックする必要がある。たとえば、
以下のシーケンスのようにいくつかのストア命令の上に
ロード命令を移動する場合について検討する。 store r7,(r21) store r8,(r22) store r9,(r23) load r15,(r25)
【0024】この場合、干渉テストでは、レジスタr2
5内のアドレスをレジスタr21、r22、r23内の
アドレスと比較する必要がある。したがって、干渉テス
トでは少なくとも5つの命令が必要であり、(比較を実
行し、いくつかの比較を組み合わせるためのプリミティ
ブに応じて)もっと多くの命令が必要な場合もある。
【0025】さらに、ロード命令とストア命令がバイト
位置合せされている(すなわち、ロード命令とストア命
令がメモリ内のバイト境界にあるデータにアクセスし、
アクセスされたデータが複数バイトである)場合、また
はロード命令とストア命令が異なるサイズ(異なるメモ
リ・バイト数)のエンティティにアクセスする場合、テ
ストはより複雑になる。単にアドレスが等しいかどうか
をチェックする代わりに、干渉テストではアドレスがオ
ーバラップするかどうかをチェックしなければならな
い。したがって、たとえば、rYが順不同ロード命令で
使用するアドレスを含み、rXが後続ストア命令で使用
するアドレスを含むと想定すると、テストは、rY−r
Xがストア命令によって格納されたバイト数より小さ
く、rX−rYがロード命令によってアクセスされたバ
イト数より大きいかまたは等しいことをチェックするこ
とから構成される。
【0026】順序変更済み曖昧メモリ参照間の干渉を検
出するためのハードウェア支援オプションまたはハード
ウェア専用オプションは、順不同ロード命令が使用する
メモリ・アドレスを特殊ハードウェア資源(比較器レジ
スタ)に保管し、オーバラップ用のレジスタの内容をス
トア命令のアドレスと照らし合わせて継続的にチェック
することにより、余分な命令の実行から発生するオーバ
ヘッドを回避する。
【0027】ハードウェア監視に必要な資源は複雑かつ
高価である。すべてのサイクルでこのような資源は、そ
のサイクルで発行された各ストア操作のアドレスを(1
つまたは複数の操作を同時に発行できると想定する)す
べての未解決順不同ロード操作(すなわち、その適正順
序点に達していないもの)と比較しなければならない。
この機能性は、上記の先行技術の例が示すように、内容
アドレス可能メモリ、特殊レジスタ・ファイル、複数の
比較器を使用することによって達成することができる。
しかし、このようなハードウェア資源は、いかなる時点
でも固定数の順不同ロード・アドレスを保管(および比
較)することしかできない。通常、これは少数なので、
いかなる時点でも限定された(固定)数のロード操作し
か順不同で実行することができない。このような固定限
界は、ロード・ユニットがそれを実行するために使用可
能になると、ただちに順不同ロード命令を発行できなく
なり、むしろ、アドレス・チェック・ハードウェアは生
成されたアドレスを保管するために使用可能な資源も用
意しなければならない。この制限により、動的順序変更
の場合にディスパッチ・メカニズムの複雑さが増すか、
または静的順序変更の場合に順不同で移送できる曖昧ロ
ード命令の数が制限される(すなわち、コンパイラは、
任意の時点で、使用可能なモニタの数程度の曖昧ロード
命令がストア命令の上に移動されたことを保証しなけれ
ばならない)。
【0028】
【課題を解決するための手段】先行技術の上記の問題お
よび関連問題は、本発明の原理ならびにプロセッサ内の
順序変更済みメモリ操作の間違った実行を検出しそれか
ら回復するための装置によって解決される。本発明は、
順不同ロード命令によって参照されるアドレスを追跡す
るために高価なハードウェア資源を必要としないので、
他のメカニズムに代わる、より単純な代替手段である。
本発明は、プログラムが生成されたときに順序変更され
る操作(静的順序変更)ならびに実行時に順序変更され
る操作(動的順序変更)に適用可能である。
【0029】コンピュータ処理システムは、プロセッサ
・ユニットによる実行のためにメモリ内に命令シーケン
スを格納する。順不同ロード命令は、ロード命令を命令
シーケンス内のその元の位置から前記命令シーケンス内
のより前の位置に移動することによって、静的または動
的に作成することができる。
【0030】本発明は、メモリ・アドレス空間を1組の
領域にマッピングし、1つの領域の細分性で順序変更済
みメモリ操作間に干渉があるかどうかをテストする方法
および装置である。順序変更済みメモリ操作によって参
照されるアドレス同士は直接比較されない。むしろ、こ
のようなアドレスは複数の領域にマッピングされ、装置
はこのような領域への干渉参照が存在したかどうかを検
出する。この手法は、偽干渉を検出するというまれなケ
ースの潜在的な損失により、干渉の検出によって課せら
れるハードウェア・コストを低減する。
【0031】領域マッピング・テーブルは、メモリ・ア
ドレス空間を1組の領域にマッピングする。領域当たり
のメモリ位置の数は、マッピング・テーブルによってサ
ポートされる領域の数(テーブル内の項目の数)および
干渉の最小ユニットのサイズによって決まる。たとえ
ば、領域マッピング・テーブルは512個の項目を含む
ことができ、干渉の最小ユニットは1メモリ・ワード
(4バイト)にすることができる。このような場合、2
32のメモリ・アドレス空間が512個の領域にマッピン
グされ、領域当たり221個のメモリ位置(ワード)にな
る。その参照が干渉の最小ユニットの位置合せにまたが
る場合、メモリ参照は単一領域上または複数の領域上に
マッピングされる。操作の順序変更は、順不同ロード操
作が干渉の最小ユニットの位置合せにまたがらないよう
に制限することができる。
【0032】順不同ロード操作が実行されると、その順
不同ロード操作のメモリ・アドレスに対応する領域マッ
ピング・テーブル内の項目にマークが付けられ、それに
より、順不同ロード操作の存在を示す。
【0033】ストア操作が実行されたときに、そのスト
ア操作のメモリ・アドレスに対応する領域マッピング・
テーブル内の項目に順不同ロード操作によってマークが
付けられた場合、その項目にはもう一度マークが付けら
れ、メモリ領域内の干渉ストア操作の存在を示す。
【0034】順不同ロード操作の適正順序位置に達する
と、その順不同ロード操作のメモリ・アドレスに対応す
る領域マッピング・テーブル内の項目が検査される。そ
の項目にマークが付けられ、干渉ストア操作の存在を示
している場合、順不同ロード操作は間違って実行された
ものと見なされ、回復シーケンスが呼び出される。そう
ではない場合、その適正順序位置に達した順不同ロード
との干渉に関する監視の終わりを示すように項目が更新
される。
【0035】代替方法は以下の通りである。順不同ロー
ド操作が実行されると、その順不同ロード操作のメモリ
・アドレスに対応する領域マッピング・テーブル内の項
目にマークが付けられ、それにより、順不同ロード操作
の存在を示す。その領域からの他の順不同ロードであっ
て、その適正順序位置に達していないものがまったくな
い場合、その項目にはストア操作からの干渉がないとい
うマークが付けられる。ストア操作が実行されると、そ
のストア操作のメモリ・アドレスに対応する領域マッピ
ング・テーブル内の項目にマークが付けられ、その領域
からの順不同ロード命令が実行されたかどうかをまず検
査することはない。順不同ロード操作の適正順序位置に
達すると、その順不同ロード操作のメモリ・アドレスに
対応する領域マッピング・テーブル内の項目が検査され
る。その項目にマークが付けられ、その領域へのストア
操作の存在を示している場合、順不同ロード操作は間違
って実行されたものと見なされ、回復シーケンスが呼び
出される。そうではない場合、その適正順序位置に達し
た順不同ロードとの干渉に関する監視の終わりを示すよ
うに項目が更新される。この代替方法は、干渉が実際に
発生してない場合に干渉を検出する可能性があるが、よ
り単純な実施例が得られる可能性もある。
【0036】本発明は、静的順序変更済み動作の場合、
すなわち、プログラムが生成されたときにコンパイラ/
プログラマによって順序変更が行われる場合に使用する
ことができる。この場合、特殊命令を使用することによ
って、順不同ロード操作が指定される。この命令の実行
は、領域マッピング・テーブル内の対応する項目にマー
クを付けることを含む。コンパイラ/プログラマは、他
の特殊命令を使用することによって「コミット」操作も
生成するが、その特殊命令はロード命令の適正順序(元
の)位置に置かれる。コミット命令の実行は、領域マッ
ピング・テーブル内の対応する項目を検査することと、
回復シーケンスを呼び出すかまたはテーブル内の項目を
更新することを含む。この2つの命令は、ストア操作か
らの干渉に関する監視の範囲を決定する。領域マッピン
グ・テーブル内の項目にはマークが付けられ、ストア操
作が実行されたときに干渉ストア操作の存在を示すが、
順不同ロード操作によって関連項目にすでにマークが付
けられているかどうかをチェックする場合もあればチェ
ックしない場合もある。干渉が検出されるとプログラム
例外が生成され、コンパイラ/プログラマによって静的
に生成される回復シーケンスの実行に至る。
【0037】本発明は、動的順序変更済み命令の場合、
すなわち、命令の順序変更が実行時に行われる場合にも
使用することができる。このような場合、順不同ロード
操作の生成はプロセッサによって行われる。順不同で実
行するためにロード操作がディスパッチされると、領域
マッピング・テーブル内の項目にマークが付けられ、そ
れにより、進行中の順不同ロード操作の存在を示す。順
不同ロード操作が再試行されると同じ項目が検査され、
その操作は命令の適正順序位置で行われる。この2つの
事象は、ストア操作からの干渉に関する監視の範囲を決
定する。領域マッピング・テーブル内の項目にはマーク
が付けられ、実行のためにストア操作がディスパッチさ
れたときに干渉ストア操作の存在を示すが、順不同ロー
ド命令によって関連項目にすでにマークが付けられてい
るかどうかをチェックする場合もあればチェックしない
場合もある。干渉が検出されるとプログラム例外が生成
される。このような場合、ロード命令の実行が回復され
る前に存在した適正順序状態にプロセッサを戻す回復シ
ーケンスが実行される。回復シーケンスでは、順不同で
実行される他のすべての命令が取り消され、その元の位
置にあるロード命令から実行が進行する。
【0038】
【発明の実施の形態】次に添付図面、より具体的には図
1を参照すると、同図には、本発明により静的順序変更
済みメモリ操作をサポートするためのハードウェア資源
が設けられたプロセッサが示されている。このシステム
は、メモリ・サブシステム101と、データ・キャッシ
ュ102と、命令キャッシュ103と、プロセッサ・ユ
ニット100からなる。プロセッサ・ユニット100
は、命令待ち行列104と、領域マッピング・テーブル
105と、メモリ関連操作を実行する1つまたは複数の
メモリ・ユニット106と、整数演算、論理演算、浮動
小数点演算を実行する1つまたは複数の機能ユニット1
07と、分岐ユニット108と、レジスタ・ファイル1
09とを含む。命令は、分岐ユニット108の制御下で
命令キャッシュ103から取り出され、命令待ち行列1
04に入れられる。命令は、命令待ち行列104からメ
モリ・ユニット106、機能ユニット107、分岐ユニ
ット108にディスパッチされて実行される。これらの
ユニットはレジスタ・ファイル109とやりとりし、命
令が使用するオペランドにアクセスし、命令の実行によ
って得られる結果を格納する。レジスタ・ファイル10
9は、通常、汎用レジスタ(GPR)と、浮動小数点レ
ジスタ(FPR)と、条件レジスタ(CR)と、特殊目
的レジスタ(SPR)とを含む。メモリ・ユニット10
6はデータ・キャッシュ102ともやりとりし、他のユ
ニットで実行される命令が使用するデータをロードし、
その命令によって得られる結果を格納する。一部の特殊
なメモリ関連命令は領域マッピング・テーブル105に
アクセスする。
【0039】本発明によれば、プログラマ/コンパイラ
は、たとえばA. Nicolauの論文「Run-time disambiguat
ion: coping with statically unpredictable dependen
cies」(IEEE Transactions on Computers、vol.38、1
989年5月)で論じられているように、先行技術で周
知の原理に従って、メモリ操作を順序変更し、プログラ
ムの実行時間を短縮する。ロード操作が先行するストア
操作より前に移動され、ロード命令とストア命令によっ
てアクセスされるメモリ位置のアドレスが非連続である
かどうかをコンパイラが判定できない場合、ロード命令
には、好ましいことに個別の操作コードを使用すること
により、順不同ロード操作としてのマークが付けられ
る。さらに、命令シーケンス内のロード命令の元の位置
には、好ましいことに特殊な「コミット」命令を使用す
ることにより、マークが付けられる。
【0040】本発明による図1に示すコンピュータ・シ
ステムにおける命令の実行について、図2に示す流れ図
で示す。ステップ201では、分岐ユニット108の制
御下で、1ブロック分の命令を命令キャッシュ103か
ら取り出し、命令待ち行列104に入れる。
【0041】ステップ203では、並行して実行可能な
命令のグループを命令待ち行列104から抽出し、機能
ユニット、メモリ・ユニット、分岐ユニットにディスパ
ッチして実行する。このようなグループは、厳密なメモ
リ順序、すなわち、それらがメモリ内に現れる順序の命
令シーケンスに対応する。ステップ205では、実行の
ためにメモリ・ユニット106にディスパッチされる命
令のうちのいずれかが順不同メモリ・ロード操作である
かどうかを判定する。これは、命令の操作コードを調べ
ることによって判定される。そのような操作である場
合、ステップ207では、順不同ロード命令によってア
クセスされるメモリ位置のアドレスに関連する領域マッ
ピング・テーブル内の項目にマークを付け、それによ
り、順不同ロード命令の存在を示す。領域マッピング・
テーブルの項目の例については、図5および図6に関連
して後述する。
【0042】同様に、ステップ209では、命令の操作
コードを調べることにより、実行のためにメモリ・ユニ
ット106にディスパッチされる命令のうちのいずれか
がメモリ・ストア操作であるかどうかを判定する。その
ような操作である場合、ステップ211では、ストア命
令によってアクセスされるメモリ位置のアドレスに関連
する領域マッピング・テーブル内の項目を検査して、対
応するメモリ領域からの順不同ロード操作がディスパッ
チまたは実行されたかどうかを判定し、それにより、順
不同ロード命令の存在を示す。そのような操作がディス
パッチまたは実行された場合、ステップ213では、そ
の領域が干渉ストア操作を有するように領域マッピング
・テーブル内の項目にマークを付ける。より具体的に
は、干渉ストア操作とは、順不同ロード操作と同じメモ
リ領域にアクセスする順次先行(プログラム順序で)ス
トア操作である。干渉ストア操作のマーク付けの詳細に
ついては、図11に関連して後述する。
【0043】ステップ215では、命令の操作コードを
調べることにより、実行のためにメモリ・ユニット10
6にディスパッチされる命令のいずれかがコミット順不
同ロード操作であるかどうかを判定する。そのような操
作である場合、ステップ217では、コミット命令によ
って参照されるメモリ位置のアドレスに関連する領域マ
ッピング・テーブル内の項目を検査して、対応するメモ
リ領域内に干渉ストア操作が存在するかどうかを判定
し、それにより、操作間の干渉を示す。そのような操作
が存在する場合、ステップ219では、ロード命令の実
行前に存在した適正順序状態にプロセッサを戻す回復シ
ーケンスが呼び出される。このような回復シーケンス
は、回復シーケンスを含むメモリ位置から命令を取り出
す分岐ユニット108によって呼び出すことができる。
そうではない場合、順不同ロード命令の完了を反映する
ようにテーブル内の項目を更新する。干渉ストア操作の
検出の詳細については、図11に関連して後述する。
【0044】次に図3を参照すると、同図には、メモリ
操作の順序変更を含む、命令の動的順序変更をサポート
するためのハードウェア資源が設けられているスーパス
カラ・プロセッサが示されている。この構成例は、「Re
gister renaming and dynamic speculation: an altern
ative approach」(Proceedings of the 26th AnnualIn
ternational Symposium on Microarchitecture、202
〜213ページ、1993年12月)にM. Moudgill、
K. Pingali、S. Vassiliadisによって記載されたものに
基づくものである。このシステムは、メモリ・サブシス
テム301と、データ・キャッシュ302と、命令キャ
ッシュ304と、プロセッサ・ユニット300からな
る。プロセッサ・ユニット300は以下のものを含む。 ・命令キャッシュ304またはメモリ・サブシステム3
01から取り出した命令のうち、まだデコードされてい
ない命令を含む命令待ち行列303 ・ロード操作またはストア操作を実行する複数のメモリ
・ユニット305 ・整数演算、論理演算、または浮動小数点演算を実行す
る複数の機能ユニット307 ・分岐操作を実行する分岐ユニット309 ・使用したオペランドと命令によって得られる結果を含
むレジスタ・ファイル311 ・命令に指定されたレジスタ名からレジスタ・ファイル
内のレジスタの名前へのマッピングを含むレジスタ・マ
ッピング・テーブル320 ・レジスタ・ファイル内の未使用(使用可能)レジスタ
の名前を含む空きレジスタ待ち行列322 ・そのリネームされたレジスタを含み、その実行のため
に必要な資源を待っているデコード済み命令を含むディ
スパッチ・テーブル324 ・リタイヤされた(完了まで実行された)最後の命令の
影響を反映し、アーキテクチャ・レジスタ名からレジス
タ・ファイル内のレジスタの名前へのマッピングを含む
適正順序マッピング・テーブル328 ・実行のためにすでにディスパッチされた命令と、すで
に実行された命令のうち、その結果によってプロセッサ
の適正順序状態がまだ修正されていない命令とを含むリ
タイヤ待ち行列326 ・メモリ操作の順不同実行をサポートするための領域マ
ッピング・テーブル330
【0045】図4は、順不同メモリ操作に関連するアク
ションを含む、図3に示すコンピュータ・システム内の
命令の処理を説明する流れ図である。このプロセスは5
つのステップに分解される。ステップ401では、分岐
ユニット309の制御下で、1ブロック分の命令を命令
キャッシュ304またはメモリ・サブシステム301か
ら取り出し、命令待ち行列303に入れる。
【0046】ステップ403では、命令のグループを命
令待ち行列303から抽出してデコードする。オペラン
ドを指定するためにこれらの命令が使用するレジスタ名
をレジスタ・マッピング・テーブル320の内容に応じ
てリネームするが、そのテーブルはアーキテクチャ・レ
ジスタ名から物理レジスタへの現行マッピングを指定す
る。同様に、結果の宛先を指定するためにこれらの命令
が使用するレジスタ名は空きレジスタ待ち行列322か
ら抽出された割当て済み物理レジスタになるが、その待
ち行列はプロセッサが現在使用していない物理レジスタ
の名前を含む。レジスタ・リネームの原理は、たとえば
J. HennessyおよびD. Patterson著「Computer architec
ture: a quantitative approach, 2nd. ed」(Morgan K
aufmannPublishers, Inc.、1996年)に記載されて
いるように、周知のものである。レジスタ・マッピング
・テーブル320は、命令によって指定された宛先レジ
スタ名に物理レジスタを割り当てることによって更新さ
れる。デコード済み命令は、そのレジスタがすべてリネ
ームされ、ディスパッチ・テーブル324に入れられ、
さらに、そのメモリ・アドレスとその物理レジスタ名と
アーキテクチャ・レジスタ名とを含む命令は、プログラ
ム順序でリタイヤ待ち行列326に入れられる。
【0047】ステップ405では、ディスパッチ・テー
ブルからの1組の命令を潜在的に順不同で実行するため
に選択し、対応するメモリ・ユニット305、機能ユニ
ット307、または分岐ユニット307にディスパッチ
する。選択用の候補命令は、必須資源がすべて使用可能
になっていなければならない(物理レジスタには予定オ
ペランドが割り当てられ、対応する機能ユニットが空い
ている)。命令が使用するオペランドはレジスタ・ファ
イル311から読み取られるが、そのファイルは通常、
汎用レジスタ(GPR)と、浮動小数点レジスタ(FP
R)と、条件レジスタ(CR)とを含む。実行のために
選択した命令のいずれかが順不同ロード操作である場
合、ディスパッチ中の命令間にこのような操作が存在す
ることを反映するためにその順不同ロード命令に対応す
る領域マッピング・テーブル330内の項目にマークが
付けられる。選択した命令のいずれかがストア操作であ
り、ストア操作に対応する領域マッピング・テーブル3
30内の項目にマークが付けられて、進行中のその領域
からの順不同ロード操作が存在することを示す場合、そ
の領域が干渉ストア操作(順不同ロード操作と同じメモ
リ領域にアクセスする順次先行(プログラム順序で)ス
トア操作)を有することを示すようにその項目にマーク
が付けられる。領域マッピング・テーブルの項目の例に
ついては、図5および図6に関連して後述する。干渉ス
トア操作のマーク付けの詳細については、図7に関連し
て後述する。
【0048】ステップ407では、実行を完了した命令
からの結果をレジスタ・ファイル311に入れる。リタ
イヤ待ち行列326と、実行を完了した命令によって設
定された物理レジスタを待っているディスパッチ・テー
ブル324内の命令に対して通知が行われる。実行を完
了した命令のいずれかが例外を発生した場合にもリタイ
ヤ待ち行列326に対して通知が行われる。
【0049】最後に、ステップ409では、完了した命
令をプログラム順序で(待ち行列の先頭から)リタイヤ
待ち行列326から除去する。リタイヤ中の命令によっ
て例外がまったく発生していない場合、命令が使用する
アーキテクチャ・レジスタ名がリタイヤ中の命令からの
結果を含むレジスタ・ファイル311内の物理レジスタ
を指し示すように、順不同マッピング・テーブル328
が更新され、適正順序マッピング・テーブル328から
の前のレジスタ名が空きレジスタ待ち行列322に返さ
れる。より具体的には、リタイヤ中の命令がそのターゲ
ットとしてアーキテクチャ・レジスタRxを指定し、操
作の結果が物理レジスタPyに入れられている場合、適
正順序マッピング・テーブル内のRx用の項目の内容が
Pyに設定される。これに対して、リタイヤ中の命令の
うちの1つまたは複数が例外を発生した場合、プログラ
ム制御はこのような命令のうちの最初の命令のメモリ・
アドレスに設定される(アドレスはリタイヤ待ち行列3
26内の対応する命令とともに保管されている)。リタ
イヤ待ち行列326はクリア(フラッシュ)され、した
がって、残りの未リタイヤ命令はすべて取り消される。
レジスタ・マッピング・テーブル320は適正順序マッ
ピング・テーブル328の内容に設定され、適正順序マ
ッピング・テーブル328で指定されていない物理レジ
スタが空きレジスタ待ち行列322に追加される。
【0050】また、ステップ409では、リタイヤ中の
命令のいずれかが順不同ロード操作である場合、順不同
ロード命令に対応する領域内に干渉ストア操作が存在し
たかどうかを検証するために領域マッピング・テーブル
330を検査する。そのような操作が存在した場合、ロ
ード命令の実行前に存在したその適正順序状態にプロセ
ッサを戻す回復シーケンスが呼び出される。このような
回復シーケンスは、上記のように例外を発生することに
よって呼び出すことができる。そうではない場合、順不
同ロード操作の完了を示すようにテーブル内の項目が更
新される。干渉ストア操作の検出の詳細については、図
11に関連して後述する。
【0051】図5は、メモリ・アドレス空間の領域への
マッピングを示す図である。このマッピングは、所与の
干渉ユニットの細分性で行われる。たとえば、メモリ・
ダブルワードという細分性について検討する。この場
合、メモリ・ダブルワードは昇順で領域に割り当てられ
る。すなわち、ダブルワード0は領域0に、ダブルワー
ド1は領域1に、以降順に割り当てられ、最後にダブル
ワードk−1が領域k−1に割り当てられる。この割当
ては領域マッピング・テーブルの先頭に折り返すので、
ダブルワードkは領域0に、ダブルワードk+1は領域
1に、以降順に割り当てられる。すなわち、メモリ位置
のダブルワード・アドレスからの最下位log2kビッ
トによってその領域が決定され、1つのメモリ・ダブル
ワード内のすべてのバイトが同じ領域にマッピングされ
る。あるいは、他の細分性または他のマッピング機能も
使用することができる。上記の例では、2つまでのダブ
ルワードを参照するメモリ操作が可能である。その結
果、メモリ参照は単一領域または2つの領域にマッピン
グされる。本発明の代替実施例では、順不同ロード操作
が単一領域にマッピングされるように、操作の順序変更
を制限することができる。
【0052】図6は、本発明のマッピング・テーブルの
内容の例である。マッピング・テーブル内の各項目は、
状況フィールド510と、カウンタ・フィールド520
からなることが好ましい。
【0053】カウンタ・フィールド520は、対応する
領域内の位置を参照する順不同ロード操作のうちのいく
つの操作が実行のためにすでにディスパッチされ、いく
つの操作がまだ命令シーケンス内の元の位置に達してい
ない(まだコミットされていない)かを示す。
【0054】状況フィールドは、対応する領域内のメモ
リ位置を参照した順序変更済みメモリ操作間で干渉が検
出されたかどうかを示す。状況フィールド310につい
て可能な値は「クリーン」と「ダーティ」である。「ク
リーン」に設定された状況フィールドは、その領域内の
順序変更済みメモリ操作間で干渉がまったく検出されて
いないこと、すなわち、いまだに進行中の順不同ロード
操作のディスパッチ以降に対応する領域へのストア操作
が発生していないことを示す。これに対して、「ダーテ
ィ」に設定された状況フィールドは、その領域への干渉
ストア操作が発生したことを示す。
【0055】図7は、実行のために命令をディスパッチ
するとき、すなわち、選択した命令を対応する機能ユニ
ットに送るときにプロセッサ・ユニット300が実行す
るアクションを詳細に説明する流れ図である。この図
は、領域マッピング・テーブル330の修正と干渉スト
ア操作の検出に関するアクションを含む。ステップ60
1では、実行のためにディスパッチすべき命令をディス
パッチ・テーブル324から選択する。ステップ603
では、選択した命令のいずれかがロード操作であるかど
うかを判定する。そのような操作ではない場合、ステッ
プ611では、選択した命令のいずれかがストア操作で
あるかどうかを判定する。そのような操作ではない場
合、プロセスはステップ609に進み、そこで実行のた
めに命令をディスパッチする。すなわち、命令は、対応
する機能ユニット305、307、または309に送ら
れ、ディスパッチ・テーブル324から除去され、リタ
イヤ待ち行列326に追加される。
【0056】ステップ611で選択した命令間に1つま
たは複数のストア操作が存在すると判定した場合、ステ
ップ613では、選択したストア操作に対応する領域マ
ッピング・テーブル330の項目(複数も可)のカウン
タ・フィールド520を検査する。本発明の好ましい実
施例では、各ストア操作が1つまたは2つのメモリ領域
にマッピングされ、図11に関連して後述するように、
ストア操作がアクセスしたメモリ位置のダブルワード・
アドレスからの最下位log2kビットとオペランドの
サイズによって対応する領域が決定される。メモリ参照
の開始アドレスとアクセスしたオペランドのサイズがメ
モリ・ダブルワード境界(マッピングのユニット)にま
たがる場合、このマッピングから2つの隣接領域が選択
される。各ストア操作ごとに、その対応するカウンタ・
フィールド(複数も可)520の値が0であり、その領
域(複数も可)に関連して進行中の順不同ロード操作が
まったくないことを示している場合、いずれのアクショ
ンも行わない。これに対して、対応するカウンタ・フィ
ールド(複数も可)520の値が0ではない場合、ステ
ップ615で状況フィールド510を「ダーティ」に設
定する。
【0057】ステップ603で選択した命令間に1つま
たは複数のロード操作が存在すると判定した場合、ステ
ップ605では、選択したいずれかのロード操作が順不
同ロード操作である(すなわち、まだ実行を完了してお
らず、したがって、リタイヤ待ち行列326内に常駐す
る順次先行ストア操作が存在する)かどうかを判定す
る。この機能は2つのストア操作のカウンタによってサ
ポートされ、そのカウント能力はリタイヤ待ち行列内の
項目数より大きい。第1のカウンタは、ストア操作が実
行のためにディスパッチされると増分される。第2のカ
ウンタは、ストア操作が実行を完了すると増分される。
ロード操作が実行のためにディスパッチされた時点で2
つのカウンタの値が一致しない場合、そのロード操作は
順不同で(先行ストア操作の完了より前に)ディスパッ
チされている。2つのカウンタの値が一致する場合、そ
のロード操作は適正順序でディスパッチされており、プ
ロセスはステップ611に進む。あるいは、ストア操作
に対するロード操作の順序付けは、領域ごとのストア・
カウンタとともにマッピング・テーブルを増大し、ロー
ド操作に対応する領域のストア・カウンタ同士を比較す
ることにより、領域ベースで決定することができる。
【0058】ステップ605でロード操作が順不同でデ
ィスパッチされていると判定した場合、ステップ607
では、ロード操作を含むリタイヤ待ち行列内の項目に順
不同というマークを付け、ワード・アドレスからの最下
位log2kビットとアクセスしたオペランドのサイズ
をリタイヤ待ち行列内の項目に入れる。さらに、ステッ
プ607では、マッピング・テーブル330内の項目の
カウンタ・フィールド520が0に設定されているかど
うかを検証する。値0は、進行中の順不同ロード操作が
他にはまったく存在しないことを示す。そのように設定
されている場合、ステップ607では、対応する項目の
状況フィールド510を「クリーン」に設定し、カウン
タ・フィールド520を増分する(1に設定する)。次
にプロセスはステップ609に進む。しかし、カウンタ
・フィールド520の値が0ではない場合、状況フィー
ルド510を修正せず、カウンタ・フィールド520を
増分し、プロセスはステップ609に進む。
【0059】図8は、マッピング・テーブル330に関
するアクションを含む、命令をリタイヤするときにプロ
セッサ・ユニット300が実行するアクションを説明す
る流れ図である。ステップ701では、リタイヤすべき
命令をリタイヤ待ち行列326から選択する。ステップ
703では、選択した命令のいずれかにステップ607
で順不同ロード操作というマークが付けられているかど
うかを判定する。そのようなマークが付けられている場
合、ステップ705では、マッピング・テーブル330
内の対応する項目の状況フィールド510が「クリー
ン」であるかどうかを判定する。前のケースのように、
マッピング・テーブルにアクセスすることによって対応
する項目を決定するが、ここではステップ607で順不
同ロード操作によってリタイヤ待ち行列に入れられた
(アドレス、サイズ)情報を使用する。その項目がクリ
ーンである場合、ステップ717では、対応するカウン
タ・フィールド520を減分し、プロセスはステップ7
11に進み、そこで他の命令とともにその命令を通常通
りリタイヤ待ち行列326からリタイヤする。
【0060】ステップ705で領域マッピング・テーブ
ル330内の対応する項目の状況フィールド510が
「ダーティ」であると判定した場合、ステップ707で
順不同例外を発生し、ステップ709でその例外を処理
する。したがって、すべての未リタイヤ命令の影響は、
リタイヤ待ち行列326からすべての項目を除去するこ
とによって取り消され、リタイヤ待ち行列に含まれるリ
タイヤ中のロード命令のメモリ・アドレスにプログラム
・カウンタ・レジスタを設定することにより、プログラ
ム内のロード命令の適正順序位置から実行が再開する。
【0061】図9、図10および図11は、その仮想メ
モリ・アドレス空間が232バイトであるコンピュータ・
システムの場合のマッピング・テーブルの実施例を示し
ている。アドレス空間は512個の領域に区分されてい
る。メモリ位置は、ダブルワードの細分性で昇順で領域
に割り当てられる。すなわち、ダブルワード0は領域0
に、ダブルワード1は領域1に、以降順に割り当てら
れ、最後にダブルワード511が領域511に割り当て
られる。この割当てはマッピング・テーブルの先頭に折
り返すので、ダブルワード512は領域0に、ダブルワ
ード513は領域1に、以降順に割り当てられる。
【0062】図9は、ロード操作専用の3つのメモリ・
ユニットと、ストア操作専用の2つのメモリ・ユニット
と、2つの命令を同時にリタイヤ(コミット)できるリ
タイヤ(コミット)ユニットとを有するプロセッサ・シ
ステムの場合の領域マッピング・テーブルへの入力信号
801とそこからの出力信号840を示している。マッ
ピング・テーブルは7つの入力を受け取り、そのそれぞ
れは14ビットからなる。load0〜load2という入力は、
ロード操作専用の3つのメモリ・ユニットから受け取
る。store0およびstore1という入力は、ストア操作専用
のメモリ・ユニットから受け取る。vrfy0およびvrfy1と
いう入力は、リタイヤ(コミット)ユニットから受け取
る。
【0063】領域マッピング・テーブルへの各入力のフ
ォーマットは図10に示す。この入力を構成する14ビ
ットは、メモリ参照の最下位12ビットと、アクセス中
のオペランドのサイズ、すなわち、バイト、ワード、ダ
ブルワード、またはクワッドワードを示す2ビットとに
対応する。
【0064】図11は、マッピング・テーブルの主要構
成要素を示している。好ましいことに、このテーブルは
2次元(16×32)のセル・アレイとして構成され、
各セルはテーブル内の1つの項目に対応する。項目は列
単位で配置される。すなわち、メモリ内の隣接領域は同
じ列のセルに割り振られ、1つの列の最後のセルに関連
する領域は次の列の一番上のセルに関連する領域に隣接
する。したがって、最後の列の最後のセルに関連する領
域は最初の列の最初のセルに関連する領域に隣接する。
【0065】テーブル内のセルは、そのテーブルへの入
力から生成される垂直および水平選択信号の同時デコー
ドに基づいて選択される。すなわち、選択したセルは、
1に設定された垂直信号と1に設定された水平信号との
交点で検出される。テーブルへの同期入力は7つあるの
で、最高7つまでのセルを一度に選択することができ
る。あるいは、それより少ないセルを一度に選択するこ
ともでき、異なるソース(ロード・ユニット、ストア・
ユニット、または検証ユニット)によっていくつかのセ
ルを同時に選択することもできる。
【0066】それぞれが14ビットを含む7つの入力信
号901は、それぞれ5ビット、4ビット、5ビットを
含む7つの信号からなる3つのセットに分離される。各
5ビット信号902は、図10のアドレス・フィールド
からの5つの最上位ビットに対応し、2次元テーブルの
1つの列を選択するために使用する。各4ビット信号9
13は、図10のアドレス・フィールドからの次の4ビ
ットに対応し、2次元テーブルの1つの行を選択するた
めに使用する。各5ビット信号915は、図10のアド
レス・フィールドからの右端の3ビットとサイズ・フィ
ールドからの2ビットに対応し、対応する参照が単一領
域内に含まれるかどうかまたはそれが2つの領域にまた
がるかどうかを検出するために使用する。
【0067】各5ビット信号902は2進デコーダ90
5に入力され、そのデコーダは32ビット信号907を
1/32コード(1-out-of-32 code)で生成する。7つ
の32ビット信号907は、完全なシャッフラ909で
シャッフルされ、すべての5ビット信号902のデコー
ド済み表現に対応するそれぞれ7ビットの32個の信号
911を生成する。このような信号のそれぞれは、2次
元アレイのうちの1つの列を選択する。しかも、右端の
7ビット信号は、最後のセルから最初のセルにまたがる
ケースを検出するために2次元アレイの最初のセルに入
力される。
【0068】各4ビット信号913は2進デコーダ92
0に入力され、そのデコーダは16ビット信号を1/1
6コードで生成する。各5ビット信号915はストラド
ル・ジェネレータ922に入力され、そのジェネレータ
はメモリ参照(タプル<アドレス、サイズ>)が領域マ
ッピング・テーブル内の2つの隣接項目に関連するかど
うかを示す単一ビット信号を生成する。
【0069】2進デコーダ920からの7つの16ビッ
ト出力と、ストラドル・ジェネレータ922からの7つ
の1ビット出力はシャッフラ/ミキサ924で合成さ
れ、それぞれ7ビットの16個の信号919を生成す
る。これらの信号は、対応する参照が1つの領域にアク
セスするか2つの領域にアクセスするかに応じて、2次
元アレイから1つの行または2つの行を選択する。
【0070】信号911および919の同時デコードに
より、512個のセルからなる2次元アレイ950から
のセルの選択が決定され、そのセルは領域マッピング・
テーブル内でアクセスされた項目を構成する。
【0071】図12は、図11の領域マッピング・テー
ブルで使用するストラドル・ジェネレータ・ユニット9
22内の入力信号および出力信号を示すブロック図であ
る。このユニットは、図10のアドレス・フィールドの
3つの最下位ビットとサイズ・フィールドの2ビットを
入力として受け取る。最初の3ビットは、特定のテーブ
ル・セルに割り当てられた位置合せ済みダブルワード内
のバイト・オフセットに対応する。このオフセットは、
サイズ・フィールドによって追加される。この追加の結
果が8(ダブルワード内のバイト数、干渉の最小ユニッ
トのサイズ)より大きい場合、この参照は1つの領域に
またがる。このような場合、ストラドル・ジェネレータ
・ユニットからの出力は1に設定され、そうではない場
合、0に設定される。
【0072】図13は、領域マッピング・テーブル内の
各セルの機能性を示す流れ図である。このセルはカウン
タと状況フィールドからなる。ステップ1101では、
その領域に対する各タイプの参照の数を求める。参照の
タイプとしては以下のものを含む。 1)順不同ロード操作のディスパッチ 2)ストア操作のディスパッチ 3)順不同ロード操作のリタイヤ(コミット)
【0073】ステップ1103では、1つまたは複数の
順不同ロード命令をリタイヤしている場合、状況フィー
ルドを検査する。このフィールドの値が「ダーティ」で
ある場合、その領域内の順序変更済みメモリ操作間に干
渉が存在していたので、プロセスはステップ1105に
進み、そこで対応する出力fail0またはfail1を1に設定
し、プロセスが終了する。
【0074】これに対して、ステップ1103からの結
果が偽である場合、ステップ1107では、その領域を
参照する1つまたは複数の順不同ロード命令をディスパ
ッチしているかどうかならびにカウンタの値が1である
かどうかを判定し、その場合、ステップ1109で状況
フィールドを「クリーン」に設定する。プロセスはステ
ップ1111に進み、そこでディスパッチ中の順不同ロ
ード操作の数だけカウンタを増分する。次にプロセスは
ステップ1113に進む。
【0075】ステップ1113では、その領域を参照す
る1つまたは複数のストア命令をリタイヤ(コミット)
しているかどうかならびにカウンタの値が0以外である
かどうかを判定し、その場合、ステップ1115で状況
フィールドを「ダーティ」に設定する。次にプロセスは
ステップ1117に進む。
【0076】ステップ1117では、リタイヤ(コミッ
ト)している順不同ロード命令の数だけカウンタ・フィ
ールドを減分し、プロセスは終了する。
【0077】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0078】(1)命令シーケンスがプロセッサ・ユニ
ットによって実行され、前記命令のうちの少なくとも1
つが前記命令シーケンス内の元の位置から前記命令シー
ケンス内のより前の位置に移動されるロード命令であ
り、前記少なくとも1つのロード命令が少なくとも1つ
のストア命令の上に移動され、それにより、順不同ロー
ド命令になり、前記順不同ロード命令がそこからデータ
を読み取るメモリ・サブシステム内の位置を識別し、前
記少なくとも1つのストア命令がそこにデータを格納す
るメモリ・サブシステム内の位置を識別するコンピュー
タ処理システムにおいて、前記順不同ロード命令と前記
少なくとも1つのストア命令との干渉を検出し、このよ
うな干渉から回復するための方法であって、複数の項目
をテーブルに格納するステップであって、各項目Eが前
記メモリ・サブシステムの複数の領域のうちの1つの領
域Rに対応し、前記項目Eが i)前記プロセッサ・ユニットが前記領域R内の位置か
らデータをロードする少なくとも1つの順不同ロード命
令を処理するかどうか、および ii)前記プロセッサ・ユニットが前記領域R内の位置に
データを格納する少なくとも1つの干渉ストア命令を処
理するかどうかを示し、前記干渉ストア命令が前記領域
R内の位置からデータをロードする順不同ロード命令と
干渉するような少なくとも1つのフィールドを含むステ
ップと、前記処理ユニットによって処理される第1の順
不同ロード命令に対応する項目E1を識別するステップ
であって、前記項目E1が前記メモリ・サブシステムの
領域R1に対応し、前記第1の順不同ロード命令が前記
領域R1内の位置からデータをロードするステップと、
前記第1の順不同ロード命令の前記元の位置に達する
と、前記プロセッサ・ユニットが前記領域R1内の位置
にデータを格納する少なくとも1つの干渉ストア命令を
処理することを項目E1の前記少なくとも1つのフィー
ルドが示す場合に回復シーケンスを実行するように前記
プロセッサ・ユニットを制御するステップとを含む方
法。 (2)前記項目Eの前記少なくとも1つのフィールド
が、 i)前記プロセッサ・ユニットが、前記領域R内の位置
からデータをロードする少なくとも1つの順不同ロード
命令をディスパッチしたかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
にデータを格納する少なくとも1つの干渉ストア命令を
ディスパッチしたかどうかを示し、前記制御ステップ
が、前記プロセッサ・ユニットが前記少なくとも1つの
干渉ストア命令をディスパッチしたことを前記項目E1
の前記少なくとも1つのフィールドが示す場合に回復シ
ーケンスを実行するように前記プロセッサ・ユニットを
制御することを特徴とする、上記(1)に記載の方法。 (3)前記項目Eの前記少なくとも1つのフィールド
が、 i)前記プロセッサ・ユニットが、前記領域R内の位置
からデータをロードする少なくとも1つの順不同ロード
命令を実行したかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
にデータを格納する少なくとも1つの干渉ストア命令を
実行したかどうかを示し、前記制御ステップが、前記プ
ロセッサ・ユニットが前記少なくとも1つの干渉ストア
命令を実行したことを前記項目E1の前記少なくとも1
つのフィールドが示す場合に回復シーケンスを実行する
ように前記プロセッサ・ユニットを制御することを特徴
とする、上記(1)に記載の方法。 (4)各領域が複数のメモリ位置に対応することを特徴
とする、上記(1)に記載の方法。 (5)前記プロセッサ・ユニットが実行するために少な
くとも1つの順不同ロード命令を選択するステップであ
って、前記順不同ロード命令がそこからデータを読み取
る前記メモリ・サブシステム内の位置LLを識別し、前
記位置LLが前記メモリ・サブシステムの領域LR内に
あるステップと、選択した各順不同ロード命令ごとに、
前記領域LRに対応する前記テーブルの項目LEを識別
するステップと、前記領域LR内の位置からデータをロ
ードする少なくとも1つの順不同ロード命令が前記プロ
セッサ・ユニットによって処理されることを示すように
前記項目LEの前記少なくとも1つのフィールドを更新
するステップとをさらに含むことを特徴とする、上記
(1)に記載の方法。 (6)前記プロセッサ・ユニットが実行するために少な
くとも1つのストア命令を選択するステップであって、
前記少なくとも1つのストア命令がそこにデータを格納
する前記メモリ・サブシステム内の位置SLを識別し、
前記位置SLが前記メモリ・サブシステムの領域SR内
にあるステップと、選択した各ストア命令ごとに、前記
領域SRに対応する前記テーブルの項目SEを識別する
ステップと、前記項目SEの前記少なくとも1つのフィ
ールドを評価するステップと、前記領域SR内の位置か
らデータをロードする少なくとも1つの順不同ロード命
令が前記プロセッサ・ユニットによって処理されること
を前記項目SEの前記少なくとも1つのフィールドが示
す場合に、前記領域SR内の位置にデータを格納する少
なくとも1つの干渉ストア命令が前記プロセッサ・ユニ
ットによって処理されることを示すように前記項目SE
の前記少なくとも1つのフィールドを更新するステップ
とをさらに含むことを特徴とする、上記(1)に記載の
方法。 (7)コミットのために少なくとも1つの順不同ロード
命令を選択するステップであって、前記少なくとも1つ
の順不同ロード命令がそこからデータを読み取った前記
メモリ・サブシステム内の位置CLLを識別し、前記位
置CLLが前記メモリ・サブシステムの領域CLR内に
あるステップと、選択した各順不同ロード命令ごとに、
前記領域CLRに対応する前記テーブルの項目CLEを
識別するステップと、前記項目CLEの前記少なくとも
1つのフィールドを評価するステップと、前記領域CS
R内の位置にデータを格納する少なくとも1つの干渉ス
トア命令が前記プロセッサ・ユニットによって処理され
ることを前記項目CLEの前記少なくとも1つのフィー
ルドが示す場合に、前記回復シーケンスを実行するステ
ップとをさらに含むことを特徴とする、上記(1)に記
載の方法。 (8)前記領域CSR内の位置にデータを格納する少な
くとも1つの干渉ストア命令が前記プロセッサ・ユニッ
トによって処理されないことを前記項目CLEの前記少
なくとも1つのフィールドが示す場合に、選択した順不
同ロード命令が完了したことを示すように前記項目CL
Eを更新するステップとをさらに含むことを特徴とす
る、上記(1)に記載の方法。 (9)前記少なくとも1つの順不同ロード命令と前記回
復シーケンスがプログラムの実行前に生成され、前記順
不同ロード命令が、前記順不同ロード命令内の所定のコ
ードによって識別され、前記順不同ロード命令の元の位
置が、プログラムの実行前に生成される所定の命令によ
って識別され、前記順不同ロード命令が、前記所定のコ
ードのデコードに応答して識別され、前記順不同ロード
命令の前記元の位置が、前記所定の命令のデコードに応
答して識別され、前記制御論理回路が分岐命令およびプ
ログラム・トラップのうちの1つによって前記回復シー
ケンスに実行制御を転送することを特徴とする、上記
(1)に記載の方法。 (10)前記少なくとも1つの順不同ロード命令が、前
記プログラムの実行中に生成され、前記命令に付加され
る所定のフィールドによってマークが付けられ、前記制
御ステップが、 a)前記順不同ロード命令の影響を取り消し、 b)前記順不同ロード命令後に順不同で実行された他の
命令の影響を取り消し、 c)前記順不同ロード命令の前記元の位置から実行を再
開するプログラム例外を生成することを特徴とする、上
記(1)に記載の方法。 (11)複数の命令がプログラム実行中に順序変更さ
れ、順不同で実行され、完了した命令がリタイヤ待ち行
列に入れられ、プログラム順序で前記リタイヤ待ち行列
から除去され、プログラム順序でリタイヤされ、順不同
ロード命令の元の位置が、前記リタイヤ待ち行列内の前
記順不同ロード命令の位置によって識別され、前記プロ
グラム例外が前記リタイヤ待ち行列をフラッシュし、そ
れにより、すべての残りの未リタイヤ命令を取り消し、
前記順不同ロード命令の前記元の位置から実行を再開す
ることを特徴とする、上記(10)に記載の方法。 (12)命令シーケンスがプロセッサ・ユニットによっ
て実行され、前記命令のうちの少なくとも1つが前記命
令シーケンス内の元の位置から前記命令シーケンス内の
より前の位置に移動されるロード命令であり、前記少な
くとも1つのロード命令が少なくとも1つのストア命令
の上に移動され、それにより、順不同ロード命令にな
り、前記順不同ロード命令がそこからデータを読み取る
メモリ・サブシステム内の位置を識別するコンピュータ
処理システムにおいて、前記順不同ロード命令と前記少
なくとも1つのストア命令との干渉を検出し、このよう
な干渉から回復するための装置であって、複数の項目を
含むテーブルであって、各項目Eが前記メモリ・サブシ
ステムの複数の領域のうちの1つの領域Rに対応し、前
記項目Eが i)前記プロセッサ・ユニットが前記領域R内の位置か
らデータをロードする少なくとも1つの順不同ロード命
令を処理するかどうか、および ii)前記プロセッサ・ユニットが前記領域R内の位置に
データを格納する少なくとも1つの干渉ストア命令を処
理するかどうかを示し、前記干渉ストア命令が前記領域
R内の位置からデータをロードする順不同ロード命令と
干渉するような少なくとも1つのフィールドを含むテー
ブルと、前記処理ユニットによって処理される第1の順
不同ロード命令に対応する項目E1を識別するための検
出論理回路であって、前記項目E1が前記メモリ・サブ
システムの領域R1に対応し、前記第1の順不同ロード
命令が前記領域R1内の位置からデータをロードし、前
記プロセッサ・ユニットが前記第1の順不同ロード命令
の元の位置に達したときを検出するための検出論理回路
と、前記検出論理回路に結合され、前記プロセッサ・ユ
ニットが前記第1の順不同ロード命令の前記元の位置に
達し、前記プロセッサ・ユニットが前記領域R1内の位
置にデータを格納する少なくとも1つの干渉ストア命令
を処理することを項目E1の前記少なくとも1つのフィ
ールドが示すときに回復シーケンスを実行するように前
記プロセッサ・ユニットを制御するための制御論理回路
とを含む装置。 (13)前記項目Eの前記少なくとも1つのフィールド
が、 i)前記プロセッサ・ユニットが、前記領域R内の位置
からデータをロードする少なくとも1つの順不同ロード
命令をディスパッチしたかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
にデータを格納する少なくとも1つの干渉ストア命令を
ディスパッチしたかどうかを示し、前記プロセッサ・ユ
ニットが前記第1の順不同ロード命令の前記元の位置に
達し、前記プロセッサ・ユニットが前記少なくとも1つ
の干渉ストア命令をディスパッチしたことを前記項目E
1の前記少なくとも1つのフィールドが示すときに回復
シーケンスを実行するように前記制御論理回路が前記プ
ロセッサ・ユニットを制御することを特徴とする、上記
(12)に記載の装置。 (14)前記項目Eの前記少なくとも1つのフィールド
が、 i)前記プロセッサ・ユニットが、前記領域R内の位置
からデータをロードする少なくとも1つの順不同ロード
命令を実行したかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
にデータを格納する少なくとも1つの干渉ストア命令を
実行したかどうかを示し、前記プロセッサ・ユニットが
前記第1の順不同ロード命令の前記元の位置に達し、前
記プロセッサ・ユニットが前記少なくとも1つの干渉ス
トア命令を実行したことを前記項目E1の前記少なくと
も1つのフィールドが示すときに回復シーケンスを実行
するように前記制御論理回路が前記プロセッサ・ユニッ
トを制御することを特徴とする、上記(12)に記載の
装置。 (15)各領域が複数のメモリ位置に対応することを特
徴とする、上記(12)に記載の装置。 (16)前記プロセッサ・ユニットが実行するために少
なくとも1つの順不同ロード命令を選択するためのディ
スパッチ論理回路であって、前記順不同ロード命令がそ
こからデータを読み取る前記メモリ・サブシステム内の
位置LLを識別し、前記位置LLが前記メモリ・サブシ
ステムの領域LR内にあるディスパッチ論理回路をさら
に含み、前記制御論理回路が、前記ディスパッチ論理回
路によって選択された各順不同ロード命令ごとに、前記
領域LRに対応する前記テーブルの項目LEを識別し、
前記領域LR内の位置からデータをロードする少なくと
も1つの順不同ロード命令が前記プロセッサ・ユニット
によって処理されることを示すように前記項目LEの前
記少なくとも1つのフィールドを更新することを特徴と
する、上記(12)に記載の装置。 (17)前記プロセッサ・ユニットが実行するために少
なくとも1つのストア命令を選択するためのディスパッ
チ論理回路であって、前記少なくとも1つのストア命令
がそこにデータを格納する前記メモリ・サブシステム内
の位置SLを識別し、前記位置SLが前記メモリ・サブ
システムの領域SR内にあるディスパッチ論理回路をさ
らに含み、前記制御論理回路が、前記ディスパッチ論理
回路によって選択された各ストア命令ごとに、前記領域
SRに対応する前記テーブルの項目SEを識別し、前記
項目SEの前記少なくとも1つのフィールドを評価し、
前記領域SR内の位置からデータをロードする少なくと
も1つの順不同ロード命令が前記プロセッサ・ユニット
によって処理されることを前記項目SEの前記少なくと
も1つのフィールドが示す場合に、前記領域SR内の位
置にデータを格納する少なくとも1つの干渉ストア命令
が前記プロセッサ・ユニットによって処理されることを
示すように前記項目SEの前記少なくとも1つのフィー
ルドを更新することを特徴とする、上記(12)に記載
の装置。 (18)コミットのために少なくとも1つの順不同ロー
ド命令を選択するためのコミット論理回路であって、前
記少なくとも1つの順不同ロード命令がそこからデータ
を読み取った前記メモリ・サブシステム内の位置CLL
を識別し、前記位置CLLが前記メモリ・サブシステム
の領域CLR内にあるコミット論理回路をさらに含み
と、前記制御論理回路が、前記コミット論理回路によっ
て選択された各順不同ロード命令ごとに、前記領域CL
Rに対応する前記テーブルの項目CLEを識別し、前記
項目CLEの前記少なくとも1つのフィールドを評価
し、前記領域CSR内の位置にデータを格納する少なく
とも1つの干渉ストア命令が前記プロセッサ・ユニット
によって処理されることを前記項目CLEの前記少なく
とも1つのフィールドが示す場合に、前記回復シーケン
スを実行することを特徴とする、上記(12)に記載の
装置。 (19)前記領域CSR内の位置にデータを格納する少
なくとも1つの干渉ストア命令が前記プロセッサ・ユニ
ットによって処理されないことを前記項目CLEの前記
少なくとも1つのフィールドが示す場合に、選択した順
不同ロード命令が完了したことを示すように前記制御論
理回路が前記項目CLEを更新することを特徴とする、
上記(12)に記載の装置。 (20)前記少なくとも1つの順不同ロード命令と前記
回復シーケンスがプログラムの実行前に生成され、前記
順不同ロード命令が、前記順不同ロード命令内の所定の
コードによって識別され、前記順不同ロード命令の元の
位置が、前記プログラムの実行前に生成される所定の命
令によって識別され、前記検出論理回路が、前記所定の
コードのデコードに応答して前記順不同ロード命令を識
別し、前記検出論理回路が、前記所定の命令のデコード
に応答して前記順不同ロード命令の前記元の位置を識別
し、前記制御論理回路が、分岐命令およびプログラム・
トラップのうちの1つによって前記回復シーケンスに実
行制御を転送することを特徴とする、上記(12)に記
載の装置。 (21)複数の命令がプログラム実行中に順序変更さ
れ、順不同で実行され、完了した命令がリタイヤ待ち行
列に入れられ、プログラム順序で前記リタイヤ待ち行列
から除去され、プログラム順序でリタイヤされ、前記少
なくとも1つの順不同命令が、前記プログラムの実行中
に生成され、前記命令に付加された所定のフィールドに
よって識別され、順不同ロード命令の元の位置が、前記
リタイヤ待ち行列内の前記順不同ロード命令の位置によ
って識別され、前記リタイヤ待ち行列をフラッシュし、
それにより、すべての残りの未リタイヤ命令を取り消
し、前記順不同ロード命令の前記元の位置から実行を再
開するプログラム例外を生成することにより、前記制御
論理回路が前記回復シーケンスに実行制御を転送するこ
とを特徴とする、上記(12)に記載の装置。 (22)前記プロセッサが複数の命令をパイプライン方
式で同時に実行し、前記実行プロセスが複数の段階から
なり、1つの段階が少なくとも1つの順不同ロード命令
OOL1と少なくとも1つのストア命令S1とを同時に
ディスパッチすることができ、他の段階が少なくとも1
つの順不同ロード命令OOL2と少なくとも1つのスト
ア命令S2とを同時にリタイヤすることができ、前記テ
ーブルが、前記メモリ・サブシステム内の第1および第
2の位置を同時に識別するための手段であって、前記第
1の位置が前記少なくとも1つのロード命令OOL1に
よって読み取られ、第2の位置には前記少なくとも1つ
のストア命令S1によって格納される手段と、前記メモ
リ・サブシステム内の第3および第4の位置を同時に識
別するための手段であって、前記第3の位置が前記少な
くとも1つのロード命令OOL2によって読み取られ、
第2の位置には前記少なくとも1つのストア命令S2に
よって格納される手段と、前記第1、第2、第3、およ
び第4の位置の識別に応答して前記テーブルの項目を更
新し、それにより、干渉ストア操作の存在を識別するた
めの手段とをさらに含むことを特徴とする、上記(1
2)に記載の装置。 (23)命令シーケンスがプロセッサ・ユニットによっ
て実行され、前記命令のうちの少なくとも1つが前記命
令シーケンス内の元の位置から前記命令シーケンス内の
より前の位置に移動されるロード命令であり、前記少な
くとも1つのロード命令が少なくとも1つのストア命令
の上に移動され、それにより、順不同ロード命令にな
り、前記順不同ロード命令がそこからデータを読み取る
メモリ・サブシステム内の位置を識別し、前記少なくと
も1つのストア命令がそこにデータを格納するメモリ・
サブシステム内の位置を識別するコンピュータ処理シス
テムにおいて、前記順不同ロード命令と前記少なくとも
1つのストア命令との干渉を検出し、このような干渉か
ら回復するための方法であって、複数の項目をテーブル
に格納するステップであって、各項目Eが前記メモリ・
サブシステムの複数の領域のうちの1つの領域Rに対応
し、前記項目Eが i)前記プロセッサ・ユニットが前記領域R内の位置か
らデータをロードする少なくとも1つの順不同ロード命
令を処理するかどうか、および ii)前記プロセッサ・ユニットが前記領域R内の位置に
データを格納する少なくとも1つのストア命令を処理す
るかどうかを示すような少なくとも1つのフィールドを
含むステップと、前記処理ユニットによって処理される
第1の順不同ロード命令に対応する項目E1を識別する
ステップであって、前記項目E1が前記メモリ・サブシ
ステムの領域R1に対応し、前記第1の順不同ロード命
令が前記領域R1内の位置からデータをロードするステ
ップと、前記第1の順不同ロード命令の前記元の位置に
達すると、前記プロセッサ・ユニットが前記領域R1内
の位置にデータを格納する少なくとも1つのストア命令
を処理することを項目E1の前記少なくとも1つのフィ
ールドが示す場合に回復シーケンスを実行するように前
記プロセッサ・ユニットを制御するステップとを含む方
法。 (24)前記項目Eの前記少なくとも1つのフィールド
が、 i)前記プロセッサ・ユニットが、前記領域R内の位置
からデータをロードする少なくとも1つの順不同ロード
命令をディスパッチしたかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
にデータを格納する少なくとも1つのストア命令をディ
スパッチしたかどうかを示し、前記制御ステップが、前
記プロセッサ・ユニットが前記少なくとも1つのストア
命令をディスパッチしたことを前記項目E1の前記少な
くとも1つのフィールドが示す場合に回復シーケンスを
実行するように前記プロセッサ・ユニットを制御するこ
とを特徴とする、上記(23)に記載の方法。 (25)前記項目Eの前記少なくとも1つのフィールド
が、 i)前記プロセッサ・ユニットが、前記領域R内の位置
からデータをロードする少なくとも1つの順不同ロード
命令を実行したかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
にデータを格納する少なくとも1つのストア命令を実行
したかどうかを示し、前記制御ステップが、前記プロセ
ッサ・ユニットが前記少なくとも1つのストア命令を実
行したことを前記項目E1の前記少なくとも1つのフィ
ールドが示す場合に回復シーケンスを実行するように前
記プロセッサ・ユニットを制御することを特徴とする、
上記(23)に記載の方法。 (26)各領域が複数のメモリ位置に対応することを特
徴とする、上記(23)に記載の方法。 (27)前記プロセッサ・ユニットが実行するために少
なくとも1つの順不同ロード命令を選択するステップで
あって、前記順不同ロード命令がそこからデータを読み
取る前記メモリ・サブシステム内の位置LLを識別し、
前記位置LLが前記メモリ・サブシステムの領域LR内
にあるステップと、選択した各順不同ロード命令ごと
に、前記領域LRに対応する前記テーブルの項目LEを
識別するステップと、前記領域LR内の位置からデータ
をロードする少なくとも1つの順不同ロード命令が前記
プロセッサ・ユニットによって処理されることを示すよ
うに前記項目LEの前記少なくとも1つのフィールドを
更新するステップとをさらに含むことを特徴とする、上
記(23)に記載の方法。 (28)前記プロセッサ・ユニットが実行するために少
なくとも1つのストア命令を選択するステップであっ
て、前記少なくとも1つのストア命令がそこにデータを
格納する前記メモリ・サブシステム内の位置SLを識別
し、前記位置SLが前記メモリ・サブシステムの領域S
R内にあるステップと、選択した各ストア命令ごとに、
前記領域SRに対応する前記テーブルの項目SEを識別
するステップと、前記領域SR内の位置にデータを格納
する少なくとも1つのストア命令が前記プロセッサ・ユ
ニットによって処理されることを前記項目SEの前記少
なくとも1つのフィールドを更新するステップとをさら
に含むことを特徴とする、上記(23)に記載の方法。 (29)前記少なくとも1つの順不同ロード命令と前記
回復シーケンスがプログラムの実行前に生成され、前記
順不同ロード命令が、前記順不同ロード命令内の所定の
コードによって識別され、前記順不同ロード命令の元の
位置が、プログラムの実行前に生成される所定の命令に
よって識別され、前記順不同ロード命令が、前記所定の
コードのデコードに応答して識別され、前記順不同ロー
ド命令の前記元の位置が、前記所定の命令のデコードに
応答して識別され、前記制御論理回路が分岐命令および
プログラム・トラップのうちの1つによって前記回復シ
ーケンスに実行制御を転送することを特徴とする、上記
(23)に記載の方法。 (30)前記少なくとも1つの順不同ロード命令が、前
記プログラムの実行中に生成され、前記命令に付加され
る所定のフィールドによってマークが付けられ、前記制
御ステップが、 a)前記順不同ロード命令の影響を取り消し、 b)前記順不同ロード命令後に順不同で実行された他の
命令の影響を取り消し、 c)前記順不同ロード命令の前記元の位置から実行を再
開するプログラム例外を生成することを特徴とする、上
記(23)に記載の方法。
【図面の簡単な説明】
【図1】本発明によるメモリ操作を含む命令の静的順序
変更をサポートするコンピュータ・システムのブロック
図である。
【図2】図1に示すコンピュータ・システムでの順不同
メモリ操作の実行を説明する流れ図である。
【図3】本発明によるメモリ操作を含む命令の動的順序
変更をサポートするコンピュータ・システムのブロック
図である。
【図4】図3に示すコンピュータ・システムでの命令の
処理を説明する流れ図である。
【図5】領域マッピング・テーブルの内容の絵画図であ
る。
【図6】領域マッピング・テーブルの内容の絵画図であ
る。
【図7】図3に示すコンピュータ・システムでの命令の
発行を説明する流れ図である。
【図8】図3に示すコンピュータ・システムでの命令の
適正順序リタイヤを説明する流れ図である。
【図9】間違って順序変更されたメモリ操作を検出する
領域マッピング・テーブルからの入力信号および出力信
号を示す図である。
【図10】領域マッピング・テーブルへの各入力信号の
内容を示す図である。
【図11】領域マッピング・テーブルの主要構成要素を
示すブロック図である。
【図12】図9の領域マッピング・テーブルで使用する
ストラドル・ジェネレータ・ユニット内の入力信号およ
び出力信号を示すブロック図である。
【図13】図11の領域マッピング・テーブル内の各セ
ルの構造を示すブロック図である。
【符号の説明】
100 プロセッサ・ユニット 101 メモリ・サブシステム 102 データ・キャッシュ 103 命令キャッシュ 104 命令待ち行列 105 領域マッピング・テーブル 106 メモリ・ユニット 107 機能ユニット107 108 分岐ユニット 109 レジスタ・ファイル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マヤン・モウドギル アメリカ合衆国10562 ニューヨーク州オ シニングイーグル・ベイ・ドライブ 201

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】命令シーケンスがプロセッサ・ユニットに
    よって実行され、前記命令のうちの少なくとも1つが前
    記命令シーケンス内の元の位置から前記命令シーケンス
    内のより前の位置に移動されるロード命令であり、前記
    少なくとも1つのロード命令が少なくとも1つのストア
    命令の上に移動され、それにより、順不同ロード命令に
    なり、前記順不同ロード命令がそこからデータを読み取
    るメモリ・サブシステム内の位置を識別し、前記少なく
    とも1つのストア命令がそこにデータを格納するメモリ
    ・サブシステム内の位置を識別するコンピュータ処理シ
    ステムにおいて、前記順不同ロード命令と前記少なくと
    も1つのストア命令との干渉を検出し、このような干渉
    から回復するための方法であって、 複数の項目をテーブルに格納するステップであって、各
    項目Eが前記メモリ・サブシステムの複数の領域のうち
    の1つの領域Rに対応し、前記項目Eが i)前記プロセッサ・ユニットが前記領域R内の位置か
    らデータをロードする少なくとも1つの順不同ロード命
    令を処理するかどうか、および ii)前記プロセッサ・ユニットが前記領域R内の位置に
    データを格納する少なくとも1つの干渉ストア命令を処
    理するかどうかを示し、前記干渉ストア命令が前記領域
    R内の位置からデータをロードする順不同ロード命令と
    干渉するような少なくとも1つのフィールドを含むステ
    ップと、 前記処理ユニットによって処理される第1の順不同ロー
    ド命令に対応する項目E1を識別するステップであっ
    て、前記項目E1が前記メモリ・サブシステムの領域R
    1に対応し、前記第1の順不同ロード命令が前記領域R
    1内の位置からデータをロードするステップと、 前記第1の順不同ロード命令の前記元の位置に達する
    と、前記プロセッサ・ユニットが前記領域R1内の位置
    にデータを格納する少なくとも1つの干渉ストア命令を
    処理することを項目E1の前記少なくとも1つのフィー
    ルドが示す場合に回復シーケンスを実行するように前記
    プロセッサ・ユニットを制御するステップとを含む方
    法。
  2. 【請求項2】前記項目Eの前記少なくとも1つのフィー
    ルドが、 i)前記プロセッサ・ユニットが、前記領域R内の位置
    からデータをロードする少なくとも1つの順不同ロード
    命令をディスパッチしたかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
    にデータを格納する少なくとも1つの干渉ストア命令を
    ディスパッチしたかどうかを示し、 前記制御ステップが、前記プロセッサ・ユニットが前記
    少なくとも1つの干渉ストア命令をディスパッチしたこ
    とを前記項目E1の前記少なくとも1つのフィールドが
    示す場合に回復シーケンスを実行するように前記プロセ
    ッサ・ユニットを制御することを特徴とする、請求項1
    に記載の方法。
  3. 【請求項3】前記項目Eの前記少なくとも1つのフィー
    ルドが、 i)前記プロセッサ・ユニットが、前記領域R内の位置
    からデータをロードする少なくとも1つの順不同ロード
    命令を実行したかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
    にデータを格納する少なくとも1つの干渉ストア命令を
    実行したかどうかを示し、 前記制御ステップが、前記プロセッサ・ユニットが前記
    少なくとも1つの干渉ストア命令を実行したことを前記
    項目E1の前記少なくとも1つのフィールドが示す場合
    に回復シーケンスを実行するように前記プロセッサ・ユ
    ニットを制御することを特徴とする、請求項1に記載の
    方法。
  4. 【請求項4】各領域が複数のメモリ位置に対応すること
    を特徴とする、請求項1に記載の方法。
  5. 【請求項5】前記プロセッサ・ユニットが実行するため
    に少なくとも1つの順不同ロード命令を選択するステッ
    プであって、前記順不同ロード命令がそこからデータを
    読み取る前記メモリ・サブシステム内の位置LLを識別
    し、前記位置LLが前記メモリ・サブシステムの領域L
    R内にあるステップと、 選択した各順不同ロード命令ごとに、 前記領域LRに対応する前記テーブルの項目LEを識別
    するステップと、 前記領域LR内の位置からデータをロードする少なくと
    も1つの順不同ロード命令が前記プロセッサ・ユニット
    によって処理されることを示すように前記項目LEの前
    記少なくとも1つのフィールドを更新するステップとを
    さらに含むことを特徴とする、請求項1に記載の方法。
  6. 【請求項6】前記プロセッサ・ユニットが実行するため
    に少なくとも1つのストア命令を選択するステップであ
    って、前記少なくとも1つのストア命令がそこにデータ
    を格納する前記メモリ・サブシステム内の位置SLを識
    別し、前記位置SLが前記メモリ・サブシステムの領域
    SR内にあるステップと、 選択した各ストア命令ごとに、 前記領域SRに対応する前記テーブルの項目SEを識別
    するステップと、 前記項目SEの前記少なくとも1つのフィールドを評価
    するステップと、 前記領域SR内の位置からデータをロードする少なくと
    も1つの順不同ロード命令が前記プロセッサ・ユニット
    によって処理されることを前記項目SEの前記少なくと
    も1つのフィールドが示す場合に、前記領域SR内の位
    置にデータを格納する少なくとも1つの干渉ストア命令
    が前記プロセッサ・ユニットによって処理されることを
    示すように前記項目SEの前記少なくとも1つのフィー
    ルドを更新するステップとをさらに含むことを特徴とす
    る、請求項1に記載の方法。
  7. 【請求項7】コミットのために少なくとも1つの順不同
    ロード命令を選択するステップであって、前記少なくと
    も1つの順不同ロード命令がそこからデータを読み取っ
    た前記メモリ・サブシステム内の位置CLLを識別し、
    前記位置CLLが前記メモリ・サブシステムの領域CL
    R内にあるステップと、 選択した各順不同ロード命令ごとに、 前記領域CLRに対応する前記テーブルの項目CLEを
    識別するステップと、 前記項目CLEの前記少なくとも1つのフィールドを評
    価するステップと、 前記領域CSR内の位置にデータを格納する少なくとも
    1つの干渉ストア命令が前記プロセッサ・ユニットによ
    って処理されることを前記項目CLEの前記少なくとも
    1つのフィールドが示す場合に、前記回復シーケンスを
    実行するステップとをさらに含むことを特徴とする、請
    求項1に記載の方法。
  8. 【請求項8】前記領域CSR内の位置にデータを格納す
    る少なくとも1つの干渉ストア命令が前記プロセッサ・
    ユニットによって処理されないことを前記項目CLEの
    前記少なくとも1つのフィールドが示す場合に、選択し
    た順不同ロード命令が完了したことを示すように前記項
    目CLEを更新するステップとをさらに含むことを特徴
    とする、請求項1に記載の方法。
  9. 【請求項9】前記少なくとも1つの順不同ロード命令と
    前記回復シーケンスがプログラムの実行前に生成され、 前記順不同ロード命令が、前記順不同ロード命令内の所
    定のコードによって識別され、 前記順不同ロード命令の元の位置が、プログラムの実行
    前に生成される所定の命令によって識別され、 前記順不同ロード命令が、前記所定のコードのデコード
    に応答して識別され、 前記順不同ロード命令の前記元の位置が、前記所定の命
    令のデコードに応答して識別され、 前記制御論理回路が分岐命令およびプログラム・トラッ
    プのうちの1つによって前記回復シーケンスに実行制御
    を転送することを特徴とする、請求項1に記載の方法。
  10. 【請求項10】前記少なくとも1つの順不同ロード命令
    が、前記プログラムの実行中に生成され、前記命令に付
    加される所定のフィールドによってマークが付けられ、
    前記制御ステップが、 a)前記順不同ロード命令の影響を取り消し、 b)前記順不同ロード命令後に順不同で実行された他の
    命令の影響を取り消し、 c)前記順不同ロード命令の前記元の位置から実行を再
    開するプログラム例外を生成することを特徴とする、請
    求項1に記載の方法。
  11. 【請求項11】複数の命令がプログラム実行中に順序変
    更され、順不同で実行され、 完了した命令がリタイヤ待ち行列に入れられ、プログラ
    ム順序で前記リタイヤ待ち行列から除去され、プログラ
    ム順序でリタイヤされ、 順不同ロード命令の元の位置が、前記リタイヤ待ち行列
    内の前記順不同ロード命令の位置によって識別され、 前記プログラム例外が前記リタイヤ待ち行列をフラッシ
    ュし、それにより、すべての残りの未リタイヤ命令を取
    り消し、前記順不同ロード命令の前記元の位置から実行
    を再開することを特徴とする、請求項10に記載の方
    法。
  12. 【請求項12】命令シーケンスがプロセッサ・ユニット
    によって実行され、前記命令のうちの少なくとも1つが
    前記命令シーケンス内の元の位置から前記命令シーケン
    ス内のより前の位置に移動されるロード命令であり、前
    記少なくとも1つのロード命令が少なくとも1つのスト
    ア命令の上に移動され、それにより、順不同ロード命令
    になり、前記順不同ロード命令がそこからデータを読み
    取るメモリ・サブシステム内の位置を識別するコンピュ
    ータ処理システムにおいて、前記順不同ロード命令と前
    記少なくとも1つのストア命令との干渉を検出し、この
    ような干渉から回復するための装置であって、 複数の項目を含むテーブルであって、各項目Eが前記メ
    モリ・サブシステムの複数の領域のうちの1つの領域R
    に対応し、前記項目Eが i)前記プロセッサ・ユニットが前記領域R内の位置か
    らデータをロードする少なくとも1つの順不同ロード命
    令を処理するかどうか、および ii)前記プロセッサ・ユニットが前記領域R内の位置に
    データを格納する少なくとも1つの干渉ストア命令を処
    理するかどうかを示し、前記干渉ストア命令が前記領域
    R内の位置からデータをロードする順不同ロード命令と
    干渉するような少なくとも1つのフィールドを含むテー
    ブルと、 前記処理ユニットによって処理される第1の順不同ロー
    ド命令に対応する項目E1を識別するための検出論理回
    路であって、前記項目E1が前記メモリ・サブシステム
    の領域R1に対応し、前記第1の順不同ロード命令が前
    記領域R1内の位置からデータをロードし、前記プロセ
    ッサ・ユニットが前記第1の順不同ロード命令の元の位
    置に達したときを検出するための検出論理回路と、 前記検出論理回路に結合され、前記プロセッサ・ユニッ
    トが前記第1の順不同ロード命令の前記元の位置に達
    し、前記プロセッサ・ユニットが前記領域R1内の位置
    にデータを格納する少なくとも1つの干渉ストア命令を
    処理することを項目E1の前記少なくとも1つのフィー
    ルドが示すときに回復シーケンスを実行するように前記
    プロセッサ・ユニットを制御するための制御論理回路と
    を含む装置。
  13. 【請求項13】前記項目Eの前記少なくとも1つのフィ
    ールドが、 i)前記プロセッサ・ユニットが、前記領域R内の位置
    からデータをロードする少なくとも1つの順不同ロード
    命令をディスパッチしたかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
    にデータを格納する少なくとも1つの干渉ストア命令を
    ディスパッチしたかどうかを示し、 前記プロセッサ・ユニットが前記第1の順不同ロード命
    令の前記元の位置に達し、前記プロセッサ・ユニットが
    前記少なくとも1つの干渉ストア命令をディスパッチし
    たことを前記項目E1の前記少なくとも1つのフィール
    ドが示すときに回復シーケンスを実行するように前記制
    御論理回路が前記プロセッサ・ユニットを制御すること
    を特徴とする、請求項12に記載の装置。
  14. 【請求項14】前記項目Eの前記少なくとも1つのフィ
    ールドが、 i)前記プロセッサ・ユニットが、前記領域R内の位置
    からデータをロードする少なくとも1つの順不同ロード
    命令を実行したかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
    にデータを格納する少なくとも1つの干渉ストア命令を
    実行したかどうかを示し、 前記プロセッサ・ユニットが前記第1の順不同ロード命
    令の前記元の位置に達し、前記プロセッサ・ユニットが
    前記少なくとも1つの干渉ストア命令を実行したことを
    前記項目E1の前記少なくとも1つのフィールドが示す
    ときに回復シーケンスを実行するように前記制御論理回
    路が前記プロセッサ・ユニットを制御することを特徴と
    する、請求項12に記載の装置。
  15. 【請求項15】各領域が複数のメモリ位置に対応するこ
    とを特徴とする、請求項12に記載の装置。
  16. 【請求項16】前記プロセッサ・ユニットが実行するた
    めに少なくとも1つの順不同ロード命令を選択するため
    のディスパッチ論理回路であって、前記順不同ロード命
    令がそこからデータを読み取る前記メモリ・サブシステ
    ム内の位置LLを識別し、前記位置LLが前記メモリ・
    サブシステムの領域LR内にあるディスパッチ論理回路
    をさらに含み、 前記制御論理回路が、前記ディスパッチ論理回路によっ
    て選択された各順不同ロード命令ごとに、 前記領域LRに対応する前記テーブルの項目LEを識別
    し、 前記領域LR内の位置からデータをロードする少なくと
    も1つの順不同ロード命令が前記プロセッサ・ユニット
    によって処理されることを示すように前記項目LEの前
    記少なくとも1つのフィールドを更新することを特徴と
    する、請求項12に記載の装置。
  17. 【請求項17】前記プロセッサ・ユニットが実行するた
    めに少なくとも1つのストア命令を選択するためのディ
    スパッチ論理回路であって、前記少なくとも1つのスト
    ア命令がそこにデータを格納する前記メモリ・サブシス
    テム内の位置SLを識別し、前記位置SLが前記メモリ
    ・サブシステムの領域SR内にあるディスパッチ論理回
    路をさらに含み、 前記制御論理回路が、前記ディスパッチ論理回路によっ
    て選択された各ストア命令ごとに、 前記領域SRに対応する前記テーブルの項目SEを識別
    し、 前記項目SEの前記少なくとも1つのフィールドを評価
    し、 前記領域SR内の位置からデータをロードする少なくと
    も1つの順不同ロード命令が前記プロセッサ・ユニット
    によって処理されることを前記項目SEの前記少なくと
    も1つのフィールドが示す場合に、前記領域SR内の位
    置にデータを格納する少なくとも1つの干渉ストア命令
    が前記プロセッサ・ユニットによって処理されることを
    示すように前記項目SEの前記少なくとも1つのフィー
    ルドを更新することを特徴とする、請求項12に記載の
    装置。
  18. 【請求項18】コミットのために少なくとも1つの順不
    同ロード命令を選択するためのコミット論理回路であっ
    て、前記少なくとも1つの順不同ロード命令がそこから
    データを読み取った前記メモリ・サブシステム内の位置
    CLLを識別し、前記位置CLLが前記メモリ・サブシ
    ステムの領域CLR内にあるコミット論理回路をさらに
    含みと、 前記制御論理回路が、前記コミット論理回路によって選
    択された各順不同ロード命令ごとに、 前記領域CLRに対応する前記テーブルの項目CLEを
    識別し、 前記項目CLEの前記少なくとも1つのフィールドを評
    価し、 前記領域CSR内の位置にデータを格納する少なくとも
    1つの干渉ストア命令が前記プロセッサ・ユニットによ
    って処理されることを前記項目CLEの前記少なくとも
    1つのフィールドが示す場合に、前記回復シーケンスを
    実行することを特徴とする、請求項12に記載の装置。
  19. 【請求項19】前記領域CSR内の位置にデータを格納
    する少なくとも1つの干渉ストア命令が前記プロセッサ
    ・ユニットによって処理されないことを前記項目CLE
    の前記少なくとも1つのフィールドが示す場合に、選択
    した順不同ロード命令が完了したことを示すように前記
    制御論理回路が前記項目CLEを更新することを特徴と
    する、請求項12に記載の装置。
  20. 【請求項20】前記少なくとも1つの順不同ロード命令
    と前記回復シーケンスがプログラムの実行前に生成さ
    れ、 前記順不同ロード命令が、前記順不同ロード命令内の所
    定のコードによって識別され、 前記順不同ロード命令の元の位置が、前記プログラムの
    実行前に生成される所定の命令によって識別され、 前記検出論理回路が、前記所定のコードのデコードに応
    答して前記順不同ロード命令を識別し、 前記検出論理回路が、前記所定の命令のデコードに応答
    して前記順不同ロード命令の前記元の位置を識別し、 前記制御論理回路が、分岐命令およびプログラム・トラ
    ップのうちの1つによって前記回復シーケンスに実行制
    御を転送することを特徴とする、請求項12に記載の装
    置。
  21. 【請求項21】複数の命令がプログラム実行中に順序変
    更され、順不同で実行され、 完了した命令がリタイヤ待ち行列に入れられ、プログラ
    ム順序で前記リタイヤ待ち行列から除去され、プログラ
    ム順序でリタイヤされ、 前記少なくとも1つの順不同命令が、前記プログラムの
    実行中に生成され、前記命令に付加された所定のフィー
    ルドによって識別され、 順不同ロード命令の元の位置が、前記リタイヤ待ち行列
    内の前記順不同ロード命令の位置によって識別され、 前記リタイヤ待ち行列をフラッシュし、それにより、す
    べての残りの未リタイヤ命令を取り消し、前記順不同ロ
    ード命令の前記元の位置から実行を再開するプログラム
    例外を生成することにより、前記制御論理回路が前記回
    復シーケンスに実行制御を転送することを特徴とする、
    請求項12に記載の装置。
  22. 【請求項22】前記プロセッサが複数の命令をパイプラ
    イン方式で同時に実行し、前記実行プロセスが複数の段
    階からなり、1つの段階が少なくとも1つの順不同ロー
    ド命令OOL1と少なくとも1つのストア命令S1とを
    同時にディスパッチすることができ、他の段階が少なく
    とも1つの順不同ロード命令OOL2と少なくとも1つ
    のストア命令S2とを同時にリタイヤすることができ、 前記テーブルが、 前記メモリ・サブシステム内の第1および第2の位置を
    同時に識別するための手段であって、前記第1の位置が
    前記少なくとも1つのロード命令OOL1によって読み
    取られ、第2の位置には前記少なくとも1つのストア命
    令S1によって格納される手段と、 前記メモリ・サブシステム内の第3および第4の位置を
    同時に識別するための手段であって、前記第3の位置が
    前記少なくとも1つのロード命令OOL2によって読み
    取られ、第2の位置には前記少なくとも1つのストア命
    令S2によって格納される手段と、 前記第1、第2、第3、および第4の位置の識別に応答
    して前記テーブルの項目を更新し、それにより、干渉ス
    トア操作の存在を識別するための手段とをさらに含むこ
    とを特徴とする、請求項12に記載の装置。
  23. 【請求項23】命令シーケンスがプロセッサ・ユニット
    によって実行され、前記命令のうちの少なくとも1つが
    前記命令シーケンス内の元の位置から前記命令シーケン
    ス内のより前の位置に移動されるロード命令であり、前
    記少なくとも1つのロード命令が少なくとも1つのスト
    ア命令の上に移動され、それにより、順不同ロード命令
    になり、前記順不同ロード命令がそこからデータを読み
    取るメモリ・サブシステム内の位置を識別し、前記少な
    くとも1つのストア命令がそこにデータを格納するメモ
    リ・サブシステム内の位置を識別するコンピュータ処理
    システムにおいて、前記順不同ロード命令と前記少なく
    とも1つのストア命令との干渉を検出し、このような干
    渉から回復するための方法であって、 複数の項目をテーブルに格納するステップであって、各
    項目Eが前記メモリ・サブシステムの複数の領域のうち
    の1つの領域Rに対応し、前記項目Eが i)前記プロセッサ・ユニットが前記領域R内の位置か
    らデータをロードする少なくとも1つの順不同ロード命
    令を処理するかどうか、および ii)前記プロセッサ・ユニットが前記領域R内の位置に
    データを格納する少なくとも1つのストア命令を処理す
    るかどうかを示すような少なくとも1つのフィールドを
    含むステップと、 前記処理ユニットによって処理される第1の順不同ロー
    ド命令に対応する項目E1を識別するステップであっ
    て、前記項目E1が前記メモリ・サブシステムの領域R
    1に対応し、前記第1の順不同ロード命令が前記領域R
    1内の位置からデータをロードするステップと、 前記第1の順不同ロード命令の前記元の位置に達する
    と、前記プロセッサ・ユニットが前記領域R1内の位置
    にデータを格納する少なくとも1つのストア命令を処理
    することを項目E1の前記少なくとも1つのフィールド
    が示す場合に回復シーケンスを実行するように前記プロ
    セッサ・ユニットを制御するステップとを含む方法。
  24. 【請求項24】前記項目Eの前記少なくとも1つのフィ
    ールドが、 i)前記プロセッサ・ユニットが、前記領域R内の位置
    からデータをロードする少なくとも1つの順不同ロード
    命令をディスパッチしたかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
    にデータを格納する少なくとも1つのストア命令をディ
    スパッチしたかどうかを示し、 前記制御ステップが、前記プロセッサ・ユニットが前記
    少なくとも1つのストア命令をディスパッチしたことを
    前記項目E1の前記少なくとも1つのフィールドが示す
    場合に回復シーケンスを実行するように前記プロセッサ
    ・ユニットを制御することを特徴とする、請求項23に
    記載の方法。
  25. 【請求項25】前記項目Eの前記少なくとも1つのフィ
    ールドが、 i)前記プロセッサ・ユニットが、前記領域R内の位置
    からデータをロードする少なくとも1つの順不同ロード
    命令を実行したかどうか、および ii)前記プロセッサ・ユニットが、前記領域R内の位置
    にデータを格納する少なくとも1つのストア命令を実行
    したかどうかを示し、 前記制御ステップが、前記プロセッサ・ユニットが前記
    少なくとも1つのストア命令を実行したことを前記項目
    E1の前記少なくとも1つのフィールドが示す場合に回
    復シーケンスを実行するように前記プロセッサ・ユニッ
    トを制御することを特徴とする、請求項23に記載の方
    法。
  26. 【請求項26】各領域が複数のメモリ位置に対応するこ
    とを特徴とする、請求項23に記載の方法。
  27. 【請求項27】前記プロセッサ・ユニットが実行するた
    めに少なくとも1つの順不同ロード命令を選択するステ
    ップであって、前記順不同ロード命令がそこからデータ
    を読み取る前記メモリ・サブシステム内の位置LLを識
    別し、前記位置LLが前記メモリ・サブシステムの領域
    LR内にあるステップと、 選択した各順不同ロード命令ごとに、 前記領域LRに対応する前記テーブルの項目LEを識別
    するステップと、 前記領域LR内の位置からデータをロードする少なくと
    も1つの順不同ロード命令が前記プロセッサ・ユニット
    によって処理されることを示すように前記項目LEの前
    記少なくとも1つのフィールドを更新するステップとを
    さらに含むことを特徴とする、請求項23に記載の方
    法。
  28. 【請求項28】前記プロセッサ・ユニットが実行するた
    めに少なくとも1つのストア命令を選択するステップで
    あって、前記少なくとも1つのストア命令がそこにデー
    タを格納する前記メモリ・サブシステム内の位置SLを
    識別し、前記位置SLが前記メモリ・サブシステムの領
    域SR内にあるステップと、 選択した各ストア命令ごとに、 前記領域SRに対応する前記テーブルの項目SEを識別
    するステップと、 前記領域SR内の位置にデータを格納する少なくとも1
    つのストア命令が前記プロセッサ・ユニットによって処
    理されることを前記項目SEの前記少なくとも1つのフ
    ィールドを更新するステップとをさらに含むことを特徴
    とする、請求項23に記載の方法。
  29. 【請求項29】前記少なくとも1つの順不同ロード命令
    と前記回復シーケンスがプログラムの実行前に生成さ
    れ、 前記順不同ロード命令が、前記順不同ロード命令内の所
    定のコードによって識別され、 前記順不同ロード命令の元の位置が、プログラムの実行
    前に生成される所定の命令によって識別され、 前記順不同ロード命令が、前記所定のコードのデコード
    に応答して識別され、 前記順不同ロード命令の前記元の位置が、前記所定の命
    令のデコードに応答して識別され、 前記制御論理回路が分岐命令およびプログラム・トラッ
    プのうちの1つによって前記回復シーケンスに実行制御
    を転送することを特徴とする、請求項23に記載の方
    法。
  30. 【請求項30】前記少なくとも1つの順不同ロード命令
    が、前記プログラムの実行中に生成され、前記命令に付
    加される所定のフィールドによってマークが付けられ、
    前記制御ステップが、 a)前記順不同ロード命令の影響を取り消し、 b)前記順不同ロード命令後に順不同で実行された他の
    命令の影響を取り消し、 c)前記順不同ロード命令の前記元の位置から実行を再
    開するプログラム例外を生成することを特徴とする、請
    求項23に記載の方法。
JP10053198A 1997-03-25 1998-03-05 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置 Expired - Lifetime JP2938426B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/827016 1997-03-25
US08/827,016 US5918005A (en) 1997-03-25 1997-03-25 Apparatus region-based detection of interference among reordered memory operations in a processor

Publications (2)

Publication Number Publication Date
JPH10269080A true JPH10269080A (ja) 1998-10-09
JP2938426B2 JP2938426B2 (ja) 1999-08-23

Family

ID=25248112

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10053198A Expired - Lifetime JP2938426B2 (ja) 1997-03-25 1998-03-05 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置

Country Status (5)

Country Link
US (1) US5918005A (ja)
JP (1) JP2938426B2 (ja)
BR (1) BR9800961A (ja)
GB (1) GB2324181B (ja)
SG (1) SG71088A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008293378A (ja) * 2007-05-25 2008-12-04 Panasonic Corp プログラム書き換え装置

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6433787B1 (en) * 1998-11-23 2002-08-13 Nicholas J. N. Murphy Dynamic write-order organizer
US7089404B1 (en) * 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US7634635B1 (en) 1999-06-14 2009-12-15 Brian Holscher Systems and methods for reordering processor instructions
US6748589B1 (en) 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US6535908B1 (en) * 1999-11-16 2003-03-18 William J. Johnson System and method for call record search and call record verification for network certification
DE10065752A1 (de) * 2000-12-29 2002-07-18 Fujitsu Siemens Computers Gmbh Verfahren zur Steuerung eines Computersystems, Computersystem mit einer Ausführungsumgebung und Computerprogrammprodukt
DE10065754B4 (de) * 2000-12-29 2004-03-04 Fujitsu Siemens Computers Gmbh Verfahren zur Steuerung eines Computersystems, Computersystem mit einer Ausführungsumgebung und Computerprogrammprodukt
DE10065750A1 (de) * 2000-12-29 2002-07-18 Fujitsu Siemens Computers Gmbh Verfahren zur Steuerung eines Computersystems, Computersystem mit einer Ausführungsumgebung und Computerprogrammprodukt
US6862676B1 (en) * 2001-01-16 2005-03-01 Sun Microsystems, Inc. Superscalar processor having content addressable memory structures for determining dependencies
US20030140337A1 (en) * 2001-12-21 2003-07-24 Celoxica Ltd. System, method, and article of manufacture for data transfer reporting for an application
US7269693B2 (en) * 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring stores to support transactional program execution
US7269694B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring loads to support transactional program execution
US20040163082A1 (en) * 2003-02-13 2004-08-19 Marc Tremblay Commit instruction to support transactional program execution
US7269717B2 (en) * 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7519796B1 (en) * 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US8516444B2 (en) 2006-02-23 2013-08-20 International Business Machines Corporation Debugging a high performance computing program
US7796527B2 (en) * 2006-04-13 2010-09-14 International Business Machines Corporation Computer hardware fault administration
US7516310B2 (en) * 2006-06-08 2009-04-07 International Business Machines Corporation Method to reduce the number of times in-flight loads are searched by store instructions in a multi-threaded processor
US20080162889A1 (en) * 2007-01-03 2008-07-03 International Business Machines Corporation Method and apparatus for implementing efficient data dependence tracking for multiprocessor architectures
US20080184012A1 (en) * 2007-01-30 2008-07-31 Nema Labs Ab Speculative Throughput Computing
US9330230B2 (en) * 2007-04-19 2016-05-03 International Business Machines Corporation Validating a cabling topology in a distributed computing system
US7769986B2 (en) * 2007-05-01 2010-08-03 International Business Machines Corporation Method and apparatus for register renaming
US7831866B2 (en) * 2007-08-02 2010-11-09 International Business Machines Corporation Link failure detection in a parallel computer
US8127115B2 (en) * 2009-04-03 2012-02-28 International Business Machines Corporation Group formation with multiple taken branches per group
GB2469299B (en) 2009-04-07 2011-02-16 Imagination Tech Ltd Ensuring consistency between a data cache and a main memory
US9262171B2 (en) * 2009-06-30 2016-02-16 Oracle America, Inc. Dependency matrix for the determination of load dependencies
US8417897B2 (en) * 2010-03-31 2013-04-09 Oracle International Corporation System and method for providing locale-based optimizations in a transactional memory
US20120117335A1 (en) * 2010-11-10 2012-05-10 Advanced Micro Devices, Inc. Load ordering queue
US9268596B2 (en) 2012-02-02 2016-02-23 Intel Corparation Instruction and logic to test transactional execution status
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US10095490B2 (en) 2016-07-28 2018-10-09 International Business Machines Corporation System, method and apparatus for preventing vulnerable interleavings in web applications at compile time
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10552164B2 (en) 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10489382B2 (en) 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10540184B2 (en) 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10649688B1 (en) 2018-11-01 2020-05-12 Intel Corporation Precise longitudinal monitoring of memory operations
US10983797B2 (en) * 2019-05-28 2021-04-20 International Business Machines Corporation Program instruction scheduling

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2786574B2 (ja) * 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
US5420990A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Mechanism for enforcing the correct order of instruction execution
US5421022A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
US5689712A (en) * 1994-07-27 1997-11-18 International Business Machines Corporation Profile-based optimizing postprocessors for data references
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
US5625835A (en) * 1995-05-10 1997-04-29 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008293378A (ja) * 2007-05-25 2008-12-04 Panasonic Corp プログラム書き換え装置
US8286145B2 (en) 2007-05-25 2012-10-09 Panasonic Corporation Program re-writing apparatus

Also Published As

Publication number Publication date
US5918005A (en) 1999-06-29
GB9803608D0 (en) 1998-04-15
BR9800961A (pt) 1999-10-19
GB2324181A (en) 1998-10-14
JP2938426B2 (ja) 1999-08-23
HK1016291A1 (en) 1999-10-29
SG71088A1 (en) 2000-03-21
GB2324181B (en) 2001-11-21

Similar Documents

Publication Publication Date Title
JP2938426B2 (ja) 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置
US5758051A (en) Method and apparatus for reordering memory operations in a processor
US6189088B1 (en) Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
JP2597811B2 (ja) データ処理システム
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
US5887161A (en) Issuing instructions in a processor supporting out-of-order execution
US6505293B1 (en) Register renaming to optimize identical register values
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
EP0742512A2 (en) Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
US20080091928A1 (en) Branch lookahead prefetch for microprocessors
US9354874B2 (en) Scalable decode-time instruction sequence optimization of dependent instructions
JPH1091455A (ja) キャッシュ・ヒット/ミスにおける分岐
JPH06214799A (ja) コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
US6772317B2 (en) Method and apparatus for optimizing load memory accesses
JPH10283180A (ja) プロセッサ内で命令をディスパッチする方法および装置
US6219778B1 (en) Apparatus for generating out-of-order results and out-of-order condition codes in a processor
WO2014090085A1 (en) Branch-free condition evaluation
WO2014090091A1 (en) Tracking multiple conditions in a general purpose register and instruction therefor
US6381691B1 (en) Method and apparatus for reordering memory operations along multiple execution paths in a processor
JP2001229022A (ja) コンピュータ処理システムにおけるスタック・リファレンスのリネーム方法およびそのプログラム記憶装置
US7979637B2 (en) Processor and method for executing data transfer process
KR100864890B1 (ko) 데이터 처리장치에서의 소스 레지스터 록킹
JPH09152973A (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US5946468A (en) Reorder buffer having an improved future file for storing speculative instruction execution results
US5915110A (en) Branch misprediction recovery in a reorder buffer having a future file

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19990518