JP3890910B2 - 命令の実行結果予測装置 - Google Patents
命令の実行結果予測装置 Download PDFInfo
- Publication number
- JP3890910B2 JP3890910B2 JP2001079716A JP2001079716A JP3890910B2 JP 3890910 B2 JP3890910 B2 JP 3890910B2 JP 2001079716 A JP2001079716 A JP 2001079716A JP 2001079716 A JP2001079716 A JP 2001079716A JP 3890910 B2 JP3890910 B2 JP 3890910B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- prediction
- execution result
- usefulness
- executed
- 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 - Fee Related
Links
- 230000007423 decrease Effects 0.000 claims description 5
- 238000000034 method Methods 0.000 description 24
- 238000001514 detection method Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 1
Images
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, 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
Description
【発明の属する技術分野】
本発明は、過去に実行した命令の実行結果から現在実行中の命令の実行結果を予測する方式を有するプロセッサにおける過去に実行した命令の実行結果の管理法に関する。
【0002】
【従来の技術】
近年のプロセッサは、高速化のため、プロセッサ内で実行される処理を命令フェッチ、命令デコード、オペランドの読み出し、実行、実行結果の書き戻しといった処理に細分化し、前後の命令とオーバーラップして実行するパイプライン方式を用いている。
分岐予測機構は、条件つき分岐命令を実行する際に起きるパイプラインの停止が起こらないようにすることで、パイプライン方式を用いているプロセッサの性能を向上させるためのものである。図7に示す様に、分岐予測機構がない場合、条件つき分岐命令の実行が終了するまで、分岐する/しないが決定しないため、条件つき分岐命令の後続の命令に対する命令フェッチができず、パイプラインを停止させなくてはならない。これに対して、分岐予測機構がある場合、条件つき分岐命令の実行結果(分岐する/しない)を前もって予測することにより、分岐命令の完了を待たずに命令フェッチが可能になり、予測が正しければ分岐命令を実行する際、パイプラインを停止させないようにすることができる。
同様に、値予測機構は、現在実行中の命令の実行結果を予測することで、パイプラインを停止させないようにして、プロセッサの性能を向上させる。値予測がない場合、ある命令を実行するにあたって、先行する命令の実行結果を必要としているが、その時点で先行する命令の実行結果が得られていない場合(例えば、多数のサイクルを必要とする除算命令の実行結果が得られていない場合)には、先行する命令の実行結果が得られるまで、パイプラインを停止させなくてはならない。これに対して、値予測機構がある場合、先行する命令の実行結果を予測することにより、予測した実行結果が正しければ、パイプラインを停止させないようにすることができる。
分岐/値予測を実現する一つの方法は、命令を実行した際に、命令の実行結果を履歴テーブルに記憶させておき、命令の実行結果を予測する際に、履歴テーブルを参照し、過去の命令の実行結果から予測を行うことである。予測テーブルの添字には、プログラムカウンタ等が用いられる。
分岐/値予測を行なった時、プロセッサ内の命令実行ユニットは、実行結果を予測した命令の正しい実行結果を求める。正しい実行結果と予測値の比較を行い、予測値が正しければ、予測値を用いて実行した命令の実行結果が有効となる。予測値が誤りの時は、予測値を用いて実行した命令を再実行する。
予測値を用いて実行された命令の再実行が少ない程、高いプロセッサ性能が得られる。したがって、分岐/値予測には高い予測正答率が求められる。
分岐予測装置において、高い予測正答率を得るための方法の一つは、ScottMcFarlingのCombining Branch Predictions. 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-Recently-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→11→9の順に参照されたことが記録される。そして、新しく格納すべき実行結果があり、その実行結果を8〜11エントリのいずれかに格納しなくてはならない時、選択可能なエントリの中で有用性順位の最も低いエントリ、すなわち、最も長時間参照されていない8番目のエントリに実行結果を格納する。
分岐/値予測におけるLRU方式の問題点は、予測失敗となる確率が高くても、参照頻度が高いエントリは、有用性順位が高くなり、予測用テーブルに残るため、予測正答であるエントリが履歴テーブルから消去されてしまうことである。予測正答率を高めるためには、予測失敗となる確率が高いエントリよりも、参照頻度が低くても、予測正答となるエントリが予測用テーブルにある方がよい。すなわち、LRU方式では、参照頻度は高いが予測失敗となる確率も高いエントリのために、プロセッサ性能が低下しているという問題がある。
【0003】
【発明が解決しようとする課題】
本発明の目的は、セットアソシアティブ方式で構成された分岐/値予測機構の予測正答率を高めることである。
【0004】
【課題を解決するための手段】
本発明は、上記目的を達成するために、LRUテーブルと同様に選択可能なエントリ間での有用性順位を記録する有用性順位テーブルを用いる。LRUテーブルは、参照の度に参照されたエントリの有用性順位が高くなる様に設定されるが、有用性順位テーブルは、予測のために参照され、予測が正しかった時にだけ、参照されたエントリの有用性順位が高くなる様に設定される。
これによって、分岐/値予測機構において、参照頻度が低いエントリ、及び、予測正答率が低いエントリの有用性順位が低くなる。新しく格納すべき実行結果がある時は、選択可能なエントリのうち最も有用性順位が低いエントリに格納する。この時、履歴テーブルから、性能向上への寄与が小さいエントリが消え、相対的に性能向上への寄与が大きいエントリが履歴テーブルに残るようになるため、プロセッサの性能を向上させることができる。
さらに、本発明は、分岐/値予測機構において、履歴テーブルが参照され、予測が失敗の時に、参照されたエントリの有用性順位を低くすることにより、予測テーブルから、性能向上への寄与が小さいエントリが消え、相対的に性能向上への寄与が大きいエントリが履歴テーブルに残るようになるため、プロセッサの性能を向上させることができる。
さらに、本発明は、分岐/値予測機構において、参照され、予測が正しかった時に、参照されたエントリの有用性順位を高め、予測失敗の時に、参照されたエントリの有用性順位を低くすることにより、履歴テーブルから、性能向上への寄与が小さいエントリが消え、相対的に性能向上への寄与が大きいエントリが予測テーブルに残るようになるため、プロセッサの性能を向上させることができる。
さらに、本発明は、分岐/値予測機構において、予測が正しかった時は、予測を行なわなかった時に比べて減少するサイクル数に応じて有用性順位を高める。これにより、履歴テーブルから、性能向上への寄与が大きいエントリは残りやすくなり、プロセッサの性能を向上させることができる。
【0005】
【発明の実施の形態】
図1は本発明による第一から第三の実施例を示す分岐/値予測回路のブロック図である。説明の便宜上、図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からなる。
【0006】
図1の実施例は、4-wayセットアソシアティブ方式であるので、ここでは、有用性順位を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番目のエントリがそれぞれway0〜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-outof-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が一致したが、実行履歴から生成された予測値と命令の実行結果が一致しなかった場合(予測正答信号 207 が 0の場合)は、履歴テーブル内の予測に使用したエントリの有用性順位を変更しない。履歴テーブルの内容は予測アルゴリズムにもとづいて更新する。
(1c) 履歴テーブルを参照したが、履歴テーブルa〜dから読み出されたタグのいずれとも参照アドレスの上位24ビット 220が一致せず、かつ、予測と命令の実行結果が一致した場合(予測正答信号 207 が 1 の場合)履歴テーブルへの登録は不要であるため、何もしない。
(1d) 履歴テーブルを参照したが、履歴テーブルa〜dから読み出されたタグのいずれとも参照アドレスの上位24ビット 220が一致せず、かつ、予測と命令の実行結果が一致しなかった場合(予測正答信号 207 が 0 の場合)、予測アルゴリズムにもとづいて、実行ユニットの出力する実行結果を履歴テーブルに格納する。以後、この動作を新規登録と呼ぶ。
新規登録の際、格納場所決定回路は、履歴テーブルa〜d 311〜314の格納可能なエントリのバリッドビットが「無効」であるかどうかを調べる。バリッドビットが「無効」であるエントリがあれば、そのエントリに書き込みが行なわれる様に、履歴テーブル書き込み制御信号 340をセットする。
バリッドビットが「無効」であるエントリがない場合、履歴テーブルを参照した際に用いたアドレスを用いて有用性順位テーブル110から有用性順位を読み出し、有用性順位の最も低いエントリの履歴テーブル側へ書き込みが行なわれる様に履歴テーブル書き込み制御信号 340をセットする。
【0007】
図2にway数が4である時の有用性順位生成回路の第一の実施例を示す。有用性順位生成回路は、新規登録時の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段階低くなる。
(1b)の場合、予測正答信号 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が一致したが、実行履歴から生成された予測値と命令の実行結果が一致しなかった場合(予測正答信号 207 が 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が一致したが、実行履歴から生成された予測値と命令の実行結果が一致しなかった場合(予測正答信号 207 が 0の場合)は、履歴テーブル内の予測に使用したエントリの有用性順位を低くする。履歴テーブルの内容は予測アルゴリズムにもとづいて更新する。
(3c) 履歴テーブルを参照したが、履歴テーブルa〜dから読み出されたタグのいずれとも参照アドレスの上位24ビット 220が一致せず、かつ、予測と命令の実行結果が一致した場合(予測正答信号 207 が 1 の場合)履歴テーブルへの登録は不要であるため、何もしない。
(3d) 履歴テーブルを参照したが、履歴テーブルa〜dから読み出されたタグのいずれとも参照アドレスの上位24ビット 220が一致せず、かつ、予測と命令の実行結果が一致しなかった場合(予測正答信号 207 が 0 の場合)、予測アルゴリズムにもとづいて、実行ユニットの出力する実行結果を履歴テーブルに格納する(新規登録)。
以上に示した様に動作することで、分岐/値予測機構において、参照頻度が高く、かつ、予測正答率が高いエントリの有用性順位が高くなる。また、参照頻度が高く、予測正答率が低いエントリの有用性順位が低くなる。すなわち、性能向上への寄与が小さいエントリの有用性順位が低くなる。したがって、履歴テーブルから、性能向上への寄与が小さいエントリが消え、相対的に性能向上への寄与が大きいエントリが履歴テーブルに残り、予測正答率を高くすることができる。
図6にway数が4である時の有用性順位生成回路の第四の実施例を示す。図5に第四の実施例における分岐/値予測回路のブロック図を示す。
【0008】
この有用性順位生成回路は次に示す4つのうち、いずれかの動作を行なう。
(4a) 履歴テーブルを参照し、履歴テーブルa〜dから読み出されたタグのいずれかと参照アドレスの上位24ビット 220が一致し、さらに、実行履歴から生成された予測値と命令の実行結果が一致した場合(予測正答信号 207 が 1の場合)は、履歴テーブル内の予測に使用したエントリの有用性順位を高くする。この時、実行ユニット100が出力する予測を行なったことによって減少するサイクル数が大きい時は信号222が1となり、予測を行なったことによって減少するサイクル数が小さい時は信号222が0となる。有用性順位生成回路は、予測を行なったことによって減少するサイクル数が大きい時(信号222が1の時)は、履歴テーブル内の予測に使用したエントリの有用性順位を最も高くする。これに対して、予測を行なったことによって減少するサイクル数が小さい時(信号222が0の時)は、履歴テーブル内の予測に使用したエントリの有用性順位を2番目に高くする。ただし、予測に使用したエントリの有用性順位が元々1番目である時は、有用性順位を変更しない。履歴テーブルの内容は予測アルゴリズムにもとづいて更新する。
(4b) 履歴テーブルを参照し、履歴テーブルa〜dから読み出されたタグのいずれかと参照アドレスの上位24ビット 220が一致したが、実行履歴から生成された予測値と命令の実行結果が一致しなかった場合(予測正答信号 207 が 0の場合)は、有用性順位を変更しない。履歴テーブルの内容は予測アルゴリズムにもとづいて更新する。
(4c) 履歴テーブルを参照したが、履歴テーブルa〜dから読み出されたタグのいずれとも参照アドレスの上位24ビット 220が一致せず、かつ、予測と命令の実行結果が一致した場合(予測正答信号 207 が 1 の場合)履歴テーブルへの登録は不要であるため、何もしない。
(4d) 履歴テーブルを参照したが、履歴テーブルa〜dから読み出されたタグのいずれとも参照アドレスの上位24ビット 220が一致せず、かつ、予測と命令の実行結果が一致しなかった場合(予測正答信号 207 が 0 の場合)、予測アルゴリズムにもとづいて、実行ユニットの出力する実行結果を履歴テーブルに格納する(新規登録)。
以上に示した様に動作することで、分岐/値予測機構において、参照頻度が高く、予測正答率が高いエントリであって、予測が正しかった時に減少するサイクル数の大きいものほど有用性順位が高くなる。これにより、履歴テーブルから、性能向上への寄与が大きいエントリほど残りやすく、性能向上の小さいエントリは消えやすくなる。このため、プロセッサの性能を高めることができる。
【0009】
【発明の効果】
本発明は以上のように構成されているので、以下に示すように分岐/値予測機構の予測正答率を高める効果がある。
まず第1の効果は、(a)予測の為に参照され、かつ、予測が正解である時のみ、予測に使用したエントリの有用性順位を高くする (b)履歴テーブルに命令の実行結果を新規登録する際、有用性順位が最も低いエントリに登録を行なう ことにより、予測的中率を向上させることができることである。
第2の効果は、(a)予測の為に参照され、かつ、予測が失敗である時のみ、予測に使用したエントリの有用性順位を低くする (b)履歴テーブルに命令の実行結果を新規登録する際、有用性順位が最も低いエントリに登録を行なう ことにより、予測的中率を向上させることができることである。
第3の効果は、(a)新規登録時と予測の為に参照され、かつ、予測が正解である時は、予測に使用したエントリの有用性順位を高くする (b)新規登録時と予測の為に参照され、かつ、予測が失敗である時に、予測に使用したエントリの有用性順位を低くする (c)履歴テーブルに命令の実行結果を新規登録する際、有用性順位が最も低いエントリに登録を行なう ことにより、予測的中率を向上させることができることである。
第4の効果は、(a)新規登録時と予測の為に参照され、予測が正解であり、予測が正しかった時に減少するサイクル数の大きいほど予測に使用したエントリの有用性順位を高くする (b)履歴テーブルに命令の実行結果を新規登録する際、有用性順位が最も低いエントリに登録を行なう ことにより、プロセッサの性能を高めることができることである。
【図面の簡単な説明】
【図1】本発明の実施例を示すブロック図。
【図2】4-wayセットアソシアティブ方式の有用性順位生成回路の第1の実施例。
【図3】4-wayセットアソシアティブ方式の有用性順位生成回路の第2の実施例。
【図4】4-wayセットアソシアティブ方式の有用性順位生成回路の第3の実施例。
【図5】本発明の第4の実施例を示すブロック図。
【図6】4-wayセットアソシアティブ方式の有用性順位生成回路の第4の実施例。
【図7】パイプライン方式のプロサッサにおける分岐予測機構による高速化の例。
【符号の説明】
100 命令実行ユニット
110 有用性順位テーブル
111 タグヒット検出回路
115 実行結果選択回路
116 予測値生成回路
117 予測判定回路
118 格納場所決定回路
119 有用性順位生成回路
120 タグヒットデコード回路
122 参照/書き込みアドレスレジスタ
311 実行結果の履歴テーブルa
312 実行結果の履歴テーブルb
313 実行結果の履歴テーブルc
314 実行結果の履歴テーブルd
321 タグ一致検出回路a
322 タグ一致検出回路b
323 タグ一致検出回路c
324 タグ一致検出回路d。
Claims (5)
- 命令を実行するための1つまたは複数の命令実行ユニットと、過去に実行された命令の実行結果から、現在実行中の命令の実行結果の予測値を生成する予測手段を含むプロセッサであって、
前記命令実行ユニットは、前記予測手段の出力する命令の実行結果の予測値を用いて命令を実行し、
前記予測手段は、過去に実行された命令の実行結果を、2つ以上の格納場所から選択して格納可能な実行結果の履歴テーブルと、前記履歴テーブルに格納された過去に実行された命令の実行結果の間の、有用性の順位を格納する有用性順位テーブルと、前記履歴テーブルから読み出された過去に実行した命令の実行結果から、現在実行中の命令の実行結果を予測するための予測値生成手段と、実行結果を予測した命令を実際に実行した結果、前記予測手段の出力した予測値が正しかったか否かを判定する予測判定手段と、前記履歴テーブルに格納する場所を決定する格納場所決定手段と、前記有用性順位テーブルに書き込まれる有用性順位を生成する有用性順位生成手段とを含み、
前記予測手段は、前記履歴テーブルの内容を用いて前記予測手段が現在実行中の命令の実行結果の予測値を生成し、
前記予測判定手段が予測値と、現在実行中の命令の実行結果とが同じであることを示す時に、有用性順位生成手段は、前記予測値生成手段の入力となった実行結果の履歴テーブルの情報が有用であることを示す様に、前記有用性順位テーブル内の有用性順位を上げ、
前記予測判定手段が予測値と、現在実行中の命令の実行結果とが異なることを示す時に、前記有用性順位テーブル内の有用性順位を変更しないことを特徴とするプロセッサ。 - 命令を実行するための1つまたは複数の命令実行ユニットと、過去に実行され命令の実行結果から、現在実行中の命令の実行結果の予測値を生成する予測手段を含むプロセッサであって、
前記命令実行ユニットは、前記予測手段の出力する命令の実行結果の予測値を用いて命令を実行し、
前記予測手段は、過去に実行された命令の実行結果を、2つ以上の格納場所から選択して格納可能な実行結果の履歴テーブルと、前記履歴テーブルに格納された過去に実行された命令の実行結果の間の、有用性の順位を格納する有用性順位テーブルと、前記履歴テーブルから読み出された過去に実行した命令の実行結果から、現在実行中の命令の実行結果を予測するための予測値生成手段と、実行結果を予測した命令を実際に実行した結果、前記予測手段の出力した予測値が正しかったか否かを判定する予測判定手段と、前記履歴テーブルに格納する場所を決定する格納場所決定手段と、前記有用性順位テーブルに書き込まれる有用性順位を生成する有用性順位生成手段とを含み、
前記予測手段は、前記履歴テーブルの内容を用いて前記予測手段が現在実行中の命令の実行結果の予測値を生成し、
前記予測判定手段が予測値と、現在実行中の命令の実行結果とが異なることを示す時に、有用性順位生成手段は、前記予測値生成手段の入力となった実行結果の履歴テーブルの情報が有用ではないことを示す様に、前記有用性順位テーブル内の有用性順位を下げ、
前記予測判定手段が予測値と、現在実行中の命令の実行結果とが同じであることを示す時に、前記有用性順位テーブル内の有用性順位を変更しないことを特徴とするプロセッサ。 - 命令を実行するための1つまたは複数の命令実行ユニットと、過去に実行された命令の実行結果から、現在実行中の命令の実行結果の予測値を生成する予測手段を含むプロセッサであって、
前記命令実行ユニットは、前記予測手段の出力する命令の実行結果の予測値を用いて命令を実行し、
前記予測手段は、過去に実行された命令の実行結果を、2つ以上の格納場所から選択して格納可能な実行結果の履歴テーブルと、前記履歴テーブルに格納された過去に実行された命令の実行結果の間の、有用性の順位を格納する有用性順位テーブルと、前記履歴テーブルから読み出された過去に実行した命令の実行結果から、現在実行中の命令の実行結果を予測するための予測値生成手段と、実行結果を予測した命令を実際に実行した結果、前記予測手段の出力した予測値が正しかったか否かを判定する予測判定手段と、前記履歴テーブルに格納する場所を決定する格納場所決定手段と、前記有用性順位テーブルに書き込まれる有用性順位を生成する有用性順位生成手段とを含み、
前記予測手段は、前記履歴テーブルの内容を用いて前記予測手段が現在実行中の命令の実行結果の予測値を生成し、
前記予測判定手段が予測値と、現在実行中の命令の実行結果とが同じであることを示す時に、有用性順位生成手段は、前記予測値生成手段の入力となった実行結果の履歴テーブルの情報が有用であることを示す様に、前記有用性順位テーブル内の有用性順位を上げ、
前記予測判定手段が予測値と、現在実行中の命令の実行結果とが異なることをす時に、有用性順位生成手段は、前記予測値生成手段の入力となった実行結果の履歴テーブルの情報が不要であることを示す様に、前記有用性順位テーブル内の有用性順位を下げることを特徴とするプロセッサ。 - 命令を実行するための1つまたは複数の命令実行ユニットと、過去に実行された命令の実行結果から、現在実行中の命令の実行結果の予測値を生成する予測手段を含むプロセッサであって、
前記命令実行ユニットは、前記予測手段の出力する命令の実行結果の予測値を用いて命令を実行し、
予測値を用いて命令を実行する際に、予測を行ない、かつ、予測が正しかった場合に減少するサイクル数と、予測を行ない、かつ、予測が正しくなかった場合に増加するサイクル数を判定する予測成果判定手段を含み、
前記予測手段は、過去に実行された命令の実行結果を、2つ以上の格納場所から選択して格納可能な実行結果の履歴テーブルと、前記履歴テーブルに格納された過去に実行された命令の実行結果の間の、有用性の順位を格納する有用性順位テーブルと、前記履歴テーブルから読み出された過去に実行した命令の実行結果から、現在実行中の命令の実行結果を予測するための予測値生成手段と、実行結果を予測した命令を実際に実行した結果、前記予測手段の出力した予測値が正しかったか否かを判定する予測判定手段と、前記履歴テーブルに格納する場所を決定する格納場所決定手段と、前記有用性順位テーブルに書き込まれる有用性順位を生成する有用性順位生成手段とを含み、
前記予測手段は、前記履歴テーブルの内容を用いて前記予測手段が現在実行中の命令の実行結果の予測値を生成し、
前記予測判定手段が予測値と、現在実行中の命令の実行結果とが同じであることを示す時に、有用性順位生成手段は、前記予測値生成手段の入力となった実行結果の履歴テーブルの情報が有用であることを示す様に、予測成果判定手段の示す減少するサイクル数が大きい程、前記有用性順位テーブル内の有用性順位を大きく上げ、
前記予測判定手段が予測値と、現在実行中の命令の実行結果とが異なることを示す時に、前記有用性順位テーブル内の有用性順位を変更しないことを特徴とするプロセッサ。 - 実行結果を予測する命令は分岐命令であることを特徴とする請求項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 JP2002278752A (ja) | 2002-09-27 |
JP3890910B2 true 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) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7831817B2 (en) * | 2003-04-15 | 2010-11-09 | Arm Limited | Two-level branch prediction apparatus |
WO2005114441A2 (en) * | 2004-05-19 | 2005-12-01 | Arc International (Uk) Limited | Microprocessor architecture |
JP4287799B2 (ja) | 2004-07-29 | 2009-07-01 | 富士通株式会社 | プロセッサシステムおよびスレッド切り替え制御方法 |
JP4362096B2 (ja) | 2004-09-30 | 2009-11-11 | 富士通株式会社 | 情報処理装置,リプレース方法,リプレースプログラム及びリプレースプログラムを記録したコンピュータ読取可能な記録媒体 |
US7747088B2 (en) | 2005-09-28 | 2010-06-29 | Arc International (Uk) Limited | System and methods for performing deblocking in microprocessor-based video codec applications |
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
Also Published As
Publication number | Publication date |
---|---|
US20020138236A1 (en) | 2002-09-26 |
US6678638B2 (en) | 2004-01-13 |
JP2002278752A (ja) | 2002-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4980823A (en) | Sequential prefetching with deconfirmation | |
KR102538139B1 (ko) | 공간적 메모리 스트리밍 신뢰 메커니즘 | |
CN101156132B (zh) | 用于预测不对准存储器存取的方法和设备 | |
EP0084114B1 (en) | Instruction prefetching data processing apparatus including a conditional branch instruction predictor | |
US7739477B2 (en) | Multiple page size address translation incorporating page size prediction | |
RU2260838C2 (ru) | Система и способ для предварительной выборки данных в кэш-памяти, основанной на интервале неудач | |
EP2275939B1 (en) | Processor and address translating method | |
US20080052488A1 (en) | Method for a Hash Table Lookup and Processor Cache | |
US7624258B2 (en) | Using computation histories to make predictions | |
US7321954B2 (en) | Method for software controllable dynamically lockable cache line replacement system | |
US5860151A (en) | Data cache fast address calculation system and method | |
US5548739A (en) | Method and apparatus for rapidly retrieving data from a physically addressed data storage structure using address page crossing predictive annotations | |
TW201624289A (zh) | 預取單元、資料預取方法、電腦程式產品以及微處理器 | |
CN101587447A (zh) | 支持事务存储的系统及基于预测的事务执行方法 | |
US11163573B2 (en) | Hierarchical metadata predictor with periodic updates | |
JP3890910B2 (ja) | 命令の実行結果予測装置 | |
JP3812258B2 (ja) | キャッシュ記憶装置 | |
US7437504B2 (en) | Reading a storage medium | |
JP3973129B2 (ja) | キャッシュメモリ装置及びそれを用いた中央演算処理装置 | |
JPH076089A (ja) | データを迅速に検索する方法及び装置 | |
JP2007272681A (ja) | キャッシュメモリ装置及びそのキャッシュラインの入れ替え方法 | |
EP1622001A2 (en) | Branch prediction device and control method thereof | |
EP0296430A2 (en) | Sequential prefetching with deconfirmation | |
KR100517765B1 (ko) | 캐시 메모리 및 그 제어 방법 | |
KR960015231A (ko) | 향상된 어드레스 지정 방법 및 시스템 |
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 |