JPH0863356A - 分岐予測装置 - Google Patents

分岐予測装置

Info

Publication number
JPH0863356A
JPH0863356A JP7056971A JP5697195A JPH0863356A JP H0863356 A JPH0863356 A JP H0863356A JP 7056971 A JP7056971 A JP 7056971A JP 5697195 A JP5697195 A JP 5697195A JP H0863356 A JPH0863356 A JP H0863356A
Authority
JP
Japan
Prior art keywords
branch
prediction
information
instruction
branch prediction
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
Application number
JP7056971A
Other languages
English (en)
Other versions
JP3599409B2 (ja
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 JP5697195A priority Critical patent/JP3599409B2/ja
Publication of JPH0863356A publication Critical patent/JPH0863356A/ja
Priority to US08/908,004 priority patent/US5848269A/en
Application granted granted Critical
Publication of JP3599409B2 publication Critical patent/JP3599409B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • 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
    • 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
    • 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/3846Speculative instruction execution using static prediction, e.g. branch taken strategy

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)【要約】 【目的】 パイプライン方式のプロセッサにおいて、過
去の実行結果と相関がない分岐命令に対しても有効な分
岐予測を行なう。 【構成】 分岐予測装置は、分岐命令の分岐予測に関連
する予測情報を、ある分岐命令よりも前にフェッチされ
る命令のフェッチと同じタイミングで供給するための予
測情報バッファ56と、予測情報バッファ56により供
給された予測情報に従って、必要であれば命令パイプラ
イン50の演算結果を格納するレジスタファイル52か
ら分岐予測に必要な情報を読出し、遅くとも当該ある分
岐命令のフェッチサイクルの完了までにその分岐命令の
分岐予測を行なって、分岐予測信号を出力するための分
岐予測機構58とを含む。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明はプロセッサにおける分
岐予測装置に関し、特に、パイプライン方式のプロセッ
サにおいて、分岐によるパイプラインの乱れを小さくす
るための分岐予測装置に関する。
【0002】
【従来の技術】フェッチ命令の実行を複数のステージに
分割し、各命令の1ステージの処理(これはサイクルと
呼ぶ)が終了するごとにその命令の次のステージの処理
を開始し、同時に次の命令のそのステージの処理を開始
することにより、同時に複数の命令を実行していく方式
のプロセッサをパイプライン方式のプロセッサと呼ぶ。
パイプライン方式を用いた場合、1命令を実行するため
の時間ごとではなく、それをステージ数で分割した、1
ステージの実行に必要な時間ごとに1命令の処理が完了
する。したがって、単純に考えれば、パイプライン方式
のプロセッサの命令実行能力は、分割のステージ数だけ
倍増される。
【0003】しかし実際のパイプライン方式のプロセッ
サでは、そのような速度の向上は得られない。その主た
る原因は分岐命令である。パイプラインで実行される命
令中に分岐命令がある場合、分岐先によっては、既にパ
イプラインに投入されていた命令をすべて消去し、分岐
先のアドレスの命令から実行を再開させる必要が生ずる
ことがある。これをパイプラインの分断と呼ぶ。分岐命
令によるパイプラインの分断が生ずると、分岐処理が行
なわれるまでにパイプラインに投入された命令が無駄と
なるために、処理の効率が低下する。
【0004】そこでパイプライン方式のプロセッサで
は、分岐命令によるパイプラインの分断を防ぐために、
何らかの予測を行ない、それに従って命令流をパイプラ
インに連続供給する。この予測の精度が高いほど、分岐
によるパイプラインの分断の発生の確率は小さく、パイ
プラインの乱れは小さくなり性能の低下を抑えることが
できる。したがって分岐予測の精度はできるだけ高くす
る必要がある。
【0005】分岐予測の主な方式として次のようなもの
がある。 ディレイド・ブランチ方式による静的分岐予測 ブランチターゲットバッファ(BTB、Branch Tar
get Buffer)を用いた動的分岐予測 これについてはたとえば、エス・マクファリングおよび
ジェイ・エル・ヘネシーによる「リデューシング ザ
コスト オブ ブランチーズ」(第13回コンピュータ
アーキテクチャシンポジウムプロシーディングス、19
86年6月、S.McFarling, J.L. Hennessy,“Reducing
the cost of branches,”in Proceedings of 13th Annu
al Symposium on Computer Architecture)の第396
頁〜403頁に説明がある。これらの方式は、分岐命令
にはその分岐方向に偏りがあること(分岐の偏り)を利
用して、過去の実行結果から得られる情報に従って予測
を行なっている。
【0006】ディレイド・ブランチ方式は、分岐確率が
高い方のパス(ライクリーパス)上の命令をコンパイラ
がディレイ・スロットに移動させて分岐ペナルティを抑
える。ディレイ・スロットとは、分岐命令のフェッチか
ら、分岐命令の分岐先命令のフェッチまでの間にパイプ
ラインに投入される命令をいう。この間に複数の命令が
投入される場合、分岐命令の直後に投入される命令を第
1スロット、次に投入される命令を第2スロット、など
と呼ぶ。ディレイド・ブランチ方式で使用される分岐確
率は、コンパイルまでに、サンプルプログラムなどを実
行することにより得られた分岐の実行結果に基づいて決
定される。つまり、プログラムの実行履歴をもとに分岐
命令の分岐予測を行なっている。
【0007】ディレイド・ブランチ方式の予測ヒット
率、つまり、ディレイ・スロットが有効な命令で埋めら
れる確率として、第1スロットの場合約70%、第2の
スロットの場合は25%以下となるデータがある。
【0008】BTB方式は、分岐命令の実行時の結果に
基づいて分岐予測を行なう。BTB方式による予測手順
の概要を図を参照して説明する。
【0009】図35を参照してBTB方式の分岐予測装
置は、プロセッサの命令パイプライン322と命令キャ
ッシュ320とに接続され、BTB324と分岐予測機
構326とを含む。命令キャッシュ320は、図示され
ない主メモリなどに接続されており、分岐予測機構32
6から与えられるフェッチアドレスの命令を命令パイプ
ライン322に与える。命令キャッシュ320に、与え
られたフェッチアドレスの命令が存在しない場合には、
命令キャッシュ320はメインメモリから該当アドレス
の命令を読出し、格納すると同時に命令パイプライン3
22に供給する。
【0010】BTB324は、分岐命令の過去の履歴
や、分岐先情報からなる分岐予測情報を格納する。BT
B324には、分岐予測機構326からフェッチアドレ
スが、命令パイプライン322から予測ミス情報などが
与えられる。
【0011】分岐予測機構326は、命令のフェッチと
同時にBTB324のアクセスを行ない、分岐予測情報
を読出し、得られた履歴情報をある予測アルゴリズムに
当てはめて予測を行ない、その結果がtaken 予測(分岐
成立方向に予測)であれば分岐先情報から生成した分岐
先アドレスを次サイクルのフェッチアドレスとして命令
キャッシュ320に供給する。
【0012】BTB方式による分岐予測の流れを図36
に示す。図36を参照して、サイクルnで命令iをフェ
ッチし、同時にBTBリードを行なう。サイクルnの後
半で分岐予測を行ない、サイクルn+1で命令i+1の
フェッチとBTBリードを行なう。サイクルn+1で命
令iの分岐が解決され、予測ミスであればサイクルn+
2で命令i+2がフェッチされかつBTBが更新され
る。
【0013】図37を参照して、分岐予測機構326
は、BTB324(図35)からの履歴情報により分岐
がtaken 分岐か否かを予測するための予測回路330
と、予測回路330の予測結果と、命令パイプラインか
ら与えられる予測ミス情報(予測ミス時の再フェッチア
ドレスなど)と、BTB324(図35)からの分岐先
アドレスと、直前に自己が出力したフェッチアドレスと
に基づいて、次命令のフェッチアドレスを選択するため
のフェッチアドレス選択回路332とを含む。
【0014】予測回路330は、前述のとおり履歴情報
をある予測アルゴリズムに当てはめて分岐予測を行な
い、その結果がtaken 予測かどうかを示す予測信号を出
力する。フェッチアドレス選択回路322は基本的に
は、予測信号がtaken 予測であれば分岐先アドレスを選
択し、さもなければ直前に出力したフェッチアドレスの
次のフェッチアドレスを選択する。
【0015】以上のBTB方式は、過去数回の履歴をも
とに分岐予測を行なう。何回の履歴をもとにするかは、
BTBが保持する履歴情報のビット数による。
【0016】BTB方式の予測ヒット率は、2ビット履
歴、256エントリ(BTB内のエントリ数)の場合
で、77%というシミュレート結果が得られている。こ
の場合予測の正確さが83%、BTBのヒット率が93
%というシミュレート結果であり、予測ヒット率はその
積である。
【0017】
【発明が解決しようとする課題】このように従来の2方
式はそれほど高い予測ヒット率を有していない。したが
って、より高い予測ヒット率を得られる分岐予測方式が
望ましい。この場合、ループを形成する条件分岐命令で
ある後方分岐(backward branch )は、約90%が分岐
する(たとえばジェイ・エル・ヘネシー、ディ・エイ・
パターソンによる「コンピュータアーキテクチャ:定量
的アプローチ」(J. L. Hennesy, D. A. Patterson,
“Computer Architecture: A Quantitative Approach,
”の第108頁)ので、過去の実行結果に基づいた履
歴による予測は有効である。しかし、前方分岐(forwar
d branch)では、分岐する確率は約40%と、偏りがな
い。
【0018】一般的にプログラムではループを形成する
条件分岐命令で処理を繰り返し行なうことが多いので、
後方分岐命令を有効に予測できればある程度の効果があ
ると考えられている。しかし、実際にはそのループ内で
の条件文を前方分岐が形成していることが多い。そうし
た条件文は、ループが実行される回数と同じ回数だけ実
行されるので、ループを形成する条件分岐命令と少なく
とも同じ回数だけ実行される。したがって、パイプライ
ンの動作効率を高めるためには、後方分岐のみを有効に
予測するだけでは足りず、前方分岐についても有効な予
測を行なう必要がある。こうした前方分岐では、前述の
ように分岐する確率に偏りがないので、履歴による分岐
予測は有効ではない。
【0019】したがって、前方分岐のように分岐に偏り
がない場合でも有効に分岐予測を行なうことができる分
岐予測方式が求められている。
【0020】この点につき特開昭63−231627号
公報には、アドレス計算が不要でかつコンディションコ
ードを設定する命令を実行する際に、使用されていない
アドレス計算回路で、その命令の実行と同時に演算を行
なってコンディションコードの予測値を求め、そのコン
ディションコードを用いて処理すべき内容を決定する後
続の命令に対して、アドレス計算回路で計算したコンデ
ィションコードの予測値を渡すことにより、処理すべき
内容の決定を早期に実行させる先行制御方式が開示され
ている。このような方式では、コンディションコードを
設定する命令が使用するデータと同じデータを用いて並
列にコンディションコードの予測値を求めるので、過去
の履歴のみに基づく場合と比べ、コンディションコード
が正しく求められる確率が高くなると思われる。
【0021】しかし、この特開昭63−231627号
公報の方式は、単にコンディションコードの予測値を求
めるのみであり、これを分岐予測に適用するとすれば、
得られたコンディションコードの予測値を用いて、後続
の命令により分岐予測を行なうことになる。この場合次
のような問題が生ずる。
【0022】図38を参照して、この特開昭63−23
1627号公報に開示された先行技術制御方式を予測分
岐方式に用いた場合、まずサイクル1でコンディション
コードを設定するセット命令がフェッチされ、サイクル
2でこのセット命令がデコードされる。同時にサイクル
2で後続の分岐命令がフェッチされる。サイクル3でセ
ット命令が実行されると同時にコンディションコードの
予測値の計算も行なわれ、サイクル3の途中で後続の分
岐命令に渡される。
【0023】ところが、サイクル3では、分岐命令の後
続する命令のフェッチが行なわれる。そのため、サイク
ル3の途中で分岐命令にコンディションコードが渡され
たとしても、そのコンディションコードを用いて分岐予
測をしても、分岐命令の直後にフェッチする命令のアド
レスを予測することはできない。したがって、分岐予測
の結果は、さらにその後に後続する命令をフェッチする
ときに使用される。このフェッチはサイクル4で行なわ
れる。
【0024】しかし、図38に示されるような命令実行
サイクルを有するパイプライン方式では、分岐命令の分
岐の実行はサイクル4の前半に終了するので、サイクル
4でフェッチする命令は、実際の分岐結果に基づいてフ
ェッチできる。サイクル3で予測した結果を使用するこ
とはなく、分岐予測そのものが無駄である。したがって
この特開昭63−231627号公報の先行制御方式を
そのままで分岐予測に使用することはできない。
【0025】以上から、過去の実行結果と相関がない分
岐命令に対しても有効な分岐予測を行なうことができる
新規な分岐予測装置を提供することが望まれている。そ
の場合、過大なハードウェアを追加する必要がない方が
好ましい。たとえば、既存の資源を利用できればそれを
利用すべきである。また分岐予測の計算も、できるだけ
多様な方法で行なえる方がよいし、また、高速に分岐予
測を実行できた方が好ましい。分岐予測を高速で行なう
ために、分岐予測の正確性をある程度犠牲にしてもよい
と思われるが、もちろんできるだけ正確に行なえる方が
より好ましい。
【0026】また、分岐命令の分岐の条件を設定するた
めの命令の位置は、それらが使用する資源にもあまり影
響されずに分岐予測を行なえればより好ましい。たとえ
ば、分岐命令の直前に実行される命令によって分岐の条
件が設定される場合であって、かつその設定にパイプラ
インの演算結果を保持する、レジスタなどの手段が使用
されるために、分岐の条件を分岐命令のフェッチに先立
って入手できない場合などである。
【0027】また、プログラムカウンタ相対やレジスタ
参照による分岐先アドレスの決定をする分岐命令を含む
多くの種類の分岐命令に対してそうした分岐予測を行な
えた方がよい。たとえば、分岐命令の分岐の傾向が過去
の実行結果と相関がある、なしにかかわらず、また分岐
命令の最初の実行時も含めて有効な分岐予測を行なうこ
とができる方がよい。また、分岐予測の正確性を上げる
ために既存の命令セットを変更してもよいが、変更する
ことなく、または少しの変更のみで、有効な分岐予測が
行なえればより好ましく、また命令のスケジューリング
の制限もできるだけない方がよい。
【0028】それゆえに、請求項1記載の発明の目的
は、過去の実行結果と相関がない分岐命令に対しても有
効な分岐予測を行なうことができる分岐予測装置を提供
することである。
【0029】請求項2に記載の発明の目的は、既存の資
源を有効に利用して、過去の実行結果と相関がない分岐
命令に対しても有効な分岐予測を行なうことができる分
岐予測装置を提供することである。
【0030】請求項3に記載の発明の目的は、過大なハ
ードウェアを追加することなく、既存の資源を有効に利
用して、過去の実行結果と相関がない分岐命令に対して
も有効な分岐予測を行なうことができる分岐予測装置を
提供することである。
【0031】請求項4に記載の発明の目的は、過大なハ
ードウェアを追加することなく、既存の資源を有効に利
用して、過去の実行結果と相関がない分岐命令に対して
も有効な分岐予測を、多様な分岐予測計算方法に従って
行なうことができる分岐予測装置を提供することであ
る。
【0032】請求項5に記載の発明の目的は、過大なハ
ードウェアを追加することなく、過去の実行結果と相関
がない分岐命令に対してもある程度有効な分岐予測を高
速で行なうことができる分岐予測装置を提供することで
ある。
【0033】請求項6または7に記載の発明の目的は、
ハードウェアの追加をそれほど大きくすることなく、過
去の実行結果と相関がない分岐命令に対してもさらに有
効な分岐予測を高速で行なうことができる分岐予測装置
を提供することである。
【0034】請求項8記載の発明の目的は、分岐命令の
直前に実行される命令によって分岐の条件が設定される
場合であって、かつその設定にパイプラインの演算結果
を保持する手段が使用されるために分岐の条件を分岐命
令のフェッチに先立って入手できない場合にも、過大な
ハードウェアを追加することなく、過去の実行結果と相
関がない分岐命令に対しても有効な分岐予測を行なうこ
とができる分岐予測装置を提供することである。
【0035】請求項9に記載の発明の目的は、分岐命令
の直前に実行される命令によって分岐の条件が設定され
る場合であって、かつその設定にパイプラインの演算結
果を保持する手段が使用されるために分岐の条件を分岐
命令のフェッチに先立って入手できない場合にも、過大
なハードウェアを追加することなく、種々の分岐命令に
対しても有効な分岐予測を行なうことができる分岐予測
装置を提供することである。
【0036】請求項10に記載の発明の目的は、過大な
ハードウェアを追加することなく、過去の実行結果と相
関がない分岐命令に対しても有効な分岐予測を行なうこ
とができる分岐予測装置を提供することである。
【0037】請求項11に記載の発明の目的は、過大な
ハードウェアを追加することなく、過去の実行結果と相
関がある、なしにかかわらず分岐命令に対して有効な分
岐予測を行なうことができる分岐予測装置を提供するこ
とである。
【0038】請求項12に記載の発明の目的は、パイプ
ラインへの演算結果を有効に利用して、過去の実行結果
と相関がない分岐命令に対しても有効な分岐予測を行な
うことができる分岐予測装置を提供することである。
【0039】請求項13に記載の発明の目的は、過大な
ハードウェアを追加することなく、過去の実行結果と相
関がない分岐命令に対しても有効な分岐予測を行なうこ
とができる分岐予測装置を提供することである。
【0040】請求項14に記載の発明の目的は、過大な
ハードウェアを追加することなく、既存の資源を有効に
利用して、過去の実行結果と相関がない分岐命令に対し
ても、有効な分岐予測を行なうこができる分岐予測装置
を提供することである。
【0041】請求項15に記載の発明の目的は、過大な
ハードウェアを追加することなく、かつ既存の命令セッ
トを変更することなく、過去の実行結果と相関がない分
岐命令に対しても有効な分岐予測を行なうことができる
分岐予測装置を提供することである。
【0042】請求項16に記載の発明の目的は、過大な
ハードウェアを追加することなく、かつ既存の命令セッ
トを生かして、過去の実行結果と相関がない分岐命令に
対しても有効な分岐予測を行なうことができる分岐予測
装置を提供することである。
【0043】請求項17に記載の発明の目的は、過大な
ハードウェアを追加することなく、分岐命令の最初の実
行時も含めて、過去の実行結果と相関がない分岐命令に
対しても有効な分岐予測を行なうことができる分岐予測
装置を提供することである。
【0044】請求項18に記載の発明の目的は、命令の
構成をできるだけ変更せず、命令のスケジューリングの
制限もできるだけ緩和して、有効な分岐予測を行なうこ
とができる分岐予測装置を提供することである。
【0045】請求項19に記載の発明の目的は、過大な
ハードウェアを追加することなく、プログラムカウンタ
相対による分岐命令に対して有効な分岐予測を行なうこ
とができる分岐予測装置を提供することである。
【0046】請求項20に記載の発明の目的は、過大な
ハードウェアを追加することなく、種々の分岐命令に対
して有効な分岐予測を行なうことができる分岐予測装置
を提供することである。
【0047】請求項21に記載の発明の目的は、過大な
ハードウェアを追加することなく、プログラム相対およ
びレジスタ参照を含む種々の分岐命令に対して有効な分
岐予測を行なうことができる分岐予測装置を提供するこ
とである。
【0048】請求項22に記載の発明の目的は、過去の
実行結果と相関がない分岐命令に対しても、非常に有効
な分岐予測を行なうことができる分岐予測装置を提供す
る事である。
【0049】
【課題を解決するための手段】請求項1に記載の発明に
係る分岐予測装置は、演算結果を格納する手段を有する
パイプライン方式のプロセッサにおける分岐予測装置で
あって、分岐命令の分岐予測に関連する予測情報を、あ
る分岐命令より前にフェッチされる命令のフェッチと同
じタイミングで供給するための予測情報供給手段と、予
測情報供給手段により供給された予測情報に従って、必
要であれば演算結果を格納する手段から分岐予測に必要
な情報を読出し、遅くともある分岐命令のフェッチサイ
クルの完了までにある分岐命令の分岐予測を行なって、
分岐予測信号を出力するための分岐予測手段とを含む。
【0050】請求項2に記載の発明に係る分岐予測装置
は、請求項1に記載の分岐予測装置であって、分岐予測
手段は、予測情報供給手段により供給された予測情報
と、分岐予測に必要な情報とを、ある分岐命令より前に
フェッチされる命令のフェッチと同じタイミングでパイ
プラインに投入し、パイプラインにより分岐予測処理を
行なわせるための手段を含む。
【0051】請求項3に記載の発明に係る分岐予測装置
は、請求項1から2のいずれかに記載の分岐予測装置で
あって、演算結果を格納する手段は、相互に独立に情報
を保持する複数個の情報保持手段を含み、分岐関連情報
は、複数個の情報保持手段のうちの任意のものを指定す
るための指定情報を含み、分岐予測手段は、読出した分
岐関連情報に含まれる指定情報により指定される保持手
段から、分岐予測に必要なデータを読出す。
【0052】請求項4に記載の発明に係る分岐予測装置
は、請求項1から3のいずれかに記載の分岐予測装置で
あって、分岐予測手段は、分岐関連情報を解釈して、分
岐予測に必要な情報を保持手段から取出すための指定情
報と、指定された保持手段から取出された分岐予測に必
要な情報に対して行なわれる、分岐予測のためのオペレ
ーションを特定する分岐予測オペレーション情報と、分
岐予測に使用される定数データと、予測分岐先アドレス
を計算するために使用される分岐先情報とを出力するた
めの予測情報デコーダ手段と、指定情報により指定され
る保持手段から出力される分岐予測に必要な情報に対し
て、分岐予測オペレーション情報と定数データとにより
特定されるオペレーションを行なって分岐予測信号を出
力するための分岐予測回路と、分岐先情報に基づいて予
測分岐先アドレスを生成するための分岐先アドレス生成
手段と、分岐先アドレス生成手段の出力、分岐予測回路
の出力、パイプラインから与えられる予測ミス情報、お
よび自己の出力に基づいて、分岐予測命令のフェッチア
ドレスを出力するためのフェッチアドレス生成手段とを
含む。
【0053】請求項5に記載の発明に係る分岐予測装置
は、請求項1に記載の分岐予測装置であって、分岐予測
手段は、分岐予測に必要な情報の一部分のみに基づいて
分岐予測を行なうことを特徴とする。
【0054】請求項6に記載の発明に係る分岐予測装置
は、請求項1に記載の分岐予測装置であって、分岐予測
に必要な情報を所定の態様に従って圧縮するための圧縮
手段をさらに含み、分岐予測手段は、圧縮手段により圧
縮された情報に従って分岐予測を行なう。
【0055】請求項7に記載の発明に係る分岐予測装置
は、請求項6に記載の分岐予測装置であって、圧縮手段
は、分岐予測に必要な情報の符号ビットと、分岐予測必
要な情報の上位の複数ビットごとの論理和と、分岐予測
に必要な情報の下位の複数ビットとを、分岐予測に必要
な情報として分岐予測手段に与えることを特徴とする。
【0056】請求項8に記載の発明に係る分岐予測装置
は、請求項4に記載の分岐予測装置であって、分岐予測
回路は、2つの入力の大小関係を比較し、比較結果に応
じて分岐先を定めるために、2つの入力の間で減算処理
を行なって少なくとも結果の符号を出力するための大小
比較手段を含む。大小比較手段の2つの入力の一方は、
保持手段の1つからの入力が与えられるようにされてい
る。分岐予測回路はさらに、保持手段の他の1つからの
入力の2の補数を出力するための補数手段と、保持手段
の他の1つからの入力と、補数手段の出力との一方を、
分岐予測オペレーション情報に応答して選択し、大小比
較手段の2つの入力の他方に与えるための選択手段とを
含む。それによって、大小比較手段が、その2つの入力
に与えられる情報の間の加算処理も行なうことが可能で
ある。
【0057】請求項9に記載の発明に係る分岐予測装置
は、請求項8に記載の分岐予測装置であって、分岐予測
回路はさらに、大小比較手段の出力と、保持手段からの
入力または定数データとが一致しているか否かを判定す
るための一致比較手段と、分岐予測オペレーション情報
に応答して、大小比較手段と一致比較手段との出力の一
方を選択するための選択手段とを含む。
【0058】請求項10に記載の発明に係る分岐予測装
置は、請求項4に記載の分岐予測装置であって、予測情
報供給手段は、分岐先アドレスを特定するための即値
と、分岐先を特定する情報を保持している保持手段を指
定するための指定情報とのいずれか一方と、分岐先の計
算方法を特定する分岐予測オペレーション情報とを供給
し、分岐予測回路は、即値または指定情報に対して、分
岐予測オペレーション情報により特定される計算を行な
って分岐先アドレスを生成する。
【0059】請求項11に記載の発明に係る分岐予測装
置は、請求項1に記載の分岐予測装置であって、分岐命
令の履歴に従って分岐命令の分岐予測を行なうための、
履歴による分岐予測機構と、分岐命令の履歴を保持する
ための履歴情報保持手段とをさらに含む。予測情報供給
手段は、選択する予測方式を特定するための予測方式特
定情報を供給する。分岐予測装置はさらに、分岐予測手
段の出力と、履歴による分岐予測機構の出力とのいずれ
か一方を、予測方式特定情報に応答して選択するための
方式選択手段を含む。
【0060】請求項12に記載の発明に係る分岐予測装
置は、請求項1に記載の分岐予測装置であって、予測情
報供給手段は、パイプラインから与えられる予測情報を
一時格納する予測情報バッファを含む。
【0061】請求項13に記載の発明に係る分岐予測装
置は、請求項1に記載の分岐予測装置であって、命令体
系を、分岐の予測情報を含み得るように構成し、予測情
報供給手段は、命令から予測情報を取出して供給する手
段を含む。
【0062】請求項14に記載の発明に係る分岐予測装
置は、請求項13に記載の分岐予測装置であって、命令
に、通常の命令フィールドと、次に実行する分岐命令の
予測情報を保持するための予測情報フィールドとを設
け、予測情報供給手段は、通常の命令フィールドの内容
をパイプラインに投入するとともに、命令の予測情報フ
ィールドから予測情報を取出して分岐予測手段に供給す
る。
【0063】請求項15に記載の発明に係る分岐予測装
置は、請求項13に記載の分岐予測装置であって、予測
情報供給手段は、連続する2つ以上の命令を一度にフェ
ッチして、フェッチした最後の命令が分岐予測命令であ
ることに応答して、フェッチした2つ以上の命令から分
岐予測情報を得て、分岐予測手段に与えるための手段を
含む。
【0064】請求項16に記載の発明に係る分岐予測装
置は、請求項13に記載の分岐予測装置であって、命令
体系に、分岐予測情報を保持するための分岐予測情報保
持命令を設け、予測情報供給手段は、分岐予測情報保持
命令から分岐予測情報を取出して供給するための手段を
含む。
【0065】請求項17に記載の発明に係る分岐予測装
置は、請求項1に記載の分岐予測装置であって、静的な
分岐予測機構をさらに含む。各命令は、次に実行される
分岐命令に対して行なわれる分岐の予測方式を特定する
ための予測方式特定情報を含む。予測情報供給手段は、
フェッチされた命令から、予測方式特定情報を取出して
供給する。分岐予測装置はさらに、分岐予測手段の出力
と、静的な分岐予測機構の出力とのいずれか一方を、予
測方式特定情報に応答して選択するための方式選択手段
とを含む。
【0066】請求項18に記載の発明に係る分岐予測装
置は、パイプライン方式のプロセッサにおける分岐予測
装置であって、各々が、分岐命令の分岐予測に関連する
予測情報を記憶する複数個の記憶手段と、複数個の記憶
手段のうち、ある分岐命令の分岐予測情報を記憶したも
のを特定するための特定情報を、ある分岐命令より前に
フェッチされる命令のフェッチと同じタイミングで供給
するための特定情報供給手段と、複数個の記憶手段のう
ち、特定情報供給手段により供給された特定情報により
特定される記憶手段から、ある分岐命令の分岐予測情報
を読出し、遅くともある分岐命令のフェッチサイクルの
完了までにある分岐命令の分岐予測を行なって、分岐予
測信号を出力するための分岐予測手段とを含む。
【0067】請求項19に記載の発明に係る分岐予測装
置は、パイプライン方式のプロセッサにおける分岐予測
装置であって、プログラムカウンタ相対の分岐命令が実
行されたとき、当該分岐命令によるプログラムカウンタ
のオフセットの即値を、当該分岐命令と所定の関係にあ
る命令のアドレスと関連付けて記憶するための即値記憶
手段と、命令フェッチと同時に、当該命令のアドレスに
関連付けて即値記憶手段に記憶された即値があればその
即値を読出す手段と、即値を読出す手段により即値記憶
手段から即値が読出されたときに、命令フェッチにより
フェッチされた命令と所定の関係により関係付けられた
分岐命令の分岐方向の予測を所定の方式に従って予測す
るとともに、その分岐先予測を、読出された即値を用い
て行なう分岐予測手段とを含む。
【0068】請求項20に記載の発明に係る分岐予測装
置は、パイプライン方式のプロセッサにおける分岐予測
装置であって、ある分岐命令が実行されたとき、当該あ
る分岐命令による分岐先の計算方法を特定する計算方法
特定情報と、当該ある分岐命令の実行において分岐先の
計算に用いられた分岐先計算情報とを、当該分岐命令と
所定の関係にある命令のアドレスと関連付けて分岐先情
報として記憶するための分岐先情報記憶手段と、命令フ
ェッチと同時に、当該命令のアドレスに関連付けて分岐
先情報記憶手段に記憶された分岐先情報があればその分
岐先情報を読出す手段と、分岐先情報を読出す手段によ
り分岐先情報記憶手段から分岐先情報が読出されたと
き、所定の方式に従って分岐方向の予測を行なうととも
に、命令フェッチによりフェッチされた命令と所定の関
係により関係付けられた分岐命令の分岐先予測を、読出
された分岐先情報の分岐先計算情報に対して、読出され
た分岐先情報の計算方法特定情報により特定される計算
方法に従って行なう分岐予測手段とを含む。
【0069】請求項21に記載の発明に係る分岐予測装
置は、請求項20に記載の分岐予測装置であって、パイ
プライン方式のプロセッサは、演算結果を格納するレジ
スタ手段を有する。計算方法特定情報は、プログラムカ
ウンタ相対分岐とレジスタ参照分岐とのいずれかを特定
する。分岐先計算情報は、プログラムカウンタ相対分岐
時のプログラムカウンタのオフセットの即値と、レジス
タ手段を特定するための情報とのいずれかである。分岐
予測手段は、読出された計算方法を特定情報により特定
される計算方法がプログラムカウンタ相対分岐であれ
ば、読出された分岐先計算情報の即値をプログラムカウ
ンタに加算することによって分岐先アドレスを予測し、
読出された計算方法を特定情報により特定される計算方
法がレジスタ参照分岐であれば、読出された分岐先計算
情報により特定されるレジスタ手段の内容に従って分岐
先アドレスを予測する。
【0070】請求項22に記載の分岐予測装置は、請求
項1に記載の分岐予測装置であって、この分岐予測装置
には、命令を実行する装置から、分岐予測がはずれた場
合には予測情報の更新要求を示し、命令がフェッチされ
るときには予測情報の出力情報を示す書込/読出制御信
号が与えられる。予測情報供給手段は、分岐予測情報バ
ッファと、FIFOメモリと、選択手段とを含む。分岐
予測情報バッファは、書込/読出制御信号が更新要求を
示す値になったことに応答して、パイプラインから与え
られる予測情報を、指定されたアドレスに格納し、書込
/読出制御信号が出力要求を示す値になったことに応答
して、指定されたアドレスから予測情報を出力する。F
IFOメモリは、フェッチされた命令のアドレスを、一
時的に、かつ所定数だけ順次記憶して先入れ先出し方式
に従って出力する。選択手段は、書込/読出制御信号が
更新要求を示す値になったことに応答してFIFOメモ
リの出力を分岐予測情報バッファに与え、そうでない場
合には現在の命令フェッチのアドレスを分岐予測情報バ
ッファに与える。それによって、この分岐予測装置にお
いて、分岐予測情報バッファは、分岐予測がはずれた場
合には、FIFOメモリの出力するアドレスに予測情報
を格納し、予測情報の出力の際には、現在の命令フェッ
チのアドレスから予測情報を出力する。
【0071】
【作用】請求項1に記載の分岐予測装置によれば、分岐
命令の分岐予測に関連する予測情報を、ある分岐命令よ
り前にフェッチされる命令のフェッチと同じタイミング
で供給し、その予測情報に従って分岐予測が行なわれ
る。予測のための時間に余裕があるので、必要であれば
演算結果を格納する手段から分岐予測に必要な情報、た
とえば実際に分岐命令が分岐を行なう際に参照する情報
を読出して分岐予測に用いることができる。
【0072】請求項2に記載の分岐予測装置は、予測情
報と、分岐予測に必要な情報とを、ある分岐命令より前
にフェッチされる命令のフェッチと同じタイミングでパ
イプラインに投入し、パイプラインより分岐予測処理を
行なわせる。複数個の処理装置を含むシステムで、演算
に使用されていない処理装置を有効に利用できる。
【0073】請求項3に記載の分岐予測装置で、分岐予
測手段は、読出した分岐関連情報に含まれる指定情報に
より指定される情報保持手段から、分岐予測に必要なデ
ータを読出す。分岐関連情報に、分岐先情報をそのまま
含ませる必要がなく、指定情報のみを含ませればよいの
で、分岐関連情報の量を少なくできる。
【0074】請求項4の分岐予測装置では、予測情報デ
コーダ手段は、分岐関連情報を解釈して、指定情報と、
分岐予測オペレーション情報と、定数データと、分岐先
情報とを出力する。分岐予測回路は、指定情報により指
定される保持手段から出力される分岐予測に必要な情報
に対して、分岐予測オペレーション情報と定数データと
により特定されるオペレーションを行なって分岐予測信
号を出力する。分岐先アドレス生成手段が、分岐先情報
に基づいて予測分岐先アドレスを生成する。そして、フ
ェッチアドレス生成手段が、分岐先アドレス生成手段の
出力、分岐予測回路の出力、パイプラインから与えられ
る予測ミス情報、および自己の出力に基づいて、分岐予
測命令のフェッチアドレスを出力する。分岐予測回路に
より、様々な予測計算方法を用いて予測計算を行なうこ
とができる。
【0075】請求項5に記載の分岐予測装置では、分岐
予測手段は、分岐予測に必要な情報の一部分のみに基づ
いて分岐予測を行なう。分岐予測に必要な情報の全部を
使用する場合と比較して分岐予測をより高速に行なうこ
とができる。
【0076】請求項6に記載の分岐予測装置では、分岐
予測手段は、圧縮手段により所定の態様に従って圧縮さ
れた分岐予測に必要な情報に従って分岐予測を行なう。
分岐予測に必要な情報の全部を使用する場合と比較して
分岐予測をより高速に行なうことができ、かつ分岐予測
に必要な情報の一部のみを用いた場合よりも分岐予測が
より的確となる。
【0077】請求項7に記載の分岐予測装置では、分岐
予測に必要な情報の符号ビットと、分岐予測に必要な情
報の上位の複数ビットごとの論理和と、分岐予測に必要
な情報の下位の複数ビットとにより分岐予測が行なわれ
る。分岐予測に必要な情報の全部を使用する場合と比較
して分岐予測をより高速に行なうことができる。上位ビ
ットは複数ビットごとに論理和がとられて分岐予測に反
映され、また下位の複数ビットはそのまま使用されるの
で、分岐予測がより的確となる。
【0078】請求項8に記載の分岐予測装置は、大小比
較手段が、その2つの入力に与えられる情報の間の減算
処理と加算処理との両方を行なうことができる。分岐予
測に必要な情報の間で比較をする場合だけでなく、加算
を行なって分岐予測を行なうことも可能になる。
【0079】請求項9に記載の分岐予測装置では、請求
項8に記載の分岐予測装置による作用に加え、大小比較
手段の出力と、情報保持手段からの入力またはテストデ
ータとが一致しているか否かを判定できる。分岐命令
で、情報保持手段の出力を用いて大小比較手段で計算し
た結果をオペランドとし、それを情報保持手段からの他
のオペランドまたはテストデータと比較して一致してい
るか否かを判定し、その結果を用いて分岐予測を行なえ
る。したがって、多くの分岐命令に対して分岐予測を行
なうことができる。
【0080】請求項10に記載の分岐予測装置では、請
求項4に記載の分岐予測装置の作用に加え、即値または
指定情報に対して、分岐予測オペレーション情報により
特定される計算を行なって分岐先アドレスが生成され
る。分岐予測情報そのものよりも情報量の少ない即値ま
たは指定情報を分岐予測装置に供給すればよいので、予
測情報供給手段を小さくできる。
【0081】請求項11に記載の分岐予測装置では、請
求項1に記載の分岐予測装置の作用に加え、分岐予測手
段の出力と、履歴による分岐予測機構の出力とのいずれ
か一方が、予測方式特定情報に応答して選択される。分
岐予測手段による分岐予測が無効である場合、たとえば
最初の分岐処理の場合または、分岐命令のフェッチサイ
クルの完了までに分岐予測手段による分岐処理が行なえ
ない場合などに、履歴による分岐予測機構の予測を用い
ることができるので、分岐予測をより的確に行なえる。
【0082】請求項12に記載の分岐予測装置では、請
求項1に記載の分岐予測装置の作用に加え、パイプライ
ンから与えられる予測情報を一時格納する予測情報バッ
ファを含むので、実際の分岐処理でも使用されるパイプ
ラインの処理結果を利用して分岐予測を行なえる。
【0083】請求項13に記載の分岐予測装置では、請
求項1に記載の分岐予測装置の作用に加え、予測情報供
給手段は、命令から予測情報を取出すことができる。予
測情報を格納しておくためのハードウェアを準備する必
要がない。また分岐予測をより的確にするために、格納
しておく予測情報の量を増加させる必要もない。
【0084】請求項14に記載の分岐予測装置では、請
求項13に記載の分岐予測装置の作用に加え、予測情報
供給手段は、命令中に含まれる通常の命令フィールドの
内容をパイプラインに投入するとともに、命令の予測情
報フィールドから予測情報を取出して分岐予測手段に供
給する。予測情報を格納しておくためのハードウェアを
準備する必要がない。また、分岐予測に必要な情報が、
必要なときは常に命令から間違いなく供給されるため、
分岐予測は的確なものになる。
【0085】請求項15に記載の分岐予測装置は、請求
項13に記載の分岐予測装置の作用に加え、連続する2
つ以上の命令を一度にフェッチして、フェッチした最後
の命令が分岐予測命令である場合、フェッチした2つ以
上の命令から分岐予測情報を得て、分岐予測が行なわれ
る。命令中に、分岐予測のための特別なフィールドを設
けたり、新たな命令を設けたり、命令長を増加したりす
ることが不要で、命令体系を変更することなく、的確な
分岐予測を行なえる。
【0086】請求項16に記載の分岐予測装置では、請
求項13に記載の分岐予測装置の作用に加え、命令体系
に、分岐予測情報を保持するための分岐予測情報保持命
令を設け、この分岐予測情報を取出して分岐予測に用い
る。既存の命令を変更することなく、新たな命令を追加
することのみで、余分なハードウェアを追加することも
なく的確な分岐予測が行なえる。
【0087】請求項17に記載の分岐予測装置では、請
求項1に記載の分岐予測装置の作用に加え、分岐予測手
段の出力と、静的な分岐予測機構の出力とのいずれか一
方が予測方式特定情報に応答して選択される。分岐命令
の種類により、より適した予測方式を使用して分岐予測
を行なえるので、分岐予測がより的確になる。
【0088】請求項18に記載の分岐予測装置では、複
数個の記憶手段のうち、ある分岐命令の分岐予測情報を
記憶したものを特定するための特定情報を、ある分岐命
令より前にフェッチされる命令のフェッチと同じタイミ
ングで特定情報供給手段が供給する。特定情報により特
定される記憶手段から、ある分岐命令の分岐予測情報を
読出し、遅くともそのある分岐命令のフェッチサイクル
の完了までにある分岐命令の分岐予測が行なわれる。
【0089】請求項19に記載の分岐予測装置では、プ
ログラムカウンタ相対の分岐命令が実行されたとき、当
該分岐命令によるプログラムカウンタのオフセットの即
値を、当該分岐命令と所定の関係にある命令のアドレス
と関連付けて記憶する。そして命令フェッチと同時に、
当該命令のアドレスに関連付けて即値記憶手段に記憶さ
れた即値があればその即値を読出し、命令フェッチによ
りフェッチされた命令と所定の関係により関係付けられ
た分岐命令の分岐方向を予測するとともに、分岐先アド
レスの予測を、読出された即値を用いて行なう。即値の
ビット長は分岐先アドレスそのものよりもかなり短いの
で、分岐先情報として分岐先アドレスそのものを保持す
る場合よりも、分岐先の情報を記憶しておくハードウェ
アの量を小さくすることができる。
【0090】請求項20に記載の分岐予測装置では、分
岐先情報記憶手段が、ある分岐命令が実行されたとき、
当該ある分岐命令による分岐先の計算方法を特定する計
算方法特定情報と、当該ある分岐命令の実行において分
岐先の計算に用いられる分岐先計算情報とを、当該分岐
命令と所定の関係にある命令のアドレスと関連付けて分
岐先情報として記憶する。命令フェッチと同時に、当該
命令のアドレスに関連付けて分岐先情報記憶手段に記憶
された分岐先情報があればその分岐先情報が読出され
て、命令フェッチによりフェッチされた命令と所定の関
係により関係付けられた分岐命令の分岐方向を所定の方
式に従って予測するとともに、分岐先の予測を、読出さ
れた分岐先情報の分岐先計算情報に対して、読出された
分岐先情報の計算方法特定情報により特定される計算方
法に従って行なう。
【0091】請求項21に記載の分岐予測装置では、請
求項20に記載の分岐予測装置の作用に加えて、計算方
法特定情報により特定される計算方法がプログラムカウ
ンタ相対分岐であれば、分岐先計算情報の即値をプログ
ラムカウンタに加算することによって分岐先アドレスを
予測し、計算方法特定情報により特定される計算方法が
レジスタ参照分岐であれば、分岐先計算情報により特定
されるレジスタ手段の内容に従って分岐先アドレスを予
測する。
【0092】請求項22に記載の分岐予測装置では、請
求項1に記載の分岐予測装置の作用に加えて、次のよう
な作用がある。FIFOメモリが出力するアドレスは、
一定サイクル毎に実際にフェッチされた命令のアドレス
である。ある分岐命令に関して、たとえばその直前の分
岐命令で分岐が実行されたために当該ある分岐命令に制
御が移行してくる場合を考える。当該ある分岐命令に関
する分岐予測がはずれたとき、一定サイクル毎に実際に
フェッチされた命令のアドレスをアドレスとして、分岐
予測情報バッファに当該ある分岐命令に関する予測情報
が格納される。次にこの命令シーケンスが実行され、当
該ある分岐命令に制御が分岐してくるとき、その分岐予
測情報を分岐予測情報バッファから読出すために使用さ
れるアドレスは、予測情報の格納に使用されたものと同
じになる。したがって、当該ある分岐命令の予測の精度
は、このように分岐予測情報バッファへの格納アドレス
を動的に管理しない場合と比較して、より高くなる。
【0093】
【実施例】以下この発明のいくつかの実施例を図面を参
照して説明する。なお以下の実施例の各図面においては
図示されていないが、命令キャッシュは主メモリに接続
されており、命令の一部を常に保持しており、フェッチ
アドレスに該当する命令がない場合には主メモリから読
出してくるものとする。これは従来の技術における命令
キャッシュと同様である。
【0094】[第1の実施例]図1〜図14は、本発明
の第1の実施例に係る分岐予測装置に関する図面であ
る。
【0095】図1を参照して、この分岐予測装置は、命
令キャッシュ60と、命令パイプライン50と、命令パ
イプライン50の演算結果を格納するレジスタファイル
52とに接続されている。分岐予測装置は、命令パイプ
ライン50からの情報から予測情報を生成するための予
測情報生成機構54と、分岐予測装置から出力されるフ
ェッチアドレスと予測情報生成機構54からの予測情報
とを一時格納するための予測情報バッファ56と、予測
情報バッファ56からの予測情報と、レジスタファイル
52に格納されている演算結果と、命令パイプライン5
0からの予測ミス情報とに基づき、分岐予測を行なうた
めの分岐予測機構58とを含む。なお、図1には示され
ていないが、命令パイプライン50は、予測情報バッフ
ァ56の読出/書込制御信号を出力し、予測情報バッフ
ァ56に与えている。
【0096】予測情報とは、分岐を決定するコンディシ
ョンあるいはそのもとになるデータを保持するレジスタ
番号、分岐条件などの分岐情報、分岐先情報などをい
う。
【0097】図1に示される命令パイプライン50は、
図2に示されるような命令パイプライン処理を行なうも
のである。もちろん本発明はこのような命令パイプライ
ン処理を行なうプロセッサのみに限定的に適用可能なわ
けではなく、他のパイプライン処理を行なうものについ
ても、必要な修正を行なうことにより適用できる。
【0098】図2に示されるように、ある命令はIFス
テージと、Dステージと、EXCステージと、MEMス
テージと、WBステージとに分割される。IFステージ
の後半およびDステージの前半で命令フェッチが、Dス
テージの後半でデコード、オペランドフェッチが、EX
Cステージで演算実行が、MEMステージでメモリアク
セスが、Wステージでレジスタ書込がそれぞれ行なわれ
る。分岐命令の場合にはEXCステージの前半で分岐実
行処理が行なわれる。
【0099】このパイプライン方式では、図3に示され
るように、各命令を1ステージずつずらせて実行し、1
ステージに要するサイクルタイムごとに1つの命令の実
行が終了するようになっている。
【0100】本実施例では、図3に示されるように、命
令i−1がフェッチされる間(IFステージ後半からI
Dステージ前半)に、分岐命令iに対する予測情報を予
測情報バッファ56(図1参照)から読出して分岐予測
機構58(図1参照)に与える。分岐予測機構はレジス
タファイル52に読出要求を行ない、IDステージの後
半でレジスタファイルに格納されていたコンディション
コードあるいはそのもとになるデータを読出す。そして
EXCステージ前半で所定の分岐予測計算を行ない、分
岐する(taken )/分岐しない(not-taken )の予測を
決定する。これは図3のEXCステージ前半の「BP」
の部分に相当する。
【0101】taken 予測の場合には、この予測と並行し
て生成された分岐先アドレスを、分岐命令の次のサイク
ルにフェッチすべき命令(命令n+1)のフェッチアド
レスとして命令キャッシュに与える。not-taken 予測の
場合には、Fall-through命令のアドレスをフェッチアド
レスとする。Fall-through命令とは、分岐不成立の場合
に実行する命令のことであり、通常は静的に分岐命令の
次に位置する命令を指す。
【0102】すなわち命令iの分岐命令の前の命令i−
1で命令iの分岐予測情報を読出して分岐予測を行な
い、命令i+1のフェッチアドレスを生成するので、分
岐予測に時間的余裕がある。
【0103】予測情報バッファ56の構成を図12に示
す。予測情報バッファ56は、従来技術におけるBTB
のようなバッファである。図12を参照して予測情報バ
ッファ56には、複数個のエントリ0〜n−1がある。
各エントリ130は、有効フラグ132と、検索アドレ
ス134と、予測情報136と、分岐先情報138とか
らなる。予測情報バッファ56は一種の連想メモリであ
り、検索アドレス134としては、分岐命令の1サイク
ル前にフェッチされる命令(図3における命令i−1)
のアドレスを登録する。なお、検索アドレスとして他の
アドレスを使用することも考えられる。そうした実施例
は後述の第9の実施例に示す。有効フラグ132は、エ
ントリ130に格納されている予測情報、分岐先情報が
有効かどうかを示すフラグである。
【0104】予測情報136および分岐先情報138は
次のようにして予測情報バッファに登録される。分岐命
令が実行されると、分岐命令と比較命令(必要な場合)
のオペレーション、オペランドに基づいて分岐予測機構
で予測を行なうのに必要な予測情報を予測情報生成機構
54が生成する。この予測情報は図12のエントリ13
0の予測情報136として予測情報バッファに登録され
る。このとき分岐先アドレスも分岐先情報138として
登録される。
【0105】参照時には予測情報バッファ56は、フェ
ッチアドレスで命令キャッシュと同時にアクセスされ
る。予測情報バッファの各エントリの検索アドレスとフ
ェッチアドレスとの比較を行ない、一致するエントリが
あればその予測情報と分岐先アドレスとを分岐予測機構
58に与える。
【0106】ところで、条件分岐はコンディション生
成、条件判定、分岐先アドレス生成、分岐先設
定、という4つの一連の動作を行なう必要がある。ただ
しこの場合分岐先アドレス生成処理はおよびと並行
して実行することが可能である。条件分岐の処理量はそ
のため、ALU演算などに比べて多い。しかも、分岐命
令のフェッチから、分岐先命令のフェッチまでを短くす
ることにより分岐ディレイを抑えてミスフェッチ時のペ
ナルティを少なくするためには、他の命令よりも早いス
テージで条件分岐を終了する必要がある。
【0107】図3に示される命令パイプラインで条件分
岐を1命令で処理するためには、EXCステージの前半
でおよびの処理を行なう必要がある。のコンデ
ィション生成は大小比較を行なうので、32ビットアー
キテクチャの場合には32ビットの減算が要求される。
32ビット減算という演算は、ALUが1サイクルかけ
て行なう処理である。このような処理をたとえば半サイ
クルで行なうことにすると、バランスがとれたパイプラ
インを構成できない。
【0108】そこで通常のRISC(Reduced Instruct
ion Set Computer)プロセッサでは条件分岐処理を比較
命令と分岐命令との2つに分割する。比較命令ではの
処理を、分岐命令ではの処理を行なう。たとえば
既存のあるシステムでは、すべての条件分岐を比較命令
と分岐命令とに分割して処理する。一方で、コンディシ
ョン生成を簡単に行なえる場合に限ってを処理
する分岐命令を用意しているので、比較命令+分岐命令
で処理する場合と、分岐命令だけで処理する場合との2
つの場合が存在するシステムもある。
【0109】図58に示される分岐予測機構58は、後
者の場合すなわち比較命令+分岐命令で処理する場合
と、分岐命令だけで処理する場合との両方に対処でき
る。もちろんこの実施例は一例であって、比較命令+分
岐命令のみを用いて処理するシステムを構成することも
容易に行なえる。
【0110】図4を参照して分岐予測機構58は、予測
情報デコーダ70と分岐予測回路72と分岐先生成回路
74とフェッチアドレス生成回路76とを含む。
【0111】予測情報デコーダ70は予測情報を予測情
報バッファ56から受取り、分岐予測オペレーション、
定数などを分岐予測回路72に、分岐先情報を分岐先生
成回路74に与え、アクセスすべきレジスタのレジスタ
番号をレジスタファイル52に対して出力することによ
りアクセス要求を行なう。
【0112】分岐予測回路72の詳細については図9を
参照して後述するが、予測情報デコーダ70により指定
されたレジスタ番号のレジスタからのデータ(レジスタ
1)と、予測情報デコーダ70から与えられる分岐予測
オペレーションおよび定数に従い、分岐方向を予測して
分岐予測信号を出力するためのものである。
【0113】分岐先生成回路74は、予測情報デコーダ
70からの分岐先情報と、レジスタから与えられる分岐
先アドレスと、フェッチアドレス生成回路76の出力す
るフェッチアドレスとからtaken 予測時の分岐先アドレ
スを生成するためのものである。
【0114】フェッチアドレス生成回路76は、分岐予
測回路72からの分岐予測信号に応答し、分岐先生成回
路74からの分岐先アドレスと、パイプライン50から
の予測ミス情報と、直前のフェッチアドレスとから、次
にフェッチすべきであると予測される命令のアドレスを
生成するためのものである。
【0115】以下では、分岐処理に関する命令として以
下の処理を行なうコードを考える。ただし以下の説明に
おいて$aはaで指定されるレジスタの値を、Labe
lは分岐先アドレスを示すものとする。またたとえば$
0は値0を保持する特定のレジスタの値、すなわち値0
を指すものとする。
【0116】たとえば比較命令sltと、4つの分岐命
令beq、ble、bgez、bltzを次のように定
める。
【0117】
【表1】
【0118】この命令コードの場合、条件分岐と処理は
以下のように実現できる。
【0119】
【表2】
【0120】本実施例の分岐予測装置は、分岐処理の命
令コードによって、分岐予測回路72(図4)のフェッ
チするレジスタ値に対して、次のような分岐予測オペレ
ーションを行なって分岐予測を行なう。
【0121】(1) 分岐処理の命令コードが比較命令
+分岐命令の場合(図5) (i) 比較命令と分岐命令との間が1サイクル以上離
れている場合(図5(a)) 図10を参照して、比較命令(命令n−m)と、分岐命
令(命令n)との間が1サイクル以上離れている場合に
は、分岐予測機構が比較命令sltの実行結果を参照で
きる。したがって、比較命令sltで生成されたコンデ
ィション$dをそのまま分岐予測に用いることができ
る。予測フェッチに用いるデータをsrc1、src
2、…とすると予測フェッチデータとしてはsrc1=
$d、src2=$0、分岐予測オペレーションは「一
致比較結果の反転を出力する。」となる。分岐命令がb
neではなくbeqであれば分岐予測オペレーションは
「一致比較結果を出力する。」となる。
【0122】(ii) 比較命令が分岐命令の直前にある
場合(図5(b)) 図5(b)に示されるように、比較命令slt(命令n
−1)が分岐命令bne(命令n)の直前にある場合、
比較命令sltのソースオペランド($a、$b)を分
岐予測に用いる。すなわち、予測フェッチデータsrc
1=$a、src2=$bである。このときの分岐予測
オペレーションは「大小比較結果を出力する。」とな
る。ただしこれは分岐命令がbneの場合であって、分
岐命令がbeqであれば分岐予測オペレーションは「大
小比較結果の反転を出力する。」となる。
【0123】(2) 分岐命令1つで処理する場合(図
6) (i) 分岐命令とそのオペランドを生成する命令の間
が1サイクル以上離れている場合(図6(a)) 図6(a)を参照して、分岐命令beq(命令n)が参
照するオペランド($d,$c)を分岐予測にも用いる
ことができる。したがって予測フェッチデータsrc1
=$d、src2=$cとなり、分岐予測オペレーショ
ンは「一致比較結果を出力」となる。この分岐予測オペ
レーションは分岐命令がbeqの場合であり、分岐命令
がbneであれば分岐予測オペレーションは「一致比較
結果の反転を出力」となる。
【0124】(ii) 分岐のオペランドを生成する命令
が即値を用いた計算を行なうものであり、かつ分岐命令
の直前にあり、分岐命令で使用される比較値が定数の場
合(図6(b)) 図6(b)を参照して、命令n−1でオペランド$aか
ら即値C1を引いた値をaで指定されるレジスタに格納
する。そして命令nではこの$aと分岐の比較値$c
(定数C)との一致を判定している。この場合、$aの
内容が命令n−1の処理により書換えられるため、命令
n−1の段階で$aをフェッチしてそれに基づいて分岐
予測を行なっても正しい予測は得られない。そこで次の
ようにする。
【0125】分岐の比較値$c(定数C2)から命令n
−1の即値C1を引いた値(C2−C1)を分岐予測情
報の予測定数として分岐予測情報に登録しておく。そし
て分岐予測では、この予測定数と分岐命令のソースオペ
ランド($a)とを比較する。よって予測フェッチデー
タsrc1は$a、src2は予測定数(C2−C1)
となり、分岐予測オペレーションは「一致比較結果を出
力」となる。この分岐予測オペレーションは分岐命令が
「beq」の場合であり、分岐命令が「ble」であれ
ば分岐予測オペレーションは「一致比較結果の反転を出
力」となる。
【0126】なお、無条件分岐の場合には予測フェッチ
データとしてsrc1=$0、src2=$0とし、分
岐予測オペレーションは「一致比較結果を出力」とす
る。これにより常にtaken 予測となり無条件に分岐す
る。
【0127】さらに、次のような場合について考える。
0との大小比較を行なう分岐命令としてbgezおよび
bltzの2つが用意されていることについては既に述
べた。この命令について図7を参照して問題点を述べ
る。
【0128】図7を参照して、0との大小比較を行なう
分岐命令、たとえば命令bgez(命令n)が、対応す
る比較命令を持たず、かつその直前にこの分岐命令の分
岐のオペランドを生成する命令があり、かつそのオペラ
ンドを生成する命令がレジスタ値を用いる計算を行なう
場合には、命令n−1がフェッチされるタイミングで$
aを得て分岐予測を行なうことができない。
【0129】この場合、次のようにすれば命令n−1が
フェッチされる時点から分岐予測を開始することが可能
である。すなわち図7に示される例の場合、命令n−1
で$a=$b+$cを計算し、命令nで$aと0との大
小関係を比較している。そこで、$aが生成されるのを
待たず、命令n−1がフェッチされるのと同じタイミン
グで$bおよび$cを得て、$b+$cを計算してそれ
と0との大小比較を行なうことにより、命令nでの分岐
命令の分岐予測を行なうことができる。本実施例では、
このような分岐予測も行なうことができる構成となって
いる。
【0130】あるいは図8を参照して、対となる比較命
令を有さない条件分岐命令beq(命令n)において、
分岐のオペランドを生成する命令が分岐命令の直前(命
令n−1)にあり、この命令がレジスタ値を用いると、
図7の場合と同様に分岐命令の分岐予測を行なうことが
できない。この問題は次のようにすれば解決できる。
【0131】図8を参照して、命令n−1で$bと$c
との和を計算して$aとし、命令nでこの$aと$dと
の一致を判定している。そこで、命令n−1のフェッチ
時に$bと$cとを得て、この和と$dとを比較すれ
ば、命令n−1により$aを計算されるのを待たず、命
令nの分岐予測を行なうことができる。本実施例の装置
はこのような予測も可能な構成となっている。
【0132】図9は、以上説明した問題を解決するよう
な構成となっている分岐予測回路72のブロック図であ
る。図9を参照して、分岐予測回路72は、大小比較回
路80と、一致比較回路82と、マルチプレクサ84、
86および92と、反転回路88および90とを含む。
【0133】大小比較回路80の2つの入力S1および
S2にはそれぞれ、ソースオペランドsrc1およびs
rc2が与えられる。マルチプレクサ84の2つの入力
にはソースオペランドsrc1と、大小比較回路80の
出力とが与えられる。マルチプレクサ84は、図4に示
す予測情報デコーダ70から与えられる分岐予測オペレ
ーションに従って入力の一方を選択して出力する。
【0134】マルチプレクサ86は3入力である。1つ
の入力にはソースオペランドsrc2が与えられる。他
の1つの入力には図4に示す予測情報デコーダ70から
の定数データが与えられる。残りの入力にはソースオペ
ランドsrc3が与えられる。マルチプレクサ86は予
測情報デコーダ70からの分岐予測オペレーションに応
答して、3つの入力のうちのいずれか1つを選択して出
力する。
【0135】一致比較回路82は2つの入力S1および
S2を有する。入力S1はマルチプレクサ84の出力に
接続されている。入力S2はマルチプレクサ86の出力
に接続されている。一致比較回路82は、入力S1およ
びS2が一致しているか否かを示す信号を出力するため
のものである。
【0136】反転回路88および90の入力はそれぞれ
大小比較回路80および一致比較回路82の出力に接続
されている。
【0137】マルチプレクサ92は4つの入力を有し、
その入力はそれぞれ反転回路88の出力と、大小比較回
路80の出力と、一致比較回路82の出力と、反転回路
90の出力とに接続されている。マルチプレクサ92は
分岐予測オペレーションに応答して、4つの入力のうち
1つを選択して出力する。この出力が予測信号であり、
0の場合にnot-taken 、1の場合にtaken を示す。
【0138】なお大小比較回路80は基本的には2つの
入力S1およびS2の大小を比較してその符号ビットを
出力するためのものであるが、分岐予測オペレーション
によって、2つの入力S1およびS2の値を加算して結
果を出力するようにも動作できる。その詳細については
後述する。大小比較回路80は、もともと減算回路を含
むので、このような加算処理も可能となる。なお大小比
較回路80の出力として、符号ビットのほかに加算また
は減算結果の絶対値のデータも含まれるが、それらはマ
ルチプレクサ84に符号ビットとともに与えられる。
【0139】図10を参照して、大小比較回路80は、
加算器100と、反転回路102と、マルチプレクサ1
04と、0または1の定数データを発生する定数発生回
路108と、マルチプレクサ104の出力のLSB(最
下位ビット)に定数発生回路108の出力を加算するた
めのLSB加算器106とを含む。
【0140】もともと大小比較回路80は、src2の
2の補数の最下位ビットに1を加算したものをsrc1
に加算することにより、src1−src2を計算して
いる。この「反転して最下位ビットに1を加算する」処
理を行なわなければ、src1とsrc2との加算が行
なえる。大小比較回路80はそのような機能を含ませる
ことにより、2つの入力src1およびsrc2の間の
大小比較のみならず加算処理も行なえるようにしたもの
である。
【0141】反転回路102の入力にはsrc2が与え
られる。マルチプレクサ104の一方入力には反転回路
102の出力が、他方入力にはsrc2がそのまま与え
られる。マルチプレクサ104は分岐予測オペレーショ
ンに応答して2つの入力のいずれか一方を選択して出力
する。
【0142】定数発生回路108は、分岐予測オペレー
ションに応答して動作し、大小比較を行なう場合には1
を、加算処理を行なう場合には0をそれぞれ出力する。
【0143】LSB加算器106は、マルチプレクサ1
04の出力する値の最下位ビットに、定数発生回路10
8の出力を加算するためのものである。
【0144】加算器100の一方の入力にはsrc1
が、他方入力にはLSB加算器106の出力がそれぞれ
与えられている。加算器100はこれら2つの入力を加
算して少なくとも符号ビットを出力する。前述のように
加算器100により符号ビットのみならず他の演算結果
も得られる。符号ビットを調べることにより、src1
−src2≧0またはsrc1+src2≧0の判定も
行なうことができる。
【0145】図9および図10に示される分岐予測回路
72を用いることにより、図5〜図8に示すような各ケ
ースについて、分岐予測を次のようにして行なうことが
できる。
【0146】たとえば図5(a)に示されるケースを考
える。src1として$dを、src2として$0をそ
れぞれ入力する。マルチプレクサ84はsrc1を選択
して一致比較回路の入力S1に与える。マルチプレクサ
86はsrc2を選択して一致比較回路82の入力S2
に与える。一致比較回路82は2つの入力の一致比較結
果をマルチプレクサ92および反転回路90に与える。
マルチプレクサ92は、分岐予測オペレーションにより
反転回路90の出力を選択する。これにより上述の
(1)(i)のケースの分岐予測が行なえる。なおこの
場合大小比較回路80は使用されない。
【0147】図5(b)に示されるケースでは次のよう
な動作を行なう。src1としては$aを、src2と
しては$bをそれぞれ与える。図10を参照して、定数
発生回路108は1をLSB加算器106に与える。マ
ルチプレクサ104は反転回路102の出力を選択して
LSB加算器106に与える。LSB加算器106はマ
ルチプレクサ104の出力の最下位ビットに1を加算し
て加算器100に与える。加算器100はsrc1とL
SB加算器106の出力とを加算してその符号ビットを
図9に示されるマルチプレクサ92および反転回路88
の入力に与える。マルチプレクサ92は、分岐予測オペ
レーションに従って大小比較回路80の出力を選択して
予測信号として出力する。これにより上述の(1)(i
i)の動作を行なうことができる。なお分岐比較命令が
beqの場合には、マルチプレクサ92により反転回路
88の出力を選択させるようにすればよい。
【0148】図6(a)のケースに対処するためには次
のようにする。予測フェッチデータとしてsrc1は$
dを、src2は$cをそれぞれ与える。マルチプレク
サ84はsrc1、マルチプレクサ86はsrc2を選
択する。一致比較回路82の出力をマルチプレクサ92
により選択して予測信号とする。これにより図6(a)
の分岐予測を行なうことができる。なお、分岐命令がb
neであれば反転回路90の出力を選択すればよい。こ
れにより、上述の(2)(i)の処理を行なうことがで
きる。
【0149】図6(b)のケースは次のように対処す
る。予測フェッチデータとしてsrc1は$aを、sr
c2は予測定数(C2−C1)を選択する。ただしこの
場合src2は予測情報バッファ56(図1参照)から
の定数データとして与えられるものとする。図9を参照
して、マルチプレクサ84はsrc1を選択する。マル
チプレクサ86は定数データを選択する。マルチプレク
サ92は一致比較回路82の出力を選択する。もしも分
岐命令がbneであれば、マルチプレクサ92には反転
回路90の出力を選択させる。これにより上述の(2)
(ii)の動作を行なうことができる。
【0150】無条件分岐の場合には、図9に示されるs
rc1とsrc2にはそれぞれ$0を与え、マルチプレ
クサ84はsrc1を、マルチプレクサ86はsrc2
をそれぞれ選択するようにする。マルチプレクサ92は
一致比較回路82の出力を選択する。一致比較回路82
の2つの入力が常に一致するので、予測信号は常にtake
n 予測となる。
【0151】図7に示されるケースには次のように対処
する。src1として$bを、src2として$cを与
える。図10を参照して、大小比較回路80のマルチプ
レクサ104はsrc2を選択してLSB加算器106
に与える。定数発生回路108は0を発生してLSB加
算器106に与える。LSB加算器106はマルチプレ
クサ104の出力の最下位ビットに定数0を加算して加
算器100に与える。すなわちLSB加算器106の出
力はsrc2そのものとなる。加算器100はsrc1
とsrc2とを加算して符号ビットと絶対値とを出力す
る。加算器100の出力する符号ビットを調べることに
より、src1+src2≧0の判定を行なうことがで
きる。これにより、図7に示されるようなケースでも、
命令n−1の完了を待たずに分岐命令nの分岐予測を行
なうことができる。すなわち、分岐のオペランドを生成
する命令が分岐命令の直前にありレジスタ値を用いた計
算を行なう場合でも、分岐命令が0との大小比較であれ
ば予測を行なうことができる。
【0152】さらに図8に示されるケースについては次
のように対処する。図8のケースでは、$b+$c=$
dの判定を行なう必要がある。この場合、図10を参照
して、マルチプレクサ104はsrc2を選択し、定数
発生回路108は0を発生するようにする。すると上述
のように加算器100はsrc1とsrc2との加算結
果を出力する。すなわちsrc1として$bを、src
2として$cを与えれば、加算器100の出力に$b+
$cが得られる。
【0153】図9を参照して、マルチプレクサ84は大
小比較回路80の出力($b+$c)を選択する。sr
c3として$dを与え、マルチプレクサ86がsrc3
を選択するようにする。これにより一致比較回路82で
$b+$c=$dの判定を行なうことができる。マルチ
プレクサ92により一致比較回路82の出力を選択すれ
ば分岐命令beqの分岐予測を行なうことができ、マル
チプレクサ92により反転回路90の出力を選択するよ
うにすれば、分岐命令bneの分岐予測を行なえる。
【0154】したがって分岐のオペランドを生成する命
令が分岐命令の直前にあり、レジスタ値を用いた計算を
行なう場合でも、あらゆる分岐命令に対して予測を行な
うことができる。すなわち定数または変数と一致、定数
または変数との大小比較による分岐命令に対して予測を
行なうことができる。
【0155】なお、図10は、多くの機能を可能とする
ための構成であり、一部の機能のみを実現するために他
の不要な部分を省略可能であることは、当業者には明ら
かである。
【0156】ところで、図1および図12に示される予
測情報バッファ56の分岐先情報138として、分岐先
アドレスそのものを格納させてもよい。しかし、たとえ
ば32ビットアーキテクチャのプロセッサでは分岐先ア
ドレスのビット数は30ビット程度とかなり大きい。予
測ヒット率を向上させるためには予測情報バッファ56
のエントリ数を増加させればよいと考えられるが、予測
情報バッファに保持させる分岐先アドレスのビット長が
大きいとバッファの面積が非常に大きくなってしまうと
いう問題がある。そこで次のようにしてバッファの面積
の増加を抑えるようにしている。
【0157】図11を参照して、分岐先情報として分岐
先がPC(プログラムカウンタ)相対で指定されるかレ
ジスタ値で指定されるかを選択する情報と、PC相対の
ときの加算値となる即値またはレジスタ番号を保持させ
るようになっている。そして分岐先生成回路70は、フ
ェッチアドレスと、分岐先情報に含まれる即値とを加算
するための30ビットの加算器120と、分岐先情報に
格納されていたレジスタ番号から読出されたレジスタ値
が与えられる入力と、加算器120の出力が与えられる
入力とを有し、PC相対/レジスタ値選択情報に応答し
て2つの入力の一方を選択して分岐先アドレスとして出
力するマルチプレクサ122とを含む。
【0158】選択情報がPC相対を指定しているときに
は、マルチプレクサ122は加算器120の出力を選択
する。一方選択情報がレジスタ値を選択している場合に
は、マルチプレクサ122はレジスタ値を選択する。な
おこのレジスタ値は、図12に示される分岐先情報13
8に格納されていたレジスタ番号により指定されたレジ
スタから読出された値である。
【0159】BTBを用いた分岐予測では、BTB読出
と予測分岐先設定とを1サイクル内で行なわなければな
らないので、加算を行ない分岐先を生成する時間はな
い。したがってBTB方式では分岐先アドレスをBTB
にそのまま保持していた。しかし本発明のような分岐予
測方式では、予測情報を得てから予測分岐先設定までに
1サイクルの時間があるので、30ビット程度の加算は
十分に行なうことができる。またレジスタフェッチもで
きるため、レジスタ指定の分岐命令の場合でも、その分
岐先アドレスをレジスタを参照して生成できる。
【0160】PC相対のオフセットにせよレジスタ番号
にせよ即値として十数ビットで済む。分岐先情報138
(図12)が、分岐先アドレスをそのまま保持した場合
の30ビットから、即値とオペレーションとを合せた十
数ビットに抑えることができるので、バッファの各エン
トリを小さくすることができる。その結果予測情報バッ
ファ56(図1参照)のハードウェア量を減らすことが
できる。あるいは、予測ヒット率を上げるためにエント
リ数を増加しても、ハードウェアの増加量を小さく抑え
ることができる。
【0161】以上のように本実施例の分岐予測方式で
は、過去の履歴情報を予測に用いるのではなく、これか
ら実行する分岐命令が参照するコンディション、あるい
はそのコンディションを生成するためのもとになるデー
タを予測に用いる。本方式ではこのように、分岐方向決
定に実際に使用するデータに基づいて予測を行なうた
め、過去の実行結果と相関がなく、ランダムに分岐方向
が変わる分岐命令についても有効に予測を行なうことが
できる。
【0162】本方式を従来の履歴に基づいた方式と区別
して、データ参照分岐予測方式と呼ぶ。
【0163】データ参照分岐予測方式の利点は少なくと
も2つある。今述べたように、予測においては、分岐命
令が実際に使用するデータに基づいた予測処理が行なわ
れる。したがって過去の実行結果とは相関がない分岐命
令に対しても有効な予測を行なうことができる。もう1
つのポイントは、あくまで分岐予測であるため、分岐方
向を予測するための条件判定に用いる比較は、分岐命令
が参照するデータの完全な比較を行なう必要はなく、そ
の一部でよいということである。つまり、図9に示され
る大小比較回路80や一致比較回路82などは、データ
のすべての比較を行なう必要はない。たとえばサイクル
タイムを延ばさない範囲で比較できるビット数のみを比
較すればよい。たとえば符号ビットと下位7ビットのみ
を比較することが考えられる。これにより、比較時間が
短くなるだけではなく、分岐予測のためにデータを供給
する専用レジスタファイルも8ビットで済み、その面積
を小さく抑えることができる。
【0164】マクファーリング(McFarling )らによる
と、完全な比較が必要なのは全比較回数の8%程度であ
り、これに対して0と比較すればよい処理は56%に上
る。0との比較であれば、符号ビットと下位7ビットと
を利用した比較のみで十分である。多くのビットを比較
しなければ正確な予測が行なえない場合は少ないと考え
られるため、データの一部のみを比較しても、かなり有
効な予測が行なえることが期待できる。
【0165】このように符号ビットと下位の複数ビット
のみを使用して比較すれば、サイクルタイムを延ばすこ
となくかなり有効に予測を行なうことが期待できる。し
かし、この方式では、上位ビットが予測結果に全く反映
されないという問題点もある。上位ビットも何らかの形
で比較に反映できれば、より有効な予測が行なえるだろ
うと考えられる。しかしこの場合にも、サイクルタイム
を延ばさないようにする必要がある。
【0166】そこで本実施例装置では、分岐予測機構が
参照し比較に用いる値を、次のような方式で圧縮して比
較に用いる。
【0167】たとえば10進数で256と16とを計算
機で比較する場合を考える。これら値は2進表示では
「100000000」と「000010000」とな
る。仮に前述のように符号ビットとたとえば下位7ビッ
トのみを比較すると、256は「00000000」、
16は「00010000」となり、256<16とな
る。ただし符号ビット0が正を表わす。その結果比較結
果が誤ることになり、正しい予測結果を得ることができ
ない。
【0168】そこで本実施例では、図13に示されるよ
うに、レジスタファイル52に書込まれるデータを圧縮
するための圧縮部156を設け、併せてレジスタ52の
中に、本来のレジスタファイルである第1のレジスタフ
ァイル152と、圧縮されたデータを格納するための専
用のレジスタファイルである第2のレジスタファイル1
54とを設け、圧縮部156により圧縮されたデータを
レジスタファイル154に格納することにした。
【0169】図13を参照して、レジスタファイル15
2および154にはデコーダ150が接続され、併せて
制御信号が与えられる。デコーダ150は、レジスタ番
号が与えられると、レジスタファイル152および15
4の該当するレジスタ行をデータ線158に接続する。
データ線158は、src1用の32本のデータ線と、
src2用の32本のデータ線と、src3用の32本
のデータ線とからなる。これらデータ線は分岐して圧縮
部入力160となり、圧縮部156への入力となってい
る。圧縮部156からは圧縮部出力162が出ており、
レジスタファイル154の入力に接続されている。レジ
スタファイル154からの出力は、データ線158の一
部のデータ線に出力データ線164を介して接続されて
いる。
【0170】図13に示されるレジスタファイルは次の
ように動作する。レジスタファイル152への書込は次
のとおりである。デコーダ150にレジスタ番号が与え
られる。制御信号により、レジスタファイルの各レジス
タセルを、src1、src2、src3のどのデータ
線と接続するか、およびデータの入出力のいずれが選択
されるかの情報がレジスタファイル152に与えられ
る。レジスタファイル152の、デコーダ150により
選択されたレジスタセル行の各レジスタが、対応のデー
タ線に接続され、データの入出力が行なわれる。
【0171】レジスタファイル154へのデータの書込
は次のように行なわれる。データ線158上のsrc
1、src2、またはsrc3のためのデータ線に、書
込のためのデータが出力される。圧縮部156はこのデ
ータを圧縮し、レジスタファイル154に与える。レジ
スタファイル154の、デコーダ150によって選択さ
れたレジスタセル行の各レジスタセルは、制御信号に従
ってsrc1、src2、またはscr3のデータ線に
接続され、データを格納する。
【0172】データの読出では逆に、レジスタファイル
154のあるレジスタ行をデコーダ150によって選択
し、データ線164を介してデータ線158上に出力す
る。この場合レジスタファイル154に格納されている
データが圧縮済みのデータであるので、データ線158
上に出力されるのも圧縮されたデータである。
【0173】仮に、予測情報のためのデータを圧縮せず
に一部のみをレジスタファイル154に格納するのであ
れば、圧縮部156は不要である。その場合はたとえば
データの符号ビットと下位7ビットとをレジスタファイ
ル154に導き、レジスタファイル154の出力は同じ
くデータ線158の符号ビットと下位7ビットのデータ
線に導けばよい。もちろん使用されるビットは符号ビッ
トと下位7ビットとには限定されず、他のビットを用い
てもよい。
【0174】この実施例では、レジスタファイル154
に格納する前にデータの圧縮を行なっている。これは、
分岐予測機構の負荷を軽くし、また分岐予測のために必
要なレジスタファイルの容量も減らすためである。もち
ろん、レジスタファイルには圧縮前のデータをすべて書
込み、読出後に圧縮してもよい。その場合には専用のレ
ジスタファイル154を設ける必要はなく、レジスタフ
ァイル152に書込めばよいが、分岐予測機構の負荷が
重くなるという欠点がある。
【0175】圧縮の方法としては、図14に示されるよ
うな方法が考えられる。図4(a)に示される例では、
最上位ビット(ビット31)はそのまま使用し、ビット
30〜ビット8については、8ビットごとに論理和をと
って1ビットとする。最下位のビット7〜0については
そのまま使用する。これにより、符号の1ビット+圧縮
後の3ビット+最下位8ビットの合計12ビットにデー
タを圧縮できる。これにより256と16との比較も、
256=「000100000000」、16=「00
0000010000」となり、256>16という正
しい結果を得ることができる。
【0176】このほかにも様々なビット数のまとめ方が
存在する。図14(b)〜(d)にその例を示す。いず
れの場合も、符号ビット(ビット31)と下位の複数ビ
ットとはそのまま使用し、間のビットについて何ビット
かの単位で論理和をとることにより比較結果に反映させ
る。
【0177】このようにすることにより、比較するビッ
ト数をあまり増やさずに、かつ上位ビットの値もある程
度比較結果に反映させることができるので、より高い分
岐予測のヒット率を得ることができる。
【0178】このようなデータ参照予測方式では、レジ
スタ番号などのハードウェアを指定する情報を分岐予測
機構に供給し、分岐予測機構がその情報をもとに実行結
果を読出して分岐予測を行なう。この場合予測に必要な
ハードウェア指定情報を命令によって供給することもで
きるが、そうした場合には情報を供給する命令の位置を
分岐命令に対して固定しなければならない。すなわちス
ケジューリングに制限を与えてしまう。あるいは、命令
に新たなフィールドを設ける必要がある。
【0179】そこで本実施例では、分岐予測に使用する
情報はレジスタファイルなどのハードウェアが保持し、
参照すべきデータを保持するそのハードウェアを指定す
る情報(レジスタ番号など)をバッファが保持すること
としている。この方式を間接方式と呼ぶ。これにより、
命令の位置を固定したり、命令に新たなフィールドを設
けることなく、分岐予測機構に対してハードウェアを指
定する情報を供給することができる。
【0180】こうした問題は履歴による分岐予測を行な
う場合でもあり得る。すなわち、分岐先をレジスタ値に
より設定するレジスタ相対分岐命令の場合、分岐先が変
化する。そのため分岐方向の予測が一致していたとして
も、分岐予測がミスヒットになってしまう可能性があ
る。その場合でも、分岐先アドレスをあるハードウェア
に格納しておき、そのハードウェアを指定する情報を分
岐予測機構に供給することで、分岐先アドレスが変化し
ても正しい分岐先アドレスを得ることができる。すなわ
ち、このようにハードウェアを指定する情報を分岐予測
機構に与えるという考えは、データ参照予測方式のみに
適用可能なだけではなく、履歴による分岐予測とも組合
わせて使用することができる。
【0181】[第2の実施例]第1の実施例に示したデ
ータ参照分岐予測方式は、分岐命令が実際に用いるデー
タを、分岐命令の前にフェッチされる命令と同じタイミ
ングで得て、そのデータに基づいて分岐予測を行なうの
で、過去の実行履歴と相関のない分岐命令についても有
効な予測を行なうことができる。しかし、予測に用いる
データが予測を行なう時点に間に合わないような条件分
岐命令もあり得る。そうした場合にはデータ参照分岐予
測方式では有効な予測を行なうこができない。
【0182】そこでこの第2の実施例では、上述したよ
うな命令に対しては、データ参照予測情報の代わりに履
歴情報を保持させ、さらに分岐予測機構に履歴による予
測を行なうハードウェアを用意して、履歴による予測も
行なえるようにしている。
【0183】図15は、この第2の実施例の分岐予測装
置の概略のブロック図である。図15を参照してこの装
置は、予測情報バッファ170と、データ参照による分
岐予測機構58と、レジスタファイル52と、履歴によ
る分岐予測機構172と、マルチプレクサ174とを含
む。データ参照による分岐予測機構58およびレジスタ
ファイル52は、図1に示す第1の実施例の分岐予測機
構およびレジスタファイル58および52と同様のもの
である。
【0184】履歴による分岐予測機構172は、従来の
技術で説明したディレイドスロット方式またはBTB方
式による分岐予測機構である。BTBを予測情報バッフ
ァ170の中に設けてもよいし、別個に設けてもよい。
【0185】予測情報バッファ170の各エントリの構
成を図16に示す。図16を参照してエントリ180
は、図12に示した、第1の実施例の予測情報バッファ
エントリ130と同様であるが、予測方式ビット182
を新たに含む。予測方式ビットは、予測方式を指定する
ビットである。図15に示されるように、予測情報バッ
ファ170はこの予測方式ビットをマルチプレクサ17
4に与えることにより、履歴による分岐予測機構172
の出力する予測と、データ参照による分岐予測機構58
の出力する予測とのいずれか一方を選択する。
【0186】予測情報バッファ170への登録は次のよ
うにして行なわれる。分岐命令が実行されると、その予
測を履歴によるまたはデータ参照による分岐予測機構の
いずれで行なうかを決定し、決定結果に従って予測情報
バッファの予測情報フィールドに情報の登録を行なう。
データ参照予測方式が適用できない場合には予測情報フ
ィールドの予測方式ビットを履歴予測にセットし、分岐
の実行結果(履歴情報)を予測情報に登録し、更新す
る。データ参照予測方式が適用できる場合には、予測方
式ビットをデータ参照予測方式にセットし、予測フェッ
チデータのレジスタ番号、分岐予測オペレーションその
他を予測情報として登録、更新する。
【0187】予測は、次のように行なわれる。命令フェ
ッチの際のアドレスに基づいて予測情報バッファ170
から予測情報が読出されると、履歴による分岐予測機構
172およびデータ参照による分岐予測機構58がそれ
ぞれ予測を行ない、予測結果をマルチプレクサ174に
与える。マルチプレクサ174は予測情報バッファ17
0から出力される予測方式ビットに従って、いずれかの
予測結果を選択する。
【0188】予測方式ビットと、予測情報バッファとの
関係を示したものが図17である。このようにデータ参
照予測方式で対応できない条件分岐に対して、履歴を用
いた予測を行なうことによって、分岐予測のヒット率を
上げることができる。
【0189】[第3の実施例]以上の実施例では、予測
情報をバッファにより供給していた。そのため、情報を
保持するための専用のハードウェアが必要となる。高い
予測ヒット率を得るためには、バッファのヒット率を上
げることが有効であるが、そのためにはバッファ内に多
数のエントリを準備する必要が生ずる。そのために、予
測情報バッファのハードウェア量は多くなる。こうした
ハードウェアはできるだけ増加させない方が望ましい。
この第3の実施例は、予測情報バッファを用いず予測情
報を供給することにより、ハードウェアの増加を回避し
ている点に特徴がある。そのためにこの第3の実施例で
は、命令中に、通常の命令のほかにその命令の次に実行
する分岐命令の予測情報を格納するためのフィールドを
設け、それに基づいて分岐予測を行なっている。
【0190】図18を参照して、この第3の実施例の分
岐予測装置は、分岐予測機構58と、レジスタファイル
52と、命令キャッシュ184と、命令パイプライン5
0とを含む。分岐予測機構58と、レジスタファイル5
2と、命令パイプライン50とは、第1の実施例におけ
る対応の参照符号を有する要素と同様のものである。命
令キャッシュ184は、命令の中から通常の命令コード
のみを命令パイプライン50に与え、命令中の予測情報
のフィールド内の情報を予測情報として分岐予測機構5
8に与えるようになっている。
【0191】図19を参照して、命令190は、通常の
命令フィールド192と予測情報のフィールド194と
を含む。
【0192】予測情報のフィールド194は、予測ビッ
ト196と、分岐情報198と、分岐先情報200とか
らなる。
【0193】予測ビット196は分岐予測を行なうどう
かを示す。分岐情報198は前述したような予測オペレ
ーションの内容、使用するレジスタのレジスタ番号など
を示す。分岐先情報200は分岐先アドレスを示す。あ
るいは分岐先情報200は、PC相対分岐時のオフセッ
トなどの即値を格納していてもよい。
【0194】予測情報のフィールド194の内容は、プ
ログラムのコンパイル時にコンパイラによって設定され
る。分岐命令の前の命令(これを「予測を行なう命令」
と呼ぶ)に対しては、その予測ビット196をセット
し、分岐の処理に従って分岐情報198および分岐先情
報200を設定する。予測を行なわない場合には予測ビ
ット196をリセットする。
【0195】分岐予測機構58では、予測情報内の予測
ビット196を参照して、セットされていれば分岐情報
に従って予測を行なう。
【0196】この例では、予測情報のフィールドはすべ
ての命令に設けているものと想定している。しかし本発
明はこれには限定されず、予測情報のフィールドを一部
の命令に限定して設けてもよい。たとえば比較命令や加
算命令の一部などである。その代わりにスケジューリン
グに制限を与え、分岐命令の前の予測を行なう位置に
は、それら予測情報のフィールドを設けた命令を配置す
るようにすることも考えられる。
【0197】この第3の実施例によれば、分岐予測情報
を供給するための余分なハードウェアを設ける必要がな
いという効果がある。また、予測情報バッファを設けた
場合と異なり、予測情報は必ず命令から供給される。し
たがって、予測情報バッファを用いた実施例において、
予測情報バッファのヒット率が100%の場合と同じ的
確性で分岐予測を行なうことができるという効果があ
る。
【0198】[第4の実施例]予測情報を予測情報バッ
ファにより供給する方式は、情報を保持するための専用
のハードウェアが必要となる。また第3の実施例のよう
に命令内に予測情報のフィールドを設ける場合には、命
令セット自体を変える必要がある。また命令のビット幅
が多くなる可能性がある。こうしたことはできるだけ避
ける方が望ましい。そこでこの第4の実施例では、フェ
ッチアドレスで示される命令のフェッチと同時に次の命
令をフェッチし、2番目の命令が分岐命令である場合に
は、フェッチした2つの命令から分岐予測情報を得て分
岐予測を行なうこととしている。フェッチした1番目の
命令は通常どおりパイプラインに投入される。
【0199】図20を参照してこの第4の実施例に係る
分岐予測装置は、分岐予測機構212と、レジスタファ
イル52と、命令パイプライン50と、命令キャッシュ
210とを含む。命令パイプライン50およびレジスタ
ファイル52は、第1の実施例における命令パイプライ
ン50とレジスタファイル52と同様のものである。
【0200】図21を参照して、図20の分岐予測機構
212は、命令キャッシュ210から2つの命令を得
て、2番目の命令が分岐命令である場合には、フェッチ
した2つの命令から分岐予測オペレーションと、定数
と、分岐先情報となどを生成して出力するための分岐予
測情報生成回路222と、分岐予測情報生成回路222
の出力に基づき、必要であればレジスタファイル52を
参照するためのレジスタ番号を出力し、レジスタファイ
ル52からレジスタ値を得て、さらに命令パイプライン
50から予測ミス情報を得て分岐予測を行なうための分
岐予測回路部220とを含む。
【0201】この第4の実施例の分岐予測装置は次のよ
うに動作する。各サイクルでフェッチアドレスで示され
る命令とその次の命令との2つを命令キャッシュ210
からフェッチする。最初の命令(命令i)は命令パイプ
ライン50に投入して通常の処理を行なうとともに、分
岐予測機構212にも与える。2番目の命令i+1は、
命令パイプライン50には投入せずに分岐予測機構21
2にだけ与える。
【0202】分岐予測機構212の分岐予測情報生成回
路222は、2番目の命令が分岐命令かどうかの判定を
行なう。分岐命令であればその分岐の種類、分岐のオペ
ランドと1番目の命令の種類、オペランドの情報などか
ら分岐予測オペレーション、定数データ、分岐先情報な
どを生成して分岐予測回路部220に与える。分岐予測
回路部220は、既に述べた分岐予測回路部と同様の方
式で分岐予測を行なう。
【0203】たとえば図22に示されるような命令コー
ドを実行する場合を考える。サイクルn−2では命令i
−2と命令i−1とをフェッチして、命令i−2を命令
パイプラインに、命令i−2と命令i−1とを分岐予測
機構に投入する。命令i−1が分岐命令ではないので、
このサイクルでは予測は行なわない。
【0204】続いてサイクルn−1では命令i−1と命
令iとをフェッチする。命令i−1は命令パイプライン
に、命令i−1と命令iとは分岐予測機構に投入され
る。分岐予測機構内の分岐予測情報生成回路222は、
命令iが分岐命令であることを認識し、以下のような予
測情報を生成する。なおこの予測情報は、図22に示さ
れるような命令およびオペランドに基づいて生成される
ものである。
【0205】予測フェッチデータとしてはsrc1=$
b、src2としては$cが選ばれる。分岐予測オペレ
ーションは「大小比較結果を出力」となる。分岐予測回
路部220はこの予測情報に基づいて予測を行なう。
【0206】この第4の実施例では、予測情報を通常の
コードから実行時に生成する。予測情報を保持するため
の予測情報バッファなど特別のハードウェアを用意する
必要がなく、命令コードも従来のものが使用できるとい
う効果がある。
【0207】[第5の実施例]第4の実施例では、分岐
予測情報を2つの命令から実行時に生成する。しかし、
こうした情報は命令のコンパイル時に既に得られるもの
である。したがって、分岐予測情報を保持する命令を新
たに用意して、コンパイル時にその命令を命令コード中
の適切な位置に配置することが考えられる。この第5の
実施例はそのような方式を用いて分岐予測情報を命令か
ら得て分岐予測を行なう。
【0208】図23を参照して、分岐予測命令230を
新たに設け、オペコード232と、分岐情報234と、
分岐先情報236とを含ませる。オペコード232は分
岐予測命令を示すコードである。分岐情報234は予測
オペレーションやレジスタ番号などを示す。分岐先情報
236は分岐先アドレスなどである。
【0209】コンパイラは、分岐の処理に従ってこの分
岐予測命令の予測情報を設定し、予測を行なう位置に分
岐予測命令をスケジューリングする。
【0210】実行時に命令キャッシュから読出された命
令は、命令パイプラインと分岐予測機構とに同時に投入
される。分岐予測機構では、分岐予測命令を認識する
と、その分岐情報に従って予測を行なう。
【0211】この場合、第4の実施例の図21に示され
る分岐予測情報生成回路222に代えて、1つの命令か
ら分岐情報および分岐先情報を抽出して分岐予測回路部
220に与える回路を設ければよい。
【0212】この実施例では、命令セット中の従来の命
令については変更する必要がなく、新たな命令を追加す
るだけでよい。命令のビット幅が多くなることもない。
また、分岐予測情報を供給する余分なハードウェアを用
意する必要もないという効果がある。
【0213】なお、以上の実施例では分岐予測は命令パ
イプライン50とは独立した命令予測機構の中で行なわ
れていた。しかし分岐予測機構の中での演算は、命令パ
イプライン50を利用しても使用できる。そこでたとえ
ば、複数個の演算処理装置によって並列に演算処理を行
なう命令パイプラインであれば、そのうちの使用されて
いない演算処理装置を利用して分岐予測処理を行なうこ
ともできる。この場合、分岐命令の前にフェッチする命
令と、その命令のアドレスで予測情報バッファから得ら
れた予測情報とを同時に命令パイプラインに投入してそ
れぞれ別個の演算処理装置で演算処理させればよい。
【0214】[第6の実施例]予測情報バッファへの登
録は分岐命令の実行によりなされる。したがってすべて
の分岐は、最初にそれらが実行されるときには予測を行
なうことはできない。また、予測情報バッファのエント
リ数が十分用意されていない場合には、登録されていた
分岐の情報が別の分岐の実行によりエントリ置換され、
再度分岐が実行されるときに情報が登録されていない事
態が生ずる可能性がある。その場合には予測が行なえな
い。また、分岐命令によっては、予測のために参照する
データが間に合わず、データ参照予測方式では対応でき
ない場合もあると考えられる。
【0215】この第6の実施例の分岐予測装置では、そ
うした問題を解決するために、データ参照分岐予測を静
的分岐予測と組合わせて用いる。従来、データ参照によ
る分岐予測機構を用いた分岐予測装置は存在しておら
ず、したがって、このように静的分岐予測機構とデータ
参照による分岐予測方式とを組合わせて用いるものにつ
いても文献には記載がない。
【0216】図24を参照して、この第6の実施例の分
岐予測装置は、予測情報バッファ240と、静的分岐予
測機構242と、データ参照による分岐予測機構58
と、レジスタファイル52と、マルチプレクサ174と
を含む。データ参照による分岐予測機構58およびレジ
スタファイル52は、第1の実施例で述べた分岐予測機
構58およびレジスタファイル52と同様である。
【0217】静的分岐予測機構242は、たとえば前述
の第3〜第5の実施例で説明した予測方式のいずれかを
用いればよい。マルチプレクサ174は、以下に述べる
ように命令中に準備される予測方式ビットに応答して、
静的分岐予測機構242またはデータ参照による分岐予
測機構58による予測を選択する。
【0218】図25を参照して、この第6の実施例で用
いられる命令250は、命令フィールド252と予測情
報フィールド194とを有する。予測情報フィールド1
94には、静的予測を行なう場合の予測情報が、予めコ
ンパイラにより設定されている。
【0219】命令フィールド252は、通常の命令フィ
ールド254と、予測方式選択ビット256と、静的予
測ビット258とを含む。
【0220】予測方式選択ビット256は、静的予測と
データ参照予測とのどちらを行なうかを選択するための
情報である。静的予測ビット250は、静的分岐予測を
行なうときの情報である。なお、静的予測時の予測分岐
先を求めるための分岐先情報は、上述の第3の実施例〜
第5の実施例のいずれの方式を用いてもよい。
【0221】コンパイラが分岐すると予測した分岐命令
に対しては、その分岐命令に対するバッファが参照され
るタイミングと同時にフェッチされる命令の静的予測ビ
ットに、静的分岐予測を行なうときの情報を設定する。
さらに、静的予測をデータ参照予測よりも優先して行な
う場合には、その予測方式選択ビットをセットする。
【0222】この第6の実施例の装置は次のように動作
する。 (1)フェッチした命令の予測方式参照ビットがセット
されている場合、静的予測ビットに基づいて予測を行な
う。
【0223】(2) 予測方式ビットがリセットされて
いる場合には、バッファに予測情報が登録されているか
否かに従って次のような動作を行なう。
【0224】(i) バッファに予測情報が登録されて
いる場合、データ参照予測方式を用いて分岐予測を行な
う。
【0225】(ii) バッファに予測情報が登録されて
いない場合、静的予測ビットを参照して、それに基づい
て分岐予測を行なう。
【0226】この第6の実施例の静的分岐予測におい
て、第3の実施例のような予測方式を用いた場合、図1
9に示される予測情報のフィールド194内の、分岐方
向を予測するために使用する分岐情報198(予測オペ
レーション、レジスタ番号)を、命令からではなく、予
測情報バッファを用いたデータ参照方式より得ることが
できる。したがって、図19の分岐情報198を省略で
きる。
【0227】しかしこのためには、これらの情報を分岐
命令の実行後に予測情報バッファに登録しておく必要が
ある。この登録は分岐命令の実行ごとに次のような処理
により行なわれる。
【0228】(1) 予測方式参照ビットがセットされ
ている場合、予測情報バッファへの登録は行なわない。
【0229】(2) 予測方式参照ビットがリセットさ
れている場合、予測情報を予測情報バッファに登録す
る。
【0230】この実施例では、すべての分岐につき、最
初に実行されるときも含めて予測を行なうことができ
る。また、バッファのエントリ数が十分用意されておら
ず、登録していた分岐の情報がバッファから失われてい
る場合にも、静的予測によりある程度有効な予測ができ
る。また、データ参照予測方式では対応できないような
分岐命令に対する分岐予測もある程度有効に行なえる。
その結果、分岐予測のヒット率を向上させることが期待
できる。
【0231】[第7の実施例]PC(プログラムカウン
タ)相対の分岐命令とは、分岐先をPC+即値で計算す
る分岐命令である。通常の分岐先アドレスは、32ビッ
トアーキテクチャでは30ビット程度である。しかし即
値では十数ビットであり、したがってこの即値を使用し
て分岐予測を行なうことができれば、予測情報バッファ
の各エントリを小さくすることができ、そのハードウェ
ア量を減らすことができると考えられる。この第7の実
施例はそのような分岐先の予測を行なうためのものであ
る。なお、分岐予測は、分岐方向の予測と、分岐先の予
測との2つに分けることができ、それぞれの項目は独立
している。既に述べたように分岐方向の予測には、履歴
方式とデータ参照方式とがある。そのいずれともこの第
7の実施例に示される分岐先の予測方式を組合わせて使
用することが可能であることに注意されたい。
【0232】図26を参照して、この分岐予測装置は、
予測情報バッファ280と、分岐方向予測機構278
と、ラッチ回路280と、マルチプレクサ286と、プ
ログラムカウンタ(PC)288と、インクリメンタ2
90と、予測分岐先計算器282と、マルチプレクサ2
84とを含む。
【0233】予測情報バッファは複数の予測情報エント
リ272を含む。各エントリ272は、分岐方向予測情
報274と分岐予測情報(即値からなる)276とを含
む。
【0234】マルチプレクサ286には、再フェッチア
ドレスとマルチプレクサ284の出力である予測フェッ
チアドレスとが与えられる。マルチプレクサ286は、
分岐予測ヒット判定情報に応答して再フェッチアドレス
と予測フェッチアドレスとのいずれか一方を選択してP
C288に設定する。
【0235】インクリメンタ290は、PC288の値
に通常の命令のビット幅を加算することによりフォール
スルーアドレスを計算してマルチプレクサ284に与え
る。
【0236】分岐方向予測機構278は、前述のように
履歴によるものでも、データ参照によるものでもどちら
でもよいが、分岐方向予測情報274に従って分岐方向
の予測を行なう。予測方向はマルチプレクサ284の制
御入力に与えられる。
【0237】予測分岐先計算機282は、一旦ラッチ回
路280にラッチされた分岐予測情報276の即値とP
C288の内容とを加算して予測分岐先アドレスを生成
し、マルチプレクサ284の他方の入力に与える。
【0238】マルチプレクサ284は、与えられた予測
方向に従って、分岐する場合には予測分岐先アドレス
を、分岐しない場合にはフォールスルーアドレスをそれ
ぞれ選択して予測フェッチアドレスとして出力する。こ
の出力は再びマルチプレクサ286に与えられる。
【0239】分岐予測情報の即値は、分岐先をPC+即
値で計算するPC相対の分岐命令が実行された場合に、
登録される。
【0240】バッファの登録と予測分岐先アドレスの計
算方法であるが、予測情報バッファ270を読出すタイ
ミングにより次のような場合に分けられる。
【0241】(1) バッファ読出と予測分岐先計算が
1サイクルで行なえる場合(図27) この場合、分岐命令と同じタイミングでフェッチされる
アドレスを用いてバッファに分岐予測情報の即値を登録
する。予測時には、バッファの読出を行なったアドレス
は、分岐命令のアドレスと一致している。したがって、
バッファ読出後、読出された即値をオフセットとして、
PC+オフセットで予測分岐先を求め次の命令をフェッ
チする。この状態が図27のサイクル2の矢印で示され
ている。
【0242】(2) バッファ読出と予測分岐先計算を
別のサイクルで行なう必要がある場合(図28) バッファの読出および予測分岐先生成の加算に時間がか
かり、1サイクルで終えることができない場合もある。
この場合、予測分岐先アドレスを生成する時間を考慮し
て、分岐命令よりも1サイクル前にバッファの読出を行
なう必要がある。このバッファの読出を図28のサイク
ルに示す。このとき一緒にフェッチされる命令は分岐
命令の1つ前(PC−1)のアドレスである。
【0243】すなわちバッファを読出したアドレスは、
分岐命令の前の命令のアドレスである。そしてバッファ
読出がサイクルの半ばで終了し、このとき分岐命令の
フェッチが行なわれる。したがって、サイクルの後半
で、分岐命令のアドレス(PC)を得て、これに対して
バッファから読出された即値を加算して予測分岐先を計
算する。この予測分岐先アドレスに従って、サイクル
の半ばで予測分岐先の命令をフェッチする。
【0244】上述の場合、プログラムカウンタが変化す
ることを考慮して、分岐計算のタイミングを定めてい
る。しかし別の方法として、予測情報バッファへの即値
の登録時に、分岐命令のアドレスとの差を予め即値に加
えておいて登録を行なう方法も考えられる。
【0245】なお、データ参照予測を行なう場合にも、
予測情報バッファは分岐命令がフェッチされるよりも早
いサイクルで読出される。したがって、データ参照予測
を行なう場合には、こうした読出タイミングのずれを考
慮して予測分岐先の計算を行なう必要がある。
【0246】この第7の実施例では、予測情報バッファ
が保持する分岐先情報が、プログラムカウンタ相対の分
岐先計算に使用される即値となる。即値は十数ビットの
ビット幅であり、通常の32ビットアーキテクチャの分
岐先アドレスの30ビット程度と比較してかなり小さく
なる。したがって、予測情報バッファの各エントリを小
さくすることができ、予測情報バッファ全体のハードウ
ェア量を減らすことができる。あるいは、予測情報バッ
ファのハードウェア量を減らさない場合には、分岐予測
のヒット率を高めることが期待できる。
【0247】[第8の実施例]第7の実施例に述べたP
C相対分岐命令に加え、レジスタから読出したデータを
予測分岐先とすることができれば、前に述べた間接方式
と同様により便利である。この第8の実施例はPC+即
値またはレジスタから読出したデータによって予測分岐
先を求めることができる。
【0248】図29に、予測情報バッファのエントリ3
00の構成を示す。図29を参照して、各エントリ30
0は、分岐方向予測情報302と、分岐オペレーション
ビット304と、即値またはハードウェア指定値(レジ
スタ番号など)306とを含む。分岐方向予測情報30
2は、既に述べたとおり分岐方向を予測するための予測
オペレーション、レジスタ番号などである。分岐オペレ
ーションビット(1ビット)は、予測分岐先アドレスを
計算する際の計算方法を特定するための情報である。こ
の実施例の場合にはPC相対とレジスタ参照との2つの
方式であるので、このビットは1ビットでよい。即値ま
たはハードウェア指定値306は、PC相対の分岐命令
の場合には即値であり、レジスタ参照の分岐命令の場合
には、分岐先アドレスを格納したレジスタ番号である。
もちろん分岐先アドレスを格納したハードウェアとして
はレジスタファイル内のレジスタに限らず、ALU内の
レジスタなどであってもよい。
【0249】図30を参照して、この実施例の分岐予測
装置は、予測分岐先計算器314とマルチプレクサ31
6とを含む。予測分岐先計算器314は、プログラムカ
ウンタ310の内容と、即値/ハードウェア指定値30
6の内容とを加算してマルチプレクサ316に与える。
即値/ハードウェア指定値306がハードウェア指定値
(レジスタ番号)の場合には、レジスタファイルまたは
ALU312から、対応するレジスタのレジスタ値がマ
ルチプレクサ316の他方の入力に与えられる。マルチ
プレクサ316は、分岐オペレーションビット304に
応答して予測分岐先計算器314の出力またはレジスタ
ファイルもしくはALU312のレジスタからの出力の
いずれか一方を選択して予測分岐先アドレスとして出力
する。
【0250】予測情報バッファへの登録は、分岐命令の
実行によって行なわれる。分岐命令がPC相対である場
合、分岐先情報として即値を登録し、分岐先オペレーシ
ョンビットをセットする。分岐命令がレジスタ参照によ
るものである場合には、分岐先情報としてはレジスタ番
号を登録し、分岐先オペレーションビットをリセットす
る。
【0251】予測時には、バッファを読出し、図30に
示されるように分岐先オペレーションビットがセットさ
れていればPC+即値により、リセットされていればハ
ードウェア指定値306により指定されるレジスタから
読出したアドレスを予測分岐先アドレスとする。
【0252】この第8の実施例によれば、PC+即値に
よるPC相対の分岐命令だけでなく、レジスタ参照によ
る分岐命令に対しても、分岐先アドレスの予測を行なう
ことができるという効果がある。
【0253】[第9の実施例]以上述べた実施例のう
ち、分岐先情報として変位を保持する方式における予測
情報のバッファ(BTB)のエントリの登録は次のよう
に行なわれている。図31を参照して、たとえば命令キ
ャッシュのアドレスt−1に命令t−1が、アドレスt
に分岐命令bが、それぞれ格納されているものとする。
分岐命令bの分岐予測に必要な情報は、分岐予測に必要
な情報が1サイクルで済むのであれば、分岐命令bのア
ドレスの1つ前、すなわちアドレスt−1に格納されて
いる。つまり、BTBのアドレスt−1に分岐命令bの
分岐予測情報が格納されている。
【0254】このようにして分岐予測情報がBTBに登
録されているので、分岐予測を次のように行なうことが
できる。命令キャッシュから命令t−1がフェッチされ
るときに、そのアドレスt−1によってBTBをアドレ
ス指定することにより分岐命令bの情報が読出される。
そして分岐命令bの次の命令のフェッチまでに分岐命令
bの分岐予測を行なう。
【0255】もちろん図31に示されるのは、分岐予測
に必要な処理が1サイクルで済む場合である。分岐予測
に必要な処理が2サイクルかかるのであれば、分岐命令
b(アドレスt)の分岐予測情報はBTBのアドレスt
−2となる。ところが、このように分岐命令のための分
岐予測情報が、その分岐命令のアドレスよりも所定数前
のBTBアドレスに静的に登録されている場合、次のよ
うな問題が生ずる。
【0256】図32を参照して、アドレスnに分岐命令
aが存在する場合を考える。この分岐命令aの実行の結
果制御が分岐命令bに移行するものとする。この場合、
分岐命令bの1サイクル前にフェッチされる命令は、命
令t−1ではなく分岐命令aである。したがって分岐命
令bの1サイクル前に命令がフェッチされるときのBT
Bアドレスはnとなる。BTBのアドレスnに格納され
ているのは、上述の方法に従えば、命令キャッシュのア
ドレスn+1に格納された命令n+1のための分岐予測
情報である。この分岐予測情報に従って分岐命令bの分
岐予測を行なったとしても、正しい予測結果を得ること
はできない。このように、ある分岐命令の分岐先にさら
に他の分岐命令がある場合、上述の方法では、2番目の
分岐に対する予測情報を得ることができず、その結果正
しい分岐予測が行なえないという問題点が生ずる。
【0257】第9の実施例は、このような問題点を解消
するためのものである。図33を参照して、この第9の
実施例の分岐予測装置は、命令パイプライン50と、レ
ジスタファイル52と、予測情報バッファ56と、分岐
予測機構58と、命令キャッシュ60とに加え、分岐予
測機構から出力される命令フェッチのアドレスを、一時
的に、かつ3サイクル分だけ順次記憶して先入れ先出し
方式に従って出力するFIFOメモリからなるBTB登
録アドレス用レジスタ340と、命令フェッチアドレス
と、BTB登録アドレス用レジスタ340との2つが与
えられ、命令パイプライン50から与えられる書込/読
出制御信号(BTB読出/書込)が予測情報バッファ5
6の更新要求を示す値になったことに応答して、BTB
登録アドレス用レジスタ340の出力を予測情報バッフ
ァ56に与え、そうでない場合には現在の命令フェッチ
のアドレスを予測情報バッファ56に与えるためのセレ
クタ342とを含む。
【0258】命令パイプライン50、レジスタファイル
52、予測情報バッファ56、分岐予測機構58および
命令キャッシュ60は、図1に示す第1の実施例の分岐
予測装置に示すものと同様である。したがってここで
は、それらについての詳細は繰返さない。図33に示す
各ブロックが図1に示すブロックと異なるのは、命令パ
イプライン50から出力される予測情報が直接予測情報
バッファ56に与えられることである。またセレクタ3
42に与えられる読出/書込制御信号は、命令パイプラ
イン50から予測情報バッファ56に与えられるものと
同様である。
【0259】BTB登録アドレス用レジスタ340の段
数は、分岐予測に必要な処理によって異なってくる。た
とえば本実施例の場合には、アドレスiにおける分岐命
令のフェッチ開始から2サイクルの終りに、その分岐先
と予測のヒットまたはミスが判明する。したがってBT
B登録アドレス用レジスタ340は3段である。
【0260】図33に示される分岐予測装置は、次のよ
うに動作する。通常の分岐予測ではセレクタ342はフ
ェッチアドレスを選択して予測情報バッファ56に与え
る。予測情報バッファ56は、与えられたアドレスから
予測情報を分岐予測機構58に対して出力する。
【0261】分岐予測がはずれた場合、セレクタ342
はBTB登録アドレス用レジスタ340の出力を選択し
て予測情報バッファ56に与える。予測情報バッファ5
6は、命令パイプライン50から与えられる予測情報
を、セレクタ342から与えられるアドレスに格納す
る。BTB登録アドレス用レジスタ340は、分岐予測
が行なわれ、かつその分岐予測のヒットまたはミスが判
明した分岐命令のアドレス1つ前にフェッチされた命令
のアドレスを出力している。したがって予測情報バッフ
ァ56に格納される予測情報のアドレスは、分岐命令の
1つ前にフェッチされたアドレスである。すなわち、予
測情報バッファ56に格納される予測情報のアドレス
は、当該分岐命令の静的に1つ前のアドレスではなく、
1つ前に実行された命令のアドレスという意味で動的に
1つ前のアドレスとなる。
【0262】図34を参照してこの場合、次のような効
果が生ずる。アドレスnの分岐命令aがフェッチされる
と同時に、BTBのアドレスnの予測情報もフェッチさ
れる。フェッチされるBTBの内容が、当初は分岐命令
bの予測情報とは無関係な情報であるとする。
【0263】この場合分岐命令aの実行の結果制御が分
岐命令bに移行したものとする。分岐命令bの実行の結
果、その分岐先がわかる。一方でBTBから読出された
予測情報による予測結果のヒットまたはミスも判明す
る。今述べたような状況では分岐命令bの分岐予測はミ
スとなる。したがってこの場合、BTBのアドレスnに
分岐命令bのための予測情報が書込まれることになる。
【0264】次に分岐命令aがフェッチされた場合、B
TBから同時にフェッチされる情報は、分岐命令bのた
めの予測情報である。分岐命令aの実行の結果制御が分
岐命令bに分岐した場合、BTBから読出された予測情
報により予測された分岐先がヒットする確率は、分岐命
令bの静的に1つ前のアドレスから分岐命令bの予測情
報を読出した場合と同様に高くなる。その結果、分岐命
令aの分岐先にさらに分岐命令bが存在した場合でも、
以後の分岐命令bの分岐予測がヒットする可能性は高く
なる。またミスヒットが生ずる度に、分岐命令の動的に
1つ前にフェッチされた命令のアドレスにその分岐命令
の予測情報が書込まれるので、一旦ミスが生じた後は、
当該分岐命令の分岐予測がヒットする確率は上述の実施
例に比べて高くなる。特に、動的に1つ前にフェッチさ
れる命令アドレスに従ってBTB登録を行なうため、あ
る分岐命令の分岐方向に偏りがあり、同じ命令コードが
繰返しフェッチされる場合、その分岐先に存在する分岐
命令に対しても正しい予測情報を得ることができる。
【0265】以上この発明を実施例に基づいて説明した
が、本発明はこれらの実施例に限定されるわけではな
く、特許請求の範囲で規定される範囲内で、種々の変形
を行なって実施することが可能である。特に、以上の実
施例では1度に1つの命令を実行できるコンピュータに
おける分岐予測処理について説明した。しかし本発明は
そのようなコンピュータのみに限定される訳ではなく、
1度に複数の命令をフェッチできるいわゆるスーパース
カラコンピュータでの分岐予測処理にも適用できること
は、当業者には自明である。
【0266】
【発明の効果】以上のように請求項1に記載の発明によ
れば、分岐命令の分岐予測に関連する予測情報を、ある
分岐命令より前にフェッチされる命令のフェッチと同じ
タイミングで供給し、その予測情報に従って分岐予測が
行なわれる。予測のための時間に余裕があるので、必要
であれば演算結果を格納する手段から分岐予測に必要な
情報、たとえば実際に分岐命令が分岐を行なう際に参照
する情報を読出し、または分岐のためのコンディション
を設定する命令がその計算に使用する情報を読出して分
岐予測に用いることができる。その結果、過去の実行結
果と相関がない分岐命令に対しても有効な分岐予測を行
なうことができる分岐予測装置を提供することができ
る。
【0267】請求項2に記載の発明では、請求項1に記
載の発明の効果に加え、予測情報と、分岐予測に必要な
情報とを、ある分岐命令より前にフェッチされる命令の
フェッチと同じタイミングでパイプラインに投入し、パ
イプラインにより分岐予測処理を行なわせる。複数個の
処理装置を含むシステムで、演算に使用されていない処
理装置を有効に利用できる。その結果、既存の資源を有
効に利用して、過去の実行結果と相関がない分岐命令に
対しても有効な分岐予測を行なうことができる分岐予測
装置を提供することができる。
【0268】請求項3に記載の発明では、請求項1また
は2に記載の発明の効果に加え、分岐予測手段は、読出
した分岐関連情報に含まれる指定情報により指定される
情報保持手段から、分岐予測に必要なデータを読出す。
分岐関連情報に、分岐先情報をそのまま含ませる必要が
なく、指定情報のみを含ませればよいので、分岐関連情
報の量を少なくできる。その結果、過大なハードウェア
を追加することなく、既存の資源を有効に利用して過去
の実行結果と相関がない分岐命令に対しても有効な分岐
予測を行なうことができる分岐予測装置を提供すること
ができる。
【0269】請求項4に記載の発明では、請求項1から
3のいずれかに記載の発明の効果に加え、分岐予測回路
により、様々な予測計算方法を用いて、予測計算を行な
うことができる。その結果、過大なハードウェアを追加
することなく、既存の資源を有効に利用して、過去の実
行結果と相関がない分岐命令に対しても有効な分岐予測
を、多様な分岐予測計算方法に従って行なうことができ
る分岐予測装置を提供することができる。
【0270】請求項5に記載の発明では、請求項1の記
載の発明の効果に加え、分岐予測に必要な情報の全部を
使用する場合と比較して分岐予測をより高速に行なうこ
とができる。その結果、過大なハードウェアを追加する
ことなく、過去の実行結果と相関がない分岐命令に対し
てもある程度有効な分岐予測を高速で行なうことができ
る分岐予測装置を提供することができる。
【0271】請求項6に記載の発明では、請求項1に記
載の発明の効果に加え、分岐予測に必要な情報の全部を
使用する場合と比較して分岐予測をより高速に行なうこ
とができ、かつ分岐予測に必要な情報の一部のみを用い
た場合よりも分岐予測がより的確となる。その結果、ハ
ードウェアの追加をそれほど大きくすることなく、過去
の実行結果と相関がない分岐命令に対してもさらに有効
な分岐予測を高速で行なうことができる分岐予測装置を
提供することができる。
【0272】請求項7に記載の発明では、請求項6に記
載の発明の効果に加え、分岐予測に必要な情報の全部を
使用する場合と比較して分岐予測をより高速に行なうこ
とができる。上位ビットは複数ビットごとに論理和がと
られて分岐予測に反映され、また下位の複数ビットはそ
のまま使用されるので、分岐予測がより的確となる。そ
の結果、ハードウェアの追加をそれほど大きくすること
なく、過去の実行結果と相関がない分岐命令に対しても
さらに有効な分岐予測を高速で行なうことができる分岐
予測装置を提供することができる。
【0273】請求項8に記載の発明では、請求項4に記
載の発明の効果に加え、分岐予測に必要な情報の間で比
較をする場合だけでなく、加算を行なって分岐予測を行
なうことも可能になる。その結果、分岐命令の直前に実
行される命令によって分岐の条件が設定される場合であ
って、かつその設定にパイプラインの演算結果を保持す
る手段が使用されるために分岐の条件を分岐命令のフェ
ッチに先立って入手できない場合にも、過大なハードウ
ェアを追加することなく、過去の実行結果と相関がない
分岐命令に対しても有効な分岐予測を行なうことができ
る分岐予測装置を提供することができる。
【0274】請求項9に記載の発明では、請求項8に記
載の発明による効果に加え、大小比較手段の出力と、情
報保持手段からの入力または定数データとが一致してい
るか否かを判定できる。分岐命令で、情報保持手段の出
力を用いて大小比較手段で計算した結果をオペランドと
し、それを情報保持手段からの他のオペランドまたは定
数データと比較して一致しているか否かを判定し、その
結果を用いて分岐予測を行なえる。したがって、多くの
種類の分岐命令に対して分岐予測を行なうことができ
る。その結果、分岐命令の直前に実行される命令によっ
て分岐の条件が設定される場合であって、かつその設定
のパイプラインの演算結果を保持する手段が使用される
ために分岐の条件を分岐命令のフェッチに先立って入手
できない場合にも、過大なハードウェアを追加すること
なく、種々の分岐命令に対しても有効な分岐予測を行な
うことができる分岐予測装置を提供することができる。
【0275】請求項10に記載の発明では、請求項4に
記載の発明の効果に加え、分岐予測情報そのものよりも
情報量の少ない即値または指定情報を分岐予測装置に供
給すればよいので、予測情報供給手段を小さくできる。
その結果、過大なハードウェアを追加することなく過去
の実行結果と相関がない分岐命令に対しても有効な分岐
予測を行なうことができる分岐予測装置を提供すること
ができる。
【0276】請求項11に記載の発明では、請求項1に
記載の発明の効果に加え、分岐予測手段による分岐予測
が無効である場合に、履歴による分岐予測機構の予測を
用いることができるので、分岐予測をより的確に行なえ
る。その結果、過大なハードウェアを追加することなく
過去の実行結果と相関がある、なしにかかわらず分岐命
令に対して有効な分岐予測を行なうことができる分岐予
測装置を提供することができる。
【0277】請求項12に記載の発明によれば、請求項
1に記載の発明の効果に加え、パイプラインから与えら
れる予測情報を一時格納する予測情報バッファを含むの
で、実際の分岐処理でも使用されるパイプラインの処理
結果を利用して分岐予測を行なえる。その結果、パイプ
ラインによる演算結果を有効に利用して、過去の実行結
果と相関がない分岐命令に対しても有効な分岐予測を行
なうことができる分岐予測装置を提供することができ
る。
【0278】請求項13に記載の発明では、請求項1に
記載の発明の効果に加え、予測情報供給手段は、命令か
ら予測情報を取出すことができるので、予測情報を格納
しておくためのハードウェアを準備する必要がない。ま
た分岐予測をより的確にするために、格納しておく予測
情報の量を増加させる必要もない。その結果、過大なハ
ードウェアを追加することなく、過去の実行結果と相関
がない分岐命令に対しても有効な分岐予測を行なうこと
ができる分岐予測装置を提供することができる。
【0279】請求項14に記載の発明では、請求項13
に記載の発明の効果に加え、予測情報を格納しておくた
めのハードウェアを準備する必要がない。また、分岐予
測に必要な情報が、必要なときには常に命令から間違い
なく供給されるため、分岐予測が的確なものになる。そ
の結果、過大なハードウェアを追加することなく、既存
の資源を有効に利用して、過去の実行結果と相関がない
分岐命令に対しても有効な分岐予測を行なうことができ
る分岐予測装置を提供することができる。
【0280】請求項15に記載の発明では、請求項13
に記載の発明の効果に加え、命令中に、分岐予測のため
の特別なフィールドを設けたり、新たな命令を設けた
り、命令情報を増加したりすることが不要で、命令体系
を変更することなく、的確な分岐予測を行なえる。その
結果、過大なハードウェアを追加することなく、かつ既
存の命令セットを変更することなく、過去の実行結果と
相関がない分岐命令に対しても有効な分岐予測を行なう
ことができる分岐予測装置を提供することができる。
【0281】請求項16に記載の発明では、請求項13
に記載の発明の効果に加え、既存の命令を変更すること
なく、新たな命令を追加することのみで、余分なハード
ウェアを追加することもなく的確な分岐予測が行なえ
る。その結果、過大なハードウェアを追加することな
く、かつ既存の命令セットを生かして、過去の実行結果
と相関がない分岐命令に対しても有効な分岐予測を行な
うことができる分岐予測装置を提供することができる。
【0282】請求項17に記載の発明では、請求項1に
記載の発明の効果に加え、分岐命令の種類により、より
適した予測方式を使用して分岐予測を行なえるので、分
岐予測がより的確になる。その結果、過大なハードウェ
アを追加することなく、分岐命令の最初の実行時も含め
て、過去の実行結果と相関がない分岐命令に対しても有
効な分岐予測を行なうことができる分岐予測装置を提供
することができる。
【0283】請求項18に記載の発明では、特定情報に
より特定される記憶手段から、ある分岐命令の分岐予測
情報を読出し、遅くともそのある分岐命令のフェッチサ
イクルの完了までにそのある分岐命令の分岐予測が行な
われる。分岐予測情報を命令により供給する場合と比較
して、その供給のための命令の、分岐命令に対する位置
を固定する必要もなく、分岐予測情報を与えるために命
令に新たなフィールドを設ける必要もない。その結果、
命令の構成をできるだけ変更せず、命令のスケジューリ
ングの制限も緩和して、有効な分岐予測を行なうことが
できる分岐予測装置を提供することができる。
【0284】請求項19に記載の発明では、命令フェッ
チと同時に、当該命令のアドレスに関連付けて即値記憶
手段に記憶された即値があればその即値を読出し、命令
フェッチによりフェッチされた命令と所定の関係により
関係付けられた分岐命令の分岐方向を予測するととも
に、分岐先アドレスの予測を、読出された即値を用いて
行なう。即値のビット長は分岐先アドレスそのものより
もかなり短いので、分岐先情報として分岐先アドレスそ
のものを保持する場合よりも、分岐先の情報を記憶して
おくハードウェアの量を小さくすることができる。その
結果、過大なハードウェアを追加することなく、プログ
ラムカウンタ相対による分岐命令に対して有効な分岐予
測を行なうことができる分岐予測装置を提供することが
できる。
【0285】請求項20に記載の発明では、命令フェッ
チと同時に、当該命令のアドレスに関連付けて分岐先情
報記憶手段に記憶された分岐先情報があればその分岐先
情報が読出され、命令フェッチによりフェッチされた命
令と所定の関係により関係付けられた分岐命令の分岐方
向を所定の方式に従って予測するとともに、分岐先の予
測を、読出された分岐先情報の分岐先計算情報に対し
て、読出された分岐先情報の計算方法特定情報により特
定される計算方法に従って行なう。その結果、過大なハ
ードウェアを追加することなく、種々の分岐命令に対し
て有効な分岐予測を行なうことができる分岐予測装置を
提供することができる。
【0286】請求項21に記載の発明では、請求項20
に記載の発明の効果に加え、計算方法特定情報により特
定される計算方法がプログラムカウンタ相対分岐であれ
ば、分岐先計算情報の即値をプログラムカウンタに加算
することによって分岐先アドレスを予測し、計算方法特
定情報により特定される計算方法がレジスタ参照分岐で
あれば、分岐先計算情報により特定されるレジスタ手段
の内容に従って分岐先アドレスを予測する。その結果、
過大なハードウェアを追加することなく、プログラム相
対およびレジスタ参照を含む種々の分岐命令に対して有
効な分岐予測を行なうことができる分岐予測装置を提供
することができる。
【0287】請求項22に記載の分岐予測装置において
は、ある分岐命令に関して、たとえばその前の分岐命令
で分岐が実行されるために当該ある分岐命令に制御が移
行してくる場合でも、少なくとも一旦予測誤りが発生し
て分岐予測情報バッファが更新された後にその命令シー
ケンスが実行される場合、その分岐予測情報を分岐予測
情報バッファから読出すために使用されるアドレスは、
当該分岐命令の予測情報の格納に使用されたものと同じ
になる。したがって、当該ある分岐命令の予測の精度
は、このように分岐予測情報バッファへの格納アドレス
を動的に管理しない場合と比較して、より高くなる。そ
の結果、過去の実行結果と相関がない分岐命令に対して
も、非常に有効な分岐予測を行なうことができる。
【図面の簡単な説明】
【図1】 本発明の第1の実施例に係る分岐予測装置お
よびその周辺の回路のブロック図である。
【図2】 第1の実施例のメモリ実行ステージを模式的
に示す図である。
【図3】 第1の実施例におけるパイプライン処理を模
式的に示す図である。
【図4】 第1の実施例の分岐予測機構のブロック図で
ある。
【図5】 第1の実施例における命令コードの一例を模
式的に示す図である。
【図6】 第1の実施例における命令コードを模式的に
示す図である。
【図7】 第1の実施例における命令コードを模式的に
示す図である。
【図8】 第1の実施例における命令コードを模式的に
示す図である。
【図9】 第1の実施例の分岐予測回路のブロック図で
ある。
【図10】 第1の実施例の大小比較回路のブロック図
である。
【図11】 第1の実施例の分岐先生成回路のブロック
図である。
【図12】 第1の実施例の予測情報バッファ56の構
成を示す模式図である。
【図13】 第1の実施例のレジスタファイルのブロッ
ク図である。
【図14】 第1の実施例のレジスタファイルに格納さ
れるデータの圧縮の態様を示す模式図である。
【図15】 本発明の第2の実施例の分岐予測装置のブ
ロック図である。
【図16】 第2の実施例の予測情報バッファのエント
リを模式的に示す図である。
【図17】 第2の実施例における予測方式ビットと予
測情報との関係を模式的に示す図である。
【図18】 本発明の第3の実施例の分岐予測装置およ
び周辺回路のブロック図である。
【図19】 本発明の第3の実施例における命令の構成
を模式的に示す図である。
【図20】 本発明の第4の実施例の分岐予測機構およ
び周辺回路のブロック図である。
【図21】 本発明の第4の実施例の分岐予測機構のブ
ロック図である。
【図22】 第4の実施例における命令コードの一例を
示す模式図である。
【図23】 本発明の第5の実施例の命令の構成を模式
的に示す図である。
【図24】 本発明の第6の実施例の分岐予測装置のブ
ロック図である。
【図25】 第6の実施例の命令の構成を模式的に示す
図である。
【図26】 本発明の第7の実施例の分岐予測装置のブ
ロック図である。
【図27】 第7の実施例におけるパイプライン処理を
模式的に示す図である。
【図28】 第7の実施例における他のパイプライン処
理を模式的に示す図である。
【図29】 本発明の第8の実施例の予測情報バッファ
のエントリを模式的に示す図である。
【図30】 第8の実施例の分岐予測装置の模式的ブロ
ック図である。
【図31】 分岐命令の静的に1つ前のアドレスに分岐
予測情報を格納した場合の、命令キャッシュおよびBT
Bの内容を示す模式図である。
【図32】 図31において、分岐命令の分岐先に分岐
命令がある場合の分岐予測情報のフェッチアドレスを示
すための模式図である。
【図33】 本発明の第9の実施例の分岐予測装置のブ
ロック図である。
【図34】 第9の実施例におけるBTBバッファの予
測情報の登録の概要を模式的に示す図である。
【図35】 従来のBTB方式を用いた分岐予測装置お
よびその周辺回路のブロック図である。
【図36】 BTB方式による分岐予測の流れを模式的
に示す図である。
【図37】 図35に示す装置の分岐予測機構のブロッ
ク図である。
【図38】 従来技術において、コンディションコード
を先行して計算する方式の処理の流れを模式的に示す図
である。
【符号の説明】
50は命令パイプライン、52はレジスタファイル、5
4は予測情報生成機構、56、170、240、270
は予測情報バッファ、58、212は分岐予測機構、6
0、184、210は命令キャッシュ、72は分岐予測
回路、74は分岐先生成回路、76はフェッチアドレス
生成回路、80は大小比較回路、82は一致比較回路、
150はデコーダ、156は圧縮部、172は履歴によ
る分岐予測機構、242は静的分岐予測機構、278は
分岐方向予測機構、282は予測分岐先計算機、28
8、310はプログラムカウンタ、314は予測分岐先
計算機。

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 演算結果を格納する手段を有するパイプ
    ライン方式のプロセッサにおける分岐予測装置であっ
    て、 分岐命令の分岐予測に関連する予測情報を、ある分岐命
    令より前にフェッチされる命令のフェッチと同じタイミ
    ングで供給するための予測情報供給手段と、 前記予測情報供給手段により供給された予測情報に従っ
    て、必要であれば前記演算結果を格納する手段から分岐
    予測に必要な情報を読出し、遅くとも前記ある分岐命令
    のフェッチサイクルの完了までに前記ある分岐命令の分
    岐予測を行なって、分岐予測信号を出力するための分岐
    予測手段とを含む分岐予測装置。
  2. 【請求項2】 前記分岐予測手段は、前記分岐予測情報
    供給手段により供給された予測情報と、分岐予測に必要
    な情報とを、前記ある分岐命令より前にフェッチされる
    命令のフェッチと同じタイミングでパイプラインに投入
    し、パイプラインにより分岐予測処理を行なわせるため
    の手段を含む、請求項1に記載の分岐予測装置。
  3. 【請求項3】 前記演算結果を格納する手段は、相互に
    独立に情報を保持する複数個の情報保持手段を含み、 前記分岐関連情報は、前記複数個の情報保持手段のうち
    の任意のものを指定するための指定情報を含み、 前記分岐予測手段は、読出した分岐関連情報に含まれる
    指定情報により指定される情報保持手段から、分岐予測
    に必要なデータを読出す、請求項1から2のいずれかに
    記載の分岐予測装置。
  4. 【請求項4】 前記分岐予測手段は、 分岐関連情報を解釈して、分岐予測に必要な情報を取出
    すための前記情報保持手段を指定するための指定情報
    と、指定された前記情報保持手段から取出された分岐予
    測に必要な情報に対して行なわれる、分岐予測のための
    オペレーションを特定する分岐予測オペレーション情報
    と、分岐予測に使用される定数データと、予測分岐先ア
    ドレスを計算するために使用される分岐先情報とを出力
    するための予測情報デコーダ手段と、 前記指定情報により指定される前記情報保持手段から出
    力される分岐予測に必要な情報に対して、分岐予測オペ
    レーション情報と定数データとにより特定されるオペレ
    ーションを行なって前記分岐予測信号を出力するための
    分岐予測回路と、 前記分岐先情報に基づいて前記予測分岐先アドレスを生
    成するための分岐先アドレス生成手段と、 前記分岐先アドレス生成手段の出力、前記分岐予測回路
    の出力、前記パイプラインから与えられる予測ミス情
    報、および自己の出力に基づいて、分岐予測命令のフェ
    ッチアドレスを出力するためのフェッチアドレス生成手
    段とを含む、請求項1から3のいずれかに記載の分岐予
    測装置。
  5. 【請求項5】 前記分岐予測手段は、分岐予測に必要な
    情報の一部分のみに基づいて分岐予測を行なうことを特
    徴とする、請求項1に記載の分岐予測装置。
  6. 【請求項6】 前記分岐予測に必要な情報を所定の態様
    に従って圧縮するための圧縮手段をさらに含み、 前記分岐予測手段は、前記圧縮手段により圧縮された情
    報に従って分岐予測を行なう、請求項1に記載の分岐予
    測装置。
  7. 【請求項7】 前記圧縮手段は、分岐予測に必要な情報
    の符号ビットと、分岐予測に必要な情報の上位の複数ビ
    ットごとの論理和と、分岐予測に必要な情報の下位の複
    数ビットとを、前記分岐予測に必要な情報として前記分
    岐予測手段に与えることを特徴とする、請求項6に記載
    の分岐予測装置。
  8. 【請求項8】 前記分岐予測回路は、2つの入力の大小
    関係を比較し、比較結果に応じて分岐先を定めるため
    に、2つの入力の間で減算処理を行なって少なくとも結
    果の符号を出力するための大小比較手段を含み、 前記大小比較手段の2つの入力の一方は、前記情報保持
    手段の1つからの入力が与えられるようにされており、 前記分岐予測回路はさらに、前記情報保持手段の他の1
    つの入力の2の補数を出力するための補数手段と、 前記情報保持手段の他の1つの入力と、前記補数手段の
    出力との一方を、前記分岐予測オペレーション情報に応
    答して選択し、前記大小比較手段の2つの入力の他方に
    与えるための選択手段とを含み、 それによって、前記大小比較手段が、その2つの入力に
    与えられる情報の間の加算処理も行なうことが可能であ
    る、請求項4に記載の分岐予測装置。
  9. 【請求項9】 前記分岐予測回路はさらに、 前記大小比較手段の出力と、前記情報保持手段からの入
    力または前記定数データとが一致しているか否かを判定
    するための一致比較手段と、 前記分岐予測オペレーション情報に応答して、前記大小
    比較手段と前記一致比較手段との出力の一方を選択する
    ための選択手段とを含む、請求項8に記載の分岐予測装
    置。
  10. 【請求項10】 前記予測情報供給手段は、分岐先アド
    レスを特定するための即値と、分岐先を特定する情報を
    保持している前記情報保持手段を指定するための指定情
    報とのいずれか一方と、分岐先の計算方法を特定する分
    岐予測オペレーション情報とを供給し、 前記分岐予測回路は、前記即値または前記指定情報に対
    して、前記分岐予測オペレーション情報により特定され
    る計算を行なって分岐先アドレスを生成する、請求項4
    に記載の分岐予測装置。
  11. 【請求項11】 分岐命令の履歴に従って分岐命令の分
    岐予測を行なうための、履歴による分岐予測機構と、 分岐命令の履歴を保持するための履歴情報保持手段とを
    さらに含み、 前記予測情報供給手段は、選択する予測方式を特定する
    ための予測方式特定情報を供給し、 さらに、前記分岐予測手段の出力と、前記履歴による分
    岐予測機構の出力とのいずれか一方を、前記予測方式特
    定情報に応答して選択するための方式選択手段を含む、
    請求項1に記載の分岐予測装置。
  12. 【請求項12】 前記予測情報供給手段は、パイプライ
    ンから与えられる予測情報を一時格納する予測情報バッ
    ファを含む、請求項1に記載の分岐予測装置。
  13. 【請求項13】 命令体系を、分岐の予測情報を含み得
    るように構成し、 前記予測情報供給手段は、命令から予測情報を取出して
    供給する手段を含む、請求項1記載の分岐予測装置。
  14. 【請求項14】 命令に、通常の命令フィールドと、次
    に実行する分岐命令の予測情報を保持するための予測情
    報フィールドとを設け、 前記予測情報供給手段は、通常の命令フィールドの内容
    をパイプラインに投入するとともに、命令の予測情報フ
    ィールドから予測情報を取出して前記分岐予測手段に供
    給する、請求項13に記載の分岐予測装置。
  15. 【請求項15】 前記予測情報供給手段は、連続する2
    つ以上の命令を一度にフェッチして、フェッチした最後
    の命令が分岐予測命令であることに応答して、フェッチ
    した前記2つ以上の命令から分岐予測情報を得て、前記
    分岐予測手段に与えるための手段を含む、請求項13に
    記載の分岐予測装置。
  16. 【請求項16】 前記命令体系に、分岐予測情報を保持
    するための分岐予測情報保持命令を設け、 前記予測情報供給手段は、前記分岐予測情報保持命令か
    ら分岐予測情報を取出して供給するための手段を含む、
    請求項13に記載の分岐予測装置。
  17. 【請求項17】 静的な分岐予測機構をさらに含み、 各命令は、次に実行される分岐命令に対して行なわれる
    分岐の予測方式を特定するための予測方式特定情報を含
    み、 前記予測情報供給手段は、フェッチされた命令から、予
    測方式特定情報を取出して供給し、 さらに、前記分岐予測手段の出力と、前記静的な分岐予
    測機構の出力とのいずれか一方を、前記予測方式特定情
    報に応答して選択するための方式選択手段とを含む、請
    求項1に記載の分岐予測装置。
  18. 【請求項18】 パイプライン方式のプロセッサにおけ
    る分岐予測装置であって、 各々が、分岐命令の分岐予測に関連する予測情報を記憶
    する複数個の記憶手段と、 前記複数個の記憶手段のうち、ある分岐命令の分岐予測
    情報を記憶したものを特定するための特定情報を、前記
    ある分岐命令より前にフェッチされる命令のフェッチと
    同じタイミングで供給するための特定情報供給手段と、 前記複数個の記憶手段のうち、前記特定情報供給手段に
    より供給された特定情報により特定される記憶手段か
    ら、前記ある分岐命令の分岐予測情報を読出し、遅くと
    も前記ある分岐命令のフェッチサイクルの完了までに前
    記ある分岐命令の分岐予測を行なって、分岐予測信号を
    出力するための分岐予測手段とを含む、分岐予測装置。
  19. 【請求項19】 パイプライン方式のプロセッサにおけ
    る分岐予測装置であって、 プログラムカウンタ相対の分岐命令が実行されたとき、
    当該分岐命令によるプログラムカウンタのオフセットの
    即値を、当該分岐命令と所定の関係にある命令のアドレ
    スと関連付けて記憶するためのプログラム相対命令即値
    記憶手段と、 前記命令フェッチと同時に、当該命令のアドレスに関連
    付けて前記プログラム相対命令即値記憶手段に記憶され
    た即値があればその即値を読出す手段と、 前記即値を読出す手段により前記プログラム相対命令即
    値記憶手段から即値が読出されたときに、前記命令フェ
    ッチによりフェッチされた命令と前記所定の関係により
    関係付けられた分岐命令の分岐方向の予測を所定の方式
    に従って行なうとともに、その分岐先予測を、前記読出
    された即値を用いて行なう分岐予測手段とを含む、分岐
    予測装置。
  20. 【請求項20】 パイプライン方式のプロセッサにおけ
    る分岐予測装置であって、 ある分岐命令が実行されたとき、当該ある分岐命令によ
    る分岐先の計算方法を特定する計算方法特定情報と、当
    該ある分岐命令の実行において分岐先の計算に用いられ
    た分岐先計算情報とを、当該ある分岐命令と所定の関係
    にある命令のアドレスと関連付けて分岐先情報として記
    憶するための分岐先情報記憶手段と、 命令フェッチと同時に、当該命令のアドレスに関連付け
    て前記分岐先情報記憶手段に記憶された分岐先情報があ
    ればその分岐先情報を読出す手段と、 前記分岐先情報を読出す手段により前記分岐先情報記憶
    手段から分岐先情報が読出されたとき、所定の方式に従
    って分岐方向の予測を行なうとともに、前記命令フェッ
    チによりフェッチされた命令と前記所定の関係により関
    係付けられた分岐命令の分岐先予測を、前記読出された
    分岐先情報の分岐先計算情報に対して、前記読出された
    分岐先情報の計算方法特定情報により特定される計算方
    法に従って行なう分岐予測手段とを含む、分岐予測装
    置。
  21. 【請求項21】 前記パイプライン方式のプロセッサ
    は、演算結果を格納するレジスタ手段を有し、 前記計算方法特定情報は、プログラムカウンタ相対分岐
    とレジスタ参照分岐とのいずれかを特定し、 前記分岐先計算情報は、プログラムカウンタ相対分岐時
    のプログラムカウンタのオフセットの即値と、レジスタ
    手段を特定するための情報とのいずれかであり、 前記分岐予測手段は、前記読出された計算方法を特定情
    報により特定される計算方法がプログラムカウンタ相対
    分岐であれば、前記読出された分岐先計算情報の即値を
    プログラムカウンタに加算することによって分岐先アド
    レスを予測し、前記読出された計算方法特定情報により
    特定される計算方法がレジスタ参照分岐であれば、前記
    読出された分岐先計算情報により特定されるレジスタ手
    段の内容に従って分岐先アドレスを予測する、請求項2
    0に記載の分岐予測装置。
  22. 【請求項22】 前記分岐予測装置には、命令を実行す
    る装置から、分岐予測がはずれた場合には予測情報の更
    新要求を示し、命令がフェッチされたときには予測情報
    の出力情報を示す書込/読出制御信号が与えられ、 前記予測情報供給手段は、 前記書込/読出制御信号が更新要求を示す値になったこ
    とに応答して、前記パイプラインから与えられる予測情
    報を、指定されたアドレスに格納し、前記書込/読出制
    御信号が出力要求を示す値になったことに応答して、指
    定されたアドレスから予測情報を出力するための分岐予
    測情報バッファと、 フェッチされた命令のアドレスを、一時的に、かつ所定
    数だけ順次記憶して先入れ先出し方式に従って出力する
    FIFOメモリと、 前記書込/読出制御信号が更新要求を示す値になったこ
    とに応答して前記FIFOメモリの出力を前記分岐予測
    情報バッファに与え、そうでない場合には現在の命令フ
    ェッチのアドレスを前記分岐予測情報バッファに与える
    選択手段とをさらに含み、それによって、 前記分岐予測情報バッファは、分岐予測がはずれた場合
    には、前記FIFOメモリの出力するアドレスに予測情
    報を格納し、予測情報の出力の際には、現在の命令フェ
    ッチのアドレスから予測情報を出力する、請求項1に記
    載の分岐予測装置。
JP5697195A 1994-06-14 1995-03-16 分岐予測装置 Expired - Fee Related JP3599409B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP5697195A JP3599409B2 (ja) 1994-06-14 1995-03-16 分岐予測装置
US08/908,004 US5848269A (en) 1994-06-14 1997-08-11 Branch predicting mechanism for enhancing accuracy in branch prediction by reference to data

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP6-131922 1994-06-14
JP13192294 1994-06-14
JP5697195A JP3599409B2 (ja) 1994-06-14 1995-03-16 分岐予測装置

Publications (2)

Publication Number Publication Date
JPH0863356A true JPH0863356A (ja) 1996-03-08
JP3599409B2 JP3599409B2 (ja) 2004-12-08

Family

ID=26397976

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5697195A Expired - Fee Related JP3599409B2 (ja) 1994-06-14 1995-03-16 分岐予測装置

Country Status (2)

Country Link
US (1) US5848269A (ja)
JP (1) JP3599409B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000033182A3 (en) * 1998-12-03 2000-10-19 Sun Microsystems Inc Software branch prediction filtering for a microprocessor
JP2007207246A (ja) * 2006-02-03 2007-08-16 Internatl Business Mach Corp <Ibm> 命令ラインのための自己プリフェッチl2キャッシュ機構
JP5136405B2 (ja) * 2006-02-28 2013-02-06 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2013250593A (ja) * 2012-05-30 2013-12-12 Renesas Electronics Corp 半導体装置

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5949995A (en) * 1996-08-02 1999-09-07 Freeman; Jackie Andrew Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
KR100240591B1 (ko) * 1996-11-06 2000-03-02 김영환 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법
TW380238B (en) * 1996-12-09 2000-01-21 Matsushita Electric Ind Co Ltd Information processing apparatus which accurately predicts whether a branch is taken for a conditional branch instruction, using small-scale hardware
US6282663B1 (en) * 1997-01-22 2001-08-28 Intel Corporation Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor
JPH1185515A (ja) * 1997-09-10 1999-03-30 Ricoh Co Ltd マイクロプロセッサ
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6230260B1 (en) * 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
JP2000132390A (ja) * 1998-10-23 2000-05-12 Toshiba Corp プロセッサ及び分岐予測器
US7242414B1 (en) 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US6732259B1 (en) 1999-07-30 2004-05-04 Mips Technologies, Inc. Processor having a conditional branch extension of an instruction set architecture
US6427206B1 (en) * 1999-05-03 2002-07-30 Intel Corporation Optimized branch predictions for strongly predicted compiler branches
US6697832B1 (en) 1999-07-30 2004-02-24 Mips Technologies, Inc. Floating-point processor with improved intermediate result handling
US7346643B1 (en) 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6631392B1 (en) 1999-07-30 2003-10-07 Mips Technologies, Inc. Method and apparatus for predicting floating-point exceptions
US6912559B1 (en) 1999-07-30 2005-06-28 Mips Technologies, Inc. System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit
US6714197B1 (en) 1999-07-30 2004-03-30 Mips Technologies, Inc. Processor having an arithmetic extension of an instruction set architecture
US6996596B1 (en) 2000-05-23 2006-02-07 Mips Technologies, Inc. Floating-point processor with operating mode having improved accuracy and high performance
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7181484B2 (en) 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7024663B2 (en) * 2002-07-10 2006-04-04 Micron Technology, Inc. Method and system for generating object code to facilitate predictive memory retrieval
US6954836B2 (en) * 2002-07-11 2005-10-11 Micron Technology, Inc. System and method for processor with predictive memory retrieval assist
US7000095B2 (en) * 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US7831806B2 (en) * 2004-02-18 2010-11-09 Arm Limited Determining target addresses for instruction flow changing instructions in a data processing apparatus
KR101076815B1 (ko) * 2004-05-29 2011-10-25 삼성전자주식회사 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템
JP4364077B2 (ja) * 2004-06-30 2009-11-11 富士通株式会社 演算装置及び演算装置の制御方法
JP4362096B2 (ja) * 2004-09-30 2009-11-11 富士通株式会社 情報処理装置,リプレース方法,リプレースプログラム及びリプレースプログラムを記録したコンピュータ読取可能な記録媒体
US7234046B2 (en) * 2004-12-01 2007-06-19 Faraday Technology Corp. Branch prediction using precedent instruction address of relative offset determined based on branch type and enabling skipping
JP2008165589A (ja) * 2006-12-28 2008-07-17 Fujitsu Ltd 情報処理装置
US7890739B2 (en) * 2008-02-19 2011-02-15 Oracle America, Inc. Method and apparatus for recovering from branch misprediction
KR20100084036A (ko) * 2009-01-15 2010-07-23 삼성전자주식회사 소프트웨어의 에러 검출 장치 및 방법
US20140258696A1 (en) * 2013-03-05 2014-09-11 Qualcomm Incorporated Strided target address predictor (stap) for indirect branches
US9619230B2 (en) * 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
EP3060983B1 (en) * 2013-10-25 2020-01-08 Advanced Micro Devices, Inc. Bandwidth increase in branch prediction unit and level 1 instruction cache

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
JP2603626B2 (ja) * 1987-01-16 1997-04-23 三菱電機株式会社 データ処理装置
JP2503223B2 (ja) * 1987-03-20 1996-06-05 富士通株式会社 先行制御方式
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
US5423011A (en) * 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
GB2285154B (en) * 1993-12-24 1998-04-01 Advanced Risc Mach Ltd Branch cache

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000033182A3 (en) * 1998-12-03 2000-10-19 Sun Microsystems Inc Software branch prediction filtering for a microprocessor
JP2007207246A (ja) * 2006-02-03 2007-08-16 Internatl Business Mach Corp <Ibm> 命令ラインのための自己プリフェッチl2キャッシュ機構
JP5136405B2 (ja) * 2006-02-28 2013-02-06 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2013250593A (ja) * 2012-05-30 2013-12-12 Renesas Electronics Corp 半導体装置

Also Published As

Publication number Publication date
US5848269A (en) 1998-12-08
JP3599409B2 (ja) 2004-12-08

Similar Documents

Publication Publication Date Title
JP3599409B2 (ja) 分岐予測装置
US5136697A (en) System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
KR100270003B1 (ko) 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법
US5442756A (en) Branch prediction and resolution apparatus for a superscalar computer processor
US5805877A (en) Data processor with branch target address cache and method of operation
JP5255367B2 (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
JP5209633B2 (ja) ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
KR20070118135A (ko) 인덱스당 2개 이상의 분기 타겟 어드레스를 저장하는 분기타겟 어드레스 캐시
KR980010787A (ko) 인스트럭션 루프를 사변적으로 실행하는 프로세서및 그 방법
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
JP2006520964A5 (ja)
US5889986A (en) Instruction fetch unit including instruction buffer and secondary or branch target buffer that transfers prefetched instructions to the instruction buffer
US8250344B2 (en) Methods and apparatus for dynamic prediction by software
US7069426B1 (en) Branch predictor with saturating counter and local branch history table with algorithm for updating replacement and history fields of matching table entries
JP5335440B2 (ja) オペランドの早期の条件付き選択
US20050216713A1 (en) Instruction text controlled selectively stated branches for prediction via a branch target buffer
US6421774B1 (en) Static branch predictor using opcode of instruction preceding conditional branch
JP3802038B2 (ja) 情報処理装置
EP0666538A2 (en) Data processor with branch target address cache and method of operation
JP3765111B2 (ja) 分岐登録命令を有するプロセッサ
JP2591325B2 (ja) 分岐制御装置
US20060259752A1 (en) Stateless Branch Prediction Scheme for VLIW Processor
JPH10214187A (ja) 高速分岐処理装置及びその分岐処理方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040601

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: 20040831

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040914

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080924

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080924

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090924

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees