JP2003280896A - 命令発行装置及び命令発行方法 - Google Patents
命令発行装置及び命令発行方法Info
- Publication number
- JP2003280896A JP2003280896A JP2002077091A JP2002077091A JP2003280896A JP 2003280896 A JP2003280896 A JP 2003280896A JP 2002077091 A JP2002077091 A JP 2002077091A JP 2002077091 A JP2002077091 A JP 2002077091A JP 2003280896 A JP2003280896 A JP 2003280896A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- load
- register
- circuit
- stage
- 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
Links
- 238000000034 method Methods 0.000 title claims description 11
- 238000001514 detection method Methods 0.000 claims description 34
- 230000001419 dependent effect Effects 0.000 claims description 25
- 230000004044 response Effects 0.000 claims description 2
- 239000000872 buffer Substances 0.000 description 51
- 238000010586 diagram Methods 0.000 description 17
- 101100311549 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SWC5 gene Proteins 0.000 description 9
- 238000013507 mapping Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 101000694017 Homo sapiens Sodium channel protein type 5 subunit alpha Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
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)
Abstract
生した際、このロード命令と多段の依存関係を有する命
令を高速に検出することが困難であった。 【解決手段】 第1の検出回路16aは、ロード命令と
直接的に依存したレジスタを検出する。第2の検出回路
16bは、第1の検出回路16aの出力信号及びキャッ
シュ・ミス信号L0Miss1Wに応じて、実行状態に
ある全ての命令とパイプラインの各ステージにある全て
ロード命令との間で多段の間接的な依存関係を検出す
る。
Description
ブ・オーダ(Out-of-order)に命令を発行するマイクロ
プロセッサに係わり、特に、命令スケジュールユニット
に使用される命令発行装置及び命令発行方法に関する。
方式としてアウト・オブ・オーダ実行がある。このアウ
ト・オブ・オーダ実行は、先行命令と依存関係の無い後
続命令を順不同に実行する方式である。アウト・オブ・
オーダ実行は、演算器を有効に利用することが可能であ
り、マイクロプロセッサを高速に動作させることができ
る。
発行するマイクロプロセッサは、投機的に命令を発行し
実行する。このため、ロード命令にキャッシュ・ミスが
発生した場合、このロード命令にデータが依存した幾つ
かの命令を無効とする必要がある。この後、キャッシュ
・メモリがリフィルされると、キャッシュ・ミスしたロ
ード命令に依存関係のある命令群が再発行され、実行さ
れる。
複数の命令とロード命令との依存関係を示している。こ
こで、I、R、E、Mは、パイプラインの各ステージを
示し、Iは命令フェッチ、Rはレジスタ・リネーミン
グ、Eは実行、Mはデータ・キャッシュ・アクセスであ
る。ロード命令が発行されてから命令がオペランドを読
み出すまでのレイテンシは3サイクルある。このため、
ロード命令が発行された次のサイクルと、その次のサイ
クル(図14に示すスロット1、2)にロード命令とデ
ータが依存のある命令を発行できないようにスケジュー
ルされる。スロット3とスロット4では、キャッシュが
ヒットすると仮定してロード命令に依存関係のある命令
が投機的に発行される。キャッシュ・ミスが判明するの
はMステージである。このため、命令のスケジューリン
グによる遅延のため、スロット4の命令発行の時点にお
いて、スロット0のキャッシュ・ミスの有無を考慮でき
ない。
ッシュ・ミスしているため、データを得ることができな
い。このため、スロット3とスロット4の命令は発行さ
れたものの正しく実行できないこととなる。したがっ
て、キャッシュ・ミスしたスロット0のロード命令と、
スロット3、4にある命令を全て破棄した後、キャッシ
ュのリフィルを行い、ロード命令を再発行する。さら
に、スロット3、4にあった破棄された命令を再発行す
る。スロット3と4には、ロード命令とデータが依存関
係のない命令が配置されることもある。この場合、命令
を破棄する必要はない。しかし、依存関係の有無によっ
て破棄するかどうかを決定することは困難である。この
ため、スロット3、4の命令をとにかく破棄し、後に再
実行する。したがって、無駄に命令を破棄してしまい命
令実行効率が低下する。
近時、1つのスロットにおいて、2つの整数演算命令を
同時に実行できるマイクロプロセッサが開発されてい
る。この場合、合計4命令を破棄することになる。4命
令が全てロード命令に依存のない場合、全てが無駄に破
棄されたことになる。
21264 Microprocessor Architecture"、Proceedings I
nternational Conference on Computer Design: VLSI i
n Computers and processors、1998、ICCD "98、p90-9
5」には、キャッシュ・ミスしたロード命令に依存関係
のある命令群を再実行するための方法が開示されてい
る。
否かを予測し、ヒットと予測した場合のみ依存関係のあ
る命令を発行することによって、命令を破棄する確率を
下げている。しかし、ロード命令がヒットと予測され、
ロード命令と依存関係のない命令が発行された場合にお
いても、実際にはロード命令がミスヒットすることがあ
る。この場合、ロード命令と依存関係のない命令が無駄
に破棄されることになる。
令を無駄に破棄しないようにするため、スロット3、4
の命令がロード命令に依存するかどうかを判定し、依存
関係のある命令だけを破棄するようにしたとする。しか
し、実際には、ロード命令以降の命令がロード命令の結
果に依存するかどうかを判断するだけでは不十分であ
る。すなわち、ロード命令に直接依存しなくとも、例え
ばロード命令に直接依存するスロット3の命令にスロッ
ト4の命令がさらに依存するかどうかも調べる必要があ
る。つまり、ロード命令に直接依存する命令だけでな
く、ロード命令に直接依存する命令に、さらに依存する
命令といった多段の間接依存関係にある命令もキャンセ
ルする必要がある。
検出せず、投機的に発行した依存関係を有する全ての命
令をキャンセルする。この場合、キャンセルしなくても
よい命令をキャンセルしてしまい、実行効率が低下す
る。また、多段の間接依存関係を全て検出するために
は、データ・フロー・グラフをトレースする必要があ
る。これを実現しようとする場合、ハードウエアコスト
が大きくなるとともに、周波数低下の原因にもなる。
れたものであり、その目的とするところは、ロード命令
において、キャッシュ・ミスが発生した際、このロード
命令と多段の依存関係を有する命令を高速に検出するこ
とが可能な命令発行装置及び命令発行方法を提供しよう
とするものである。
は、上記課題を解決するため、命令をアウト・オブ・オ
ーダに投機的に発行する命令発行部と、前記命令発行部
により発行された命令と、パイプランの各ステージにあ
るロード命令を含む複数の命令との直接的な依存関係を
検出する第1の検出回路と、前記第1の検出回路の出力
信号と、前記ロード命令のキャッシュ・ミス信号とに基
づき、前記命令発行部により発行された命令と、前記パ
イプランの各ステージにあるキャッシュ・ミスしたロー
ド命令との間接的な依存関係を検出する第2の検出回路
とを具備している。
でロード命令と後続の命令との直接的な依存関係を検出
し、第2の検出回路で前記ロード命令と後続の命令との
間接的な依存関係を検出し、この検出した間接的な依存
関係を直接的な依存関係に変換し、前記ロード命令にキ
ャッシュ・ミスが発生したことを示す信号と変換された
前記直接的な依存関係とにより、前記ロード命令と間接
的な依存関係を有する命令を検出することを特徴とす
る。
て図面を参照して説明する。
成を示している。先ず、図1の構成について概略的に説
明する。
テージ、Sステージ、Dステージ、Aステージを有して
いる。Rステージ以降の各ステージは、整数ユニット
(IU)及び浮動小数点ユニット(FPU)からなる2
系統の回路を有している。
り、命令をフェッチする命令フェッチユニット11を有
している。命令フェッチユニット11は、例えば2命令
を同時にフェッチする。
テージである。Rステージは、前記命令フェッチユニッ
ト11に接続された命令デコーダ12、レジスタ・リネ
ーミング・ユニット13a、13bを有している。レジ
スタ・リネーミング・ユニット13a、13bは、さら
に命令デコーダ12に接続されている。命令デコーダ1
2は命令フェッチユニット11から供給される命令をデ
コードする。各レジスタ・リネーミング・ユニット13
a、13bは、例えばデコードされた2命令の論理レジ
スタに未使用の物理レジスタをそれぞれ割り当てる。
ージである。このSステージは、命令・ウィンドウ・バ
ッファ(命令発行部)14a、14b、レジスタ・スコ
ア・ボード・ユニット15a、15bを有している。命
令・ウィンドウ・バッファ14aは、命令デコーダ1
2、レジスタ・リネーミング・ユニット13a、及びレ
ジスタ・スコア・ボード・ユニット15aに接続されて
いる。また、命令・ウィンドウ・バッファ14bは、命
令デコーダ12、レジスタ・リネーミング・ユニット1
3b、及びレジスタ・スコア・ボード・ユニット15b
に接続されている。
15a、15bは、例えばフリップフロップ回路により
構成され、パイプラインで実行中の命令の書き込みレジ
スタに有効なデータが有るか否かを示す情報(フラグ)
を保持する。命令・ウィンドウ・バッファ14a、14
bは、レジスタ・リネーミング後の物理レジスタ番号等
を保持し、レジスタ・スコア・ボード・ユニット15
a、15bからの命令ステータスに基づき、所定の条件
を満足した場合、命令を発行する。命令・ウィンドウ・
バッファ14aは、パイプラインI0、I1に命令を発
行する。
15aは、依存関係検索回路(DLC)16に接続され
ている。DLC16は、ロード命令に直接的、又は間接
的に依存した命令を検索する。DLC16はレジスタ・
スコア・ボード・ユニット15aに設けられている。こ
れは、一般に、ロード命令が直接データを書き込むのは
整数レジスタファイルだからである。しかし、命令セッ
トによっては、浮動小数点レジスタファイルでデータを
書き込むこともある。したがって、図1に破線で示すよ
うに、DLC16をレジスタ・スコア・ボード・ユニッ
ト15bに設けてもよい。
スタ・スコア・ボード・ユニット15a及びDLC16
の詳細については後述する。
ジである。Dステージは、レジスタ・ファイル17a、
17bを有している。レジスタ・ファイル17aは前記
命令ウィンドウ・バッファ・14aに接続され、レジス
タ・ファイル17bは前記命令ウィンドウ・バッファ・
14bに接続されている。
る。Aステージは、演算ユニット18、19、及び浮動
小数点ユニット20を有している。演算ユニット18
は、整数ユニット18a、ロード・ストア・ユニット1
8bを有している。演算ユニット19は、整数ユニット
19a、乗算除算ユニット19を有している。整数ユニ
ット18a、ロード・ストア・ユニット18b、整数ユ
ニット19a、乗算除算ユニット19は、レジスタ・フ
ァイル17aに接続されている。浮動小数点ユニット2
0はレジスタ・ファイル17bに接続されている。
アウト・オブ・オーダ実行を行うプロセッサにおいて、
アウト・オブ・オーダに処理されるロード命令、ストア
命令に対して、メモリを介したデータ依存関係を維持す
る。具体的には、ロード・ストア・ユニット18bは、
メモリアクセス命令の順番を把握し、アウト・オブ・オ
ーダに発行されるメモリアクセス命令の順序を管理す
る。さらに、ロード・ストア・ユニット18bは、ロー
ド命令の実行において、図示せぬデータ・キャッシュが
ミスヒットした場合、キャッシュ・ミス信号L0Mis
s1n(nはパイプラインのステージ)を出力する。こ
のキャッシュ・ミス信号L0Miss1nは前記DLC
16に供給される。
示すダイアグラムである。各ステージの意味は、次の通
りである。
I、Tステージに対応している。
する。
1は、実行すべき2命令をフェッチする。この命令フェ
ッチユニット11によりフェッチされた2命令は、Rス
テージに供給される。
12は、命令フェッチユニット11から供給される命令
をデコードし、その命令がソースオペランドを必要とす
るか、及び演算結果はデスティネーション・レジスタに
書き込まれるかを判断する。レジスタ・リネーミング・
ユニット13a、13bは、命令とデコード情報に基づ
き、命令のソース・レジスタとデスティネーション・レ
ジスタの論理レジスタ番号に物理レジスタ番号を割り当
てる。図示せぬマッピングテーブルには、論理レジスタ
番号に対してそれまでに割り当てられた物理レジスタ番
号が対応して保存されている。このため、論理レジスタ
番号をキーとして最後に割り当てられた物理レジスタ番
号を検索することができる。ソース・レジスタを割り当
てる場合、命令コードから取り出した論理レジスタ番号
(Rs、Rt)をマッピングテーブルにインデックスと
して入力し、物理レジスタ番号(PRs、PRt)を検
索する。デスティネーション・レジスタ(Rd)を割り
当てる場合、先ず、未使用の物理レジスタ番号を保持し
ているフリーリストから未使用の物理レジスタ番号を取
り出す。この物理レジスタ番号をデスティネーション・
レジスタに割り当てる。さらに、割り当てた物理レジス
タ番号(PRd)を論理レジスタ番号をキーとして参照
できるように、マッピングテーブルに書き込む。同じ論
理レジスタ番号にそれまで割り当てられていた物理レジ
スタ番号(マッピングテーブルにおいて上書きされた物
理レジスタ番号)は、論理レジスタ番号とあわせてアク
ティブリストに書き込まれる。アクティブリストは、最
大で64個の命令をキューイングすることができる。ア
クティブリストには各エントリにインデックス番号が設
けられている。このインデックス番号は、ITagとし
て他のユニットにおいて命令をアイデンティファイする
ために用いられる。
前記命令・ウィンドウ・バッファ14a、14bの一例
を示している。命令・ウィンドウ・バッファ14a、1
4bは、例えば16個のエントリを有している。各エン
トリは命令の古い順に並んでいる。新しい命令が命令フ
ェッチユニット11から供給された場合、空いているエ
ントリうち、最も古い命令が入っているエントリに近い
エントリに書き込まれる。
bは、命令デコーダ12から供給される命令デコード情
報と、レジスタ・リネーミング・ユニット13a、13
bから供給される物理レジスタ番号と、命令フェッチユ
ニット11から供給される命令コードと、命令バリッド
(Valid)信号とを記憶する。すなわち、命令フェッチ
ユニット11から出力された命令バリッド信号が“1”
であるとき、命令・ウィンドウ・バッファ14a、14
bは、命令コードと、物理レジスタ番号などを空いたエ
ントリに書き込む。命令・ウィンドウ・バッファに空き
エントリが無くなった場合、命令フェッチユニット11
に対してフェッチ停止要求(Fetch Stall Request)信
号をアサートする。
bは、コンプレッサ14cを有している。命令を実行ユ
ニットに発行した後、このコンプレッサ14cは、発行
された命令のエントリを無効化し、空きエントリを作成
する。
ージは、整数ユニット(IU)及び浮動小数点ユニット
(FPU)からなる2系統の回路を有している。しか
し、以下の説明において、FPUの動作は省略し、IU
の動作のみ説明する。
成する各エントリのフォーマットを示している。図4に
示す各フィールドについて簡単に説明する。
た識別子であり、0〜63のいずかの値をとる。この値
は、アクティブリストのエントリ番号と等しい。
命令コードそのもの。
al Unitを示すフィールド。Rステージで命令が
デコードされ、命令の種類によってFU(ファンクショ
ン・ユニット)が決定される。このFUは、レジスタ・
リネーミング情報とともに命令・ウィンドウ・バッファ
に書き込まれる。FUは4ビットにより構成されてい
る。bit3は命令がALU命令であり、I0の整数ユ
ニットに発行されるべきものを示す。bit2はロード
・ストア・ユニットである。bit1はI1の整数ユニ
ットに命令が発行されるべきことを示し、bit0は乗
除算ユニットに命令が発行されるべきことを示してい
る。
ドの物理レジスタ番号。
タ番号。
ース・レジスタのPRs、PRt、PRfが使用可能で
あることを示すフラグ。すなわち、Rs、Rt、Rfと
同一番号の物理レジスタに書き込む命令が実行を終了し
て演算結果が(内部バイパスや、レジスタ・ファイルを
通して)使える状態になる3サイクル前にセットされ
る。この3サイクルは、このRdyビットを参照してか
ら命令を発行し、さらに命令がオペランドを読み出すま
でのレイテンシ分に当たる。
Readyビットであり、何らかの理由、例えば命令が
イン・オーダーに実行される場合にセットされる。ま
た、ある時点で実行不可能な場合にはクリアされる。
命令である場合、キャッシュ・ミス、非キャッシュ・ア
クセス等のステートを保持するレジスタ。命令のキャッ
シュ・ミス後において、再発行(ロールバック)タイミ
ングを決めるためのもの。
実行中であることを示す。
ニット(I0/I1)に発行予定であるかを示す。
かを示す。
のアップデート)命令・ウィンドウ・バッファ14a
は、各エントリをアップデートするためのアップデート
回路を有している。
aのアップデート回路21の一例を示している。図5に
おいて、図1と同一部分には同一符号を付している。
ントリには、アップデート回路21が接続されている。
このアップデート回路21は、命令・ウィンドウ・バッ
ファ14aに蓄えられた命令を、先行する命令の実行進
度に応じて各種ステータスビットを更新する。すなわ
ち、アップデート回路21には、RAT(Register Ava
ilability Table)22が接続されている。このRAT
22には、レジスタ・スコア・ボード・ユニット15a
が接続されている。レジスタ・スコア・ボード・ユニッ
ト15a及びRAT22は、物理レジスタ番号をキーと
して参照する記憶部であり、物理レジスタが使用可能か
どうかを示している。このRAT22は、データの演算
が終了すると、レジスタ・スコア・ボード・ユニット1
5aから供給される信号に応じて、演算結果を格納する
物理レジスタにフラグがセットされる。アップデート回
路21は、RAT22から供給されるレジスタのステー
タス及びレジスタ・スコア・ボード・ユニット15aか
ら供給される命令のステータスに基づき、エントリを毎
サイクルアップデートする。
aの各エントリには、前記DLC16が接続されてい
る。このDLC16は、ロード・ストア・ユニット18
bから出力されるキャッシュ・ミス信号に応じてロード
命令に依存する命令を検索する。DLC16から出力さ
れる依存関係を示す信号Dpend1Aは、レジスタ・
スコア・ボード・ユニット15a、及びRAT22に供
給される。DLC16から信号Depend1Aが出力
された場合、レジスタ・スコア・ボード・ユニット15
aの命令のステータスに基づき、依存関係のある物理レ
ジスタに対するRAT22のエントリを無効化する。さ
らに、アップデート回路21は、命令・ウィンドウ・バ
ッファ14a内において、依存関係のある物理レジスタ
を無効状態にリセットする。ロード命令の実行時におい
て、キャッシュ・ミスが発生した時の詳細な動作は後述
する。
の命令発行装置は、同時に2つの命令を発行する。命令
・ウィンドウ・バッファ14aの各エントリの命令は、
次の条件を満たした時、発行可能な状態となる。
y、HsRdy、EntryRdyが全てセットされて
いる(発行許可の状態になっている)。
(IU0、IU1、LSU、MAC)が以前の演算を終
了し、命令を受けられる状態であること。
コンフリクトがないこと(レジスタ・ファイルに結果を
書き込むべきタイミングの時、ライトポートが空いてい
ること)。
れていること(同一命令が実行中でないこと)。
ないこと。
パッチ決定回路31の一例を示している。このディスパ
ッチ決定回路31は、命令・ウィンドウ・バッファ14
aの各エントリに独立に設けられている。図6は、1つ
のエントリのディスパッチ・ロジックを示している。デ
ィスパッチ決定回路31は、命令・ウィンドウ・バッフ
ァ14aの各エントリとレジスタ・スコアボード・ユニ
ット15aに接続されている。ディスパッチ決定回路3
1は、命令・ウィンドウ・バッファ14aの各エントリ
とレジスタ・スコアボード・ユニット15aから供給さ
れる信号に応じて上記条件を判定する。この判定に応じ
てディスパッチ決定回路31は、各エントリがそれぞれ
どの実行ユニットに命令を発行することが可能であるか
を示す信号dispatchable to I0、I1を出力する。
エントリを決定する回路の一例を示している。各エント
リのディスパッチ決定回路から出力される信号dispatch
ableto I0、I1は、プライオリティ・セレクタ41
の入力端に供給される。このプライオリティ・セレクタ
41の出力端は、アップデート回路42に供給される。
エントリが同時に同一実行ユニットに対して発行可能で
あった場合、そのうちの最も古いエントリから出力され
る信号dispatchable to I0、I1を選択する。さら
に、プライオリティ・セレクタ41は、選択されたエン
トリに対して信号dispatch EntX to IY ( X=0,1〜15)、
(Y=0,1)を出力する。この信号dispatch EntX to IY ( X
=0,1〜15)、(Y=0,1)は、アップデート回路42に供給さ
れる。このアップデート回路42は、信号dispatchEntX
to IY ( X=0,1〜15)、(Y=0,1)がアサートされたエント
リに対応するRsvビットをセットする。
命令・ウィンドウ・バッファ14aの一例を示す構成図
である。図8は、16個のエントリからパイプラインI
0とパイプラインI1に命令を発行する様子を示してい
る。各エントリ0〜15にはマルチプレクサ(MUX)
51、52の入力端が接続されている。マルチプレクサ
51、52は、各エントリのRsvビットの内容に応じ
て制御される。マルチプレクサ51の出力端は、ラッチ
回路53に接続され、マルチプレクサ52の出力端は、
ラッチ回路54に接続されている。ラッチ回路53は、
パイプラインI0に命令を発行し、ラッチ回路54は、
パイプラインI1に命令を発行する。
ファ14aの各エントリに設けられた命令発行予定を示
すRsvビットがセットされている場合、そのエントリ
は、次のサイクルでディスパッチされる命令である。こ
のため、Rsv[1]がセットされている場合、マルチ
プレクサ52を介してパイプI0に進み、Rsv[0]
がセットされている場合、マルチプレクサ51を介して
パイプI1に進む。すなわち、Sステージの最後(Rs
vビットが既にセットされているサイクル)において、
Rsvビットの値に応じて、マルチプレクサ51、52
によりパイプI0とI1それぞれに対して、16個のエ
ントリのうち、1つのエントリが選択される。この選択
されたエントリは、ラッチ回路53、54にラッチされ
る。ラッチ回路53、54の出力信号はレジスタ・ファ
イル17aを介して各演算ユニットに送られる。ラッチ
回路53の出力信号は、パイプラインI0に設けられた
整数ユニット18a、及びロード・ストア・ユニット1
8bに供給される。ラッチ回路54の出力信号は、パイ
プラインI1に設けられた整数ユニット19a、乗算・
除算ユニット19bに供給される。各演算ユニットは、
レジスタ・ファイル17aからデータを読み出し、決め
られた演算やメモリアクセスを行う。各演算ユニットの
演算結果はレジスタ・ファイル17aに書き込まれる。
22は、前述したように、物理レジスタ番号をキーにし
て参照するテーブルであり、その物理レジスタが使用可
能かどうかを示している。このRAT22はレジスタ・
スコア・ボードロジックの一部でもある。RAT22の
エントリに例えば“1”がセットされている場合、その
エントリに対応する物理レジスタのデータは既に求めら
れており、参照可能であることを示している。また、R
AT22のエントリに例えば“0”がセットされている
場合、そのエントリに対応する物理レジスタのデータは
参照できない。
ウ・バッファ14aの各エントリのRs、Rt、Rfに
対応するRAT22を参照する。この結果、RAT22
のRs、Rt、Rfに対応するエントリに“1”がセッ
トされている場合、RsRdy、RtRdy、RfRd
yをセットする。また、アップデート回路21は、命令
・ウィンドウ・バッファ14aの各エントリのRs、R
t、Rfに対応するRAT22を参照する。この結果、
RAT22のRs、Rt、Rfに対応するエントリに
“0”がセットされている場合、RsRdy、RtRd
y、RfRdyをクリアする。
令ディスパッチ時にRAT22を参照するタイミング
と、実際にデータを参照する(レジスタ・ファイル17
aを読み出す、あるいはデータをバイパスする)タイミ
ングにはずれがある。このため、ある命令の実行が終了
した時、その物理デスティネーション・レジスタにデー
タが書き込まれるよりも3サイクル早いタイミングで、
その書き込みレジスタのRAT22をセットする。
例を示している。図9において、RAT22はSステー
ジでセットされる。一方、データが実際に得られるのは
3サイクル後のWステージである。このため、RAT2
2のセットタイミングと書き込みタイミングとがずれて
いる。
一例を示している。ロード命令の場合、Wステージの3
サイクル前であるDステージでRAT22をセットす
る。
たとき、その物理レジスタに対応するRAT22をクリ
アする。すなわち、同一論理レジスタに別の物理レジス
タが割り当てられ、その使用が終了した場合、以前に割
り付けられていた物理レジスタを開放する。このとき、
その物理レジスタに対応するRAT22をクリアする。
れた命令のデスティネーション・レジスタに対しても即
座に更新される。これは依存関係のある命令を最短のレ
イテンシで実行し、アウト・オブ・オーダのメリットを
生かすためである。しかし、分岐予測ミスや、例外が発
生した場合、予測ミスした分岐命令や、例外を発生した
命令が終了したイン・オーダーの時点にRAT22を戻
す必要がある。例えば例外が発生した命令の次の命令は
実行前で止まる必要がある。このため、その命令が書き
込む物理レジスタは、RAT内において無効にしなけれ
ばならない。このようなRATを便宜上ワーキングRA
Tと呼ぶ。
いる。このため、既にワーキングRATはセットされて
いる可能性がある。したがって、命令の実行が完了した
時、例外発生や分岐予測ミスを判定し、実行が完了した
時のステートを持つイン・オーダーで更新するRAT
(便宜上、イン・オーダーRATと呼ぶ)を別に1セッ
ト設けておく。例外発生、分岐予測ミス時、イン・オー
ダーRATの内容をワーキングRATに一括コピーす
る。これによって、ワーキングRATを、分岐予測ミス
や例外発生直後の状態にリストアすることができる。
10に示すロード命令のタイミング図から分かるよう
に、ロード命令のデスティネーション・レジスタRdに
対応するRATのセットは、レイテンシを最短にするた
め、ロード命令のDステージで行われる。これはロード
命令のキャッシュ・ミスが判明するWステージの3サイ
クル前である。すなわち、この3サイクル間はロード命
令がミスするかもしれない状況にもかかわらず、ロード
命令の実行結果にデータが依存した命令を発行してしま
う。このような構成とすることにより、仮に、ロード命
令がヒットした場合、最短のレイテンシで命令を実行す
ることが可能となる。
ル、参照のためのサイクルと、ディスパッチのためのサ
イクルの3サイクルがこれに当たる。しかし、これを0
サイクルとすることはできない。このため、そのサイク
ル分だけ、投機実行となる期間が確実に存在する。
生じない。したがって、命令の実行を続ければよい。し
かし、キャッシュ・ミスが発生した場合、次のような処
理を行う必要がある。すなわち、 (1)キャッシュ・ミスしたロード命令、ならびに、ロ
ード命令に依存しスケジュールが完了し、又は実行中の
命令を無効化する。
ィネーション・レジスタ、及びロード命令に依存した命
令のデスティネーション・レジスタをクリアする。
フィルされた後、再実行する。
依存した実行中の命令と、ロード命令と無関係な命令と
を区別しなければならない。また、上述したように、ロ
ード命令は、3サイクルの投機的実行期間がある。この
ため、ロード命令に直接的に依存した命令だけでなく、
ロード命令に依存した第1の命令に、依存する第2の命
令、さらに第2の命令に依存する第3の命令といった3
重の依存関係まで検出する必要がある。また、ある命令
のソース・レジスタRsは第1のロード命令に依存し、
ソース・レジスタRtは第2のロード命令に依存すると
いうように、複数のロード命令に並列した依存関係も検
出する必要がある。さらに、それらが複合した依存関係
も検出する必要がある。
依存関係の例を示すパイプライン・ダイアグラム、及び
データ・フロー・グラフを示している。図11(a)
(b)(c)に示す例は、全てキャッシュ・ミスが判明
する前に命令発行しなければならないケースである。こ
れらの例において、レジスタ番号は論理レジスタではな
く物理レジスタを示すものとする。
場合を例に説明する。データ・フロー・グラフにおい
て、○印で示すレジスタはキャッシュ・ミスが判別され
る前のロード命令の結果である。ロード命令に着目する
と、r4はr1に依存し,r7はr2に依存する。さら
に、r8はr4、r7に依存し、r10はr4に依存す
る。
ード)命令がキャッシュ・ミスし、(2)のlw(ロー
ド)命令がキャッシュ・ヒットした場合、次のように処
理する。
に依存するものは全て無効化する。しかし、(2)のロ
ード命令に対応するr2に依存するものは有効である。
このため、RATのr4、r10、r8を無効化する。
さらに、これらr4、r10、r8を使用する(3)、
(5)、(6)の命令を無効化し、再発行する。ただ
し、RATのr7と(4)のsub命令は無効化しな
い。
を行う。
よる間接依存の検出。
ールバック動作。
LC16によるロード命令と依存した命令の検出につい
て説明する。
いる。図12において、第1の検出回路16aは、ロー
ド命令と直接的に依存したレジスタを検出する。また、
第2の検出回路16bは、多段の間接的な依存関係を検
出する。
テージの数と同数のレジスタR1〜R6、比較器C1〜
C6、C11〜C16オア回路OR1〜OR6を有して
いる。前記レジスタR1〜R6は、直列接続され、所謂
シフトレジスタを構成している。これらレジスタR1〜
R6は、Dステージの命令・ウィンドウ・バッファ14
aから命令の実行に応じて順次出力されるデスティネー
ション・レジスタ(Rd)の番号を保持する。前記比較
器C1〜C6の一方入力端には、命令・ウィンドウ・バ
ッファ14aから順次出力されるソース・レジスタ(R
t)の番号が供給される。これら比較器C1〜C6の他
方入力端には、前記レジスタR1〜R6の出力信号がそ
れぞれ供給される。また、前記比較器C11〜C16の
一方入力端には、命令・ウィンドウ・バッファ14aか
ら順次出力されるソース・レジスタ(Rs)の番号が供
給される。これら比較器C11〜C16の他方入力端に
は、前記レジスタR1〜R6の出力信号がそれぞれ供給
される。前記比較器C1〜C6の出力端はオア回路OR
1〜OR6の一方入力端に供給される。前記比較器C1
1〜C16の出力端は前記オア回路OR1〜OR6の他
方入力端に供給される。
ア回路AOR1〜AOR6、アンド回路A1〜A4、ラ
ッチ回路XA、YA、ZA、ZZA、YM、ZM、Z
W、L0Miss1X、L0Miss1Y、L0Mis
s1Z、及びオア回路OR7により構成されている。ア
ンドオア回路AOR1〜AOR6は、アンド回路とオア
回路が直列接続されている。アンドオア回路AOR1〜
AOR6は、ロード命令に間接的に依存する命令を検出
し、この検出した依存関係を直接依存にマッピングす
る。
アンドオア回路AOR1、AOR2、AOR3を構成す
るアンド回路の一方入力端に供給される。前記オア回路
OR2の出力信号EqMは、アンドオア回路AOR4、
AOR5を構成するアンド回路の一方入力端に供給され
る。前記オア回路OR3の出力信号EqWは、アンドオ
ア回路AOR6を構成するアンド回路の一方入力端、及
びアンド回路A1の一方入力端に供給される。前記オア
回路OR4の出力信号EqXは、アンド回路A2の一方
入力端に供給される。前記オア回路OR5の出力信号E
qYは、アンド回路A3の一方入力端に供給される。前
記オア回路OR6の出力信号EqZは、アンド回路A4
の一方入力端に供給される。
ら供給されるキャッシュ・ミス信号L0Miss1W
は、前記アンド回路A1の他方入力端に供給されるとと
もに、ラッチ回路L0Miss1Xに供給される。ラッ
チ回路L0Miss1Xの出力信号は、前記アンド回路
A2の他方入力端に供給されるとともに、ラッチ回路L
0Miss1Yに供給される。ラッチ回路L0Miss
1Yの出力信号は、前記アンド回路A3の他方入力端に
供給されるとともに、ラッチ回路L0Miss1Zに供
給される。ラッチ回路L0Miss1Zの出力信号は、
前記アンド回路A4の他方入力端に供給される。
号DDZ、DDY、DDXは、前記アンドオア回路AO
R6、AOR5、AOR3を構成するオア回路の一方入
力端にそれぞれ供給される。前記アンドオア回路AOR
6を構成するオア回路の出力信号は、前記アンドオア回
路AOR4を構成するオア回路の一方入力端に供給され
る。前記アンドオア回路AOR4を構成するオア回路の
出力信号は、前記アンドオア回路AOR1を構成するオ
ア回路の一方入力端に供給される。前記アンドオア回路
AOR5を構成するオア回路の出力信号は、前記アンド
オア回路AOR2を構成するオア回路の一方入力端に供
給される。
ラッチ回路XAに供給される。前記アンドオア回路AO
R1、AOR2、AOR3を構成するオア回路の出力信
号は、前記ラッチ回路ZZA、ZA、YAの入力端に供
給される。これらラッチ回路XA、YA、ZA、ZZA
の出力信号は、オア回路OR7の入力端に供給される。
また、ラッチ回路XA、YA、ZAの出力信号は、前記
アンドオア回路AOR3、AOR2、AOR1を構成す
るアンド回路の他方入力端にそれぞれ供給される。
回路YMに供給され、前記ラッチ回路YAの出力信号
は、ラッチ回路ZMに供給される。前記ラッチ回路YM
の出力信号はラッチ回路ZWに供給される。前記ラッチ
回路ZM、YMの出力信号は、前記アンドオア回路AO
R4、AOR5を構成するアンド回路の他方入力端にそ
れぞれ供給される。前記ラッチ回路ZWの出力信号は、
前記アンドオア回路AOR6を構成するアンド回路の他
方入力端に供給される。前記オア回路OR7の出力端か
ら、後述する依存関係の有無を示す信号Depend1
Aが出力される。
依存関係を検出する。
存を直接依存へ写像。
の動作について説明する。図11(c)において、
(1)のlw(ロード)命令がキャッシュ・ミスを発生
するものとする。
は、図11(c)に(1)〜(6)で示す順序に従っ
て、各命令のデスティネーション・レジスタ番号、ソー
ス・レジスタRs、Rtの番号が出力される。デスティ
ネーション・レジスタ番号はDLC16のレジスタR1
に供給される。レジスタR1に保持されたデスティネー
ション・レジスタ番号は、パイプラインの各ステージの
実行に従ってレジスタR1〜R6に順次シフトされる。
また、各命令のソース・レジスタRtの番号は、比較器
C1〜C6に同時に供給され、ソース・レジスタRsの
番号は、比較器C11〜C16に同時に供給される。
Dステージにある。このため、add命令の2つのソー
ス・レジスタRs、Rtの番号が、実行状態(in-fligh
t)のロード命令のデスティネーション・レジスタ番号
と一致するかどうかが検索される。同時に、add命令
の2つのソース・レジスタRs、Rtの番号が、実行状
態のロード命令に依存する別の命令のデスティネーショ
ン・レジスタ番号と一致するかどうかが検索される。具
体的には、比較器C1〜C6、C11〜C16により、
ソース・レジスタRs、Rtの番号と、A、M、W、
X、Y、Zの各ステージのデスティネーション・レジス
タ番号Rdとを比較する。
のソース・レジスタRsの番号と、(1)のlw命令の
Wステージに対応するレジスタR3に保持されたデステ
ィネーション・レジスタRdの番号が共にレジスタ番号
“r1”である。このため、比較器C13から一致信号
が出力され、オア回路OR3の出力信号EqWが“1”
となる。比較器C13以外の比較器から一致信号が出力
されないため、オア回路OR3以外のオア回路の出力信
号は“0”となる。
令のWステージで判明する。このため、時刻t4におい
て、キャッシュ・ミス信号L0Miss1Wは“1”と
なり、このキャッシュ・ミス信号L0Miss1Wと、
オア回路OR3の出力EqWがアンド回路A1に供給さ
れる。このため、AND回路A1の出力信号DDWは
“1”となる。この信号DDWは、Wステージのロード
命令にDステージの命令が直接依存するかどうかを示す
信号である。さらに、この信号DDWが“1”である場
合、Wステージのロード命令にDステージの命令が直接
依存し、且つキャッシュ・ミスが発生していることを示
している。
記キャッシュ・ミス信号L0Miss1Wを1サイクル
遅らせた信号を保持する。このため、ラッチ回路L0M
iss1Xは、Xステージのロード命令がキャッシュ・
ミスしているとき“1”となる。同様に、ラッチ回路L
0MissY、L0MissZは、Yステージ、Zステ
ージのロード命令がキャッシュ・ミスしているとき
“1”となる。ラッチ回路L0Miss1X、L0Mi
ssY、L0MissZの出力信号は、オア回路OR
4、OR5、OR6の出力信号EqX、EqY、EqZ
とともにアンド回路A2、A3、A4にそれぞれ供給さ
れる。このため、アンド回路A2、A3、A4の出力信
号DDX、DDY、DDZが“1”である場合、Xステ
ージ、Yステージ、及びZステージのロード命令にDス
テージの命令が直接依存し、且つキャッシュ・ミスが発
生していることとなる。
のサイクルで“1”であったため、ラッチ回路XAが
“1”となる。ラッチ回路XAの信号は、信号DDWを
1サイクル遅らせたことになる。このため、ラッチ回路
XA信号は、Aステージの命令がXステージのロード命
令に依存することを意味している。ラッチ回路XAの出
力信号に応じてオア回路OR7の出力信号Depend
1Aが“1”となる。信号Depend1Aは、ラッチ
回路XA、YA、ZA、ZZAのオアである。このた
め、信号Depend1Aは、パイプラインのXステー
ジ、Yステージ、Zステージ、ZZステージのいずれか
のロード命令にAステージの命令が依存しており、且つ
そのロード命令がキャッシュ・ミスしていることを示し
ている。ラッチ回路XA、YA、ZA、ZZAは、キャ
ッシュ・ミスの情報を含んだ信号を保持する。したがっ
て、ラッチ回路XA、YA、ZA、ZZAの出力信号
は、キャッシュ・ミスの確認済みの信号となる。
(ロード)命令と(4)のsub命令が依存関係を有し
ている。(2)のlw命令はキャッシュ・ヒットすると
の仮定であるため、アンド回路A1の出力信号DDWは
“0”となる。
示す(5)のxor命令がDステージにある。このた
め、xor命令が依存するロード命令の有無が検索され
る。すなわち、Dステージにあるxor命令のソース・
レジスタRs、Rtの番号“r4”“r7”と、各ステ
ージのレジスタR1〜R6に保持されたデスティネーシ
ョン・レジスタの番号とが比較される。この場合、Mス
テージのデスティネーション・レジスタの番号が(3)
のadd命令に使用されるレジスタ番号“r4”となっ
ている。さらに、Aステージのラッチ回路R1に保持さ
れた(4)のsub命令のデスティネーション・レジス
タ番号は“r7”である。このため、比較器C12、C
1の出力信号が“1”となる。したがって、オア回路O
R2の出力信号EqMが“1”となり、オア回路OR1
の出力信号EqAが“1”となる。
Aの出力信号“1”が、レジスタYMにセットされる。
このため、レジスタYMの出力信号が“1”となる。こ
のレジスタYMの出力信号は、オア回路OR2の出力信
号EqMとともに、アンドオア回路AOR5に供給され
る。このため、アンドオア回路AOR5から信号“1”
が出力される。この信号はアンドオア回路AOR2を介
してラッチ回路ZAに信号YDとして供給される。
は、アンドオア回路AOR1、AOR2、AOR3を構
成するアンド回路の一方入力端に供給される。しかし、
このとき、ラッチ回路XA、YA、ZA、ZZAの出力
信号は、いずれも“0”である。このため、アンドオア
回路AOR1、AOR2、AOR3を構成する各アンド
回路の入力条件は成立しない。このため、Aステージに
ある(4)のsub命令との間の依存関係は保持されな
い。この理由は、(4)のsub命令が依存関係を有す
る(2)のlw命令がキャッシュ・ヒットしている。こ
のため、時刻t6において、ラッチ回路XAの出力信号
が“0”となっているためである。このようにして、キ
ャッシュ・ミスが発生したロード命令に直接的、及び間
接的に依存した命令を検出することができる。
状態にある全ての命令の依存関係をA〜Zステージにあ
るキャッシュ・ミスした全てのロード命令との間で依存
関係を検出している。換言すると、第2の検出回路16
bは、多段の間接的な依存関係を検出して直接依存関係
に変化し、このうちのキャッシュ・ミスの場合だけ依存
関係を検出する。第2の検出回路16bにより、キャッ
シュ・ミスしたロード命令に依存する全ての命令がどの
ステージに存在するかを、複雑なリストを用いることな
く、直接検出することができる。
ュ・ミスは、Wステージで判明すると仮定した。しか
し、ロード命令のキャッシュ・ミスがXステージ、又は
Yステージにおいて判明するような場合も考えられる。
このような場合、投機的実行期間が長くなるため、投機
命令数が増加し、間接依存の段数が増える。しかし、上
記構成のDLC16を用いることにより、最小限のハー
ドウェア構成により、直接的及び間接的な依存関係を検
出することが可能である。
ュ・ミスが発生したロード命令に依存した命令が検出さ
れると、第2の検出回路16bを構成するOR回路OR
7から依存関係の有無を示す信号Depend1Aが出
力される。この信号Depend1Aは、図5に示すレ
ジスタ・スコア・ボード・ユニット15a、及びRAT
22に供給される。レジスタ・スコア・ボード・ユニッ
ト15a、及びRAT22は、信号Depend1Aに
応じて内容が更新される。
図13は、RAT22の更新回路22aの一例を示して
いる。この更新回路22aは、例えば複数のアンド回路
A21〜A25、複数の比較器C21〜C24、オア回
路OR11、OR12、ノア回路NR1により構成され
ている。
はロード命令のDステージにおいて、その命令が書き込
むデスティネーション・レジスタRdに対応するRAT
のエントリがセットされる。これはその物理レジスタを
参照する命令の発行遅延を考慮したものである。
器C21により最後のSステージにおけるデスティネー
ション・レジスタ(物理レジスタ)Rdの番号と、RA
T22のエントリ番号(n)とを比較する。また、ロー
ド命令の場合、比較器C22により、Dステージにおけ
るデスティネーション・レジスタRdの番号と、RAT
22のエントリ番号とを比較する。これらデスティネー
ション・レジスタRdの番号とRAT22のエントリ番
号が一致し、かつ有効な命令がそのステージに存在する
場合はRAT22がセットされる。
分岐予測ミスを回復するためのイン・オーダーRATか
らのリストアと、物理レジスタが開放された場合にRA
Tをクリアするパスは含んでいない。
生した場合において、ロード命令に依存した命令がAス
テージにある時、そのデスティネーション・レジスタR
dの番号と、RAT22のエントリ番号とが比較器C2
3により比較される。この比較の結果、これらが一致
し、且つ、DLC16から供給される信号Depend
1Aが“1”のとき、ロード命令に依存する命令の結果
を書き込むデスティネーション・レジスタに対するRA
T22のフラグがクリアされる。前述したように、信号
Depend1Aが“1”であることは、Aステージに
ある命令がロード命令に依存関係を有し、且つロード命
令がキャッシュ・ミスしたことを意味する。すなわち、
Aステージにある命令は、正しいソースオペランドを得
ることができなくなる。したがって、この命令の実行結
果も正しくないため、RAT22のその命令のデスティ
ネーション・レジスタのフラグをクリアする。
実行結果が供給されるデスティネーション・レジスタR
dもクリアする。すなわち、ロード命令においてキャッ
シュ・ミスが発生した場合、Xステージにあるロード命
令のデスティネーション・レジスタRdと、RAT22
のエントリ番号が比較器C24により比較される。この
比較の結果、両者が一致し、且つキャッシュ・ミス信号
L0Miss1Xが“1”である場合、RAT22のキ
ャッシュ・ミスしたロード命令の実行結果が供給される
デスティネーション・レジスタRdのフラグがクリアさ
れる。
令のデスティネーション・レジスタRdと、それに依存
した命令のデスティネーション・レジスタRdであっ
て、既にRAT22の対応するレジスタのエントリにセ
ットされているフラグは全てクリアされる。
とにより、キャッシュ・ミスが判明したロード命令のX
ステージ以降のタイミングでは、多重間接依存を含めて
Rdを参照できなくなる。さらに、図5に示すアップデ
ート回路21は、RAT22の内容に基づいて命令ウィ
ンドウ・バッファ14aのRsRdy、RtRdy、R
fRdyをクリアする。このため、キャッシュ・ミスが
発生したロード命令と依存関係を有する命令は発行でき
なくなる。
ることにより、キャッシュ・ミスを起こしたロード命令
と直接的、及び間接的に依存するレジスタが無効化さ
れ、且つキャッシュ・ミスが発生したロード命令と依存
関係を有する命令が無効される。
令がキャッシュ・ミスを発生した場合、キャッシュ・ミ
スしたロード命令と、それに依存した全ての命令を再実
行する。この動作をロールバックと呼ぶ。ここでは、そ
のロールバック方法について述べる。
令を発行したあと、キャッシュ・ミスの判明しない実行
中のロード命令、又はストア命令と、それ以降の全ての
命令を命令・ウィンドウ・バッファ14aに保持したま
まにする。その際、命令・ウィンドウ・バッファ14a
のInFlightビットをセットしておく。ロード命
令、又はストア命令は、キャッシュがヒットした場合、
Xステージで命令・ウィンドウ・バッファ14aのVa
lidビットをクリアして命令・ウィンドウ・バッファ
から消去する。キャッシュ・ミスが発生した場合、In
FlightビットをクリアするとともにValidビ
ットはセットしたままとする。同時にL1MissSM
ビットをキャッシュ・ミスの状態に変更する。キャッシ
ュのリフィルが終了すると、L1MissSMビットが
初期状態にリセットされる。この後、ロード命令、又は
ストア命令が再度スケジューリングされ発行される。
ド命令に対して間接的に依存した命令について、命令が
Aステージに到達した時に、信号Depend1Aが
“1”である場合、間接的な依存関係も含めて依存元で
あるロード命令がキャッシュ・ミスしている。このた
め、命令・ウィンドウ・バッファからこの命令を消去せ
ずに残しておく。また、信号Depend1Aが“0”
である場合、依存するロード命令はヒットしているので
命令・ウィンドウ・バッファからこの命令をクリアす
る。
ード命令に直接的に依存する命令を検出する第1の検出
回路16aと、ロード命令に間接的に依存する命令を検
出する第2の検出回路16bとを有し、第2の検出回路
16bは、実行状態にある全ての命令とA〜Zステージ
にある全てロード命令との間で多段の間接的な依存関係
を検出し、このうち、キャッシュ・ミスが発生している
場合だけ、間接的な依存関係を検出している。このた
め、このDLC16は、キャッシュ・ミスが発生したロ
ード命令に対して直接的、又は間接的に依存する命令を
高速に検出することができる。
ミスしたロード命令に依存する全ての命令がどのステー
ジに存在するかを、複雑なリストを用いたり、データ・
フロー・グラフを全てトレースしたりすることなく、直
接検出することができる。したがって、回路規模の増大
を防止できる利点を有している。
ミスしたロード命令に対して直接的、及び間接的に依存
する命令のみ無効化している。このため、キャッシュ・
ミスしたロード命令以降の全ての命令を無効化する場合
に比べて、命令の無駄な無効化を防止できる。したがっ
て、再発行する命令の数を削減できるため、命令発行効
率を向上できる。
ジスタ・スコア・ボード15a、及びRAT22の内容
は毎サイクル変更されている。このため、DLC16に
より検出されたロード命令に依存するレジスタ、及び命
令を効率よく破棄することができる。さらに、命令・ウ
ィンドウ・バッファ14aの内容は、レジスタ・スコア
・ボード15a、及びRAT22の内容に従って毎サイ
クル更新されている。このため、キャッシュがリフィル
された後、破棄された命令を確実に再発行することがで
きる。
ではなく、その他、本発明の要旨を変えない範囲におい
て種々変形実施可能なことは勿論である。
ロード命令において、キャッシュ・ミスが発生した際、
このロード命令と多段の依存関係を有する命令を高速に
検出することが可能な命令発行装置を提供できる。
図。
ラム。
図。
トリの一例を示す構成図。
路の一例を示す構成図。
構成図。
図。
図。
他の命令との依存関係の例を示すパイプライン・ダイア
グラム及びデータ・フロー・グラフ。
す回路図。
の依存関係を示す図。
ト、 16…DLC、 16a…第1の検出回路、 16b…第2の検出回路、 R1〜R6…レジスタ、 C1〜C6、C11〜C16…比較器、 OR1〜OR6…オア回路、 AOR1〜AOR6…アンドオア回路、 A1〜A4…アンド回路、 XA、YA、ZA、ZZA、YM、ZM、ZW…ラッチ
回路。
Claims (10)
- 【請求項1】 命令をアウト・オブ・オーダに投機的に
発行する命令発行部と、 前記命令発行部により発行された命令と、パイプランの
各ステージにあるロード命令を含む複数の命令との直接
的な依存関係を検出する第1の検出回路と、 前記第1の検出回路の出力信号と、前記ロード命令のキ
ャッシュ・ミス信号とに基づき、前記命令発行部により
発行された命令と、前記パイプランの各ステージにある
キャッシュ・ミスしたロード命令との間接的な依存関係
を検出する第2の検出回路とを具備することを特徴とす
る命令発行装置。 - 【請求項2】 前記第1の検出回路は、前記パイプライ
ンステージの数と同数設けられ、命令の実行結果が順次
書き込まれるデスティネーション・レジスタの番号を保
持する直列接続された第1の記憶部と、 前記第1の記憶部に保持された前記デスティネーション
・レジスタの番号と前記ロード命令に続く命令のソース
・レジスタの番号とを比較し、前記他の命令が前記ロー
ド命令に直接的に依存関係を有しているかどうかを判定
する複数の比較器とを具備することを特徴とする請求項
1記載の命令発行装置。 - 【請求項3】 前記第2の検出回路は、複数のロード命
令に対する依存関係を保持するため、パイプラインステ
ージごとに依存元のロード命令に対する依存関係を保持
する第1のラッチ回路と、 前記キャッシュ・ミス信号を前記パイプラインの動作に
同期して保持する複数の第2のラッチ回路と、 前記第2のラッチ回路の出力信号と、前記各比較器の出
力信号とに応じて、前記ロード命令に直接依存し、前記
キャッシュ・ミス信号を含んだ信号を発生する複数の第
1の論理回路と、 前記第1のラッチ回路の出力信号と前記比較器の出力信
号、及び前記第1の論理回路の出力信号に応じて、前記
ロード命令に間接的に依存する命令を検出する第2の論
理回路とを具備することを特徴とする請求項2記載の命
令発行装置。 - 【請求項4】 前記命令発行部は、前記第2の検出回路
の出力信号に応じて、前記ロード命令に依存する命令を
無効化することを特徴とする請求項3記載の命令発行装
置。 - 【請求項5】 前記命令発行部は、キャッシュがリフィ
ルされた後、前記無効化された命令を再発行することを
特徴とする請求項4記載の命令発行装置。 - 【請求項6】 命令をアウト・オブ・オーダに投機的に
発行する命令発行部と、 前記命令発行部により発行された命令と、パイプランの
各ステージにあるロード命令を含む複数の命令との直接
的な依存関係を検出する第1の検出回路と、 前記第1の検出回路の出力信号と、前記ロード命令のキ
ャッシュ・ミス信号とに基づき、前記命令発行部により
発行された命令と、前記パイプランの各ステージにある
キャッシュ・ミスしたロード命令との間接的な依存関係
を検出する第2の検出回路と、 パイプラインで実行中の命令の書き込みレジスタに有効
なデータが有るか否かを示す情報を保持する第1の記憶
部と、 前記第1の記憶部の出力信号に応じて、レジスタが使用
可能かどうかを示す情報を記憶する第2の記憶部と、 前記第1、第2の記憶部の出力信号に応じて、前記命令
発行部のソースオペランドの有効性を示す情報を更新す
る更新回路とを具備することを特徴とする命令発行装
置。 - 【請求項7】 前記第2の記憶部は、前記第2の検出回
路の出力信号に応じて、キャッシュ・ミスした前記ロー
ド命令に依存するレジスタに対応するフラグをクリアす
る第3の論理回路を有することを特徴とする請求項6記
載の命令発行装置。 - 【請求項8】 第1の検出回路でロード命令と後続の命
令との直接的な依存関係を検出し、 第2の検出回路で前記ロード命令と後続の命令との間接
的な依存関係を検出し、この検出した間接的な依存関係
を直接的な依存関係に変換し、 前記ロード命令にキャッシュ・ミスが発生したことを示
す信号と変換された前記直接的な依存関係とにより、前
記ロード命令と間接的な依存関係を有する命令を検出す
ることを特徴とする命令発行方法。 - 【請求項9】 前記検出されたロード命令と直接的な依
存関係を有する命令、及び前記検出されたロード命令と
間接的な依存関係を有する命令を無効化することを特徴
とする請求項8記載の命令発行方法。 - 【請求項10】 キャッシュがリフィルされた場合、前
記無効化された命令を再発行することを特徴とする請求
項9記載の命令発行方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002077091A JP3577052B2 (ja) | 2002-03-19 | 2002-03-19 | 命令発行装置及び命令発行方法 |
US10/134,373 US20030182536A1 (en) | 2002-03-19 | 2002-04-30 | Instruction issuing device and instruction issuing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002077091A JP3577052B2 (ja) | 2002-03-19 | 2002-03-19 | 命令発行装置及び命令発行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003280896A true JP2003280896A (ja) | 2003-10-02 |
JP3577052B2 JP3577052B2 (ja) | 2004-10-13 |
Family
ID=28035488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002077091A Expired - Fee Related JP3577052B2 (ja) | 2002-03-19 | 2002-03-19 | 命令発行装置及び命令発行方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20030182536A1 (ja) |
JP (1) | JP3577052B2 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007207238A (ja) * | 2006-02-02 | 2007-08-16 | Internatl Business Mach Corp <Ibm> | 非同期式パイプラインのためのデータ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置及び方法 |
JP2011008732A (ja) * | 2009-06-29 | 2011-01-13 | Fujitsu Ltd | プライオリティ回路、演算処理装置及び演算処理方法 |
JP2017503295A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでのロードリプレイを低減する節電メカニズム |
JP2017503294A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 |
JP2017503297A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでのキャッシュ不可に依存するロードリプレイを除外するメカニズム |
JP2017503296A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでの長いロードサイクルに依存するロードリプレイを除外するメカニズム |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7366877B2 (en) * | 2003-09-17 | 2008-04-29 | International Business Machines Corporation | Speculative instruction issue in a simultaneously multithreaded processor |
US7853777B2 (en) * | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US7631130B2 (en) * | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US7681014B2 (en) * | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US7613904B2 (en) * | 2005-02-04 | 2009-11-03 | Mips Technologies, Inc. | Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler |
US7506140B2 (en) * | 2005-02-04 | 2009-03-17 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
US7657883B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor |
US7664936B2 (en) * | 2005-02-04 | 2010-02-16 | Mips Technologies, Inc. | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages |
US7490230B2 (en) * | 2005-02-04 | 2009-02-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US7752627B2 (en) * | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7657891B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US7961745B2 (en) | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector supporting dynamic priorities in multi-port switch |
US7773621B2 (en) * | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch |
US7990989B2 (en) * | 2006-09-16 | 2011-08-02 | Mips Technologies, Inc. | Transaction selector employing transaction queue group priorities in multi-port switch |
US7760748B2 (en) * | 2006-09-16 | 2010-07-20 | Mips Technologies, Inc. | Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch |
US8046102B2 (en) * | 2007-05-17 | 2011-10-25 | Fanuc Robotics America, Inc. | Control method for synchronous high speed motion stop for multi-top loaders across controllers |
US8099582B2 (en) * | 2009-03-24 | 2012-01-17 | International Business Machines Corporation | Tracking deallocated load instructions using a dependence matrix |
US11068272B2 (en) * | 2019-09-20 | 2021-07-20 | Microsoft Technology Licensing, Llc | Tracking and communication of direct/indirect source dependencies of producer instructions executed in a processor to source dependent consumer instructions to facilitate processor optimizations |
US20230315446A1 (en) * | 2022-03-30 | 2023-10-05 | Fujitsu Limited | Arithmetic processing apparatus and method for arithmetic processing |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69311330T2 (de) * | 1992-03-31 | 1997-09-25 | Seiko Epson Corp., Tokio/Tokyo | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
US5481743A (en) * | 1993-09-30 | 1996-01-02 | Apple Computer, Inc. | Minimal instruction set computer architecture and multiple instruction issue method |
US5745726A (en) * | 1995-03-03 | 1998-04-28 | Fujitsu, Ltd | Method and apparatus for selecting the oldest queued instructions without data dependencies |
US5710902A (en) * | 1995-09-06 | 1998-01-20 | Intel Corporation | Instruction dependency chain indentifier |
US5805851A (en) * | 1996-06-13 | 1998-09-08 | Hewlett-Packard Co. | System for determining data dependencies among intra-bundle instructions queued and prior instructions in the queue |
US6334182B2 (en) * | 1998-08-18 | 2001-12-25 | Intel Corp | Scheduling operations using a dependency matrix |
US6542984B1 (en) * | 2000-01-03 | 2003-04-01 | Advanced Micro Devices, Inc. | Scheduler capable of issuing and reissuing dependency chains |
US6438681B1 (en) * | 2000-01-24 | 2002-08-20 | Hewlett-Packard Company | Detection of data hazards between instructions by decoding register indentifiers in each stage of processing system pipeline and comparing asserted bits in the decoded register indentifiers |
-
2002
- 2002-03-19 JP JP2002077091A patent/JP3577052B2/ja not_active Expired - Fee Related
- 2002-04-30 US US10/134,373 patent/US20030182536A1/en not_active Abandoned
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007207238A (ja) * | 2006-02-02 | 2007-08-16 | Internatl Business Mach Corp <Ibm> | 非同期式パイプラインのためのデータ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置及び方法 |
JP2011008732A (ja) * | 2009-06-29 | 2011-01-13 | Fujitsu Ltd | プライオリティ回路、演算処理装置及び演算処理方法 |
JP2017503295A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでのロードリプレイを低減する節電メカニズム |
JP2017503294A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 |
JP2017503297A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでのキャッシュ不可に依存するロードリプレイを除外するメカニズム |
JP2017503296A (ja) * | 2014-12-14 | 2017-01-26 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでの長いロードサイクルに依存するロードリプレイを除外するメカニズム |
Also Published As
Publication number | Publication date |
---|---|
US20030182536A1 (en) | 2003-09-25 |
JP3577052B2 (ja) | 2004-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3577052B2 (ja) | 命令発行装置及び命令発行方法 | |
US7461238B2 (en) | Simple load and store disambiguation and scheduling at predecode | |
US7571304B2 (en) | Generation of multiple checkpoints in a processor that supports speculative execution | |
US8627044B2 (en) | Issuing instructions with unresolved data dependencies | |
US5887161A (en) | Issuing instructions in a processor supporting out-of-order execution | |
US6721874B1 (en) | Method and system for dynamically shared completion table supporting multiple threads in a processing system | |
US7711929B2 (en) | Method and system for tracking instruction dependency in an out-of-order processor | |
US20070288725A1 (en) | A Fast and Inexpensive Store-Load Conflict Scheduling and Forwarding Mechanism | |
US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
US20020087849A1 (en) | Full multiprocessor speculation mechanism in a symmetric multiprocessor (smp) System | |
US7660971B2 (en) | Method and system for dependency tracking and flush recovery for an out-of-order microprocessor | |
US7711934B2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
JPWO2008029450A1 (ja) | 分岐予測ミスリカバリ機構を有する情報処理装置 | |
US10310859B2 (en) | System and method of speculative parallel execution of cache line unaligned load instructions | |
KR20020097149A (ko) | 종속성 체인을 발행 또는 재발행할 수 있는 스케줄러 | |
US10437599B2 (en) | System and method of reducing processor pipeline stall caused by full load queue | |
US7571283B2 (en) | Mechanism in a multi-threaded microprocessor to maintain best case demand instruction redispatch | |
US5915110A (en) | Branch misprediction recovery in a reorder buffer having a future file | |
US5946468A (en) | Reorder buffer having an improved future file for storing speculative instruction execution results | |
US6708267B1 (en) | System and method in a pipelined processor for generating a single cycle pipeline stall | |
US7406587B1 (en) | Method and system for renaming registers in a microprocessor | |
US20100306513A1 (en) | Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline | |
CN116414458A (zh) | 指令处理方法以及处理器 | |
WO2007084202A2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
US6535973B1 (en) | Method and system for speculatively issuing instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040706 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040708 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080716 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090716 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090716 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100716 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110716 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120716 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130716 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |