JP2002278752A - 命令の実行結果予測装置 - Google Patents
命令の実行結果予測装置Info
- Publication number
- JP2002278752A JP2002278752A JP2001079716A JP2001079716A JP2002278752A JP 2002278752 A JP2002278752 A JP 2002278752A JP 2001079716 A JP2001079716 A JP 2001079716A JP 2001079716 A JP2001079716 A JP 2001079716A JP 2002278752 A JP2002278752 A JP 2002278752A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- prediction
- execution result
- rank
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000007423 decrease Effects 0.000 claims description 3
- 238000000034 method Methods 0.000 description 22
- 238000001514 detection method Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 1
- 150000002500 ions Chemical class 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
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
なう手段を提供する。 【解決手段】セットアソシアティブ方式で構成された分
岐/値予測回路において、予測の為に参照され、かつ、
予測が正解である時のみ、予測に使用したエントリの有
用性順位を高くしておき、履歴テーブルに命令の実行結
果を新規登録する際、有用性順位が最も低いエントリに
登録を行なう。 【効果】予測が正解である時にのみ有用性順位を更新す
ることで、予測正答率の低いエントリが消去されやすく
なり、予測精度を高めることができる。
Description
令の実行結果から現在実行中の命令の実行結果を予測す
る方式を有するプロセッサにおける過去に実行した命令
の実行結果の管理法に関する。
ロセッサ内で実行される処理を命令フェッチ、命令デコ
ード、オペランドの読み出し、実行、実行結果の書き戻
しといった処理に細分化し、前後の命令とオーバーラッ
プして実行するパイプライン方式を用いている。分岐予
測機構は、条件つき分岐命令を実行する際に起きるパイ
プラインの停止が起こらないようにすることで、パイプ
ライン方式を用いているプロセッサの性能を向上させる
ためのものである。図7に示す様に、分岐予測機構がな
い場合、条件つき分岐命令の実行が終了するまで、分岐
する/しないが決定しないため、条件つき分岐命令の後
続の命令に対する命令フェッチができず、パイプライン
を停止させなくてはならない。これに対して、分岐予測
機構がある場合、条件つき分岐命令の実行結果(分岐す
る/しない)を前もって予測することにより、分岐命令の
完了を待たずに命令フェッチが可能になり、予測が正し
ければ分岐命令を実行する際、パイプラインを停止させ
ないようにすることができる。同様に、値予測機構は、
現在実行中の命令の実行結果を予測することで、パイプ
ラインを停止させないようにして、プロセッサの性能を
向上させる。値予測がない場合、ある命令を実行するに
あたって、先行する命令の実行結果を必要としている
が、その時点で先行する命令の実行結果が得られていな
い場合(例えば、多数のサイクルを必要とする除算命令
の実行結果が得られていない場合)には、先行する命令
の実行結果が得られるまで、パイプラインを停止させな
くてはならない。これに対して、値予測機構がある場
合、先行する命令の実行結果を予測することにより、予
測した実行結果が正しければ、パイプラインを停止させ
ないようにすることができる。分岐/値予測を実現する
一つの方法は、命令を実行した際に、命令の実行結果を
履歴テーブルに記憶させておき、命令の実行結果を予測
する際に、履歴テーブルを参照し、過去の命令の実行結
果から予測を行うことである。予測テーブルの添字に
は、プログラムカウンタ等が用いられる。分岐/値予測
を行なった時、プロセッサ内の命令実行ユニットは、実
行結果を予測した命令の正しい実行結果を求める。正し
い実行結果と予測値の比較を行い、予測値が正しけれ
ば、予測値を用いて実行した命令の実行結果が有効とな
る。予測値が誤りの時は、予測値を用いて実行した命令
を再実行する。予測値を用いて実行された命令の再実行
が少ない程、高いプロセッサ性能が得られる。したがっ
て、分岐/値予測には高い予測正答率が求められる。分
岐予測装置において、高い予測正答率を得るための方法
の一つは、ScottMcFarlingのCombining Branch Predict
ions. WRL Technical Notes TN-36,Digital Equipment
Western Research Laboratory, June 1993.に示されて
いる様に、複数の性質の異なる分岐予測アルゴリズム
と、分岐予測アルゴリズムの出力を選択する装置を用い
ることである。分岐予測機構は、予測アルゴリズムによ
って、得意とする分岐命令の振舞いが異なる。そこで、
2つ以上の性質の異なる分岐予測アルゴリズムをもつ分
岐予測機構と、それぞれの分岐予測アルゴリズムの最近
の予測正答/不正答を記憶するテーブルを用いて、どち
らの分岐予測アルゴリズムの予測が正しいかを予測する
ことによって、一つの分岐予測アルゴリズムだけを用い
るより高い予測正答率を得ることができる。しかしなが
ら、この方法は、2つ以上の予測アルゴリズムと、予測
アルゴリズムを選択する装置を実装しなくてはならない
為、回路量が大きくなる欠点がある。分岐予測装置にお
いて、高い予測正答率を得るための方法の一つは、特開
H08-110857に示されている様に、分岐する確率の低いエ
ントリを無効化することである。エントリを無効化する
ことにより、無効化された分岐命令は分岐しないと判断
される。このため、分岐する確率の低いエントリを無効
化することによる予測正答率の低下は僅かである一方、
分岐命令の実行結果を履歴テーブルに新規に登録する際
に分岐する確率が高いエントリを消してしまう確率が低
くなり、予測正答率が高くなると考えられる。しかしな
がら、この方法は、ある一定の基準を満たすエントリを
消去してしまう為に、過剰にエントリを無効化してしま
ったり、無効化すべきエントリが少なすぎるために、予
測正答率を高めることができないことがある。分岐/値
予測において、予測正答率を高くする方法の一つは、命
令の実行結果を格納可能なエントリを増やすことであ
る。命令の実行結果を格納可能なエントリが2つ以上あ
り、そのうちのいずれか一つのエントリに実行結果を格
納する構成方式を一般にセットアソシアティブ方式と呼
ぶ。セットアソシアティブ方式は、キャッシュメモリに
よく使用される方式である。セットアソシアティブ方式
は、通常、選択可能なエントリ数をk、エントリ総数を
n、実行結果を格納するテーブルの添字をiとした時、格
納するエントリは、(i mod n) - (i mod k)から (imod
n) - (i mod k) + (k-1)のいずれかとする。セットアソ
シアティブ方式のキャッシュメモリにおいて、2つ以上
の格納可能なエントリから格納するエントリを選択する
方法のうち、最も性能が良いとされる方式は、Least-Re
cently-Used (LRU)方式と呼ばれる方式である。LRU方式
は、選択可能なエントリの中で最も長時間使用されてい
ないエントリに格納する。これを実現するために、LRU
方式は、総エントリ数をn、選択可能なエントリ数をkと
した時、n/kエントリのLRUテーブルを使用する。LRUテ
ーブルには、エントリが参照された時間を選択可能なエ
ントリ間の相対的な順位で記録する。以下、選択可能な
エントリ間の相対的な順位をここでは有用性順位と呼
ぶ。例えば、総エントリ数が16、選択可能なエントリ数
を4とした時、8〜15番目のエントリが、8→9→10→11の
順に参照されたとする。この時、LRUテーブルには、8→
9→10→11の順に参照されたことが記録されている。次
に9が参照されたとすると、LRUテーブルには、8→10→1
1→9の順に参照されたことが記録される。そして、新し
く格納すべき実行結果があり、その実行結果を8〜11エ
ントリのいずれかに格納しなくてはならない時、選択可
能なエントリの中で有用性順位の最も低いエントリ、す
なわち、最も長時間参照されていない8番目のエントリ
に実行結果を格納する。分岐/値予測におけるLRU方式の
問題点は、予測失敗となる確率が高くても、参照頻度が
高いエントリは、有用性順位が高くなり、予測用テーブ
ルに残るため、予測正答であるエントリが履歴テーブル
から消去されてしまうことである。予測正答率を高める
ためには、予測失敗となる確率が高いエントリよりも、
参照頻度が低くても、予測正答となるエントリが予測用
テーブルにある方がよい。すなわち、LRU方式では、参
照頻度は高いが予測失敗となる確率も高いエントリのた
めに、プロセッサ性能が低下しているという問題があ
る。
トアソシアティブ方式で構成された分岐/値予測機構の
予測正答率を高めることである。
成するために、LRUテーブルと同様に選択可能なエント
リ間での有用性順位を記録する有用性順位テーブルを用
いる。LRUテーブルは、参照の度に参照されたエントリ
の有用性順位が高くなる様に設定されるが、有用性順位
テーブルは、予測のために参照され、予測が正しかった
時にだけ、参照されたエントリの有用性順位が高くなる
様に設定される。これによって、分岐/値予測機構にお
いて、参照頻度が低いエントリ、及び、予測正答率が低
いエントリの有用性順位が低くなる。新しく格納すべき
実行結果がある時は、選択可能なエントリのうち最も有
用性順位が低いエントリに格納する。この時、履歴テー
ブルから、性能向上への寄与が小さいエントリが消え、
相対的に性能向上への寄与が大きいエントリが履歴テー
ブルに残るようになるため、プロセッサの性能を向上さ
せることができる。さらに、本発明は、分岐/値予測機
構において、履歴テーブルが参照され、予測が失敗の時
に、参照されたエントリの有用性順位を低くすることに
より、予測テーブルから、性能向上への寄与が小さいエ
ントリが消え、相対的に性能向上への寄与が大きいエン
トリが履歴テーブルに残るようになるため、プロセッサ
の性能を向上させることができる。さらに、本発明は、
分岐/値予測機構において、参照され、予測が正しかっ
た時に、参照されたエントリの有用性順位を高め、予測
失敗の時に、参照されたエントリの有用性順位を低くす
ることにより、履歴テーブルから、性能向上への寄与が
小さいエントリが消え、相対的に性能向上への寄与が大
きいエントリが予測テーブルに残るようになるため、プ
ロセッサの性能を向上させることができる。さらに、本
発明は、分岐/値予測機構において、予測が正しかった
時は、予測を行なわなかった時に比べて減少するサイク
ル数に応じて有用性順位を高める。これにより、履歴テ
ーブルから、性能向上への寄与が大きいエントリは残り
やすくなり、プロセッサの性能を向上させることができ
る。
の実施例を示す分岐/値予測回路のブロック図である。
説明の便宜上、図1は4-wayセットアソシアティブ方
式、履歴テーブルは1 wayにつき256エントリ(総エント
リ数は1024)、参照/書き込みアドレス(ADR)は32ビット
(ADR[31:0])、履歴テーブルの参照には参照/書き込みア
ドレスのLSBから8ビット(ADR[7:0])を使用する構成での
実施例であるが、本発明の原理と動作を十分に示してい
る。本発明の実施例は、命令実行ユニット 100、有用性
順位テーブル 110、実行結果の履歴テーブルa〜d 311〜
314、タグ一致検出回路a〜d 321〜324、実行結果選択回
路 115、予測値生成回路 116、予測判定回路 117、格納
場所決定回路 118、有用性順位生成回路 119、参照/書
き込みアドレスレジスタ 122からなる。
ィブ方式であるので、ここでは、有用性順位をprio[5:
0]の6ビットで表わしている。1番有用性順位が高いデ
ータが格納されているway番号(0〜3)をprio[1:0]、2番
目に有用性順位が高いデータが格納されているway番号
(0〜3)をprio[3:2]、3番目に有用性順位が高いデータが
格納されているway番号(0〜3)をprio[5:4]と表わす。有
用性の最も低いデータが格納されているway番号(0〜3)
はprio[1:0] xor prio[3:2] xor prio[5:4]で求めるこ
とができる。例えば、8〜15番目のエントリがそれぞれw
ay0〜way3に対応していて、8→10→11→9の順にエント
リが参照された時、LRUでは9→11→10→8の順に有用性
が高いと評価され、有用性順位を示すprioの各ビット
は、prio[1:0]= 1、prio[3:2] = 3、prio[5:4] = 2とな
る。全体の動作は以下の通りである。まず、命令実行ユ
ニット 100が、実行結果を予測したい命令のアドレスを
参照/書き込みアドレスレジスタ 122に格納する。履歴
テーブルa〜d 311〜314から、タグ情報と過去の命令の
実行結果がそれぞれ読み出される。タグ一致検出回路a
321は履歴テーブルaから読み出されたタグ(TAGa[31:8])
と履歴参照/書き込みアドレスのうち、履歴テーブルの
参照に使用しない上位24ビット(ADR[31:8])との比較を
行ない、一致するなら履歴a選択ビット331 を1、一致し
ないなら履歴a選択ビット 331 を0とする。同様に、タ
グ一致検出回路b〜d 322〜324でも比較を行ない、履歴b
〜d選択ビット 332〜334を出力する。タグヒット検出回
路 111は履歴a〜d選択ビット321〜324のいずれかが1で
あればタグヒット信号208に1を、すべてが0なら0であれ
ば0を出力する。タグヒットデコード回路 120は、1-out
of-4符号で出力される履歴a〜d選択ビット321〜324を入
力とし、履歴選択ビットが1となっているway番号(0〜3)
を出力する。実行履歴選択回路は、タグヒットデコード
回路 120が出力するway番号に応じて履歴テーブルから
出力された過去の命令の実行結果a〜d 301〜304のいず
れかを過去の命令の実行結果 205に出力する。予測値生
成回路 116は、過去の命令の実行結果 205を入力とし
て、実行結果の予測値206を生成する。命令実行ユニッ
ト 100は、実行結果の予測値 206を用いて命令の実行を
行なう。命令実行ユニット 100は、予測を行なった命令
の実行結果 221を出力する。予測判定回路は、実行結果
の予測値 206と命令の実行結果 221とを比較し、一致す
る場合は1を、一致しない場合は0を予測正答信号 207に
出力する。有用性順位生成回路と格納場所決定回路は次
に示す4つのうち、いずれかの動作を行なう。 (1a) 履歴テーブルを参照し、履歴テーブルa〜dから読
み出されたタグのいずれかと参照アドレスの上位24ビッ
ト 220が一致し、さらに、実行履歴から生成された予測
値と命令の実行結果が一致した場合(予測正答信号 207
が 1の場合)は、履歴テーブル内の予測に使用したエン
トリの有用性順位を高くする。履歴テーブルの内容は予
測アルゴリズムにもとづいて更新する。 (1b) 履歴テーブルを参照し、履歴テーブルa〜dから読
み出されたタグのいずれかと参照アドレスの上位24ビッ
ト 220が一致したが、実行履歴から生成された予測値と
命令の実行結果が一致しなかった場合(予測正答信号 20
7 が 0の場合)は、履歴テーブル内の予測に使用したエ
ントリの有用性順位を変更しない。履歴テーブルの内容
は予測アルゴリズムにもとづいて更新する。 (1c) 履歴テーブルを参照したが、履歴テーブルa〜dか
ら読み出されたタグのいずれとも参照アドレスの上位24
ビット 220が一致せず、かつ、予測と命令の実行結果が
一致した場合(予測正答信号 207 が 1 の場合)履歴テー
ブルへの登録は不要であるため、何もしない。 (1d) 履歴テーブルを参照したが、履歴テーブルa〜dか
ら読み出されたタグのいずれとも参照アドレスの上位24
ビット 220が一致せず、かつ、予測と命令の実行結果が
一致しなかった場合(予測正答信号 207 が 0 の場合)、
予測アルゴリズムにもとづいて、実行ユニットの出力す
る実行結果を履歴テーブルに格納する。以後、この動作
を新規登録と呼ぶ。新規登録の際、格納場所決定回路
は、履歴テーブルa〜d 311〜314の格納可能なエントリ
のバリッドビットが「無効」であるかどうかを調べる。
バリッドビットが「無効」であるエントリがあれば、そ
のエントリに書き込みが行なわれる様に、履歴テーブル
書き込み制御信号 340をセットする。バリッドビットが
「無効」であるエントリがない場合、履歴テーブルを参
照した際に用いたアドレスを用いて有用性順位テーブル
110から有用性順位を読み出し、有用性順位の最も低い
エントリの履歴テーブル側へ書き込みが行なわれる様に
履歴テーブル書き込み制御信号 340をセットする。
回路の第一の実施例を示す。有用性順位生成回路は、新
規登録時のway番号 212、有用性順位テーブルから読み
出された有用性順位 210、予測正答信号 207、タグヒッ
ト信号 208、予測のため参照したway 209を入力とし、
有用性順位テーブル 110に記録すべき有用性順位 266を
出力する。(1a)の場合、予測正答信号 207が1、タグヒ
ット信号 208が1となる。この時、予測のために参照し
たwayを最も有用性の高いwayとして有用性順位テーブル
に登録するため、予測のために参照したway 209が有用
性順位テーブル 110に記録すべき有用性順位 266のPO
[1:0]に出力される。これにあわせて、予測のために参
照したway以外のwayの有用性順位は、予測のために参照
した際の有用性順位より高ければ、1段階低くなる。(1
b)の場合、予測正答信号 207が0、タグヒット信号 208
が1となる。この時、マルチプレクサ401〜404のセレク
ト信号が1となり、有用性順位は変化しない。(1c)の場
合、予測正答信号 207が1、タグヒット信号 208が0とな
る。この時、マルチプレクサ401〜404のセレクト信号が
1となり、有用性順位は変化しない。(1d)の場合、予測
正答信号 207が0、タグヒット信号 208が0となる。この
時、格納場所決定回路が出力するwayを有用性順位が高
いwayとして有用性順位テーブルに登録するため、新規
登録するway 212が有用性順位テーブル 110に記録すべ
き有用性順位 266のPO[1:0]に出力される。これにあわ
せて、新規登録するway以外のwayの有用性順位は、新規
登録するwayの有用性順位より高ければ、1段階低くな
る。以上に示した様に動作することで、分岐/値予測機
構において、参照頻度が高く、かつ、予測正答率が高い
エントリの有用性順位が高くなる。すなわち、性能向上
への寄与が大きいエントリの有用性順位が高くなる。し
たがって、履歴テーブルから、性能向上への寄与が小さ
いエントリが消え、相対的に性能向上への寄与が大きい
エントリが履歴テーブルに残り、予測正答率を高くする
ことができる。図3にway数が4である時の有用性順位生
成回路の第二の実施例を示す。この回路は次に示す4つ
のうち、いずれかの動作を行なう。 (2a) 履歴テーブルを参照し、履歴テーブルa〜dから読
み出されたタグのいずれかと参照アドレスの上位24ビッ
ト 220が一致し、さらに、実行履歴から生成された予測
値と命令の実行結果が一致した場合(予測正答信号 207
が 1の場合)は、履歴テーブル内の予測に使用したエン
トリの有用性順位を変更しない。履歴テーブルの内容は
予測アルゴリズムにもとづいて更新する。 (2b) 履歴テーブルを参照し、履歴テーブルa〜dから読
み出されたタグのいずれかと参照アドレスの上位24ビッ
ト 220が一致したが、実行履歴から生成された予測値と
命令の実行結果が一致しなかった場合(予測正答信号 20
7 が 0の場合)は、履歴テーブル内の予測に使用したエ
ントリの有用性順位を低くする。履歴テーブルの内容は
予測アルゴリズムにもとづいて更新する。 (2c) 履歴テーブルを参照したが、履歴テーブルa〜dか
ら読み出されたタグのいずれとも参照アドレスの上位24
ビット 220が一致せず、かつ、予測と命令の実行結果が
一致した場合(予測正答信号 207 が 1 の場合)履歴テー
ブルへの登録は不要であるため、何もしない。 (2d) 履歴テーブルを参照したが、履歴テーブルa〜dか
ら読み出されたタグのいずれとも参照アドレスの上位24
ビット 220が一致せず、かつ、予測と命令の実行結果が
一致しなかった場合(予測正答信号 207 が 0 の場合)、
予測アルゴリズムにもとづいて、実行ユニットの出力す
る実行結果を履歴テーブルに格納する(新規登録)。 以上に示した様に動作することで、分岐/値予測機構に
おいて、参照頻度が高く、かつ、予測正答率が低いエン
トリの有用性順位が低くなる。すなわち、性能向上への
寄与が小さいエントリの有用性順位が低くなる。したが
って、履歴テーブルから、性能向上への寄与が小さいエ
ントリが消え、相対的に性能向上への寄与が大きいエン
トリが履歴テーブルに残り、予測正答率を高くすること
ができる。図4に示す有用性順位生成回路は、本発明の
第三の実施例である。この回路は次に示す4つのうち、
いずれかの動作を行なう。 (3a) 履歴テーブルを参照し、履歴テーブルa〜dから読
み出されたタグのいずれかと参照アドレスの上位24ビッ
ト 220が一致し、さらに、実行履歴から生成された予測
値と命令の実行結果が一致した場合(予測正答信号 207
が 1の場合)は、履歴テーブル内の予測に使用したエン
トリの有用性順位を高くする。履歴テーブルの内容は予
測アルゴリズムにもとづいて更新する。 (3b) 履歴テーブルを参照し、履歴テーブルa〜dから読
み出されたタグのいずれかと参照アドレスの上位24ビッ
ト 220が一致したが、実行履歴から生成された予測値と
命令の実行結果が一致しなかった場合(予測正答信号 20
7 が 0の場合)は、履歴テーブル内の予測に使用したエ
ントリの有用性順位を低くする。履歴テーブルの内容は
予測アルゴリズムにもとづいて更新する。 (3c) 履歴テーブルを参照したが、履歴テーブルa〜dか
ら読み出されたタグのいずれとも参照アドレスの上位24
ビット 220が一致せず、かつ、予測と命令の実行結果が
一致した場合(予測正答信号 207 が 1 の場合)履歴テー
ブルへの登録は不要であるため、何もしない。 (3d) 履歴テーブルを参照したが、履歴テーブルa〜dか
ら読み出されたタグのいずれとも参照アドレスの上位24
ビット 220が一致せず、かつ、予測と命令の実行結果が
一致しなかった場合(予測正答信号 207 が 0 の場合)、
予測アルゴリズムにもとづいて、実行ユニットの出力す
る実行結果を履歴テーブルに格納する(新規登録)。 以上に示した様に動作することで、分岐/値予測機構に
おいて、参照頻度が高く、かつ、予測正答率が高いエン
トリの有用性順位が高くなる。また、参照頻度が高く、
予測正答率が低いエントリの有用性順位が低くなる。す
なわち、性能向上への寄与が小さいエントリの有用性順
位が低くなる。したがって、履歴テーブルから、性能向
上への寄与が小さいエントリが消え、相対的に性能向上
への寄与が大きいエントリが履歴テーブルに残り、予測
正答率を高くすることができる。図6にway数が4であ
る時の有用性順位生成回路の第四の実施例を示す。図5
に第四の実施例における分岐/値予測回路のブロック図
を示す。
うち、いずれかの動作を行なう。 (4a) 履歴テーブルを参照し、履歴テーブルa〜dから読
み出されたタグのいずれかと参照アドレスの上位24ビッ
ト 220が一致し、さらに、実行履歴から生成された予測
値と命令の実行結果が一致した場合(予測正答信号 207
が 1の場合)は、履歴テーブル内の予測に使用したエン
トリの有用性順位を高くする。この時、実行ユニット10
0が出力する予測を行なったことによって減少するサイ
クル数が大きい時は信号222が1となり、予測を行なった
ことによって減少するサイクル数が小さい時は信号222
が0となる。有用性順位生成回路は、予測を行なったこ
とによって減少するサイクル数が大きい時(信号222が1
の時)は、履歴テーブル内の予測に使用したエントリの
有用性順位を最も高くする。これに対して、予測を行な
ったことによって減少するサイクル数が小さい時(信号2
22が0の時)は、履歴テーブル内の予測に使用したエント
リの有用性順位を2番目に高くする。ただし、予測に使
用したエントリの有用性順位が元々1番目である時は、
有用性順位を変更しない。履歴テーブルの内容は予測ア
ルゴリズムにもとづいて更新する。 (4b) 履歴テーブルを参照し、履歴テーブルa〜dから読
み出されたタグのいずれかと参照アドレスの上位24ビッ
ト 220が一致したが、実行履歴から生成された予測値と
命令の実行結果が一致しなかった場合(予測正答信号 20
7 が 0の場合)は、有用性順位を変更しない。履歴テー
ブルの内容は予測アルゴリズムにもとづいて更新する。 (4c) 履歴テーブルを参照したが、履歴テーブルa〜dか
ら読み出されたタグのいずれとも参照アドレスの上位24
ビット 220が一致せず、かつ、予測と命令の実行結果が
一致した場合(予測正答信号 207 が 1 の場合)履歴テー
ブルへの登録は不要であるため、何もしない。 (4d) 履歴テーブルを参照したが、履歴テーブルa〜dか
ら読み出されたタグのいずれとも参照アドレスの上位24
ビット 220が一致せず、かつ、予測と命令の実行結果が
一致しなかった場合(予測正答信号 207 が 0 の場合)、
予測アルゴリズムにもとづいて、実行ユニットの出力す
る実行結果を履歴テーブルに格納する(新規登録)。 以上に示した様に動作することで、分岐/値予測機構に
おいて、参照頻度が高く、予測正答率が高いエントリで
あって、予測が正しかった時に減少するサイクル数の大
きいものほど有用性順位が高くなる。これにより、履歴
テーブルから、性能向上への寄与が大きいエントリほど
残りやすく、性能向上の小さいエントリは消えやすくな
る。このため、プロセッサの性能を高めることができ
る。
で、以下に示すように分岐/値予測機構の予測正答率を
高める効果がある。まず第1の効果は、(a)予測の為に
参照され、かつ、予測が正解である時のみ、予測に使用
したエントリの有用性順位を高くする (b)履歴テーブル
に命令の実行結果を新規登録する際、有用性順位が最も
低いエントリに登録を行なう ことにより、予測的中率
を向上させることができることである。第2の効果は、
(a)予測の為に参照され、かつ、予測が失敗である時の
み、予測に使用したエントリの有用性順位を低くする
(b)履歴テーブルに命令の実行結果を新規登録する際、
有用性順位が最も低いエントリに登録を行なう ことに
より、予測的中率を向上させることができることであ
る。第3の効果は、(a)新規登録時と予測の為に参照さ
れ、かつ、予測が正解である時は、予測に使用したエン
トリの有用性順位を高くする (b)新規登録時と予測の為
に参照され、かつ、予測が失敗である時に、予測に使用
したエントリの有用性順位を低くする (c)履歴テーブル
に命令の実行結果を新規登録する際、有用性順位が最も
低いエントリに登録を行なう ことにより、予測的中率
を向上させることができることである。第4の効果は、
(a)新規登録時と予測の為に参照され、予測が正解であ
り、予測が正しかった時に減少するサイクル数の大きい
ほど予測に使用したエントリの有用性順位を高くする
(b)履歴テーブルに命令の実行結果を新規登録する際、
有用性順位が最も低いエントリに登録を行なう ことに
より、プロセッサの性能を高めることができることであ
る。
生成回路の第1の実施例。
生成回路の第2の実施例。
生成回路の第3の実施例。
生成回路の第4の実施例。
測機構による高速化の例。
Claims (5)
- 【請求項1】命令を実行するための1つまたは複数の命
令実行ユニットと、過去に実行された命令の実行結果か
ら、現在実行中の命令の実行結果の予測値を生成する予
測手段を含むプロセッサであって、前記命令実行ユニッ
トは、前記予測手段の出力する命令の実行結果の予測値
を用いて命令を実行し、前記予測手段は、過去に実行さ
れた命令の実行結果を、2つ以上の格納場所から選択し
て格納可能な実行結果の履歴テーブルと、前記履歴テー
ブルに格納された過去に実行された命令の実行結果の間
の、有用性の順位を格納する有用性順位テーブルと、前
記履歴テーブルから読み出された過去に実行した命令の
実行結果から、現在実行中の命令の実行結果を予測する
ための予測値生成手段と、実行結果を予測した命令を実
際に実行した結果、前記予測手段の出力した予測値が正
しかったか否かを判定する予測判定手段と、前記履歴テ
ーブルに格納する場所を決定する格納場所決定手段と、
前記有用性順位テーブルに書き込まれる有用性順位を生
成する有用性順位生成手段とを含み、前記予測手段は、
前記履歴テーブルの内容を用いて前記予測手段が現在実
行中の命令の実行結果の予測値を生成し、前記予測判定
手段が予測値と、現在実行中の命令の実行結果とが同じ
であることを示す時に、有用性順位生成手段は、前記予
測値生成手段の入力となった実行結果の履歴テーブルの
情報が有用であることを示す様に、前記有用性順位テー
ブル内の有用性順位を上げ、前記予測判定手段が予測値
と、現在実行中の命令の実行結果とが異なることを示す
時に、前記有用性順位テーブル内の有用性順位を変更し
ないことを特徴とするプロセッサ。 - 【請求項2】命令を実行するための1つまたは複数の命
令実行ユニットと、過去に実行され命令の実行結果か
ら、現在実行中の命令の実行結果の予測値を生成する予
測手段を含むプロセッサであって、前記命令実行ユニッ
トは、前記予測手段の出力する命令の実行結果の予測値
を用いて命令を実行し、前記予測手段は、過去に実行さ
れた命令の実行結果を、2つ以上の格納場所から選択し
て格納可能な実行結果の履歴テーブルと、前記履歴テー
ブルに格納された過去に実行された命令の実行結果の間
の、有用性の順位を格納する有用性順位テーブルと、前
記履歴テーブルから読み出された過去に実行した命令の
実行結果から、現在実行中の命令の実行結果を予測する
ための予測値生成手段と、実行結果を予測した命令を実
際に実行した結果、前記予測手段の出力した予測値が正
しかったか否かを判定する予測判定手段と、前記履歴テ
ーブルに格納する場所を決定する格納場所決定手段と、
前記有用性順位テーブルに書き込まれる有用性順位を生
成する有用性順位生成手段とを含み、前記予測手段は、
前記履歴テーブルの内容を用いて前記予測手段が現在実
行中の命令の実行結果の予測値を生成し、前記予測判定
手段が予測値と、現在実行中の命令の実行結果とが異な
ることを示す時に、有用性順位生成手段は、前記予測値
生成手段の入力となった実行結果の履歴テーブルの情報
が有用ではないことを示す様に、前記有用性順位テーブ
ル内の有用性順位を下げ、前記予測判定手段が予測値
と、現在実行中の命令の実行結果とが同じであることを
示す時に、前記有用性順位テーブル内の有用性順位を変
更しないことを特徴とするプロセッサ。 - 【請求項3】命令を実行するための1つまたは複数の命
令実行ユニットと、過去に実行された命令の実行結果か
ら、現在実行中の命令の実行結果の予測値を生成する予
測手段を含むプロセッサであって、前記命令実行ユニッ
トは、前記予測手段の出力する命令の実行結果の予測値
を用いて命令を実行し、前記予測手段は、過去に実行さ
れた命令の実行結果を、2つ以上の格納場所から選択し
て格納可能な実行結果の履歴テーブルと、前記履歴テー
ブルに格納された過去に実行された命令の実行結果の間
の、有用性の順位を格納する有用性順位テーブルと、前
記履歴テーブルから読み出された過去に実行した命令の
実行結果から、現在実行中の命令の実行結果を予測する
ための予測値生成手段と、実行結果を予測した命令を実
際に実行した結果、前記予測手段の出力した予測値が正
しかったか否かを判定する予測判定手段と、前記履歴テ
ーブルに格納する場所を決定する格納場所決定手段と、
前記有用性順位テーブルに書き込まれる有用性順位を生
成する有用性順位生成手段とを含み、前記予測手段は、
前記履歴テーブルの内容を用いて前記予測手段が現在実
行中の命令の実行結果の予測値を生成し、前記予測判定
手段が予測値と、現在実行中の命令の実行結果とが同じ
であることを示す時に、有用性順位生成手段は、前記予
測値生成手段の入力となった実行結果の履歴テーブルの
情報が有用であることを示す様に、前記有用性順位テー
ブル内の有用性順位を上げ、前記予測判定手段が予測値
と、現在実行中の命令の実行結果とが異なることをす時
に、有用性順位生成手段は、前記予測値生成手段の入力
となった実行結果の履歴テーブルの情報が不要であるこ
とを示す様に、前記有用性順位テーブル内の有用性順位
を下げることを特徴とするプロセッサ。 - 【請求項4】命令を実行するための1つまたは複数の命
令実行ユニットと、過去に実行された命令の実行結果か
ら、現在実行中の命令の実行結果の予測値を生成する予
測手段を含むプロセッサであって、 前記命令実行ユニットは、前記予測手段の出力する命令
の実行結果の予測値を用いて命令を実行し、予測値を用
いて命令を実行する際に、予測を行ない、かつ、予測が
正しかった場合に減少するサイクル数と、予測を行な
い、かつ、予測が正しくなかった場合に増加するサイク
ル数を判定する予測成果判定手段を含み、前記予測手段
は、過去に実行された命令の実行結果を、2つ以上の格
納場所から選択して格納可能な実行結果の履歴テーブル
と、前記履歴テーブルに格納された過去に実行された命
令の実行結果の間の、有用性の順位を格納する有用性順
位テーブルと、前記履歴テーブルから読み出された過去
に実行した命令の実行結果から、現在実行中の命令の実
行結果を予測するための予測値生成手段と、実行結果を
予測した命令を実際に実行した結果、前記予測手段の出
力した予測値が正しかったか否かを判定する予測判定手
段と、前記履歴テーブルに格納する場所を決定する格納
場所決定手段と、前記有用性順位テーブルに書き込まれ
る有用性順位を生成する有用性順位生成手段とを含み、
前記予測手段は、前記履歴テーブルの内容を用いて前記
予測手段が現在実行中の命令の実行結果の予測値を生成
し、前記予測判定手段が予測値と、現在実行中の命令の
実行結果とが同じであることを示す時に、有用性順位生
成手段は、前記予測値生成手段の入力となった実行結果
の履歴テーブルの情報が有用であることを示す様に、予
測成果判定手段の示す減少するサイクル数が大きい程、
前記有用性順位テーブル内の有用性順位を大きく上げ、
前記予測判定手段が予測値と、現在実行中の命令の実行
結果とが異なることを示す時に、前記有用性順位テーブ
ル内の有用性順位を変更しないことを特徴とするプロセ
ッサ。 - 【請求項5】実行結果を予測する命令は分岐命令である
ことを特徴とする請求項1に記載のプロセッサ
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001079716A JP3890910B2 (ja) | 2001-03-21 | 2001-03-21 | 命令の実行結果予測装置 |
US10/050,777 US6678638B2 (en) | 2001-03-21 | 2002-01-18 | Processor having execution result prediction function for instruction |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001079716A JP3890910B2 (ja) | 2001-03-21 | 2001-03-21 | 命令の実行結果予測装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002278752A true JP2002278752A (ja) | 2002-09-27 |
JP3890910B2 JP3890910B2 (ja) | 2007-03-07 |
Family
ID=18936110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001079716A Expired - Fee Related JP3890910B2 (ja) | 2001-03-21 | 2001-03-21 | 命令の実行結果予測装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6678638B2 (ja) |
JP (1) | JP3890910B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7165254B2 (en) | 2004-07-29 | 2007-01-16 | Fujitsu Limited | Thread switch upon spin loop detection by threshold count of spin lock reading load instruction |
US7613910B2 (en) | 2004-09-30 | 2009-11-03 | Fujitsu Limited | Information processing apparatus, method, and computer-readable recording medium for replacing an entry in a memory device |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7831817B2 (en) * | 2003-04-15 | 2010-11-09 | Arm Limited | Two-level branch prediction apparatus |
US8719837B2 (en) | 2004-05-19 | 2014-05-06 | Synopsys, Inc. | Microprocessor architecture having extendible logic |
US8218635B2 (en) | 2005-09-28 | 2012-07-10 | Synopsys, Inc. | Systolic-array based systems and methods for performing block matching in motion compensation |
US7805595B2 (en) * | 2007-04-20 | 2010-09-28 | Arm Limited | Data processing apparatus and method for updating prediction data based on an operation's priority level |
US7861064B2 (en) * | 2008-02-26 | 2010-12-28 | International Business Machines Corporation | Method, system, and computer program product for selectively accelerating early instruction processing |
US8966230B2 (en) | 2009-09-30 | 2015-02-24 | Intel Corporation | Dynamic selection of execution stage |
US9262327B2 (en) * | 2012-06-29 | 2016-02-16 | Intel Corporation | Signature based hit-predicting cache |
GB2577502B (en) * | 2018-09-26 | 2021-09-08 | Advanced Risc Mach Ltd | An apparatus and method for processing instructions |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6427206B1 (en) * | 1999-05-03 | 2002-07-30 | Intel Corporation | Optimized branch predictions for strongly predicted compiler branches |
-
2001
- 2001-03-21 JP JP2001079716A patent/JP3890910B2/ja not_active Expired - Fee Related
-
2002
- 2002-01-18 US US10/050,777 patent/US6678638B2/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7165254B2 (en) | 2004-07-29 | 2007-01-16 | Fujitsu Limited | Thread switch upon spin loop detection by threshold count of spin lock reading load instruction |
US7613910B2 (en) | 2004-09-30 | 2009-11-03 | Fujitsu Limited | Information processing apparatus, method, and computer-readable recording medium for replacing an entry in a memory device |
Also Published As
Publication number | Publication date |
---|---|
US6678638B2 (en) | 2004-01-13 |
JP3890910B2 (ja) | 2007-03-07 |
US20020138236A1 (en) | 2002-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102538139B1 (ko) | 공간적 메모리 스트리밍 신뢰 메커니즘 | |
US4980823A (en) | Sequential prefetching with deconfirmation | |
US6584549B2 (en) | System and method for prefetching data into a cache based on miss distance | |
JP4027620B2 (ja) | 分岐予測装置、プロセッサ、及び分岐予測方法 | |
US8572358B2 (en) | Meta predictor restoration upon detecting misprediction | |
JP2000222205A (ja) | セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置 | |
TW201447581A (zh) | 預取單元、資料預取方法以及電腦程式產品 | |
US8601240B2 (en) | Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution | |
JP2001236266A (ja) | 高レベルキャッシュの効率改善方法 | |
KR20120086363A (ko) | 연산 처리 장치 | |
US11163573B2 (en) | Hierarchical metadata predictor with periodic updates | |
JPH10228377A (ja) | 分岐予測する情報処理装置 | |
JPH07253927A (ja) | 物理的にアドレス指定されたデータ記憶構造からの迅速なデータリトリーブ方法及び装置 | |
KR20220017403A (ko) | 프로세서의 추론적 예측 실패 복구에서 로드 기반 제어 독립적 (ci) 명령어의 재생 제한 | |
US7143272B2 (en) | Using computation histories to make predictions | |
JP3890910B2 (ja) | 命令の実行結果予測装置 | |
US20040117606A1 (en) | Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information | |
US6993638B2 (en) | Memory access device and method using address translation history table | |
US20030204705A1 (en) | Prediction of branch instructions in a data processing apparatus | |
KR20010037992A (ko) | 분기 예측 정확도 히스토리를 이용한 분기 예측기 | |
US20070260862A1 (en) | Providing storage in a memory hierarchy for prediction information | |
US20060036837A1 (en) | Prophet/critic hybrid predictor | |
KR20220154821A (ko) | 프로세서 파이프라인에서 간접 점프의 페치 스테이지 처리 | |
KR100517765B1 (ko) | 캐시 메모리 및 그 제어 방법 | |
EP0296430A2 (en) | Sequential prefetching with deconfirmation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060320 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060418 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061031 |
|
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: 20061114 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061127 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101215 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101215 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111215 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111215 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121215 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131215 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |