JP2001209535A - プロセッサの命令スケジューリング装置 - Google Patents
プロセッサの命令スケジューリング装置Info
- Publication number
- JP2001209535A JP2001209535A JP2000018291A JP2000018291A JP2001209535A JP 2001209535 A JP2001209535 A JP 2001209535A JP 2000018291 A JP2000018291 A JP 2000018291A JP 2000018291 A JP2000018291 A JP 2000018291A JP 2001209535 A JP2001209535 A JP 2001209535A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- scheduling
- window
- dispatched
- bit
- 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.)
- Pending
Links
- 230000007246 mechanism Effects 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 abstract description 6
- 230000006866 deterioration Effects 0.000 abstract 2
- 230000006870 function Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 14
- 230000006872 improvement Effects 0.000 description 10
- 238000013507 mapping Methods 0.000 description 6
- 230000002411 adverse Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004870 electrical engineering Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 229940036310 program Drugs 0.000 description 1
- 238000004088 simulation 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
-
- 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/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
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
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
るプロセッサにおいて、動的な命令スケジューリングの
効率を向上させる。 【解決手段】 命令をデコードし、演算するプロセッサ
の動的な命令スケジューリング装置であって、スケジュ
ーリングウインドウ271と命令バッファ272とを有
し、それらが分割して構成される。そして、各命令は計
算器にディスバッチされると直ちに命令スケジューリン
グ機構を解放するため、命令スケジューリング機構の実
効容量低下を引き起こさない。その結果、プロセッサ性
能の低下を抑えることができる。
Description
し、特にプロセッサの命令スケジューリング装置に関す
る。
つに命令間の依存関係の問題がある。依存関係には制御
依存関係(control dependence)、資源依存関係(name
dependence)、そしてデータ依存関係(data dependen
ce)がある。制御依存関係には多くの研究があり、分岐
予測や投機的実行により依存関係の解消が試みられてい
る。資源依存関係はレジスタの数というハードウエア資
源の不足により生じる。これはレジスタリネーミング
(R.M.Keller, Look-Ahead Processors, ACM Computing
Surveys, vol.7, no.4, pp.177-195, 1975)を施すこと
により解消可能である。しかしデータ依存関係は、「真
の依存関係」とも称されるように、解消できる方法は未
だない。つまりデータ依存関係は、命令レベル並列度
(instructionlevel parallelism)を向上する妨げとな
る非常に深刻な問題である。
る。理解を容易にするために、f1からf4までの各オ
ペレーションのソースオペランドは1つに限定する。実
行レイテンシは、命令I1を除いて1と仮定する。命令
I1は、例えばデータキャッシュミスを発生したロード
命令であり、そのレイテンシを4と仮定する。図8の命
令シーケンスには2つのデータ依存関係が存在する。一
つは命令I1と命令I3の間であり、もう一つは命令I
3と命令I4の間である。データ依存関係が存在する場
合には、後続の命令は先行する命令の終了を待たなけれ
ば演算を実行できない。この例では、命令I3は命令I
1が終了しなければ演算を開始できないし、命令I4は
命令I3が終了しなければ演算を開始できない。したが
って従来は、データ依存のために演算が停止している命
令を追い越して、データ依存の関係にない命令を実行し
ている。この操作は動的な命令スケジューリングと呼ば
れており、リザベーションステーション(R.M.Tomasul
o, An Effect Algorithm forExploiting Multiple Arit
hmetic Units, IBM Journal, vol.11, pp.25-33, 196
7)などを用いて構成される命令ウインドウによって実
現される。
S.Sohi, Instruction Issue Logicfor High-Performanc
e, Interruptible, Multiple Functional Unit, Pipeli
nedComputers, IEEE Trans. on Computer, vol.39, no.
3, pp.349-359, 1990)を用いて構成される命令ウイン
ドウの1エントリを示す。命令ウインドウの各エントリ
は、2つのソースオペランドフィールド(Source Opera
nd)100(又は110)、デスティネーションフィー
ルド(Destination)120、ディスパッチドビット(D
ispatched)130、ファンクションユニットフィール
ド(Functional Unit)140、実行(Executed)ビッ
ト150、そしてプログラムカウンタフィールド(Prog
ram Counter)180から構成される。もしソースオペ
ランドが未だ得られない時には、レディビット(Read
y)101(又は111)がリセットされソースオペラ
ンドが利用不可能であることを示す。同時に、そのオペ
ランドを示すタグ(Tag)102(又は112)がセッ
トされる。オペランドが利用可能になると、ソースレジ
スタの値がコンテント(Content)フィールド103(又
は113)にセットされ、レディビット101(又は1
11)がセットされる。タグ(Tag)情報を伴ったデス
ティネーションレジスタ番号はデスティネーション(Des
tination)フィールド120のレジスタ(Register)フィ
ールド121に保持され、命令の実行結果はコンテント
(Content)フィールド122に保存される。ディスパッ
チドビット130はファンクションユニットフィールド
140で指定されるファンクションユニットに命令がデ
ィスパッチされているかどうかを示す。実行ビット15
0は命令が完了するとセットされる。実行ビット150
がセットされていると、この命令とデータ依存関係にあ
る後続命令はディスパッチ可能になる。最後にプログラ
ムカウンタ(Program Counter)フィールド180は、予
測失敗からのプロセッサ状態の回復と、正確な例外を実
現するために用いられる。
命令がプログラムに現れた順に登録される。先行する命
令が演算を終了すると、演算結果122とデスティネー
ションレジスタ番号121が放送される。後続の命令は
デスティネーションレジスタ番号121を観測し、ソー
スオペランドタグ102(又は112)と一致した場合
にはその演算結果をソースオペランド103(又は11
3)として取り込む。命令は、全てのソースオペランド
が揃うと実行可能になる。先行する全ての命令が実行を
終えていなくても、追い越して実行可能となる。
示す。同図に示すように従来のプロセッサは、命令キャ
ッシュ200、命令デコーダ260、レジスタファイル
210、命令ウインドウ220、ファンクションユニッ
ト240〜243、そしてデータキャッシュ250から
構成されている。プロセッサは命令キャッシュ200か
らフェッチした命令を、命令デコーダ260で解読し、
命令ウインドウ220に登録する。ソースオペランドは
レジスタファイル210から読み出される。レジスタフ
ァイル210から獲得できない場合には、先行する命令
の終了を待って、ファンクションユニット240〜24
3の結果を取り込む。ソースオペランドの揃った命令は
ファンクションユニット240〜243に発行される。
演算結果は命令ウインドウ220を通じて、レジスタフ
ァイル210に書き込まれる。
場合の命令スケジューリングの例を示す。理解を容易に
するために以下の設定をしている。プロセッサのフェッ
チ幅とディスパッチ幅は、ともに1とする。命令のコミ
ットは省略する。また、タグ情報を含んだデスティネー
ションレジスタ番号は、アーキテクチャレジスタ番号と
同じであると仮定する。レジスタr1とレジスタr2
は、すでに利用可能になっているとする。以上の仮定に
基づいて、命令スケジューリングを説明する。まず最初
のサイクル(図11A)で、命令I1がイシューされ
る。ソースオペランドタグr1とデスティネーションレ
ジスタタグr11が、該当するフィールドに保持され
る。r1は利用可能であるのでレディビット(r)がセ
ットされる。さらに命令I1はディスパッチされ、ディ
スパッチドビット(d)もセットされる。次のサイクル
(図11B)で、命令I2がフェッチおよびディスパッ
チされる。次のサイクル(図11C)で、命令I3がイ
シューされる。命令I3のソースオペランドr11を生
成する命令I1の実行ビットがセットされていないの
で、命令I3をディスパッチ不可能である。同じサイク
ル(図11C)で、命令I2はr12に演算結果を書き
戻し、実行ビット(e)をセットする。r12は命令I
3が必要としているr11に一致しないので利用されな
い。図11Cで点線で表した矢印は、命令I3のソース
オペランドタグと命令I2のデスティネーションタグが
一致しなかったことを表している。次のサイクル(図1
1D)では命令I4がイシューされる。r13は未だ利
用できないのでディスパッチされない。次のサイクル
(図11E)で命令I1が演算を終了し、r11に演算
結果を書き戻して実行ビットをセットする。r11は命
令I3が必要としているソースオペランドなので、命令
I3はディスパッチされる。図で太線で表した矢印は、
命令I3のソースオペランドタグと命令I1のデスティ
ネーションタグが一致したことを表している。次のサイ
クル(図11F)で、命令I3が演算を終了しr13が
利用可能になっているので、命令I4はディスパッチさ
れる。最後のサイクル(図11G)で命令I4の実行が
終わり、命令シーケンスが終了する。
ガベイ(Gabbay)は演算結果を予測し、データ依存関係を
投機的に解消する方法を提案している(F.Gabbay: Spec
ulative execution based on value prediction, Techn
ical Report #1080, Department of Electrical Engine
ering, Technion, 1996)。データ依存の投機実行(spec
ulative execution)を用いるためには、投機失敗時にプ
ロセッサ状態を回復する必要がある。そのための機構と
して、以下に説明する命令再発行を可能にする命令ウイ
ンドウが考案されている。
データも保存される。投機実行された命令が演算を終了
すると、その結果の値と予測データの比較が行なわれ
る。もし両者が一致していれば投機実行は成功である。
一致しなかった場合には、プロセッサの状態を投機前の
状態に戻す必要がある。間違った予測をしたロード命令
と依存関係にある命令は再実行されなければならない。
発行機構を実装すると、以下の問題をひき起こす可能性
がある。全ての命令はコミットされるまで命令ウインド
ウ中に保持されなければならないため、実効的な容量が
低下してしまい命令スケジューリングの自由度も低下し
てしまう。プロセッサの性能を維持するにはウインドウ
の容量を増やせば良いが、その容量はプロセッサのサイ
クルタイムと密接に関連しており、容易には増やすこと
ができない。容量を増やすためには、プロセッサのサイ
クルタイムを維持するために、命令ウインドウをパイプ
ライン化し、レイテンシを増やす必要がある。このレイ
テンシ増加はプロセッサ性能低下を引き起こしてしま
う。つまり、命令発行から演算結果出力までの時間が長
くなってしまう。
機的に実行するプロセッサにおいて、動的な命令スケジ
ューリングの効率を向上させることを目的とする。従来
のプロセッサにおいては、投機に失敗した時のプロセッ
サ状態を回復する方法として、命令スケジューリング装
置を用いて、投機に失敗した命令とデータ依存の関係に
ある命令を検出し、その命令を再発行させる方法を採用
している。しかし、この方法では命令スケジューリング
の効率を低下させる可能性があった。
発行の機能を分割することで、命令のスケジューリング
の効率を低下することなく、命令再発行を実現してい
る。
ドし、演算するプロセッサの動的な命令スケジューリン
グ装置であって、命令スケジューリング機構と命令再発
行機構とを有し、それらが分割して構成されることを特
徴とする。
機構と命令再発行機構を分割することにより、命令スケ
ジューリング機構は小容量であっても、実効的な容量の
低下を回避することができる。命令スケジューリング機
構は小容量であるから、プロセッサのサイクルタイムに
悪影響を及ぼすことはない。一方、データ投機実行の効
果を得るためには、命令再発行機構を大容量とせざるを
得ない。この大容量化は、プロセッサのサイクルタイム
に悪影響を及ぼしうる。しかし、命令再発行機構はデー
タ投機実行が失敗したときだけに必要となるので、プロ
セッサ性能に大きな影響を及ぼすことはない。
施形態を説明する。命令スケジューリングのための機構
と命令再発行のための機能とに分割された命令ウインド
ウをデカップル命令ウインドウと呼ぶ。
て第1実施形態を説明する。
インドウを用いるプロセッサのブロック図である。同図
に示すように第1実施形態のプロセッサは、命令キャッ
シュ200、命令デコーダ260、レジスタファイル2
10、デカップル命令ウインドウ270、データ予測装
置230、ファンクションユニット240〜243、そ
してデータキャッシュ250から構成されている。デカ
ップル命令ウインドウ270は、命令スケジューリング
のための小さなスケジューリング用命令ウインドウ27
1と、命令再発行のための大きな命令再発行用命令ウイ
ンドウ272とから構成されている。以降では、スケジ
ューリング用命令ウインドウ271をスケジューリング
ウインドウ271、命令再発行用命令ウインドウ272
を命令バッファ272と呼び替えることがある。
のリザベーションステーションで構成される。図2にリ
ザベーションステーションの1エントリを示す。各エン
トリは、2つのソースオペランド(Source Operand)フ
ィールド100(又は110)、デスティネーション
(Destination)フィールド120から構成される。た
だし、RUU(レジスタアップディトユニット)と異な
りデスティネーションフィールド120はタグを示すレ
ジスタフィールド121のみから成る。
再発行可能なRUUで構成される。RUUを拡張して命
令再発行を可能にした命令バッファを図3に示す。各エ
ントリには予測(Predicted)ビット160と再発行(R
eissued)ビット170が付加されている。予測ビット
160は、デスティネーションフィールド120のコン
テント122に保持されている値が予測された値か否か
を示している。実行ビット150か予測ビット160の
どちらか一方がセットされていると、この命令とデータ
依存関係にある後続命令はディスパッチ可能になる。予
測されたデータ値はデスティネーションコンテントフィ
ールド122に保持される。
値と実際の値は比較され、投機実行の成功/失敗が判定
される。そして、実際の値がデスティネーションフィー
ルド120のコンテントフィールド122に保存され、
予測ビット160はリセットされる。
判定され、命令が再発行されたことを表している。
令スケジューリングと同様にデスティネーションタグと
実行結果が放送される。同時に予測の成功/失敗を表す
信号も放送される。以後この信号を再発行信号と呼ぶこ
とにする。
ングと同様に、予測に成功した命令のデスティネーショ
ンタグ121とソースオペランドタグ101(又は11
1)が一致する後続の命令がディスパッチ可能となる。
た命令のデスティネーションタグ121とソースオペラ
ンドタグ101(又は111)が一致する後続の命令は
再発行の候補となる。タグが一致した命令のディスパッ
チドビット130がすでにセットされている場合には、
その命令は誤ったソースオペランドを用いて演算を実行
しているため、再発行されなければならない。そして、
ディスパッチドビット130と実行ビット150はリセ
ットされ、再発行ビット170がセットされる。再発行
された命令の実行が終了した場合にも再発行信号が放送
される。したがって再発行信号は、データ値予測に失敗
した命令あるいは再発行された命令が実行を終了したこ
とを表している。以降は上述の説明と同様に、再発行さ
れた命令のデスティネーションタグ121とソースオペ
ランドタグ101(又は111)が一致し且つディスパ
ッチドビット130のセットされたさらなる後続命令が
再発行される。つまり、データ値予測に失敗した命令に
対しデータ依存関係にある後続命令が再発行され、この
再発行された後続命令に対しデータ依存関係にあるさら
なる後続命令が再発行される。こうして、再発行されな
ければならない命令が順に検出される。本機構は従来の
命令ウインドウと比較して再発行信号が一本増えただけ
であり、ハードウエアの増大とサイクルタイムの延長を
防いでいる。
行の例を示す。命令1だけがロードデータ値を予測でき
るとする。
1がイシューされる。ソースオペランドタグr1とデス
ティネーションレジスタタグr11が、該当するフィー
ルドに保持される。r1は利用可能であるのでレディビ
ット(r)がセットされる。さらに命令I1はディスパ
ッチされ、ディスパッチドビット(d)もセットされ
る。命令I1はr11の値を予測し、予測ビット(p)
をセットする。
ェッチおよびディスパッチされる。次のサイクル(図4
C)で、命令I3がイシューされる。命令I3のソース
オペランドr11を生成する命令I1に予測ビットがセ
ットされているので、命令I3をディスパッチ可能であ
る。同じサイクルで、命令I2はr12に演算結果を書
き戻し、実行ビット(e)をセットする。命令I2のデ
スティネーションタグr12と命令I3のソースオペラ
ンドタグr11が一致しないので、命令I2の結果は命
令I3では利用されない。
イシューされる。命令I3が演算を終了しr13が利用
可能になっているので、命令I4はディスパッチされ
る。
る。命令I1の予測が成功した場合と、失敗した場合で
ある。
E)、命令I1は予測ビットをリセットし、実行ビット
をセットする。同じサイクルで命令I4が演算を終了
し、やはり実行ビットをセットする。以上でシーケンス
は終了する。
命令の再発行が開始される。再発行シグナルが放送さ
れ、予測が失敗した命令I1のデスティネーションタグ
とソースオペランドタグの一致した命令I3は間違った
ソースオペランドを用いてすでにディスパッチされてい
るので、再発行の対象となり再発行ビット(i)がセッ
トされる。命令I3は発行されディスパッチドビットが
セットされる。
し、実行ビットをセットして、再発行ビットをリセット
する。同時に再発行シグナルが放送される。前のサイク
ルと同様にして命令I4が再発行の対象として検出され
る。
し、この命令シーケンスは7サイクルで完了する。
合に必要なサイクル数は、データ依存の投機実行を行な
わない場合に必要なサイクル数と同じである。すなわち
投機に失敗してもペナルティを生じない。
なハードウエア(予測値と実際の値を比較するユニッ
ト、再発行信号を生成するユニット)を用いて、且つサ
イクルタイムに影響を及ぼさないで実現可能である。
は、ある命令が命令キャッシュ200からフェッチさ
れ、命令デコーダ260でデコードされると、命令はス
ケジューリングウインドウ271と命令バッファ272
に発行される。命令がファンクションユニット240〜
243にディスパッチされると、命令はスケジューリン
グウインドウ271中のエントリを直ちに解放する。し
かし、命令バッファ272中のエントリは待機し続け
る。命令がコミットされると、ようやく命令バッファ2
72中のエントリが解放される。スケジューリングウイ
ンドウ271あるいは命令バッファ272が一杯になっ
た時には、命令発行が停止する。
スケジューリングを担当する。つまり、ほとんどの場合
はスケジューリングウインドウ271から命令がファン
クションユニット240〜243にディスパッチされ
る。ディスパッチされると命令はスケジューリングウイ
ンドウ271のエントリを解放するので、上述した従来
の命令ウインドウの実効的な容量低下の問題は解決され
ている。さらに、容量が小さいためにプロセッサのサイ
クルタイムに悪影響を与える心配もない。しかし、デー
タ投機実行に失敗した場合、このスケジューリングウイ
ンドウ271内部では命令を再発行できない。そのため
のバックアップとして、命令バッファ272が用意され
ている。
る。全ての命令はコミットされるまで命令バッファ27
2に待機している。データ投機実行に失敗すると、再発
行すべき命令は命令バッファ272から獲得されディス
パッチされる。大きなデータ投機実行の効果を得るため
に、命令バッファ272を非常に大きくする必要があ
る。そのような大きな命令バッファはプロセッサのサイ
クルタイムに影響するため、この悪影響を回避するため
に、命令バッファ272をパイプライン化する。命令バ
ッファ272は投機失敗時だけに必要なので、このパイ
プライン化はプロセッサ性能に甚大な影響は与えない。
バッファ272から得られる二つの同じ命令から選択す
る方法は容易である。もしある命令が投機に失敗した時
には、再発行すべき命令は命令バッファ272からしか
得られない。したがって選択する必要はない。データ依
存が存在して、いまだディスパッチされていない命令は
スケジューリングウインドウ271と命令バッファ27
2の両方から供給される。しかし、命令バッファ272
はパイプライン化されているため、スケジューリングウ
インドウ271よりも同じ命令の供給が遅れる。したが
って、ファンクションユニットにディスパッチされるの
はスケジューリングウインドウ271から供給される命
令であり、命令バッファ272から得られた同じ命令の
ディスパッチは抑制できる。
270は命令再発行機構の実装により生ずる可能性のあ
る問題を、プロセッサ性能を維持したまま解決できる。
インドウをシミュレーションにより評価する。シミュレ
ータは現実的なアウトオブオーダー実行を行なう8並列
のスーパースカラプロセッサをモデル化している。動的
スケジューリングはRUUに基づいて行なわれる。RU
Uのエントリは128である。二種類のRUUを評価す
る。一つは通常のレイテンシが1サイクルであるRUU
で、もう一つはパイプライン化されレイテンシが2サイ
クルであるRUUである。各ファンクションユニットは
あらゆる命令を1サイクルで実行できる。ただし、乗算
と除算のレイテンシはそれぞれ4サイクルと12サイク
ルである。データの供給には4ポート、ノンブロッキン
グ、容量128KB、ラインサイズ32B、2ウエイセ
ットアソシアティブのL1データキャッシュを用意す
る。L1データキャッシュのアクセスには、データアド
レス生成後1サイクルを要する。キャッシュミス時のレ
イテンシは6サイクルである。L1データキャッシュ
は、容量8MB、ラインサイズ64B、ダイレクトマッ
プのL2キャッシュがバックアップしている。L2キャ
ッシュのキャッシュミス時のレイテンシは、最初のワー
ドが得られるまでに18サイクル、それに続くワードに
はそれぞれ2サイクルである。全てのメモリ参照命令
は、先行するストア命令が完了しなければ実行できな
い。命令供給には、容量128KB、ラインサイズ32
B、2ウエイセットアソシアティブのL1命令キャッシ
ュを用意する。L1命令キャッシュはL1データキャッ
シュとL2キャッシュを共有している。
セットアソシアティブの分岐先バッファ、エントリ数4
K、ジシェア(gshare)タイプの2レベル適応型分岐予測
器、エントリ数8のリターンアドレススタックを用い
る。分岐予測器の更新は、命令がコミットされた時に行
なうこととした。
型予測器を用いる。エントリ数は4Kでダイレクトマッ
プとした。
は、エントリ数64の集中型リザベーションステーショ
ンと命令再発行機能を持つエントリ数128のRUUか
ら構成される。このRUUはパイプライン化されてお
り、レイテンシは2サイクルである。
95ベンチマークを用いた。SPEC協会が提供してい
るテストファイルを入力ファイルとして用いている。ベ
ンチマークプログラムと入力ファイルは以下の通りであ
る。
を用いて最適化オプション−03でコンパイルした。各
プログラムが終了するまで、あるいは最初の1億命令を
シミュレーションした。命令はコミットされたものだけ
を数えた。
ンドウを採用した時のプロセッサ性能向上率である。各
3本のグラフのうち、左はレイテンシが1サイクルのR
UUを用いたモデルの性能向上率、中央はレイテンシが
2のパイプライン化RUUを用いたモデルの性能向上
率、右が第1実施形態のデカップル命令ウインドウを用
いたモデルの性能向上率である。性能向上率は1サイク
ルあたりの完了命令数(committed instructions per c
ycle:IPC)で評価した。レイテンシ1のRUUでは
プロセッサのサイクルタイムが遅くなるので、それを防
ぐためにパイプライン化したものがレイテンシ2のRU
Uである。レイテンシ2のRUUを使用すると、IPC
が著しく低下している。これをプロセッサの高速化だけ
で補うには25%以上の高速化が必要である(132.
ijpegの場合)。これは実現困難である。したがっ
て、レイテンシ2のRUUを使用するプロセッサはレイ
テンシ1のRUUを使用するプロセッサよりも性能が低
下してしまう。一方、第1実施形態のデカップル命令ウ
インドウを使用すると、レイテンシ1の命令ウインドウ
の場合とほぼ同じIPCが得られている。詳しく比較す
ると性能向上率はやや小さいが、第1実施形態のデカッ
プル命令ウインドウを用いるプロセッサは、1サイクル
レイテンシRUUを用いるプロセッサよりも動作速度を
速くできる。5%以上の高速化が実現可能なので、レイ
テンシ1のRUUの場合よりも性能向上が大きくなる。
したがって、第1実施形態のデカップル命令ウインドウ
を使用したプロセッサの方が性能向上率が勝っている。
デカップル命令ウインドウを用いるプロセッサのブロッ
ク図である。命令キャッシュ200、命令デコーダ26
0、レジスタファイル210、データ予測装置230、
デカップル命令ウインドウ370、ファンクションユニ
ット240〜243、そしてデータキャッシュ250か
ら構成されている。デカップル命令ウインドウ370
は、命令スケジューリングのための小さなスケジューリ
ング用命令ウインドウ371と、命令再発行のための大
きな命令再発行用命令ウインドウ372とから構成され
ている。以降では、スケジューリング用命令ウインドウ
371をスケジューリングウインドウ371、命令再発
行用命令ウインドウ372を命令バッファ372と呼び
替えることがある。
ンドウ370の構成を詳細に示す。図7では、図6で省
略したフリーリスト300、レジスタマッピング表31
0、アクティブリスト320、そしてビジービット表3
30も表記されている。
リングウインドウ271と命令バッファ272は並列に
接続されているので、デコーダ260によってデコード
された命令は、デコーダ260からスケジューリングウ
インドウ271と命令バッファ272の両方に出力され
る。
ジューリングウインドウ371と命令バッファ372は
直列に接続されているので、デコーダ260によってデ
コードされた命令は、デコーダ260からスケジューリ
ングウインドウ371に出力されるが、デコーダ260
から命令バッファ372へは出力されない。命令バッフ
ァ372への命令の供給は、スケジューリングウインド
ウ371によって行われる。
ウインドウ270内にも、スケジューリングウインドウ
271と命令バッファ272のみならず、フリーリスト
300、レジスタマッピング表310、アクティブリス
ト320、そしてビジービット表330も設けられる。
ただし、スケジューリングウインドウ271と命令バッ
ファ272は並列に接続される。
スト300、レジスタマッピング表310、そしてアク
ティブリスト320はレジスタリネーミングを実施す
る。ある命令がデコードされると、そのデスティネーシ
ョンレジスタ番号がレジスタリネーミングされる。リネ
ーミング後のレジスタ番号はフリーリスト300から与
えられる。元のレジスタ番号(論理レジスタ番号)とリ
ネーミング後のレジスタ番号(物理レジスタ番号)との
対応はレジスタマッピング表310に登録される。この
とき、同じ論理レジスタ番号のマッピングが存在してい
る時には、古い方の物理レジスタ番号がアクティブリス
ト320に追い出される。アクティブリスト320に追
い出された物理レジスタ番号をオペランドとする命令が
コミットされると、物理レジスタ番号はアクティブリス
ト320から解放され、フリーリスト300にプールさ
れる。
データは、スケジューリングウインドウ371の該当す
るフィールドに保持されると同時に、レジスタファイル
210にも書き込まれる。同時に、スケジューリングウ
インドウ371の予測ビットがセットされる。この予測
ビットの情報はビジービット表330にも与えられてい
る。
ルの各レジスタの値が利用可能になっているかを観測し
ている。状態には次の3つがある。レディ(ready)、投
機(speculative)、ビジー(busy)である。状態がビジー
の時は、まだレジスタの値が利用できない。残りの二つ
の状態の場合には利用可能であるが、投機状態の場合に
は、レジスタ値が間違っている可能性がある。したがっ
て、投機状態のレジスタ値を用いてディスパッチされる
命令は、命令バッファ372に保持されなければならな
い。
のフィールドは以下の情報を保持している。Br mskフィ
ールドは分岐命令の情報を保持している。Unitフィール
ドはディスパッチされるべきファンクションユニットを
示している。Functionフィールドで演算の種類が保持さ
れている。rs/rt/rdフィールドはソースレジスタ及びデ
スティネーションレジスタ番号を保持している。最後に
Tagフィールドはアクティブリスト320中のエントリ
との対応づけを行なうためのタグが保持されている。
ッチされ、命令デコーダ260でデコードされると、命
令はスケジューリングウインドウ371に発行される。
命令がファンクションユニット240〜243にディス
パッチされると、命令はスケジューリングウインドウ3
71中のエントリを直ちに解放する。この時、ディスパ
ッチされた命令が投機状態にある場合には、その命令は
命令バッファ372に格納される。この命令はコミット
されるまで命令バッファ372中に溜まり、コミット時
にようやく命令バッファ372中のエントリが解放され
る。スケジューリングウインドウ371あるいは命令バ
ッファ372が一杯になった時には、命令発行が停止す
る。
スケジューリングを担当する。つまり、ほとんどの場合
はスケジューリングウインドウ371から命令がファン
クションユニット240〜243にディスパッチされ
る。ディスパッチされると命令はスケジューリングウイ
ンドウ371のエントリを解放するので、上述した命令
ウインドウの実効的な容量低下の問題は解決されてい
る。さらに、容量が小さいためにプロセッサのサイクル
タイムに悪影響を与える心配もない。しかし、データ投
機実行に失敗した場合、このスケジューリングウインド
ウ371内部では命令を再発行できない。そのためのバ
ックアップとして、命令バッファ372が用意されてい
る。
る。投機状態にある命令だけがコミットされるまで命令
バッファ372に待機している。データ投機実行に失敗
すると、再発行すべき命令は命令バッファ372から獲
得されディスパッチされる。投機状態にある命令だけを
保持しておけば良いので、命令バッファ372の容量は
スケジューリングウインドウ371の容量と同程度で良
い。したがって第1実施形態と異なり、命令バッファ3
72をパイプライン化する必要はない。
では、第1実施形態と異なり命令はスケジューリングウ
インドウ371と命令バッファ372のどちらか一方か
らのみ供給される。したがって、ファンクションユニッ
トの状況に応じて、いずれかのウインドウから命令を選
択すれば良い。このとき、命令バッファ372から再発
行される命令に高い優先度を設けることも可能である。
370は命令再発行機構の実装により生ずる可能性のあ
る問題を、プロセッサ性能を維持したまま解決できる。
パッチされると直ちに命令スケジューリング機構を解放
するため、命令スケジューリング機構の実効容量低下を
引き起こさない。その結果、プロセッサ性能の低下を抑
えることができる。
ドウを使用するプロセッサのブロック図である。
ベーションステーション)のエントリを示す図である。
ントリを示す図である。
図1の命令シーケンスを実行した場合の命令スケジュー
リングの例を示す図である。
際のプロセッサ性能向上率を示す図である。
ドウを使用するプロセッサのブロック図である。
示す図である。
る。
ーケンスを実行した場合の命令スケジューリングの例を
示す図である。
ット 250 データキャッシュ 260 命令デコーダ 270 デカップルウインドウ 271 スケジューリングウインドウ 272 命令バッファ 300 フリーリスト 310 レジスタマッピング表 320 アクティブリスト 330 ビジービット表 370 デカップルウインドウ 371 スケジューリングウインドウ 372 命令バッファ
Claims (9)
- 【請求項1】 命令をデコードし、演算するプロセッサ
の動的な命令スケジューリング装置であって、命令スケ
ジューリング機構と命令再発行機構とを有し、それらが
分割して構成されることを特徴とする命令スケジューリ
ング装置。 - 【請求項2】 前記命令スケジューリング機構は、命令
がファンクションユニットにディスパッチされると、そ
の命令のエントリを直ちに解放することを特徴とする請
求項1記載の命令スケジューリング装置。 - 【請求項3】 前記命令再発行機構は、命令がファンク
ションユニットにディスパッチされても、その命令のエ
ントリを直ちに解放せず、その命令がコミットされた時
にその命令のエントリを解放することを特徴とする請求
項2記載の命令スケジューリング装置。 - 【請求項4】 前記命令スケジューリング機構から前記
ファンクションユニットにディスパッチされた命令が、
そのディスパッチと同時に前記命令再発行機構にも保持
されることを特徴とする請求項2記載の命令スケジュー
リング装置。 - 【請求項5】 前記命令再発行機構に保持される前記命
令は、投機状態にあるものに限定されることを特徴とす
る請求項4記載の命令スケジューリング装置。 - 【請求項6】 前記命令スケジューリング機構及び前記
命令再発行機構から供給される同一命令の内、前記命令
スケジューリング機構から供給される命令を優先的に選
択し、前記ファンクションユニットにディスパッチする
ことを特徴とする請求項3乃至5のいずれか一つに記載
の命令スケジューリング装置。 - 【請求項7】 前記命令スケジューリング機構及び前記
命令再発行機構から供給される同一命令の内、前記命令
再発行機構から供給される命令を優先的に選択し、前記
ファンクションユニットにディスパッチすることを特徴
とする請求項3乃至5のいずれか一つに記載の命令スケ
ジューリング装置。 - 【請求項8】 前記命令スケジューリング機構の命令エ
ントリー数が、前記命令再発行機構のそれと比較して小
さいことを特徴とする請求項1記載の命令スケジューリ
ング装置。 - 【請求項9】 前記命令再発行機構はパイプライン動作
することを特徴とする請求項8記載の命令スケジューリ
ング装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000018291A JP2001209535A (ja) | 2000-01-27 | 2000-01-27 | プロセッサの命令スケジューリング装置 |
US09/492,274 US6643767B1 (en) | 2000-01-27 | 2000-01-27 | Instruction scheduling system of a processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000018291A JP2001209535A (ja) | 2000-01-27 | 2000-01-27 | プロセッサの命令スケジューリング装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001209535A true JP2001209535A (ja) | 2001-08-03 |
Family
ID=18545156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000018291A Pending JP2001209535A (ja) | 2000-01-27 | 2000-01-27 | プロセッサの命令スケジューリング装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6643767B1 (ja) |
JP (1) | JP2001209535A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009193378A (ja) * | 2008-02-14 | 2009-08-27 | Nec Computertechno Ltd | ベクトル処理装置 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6976150B1 (en) * | 2000-04-06 | 2005-12-13 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | Resource flow computing device |
US7069424B2 (en) * | 2002-01-02 | 2006-06-27 | Intel Corporation | Placing front instruction in replay loop to front to place side instruction into execution stream upon determination of criticality |
US7222226B1 (en) | 2002-04-30 | 2007-05-22 | Advanced Micro Devices, Inc. | System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation |
US6845442B1 (en) * | 2002-04-30 | 2005-01-18 | Advanced Micro Devices, Inc. | System and method of using speculative operand sources in order to speculatively bypass load-store operations |
US7028166B2 (en) * | 2002-04-30 | 2006-04-11 | Advanced Micro Devices, Inc. | System and method for linking speculative results of load operations to register values |
US7089400B1 (en) * | 2002-08-29 | 2006-08-08 | Advanced Micro Devices, Inc. | Data speculation based on stack-relative addressing patterns |
US7000095B2 (en) * | 2002-09-06 | 2006-02-14 | Mips Technologies, Inc. | Method and apparatus for clearing hazards using jump instructions |
US7269719B2 (en) * | 2002-10-30 | 2007-09-11 | Stmicroelectronics, Inc. | Predicated execution using operand predicates |
US7293162B2 (en) * | 2002-12-18 | 2007-11-06 | Fujitsu Limited | Split data-flow scheduling mechanism |
US7024537B2 (en) * | 2003-01-21 | 2006-04-04 | Advanced Micro Devices, Inc. | Data speculation based on addressing patterns identifying dual-purpose register |
US7302553B2 (en) * | 2003-01-23 | 2007-11-27 | International Business Machines Corporation | Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue |
US7263600B2 (en) * | 2004-05-05 | 2007-08-28 | Advanced Micro Devices, Inc. | System and method for validating a memory file that links speculative results of load operations to register values |
US20060149940A1 (en) * | 2004-12-27 | 2006-07-06 | Intel Corporation | Implementation to save and restore processor registers on a context switch |
US7747993B2 (en) * | 2004-12-30 | 2010-06-29 | Michigan Technological University | Methods and systems for ordering instructions using future values |
US7721071B2 (en) * | 2006-02-28 | 2010-05-18 | Mips Technologies, Inc. | System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor |
US9052890B2 (en) * | 2010-09-25 | 2015-06-09 | Intel Corporation | Execute at commit state update instructions, apparatus, methods, and systems |
US10802756B1 (en) | 2018-07-12 | 2020-10-13 | Seagate Technology Llc | Flash queue status polling |
US10996981B2 (en) * | 2019-03-15 | 2021-05-04 | Toshiba Memory Corporation | Processor zero overhead task scheduling |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5012403A (en) * | 1988-04-01 | 1991-04-30 | Digital Equipment Corporation | Apparatus and method for replaying decoded instructions |
US5134693A (en) * | 1989-01-18 | 1992-07-28 | Intel Corporation | System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel |
US5519841A (en) * | 1992-11-12 | 1996-05-21 | Digital Equipment Corporation | Multi instruction register mapper |
US5784603A (en) * | 1996-06-19 | 1998-07-21 | Sun Microsystems, Inc. | Fast handling of branch delay slots on mispredicted branches |
US5944818A (en) * | 1996-06-28 | 1999-08-31 | Intel Corporation | Method and apparatus for accelerated instruction restart in a microprocessor |
US5966544A (en) * | 1996-11-13 | 1999-10-12 | Intel Corporation | Data speculatable processor having reply architecture |
US6163838A (en) * | 1996-11-13 | 2000-12-19 | Intel Corporation | Computer processor with a replay system |
US6212626B1 (en) * | 1996-11-13 | 2001-04-03 | Intel Corporation | Computer processor having a checker |
US6240509B1 (en) * | 1997-12-16 | 2001-05-29 | Intel Corporation | Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation |
US6205542B1 (en) * | 1997-12-24 | 2001-03-20 | Intel Corporation | Processor pipeline including replay |
US6098166A (en) * | 1998-04-10 | 2000-08-01 | Compaq Computer Corporation | Speculative issue of instructions under a load miss shadow |
-
2000
- 2000-01-27 US US09/492,274 patent/US6643767B1/en not_active Expired - Fee Related
- 2000-01-27 JP JP2000018291A patent/JP2001209535A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009193378A (ja) * | 2008-02-14 | 2009-08-27 | Nec Computertechno Ltd | ベクトル処理装置 |
Also Published As
Publication number | Publication date |
---|---|
US6643767B1 (en) | 2003-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6189088B1 (en) | Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location | |
US8266412B2 (en) | Hierarchical store buffer having segmented partitions | |
US8275976B2 (en) | Hierarchical instruction scheduler facilitating instruction replay | |
US20040128448A1 (en) | Apparatus for memory communication during runahead execution | |
US8296550B2 (en) | Hierarchical register file with operand capture ports | |
TWI299465B (en) | Simultaneous multithread processor and method therefor | |
US8069340B2 (en) | Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions | |
US8024522B1 (en) | Memory ordering queue/versioning cache circuit | |
US8370609B1 (en) | Data cache rollbacks for failed speculative traces with memory operations | |
US8627044B2 (en) | Issuing instructions with unresolved data dependencies | |
US8266413B2 (en) | Processor architecture for multipass processing of instructions downstream of a stalled instruction | |
US7877630B1 (en) | Trace based rollback of a speculatively updated cache | |
JP2001209535A (ja) | プロセッサの命令スケジューリング装置 | |
US20020087849A1 (en) | Full multiprocessor speculation mechanism in a symmetric multiprocessor (smp) System | |
US9176741B2 (en) | Method and apparatus for segmented sequential storage | |
US20220188233A1 (en) | Managing cached data used by processing-in-memory instructions | |
WO2007027671A2 (en) | Scheduling mechanism of a hierarchical processor including multiple parallel clusters | |
US8051247B1 (en) | Trace based deallocation of entries in a versioning cache circuit | |
US5751986A (en) | Computer system with self-consistent ordering mechanism | |
US11868777B2 (en) | Processor-guided execution of offloaded instructions using fixed function operations | |
Hilton et al. | BOLT: Energy-efficient out-of-order latency-tolerant execution | |
US8019944B1 (en) | Checking for a memory ordering violation after a speculative cache write | |
US7779307B1 (en) | Memory ordering queue tightly coupled with a versioning cache circuit | |
US6324640B1 (en) | System and method for dispatching groups of instructions using pipelined register renaming | |
KR20060021281A (ko) | 리플레이 메커니즘을 구비한 로드 저장 유닛 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050308 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060221 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060228 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060501 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060606 |