JP2000515277A - ストアおよびロードミス命令を完了するための複数のポインタを備えるロード/ストアユニット - Google Patents

ストアおよびロードミス命令を完了するための複数のポインタを備えるロード/ストアユニット

Info

Publication number
JP2000515277A
JP2000515277A JP10505960A JP50596098A JP2000515277A JP 2000515277 A JP2000515277 A JP 2000515277A JP 10505960 A JP10505960 A JP 10505960A JP 50596098 A JP50596098 A JP 50596098A JP 2000515277 A JP2000515277 A JP 2000515277A
Authority
JP
Japan
Prior art keywords
load
store
instruction
buffer
reorder buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP10505960A
Other languages
English (en)
Other versions
JP3717524B2 (ja
Inventor
トラン,タング・エム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2000515277A publication Critical patent/JP2000515277A/ja
Application granted granted Critical
Publication of JP3717524B2 publication Critical patent/JP3717524B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

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

Abstract

(57)【要約】 リタイアの状態にない最も古い未処理の命令を識別する1対のポインタを受けるロード/ストアユニットを有するスーパースカラマイクロプロセッサが提供される。ロード/ストアユニットは、これらのポインタを、データキャッシュをミスするロード命令およびストア命令のリオーダバッファタグと比較する。関連の命令が、データキャッシュおよびメインメモリシステムにアクセスする前に一致を見つける必要がある。このポインタ−比較機構によって、データキャッシュをミスするロード命令およびストア命令のための順序決め機構が提供される。

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と総称する)との間に結合される。各デコードユニット2 08Aから208Fは、それぞれのリザベーションステーションユニット210 Aから210F(リザベーションステーション210と総称する)に結合され、 各リザベーションステーション210Aから210Fは、それぞれの機能ユニッ ト212Aから212F(機能ユニット212と総称する)に結合される。デコ ードユニット208、リザベーションステーション210および機能ユニット2 12は、リオーダバッファ216、レジスタファイル218およびロード/スト アユニット222にさらに結合される。データキャッシュ224が、最終的にロ ード/ストアユニット222に結合されるところが示され、MROMユニット2 09が命令整列ユニット206に結合されているところが示される。 一般に、命令キャッシュ204は、デコードユニット208へのディスパッチ に先立ち命令を一時的に記憶するために設けられる高速キャッシュメモリである 。一実施例において、命令キャッシュ204は、各16バイト(1バイトは8ビ ットから構成される)の線に構成された32キロバイトまでの命令をキャッシュ するよう構成されている。動作の際には、プリフェッチ/プリデコードユニット 202を介してメインメモリ(図示せず)からコードをプリフェッチすることに より命令キャッシュ204へ命令コードが付与される。なお、命令キャッシュ2 04を、セットアソシアティブ、フリーアソシアティブまたはダイレクトマップ ド構成で実現することも可能である。 ブリフェッチ/プリデコードユニット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バイトのいずれであるかを示し、また、そのバイ トが変位(ディスプレイスメント)または即値データを含んでいるかどうかを示 す。表1 スタートビット、エンドビットおよび機能ビットのコード化 先にも述べたとおり、一実施例において、x86命令セット内のあるいくつか の命令が、デコードユニット208により直接的にデコードされ得る。これらの 命令は、「高速経路」命令と呼ぶ。x86命令セットの残りの命令は、「MRO M命令」と呼ぶ。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が、専用のリザベーションステーションユニット2 10Aから210Fと関連しており、かつ各リザベーションステーションユニッ ト210Aから210Fも同様に専用の機能ユニット212Aから212Fに関 連する。よって、6つの専用「発行位置」が、デコードユニット208、リザベ ーションステーションユニット210および機能ユニット212により構成され る。デコードユニット208Aを介して位置0を発行するために整列されかつデ ィスパッチされる命令は、リザベーションステーションユニット210Aへ送ら れかつその後機能ユニット212Aに送られて実行される。同様に、整列しかつ デコードユニット208Bに対しディスパッチされる命令は、リザベーションス テーションユニット210Bへ送られかつ機能ユニット212Bに送られ、かつ 以下同様である。 特定の命令のデコードに際し、要求されるオペランドがレジスタ場所であれば 、レジスタアドレス情報が、同時にリオーダバッファ216およびレジスタファ イル218へルーチングされる。当業者であれば、x86レジスタファイルが、 8個の32ビットリアルレジスタ(すなわち一般にEAX、EBX、ECX、E DX、EBP、ESI、EDIおよびESPと呼ばれる)を含むことが理解され るであろう。これについて以下により詳細に説明する。リオーダバッファ216 は、これらレジスタの内容を変更して、追い越し実行を可能にする結果のための 一時記憶場所を含む。リオーダバッファ216の一時記憶場所は、各命令につい てリザーブされており、デコードの際に、リアルレジスタのうちの1つの内容を 修飾する。したがって、特定のプログラムの実行の際にさまざまなポイントで、 リオーダバッファ216は、所与のレジスタの投機的に実行された内容を含む1 以上の場所を有することが可能である。所与の命令のデコーダに引続いて、リオ ーダバッファ216が、その所与の命令におけるオペランドとして使用されるレ ジス タに割当てられた先立つ場所を有していることがわかると、リオーダバッファ2 16は、対応のリザベーションステーションに対し、1)最も最近に割当てられ た場所における値かまたは2)その値が先の命令を最終的に実行することになる 機能ユニットによりまだ生成されていない場合には最も最近割当てられた位置に 関するタグを進める。リオーダバッファが、所与のレジスタについてリザーブさ れた場所を有している場合には、オペランドの値(またはタグ)が、レジスタフ ァイル218ではなくリオーダバッファ216から与えられる。リオーダバッフ ァ216において必要とされるレジスタについて何らの場所がリザーブされてい ない場合には、この値はレジスタファイル218から直接的に取込まれる。オペ ランドがメモリの場所に対応している場合には、このオペランドの値がロード/ ストアユニット222を介してリザベーションステーションユニットへ付与され る。 適切なリオーダバッファの実現に関する詳細については、「スーパースカラマ イクロプロセッサ設計」と題する刊行物、マイク・ジョンソン、プレンティスホ ール、イングルウッド、クリフス、ニュージャージー州、1991年(“Supers calar Microprocessor Design”by Mjke Johnson,Prentice-Hall,Englewood C liffs,New Jersey,1991)およびウィット他(Wjtt,et al.)による、1993 年10月29日出願の、同時係属中で、本件と同一譲受人の特許出願「高性能ス ーパースカラマイクロプロセッサ」 (High Performance Superscalar Micropr ocessor)、連続番号第08/146,382号に記載されている。これらの文 献について、その全文にわたりここに引用により援用する。 リザベーションステーションユニット210Aから210Fは、対応の機能ユ ニット212Aから212Fが投機的に実行することなる命令情報を、一時的に 記憶するために設けられる。先ほども述べたとおり、各リザベーションステーシ ョンユニット210Aから210Fは、未決の情報3つまでについての命令情報 を記憶することができる。6つのリザベーションステーション210Aから21 0Fの各々が、対応の機能ユニットにより投機的に実行されるビットコード化実 行命令を記憶する場所およびオペランドの値を含む。特定のオペランドが入手可 能でなければ、そのオペランドに関するタグがリオーダバッファ216から付与 されかつ結果が発生されるまで(すなわち先の命令の実行が完了するまで)、対 応のリザベーションステーション内に記憶される。なお、機能ユニット212A から212Fのうちの1つにより命令が実行される場合、その命令の結果は、そ の結果を待っているいずれかのリザベーションステーションユニット210Aか ら210Fに直接的に送られかつ同時にその結果はリオーダバッファ216を更 新するためにも送られる(この技術は一般に「結果フォワーデイング」(result forwarding)と呼ばれる)。いずれかの要求されたオペランド(単数または複数 )の値が入手可能になった後、命令が機能ユニットに対して発行されて実行され る。すなわち、リザベーションステーションユニット210Aから210Fのう ちの1つの中にある未決の命令に関連するオペランドに、要求されたオペランド を修飾する命令に対応するリオーダバッファ216内の先立つ結果の値の場所で タグされている場合、その命令はその先立つ命令に関するオペランドの結果が入 手されるまで、対応の機能ユニット212に対して発行されない。したがって、 命令が実行される順序は、元のプログラム命令シーケンスの順序と同じでない可 能性がある。リオーダバッファ216は、リード・アフター・ライトの関係が発 生するような状況において、データの一貫性が確実に維持されるようにする。 一実施例において、機能ユニット212の各々は、加算および減算の整数の算 術演算および変位、回転、論理演算および分岐演算を実行するよう構成されてい る。なお、浮動小数点ユニット(図示せず)も採用して、浮動小数点演算に対応 するようにしてもよい。 機能ユニット212の各々も、条件分岐命令の実行に関する情報を分岐予測ユ ニット220に付与する。分岐予測が正しくない場合、分岐予測ユニット220 は、命令処理パイプラインにエントリした、予測が誤った分岐に続く命令をフラ ッシュして、プリフェッチ/プリデコードユニット202に、命令キャッシュ2 04またはメインメモリから必要な命令をフェッチさせる。なお、このような場 合、ロード/ストアユニット222およびリオーダバッファ216において投機 的に実行されかつ一時的に記憶されたものを含め、この予測が誤っている分岐命 令の後に発生する元のプログラムシーケンスにおける命令の結果は廃棄される。 適切な分岐予測機構の例示的構成については周知である。機能ユニット212と 分岐予測ユニット220との間の通信に関する詳細について以下に説明すること にする。 機能ユニット212が生成する結果は、レジスタの値が更新されている場合に はリオーダバッファ216に送られ、かつ記憶場所の内容が変更されている場合 には、ロード/ストアユニット222へ送られる。この結果がレジスタ内に記憶 される場合には、リオーダバッファ216は、命令がデコードされた場合にレジ スタの値についてリザーブされた場所にこの結果を記憶する。先に述べたとおり 、結果は、未決の命令が、先行する命令の結果を待っている可能性があるリザベ ーションステーションユニット210Aから210Fに同報で送られ、必要なオ ペランドの値が得られる。 データキャッシュ224は、ロード/ストアユニット222とメインメモリサ ブシステムとの間で転送されるデータを一時的に記憶するために設けられる高速 キャッシュメモリである。一実施例において、データキャッシュ224は、8キ ロバイトまでのデータを記憶する能力がある。もちろん、データキャッシュ22 4を、セットアソシアティブ構成を含む、さまざまな特定のメモリ構成に実現し てもよい。 一般に、ロード/ストアユニット222は、機能ユニット212Aから212 Fとデータキャッシュ224との間にインターフェイスを提供する。一実施例に おいて、ロード/ストアユニット222は、未処理のロードまたはストアメモリ 動作に関するデータおよびアドレス情報について16の記憶場所を備えるロード /ストアバッファで構成される。機能ユニット212は、ロード/ストアユニッ ト222へのアクセスを調停する。ロード/ストアユニット222は、ロードメ モリ動作の、未決のストアメモリ動作に対する依存度をチェックして、データの 一貫性が確実に維持されるようにする。 ここで、図2を参照して、図2は、機能ユニット212、リオーダバッファ2 16およびロード/ストアユニット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および最も古い未処理のバス2 55は、同じポインタを各クロックサイクルにおいて伝達するように動作する。 したがって、分岐ポインタバス250および最も古い未処理のバス255は、こ の実施例については共通のバス内に組合せることができ、かつ分岐検出器回路2 53を除くことができる。以下に説明するとおり、機能ユニット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(これ以降選択論理ブロック31 1とする)は、比較器の出力およびロード/ストアバッファ310の内容を受け 、データキャッシュ224について命令を2つまで発生する。選択論理ブロック 311は、関連の比較器回路が最も古いポインタと一致を示すまで、データキャ ッシュをミスすることがわかっているロード命令を選択しない。同様に、選択論 理ブロック311は、関連の比較器回路が最も古いポインタとの一致を示すまで 、 ストア命令を選択しない。一実施例において、選択論理ブロック311は、デー タキャッシュ224をアクセスするための命令を選択するための優先スキームを 採用する。最も高い優先順位が、最も古いポインタバス255上を転送される最 も古いポインタに一致するリオーダバッファタグを有するロードミスまたはスト ア命令に与えられる。中間の優先順位が最も古いポインタバス256上を転送さ れる最も古いポインタに一致するリオーダバッファタグを有するロードミスまた はストア命令に与えられる。最も低い優先順位は、未だデータキャッシュ224 をアクセスしていないロード命令に与えられる。 最も古いポインタを生成するスーパースカラマイクロプロセッサにおいてロー ド/ストアユニット222を採用することにより、データキャッシュ224をミ スするロード命令およびストア命令を順序通りに実行する。それらのリオーダバ ッファタグが最も古いポインタに伝達されて、それらがリタイアの状態にない最 も古い未処理の命令であることを示すまで、これら2つのタイプの命令のいずれ もデータキャッシュ222またはメインメモリサブシステムにアクセスを許され ない。したがって、このロードまたはストア命令に先立つ命令の各々は完了され かつこのロードまたはストア情報を実行することができる。 ここで図3Cを参照して、分岐検出器回路253(図2に示す)内で採用され るタグルーチング装置320および最も古い未処理検出器回路254(図2に示 す)の実施例を示す。タグルーチング装置320は、リオーダバッファアレイ2 52からのリオーダバッファタグを受けるマルチプレクサ321を含む。キャッ シュリオーダバッファタグに関連するのは、このタグがタグルーチング装置32 0によりルーチングを検討されるべきである場合、論理1を伝達する信号である 。図3Cに示す実施例は、マルチプレクサ321に結合される信号線322が示 すとおり、関連する信号が論理1である場合に、最も古いタグを選択する優先順 位コード化機構である。このコード化機構は、その関連する信号が論理1を伝達 しかつ最も古いタグに関連する信号が論理0を伝達する場合に、2番目に古いタ グを選択する。したがって、信号線323(2番目に古いタグを選択する)がA NDゲート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つ を形成する。 さらに他の実施例においては、クロックサイクルにおいて、機能ユニット21 2の各々が他の機能ユニット212の各々に対し、分岐ポインタに対する比較結 果および予測誤りがあった分岐命令を実行しているか否かを連絡する。分岐ポイ ンタに対する一致が機能ユニット212内で検出されない場合には、図4のフロ ー図に示すように、優先順位スキームが呼出される。優先順位スキームは、以下 のような訂正されたアドレスバス251を駆動する機能ユニットを選択する。す なわち、機能ユニット212Aは、予測誤りがある分岐命令を含んでいる場合に は訂正されたフェッチアドレスバス251を駆動し、機能ユニット212Bは、 予測誤りがある分岐命令を含みかつ機能ユニット212Aが予測誤りがある分岐 命令を含んでいない場合には、訂正されたフェッチアドレスバス251を駆動し 、機能ユニット212Cは、予測誤りがある分岐命令を含みかつ機能ユニット2 12Aまたは機能ユニット212Bのいずれもが予測に誤りがある分岐命令を含 んでいない場合には、訂正されたフェッチアドレスバス251を駆動し、かつ残 りの機能ユニットについても同様である。このようにして、訂正されたフェッチ アドレスバス251が、各クロックサイクルにおいて値を伝達する。 なお、本発明の他の実施例においては、さまざまな数の機能ユニットおよびロ ード/ストアユニットを採用することが可能である。さらに、分岐ポインタおよ び最も古いポインタの数は実施例ごとに変更することができる。ロード/ストア ユニット222は、この実施例においては、統合されたロード/ストアバッファ を備えて構成されるが、他の実施例においては、ロード/ストアユニット222 を、複数のロード/ストアバッファを備えて構成してもよく、またロードおよび ストア命令を別々のバッファに記憶することもできる。 上記の開示により、分岐予測誤り回復およびロード/ストア順序決めのための 機構について説明した。分岐予測誤り回復機構は、予測誤りが発見されると完了 に1クロックサイクルを要し、分岐予測誤りによるアイドルクロックサイクルの 数を最小にすることにより高性能化を図る。ロード/ストア順序決め機構によっ て、ユニット間のハンドシェイク量が最小限で、ロード/ストアの順序決めが図 られる。この最小限のハンドシェイクによって、インターフェイス信号の数が低 減されかつスーパースカラマイクロプロセッサの設計が簡素化される。 上の開示を十分に理解すれば、当業者にはさまざまな変更および修正が明らか であろう。以下の請求項は、そのようなすべての変更および修正を包含するもの と解釈されることを意図する。
【手続補正書】 【提出日】平成11年2月5日(1999.2.5) 【補正内容】 請求の範囲 1.ロードおよびストア命令を実行するよう構成されたロード/ストアユニット (222)を含むスーパースカラマイクロプロセッサ(200)であって、前記 ロード/ストアユニット(222)が、ロードおよびストアタイプの未決命令を 記憶するよう構成されたロードストア/ストアバッファ(310)を含み、前記 ロード/ストアユニット(222)が、最古の未処理命令を識別することが可能 なポインタを受けるようにさらに構成されており、かつロードストア/ストア命 令が、前記ロードストア/ストアユニット(222)が受ける前記ポインタに応 答して選択され実行されることを特徴とする、スーパースカラマイクロプロセッ サ。 2.ストア命令が前記ロードストア/ストアバッファ(310)に記憶される場 合、前記ロード/ストアユニット(222)が、前記ポインタにより識別される 前記ストア命令を実行するよう構成される、請求項1に記載のスーパースカラマ イクロプロセッサ。 3.データキャッシュ(224)をさらに含み、ロード命令が前記ロードストア /ストアバッファ(310)内に記憶され、事前にキャッシュミスであると判っ ている場合、前記ロード/ストアユニット(222)が、前記ポインタにより識 別される前記ロード命令を実行するよう構成される、請求項1または2に記載の スーパースカラマイクロプロセッサ。 4.前記ポインタを発生するよう構成されたリオーダバッファ(216)をさら に含む、請求項1、2または3に記載のスーパースカラマイクロプロセッサ。 5.前記ポインタが、リオーダバッファタグを伝達し、前記リオーダバッファタ グが前記リオーダバッファ(216)内の命令を唯一的に識別する、請求項4に 記載のスーパースカラマイクロプロセッサ。 6.前記ロード/ストアバッファ(310)が、前記ロード/ストアバッファ内に 記憶される各命令のためのリオーダバッファタグを記憶するよう構成され、かつ 前記ロード/ストアユニット(322)が、前記ロード/ストアバッファ(310 )内に記憶される前記リオーダバッファタグを、前記ポインタ上を伝達される前 記リオーダバッファタグと比較するよう構成される、請求項5に記載のスーパ ースカラマイクロプロセッサ。 7.前記ロード/ストアバッファ内に記憶される前記リオーダバッファタグが、 前記ポインタ上を伝達される前記リオーダバッファタグに等しいクロックサイク ルにおいて、前記ロード/ストアユニットが前記ロード/ストアバッファ(310 )内に記憶される前記リオーダバッファタグに関連する前記命令を完了するよう さらに構成されている、請求項6に記載のスーパースカラマイクロプロセッサ。 8.前記ロード/ストアユニット(222)が、命令が完了されるクロックサイ クルにおいて、前記リオーダバッファに信号を送るようさらに構成されている、 請求項6に記載のスーパースカラマイクロプロセッサ。 9.データキャッシュ(224)をさらに含み、前記ロード/ストアユニット( 222)が、前記ストア命令に関連する前記リオーダバッファタグが前記ポイン タ上を伝達される前記リオーダバッファタグに等しいクロックサイクルにおいて 、前記データキャッシュ(224)内へストア命令に関連するデータを記憶する ようさらに構成される、請求項6に記載のスーパースカラマイクロプロセッサ。 10.データキャッシュ(224)をさらに含み、前記ロード/ストアユニット (222)が、記憶場所を前記データキャッシュ(224)内へ転送させるよう にさらに構成され、かつ前記記憶場所が、前記データキャッシュ内においてミス するロード命令に関連し、かつ前記記憶場所が、前記ロード命令に関連する前記 リオーダバッファタグが前記ポインタ上を伝達される前記リオーダバッファタグ に等しいクロックサイクルにおいて、転送されるようになっている、請求項6に 記載のスーパースカラマイクロプロセッサ。 11.前記ロード/ストアユニット(222)が、前記データキャッシュ(22 4)にヒットするロード命令を実行するクロックサイクルにおいて、前記ロード /ストアユニット(222)が前記リオーダバッファ(216)に信号を送るよ うさらに構成される、請求項10に記載のスーパースカラマイクロプロセッサ。 12.前記前記ロード/ストアユニット(222)が、複数の前記ポインタを受 けるようさらに構成される、先行の請求項のいずれかに記載のスーパースカラマ イクロプロセッサ。 13.前記ロード/ストアユニット(222)が、クロックサイクルにおいて、 前記ロード/ストアバッファに記憶される複数の命令を完了するようさらに構成 される、先行の請求項のいずれかに記載のスーパースカラマイクロプロセッサ。 14.前記複数の命令および前記複数のポインタの数が等しい、先行の請求項の いずれかに記載のスーパースカラマイクロプロセッサ。

Claims (1)

  1. 【特許請求の範囲】 1.ロードおよびストア命令を実行するよう構成されたロード/ストアユニット を含むスーパースカラマイクロプロセッサであって、前記ロード/ストアユニッ トが、さらに、最も古い未処理の命令を識別することができるポインタを受ける ように構成されており、かつ前記ロード/ストアユニットが、ロードおよびスト ア型の未決の命令を記憶するよう構成されたロード/ストアバッファを含む、ス ーパースカラマイクロプロセッサ。 2.前記ロード/ストアユニットが、さらに、複数の前記ポインタを受けるよう 構成されている、請求項1に記載のスーパースカラマイクロプロセッサ。 3.前記ロード/ストアユニットが、さらに、クロックサイクルの間に前記ロー ド/ストアバッファ内に記憶される複数の命令を完了するよう構成されている、 請求項2に記載のスーパースカラマイクロプロセッサ。 4.前記複数の命令および前記複数のポインタが同じ数である、請求項3に記載 のスーパースカラマイクロプロセッサ。 5.前記リオーダバッファが前記ポインタを発生するよう構成された、リオーダ バッファをさらに含む、請求項1に記載のスーパースカラマイクロプロセッサ。 6.前記ポインタがリオーダバッファタグを伝達する、請求項5に記載のスーパ ースカラマイクロプロセッサ。 7.前記ロード/ストアバッファが、前記ロード/ストアバッファ内に記憶される 各命令のためのリオーダバッファタグを記憶するよう構成され、かつ前記ロード /ストアユニットが、前記ロード/ストアバッファ内に記憶される前記リオーダバ ッファタグを、前記ポインタ上を伝達される前記リオーダバッファタグと比較す るよう構成される、請求項6に記載のスーパースカラマイクロプロセッサ。 8.前記ロード/ストアバッファ内に記憶される前記リオーダバッファタグが、 前記ポインタ上を伝達される前記リオーダバッファタグに等しいクロックサイク ルにおいて、前記ロード/ストアユニットが前記ロード/ストアバッファ内に記憶 される前記リオーダバッファタグに関連する前記命令を完了するよう構成されて いる、請求項7に記載のスーパースカラマイクロプロセッサ。 9.前記ロード/ストアユニットが、さらに、命令が完了されるクロックサイク ルにおいて前記リオーダバッファに信号を送るよう構成されている、請求項7に 記載のスーパースカラマイクロプロセッサ。 10.データキャッシュをさらに含み、前記ロード/ストアユニットが、さらに 、前記ストア命令に関連する前記リオーダバッファタグが前記ポインタ上を伝達 される前記リオーダバッファタグに等しいクロックサイクルにおいて、前記デー タキャッシュ内へストア命令に関連するデータを記憶するよう構成される、請求 項7に記載のスーパースカラマイクロプロセッサ。 11.データキャッシュをさらに備含み、前記ロード/ストアユニットが、さら に、記憶場所を前記データキャッシュ内へ転送させるように構成され、かつ前記 記憶場所が、前記データキャッシュ内においてミスするロード命令に関連しかつ 前記記憶場所が、前記ロード命令に関連する前記リオーダバッファが前記ポイン タ上を伝達される前記リオーダバッファタグに等しいクロックサイクルにおいて 、転送されるようになつている、請求項7に記載のスーパースカラマイクロプロ セッサ。 12.データキャッシュをさらに含み、前記ロード/ストアユニットが、さらに 、前記ロード/ストアユニットが前記データキャッシュにヒットするロード命令 を実行するクロックサイクルにおいて、前記リオーダバッファに信号を送るよう 構成されている、請求項11に記載のスーパースカラマイクロプロセッサ。
JP50596098A 1996-07-16 1996-07-16 ストアおよびロードミス命令を完了するための複数のポインタを備えるロード/ストアユニット Expired - Fee Related JP3717524B2 (ja)

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 true JP2000515277A (ja) 2000-11-14
JP3717524B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013122774A (ja) * 2006-09-27 2013-06-20 Qualcomm Inc 同時に予測された分岐命令を解決するための方法および装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013122774A (ja) * 2006-09-27 2013-06-20 Qualcomm Inc 同時に予測された分岐命令を解決するための方法および装置

Also Published As

Publication number Publication date
DE69611388D1 (de) 2001-02-01
DE69611388T2 (de) 2001-08-09
EP0912927A1 (en) 1999-05-06
WO1998002805A1 (en) 1998-01-22
EP0912927B1 (en) 2000-12-27
JP3717524B2 (ja) 2005-11-16

Similar Documents

Publication Publication Date Title
US6065103A (en) Speculative store buffer
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US6079014A (en) Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US6185676B1 (en) Method and apparatus for performing early branch prediction in a microprocessor
EP1228426B1 (en) Store buffer which forwards data based on index and optional way match
US5901302A (en) Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US5822575A (en) Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction
US6442707B1 (en) Alternate fault handler
US6012125A (en) Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions
US5961634A (en) Reorder buffer having a future file for storing speculative instruction execution results
US5960467A (en) Apparatus for efficiently providing memory operands for instructions
JP3803723B2 (ja) 分岐予測を選択する分岐セレクタを採用する分岐予測機構
JP2001521241A (ja) 分岐予測を迅速に特定するための命令キャッシュ内のバイト範囲に関連する分岐セレクタ
US5983342A (en) Superscalar microprocessor employing a future file for storing results into multiportion registers
EP1204022A1 (en) A line-oriented reorder buffer for a superscalar microprocessor
KR19990072271A (ko) 고성능의추론적인오정렬로드연산
US8171240B1 (en) Misalignment predictor
US5878244A (en) 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
JP2003515214A (ja) 計算を狭いオペランドで実施するための方法と装置
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
US20070033385A1 (en) Call return stack way prediction repair
US5903741A (en) Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US6604191B1 (en) Method and apparatus for accelerating instruction fetching for a processor

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 Request for written amendment filed

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