JPH07262006A - 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ - Google Patents

分岐ターゲットアドレスキャッシュを備えたデータプロセッサ

Info

Publication number
JPH07262006A
JPH07262006A JP7022251A JP2225195A JPH07262006A JP H07262006 A JPH07262006 A JP H07262006A JP 7022251 A JP7022251 A JP 7022251A JP 2225195 A JP2225195 A JP 2225195A JP H07262006 A JPH07262006 A JP H07262006A
Authority
JP
Japan
Prior art keywords
branch
address
unit
instruction
data processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP7022251A
Other languages
English (en)
Inventor
P Black Brian
ブライアン・ピー・ブラック
Marvin A Denman Jr
マービン・エイ・デンマン・ジュニア
Seungyoon Peter Song
セウンユーン・ピー・ソング
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.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
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 Motorola Inc filed Critical Motorola Inc
Publication of JPH07262006A publication Critical patent/JPH07262006A/ja
Pending legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】 データプロセッサに分岐ターゲットアドレス
キャッシュを設けることにより精密な分岐予測を可能に
する。 【構成】 データプロセッサ10は数多くの最近遭遇し
たフェッチアドレス−ターゲットアドレス対を記憶する
BTAC48を有する。分岐ユニット20は先行条件お
よび受信した分岐命令に依存するフェッチアドレスを発
生する。各分岐命令の実行後、分岐ユニットはそれが次
に同じ分岐命令に遭遇した時前記先行条件が適合するか
否かを予測する。もし先行条件の予測した値が分岐を行
なわせるものであれば、分岐ユニットは該分岐命令に対
応するフェッチアドレス−ターゲットアドレス対をBT
ACに加える。もし先行条件の予測された値が分岐を行
なわないものとすれば、分岐ユニットは該分岐命令に対
応するフェッチアドレス−ターゲットアドレス対をBT
ACから削除する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般的にはデジタル計算
システムに関し、かつより特定的には分岐予測(bra
nch prediction)能力を備えたデータプ
ロセッサに関する。
【0002】
【従来の技術】分岐予測はデータプロセッサの性能を改
善するために使用される1つの技術である。もし分岐命
令が依存するオペランドが得られなければ、データプロ
セッサは該分岐命令の結果を予測するかあるいはオペラ
ンドが得られるまで該分岐命令を止めておく(stal
l)必要がある。もしデータプロセッサが分岐命令の実
行を止めておくか、あるいは遅延させれば、該データプ
ロセッサはそれが次に必要とする命令が何であるかを決
定することができない。そのような遅延はデータプロセ
ッサの性能に大きな影響を与える。
【0003】分岐予測技術を使用するデータプロセッサ
はそれらのデータプロセッサが分岐命令を受けるたびご
とに「推測(guess)」を行ない、その推測に基い
て行動し、かつ次に前記命令を実行することによりその
推測が正しかったか否かを判定する。そのようなデータ
プロセッサは最終的に分岐が取られかつ新しい命令アド
レスに「ジャンプする」か否か、あるいはそれが次に引
き続く命令へと「降下する(fall throug
h)」か否かを推測する。分岐命令を予測するデータプ
ロセッサは性能をかせぐことができるが、それは該プロ
セッサはそれらが完全に分岐命令を実行できるよりも早
く正確な推測を行なうことができるからである。これら
のデータプロセッサは次に間違った推測を訂正すること
が必要とされるのみである。
【0004】分岐ターゲットアドレスキャッシュ(Br
anch target address cach
e:BTAC)は分岐予測を行なうために使用される装
置である。BTACはデータプロセッサが最近分岐した
アドレスを含む。これらの「分岐ターゲット(bran
ch targets)」はそれらを発生した分岐命令
のアドレスによって指示される(indexed)。デ
ータプロセッサはいったんそれが次に実行すべきいずれ
かの命令のアドレスを決定するとBTACをサーチす
る。もし該アドレスがBTAC内の有効なエントリに対
応すれば、データプロセッサはそれが再び分岐を行なう
ことを推測しかつ自動的にその対応するキャッシュ記憶
された(cached)ターゲットアドレスへと分岐す
る。もし前記アドレスがBTAC内のいずれの有効なエ
ントリにも対応しなければ、データプロセッサはその次
の命令のアドレスをいずれか他の方法で決定することに
なる。
【0005】
【発明が解決しようとする課題】BTACを導入したデ
ータプロセッサはそのBTACを該データプロセッサが
各々の分岐命令を実行した後に更新しかつターゲットア
ドレスを決定する。知られたデータプロセッサは次に該
分岐命令のアドレスおよびそのターゲットアドレスをB
TACに記憶する。いくつかのデータプロセッサは分岐
が行なわれた分岐命令のアドレス−ターゲットアドレス
対のみを記憶する。分岐が行なわれないものはBTAC
に記憶されないかあるいはもしそれらが既にBTACに
記憶されていれば削除される。この方法は分岐が行なわ
れない(not−taken)または引き続く(seq
uential)アドレスが容易に決定できるからBT
ACのサイズを最小にする。使用される置き換えアルゴ
リズムにかかわらず、知られたデータプロセッサはそれ
らのBTACを分岐命令の実行結果によって更新する。
【0006】しかしながら、このような従来のデータプ
ロセッサでは、必ずしも分岐予測が的確に行なわれると
は限らずデータプロセッサの処理速度を充分に高めるこ
とはできなかった。
【0007】本発明の目的は、知られたデータプロセッ
サの不都合を実質的に除去する分岐ターゲットアドレス
キャッシュユニットを供えたデータプロセッサを提供す
ることにある。
【0008】
【課題を解決するための手段および作用】データプロセ
ッサは分岐ターゲットアドレスキャッシュおよび一緒に
結合された分岐ユニットを有する。分岐ターゲットアド
レスキャッシュは複数組のアドレスを格納する。該複数
組のものの各々はフェッチアドレスおよびターゲットア
ドレスを有する。前記分岐ターゲットアドレスキャッシ
ュはもし前記複数組のものの内の選択された1つのフェ
ッチアドレスが論理的に第1の部分集合の入力アドレス
に等価であれば前記複数組のものの内の選択された1つ
のターゲットアドレスを出力する。前記分岐ユニットは
受信した命令に応答して実行フェッチアドレスを発生す
る。受信した命令は入力アドレスによって指示される
(indexed)。前記実行フェッチアドレスは先行
条件(condition precedent)に応
答する。前記分岐ユニットは前記先行条件の予期された
値が論理的に所定の値と等価であれば前記実行フェッチ
アドレスおよび1つの部分集合の入力アドレスを分岐タ
ーゲットアドレスキャッシュに格納する。
【0009】データプロセッサを動作させる方法も開示
される。第1の時間の間に、該方法は分岐ターゲットア
ドレスキャッシュにおける命令の入力アドレスを受信す
る段階、および該分岐ターゲットアドレスキャッシュか
らターゲットアドレスを出力する段階を有する。前記出
力ターゲットアドレスは、各々フェッチアドレスおよび
ターゲットアドレスを有する、複数の組の内の1つであ
る。前記出力ターゲットアドレスのフェッチアドレスは
入力アドレスの第1の部分集合と論理的に等価である。
第2の時間の間に、本方法は前記分岐ターゲットアドレ
スキャッシュに結合された分岐ユニットにおいて命令を
受信する段階、実行フェッチアドレスを発生する段階、
および該実行フェッチアドレスおよび前記入力アドレス
の部分集合を分岐ターゲットアドレスキャッシュに格納
する段階を有する。前記実行フェッチアドレスは前記受
信した命令および先行条件に応答して発生される。前記
分岐ユニットは前記フェッチアドレスおよび入力アドレ
スの部分集合を、もし前記先行条件の予測された値が論
理的に所定の値に等価であれば、分岐ターゲットアドレ
スキャッシュに格納する。
【0010】
【実施例】図1は、本発明にしたがって構築されたデー
タプロセッサ10のブロック図を示す。データプロセッ
サ10は各々の分岐命令が分岐が行なわれるかあるいは
行なわれないかを予測することによってその性能を改善
するデータプロセッサである。データプロセッサ10は
次に命令を予測されたフェッチアドレスでフェッチし、
かつこれらの命令の実行を開始する。後に、データプロ
セッサ10は前記分岐が行なわれるべきであったかある
いは行なわれるべきでなかったかを解明し(resol
ves)かつもしそれが前の時間に誤って予測した場合
には訂正処置を行なう。データプロセッサ10は複数組
のフェッチアドレス−ターゲットアドレス対(fetc
h address−target address
pairs)を記憶するために分岐ターゲットアドレス
キャッシュ(“BTAC”)を導入する。データプロセ
ッサ10はそれが新しいフェッチアドレスを発生するた
びごとにBTACをサーチする。もしフェッチアドレス
がBTACに存在すれば、データプロセッサは直ちに記
憶されたフェッチアドレスに関連するターゲットアドレ
スにおける命令のフェッチを開始することになる。各々
の分岐命令を解明した後、データプロセッサ10は前記
特定の分岐命令によって指示される(indexed)
フェッチアドレス−ターゲットアドレス対を加えるかま
たは削除する。開示された発明によれば、データプロセ
ッサ10はそれが次に分岐命令を実行するときに同じ分
岐を行なうか否かを予測する。もしデータプロセッサ1
0がそれが次に命令を実行するときに分岐を行なうこと
を予測すれば、データプロセッサ10は該フェッチアド
レス−ターゲットアドレス対をBTACに加えることに
なる。もしデータプロセッサ10がそれが次に命令を実
行するときに分岐を行なわないものと予測すれば、デー
タプロセッサ10は該フェッチアドレス−ターゲットア
ドレス対をBTACから削除することになる。BTAC
に対しフェッチアドレス−ターゲットアドレス対を加え
または削除する決定は単に分岐が最終的に行なわれるも
のと解明されたかあるいは行なわれないものと解明され
たかによるものではない。この方法は各々の分岐予測の
精度を改善し、命令ストリームにおける「バブル(bu
bbles)」の数を低減し、かつ一般にデータプロセ
ッサ10の性能を改善する。
【0011】図1について説明を続けると、バスインタ
フェースユニット(以後BIUと称する)12はデータ
プロセッサ10とデータ処理システムの残りの部分(示
されていない)との間のデータの流れを制御する。BI
U12は命令キャッシュ14およびデータキャッシュ1
6に接続されている。命令キャッシュ14は命令ストリ
ームをシーケンサユニット18に供給する。シーケンサ
ユニット18は図3に関して後により詳細に説明する。
シーケンサユニット18は個々の命令を適切な実行ユニ
ットに送る。データプロセッサ10は分岐ユニット2
0、固定小数点実行ユニットA 22、固定小数点実行
ユニットB 24、コンプレクス固定小数点実行ユニッ
ト(complex fixed point exe
cution unit)26、ロード/ストア実行ユ
ニット28、および浮動小数点実行ユニット30を有す
る。固定小数点実行ユニットA 22、固定小数点実行
ユニットB 24、コンプレクス固定小数点実行ユニッ
ト26、およびロード/ストア実行ユニット28はそれ
らの結果を汎用アーキテクチャレジスタファイル32
(GPRと名付けられており、かつ以後GPRファイル
と称する)および第1のリネームバッファ34に対し読
み出しかつ書き込む。浮動小数点実行ユニット30およ
びロード/ストア実行ユニット28はそれらの結果を浮
動小数点アーキテクチャレジスタファイル36(FPR
と名付けられており、かつ以後FPRファイルと称す
る)および第2のリネームバッファ38に対し読み出し
かつ書き込む。
【0012】開示された分岐予測方法を除くデータプロ
セッサ10の動作は技術的に知られている。一般に、分
岐ユニット20はあるデータレジスタの内容および命令
自体が与えらればプログラムされた命令のどのシーケン
スが適切であるかを判定する。分岐ユニット20が分岐
命令を予測するために使用する2つのそのようなレジス
タはカウンタレジスタ37および条件レジスタ39であ
る。分岐ユニット20は図4および図5に関して後に説
明する。命令キャッシュ14はプログラムされた命令の
このシーケンスをシーケンサ18に提供する。もし命令
キャッシュ14が必要な命令を含んでいなければ、それ
はそのような命令をデータプロセッサ10の外部のメイ
ンメモリシステム(図示せず)からフェッチする。(以
下に説明するように、シーケンサユニット18は分岐ユ
ニット20が最終的に特定の分岐命令を解明する前に各
々の分岐命令に対しいくつかの予測を行なう。)
【0013】シーケンサユニット18はプログラムされ
た命令のシーケンスの個々の命令を種々の実行ユニット
20,22,24,26,28および30に発行する。
各々の実行ユニットは特定のクラスの命令の内の1つま
たはそれ以上の命令を実行する。各々の実行ユニットの
特定のクラスの命令は実行ユニットの名前によって指示
されている。例えば、固定小数点実行ユニットAおよび
Bは加算、減算、AND演算、OR演算、およびXOR
演算のような固定小数点表記で表されたオペランドに対
し簡単な数学的操作を行なう。コンプレクス固定小数点
実行ユニット26は乗算および除算のような固定小数点
表記で表されたオペランドに対しより複雑な数学的操作
を行なう。浮動小数点実行ユニット30は乗算および除
算のような浮動小数点表記で表されたオペランドに対し
数学的操作を行なう。
【0014】固定小数点実行ユニットAおよびBそして
コンプレクス固定小数点ユニット26はそれらの操作の
結果を第1のリネームバッファ34内の指定されたエン
トリに戻す。第1のリネームバッファ34は前記結果を
発生した命令に先行するすべての命令がそれらのGPR
ファイルのエントリを更新したときGPRファイル32
のエントリを第1のリネームバッファ34からのエント
リによって周期的に更新する。シーケンサユニット18
はこの更新を調整する。第1のリネームバッファ34お
よびGPRファイル32はともにオペランドを固定小数
点実行ユニットAおよびBとコンプレクス固定小数点ユ
ニット26に供給することができる。
【0015】浮動小数点実行ユニット30はその操作の
結果を第2のリネームバッファ38内の指定されたエン
トリに戻す。第2のリネームバッファ38は前記結果を
発生した命令に先行するすべての命令がそれらのFPR
ファイルのエントリを更新した場合にFPRファイル3
6のエントリを第2のリネームバッファ38におけるエ
ントリによって周期的に更新する。シーケンサユニット
18はまたこの更新を調整する。第2のリネームバッフ
ァ38およびFPRファイル36の双方はオペランドを
浮動少数点実行ユニット30に供給する。
【0016】ロード/ストアユニット28はGPRファ
イル32、第1のリネームバッファ34、FPRファイ
ル36または第2のリネームバッファ38に記憶された
データを読み取りかつ選択されたデータをデータキャッ
シュ16に書き込む。このデータはまた開示された発明
に関連しないデータプロセッサ10の動作特性に依存し
て(図示しない)外部メモリシステムに書き込むことが
できる。逆に、ロード/ストアユニット28はデータキ
ャッシュ16に記憶されたデータを読み取りかつ該読み
取ったデータを第1のリネームバッファ34または第2
のリネームバッファ38に書き込む。もしデータキャッ
シュ16が要求されたデータを含んでいない場合は、該
データキャッシュ16はそのデータをBIU12を介し
てデータプロセッサ10の外部のメインメモリシステム
からフェッチすることになる。
【0017】開示された分岐予測方法を備えたデータプ
ロセッサ10の動作は図2〜図5を参照して以下に説明
する。一般に、データプロセッサ10は縮小命令セット
コンピュータ(“RISC”)である。データプロセッ
サ10は各々のステップが時間的に他の命令のステップ
とオーバラップすることができる、一連のより小さなス
テップに各命令を分解することによって高い性能を達成
する。この性能戦略は「パイプライン化(pipeli
ning)」として知られている。
【0018】図2は、図1に示されたデータプロセッサ
10によって実行される命令のタイミング図を示す。図
2はまた、ある分岐命令の特徴機能(feature
s)のタイミングを記述する種々の注釈を含む。示され
た実施例においては、各々の命令は5つの別個のステッ
プ、すなわちフェッチ、デコード、ディスパッチ、実
行、および完了、に分解されている。
【0019】フェッチ段階では、命令キャッシュ14は
前のクロックサイクルにおいて分岐ユニット20または
シーケンサユニット18によって識別されたメモリアド
レスで始まる1つまたはそれ以上の命令を読み出す。こ
のメモリアドレスはフェッチアドレスと称される。シー
ケンサユニット18はフェッチパイプライン段階で第1
の分岐予測を行なう。シーケンサユニット18はBTA
Cを使用して数多くの最近の分岐命令に対するフェッチ
アドレスおよびそれらの対応するターゲットアドレスの
多数の対を記憶する。シーケンサユニット18はもしそ
の入力フェッチアドレスが特定のターゲットアドレスの
フェッチアドレスに対応すればBTACに格納された特
定のターゲットアドレスにおける命令をフェッチする。
【0020】デコード段階においては、命令はシーケン
サユニット18によって引き続く段階で使用するために
数多くの制御信号にデコードされる。シーケンサユニッ
ト18はデコードパイプラインステージにおいて第2の
分岐予測を行なう。シーケンサユニット18は1つまた
はそれ以上の単純な分岐命令のためのフェッチアドレス
を発生することができる。シーケンサユニット18は分
岐ヒストリテーブル(“BHT”)に各々の最近遭遇し
た分岐命令に対する履歴状態(historystat
e)を維持する。各々の分岐命令の状態はシーケンサユ
ニット18が分岐を行なうと予測するかあるいは行なわ
ないと予測するかを決定する。
【0021】ディスパッチ段階においては、シーケンサ
ユニット18は許されないデータまたは資源の依存状態
がないことを判定した後および前記命令の結果に対する
リネームバッファのエントリを確保した後に各々の命令
を適切な実行ユニットに導く。このディスパッチ段階は
またディスパッチされている命令に対するオペランド情
報を供給する責務を有する。シーケンサ18はディスパ
ッチパイプライン段階において第3の分岐予測を行な
う。シーケンサユニット18はカウンタレジスタ37の
値に依存する1つまたはそれ以上の分岐命令のためのフ
ェッチアドレスを発生することができる。シーケンサユ
ニット18が何らかの見せかけの(phantom)分
岐命令が発生したか否かを判定するのはディスパッチ段
階の間である。もし見せかけの分岐命令が発生していれ
ば、シーケンサユニット18はそのBTACの内容を無
効にする。
【0022】実行段階においては、各々の特定の実行ユ
ニットはそのプログラムされた命令を実行する。結果
は、もしあれば、整数および浮動小数点結果に対し、そ
れぞれ、リネームバッファ34またはリネームバッファ
38に戻される。カウンタレジスタ37および条件レジ
スタ39の内容はすべての分岐の最終的な解明のために
実行段階において利用することができる。したがって、
実行フェーズで分岐ユニット20によって発生されたフ
ェッチアドレスは予測ではない。
【0023】完了段階においては、シーケンサユニット
18は特定の命令に先行するそれぞれの命令がアーキテ
クチャレジスタファイルを更新した後にリネームバッフ
ァに格納された特定の命令の結果によってアーキテクチ
ャレジスタファイルを更新する。完了段階はまた前記特
定の命令に先行するそれぞれの命令がアーキテクチャ状
態を更新した後にマシンにおける全ての他のアーキテク
チャ状態を更新する。
【0024】一般に、各々の命令段階はマシンクロック
サイクル1つ分を必要とする。しかしながら、コンプレ
クス固定小数点命令のような、いくつかの命令は実行す
るのに1つより多くのクロックサイクルを必要とする。
したがって、前の命令が実行するのに必要とする時間の
範囲により特定の命令の実行および完了段階の間で遅延
が生じ得る。
【0025】図3は、図1に示されたシーケンサユニッ
ト18のブロック図を示す。マルチプレクサ40はいく
つかのソースから各々のクロックサイクルに新しいフェ
ッチアドレスを選択する。アドレスセレクタ42は以下
に説明する優先機構にしたがっていくつかのソースの1
つをマルチプレクサ40の出力として選択する。前記フ
ェッチアドレスはデータプロセッサ10が実行すべき次
の命令または命令のグループのロケーションを識別する
仮想アドレス(virtual address)であ
る。前記フェッチアドレスは命令フェッチアドレスレジ
スタ(IFARと名付けかつ以後IFARと称する)4
4によってラッチされかつ命令キャッシュ14に送られ
る。示された実施例においては、シーケンサ18および
分岐ユニット20は5つのパイプラインステージの各々
の1つの間に1つのフェッチアドレスを発生する。特定
の分岐命令によって発生される4つ(まで)のフェッチ
アドレスの各々および例外アドレスの戻りはパイプライ
ンの異なるステージで生じることに注目すべきである。
逆に、2つまたはそれ以上の接近した分岐命令はシーケ
ンサ18および分岐ユニット20に対し同時に2つの異
なるフェッチアドレスをマルチプレクサ40に送るよう
にさせることができる。この第2の場合、アドレスセレ
クタはより後のパイプラインステージにおいて発生され
たフェッチアドレスを選択することになる。
【0026】シーケンサ18はデータプロセッサの5つ
のパイプラインステージと類似して5つの部分に都合良
く分割することができる。(シーケンサ18の実行部分
は図1に示された6個の実行ユニットによって実施され
る。)
【0027】フェッチステージにおいては、IFAR4
4における仮想アドレスはシーケンシャルアドレス計算
機46、BTAC48、BHT50、およびデコードバ
ッファ52へと送られる。IFAR44からのフェッチ
アドレスはデコードバッファ52における命令のアドレ
スを追跡するためにデコードバッファ52によってラッ
チされる。
【0028】シーケンシャルアドレス計算機46はフェ
ッチアドレス、「シーケンシャルアドレス(SEQUE
NTIAL ADDRESS)」、を発生しかつそれを
マルチプレクサ40に送る。シーケンシャルアドレス計
算機46は現在のマシンサイクルにおいてフェッチされ
た命令の数をIFAR44の内容に加えることによって
シーケンシャルフェッチアドレスを発生する。
【0029】BTAC48はフェッチアドレス、「BT
ACアドレス(BTAC ADDRESS)」、を発生
することができ、かつ、もしそうすれば、該アドレスを
マルチプレクサ40へと送る。BTAC48は完全連想
内容アドレス可能メモリ(fully associa
tive content addressablem
emory:CAM)アレイである。BTAC48は複
数の30ビットのターゲットアドレスを記憶する。各々
のターゲットアドレスは29ビットのアドレスタグ(a
ddress tag)および1つの有効ビット(va
lid bit)と関連している。BTAC48は各々
の記憶されたタグに対し現在のフェッチアドレスの29
の最上位ビットを比較する。もし前記フェッチアドレス
ビットが記憶された有効タグと整合すれば、BTAC4
8は対応する記憶されたターゲットアドレスをマルチプ
レクサ40へと出力する。この場合、BTAC48はま
た制御信号HIT/*MISSを肯定する。なお、ここ
で記号“*”は信号の否定を表し、一般に論理記号の上
に付されるオーババーに対応している。BTAC48は
また予測されたターゲットアドレスおよび前記HIT/
*MISS信号をパイプラインにおいて後に使用するた
めにデコードバッファ52へと送る。
【0030】分岐ユニット20は各々の実行段階の間に
BTAC48へのエントリを削除しかつ更新する。もし
分岐ユニット20があるエントリが加えられるべきであ
ること(分岐がとられるべきであること)を示せば、B
TAC48がサーチされる。もし該エントリが既にBT
AC48にあれば、そのアドレス情報が更新される。こ
れは、それらの分岐ターゲット情報のためにレジスタを
使用する分岐はBTAC48に正しくない情報を持って
いるかもしれないため有用である。もし前記エントリが
BTAC48になければ、分岐ユニット20はそれをB
TAC48に加え、他のエントリと置き換える。もし分
岐ユニット20があるエントリが削除されるべきである
こと(分岐がとられるべきでないこと)を示せば、BT
AC48はサーチされかつ整合するエントリ(もしあれ
ば)が無効にされる。BTAC48はこれらの実行段階
の動作および上に述べたフェッチ段階の動作を容易にす
るため2つの読み取りポートおよび1つの書き込みポー
トを有する。図4および図5は、分岐ユニット20がど
のようにしてBTAC48およびBHT50を更新する
かを示す。
【0031】BHT50は、512の最近遭遇した分岐
命令に対する2ビットの分岐履歴状態を維持するダイレ
クトマップ・ランダムアクセスメモリ(direct
mapped random access memo
ry:RAM)アレイである。各々のエントリは4つの
可能な状態をエンコードするために2ビットを含む。B
HT50はIFAR44からの前記フェッチアドレスビ
ットのサブセット(部分集合)によって指示される(i
ndexed)。現在のフェッチアドレスがマップされ
るエントリの最新の値がBHT50から読み出されかつ
デコードバッファ52にラッチされる。分岐ユニット2
0は後に説明されるように実行段階においてBHT50
の各々のエントリを更新する。BHT50はこれらの実
行段階の動作および上に述べたフェッチ段階の動作を容
易に可能とするため1つの読み出しポートおよび1つの
書き込みポートを有する。
【0032】データプロセッサ10は条件レジスタ39
における1つまたはそれ以上のビットの値に基づく分岐
命令を予測するためのダイナミック分岐予測方法を使用
する。パワーPCアーキテクチャにおいては、他の命令
は条件レジスタ39のビットを分岐命令を実行するため
の前置き(prelude)として修正することができ
る。ダイナミック分岐予測方法によれば、分岐命令は同
じ分岐命令の前に生じたものが分岐が行なわれた場合ま
たは行なわれなかった場合に、それぞれ、分岐が行なわ
れあるいは行なわれない可能性が高くなる。したがっ
て、各々の分岐命令の履歴を維持することにより分岐命
令が分岐が行なわれるかあるいは行なわれないかを予測
することが可能になる。特定の分岐命令の状態は該特定
の分岐命令のデコード段階の間に分岐が行なわれるもの
と予測されるかあるいは行なわれないものと予測される
かを決定する。示された実施例に対する分岐状態モデル
は4状態モデル(four−state model)
であり、すなわち強い分岐なし(STRONG−NOT
−TAKEN)、弱い分岐なし(WEAK−NOT−T
AKEN)、弱い分岐あり(WEAK−TAKEN)お
よび強い分岐あり(STRONG−TAKEN)であ
る。シーケンサ18はもし命令の分岐状態が前記強い分
岐なしまたは弱い分岐なしに対応すれば分岐が行なわれ
ないことを予測する。シーケンサ18はもしその命令の
分岐状態が強い分岐ありまたは弱い分岐ありに対応すれ
ば分岐が行われることを予測する。分岐ユニット20は
BHT50における各々のエントリの状態を更新する。
分岐ユニット20はBHTエントリの現在の状態および
実行している分岐の方向に関する情報を使用して該実行
している分岐命令に対応するBHTエントリの次の状態
を計算する。もしシーケンサ18が分岐命令を誤って予
測すれば、分岐ユニット20はBHT50の対応するエ
ントリを1つの強い状態から同じ弱い状態へあるいは1
つの弱い状態から反対の弱い状態へと更新する。逆に、
シーケンサユニット18が分岐命令を正しく予測すれ
ば、分岐ユニット20はBHT50における対応するエ
ントリを1つの弱い状態から同じ強い状態へとまたは1
つの強い状態から同じ強い状態へと更新することにな
る。
【0033】デコード段階においては、デコードバッフ
ァ52は命令、アドレス、および制御情報をデコード予
測ユニット54に提供する。デコードバッファ52は命
令を命令デコーダ56に提供する。ディスパッチバッフ
ァ54はデコードバッファ52からの命令、アドレスお
よび制御情報ならびに命令デコーダ56からの命令デコ
ード情報をラッチする。デコード予測ユニット54はマ
ルチプレクサ40に対しデコード段階フェッチアドレ
ス、「デコードアドレス(DECODE ADDRES
S)」、を提供する。デコード予測ユニット54は無条
件分岐命令を予測しかつ条件レジスタ39における1つ
またはそれ以上のビットに基づき分岐命令を予測する。
デコード予測ユニット54は無条件分岐命令をそれらの
存在をデコードしかつ分岐命令に応じて適切なフェッチ
アドレスを決定することによって予測する。デコード予
測ユニット54は分岐命令をBHT50の内容をデコー
ドすることにより条件レジスタ39における1つまたは
それ以上のビットに基いて予測する。前に述べたよう
に、デコードされた分岐命令のフェッチアドレスに対応
するBHT50のエントリはその分岐命令が分岐が行な
われるかあるいは行なわれないかを決定する。分岐命令
それ自体はターゲット(ターゲット:target)ア
ドレスを決定する。
【0034】ディスパッチ段階においては、ディスパッ
チバッファ58は命令および制御情報をディスパッチユ
ニット60に供給する。ディスパッチユニット60はこ
れらの命令に対し資源割当ておよび競合のチェックを行
ないかつもし可能であれば命令および制御情報を適切な
実行ユニットに送る。ディスパッチユニット60はまた
制御情報を完了ユニット(completion un
it)62に送る。
【0035】ディスパッチユニット60はフェッチアド
レス、「ディスパッチアドレス(DISPATCH A
DDRESS)」、をマルチプレクサ40に提供する。
ディスパッチユニット60はカウンタレジスタ37の初
期の値に基づき分岐命令を予測する。分岐ユニット20
は各々の分岐命令を実行段階においてカウンタレジスタ
37の値を使用して解明することに注目すべきである。
パワーPCアーキテクチャにおいては、カウンタレジス
タ37はループの反復の数を表す値によって好適にロー
ドされ、かつ各々の反復ごとに減分されてループ退出条
件を提供する。ディスパッチユニット60はディスパッ
チ段階の間にカウンタレジスタ37の値を考慮して特定
の分岐命令のオペコードに応じて分岐が行なわれるべき
かあるいは行なわれるべきでないかを予測する(もしカ
ウンタレジスタがゼロに等しければ分岐を行なう、な
ど)。カウンタレジスタ37および条件レジスタ39の
組合せを使用する分岐はディスパッチ段階において予測
される。ディスパッチユニット60はディスパッチ段階
の間に条件レジスタ39によって特定される条件が適合
していることを想定することによりおよびカウンタレジ
スタ37の値を使用することによりこれらの分岐命令を
予測する。
【0036】ディスパッチユニット60はもしそれがシ
ーケンサ18が幻のまたは見せかけの分岐(phant
om branch)に遭遇したものと判定すればBT
AC48へのBTACフラッシュ(BTAC FLUS
H)制御信号を肯定する。ディスパッチユニット60は
制御情報が特定の命令がBTAC48に予測されたター
ゲットを有していた(BTAC48がHIT/*MIS
Sを肯定した)ことを示しているが、該特定の命令が分
岐命令でない場合にBTACフラッシュを肯定すること
になる。BTACフラッシュを肯定することはBTAC
48の全てのエントリを無効にする。ディスパッチユニ
ット60は次にシーケンシャルアドレス計算機46によ
って出力されるディスパッチアドレス(DISPATC
H ADDRESS)によって同じシーケンシャルアド
レスをマルチプレクサ40に出力する。ディスパッチユ
ニット60はBTAC48を無効にするが、それはBT
ACのエントリは前の情況からのものである可能性が高
くかつしたがってもはや有効でないからである。「幻の
分岐」が生じるたびごとに、シーケンサユニット18は
いくつかのサイクルを浪費し幻の経路(phantom
path)に沿って命令をフェッチする。BTACフ
ラッシュはこれをおよび近い将来における多くの他の
「幻の分岐」を防止する。
【0037】分岐命令の実行段階の初めに、分岐ユニッ
ト20はフェッチアドレスがそれに依存する分岐条件の
実際の値を知る。典型的には、この条件はカウンタレジ
スタ37の値および条件レジスタ39のビットの何らか
の組合せである。この時全ての分岐に対し最終的な解明
が行なわれる。分岐ユニット20はフェッチアドレスを
マルチプレクサ40に供給してその計算を反映させる、
すなわち「実行アドレス(EXECUTION ADD
RESS)」である。種々の実行ユニットは実行段階の
間にいろいろな制御情報を完了ユニット62に供給す
る。
【0038】完了段階においては、完了ユニット62は
アーキテクチャ的なマシン状態を更新する。完了ユニッ
ト62は何らかの実行ユニットからの割込みの場合にフ
ェッチアドレス、「割込みアドレス(INTERRUP
T ADDRESS)」を提供する。完了ユニット62
は割込み条件を有する命令が完了する用意ができている
場合に前記割込みアドレスを出力する。割込みがソフト
ウェアによって処理された後、割込みからの戻りが一般
に実行されて割込み条件を生じたものに続く命令による
実行を再開する。完了ユニット62はまたそれ自身およ
び実行ユニットにおけるアーキテクチャ的な状態を更新
するために制御信号を提供する。分岐命令に対しては、
このステップはアーキテクチャのプログラムカウンタお
よびカウンタレジスタ37を更新する。
【0039】アドレスセレクタ42はそれがマルチプレ
クサ40に対し6個までのアドレスの内のどれをIFA
R44に出力させるべきかを決定する。マルチプレクサ
40はBTAC48から制御信号HIT/*MISS
を、デコード予測ユニット54から制御信号デコード訂
正(DECODE CORRECTION)を、ディス
パッチユニット60から制御信号ディスパッチ訂正(D
ISPATCH CORRECTION)を、分岐ユニ
ット20から制御信号実行訂正(EXECUTION
CORRECTION)を、そして完了ユニット62か
ら制御信号割込み(INTERRUPT)を受信する。
各々の制御信号の発生源(source)はその制御信
号をもし該発生源が前のパイプラインステージの間に発
生されたフェッチアドレスと異なるフェッチアドレス、
すなわち訂正されたフェッチアドレス、を発生すればそ
の制御信号を肯定する。一般に、パイプラインの各ステ
ージは分岐を解明するかあるいは前の段階(単数または
複数)よりも統計的により正確な分岐方向の予測を行な
う。したがって、パイプラインのより後の段階は訂正に
ついてより前の段階よりも優先度を有する。フェッチ段
階の場合には、BTAC48の出力はシーケンシャルア
ドレス計算機46の出力よりも優先度を持つ。各々の引
き続くフェッチアドレス訂正はパイプラインにおける対
応する分岐命令に続く全ての命令を無効にする。例え
ば、もし分岐ユニット20が前のフェッチアドレスを訂
正すれば、デコード段階のフェッチアドレス(分岐命令
の直後の)デコード段階のフェッチアドレスは不適切な
ものである。この場合、デコード段階のフェッチアドレ
スはフェッチされるべきではなかった分岐命令に基いて
いる。
【0040】図4は、図1に示された分岐ユニット20
がどのようにしてBTAC48を更新するかを示す流れ
図66を示している。パワーPCアーキテクチャによれ
ば、分岐ユニット20は4つの異なるクラスの分岐命令
を実行する。すなわち、無条件分岐、条件レジスタ39
に基づく条件分岐、カウンタレジスタ37に基づく条件
分岐、およびカウンタレジスタ37および条件レジスタ
39に基づく条件分岐である。無条件分岐命令はデコー
ド段階の間におけるそれらのデコードに基いて予測され
る(解明される)。条件レジスタ39に基づく条件分岐
命令はデコード段階の間にBHT50からの履歴ビット
(history bits)を使用して予測される。
カウンタレジスタ37に基づく条件分岐命令およびカウ
ンタレジスタ37と条件レジスタの組合せに基づく条件
分岐命令はディスパッチ段階の間に予測される。これら
の後者の命令はカウンタレジスタ37の減分された(d
ecremented)値を使用しかついずれかの条件
レジスタ39の条件が適合したことを想定する。
【0041】図4によって説明を続けると、分岐ユニッ
ト20はそれが実行する各々の分岐命令に対し新しいフ
ェッチアドレスを計算する、ステップ68。分岐ユニッ
ト20はそれが(分岐をとらない)同じ命令経路に沿っ
て続けるべきか、あるいはそれが(分岐がとられた)新
しい命令ストリームへとジャンプすべきかを分岐命令の
オペコードおよびカウンタレジスタ37と条件レジスタ
39の内容に依存して解明する。分岐ユニット20は分
岐命令のアドレシングフォーマットにしたがって分岐が
行なわれるフェッチアドレスを計算する。
【0042】分岐ユニット20は各々の分岐命令のオペ
コードにおいて規定された先行条件(conditio
n precedent)にしたがって各々の分岐を行
なうかあるいは行なわないかを予測する。すなわち、無
条件分岐、カウンタレジスタ37がゼロに等しければ分
岐、カウンタレジスタ37がゼロに等しくなければ分
岐、条件レジスタ39が真であれば分岐、条件レジスタ
39が偽であれば分岐、条件レジスタ39が真でありか
つカウンタレジスタ37がゼロに等しければ分岐、条件
レジスタ39が偽でありかつカウンタレジスタ37がゼ
ロに等しければ分岐、条件レジスタ39が真でありかつ
カウンタレジスタ37がゼロに等しくなければ分岐、あ
るいは条件レジスタ39が偽でありかつカウンタレジス
タ37がゼロに等しくなければ分岐する。
【0043】分岐ユニット20は新しいフェッチアドレ
スに対し5つの異なるアドレスの内の1つを出力する。
すなわち、シーケンシャルアドレス、絶対ターゲットア
ドレス、オフセットターゲットアドレス、カウンタレジ
スタ37の内容、およびリンクレジスタ(図示せず)の
内容の内の1つを出力する。分岐ユニット20は命令ワ
ードのサイズ(バイト、ハーフワード、その他)を分岐
命令のフェッチアドレスに加えることによって前記シー
ケンシャルアドレスを計算する。分岐ユニット20は6
個のゼロ、分岐命令において含まれたオペランド、およ
び2個のゼロ(最上位ビットから最下位ビット)を連結
することによって絶対ターゲットアドレスを計算する。
分岐ユニット20は前記含まれたオペランドおよび分岐
フェッチアドレスを加えることによってオフセットター
ゲットアドレスを計算する。分岐ユニット20は前記分
岐がとられないものと解明されればシーケンシャルアド
レスを選択する。分岐ユニット20は、分岐がとられる
ものと解明されれば、前記絶対ターゲットアドレス、前
記オフセットターゲットアドレス、前記カウンタレジ3
7の内容、またはリンクレジスタの内容の内の1つを選
択する。分岐ユニット20は分岐命令のアドレシングフ
ォーマットに応じて前記4つの可能性の内の特定の1つ
を選択する。
【0044】次に、分岐ユニット20はそれが次に分岐
命令を実行する時に同じ分岐命令をどのように予測する
かを決定する、ステップ70。ステップ70は図5に関
して後により詳細に説明する。分岐ユニット20は次
に、ステップ72において、BTAC48からの分岐命
令に対応するフェッチアドレス−ターゲットアドレス対
を削除するか、あるいは、ステップ74において、分岐
命令に対応するフェッチアドレス−ターゲットアドレス
対をBTAC48に加えることになる、ステップ74。
【0045】図5は、図4に示されたステップ70の流
れ図を示す。分岐ユニット20は最初にそれが実行して
いる分岐命令が無条件分岐命令であるかを判定する、ス
テップ76。もし分岐ユニット20が実行している分岐
命令が無条件分岐命令であれば、分岐ユニット20は次
にそれが命令を実行する時に分岐を行なうことを予測す
る(実際に知る)。この場合、分岐ユニット20は分岐
命令のフェッチアドレスおよびそれがステップ68にお
いて計算したターゲットアドレスをBTAC48に加え
る。もし分岐ユニットが実行している分岐命令が無条件
分岐命令でなければ、分岐ユニット20はどのようなタ
イプの分岐命令をそれが実行したところであるかを判定
し続ける。
【0046】分岐ユニット20は次にそれが実行してい
る分岐命令が条件分岐命令であるかを判定する、ステッ
プ78。前に述べたように、条件分岐命令は条件レジス
タ39の1つまたはそれ以上のビットに依存する。条件
分岐命令は該条件分岐命令のフェッチアドレスに対応す
るBHT50に格納された値に依存して分岐を行なうか
あるいは行なわないかが予測される。分岐ユニット20
が実行している分岐命令が条件分岐命令であれば、分岐
ユニット20はBHT50のための新しい分岐状態を計
算する、ステップ80。分岐ユニット20はまたステッ
プ80においてこの新しい分岐状態をBHT50に書き
込む。分岐ユニット20は前記新しい分岐状態が強い分
岐(strong−taken)または弱い分岐(we
ak−taken)であるかを判定する、ステップ8
2。条件分岐命令はこれら両方の場合において次にデー
タプロセッサ10が条件分岐命令を実行する時に分岐を
行なうものと予測されることになる。したがって、分岐
ユニット20は該分岐命令のフェッチアドレスおよびそ
れがステップ68において計算したターゲットアドレス
をBTAC48に加える。強い分岐なし(strong
−not−taken)または弱い分岐なし(weak
−not−taken)に対応する分岐状態を有する条
件分岐命令はデータプロセッサ10が次に該条件分岐命
令を実行する時に分岐を行なわないものと予測されるこ
とになる。したがって、分岐ユニット20は該分岐命令
のフェッチアドレスおよびそれがステップ68において
計算したターゲットアドレスをBTAC48から削除す
る。
【0047】分岐ユニット20が実行している分岐命令
はもし該分岐命令が無条件分岐命令でもなく条件分岐命
令でもない場合はカウンタレジスタ37の値に基づかな
ければならない。前に述べたように、分岐ユニット20
はもしカウンタレジスタ37の値がゼロに等しいかある
いはゼロに等しくない場合に分岐することができる分岐
命令を実行する。分岐ユニット20はカウンタをベース
とした分岐命令がカウンタレジスタ37の値がゼロに等
しいという条件で分岐するかを判定する、ステップ8
4。
【0048】もしカウンタレジスタをベースとした分岐
命令がカウンタレジスタ37の値がゼロであるという条
件で分岐する場合は、分岐ユニット20はカウンタレジ
スタの現在の値が1であるかを判定する、ステップ8
6。もしカウンタレジスタ37の現在の値が1に等しけ
れば、分岐ユニット20は該分岐命令のフェッチアドレ
スおよびそれがステップ68において計算したターゲッ
トアドレスをBTAC48に加える。もしカウンタレジ
スタ37の現在の値が1に等しくなければ、分岐ユニッ
ト20は該分岐命令のフェッチアドレスおよびそれがス
テップ68において計算したターゲットアドレスをBT
AC48から削除する。パワーPCアーキテクチャにお
いては、分岐ユニット20は各々の分岐命令の実行段階
の初めにカウンタレジスタ37の値を減分する。次に、
分岐ユニット20は分岐解明の一部としてカウンタレジ
スタ37の値を調べる。したがって、もしカウンタレジ
スタ37の値が現在1であれば、次の分岐命令はカウン
タレジスタ37の値をゼロに等しくすることになる。分
岐ユニット20はそれが実行している分岐命令はまたそ
れが実行する次の分岐命令であるものと仮定する。した
がって、カウンタレジスタの値がゼロに等しいという分
岐を行なう要件は該カウンタの現在の値が1であれば論
理的に真である。同様に、カウンタレジスタ37の値が
ゼロに等しいという分岐を行なう要件は該カウンタの現
在の値が1でなければ論理的に偽である。(あるいは、
分岐ユニット20はそれが次に分岐命令に遭遇する時に
各々の分岐命令が行なわれるかあるいは行なわれないか
を予測する時カウンタレジスタ37の値がゼロ(または
1)に等しくないものと仮定することができる。統計的
には、カウンタレジスタ37の値はそれが任意の特定の
数に等しいよりはその特定の数に等しくないことがより
多い。)
【0049】もし前記カウンタレジスタをベースとした
分岐命令がカウンタレジスタ37の値がゼロでないとい
う条件によって分岐する場合は、分岐ユニット20はカ
ウンタレジスタ37の現在の値が1に等しいかを判定す
る、ステップ88。分岐ユニット20はもしカウンタレ
ジスタ37の現在の値が1でなければ該分岐命令のフェ
ッチアドレスおよびそれがステップ68において計算し
たターゲットアドレスをBTAC48に加える。分岐ユ
ニット20はもしカウンタレジスタ37の現在の値が1
であれば、該分岐命令のフェッチアドレスおよびそれが
ステップ68において計算したターゲットアドレスをB
TAC48から削除する。パワーPCアーキテクチャに
おいては、分岐ユニット20は各々の分岐命令の実行段
階の初めにカウンタレジスタ37の値を減分する。次
に、分岐ユニット20はカウンタレジスタ37の値を分
岐解明の一部として調べる。したがって、もしカウンタ
レジスタ37の値が現在1であれば、次の分岐命令はカ
ウンタレジスタ37の値をゼロに等しくすることにな
る。分岐ユニット20はそれが実行している分岐命令は
またそれが実行する次の分岐命令であるものと仮定する
ことになる。したがって、カウンタレジスタ37の値が
ゼロに等しくないという分岐を行なう要件は該カウンタ
の現在の値が1であれば論理的に偽である。同様に、カ
ウンタレジスタ37の値がゼロに等しくないという分岐
を行なう要件はもし該カウンタの現在の値が1でなけれ
ば論理的に真である。
【0050】各々の分岐命令を分岐ユニット20が次に
実行する時に分岐を行なうかあるいは行なわないかの予
測は単に分岐命令の現在の解明(current re
solution)のみに依存するものでないことに注
目すべきである。例えば、条件分岐命令はその前の履歴
によりまたは何らかのスタートアップ状態により強い分
岐に等しい分岐状態を持つことができる。この分岐命令
は該命令のパイプラインサイクルのデコード段階の間に
分岐するものと予測されるであろう。しかしながら、こ
の命令が基礎とする条件は分岐ユニット18に命令の実
行段階の間に分岐を行なわないようにさせることができ
る。分岐ユニットはデコード段階のフェッチアドレスを
実行段階のフェッチアドレスによって訂正する。分岐ユ
ニット20はまた分岐命令の分岐状態を弱い分岐へと修
正する(ステップ80)。分岐ユニット80はその弱い
分岐の分岐状態に基づき、それが次に命令を実行する時
にこの条件分岐命令が分岐すべきでないことを予測する
ことになる。したがって、分岐ユニット18はこの条件
分岐命令のフェッチアドレス−ターゲットアドレス対を
BTAC48に加えることになる。
【0051】本発明が特定の実施例に関して説明された
が、当業者にはさらに他の修正および改善をなすことが
可能であろう。例えば、開示された発明は伝統的に複雑
命令セットコンピュータまたはCISCマシンとして分
類されるデータプロセッサにも導入できる。また、ある
機能ユニットはある実施例では省略することができある
いはデータプロセッサ10の他の領域へと再配置でき
る。したがって、本発明は添付の特許請求の範囲に示さ
れた本発明の精神および範囲から離れることのない全て
のそのような修正を含むものと理解されるべきである。
【0052】
【発明の効果】以上のように、本発明によれば、従来の
分岐予測技術を使用するデータプロセッサの不都合を除
去し、かつ簡単な装置構成で精密な分岐予測を行ない、
もってデータプロセッサの処理速度を向上させることが
可能になる。
【図面の簡単な説明】
【図1】本発明にしたがって構成されたデータプロセッ
サを示すブロック図である。
【図2】図1に示されたデータプロセッサによって実行
される命令のタイミング図である。
【図3】図1に示されたデータプロセッサにおけるシー
ケンサユニットを示すブロック図である。
【図4】図1に示されたデータプロセッサにおける分岐
ユニットがどのようにして分岐ターゲットアドレスキャ
ッシュを更新するかを示す流れ図である。
【図5】図4に示された流れ図における1つのステップ
の詳細を示す流れ図である。
【符号の説明】
10 データプロセッサ 12 バスインタフェースユニット(BIU) 14 命令キャッシュ 16 データキャッシュ 18 シーケンサユニット 20 分岐ユニット 22 固定小数点実行ユニットA 24 固定小数点実行ユニットB 26 コンプレクス固定小数点実行ユニット 28 ロード/ストア実行ユニット 30 浮動小数点実行ユニット 32 汎用目的アーキテクチャレジスタファイル 34 第1のリネームバッファ 36 浮動小数点アーキテクチャレジスタファイル 37 カウンタレジスタ 38 第2のリネームバッファ 39 条件レジスタ 40 マルチプレクサ 42 アドレスセレクタ 44 命令フェッチアドレスレジスタ 46 シーケンシャルアドレス計算機 48 BTAC 50 BHT 52 デコードバッファ 54 デコード予測ユニット 56 命令デコーダ 58 ディスパッチバッファ 60 ディスパッチユニット 62 完了ユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マービン・エイ・デンマン・ジュニア アメリカ合衆国テキサス州78727、オース チン、ラスタウン・ドライブ 4804 (72)発明者 セウンユーン・ピー・ソング アメリカ合衆国テキサス州78759、オース チン、ヴァキューロ・コーブ 8405

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 分岐ターゲットアドレスキャッシュ(4
    8)を備えたデータプロセッサ(10)であって、 各々フェッチアドレスおよびターゲットアドレスを含む
    複数組のアドレスデータを記憶する分岐ターゲットアド
    レスキャッシュ(48)であって、該分岐ターゲットア
    ドレスキャッシュは前記複数組の内の選択された1つの
    フェッチアドレスが論理的に入力アドレスの第1のサブ
    セットと等価であれば前記複数組の内の選択された1つ
    のターゲットアドレスを出力するもの、 前記分岐ターゲットアドレスキャッシュに結合された分
    岐ユニット(20)であって、該分岐ユニットは受信し
    た命令にかつ先行条件に応じて実行フェッチアドレスを
    発生し、前記受信した命令は入力アドレスによって指示
    され、前記分岐ユニットは前記先行条件の予測された値
    が論理的に所定の値に等価であれば前記実行フェッチア
    ドレスおよび前記入力アドレスのサブセットを前記分岐
    ターゲットアドレスキャッシュに格納するもの、 を具備することを特徴とする分岐ターゲットアドレスキ
    ャッシュ(48)を備えたデータプロセッサ(10)。
  2. 【請求項2】 前記分岐ユニットはさらにある数を記憶
    するカウンタレジスタ(37)を含み、前記ある数は受
    信した命令が第1のクラスの命令のメンバであれば先行
    条件となることを特徴とする請求項1に記載のデータプ
    ロセッサ。
  3. 【請求項3】 前記分岐ユニット(20)は前記受信し
    た命令の実行に応じて前記数を減分することを特徴とす
    る請求項2に記載のデータプロセッサ。
  4. 【請求項4】 さらに、 前記分岐ユニットに結合された条件レジスタ(39)で
    あって、該条件レジスタはあるビットを記憶し、該ビッ
    トは前記受信した命令が第2のクラスの命令のメンバで
    あれば先行条件であるもの、 複数の履歴状態を記憶する分岐ヒストリテーブル(5
    0)であって、前記履歴状態の各々の1つは複数のイン
    デクスの異なる1つによって指示され、前記分岐ヒスト
    リテーブルは前記履歴状態の1つの前記複数のインデク
    スの内の1つが前記入力アドレスの第2のサブセットに
    論理的に等価であれば前記複数の履歴状態の内の1つを
    出力するもの、 前記分岐ヒストリテーブルに結合されたシーケンサユニ
    ット(18)であって、該シーケンサユニットは前記複
    数の履歴状態の1つに応じてデコードフェッチアドレス
    を発生するもの、 を具備し、前記分岐ユニット(20)は前記実行フェッ
    チアドレスに応じて前記複数の履歴状態の1つを修正す
    ることを特徴とする、請求項3に記載のデータプロセッ
    サ。
  5. 【請求項5】 さらに、 前記分岐ユニットに結合された条件レジスタ(39)で
    あって、該条件レジスタはあるビットを格納し、該ビッ
    トは該受信された命令が第2のクラスの命令のメンバで
    あれば先行条件であるもの、 複数の履歴状態を格納する分岐ヒストリテーブル(5
    0)であって、前記履歴状態の各々の1つは複数のイン
    デクスの内の異なる1つによって指示され、前記分岐ヒ
    ストリテーブルは前記履歴状態の1つの前記複数のイン
    デクスの内の1つが入力アドレスの第2のサブセットに
    論理的に等価であれば前記複数の履歴状態の1つを出力
    するもの、 前記分岐ヒストリテーブルに結合されたシーケンサユニ
    ット(18)であって、該シーケンサユニットは前記複
    数の履歴状態の1つに応じてデコードフェッチアドレス
    を発生するもの、 を具備し、前記分岐ユニット(20)は前記実行フェッ
    チアドレスに応じて前記複数の履歴状態の1つを修正す
    ることを特徴とする、請求項1に記載のデータプロセッ
    サ。
JP7022251A 1994-02-04 1995-01-17 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ Pending JPH07262006A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US19188894A 1994-02-04 1994-02-04
US08/191,888 1994-02-04

Publications (1)

Publication Number Publication Date
JPH07262006A true JPH07262006A (ja) 1995-10-13

Family

ID=22707313

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7022251A Pending JPH07262006A (ja) 1994-02-04 1995-01-17 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ

Country Status (4)

Country Link
EP (1) EP0666538A3 (ja)
JP (1) JPH07262006A (ja)
KR (1) KR950033818A (ja)
TW (1) TW345637B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100347865B1 (ko) * 1999-11-15 2002-08-09 삼성전자 주식회사 어드레스 트레이스를 이용한 분기 예측 방법
JP2008535063A (ja) * 2005-03-23 2008-08-28 クゥアルコム・インコーポレイテッド インデックス当り2つ以上の分岐ターゲットアドレスを記憶する分岐ターゲットアドレスキャッシュ
US7472263B2 (en) 2003-12-05 2008-12-30 Fujitsu Limited Method and apparatus for prediction handling multiple branches simultaneously
JP2009543223A (ja) * 2006-06-29 2009-12-03 クゥアルコム・インコーポレイテッド プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
WO2012132214A1 (ja) * 2011-03-31 2012-10-04 ルネサスエレクトロニクス株式会社 プロセッサ及びその命令処理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4763245A (en) * 1985-10-30 1988-08-09 International Business Machines Corporation Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100347865B1 (ko) * 1999-11-15 2002-08-09 삼성전자 주식회사 어드레스 트레이스를 이용한 분기 예측 방법
US7472263B2 (en) 2003-12-05 2008-12-30 Fujitsu Limited Method and apparatus for prediction handling multiple branches simultaneously
JP2008535063A (ja) * 2005-03-23 2008-08-28 クゥアルコム・インコーポレイテッド インデックス当り2つ以上の分岐ターゲットアドレスを記憶する分岐ターゲットアドレスキャッシュ
JP2009543223A (ja) * 2006-06-29 2009-12-03 クゥアルコム・インコーポレイテッド プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
JP2013229038A (ja) * 2006-06-29 2013-11-07 Qualcomm Inc プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
US8782383B2 (en) 2006-06-29 2014-07-15 Qualcomm Incorporated System and method for selectively managing a branch target address cache of a multiple-stage predictor
US8935517B2 (en) 2006-06-29 2015-01-13 Qualcomm Incorporated System and method for selectively managing a branch target address cache of a multiple-stage predictor
JP2015144001A (ja) * 2006-06-29 2015-08-06 クゥアルコム・インコーポレイテッドQualcomm Incorporated プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
JP2017107578A (ja) * 2006-06-29 2017-06-15 クゥアルコム・インコーポレイテッドQualcomm Incorporated プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
WO2012132214A1 (ja) * 2011-03-31 2012-10-04 ルネサスエレクトロニクス株式会社 プロセッサ及びその命令処理方法
JP5696210B2 (ja) * 2011-03-31 2015-04-08 ルネサスエレクトロニクス株式会社 プロセッサ及びその命令処理方法

Also Published As

Publication number Publication date
KR950033818A (ko) 1995-12-26
EP0666538A2 (en) 1995-08-09
TW345637B (en) 1998-11-21
EP0666538A3 (en) 1995-11-22

Similar Documents

Publication Publication Date Title
US5805877A (en) Data processor with branch target address cache and method of operation
US5530825A (en) Data processor with branch target address cache and method of operation
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
US5606682A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
JP3599409B2 (ja) 分岐予測装置
US6185676B1 (en) Method and apparatus for performing early branch prediction in a microprocessor
US5394530A (en) Arrangement for predicting a branch target address in the second iteration of a short loop
KR100395763B1 (ko) 멀티프로세싱 마이크로프로세서에 적합한 분기 예측기
US7203827B2 (en) Link and fall-through address formation using a program counter portion selected by a specific branch address bit
US6609194B1 (en) Apparatus for performing branch target address calculation based on branch type
US5592634A (en) Zero-cycle multi-state branch cache prediction data processing system and method thereof
US5535346A (en) Data processor with future file with parallel update and method of operation
JP5209633B2 (ja) ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
JPH0334024A (ja) 分岐予測の方法とそのための装置
JPH05143336A (ja) デジタル・コンピユータ及び分岐命令実行方法
JPH10133873A (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
US6230261B1 (en) Method and apparatus for predicting conditional branch instruction outcome based on branch condition test type
JP2006520964A5 (ja)
US6289444B1 (en) Method and apparatus for subroutine call-return prediction
US4541047A (en) Pipelined data processing system
US6918033B1 (en) Multi-level pattern history branch predictor using branch prediction accuracy history to mediate the predicted outcome
US5748976A (en) Mechanism for maintaining data coherency in a branch history instruction cache