JP3717524B2 - ストアおよびロードミス命令を完了するための複数のポインタを備えるロード/ストアユニット - Google Patents
ストアおよびロードミス命令を完了するための複数のポインタを備えるロード/ストアユニット Download PDFInfo
- Publication number
- JP3717524B2 JP3717524B2 JP50596098A JP50596098A JP3717524B2 JP 3717524 B2 JP3717524 B2 JP 3717524B2 JP 50596098 A JP50596098 A JP 50596098A JP 50596098 A JP50596098 A JP 50596098A JP 3717524 B2 JP3717524 B2 JP 3717524B2
- Authority
- JP
- Japan
- Prior art keywords
- load
- store
- instruction
- reorder buffer
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 239000000872 buffer Substances 0.000 claims description 125
- 230000007246 mechanism Effects 0.000 description 21
- 238000011084 recovery Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000000034 method Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000003292 diminished effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
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)
Description
発明の分野
本発明は、スーパースカラマイクロプロセッサの分野に関し、かつより詳細には、分岐予測誤りの回復およびロード/ストアリタイアに関する。
関連技術の説明
スーパースカラマイクロプロセッサは、可能な限り短いクロックサイクルで、複数の命令を同時に実行することにより、高性能を発揮する。本明細書中に使用する、「クロックサイクル」という用語は、スーパースカラマイクロプロセッサが、そのパイプライン内で採用されるさまざまなタスク(命令の処理等)を完了するのに必要とする時間の間隔を指す。高性能スーパースカラマイクロプロセッサにとって重要な2つの特徴は、分岐予測およびアウト・オブ・オーダ(追い越し)実行である。
分岐予測は、ある分岐命令が実行される前に、その分岐命令が選択する方向を投機的に選択するプロセスである。マイクロプロセッサは、順次命令を実行する。すなわち、第1の命令が実行されると、実行される第2の命令は、その第1の命令に隣接するメモリに記憶された命令ということになる。しかしながら分岐命令によって、実行される次の命令が次の順次命令または分岐命令によって特定される他の記憶場所にある命令とすることが可能である。分岐命令により特定される記憶場所は、一般的に、この分岐の「標的」と呼ばれる。どの命令を選択して実行するかは、一般に、その分岐命令がテストする条件による。例示的なテストされる条件は、レジスタに記憶された値であり、そのレジスタが0を含んでいる場合にはその分岐の標的が選択され、かつレジスタが0を含んでいない場合には、次の順次命令が選択される。なお、分岐命令には条件をテストしないものもある。無条件の分岐は、常に標的の経路を選択し、一般に次の順次記憶場所に特定的にコード化される命令はない。
分岐は、コンピュータプログラムにおいて比較的頻繁に発生する。多数の命令を同時に実行し続けるためには、スーパースカラマイクロプロセッサは、キャッシュ分岐命令がどの方向(またはどの「経路」)を選択するかを予測する、すなわち次の順序かまたは標的かを予測するのである。マイクロプロセッサは、そこで、予測した経路にある命令を投機的に実行する。スーパースカラマイクロプロセッサが、分岐命令が選択した経路を「誤って予測」した場合、投機的に実行された結果は廃棄され、正しい経路がフェッチされ実行される。分岐予測のメカニズムについてはさまざまなものが周知である。
分岐命令の予測誤りが発生するため、予測誤り回復機構が必要となる。予測誤り回復機構は、キャッシュから訂正されたフェッチアドレスをフェッチさせ、関連の命令が命令処理パイプラインにディスパッチされるようにする。訂正されたフェッチアドレスは、分岐命令が、次に実行する命令と見つけるために発生するアドレスである。予測誤り回復機構は、比較的少ないクロックサイクルで完了し、予測誤りが判別されるとすぐに正しい命令が実行されるようにする必要がある。一般に、予測誤りが発見されるクロックサイクルと訂正された命令が実行を開始するクロックサイクルとの間のクロックサイクルがアイドルサイクルである。スーパースカラマイクロプロセッサの全体的性能は、同プロセッサが持つ必要があるアイドルサイクルの数だけ劣化する。
スーパースカラマイクロプロセッサは、発展を遂げ、同時に実行する命令の数もますます増大している。しかしながら、分岐命令は引続き同じ頻度でプログラム内に発生する。したがって、スーパースカラマイクロプロセッサが実現する分岐予測スキームでは、所与のクロックサイクルで複数の分岐予測が未決となる可能性がある(すなわち複数の分岐経路を予測しても、これらが関連の分岐を実行することによって有効とならない)。所与のクロックサイクルで複数の分岐命令を実行する可能性がありかつしたがって複数の予測誤りが検出される可能性がある場合、予測誤り回復機構はより複雑なものとなる。しかしながら、比較的少ないクロックサイクルで完了するという予測誤り回復機構の重要性が減じられるわけではない。比較的数の少ないクロックサイクルで完了し、かつ正確に複数の分岐予測誤りを解決することができる予測誤り回復機構が求められている。
分岐予測とともに、スーパースカラマイクロプロセッサの性能を改善することを意図するもう1つの特徴は、追い越し(アウト・オブ・オーダ)実行である。追い越し実行は、プログラムの順序において特定の命令の前にある命令が実行されるクロックサイクルの前のクロックサイクルでその特定の命令を実行するプロセスである。プログラムの順序においてその前の命令により発生される結果に依存しない命令は、その前の命令が実行されるまで、その実行を遅らせる必要がない。この命令はいつかは実行する必要があるので、この命令を、さもなければクロックサイクルにおけるアイドルサイクルとなってしまったかもしれないパイプライン段において実行することにより、性能が向上するという利点がある。
残念ながら、ある種の命令については追い越しで実行することはできない。プログラムは、命令が順序通りに実行されることを仮定しており、したがって追い越し実行は、プログラムに対して透明な態様で採用される必要がある。追い越しで実行できない命令の例としては、データキャッシュおよびストア命令をミス(miss)するロード命令がある。ストア命令は、レジスタを修飾する他の命令と違い、メモリを修飾する。ストア命令が追い越しでデータキャッシュを修飾することは可能とされ、かつその後それに先立つ分岐予測誤りまたは割込によってキャンセルされると、そのデータキャッシュは間違ったデータを含むことになる。したがって、ストア命令は、それに先立つ命令が実行されてしまうまで、データキャッシュまたはメインメモリを修飾することができないようにしなければならず、ストア命令はキャンセルされない。データキャッシュをミスするロード命令も、以下に説明するように、追い越しで実行することができない。
データキャッシュは、スーパースカラマイクロプロセッサと同じシリコン基板上に実現されるかまたはその付近に結合されている。データキャッシュは、メインシステムメモリ(コンピュータシステムにおいて採用された場合)のコピーを記憶するよう構成された高速メモリである。ロードまたはストア命令が、データキャッシュにアクセスすると、このアクセスは「ヒット」または「ミス」のいずれかであることがわかる。アクセスがヒットである場合、関連のデータが現在データキャッシュに記憶されていることになる。アクセスがミスの場合、関連のデータはメインメモリにあることになる。データキャッシュを読出す場合に、ロード命令は追い越しで実行することが可能となる。しかしながら、ロード命令がデータキャッシュをミスする場合、順序に沿って実行する必要がある。さもなければ、ロードミスがメインメモリからの転送を開始しその後キャンセルされる可能性がある。このアクセスが使用する外部バスの帯域幅が無駄になる。さらに、転送されているデータによって、キャッシュからラインが除去されてしまう可能性がある。その除去されたラインが後に必要となった場合に、メインメモリから転送する必要が生じ、外部バスの帯域幅がさらに無駄にされることになる。したがって、データキャッシュミスのロード命令は、追い越しで実行すべきでない。データキャッシュミスであるロード命令およびストア命令を正しく順序決めする機構が必要である。
発明の概要
上にその概略を述べた問題は、本発明に従うロード/ストアユニットおよびリオーダバッファを採用するスーパースカラマイクロプロセッサにより、その大部分が解決される。ロード/ストアユニットは、リタイアの状態にない最も古い未処理(outstanding)の命令を識別する1対のポインタを受ける。ロード/ストアユニットは、これらポインタと、データキャッシュをミスするロード命令およびストア命令のデコーダバッファタグとを比較する。関連の命令がデータキャッシュおよびメインメモリシステムをアクセスする前に、一致を見つける必要がある。ポインタは最も古い未処理の命令を指示するので、ポインタ−比較機構によって、データキャッシュをミスするロード命令およびストア命令についての順序決め機構が提供される。
一実施例において、ロード/ストア順序決め機構によって、ロード/ストアユニットとリオーダバッファとの間の最小限のハンドシェイクで、順序決めを行なうことができるため有利である。1対のポインタをロード/ストアユニットとリオーダバッファとの間の通信信号に加える。より少ない数のインターフェイス信号で、ロード/ストアユニットおよびリオーダバッファの設計を簡素化するが、必要な機能は性能の劣化なしに提供される。
要約すれば、本発明は、ロードおよびストア命令を実行するよう構成されたロード/ストアユニットを備えるスーパースカラマイクロプロセッサを想起する。このロード/ストアユニットは、最も古い未処理の命令を識別する能力があるポインタを受ける構成になっている。ロード/ストアユニット内には、ロードおよびストアタイプの未決の命令を記憶するよう構成されたロード/ストアバッファが含まれる。
【図面の簡単な説明】
本発明の他の目的および利点については、以下の詳細な説明を読みかつ添付の図面を参照することによって、より明らかになるであろう。
図1は、本発明による機能ユニット、ロード/ストアユニットおよびリオーダバッファを採用するスーパースカラマイクロプロセッサのブロック図である。
図2は、機能ユニット、ロード/ストアユニットおよびリオーダバッファを示すスーパースカラマイクロプロセッサのより詳細な部分ブロック図である。
図3Aは、図2に示す機能ユニットのうちの1つの図であり、本発明の実施例の要素を示す図である。
図3Bは、図2のロード/ストアユニットの図であり、本発明の実施例の要素を示す図である。
図3Cは、図2に示す分岐検出および最古未処理検出ブロックの一部として用いられるタグルーチング装置の図である。
図3Dは、本発明の実施例の典型的なリオーダバッファエントリの図である。
本発明にはさまざまな変形および代替形態が可能であるが、その特定の実施例につき図面に例示しかつ以下により詳細に説明することにする。しかしながら、図面およびその詳細な説明は、本発明を特定の開示された形態の限定するものではなく、逆に、添付の請求項に規定される本発明の精神および範囲内にあるすべての変更例、等価物および代替例を包含することを理解されたい。
発明の詳細な説明
ここで、図面を参照して、図1は、スーパースカラマイクロプロセッサ200のブロック図であり、同マイクロプロセッサ200は、本発明による機能ユニット212Aから212F、ロード/ストアユニット222およびリオーダバッファ216を含む。図1の実施例に示すとおり、スーパースカラマイクロプロセッサ200は、命令キャッシュ204に結合された、プリフェッチ/プリデコードユニット202および分岐予測ユニット220を含む。命令整列ユニット206は、命令キャッシュ204と複数のデコードユニット208Aから208F(デコードユニット208と総称する)との間に結合される。各デコードユニット208Aから208Fは、それぞれのリザベーションステーションユニット210Aから210F(リザベーションステーション210と総称する)に結合され、各リザベーションステーション210Aから210Fは、それぞれの機能ユニット212Aから212F(機能ユニット212と総称する)に結合される。デコードユニット208、リザベーションステーション210および機能ユニット212は、リオーダバッファ216、レジスタファイル218およびロード/ストアユニット222にさらに結合される。データキャッシュ224が、最終的にロード/ストアユニット222に結合されるところが示され、MROMユニット209が命令整列ユニット206に結合されているところが示される。
一般に、命令キャッシュ204は、デコードユニット208へのディスパッチに先立ち命令を一時的に記憶するために設けられる高速キャッシュメモリである。一実施例において、命令キャッシュ204は、各16バイト(1バイトは8ビットから構成される)の線に構成された32キロバイトまでの命令をキャッシュするよう構成されている。動作の際には、プリフェッチ/プリデコードユニット202を介してメインメモリ(図示せず)からコードをプリフェッチすることにより命令キャッシュ204へ命令コードが付与される。なお、命令キャッシュ204を、セットアソシアティブ、フリーアソシアティブまたはダイレクトマップド構成で実現することも可能である。
プリフェッチ/プリデコードユニット202は、メインメモリから命令コードをプリフェッチして命令キャッシュ204に記憶するために設けられる。一実施例において、プリフェッチ/プリデコードユニット202は、メインメモリからの64ビット幅のコードを命令キャッシュ204内にバーストするように構成される。もちろん、さまざまな特定のコードプリフェッチ技術およびアルゴリズムをプリフェッチ/プリデコードユニット202に採用することも可能である。
プリフェッチ/プリデコードユニット202は、メインメモリから命令をフェッチし、命令コードの各バイトに関連する3つのプリデコードビット、すなわちスタートビット、エンドビットおよび「機能」ビットを発生する。プリデコードビットは、各命令の境界を示すタグを構成する。プリデコードタグは、所与の命令がデコードユニット208により直接デコードできるか否かまたはMROMユニット209により制御されるマイクロコードプロシージャーを呼出すことにより実行する必要があるかどうか等についての付加的な情報も伝達し得るが、これについて以下により詳細に説明することにする。
表1は、プリデコードタグのコード化を示す。表内に示すとおり、所与のバイトがある命令の第1のバイトである場合、そのバイトのスタートビットがセットされる。このバイトが命令の最後のバイトである場合、そのバイトのエンドビットがセットされる。特定の命令をデコードユニット208で直接デコードすることができない場合、その命令の第1のバイトに関連する機能ビットがセットされる。一方、その命令がデコードユニット208で直接的にデコードすることが可能な場合、その命令の第1のバイトに関連する機能ビットがクリアされる。オペコードが第1のバイトである場合、特定の命令の第2のバイトの機能ビットがクリアされ、かつオペコードが第2のバイトである場合に同機能ビットがセットされる。なお、オペコードが第2のバイトである場合には、第1のバイトはプレフィックスバイトである。命令バイト番号3から8の機能ビットの値は、そのバイトがMODRM、またはSIBバイトのいずれであるかを示し、また、そのバイトが変位(ディスプレイスメント)または即値データを含んでいるかどうかを示す。
先にも述べたとおり、一実施例において、x86命令セット内のあるいくつかの命令が、デコードユニット208により直接的にデコードされ得る。これらの命令は、「高速経路」命令と呼ぶ。x86命令セットの残りの命令は、「MROM命令」と呼ぶ。MROM命令は、MROMユニット209を呼出すことにより実行される。MROM命令に出合うと、MROMユニット209は、この命令を分析し確定した高速経路命令のサブセットに逐次化して、希望する動作を実施する。高速経路命令として分類される例示的x86命令の一覧を以下に示し、かつ高速経路およびMROM命令両方の取扱い方法についての説明を行なう。
命令整列ユニット206を設けて、命令キャッシュ204からのさまざまなバイト長の命令を、デコードユニット208Aから208Fにより構成される固定の発行位置へチャネルする。命令整列ユニット206は、命令コードを、命令キャッシュ204により規定されるライン内の命令のスタートバイトの場所に応じて、指定されたデコードユニット208Aから208Fへ命令コードをチャネルするよう構成される。一実施例においては、所与の命令がディスパッチされ得る特定のデコードユニット208Aから208Fが、その命令のスタートバイトの場所およびそれ以前に命令があれば、その命令のスタートバイトの場所に依存する。あるバイト場所で始まる命令は、ある所定の発行位置にのみ発行されるようにさらに制限してもよい。詳細については以下に説明する。
機能ユニット212、ロード/ストアユニット222およびリオーダバッファ216の詳細な説明を行なう前に、図1に例示するスーパースカラマイクロプロセッサ200内で採用される他のサブシステムに関する概要を説明する。図1に示す実施例については、デコードユニット208の各々が、上に述べた所定の高速経路命令をデコードするためのデコード回路系を備える。さらに、各デコードユニット208Aから208Fは、変位および即値データを対応のリザベーションステーションユニット210Aから210Fへルーチングする。デコードユニット208からの出力信号は、機能ユニット212のビットコード化実行命令およびオペランドアドレス情報、即値データおよび/または変位データを含む。
図1のスーパースカラマイクロプロセッサは、追い越し実行を支持し、したがって、リオーダバッファ216を使用して、レジスタの読出および書込動作のための元のプログラムシーケンスを追跡し、レジスタの再ネーミングを行なって、投機的命令の実行および分岐予測誤り回復を図り、かつ正確な除外を容易にする。当業者には理解されるとおり、リオーダバッファ216内の一時記憶場所は、レジスタの更新を含む命令のデコードの際にリザーブされ、それにより投機的レジスタの状態が記憶される。リオーダバッファ216は、投機的な結果が有効とされかつレジスタファイルに書込まれる際にバッファの「底」へ移動する、ファースト・イン・ファースト・アウト構成で実現することが可能なので、バッファの「上部」に新たなエントリのための余裕ができる。リオーダバッファ216は他の特定の構成でも可能であり、それについて以下に詳細に説明する。分岐予測が誤っている場合、誤り予測経路に沿って投機的に実行された命令の結果を、これら結果がレジスタファイル218に書込まれる前に、バッファにおいて無効にすることができる。
デコードユニット208Aから208Fの出力で与えられる命令および即値データのビットコード化実行は、それぞれのリザベーションステーションユニット210Aから216Fへ直接的にルーチングされる。一実施例において、各リザベーションステーションユニット210Aから210Fは、対応の機能ユニットへの発行を待っている未決の命令3つまでについての命令情報(すなわちビットコード化実行ビット、オペランド値、オペランドタグおよび/または即値データ)を保持することができる。なお、図1に示す実施例については、各デコードユニット208Aから208Fが、専用のリザベーションステーションユニット210Aから210Fと関連しており、かつ各リザベーションステーションユニット210Aから210Fも同様に専用の機能ユニット212Aから212Fに関連する。よって、6つの専用「発行位置」が、デコードユニット208、リザベーションステーションユニット210および機能ユニット212により構成される。デコードユニット208Aを介して位置0を発行するために整列されかつディスパッチされる命令は、リザベーションステーションユニット210Aへ送られかつその後機能ユニット212Aに送られて実行される。同様に、整列しかつデコードユニット208Bに対しディスパッチされる命令は、リザベーションステーションユニット210Bへ送られかつ機能ユニット212Bに送られ、かつ以下同様である。
特定の命令のデコードに際し、要求されるオペランドがレジスタ場所であれば、レジスタアドレス情報が、同時にリオーダバッファ216およびレジスタファイル218へルーチングされる。当業者であれば、x86レジスタファイルが、8個の32ビットリアルレジスタ(すなわち一般にEAX、EBX、ECX、EDX、EBP、ESI、EDIおよびESPと呼ばれる)を含むことが理解されるであろう。これについて以下により詳細に説明する。リオーダバッファ216は、これらレジスタの内容を変更して、追い越し実行を可能にする結果のための一時記憶場所を含む。リオーダバッファ216の一時記憶場所は、各命令についてリザーブされており、デコードの際に、リアルレジスタのうちの1つの内容を修飾する。したがって、特定のプログラムの実行の際にさまざまなポイントで、リオーダバッファ216は、所与のレジスタの投機的に実行された内容を含む1以上の場所を有することが可能である。所与の命令のデコーダに引続いて、リオーダバッファ216が、その所与の命令におけるオペランドとして使用されるレジスタに割当てられた先立つ場所を有していることがわかると、リオーダバッファ216は、対応のリザベーションステーションに対し、1)最も最近に割当てられた場所における値かまたは2)その値が先の命令を最終的に実行することになる機能ユニットによりまだ生成されていない場合には最も最近割当てられた位置に関するタグを進める。リオーダバッファが、所与のレジスタについてリザーブされた場所を有している場合には、オペランドの値(またはタグ)が、レジスタファイル218ではなくリオーダバッファ216から与えられる。リオーダバッファ216において必要とされるレジスタについて何らの場所がリザーブされていない場合には、この値はレジスタファイル218から直接的に取込まれる。オペランドがメモリの場所に対応している場合には、このオペランドの値がロード/ストアユニット222を介してリザベーションステーションユニットへ付与される。
適切なリオーダバッファの実現に関する詳細については、「スーパースカラマイクロプロセッサ設計」と題する刊行物、マイク・ジョンソン、プレンティスホール、イングルウッド、クリフス、ニュージャージー州、1991年(“Superscalar Microprocessor Design”by Mike Johnson,Prentice-Hall,Englewood Cliffs,New Jersey,1991)およびウィット他(Witt,et al.)による、1993年10月29日出願の、同時係属中で、本件と同一譲受人の特許出願「高性能スーパースカラマイクロプロセッサ」(High Performance Superscalar Microprocessor)、連続番号第08/146,382号に記載されている。これらの文献について、その全文にわたりここに引用により援用する。
リザベーションステーションユニット210Aから210Fは、対応の機能ユニット212Aから212Fが投機的に実行することなる命令情報を、一時的に記憶するために設けられる。先ほども述べたとおり、各リザベーションステーションユニット210Aから210Fは、未決の情報3つまでについての命令情報を記憶することができる。6つのリザベーションステーション210Aから210Fの各々が、対応の機能ユニットにより投機的に実行されるビットコード化実行命令を記憶する場所およびオペランドの値を含む。特定のオペランドが入手可能でなければ、そのオペランドに関するタグがリオーダバッファ216から付与されかつ結果が発生されるまで(すなわち先の命令の実行が完了するまで)、対応のリザベーションステーション内に記憶される。なお、機能ユニット212Aから212Fのうちの1つにより命令が実行される場合、その命令の結果は、その結果を待っているいずれかのリザベーションステーションユニット210Aから210Fに直接的に送られかつ同時にその結果はリオーダバッファ216を更新するためにも送られる(この技術は一般に「結果フォワーデイング」(result forwarding)と呼ばれる)。いずれかの要求されたオペランド(単数または複数)の値が入手可能になった後、命令が機能ユニットに対して発行されて実行される。すなわち、リザベーションステーションユニット210Aから210Fのうちの1つの中にある未決の命令に関連するオペランドに、要求されたオペランドを修飾する命令に対応するリオーダバッファ216内の先立つ結果の値の場所でタグされている場合、その命令はその先立つ命令に関するオペランドの結果が入手されるまで、対応の機能ユニット212に対して発行されない。したがって、命令が実行される順序は、元のプログラム命令シーケンスの順序と同じでない可能性がある。リオーダバッファ216は、リード・アフター・ライトの関係が発生するような状況において、データの一貫性が確実に維持されるようにする。
一実施例において、機能ユニット212の各々は、加算および減算の整数の算術演算および変位、回転、論理演算および分岐演算を実行するよう構成されている。なお、浮動小数点ユニット(図示せず)も採用して、浮動小数点演算に対応するようにしてもよい。
機能ユニット212の各々も、条件分岐命令の実行に関する情報を分岐予測ユニット220に付与する。分岐予測が正しくない場合、分岐予測ユニット220は、命令処理パイプラインにエントリした、予測が誤った分岐に続く命令をフラッシュして、プリフェッチ/プリデコードユニット202に、命令キャッシュ204またはメインメモリから必要な命令をフェッチさせる。なお、このような場合、ロード/ストアユニット222およびリオーダバッファ216において投機的に実行されかつ一時的に記憶されたものを含め、この予測が誤っている分岐命令の後に発生する元のプログラムシーケンスにおける命令の結果は廃棄される。適切な分岐予測機構の例示的構成については周知である。機能ユニット212と分岐予測ユニット220との間の通信に関する詳細について以下に説明することにする。
機能ユニット212が生成する結果は、レジスタの値が更新されている場合にはリオーダバッファ216に送られ、かつ記憶場所の内容が変更されている場合には、ロード/ストアユニット222へ送られる。この結果がレジスタ内に記憶される場合には、リオーダバッファ216は、命令がデコードされた場合にレジスタの値についてリザーブされた場所にこの結果を記憶する。先に述べたとおり、結果は、未決の命令が、先行する命令の結果を待っている可能性があるリザベーションステーションユニット210Aから210Fに同報で送られ、必要なオペランドの値が得られる。
データキャッシュ224は、ロード/ストアユニット222とメインメモリサブシステムとの間で転送されるデータを一時的に記憶するために設けられる高速キャッシュメモリである。一実施例において、データキャッシュ224は、8キロバイトまでのデータを記憶する能力がある。もちろん、データキャッシュ224を、セットアソシアティブ構成を含む、さまざまな特定のメモリ構成に実現してもよい。
一般に、ロード/ストアユニット222は、機能ユニット212Aから212Fとデータキャッシュ224との間にインターフェイスを提供する。一実施例において、ロード/ストアユニット222は、未処理のロードまたはストアメモリ動作に関するデータおよびアドレス情報について16の記憶場所を備えるロード/ストアバッファで構成される。機能ユニット212は、ロード/ストアユニット222へのアクセスを調停する。ロード/ストアユニット222は、ロードメモリ動作の、未決のストアメモリ動作に対する依存度をチェックして、データの一貫性が確実に維持されるようにする。
ここで、図2を参照して、図2は、機能ユニット212、リオーダバッファ216およびロード/ストアユニット222を示すブロック図である。図2は、ここに示すユニット間の接続を詳細に示しかつまたリオーダバッファ216を詳細に示す。2つの機能ユニット(212Aおよび212F)について示すが、同様の接続が他の機能ユニット212の各々について行なわれている。リオーダバッファ216は、分岐ポインタバス250上で分岐ポインタを機能ユニット212へ伝達する。機能ユニット212は、分岐予測ユニット220へアドレスを伝達する、訂正されたフェッチアドレスバス251にも接続される。リオーダバッファ216は、最も古いポインタバス対255および256上でロード/ストアユニット222へ最も古いポインタの対(すなわち最も古いポインタとその次に古いポインタ)を伝達する。命令の脈において用いられる場合には、「最も古い」という用語は、有効な結果を未だ有してはいないが、リオーダバッファ内のそれに先立つ各命令が有効な結果を有している命令を意味する。
一般に、分岐ポインタバス250上でリオーダバッファ216が伝達する分岐ポインタは、リオーダバッファ216内に現在記憶される最も古い分岐命令を識別する。機能ユニット212は、分岐ポインタを、現在実行している命令を示すポインタに比較する。この比較によって一致が示されると、関連の機能ユニットは、その訂正されたフェッチアドレスを訂正されたフェッチアドレスバス251上で分岐予測ユニット220へ伝達することができる。機能ユニットは、関連の分岐命令が、分岐予測ユニット220により誤って予測されたものである場合には、訂正されたフェッチアドレスを伝達する。最も古いポインタバス255および256上を伝達される最も古いポインタは、リタイアの状態にない最も古い命令を示す。ロード/ストアユニット222は、最も古いポインタと、ロード/ストアユニット222内のロード/ストアバッファ内に記憶される未処理のロードミスおよびストア命令を識別する。比較によって一致が示される場合、対応のロードまたはストア命令を、関連する記憶場所をキャッシュ(必要であれば)へ転送し、かつストア情報に関するデータをデータキャッシュへ記憶するかまたはロード情報に関連するデータを標的レジスタにフォワード(送る)することにより行なわれる。したがって、分岐予測回復のための機構およびプログラムオーダにおけるデータキャッシュミスおよびストア命令であるロード命令を行なうための機構が作り出される。ある命令を実行した結果がリオーダバッファ216に伝達されている場合には、その命令は「リタイアの状態」であると判定される。「リタイア」(retirement)という語は、リオーダバッファ216からの命令を取除くことを意味する。
分岐ポインタは、分岐検出器回路253を用いてリオーダバッファ216により発生される。分岐検出器回路253は、リオーダバッファアレイ252内の最も古い命令を記憶するあるいくつかのエントリをスキャンする。一実施例において、スキャンされるエントリの数は6である。リオーダバッファアレイ252は、先の図1に関して説明したスーパースカラマイクロプロセッサ200において現在未処理の命令(すなわちディスパッチされたが未だリタイアの状態にない命令)に関連する情報を記憶する。リオーダバッファアレイ252内の最も古い6つのエントリ内の最も古い分岐命令の関連する「リオーダバッファタグ」(リオーダバッファ216内の命令を一意的に識別する)は、分岐検出器回路253により選択されかつ分岐ポインタにより伝達される。したがって、本実施例における分岐ポインタはリオーダバッファタグである。
この実施例において、分岐検出器回路253は1つのタグルーチング装置を採用する。タグルーチング装置については、図3Cを参照して以下により詳細に説明するが、一般には各エントリに関連するビットに依存してリオーダバッファアレイ252の複数のエントリからリオーダバッファタグを選択する装置である。分岐検出器回路253の場合には、このビットが分岐としての命令を示す。最も古いエントリが分岐である場合には、その関連のリオーダバッファタグが機能ユニット212へルーチングされる。同様に、2番目に古いエントリが分岐でありかつ最も古いエントリが分岐でない場合には、その2番目に古いエントリのタグが機能ユニット212へルーチングされ、かつ残りのスキャンされるリオーダバッファエントリについても同様である。分岐検出器回路253によりスキャンされるエントリの中に分岐命令が見つからない場合には、無効タグが機能ユニット212へルーチングされる。
最も古いポインタバス255および256上を伝達される最も古いポインタの対は、最も古い未処理検出器回路254(これ以降検出器回路254とする)により発生される。分岐検出器回路253と同様、検出器回路254は、リオーダバッファ216内の最も古い命令を記憶するあるいくつかのエントリをスキャンする。リタイアの状態にない最も古い命令および2番目に古い命令に関連するリオーダバッファのタグが検出器回路254によりロード/ストアユニット222へルーチングされる。ある例では、スキャンされるリオーダバッファエントリの数は12である。
一実施例において、検出器回路254は、下に図3Cを参照して説明するとおり、2つのタグルーチング装置を含む。第1のタグルーチング装置は、分岐検出器回路253のタグルーチング装置と類似するリオーダバッファタグをルーチングするが、ただしリオーダバッファタグを選択するのに使用されるリオーダバッファアレイ252からのビットが、関連の命令がリタイアの状態にないことを示す点が異なる。第2のタグルーチング装置は、リタイアの状態にない命令に関連する2番目に古いリオーダバッファタグをルーチングするよう構成されている。したがって、第2のタグルーチング装置に付与される選択ビットは、リタイアの状態にない命令を示すビットと、その命令が第1のタグルーチング装置により選択されていないことを示すビットとの論理積である。この選択ビットは、図3Cを参照して以下にも説明するとおり、タグルーチング装置により優先的にコード化される。
この実施例において、ロード/ストアユニット222は、リオーダバッファへロード命令に関連するデータを返す必要がありかつリオーダバッファに対し、記憶が行なわれたことを示すために必要である。データキャッシュにおいてヒットするロード命令が、リオーダバッファへ関連のデータを送ることにより完了する。しかしながら、データキャッシュをミスし(かつデータを返すことができない)ロード命令およびストア命令は、それらに関連するリオーダバッファのタグが最も古いポインタのうちの1つ上に示されるまでロード/ストアバッファ内に留まる。その後、ロード/ストアユニットは、メインメモリからデータキャッシュ内へデータを転送するためのロードミス命令またはデータキャッシュ内にデータを記憶するためのストア命令を選択することができる。ロード/ストアユニットが、これらの動作を行なった場合、そのデータを返すかまたはその記憶が完全である(それぞれ)ことを示す。引続くクロックサイクルで、最も古いポインタがリオーダバッファ216内の次に古い命令へ移動する。したがって、データキャッシュをミスするロード命令およびストア命令は、順序通りに実行される。
他の実行例において、分岐ポインタバス250および最も古い未処理のバス255は、同じポインタを各クロックサイクルにおいて伝達するように動作する。したがって、分岐ポインタバス250および最も古い未処理のバス255は、この実施例については共通のバス内に組合せることができ、かつ分岐検出器回路253を除くことができる。以下に説明するとおり、機能ユニット212は、分岐命令を行なっている場合に有効な訂正されたフェッチアドレスを発生し、かつそれ以外の場合には無効な訂正されたフェッチアドレスを発生する。したがって、分岐ポインタバス250が非分岐命令を伝達し、かつポインタが現在実行されている命令を示すポインタと一致する場合、分岐予測ユニット220は無効な訂正されたフェッチアドレスを受けることになる。
さてここで図3Aを参照して、機能ユニット212のうちの1つの内部論理回路が示される。機能ユニット212は、各々、現在のクロックサイクルにおいて実行されている命令のリオーダバッファタグを記憶するレジスタ300を備えて構成される。レジスタ300は、分岐ポインタバス250にも接続される比較器回路301に接続される。したがって、比較器回路301は、分岐ポインタバス250上を伝達される分岐ポインタを、レジスタ300内に記憶されるリオーダバッファタグに比較する。分岐ポインタバス250は、関連の命令が分岐である場合にのみ有効なリオーダバッファタグを伝達するので、比較器の出力が、分岐命令が機能ユニットにより実行されているクロックサイクルにおいて一致を示す。比較器301の出力はトライステートドライバ回路303のイネーブルに結合される。トライステートドライバ回路303は、実行されている分岐命令が予測を誤った分岐である場合に訂正されたフェッチアドレスを発生し、かつこの分岐が正確に予測されるかまたは命令が分岐でない場合に有効なアドレスを発生するよう構成される、訂正されたアドレス論理ブロック302に結合される。トライステートドライバ回路は、比較器回路301が一致を示す場合には訂正されたアドレス論理ブロック302が生成するアドレスを伝達し、かつ比較器回路301が一致を示さない場合には何ものも伝達しない。したがって、1つの機能ユニットのみが所与のクロックサイクル内でポインタバス250上を伝達されるポインタに一致するリオーダバッファタグを含むことができるため、複数の機能ユニット212は、同じ訂正されたフェッチアドレスバス251に接続することができる。分岐予測ユニット220は、訂正されたフェッチアドレスに対してのみ作用しかつ無効なアドレスが無視されるように、無効なアドレスを認識するよう構成される。なお、機能ユニット212は、他の命令同様、分岐命令を実行した結果をリオーダバッファ216に報告する。
スーパースカラマイクロプロセッサ内に機能ユニット212を採用することにより、完了するまでのクロックサイクルが比較的少なくてすむ分岐予測誤り回復機構が実現され得る。分岐が実行されかつ予測誤りであることがわかるクロックサイクルが、訂正されたフェッチアドレスが分岐予測ユニット220へ伝達されるサイクルである。それに引続くサイクルにおいて、訂正されたフェッチアドレスが命令キャッシュにアクセスしかつ関連の命令がディスパッチされることになる。さらに、分岐予測誤り回復機構は、最も古い分岐命令に関連する訂正されたフェッチアドレスを伝達することにより複数の分岐予測を取扱う。
ここで、図3Bを参照して、ロード/ストアユニット222についてより詳細に示す。ロード/ストアユニット222は、リオーダバッファ216からの最も古いポインタバス255および256を受けかつデータキャッシュ224をアクセスするためのロードまたはストア命令を選択する。一実施例において、ロード/ストアユニット222は、各クロックサイクルにおいてデータキャッシュをアクセスするための、2つまでのロード/ストア命令を選択する。ロード/ストアユニット222は、未処理のロードおよびストア命令に関連する情報を記憶するよう構成されたロード/ストアバッファ310を備えて構成される。ロード/ストアバッファ310内に記憶される情報に含まれるのは、図3Bに示すとおり、各命令のリオーダバッファタグである。各エントリについてのリオーダバッファタグは、比較器回路312および313を用いて、最も古いポインタに比較される。データキャッシュ入力選択論理ブロック311(これ以降選択論理ブロック311とする)は、比較器の出力およびロード/ストアバッファ310の内容を受け、データキャッシュ224について命令を2つまで発生する。選択論理ブロック311は、関連の比較器回路が最も古いポインタと一致を示すまで、データキャッシュをミスすることがわかっているロード命令を選択しない。同様に、選択論理ブロック311は、関連の比較器回路が最も古いポインタとの一致を示すまで、ストア命令を選択しない。一実施例において、選択論理ブロック311は、データキャッシュ224をアクセスするための命令を選択するための優先スキームを採用する。最も高い優先順位が、最も古いポインタバス255上を転送される最も古いポインタに一致するリオーダバッファタグを有するロードミスまたはストア命令に与えられる。中間の優先順位が最も古いポインタバス256上を転送される最も古いポインタに一致するリオーダバッファタグを有するロードミスまたはストア命令に与えられる。最も低い優先順位は、未だデータキャッシュ224をアクセスしていないロード命令に与えられる。
最も古いポインタを生成するスーパースカラマイクロプロセッサにおいてロード/ストアユニット222を採用することにより、データキャッシュ224をミスするロード命令およびストア命令を順序通りに実行する。それらのリオーダバッファタグが最も古いポインタに伝達されて、それらがリタイアの状態にない最も古い未処理の命令であることを示すまで、これら2つのタイプの命令のいずれもデータキャッシュ222またはメインメモリサブシステムにアクセスを許されない。したがって、このロードまたはストア命令に先立つ命令の各々は完了されかつこのロードまたはストア情報を実行することができる。
ここで図3Cを参照して、分岐検出器回路253(図2に示す)内で採用されるタグルーチング装置320および最も古い未処理検出器回路254(図2に示す)の実施例を示す。タグルーチング装置320は、リオーダバッファアレイ252からのリオーダバッファタグを受けるマルチプレクサ321を含む。キャッシュリオーダバッファタグに関連するのは、このタグがタグルーチング装置320によりルーチングを検討されるべきである場合、論理1を伝達する信号である。図3Cに示す実施例は、マルチプレクサ321に結合される信号線322が示すとおり、関連する信号が論理1である場合に、最も古いタグを選択する優先順位コード化機構である。このコード化機構は、その関連する信号が論理1を伝達しかつ最も古いタグに関連する信号が論理0を伝達する場合に、2番目に古いタグを選択する。したがって、信号線323(2番目に古いタグを選択する)がANDゲート324により発生される。最も古いタグに関連する信号およびその次に古いタグに関連する信号の双方が論理0を伝達しかつ3番目に古いタグに関連する信号が論理1を伝達する場合には、3番目に古いタグが選択される。したがって、信号線325(3番目に古いタグを選択する)が、ANDゲート326により発生される。マルチプレクサ321用の付加的な選択信号も同様に発生される。
ここで図3Dを参照して、リオーダバッファアレイ252のための例示的リオーダバッファエントリ330を示す。タグエントリ330は、4つのフィールド、すなわちリオーダバッファタグフィールド331、分岐ビット332、リタイアビット333および命令フィールド334を有する。命令フィールド334は、このリオーダバッファエントリ用の命令とともにリオーダバッファ216の特定の実施例が必要とし得る他のデータを含む。リオーダバッファタグフィールド331は、リオーダバッファタグを記憶しかつ分岐検出器回路253に接続されかつアレイにおける最も古い命令を含むよう構成されるリオーダバッファアレイエントリのための最も古い未処理検出器回路254にも結合される。分岐ビット332は、リオーダバッファエントリに記憶される命令が分岐命令である場合には論理1を記憶し、それ以外の場合には、論理0を記憶する。分岐ビット332は、分岐検出器回路253のタグルーチング装置のための選択信号のうちの1つを構成する。リタイアビット333は、リオーダバッファアレイエントリ330に記憶される命令がリタイアの状態にある場合には論理1を記憶し、かつそれ以外の場合には論理0を記憶する。リタイアビット333を反転したものを使用し、最も古い未処理検出回路254内のタグルーチン装置320の選択信号の1つを形成する。
さらに他の実施例においては、クロックサイクルにおいて、機能ユニット212の各々が他の機能ユニット212の各々に対し、分岐ポインタに対する比較結果および予測誤りがあった分岐命令を実行しているか否かを連絡する。分岐ポインタに対する一致が機能ユニット212内で検出されない場合には、図4のフロー図に示すように、優先順位スキームが呼出される。優先順位スキームは、以下のような訂正されたアドレスバス251を駆動する機能ユニットを選択する。すなわち、機能ユニット212Aは、予測誤りがある分岐命令を含んでいる場合には訂正されたフェッチアドレスバス251を駆動し、機能ユニット212Bは、予測誤りがある分岐命令を含みかつ機能ユニット212Aが予測誤りがある分岐命令を含んでいない場合には、訂正されたフェッチアドレスバス251を駆動し、機能ユニット212Cは、予測誤りがある分岐命令を含みかつ機能ユニット212Aまたは機能ユニット212Bのいずれもが予測に誤りがある分岐命令を含んでいない場合には、訂正されたフェッチアドレスバス251を駆動し、かつ残りの機能ユニットについても同様である。このようにして、訂正されたフェッチアドレスバス251が、各クロックサイクルにおいて値を伝達する。
なお、本発明の他の実施例においては、さまざまな数の機能ユニットおよびロード/ストアユニットを採用することが可能である。さらに、分岐ポインタおよび最も古いポインタの数は実施例ごとに変更することができる。ロード/ストアユニット222は、この実施例においては、統合されたロード/ストアバッファを備えて構成されるが、他の実施例においては、ロード/ストアユニット222を、複数のロード/ストアバッファを備えて構成してもよく、またロードおよびストア命令を別々のバッファに記憶することもできる。
上記の開示により、分岐予測誤り回復およびロード/ストア順序決めのための機構について説明した。分岐予測誤り回復機構は、予測誤りが発見されると完了に1クロックサイクルを要し、分岐予測誤りによるアイドルクロックサイクルの数を最小にすることにより高性能化を図る。ロード/ストア順序決め機構によって、ユニット間のハンドシェイク量が最小限で、ロード/ストアの順序決めが図られる。この最小限のハンドシェイクによって、インターフェイス信号の数が低減されかつスーパースカラマイクロプロセッサの設計が簡素化される。
上の開示を十分に理解すれば、当業者にはさまざまな変更および修正が明らかであろう。以下の請求項は、そのようなすべての変更および修正を包含するものと解釈されることを意図する。
Claims (14)
- ロードおよびストア命令を実行するよう構成されたロード/ストアユニット(222)を含むスーパースカラマイクロプロセッサ(200)であって、前記ロード/ストアユニット(222)が、ロードミス命令を含むロードおよびストアタイプの未決命令を記憶するよう構成されたロード/ストアバッファ(310)を含み、前記ロード/ストアユニット(222)が、最古の未処理命令を識別することが可能なポインタを受けるようにさらに構成されており、かつロード/ストア命令が、前記ロード/ストアユニット(222)が受ける前記ポインタに応答して選択され実行されることを特徴とする、スーパースカラマイクロプロセッサ。
- ストア命令が前記ロード/ストアバッファ(310)に常駐する場合、前記ロード/ストアユニット(222)が、前記ポインタにより識別される前記ストア命令を実行するよう構成される、請求項1に記載のスーパースカラマイクロプロセッサ。
- データキャッシュ(224)をさらに含み、前記ロード/ストアユニット(222)は前記ポインタにより識別されるロード命令を実行するよう構成され、この場合、前記ロード命令は前記ロード/ストアバッファ(310)内に常駐し、事前にキャッシュミスであると決定される、請求項1または2に記載のスーパースカラマイクロプロセッサ。
- 前記ポインタを発生するよう構成されたリオーダバッファ(216)をさらに含む、請求項1、2または3に記載のスーパースカラマイクロプロセッサ。
- 前記ポインタが、リオーダバッファタグを伝達し、前記リオーダバッファタグが前記リオーダバッファ(216)内の命令を唯一的に識別する、請求項4に記載のスーパースカラマイクロプロセッサ。
- 前記ロード/ストアバッファ(310)が、前記ロード/ストアバッファ内に記憶される各命令のためのリオーダバッファタグを記憶するよう構成され、かつ前記ロード/ストアユニット(322)が、前記ロード/ストアバッファ(310)内に記憶される前記リオーダバッファタグを、ポインタバス(255,256)上を伝達される前記リオーダバッファタグと比較するよう構成される、請求項5に記載のスーパースカラマイクロプロセッサ。
- 前記ロード/ストアバッファ内に記憶される前記リオーダバッファタグが、前記ポインタバス(255,256)上を伝達される前記リオーダバッファタグに等しいクロックサイクルにおいて、前記ロード/ストアユニットが前記ロード/ストアバッファ(310)内に記憶される前記リオーダバッファタグに関連する前記命令を完了するようさらに構成されている、請求項6に記載のスーパースカラマイクロプロセッサ。
- 前記ロード/ストアユニット(222)が、命令が完了されるクロックサイクルにおいて、前記リオーダバッファに信号を送るようさらに構成されている、請求項6に記載のスーパースカラマイクロプロセッサ。
- データキャッシュ(224)をさらに含み、前記ロード/ストアユニット(222)が、前記ストア命令に関連する前記リオーダバッファタグが前記ポインタ上を伝達される前記リオーダバッファタグに等しいクロックサイクルにおいて、前記データキャッシュ(224)内へストア命令に関連するデータを記憶するようさらに構成される、請求項6に記載のスーパースカラマイクロプロセッサ。
- データキャッシュ(224)をさらに含み、前記ロード/ストアユニット(222)が、記憶場所を前記データキャッシュ(224)内へ転送させるようにさらに構成され、かつ前記記憶場所が、前記データキャッシュ内においてミスするロード命令に関連し、かつ前記記憶場所が、前記ロード命令に関連する前記リオーダバッファタグが前記ポインタバス(255,256)上を伝達される前記リオーダバッファタグに等しいクロックサイクルにおいて、転送されるようになっている、請求項6に記載のスーパースカラマイクロプロセッサ。
- 前記ロード/ストアユニット(222)が、前記データキャッシュ(224)にヒットするロード命令を実行するクロックサイクルにおいて、前記ロード/ストアユニット(222)が前記リオーダバッファ(216)に信号を送るようさらに構成される、請求項10に記載のスーパースカラマイクロプロセッサ。
- 前記前記ロード/ストアユニット(222)が、複数の前記ポインタを受けるようさらに構成される、先行の請求項のいずれかに記載のスーパースカラマイクロプロセッサ。
- 前記ロード/ストアユニット(222)が、クロックサイクルにおいて、前記ロード/ストアバッファに記憶される複数の命令を完了するようさらに構成される、先行の請求項のいずれかに記載のスーパースカラマイクロプロセッサ。
- 前記複数の命令および前記複数のポインタの数が等しい、先行の請求項のいずれかに記載のスーパースカラマイクロプロセッサ。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US1996/011846 WO1998002805A1 (en) | 1996-07-16 | 1996-07-16 | A load/store unit with multiple pointers for completing store and load-miss instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000515277A JP2000515277A (ja) | 2000-11-14 |
JP3717524B2 true JP3717524B2 (ja) | 2005-11-16 |
Family
ID=22255475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP50596098A Expired - Fee Related JP3717524B2 (ja) | 1996-07-16 | 1996-07-16 | ストアおよびロードミス命令を完了するための複数のポインタを備えるロード/ストアユニット |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP0912927B1 (ja) |
JP (1) | JP3717524B2 (ja) |
DE (1) | DE69611388T2 (ja) |
WO (1) | WO1998002805A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7617387B2 (en) * | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
US10528353B2 (en) | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor |
US10467008B2 (en) | 2016-05-31 | 2019-11-05 | International Business Machines Corporation | Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor |
US10248555B2 (en) | 2016-05-31 | 2019-04-02 | International Business Machines Corporation | Managing an effective address table in a multi-slice processor |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5185871A (en) * | 1989-12-26 | 1993-02-09 | International Business Machines Corporation | Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions |
-
1996
- 1996-07-16 DE DE69611388T patent/DE69611388T2/de not_active Expired - Lifetime
- 1996-07-16 WO PCT/US1996/011846 patent/WO1998002805A1/en active IP Right Grant
- 1996-07-16 EP EP96925348A patent/EP0912927B1/en not_active Expired - Lifetime
- 1996-07-16 JP JP50596098A patent/JP3717524B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0912927A1 (en) | 1999-05-06 |
DE69611388D1 (de) | 2001-02-01 |
JP2000515277A (ja) | 2000-11-14 |
DE69611388T2 (de) | 2001-08-09 |
WO1998002805A1 (en) | 1998-01-22 |
EP0912927B1 (en) | 2000-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3798404B2 (ja) | 2レベルの分岐予測キャッシュによる分岐予測 | |
US8069336B2 (en) | Transitioning from instruction cache to trace cache on label boundaries | |
JP3588755B2 (ja) | コンピュータシステム | |
EP0380859B1 (en) | Method of preprocessing multiple instructions | |
US5822575A (en) | Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction | |
US6012125A (en) | Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions | |
US6192465B1 (en) | Using multiple decoders and a reorder queue to decode instructions out of order | |
US6157994A (en) | Microprocessor employing and method of using a control bit vector storage for instruction execution | |
JP2001521241A (ja) | 分岐予測を迅速に特定するための命令キャッシュ内のバイト範囲に関連する分岐セレクタ | |
KR100335745B1 (ko) | 고성능의 추론적인 오정렬 로드 연산 | |
US5835968A (en) | Apparatus for providing memory and register operands concurrently to functional units | |
US5765016A (en) | Reorder buffer configured to store both speculative and committed register states | |
US6493819B1 (en) | Merging narrow register for resolution of data dependencies when updating a portion of a register in a microprocessor | |
US6460132B1 (en) | Massively parallel instruction predecoding | |
JP3794918B2 (ja) | 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測 | |
US5946468A (en) | Reorder buffer having an improved future file for storing speculative instruction execution results | |
US5915110A (en) | Branch misprediction recovery in a reorder buffer having a future file | |
JP3717524B2 (ja) | ストアおよびロードミス命令を完了するための複数のポインタを備えるロード/ストアユニット | |
US6175909B1 (en) | Forwarding instruction byte blocks to parallel scanning units using instruction cache associated table storing scan block boundary information for faster alignment | |
EP0912930B1 (en) | A functional unit with a pointer for mispredicted branch resolution, and a superscalar microprocessor employing the same | |
KR100417459B1 (ko) | 저장 및 적재 미스 명령들을 완료하기 위한 다수의 포인터들을 갖는 적재/저장 유닛 | |
EP0912925B1 (en) | A return stack structure and a superscalar microprocessor employing same | |
EP0919027B1 (en) | A delayed update register for an array | |
EP0919025B1 (en) | A parallel and scalable instruction scanning unit | |
EP0912929B1 (en) | A data address prediction structure and a method for operating the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050208 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050506 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050620 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050627 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050816 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050831 |
|
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: 20080909 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090909 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100909 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100909 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110909 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees | ||
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |