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
Application number
JP2002077091A
Other languages
English (en)
Other versions
JP3577052B2 (ja
Inventor
Tatsuo Teruyama
竜生 照山
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2002077091A priority Critical patent/JP3577052B2/ja
Priority to US10/134,373 priority patent/US20030182536A1/en
Publication of JP2003280896A publication Critical patent/JP2003280896A/ja
Application granted granted Critical
Publication of JP3577052B2 publication Critical patent/JP3577052B2/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
    • 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/383Operand prefetching
    • 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
    • G06F9/3842Speculative 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

(57)【要約】 【課題】 ロード命令において、キャッシュ・ミスが発
生した際、このロード命令と多段の依存関係を有する命
令を高速に検出することが困難であった。 【解決手段】 第1の検出回路16aは、ロード命令と
直接的に依存したレジスタを検出する。第2の検出回路
16bは、第1の検出回路16aの出力信号及びキャッ
シュ・ミス信号L0Miss1Wに応じて、実行状態に
ある全ての命令とパイプラインの各ステージにある全て
ロード命令との間で多段の間接的な依存関係を検出す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、例えばアウト・オ
ブ・オーダ(Out-of-order)に命令を発行するマイクロ
プロセッサに係わり、特に、命令スケジュールユニット
に使用される命令発行装置及び命令発行方法に関する。
【0002】
【従来の技術】マイクロプロセッサにおける命令の実行
方式としてアウト・オブ・オーダ実行がある。このアウ
ト・オブ・オーダ実行は、先行命令と依存関係の無い後
続命令を順不同に実行する方式である。アウト・オブ・
オーダ実行は、演算器を有効に利用することが可能であ
り、マイクロプロセッサを高速に動作させることができ
る。
【0003】ところで、アウト・オブ・オーダに命令を
発行するマイクロプロセッサは、投機的に命令を発行し
実行する。このため、ロード命令にキャッシュ・ミスが
発生した場合、このロード命令にデータが依存した幾つ
かの命令を無効とする必要がある。この後、キャッシュ
・メモリがリフィルされると、キャッシュ・ミスしたロ
ード命令に依存関係のある命令群が再発行され、実行さ
れる。
【0004】図14は、ロード命令に続いて発行された
複数の命令とロード命令との依存関係を示している。こ
こで、I、R、E、Mは、パイプラインの各ステージを
示し、Iは命令フェッチ、Rはレジスタ・リネーミン
グ、Eは実行、Mはデータ・キャッシュ・アクセスであ
る。ロード命令が発行されてから命令がオペランドを読
み出すまでのレイテンシは3サイクルある。このため、
ロード命令が発行された次のサイクルと、その次のサイ
クル(図14に示すスロット1、2)にロード命令とデ
ータが依存のある命令を発行できないようにスケジュー
ルされる。スロット3とスロット4では、キャッシュが
ヒットすると仮定してロード命令に依存関係のある命令
が投機的に発行される。キャッシュ・ミスが判明するの
はMステージである。このため、命令のスケジューリン
グによる遅延のため、スロット4の命令発行の時点にお
いて、スロット0のキャッシュ・ミスの有無を考慮でき
ない。
【0005】ところが、スロット0のロード命令がキャ
ッシュ・ミスしているため、データを得ることができな
い。このため、スロット3とスロット4の命令は発行さ
れたものの正しく実行できないこととなる。したがっ
て、キャッシュ・ミスしたスロット0のロード命令と、
スロット3、4にある命令を全て破棄した後、キャッシ
ュのリフィルを行い、ロード命令を再発行する。さら
に、スロット3、4にあった破棄された命令を再発行す
る。スロット3と4には、ロード命令とデータが依存関
係のない命令が配置されることもある。この場合、命令
を破棄する必要はない。しかし、依存関係の有無によっ
て破棄するかどうかを決定することは困難である。この
ため、スロット3、4の命令をとにかく破棄し、後に再
実行する。したがって、無駄に命令を破棄してしまい命
令実行効率が低下する。
【0006】各スロットは、複数の命令を実行できる。
近時、1つのスロットにおいて、2つの整数演算命令を
同時に実行できるマイクロプロセッサが開発されてい
る。この場合、合計4命令を破棄することになる。4命
令が全てロード命令に依存のない場合、全てが無駄に破
棄されたことになる。
【0007】例えば、文献「R.E. Kessler、"The Alpha
21264 Microprocessor Architecture"、Proceedings I
nternational Conference on Computer Design: VLSI i
n Computers and processors、1998、ICCD "98、p90-9
5」には、キャッシュ・ミスしたロード命令に依存関係
のある命令群を再実行するための方法が開示されてい
る。
【0008】上記文献場合、ロード命令がヒットするか
否かを予測し、ヒットと予測した場合のみ依存関係のあ
る命令を発行することによって、命令を破棄する確率を
下げている。しかし、ロード命令がヒットと予測され、
ロード命令と依存関係のない命令が発行された場合にお
いても、実際にはロード命令がミスヒットすることがあ
る。この場合、ロード命令と依存関係のない命令が無駄
に破棄されることになる。
【0009】
【発明が解決しようとする課題】上記依存関係のない命
令を無駄に破棄しないようにするため、スロット3、4
の命令がロード命令に依存するかどうかを判定し、依存
関係のある命令だけを破棄するようにしたとする。しか
し、実際には、ロード命令以降の命令がロード命令の結
果に依存するかどうかを判断するだけでは不十分であ
る。すなわち、ロード命令に直接依存しなくとも、例え
ばロード命令に直接依存するスロット3の命令にスロッ
ト4の命令がさらに依存するかどうかも調べる必要があ
る。つまり、ロード命令に直接依存する命令だけでな
く、ロード命令に直接依存する命令に、さらに依存する
命令といった多段の間接依存関係にある命令もキャンセ
ルする必要がある。
【0010】しかし、一般に、間接的に依存する命令は
検出せず、投機的に発行した依存関係を有する全ての命
令をキャンセルする。この場合、キャンセルしなくても
よい命令をキャンセルしてしまい、実行効率が低下す
る。また、多段の間接依存関係を全て検出するために
は、データ・フロー・グラフをトレースする必要があ
る。これを実現しようとする場合、ハードウエアコスト
が大きくなるとともに、周波数低下の原因にもなる。
【0011】本発明は、上記課題を解決するためになさ
れたものであり、その目的とするところは、ロード命令
において、キャッシュ・ミスが発生した際、このロード
命令と多段の依存関係を有する命令を高速に検出するこ
とが可能な命令発行装置及び命令発行方法を提供しよう
とするものである。
【0012】
【課題を解決するための手段】本発明の命令発行装置
は、上記課題を解決するため、命令をアウト・オブ・オ
ーダに投機的に発行する命令発行部と、前記命令発行部
により発行された命令と、パイプランの各ステージにあ
るロード命令を含む複数の命令との直接的な依存関係を
検出する第1の検出回路と、前記第1の検出回路の出力
信号と、前記ロード命令のキャッシュ・ミス信号とに基
づき、前記命令発行部により発行された命令と、前記パ
イプランの各ステージにあるキャッシュ・ミスしたロー
ド命令との間接的な依存関係を検出する第2の検出回路
とを具備している。
【0013】本発明の命令発行方法は、第1の検出回路
でロード命令と後続の命令との直接的な依存関係を検出
し、第2の検出回路で前記ロード命令と後続の命令との
間接的な依存関係を検出し、この検出した間接的な依存
関係を直接的な依存関係に変換し、前記ロード命令にキ
ャッシュ・ミスが発生したことを示す信号と変換された
前記直接的な依存関係とにより、前記ロード命令と間接
的な依存関係を有する命令を検出することを特徴とす
る。
【0014】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照して説明する。
【0015】図1は、命令発行装置と実行ユニットの構
成を示している。先ず、図1の構成について概略的に説
明する。
【0016】命令発行装置は、例えばTステージ、Rス
テージ、Sステージ、Dステージ、Aステージを有して
いる。Rステージ以降の各ステージは、整数ユニット
(IU)及び浮動小数点ユニット(FPU)からなる2
系統の回路を有している。
【0017】Tステージは、命令フェッチステージであ
り、命令をフェッチする命令フェッチユニット11を有
している。命令フェッチユニット11は、例えば2命令
を同時にフェッチする。
【0018】Rステージはレジスタ・リネーミング・ス
テージである。Rステージは、前記命令フェッチユニッ
ト11に接続された命令デコーダ12、レジスタ・リネ
ーミング・ユニット13a、13bを有している。レジ
スタ・リネーミング・ユニット13a、13bは、さら
に命令デコーダ12に接続されている。命令デコーダ1
2は命令フェッチユニット11から供給される命令をデ
コードする。各レジスタ・リネーミング・ユニット13
a、13bは、例えばデコードされた2命令の論理レジ
スタに未使用の物理レジスタをそれぞれ割り当てる。
【0019】Sステージは、命令スケジューリングステ
ージである。このSステージは、命令・ウィンドウ・バ
ッファ(命令発行部)14a、14b、レジスタ・スコ
ア・ボード・ユニット15a、15bを有している。命
令・ウィンドウ・バッファ14aは、命令デコーダ1
2、レジスタ・リネーミング・ユニット13a、及びレ
ジスタ・スコア・ボード・ユニット15aに接続されて
いる。また、命令・ウィンドウ・バッファ14bは、命
令デコーダ12、レジスタ・リネーミング・ユニット1
3b、及びレジスタ・スコア・ボード・ユニット15b
に接続されている。
【0020】前記レジスタ・スコア・ボード・ユニット
15a、15bは、例えばフリップフロップ回路により
構成され、パイプラインで実行中の命令の書き込みレジ
スタに有効なデータが有るか否かを示す情報(フラグ)
を保持する。命令・ウィンドウ・バッファ14a、14
bは、レジスタ・リネーミング後の物理レジスタ番号等
を保持し、レジスタ・スコア・ボード・ユニット15
a、15bからの命令ステータスに基づき、所定の条件
を満足した場合、命令を発行する。命令・ウィンドウ・
バッファ14aは、パイプラインI0、I1に命令を発
行する。
【0021】前記レジスタ・スコア・ボード・ユニット
15aは、依存関係検索回路(DLC)16に接続され
ている。DLC16は、ロード命令に直接的、又は間接
的に依存した命令を検索する。DLC16はレジスタ・
スコア・ボード・ユニット15aに設けられている。こ
れは、一般に、ロード命令が直接データを書き込むのは
整数レジスタファイルだからである。しかし、命令セッ
トによっては、浮動小数点レジスタファイルでデータを
書き込むこともある。したがって、図1に破線で示すよ
うに、DLC16をレジスタ・スコア・ボード・ユニッ
ト15bに設けてもよい。
【0022】命令・ウィンドウ・バッファ14a、レジ
スタ・スコア・ボード・ユニット15a及びDLC16
の詳細については後述する。
【0023】Dステージは、レジスタ・リード・ステー
ジである。Dステージは、レジスタ・ファイル17a、
17bを有している。レジスタ・ファイル17aは前記
命令ウィンドウ・バッファ・14aに接続され、レジス
タ・ファイル17bは前記命令ウィンドウ・バッファ・
14bに接続されている。
【0024】Aステージは、ALU演算ステージであ
る。Aステージは、演算ユニット18、19、及び浮動
小数点ユニット20を有している。演算ユニット18
は、整数ユニット18a、ロード・ストア・ユニット1
8bを有している。演算ユニット19は、整数ユニット
19a、乗算除算ユニット19を有している。整数ユニ
ット18a、ロード・ストア・ユニット18b、整数ユ
ニット19a、乗算除算ユニット19は、レジスタ・フ
ァイル17aに接続されている。浮動小数点ユニット2
0はレジスタ・ファイル17bに接続されている。
【0025】前記ロード・ストア・ユニット18bは、
アウト・オブ・オーダ実行を行うプロセッサにおいて、
アウト・オブ・オーダに処理されるロード命令、ストア
命令に対して、メモリを介したデータ依存関係を維持す
る。具体的には、ロード・ストア・ユニット18bは、
メモリアクセス命令の順番を把握し、アウト・オブ・オ
ーダに発行されるメモリアクセス命令の順序を管理す
る。さらに、ロード・ストア・ユニット18bは、ロー
ド命令の実行において、図示せぬデータ・キャッシュが
ミスヒットした場合、キャッシュ・ミス信号L0Mis
s1n(nはパイプラインのステージ)を出力する。こ
のキャッシュ・ミス信号L0Miss1nは前記DLC
16に供給される。
【0026】図2は、本実施例のパイプラインの一例を
示すダイアグラムである。各ステージの意味は、次の通
りである。
【0027】F:命令フェッチステージ1 I:命令フェッチステージ2 T:命令転送 R:レジスタ・リネーミング S:命令スケジューリング D:レジスタ・リード A:ALU演算 W:ライト・バック X:Wの次 Y:Xの次 Z:Yの次 C:完了 M:データ・キャッシュ・アクセス 図1に示す構成において、Tステージは、図2のF、
I、Tステージに対応している。
【0028】次に、図1に示す各部の動作について説明
する。
【0029】(命令フェッチ)命令フェッチユニット1
1は、実行すべき2命令をフェッチする。この命令フェ
ッチユニット11によりフェッチされた2命令は、Rス
テージに供給される。
【0030】(レジスタ・リネーミング)命令デコーダ
12は、命令フェッチユニット11から供給される命令
をデコードし、その命令がソースオペランドを必要とす
るか、及び演算結果はデスティネーション・レジスタに
書き込まれるかを判断する。レジスタ・リネーミング・
ユニット13a、13bは、命令とデコード情報に基づ
き、命令のソース・レジスタとデスティネーション・レ
ジスタの論理レジスタ番号に物理レジスタ番号を割り当
てる。図示せぬマッピングテーブルには、論理レジスタ
番号に対してそれまでに割り当てられた物理レジスタ番
号が対応して保存されている。このため、論理レジスタ
番号をキーとして最後に割り当てられた物理レジスタ番
号を検索することができる。ソース・レジスタを割り当
てる場合、命令コードから取り出した論理レジスタ番号
(Rs、Rt)をマッピングテーブルにインデックスと
して入力し、物理レジスタ番号(PRs、PRt)を検
索する。デスティネーション・レジスタ(Rd)を割り
当てる場合、先ず、未使用の物理レジスタ番号を保持し
ているフリーリストから未使用の物理レジスタ番号を取
り出す。この物理レジスタ番号をデスティネーション・
レジスタに割り当てる。さらに、割り当てた物理レジス
タ番号(PRd)を論理レジスタ番号をキーとして参照
できるように、マッピングテーブルに書き込む。同じ論
理レジスタ番号にそれまで割り当てられていた物理レジ
スタ番号(マッピングテーブルにおいて上書きされた物
理レジスタ番号)は、論理レジスタ番号とあわせてアク
ティブリストに書き込まれる。アクティブリストは、最
大で64個の命令をキューイングすることができる。ア
クティブリストには各エントリにインデックス番号が設
けられている。このインデックス番号は、ITagとし
て他のユニットにおいて命令をアイデンティファイする
ために用いられる。
【0031】(命令・ウィンドウ・バッファ)図3は、
前記命令・ウィンドウ・バッファ14a、14bの一例
を示している。命令・ウィンドウ・バッファ14a、1
4bは、例えば16個のエントリを有している。各エン
トリは命令の古い順に並んでいる。新しい命令が命令フ
ェッチユニット11から供給された場合、空いているエ
ントリうち、最も古い命令が入っているエントリに近い
エントリに書き込まれる。
【0032】命令・ウィンドウ・バッファ14a、14
bは、命令デコーダ12から供給される命令デコード情
報と、レジスタ・リネーミング・ユニット13a、13
bから供給される物理レジスタ番号と、命令フェッチユ
ニット11から供給される命令コードと、命令バリッド
(Valid)信号とを記憶する。すなわち、命令フェッチ
ユニット11から出力された命令バリッド信号が“1”
であるとき、命令・ウィンドウ・バッファ14a、14
bは、命令コードと、物理レジスタ番号などを空いたエ
ントリに書き込む。命令・ウィンドウ・バッファに空き
エントリが無くなった場合、命令フェッチユニット11
に対してフェッチ停止要求(Fetch Stall Request)信
号をアサートする。
【0033】命令・ウィンドウ・バッファ14a、14
bは、コンプレッサ14cを有している。命令を実行ユ
ニットに発行した後、このコンプレッサ14cは、発行
された命令のエントリを無効化し、空きエントリを作成
する。
【0034】前述したように、Rステージ以降の各ステ
ージは、整数ユニット(IU)及び浮動小数点ユニット
(FPU)からなる2系統の回路を有している。しか
し、以下の説明において、FPUの動作は省略し、IU
の動作のみ説明する。
【0035】図4は、命令・ウィンドウ・バッファを構
成する各エントリのフォーマットを示している。図4に
示す各フィールドについて簡単に説明する。
【0036】ITag:命令に対してユニークに振られ
た識別子であり、0〜63のいずかの値をとる。この値
は、アクティブリストのエントリ番号と等しい。
【0037】Instruction:32bit長の
命令コードそのもの。
【0038】FU:命令を発行すべきFunction
al Unitを示すフィールド。Rステージで命令が
デコードされ、命令の種類によってFU(ファンクショ
ン・ユニット)が決定される。このFUは、レジスタ・
リネーミング情報とともに命令・ウィンドウ・バッファ
に書き込まれる。FUは4ビットにより構成されてい
る。bit3は命令がALU命令であり、I0の整数ユ
ニットに発行されるべきものを示す。bit2はロード
・ストア・ユニットである。bit1はI1の整数ユニ
ットに命令が発行されるべきことを示し、bit0は乗
除算ユニットに命令が発行されるべきことを示してい
る。
【0039】PRs、PRt、PRf:ソースオペラン
ドの物理レジスタ番号。
【0040】PRd:デスティネーションの物理レジス
タ番号。
【0041】RsRdy、RtRdy、RfRdy:ソ
ース・レジスタのPRs、PRt、PRfが使用可能で
あることを示すフラグ。すなわち、Rs、Rt、Rfと
同一番号の物理レジスタに書き込む命令が実行を終了し
て演算結果が(内部バイパスや、レジスタ・ファイルを
通して)使える状態になる3サイクル前にセットされ
る。この3サイクルは、このRdyビットを参照してか
ら命令を発行し、さらに命令がオペランドを読み出すま
でのレイテンシ分に当たる。
【0042】EntryRdy:グローバルなエントリ
Readyビットであり、何らかの理由、例えば命令が
イン・オーダーに実行される場合にセットされる。ま
た、ある時点で実行不可能な場合にはクリアされる。
【0043】L1MissSM:ロード命令又はストア
命令である場合、キャッシュ・ミス、非キャッシュ・ア
クセス等のステートを保持するレジスタ。命令のキャッ
シュ・ミス後において、再発行(ロールバック)タイミ
ングを決めるためのもの。
【0044】InFlight:エントリの命令が現在
実行中であることを示す。
【0045】Rsv:エントリが次のサイクルでどのユ
ニット(I0/I1)に発行予定であるかを示す。
【0046】Valid:有効なエントリであるかどう
かを示す。
【0047】(命令・ウィンドウ・バッファ・エントリ
のアップデート)命令・ウィンドウ・バッファ14a
は、各エントリをアップデートするためのアップデート
回路を有している。
【0048】図5は、命令・ウィンドウ・バッファ14
aのアップデート回路21の一例を示している。図5に
おいて、図1と同一部分には同一符号を付している。
【0049】命令・ウィンドウ・バッファ14aの各エ
ントリには、アップデート回路21が接続されている。
このアップデート回路21は、命令・ウィンドウ・バッ
ファ14aに蓄えられた命令を、先行する命令の実行進
度に応じて各種ステータスビットを更新する。すなわ
ち、アップデート回路21には、RAT(Register Ava
ilability Table)22が接続されている。このRAT
22には、レジスタ・スコア・ボード・ユニット15a
が接続されている。レジスタ・スコア・ボード・ユニッ
ト15a及びRAT22は、物理レジスタ番号をキーと
して参照する記憶部であり、物理レジスタが使用可能か
どうかを示している。このRAT22は、データの演算
が終了すると、レジスタ・スコア・ボード・ユニット1
5aから供給される信号に応じて、演算結果を格納する
物理レジスタにフラグがセットされる。アップデート回
路21は、RAT22から供給されるレジスタのステー
タス及びレジスタ・スコア・ボード・ユニット15aか
ら供給される命令のステータスに基づき、エントリを毎
サイクルアップデートする。
【0050】さらに、命令・ウィンドウ・バッファ14
aの各エントリには、前記DLC16が接続されてい
る。このDLC16は、ロード・ストア・ユニット18
bから出力されるキャッシュ・ミス信号に応じてロード
命令に依存する命令を検索する。DLC16から出力さ
れる依存関係を示す信号Dpend1Aは、レジスタ・
スコア・ボード・ユニット15a、及びRAT22に供
給される。DLC16から信号Depend1Aが出力
された場合、レジスタ・スコア・ボード・ユニット15
aの命令のステータスに基づき、依存関係のある物理レ
ジスタに対するRAT22のエントリを無効化する。さ
らに、アップデート回路21は、命令・ウィンドウ・バ
ッファ14a内において、依存関係のある物理レジスタ
を無効状態にリセットする。ロード命令の実行時におい
て、キャッシュ・ミスが発生した時の詳細な動作は後述
する。
【0051】(命令発行)前述したように、本実施形態
の命令発行装置は、同時に2つの命令を発行する。命令
・ウィンドウ・バッファ14aの各エントリの命令は、
次の条件を満たした時、発行可能な状態となる。
【0052】(1)RsRdy、RtRdy、RfRd
y、HsRdy、EntryRdyが全てセットされて
いる(発行許可の状態になっている)。
【0053】(2)FUで指定される命令実行ユニット
(IU0、IU1、LSU、MAC)が以前の演算を終
了し、命令を受けられる状態であること。
【0054】(3)レジスタ・ファイルのライトポート
コンフリクトがないこと(レジスタ・ファイルに結果を
書き込むべきタイミングの時、ライトポートが空いてい
ること)。
【0055】(4)InFlightビットがクリアさ
れていること(同一命令が実行中でないこと)。
【0056】(5)L1MissSMが発行停止状態で
ないこと。
【0057】図6は、上記条件を判定するためのディス
パッチ決定回路31の一例を示している。このディスパ
ッチ決定回路31は、命令・ウィンドウ・バッファ14
aの各エントリに独立に設けられている。図6は、1つ
のエントリのディスパッチ・ロジックを示している。デ
ィスパッチ決定回路31は、命令・ウィンドウ・バッフ
ァ14aの各エントリとレジスタ・スコアボード・ユニ
ット15aに接続されている。ディスパッチ決定回路3
1は、命令・ウィンドウ・バッファ14aの各エントリ
とレジスタ・スコアボード・ユニット15aから供給さ
れる信号に応じて上記条件を判定する。この判定に応じ
てディスパッチ決定回路31は、各エントリがそれぞれ
どの実行ユニットに命令を発行することが可能であるか
を示す信号dispatchable to I0、I1を出力する。
【0058】図7は、発行可能なエントリから発行予定
エントリを決定する回路の一例を示している。各エント
リのディスパッチ決定回路から出力される信号dispatch
ableto I0、I1は、プライオリティ・セレクタ41
の入力端に供給される。このプライオリティ・セレクタ
41の出力端は、アップデート回路42に供給される。
【0059】プライオリティ・セレクタ41は、複数の
エントリが同時に同一実行ユニットに対して発行可能で
あった場合、そのうちの最も古いエントリから出力され
る信号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ビットをセットする。
【0060】(16−1Mux制御について)図8は、
命令・ウィンドウ・バッファ14aの一例を示す構成図
である。図8は、16個のエントリからパイプラインI
0とパイプラインI1に命令を発行する様子を示してい
る。各エントリ0〜15にはマルチプレクサ(MUX)
51、52の入力端が接続されている。マルチプレクサ
51、52は、各エントリのRsvビットの内容に応じ
て制御される。マルチプレクサ51の出力端は、ラッチ
回路53に接続され、マルチプレクサ52の出力端は、
ラッチ回路54に接続されている。ラッチ回路53は、
パイプラインI0に命令を発行し、ラッチ回路54は、
パイプラインI1に命令を発行する。
【0061】前述したように、命令・ウィンドウ・バッ
ファ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に書き込まれる。
【0062】(RATの参照と更新)図5に示すRAT
22は、前述したように、物理レジスタ番号をキーにし
て参照するテーブルであり、その物理レジスタが使用可
能かどうかを示している。このRAT22はレジスタ・
スコア・ボードロジックの一部でもある。RAT22の
エントリに例えば“1”がセットされている場合、その
エントリに対応する物理レジスタのデータは既に求めら
れており、参照可能であることを示している。また、R
AT22のエントリに例えば“0”がセットされている
場合、そのエントリに対応する物理レジスタのデータは
参照できない。
【0063】アップデート回路21は、命令・ウィンド
ウ・バッファ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をクリアする。
【0064】データの依存関係をチェックするため、命
令ディスパッチ時にRAT22を参照するタイミング
と、実際にデータを参照する(レジスタ・ファイル17
aを読み出す、あるいはデータをバイパスする)タイミ
ングにはずれがある。このため、ある命令の実行が終了
した時、その物理デスティネーション・レジスタにデー
タが書き込まれるよりも3サイクル早いタイミングで、
その書き込みレジスタのRAT22をセットする。
【0065】図9は、ALU命令の動作タイミングの一
例を示している。図9において、RAT22はSステー
ジでセットされる。一方、データが実際に得られるのは
3サイクル後のWステージである。このため、RAT2
2のセットタイミングと書き込みタイミングとがずれて
いる。
【0066】図10は、ロード命令の動作タイミングの
一例を示している。ロード命令の場合、Wステージの3
サイクル前であるDステージでRAT22をセットす
る。
【0067】また、その物理レジスタを使用しなくなっ
たとき、その物理レジスタに対応するRAT22をクリ
アする。すなわち、同一論理レジスタに別の物理レジス
タが割り当てられ、その使用が終了した場合、以前に割
り付けられていた物理レジスタを開放する。このとき、
その物理レジスタに対応するRAT22をクリアする。
【0068】また、通常、RAT22は投機的に実行さ
れた命令のデスティネーション・レジスタに対しても即
座に更新される。これは依存関係のある命令を最短のレ
イテンシで実行し、アウト・オブ・オーダのメリットを
生かすためである。しかし、分岐予測ミスや、例外が発
生した場合、予測ミスした分岐命令や、例外を発生した
命令が終了したイン・オーダーの時点にRAT22を戻
す必要がある。例えば例外が発生した命令の次の命令は
実行前で止まる必要がある。このため、その命令が書き
込む物理レジスタは、RAT内において無効にしなけれ
ばならない。このようなRATを便宜上ワーキングRA
Tと呼ぶ。
【0069】ところが、実際は投機的に命令を実行して
いる。このため、既にワーキングRATはセットされて
いる可能性がある。したがって、命令の実行が完了した
時、例外発生や分岐予測ミスを判定し、実行が完了した
時のステートを持つイン・オーダーで更新するRAT
(便宜上、イン・オーダーRATと呼ぶ)を別に1セッ
ト設けておく。例外発生、分岐予測ミス時、イン・オー
ダーRATの内容をワーキングRATに一括コピーす
る。これによって、ワーキングRATを、分岐予測ミス
や例外発生直後の状態にリストアすることができる。
【0070】(データ・キャッシュ・ミス時の動作)図
10に示すロード命令のタイミング図から分かるよう
に、ロード命令のデスティネーション・レジスタRdに
対応するRATのセットは、レイテンシを最短にするた
め、ロード命令のDステージで行われる。これはロード
命令のキャッシュ・ミスが判明するWステージの3サイ
クル前である。すなわち、この3サイクル間はロード命
令がミスするかもしれない状況にもかかわらず、ロード
命令の実行結果にデータが依存した命令を発行してしま
う。このような構成とすることにより、仮に、ロード命
令がヒットした場合、最短のレイテンシで命令を実行す
ることが可能となる。
【0071】本質的には、RATの更新のためのサイク
ル、参照のためのサイクルと、ディスパッチのためのサ
イクルの3サイクルがこれに当たる。しかし、これを0
サイクルとすることはできない。このため、そのサイク
ル分だけ、投機実行となる期間が確実に存在する。
【0072】キャッシュがヒットした場合、何も問題は
生じない。したがって、命令の実行を続ければよい。し
かし、キャッシュ・ミスが発生した場合、次のような処
理を行う必要がある。すなわち、 (1)キャッシュ・ミスしたロード命令、ならびに、ロ
ード命令に依存しスケジュールが完了し、又は実行中の
命令を無効化する。
【0073】(2)RATにおけるロード命令のデステ
ィネーション・レジスタ、及びロード命令に依存した命
令のデスティネーション・レジスタをクリアする。
【0074】(3)無効化された命令をキャッシュがリ
フィルされた後、再実行する。
【0075】上記処理を行うため、先ず、ロード命令に
依存した実行中の命令と、ロード命令と無関係な命令と
を区別しなければならない。また、上述したように、ロ
ード命令は、3サイクルの投機的実行期間がある。この
ため、ロード命令に直接的に依存した命令だけでなく、
ロード命令に依存した第1の命令に、依存する第2の命
令、さらに第2の命令に依存する第3の命令といった3
重の依存関係まで検出する必要がある。また、ある命令
のソース・レジスタRsは第1のロード命令に依存し、
ソース・レジスタRtは第2のロード命令に依存すると
いうように、複数のロード命令に並列した依存関係も検
出する必要がある。さらに、それらが複合した依存関係
も検出する必要がある。
【0076】図11は、上記ロード命令と他の命令との
依存関係の例を示すパイプライン・ダイアグラム、及び
データ・フロー・グラフを示している。図11(a)
(b)(c)に示す例は、全てキャッシュ・ミスが判明
する前に命令発行しなければならないケースである。こ
れらの例において、レジスタ番号は論理レジスタではな
く物理レジスタを示すものとする。
【0077】図11(c)に示す2並列2重間接依存の
場合を例に説明する。データ・フロー・グラフにおい
て、○印で示すレジスタはキャッシュ・ミスが判別され
る前のロード命令の結果である。ロード命令に着目する
と、r4はr1に依存し,r7はr2に依存する。さら
に、r8はr4、r7に依存し、r10はr4に依存す
る。
【0078】図11(c)において、(1)のlw(ロ
ード)命令がキャッシュ・ミスし、(2)のlw(ロー
ド)命令がキャッシュ・ヒットした場合、次のように処
理する。
【0079】先ず、(1)のロード命令に対応するr1
に依存するものは全て無効化する。しかし、(2)のロ
ード命令に対応するr2に依存するものは有効である。
このため、RATのr4、r10、r8を無効化する。
さらに、これらr4、r10、r8を使用する(3)、
(5)、(6)の命令を無効化し、再発行する。ただ
し、RATのr7と(4)のsub命令は無効化しな
い。
【0080】上記一連の動作を実行するため、次の処理
を行う。
【0081】(1)依存関係検索回路(DLC)16に
よる間接依存の検出。
【0082】(2)RATの更新。
【0083】(3)命令・ウィンドウ・バッファでのロ
ールバック動作。
【0084】(DLCによる間接依存の検出)先ず、D
LC16によるロード命令と依存した命令の検出につい
て説明する。
【0085】図12は、DLC16の一実施例を示して
いる。図12において、第1の検出回路16aは、ロー
ド命令と直接的に依存したレジスタを検出する。また、
第2の検出回路16bは、多段の間接的な依存関係を検
出する。
【0086】第1の検出回路16aは、パイプラインス
テージの数と同数のレジスタ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の他
方入力端に供給される。
【0087】一方、第2の検出回路16bは、アンドオ
ア回路AOR1〜AOR6、アンド回路A1〜A4、ラ
ッチ回路XA、YA、ZA、ZZA、YM、ZM、Z
W、L0Miss1X、L0Miss1Y、L0Mis
s1Z、及びオア回路OR7により構成されている。ア
ンドオア回路AOR1〜AOR6は、アンド回路とオア
回路が直列接続されている。アンドオア回路AOR1〜
AOR6は、ロード命令に間接的に依存する命令を検出
し、この検出した依存関係を直接依存にマッピングす
る。
【0088】前記オア回路OR1の出力信号EqAは、
アンドオア回路AOR1、AOR2、AOR3を構成す
るアンド回路の一方入力端に供給される。前記オア回路
OR2の出力信号EqMは、アンドオア回路AOR4、
AOR5を構成するアンド回路の一方入力端に供給され
る。前記オア回路OR3の出力信号EqWは、アンドオ
ア回路AOR6を構成するアンド回路の一方入力端、及
びアンド回路A1の一方入力端に供給される。前記オア
回路OR4の出力信号EqXは、アンド回路A2の一方
入力端に供給される。前記オア回路OR5の出力信号E
qYは、アンド回路A3の一方入力端に供給される。前
記オア回路OR6の出力信号EqZは、アンド回路A4
の一方入力端に供給される。
【0089】一方、ロード・ストア・ユニット18bか
ら供給されるキャッシュ・ミス信号L0Miss1W
は、前記アンド回路A1の他方入力端に供給されるとと
もに、ラッチ回路L0Miss1Xに供給される。ラッ
チ回路L0Miss1Xの出力信号は、前記アンド回路
A2の他方入力端に供給されるとともに、ラッチ回路L
0Miss1Yに供給される。ラッチ回路L0Miss
1Yの出力信号は、前記アンド回路A3の他方入力端に
供給されるとともに、ラッチ回路L0Miss1Zに供
給される。ラッチ回路L0Miss1Zの出力信号は、
前記アンド回路A4の他方入力端に供給される。
【0090】前記アンド回路A4、A3、A2の出力信
号DDZ、DDY、DDXは、前記アンドオア回路AO
R6、AOR5、AOR3を構成するオア回路の一方入
力端にそれぞれ供給される。前記アンドオア回路AOR
6を構成するオア回路の出力信号は、前記アンドオア回
路AOR4を構成するオア回路の一方入力端に供給され
る。前記アンドオア回路AOR4を構成するオア回路の
出力信号は、前記アンドオア回路AOR1を構成するオ
ア回路の一方入力端に供給される。前記アンドオア回路
AOR5を構成するオア回路の出力信号は、前記アンド
オア回路AOR2を構成するオア回路の一方入力端に供
給される。
【0091】前記アンド回路A1の出力信号DDWは、
ラッチ回路XAに供給される。前記アンドオア回路AO
R1、AOR2、AOR3を構成するオア回路の出力信
号は、前記ラッチ回路ZZA、ZA、YAの入力端に供
給される。これらラッチ回路XA、YA、ZA、ZZA
の出力信号は、オア回路OR7の入力端に供給される。
また、ラッチ回路XA、YA、ZAの出力信号は、前記
アンドオア回路AOR3、AOR2、AOR1を構成す
るアンド回路の他方入力端にそれぞれ供給される。
【0092】前記ラッチ回路XAの出力信号は、ラッチ
回路YMに供給され、前記ラッチ回路YAの出力信号
は、ラッチ回路ZMに供給される。前記ラッチ回路YM
の出力信号はラッチ回路ZWに供給される。前記ラッチ
回路ZM、YMの出力信号は、前記アンドオア回路AO
R4、AOR5を構成するアンド回路の他方入力端にそ
れぞれ供給される。前記ラッチ回路ZWの出力信号は、
前記アンドオア回路AOR6を構成するアンド回路の他
方入力端に供給される。前記オア回路OR7の出力端か
ら、後述する依存関係の有無を示す信号Depend1
Aが出力される。
【0093】上記構成のDLC16は、次のステップで
依存関係を検出する。
【0094】(1)物理レジスタ番号比較。
【0095】(2)直接依存の検出。
【0096】(3)間接依存を検出し、検出した間接依
存を直接依存へ写像。
【0097】(4)依存信号の生成。
【0098】(5)直接依存のステージング。
【0099】図11(c)を参照して、上記DLC16
の動作について説明する。図11(c)において、
(1)のlw(ロード)命令がキャッシュ・ミスを発生
するものとする。
【0100】命令・ウィンドウ・バッファ14aから
は、図11(c)に(1)〜(6)で示す順序に従っ
て、各命令のデスティネーション・レジスタ番号、ソー
ス・レジスタRs、Rtの番号が出力される。デスティ
ネーション・レジスタ番号はDLC16のレジスタR1
に供給される。レジスタR1に保持されたデスティネー
ション・レジスタ番号は、パイプラインの各ステージの
実行に従ってレジスタR1〜R6に順次シフトされる。
また、各命令のソース・レジスタRtの番号は、比較器
C1〜C6に同時に供給され、ソース・レジスタRsの
番号は、比較器C11〜C16に同時に供給される。
【0101】時刻t4において、(3)のadd命令が
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とを比較する。
【0102】すなわち、時刻t4において、Dステージ
のソース・レジスタRsの番号と、(1)のlw命令の
Wステージに対応するレジスタR3に保持されたデステ
ィネーション・レジスタRdの番号が共にレジスタ番号
“r1”である。このため、比較器C13から一致信号
が出力され、オア回路OR3の出力信号EqWが“1”
となる。比較器C13以外の比較器から一致信号が出力
されないため、オア回路OR3以外のオア回路の出力信
号は“0”となる。
【0103】一方、キャッシュ・ミスは(1)のlw命
令のWステージで判明する。このため、時刻t4におい
て、キャッシュ・ミス信号L0Miss1Wは“1”と
なり、このキャッシュ・ミス信号L0Miss1Wと、
オア回路OR3の出力EqWがアンド回路A1に供給さ
れる。このため、AND回路A1の出力信号DDWは
“1”となる。この信号DDWは、Wステージのロード
命令にDステージの命令が直接依存するかどうかを示す
信号である。さらに、この信号DDWが“1”である場
合、Wステージのロード命令にDステージの命令が直接
依存し、且つキャッシュ・ミスが発生していることを示
している。
【0104】また、ラッチ回路L0Miss1Xは、前
記キャッシュ・ミス信号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ス
テージの命令が直接依存し、且つキャッシュ・ミスが発
生していることとなる。
【0105】次に、時刻t5において、信号DDWが前
のサイクルで“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の出力信号
は、キャッシュ・ミスの確認済みの信号となる。
【0106】また、図11(c)に示す(2)のlw
(ロード)命令と(4)のsub命令が依存関係を有し
ている。(2)のlw命令はキャッシュ・ヒットすると
の仮定であるため、アンド回路A1の出力信号DDWは
“0”となる。
【0107】次に、時刻t6において、図11(c)に
示す(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”となる。
【0108】また、時刻t6において、前記レジスタX
Aの出力信号“1”が、レジスタYMにセットされる。
このため、レジスタYMの出力信号が“1”となる。こ
のレジスタYMの出力信号は、オア回路OR2の出力信
号EqMとともに、アンドオア回路AOR5に供給され
る。このため、アンドオア回路AOR5から信号“1”
が出力される。この信号はアンドオア回路AOR2を介
してラッチ回路ZAに信号YDとして供給される。
【0109】さらに、前記OR回路OR1の出力信号
は、アンドオア回路AOR1、AOR2、AOR3を構
成するアンド回路の一方入力端に供給される。しかし、
このとき、ラッチ回路XA、YA、ZA、ZZAの出力
信号は、いずれも“0”である。このため、アンドオア
回路AOR1、AOR2、AOR3を構成する各アンド
回路の入力条件は成立しない。このため、Aステージに
ある(4)のsub命令との間の依存関係は保持されな
い。この理由は、(4)のsub命令が依存関係を有す
る(2)のlw命令がキャッシュ・ヒットしている。こ
のため、時刻t6において、ラッチ回路XAの出力信号
が“0”となっているためである。このようにして、キ
ャッシュ・ミスが発生したロード命令に直接的、及び間
接的に依存した命令を検出することができる。
【0110】すなわち、第2の検出回路16bは、実行
状態にある全ての命令の依存関係をA〜Zステージにあ
るキャッシュ・ミスした全てのロード命令との間で依存
関係を検出している。換言すると、第2の検出回路16
bは、多段の間接的な依存関係を検出して直接依存関係
に変化し、このうちのキャッシュ・ミスの場合だけ依存
関係を検出する。第2の検出回路16bにより、キャッ
シュ・ミスしたロード命令に依存する全ての命令がどの
ステージに存在するかを、複雑なリストを用いることな
く、直接検出することができる。
【0111】上記説明において、ロード命令のキャッシ
ュ・ミスは、Wステージで判明すると仮定した。しか
し、ロード命令のキャッシュ・ミスがXステージ、又は
Yステージにおいて判明するような場合も考えられる。
このような場合、投機的実行期間が長くなるため、投機
命令数が増加し、間接依存の段数が増える。しかし、上
記構成のDLC16を用いることにより、最小限のハー
ドウェア構成により、直接的及び間接的な依存関係を検
出することが可能である。
【0112】上記のように、DLC16によりキャッシ
ュ・ミスが発生したロード命令に依存した命令が検出さ
れると、第2の検出回路16bを構成するOR回路OR
7から依存関係の有無を示す信号Depend1Aが出
力される。この信号Depend1Aは、図5に示すレ
ジスタ・スコア・ボード・ユニット15a、及びRAT
22に供給される。レジスタ・スコア・ボード・ユニッ
ト15a、及びRAT22は、信号Depend1Aに
応じて内容が更新される。
【0113】(キャッシュ・ミスによるRATの更新)
図13は、RAT22の更新回路22aの一例を示して
いる。この更新回路22aは、例えば複数のアンド回路
A21〜A25、複数の比較器C21〜C24、オア回
路OR11、OR12、ノア回路NR1により構成され
ている。
【0114】通常、ALU命令の最後のSステージ、又
はロード命令のDステージにおいて、その命令が書き込
むデスティネーション・レジスタRdに対応するRAT
のエントリがセットされる。これはその物理レジスタを
参照する命令の発行遅延を考慮したものである。
【0115】図13において、ALU命令の場合、比較
器C21により最後のSステージにおけるデスティネー
ション・レジスタ(物理レジスタ)Rdの番号と、RA
T22のエントリ番号(n)とを比較する。また、ロー
ド命令の場合、比較器C22により、Dステージにおけ
るデスティネーション・レジスタRdの番号と、RAT
22のエントリ番号とを比較する。これらデスティネー
ション・レジスタRdの番号とRAT22のエントリ番
号が一致し、かつ有効な命令がそのステージに存在する
場合はRAT22がセットされる。
【0116】尚、図13は、ワーキングRATであり、
分岐予測ミスを回復するためのイン・オーダーRATか
らのリストアと、物理レジスタが開放された場合にRA
Tをクリアするパスは含んでいない。
【0117】一方、ロード命令にキャッシュ・ミスが発
生した場合において、ロード命令に依存した命令がAス
テージにある時、そのデスティネーション・レジスタR
dの番号と、RAT22のエントリ番号とが比較器C2
3により比較される。この比較の結果、これらが一致
し、且つ、DLC16から供給される信号Depend
1Aが“1”のとき、ロード命令に依存する命令の結果
を書き込むデスティネーション・レジスタに対するRA
T22のフラグがクリアされる。前述したように、信号
Depend1Aが“1”であることは、Aステージに
ある命令がロード命令に依存関係を有し、且つロード命
令がキャッシュ・ミスしたことを意味する。すなわち、
Aステージにある命令は、正しいソースオペランドを得
ることができなくなる。したがって、この命令の実行結
果も正しくないため、RAT22のその命令のデスティ
ネーション・レジスタのフラグをクリアする。
【0118】また、キャッシュ・ミスしたロード命令の
実行結果が供給されるデスティネーション・レジスタR
dもクリアする。すなわち、ロード命令においてキャッ
シュ・ミスが発生した場合、Xステージにあるロード命
令のデスティネーション・レジスタRdと、RAT22
のエントリ番号が比較器C24により比較される。この
比較の結果、両者が一致し、且つキャッシュ・ミス信号
L0Miss1Xが“1”である場合、RAT22のキ
ャッシュ・ミスしたロード命令の実行結果が供給される
デスティネーション・レジスタRdのフラグがクリアさ
れる。
【0119】このようにキャッシュ・ミスしたロード命
令のデスティネーション・レジスタRdと、それに依存
した命令のデスティネーション・レジスタRdであっ
て、既にRAT22の対応するレジスタのエントリにセ
ットされているフラグは全てクリアされる。
【0120】また、RAT22のフラグをクリアするこ
とにより、キャッシュ・ミスが判明したロード命令のX
ステージ以降のタイミングでは、多重間接依存を含めて
Rdを参照できなくなる。さらに、図5に示すアップデ
ート回路21は、RAT22の内容に基づいて命令ウィ
ンドウ・バッファ14aのRsRdy、RtRdy、R
fRdyをクリアする。このため、キャッシュ・ミスが
発生したロード命令と依存関係を有する命令は発行でき
なくなる。
【0121】上記のような動作が、毎サイクル実行され
ることにより、キャッシュ・ミスを起こしたロード命令
と直接的、及び間接的に依存するレジスタが無効化さ
れ、且つキャッシュ・ミスが発生したロード命令と依存
関係を有する命令が無効される。
【0122】(IWBでのロールバック動作)ロード命
令がキャッシュ・ミスを発生した場合、キャッシュ・ミ
スしたロード命令と、それに依存した全ての命令を再実
行する。この動作をロールバックと呼ぶ。ここでは、そ
のロールバック方法について述べる。
【0123】命令・ウィンドウ・バッファ14aから命
令を発行したあと、キャッシュ・ミスの判明しない実行
中のロード命令、又はストア命令と、それ以降の全ての
命令を命令・ウィンドウ・バッファ14aに保持したま
まにする。その際、命令・ウィンドウ・バッファ14a
のInFlightビットをセットしておく。ロード命
令、又はストア命令は、キャッシュがヒットした場合、
Xステージで命令・ウィンドウ・バッファ14aのVa
lidビットをクリアして命令・ウィンドウ・バッファ
から消去する。キャッシュ・ミスが発生した場合、In
FlightビットをクリアするとともにValidビ
ットはセットしたままとする。同時にL1MissSM
ビットをキャッシュ・ミスの状態に変更する。キャッシ
ュのリフィルが終了すると、L1MissSMビットが
初期状態にリセットされる。この後、ロード命令、又は
ストア命令が再度スケジューリングされ発行される。
【0124】一方、ロード命令に依存した命令と、ロー
ド命令に対して間接的に依存した命令について、命令が
Aステージに到達した時に、信号Depend1Aが
“1”である場合、間接的な依存関係も含めて依存元で
あるロード命令がキャッシュ・ミスしている。このた
め、命令・ウィンドウ・バッファからこの命令を消去せ
ずに残しておく。また、信号Depend1Aが“0”
である場合、依存するロード命令はヒットしているので
命令・ウィンドウ・バッファからこの命令をクリアす
る。
【0125】上記実施形態によれば、DLC16は、ロ
ード命令に直接的に依存する命令を検出する第1の検出
回路16aと、ロード命令に間接的に依存する命令を検
出する第2の検出回路16bとを有し、第2の検出回路
16bは、実行状態にある全ての命令とA〜Zステージ
にある全てロード命令との間で多段の間接的な依存関係
を検出し、このうち、キャッシュ・ミスが発生している
場合だけ、間接的な依存関係を検出している。このた
め、このDLC16は、キャッシュ・ミスが発生したロ
ード命令に対して直接的、又は間接的に依存する命令を
高速に検出することができる。
【0126】しかも、このDLC16は、キャッシュ・
ミスしたロード命令に依存する全ての命令がどのステー
ジに存在するかを、複雑なリストを用いたり、データ・
フロー・グラフを全てトレースしたりすることなく、直
接検出することができる。したがって、回路規模の増大
を防止できる利点を有している。
【0127】さらに、このDLC16は、キャッシュ・
ミスしたロード命令に対して直接的、及び間接的に依存
する命令のみ無効化している。このため、キャッシュ・
ミスしたロード命令以降の全ての命令を無効化する場合
に比べて、命令の無駄な無効化を防止できる。したがっ
て、再発行する命令の数を削減できるため、命令発行効
率を向上できる。
【0128】また、DLC16の出力信号に基づき、レ
ジスタ・スコア・ボード15a、及びRAT22の内容
は毎サイクル変更されている。このため、DLC16に
より検出されたロード命令に依存するレジスタ、及び命
令を効率よく破棄することができる。さらに、命令・ウ
ィンドウ・バッファ14aの内容は、レジスタ・スコア
・ボード15a、及びRAT22の内容に従って毎サイ
クル更新されている。このため、キャッシュがリフィル
された後、破棄された命令を確実に再発行することがで
きる。
【0129】本発明は、上記実施形態に限定されるもの
ではなく、その他、本発明の要旨を変えない範囲におい
て種々変形実施可能なことは勿論である。
【0130】
【発明の効果】以上、詳述したように本発明によれば、
ロード命令において、キャッシュ・ミスが発生した際、
このロード命令と多段の依存関係を有する命令を高速に
検出することが可能な命令発行装置を提供できる。
【図面の簡単な説明】
【図1】本発明の命令発行装置の実施形態を示す構成
図。
【図2】本実施例のパイプラインの一例を示すダイアグ
ラム。
【図3】命令・ウィンドウ・バッファの一例を示す構成
図。
【図4】命令・ウィンドウ・バッファを構成する各エン
トリの一例を示す構成図。
【図5】命令・ウィンドウ・バッファのアップデート回
路の一例を示す構成図。
【図6】ディスパッチ決定回路の一例を示す構成図。
【図7】発行予定エントリを決定する回路の一例を示す
構成図。
【図8】命令・ウィンドウ・バッファの一例を示す構成
図。
【図9】ALU命令の動作タイミングの一例を示す図。
【図10】ロード命令の動作タイミングの一例を示す
図。
【図11】図11(a)(b)(c)は、ロード命令と
他の命令との依存関係の例を示すパイプライン・ダイア
グラム及びデータ・フロー・グラフ。
【図12】DLC(依存関係検索回路)の一実施例を示
す回路図。
【図13】RATの更新回路の一例を示す回路図。
【図14】ロード命令に続いて発行された複数の命令と
の依存関係を示す図。
【符号の説明】
11…命令フェッチユニット、 12…命令デコーダ、 14a、14b…命令・ウィンドウ・バッファ、 15a、15b…レジスタ・スコア・ボード・ユニッ
ト、 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の検出回路と、 前記第1の検出回路の出力信号と、前記ロード命令のキ
    ャッシュ・ミス信号とに基づき、前記命令発行部により
    発行された命令と、前記パイプランの各ステージにある
    キャッシュ・ミスしたロード命令との間接的な依存関係
    を検出する第2の検出回路とを具備することを特徴とす
    る命令発行装置。
  2. 【請求項2】 前記第1の検出回路は、前記パイプライ
    ンステージの数と同数設けられ、命令の実行結果が順次
    書き込まれるデスティネーション・レジスタの番号を保
    持する直列接続された第1の記憶部と、 前記第1の記憶部に保持された前記デスティネーション
    ・レジスタの番号と前記ロード命令に続く命令のソース
    ・レジスタの番号とを比較し、前記他の命令が前記ロー
    ド命令に直接的に依存関係を有しているかどうかを判定
    する複数の比較器とを具備することを特徴とする請求項
    1記載の命令発行装置。
  3. 【請求項3】 前記第2の検出回路は、複数のロード命
    令に対する依存関係を保持するため、パイプラインステ
    ージごとに依存元のロード命令に対する依存関係を保持
    する第1のラッチ回路と、 前記キャッシュ・ミス信号を前記パイプラインの動作に
    同期して保持する複数の第2のラッチ回路と、 前記第2のラッチ回路の出力信号と、前記各比較器の出
    力信号とに応じて、前記ロード命令に直接依存し、前記
    キャッシュ・ミス信号を含んだ信号を発生する複数の第
    1の論理回路と、 前記第1のラッチ回路の出力信号と前記比較器の出力信
    号、及び前記第1の論理回路の出力信号に応じて、前記
    ロード命令に間接的に依存する命令を検出する第2の論
    理回路とを具備することを特徴とする請求項2記載の命
    令発行装置。
  4. 【請求項4】 前記命令発行部は、前記第2の検出回路
    の出力信号に応じて、前記ロード命令に依存する命令を
    無効化することを特徴とする請求項3記載の命令発行装
    置。
  5. 【請求項5】 前記命令発行部は、キャッシュがリフィ
    ルされた後、前記無効化された命令を再発行することを
    特徴とする請求項4記載の命令発行装置。
  6. 【請求項6】 命令をアウト・オブ・オーダに投機的に
    発行する命令発行部と、 前記命令発行部により発行された命令と、パイプランの
    各ステージにあるロード命令を含む複数の命令との直接
    的な依存関係を検出する第1の検出回路と、 前記第1の検出回路の出力信号と、前記ロード命令のキ
    ャッシュ・ミス信号とに基づき、前記命令発行部により
    発行された命令と、前記パイプランの各ステージにある
    キャッシュ・ミスしたロード命令との間接的な依存関係
    を検出する第2の検出回路と、 パイプラインで実行中の命令の書き込みレジスタに有効
    なデータが有るか否かを示す情報を保持する第1の記憶
    部と、 前記第1の記憶部の出力信号に応じて、レジスタが使用
    可能かどうかを示す情報を記憶する第2の記憶部と、 前記第1、第2の記憶部の出力信号に応じて、前記命令
    発行部のソースオペランドの有効性を示す情報を更新す
    る更新回路とを具備することを特徴とする命令発行装
    置。
  7. 【請求項7】 前記第2の記憶部は、前記第2の検出回
    路の出力信号に応じて、キャッシュ・ミスした前記ロー
    ド命令に依存するレジスタに対応するフラグをクリアす
    る第3の論理回路を有することを特徴とする請求項6記
    載の命令発行装置。
  8. 【請求項8】 第1の検出回路でロード命令と後続の命
    令との直接的な依存関係を検出し、 第2の検出回路で前記ロード命令と後続の命令との間接
    的な依存関係を検出し、この検出した間接的な依存関係
    を直接的な依存関係に変換し、 前記ロード命令にキャッシュ・ミスが発生したことを示
    す信号と変換された前記直接的な依存関係とにより、前
    記ロード命令と間接的な依存関係を有する命令を検出す
    ることを特徴とする命令発行方法。
  9. 【請求項9】 前記検出されたロード命令と直接的な依
    存関係を有する命令、及び前記検出されたロード命令と
    間接的な依存関係を有する命令を無効化することを特徴
    とする請求項8記載の命令発行方法。
  10. 【請求項10】 キャッシュがリフィルされた場合、前
    記無効化された命令を再発行することを特徴とする請求
    項9記載の命令発行方法。
JP2002077091A 2002-03-19 2002-03-19 命令発行装置及び命令発行方法 Expired - Fee Related JP3577052B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207238A (ja) * 2006-02-02 2007-08-16 Internatl Business Mach Corp <Ibm> 非同期式パイプラインのためのデータ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置及び方法
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207238A (ja) * 2006-02-02 2007-08-16 Internatl Business Mach Corp <Ibm> 非同期式パイプラインのためのデータ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置及び方法
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