JP2889955B2 - 分岐予測の方法とそのための装置 - Google Patents

分岐予測の方法とそのための装置

Info

Publication number
JP2889955B2
JP2889955B2 JP2149718A JP14971890A JP2889955B2 JP 2889955 B2 JP2889955 B2 JP 2889955B2 JP 2149718 A JP2149718 A JP 2149718A JP 14971890 A JP14971890 A JP 14971890A JP 2889955 B2 JP2889955 B2 JP 2889955B2
Authority
JP
Japan
Prior art keywords
branch
instruction
address
fetch
block
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 - Lifetime
Application number
JP2149718A
Other languages
English (en)
Other versions
JPH0334024A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JPH0334024A publication Critical patent/JPH0334024A/ja
Application granted granted Critical
Publication of JP2889955B2 publication Critical patent/JP2889955B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Control Of Multiple Motors (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】 発明の背景 この発明は、分岐命令に伴う処理遅延を減ずることに
よりプロセッサ性能を改善するための方法および装置に
関する。特に、この発明は、分岐予測情報が命令キャッ
シュ内に設けられるスーパースカラープロセッサのため
の命令キャッシュを提供する。
特定のアプリケーションを行うために計算システムが
要する時間は、3つの基礎的な要因、すなわちプロセッ
ササイクル時間、アプリケーションを行うために必要と
されるプロセッサ命令の数、および命令を実行するため
に必要とされるプロセッササイクルの平均数により決定
される。全体的システム性能は、これらの要因の1以上
を小さくすることにより改善できる。たとえば、アプリ
ケーションを行うために必要とされる平均サイクル数
は、マルチプロセッサアーキテクチャを採用すること、
すなわち別個の命令を同時に実行する2以上のプロセッ
サを設けることにより、大きく減ずることができる。
しかし、マルチプロセッサアーキテクチャを実現する
ことに伴う不利益が存在する。マルチプロセシングが有
効であるためには、別個のプロセッサにより同時に行わ
れるように独立したタスクにアプリケーションを容易に
セグメント化できることが必要である。容易にタスクに
セグメント化可能であること、という要件により、マル
チプロセッシングを効果的に適用する可能性が制限され
る。さらに、多くの状況においては、マルチプロセシン
グにより達成される処理性能の増大が、マルチプロセッ
サを必要とすることにより課せられる費用増に見合わな
いかもしれない。
マルチプロセッサに関連する不利益をさける単一プロ
セッサハードウェアアーキテクチャが提案されている。
これらのいわゆる「スーパースカラ」プロセッサは、プ
ロセッササイクル当たり1個を越える命令を持続的に実
行する速度を許容するものであり、従来のスカラプロセ
ッサのように1サイクル中で別々のパイプラインステー
ジで複数個の命令が扱うことができはするものの、最大
パイプライン容量が1サイクル当たり1命令に制限され
るものと対立するものである。対照的に、スーパースカ
ラープロセッサアーキテクチャは、別々のパイプライン
ステージ間においても、同一パイプラインステージ内に
おいても、命令の間の並列性を達成する。
しかし、サイクル当たり1個を越える命令を実行する
スーパースカラープロセッサは、命令が十分な速度で供
給されるときしか効果的ではない。もし命令フェッチの
平均速度が命令実行の平均速度より小さければ、命令フ
ェッチが全体的システム性能の制限要因となり得ること
は明白である。シーケンシャルな命令のために必要な命
令帯域幅を与えることは比較的容易である。なぜなら、
命令フェッチャは、サイクル当たりいくつもの命令を簡
単にフェッチすることができるからである。しかし、分
岐によりひき起こされるシーケンシャルでないフェッチ
が存在するときに十分な命令帯域幅を与えることははる
かに困難である。なぜなら、分岐により、命令フェッチ
が命令実行の結果に依存することになるからである。し
たがって、分岐の結果が知られていないときには、命令
フェッチャはストールするか、不正確な命令をフェッチ
してしまう。
たとえば、第1図は命令キャッシュメモリにおいて4
つの命令キャッシュブロック(4ワードのキャッシュブ
ロックを仮定する)を占有する複数の命令からなる2つ
の命令ランを例示する。第1の命令ランは、命令S1ない
しS5からなり、それは第2の命令ランT1ないしT4への分
岐を含む。第2図は、例示の目的のために分岐の結果を
決定するために2サイクルが必要とされると仮定して、
これらの命令ランが4命令デコーダおよび2命令デコー
ダによってどのように順序付けられるかを示す。予想さ
れるように、4命令デコーダは、2命令デコーダより高
い命令帯域幅を与えるが、どちらもスーパースカラープ
ロセッサのために十分な命令帯域幅は与えない。第3図
に示されるように、もし分岐遅延が0に減じられれば、
命令の帯域幅は劇的に改善される。
分岐により引起こされる命令フェッチャおよび実行ユ
ニットの間の依存は、実行ユニットが分岐を実行すべき
かどうかを示すのを待つことなしに、命令のフェッチの
間に分岐の結果を予測することにより減少できる。分岐
予測は、分岐の結果が所与の時間期間内では頻繁には変
化しないという事実を大きな基礎とする。命令フェッチ
ャは、実行ユニットにより行なわれた先の分岐実行の結
果により集積された情報を使用して将来の分岐実行を予
測することができる。
ハードウェア分岐予測のための従来の方法は、最も最
近実行された分岐についての命令を収集するために、分
岐ターゲットバッファを使用する。たとえば、1984年1
月「IEEEコンピュータ」第17巻6頁ないし22頁、J・K
・F・リー氏およびA・J・スミス氏による、「分岐予
測戦略および分岐ターゲットバッファ設計(Branch Pre
diction Strategies and Branch Target Buffer Desig
n)」を参照されたい。典型的には、分岐ターゲットバ
ッファは命令アドレスを使用してアクセスされ、そのア
ドレスの命令が分岐命令であるかどうかを示す。もし命
令が分岐命令であれば、分岐ターゲットバッファは予測
された結果およびターゲットアドレスを示す。
分岐ターゲットバッファの的中率、すなわちそれがフ
ェッチされたときに分岐ターゲットバッファ内で分岐が
見つけられる確率は、分岐ターゲットバッファのサイズ
が大きくなるにつれて増加する。第4図は、選択された
サンプルでのベンチマークプログラムのためのターゲッ
ト分岐バッファに対する的中率のグラフであり、容認で
きる予測の正確さを得るためには、比較的大きな分岐タ
ーゲットバッファが必要であることを示す。したがっ
て、従来の分岐ターゲットバッファと比べてハードウェ
アサポートがより小さくてよい。改良されたハードウェ
ア分岐予測アーキテクチャを提供することが望ましい。
発明の概要 この発明は、分岐予測命令が命令キャッシュメモリ内
に設けられるスーパースカラープロセッサを提供する。
命令キャッシュメモリにストアされる各命令キャッシュ
ブロックは、命令ブロックの後続のもののアドレスおよ
び命令ブロック内の分岐命令の場所を示す情報を示す命
令フィールドに加えて分岐予測命令フィールドを含む。
こうして次のキャッシュブロックを、実行すべき適切な
フェッチ動作をデコーダまたは実行ユニットが示すまで
待つことなく容易にフェッチすることができる。
より特定的には、この発明に従えば、命令キャッシュ
メモリに複数個の命令ブロックをロードすることにより
分岐予測が行われる。命令ブロックの各々は複数個の命
令および命令フェッチ情報を含む。命令フェッチ情報
は、アドレスタグ、分岐ブロックインデックスおよび後
続有効ビットを含む後続インデックスを含む。フェッチ
プログラムカウンタは、命令キャッシュメモリ内にスト
アされた複数個の命令ブロックの1つをプリフェッチす
るためにフェッチプログラムカウンタ値を発生させ命令
キャッシュメモリに供給するために使用される。プロセ
ッサは、プリフェッチされた命令の後続有効ビットがプ
リフェッチされた命令ブロック内の分岐命令で分岐が実
行されると予測されたことを示す予め定められた状態に
設定されているかどうかを決定する。もし後続有効ビッ
トが予め定められた状態に設定されていなければ、後続
の命令ブロックをプリフェッチするために、フェッチプ
ログラムカウンタ値が増分され命令キャッシュメモリに
供給される。もし後続有効ビットが予め定められた状態
に設定されていれば、予測されたターゲット分岐予測
が、命令ブロックに関連付けられた命令フェッチ情報フ
ィールドに含まれる情報に基づいて命令キャッシュメモ
リにより発生される。次いで、命令キャッシュメモリ内
の予測されたターゲット分岐アドレスおよび分岐命令の
分岐場所が、分岐予測メモリ内にストアされる。その後
分岐命令は、分岐実行ユニットにより実行される。分岐
実行ユニットは、実行された分岐命令に対する実際の分
岐場所アドレスおよびターゲット分岐アドレスを発生す
る。次いで、実際の分岐場所およびターゲット分岐アド
レスは、分岐予測メモリにストアされた分岐場所および
予測されたターゲット分岐アドレスとそれぞれ比較され
る。もし比較された値が等しくなければ、予測誤り信号
が発生され、当該命令ブロックに対する後続有効ビット
および命令フェッチ情報が予測誤り信号に応答して更新
される。
以上に述べたような命令キャッシュおよび分岐予測メ
モリの利用は、同量のハードウェアサポートを必要とす
ることなしに、ターゲット分岐バッファのものと実質的
に同一の分岐予測の正確さを与える。
以上を背景として、次に図面と関連して以下の好まし
い実施例の詳細な説明が参照されるべきである。
好ましい実施例の詳細な説明 スーパースカラープロセッサに必要とされる命令キャ
ッシュメモリのエントリの好ましいレイアウトを示す第
5図を参照して、この発明にしたがったスーパースカラ
ープロセッサのための命令キャッシュの基本的動作につ
いて述べる。図示された例において、キャッシュエント
リは4つの命令と命令フェッチ情報とを保持し、命令フ
ェッチ情報は拡大して示しているように従来のアドレス
タグフィールドと、二つの新たなフィールド(フェッチ
されると予測された次のエントリと、実行されると予測
された次のエントリ内の最初の命令との双方を示す後続
インデックスフィールドと、当該命令ブロック内の分岐
点の場所を示す分岐ブロックインデックスフィールド)
とを含む。後続インデックスフィールドは完全な命令ア
ドレスを特定するわけではないが、命令キャッシュ内の
任意の命令アドレスを選択するためには十分なサイズを
持っている。後続インデックスフィールドは後続有効ビ
ットを含み、後続有効ビットは、セットされている場合
には分岐が実行されると予測されたことを示し、クリア
されているときには分岐が実行されないと予測されたこ
とを示す。
第6図は、64キロバイトのダイレクトマップされたキ
ャッシュと図示したような命令アドレスとを前提とし
て、第3図に示されるコードシーケンスに対する命令キ
ャッシュのエントリを示している。キャッシュエントリ
が最初にロードされるとき、アドレスタグがセットされ
後続有効ビットはクリアされる。したがって新たにロー
ドされたエントリに対するデフォルトは、分岐が実行さ
れたないと予測すること、および次のシーケンシャルな
命令ブロックがフェッチされるべきこと、である。第6
図はまた、分岐が生ずる命令ブロックの後続インデック
スフィールドを後続命令ブロックのアドレスタグと連結
することにより、分岐点において分岐ターゲットプログ
ラムカウンタを組み立てることができるということを示
す。
現在の命令ブロックの先頭の命令の有効性は、好まし
くは先行する命令ブロックの後続インデックスフィール
ドの下位ビットによって決定される。先行する命令ブロ
ックの後続インデックスは現在の命令ブロック内のどの
命令をポイントすることもでき、現在の命令ブロック内
の当該ポイントまでの命令はプロセッサによって実行さ
れない。ブロックの最後の命令の有効性は、分岐ブロッ
クインデックスにより決定され、分岐ブロックインデッ
クスは分岐が実行されると予測された点を示す。命令デ
コーダが有効な命令を判定するときには分岐ブロックイ
ンデックスが必要であるが、キャッシュエントリは後続
インデックスフィールドのみによって取出される。
分岐予測を検査するために、プロセッサは、予測され
た分岐が予測された順番にしたがって格納されたリスト
を、命令キャッシュと関連付けられた分岐予測FIFO内に
維持する。リスト内の各エントリは、命令キャッシュ内
の分岐の位置を示し、それら位置は分岐エントリに先行
するエントリの後続インデックスと分岐場所インデック
スとを連結することにより特定される。各エントリはま
た、分岐のターゲットに対する完全なプログラムカウン
タ値を含んでいる。
プロセッサは、分岐実行ユニットを用いて全分岐をそ
れらのもとの順番にしたがって実行し、それら分岐の実
行の結果得られる情報を予測された分岐のリストの先頭
の情報と比較する。分岐予測が成功するためには以下の
条件が成立しなければならない。第1に、もし分岐が実
行されれば、命令キャッシュ内におけるその位置は分岐
予測FIFO内に含まれるリストのうちの次の分岐の位置と
一致しなければならない。この条件は、分岐しないと予
測された分岐命令で分岐が実行されたものを検出するた
めに必要である。第2に、リストの先頭の分岐の予測さ
れたターゲットアドレスは、分岐を実行することにより
決定された次の命令アドレスと一致しなければならな
い。
2番目の比較は、二つの位置が一致したときだけ意味
があり、分岐すると予測された分岐命令であって分岐が
されなかったものを検出するのに主として必要とされ
る。しかし、予測されたターゲットアドレスは後続ブロ
ックのアドレスタグに基づいているので、この比較によ
りまた、実行時のキャッシュの入換えにより、もとのタ
ーゲットエントリが取り除かれていたことが検出され
る。加えて、プログラムカウタン値を比較することによ
り間接分岐が適切に予測されたかどうかが検査される。
上述した条件のいずれか一つまたは双方が満足されな
いときには、分岐予測は誤りである。予測誤りが生ずる
と、実行ユニットにより決定された分岐の場所を用いて
適切なキャッシュエントリをフェッチしなければならな
い。不正確な命令ブロックに対する後続有効ビットおよ
び命令フェッチ情報はまた、予測誤りに基づいて、分岐
の実際の実行結果を反映するように更新されなければな
らない。たとえば、分岐すると予測されたにもかかわら
ず分岐が生じなかったときには、当該命令ブロックの次
のフェッチ時には、分岐は生じないと予測されるよう
に、後続有効ビットはクリアされなければならない。こ
うして、後続有効ビットと命令フェッチ情報とは常に当
該分岐命令の前回の実際の実行結果を常に反映する。
上述した事項を背景として、本願発明の好ましい実施
例の詳細な説明のために第7図を参照する。第7図は、
バスインターフェイスユニット(BIU)10、命令キャッ
シュ12、分岐予測FIFO14、命令デコーダ16、レジスタフ
ァイル18、リオーダバッファ20、分岐実行ユニット22、
算術論理ユニット(ALU)24、シフタユニット30、ロー
ドユニット32、ストアユニット33、およびデータキャッ
シュ34を含むスーパースカラープロセッサのブロック図
を示す。
リオーダバッファ20はFIFOとして管理される。命令デ
コーダ16によって命令がデコードされたとき、対応のエ
ントリがリオーダバッファ20内にアロケートされる。命
令の実行が完了したときに、デコードされた命令の結果
値が、アロケートされたエントリに書込まれる。この結
果値はもしこの命令と関連する例外が何もなければその
後レジスタファイル18に書込まれる。もしある命令につ
いて、関連するエントリがリオーダバッファ20の先頭に
達するまでに完了しなければ、リオーダバッファ20の歩
進は当該命令が完了するまで停止されるが、さらに他の
エントリをアロケートし続けることはできる。もし例外
または分岐予測誤りがある場合、リオーダバッファ20の
内容は全体が廃棄される。
第8図に示すように、命令キャッシュ12は、ダイレク
トマッピングされた各々4ワードからなる512個の命令
ブロックとして編成された命令キャッシュである命令ス
トアアレイ36と、19ビットタグからなる512個のエント
リと全ブロックに対する単一の有効ビットとを有するタ
グアレイ38と、11ビット後続インデックスおよびセット
時には命令ストアアレイ36をアクセスするのに後続アレ
イ40に格納された後続インデックスが使用されるべきで
あることを示しクリア時には当該命令ブロック内では分
岐はないと予測されたことを示す後続有効ビットとを有
するデュアルポートの後続アレイ40と、命令キャッシュ
12内の各命令ブロックに対して、ブロック内で実行され
ると最後に予測された命令を示す分岐ブロックインジケ
ータを含むデュアルポートブロック状態アレイ42と、命
令流を命令キャッシュ12からプリフェッチするのに使用
されるPC値を生成する(フェッチPCラッチ46、MUXユニ
ット48およびインクリメンタ(INC)50を含む)フェッ
チプログラムカウンタ(PC)44と、命令キャッシュ12か
らの命令のフェッチ、ミス発生時のキャッシュブロック
の入換え、および予測誤りされた分岐があったときに後
続アレイ40とデュアルポートブロック状態アレイ42とを
再フォーマットするための命令フェッチ制御ユニット52
と、命令デコーダ16に与えられるべき命令がロードされ
る命令レジスタラッチ54とを含む。
分岐予測FIFO14は、命令ブロック内に全ての予測され
た分岐に関する情報を維持するのに使用される。特に、
分岐が発生すると予測されたキャッシュ内の場所(すな
わち分岐場所)と、分岐の、予測された分岐ターゲット
PCとが分岐予測FIFO14内に格納される。第9図に示すよ
うに、分岐予測FIFO14は好ましくはターゲットPC FIFO
と分岐場所FIFO、ならびにインクリメントされる読出/
書込ポインタ56および58を有する固定したアレイとして
実現され、さらに分岐場所データバス(CPC)およびタ
ーゲットPCデータバス(TPC)にそれぞれ結合されたタ
ーゲットPC比較器60および分岐場所比較器62を含む。タ
ーゲットPC比較器60および分岐場所比較器62の出力信号
は分岐FIFO制御回路63に与えられる。分岐予測FIFO14に
替えて、シフト可能なアレイまたは循環型のFIFOとして
実現することもできる。
分岐実行ユニット22は、分岐命令を実際に実行し分岐
結果をリオーダバッファ20に書込むハードウェアを含ん
でいる。第10図に示すように、分岐実行ユニット22は分
岐予約ステーション82と、分岐計算ユニット84と、結果
バスインターフェイス86とを含む。分岐予約ステーショ
ン82はFIFOアレイであって、デコードされた命令を命令
デコーダ16から、オペランド情報をレジスタファイル18
およびリオーダバッファ20から受け、デコードされた命
令に依存性がなくなり、かつ分岐計算ユニット84が命令
を自由に実行可能となるまでこの情報を保持する。結果
バスインターフェイス86は分岐実行ユニット22をCPCバ
スおよびTPCバスに結合し、これらバスは第9図に示す
ように分岐予測FIFO14の分岐場所比較器62およびターゲ
ットPC比較器60に結合されている。
動作において、命令キャッシュ12には命令メモリから
BIU10を介して受ける命令がロードされる。フェッチPC4
4は、命令流をプリフェッチするために、予測されたフ
ェッチPC値を命令キャッシュ12に対して供給する。前述
したように、各命令ブロックに対する後続有効ビット
は、当該命令ブロックが最初に命令キャッシュ12にロー
ドされたときにクリアされる。したがって、所与の命令
ブロックが最初に命令キャッシュ12からフェッチされた
ときには、そのブロック内のどの分岐も実行されないも
のと予測されている。プリフェッチされた命令ブロック
は命令レジスタラッチ54を介して命令デコーダ16に供給
される。予測されたフェッチPCはこの後インクリメンタ
50によって増分され再びMUXユニット48を介してフェッ
チPCラッチ46にロードされる。その結果得られたPCが、
命令記憶装置内のシーケンシャルな命令ブロックをフェ
ッチするために命令キャッシュ12に供給される。
分岐実行ユニット22は、プリフェッチされた先頭の命
令ブロック内に含まれる分岐命令をいずれも処理し、実
行された分岐命令に対する実際のPC値とターゲットPC値
とを生成する。ここで、実行時に分岐が実行されなかっ
たら、分岐実行ユニット22によって生成されたターゲッ
トPC値が実際のPC値の次のシーケンシャルな値となるこ
と、すなわちこの意味での「ターゲットPC」という語は
必ずしも実行された分岐のターゲットのことは意味せ
ず、代わりに分岐結果にかかわらず実行されるべき次の
命令ブロックのアドレスのことを指すことに注意すべき
である。実際のPC値およびターゲットPC値はそれぞれCP
CバスおよびTPCバスに供給され、分岐予測FIFO内の分岐
場所比較器およびターゲットPC比較器にロードされる。
分岐が生じないと予測されたにもかかわらず実行時に
分岐が生じた場合、分岐実行ユニット22によって供給さ
れた実際のPC値と分岐予測FIFO14の分岐場所FIFOによっ
て供給された分岐場所値との比較は失敗するであろう。
分岐予測FIFO14は分岐予測誤り信号をリセットして発生
し、当該信号は命令キャッシュ12の命令フェッチ制御ユ
ニットに供給される。分岐実行ユニット22からのターゲ
ットPCがMUXユニット48を介してフェッチPCラッチ46に
ロードされ、後続アレイは命令フェッチ制御ユニット52
による制御のもとで後続有効ビットをセットするように
更新される。こうして、当該命令ブロックを後でフェッ
チしたときには、この分岐が生ずるものとして予測され
ることになる。
後続有効ビットがセットされ分岐が生ずると予測され
たことを示している場合、フェッチPCラッチの値が分岐
予測FIFO内のエントリのうち利用可能な次のものにロー
ドされる。タグアレイから読み出されたタグフィールド
と後続インデックスとから形成された再構成された予測
フェッチPCはMUXユニット48を介してフェッチPCラッチ4
6にロードされる。この再構成されたフェッチPCは次の
命令をフェッチするために命令ストアアレイ36に、およ
び分岐予測FIFOに供給される。このようにして、分岐予
測FIFOは、分岐の分岐場所と予測された分岐のターゲッ
トとをともに含む。
分岐実行ユニット22はこの後分岐命令を実行し実際の
PC値とターゲットPC値とを発生し、それらは分岐予測FI
FO内の分岐場所比較器およびターゲットPC比較器に供給
される。分岐が生ずると予測されると、分岐実行ユニッ
ト22によって発生されたPC値は常に分岐場所FIFOからロ
ードされた分岐場所と一致する。しかし、分岐実行ユニ
ット22によって発生されたターゲットPC値が分岐予測FI
FO14にストアされているターゲットPC値と一致しないと
いう結果を生ずる可能性がある状態が3つ有る。分岐が
生ずると予測されたが実際には生じなかった場合には後
続有効ビットはクリアされなければならない。分岐が、
予測されたアドレスと異なるアドレスへのサブルーチン
からの戻りを実行した場合には、後続インデックスは更
新しなければならない。または、分岐命令の実行前にキ
ャッシュの入換えが生じた場合、命令キャッシュをリロ
ードする必要が生ずる。
上述した分岐予測方式の主たるハードウェア費用は、
命令キャッシュ内の各エントリに対して後続インデック
スと分岐ブロックインデックスフィールドとを設けるこ
とによるキャッシュサイズの増加である。しかし、この
増加は、他のハードウェア予測方式と比較すると最小で
ある。なぜなら、本願発明では、キャッシュブロック当
たり、生ずるだろう分岐については1つだけ予測し、当
該命令ブロックにおいて生じないだろう分岐については
後続インデックスに分岐情報を全く記憶しないことによ
り非分岐を予測することによって記憶空間を節約してい
るからである。8キロバイトのダイレクトマップされた
キャッシュに対しては、フィールドを追加することによ
り必要となるキャッシュ容量は約8パーセント増加す
る。しかし、分岐予測によるシステム全体の性能の増大
により、命令キャッシュのサイズ増を要するという条件
は正当化される。
分岐予測誤りがあった場合にキャッシュエントリを更
新しなければならないという条件は、正しい分岐ターゲ
ットをフェッチしなければならないという要件と競合す
る。つまり、2つの別々のエントリに対するフェッチ情
報を同時に読み書きすることができなければ、分岐予測
誤りがあったときのフェッチ情報の更新によって命令フ
ェッチの1サイクルが奪われてしまう。しかし、1サイ
クルを余計に必要とすることによる性能低下は小さいも
のでしかない。なぜなら、分岐予測誤りはそれほど頻繁
には生じないし、分岐予測に伴う性能の向上の方が、分
岐予測誤りに対して必要となるサイクル数による性能低
下よりずっと影響が大きいためである。
ある好ましい実施例を特に参照しながら本願発明を説
明してきた。しかし本願発明はこれら開示された実施例
に限定されるものではなく、前掲の特許請求の範囲の記
載の範囲内で修正および変形を行うことができる。
【図面の簡単な説明】
第1図は、デコーダの動きを示すための、二つの命令ラ
ンのシーケンスを示す図である。 第2図は、第1図に示される命令ランの、2命令および
4命令デコーダによる順序付けを示す図である。 第3図は、分岐遅延が避けられたときの、第2図に示さ
れた命令ランのための命令帯域幅の改善を示す図であ
る。 第4図は、ターゲット分岐バッファの的中率を示すグラ
フである。 第5図は、本願発明による命令キャッシュエントリの好
ましいレイアウトを示す図である。 第6図は、第3図に示されるコードシーケンスに対する
命令キャッシュエントリの例を示す図である。 第7図は、本願発明によるスーパースカラープロセッサ
のブロック図である。 第8図は、第7図に示されるスーパースカラープロセッ
サ内で使用される命令キャッシュのブロック図である。 第9図は、第7図に示されるスーパースカラープロセッ
サ内で使用される分岐予測FIFOのブロック図である。 第10図は、第7図に示されるスーパースカラープロセッ
サ内で使用される分岐実行ユニットのブロック図であ
る。 図において、10はバスインターフェイスユニット(BI
U)、12は命令キャッシュ、14は分岐予測FIFO、16は命
令デコーダ、18はレジスタファイル、20はリオーダバッ
ファ、22は分岐実行ユニット、24はALU、30はシフトユ
ニット、32はロードユニット、33はストアユニット、34
はデータキャッシュユニット、36は命令ストアアレイ、
38はタグアレイ、40は後続アレイ、42はブロック状態ア
レイ、44はフェッチPC、46はフェッチPCラッチ、48はMU
Xユニット、50はインクリメンタ、52は命令フェッチ制
御ユニット、54は命令レジスタラッチ、60はターゲット
PC比較器、62は分岐場所比較器、63は分岐FIFO制御回
路、82は分岐予約ステーション、84は分岐計算ユニッ
ト、86は結果バスインターフェイスである。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭63−75934(JP,A) 特開 昭53−74857(JP,A) 入江直彦(外3名)”「新風」プロセ ッサにおける命令フェッチ機構”,情報 処理学会第38回(昭和64年前期)全国大 会論文集,平成元年(1989年)3月17 日,p.1472−1473 (58)調査した分野(Int.Cl.6,DB名) G06F 9/38

Claims (27)

    (57)【特許請求の範囲】
  1. 【請求項1】a.複数個の命令ブロックを命令キャッシュ
    メモリにロードするステップを含み、前記命令ブロック
    の各々は複数個の命令および命令フェッチ情報を含み、
    前記命令フェッチ情報は、アドレスタグと、予測された
    ターゲット分岐アドレスと、後続有効ビットを含む後続
    インデックスとを含み、さらに、 b.前記命令キャッシュメモリにストアされた前記複数個
    の命令ブロックの1つをプリフェッチするために、フェ
    ッチプログラムカウンタ値を発生して前記命令キャッシ
    ュメモリに供給するステップと、 c.前記プリフェッチされた命令ブロックの前記後続有効
    ビットが、前記プリフェッチされた命令ブロック内の分
    岐命令で分岐が実行されると予測されたことを示す予め
    定められた条件に設定されているかどうかを決定するス
    テップと、 d.前記後続有効ビットが前記予め定められた条件に設定
    されていれば、前記命令キャッシュメモリ内の前記分岐
    命令の場所を示す分岐場所アドレスと、予測されたター
    ゲット分岐アドレスとを発生するステップと、 e.前記後続有効ビットが前記予め定められた条件に設定
    されていれば、前記予測されたターゲット分岐アドレス
    および前記分岐場所アドレスを分岐予測メモリにストア
    するステップと、 f.前記後続有効ビットが前記予め定められた条件に設定
    されていなければ、前記フェッチプログラムカウンタ値
    を増分し、増分されたフェッチプログラムカウンタ値を
    前記命令キャッシュメモリに供給して後続の命令ブロッ
    クをプリフェッチするステップと、 g.前記分岐命令を実行ユニットで実行し、実行された分
    岐命令の実際の分岐アドレスおよびターゲット分岐アド
    レスを発生するステップと、 h.前記実行ユニットによって発生された前記実際の分岐
    アドレスを前記分岐予測メモリにストアされた前記分岐
    場所アドレスと比較し、前記分岐命令に対応する分岐が
    実行されており、かつ前記実際の分岐アドレスが前記分
    岐場所アドレスと等しくないかまたは前記実行されたタ
    ーゲット分岐アドレスが前記分岐予測メモリにストアさ
    れた前記予測されたターゲット分岐アドレスと等しくな
    ければ、第1の予測誤り信号を発生するステップと、 i.前記実際の分岐アドレスを前記分岐予測メモリにスト
    アされた前記分岐場所アドレスと比較し、前記分岐命令
    に対応する前記分岐が実行されておらず、かつ前記実際
    の分岐アドレスが前記分岐場所アドレスと等しければ、
    第2の予測誤り信号を発生するステップと、 j.前記第1または第2の予測誤り信号に応答して、前記
    命令ブロックのための後続有効ビットおよび命令フェッ
    チ情報を更新するステップと、 k.前記第1または第2の予測誤り信号に応答して、ター
    ゲット分岐アドレスによって前記フェッチプログラムカ
    ウンタ値を更新するステップとを含む、分岐予測方法。
  2. 【請求項2】前記予測されたターゲット分岐アドレス
    は、前記プリフェッチされた命令ブロックの前記後続イ
    ンデックスを後続の命令ブロックのアドレスタグに連結
    することによって発生される、請求項1に記載の方法。
  3. 【請求項3】前記分岐場所アドレスは、先行の命令ブロ
    ックからの後続インデックスを前記プリフェッチされた
    命令ブロックのアドレスタグと連結することによって発
    生される、請求項2に記載の方法。
  4. 【請求項4】a.複数個の命令ブロックをストアするため
    の第1の手段を含み、前記命令ブロックの各々は複数個
    の命令および命令フェッチ情報を含み、前記命令フェッ
    チ情報は、アドレスタグと、予測されたターゲット分岐
    アドレスと、分岐ブロックインデックスと、後続有効ビ
    ットを含む後続インデックスとを含み、さらに、 b.前記第1の手段にストアされた前記複数個の命令ブロ
    ックの1つをプリフェッチするために、フェッチプログ
    ラムカウンタ値を発生し前記第1の手段に供給するため
    の第2の手段と、 c.前記プリフェッチされた命令ブロックの前記後続有効
    ビットが、前記プリフェッチされた命令ブロック内の分
    岐命令で分岐が実行されると予測されたことを示す予め
    定められた条件に設定されているかどうかを決定するた
    めの第3の手段と、 d.前記後続有効ビットが前記予め定められた条件に設定
    されていれば、分岐場所アドレスおよび予測されたター
    ゲット分岐アドレスを発生するための第4の手段と、 e.前記後続有効ビットが前記予め定められた条件に設定
    されていれば、前記予測されたターゲット分岐アドレス
    および前記分岐場所アドレスをストアするための第5の
    手段と、 f.前記後続有効ビットが前記予め定められた条件に設定
    されていなければ、前記フェッチプログラムカウンタ値
    を増分し、増分されたフェッチプログラムカウンタ値を
    前記命令キャッシュメモリに供給して後続の命令ブロッ
    クをプリフェッチするための第6の手段と、 g.前記分岐命令を実行し、実行された分岐命令の実際の
    分岐アドレスおよびターゲット分岐アドレスを発生する
    ための第7の手段と、 h.前記第7の手段によって発生された前記実際の分岐ア
    ドレスを前記第6の手段にストアされた前記分岐場所ア
    ドレスと比較し、前記分岐命令に対応する分岐が実行さ
    れており、かつ前記実際の分岐アドレスが前記分岐場所
    アドレスと等しくないかまたは前記実行されたターゲッ
    ト分岐アドレスが前記第6の手段にストアされた前記予
    測された分岐アドレスと等しくなければ、第1の予測誤
    り信号を発生するための第8の手段と、 i.前記実際の分岐アドレスを前記第6の手段にストアさ
    れた前記分岐場所アドレスと比較し、前記分岐命令に対
    応する前記分岐が実行されておらず、かつ前記実際の分
    岐アドレスが前記分岐場所アドレスと等しければ、第2
    の予測誤り信号を発生するための第9の手段と、 j.前記第1または第2の予測誤り信号に応答して、前記
    命令ブロックのための後続有効ビットおよび命令フェッ
    チ情報を更新するための第10の手段と、 k.前記第1または第2の予測誤り信号に応答して、ター
    ゲット分岐アドレスによって前記フェッチプログラムカ
    ウンタ値を更新するための第11の手段とを含む、装置。
  5. 【請求項5】前記第4の手段は、前記プリフェッチされ
    た命令ブロックの前記後続インデックスを後続の命令ブ
    ロックのアドレスタグと連結することによって前記予測
    されたターゲット分岐アドレスを発生する、請求項4に
    記載の装置。
  6. 【請求項6】前記第4の手段は、先行の命令ブロックか
    らの後続インデックスを前記プリフェッチされた命令ブ
    ロックのアドレスタグと連結することによって前記分岐
    場所アドレスを発生する、請求項4に記載の装置。
  7. 【請求項7】バスインタフェースユニットと、 前記バスインタフェースユニットに結合され、複数個の
    命令ブロックを受取るように構成された命令キャッシュ
    メモリとを含み、前記命令ブロックの各々は複数個の命
    令および命令フェッチ情報を含み、前記命令フェッチ情
    報は、アドレスタグと、分岐ブロックインデックスと、
    後続有効ビットを含む後続インデックスとを含み、 さらに、 前記命令キャッシュメモリに結合された分岐予測メモリ
    と、 前記命令キャッシュメモリに結合された命令デコーダと
    を含み、前記後続有効ビットが予め定められた条件に設
    定されていなければ、フェッチプログラムカウンタ値が
    増分されて、後続の命令ブロックをプリフェッチするた
    めに前記命令キャッシュメモリに供給され、前記後続有
    効ビットが予め定められた条件に設定されていれば、前
    記命令フェッチ情報に含まれた情報に基づいて、予測さ
    れたターゲット分岐アドレスが前記命令キャッシュメモ
    リによって発生され、当該命令キャッシュメモリ内の前
    記予測されたターゲット分岐アドレスは前記分岐予測メ
    モリにストアされ、 さらに、 前記命令デコーダおよびレジスタファイルに結合された
    分岐実行ユニットを含む処理ユニットを含み、前記分岐
    命令は後に前記分岐実行ユニットによって実行され、前
    記分岐実行ユニットは実行された分岐命令の実際の分岐
    場所アドレスおよびターゲット分岐アドレスを発生し、
    前記実際の分岐場所アドレスおよびターゲット分岐アド
    レスは分岐予測メモリにストアされた分岐場所アドレス
    および前記予測されたターゲット分岐アドレスとそれぞ
    れ比較され、前記分岐命令で分岐が実行されており、か
    つ比較された値が等しくなければ予測誤り信号を発生
    し、当該命令ブロックに対する前記後続有効ビットおよ
    び前記命令フェッチ情報は予測誤り信号に応答して更新
    され、前記予測誤り信号に応答してターゲット分岐アド
    レスによって前記フェッチプログラムカウンタ値を更新
    する、装置。
  8. 【請求項8】前記命令キャッシュメモリは、前記バスイ
    ンタフェースユニットに結合された命令ストアアレイ
    と、前記命令ストアアレイに結合されたタグアレイと、
    前記タグアレイに結合された後続部アレイと、前記後続
    部アレイに結合されたブロック状態アレイとを含む、請
    求項7に記載の装置。
  9. 【請求項9】前記命令キャッシュメモリは、PCラッチ、
    増分器、およびMUXユニットを含むフェッチプログラム
    カウンタをさらに含む、請求項8に記載の装置。
  10. 【請求項10】前記命令キャッシュメモリは前記フェッ
    チプログラムカウンタに結合された命令フェッチ制御回
    路をさらに含み、前記命令フェッチ制御回路は、前記増
    分器によって発生される値、前記分岐実行ユニットによ
    って供給される値、または再構成されたフェッチPC値を
    PCラッチに選択的にロードするように前記MUXユニット
    の動作を制御する、請求項9に記載の装置。
  11. 【請求項11】前記分岐予測メモリは、分岐ターゲット
    FIFOおよび分岐場所FIFOを含む、請求項7に記載の装
    置。
  12. 【請求項12】前記分岐予測メモリは、前記分岐ターゲ
    ットFIFOと前記分岐実行ユニットに結合されたバスとに
    結合されたターゲットPC比較器と、前記分岐場所FIFOと
    前記分岐実行ユニットに結合されたバスとに結合された
    分岐場所比較器とをさらに含み、前記ターゲットPC比較
    器の出力と前記分岐場所比較器の出力とは制御回路に結
    合される、請求項11に記載の装置。
  13. 【請求項13】a.複数個の命令ブロックを命令キャッシ
    ュメモリにロードするステップを含み、前記命令ブロッ
    クの各々は複数個の命令および命令フェッチ情報を含
    み、前記命令フェッチ情報は予測されたターゲット分岐
    アドレスと後続有効ビットとを示す後続インデックスを
    含み、さらに、 b.前記命令キャッシュメモリにストアされた前記複数個
    の命令ブロックの1つをプリフェッチするために、フェ
    ッチプログラムカウンタ値を発生し命令キャッシュメモ
    リに供給するステップと、 c.前記プリフェッチされた命令ブロックの前記後続有効
    ビットが、前記プリフェッチされた命令ブロック内の分
    岐命令で分岐が実行されると予測されたことを示す予め
    定められた条件に設定されているかどうかを決定するス
    テップと、 d.前記後続有効ビットが前記予め定められた条件に設定
    されていれば、前記命令キャッシュメモリ内の前記分岐
    命令の場所を示す分岐場所アドレスと予測されたターゲ
    ット分岐アドレスとを発生するステップと、 e.前記後続有効ビットが前記予め定められた条件に設定
    されていれば、前記予測されたターゲット分岐アドレス
    および前記分岐場所アドレスを分岐予測メモリにストア
    するステップと、 f.前記後続有効ビットが前記予め定められた条件に設定
    されていなければ、前記フェッチプログラムカウンタ値
    を増分し、増分されたフェッチプログラムカウンタ値を
    前記命令キャッシュメモリに供給して後続の命令ブロッ
    クをプリフェッチするステップと、 g.実行ユニットで前記分岐命令を実行し、実行された分
    岐命令の実際の分岐アドレスおよびターゲット分岐アド
    レスを発生するステップと、 h.前記実行ユニットによって発生された前記実際の分岐
    アドレスを前記分岐予測メモリにストアされた前記分岐
    場所アドレスと比較し、前記分岐命令で分岐が実行され
    ており、かつ前記実際の分岐アドレスが前記分岐場所ア
    ドレスと等しくないかまたは前記実行されたターゲット
    分岐アドレスが前記分岐予測メモリにストアされた前記
    予測されたターゲット分岐アドレスと等しくなければ、
    第1の予測誤り信号を発生するステップと、 i.前記実際の分岐アドレスを前記分岐予測メモリにスト
    アされた前記分岐場所アドレスと比較し、前記分岐命令
    がで分岐が実行されておらず、かつ前記実際の分岐アド
    レスが前記分岐場所アドレスと等しければ、第2の予測
    誤り信号を発生するステップと、 j.前記第1または第2の予測誤り信号に応答して、前記
    命令ブロックに対する後続有効ビットおよび命令フェッ
    チ情報を更新するステップと、 k.前記第1または第2の予測誤り信号に応答して、ター
    ゲット分岐アドレスによって前記フェッチプログラムカ
    ウンタ値を更新するステップとを含む、分岐予測方法。
  14. 【請求項14】前記命令フェッチ情報はアドレスタグを
    さらに含み、前記予測されたターゲット分岐アドレス
    は、前記プリフェッチされた命令ブロックの前記後続イ
    ンデックスを後続の命令ブロックのアドレスタグと連結
    することによって発生される、請求項13に記載の方法。
  15. 【請求項15】前記分岐場所アドレスは、先行の命令ブ
    ロックからの後続インデックスを前記プリフェッチされ
    た命令ブロックのアドレスタグと連結することによって
    発生される、請求項14に記載の方法。
  16. 【請求項16】a.複数個の命令ブロックをストアするた
    めの第1の手段を含み、前記命令ブロックの各々は複数
    個の命令および命令フェッチ情報を含み、前記命令フェ
    ッチ情報は予測されたターゲット分岐アドレスと後続有
    効ビットとを示す後続インデックスを含み、さらに、 b.前記第1の手段にストアされた前記複数個の命令ブロ
    ックの1つをプリフェッチするために、フェッチプログ
    ラムカウンタ値を発生し前記第1の手段に供給するため
    の第2の手段と、 c.前記プリフェッチされた命令ブロックの前記後続有効
    ビットが、前記プリフェッチされた命令ブロック内の分
    岐命令で分岐が実行されると予測されたことを示す予め
    定められた条件に設定されているかどうかを決定するた
    めの第3の手段と、 d.前記後続有効ビットが前記予め定められた条件に設定
    されていれば、分岐場所アドレスおよび予測されたター
    ゲット分岐アドレスを発生するための第4の手段と、 e.前記後続有効ビットが前記予め定められた条件に設定
    されていれば、前記予測されたターゲット分岐アドレス
    および前記分岐場所アドレスをストアするための第5の
    手段と、 f.前記後続有効ビットが前記予め定められた条件に設定
    されていなければ、前記フェッチプログラムカウンタ値
    を増分し、増分されたフェッチプログラムカウンタ値を
    前記第1の手段に供給して後続の命令ブロックをプリフ
    ェッチするための第6の手段と、 g.前記分岐命令を実行し、実行された分岐命令に対する
    実際の分岐アドレスおよびターゲット分岐アドレスを発
    生するための第7の手段と、 h.前記第7の手段によって発生された前記実際の分岐ア
    ドレスを前記第6の手段にストアされた前記分岐場所ア
    ドレスと比較し、前記分岐命令に対応する分岐が実行さ
    れており、かつ前記実際の分岐アドレスが前記分岐場所
    アドレスと等しくないかまたは前記実行されたターゲッ
    ト分岐アドレスが前記第5の手段にストアされた前記予
    測されたターゲット分岐アドレスと等しくなければ、第
    1の予測誤り信号を発生するための第8の手段と、 i.前記実際の分岐アドレスを前記第6の手段にストアさ
    れた前記分岐場所アドレスと比較し、前記分岐命令で分
    岐が実行されておらず、かつ前記実際の分岐アドレスが
    前記分岐場所アドレスと等しければ、第2の予測誤り信
    号を発生するための第9の手段と、 j.前記第1または第2の予測誤り信号に応答して、前記
    命令ブロックに対する後続有効ビットおよび命令フェッ
    チ情報を更新するための第10の手段と、 k.前記第1または第2の予測誤り信号に応答して、ター
    ゲット分岐アドレスによって前記フェッチプログラムカ
    ウンタ値を更新するための第11の手段とを含む、装置。
  17. 【請求項17】前記命令フェッチ情報はアドレスタグを
    さらに含み、前記第4の手段は、前記プリフェッチされ
    た命令ブロックの前記後続インデックスを後続の命令ブ
    ロックのアドレスタグと連結することによって前記予測
    されたターゲット分岐アドレスを発生する、請求項16に
    記載の装置。
  18. 【請求項18】前記命令フェッチ情報はアドレスタグを
    さらに含み、前記第4の手段は、先行の命令ブロックか
    らの後続インデックスを前記プリフェッチされた命令ブ
    ロックのアドレスタグと連結することによって前記分岐
    場所アドレスを発生する、請求項16に記載の装置。
  19. 【請求項19】複数個の命令ブロックを受取るように構
    成された命令キャッシュメモリを含み、前記命令ブロッ
    クの各々は複数個の命令および命令フェッチ情報を含
    み、前記命令フェッチ情報は予測されたターゲット分岐
    アドレスと後続有効ビットとを示す後続インデックスを
    含み、さらに、 前記命令キャッシュメモリに結合された分岐予測メモリ
    と、 前記命令キャッシュメモリに結合された命令デコーダと
    を含み、前記後続有効ビットが予め定められた条件に設
    定されていなければ、フェッチプログラムカウンタ値が
    増分され、後続の命令ブロックをプリフェッチするため
    に前記命令キャッシュメモリに供給され、前記後続有効
    ビットが予め定められた条件に設定されていれば、予測
    されたターゲット分岐アドレスが、前記命令フェッチ情
    報に含まれた情報に基づいて前記命令キャッシュメモリ
    によって分岐場所アドレスに対して発生され、前記予測
    されたターゲット分岐アドレスおよび前記分岐場所アド
    レスは前記分岐予測メモリにストアされ、さらに、 前記命令デコーダに結合された分岐実行ユニットを含む
    処理ユニットを含み、前記分岐命令は前記分岐実行ユニ
    ットによって実行され、前記分岐実行ユニットは、実行
    された分岐命令の実際の分岐場所アドレスおよびターゲ
    ット分岐アドレスを発生し、前記実際の分岐場所アドレ
    スおよびターゲット分岐アドレスは分岐予測メモリにス
    トアされた分岐場所アドレスおよび前記予測されたター
    ゲット分岐アドレスとそれぞれ比較され、前記分岐命令
    に対応する分岐が実行されており、かつ比較された値が
    等しくなければ予測誤り信号を発生し、前記後続インデ
    ックスは予測誤り信号に応答して前記命令キャッシュメ
    モリの命令ブロックに対して更新され、前記予測誤り信
    号に応答してターゲット分岐アドレスによって前記フェ
    ッチプログラムカウンタ値を更新する、装置。
  20. 【請求項20】前記命令キャッシュメモリは、命令スト
    アアレイと、前記命令ストアアレイに結合されたタグア
    レイと、前記タグアレイに結合された後続部アレイと、
    前記後続部アレイに結合されたブロック状態アレイとを
    含む、請求項19に記載の装置。
  21. 【請求項21】前記命令キャッシュメモリは、PCラッ
    チ、増分器、およびMUXユニットを含むフェッチプログ
    ラムカウンタをさらに含む、請求項20に記載の装置。
  22. 【請求項22】前記命令キャッシュメモリは前記フェッ
    チプログラムカウンタに結合された命令フェッチ制御回
    路をさらに含み、前記命令フェッチ制御回路は、前記増
    分器によって発生される値、前記分岐実行ユニットによ
    って供給される値、または再構成されたフェッチPC値を
    PCラッチに選択的にロードするように前記MUXユニット
    の動作を制御する、請求項21に記載の装置。
  23. 【請求項23】前記分岐予測メモリは分岐ターゲットFI
    FOおよび分岐場所FIFOを含む、請求項19に記載の装置。
  24. 【請求項24】前記分岐予測メモリは、前記分岐ターゲ
    ットFIFOと前記分岐実行ユニットに結合されたバスとに
    結合されたターゲットPC比較器と、前記分岐場所FIFOと
    前記分岐実行ユニットに結合されたバスとに結合された
    分岐場所比較器とをさらに含み、前記ターゲットPC比較
    器の出力と前記分岐場所比較器の出力とは制御回路に結
    合される、請求項23に記載の装置。
  25. 【請求項25】処理装置のための分岐命令をプリフェッ
    チするための装置であって、 a.複数個の命令ブロックをストアするための第1の手段
    を含み、前記命令ブロックの各々は複数個の命令および
    命令フェッチ情報を含み、前記命令フェッチ情報は、後
    続の命令ブロックがフェッチされると予測されたことを
    示すインデックスフィールドと分岐/非分岐予測とを含
    み、さらに、 b.プリフェッチされる命令ブロックとして、前記第1の
    手段にストアされた前記複数個の命令ブロックの1つを
    プリフェッチするために、フェッチプログラムカウンタ
    値を発生し第1の手段に供給するための第2の手段と、 c.前記プリフェッチされた命令ブロックの前記命令フェ
    ッチ情報を読出し、前記プリフェッチされた命令ブロッ
    クの前記命令フェッチ情報内の前記分岐/非分岐予測が
    非分岐条件を示すならば前記フェッチプログラムカウン
    タ値を増分し、前記増分されたフェッチプログラムカウ
    ンタ値を前記第1の手段に供給し、前記プリフェッチさ
    れた命令ブロックの前記命令フェッチ情報内にストアさ
    れた前記分岐/非分岐予測が分岐条件を示すならば、前
    記プリフェッチされた命令ブロックの前記命令フェッチ
    情報にストアされた前記後続の命令ブロックによって前
    記フェッチプログラムカウンタ値を更新するための第3
    の手段と、 d.前記プリフェッチされた命令ブロックの前記命令フェ
    ッチ情報内にストアされた前記分岐/非分岐予測が前記
    分岐条件を示すならば、分岐場所アドレスと対応の予測
    されたターゲット分岐アドレスとをストアするための第
    4の手段と、 e.前記プリフェッチされた命令ブロックに含まれた分岐
    命令を実行し、前記分岐命令の前記実行の結果として実
    際のターゲット分岐アドレスを発生するための第5の手
    段と、 f.前記実際のターゲット分岐アドレスを前記第4の手段
    にストアされた前記分岐命令に対応する前記予測された
    ターゲット分岐アドレスと比較し、前記分岐命令に対応
    する分岐が実行されており、前記比較の結果が、前記第
    4の手段にストアされた前記分岐場所アドレスが前記第
    5の手段によって実行された前記分岐命令に対応し、か
    つ前記予測されたターゲット分岐アドレスが前記実際の
    ターゲット分岐アドレスと同等ではないことを示すと
    き、第1の更新信号を前記第1の手段に送って、前記イ
    ンデックスフィールドを前記実際のターゲット分岐アド
    レスと交換するための第6の手段と、 g.前記第4の手段にストアされた前記分岐場所アドレス
    を前記第5の手段によって実行された前記分岐命令のア
    ドレスと比較し、前記分岐命令に対応する前記分岐が実
    行されておらず、かつ前記比較の結果が、前記分岐命令
    の前記アドレスが前記第4の手段にストアされた前記分
    岐場所アドレスと等しいことを示すならば、第2の更新
    信号を前記第1の手段に送って、前記分岐/非分岐予測
    を前記非分岐条件に更新するための第7の手段とを含
    む、装置。
  26. 【請求項26】処理装置のための分岐命令をプリフェッ
    チする方法であって、 a.複数個の命令ブロックを命令キャッシュメモリにロー
    ドするステップを含み、前記命令ブロックの各々は複数
    個の命令および命令フェッチ情報を含み、前記命令フェ
    ッチ情報は、後続のブロックがフェッチされると予測さ
    れたことを示すインデックスフィールドと分岐/非分岐
    予測とを含み、さらに、 b.プリフェッチされる命令ブロックとして、前記複数個
    の命令ブロックの1つをプリフェッチするために、フェ
    ッチプログラムカウンタ値を発生し前記命令キャッシュ
    メモリに供給するステップと、 c.前記プリフェッチされた命令ブロックの前記命令フェ
    ッチ情報を読出し、前記プリフェッチされた命令ブロッ
    クの前記命令フェッチ情報内にストアされた前記分岐/
    非分岐予測が非分岐条件を示すならば前記フェッチプロ
    グラムカウンタ値を増分し、前記プリフェッチされた命
    令ブロックの前記命令フェッチ情報内にストアされた前
    記分岐/非分岐予測が分岐条件を示すならば、前記プリ
    フェッチされた命令ブロックの前記命令フェッチ情報に
    ストアされた前記後続の命令ブロックで前記フェッチプ
    ログラムカウンタ値を更新するステップと、 d.前記プリフェッチされた命令ブロックの前記命令フェ
    ッチ情報内にストアされた前記分岐/非分岐予測が前記
    分岐条件を示すならば、分岐場所アドレスと対応の予測
    されたターゲット分岐アドレスとを分岐予測メモリにス
    トアするステップと、 e.前記プリフェッチされた命令ブロックに含まれた分岐
    命令を実行し、前記分岐命令の前記実行の結果として実
    際のターゲット分岐アドレスを発生するステップと、 f.前記実際のターゲット分岐アドレスを前記分岐予測メ
    モリにストアされた前記分岐命令に対応する前記予測さ
    れたターゲット分岐アドレスと比較し、前記分岐命令に
    対応する分岐が実行されており、前記比較の結果が、前
    記分岐予測メモリにストアされた前記分岐場所アドレス
    が前記実行された分岐命令に対応し、かつ前記予測され
    たターゲット分岐アドレスが前記実際のターゲット分岐
    アドレスと同等ではないことを示すとき、第1の更新信
    号を前記命令キャッシュメモリに送って、前記インデッ
    クスフィールドを前記対応の分岐命令のために前記実際
    のターゲット分岐アドレスと交換するステップと、 g.前記分岐予測メモリにストアされた前記分岐場所アド
    レスを前記実行された分岐命令のアドレスと比較し、前
    記分岐命令に対応する前記分岐が実行されておらず、前
    記比較の結果が、前記分岐命令の前記アドレスが前記分
    岐予測メモリにストアされた前記分岐場所アドレスと等
    しいことを示すならば、第2の更新信号を前記命令キャ
    ッシュメモリに送って、前記分岐/非分岐予測を前記非
    分岐条件に更新するステップとを含む、方法。
  27. 【請求項27】処理装置のための命令をプリフェッチす
    るための装置であって、 a.複数個の命令ブロックを受取るように構成された命令
    キャッシュメモリを含み、前記命令ブロックの各々は複
    数個の命令および命令フェッチ情報を含み、前記命令フ
    ェッチ情報は、後続の命令ブロックがフェッチされると
    予測されたことを示すインデックスフィールドと分岐/
    非分岐予測とを含み、さらに、 b.前記命令キャッシュメモリに供給されるフェッチプロ
    グラムカウンタ値に基づいて、プリフェッチされる命令
    ブロックとして、前記命令キャッシュメモリにストアさ
    れた複数個の命令ブロックの1つをプリフェッチするた
    めに、前記命令キャッシュメモリに作動的に接続された
    フェッチプログラムカウンタと、 c.前記プリフェッチされた命令ブロックの前記命令フェ
    ッチ情報を読出するために、前記フェッチプログラムカ
    ウンタおよび前記命令キャッシュメモリに作動的に接続
    された命令フェッチ制御ユニットとを含み、前記プリフ
    ェッチされた命令ブロックの前記命令フェッチ情報内に
    ストアされた前記分岐/非分岐予測が非分岐条件を示す
    ならば、前記命令フェッチ制御ユニットは信号を前記フ
    ェッチプログラムカウンタに送って、前記フェッチプロ
    グラムカウンタ値を増分し前記命令キャッシュメモリに
    供給し、前記プリフェッチされた命令ブロックの前記命
    令フェッチ情報内にストアされた前記分岐/非分岐予測
    を表わす前記データが分岐条件を示すならば、前記命令
    フェッチ制御ユニットは信号を前記フェッチプログラム
    カウンタに送って、前記フェッチプログラムカウンタ値
    を、前記プリフェッチされた命令ブロックの前記命令フ
    ェッチ情報にストアされた前記後続の命令ブロックで更
    新し、さらに、 d.前記プリフェッチされた命令ブロックの前記命令フェ
    ッチ情報内にストアされた前記分岐/非分岐予測を表わ
    す前記データが前記分岐条件を示すならば分岐場所アド
    レスと対応の予測されたターゲット分岐アドレスとをス
    トアするための、前記命令キャッシュメモリに結合され
    た分岐予測メモリと、 e.前記分岐予測メモリに結合された実行ユニットとを含
    み、前記分岐命令が前記実行ユニットによって実行され
    るとき、実際のターゲット分岐アドレスが発生され、前
    記分岐命令に対応する分岐が実行されるとき、前記実際
    のターゲット分岐アドレスが前記分岐予測メモリ内にス
    トアされた前記予測されたターゲット分岐アドレスと比
    較され、前記分岐場所アドレスが前記実行ユニットによ
    って実行された前記分岐命令のアドレスと比較され、前
    記実際のターゲット分岐アドレスが前記予測されたター
    ゲット分岐アドレスと同等ではないかまたは前記分岐場
    所アドレスが前記実行ユニットによって実行された前記
    分岐命令の前記アドレスと同等ではないならば、前記命
    令キャッシュメモリの前記インデックスフィールドが前
    記実際のターゲット分岐アドレスで更新され、 前記実行ユニットによる前記分岐命令の実行の結果、前
    記分岐命令に対応する前記分岐が実行されないこととな
    ったとき、前記実行ユニットによって実行された前記分
    岐命令の前記アドレスは前記分岐予測メモリにストアさ
    れた前記分岐場所アドレスと比較され、前記実行ユニッ
    トによって実行された前記分岐命令の前記アドレスが前
    記分岐予測メモリにストアされた前記分岐場所アドレス
    と同等でないならば、前記命令キャッシュメモリにスト
    アされた前記分岐/非分岐予測が非分岐条件を示すよう
    に更新される、装置。
JP2149718A 1989-06-06 1990-06-06 分岐予測の方法とそのための装置 Expired - Lifetime JP2889955B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US361,870 1989-06-06
US07/361,870 US5136697A (en) 1989-06-06 1989-06-06 System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache

Publications (2)

Publication Number Publication Date
JPH0334024A JPH0334024A (ja) 1991-02-14
JP2889955B2 true JP2889955B2 (ja) 1999-05-10

Family

ID=23423749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2149718A Expired - Lifetime JP2889955B2 (ja) 1989-06-06 1990-06-06 分岐予測の方法とそのための装置

Country Status (6)

Country Link
US (2) US5136697A (ja)
EP (1) EP0401992B1 (ja)
JP (1) JP2889955B2 (ja)
AT (1) ATE162897T1 (ja)
DE (1) DE69031991T2 (ja)
ES (1) ES2111528T3 (ja)

Families Citing this family (228)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0404068A3 (en) * 1989-06-20 1991-12-27 Fujitsu Limited Branch instruction executing device
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
CA2045791A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch performance in high speed processor
US5530941A (en) * 1990-08-06 1996-06-25 Ncr Corporation System and method for prefetching data from a main computer memory into a cache memory
WO1992006426A1 (en) * 1990-10-09 1992-04-16 Nexgen Microsystems Method and apparatus for parallel decoding of instructions with branch prediction look-up
JP2535252B2 (ja) * 1990-10-17 1996-09-18 三菱電機株式会社 並列処理装置
JP2532300B2 (ja) * 1990-10-17 1996-09-11 三菱電機株式会社 並列処理装置における命令供給装置
EP0488819B1 (en) * 1990-11-30 1999-01-13 Kabushiki Kaisha Toshiba Conditional branch instructions execution apparatus
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
US5414822A (en) * 1991-04-05 1995-05-09 Kabushiki Kaisha Toshiba Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness
US5454089A (en) * 1991-04-17 1995-09-26 Intel Corporation Branch look ahead adder for use in an instruction pipeline sequencer with multiple instruction decoding
US5630157A (en) * 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
EP1526446A3 (en) * 1991-07-08 2007-04-04 Seiko Epson Corporation Extensible RISC microprocessor architecture
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
JP2773471B2 (ja) * 1991-07-24 1998-07-09 日本電気株式会社 情報処理装置
US5649097A (en) * 1991-10-25 1997-07-15 International Business Machines Corporation Synchronizing a prediction RAM
WO1993018459A1 (en) * 1992-03-06 1993-09-16 Rambus Inc. Prefetching into a cache to minimize main memory access time and cache size in a computer system
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
KR100309566B1 (ko) * 1992-04-29 2001-12-15 리패치 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
EP0638183B1 (en) 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
DE69327688T2 (de) * 1992-08-12 2000-09-07 Advanced Micro Devices, Inc. Befehlsdecoder
DE69327927T2 (de) * 1992-08-31 2000-10-12 Sun Microsystems, Inc. Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp., Tokio/Tokyo System und Verfahren zur Änderung der Namen von Registern
US5898882A (en) * 1993-01-08 1999-04-27 International Business Machines Corporation Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
US5696958A (en) * 1993-01-11 1997-12-09 Silicon Graphics, Inc. Method and apparatus for reducing delays following the execution of a branch instruction in an instruction pipeline
US5537573A (en) * 1993-05-28 1996-07-16 Rambus, Inc. Cache system and method for prefetching of data
US5826069A (en) * 1993-09-27 1998-10-20 Intel Corporation Having write merge and data override capability for a superscalar processing device
US5826094A (en) * 1993-09-30 1998-10-20 Intel Corporation Register alias table update to indicate architecturally visible state
US5740393A (en) * 1993-10-15 1998-04-14 Intel Corporation Instruction pointer limits in processor that performs speculative out-of-order instruction execution
US5748976A (en) * 1993-10-18 1998-05-05 Amdahl Corporation Mechanism for maintaining data coherency in a branch history instruction cache
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
EP0651332B1 (en) * 1993-10-29 2001-07-18 Advanced Micro Devices, Inc. Linearly addressable microprocessor cache
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
US5878245A (en) 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
DE69434669T2 (de) * 1993-10-29 2006-10-12 Advanced Micro Devices, Inc., Sunnyvale Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
US5574928A (en) * 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
EP0651320B1 (en) * 1993-10-29 2001-05-23 Advanced Micro Devices, Inc. Superscalar instruction decoder
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
US5500943A (en) * 1993-11-02 1996-03-19 Motorola, Inc. Data processor with rename buffer and FIFO buffer for in-order instruction completion
US6128721A (en) * 1993-11-17 2000-10-03 Sun Microsystems, Inc. Temporary pipeline register file for a superpipelined superscalar processor
US6079014A (en) * 1993-12-02 2000-06-20 Intel Corporation Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US5604909A (en) 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
IE940855A1 (en) * 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation
US5517651A (en) * 1993-12-29 1996-05-14 Intel Corporation Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
US6393550B1 (en) * 1993-12-30 2002-05-21 Intel Corporation Method and apparatus for pipeline streamlining where resources are immediate or certainly retired
US5680565A (en) * 1993-12-30 1997-10-21 Intel Corporation Method and apparatus for performing page table walks in a microprocessor capable of processing speculative instructions
US5721857A (en) * 1993-12-30 1998-02-24 Intel Corporation Method and apparatus for saving the effective address of floating point memory operations in an out-of-order microprocessor
US6101597A (en) * 1993-12-30 2000-08-08 Intel Corporation Method and apparatus for maximum throughput scheduling of dependent operations in a pipelined processor
TW253946B (en) * 1994-02-04 1995-08-11 Ibm Data processor with branch prediction and method of operation
US5553256A (en) * 1994-02-28 1996-09-03 Intel Corporation Apparatus for pipeline streamlining where resources are immediate or certainly retired
US5687338A (en) * 1994-03-01 1997-11-11 Intel Corporation Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor
US5546599A (en) * 1994-03-31 1996-08-13 International Business Machines Corporation Processing system and method of operation for processing dispatched instructions with detected exceptions
TW353732B (en) * 1994-03-31 1999-03-01 Ibm Processing system and method of operation
US5559976A (en) * 1994-03-31 1996-09-24 International Business Machines Corporation System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
TW260765B (ja) * 1994-03-31 1995-10-21 Ibm
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
US5644779A (en) * 1994-04-15 1997-07-01 International Business Machines Corporation Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
US5689693A (en) * 1994-04-26 1997-11-18 Advanced Micro Devices, Inc. Range finding circuit for selecting a consecutive sequence of reorder buffer entries using circular carry lookahead
US5590352A (en) * 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
US5632023A (en) 1994-06-01 1997-05-20 Advanced Micro Devices, Inc. Superscalar microprocessor including flag operand renaming and forwarding apparatus
US5696955A (en) 1994-06-01 1997-12-09 Advanced Micro Devices, Inc. Floating point stack and exchange instruction
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5561782A (en) * 1994-06-30 1996-10-01 Intel Corporation Pipelined cache system having low effective latency for nonsequential accesses
US5535346A (en) * 1994-07-05 1996-07-09 Motorola, Inc. Data processor with future file with parallel update and method of operation
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
EP0698884A1 (en) * 1994-08-24 1996-02-28 Advanced Micro Devices, Inc. Memory array for microprocessor cache
US5928357A (en) * 1994-09-15 1999-07-27 Intel Corporation Circuitry and method for performing branching without pipeline delay
US5721695A (en) * 1994-10-17 1998-02-24 Advanced Micro Devices, Inc. Simulation by emulating level sensitive latches with edge trigger latches
US5603045A (en) * 1994-12-16 1997-02-11 Vlsi Technology, Inc. Microprocessor system having instruction cache with reserved branch target section
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
US5933860A (en) * 1995-02-10 1999-08-03 Digital Equipment Corporation Multiprobe instruction cache with instruction-based probe hint generation and training whereby the cache bank or way to be accessed next is predicted
US5708788A (en) * 1995-03-03 1998-01-13 Fujitsu, Ltd. Method for adjusting fetch program counter in response to the number of instructions fetched and issued
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5822574A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
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
US5878255A (en) * 1995-06-07 1999-03-02 Advanced Micro Devices, Inc. Update unit for providing a delayed update to a branch prediction array
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5828895A (en) * 1995-09-20 1998-10-27 International Business Machines Corporation Methods and system for predecoding instructions in a superscalar data processing system
WO1997013201A1 (en) 1995-10-06 1997-04-10 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
KR100384213B1 (ko) * 1995-10-06 2003-08-19 어드밴스트 마이크로 디바이시즈 인코퍼레이티드 순차리스트내의선택된타입의제1또는제2대상을인식하는처리시스템,선택회로및방법
US5884059A (en) * 1996-01-26 1999-03-16 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
GB9521980D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Branch target buffer
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US5835744A (en) * 1995-11-20 1998-11-10 Advanced Micro Devices, Inc. Microprocessor configured to swap operands in order to minimize dependency checking logic
US5713039A (en) * 1995-12-05 1998-01-27 Advanced Micro Devices, Inc. Register file having multiple register storages for storing data from multiple data streams
US5864707A (en) 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US5732235A (en) * 1996-01-25 1998-03-24 International Business Machines Corporation Method and system for minimizing the number of cycles required to execute semantic routines
US5742805A (en) * 1996-02-15 1998-04-21 Fujitsu Ltd. Method and apparatus for a single history register based branch predictor in a superscalar microprocessor
US5752259A (en) * 1996-03-26 1998-05-12 Advanced Micro Devices, Inc. Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache
US5918056A (en) * 1996-05-17 1999-06-29 Advanced Micro Devices, Inc. Segmentation suspend mode for real-time interrupt support
US6108769A (en) 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
US5835511A (en) * 1996-05-17 1998-11-10 Advanced Micro Devices, Inc. Method and mechanism for checking integrity of byte enable signals
US5761490A (en) * 1996-05-28 1998-06-02 Hewlett-Packard Company Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
US5903740A (en) * 1996-07-24 1999-05-11 Advanced Micro Devices, Inc. Apparatus and method for retiring instructions in excess of the number of accessible write ports
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a future file for storing speculative instruction execution results
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
US5900013A (en) * 1996-07-26 1999-05-04 Advanced Micro Devices, Inc. Dual comparator scheme for detecting a wrap-around condition and generating a cancel signal for removing wrap-around buffer entries
US5872943A (en) * 1996-07-26 1999-02-16 Advanced Micro Devices, Inc. Apparatus for aligning instructions using predecoded shift amounts
US5822575A (en) * 1996-09-12 1998-10-13 Advanced Micro Devices, Inc. Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction
US5765016A (en) * 1996-09-12 1998-06-09 Advanced Micro Devices, Inc. Reorder buffer configured to store both speculative and committed register states
US5794028A (en) * 1996-10-17 1998-08-11 Advanced Micro Devices, Inc. Shared branch prediction structure
US5850543A (en) * 1996-10-30 1998-12-15 Texas Instruments Incorporated Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return
US5918044A (en) * 1996-10-31 1999-06-29 International Business Machines Corporation Apparatus and method for instruction fetching using a multi-port instruction cache directory
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
US5870579A (en) * 1996-11-18 1999-02-09 Advanced Micro Devices, Inc. Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception
US5954816A (en) * 1996-11-19 1999-09-21 Advanced Micro Devices, Inc. Branch selector prediction
US5978906A (en) * 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US6175906B1 (en) 1996-12-06 2001-01-16 Advanced Micro Devices, Inc. Mechanism for fast revalidation of virtual tags
US5870580A (en) * 1996-12-13 1999-02-09 Advanced Micro Devices, Inc. Decoupled forwarding reorder buffer configured to allocate storage in chunks for instructions having unresolved dependencies
US5881305A (en) * 1996-12-13 1999-03-09 Advanced Micro Devices, Inc. Register rename stack for a microprocessor
US5983321A (en) * 1997-03-12 1999-11-09 Advanced Micro Devices, Inc. Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache
US5862065A (en) * 1997-02-13 1999-01-19 Advanced Micro Devices, Inc. Method and circuit for fast generation of zero flag condition code in a microprocessor-based computer
US5768555A (en) * 1997-02-20 1998-06-16 Advanced Micro Devices, Inc. Reorder buffer employing last in buffer and last in line bits
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
US6141740A (en) * 1997-03-03 2000-10-31 Advanced Micro Devices, Inc. Apparatus and method for microcode patching for generating a next address
US6233672B1 (en) 1997-03-06 2001-05-15 Advanced Micro Devices, Inc. Piping rounding mode bits with floating point instructions to eliminate serialization
US5968163A (en) * 1997-03-10 1999-10-19 Advanced Micro Devices, Inc. Microcode scan unit for scanning microcode instructions using predecode data
US5852727A (en) * 1997-03-10 1998-12-22 Advanced Micro Devices, Inc. Instruction scanning unit for locating instructions via parallel scanning of start and end byte information
US5850532A (en) * 1997-03-10 1998-12-15 Advanced Micro Devices, Inc. Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched
US5859992A (en) * 1997-03-12 1999-01-12 Advanced Micro Devices, Inc. Instruction alignment using a dispatch list and a latch list
US5887185A (en) * 1997-03-19 1999-03-23 Advanced Micro Devices, Inc. Interface for coupling a floating point unit to a reorder buffer
US5930492A (en) * 1997-03-19 1999-07-27 Advanced Micro Devices, Inc. Rapid pipeline control using a control word and a steering word
US5828873A (en) * 1997-03-19 1998-10-27 Advanced Micro Devices, Inc. Assembly queue for a floating point unit
US5859998A (en) * 1997-03-19 1999-01-12 Advanced Micro Devices, Inc. Hierarchical microcode implementation of floating point instructions for a microprocessor
US5987599A (en) * 1997-03-28 1999-11-16 Intel Corporation Target instructions prefetch cache
US5987235A (en) * 1997-04-04 1999-11-16 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions
US5901076A (en) * 1997-04-16 1999-05-04 Advanced Micro Designs, Inc. Ripple carry shifter in a floating point arithmetic unit of a microprocessor
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US5845101A (en) * 1997-05-13 1998-12-01 Advanced Micro Devices, Inc. Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache
US6122729A (en) 1997-05-13 2000-09-19 Advanced Micro Devices, Inc. Prefetch buffer which stores a pointer indicating an initial predecode position
US6016543A (en) * 1997-05-14 2000-01-18 Mitsubishi Denki Kabushiki Kaisha Microprocessor for controlling the conditional execution of instructions
US5872946A (en) * 1997-06-11 1999-02-16 Advanced Micro Devices, Inc. Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch
US5940602A (en) * 1997-06-11 1999-08-17 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations
US6009511A (en) * 1997-06-11 1999-12-28 Advanced Micro Devices, Inc. Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US5933626A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
US5983337A (en) * 1997-06-12 1999-11-09 Advanced Micro Devices, Inc. Apparatus and method for patching an instruction by providing a substitute instruction or instructions from an external memory responsive to detecting an opcode of the instruction
US5933629A (en) 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for detecting microbranches early
US5898865A (en) * 1997-06-12 1999-04-27 Advanced Micro Devices, Inc. Apparatus and method for predicting an end of loop for string instructions
US6012125A (en) * 1997-06-20 2000-01-04 Advanced Micro Devices, Inc. Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions
US5978901A (en) * 1997-08-21 1999-11-02 Advanced Micro Devices, Inc. Floating point and multimedia unit with data type reclassification capability
US6101577A (en) * 1997-09-15 2000-08-08 Advanced Micro Devices, Inc. Pipelined instruction cache and branch prediction mechanism therefor
US6185676B1 (en) * 1997-09-30 2001-02-06 Intel Corporation Method and apparatus for performing early branch prediction in a microprocessor
US5931943A (en) * 1997-10-21 1999-08-03 Advanced Micro Devices, Inc. Floating point NaN comparison
US6032252A (en) * 1997-10-28 2000-02-29 Advanced Micro Devices, Inc. Apparatus and method for efficient loop control in a superscalar microprocessor
US5974542A (en) * 1997-10-30 1999-10-26 Advanced Micro Devices, Inc. Branch prediction unit which approximates a larger number of branch predictions using a smaller number of branch predictions and an alternate target indication
US6230259B1 (en) 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6256728B1 (en) 1997-11-17 2001-07-03 Advanced Micro Devices, Inc. Processor configured to selectively cancel instructions from its pipeline responsive to a predicted-taken short forward branch instruction
US6199154B1 (en) 1997-11-17 2001-03-06 Advanced Micro Devices, Inc. Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access
US6079003A (en) 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache
US6154818A (en) * 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file
US6516395B1 (en) 1997-11-20 2003-02-04 Advanced Micro Devices, Inc. System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes
US6079005A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address
US5974432A (en) * 1997-12-05 1999-10-26 Advanced Micro Devices, Inc. On-the-fly one-hot encoding of leading zero count
US5870578A (en) * 1997-12-09 1999-02-09 Advanced Micro Devices, Inc. Workload balancing in a microprocessor for reduced instruction dispatch stalling
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6016545A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor
US6157986A (en) * 1997-12-16 2000-12-05 Advanced Micro Devices, Inc. Fast linear tag validation unit for use in microprocessor
US6112296A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Floating point stack manipulation using a register map and speculative top of stack values
US6018798A (en) * 1997-12-18 2000-01-25 Advanced Micro Devices, Inc. Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle
US6112018A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Apparatus for exchanging two stack registers
US5954814A (en) * 1997-12-19 1999-09-21 Intel Corporation System for using a branch prediction unit to achieve serialization by forcing a branch misprediction to flush a pipeline
US6175908B1 (en) 1998-04-30 2001-01-16 Advanced Micro Devices, Inc. Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte
US6141745A (en) * 1998-04-30 2000-10-31 Advanced Micro Devices, Inc. Functional bit identifying a prefix byte via a particular state regardless of type of instruction
US6119223A (en) * 1998-07-31 2000-09-12 Advanced Micro Devices, Inc. Map unit having rapid misprediction recovery
US6122656A (en) 1998-07-31 2000-09-19 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6230262B1 (en) 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6205544B1 (en) * 1998-12-21 2001-03-20 Intel Corporation Decomposition of instructions into branch and sequential code sections
US6442681B1 (en) * 1998-12-28 2002-08-27 Bull Hn Information Systems Inc. Pipelined central processor managing the execution of instructions with proximate successive branches in a cache-based data processing system while performing block mode transfer predictions
US6957327B1 (en) * 1998-12-31 2005-10-18 Stmicroelectronics, Inc. Block-based branch target buffer
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6516462B1 (en) * 1999-02-17 2003-02-04 Elbrus International Cache miss saving for speculation load operation
DE19945940C2 (de) * 1999-09-24 2002-01-17 Infineon Technologies Ag Verfahren und Vorrichtung zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit PIPELINE-Rechnerarchitektur
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6442707B1 (en) 1999-10-29 2002-08-27 Advanced Micro Devices, Inc. Alternate fault handler
US6877084B1 (en) 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
US6981132B2 (en) 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US6732253B1 (en) 2000-11-13 2004-05-04 Chipwrights Design, Inc. Loop handling for single instruction multiple datapath processor architectures
US6931518B1 (en) 2000-11-28 2005-08-16 Chipwrights Design, Inc. Branching around conditional processing if states of all single instruction multiple datapaths are disabled and the computer program is non-deterministic
US6970985B2 (en) 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US8484441B2 (en) * 2004-03-31 2013-07-09 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths
US7949856B2 (en) * 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit
US9047094B2 (en) * 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
JP3926809B2 (ja) * 2004-07-27 2007-06-06 富士通株式会社 分岐命令制御装置、および制御方法。
EP1810128B1 (en) * 2004-08-30 2009-11-11 Texas Instruments Incorporated Methods and apparatus for branch prediction and processing of microprocessor instructions and the like
US8578134B1 (en) * 2005-04-04 2013-11-05 Globalfoundries Inc. System and method for aligning change-of-flow instructions in an instruction buffer
US8161252B1 (en) * 2005-08-01 2012-04-17 Nvidia Corporation Memory interface with dynamic selection among mirrored storage locations
US7447883B2 (en) * 2006-08-10 2008-11-04 Arm Limited Allocation of branch target cache resources in dependence upon program instructions within an instruction queue
US7640422B2 (en) * 2006-08-16 2009-12-29 Qualcomm Incorporated System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US20080154379A1 (en) * 2006-12-22 2008-06-26 Musculoskeletal Transplant Foundation Interbody fusion hybrid graft
WO2009101562A2 (en) * 2008-02-11 2009-08-20 Nxp B.V. Method of program obfuscation and processing device for executing obfuscated programs
US8181005B2 (en) * 2008-09-05 2012-05-15 Advanced Micro Devices, Inc. Hybrid branch prediction device with sparse and dense prediction caches
US20110093658A1 (en) * 2009-10-19 2011-04-21 Zuraski Jr Gerald D Classifying and segregating branch targets
US9916252B2 (en) 2015-05-19 2018-03-13 Linear Algebra Technologies Limited Systems and methods for addressing a cache with split-indexes
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US20180210734A1 (en) * 2017-01-26 2018-07-26 Alibaba Group Holding Limited Methods and apparatus for processing self-modifying codes
WO2018211122A1 (en) 2017-05-19 2018-11-22 Movidius Ltd. Methods, systems and apparatus to reduce memory latency when fetching pixel kernels
US10540181B2 (en) 2018-01-19 2020-01-21 Marvell World Trade Ltd. Managing branch prediction information for different contexts
US10599437B2 (en) 2018-01-19 2020-03-24 Marvell World Trade Ltd. Managing obscured branch prediction information
CN111221579B (zh) * 2018-11-27 2022-04-26 展讯通信(上海)有限公司 预测Load指令执行延迟的方法及系统
US20220342672A1 (en) * 2021-04-27 2022-10-27 Red Hat, Inc. Rescheduling a load instruction based on past replays

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
US4604691A (en) * 1982-09-07 1986-08-05 Nippon Electric Co., Ltd. Data processing system having branch instruction prefetching performance
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
US4755966A (en) * 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization
JP2603626B2 (ja) * 1987-01-16 1997-04-23 三菱電機株式会社 データ処理装置
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
入江直彦(外3名)"「新風」プロセッサにおける命令フェッチ機構",情報処理学会第38回(昭和64年前期)全国大会論文集,平成元年(1989年)3月17日,p.1472−1473

Also Published As

Publication number Publication date
DE69031991D1 (de) 1998-03-05
US5136697A (en) 1992-08-04
EP0401992A3 (en) 1992-12-30
ATE162897T1 (de) 1998-02-15
EP0401992B1 (en) 1998-01-28
JPH0334024A (ja) 1991-02-14
ES2111528T3 (es) 1998-03-16
EP0401992A2 (en) 1990-12-12
DE69031991T2 (de) 1998-08-20
USRE35794E (en) 1998-05-12

Similar Documents

Publication Publication Date Title
JP2889955B2 (ja) 分岐予測の方法とそのための装置
US8291202B2 (en) Apparatus and methods for speculative interrupt vector prefetching
US5553255A (en) Data processor with programmable levels of speculative instruction fetching and method of operation
US5623614A (en) Branch prediction cache with multiple entries for returns having multiple callers
US5511175A (en) Method an apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US6425075B1 (en) Branch prediction device with two levels of branch prediction cache
US7437543B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US5142631A (en) System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register
US5687349A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
US5903750A (en) Dynamic branch prediction for branch instructions with multiple targets
US6684323B2 (en) Virtual condition codes
US5446850A (en) Cross-cache-line compounding algorithm for scism processors
US5592634A (en) Zero-cycle multi-state branch cache prediction data processing system and method thereof
US6609194B1 (en) Apparatus for performing branch target address calculation based on branch type
US6247122B1 (en) Method and apparatus for performing branch prediction combining static and dynamic branch predictors
KR20010075258A (ko) 간접 분기 목적지 산출 방법
KR20070068351A (ko) 로드가 더 오래된 스토어에 의존적인지를 예측하는 의존성매커니즘을 구비한 프로세서
WO1995016954A1 (fr) Circuit de traitement d&#39;instructions dans un systeme informatique
KR20050013544A (ko) 로드 동작들의 추론적 결과들을 레지스터 값들에링크시키는 시스템 및 방법
US20080022080A1 (en) Data access handling in a data processing system
US5649137A (en) Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
JP3486690B2 (ja) パイプライン方式プロセッサ
US20070174592A1 (en) Early conditional selection of an operand
US5748976A (en) Mechanism for maintaining data coherency in a branch history instruction cache
US20090204799A1 (en) Method and system for reducing branch prediction latency using a branch target buffer with most recently used column prediction

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20090226

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20090226

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20100226

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20110226

Year of fee payment: 12

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110226

Year of fee payment: 12