JP2000222207A - コンピュ―タ処理システムにおけるロ―ド動作を順序変更する方法および装置 - Google Patents

コンピュ―タ処理システムにおけるロ―ド動作を順序変更する方法および装置

Info

Publication number
JP2000222207A
JP2000222207A JP2000026002A JP2000026002A JP2000222207A JP 2000222207 A JP2000222207 A JP 2000222207A JP 2000026002 A JP2000026002 A JP 2000026002A JP 2000026002 A JP2000026002 A JP 2000026002A JP 2000222207 A JP2000222207 A JP 2000222207A
Authority
JP
Japan
Prior art keywords
instruction
order
load
data
address
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
JP2000026002A
Other languages
English (en)
Other versions
JP3488162B2 (ja
Inventor
K Gusuwindo Michael
マイケル・ケー・グスウィンド
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 JP2000222207A publication Critical patent/JP2000222207A/ja
Application granted granted Critical
Publication of JP3488162B2 publication Critical patent/JP3488162B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 (修正有) 【課題】コンピュータ処理システムにおけるロード動作
を順序変更する方法および装置を提供する。 【解決手段】次の命令を選択し、命令シーケンス中のよ
り早い位置に移動し、非選択命令が以前に選択された命
令を越えて移動されており、非選択命令がデータを読み
出すアドレスが、選択された命令がデータを読み出すア
ドレスと同じである場合、非選択命令によって以前に読
み出されたデータを選択された命令にパスするバイパス
・シーケンスを設け、非選択命令による将来の参照のた
めに、選択された命令のレコード格納するための機構を
追加する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にコンピュー
タ処理システムに関し、特に、コンピュータ・プログラ
ムにおけるロード動作を順序変更する方法および装置に
関する。本発明は、プログラムが生成されるときに順序
変更される動作(静的順序変更)および実行時に順序変
更される動作(動的順序変更)に適用可能である。
【0002】
【従来の技術】現在の高性能プロセッサは、プログラム
における命令レベルの並列性を利用するため(すなわ
ち、一度に二つ以上の命令を実行するため)、スーパス
ケーラ技術、スーパパイプライニング技術および/また
はVLIW(長大命令語)技術に依存する。一般に、こ
れらのプロセッサは、多数の機能装置を含み、命令シー
ケンスを実行し、1サイクルあたり二つ以上の命令を記
憶から取り出すことができ、従属性および資源可使性に
応じて1サイクルあたり二つ以上の命令を実行にディス
パッチすることができる。
【0003】所与の時点でディスパッチされる命令をプ
ロセッサが選択するところの命令のプールは、アウトオ
ブオーダ実行の使用によって拡大される。アウトオブオ
ーダ実行とは、後から現れる動作が、その動作によって
要求される資源が使用中でないならば先に実行されるよ
う、命令シーケンス中の動作を順序変更する技術であ
る。したがって、アウトオブオーダ実行は、多数の機能
装置の可使性を利し、さもなくばアイドル状態になるで
あろう資源を活用することにより、プログラム全体の実
行時間を短縮する。動作の実行の順序変更は、プログラ
ムの機能的挙動が、命令を元の順序で実行したならば得
られるであろうものと同じになるよう、それらの動作に
よって生じる結果をも順序変更することを要する。
【0004】記憶関連の動作の場合、記憶ロード動作が
記憶からデータを読み取り、それをプロセッサのレジス
タにロードし、ロードしたデータに従属する動作のシー
ケンスを頻繁に実行する。したがって、アイドル状態の
資源を使用することに加えて、記憶ロード動作の早めの
(アウトオブオーダ)開始が、潜在的なキャッシュ・ミ
スを含む、記憶にアクセスする際の遅延を隠すことがで
きる。
【0005】一般に、アウトオブオーダ実行および結果
の順序変更を実現するのには二つの基本的な手法があ
る。すなわち、動的順序変更および静的順序変更であ
る。動的順序変更では、命令は実行時に解析され、命令
および結果はハードウェア中で順序変更される。静的順
序変更では、プログラムが生成されるとき、コンパイラ
/プログラマが命令およびそれらの命令によって生じる
結果を解析し、順序変更する。したがって、順序変更の
タスクはソフトウェアによって達成される。これら二つ
の手法は、組み合わせて実現することもできる。
【0006】一般にはアウトオブオーダ実行、特には記
憶間動作をサポートするための有意な研究が実施されて
きたが、そのような研究は主としてユニプロセッサ実行
に集中してきた。これは逆に、1個のプロセッサ上で実
行するように設計された一つの命令ストリームにおける
ロードおよび(同期)ストア動作の間の順序付けに焦点
を置いていた。本発明は、多重処理環境で典型的に見ら
れる非同期記憶参照および1個の記憶セルに対する多数
の読み取り動作間の順序変更に対するそれらの影響の問
題を扱う。このような変換(すなわち順序変更)は、厳
密なユニプロセッサ環境では安全であるが、マルチプロ
セッサ環境は、さらなる問題点、たとえば、別個の未知
の命令ストリームを有する別のプロセッサによって書き
込みが実施される危険性を提起する。
【0007】予測可能で反復可能なプログラムの計算を
達成するため「シーケンス整合性」の要件が、L. Lamp
ortによる文献「How to Make a Multiprocessor t
hatCorrectly Executes Multiprocess Programs」IE
EE Transactions on Computers, C-28(9), pp. 6
90-91(1979年9月)に記載されている。Lamportに
よるこの文献は、マルチプロセッサ・システムを「実行
の結果が、すべのプロセッサの動作を順序どおりに実行
したときと同じであり、個々のプロセッサの動作が、そ
のプログラムによって指定された順序でこのシーケンス
中に現れる」ならば、シーケンス整合したものと定義し
ている。静的な投機実行の場合、順序変更されたプログ
ラム・テキストではなく、元の論理的プログラム・テキ
ストの順序が権威を有し、コンパイラおよびハードウェ
ア実現形態が共同してその元の順序に等しい実行を生成
しなければならない。
【0008】システム中の多数のプロセッサの間のコヒ
ーレンス・プロトコルを簡素化しながら適切な性能を達
成するためには、上述した厳密にシーケンス整合した順
序のいくらかの緩和が可能である。許容しうるタイプの
順序変更は、特定の実現形態によって保証される記憶整
合性モデルに依存する。現在使用され、提唱されている
整合性モデルおよびそれらの特性の概要が、S. Adveお
よびK. Gharachorlooによる文献「Shared Memory Co
nsistency Models: A Tutorial」TechnicalReport
9512, Dept. of Electrical and Computer Engin
eering, Rice University, Houston, Tx(1995
年9月)に記載されている。
【0009】これらすべての緩和モデルにおける基本的
要件は、記憶コヒーレンスを達成するための書き込み直
列化、すなわち、同じ場所に対するすべての書き込みが
何らかの順序で直列化され、いかなるプロセッサに関し
てもその順序で実行されるということである。これは、
Lamportによって記載された、各記憶セルを記憶モジュ
ールとみなすシーケンス整合性に等しい。われわれは、
1個の記憶セルに関するシーケンス整合性を書き込み直
列とみなして、より大きな記憶モジュールの場合のシー
ケンス整合性とは区別する。記憶コヒーレンスは、同じ
記憶場所に対する連続的なロード動作がその記憶場所で
提示されるデータ項目の弱昇順を保存することを保証す
ることによって達成することができる。したがって、ロ
ード動作のシーケンスでは、いかなるロードも、その前
のロードと同じ、またはそれよりも後のデータ項目しか
提示することができない。
【0010】たとえば、第二のプロセッサによって所与
の記憶場所に書き込まれるデータ項目d1、d2、d
3、d4、d5、d6などのシーケンスを考えてみよ
う。第一のプロセッサによるその記憶場所からの連続的
なロード動作は、第一のロード動作によって戻されたも
のと同じデータ項目またはその記憶セル中に存在する、
より後の項目を提示することができる。したがって、第
一のロード動作がデータ項目d2を戻したならば、第二
のロード動作は、データ項目d2、d3、d4などを戻
すことはできるが、データ項目d1を戻すことはできな
い。あるいはまた、第一のロード動作がデータ項目d4
を戻したならば、第二のロード動作は、データ項目d
4、d5、d6などを戻すことはできるが、データ項目
d1、d2またはd3を戻すことはできない。
【0011】直列実行では、この問題が、順方向に進む
時間の性質によって自動的に解決されることは明らかで
ある。しかし、アウトオブオーダ・プロセッサに関して
は、同じ記憶場所にアクセスするロード動作がアウトオ
ブオーダになって、静的に後のロード命令が、より後の
時点で実行されるデータ項目を、データ項目のシーケン
スの中でその静的に先行するロード命令よりも先に読み
出すことになる。
【0012】動作を順序変更する能力を制限する一つの
要因は、曖昧な記憶参照である。これは、記憶ロード動
作が命令シーケンス中の別の記憶ロード動作よりも後で
現れ、アウトオブオーダ動作によってアクセスされる記
憶場所とインオーダ・ロード動作によってアクセスされ
る記憶場所とが異なるかどうかを前もって決定すること
ができない場合に当てはまる。たとえば、以下のコード
断片を考えてみよう。
【0013】s=*(X+a*4+5) u=s+4 t=*Y v=t+8* は、指定されたアドレスに対する記憶アクセスを示
し、よって、*Yは、そのアドレスがYに含まれる記憶
場所を示し、*(X+a*4+5)は、そのアドレスが式
X+a*4+5によって指定される記憶場所を示す。
【0014】aがプロセッサのレジスタr1に格納され
た値であり、XおよびYがレジスタr2およびr9の中
にあり、s、t、uおよびvがそれぞれレジスタr4、
r5、r6およびr7に割り当てられていると仮定する
と、上記コード断片を以下の命令シーケンスによって表
現することができる(命令の名前の後の最初のレジスタ
が標的レジスタであり、残りのレジスタはオペランドで
ある)。
【0015】 mul r10,r1,4 ;r10=a*4 add r11,r10,5 ;r11=a*4+5 add r12,r11,r2 ;r12=X+a*4+5 load r4,(r12) ;s=*(X+a*4+5) add r6,r4,4 ;u=s+4 load r5,(r9) ;t=*Y add r7,r5,8 ;v=t+8
【0016】X+a*4+5およびYが異なるアドレス
を参照していると判断することができるならば、並列実
行のために四つの式をスケジュールして、たとえば以下
のシーケンスを出すことができる(記号||は並列実行を
表す)。
【0017】 mul r10,r1,4 || load r5,(r9) add r11,r10,5 || ... add r12,r11,2 || add r7,r5,8 load r4,(r12) || ... ... || ... add r6,r4,4 || ...
【0018】2個の実行装置を有する機械では、上記シ
ーケンスは、完了するのに6サイクルを要する(ロード
が2サイクルを要し、他の各動作が1サイクルずつ要す
ると仮定)。
【0019】他方、X+a*4+5およびYが常に異な
ると判断することができない(すなわち、アドレスが曖
昧である)ならば、二つの式を元の順序でスケジュール
しなければならず、完了するのに9サイクルを要する
(同じく、ロードが2サイクルを要し、他の各動作が1
サイクルずつ要すると仮定)。
【0020】両方のロード・アドレスが同じ記憶場所を
参照し、その記憶場所が、d1の後にd2が続くデータ
項目シーケンスを受けるならば、変数sおよびtに関し
て全部で四つの読み取りアクセスの組み合わせが可能で
ある。これらのうち、以下に示す最初三つの組み合わせ
は書み込み直列化されているが、四番目の組み合わせは
書き込み直列化の要件を満たしていない。
【0021】 書き込み直列 書き込み直列 書き込み直列 非書き込み直列 第一のロード動作(s) d1 d1 d2 d2 第二のロード動作(t) d1 d2 d2 d1
【0022】以下の例で、両方のロード動作が同じ記憶
場所を参照するならば、順序変更された命令のスキーム
が、変数sの後に変数tを読み出す実際のユーザ・プロ
グラムをして、後のデータ項目d2が先のデータ項目に
先行するシーケンスを見させることがわかる。これは、
マルチプロセッサの同期化、すなわちDMAデバイスと
の通信に関して有意な問題である。
【0023】第二のプロセッサが、sおよびtへのロー
ドによって参照される記憶場所にデータd1を書き込
む。 mul r10,r1,4 || load r5,(r9) add r11,r10,5 || ... 第二のプロセッサがデータをd2に変更する。 add r12,r11,r2 || add r7,r5,8 load r4,(r12) || ... ... || ... add r6,r4,4 || ...
【0024】これは、正味には、d2をsにロードし、
d1をtにロードする効果を有し、それは、第二のプロ
セッサによって両方のロード動作によってアクセスされ
る記憶場所に実際に格納された、書き込み直列化された
数値のシーケンスと整合しない。
【0025】上記の例は不定形的である。記憶参照にお
ける曖昧さが、そうでなければ並列に実行することがで
きるであろう動作の逐次実行を強要することにより、シ
ステム性能をひどく低下させる。しかし、ユーザ・プロ
グラムによって認知されるロード結果値のシーケンスが
書き込み直列化される限り、そのような命令の直列化を
避けることができる(すなわち、論理的に後続するロー
ド動作を論理的に先行するロード動作よりも先に実行す
ることができる)。したがって、ロード動作のデータ・
シーケンスがそれらの元のプログラム順序で記憶中の対
応するデータ・シーケンスと整合している限り、インオ
ーダ・ロード動作よりも先に実行されるアウトオブオー
ダ動作は有効である(すなわち、後続する各ロードが、
論理的に先行するすべての読み取り動作と同じ値または
それらに対して時系列的に後で生じる値を返す)。その
うえ、これらの値が整合しているならば、アウトオブオ
ーダでロードされたデータに従属する動作もまた、アウ
トオブオーダで実行することができる。他方、これらの
値が整合していないならば、アウトオブオーダでロード
されたデータおよびそれから誘導される結果は無効であ
り、インオーダ点でロード動作および対応する従属動作
を再び実行しなければならない。
【0026】プロセッサによる曖昧な参照を伴う記憶動
作を順序変更する問題の解消に向けて種々の試みがなさ
れてきた。これらのスキームの大部分は、命令が静的に
(すなわち、プログラムが生成されるとき)順序変更さ
れると仮定している。これらのスキームはすべて、アド
レス比較またはロード結果値比較のいずれかによる干渉
の検出に依存する。干渉が検出されるならば、インオー
ダ・ロード動作によりも前に実行されるようにスケジュ
ールされたアウトオブオーダ・ロード動作(および、場
合によっては、すでに実行されたロードに従属する動
作)を、その元のインオーダ点で再実行しなければなら
ない。すなわち、これらの機構が、すべての干渉するロ
ード動作をインオーダで再実行することにより、書き込
み直列化を執行する。干渉検出および再実行は、余計な
命令(ソフトウェアベースのスキーム)またはソフトウ
ェア支援を要することもある専用ハードウェア資源(ハ
ードウェアベースのスキーム)のいずれかによって実行
される。
【0027】既存の機構は、アドレスが重複するときの
正しさを保証するため、先に実行されたロード命令(す
なわち、アウトオブオーダ・ロード命令)が別のロード
命令(すなわち、インオーダ・ロード命令)に干渉した
ことを認識し、先に実行されたアウトオブオーダ・ロー
ド命令およびすでに実行されたロード命令(すなわち、
アウトオブオーダ・ロード命令)に従属する命令を再実
行する。
【0028】たとえば、先に記したコード断片は、以下
のように変形することができる。
【0029】
【0030】静的順序変更の場合、コンパイラ/プログ
ラマによって生成される命令の順序は、提案される種々
のスキームの間で異なる。普通、別のロード命令を越え
て移動されたロード命令は、ロード動作を実行し、他の
ロード命令によって使用されるアドレスを監視し始める
新たな命令(または命令シーケンス)によって取って代
わられる。移動されたロード命令が元々位置していた場
所を示し、干渉するストア動作の監視の範囲の終わりを
決定するためには、別の命令(またはアウトオブオーダ
・ロード命令中の命令フィールド)が使用される。
【0031】動的順序変更の場合、種々のロード命令
は、プログラム順序で、すなわち、第一のロード命令の
後に第二のロード命令が続く順序でプロセッサに提示さ
れる。プロセッサが命令を順序変更し、静的順序変更の
場合と同様、プロセッサは、第一のロード命令が、第二
の、すでに実行されたアウトオブオーダ・ロード動作に
よって読み出された記憶場所にロードするかどうかを検
出することができなければならない。たとえば、プロセ
ッサは、そのロード命令をアウトオブオーダ動作として
印し、アウトオブオーダ動作と他のロード動作との干渉
を検出するための機構を準備し、干渉が検出されたとき
プロセッサの状態を回復し、アウトオブオーダ・ロード
命令およびそのアウトオブオーダ・ロード命令に従属す
る他の命令を再実行しなければならない。
【0032】記憶ロード動作を順序変更するときマルチ
プロセッサ環境で非同期記憶動作を扱う関連技術の概要
を以下に記載する。
【0033】干渉の検出および先に実行されたアウトオ
ブオーダ・ロード命令の再発行に基づくアウトオブオー
ダ・ロード動作のサポート機構が、1997年3月31
日に出願された「Support for Out-Of-Order Execut
ion of Loads and Stores in a Processor」と
題する、本明細書の譲受人に譲渡される米国特許出願第
08/829,669号に開示されている。この機構
は、各アウトオブオーダ・ロード動作のアドレスを、そ
のアウトオブオーダ・ロードの元のプログラム位置に達
するまで、待ち行列(「ロードヒットロード待ち行
列」)に入れておく。他の(インオーダ)ロード動作
が、ロードヒットロード待ち行列中の項目に対してそれ
らのアドレスを検証し、干渉が検出されるならば、干渉
するアウトオブオーダ・ロード動作(およびすべての従
属動作)がプロセッサによって再発行される。
【0034】代替の検出機構が、ロード・データ検証に
基づくロード/ストア干渉検出に関連して、1998年
5月26日に発行された「Method and Apparatus fo
r Reordering Memory Operations in a Processo
r」と題する、本明細書の譲受人に譲渡された米国特許
第5,758,051号に記載されている。この手法で
は、アウトオブオーダ・ロード動作によってアクセスさ
れるデータ項目をインオーダで読み取り、そのインオー
ダ・ロード動作の結果をアウトオブオーダ結果と比較す
る。二つの値が同一であるならば、検出可能な干渉は起
こっておらず、プログラムは実行を続ける。しかし、二
つの値が同一ではないならば、インオーダ・ロード動作
によって返された値を使用して、すべての従属命令を再
実行する。ロード検証に基づく干渉検出の場合、干渉を
検出することができなければ、干渉は存在しないと推定
する。この手法は、干渉を監視するために必要なハード
ウェアの量および再実行の回数を減らすが、アウトオブ
オーダで移動されるロード動作ごとに第二のインオーダ
・ロードを実行するためのさらなる帯域幅を要する。
【0035】1997年4月29日に発行された「Meth
od and Apparatus for Reordering Memory Opera
tions in a Superscalar or Very Long Instruc
tionWord Processor」と題する、本明細書の譲受人に
譲渡された米国特許第5,625,835号は、記憶動
作の順序変更を記憶動作の投機実行と組み合わせてい
る。記憶動作の順序変更は、 ・命令レベルの並列性を利用するための、コンパイラに
よるコードの静的順序変更、 ・記憶参照における競合を検出し、アウトオブオーダで
ロードされるデータを操作するための、特別なハードウ
ェア・サポート、および ・アウトオブオーダでロードされたデータに対して演算
を加え、競合の検出から回復するためのコンパイラ生成
コードに依存する。
【0036】特別なハードウェア・サポートは、アウト
オブオーダで実行されるロード動作の結果の宛先となり
うるレジスタごとのアドレス・レジスタと、そのような
各アドレス・レジスタと対応する比較器とからなる。デ
ータをアウトオブオーダでロードし、そのようなデータ
およびそれから導出される他の値をプログラム中のイン
オーダ点で「コミット」するために「特別な命令」を使
用する。各アウトオブオーダ・ロードは、対応するアド
レス・レジスタの中に、ロードしたデータの記憶アドレ
スおよびサイズを記録する。各ストア動作が、すべての
アドレス・レジスタの内容に対する(アドレス、サイ
ズ)組の比較を起動する。マルチプロセッサ環境では、
記憶明瞭化の役割を担う処理装置が、他のプロセッサに
よって発行されるすべての非同期ストア要求を受け、そ
のようなストア要求に干渉するすべてのアウトオブオー
ダ・ロード動作を無効にする。たとえば、対応するレジ
スタ中の(アドレス、サイズ)組が別のレジスタ中の別
の(アドレス、サイズ)組にマッチするならば、その対
応するアドレス・レジスタを無効と印す。インオーダ点
で特別なコミット命令を実行して、対応するアドレス・
レジスタが有効であるかどうかを検査し、有効であるな
らば、アウトオブオーダでロードされたデータと記憶中
のデータとはコヒーレントである。他方、アドレス・レ
ジスタが無効であるならば、アウトオブオーダでロード
されたデータと記憶内容とはコヒーレントではない。し
たがって、ロード動作およびそれに従属する他の動作を
再実行しなければならない。この時点でトラップが呼び
出されて、実行制御を、コンパイラによって生成される
回復コードに移し、それがロード動作および従属動作を
再実行する。
【0037】
【発明が解決しようとする課題】現在の方略(静的およ
び動的なアウトオブオーダ実行のためのもの)は、動作
のアウトオブオーダ実行と干渉を検出するためのスキー
ム(ソフトウェアまたはハードウェアで実現される)と
を組み合わせることにより、書き込み直列化を扱う。ひ
とたび干渉が検出されたならば、これらのスキームは、
プロセッサをして、干渉するアウトオブオーダ・ロード
動作およびすべての従属動作を再実行させて、干渉する
命令をインオーダで実行することによって書き込み直列
な挙動を執行する。
【0038】これが貴重な発行帯域幅を消費し、全体で
より少ない数の実行しか完了させることができなくな
る。加えて、コードを再実行するための機構を設けなけ
ればならない。静的スケジューリングの場合、検査コー
ド、アウトオブオーダ・ロード命令およびその従属コー
ドを含むコード断片が再びプログラム・テキストに配置
され、そのような配置が暗示するすべてのコード・サイ
ズおよび命令キャッシュ性能のペナルティを伴う。ある
いはまた、動的実行の場合には、命令は、再発行バッフ
ァ中に維持され、再びディスパッチされる。
【0039】以下のコード断片は、典型的なコンパイラ
によって生成されるような*Yに対するアウトオブオー
ダ・アクセスで、静的に生成されるスケジュールにおい
て同じコードを二度、プログラム・コード中に配置する
方法を示す(複製コード部を「*」で示し、検査コード
を「+」で示す)。
【0040】 t=*Y v=t+8 s=*(X+a*4+5) u=s+4 if(Y=(X+a*4+5)) /*アドレスを比較*/ + t=(*Y)* v=t+8* endif +
【0041】この例からわかるように、静的コード生成
の場合、コード・サイズのペナルティは非常に厳しい。
【0042】動的に生成される命令スケジュールを使用
するプロセッサ(たとえばスーパスケーラ・プロセッ
サ)に関しては、これらのプロセッサは、命令を再実行
する決定を発行バッファに送り、リネームされたレジス
タ・テーブル中の以前の項目を無効にするための論理を
要する。
【0043】干渉が検出されると、両機構が先に実行さ
れた命令を再実行しなければならないため、達成可能な
性能に対するさらなるペナルティが生じる。したがっ
て、いずれの手法も、他の命令の実行に使用することが
できたであろう発行スロットを使用することによって命
令ストリームを再実行しなければならないことから、性
能の低下を被る。ここまで論じたことから、順序変更さ
れた記憶読み取り参照の場合に干渉を修正するのに、再
実行(すなわち、ひとたび違反状況が検出されるなら、
ロード動作およびすべての従属動作を再実行すること)
が効率的な方法ではないということになる。
【0044】
【課題を解決するための手段】上述した課題ならびに関
連する他の従来技術の課題は、本発明、すなわち、プロ
セッサにおける記憶動作を順序変更する方法および装置
によって解決される。
【0045】本発明の一つの態様で、アウトオブオーダ
実行を実現するコンピュータ処理システムで命令を実行
のためにスケジュールする方法は、次の命令を選択し、
命令シーケンス中のその現在位置からより早い位置に移
動するステップと、選択命令が読み取りアクセスのため
に記憶場所を参照するかもしれないかどうかを決定する
ステップと、選択命令が読み取りアクセスのために記憶
場所を参照するかもしれない場合、読み取りアクセスの
ために記憶場所を曖昧に参照するかもしれない非選択命
令が以前に選択命令を越えて移動されかどうかを決定す
るステップと、非選択命令が以前に選択命令を越えて移
動されており、非選択命令がデータを読み取りアクセス
したところの記憶場所のアドレスが、選択命令がデータ
を読み取りアクセスするところの記憶場所のアドレスと
同じである場合、選択命令の実行中に実行される、非選
択命令によって以前に読み取りアクセスされたデータを
選択命令にパスするバイパス・シーケンスを設けるステ
ップと、選択命令が読み取りアクセスのために記憶場所
を参照するかもしれない場合、選択命令が以前に非選択
命令を越えて移動されたかどうかを決定するステップ
と、非選択命令による将来の参照のために、選択命令の
レコードを格納するための機構を追加するステップと、
を含む。
【0046】本発明のもう一つの態様では、命令シーケ
ンスが少なくとも一つの処理装置によって実行され、多
数の読み取りアクセスがアウトオブオーダ・ロード命令
および少なくとも一つの他のロード命令によって起動さ
れるコンピュータ処理システム中の記憶場所からの多数
の読み取りアクセスの間に得られるデータ値の間の整合
性を執行する方法は、アウトオブオーダ・ロード命令を
実行して少なくとも一つの処理装置を制御して、アウト
オブオーダ・ロード命令によって識別される記憶場所か
ら第一のデータを少なくとも読み取りアクセスさせるス
テップと、少なくとも一つの他のロード命令が使用する
ための、第一のデータがロードされたところの記憶場所
のアドレスと、第一のデータに対応する値とを含む、ア
ウトオブオーダ・ロード命令のレコードを生成するステ
ップと、少なくとも一つの他のロード命令を実行し、少
なくとも一つの他のロード命令の実行中に少なくとも一
つの処理装置を制御して、アウトオブオーダ命令が第一
のデータをロードしたところの記憶場所のアドレスが、
少なくとも一つの他のロード命令がデータをロードする
ところのアドレスと重複する、または同じであるかどう
かを決定するステップと、アドレスが同じである、また
は重複する場合、それぞれ第一のデータまたはその一部
をレコードから少なくとも一つの他のロード命令にパス
するステップと、を実行させるステップと、を含む。
【0047】本発明のこれらの態様ならびに他の態様、
特徴および利点は、添付図面と関連させて読まれる好ま
しい実施態様の以下の詳細な説明から理解されるであろ
う。
【0048】
【発明の実施の形態】本発明は、コンピュータ処理シス
テムにおけるロード動作を順序変更する方法および装置
に関する。このようなコンピュータ処理システムでは、
命令シーケンスは、少なくとも一つの処理装置によって
実行されるため、記憶に格納される。本発明は、プログ
ラムが生成されるときに順序変更される動作(静的順序
変更)および実行時に順序変更される動作(動的順序変
更)に適用可能である。さらに、本発明は、ソフトウェ
アおよび/またはハードウェアベースの実現形態に適
し、ユニプロセッサ・システム(たとえば、周辺装置が
主記憶に直接アクセスするシステム)およびマルチプロ
セッサ・システムで適用可能である。
【0049】本発明の明確な理解を容易にするため、ま
ず、本明細書で使用する術語の定義を挙げる。「ロード
命令」とは、記憶読み取りアクセスおよび場合によって
はロードされた値に基づく計算を実行する命令をいう。
たとえば、ロード命令は、たとえば、記憶場所からのデ
ータをオペランドとして用いる論理、算術および他の命
令を含むことができる。「アウトオブオーダ実行」と
は、命令シーケンス中の動作を、後で現れる動作によっ
て求められる資源が使用されていないならば、後で現れ
るその動作が先に実行されるよう、順序変更する技術で
ある。たとえば、アウトオブオーダ・ロード命令は、ロ
ード命令を命令シーケンス中のその元の位置から命令シ
ーケンス中のより早い位置に移動させることにより、静
的または動的に生成することができる。このようなアウ
トオブオーダ・ロード命令は、データを読み出すところ
の記憶中の場所と、そのデータを配置するところの第一
の宛先レジスタとを識別する。「曖昧な記憶参照」と
は、命令ストリーム中である記憶ロード動作が別の記憶
ロード動作の後で現れ、それら二つの記憶ロード動作に
よってアクセスされる記憶場所が異なるかどうかを事前
に決定することができない場合をいう。「投機動作」と
は、たとえば、それが位置する実行経路がたどられない
かもしれず、代わりに別の実行経路がたどられるかもし
れないため、必ずしも実行されないかもしれないアウト
オブオーダ動作をいう。
【0050】以下の記載および対応する実施例は、二つ
の命令(別段記さない限り)、すなわち、第二の、論理
的に先行する命令よりも先にアウトオブオーダで実行さ
れる第一の命令と、インオーダ命令と呼ばれるその第二
の命令とに基づいて記載する。したがって、別段記さな
い限り、「インオーダ」という指定は、論理的に先行す
るインオーダ命令と、第一の「アウトオブオーダ」命令
との順序的関係のみをいう。しかし、本発明は、多数の
アウトオブオーダおよびインオーダのロード動作を包含
するように拡張することが容易であることが当業者によ
って理解されよう。上記二つの命令(すなわち、インオ
ーダおよびアウトオブオーダのロード命令)が第三の命
令などに対してインオーダまたはアウトオブオーダであ
ってもよいことを理解されたい。
【0051】まず、本発明の概念を読者に紹介するた
め、本発明の概要を提供する。続いて、本発明の種々の
態様のより詳細な説明を提供する。
【0052】したがって、一般的に述べるならば、本発
明は、データ・バイパスを使用して、同じ記憶場所に対
する多数の記憶アクセスの間で整合性を執行する種々の
方法および装置で実現して、プロセッサ上で稼働するプ
ログラムに提示される結果的なデータ・シーケンスが記
憶場所に存在するデータ・シーケンスと整合するように
することができる(すなわち、命令がそれらの元のプロ
グラム順序で実行されたならば、プログラムがそのよう
なデータ・シーケンスを認識することができたであろ
う)。より具体的には、方法は、処理装置を制御して、
論理的に先行するインオーダ・ロード動作がデータを読
み出すところのアドレスを、論理的なプログラム順序で
はそのインオーダ命令に続くアウトオブオーダ・ロード
命令によって投機アクセスされたアドレスと比較させる
干渉試験からなる。アドレスどうしがマッチするなら
ば、アウトオブオーダ・ロード命令に論理的に先行する
インオーダ・ロード命令は、投機実行されるアウトオブ
オーダ・ロード命令に提供されたものと同じデータを提
示される。
【0053】データをアウトオブロード命令からインオ
ーダ・ロード命令にパイパスすることは、書き込み直列
化されたプログラム実行を維持しながら、アウトオブオ
ーダ・ロード命令およびその従属命令を再実行する必要
を回避させる。
【0054】本発明のパイパス機構を使用する効果を示
すために、先の例を参照する。左側の命令ストリーム
が、二重発行ユニプロセッサの場合に生成されるような
順序変更されたプログラム・ストリームを示す。本発明
のバイパス機構は、データを干渉するアウトオブオーダ
・ロード(「*」によって示す)から左側に示すプログ
ラムのインオーダ・ロード(「+」によって示す)にパ
スするために使用される。この順序変更されたプログラ
ム(左側)の実行は、以下の例の右側で指定されるイン
オーダ・プログラムの実行に等しく、したがって、正し
い書き込み直列実行である。
【0055】 バイパスで順序変更されたコード インオーダ実行に等しい 第二のプロセッサが、sおよびtへのロードによって参照される記憶にデータd 1を書き込む。 mul r10,r1,4 mul r10,r1,4* load r5,(r9) add r11,r10,5 add r11,r10,5 add r12,r11,r2 load r4,(r12) add r6,r4,4 load r5,(r9) 第二のプロセッサがデータをd2に変形する。 add r12,r11,2 add r7,r5,8 add r7,r5,8 + load r4,(r12) add r6,r4,4
【0056】本発明の干渉試験およびバイパス論理は、
プロセッサ中のハードウェア資源、プロセッサによって
実行される命令またはハイブリッド・ハードウェア/ソ
フトウェア・スキームによって実現することができる。
ソフトウェア実現形態の場合、干渉試験は、新たな一つ
の命令からなることもできるし、既存の命令(たとえ
ば、ロード命令および比較・条件付き移動命令またはロ
ード命令、比較命令、分岐命令および移動命令)からな
ることもできる。干渉試験の具体的な実現形態は、記憶
動作の順序変更が静的に実行されるのか動的に実行され
るのかに依存する。アウトオブオーダ・ロード動作に提
供されるアドレスおよびデータ値は、正規データ値とし
て主記憶中に格納することもできるし、命令ストリーム
中の命令から明示的にアクセス可能であってもよいし、
そうでなくてもよい、プロセッサに埋め込まれたハード
ウェア・テーブル構造中に格納することもできる。提案
されるスキームを、ロード/ストア干渉を検出するため
のスキームおよび干渉を検出したとき、いくつかのロー
ド動作を再発行するためのスキームと合わせて、異なる
記憶整合性モデルを実現することができる。このような
場合、これらのスキームに要する一つ以上の資源をロー
ド結果バイパス資源と合わせて、汎化アウトオブオーダ
実行スキームにおけるハードウェアの複雑さを軽減する
ことができる。
【0057】まず図1を参照すると、記憶動作以外の動
作の順序変更を静的または動的に実行する場合の、従来
技術による命令のスケジューリングを示す流れ図が示さ
れている。順序変更は、そのような順序変更が曖昧さを
被らない場合に限り、図1の方法にしたがって実行され
る。
【0058】ステップ101で、次の命令を選択し、そ
れが有利であり、プログラムの正しい動作に影響しない
ならば、命令シーケンス中のその現在位置からより早い
位置に移動する(すなわち、命令を実行のためにスケジ
ュールする)。すなわち、選択される命令が、その命令
が移動されるときに追い越すいずれの命令にも従属しな
いならば、その命令をより早い位置に移動する。
【0059】ステップ103で、スケジュールすべき命
令が残っているかどうかを決定する。残っているなら
ば、プロセスはステップ101に戻る。残っていないな
らば、プロセスは終了する。
【0060】図2は、本発明の実施態様による、元の命
令シーケンスからの動作を順序変更するプロセスを示す
流れ図である。特に、図2は、本発明にしたがって、ス
ケジューリング技術を拡張して曖昧さ解消を扱う方法を
示す。この一般的なスキームは、曖昧さ解消を実現する
すべての技術(すなわち静的または動的)に応用可能で
あることがわかる。ここで示す特定のアルゴリズムは、
スケジュールされる各命令は、その前にスケジュールさ
れたすべての命令の後で実行される(すなわち、選択順
序が実行順序を反映する)という仮定に基づく。しか
し、当業者は、他のスケジューリング手法とで使用する
ためにこのアルゴリズムの詳細を変更する方法を理解す
るであろう。
【0061】ステップ201で、次の命令を選択し、命
令シーケン中のその現在位置からより早い位置に移動す
る(すなわち、命令を実行のためにスケジュールす
る)。
【0062】ステップ202で、選択命令がロード(ま
たは読み取りアクセスのための記憶場所を参照するかも
しれない他の命令)であったかどうかを決定する。ロー
ドであったならば、ステップ202で、同じ記憶場所を
曖昧に参照するかもしれない非選択命令(たとえば、読
み取りアクセスのための記憶場所を参照するかもしれな
い非選択ロード命令または他の命令)が以前にその選択
されたロード命令を越えて移動されたかどうかをさらに
決定する。ステップ202で下される第二の決定はま
た、選択された(すなわち現在の)命令が、一つ以上の
アウトオブオーダ命令に対してインオーダ命令であるか
どうかとして特徴付けることもできる。ステップ202
で下される二つの決定の結果のいずれかがNOであるな
らば、プロセスはステップ204に進む。しかし、ステ
ップ202で、選択命令がロード命令であり、さらに、
同じ記憶場所を曖昧に参照するかもしれない非選択命令
が、選択されたロード命令を越えて移動されたと決定さ
れるならば、プロセスはステップ203に進む。
【0063】ステップ203で、曖昧さ解消を扱う動作
を実行する。これらは、選択されたロード命令に対して
アウトオブオーダであるロード命令の間に干渉(すなわ
ち、選択されたロード命令を越えて移動されたロード命
令による干渉)が存在するかどうかを決定するための試
験を加えること、およびそのような干渉の場合に実行さ
れるバイパス・シーケンスを準備することを含むが、こ
れらに限定はされない。このバイパス・シーケンスは、
選択されたインオーダ・ロード命令が先のアウトオブオ
ーダ・ロード・シーケンスと同じ値を返すことを保証す
ることにより、正しい時間順の(書き込み直列の)イベ
ントを執行しなければならない。バイパス・シーケンス
は、多数の(アウトオブオーダ)ロード動作が選択され
たロード命令を越えて移動されたことがあるかどうかを
多数のバイパス条件で検査する。バイパス・シーケンス
中に実行される検査ステップは、ハードウェア手段、ロ
ード命令中に符号化されたフラグもしくは他の手段、さ
らなる命令またはさらなる命令シーケンスによって実現
することができる。
【0064】多数の検査を実行するならば、最終的な結
果が参照される記憶場所に対して書き込み直列になるこ
とを保証するように実行しなければならない。これを保
証するため、多数の干渉するロード命令が、選択された
インオーダ・ロード命令に対してアウトオブオーダで実
行されるならば、その値を、干渉するもっとも早い論理
的に後続するアウトオブオーダ・ロード命令のレコード
からバイパスしなければならない。好ましくは、これは
二つの方法のいずれかを使用して実行される。第一の方
法では、干渉およびバイパス試験を論理的なプログラム
順序で実行し、ひとたび干渉が検出されたならば、特定
の不可分性単位のためのすべてのさらなる試験およびバ
イパス(ロード動作で多数の不可分性単位が参照される
ならば)をスキップする。
【0065】第二の方法では、逆の論理的プログラム順
序で干渉試験およびバイパスを実行する。いずれの方法
も書き込み直列な挙動を保証することが理解されよう。
さらに、当業者が、二つの方法の教示に基づき、本発明
の本質または範囲を逸することなく、それに対して種々
の変更および変形を加えることができることが理解され
よう。
【0066】ステップ204で、選択命令がロードであ
ったかどうかを決定し、ロードであったならば、選択命
令が以前に同じ記憶場所を曖昧に参照するかもしれない
別の非選択命令(たとえば、読み取りアクセスのために
記憶場所を参照するかもしれない非選択ロード命令また
は他の命令)を越えて移動されたかどうかをさらに決定
する。ステップ204で下される二つの決定はまた、選
択命令が、一つ以上のインオーダ命令に対するアウトオ
ブオーダ・ロード命令であるかどうかとして特徴付ける
ことができる。ステップ204で下される二つの決定の
いずれかの結果がNOであるならば、プロセスはステッ
プ206に進む。しかし、ステップ204で、選択命令
がロード命令であり、さらに、選択命令が以前に同じ記
憶場所を曖昧に参照するかもしれない別の非選択命令を
越えて移動されたと決定されるならば、プロセスはステ
ップ205に進む。
【0067】ステップ205で、アウトオブオーダ・ロ
ード命令が移動されたときに追い越したすべてのインオ
ーダ・ロード命令による将来の参照のためにこのアウト
オブオーダ・ロード命令の結果を記録するための機構を
加える。そのような動作を記録するための機構は、ハー
ドウェア手段、ロード命令中に符号化された「フラグ」
(命令ビット)もしくは他の手段、さらなる命令または
さらなる命令シーケンスからなることができる。必要な
らば、そのようなレコードを削除する(また、そのよう
な情報を格納するために要した資源を取り戻す)ための
さらなるコードを、移動されたロード動作があった元の
プログラム位置に挿入してもよい。
【0068】ステップ206で、スケジュールすべき命
令が残っているかどうかを決定する。残っているなら
ば、プロセスはステップ201に戻る。残っていないな
らば、プロセスは終了する。
【0069】図3は、図2の順序変更された動作を実行
するプロセスを示す流れ図である。具体的には、図3
は、図2のバイパス・ステップおよび記録ステップをよ
り詳細に説明する。
【0070】ステップ251で、アウトオブロード命令
を実行し、それにより、データを読み取り、そのデータ
を、アウトオブオーダ・ロード命令で指定されたレジス
タに格納する。ステップ253で、アドレスおよびロー
ド命令によってロードされた値を将来の参照のために記
録する。ステップ255で、場合によっては、ステップ
253でロードされた値に従属する命令を含む他の命令
を実行してもよい。
【0071】ステップ257で、ステップ251で実行
された先のアウトオブオーダ・ロード命令が移動された
ときに追い越したインオーダ命令を実行する。ステップ
259で、検査を実行して、二つのロード命令のアドレ
スどうしが干渉するかどうかを決定する。アドレスどう
しが干渉するならば、プロセスはステップ261に進
む。しかし、アドレスどうしが干渉しないならば、プロ
セスはステップ263に進む。
【0072】ステップ261で、先のアウトオブオーダ
・ロード動作からのロード値をバイパスして、アウトオ
ブオーダ・ロードに提供(によってロード)されたデー
タ値が次にインオーダ・ロードに提供(によってロー
ド)されるようにする。
【0073】ステップ263で、ロード命令のいずれか
(または両方)に従属する命令または独立した命令を含
む他の命令を実行してもよい。ステップ265で、アウ
トオブオーダで実行された元のロード命令の位置で、ス
テップ253で割り当てたロード・レコードの項目を割
り当て解除する。
【0074】いくつかのロード命令が別のロード命令を
越えて移動されるならば、インオーダ・ロード命令に対
してアウトオブオーダに移動されたロード命令ごとにス
テップ259および261を繰り返すことにより、いく
つかの検査を必要に応じて実行することがわかる。さら
に、ある命令が、いくつかのアウトオブオーダ命令に対
してはインオーダ命令であり、かつ、いくつかのインオ
ーダ命令に対してはアウトオブオーダ命令であるなら
ば、記録ステップ253の前にバイパス・ステップ26
1を実行することが好ましい。
【0075】上記プロセスの最適化として、干渉が検出
されない場合にだけインオーダ記憶アクセスが実行され
るようにステップ257を順序変更することができる。
【0076】本手法は、静的スキームおよび動的スキー
ムで使用することができる。これら実現形態は、二つの
動作が互いに対してインオーダであるのかアウトオブオ
ーダであるのか、また、参照がどのように生成され、参
照されるのかを識別するために異なる手法を使用するこ
とができる。
【0077】二つのロード動作の間でインオーダ/アウ
トオブオーダ関係を識別する一つの方法は、アウトオブ
オーダ・ロード動作に識別子を割り当てたのち、その識
別子をインオーダ・ロード動作の干渉およびバイパス試
験によって使用して、プログラムの流れの中でそのよう
なインオーダ動作に対してアウトオブオーダである動作
を識別することによる方法である。このような識別子
は、コンパイラによって静的に割り当てることもできる
し、発行ハードウェアによって動的に生成することもで
きる。
【0078】本発明を記憶語の点で説明したが、これは
また、ビットおよびバイトでアドレス指定可能な記憶を
はじめとする種々の組織形態を有する記憶構造にも適用
できることが理解されよう。そのうえ、記憶動作は、記
憶語が部分的に重複している(すなわち、二つの記憶語
によって参照されるビットのサブセットだけがこれらの
語に共通である)ことを指定してもよい。このような場
合、これら共通のビットだけがバイパスされる。さら
に、記憶システムは、記憶アクセスのための不可分性要
件を指定することができる。そのような場合、適当な不
可分性単位(通常はバイト、語またはキャッシュ・ライ
ン)が、インオーダ・ロード命令にバイパスされるもの
としてアウトオブオーダ・ロード命令によって記録され
る。さらには、本発明の本質および範囲を保持しながら
も、異なる記憶モデルとで使用するための他の変形を本
発明に加えることもできる。
【0079】干渉試験およびデータ・バイパスのために
静的スケジューリングおよび命令を使用する実施態様 静的スケジューリングおよび命令を使用する本発明の干
渉試験に可能な実現形態を説明するため、以下、干渉試
験に望まれる機能性を語レベルで実現する例を提供す
る。しかし、ビット、バイト、2分語または他のレベル
で記憶読み取り動作を実現するプロセッサを、以下に記
載する方法の使用に適合させることもできることが理解
されよう。そこで、アドレス指定可能な単位ごとに種々
の項目からのバイパスの可能性に関して、別々にアドレ
ス指定可能な単位ごとに独立して比較を実施する。シス
テムはさらに、バイト、2分語、語キャッシュ・ライン
またはより高位のレベルで不可分性を保証することがで
きる。そのような不可分性が保持されなければならない
ならば、本発明は、アウトオブオーダ命令によって生成
されるレコード中の周囲の不可分性単位を記録するよう
に適合させることができる。
【0080】本明細書で提供する例は、以下の表記を使
用する。 ・RT、RAは汎用レジスタを表し、 ・(RT)、(RA)は、汎用レジスタRT、RAそれ
ぞれの内容であり、 ・D、BDは、それぞれデータ変位および分岐変位であ
り、 ・CIA、NIAは、それぞれ、現在実行中の命令のア
ドレスおよび次に実行される命令のアドレスである。 ・別段記さない限り、疑似コードは、ISO C規格に
よるCプログラミング言語に指定されるものに類似した
演算子を使用する。たとえば、[]は索引を指定し、.
(dot)はレコード・フィールドを指定する。
【0081】静的スケジューリングの一つの例示的な実
現形態は、コンパイラによって各アウトオブオーダ・ロ
ード動作に割り当てられるロードタグ識別子を使用す
る。ロードタグ識別子と一つのアウトオブオーダ・ロー
ド動作とは、そのロード動作のアウトオブオーダ発行点
とそのような動作の論理的インオーダ点との関係のよう
に、一意に対応する。
【0082】ロードタグ識別子は、各アウトオブオーダ
動作命令語の中に格納され、図3でステップ253によ
って生成されるレコードの中に記録される。このような
アウトオブオーダ・ロード命令は、その命令フォーマッ
ト中に一つのさらなるフィールドを含み、ロードタグ識
別子4を有するアウトオブオーダ・ロード命令を以下lo
ad_4 RT,D(RA)と表記する。
【0083】この動作は、ロードを実行することに加え
て、ロード結果(不可分性を保証するためにこのアクセ
スを含む最大の不可分性単位)、ロードタグ識別子およ
びアドレスをテーブルに記録する。
【0084】dealloc_4と指定される命令が、図3のス
テップ265に示すように、ロードタグid4を有する
テーブル項目を割り当て解除する。dealloc_n動作は、
図3のプロセスで任意の(なくてもよい)ステップであ
る。したがって、具体的に実現形態に依存して、deallo
c_n動作をコードから省いてもよく、テーブル項目が後
の割り当て要求によって自動的に取って代わられてもよ
い。
【0085】一つの効率的な実現形態は、このロードタ
グ識別子を、アウトオブオーダ・ロード結果に関する情
報を記録するために使用されるテーブルの中で実際の索
引として使用することからなる。そして「アドレス干渉
および条件付きロード・レジスタを検査せよ」命令(定
義は以下に記す)を使用して、バイパス条件の干渉試験
および実際のバイパス・ステップを実現することができ
る。この命令は、アドレスを比較する相手であり、アド
レス干渉の場合に結果をバイパスされるアウトオブオー
ダ・ロードを指定する。
【0086】アドレス(先に実行されたアウトオブオー
ダ・ロード命令がデータをロードしたところ)が、現在
指定されているアドレス(インオーダ・ロード命令の)
とマッチする(または、部分語動作の場合には、重複す
る)場合、アドレス干渉が検出される。好ましくは、ア
ドレス干渉は、以下の命令にしたがって検出される。
【0087】アドレス干渉および条件付きロード・レジ
スタを検査せよ chkld_n RT,D(RA) EA<=(RA)+D if(entry[n].address==EA) ; bypass if addresses interfere RT<=entry[n].value
【0088】EAは、インオーダ命令によって参照され
る有効記憶アドレスである。計算された有効アドレス
が、chkld命令(n)によって指定された項目に記録さ
れている、先に実行されたアウトオブオーダ・ロードの
記憶域とマッチする、または重複するならば、対応する
値はバイパスされる。
【0089】chkld命令は実質的にステップ259およ
び261を一つの命令で実現する。
【0090】chkld命令を実際のロード命令と合わせ
て、ステップ257、259および261を一つの検査
付き動作ロードに合わせられることがわかる。
【0091】 load_chkld_n RT,D(RA) EA<=(RA)+D if(entry[n].address==EA) ; bypass if addresses interfere RT<=entry[n].value else RT<=MEM(EA,4)
【0092】あるいはまた、二つの記憶アドレスのアド
レス干渉ならびに重複の場合にはそれらの対応するサイ
ズおよび分岐を試験して、ソフトウェアベースの干渉お
よびバイパス試験を加速する一つの試験アドレス干渉お
よび分岐命令だけを使用することが望ましいかもしれな
い。
【0093】本発明の干渉試験およびバイパス動作
(「アドレス干渉および条件付きロード・レジスタを検
査せよ」命令(chkld))の静的生成およびその実行を
説明するため、以下、第一のロード命令の下の第二のロ
ード命令および第二のロード命令に従属するいくつかの
算術命令を含む、左側の欄に示す元のコードを考えてみ
よう。この例では、命令の名前の後の最初のレジスタが
標的レジスタであり、残りのレジスタはオペランドであ
る。
【0094】 元のコード インオーダ・ロード命令を越えて移動されるロード命令 ... load_3 r5,10(r4) ... ... ... ... load r3,20(r) load r3,20(r2) chkld_3 r3,20(r2) ... ... load r5,10(r4) dealloc_3 add r6,r5,20 add r6,r5,20 sub r7,r6,r7 sub r7,r6,r7 $next: ... $next: ...
【0095】右側の欄に示すように、第二のロード命令
が第一のロード命令を越えて移動される。インオーダ・
ロード命令が「アドレス干渉および条件付きロード・レ
ジスタを検査せよ」命令(chkld)によって増補され、
元の第二のロード命令(アウトオブオーダで移動された
もの)が、右側の欄に示すように、バイパス・レコード
を割り当て解除するための命令によって取って代わられ
る。元のロード命令に続く算術命令もまた、以下に示す
ように順序変更することができる。
【0096】 元のコード インオーダ・ロード命令を越えて移動される動作 ... load_3 r5,10(r4) ... add r6,r5,20 ... sub r7,r6,r7 ... ... load r3,20(r) load r3,20(r2) chkld_3 r3,20(r2) ... ... load r5,10(r4) dealloc_3 add r6,r5,20 $next: ... sub r7,r6,r7 $next: ...
【0097】この場合、右側の欄に示すように、ロード
動作に従属する命令もまた、インオーダ命令を越えて移
動される。
【0098】以下に示すように、ロードと検査を組み合
わせた命令(load_chkld_n)を使用して、命令ロードお
よびchkldを一つの動作に畳む。
【0099】 元のコード インオーダ・ロード命令を越えて移動される動作 ... load_3 r5,10(r4) ... add r6,r5,20 ... sub r7,r6,r7 ... ... load r3,20(r) load_chkld_3 r3,20(r2) ... load r5,10(r4) dealloc_3 add r6,r5,20 $next: ... sub r7,r6,r7 $next: ...
【0100】図4は、記憶動作の静的順序変更ならびに
干渉試験およびデータ・バイパス・シーケンスのソフト
ウェア実現形態をサポートする従来のコンピュータ処理
システムの機能ブロック図である。このシステムは、記
憶サブシステム301、データ・キャッシュ302、命
令キャッシュ304および処理装置300からなる。処
理装置300は、命令待ち行列303、1個以上のロー
ド装置305(1個だけ示す)、整数、論理および浮動
小数点演算を実行するためのいくつかの実行装置30
7、分岐装置309ならびにレジスタ・ファイル311
を含む。命令は、分岐装置309の制御の下、命令キャ
ッシュ304から(または、命令キャッシュ304にな
い場合には記憶サブシステム301から)取り出され、
命令待ち行列303に配置される。命令は、実行される
ため、命令待ち行列303からロード装置305、実行
装置307および分岐装置309にディスパッチされ
る。これらの装置305、307、309は、レジスタ
・ファイル311と対話して、命令によって使用される
オペランドにアクセスし、命令の実行によって出される
結果を保存する。レジスタ・ファイル311は通常、汎
用レジスタ(GPR)、浮動小数点レジスタ(FPR)
および条件レジスタ(CR)を含む。ロード装置305
はまた、データ・キャッシュ302および記憶サブシス
テム301と対話して、実行装置307および/または
分岐装置309によって実行される命令によって使用さ
れるデータをロードし、実行装置によって生成される結
果を格納する。
【0101】図5は、本発明の実施態様にしたがって図
4のシステムによるアウトオブオーダ・ロード動作の実
行をサポートするために使用されるハードウェア資源を
示すブロック図である。より具体的には、図5は、図3
に示す少なくとも一つのロード装置305の詳細ブロッ
ク図である。少なくとも一つのロード装置305は、制
御論理401、アドレス生成論理402、ロードオーダ
・バッファ403、比較論理404およびバイパス用デ
ータ選択機構405を含む。
【0102】第一の作動モードでは、通常のロード命令
を処理するとき、アドレス生成論理402が、データを
読み出すところの記憶アドレスを生成する。ロード命令
の具体的なフォーマットに依存して、記憶アドレスは、
ロード命令で指定されるレジスタ・ファイル311のレ
ジスタから読み出されるオペランドに基づいて生成する
こともできるし、レジスタ・ファイル311のレジスタ
から読み出されるオペランドと、ロード命令で指定され
る変位情報とに基づいて生成することもできる。そし
て、アドレス生成論理402は、生成した記憶アドレス
をデータ・キャッシュ302に転送する。要求されたデ
ータは、データ・キャッシュ302または記憶サブシス
テム301(データ・キャッシュ302にない場合)か
ら読み出されたのち、制御論理401によって制御され
る選択機構405によってレジスタ・ファイル311中
の宛先レジスタに戻され、書き込まれる。
【0103】第二の作動モードでは、アウトオブオーダ
・ロード命令を処理するとき、アドレス生成論理402
は、データを読み出すところの記憶アドレスを生成す
る。ロード命令の具体的なフォーマットに依存して、記
憶アドレスは、ロード命令で指定されるレジスタ・ファ
イル311のレジスタから読み出されるオペランドに基
づいて生成することもできるし、レジスタ・ファイル3
11のレジスタから読み出されるオペランドと、ロード
命令で指定される変位情報とに基づいて生成することも
できる。そして、アドレス生成論理402は、生成した
記憶アドレスをデータ・キャッシュ302に転送する。
要求されたデータは、データ・キャッシュ302または
記憶サブシステム301(データ・キャッシュ302に
ない場合)から読み出されたのち、制御論理401によ
って制御される選択機構405によってレジスタ・ファ
イル311中の宛先レジスタに戻され、書き込まれる。
同時に、制御論理401が、ロードオーダ・バッファ4
03に指図して、データがロードされたところのアドレ
ス、データ型(場合による)、要求されたデータを含む
下層アーキテクチャによって不可分性であることを保証
された最大単位およびロードタグ識別子(図5では、索
引としてテーブル(すなわちロードオーダ・バッファ4
03)中に暗示的に格納されている)からなるレコード
を格納させる。
【0104】第三の作動モードでは、本発明の「アドレ
ス干渉および条件付きロード・レジスタを検査せよ」命
令(干渉試験およびバイパス)を処理するとき、アドレ
ス生成論理402は、データを読み出すところの記憶ア
ドレスを生成する。「アドレス干渉および条件付きロー
ド・レジスタを検査せよ」命令の具体的なフォーマット
に依存して、記憶アドレスは、「アドレス干渉および条
件付きロード・レジスタを検査せよ」命令で指定される
レジスタ・ファイル311のレジスタから読み出される
オペランドに基づいて生成することもできるし、レジス
タ・ファイル311のレジスタから読み出されるオペラ
ンドと、「アドレス干渉および条件付きロード・レジス
タを検査せよ」命令で指定された変位情報とに基づいて
生成することもできる。
【0105】制御論理401は、「アドレス干渉および
条件付きロード・レジスタを検査せよ」命令で指定され
たロードタグ識別子に対応するレコードにアクセスし、
含まれた記憶アドレスを比較論理404に供給する。さ
らに、アドレス生成論理402が、「アドレス干渉およ
び条件付きロード・レジスタを検査せよ」命令の結果と
して生成された記憶アドレスを比較論理404に供給す
ると、この比較論理が両アドレスを比較する。アドレス
どうしがマッチする、または記憶重複を示すならば、比
較論理404は、それをデータ選択機構405に指示す
る。アドレスのマッチまたは重複の場合、ロードオーダ
・バッファ403中でアクセスされた項目のデータ・フ
ィールドに格納されたデータがライトバックのためにレ
ジスタ・ファイル311に供給される。すなわち、はじ
めにアウトオブオーダ・ロード命令に供給されたデータ
(ロードオーダ・バッファ403に格納されていたも
の)が、今や、インオーダ・ロード命令に提供される。
そうでなければ、インオーダ・ロード命令のためにレジ
スタ・ファイル311中に現在格納されている値は変化
しない(すなわち、アウトオブオーダ・ロードとインオ
ーダ・ロードとの間で干渉が検出されなかった)。選択
機構405は、制御論理401の制御の下、インオーダ
・ロードのためにレジスタ・ファイル311に書き込む
べき、ロードオーダ・バッファ403からバイパス項目
によって供給されるビットのサブセットのみを選択する
ことができる。これは、記憶システムの不可分性単位を
超える、干渉するアウトオブオーダおよびインオーダ命
令の部分的な重複の場合に適切であろう。
【0106】第四の作動モードでは、命令dealloc_nを
実施して、ロードオーダ・バッファ403からの項目を
割り当て解除する。この命令は任意(なくてもよい)で
あり、したがって、望むならば省いてもよい。
【0107】上述した実施態様は、アウトオブオーダ・
ロード命令が移動されるときに追い越すロード命令ごと
に一つの余計な命令(すなわち、「アドレス干渉および
条件付きロード・レジスタを検査せよ」命令)を取り入
れ、一つ以上の他のロード命令に対してアウトオブオー
ダに移動されるロード命令ごとに一つの命令(すなわ
ち、dealloc_n命令)を取り入れる。これは、元のプロ
グラムに対してオーバヘッドであるが、コストでは、一
つ以上の命令を使用してバイパス条件を検出したのち、
干渉が検出されたときに回復シーケンスを実行する従来
機構との比較で優位である。従来機構によるこのシーケ
ンスは、命令キャッシュへの悪影響および回復コードの
存在がレジスタ割り当て機構に課す制限に加えて、コー
ドを格納するための空間と、コードを実行するための時
間の両方を要する。本発明に関しては、ロード動作をア
ウトオブオーダで移動する決定がプログラム生成時に下
されるため、オーバヘッドの影響は、移動を実行するこ
とで期待される利点とで比較考量することができる。
【0108】もう一つの代替態様では、アレイ(たとえ
ばロードオーダ・バッファ403)中の先のアウトオブ
オーダ・ロード動作に関する情報を命令比較シーケンス
(または前記の一つの記憶重複命令)によって使用して
記憶重複を試験したのち、アドレス重複の場合に、さら
なる命令シーケンスによって使用して、アレイに格納さ
れた値を、条件付きで、インオーダ・ロード命令によっ
て指定された標的レジスタに移動する。さらなる命令
は、条件付き移動命令もしくは条件付き移動命令が続く
分岐命令またはアウトオブオーダ・ロード命令によって
生成されたレコードに格納された値をインオーダ・ロー
ド命令によって指定された標的レジスタ中に移動する効
果を有する他の命令シーケンスを含むことができる。
【0109】さらに別の代替態様では、本発明は、ブロ
ック内で連続的に実行される命令に関して、命令を非循
環コード・ブロック(たとえば、基本ブロックまたはス
ーパブロック)中で厳密に降順の命令アドレスでスケジ
ュールするために使用される。そのような場合、アウト
オブオーダ・ロード命令によって指定されたロードタグ
識別子が、元のロード命令のその論理的プログラム順序
におけるプログラム・カウンタ位置である。図7は、本
発明の実施態様にしたがって図4または6のシステムに
よるアウトオブオーダ・ロード動作の実行をサポートす
るために使用されるハードウェア資源を示すブロック図
である。具体的には、図7は、本発明の実施態様の、図
4に示すロード装置305の実現形態の詳細ブロック図
とみなすことができる。ロード装置305は、制御論理
601、アドレス生成論理603、ロードオーダ・テー
ブル605、干渉試験および優先順位エンコーダ60
7、第一のバイパス用データ選択機構609および第二
のバイパス用データ選択機構611を含む。
【0110】投機ロード命令が実行されるとき、ロード
装置305が、データがロードされるところの記憶アド
レスと、記憶から受け取られたデータ値と、投機ロード
命令の論理的プログラム位置(命令番号)とを連想記憶
テーブル605に記録する。論理的プログラム位置は、
多くの方法で指定することができる。たとえば、命令中
に符号化されたさらなる命令フィールド、特別な命令前
置子または一つ以上のさらなるコンピュータ命令を使用
することができる。
【0111】インオーダ命令が実行されるとき、ロード
装置305は、アドレス生成論理603によって生成さ
れた記憶ロード・アドレスに対してCAMアクセスを実
行し、そのようなアドレスが以前にそれ自体よりも高い
プログラム位置(命令番号としてテーブル605に格納
されている)を有するアウトオブオーダ・ロード動作に
よってアクセスされたことがあるかどうかを検査し(ア
ウトオブオーダ・ロードがこのテーブルにアクセスする
場合には、そのロード動作の論理的プログラム位置を使
用する)、「干渉試験および優先順位エンコーダ」60
7中の同じ記憶場所を参照する。アドレス生成装置60
3によって生成された記憶ロード・アドレスが以前にア
ウトオブオーダ・ロード動作によってアクセスされたこ
とがあるならば、以前に処理されたアウトオブオーダ・
ロードと現在のロード動作とが干渉することが検証さ
れ、データ選択機構611中の干渉する項目と対応する
データからのバイパスが可能にされる。ある特定の記憶
アドレスに対応する多数の項目がテーブル605中に存
在し、そのうち、二つ以上が干渉していると思われるこ
とがある。多数の項目が一つのロード動作に干渉するな
らば、干渉試験および優先順位エンコーダ607は、優
先順位符号化スキームを使用して、アウトオブオーダ・
ロード命令によってはじめに指定され、テーブル605
に格納されている最下位の論理的プログラム・アドレス
(命令番号としてテーブル605に格納されている)を
有する干渉項目からデータが提供されることを保証す
る。
【0112】プログラム・カウンタがアウトオブオーダ
・ロード命令の元の論理的プログラム順序の値に達する
と、テーブル項目は制御論理601によって割り当て解
除される。
【0113】この機構は、プログラム空間をハードウェ
ア複雑さで相殺する。実証することができるとおり、そ
のような実施態様を可能にするためにさらなる命令は要
らない。静的スケジューリングは、テーブル605の不
十分な記憶容量のせいでそのテーブルに格納することが
できないロード命令がアウトオブオーダにスケジュール
されることがないように実現されるべきである。連想記
憶装置がテーブル605に好ましい実現形態であるが、
当業者が、テーブル605と同様な機能を果たし、本発
明の本質および範囲を維持する他の記憶構造を考えられ
ることを理解されたい。
【0114】干渉試験およびデータ・バイパスのために
動的スケジューリングおよびハードウェア資源を使用す
る実施態様 命令を動的にスケジュールすることができるプロセッサ
(アウトオブオーダ発行プロセッサ)の従来の実現形態
は、以下の機構を含む。
【0115】1.命令をアウトオブオーダで発行する機
構であって、命令間の従属性を検出し、命令によって使
用されるレジスタをリネームし、命令によって使用され
る資源の可使性を検出する能力を有するもの。 2.プロセッサのアウトオブオーダ状態を維持するため
の機構であって、命令がアウトオブオーダで実行された
場合の命令の影響を反映するもの。 3.命令をプログラム順序で撤収し、同時に、撤収され
る命令の効果でインオーダ状態を更新するための機構。 4.命令をプログラム順序で撤収するが、インオーダ状
態を更新せず(撤収される命令の影響を実質的に打ち消
す)、撤収される命令から出発してプログラムのインオ
ーダ状態を回復する(アウトオブオーダ状態で存在する
すべての影響をを打ち消すことを暗示する)ための機
構。
【0116】上記リストのうち機構3は、撤収される命
令の影響が正しいとき、その命令を撤収するために使用
される。あるいはまた、撤収される命令の実行または何
らかの外部的イベントから生じる異常な状態が存在する
ときには、機構4が使用される。
【0117】図6は、記憶動作の動的順序変更ならびに
干渉試験およびデータ・バイパス・シーケンスのハード
ウェアベースの実現形態をサポートする従来のコンピュ
ータ処理システム(たとえばスーパスケーラ・プロセッ
サを含む)の機能ブロック図である。すなわち、図6の
システムは、上述した機構を使用する命令の順序変更を
サポートするのに必要であるハードウェア資源を含む
が、インオーダ動作よりも前のアウトオブオーダ・ロー
ド動作の実行をサポートするのに必要であるハードウェ
ア資源を含まない。システムは、記憶サブシステム50
1、データ・キャッシュ502、命令キャッシュ504
および処理装置500からなる。処理装置500は、命
令待ち行列503、ロードおよびストア動作を実行する
ためのいくつかの記憶装置(MU)505、整数、論理
および浮動小数点演算を実行するためのいくつかの機能
装置(FU)507、分岐装置(BU)509、レジス
タ・ファイル511、レジスタ・マップ・テーブル52
0、フリーレジスタ待ち行列522、ディスパッチ・テ
ーブル524、撤収待ち行列526およびインオーダ・
マップ・テーブル528を含む。この例示的な組織は、
M. Moudgill、 K.PingaliおよびS. Vassiliadisによ
る論文「Register Renaming and DynamicSpeculatio
n: An Alternative Approach」Proceedings of th
e 26th Annual International Symposium on Mic
roarchitecture, pp. 202-13(1993年12月)に
記載されたものに基づく。
【0118】図6に示すプロセッサでは、命令は、分岐
装置509の制御の下、命令キャッシュ504(または
命令キャッシュ504にない場合には記憶サブシステム
501)から取り出され、命令待ち行列503に配置さ
れたのち、命令待ち行列503からディスパッチされ
る。オペランドを指定するために命令によって使用され
るレジスタ名は、アーキテクチャ・レジスタ名から物理
レジスタへの現在のマッピングを指定する、レジスタ・
マップ・テーブル520の内容にしたがってリネームさ
れる。結果の宛先を指定するために命令によって使用さ
れるアーキテクチャ・レジスタ名は、現在プロセッサに
よって使用されていない物理レジスタの名前を含むフリ
ーレジスタ待ち行列522から抽出される物理レジスタ
を割り当てられる。レジスタ・マップ・テーブル520
は、物理レジスタを、命令によって指定されるアーキテ
クチャ宛先レジスタ名に割り当てることによって更新さ
れる。すべてのレジスタをリネームされた命令は、ディ
スパッチ・テーブル524に配置される。命令はまた、
それらのアドレスならびにそれらの物理およびアーキテ
クチャ・レジスタ名を含めて、撤収待ち行列526の中
にプログラム順序で配置される。命令は、そのような命
令によって使用されるすべての資源が使用可能になった
とき(物理レジスタが予期されるオペランドを割り当て
られ、機能装置が未使用であるとき)、ディスパッチ・
テーブル524からディスパッチされる。命令によって
使用されるオペランドは、通常は汎用レジスタ(GP
R)、浮動小数点レジスタ(FPR)および条件レジス
タ(CR)を含むレジスタ・ファイル511から読み出
される。命令は、対応する記憶装置505、機能装置5
07または分岐装置509の中で潜在的にアウトオブオ
ーダで実行される。実行が完了すると、命令の結果がレ
ジスタ・ファイル511に配置される。実行を完了する
命令によってセットされる物理レジスタを待つ、ディス
パッチ・テーブル524中の命令が通知される。撤収待
ち行列526は、実行を完了する命令を、それらの命令
が何らかの例外を提起したかどうかを含め、通知され
る。完了した命令は、撤収待ち行列526からプログラ
ム順序で(行列の先頭から)削除される。撤収時に、命
令によって例外が提起されなかったならば、アーキテク
チャ・レジスタ名がレジスタ・ファイル511中の、撤
収される命令の結果を含む物理レジスタを指し示すよ
う、インオーダ・マップ・テーブル528が更新され
る。インオーダ・マップ・テーブル528から先のレジ
スタ名はフリーレジスタ待ち行列522に戻される。
【0119】他方、命令が例外を提起したならば、プロ
グラム制御は、撤収待ち行列526から撤収される命令
のアドレスにセットされる。そのうえ、撤収待ち行列5
26はクリアされ(フラッシュされ)、それにより、す
べての未撤収命令が打ち消される。さらに、レジスタ・
マップ・テーブル520がインオーダ・マップ・テーブ
ル528の内容にセットされ、インオーダ・マップ・テ
ーブル528中にないレジスタがフリーレジスタ待ち行
列522に加えられる。
【0120】上記部品に加えて、スーパスケーラ・プロ
セッサは、他の部品、たとえば分岐の結果を予測するた
めの分岐履歴テーブルを含むことができる。
【0121】本発明によると、先行するロード命令に対
するロード命令の順序変更をサポートする従来のスーパ
スケーラ・プロセッサ(図6に示す)を以下によって増
補することができる。
【0122】1.先行するロード命令に対してアウトオ
ブオーダで発行されるロード命令を印すための機構。 2.命令が取り出されるとき、それらの命令に番号を付
け、命令が命令ストリーム中で早く起こったか遅れて起
こったかを決定するための機構。命令が別の命令に対し
て早く起こったか遅れて起こったかを決定するための代
替機構を用いてもよい。 3.アウトオブオーダで実行されたロード動作に関する
情報、たとえばプログラム順序におけるそれらのアドレ
ス、それらのアクセスのアドレスおよびロードされたデ
ータを含む最大保証不可分性単位のための読み出された
データ値を格納するための機構。 4.ロード命令が一つ以上のアウトオブオーダ・ロード
命令に対してインオーダで実行されるときに干渉試験を
実行し、多数の命令がロード命令に干渉するときに優先
順位符号化を実行するための機構。 5.干渉するロード動作に対応するデータをバイパスす
るための機構。 6.アウトオブオーダ状態がプログラム順序で撤収待ち
行列526からレジスタ・ファイル511に撤収される
点でステップ3で生成されたレコードを削除するための
機構。
【0123】本発明によって提供される機構は、以下に
記すように、図6に示す従来のアウトオブオーダ・プロ
セッサで利用できる機構と併せて使用される。各命令
は、命令待ち行列503に加わるとき、命令番号を付さ
れる。ロード命令は、先行するロード命令よりも先にデ
ィスパッチテーブル524からディスパッチすることが
できる。以下、そのようなロード命令を「アウトオブオ
ーダ・ロード動作」と呼ぶ。そのような場合、ロード命
令に対応する撤収待ち行列526中の項目は、アウトオ
ブオーダ・ロードと印される。
【0124】ディスパッチ・テーブル524から記憶装
置505へのアウトオブオーダ・ロード動作の実行のた
めのディスパッチの検出は、2個のカウンタ、「取り出
し済みロード・カウンタ」および「ディスパッチ済みロ
ード・カウンタ」によって達成することが好ましい。取
り出し済みロード・カウンタは、ロード動作がディスパ
ッチ・テーブル524に加えられるごとに増加する。デ
ィスパッチ済みロード・カウンタは、ロード動作が実行
のために記憶装置505に送られるごとに増加する。ロ
ード命令がディスパッチ・テーブル524に加えられる
とき、取り出し済みロード・カウンタの現在の内容がロ
ード命令に付加される。ロード命令が実行のためにディ
スパッチ・テーブル524から記憶装置505にディス
パッチされるとき、ディスパッチテーブル524中のロ
ード命令に付加された値がその時点でのディスパッチ済
みロード・カウンタの内容と異なるならば、そのロード
命令はアウトオブオーダ・ロード命令と識別される。2
個のカウンタ値の違いが、ロード命令がアウトオブオー
ダで発行されるときに追い越されるロード動作の正確な
数に対応することがわかる。アウトオブオーダ・ロード
命令は、ロードオーダ・テーブル605に項目を加える
ための空間が利用できる場合にのみ、記憶装置505に
ディスパッチされる。
【0125】ロードオーダ・テーブル605は、すべて
の記憶装置505によって同時にアクセスされる一つの
テーブルである。すなわち、処理を加速するために多数
の物理コピーを維持することはできるが、論理コピーは
一つしか維持されない。多数の物理コピーが使用される
ならば、それら多数のコピーの論理内容は常にすべての
記憶装置505の同じ状態を反映しなければならないこ
とがわかる。
【0126】ロード動作が発行されるごとに、実行され
ている命令の命令番号および命令が投機実行されるのか
どうかが記憶装置505に送られる。
【0127】図7は、本発明の実施態様にしたがって、
図6のシステムによってアウトオブオーダ動作の実行を
サポートするために使用されるハードウェア資源を示す
ブロック図である。具体的には、図7は、図6に示す記
憶装置505の詳細ブロック図である。記憶装置505
は、制御論理601、アドレス生成論理603、ロード
オーダ・テーブル605、干渉試験および優先順位エン
コーダ607、第一のパイパス用データ選択機構609
および第二のパイパス用データ選択機構611を含む。
干渉試験および優先順位符号化論理607によって操作
される第一のデータ選択機構609は、ロードオーダ・
テーブル605から論理的にもっとも早い干渉するアウ
トオブオーダ・ロードのデータ値を選択するために使用
される。第二のデータ選択機構611は、データ・キャ
ッシュ502(またはキャッシ・ミスの場合には、記憶
サブシステム501)によって返されるデータまたはロ
ードオーダ・テーブル605からのデータを選択するた
めに使用される。第二のデータ選択機構611によって
選択されるデータは、干渉試験および優先順位符号化論
理607によって干渉が検出されたかどうかに依存し
て、レジスタ・ファイル511に対する将来のコミット
に使用される。第一および第二のデータ選択機構60
9、611によって実行される機能は、一つのデータ選
択機構に統合してもよいことが理解されよう。ロードオ
ーダ・テーブル605の好ましい実現形態は連想記憶装
置(CAM)である。しかし、当業者は、実質的に同じ
効果を有する他の記憶構造をそれに代えて用いてもよい
ことを理解するであろう。
【0128】ロード動作を受けると、アドレス生成装置
603によってアドレスが生成され、データ・キャッシ
ュ502にディスパッチされる。そして、データ・キャ
ッシュ502がアクセスされてデータを提供する。デー
タがデータ・キャッシュ502中に見つからないなら
ば、記憶サブシステム501がアクセスされてデータを
提供する。同時に、ロードオーダ・テーブル605が、
制御論理601により、アドレス生成装置603によっ
て生成されたデータ・アドレスでアクセスされる。干渉
試験および優先順位エンコーダ607が干渉を求めて検
査する。ロードオーダ・テーブル605中に、データ・
キャッシュ502の現在のアクセスと同じアドレスを参
照する項目(または、現在のアドレスのアドレスを含む
不可分性単位のそれ)が存在し、そのレコードが、現在
実行中のロード命令よりも後の命令番号をそれに対応し
て有する(すなわち、記録されたロード命令が、現在処
理中のロード命令に対してアウトオブオーダである)な
らば、干渉が検出される。干渉が検出されるならば、干
渉試験および優先順位エンコーダ装置607は、データ
選択機構611に指図して、情報をロードオーダ・テー
ブル605からレジスタ・ファイル511にパスさせる
か、データ・キャッシュ502から他の方法でパスさせ
る。最適な実施態様では、バイパス条件に遭遇するなら
ば、データ・キャッシュ502または記憶サブシステム
501へのアクセスを抑制することができる。
【0129】多数のマッチに遭遇するならば、干渉試験
および優先順位エンコーダ607は、データ選択機構6
09に指図して、もっとも早い命令番号(現在の命令の
番号よりも後)を有するテーブル項目を、データ選択機
構611のためのバイパス・データ・ソースとして選択
させる。
【0130】実行されたロード動作がアウトオブオーダ
と印されているならば、レジスタ・ファイル511に供
給されるデータ値は、命令の論理的プログラム・アドレ
スおよびデータ記憶アドレスとともに、ロードオーダ・
テーブル605の中の項目に記録される。ロード命令
は、いくつかのアウトオブオーダ命令に対してインオー
ダであり、かつ他のインオーダ・ロード命令に対してア
ウトオブオーダであることができることがわかる。した
がって、バイパスおよび記録論理の両部分を一つの命令
によって執行してもよい。
【0131】アウトオブオーダ・ロード動作を撤収待ち
行列526から撤収すると、命令または制御信号が記憶
装置505に送られて、撤収された命令に対応する項目
が削除される(たとえば一意の命令番号を指定すること
により)。
【0132】分岐予測ミスに遭遇し、一つ以上の投機実
行されたアウトオブオーダ・ロード命令が撤収バッファ
からフラッシュされるならば、本発明にしたがって、記
憶装置505のバイパス・テーブル構造中の適切な項目
が同時に削除される。
【0133】命令番号は、このスキームでは、入力され
たプログラムの逐次(インオーダ)実行における命令の
順序を確立するために使用される。命令番号は、所与の
時間にプロセッサによって処理することができるすべて
の動作を一意に識別することができなければならず、所
与の時間にプロセッサによって同時に処理される二つの
命令の関係を確立するために使用することができなけれ
ばならない。たとえば、命令番号は、プロセッサ中で所
与の時点でインフライトである(処理される)ことがで
きる数の少なくとも2倍の数nの命令を符号化するのに
十分な広さの一つの番号からなることができる。そし
て、モジュロ算術が、現在の命令番号に先行するn−1
の範囲にある番号を有する命令が現在の命令に論理的に
先行し、現在の命令番号に続くn−1の範囲にある番号
を有する命令が現在の命令に論理的に後続することをを
確立することができる。
【0134】代替の番号付けスキームは、命令アドレス
および分岐がとられるごとのさらなる分岐前置子を使用
することからなることができる。分岐前置子は、いかな
る数の形態、たとえば分岐テーブルへの参照のモジュロ
・カウンタを取ることができる。命令番号付けの代替実
現形態は、命令ストリームに対して順序付けを課すハー
ドウェア・テーブルを参照することができる。これは、
既存のハードウェア要素、たとえば撤収待ち行列526
または命令を順序付けする専用の目的のために実現され
たハードウェア機構に基づくことができる。さらに別の
代替形態は、前記スキームにしたがって、たとえば取り
出し済みロード・カウンタ値を使用してロード動作に番
号付けすることにより、ロード命令をカウントするだけ
であってもよい。
【0135】本発明の代替実施態様は、命令番号に基づ
いて項目を格納する代わりに、アクセスされる記憶アド
レスに基づいてロードオーダ・バイパス・テーブル項目
を生成することができる。この実施態様は、干渉試験お
よび優先順位エンコーダ607における優先順位符号化
の要件を除くが、互いに対してインオーダであるが、第
三のロード命令に対してはアウトオブオーダである命令
の間でさらなるバイパス条件を生じさせる。そのような
実行がなおも書き込み直列化されるが、そのような挙動
は、所与の記憶場所に対する読み取りに関してプロセッ
サによって返される値が他のプロセッサによって提示さ
れる値ストリームと同期化される速度を落とすため、望
ましくないかもしれないことがわかる。
【0136】本発明のもう一つの実施態様は、命令を動
的に生成し、命令待ち行列503に挿入することができ
る。この実施態様は、干渉試験およびデータ・パイパス
の静的実施態様に関して上記したものに類似した命令ス
ケジュールを動的に生成する。したがって、プロセッサ
によって実行される命令は、静的実施態様と動的実施態
様とで類似しており、唯一の違いは、スケジュールが、
動的実施態様の場合にはプログラム実行時にプロセッサ
によって生成され、静的実施態様の場合にはコンパイラ
によって生成されることにある。
【0137】添付図面を参照しながら例示的な実施態様
を本明細書に記載したが、本システムおよび方法はこれ
らの正確な実施態様に限定されず、本発明の範囲または
本質を逸することなく、他にも種々の変更および変形が
当業者によって加えられることが理解されよう。そのよ
うなすべての変更および変形は、請求の範囲によって定
義される本発明の範囲に含まれるものとされる。
【0138】まとめとして、本発明の構成に関して以下
の事項を開示する。 (1)アウトオブオーダ実行を実現するコンピュータ処
理システムで命令を実行のためにスケジュールする方法
であって、次の命令を選択し、命令シーケンス中のその
現在位置からより早い位置に移動するステップと、選択
命令が読み取りアクセスのために前記記憶場所を参照で
きるかどうかを決定するステップと、選択命令が読み取
りアクセスのために前記記憶場所を参照できる場合、読
み取りアクセスのために前記記憶場所を曖昧に参照でき
る非選択命令が選択命令を越えてあらかじめ移動された
かどうかを決定するステップと、非選択命令が選択命令
を越えてあらかじめ移動されており、非選択命令がデー
タを読み取りアクセスした記憶場所のアドレスが、選択
命令によってデータが読み取りアクセスされる記憶場所
のアドレスと同じである場合、選択命令の実行中に実行
され、選択命令に非選択命令によってあらかじめ読み取
りアクセスされたデータをパスするバイパス・シーケン
スを設けるステップと、選択命令が読み取りアクセスの
ために記憶場所を参照できる場合、選択命令が以前に非
選択命令を越えて移動されたかどうかを決定するステッ
プと、非選択命令による将来の参照のために、選択命令
の記録を格納するための機構を追加するステップと、を
含むことを特徴とする方法。 (2)選択命令が非選択命令を越えてあらかじめ移動さ
れた場合、前記追加するステップを実行する上記(1)
記載の方法。 (3)非選択命令が読み取りアクセスのための前記記憶
場所を曖昧参照できる場合、前記追加するステップを実
行する上記(1)記載の方法。 (4)選択すべき命令が残っているかどうかを決定する
ステップと、選択するべき命令が残っている場合、前記
選択するステップに戻るステップと、をさらに含む上記
(1)記載の方法。 (5)異なる命令を越えてあらかじめ移動された第一の
命令に、異なる命令を識別するロードタグ識別子を割り
当てるステップをさらに含む上記(1)記載の方法。 (6)非選択命令が以前に選択命令を越えて移動された
かどうかを決定する前記ステップが、ロードタグ識別子
が非選択命令に割り当てられたことがあるかどうかを決
定するステップと、ロードタグ識別子が選択命令を識別
するかどうかを決定するステップと、を含む上記(5)
記載の方法。 (7)選択命令が以前に非選択命令を越えて移動された
かどうかを決定する前記ステップが、ロードタグ識別子
が選択命令に割り当てられたことがあるかどうかを決定
するステップと、ロードタグ識別子が非選択命令を識別
するかどうかを決定するステップと、を含む上記(5)
記載の方法。 (8)ロードタグ識別子をアウトオブオーダ・ロード命
令語とともに格納するステップをさらに含む上記(5)
記載の方法。 (9)アウトオブオーダ実行を実現するコンピュータ処
理システムで命令を実行のためにスケジュールする方法
であって、次の命令を選択し、命令シーケンス中のその
現在位置からより早い位置に移動するステップと、選択
命令が読み取りアクセスのために記憶場所を参照するか
もしれないかどうかを決定するステップと、選択命令が
読み取りアクセスのために記憶場所を参照するかもしれ
ない場合、選択命令が、読み取りアクセスのために記憶
場所を参照するかもしれない非選択命令に対してインオ
ーダ命令であるかどうかを決定するステップと、選択命
令が、非選択命令に対してインオーダ命令であり、非選
択命令がデータを読み取りアクセスしたところの記憶場
所のアドレスが、選択命令がデータを読み取りアクセス
するところの記憶場所のアドレスと同じである場合、前
記選択命令の実行中に実行される、非選択命令によって
以前に読み取りアクセスされたデータを選択命令にパス
するバイパス・シーケンスを設けるステップと、選択命
令が読み取りアクセスのために記憶場所を参照するかも
しれない場合、前記選択命令が非選択命令に対してアウ
トオブオーダ命令であるかどうかを決定するステップ
と、前記選択命令が前記非選択命令に対してアウトオブ
オーダ命令である場合、前記非選択命令による将来の参
照のために、選択命令のレコードを格納するための機構
を追加するステップと、を含むことを特徴とする方法。 (10)選択命令が非選択命令に対してアウトオブオー
ダ命令である場合、前記追加ステップを実行する上記
(9)記載の方法。 (11)非選択命令が読み取りアクセスのために記憶場
所を曖昧に参照するかもしれない場合、前記追加ステッ
プを実行する上記(9)記載の方法。 (12)レコードが、選択命令がデータを読み取りアク
セスしたところの記憶アドレスと、データに対応する値
とを含む上記(9)記載の方法。 (13)各アウトオブオーダ命令に識別子を割り当て
て、アウトオブオーダ命令およびアウトオブオーダ命令
に対してインオーダである命令を識別するステップをさ
らに含む上記(9)記載の方法。 (14)識別子をアウトオブオーダ命令語の中に格納す
る上記(13)記載の方法。 (15)識別子を、それに割り当てられたアウトオブオ
ーダ命令のレコードの中に記録する上記(13)記載の
方法。 (16)アウトオブオーダ命令に割り当てられた識別子
で識別されるインオーダ命令が実行されており、干渉し
ないものであると決定されている場合、アウトオブオー
ダ命令のレコードを破壊するための手段を追加するステ
ップをさらに含む上記(13)記載の方法。 (17)アウトオブオーダ命令のレコードが後の割り当
て要求によって自動的に取って代わられるように設ける
上記(9)記載の方法。 (18)レコード中に格納されたデータ単位が、不可分
性を保証する可能な最大データ単位である上記(9)記
載の方法。 (19)多数のアウトオブオーダ命令がインオーダ命令
と同じアドレスを参照する場合、最下位の論理プログラ
ム・アドレスを有するデータがインオーダ・ロード命令
にパスされることを保証するために優先順位符号化を実
現するステップをさらに含む上記(9)記載の方法。 (20)命令シーケンスが少なくとも一つの処理装置に
よって実行され、多数の読み取りアクセスがアウトオブ
オーダ・ロード命令および少なくとも一つの他のロード
命令によって起動されるコンピュータ処理システム中の
記憶場所からの多数の読み取りアクセスの間に得られる
データ値の間の整合性を執行する方法であって、アウト
オブオーダ・ロード命令を実行して少なくとも一つの処
理装置を制御して、アウトオブオーダ・ロード命令によ
って識別される記憶場所から第一のデータを少なくとも
読み取りアクセスさせるステップと、少なくとも一つの
他のロード命令が使用するための、第一のデータがロー
ドされたところの記憶場所のアドレスと、第一のデータ
に対応する値とを含む、アウトオブオーダ・ロード命令
のレコードを生成するステップと、少なくとも一つの他
のロード命令を実行し、少なくとも一つの他のロード命
令の実行中に少なくとも一つの処理装置を制御して、ア
ウトオブオーダ命令が第一のデータをロードしたところ
の記憶場所のアドレスが、少なくとも一つの他のロード
命令がデータをロードするところのアドレスと重複す
る、または同じであるかどうかを決定するステップと、
アドレスが同じである、または重複する場合、それぞれ
第一のデータまたはその一部をレコードから少なくとも
一つの他のロード命令にパスするステップと、を実行さ
せるステップと、を含むことを特徴とする方法。 (21)処理装置が命令シーケンス中のアウトオブオー
ダ・ロード命令の元の位置に達した場合、レコードを破
壊するステップをさらに含む上記(20)記載の方法。 (22)命令シーケンス中のアウトオブオーダ・ロード
命令の元の位置でレコードを削除するための手段を追加
するステップをさらに含む上記(20)記載の方法。 (23)各アウトオブオーダ命令に識別子を割り当て
て、アウトオブオーダ命令およびアウトオブオーダ命令
に対してインオーダである命令を識別するステップをさ
らに含む上記(20)記載の方法。 (24)アウトオブオーダ命令を実行する前記ステップ
が、少なくとも一つの処理装置を制御して、第一のデー
タをアウトオブオーダ命令によって識別される第一の標
的レジスタ中に配置させるステップをさらに含む上記
(20)記載の方法。 (25)前記決定ステップおよびパスするステップが、
少なくとも一つの処理装置によって実行される一つの命
令を含む上記(20)記載の方法。 (26)命令シーケンスが少なくとも一つの処理装置に
よって実行され、多数の読み取りアクセスが少なくとも
一つのアウトオブオーダ・ロード命令および一つのイン
オーダ・ロード命令によって起動されるコンピュータ処
理システムの記憶サブシステム中の場所からの多数の読
み取りアクセスの間に得られるデータ値の間の整合性を
執行するための装置であって、データが読み取りアクセ
スされたところの記憶サブシステム中の場所のアドレス
と、データに対応する値とを含む、少なくとも一つのア
ウトオブオーダ・ロード命令のレコードを格納するため
の格納手段と、インオーダ命令を処理するとき、少なく
とも一つのアウトオブオーダ・ロード命令がデータを読
み取りアクセスしたところの記憶サブシステム中の場所
のアドレスと、インオーダ・ロード命令がデータを読み
取りアクセスするところの記憶サブシステム中の場所の
アドレスとを比較するための比較論理と、前記格納手段
に指図してレコードを格納させ、少なくとも一つのアウ
トオブオーダ命令のレコードにアクセスしてアドレスを
前記比較論理に供給するための制御論理と、前記比較論
理によって比較されたアドレスがそれぞれ等しい、また
は重複する場合、前記制御論理の制御の下で、前記格納
手段に格納された値またはその一部をインオーダ命令に
供給するためのデータ選択機構と、を含むことを特徴と
する装置。 (27)前記格納手段が、CAM構造またはレコードを
格納するために予め指定された前記記憶サブシステム中
の区域である上記(26)記載の装置。 (28)前記レコードが、前記アウトオブオーダ・ロー
ド命令に対応するインオーダ・ロード命令を識別するた
めの識別子をさらに含む上記(26)記載の方法。 (29)前記識別子で識別されるように前記アウトオブ
オーダ命令に対応する前記インオーダ命令が実行されて
おり、干渉しないものであると決定されている場合、記
格納手段に格納されたレコードを削除するための手段を
さらに含む上記(28)記載の装置。 (30)少なくとも一つのアウトオブオーダ・ロード命
令およびインオーダ・ロード命令を処理するとき、デー
タを読み取りアクセスするところの記憶サブシステム中
の場所のアドレスを生成するためのアドレス生成論理を
さらに含む上記(26)記載の装置。 (31)インオーダ・ロード命令がデータを読み取りア
クセスするところの記憶中の場所のアドレスからデータ
を読み取りアクセスしたことがある多数のアウトオブオ
ーダ・ロード命令が存在する場合、命令シーケンス中で
最下位の元の位置を有するデータを検出するための優先
順位符号化手段をさらに含む上記(26)記載の装置。 (32)命令シーケンスが少なくとも一つの処理装置に
よって実行され、多数の読み取りアクセスが少なくとも
一つの先に実行されたロード命令および現在実行中のロ
ード命令によって起動されるコンピュータ処理システム
の記憶サブシステム中の場所からの多数の読み取りアク
セスの間に得られるデータ値の間の整合性を執行するた
めの装置であって、データが読み取りアクセスされたと
ころの記憶サブシステム中の場所のアドレスと、データ
とを含む、少なくとも一つの先に実行された命令のレコ
ードを格納するための格納手段と、現在実行中の命令を
処理するとき、少なくとも一つの先に実行された命令が
データを読み取りアクセスしたところの場所のアドレス
と、現在実行中の命令がデータを読み取りアクセスする
ところの場所のアドレスとを比較し、少なくとも一つの
先に実行された命令が、現在実行中の命令よりも後の命
令番号をそれに対応して有するかどうかを決定するため
の干渉試験および優先順位エンコーダと、前記格納手段
に指図してレコードを格納させ、少なくとも一つの先に
実行された命令のレコードにアクセスしてアドレスを前
記干渉試験および優先順位エンコーダに供給するための
制御論理と、前記前記干渉試験および優先順位エンコー
ダによって比較されたアドレスが等しい、または重複
し、少なくとも一つの先に実行された命令が、より遅い
命令番号をそれに対応して有する場合、前記干渉試験お
よび優先順位符号化論理の制御の下で、前記格納手段に
格納されたデータまたはその一部を現在実行中の命令に
供給するためのデータ選択機構と、を含むことを特徴と
する装置。 (33)前記干渉試験および優先順位エンコーダによっ
て比較されるアドレスが等しくなく、重複もしない場
合、前記データ選択機構が、記憶サブシステム中に格納
されたデータを現在実行中の命令に供給する上記(3
2)記載の装置。 (34)少なくとも一つの先に実行された命令が二つ以
上存在する場合、前記データ選択機構が、論理的にもっ
とも早い干渉する先に実行された命令に対応するデータ
を格納手段から現在実行中の命令に供給する上記(3
2)記載の装置。 (35)現在実行中の命令がデータを読み取りアクセス
するところの記憶中の場所のアドレスからデータを読み
取りアクセスしたことがある少なくとも一つの先に実行
された命令が二つ以上存在する場合、前記干渉試験およ
び優先順位エンコーダが、命令シーケンス中で最下位の
元の位置を有するデータを検出する上記(32)記載の
装置。 (36)命令番号が、処理装置によって所与の期間に処
理することができる数の少なくとも2倍の数nの命令を
符号化するのに十分に広い上記(32)記載の装置。 (37)少なくとも一つの先に実行された命令の命令番
号が、現在実行中の命令の命令番号に続くn−1の範囲
にある場合、少なくとも一つの先に実行された命令が現
在実行中の命令よりも後の命令番号を有する上記(3
6)記載の装置。
【図面の簡単な説明】
【図1】従来技術による、記憶動作以外の動作の順序変
更を実行する場合の命令のスケジューリングを示す流れ
図である。
【図2】本発明の実施態様による、元の命令シーケンス
から動作を順序変更する方法を示す流れ図である。
【図3】図2の順序変更された動作を実行する方法を示
す流れ図である。
【図4】記憶動作の静的順序変更ならびに干渉試験およ
びデータ・バイパス・シーケンスのソフトウェアベース
の実現形態をサポートする従来のコンピュータ処理シス
テムの機能ブロック図である。
【図5】本発明の実施態様にしたがって、図3のシステ
ムによるアウトオブオーダ・ロード動作の実行をサポー
トするために使用されるハードウェア資源を示すブロッ
ク図である。
【図6】記憶動作の動的順序変更ならびに干渉試験およ
びデータ・バイパス・シーケンスのハードウェアベース
の実現形態をサポートする従来のコンピュータ処理シス
テムの機能ブロック図である。
【図7】本発明の実施態様にしたがって、図4または6
のシステムによるアウトオブオーダ・ロード動作の実行
をサポートするために使用されるハードウェア資源を示
すブロック図である。
【符号の説明】
301、501 記憶サブシステム 302、502 データ・キャッシュ 303、503 命令待ち行列 304、504 命令キャッシュ 305 ロード装置 307 実行装置 309、509 分岐装置 311 レジスタ・ファイル 401、601 制御論理 402、603 アドレス生成論理 403、605 ロードオーダ・テーブル 404 比較論理 405、609、611 バイパス用データ選択機構 607 干渉試験および優先順位エンコーダ

Claims (37)

    【特許請求の範囲】
  1. 【請求項1】アウトオブオーダ実行を実現するコンピュ
    ータ処理システムで命令を実行のためにスケジュールす
    る方法であって、 次の命令を選択し、命令シーケンス中のその現在位置か
    らより早い位置に移動するステップと、 選択命令が読み取りアクセスのために前記記憶場所を参
    照できるかどうかを決定するステップと、 選択命令が読み取りアクセスのために前記記憶場所を参
    照できる場合、読み取りアクセスのために前記記憶場所
    を曖昧に参照できる非選択命令が選択命令を越えてあら
    かじめ移動されたかどうかを決定するステップと、 非選択命令が選択命令を越えてあらかじめ移動されてお
    り、非選択命令がデータを読み取りアクセスした記憶場
    所のアドレスが、選択命令によってデータが読み取りア
    クセスされる記憶場所のアドレスと同じである場合、 選択命令の実行中に実行され、 選択命令に非選択命令によってあらかじめ読み取りアク
    セスされたデータをパスするバイパス・シーケンスを設
    けるステップと、 選択命令が読み取りアクセスのために記憶場所を参照で
    きる場合、選択命令が以前に非選択命令を越えて移動さ
    れたかどうかを決定するステップと、 非選択命令による将来の参照のために、選択命令の記録
    を格納するための機構を追加するステップと、を含むこ
    とを特徴とする方法。
  2. 【請求項2】選択命令が非選択命令を越えてあらかじめ
    移動された場合、前記追加するステップを実行する請求
    項1記載の方法。
  3. 【請求項3】非選択命令が読み取りアクセスのための前
    記記憶場所を曖昧参照できる場合、前記追加するステッ
    プを実行する請求項1記載の方法。
  4. 【請求項4】選択すべき命令が残っているかどうかを決
    定するステップと、 選択するべき命令が残っている場合、前記選択するステ
    ップに戻るステップと、をさらに含む請求項1記載の方
    法。
  5. 【請求項5】異なる命令を越えてあらかじめ移動された
    第一の命令に、異なる命令を識別するロードタグ識別子
    を割り当てるステップをさらに含む請求項1記載の方
    法。
  6. 【請求項6】非選択命令が以前に選択命令を越えて移動
    されたかどうかを決定する前記ステップが、 ロードタグ識別子が非選択命令に割り当てられたことが
    あるかどうかを決定するステップと、 ロードタグ識別子が選択命令を識別するかどうかを決定
    するステップと、を含む請求項5記載の方法。
  7. 【請求項7】選択命令が以前に非選択命令を越えて移動
    されたかどうかを決定する前記ステップが、 ロードタグ識別子が選択命令に割り当てられたことがあ
    るかどうかを決定するステップと、 ロードタグ識別子が非選択命令を識別するかどうかを決
    定するステップと、を含む請求項5記載の方法。
  8. 【請求項8】ロードタグ識別子をアウトオブオーダ・ロ
    ード命令語とともに格納するステップをさらに含む請求
    項5記載の方法。
  9. 【請求項9】アウトオブオーダ実行を実現するコンピュ
    ータ処理システムで命令を実行のためにスケジュールす
    る方法であって、次の命令を選択し、命令シーケンス中
    のその現在位置からより早い位置に移動するステップ
    と、 選択命令が読み取りアクセスのために記憶場所を参照す
    るかもしれないかどうかを決定するステップと、 選択命令が読み取りアクセスのために記憶場所を参照す
    るかもしれない場合、選択命令が、読み取りアクセスの
    ために記憶場所を参照するかもしれない非選択命令に対
    してインオーダ命令であるかどうかを決定するステップ
    と、 選択命令が、非選択命令に対してインオーダ命令であ
    り、非選択命令がデータを読み取りアクセスしたところ
    の記憶場所のアドレスが、選択命令がデータを読み取り
    アクセスするところの記憶場所のアドレスと同じである
    場合、前記選択命令の実行中に実行される、非選択命令
    によって以前に読み取りアクセスされたデータを選択命
    令にパスするバイパス・シーケンスを設けるステップ
    と、 選択命令が読み取りアクセスのために記憶場所を参照す
    るかもしれない場合、前記選択命令が非選択命令に対し
    てアウトオブオーダ命令であるかどうかを決定するステ
    ップと、 前記選択命令が前記非選択命令に対してアウトオブオー
    ダ命令である場合、前記非選択命令による将来の参照の
    ために、選択命令のレコードを格納するための機構を追
    加するステップと、を含むことを特徴とする方法。
  10. 【請求項10】選択命令が非選択命令に対してアウトオ
    ブオーダ命令である場合、前記追加ステップを実行する
    請求項9記載の方法。
  11. 【請求項11】非選択命令が読み取りアクセスのために
    記憶場所を曖昧に参照するかもしれない場合、前記追加
    ステップを実行する請求項9記載の方法。
  12. 【請求項12】レコードが、選択命令がデータを読み取
    りアクセスしたところの記憶アドレスと、データに対応
    する値とを含む請求項9記載の方法。
  13. 【請求項13】各アウトオブオーダ命令に識別子を割り
    当てて、アウトオブオーダ命令およびアウトオブオーダ
    命令に対してインオーダである命令を識別するステップ
    をさらに含む請求項9記載の方法。
  14. 【請求項14】識別子をアウトオブオーダ命令語の中に
    格納する請求項13記載の方法。
  15. 【請求項15】識別子を、それに割り当てられたアウト
    オブオーダ命令のレコードの中に記録する請求項13記
    載の方法。
  16. 【請求項16】アウトオブオーダ命令に割り当てられた
    識別子で識別されるインオーダ命令が実行されており、
    干渉しないものであると決定されている場合、アウトオ
    ブオーダ命令のレコードを破壊するための手段を追加す
    るステップをさらに含む請求項13記載の方法。
  17. 【請求項17】アウトオブオーダ命令のレコードが後の
    割り当て要求によって自動的に取って代わられるように
    設ける請求項9記載の方法。
  18. 【請求項18】レコード中に格納されたデータ単位が、
    不可分性を保証する可能な最大データ単位である請求項
    9記載の方法。
  19. 【請求項19】多数のアウトオブオーダ命令がインオー
    ダ命令と同じアドレスを参照する場合、最下位の論理プ
    ログラム・アドレスを有するデータがインオーダ・ロー
    ド命令にパスされることを保証するために優先順位符号
    化を実現するステップをさらに含む請求項9記載の方
    法。
  20. 【請求項20】命令シーケンスが少なくとも一つの処理
    装置によって実行され、多数の読み取りアクセスがアウ
    トオブオーダ・ロード命令および少なくとも一つの他の
    ロード命令によって起動されるコンピュータ処理システ
    ム中の記憶場所からの多数の読み取りアクセスの間に得
    られるデータ値の間の整合性を執行する方法であって、 アウトオブオーダ・ロード命令を実行して少なくとも一
    つの処理装置を制御して、アウトオブオーダ・ロード命
    令によって識別される記憶場所から第一のデータを少な
    くとも読み取りアクセスさせるステップと、 少なくとも一つの他のロード命令が使用するための、第
    一のデータがロードされたところの記憶場所のアドレス
    と、第一のデータに対応する値とを含む、アウトオブオ
    ーダ・ロード命令のレコードを生成するステップと、 少なくとも一つの他のロード命令を実行し、少なくとも
    一つの他のロード命令の実行中に少なくとも一つの処理
    装置を制御して、 アウトオブオーダ命令が第一のデータをロードしたとこ
    ろの記憶場所のアドレスが、少なくとも一つの他のロー
    ド命令がデータをロードするところのアドレスと重複す
    る、または同じであるかどうかを決定するステップと、 アドレスが同じである、または重複する場合、それぞれ
    第一のデータまたはその一部をレコードから少なくとも
    一つの他のロード命令にパスするステップと、を実行さ
    せるステップと、を含むことを特徴とする方法。
  21. 【請求項21】処理装置が命令シーケンス中のアウトオ
    ブオーダ・ロード命令の元の位置に達した場合、レコー
    ドを破壊するステップをさらに含む請求項20記載の方
    法。
  22. 【請求項22】命令シーケンス中のアウトオブオーダ・
    ロード命令の元の位置でレコードを削除するための手段
    を追加するステップをさらに含む請求項20記載の方
    法。
  23. 【請求項23】各アウトオブオーダ命令に識別子を割り
    当てて、アウトオブオーダ命令およびアウトオブオーダ
    命令に対してインオーダである命令を識別するステップ
    をさらに含む請求項20記載の方法。
  24. 【請求項24】アウトオブオーダ命令を実行する前記ス
    テップが、少なくとも一つの処理装置を制御して、第一
    のデータをアウトオブオーダ命令によって識別される第
    一の標的レジスタ中に配置させるステップをさらに含む
    請求項20記載の方法。
  25. 【請求項25】前記決定ステップおよびパスするステッ
    プが、少なくとも一つの処理装置によって実行される一
    つの命令を含む請求項20記載の方法。
  26. 【請求項26】命令シーケンスが少なくとも一つの処理
    装置によって実行され、多数の読み取りアクセスが少な
    くとも一つのアウトオブオーダ・ロード命令および一つ
    のインオーダ・ロード命令によって起動されるコンピュ
    ータ処理システムの記憶サブシステム中の場所からの多
    数の読み取りアクセスの間に得られるデータ値の間の整
    合性を執行するための装置であって、 データが読み取りアクセスされたところの記憶サブシス
    テム中の場所のアドレスと、データに対応する値とを含
    む、少なくとも一つのアウトオブオーダ・ロード命令の
    レコードを格納するための格納手段と、 インオーダ命令を処理するとき、少なくとも一つのアウ
    トオブオーダ・ロード命令がデータを読み取りアクセス
    したところの記憶サブシステム中の場所のアドレスと、
    インオーダ・ロード命令がデータを読み取りアクセスす
    るところの記憶サブシステム中の場所のアドレスとを比
    較するための比較論理と、 前記格納手段に指図してレコードを格納させ、少なくと
    も一つのアウトオブオーダ命令のレコードにアクセスし
    てアドレスを前記比較論理に供給するための制御論理
    と、 前記比較論理によって比較されたアドレスがそれぞれ等
    しい、または重複する場合、前記制御論理の制御の下
    で、前記格納手段に格納された値またはその一部をイン
    オーダ命令に供給するためのデータ選択機構と、を含む
    ことを特徴とする装置。
  27. 【請求項27】前記格納手段が、CAM構造またはレコ
    ードを格納するために予め指定された前記記憶サブシス
    テム中の区域である請求項26記載の装置。
  28. 【請求項28】前記レコードが、前記アウトオブオーダ
    ・ロード命令に対応するインオーダ・ロード命令を識別
    するための識別子をさらに含む請求項26記載の方法。
  29. 【請求項29】前記識別子で識別されるように前記アウ
    トオブオーダ命令に対応する前記インオーダ命令が実行
    されており、干渉しないものであると決定されている場
    合、記格納手段に格納されたレコードを削除するための
    手段をさらに含む請求項28記載の装置。
  30. 【請求項30】少なくとも一つのアウトオブオーダ・ロ
    ード命令およびインオーダ・ロード命令を処理すると
    き、データを読み取りアクセスするところの記憶サブシ
    ステム中の場所のアドレスを生成するためのアドレス生
    成論理をさらに含む請求項26記載の装置。
  31. 【請求項31】インオーダ・ロード命令がデータを読み
    取りアクセスするところの記憶中の場所のアドレスから
    データを読み取りアクセスしたことがある多数のアウト
    オブオーダ・ロード命令が存在する場合、命令シーケン
    ス中で最下位の元の位置を有するデータを検出するため
    の優先順位符号化手段をさらに含む請求項26記載の装
    置。
  32. 【請求項32】命令シーケンスが少なくとも一つの処理
    装置によって実行され、多数の読み取りアクセスが少な
    くとも一つの先に実行されたロード命令および現在実行
    中のロード命令によって起動されるコンピュータ処理シ
    ステムの記憶サブシステム中の場所からの多数の読み取
    りアクセスの間に得られるデータ値の間の整合性を執行
    するための装置であって、 データが読み取りアクセスされたところの記憶サブシス
    テム中の場所のアドレスと、データとを含む、少なくと
    も一つの先に実行された命令のレコードを格納するため
    の格納手段と、 現在実行中の命令を処理するとき、少なくとも一つの先
    に実行された命令がデータを読み取りアクセスしたとこ
    ろの場所のアドレスと、現在実行中の命令がデータを読
    み取りアクセスするところの場所のアドレスとを比較
    し、少なくとも一つの先に実行された命令が、現在実行
    中の命令よりも後の命令番号をそれに対応して有するか
    どうかを決定するための干渉試験および優先順位エンコ
    ーダと、 前記格納手段に指図してレコードを格納させ、少なくと
    も一つの先に実行された命令のレコードにアクセスして
    アドレスを前記干渉試験および優先順位エンコーダに供
    給するための制御論理と、 前記前記干渉試験および優先順位エンコーダによって比
    較されたアドレスが等しい、または重複し、少なくとも
    一つの先に実行された命令が、より遅い命令番号をそれ
    に対応して有する場合、前記干渉試験および優先順位符
    号化論理の制御の下で、前記格納手段に格納されたデー
    タまたはその一部を現在実行中の命令に供給するための
    データ選択機構と、を含むことを特徴とする装置。
  33. 【請求項33】前記干渉試験および優先順位エンコーダ
    によって比較されるアドレスが等しくなく、重複もしな
    い場合、前記データ選択機構が、記憶サブシステム中に
    格納されたデータを現在実行中の命令に供給する請求項
    32記載の装置。
  34. 【請求項34】少なくとも一つの先に実行された命令が
    二つ以上存在する場合、前記データ選択機構が、論理的
    にもっとも早い干渉する先に実行された命令に対応する
    データを格納手段から現在実行中の命令に供給する請求
    項32記載の装置。
  35. 【請求項35】現在実行中の命令がデータを読み取りア
    クセスするところの記憶中の場所のアドレスからデータ
    を読み取りアクセスしたことがある少なくとも一つの先
    に実行された命令が二つ以上存在する場合、前記干渉試
    験および優先順位エンコーダが、命令シーケンス中で最
    下位の元の位置を有するデータを検出する請求項32記
    載の装置。
  36. 【請求項36】命令番号が、処理装置によって所与の期
    間に処理することができる数の少なくとも2倍の数nの
    命令を符号化するのに十分に広い請求項32記載の装
    置。
  37. 【請求項37】少なくとも一つの先に実行された命令の
    命令番号が、現在実行中の命令の命令番号に続くn−1
    の範囲にある場合、少なくとも一つの先に実行された命
    令が現在実行中の命令よりも後の命令番号を有する請求
    項36記載の装置。
JP2000026002A 1999-02-03 2000-02-03 コンピュータ処理システムにおけるロード動作を順序変更する方法および装置 Expired - Fee Related JP3488162B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/243721 1999-02-03
US09/243,721 US6189088B1 (en) 1999-02-03 1999-02-03 Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location

Publications (2)

Publication Number Publication Date
JP2000222207A true JP2000222207A (ja) 2000-08-11
JP3488162B2 JP3488162B2 (ja) 2004-01-19

Family

ID=22919859

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000026002A Expired - Fee Related JP3488162B2 (ja) 1999-02-03 2000-02-03 コンピュータ処理システムにおけるロード動作を順序変更する方法および装置

Country Status (4)

Country Link
US (1) US6189088B1 (ja)
JP (1) JP3488162B2 (ja)
KR (1) KR100334479B1 (ja)
TW (1) TW446912B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1109096A2 (en) * 1999-12-17 2001-06-20 Fujitsu Limited Processor and method of controlling the same
JP2017527020A (ja) * 2014-07-25 2017-09-14 インテル・コーポレーション ゲストイメージからのコードを実行するための実行時オプティマイザを実行するシステム変換器
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089404B1 (en) * 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US6484240B1 (en) * 1999-07-30 2002-11-19 Sun Microsystems, Inc. Mechanism for reordering transactions in computer systems with snoop-based cache consistency protocols
US6381691B1 (en) * 1999-08-13 2002-04-30 International Business Machines Corporation Method and apparatus for reordering memory operations along multiple execution paths in a processor
US6442522B1 (en) * 1999-10-12 2002-08-27 International Business Machines Corporation Bi-directional natural language system for interfacing with multiple back-end applications
US6658559B1 (en) * 1999-12-31 2003-12-02 Intel Corporation Method and apparatus for advancing load operations
US6691220B1 (en) * 2000-06-06 2004-02-10 International Business Machines Corporation Multiprocessor speculation mechanism via a barrier speculation flag
US6725340B1 (en) 2000-06-06 2004-04-20 International Business Machines Corporation Mechanism for folding storage barrier operations in a multiprocessor system
US6728873B1 (en) 2000-06-06 2004-04-27 International Business Machines Corporation System and method for providing multiprocessor speculation within a speculative branch path
US6748518B1 (en) 2000-06-06 2004-06-08 International Business Machines Corporation Multi-level multiprocessor speculation mechanism
US6963967B1 (en) 2000-06-06 2005-11-08 International Business Machines Corporation System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture
US6920547B2 (en) * 2000-12-20 2005-07-19 Intel Corporation Register adjustment based on adjustment values determined at multiple stages within a pipeline of a processor
US6918030B2 (en) * 2002-01-10 2005-07-12 International Business Machines Corporation Microprocessor for executing speculative load instructions with retry of speculative load instruction without calling any recovery procedures
US20040128448A1 (en) * 2002-12-31 2004-07-01 Intel Corporation Apparatus for memory communication during runahead execution
US7269694B2 (en) * 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring loads to support transactional program execution
US20040168045A1 (en) * 2003-02-21 2004-08-26 Dale Morris Out-of-order processor executing speculative-load instructions
US20050114632A1 (en) * 2003-11-21 2005-05-26 Intel Corporation Method and apparatus for data speculation in an out-of-order processor
JP4376692B2 (ja) * 2004-04-30 2009-12-02 富士通株式会社 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
KR100607987B1 (ko) * 2004-06-24 2006-08-02 삼성전자주식회사 명령어 스케줄링을 수행하는 메모리 제어장치 및 방법
US20070074195A1 (en) 2005-09-23 2007-03-29 Shih-Wei Liao Data transformations for streaming applications on multiprocessors
US8266413B2 (en) * 2006-03-14 2012-09-11 The Board Of Trustees Of The University Of Illinois Processor architecture for multipass processing of instructions downstream of a stalled instruction
US7904697B2 (en) * 2008-03-07 2011-03-08 International Business Machines Corporation Load register instruction short circuiting method
US8549504B2 (en) * 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US9329869B2 (en) 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US9286072B2 (en) 2011-10-03 2016-03-15 International Business Machines Corporation Using register last use infomation to perform decode-time computer instruction optimization
US20130086364A1 (en) 2011-10-03 2013-04-04 International Business Machines Corporation Managing a Register Cache Based on an Architected Computer Instruction Set Having Operand Last-User Information
US9354874B2 (en) 2011-10-03 2016-05-31 International Business Machines Corporation Scalable decode-time instruction sequence optimization of dependent instructions
US10078515B2 (en) 2011-10-03 2018-09-18 International Business Machines Corporation Tracking operand liveness information in a computer system and performing function based on the liveness information
US8756591B2 (en) 2011-10-03 2014-06-17 International Business Machines Corporation Generating compiled code that indicates register liveness
US8612959B2 (en) 2011-10-03 2013-12-17 International Business Machines Corporation Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization
US8615745B2 (en) 2011-10-03 2013-12-24 International Business Machines Corporation Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization
US9697002B2 (en) 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9354888B2 (en) 2012-03-28 2016-05-31 International Business Machines Corporation Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
GB2551548B (en) * 2016-06-22 2019-05-08 Advanced Risc Mach Ltd Register restoring branch instruction
US10241789B2 (en) * 2016-12-27 2019-03-26 Intel Corporation Method to do control speculation on loads in a high performance strand-based loop accelerator
US11593117B2 (en) 2018-06-29 2023-02-28 Qualcomm Incorporated Combining load or store instructions
SG11202104428PA (en) 2019-01-31 2021-05-28 Ibm Handling an input/output store instruction
TWI767175B (zh) 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
WO2020157594A1 (en) 2019-01-31 2020-08-06 International Business Machines Corporation Handling an input/output store instruction
EP3699771A1 (en) * 2019-02-21 2020-08-26 CoreMedia AG Method and apparatus for managing data in a content management system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4237417C2 (de) 1992-03-25 1997-01-30 Hewlett Packard Co Datenverarbeitungssystem
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
US5588126A (en) * 1993-12-30 1996-12-24 Intel Corporation Methods and apparatus for fordwarding buffered store data on an out-of-order execution 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
US5758081A (en) 1995-12-08 1998-05-26 Aytac; Haluk M. Computing and communications transmitting, receiving system, with a push button interface, that is continously on, that pairs up with a personal computer and carries out mainly communications related routine tasks
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1109096A2 (en) * 1999-12-17 2001-06-20 Fujitsu Limited Processor and method of controlling the same
EP1109096A3 (en) * 1999-12-17 2004-02-11 Fujitsu Limited Processor and method of controlling the same
US6889315B2 (en) 1999-12-17 2005-05-03 Fujitsu Limited Processor and method of controlling the same
JP2017527020A (ja) * 2014-07-25 2017-09-14 インテル・コーポレーション ゲストイメージからのコードを実行するための実行時オプティマイザを実行するシステム変換器
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture

Also Published As

Publication number Publication date
KR20000076584A (ko) 2000-12-26
US6189088B1 (en) 2001-02-13
TW446912B (en) 2001-07-21
KR100334479B1 (ko) 2002-04-26
JP3488162B2 (ja) 2004-01-19

Similar Documents

Publication Publication Date Title
JP3488162B2 (ja) コンピュータ処理システムにおけるロード動作を順序変更する方法および装置
US5758051A (en) Method and apparatus for reordering memory operations in a processor
US5918005A (en) Apparatus region-based detection of interference among reordered memory operations in a processor
JP6095670B2 (ja) コンピュータ・システム内のオペランド活性情報の維持
JP3772900B2 (ja) コンピュータシステム
US8019975B2 (en) System and method for handling load and/or store operations in a superscalar microprocessor
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
US7568089B1 (en) Flag management in processors enabled for speculative execution of micro-operation traces
US5664137A (en) Method and apparatus for executing and dispatching store operations in a computer system
US7660971B2 (en) Method and system for dependency tracking and flush recovery for an out-of-order microprocessor
EP1150202A2 (en) Method and apparatus for optimizing execution of load and store instructions
WO2006101572A2 (en) The generation of multiple checkpoints in a processor that supports speculative execution
US6378062B1 (en) Method and apparatus for performing a store operation
US6381691B1 (en) Method and apparatus for reordering memory operations along multiple execution paths in a processor
US5699538A (en) Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor
US7694110B1 (en) System and method of implementing microcode operations as subroutines
JPH10283178A (ja) 命令を発行するための方法及びシステム

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees