JP2002091761A - 命令履歴キャッシングを使用して推測的に命令を実行する回路、製品、およびそのための方法 - Google Patents

命令履歴キャッシングを使用して推測的に命令を実行する回路、製品、およびそのための方法

Info

Publication number
JP2002091761A
JP2002091761A JP2001240748A JP2001240748A JP2002091761A JP 2002091761 A JP2002091761 A JP 2002091761A JP 2001240748 A JP2001240748 A JP 2001240748A JP 2001240748 A JP2001240748 A JP 2001240748A JP 2002091761 A JP2002091761 A JP 2002091761A
Authority
JP
Japan
Prior art keywords
instruction
cache
address
history
circuit
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
Application number
JP2001240748A
Other languages
English (en)
Other versions
JP3659340B2 (ja
Inventor
Arnold Luick David
デーヴィッド・アーノルド・ルイク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2002091761A publication Critical patent/JP2002091761A/ja
Application granted granted Critical
Publication of JP3659340B2 publication Critical patent/JP3659340B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

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

Abstract

(57)【要約】 【課題】 プロセッサによって実行される命令に関連す
る履歴データに基づいてこのような命令を推測的に取り
出す回路、製品、およびそのための方法を提供する。 【解決手段】 具体的には、所与の命令に関する履歴デ
ータが、この所与の命令の直後に実行された他の命令を
識別する。いくつかの実施態様では、メモリに記憶され
ている複数の命令の予測される次の命令を表す履歴デー
タを記憶するために命令履歴キャッシュが使用され、予
測される次の命令と実際の次の命令が並列に検索できる
ように、この命令履歴キャッシュは二次命令キャッシュ
と並行して操作される。予測される次の命令は、命令履
歴キャッシュから検索されるときに推測的に実行され
る。しかし、予測される次の命令と実際の次の命令が一
致しない場合、このような命令の実行は終了する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、全般的には集積回
路デバイスのアーキテクチャおよび設計に関し、詳細に
はプロセッサ集積回路デバイスにおける分岐予測に関す
る。
【0002】
【従来の技術】コンピュータなどのデータ処理システム
のユーザは、ますます複雑にかつ困難になるタスクを処
理するために、引き続きこのようなシステムにより高い
性能を要求している。このようなシステムを操作するプ
ロセッサのより高い性能は、クロック速度を高め、それ
によって個々の命令をより高速に処理することによって
得ることができる。しかし、複数の命令を互いに並列に
実行することによって比較的高い性能利得が達成されて
いる。
【0003】「パイプライン処理」と呼ばれる並列処理
方法があり、この方法では、命令は、それを並列に処理
する必要のある様々な動作を実行するプロセッサ内の実
行ユニット用のパイプラインに供給される。たとえば、
典型的な命令を処理する場合、パイプラインは、メモリ
から命令を取り出し、命令を実行し、命令の結果を再び
メモリに書き込む別々の段を含むことができる。したが
って、命令シーケンスがパイプラインに順次供給される
場合、第1の命令の結果がパイプラインの第3段によっ
て再びメモリに書き込まれるときに、次の命令が第2段
によって実行され、しかも次の命令が第1段によって取
り出される。個々の各命令を処理するのに数クロック・
サイクルかかることがあるが、他の命令も同時に処理さ
れるので、プロセッサの全体的なスループットはずっと
高くなる。
【0004】プロセッサ内で複数の実行ユニットを使用
して複数の命令を並列に実行することを試みることによ
って、より高度な並列処理を実行することもできる。複
数の実行ユニットを含むプロセッサをしばしば「スーパ
ースカラ」プロセッサと呼び、このようなプロセッサは
スケジューリング回路を含む。スケジューリング回路
は、できるだけ多くの命令が同時に処理されるように命
令を様々な実行ユニットに効率的にディスパッチするこ
とを試みる。しかし、1つの命令を、別の命令が完了す
るまで処理できないことが多いので、多くの場合、比較
的複雑な意思決定回路が必要とされる。たとえば、第1
の命令がメモリからの値をレジスタにロードし、第2の
命令がレジスタの内容に一定の数を加える場合、第2の
命令は通常、第1の命令の実行が完了するまで実行でき
ない。
【0005】比較的複雑なスケジューリング回路を使用
すると、集積回路デバイス上の顕著な量の回路が占有さ
れ、プロセッサの全体的な実行速度が低下する可能性が
ある。このため、VLIWプロセッサに対して顕著な開
発作業が実施されている。このようなプロセッサでは、
どの命令が並列に処理できるかに関する決定は、実行中
ではなくプログラムの作成時に下される。VLIWプロ
セッサは通常、複数の実行ユニットを含み、各VLIW
命令は、パーセルと呼ばれる複数のプリミティブ命令を
含み、パーセルは互いに同じ時間に実行できることが知
られている。したがって、VLIW内の各プリミティブ
命令は、スケジューリングに関連する余分なオーバヘッ
ドなしに1つの実行ユニットに直接ディスパッチするこ
とができる。VLIWプロセッサは、コンピュータ・ユ
ーザによって書かれたコンピュータ・プログラム用の適
切なVLIW命令を生成するために、コンパイラと呼ば
れる高度なコンピュータ・プログラムを利用する。VL
IWプロセッサは通常、命令の実行のスケジューリング
に関連するオーバヘッドがない場合、スーパースカラ・
プロセッサよりも簡単で効率的である。
【0006】プロセッサの種類にかかわらず、コンピュ
ータの性能に関する他の問題は、プロセッサとメモリの
間の情報の転送に関する問題である。特に、処理速度
は、メイン・メモリの速度よりもずっと早いペースで高
められている。そのため、多くのこのようなシステムで
は、比較的費用効果の高い形で性能を向上させるために
しばしばキャッシュ・メモリまたはキャッシュが使用さ
れる。
【0007】キャッシュは通常、比較的高速のメモリで
あり、1つまたは複数のプロセッサと、特に揮発性メモ
リ装置または非揮発性メモリ装置、大容量記憶装置、お
よび/または外部ネットワーク記憶装置に実装されるよ
うな比較的低速のメモリとの間に結合される。キャッシ
ュは、プロセッサによる選択されたメモリ・アドレスへ
のアクセス要求がキャッシュによって処理されるよう
に、選択されたメモリ・アドレスに記憶されている情報
のコピーを維持することによって、アクセスの速度を高
める。キャッシュに記憶されていないメモリ・アドレス
に関するアクセス要求を受け取ると必ず、キャッシュは
通常、その情報をメモリから検索し、プロセッサへ転送
する。さらに、キャッシュが満杯である場合、通常、最
初に使用されたメモリ・アドレスに関する情報が破棄さ
れるか、あるいはメモリに戻され、最後にアクセスされ
たメモリ・アドレスに関する情報のための空間が設けら
れる。
【0008】キャッシュの利益が最大になるのは、「キ
ャッシュ・ヒット」と呼ばれるキャッシュされているメ
モリ・アドレスへのアクセス要求の数が、「キャッシュ
・ミス」と呼ばれるキャッシュされていないメモリ・ア
ドレスへのアクセス要求の数に対して最大であるときで
ある。通常キャッシュ・ミスの結果として起こる追加の
オーバヘッドにもかかわらず、キャッシュ・ヒットの割
合が高いかぎり、システムの全体的なアクセス速度は高
くなる。
【0009】しかし、オペレーティング・システム・コ
ードなど、多くの商用プログラム・コードを用いた場
合、コードが再使用されることがなく、かつ命令に指定
された条件または試験の結果に基づいてプロセッサに様
々な命令経路を選択させるために使用される多数の分岐
命令が存在するため、キャッシュ内の命令のミス率は比
較的高いことが多いことが判明している。また、多くの
オペレーティング・システム・コードはエラーおよび例
外の処理に使用され、したがってほとんど実行されず、
したがって、キャッシュはしばしば、実行されることの
ない顕著な数の命令を一時的に記憶する。
【0010】さらに、VLIWプロセッサの場合、コン
ピュータ・プログラムをVLIW互換フォーマットにコ
ンパイルすると通常、プログラム・コードが2倍ないし
4倍に拡大するので、多くの場合、ミス率がずっと高く
なることが判明している。また、VLIWプログラム・
コード中の分岐命令の相対頻度はずっと高く、通常、命
令3つごとに分岐が2つある。これに対して、スーパー
スカラ・プロセッサを用いた場合、分岐は命令5個ない
し6個ごとに1つである。
【0011】キャッシュのヒット率を高める1つの方法
は、キャッシュのサイズを大きくすることである。しか
し、キャッシュ・メモリは、多くの場合比較的高価であ
り、特に、キャッシュを同じ集積回路デバイス上のプロ
セッサと一体化する場合、設計上の制約によって制限さ
れることが多い。プロセッサと一体化された内部キャッ
シュは通常、独立の回路に実装される外部キャッシュよ
りも高速である。一方、設計およびコスト上の制約のた
めに、内部キャッシュは通常、外部キャッシュよりもサ
イズがずっと小さい。
【0012】1つの費用効果の高い代替策は、比較的小
形であるがより高速な一次キャッシュが比較的大形であ
るがより低速な二次キャッシュと連鎖するように、様々
な速度の複数のキャッシュを連鎖させることである。命
令およびデータを別々のデータ・キャッシュと命令キャ
ッシュに分離することもできる。たとえば、命令につい
ては、いくつかのプロセッサは、比較的小形の内部レベ
ル1(L1)命令キャッシュを実装し、L1命令キャッ
シュとメイン・メモリ記憶域との間に追加の外部レベル
2(L2)命令キャッシュが結合される。通常、L1命
令キャッシュのアクセス時間は1クロック・サイクルで
あり、したがって、プロセッサによって命令を処理する
のとほぼ同じ速度でプロセッサにデータを供給すること
ができる。一方、外部L2命令キャッシュのアクセス時
間は多くの場合、少なくとも5クロック・サイクルであ
り、したがって、プロセッサがL2命令キャッシュへの
メモリ・アクセスを大幅に利用する必要がある場合、プ
ロセッサはしばしば停止し、キャッシュによってデータ
が検索されるのを待ち、したがって、プロセッサの性能
が著しく低下する。
【0013】メモリからの命令の検索に関連する遅延を
最小限に抑えるための試みとして、多くのプロセッサは
プリフェッチ回路を含む。プリフェッチ回路は、ただち
に実行する必要のあるのはどの命令かを「予測」し、次
いでプロセッサがこの命令を必要とする前にこの命令を
メモリから推測的に検索することを試みる。分岐命令は
命令をプリフェッチするうえで最大の障害になり、その
ため、プリフェッチ回路は通常、「分岐予測」と呼ばれ
る動作を実行し、分岐命令の後で特定の命令経路が選択
されるかどうかを推測的に判定することを試みる。
【0014】1つの分岐予測方法は、すでに実行された
分岐命令によってある分岐が選択されたかどうかについ
ての履歴(ヒストリー)を維持する分岐履歴テーブルま
たは分岐履歴キャッシュを利用するものである。特に、
多くの場合、ある分岐命令が実行されるたびに同じ命令
経路が選択されることが判明している。次に特定の分岐
命令が実行されるときに同じ経路が選択されると予測す
ることによって、この予測は通常、成功する。
【0015】従来型の分岐履歴テーブルは通常、特定の
分岐命令が最後に実行されたときにその命令に関する条
件が満たされたかどうかの表示を記憶する。しかし、従
来型の分岐履歴テーブルを用いた場合、テーブルにアク
セスして、ある分岐が選択されたかどうかを判定し、そ
の後で次の命令用のアドレスを生成し、次いで、生成さ
れたアドレスに記憶されている命令を取り出さなければ
ならないことが多い。生成されたアドレスにある命令が
一次キャッシュにはない場合、プロセッサは停止し、二
次キャッシュがフェッチ要求を処理するのを待つ。
【0016】したがって、従来型の分岐履歴テーブル
は、分岐命令に関連するオーバヘッドを低減するが、多
くの場合、依然としてある程度のオーバヘッドが存在す
る。そのため、プロセッサ性能が悪影響を受ける。さら
に、VLIWプログラム・コードを用いた場合、分岐命
令により頻繁に出会うので、プロセッサ性能に対する分
岐命令の悪影響はずっと大きくなる。
【0017】
【発明が解決しようとする課題】したがって、本発明の
目的は、分岐命令に関連するオーバヘッドを最小限に抑
え、特にVLIWプロセッサやスーパースカラ・プロセ
ッサのプロセッサ性能を最大にする改良された分岐予測
方法を提供することである。
【0018】
【課題を解決するための手段】本発明は、プロセッサに
よって実行される命令に関連する履歴データに基づいて
このような命令を推測的に取り出すデータ処理システ
ム、回路構成、集積回路デバイス、プログラム製品、お
よびそのような独自のプリフェッチ回路構成を利用する
方法を提供することによって、従来技術に関連するこれ
らおよびその他の問題に対処する。具体的には、所与の
命令に関する履歴データが、この所与の命令から1サイ
クルまたは複数サイクル後に実行された他の命令を識別
する。命令ストリームが多くの場合、同じ経路をたどる
傾向があるという認識に基づいて、過去の次の命令に関
する履歴情報が、推測的命令取出しのための信頼できる
予測値であることが判明している。
【0019】本発明の一態様によれば、一次命令キャッ
シュおよび二次命令キャッシュを含むメモリに記憶され
ている複数の命令の予測される次の命令を表す履歴デー
タを記憶するために命令履歴キャッシュが使用される。
予測される次の命令と実際の次の命令がプリフェッチ回
路構成によって並列に検索できるように、この命令履歴
キャッシュはメモリ内の二次命令キャッシュと並行して
操作される。プリフェッチ回路構成はさらに、命令履歴
キャッシュから得た予測される次の命令を実行ユニット
に供給し、この命令が、実行ユニットによって第1の命
令が実行された後に実行されるように構成される。ま
た、実行ユニットと結合された予測検証回路構成は、予
測される次の命令と実際の次の命令が一致しない場合
に、実行ユニットによる予測される次の命令の実行を終
了するように構成される。
【0020】特定の分岐が選択されたかどうかを示す従
来型の分岐予測キャッシュとは異なり、本発明による命
令履歴キャッシュは、分岐命令およびその他の命令の後
で実行された実際の命令の履歴を記憶する。そのため、
ある分岐が選択されたかどうかについての表示に基づい
てアドレスを算出し命令取出しを開始することに関連す
る呼出し時間が回避され、多くの場合、命令スループッ
トが著しく向上する。
【0021】さらに、前述の構成を用いた場合、予測さ
れる次の命令が実際に、実行すべき正しい命令であるこ
とを検証する前に、この命令を推測的に取り出して実行
することができる。したがって、一次命令キャッシュで
は行うことのできない命令取出しの場合、この命令取出
しが単に二次命令キャッシュによって行われる場合と比
べて、命令を検索するのに必要な時間を短縮することが
できる。
【0022】本発明の他の態様によれば、命令履歴キャ
ッシュは、予測される次の命令を表す履歴データを記憶
するためにも使用される。しかし、予測される次の命令
はそれぞれ、メモリ内の特定の命令が実行されてから少
なくとも2サイクル後に実行すべき予測される命令を表
す。少なくとも1つの実行ユニットは、メモリから得た
第1の命令の実行を開始し、その後、メモリから得た第
2の命令の実行を開始するように構成される。さらに、
プリフェッチ回路構成は、実行ユニットによって第1の
命令が実行されるのと並行して、命令履歴キャッシュか
ら得た第2の命令の予測される次の命令をプリフェッチ
するように構成される。
【0023】言い換えれば、所与の命令に関連する履歴
データは、この命令の後で次に実行すべき命令を予測し
ない。履歴データは、所与の命令に対する将来の命令が
実行された後に次に実行すべき命令を予測する。言い換
えれば、所与の命令に関連する履歴データは、この所与
の命令から2サイクル以上後に実行すべき命令を予測す
る。多くの実施態様では、命令履歴キャッシュから命令
を推測的に検索すると、命令履歴キャッシュのアクセス
時間のために遅延が生じることが判明している。したが
って、予測される次の次の命令またはそれよりも先の予
測される他の命令を推測的に検索することによって、こ
のような命令の検索に関連する呼出し時間をさらに短縮
することができる。
【0024】本発明の他の態様によれば、次の命令を予
測する際に使用される履歴データは、メモリに記憶され
ている命令内に埋め込むことができる。この場合、実行
ユニットとプリフェッチ回路構成は互いに並行して動作
することができ、実行ユニットが、メモリに記憶されて
いる命令を実行し、同時にプリフェッチ回路構成が、こ
のような命令の履歴データによって識別される予測され
る次の命令のメモリからの検索を開始することができ
る。
【0025】履歴データを命令内に埋め込むことによっ
て、多くの場合、独立の命令履歴キャッシュの必要がな
くなり、それによって回路構成の複雑さおよび構成要素
の数が低減される。さらに、多くの実施態様、たとえば
VLIWプロセッサなどでは、履歴データが追加された
場合に、命令自体に必要なメモリ記憶域を超えた追加の
メモリ記憶域が必要とされることのないように、履歴デ
ータをVLIW命令の未使用部分に埋め込めることが多
い。
【0026】
【発明の実施の形態】本明細書に記載された本発明の様
々な実施形態は一般に、命令を推測的に取り出し実行す
るために使用される命令履歴データをキャッシュするこ
とによって動作する。通常、命令を推測的に取り出し、
そのような命令を1つまたは複数の実行ユニットへ転送
し、それらの実行ユニットによって実行させるために、
プリフェッチ回路構成が使用される。さらに、通常、履
歴データに基づいて予測を検証し、必要に応じて、誤っ
て予測された命令の実行を終了するために、予測検証回
路構成が使用される。
【0027】いくつかの実施態様では、履歴データが独
立の命令履歴キャッシュにキャッシュされる。命令履歴
キャッシュは内部キャッシュでも、あるいは外部キャッ
シュでもよく、このキャッシュは予測される次の命令の
アドレスではなく、このような命令自体を記憶し、この
ような命令の検索に関連する呼出し時間を短縮するため
に使用される。
【0028】他の実施態様では、履歴データは、通常は
次の命令を識別するアドレス、または次の命令のアドレ
スを生成できるアドレス・インデックスの形で、命令自
体内に埋め込まれる。VLIWプロセッサなどの場合、
この特徴によりしばしば、追加のメモリ記憶域要件なし
に命令の未使用部分に履歴データを記憶することが可能
になる。したがって、キャッシュ空間にコストがかかる
ことが多い場合、このような実施態様に関連する記憶域
に対する悪影響はない。
【0029】さらに、以下でより明らかになるように、
所与の命令に関連する履歴データを使用して、この命令
を実行した直後に次に実行すべき次の命令を表すことが
できるが、多くの実施態様では、別の命令用の履歴デー
タを所与の命令と関連付け、この命令用の履歴データ
が、他の命令が実行された直後に実行すべき次の命令を
表すようにすると有益である。言い換えれば、ある命令
の直後に実行すべき次の命令に関する履歴データを、メ
モリ内でこの命令からずらすことができる。
【0030】本発明は、VLIWプロセッサ、および縮
小命令セット・コンピュータ(RISC)プロセッサや
複雑命令セット・コンピュータ(CISC)プロセッサ
などのスーパースカラ・プロセッサを含め、様々なプロ
セッサ・アーキテクチャと共に使用するのに適してい
る。以下の議論は、本発明とVLIWベースのアーキテ
クチャとの併用に焦点を当てているが、当業者には、本
明細書の内容を読めば、非VLIW環境での本発明の様
々な態様および特徴の実施態様が明らかになろう。
【0031】本発明では、回路構成とは、全体的に1つ
の集積回路デバイスに実装されるか、あるいは1つまた
は複数の回路板を介して互いに電気的に結合された複数
の集積回路デバイスに実装されるかにかかわらず、導電
トレースまたはワイヤあるいはその両方を介して互いに
電気的に結合されたアナログまたはデジタルあるいはそ
の両方の電子構成要素の構成である。さらに、通常は、
ハードウェア定義プログラムと呼ばれ、デバイス上の回
路構成のレイアウトを定義する、1つまたは複数のコン
ピュータ・データ・ファイルを使用して、集積回路デバ
イスが設計され製造されることを認識されたい。これら
のプログラムは通常、設計ツールによって既知の方法で
生成され、その後製造時に、半導体ウェハに適用される
回路構成を画定するレイアウト・マスクを作製するため
に使用される。通常、これらのプログラムは、VHD
L、verilog、EDIFなどのハードウェア定義言語
(HDL)を使用して定義済みのフォーマットで生成さ
れる。したがって、完全に機能する集積回路デバイスに
実装された回路構成に関して本発明を説明し、以下でも
説明するが、当業者には、本発明による回路構成を様々
な形態のプログラム製品として配給することができ、本
発明が、この配給を実際に実施するために使用される信
号保持媒体の特定の種類にかかわらず同様に適用される
ことが理解されよう。信号保持媒体の例には、特に揮発
性メモリ装置や非揮発性メモリ装置、フロッピィ・ディ
スク、ハード・ディスク・ドライブ、CD−ROM、D
VDなどの記録可能型媒体と、デジタル通信リンクやア
ナログ通信リンクなどの伝送型媒体が含まれるが、これ
らに限らない。
【0032】例示的なデータ処理システム環境 次に図面を参照すると、これらの図面で、同じ番号はい
くつかの図全体にわたって同じ部品を示す。図1は、本
発明による例示的なデータ処理システム10を示す。一
般に、データ処理システム10は、メモリ14と結合さ
れた1つまたは複数のプロセッサ12を含み、メモリ1
4は、プロセッサによって処理される命令およびデータ
を与える。メモリ14は通常、メモリ階層を形成するよ
うにいくつかのレベルに区分される。たとえば、最大容
量のメモリは通常、入出力(I/O)サブシステム20
を介してメイン・メモリまたは主記憶装置18と結合さ
れた直接アクセス記憶装置(DASD)16などの大容
量記憶サブシステムによって代表される。主記憶装置1
8は通常、ダイナミック・ランダム・アクセス・メモリ
(DRAM)など比較的大きな揮発性メモリ・バンクで
ある。メモリ用の比較的大きなアドレス空間を設けるに
は、入出力サブシステム20、たとえば様々なローカル
・エリア・ネットワークや、ワイド・エリア・ネットワ
ークや、その他の通信設備を介して他の外部記憶域形態
にアクセスすることができる。システム間相互接続22
を介し、たとえば光ファイバ通信リンクまたはシリアル
通信リンクを介してデータ処理システム10と追加の外
部情報を相互接続することができる。
【0033】プロセッサ12と主記憶装置18の間に、
1つまたは複数のレベルのキャッシュ・メモリ、たとえ
ば、レベル3(L3)キャッシュ24、レベル2(L
2)キャッシュ26、およびレベル1(L1)キャッシ
ュ(この場合、データキャッシュ28と命令キャッシュ
30に区分される)が設けられる。図1に表わすよう
に、キャッシュ28、30と同様に、プロセッサ12内
部の同じ集積回路デバイス上にキャッシュ階層の任意の
レベルを実装することができる。別法として、L2キャ
ッシュ26、L3キャッシュ24と同様に、キャッシュ
階層の任意のレベルをプロセッサ12の外部に実装し、
別々の集積回路デバイス上に配設することができる。さ
らに、たとえばL3キャッシュ24で表されるように、
任意の所与のキャッシュが複数のプロセッサのために働
くことができる。一般に、プロセッサから始まるメモリ
階層内の各レベルは通常、プロセッサから外された次の
レベルよりも記憶容量が小さいがアクセス時間は高速で
あることも理解されたい。したがって、頻繁に使用され
るデータをプロセッサのできるだけ近くに維持し、メモ
リ・システムの効率を最大にすることが望ましい。
【0034】図1のプロセッサ12は、様々な種類のプ
ロセッサに共通するいくつかの構成要素を含む一般的な
プロセッサ・アーキテクチャを表す。データは主として
いくつかのレジスタ・ファイル32を介して処理され、
演算は、1つまたは複数の演算論理ユニット(ALU)
34によってレジスタ・ファイル上で実行される。浮動
小数点演算を1つまたは複数の浮動小数点演算ユニット
(FPU)36によって処理することもできる。一般
に、当技術分野でよく知られているように、ALUおよ
びFPU36はそれぞれ、実行ユニットとみなすことが
できる。
【0035】プロセッサ12は、レジスタ・ファイル内
のデータを処理するために、復号論理38および分岐ユ
ニット40を使用して、L1命令キャッシュ(Iキャッ
シュ)30に記憶されている様々な命令を処理する。復
号論理38および分岐ユニット40はそれぞれ、当技術
分野で一般的に理解されており、使用される特定のアー
キテクチャに応じて異なる。図の実施形態では、たとえ
ば、プロセッサ12はVLIWプロセッサであり、各命
令は、プロセッサ内の複数の実行ユニットによって並列
に実行される複数のパーセルを含む。たとえば、特にス
ーパースカラRISCアーキテクチャやスーパースカラ
CISCアーキテクチャなど、他のアーキテクチャをサ
ポートできることを理解されたい。この後者のアーキテ
クチャを用いた場合、様々な実行ユニットに適切な命令
を経路指定して最適な性能を得るためにL1 Iキャッ
シュ30と復号論理38の間に追加の論理が必要になる
ことを理解されたい。当業者には他の修正形態および変
形形態が明らかであろう。
【0036】命令履歴キャッシュ実施態様 図1に示すように、本発明による方法で使用される履歴
データを記憶するために使用される内部命令履歴キャッ
シュまたは外部命令履歴キャッシュ(IHC)42とプ
ロセッサ12を相互接続することもできる。IHC42
は特に、他のVLIW命令の後で実行すべき複数のVL
IW命令を記憶する。VLIW命令を推測的に検索する
場合に様々なキャッシュ・レベルへの追加のアクセスが
必要とされないように、IHC42は、このようなVL
IW命令のアドレスではなくこのようなVLIW命令自
体のコピーを記憶する。
【0037】図の実施形態では、VLIW命令の長さ
は、16個の32ビット・パーセルを含む64バイトで
ある。IHC42のキャッシュ・ライン長は1VLIW
命令、または64バイトである。通常、IHC42は直
接マップされ、したがって、ディレクトリは不要にな
る。IHCは、プロセッサ12内部に実装することがで
き、あるいは図1に最もよく示すように外部キャッシュ
でよい。
【0038】図2は、プロセッサ12とL2キャッシュ
26と命令履歴キャッシュ42との間の命令およびデー
タのフローを詳しく示す。この実施形態で、L2キャッ
シュ26は、キャッシュ・ライン・サイズが1KBまた
は16VLIWの外部32MB 4ウェイ・アソシエー
ティブ・キャッシュとして実装される。このため、L2
キャッシュ26は、44で識別されたディレクトリも含
む。命令およびデータは、プロセッサ12とL2キャッ
シュ26と命令履歴キャッシュ42との間で64バイト
幅バス46を介して渡される。L2キャッシュ26およ
びL2ディレクトリ44にはアドレス線47を介して4
4ビット実アドレスが供給される。この実施態様では、
L2キャッシュが実アドレスを介してアドレスされ、し
たがって、以下でより明らかになるように、プロセッサ
12で仮想/有効アドレスを実アドレスに変換する必要
がある。L2キャッシュの外部性、キャッシュにアクセ
スするのに必要なアドレス変換、およびキャッシュのマ
ルチウェイ・セット・アソシアティビティのために、こ
の実施態様のL2キャッシュは5サイクル・アクセス時
間を有するものと仮定される。他のL2キャッシュは本
発明よりも短いか、あるいは長いアクセス時間を有する
ことができることを理解されたい。
【0039】L2キャッシュ26に供給されるアドレス
は、「分岐先」アドレスとも呼ばれ、現在実行されてい
るVLIW命令から決定される実際の次の命令情報を表
わす。次の命令予測が正しいことを検証するには、、こ
のアドレス、あるいはより具体的にはこのアドレスに記
憶されている命令と、命令履歴キャッシュから推測的に
検索された命令が一致しなければならない。さらに、L
2ディレクトリ44は、線47から供給された実アドレ
スに応答して、特に、キャッシュ・ヒットが起こったか
どうかと、そうである場合に、4つのセットのうちのど
れに、要求されたキャッシュ・ラインが収納されている
かとを示す24ビット・ディレクトリ・エントリを出力
する。
【0040】命令履歴キャッシュ42はIHCアドレス
線48によって駆動され、このアドレス線には、キャッ
シュにアドレスするために使用される17ビット命令ア
ドレス・レジスタ(IAR)インデックスが与えられ
る。この実施態様の命令履歴キャッシュ42は8MB直
接マップ・キャッシュとして実装される。したがって、
通常、命令履歴キャッシュのアクセス時間をディレクト
リ・ベースのL2キャッシュと比べて短縮する、独立の
ディレクトリは必要とされない。この実施態様では、I
HC42のアクセス時間は3サイクルと仮定され、それ
に対してL2キャッシュ26のアクセス時間は5サイク
ルである。
【0041】命令履歴キャッシュ42に与えられるIH
Cアドレスは、予測される次の命令を検索するために使
用される実行中の現在の命令のアドレスであるので、
「分岐元」アドレスを表す。
【0042】プロセッサ12内のLI Iキャッシュ3
0は64KB直接マップ・キャッシュとして実装され
る。図の実施態様では、LI Iキャッシュ30のキャ
ッシュ・ライン・サイズは1KB(または16VLI
W)であり、アクセス時間は1サイクルである。
【0043】各キャッシュ26、30、および42に交
互全体的サイズまたはキャッシュ・ライン・サイズある
いはその両方を使用することができ、かつこれらのキャ
ッシュのそれぞれに他のアソシアティビティを使用でき
ることを理解されたい。したがって、本発明は、本明細
書に開示した特定の実施態様に限るべきではない。
【0044】図3は、プロセッサ52、L2キャッシュ
54、および命令履歴キャッシュ56、およびL1 I
キャッシュ58を使用する他のデータ処理システム50
を示し、これらのプロセッサおよびキャッシュは、図1
および図2のデータ処理システム10とほぼ同様に構成
される。図3に示すように、L2キャッシュ54は5サ
イクル・アクセス時間を有し、命令履歴キャッシュ56
は3サイクル・アクセス時間を有する。
【0045】IHCがプロセッサを停止せずに所与の命
令の予測される次の命令を使用できるようにするため
に、データ処理システム50は、IHCの3サイクル・
アクセス時間に対処するように所与の命令に関する履歴
データを命令2つ分だけオフセットするように構成され
る。すなわち、VLIW命令N−2、N−1、N、N+
1、N+2、およびN+3がすでに順次実行され、これ
らの命令に関する履歴データがIHC56に記憶されて
いるものと仮定すると、VLIW命令Nに関する履歴デ
ータはVLIW命令N−2に関連付けされ、VLIW命
令N+1に関する履歴データはVLIW命令N−1に関
連付けされ、以下同様である。簡単に言えば、所与のV
LIW命令に関連する履歴データは、この所与の命令の
後で実行すべき予測される3つ後の命令である。
【0046】この関連付けは、図の実施態様では、2サ
イクル前に実行された命令のアドレスを命令履歴キャッ
シュへのインデックスとして使用して、所与の命令に関
する履歴データ、すなわち、この所与の命令の後で実行
すべき予測される次の命令を記憶することによって処理
される。この場合、2サイクル前に実行された命令のア
ドレスを使用してこの命令をL1 Iキャッシュまたは
L2キャッシュから検索するとき、同時にこのアドレス
がIHCに与えられ、この命令の予測される次の命令の
検索が開始される。したがって、IHCから取り出すの
に必要な追加の2サイクルを用いて、予測される次の命
令が適切な時間にIHCから返される。
【0047】言い換えれば、所与のVLIW命令Nの場
合、この命令の予測される次の命令VLIW N+1
は、VLIW N−2のアドレスを使用してIHCに記
憶される。次いで、L1 IキャッシュまたはL2キャ
ッシュからのVLIW N−2の検索を試みると、同時
にVLIW N−2のアドレスがIHCに与えられ、I
HCからのVLIW N+1の検索が開始される。次の
2サイクルでVLIWN−1およびVLIW Nが順次
取り出されるものと仮定すると、次のサイクルで、IH
CはVLIW N+1をVLIW Nの直後に実行でき
るようにする。したがって、L1 IキャッシュがVL
IW N+1に対してミスした場合でも、IHCは依然
として、他の場合にはこの命令をL2キャッシュから取
り出すのに必要になる遅延なしに、この命令を使用する
ことができる。さらに、IHCに履歴データが記憶され
るオフセットが与えられた場合、IHCアクセスを実際
上2サイクル早く開始することによって、他の場合に
は、予測される次の命令をIHCから検索するのに必要
になる余分の2サイクルが回避される。
【0048】この関係を一般化すると、図の実施形態で
は通常、所与の命令に関する履歴データを追加のx−1
サイクルだけオフセットすることが好ましい。この場
合、xはIHCのアクセス時間である。言い換えれば、
所与の命令に関する履歴データとして、xサイクル後に
実行すべき予測される命令を記憶することが望ましい。
【0049】したがって、この実施態様では、命令履歴
キャッシュ56は、命令アドレス・レジスタ(IAR)
59で表される次に実行すべき命令として取り出されて
いる命令のアドレスでインデックス付けされる。同時
に、IAR59内の指定されたアドレスもL1 Iキャ
ッシュ58に供給されると共に、変更索引バッファ(T
LB)90を介してL2キャッシュ54に供給される。
変更索引バッファ90は、IAR59に記憶されている
仮想アドレスを、L2キャッシュにアクセスする際に使
用される実アドレスに変換する。仮想アドレス指定を使
用しない場合は、プロセッサ52とL2キャッシュ54
の間でTLBまたは他の変換機構を使用しなくてもよい
ことを理解されたい。
【0050】通常、アドレス可能なメモリ空間のサブセ
ットのみがキャッシュに記憶される場合、命令アドレス
・レジスタ全体ではなく、インデックスがIHC56に
与えられる。8MB命令履歴キャッシュの場合、現在の
アドレスから得た17ビット・インデックス、たとえ
ば、64ビット・アドレスのビット41〜57を使用す
ることができる。しかし、後述の予測検証回路構成を介
して正しい命令予測の検証が行われるので、命令履歴キ
ャッシュ56用のディレクトリは必要とされない。
【0051】同様に、L1 Iキャッシュ58の場合、
IAR59から10ビット・アドレス・インデックスを
与え、このキャッシュにインデックス付けすることがで
きる。L1キャッシュ58が、L1キャッシュ・ヒット
が生じたかどうかを検証するためのディレクトリ(図示
せず)も含むことを理解されたい。このようなディレク
トリの使用法および構成は当技術分野でよく知られてお
り、したがって、本明細書で詳しく説明する必要はな
い。
【0052】IAR59は、プロセッサ52内の1つま
たは複数の実行ユニットを表す実行パイプ60の第1段
を形成する。たとえば、VLIWプロセッサの場合、複
数の実行ユニットは通常、並列に動作し、各VLIW命
令中の様々なパーセルを別々に処理する。各実行ユニッ
トは通常、1つまたは複数の別々のパイプを有するが、
機能的に見ると、このような複数の実行ユニット用のパ
イプを、図3に表わす単一のパイプとみなすことができ
る。したがって、本発明によるデータ処理システムでは
任意の数の実行パイプまたはユニットあるいはその両方
を使用することができ、このような他のパイプおよびユ
ニットの実施態様が、本明細書で開示する内容の利益を
有する当業者の能力の範囲内であることを理解された
い。
【0053】パイプ60の各段は、命令アドレス、なら
びにこのアドレスによって指定されるVLIW命令用の
記憶域を含む。パイプ60は6段パイプラインであり、
パイプの段2ないし6用の命令アドレスはそれぞれ、命
令アドレス・レジスタ62、64、66、68、および
70に記憶され、このようなアドレスによって指定され
る命令はそれぞれ、命令レジスタ(IREG)74、7
6、78、80、および82に記憶される。パイプの第
1段は、第2段IREGへの命令取出し段であるので、
第1段に独立のIREGは使用されない。パイプ60に
ついて適切に言い換えると、このパイプは、IAR62
とIREG74がパイプの第1段を形成しIAR59が
パイプから除外された5段パイプである。
【0054】パイプの様々な段は、現在の命令Nに対す
る段としても識別され、命令N−xは、現在の命令から
xサイクル前に処理される命令を表し、命令N+yは、
現在の命令からyサイクル後に処理される命令を表す。
【0055】パイプの段1は命令取出し段(IFETC
H)であり、この間にメモリ(通常はL1 Iキャッシ
ュまたはL2キャッシュ)から命令が取り出される。パ
イプの段2は汎用レジスタ・ファイル読取りアクセス段
(GPR)である。パイプの段3は有効アドレス生成段
(AGEN)である。パイプの段4はL1データ・キャ
ッシュ(Dキャッシュ)アクセス段(DCACHE)で
あり、段5は、あるデータ・フォーマットのデータ・バ
ス段(DATABUS)である。パイプ内の段6は汎用
レジスタ・ファイル書込みアクセス段(GPR WR
T)であり、この段では、命令実行の結果が再び汎用レ
ジスタ・ファイルに書き込まれるか、あるいは一般的に
は他の構成のレジスタ・ビットに書き込まれる。これら
の段中に実行される動作は、周知のプロセッサ動作であ
り、本発明の理解に関連するものではない。したがっ
て、本明細書ではこれらの段についてこれ以上は説明し
ない。
【0056】さらに、本発明による他の実施態様では、
追加の段、すなわち、いくつかの段および段構成を使用
することができる。たとえば、スーパースカラ・プロセ
ッサの場合、実行パイプはIFETCHの前に分岐アド
レス生成段を含むこともできる。一方、命令が命令キャ
ッシュ内で整列され、命令を実行する前に順序付けして
おく必要がないので、VLIWベースのアーキテクチャ
は通常、分岐アドレス生成段を必要としない。
【0057】それぞれ履歴キャッシュ56およびL2キ
ャッシュ54からの予測される次の命令および実際の次
の命令の検索を開始するためにプリフェッチ回路構成8
5が使用される。予測される3つ後の命令とも呼ばれる
3サイクル後に実行すべき命令の検索は、IAR59か
ら得たアドレス・インデックスに基づいて線85aを介
して実行される。L2キャッシュからの実際の次の命令
の検索は、パイプの段2中のIREG74に記憶されて
いる命令に指定された「分岐先」アドレスに基づいて線
85bを介して実行される。L2キャッシュにアクセス
するために、線85b上の分岐先アドレスはTLB90
によって実アドレスに変換される。たとえば、レジスタ
74に記憶されている命令86で表されるように、分岐
先アドレスは通常、この命令中の分岐条件(BC)パー
セル88で指定される。
【0058】L2キャッシュおよび命令履歴キャッシュ
に命令取出しが発行されると、各キャッシュは、それに
与えられたアドレスに記憶されている命令を適切な時間
に出力する。L2キャッシュ54の場合、出力命令は、
「VLIW」として表される実際の次の命令である。命
令履歴キャッシュ56の場合、命令出力は、「VLI
W'」として表される予測される次の命令である。予測
検証回路構成91はVLIWおよびVLIW'を受け取
る。さらに、VLIW'は直接、第2段IREG74に
与えられ、予測される次の命令の実行が開始される。
【0059】予測検証回路構成91は、L2キャッシュ
54からのVLIW出力が命令履歴キャッシュ56から
のVLIW'出力と一致するかどうかを判定する比較ブ
ロック92を含む。命令履歴キャッシュ56が3サイク
ル・アクセス時間を有し、L2キャッシュ54が5サイ
クル・アクセス時間を有するので、VLIW'はVLI
Wよりも2サイクル前に回路構成91に出力される。し
たがって、VLIW'をVLIWと整列させるために、
命令バッファ・レジスタ94、96を含む2段バッファ
が、命令履歴キャッシュ56と比較ブロック92の間に
挿入される。キャッシュ54とキャッシュ56の間のア
クセス時間の差に応じて、命令履歴キャッシュ56と比
較ブロック92の間に任意の数の段を挿入する必要があ
ることを理解されたい。
【0060】比較ブロック92は、それぞれL1 Iキ
ャッシュ58用のディレクトリおよびL2キャッシュ5
4用のディレクトリからL1ミス信号およびL2ヒット
信号を受け取るANDゲート93によってイネーブルさ
れる。比較ブロック92は、イネーブルされると、禁止
信号IHC/L2COMPを出力する。この信号は、V
LIW'がVLIWと一致しないときにはいつでもアサ
ートされる。この禁止信号の結果として、この点で実行
パイプ60の段6 IREG82に記憶されているVL
IW'が「中断」され、したがって、この命令の実行結
果が実際上、破棄される。
【0061】図の実施態様では、汎用レジスタ・ファイ
ルまたは他の構造のレジスタ・ビットへのライトバック
は通常、命令の実行結果として実行された最後の動作な
ので、VLIW'の結果の破棄は、この命令を無効化し
て実行パイプの段6でのGPR WRT動作の実行を禁
止することによって実行される。この技法は通常、他の
場合に、パイプ内で命令を実際上、中断または停止する
ために従来型のプロセッサによって使用される。他の実
施態様では、VLIW'の実行を他の方法で終了するこ
とが望ましい。たとえば、単に命令を無効化するのでは
なく、命令を完了させ、次いで命令を実行する前のレジ
スタの状態を表すバックアップ・コピーを用いて汎用レ
ジスタ・ファイルを復元することによって結果を「アン
ドゥ」することが望ましいこともある。
【0062】L2キャッシュ54からVLIWが返され
るまでパイプが停止するように、L2キャッシュ54の
出力を実行パイプ用の状態マシンおよび命令バッファ
(図示せず)と結合することが望ましいこともある。こ
のパイプ停止の目的は、L2キャッシュに対してミスす
る命令取出しに対処することである。これは、このよう
なミスがL3キャッシュまたは主記憶装置あるいはその
両方へのアクセスを必要とし、5サイクルを超えるアク
セス時間を必要とするからである。
【0063】図4は、図3に示す動作の相対的タイミン
グを示す。まず、IFETCH状況、GPR状況、AG
EN状況、DCACHE状況、DATABUS状況、お
よびGPR WRT状況を含む実行パイプが示されてい
る。2サイクル後に実行すべき命令の次の命令に関する
命令履歴キャッシュ・アクセスは、実行パイプと並列に
行われ、3アクセス・サイクルと、その後に続く予測検
証回路91内の2つのバッファ段を占めるアクセスとし
て示されている。キャッシュにアクセスするのに必要な
2サイクルと、その後に続き、キャッシュが結果を処理
し出力する3アレイ・サイクルとを含むL2キャッシュ
・アクセスも並行して示されている。L2ディレクトリ
へのアクセスは、L2キャッシュ・アクセスと並列に行
われるアクセスとしても示されている。L2ディレクト
リがL2キャッシュによる次の命令の前のL2ヒットま
たはL2ミスを示すことにも留意されたい。比較イネー
ブル信号は、L2ヒットから生成され、L1ミスが生じ
たときにL2取出しが完了するまでパイプを選択的に停
止しておくために使用される。比較ブロックは、L2取
出しが完了してから半サイクル後に動作するブロックと
して示されており、禁止信号は、IHC/L2COMP
として示されており、比較イネーブル信号がアサートさ
れてから半サイクル後に出力される。したがって、実行
パイプのGPR WRT段に到達すると、禁止信号を使
用してGRPファイルへの結果のライトバックを許可ま
たは禁止することができる。禁止が示された場合、GP
R WRT動作がバイパスされ、命令の結果が実際上、
破棄される。
【0064】図5は、命令履歴キャッシュ56で履歴デ
ータを動的に更新するための命令履歴キャッシュ56へ
の履歴データのライトバックで使用される構成要素を示
す。L2キャッシュ54は、この更新動作には関連して
おらず、話を簡単にするために図から省略されている。
【0065】再び命令履歴キャッシュ56に情報を記憶
するために、命令履歴キャッシュに独立の書込みアクセ
ス・ポートが設けられる。キャッシュへの別々の読取り
アクセス・ポートおよび書込みアクセス・ポートの使用
法および構成は当技術分野でよく知られている。所与の
命令の実際の次の命令に関するデータを記憶するための
所望のオフセットは、命令履歴キャッシュに書き込むべ
き命令と、この命令を書き込むアドレスまたはインデッ
クスを、実行パイプの別々の段から取り出すことによっ
て与えられる。図の実施態様では、2段差分が使用さ
れ、命令は、第4段IAR66によって指定されるIH
C内の位置に記憶されている実行パイプの第2段IRE
G74に記憶される。この第1段差分は、所与の命令の
実際の次の命令を記憶する必要がある場合に対処し、第
2段差分は、IHC内の履歴データの、この所与の命令
からの所望の1サイクル・オフセットに対処する差分で
ある。言い換えれば、2段差分は実際上、所与の命令に
関連するIHC内の位置に3つ後の実際の命令を記憶す
る。
【0066】実行パイプ60内の様々な段、たとえば、
段3および5、または段4および6などからアドレスお
よび命令を取り出すことによってオフセットを得ること
もできることを理解されたい。さらに、様々なオフセッ
トを得るために、様々なレジスタの出力も使用できるこ
とを理解されたい。
【0067】図4を参照すると、ライトバック動作の相
対的タイミングが詳しく示されている。具体的には、第
4の(DCACHE)で、VLIW N+1のアドレス
を表すIARレジスタ66の値が、L1 Iキャッシュ
およびIHCへの書込みアドレスとして与えられ、それ
に対して、VLIW N+3を表す第2段にあるIRE
G74の値が、L1 IキャッシュおよびIHCに書き
込むべきデータとして与えられる。次いで次のサイクル
で、L2ディレクトリがヒットした場合、前述のアドレ
スおよびデータを使用してL1 IキャッシュおよびI
HCが書き込まれ、それによって、実際に次に実行され
る命令を反映するように履歴データが更新される。
【0068】図6は、データ処理システム50によって
実行される命令取出し動作120を示し、L1 Iキャ
ッシュ、L2キャッシュ、またはIHCで命令取出しが
ヒットするかどうかに基づいて実行される異なるプログ
ラム・フローを示す。まず、論理ブロック122で、I
AR59(図3)に記憶されているVLIW N+4の
内容がL1 Iキャッシュ、L2キャッシュ、およびI
HCへ同時に転送される。次に、論理ブロック124で
(かつ通常は1サイクル未満で)、L1 Iキャッシュ
・ディレクトリがヒット/ミス表示を返す。ヒットが起
こった場合、論理ブロック126に示すように通常どお
りに動作が実行され、次のサイクルでL1 Iキャッシ
ュによって命令取出しが行われる。また、この時点でI
HCを更新することが望ましく、あるいはIHC内の履
歴データに変更があるかどうかを検査し、変更が行われ
た場合にかぎりIHCを更新し、IHCへのトラフィッ
クを最小限に抑えることが望ましい。
【0069】L1 Iキャッシュでキャッシュ・ミスが
起こった場合、フローは論理ブロック128に進み、次
のサイクルにIHCから出力された予測されるVLIW
信号が、実行のためにパイプに供給される。予測される
VLIWを検索するためのIHCへのアクセスが2サイ
クル早く、すなわち、論理ブロック122でのVLIW
N+2のアドレスのディスパッチ中に行われることに
留意されたい。
【0070】次いで、L2ヒット/ミスの表示が、論理
ブロック130で表されたL2キャッシュのディレクト
リから返されるまで、予測されるVLIWが1サイクル
以上にわたってパイプを通過しながら実行される。ミス
が起こった場合、要求された実際の命令がL2キャッシ
ュで見つからなかったために予測されるVLIWが正し
くない場合には、論理ブロック132で実行される動作
が実行される。具体的には、当技術分野で知られている
任意の数の方法で、パイプが停止され、パイプの段2内
の(図3のIREG74に記憶されているVLIW N
+3として示された)VLIWが中断される。要求され
た命令をメモリ階層内のより高いレベルから検索するた
めに主記憶装置アクセスも開始され、要求された命令が
返された後、L2キャッシュが更新され、正しいVLI
Wがパイプにディスパッチされ、IHCが更新され、L
1 Iキャッシュが更新され、パイプが復元される。パ
イプを復元するには、パイプのクロッキングを再開する
だけでよく、あるいは場合によっては、パイプが望まし
い点を越えている場合にはパイプを前の状態に復元する
必要があることもある。
【0071】論理ブロック130に戻るとわかるよう
に、L2が命令取出し時にヒットした場合、論理ブロッ
ク134で、L2MRU予測が正しかったかどうかが判
定される。論理ブロック134は、アソシエーティブ・
キャッシュの場合にのみ実行され、直接マップL2キャ
ッシュの場合には省略することができる。MRU予測が
正しくない場合、論理ブロック136で実行される動作
が実行される。具体的には、当技術分野で知られている
任意の数の方法で、パイプが停止され、パイプの段2内
の(図3のIREG74に記憶されているVLIW N
+3として示された)VLIWが中断される。ディレク
トリ参照に基づいてL2キャッシュから正しいVLIW
が取り出され、この正しいVLIWがパイプへ送られ、
IHCが更新される。L1 IキャッシュおよびL2M
RUアレイも更新され、前述の方法でパイプが復元され
る。
【0072】論理ブロック134に戻るとわかるよう
に、MRU予測が正しかった場合、次に論理ブロック1
38で、(すなわち、図3の比較ブロック92を介し
て)IHC予測が正しかったかどうかが判定される。そ
うである場合、停止なしで実行が継続し、論理ブロック
140に示すように、適切な時間にL2キャッシュによ
ってL1 Iキャッシュが更新される。しかし、予測が
正しくない場合、パイプの段2内の誤って予測されたV
LIWが、論理ブロック142で前述のように中断され
る。次に、論理ブロック144で、L2キャッシュから
取り出されたVLIWがパイプにディスパッチされ、I
HCおよびL1が前述のように更新される。
【0073】図7は、マルチチップ集積L2/命令履歴
キャッシュ実施態様を示す他のデータ処理システム15
0を示す。データ処理システム150はプロセッサ15
2を含み、プロセッサ152内部にL1 Iキャッシュ
154および少なくとも1つの実行パイプ156が配設
される。プロセッサ152に命令/データ・バス160
を介して集積L2/命令履歴キャッシュ158が結合さ
れる。キャッシュ158は、複数のメモリ・チップ、た
とえば、チップ162、164、166、168、17
0、172、174、および176を使用して実装され
る。各メモリ・チップは、L2キャッシュ区画および命
令履歴キャッシュ区画、たとえば、チップ176の場合
の区画178、180に論理的に区分される。各区画ご
とに別々のアクセス・ポートが設けられ、L2キャッシ
ュのアクセス・ポートはプロセッサ152からのアドレ
ス線182と結合され、プロセッサ152からのアドレ
ス線182は、L2キャッシュにアクセスするための実
アドレスを供給する。線182はL2ディレクトリ・チ
ップ184にも与えられ、L2ディレクトリ・チップ1
84は、プロセッサからのアクセス要求がL2キャッシ
ュでヒットするかどうかを示すL2ヒット信号を生成す
るディレクトリ・エントリを返す。
【0074】独立のポートが、命令履歴キャッシュを制
御し、プロセッサ152からのアクセス線186を介し
て制御される。命令履歴キャッシュは、前述のデータ処
理システム10の場合と同様に、キャッシュにアクセス
するための命令アドレス・レジスタ・インデックス値を
受け取る。
【0075】キャッシュ58は、たとえば、各メモリ装
置がバス160を介して8バイト、または64バイトV
LIWの8分の1を供給する8つの1MB SRAMメ
モリ装置または1MB DRAMメモリ装置を使用して
実装される。4ウェイ・アソシエーティブ実施態様を仮
定すると、各セットは1/4MBに区分され、最後に使
用された区画が命令履歴キャッシュとしても機能する。
IHC区画をL2キャッシュから除外することもでき
る。ただし、1つの区画をIHCとL2キャッシュの両
方として機能させることによって、追加のメモリなしで
IHCを実装することができる。様々な代替キャッシュ
・サイズ、区画サイズ、および/またはチップ数を使用
することもできる。
【0076】共通の1組の集積回路デバイスまたはチッ
プを使用してL2キャッシュおよび命令履歴キャッシュ
を実装することによって得ることのできる1つの利点
は、予測検証機能を実行するのに必要な処理回路の多く
をプロセッサから、キャッシュを実装するチップにシフ
トできることである。たとえば、予測検証回路構成は複
数の部分的比較ブロックを含むことができ、たとえば、
チップ176の場合のブロック188のように、各部分
的比較ブロックを1つのチップ内に配設することができ
る。各比較ブロック内で、命令履歴区画から出力された
予測される次の命令の8バイト部分が、L2区画から出
力された実際の次の命令の8バイト部分と比較され、L
2区画および命令履歴区画によって出力される8バイト
部分中の各ビットが、8バイト比較ブロック190を使
用して比較される。前述と同じアクセス時間の差を仮定
すると、予測される次の命令部分と実際の次の命令部分
を整列させるために1対の命令バッファ192、194
が必要になる。次いで、比較ブロック190は、予測さ
れる次の命令の8バイト部分と実際の次の命令の8バイ
ト部分が一致するかどうかを示す部分的IHC/L2C
OMP信号を出力する。次いで、部分的比較ブロックは
部分的比較信号を出力し、マスタ比較ブロックとして働
くプロセッサ152内のANDブロック196で、この
信号と他の部分的比較信号との論理積がとられる。論理
ブロック196の出力は全体的なIHC/L2COMP
禁止信号を形成し、この信号は、誤って予測された命令
を選択的に禁止または終了するために使用される。
【0077】他の実施態様では、プリフェッチ回路構成
および予測検証回路構成内の様々な機能をシステム内の
様々な集積回路デバイスに割り付けられることを理解さ
れたい。したがって、本明細書で論じる特定の実施態様
に本発明を限定すべきではない。
【0078】埋込み命令履歴実施態様 本発明のある実施形態では、独立の命令履歴キャッシュ
を不要にし、それによってプロセッサの命令取出し機構
の設計を簡略化することが望ましい。具体的には、多く
の実施態様では、命令自体内、通常は命令内の未使用ビ
ット内に履歴データを埋め込み、履歴データの追加によ
るプログラム・コードの展開を最小限に抑えることが可
能であることが判明している。このことは、命令履歴キ
ャッシュの機能を組み込んだL2キャッシュの効果を有
する。
【0079】大多数のVLIW命令にいくらかの未使用
空間が組み込まれている場合、VLIWベースのアーキ
テクチャは、VLIW命令内に履歴データを埋め込むの
に特に適している。VLIWによっていくつかの規則が
遵守されるかぎり、VLIWプログラムの記憶要件にほ
とんどあるいはまったく影響を与えずに履歴データを埋
め込むことが可能であることが判明している。
【0080】通常、メモリに記憶されているVLIW命
令のうちの1つに続いて実行すべき次の命令を表す履歴
データは、このような命令のアドレスを得ることのでき
る識別子で表される。しかし、L2キャッシュに対する
ミスが起こった場合に、主記憶域から次の命令を検索す
ることが必要になり、予測される命令アドレスの無効性
が未決定になるために、通常、L2キャッシュにアドレ
スするのに必要なビット量だけで履歴データが得られる
場合、次の命令の完全なアドレスは通常必要とされな
い。
【0081】たとえば、64ビット・アドレス指定方式
を有するシステムに実装される4MB L2キャッシュ
の場合、通常、22ビット・アドレス・インデックスだ
けでキャッシュ内の所与のバイトにアドレスすることが
できる。さらに、64バイト・キャッシュ・ライン命令
サイズを用い、キャッシュ・ラインおよび命令を適切に
整列させた場合、22ビット・アドレス・インデックス
の最下位6ビット(LSB)は0であることがわかって
おり、したがって、16ビットだけで4MBL2キャッ
シュ内の所与のキャッシュ・ラインにアクセスすること
ができる。
【0082】アドレス・インデックスを命令内に記憶す
ることのできる1つの方法は、ある数のビットを未使用
にして履歴データ用に予約しておくことである。たとえ
ば、VLIW命令の場合、このような命令は通常、様々
な実行ユニットによって互いに並列に実行される複数の
パーセルを含む。VLIWコンパイラは通常、命令の利
用可能なスロットにできるだけ多くのパーセルを配置す
ることによってVLIW命令をアセンブルする。したが
って、命令中の履歴データ用に適切な自由空間が割り付
けられるように、コンパイラに命令の1つのスロットを
履歴データ用に予約させることができる。
【0083】大多数のVLIW命令は完全に満杯になる
ことがないにもかかわらず、VLIW命令の1つのスロ
ットを常にブランクにしておくことは、追加のパーセル
で命令を満杯にすることができたにもかかわらず、命令
に履歴データが追加される場合に、プロセッサ性能に悪
影響を与える。しかし、追加のコンパイラ規則を実現す
ることによって、プロセッサ性能に対して比較的小さな
影響しか与えずに、VLIW命令にある量の自由空間を
残すことができる。
【0084】具体的には、VLIWコンパイラに、同じ
キャッシュ・ライン内のアドレスへの分岐を有する分岐
命令のみを所与のVLIW命令にアセンブルさせること
が望ましい。この場合、分岐パーセル以外のパーセルを
有するこのようなVLIW命令の場合、複数の分岐命令
のアドレス・フィールドへの分岐が冗長になり、このよ
うなフィールドのうちの1つを使用して、命令内のパー
セルの全体的な密度にはほとんどあるいはまったく影響
を与えずに履歴データを記憶することができる。大多数
のVLIW命令は複数の分岐パーセルを有する傾向があ
るので、この規則はコンパイラ性能にほとんど影響を及
ぼさないと考えられる。
【0085】たとえば、VLIWプロセッサ・アーキテ
クチャ用の命令フォーマットには、32ビットPowerPC
互換命令を実現する32ビット・パーセルを組み込むこ
とができる。PowerPCアーキテクチャによれば、分岐命
令の16ビットが分岐アドレス・フィールドに割り当て
られ、この分岐アドレス・フィールドから、所定の条件
を満たしたことに応答して、分岐先へのアドレスが生成
される。64ビット・アドレス指定を仮定すると、すべ
ての分岐命令が1MBアドレス空間内で分岐する必要が
あり、(64ビット命令サイズが与えられた場合)16
ビット分岐アドレス・フィールドと連結され、6つのゼ
ロが後に続く、命令アドレス・レジスタの最上位42ビ
ット(MSB)を使用して64ビット分岐先アドレスが
生成される。
【0086】上記で定義したアドレス指定方式を仮定す
ると、最小限のプログラム・コード展開で任意の命令中
の一定数のビットを履歴データに割り付けるVLIWコ
ンパイラを作成することができる。たとえば、パーセル
をVLIW命令にアセンブルする際に以下の規則を遵守
することによって、任意の命令の16LSBを履歴デー
タに割り付けるようにコンパイラを構成することができ
る。
【0087】I.VLIW命令が満杯でない場合、命令
の最後のスロットにNOOP演算を挿入する。
【0088】II.VLIW命令が満杯であり、少なく
とも1つのパーセルがNOOP演算である場合、命令の
最後のスロットにNOOP演算を配置する。
【0089】III.VLIW命令が非NOOP演算で
満杯であり、2つ以上の分岐パーセルが命令中に存在す
る場合、命令の最後のスロットに1つの分岐パーセルを
配置する(かつ、すべての分岐パーセル用の共通の分岐
アドレスが常に同じスロットに位置するように、任意選
択で、命令の終了位置の近くでかつ最後のスロットより
も前に他のすべての分岐パーセルを配置する)。
【0090】IV.VLIW命令が非NOOP演算で満
杯であるが、命令中に存在する分岐パーセルが2つより
も少ない場合、パーセルを近くの命令で置き換えて追加
の分岐パーセルまたはNOOPパーセルを命令に追加す
ることを試みる。
【0091】V.VLIW命令が非NOOP演算で満杯
であり、分岐パーセルが2つよりも少ないが、命令のパ
ーセルをスワップできない場合、命令の最後のスロット
にNOOPパーセルを挿入し、1つのパーセルを次の命
令に移動する。
【0092】大部分のVLIW命令の75%以上が完全
には充填されず、残りの命令のうちの、約10%を除く
すべての命令が複数の分岐パーセルを含むことに基づい
て、上記の規則が、大部分のプログラム・コードを約1
%未満しか展開しない傾向を示すことが予測される。
【0093】他の実施態様では、VLIW命令に未使用
空間を位置させる他の方法を使用することができる。た
とえば、いくつかの実施態様では、VLIW命令に対し
てある事前復号が行われ、パーセルが比較的大きなコー
ドに展開される。いくつかの実施態様では、16個の3
2ビット・パーセルを含む64バイトVLIW命令の場
合、実行ユニットの必要とする追加のビットを含む64
ビット・コードにパーセルを展開することができる。さ
らに、多くの場合、特に分岐命令は常に48ビット未満
にしか展開しないことが判明している。したがって、V
LIW命令がパーセルで満杯であり、上記の規則I〜I
Vのどれかを満たさない場合でも、多くの場合、パーセ
ルをコードに展開した後に命令の未使用部分に履歴デー
タを埋め込むことができる。したがって、展開されたコ
ードを記憶するメモリ階層の任意のレベル内、たとえ
ば、プリデコーダがL2キャッシュと主記憶装置の間に
配設される場合にはL2キャッシュ内に履歴データを維
持することができる。このような例では通常、L2キャ
ッシュ・ラインおよびVLIW命令は128バイトに展
開され、したがって、少なくともL2キャッシュには、
履歴データを記憶するのに適した未使用空間が存在す
る。たとえば、オペランド命令またはマスク・フィール
ド中の未使用ビットを使用する、未使用空間を見つける
他の方法を使用することもできる。
【0094】図8は、32ビット・パーセルを含む64
バイトVLIW命令200を示す。命令200は複数の
分岐パーセルを有する命令として示されており、上記の
規則に従って、(パーセル14および15用の)最後の
2つのスロットにはこのような分岐パーセルが充填され
ている。パーセル14および15は202および204
で詳しく示されており、各パーセルは一般的なPowerPC
命令フォーマットに従い、各パーセルの最初の6ビット
が演算フィールド(たとえば、パーセル202の場合は
フィールド206)に割り当てられ、次の2組の5ビッ
トはビット・イン(BI)フィールドおよびビット・ア
ウト(BO)フィールド(たとえば、パーセル202の
場合はフィールド208、210)に割り当てられる。
パーセル14と15は分岐パーセルなので、各パーセル
の残り16ビットは分岐パーセル・フィールド(たとえ
ば、パーセル202の場合はフィールド212)に割り
当てられる。しかし、すべての分岐命令が同じキャッシ
ュ・ラインに分岐することを必要とする所与のVLIW
命令内で分岐アドレス・フィールドが冗長である場合、
パーセル204の分岐先アドレス・フィールド214を
使用してこのフィールドに履歴データを記憶することが
できる。
【0095】パーセル15は、NOOP演算フィールド
218および未使用フィールド219を有するNOOP
パーセル216でもよく、未使用フィールド219内
に、VLIW命令に関する同じ履歴データを記憶するこ
とができる。様々な代替ビット・マッピングを使用する
こともできることを理解されたい。
【0096】図9は、前述のようにフォーマットされた
所与のVLIW命令内に履歴データを記憶し維持するよ
うに構成された他のデータ処理システム220を示す。
独立の命令履歴キャッシュ42を除いて、システム22
0内の残りの構成要素を図1のデータ処理システム10
と同様に構成できることを理解されたい。図9に戻ると
わかるように、システム220は、6つの段を備える実
行パイプ222を有するプロセッサ221を含む。それ
ぞれ、パイプの6つの段内に配設された、アドレス・レ
ジスタ(IAR)250、224、226、228、2
30、および232のシーケンスに命令アドレス情報が
維持される。また、パイプの段2ないし6に関するVL
IW命令は、命令レジスタ(IREG)236、23
8、240、242、および244に記憶される。L1
Iキャッシュ248は64バイト・キャッシュ・ライ
ン・サイズで示されており、IAR250に記憶されて
いる命令アドレスを介してアクセスされる。L1 Iキ
ャッシュ248内にVLIW命令252が示されてお
り、この命令は、上記で定義したコンパイラ規則を満た
す。具体的には、最後から2番目のスロットに、定義さ
れた分岐先アドレス・フィールド256を有する分岐パ
ーセル254が充填され、最後のスロットに、履歴アド
レス・インデックス(HAX)フィールド260を有す
る分岐パーセルまたはNOOPパーセル258が充填さ
れ、履歴アドレス・インデックスフィールド内に、命令
に関連する履歴データが記憶される。
【0097】この実施態様では、IREG236に記憶
されている命令の分岐先アドレス・フィールドで表され
る実際の次の命令が、IAR228の出力(具体的に
は、分岐先アドレス・フィールド中の同じ16ビットに
対応する、この出力のビット42〜57)で表される2
サイクルだけずれた予測される次の命令と、比較ブロッ
ク262を使用して比較される。
【0098】また、IREG236で示すように、2サ
イクル後に実行すべき命令の予測される次の命令を検索
するために、IREGの履歴アドレス・インデックス・
フィールドを使用して、各サイクルでL2キャッシュ2
64がアクセスされる。この場合、L2キャッシュ26
4は、履歴ベースのアクセス用の3サイクル・アクセス
時間を有するように構成される。これを実現するには、
たとえば、仮想アドレス実アドレス変換およびディレク
トリ・アクセスをバイパスするL2キャッシュの独立の
履歴読取りアクセス・ポートを使用し、それによって基
本的に、L2キャッシュをこのポートを通して、命令履
歴キャッシュとほぼ同様に動作する直接マップ・キャッ
シュとして構成することができる。メモリ内の隣接ブロ
ック内に所与のプログラム用のすべてのVLIW命令を
記憶することにより、変換のために所与のブロック内の
ビットが変更されることがなくなる(たとえば、隣接す
る位置合わせされた16MBブロック内にプログラムを
維持する場合、通常、変換の結果として24LSBが変
更されることはない)ので、履歴アクセスによる変換を
回避できることが多い。また、ディレクトリにアクセス
する必要なしに履歴アクセスに応答して検索すべき正し
いセットを選択するために、L2キャッシュに関するM
RU予測が使用される。前述の機能を実現するための多
重アドレス入力L2キャッシュの使用法および構成は、
当業者の能力の範囲内であり、したがって、本明細書で
詳しく論じる必要はない。
【0099】VLIW命令を新しい履歴アドレス情報で
更新する場合、IREG236に記憶されている命令の
分岐先アドレス・フィールドと、2サイクル前のVLI
W命令用のIAR228に記憶されているアドレスがそ
れぞれ、L1 Iキャッシュ248に書き込まれるデー
タおよびアドレスとして与えられる。実際の分岐命令を
2サイクル前のVLIW命令アドレスと共に記憶するこ
とによって、命令レジスタ236に記憶されているVL
IWの実際の次の命令を用いて履歴データが更新され
る。したがって、この実施態様では、VLIW命令内に
履歴データを埋め込むことによってプロセッサ・アーキ
テクチャが著しく簡略化され、独立の命令履歴キャッシ
ュと同じ機能が実行され、同時にこのようなキャッシュ
が不要になる。
【0100】VLIWコンパイラでの前述のコンパイラ
規則の実現が、本明細書の内容を読むことに基づいてコ
ンパイラ当業者の能力の範囲内で行われることが理解さ
れよう。さらに、他の数組のコンパイラ規則と、VLI
W命令の他の構成およびマッピングを使用して、本発明
によって命令内に履歴データを埋め込むことができるこ
とを理解されたい。さらに、本明細書に記載された他の
実施形態によるこのような変形形態の実施態様も当業者
に明らかであることが理解されよう。
【0101】図9の実施態様の場合、多くの例で、L1
Iキャッシュに記憶されている命令がしばしば比較的
高速にキャッシュ・アウトされ、したがって、このキャ
ッシュに記憶されている履歴データの時間的な持続が制
限される場合、多くの例では、L1 Iキャッシュ24
8に記憶されている履歴データをメモリ階層の他のレベ
ルに維持することが望ましいと考えられる。したがっ
て、VLIW命令をそれに関連する履歴データと共にメ
モリ階層の他のレベルにコピーすることによって、履歴
データとこの命令との関連付けを維持することが望まし
いことがある。通常、多くのプロセッサ実施態様におけ
る命令キャッシング階層は、所与のキャッシュ・レベル
からキャッシュ・アウトされた命令を破棄するに過ぎな
い。これは、この命令が通常、下位のキャッシュでは修
正されず、したがってキャッシュ同士の間のコヒーレン
シが問題にならないからである。したがって、履歴デー
タを複数のキャッシュ・レベルで維持することを可能に
するには、多くの点で、マルチレベル・データ・キャッ
シング階層内のデータの処理と同様に、命令が所与のキ
ャッシュからキャッシュ・アウトされる際にこの命令を
上位のキャッシュにコピーするように命令キャッシング
機構を修正するだけでよい。
【0102】しかし、この手法の1つの欠点として、命
令が再びこのようなキャッシュに書き込まれる際に上位
キャッシュへのアクセス回数が増加し、それによってキ
ャッシュの全体的な性能が低下する。この問題を軽減す
るには、ある命令に関する履歴データが変更されたとき
に上位キャッシュに情報をコピーするのみに留めること
が望ましい。
【0103】たとえば、図10はデータ処理システム2
70を示し、このシステムは、所与のキャッシュによっ
てキャスト・アウトされているVLIW命令が再び上位
メモリに書き込まれる頻度を減少するためにキャッシュ
に記憶されている各命令に関連付けされた変更ビットを
実装する。所与のキャッシュから所与の命令をキャッシ
ュ・アウトするときに、この命令を再び上位キャッシュ
に書き込んで履歴データとこの命令との関連付けを維持
すべきかどうかが、この変更ビットを使用して判定され
る。この方式は多くの点で、データ・キャッシュなどで
の「ダーティ」ビットの使用と類似している。
【0104】データ処理システム270は、(本明細書
では命令キャッシュとして実装される)L2キャッシュ
274およびL3キャッシュ276と結合されたプロセ
ッサ272を含む。プロセッサ272は実行パイプ27
8を含み、このパイプのうちの最初の4段のみが図示さ
れている。残りの2つの段は、本明細書で開示する他の
実施形態のパイプと同様に構成されるものと仮定する。
したがって、パイプライン278は、パイプの最初の4
段に対応する少なくとも4つの命令アドレス・レジスタ
294、280、282、および284と、パイプの段
2ないし4に対応する命令レジスタ286、288、お
よび290とを含む。
【0105】レベル1 Iキャッシュ292が示されて
おり、命令アドレス・レジスタ294から供給されるア
ドレスに基づいてこのキャッシュから命令が取り出され
る。複数の命令、たとえば、2つの分岐パーセル29
8、302を含む命令296がIキャッシュ292内に
配設され、分岐パーセル298は分岐先アドレス・フィ
ールド300を含み、パーセル302は履歴アドレス・
インデックス・フィールド304を含む。プロセッサ2
72にはL1 Iキャッシュ292用のディレクトリ3
06も示されており、このディレクトリは複数のディレ
クトリ・エントリ、たとえば、命令296に対応するエ
ントリ308を含む。L1命令ディレクトリ306は従
来型の命令キャッシュ・ディレクトリと同様に構成され
る。ただし、このディレクトリは、変更ビット、たとえ
ば、ディレクトリ・エントリ308の場合は変更ビット
312の追加フィールド310も含む。
【0106】データ処理システム270で実行されるプ
リフェッチ動作および予測検証動作は図9のシステム2
20と同一である。履歴データも、上記で図9に関して
論じたのと同様に更新され、すなわち、前の前の命令2
84に記憶されているアドレスを使用してL1 Iキャ
ッシュがインデックス付けされ、L1 Iキャッシュに
記憶すべき実際の次の命令のアドレスが、IREG28
6内の命令の分岐先アドレス・フィールドから検索され
る。
【0107】また、論理ブロック313で、実際の次の
命令と、IREG290内の命令に記憶されている予測
される次の命令とが比較され、履歴情報が変更されてい
るかどうかが判定される。そうである場合、VLIW命
令の対応するディレクトリ・エントリ用の変更ビット
が、この命令がL1 Iキャッシュにキャッシュされて
から履歴データが更新されたことを示すようにセットさ
れる。
【0108】様々なキャッシュ・レベルの間、たとえ
ば、L1キャッシュとL2キャッシュの間のコヒーレン
シを維持するために、プロセッサ272でキャストアウ
ト・コントローラ314が使用される。コントローラ3
14の基本動作を図11に320で示す。コントローラ
314は一般に、データ・キャッシュ用のキャストアウ
ト・コントローラと同様に動作し、特定のキャッシュか
ら得た情報を、下位キャッシュから削除する際に上位レ
ベルに記憶しなければならないかどうかを判定する。
【0109】コントローラ314は原則的に、論理ブロ
ック322ですべてのL1命令アクセスをスヌープし、
そのようなアクセスによってL1ミスが生じるかどうか
を判定する(論理ブロック324)ことによって動作す
る。L1ミスが起こると、論理ブロック326で、最後
に使用された(LRU)キャッシュ・ラインの変更ビッ
トがセットされているかどうかが判定される。変更ビッ
トがセットされている場合、制御が論理ブロック328
に渡され、L2キャッシュ内のLRU VLIW命令の
コピーに関する履歴データが更新され、L2キャッシュ
274(図2)のディレクトリ316用のディレクトリ
・エントリ中の変更ビットも、L2キャッシュが現在、
VLIW命令の更新済みコピーを含むことを示すように
更新される。これらの動作は、図10にそれぞれ、1A
および1Bとして示された矢印で表されている。
【0110】L2キャッシュ内のVLIW命令およびデ
ィレクトリ情報が更新された後、制御が論理ブロック3
30に渡され、L1 Iキャッシュ内の最後に使用され
たキャッシュ・ラインに、(変更ビットを含め)L2キ
ャッシュから得たこのキャッシュ・ライン用の新しいV
LIW情報およびディレクトリ・エントリがリロードさ
れる。これらの動作は、図10に矢印2Aおよび2Bで
表されている。
【0111】論理ブロック326に戻るとわかるよう
に、L1キャッシュ内の最後に使用されたキャッシュ・
ラインの変更ビットがセットされていない場合、論理ブ
ロック328がバイパスされ、論理ブロック330で実
行されるリロード動作の結果として、このキャッシュ・
ライン内の情報が破棄される。
【0112】図10に戻るとわかるように、履歴データ
が更新されていないかぎり、キャスト・アウト・キャッ
シュ・ラインのL2キャッシュへのライト・バック動作
が回避され、それによってL2キャッシュへのアクセス
回数が減少し、L2キャッシュの性能が向上する。特
に、所与の分岐が、将来の実行で常に同じ経路をたどる
可能性が高いことに基づいて、履歴データがある期間の
後に安定化する傾向がある場合、履歴データはそれほど
頻繁には変更されず、したがって、L2アクセスの回数
は最小限に抑えられる。
【0113】同様な動作を実行し、すなわち、前述のア
ルゴリズムを使用してL2キャッシュ274およびL3
キャッシュ276用のディレクトリ316および318
を更新することにより、必要に応じて、L2キャッシュ
とL3キャッシュの間のコヒーレンスを維持できること
を理解されたい。さらに、このような動作を処理するた
めにプロセッサ272に追加のキャスト・アウト・コン
トローラを実装することが必要になることがある。キャ
スト・アウト動作を独立の構成要素にオフロードして同
じ機能を実行することもできる。
【0114】次に図12を参照すると、追加の特徴を示
すためにデータ処理システム340が提示されている。
この特徴によって、プロセッサ341が様々な種類のL
2キャッシュと共に動作することを可能にするように履
歴データに可変オフセットを設けることができる。たと
えば、履歴データの可用性に対してそれぞれの異なるア
クセス時間を有するL2キャッシュを含む複数の実施態
様で所与のプロセッサ・コア設計を使用することができ
る。したがって、上記で図9および図10に関して説明
した実施形態と同様に一定の2サイクル・オフセットを
維持するのではなく、必要に応じて任意の数のオフセッ
ト、たとえば、2つ、3つ、4つ、あるいは5つのオフ
セットを許容することが望ましい。プロセッサ341の
場合、これは、実行パイプ342の様々な段から取り出
すべきL1 Iキャッシュ用のライトバック・アドレス
を供給する多重化方式を使用することによって実現され
る。
【0115】パイプ342は、IAR370、344、
346、348、350、および352と、IREG3
56、358、360、362、および264とを使用
する6つの段を含むパイプとして示されている。レベル
1 Iキャッシュ368はIAR370からアクセスさ
れ、比較ブロック372は、履歴データに基づいて行わ
れた予測を検証するために使用される。図9に関して説
明した実施態様と同様に、IREG356に記憶されて
いる命令の分岐先アドレスは、新しい履歴情報および実
(正しい)アドレスとして使用され、この実アドレス
が、予測されるアドレスと比較される。しかし、命令ア
ドレス・レジスタの出力をパイプ342の1段のみから
取り出すのではなく、IREG344、346、34
8、および350から出力される別々のアドレス線が選
択ブロック374に与えられ、選択ブロック374の出
力が、比較ブロック372およびL1 Iキャッシュ3
68用の書込みアドレスに供給される。
【0116】選択ブロック374はデコーダ376によ
って制御され、デコーダ376は、Nビット・レジスタ
378によって選択された状態を有する。この実施態様
では、論理ブロック374から4つの可能なアドレスを
出力する場合、2ビット・レジスタを使用することがで
きる。通常、立上げ時にレジスタ378をロードし、装
置が動作している間一定数のサイクルを維持することが
望ましい。図12に示す構成を用いた場合、N値0は1
サイクル・オフセットを表し、N値1、2、および3は
それぞれ、2サイクル・オフセット、3サイクル・オフ
セット、および4サイクル・オフセットを表す。このた
め、データ処理システム340のプロセッサ341は様
々な応用例で使用することができる。
【0117】本発明の趣旨および範囲から逸脱せずに図
の実施形態に様々な追加の修正を加えることができる。
たとえば、履歴アドレス・インデックスを命令中の履歴
データとして記憶する際、順次動作が行われることが検
出されたとき、すなわち、所与の命令が実行された後に
分岐が行われないことが検出されたときにL2キャッシ
ュへのアクセスを禁止することが望ましい。これによっ
て、L2キャッシュへのアクセス回数がさらに減少し、
それによってL2キャッシュの相対的な性能が向上す
る。
【0118】また、他の実施態様では、履歴が比較的頻
繁に変更される場合、履歴データの最後の変更が有用で
あったことを示す追加の確認ビットを含めることが望ま
しい。したがって、比較が行われたときはいつでも、確
認ビットを使用して最後の変更が肯定的なものであった
ことを示すことができる。
【0119】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0120】(1)(a)複数の命令を記憶し、一次命
令キャッシュおよび二次命令キャッシュを含み、二次命
令キャッシュが、一次命令キャッシュよりも長いアクセ
ス時間を有する、メモリと、(b)複数の予測される次
の命令を記憶し、各命令が、メモリに記憶されている命
令の後に実行すべき予測される命令を表す、命令履歴キ
ャッシュと、(c)メモリ内の複数の命令のうちの第1
の命令を実行するように構成された少なくとも1つの実
行ユニットと、(d)それぞれ、命令履歴キャッシュお
よび二次命令キャッシュから、第1の命令の後に実行す
べき予測される次の命令および実際の次の命令の検索を
開始するように構成され、さらに、予測される次の命令
が、第1の命令が実行された後に実行ユニットによって
実行されるように、予測される次の命令を実行ユニット
に供給するように構成された、プリフェッチ回路と、
(e)それぞれ、命令履歴キャッシュおよび二次命令キ
ャッシュから、予測される次の命令および実際の次の命
令を受け取り、予測される次の命令と実際の次の命令が
一致しない場合に実行ユニットによる予測される次の命
令の実行を終了するように構成された予測検証回路とを
備える回路。 (2)複数の命令がVery Long Word Instruction(VL
IW)である上記(1)に記載の回路。 (3)一次キャッシュがレベル1命令キャッシュを含
み、二次キャッシュがレベル2キャッシュを含む上記
(1)に記載の回路。 (4)さらに、実際の次の命令を第1の命令の予測され
る次の命令として記憶するように構成された履歴更新回
路を備える上記(1)に記載の回路。 (5)実際の次の命令が、予測される次の命令と異なる
場合にのみ、実際の次の命令を予測される次の命令とし
て記憶するように履歴更新回路が構成される上記(4)
に記載の回路。 (6)命令履歴キャッシュがNサイクルのアクセス時間
を有し、履歴更新回路が、第1の命令からN−1サイク
ル前に実行される第2の命令のアドレスを介して命令履
歴キャッシュ内で、第1の命令の予測される次の命令が
アクセスされるように、第1の命令の予測される次の命
令を命令履歴キャッシュ内で命令N−1個分ずらすよう
に構成される上記(4)に記載の回路。 (7)実行ユニットが、複数の段を備える実行パイプを
備え、命令履歴キャッシュが、データ入力に供給された
命令をアドレス入力に供給されたアドレスに記憶するよ
うに構成された書込みアクセス・ポートを含み、履歴更
新回路が、実行パイプの複数の段のうちの1つの段内の
命令レジスタを書込みアクセス・ポートのデータ入力と
電気的に結合する1組のデータ線と、実行パイプの複数
の段のうちのもう1つの段内のアドレス・レジスタを書
込みアクセス・ポートのアドレス入力と電気的に結合す
る1組のアドレス線とを備え、1組のデータ線が結合さ
れる段が、1組のアドレス線が結合される段からN−1
サイクルだけずれる上記(6)に記載の回路。 (8)実行ユニットが、複数の段を備える実行パイプを
備え、命令履歴キャッシュが、データ入力に供給された
命令をアドレス入力に供給されたアドレスに記憶するよ
うに構成された書込みアクセス・ポートを含み、履歴更
新回路がさらに、実行パイプと命令履歴キャッシュの間
に挿入されたセレクタ回路を備え、セレクタ回路が、書
込みアクセスポートのデータ入力とアドレス入力の少な
くとも一方を実行パイプの様々な段と選択的に結合し、
セレクタ入力に応答して、第1の命令の予測される次の
命令を命令履歴キャッシュ内で命令1個分以上、制御可
能にずらすように構成される上記(6)に記載の回路。 (9)予測検証回路が、それぞれ、命令履歴キャッシュ
および二次命令キャッシュから、予測される次の命令お
よび実際の次の命令を受け取り、これらの命令が一致し
ないことに応答して、実行ユニットに禁止信号を出力
し、予測される次の命令の実行を終了するように構成さ
れた比較ブロックを含む上記(1)に記載の回路。 (10)実行ユニットが、予測される次の命令の実行結
果を記憶するレジスタ書込み段を有する実行パイプを含
み、実行ユニットが、比較ブロックからの禁止信号に応
答して、予測される次の命令のレジスタ書込み段を禁止
するように構成される上記(9)に記載の回路。 (11)比較ブロックが、一次キャッシュからのミス信
号および二次キャッシュからのヒット信号によってイネ
ーブルされるように構成される上記(9)に記載の回
路。 (12)二次キャッシュが、命令履歴キャッシュよりも
Mサイクルだけ長いアクセス時間を有し、予測検証回路
がさらに、命令履歴キャッシュと比較ブロックの間に挿
入されたM段バッファを備える上記(9)に記載の回
路。 (13)実行ユニットが、一次キャッシュ、二次キャッ
シュ、および命令履歴キャッシュにアドレスを出力し、
一次キャッシュ、二次キャッシュ、および命令履歴キャ
ッシュへの並行アクセス動作を並行して開始するように
構成される上記(1)に記載の回路。 (14)実行ユニットが第1の集積回路デバイス内に配
設され、回路がさらに、第1の集積回路デバイスと結合
された複数のメモリ装置を備え、複数のメモリ装置がそ
れぞれ、二次キャッシュおよび命令履歴キャッシュのそ
れぞれ用のアドレス空間の一部を含み、各メモリ装置
が、予測される次の命令および実際の次の命令のそれぞ
れの一部を記憶し、予測検証回路が、(a)それぞれ、
複数のメモリ装置内に配設され、関連するメモリ装置に
記憶されている予測される次の命令の一部および実際の
次の命令の一部を受け取り、これらの部分が一致しない
ことに応答して第1の集積回路デバイスに部分比較信号
を出力するように構成された、複数の部分比較ブロック
と、(b)第1の集積回路デバイス内に配設され、複数
の部分比較ブロックからの部分比較信号を組み合わせ、
部分比較信号のうちのどれかが、予測される次の命令と
実際の次の命令との間の不一致を示す場合に、予測され
る次の命令の実行を選択的に終了する禁止信号を生成す
るように構成された、マスタ比較ブロックとを備える上
記(1)に記載の回路。 (15)上記(1)の回路を備えるデータ処理システ
ム。 (16)上記(1)の回路を定義するハードウェア定義
プログラムと、ハードウェア定義プログラムを保持する
信号保持媒体とを備えるプログラム製品。 (17)信号保持媒体が、伝送型媒体と記憶可能媒体の
うちの少なくとも一方を含む上記(16)に記載のプロ
グラム製品。 (18)(a)複数の命令が記憶された主記憶装置と、
(b)主記憶装置と結合され、複数の命令の少なくとも
第1の部分を記憶する二次キャッシュと、(c)各命令
が、複数の命令のうちの1つの後で実行すべき予測され
る命令を表す、複数の予測される次の命令が記憶された
命令履歴キャッシュと、(d)二次キャッシュおよび命
令履歴キャッシュと結合されたプロセッサとを備え、プ
ロセッサが、(1)二次キャッシュと結合され、複数の
命令の少なくとも第2の部分を記憶し、二次命令キャッ
シュが、一次命令キャッシュよりも長いアクセス時間を
有する、一次命令キャッシュと、(2)複数の命令のう
ちの第1の命令を実行するように構成された少なくとも
1つの実行ユニットと、(3)それぞれ、命令履歴キャ
ッシュおよび二次命令キャッシュから、第1の命令の後
で実行すべき予測される次の命令および実際の次の命令
の検索を開始するように構成され、さらに、予測される
次の命令が、第1の命令が実行された後で実行ユニット
によって実行されるように、予測される次の命令を実行
ユニットに供給するように構成された、プリフェッチ回
路と、(4)それぞれ、命令履歴キャッシュおよび二次
命令キャッシュから、予測される次の命令および実際の
次の命令を受け取り、予測される次の命令と実際の次の
命令が一致しない場合に実行ユニットによる予測される
次の命令の実行を終了するように構成された予測検証回
路とを備えるデータ処理システム。 (19)二次命令キャッシュが一次命令キャッシュより
も長いアクセス時間を有する、一次命令キャッシュおよ
び二次命令キャッシュを含むメモリと結合された実行ユ
ニットによって実行される命令を推測的に取り出す方法
であって、(a)命令履歴キャッシュおよび二次命令キ
ャッシュから、実行ユニットによる第1の命令の実行後
で実行すべき予測される次の命令および実際の次の命令
の検索を並行して開始するステップと、(b)予測され
る次の命令を、命令履歴キャッシュから受け取り、実行
ユニットによって実行されるようにこの実行ユニットに
供給するステップと、(c)命令履歴キャッシュから受
け取った予測される次の命令と、二次キャッシュから受
け取った実際の次の命令を比較し、予測される次の命令
と実際の次の命令が一致しない場合に実行ユニットによ
る予測される次の命令の実行を終了するステップとを含
む方法。 (20)(a)複数の命令が記憶されたメモリと、
(b)各命令が、メモリ内のある命令が実行されてから
少なくとも2サイクル後に実行すべき予測される命令を
表す、複数の予測される次の命令が記憶された命令履歴
キャッシュと、(c)メモリからの第1の命令の実行を
開始し、その後でメモリからの第2の命令の実行を開始
するように構成された少なくとも1つの実行ユニット
と、(d)実行ユニットによって第1の命令が実行され
るのと並行して、命令履歴キャッシュから得た第2の命
令の予測される次の命令をプリフェッチするように構成
されたプリフェッチ回路とを備える回路。 (21)メモリが一次命令キャッシュおよび二次命令キ
ャッシュを含み、二次命令キャッシュが一次命令キャッ
シュよりも長いアクセス時間を有し、プリフェッチ回路
がさらに、予測される次の命令がプリフェッチされるの
と並行して、二次命令キャッシュからの第2の命令の実
際の次の命令の検索を開始し、予測される次の命令が、
第1の命令が実行された後に実行ユニットによって実行
されるように、予測される次の命令を実行ユニットに供
給するように構成され、回路がさらに、それぞれ、命令
履歴キャッシュおよび二次命令キャッシュから、予測さ
れる次の命令および実際の次の命令を受け取り、予測さ
れる次の命令と実際の次の命令が一致しない場合に実行
ユニットによる予測される次の命令の実行を終了するよ
うに構成された予測検証回路を備える上記(20)に記
載の回路。 (22)さらに、第2の命令から少なくとも2サイクル
後に実際に実行される命令を第2の命令の予測される次
の命令として記憶するように構成された履歴更新回路を
備える上記(20)に記載の回路。 (23)命令履歴キャッシュがNサイクルのアクセス時
間を有し、履歴更新回路が、第2の命令からN−1サイ
クル前に実行される第3の命令のアドレスを介して命令
履歴キャッシュ内で、第2の命令の予測される次の命令
がアクセスされるように、第2の命令の予測される次の
命令を命令履歴キャッシュ内で命令N−1個分ずらすよ
うに構成される上記(22)に記載の回路。 (24)実行ユニットが、複数の段を備える実行パイプ
を備え、命令履歴キャッシュが、データ入力に供給され
た命令をアドレス入力に供給されたアドレスに記憶する
ように構成された書込みアクセス・ポートを含み、履歴
更新回路が、実行パイプの複数の段のうちの1つの段内
の命令レジスタを書込みアクセス・ポートのデータ入力
と電気的に結合する1組のデータ線と、実行パイプの複
数の段のうちの他の段内のアドレス・レジスタを書込み
アクセス・ポートのアドレス入力と電気的に結合する1
組のアドレス線とを備え、1組のデータ線が結合される
段が、1組のアドレス線が結合される段からN−1サイ
クルだけずれる上記(23)に記載の回路。 (25)上記(20)の回路を備えるデータ処理システ
ム。 (26)上記(20)の回路を定義するハードウェア定
義プログラムと、ハードウェア定義プログラムを保持す
る信号保持媒体とを備えるプログラム製品。 (27)メモリと結合された実行ユニットによって実行
される命令を推測的に取り出す方法であって、(a)実
行ユニットによるメモリからの第1の命令の実行を開始
するステップと、(b)第1の命令の実行を開始した
後、実行ユニットによるメモリからの第2の命令の実行
を開始するステップと、(c)実行ユニットによって第
1の命令が実行されるのと並行して、命令履歴キャッシ
ュからの第2の命令の予測される次の命令をプリフェッ
チするステップとを含み、命令履歴キャッシュが、各命
令が、メモリ内のある命令が実行されてから少なくとも
2サイクル後に実行すべき予測される命令を表す、内部
に記憶された複数の予測される次の命令を有する方法。 (28)(a)各命令が、複数の命令のうちの1つが実
行された後に実行すべき予測される次の命令を識別する
内部に埋め込まれた履歴データを含む、複数の命令を記
憶するメモリと、(b)メモリと結合され、メモリに記
憶されている第1の命令を実行するように構成された、
少なくとも1つの実行ユニットと、(c)実行ユニット
によって第1の命令が実行されるのと並行して、第1の
命令の履歴データによって識別される予測される次の命
令の、メモリからの検索を開始するように構成されたプ
リフェッチ回路とを備える回路。 (29)複数の命令がそれぞれ、複数のパーセルを含む
Very Long Word Instruction(VLIW)であり、この
命令に関する履歴データが少なくとも1つのパーセルに
記憶される上記(28)に記載の回路。 (30)各命令についての履歴アドレス・インデックス
が命令の最後のパーセルに記憶される上記(29)に記
載の回路。 (31)複数の命令内の各命令が、その最後のパーセル
として、NOOPパーセルと分岐パーセルの一方を含む
上記(30)に記載の回路。 (32)最後のパーセルとして分岐パーセルを有する任
意の命令が第2の分岐パーセルを含み、任意の所与の命
令中の分岐パーセルが、メモリ内の同じキャッシュ・ラ
インに分岐する分岐先アドレスを含み、それによって、
最後のパーセル中の分岐パーセル用の分岐先アドレスが
その履歴アドレス・インデックスで置き換えられる上記
(31)に記載の回路。 (33)メモリが一次命令キャッシュおよび二次命令キ
ャッシュを含み、プリフェッチ回路が、第1の命令中の
履歴アドレス・インデックスを使用して二次キャッシュ
にアドレスすることにより、第1の命令の履歴データに
よって識別される予測される次の命令の検索を開始する
ように構成され、二次命令キャッシュが、履歴アドレス
・インデックスを受け取ったことに応答して、一次命令
キャッシュのアクセス時間よりも長いNサイクルのアク
セス時間を有する上記(29)に記載の回路。 (34)第1の命令に関する履歴データが、第1の命令
からNサイクル後に実行すべき第2の命令の予測される
次の命令を識別する上記(33)に記載の回路。 (35)プリフェッチ回路がさらに、実行ユニットによ
る予測される次の命令の実行を開始するように構成さ
れ、回路がさらに、(a)第2の命令の後で実行される
予測される次の命令および実際の次の命令のアドレスを
比較し、予測される次の命令のアドレスと実際の次の命
令のアドレスが一致しない場合に実行ユニットによる予
測される次の命令の実行を終了するように構成された予
測検証回路と、(b)第2の命令の後で実行される実際
の次の命令のアドレスに関連付けされたアドレス・イン
デックスを第1の命令に関する履歴データとして記憶す
るように構成された履歴更新回路とを備える上記(3
4)に記載の回路。 (36)実行ユニットが、複数の段を備える実行パイプ
を備え、一次命令キャッシュが、データ入力に供給され
たアドレス・インデックスをアドレス入力に供給された
アドレスに記憶するように構成された書込みアクセス・
ポートを含み、履歴更新回路が、実行パイプの複数の段
のうちの1つの段内の命令レジスタを書込みアクセス・
ポートのデータ入力と電気的に結合する1組のデータ線
と、実行パイプの複数の段のうちの他の段内のアドレス
・レジスタを書込みアクセス・ポートのアドレス入力と
電気的に結合する1組のアドレス線とを備え、1組のデ
ータ線が結合される段が、1組のアドレス線が結合され
る段からNサイクルだけずれる上記(35)に記載の回
路。 (37)実行ユニットが、複数の段を備える実行パイプ
を備え、一次命令キャッシュが、データ入力に供給され
たアドレス・インデックスをアドレス入力に供給された
アドレスに記憶するように構成された書込みアクセス・
ポートを含み、履歴更新回路がさらに、実行パイプと一
次命令キャッシュの間に挿入されたセレクタ回路を備
え、セレクタ回路が、書込みアクセス・ポートのデータ
入力とアドレス入力の少なくとも一方を実行パイプの様
々な段と選択的に結合し、セレクタ入力に応答して、第
2の命令の予測される次の命令を命令履歴キャッシュ内
で命令1個分以上、制御可能にずらすように構成される
上記(35)に記載の回路。 (38)一次キャッシュ内の各命令に、その命令に関連
する履歴データが変更されたかどうかを示す変更インデ
ィケータが関連付けられ、回路がさらに、予測される次
の命令のアドレスと実際の次の命令が一致しない場合に
第1の命令用の変更インディケータをセットするように
構成されたアドレス比較ブロックを備える上記(35)
に記載の回路。 (39)さらに、一次命令キャッシュおよび二次命令キ
ャッシュと結合されたキャストアウト・コントローラを
備え、キャストアウト・コントローラが、第1の命令用
の変更インディケータがセットされたときに一次命令キ
ャッシュ内の第1の命令のコピーが置き換えられること
に応答して二次命令キャッシュ内の第1の命令のコピー
に関する履歴データを更新するように構成される上記
(38)に記載の回路。 (40)上記(28)の回路を備えるデータ処理システ
ム。 (41)上記(28)の回路を定義するハードウェア定
義プログラムと、ハードウェア定義プログラムを保持す
る信号保持媒体とを備える製品。 (42)命令を推測的に取り出す方法であって、(a)
複数の命令のうちの1つが実行された後に実行すべき予
測される次の命令を識別する内部に埋め込まれた履歴デ
ータを含む、メモリに記憶されている複数の命令のうち
の第1の命令を実行するステップと、(b)第1の命令
を実行することに並行して、第1の命令の履歴データに
よって識別される予測される次の命令のメモリからの検
索を開始するステップとを含む方法。
【図面の簡単な説明】
【図1】本発明による命令履歴を使用するVLIWデー
タ処理システムのブロック図である。
【図2】図1のプロセッサと命令履歴キャッシュとL2
キャッシュとの間の相互接続を示すブロック図である。
【図3】VLIW命令を推測的に検索する際に使用され
る構成要素を示す、本発明による命令履歴キャッシュを
使用する他のVLIWデータ処理システム用の命令キャ
ッシング階層のブロック図である。
【図4】図3および図5のVLIWデータ処理システム
においてVLIW命令を検索し履歴データを更新する間
に実行される命令のシーケンスのタイミングを示すタイ
ミング図である。
【図5】命令履歴キャッシュ内の履歴データを更新する
際に使用される構成要素を示す、図3の命令キャッシン
グ階層のブロック図である。
【図6】図3および図5のデータ処理システムを用いて
命令を取り出す間に実行される動作を示すフローチャー
トである。
【図7】図7は、一体化された外部L2/命令履歴キャ
ッシュを実現する、本発明による他のVLIWデータ処
理システムのブロック図である。
【図8】本発明による方法で命令内に履歴データを埋め
込むのに適したVLIW命令用のビット・マッピングの
ブロック図である。
【図9】推測的にVLIW命令を検索しVLIW命令内
に埋め込まれた履歴データを更新する際に使用される構
成要素を示す、本発明による他のVLIWデータ処理シ
ステムのブロック図である。
【図10】VLIW命令を様々なキャッシュ階層レベル
でキャッシュする際にこの命令に埋込み履歴データを維
持するのに適したマルチレベル・キャッシュ階層を示
す、本発明による他のVLIWデータ処理システムのブ
ロック図である。
【図11】図10のL1/L2キャストアウト・コント
ローラによって使用されるキャストアウト・アルゴリズ
ムのフローチャートである。
【図12】制御可能なずれをもつ履歴データ更新機構を
示す、本発明による他のVLIWデータ処理システムの
ブロック図である。
【符号の説明】
12 プロセッサ 18 主記憶装置 20 入出力サブシステム 22 システム相互接続 24 L3キャッシュ 26 L2キャッシュ 28 L1 Dキャッシュ 30 L1 Iキャッシュ 32 レジスタ・ファイル 38 復号論理 40 分岐ユニット 42 命令履歴キャッシュ 44 L2ディレクトリ 48 IARインデックス 52 プロセッサ 54 L2キャッシュ 56 命令履歴キャッシュ 58 L1 Iキャッシュ 92 比較ブロック
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 12/08 511 G06F 12/08 511B 573 573 (72)発明者 デーヴィッド・アーノルド・ルイク アメリカ合衆国55906 ミネソタ州ロチェ スター ホーソーン・ヒル・ロード ノー スイースト2317 Fターム(参考) 5B005 JJ13 KK12 KK23 MM02 MM03 MM05 NN23 NN66 VV00 5B013 BB01 BB02 BB18 DD00 DD10 5B033 AA02 CA19 DB06

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】(a)各命令が、複数の命令のうちの1つ
    が実行された後に実行すべき予測される次の命令を識別
    する内部に埋め込まれた履歴データを含む、複数の命令
    を記憶するメモリと、 (b)メモリと結合され、メモリに記憶されている第1
    の命令を実行するように構成された、少なくとも1つの
    実行ユニットと、 (c)実行ユニットによって第1の命令が実行されるの
    と並行して、第1の命令の履歴データによって識別され
    る予測される次の命令の、メモリからの検索を開始する
    ように構成されたプリフェッチ回路とを備える回路。
  2. 【請求項2】複数の命令がそれぞれ、複数のパーセルを
    含むVery Long Word Instruction(VLIW)であり、
    この命令に関する履歴データが少なくとも1つのパーセ
    ルに記憶される請求項1に記載の回路。
  3. 【請求項3】各命令についての履歴アドレス・インデッ
    クスが命令の最後のパーセルに記憶される請求項2に記
    載の回路。
  4. 【請求項4】複数の命令内の各命令が、その最後のパー
    セルとして、NOOPパーセルと分岐パーセルの一方を
    含む請求項3に記載の回路。
  5. 【請求項5】最後のパーセルとして分岐パーセルを有す
    る任意の命令が第2の分岐パーセルを含み、任意の所与
    の命令中の分岐パーセルが、メモリ内の同じキャッシュ
    ・ラインに分岐する分岐先アドレスを含み、それによっ
    て、最後のパーセル中の分岐パーセル用の分岐先アドレ
    スがその履歴アドレス・インデックスで置き換えられる
    請求項4に記載の回路。
  6. 【請求項6】メモリが一次命令キャッシュおよび二次命
    令キャッシュを含み、プリフェッチ回路が、第1の命令
    中の履歴アドレス・インデックスを使用して二次キャッ
    シュにアドレスすることにより、第1の命令の履歴デー
    タによって識別される予測される次の命令の検索を開始
    するように構成され、二次命令キャッシュが、履歴アド
    レス・インデックスを受け取ったことに応答して、一次
    命令キャッシュのアクセス時間よりも長いNサイクルの
    アクセス時間を有する請求項2に記載の回路。
  7. 【請求項7】第1の命令に関する履歴データが、第1の
    命令からNサイクル後に実行すべき第2の命令の予測さ
    れる次の命令を識別する請求項6に記載の回路。
  8. 【請求項8】プリフェッチ回路がさらに、実行ユニット
    による予測される次の命令の実行を開始するように構成
    され、回路がさらに、 (a)第2の命令の後で実行される予測される次の命令
    および実際の次の命令のアドレスを比較し、予測される
    次の命令のアドレスと実際の次の命令のアドレスが一致
    しない場合に実行ユニットによる予測される次の命令の
    実行を終了するように構成された予測検証回路と、 (b)第2の命令の後で実行される実際の次の命令のア
    ドレスに関連付けされたアドレス・インデックスを第1
    の命令に関する履歴データとして記憶するように構成さ
    れた履歴更新回路とを備える請求項7に記載の回路。
  9. 【請求項9】実行ユニットが、複数の段を備える実行パ
    イプを備え、一次命令キャッシュが、データ入力に供給
    されたアドレス・インデックスをアドレス入力に供給さ
    れたアドレスに記憶するように構成された書込みアクセ
    ス・ポートを含み、履歴更新回路が、実行パイプの複数
    の段のうちの1つの段内の命令レジスタを書込みアクセ
    ス・ポートのデータ入力と電気的に結合する1組のデー
    タ線と、実行パイプの複数の段のうちの他の段内のアド
    レス・レジスタを書込みアクセス・ポートのアドレス入
    力と電気的に結合する1組のアドレス線とを備え、1組
    のデータ線が結合される段が、1組のアドレス線が結合
    される段からNサイクルだけずれる請求項8に記載の回
    路。
  10. 【請求項10】実行ユニットが、複数の段を備える実行
    パイプを備え、一次命令キャッシュが、データ入力に供
    給されたアドレス・インデックスをアドレス入力に供給
    されたアドレスに記憶するように構成された書込みアク
    セス・ポートを含み、履歴更新回路がさらに、実行パイ
    プと一次命令キャッシュの間に挿入されたセレクタ回路
    を備え、セレクタ回路が、書込みアクセス・ポートのデ
    ータ入力とアドレス入力の少なくとも一方を実行パイプ
    の様々な段と選択的に結合し、セレクタ入力に応答し
    て、第2の命令の予測される次の命令を命令履歴キャッ
    シュ内で命令1個分以上、制御可能にずらすように構成
    される請求項8に記載の回路。
  11. 【請求項11】一次キャッシュ内の各命令に、その命令
    に関連する履歴データが変更されたかどうかを示す変更
    インディケータが関連付けられ、回路がさらに、予測さ
    れる次の命令のアドレスと実際の次の命令が一致しない
    場合に第1の命令用の変更インディケータをセットする
    ように構成されたアドレス比較ブロックを備える請求項
    8に記載の回路。
  12. 【請求項12】さらに、一次命令キャッシュおよび二次
    命令キャッシュと結合されたキャストアウト・コントロ
    ーラを備え、キャストアウト・コントローラが、第1の
    命令用の変更インディケータがセットされたときに一次
    命令キャッシュ内の第1の命令のコピーが置き換えられ
    ることに応答して二次命令キャッシュ内の第1の命令の
    コピーに関する履歴データを更新するように構成される
    請求項11に記載の回路。
  13. 【請求項13】請求項1の回路を備えるデータ処理シス
    テム。
  14. 【請求項14】請求項1の回路を定義するハードウェア
    定義プログラムと、ハードウェア定義プログラムを保持
    する信号保持媒体とを備える製品。
  15. 【請求項15】命令を推測的に取り出す方法であって、 (a)複数の命令のうちの1つが実行された後に実行す
    べき予測される次の命令を識別する内部に埋め込まれた
    履歴データを含む、メモリに記憶されている複数の命令
    のうちの第1の命令を実行するステップと、 (b)第1の命令を実行することに並行して、第1の命
    令の履歴データによって識別される予測される次の命令
    のメモリからの検索を開始するステップとを含む方法。
JP2001240748A 1998-09-01 2001-08-08 命令履歴キャッシングを使用して推測的に命令を実行する回路、製品、およびそのための方法 Expired - Fee Related JP3659340B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/144,664 US6230260B1 (en) 1998-09-01 1998-09-01 Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US09/144664 1998-09-01

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP23658199A Division JP3412575B2 (ja) 1998-09-01 1999-08-24 命令履歴キャッシングを使用して推測的に命令を実行する回路、データ処理システム、およびそのための方法

Publications (2)

Publication Number Publication Date
JP2002091761A true JP2002091761A (ja) 2002-03-29
JP3659340B2 JP3659340B2 (ja) 2005-06-15

Family

ID=22509580

Family Applications (2)

Application Number Title Priority Date Filing Date
JP23658199A Expired - Fee Related JP3412575B2 (ja) 1998-09-01 1999-08-24 命令履歴キャッシングを使用して推測的に命令を実行する回路、データ処理システム、およびそのための方法
JP2001240748A Expired - Fee Related JP3659340B2 (ja) 1998-09-01 2001-08-08 命令履歴キャッシングを使用して推測的に命令を実行する回路、製品、およびそのための方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP23658199A Expired - Fee Related JP3412575B2 (ja) 1998-09-01 1999-08-24 命令履歴キャッシングを使用して推測的に命令を実行する回路、データ処理システム、およびそのための方法

Country Status (2)

Country Link
US (1) US6230260B1 (ja)
JP (2) JP3412575B2 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446143B1 (en) * 1998-11-25 2002-09-03 Compaq Information Technologies Group, L.P. Methods and apparatus for minimizing the impact of excessive instruction retrieval
US6314431B1 (en) * 1999-09-02 2001-11-06 Hewlett-Packard Company Method, system, and apparatus to improve instruction pre-fetching on computer systems
US7761857B1 (en) * 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
DE10031749A1 (de) * 2000-06-29 2002-01-10 Welz Industrieprodukte Gmbh Kaltgasgenerator
US6704843B1 (en) 2000-10-26 2004-03-09 International Business Machines Corporation Enhanced multiprocessor response bus protocol enabling intra-cache line reference exchange
US6721856B1 (en) 2000-10-26 2004-04-13 International Business Machines Corporation Enhanced cache management mechanism via an intelligent system bus monitor
US6601144B1 (en) * 2000-10-26 2003-07-29 International Business Machines Corporation Dynamic cache management in a symmetric multiprocessor system via snoop operation sequence analysis
US6763433B1 (en) 2000-10-26 2004-07-13 International Business Machines Corporation High performance cache intervention mechanism for symmetric multiprocessor systems
US6629210B1 (en) * 2000-10-26 2003-09-30 International Business Machines Corporation Intelligent cache management mechanism via processor access sequence analysis
US6631450B1 (en) 2000-10-26 2003-10-07 International Business Machines Corporation Symmetric multiprocessor address bus protocol with intra-cache line access information
US7114001B2 (en) * 2001-05-11 2006-09-26 International Business Machines Corporation Predictive networking
US20030065906A1 (en) * 2001-09-28 2003-04-03 Rakvic Ryan N. ASAP instruction caching
US6763421B2 (en) 2001-10-11 2004-07-13 International Business Machines Corporation Instruction pair detection and pseudo ports for cache array
US6775735B2 (en) 2001-10-11 2004-08-10 International Business Machines Corporation Instruction pair detection and pseudo ports for cache array
US20030131345A1 (en) * 2002-01-09 2003-07-10 Chris Wilkerson Employing value prediction with the compiler
DE10231653A1 (de) * 2002-07-12 2004-02-05 Infineon Technologies Ag Verfahren zum Einrichten einer programmgesteuerten Schaltungsanordnung und Schaltungsanordnung zur Durchführung des Verfahrens
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US7698539B1 (en) * 2003-07-16 2010-04-13 Banning John P System and method of instruction modification
US7606997B1 (en) 2003-07-18 2009-10-20 Guillermo Rozas Method and system for using one or more address bits and an instruction to increase an instruction set
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
US20070186050A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for data lines
US7478197B2 (en) * 2006-07-18 2009-01-13 International Business Machines Corporation Adaptive mechanisms for supplying volatile data copies in multiprocessor systems
US8756404B2 (en) 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline
US8024547B2 (en) * 2007-05-01 2011-09-20 Vivante Corporation Virtual memory translation with pre-fetch prediction
US20090006753A1 (en) * 2007-06-28 2009-01-01 David Arnold Luick Design structure for accessing a cache with an effective address
US7937530B2 (en) * 2007-06-28 2011-05-03 International Business Machines Corporation Method and apparatus for accessing a cache with an effective address
US20090006754A1 (en) * 2007-06-28 2009-01-01 Luick David A Design structure for l2 cache/nest address translation
US20090006803A1 (en) * 2007-06-28 2009-01-01 David Arnold Luick L2 Cache/Nest Address Translation
US20100005218A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation Enhanced cascade interconnected memory system
US8209489B2 (en) * 2008-10-22 2012-06-26 International Business Machines Corporation Victim cache prefetching
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
US8117397B2 (en) * 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
US8225045B2 (en) * 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8499124B2 (en) * 2008-12-16 2013-07-30 International Business Machines Corporation Handling castout cache lines in a victim cache
US8489819B2 (en) * 2008-12-19 2013-07-16 International Business Machines Corporation Victim cache lateral castout targeting
US8949540B2 (en) * 2009-03-11 2015-02-03 International Business Machines Corporation Lateral castout (LCO) of victim cache line in data-invalid state
US8285939B2 (en) * 2009-04-08 2012-10-09 International Business Machines Corporation Lateral castout target selection
US8347036B2 (en) * 2009-04-09 2013-01-01 International Business Machines Corporation Empirically based dynamic control of transmission of victim cache lateral castouts
US8327073B2 (en) * 2009-04-09 2012-12-04 International Business Machines Corporation Empirically based dynamic control of acceptance of victim cache lateral castouts
US8312220B2 (en) * 2009-04-09 2012-11-13 International Business Machines Corporation Mode-based castout destination selection
US9189403B2 (en) * 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
EP2738681A4 (en) * 2011-07-27 2014-07-30 Fujitsu Ltd ELECTRONIC DEVICE, METHOD FOR ACCESSING THIS DEVICE AND PROGRAM THEREFOR
US11709679B2 (en) 2016-03-31 2023-07-25 Qualcomm Incorporated Providing load address predictions using address prediction tables based on load path history in processor-based systems
GB2551381B (en) * 2016-06-16 2019-07-24 Mips Tech Llc Method of fetching instructions in an instruction fetch unit
US10452401B2 (en) * 2017-03-20 2019-10-22 Apple Inc. Hints for shared store pipeline and multi-rate targets
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
WO2019191743A1 (en) * 2018-03-31 2019-10-03 Micron Technology, Inc. Conditional branching control for a multi-threaded, self- scheduling reconfigurable computing fabric
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5858666A (ja) 1981-10-02 1983-04-07 Hitachi Ltd デ−タ処理装置
US4807110A (en) 1984-04-06 1989-02-21 International Business Machines Corporation Prefetching system for a cache having a second directory for sequentially accessed blocks
US4691277A (en) 1984-10-24 1987-09-01 International Business Machines Corp. Small instruction cache using branch target table to effect instruction prefetch
US4722050A (en) 1986-03-27 1988-01-26 Hewlett-Packard Company Method and apparatus for facilitating instruction processing of a digital computer
US5179680A (en) 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
US4920477A (en) 1987-04-20 1990-04-24 Multiflow Computer, Inc. Virtual address table look aside buffer miss recovery method and apparatus
US4894772A (en) 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4943908A (en) 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
US5136696A (en) 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
JPH0778735B2 (ja) 1988-12-05 1995-08-23 松下電器産業株式会社 キャッシュ装置と命令読出し装置
US5142634A (en) 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
DE69030931T2 (de) 1989-04-24 1998-01-15 Ibm Mehrfachsequenzprozessorsystem
JPH02287626A (ja) 1989-04-28 1990-11-27 Toshiba Corp パイプライン方式の分岐命令制御装置
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5093777A (en) 1989-06-12 1992-03-03 Bull Hn Information Systems Inc. Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack
WO1991004536A1 (en) 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
US5148538A (en) 1989-10-20 1992-09-15 International Business Machines Corporation Translation look ahead based cache access
US5163140A (en) 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5093778A (en) 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache
US5303377A (en) 1990-03-27 1994-04-12 North American Philips Corporation Method for compiling computer instructions for increasing instruction cache efficiency
US5261066A (en) 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
US5317718A (en) 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
US5333280A (en) 1990-04-06 1994-07-26 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
US5214763A (en) 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
US5295249A (en) 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
CA2038264C (en) 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
EP0463965B1 (en) 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
US5283873A (en) 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
US5446850A (en) 1991-01-15 1995-08-29 International Business Machines Corporation Cross-cache-line compounding algorithm for scism processors
US5394530A (en) 1991-03-15 1995-02-28 Nec Corporation Arrangement for predicting a branch target address in the second iteration of a short loop
US5414822A (en) 1991-04-05 1995-05-09 Kabushiki Kaisha Toshiba Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness
US5287467A (en) 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5423014A (en) 1991-10-29 1995-06-06 Intel Corporation Instruction fetch unit with early instruction fetch mechanism
US5386547A (en) 1992-01-21 1995-01-31 Digital Equipment Corporation System and method for exclusive two-level caching
US5423016A (en) 1992-02-24 1995-06-06 Unisys Corporation Block buffer for instruction/operand caches
WO1993017385A1 (en) 1992-02-27 1993-09-02 Intel Corporation Dynamic flow instruction cache memory
WO1993017384A1 (en) 1992-02-27 1993-09-02 Wang Laboratories, Inc. Cpu having pipelined instruction unit and effective address calculation unit with retained virtual address capability
US5440707A (en) 1992-04-29 1995-08-08 Sun Microsystems, Inc. Instruction and data cache with a shared TLB for split accesses and snooping in the same clock cycle
US5423011A (en) 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
US5442756A (en) 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5434985A (en) 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5367703A (en) 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
DE69327981T2 (de) 1993-01-21 2000-10-05 Advanced Micro Devices Inc Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt.
US5748976A (en) * 1993-10-18 1998-05-05 Amdahl Corporation Mechanism for maintaining data coherency in a branch history instruction cache
JP3599409B2 (ja) * 1994-06-14 2004-12-08 株式会社ルネサステクノロジ 分岐予測装置
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching

Also Published As

Publication number Publication date
JP3412575B2 (ja) 2003-06-03
US6230260B1 (en) 2001-05-08
JP2000089953A (ja) 2000-03-31
JP3659340B2 (ja) 2005-06-15

Similar Documents

Publication Publication Date Title
JP3412575B2 (ja) 命令履歴キャッシングを使用して推測的に命令を実行する回路、データ処理システム、およびそのための方法
US6314493B1 (en) Branch history cache
US6490658B1 (en) Data prefetch technique using prefetch cache, micro-TLB, and history file
JP3542021B2 (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
US6216206B1 (en) Trace victim cache
US6687789B1 (en) Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
JP3907809B2 (ja) 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
US8458408B2 (en) Cache directed sequential prefetch
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
US6298423B1 (en) High performance load/store functional unit and data cache
US5694568A (en) Prefetch system applicable to complex memory access schemes
US5845323A (en) Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US8984261B2 (en) Store data forwarding with no memory model restrictions
US6175898B1 (en) Method for prefetching data using a micro-TLB
US20090006803A1 (en) L2 Cache/Nest Address Translation
US7680985B2 (en) Method and apparatus for accessing a split cache directory
US6161167A (en) Fully associate cache employing LRU groups for cache replacement and mechanism for selecting an LRU group
JP2005535955A (ja) ジャンプターゲットのための命令キャッシュウェイ予測
JPH1074166A (ja) 多重レベル・ダイナミック・セット予測方法および装置
JP3678443B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ
CN111213131B (zh) 高速缓存器中的零时延预提取

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050114

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: 20050215

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20050215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050308

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: 20090325

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees