JPH10232776A - 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ - Google Patents
複合分岐予測およびキャッシュ先取りをするマイクロプロセッサInfo
- Publication number
- JPH10232776A JPH10232776A JP9370222A JP37022297A JPH10232776A JP H10232776 A JPH10232776 A JP H10232776A JP 9370222 A JP9370222 A JP 9370222A JP 37022297 A JP37022297 A JP 37022297A JP H10232776 A JPH10232776 A JP H10232776A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- address
- prefetch
- microprocessor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
へのメモリ位置の先取りを開始して、キャッシュ・ヒッ
ト率を改善したマイクロプロセッサを提供する。これ
は、以前の命令の実行結果に基づいて前記キャッシュ先
取りが開始される、キャッシュ先取りが動的に制御され
るマイクロプロセッサである。 【解決手段】 高レベル・メモリ(11、307、30
5)からの命令又はデータの先取りが低レベル・キャッ
シュ(16)と組み合せて実行される。分岐目標バッフ
ァ(56)は分岐命令と関連する複数のエントリ(6
3)を有し、タグフィールドと目標フィールドに加え
て、分岐目標アドレスのフェッチと組み合せて実行され
るメモリ先取りのアドレスを含む先取り欄を含む。平滑
キュー及びタグ検査回路(27)を設けて、キャッシュ
・ミスと関連する命令、特に次の以後の分岐命令の目標
を検出するため関連分岐命令に続けて実行される命令に
質問することにより先取りフィールドの内容を更新す
る。
Description
の分野であり、特にキャッシュ・メモリ利用に関係す
る。
能な論理素子の分野では、近年顕著な性能改善を生じる
多くの改良が行なわれている。このような改良の一つは
パイプライン・アーキテクチャの実装であり、これは実
行の各段階で複数のマイクロプロセッサ命令が同時に処
理され、従って以後の命令(プログラム順序で)の処理
が前の命令の完了の前に開始されている。各個々の命令
の処理はフェッチから実行まで複数のマシン・サイクル
を必要とするにも係わらず、パイプライン化のため、マ
イクロプロセッサにより実行される命令の実効速度は単
一パイプライン・マイクロプロセッサではマシン・サイ
クル当たり1 命令に近づく。いわゆるスーパースカラー
・アーキテクチャは並列に動作する複数のパイプライン
を有効に有し、さらに高い理論的性能レベルを提供す
る。
クルたった実行時まで未知であるため、条件分岐命令は
パイプライン・アーキテクチャのマイクロプロセッサに
複雑性を与える。このような状況下では、マイクロプロ
セッサは条件が解明されるまで分岐後の命令のフェッチ
を停止し、パイプラインに「泡」の空きの段(すなわち
可能性のある命令処理スロット)を導入するか、又は代
わりに、推測が正しくないと決定された場合にその現在
の命令のパイプラインを「フラッシュ」しなければなら
ない危険を冒して、パイプラインを充填するために命令
を推測的にフェッチ(実際には条件を推測して)しなけ
ればならない。
イプラインを充填する命令の推測実行の利点は、特に長
い又は複数パイプラインのアーキテクチャでは、パイプ
ライン・フラッシュの性能劣化より標準的にはまさって
いる。それ故多くの現代のマイクロプロセッサは分岐命
令の振る舞いをある確度で予測するある種の分岐予測技
術に従う。分岐予測に対する公知の方式は、予測が時間
又は履歴で変化しない「静的」予測と、分岐予測が前に
実行された分岐の結果に従って行われる「動的」予測と
を含む。
は、他の命令の分岐結果ではなく、それ自身の分岐履歴
を基に分岐命令の結果を予測する。この方式は一般的に
分岐目標バッファにより現代のマイクロプロセッサに組
み込まれている。従来の分岐目標バッファ、すなわちB
TBは、最近出会った分岐命令の識別子(「タグ」)、
これに基づいて予測を行なう分岐履歴関連コード、及び
分岐が実行されるものとして予測された場合にフェッチ
される次の命令の目標アドレス(「実行されない」予測
に対しては次の連続アドレスがフェッチされるべきアド
レスである)を各々記憶するエントリのキャッシュ型表
である。分岐命令を含む命令のブロックをフェッチした
時、そのアドレスをBTB中のタグと照合してこの命令
を含むブロックが前に出会ったかどうかを決定する;そ
うならば、その命令に対するBTB中で指示される予測
コードに応じて、次のフェッチは目標アドレスにより指
示される命令のブロックに対応する。新たに出会った分
岐命令は、BTBに履歴がないため静的に予測される。
命令の実行と完了時に、BTBが作成され(最初の場
合)又は変更され(以後の場合)、その命令の次の場合
の結果を予測する際に分岐命令の実際の結果を反映す
る。
改良する他の公知の技術は、1段階以上のレベルのキャ
ッシュ・メモリの実装である。当該技術において基本的
なように、現代のマイクロプロセッサを基にしたシステ
ムはオンチップ及び外部キャッシュ・サブシステムの両
方の高速ランダム・アクセス・メモリをキャッシュ・メ
モリとして利用している。キャッシュ・メモリは遅い主
メモリからマイクロプロセッサによりフェッチされたメ
モリ位置の近傍にあるメモリ位置の内容を記憶するため
に通常使用される。例えば、4バイト・データ語を主メ
モリから検索する度に、32バイト・メモリ・アクセス
を実行して所要の4バイト・データ語を得て、これを3
2バイト・キャッシュ線路として近傍のデータと共にキ
ャッシュに記憶する。以後、キャッシュ線路中のデータ
語へのアクセスは従って主メモリ・アクセスを必要とす
る場合より迅速に実行される。標準的な場合にそうであ
るように、連続的なメモリ・アクセスが近傍のメモリ位
置へ行われている範囲では、キャッシュ中の近傍メモリ
位置内容の存在はオフチップ・メモリへの同様のアクセ
スを実行する際にこうしなければ必要とされるであろう
多数のウェイト状態を著しく減少可能である。
プロセッサを基にしたシステムはそのキャッシュを複数
レベルに従って構成している。例えば、従来のマイクロ
プロセッサはオンチップ「レベル0」データ・キャッシ
ュ、専用のレベル1オンチップ命令及びデータ・キャッ
シュ、及び外部キャッシュ・サブシステムの統合レベル
2キャッシュを含む。この配置では、メモリ・アドレス
は連続的に各レベルへ付加し、低レベル・キャッシュで
のキャッシュ・ミス(すなわち、キャッシュが所要アド
レスを含んでいない)の場合にはメモリ・アドレスが次
の高次のレベルのキャッシュに付加される。全レベルで
キャッシュ・ミスすると、主メモリがアクセスされ、標
準的にはデータ又は命令コードの全キャッシュ・ライン
を検索することにより以後のサイクルでそこへのキャッ
シュ・アクセスを可能とする。勿論、キャッシュ・ミス
に伴う不利益(ウェイト状態)は高次のレベルのキャッ
シュ・ミスに対してより厳しくなる。例えば、レベル0
でミスしレベル1でのヒットには1ウェイト状態が付随
し、レベル1でミスしレベル2でのヒットには2ウェイ
ト状態が付随するが、レベル2統合キャッシュでのキャ
ッシュ・ミスの場合には主外部メモリのアクセスに25
ウェイト状態を必要とする。従ってキャッシュ・ヒット
率がマイクロプロセッサとそのシステムの全体性能に格
別の重要性を有するようになる。
メモリの規則的な連続アクセスが相対的に高いキャッシ
ュ・ヒット率を有するように、キャッシュにコピーされ
るメモリは前にアクセスされたメモリ位置へのその近さ
のために標準的に選択される。しかしながらこれも上述
したように、多くの従来プログラムは分岐命令を含み、
プログラムの流れは必ずしも連続的ではない。従って、
実行されるであろうと予測された分岐命令の場合のよう
に、フェッチされる次の命令が最近の順序にない時には
キャッシュ・ミスが共通して発生するのみならず、主メ
モリ・アクセスを必要とする時にはそのようなミスから
生じる不利益は相当なものとなる。
キャッシュ・ヒット率が改良されたマイクロプロセッサ
及びシステムを提供することである。
してキャッシュ・メモリへのメモリ位置の先取りを開始
するマイクロプロセッサとシステムである。
果に基づいてキャッシュ先取りが開始されるマイクロプ
ロセッサとシステムを提供することである。
動的に制御されるマイクロプロセッサとシステムを提供
することである。
その図面を参照して当業者には明らかとなる。
ッファ・エントリに少なくとも1 個のキャッシュ先取り
フィールドを含ませることにより、実行の動的分岐予測
に分岐目標バッファを利用したマイクロプロセッサに実
装される。先取りフィールドは目標命令のフェッチと組
み合わされて先取りされるメモリ位置を指示し、これは
分岐の実行に続く命令のキャッシュ・ミスを追跡するこ
とにより分岐命令の実行完了時にキャッシュ先取りアド
レスにより満たされる。
の望ましい実施例を実装した例示のスパースカラ・パイ
プライン・マイクロプロセッサ10を含む例示のデータ処
理装置300が記述されている。本発明は各種のアーキ
テクチャのマイクロプロセッサに利用出来ると考えられ
るため、装置300とマイクロプロセッサ10のアーキ
テクチャは本明細書では単なる1 例として記載されてい
ることを理解すべきである。それ故、当業者は本明細書
を参照して、本発明を前記他のマイクロプロセッサ・ア
ーキテクチャに容易に実装可能であると考えられる。さ
らに、本発明は単一チップのマイクロプロセッサ及びマ
イクロコンピュータ又は複数チップ実装で実現でき、前
記集積回路の製造はシリコン基板、絶縁体上のシリコ
ン、ガリウム砒素、及び他の製造技術、さらにMOS、
CMOS,バイポーラ、BiCMOS又は他の素子実装
により実現されると考えられる。
バスBUSにより他のシステム装置に接続される。本例
では外部バスBUSは単一のバスとして示されている
が、PCIローカル・バス・アーキテクチャを利用した
従来のコンピュータで公知のように異なる速度とプロト
コルを有する複数のバスを表わす外部バスBUSももち
論考えられる。装置300は、通信ポート303(モデ
ム・ポート及びモデム、ネットワーク・インターフェー
ス、等を含む)、画像表示装置304(画像メモリ、画
像プロセッサ、画像モニタを含む)、動的ランダム・ア
クセス・メモリ(DRAM)により標準的に実装される
主メモリ装置305、入力装置306(キーボード、ポ
インティング装置、及びそのインターフェース回路を含
む)、ディスク装置308(ハードディスク・ドライ
ブ、フロッピー・ディスク・ドライブ、CD−ROMド
ライブを含む)のような従来のサブシステムを含む。装
置300の標準的な実装は標準的には外部キャッシュ・
メモリ307を含み、これはキャッシュ・タグ比較器と
制御回路と組み合せて実装された高速メモリであり、従
って期待されるメモリ・アクセスは遅い外部主メモリ3
05へのアクセス無しに迅速に実行できる。それ故、図
1のシステム300は現在当該技術で一般的な従来のデ
スクトップ・コンピュータ又はワークステーションに対
応するものと考えられる。もち論、当業者には認められ
るように、マイクロプロセッサ10の他のシステム実装
も本発明から利益を受けられる。
へ接続されたバス・インターフェース装置(BIU)1
2を含み、この装置はマイクロプロセッサ10と装置3
00中の他の要素との間の通信を制御し実行する。BI
U12は、この機能を実行するための適当な制御及びク
ロック回路を含み、これらは動作速度を増加するための
書き込みバッファを含み、又内部マイクロプロセッサ動
作の結果をバスBUSタイミング制約と同期させるよう
なタイミング回路を含む。マイクロプロセッサ10も装
置クロックSYSCLKを基にクロック位相を発生する
クロック発生及び制御回路20を含み、本例では、クロ
ック発生及び制御回路20は装置クロックSYSCLK
からバス・クロックBCLKとコア・クロックPCLK
を発生する。
ッサ10は3レベルの内部キャッシュ・メモリを有し、
これらの内の高位のものはレベル2キャッシュ11とし
て内部バスによりBIU12に接続されている。本例で
は、レベル2キャッシュ11は統合キャッシュであり、
マイクロプロセッサ10により与えられるバス・トラフ
ィックの多くがレベル2キャッシュ11を介して行われ
るようBIU12を介してバスBUSからの全てのキャ
ッシュ可能なデータ及びキャッシュ可能な命令を受取る
よう構成されている。ある種のバス読取書込みを「キャ
ッシュ不可能」として取り扱うことにより、マイクロプ
ロセッサ10もキャッシュ11まわりのバス・トラフィ
ックを実行する。図2に示すように、レベル2キャッシ
ュ11は2個のレベル1キャッシュ16に接続される、
すなわちレベル1データキャッシュ16d はデータ専用
であり、一方レベル1命令キャッシュ16i は命令専用
である。マイクロキャッシュ18は本例では完全二重ポ
ートのレベル0データ・キャッシュである。主変換ルッ
クアサイド・バッファ(TLB)19はBIU12を介
したレベル2キャッシュ11へ及び主メモリへのメモリ
・アクセスを制御し、このような制御はアドレス変換用
のメモリ中のページ表へのアクセスの順序付けを含む。
TLB19は又ページ表のキャッシュとしての役割も果
たす。命令マイクロ変換ルックアサイド・バッファ(μ
TLB)22とデータ・マイクロ変換ルックアサイド・
バッファ(μTLB)38は、各々従来の方法でレベル
1 命令キャッシュ16i とレベル1データ・キャッシュ
16d へのアクセス用に論理データ・アドレスを物理ア
ドレスに変換するために設けられる。
0はスパースカラ型式で、従って複数の実行装置を含
む。これらの実行装置は、条件分岐、整数及び論理演算
処理用の2 個のALU420 、421 、浮動小数点装置
(FPU)31、2 個のロード・ストア装置400 、4
01 、及びマイクロシーケンサ48を含む。2 個のロー
ド・ストア装置40は真に並列のアクセスをするためマ
イクロキャッシュ18への2 個のポートを利用し、又レ
ジスタ・ファイル39中のレジスタへのロード及びスト
ア演算も実行する。当該技術で従来の方法のように、レ
ジスタ・ファイル39はプログラマ使用に利用可能な汎
用レジスタと、コード・セグメント・レジスタCSを含
む制御レジスタも含む。
ックを有する7 段の複数パイプラインにより制御され
る。パイプラインの段は以下の通りである: F フェッチ:この段は命令アドレスを発生し、命
令キャッシュ又はメモリから命令を読み取る PD0 プレデコード段階0:この段は3 個までのフェ
ッチされたx86型命令の長さと開始位置を決定する PD1 プレデコード段階1 :この段はx86命令バイ
トを取り出し、デコード用に固定長に再コード化する DC デコード:この段はx86命令を原子演算(A
Ops)に翻訳する SC スケジュール:この段は4 個までのAOpsを
適当な実行装置(FPU31を含む)に割り当てる OP オペランド:この段はAOpsにより指示され
るレジスタオペランドを検索する EX 実行:この段はAOpsと検索オペランドにし
たがって実行装置を実行させる WB ライトバック:この段は実行結果をレジスタ又
はメモリに記憶させる
段はマイクロプロセッサ10内の各種の機能ブロックに
より実行される。フェッチ装置26は、以後詳細に説明
される分岐目標バッファ(BTB)56による分岐予測
技術に従うものを含めて、レベル1 命令キャッシュ16
i へ付加するための命令マイクロ変換ルックアサイド・
バッファ(μTLB)22による命令ポインタからアド
レスを発生する。命令キャッシュ16i は命令データの
流れをフェッチ装置26へ発生し、この装置は又命令コ
ードを所要の順序でプレデコード0段28とプレデコー
ド1段32へ与える。これら2つの段は別々のパイプラ
イン段として協動し、共に3個までのx86命令を配置
しこれをデコーダ34へ付加する。プレデコード0段28
は3個までの可変長x86命令の寸法と位置を決定し、
その間プレデコード1段32は複数バイト命令のデコー
ドを容易にするため固定長形式に再コード化する。本例
のデコード装置34は、4個の命令デコーダを含み、こ
の各々がプレデコード1段32から固定長x86命令を
受取り、実質的にRISC命令と等価である1個から3
個の原子演算(AOps)を発生可能である。スケジュ
ーラ36はデコード装置34の出力のデコード・キュー
から4個までAOpsを読取り、これらのAOpsを適
当な実行装置に割り当てる。オペランド装置44はスケ
ジューラ36とマイクロコードROM46からマルチプ
レクサ45を介して入力を受け取り、命令の実行に使用
するためのレジスタオペランドをフェッチする。加え
て、本例によると、オペランド装置44は記憶する用意
が出来ているレジスタに結果を送信するためオペランド
転送を実行し、ロード及びストア型式のAOpsに対し
てアドレス発生を実行する。
ROM46は、一般的には1サイクル中で実行する最後
のAOpsであるマイクロコード・エントリAOpsの
実行時にALU42とロード/ストア装置40を制御す
る。本例では、マイクロシーケンサ48はマイクロコー
ドROM46に記憶されたマイクロ命令中を進行し、複
雑な又はまれに使用されるx86命令、セグメント又は
制御レジスタを変更するx86命令、例外と割り込みの
処理、複数サイクル命令(REP命令、全てのレジスタ
をPUSH、POPする命令)のようなマイクロコード
化されたマイクロ命令に応答して制御する。
時及びリセットと他の事象時にマイクロプロセッサ10
の動作の正当性を確認するためJTAG走査検査の動
作、及びある種の組み込み自己検査(BIST)機能を
制御するために回路24を含む。
ロプロセッサ10は、外部メモリ305、307、又は
レベル2キャッシュ11から、レベル1命令キャッシュ
16 i とレベル1データ・キャッシュ16d のような下
位レベルへ命令又はデータの先取りを制御するための先
取り制御論理23も含む。以後詳細に説明するように、
先取り制御論理23は、パイプライン中の以後の分岐命
令の目標及び期待されるキャッシュ・ミスに対応する先
取り情報により、レベル1命令キャッシュ16 i からの
分岐命令の目標のフェッチと同時にレベル2 キャッシュ
11へのアクセスを開始する。図1に図示するように、
先取り制御論理23は線路PF0/1上のフェッチ装置
からの可能な先取りアドレスと制御情報を受取り、バス
PFA上のTLB19へ先取り要求とアドレスを発生す
る。
うに、本発明の望ましい実施例による分岐目標フェッチ
と組み合せて実行される先取りは、フェッチを開始する
分岐命令の従前の発生に従うプログラム命令の実行を監
視することにより決定される。従って、マイクロプロセ
ッサ10は、線路GRBR(分岐に対して)と線路TC
K(分岐を含む全ての命令にに対して)上で実行を完了
している命令に対して各種の実行装置から情報を受取る
平滑キュー及びタグ検査回路27をさらに含む。命令の
実行の結果と他の因子を基に、平滑キュー及びタグ検査
回路27はバスUPD上にフェッチ装置26へ更新情報
を発生する。以下に更に詳細に説明するように、バスU
PD上で通信される情報は、従前の分岐命令と関連して
いる、先取りが有効な命令(例えば重大なキャッシュ・
ミスを含む命令)のアドレスを含む。フェッチ装置26
と先取り制御論理23はこの情報を利用して分岐目標と
同時に先取りを開始し、従って同一の順序の命令による
以後のパスでのキャッシュ・ミスの可能性は避けられ
る。
い実施例による先取り制御論理23と組み合せたフェッ
チ装置26の構成と動作が記載されている。上述したよ
うに、フェッチ装置26はデコード用にフェッチされる
次の命令のアドレスを決定する機能を実行する。このよ
うなため、フェッチ装置26は命令がマイクロプロセッ
サ10のパイプラインにロードされる順序を決定し、本
発明の本実施例では従って特に分岐予測によるアドレス
の推測実行を制御する。
サ52により選択されるいくつかの方法の内の一つに従
って発生される論理フェッチ・アドレスFAに基づいて
いる。フェッチ・アドレスFAは、次の連続アドレスを
デコード用にフェッチすべき場合には、フェッチ装置2
6のフェッチ・ポインタ50の内容から単に発生され
る。図2に示すように、フェッチ・ポインタ50は、出
力をマルチプレクサ52の1つの入力とそして増分器5
1に接続したフェッチ装置26中のレジスタである。増
分器51はフェッチ・アドレスの値を増分的に進行さ
せ、フェッチ・ポインタ50の可能な記憶と次のフェッ
チでの使用のために、マルチプレクサ58の入力へ増加
したフェッチ・アドレスを付加する。マルチプレクサ5
8は次のアクセス用にフェッチ・ポインタ50の更新し
た内容のソースが選択される。フェッチ・アドレスFA
を発生する第2の方法は、マルチプレクサ52への実行
装置(例えばマイクロシーケンサ48)の内の一つによ
るものであり、例えば、フェッチ装置26により予測さ
れない分岐の場合である。この値も、適切にフェッチ・
ポインタ50に記憶するためマルチプレクサ58の入力
に付加される。
6の各機能に与えられてデコード用の次の命令のフェッ
チを制御する。例えば、フェッチ装置26は命令μTL
B22と通信し、これは以前に変換した位置を指してい
る場合に論理フェッチ・アドレスと整合する物理アドレ
スPAを返す。又は論理フェッチ・アドレスFAはフェ
ッチ装置26の外部のTLB19により物理アドレスに
変換される。いずれにせよ、命令アドレスIAはフェッ
チ装置26によりレベル1命令キャッシュ16 i に与え
られてそこから命令コードを検索する。勿論、レベル1
命令キャッシュ16i でキャッシュ・ミスが発生した場
合、物理アドレスは統合レベル2キャッシュ14へ与え
られ、このレベルでキャッシュ・ミスの場合には主メモ
リへ行く。命令アドレスIAに応答して、レベル1 命令
キャッシュ16i は、プレデコード0段28へ結果とし
て与えるためにフェッチ装置26の命令バッファ60へ
命令コード列CODEを与える。各命令アドレスIAが
16命令のブロックをアドレスする場合のため、命令バ
ッファ60は16命令の容量を有する。
される命令に対してそれ以上のフェッチを停止する命令
ブレーク検査回路62のようなその外の従来の機能も含
む。フェッチ装置26は又、論理フェッチ・アドレスF
Aが現在のコード・セグメントの境界の限界の外側のア
ドレスを指しているかどうかを決定するため、コード・
セグメント限界検査回路64も含む。
グラム順序ではない方法で次のフェッチ・アドレスを発
生する回路を含む。図2に示すように、フェッチ装置2
6は戻りアドレス・キュー55を含み、これはいくつかの
位置を有する後入れ先出し(LIFO)メモリで、ここ
でサブルーチン・コールの戻りアドレスとサブルーチン
戻りがサブルーチンの推測実行で使用するため記憶され
る。
は又分岐目標バッファ(BTB)56を含み、これは分
岐命令の現在の例を推測する分岐の以前の履歴を指示す
るデータと共に、フェッチ・アドレスFAとして使用す
る分岐命令の目標アドレスを記憶し、従ってパイプライ
ンが可能な限り充填状態で保持されるようにするキャッ
シュ型配置のエントリである。BTB56は、各現在の
フェッチ・アドレスFAが最近にフェッチされた分岐命
令を指しているかどうかを決定することによりこれを実
行し、またこのために分岐履歴が推測実行で使用するた
めにBTB56に記憶される。当該技術において公知の
ように、推測に失敗した分岐(又は条件分岐の結果を待
機しているパイプライン・ストール)は消失実行機会で
計測して重大な不利益を生じるため、図1のスパースカ
ラ・マイクロプロセッサ10のような深くパイプライン
されたマイクロプロセッサでは推測実行は重要な性能強
化である。
は2レベル型式のもので、引用により本明細書に含まれ
る1996年12月10日提出の「マイクロプロセッサ
の分岐予測用の複数全体パターン履歴表」という名称の
当社索引番号(TI−23791P)から派生した共願
出願に記述されているような、分岐履歴情報により呼び
出される分岐コードを記憶するための複数パターン履歴
表53と組み合せて動作する。特定のアドレスに対して
分岐予測を発生する際に使用されるパターン履歴表53
の内の適当なものの選択は、分岐命令が含まれるプログ
ラムの型式に応じて選択論理80により行われる。図2
に図示するような、選択論理80は、コード・セグメント
・レジスタCSからの線路U/S上で通信されるよう
に、現在の分岐命令を含むプログラムの型式に関する情
報に応答してパターン履歴表53中から選択する。加え
て、図示するように、線路FA上のフェッチ・アドレス
に対応する分岐命令のメモリ位置を基にして適切なパタ
ーン履歴表53を選択する際に、線路FA上の実際のフ
ェッチ・アドレスを使用してもよい。平滑キュー及びタ
グ検査回路27と実行装置からのバスUPDは更新論理
70に印可され、この更新論理は実行時に評価された分
岐命令の成功又は失敗に応答してBTB56のエントリ
中の分岐履歴とパターン履歴表53中に記憶された予測コ
ードを更新する。このようにして、分岐予測成功率は分
岐結果の使用を介して、また適切なパターン履歴表53
の選択で同種のプログラム(例えば、応用プログラム、
共用ライブラリ、オペレーティング・システム機能)に
より示される分岐挙動の同一性を利用することにより改
善される。
ドを基にした分岐予測に応答して、BTB56はバスB
R TRG上のマルチプレクサ57へ目標命令アドレス
を与え、戻りアドレス・キュー55はバスRA上でマル
チプレクサ57へ戻り命令アドレスを与える。マルチプ
レクサ57の出力はマルチプレクサ52の第3 入力へ、
そしてマルチプレクサ58へ与えられ、従ってフェッチ
・カウンタ50は更新される。従ってマルチプレクサ5
2への3本の入力は次のフェッチ・アドレスFAの3種
類の入力源を与え、このアドレスは物理アドレスと対向
する論理アドレスである。
測をしてバスBR TRG上に分岐目標アドレスを発行
する際には、BTB56は又先取り制御論理23へバス
PF0、PF1上に先取りアドレスと関連する制御情報
を与える。先取りアドレスと制御情報は各分岐命令毎に
BTBエントリ内に収められ、従って分岐命令の目標に
対してフェッチ・アドレスと共に発行される。先取り制
御論理23は、バスPFA0、PFA1上のアドレスと
してバスPF0、PF1上でBTB56から受取った情
報に応答して適当な先取りを開始する。先取り制御論理
23は先取り走査を実行するためのアドレスと制御信号
を発生する回路から構成され、これはバスPF0、PF
1上に与えられた先取りアドレスの性質とバスPFA
0、PFA1の所要受信人に応じて必要とされる変換回
路を含む。例えば、BTB56に記憶された先取りアド
レスが論理アドレスの場合、先取り制御論理23は論理
先取りアドレスを物理アドレスに変換する例えば8エン
トリのオーダーのマイクロTLBを含み、この場合バス
PFA0、PFA1はレベル2キャッシュ11に直接付
加してもよい。又は、先取り制御論理23はバスPF
0、PF1上で受信した先取り論理アドレスをバスPF
A0、PFA1を介してTLB19へ単に付加して先取
りを開始してもよい。さらに別な方法では、BTB56
は先取り用の物理アドレスを記憶し、この場合先取り制
御論理23は単に適当な物理アドレスをバスPFA0、
PFA1上でレベル2キャッシュ11へ転送する。いず
れの場合でも、当業者はこの説明に与えた所要のアーキ
テクチャに対して適当とされる適切な先取り制御論理2
3を容易に実装可能であるものと考える。本発明の望ま
しい実施例によるマイクロプロセッサ10の図2の2本
のバスPFA0、PFA1により明らかなように、2つ
の同時先取りが分岐目標フェッチ操作と並列に開始され
る。
シュ11は当該技術において公知のように2重ポート化
されたタグ・アレイを含むことが望ましく、従って、例
えば必要に応じて先取り制御論理23により発行された
2つの同時先取りに応答して、複数タグ比較が同時に実
行される。レベル2キャッシュ11中のデータ表はチッ
プ面積を節約するために単一ポート化されることが望ま
しいと考えられるが、ここでの同時ヒットの可能性が小
さいこととこのレベルでの同時ヒットは両方ともクリテ
ィカル・パスではないことを考えると、単に要求をキュ
ーに入れることによっても処理出来る。又は、性能の観
点から同時先取りのキュー入れが受入可能な場合には、
レベル2キャッシュ11は単一ポート化タグ・アレイを
含んでも良い。必要に応じて2つの先取りを同時に変換
するために使用しなければならない場合、特に先取り制
御論理23がマイクロTLBを含まない場合には、TL
B19も2重ポート化しても良い。
数パターン履歴表53と組み合せたBTB56の構成を
以下に説明する。この例のBTB56は複数エントリ6
3を有する4ウェイ・セットアソシエイティブ・キャッ
シュ・メモリで、簡単のため図3では1ウェイのみを図
示してある。BTB56は、線路FA上のフェッチ・ア
ドレスを受け取り、フェッチ・アドレスが指している適
当なエントリ63を選択するよう結合されているセレク
タ61を含む。セレクタ61は、デコーダ、タグ比較器
又は簡単なマルチプレクサによるような、フェッチ・ア
ドレスからBTB56中のエントリ63の選択を実行す
る従来の技術に従って構成されている。
i の配置を図示しているが、全てのエントリ630 から
63n は同様に配置されていることを理解すべきであ
る。エントリ63i は、特定の分岐命令の論理フェッチ
・アドレスFAによりこれを識別するために使用するタ
グフィールドTAGを有し、これに対してセレクタ61
は入力の論理フェッチ・アドレスの一部を合わせる。タ
グフィールドTAGはその対応する分岐命令の論理フェ
ッチ・アドレスFAの選択ビットを直接記憶するか、又
は代わりに当該技術において既知のようにこれらの選択
論理アドレス・ビットの論理的組み合せに対応させても
よい。標準的には、タグフィールドTAGは線路アドレ
スとフェッチ線路中の命令のバイト・オフセットを指示
するオフセットを含む。エントリ63i は又当該技術に
おいて一般的な正当ビットや1個以上のLRUビット
(複数ウェイBTB用)のようなその外の制御ビットも
含む。
ドレスの論理アドレスを含む目標フィールドTARGE
Tを有する。図3に戻ると、「実行(taken) 」と予測さ
れた分岐命令に対応するそのエントリ63に対してTA
GETの部分の内容がバスTRGI上を入出力論理69
に送られる。図2に戻ると、このアドレスは次いで上述
したようにバスBR TRG上をマルチプレクサ57へ
与えられる。しかしながら、分岐が「非実行(not take
n) 」と予測されると、単に次の連続論理アドレス(す
なわちフェッチ・ポインタ50の内容)が次の論理フェ
ッチ・アドレスFAとしてマルチプレクサ52により選
択される。
T及び対応するmビット分岐履歴フィールドBHを含
む。履歴/副型ビットTがセットされておらず、従って
エントリ63i により識別された分岐命令が条件分岐で
はないことを示している場合、分岐履歴フィールドBH
は命令の無条件分岐の型式(すなわち、JUMP、CA
LL、又はRETURN)を指示するコードを記憶す
る。履歴/副型選択ビットTがセットされていると、エ
ントリ63i に対応する命令が条件分岐の場合、分岐履
歴フィールドBHは対応する命令の最近の分岐の結果
(すなわち分岐履歴)を記憶している。分岐履歴フィー
ルドBHに記憶された分岐履歴は、命令の実行の完了時
に決定された関連分岐命令の実際の分岐履歴と、まだ実
行が完了していない分岐命令の例に対しては予測結果か
ら構成される推測分岐履歴の両方を含む。加えて、引用
により本明細書に含まれる1996年6月28日提出の
共願の米国特願第60/020、844号に記載されて
いるように、エントリ63i は、誤予測からの復帰に使
用するため分岐履歴フィールドBHに推測分岐履歴ビッ
トの数を指示するカウンタBH CTRを含む。
TARGETそれ自体により指示される命令のフェッチ
と同時に実行されるべき先取りの性質と位置を制御す
る、各種の追加のビットがエントリ63i (そして、も
ち論BTB56の全てのエントリ63)に設けられる。
これらの先取りフィールドを図4と関連して以下にエン
トリ63i に対して説明する。
タを先取りするための必要なフィールドを含む。以下に
詳細に説明するように、これらの先取りの目標アドレス
は、パイプラインの以後の命令、特に以後の分岐の目標
及び最初に実行した時にキャッシュ・ミスしたものに関
連して決定される。発明の本実施例によると、任意のメ
モリ・アドレスからの2つの先取りが同時に実行され、
前記2つの先取りフィールドPF0,PF1が、エント
リ63i の先取り制御部分PF CTL内に設けられて
いるエントリ63i 制御情報内に含まれている。図4に
図示するように、先取り制御部分PF CTLは制御部
分PF0C、PF1Cを含み、その各々が実行される関
連先取り(もし存在すれば)のアクセス、型式、発生を
制御する。例えば、制御部分PF0C、PF1Cの各々
はアクセス部分ACC及び先取り型式部分TYPを含
み、その各々は2ビットを有し、これは以下のようにコ
ード化される:
み操作を受け入れるよう特定のメモリ・ブロックに準備
させる操作を指す。発明の望ましい実施例によるデータ
の先取りは、データのブロックを検索するか、又は(及
び)書込みを受け入れるブロックを準備するようにして
このように実行される。アクセス部分ACCと型式部分
TYPの他のコード組み合せはこの例では定義されてい
ない。
分PF0C、PF1Cの各々は図4に示すようにビット
VT、VNTから構成される付勢部分も含む。セットさ
れた時には、ビットVT、VNTは、エントリ63i へ
の対応する分岐命令が各々実行又は非実行として予測さ
れた時にその関連する先取りが付勢されていることを指
示する。例えば、ビットVT、VNTのどちらもセット
されていない場合、関連する先取りはそのどちらの予測
に対しても付勢されておらず、ビットVT、VNTの両
方がセットされている場合、関連する先取りはどちらの
予測にも付勢されており、さらに、もち論ビットVT、
VNTの一方が他方の排他でセットされている場合、関
連する先取りは対応する予測に対して先取りされ他方に
対しては消勢される。従って、予測したプログラム流れ
に応じて先取りが選択的に付勢されるようビットVT、
VNTの包含は更なる制御機能を提供する。
つの先取り(PF0、PF1)の各々は命令又はデー
タ、又は両方である。さらに、2つの先取り制御部分P
F0C、PF1Cが設けられているため、2つの先取り
は他方とは独立したフェッチで動作する。エントリ63
i の先取り制御部分PF CTLはさらに最小最近使用
ビットLRUを含み、これは2ウェイ・キャッシュのL
RUビットと同様に、現在設定されている2つの先取り
の内のどちらが古いかを指示する。異なる先取りを付勢
する場合には、最小最近使用ビットLRUは新たな先取
り情報により重ね書きされるべき先取りPF0、PF1
の一方を指す。
メモリ・アドレスを記憶する先取りアドレス部分PF0
ADDR、PF1 ADDRを含む。加えて、発明の
本実施例によると、エントリ63i は又先取りカウンタ
PF0 CTR、PF1 CTRを含み、これらは各々
先取りPF0、PF1と関係している。先取りカウンタ
PF0 CTR、PF1 CTRは2ビット・カウンタ
のような小さなカウンタで、先取りの結果に関する情報
を保持する。勿論、先取りのキャッシュ履歴でさらなる
粒子性が望ましい場合には、先取りカウンタPF0 C
TR、PF1CTRを大きくしても良い。発明の本実施
例では、先取りカウンタPF0 CTR、PF1 CT
Rはレベル2キャッシュ・ミスであるその関連先取りと
従って主メモリ305へのアクセスを必要とすることに
応答して各々増分される。逆に、先取りカウンタPF0
CTR、PF1 CTRは、探求データ又は命令が既
にキャッシュにあるため、関連する先取りが不要な度に
減少される。先取りカウンタPF0 CTR、PF1
CTRが零に到達すると、先取り制御部分PFCTL中
のその制御ビットPF0C、PF1Cを不正状態(0
0)にセットして、新たな先取りをそこへ設定させる。
3i は任意のメモリ・アドレスから命令又はデータを先
取りするよう適当なエントリを含む。勿論、多くの標準
的なプログラムの演算は連続位置の記憶メモリからの命
令の実行を含む。それ故、発明の望ましい実施例による
と、エントリ63i の先取り制御部分PF CTLは又
目標フィールドTARGET(実行分岐に対して)に記
憶した分岐目標アドレス又は次の連続アドレス(非実行
分岐に対して)を暗黙先取りアドレスとして使用するキ
ャッシュ線路の先取りを付勢する暗黙先取り付勢ビット
T0、T1、N0、N1を含む。発明の本実施例では、
先取り付勢ビットT0、T1は実行されると予測された
分岐に関係し、先取り付勢ビットN0、N1は実行され
ないと予測された分岐と関係する。
ュ・メモリは「キャッシュ線路」と呼ばれるデータの単
位によりロードされ、このキャッシュ線路は付近のデー
タの局所的記憶を提供するよう標準的なメモリ・アクセ
スより大きい。例えば、図1の統合レベル2キャッシュ
11中のキャッシュ線路の寸法は32バイトで、これは
8データ語に対応する。しかしながら、命令を緊密に追
随する連続命令が必要な時にキャッシュ中になくなるよ
うに、特定の命令がキャッシュ線路の終了部近くに配置
されると、この場合連続命令の内の一つのフェッチはキ
ャッシュ・ミスを生じ易い。発明の本望ましい実施例で
は、エントリ63i の先取り制御部分PF CTL中の
先取り付勢ビットT0、T1、N0、N1は目標アドレ
スに続く1つ又は2つのキャッシュ線路の先取り(各々
ビットT0、T1の場合)、又はプログラム順序の次の
連続命令に続く1つ又は2つのキャッシュ線路(各々ビ
ットN0、N1の場合)の先取りを可能とする。勿論、
アーキテクチャーに応じて、本例のような分岐予測と関
係して又は関係せずにより多くの又はより少ない先取り
付勢ビットをエントリ63i に設けても良い。
は、ビットT0はセットされると、分岐目標の後の次の
キャッシュ線路の先取りを実行し、ビットT1はセット
されると、分岐目標の次の第2 のキャッシュ線路の先取
りを実行する。同様に、実行されないと予測された分岐
に対しては、ビットN0はセットされると、次の連続命
令を含むものの後の次のキャッシュ線路の先取りを実行
し、ビットN1はセットされると、次の連続命令を含む
ものの後の第2 のキャッシュ線路の先取りを実行する。
これらの暗黙キャッシュ・アドレスからは1 つのキャッ
シュ線路先取りのみが許可されていると考えられる。例
えば、ビットT0、T1の両方がセットされた場合、分
岐目標の後の第1 のキャッシュ線路のみが先取りされ
る。それ故、発明の本実施例によると、条件分岐命令の
両方の予測状態に対して、分岐目標アドレス又は次の連
続アドレスを超えて関連する第1 又は第2 のキャッシュ
線路を先取りしても良い。これらの先取りと関係するア
ドレスは分岐目標から暗黙に示されているため、エント
リ63i の寸法は相対的に小さく保持される。
ンタT0 CTR、T1 CTR、N0 CTR、N1
CTRが先取り付勢ビットT0、T1、N0、N1の
各々と関係している。先取りカウンタT0 CTR、T
1 CTR、N0 CTR、N1 CTRは、最後の2
回を実行した時に関連した先取りがキャッシュ・ミス又
はキャッシュ・ヒットのどちらを生じたかに対応するカ
ウント値を記憶するため、上述した先取りカウンタPF
0 CTR、PF1 CTRと同様に動作する。先取り
カウンタPF0 CTR、PF1 CTRの場合のよう
に、先取りカウンタT0 CTR、T1 CTR、N0
CTR、N1 CTRは必要に応じて2 ビット以上で
構成されている。これも先取りカウンタPF0 CT
R、PF1CTRの場合のように、先取りカウンタT0
CTR、T1 CTR、N0CTR、N1 CTR
は、関連する先取りがキャッシュ・ミスである時に増分
され、また関連する先取りがキャッシュ・ミスである時
に減少される。先取りカウンタT0 CTR、T1 C
TR、N0 CTR、N1 CTRは、が零に到達する
と、これに関連する先取りは無視されるのが望ましい
(探索内容は既に下位レベル・キャッシュに多分存在し
ていて先取りを不要のものとしているため)。
で利用される。例えば、アドレスされた先取りフィール
ドPF0 ADDR、PF1 ADDRの片方又は両方
は分岐予測と関連付けされる必要はないが、代わりにエ
ントリ63i の対応するタグフィールドTAGと合うフ
ェッチ・アドレスの各例で先取りされる。さらに別例で
は、アーキテクチャにより処理される先取りの量とキャ
ッシュ・ヒット成功率に応じてこれより多い又は少ない
先取りフィールドがエントリ63i と関連して設けられ
る。このような別の実装方法は本明細書を参照して当業
者には明らかであると考えられる。
るBTB56の動作を以下に簡単に説明する。線路FA
上の分岐命令に対応するフェッチ・アドレスを受取る
と、セレクタ61はそのエントリ63が、従来の方法で
分岐命令のフェッチ・アドレスと合うTAG部分を有し
ているかどうかを決定する。勿論、このタグ比較は、B
TB56がそのように構成されていれば、セット・アソ
シエーティブ方式で行われる。分岐命令に対して整合す
るタグフィールドTAGが存在しない場合(すなわち、
これがその分岐命令の最初の事例である場合)、BTB
56は予測を行なわず、入出力論理69からの線路AT
R上にこれを示し、この場合次のフェッチ・アドレスの
選択は静的に行われる。BTB56のこのような動作は
従来の技術によっている。
トリ63のタグ部分TAGと整合する条件分岐命令に対
しては、整合するエントリ63の分岐履歴フィールドB
HのkビットがPHT53に与えられる。分岐命令が関
係しているプログラムの種類に応じてPHT53の適当
なものを選択する選択論理80の動作により、線路TR
GI上の整合したエントリ63からの目標フィールドT
ARGETからの分岐目標アドレスと共に、分岐予測コ
ードが線路TNT上をBTB入出力論理69へ与えられ
る。BTB入出力論理69は、実行されると予測された
分岐に対して線路TRGI上の値に対応するマルチプレ
クサ57(図2)へバスBR TRG上の分岐目標アド
レスを与える。制御信号(図示せず)が実行されないと
予測された分岐に対して発生され、従ってマルチプレク
サ52はフェッチ・ポインタ50の出力を次のフェッチ
・アドレスとして選択する。予測が常に「実行」であ
る、BTB56中に整合エントリ63を有する無条件分
岐命令に対しては、そのエントリの目標フィールドTA
RGETの目標アドレスがバスTRGI上に与えられ、
バスBR TRG上の分岐目標アドレスとしてBTB入
出力論理により発行される。いずれにせよ、分岐が実行
又は非実行としてどちらに予測されても、次に期待され
る命令のフェッチは次のサイクルの新たなフェッチ・ア
ドレスの提供と共に開始する。
測されたものであれ)に対して、分岐命令の制御フラッ
グと属性が命令バッファ及び制御60へのバスATRへ
与えられ、パイプラインに沿った分岐命令と共に送られ
る。これらの制御フラッグと属性は、命令が分岐である
ことを指示するためにセットされるタグを含む。加え
て、分岐の目標であるものを識別するため、各命令に関
連してキャッシュ・ミスが発生したかどうかを識別する
ため、そして又望ましくはキャッシュ・ミスが命令又は
データ・アクセスに関連しているかどうかを指示するた
め非分岐命令に対してもフラッグはセットされる。以下
で詳細に説明するように、実行と書き戻しパイプライン
段からの命令の平滑時にこれらの命令タグの評価を基に
して先取りは設定され制御される。
6に対応するエントリ63を有する各分岐命令は、次の
命令のフェッチ(予測に応じて次の連続アドレス又は分
岐目標のどちらか)と組み合せて1つ以上の先取りを開
始する。先取りアドレスと制御情報は各分岐命令に対し
てBTBエントリ内に収められ、従って分岐命令の目標
のフェッチ・アドレスと共に発行される。図4に関して
上述したように、この先取りは現在の目標アドレスの次
の1つ以上のキャッシュ線路の先取りを含む(先取り制
御部分PF CTLの先取りビットT0、T1、N0、
N1の制御下で)か、またはエントリ63i の部分PF
0、PF1に記憶されたアドレスを基にした命令又はデ
ータの先取りを含む。暗黙アドレス(すなわち先取り制
御部分PF CTLの先取りビットT0、T1、N0、
N1により指示されるもの)を使用した先取りは、分岐
目標アドレスに続くキャッシュ線路は先取りフィールド
PF0 ADDR、PF1 ADDRに記憶したアドレ
スからの命令又はデータよりも前に必要とされることが
多いため、アドレスフィールドPF0 ADDR、PF
1 ADDRと関連する先取りより優先権を有すると考
えられる。
スPF0、PF1上にメモリ・アドレス(分岐目標から
暗黙設定されるか又は整合エントリ63i に記憶されて
いるかのどちらか)を与える。先取り制御論理23は、
メモリ・アクセスを開始するためTLB19に付加され
たバスPFA0、PFA1上の論理アドレスのように、
バスPF0、PF1上のBTB56から受取った情報に
応答して適当な先取りを開始する。発明の望ましい実施
例によるマイクロプロセッサ10の図2の2つのバスP
FA0、PFA1により明らかなように、レベル2キャ
ッシュ11が2重ポート化したタグ比較器を含む場合に
は2つの同時先取りが分岐目標フェッチ操作と並列に開
始される。
実施例による卒業キュー及びタグ検査回路27の構成と
操作を以下に説明する。平滑キュー及びタグ検査回路2
7の全体的な機能と目的は、命令がその実行と書込み段
を完了した時(すなわち、パイプラインから「卒業し
た」)に命令に質問し、この質問に応じてBTB56中
のエントリを確立し変更して有効な先取りを実行するこ
とである。
令がパイプラインを進行する時の命令と関連する複数ビ
ットの制御情報に対応する。図面の都合上、これらの複
数ビットはパイプラインの制御情報に対応しているた
め、バスPCTRLと呼ばれる。パイプライン化された
マイクロプロセッサの技術で公知のように、各命令はパ
イプラインに沿って流れていく時に命令(デコードされ
たもの)、その型式、例外情報、等を識別する制御情報
又は信号をタグ付けされる。図5のエントリ83 i は以
下で説明する本発明の望ましい実施例と関連して有用な
追加の制御タグと共に、このような従来の情報を含む。
命令識別子x86ID、を含み、これは本例では現在の
命令と関連するx86命令(AOpではない)を識別す
る従来のコードである。他の従来の制御タグと情報もエ
ントリ83i に設けられる。加えて、エントリ83i は
その関連命令に対して行われた論理(又は代わりに物
理)メモリ・アドレスを指示するフェッチ・タグLAを
含む。本発明の望ましい実施例によると、エントリ83
i は又分岐識別子タグBR IDも含み、これは関連命
令が分岐命令であるかどうかを指示し、そうである場合
には、その分岐に固有の識別コードを与える。同様に、
各エントリ83i は分岐目標識別子タグBRTRG I
Dを含み、これは関連命令が分岐の目標であるかどうか
を指示し、そうである場合には、これが目標である分岐
の識別コードを与える。このようにして、エントリ83
i への質問は完了した時点での特定の分岐命令の目標を
識別可能である。エントリ83i は順番のマイクロプロ
セッサでは分岐目標識別子タグBRTRG IDを含む
必要はないが、順番ではないマイクロプロセッサでは分
岐目標識別子タグBRTRG IDは必要である。
そのフェッチの際にキャッシュ・ミスが関連しているか
どうかと、その型式とを指示するタグも含む。図1と関
連して上述したように、マイクロプロセッサ10と装置
300はレベル0マイクロキャッシュ18からレベル2
オンチップ・キャッシュ11まで、さらに多分外部キャ
ッシュ・メモリ307の各種のキャッシュ・メモリを含
む。エントリ83i はキャッシュ・ミス・タグL1 M
ISS、L2 MISSを含み、これは関連命令のフェ
ッチがL1とL2でのキャッシュ・ミス各々含んでいる
かどうかを指示する。外部キャッシュ・メモリ307に
対してキャッシュ・ミスが発生した場合を指示するため
別のキャッシュ・ミス・タグを代わりに設けても良い。
マイクロプロセッサ10と装置300のキャッシュ・ハ
イアラーキに一致して、より高いレベルのキャッシュ・
ミス・タグのセットは又全てのより低いレベルのキャッ
シュ・アクセスもミスしたことを指示している。アクセ
スが高レベルでミスであるかどうかの決定は全ての低レ
ベル・キャッシュ・アクセスも又ミスの場合にのみ行わ
れるため、例えば、キャッシュ・ミス・タグL2 MI
SSは、低レベル・キャッシュ・ミス・タグL1 MI
SSもセットされた場合にのみセットされる。エントリ
83i は又キャッシュ・ミスが命令キャッシュ16i 又
はデータ・キャッシュ16d のどちらに対してであるか
を指示する型式ビットI/Dも含む。
て通信される各エントリ83の情報は、関連命令の実行
と書き戻しに続いて平滑キュー及びタグ検査回路27に
より受取られる。図5に図示するように、平滑キュー及
びタグ検査回路27は2個の分岐キュー92a、92b
と組み合せた平滑キュー先取り更新制御論理90を含
む。分岐キュー92a、92bはパイプラインから「平
滑した」分岐命令に対する制御情報を記憶する従来のF
IFOキューである。以下で明らかとなるように、発明
の望ましい実施例によるとマイクロプロセッサ10での
次の連続分岐命令の目標の平滑時に分岐命令は分岐キュ
ー92aから削除されるため、分岐キュー92aは2つ
のエントリのみを含む。しかしながら、順番ではないマ
イクロプロセッサでは、分岐キュー92a、92bの各
々は2つ以上のエントリを有することが望ましい。
述する方法で命令を平滑させ、分岐キュー92a、92
bに沿った分岐命令の進行を制御し、各種の制御ビット
を更新するためエントリ83の各種のフィールドに質問
する連続又は組合せ論理である。図5から明らかなよう
に、平滑キュー及びタグ検査回路27は、命令実行に続
いてこれによりBTB56、PHT53等が更新される
従来の分岐予測結果及び他の情報と組み合せた、更新バ
スUPDへ渡される制御信号を発生する。平滑キュー先
取り更新論理90は、この説明を参照した当業者により
特定のアーキテクチャーに対して容易に構成可能である
と考えられる。
による平滑キュー及びタグ検査回路27の動作を以下に
詳細に説明する。図6に図示した平滑キュー及びタグ検
査回路の動作は、単一の分岐命令(本明細書では分岐命
令Ixとして参照される)に対して与えられる。それ
故、平滑し先取り情報を待機している複数分岐命令に対
しても適当に同じプロセスが並列に動作していることを
理解すべきである。
し、ここで平滑キュー先取り更新制御論理90は最近平
滑した命令(図1及び図5に示すようにバスGR BR
に沿って通信)の分岐識別子タグBR IDに質問し、
判断95で最近平滑した命令が分岐命令であるかどうか
を決定する。最近質問された分岐識別子タグBR ID
がその命令が分岐ではないことを指示している場合(判
断95がNO)、制御はプロセス96へ渡されて次の命
令を待機し、この時プロセス94は繰り返されて再び分
岐識別子BR IDに質問する。
と決定されると(この例では、判断95がYESとなる
ように、質問される分岐命令Ixの時)、平滑した分岐
命令Ix(すなわちこれと関連する制御情報)が分岐キ
ュー92aに押し出され、パイプラインの以後の命令か
ら可能な先取りアドレス及び命令の到着を待機する。分
岐命令Ixが分岐キュー92aにいったん配置される
と、次にプロセス100が実行されて分岐目標識別子タ
グBRTRG IDに質問する。判断101は、質問命
令が分岐キュー92aに配置された現在の分岐命令の分
岐目標であるかどうかを決定する。そうでない場合(判
断101がNO)、連続して以後平滑する命令に対して
プロセス100が繰り返される。
平滑したかどうかを決定する判断101で、分岐命令I
xの次のフェッチ時に可能な先取りの解析が作動され
る。図6に図示したプロセスによると、先取りキュー9
2a中の分岐命令Ixに対する先取り質問/更新プロセ
ス105が実行される。プロセス105aはプロセス1
02より開始し、ここで各平滑命令のエントリ83に対
するバスTAG CK上の各種のタグの状態が平滑キュ
ー及びタグ検査回路27の平滑キュー先取り更新制御論
理90により解析され質問される。
グラム中の次の分岐の目標に対応し、キャッシュ・ミス
と関係する、以後の命令に対する分岐命令に関連してい
る。発明の本実施例によると、次の分岐の目標に達する
まで、又はキャッシュ・ミスが検出されるまで各平滑分
岐命令(例えば分岐命令Ix)は分岐キュー92aに保
持される。同様に、分岐キュー92aを去った各命令
は、次の分岐の目標に達するまで(まだ到達していない
場合)、又はキャッシュ・ミスを検出するまで、又は命
令が分岐キュー92bの全長に沿って進行して新たな分
岐命令によって押し出されるまで、分岐キュー92bに
保持される。適当なタグの読み取り後、判断103は、
最近平滑した命令が分岐命令、特に分岐命令Ixに続く
次の分岐の目標であるかどうかを決定する。そうでない
場合(判断103がNO)、次いで判断104が実行さ
れて、最近の平滑命令が何らかの長さのキャッシュ・ミ
スと関連しているかどうかを決定する。判断104がN
Oの場合、制御はプロセス102に戻って、ここでバス
TCKは次の平滑命令を質問される。
は、最近の平滑命令がパイプライン中の分岐命令Ixに
続く分岐命令の分岐目標であることを意味している(す
なわち、その分岐目標識別子タグBRTRG IDがセ
ットされ、その次の分岐命令を指している)。この場
合、キャッシュ・ミス・タグL1 MISS、L2 M
ISS、及び型式ビットI/Dが判断107で解析され
てこの分岐目標のフェッチが任意のレベルのキャッシュ
・ミスを生じたかどうかを決定する。そうである場合
(判断107がYES)、平滑キュー及びタグ検査回路
27は、この分岐目標と関連する命令の先取りは分岐命
令Ixの次の発生時に有用であると結論し、このような
場合、プロセス112で、分岐命令Ixの制御情報と組
み合せたそのミス・タグL1 MISS、L2 MIS
S及び型式ビットI/Dと共にこの目標命令に対するエ
ントリ83の論理アドレスフィールドLAを保存する。
キャッシュ・ミスが分岐命令Ixの目標(実行又は非実
行)から次の1又は2キャッシュ線路中のアドレスから
の命令キャッシュ・ミスの場合、プロセス112はキャ
ッシュ・ミスを適切な先取り付勢ビットT0、T1、N
0、N1と関連付けて分岐目標アドレスを使用してキャ
ッシュ線路の先取りを付勢する。次いで分岐命令Ixは
プロセス114で分岐キュー92aから分岐キュー92
bへ進み、これに更に先取りが関連しているかどうか決
定する。反対に、次の分岐命令の目標がキャッシュ・ミ
スを起こさない場合(判断107がNO)、目標の先取
りは有用でなく、したがってプロセス114は直接実行
され、分岐命令Ixを分岐キュー92aから取り除き、
これを分岐キュー92bへ押し込む。
ではなく(判断103がNO)、キャッシュ・ミスを起
こした場合(判断104はYES)、判断109が次に
実行されて分岐キュー92a中の分岐命令Ixに対する
エントリが一番古いものであるかどうか決定する。その
場合、プロセス112が分岐命令Ixと関連して実行さ
れて、先取りに関連する適当な制御情報(すなわち、ミ
ス・タグの状態、先取りがデータ又は命令であるかの指
示、実行及び非実行指示子の設定、等)と共に最近平滑
した命令のエントリ83のフェッチ・タグLAにより指
定されたアドレスへ先取りを関連させる。次いでプロセ
ス114を実行して分岐キュー92aから分岐命令Ix
を分岐キュー92bへ移動し、必要とされる他の適当な
先取りを待機する。
に、分岐命令Ixがキュー92a中で最も古参の分岐命
令でない場合(判断109がNO)、先取りの関連付け
は最古参のキュー92a中の分岐命令に対して行われ
る。次いで平滑キュー先取り更新制御論理90がこれに
従って分岐キュー92a中の各々のエントリを進行させ
る。この場合、判断111は必ずしもNOではなく、従
って分岐命令Ixは分岐キュー92aに留まって次の平
滑命令を待機する。
はキャッシュ・ミスと関連されることにより分岐命令I
xが分岐キュー92aから移動されたかに係わらず、プ
ロセス114に続いて、先取りキュー92b中の分岐命
令Ixの先取り質問/更新プロセス105bが実行され
る。先取り質問/更新プロセス105bは、第2の先取
りが分岐命令Ixと関連されていることを除いては、先
取り質問/更新プロセス105aと同一である。勿論、
分岐キュー92b中の命令に対する先取り関連をトリガ
する同一の条件が分岐キュー92a中の命令との前記関
連付けも生じさせる。このような場合、発明の望ましい
実施例によると、同一のキャッシュ・ミスに対して複数
の先取り関連付けが行われる。次の分岐の分岐目標が平
滑するまで(これがまだ発生していない場合)、キャッ
シュ・ミスに出会うまで、又は満員の時に他の命令のこ
れへの追加により分岐キューから押し出されるまで、分
岐命令Ixは分岐キュー92bに留まる。
が分岐キュー92bを出る時には、先取りアドレスと関
連制御情報とともにその制御情報は、分岐命令Ixの実
行と完了に関するその分岐予測の結果と他の情報と共に
バスUPD上で更新論理70へ送り戻される。
及びタグ検査回路27から分岐命令Ixに対する識別及
び制御情報と共に先取り情報を受取り、BTB56の対
応するエントリ63を更新し、先取りフィールドを適切
に更新する。ここで図7を参照すると、BTB56を更
新してこの先取り情報を含ませるための更新論理70に
より実行される更新プロセスの例が以下に説明される。
命令Ixに対する平滑キュー及びタグ検査回路27から
のバスUPD上の制御及びアドレス情報を受取る。上述
したように、発明の望ましい実施例によると、この情報
は2つの一般的なアドレス先取りに対するアドレス及び
制御情報を含む(各々分岐キュー92a、92bで発生
された先取りに対応する先取りPFA、PFBとして図
7に参照されている);加えて、この情報は先取り付勢
ビットT0、T1、N0、N1の制御下で暗黙アドレス
先取りに対するアドレス及び制御情報を含む。勿論、バ
スUPD上の情報は分岐命令Ixに関する識別情報も含
むため、更新論理70はプロセス120でこの命令に対
するBTB56中の適切なエントリ63を選択可能であ
る。この時点で従来の方法で更新論理70により更新す
るため分岐予測の結果もバスUPD上に与えられる。
BTB56中のエントリ63に質問して、その先取りビ
ットのどちらか(PF0、PF1)が空であるかどうか
を決定する。図4に戻ると、判断121は対応するエン
トリ63の先取り制御部分PF CTL中の先取り制御
ビットPF0C、PF1Cの先取りアクセス部分ACC
に質問することにより実行されて、どちらか又は両方が
不正(00)コードを含んでいるかどうかを決定する。
暗黙アドレス先取りの場合、カウンタT0 CTR、T
1 CTR、N0 CTR、N1 CTRが質問されて
どれかが0にセットされているかどうか決定する。これ
らの条件のどれもが真でない場合(判断121がN
O)、以下で説明するように制御は判断125へ渡され
る。判断121がYESの場合、空の先取りフィールド
PF0、PF1は新たに受取った先取りPFA、PFB
の一方のアドレス及び制御情報を受取る。
3の先取りフィールドPF0、PF1の空のものがロー
ドされる。特に、平滑キュー及びタグ検査回路27によ
り識別された先取りPFA、PFBの一方の論理アドレ
ス(又は場合によっては物理アドレス)はアドレスフィ
ールドPF0 ADDR、PF1 ADDRの適当な方
に記憶され、対応する制御ビットPF0C、PF1Cが
セットされて先取りが命令であるか又はデータ(又は両
方)であるかを指示する。暗黙アドレス先取りの場合、
対応する先取り付勢ビットT0、T1、N0、N1が付
勢される。判断121により決定されるようにBTB先
取りフィールドの一方のみが空で、2つの可能な新たな
先取りPFA、PFBが利用可能な場合、プロセス12
2は所定の優先度方式にしたがって実行される。例え
ば、キャッシュ・ミス・タグL1MISS、L2 MI
SSの状態を使用して互いに対する先取りPFA、PF
Bの優先度を決定しても良い。この場合、高レベルのキ
ャッシュ・ミスを有する新たな先取りPFA、PFBの
一方(例えば、レベル2キャッシュ11でのキャッシュ
・ミスはレベル1キャッシュ16i でのキャッシュ・ミ
スより高レベルのキャッシュ・ミスである)を分岐命令
Ixに対するBTB56のエントリ63の空の先取りフ
ィールドPF0、PF1へロードする。又は、先取りP
FA(すなわち、平滑キュー及びタグ検査回路27によ
って定義される最初の、又は最近接の先取り)が常に優
先度を有するものとしても良い、何故ならこれは対応す
る分岐命令Ixにプログラム順序で最も近いからであ
る。プロセス122に続いて、判断123を実行して、
新たな先取りPFA、PFBがエントリ63にロードさ
れるよう残っているかどうかを決定する(これに対する
空のエントリPF0、PF1がない)。そうでない場
合、更新は終了する。そうである場合(判断123がY
ES)、判断125が次に実行される。
断125は、例えば外部キャッシュ・ミスのような高い
優先度によって残りの新たな先取りPFA、PFBが分
岐命令Ixに対するエントリ63にロードされたかどう
かを決定する。従って判断125は、キャッシュ・ミス
・タグL1 MISS、L2 MISSを先取りカウン
タPF0 CTR、PF1 CTRの値と比較し、先取
りフィールドPF0、PF1の現在の内容と置き換えら
れるように先取りのどれかが十分高い優先度のものであ
るかどうかを決定する。例えば、レベル2キャッシュ・
ミスはカウンタ値10、01、00の既存の先取りより
高い優先度を有するように割り当てられ、一方レベル1
キャッシュ・ミスは01又は00のカウンタ値を有する
既存の先取りより高い優先度を有するよう割り当てられ
る。その場合(判断125がYES)、かつ2つの先取
りカウンタPF0 CTR、PF1 CTRの値が等し
い場合、更新論理70はプロセス126でエントリ63
の先取り制御部分PF CTRのLRUビットを検査
し、先取りPF0、PF1のどちらが最近にロードされ
たかを決定し、プロセス128で新たな高優先度先取り
PFA、PFBの適当なアドレスを最も使用されない先
取りフィールドPF0、PF1にロードする。関連カウ
ンタPF0 CTR、PF1 CTRの値は、その前の
アクセスがキャッシュ・ミスであることを考慮して10
のような中間値に初期化される。勿論、先取りカウンタ
PF0 CTR、PF1 CTRの値が等しくない場
合、最低の優先度を有する先取りフィールドPF0、P
F1が新たな情報を受取る。次いでプロセス130でこ
の先取りフィールドに対してLRUビットがセットさ
れ、判断125が実行されて他の新たな先取りPFA、
PFBを他のフィールドに適当な場合にロードするかど
うかを決定する。
B56のエントリ63を置き換えるのに十分な優先度で
はない時(判断125がNO)、先取りを開始するため
の目的の更新論理70によるBTB56の更新は完了す
る。
したようにエントリ63が更新されると、先取り制御論
理23と組み合わされてBTB56により先取りが実行
される。この操作はプロセス132から開始し、ここで
BTB56のセレクタ及びタグ比較器61(図3)は各
新たな命令のフェッチ・アドレスをBTB56中のタグ
フィールドTAGの内容と比較する。判断133で合う
うものがない限りプロセス132が繰り返される。線路
FA(図2及び図3)上で整合するフェッチ・アドレス
を受取ると(判断133がYES)、これは多分同じ分
岐命令をフェッチすることを指示しているが、プロセス
134を実行して分岐命令用の適当な分岐目標アドレス
を発生する。無条件分岐の場合、整合したエントリ63
の目標フィールドTARGETが分岐目標アドレスとし
ての役割を果たす。条件分岐は上述したようなPHT5
3と組み合せたBTB56により予測されたその結果を
有し、実行されると予測された分岐に対する分岐目標ア
ドレスとして整合エントリ63の目標フィールドTAR
GET又は実行されないと予測された分岐に対する次の
連続フェッチ・アドレスのどちらかを選択する。次いで
どちらの場合であれ分岐目標アドレスが線路FA上の次
のフェッチ・アドレスとして使用され、上述し、かつ従
来の方法のように、プロセス136でμTLB22に、
次いでレベル1命令キャッシュ16i に印可される。
ントリ63で指示される先取りは図8に図示するよう
に、プロセス136での次の命令のフェッチと並列に先
取り制御論理23により実行される。その中でも、先取
りアドレスフィールドPF0ADDR、PF1 ADD
Rに対応する先取りと、先取り制御部分PF CTLの
先取りビットT0、T1、N0、N1により指示される
暗黙キャッシュ線アドレスを使用した先取りは、内部帯
域が許す場合には並列に実行され、又は代わりに優先方
式に従って連続的に実行される。例えば、分岐目標に対
して暗黙キャッシュ線アドレスを使用した先取り(すな
わち、先取りビットT0、T1、N0、N1による先取
り)は最高の優先度を有している、何故ならそれは分岐
の目標後直に実行される命令に関係しており、従ってす
ぐに低レベル・キャッシュ(例えばレベル1命令キャッ
シュ16i )にアクセスされ配置されることが望まし
い。発明の望ましい実施例によると、先取り制御論理2
3が各種の先取りの順序と優先度を決定する。
定され、又整合エントリ63の先取りフィールドPF
0、PF1に記憶された先取りに対しては、プロセス1
380、1381 が図8で並列に実行されるよう図示さ
れ、ここで先取り制御論理23がアドレスフィールドP
F0 ADDR、PF1 ADDRの内容を直接又は間
接にレベル2キャッシュ11へ付加する(すなわち、物
理アドレスとして直接的に、又はTLB19を介して間
接的に)。上述したように、プロセス1380 、138
1 は必要に応じて先取り制御論理23の制御下で連続的
に実行される。説明の都合上、先取りPF0を実行する
マイクロプロセッサ10の動作を以下に説明するが、フ
ィールドPF1 ADDRで指定されたアドレスの先取
りも同様に実行されることを理解すべきである。
PF0 ADDRの内容は、内容が物理アドレスに対応
する場合には直接的に、又はその内容が論理アドレスに
対応する場合はTLB19を介して、上述した方法で先
取り制御論理23によりレベル2キャッシュ11に付加
される。判断139で、レベル2キャッシュ11の従来
のタグ比較回路は、PF0 ADDRのアドレスに従っ
て先取りすべきデータ又は命令がその中に存在するかど
うか(すなわちキャッシュ・ヒット又はキャッシュ・ミ
ス)を決定する。キャッシュ・ミスの場合(判断139
がNO)、先取り制御論理23はプロセス142でカウ
ンタPF0 CTRの内容を増分させ、場合に応じて外
部キャッシュ307又は主メモリ305へのメモリ・ア
クセスが通常の方法で開始される。レベル2キャッシュ
・ミスのこの場合、エントリ63の先取りフィールドP
F0中のアドレスに従って先取り制御論理23により要
求された先取りはマイクロプロセッサ10の全体性能を
著しく改善する、何故ならキャッシュ・ミスによる厳し
い不利益(25又はそれ以上のサイクルに及ぶ)はあま
り重大でない時、現在のプログラムがアドレスフィール
ドPF0 ADDR中のアドレスが指しているデータ又
は命令を必要とする時より十分前に生じるためである。
合、先取りすべきデータ又は命令はレベル2キャッシュ
11又はより低いところ(すなわちレベル1キャッシュ
16の内の一方)にあり、先取り制御論理23はプロセ
ス140でカウンタPF0 CTRの状態を減少させ
る。この時点で必要に応じて所要情報がより低いレベル
のキャッシュ(例えばレベル1キャッシュ16の一方)
へ移動される。判断141で、先取り制御論理23はP
F0 CTRの状態を質問し、その内容が零の場合、プ
ロセス143を実行して対応する先取りエントリPF0
を不正化する(制御部分PF0Cのアクセス・ビットA
CCを00にセットすることにより)。このプロセス
は、エントリ63の先取りフィールドPF0により指示
される先取りは性能を顕著に改善するにはあまり有効で
はないことを示している、何故なら先取りにより探求さ
れたデータ又は命令は既に低レベル・キャッシュ・メモ
リにあるからである。カウンタPF0 CTRの状態が
零でない場合、先取りフィールドPF0は正当のままで
あるが、情報は既に低レベル・キャッシュ・メモリに存
在しているため、これ以上のメモリ・アクセスは不要で
ある又は有用ではない。
故、マイクロプロセッサと対応するシステムの性能に著
しい改善が得られる。特に、情報が実際に必要とされる
時よりも十分前に低レベル・キャッシュ・メモリへ移動
される可能な先取りアドレスを識別する本発明の利点に
より、キャッシュ・システムの性能(オンチップ及びオ
フチップの両方)は非常に改良される。これは、パイプ
ラインを流れる命令の早期経路の結果を使用することに
より、又分岐予測機構と組み合せて発明の望ましい実施
例による知能的な方法で得られる。それ故、通常のシス
テム機能には最小の影響のみでかつ相対的に小さなコス
トでこれらの顕著な改良が得られると考えられる。
してきたが、これらの実施例に対する変更や修正、本発
明の利点と有効点を得る変更や修正は本明細書と図面を
参照する当業者には明らかになるものと考えられる。こ
のような変更と修正は本明細書の特許請求の範囲に請求
する本発明の範囲内にあるものと考えられる。
クロプロセッサとシステムのブロック形式の電気配線
図。
プロセッサ中のフェッチ装置のブロック形式の電気配線
図。
プロセッサ中の分岐目標バッファ、パターン履歴表、及
び関連回路のブロック及び概略形式での電気配線図。
バッファ中のエントリの内容の図。
プロセッサ中の平滑キュー及びタグ検査回路の構成のブ
ロック形式での電気配線図。
ー及びタグ検査回路の動作を図示する流れ図。
バッファ中の更新論理の動作を図示する流れ図。
プロセッサ中の先取り制御論理の動作を図示する流れ
図。
Claims (22)
- 【請求項1】 実行装置、該実行装置による実行のため
に命令をデコードする命令デコード装置を有し前記命令
を順番に処理するように複数段からなる命令実行パイプ
ラインと、命令アドレスに従い命令コードを記憶するた
めの第1レベル・キャッシュ・メモリと、アドレスに従
い情報を記憶するための第2レベル・メモリと、前記命
令実行パイプラインに使用するように前記命令コードを
検索するための前記命令アドレスにより前記第1レベル
・キャッシュ・メモリをアドレスするフェッチ装置と、
を有するマイクロプロセッサにおいて、 複数個のエントリを含む分岐目標バッファであって、前
記各エントリは関連分岐命令の命令アドレスに対応する
タグフィールドを有し、かつ目標フェッチ・アドレスを
記憶する目標フィールドを有し、前記分岐目標バッファ
は実行すると予測される分岐命令に対して目標フェッチ
・アドレスを与え、さらに、前記各エントリは前記関連
分岐命令のための前記目標フェッチ・アドレスと組み合
せて先取りされる情報の先取りアドレスを示す少なくと
も1つの先取りフィールドを有し、 前記関連分岐命令の命令アドレスに対応する前記分岐目
標バッファのエントリから前記先取りアドレスを受け取
り、該先取りアドレスを前記第2レベル・メモリへ伝送
するように前記分岐目標バッファに結合された先取り論
理部と、を備えたマイクロプロセッサ。 - 【請求項2】 特許請求の範囲第1項記載のマイクロプ
ロセッサにおいて、フェッチ装置はさらに、 前記関連分岐命令の実行に応答して前記分岐目標バッフ
ァのエントリを更新する、前記命令実行パイプラインに
結合された更新回路を有するマイクロプロセッサ。 - 【請求項3】 特許請求の範囲第2項記載のマイクロプ
ロセッサにおいて、 前記命令コードが記憶されている前記第1レベル・キャ
ッシュ・メモリ中の前記命令アドレスに対応しない前記
フェッチ・アドレスに応答して前記第2レベル・メモリ
へ前記フェッチ・アドレスを付加するメモリ制御回路を
さらに有するマイクロプロセッサ。 - 【請求項4】 特許請求の範囲第3項記載のマイクロプ
ロセッサにおいて、 前記命令実行パイプラインと前記更新回路に結合され、
前記関連分岐命令の実行後に前記命令実行パイプライン
により実行され、前記命令コードが記憶されている前記
第1レベル・キャッシュ・メモリ中の命令アドレスに対
応しないフェッチ・アドレスを有する命令を識別し、識
別した前記命令に対応する先取りフィールドを発生する
平滑回路をさらに含むマイクロプロセッサ。 - 【請求項5】 特許請求の範囲第4項記載のマイクロプ
ロセッサにおいて、前記第1レベル・キャッシュ・メモ
リはデータ・ロード・アドレスに応じたデータオペラン
ドを記憶し、 前記平滑回路は、前記関連分岐命令の実行後の前記命令
実行パイプラインにより実行され、前記データオペラン
ドが記憶されている前記第1レベル・キャッシュ・メモ
リの前記データ・ロード・アドレスに対応しないアドレ
スからのデータを要求する演算に関連する命令を識別す
るためであり、識別した命令に対応する先取りフィール
ドを発生する、マイクロプロセッサ。 - 【請求項6】 特許請求の範囲第4項記載のマイクロプ
ロセッサにおいて、前記分岐目標バッファの各エントリ
は、前記関連分岐命令に対する前記目標フェッチ・アド
レスと組み合せて先取りされるべき情報の先取りアドレ
スを指示する複数個の先取りフィールドを有するマイク
ロプロセッサ。 - 【請求項7】 特許請求の範囲第5項記載のマイクロプ
ロセッサにおいて、前記平滑回路は、 前記命令実行パイプラインにより実行された前記分岐命
令を識別し、これに関する制御情報を記憶する第1分岐
キューと、 前記分岐命令の実行後に前記命令実行パイプラインによ
り実行され、命令コードが記憶される前記第1レベル・
キャッシュ・メモリ中の命令アドレスに対応しないフェ
ッチ・アドレスを有し、又はデータオペランドが記憶さ
れる前記第1レベル・キャッシュ・メモリ中のデータ・
ロード・アドレスに対応しないアドレスからのデータを
要求する演算と関連する命令を識別し、識別した命令を
第1分岐キューの識別分岐命令の1つと関連付けるタグ
検査論理と、を有するマイクロプロセッサ。 - 【請求項8】 特許請求の範囲第7項記載のマイクロプ
ロセッサにおいて、前記タグ検査論理は、前記第1分岐
キューの第1の識別分岐命令に続く第2の識別分岐命令
の目標を識別し、該第2の分岐命令の識別した目標を前
記第1の識別した分岐命令と関連付けるためであるマイ
クロプロセッサ。 - 【請求項9】 特許請求の範囲第7項記載のマイクロプ
ロセッサにおいて、 前記第1分岐キューにより識別された前記分岐命令に関
する制御情報を記憶する第2分岐キューと、をさらに有
し、 前記タグ検査論理は、第1の識別命令を関連付けた後に
識別分岐命令を前記第2分岐キューに配置し、分岐命令
の実行後に前記命令実行パイプラインにより実行され、
命令コードが記憶されている前記第1レベル・キャッシ
ュ・メモリの命令アドレスに対応しないフェッチ・アド
レスを有し、又はデータオペランドが記憶された前記第
1レベル・キャッシュ・メモリのデータ・ロード・アド
レスに対応しないアドレスからデータを要求する演算に
関連付ける前記第2の命令を識別し、この第2の命令を
前記第2分岐キューの前記識別分岐命令の内の1つに関
連付ける、マイクロプロセッサ。 - 【請求項10】 特許請求の範囲第1項記載のマイクロ
プロセッサにおいて、前記分岐目標バッファの各エント
リの少なくとも1個の先取りフィールドの各々は、 先取りアドレスを記憶する先取りアドレスフィールドを
有するマイクロプロセッサ。 - 【請求項11】 特許請求の範囲第10項記載のマイク
ロプロセッサにおいて、前記分岐目標バッファの各エン
トリの少なくとも1個の先取りフィールドの各々は、 最近先取りした、先取りアドレスが前記第1又は第2レ
ベル・メモリに記憶されているかどうかの指示を記憶す
る先取りカウンタを有するマイクロプロセッサ。 - 【請求項12】 特許請求の範囲第1項記載のマイクロ
プロセッサにおいて、前記分岐目標バッファの各エント
リの少なくとも1個の先取りフィールドの各々は、 前記目標フェッチ・アドレスに続くアドレスの情報のブ
ロックの先取りを要求する指示子を有するマイクロプロ
セッサ。 - 【請求項13】 特許請求の範囲第1項記載のマイクロ
プロセッサにおいて、前記第2レベル・メモリは前記第
2レベル・キャッシュ・メモリを有し、 さらに、 一方の側を前記命令実行パイプラインとメモリに結合
し、他方の側を外部バスに結合したバス・インターフェ
ース装置と、 外部バスに結合した、マイクロプロセッサ用の外部の主
メモリと、を有するマイクロプロセッサ。 - 【請求項14】 命令のプログラムを実行するためマイ
クロプロセッサを操作する方法において、 命令アドレスを分岐目標バッファに加えるステップであ
って、前記分岐目標バッファは複数個のエントリを有
し、各々が命令識別子を記憶するタグフィールドを有
し、目標フェッチ・アドレスを記憶する目標フィールド
を有し、第1先取りアドレスを記憶する第1先取りフィ
ールドを有し、 前記複数個のエントリの内の1つのタグフィールドに整
合するように付加する前記命令アドレスの部分に応答し
て、整合エントリの前記目標フェッチ・アドレスを第1
レベル・キャッシュ・メモリに付加し、前記第1先取り
アドレスを第2先取りアドレスのより高いレベルのメモ
リへ付加する方法。 - 【請求項15】 特許請求の範囲第14項記載の方法に
おいて、 第1分岐命令に続く命令列の実行を監視し、キャッシュ
・ミスと関連する第1命令を検出し、 前記第1の検出した命令を前記第1分岐命令と関連付
け、 前記第1分岐命令に対応する前記分岐目標バッファのエ
ントリの第1先取りフィールドを、前記第1の検出命令
に対応するアドレス及び制御情報により更新する、方
法。 - 【請求項16】 特許請求の範囲第15項記載の方法に
おいて、 前記監視のステップの前に、前記第1分岐命令の実行を
識別し、 前記識別の後に、前記第1分岐命令に対応する情報を第
1分岐キューに配置し、 前記関連付けの後に、前記第1分岐命令に対応する情報
を前記第1分岐キューから取り除く方法。 - 【請求項17】 特許請求の範囲第16項記載の方法に
おいて、 前記配置の後かつ監視の前に、命令列の実行を監視し
て、前記第1分岐命令の前記目標フェッチ・アドレスに
対応する命令を検出、する方法。 - 【請求項18】 特許請求の範囲第16項記載の方法に
おいて、前記監視ステップは、 前記第1分岐命令に続く命令列の実行を監視し、前記第
1分岐命令よりプログラム順序で後の第2分岐命令の前
記目標フェッチ・アドレスに対応する命令を検出し、 キャッシュ・ミスと関係している第2分岐命令の前記目
標フェッチ・アドレスに対応する検出命令に応答して、
関連付け及び更新のステップを実行し、 前記キャッシュ・ミスと関係しない前記第2分岐命令の
前記目標フェッチ・アドレスに対応する検出命令に応答
して、前記第1分岐キューから前記第1分岐命令に対応
する情報を取り除くことを実行する方法。 - 【請求項19】 特許請求の範囲第16項記載の方法に
おいて、 前記第1分岐キューから前記第1分岐命令に対応する情
報を取り除いた後に、前記第2分岐キューへ前記第1分
岐命令に対応する情報を配置し、 前記命令列の実行を監視して、キャッシュ・ミスと関連
する第2命令を検出し、 前記第2の検出命令を前記第1分岐命令と関連付け、 関連付けの後に、前記第2分岐キューから前記第1分岐
命令に対応する情報を取り除き、 前記第1分岐命令に対応する前記分岐目標バッファ中の
エントリの第2先取りフィールドを、第2検出命令に対
応するアドレス及び制御情報により更新する方法。 - 【請求項20】 特許請求の範囲第15項記載の方法に
おいて、前記第1検出命令に対応するアドレス及び制御
情報は前記第1検出命令に対して発生するキャッシュ・
レベル・ミスの指示子を有する。 - 【請求項21】 特許請求の範囲第14項記載の方法に
おいて、前記分岐目標バッファの各エントリは先取り制
御フィールドを有し、前記第1先取りフィールドが正当
な前記第1先取りアドレスを有するかどうかを指示する
前記第1先取りフィールドと関連する第1先取り制御部
分を有する方法。 - 【請求項22】 特許請求の範囲第21項記載の方法に
おいて、前記先取り制御フィールドはさらに、付勢され
た時に、前記目標フェッチ・アドレスに対するメモリの
追加のブロックを先取りすべきであることを指示するキ
ャッシュ線先取り指示子を有し、さらに、付勢された前
記キャッシュ線先取り指示子に応答して、前記目標フェ
ッチ・アドレスを基にキャッシュ線先取りアドレスを第
2レベル・メモリへ付加する方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US033435 | 1987-04-01 | ||
| US3343596P | 1996-12-23 | 1996-12-23 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH10232776A true JPH10232776A (ja) | 1998-09-02 |
| JP3907809B2 JP3907809B2 (ja) | 2007-04-18 |
Family
ID=21870376
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP37022297A Expired - Fee Related JP3907809B2 (ja) | 1996-12-23 | 1997-12-24 | 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US6119222A (ja) |
| EP (1) | EP0851344A3 (ja) |
| JP (1) | JP3907809B2 (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007207240A (ja) * | 2006-02-03 | 2007-08-16 | Internatl Business Mach Corp <Ibm> | データ・ラインのための自己プリフェッチl2キャッシュ機構 |
| JP2010512580A (ja) * | 2006-12-08 | 2010-04-22 | クゥアルコム・インコーポレイテッド | 低複雑性命令プリフェッチシステム |
| JP2013080497A (ja) * | 2006-06-05 | 2013-05-02 | Qualcomm Inc | スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ |
| US8756404B2 (en) | 2006-12-11 | 2014-06-17 | International Business Machines Corporation | Cascaded delayed float/vector execution pipeline |
Families Citing this family (50)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6490658B1 (en) * | 1997-06-23 | 2002-12-03 | Sun Microsystems, Inc. | Data prefetch technique using prefetch cache, micro-TLB, and history file |
| EP0945793B1 (en) * | 1998-03-27 | 2003-06-04 | Motorola, Inc. | Computer system having a single pointer branch instruction and method |
| EP0945795B1 (en) * | 1998-03-27 | 2003-06-18 | Motorola, Inc. | Computer system having a multi-pointer branch instruction and method |
| US6553488B2 (en) * | 1998-09-08 | 2003-04-22 | Intel Corporation | Method and apparatus for branch prediction using first and second level branch prediction tables |
| US6427192B1 (en) | 1998-09-21 | 2002-07-30 | Advanced Micro Devices, Inc. | Method and apparatus for caching victimized branch predictions |
| US6611512B1 (en) * | 1998-10-14 | 2003-08-26 | Agere Systems Inc. | Apparatus and method for scheduling correlation operations of a DS-CDMA shared correlator |
| US6272597B1 (en) * | 1998-12-31 | 2001-08-07 | Intel Corporation | Dual-ported, pipelined, two level cache system |
| US6332191B1 (en) * | 1999-01-19 | 2001-12-18 | Advanced Micro Devices, Inc. | System for canceling speculatively fetched instructions following a branch mis-prediction in a microprocessor |
| US6453389B1 (en) * | 1999-06-25 | 2002-09-17 | Hewlett-Packard Company | Optimizing computer performance by using data compression principles to minimize a loss function |
| JP4049490B2 (ja) * | 1999-09-29 | 2008-02-20 | 富士通株式会社 | 情報処理装置 |
| US6912650B2 (en) * | 2000-03-21 | 2005-06-28 | Fujitsu Limited | Pre-prefetching target of following branch instruction based on past history |
| US6772325B1 (en) * | 1999-10-01 | 2004-08-03 | Hitachi, Ltd. | Processor architecture and operation for exploiting improved branch control instruction |
| US7069545B2 (en) * | 2000-12-29 | 2006-06-27 | Intel Corporation | Quantization and compression for computation reuse |
| US7010675B2 (en) | 2001-07-27 | 2006-03-07 | Stmicroelectronics, Inc. | Fetch branch architecture for reducing branch penalty without branch prediction |
| US6848031B2 (en) * | 2002-01-02 | 2005-01-25 | Intel Corporation | Parallel searching for an instruction at multiple cache levels |
| US6832296B2 (en) * | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
| US7146468B2 (en) * | 2002-04-24 | 2006-12-05 | Ip-First, Llc. | Cache memory and method for handling effects of external snoops colliding with in-flight operations internally to the cache |
| US7035979B2 (en) * | 2002-05-22 | 2006-04-25 | International Business Machines Corporation | Method and apparatus for optimizing cache hit ratio in non L1 caches |
| US7073030B2 (en) | 2002-05-22 | 2006-07-04 | International Business Machines Corporation | Method and apparatus providing non level one information caching using prefetch to increase a hit ratio |
| US7493480B2 (en) * | 2002-07-18 | 2009-02-17 | International Business Machines Corporation | Method and apparatus for prefetching branch history information |
| US7266676B2 (en) * | 2003-03-21 | 2007-09-04 | Analog Devices, Inc. | Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays |
| US7124287B2 (en) * | 2003-05-12 | 2006-10-17 | International Business Machines Corporation | Dynamically adaptive associativity of a branch target buffer (BTB) |
| US7194582B1 (en) * | 2003-05-30 | 2007-03-20 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
| US7177985B1 (en) * | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
| US20050149562A1 (en) * | 2003-12-31 | 2005-07-07 | International Business Machines Corporation | Method and system for managing data access requests utilizing storage meta data processing |
| US7386679B2 (en) * | 2004-04-15 | 2008-06-10 | International Business Machines Corporation | System, method and storage medium for memory management |
| US7917731B2 (en) * | 2006-08-02 | 2011-03-29 | Qualcomm Incorporated | Method and apparatus for prefetching non-sequential instruction addresses |
| JP4862566B2 (ja) * | 2006-09-04 | 2012-01-25 | 富士通株式会社 | 動画像処理装置及びプリフェッチ制御方法 |
| US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
| US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
| US7594079B2 (en) | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
| US9367465B2 (en) * | 2007-04-12 | 2016-06-14 | Hewlett Packard Enterprise Development Lp | Method and system for improving memory access performance |
| US7783870B2 (en) * | 2007-08-13 | 2010-08-24 | International Business Machines Corporation | Branch target address cache |
| US8600990B2 (en) * | 2008-03-31 | 2013-12-03 | Oracle International Corporation | Interacting methods of data extraction |
| US8407713B2 (en) * | 2008-06-27 | 2013-03-26 | Oracle International Corporation | Infrastructure of data summarization including light programs and helper steps |
| US9690707B2 (en) * | 2010-11-23 | 2017-06-27 | Oracle International Corporation | Correlation-based instruction prefetching |
| US8600961B2 (en) | 2012-02-16 | 2013-12-03 | Oracle International Corporation | Data summarization integration |
| US8839033B2 (en) | 2012-02-29 | 2014-09-16 | Oracle International Corporation | Data summarization recovery |
| US10114755B2 (en) * | 2013-06-14 | 2018-10-30 | Nvidia Corporation | System, method, and computer program product for warming a cache for a task launch |
| US10599433B2 (en) * | 2013-07-15 | 2020-03-24 | Texas Instruments Incorported | Cache management operations using streaming engine |
| US9477516B1 (en) | 2015-03-19 | 2016-10-25 | Google Inc. | Concurrent in-memory data publication and storage system |
| US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
| US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
| US10747540B2 (en) | 2016-11-01 | 2020-08-18 | Oracle International Corporation | Hybrid lookahead branch target cache |
| KR101894894B1 (ko) * | 2017-06-16 | 2018-09-05 | 서울대학교산학협력단 | 바이트코드 처리 장치 및 동작 방법 |
| US11301251B2 (en) * | 2020-03-30 | 2022-04-12 | SiFive, Inc. | Fetch stage handling of indirect jumps in a processor pipeline |
| US11762660B2 (en) * | 2020-06-23 | 2023-09-19 | Ampere Computing Llc | Virtual 3-way decoupled prediction and fetch |
| CN112181497B (zh) * | 2020-09-28 | 2022-07-19 | 中国人民解放军国防科技大学 | 一种分支目标预测地址在流水线中的传递方法和装置 |
| US11334491B1 (en) * | 2020-11-18 | 2022-05-17 | Centaur Technology, Inc. | Side cache array for greater fetch bandwidth |
| CN114116007B (zh) * | 2021-12-01 | 2026-02-03 | 上海兆芯集成电路股份有限公司 | 具有指令预取功能的微处理器 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE3382350D1 (de) * | 1982-11-17 | 1991-08-29 | Nec Corp | Anordnung zum vorabholen von befehlen mit vorhersage einer verzweigungszieladresse. |
| US4691277A (en) * | 1984-10-24 | 1987-09-01 | International Business Machines Corp. | Small instruction cache using branch target table to effect instruction prefetch |
| US5537573A (en) * | 1993-05-28 | 1996-07-16 | Rambus, Inc. | Cache system and method for prefetching of data |
| US5826052A (en) * | 1994-04-29 | 1998-10-20 | Advanced Micro Devices, Inc. | Method and apparatus for concurrent access to multiple physical caches |
| US5778435A (en) * | 1996-05-30 | 1998-07-07 | Lucent Technologies, Inc. | History-based prefetch cache including a time queue |
| US5864697A (en) * | 1996-06-28 | 1999-01-26 | Texas Instruments Incorporated | Microprocessor using combined actual and speculative branch history prediction |
-
1997
- 1997-12-19 US US08/994,596 patent/US6119222A/en not_active Expired - Lifetime
- 1997-12-23 EP EP97310548A patent/EP0851344A3/en not_active Withdrawn
- 1997-12-24 JP JP37022297A patent/JP3907809B2/ja not_active Expired - Fee Related
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007207240A (ja) * | 2006-02-03 | 2007-08-16 | Internatl Business Mach Corp <Ibm> | データ・ラインのための自己プリフェッチl2キャッシュ機構 |
| JP2013080497A (ja) * | 2006-06-05 | 2013-05-02 | Qualcomm Inc | スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ |
| JP2010512580A (ja) * | 2006-12-08 | 2010-04-22 | クゥアルコム・インコーポレイテッド | 低複雑性命令プリフェッチシステム |
| US8756404B2 (en) | 2006-12-11 | 2014-06-17 | International Business Machines Corporation | Cascaded delayed float/vector execution pipeline |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3907809B2 (ja) | 2007-04-18 |
| EP0851344A2 (en) | 1998-07-01 |
| US6119222A (en) | 2000-09-12 |
| EP0851344A3 (en) | 2000-01-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3907809B2 (ja) | 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ | |
| US8069336B2 (en) | Transitioning from instruction cache to trace cache on label boundaries | |
| US7743232B2 (en) | Multiple-core processor with hierarchical microcode store | |
| EP0651322B1 (en) | Instruction caches for variable byte-length instructions | |
| US6029228A (en) | Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions | |
| US6687789B1 (en) | Cache which provides partial tags from non-predicted ways to direct search if way prediction misses | |
| US5113515A (en) | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer | |
| US5553255A (en) | Data processor with programmable levels of speculative instruction fetching and method of operation | |
| US6502185B1 (en) | Pipeline elements which verify predecode information | |
| KR100993018B1 (ko) | 트레이스 캐시 기반 프로세서에서 예외 명령어들을 처리하는 시스템 및 방법 | |
| US6279105B1 (en) | Pipelined two-cycle branch target address cache | |
| US7213126B1 (en) | Method and processor including logic for storing traces within a trace cache | |
| US6195735B1 (en) | Prefetch circuity for prefetching variable size data | |
| US6009516A (en) | Pipelined microprocessor with efficient self-modifying code detection and handling | |
| US10310859B2 (en) | System and method of speculative parallel execution of cache line unaligned load instructions | |
| JPH10177481A (ja) | 改善された分岐予測機能を有するマイクロプロセッサ及びその動作方法 | |
| JP2003514299A (ja) | インデックスおよび任意の様式一致に基づいてデータを転送するストアバッファ | |
| EP3321811B1 (en) | Processor with instruction cache that performs zero clock retires | |
| US6647490B2 (en) | Training line predictor for branch targets | |
| US5909566A (en) | Microprocessor circuits, systems, and methods for speculatively executing an instruction using its most recently used data while concurrently prefetching data for the instruction | |
| US7571283B2 (en) | Mechanism in a multi-threaded microprocessor to maintain best case demand instruction redispatch | |
| US5878252A (en) | Microprocessor configured to generate help instructions for performing data cache fills | |
| US6016532A (en) | Method for handling data cache misses using help instructions | |
| EP3321810B1 (en) | Processor with instruction cache that performs zero clock retires | |
| US6675287B1 (en) | Method and apparatus for store forwarding using a response buffer data path in a write-allocate-configurable microprocessor |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041222 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051104 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060206 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060209 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060508 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060602 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060904 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060907 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061204 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070105 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070117 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110126 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120126 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120126 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130126 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140126 Year of fee payment: 7 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| LAPS | Cancellation because of no payment of annual fees |