JPH10333908A - 分岐予測方法 - Google Patents

分岐予測方法

Info

Publication number
JPH10333908A
JPH10333908A JP9142080A JP14208097A JPH10333908A JP H10333908 A JPH10333908 A JP H10333908A JP 9142080 A JP9142080 A JP 9142080A JP 14208097 A JP14208097 A JP 14208097A JP H10333908 A JPH10333908 A JP H10333908A
Authority
JP
Japan
Prior art keywords
branch
instruction
prediction
instructions
entry
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
Application number
JP9142080A
Other languages
English (en)
Inventor
Tetsuya Hara
哲也 原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP9142080A priority Critical patent/JPH10333908A/ja
Priority to US08/968,209 priority patent/US6332190B1/en
Publication of JPH10333908A publication Critical patent/JPH10333908A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 スーパースカラ・プロセッサにおいて分岐予
測の精度を高める。 【解決手段】 分岐命令の予測を行うステップのみなら
ず、分岐命令の実行結果に基づいて分岐命令の実行履歴
(予測情報)を登録、更新する場合にもプログラムカウ
ンタ31にフェッチ・ブロック・アドレスを格納し、こ
れを用いて予測テーブル32のインデックスとする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、複数の命令をプ
リフェッチするプロセッサ、特にスーパースカラ・プロ
セッサにおける分岐予測方法に関する。
【0002】
【従来の技術】パイプライン方式を採用するプロセッサ
では、パイプラインの効率的な利用の為に、命令のプリ
フェッチを行う。これはつまり、現在実行中の命令に続
く命令(以下「次命令」と仮称する)のアドレスが最終
的に決定する前に、次命令を予測してフェッチするもの
である。
【0003】しかし、分岐命令の直後の次命令では予測
が外れることもあり、この場合にはパイプラインに既に
投入した次命令を無効化することとなってパイプライン
処理の効率が低下する。このような分岐によるパイプラ
インの乱れがプロセッサの性能向上を阻む大きな要因と
なっている。
【0004】通常のスカラ・パイプライン・プロセッサ
では、予測精度を向上させてかかるパイプラインの乱れ
を避けるべく、分岐予測方法を導入している。分岐予測
方法の例としては、予測に必要な情報を保持するための
予測テーブルを用いたものがある。予測テーブルはハー
ドウエアによって実現され、次命令の予測に必要な情報
が保持される。
【0005】予測テーブルに登録される情報には分岐方
向(分岐するか否か:taken/not taken)を予測するた
めの情報(例えば分岐実行履歴)だけを保持する方式
(BHT:Branch History Table)や、これに加えて更
に分岐成立時の予測分岐先情報(例えば分岐先アドレス
や分岐先命令)も保持する方式(BTB:Branch Targe
t Buffer)がある。
【0006】図26はBTB方式における分岐予測を説
明する概念図である。パイプラインの命令フェッチステ
ージにおいて、プログラムカウンタ31の値(以下「P
C値」と称す。キャッシュされるべき命令のアドレスを
採る)を用いて命令キャッシュ35にアクセスする。こ
れと同時にそのPC値を用いて予測テーブル32が検索
される。予測テーブル32にこのPC値に対応するエン
トリが存在しない場合には、フェッチされた命令が分岐
命令でなければPC値が通常通り(例えば1だけ)増加
して、実行部37によって当該命令が実行される。フェ
ッチされた命令が分岐命令であるか否かはデコーダ36
によって判断される。
【0007】一方、予測テーブル32にこのPC値に対
応するエントリが存在せず、フェッチされた命令が分岐
命令であれば分岐先アドレス、分岐方向等の実行履歴
を、予測テーブル32のエントリのうち、その分岐命令
のアドレスで指定される箇所に新たに登録する。
【0008】また、予測テーブル32において、フェッ
チされた命令に相当するPC値に対応するエントリが存
在すれば、現在フェッチされている命令は分岐命令であ
るので、このエントリに登録されている分岐方向情報3
22に基づいて分岐方向の予測がなされる。予測判定部
33はセレクタ34の動作を制御し、分岐方向がtaken
であると判定されれば分岐先アドレス323を出力させ
るので、プログラムカウンタ31には分岐先アドレスが
セットされる。分岐方向がnot-taken であると判定され
ればPC値が通常通り(例えば1だけ)増加して、実行
部37によって当該命令が実行される。
【0009】分岐命令が実行部37によって実行される
と、その実行結果と予測判定部33からの分岐予測とを
照合して、登録制御部38が予測のチェックを行う。予
測が間違っていた場合には分岐先アドレスがセットされ
たプログラムカウンタ31のPC値が無効とされ、正し
い命令流における次命令がフェッチされる。また、登録
制御部38は、この照合結果に基づいて予測テーブル3
2の内容を更新する。
【0010】
【発明が解決しようとする課題】スーパースカラ・プロ
セッサは、複数の命令を同時に発行し、また実行するこ
とによって性能を向上させているため、スーパースカラ
・プロセッサにおいて命令のプリフェッチを行えば、分
岐によって生じるパイプラインの乱れはスカラ・プロセ
ッサの場合と比較して大きいと考えられる。
【0011】その第1の理由は、スーパースカラ・プロ
セッサでは論理の複雑化に伴ってパイプラインが深くな
っており、分岐予測がはずれた際の分岐ペナルティはス
カラ・プロセッサの場合と比較して増加することであ
る。また第2の理由は複数の命令が同時に実行されるた
め、命令流の分断によってパイプラインにおいて停止す
るサイクル数の、実行されるすべてのサイクル数に対す
る比が増大するためである。従って、スーパースカラ・
プロセッサでは、スカラ・プロセッサにおいて用いられ
る場合と比較して、精度の高い分岐予測の技術が要求さ
れることになる。
【0012】本発明はかかる要求に応えるべくなされた
もので、スーパースカラ・プロセッサにおける分岐予測
の精度を高める技術を提供することを目的としている。
【0013】
【課題を解決するための手段】この発明のうち請求項1
にかかるものは、複数の命令が同時にフェッチされるプ
ロセッサにおいて、分岐命令の既に実行された結果に基
づく予測情報が格納されたエントリを備える予測テーブ
ルを用いて、未だ実行されていない前記分岐命令の分岐
方向を予測する分岐予測方法であって、同時にフェッチ
される前記複数の命令はフェッチ・ブロックを構成す
る。そして(a)フェッチされた前記複数の命令が、前
記分岐命令である特定命令を少なくとも一つ含む場合
に、前記特定命令の実行に先だって、前記特定命令が含
まれる前記フェッチ・ブロックの先頭のアドレスである
フェッチ・ブロック・アドレスをインデックスとする前
記エントリに対し、前記予測情報を参照する工程と、
(b)前記特定命令の実行後に、前記特定命令の前記結
果に基づいて、前記特定命令が含まれる前記フェッチ・
ブロックのフェッチ・ブロック・アドレスをインデック
スとする前記エントリに対し前記予測情報を格納する工
程とを備える。
【0014】この発明のうち請求項2にかかるものは、
請求項1記載の分岐予測方法であって、前記エントリは
複数のフィールドを有し、前記予測情報は前記複数のフ
ィールドの各々に格納される。
【0015】この発明のうち請求項3にかかるものは、
請求項2記載の分岐予測方法であって、前記特定命令が
同一の前記フェッチ・ブロックに複数存在した場合、前
記予測情報はその対応する前記特定命令のアドレスの順
序に従って前記複数のフィールドに順番に格納される。
【0016】この発明のうち請求項4にかかるものは、
請求項3記載の分岐予測方法であって、前記フェッチ・
ブロックの一つにおける前記特定命令の数が前記エント
リの有する前記複数のフィールドの数よりも多い場合、
その示す分岐成立の確率の高い前記予測情報から優先的
に前記エントリに格納する。
【0017】この発明のうち請求項5にかかるものは、
複数の命令が同時にフェッチされるプロセッサにおい
て、分岐命令の既に実行された結果に基づく予測情報が
格納されたエントリを備える予測テーブルを用いて、未
だ実行されていない前記分岐命令の分岐方向を予測する
分岐予測方法であって、同時にフェッチされる前記複数
の命令はフェッチ・ブロックを構成する。そして(a)
フェッチされた前記複数の命令が、前記分岐命令である
特定命令を少なくとも一つ含む場合に、前記特定命令の
実行に先だって、前記特定命令が含まれる前記フェッチ
・ブロックの先頭のアドレスであるフェッチ・ブロック
・アドレス及び前記特定命令に先立って実行された前記
分岐命令の実行履歴をインデックスとする前記エントリ
に対し、前記予測情報を参照する工程と、(b)前記特
定命令の実行後に、前記特定命令の前記結果に基づい
て、前記特定命令が含まれる前記フェッチ・ブロックの
フェッチ・ブロック・アドレス及び前記特定命令に先立
って実行された前記分岐命令の実行履歴をインデックス
とする前記エントリに対し前記予測情報を格納する工程
とを備える。
【0018】
【発明の実施の形態】
A.発明の前段階の思想:発明の実施の形態の説明に入
る前に、スカラ・プロセッサで用いられている従来の予
測テーブル方式を、単純にスーパースカラ・プロセッサ
へと拡張した場合について考察してみる。
【0019】スーパースカラ・プロセッサは複数の命令
を同時に処理するので、第1の前段階思想として、フェ
ッチされるすべての命令のアドレスをインデックスとし
て予測テーブルのエントリを検索することが考えられ
る。しかし、この方式では予測テーブルには同時にフェ
ッチされる命令の数だけの読み出しポートが必要とな
り、予測テーブルが複雑化する。これは予測テーブル3
2を実現するハードウエアのコストを押し上げる一方、
読み出し速度の低下をも招来する。
【0020】逆に、第2の前段階思想として、同時にフ
ェッチされる命令の一群(以下「フェッチ・ブロック」
と呼ぶ)の先頭命令のアドレス(以下「フェッチ・ブロ
ック・アドレス」と呼ぶ)を予測テーブルのインデック
スとする方式が考えられる。つまりフェッチ・ブロック
一つに対しては単一のエントリが読み出されることにな
る。
【0021】図27及び図28は、同時に4つの命令が
フェッチされる場合における命令I0〜I7のアドレス
と、予測テーブル32におけるインデックス及びインデ
ックスに対応するエントリA1,A2とを、それぞれ示
す概念図である。図27において、命令I0〜I7のア
ドレスの下位4ビットがそれぞれX000〜X111
(X=0又は1)であるとする。すると、同時に四つの
命令がフェッチされるのであるから、図28において予
測テーブル32におけるインデックスとしては下位2ビ
ットがX0,X1であるアドレスを採用することができ
る。ここでは下位2ビットがX0,X1であるアドレス
に対応してそれぞれエントリA1,A2が設けられてい
る。そして分岐命令の実行履歴を登録あるいは更新する
場合には、分岐命令のアドレス(その下位4ビットはX
000〜X111)を用いて予測テーブルにアクセスす
ることにより、エントリA1には命令I0〜I3につい
ての情報を、エントリA2には命令I4〜I7について
の情報を、それぞれ格納することができる。
【0022】図29は分岐命令の実行履歴を登録あるい
は更新する場合の予測テーブルへのアクセスを説明する
概念図である。図29における矢印はデータ格納場所が
指定される様子を示している。分岐命令のアドレスIA
がプログラムカウンタ31に格納され、分岐の実行結果
に基づいた実行履歴が予測テーブル32に格納される。
その際、インデックスとしてはPC値の下位2ビットを
切り捨てた値が用いられ、エントリ内において下位2ビ
ットを以て指定される特定のビットに分岐の実行履歴が
格納される。図29では命令I6が分岐命令であった場
合についての分岐の実行履歴が、斜線で示された部分に
格納されることが示されている。
【0023】一方、予測を行う場合にはフェッチ・ブロ
ック・アドレスFBAの下位2ビットを切り捨てたアド
レスを予測テーブルのインデックスとして用いる。VL
IW(Very Long Instruction Word)方式のプロセッサ
ではフェッチ・ブロック・アドレスと分岐命令のアドレ
スとの相対関係が固定的であって命令流の自由度が低い
ものの、スーパースカラ・プロセッサではフェッチされ
る命令流が動的に変化するので、フェッチ・ブロック・
アドレスと分岐命令のアドレスの相対関係が一対一では
ない。つまりスーパースカラ・プロセッサにおける命令
流の自由度は高く、必ずしも下位2ビットが00である
アドレスが常にフェッチ・ブロック・アドレスとして採
用される訳ではない。つまり同時にフェッチされるべき
4つの命令が常に4ワードの境界に整列している訳では
ない。
【0024】図30は分岐命令の予測を行う場合の予測
テーブル32へのアクセスを説明する概念図である。図
30における矢印はデータ格納場所が指定される様子を
示している。例えば命令I2〜I5の4つの命令が同時
にフェッチされる場合にはフェッチ・ブロック・アドレ
スとしては命令I2のアドレスが採用される。したがっ
て、プログラムカウンタ31の格納するフェッチ・ブロ
ック・アドレスFBAの下位4ビットはX010であ
り、検索されるべき予測テーブルのインデックスはその
下位2ビットがX0であり、エントリA1が検索される
ことになる。
【0025】しかし、エントリA1には命令I0〜I3
についての情報が与えられているのであって、例えば命
令I4が分岐命令であってもその分岐先アドレスを予測
することができない。命令I4についての情報は下位2
ビットがX1であるインデックスに対応したエントリA
2に存在するのである(斜線で示された箇所)。したが
って、PC値の下位2ビットを以てエントリA1の特定
のビットを指定しても、正しい情報を得ることはできな
い。これはつまりフェッチされた命令が4ワードの境界
に対して整列していないことによって予測精度が低下す
ることを意味する。
【0026】逆に、エントリA1においては、命令I1
が分岐命令であってその分岐先の情報が与えられている
かもしれない。そのような場合にはエントリA1の有す
る情報のすべてを信用して予測を行うことはできず、通
常必要なタグ・チェックのみならず、参照されるべき情
報であるか否かについてのチェックも行わなければなら
ない。これはヒット・チェックが複雑化するということ
を意味する。
【0027】次に述べる本発明の実施の形態では、その
基本的思想として、予測のみならず、分岐命令の実行履
歴を登録あるいは更新する際においても予測テーブルに
対してその分岐命令を含むフェッチ・ブロックについて
のフェッチ・ブロック・アドレスを用いてアクセスす
る。なお、図26に示された構成は、実施の形態におい
て用いられるが、後述するように、予測テーブル32の
構成が改良される実施の形態もある。
【0028】B.実施の形態: (B−1)基本的思想. 図1は分岐命令の実行履歴を登録あるいは更新する場合
の予測テーブルへのアクセスを説明する概念図である。
また図2は分岐命令の実行結果を予測する場合の予測テ
ーブルへのアクセスを説明する概念図である。いずれの
場合においても、PC値が採用するフェッチ・ブロック
・アドレスFBAの全体がインデックスとなって予測テ
ーブルにアクセスされる。このように登録あるいは更新
と、予測とのいずれに際しても、同一のフェッチ・ブロ
ック・アドレスを以て予測テーブルにアクセスするの
で、同時にフェッチされるべき4つの命令が常に4ワー
ドの境界に整列していなくても、予測精度が悪化するこ
とはない。しかも予測テーブルに必要なハードウエアが
著しく増大するということもない。
【0029】(B−2)実施の形態1. 図3は実施の形態1にかかる分岐予測方法を示す概念図
であり、連続する複数のPC値1520〜1537及び
これらに対応する命令を対応させて示している。命令B
R1,BR2は分岐命令であり、その他の命令I1〜I
18は分岐命令ではない。命令I1〜I3,BR1は基
本ブロックBB1(PC値1520〜1523)を、命
令I5〜I10は基本ブロックBB2(PC値1524
〜1529)を、命令I11〜I14,BR2は基本ブ
ロックBB3(PC値1530〜1534)を、命令I
16〜I18はその後に続く命令とともに基本ブロック
BB4(PC値1535以降)を、それぞれ構成してい
る。
【0030】PC値1523の分岐命令BR1が分岐す
るときには基本ブロックBB3の先頭であるPC値15
30の命令I11にジャンプし、分岐しないときにはP
C値が一つ多いPC値1524の命令I11(基本ブロ
ックBB2の先頭)に進む。また、PC値1534の分
岐命令BR2が分岐するときには基本ブロックBB4以
降の命令へとジャンプし、分岐しないときにはPC値が
一つ多いPC値1535の命令I16(基本ブロックB
B4の先頭)に進む。
【0031】基本ブロックBB1が実行され、その最終
の命令である分岐命令BR1がフェッチされた場合を考
える。もし分岐命令BR1が実行された結果、分岐が生
じないのであれば、基本ブロックBB2が実行されるこ
とになる。したがって、同時に4つの命令がフェッチさ
れるスーパースカラ・プロセッサではフェッチ・ブロッ
ク・アドレスは1520,1524,1528,153
2,…と変化する。分岐命令BR2がフェッチされた時
のフェッチ・ブロック・アドレスは1532であって、
フェッチ・ブロックFB1は4つの命令I13,I1
4,BR2,I16から構成されることになる。
【0032】一方、分岐命令BR1が実行された結果、
分岐が生じるのであれば、基本ブロックBB3が実行さ
れることになる。したがってフェッチ・ブロック・アド
レスは1520,1530,1534,…と変化する。
分岐命令BR2がフェッチされた時のフェッチ・ブロッ
ク・アドレスは1534であって、フェッチ・ブロック
FB2は4つの命令BR2,I16,I17,I18か
ら構成されることになる。
【0033】ここで注意すべきなのは、分岐命令BR2
の2種の実行履歴(予測時には予測情報となる)が、異
なるインデックスのエントリにおいて格納されることで
ある。図4は分岐命令BR2の予測情報が予測テーブル
32の異なるエントリに格納されている様子を示す概念
図である。分岐命令BR2に先だって実行された分岐命
令BR1の分岐が成立しない場合の、分岐命令BR2の
予測情報QR2aはインデックス1532に対応するエ
ントリに、分岐命令BR2に先だって実行された分岐命
令BR1の分岐が成立する場合の、分岐命令BR2の予
測情報QR2bはインデックス1534に対応するエン
トリに、それぞれ格納されている。従って、スーパース
カラ・プロセッサにおいて動的に変化する命令流毎に予
測情報を個別に格納することができる。したがって、
「A.発明の前段階の思想」で説明された問題点、即ち
フェッチされた命令が4ワードの境界に対して整列して
いないことによって予測精度が低下したり、ヒット・チ
ェックが複雑化することは回避される。
【0034】実施の形態1によれば、そればかりではな
く、分岐相関予測方式を実現していることになる。分岐
相関予測方式とは、T-Y.Yeh and Y.N.Patt, “Alternat
iveImplementation of Two-Level Adaptive Branch Pre
diction”, In Proc, 19thInt .Symp. on Computer Arc
hitecture, pp124-134, June 1992 に紹介されている手
法であり、最近実行された分岐命令の実行結果(分岐方
向)とこれから実行される分岐命令のアドレスとを結合
したものを予測テーブルのインデックスとして用いる。
これは分岐方向が、その分岐命令自身の履歴のみなら
ず、それ以前に実行された分岐の分岐方向(実行パス)
にも相関があるという点に着目した方式である。以下で
はまず、分岐相関予測方式の簡単な例を示した後に、本
実施の形態においてこの方式が実質的に実現されている
ことを説明する。
【0035】図5は分岐相関予測方式を説明するための
プログラムを示す図であって、SPECinteger benchmark
の eqntott の一部分である。if文において条件が成
り立った時に分岐が成立した(taken )とすると、分岐
1と分岐2が成立する場合には必ず分岐3は不成立(no
t-taken )となる。このように、分岐の相関情報が予測
テーブルに加味されることによって、より精度の高い予
測が可能となる。
【0036】翻って本実施の形態についてみれば、イン
デックス1532において格納される分岐命令BR2の
予測情報QR2aは、分岐命令BR1が分岐しない場合
のものであり、インデックス1534において格納され
る分岐命令BR2の予測情報QR2bは、分岐命令BR
1が分岐した場合のものである。したがって、インデッ
クスの値が異なることにより、命令の実行パスに応じた
分岐予測を行うことができる。
【0037】なお、基本ブロックBB2の命令数が4の
倍数であった場合、分岐命令BR2を含むフェッチ・ブ
ロックは、分岐命令BR1の分岐方向に依らずにフェッ
チ・ブロックFB2となる。よってこの場合には分岐相
関予測方式を実質的に実現することはできない。しかし
この場合においても「A.発明の前段階の思想」で説明
された問題点を回避できることは明白である。
【0038】以上のように本実施の形態によれば、ハー
ドウエアの複雑さの増大を伴うことなく、予測精度を向
上させることができる。分岐命令BR1の分岐方向によ
って分岐命令BR2の予測情報が2通り必要となる場合
もあり、予測テーブルを実現するハードウエアが増大す
る可能性もあるが、そのような場合には分岐相関予測に
よってより一層精度の高い予測が可能であるというメリ
ットが得られる。
【0039】但し、予測テーブルに分岐方向の情報のみ
を登録するのであれば、分岐成立時の分岐先情報は別の
手段で与えなければならなくなってしまう。パイプライ
ンにおいて、フェッチされた命令がデコードされる段階
で分岐先アドレスを生成することとすれば、分岐方向の
予測が正しかった場合であっても、分岐成立先の命令を
フェッチするのが遅れてしまい、分岐ペナルティが生じ
てしまう。
【0040】これを回避するため、分岐成立時の分岐先
情報もエントリに登録しておくことが望ましい。図6は
エントリ1つ分において格納される情報の詳細を示す概
念図である。BTB方式のように、タグ、フェッチ・ブ
ロック内でのアドレス、分岐方向の予測情報(分岐の実
行履歴)に加え、分岐先のアドレスあるいは分岐先の命
令についての情報を格納しておくことにより、予測結果
が分岐成立である場合に予測分岐先情報に基づいて次命
令のプリフェッチを行うことができる。したがって分岐
ペナルティを低減することができる。
【0041】(B−3)実施の形態2. 数値計算応用プログラムではないプログラム、例えば事
務用プログラムでは、平均して3〜5命令に1つは分岐
命令である。したがって、同時に4つの命令がフェッチ
されるスーパースカラ・プロセッサでは、1つのフェッ
チ・ブロックが複数の分岐命令を含む確率は低くない。
このため、複数の分岐を同時に予測できることが、予測
精度を向上させるために望ましい。しかし、予測テーブ
ルのエントリ一つに対して一つしか分岐命令の実行履歴
が登録できないのであれば、複数の分岐を同時に予測す
ることができない。
【0042】そこで本実施の形態では、実施の形態1に
対して更に改善を加え、予測テーブルのエントリに複数
のフィールドを設け、一つのエントリに分岐命令の予測
情報を複数登録することができるようにする。
【0043】図7は、実施の形態2における予測テーブ
ル32のエントリの構成を示す概念図である。一つのエ
ントリに対して複数のフィールドF0,F1,…が設け
られており、そのフィールドの各々にはフェッチ・ブロ
ック内でのアドレスと予測情報との対が格納される。
【0044】分岐命令が実行されると、実行履歴(例え
ば分岐先アドレス、分岐方向)からなる予測情報が予測
テーブル32に登録あるいは更新される。これらが格納
されるエントリは、実行された分岐命令が属するフェッ
チ・ブロックの先頭アドレス、即ちフェッチ・ブロック
・アドレスをインデックスとするエントリである。そし
て、このフェッチ・ブロックにおいて複数の分岐命令が
実行された場合には、その実行履歴がフィールドF0,
F1,…に任意に格納される。フェッチ・ブロック内で
のアドレスも格納されるので、いずれのフィールドにい
ずれの分岐命令についての予測情報が格納されても混同
されることはない。
【0045】分岐予測時には、命令フェッチ段階におい
て、フェッチ・ブロック・アドレスを用いて命令キャッ
シュ35がアクセスされると共に、このフェッチ・ブロ
ック・アドレスをインデックスとして予測テーブル32
の検索が行われる。そしてこのインデックスに該当する
エントリが存在した場合にはエントリから予測情報を読
み出すことになる。このとき、複数のフィールドにおい
て予測情報が格納されている場合には、フェッチ・ブロ
ック内でのアドレスや、実行履歴に基づいて分岐方向を
予測することになる。
【0046】例えば、2つの分岐命令についての予測情
報が同一のエントリに格納されている場合について考え
る。両方とも分岐しないと予測されているのであれば、
次命令をフェッチするためにはPC値を4増加させて得
られるフェッチ・ブロック・アドレスに対応した命令群
がプリフェッチされるべきである(not-taken 予測)。
また、いずれか一方が分岐すると予測されているのであ
れば、分岐成立が予測されている方の分岐先の命令を次
命令とすべきである。もしも両方の分岐命令について分
岐成立と予測されているのであれば、アドレスの若い方
の分岐命令の分岐先の命令を次命令とすべきである。ア
ドレスの若い方の分岐命令について分岐が成立すれば、
もう一方の分岐命令が実行される確率(アドレスの若い
方の分岐命令についての分岐先命令が、同一のフェッチ
・ブロックに属するもう一方の分岐命令である確率)は
非常に小さい為である。かかる判断は予測判定部33に
おいて行うことができる。
【0047】そして分岐命令が実行され、その実行結果
と予測結果とが照合されて予測のチェックが行われる。
予測が間違っていた場合には分岐先アドレスがセットさ
れたプログラムカウンタ31のPC値を無効とし、正し
い命令流における次命令をフェッチする。また、この照
合結果に基づいて予測テーブルの内容が登録制御部38
によって更新される。
【0048】本実施の形態ではフィールドが増大する分
だけ予測テーブルに要求される容量は増大するが、デコ
ーダ等の複雑化を招くことなく複数の分岐に対して予測
を行うことができる。
【0049】(B−4)実施の形態3. 一般に分岐予測の手順は予測テーブルへのアクセス、読
み出された予測情報に基づいた分岐予測、次命令の設定
の順に進む。分岐ペナルティを小さくするためにはこれ
らの処理をサイクル1つ分(パイプラインの各段階を規
定する期間)で行う必要がある。予測テーブルは通常、
メモリを用いて実現されるので、アクセス時間がかか
り、予測情報を読み出した後の処理をできるだけ短縮し
ないと、分岐予測の処理はプロセッサのサイクルを長く
するクリティカルパスとなってしまう恐れがある。
【0050】実施の形態2においては、同一のフェッチ
・ブロックに属する2つの分岐命令の両方について分岐
成立と予測されている場合に、アドレスの若い方の分岐
命令の分岐先の命令を次命令とするという判断が必要と
なる。つまりフェッチ・ブロック内でのアドレスの大小
比較を行わなければならず、処理時間が増加する可能性
もある。
【0051】図8は一つのフェッチ・ブロックFB4を
構成する4つの命令BR5,BR6,BR7,I22を
示す概念図である。これらの命令はこの順にそのPC値
が1544〜1547である。命令BR5〜BR7は分
岐命令であって、命令I22は分岐命令ではない。
【0052】図9はエントリにおけるフィールドの数が
2つである予測テーブルにおいて、インデックスが15
44であるエントリのフィールドF0,F1に既に分岐
命令BR5,BR6に関する予測情報QR5,QR6が
それぞれ格納されている様子を示している。
【0053】このような状態において、分岐命令BR7
についての予測情報QR7を同一のエントリに格納しな
ければならなくなった場合には、フィールドF0,F1
のいずれか一方にこれを格納することになる。予測情報
QR7をフィールドF1に格納すれば、予測情報QR6
が失われることになる(図10)。逆に予測情報QR7
をフィールドF0に格納すれば、予測情報QR5が失わ
れることになる(図11)。図10及び図11を比較す
れば、複数のフィールドに配列される分岐命令同士のア
ドレスの大小関係は逆であり、全ての分岐命令BR5〜
BR7について分岐成立と予測されている場合に、アド
レスの若い方の分岐命令の分岐先の命令を次命令とする
という判断が必要となる。
【0054】このような問題は、エントリ一つあたりの
フィールドが、分岐命令が同一のフェッチ・ブロックに
おいて存在する分岐命令の数だけ備えられていても生じ
る。図12は一つのフェッチ・ブロックFB3を構成す
る4つの命令BR3,I20,BR4,I21を示す概
念図である。これらの命令はこの順にそのPC値が15
40〜1543である。命令BR3,BR4は分岐命令
であって、命令I20,I21は分岐命令ではない。
【0055】図13はエントリにおけるフィールドの数
が2つである予測テーブルにおいて、インデックスが1
540であるエントリのフィールドF0に、既に分岐命
令BR4に関する予測情報QR4が格納されている様子
を示している。このような状態において、分岐命令BR
3についての予測情報QR3を同一のエントリに格納し
なければならなくなった場合には、フィールドF0,F
1のいずれか一方にこれを格納することになる。予測情
報QR3をフィールドF0に格納すれば、複数の分岐命
令についての予測を処理できない(図14)。逆に予測
情報QR3をフィールドF1に格納しても、フェッチ・
ブロック内でのアドレスの大小比較を行わなければなら
ない(図15)。つまりフェッチ・ブロックにおいて存
在し得る分岐命令数だけ、エントリにおいてフィールド
を設けても、上述の問題点は解消されはしない。
【0056】本実施の形態は同一のフェッチ・ブロック
に属する2つの分岐命令の両方について分岐成立と予測
されている場合における優先度を、フェッチ・ブロック
内でのアドレスの大小比較ではなく、フィールドの位置
によって決定することにより処理時間の短縮を図る。
【0057】図16は2つの分岐命令BR3,BR4を
含むフェッチ・ブロックFB3が実行される場合に、エ
ントリ一つあたり4つのフィールドF0〜F3を有する
予測テーブル32に対して、分岐命令BR3,BR4の
予測情報QR3,QR4が格納される様子を示す概念図
である。このように同一のフェッチ・ブロックFB3に
おいて2つの分岐命令BR3,BR4が存在する場合、
これらに対する予測情報はインデックスが1540であ
る同一エントリに格納される。
【0058】本実施の形態においてはフェッチ・ブロッ
ク内でのアドレスが若い分岐命令ほどフィールドの番号
の若い方へと格納される。例えばPC値が1540であ
る分岐命令BR3についての予測情報QR3はフィール
ドF0に、PC値が1542である分岐命令BR4につ
いての予測情報QR4はフィールドF2に、それぞれ格
納される。
【0059】ところで既述のように、分岐命令の出現頻
度に鑑みれば、同時に4つの命令をフェッチするスーパ
ースカラ・プロセッサではフェッチ・ブロック内に複数
の分岐を含む可能性は低くないものの、4つの命令の全
てが分岐命令であるという可能性は極めて少ない。従っ
て、予測テーブルのエントリにおけるフィールドの数は
4つも必要ではない。しかしフィールド数を減らす場合
には、予測情報の登録、更新については図17〜図21
を用いて以下に示されるような格納アルゴリズムを用い
ることが望ましい。例としてインデックスが1544で
あって2つのフィールドF0,F1を有するエントリ
が、3つの分岐命令BR5〜BR7を有するフェッチ・
ブロックFB4(図8)に対応しており、このエントリ
に分岐命令BR5〜BR7の予測情報QR5〜QR7が
格納される場合を示す。
【0060】全てのフィールドが空きのとき;エント
リにおいて最も番号の若いフィールドへ予測情報を格納
する。図17で示されるように全てのフィールドF0,
F1が空きの状態に対して、予測情報QR6を格納する
場合には、予測情報QR6は図18に示されるようにフ
ィールドF0へ格納される。
【0061】同一の分岐命令に対しての予測情報が更
新されるとき;既に格納されていた予測情報のフィール
ドにおいて、予測情報が更新される。図18に示される
ようにフィールドF0に格納されていた予測情報QR6
が、分岐命令BR6の実行によって更新される場合に
は、予測情報QR6はフィールドF0において更新され
る(図18)。
【0062】フィールドに空きがあり、既に格納され
ていた予測情報に対応する分岐命令よりもアドレスの大
きな分岐命令についての予測情報が登録されるとき;既
に格納されていた予測情報が格納されていたフィールド
よりも番号の多い空きフィールドへと、新たな分岐命令
についての予測情報を格納する。図18に示された状態
ではPC値が1545である分岐命令BR6についての
予測情報QR6がフィールドF0に格納されているの
で、PC値が1546である分岐命令BR7についての
予測情報QR7は、それまで空いていたフィールドF1
に格納される(図19)。
【0063】フィールドに空きがあり、既に格納され
ていた予測情報に対応する分岐命令よりもアドレスの小
さな分岐命令についての予測情報が登録されるとき;既
に格納されていた予測情報は、それが格納されていたフ
ィールドからそのフィールドよりも番号の大きな空きフ
ィールドへと移動する。そして新たな分岐命令について
の予測情報を、それぞれ以前に予測情報が格納されてい
たフィールドへ格納する。図18に示された状態ではP
C値が1545である分岐命令BR6についての予測情
報QR6がフィールドF0に格納されているので、PC
値が1544である分岐命令BR5についての予測情報
QR5はフィールドF0に格納される。但しその前に、
予測情報QR6はフィールドF0からフィールドF1へ
と格納場所が移動している(図20)。
【0064】フィールドに空きがなく、新たな分岐命
令についての予測情報が登録されるとき;格納されるべ
き複数の予測情報に対応する複数の分岐命令のうち、フ
ィールド数分だけ選択する。選択された予測情報は、対
応する分岐命令のアドレスの若い順にフィールドの番号
の若い順に格納される。例えば図20に示された状態に
おいて予測情報QR7も格納されるべき候補となった場
合、予測情報QR5〜QR7のうちのいずれか2つがエ
ントリに格納されることになる。図19のように予測情
報QR6,QR7を選択することもできるし、図21の
ように予測情報QR5,QR7を選択することもでき
る。しかしフィールドに対するこれらの格納順序はアド
レスによって決定される。
【0065】このように予測情報を登録あるいは更新す
ることにより、予測時においてはフィールドの配置され
た順に優先的に分岐成立予測を行うことができる。この
際にはフェッチ・ブロック内でのアドレスの大小比較を
行う必要がない。従って命令フェッチ段階における次命
令のプリフェッチを迅速に行うことができる。
【0066】勿論、かかる優先順位の元に複数の分岐命
令の予測情報を格納するのには相当の時間が必要である
かもしれない。しかし、予測時とは異なり、登録あるい
は更新時における予測情報の格納においてかかる時間が
パイプラインのサイクル時間を延ばすようなクリティカ
ルパスとなることは確率的に非常に低い。なぜならば、
同じ分岐命令についての予測情報が引き続いて参照され
ることはほとんどないためである。よって分岐命令につ
いての予測情報の更新は、再び同一の分岐命令について
予測テーブルにアクセスされるまでの間に行えば足り、
これはパイプラインの処理に大きな影響を与えるもので
はない。
【0067】以上のようにこの実施の形態によれば、フ
ィールドの位置が予測の優先順位を示しているので、フ
ェッチ・ブロック内でのアドレスの大小比較を行う必要
が無く、同一のフェッチ・ブロックに複数の分岐命令が
存在する場合においても、複数の分岐予測を高速に行う
ことができる。
【0068】(B−5)実施の形態4. 分岐命令のアドレスの順序と、ある分岐命令において分
岐が成立する確率の大小の順序とは一般には一致しな
い。つまり、実施の形態2で説明されたように、2つの
分岐命令についての分岐予測がいずれも分岐成立である
場合において、先の分岐が実行されれば後の分岐命令が
実行されないから先の分岐命令の分岐先を次命令として
採用するということと、後の分岐命令が実行された場合
にその分岐方向がいずれであるかという予測とは別個で
ある。前者はエントリに格納された予測情報から直ちに
決定されるものではなく、先の分岐命令及び後の分岐命
令の両方の予測情報が分岐成立であることを予測判定部
33が認識して初めて決定される事項である一方、後者
は後の分岐命令に対応するフィールドに格納された予測
情報から一義的に得られる事項であるためである。
【0069】したがって、単に分岐命令のアドレスの順
に予測情報をエントリ内に格納するのみでは、予測ペナ
ルティが増大する可能性がある。本実施の形態では、分
岐成立の確率が大きい分岐命令についての予測情報をエ
ントリに残しておく。
【0070】例えば、実施の形態3におけるの処理に
おいて、図20に示されたような格納状態にある場合に
分岐命令BR7が実行されれば、その実行結果をどのよ
うに扱うかが分岐成立の確率に基づいて判断される。も
しも分岐命令BR7が実行された結果が分岐成立であれ
ば、その実行された命令流における分岐命令BR7につ
いての分岐履歴は予測テーブルにそれまで存在しなかっ
たのであるから分岐が成立する確率は1であり、新たに
予測情報QR7を登録する。
【0071】そしてその場合には、予測情報QR5,Q
R6のうち、分岐成立の確率が小さい方がエントリから
削除される。予測情報QR5の方が分岐成立の確率が小
さいのであれば、図19のような格納状態を得ることに
なり、予測情報QR6の方が分岐成立の確率が小さいの
であれば、図21のような格納状態を得ることになる。
【0072】また、分岐命令BR7が実行された結果が
分岐不成立であれば、その実行された命令流における分
岐命令BR7についての分岐履歴は予測テーブルにそれ
まで存在しなかったのであるから分岐が成立する確率は
0であり、新たに予測情報QR7を登録せずに、図20
の状態が維持される。
【0073】このように、本実施の形態によれば、分岐
成立の確率にも基づいてフィールドに予測情報を順序付
けて格納するので、分岐ペナルティを抑制できる。
【0074】なお、分岐成立の確率が高くても、これに
対応した予測情報をエントリに格納すべきでない場合も
ある。例えば図20のように予測情報が格納されている
場合において、分岐命令BR7が実行され、その実行結
果が分岐成立であったとしても、分岐命令BR7の実行
される確率自体が非常に低い場合には、予測情報QR7
をエントリに格納しないことによる分岐ペナルティの増
大する確率は低い。例えば分岐命令BR5,BR6の分
岐が成立する確率が非常に高ければ、たとえ分岐命令B
R7の実行結果から分岐が成立する確率が1であって分
岐命令BR5,BR6の分岐確率よりも大であったとし
ても、分岐命令BR7が実行される確率は殆どなく、予
測情報QR7を格納する価値は低い。
【0075】(B−6)実施の形態5. 実施の形態1において紹介した分岐相関予測方式をスー
パースカラ・プロセッサに対して用いて、登録あるいは
更新時に予測テーブルのエントリを選択する際、インデ
ックスとして分岐命令のアドレスを用いたならば、
「A.発明の前段階の思想」で説明された問題点、即ち
フェッチされた命令が整列していないことによる予測精
度の低下や、ヒット・チェックの複雑化という問題は解
決されない。
【0076】図22は分岐命令の実行履歴を登録あるい
は更新する場合の予測テーブル32へのアクセスを説明
する概念図である。分岐命令のアドレスIAはプログラ
ムカウンタ31に格納され、当該分岐命令に先行する他
の分岐命令の実行履歴41と共にインデックスとなる。
このインデックスに対応するエントリにおいて、当該分
岐命令の実行結果が格納され、あるいは実行履歴が更新
される。図23は分岐命令の予測を行う場合の予測テー
ブル32へのアクセスを説明する概念図である。当該分
岐命令を含むフェッチ・ブロックのフェッチ・ブロック
・アドレスFBAはプログラムカウンタ31に格納さ
れ、当該分岐命令に先行する他の分岐命令の実行履歴4
1と共にインデックスとなる。このインデックスに基づ
いた検索によってエントリへのアクセスがなされる。登
録あるいは更新において用いられるインデックスと、予
測時において用いられるインデックスとが異なるので上
記問題点は解決されない。
【0077】本実施の形態では、実施の形態1の思想を
分岐相関予測方式に適用したものである。図24は分岐
命令の実行履歴を登録あるいは更新する場合の予測テー
ブル32へのアクセスを説明する概念図である。実行さ
れた分岐命令のフェッチ・ブロック・アドレスFBAが
プログラムカウンタ31に格納され、これは当該分岐命
令に先行する他の分岐命令の実行履歴41と共にインデ
ックスとなる。このインデックスに対応するエントリに
おいて、当該分岐命令の実行結果が格納され、あるいは
実行履歴が更新される。図25は分岐命令の予測を行う
場合の予測テーブル32へのアクセスを説明する概念図
である。当該分岐命令を含むフェッチ・ブロックのフェ
ッチ・ブロック・アドレスFBAはプログラムカウンタ
31に格納され、当該分岐命令に先行する他の分岐命令
の実行履歴41と共にインデックスとなる。このインデ
ックスに基づいた検索によってエントリへのアクセスが
なされる。登録あるいは更新において用いられるインデ
ックスと、予測時において用いられるインデックスとが
同一であるので、実施の形態1において説明されたのと
同様にして、フェッチされた命令が整列していないこと
による予測精度の低下や、ヒット・チェックの複雑化と
いう問題は解決される。
【0078】勿論、実施の形態2ないし実施の形態4で
示されたように、一つのエントリに複数のフィールドを
設けて、あるいは更に同一エントリ内でのフィールドに
おける予測情報の順序付けを行う事もできる。
【0079】
【発明の効果】この発明のうち請求項1にかかる分岐予
測方法によれば、分岐命令たる特定命令の予測情報は、
特定命令の実行後の登録・更新の際にも、特定命令の実
行前の予測の際にも、その特定命令が構成するフェッチ
・ブロックのフェッチ・ブロック・アドレスをインデッ
クスとしてエントリに格納、あるいは参照される。従っ
て、フェッチされた命令が整列していないことによる予
測精度の低下や、ヒット・チェックの複雑化という問題
は解決される。しかも、同一の特定命令であっても異な
る複数の命令流に存在する場合には、命令流毎にフェッ
チ・ブロックが異なれば、異なる命令流に対しては異な
るエントリに当該特定命令の予測情報が存在することと
なり、分岐相関予測をも行うことができる。
【0080】この発明のうち請求項2にかかる分岐予測
方法によれば、同一のフェッチ・ブロックに特定命令が
複数存在しても予測テーブルにおいてフェッチ・ブロッ
ク・アドレス毎に予測情報を格納されるので、同時にフ
ェッチされる複数の命令において存在する複数の分岐命
令についても分岐予測を行うことができる。
【0081】同一のフェッチ・ブロックにおいて、分岐
成立と予想される特定命令が複数存在したばあい、その
フェッチ・ブロックの実行後の分岐先は、このフェッチ
・ブロックに含まれて分岐成立と予想された特定命令の
うちのアドレスの若いほうの分岐先へ分岐すると予測す
ることが望ましい。アドレスの若い方の分岐命令につい
て分岐が成立すれば、もう一方の分岐命令は実行される
確率(アドレスの若い方の分岐命令についての分岐先命
令が、同一のフェッチ・ブロックに属するもう一方の分
岐命令である確率)は非常に小さい為である。この発明
のうち請求項3にかかる分岐予測方法によれば、予測情
報が格納されているフィールドの位置によって、アドレ
スの若い方の特定命令についての予測情報を知ることが
できるので、上記の分岐先の判断を迅速に行うことがで
きる。
【0082】同一のフェッチ・ブロックにおいて、分岐
成立と予想される特定命令がエントリが有するフィール
ドの数よりも大きい場合、エントリ格納されない予測情
報を決定する必要がある。この発明のうち請求項4にか
かる分岐予測方法によれば、分岐成立の確率にも基づい
てフィールドに予測情報を順序付けて格納するので、分
岐ペナルティを抑制できる。
【0083】この発明のうち請求項5にかかる分岐予測
方法によれば、分岐相関予測を行う分岐予測方法におい
て、請求項1にかかる分岐予測方法の効果を得ることが
できる。
【図面の簡単な説明】
【図1】 本発明の基本的思想を説明する概念図であ
る。
【図2】 本発明の基本的思想を説明する概念図であ
る。
【図3】 本発明の実施の形態1にかかる分岐予測方法
を示す概念図である。
【図4】 予測テーブル32における予測情報の格納の
様子を示す概念図である。
【図5】 分岐相関予測方式を説明するためのプログラ
ムを示す図である。
【図6】 本発明の実施の形態1にかかる分岐予測方法
の変形を示す概念図である。
【図7】 本発明の実施の形態2にかかる分岐予測方法
を示す概念図である。
【図8】 本発明の実施の形態3にかかる分岐予測方法
を示す概念図である。
【図9】 本発明の実施の形態3にかかる分岐予測方法
を示す概念図である。
【図10】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図11】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図12】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図13】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図14】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図15】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図16】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図17】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図18】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図19】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図20】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図21】 本発明の実施の形態3にかかる分岐予測方
法を示す概念図である。
【図22】 本発明の実施の形態5にかかる分岐予測方
法を示す概念図である。
【図23】 本発明の実施の形態5にかかる分岐予測方
法を示す概念図である。
【図24】 本発明の実施の形態5にかかる分岐予測方
法を示す概念図である。
【図25】 本発明の実施の形態5にかかる分岐予測方
法を示す概念図である。
【図26】 BTB方式における分岐予測を説明する概
念図である。
【図27】 発明の前段階の思想を示す概念図である。
【図28】 発明の前段階の思想を示す概念図である。
【図29】 発明の前段階の思想を示す概念図である。
【図30】 発明の前段階の思想を示す概念図である。
【符号の説明】
31 プログラムカウンタ、32 予測テーブル、F
0,F1 フィールド、FB1〜FB4 フェッチ・ブ
ロック、FBA フェッチ・ブロック・アドレス、BR
1〜BR7 分岐命令、QR2a,QR2b,QR3〜
QR7 予測情報。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 複数の命令が同時にフェッチされるプロ
    セッサにおいて、分岐命令の既に実行された結果に基づ
    く予測情報が格納されたエントリを備える予測テーブル
    を用いて、未だ実行されていない前記分岐命令の分岐方
    向を予測する分岐予測方法であって、 同時にフェッチされる前記複数の命令はフェッチ・ブロ
    ックを構成し、 (a)フェッチされた前記複数の命令が、前記分岐命令
    である特定命令を少なくとも一つ含む場合に、前記特定
    命令の実行に先だって、前記特定命令が含まれる前記フ
    ェッチ・ブロックの先頭のアドレスであるフェッチ・ブ
    ロック・アドレスをインデックスとする前記エントリに
    対し、前記予測情報を参照する工程と、 (b)前記特定命令の実行後に、前記特定命令の前記結
    果に基づいて、前記特定命令が含まれる前記フェッチ・
    ブロックのフェッチ・ブロック・アドレスをインデック
    スとする前記エントリに対し前記予測情報を格納する工
    程とを備えた分岐予測方法。
  2. 【請求項2】 前記エントリは複数のフィールドを有
    し、前記予測情報は前記複数のフィールドの各々に格納
    される、請求項1記載の分岐予測方法。
  3. 【請求項3】 前記特定命令が同一の前記フェッチ・ブ
    ロックに複数存在した場合、前記予測情報はその対応す
    る前記特定命令のアドレスの順序に従って前記複数のフ
    ィールドに順番に格納される、請求項2記載の分岐予測
    方法。
  4. 【請求項4】 前記フェッチ・ブロックの一つにおける
    前記特定命令の数が前記エントリの有する前記複数のフ
    ィールドの数よりも多い場合、その示す分岐成立の確率
    の高い前記予測情報から優先的に前記エントリに格納す
    る、請求項3記載の分岐予測方法。
  5. 【請求項5】 複数の命令が同時にフェッチされるプロ
    セッサにおいて、分岐命令の既に実行された結果に基づ
    く予測情報が格納されたエントリを備える予測テーブル
    を用いて、未だ実行されていない前記分岐命令の分岐方
    向を予測する分岐予測方法であって、 同時にフェッチされる前記複数の命令はフェッチ・ブロ
    ックを構成し、 (a)フェッチされた前記複数の命令が、前記分岐命令
    である特定命令を少なくとも一つ含む場合に、前記特定
    命令の実行に先だって、前記特定命令が含まれる前記フ
    ェッチ・ブロックの先頭のアドレスであるフェッチ・ブ
    ロック・アドレス及び前記特定命令に先立って実行され
    た前記分岐命令の実行履歴をインデックスとする前記エ
    ントリに対し、前記予測情報を参照する工程と、 (b)前記特定命令の実行後に、前記特定命令の前記結
    果に基づいて、前記特定命令が含まれる前記フェッチ・
    ブロックのフェッチ・ブロック・アドレス及び前記特定
    命令に先立って実行された前記分岐命令の実行履歴をイ
    ンデックスとする前記エントリに対し前記予測情報を格
    納する工程とを備えた分岐予測方法。
JP9142080A 1997-05-30 1997-05-30 分岐予測方法 Pending JPH10333908A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP9142080A JPH10333908A (ja) 1997-05-30 1997-05-30 分岐予測方法
US08/968,209 US6332190B1 (en) 1997-05-30 1997-11-12 Branch prediction method using a prediction table indexed by fetch-block address

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9142080A JPH10333908A (ja) 1997-05-30 1997-05-30 分岐予測方法

Publications (1)

Publication Number Publication Date
JPH10333908A true JPH10333908A (ja) 1998-12-18

Family

ID=15306980

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9142080A Pending JPH10333908A (ja) 1997-05-30 1997-05-30 分岐予測方法

Country Status (2)

Country Link
US (1) US6332190B1 (ja)
JP (1) JPH10333908A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006006613A1 (en) * 2004-07-08 2006-01-19 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table
JP2010505210A (ja) * 2006-09-27 2010-02-18 クゥアルコム・インコーポレイテッド 同時に予測された分岐命令を解決するための方法および装置

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030131345A1 (en) * 2002-01-09 2003-07-10 Chris Wilkerson Employing value prediction with the compiler
TWI305323B (en) * 2004-08-23 2009-01-11 Faraday Tech Corp Method for verification branch prediction mechanisms and readable recording medium for storing program thereof
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
US20080209190A1 (en) * 2007-02-28 2008-08-28 Advanced Micro Devices, Inc. Parallel prediction of multiple branches
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9430241B2 (en) 2012-06-15 2016-08-30 International Business Machines Corporation Semi-exclusive second-level branch target buffer
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US10459817B2 (en) * 2017-01-18 2019-10-29 International Business Machines Corporation Evaluating performance improvement of executing instructions in a first processor over execution on a second processor
US10853075B2 (en) * 2018-09-10 2020-12-01 Advanced Micro Devices, Inc. Controlling accesses to a branch prediction unit for sequences of fetch groups

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0769810B2 (ja) 1988-11-25 1995-07-31 日本電気株式会社 マイクロプロセッサ
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US5822575A (en) * 1996-09-12 1998-10-13 Advanced Micro Devices, Inc. Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction
US5774710A (en) * 1996-09-19 1998-06-30 Advanced Micro Devices, Inc. Cache line branch prediction scheme that shares among sets of a set associative cache
US5794028A (en) * 1996-10-17 1998-08-11 Advanced Micro Devices, Inc. Shared branch prediction structure
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US5822576A (en) * 1997-03-26 1998-10-13 International Business Machines Corporation Branch history table with branch pattern field
US5974542A (en) * 1997-10-30 1999-10-26 Advanced Micro Devices, Inc. Branch prediction unit which approximates a larger number of branch predictions using a smaller number of branch predictions and an alternate target indication

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006006613A1 (en) * 2004-07-08 2006-01-19 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table
US7500088B2 (en) 2004-07-08 2009-03-03 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table
JP2010505210A (ja) * 2006-09-27 2010-02-18 クゥアルコム・インコーポレイテッド 同時に予測された分岐命令を解決するための方法および装置
JP2013122774A (ja) * 2006-09-27 2013-06-20 Qualcomm Inc 同時に予測された分岐命令を解決するための方法および装置

Also Published As

Publication number Publication date
US6332190B1 (en) 2001-12-18

Similar Documents

Publication Publication Date Title
JPH10333908A (ja) 分岐予測方法
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
US5367703A (en) Method and system for enhanced branch history prediction accuracy in a superscalar processor system
JP3599409B2 (ja) 分岐予測装置
US5625837A (en) Processor architecture having out-of-order execution, speculative branching, and giving priority to instructions which affect a condition code
JPH08234980A (ja) 分岐先バッファを用いた分岐予測システム
KR19990087940A (ko) 단일클럭사이클내에불연속명령을페치하기위한방법및시스템
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US20010020267A1 (en) Pipeline processing apparatus with improved efficiency of branch prediction, and method therefor
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US5761490A (en) Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
US20040186985A1 (en) Method and apparatus for branch prediction based on branch targets
JP2006520964A5 (ja)
US20030159019A1 (en) Prediction of instructions in a data processing apparatus
US11138014B2 (en) Branch predictor
US20080162903A1 (en) Information processing apparatus
WO2001042927A9 (fr) Dispositif d'acces memoire et methode utilisant une table d'historique des traductions d'adresses
US6920549B1 (en) Branch history information writing delay using counter to avoid conflict with instruction fetching
US5926634A (en) Limited run branch prediction
JPH02130635A (ja) 複数命令同時処理方式
JPH08221273A (ja) 命令レベルの並列処理制御方法およびプロセッサ
US20070061554A1 (en) Branch predictor for a processor and method of predicting a conditional branch
US11010170B2 (en) Arithmetic processing apparatus which replaces values for future branch prediction upon wrong branch prediction
Hasan et al. An improved pipelined processor architecture eliminating branch and jump penalty

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050215

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050621