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
Links
- 238000000034 method Methods 0.000 title claims description 12
- 230000004044 response Effects 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 10
- 230000009977 dual effect Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result 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命令に制限され
るものと対立するものである。対照的に、スーパースカ
ラープロセッサアーキテクチャは、別々のパイプライン
ステージ間においても、同一パイプラインステージ内に
おいても、命令の間の並列性を達成する。
スーパースカラープロセッサは、命令が十分な速度で供
給されるときしか効果的ではない。もし命令フェッチの
平均速度が命令実行の平均速度より小さければ、命令フ
ェッチが全体的システム性能の制限要因となり得ること
は明白である。シーケンシャルな命令のために必要な命
令帯域幅を与えることは比較的容易である。なぜなら、
命令フェッチャは、サイクル当たりいくつもの命令を簡
単にフェッチすることができるからである。しかし、分
岐によりひき起こされるシーケンシャルでないフェッチ
が存在するときに十分な命令帯域幅を与えることははる
かに困難である。なぜなら、分岐により、命令フェッチ
が命令実行の結果に依存することになるからである。し
たがって、分岐の結果が知られていないときには、命令
フェッチャはストールするか、不正確な命令をフェッチ
してしまう。
つの命令キャッシュブロック(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つの命令と命令フェッチ情報とを保持し、命令フ
ェッチ情報は拡大して示しているように従来のアドレス
タグフィールドと、二つの新たなフィールド(フェッチ
されると予測された次のエントリと、実行されると予測
された次のエントリ内の最初の命令との双方を示す後続
インデックスフィールドと、当該命令ブロック内の分岐
点の場所を示す分岐ブロックインデックスフィールド)
とを含む。後続インデックスフィールドは完全な命令ア
ドレスを特定するわけではないが、命令キャッシュ内の
任意の命令アドレスを選択するためには十分なサイズを
持っている。後続インデックスフィールドは後続有効ビ
ットを含み、後続有効ビットは、セットされている場合
には分岐が実行されると予測されたことを示し、クリア
されているときには分岐が実行されないと予測されたこ
とを示す。
ャッシュと図示したような命令アドレスとを前提とし
て、第3図に示されるコードシーケンスに対する命令キ
ャッシュのエントリを示している。キャッシュエントリ
が最初にロードされるとき、アドレスタグがセットされ
後続有効ビットはクリアされる。したがって新たにロー
ドされたエントリに対するデフォルトは、分岐が実行さ
れたないと予測すること、および次のシーケンシャルな
命令ブロックがフェッチされるべきこと、である。第6
図はまた、分岐が生ずる命令ブロックの後続インデック
スフィールドを後続命令ブロックのアドレスタグと連結
することにより、分岐点において分岐ターゲットプログ
ラムカウンタを組み立てることができるということを示
す。
くは先行する命令ブロックの後続インデックスフィール
ドの下位ビットによって決定される。先行する命令ブロ
ックの後続インデックスは現在の命令ブロック内のどの
命令をポイントすることもでき、現在の命令ブロック内
の当該ポイントまでの命令はプロセッサによって実行さ
れない。ブロックの最後の命令の有効性は、分岐ブロッ
クインデックスにより決定され、分岐ブロックインデッ
クスは分岐が実行されると予測された点を示す。命令デ
コーダが有効な命令を判定するときには分岐ブロックイ
ンデックスが必要であるが、キャッシュエントリは後続
インデックスフィールドのみによって取出される。
た分岐が予測された順番にしたがって格納されたリスト
を、命令キャッシュと関連付けられた分岐予測FIFO内に
維持する。リスト内の各エントリは、命令キャッシュ内
の分岐の位置を示し、それら位置は分岐エントリに先行
するエントリの後続インデックスと分岐場所インデック
スとを連結することにより特定される。各エントリはま
た、分岐のターゲットに対する完全なプログラムカウン
タ値を含んでいる。
れらのもとの順番にしたがって実行し、それら分岐の実
行の結果得られる情報を予測された分岐のリストの先頭
の情報と比較する。分岐予測が成功するためには以下の
条件が成立しなければならない。第1に、もし分岐が実
行されれば、命令キャッシュ内におけるその位置は分岐
予測FIFO内に含まれるリストのうちの次の分岐の位置と
一致しなければならない。この条件は、分岐しないと予
測された分岐命令で分岐が実行されたものを検出するた
めに必要である。第2に、リストの先頭の分岐の予測さ
れたターゲットアドレスは、分岐を実行することにより
決定された次の命令アドレスと一致しなければならな
い。
があり、分岐すると予測された分岐命令であって分岐が
されなかったものを検出するのに主として必要とされ
る。しかし、予測されたターゲットアドレスは後続ブロ
ックのアドレスタグに基づいているので、この比較によ
りまた、実行時のキャッシュの入換えにより、もとのタ
ーゲットエントリが取り除かれていたことが検出され
る。加えて、プログラムカウタン値を比較することによ
り間接分岐が適切に予測されたかどうかが検査される。
いときには、分岐予測は誤りである。予測誤りが生ずる
と、実行ユニットにより決定された分岐の場所を用いて
適切なキャッシュエントリをフェッチしなければならな
い。不正確な命令ブロックに対する後続有効ビットおよ
び命令フェッチ情報はまた、予測誤りに基づいて、分岐
の実際の実行結果を反映するように更新されなければな
らない。たとえば、分岐すると予測されたにもかかわら
ず分岐が生じなかったときには、当該命令ブロックの次
のフェッチ時には、分岐は生じないと予測されるよう
に、後続有効ビットはクリアされなければならない。こ
うして、後続有効ビットと命令フェッチ情報とは常に当
該分岐命令の前回の実際の実行結果を常に反映する。
例の詳細な説明のために第7図を参照する。第7図は、
バスインターフェイスユニット(BIU)10、命令キャッ
シュ12、分岐予測FIFO14、命令デコーダ16、レジスタフ
ァイル18、リオーダバッファ20、分岐実行ユニット22、
算術論理ユニット(ALU)24、シフタユニット30、ロー
ドユニット32、ストアユニット33、およびデータキャッ
シュ34を含むスーパースカラープロセッサのブロック図
を示す。
コーダ16によって命令がデコードされたとき、対応のエ
ントリがリオーダバッファ20内にアロケートされる。命
令の実行が完了したときに、デコードされた命令の結果
値が、アロケートされたエントリに書込まれる。この結
果値はもしこの命令と関連する例外が何もなければその
後レジスタファイル18に書込まれる。もしある命令につ
いて、関連するエントリがリオーダバッファ20の先頭に
達するまでに完了しなければ、リオーダバッファ20の歩
進は当該命令が完了するまで停止されるが、さらに他の
エントリをアロケートし続けることはできる。もし例外
または分岐予測誤りがある場合、リオーダバッファ20の
内容は全体が廃棄される。
トマッピングされた各々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とを含む。
た分岐に関する情報を維持するのに使用される。特に、
分岐が発生すると予測されたキャッシュ内の場所(すな
わち分岐場所)と、分岐の、予測された分岐ターゲット
PCとが分岐予測FIFO14内に格納される。第9図に示すよ
うに、分岐予測FIFO14は好ましくはターゲットPC FIFO
と分岐場所FIFO、ならびにインクリメントされる読出/
書込ポインタ56および58を有する固定したアレイとして
実現され、さらに分岐場所データバス(CPC)およびタ
ーゲットPCデータバス(TPC)にそれぞれ結合されたタ
ーゲットPC比較器60および分岐場所比較器62を含む。タ
ーゲットPC比較器60および分岐場所比較器62の出力信号
は分岐FIFO制御回路63に与えられる。分岐予測FIFO14に
替えて、シフト可能なアレイまたは循環型のFIFOとして
実現することもできる。
結果をリオーダバッファ20に書込むハードウェアを含ん
でいる。第10図に示すように、分岐実行ユニット22は分
岐予約ステーション82と、分岐計算ユニット84と、結果
バスインターフェイス86とを含む。分岐予約ステーショ
ン82はFIFOアレイであって、デコードされた命令を命令
デコーダ16から、オペランド情報をレジスタファイル18
およびリオーダバッファ20から受け、デコードされた命
令に依存性がなくなり、かつ分岐計算ユニット84が命令
を自由に実行可能となるまでこの情報を保持する。結果
バスインターフェイス86は分岐実行ユニット22をCPCバ
スおよびTPCバスに結合し、これらバスは第9図に示す
ように分岐予測FIFO14の分岐場所比較器62およびターゲ
ットPC比較器60に結合されている。
BIU10を介して受ける命令がロードされる。フェッチPC4
4は、命令流をプリフェッチするために、予測されたフ
ェッチPC値を命令キャッシュ12に対して供給する。前述
したように、各命令ブロックに対する後続有効ビット
は、当該命令ブロックが最初に命令キャッシュ12にロー
ドされたときにクリアされる。したがって、所与の命令
ブロックが最初に命令キャッシュ12からフェッチされた
ときには、そのブロック内のどの分岐も実行されないも
のと予測されている。プリフェッチされた命令ブロック
は命令レジスタラッチ54を介して命令デコーダ16に供給
される。予測されたフェッチPCはこの後インクリメンタ
50によって増分され再びMUXユニット48を介してフェッ
チPCラッチ46にロードされる。その結果得られたPCが、
命令記憶装置内のシーケンシャルな命令ブロックをフェ
ッチするために命令キャッシュ12に供給される。
令ブロック内に含まれる分岐命令をいずれも処理し、実
行された分岐命令に対する実際の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は、分岐の分岐場所と予測された分岐のターゲッ
トとをともに含む。
PC値とターゲットPC値とを発生し、それらは分岐予測FI
FO内の分岐場所比較器およびターゲットPC比較器に供給
される。分岐が生ずると予測されると、分岐実行ユニッ
ト22によって発生されたPC値は常に分岐場所FIFOからロ
ードされた分岐場所と一致する。しかし、分岐実行ユニ
ット22によって発生されたターゲットPC値が分岐予測FI
FO14にストアされているターゲットPC値と一致しないと
いう結果を生ずる可能性がある状態が3つ有る。分岐が
生ずると予測されたが実際には生じなかった場合には後
続有効ビットはクリアされなければならない。分岐が、
予測されたアドレスと異なるアドレスへのサブルーチン
からの戻りを実行した場合には、後続インデックスは更
新しなければならない。または、分岐命令の実行前にキ
ャッシュの入換えが生じた場合、命令キャッシュをリロ
ードする必要が生ずる。
命令キャッシュ内の各エントリに対して後続インデック
スと分岐ブロックインデックスフィールドとを設けるこ
とによるキャッシュサイズの増加である。しかし、この
増加は、他のハードウェア予測方式と比較すると最小で
ある。なぜなら、本願発明では、キャッシュブロック当
たり、生ずるだろう分岐については1つだけ予測し、当
該命令ブロックにおいて生じないだろう分岐については
後続インデックスに分岐情報を全く記憶しないことによ
り非分岐を予測することによって記憶空間を節約してい
るからである。8キロバイトのダイレクトマップされた
キャッシュに対しては、フィールドを追加することによ
り必要となるキャッシュ容量は約8パーセント増加す
る。しかし、分岐予測によるシステム全体の性能の増大
により、命令キャッシュのサイズ増を要するという条件
は正当化される。
新しなければならないという条件は、正しい分岐ターゲ
ットをフェッチしなければならないという要件と競合す
る。つまり、2つの別々のエントリに対するフェッチ情
報を同時に読み書きすることができなければ、分岐予測
誤りがあったときのフェッチ情報の更新によって命令フ
ェッチの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は結果バスインターフェイスである。
Claims (27)
- 【請求項1】a.複数個の命令ブロックを命令キャッシュ
メモリにロードするステップを含み、前記命令ブロック
の各々は複数個の命令および命令フェッチ情報を含み、
前記命令フェッチ情報は、アドレスタグと、予測された
ターゲット分岐アドレスと、後続有効ビットを含む後続
インデックスとを含み、さらに、 b.前記命令キャッシュメモリにストアされた前記複数個
の命令ブロックの1つをプリフェッチするために、フェ
ッチプログラムカウンタ値を発生して前記命令キャッシ
ュメモリに供給するステップと、 c.前記プリフェッチされた命令ブロックの前記後続有効
ビットが、前記プリフェッチされた命令ブロック内の分
岐命令で分岐が実行されると予測されたことを示す予め
定められた条件に設定されているかどうかを決定するス
テップと、 d.前記後続有効ビットが前記予め定められた条件に設定
されていれば、前記命令キャッシュメモリ内の前記分岐
命令の場所を示す分岐場所アドレスと、予測されたター
ゲット分岐アドレスとを発生するステップと、 e.前記後続有効ビットが前記予め定められた条件に設定
されていれば、前記予測されたターゲット分岐アドレス
および前記分岐場所アドレスを分岐予測メモリにストア
するステップと、 f.前記後続有効ビットが前記予め定められた条件に設定
されていなければ、前記フェッチプログラムカウンタ値
を増分し、増分されたフェッチプログラムカウンタ値を
前記命令キャッシュメモリに供給して後続の命令ブロッ
クをプリフェッチするステップと、 g.前記分岐命令を実行ユニットで実行し、実行された分
岐命令の実際の分岐アドレスおよびターゲット分岐アド
レスを発生するステップと、 h.前記実行ユニットによって発生された前記実際の分岐
アドレスを前記分岐予測メモリにストアされた前記分岐
場所アドレスと比較し、前記分岐命令に対応する分岐が
実行されており、かつ前記実際の分岐アドレスが前記分
岐場所アドレスと等しくないかまたは前記実行されたタ
ーゲット分岐アドレスが前記分岐予測メモリにストアさ
れた前記予測されたターゲット分岐アドレスと等しくな
ければ、第1の予測誤り信号を発生するステップと、 i.前記実際の分岐アドレスを前記分岐予測メモリにスト
アされた前記分岐場所アドレスと比較し、前記分岐命令
に対応する前記分岐が実行されておらず、かつ前記実際
の分岐アドレスが前記分岐場所アドレスと等しければ、
第2の予測誤り信号を発生するステップと、 j.前記第1または第2の予測誤り信号に応答して、前記
命令ブロックのための後続有効ビットおよび命令フェッ
チ情報を更新するステップと、 k.前記第1または第2の予測誤り信号に応答して、ター
ゲット分岐アドレスによって前記フェッチプログラムカ
ウンタ値を更新するステップとを含む、分岐予測方法。 - 【請求項2】前記予測されたターゲット分岐アドレス
は、前記プリフェッチされた命令ブロックの前記後続イ
ンデックスを後続の命令ブロックのアドレスタグに連結
することによって発生される、請求項1に記載の方法。 - 【請求項3】前記分岐場所アドレスは、先行の命令ブロ
ックからの後続インデックスを前記プリフェッチされた
命令ブロックのアドレスタグと連結することによって発
生される、請求項2に記載の方法。 - 【請求項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】前記第4の手段は、前記プリフェッチされ
た命令ブロックの前記後続インデックスを後続の命令ブ
ロックのアドレスタグと連結することによって前記予測
されたターゲット分岐アドレスを発生する、請求項4に
記載の装置。 - 【請求項6】前記第4の手段は、先行の命令ブロックか
らの後続インデックスを前記プリフェッチされた命令ブ
ロックのアドレスタグと連結することによって前記分岐
場所アドレスを発生する、請求項4に記載の装置。 - 【請求項7】バスインタフェースユニットと、 前記バスインタフェースユニットに結合され、複数個の
命令ブロックを受取るように構成された命令キャッシュ
メモリとを含み、前記命令ブロックの各々は複数個の命
令および命令フェッチ情報を含み、前記命令フェッチ情
報は、アドレスタグと、分岐ブロックインデックスと、
後続有効ビットを含む後続インデックスとを含み、 さらに、 前記命令キャッシュメモリに結合された分岐予測メモリ
と、 前記命令キャッシュメモリに結合された命令デコーダと
を含み、前記後続有効ビットが予め定められた条件に設
定されていなければ、フェッチプログラムカウンタ値が
増分されて、後続の命令ブロックをプリフェッチするた
めに前記命令キャッシュメモリに供給され、前記後続有
効ビットが予め定められた条件に設定されていれば、前
記命令フェッチ情報に含まれた情報に基づいて、予測さ
れたターゲット分岐アドレスが前記命令キャッシュメモ
リによって発生され、当該命令キャッシュメモリ内の前
記予測されたターゲット分岐アドレスは前記分岐予測メ
モリにストアされ、 さらに、 前記命令デコーダおよびレジスタファイルに結合された
分岐実行ユニットを含む処理ユニットを含み、前記分岐
命令は後に前記分岐実行ユニットによって実行され、前
記分岐実行ユニットは実行された分岐命令の実際の分岐
場所アドレスおよびターゲット分岐アドレスを発生し、
前記実際の分岐場所アドレスおよびターゲット分岐アド
レスは分岐予測メモリにストアされた分岐場所アドレス
および前記予測されたターゲット分岐アドレスとそれぞ
れ比較され、前記分岐命令で分岐が実行されており、か
つ比較された値が等しくなければ予測誤り信号を発生
し、当該命令ブロックに対する前記後続有効ビットおよ
び前記命令フェッチ情報は予測誤り信号に応答して更新
され、前記予測誤り信号に応答してターゲット分岐アド
レスによって前記フェッチプログラムカウンタ値を更新
する、装置。 - 【請求項8】前記命令キャッシュメモリは、前記バスイ
ンタフェースユニットに結合された命令ストアアレイ
と、前記命令ストアアレイに結合されたタグアレイと、
前記タグアレイに結合された後続部アレイと、前記後続
部アレイに結合されたブロック状態アレイとを含む、請
求項7に記載の装置。 - 【請求項9】前記命令キャッシュメモリは、PCラッチ、
増分器、およびMUXユニットを含むフェッチプログラム
カウンタをさらに含む、請求項8に記載の装置。 - 【請求項10】前記命令キャッシュメモリは前記フェッ
チプログラムカウンタに結合された命令フェッチ制御回
路をさらに含み、前記命令フェッチ制御回路は、前記増
分器によって発生される値、前記分岐実行ユニットによ
って供給される値、または再構成されたフェッチPC値を
PCラッチに選択的にロードするように前記MUXユニット
の動作を制御する、請求項9に記載の装置。 - 【請求項11】前記分岐予測メモリは、分岐ターゲット
FIFOおよび分岐場所FIFOを含む、請求項7に記載の装
置。 - 【請求項12】前記分岐予測メモリは、前記分岐ターゲ
ットFIFOと前記分岐実行ユニットに結合されたバスとに
結合されたターゲットPC比較器と、前記分岐場所FIFOと
前記分岐実行ユニットに結合されたバスとに結合された
分岐場所比較器とをさらに含み、前記ターゲットPC比較
器の出力と前記分岐場所比較器の出力とは制御回路に結
合される、請求項11に記載の装置。 - 【請求項13】a.複数個の命令ブロックを命令キャッシ
ュメモリにロードするステップを含み、前記命令ブロッ
クの各々は複数個の命令および命令フェッチ情報を含
み、前記命令フェッチ情報は予測されたターゲット分岐
アドレスと後続有効ビットとを示す後続インデックスを
含み、さらに、 b.前記命令キャッシュメモリにストアされた前記複数個
の命令ブロックの1つをプリフェッチするために、フェ
ッチプログラムカウンタ値を発生し命令キャッシュメモ
リに供給するステップと、 c.前記プリフェッチされた命令ブロックの前記後続有効
ビットが、前記プリフェッチされた命令ブロック内の分
岐命令で分岐が実行されると予測されたことを示す予め
定められた条件に設定されているかどうかを決定するス
テップと、 d.前記後続有効ビットが前記予め定められた条件に設定
されていれば、前記命令キャッシュメモリ内の前記分岐
命令の場所を示す分岐場所アドレスと予測されたターゲ
ット分岐アドレスとを発生するステップと、 e.前記後続有効ビットが前記予め定められた条件に設定
されていれば、前記予測されたターゲット分岐アドレス
および前記分岐場所アドレスを分岐予測メモリにストア
するステップと、 f.前記後続有効ビットが前記予め定められた条件に設定
されていなければ、前記フェッチプログラムカウンタ値
を増分し、増分されたフェッチプログラムカウンタ値を
前記命令キャッシュメモリに供給して後続の命令ブロッ
クをプリフェッチするステップと、 g.実行ユニットで前記分岐命令を実行し、実行された分
岐命令の実際の分岐アドレスおよびターゲット分岐アド
レスを発生するステップと、 h.前記実行ユニットによって発生された前記実際の分岐
アドレスを前記分岐予測メモリにストアされた前記分岐
場所アドレスと比較し、前記分岐命令で分岐が実行され
ており、かつ前記実際の分岐アドレスが前記分岐場所ア
ドレスと等しくないかまたは前記実行されたターゲット
分岐アドレスが前記分岐予測メモリにストアされた前記
予測されたターゲット分岐アドレスと等しくなければ、
第1の予測誤り信号を発生するステップと、 i.前記実際の分岐アドレスを前記分岐予測メモリにスト
アされた前記分岐場所アドレスと比較し、前記分岐命令
がで分岐が実行されておらず、かつ前記実際の分岐アド
レスが前記分岐場所アドレスと等しければ、第2の予測
誤り信号を発生するステップと、 j.前記第1または第2の予測誤り信号に応答して、前記
命令ブロックに対する後続有効ビットおよび命令フェッ
チ情報を更新するステップと、 k.前記第1または第2の予測誤り信号に応答して、ター
ゲット分岐アドレスによって前記フェッチプログラムカ
ウンタ値を更新するステップとを含む、分岐予測方法。 - 【請求項14】前記命令フェッチ情報はアドレスタグを
さらに含み、前記予測されたターゲット分岐アドレス
は、前記プリフェッチされた命令ブロックの前記後続イ
ンデックスを後続の命令ブロックのアドレスタグと連結
することによって発生される、請求項13に記載の方法。 - 【請求項15】前記分岐場所アドレスは、先行の命令ブ
ロックからの後続インデックスを前記プリフェッチされ
た命令ブロックのアドレスタグと連結することによって
発生される、請求項14に記載の方法。 - 【請求項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】前記命令フェッチ情報はアドレスタグを
さらに含み、前記第4の手段は、前記プリフェッチされ
た命令ブロックの前記後続インデックスを後続の命令ブ
ロックのアドレスタグと連結することによって前記予測
されたターゲット分岐アドレスを発生する、請求項16に
記載の装置。 - 【請求項18】前記命令フェッチ情報はアドレスタグを
さらに含み、前記第4の手段は、先行の命令ブロックか
らの後続インデックスを前記プリフェッチされた命令ブ
ロックのアドレスタグと連結することによって前記分岐
場所アドレスを発生する、請求項16に記載の装置。 - 【請求項19】複数個の命令ブロックを受取るように構
成された命令キャッシュメモリを含み、前記命令ブロッ
クの各々は複数個の命令および命令フェッチ情報を含
み、前記命令フェッチ情報は予測されたターゲット分岐
アドレスと後続有効ビットとを示す後続インデックスを
含み、さらに、 前記命令キャッシュメモリに結合された分岐予測メモリ
と、 前記命令キャッシュメモリに結合された命令デコーダと
を含み、前記後続有効ビットが予め定められた条件に設
定されていなければ、フェッチプログラムカウンタ値が
増分され、後続の命令ブロックをプリフェッチするため
に前記命令キャッシュメモリに供給され、前記後続有効
ビットが予め定められた条件に設定されていれば、予測
されたターゲット分岐アドレスが、前記命令フェッチ情
報に含まれた情報に基づいて前記命令キャッシュメモリ
によって分岐場所アドレスに対して発生され、前記予測
されたターゲット分岐アドレスおよび前記分岐場所アド
レスは前記分岐予測メモリにストアされ、さらに、 前記命令デコーダに結合された分岐実行ユニットを含む
処理ユニットを含み、前記分岐命令は前記分岐実行ユニ
ットによって実行され、前記分岐実行ユニットは、実行
された分岐命令の実際の分岐場所アドレスおよびターゲ
ット分岐アドレスを発生し、前記実際の分岐場所アドレ
スおよびターゲット分岐アドレスは分岐予測メモリにス
トアされた分岐場所アドレスおよび前記予測されたター
ゲット分岐アドレスとそれぞれ比較され、前記分岐命令
に対応する分岐が実行されており、かつ比較された値が
等しくなければ予測誤り信号を発生し、前記後続インデ
ックスは予測誤り信号に応答して前記命令キャッシュメ
モリの命令ブロックに対して更新され、前記予測誤り信
号に応答してターゲット分岐アドレスによって前記フェ
ッチプログラムカウンタ値を更新する、装置。 - 【請求項20】前記命令キャッシュメモリは、命令スト
アアレイと、前記命令ストアアレイに結合されたタグア
レイと、前記タグアレイに結合された後続部アレイと、
前記後続部アレイに結合されたブロック状態アレイとを
含む、請求項19に記載の装置。 - 【請求項21】前記命令キャッシュメモリは、PCラッ
チ、増分器、およびMUXユニットを含むフェッチプログ
ラムカウンタをさらに含む、請求項20に記載の装置。 - 【請求項22】前記命令キャッシュメモリは前記フェッ
チプログラムカウンタに結合された命令フェッチ制御回
路をさらに含み、前記命令フェッチ制御回路は、前記増
分器によって発生される値、前記分岐実行ユニットによ
って供給される値、または再構成されたフェッチPC値を
PCラッチに選択的にロードするように前記MUXユニット
の動作を制御する、請求項21に記載の装置。 - 【請求項23】前記分岐予測メモリは分岐ターゲットFI
FOおよび分岐場所FIFOを含む、請求項19に記載の装置。 - 【請求項24】前記分岐予測メモリは、前記分岐ターゲ
ットFIFOと前記分岐実行ユニットに結合されたバスとに
結合されたターゲットPC比較器と、前記分岐場所FIFOと
前記分岐実行ユニットに結合されたバスとに結合された
分岐場所比較器とをさらに含み、前記ターゲットPC比較
器の出力と前記分岐場所比較器の出力とは制御回路に結
合される、請求項23に記載の装置。 - 【請求項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】処理装置のための分岐命令をプリフェッ
チする方法であって、 a.複数個の命令ブロックを命令キャッシュメモリにロー
ドするステップを含み、前記命令ブロックの各々は複数
個の命令および命令フェッチ情報を含み、前記命令フェ
ッチ情報は、後続のブロックがフェッチされると予測さ
れたことを示すインデックスフィールドと分岐/非分岐
予測とを含み、さらに、 b.プリフェッチされる命令ブロックとして、前記複数個
の命令ブロックの1つをプリフェッチするために、フェ
ッチプログラムカウンタ値を発生し前記命令キャッシュ
メモリに供給するステップと、 c.前記プリフェッチされた命令ブロックの前記命令フェ
ッチ情報を読出し、前記プリフェッチされた命令ブロッ
クの前記命令フェッチ情報内にストアされた前記分岐/
非分岐予測が非分岐条件を示すならば前記フェッチプロ
グラムカウンタ値を増分し、前記プリフェッチされた命
令ブロックの前記命令フェッチ情報内にストアされた前
記分岐/非分岐予測が分岐条件を示すならば、前記プリ
フェッチされた命令ブロックの前記命令フェッチ情報に
ストアされた前記後続の命令ブロックで前記フェッチプ
ログラムカウンタ値を更新するステップと、 d.前記プリフェッチされた命令ブロックの前記命令フェ
ッチ情報内にストアされた前記分岐/非分岐予測が前記
分岐条件を示すならば、分岐場所アドレスと対応の予測
されたターゲット分岐アドレスとを分岐予測メモリにス
トアするステップと、 e.前記プリフェッチされた命令ブロックに含まれた分岐
命令を実行し、前記分岐命令の前記実行の結果として実
際のターゲット分岐アドレスを発生するステップと、 f.前記実際のターゲット分岐アドレスを前記分岐予測メ
モリにストアされた前記分岐命令に対応する前記予測さ
れたターゲット分岐アドレスと比較し、前記分岐命令に
対応する分岐が実行されており、前記比較の結果が、前
記分岐予測メモリにストアされた前記分岐場所アドレス
が前記実行された分岐命令に対応し、かつ前記予測され
たターゲット分岐アドレスが前記実際のターゲット分岐
アドレスと同等ではないことを示すとき、第1の更新信
号を前記命令キャッシュメモリに送って、前記インデッ
クスフィールドを前記対応の分岐命令のために前記実際
のターゲット分岐アドレスと交換するステップと、 g.前記分岐予測メモリにストアされた前記分岐場所アド
レスを前記実行された分岐命令のアドレスと比較し、前
記分岐命令に対応する前記分岐が実行されておらず、前
記比較の結果が、前記分岐命令の前記アドレスが前記分
岐予測メモリにストアされた前記分岐場所アドレスと等
しいことを示すならば、第2の更新信号を前記命令キャ
ッシュメモリに送って、前記分岐/非分岐予測を前記非
分岐条件に更新するステップとを含む、方法。 - 【請求項27】処理装置のための命令をプリフェッチす
るための装置であって、 a.複数個の命令ブロックを受取るように構成された命令
キャッシュメモリを含み、前記命令ブロックの各々は複
数個の命令および命令フェッチ情報を含み、前記命令フ
ェッチ情報は、後続の命令ブロックがフェッチされると
予測されたことを示すインデックスフィールドと分岐/
非分岐予測とを含み、さらに、 b.前記命令キャッシュメモリに供給されるフェッチプロ
グラムカウンタ値に基づいて、プリフェッチされる命令
ブロックとして、前記命令キャッシュメモリにストアさ
れた複数個の命令ブロックの1つをプリフェッチするた
めに、前記命令キャッシュメモリに作動的に接続された
フェッチプログラムカウンタと、 c.前記プリフェッチされた命令ブロックの前記命令フェ
ッチ情報を読出するために、前記フェッチプログラムカ
ウンタおよび前記命令キャッシュメモリに作動的に接続
された命令フェッチ制御ユニットとを含み、前記プリフ
ェッチされた命令ブロックの前記命令フェッチ情報内に
ストアされた前記分岐/非分岐予測が非分岐条件を示す
ならば、前記命令フェッチ制御ユニットは信号を前記フ
ェッチプログラムカウンタに送って、前記フェッチプロ
グラムカウンタ値を増分し前記命令キャッシュメモリに
供給し、前記プリフェッチされた命令ブロックの前記命
令フェッチ情報内にストアされた前記分岐/非分岐予測
を表わす前記データが分岐条件を示すならば、前記命令
フェッチ制御ユニットは信号を前記フェッチプログラム
カウンタに送って、前記フェッチプログラムカウンタ値
を、前記プリフェッチされた命令ブロックの前記命令フ
ェッチ情報にストアされた前記後続の命令ブロックで更
新し、さらに、 d.前記プリフェッチされた命令ブロックの前記命令フェ
ッチ情報内にストアされた前記分岐/非分岐予測を表わ
す前記データが前記分岐条件を示すならば分岐場所アド
レスと対応の予測されたターゲット分岐アドレスとをス
トアするための、前記命令キャッシュメモリに結合され
た分岐予測メモリと、 e.前記分岐予測メモリに結合された実行ユニットとを含
み、前記分岐命令が前記実行ユニットによって実行され
るとき、実際のターゲット分岐アドレスが発生され、前
記分岐命令に対応する分岐が実行されるとき、前記実際
のターゲット分岐アドレスが前記分岐予測メモリ内にス
トアされた前記予測されたターゲット分岐アドレスと比
較され、前記分岐場所アドレスが前記実行ユニットによ
って実行された前記分岐命令のアドレスと比較され、前
記実際のターゲット分岐アドレスが前記予測されたター
ゲット分岐アドレスと同等ではないかまたは前記分岐場
所アドレスが前記実行ユニットによって実行された前記
分岐命令の前記アドレスと同等ではないならば、前記命
令キャッシュメモリの前記インデックスフィールドが前
記実際のターゲット分岐アドレスで更新され、 前記実行ユニットによる前記分岐命令の実行の結果、前
記分岐命令に対応する前記分岐が実行されないこととな
ったとき、前記実行ユニットによって実行された前記分
岐命令の前記アドレスは前記分岐予測メモリにストアさ
れた前記分岐場所アドレスと比較され、前記実行ユニッ
トによって実行された前記分岐命令の前記アドレスが前
記分岐予測メモリにストアされた前記分岐場所アドレス
と同等でないならば、前記命令キャッシュメモリにスト
アされた前記分岐/非分岐予測が非分岐条件を示すよう
に更新される、装置。
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)
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)
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 |
-
1989
- 1989-06-06 US US07/361,870 patent/US5136697A/en not_active Ceased
-
1990
- 1990-05-18 ES ES90305401T patent/ES2111528T3/es not_active Expired - Lifetime
- 1990-05-18 AT AT90305401T patent/ATE162897T1/de active
- 1990-05-18 DE DE69031991T patent/DE69031991T2/de not_active Expired - Lifetime
- 1990-05-18 EP EP90305401A patent/EP0401992B1/en not_active Expired - Lifetime
- 1990-06-06 JP JP2149718A patent/JP2889955B2/ja not_active Expired - Lifetime
-
1994
- 1994-08-04 US US08/285,520 patent/USRE35794E/en not_active Expired - Lifetime
Non-Patent Citations (1)
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'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 |