JP3730252B2 - レジスタ名称変更方法及び名称変更システム - Google Patents
レジスタ名称変更方法及び名称変更システム Download PDFInfo
- Publication number
- JP3730252B2 JP3730252B2 JP51729393A JP51729393A JP3730252B2 JP 3730252 B2 JP3730252 B2 JP 3730252B2 JP 51729393 A JP51729393 A JP 51729393A JP 51729393 A JP51729393 A JP 51729393A JP 3730252 B2 JP3730252 B2 JP 3730252B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- dependency
- instructions
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 19
- 239000000872 buffer Substances 0.000 claims description 54
- 230000008859 change Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 12
- 230000001419 dependent effect Effects 0.000 description 9
- 239000013598 vector Substances 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001629 suppression Effects 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 101001075561 Homo sapiens Rho GTPase-activating protein 32 Proteins 0.000 description 1
- 102100020900 Rho GTPase-activating protein 32 Human genes 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000090 raster image correlation spectroscopy Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/3824—Operand accessing
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
以下は同一承継人の出願に係る係属中の出願である。
*「半導体フロアープランおよびレジスタ名称変更回路の方法」、米国出願番号07/860,718号、1992年3月31日、本発明と同時に出願(代理人整理番号SP041).
*「高速RISCマイクロプロセッサ・アーキテクチャ」、米国出願番号07/817,810号、1992年1月8日出願(代理人整理番号SP051).
*「拡張可能RISCマイクロプロセッサ・アーキテクチャ」、米国出願番号07/817,809号、1992年1月8日出願(代理人整理番号SP021).
本特許出願に於いて上記の出願の開示を参照することによって当該米国特許出願の明細書の記載内容が本明細書の一部分を構成するものとする。
発明の背景
1. 産業上の利用分野
本発明はスーパースカラー限定命令セット計算機(RISC)に関するものであり、更に具体的に言えばスーパースカラーRISCコンピュータ用の、レジスタの名称変更および命令発行を含む命令スケジュール化に関するものである。
2. 関連技術
本出願で説明する基本的概念の詳細については以下の幾つかの参考文献に記述されている。Mike Johnson 箸 Superscalar Microprocessor Design(Prentice-Hall,Inc.,Englewood Cliffs,New Jersey,1991);John L.Hennessyその他箸、Computer Architecture-A Quantitative Approach (Morgan Kaufmann Publishers,San Mateo,California,1990)。ジョンソンの著書、特に第2、6、および7章に、本発明によって扱われたレジスタ名称変更問題の優れた解説が記述されている。
スーパースカラーRISCプロセッサに於ける大きな課題は如何にして、斯かる命令実行の本質的な問題である依存性によるデータ・エラーの発生を回避しつつ、複数の命令を平行処理的に、順不同に実行できるか、という点に関する。データ依存性検査、レジスタ名称変更、および命令スケジュール化は問題解決の根本的要素である。
2.1 記憶競合およびレジスタ名称変更
真の依存性(「フロー依存性(flow dependencies)」または「書き込み・読み出し(write-read)」依存性とも呼ばれる)は、しばしば反依存性(「読み出し・書き込み(read-write)」依存性とも呼ばれる)および出力依存性(「書き込み・書き込み(write-write)」依存性とも呼ばれる)と共に命令依存性の単一グループに分類される。このように分類をする理由は、これらの依存性のひとつひとつが、レジスタまたは他の記憶ロケーションの使用によってそれ自体を証明するからである。しかしながら、真の依存性を他の二つの依存性と区別することもまた重要である。真の依存性は、プログラムを通してデータおよび情報が流れるということである。反および出力依存性が発生するのは、異なった時点に於いて、レジスタまたは他の記憶ロケーションが異なった計算の為の異なった値を保持するからである。
命令が順序通りに発行され、順序通りに完了される場合、レジスタと値の間には一対一の対応が存在する。実行のどの過程に於いても、対応するレジスタに格納されている値はレジスタ識別子によって正確に識別される。命令が順不同に発行され、順不同に実行される場合、レジスタと値の間の対応が崩れ、値同士の間でレジスタをめぐっての競合が発生する。レジスタ割り当ての目的が出来るだけ多くの値を出来るだけ少数のレジスタに保存することである時、これは深刻な問題となる。多数の値を少数のレジスタに保存すると、実行の順序をレジスタ・アロケータが仮定する順序から変更した場合、多数の競合をもたらす。
反および出力依存性は正確には「記憶競合」と呼ばれる。なぜならば、たとえ互いに競合する命令が独立していても、記憶のロケーション(レジスタを含む)を再使用しようとする命令同士間で干渉が発生するからである。記憶に対する競合は命令の発行の抑制と、実行速度の低下という弊害を生む。しかし、問題となるリソースの数を増やすことにより、他のリソース競合と同じように、記憶競合を減少あるいは解消できる。
2.2 依存性のメカニズム
ジョンソンは次の項目を含む、様々な依存性のメカニズムを詳しく論じている。すなわち、ソフトウェア、レジスタの名称変更、リオーダー・バッファを用いたレジスタの名称変更、未来バッファを用いたレジスタ名称の変更、インターロック、依存性を回避するために命令ウィンドウ中でオペランドをコピーすること、および部分的名称変更、等である。
従来のハードウェア・インプリメンテーションは命令間の依存性はソフトウェアが管理するようになっている。命令が真の依存性または記憶競合から完全に抜け出すまでハードウェアが命令を扱うことのないように、コンパイラや他のコードジェネレータは命令の順序を変更できる。しかし、不幸にしてこの手法では幾つかの問題が生じる。ソフトウェアはプロセッサによる操作の遅延時間を考慮に入れることができず、したがって依存性を防止するためにどのように命令の順序を変えていいかということを常には判断できない。命令が依存性のない状態になるまでハードウェアがその命令を扱わないように、如何にしてソフトウェアがハードウェアをして制御できるか、ということも問題点のひとつである。操作遅延時間が短いスカラー・プロセッサの場合、ソフトウェアはオーバーヘッドを極端に増大することなく、コードに"no-ops"を挿入してデータ依存性の要求を満たすことができる。プロセッサが1サイクルあたり幾つかの命令を取り出そうとする場合、あるいはいくつかのオペレーションを完了するのに何サイクルかがかかる場合、プロセッサが依存性命令を扱わないようにするために挿入しなければならない"no-ops"の数は急速に増える。その結果、コード・サイズが容認し難い程増大する。命令間の依存性をエンコードするためno-opsは命令キャッシュという貴重なリソースを使う。
順不同の命令発行をプロセッサが許容する場合、どんなメカニズムのソフトウェアを、依存性を実施するのに使用すべきかは全く明らかでない。ソフトウェアはプロセッサの挙動を制御しないので、ソフトウェアが如何にしてプロセッサに依存性命令を解読させないようにするかということは困難である。二番目の問題は、スーパースカラー・プロセッサに於ける依存性を実施するスカラー・プロセッサ用の既存のバイナリ・コードは存在しないことである。なぜならば、実行モードはスーパースカラー・プロセッサにおいては非常に異なったものであるからである。依存性の管理をソフトウェアに委ねるには、スーパースカラー・プロセッサ用にコードを再生成する必要がある。そして、コードの依存性はハードウェアの遅延時間によって直接決定されるので、各スーパースカラー・プロセッサの各バージョンの最良のコードはそのバージョンのインプリメンテーションに依存する。
一方、ハードウェアの依存性対処手法は本質的に複雑であるという理由で望ましくない場合もある。典型的なRISC命令がそうであるように、各命令に2個の入力オペランドと1個の出力値があると仮定とする、どの2個の命令の間にも5つの依存性が存在する。すなわち、2つの真の依存性、2つの反依存性、および1つの出力依存性である。更に、ウィンドウ中の命令のグループのような、一つの命令グループの間の依存性の数は、そのグループ中の命令の数の自乗に比例する。なぜなら、各命令は他の命令の一つ一つに対して考慮されなければならないからである。
プロセッサが1つのサイクル内で解読し、実行し、実行しようとする命令の数によって、複雑さは更に増大する。これらのアクションによって依存性が導入される。複雑さを減少させる唯一の助けは、依存性ハードウェアのスコープと複雑さの減少を助けるために、依存性を幾つものサイクルにわたって増分変化量的に決定できるということである。
記憶競合を除外するひとつの手法は、レジスタと値との対応性を再設立するための、レジスタを追加導入することである。これらの追加されたレジスタは従来通り、ハードウェアによって動的に割り当てられ、そしてそれらのレジスタは「レジスタ名称変更(register renaming)」を使用するプログラムに必要な値に対応させられる。レジスタ名称変更を実現するために、通常プロセッサは生成される新しい値一つ一つに対して(すなわち、レジスタに書き込む命令の一つ一つに対して)新しいレジスタを割り当てる。元のレジスタを識別する命令は、そのレジスタの値を読む目的で、新規に割り当てられたレジスタの値を代わりに取得する。従って、ハードウェアは命令中の元のレジスタ識別子を名称変更して、新しいレジスタおよび正しい値と識別する。レジスタ割り当てに関してはレジスタ参照のロケーションに依って、幾つもの異なった命令中の同一のレジスタ識別子は、異なったハードウェア・レジスタにアクセスすることがある。
以下のコード・シーケンスを考える。式中、"op"はオペレーションを意味し、"Rn"は番号の付いているレジスタを表わし、":="は割り当てを表わす。
R3b := R3a op R5a (1)
R4b := R3d + 1 (2)
R3c := R5a + 1 (3)
R7b := R3c op R4b (4)
レジスタへの各割り当てによって、そのレジスタの新しい「インスタンス(instance)」、英字の添え字で表記されているもの、が生成される。第3命令でR3用の新しいインスタンスが生成されることによって、第2および第1命令の反および出力依存性がそれぞれ回避されるが、第4命令に正しくオペランドを供給することについては何も影響を与えない。第3命令におけるR3への割り当ては第1命令に於けるR3への割り当てに優先するものである。従って、次の命令で見られるR3cが新しいR3となり、その状態は別の命令が値をR3に割り当てるまで続く。
名称変更を行なうハードウェアは新しいレジスタ・インスタンスを生成し、そのインスタンスの値が他のものによって変更されて、その値への参照が存在しなくなった時点でそのインスタンスを破壊する。これによって、反および出力依存性が解消され、さらに多くの命令パラレリズムが可能となる。レジスタは再利用されるが、再利用はパラレル実行要件と一致している。これは特に順不同の命令発行に役立つものである。なぜならば、記憶競合は正しい結果を生成するのに必ずしも必要ではない命令発行抑制をもたらすからである。例えば、前記の命令シーケンスに於いては、名称変更によって第3命令は直ちに発行されるが、名称変更がない場合、第3命令は第1命令が完了し第2命令が発行されるまでこの命令を遅らせなければならないのである。
依存性を軽減するもう一つの手法は単一のビット(スコアーボード・ビット(scoreboard bit)と呼ばれる)を各レジスタと対応させることである。スコアーボード・ビットはレジスタに処理待ちの更新が存在することを示すために使用される。レジスタに書き込む命令が解読されると、プロセッサは対応するスコアーボード・ビットを設定する。書き込みが実際に実行されるとスコアーボード・ビットは再設定される。処理待ちの更新が存在するか否かを示すスコアーボード・ビットは一つだけしか存在しないので、各レジスタには斯かる更新は一つしかあり得ない。解読された命令が、処理待ちの更新(設定されているスコアーボード・ビットによって示される)を既に持つレジスタを更新するような場合、スコアーボードは命令の解読を遅らせる。こうして、どの時点に於いてもレジスタ当たり一つの処理待ちの更新を受け付けることによって出力依存性が防止される。
一方、レジスタの名称変更は複数のビットを持つタグを使用して様々な未計算の値を識別する。この場合、これらの値のうち幾つかは同一のプロセッサ・レジスタ(すなわち、同一の、プログラムから見えるレジスタ)に振り向けられていることも可能である。従来の名称変更では、ハードウェアは、現在どのような値とも対応していない使用可能なタグのプールからタグを割り当てることが求められ、また、ハードウェアは値の計算が完了するとタグを解放してそのプールに戻す必要がある。更に、スコアーボード化では各レジスタは一つの処理待ち更新しか受け入れることができないので、プロセッサはどの更新が最新のものであるかということを考慮しない。
依存性を軽減する更なる手法、アソシアティブ・ルックアップを使用する「リオーダー・バッファ(reorder buffer)」を用いてレジスタの名称変更手法を使用することである。アソシアティブ・ルックアップはリオーダー・バッファ項目が割り当てられると直ちにレジスタの識別子をそのリオーダー・バッファ項目に写像する。更に、出力依存性を防止するために、ルックアップは優先順位で行われ、その結果、レジスタが2回以上割り当てられた場合、最新の割り当て値だけが得られる。この結果が利用可能でない場合は、タグが得られる。一つのレジスタに対し、リオーダー・バッファ項目の数と同じ数のインスタンスがあっても構わない。従って、命令間で記憶競合が発生することはない。異なったインスタンスの各値はリオーダー・バッファからレジスタ・ファイルに順次書き込まれる。最後のインスタンスの値がレジスタ・ファイルに書き込まれると、リオーダー・バッファはもはやレジスタと写像しない。その場合、レジスタ・ファイルにはこのレジスタのインスタンスのみが含まれ、これが最も新しいインスタンスとなる。
しかし、リオーダー・バッファを用いた名称変更は、レジスタ識別子を値に写像するために、リオーダー・バッファ中のアソシアティブ・ルックアップを必要とする。リオーダー・バッファでは、アソシアティブ・ルックアップは優先順位付けられていて、リオーダー・バッファは常に最新値を対象となるレジスタ(あるいはタグ)に供給するようになっている。リオーダー・バッファもまた、種々の値をレジスタ・ファイルに順次書き込むので、値がリオーダー・バッファ中に存在しない場合でも、レジスタ・ファイルには最新値が必ず格納されている。
依存性軽減の更なる手法では、「未来ファイル(future file)」を使用することによってアソシアティブ・ルックアップを削減できる。未来ファイルは前のパラグラフで述べたリオーダー・バッファの特性は持たないファイルである。未来ファイル書き込み用に与えられた値は対応するレジスタに振り向けられた最新の値ではないこともあり、それが実際に最新の値でなければ値は最新のもとのして扱われない。従って、未来ファイルは最新の更新を記憶していて、実際に書き込みを行なう前に、各書き込みが最新の更新に対応することを検査するものである。
命令が解読されると、それはオペランド値と一緒に未来ファイル中のタグにアクセスする。レジスタに一つ以上の処理待ちの更新がある場合、タグは解読された命令が必要とする更新値を識別する。ひとつの命令が一旦解読されると、他の命令は反依存性に制約されることなくこの命令のソース・オペランドに上書きすることができる。なぜならば、このオペランドは命令ウィンドウにコピーされるからである。結果が最新の値のタグを持たない場合、その結果が未来ファイルに書き込まれることを防止することによって出力依存性は処理される。反および出力依存性は両方共、命令の発行を遅延させることなく処理される。
名称変更で依存性が解消されない場合、依存性を管理するために「インターロック(interlocks)」を使用しなければならない。インターロックは単に、命令が依存性から解放されるまでその命令の実行を遅延させるものである。命令の実行を抑制するには2つの方法がある。すなわち、命令の解読の抑制と、命令の発行の抑制である。
スコアーボード化以上にパーフォーマンスを改善するために、インターロックは「ディスパッチ・スタック(dispatch stack)」を使用してデコーダから命令ウィンドウに移される。ディスパッチ・スタックとは命令ウィンドウの一種で、ウィンドウ中の各命令を依存性カウントと共に増加させるものである。ウィンドウ中の各命令ごとのソース・レジスタに対応する依存性カウントが存在する。このカウントはソース・レジスタの処理待ちの先行更新の数を示すもので、従って、全ての真の依存性が解消される前に終了しなければならない更新の数を示すものである。ウィンドウ中の各命令の行き先レジスタに対応する2個の同じ様な依存性カウントが存在する。これらのカウントで処理待ちのレジスタの使用の数(すなわち反依存性の数)および処理待ちのレジスタの更新の数(すなわち出力依存性の数)が示される。
一つの命令が解読され、ディスパッチ・スタックにロードされると、依存性カウントはその命令のレジスタ識別子と、当ディスパッチ・スタックに既に存在する全ての命令のレジスタ識別子とを比較することによって設定される。命令が完了すると、まだウィンドウ中に存在する命令の依存性カウントは、実行される命令のソースおよび行き先レジスタ識別子に基づいて減少する(カウントは完了された命令の数に応じて可変の数で減少する)。命令はその全てのカウントがゼロの場合、独立した命令となる。カウントを使用することによって、ディスパッチ・スタック中の全ての命令を各サイクルの他の全ての命令と比較する必要がなくなる。
反依存性の命令の解読中にオペランドを命令ウィンドウ(例えば予約ステーション)にコピーすることによって防止できる。こうすることによって、オペランドが以降のレジスタの更新の段階で上書きされることがなくなる。レジスタの名称変更とは別に、反依存性を解消させるためにどんな手法でもオペランドはコピーできる。オペランドをコピーする代わりに、反依存性をインターロックすることもできるが、これらのインターロックのために必要なコンパレータおよび/またはカウンタは、比較するソースおよび結果レジスタの組み合わせの数を考慮すると高額である。
オペランドそのものの代わりにタグをオペランドとして供給できる。このタグはハードウェアにとっては単に、命令がどの直を必要とするかを識別するための手段である。従って、オペランド値が生成されると、それは命令とマッチさせることができる。レジスタ当たり1個の処理待ちの更新だけしかあり得ない場合、レジスタ識別子がタグとして使用できる(スコアーボード化の場合のように)。レジスタ当たり複数の処理待ちの更新があり得る場合(名称変更の場合のように)、結果タグを割り当てて、そして一意性を保証するためのメカニズムが必要である。
スコアーボード・インターロッキングの代わりとなる手法は、レジスタの複数の処理待ち更新を、出力依存性のためにデコーダを遅延させないようにし、且つデコードの過程に於いてオペランド(あるいはタグ)をコピーすることによって反依存性を処理することである。ウィンドウ中の命令は出力依存性から解放されない限り発行されないので、各レジスタの更新は順序通りの実行で行われるのと同じ順序で実行される。但し、異なるレジスタの更新は例外で、お互いに順不同である。この手法はレジスタ名称変更と殆ど同じ機能を持つものであるが、同一のレジスタの更新が順不同に発生するように命令を発行する能力だけは持たない。
リオーダ・バッファーを用いる以外に、名称更新にとって代わる良い方法はないように見える。依存性に関する議論の根底を成すものは、プロセッサは順不同の発行を行い、間違って予報された分岐から回復するためのリオーダー・バッファを既に持っている、という前提である。順不同の発行により、依存性を待つためにデコーダを遅延させることが許容できないこととなる。プロセッサに命令ウィンドウがある場合、デコーダをインターロックしてプロセッサのルックアヘッド機能を制限することは矛盾しているのである。従って、二つの選択肢しかない。すなわち、ウィンドウ中で反および出力依存性インターロックを実現させるか、あるいはこれらの依存性を名称変更によって完全に除去することである。
発明の要約
本発明はスパースカラーRICSコンピュータ用の、レジスタ名称変更および命令発行を含む、命令スケジューリングに関するものである。スケジューリング論理の一部であるレジスタ名称変更回路(RRC)によって、コンピュータの命令実行ユニット(IEU)は依存性を防止しつつ複数の命令を同時に実行することが可能になる。従来のレジスタ名称変更と比較して、本発明ではレジスタ・アドレスは実際には名称変更されない。本発明のRRCは一時的に命令の結果をバッファに入れ、順不同の命令の実行の結果は全ての先行する命令の実行が終わるまでレジスタ・ファイルに転送されない。RRCはまた一時的にバッファに入れられたオペランド(結果)を依存命令に供給するために結果の前向き送りを行なう。RRCには3個にサブセクションが含まれている。すなわち、データ依存性チェッカー(DDC),タグ割り当て論理(TAL),およびレジスタファイル・ポートMUX(RPM)である。
DDCの役割は命令のグループ中の命令間の依存性を検出することである。DDCは各命令のソース・レジスタのアドレスと、グループ中の以前の各命令の行き先レジスタのアドレスを比較することによって命令間の依存性を検出する。例えば、命令Aが命令Bによって書き込まれたレジスタからの値を読み出す場合、命令Aは命令Bに依存し、命令Aは命令Bが完了するまで開始できない。DDCの出力はこれらの依存性を示す。
DDCの出力はTALに送られる。一つの命令が先行する複数の命令に依存することが起こり得るので、TALはこれらの先行する命令のうちどれが最後に実行されるものであるかを決定する必要がある。本発明では、各命令を自動的に、所定の一時的バッファ位置に写像する。従って、本発明は従来のリオーダー・バッファで使用されるような優先順位化されたアソシアティブ・ルックアップを必要とせず、従ってチップの面積/コスト、および実行速度を節約する。
同時に実行される複数の命令の順不同の結果は、命令によって指定されたファイル・レジスタではなく、一連の一時的バッファに格納される。例えば、DDCが、命令6のソースが命令2、3、および5によって書き込まれるレジスタ、[INCOMPLETESENTENCE]であると決定した場合、TALは命令6に代わって命令5の「タグ(tag)」を出力することによって、命令6は命令5が完了するまで待たなければならないことを表示する。命令5のタグは命令5の結果が格納されている一時的バッファ位置を示す。このタグはまた、命令5が済んだかどうかを示す1ビットの信号(「済みフラグ(doneflag)」と呼ばれる)を含む。各命令は3個のソース・レジスタを持つことができるので、TALは各命令ごとに3個のタグを出力する。命令が先行するどの命令にも依存しない場合、TALは一時的バッファのアドレスではなく、その命令の入力のレジスタ・ファイル・アドレスを出力する。
RRCの最後の要素はRPM、すなわちレジスタファイル・ポートMUXes、である。RPMの入力はTALの出力であり、RPMの選択ラインは命令スケジューラ(または、イシュア)と呼ばれる、IEUのもう一つの要素から来る。命令スケジューラはどの命令を実行するか(この決定は済みフラグにも基づくものである)を選択し、次にRPMを使用してその命令のタグを選択する。これらのタグはコンピュータのレジスタ・ファイルの読み出しアドレス・ポートに送られる。前述の例えば、命令5が完了した後、命令スケジューラは命令6を開始し、命令5の結果(タグ)のアドレスがレジスタ・ファイルに送られるようにRPMを選択する。そして、レジスタ・ファイルは命令5の結果を命令6で使用できるようにする。
本発明の上記および他の特徴と利点は、添付図の中で説明されるように、以下の推奨実施例の更に具体的な説明で明らかになるであろう。
【図面の簡単な説明】
本発明のより良い理解のために下記の図面を参照する。
図1は本発明のレジスタ名称変更回路の代表的ハイレベルブロック図を示す。
図2は本発明のデータ依存性検査回路の代表的ブロック図を示す。
図3は本発明のタグ割り当て論理の代表的なブロック図を示す。
図4は本発明のレジスタ・ポート・ファイルマルチプレクサの代表的ブロック図を示す。
図5は本発明によるIXS1およびIYS/D用のデータ依存性検査方法を示す代表的フローチャートである。
図6Aおよび6Bは本発明によるタグ割り当て方法を示す代表的フローチャートである。
図7は本発明の一実施例に基づいて、命令Yのソース/行き先オペランドを命令Xの各オペランドと比較する代表的ブロック図を示す。
図8は図7のコンパレータ・ブロック706の代表的回路図を示す。
図9は本発明の一実施例による、優先エンコーダの代表的ブロック図を示す。
図10は本発明の命令スケジュール論理の代表的ブロック図を示す。
詳細な説明
図1に本発明の命令実行ユニット(IEU)100の代表的ハイレベルブロック図を示す。IEU100の目的は最短時間で最大数の命令を実行することである。これを遂行するには二つの基本的な方法がある。すなわち、各命令が出来るだけ短時間で実行するようにIEU100を最適化するか、複数の命令を同時に実行できるようにIEU100を最適化することである。
命令は「バケット」と呼ばれる4つのグループ中のFIFO(先入れ先出し方式レジスタ・スタック記憶装置)命令101を通して、命令取り出しユニット(IFU、図示せず)からIEU100に送られる。IEU100は最大2個の命令バケットを同時に解読し、スケジュールできる。FIFO101は0-3とラベルされた4個のバケットに全部で16個の命令が格納できる。IEU100は命令ウィンドウ102を調べる。本発明の一実施例では、ウィンドウ102は8個の命令(バケット0および1)で構成されている。各サイクルで、IEU100はウィンドウ102から最大数の命令を発行しようとする。ウィンドウ102は命令バッファ・レジスタとして機能する。一旦、バケット中の命令が実行され、その結果がプロセッサのレジスタ・ファイル(ブロック117を参照)に格納されると、バケットは底部104から掃き出され、新しいバケットが上部106から落とされる。
命令を並列あるいは順不同に実行するためには、各命令が必要とする時に、必要なデータが使用可能であるように、また、各命令の実行の結果が、将来の命令においてそれが必要になった時に使用可能であるように配慮する必要がある。レジスタ名称変更の回路(RRC)はコンピュータのIEUのスケジュール論理の一部であるが、RRCはカレント命令間の依存性を検出し、命令のソース(入力)を名称変更することによってこの機能を行なうものである。
前述のように三種類の依存性が存在する。すなわち、入力依存性、出力依存性、反依存性、である。入力依存性は、例えばAと呼ばれる命令が、仮にBと呼ばれる先行の命令の結果に基づいてオペレーションを実行する場合に発生する。出力依存性は、AとBの出力が同じ場所に格納されるような場合に発生する。反依存性は、命令のストリームに於いて命令Aが命令Bの前に現れ、Bの結果がAの入力の一つと同じ場所に格納されなければならない場合に発生する。
入力依存性の扱い方は、必要な入力が使用可能になるまで命令を実行しないことである。RRC 112は、カレント命令間の入力依存性を検出するために、そして特定の命令のための全ての入力が使用可能になると命令スケジューラまたはイシュア118に合図するために、使用される。これらの依存性を検出するために、RRC 112はデータ依存性回路(DDC)108を使用して、各命令の入力のレジスタ・ファイル・アドレスと各先行命令の出力のアドレスとを比較する。先行する命令の出力が格納されるべきレジスタから一つの命令の入力が得られる場合、後者の命令は前者の命令の実行が終わるまで待たねばならない。
RRC 112のこのインプリメンテーションでは、8個の命令を同時に検査できるので、カレント命令はウィンドウ102からこれらの8個の命令のうちの一つとして定義される。当業者にとって、本発明はこれよりも多くの命令、あるいはこれよりも少ない命令を検査できるように容易に変更できるということは明らかであろう。
本発明の一実施例では、命令は0から3の入力および0または1の出力を持ち得る。多くの命令の入力および出力は、幾つかのレジスタ・ファイルのうちの一つから取得されるか格納されている。各レジスタ・ファイル117(例えば別個の、整数、浮動、およびブールレジスタ・ファイル)は32個の実エントリに加え、8個の一時バッファ116のグループを持つことができる。ある命令が完了すると(「完了(complete)」とは、オペレーションが完了し、オペランドはその行き先レジスタに書き込まれる用意があることを意味する)、その結果は一時バッファ116の予め指定されたロケーションに格納される。全ての先行する命令の結果がレジスタ・ファイル中の定められた場所に移された後、この完了した命令の結果はレジスタ・ファイル117の適切な場所に移される。このような、一時バッファ116からレジスタ・ファイル117への結果の移動は「退避(retirement)」と呼ばれ、終了論理で制御されるもので、当業者にとっては明らかなものであろう。複数の命令が同時に退避可能である。退避とは、コンピュータのプログラム・カウンタを含む、マシンの「正式な状態(official state)」を更新することであり、これもまた当業者にとっては明らかなものであろう。例えば、命令I0が命令I1の直前に完了すると、両方の命令の結果をレジスタ・ファイル117に直接格納することができる。しかし、その後命令I3が完了すると、その結果は命令I2が完了するまで一時バッファ116に格納されなければならない。IEU100に各命令の結果を一時バッファ116の予め指定された場所に格納させることによって、IEU100はプログラムでの順序とは異なった順序で命令を実行でき、しかも出力依存性および反依存性によって生じる問題も回避できる。
RRC 112はビットマップをバス120を経て命令スケジューラ118に送り、ウィンドウ102中のどの命令が発行の用意ができているかを表示する。命令解読論理(図示せず)はイシュア118にバス123を経て各命令のリソースの要件を通知する。IEU100中の各リソースごとに(すなわち、各機能ユニットは一つの加算器、乗算器、シフト器、等である)イシュア118はこの情報を走査し、バス121を経て発行信号を送ることにより、発行するための最初の命令および以降の命令を選択する。発行命令はRRC 112内の一組のレジスタファイル・ポートMUXes(RPMs)124を選択する。これらの入力は各命令の入力のアドレスである。
これらの結果はレジスタ・ファイル117に送られる前に数サイクル分一時バッファ116に保存されるので、これらがレジスタ・ファイル117に送られる前に一時バッファ116から取得するメカニズムが設定されている。このようにして、その情報は他の命令のオペランドとして使用可能となる。このメカニズムは「結果の前送り(result forwarding)」と呼ばれ、これなしにはイシュア118は順不同での命令の発行ができない。この結果の前送りはレジスタ・ファイル117に於いて行われ、RRC 112によって制御されるものである。結果の前送りの実行に必要な制御信号、そして斯かる制御信号の生成に使用されるランダム論理は、当業者にとっては明らかであろう。
与えられた命令がカレント命令のうちどの命令にも依存しない場合、この命令の入力は既にレジスタ・ファイル117に存在するので、結果の前送りは不要となる。イシュア118がその命令の実行を決定すると、RRC 112はレジスタ・ファイル117にそのデータを出力するよう指示する。
RRC112には次の三つの部分が含まれる。すなわち、データ依存性チェッカー(DDC)108,タグ割り当て論理(TAL)112,およびレジスタファイル・ポートMUXes(RPM)124である。DDC108はカレント命令間の何処に入力依存性が存在するかを決定する。TAL 122はイシュア118のために依存性を監視し、結果の前送りを制御する。RPM124はイシュア118によって制御され、TAL 122の出力を適切なレジスタ・ファイル・アドレス・ポート119に差し向ける。各命令はバス110を経てDDC 118に送られる。全てのソース・レジスタは、ウィンドウ102の命令ごとに、全ての以前の行き先レジスタと比較される。
各命令の行き先は1つだけであり、これは一実施例ではダブルレジスタとなる。ひとつの命令は先行する命令だけに依存し、最大3個のソース・レジスタを持つことができる。依存性の存在を検出するために、相互に検査される必要がある様々なレジスタ・ファイルのソースおよび行き先アドレスがある。上記の如く、下部の2個のバケットに対応する下部の8個の命令はDDC 108によって検査される。全てのソースレジスタ・アドレスは全ての先行の行き先レジスタ・アドレスと比較されて、ウィンドウ102中の命令が存在するかどうかが調べられる。
例えば、一つのプログラムに下記の命令シーケンスがあるとする。
add R0,R1,R2 (0)
add R0,R2,R3 (1)
add R4,R5,R2 (2)
add R2,R3,R4 (3)
各命令0-3の最初の2個のレジスタはソース・レジスタであり、各命令の最後のレジスタは行き先レジスタである。例えば、R0とR1は命令0のソース・レジスタであり、R2は行き先レジスタである。命令0はレジスタ0および1の内容を加算し、結果をR2に格納する。この例の命令1-3で、全ての依存性を評価するために必要な比較は次の通りである。
I1S1,I1S2 対 I0D
I2S1,I2S2 対 I1D,I0D
I3S1,I3S2 対 I2D,I1D,I0D
上記を説明すれば次の通りである。IXRS1は命令Xの第1ソース(入力)のアドレスであり、IXRS2は命令Xの第2ソース(入力)のアドレスであり、IXDは命令Xの行き先(出力)のアドレスである。
更に、プロセッサには一時バッファがあり、そこに命令の0の結果に干渉することなしに命令2の結果が格納できるので、RRC 112は、命令2は命令0に依存して出力されることを無視できる。前述の、命令0と1の結果がレジスタ・ファイル117に移されるまで、命令2の結果は一時バッファ116からレジスタ・ファイル117に移されないのである。
RRC 112によって検査される命令の数は容易にスケール可能である。4個の命令でなく、8個の命令を同時に検査するためには、下記の更なる比較を行わなければならない。
I4S1,I4S2 対 I3D,I2D,I1D,I0D
I5S1,I5S2 対 I4D,I3D,I2D,I1D,I0D
I6S1,I6S2 対 I5D,I4D,I3D,I2D,I1D,I0D
I7S1,I7S2 対 I6D,I5D,I4D,I3D,I2D,I1D,I0D
依存性の検査を行なうために、RRC 112が扱わねばならない特殊なケースが幾つかある。第一に、ある命令では同じレジスタを入力と出力の両方に使用する。従って、RRC112はこのソース/行き先レジスタ・アドレスを全ての先行する命令の行き先レジスタ・アドレスと比較する必要がある。従って、命令7のためには下記の比較が必要である。
I7S1,I7S2,I7S/D 対 I6D,I5D,I4D,I3D,I2D,I1D,I0D
更に、別の特殊なケースは、64ビットの出力(長語オペレーション)を生成する命令がプログラムに含まれている場合である。これらの命令は、結果を格納するための2個のレジスタが必要である。本実施例ではこれらのレジスタは順次レジスタでなければならない。従って、RRC112が命令4の依存性を検査していて、命令1が長語オペレーションである場合、RRC112は下記の比較を行なわなければならない。
I4S1,I4S2 対 I3D,I2D,I1D,I1D+1,I0D
場合によっては、命令は行き先レジスタを持たない。従って、RRC112は行き先レジスタなしの命令と如何なる将来の命令との間のどんな依存性をも一切無視しなければならない。更に、命令は1個の有効なソース・レジスタだけを持つとは限らないので、RRC 112は未使用のソース・レジスタ(通常はS2)と全て先行する命令との間のどんな依存性をも一切無視しなければならない。
RRC 112はまた複数のレジスタ・ファイルを扱うことができる。複数のレジスタ・ファイルが使用される場合、一つの命令のソース・レジスタが他の命令の行き先レジスタと同じアドレスを持ち、同じレジスタ・ファイルに存在する場合のみ依存性が発生する。RRC 112は特定のアドレスがどのレジスタ・ファイルからのものであるかという情報をそのアドレスの一部として扱う。例えば、4個の32ビット・レジスタ・ファイルを使用するインプリメンテーションに於いて、RRC 112は5ビットの比較のかわりに7ビットの比較を行なう(5ビットはアドレスで、2ビットはレジスタ・ファイル用である)。
どの命令が長語オペレーションであるか、あるいはどの命令に不正なソースまたは行き先レジスタが含まれているかを示す信号は命令解読論理(IDL、図示せず)からRRC 112に送られる。またIDLはどのレジスタ・ファイルから各命令のソースと行き先を取得するか、またどのレジスタ・ファイルにそれらを送るかをRRC 112に通知する。
図2はDDC 108のブロック図である。ウィンドウ102の8個の命令すべてのためのソース・アドレス信号はIFIFO 101から来着する。更なる入力には、8個の命令のすべてのための長語ロード・オペレーション・フラグ、レジスタ・ファイル解読信号、不正行き先レジスタ・フラグ、行き先アドレス信号、アドレッシング・モードフラグ、等が含まれている。
DDC208は28個の依存性ブロック204で構成されている。各ブロック204はKEY 206で記述されている。各ブロック204はIXS1,IXS2,およびIXS/D、の3個の入力を受け取る。IXS1は命令Xの第一ソース(入力)のアドレスであり、IXS2は命令Xの第二ソース(入力)のアドレスであり、IXS/Dは命令Xのソース/行き先(入力)のアドレスである。各ブロック204はまた入力IYS/Dを受け取るが、これはある先行命令Yの行き先レジスタ・アドレスである。例えば、最上行208はIOS/Dを受け取るが、これは命令0の行き先レジスタ・アドレスである。各ブロック204はデータ依存性の結果を対応するバスライン114の一つに出力する。例えば、I2S/Dのアドレスは命令7、6、5、4、および3のオペランドアドレスS1、S2、およびS/Dと比較されなくてはならない。
各ブロック204は三つの比較を行なう。これらの比較を理解するために図7に示される汎用的ブロック700を考察してみる。このブロックは命令Yのソース/行き先オペランドと命令Xの各オペランドとを比較する。この例に於いて、下記の三つの比較が行なわれなくてはならない。
IXS1 = IYS/D
IXS2 = IYS/D
IXS/D = IYS/D
これらの比較は3個のコンパレータブロック702、704、および706でそれぞれ表わされる。コンパレータブロック702、704および706への1組の入力はIYS/Dフィールドのビットであって、このフィールドは番号708で表わされる。コンパレータブロック702はその入力の第二セットとしてIXS1のビットを持つ。同じく、コンパレータブロック704はその入力の第二セットとしてIXS1のビットを持つ。また、コンパレータブロック706はその入力の第二セットとしてIXS/Dのビットを持つ。
推奨実施例では、ブロック702、704および706で実行される比較はランダム論理で実行できる。コンパレータブロック706のランダム論理の一例を図8に示す。命令Yのソース/行き先ビット[6:0]を参照番号802で右側からの入力として示す。同じく、命令のXのソース/行き先ビット[6:0]を参照番号804で上側からの入力として示す。最上位ビット(MSB)はビット6であり、最下位ビット(LSB)はビット0である。これら2個のオペランドからの、対応するビットは7個の排他的NORゲート(XNOR)806に送られる。XNOR806の出力は次に7個の入力ANDゲート808によってANDをとられる。対応するビットが同一であるならば、XNOR806の出力のすべてはロジック・ハイである。全てのビットが同一であるならば、7個のXNOR 806の出力のすべてはロジック・ハイであり、ANDゲート808の出力はロジック・ハイである。これは、IXS/DとIYS/Dとの間に依存性が存在することを示す。
コンパレータブロック702および704のランダム論理は図8に示したものと同じである。本発明ではデータ依存性検査を行なうために幾多の他のランダム論理回路が可能であり、これはこの実施例の精神から逸脱することなく、当業者にとって明らかであろう。
また、当業者にとって更に明らかになるであろうが、種々のインプリメンテーション固有のケースの発生が可能であるが、そのためにはデータ依存性検査を行なう更なるランダム論理が必要となる。代表的な特殊なデータ依存性検査のケースは長語の処理である。
前述の如く、長語オペレーションがレジスタXに書き込むと、最初の32ビットはレジスタXに書き込まれ、二番目の32ビットはレジスタX+1に書き込まれる。従って、データ依存性チェッカーは比較を行なうに当たって両方のレジスタを検査する必要がある。推奨実施例では、レジスタXは偶数レジスタであり、レジスタX+1は奇数レジスタである。従って両者の違いはLSBの差だけである。両方のレジスタを同時に検査する最も簡単な方法はLSBを無視することである。ストア・ロング(STLG)またはロード・ロング(LDLG)オペレーションの場合、XとYがLSB(0)ビットだけの差で違うならば、図8の論理では、依存性が実際は存在していてもそれがあたかも全然ない状態を生み出す。従って、長語オペレーションのためには、全ての依存性が確実に検出できるように、STLGおよびLDLGフラグは[0]ビットXNORの出力とORがとられなければならない。
図5にIXS1およびIYS/Dのデータ依存性検査フローチャートを示す。条件付きブロック502で示されるように、DDC 108は最初にIXS1およびIYS/Dが同じレジスタ・ファイルに在るかどうかを検査する。もし同じレジスタ・ファイルに存在しないならば依存性はない。これを、ブロック504に示す。依存性が存在するならば、DDC 108は、ブロック506に示すように、次にIXS1およびIYS/Dが同じレジスタに在るかどうかを決定する。同じレジスタに存在しない場合、フローは条件付きブロック508へ進み、そこでDDC 108はIYが長語オペレーションであるか否かを決定する。IYが長語オペレーションでない場合、依存性は存在せず、フローはブロック504に進む。IYが長語オペレーションである場合、フローは条件付き文510に進む。そこで、DDC 108はIXS1およびIYS/D+1が同じレジスタに存在するか否かを決定する。同じレジスタに存在しない場合、依存性はなく、フローはブロック504に進む。IXS1およびIYS/D+1が同じレジスタに存在するならば、条件付きブロック512に進み、そこでDDC 108はIYが有効な行き先を持っているか否かを決定する。有効な行き先がない場合、依存性は存在せず、フローはブロック504に進む。IYに有効な行き先がある場合、条件付きブロック514に進み、そこでDDC108はIXS1が有効なソースレジスタを持っているか否かを決定する。ここでも、有効なソースレジスタが検出されないならば依存性は存在せず、フローはブロック504に進む。有効なソースレジスタが検出されれば、DDC 108はIXS1およびIYS/Dの間に依存性があることを検出したことになる。これはブロック516で示されている。
データ依存性検査については、同一承継人の出願に係る係属中の出願、関連特許申請、米国特許番号07/860,718号(代理人整理番号SP041)に更に詳しく説明されている。この出願の開示はここに参照文献として含まれているものとする。
ある命令がその入力の一つを、他の幾つかの命令によって既に書き込まれているレジスタから取得することが可能であるので、本発明ではどの入力が真の依存性であるかを選択しなければならない。例えば、命令2および5がレジスタ4に書き込み、命令7がレジスタ4から読み出す場合、命令7に二つの依存性があり得る。この場合、プログラムでは命令5は命令2に後続するので、プログラマーの意図とすることは、命令7が命令2の結果ではなく、命令5の結果を使用することであると仮定される。従って、一つの命令が先行する幾つかの命令に依存する場合、RRC 112はその命令は先行する命令のうち最高の番号を持つ命令に依存するものとして扱う。
TAL112は一旦、真の依存性が何処に存在するかを決定した後、各命令の入力を探す必要がある。本発明の推奨実施例では、入力は実際のレジスタ・ファイルまたは一時バッファ116の配列から取得できる。RRC 112は、依存性を持たない命令の場合、その命令の全ての入力はレジスタ・ファイルに存在すると仮定する。この場合、RRC 112はIFIFO 102から取得されたIXS1、IXS2、およびIXS/Dアドレスをレジスタ・ファイルに渡す。依存性のある命令の場合、RRC 112はデータは一時バッファ116に格納されていると仮定する。RRC 112は各命令がどの先行命令に依存するかが分かっているので、そして各命令は常に一時バッファ116中の同じ場所に書き込むので、RRC 112は一時バッファ116の何処に命令の入力が保存されているかを決定することができる。RRC 112はこれらのアドレスをレジスタ・ファイル読み出しポート119に送り、レジスタ・ファイル117はその命令がデータを使用できるように一時バッファ116から出力する。
タグ割り当て例を下記に記す。
0: add r0, r1, r2
1: add r0, r2, r3
2: add r4, r5, r2
3: add r2, r3, r4
上記のオペレーションの依存性は下記の通りである(依存性を#記号で記す)。
I1S2#I0S/D
I3S1#I0S/D
I3S1#I2S/D
I3S2#I1S/D
先ずI0に注目するならば、I0は依存性を持たないので、そのタグはその元のソース・レジスタ・アドレスに等しい。
I0S1 タグ= I0S1 = r0
I0S2 タグ= I0S2 = r1
I0S/D タグ= I0S/D + r2
I1は1個の依存性を持つのでI1のタグは次の通りである。
I1S1 タグ= I1S1 = r0
I1S2 タグ= I0S/D = t0
式中、(t0=一時バッファ中の命令0のスロット)
I1S/D タグ= I1S/D = r3
I2もまた依存性を持たない、独立したものである。
I2S1 タグ= I2S1 = r4
I2S2 タグ= I2S2 = R5
I3S2/D タグ= I2S/D = r2
I3S1にはIOS/DおよびI2S/Dの二つの依存性が有り得る。TAL 122は最後の依存性(最大の番号を持つ依存性)を選択しなければならないので、I2S/Dが選択される。
I3S1 タグ= I2S/D = t2
I3S2 タグ= I1S/D = t1
I3S/D タグ= I3S/D = r4
これらのタグは次にバス126を経てRPM 124に送られ、イシュア118によって選択される。TAL 122はタグを準備すると同時にDCL 130の出力を監視し、それらの出力をバス120を使用してイシュア118に送る。それを行なうに当たり、TAL 122はRPM 124に送るタグを運ぶのと同じ方法でDCL 130の適切な出力を選択してイシュア118に送る。
この例を更に説明するならば、TAL 122は下記のレディー信号をイシュア118に送る。
I0S1 INFO = 1
(命令0は独立した命令であるので、直ちに起動できる)。
I0S2 INFO = 1
I0S/D INFO = 1
I1S1 INFO = 1
I1S2 INFO = DONE[0]
(I0が済んだ時DONE[0] = 1)
I1S/D INFO = 1
I2S1 INFO = 1
I2S2 INFO = 1
I2S/D INFO = 1
I3S1 INFO = DONE[2]
I3S2 INFO = DONE[1]
I3S/D READ = 1
(DONE信号はバス132を経てDCL 130から送られる。本発明においては「済んだ(done)」とは命令の結果が一時バッファに在るか、さもなくば機能ユニットの出力に於いて使用可能であることを意味する。一方、「終了(terminate)」とは命令の結果がレジスタ・ファイルに存在することを意味する)
次に図3を参照しつつTAL 122の代表的ブロック図を説明する。TAL 122は8個のタグ割り当て論理ブロック302で構成されている。各TALブロック302は対応するデータ依存性結果、およびコンピュータの命令解読および制御論理(図示せず)から送られる更なる信号を複数のバス114を経て受け取る。BKTビット信号はタグの最下位ビットを形成する。DONE[X]フラグは命令0から6までのものであり、命令Xが済んだか否かを通知する。DBLREG[X]フラグは命令のうち一つが倍長ワードであるならば、どれが倍長ワードであるかを通知する。各TALブロック302はそれ自身の命令レジスタ・アドレスを入力として受け取る。その他の信号であるDBLREGおよびBKT信号は全てインプリメンテーション依存の制御信号である。各TALブロック302はIXS1、IXS2、およびIXS/Dというラベルを持つ6ビットの、3個のタグ126を出力する。TAL122は各タグ信号の最下位の5ビットをRPMs 124に出力し、最上位のタグをイシュア118に出力する。
図3の各ブロック302は3個の優先エンコーダ(PE)で構成されている。これらのPEはそれぞれS1、S2、およびS/D用である。しかし、一つの例外がある。すなわち、I0はタグの割り当てを必要としないのである。I0は常に独立しているので、その各タグは元のS1、S2、およびS/Dのアドレスと同一である。
典型的なPEを図9に示す。PE902は8個の入力904および8個の出力906を持つ。PE902の入力はDDC108からの出力114であり、これらの出力は何処に依存性が存在するかを示すものである。例えば、ソース・レジスタ1(S1)の場合、I7S1タグ割り当てPE902の7個の入力はDDC108の7個の出力114であり、それらはI7S1がI6Dに存在しているか否か、I7S1がI5Dに存在しているか否か、等、そしてI7S1がI0Dに依存しているか否か、までを通知する。参照番号908で示される第8入力は常にPE902からの出力であるので、常に高位でタイとなる。
上記のように、一つの命令が先行する幾つかの命令に依存する場合、PE902は依存性が存在する先行命令のうち最も古い(プログラム順で)命令だけを選択し、出力する。これは、最も古い先行命令への依存性があるか否かを示す信号をPE902の最優先順位の入力に接続し、2番目に古い先行命令への依存性があるか否かを示す信号をPE902の最優先順位が2番目の入力に接続する、というふうに、すべての先行命令を接続することによって行なわれる。PE902の最低優先順位の最も低い入力は常に高位にタイとなり、従って、PE902の出力のうち少なくとも1個のものが確定される。
出力906はMUX910の選択ラインとして使用される。MUX 910には8個の入力912があり、それらに各命令のタグが付く。
これを理解するために、I7がI6およびI5に依存すると仮定する。I6の優先順位はI5より高いので、PE902の出力906に於いてI6に対応するビットはハイである。MUX 910の対応する入力912にはS1用のI6のタグがある(PE 902はI7S1の為のものである)。I7はI6に依存するので、I6の結果のロケーションは、I7が使用可能になるようにMUX910から出力しなければならない。従って、I6のタグが選択され出力ライン914に出力される。I6の済みフラグであるDONE[6]もまたMUX910から出力して、イシュア118が、いつI7の入力がレディーであるか分かるようにしなければならない。このデータはバス120を経てイシュア118に送られる。命令には最大3個までのソースがあるので、TAL122は各命令に対して最大3個までの依存性を監視し、各命令に関して3個のベクトル(合計24個のベクトル)をイシュア118に送る。独立した命令の場合、TAL 122はその命令は直ちに開始できることをイシュア118に通知する。
RPMs 124に送られるタグ出力のMSBは、アドレスがレジスタ・ファイル・アドレスであるか、一時バッファ・アドレスであるかを通知するのに使用される。独立した命令の場合、5個のLSB出力はソース・レジスタ・アドレスを示す。依存性を持つ命令の場合、第2MSBはアドレスが64ビット・バルブのためのものであることを示す。第3から第5MSB出力は一時バッファ・アドレスを指定するものである。そしてLBS出力はどのバケットがレント・バケットであるかを示し、このバケットはTAL 122中のBKT信号に等しい。
DDC108と同じく、TAL 122は多数のインプリメンテーション依存(すなわち、特殊なケース)を待つ。先ず、本発明の一実施例では、レジスタ・ファイルのレジスタ番号0は常に0に等しい。斯くして、一つの命令がレジスタ0に書き込み、別の命令がレジスタ0から読み出すことがあっても、これらの命令間には依存性はない。各命令に関し、TAL122は命令解読論理(ILD、図示せず)から3個の信号を受け取る。これらの信号はその命令のソースの一つがレジスタ0であるか否かを通知するものである。それらのソースのうち一つでも確定されると、TAL 122はその命令のその特定の入力に関連する一切の依存性を無視する。
ある条件下で別の特殊なケースが発生するが、その条件とはバケット0中の命令がバケット1中のどの命令からも依存されないことが保証されているということである。BKT1_NODEP_と呼ばれる4ビットの信号がIEU制御論理(図示せず)からRPC 112に送られ、BKT1_NODEP[X]=1である場合、RRC112は命令4、5、6、または7と命令Xとの間の依存性を一切無視すべきものとして扱う。
命令7のソース1(I7S1)のタグ割り当ての一例を図6A-6Bのフローチャートに示す。条件付きブロック602に示す如く、TAL122は最初にI7S1がレジスタ0であるか否かを決定する。I7の第1ソースオペランドがレジスタ0であるならば、タグはゼロに設定され、I7S1のINFOフラグもブロック604に示される如く1に設定される。I7の第1ソースオペランド(S1)がレジスタ0でない場合、条件付きブロック606に示すように、TAL 122は次にI7S1がI6S/Dに依存するか否かを決定する。I7S1がI6S/Dに依存する場合、フローはブロック610に進む。ここで、ブロック610に示すように、I7S1のタグは{1,DBLREG[6],0,1,0,BKT}に等しいように設定され、I7S1のINFOフラグはDONE[6]に等しいように設定される。条件付きブロック606でテストされた条件のうちどちらかが満たされない場合、フローは条件付きブロック612に進む。ここで、TAL122はI7S1がI5S/Dに依存しているか否かを決定する。依存性がある場合、フローはブロック616に進み、ここでTAL 122はI7S1のタグを[1,DBLREG[5],0,0,1,BTK]に設定し、I7S1のINFOフラグをDONE[5]に設定する。条件付きブロック612でテストされた条件が満たされない場合、フローはブロック618に進み、ここで、TAL 122はI7S1がI4S/Dに依存しているか否かを決定する。
図6Aおよび6Bの残りの部分を一見すれば明らかな如く、I7S1がI4S/D、I3S/D、I2S/D、I1S/D、およびI0S/Dに依存しているか否かに基づいて、同じようなタグの決定が行なわれる。これをセクション620、622、624、626、および628でそれぞれ示す。そして最後に、命令7が命令0から独立しているか、あるいは条件付きブロック630でテストされるように、バケット1の全ての命令が命令0から独立しているならば(すなわち、BKT1_NODEP[0]=1であるならば)、フローはブロック632に進み、ここでTAL 122はI7S1をタグを{0,I7S1}に設定し、I7S1のINFOフラグを1に設定する。上記の例で留意すべきことは、I7S1タグ信号にはレジスタ・ファイル117のレジスタ・ファイル・ポートMUXesが直接送られることである。I7のS1入力がレディーになると、イシュア118に通知するためにI7S1 INFO信号がイシュア118に送られる。
図10にイシュア118の代表的ブロック図を示す。推奨実施例では、確保する必要のある各リソース(機能ユニット)ごとに、イシュア118はスキャナーブロツク1002を持っている。この例では、イシュア118はスキャナーブロックFU1、FU2、FU3、FU4、...、FUnを持っている。機能ユニットへの要求は既知の方法で解読論理(図示せず)によって命令情報から発せられる。これらの要求はバス123を経てスキャナーブロック1002に送られる。各スキヤナーブロック1002は命令I0からI7をスキャンし、そのサイクルでサービスされるように、対応する機能ユニットの最初の要求を選択する。
複数のレジスタ・ファイル(整数、浮動小数および/またはブール値)の場合、イシュア118は異なるレジスタ・ファイルに格納されたオペランドを持つ命令を発行することができる。例えば、ADD命令は浮動小数レジスタ・ファイルからの第一オペランド、および整数レジスタからの第二のオペランドを持つことができる。一般に、異なるレジスタ・ファイルからのオペランドを持つ命令は高い発行優先順位を与えられる(すなわち、これらの命令は最初に発行される)。この発行手法により、プロセッサの実行時間および機能ユニットのリソースの節約が可能となる。
IEU100に2個のALUが含まれている更なる実施例では、ALUのスキャンは更に複雑になる。実行速度を上げるために、1個のALUスキャナーブロックはI0からI7をスキャンし、もう1個のALUスキャナーブロックはI7からI0をスキャンする。このようにして2個のALU要求が選択される。この方法では、バケット0にあるALU命令の前にバケット1にあるALU命令が発行されることが可能であり、同時にスキャニングの効率の向上が計れる。
スキャナー出力1003はMUXing logic 1004によって選択される。MUX1004の1組のSELect入力1006はバス120を経てTAL122から3個の8ビットベクトル(各オペランドに1個)を受け取る。ベクトルは8個の命令のうちどれが依存性なしの命令で、発行可能な状態にあるかを通知する。イシュア118は命令を発行する前にこの情報を待たなければならない。イシュア118はこれらのベクトルを監視し、これら3個のベクトルの全てが特定の命令に対してハイになると、イシュア118はその命令がレディーであると関知する。必要な機能ユニットがレディーになると、イシュアはその命令を発行して、選択信号をレジスタ・ファイル・ポートMUXesに送り、対応する命令の出力をレジスタ・ファイル117に送ることができる。
本発明の推奨実施例では、イシュア118が済んだ後、イシュア118は各レジスタ・ファイルごとに2個の8ビットベクトルをRRC 112に返しMUXOUTputs1008を通してバス121に送る。これらのベクトルはこのサイクルでどの命令が発行されたかを示し、RPMs 124用のラインを選択するために用いられる。
各レジスタ・ファイルが同時に発行できる命令の最大数は使用可能なレジスタ・ファイル読み出しポートの数で制約されている。データ依存性に先行する未完了の命令があると、命令の発行が抑制されることがある。更に、必要な機能ユニットが別の命令に割り当てられていても、命令の発行が抑制されることがある。
ロード・イミディエイト命令、ブール値オペレーション、および相対的条件分岐のような幾つかの命令は他に依存せずに発行できる。なぜならば、レジスタ・ファイル読み出しポート以外のリソースを必要としない、あるいは依存性を持つ可能性がないからである。
RRC 112の最後のセクションはレジスタ・ファイル・ポートMUX(RPM)セクション124である。RPMs124の役割は、イシュア118がレジスタ・ファイル117からデータを取得して各命令が使用できるような方法を提供することである。RPMs 124はバス126を経てタグ情報を受け取り、RPMs 124用の選択ラインは121を経てイシュア118から、またコンピュータのIEU制御論理からも得られる。選択されたタグは、バス128を用いてレジスタ・ファイル117の所定の1組のポート119に送られる読み出しアドレスで構成されている。
RPMs 124の数とデザインはレジスタ・ファイルの数、および各レジスタ・ファイル上のポートの数に依存する。図4にRPMs 124の一実施例を示す。この実施例において、RPMs 124は3個のレジスタ・ポート・ファイルMUXes、402、404および406で構成されている。MUX 402はTAL 122によって生成されたソース・レジスタ・フィールドS1に対応する命令0-7のタグを入力として受け取る。MUX 404はTAL 122によって生成されたソース・レジスタ・フィールドS2に対応する命令0-7のタグを入力として受け取る。MUX 406はTAL122によって生成されたソース/行き先レジスタ・フィールドS/Dに対応する命令0-7のタグを入力として受け取る。MUXes 402,404,および406の出力はバス128を通してレジスタ・ファイル117の読み出しアドレス・ポートに接続される。
RPC112およびイシュア118によって、プロセッサは命令を同時に、しかもプログラムに依る順序とは別の順序で実行できる。本発明で使用されるIEUは同一承継人の、関連特許出願、米国出願番号07/817,810号(代理人整理番号SP015/1397.0280001)に開示されている。この開示はここに参照文献として含まれているものとする。
本発明の様々な実施例を上述したが、これらはあくまでも例であり、本発明を制限するものではないことは無論である。従って、本発明の範囲および広がりは上記の実施例で制限されるものではなく、下記の特許請求範囲およびそれと同等のものによってのみ定義されるものである。
Claims (9)
- 読取りアドレス・ポートによってアクセスされるレジスタファイル及び一時バッファを有する命令実行ユニットを含むコンピュータ内での使用に適応させたコンピュータ命令セットを実行し、命令オペランドを記憶するためのレジスタ名称変更方法であって、該方法は、
(1)命令ウィンドウ内の命令相互間でのデータ依存関係を決定する段階と、
(2)決定した命令相互間でのデータ依存関係に基づき、他の命令の出力データとの依存関係がない命令のオペランドには、データ依存関係がないことを示す情報とレジスタファイルアドレスを有するタグを割り当て、
他の命令の出力データとの依存関係がある命令のオペランドには、依存関係があることを示す情報と前記依存関係のある命令の出力データが一時記憶される一時バッファのアドレスを有するタグを割り当てる段階と、
(3)各命令の前記タグと各機能ユニットに関する情報を参照して命令が発行可能か否か判断し、発行可能な命令を発行する段階と、
(4)前記タグの示すレジスタファイルのアドレスまたは一時バッファのアドレスに格納されているデータを読み出して命令を実行し、順序通りに実行された結果をレジスタファイルに記憶させ、順不同に実行された結果を一時バッファに記憶させる段階と、
によって構成されることを特徴とするレジスタ名称変更方法。 - 前記データ依存関係を決定する段階が、各命令のソースレジスタ・フィールドのアドレスを宛先レジスタ・フィールドのアドレスと比較する段階を含むことを特徴とする請求項1記載のレジスタ名称変更方法。
- 命令セットの実行が完了したあと、前記一時バッファ内の順不同の実行結果を順序通りにレジスタ・ファイルへ送る段階を含むことを特徴とする請求項1記載のレジスタ名称変更方法。
- 命令ウィンドウ内の命令の順序にもとづいて、前記一時バッファ内の前記実行結果を順序通りにレジスタ・ファイルへ転送する段階を含むことを特徴とする請求項1記載のレジスタ名称変更方法。
- 実行が完了した命令のグループを前記一時バッファから前記レジスタ・ファイルへ同時に転送する段階を含むことを特徴とする請求項4記載のレジスタ名称変更方法。
- すべての先行する命令について実行が完了したとき、実行結果を前記一時バッファから前記レジスタ・ファイルへ転送する段階を含むことを特徴とする請求項5記載のレジスタ名称変更方法。
- 読取りアドレス・ポートによってアクセスされるレジスタファイル及び一時バッファを有する命令実行ユニットを含むコンピュータ内で用いるよう適応させた命令ウィンドウ内のRISC命令セットのためのレジスタ名称変更システムであって、該システムが、
(a)命令ウィンドウ内の命令相互間のデータ依存関係を決定するためのデータ依存関係検査手段と、
(b)決定した命令相互間でのデータ依存関係に基づき、他の命令の出力データとの依存関係がない命令のオペランドには、データ依存関係がないことを示す情報とレジスタファイルアドレスを有するタグを割り当て、
他の命令の出力データとの依存関係がある命令のオペランドには、依存関係があることを示す情報と前記依存関係のある命令の出力データが一時記憶される一時バッファのアドレスを有するタグを割り当てるための手段と、
(c)各命令の前記タグと各機能ユニットに関する情報を参照して命令が発行可能か否か判断し、発行可能な命令を発行する手段と、
(d)前記タグの示すレジスタファイルのアドレスまたは一時バッファのアドレスに格納されているデータを読み出して命令を実行し、順序通りに実行された結果をレジスタファイルに記憶させ、順不同に実行された結果を一時バッファに記憶させる手段と、
によって構成されることを特徴とするレジスタ名称変更システム。 - 前記データ依存関係検査手段が、各命令のソースレジスタ・フィールドのアドレスを、宛先レジスタ・フィールドのアドレスと比較することによって、前記データ依存関係を決定することを特徴とする請求項7記載のレジスタ名称変更システム。
- 命令セットの実行が完了したあと、順不同の実行結果を前記一時バッファから前記レジスタ・ファイルに順序通りに送るための手段を含むことを特徴とする請求項7記載のレジスタ名称変更システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US86071992A | 1992-03-31 | 1992-03-31 | |
US860,719 | 1992-03-31 | ||
PCT/JP1993/000375 WO1993020505A2 (en) | 1992-03-31 | 1993-03-26 | Superscalar risc instruction scheduling |
Related Child Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000008144A Division JP3571263B2 (ja) | 1992-03-31 | 2000-01-17 | レジスタ名称変更システム |
JP2000008148A Division JP3571266B2 (ja) | 1992-03-31 | 2000-01-17 | スーパースカラプロセッサ |
JP2000008146A Division JP3571265B2 (ja) | 1992-03-31 | 2000-01-17 | コンピュータシステム |
JP2000008145A Division JP3571264B2 (ja) | 1992-03-31 | 2000-01-17 | レジスタ名称変更システム及び名称変更方法 |
JP2000008147A Division JP2000148487A (ja) | 1992-03-31 | 2000-01-17 | 命令実行方法 |
JP2000008149A Division JP3571267B2 (ja) | 1992-03-31 | 2000-01-17 | コンピュータシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07505494A JPH07505494A (ja) | 1995-06-15 |
JP3730252B2 true JP3730252B2 (ja) | 2005-12-21 |
Family
ID=25333867
Family Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51729393A Expired - Lifetime JP3730252B2 (ja) | 1992-03-31 | 1993-03-26 | レジスタ名称変更方法及び名称変更システム |
JP2000008148A Expired - Lifetime JP3571266B2 (ja) | 1992-03-31 | 2000-01-17 | スーパースカラプロセッサ |
JP2000008144A Expired - Lifetime JP3571263B2 (ja) | 1992-03-31 | 2000-01-17 | レジスタ名称変更システム |
JP2000008147A Withdrawn JP2000148487A (ja) | 1992-03-31 | 2000-01-17 | 命令実行方法 |
JP2000008146A Expired - Lifetime JP3571265B2 (ja) | 1992-03-31 | 2000-01-17 | コンピュータシステム |
JP2000008149A Expired - Lifetime JP3571267B2 (ja) | 1992-03-31 | 2000-01-17 | コンピュータシステム |
JP2000008145A Expired - Lifetime JP3571264B2 (ja) | 1992-03-31 | 2000-01-17 | レジスタ名称変更システム及び名称変更方法 |
Family Applications After (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000008148A Expired - Lifetime JP3571266B2 (ja) | 1992-03-31 | 2000-01-17 | スーパースカラプロセッサ |
JP2000008144A Expired - Lifetime JP3571263B2 (ja) | 1992-03-31 | 2000-01-17 | レジスタ名称変更システム |
JP2000008147A Withdrawn JP2000148487A (ja) | 1992-03-31 | 2000-01-17 | 命令実行方法 |
JP2000008146A Expired - Lifetime JP3571265B2 (ja) | 1992-03-31 | 2000-01-17 | コンピュータシステム |
JP2000008149A Expired - Lifetime JP3571267B2 (ja) | 1992-03-31 | 2000-01-17 | コンピュータシステム |
JP2000008145A Expired - Lifetime JP3571264B2 (ja) | 1992-03-31 | 2000-01-17 | レジスタ名称変更システム及び名称変更方法 |
Country Status (6)
Country | Link |
---|---|
US (7) | US5497499A (ja) |
EP (1) | EP0636256B1 (ja) |
JP (7) | JP3730252B2 (ja) |
KR (3) | KR950701101A (ja) |
DE (1) | DE69311330T2 (ja) |
WO (1) | WO1993020505A2 (ja) |
Families Citing this family (140)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
DE4237417C2 (de) * | 1992-03-25 | 1997-01-30 | Hewlett Packard Co | Datenverarbeitungssystem |
US5452401A (en) * | 1992-03-31 | 1995-09-19 | Seiko Epson Corporation | Selective power-down for high performance CPU/system |
US5371684A (en) * | 1992-03-31 | 1994-12-06 | Seiko Epson Corporation | Semiconductor floor plan for a register renaming circuit |
DE69311330T2 (de) * | 1992-03-31 | 1997-09-25 | Seiko Epson Corp | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
DE69308548T2 (de) * | 1992-05-01 | 1997-06-12 | Seiko Epson Corp | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. |
DE69330889T2 (de) | 1992-12-31 | 2002-03-28 | Seiko Epson Corp | System und Verfahren zur Änderung der Namen von Registern |
US5628021A (en) * | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
US5465373A (en) * | 1993-01-08 | 1995-11-07 | International Business Machines Corporation | Method and system for single cycle dispatch of multiple instructions in a superscalar processor system |
JP3417984B2 (ja) * | 1993-09-10 | 2003-06-16 | 株式会社日立製作所 | キャッシュ競合削減コンパイル方法 |
JPH0793152A (ja) * | 1993-09-20 | 1995-04-07 | Fujitsu Ltd | マイクロプロセッサ制御装置 |
US5481743A (en) * | 1993-09-30 | 1996-01-02 | Apple Computer, Inc. | Minimal instruction set computer architecture and multiple instruction issue method |
US6073231A (en) * | 1993-10-18 | 2000-06-06 | Via-Cyrix, Inc. | Pipelined processor with microcontrol of register translation hardware |
DE69408769T2 (de) | 1993-10-18 | 1998-07-09 | Cyrix Corp | Fliessbandsteuerung und Registerübersetzung in Mikroprozessor |
US5630149A (en) * | 1993-10-18 | 1997-05-13 | Cyrix Corporation | Pipelined processor with register renaming hardware to accommodate multiple size registers |
US6138230A (en) * | 1993-10-18 | 2000-10-24 | Via-Cyrix, Inc. | Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline |
JP3299611B2 (ja) * | 1993-10-20 | 2002-07-08 | 松下電器産業株式会社 | 資源割付装置 |
US5918046A (en) * | 1994-01-03 | 1999-06-29 | Intel Corporation | Method and apparatus for a branch instruction pointer table |
JP3311462B2 (ja) * | 1994-02-23 | 2002-08-05 | 富士通株式会社 | コンパイル処理装置 |
US5689693A (en) * | 1994-04-26 | 1997-11-18 | Advanced Micro Devices, Inc. | Range finding circuit for selecting a consecutive sequence of reorder buffer entries using circular carry lookahead |
US5559975A (en) * | 1994-06-01 | 1996-09-24 | Advanced Micro Devices, Inc. | Program counter update mechanism |
US5625789A (en) * | 1994-10-24 | 1997-04-29 | International Business Machines Corporation | Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle |
US5675758A (en) * | 1994-11-15 | 1997-10-07 | Advanced Micro Devices, Inc. | Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations |
US6237082B1 (en) | 1995-01-25 | 2001-05-22 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received |
US5903741A (en) * | 1995-01-25 | 1999-05-11 | Advanced Micro Devices, Inc. | Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions |
US5901302A (en) * | 1995-01-25 | 1999-05-04 | Advanced Micro Devices, Inc. | Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions |
US5878244A (en) * | 1995-01-25 | 1999-03-02 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received |
TW295646B (ja) * | 1995-01-25 | 1997-01-11 | Ibm | |
US5673408A (en) * | 1995-02-14 | 1997-09-30 | Hal Computer Systems, Inc. | Processor structure and method for renamable trap-stack |
WO1996025705A1 (en) * | 1995-02-14 | 1996-08-22 | Fujitsu Limited | Structure and method for high-performance speculative execution processor providing special features |
US6112019A (en) * | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
US5664120A (en) * | 1995-08-25 | 1997-09-02 | International Business Machines Corporation | Method for executing instructions and execution unit instruction reservation table within an in-order completion processor |
US5799165A (en) * | 1996-01-26 | 1998-08-25 | Advanced Micro Devices, Inc. | Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay |
US5765035A (en) * | 1995-11-20 | 1998-06-09 | Advanced Micro Devices, Inc. | Recorder buffer capable of detecting dependencies between accesses to a pair of caches |
US5787026A (en) * | 1995-12-20 | 1998-07-28 | Intel Corporation | Method and apparatus for providing memory access in a processor pipeline |
US5768556A (en) * | 1995-12-22 | 1998-06-16 | International Business Machines Corporation | Method and apparatus for identifying dependencies within a register |
US5826089A (en) * | 1996-01-04 | 1998-10-20 | Advanced Micro Devices, Inc. | Instruction translation unit configured to translate from a first instruction set to a second instruction set |
US5787266A (en) * | 1996-02-20 | 1998-07-28 | Advanced Micro Devices, Inc. | Apparatus and method for accessing special registers without serialization |
US6108769A (en) | 1996-05-17 | 2000-08-22 | Advanced Micro Devices, Inc. | Dependency table for reducing dependency checking hardware |
US5796975A (en) * | 1996-05-24 | 1998-08-18 | Hewlett-Packard Company | Operand dependency tracking system and method for a processor that executes instructions out of order |
US5958042A (en) * | 1996-06-11 | 1999-09-28 | Sun Microsystems, Inc. | Grouping logic circuit in a pipelined superscalar processor |
USRE38599E1 (en) * | 1996-06-11 | 2004-09-21 | Sun Microsystems, Inc. | Pipelined instruction dispatch unit in a superscalar processor |
US5915110A (en) * | 1996-07-26 | 1999-06-22 | Advanced Micro Devices, Inc. | Branch misprediction recovery in a reorder buffer having a future file |
US5872951A (en) * | 1996-07-26 | 1999-02-16 | Advanced Micro Design, Inc. | Reorder buffer having a future file for storing speculative instruction execution results |
US5946468A (en) * | 1996-07-26 | 1999-08-31 | Advanced Micro Devices, Inc. | Reorder buffer having an improved future file for storing speculative instruction execution results |
US5826070A (en) * | 1996-08-30 | 1998-10-20 | International Business Machines Corporation | Apparatus and method for maintaining status flags and condition codes using a renaming technique in an out of order floating point execution unit |
US5983342A (en) * | 1996-09-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Superscalar microprocessor employing a future file for storing results into multiportion registers |
US5926832A (en) * | 1996-09-26 | 1999-07-20 | Transmeta Corporation | Method and apparatus for aliasing memory data in an advanced microprocessor |
US5802386A (en) * | 1996-11-19 | 1998-09-01 | International Business Machines Corporation | Latency-based scheduling of instructions in a superscalar processor |
US5838941A (en) * | 1996-12-30 | 1998-11-17 | Intel Corporation | Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers |
US5978900A (en) * | 1996-12-30 | 1999-11-02 | Intel Corporation | Renaming numeric and segment registers using common general register pool |
WO1998033116A2 (en) * | 1997-01-29 | 1998-07-30 | Advanced Micro Devices, Inc. | A line-oriented reorder buffer for a superscalar microprocessor |
US5983321A (en) * | 1997-03-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache |
US5974538A (en) * | 1997-02-21 | 1999-10-26 | Wilmot, Ii; Richard Byron | Method and apparatus for annotating operands in a computer system with source instruction identifiers |
US5996063A (en) * | 1997-03-03 | 1999-11-30 | International Business Machines Corporation | Management of both renamed and architected registers in a superscalar computer system |
JP2917969B2 (ja) * | 1997-06-06 | 1999-07-12 | 日本電気株式会社 | 論理等価性検証方法および論理等価性検証装置 |
US5784588A (en) * | 1997-06-20 | 1998-07-21 | Sun Microsystems, Inc. | Dependency checking apparatus employing a scoreboard for a pair of register sets having different precisions |
US5790827A (en) * | 1997-06-20 | 1998-08-04 | Sun Microsystems, Inc. | Method for dependency checking using a scoreboard for a pair of register sets having different precisions |
US6263416B1 (en) * | 1997-06-27 | 2001-07-17 | Sun Microsystems, Inc. | Method for reducing number of register file ports in a wide instruction issue processor |
EP1012707B1 (en) * | 1997-08-06 | 2006-07-26 | Advanced Micro Devices, Inc. | A dependency table for reducing dependency checking hardware |
US6112293A (en) * | 1997-11-17 | 2000-08-29 | Advanced Micro Devices, Inc. | Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result |
US6061785A (en) * | 1998-02-17 | 2000-05-09 | International Business Machines Corporation | Data processing system having an apparatus for out-of-order register operations and method therefor |
US6336160B1 (en) | 1998-06-19 | 2002-01-01 | International Business Machines Corporation | Method and system for dividing a computer processor register into sectors and storing frequently used values therein |
US6393552B1 (en) | 1998-06-19 | 2002-05-21 | International Business Machines Corporation | Method and system for dividing a computer processor register into sectors |
US6163839A (en) * | 1998-09-30 | 2000-12-19 | Intel Corporation | Non-stalling circular counterflow pipeline processor with reorder buffer |
EP1004959B1 (en) * | 1998-10-06 | 2018-08-08 | Texas Instruments Incorporated | Processor with pipeline protection |
US6550001B1 (en) * | 1998-10-30 | 2003-04-15 | Intel Corporation | Method and implementation of statistical detection of read after write and write after write hazards |
US6311267B1 (en) | 1998-11-20 | 2001-10-30 | International Business Machines Corporation | Just-in-time register renaming technique |
JP2000163265A (ja) * | 1998-11-30 | 2000-06-16 | Nec Corp | 命令発行回路 |
JP2001092657A (ja) * | 1999-09-22 | 2001-04-06 | Toshiba Corp | 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体 |
US6643762B1 (en) * | 2000-01-24 | 2003-11-04 | Hewlett-Packard Development Company, L.P. | Processing system and method utilizing a scoreboard to detect data hazards between instructions of computer programs |
US6766440B1 (en) * | 2000-02-18 | 2004-07-20 | Texas Instruments Incorporated | Microprocessor with conditional cross path stall to minimize CPU cycle time length |
US6779106B1 (en) | 2000-09-28 | 2004-08-17 | International Business Machines Corporation | Apparatus and method for an enhanced integer divide in an IA64 architecture |
US6912647B1 (en) * | 2000-09-28 | 2005-06-28 | International Business Machines Corportion | Apparatus and method for creating instruction bundles in an explicitly parallel architecture |
US6883165B1 (en) | 2000-09-28 | 2005-04-19 | International Business Machines Corporation | Apparatus and method for avoiding deadlocks in a multithreaded environment |
US6886094B1 (en) | 2000-09-28 | 2005-04-26 | International Business Machines Corporation | Apparatus and method for detecting and handling exceptions |
US6799262B1 (en) * | 2000-09-28 | 2004-09-28 | International Business Machines Corporation | Apparatus and method for creating instruction groups for explicity parallel architectures |
US6782469B1 (en) | 2000-09-29 | 2004-08-24 | Intel Corporation | Runtime critical load/data ordering |
US6760816B1 (en) | 2000-09-29 | 2004-07-06 | Intel Corporation | Critical loads guided data prefetching |
US6662273B1 (en) * | 2000-09-29 | 2003-12-09 | Intel Corporation | Least critical used replacement with critical cache |
JP3729064B2 (ja) | 2000-11-29 | 2005-12-21 | 日本電気株式会社 | データ依存関係検出装置 |
US7844799B2 (en) * | 2000-12-23 | 2010-11-30 | International Business Machines Corporation | Method and system for pipeline reduction |
EP1217514A3 (en) * | 2000-12-23 | 2003-08-13 | International Business Machines Corporation | Method and apparatus for bypassing pipeline stages |
US6862676B1 (en) * | 2001-01-16 | 2005-03-01 | Sun Microsystems, Inc. | Superscalar processor having content addressable memory structures for determining dependencies |
US7203817B2 (en) * | 2001-09-24 | 2007-04-10 | Broadcom Corporation | Power consumption reduction in a pipeline by stalling instruction issue on a load miss |
US6976152B2 (en) * | 2001-09-24 | 2005-12-13 | Broadcom Corporation | Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard |
US7269714B2 (en) | 2001-09-24 | 2007-09-11 | Broadcom Corporation | Inhibiting of a co-issuing instruction in a processor having different pipeline lengths |
US7308563B2 (en) * | 2001-09-28 | 2007-12-11 | Intel Corporation | Dual-target block register allocation |
JP3577052B2 (ja) * | 2002-03-19 | 2004-10-13 | 株式会社東芝 | 命令発行装置及び命令発行方法 |
US20030217249A1 (en) * | 2002-05-20 | 2003-11-20 | The Regents Of The University Of Michigan | Method and apparatus for virtual register renaming to implement an out-of-order processor |
EP1462934A1 (en) * | 2003-03-29 | 2004-09-29 | Deutsche Thomson-Brandt Gmbh | Method and apparatus for forwarding of results |
JP2004318502A (ja) * | 2003-04-16 | 2004-11-11 | Matsushita Electric Ind Co Ltd | 電力制御機能を備えたマイクロプロセッサ及び命令変換装置 |
US7437532B1 (en) | 2003-05-07 | 2008-10-14 | Marvell International Ltd. | Memory mapped register file |
US7430654B2 (en) * | 2003-07-09 | 2008-09-30 | Via Technologies, Inc. | Dynamic instruction dependency monitor and control system |
US7096345B1 (en) | 2003-09-26 | 2006-08-22 | Marvell International Ltd. | Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof |
US7711932B2 (en) * | 2003-12-02 | 2010-05-04 | Intel Corporation | Scalable rename map table recovery |
US20060095732A1 (en) * | 2004-08-30 | 2006-05-04 | Tran Thang M | Processes, circuits, devices, and systems for scoreboard and other processor improvements |
US7487337B2 (en) * | 2004-09-30 | 2009-02-03 | Intel Corporation | Back-end renaming in a continual flow processor pipeline |
KR100725393B1 (ko) * | 2005-05-19 | 2007-06-07 | 삼성전자주식회사 | 자바 가상 머신에서 바이트 코드의 수행 시간을 줄이는시스템 및 방법 |
JP4243271B2 (ja) * | 2005-09-30 | 2009-03-25 | 富士通マイクロエレクトロニクス株式会社 | データ処理装置およびデータ処理方法 |
US7380104B2 (en) * | 2006-04-25 | 2008-05-27 | International Business Machines Corporation | Method and apparatus for back to back issue of dependent instructions in an out of order issue queue |
US7725687B2 (en) * | 2006-06-27 | 2010-05-25 | Texas Instruments Incorporated | Register file bypass with optional results storage and separate predication register file in a VLIW processor |
US8291431B2 (en) * | 2006-08-29 | 2012-10-16 | Qualcomm Incorporated | Dependent instruction thread scheduling |
US7949837B2 (en) * | 2006-10-05 | 2011-05-24 | Waratek Pty Ltd. | Contention detection and resolution |
AU2007304895A1 (en) * | 2006-10-05 | 2008-04-10 | Waratek Pty Limited | Advanced contention detection |
US20080133691A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Contention resolution with echo cancellation |
US20080127214A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Contention detection with counter rollover |
US20080133862A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Contention detection with modified message format |
WO2008040071A1 (en) * | 2006-10-05 | 2008-04-10 | Waratek Pty Limited | Contention detection |
US20080140973A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Contention detection with data consolidation |
US20080250221A1 (en) * | 2006-10-09 | 2008-10-09 | Holt John M | Contention detection with data consolidation |
CN100451953C (zh) * | 2007-03-27 | 2009-01-14 | 威盛电子股份有限公司 | 程序指令调整方法 |
US20110320787A1 (en) * | 2010-06-28 | 2011-12-29 | Qualcomm Incorporated | Indirect Branch Hint |
US8683261B2 (en) | 2011-07-20 | 2014-03-25 | International Business Machines Corporation | Out of order millicode control operation |
JP5786769B2 (ja) | 2012-03-14 | 2015-09-30 | 富士通株式会社 | 名寄支援プログラム、名寄支援方法および名寄支援装置 |
US9996348B2 (en) * | 2012-06-14 | 2018-06-12 | Apple Inc. | Zero cycle load |
US9411584B2 (en) * | 2012-12-29 | 2016-08-09 | Intel Corporation | Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality |
US9766866B2 (en) * | 2013-04-22 | 2017-09-19 | Nvidia Corporation | Techniques for determining instruction dependencies |
US9772827B2 (en) * | 2013-04-22 | 2017-09-26 | Nvidia Corporation | Techniques for determining instruction dependencies |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
US9330432B2 (en) * | 2013-08-19 | 2016-05-03 | Apple Inc. | Queuing system for register file access |
US9612840B2 (en) * | 2014-03-28 | 2017-04-04 | Intel Corporation | Method and apparatus for implementing a dynamic out-of-order processor pipeline |
US11068271B2 (en) | 2014-07-28 | 2021-07-20 | Apple Inc. | Zero cycle move using free list counts |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
GB2563582B (en) | 2017-06-16 | 2020-01-01 | Imagination Tech Ltd | Methods and systems for inter-pipeline data hazard avoidance |
US10540260B2 (en) * | 2018-02-23 | 2020-01-21 | Intel Corporation | Dynamic instruction latency management in SIMD machines |
US11036515B1 (en) | 2019-06-20 | 2021-06-15 | Marvell Asia Pte, Ltd. | System and method for instruction unwinding in an out-of-order processor |
US10996957B1 (en) | 2019-06-20 | 2021-05-04 | Marvell Asia Pte, Ltd. | System and method for instruction mapping in an out-of-order processor |
US11200062B2 (en) | 2019-08-26 | 2021-12-14 | Apple Inc. | History file for previous register mapping storage and last reference indication |
US11416254B2 (en) | 2019-12-05 | 2022-08-16 | Apple Inc. | Zero cycle load bypass in a decode group |
Family Cites Families (228)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3346851A (en) | 1964-07-08 | 1967-10-10 | Control Data Corp | Simultaneous multiprocessing computer system |
US3718912A (en) * | 1970-12-22 | 1973-02-27 | Ibm | Instruction execution unit |
US3789365A (en) * | 1971-06-03 | 1974-01-29 | Bunker Ramo | Processor interrupt system |
US3718851A (en) * | 1971-08-16 | 1973-02-27 | Gen Electric | Means responsive to an overvoltage condition for generating a frequency increasing control signal |
US3771138A (en) | 1971-08-31 | 1973-11-06 | Ibm | Apparatus and method for serializing instructions from two independent instruction streams |
US3913074A (en) | 1973-12-18 | 1975-10-14 | Honeywell Inf Systems | Search processing apparatus |
US4034349A (en) | 1976-01-29 | 1977-07-05 | Sperry Rand Corporation | Apparatus for processing interrupts in microprocessing systems |
US4128880A (en) | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
US4212076A (en) | 1976-09-24 | 1980-07-08 | Giddings & Lewis, Inc. | Digital computer structure providing arithmetic and boolean logic operations, the latter controlling the former |
US4315314A (en) * | 1977-12-30 | 1982-02-09 | Rca Corporation | Priority vectored interrupt having means to supply branch address directly |
US4200927A (en) * | 1978-01-03 | 1980-04-29 | International Business Machines Corporation | Multi-instruction stream branch processing mechanism |
US4228495A (en) | 1978-12-19 | 1980-10-14 | Allen-Bradley Company | Multiprocessor numerical control system |
US4315308A (en) * | 1978-12-21 | 1982-02-09 | Intel Corporation | Interface between a microprocessor chip and peripheral subsystems |
US4296470A (en) | 1979-06-21 | 1981-10-20 | International Business Machines Corp. | Link register storage and restore system for use in an instruction pre-fetch micro-processor interrupt system |
JPS5616248A (en) | 1979-07-17 | 1981-02-17 | Matsushita Electric Ind Co Ltd | Processing system for interruption |
JPS6028015B2 (ja) | 1980-08-28 | 1985-07-02 | 日本電気株式会社 | 情報処理装置 |
US4434461A (en) * | 1980-09-15 | 1984-02-28 | Motorola, Inc. | Microprocessor with duplicate registers for processing interrupts |
JPS5757345A (en) | 1980-09-24 | 1982-04-06 | Toshiba Corp | Data controller |
US4574349A (en) * | 1981-03-30 | 1986-03-04 | International Business Machines Corp. | Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction |
US4814979A (en) * | 1981-04-01 | 1989-03-21 | Teradata Corporation | Network to transmit prioritized subtask pockets to dedicated processors |
JPS57204125A (en) | 1981-06-10 | 1982-12-14 | Hitachi Ltd | Electron-ray drawing device |
US4482950A (en) | 1981-09-24 | 1984-11-13 | Dshkhunian Valery | Single-chip microcomputer |
US4498134A (en) * | 1982-01-26 | 1985-02-05 | Hughes Aircraft Company | Segregator functional plane for use in a modular array processor |
JPS58151655A (ja) | 1982-03-03 | 1983-09-08 | Fujitsu Ltd | 情報処理装置 |
JPS5932045A (ja) | 1982-08-16 | 1984-02-21 | Hitachi Ltd | 情報処理装置 |
US4500963A (en) * | 1982-11-29 | 1985-02-19 | The United States Of America As Represented By The Secretary Of The Army | Automatic layout program for hybrid microcircuits (HYPAR) |
US4597054A (en) | 1982-12-02 | 1986-06-24 | Ncr Corporation | Arbiter circuit and method |
US4594655A (en) | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
US4807115A (en) | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
GB8329509D0 (en) | 1983-11-04 | 1983-12-07 | Inmos Ltd | Computer |
JPS60120439A (ja) * | 1983-12-05 | 1985-06-27 | Nec Corp | 演算処理装置 |
US4561051A (en) | 1984-02-10 | 1985-12-24 | Prime Computer, Inc. | Memory access method and apparatus in multiple processor systems |
JPS60225943A (ja) | 1984-04-25 | 1985-11-11 | Hitachi Ltd | 例外割込み処理方式 |
US4648045A (en) * | 1984-05-23 | 1987-03-03 | The Board Of Trustees Of The Leland Standford Jr. University | High speed memory and processor system for raster display |
JPS6140650A (ja) * | 1984-08-02 | 1986-02-26 | Nec Corp | マイクロコンピユ−タ |
US4775927A (en) | 1984-10-31 | 1988-10-04 | International Business Machines Corporation | Processor including fetch operation for branch instruction with control tag |
US4991081A (en) * | 1984-10-31 | 1991-02-05 | Texas Instruments Incorporated | Cache memory addressable by both physical and virtual addresses |
JPH0652784B2 (ja) | 1984-12-07 | 1994-07-06 | 富士通株式会社 | ゲートアレイ集積回路装置及びその製造方法 |
US4829467A (en) | 1984-12-21 | 1989-05-09 | Canon Kabushiki Kaisha | Memory controller including a priority order determination circuit |
US5255384A (en) | 1985-02-22 | 1993-10-19 | Intergraph Corporation | Memory address translation system having modifiable and non-modifiable translation mechanisms |
US4714994A (en) | 1985-04-30 | 1987-12-22 | International Business Machines Corp. | Instruction prefetch buffer control |
JPH0762823B2 (ja) | 1985-05-22 | 1995-07-05 | 株式会社日立製作所 | デ−タ処理装置 |
US4613941A (en) | 1985-07-02 | 1986-09-23 | The United States Of America As Represented By The Secretary Of The Army | Routing method in computer aided customization of a two level automated universal array |
US4945479A (en) | 1985-07-31 | 1990-07-31 | Unisys Corporation | Tightly coupled scientific processing system |
US4777588A (en) | 1985-08-30 | 1988-10-11 | Advanced Micro Devices, Inc. | General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance |
US4722049A (en) | 1985-10-11 | 1988-01-26 | Unisys Corporation | Apparatus for out-of-order program execution |
US4719569A (en) * | 1985-10-11 | 1988-01-12 | Sun Microsystems, Inc. | Arbitrator for allocating access to data processing resources |
JPS62152043A (ja) | 1985-12-26 | 1987-07-07 | Nec Corp | 命令コ−ドアクセス制御方式 |
DE3751503T2 (de) | 1986-03-26 | 1996-05-09 | Hitachi Ltd | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. |
JP2545789B2 (ja) | 1986-04-14 | 1996-10-23 | 株式会社日立製作所 | 情報処理装置 |
US4903196A (en) * | 1986-05-02 | 1990-02-20 | International Business Machines Corporation | Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor |
US4811208A (en) | 1986-05-16 | 1989-03-07 | Intel Corporation | Stack frame cache on a microprocessor chip |
JP2684362B2 (ja) | 1986-06-18 | 1997-12-03 | 株式会社日立製作所 | 可変長データの記憶方式 |
US4814978A (en) * | 1986-07-15 | 1989-03-21 | Dataflow Computer Corporation | Dataflow processing element, multiprocessor, and processes |
JPS6324428A (ja) * | 1986-07-17 | 1988-02-01 | Mitsubishi Electric Corp | キヤツシユメモリ |
US4766566A (en) | 1986-08-18 | 1988-08-23 | International Business Machines Corp. | Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing |
JPS6393041A (ja) | 1986-10-07 | 1988-04-23 | Mitsubishi Electric Corp | 計算機 |
US4841453A (en) | 1986-11-10 | 1989-06-20 | Ibm Corporation | Multidirectional scan and print capability |
JPH0793358B2 (ja) | 1986-11-10 | 1995-10-09 | 日本電気株式会社 | ブロック配置処理方式 |
JPS63131230A (ja) * | 1986-11-21 | 1988-06-03 | Hitachi Ltd | 情報処理装置 |
JPH0810430B2 (ja) | 1986-11-28 | 1996-01-31 | 株式会社日立製作所 | 情報処理装置 |
US5283903A (en) * | 1986-12-25 | 1994-02-01 | Nec Corporation | Priority selector |
US5226170A (en) | 1987-02-24 | 1993-07-06 | Digital Equipment Corporation | Interface between processor and special instruction processor in digital data processing system |
US5179689A (en) * | 1987-03-13 | 1993-01-12 | Texas Instruments Incorporated | Dataprocessing device with instruction cache |
US4833599A (en) | 1987-04-20 | 1989-05-23 | Multiflow Computer, Inc. | Hierarchical priority branch handling for parallel execution in a parallel processor |
US4858116A (en) | 1987-05-01 | 1989-08-15 | Digital Equipment Corporation | Method and apparatus for managing multiple lock indicators in a multiprocessor computer system |
US4811296A (en) | 1987-05-15 | 1989-03-07 | Analog Devices, Inc. | Multi-port register file with flow-through of data |
JPH07113903B2 (ja) * | 1987-06-26 | 1995-12-06 | 株式会社日立製作所 | キャッシュ記憶制御方式 |
US4992938A (en) * | 1987-07-01 | 1991-02-12 | International Business Machines Corporation | Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers |
US5134561A (en) | 1987-07-20 | 1992-07-28 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
US4901233A (en) * | 1987-07-20 | 1990-02-13 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
US5150309A (en) | 1987-08-04 | 1992-09-22 | Texas Instruments Incorporated | Comprehensive logic circuit layout system |
US4980817A (en) | 1987-08-31 | 1990-12-25 | Digital Equipment | Vector register system for executing plural read/write commands concurrently and independently routing data to plural read/write ports |
US4991078A (en) * | 1987-09-29 | 1991-02-05 | Digital Equipment Corporation | Apparatus and method for a pipelined central processing unit in a data processing system |
EP0312764A3 (en) | 1987-10-19 | 1991-04-10 | International Business Machines Corporation | A data processor having multiple execution units for processing plural classes of instructions in parallel |
US5089951A (en) * | 1987-11-05 | 1992-02-18 | Kabushiki Kaisha Toshiba | Microcomputer incorporating memory |
US5197136A (en) * | 1987-11-12 | 1993-03-23 | Matsushita Electric Industrial Co., Ltd. | Processing system for branch instruction |
US4823201A (en) * | 1987-11-16 | 1989-04-18 | Technology, Inc. 64 | Processor for expanding a compressed video signal |
US5185878A (en) * | 1988-01-20 | 1993-02-09 | Advanced Micro Device, Inc. | Programmable cache memory as well as system incorporating same and method of operating programmable cache memory |
US4926323A (en) | 1988-03-03 | 1990-05-15 | Advanced Micro Devices, Inc. | Streamlined instruction processor |
JPH01228865A (ja) | 1988-03-09 | 1989-09-12 | Minolta Camera Co Ltd | プリンタ制御装置 |
US5187796A (en) * | 1988-03-29 | 1993-02-16 | Computer Motion, Inc. | Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units |
US5301278A (en) * | 1988-04-29 | 1994-04-05 | International Business Machines Corporation | Flexible dynamic memory controller |
US5003462A (en) * | 1988-05-31 | 1991-03-26 | International Business Machines Corporation | Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means |
US4897810A (en) * | 1988-06-13 | 1990-01-30 | Advanced Micro Devices, Inc. | Asynchronous interrupt status bit circuit |
US5261057A (en) | 1988-06-30 | 1993-11-09 | Wang Laboratories, Inc. | I/O bus to system interface |
US5097409A (en) * | 1988-06-30 | 1992-03-17 | Wang Laboratories, Inc. | Multi-processor system with cache memories |
JP2761506B2 (ja) | 1988-07-08 | 1998-06-04 | 株式会社日立製作所 | 主記憶制御装置 |
US5032985A (en) | 1988-07-21 | 1991-07-16 | International Business Machines Corporation | Multiprocessor system with memory fetch buffer invoked during cross-interrogation |
US5148536A (en) | 1988-07-25 | 1992-09-15 | Digital Equipment Corporation | Pipeline having an integral cache which processes cache misses and loads data in parallel |
US5291615A (en) | 1988-08-11 | 1994-03-01 | Kabushiki Kaisha Toshiba | Instruction pipeline microprocessor |
JPH0673105B2 (ja) | 1988-08-11 | 1994-09-14 | 株式会社東芝 | 命令パイプライン方式のマイクロプロセッサ |
US4974155A (en) | 1988-08-15 | 1990-11-27 | Evans & Sutherland Computer Corp. | Variable delay branch system |
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
US5167035A (en) | 1988-09-08 | 1992-11-24 | Digital Equipment Corporation | Transferring messages between nodes in a network |
EP0365188B1 (en) * | 1988-10-18 | 1996-09-18 | Hewlett-Packard Company | Central processor condition code method and apparatus |
JP2810068B2 (ja) | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
JPH0769811B2 (ja) | 1988-12-21 | 1995-07-31 | 松下電器産業株式会社 | データ処理装置 |
US5148533A (en) | 1989-01-05 | 1992-09-15 | Bull Hn Information Systems Inc. | Apparatus and method for data group coherency in a tightly coupled data processing system with plural execution and data cache units |
US5125092A (en) | 1989-01-09 | 1992-06-23 | International Business Machines Corporation | Method and apparatus for providing multiple condition code fields to to allow pipelined instructions contention free access to separate condition codes |
JP2736092B2 (ja) * | 1989-01-10 | 1998-04-02 | 株式会社東芝 | バッファ装置 |
US5127091A (en) | 1989-01-13 | 1992-06-30 | International Business Machines Corporation | System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor |
US5222223A (en) | 1989-02-03 | 1993-06-22 | Digital Equipment Corporation | Method and apparatus for ordering and queueing multiple memory requests |
US5167026A (en) | 1989-02-03 | 1992-11-24 | Digital Equipment Corporation | Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers |
US5067069A (en) * | 1989-02-03 | 1991-11-19 | Digital Equipment Corporation | Control of multiple functional units with parallel operation in a microcoded execution unit |
US4985825A (en) * | 1989-02-03 | 1991-01-15 | Digital Equipment Corporation | System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer |
US5142634A (en) | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
US5125083A (en) | 1989-02-03 | 1992-06-23 | Digital Equipment Corporation | Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system |
US5142633A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Preprocessing implied specifiers in a pipelined processor |
US5109495A (en) * | 1989-02-03 | 1992-04-28 | Digital Equipment Corp. | Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor |
US5133074A (en) | 1989-02-08 | 1992-07-21 | Acer Incorporated | Deadlock resolution with cache snooping |
US5226166A (en) | 1989-02-10 | 1993-07-06 | Mitsubishi Denki K.K. | Parallel operation processor with second command unit |
US5293500A (en) * | 1989-02-10 | 1994-03-08 | Mitsubishi Denki K.K. | Parallel processing method and apparatus |
US5768575A (en) | 1989-02-24 | 1998-06-16 | Advanced Micro Devices, Inc. | Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions |
US5226126A (en) | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
US5119485A (en) | 1989-05-15 | 1992-06-02 | Motorola, Inc. | Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation |
US5155809A (en) * | 1989-05-17 | 1992-10-13 | International Business Machines Corp. | Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware |
US5072364A (en) | 1989-05-24 | 1991-12-10 | Tandem Computers Incorporated | Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel |
JPH02308330A (ja) * | 1989-05-23 | 1990-12-21 | Nec Corp | 知識情報処理装置 |
CA2016068C (en) * | 1989-05-24 | 2000-04-04 | Robert W. Horst | Multiple instruction issue computer architecture |
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 |
US5129067A (en) | 1989-06-06 | 1992-07-07 | Advanced Micro Devices, Inc. | Multiple instruction decoder for minimizing register port requirements |
JP2550213B2 (ja) * | 1989-07-07 | 1996-11-06 | 株式会社日立製作所 | 並列処理装置および並列処理方法 |
JPH07120284B2 (ja) | 1989-09-04 | 1995-12-20 | 三菱電機株式会社 | データ処理装置 |
US5303382A (en) * | 1989-09-21 | 1994-04-12 | Digital Equipment Corporation | Arbiter with programmable dynamic request prioritization |
US5179530A (en) * | 1989-11-03 | 1993-01-12 | Zoran Corporation | Architecture for integrated concurrent vector signal processor |
EP0429733B1 (en) | 1989-11-17 | 1999-04-28 | Texas Instruments Incorporated | Multiprocessor with crossbar between processors and memories |
US5226125A (en) | 1989-11-17 | 1993-07-06 | Keith Balmer | Switch matrix having integrated crosspoint logic and method of operation |
US5487156A (en) * | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
JPH03186928A (ja) * | 1989-12-16 | 1991-08-14 | Mitsubishi Electric Corp | データ処理装置 |
US5179673A (en) * | 1989-12-18 | 1993-01-12 | Digital Equipment Corporation | Subroutine return prediction mechanism using ring buffer and comparing predicated address with actual address to validate or flush the pipeline |
US5197130A (en) | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
JPH063583B2 (ja) * | 1990-01-11 | 1994-01-12 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | 命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法 |
US5251306A (en) * | 1990-01-16 | 1993-10-05 | Advanced Micro Devices, Inc. | Apparatus for controlling execution of a program in a computing device |
JPH061463B2 (ja) | 1990-01-16 | 1994-01-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチプロセッサ・システムおよびそのプライベート・キャッシュ制御方法 |
US5222240A (en) | 1990-02-14 | 1993-06-22 | Intel Corporation | Method and apparatus for delaying writing back the results of instructions to a processor |
US5241636A (en) | 1990-02-14 | 1993-08-31 | Intel Corporation | Method for parallel instruction execution in a computer |
US5230068A (en) | 1990-02-26 | 1993-07-20 | Nexgen Microsystems | Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence |
US5185872A (en) * | 1990-02-28 | 1993-02-09 | Intel Corporation | System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy |
US5120083A (en) | 1990-03-19 | 1992-06-09 | Henkels & Mccoy, Inc. | Expansion joint for conduit for cables |
JP2818249B2 (ja) | 1990-03-30 | 1998-10-30 | 株式会社東芝 | 電子計算機 |
IT1247640B (it) | 1990-04-26 | 1994-12-28 | St Microelectronics Srl | Operazioni booleane tra due qualsiasi bit di due qualsiasi registri |
US5201056A (en) * | 1990-05-02 | 1993-04-06 | Motorola, Inc. | RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output |
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 |
EP0457403B1 (en) | 1990-05-18 | 1998-01-21 | Koninklijke Philips Electronics N.V. | Multilevel instruction cache and method for using said cache |
US5249286A (en) | 1990-05-29 | 1993-09-28 | National Semiconductor Corporation | Selectively locking memory locations within a microprocessor's on-chip cache |
WO1991020031A1 (en) * | 1990-06-11 | 1991-12-26 | Supercomputer Systems Limited Partnership | Method for optimizing instruction scheduling |
CA2038264C (en) | 1990-06-26 | 1995-06-27 | Richard James Eickemeyer | In-memory preprocessor for a scalable compound instruction set machine processor |
CA2045773A1 (en) | 1990-06-29 | 1991-12-30 | Compaq Computer Corporation | Byte-compare operation for high-performance processor |
US5778423A (en) * | 1990-06-29 | 1998-07-07 | Digital Equipment Corporation | Prefetch instruction for improving performance in reduced instruction set processor |
US5155843A (en) | 1990-06-29 | 1992-10-13 | Digital Equipment Corporation | Error transition mode for multi-processor system |
US5197132A (en) * | 1990-06-29 | 1993-03-23 | Digital Equipment Corporation | Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery |
EP0463965B1 (en) * | 1990-06-29 | 1998-09-09 | Digital Equipment Corporation | Branch prediction unit for high-performance processor |
EP0468831B1 (en) | 1990-06-29 | 1997-10-15 | Digital Equipment Corporation | Bus protocol for write-back cache processor |
JPH0480823A (ja) * | 1990-07-23 | 1992-03-13 | Nec Corp | 機械語命令列変換方式 |
JP3035324B2 (ja) | 1990-09-03 | 2000-04-24 | 日本電信電話株式会社 | 衛星スピン軸変更方法 |
USH1291H (en) | 1990-12-20 | 1994-02-01 | Hinton Glenn J | Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions |
US5222244A (en) * | 1990-12-20 | 1993-06-22 | Intel Corporation | Method of modifying a microinstruction with operands specified by an instruction held in an alias register |
US5303362A (en) * | 1991-03-20 | 1994-04-12 | Digital Equipment Corporation | Coupled memory multiprocessor computer system including cache coherency management protocols |
US5261071A (en) * | 1991-03-21 | 1993-11-09 | Control Data System, Inc. | Dual pipe cache memory with out-of-order issue capability |
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 |
US5488729A (en) * | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
US5355457A (en) * | 1991-05-21 | 1994-10-11 | Motorola, Inc. | Data processor for performing simultaneous instruction retirement and backtracking |
US5630157A (en) | 1991-06-13 | 1997-05-13 | International Business Machines Corporation | Computer organization for multiple and out-of-order execution of condition code testing and setting instructions |
US5278963A (en) * | 1991-06-21 | 1994-01-11 | International Business Machines Corporation | Pretranslation of virtual addresses prior to page crossing |
US5826055A (en) | 1991-07-08 | 1998-10-20 | Seiko Epson Corporation | System and method for retiring instructions in a superscalar microprocessor |
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
JP3316851B2 (ja) | 1991-07-08 | 2002-08-19 | セイコーエプソン株式会社 | シングル・チップ・ページ・プリンタ・コントローラ |
US5961629A (en) | 1991-07-08 | 1999-10-05 | Seiko Epson Corporation | High performance, superscalar-based computer system with out-of-order instruction execution |
US5440752A (en) | 1991-07-08 | 1995-08-08 | Seiko Epson Corporation | Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU |
US5539911A (en) | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
DE69231762T2 (de) | 1991-07-08 | 2001-07-26 | Seiko Epson Corp | Risc-prozessor mit dehnbarer architektur |
ATE188786T1 (de) * | 1991-07-08 | 2000-01-15 | Seiko Epson Corp | Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus |
US5345569A (en) * | 1991-09-20 | 1994-09-06 | Advanced Micro Devices, Inc. | Apparatus and method for resolving dependencies among a plurality of instructions within a storage device |
GB2260628A (en) | 1991-10-11 | 1993-04-21 | Intel Corp | Line buffer for cache memory |
JPH0820949B2 (ja) | 1991-11-26 | 1996-03-04 | 松下電器産業株式会社 | 情報処理装置 |
US5285527A (en) * | 1991-12-11 | 1994-02-08 | Northern Telecom Limited | Predictive historical cache memory |
US5617554A (en) | 1992-02-10 | 1997-04-01 | Intel Corporation | Physical address size selection and page size selection in an address translator |
US5398330A (en) * | 1992-03-05 | 1995-03-14 | Seiko Epson Corporation | Register file backup queue |
JPH07504773A (ja) | 1992-03-18 | 1995-05-25 | セイコーエプソン株式会社 | マルチ幅のメモリ・サブシステムをサポートするためのシステム並びに方法 |
DE69311330T2 (de) * | 1992-03-31 | 1997-09-25 | Seiko Epson Corp | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
US5371684A (en) * | 1992-03-31 | 1994-12-06 | Seiko Epson Corporation | Semiconductor floor plan for a register renaming circuit |
DE69308548T2 (de) | 1992-05-01 | 1997-06-12 | Seiko Epson Corp | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. |
US5442756A (en) * | 1992-07-31 | 1995-08-15 | Intel Corporation | Branch prediction and resolution apparatus for a superscalar computer processor |
US5619668A (en) * | 1992-08-10 | 1997-04-08 | Intel Corporation | Apparatus for register bypassing in a microprocessor |
US6735685B1 (en) | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US5524225A (en) | 1992-12-18 | 1996-06-04 | Advanced Micro Devices Inc. | Cache system and method for providing software controlled writeback |
US5628021A (en) | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
US5604912A (en) | 1992-12-31 | 1997-02-18 | Seiko Epson Corporation | System and method for assigning tags to instructions to control instruction execution |
DE69330889T2 (de) | 1992-12-31 | 2002-03-28 | Seiko Epson Corp | System und Verfahren zur Änderung der Namen von Registern |
US5627984A (en) | 1993-03-31 | 1997-05-06 | Intel Corporation | Apparatus and method for entry allocation for a buffer resource utilizing an internal two cycle pipeline |
KR100310581B1 (ko) | 1993-05-14 | 2001-12-17 | 피터 엔. 데트킨 | 분기목표버퍼의추측기록메카니즘 |
US5577217A (en) | 1993-05-14 | 1996-11-19 | Intel Corporation | Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions |
JPH0728695A (ja) | 1993-07-08 | 1995-01-31 | Nec Corp | メモリコントローラ |
US5446912A (en) | 1993-09-30 | 1995-08-29 | Intel Corporation | Partial width stalls within register alias table |
US5613132A (en) * | 1993-09-30 | 1997-03-18 | Intel Corporation | Integer and floating point register alias table within processor device |
US5630149A (en) | 1993-10-18 | 1997-05-13 | Cyrix Corporation | Pipelined processor with register renaming hardware to accommodate multiple size registers |
EP0651321B1 (en) | 1993-10-29 | 2001-11-14 | Advanced Micro Devices, Inc. | Superscalar microprocessors |
US5689672A (en) | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
JP3218524B2 (ja) | 1993-12-22 | 2001-10-15 | 村田機械株式会社 | ワークホルダーのはみ出し検出装置 |
US5574935A (en) | 1993-12-29 | 1996-11-12 | Intel Corporation | Superscalar processor with a multi-port reorder buffer |
US5630075A (en) | 1993-12-30 | 1997-05-13 | Intel Corporation | Write combining buffer for sequentially addressed partial line operations originating from a single instruction |
US5619664A (en) * | 1994-01-04 | 1997-04-08 | Intel Corporation | Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms |
US5452426A (en) | 1994-01-04 | 1995-09-19 | Intel Corporation | Coordinating speculative and committed state register source data and immediate source data in a processor |
US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
US5627985A (en) | 1994-01-04 | 1997-05-06 | Intel Corporation | Speculative and committed resource files in an out-of-order processor |
US5577200A (en) | 1994-02-28 | 1996-11-19 | Intel Corporation | Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system |
US5564056A (en) * | 1994-03-01 | 1996-10-08 | Intel Corporation | Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming |
US5625788A (en) | 1994-03-01 | 1997-04-29 | Intel Corporation | Microprocessor with novel instruction for signaling event occurrence and for providing event handling information in response thereto |
US5608885A (en) * | 1994-03-01 | 1997-03-04 | Intel Corporation | Method for handling instructions from a branch prior to instruction decoding in a computer which executes variable-length instructions |
US5630083A (en) | 1994-03-01 | 1997-05-13 | Intel Corporation | Decoder for decoding multiple instructions in parallel |
US5586278A (en) | 1994-03-01 | 1996-12-17 | Intel Corporation | Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor |
US5623628A (en) * | 1994-03-02 | 1997-04-22 | Intel Corporation | Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue |
US5394351A (en) * | 1994-03-11 | 1995-02-28 | Nexgen, Inc. | Optimized binary adder and comparator having an implicit constant for an input |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US5490280A (en) * | 1994-03-31 | 1996-02-06 | Intel Corporation | Apparatus and method for entry allocation for a resource buffer |
US5615126A (en) * | 1994-08-24 | 1997-03-25 | Lsi Logic Corporation | High-speed internal interconnection technique for integrated circuits that reduces the number of signal lines through multiplexing |
US5819101A (en) | 1994-12-02 | 1998-10-06 | Intel Corporation | Method for packing a plurality of packed data elements in response to a pack instruction |
CN100412786C (zh) * | 1994-12-02 | 2008-08-20 | 英特尔公司 | 可以对复合操作数进行压缩操作的微处理器 |
US5666494A (en) | 1995-03-31 | 1997-09-09 | Samsung Electronics Co., Ltd. | Queue management mechanism which allows entries to be processed in any order |
US6385634B1 (en) | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US5745375A (en) | 1995-09-29 | 1998-04-28 | Intel Corporation | Apparatus and method for controlling power usage |
US5778210A (en) * | 1996-01-11 | 1998-07-07 | Intel Corporation | Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time |
US5832205A (en) * | 1996-08-20 | 1998-11-03 | Transmeta Corporation | Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed |
JP4096132B2 (ja) | 1997-07-24 | 2008-06-04 | 富士ゼロックス株式会社 | 時系列情報の特定区間決定装置、情報蓄積装置および情報蓄積再生装置 |
US6418529B1 (en) | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
JP4054638B2 (ja) | 2002-08-30 | 2008-02-27 | スミダコーポレーション株式会社 | 光ピックアップ |
US7897110B2 (en) | 2005-12-20 | 2011-03-01 | Asml Netherlands B.V. | System and method for detecting at least one contamination species in a lithographic apparatus |
-
1993
- 1993-03-26 DE DE69311330T patent/DE69311330T2/de not_active Expired - Fee Related
- 1993-03-26 WO PCT/JP1993/000375 patent/WO1993020505A2/en active Application Filing
- 1993-03-26 EP EP93906834A patent/EP0636256B1/en not_active Expired - Lifetime
- 1993-03-26 JP JP51729393A patent/JP3730252B2/ja not_active Expired - Lifetime
-
1994
- 1994-03-29 US US08/219,425 patent/US5497499A/en not_active Expired - Lifetime
- 1994-09-28 KR KR1019940703382A patent/KR950701101A/ko not_active IP Right Cessation
-
1996
- 1996-01-31 US US08/594,401 patent/US5737624A/en not_active Expired - Lifetime
-
1997
- 1997-12-15 US US08/990,414 patent/US5974526A/en not_active Expired - Lifetime
-
1999
- 1999-06-10 US US09/329,354 patent/US6289433B1/en not_active Expired - Fee Related
-
2000
- 2000-01-17 JP JP2000008148A patent/JP3571266B2/ja not_active Expired - Lifetime
- 2000-01-17 JP JP2000008144A patent/JP3571263B2/ja not_active Expired - Lifetime
- 2000-01-17 JP JP2000008147A patent/JP2000148487A/ja not_active Withdrawn
- 2000-01-17 JP JP2000008146A patent/JP3571265B2/ja not_active Expired - Lifetime
- 2000-01-17 JP JP2000008149A patent/JP3571267B2/ja not_active Expired - Lifetime
- 2000-01-17 JP JP2000008145A patent/JP3571264B2/ja not_active Expired - Lifetime
- 2000-12-22 KR KR10-2000-7014693A patent/KR100371927B1/ko not_active IP Right Cessation
- 2000-12-22 KR KR10-2000-7014694A patent/KR100371930B1/ko not_active IP Right Cessation
-
2002
- 2002-03-01 US US10/086,197 patent/US7051187B2/en not_active Expired - Fee Related
-
2005
- 2005-10-19 US US11/252,820 patent/US20060041736A1/en not_active Abandoned
-
2007
- 2007-04-02 US US11/730,566 patent/US7802074B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5737624A (en) | 1998-04-07 |
WO1993020505A3 (en) | 1993-11-25 |
US7051187B2 (en) | 2006-05-23 |
US20030005260A1 (en) | 2003-01-02 |
DE69311330D1 (de) | 1997-07-10 |
US7802074B2 (en) | 2010-09-21 |
JP3571264B2 (ja) | 2004-09-29 |
KR100371927B1 (ja) | 2003-02-12 |
KR100371930B1 (ja) | 2003-02-12 |
EP0636256A1 (en) | 1995-02-01 |
US6289433B1 (en) | 2001-09-11 |
JP2000148489A (ja) | 2000-05-30 |
JP2000148488A (ja) | 2000-05-30 |
JP3571263B2 (ja) | 2004-09-29 |
US5497499A (en) | 1996-03-05 |
WO1993020505A2 (en) | 1993-10-14 |
JPH07505494A (ja) | 1995-06-15 |
JP3571267B2 (ja) | 2004-09-29 |
JP2000148487A (ja) | 2000-05-30 |
JP2000148484A (ja) | 2000-05-30 |
US5974526A (en) | 1999-10-26 |
KR950701101A (ko) | 1995-02-20 |
JP2000148485A (ja) | 2000-05-30 |
JP3571265B2 (ja) | 2004-09-29 |
US20080059770A1 (en) | 2008-03-06 |
US20060041736A1 (en) | 2006-02-23 |
EP0636256B1 (en) | 1997-06-04 |
JP2000148486A (ja) | 2000-05-30 |
DE69311330T2 (de) | 1997-09-25 |
JP3571266B2 (ja) | 2004-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3730252B2 (ja) | レジスタ名称変更方法及び名称変更システム | |
US6272617B1 (en) | System and method for register renaming | |
JP3724582B2 (ja) | 命令実行ユニットのためのレジスタ・リネーミング回路 | |
US7523296B2 (en) | System and method for handling exceptions and branch mispredictions in a superscalar microprocessor | |
EP0762270B1 (en) | Microprocessor with load/store operation to/from multiple registers | |
US6192461B1 (en) | Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle | |
US5978900A (en) | Renaming numeric and segment registers using common general register pool | |
US5850563A (en) | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations | |
US6266761B1 (en) | Method and system in an information processing system for efficient maintenance of copies of values stored within registers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050519 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050530 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050822 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051006 |
|
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: 20081014 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091014 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091014 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101014 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101014 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111014 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111014 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121014 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121014 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131014 Year of fee payment: 8 |