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
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000015654 memory Effects 0.000 claims abstract description 82
- 238000012545 processing Methods 0.000 claims description 37
- 230000008859 change Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 9
- 230000008878 coupling Effects 0.000 claims description 4
- 238000010168 coupling process Methods 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 238000003860 storage Methods 0.000 description 20
- 238000012795 verification Methods 0.000 description 16
- 238000005192 partition Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100041595 Arabidopsis thaliana IREG3 gene Proteins 0.000 description 1
- 101000650817 Homo sapiens Semaphorin-4D Proteins 0.000 description 1
- 102100027744 Semaphorin-4D Human genes 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 231100000989 no adverse effect Toxicity 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
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
る履歴データに基づいてこのような命令を推測的に取り
出す回路、製品、およびそのための方法を提供する。 【解決手段】 具体的には、所与の命令に関する履歴デ
ータが、この所与の命令の直後に実行された他の命令を
識別する。いくつかの実施態様では、メモリに記憶され
ている複数の命令の予測される次の命令を表す履歴デー
タを記憶するために命令履歴キャッシュが使用され、予
測される次の命令と実際の次の命令が並列に検索できる
ように、この命令履歴キャッシュは二次命令キャッシュ
と並行して操作される。予測される次の命令は、命令履
歴キャッシュから検索されるときに推測的に実行され
る。しかし、予測される次の命令と実際の次の命令が一
致しない場合、このような命令の実行は終了する。
Description
路デバイスのアーキテクチャおよび設計に関し、詳細に
はプロセッサ集積回路デバイスにおける分岐予測に関す
る。
のユーザは、ますます複雑にかつ困難になるタスクを処
理するために、引き続きこのようなシステムにより高い
性能を要求している。このようなシステムを操作するプ
ロセッサのより高い性能は、クロック速度を高め、それ
によって個々の命令をより高速に処理することによって
得ることができる。しかし、複数の命令を互いに並列に
実行することによって比較的高い性能利得が達成されて
いる。
方法があり、この方法では、命令は、それを並列に処理
する必要のある様々な動作を実行するプロセッサ内の実
行ユニット用のパイプラインに供給される。たとえば、
典型的な命令を処理する場合、パイプラインは、メモリ
から命令を取り出し、命令を実行し、命令の結果を再び
メモリに書き込む別々の段を含むことができる。したが
って、命令シーケンスがパイプラインに順次供給される
場合、第1の命令の結果がパイプラインの第3段によっ
て再びメモリに書き込まれるときに、次の命令が第2段
によって実行され、しかも次の命令が第1段によって取
り出される。個々の各命令を処理するのに数クロック・
サイクルかかることがあるが、他の命令も同時に処理さ
れるので、プロセッサの全体的なスループットはずっと
高くなる。
して複数の命令を並列に実行することを試みることによ
って、より高度な並列処理を実行することもできる。複
数の実行ユニットを含むプロセッサをしばしば「スーパ
ースカラ」プロセッサと呼び、このようなプロセッサは
スケジューリング回路を含む。スケジューリング回路
は、できるだけ多くの命令が同時に処理されるように命
令を様々な実行ユニットに効率的にディスパッチするこ
とを試みる。しかし、1つの命令を、別の命令が完了す
るまで処理できないことが多いので、多くの場合、比較
的複雑な意思決定回路が必要とされる。たとえば、第1
の命令がメモリからの値をレジスタにロードし、第2の
命令がレジスタの内容に一定の数を加える場合、第2の
命令は通常、第1の命令の実行が完了するまで実行でき
ない。
すると、集積回路デバイス上の顕著な量の回路が占有さ
れ、プロセッサの全体的な実行速度が低下する可能性が
ある。このため、VLIWプロセッサに対して顕著な開
発作業が実施されている。このようなプロセッサでは、
どの命令が並列に処理できるかに関する決定は、実行中
ではなくプログラムの作成時に下される。VLIWプロ
セッサは通常、複数の実行ユニットを含み、各VLIW
命令は、パーセルと呼ばれる複数のプリミティブ命令を
含み、パーセルは互いに同じ時間に実行できることが知
られている。したがって、VLIW内の各プリミティブ
命令は、スケジューリングに関連する余分なオーバヘッ
ドなしに1つの実行ユニットに直接ディスパッチするこ
とができる。VLIWプロセッサは、コンピュータ・ユ
ーザによって書かれたコンピュータ・プログラム用の適
切なVLIW命令を生成するために、コンパイラと呼ば
れる高度なコンピュータ・プログラムを利用する。VL
IWプロセッサは通常、命令の実行のスケジューリング
に関連するオーバヘッドがない場合、スーパースカラ・
プロセッサよりも簡単で効率的である。
ータの性能に関する他の問題は、プロセッサとメモリの
間の情報の転送に関する問題である。特に、処理速度
は、メイン・メモリの速度よりもずっと早いペースで高
められている。そのため、多くのこのようなシステムで
は、比較的費用効果の高い形で性能を向上させるために
しばしばキャッシュ・メモリまたはキャッシュが使用さ
れる。
あり、1つまたは複数のプロセッサと、特に揮発性メモ
リ装置または非揮発性メモリ装置、大容量記憶装置、お
よび/または外部ネットワーク記憶装置に実装されるよ
うな比較的低速のメモリとの間に結合される。キャッシ
ュは、プロセッサによる選択されたメモリ・アドレスへ
のアクセス要求がキャッシュによって処理されるよう
に、選択されたメモリ・アドレスに記憶されている情報
のコピーを維持することによって、アクセスの速度を高
める。キャッシュに記憶されていないメモリ・アドレス
に関するアクセス要求を受け取ると必ず、キャッシュは
通常、その情報をメモリから検索し、プロセッサへ転送
する。さらに、キャッシュが満杯である場合、通常、最
初に使用されたメモリ・アドレスに関する情報が破棄さ
れるか、あるいはメモリに戻され、最後にアクセスされ
たメモリ・アドレスに関する情報のための空間が設けら
れる。
ャッシュ・ヒット」と呼ばれるキャッシュされているメ
モリ・アドレスへのアクセス要求の数が、「キャッシュ
・ミス」と呼ばれるキャッシュされていないメモリ・ア
ドレスへのアクセス要求の数に対して最大であるときで
ある。通常キャッシュ・ミスの結果として起こる追加の
オーバヘッドにもかかわらず、キャッシュ・ヒットの割
合が高いかぎり、システムの全体的なアクセス速度は高
くなる。
ードなど、多くの商用プログラム・コードを用いた場
合、コードが再使用されることがなく、かつ命令に指定
された条件または試験の結果に基づいてプロセッサに様
々な命令経路を選択させるために使用される多数の分岐
命令が存在するため、キャッシュ内の命令のミス率は比
較的高いことが多いことが判明している。また、多くの
オペレーティング・システム・コードはエラーおよび例
外の処理に使用され、したがってほとんど実行されず、
したがって、キャッシュはしばしば、実行されることの
ない顕著な数の命令を一時的に記憶する。
ピュータ・プログラムをVLIW互換フォーマットにコ
ンパイルすると通常、プログラム・コードが2倍ないし
4倍に拡大するので、多くの場合、ミス率がずっと高く
なることが判明している。また、VLIWプログラム・
コード中の分岐命令の相対頻度はずっと高く、通常、命
令3つごとに分岐が2つある。これに対して、スーパー
スカラ・プロセッサを用いた場合、分岐は命令5個ない
し6個ごとに1つである。
は、キャッシュのサイズを大きくすることである。しか
し、キャッシュ・メモリは、多くの場合比較的高価であ
り、特に、キャッシュを同じ集積回路デバイス上のプロ
セッサと一体化する場合、設計上の制約によって制限さ
れることが多い。プロセッサと一体化された内部キャッ
シュは通常、独立の回路に実装される外部キャッシュよ
りも高速である。一方、設計およびコスト上の制約のた
めに、内部キャッシュは通常、外部キャッシュよりもサ
イズがずっと小さい。
形であるがより高速な一次キャッシュが比較的大形であ
るがより低速な二次キャッシュと連鎖するように、様々
な速度の複数のキャッシュを連鎖させることである。命
令およびデータを別々のデータ・キャッシュと命令キャ
ッシュに分離することもできる。たとえば、命令につい
ては、いくつかのプロセッサは、比較的小形の内部レベ
ル1(L1)命令キャッシュを実装し、L1命令キャッ
シュとメイン・メモリ記憶域との間に追加の外部レベル
2(L2)命令キャッシュが結合される。通常、L1命
令キャッシュのアクセス時間は1クロック・サイクルで
あり、したがって、プロセッサによって命令を処理する
のとほぼ同じ速度でプロセッサにデータを供給すること
ができる。一方、外部L2命令キャッシュのアクセス時
間は多くの場合、少なくとも5クロック・サイクルであ
り、したがって、プロセッサがL2命令キャッシュへの
メモリ・アクセスを大幅に利用する必要がある場合、プ
ロセッサはしばしば停止し、キャッシュによってデータ
が検索されるのを待ち、したがって、プロセッサの性能
が著しく低下する。
最小限に抑えるための試みとして、多くのプロセッサは
プリフェッチ回路を含む。プリフェッチ回路は、ただち
に実行する必要のあるのはどの命令かを「予測」し、次
いでプロセッサがこの命令を必要とする前にこの命令を
メモリから推測的に検索することを試みる。分岐命令は
命令をプリフェッチするうえで最大の障害になり、その
ため、プリフェッチ回路は通常、「分岐予測」と呼ばれ
る動作を実行し、分岐命令の後で特定の命令経路が選択
されるかどうかを推測的に判定することを試みる。
分岐命令によってある分岐が選択されたかどうかについ
ての履歴(ヒストリー)を維持する分岐履歴テーブルま
たは分岐履歴キャッシュを利用するものである。特に、
多くの場合、ある分岐命令が実行されるたびに同じ命令
経路が選択されることが判明している。次に特定の分岐
命令が実行されるときに同じ経路が選択されると予測す
ることによって、この予測は通常、成功する。
分岐命令が最後に実行されたときにその命令に関する条
件が満たされたかどうかの表示を記憶する。しかし、従
来型の分岐履歴テーブルを用いた場合、テーブルにアク
セスして、ある分岐が選択されたかどうかを判定し、そ
の後で次の命令用のアドレスを生成し、次いで、生成さ
れたアドレスに記憶されている命令を取り出さなければ
ならないことが多い。生成されたアドレスにある命令が
一次キャッシュにはない場合、プロセッサは停止し、二
次キャッシュがフェッチ要求を処理するのを待つ。
は、分岐命令に関連するオーバヘッドを低減するが、多
くの場合、依然としてある程度のオーバヘッドが存在す
る。そのため、プロセッサ性能が悪影響を受ける。さら
に、VLIWプログラム・コードを用いた場合、分岐命
令により頻繁に出会うので、プロセッサ性能に対する分
岐命令の悪影響はずっと大きくなる。
目的は、分岐命令に関連するオーバヘッドを最小限に抑
え、特にVLIWプロセッサやスーパースカラ・プロセ
ッサのプロセッサ性能を最大にする改良された分岐予測
方法を提供することである。
よって実行される命令に関連する履歴データに基づいて
このような命令を推測的に取り出すデータ処理システ
ム、回路構成、集積回路デバイス、プログラム製品、お
よびそのような独自のプリフェッチ回路構成を利用する
方法を提供することによって、従来技術に関連するこれ
らおよびその他の問題に対処する。具体的には、所与の
命令に関する履歴データが、この所与の命令から1サイ
クルまたは複数サイクル後に実行された他の命令を識別
する。命令ストリームが多くの場合、同じ経路をたどる
傾向があるという認識に基づいて、過去の次の命令に関
する履歴情報が、推測的命令取出しのための信頼できる
予測値であることが判明している。
シュおよび二次命令キャッシュを含むメモリに記憶され
ている複数の命令の予測される次の命令を表す履歴デー
タを記憶するために命令履歴キャッシュが使用される。
予測される次の命令と実際の次の命令がプリフェッチ回
路構成によって並列に検索できるように、この命令履歴
キャッシュはメモリ内の二次命令キャッシュと並行して
操作される。プリフェッチ回路構成はさらに、命令履歴
キャッシュから得た予測される次の命令を実行ユニット
に供給し、この命令が、実行ユニットによって第1の命
令が実行された後に実行されるように構成される。ま
た、実行ユニットと結合された予測検証回路構成は、予
測される次の命令と実際の次の命令が一致しない場合
に、実行ユニットによる予測される次の命令の実行を終
了するように構成される。
来型の分岐予測キャッシュとは異なり、本発明による命
令履歴キャッシュは、分岐命令およびその他の命令の後
で実行された実際の命令の履歴を記憶する。そのため、
ある分岐が選択されたかどうかについての表示に基づい
てアドレスを算出し命令取出しを開始することに関連す
る呼出し時間が回避され、多くの場合、命令スループッ
トが著しく向上する。
れる次の命令が実際に、実行すべき正しい命令であるこ
とを検証する前に、この命令を推測的に取り出して実行
することができる。したがって、一次命令キャッシュで
は行うことのできない命令取出しの場合、この命令取出
しが単に二次命令キャッシュによって行われる場合と比
べて、命令を検索するのに必要な時間を短縮することが
できる。
ッシュは、予測される次の命令を表す履歴データを記憶
するためにも使用される。しかし、予測される次の命令
はそれぞれ、メモリ内の特定の命令が実行されてから少
なくとも2サイクル後に実行すべき予測される命令を表
す。少なくとも1つの実行ユニットは、メモリから得た
第1の命令の実行を開始し、その後、メモリから得た第
2の命令の実行を開始するように構成される。さらに、
プリフェッチ回路構成は、実行ユニットによって第1の
命令が実行されるのと並行して、命令履歴キャッシュか
ら得た第2の命令の予測される次の命令をプリフェッチ
するように構成される。
データは、この命令の後で次に実行すべき命令を予測し
ない。履歴データは、所与の命令に対する将来の命令が
実行された後に次に実行すべき命令を予測する。言い換
えれば、所与の命令に関連する履歴データは、この所与
の命令から2サイクル以上後に実行すべき命令を予測す
る。多くの実施態様では、命令履歴キャッシュから命令
を推測的に検索すると、命令履歴キャッシュのアクセス
時間のために遅延が生じることが判明している。したが
って、予測される次の次の命令またはそれよりも先の予
測される他の命令を推測的に検索することによって、こ
のような命令の検索に関連する呼出し時間をさらに短縮
することができる。
測する際に使用される履歴データは、メモリに記憶され
ている命令内に埋め込むことができる。この場合、実行
ユニットとプリフェッチ回路構成は互いに並行して動作
することができ、実行ユニットが、メモリに記憶されて
いる命令を実行し、同時にプリフェッチ回路構成が、こ
のような命令の履歴データによって識別される予測され
る次の命令のメモリからの検索を開始することができ
る。
て、多くの場合、独立の命令履歴キャッシュの必要がな
くなり、それによって回路構成の複雑さおよび構成要素
の数が低減される。さらに、多くの実施態様、たとえば
VLIWプロセッサなどでは、履歴データが追加された
場合に、命令自体に必要なメモリ記憶域を超えた追加の
メモリ記憶域が必要とされることのないように、履歴デ
ータをVLIW命令の未使用部分に埋め込めることが多
い。
々な実施形態は一般に、命令を推測的に取り出し実行す
るために使用される命令履歴データをキャッシュするこ
とによって動作する。通常、命令を推測的に取り出し、
そのような命令を1つまたは複数の実行ユニットへ転送
し、それらの実行ユニットによって実行させるために、
プリフェッチ回路構成が使用される。さらに、通常、履
歴データに基づいて予測を検証し、必要に応じて、誤っ
て予測された命令の実行を終了するために、予測検証回
路構成が使用される。
立の命令履歴キャッシュにキャッシュされる。命令履歴
キャッシュは内部キャッシュでも、あるいは外部キャッ
シュでもよく、このキャッシュは予測される次の命令の
アドレスではなく、このような命令自体を記憶し、この
ような命令の検索に関連する呼出し時間を短縮するため
に使用される。
次の命令を識別するアドレス、または次の命令のアドレ
スを生成できるアドレス・インデックスの形で、命令自
体内に埋め込まれる。VLIWプロセッサなどの場合、
この特徴によりしばしば、追加のメモリ記憶域要件なし
に命令の未使用部分に履歴データを記憶することが可能
になる。したがって、キャッシュ空間にコストがかかる
ことが多い場合、このような実施態様に関連する記憶域
に対する悪影響はない。
所与の命令に関連する履歴データを使用して、この命令
を実行した直後に次に実行すべき次の命令を表すことが
できるが、多くの実施態様では、別の命令用の履歴デー
タを所与の命令と関連付け、この命令用の履歴データ
が、他の命令が実行された直後に実行すべき次の命令を
表すようにすると有益である。言い換えれば、ある命令
の直後に実行すべき次の命令に関する履歴データを、メ
モリ内でこの命令からずらすことができる。
小命令セット・コンピュータ(RISC)プロセッサや
複雑命令セット・コンピュータ(CISC)プロセッサ
などのスーパースカラ・プロセッサを含め、様々なプロ
セッサ・アーキテクチャと共に使用するのに適してい
る。以下の議論は、本発明とVLIWベースのアーキテ
クチャとの併用に焦点を当てているが、当業者には、本
明細書の内容を読めば、非VLIW環境での本発明の様
々な態様および特徴の実施態様が明らかになろう。
の集積回路デバイスに実装されるか、あるいは1つまた
は複数の回路板を介して互いに電気的に結合された複数
の集積回路デバイスに実装されるかにかかわらず、導電
トレースまたはワイヤあるいはその両方を介して互いに
電気的に結合されたアナログまたはデジタルあるいはそ
の両方の電子構成要素の構成である。さらに、通常は、
ハードウェア定義プログラムと呼ばれ、デバイス上の回
路構成のレイアウトを定義する、1つまたは複数のコン
ピュータ・データ・ファイルを使用して、集積回路デバ
イスが設計され製造されることを認識されたい。これら
のプログラムは通常、設計ツールによって既知の方法で
生成され、その後製造時に、半導体ウェハに適用される
回路構成を画定するレイアウト・マスクを作製するため
に使用される。通常、これらのプログラムは、VHD
L、verilog、EDIFなどのハードウェア定義言語
(HDL)を使用して定義済みのフォーマットで生成さ
れる。したがって、完全に機能する集積回路デバイスに
実装された回路構成に関して本発明を説明し、以下でも
説明するが、当業者には、本発明による回路構成を様々
な形態のプログラム製品として配給することができ、本
発明が、この配給を実際に実施するために使用される信
号保持媒体の特定の種類にかかわらず同様に適用される
ことが理解されよう。信号保持媒体の例には、特に揮発
性メモリ装置や非揮発性メモリ装置、フロッピィ・ディ
スク、ハード・ディスク・ドライブ、CD−ROM、D
VDなどの記録可能型媒体と、デジタル通信リンクやア
ナログ通信リンクなどの伝送型媒体が含まれるが、これ
らに限らない。
くつかの図全体にわたって同じ部品を示す。図1は、本
発明による例示的なデータ処理システム10を示す。一
般に、データ処理システム10は、メモリ14と結合さ
れた1つまたは複数のプロセッサ12を含み、メモリ1
4は、プロセッサによって処理される命令およびデータ
を与える。メモリ14は通常、メモリ階層を形成するよ
うにいくつかのレベルに区分される。たとえば、最大容
量のメモリは通常、入出力(I/O)サブシステム20
を介してメイン・メモリまたは主記憶装置18と結合さ
れた直接アクセス記憶装置(DASD)16などの大容
量記憶サブシステムによって代表される。主記憶装置1
8は通常、ダイナミック・ランダム・アクセス・メモリ
(DRAM)など比較的大きな揮発性メモリ・バンクで
ある。メモリ用の比較的大きなアドレス空間を設けるに
は、入出力サブシステム20、たとえば様々なローカル
・エリア・ネットワークや、ワイド・エリア・ネットワ
ークや、その他の通信設備を介して他の外部記憶域形態
にアクセスすることができる。システム間相互接続22
を介し、たとえば光ファイバ通信リンクまたはシリアル
通信リンクを介してデータ処理システム10と追加の外
部情報を相互接続することができる。
1つまたは複数のレベルのキャッシュ・メモリ、たとえ
ば、レベル3(L3)キャッシュ24、レベル2(L
2)キャッシュ26、およびレベル1(L1)キャッシ
ュ(この場合、データキャッシュ28と命令キャッシュ
30に区分される)が設けられる。図1に表わすよう
に、キャッシュ28、30と同様に、プロセッサ12内
部の同じ集積回路デバイス上にキャッシュ階層の任意の
レベルを実装することができる。別法として、L2キャ
ッシュ26、L3キャッシュ24と同様に、キャッシュ
階層の任意のレベルをプロセッサ12の外部に実装し、
別々の集積回路デバイス上に配設することができる。さ
らに、たとえばL3キャッシュ24で表されるように、
任意の所与のキャッシュが複数のプロセッサのために働
くことができる。一般に、プロセッサから始まるメモリ
階層内の各レベルは通常、プロセッサから外された次の
レベルよりも記憶容量が小さいがアクセス時間は高速で
あることも理解されたい。したがって、頻繁に使用され
るデータをプロセッサのできるだけ近くに維持し、メモ
リ・システムの効率を最大にすることが望ましい。
ロセッサに共通するいくつかの構成要素を含む一般的な
プロセッサ・アーキテクチャを表す。データは主として
いくつかのレジスタ・ファイル32を介して処理され、
演算は、1つまたは複数の演算論理ユニット(ALU)
34によってレジスタ・ファイル上で実行される。浮動
小数点演算を1つまたは複数の浮動小数点演算ユニット
(FPU)36によって処理することもできる。一般
に、当技術分野でよく知られているように、ALUおよ
びFPU36はそれぞれ、実行ユニットとみなすことが
できる。
のデータを処理するために、復号論理38および分岐ユ
ニット40を使用して、L1命令キャッシュ(Iキャッ
シュ)30に記憶されている様々な命令を処理する。復
号論理38および分岐ユニット40はそれぞれ、当技術
分野で一般的に理解されており、使用される特定のアー
キテクチャに応じて異なる。図の実施形態では、たとえ
ば、プロセッサ12はVLIWプロセッサであり、各命
令は、プロセッサ内の複数の実行ユニットによって並列
に実行される複数のパーセルを含む。たとえば、特にス
ーパースカラRISCアーキテクチャやスーパースカラ
CISCアーキテクチャなど、他のアーキテクチャをサ
ポートできることを理解されたい。この後者のアーキテ
クチャを用いた場合、様々な実行ユニットに適切な命令
を経路指定して最適な性能を得るためにL1 Iキャッ
シュ30と復号論理38の間に追加の論理が必要になる
ことを理解されたい。当業者には他の修正形態および変
形形態が明らかであろう。
データを記憶するために使用される内部命令履歴キャッ
シュまたは外部命令履歴キャッシュ(IHC)42とプ
ロセッサ12を相互接続することもできる。IHC42
は特に、他のVLIW命令の後で実行すべき複数のVL
IW命令を記憶する。VLIW命令を推測的に検索する
場合に様々なキャッシュ・レベルへの追加のアクセスが
必要とされないように、IHC42は、このようなVL
IW命令のアドレスではなくこのようなVLIW命令自
体のコピーを記憶する。
は、16個の32ビット・パーセルを含む64バイトで
ある。IHC42のキャッシュ・ライン長は1VLIW
命令、または64バイトである。通常、IHC42は直
接マップされ、したがって、ディレクトリは不要にな
る。IHCは、プロセッサ12内部に実装することがで
き、あるいは図1に最もよく示すように外部キャッシュ
でよい。
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キャッシュは本
発明よりも短いか、あるいは長いアクセス時間を有する
ことができることを理解されたい。
は、「分岐先」アドレスとも呼ばれ、現在実行されてい
るVLIW命令から決定される実際の次の命令情報を表
わす。次の命令予測が正しいことを検証するには、、こ
のアドレス、あるいはより具体的にはこのアドレスに記
憶されている命令と、命令履歴キャッシュから推測的に
検索された命令が一致しなければならない。さらに、L
2ディレクトリ44は、線47から供給された実アドレ
スに応答して、特に、キャッシュ・ヒットが起こったか
どうかと、そうである場合に、4つのセットのうちのど
れに、要求されたキャッシュ・ラインが収納されている
かとを示す24ビット・ディレクトリ・エントリを出力
する。
線48によって駆動され、このアドレス線には、キャッ
シュにアドレスするために使用される17ビット命令ア
ドレス・レジスタ(IAR)インデックスが与えられ
る。この実施態様の命令履歴キャッシュ42は8MB直
接マップ・キャッシュとして実装される。したがって、
通常、命令履歴キャッシュのアクセス時間をディレクト
リ・ベースのL2キャッシュと比べて短縮する、独立の
ディレクトリは必要とされない。この実施態様では、I
HC42のアクセス時間は3サイクルと仮定され、それ
に対してL2キャッシュ26のアクセス時間は5サイク
ルである。
Cアドレスは、予測される次の命令を検索するために使
用される実行中の現在の命令のアドレスであるので、
「分岐元」アドレスを表す。
0は64KB直接マップ・キャッシュとして実装され
る。図の実施態様では、LI Iキャッシュ30のキャ
ッシュ・ライン・サイズは1KB(または16VLI
W)であり、アクセス時間は1サイクルである。
互全体的サイズまたはキャッシュ・ライン・サイズある
いはその両方を使用することができ、かつこれらのキャ
ッシュのそれぞれに他のアソシアティビティを使用でき
ることを理解されたい。したがって、本発明は、本明細
書に開示した特定の実施態様に限るべきではない。
54、および命令履歴キャッシュ56、およびL1 I
キャッシュ58を使用する他のデータ処理システム50
を示し、これらのプロセッサおよびキャッシュは、図1
および図2のデータ処理システム10とほぼ同様に構成
される。図3に示すように、L2キャッシュ54は5サ
イクル・アクセス時間を有し、命令履歴キャッシュ56
は3サイクル・アクセス時間を有する。
令の予測される次の命令を使用できるようにするため
に、データ処理システム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つ後の命令である。
イクル前に実行された命令のアドレスを命令履歴キャッ
シュへのインデックスとして使用して、所与の命令に関
する履歴データ、すなわち、この所与の命令の後で実行
すべき予測される次の命令を記憶することによって処理
される。この場合、2サイクル前に実行された命令のア
ドレスを使用してこの命令をL1 Iキャッシュまたは
L2キャッシュから検索するとき、同時にこのアドレス
がIHCに与えられ、この命令の予測される次の命令の
検索が開始される。したがって、IHCから取り出すの
に必要な追加の2サイクルを用いて、予測される次の命
令が適切な時間にIHCから返される。
合、この命令の予測される次の命令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サイクルが回避される。
は通常、所与の命令に関する履歴データを追加のx−1
サイクルだけオフセットすることが好ましい。この場
合、xはIHCのアクセス時間である。言い換えれば、
所与の命令に関する履歴データとして、xサイクル後に
実行すべき予測される命令を記憶することが望ましい。
キャッシュ56は、命令アドレス・レジスタ(IAR)
59で表される次に実行すべき命令として取り出されて
いる命令のアドレスでインデックス付けされる。同時
に、IAR59内の指定されたアドレスもL1 Iキャ
ッシュ58に供給されると共に、変更索引バッファ(T
LB)90を介してL2キャッシュ54に供給される。
変更索引バッファ90は、IAR59に記憶されている
仮想アドレスを、L2キャッシュにアクセスする際に使
用される実アドレスに変換する。仮想アドレス指定を使
用しない場合は、プロセッサ52とL2キャッシュ54
の間でTLBまたは他の変換機構を使用しなくてもよい
ことを理解されたい。
ットのみがキャッシュに記憶される場合、命令アドレス
・レジスタ全体ではなく、インデックスがIHC56に
与えられる。8MB命令履歴キャッシュの場合、現在の
アドレスから得た17ビット・インデックス、たとえ
ば、64ビット・アドレスのビット41〜57を使用す
ることができる。しかし、後述の予測検証回路構成を介
して正しい命令予測の検証が行われるので、命令履歴キ
ャッシュ56用のディレクトリは必要とされない。
IAR59から10ビット・アドレス・インデックスを
与え、このキャッシュにインデックス付けすることがで
きる。L1キャッシュ58が、L1キャッシュ・ヒット
が生じたかどうかを検証するためのディレクトリ(図示
せず)も含むことを理解されたい。このようなディレク
トリの使用法および構成は当技術分野でよく知られてお
り、したがって、本明細書で詳しく説明する必要はな
い。
たは複数の実行ユニットを表す実行パイプ60の第1段
を形成する。たとえば、VLIWプロセッサの場合、複
数の実行ユニットは通常、並列に動作し、各VLIW命
令中の様々なパーセルを別々に処理する。各実行ユニッ
トは通常、1つまたは複数の別々のパイプを有するが、
機能的に見ると、このような複数の実行ユニット用のパ
イプを、図3に表わす単一のパイプとみなすことができ
る。したがって、本発明によるデータ処理システムでは
任意の数の実行パイプまたはユニットあるいはその両方
を使用することができ、このような他のパイプおよびユ
ニットの実施態様が、本明細書で開示する内容の利益を
有する当業者の能力の範囲内であることを理解された
い。
びにこのアドレスによって指定される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段パイプである。
る段としても識別され、命令N−xは、現在の命令から
xサイクル前に処理される命令を表し、命令N+yは、
現在の命令からyサイクル後に処理される命令を表す。
H)であり、この間にメモリ(通常はL1 Iキャッシ
ュまたはL2キャッシュ)から命令が取り出される。パ
イプの段2は汎用レジスタ・ファイル読取りアクセス段
(GPR)である。パイプの段3は有効アドレス生成段
(AGEN)である。パイプの段4はL1データ・キャ
ッシュ(Dキャッシュ)アクセス段(DCACHE)で
あり、段5は、あるデータ・フォーマットのデータ・バ
ス段(DATABUS)である。パイプ内の段6は汎用
レジスタ・ファイル書込みアクセス段(GPR WR
T)であり、この段では、命令実行の結果が再び汎用レ
ジスタ・ファイルに書き込まれるか、あるいは一般的に
は他の構成のレジスタ・ビットに書き込まれる。これら
の段中に実行される動作は、周知のプロセッサ動作であ
り、本発明の理解に関連するものではない。したがっ
て、本明細書ではこれらの段についてこれ以上は説明し
ない。
追加の段、すなわち、いくつかの段および段構成を使用
することができる。たとえば、スーパースカラ・プロセ
ッサの場合、実行パイプはIFETCHの前に分岐アド
レス生成段を含むこともできる。一方、命令が命令キャ
ッシュ内で整列され、命令を実行する前に順序付けして
おく必要がないので、VLIWベースのアーキテクチャ
は通常、分岐アドレス生成段を必要としない。
ャッシュ54からの予測される次の命令および実際の次
の命令の検索を開始するためにプリフェッチ回路構成8
5が使用される。予測される3つ後の命令とも呼ばれる
3サイクル後に実行すべき命令の検索は、IAR59か
ら得たアドレス・インデックスに基づいて線85aを介
して実行される。L2キャッシュからの実際の次の命令
の検索は、パイプの段2中のIREG74に記憶されて
いる命令に指定された「分岐先」アドレスに基づいて線
85bを介して実行される。L2キャッシュにアクセス
するために、線85b上の分岐先アドレスはTLB90
によって実アドレスに変換される。たとえば、レジスタ
74に記憶されている命令86で表されるように、分岐
先アドレスは通常、この命令中の分岐条件(BC)パー
セル88で指定される。
に命令取出しが発行されると、各キャッシュは、それに
与えられたアドレスに記憶されている命令を適切な時間
に出力する。L2キャッシュ54の場合、出力命令は、
「VLIW」として表される実際の次の命令である。命
令履歴キャッシュ56の場合、命令出力は、「VLI
W'」として表される予測される次の命令である。予測
検証回路構成91はVLIWおよびVLIW'を受け取
る。さらに、VLIW'は直接、第2段IREG74に
与えられ、予測される次の命令の実行が開始される。
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の間に任意の数の段を挿入する必要があ
ることを理解されたい。
ャッシュ58用のディレクトリおよびL2キャッシュ5
4用のディレクトリからL1ミス信号およびL2ヒット
信号を受け取るANDゲート93によってイネーブルさ
れる。比較ブロック92は、イネーブルされると、禁止
信号IHC/L2COMPを出力する。この信号は、V
LIW'がVLIWと一致しないときにはいつでもアサ
ートされる。この禁止信号の結果として、この点で実行
パイプ60の段6 IREG82に記憶されているVL
IW'が「中断」され、したがって、この命令の実行結
果が実際上、破棄される。
ルまたは他の構造のレジスタ・ビットへのライトバック
は通常、命令の実行結果として実行された最後の動作な
ので、VLIW'の結果の破棄は、この命令を無効化し
て実行パイプの段6でのGPR WRT動作の実行を禁
止することによって実行される。この技法は通常、他の
場合に、パイプ内で命令を実際上、中断または停止する
ために従来型のプロセッサによって使用される。他の実
施態様では、VLIW'の実行を他の方法で終了するこ
とが望ましい。たとえば、単に命令を無効化するのでは
なく、命令を完了させ、次いで命令を実行する前のレジ
スタの状態を表すバックアップ・コピーを用いて汎用レ
ジスタ・ファイルを復元することによって結果を「アン
ドゥ」することが望ましいこともある。
るまでパイプが停止するように、L2キャッシュ54の
出力を実行パイプ用の状態マシンおよび命令バッファ
(図示せず)と結合することが望ましいこともある。こ
のパイプ停止の目的は、L2キャッシュに対してミスす
る命令取出しに対処することである。これは、このよう
なミスがL3キャッシュまたは主記憶装置あるいはその
両方へのアクセスを必要とし、5サイクルを超えるアク
セス時間を必要とするからである。
グを示す。まず、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動作がバイパスされ、命令の結果が実際上、
破棄される。
ータを動的に更新するための命令履歴キャッシュ56へ
の履歴データのライトバックで使用される構成要素を示
す。L2キャッシュ54は、この更新動作には関連して
おらず、話を簡単にするために図から省略されている。
するために、命令履歴キャッシュに独立の書込みアクセ
ス・ポートが設けられる。キャッシュへの別々の読取り
アクセス・ポートおよび書込みアクセス・ポートの使用
法および構成は当技術分野でよく知られている。所与の
命令の実際の次の命令に関するデータを記憶するための
所望のオフセットは、命令履歴キャッシュに書き込むべ
き命令と、この命令を書き込むアドレスまたはインデッ
クスを、実行パイプの別々の段から取り出すことによっ
て与えられる。図の実施態様では、2段差分が使用さ
れ、命令は、第4段IAR66によって指定されるIH
C内の位置に記憶されている実行パイプの第2段IRE
G74に記憶される。この第1段差分は、所与の命令の
実際の次の命令を記憶する必要がある場合に対処し、第
2段差分は、IHC内の履歴データの、この所与の命令
からの所望の1サイクル・オフセットに対処する差分で
ある。言い換えれば、2段差分は実際上、所与の命令に
関連するIHC内の位置に3つ後の実際の命令を記憶す
る。
段3および5、または段4および6などからアドレスお
よび命令を取り出すことによってオフセットを得ること
もできることを理解されたい。さらに、様々なオフセッ
トを得るために、様々なレジスタの出力も使用できるこ
とを理解されたい。
対的タイミングが詳しく示されている。具体的には、第
4の(DCACHE)で、VLIW N+1のアドレス
を表すIARレジスタ66の値が、L1 Iキャッシュ
およびIHCへの書込みアドレスとして与えられ、それ
に対して、VLIW N+3を表す第2段にあるIRE
G74の値が、L1 IキャッシュおよびIHCに書き
込むべきデータとして与えられる。次いで次のサイクル
で、L2ディレクトリがヒットした場合、前述のアドレ
スおよびデータを使用してL1 IキャッシュおよびI
HCが書き込まれ、それによって、実際に次に実行され
る命令を反映するように履歴データが更新される。
実行される命令取出し動作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へのトラフィッ
クを最小限に抑えることが望ましい。
起こった場合、フローは論理ブロック128に進み、次
のサイクルにIHCから出力された予測されるVLIW
信号が、実行のためにパイプに供給される。予測される
VLIWを検索するためのIHCへのアクセスが2サイ
クル早く、すなわち、論理ブロック122でのVLIW
N+2のアドレスのディスパッチ中に行われることに
留意されたい。
ブロック130で表されたL2キャッシュのディレクト
リから返されるまで、予測されるVLIWが1サイクル
以上にわたってパイプを通過しながら実行される。ミス
が起こった場合、要求された実際の命令がL2キャッシ
ュで見つからなかったために予測されるVLIWが正し
くない場合には、論理ブロック132で実行される動作
が実行される。具体的には、当技術分野で知られている
任意の数の方法で、パイプが停止され、パイプの段2内
の(図3のIREG74に記憶されているVLIW N
+3として示された)VLIWが中断される。要求され
た命令をメモリ階層内のより高いレベルから検索するた
めに主記憶装置アクセスも開始され、要求された命令が
返された後、L2キャッシュが更新され、正しいVLI
Wがパイプにディスパッチされ、IHCが更新され、L
1 Iキャッシュが更新され、パイプが復元される。パ
イプを復元するには、パイプのクロッキングを再開する
だけでよく、あるいは場合によっては、パイプが望まし
い点を越えている場合にはパイプを前の状態に復元する
必要があることもある。
に、L2が命令取出し時にヒットした場合、論理ブロッ
ク134で、L2MRU予測が正しかったかどうかが判
定される。論理ブロック134は、アソシエーティブ・
キャッシュの場合にのみ実行され、直接マップL2キャ
ッシュの場合には省略することができる。MRU予測が
正しくない場合、論理ブロック136で実行される動作
が実行される。具体的には、当技術分野で知られている
任意の数の方法で、パイプが停止され、パイプの段2内
の(図3のIREG74に記憶されているVLIW N
+3として示された)VLIWが中断される。ディレク
トリ参照に基づいてL2キャッシュから正しいVLIW
が取り出され、この正しいVLIWがパイプへ送られ、
IHCが更新される。L1 IキャッシュおよびL2M
RUアレイも更新され、前述の方法でパイプが復元され
る。
に、MRU予測が正しかった場合、次に論理ブロック1
38で、(すなわち、図3の比較ブロック92を介し
て)IHC予測が正しかったかどうかが判定される。そ
うである場合、停止なしで実行が継続し、論理ブロック
140に示すように、適切な時間にL2キャッシュによ
ってL1 Iキャッシュが更新される。しかし、予測が
正しくない場合、パイプの段2内の誤って予測されたV
LIWが、論理ブロック142で前述のように中断され
る。次に、論理ブロック144で、L2キャッシュから
取り出されたVLIWがパイプにディスパッチされ、I
HCおよびL1が前述のように更新される。
キャッシュ実施態様を示す他のデータ処理システム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ヒット信号を生成す
るディレクトリ・エントリを返す。
御し、プロセッサ152からのアクセス線186を介し
て制御される。命令履歴キャッシュは、前述のデータ処
理システム10の場合と同様に、キャッシュにアクセス
するための命令アドレス・レジスタ・インデックス値を
受け取る。
置がバス160を介して8バイト、または64バイトV
LIWの8分の1を供給する8つの1MB SRAMメ
モリ装置または1MB DRAMメモリ装置を使用して
実装される。4ウェイ・アソシエーティブ実施態様を仮
定すると、各セットは1/4MBに区分され、最後に使
用された区画が命令履歴キャッシュとしても機能する。
IHC区画をL2キャッシュから除外することもでき
る。ただし、1つの区画をIHCとL2キャッシュの両
方として機能させることによって、追加のメモリなしで
IHCを実装することができる。様々な代替キャッシュ
・サイズ、区画サイズ、および/またはチップ数を使用
することもできる。
プを使用して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
禁止信号を形成し、この信号は、誤って予測された命令
を選択的に禁止または終了するために使用される。
および予測検証回路構成内の様々な機能をシステム内の
様々な集積回路デバイスに割り付けられることを理解さ
れたい。したがって、本明細書で論じる特定の実施態様
に本発明を限定すべきではない。
を不要にし、それによってプロセッサの命令取出し機構
の設計を簡略化することが望ましい。具体的には、多く
の実施態様では、命令自体内、通常は命令内の未使用ビ
ット内に履歴データを埋め込み、履歴データの追加によ
るプログラム・コードの展開を最小限に抑えることが可
能であることが判明している。このことは、命令履歴キ
ャッシュの機能を組み込んだL2キャッシュの効果を有
する。
空間が組み込まれている場合、VLIWベースのアーキ
テクチャは、VLIW命令内に履歴データを埋め込むの
に特に適している。VLIWによっていくつかの規則が
遵守されるかぎり、VLIWプログラムの記憶要件にほ
とんどあるいはまったく影響を与えずに履歴データを埋
め込むことが可能であることが判明している。
令のうちの1つに続いて実行すべき次の命令を表す履歴
データは、このような命令のアドレスを得ることのでき
る識別子で表される。しかし、L2キャッシュに対する
ミスが起こった場合に、主記憶域から次の命令を検索す
ることが必要になり、予測される命令アドレスの無効性
が未決定になるために、通常、L2キャッシュにアドレ
スするのに必要なビット量だけで履歴データが得られる
場合、次の命令の完全なアドレスは通常必要とされな
い。
を有するシステムに実装される4MB L2キャッシュ
の場合、通常、22ビット・アドレス・インデックスだ
けでキャッシュ内の所与のバイトにアドレスすることが
できる。さらに、64バイト・キャッシュ・ライン命令
サイズを用い、キャッシュ・ラインおよび命令を適切に
整列させた場合、22ビット・アドレス・インデックス
の最下位6ビット(LSB)は0であることがわかって
おり、したがって、16ビットだけで4MBL2キャッ
シュ内の所与のキャッシュ・ラインにアクセスすること
ができる。
ることのできる1つの方法は、ある数のビットを未使用
にして履歴データ用に予約しておくことである。たとえ
ば、VLIW命令の場合、このような命令は通常、様々
な実行ユニットによって互いに並列に実行される複数の
パーセルを含む。VLIWコンパイラは通常、命令の利
用可能なスロットにできるだけ多くのパーセルを配置す
ることによってVLIW命令をアセンブルする。したが
って、命令中の履歴データ用に適切な自由空間が割り付
けられるように、コンパイラに命令の1つのスロットを
履歴データ用に予約させることができる。
ことがないにもかかわらず、VLIW命令の1つのスロ
ットを常にブランクにしておくことは、追加のパーセル
で命令を満杯にすることができたにもかかわらず、命令
に履歴データが追加される場合に、プロセッサ性能に悪
影響を与える。しかし、追加のコンパイラ規則を実現す
ることによって、プロセッサ性能に対して比較的小さな
影響しか与えずに、VLIW命令にある量の自由空間を
残すことができる。
キャッシュ・ライン内のアドレスへの分岐を有する分岐
命令のみを所与のVLIW命令にアセンブルさせること
が望ましい。この場合、分岐パーセル以外のパーセルを
有するこのようなVLIW命令の場合、複数の分岐命令
のアドレス・フィールドへの分岐が冗長になり、このよ
うなフィールドのうちの1つを使用して、命令内のパー
セルの全体的な密度にはほとんどあるいはまったく影響
を与えずに履歴データを記憶することができる。大多数
のVLIW命令は複数の分岐パーセルを有する傾向があ
るので、この規則はコンパイラ性能にほとんど影響を及
ぼさないと考えられる。
クチャ用の命令フォーマットには、32ビットPowerPC
互換命令を実現する32ビット・パーセルを組み込むこ
とができる。PowerPCアーキテクチャによれば、分岐命
令の16ビットが分岐アドレス・フィールドに割り当て
られ、この分岐アドレス・フィールドから、所定の条件
を満たしたことに応答して、分岐先へのアドレスが生成
される。64ビット・アドレス指定を仮定すると、すべ
ての分岐命令が1MBアドレス空間内で分岐する必要が
あり、(64ビット命令サイズが与えられた場合)16
ビット分岐アドレス・フィールドと連結され、6つのゼ
ロが後に続く、命令アドレス・レジスタの最上位42ビ
ット(MSB)を使用して64ビット分岐先アドレスが
生成される。
ると、最小限のプログラム・コード展開で任意の命令中
の一定数のビットを履歴データに割り付けるVLIWコ
ンパイラを作成することができる。たとえば、パーセル
をVLIW命令にアセンブルする際に以下の規則を遵守
することによって、任意の命令の16LSBを履歴デー
タに割り付けるようにコンパイラを構成することができ
る。
の最後のスロットにNOOP演算を挿入する。
とも1つのパーセルがNOOP演算である場合、命令の
最後のスロットにNOOP演算を配置する。
満杯であり、2つ以上の分岐パーセルが命令中に存在す
る場合、命令の最後のスロットに1つの分岐パーセルを
配置する(かつ、すべての分岐パーセル用の共通の分岐
アドレスが常に同じスロットに位置するように、任意選
択で、命令の終了位置の近くでかつ最後のスロットより
も前に他のすべての分岐パーセルを配置する)。
杯であるが、命令中に存在する分岐パーセルが2つより
も少ない場合、パーセルを近くの命令で置き換えて追加
の分岐パーセルまたはNOOPパーセルを命令に追加す
ることを試みる。
であり、分岐パーセルが2つよりも少ないが、命令のパ
ーセルをスワップできない場合、命令の最後のスロット
にNOOPパーセルを挿入し、1つのパーセルを次の命
令に移動する。
には充填されず、残りの命令のうちの、約10%を除く
すべての命令が複数の分岐パーセルを含むことに基づい
て、上記の規則が、大部分のプログラム・コードを約1
%未満しか展開しない傾向を示すことが予測される。
空間を位置させる他の方法を使用することができる。た
とえば、いくつかの実施態様では、VLIW命令に対し
てある事前復号が行われ、パーセルが比較的大きなコー
ドに展開される。いくつかの実施態様では、16個の3
2ビット・パーセルを含む64バイトVLIW命令の場
合、実行ユニットの必要とする追加のビットを含む64
ビット・コードにパーセルを展開することができる。さ
らに、多くの場合、特に分岐命令は常に48ビット未満
にしか展開しないことが判明している。したがって、V
LIW命令がパーセルで満杯であり、上記の規則I〜I
Vのどれかを満たさない場合でも、多くの場合、パーセ
ルをコードに展開した後に命令の未使用部分に履歴デー
タを埋め込むことができる。したがって、展開されたコ
ードを記憶するメモリ階層の任意のレベル内、たとえ
ば、プリデコーダがL2キャッシュと主記憶装置の間に
配設される場合にはL2キャッシュ内に履歴データを維
持することができる。このような例では通常、L2キャ
ッシュ・ラインおよびVLIW命令は128バイトに展
開され、したがって、少なくともL2キャッシュには、
履歴データを記憶するのに適した未使用空間が存在す
る。たとえば、オペランド命令またはマスク・フィール
ド中の未使用ビットを使用する、未使用空間を見つける
他の方法を使用することもできる。
バイト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を
使用してこのフィールドに履歴データを記憶することが
できる。
218および未使用フィールド219を有するNOOP
パーセル216でもよく、未使用フィールド219内
に、VLIW命令に関する同じ履歴データを記憶するこ
とができる。様々な代替ビット・マッピングを使用する
こともできることを理解されたい。
所与の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が充填さ
れ、履歴アドレス・インデックスフィールド内に、命令
に関連する履歴データが記憶される。
されている命令の分岐先アドレス・フィールドで表され
る実際の次の命令が、IAR228の出力(具体的に
は、分岐先アドレス・フィールド中の同じ16ビットに
対応する、この出力のビット42〜57)で表される2
サイクルだけずれた予測される次の命令と、比較ブロッ
ク262を使用して比較される。
イクル後に実行すべき命令の予測される次の命令を検索
するために、IREGの履歴アドレス・インデックス・
フィールドを使用して、各サイクルでL2キャッシュ2
64がアクセスされる。この場合、L2キャッシュ26
4は、履歴ベースのアクセス用の3サイクル・アクセス
時間を有するように構成される。これを実現するには、
たとえば、仮想アドレス実アドレス変換およびディレク
トリ・アクセスをバイパスするL2キャッシュの独立の
履歴読取りアクセス・ポートを使用し、それによって基
本的に、L2キャッシュをこのポートを通して、命令履
歴キャッシュとほぼ同様に動作する直接マップ・キャッ
シュとして構成することができる。メモリ内の隣接ブロ
ック内に所与のプログラム用のすべてのVLIW命令を
記憶することにより、変換のために所与のブロック内の
ビットが変更されることがなくなる(たとえば、隣接す
る位置合わせされた16MBブロック内にプログラムを
維持する場合、通常、変換の結果として24LSBが変
更されることはない)ので、履歴アクセスによる変換を
回避できることが多い。また、ディレクトリにアクセス
する必要なしに履歴アクセスに応答して検索すべき正し
いセットを選択するために、L2キャッシュに関するM
RU予測が使用される。前述の機能を実現するための多
重アドレス入力L2キャッシュの使用法および構成は、
当業者の能力の範囲内であり、したがって、本明細書で
詳しく論じる必要はない。
更新する場合、IREG236に記憶されている命令の
分岐先アドレス・フィールドと、2サイクル前のVLI
W命令用のIAR228に記憶されているアドレスがそ
れぞれ、L1 Iキャッシュ248に書き込まれるデー
タおよびアドレスとして与えられる。実際の分岐命令を
2サイクル前のVLIW命令アドレスと共に記憶するこ
とによって、命令レジスタ236に記憶されているVL
IWの実際の次の命令を用いて履歴データが更新され
る。したがって、この実施態様では、VLIW命令内に
履歴データを埋め込むことによってプロセッサ・アーキ
テクチャが著しく簡略化され、独立の命令履歴キャッシ
ュと同じ機能が実行され、同時にこのようなキャッシュ
が不要になる。
規則の実現が、本明細書の内容を読むことに基づいてコ
ンパイラ当業者の能力の範囲内で行われることが理解さ
れよう。さらに、他の数組のコンパイラ規則と、VLI
W命令の他の構成およびマッピングを使用して、本発明
によって命令内に履歴データを埋め込むことができるこ
とを理解されたい。さらに、本明細書に記載された他の
実施形態によるこのような変形形態の実施態様も当業者
に明らかであることが理解されよう。
Iキャッシュに記憶されている命令がしばしば比較的
高速にキャッシュ・アウトされ、したがって、このキャ
ッシュに記憶されている履歴データの時間的な持続が制
限される場合、多くの例では、L1 Iキャッシュ24
8に記憶されている履歴データをメモリ階層の他のレベ
ルに維持することが望ましいと考えられる。したがっ
て、VLIW命令をそれに関連する履歴データと共にメ
モリ階層の他のレベルにコピーすることによって、履歴
データとこの命令との関連付けを維持することが望まし
いことがある。通常、多くのプロセッサ実施態様におけ
る命令キャッシング階層は、所与のキャッシュ・レベル
からキャッシュ・アウトされた命令を破棄するに過ぎな
い。これは、この命令が通常、下位のキャッシュでは修
正されず、したがってキャッシュ同士の間のコヒーレン
シが問題にならないからである。したがって、履歴デー
タを複数のキャッシュ・レベルで維持することを可能に
するには、多くの点で、マルチレベル・データ・キャッ
シング階層内のデータの処理と同様に、命令が所与のキ
ャッシュからキャッシュ・アウトされる際にこの命令を
上位のキャッシュにコピーするように命令キャッシング
機構を修正するだけでよい。
令が再びこのようなキャッシュに書き込まれる際に上位
キャッシュへのアクセス回数が増加し、それによってキ
ャッシュの全体的な性能が低下する。この問題を軽減す
るには、ある命令に関する履歴データが変更されたとき
に上位キャッシュに情報をコピーするのみに留めること
が望ましい。
70を示し、このシステムは、所与のキャッシュによっ
てキャスト・アウトされているVLIW命令が再び上位
メモリに書き込まれる頻度を減少するためにキャッシュ
に記憶されている各命令に関連付けされた変更ビットを
実装する。所与のキャッシュから所与の命令をキャッシ
ュ・アウトするときに、この命令を再び上位キャッシュ
に書き込んで履歴データとこの命令との関連付けを維持
すべきかどうかが、この変更ビットを使用して判定され
る。この方式は多くの点で、データ・キャッシュなどで
の「ダーティ」ビットの使用と類似している。
では命令キャッシュとして実装される)L2キャッシュ
274およびL3キャッシュ276と結合されたプロセ
ッサ272を含む。プロセッサ272は実行パイプ27
8を含み、このパイプのうちの最初の4段のみが図示さ
れている。残りの2つの段は、本明細書で開示する他の
実施形態のパイプと同様に構成されるものと仮定する。
したがって、パイプライン278は、パイプの最初の4
段に対応する少なくとも4つの命令アドレス・レジスタ
294、280、282、および284と、パイプの段
2ないし4に対応する命令レジスタ286、288、お
よび290とを含む。
おり、命令アドレス・レジスタ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も含む。
リフェッチ動作および予測検証動作は図9のシステム2
20と同一である。履歴データも、上記で図9に関して
論じたのと同様に更新され、すなわち、前の前の命令2
84に記憶されているアドレスを使用してL1 Iキャ
ッシュがインデックス付けされ、L1 Iキャッシュに
記憶すべき実際の次の命令のアドレスが、IREG28
6内の命令の分岐先アドレス・フィールドから検索され
る。
命令と、IREG290内の命令に記憶されている予測
される次の命令とが比較され、履歴情報が変更されてい
るかどうかが判定される。そうである場合、VLIW命
令の対応するディレクトリ・エントリ用の変更ビット
が、この命令がL1 Iキャッシュにキャッシュされて
から履歴データが更新されたことを示すようにセットさ
れる。
ば、L1キャッシュとL2キャッシュの間のコヒーレン
シを維持するために、プロセッサ272でキャストアウ
ト・コントローラ314が使用される。コントローラ3
14の基本動作を図11に320で示す。コントローラ
314は一般に、データ・キャッシュ用のキャストアウ
ト・コントローラと同様に動作し、特定のキャッシュか
ら得た情報を、下位キャッシュから削除する際に上位レ
ベルに記憶しなければならないかどうかを判定する。
ック322ですべてのL1命令アクセスをスヌープし、
そのようなアクセスによってL1ミスが生じるかどうか
を判定する(論理ブロック324)ことによって動作す
る。L1ミスが起こると、論理ブロック326で、最後
に使用された(LRU)キャッシュ・ラインの変更ビッ
トがセットされているかどうかが判定される。変更ビッ
トがセットされている場合、制御が論理ブロック328
に渡され、L2キャッシュ内のLRU VLIW命令の
コピーに関する履歴データが更新され、L2キャッシュ
274(図2)のディレクトリ316用のディレクトリ
・エントリ中の変更ビットも、L2キャッシュが現在、
VLIW命令の更新済みコピーを含むことを示すように
更新される。これらの動作は、図10にそれぞれ、1A
および1Bとして示された矢印で表されている。
ィレクトリ情報が更新された後、制御が論理ブロック3
30に渡され、L1 Iキャッシュ内の最後に使用され
たキャッシュ・ラインに、(変更ビットを含め)L2キ
ャッシュから得たこのキャッシュ・ライン用の新しいV
LIW情報およびディレクトリ・エントリがリロードさ
れる。これらの動作は、図10に矢印2Aおよび2Bで
表されている。
に、L1キャッシュ内の最後に使用されたキャッシュ・
ラインの変更ビットがセットされていない場合、論理ブ
ロック328がバイパスされ、論理ブロック330で実
行されるリロード動作の結果として、このキャッシュ・
ライン内の情報が破棄される。
が更新されていないかぎり、キャスト・アウト・キャッ
シュ・ラインのL2キャッシュへのライト・バック動作
が回避され、それによってL2キャッシュへのアクセス
回数が減少し、L2キャッシュの性能が向上する。特
に、所与の分岐が、将来の実行で常に同じ経路をたどる
可能性が高いことに基づいて、履歴データがある期間の
後に安定化する傾向がある場合、履歴データはそれほど
頻繁には変更されず、したがって、L2アクセスの回数
は最小限に抑えられる。
ルゴリズムを使用してL2キャッシュ274およびL3
キャッシュ276用のディレクトリ316および318
を更新することにより、必要に応じて、L2キャッシュ
とL3キャッシュの間のコヒーレンスを維持できること
を理解されたい。さらに、このような動作を処理するた
めにプロセッサ272に追加のキャスト・アウト・コン
トローラを実装することが必要になることがある。キャ
スト・アウト動作を独立の構成要素にオフロードして同
じ機能を実行することもできる。
すためにデータ処理システム340が提示されている。
この特徴によって、プロセッサ341が様々な種類のL
2キャッシュと共に動作することを可能にするように履
歴データに可変オフセットを設けることができる。たと
えば、履歴データの可用性に対してそれぞれの異なるア
クセス時間を有するL2キャッシュを含む複数の実施態
様で所与のプロセッサ・コア設計を使用することができ
る。したがって、上記で図9および図10に関して説明
した実施形態と同様に一定の2サイクル・オフセットを
維持するのではなく、必要に応じて任意の数のオフセッ
ト、たとえば、2つ、3つ、4つ、あるいは5つのオフ
セットを許容することが望ましい。プロセッサ341の
場合、これは、実行パイプ342の様々な段から取り出
すべきL1 Iキャッシュ用のライトバック・アドレス
を供給する多重化方式を使用することによって実現され
る。
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用の書込みアドレスに供給される。
って制御され、デコーダ376は、Nビット・レジスタ
378によって選択された状態を有する。この実施態様
では、論理ブロック374から4つの可能なアドレスを
出力する場合、2ビット・レジスタを使用することがで
きる。通常、立上げ時にレジスタ378をロードし、装
置が動作している間一定数のサイクルを維持することが
望ましい。図12に示す構成を用いた場合、N値0は1
サイクル・オフセットを表し、N値1、2、および3は
それぞれ、2サイクル・オフセット、3サイクル・オフ
セット、および4サイクル・オフセットを表す。このた
め、データ処理システム340のプロセッサ341は様
々な応用例で使用することができる。
の実施形態に様々な追加の修正を加えることができる。
たとえば、履歴アドレス・インデックスを命令中の履歴
データとして記憶する際、順次動作が行われることが検
出されたとき、すなわち、所与の命令が実行された後に
分岐が行われないことが検出されたときにL2キャッシ
ュへのアクセスを禁止することが望ましい。これによっ
て、L2キャッシュへのアクセス回数がさらに減少し、
それによってL2キャッシュの相対的な性能が向上す
る。
繁に変更される場合、履歴データの最後の変更が有用で
あったことを示す追加の確認ビットを含めることが望ま
しい。したがって、比較が行われたときはいつでも、確
認ビットを使用して最後の変更が肯定的なものであった
ことを示すことができる。
の事項を開示する。
令キャッシュおよび二次命令キャッシュを含み、二次命
令キャッシュが、一次命令キャッシュよりも長いアクセ
ス時間を有する、メモリと、(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の命令の履歴データに
よって識別される予測される次の命令のメモリからの検
索を開始するステップとを含む方法。
タ処理システムのブロック図である。
キャッシュとの間の相互接続を示すブロック図である。
る構成要素を示す、本発明による命令履歴キャッシュを
使用する他のVLIWデータ処理システム用の命令キャ
ッシング階層のブロック図である。
においてVLIW命令を検索し履歴データを更新する間
に実行される命令のシーケンスのタイミングを示すタイ
ミング図である。
際に使用される構成要素を示す、図3の命令キャッシン
グ階層のブロック図である。
命令を取り出す間に実行される動作を示すフローチャー
トである。
ッシュを実現する、本発明による他のVLIWデータ処
理システムのブロック図である。
込むのに適したVLIW命令用のビット・マッピングの
ブロック図である。
に埋め込まれた履歴データを更新する際に使用される構
成要素を示す、本発明による他のVLIWデータ処理シ
ステムのブロック図である。
でキャッシュする際にこの命令に埋込み履歴データを維
持するのに適したマルチレベル・キャッシュ階層を示
す、本発明による他のVLIWデータ処理システムのブ
ロック図である。
ローラによって使用されるキャストアウト・アルゴリズ
ムのフローチャートである。
示す、本発明による他のVLIWデータ処理システムの
ブロック図である。
Claims (15)
- 【請求項1】(a)各命令が、複数の命令のうちの1つ
が実行された後に実行すべき予測される次の命令を識別
する内部に埋め込まれた履歴データを含む、複数の命令
を記憶するメモリと、 (b)メモリと結合され、メモリに記憶されている第1
の命令を実行するように構成された、少なくとも1つの
実行ユニットと、 (c)実行ユニットによって第1の命令が実行されるの
と並行して、第1の命令の履歴データによって識別され
る予測される次の命令の、メモリからの検索を開始する
ように構成されたプリフェッチ回路とを備える回路。 - 【請求項2】複数の命令がそれぞれ、複数のパーセルを
含むVery Long Word Instruction(VLIW)であり、
この命令に関する履歴データが少なくとも1つのパーセ
ルに記憶される請求項1に記載の回路。 - 【請求項3】各命令についての履歴アドレス・インデッ
クスが命令の最後のパーセルに記憶される請求項2に記
載の回路。 - 【請求項4】複数の命令内の各命令が、その最後のパー
セルとして、NOOPパーセルと分岐パーセルの一方を
含む請求項3に記載の回路。 - 【請求項5】最後のパーセルとして分岐パーセルを有す
る任意の命令が第2の分岐パーセルを含み、任意の所与
の命令中の分岐パーセルが、メモリ内の同じキャッシュ
・ラインに分岐する分岐先アドレスを含み、それによっ
て、最後のパーセル中の分岐パーセル用の分岐先アドレ
スがその履歴アドレス・インデックスで置き換えられる
請求項4に記載の回路。 - 【請求項6】メモリが一次命令キャッシュおよび二次命
令キャッシュを含み、プリフェッチ回路が、第1の命令
中の履歴アドレス・インデックスを使用して二次キャッ
シュにアドレスすることにより、第1の命令の履歴デー
タによって識別される予測される次の命令の検索を開始
するように構成され、二次命令キャッシュが、履歴アド
レス・インデックスを受け取ったことに応答して、一次
命令キャッシュのアクセス時間よりも長いNサイクルの
アクセス時間を有する請求項2に記載の回路。 - 【請求項7】第1の命令に関する履歴データが、第1の
命令からNサイクル後に実行すべき第2の命令の予測さ
れる次の命令を識別する請求項6に記載の回路。 - 【請求項8】プリフェッチ回路がさらに、実行ユニット
による予測される次の命令の実行を開始するように構成
され、回路がさらに、 (a)第2の命令の後で実行される予測される次の命令
および実際の次の命令のアドレスを比較し、予測される
次の命令のアドレスと実際の次の命令のアドレスが一致
しない場合に実行ユニットによる予測される次の命令の
実行を終了するように構成された予測検証回路と、 (b)第2の命令の後で実行される実際の次の命令のア
ドレスに関連付けされたアドレス・インデックスを第1
の命令に関する履歴データとして記憶するように構成さ
れた履歴更新回路とを備える請求項7に記載の回路。 - 【請求項9】実行ユニットが、複数の段を備える実行パ
イプを備え、一次命令キャッシュが、データ入力に供給
されたアドレス・インデックスをアドレス入力に供給さ
れたアドレスに記憶するように構成された書込みアクセ
ス・ポートを含み、履歴更新回路が、実行パイプの複数
の段のうちの1つの段内の命令レジスタを書込みアクセ
ス・ポートのデータ入力と電気的に結合する1組のデー
タ線と、実行パイプの複数の段のうちの他の段内のアド
レス・レジスタを書込みアクセス・ポートのアドレス入
力と電気的に結合する1組のアドレス線とを備え、1組
のデータ線が結合される段が、1組のアドレス線が結合
される段からNサイクルだけずれる請求項8に記載の回
路。 - 【請求項10】実行ユニットが、複数の段を備える実行
パイプを備え、一次命令キャッシュが、データ入力に供
給されたアドレス・インデックスをアドレス入力に供給
されたアドレスに記憶するように構成された書込みアク
セス・ポートを含み、履歴更新回路がさらに、実行パイ
プと一次命令キャッシュの間に挿入されたセレクタ回路
を備え、セレクタ回路が、書込みアクセス・ポートのデ
ータ入力とアドレス入力の少なくとも一方を実行パイプ
の様々な段と選択的に結合し、セレクタ入力に応答し
て、第2の命令の予測される次の命令を命令履歴キャッ
シュ内で命令1個分以上、制御可能にずらすように構成
される請求項8に記載の回路。 - 【請求項11】一次キャッシュ内の各命令に、その命令
に関連する履歴データが変更されたかどうかを示す変更
インディケータが関連付けられ、回路がさらに、予測さ
れる次の命令のアドレスと実際の次の命令が一致しない
場合に第1の命令用の変更インディケータをセットする
ように構成されたアドレス比較ブロックを備える請求項
8に記載の回路。 - 【請求項12】さらに、一次命令キャッシュおよび二次
命令キャッシュと結合されたキャストアウト・コントロ
ーラを備え、キャストアウト・コントローラが、第1の
命令用の変更インディケータがセットされたときに一次
命令キャッシュ内の第1の命令のコピーが置き換えられ
ることに応答して二次命令キャッシュ内の第1の命令の
コピーに関する履歴データを更新するように構成される
請求項11に記載の回路。 - 【請求項13】請求項1の回路を備えるデータ処理シス
テム。 - 【請求項14】請求項1の回路を定義するハードウェア
定義プログラムと、ハードウェア定義プログラムを保持
する信号保持媒体とを備える製品。 - 【請求項15】命令を推測的に取り出す方法であって、 (a)複数の命令のうちの1つが実行された後に実行す
べき予測される次の命令を識別する内部に埋め込まれた
履歴データを含む、メモリに記憶されている複数の命令
のうちの第1の命令を実行するステップと、 (b)第1の命令を実行することに並行して、第1の命
令の履歴データによって識別される予測される次の命令
のメモリからの検索を開始するステップとを含む方法。
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)
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)
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 |
-
1998
- 1998-09-01 US US09/144,664 patent/US6230260B1/en not_active Expired - Fee Related
-
1999
- 1999-08-24 JP JP23658199A patent/JP3412575B2/ja not_active Expired - Fee Related
-
2001
- 2001-08-08 JP JP2001240748A patent/JP3659340B2/ja not_active Expired - Fee Related
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 |