JP3907809B2 - 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ - Google Patents

複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ Download PDF

Info

Publication number
JP3907809B2
JP3907809B2 JP37022297A JP37022297A JP3907809B2 JP 3907809 B2 JP3907809 B2 JP 3907809B2 JP 37022297 A JP37022297 A JP 37022297A JP 37022297 A JP37022297 A JP 37022297A JP 3907809 B2 JP3907809 B2 JP 3907809B2
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.)
Expired - Fee Related
Application number
JP37022297A
Other languages
English (en)
Other versions
JPH10232776A (ja
Inventor
エィチ.シエル ジョナサン
オー.ボンディ ジェームズ
Original Assignee
テキサス インスツルメンツ インコーポレイテツド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by テキサス インスツルメンツ インコーポレイテツド filed Critical テキサス インスツルメンツ インコーポレイテツド
Publication of JPH10232776A publication Critical patent/JPH10232776A/ja
Application granted granted Critical
Publication of JP3907809B2 publication Critical patent/JP3907809B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • 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)

Description

【0001】
【発明の属する技術分野】
本発明はマイクロプロセッサの分野であり、特にキャッシュ・メモリ利用に関係する。
【0002】
【従来の技術】
マイクロプロセッサや他のプログラム可能な論理素子の分野では、近年顕著な性能改善を生じる多くの改良が行なわれている。このような改良の一つはパイプライン・アーキテクチャの実装であり、これは実行の各段階で複数のマイクロプロセッサ命令が同時に処理され、従って以後の命令(プログラム順序で)の処理が前の命令の完了の前に開始されている。各個々の命令の処理はフェッチから実行まで複数のマシン・サイクルを必要とするにも係わらず、パイプライン化のため、マイクロプロセッサにより実行される命令の実効速度は単一パイプライン・マイクロプロセッサではマシン・サイクル当たり1 命令に近づく。いわゆるスーパースカラー・アーキテクチャは並列に動作する複数のパイプラインを有効に有し、さらに高い理論的性能レベルを提供する。
【0003】
分岐が依存する条件はフェッチの後数サイクルたった実行時まで未知であるため、条件分岐命令はパイプライン・アーキテクチャのマイクロプロセッサに複雑性を与える。このような状況下では、マイクロプロセッサは条件が解明されるまで分岐後の命令のフェッチを停止し、パイプラインに「泡」の空きの段(すなわち可能性のある命令処理スロット)を導入するか、又は代わりに、推測が正しくないと決定された場合にその現在の命令のパイプラインを「フラッシュ」しなければならない危険を冒して、パイプラインを充填するために命令を推測的にフェッチ(実際には条件を推測して)しなければならない。
【0004】
推測実行の成功率が合理的である限り、パイプラインを充填する命令の推測実行の利点は、特に長い又は複数パイプラインのアーキテクチャでは、パイプライン・フラッシュの性能劣化より標準的にはまさっている。それ故多くの現代のマイクロプロセッサは分岐命令の振る舞いをある確度で予測するある種の分岐予測技術に従う。分岐予測に対する公知の方式は、予測が時間又は履歴で変化しない「静的」予測と、分岐予測が前に実行された分岐の結果に従って行われる「動的」予測とを含む。
【0005】
従来の動的分岐予測方式の進歩した型式は、他の命令の分岐結果ではなく、それ自身の分岐履歴を基に分岐命令の結果を予測する。この方式は一般的に分岐目標バッファにより現代のマイクロプロセッサに組み込まれている。従来の分岐目標バッファ、すなわちBTBは、最近出会った分岐命令の識別子(「タグ」)、これに基づいて予測を行なう分岐履歴関連コード、及び分岐が実行されるものとして予測された場合にフェッチされる次の命令の目標アドレス(「実行されない」予測に対しては次の連続アドレスがフェッチされるべきアドレスである)を各々記憶するエントリのキャッシュ型表である。分岐命令を含む命令のブロックをフェッチした時、そのアドレスをBTB中のタグと照合してこの命令を含むブロックが前に出会ったかどうかを決定する;そうならば、その命令に対するBTB中で指示される予測コードに応じて、次のフェッチは目標アドレスにより指示される命令のブロックに対応する。新たに出会った分岐命令は、BTBに履歴がないため静的に予測される。命令の実行と完了時に、BTBが作成され(最初の場合)又は変更され(以後の場合)、その命令の次の場合の結果を予測する際に分岐命令の実際の結果を反映する。
【0006】
現代のマイクロプロセッサの性能を大いに改良する他の公知の技術は、1段階以上のレベルのキャッシュ・メモリの実装である。当該技術において基本的なように、現代のマイクロプロセッサを基にしたシステムはオンチップ及び外部キャッシュ・サブシステムの両方の高速ランダム・アクセス・メモリをキャッシュ・メモリとして利用している。キャッシュ・メモリは遅い主メモリからマイクロプロセッサによりフェッチされたメモリ位置の近傍にあるメモリ位置の内容を記憶するために通常使用される。例えば、4バイト・データ語を主メモリから検索する度に、32バイト・メモリ・アクセスを実行して所要の4バイト・データ語を得て、これを32バイト・キャッシュ線路として近傍のデータと共にキャッシュに記憶する。以後、キャッシュ線路中のデータ語へのアクセスは従って主メモリ・アクセスを必要とする場合より迅速に実行される。標準的な場合にそうであるように、連続的なメモリ・アクセスが近傍のメモリ位置へ行われている範囲では、キャッシュ中の近傍メモリ位置内容の存在はオフチップ・メモリへの同様のアクセスを実行する際にこうしなければ必要とされるであろう多数のウェイト状態を著しく減少可能である。
【0007】
標準的なマイクロプロセッサ又はマイクロプロセッサを基にしたシステムはそのキャッシュを複数レベルに従って構成している。例えば、従来のマイクロプロセッサはオンチップ「レベル0」データ・キャッシュ、専用のレベル1オンチップ命令及びデータ・キャッシュ、及び外部キャッシュ・サブシステムの統合レベル2キャッシュを含む。この配置では、メモリ・アドレスは連続的に各レベルへ付加し、低レベル・キャッシュでのキャッシュ・ミス(すなわち、キャッシュが所要アドレスを含んでいない)の場合にはメモリ・アドレスが次の高次のレベルのキャッシュに付加される。全レベルでキャッシュ・ミスすると、主メモリがアクセスされ、標準的にはデータ又は命令コードの全キャッシュ・ラインを検索することにより以後のサイクルでそこへのキャッシュ・アクセスを可能とする。勿論、キャッシュ・ミスに伴う不利益(ウェイト状態)は高次のレベルのキャッシュ・ミスに対してより厳しくなる。例えば、レベル0でミスしレベル1でのヒットには1ウェイト状態が付随し、レベル1でミスしレベル2でのヒットには2ウェイト状態が付随するが、レベル2統合キャッシュでのキャッシュ・ミスの場合には主外部メモリのアクセスに25ウェイト状態を必要とする。従ってキャッシュ・ヒット率がマイクロプロセッサとそのシステムの全体性能に格別の重要性を有するようになる。
【0008】
上述したように、データ及び命令の両方のメモリの規則的な連続アクセスが相対的に高いキャッシュ・ヒット率を有するように、キャッシュにコピーされるメモリは前にアクセスされたメモリ位置へのその近さのために標準的に選択される。しかしながらこれも上述したように、多くの従来プログラムは分岐命令を含み、プログラムの流れは必ずしも連続的ではない。従って、実行されるであろうと予測された分岐命令の場合のように、フェッチされる次の命令が最近の順序にない時にはキャッシュ・ミスが共通して発生するのみならず、主メモリ・アクセスを必要とする時にはそのようなミスから生じる不利益は相当なものとなる。
【0009】
【発明が解決しようとする課題】
それ故本発明の目的はキャッシュ・ヒット率が改良されたマイクロプロセッサ及びシステムを提供することである。
【0010】
本発明の別な目的は、分岐予測機構を使用してキャッシュ・メモリへのメモリ位置の先取りを開始するマイクロプロセッサとシステムである。
【0011】
本発明の別の目的は、以前の命令の実行結果に基づいてキャッシュ先取りが開始されるマイクロプロセッサとシステムを提供することである。
【0012】
本発明の別の目的は、キャッシュ先取りが動的に制御されるマイクロプロセッサとシステムを提供することである。
【0013】
本発明の他の目的と利点は以下の明細書とその図面を参照して当業者には明らかとなる。
【0014】
【課題を解決するための手段】
本発明は、各分岐目標バッファ・エントリに少なくとも1 個のキャッシュ先取りフィールドを含ませることにより、実行の動的分岐予測に分岐目標バッファを利用したマイクロプロセッサに実装される。先取りフィールドは目標命令のフェッチと組み合わされて先取りされるメモリ位置を指示し、これは分岐の実行に続く命令のキャッシュ・ミスを追跡することにより分岐命令の実行完了時にキャッシュ先取りアドレスにより満たされる。
【0015】
【発明の実施の形態】
ここで図1を参照すると、本発明の望ましい実施例を実装した例示のスパースカラ・パイプライン・マイクロプロセッサ10を含む例示のデータ処理装置300が記述されている。本発明は各種のアーキテクチャのマイクロプロセッサに利用出来ると考えられるため、装置300とマイクロプロセッサ10のアーキテクチャは本明細書では単なる1 例として記載されていることを理解すべきである。それ故、当業者は本明細書を参照して、本発明を前記他のマイクロプロセッサ・アーキテクチャに容易に実装可能であると考えられる。さらに、本発明は単一チップのマイクロプロセッサ及びマイクロコンピュータ又は複数チップ実装で実現でき、前記集積回路の製造はシリコン基板、絶縁体上のシリコン、ガリウム砒素、及び他の製造技術、さらにMOS、CMOS,バイポーラ、BiCMOS又は他の素子実装により実現されると考えられる。
【0016】
図1に示すマイクロプロセッサ10は外部バスBUSにより他のシステム装置に接続される。本例では外部バスBUSは単一のバスとして示されているが、PCIローカル・バス・アーキテクチャを利用した従来のコンピュータで公知のように異なる速度とプロトコルを有する複数のバスを表わす外部バスBUSももち論考えられる。装置300は、通信ポート303(モデム・ポート及びモデム、ネットワーク・インターフェース、等を含む)、画像表示装置304(画像メモリ、画像プロセッサ、画像モニタを含む)、動的ランダム・アクセス・メモリ(DRAM)により標準的に実装される主メモリ装置305、入力装置306(キーボード、ポインティング装置、及びそのインターフェース回路を含む)、ディスク装置308(ハードディスク・ドライブ、フロッピー・ディスク・ドライブ、CD−ROMドライブを含む)のような従来のサブシステムを含む。装置300の標準的な実装は標準的には外部キャッシュ・メモリ307を含み、これはキャッシュ・タグ比較器と制御回路と組み合せて実装された高速メモリであり、従って期待されるメモリ・アクセスは遅い外部主メモリ305へのアクセス無しに迅速に実行できる。それ故、図1のシステム300は現在当該技術で一般的な従来のデスクトップ・コンピュータ又はワークステーションに対応するものと考えられる。もち論、当業者には認められるように、マイクロプロセッサ10の他のシステム実装も本発明から利益を受けられる。
【0017】
マイクロプロセッサ10は外部バスBUSへ接続されたバス・インターフェース装置(BIU)12を含み、この装置はマイクロプロセッサ10と装置300中の他の要素との間の通信を制御し実行する。BIU12は、この機能を実行するための適当な制御及びクロック回路を含み、これらは動作速度を増加するための書き込みバッファを含み、又内部マイクロプロセッサ動作の結果をバスBUSタイミング制約と同期させるようなタイミング回路を含む。マイクロプロセッサ10も装置クロックSYSCLKを基にクロック位相を発生するクロック発生及び制御回路20を含み、本例では、クロック発生及び制御回路20は装置クロックSYSCLKからバス・クロックBCLKとコア・クロックPCLKを発生する。
【0018】
図1から明らかなように、マイクロプロセッサ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 へのアクセス用に論理データ・アドレスを物理アドレスに変換するために設けられる。
【0019】
図1に示すように、マイクロプロセッサ10はスパースカラ型式で、従って複数の実行装置を含む。これらの実行装置は、条件分岐、整数及び論理演算処理用の2 個のALU420 、421 、浮動小数点装置(FPU)31、2 個のロード・ストア装置400 、401 、及びマイクロシーケンサ48を含む。2 個のロード・ストア装置40は真に並列のアクセスをするためマイクロキャッシュ18への2 個のポートを利用し、又レジスタ・ファイル39中のレジスタへのロード及びストア演算も実行する。当該技術で従来の方法のように、レジスタ・ファイル39はプログラマ使用に利用可能な汎用レジスタと、コード・セグメント・レジスタCSを含む制御レジスタも含む。
【0020】
これらの複数実行装置は、各々がライトバックを有する7 段の複数パイプラインにより制御される。パイプラインの段は以下の通りである:
F フェッチ:この段は命令アドレスを発生し、命令キャッシュ又はメモリから命令を読み取る
PD0 プレデコード段階0:この段は3 個までのフェッチされたx86型命令の長さと開始位置を決定する
PD1 プレデコード段階1 :この段はx86命令バイトを取り出し、デコード用に固定長に再コード化する
DC デコード:この段はx86命令を原子演算(AOps)に翻訳するSC スケジュール:この段は4 個までのAOpsを適当な実行装置(FPU31を含む)に割り当てる
OP オペランド:この段はAOpsにより指示されるレジスタオペランドを検索する
EX 実行:この段はAOpsと検索オペランドにしたがって実行装置を実行させる
WB ライトバック:この段は実行結果をレジスタ又はメモリに記憶させる
【0021】
図1を参照すると、上記したパイプライン段はマイクロプロセッサ10内の各種の機能ブロックにより実行される。フェッチ装置26は、以後詳細に説明される分岐目標バッファ(BTB)56による分岐予測技術に従うものを含めて、レベル1 命令キャッシュ16i へ付加するための命令マイクロ変換ルックアサイド・バッファ(μ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に対してアドレス発生を実行する。
【0022】
マイクロシーケンサ48とマイクロコードROM46は、一般的には1サイクル中で実行する最後のAOpsであるマイクロコード・エントリAOpsの実行時にALU42とロード/ストア装置40を制御する。本例では、マイクロシーケンサ48はマイクロコードROM46に記憶されたマイクロ命令中を進行し、複雑な又はまれに使用されるx86命令、セグメント又は制御レジスタを変更するx86命令、例外と割り込みの処理、複数サイクル命令(REP命令、全てのレジスタをPUSH、POPする命令)のようなマイクロコード化されたマイクロ命令に応答して制御する。
【0023】
マイクロプロセッサ10は又、製造の完了時及びリセットと他の事象時にマイクロプロセッサ10の動作の正当性を確認するためJTAG走査検査の動作、及びある種の組み込み自己検査(BIST)機能を制御するために回路24を含む。
【0024】
本発明の望ましい実施例によると、マイクロプロセッサ10は、外部メモリ305、307、又はレベル2キャッシュ11から、レベル1命令キャッシュ16i とレベル1データ・キャッシュ16d のような下位レベルへ命令又はデータの先取りを制御するための先取り制御論理23も含む。以後詳細に説明するように、先取り制御論理23は、パイプライン中の以後の分岐命令の目標及び期待されるキャッシュ・ミスに対応する先取り情報により、レベル1命令キャッシュ16i からの分岐命令の目標のフェッチと同時にレベル2 キャッシュ11へのアクセスを開始する。図1に図示するように、先取り制御論理23は線路PF0/1上のフェッチ装置からの可能な先取りアドレスと制御情報を受取り、バスPFA上のTLB19へ先取り要求とアドレスを発生する。
【0025】
以下の説明からより詳細に明らかになるように、本発明の望ましい実施例による分岐目標フェッチと組み合せて実行される先取りは、フェッチを開始する分岐命令の従前の発生に従うプログラム命令の実行を監視することにより決定される。従って、マイクロプロセッサ10は、線路GRBR(分岐に対して)と線路TCK(分岐を含む全ての命令にに対して)上で実行を完了している命令に対して各種の実行装置から情報を受取る平滑キュー及びタグ検査回路27をさらに含む。命令の実行の結果と他の因子を基に、平滑キュー及びタグ検査回路27はバスUPD上にフェッチ装置26へ更新情報を発生する。以下に更に詳細に説明するように、バスUPD上で通信される情報は、従前の分岐命令と関連している、先取りが有効な命令(例えば重大なキャッシュ・ミスを含む命令)のアドレスを含む。フェッチ装置26と先取り制御論理23はこの情報を利用して分岐目標と同時に先取りを開始し、従って同一の順序の命令による以後のパスでのキャッシュ・ミスの可能性は避けられる。
【0026】
ここで図2を参照すると、本発明の望ましい実施例による先取り制御論理23と組み合せたフェッチ装置26の構成と動作が記載されている。上述したように、フェッチ装置26はデコード用にフェッチされる次の命令のアドレスを決定する機能を実行する。このようなため、フェッチ装置26は命令がマイクロプロセッサ10のパイプラインにロードされる順序を決定し、本発明の本実施例では従って特に分岐予測によるアドレスの推測実行を制御する。
【0027】
フェッチ装置26の動作は、マルチプレクサ52により選択されるいくつかの方法の内の一つに従って発生される論理フェッチ・アドレスFAに基づいている。フェッチ・アドレスFAは、次の連続アドレスをデコード用にフェッチすべき場合には、フェッチ装置26のフェッチ・ポインタ50の内容から単に発生される。図2に示すように、フェッチ・ポインタ50は、出力をマルチプレクサ52の1つの入力とそして増分器51に接続したフェッチ装置26中のレジスタである。増分器51はフェッチ・アドレスの値を増分的に進行させ、フェッチ・ポインタ50の可能な記憶と次のフェッチでの使用のために、マルチプレクサ58の入力へ増加したフェッチ・アドレスを付加する。マルチプレクサ58は次のアクセス用にフェッチ・ポインタ50の更新した内容のソースが選択される。フェッチ・アドレスFAを発生する第2の方法は、マルチプレクサ52への実行装置(例えばマイクロシーケンサ48)の内の一つによるものであり、例えば、フェッチ装置26により予測されない分岐の場合である。この値も、適切にフェッチ・ポインタ50に記憶するためマルチプレクサ58の入力に付加される。
【0028】
フェッチ・アドレスFAはフェッチ装置26の各機能に与えられてデコード用の次の命令のフェッチを制御する。例えば、フェッチ装置26は命令μTLB22と通信し、これは以前に変換した位置を指している場合に論理フェッチ・アドレスと整合する物理アドレスPAを返す。又は論理フェッチ・アドレスFAはフェッチ装置26の外部のTLB19により物理アドレスに変換される。いずれにせよ、命令アドレスIAはフェッチ装置26によりレベル1命令キャッシュ16i に与えられてそこから命令コードを検索する。勿論、レベル1命令キャッシュ16i でキャッシュ・ミスが発生した場合、物理アドレスは統合レベル2キャッシュ14へ与えられ、このレベルでキャッシュ・ミスの場合には主メモリへ行く。命令アドレスIAに応答して、レベル1 命令キャッシュ16i は、プレデコード0段28へ結果として与えるためにフェッチ装置26の命令バッファ60へ命令コード列CODEを与える。各命令アドレスIAが16命令のブロックをアドレスする場合のため、命令バッファ60は16命令の容量を有する。
【0029】
フェッチ装置26は、ブレークとして識別される命令に対してそれ以上のフェッチを停止する命令ブレーク検査回路62のようなその外の従来の機能も含む。フェッチ装置26は又、論理フェッチ・アドレスFAが現在のコード・セグメントの境界の限界の外側のアドレスを指しているかどうかを決定するため、コード・セグメント限界検査回路64も含む。
【0030】
上述したように、フェッチ装置26はプログラム順序ではない方法で次のフェッチ・アドレスを発生する回路を含む。図2に示すように、フェッチ装置26は戻りアドレス・キュー55を含み、これはいくつかの位置を有する後入れ先出し(LIFO)メモリで、ここでサブルーチン・コールの戻りアドレスとサブルーチン戻りがサブルーチンの推測実行で使用するため記憶される。
【0031】
本発明の本実施例では、フェッチ装置26は又分岐目標バッファ(BTB)56を含み、これは分岐命令の現在の例を推測する分岐の以前の履歴を指示するデータと共に、フェッチ・アドレスFAとして使用する分岐命令の目標アドレスを記憶し、従ってパイプラインが可能な限り充填状態で保持されるようにするキャッシュ型配置のエントリである。BTB56は、各現在のフェッチ・アドレスFAが最近にフェッチされた分岐命令を指しているかどうかを決定することによりこれを実行し、またこのために分岐履歴が推測実行で使用するためにBTB56に記憶される。当該技術において公知のように、推測に失敗した分岐(又は条件分岐の結果を待機しているパイプライン・ストール)は消失実行機会で計測して重大な不利益を生じるため、図1のスパースカラ・マイクロプロセッサ10のような深くパイプラインされたマイクロプロセッサでは推測実行は重要な性能強化である。
【0032】
発明の本望ましい実施例では、BTB56は2レベル型式のもので、引用により本明細書に含まれる1996年12月10日提出の「マイクロプロセッサの分岐予測用の複数全体パターン履歴表」という名称の当社索引番号(TI−23791P)から派生した共願出願に記述されているような、分岐履歴情報により呼び出される分岐コードを記憶するための複数パターン履歴表53と組み合せて動作する。特定のアドレスに対して分岐予測を発生する際に使用されるパターン履歴表53の内の適当なものの選択は、分岐命令が含まれるプログラムの型式に応じて選択論理80により行われる。図2 に図示するような、選択論理80は、コード・セグメント・レジスタCSからの線路U/S上で通信されるように、現在の分岐命令を含むプログラムの型式に関する情報に応答してパターン履歴表53中から選択する。加えて、図示するように、線路FA上のフェッチ・アドレスに対応する分岐命令のメモリ位置を基にして適切なパターン履歴表53を選択する際に、線路FA上の実際のフェッチ・アドレスを使用してもよい。平滑キュー及びタグ検査回路27と実行装置からのバスUPDは更新論理70に印可され、この更新論理は実行時に評価された分岐命令の成功又は失敗に応答してBTB56のエントリ中の分岐履歴とパターン履歴表53中に記憶された予測コードを更新する。このようにして、分岐予測成功率は分岐結果の使用を介して、また適切なパターン履歴表53の選択で同種のプログラム(例えば、応用プログラム、共用ライブラリ、オペレーティング・システム機能)により示される分岐挙動の同一性を利用することにより改善される。
【0033】
パターン履歴表53中の対応する予測コードを基にした分岐予測に応答して、BTB56はバスBR TRG上のマルチプレクサ57へ目標命令アドレスを与え、戻りアドレス・キュー55はバスRA上でマルチプレクサ57へ戻り命令アドレスを与える。マルチプレクサ57の出力はマルチプレクサ52の第3 入力へ、そしてマルチプレクサ58へ与えられ、従ってフェッチ・カウンタ50は更新される。従ってマルチプレクサ52への3本の入力は次のフェッチ・アドレスFAの3種類の入力源を与え、このアドレスは物理アドレスと対向する論理アドレスである。
【0034】
本発明の望ましい実施例によると、分岐予測をしてバスBR TRG上に分岐目標アドレスを発行する際には、BTB56は又先取り制御論理23へバスPF0、PF1上に先取りアドレスと関連する制御情報を与える。先取りアドレスと制御情報は各分岐命令毎にBTBエントリ内に収められ、従って分岐命令の目標に対してフェッチ・アドレスと共に発行される。先取り制御論理23は、バスPFA0、PFA1上のアドレスとしてバスPF0、PF1上でBTB56から受取った情報に応答して適当な先取りを開始する。先取り制御論理23は先取り走査を実行するためのアドレスと制御信号を発生する回路から構成され、これはバスPF0、PF1上に与えられた先取りアドレスの性質とバスPFA0、PFA1の所要受信人に応じて必要とされる変換回路を含む。例えば、BTB56に記憶された先取りアドレスが論理アドレスの場合、先取り制御論理23は論理先取りアドレスを物理アドレスに変換する例えば8エントリのオーダーのマイクロTLBを含み、この場合バスPFA0、PFA1はレベル2キャッシュ11に直接付加してもよい。又は、先取り制御論理23はバスPF0、PF1上で受信した先取り論理アドレスをバスPFA0、PFA1を介してTLB19へ単に付加して先取りを開始してもよい。さらに別な方法では、BTB56は先取り用の物理アドレスを記憶し、この場合先取り制御論理23は単に適当な物理アドレスをバスPFA0、PFA1上でレベル2キャッシュ11へ転送する。いずれの場合でも、当業者はこの説明に与えた所要のアーキテクチャに対して適当とされる適切な先取り制御論理23を容易に実装可能であるものと考える。本発明の望ましい実施例によるマイクロプロセッサ10の図2の2本のバスPFA0、PFA1により明らかなように、2つの同時先取りが分岐目標フェッチ操作と並列に開始される。
【0035】
発明の本実施例によると、レベル2キャッシュ11は当該技術において公知のように2重ポート化されたタグ・アレイを含むことが望ましく、従って、例えば必要に応じて先取り制御論理23により発行された2つの同時先取りに応答して、複数タグ比較が同時に実行される。レベル2キャッシュ11中のデータ表はチップ面積を節約するために単一ポート化されることが望ましいと考えられるが、ここでの同時ヒットの可能性が小さいこととこのレベルでの同時ヒットは両方ともクリティカル・パスではないことを考えると、単に要求をキューに入れることによっても処理出来る。又は、性能の観点から同時先取りのキュー入れが受入可能な場合には、レベル2キャッシュ11は単一ポート化タグ・アレイを含んでも良い。必要に応じて2つの先取りを同時に変換するために使用しなければならない場合、特に先取り制御論理23がマイクロTLBを含まない場合には、TLB19も2重ポート化しても良い。
【0036】
ここで図3を参照して、選択論理80と複数パターン履歴表53と組み合せたBTB56の構成を以下に説明する。この例のBTB56は複数エントリ63を有する4ウェイ・セットアソシエイティブ・キャッシュ・メモリで、簡単のため図3では1ウェイのみを図示してある。BTB56は、線路FA上のフェッチ・アドレスを受け取り、フェッチ・アドレスが指している適当なエントリ63を選択するよう結合されているセレクタ61を含む。セレクタ61は、デコーダ、タグ比較器又は簡単なマルチプレクサによるような、フェッチ・アドレスからBTB56中のエントリ63の選択を実行する従来の技術に従って構成されている。
【0037】
図4はBTB56中の例示のエントリ63i の配置を図示しているが、全てのエントリ630 から63n は同様に配置されていることを理解すべきである。エントリ63i は、特定の分岐命令の論理フェッチ・アドレスFAによりこれを識別するために使用するタグフィールドTAGを有し、これに対してセレクタ61は入力の論理フェッチ・アドレスの一部を合わせる。タグフィールドTAGはその対応する分岐命令の論理フェッチ・アドレスFAの選択ビットを直接記憶するか、又は代わりに当該技術において既知のようにこれらの選択論理アドレス・ビットの論理的組み合せに対応させてもよい。標準的には、タグフィールドTAGは線路アドレスとフェッチ線路中の命令のバイト・オフセットを指示するオフセットを含む。エントリ63i は又当該技術において一般的な正当ビットや1個以上のLRUビット(複数ウェイBTB用)のようなその外の制御ビットも含む。
【0038】
BTBエントリ63i は又分岐命令目標アドレスの論理アドレスを含む目標フィールドTARGETを有する。図3に戻ると、「実行(taken) 」と予測された分岐命令に対応するそのエントリ63に対してTAGETの部分の内容がバスTRGI上を入出力論理69に送られる。図2に戻ると、このアドレスは次いで上述したようにバスBR TRG上をマルチプレクサ57へ与えられる。しかしながら、分岐が「非実行(not taken) 」と予測されると、単に次の連続論理アドレス(すなわちフェッチ・ポインタ50の内容)が次の論理フェッチ・アドレスFAとしてマルチプレクサ52により選択される。
【0039】
エントリ63i は又履歴/副型選択ビットT及び対応するmビット分岐履歴フィールドBHを含む。履歴/副型ビットTがセットされておらず、従ってエントリ63i により識別された分岐命令が条件分岐ではないことを示している場合、分岐履歴フィールドBHは命令の無条件分岐の型式(すなわち、JUMP、CALL、又はRETURN)を指示するコードを記憶する。履歴/副型選択ビットTがセットされていると、エントリ63i に対応する命令が条件分岐の場合、分岐履歴フィールドBHは対応する命令の最近の分岐の結果(すなわち分岐履歴)を記憶している。分岐履歴フィールドBHに記憶された分岐履歴は、命令の実行の完了時に決定された関連分岐命令の実際の分岐履歴と、まだ実行が完了していない分岐命令の例に対しては予測結果から構成される推測分岐履歴の両方を含む。加えて、引用により本明細書に含まれる1996年6月28日提出の共願の米国特願第60/020、844号に記載されているように、エントリ63i は、誤予測からの復帰に使用するため分岐履歴フィールドBHに推測分岐履歴ビットの数を指示するカウンタBH CTRを含む。
【0040】
発明の本実施例によると、目標フィールドTARGETそれ自体により指示される命令のフェッチと同時に実行されるべき先取りの性質と位置を制御する、各種の追加のビットがエントリ63i (そして、もち論BTB56の全てのエントリ63)に設けられる。これらの先取りフィールドを図4と関連して以下にエントリ63i に対して説明する。
【0041】
本発明によるエントリ63i は命令とデータを先取りするための必要なフィールドを含む。以下に詳細に説明するように、これらの先取りの目標アドレスは、パイプラインの以後の命令、特に以後の分岐の目標及び最初に実行した時にキャッシュ・ミスしたものに関連して決定される。発明の本実施例によると、任意のメモリ・アドレスからの2つの先取りが同時に実行され、前記2つの先取りフィールドPF0,PF1が、エントリ63i の先取り制御部分PF CTL内に設けられているエントリ63i 制御情報内に含まれている。図4に図示するように、先取り制御部分PF CTLは制御部分PF0C、PF1Cを含み、その各々が実行される関連先取り(もし存在すれば)のアクセス、型式、発生を制御する。例えば、制御部分PF0C、PF1Cの各々はアクセス部分ACC及び先取り型式部分TYPを含み、その各々は2ビットを有し、これは以下のようにコード化される:
【表1】
Figure 0003907809
上記のコード化で、「ストア準備」という用語は、書込み操作を受け入れるよう特定のメモリ・ブロックに準備させる操作を指す。発明の望ましい実施例によるデータの先取りは、データのブロックを検索するか、又は(及び)書込みを受け入れるブロックを準備するようにしてこのように実行される。アクセス部分ACCと型式部分TYPの他のコード組み合せはこの例では定義されていない。
【0042】
本発明の望ましい実施例によると、制御部分PF0C、PF1Cの各々は図4に示すようにビットVT、VNTから構成される付勢部分も含む。セットされた時には、ビットVT、VNTは、エントリ63i への対応する分岐命令が各々実行又は非実行として予測された時にその関連する先取りが付勢されていることを指示する。例えば、ビットVT、VNTのどちらもセットされていない場合、関連する先取りはそのどちらの予測に対しても付勢されておらず、ビットVT、VNTの両方がセットされている場合、関連する先取りはどちらの予測にも付勢されており、さらに、もち論ビットVT、VNTの一方が他方の排他でセットされている場合、関連する先取りは対応する予測に対して先取りされ他方に対しては消勢される。従って、予測したプログラム流れに応じて先取りが選択的に付勢されるようビットVT、VNTの包含は更なる制御機能を提供する。
【0043】
以上のコード化により指示したように、2つの先取り(PF0、PF1)の各々は命令又はデータ、又は両方である。さらに、2つの先取り制御部分PF0C、PF1Cが設けられているため、2つの先取りは他方とは独立したフェッチで動作する。エントリ63i の先取り制御部分PF CTLはさらに最小最近使用ビットLRUを含み、これは2ウェイ・キャッシュのLRUビットと同様に、現在設定されている2つの先取りの内のどちらが古いかを指示する。異なる先取りを付勢する場合には、最小最近使用ビットLRUは新たな先取り情報により重ね書きされるべき先取りPF0、PF1の一方を指す。
【0044】
エントリ63i はさらに先取りされるべきメモリ・アドレスを記憶する先取りアドレス部分PF0 ADDR、PF1 ADDRを含む。加えて、発明の本実施例によると、エントリ63i は又先取りカウンタPF0 CTR、PF1 CTRを含み、これらは各々先取りPF0、PF1と関係している。先取りカウンタPF0 CTR、PF1 CTRは2ビット・カウンタのような小さなカウンタで、先取りの結果に関する情報を保持する。勿論、先取りのキャッシュ履歴でさらなる粒子性が望ましい場合には、先取りカウンタPF0 CTR、PF1CTRを大きくしても良い。発明の本実施例では、先取りカウンタPF0 CTR、PF1 CTRはレベル2キャッシュ・ミスであるその関連先取りと従って主メモリ305へのアクセスを必要とすることに応答して各々増分される。逆に、先取りカウンタPF0 CTR、PF1 CTRは、探求データ又は命令が既にキャッシュにあるため、関連する先取りが不要な度に減少される。先取りカウンタPF0 CTR、PF1 CTRが零に到達すると、先取り制御部分PFCTL中のその制御ビットPF0C、PF1Cを不正状態(00)にセットして、新たな先取りをそこへ設定させる。
【0045】
上記の説明に記載したように、エントリ63i は任意のメモリ・アドレスから命令又はデータを先取りするよう適当なエントリを含む。勿論、多くの標準的なプログラムの演算は連続位置の記憶メモリからの命令の実行を含む。それ故、発明の望ましい実施例によると、エントリ63i の先取り制御部分PF CTLは又目標フィールドTARGET(実行分岐に対して)に記憶した分岐目標アドレス又は次の連続アドレス(非実行分岐に対して)を暗黙先取りアドレスとして使用するキャッシュ線路の先取りを付勢する暗黙先取り付勢ビットT0、T1、N0、N1を含む。発明の本実施例では、先取り付勢ビットT0、T1は実行されると予測された分岐に関係し、先取り付勢ビットN0、N1は実行されないと予測された分岐と関係する。
【0046】
当該技術において公知のように、キャッシュ・メモリは「キャッシュ線路」と呼ばれるデータの単位によりロードされ、このキャッシュ線路は付近のデータの局所的記憶を提供するよう標準的なメモリ・アクセスより大きい。例えば、図1の統合レベル2キャッシュ11中のキャッシュ線路の寸法は32バイトで、これは8データ語に対応する。しかしながら、命令を緊密に追随する連続命令が必要な時にキャッシュ中になくなるように、特定の命令がキャッシュ線路の終了部近くに配置されると、この場合連続命令の内の一つのフェッチはキャッシュ・ミスを生じ易い。発明の本望ましい実施例では、エントリ63i の先取り制御部分PF CTL中の先取り付勢ビットT0、T1、N0、N1は目標アドレスに続く1つ又は2つのキャッシュ線路の先取り(各々ビットT0、T1の場合)、又はプログラム順序の次の連続命令に続く1つ又は2つのキャッシュ線路(各々ビットN0、N1の場合)の先取りを可能とする。勿論、アーキテクチャーに応じて、本例のような分岐予測と関係して又は関係せずにより多くの又はより少ない先取り付勢ビットをエントリ63i に設けても良い。
【0047】
特に実行されると予測された分岐に対しては、ビットT0はセットされると、分岐目標の後の次のキャッシュ線路の先取りを実行し、ビットT1はセットされると、分岐目標の次の第2 のキャッシュ線路の先取りを実行する。同様に、実行されないと予測された分岐に対しては、ビットN0はセットされると、次の連続命令を含むものの後の次のキャッシュ線路の先取りを実行し、ビットN1はセットされると、次の連続命令を含むものの後の第2 のキャッシュ線路の先取りを実行する。これらの暗黙キャッシュ・アドレスからは1 つのキャッシュ線路先取りのみが許可されていると考えられる。例えば、ビットT0、T1の両方がセットされた場合、分岐目標の後の第1 のキャッシュ線路のみが先取りされる。それ故、発明の本実施例によると、条件分岐命令の両方の予測状態に対して、分岐目標アドレス又は次の連続アドレスを超えて関連する第1 又は第2 のキャッシュ線路を先取りしても良い。これらの先取りと関係するアドレスは分岐目標から暗黙に示されているため、エントリ63i の寸法は相対的に小さく保持される。
【0048】
又、発明の本実施例によると、先取りカウンタT0 CTR、T1 CTR、N0 CTR、N1 CTRが先取り付勢ビットT0、T1、N0、N1の各々と関係している。先取りカウンタT0 CTR、T1 CTR、N0 CTR、N1 CTRは、最後の2 回を実行した時に関連した先取りがキャッシュ・ミス又はキャッシュ・ヒットのどちらを生じたかに対応するカウント値を記憶するため、上述した先取りカウンタPF0 CTR、PF1 CTRと同様に動作する。先取りカウンタPF0 CTR、PF1 CTRの場合のように、先取りカウンタT0 CTR、T1 CTR、N0 CTR、N1 CTRは必要に応じて2 ビット以上で構成されている。これも先取りカウンタPF0 CTR、PF1CTRの場合のように、先取りカウンタT0 CTR、T1 CTR、N0CTR、N1 CTRは、関連する先取りがキャッシュ・ミスである時に増分され、また関連する先取りがキャッシュ・ミスである時に減少される。先取りカウンタT0 CTR、T1 CTR、N0 CTR、N1 CTRは、が零に到達すると、これに関連する先取りは無視されるのが望ましい(探索内容は既に下位レベル・キャッシュに多分存在していて先取りを不要のものとしているため)。
【0049】
他の別な先取り制御フィールドが本発明内で利用される。例えば、アドレスされた先取りフィールドPF0 ADDR、PF1 ADDRの片方又は両方は分岐予測と関連付けされる必要はないが、代わりにエントリ63i の対応するタグフィールドTAGと合うフェッチ・アドレスの各例で先取りされる。さらに別例では、アーキテクチャにより処理される先取りの量とキャッシュ・ヒット成功率に応じてこれより多い又は少ない先取りフィールドがエントリ63i と関連して設けられる。このような別の実装方法は本明細書を参照して当業者には明らかであると考えられる。
【0050】
図3に戻ると、発明の望ましい実施例によるBTB56の動作を以下に簡単に説明する。線路FA上の分岐命令に対応するフェッチ・アドレスを受取ると、セレクタ61はそのエントリ63が、従来の方法で分岐命令のフェッチ・アドレスと合うTAG部分を有しているかどうかを決定する。勿論、このタグ比較は、BTB56がそのように構成されていれば、セット・アソシエーティブ方式で行われる。分岐命令に対して整合するタグフィールドTAGが存在しない場合(すなわち、これがその分岐命令の最初の事例である場合)、BTB56は予測を行なわず、入出力論理69からの線路ATR上にこれを示し、この場合次のフェッチ・アドレスの選択は静的に行われる。BTB56のこのような動作は従来の技術によっている。
【0051】
フェッチ・アドレスがBTB56中のエントリ63のタグ部分TAGと整合する条件分岐命令に対しては、整合するエントリ63の分岐履歴フィールドBHのkビットがPHT53に与えられる。分岐命令が関係しているプログラムの種類に応じてPHT53の適当なものを選択する選択論理80の動作により、線路TRGI上の整合したエントリ63からの目標フィールドTARGETからの分岐目標アドレスと共に、分岐予測コードが線路TNT上をBTB入出力論理69へ与えられる。BTB入出力論理69は、実行されると予測された分岐に対して線路TRGI上の値に対応するマルチプレクサ57(図2)へバスBR TRG上の分岐目標アドレスを与える。制御信号(図示せず)が実行されないと予測された分岐に対して発生され、従ってマルチプレクサ52はフェッチ・ポインタ50の出力を次のフェッチ・アドレスとして選択する。予測が常に「実行」である、BTB56中に整合エントリ63を有する無条件分岐命令に対しては、そのエントリの目標フィールドTARGETの目標アドレスがバスTRGI上に与えられ、バスBR TRG上の分岐目標アドレスとしてBTB入出力論理により発行される。いずれにせよ、分岐が実行又は非実行としてどちらに予測されても、次に期待される命令のフェッチは次のサイクルの新たなフェッチ・アドレスの提供と共に開始する。
【0052】
全ての分岐(実行又は非実行のどちらに予測されたものであれ)に対して、分岐命令の制御フラッグと属性が命令バッファ及び制御60へのバスATRへ与えられ、パイプラインに沿った分岐命令と共に送られる。これらの制御フラッグと属性は、命令が分岐であることを指示するためにセットされるタグを含む。加えて、分岐の目標であるものを識別するため、各命令に関連してキャッシュ・ミスが発生したかどうかを識別するため、そして又望ましくはキャッシュ・ミスが命令又はデータ・アクセスに関連しているかどうかを指示するため非分岐命令に対してもフラッグはセットされる。以下で詳細に説明するように、実行と書き戻しパイプライン段からの命令の平滑時にこれらの命令タグの評価を基にして先取りは設定され制御される。
【0053】
発明の望ましい実施例によると、BTB56に対応するエントリ63を有する各分岐命令は、次の命令のフェッチ(予測に応じて次の連続アドレス又は分岐目標のどちらか)と組み合せて1つ以上の先取りを開始する。先取りアドレスと制御情報は各分岐命令に対してBTBエントリ内に収められ、従って分岐命令の目標のフェッチ・アドレスと共に発行される。図4に関して上述したように、この先取りは現在の目標アドレスの次の1つ以上のキャッシュ線路の先取りを含む(先取り制御部分PF CTLの先取りビットT0、T1、N0、N1の制御下で)か、またはエントリ63i の部分PF0、PF1に記憶されたアドレスを基にした命令又はデータの先取りを含む。暗黙アドレス(すなわち先取り制御部分PF CTLの先取りビットT0、T1、N0、N1により指示されるもの)を使用した先取りは、分岐目標アドレスに続くキャッシュ線路は先取りフィールドPF0 ADDR、PF1 ADDRに記憶したアドレスからの命令又はデータよりも前に必要とされることが多いため、アドレスフィールドPF0 ADDR、PF1 ADDRと関連する先取りより優先権を有すると考えられる。
【0054】
いずれにせよ、BTB入出力論理69はバスPF0、PF1上にメモリ・アドレス(分岐目標から暗黙設定されるか又は整合エントリ63i に記憶されているかのどちらか)を与える。先取り制御論理23は、メモリ・アクセスを開始するためTLB19に付加されたバスPFA0、PFA1上の論理アドレスのように、バスPF0、PF1上のBTB56から受取った情報に応答して適当な先取りを開始する。発明の望ましい実施例によるマイクロプロセッサ10の図2の2つのバスPFA0、PFA1により明らかなように、レベル2キャッシュ11が2重ポート化したタグ比較器を含む場合には2つの同時先取りが分岐目標フェッチ操作と並列に開始される。
【0055】
ここで図5を参照すると、発明の望ましい実施例による卒業キュー及びタグ検査回路27の構成と操作を以下に説明する。平滑キュー及びタグ検査回路27の全体的な機能と目的は、命令がその実行と書込み段を完了した時(すなわち、パイプラインから「卒業した」)に命令に質問し、この質問に応じてBTB56中のエントリを確立し変更して有効な先取りを実行することである。
【0056】
図5はエントリ83i を図示し、これは命令がパイプラインを進行する時の命令と関連する複数ビットの制御情報に対応する。図面の都合上、これらの複数ビットはパイプラインの制御情報に対応しているため、バスPCTRLと呼ばれる。パイプライン化されたマイクロプロセッサの技術で公知のように、各命令はパイプラインに沿って流れていく時に命令(デコードされたもの)、その型式、例外情報、等を識別する制御情報又は信号をタグ付けされる。図5のエントリ83i は以下で説明する本発明の望ましい実施例と関連して有用な追加の制御タグと共に、このような従来の情報を含む。
【0057】
図5に図示するように、エントリ83i は命令識別子x86ID、を含み、これは本例では現在の命令と関連するx86命令(AOpではない)を識別する従来のコードである。他の従来の制御タグと情報もエントリ83i に設けられる。加えて、エントリ83i はその関連命令に対して行われた論理(又は代わりに物理)メモリ・アドレスを指示するフェッチ・タグLAを含む。本発明の望ましい実施例によると、エントリ83i は又分岐識別子タグBR IDも含み、これは関連命令が分岐命令であるかどうかを指示し、そうである場合には、その分岐に固有の識別コードを与える。同様に、各エントリ83i は分岐目標識別子タグBRTRG IDを含み、これは関連命令が分岐の目標であるかどうかを指示し、そうである場合には、これが目標である分岐の識別コードを与える。このようにして、エントリ83i への質問は完了した時点での特定の分岐命令の目標を識別可能である。エントリ83i は順番のマイクロプロセッサでは分岐目標識別子タグBRTRG IDを含む必要はないが、順番ではないマイクロプロセッサでは分岐目標識別子タグBRTRG IDは必要である。
【0058】
発明の本実施例によるエントリ83i は、そのフェッチの際にキャッシュ・ミスが関連しているかどうかと、その型式とを指示するタグも含む。図1と関連して上述したように、マイクロプロセッサ10と装置300はレベル0マイクロキャッシュ18からレベル2オンチップ・キャッシュ11まで、さらに多分外部キャッシュ・メモリ307の各種のキャッシュ・メモリを含む。エントリ83i はキャッシュ・ミス・タグL1 MISS、L2 MISSを含み、これは関連命令のフェッチがL1とL2でのキャッシュ・ミス各々含んでいるかどうかを指示する。外部キャッシュ・メモリ307に対してキャッシュ・ミスが発生した場合を指示するため別のキャッシュ・ミス・タグを代わりに設けても良い。マイクロプロセッサ10と装置300のキャッシュ・ハイアラーキに一致して、より高いレベルのキャッシュ・ミス・タグのセットは又全てのより低いレベルのキャッシュ・アクセスもミスしたことを指示している。アクセスが高レベルでミスであるかどうかの決定は全ての低レベル・キャッシュ・アクセスも又ミスの場合にのみ行われるため、例えば、キャッシュ・ミス・タグL2 MISSは、低レベル・キャッシュ・ミス・タグL1 MISSもセットされた場合にのみセットされる。エントリ83i は又キャッシュ・ミスが命令キャッシュ16i 又はデータ・キャッシュ16d のどちらに対してであるかを指示する型式ビットI/Dも含む。
【0059】
制御パイプライン・バスPCTRLに沿って通信される各エントリ83の情報は、関連命令の実行と書き戻しに続いて平滑キュー及びタグ検査回路27により受取られる。図5に図示するように、平滑キュー及びタグ検査回路27は2個の分岐キュー92a、92bと組み合せた平滑キュー先取り更新制御論理90を含む。分岐キュー92a、92bはパイプラインから「平滑した」分岐命令に対する制御情報を記憶する従来のFIFOキューである。以下で明らかとなるように、発明の望ましい実施例によるとマイクロプロセッサ10での次の連続分岐命令の目標の平滑時に分岐命令は分岐キュー92aから削除されるため、分岐キュー92aは2つのエントリのみを含む。しかしながら、順番ではないマイクロプロセッサでは、分岐キュー92a、92bの各々は2つ以上のエントリを有することが望ましい。
【0060】
平滑キュー先取り更新制御論理90は、後述する方法で命令を平滑させ、分岐キュー92a、92bに沿った分岐命令の進行を制御し、各種の制御ビットを更新するためエントリ83の各種のフィールドに質問する連続又は組合せ論理である。図5から明らかなように、平滑キュー及びタグ検査回路27は、命令実行に続いてこれによりBTB56、PHT53等が更新される従来の分岐予測結果及び他の情報と組み合せた、更新バスUPDへ渡される制御信号を発生する。平滑キュー先取り更新論理90は、この説明を参照した当業者により特定のアーキテクチャーに対して容易に構成可能であると考えられる。
【0061】
図6を参照して、本発明の望ましい実施例による平滑キュー及びタグ検査回路27の動作を以下に詳細に説明する。図6に図示した平滑キュー及びタグ検査回路の動作は、単一の分岐命令(本明細書では分岐命令Ixとして参照される)に対して与えられる。それ故、平滑し先取り情報を待機している複数分岐命令に対しても適当に同じプロセスが並列に動作していることを理解すべきである。
【0062】
先取り情報の発生はプロセス94から開始し、ここで平滑キュー先取り更新制御論理90は最近平滑した命令(図1及び図5に示すようにバスGR BRに沿って通信)の分岐識別子タグBR IDに質問し、判断95で最近平滑した命令が分岐命令であるかどうかを決定する。最近質問された分岐識別子タグBR IDがその命令が分岐ではないことを指示している場合(判断95がNO)、制御はプロセス96へ渡されて次の命令を待機し、この時プロセス94は繰り返されて再び分岐識別子BR IDに質問する。
【0063】
判断95で最近平滑した命令が分岐であると決定されると(この例では、判断95がYESとなるように、質問される分岐命令Ixの時)、平滑した分岐命令Ix(すなわちこれと関連する制御情報)が分岐キュー92aに押し出され、パイプラインの以後の命令から可能な先取りアドレス及び命令の到着を待機する。分岐命令Ixが分岐キュー92aにいったん配置されると、次にプロセス100が実行されて分岐目標識別子タグBRTRG IDに質問する。判断101は、質問命令が分岐キュー92aに配置された現在の分岐命令の分岐目標であるかどうかを決定する。そうでない場合(判断101がNO)、連続して以後平滑する命令に対してプロセス100が繰り返される。
【0064】
分岐命令Ixの分岐目標に対応する命令が平滑したかどうかを決定する判断101で、分岐命令Ixの次のフェッチ時に可能な先取りの解析が作動される。図6に図示したプロセスによると、先取りキュー92a中の分岐命令Ixに対する先取り質問/更新プロセス105が実行される。プロセス105aはプロセス102より開始し、ここで各平滑命令のエントリ83に対するバスTAG CK上の各種のタグの状態が平滑キュー及びタグ検査回路27の平滑キュー先取り更新制御論理90により解析され質問される。
【0065】
発明の本実施例によると、先取りは、プログラム中の次の分岐の目標に対応し、キャッシュ・ミスと関係する、以後の命令に対する分岐命令に関連している。発明の本実施例によると、次の分岐の目標に達するまで、又はキャッシュ・ミスが検出されるまで各平滑分岐命令(例えば分岐命令Ix)は分岐キュー92aに保持される。同様に、分岐キュー92aを去った各命令は、次の分岐の目標に達するまで(まだ到達していない場合)、又はキャッシュ・ミスを検出するまで、又は命令が分岐キュー92bの全長に沿って進行して新たな分岐命令によって押し出されるまで、分岐キュー92bに保持される。適当なタグの読み取り後、判断103は、最近平滑した命令が分岐命令、特に分岐命令Ixに続く次の分岐の目標であるかどうかを決定する。そうでない場合(判断103がNO)、次いで判断104が実行されて、最近の平滑命令が何らかの長さのキャッシュ・ミスと関連しているかどうかを決定する。判断104がNOの場合、制御はプロセス102に戻って、ここでバスTCKは次の平滑命令を質問される。
【0066】
上述したように、判断103の肯定結果は、最近の平滑命令がパイプライン中の分岐命令Ixに続く分岐命令の分岐目標であることを意味している(すなわち、その分岐目標識別子タグBRTRG IDがセットされ、その次の分岐命令を指している)。この場合、キャッシュ・ミス・タグL1 MISS、L2 MISS、及び型式ビットI/Dが判断107で解析されてこの分岐目標のフェッチが任意のレベルのキャッシュ・ミスを生じたかどうかを決定する。そうである場合(判断107がYES)、平滑キュー及びタグ検査回路27は、この分岐目標と関連する命令の先取りは分岐命令Ixの次の発生時に有用であると結論し、このような場合、プロセス112で、分岐命令Ixの制御情報と組み合せたそのミス・タグL1 MISS、L2 MISS及び型式ビットI/Dと共にこの目標命令に対するエントリ83の論理アドレスフィールドLAを保存する。キャッシュ・ミスが分岐命令Ixの目標(実行又は非実行)から次の1又は2キャッシュ線路中のアドレスからの命令キャッシュ・ミスの場合、プロセス112はキャッシュ・ミスを適切な先取り付勢ビットT0、T1、N0、N1と関連付けて分岐目標アドレスを使用してキャッシュ線路の先取りを付勢する。次いで分岐命令Ixはプロセス114で分岐キュー92aから分岐キュー92bへ進み、これに更に先取りが関連しているかどうか決定する。反対に、次の分岐命令の目標がキャッシュ・ミスを起こさない場合(判断107がNO)、目標の先取りは有用でなく、したがってプロセス114は直接実行され、分岐命令Ixを分岐キュー92aから取り除き、これを分岐キュー92bへ押し込む。
【0067】
最近に平滑した命令が次の分岐の分岐目標ではなく(判断103がNO)、キャッシュ・ミスを起こした場合(判断104はYES)、判断109が次に実行されて分岐キュー92a中の分岐命令Ixに対するエントリが一番古いものであるかどうか決定する。その場合、プロセス112が分岐命令Ixと関連して実行されて、先取りに関連する適当な制御情報(すなわち、ミス・タグの状態、先取りがデータ又は命令であるかの指示、実行及び非実行指示子の設定、等)と共に最近平滑した命令のエントリ83のフェッチ・タグLAにより指定されたアドレスへ先取りを関連させる。次いでプロセス114を実行して分岐キュー92aから分岐命令Ixを分岐キュー92bへ移動し、必要とされる他の適当な先取りを待機する。
【0068】
非分岐目標キャッシュ・ミスが平滑した時に、分岐命令Ixがキュー92a中で最も古参の分岐命令でない場合(判断109がNO)、先取りの関連付けは最古参のキュー92a中の分岐命令に対して行われる。次いで平滑キュー先取り更新制御論理90がこれに従って分岐キュー92a中の各々のエントリを進行させる。この場合、判断111は必ずしもNOではなく、従って分岐命令Ixは分岐キュー92aに留まって次の平滑命令を待機する。
【0069】
次の分岐目標命令を受取ることにより、又はキャッシュ・ミスと関連されることにより分岐命令Ixが分岐キュー92aから移動されたかに係わらず、プロセス114に続いて、先取りキュー92b中の分岐命令Ixの先取り質問/更新プロセス105bが実行される。先取り質問/更新プロセス105bは、第2の先取りが分岐命令Ixと関連されていることを除いては、先取り質問/更新プロセス105aと同一である。勿論、分岐キュー92b中の命令に対する先取り関連をトリガする同一の条件が分岐キュー92a中の命令との前記関連付けも生じさせる。このような場合、発明の望ましい実施例によると、同一のキャッシュ・ミスに対して複数の先取り関連付けが行われる。次の分岐の分岐目標が平滑するまで(これがまだ発生していない場合)、キャッシュ・ミスに出会うまで、又は満員の時に他の命令のこれへの追加により分岐キューから押し出されるまで、分岐命令Ixは分岐キュー92bに留まる。
【0070】
図1から図5を参照すると、分岐命令Ixが分岐キュー92bを出る時には、先取りアドレスと関連制御情報とともにその制御情報は、分岐命令Ixの実行と完了に関するその分岐予測の結果と他の情報と共にバスUPD上で更新論理70へ送り戻される。
【0071】
更新論理70はバスUPD上で平滑キュー及びタグ検査回路27から分岐命令Ixに対する識別及び制御情報と共に先取り情報を受取り、BTB56の対応するエントリ63を更新し、先取りフィールドを適切に更新する。ここで図7を参照すると、BTB56を更新してこの先取り情報を含ませるための更新論理70により実行される更新プロセスの例が以下に説明される。
【0072】
プロセス120では、更新論理70は分岐命令Ixに対する平滑キュー及びタグ検査回路27からのバスUPD上の制御及びアドレス情報を受取る。上述したように、発明の望ましい実施例によると、この情報は2つの一般的なアドレス先取りに対するアドレス及び制御情報を含む(各々分岐キュー92a、92bで発生された先取りに対応する先取りPFA、PFBとして図7に参照されている);加えて、この情報は先取り付勢ビットT0、T1、N0、N1の制御下で暗黙アドレス先取りに対するアドレス及び制御情報を含む。勿論、バスUPD上の情報は分岐命令Ixに関する識別情報も含むため、更新論理70はプロセス120でこの命令に対するBTB56中の適切なエントリ63を選択可能である。この時点で従来の方法で更新論理70により更新するため分岐予測の結果もバスUPD上に与えられる。
【0073】
判断121は分岐命令Ixと関連しているBTB56中のエントリ63に質問して、その先取りビットのどちらか(PF0、PF1)が空であるかどうかを決定する。図4に戻ると、判断121は対応するエントリ63の先取り制御部分PF CTL中の先取り制御ビットPF0C、PF1Cの先取りアクセス部分ACCに質問することにより実行されて、どちらか又は両方が不正(00)コードを含んでいるかどうかを決定する。暗黙アドレス先取りの場合、カウンタT0 CTR、T1 CTR、N0 CTR、N1 CTRが質問されてどれかが0にセットされているかどうか決定する。これらの条件のどれもが真でない場合(判断121がNO)、以下で説明するように制御は判断125へ渡される。判断121がYESの場合、空の先取りフィールドPF0、PF1は新たに受取った先取りPFA、PFBの一方のアドレス及び制御情報を受取る。
【0074】
プロセス122では、それ故、エントリ63の先取りフィールドPF0、PF1の空のものがロードされる。特に、平滑キュー及びタグ検査回路27により識別された先取りPFA、PFBの一方の論理アドレス(又は場合によっては物理アドレス)はアドレスフィールドPF0 ADDR、PF1 ADDRの適当な方に記憶され、対応する制御ビットPF0C、PF1Cがセットされて先取りが命令であるか又はデータ(又は両方)であるかを指示する。暗黙アドレス先取りの場合、対応する先取り付勢ビットT0、T1、N0、N1が付勢される。判断121により決定されるようにBTB先取りフィールドの一方のみが空で、2つの可能な新たな先取りPFA、PFBが利用可能な場合、プロセス122は所定の優先度方式にしたがって実行される。例えば、キャッシュ・ミス・タグL1MISS、L2 MISSの状態を使用して互いに対する先取りPFA、PFBの優先度を決定しても良い。この場合、高レベルのキャッシュ・ミスを有する新たな先取りPFA、PFBの一方(例えば、レベル2キャッシュ11でのキャッシュ・ミスはレベル1キャッシュ16i でのキャッシュ・ミスより高レベルのキャッシュ・ミスである)を分岐命令Ixに対するBTB56のエントリ63の空の先取りフィールドPF0、PF1へロードする。又は、先取りPFA(すなわち、平滑キュー及びタグ検査回路27によって定義される最初の、又は最近接の先取り)が常に優先度を有するものとしても良い、何故ならこれは対応する分岐命令Ixにプログラム順序で最も近いからである。プロセス122に続いて、判断123を実行して、新たな先取りPFA、PFBがエントリ63にロードされるよう残っているかどうかを決定する(これに対する空のエントリPF0、PF1がない)。そうでない場合、更新は終了する。そうである場合(判断123がYES)、判断125が次に実行される。
【0075】
本発明のこの望ましい実施例によると、判断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、PF1が新たな情報を受取る。次いでプロセス130でこの先取りフィールドに対してLRUビットがセットされ、判断125が実行されて他の新たな先取りPFA、PFBを他のフィールドに適当な場合にロードするかどうかを決定する。
【0076】
残りの新たな先取りPFA、PFBがBTB56のエントリ63を置き換えるのに十分な優先度ではない時(判断125がNO)、先取りを開始するための目的の更新論理70によるBTB56の更新は完了する。
【0077】
ここで図8を参照すると、動作時に、上述したようにエントリ63が更新されると、先取り制御論理23と組み合わされてBTB56により先取りが実行される。この操作はプロセス132から開始し、ここでBTB56のセレクタ及びタグ比較器61(図3)は各新たな命令のフェッチ・アドレスをBTB56中のタグフィールドTAGの内容と比較する。判断133で合ううものがない限りプロセス132が繰り返される。線路FA(図2及び図3)上で整合するフェッチ・アドレスを受取ると(判断133がYES)、これは多分同じ分岐命令をフェッチすることを指示しているが、プロセス134を実行して分岐命令用の適当な分岐目標アドレスを発生する。無条件分岐の場合、整合したエントリ63の目標フィールドTARGETが分岐目標アドレスとしての役割を果たす。条件分岐は上述したようなPHT53と組み合せたBTB56により予測されたその結果を有し、実行されると予測された分岐に対する分岐目標アドレスとして整合エントリ63の目標フィールドTARGET又は実行されないと予測された分岐に対する次の連続フェッチ・アドレスのどちらかを選択する。次いでどちらの場合であれ分岐目標アドレスが線路FA上の次のフェッチ・アドレスとして使用され、上述し、かつ従来の方法のように、プロセス136でμTLB22に、次いでレベル1命令キャッシュ16i に印可される。
【0078】
本発明の望ましい実施例によると、整合エントリ63で指示される先取りは図8に図示するように、プロセス136での次の命令のフェッチと並列に先取り制御論理23により実行される。その中でも、先取りアドレスフィールドPF0ADDR、PF1 ADDRに対応する先取りと、先取り制御部分PF CTLの先取りビットT0、T1、N0、N1により指示される暗黙キャッシュ線アドレスを使用した先取りは、内部帯域が許す場合には並列に実行され、又は代わりに優先方式に従って連続的に実行される。例えば、分岐目標に対して暗黙キャッシュ線アドレスを使用した先取り(すなわち、先取りビットT0、T1、N0、N1による先取り)は最高の優先度を有している、何故ならそれは分岐の目標後直に実行される命令に関係しており、従ってすぐに低レベル・キャッシュ(例えばレベル1命令キャッシュ16i )にアクセスされ配置されることが望ましい。発明の望ましい実施例によると、先取り制御論理23が各種の先取りの順序と優先度を決定する。
【0079】
平滑キュー及びタグ検査回路27により決定され、又整合エントリ63の先取りフィールドPF0、PF1に記憶された先取りに対しては、プロセス1380、1381 が図8で並列に実行されるよう図示され、ここで先取り制御論理23がアドレスフィールドPF0 ADDR、PF1 ADDRの内容を直接又は間接にレベル2キャッシュ11へ付加する(すなわち、物理アドレスとして直接的に、又はTLB19を介して間接的に)。上述したように、プロセス1380 、1381 は必要に応じて先取り制御論理23の制御下で連続的に実行される。説明の都合上、先取りPF0を実行するマイクロプロセッサ10の動作を以下に説明するが、フィールドPF1 ADDRで指定されたアドレスの先取りも同様に実行されることを理解すべきである。
【0080】
プロセス1380 で、アドレスフィールドPF0 ADDRの内容は、内容が物理アドレスに対応する場合には直接的に、又はその内容が論理アドレスに対応する場合はTLB19を介して、上述した方法で先取り制御論理23によりレベル2キャッシュ11に付加される。判断139で、レベル2キャッシュ11の従来のタグ比較回路は、PF0 ADDRのアドレスに従って先取りすべきデータ又は命令がその中に存在するかどうか(すなわちキャッシュ・ヒット又はキャッシュ・ミス)を決定する。キャッシュ・ミスの場合(判断139がNO)、先取り制御論理23はプロセス142でカウンタPF0 CTRの内容を増分させ、場合に応じて外部キャッシュ307又は主メモリ305へのメモリ・アクセスが通常の方法で開始される。レベル2キャッシュ・ミスのこの場合、エントリ63の先取りフィールドPF0中のアドレスに従って先取り制御論理23により要求された先取りはマイクロプロセッサ10の全体性能を著しく改善する、何故ならキャッシュ・ミスによる厳しい不利益(25又はそれ以上のサイクルに及ぶ)はあまり重大でない時、現在のプログラムがアドレスフィールドPF0 ADDR中のアドレスが指しているデータ又は命令を必要とする時より十分前に生じるためである。
【0081】
しかしながら、判断139がYESの場合、先取りすべきデータ又は命令はレベル2キャッシュ11又はより低いところ(すなわちレベル1キャッシュ16の内の一方)にあり、先取り制御論理23はプロセス140でカウンタPF0 CTRの状態を減少させる。この時点で必要に応じて所要情報がより低いレベルのキャッシュ(例えばレベル1キャッシュ16の一方)へ移動される。判断141で、先取り制御論理23はPF0 CTRの状態を質問し、その内容が零の場合、プロセス143を実行して対応する先取りエントリPF0を不正化する(制御部分PF0Cのアクセス・ビットACCを00にセットすることにより)。このプロセスは、エントリ63の先取りフィールドPF0により指示される先取りは性能を顕著に改善するにはあまり有効ではないことを示している、何故なら先取りにより探求されたデータ又は命令は既に低レベル・キャッシュ・メモリにあるからである。カウンタPF0 CTRの状態が零でない場合、先取りフィールドPF0は正当のままであるが、情報は既に低レベル・キャッシュ・メモリに存在しているため、これ以上のメモリ・アクセスは不要である又は有用ではない。
【0082】
本発明の望ましい実施例によると、それ故、マイクロプロセッサと対応するシステムの性能に著しい改善が得られる。特に、情報が実際に必要とされる時よりも十分前に低レベル・キャッシュ・メモリへ移動される可能な先取りアドレスを識別する本発明の利点により、キャッシュ・システムの性能(オンチップ及びオフチップの両方)は非常に改良される。これは、パイプラインを流れる命令の早期経路の結果を使用することにより、又分岐予測機構と組み合せて発明の望ましい実施例による知能的な方法で得られる。それ故、通常のシステム機能には最小の影響のみでかつ相対的に小さなコストでこれらの顕著な改良が得られると考えられる。
【0083】
その望ましい実施例に従って本発明を記述してきたが、これらの実施例に対する変更や修正、本発明の利点と有効点を得る変更や修正は本明細書と図面を参照する当業者には明らかになるものと考えられる。このような変更と修正は本明細書の特許請求の範囲に請求する本発明の範囲内にあるものと考えられる。
【図面の簡単な説明】
【図1】本発明の望ましい実施例により構成されたマイクロプロセッサとシステムのブロック形式の電気配線図。
【図2】本発明の望ましい実施例による図1のマイクロプロセッサ中のフェッチ装置のブロック形式の電気配線図。
【図3】本発明の望ましい実施例による図1のマイクロプロセッサ中の分岐目標バッファ、パターン履歴表、及び関連回路のブロック及び概略形式での電気配線図。
【図4】本発明の望ましい実施例による図3の分岐目標バッファ中のエントリの内容の図。
【図5】本発明の望ましい実施例による図1のマイクロプロセッサ中の平滑キュー及びタグ検査回路の構成のブロック形式での電気配線図。
【図6】本発明の望ましい実施例による図5の平滑キュー及びタグ検査回路の動作を図示する流れ図。
【図7】本発明の望ましい実施例による図3の分岐目標バッファ中の更新論理の動作を図示する流れ図。
【図8】本発明の望ましい実施例による図1のマイクロプロセッサ中の先取り制御論理の動作を図示する流れ図。
【符号の説明】
10 マイクロプロセッサ
11 レベル2キャッシュ
16 レベル1キャッシュ
23 先取り制御論理
26 フェッチ装置
27 平滑キュー及びタグ検査回路
56 分岐目標バッファ
50 フェッチ・ポインタ
53 パターン履歴表
52、57、58 マルチプレクサ
60 命令バッファ及び制御
61 セレクタ
63 BTBエントリ
70 更新論理
80 選択論理

Claims (20)

  1. 実行装置、該実行装置による実行のために命令をデコードする命令デコード装置を有し前記命令を順番に処理するように複数段からなる命令実行パイプラインと、命令アドレスに従い命令コードを記憶するための第1レベル・キャッシュ・メモリと、アドレスに従い情報を記憶するための第2レベル・キャッシュ・メモリと、前記命令実行パイプラインに使用するように前記命令コードを検索するための前記命令アドレスにより第1レベル・キャッシュ・メモリをアドレスするフェッチ装置と、を有するマイクロプロセッサにおいて、
    複数個のエントリを含む分岐目標バッファを有し、前記各エントリは、複数の分岐命令のうちの一つと関連し、この関連した分岐命令の命令アドレスに対応するタグフィールドを有し、かつ目標フェッチ・アドレスを記憶する目標フィールドを有し、前記分岐目標バッファは実行すると予測される分岐命令に対して目標フェッチ・アドレスを与え、さらに、前記各エントリは前記関連した分岐命令のための前記目標フェッチ・アドレスと組み合わせて先取りされる情報の先取りアドレスを示す少なくとも1つの先取りフィールドを有し、
    前記命令実行パイプラインに結合され、前記関連した分岐命令の実行後に前記命令実行パイプラインにより実行され、前記命令コードが記憶されている前記第1レベル・キャッシュ・メモリ中の命令アドレスに対応しないフェッチ・アドレスを有する命令を識別し、識別した前記命令に対応する先取りフィールドを発生する平滑回路を有するマイクロプロセッサ。
  2. 特許請求の範囲第1項記載のマイクロプロセッサにおいて、フェッチ装置はさらに、
    前記関連した分岐命令の命令アドレスに対応する前記分岐目標バッファのエントリから前記先取りアドレスを受け取り、該先取りアドレスを前記第2レベル・キャッシュ・メモリへ伝送するように前記分岐目標バッファに結合された先取り論理部と、
    前記関連した分岐命令の実行に応答して前記分岐目標バッファのエントリを更新するように前記命令実行パイプラインに結合された更新回路を有するマイクロプロセッサ。
  3. 特許請求の範囲第2項記載のマイクロプロセッサにおいて、
    前記命令コードが記憶されている前記第1レベル・キャッシュ・メモリ中の前記命令アドレスに対応しない前記フェッチ・アドレスに応答して前記第2レベル・キャッシュ・メモリへ前記フェッチ・アドレスを付加するメモリ制御回路をさらに有するマイクロプロセッサ。
  4. 特許請求の範囲第1項記載のマイクロプロセッサにおいて、前記第1レベル・キャッシュ・メモリはデータ・ロード・アドレスに応じたデータオペランドを記憶し、
    前記平滑回路は、前記関連した分岐命令の実行後の前記命令実行パイプラインにより実行され、前記データオペランドが記憶されている前記第1レベル・キャッシュ・メモリの前記データ・ロード・アドレスに対応しないアドレスからのデータを要求する演算に関連する命令を識別するためであり、識別した命令に対応する先取りフィールドを発生する、マイクロプロセッサ。
  5. 特許請求の範囲第1項記載のマイクロプロセッサにおいて、前記分岐目標バッファの各エントリは、前記関連した分岐命令に対する前記目標フェッチ・アドレスと組み合わせて先取りされるべき情報の先取りアドレスを指示する複数個の先取りフィールドを有するマイクロプロセッサ。
  6. 特許請求の範囲第1項記載のマイクロプロセッサにおいて、前記平滑回路は、
    前記命令実行パイプラインにより実行された分岐命令に関する制御情報を記憶する第1分岐キューと、
    前記分岐命令の実行後に前記命令実行パイプラインにより実行される命令を識別し、かつ命令コードが記憶される前記第1レベル・キャッシュ・メモリ中の命令アドレスに対応しないフェッチ・アドレス、またはデータオペランドが記憶される前記第1レベル・キャッシュ・メモリ中のデータ・ロード・アドレスに対応しないアドレスからデータを要求する演算に関連していないフェッチ・アドレスを有し、識別した命令を第1分岐キューの分岐命令の1つと関連付けるタグ検査論理と、
    を有するマイクロプロセッサ。
  7. 特許請求の範囲第項記載のマイクロプロセッサにおいて、前記タグ検査論理は、前記第1分岐キューの第1の分岐命令に続く前記第1分岐キューの第2の分岐命令の目標アドレスを識別し、該第2の分岐命令の識別した目標アドレスを前記第1の分岐命令と関連付けるためであるマイクロプロセッサ。
  8. 特許請求の範囲第7項記載のマイクロプロセッサにおいて、
    前記第1分岐キューの前記分岐命令に関する制御情報を記憶する第2分岐キューをさらに有し、
    前記タグ検査論理は、第1の識別命令を前記分岐命令に関連付けた後に前記第1分岐キューの分岐命令を前記第2分岐キューに配置し、分岐命令の実行後に前記命令実行パイプラインにより実行され、命令コードが記憶されている前記第1レベル・キャッシュ・メモリの命令アドレスに対応しないフェッチ・アドレスを有し、又はデータオペランドが記憶された前記第1レベル・キャッシュ・メモリのデータ・ロード・アドレスに対応しないアドレスからデータを要求する演算に関連付ける前記第2の命令を識別し、この第2の命令を前記第2分岐キューの前記分岐命令の内の1つに関連付ける、マイクロプロセッサ。
  9. 特許請求の範囲第1項記載のマイクロプロセッサにおいて、前記分岐目標バッファの各エントリの少なくとも1個の先取りフィールドの各々は、
    先取りアドレスを記憶する先取りアドレスフィールドを有するマイクロプロセッサ。
  10. 特許請求の範囲第9項記載のマイクロプロセッサにおいて、前記分岐目標バッファの各エントリの少なくとも1個の先取りフィールドの各々は、
    最近先取りした、先取りアドレスが前記第1又は第2レベル・メモリに記憶されているかどうかの指示を記憶する先取りカウンタを有するマイクロプロセッサ。
  11. 特許請求の範囲第1項記載のマイクロプロセッサにおいて、前記分岐目標バッファの各エントリの少なくとも1個の先取りフィールドの各々は、
    前記目標フェッチ・アドレスに続くアドレスの情報のブロックの先取りを要求する指示子を有するマイクロプロセッサ。
  12. 特許請求の範囲第1項記載のマイクロプロセッサにおいて、さらに、
    一方の側を前記命令実行パイプラインとメモリに結合し、他方の側を外部バスに結合したバス・インターフェース装置と、
    外部バスに結合した、マイクロプロセッサ用の外部の主メモリと、
    を有するマイクロプロセッサ。
  13. 命令のプログラムを実行するためマイクロプロセッサを操作する方法において、
    命令アドレスを分岐目標バッファに加えるステップであって、前記分岐目標バッファは複数個のエントリを有し、各々が分岐命令識別子を記憶するタグフィールドを有し、目標フェッチ・アドレスを記憶する目標フィールドを有し、第1先取りアドレスを記憶する第1先取りフィールドを有し、
    第1分岐命令に続く命令列の実行を監視し、キャッシュ・ミスと関連する第1命令を検出し、
    前記第1の検出した命令を前記第1分岐命令と関連付け、
    前記第1分岐命令に対応する前記分岐目標バッファのエントリの第1先取りフィールドを前記第1の検出命令に対応するアドレス及び制御情報により更新し、
    前記複数個のエントリの内の1つのタグフィールドに整合するように付加する前記分岐命令アドレスの部分に応答して、整合エントリの前記分岐目標フェッチ・アドレスを第1レベル・キャッシュ・メモリに付加し、前記第1先取りアドレスを前記第1レベル・キャ ッシュ・メモリよりレベルの高い第2レベル・キャッシュ・メモリへ付加する方法。
  14. 特許請求の範囲第13項記載の方法において、さらに
    前記監視のステップの前に、前記第1分岐命令の実行を識別し、
    前記識別の後に、前記第1分岐命令に対応する情報を第1分岐キューに配置し、
    前記関連付けの後に、前記第1分岐命令に対応する情報を前記第1分岐キューから取り除く方法。
  15. 特許請求の範囲第14項記載の方法において、さらに
    前記は位置の後かつ監視の前に、命令列の実行を監視して、前記第1分岐命令の前記目標フェッチ・アドレスに対応する命令を検出する方法。
  16. 特許請求の範囲第14項記載の方法において、前記監視ステップは、前記第1分岐命令に続く命令列の実行を監視し、前記第1分岐命令よりプログラム順序で後の第2分岐命令の前記目標フェッチ・アドレスに対応する命令を検出し、
    キャッシュ・ミスと関係している第2分岐命令の前記目標フェッチ・アドレスに対応する検出命令に応答して、関連付け及び更新のステップを実行し、
    前記キャッシュ・ミスと関係しない前記第2分岐命令の前記目標フェッチ・アドレスに対応する検出命令に応答して、前記第1分岐キューから前記第1分岐命令に対応する情報を取り除くステップを実行する方法。
  17. 特許請求の範囲第14項記載の方法において、さらに
    前記第1分岐キューから前記第1分岐命令に対応する情報を取り除いた後に、前記第2分岐キューへ前記第1分岐命令に対応する情報を配置し、
    前記命令列の実行を監視して、キャッシュ・ミスと関連する第2命令を検出し、
    前記第2の検出命令を前記第1分岐命令と関連付け、
    関連付けの後に、前記第2分岐キューから前記第1分岐命令に対応する情報を取り除き、
    前記第1分岐命令に対応する前記分岐目標バッファ中のエントリの第2先取りフィールドを、第2検出命令に対応するアドレス及び制御情報により更新する
    方法。
  18. 特許請求の範囲第13項記載の方法において、前記第1検出命令に対応するアドレス及び制御情報は前記第1検出命令に対して発生するキャッシュ・レベル・ミスの指示子を有する方法。
  19. 特許請求の範囲第13項記載の方法において、前記分岐目標バッファの各エントリは先取り制御フィールドを有し、前記第1先取りフィールドが正当な前記第1先取りアドレスを有するかどうかを指示する前記第1先取りフィールドと関連する第1先取り制御部分を有する方法。
  20. 特許請求の範囲第19項記載の方法において、前記先取り制御フィールドはさらに、付勢された時に、前記目標フェッチ・アドレスに対するメモリの追加のブロックを先取りすべきであることを指示するキャッシュ線先取り指示子を有し、さらに、付勢された前記キャッシュ線先取り指示子に応答して、前記目標フェッチ・アドレスを基にキャッシュ線先取りアドレスを第2レベル・キャッシュ・メモリへ付加する方法。
JP37022297A 1996-12-23 1997-12-24 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ Expired - Fee Related JP3907809B2 (ja)

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 JPH10232776A (ja) 1998-09-02
JP3907809B2 true 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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101894894B1 (ko) * 2017-06-16 2018-09-05 서울대학교산학협력단 바이트코드 처리 장치 및 동작 방법

Families Citing this family (50)

* Cited by examiner, † Cited by third party
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
EP0945795B1 (en) * 1998-03-27 2003-06-18 Motorola, Inc. Computer system having a multi-pointer branch instruction and method
EP0945793B1 (en) * 1998-03-27 2003-06-04 Motorola, Inc. Computer system having a single 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
US20070186050A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for data lines
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
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 富士通株式会社 動画像処理装置及びプリフェッチ制御方法
US7594079B2 (en) 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
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
US8060701B2 (en) * 2006-12-08 2011-11-15 Qualcomm Incorporated Apparatus and methods for low-complexity instruction prefetch system
US8756404B2 (en) 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline
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
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 中国人民解放军国防科技大学 一种分支目标预测地址在流水线中的传递方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101894894B1 (ko) * 2017-06-16 2018-09-05 서울대학교산학협력단 바이트코드 처리 장치 및 동작 방법
US10732977B2 (en) 2017-06-16 2020-08-04 Seoul National University R&Db Foundation Bytecode processing device and operation method thereof

Also Published As

Publication number Publication date
EP0851344A2 (en) 1998-07-01
EP0851344A3 (en) 2000-01-19
JPH10232776A (ja) 1998-09-02
US6119222A (en) 2000-09-12

Similar Documents

Publication Publication Date Title
JP3907809B2 (ja) 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
US7743232B2 (en) Multiple-core processor with hierarchical microcode store
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US6687789B1 (en) Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US6542984B1 (en) Scheduler capable of issuing and reissuing dependency chains
US5935241A (en) Multiple global pattern history tables for branch prediction in a microprocessor
US6502185B1 (en) Pipeline elements which verify predecode information
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US6009516A (en) Pipelined microprocessor with efficient self-modifying code detection and handling
US6622237B1 (en) Store to load forward predictor training using delta tag
US6564315B1 (en) Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
JP2003514299A (ja) インデックスおよび任意の様式一致に基づいてデータを転送するストアバッファ
JPH02234248A (ja) 仮想メモリシステムをベースとするデジタルコンピュータの命令パイプライン内の予めフェッチした命令でメモリアクセス例外を処理する方法
US6721877B1 (en) Branch predictor that selects between predictions based on stored prediction selector and branch predictor index generation
US10310859B2 (en) System and method of speculative parallel execution of cache line unaligned load instructions
US6622235B1 (en) Scheduler which retries load/store hit situations
WO2001050253A1 (en) Scheduler capable of issuing and reissuing dependency chains
US6647490B2 (en) Training line predictor for branch targets
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
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
US6446189B1 (en) Computer system including a novel address translation mechanism
US6363471B1 (en) Mechanism for handling 16-bit addressing in a processor
US5878252A (en) Microprocessor configured to generate help instructions for performing data cache fills
US6704854B1 (en) Determination of execution resource allocation based on concurrently executable misaligned memory operations
US20040168043A1 (en) Line predictor which caches alignment information

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