JP3502592B2 - 分岐予測装置 - Google Patents

分岐予測装置

Info

Publication number
JP3502592B2
JP3502592B2 JP2000056959A JP2000056959A JP3502592B2 JP 3502592 B2 JP3502592 B2 JP 3502592B2 JP 2000056959 A JP2000056959 A JP 2000056959A JP 2000056959 A JP2000056959 A JP 2000056959A JP 3502592 B2 JP3502592 B2 JP 3502592B2
Authority
JP
Japan
Prior art keywords
branch prediction
branch
instruction
prediction state
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000056959A
Other languages
English (en)
Other versions
JP2001243069A (ja
Inventor
誠治 子井野
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2000056959A priority Critical patent/JP3502592B2/ja
Priority to US09/796,538 priority patent/US20010020267A1/en
Publication of JP2001243069A publication Critical patent/JP2001243069A/ja
Application granted granted Critical
Publication of JP3502592B2 publication Critical patent/JP3502592B2/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/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)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、パイプライン動
作を行うプロセッサの分岐予測装置に関する。
【0002】
【従来の技術】従来、パイプライン動作を行うプロセッ
サにおいては、分岐予測に基づいた分岐先アドレスから
の命令先読みによって分岐動作に伴うパイプライン動作
の隙間を埋め、スループットの向上が実現されてきた。
【0003】図3はこのような分岐予測を行う従来の分
岐予測装置を含むマイクロプロセッサの構成を示す図で
あり、図3に示すプロセッサは6段のパイプライン方式
を採用して命令を実行処理し、図3では装置の構成がそ
れぞれのパイプラインステージ(Iステージ、Qステー
ジ、U/Rステージ、Aステージ、Dステージ、Wステ
ージ)に対応して表されており、図4は図3に示す分岐
予測装置における分岐予測アルゴリズムの状態遷移を示
す図であり、図4では4つの分岐予測状態(強い分岐不
成立(SNT)、弱い分岐不成立(WNT)、弱い分岐
成立(WT)、強い分岐成立(ST))を2ビットで表
し、それぞれの予測状態が分岐成立あるいは分岐不成立
によって遷移し又はその状態を保ち、強い分岐不成立と
弱い分岐不成立の予測状態では分岐不成立を予測し、弱
い分岐成立と強い分岐成立の予測状態では分岐成立を予
測し、この予測アルゴリズムは過去2回の分岐の成立/
不成立によって次の分岐の成立/不成立を予測する。
【0004】図3において、分岐予測装置を含むマイク
ロプロセッサは、フェッチアドレスを選択するフェッチ
アドレス選択器1と、プログラムカウンタ2と、実行さ
れる命令が格納された命令キャッシュ3と、命令キャッ
シュ3に格納されているすべての条件分岐命令にそれぞ
れ対応して分岐予測状態を記憶して命令キャッシュ3と
連動して読み出しを行う分岐予測状態記憶装置4と、与
えられた分岐命令に基づいて分岐先アドレスを算出する
分岐先アドレス計算装置5と、命令キャッシュ3から読
み出された命令をデコード及びレジスタフェッチする命
令デコーダ及びレジスタフェッチ部6と、分岐予測状態
に基づいて分岐予測を実行する分岐予測実行装置7と、
分岐先アドレス計算装置5で計算された分岐先アドレス
を記憶する分岐先アドレス記憶装置8と、分岐命令の分
岐条件を判定する比較器9と、分岐予測結果と分岐条件
の判定結果とに基づいて分岐予測を判定する分岐予測判
定装置10と、分岐予測状態と分岐予測結果を保持する
分岐予測状態/結果保持装置11と、プログラムカウン
タ2の値を保持するプログラムカウンタ保持装置12
と、分岐予測状態記憶装置4の記憶内容を更新する分岐
予測状態更新装置13を備えて構成され、Iステージ、
Qステージ、U/Rステージ、Aステージ、Dステー
ジ、Wステージの6ステージのパイプラインにより命令
の実行処理を行っている。
【0005】このような構成において、まず最初にIス
テージにおいて、次の命令フェッチを行うべきアドレス
であるプログラムカウンタ2の値を選択する。次のQス
テージにおいて、Iステージで選択されたアドレスに従
って命令キャッシュ3から命令フェッチを行うと同時
に、そのアドレスに対応した分岐予測状態記憶装置4の
記憶要素を読み出す。命令キャッシュ3から読み出され
た命令は命令デコーダがあいている場合には、次のサイ
クルのRステージにて命令のデコードとレジスタフェッ
チが行われる。一方、命令デコーダが空いていない場合
には、命令待機バッファ14に格納され、命令デコーダ
に空きが生じるまで一時待機となる。ここではこの状態
をUステージとする。Aステージにおいて、Rステージ
でレジスタから読み出されたソースデータと先行命令の
演算結果のバイパスデータとの選択を行い、Rステージ
におけるデコード結果に従って、命令を適切な演算装置
へ送出し、演算を実行する。
【0006】次に、条件分岐命令の処理の流れを説明す
る。条件分岐命令はQステージにおいて命令キャッシュ
3から読み出された命令から切り出された分岐先アドレ
スオフセットを、次のサイクルで命令待機バッファ14
から分岐先アドレス計算装置5に送り、条件分岐命令自
身のアドレスと計算することによって分岐先アドレスを
計算する。それと同時に、分岐予測実行装置7において
分岐予測状態記憶装置4から読み出された分岐予測状態
に従って、分岐条件の成立/不成立を予測し、条件成立
が予測された場合には、計算された分岐先アドレスをI
ステージにおいて次の命令フェッチアドレスとして選択
するようにフェッチアドレス選択器1に指示する。
【0007】条件分岐命令に対応する有効な分岐予測状
態が分岐予測状態記憶装置4に格納されていない場合、
もしくは条件不成立と予測された場合は、分岐予測実行
装置7からはアドレス選択に関してフェッチアドレス選
択器1への指示は行われない。いずれの場合であって
も、U、R、Aステージに有効な条件分岐命令が存在す
る間は、分岐予測ミスからの実効命令列の復活、分岐予
測状態の更新のために、プログラムカウンタ保持装置1
2、分岐先アドレス記憶装置8、分岐予測状態/結果保
持装置11において、それぞれプログラムカウンタ2の
値、分岐先アドレス、予測に使用した分岐予測状態をパ
イプライン上の命令と対応付けて保持する。
【0008】Aステージにおいて比較器9において分岐
条件の判定が行われる。判定結果と分岐予測結果を分岐
予測判定装置10において比較し、両者が一致した場合
は分岐予測ヒットとなり、現在のパイプライン進行を妨
げることなく進めることができる。一方、両者が不一致
の場合には分岐予測ミスとなり、その時点でパイプライ
ン中の後続命令列をキャンセルし、正しい分岐条件に従
って命令フェッチをやり直す必要がある。条件成立と予
測されてこの予測がミスした場合には、プログラムカウ
ンタ保持装置12に格納されている分岐命令の次の命令
のアドレスを選択するように、一方条件不成立と予測さ
れてこの予測がミスした場合には、分岐先アドレス記憶
装置8に格納されている分岐アドレスを選択するように
Iステージのフェッチアドレス選択器1に指示する。
【0009】分岐予測ヒット/ミスにかかわらず、Dス
テージにおいて分岐予測状態記憶装置4に書き戻すべき
新たな分岐予測状態を、分岐条件判定結果と分岐予測状
態/結果保持装置11に保持された分岐予測状態とか
ら、分岐予測状態更新装置13において生成する。最後
のWステージにおいて、プログラムカウンタ保持装置1
2に保持された分岐命令のアドレスに対応する分岐予測
状態記憶装置4の記憶要素に更新された分岐予測状態を
書き戻す。
【0010】次に、図5に示すパイプライン動作の流れ
を参照して、条件分岐命令の動作を説明する。図5
(A)には分岐不成立予測ミス、もしくは分岐予測機能
がないプロセッサの動作を示し、同図(B)には分岐成
立予測ヒットの動作を示し、同図(C)には分岐命令の
分岐先命令が分岐命令自身であるプログラムループの動
作の一例を示す。
【0011】図5(A)において、サイクル0では、I
ステージにおいて分岐命令のアドレスがフェッチアドレ
スとして選択される。サイクル1では、Qステージにお
いて分岐命令の分岐予測状態が分岐予測状態記憶装置4
から読み出される。同時にIステージにおいて(分岐命
令+1)のアドレスがフェッチアドレスとして選択され
る。サイクル2では、Rステージで分岐予測が行われる
が、分岐不成立予測のため、Iステージでは(分岐命令
+2)のアドレスがフェッチアドレスとして選択され
る。サイクル3では、Aステージにおいて分岐命令条件
判定により分岐成立となり、分岐予測ミスであると判定
される。このときIステージにおいて分岐命令の分岐先
アドレスがフェッチアドレスとして選択され、Qステー
ジとRステージの命令はキャンセルされる。この場合に
は、分岐命令動作に伴いパイプラインに2サイクル分の
バブルが生じ、分岐先命令の実行が完了まで9サイクル
かかる。
【0012】次に、図5(B)において、サイクル0,
1での動作は図5(A)と同様である。サイクル2で
は、Rステージにおいて分岐成立の予測がなされ、Iス
テージにおいてRステージで計算される分岐先アドレス
を次のフェッチアドレスとして選択する。Qステージの
(分岐命令+1)の命令はキャンセルする。サイクル3
では、Aステージにおいて分岐条件判定により分岐成立
となり、分岐予測ヒットと判定される。分岐先命令以降
の後続命令に対しては何の指示も必要としない。この場
合には、分岐先命令の実行が完了するまで8サイクルか
かり、図5(A)の場合と比較して1サイクル早く命令
の実行が完了する。これが分岐予測の効果である。
【0013】次に、図5において、まずこのループに入
る前の分岐命令の分岐予測状態を「強い分岐不成立」
(SNT)とする。最初の分岐命令(1)は分岐不成立
と予測され、Aステージで分岐成立となるため、2回目
の分岐命令(2)までのパイプライン動作は図5(A)
と同様になる。サイクル5で更新された分岐予測状態で
ある「弱い分岐不成立」(WNT)が分岐予測状態記憶
装置4に書き戻される。一方、2回目の分岐命令(2)
はサイクル4で分岐予測状態を読み出すため、1回目の
分岐命令(1)の、分岐予測状態の更新前の状態を分岐
予測に用いることになる。したがって、2回目の分岐命
令(2)から3回目の分岐命令(3)までのパイプライ
ン動作も図5(A)と同様になる。さらに、サイクル8
における2回目の分岐命令(2)による分岐予測状態の
更新が1回目の分岐命令(1)と同じ「弱い分岐不成
立」(WNT)となるため、分岐予測状態遷移が滞るこ
とになる。
【0014】3回目の分岐命令(3)は、サイクル7で
分岐予測状態を読み出すが、そのとき1回目の分岐命令
(1)による分岐予測状態の更新が完了しているため
「弱い分岐不成立」(WNT)が出力され、サイクル8
では分岐不成立と予測される。4回目の分岐命令(4)
も同様である。従って、分岐命令(1)から分岐命令
(4)までは図5(A)と同様のパイプライン動作とな
る。5回目の分岐命令(5)は、サイクル13で分岐予
測状態記憶装置4を読み出すが、分岐命令(3)による
予測状態更新により「弱い分岐成立」(WT)が出力さ
れる。ここで初めて分岐成立予測に転じる。これ以降
は、図5(B)のパイプライン動作の繰り返しとなる。
【0015】サイクル17では、5回目の分岐命令
(5)による分岐予測状態の更新値が「強い分岐成立」
(ST)となり、7回目の分岐命令(7)で初めて「強
い分岐成立」(ST)の予測状態をQステージで読み出
すことができるようになる。すなわち、「強い分岐不成
立」(SNT)予測から「強い分岐成立」(ST)予測
に転じるまで、5つの分岐命令の実行が必要となり、7
命令目の分岐命令完了まで22サイクルを要する。
【0016】以上のように、短いプログラムループでの
分岐予測状態遷移が実際の分岐動作と同期せず遅れて遷
移するため、分岐動作に伴うパイプラインバブルが増加
し、プログラムの実効時間の増大を招いていた。上記一
例では、実際のプログラムではまれな1命令ループ動作
について説明したが、プロセッサの構成を変えて、複数
命令同時フェッチおよび実行するスーパスカラプロセッ
サのような場合には、このようなループの出現確率が上
がり、プログラム全体での性能低下は無視できないもの
になっていた。
【0017】
【発明が解決しようとする課題】以上説明したように、
過去の分岐結果の履歴(分岐予測状態)に基づいて分岐
予測を行う従来の分岐予測装置において、分岐予測に用
いられる分岐予測状態の更新は、分岐予測状態を格納し
ている記憶装置に対してのみ行われていた。そのため、
記憶装置からすでに分岐予測状態が読み出されているパ
イプライン上の同一の分岐命令に対応した分岐予測状態
は更新されず古いままになっていた。すなわち、分岐予
測状態の遷移が実際の分岐動作と同期せず遅れて遷移し
ていた。このような状態は、同一の分岐命令が時間的に
近接して実行されるような短いプログラムループで生じ
る可能性が高く、このような状態になると、分岐動作に
伴うパイプラインバブルが増加し、プログラムの実行時
間が増大するといった不具合を招いていた。
【0018】 そこで、この発明は、上記に鑑みてなさ
れたものであり、その目的とするところは、常に最新状
態の分岐予測状態を用いて分岐予測を行い、分岐予測効
率を高め、命令の実効時間を短縮し得る分岐予測装置を
提供することにある。
【0019】
【課題を解決するための手段】上記目的を達成するため
に、課題を解決する第1の手段は、条件分岐命令の分岐
予測状態を記憶し、記憶した分岐予測状態が命令フェッ
チアドレスに従って読み出される分岐予測状態記憶装置
と、前記分岐予測状態記憶装置に記憶された分岐予測状
態に基づいて条件分岐命令の分岐条件成立/不成立を予
測し、分岐条件が成立すると予測された場合には分岐先
アドレスの選択を指示する分岐予測実行装置と、条件分
岐命令の実行時に分岐条件の判定結果に従って前記分岐
予測実行装置で行われた分岐予測の正否を判定し、分岐
予測が誤っていたと判定された場合には、次に実行され
る命令の正しいアドレスの選択を指示する分岐予測判定
装置と、分岐条件の判定結果に基づいて、前記分岐予測
状態記憶装置に記憶された分岐予測状態を更新する分岐
予測状態更新装置とを有する分岐予測装置において、前
記分岐予測実行装置で分岐予測に使用された前記分岐予
測状態ならびに前記分岐予測実行装置で予測された分岐
予測結果を受けて保持し、所定のパイプラインステージ
において分岐条件が判定される条件分岐命令に対応した
分岐予測結果を前記分岐予測判定装置に与える第1の分
岐予測状態/結果保持装置と、前記分岐予測実行装置で
分岐予測に使用された前記分岐予測状態ならびに前記分
岐予測実行装置で予測された分岐予測結果を受けて保持
し、所定のパイプラインステージにおいて分岐成立/不
成立が確定した条件分岐命令に対応した前記分岐予測状
態を前記分岐予測状態更新装置に与え、保持した分岐予
測状態と前記分岐予測状態更新装置によって更新された
分岐予測状態とを入れ替えて更新する第2の分岐予測状
態/結果保持装置と、前記分岐予測状態更新装置によっ
て更新された分岐予測状態を前記分岐予測状態記憶装置
に書き戻す書き戻しアドレスをパイプライン上の条件分
岐命令と対応して保持する保持装置と、前記分岐予測状
態更新装置によって更新された分岐予測状態を選択し
て、前記分岐予測実行装置にバイパス供給する選択器
と、所定のパイプラインステージにおいて、前記保持装
置に保持されたすべての書き戻しアドレスと、複数の所
定のパイプラインステージにそれぞれ対応した複数の命
令アドレスとを比較し、一致が検出された書き戻しアド
レスに対応した分岐命令の前記第2の分岐予測状態/結
果保持装置に保持された分岐予測状態を、前記分岐予測
状態更新装置により更新された分岐予測状態に入れ替え
るよう前記第2の分岐予測状態/結果保持装置に指示
し、あるいは前記分岐予測状態更新装置により更新され
た分岐予測状態を前記分岐予測実行装置に与えるよう前
記選択器に指示する分岐予測状態バイパス制御装置とを
備え、前記分岐予測状態バイパス制御装置によって一致
が検出された条件分岐命令が、分岐予測実行ステージ以
前のパイプラインステージに存在する場合には、前記分
岐予測状態更新装置によって更新された分岐予測状態に
従って分岐予測を実行することを特徴とする。
【0020】第2の手段は、前記第1の手段において、
前記分岐予測状態記憶装置はセットアソシアティブ方式
の記憶装置であって、前記書き戻しアドレスは前記分岐
予測状態記憶装置の読み出しアドレスと、読み出しで選
択されたセット番号と、命令フェッチが命令キャッシュ
メモリから行われたか否かを示すフラグとからなること
を特徴とする。
【0021】
【0022】
【発明の実施の形態】以下、図面を用いてこの発明の一
実施形態を説明する。
【0023】図1はこの発明の一実施形態に係る分岐予
測装置を含むマイクロプロセッサの構成を示す図であ
り、図2は図1に示す装置におけるパイプライン動作の
流れを示す図であり、同図(A)には分岐不成立予測ミ
ス、もしくは分岐予測機能がないプロセッサの動作を示
し、同図(B)には分岐成立予測ヒットの動作を示し、
同図(C)には分岐命令の分岐先命令が分岐命令自身で
あるプログラムループの動作の一例を示す。なお、図2
(A)、(B)、(C)は図5(A)、(B)、(C)
にそれぞれ対応するものである。
【0024】図3に示す従来の構成と図1に示すこの実
施形態の構成において、分岐予測に直接関係しない部分
の構成、作用は同一であり、図1の構成において図3と
同符号のものは同一でありその説明は省略し、また、図
1に示す分岐予測装置では従来と同様に図4に示す状態
遷移の分岐予測アルゴリズムを使用しており、ここでは
相違点とそれによる動作の違いについて説明する。
【0025】この実施形態の特徴は、分岐予測状態バイ
パス制御装置21を有することである。分岐予測状態バ
イパス制御装置21は、Aステージにおける分岐命令に
対応する命令アドレスをプログラムカウンタ保持装置1
2に格納されているアドレスから選択しDステージに送
ったDステージの分岐命令アドレス(A1)と、Qステ
ージの命令アドレス(A2)、又はQステージの次のサ
イクルすなわち分岐予測ステージの分岐命令アドレス
(A3)、又はプログラムカウンタ保持装置12に格納
されているU、R、Aステージのすべての命令アドレス
(A4)とをそれぞれ比較し、一致するか否かを判別す
る。
【0026】分岐命令アドレス(A1)と分岐予測ステ
ージ以前のステージの命令、すなわちQステージの命令
アドレス(A2)との一致が検出された場合には、分岐
予測状態更新装置13で生成された新しい分岐予測状態
を分岐予測実行装置7に供給するように指示する選択信
号S2、S3が分岐予測状態バイパス制御装置21から
選択器22、選択器23に出力され、分岐予測状態更新
装置13で更新された最新の分岐予測状態が選択器22
ならびに選択器23により選択され分岐予測実行装置7
に与えられ、分岐予測ステージにおいて新しい分岐予測
状態が分岐予測に使用される。また、分岐命令アドレス
(A1)とQステージの次のサイクルすなわち分岐予測
ステージの分岐命令アドレス(A3)との一致が検出さ
れた場合には、分岐予測状態更新装置13で生成された
新しい分岐予測状態を分岐予測実行装置7に供給するよ
うに指示する選択信号S3が分岐予測状態バイパス制御
装置21から選択器23に出力され、分岐予測状態更新
装置13で更新された最新の分岐予測状態が選択器23
により選択され分岐予測実行装置7に与えられ、分岐予
測ステージにおいて新しい分岐予測状態が分岐予測に使
用される。
【0027】一方、それ以降のステージのアドレスとの
一致が検出された場合、すなわち分岐命令アドレス(A
1)とプログラムカウンタ保持装置12に格納されてい
るU、R、Aステージのいずれかの命令アドレス(A
4)との一致が検出された場合には、一致が検出された
アドレスと同期して分岐予測状態/結果保持装置11b
に格納されている分岐予測状態を、分岐予測状態更新装
置13で生成された新しい分岐予測状態と入れ替える。
【0028】この実施形態では、図3に示す構成に比べ
て、2つの分岐予測状態/結果保持装置11a、11b
を備えている。分岐予測状態保持/結果装置11aの出
力は分岐予測判定装置10に供給され、分岐予測ヒット
/ミスの判定に使用される。したがって、分岐予測ステ
ージ以降に先行する同一分岐命令が分岐予測状態を更新
しても、分岐予測状態/結果保持装置11aに保持され
る分岐予測状態に対する更新は行わない。それに対し
て、分岐予測状態/結果保持装置11bの出力は分岐予
測状態更新装置13に供給され、分岐予測状態遷移の元
データとして使用される。したがって、分岐予測ステー
ジ以降、U、R、AステージにおいてDステージの分岐
命令と同一分岐命令が検出された場合には、分岐予測状
態バイパス制御装置21からの指示信号(S4)に従っ
て、分岐予測状態の更新が行われる。
【0029】次に、上記構成における分岐予測のパイプ
ライン動作を図2を参照して説明する。
【0030】図5に示す従来のパイプライン動作と比較
するために、同一の命令シーケンスでの動作を説明す
る。図2(A)、(B)は単一の分岐命令の分岐予測ヒ
ット/ミスに関する動作で、図5(A)、(B)に示す
従来の動作との差異はない。
【0031】一方、図2(C)に示す1分岐命令ループ
の動作例では図5(C)に示す従来の動作例との違いが
現れている。前述したとおり、分岐予測状態更新装置1
3によって更新された分岐予測状態の更新値は分岐命令
のDステージから分岐予測状態記憶装置4をバイパスさ
れる。分岐不成立が予測されている間は、図2の分岐命
令(1)、(2)に示すようにDステージからQステー
ジに対して分岐予測状態がバイパスされ、分岐成立が予
測されている間は、図2の分岐命令(3)〜(7)に示
すようにDステージからRステージに対して分岐予測状
態がバイパスされる。したがって、分岐予測状態遷移が
分岐命令実行と同期して行われ、3回目の分岐命令
(3)において分岐成立予測に転じ、サイクル10で
は、4回目の分岐命令(4)の分岐予測で初めて「強い
分岐成立」予測となる。このように、図5に示す従来の
動作と比較して7サイクル早く「強い分岐成立」予測が
行われるようになる。7回目の分岐命令(7)の実行完
了まで20サイクルを要する。これも、図5に示す従来
の動作と比較して2サイクル早く完了することになる。
【0032】このように、上記実施形態では、分岐命令
による分岐予測状態遷移をパイプライン上の同一分岐命
令の分岐予測状態にバイパスし、分岐予測及び分岐予測
状態遷移に用いられる分岐予測状態を常に最新状態に更
新するようにしているので、分岐予測効率を向上させ、
プログラムの実効時間を短縮することが可能となる。
【0033】また、従来の技術の欄で述べたように、複
数命令を同時実行可能なスーパスカラプロセッサでは複
数命令で構成されるプログラムループでも同様のパイプ
ライン動作となり、効果は大きくなる。さらに、命令フ
ェッチから分岐条件判定までのステージ数が長い、いわ
ゆるスーパパイプライン構成を採用したプロセッサの場
合においても著しい効果を得ることができる。
【0034】なお、上記実施形態において、命令キャッ
シュ3の構成によっては、分岐予測状態バイパス制御装
置21における一致検出には、Qステージにおける命令
キャッシュ3及び分岐予測状態記憶装置4のアクセス履
歴、フェッチアドレス属性等の付加的情報を用いるよう
にしてもよい。例えばセットアソシアティブ方式の命令
キャッシュを備える場合には、命令フェッチでヒットし
たセット番号、キャッシュ読み出しインデックス、命令
キャッシュを用いた命令フェッチであったか否かを示す
フラグを分岐予測状態/結果保持装置に格納されている
分岐予測状態と同期して保持し、これらを分岐予測状態
バイパス制御装置21における一致検出に使用する構成
も考えられる。このような構成では、一致検出に必要な
ビット数が削減できるためハードウェアの削減と一致検
出に要する時間を削減することができる。
【0035】
【発明の効果】以上説明したように、この発明によれ
ば、分岐命令による分岐予測状態遷移をパイプライン上
の同一分岐命令の分岐予測状態にバイパスして、分岐予
測及び分岐予測状態遷移に用いられる分岐予測状態を常
に最新状態に更新するようにしたので、分岐予測効率を
向上させ、プログラムの実行時間を短縮することができ
る。
【図面の簡単な説明】
【図1】この発明の一実施形態に係る分岐予測装置を備
えたマイクロプロセッサの構成を示す図である。
【図2】図1に示すマイクロプロセッサのパイプライン
動作を示す図である。
【図3】従来の分岐予測装置を備えたマイクロプロセッ
サの構成を示す図である。
【図4】従来及びこの発明の実施形態の分岐予測アルゴ
リズムの状態遷移を示す図である。
【図5】従来の分岐予測装置を用いたマイクロプロセッ
サのパイプライン動作を示す図である。
【符号の説明】
1 フェッチアドレス選択器 2 プログラムカウンタ 3 命令キャッシュ 4 分岐予測状態記憶装置 5 分岐先アドレス計算装置 6 命令デコーダ及びレジスタフェッチ部 7 分岐予測実行装置 8 分岐先アドレス記憶装置 9 比較器 10 分岐予測判定装置 11,11a、11b 分岐予測状態/結果保持装置 12 プログラムカウンタ保持装置 13 分岐予測状態更新装置 14 命令待機バッファ 21 分岐予測状態バイパス制御装置 22,23 選択器

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 条件分岐命令の分岐予測状態を記憶し、
    記憶した分岐予測状態が命令フェッチアドレスに従って
    読み出される分岐予測状態記憶装置と、 前記分岐予測状態記憶装置に記憶された分岐予測状態に
    基づいて条件分岐命令の分岐条件成立/不成立を予測
    し、分岐条件が成立すると予測された場合には分岐先ア
    ドレスの選択を指示する分岐予測実行装置と、 条件分岐命令の実行時に分岐条件の判定結果に従って前
    記分岐予測実行装置で行われた分岐予測の正否を判定
    し、分岐予測が誤っていたと判定された場合には、次に
    実行される命令の正しいアドレスの選択を指示する分岐
    予測判定装置と、 分岐条件の判定結果に基づいて、前記分岐予測状態記憶
    装置に記憶された分岐予測状態を更新する分岐予測状態
    更新装置とを有する分岐予測装置において、 前記分岐予測実行装置で分岐予測に使用された前記分岐
    予測状態ならびに前記分岐予測実行装置で予測された分
    岐予測結果を受けて保持し、所定のパイプラインステー
    ジにおいて分岐条件が判定される条件分岐命令に対応し
    た分岐予測結果を前記分岐予測判定装置に与える第1の
    分岐予測状態/結果保持装置と、 前記分岐予測実行装置で分岐予測に使用された前記分岐
    予測状態ならびに前記分岐予測実行装置で予測された分
    岐予測結果を受けて保持し、所定のパイプラインステー
    ジにおいて分岐成立/不成立が確定した条件分岐命令に
    対応した前記分岐予測状態を前記分岐予測状態更新装置
    に与え、保持した分岐予測状態と前記分岐予測状態更新
    装置によって更新された分岐予測状態とを入れ替えて更
    新する第2の分岐予測状態/結果保持装置と、 前記分岐予測状態更新装置によって更新された分岐予測
    状態を前記分岐予測状態記憶装置に書き戻す書き戻しア
    ドレスをパイプライン上の条件分岐命令と対応して保持
    する保持装置と、 前記分岐予測状態更新装置によって更新された分岐予測
    状態を選択して、前記分岐予測実行装置にバイパス供給
    する選択器と、 所定のパイプラインステージにおいて、前記保持装置に
    保持されたすべての書き戻しアドレスと、複数の所定の
    パイプラインステージにそれぞれ対応した複数の命令ア
    ドレスとを比較し、一致が検出された書き戻しアドレス
    に対応した分岐命令の前記第2の分岐予測状態/結果保
    持装置に保持された分岐予測状態を、前記分岐予測状態
    更新装置により更新された分岐予測状態に入れ替えるよ
    う前記第2の分岐予測状態/結果保持装置に指示し、あ
    るいは前記分岐予測状態更新装置により更新された分岐
    予測状態を前記分岐予測実行装置に与えるよう前記選択
    器に指示する分岐予測状態バイパス制御装置とを備え、 前記分岐予測状態バイパス制御装置によって一致が検出
    された条件分岐命令が、分岐予測実行ステージ以前のパ
    イプラインステージに存在する場合には、前記分岐予測
    状態更新装置によって更新された分岐予測状態に従って
    分岐予測を実行することを特徴とする分岐予測装置。
  2. 【請求項2】 前記分岐予測状態記憶装置はセットアソ
    シアティブ方式の記憶装置であって、前記書き戻しアド
    レスは前記分岐予測状態記憶装置の読み出しアドレス
    と、読み出しで選択されたセット番号と、命令フェッチ
    が命令キャッシュメモリから行われたか否かを示すフラ
    グとからなることを特徴とする請求項1記載の分岐予測
    装置。
JP2000056959A 2000-03-02 2000-03-02 分岐予測装置 Expired - Fee Related JP3502592B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000056959A JP3502592B2 (ja) 2000-03-02 2000-03-02 分岐予測装置
US09/796,538 US20010020267A1 (en) 2000-03-02 2001-03-02 Pipeline processing apparatus with improved efficiency of branch prediction, and method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000056959A JP3502592B2 (ja) 2000-03-02 2000-03-02 分岐予測装置

Publications (2)

Publication Number Publication Date
JP2001243069A JP2001243069A (ja) 2001-09-07
JP3502592B2 true JP3502592B2 (ja) 2004-03-02

Family

ID=18577828

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000056959A Expired - Fee Related JP3502592B2 (ja) 2000-03-02 2000-03-02 分岐予測装置

Country Status (2)

Country Link
US (1) US20010020267A1 (ja)
JP (1) JP3502592B2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020166042A1 (en) * 2001-05-01 2002-11-07 Yoav Almog Speculative branch target allocation
US7133995B1 (en) * 2002-12-16 2006-11-07 Advanced Micro Devices, Inc. Dynamic page conflict prediction for DRAM
WO2004068337A1 (ja) * 2003-01-30 2004-08-12 Fujitsu Limited 情報処理装置
US8209524B2 (en) 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US8423824B2 (en) 2005-08-29 2013-04-16 The Invention Science Fund I, Llc Power sparing synchronous apparatus
US7607042B2 (en) 2005-08-29 2009-10-20 Searete, Llc Adjusting a processor operating parameter based on a performance criterion
US8181004B2 (en) * 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US7647487B2 (en) * 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US8402257B2 (en) * 2005-08-29 2013-03-19 The Invention Science Fund I, PLLC Alteration of execution of a program in response to an execution-optimization information
US8255745B2 (en) * 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US7725693B2 (en) * 2005-08-29 2010-05-25 Searete, Llc Execution optimization using a processor resource management policy saved in an association with an instruction group
US7779213B2 (en) * 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US8516300B2 (en) * 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
US7653834B2 (en) * 2005-08-29 2010-01-26 Searete, Llc Power sparing synchronous apparatus
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US7739524B2 (en) * 2005-08-29 2010-06-15 The Invention Science Fund I, Inc Power consumption management
US8214191B2 (en) * 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US7774558B2 (en) 2005-08-29 2010-08-10 The Invention Science Fund I, Inc Multiprocessor resource optimization
US20070061554A1 (en) * 2005-09-09 2007-03-15 Lsi Logic Corporation Branch predictor for a processor and method of predicting a conditional branch
US7461243B2 (en) * 2005-12-22 2008-12-02 Sun Microsystems, Inc. Deferred branch history update scheme
TW200816282A (en) * 2006-09-27 2008-04-01 Promos Technologies Inc Method for reducing stress between a conductive layer and a mask layer and use of the same
JPWO2010023804A1 (ja) * 2008-08-25 2012-01-26 日本電気株式会社 データ処理装置、データ処理方法並びにデータ処理プログラムが格納された記録媒体
JP5552042B2 (ja) 2010-12-27 2014-07-16 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム解析の方法、システムおよびプログラム
CN106775593B (zh) * 2016-12-30 2019-12-31 智车优行科技(北京)有限公司 去除循环处理流程中条件判断语句的方法和装置、应用单元
JP7077862B2 (ja) 2018-08-16 2022-05-31 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10565093B1 (en) * 2018-10-09 2020-02-18 International Business Machines Corporation Providing cognitive intelligence across continuous delivery pipeline data

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5394530A (en) * 1991-03-15 1995-02-28 Nec Corporation Arrangement for predicting a branch target address in the second iteration of a short loop
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5875324A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock
US5687110A (en) * 1996-02-20 1997-11-11 Advanced Micro Devices, Inc. Array having an update circuit for updating a storage location with a value stored in another storage location
US20020069375A1 (en) * 2000-10-12 2002-06-06 Matt Bowen System, method, and article of manufacture for data transfer across clock domains

Also Published As

Publication number Publication date
JP2001243069A (ja) 2001-09-07
US20010020267A1 (en) 2001-09-06

Similar Documents

Publication Publication Date Title
JP3502592B2 (ja) 分岐予測装置
JP3494736B2 (ja) 分岐先バッファを用いた分岐予測システム
JP5889986B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
US6898699B2 (en) Return address stack including speculative return address buffer with back pointers
US6457120B1 (en) Processor and method including a cache having confirmation bits for improving address predictable branch instruction target predictions
US7222227B2 (en) Control device for speculative instruction execution with a branch instruction insertion, and method for same
US9201654B2 (en) Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
US7478228B2 (en) Apparatus for generating return address predictions for implicit and explicit subroutine calls
JP5734945B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
JP5209633B2 (ja) ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
US7155574B2 (en) Look ahead LRU array update scheme to minimize clobber in sequentially accessed memory
JPWO2008029450A1 (ja) 分岐予測ミスリカバリ機構を有する情報処理装置
JP2003005956A (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US6912650B2 (en) Pre-prefetching target of following branch instruction based on past history
US11099849B2 (en) Method for reducing fetch cycles for return-type instructions
JP2000322257A (ja) 条件分岐命令の投機的実行制御方法
US9507600B2 (en) Processor loop buffer
JP2001060152A (ja) 分岐予測を抑止する情報処理装置および方法
JPWO2004068337A1 (ja) 情報処理装置
JP3741945B2 (ja) 命令フェッチ制御装置
JP2011209774A (ja) 分岐予測方法及びその方法を実行する分岐予測回路
JP2001022577A (ja) 情報処理装置
JP3558481B2 (ja) データ処理装置
JP4049490B2 (ja) 情報処理装置
JPH09311787A (ja) データ処理装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20031125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20031205

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

Free format text: PAYMENT UNTIL: 20071212

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081212

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091212

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20091212

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101212

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees