JP3518510B2 - リオーダバッファの管理方法及びプロセッサ - Google Patents
リオーダバッファの管理方法及びプロセッサInfo
- Publication number
- JP3518510B2 JP3518510B2 JP2001002141A JP2001002141A JP3518510B2 JP 3518510 B2 JP3518510 B2 JP 3518510B2 JP 2001002141 A JP2001002141 A JP 2001002141A JP 2001002141 A JP2001002141 A JP 2001002141A JP 3518510 B2 JP3518510 B2 JP 3518510B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- reorder buffer
- unit
- load
- 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.)
- Expired - Lifetime
Links
- 238000007726 management method Methods 0.000 title claims description 38
- 238000000034 method Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 8
- 238000012790 confirmation Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 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/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
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)
Description
等を使用してout−of−order実行を行うプロ
セッサに関し、特にリオーダバッファを効率良く使用す
ることができるリオーダバッファの管理方法に関する。
て、命令を並列実行する方式をout−of−orde
r実行と言い、in−order実行に比べて実効的な
並列度を高くすることができる。このため、高性能なプ
ロセッサには今や必須の技術となっている。
では、逆依存、出力依存といったデータ依存関係を検出
し、それらを解決してout−of−order実行を
行う。逆依存は後続命令のデスティネーションレジスタ
が先行命令のソースレジスタに一致する場合に起こり、
出力依存は後続命令と先行命令とでデスティネーション
レジスタが一致する場合に起こる。これらは、後続命令
の実行結果を一時レジスタに保持しておき、本来のレジ
スタへはプログラム順に従って書き込むことにより解決
される。また、後続命令の実行結果を利用する命令は、
本来のレジスタに格納される以前でも、一時レジスタか
らデータを読み出して実行を開始できる。これをレジス
タリネーミングと呼び、それに使う一時レジスタをリネ
ーミングレジスタ(Renaming Registe
r)と言う。
セッサにおいて、飛び越された命令など、実行開始(発
行)待ちの命令を保持しておくバッファをリザベーショ
ンステーションと呼び、実行結果の書き戻しをプログラ
ムの順番にするためのバッファをリオーダバッファと呼
ぶ。このバッファのサイズが大きいほど、out−of
−order実行できる命令列の範囲を広くできる。ま
た、制御依存に対しては、分岐先を予測して投機的に命
令実行を行うことにより、並列実行を可能にしている。
投機実行のキャンセル及び例外発生時の処理は、一般に
リオーダバッファの機能として実現されている。
−of−order実行できる命令列の範囲を広げる為
には、サイズの大きなリオーダバッファが必要になる
が、サイズの上限にはテクノロジによる限界があるた
め、限られたサイズのリオーダバッファを如何に効率良
く使用するかが大切である。しかし、従来は、分岐予測
失敗によりリオーダバッファ内の投機命令列をキャンセ
ルしても、そのキャンセルした投機命令列で使用されて
いたエントリのうち、未完了のロード命令で使用してい
たエントリは後続命令で直ちに使用することができない
という課題があった。
す図1を借用して以下説明する。リオーダバッファ6に
は未完了命令を保持するエントリ61が多数設けられて
おり、各エントリ61には物理的な番号が付与され、一
意に識別できるようになっている。このエントリ61に
付与された番号をWRB番号と言う。各エントリ61に
は、命令フェッチ/デコードユニット1でデコードされ
た命令のオペコードやレジスタ情報などを含む命令情報
63が登録されるが、各エントリ61に登録された命令
の実行が終了したか否かを示すビット65も登録され
る。このビットをDONEビットと呼ぶ。DONEビッ
ト65は、当該命令が終了した時点で点灯される。
ト5内の図示しないデータキャッシュでキャッシュミス
すると、ロードユニット5から図示しない主記憶にロー
ドリクエストを送出し、そのリプライが返ってきた時点
で、当該ロード命令が格納されているリオーダバッファ
6のエントリ61のWRB番号をリオーダバッファ6に
送出し、当該ロード命令のエントリ61のDONEビッ
ト65を点灯させる。一般にロード命令のレイテンシは
大きいため、DONEビット65が点灯するまでには比
較的長い時間がかかる。この動作は、当該ロード命令が
非投機実行か、投機実行かにかかわらず、また当該ロー
ド命令が主記憶にロードリクエストを送出した後にキャ
ンセルされたか否かにかかわらず、一律に実施してい
る。
したことが判明し、リオーダバッファ6で当該分岐命令
の後続命令列をすべてキャンセルしても、キャンセルし
た後続命令列に未完了のロード命令が存在していた場
合、ロードユニット5から後刻に当該ロード命令のWR
B番号が通知されてくる。従って、若しキャンセルした
エントリ61を別の新たな命令で再利用していると、こ
の新たな別の命令のDONEビットを誤って点灯させて
しまう事態を招く。そのため、従来は、キャンセルした
後続命令列のうち未完了のロード命令が使用していたエ
ントリについては、そのエントリのWRB番号が通知さ
れてくるまで再利用しないようにしており、それがリオ
ーダバッファ6の使用効率を低下させる原因となってい
た。
たものであり、その目的は、リオーダバッファの使用効
率を向上させることにある。
成するために、分岐予測によりプログラムの流れを予測
し、プログラム中の命令列から次に実行可能な命令を探
し出し、予測と命令の依存関係に基づいて命令を投機的
に実行するout−of−order実行プロセッサで
あって、実行結果の書き戻しをプログラムの順番にする
ためのリオーダバッファを有し、前記リオーダバッファ
のエントリ番号であるWRB番号を用いて演算ユニッ
ト、分岐ユニット及びロードユニット等の各機能ユニッ
トから命令の終了を前記リオーダバッファに通知するよ
うにしたプロセッサにおいて、前記ロードユニットに、
自ユニットに対して発行されたロード命令の最新の投機
状態を前記分岐ユニットから出力される分岐予測成功/
失敗信号に基づいて管理し、分岐予測が失敗した分岐命
令の後続のロード命令についてはその処理が終了しても
当該ロード命令のWRB番号による前記リオーダバッフ
ァへの通知を抑止する管理手段を設け、前記リオーダバ
ッファは、分岐予測が失敗した分岐命令の後続命令を格
納してあるエントリを該エントリのWRB番号による終
了通知を待たずに新たな命令の格納に再利用することを
特徴とする。
各命令毎に区別するための制御信号であって、当該命令
が非投機実行にかかる命令の場合には0、投機実行にか
かる命令の場合には非投機実行の命令から当該命令まで
の間に介在する分岐命令の数によって決まる1以上の値
とされる分岐レベルを命令フェッチ/デコードユニット
で生成して、前記リオーダバッファ及び前記ロードユニ
ットの前記管理手段で保持し、前記リオーダバッファ及
び前記管理手段において、前記分岐ユニットから分岐予
測成功信号が出力される毎に分岐レベルを−1すること
により、命令の最新の投機状態を管理するようにしてい
る。
て発行されたロード命令をその分岐レベル及びWRB番
号とともに保持するエントリを複数有し、前記分岐ユニ
ットから分岐予測失敗信号が出力されたとき、分岐レベ
ルが1以上のエントリをキャンセル状態とし、該キャン
セル状態としたエントリに保持されたロード命令につい
てはその処理が終了しても当該ロード命令のWRB番号
による前記リオーダバッファへの通知を抑止するように
している。
自ユニットに対して発行されたロード命令の最新の投機
状態を分岐ユニットから出力される分岐予測成功/失敗
信号に基づいて管理し、分岐予測が失敗した分岐命令の
後続のロード命令についてはその処理が終了しても当該
ロード命令のWRB番号によるリオーダバッファへの通
知を抑止したことにより、キャンセルした後続命令列に
未完了のロード命令が存在していても、ロードユニット
から後刻に当該ロード命令のWRB番号が通知されてく
ることはなくなる。このため、リオーダバッファのキャ
ンセルしたエントリを別の新たな命令で再利用しても、
この新たな別の命令のDONEビットが誤って点灯され
ることがなく、分岐予測が失敗した分岐命令の後続命令
を格納してあるリオーダバッファのエントリを該エント
リのWRB番号による終了通知を待たずに新たな命令の
格納に速やかに再利用することができる。
いて図面を参照して詳細に説明する。
構成を示すブロック図である。この例のプロセッサは、
分岐予測によりプログラムの流れを予測し、プログラム
中の命令列から次に実行可能な命令を探し出し、予測と
命令の依存関係に基づいて命令を投機的に実行するou
t−of−order実行プロセッサであり、命令フェ
ッチ/デコードユニット1と、幾つかの機能ユニット、
即ち分岐ユニット2、演算ユニット3、ストアユニット
4及びロードユニット5と、確定ユニット7と、各機能
ユニットの前段に設けられたリザベーションステーショ
ン8とを主要部として備えている。また、確定ユニット
7は、複数のエントリ61を有するリオーダバッファ6
を有する。さらに、ロードユニット5は、発行されたロ
ード命令を保持管理する複数のエントリ52を有する管
理部51を備えている。
ユニット5とを別ユニットとしているが同一のユニット
(ロード/ストアユニット)で構成しても良い。また、
各機能ユニットに共通な1つのリザベーションステーシ
ョン8を設けてあるが、各機能ユニット毎に異なるリザ
ベーションステーションを設けても良いし、幾つかの機
能ユニットのグループ毎に共通な1つのリザベーション
ステーションを設けても良い。
令キャッシュから命令をフェッチしてデコードするユニ
ットであり、命令の依存関係を解消するためのレジスタ
リネーミング処理や分岐予測により予測された分岐方向
への投機的実行を制御する。命令の依存関係の調査のた
めにリオーダバッファ6に既に格納されている先行命令
を参照する。また、リオーダバッファ6の次に使用する
空きのエントリ61を指すポインタも管理しており、そ
の空きのエントリ61に、命令のオペコードやレジスタ
情報等の命令情報63及びその命令の分岐レベル64等
を登録する。分岐レベル64は、非投機実行/投機実行
を各命令毎に区別するための制御信号であって、当該命
令が非投機実行にかかる命令の場合には0、投機実行に
かかる命令の場合には非投機実行の命令から当該命令ま
での間に介在する分岐命令の数によって決まる1以上の
値とされる。リオーダバッファ6のエントリ61には、
当該エントリが使用中か否かを示すVビット62、当該
エントリの命令の実行が終了したか否かを示すDONE
ビット65も設けられており、命令の登録時は、Vビッ
ト62を“1”に点灯させて使用中、DONEビット6
5を“0”に消灯して未終了とする。
は、各命令のデコード結果をその命令の分岐レベル及び
その命令を登録したリオーダバッファ6のエントリ61
のWRB番号と一緒にリザベーションステーション8に
登録する。リザベーションステーション8は、登録され
た命令のオペランドと対応する機能ユニットが全て利用
可能になると、分岐ユニット2、演算ユニット3、スト
アユニット4及びロードユニット5のうちの該当する機
能ユニットに命令を発行する。この際、発行する命令に
は分岐レベル及びWRB番号が付随する。
実行し、当該分岐命令に付随するWRB番号を指定した
分岐予測成功/失敗信号を命令フェッチ/デコードユニ
ット1、リザベーションステーション8、リオーダバッ
ファ7及びロードユニット5に出力する。命令フェッチ
/デコードユニット1では、この分岐予測成功/失敗信
号に基づいて分岐履歴を更新する。リザベーションステ
ーション8では、分岐予測成功時は保持している各命令
の分岐レベルを−1し、分岐予測失敗時は分岐レベル1
以上の命令を全てキャンセルする。リオーダバッファ6
では、分岐予測成功時はエントリ61に保持している各
命令の分岐レベル64を−1し、分岐予測失敗時は分岐
レベル1以上の命令を全てキャンセルし、キャンセルし
た命令を保持していたエントリ61のVビット62を
“0”にして再利用を可能にする。分岐予測成功/失敗
信号を受信したロードユニット5の処理については後述
する。
実行し、その終了時に当該演算命令に付随するWRB番
号を指定してリオーダバッファ6に終了通知を送る。リ
オーダバッファ6は、指定されたWRB番号のエントリ
61のDONEビット65を命令終了を示す“1”に点
灯する。
令に従って主記憶に対してストアリクエストを送出し、
その終了時に当該ストア命令に付随するWRB番号を指
定してリオーダバッファ6に終了通知を送る。リオーダ
バッファ6は、指定されたWRB番号のエントリ61の
DONEビット65を命令終了を示す“1”に点灯す
る。
て発行されたロード命令53をそれに付随する分岐レベ
ル54及びWRB番号55とともに保持するエントリ5
2を複数有する管理部51を備えている。管理部51
は、分岐ユニット2から分岐予測成功/失敗信号を受け
ると、分岐予測成功時にはエントリ52に保持されたロ
ード命令の分岐レベル54を−1することで、各ロード
命令の最新の投機状態を管理する。また、分岐予測失敗
時には、分岐レベル54が1以上のエントリ52をキャ
ンセル状態とする。管理部51の各エントリ52に登録
されたロード命令はその発行順に処理され、図示しない
データキャッシュからのキャッシュデータの送出、ミス
ヒットした場合の主記憶へのロードリクエストの送出と
そのリプライデータのデータキャッシュへの書き込み等
の処理を実行する。そして、ロード命令の実行終了時、
当該ロード命令を格納するエントリ52がキャンセル状
態でなければ、そのエントリ52に格納されたWRB番
号55を指定してリオーダバッファ6に終了通知を送
る。リオーダバッファ6は、指定されたWRB番号のエ
ントリ61のDONEビット65を命令終了を示す
“1”に点灯する。他方、実行終了したロード命令を格
納するエントリ52がキャンセル状態であれば、WRB
番号55によるリオーダバッファ6への終了通知を抑止
する。
オーダバッファ6のエントリ61に記録し、各機能ユニ
ット2〜5からWRB番号を指定した終了通知を受ける
ことにより該当するエントリ61のDONEビット65
を“1”に点灯させることで各命令の実行終了の有無を
管理する。確定ユニット7は、該当する機能ユニットで
の命令操作が完了してDONEビット65が点灯してお
り、その命令と関係する分岐が確定しており、且つ、先
に発行された命令が全て確定している命令について、そ
の命令の実行結果をソフトウェアビジブルなレジスタに
書き込む等の措置を実施する。また、分岐予測が外れた
場合には、当該分岐の後続命令の結果をすべて無効と
し、現時点における投機状態の命令の全てをリオーダバ
ッファ6からキャンセルする。現時点における投機命令
がどの命令であるかを管理するために、確定ユニット7
は、分岐ユニット2から分岐予測成功が通知されたとき
にエントリ61に保持している各命令の分岐レベル64
を−1することで、各命令の最新の投機状態を管理して
いる。従って、分岐ユニット2から分岐予測失敗信号を
受けたとき、分岐レベル1以上の命令が現時点における
投機命令となり、それらの投機命令をキャンセルすると
共に、それらを保持していたエントリ61のVビット6
2を“0”にして再利用を可能にする。
詳細に説明する。
例のブロック図である。この例のプロセッサは、命令キ
ャッシュ100、デコード部101、ロード/ストア制
御部102、分岐制御部103、リオーダバッファ(R
OB)104、リザベーションステーション(RS)1
05−1、105−2、キャッシュ制御部106、デー
タキャッシュ107、バイパス制御部108、演算器1
09、リクエスト/リプライ制御部110、リネーミン
グレジスタ(RR)111、スカラレジスタ(SR)1
12、命令アドレスカウンタ113、分岐予測部114
及び管理部115を主要部として備え、命令パイプライ
ンによる命令の並列実行、特にout−of−orde
r実行を行う。
ウンタ113、命令キャッシュ100、デコード部10
1及び分岐予測部114が図1の命令フェッチ/デコー
ドユニット1に相当し、リザベーションステーション1
05−1、105−2が図1のリザベーションステーシ
ョン8に相当し、ロード/ストア制御部102、キャッ
シュ制御部106、データキャッシュ107、リクエス
ト/リプライ制御部110及び管理部115が図1のス
トアユニット4及びロードユニット5に相当し、分岐制
御部103が図1の分岐ユニット2に相当し、リオーダ
バッファ104が図1のリオーダバッファ6を持つ確定
ユニット7に相当し、バイパス制御部108及び演算器
109が図1の演算ユニット3に相当する。また、図1
には示されていないリネーミングレジスタ111及びス
トアレジスタ112が図2には図示されている。
バッファ104のエントリと1対1に対応するレジスタ
を含んでおり、リオーダバッファ104のWRB番号i
のエントリに格納された演算命令やロード命令等の結果
は、リネーミングレジスタ111中のWRB番号iに対
応するレジスタに格納されるようになっている。その
後、リオーダバッファ104のWRB番号iのエントリ
に格納された命令が確定した場合、同エントリに格納さ
れているスカラレジスタ番号がパス133に出力され、
リネーミングレジスタ111中のWRB番号iに対応す
るレジスタがパス134を通じてスカラレジスタ112
中の前記スカラレジスタ番号で指定されたレジスタに書
き込まれる。
する。
命令アドレスは、パス137を通じて命令キャッシュ1
00及び分岐予測部114に与えられる。分岐予測部1
14は、命令アドレスカウンタ113で指定される命令
アドレスを受け、当該命令アドレスが示す分岐命令の分
岐履歴が登録されているかどうかを判断し、登録されて
いる場合には、登録されている過去の分岐履歴に基づい
て分岐の成立/不成立を予測し、分岐成立と予測した場
合には分岐先アドレスをパス138を通じて命令アドレ
スカウンタ113に送って命令アドレスカウンタ113
を更新する。分岐不成立の場合及び分岐命令以外の場
合、命令アドレスカウンタ113のカウンタ値が1命令
分ずつ加算される。
命令キャッシュ100からフェッチされた命令のデコー
ドを行い、リオーダバッファ104に蓄積された先行命
令を考慮してリネーミングレジスタ111の割り当てを
工夫してレジスタ番号に起因するハザードを減らす等の
処理を行い、デコードした命令の情報等をプログラムの
命令順にリオーダバッファ104に登録すると共に、演
算命令の場合には演算系のリザベーションステーション
105−1に登録し、ロード/ストア系及び分岐命令の
場合にはリザベーションステーション105−2に登録
する。
の構成例を示す。各エントリ1041には、そのエント
リを一意に識別するWRB番号1042が物理的に付与
されている。各エントリ1041には、当該エントリが
使用中か未使用かを示すVビット1043、命令のオペ
コード1044、当該命令の結果を格納するスカラレジ
スタの番号(SR番号)1045、制御情報1046、
分岐レベル1047及び当該命令が終了したか否かを示
すDONEビット1048が格納される。リザベーショ
ンステーション150−1、150−2のエントリの内
容もほぼリオーダバッファ104のエントリと同様にな
っている。
において図4(A)に示すような方法で生成される。デ
コード部101には、分岐レベルカウンタ1011があ
り、その初期値は0になっている。この状態で順次に命
令のデコードを行い、各命令に分岐レベルカウンタ10
11の現在のカウント値0を分岐レベル0として付与す
る。分岐命令を1つデコードすると、分岐レベルカウン
タ1011を+1し、その分岐命令の後続命令には分岐
レベル1を付与する。更に別の分岐命令を1つデコード
すると、分岐レベルカウンタ1011を再び+1する。
他方、デコードした分岐命令が分岐制御部103におい
て実行され、その分岐命令にかかる分岐予測成功/失敗
信号がパス123に出力されると、デコード部101は
分岐予測成功であった場合には分岐レベルカウンタ10
11を−1し、分岐予測失敗であった場合には0にクリ
アする。
1から分岐命令3までの複数の命令が命令キャッシュ1
00からフェッチされた場合、デコード部101は各命
令に対して同図に示すような分岐レベルを付与して、パ
ス121を通じてリオーダバッファ104へ登録する。
また、これらの命令のうち、演算命令はリザベーション
ステーション105−1にも登録され、ロード命令、ス
トア命令及び分岐命令はリザベーションステーション1
50−2にも登録される。リオーダバッファ104及び
リザベーションステーション150−1、150−2で
は、分岐制御部103からパス123に分岐予測成功/
失敗信号が出力されると、分岐予測成功時には分岐レベ
ル1以上の分岐レベルを持つエントリの分岐レベルを全
て−1し、分岐予測失敗時は分岐レベル1以上の分岐レ
ベルを持つエントリの命令を全てキャンセルする。
ドに関する情報であり、先行する命令と依存関係のある
命令の場合、制御情報1046中に先行命令が格納され
たリオーダバッファ104のエントリのWRB番号が入
る。例えば、リオーダバッファ104のWRB番号=1
0のエントリに格納された命令の実行結果をソースとす
る後続命令の場合、制御情報1046にはWRB番号=
10が入る。制御情報1046中に記述されたWRB番
号のエントリに格納された命令の実行結果が全て利用可
能になると、当該エントリの命令のオペランドの準備が
整ったことになり、該当する機能ユニットの資源に空き
があれば、リザベーションステーション150−1、1
50−2から命令が発行される。
にわけて構成と動作を説明する。
命令をリザベーションステーション105−2からパス
140を通じて受けると、それをパス122を通じてキ
ャッシュ制御部106及びデータキャッシュ107に伝
達し、また管理部115に送り込む。
びストア命令をその命令の処理が済むまで保持するエン
トリを複数備えており、ロード/ストア制御部102か
らパス122を通じて送られてきたロード命令及びスト
ア命令を空きのエントリに登録して管理する。図5に管
理部115に設けられるエントリ1151の構成例を示
す。タグ1152は、当該エントリに登録されたロード
命令またはストア命令を主記憶に送出する際に付ける識
別子であり、事前に設定されている。主記憶からのリプ
ライ時には同じタグが返されるので、どの命令のリプラ
イであるかを区別するために使用される。Vビット11
53は、当該エントリが使用中か未使用かを示すビット
で、使用した際に“1”に点灯し、未使用にする際に
“0”に消灯する。オペコード1154、分岐レベル1
155及びWRB番号1156は、発行されたロード命
令またはストア命令のオペコード、それに付随する分岐
レベル及びWRB番号である。リクエスト要求ビット1
157は、当該ロード命令及びストア命令の要求を主記
憶に出したか否かを管理するビットであり、主記憶への
リクエスト送出時点で“1”に点灯する。キャンセルビ
ット1158は、当該ロード命令またはストア命令がキ
ャンセルされた場合に“1”に点灯するビットである。
7は、ヒット/ミスの判定を行い、ヒットしたときはキ
ャッシュデータをパス127を通じてバイパス制御部1
08へ送出し、その旨をパス142を通じて当該ロード
命令に付随するWRB番号を指定して管理部115に通
知する。管理部115は、同じWRB番号を持つエント
リ1151のキャンセルビット1158が“0”であれ
ば、そのWRB番号を指定した終了通知をパス128を
通じてリオーダバッファ104及びリザベーションステ
ーション105−1、105−2に送出する。キャンセ
ルビット1158が“1”であれば、このような終了通
知の送出は行わない。
スしたときはパス139を通じてミス信号をキャッシュ
制御部106に出す。キャッシュ制御部106は、パス
125を通じてリクエスト/リプライ制御部110にW
RB番号を指定してキャッシュミスリクエストを送出す
る。リクエスト/リプライ制御部110は、管理部11
5中の指定されたWRB番号を持つエントリ1151の
キャンセルビット1158が“1”でなければ、パス1
35を通じて図示しない主記憶にタグ1152を付随さ
せてロードリクエストを送出する。そして、主記憶から
パス136を通じてタグの付随するリプライデータが返
ってきたら、パス144を通じて管理部115中の同じ
タグの付いたエントリ1151のキャンセルビット11
58を参照し、“1”でなければパス126を通じてデ
ータキャッシュ107に書き込むとともにパス127を
通じてバイパス制御部108及びリネーミングレジスタ
111にデータを送出する。キャンセルビット1158
が“0”の場合にはこのような動作は行わない。また、
何れの場合も、管理部115に対してタグを指定してロ
ード命令の終了を通知する。管理部115は、同じタグ
の付いたエントリ1151のキャンセルビット1158
が“0”であれば、そのエントリのWRB番号1156
を指定した終了通知をパス128を通じてリオーダバッ
ファ104及びリザベーションステーション105−
1、105−2に送出する。しかし、キャンセルビット
1158が“1”であれば、このような終了通知の送出
は行わない。
6はデータキャッシュ107のヒット/ミスにかかわら
ず、リクエスト/リプライ制御部110にパス125を
通じてWRB番号を指定してストアリクエストを送出す
る。リクエスト/リプライ制御部110は、指定された
WRB番号を持つエントリ1151をパス144を通じ
て管理部115から参照し、そのタグ1152を付けて
パス135を通じて主記憶へストアを要求する。そし
て、主記憶からのリプライ時、タブを指定してストア命
令の完了を管理部115に通知する。管理部115は、
同じタグの付いたエントリ1151のキャンセルビット
1158が“0”であれば、そのエントリのWRB番号
1156を指定した終了通知をパス128を通じてリオ
ーダバッファ104及びリザベーションステーション1
05−1、105−2に送出する。しかし、キャンセル
ビット1158が“1”であれば、このような終了通知
の送出は行わない。
ションステーション105−1から演算命令が発行され
ると、パス129を通じてリネーミングレジスタ111
から送られるデータ、パス130を通じてスカラレジス
タ112から送られるデータ、パス127を通じてデー
タキャッシュ107から送られるデータを用いて、リザ
ベーションステーション105−1から発行された演算
命令をパス131を通じて演算器109に送り、演算さ
せる。演算器109によって得られた演算結果は、パス
132を通じてリネーミングレジスタ111中の当該演
算命令に付随するWRB番号に対応するレジスタ登録さ
れる。
5−1は、演算命令の発行後、何サイクルで命令が終了
するかを自ら管理しており、命令が終了する毎にパス1
45を通じてWRB番号を指定してリオーダバッファ1
04及びリザベーションステーション105−2に終了
通知を送る。
ンステーション105−2から分岐命令を受けると、当
該分岐命令の分岐判定を行い、WRB番号を付随させた
分岐予測成功/失敗信号をパス123を通じて分岐予測
部114、デコード部101、リオーダバッファ10
4、リザベーションステーション105−1、105−
2及び管理部115へ送出する。分岐予測部114は、
この分岐予測成功/失敗信号に基づいて分岐履歴を更新
する。リオーダバッファ104、リザベーションステー
ション105−1、105−2は、分岐予測成功の場
合、自身のエントリに保持する各命令の分岐レベルを−
1し、分岐予測失敗の場合、分岐レベルが1以上の命令
をすべてキャンセルする。管理部115は、分岐予測成
功の場合、自身のエントリ1151に保持する命令の分
岐レベル1155を−1し、分岐予測失敗の場合、分岐
レベルが1以上の命令を保持するエントリ1151のキ
ャンセルビット1158を“0”にして当該エントリを
キャンセル状態とする。
命令1までが実行終了している時点のリオーダバッファ
104の概要を示す。この後、分岐命令1が実行され
て、分岐制御部103で分岐判定されている間に後続命
令の演算命令2、演算命令3、ロード命令3、ロード命
令4、演算命令4等が投機的に実行される。そして、分
岐命令1の分岐予測失敗が確定すると、分岐レベルが1
以上の命令の全てがキャンセルされ、それらで使われて
いたエントリの全てが分岐命令1で決定された分岐方向
の後続命令によって再利用される。因みに、従来におい
ては、ロード命令3、ロード命令4等のエントリは、そ
のエントリのWRB番号を指定した終了通知が来るまで
使用できない。
岐予測が失敗した分岐命令の後続命令を格納してあるリ
オーダバッファのエントリを該エントリのWRB番号に
よる終了通知を待たずに新たな命令の格納に再利用する
ことができるため、リオーダバッファのエントリの有効
利用が可能となり、ひいてはout−of−order
実行できる命令列の範囲を拡大することが可能となる。
ブロック図である。
ク図である。
である。
明図である。
例を示す図である。
である。
Claims (6)
- 【請求項1】 分岐予測によりプログラムの流れを予測
し、プログラム中の命令列から次に実行可能な命令を探
し出し、予測と命令の依存関係に基づいて命令を投機的
に実行するout−of−order実行プロセッサで
あって、実行結果の書き戻しをプログラムの順番にする
ためのリオーダバッファを有し、前記リオーダバッファ
のエントリ番号であるWRB番号を用いて演算ユニッ
ト、分岐ユニット及びロードユニット等の各機能ユニッ
トから命令の終了を前記リオーダバッファに通知するよ
うにしたプロセッサにおけるリオーダバッファの管理方
式において、 前記ロードユニットに、自ユニットに対して発行された
ロード命令の最新の投機状態を前記分岐ユニットから出
力される分岐予測成功/失敗信号に基づいて管理し、分
岐予測が失敗した分岐命令の後続のロード命令について
はその処理が終了しても当該ロード命令のWRB番号に
よる前記リオーダバッファへの通知を抑止する管理手段
を設け、 前記リオーダバッファは、分岐予測が失敗した分岐命令
の後続命令を格納してあるエントリを該エントリのWR
B番号による終了通知を待たずに新たな命令の格納に再
利用することを特徴とするリオーダバッファの管理方
法。 - 【請求項2】 非投機実行/投機実行を各命令毎に区別
するための制御信号であって、当該命令が非投機実行に
かかる命令の場合には0、投機実行にかかる命令の場合
には非投機実行の命令から当該命令までの間に介在する
分岐命令の数によって決まる1以上の値とされる分岐レ
ベルを命令フェッチ/デコードユニットで生成して、前
記リオーダバッファ及び前記ロードユニットの前記管理
手段で保持し、前記リオーダバッファ及び前記管理手段
において、前記分岐ユニットから分岐予測成功信号が出
力される毎に分岐レベルを−1することにより、命令の
最新の投機状態を管理するようにした請求項1記載のリ
オーダバッファの管理方法。 - 【請求項3】 前記管理手段は、自ユニットに対して発
行されたロード命令をその分岐レベル及びWRB番号と
ともに保持するエントリを複数有し、前記分岐ユニット
から分岐予測失敗信号が出力されたとき、分岐レベルが
1以上のエントリをキャンセル状態とし、該キャンセル
状態としたエントリに保持されたロード命令については
その処理が終了しても当該ロード命令のWRB番号によ
る前記リオーダバッファへの通知を抑止する請求項2記
載のリオーダバッファの管理方法。 - 【請求項4】 分岐予測によりプログラムの流れを予測
し、プログラム中の命令列から次に実行可能な命令を探
し出し、予測と命令の依存関係に基づいて命令を投機的
に実行するout−of−order実行プロセッサで
あって、実行結果の書き戻しをプログラムの順番にする
ためのリオーダバッファを有し、前記リオーダバッファ
のエントリ番号であるWRB番号を用いて演算ユニッ
ト、分岐ユニット及びロードユニット等の各機能ユニッ
トから命令の終了を前記リオーダバッファに通知するよ
うにしたプロセッサにおいて、 前記ロードユニットに、自ユニットに対して発行された
ロード命令の最新の投機状態を前記分岐ユニットから出
力される分岐予測成功/失敗信号に基づいて管理し、分
岐予測が失敗した分岐命令の後続のロード命令について
はその処理が終了しても当該ロード命令のWRB番号に
よる前記リオーダバッファへの通知を抑止する管理手段
を設け、 前記リオーダバッファは、分岐予測が失敗した分岐命令
の後続命令を格納してあるエントリを該エントリのWR
B番号による終了通知を待たずに新たな命令の格納に再
利用することを特徴とするプロセッサ。 - 【請求項5】 非投機実行/投機実行を各命令毎に区別
するための制御信号であって、当該命令が非投機実行に
かかる命令の場合には0、投機実行にかかる命令の場合
には非投機実行の命令から当該命令までの間に介在する
分岐命令の数によって決まる1以上の値とされる分岐レ
ベルを命令フェッチ/デコードユニットで生成して、前
記リオーダバッファ及び前記ロードユニットの前記管理
手段で保持し、前記リオーダバッファ及び前記管理手段
において、前記分岐ユニットから分岐予測成功信号が出
力される毎に分岐レベルを−1することにより、命令の
最新の投機状態を管理するように構成した請求項4記載
のプロセッサ。 - 【請求項6】 前記管理手段は、自ユニットに対して発
行されたロード命令をその分岐レベル及びWRB番号と
ともに保持するエントリを複数有し、前記分岐ユニット
から分岐予測失敗信号が出力されたとき、分岐レベルが
1以上のエントリをキャンセル状態とし、該キャンセル
状態としたエントリに保持されたロード命令については
その処理が終了しても当該ロード命令のWRB番号によ
る前記リオーダバッファへの通知を抑止する構成を有す
る請求項5記載のプロセッサ。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001002141A JP3518510B2 (ja) | 2001-01-10 | 2001-01-10 | リオーダバッファの管理方法及びプロセッサ |
EP02000139A EP1223507A1 (en) | 2001-01-10 | 2002-01-04 | Re-order buffer managing method and processor |
CA002367324A CA2367324C (en) | 2001-01-10 | 2002-01-08 | Re-order buffer managing method and processor |
US10/040,392 US6938150B2 (en) | 2001-01-10 | 2002-01-09 | Processor for managing latest speculation states and efficiently reusing reorder buffer entries |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001002141A JP3518510B2 (ja) | 2001-01-10 | 2001-01-10 | リオーダバッファの管理方法及びプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002207595A JP2002207595A (ja) | 2002-07-26 |
JP3518510B2 true JP3518510B2 (ja) | 2004-04-12 |
Family
ID=18870690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001002141A Expired - Lifetime JP3518510B2 (ja) | 2001-01-10 | 2001-01-10 | リオーダバッファの管理方法及びプロセッサ |
Country Status (4)
Country | Link |
---|---|
US (1) | US6938150B2 (ja) |
EP (1) | EP1223507A1 (ja) |
JP (1) | JP3518510B2 (ja) |
CA (1) | CA2367324C (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7633861B2 (en) * | 2003-04-25 | 2009-12-15 | Alcatel-Lucent Usa Inc. | Fabric access integrated circuit configured to bound cell reorder depth |
JP4952580B2 (ja) | 2005-04-21 | 2012-06-13 | 富士通株式会社 | プロセッサ装置 |
JP4814653B2 (ja) * | 2006-02-27 | 2011-11-16 | 富士通株式会社 | リオーダリング装置 |
US9026769B1 (en) * | 2011-01-31 | 2015-05-05 | Marvell International Ltd. | Detecting and reissuing of loop instructions in reorder structure |
JP5949327B2 (ja) * | 2012-08-24 | 2016-07-06 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
JP2015118638A (ja) * | 2013-12-19 | 2015-06-25 | キヤノン株式会社 | 情報処理装置及びその制御方法、プログラム |
US10241789B2 (en) * | 2016-12-27 | 2019-03-26 | Intel Corporation | Method to do control speculation on loads in a high performance strand-based loop accelerator |
JP7053998B2 (ja) * | 2018-06-06 | 2022-04-13 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US20200034152A1 (en) * | 2018-07-30 | 2020-01-30 | Cavium, Llc | Preventing Information Leakage In Out-Of-Order Machines Due To Misspeculation |
US10956168B2 (en) * | 2019-03-08 | 2021-03-23 | International Business Machines Corporation | Post completion execution in an out-of-order processor design |
CN114116015B (zh) * | 2022-01-21 | 2022-06-07 | 上海登临科技有限公司 | 用于管理硬件命令队列的方法及*** |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04242431A (ja) | 1991-01-16 | 1992-08-31 | Koufu Nippon Denki Kk | 情報処理装置 |
JPH05173785A (ja) | 1991-12-25 | 1993-07-13 | Koufu Nippon Denki Kk | 命令先取り装置 |
JPH07306785A (ja) | 1994-05-11 | 1995-11-21 | Toshiba Corp | 分岐命令実行機能を持つプロセッサおよび分岐命令制御方法 |
US5933618A (en) * | 1995-10-30 | 1999-08-03 | Advanced Micro Devices, Inc. | Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction |
US5611063A (en) * | 1996-02-06 | 1997-03-11 | International Business Machines Corporation | Method for executing speculative load instructions in high-performance processors |
JP3473249B2 (ja) | 1996-03-08 | 2003-12-02 | 株式会社日立製作所 | 中央処理装置 |
US5983342A (en) * | 1996-09-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Superscalar microprocessor employing a future file for storing results into multiportion registers |
US5870579A (en) * | 1996-11-18 | 1999-02-09 | Advanced Micro Devices, Inc. | Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception |
JP2933560B2 (ja) | 1997-03-24 | 1999-08-16 | 甲府日本電気株式会社 | 多重パイプラインを有する情報処理装置 |
JP2910848B1 (ja) | 1997-12-29 | 1999-06-23 | 日本電気株式会社 | 投機的実行命令数カウント装置 |
US6289442B1 (en) * | 1998-10-05 | 2001-09-11 | Advanced Micro Devices, Inc. | Circuit and method for tagging and invalidating speculatively executed instructions |
SE513431C2 (sv) * | 1999-01-11 | 2000-09-11 | Ericsson Telefon Ab L M | Buffert för icke-rapporterade hopp |
-
2001
- 2001-01-10 JP JP2001002141A patent/JP3518510B2/ja not_active Expired - Lifetime
-
2002
- 2002-01-04 EP EP02000139A patent/EP1223507A1/en not_active Withdrawn
- 2002-01-08 CA CA002367324A patent/CA2367324C/en not_active Expired - Fee Related
- 2002-01-09 US US10/040,392 patent/US6938150B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6938150B2 (en) | 2005-08-30 |
JP2002207595A (ja) | 2002-07-26 |
CA2367324A1 (en) | 2002-07-10 |
US20020091913A1 (en) | 2002-07-11 |
CA2367324C (en) | 2006-08-08 |
EP1223507A1 (en) | 2002-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6697932B1 (en) | System and method for early resolution of low confidence branches and safe data cache accesses | |
JP3602840B2 (ja) | 命令の投機的実行制御装置およびその方法 | |
US6880073B2 (en) | Speculative execution of instructions and processes before completion of preceding barrier operations | |
US6415380B1 (en) | Speculative execution of a load instruction by associating the load instruction with a previously executed store instruction | |
US6289442B1 (en) | Circuit and method for tagging and invalidating speculatively executed instructions | |
US7711934B2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
JPWO2008029450A1 (ja) | 分岐予測ミスリカバリ機構を有する情報処理装置 | |
JP2000029699A (ja) | プロセサア―キテクチャ | |
JPH0619707A (ja) | 情報処理装置 | |
JP2002508568A (ja) | 不適正順序マルチスレッド実行を実行するロード命令およびストア命令を順序付けるシステム | |
JP2001517333A (ja) | 自己修飾コード処理装置 | |
US6772317B2 (en) | Method and apparatus for optimizing load memory accesses | |
JP3518510B2 (ja) | リオーダバッファの管理方法及びプロセッサ | |
JPH096611A (ja) | データ処理システムにおけるデータをバッファリングする方法およびシステム | |
JP2000322257A (ja) | 条件分岐命令の投機的実行制御方法 | |
JP4608099B2 (ja) | ジョブ信号を処理する多数の処理ユニットを有する処理システムにおけるジョブ信号処理方法および処理システム | |
US20050223201A1 (en) | Facilitating rapid progress while speculatively executing code in scout mode | |
JP2002530735A5 (ja) | ||
US20040199749A1 (en) | Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor | |
JP3816845B2 (ja) | プロセッサ及び命令制御方法 | |
US20100306513A1 (en) | Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline | |
US20100100709A1 (en) | Instruction control apparatus and instruction control method | |
JPH1196005A (ja) | 並列処理装置 | |
US7065635B1 (en) | Method for handling condition code modifiers in an out-of-order multi-issue multi-stranded processor | |
JP5093237B2 (ja) | 命令処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040119 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3518510 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080206 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090206 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100206 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100206 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110206 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110206 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120206 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120206 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130206 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130206 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140206 Year of fee payment: 10 |
|
EXPY | Cancellation because of completion of term |