説明

ロード操作の推測結果をレジスタ値にリンクするためのシステムおよび方法

【課題】マイクロプロセッサにおいてデータ推測を実行し、誤推測に対する効率的な復旧機構を提供する。
【解決手段】第1アドレッシングパターン(206)および第1タグ(208)を記憶するように構成されたエントリ(220)を含むメモリファイル(132)と、前記メモリファイルに結合される実行コア(124)とを含むシステムである。メモリファイルは、エントリに含まれる第1アドレッシングパターンをロード操作の第2アドレッシングパターンと比較するように構成される。第2アドレッシングパターンがエントリに記憶されている第1アドレッシングパターンに合致するとき、メモリファイルは第1タグによって指定されるデータ値をロード操作の推定結果にリンクするように構成される。実行コアはロード操作に依存する第2操作を実行するときに推測結果にアクセスするように構成される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はマイクロプロセッサに関し、さらに詳細にはマイクロプロセッサにおける投機的実行の実施に関する。
【背景技術】
【0002】
スーパースカラーマイクロプロセッサは、複数の命令を並列に実行し、その設計に一致した最小限のメモリサイクルを用いることによって、高い性能を発揮する。しかしながら、命令と命令の間のデータおよび制御フローの依存性によって、所定の時間内に発行可能な命令数が制限されてしまう。結果として、ある種のプロセッサではさらなる性能向上を図るために投機的実行(speculative execution)をサポートしている。
【0003】
投機の1タイプは制御フロー推測(speculation)である。制御フロー推測はプログラム制御が進行する方向を予測する。例えば、分岐が発生するかどうかを予測するために分岐予測が用いられる。様々なタイプの分岐予測が利用可能であり、単純に毎回同じ予測を行う方法から、履歴を基にした予測を行うために、プログラム中の過去の分岐の詳細な履歴を維持する方法まである。分岐予測は、ハードウェアの最適化、コンパイラの最適化、またはその両方によって容易になる。分岐予測機構によって提供される予測に基づいて、命令は投機的にフェッチされ、実行される。分岐命令が最終的に評価されるとき、分岐予測を検証することができる。もし予測が誤っていれば、誤った予測に基づいて投機的に実行されたすべての命令は廃棄される。
【0004】
すでに提案されている投機の別のタイプはデータ推測(speculation)である。例えば、データ項目の値を予測する値予測(value prediction)は、データのパターンを監視して、それらのパターンの予測に基づいている(例えば、インデックスカウンタの変数値はその変数の過去の値がどのように増加したか、または減少したかを監視することによって予測可能である。アドレス予測はデータの場所の予測を含む。さらに別のデータ推測のタイプは、メモリシステムオプティミズム(memory system optimism)と呼ばれる。マルチプロセッサシステムでは、コヒーレンシチェックが完了する前に、プロセッサがそのプロセッサのローカルキャッシュからのデータを用いて命令を投機的に実行するときに、メモリシステムオプティミズムが生じる。同様に、他のタイプのデータ推測では、ロードが実行される時点で未だ計算されていないアドレスを持つストアの前に、たとえロードによってアクセスされるアドレスと同じアドレスに対してそのストアがデータをストアする可能性があるとしても、ロードを投機的に実行することを許可する。これらのデータ推測のすべてのタイプにおいて、根源的な条件を最終的に評価し、推測を検証するか、または失敗する。もし、最終的に推測が不正確であった場合、推測データを用いて実行された命令は再実行される(例えば、更新された、および/または非推測データを用いる)。
【0005】
投機的実行(speculation)は、依存性チェックの完了を待たずに命令の実行を進めることができるので、正しい推測によって得られる効率が不正確な推測によって失われる効率を超えていれば、大幅な性能の向上が達成できる。従って、マイクロプロセッサにおいてデータ推測を実行し、誤推測に対する効率的な復旧機構を提供できるようになることが望ましい。
【発明の開示】
【0006】
ロード操作(オペレーション)の推測結果をレジスタ値にリンクするための方法およびシステムの様々な実施形態が実現可能である。一実施形態では、システムは第1アドレッシングパターンおよび第1タグを記憶するように構成されたエントリを含むメモリファイルと、当該メモリファイルに結合された実行コアとを含む。メモリファイルは、エントリに含まれる第1アドレッシングパターンをロード操作の第2アドレッシングパターンと比較するように構成される。第2アドレッシングパターンがエントリに記憶されている第1アドレッシングパターンに合致するときは、メモリファイルは第1タグによって指定されるデータ値をロード操作の推測結果にリンクするように構成されている。実行コアは、ロード操作に依存する第2操作を実行するときに、推測結果にアクセスするように構成されている。
【0007】
一実施形態の方法は、第1操作の第1アドレッシングパターンを第2操作の第2アドレッシングパターンと比較するステップを含む。第2操作はプログラムの順序において第1操作よりも早く発生する。第1アドレッシングパターンが第2アドレッシングパターンに合致するならば、第2操作についてのオペランドのタグによって指定されるデータ値は第1操作の推測結果にリンクされる。第1操作の結果に依存するオペランドソースを持つ第3操作はそのタグによって指定されるデータ値を用いて実行される。
【0008】
本発明は、添付の図面に関連した以下の詳細な説明を参照することによって、よりよく理解することができる。
本発明は様々な変更や代替形態が可能であるが、本発明の個別の実施形態は、各図面において例示として示されたものであり、ここでは詳細に説明されている。しかしながら、ここで行われている実施形態の説明は、本発明を開示された特定の形態に限定することを意図するものではなく、逆に、本発明は、添付の特許請求の範囲により定義されるような本発明の精神や範囲の範疇であるすべての変更、均等物、及び代替物を含むものであることは理解すべきである。本明細書中の見出しは文章構成のためのものに過ぎず、本明細書の説明または特許請求の範囲を限定または解釈のために用いるべきものではないことに注意されたい。さらに、本明細書において用いられる「できる」という用語は、許可的な意味合い(つまり、そのような可能性を持つ、または可能である)に用いられ、強制的な意味合いではない(つまり、しなければいけない)ことに注意すべきである。「含む」という用語およびその派生語は「含むが、それに限定されない」ことを意味する。「接続される」という用語は「直接的または間接的に接続される」ことを意味し、「結合される」という用語は「直接的または間接的に結合される」ことを意味する。
【発明を実施するための最良の形態】
【0009】
図1は、マイクロプロセッサ100の一実施形態のブロック図である。マイクロプロセッサ100はシステムメモリ200に記憶された命令を実行するように構成される。これらの命令の多くはシステムメモリ200に記憶されたデータを操作するものである。システムメモリ200はコンピュータシステム全体に物理的に配置可能であり、1以上のマイクロプロセッサ100からアクセスできる。
【0010】
マイクロプロセッサ100は命令(インストラクション)キャッシュ106およびデータキャッシュ128を含む。マイクロプロセッサ100は命令キャッシュ106に結合されたプリフェッチユニット108を含む。ディスパッチユニット104は命令キャッシュ106から命令を受信して、スケジューラ118に操作(オペレーション)を発送するように構成される。1以上のスケジューラ118はディスパッチユニット104から発送された操作を受信し、1以上の実行コア124に操作を発行するように結合できる。実行コア124は、データキャッシュ128に対するアクセスを実行するように構成されたロード/ストアユニット126を含む。実行コア124によって生成された結果は、結果バス130に出力されうる。これらの結果は続いて発行される命令のためのオペランド値として使用可能であり、および/またはレジスタファイル116に記憶することができる。リタイアキュー(retire queue)102はスケジューラ118およびディスパッチユニット104に接続される。このリタイアキューは、発行された操作のそれぞれがいつリタイア可能であるかを決定するように構成される。一実施形態では、マイクロプロセッサ100はx86アーキテクチャと互換性を持つように設計される。マイクロプロセッサ100はその他多くの要素を含んでいてもよいことに注意すべきである。例えば、マイクロプロセッサ100は分岐予測ユニット(図示せず)を含んでいてもよい。
【0011】
命令キャッシュ106は命令を、ディスパッチユニット104がそれらを受信する前に、一時的に記憶することができる。命令コードは、システムメモリ200からプリフェッチユニット108を介してコードをプリフェッチすることにより、命令キャッシュ106に供給される。命令キャッシュ106は様々な構成で実装可能である(例えば、セットアソシアティブ、フルアソシアティブ、またはダイレクトマッピング)。
【0012】
プリフェッチユニット108は命令キャッシュ106に記憶するためにシステムメモリ200から命令コードをプリフェッチすることができる。一実施形態では、プリフェッチユニット108はシステムメモリ200から命令キャッシュ106にコードをバースト転送するように構成することができる。プリフェッチユニット108は様々な特定のコードプリフェッチ技術およびアルゴリズムを採用することができる。
【0013】
ディスパッチユニット104は、オペランドアドレス情報、即値データ(immediate data)および/または変位データ(displacement data)とともに、実行コア124が実行可能なビットエンコードされた操作を含む信号を出力する。ある実施形態では、ディスパッチユニット104はある種の命令を実行コア124内で実行可能な操作にデコードするためのデコード回路(図示せず)を含んでいてもよい。単純な命令は単一の操作に対応する。ある実施形態では、より複雑な命令は複数の操作に対応する。レジスタの更新を含む操作をデコードすると、レジスタファイル116中のあるレジスタ位置が推測レジスタ状態を記憶するために予約される(別の実施形態では、再整理バッファが各レジスタに対する一以上の推測レジスタ状態を記憶するために用いられる。レジスタマップ134は、レジスタのリネームを容易にするために、ソースおよび目的オペランドの論理レジスタ名を物理レジスタ名に変換することができる。レジスタマップ134は、レジスタファイル116内のどのレジスタが現在割り当てられているか、割り当てられていないかを追跡可能である。
【0014】
図1のマイクロプロセッサ100はアウトオブオーダー実行をサポートする。リタイアキュー102はレジスタ読み出しおよび書き込み操作のためにオリジナルのプログラムシーケンスの追跡を維持し、投機的命令実行および分岐予測ミスからの復帰を許可し、精確な例外処理を容易にする。ある実施形態では、リタイアキュー102は、推測レジスタ状態に対するデータ値の記憶を提供することにより、レジスタのリネームをもサポートする。多くの実施形態では、リタイアキュー102は再整理バッファと同じように機能する。しかしながら、典型的な再整理バッファとは異なり、リタイアキュー102はなんらのデータ値記憶をも提供しない。ある実施形態では、リタイアキュー102は、有効になった操作がバッファのボトムに移動し、それによって待ち行列の「一番上」に新しいエントリのための空きを作る、先入れ先出し構造として実装される。操作がリタイアすると、リタイアキュー102が推測レジスタ状態を記憶する必要がなくなったレジスタファイル116内のレジスタの割り当てを取り消し、レジスタマップ134に対してどのレジスタが現在空いているのかを示す信号を供給する。レジスタファイル116内(他の実施形態では、再整理バッファ内)の推測レジスタ状態をそれらの状態を生成した操作が有効になるまで維持することによって、分岐予測が間違っていたときに、予測ミスされたパスに従った投機的に実行された操作の結果がレジスタファイル116内で無効化される。
【0015】
特定の操作をデコードして、もし要求されているオペランドがレジスタの位置であるときは、レジスタアドレス情報がレジスタマップ134(または再整理バッファ)に送られる。例えば、x86アーキテクチャにおいては、8つの32ビット論理レジスタがある(例えば、EAX,EBX,ECX,EDX,EBP,ESI,EDIおよびESP)。物理レジスタファイル116(または再整理バッファ)はこれらの論理レジスタの内容を変更する結果のための記憶装置を含み、アウトオブオーダー実行を許可する。レジスタファイル116内の物理レジスタは、デコード時に論理レジスタの一つの内容を修正するために決定される各操作の結果を記憶するために割り当てられる。従って、特定のプログラムを実行している間の様々な時点において、レジスタファイル116(または、他の実施形態では、再整理バッファ)は、与えられた論理レジスタの投機的に実行された内容を含む1以上のレジスタを持つ。
【0016】
レジスタマップ134は物理レジスタをある操作の目的オペランドとして指定された特定の論理レジスタに割り当てる。ディスパッチユニット104は、レジスタファイル116が、所与の操作においてソースオペランドとして指定された論理レジスタに割り当てられた、既に割り当てられた1以上の物理レジスタを持つことを決定する。このレジスタマップ134はその論理レジスタに最も最近に割り当てられた物理レジスタのためのタグを供給することができる。このタグは、レジスタファイル116内のオペランドのデータ値にアクセスするために用いることができ、または結果バス130において転送される結果を介してデータ値を受信することができる。もしオペランドがメモリ位置に対応するならば、そのオペランド値はロード/ストアユニット222を介して結果バスに供給される(結果転送、および/またはレジスタファイル118への記憶のため)。スケジューラ118のひとつから操作が発行されると、オペランドデータ値が実行コア124に供給される。他の実施形態においては、操作が発送されると、オペランド値が対応するスケジューラ118に供給される(その操作が発行されたときに、対応する実行コア124に供給する代わりに)。
【0017】
ディスパッチユニット104の出力において供給されるビットエンコードされた操作および即値データは1以上のスケジューラ118に送られる。ここでは、スケジューラとは操作がいつ実行可能かを検出し、1以上の実行ユニットに対して準備完了操作(ready operation)を発行する装置である。例えば、予約装置(reservation station)はスケジューラである。各スケジューラ118は、実行コア124への発行待ちのいくつかの係属中の操作のための操作情報(例えば、オペランド値、オペランドタグ、および/または即値データとともにビットエンコードされた実行ビット)を保持することができる。ある実施形態では、スケジューラのそれぞれはオペランド値の記憶を提供しない。代わりに、各スケジューラは、いつオペランド値が実行コア124によって読み出し可能になるか(レジスタファイル116または結果バス130から)を決定するために、発行された操作およびレジスタファイル116において利用可能な結果を監視する。ある実施形態においては、各スケジューラ118は専用実行コア124と関係付けられる。他の実施形態においては、単一のスケジューラ118が2以上の実行コア124に対して操作を発行する。
【0018】
スケジューラ118は実行コア124によって実行される操作情報を一時記憶するために提供されうる。上述のとおり、各スケジューラ118は係属中の操作のために操作情報を記憶することができる。さらに、各スケジューラはすでに実行済みであるが、再発行される可能性のある操作のための操作情報を記憶することができる。実行のためにその時に利用可能にされた任意の必要とされるオペランドの値に応答して、操作が実行のために実行コア124に対して発行される。従って、操作が実行される順番は、もともとのプログラム命令シーケンスの順番とは同じでない可能性がある。データ推測を含む操作を、それらが非投機的になるまでスケジューラ118内にとどめ、データ推測が間違っていたときに再発行可能にすることができる。
【0019】
一実施形態では、実行コア124のそれぞれは、シフト、ローテート、論理演算、および分岐操作と同様に、加算および減算の整数数値演算も実行するように構成された部分を含む。浮動小数点ユニットも浮動小数点演算を提供にするために含めることができる。実行コア124の一以上がロード/ストアユニット126によって実行されるロードおよびストアメモリ操作のためのアドレス生成を実行するように構成可能である。
【0020】
さらに実行コア124は分岐予測ユニットに対して条件分岐命令の実行に関する情報を提供することができ、それによってもし分岐予測ミスが発生したときに、分岐予測ユニットは命令処理パイプラインおよびリダイレクトプリフェッチユニット106に入力された、予測を誤った分岐に続く命令をフラッシュすることができるようにする。このリダイレクトプリフェッチユニット106は、次に命令キャッシュ106またはシステムメモリ200から正しい命令セットのフェッチを開始する。そのような状況では、予測誤りのあった分岐命令の後に発生したもともとのプログラムシーケンス中の命令の結果は廃棄され、それらには投機的に実行され、レジスタファイル116に一時的に記憶されているものも含まれる。実行コア124内の部品によって生成された結果は、もしレジスタの値が更新されていれば、結果バス130においてレジスタファイル116に対して出力される。もしメモリ位置の内容が変更されていれば、実行コア124内で生成された結果はロード/ストアユニット126に対して供給される。
【0021】
ロード/ストアユニット126は実行コア124とデータキャッシュ128との間のインターフェイスを提供する。一実施形態では、ロード/ストアユニット126は、係属中のロードおよびストアに関するデータおよびアドレス情報のためのいくつかの記憶位置を持つロード/ストアバッファを持つように構成される。さらに、このロード/ストアユニット126は、データコヒーレンシが維持されていることを保証するために、係属中のストア命令に対するロード命令の依存性チェックを実行することができる。
【0022】
データキャッシュ128はロード/ストアユニット126とシステムメモリ200との間で転送されるデータを一時的に記憶するために提供されるキャッシュメモリである。上述の命令キャッシュ106と同様に、データキャッシュ128はセットアソシアティブ構成を含む、様々な特定のメモリ構成において実装可能である。さらに、データキャッシュ106および命令キャッシュ128は、ある実施形態においては統一されたキャッシュとして実装可能である。
【0023】
図2Aは、ディスパッチユニット104の一実施形態を示す。この実施形態では、ディスパッチユニット104はレジスタマップ134およびメモリファイル132を含む。上述のとおり、レジスタマップ134はレジスタリネームを提供するように構成することができる。レジスタマップ134は各ソースおよび目的オペランドについての論理レジスタ名を受信して、その論理レジスタに直近に割り当てられた物理レジスタの物理レジスタ名を出力する。メモリファイル132はメモリファイルコントローラ202およびメモリファイル記憶装置204を含む。
【0024】
メモリファイル記憶装置204は1以上のエントリ220を含む。各エントリ220は、アドレッシングパターン206と、そのエントリのアドレッシングパターンに関連するタグ208とを含む。各タグは、データ値を、それが生成されたときにそのデータ値がどこに記憶されているか(例えば、再整理バッファ内、またはレジスタファイル116内)を示すことにより特定する。例えば、例示の実施形態に示すように、それぞれのタグはレジスタマップ134によって指示されるように、そのデータ値を記憶するために割り当てられた物理レジスタを特定することができる。各アドレッシングパターンは、ある操作中のアドレスを特定するために用いられる情報のすべてまたは一部を含む。例えば、図2Bを概観すると、例示としてのアドレッシングパターン206が示されている。この実施形態では、アドレッシングパターン206はベース論理レジスタ名210、インデックス論理レジスタ名212、および変位214を含む。あるアドレッシングパターン206は、メモリ内の特別のセグメントを特定するレジスタのセグメント論理レジスタ名を含む。多くの実施形態では、メモリファイル記憶装置204に記憶されるアドレッシングパターン206はある操作について指定されたアドレッシング情報の全部は含まないことに注意する必要がある。例えば、メモリファイル記憶装置204内のエントリは変位フィールド214内の変位を指定するのに用いられる全部のビットの一部しか記憶しない。他の実施形態では、メモリファイルコントローラ202は、メモリファイル中のエントリが特定の操作のためのアドレッシング情報のすべてを記憶できるか否かに応じて、メモリファイル記憶装置204にエントリを割り当てるかどうかを選択的に選択する。例えば、もしメモリファイル記憶装置204中の各エントリが24ビットの変位情報を含む特定の操作についての16ビットの変位情報およびアドレッシング情報まで記憶できるならば、メモリファイルコントローラ202はその操作のアドレッシング情報に対してメモリファイルエントリを割り当てない。メモリファイル記憶装置204は、いくつかのレジスタ、ラッチ、フリップフロップ、またはある種の実施形態では他のクロック駆動される記憶装置によって実現可能である。別の実施形態では、メモリファイル記憶装置204は、1以上のRAM(ランダムアクセスメモリ)セルを含む。
【0025】
メモリファイルコントローラ202は発送されていない操作中の指定されたアドレッシングパターンをメモリファイル記憶装置204内のエントリに記憶されたそれらに対して比較する。もしある操作のアドレッシングパターンがメモリファイル記憶装置204内のエントリに現在記憶されているどのアドレッシングパターンにも合致しないときは(つまり、その操作のアドレッシングパターンがメモリファイル記憶装置をミスした)、メモリファイルコントローラ202はその操作のアドレッシングパターンのすべてまたは一部を記憶するためにメモリファイル記憶装置204に新しいエントリを割り当てることができる。もしメモリファイル記憶装置204内に割り当てられる空きのエントリがない場合には、メモリファイルコントローラ202は、LRU(Least Recently Used)、FIFO(先入れ、先出し)、ランダム置換などの置換技術を用いて上書きするエントリを選択する。割り当てられたエントリ内の操作のアドレッシングパターンの記憶に加えて、メモリファイルコントローラ202はさらに、その操作のアドレッシングパターンによって指定されたメモリ位置からロードされ、またはそのメモリ位置にストアされた値を特定するタグ(例えば、物理レジスタの名前)を記憶することができる。例えば、もしメモリからデータをロードする操作が処理されているならば、その操作に応答して割り当てられたエントリはそのロード操作の結果を記憶するために割り当てられた物理レジスタの名前を記憶することができる。もしあるメモリ位置へデータをストアする操作が処理されているならば、メモリファイルコントローラ202はメモリファイル記憶装置204にそのストア操作によってストアされる値を記憶するレジスタの物理レジスタ名を記憶することができる。
【0026】
もしある操作のアドレッシングパターン(またはそのパターンの一部)がすでにメモリファイル記憶装置204内のエントリにすでに記憶されていたとすると(つまり、その操作のアドレッシングパターンがメモリファイル記憶装置でヒットした)、メモリファイルコントローラ202は合致するアドレッシングパターンを含むエントリを使用し、または変更することができる。もしロード操作(特定のアドレスからレジスタに対して値をロードする操作)が処理されているなら、メモリファイルコントローラ202は合致するエントリ内に記憶された物理レジスタ名208を出力することができる。もしストア操作(レジスタから特定のアドレスに対して値をストアする操作)が処理されているなら、メモリファイルコントローラ202は記憶されているデータのタグとともに合致するエントリに記憶されているタグ(例えば、物理レジスタ名208)を上書きすることができる。
【0027】
もしロード操作を処理中で、そのロード操作がメモリファイル記憶装置204をヒットしたときは、メモリファイルコントローラ202から出力されたタグは、そのタグによって指定された記憶されている値をそのロード操作の推測結果に結びつけるために用いることができる。例えば、ある種の実施形態では、ロード操作がスケジューラ118に対して発送されたとき、メモリファイル132によって出力されたタグもそのスケジューラに供給される(例えば、推測ソースオペランドタグとして)。スケジューラ118はそのタグによって指定された値の利用可能性に応じて(例えば、レジスタファイル116において、または結果バス130において)、操作を発行する。実行コア124はロード操作を実行して、結びつけられた値が結果バス130上にそのロード操作の推測結果としてブロードキャストされるようにすることができる(ある実施形態では、ロードの結果として生成されたデータ値はそれ自身がフラグされることはなく、または推測値として指定されることに注意すべきである)。他の実施形態では、以下に述べるように、そのデータ値は推測マップにタグを記憶することによって、ロード操作の投機的結果に結びつけることができる。
【0028】
この結びつけの結果、このタグによって指定されたデータ値は、推測結果を用いた依存的操作の実行を可能にするために、ロードの推測結果として、データ値が(例えば、レジスタファイル116内において、または結果バス130において)利用可能になりしだい転送される。多くの場合、これによりロード操作の推測結果を用いた依存的操作を、それらの実行がロード操作の非推測結果が利用可能になるまで遅延するよりも早く、実行することができる。ある実施形態では、ロード操作を実行することによって、データ値がロード操作の推測結果として結果バス130に出力されるように、データ値を転送することができる。例えば、一実施形態では、非推測ロードを実行するために3サイクルを費やす代わりに(ロードがデータキャッシュ128でヒットしたと仮定して)、データ値およびこのデータ値をロード結果として指定するタグを出力して、このロードを1サイクルで実行することができる。他の実施形態では、メモリファイルコントローラ202がこのタグ出力を発送の際に推測オペランドソースとして依存的操作(ロード操作によって生成されたオペランドを持つ操作)に直接供給することによって、このデータ値をより間接的な方法で転送することができる。このデータ値を転送する手段は、ロード操作を推測レジスタ対レジスタMOVE操作として実行する、またはタグを推測オペランドソースタグとして依存的操作に供給するに変更するように構成されたディスパッチユニット、結びつけられた(リンクされた)データ値の利用可能性に応じて変更されたロードおよび/または依存的操作を発行するように構成されているスケジューラ、および結びつけられたデータ値をロードの結果として出力するか、または結びつけられたデータ値を用いて依存的操作を実行するように構成された実行コアのうちの一つ以上を含む。
【0029】
ロード/ストアユニット126(または、マイクロプロセッサ100内のリンクを検証するための他の手段)は、メモリファイル132によって指定された物理レジスタ内に記憶された値のリンクをロード操作の推測結果に対して検証する。もしリンクが間違っているならば、ロード/ストアユニット126そのロードを再発行させるか、および/または結果バス130にそのロード操作の正しい結果をブロードキャストする。ロードの再発行によって、ロードの推測結果を用いて実行したすべての依存的操作は再発行され、更新された、非推測値を用いて実行される。他の実施形態では、もしリンクが誤っていれば、プロセッサ100は推測誤りの後に発生した操作をフラッシュして、ロード操作の正しい結果を用いてそれらの操作の実行を再開する。
【0030】
図示するように、メモリファイル132は、データキャッシュ128(またはシステムメモリ200)内のデータにアクセスする操作中のアドレッシングパターンを追跡する。結果として、物理レジスタに記憶されるレジスタ値はメモリ中の特定のアドレスに記憶された値に結びつけられる(リンクされる)。
【0031】
メモリファイル132の操作をさらに説明するために、ディスパッチユニット104によって処理されるべき操作シーケンスが以下の操作を含むものと仮定する。
MOVE EBX,[EDX+EAX−変位A] (ロード1)
MOVE ECX,[EDX+EAX−変位A] (ロード2)
MOVE[EDX+EAX−変位A],EAX (ストア1)
これらの操作のそれぞれはプログラム順序における1以上の介在操作によって分離することができる。図示するように、これら3つの操作のそれぞれは、EDX+EAX−変位Aという同じアドレッシングパターンを含む。
【0032】
ロード1のアドレッシングパターンがメモリファイル132に供給されるとき、メモリファイルコントローラ202はメモリファイル記憶装置204においてロード1のアドレッシングパターンに合致するアドレッシングパターンを検索する。メモリファイル記憶装置204においてそのアドレッシングパターンはミスしたと仮定すると、メモリファイルコントローラ202は、ロード操作のアドレッシングパターンおよびレジスタマップ134から提供されるロード操作の目的物理レジスタの物理レジスタ名のすべてまたは一部を記憶するために、エントリを割り当てる(割り当てられていないエントリを用いて、またはすでに割り当てられているエントリに上書きすることによって)。ロード操作はメモリファイル記憶装置でミスしているので、メモリファイルコントローラ202はそのロード操作に対するタグを出力しない。
【0033】
続いてロード2がメモリファイル132によって処理されるとき、そのアドレッシングパターンはロード1に応答して割り当てられたエントリ内のアドレッシングパターンに合致している(ロード1のエントリが介在する操作に応答して上書きされていないものと仮定する)。ロード2のアドレッシングパターンのメモリファイル記憶装置204でのヒットに応答して、メモリファイルコントローラ202は、ロード1の結果を記憶するために割り当てられた物理レジスタの物理レジスタ名を出力することができる。この物理レジスタ名を、ロード1によってロードされたデータ値をロード2の推測結果に対して結びつけるために用いることができる。
【0034】
ストア1がメモリファイル132によって処理されるとき、そのアドレッシングパターンはロード1に応答して割り当てられたエントリにおいてヒットしうる(ここでも、介在する操作がこのエントリを上書きしていないと仮定する)。しかしながら、ロード1の結果を記憶するために割り当てられた物理レジスタの物理レジスタ名を出力する(ロード2について実行したように)代わりに、メモリファイルコントローラ202は、そのエントリに記憶されている物理レジスタ名208を、ストア1によってストアされたデータを含むレジスタの物理レジスタ名で上書きする。従って、後続のロード操作がこのエントリでヒットしたときは、メモリファイルコントローラ202は、ロード1の目的レジスタの物理レジスタ名を出力する代わりに、ストア1のソース物理レジスタの物理レジスタ名を出力する。
【0035】
メモリファイル132は推測構造として使用されているので、メモリファイル記憶装置204に記憶されている情報の正確性は、マイクロプロセッサ100の正確な動作にとって決定的なものではない(例えば、メモリファイル132における予測誤りは、マイクロプロセッサ100の出力にエラーを生じさせない)。しかしながら、ロード操作の推測結果を物理レジスタ内に記憶された値に正確に結びつけることによって得られる利益を増大させ、および/または予測を誤った推測リンクによって生じる性能低下を減らすために、メモリファイル132の正確性を向上させることが望ましい。ある実施形態では、メモリファイル132の正確性は、アドレスを指定するのに用いられるレジスタの更新が検出されたときに、メモリファイル記憶装置204内のエントリを無効にすることで向上する。例えば、各アドレッシングパターンは、アドレス計算のためのベースおよびインデックスを特定するために用いられる1以上の論理レジスタ識別子を含みうる。もし後続の操作があるエントリのアドレッシングパターン206の一部として指定された論理レジスタの一つを変更するならば、そのエントリは無効にされうる。従って、図2Aに示すように、エントリの無効化を実行するために、各操作の目的レジスタの論理レジスタ名をメモリファイル132に入力することができる。
【0036】
さらに、ある実施形態では、特定のアドレスにおけるデータに書き込みアクセスする権限を得た他の装置を詮索するのに応じて、メモリファイル記憶装置204内のエントリは無効にされうる。同様に、推測誤りの検出に応じて、エントリは無効化されうる。一般的に、メモリファイル記憶装置204内のエントリの正確性に影響を与えうるような多くの条件が監視され、いつエントリを無効にするかを決定するために用いられる。しかしながら、メモリファイル132は推測構造であるため、もしある種の監視方法を実装するための追加のハードウェアコストが、メモリファイルの正確性の潜在的な改良を上回るならば、いくつかの実施形態ではこれらの監視方法のいくつかを実装しない。
【0037】
メモリファイル132は、レジスタ値を推測ロード結果に結びつけるために使用されるべき操作ストリームにおいて互いに相対的に切り離された操作と操作の間の依存性を許容していることに注意する必要がある。従って、メモリファイルは、いくつかの介在操作によって分離可能な操作と操作の間の依存履歴を供給することができる。
【0038】
図3は、ロード操作の推測結果をレジスタ値に結びつける方法の一実施形態の流れ図である。ステップ301において、タグがアドレッシングパターンに関連付けられ、両者が同じデータ値を記憶している可能性が高いことを示す。タグおよびアドレッシングパターンの両者は第1ロードまたはストア操作に対して指定される。例えば、第1操作がロード操作であるとすると、タグはそのロードの結果を記憶するために割り当てられた物理レジスタを指定し、アドレッシングパターンはそのロードのためのアドレスを計算するために用いられる。もし代わりに第1操作がストア操作であったとすると、このアドレッシングパターンはストアの目的アドレスを指示し、タグはそのストア操作によって記憶されるデータを指定する。ある実施形態では、このタグおよびアドレッシングパターンは、両方をメモリファイル中のあるエントリに記憶することによって関連付けられる。
【0039】
もしロード操作のアドレッシングパターンが第1操作のアドレッシングパターンに合致すると、そのロードの推測値は、ステップ303−305に示すように、その第1操作について指定されたタグによって特定されるデータ値に結びつけられる。もしロード操作のアドレッシングパターンが第1操作のそれに合致しない場合は、そのロードのアドレッシングパターンおよびロードの目的についてのタグは、ステップ303−311に示すように、関連付けられる(例えば、両者をメモリファイルのあるエントリに記憶することによって)。さらに、ステップ313に示すように、ロードは通常データキャッシュにアクセスすることによって実行される。一実施形態では、ロード操作のアドレッシングパターンは2以上の過去の操作のアドレッシングパターンに対して比較される。例えば、ロードのアドレッシングパターンを、メモリファイルに現在記憶されているアドレッシングパターンのそれぞれに対して比較する。
【0040】
もしロードの推測結果がタグによって指定されたデータ値に結びつくならば、ステップ307に示すように、そのデータ値は、ロード操作の推測結果として1以上の依存的操作に転送される。このデータ値は結果転送を介して、または以下で詳細に説明するように、依存的操作がデータ値を推測オペランドソースとして使用する指示を転送することによって、転送することができる。一実施形態では、もしそのデータ値が結果転送を介して転送されるならば、そのデータを生成した操作の実行を完了した1サイクル後に、依存的な操作は転送されたデータを用いて実行される。もしそのデータ値が、依存的操作が物理的レジスタを推測オペランドソースとして用いる指示を介して、転送されるならば、依存的操作はそのデータ値を生成した操作が実行を完了した後すぐに発行される。ステップ309に示すように、この推測結果は推測結果が検証される前に転送される。この推測結果はデータキャッシュにアクセスすることなく転送可能である(つまり、推測結果は、データキャッシュにアクセスすることによって生成される非推測結果よりも早く転送可能である)。
【0041】
もし、推測結果がステップ309において正しいと検証されると、ロード操作はデータキャッシュのアクセスを実行することなく完了する。しかしながら、ステップ309においてもし推測結果が誤りであると判定されると、正しい結果を得るために(図示せず)データキャッシュへのアクセスが実行される。その場合、ロードの推測結果を用いて実行されたすべての依存的操作はロードされた正しい結果を用いて再実行される。ある状況においては、検証(ステップ309)が、結びつけられたデータ値がロードの推測結果として転送される(ステップ307)前に実行されることに注意してほしい。そのような状況では、ロードが普通に実行され、結びつき(リンク)が正しいと判定されると、そのデータ値がロード操作の非推測結果として転送される。
【0042】
様々な実施形態において、ロード操作の推測結果をレジスタのデータ値に多くの異なった方法で結びつける。ある実施形態では、値はあるオペランドに対して2つのソース、推測ソースおよび非推測ソースを指定することによって結びつけられる。この推測ソースは結びつけられたデータ値であってもよい。推測ソースは、ロードの推測結果に結びつけられたデータ値を示すために、ロード操作に対して提供される。ある実施形態では、推測ソースはそのようなロード操作に依存する操作のために提供してもよい。従って、ある種のオペランドは2つのタグ、推測ソースを指定するタグと非推測ソースを指定するタグを持つ。そのような実施形態では、図4に示すように、各スケジューラ118は推測オペランドおよび非推測オペランドの両方に対してタグ記憶を提供する。
【0043】
図4は、マイクロプロセッサ100のなかに含まれるスケジューラ118の一実施形態を示す。例示の実施形態では、スケジューラ118はスケジューラコントローラ502および操作記憶部504を含む。ディスパッチユニットが操作を発送するのに応答して、スケジューラコントローラ502は、その操作に対応する情報を記憶するために、操作記憶部504内にエントリを割り当てる。例えば、操作記憶部504内のエントリ522は、opcode(操作符号)フィールド510、1以上のオペランドフィールド、および結果フィールド516を含む。結果フィールド516は、そのエントリの操作結果が記憶される物理レジスタを指定するタグを記憶することができる。操作が発行されるとき、このタグは1以上のタグバス520のうちの一つによって各スケジューラ118に転送される。各スケジューラは、係属中の操作について、係属中の操作のオペランドがいつ利用可能になるかを決定するために、タグバス520において転送されたタグをオペランドタグ(以下で説明するように、推測および非推測の両方)と比較する。従って、そのソースオペランドタグがタグバス520に現れるのに応答して、操作が発行される(または発行準備完了としてマーキングされる)。
【0044】
各オペランドフィールドは、推測オペランドソースを指定する推測タグおよび非推測オペランドソースを指定する非推測タグのための記憶を含む。例示のエントリ522には、オペランド1の2つのソースは非推測タグ512と推測タグ514とで指定されている。スケジューラ118は操作のオペランドが利用可能になる一以上の表示に応答して、操作を発行するように構成されている。オペランドは、もしそれが推測ソースまたは非推測ソースのどちらかから利用可能であれば、利用可能である。もしあるオペランドが推測ソースおよび非推測ソースの両方から利用可能であるならば、非推測ソースからの利用可能な値を用いて操作を実行する。ある実施形態では、スケジューラ118は、推測オペランドソースのみが利用可能である操作に対して、その非推測オペランドソースが優先的に利用可能になるように、操作の発行に順位付けを行う。
【0045】
操作には、推測ソースを持つオペランドと推測ソースを持たない他のオペランドとが含まれうることに注意すべきである。さらに、ある種のソースは1つの操作については推測ソースとなり、他の操作については非推測ソースとなりうることに注意すべきである。ある実施形態では、ある操作が実行されるとき、各オペランドに対して一つのデータ値のみを読み出すことができる(例えば、実行コア124は推測オペランドソースまたは非推測オペランドソースのどちらかを読み出すことができる。しかし、両方を読み出すことはできない)。このことによって、レジスタファイル116に追加ポートを付加することが不必要になる。推測ソースおよび物理的ソースは同じ記憶位置(例えば、レジスタファイル116内)に記憶することができ、推測ソースにフラグすることはできず、またはある実施形態では推測ソースとして指定される。
【0046】
多くの実施形態では、スケジューラ118は操作に割り当てられたエントリを、それらの操作が実行コア124に発行された後も維持するように構成される。1以上の推測オペランドの利用可能性に応じて、スケジューラ118から操作が発行されるとき、スケジューラはその操作に割り当てられたエントリ522を維持して、もし推測リンクが誤りであったときに操作を再発行できるようにすることが可能である。ある実施形態では、ロード/ストアユニットが、推測ロード結果が物理レジスタに記憶されているデータ値に結びつけられているときに生じる推測リンクを検証するように構成してもよい。もしその結びつけが正しいならば、正しい結果がリンクを介してすでに利用可能であるため、ロード/ストアユニットがそのロードの非推測結果をブロードキャストしないように構成可能である。その場合には、もしその操作に対する非推測オペランドソースを指定するタグが結果バス130にブロードキャストされるならば、スケジューラ118は操作を再発行するように構成可能である。
【0047】
別の実施形態では、ロード/ストアユニットは、ブロードキャストをマスクするか、または推測リンクは正しく、そのロードを再発行するべきではないことを示す追加の状態ビットとともにその記憶結果をブロードキャストする。しかしながら、もし推測リンクが誤っているならば、ロード/ストアユニットは、そのロードの正しい結果を取得し、そのロードの結果をブロードキャストするために、データキャッシュおよび/またはメモリアクセスを実行する。結果が常にブロードキャストされる実施形態では、追加的な状態ビットが推測リンクが誤っていることを示す。従って、多くの実施形態では、マイクロプロセッサにおいて常に利用可能な同一のタグおよび結果バスを用いて、推測リンクが誤っていることを示すことができる。他の実施形態では、別の表示機構(例えば、予測誤りを示すために分離した結果バス130および/または結果タグバス520を用いる)を実装可能である。
【0048】
図5は、推測オペランドソースおよび非推測オペランドソースの両方を持つ操作を発行し、再発行する方法の一実施形態の流れ図である。もしある操作の推測オペランドソースが利用可能であるならば、ステップ801−803に示すように、その操作は発行可能である。あるデータ値がレジスタファイル内の特定のレジスタに存在しているとき、またはそのデータ値が結果バスに出力されているとき、ある操作の推測オペランドソースは利用可能になる。ある状況において、同じオペランドについての操作の非推測オペランドソースは推測オペランドソースの前に利用可能であることに注意する必要がある。そのような状況では、推測オペランドソースが利用可能になる前に操作を発行することができるある実施形態では、推測ソースのその後の利用可能性によって操作の再発行を引き起こすことはない。
【0049】
ステップ805に示すように、発行された操作は推測オペランドソースによって供給されるデータ値を用いて発行された操作を実行することができ、ステップ807に示すように、その操作の結果はブロードキャストされる。操作の結果をブロードキャストすることによって依存的操作が実行可能になる。
【0050】
もし後の時点で推測ソースが誤りであったと判定されたときは(例えば、推測ソースから供給されたデータ値と非推測ソースから供給されたデータ値とが同じでない、または推測ソースのタグを生成するのに使用した推測リンクが誤りであった)、非推測ソースのタグを推測ソースの値が誤りであることの表示としてブロードキャストすることができる。非推測ソースのタグのブロードキャストには、それに応答してスケジューラが操作を再発行するような方法でのタグのブロードキャストが含まれる。例えば、ある実施形態では、スケジューラはタグがブロードキャストされ、そのタグに関連する状態フラグがある値に設定されているときに応答する。その他の実施形態では、関連する状態フラグは存在せず、スケジューラは非推測タグがブロードキャストされたときはいつでも操作を再発行するように構成することができる。
【0051】
図6は、ディスパッチユニット104がマイクロプロセッサ100に含まれる別の実施形態を示す。この実施形態では、ディスパッチユニット104はレジスタマップ134、メモリファイル132、および推測レジスタマップ800を含む。レジスタマップ134と同様に、推測レジスタマップ800は、論理レジスタ名を物理レジスタ名に変換する。しかしながら、推測レジスタマップ800は論理レジスタ名を物理レジスタ名に投機的にマッピングすることができる(例えば、メモリファイル132が物理レジスタに記憶されている値をロード操作の推測結果に結びつけるのに対応して)。推測レジスタマップ800は、レジスタデータ値に結びつけられるべきアドレッシングパターンを含まない操作についての推測オペランド値を許可する。例えば、もし論理レジスタEAXについての有効な推測マップがあるならば、EAXをソースオペランドとして操作は2つのソースタグ、レジスタマップ134から供給される非推測タグと推測レジスタマップ800から供給される推測タグとを持つ。操作はその推測ソースが利用可能になるとすぐに発行されるので、推測レジスタマップ800は、介在するすべてのロードおよびストアをバイパスして、推測オペランドタグを介してデータ消費者をデータ生成者に直接結びつける。実施形態によっては(例えば、推測レジスタ状態についての記憶部を含む再整理バッファを持つような実施形態)、推測マッピングは物理レジスタ名以外のタグを記憶することがあることに注意すべきである。
【0052】
推測レジスタマップ800は、推測レジスタマップコントローラ802および推測レジスタマップ記憶部804を含む。推測レジスタマップ記憶部は一以上のエントリ820を含む。エントリ820のそれぞれは特定の論理レジスタと関連付けられ、その論理レジスタが現在投機的にマッピングされている物理レジスタの物理レジスタ識別子812を示す。各推測レジスタマップエントリ820は、そのエントリが現在有効か否かに関する表示(図示せず)をさらに含む。一実施形態では、推測レジスタマップ記憶部804は各論理レジスタについてのエントリを含む。他の実施形態では、推測レジスタマップ804は論理レジスタの数よりも少ないエントリを含む。そのような実施形態では、各エントリ820は、そのエントリが現在対応している論理レジスタの表示を含む。
【0053】
推測レジスタマップコントローラ802は、ロード操作の推測結果が特定の物理レジスタ名で指定されるデータ値に結びつけられていることの表示に応答して、エントリ820を更新するように構成できる。例示の実施形態では、この表示はメモリファイル132から供給される。更新するエントリ820は、ロード操作の目的として指定される論理レジスタのためのエントリである。このエントリは、そのロード操作のためにメモリファイル132によって出力される物理レジスタ識別子を含むように更新することができる。他の実施形態では、メモリファイル132によって供給されるもの以外の表示に応答して推測レジスタマップエントリが生成される(これら実施形態のうちのあるものでは、ディスパッチユニット104はメモリファイルを含まない)。例えば、ディスパッチユニット104は条件付きMOVE命令、CMOV EAX,EBX ifZを検出し、それに応答して、EAXに対する推測レジスタマップエントリが現在EBXにマッピングされている物理レジスタを指定するべきであることを示す。一般的に、推測レジスタマップエントリは、論理レジスタが特定の物理レジスタに投機的にマッピングされるべきであることを示す任意の予測機構に応答して生成することができる。
【0054】
ある実施形態では、操作は、それらがレジスタマップ134に供給されるのと同じサイクルにおいて、推測レジスタマップ800に供給される。レジスタマップ134がある操作のために非推測レジスタリネームを実行するときに、推測レジスタマップ800は操作の推測ソースオペランドの一つを記憶するものとして指定されている論理レジスタのいずれかがある特定の物理レジスタにリンクされているかどうかを表示することができる。もし操作の論理レジスタソースの一つについて推測レジスタマップ記憶部804内に有効なエントリが存在するならば、推測レジスタマップコントローラ802はその論理レジスタのエントリに記憶されている物理レジスタ名を出力することができる。ディスパッチユニット104は、この操作がスケジューラ118に発送されるときに、この推測物理レジスタ名を推測ソースとして出力する。従って、もしADD操作が推測レジスタマップ800に供給され、ADDのソースの一つが推測レジスタマップ記憶部804に有効なエントリを持つならば、そのエントリ内で指定された物理レジスタのタグは推測ソースオペランドタグとしてスケジューラ118に供給されうる。上述のとおり、このスケジューラは推測および非推測オペランドタグの両方を記憶するように構成することができ、実施形態によっては、結果バスにブロードキャストされる非推測タグに応答して、操作を再発行(もしすでに発行されていれば)するように構成することができる。
【0055】
特定の論理レジスタについてのデータ値が変更されるとの表示に応答して、推測マップ内のエントリは無効化される。例えば、もし操作ADD EAX,ECXがディスパッチユニット104によって処理されているならば、ADD操作はそのレジスタ値を変更するので、推測レジスタマップコントローラ802は現在EAXに割り当てられている推測マップエントリを無効にすることができる。
【0056】
一般的に、推測オペランドタグは、一つの操作の推測結果があるレジスタデータ値にリンクされているときはいつでも、スケジューラ118に供給されうる。実施形態によっては、メモリファイル132およびいくつかのサイクルにわたって依存性を追跡するその他の構造(例えば、以下で説明するような推測レジスタマップ)が推測結果をレジスタ値に結びつけるために使用可能である。例えば、ディスパッチユニット104は、メモリファイル132がリンクを指定するのに応答して、操作のための推測タグを生成する。実施形態によっては、推測タグはそのような推測マップを用いることなく生成される。例えば、命令のシーケンスは、
ADD EBX,EBX (加算1)
MOVE [アドレッシングパターンA],EBX (ストア1)
ADD [アドレッシングパターンA],ECX (加算2)
を含む。
これらの命令は隣接した命令であってもよい(例えば、プログラムの順番においてそれらが相互に連続していてもよい)。これらの命令は、実行コア124での実行のために、次の要素の操作に分離することができる(物理アドレスに変換された論理アドレスとともに示す)。
ADD PR2,PR2,PR1 (加算1)
MOVE[アドレッシングパターンA],PR2 (ストア1)
MOV PR3,[アドレッシングパターンA] (加算1へのロード)
ADD PR4,PR3,PR5 (加算2への加算)
MOV[アドレッシングパターンA],PR4 (加算2に対するストア)
要素ロード、加算(add)および加算2のストア操作が発送される前に、ディスパッチユニット104は推測結果へのリンクを許しうるシーケンス中のいずれかの要素操作相互になんらかの依存性がないかを検出することができる。さらに、ストア1によって記憶されたデータはロードの推測結果に結びつけることができる(例えば、メモリファイルによって)。介在する操作が存在しないので、ディスパッチユニットは、同じ発送サイクルにおけるロード操作と加算操作(両方の操作は同じ命令から導かれる)の間の依存性を検出するのに必要なすべての情報を持つことができる。これら2つの依存性に基づいて、ディスパッチユニット104はストア1、PR2によって記憶されたデータのタグを加算2の一部として実行されたロード操作の推測結果に結びつけることができる。それによって、この推測リンクは、ディスパッチユニットが加算2の一部として実行された加算演算のソースをPR2で記憶された値に結びつけることを可能にする。従って、ディスパッチユニットは、PR2がその加算のためのオペランドの一つのソースとして投機的に用いられていること、しかしそのPR3はそのオペランドに対しては非推測ソースであることの表示を出力することができる。従って、一実施形態では、ディスパッチユニットから出力される操作およびオペランド識別子は次のように指定される。
ADD PR2,PR2,PR1 (加算1)
MOV[アドレッシングパターンA],PR2 (ストア1)
MOV PR3,[アドレッシングパターンA] (加算2のためのロード)
ADD PR4,PR2*,PR3,PR5 (加算2についての加算、PR2はECXについての推測ソース、PR3はECXについての非推測ソース)
MOV[アドレッシングパターンA],PR4 (加算2についての記憶)
【0057】
他の実施形態では、ディスパッチユニット104は、ロード操作に依存する操作のための推測ソースオペランドを特定するようには構成されていない。代わりに、ディスパッチユニット104は、推測ロード結果を依存的操作に供給するために、ロード操作をレジスタ対レジスタMOVE操作を含む1以上の操作に変換するように構成された、操作コンバータ(変換部)180を含む。ロード操作の変換は、ロード操作の推測結果と特定の物理レジスタ名によって指定されるデータ値との間にリンクが存在するとの表示に応答して実行できる。この表示はリンクディテクタ(検出部)182によって供給され、ある実施形態ではそれはメモリファイル132を含む。他の実施形態では、上述のとおり、リンクディテクタ182は、条件MOVE操作などの操作に応じて、データ値とデータ値を結びつける(リンクする)ように構成されるロジックを含みうる。
【0058】
一実施形態では、操作コンバータはある操作についての入力opcodeを、その操作についてレジスタ値とその操作の推測結果との間にリンクが検出されたかどうかの表示とともに受信する。もし操作がロードで、推測リンクが検出されると、操作コンバータはレジスタ対レジスタMOVE操作のためにopcodeを出力する。ディスパッチユニット104は、リンクディテクションユニットからレジスタ対レジスタMOVEのためのソースオペランドタグとして出力されたタグを用いて、レジスタ対レジスタMOVE操作を発送する。
【0059】
実施形態によっては、操作コンバータは結果としてのレジスタ対レジスタMOVEを発送して、スケジューラがレジスタ対レジスタMOVEおよびそのレジスタ対レジスタMOVE操作に割り当てられたエントリ内のもともとのロード操作に必要なオペランドタグを記憶するように構成される。これによって、もしレジスタ対レジスタのMOVE操作の推測結果が誤りであることが検出されたときには、その操作をもともとのロード操作として再発行することを可能にする。これを実装するために、追加のソースオペランドを、ロード操作の変更から生じた各レジスタ対レジスタMOVE操作に対して追加することができる(または、他の実施形態では、これを実装するために、すでに存在するソースオペランドを変更することもできる)。実施形態によっては、もともとのロードのためのアドレス計算を実行することにより、および/またはリンクされたデータ値を実際のロード結果データ値と比較することにより、レジスタ対レジスタMOVE操作の推測結果を検証することができる。もし推測結果が誤りならば、正しいロード結果を得るために、データキャッシュがアクセスする。正しいロード結果を再ブロードキャストすることで、スケジューラに誤った値を用いて実行されたすべての依存的操作を再発行させることができる。
【0060】
実施形態によっては、操作コンバータ180は、ロード操作を2面性(dual nature)操作に変換するように構成される。ロード操作のように、この2面性操作はアドレス計算とデータ移動とを含む。ロードとは異なり、2面性操作によって実行されるデータ移動はレジスタからレジスタへの移動(MOVE)である。さらに、この2面性操作によって実行されるデータ移動はアドレス計算が完了する前に始まる。このアドレス計算は推測リンクが正しいかどうかを検証するために用いられる。もし推測リンクが誤っていれば、この二重目的操作が通常のロード操作として再発行され、データキャッシュアクセスの完了したときにその結果が従属的操作に対して再ブロードキャストされる。
【0061】
以下は、異なった実施形態においてこの操作シーケンスの例がどのように変換されるかを示す例である。
ADD PR2,PR1,PR1 (加算1)
STORE[アドレッシングパターンA],PR2 (ストア1)
LOAD PR3,[アドレッシングパターンA] (ロード1)
ADD PR4,PR3,PR3 (加算2)
このシーケンスでは、指定された操作を1以上の介在操作によって分離することが可能である。しかしながら、どの介在操作もアドレッシングパターンAにおいて使用される値を変更せず、またはアドレッシングパターンAから計算されたアドレスおよびPR2に記憶されているデータ値を変更しないことが明らかであると仮定すると、PR2に記憶されているデータ値とアドレッシングパターンAから計算されたアドレスに記憶されたデータ値との間に推測リンクが検出される。
【0062】
一実施形態では、推測リンクディテクタ182による推測リンクの検出に応答して、操作コンバータ180はLOAD1を二重目的MOVE操作、MOV PR3,PR2に変換する。レジスタソースと目的地(destination)とを指定することに加えて、この二重目的MOVE操作はさらにアドレッシングパターンAをも指定することができ、それによってLOAD1についてのアドレス計算が実行できる。しかしながら、二重目的MOVE操作のMOVE部分はECXが利用可能になるとすぐに発行される。二重目的MOVE操作のMOVE部分の結果がブロードキャストされるとすぐに、MOVE操作の推測結果をオペランドとして用いて加算2(ADD2)が発行される。アドレス計算が実行されるとき、推測リンクが検証される。もし推測リンクが誤っていれば、ロード/ストアユニットはスケジューラに対して、スケジューラに二重目的MOVE操作をロード操作として再発行させる表示を供給する。ロード操作の結果はブロードキャストされ、MOVEの推測結果を使用して実行された、加算2(ADD2)などのすべての依存的操作を再発行させる。この二重目的操作は単一のスケジューラエントリを用いてスケジューリングされ、スケジューラ118はこの二重目的操作を2回、ロードのアドレス計算に1回、レジスタからレジスタへのMOVEのために1回、発行するために選択可能であることに注意すべきである。
【0063】
他の実施形態では、操作コンバータ180は、推測リンクの検出に応答して、LOAD1を2つのリンクされた操作、LOAD PR3,[アドレッシングパターンA]とMOV PR3,PR2に変換する。二重目的操作を含む前の例とは異なり、これらのリンクされた操作はそれぞれ、単一のスケジューラエントリを共有するのではなく、スケジューラ118内のエントリを確保する。レジスタからレジスタへのMOVE操作が発行されたとき、加算2などの依存的な操作が、PR3の推測値をオペランド値として用いて発行される。このLOAD操作は特別なタイプのロード操作としてタグ付けされ、それによって、もし推測リンクが正しいと決定されたならば、ロードの結果タグはブロードキャストされない(または、MOVE結果は正しく、依存的操作を再発行すべきでないとの表示とともにブロードキャストされる)。さらに、もしロードおよびMOVE操作の両方がそれらの結果を同じサイクルでブロードキャストしたならば、そのロード結果がMOVEの結果の代わりに依存的操作に用いられるように表示が供給される。実施形態によっては、どのタグにスケジューラが応答しなければならないかを示す追加のビットをマイクロプロセッサ100内の各タグバスに追加することによってこれが生じる。もし、推測リンクが誤りであるなら(例えば、ロードの結果タグのブロードキャストによって示されるように)、MOVE操作はキャンセルされる(例えば、そのMOVE操作をスケジューリングしたスケジューラ118が、現在レジスタからレジスタへのMOVEを割り当てているスケジューラのエントリの割り当てを取り消すことによって、その操作は再発行できない)。多くの実施形態では、スケジューラは、結果バスに再度現れるロード結果タグに応答して、推測ロード結果を用いて実行された任意の依存的操作を再発行するように構成されうる。
【0064】
図8は、ロード操作が推測レジスタ間MOVE操作を含むように変換する方法の一実施形態を示す。図示するように、ステップ1401で、もし特定のタグによって指定されたデータ値とロード操作の推測結果との間のリンクが検出されると(例えば、メモリファイルによって)、ステップ1403に示すように、そのロード操作は、推測ロード結果にリンクされたデータ値のタグに等しいソースオペランドタグを持つレジスタからレジスタへのMOVE操作を含むように変更される。レジスタからレジスタへのMOVE操作の実行には、ステップ1405において、ロード結果のタグとともに、そのタグによって指定されたデータ値を結果バスに出力することを含む。
【0065】
ステップ1409において、推測結果は検証される(例えば、もともとのロードについてアドレス計算を実行することにより)。もし推測結果が正しければ、そのロード結果は結果バスに再ブロードキャストされない(または、代わりに、そのロード結果を、その再ブロードキャストされた結果に応答して依存的操作を再発行すべきでないとの表示とともに再ブロードキャストする)。もし、推測結果が誤りであれば、正しいロード結果を取り出すためにデータキャッシュにアクセスし、正しいロード結果を結果バスにブロードキャストする。これによって次に、推測結果値を用いて発行された任意の依存的操作の再発行を行う。状況によっては、推測結果の検証を、レジスタからレジスタへのMOVE操作の実行前に行ってもよいことに注意すべきである。もし推測結果が誤りならば、レジスタからレジスタへのMOVE操作は実行されない。
【0066】
もしロード操作の推測結果とレジスタデータ値との間にリンクが検出されなければ(例えば、そのロードのアドレッシングパターンがメモリファイルにおいてミスした)、そのロードは変更されない。ステップ1417および1419に示すように、そのロードは普通に実行され、データキャッシュにアクセスし、その結果を結果バスにブロードキャストする。
【0067】
図9は、コンピュータシステム400の一実施形態のブロック図である。コンピュータシステム400は、バスブリッジ402を介して、システムの様々な構成要素に結合されたプロセッサ100を含む。プロセッサ100は、これまでに説明したディスパッチユニット104、メモリファイル132、スケジューラ118および/または推測レジスタマップ800の一実施形態を含む。コンピュータシステムの他の実施形態も可能であり、考慮される。図示されたシステムでは、メインメモリ200がメモリバス406を介してバスブリッジ402に結合され、グラフィクスコントローラ408がAGPバス410を介してバスブリッジ402に結合されている。いくつかのPCIデバイス412A−412BがPCIバス414を介してバスブリッジ402に結合される。セカンダリバスブリッジ416が、EISA/ISAバス420を介して1以上のEISAまたはISAデバイス418に対する電気的インターフェイスを提供するために設けられる。この例では、プロセッサ100はCPUバス424を介してバスブリッジ402に結合され、選択的なL2キャッシュ428に結合される。実施形態によっては、プロセッサ100は統合L1キャッシュ(図示せず)を含んでいてもよい。
【0068】
バスブリッジ402は、プロセッサ100と、メインメモリ404と、グラフィクスコントローラ408と、PCIバス414に接続されたデバイス群との間のインターフェイスを提供する。バスブリッジ402に接続されたデバイス群の一つからある操作を受信したとき、バスブリッジ402はその操作の目標(target)を特定する(例えば、特定のデバイス、またはPCIバス414の場合にはPCIバス414上の目標)。バスブリッジ402はその操作を目標デバイスに発送する。バスブリッジ402は一般的にソースデバイスまたはバスによって使用されるプロトコルからの操作を目標のデバイスまたはバスによって使用されるプロトコルに変換する。
【0069】
ISA/EISAバスにPCIバス414に対するインターフェイスを提供することに加え、セカンダリバスブリッジ416は追加の機能を含みうる。セカンダリバスブリッジ416の外部に設けられるか、またはそれに統合される入出力コントローラ(図示せず)はコンピュータシステム400に含めることができ、キーボードおよびマウス422ならびに様々なシリアルおよびパラレルポートのための動作サポートを提供する。別の実施形態では、プロセッサ100とバスブリッジ402との間のCPUバス424に外部キャッシュユニット(図示せず)を接続可能である。他の実施形態では、外部キャッシュはバスブリッジ402に結合され、その外部キャッシュのためのキャッシュコントロールロジックをバスブリッジ402に統合することができる。L2キャッシュ428はプロセッサ100のバックサイド構成として示している。L2キャッシュ428はプロセッサ100とは分離することも、プロセッサ100のカートリッジ(例えば、スロット1またはスロットA)に統合することも、またはプロセッサ100の半導体基板に統合することも可能である。
【0070】
メインメモリ200はアプリケーションプログラムが記憶され、プロセッサ100がそこから第1に実行するメモリである。好適なメインメモリ200はDRAM(ダイナミックランダムアクセスメモリ)である。例えば、SDRAM(シンクロナスDRAM)またはラムバスDRAM(RDRAM)の複数バンクが適当である。
【0071】
PCIデバイス412A−412Bは、様々な周辺装置、例えばネットワークインターフェイスカード、ビデオアクセラレータ、オーディオカード、ハードまたはフロッピーディスクドライブまたはドライブコントローラ、SCSI(Small Computer Systems Interface)アダプタ、および電話カードの例示である。同様に、ISAデバイス418は、例えばモデム、サウンドカード、GPIBなどの様々なデータ取得カードまたはフィールドバスインターフェイスカードなどの様々な周辺装置の例示である。
【0072】
グラフィクスコントローラ408はディスプレイ426上のテキストおよびイメージのレンダリングを制御するために提供される。グラフィクスコントローラ408は、メインメモリ200へ、またはそこから効果的にシフトできる3次元データ構造をレンダリングする、当該技術分野で一般的に知られている典型的なグラフィクスアクセラレータを実装する。従って、グラフィクスコントローラ408はAGPバス410のマスタとなり、バスブリッジ402内の目標インターフェイスに対するアクセスを要求し、受信することができるので、それによってメインメモリ200へのアクセスが可能になる。専用のグラフィクスバスによって、メインメモリ404からの迅速なデータ取得を可能にする。ある種の操作に対しては、グラフィクスコントローラ408はさらにAGPバス410上でPCIプロトコルトランザクションを生成するように構成可能である。従って、バスブリッジ402のAGPインターフェイスは、PCIプロトコル目標とともに、AGPプロトコルトランザクションおよび開始(initiator)トランザクションの両方をサポートする機能を含めることができる。ディスプレイ426はイメージまたはテキストを表示できる電気的表示装置である。適切なディスプレイ426はカソードレイチューブ(CRT)、液晶ディスプレイ(LCD)などである。
【0073】
上の説明ではAGP、PCIおよびISAまたはEISAバスが例として取り上げられているが、どのようなバスアーキテクチャでも必要に応じて置き換え可能であることに注意すべきである。さらに、コンピュータシステム400は追加のマイクロプロセッサ(例えば、コンピュータシステム400の選択的な要素として示すプロセッサ100a)を含むマルチプロセッサコンピュータシステムであってもよいことに注意してもらいたい。プロセッサ100aはプロセッサ100と同様のものでよい。さらに詳細には、プロセッサ100aは、プロセッサ100の完全な複製であってもよい。プロセッサ100aは独立したバス(図9に示すように)を介してバスブリッジ402に接続してもよいし、プロセッサ100とCPUバス224を共有してもよい。さらに、プロセッサ100aは、L2キャッシュ428に類似した選択的なL2キャッシュ428aに結合することも可能である。
【0074】
図10は、上述のディスパッチユニット104、メモリファイル132、スケジューラ118および/または推測レジスタマップ800を備えるコンピュータシステム400の別実施形態を示す。他の実施形態も可能であり、考慮される。図10の実施形態では、コンピュータシステム400は、いくつかのプロセッシングノード612A,612B,612Cおよび612Dを含む。各プロセッシングノードは、各プロセッシングノード612A−612Dに内蔵されたメモリコントローラ616A−616Dを介して対応するメモリ614A−614Dに結合される。さらに、プロセッシングノード612A−612Dは、プロセッシングノード612A−612D間の通信に用いられるインターフェイスロジックを備える。例えば、プロセッシングノード612Aはプロセッシングノード612Bと通信するためのインターフェイスロジック618Aと、プロセッシングノード612Cと通信するためのインターフェイスロジック618Bと、さらに他のプロセッシングノード(図示せず)と通信するための第3インターフェイスロジック618Cとを備える。同様に、プロセッシングノード612Bはインターフェイスロジック618D,618E,618Fを備え、プロセッシングノード612Cはインターフェイスロジック618G,618Hおよび618Iを備え、プロセッシングノード612Dはインターフェイスロジック618J,618Kおよび618Lを備える。プロセッシングノード612Dは、インターフェイスロジック618Lを介して、複数の入出力デバイス(例えば、ディジーチェイン構成のデバイス620A−620B)と通信するように結合される。他のプロセッシングノードも同様の方法で他のI/Oデバイスと通信可能である。
【0075】
プロセッシングノード612A−612Dは、プロセッシングノード間通信のためにパケットベースのリンクを実装する。本実施形態では、リンクは単一方向信号線の組として実装される(例えば、信号線624Aはプロセッシングノード612Aからプロセッシングノード612Bへパケットを送信するのに用いられ、信号線624Bはプロセッシングノード612Bからプロセッシングノード612Cへパケットを送信するのに用いられる)。その他の信号線組624C−624Hは、図10に示すように、他のプロセッシングノード間でパケットを送信するために用いられる。一般的に、信号線の組624のそれぞれは、1以上のデータ線、データ線に対応した1以上のクロック線、転送されるパケットのタイプを示す1以上の制御線を備える。このリンクはプロセッシングノード間の通信ではキャッシュコヒーレント形式で動作し、プロセッシングノードとI/Oデバイス間の(または、バスブリッジからPCIバスまたはISAバスのような従来型の構成のI/Oバス)通信では非コヒーレント形式で動作する。さらに、このリンクは図示するようなI/Oデバイス間のディジーチェイン構成を用いて非コヒーレント形式で動作する。あるプロセッシングノードから他のプロセッシングノードへ送信されるパケットは1以上の介在ノードを通過する可能性があることに注意する必要がある。例えば、プロセッシングノード612Aからプロセッシングノード612Dに送信されるパケットは、図10に示すように、プロセッシングノード612Bまたはプロセッシングノード612Cを通過する。任意の適切なルーティングアルゴリズムを用いることができる。コンピュータシステム400の他の実施形態では、図10に示した実施形態よりも多くのプロセッシングノードを備えていてもよいし、より少ないプロセッシングノードを備えていてもよい。
【0076】
一般的に、パケットはノード間の信号線624において1以上のビット時間として送信される。1ビット時間は、対応するクロック線上のクロック信号の立ち上がりエッジ、または立ち下がりエッジである。パケットには、トランザクションを開始するためのコマンドパケット、キャッシュコヒーレンシを維持するためのプローブパケット、およびプローブおよびコマンドに応答する応答パケットが含まれる。
【0077】
メモリコントローラおよびインターフェイスロジックに加えて、プロセッシングノード612A−612Dは1以上のプロセッサを含みうる。おおざっぱに言えば、プロセッシングノードは少なくとも1つのプロセッサを含み、必要に応じてメモリおよび他のロジックと通信するためのメモリコントローラを選択的に含む。さらに詳細には、各プロセッシングノード612A−612Dはプロセッサ100の1以上の複製を含みうる。外部インターフェイスユニット18は、メモリコントローラ616とともに、ノード内にインターフェイスロジック618を含む。
【0078】
メモリ614A−614Dは任意の適切なメモリ装置を含む。例えば、メモリ614A−614Dは、1以上のラムバスDRAM(RDRAM)、シンクロナスDRAM(SDRAM)スタティックRAMなどを含みうる。コンピュータシステム400のアドレス空間は、メモリ614A−614Dにわたって分割される。各プロセッシングノード612A−612Dはどのアドレスがメモリ614A−614Dのうちのどれにマッピングされているか、ゆえに特定のアドレスに対するメモリ要求がどのプロセッシングノード612A−612Dにルーティングされるべきかを決定するために用いられるメモリマップを備える。一実施形態では、コンピュータシステム400内のアドレスについてのコヒーレンシポイントは、そのアドレスに対応するバイトを記憶するメモリに結合されたメモリコントローラ616A−616Dである。言い換えれば、メモリコントローラ616A−616Dは、対応するメモリ614A−614Dに対する各メモリアクセスがキャッシュコヒーレントな方法で生じることを保証する責任がある。メモリコントローラ616A−616Dは、メモリ614A−614Dにインターフェイス接続するための制御回路を備える。さらに、メモリコントローラ616A−616Dは、メモリ要求をキューするための要求待ち行列(request queue)を含む。
【0079】
インターフェイスロジック618A−618Lは、リンクからのパケットを受信し、リンクにおいて送信されるべきパケットをバッファリングするための様々なバッファを備える。コンピュータシステム400は、パケット送信のための任意の適切なフロー制御機構を採用する。例えば、一実施形態では、各インターフェイスロジック618は、そのインターフェイスロジックが接続されるリンクの他端にある受信機内のバッファのタイプ別の数を記憶する。このインターフェイスロジックは、受信するインターフェイスロジックにパケットを記憶する空きのバッファがない限り、パケットを送信しない。パケットを前方にルーティングすることで受信バッファに空きができると、受信側のインターフェイスロジックは送信側のインターフェイスロジックにバッファが空いたことを示すメッセージを送信する。そのような機構は、「クーポンベース」システムと呼ばれる。
【0080】
I/Oデバイス620A−620Bは適切な任意のI/Oデバイスでよい。例えば、I/Oデバイス620A−620Bは、そのデバイスが結合された他のコンピュータシステムと通信するためのデバイス(例えば、ネットワークインターフェイスカード、またはモデム)を含む。さらに、I/Oデバイス620A−620Bは、ビデオアクセラレータ、オーディオカード、ハードまたはフロッピーディスクドライブまたはドライブコントローラ、SCSI(Small Computer Systems Interface)アダプタ、および電話カード、サウンドカード、およびGPIBなどの様々なデータ取得カードまたはフィールドバスインターフェイスカードを含む。ここでは、「I/Oデバイス」という用語、および「周辺装置」という用語は同義に用いられていることに注意すべきである。
【0081】
ここで、「クロックサイクル」または「クロック」という用語は、命令処理パイプラインの様々なステージがそれらのタスクを完了する時間間隔を意味する。命令および計算された値は、クロックサイクルを定義するクロック信号にしたがって、メモリ素子(レジスタまたはアレイなど)によって取得される。例えば、メモリ素子はクロック信号の立ち上がりまたは立ち下がりエッジに従って値を取得する。
【0082】
これまでの開示を完全に理解したならば、当業者には様々な変形および変更が明白になるであろう。添付の特許請求の範囲はそのような変形および変更のすべてを包含するように解釈されることを意図したものである。
【産業上の利用可能性】
【0083】
本発明は、一般的にマイクロプロセッサの分野で適用可能である。
【図面の簡単な説明】
【0084】
【図1】マイクロプロセッサの一実施形態を示す図。
【図2A】ディスパッチユニットの一実施形態のブロック図。
【図2B】一実施形態で使用されるメモリファイル記憶エントリの例を示す図。
【図3】ロード操作の推測結果を特定タグによって指定されたデータ値にリンクする方法の一実施形態を示す流れ図。
【図4】スケジューラの一実施形態のブロック図。
【図5】操作を発行し、データ推測が誤りであったとの表示に応答して操作を再発行する方法の一実施形態の流れ図。
【図6】ディスパッチユニットの別実施形態のブロック図。
【図7】ディスパッチユニットのさらに別の実施形態のブロック図。
【図8】推測データ値とともに操作を発行し、推測誤りから復帰する他の方法を示す流れ図。
【図9】コンピュータシステムの一実施形態を示す図。
【図10】コンピュータシステムの別実施形態を示す図。
【符号の説明】
【0085】
100 マイクロプロセッサ
102 リタイアキュー
104 ディスパッチユニット
106 インストラクションキャッシュ
108 プリフェッチユニット
116 レジスタファイル
118 スケジューラ
124 実行コア
126 ロードストアユニット
128 データキャッシュ
130 結果バス
134 レジスタマップ
200 システムメモリ

【特許請求の範囲】
【請求項1】
第1アドレッシングパターンおよび第1タグを記憶するように構成されたエントリを含み、前記エントリ内に含まれる前記第1アドレッシングパターンをロード操作の第2アドレッシングパターンと比較するように構成され、前記第1および第2アドレッシングパターンのそれぞれは、対応するデータ値アドレスを生成するのに使われる一以上のアドレスオペランドを特定し、もし前記第2アドレッシングパターンが前記エントリに記憶されている前記第1アドレッシングパターンに合致するときは前記第1タグによって指定されるデータ値を前記ロード操作の推定結果にリンクするように構成され、前記エントリ内に含まれる前記第1アドレッシングパターンと前記ロード操作の前記第2アドレッシングパターンとの比較は前記ロード操作の非推測結果の判定の前に発生する、メモリファイルと、
前記メモリファイルに結合され、前記ロード操作に依存する第2操作を実行するときは、前記推測結果にアクセスするように構成される実行コアとを備えるシステム。
【請求項2】
前記第1タグを前記第2操作のための推測オペランドソースタグとして転送する手段をさらに備える、請求項1記載のシステム。
【請求項3】
前記データ値を結果バスに転送し、前記データ値は前記ロード操作の前記結果であることを示すための手段をさらに含む、請求項1記載のシステム。
【請求項4】
前記第1アドレッシングパターンはストア操作のアドレッシングパターンの一部であり、前記ストア操作は前記ロード操作よりも早いプログラム順序で発生する、請求項1記載のシステム。
【請求項5】
第1操作の第1アドレッシングパターンを第2操作の第2アドレッシングパターンと比較するステップであって、前記第2操作は前記第1操作よりも早いプログラム順序において発生し、前記比較するステップは前記第1操作の非推測結果の判定の前に発生し、前記第1および第2アドレッシングパターンのそれぞれは、対応するデータ値アドレスを生成するのに使われる一以上のアドレスオペランドを特定するステップと、
前記第1アドレッシングパターンが前記第2アドレッシングパターンに合致するときに、前記第2操作のためのオペランドのタグによって指定されるデータ値を前記第1操作の推測結果にリンクするステップと、
前記第1操作の結果に応じて、オペランドソースを有する第3操作を実行するステップとを含み、
前記実行するステップは前記タグによって指定される前記データ値にアクセスするステップを含む方法。
【請求項6】
システムメモリと、
前記システムメモリに結合されたマイクロプロセッサとを有するコンピュータシステムであって、前記マイクロプロセッサは、
第1アドレッシングパターンおよび第1タグを記憶するように構成されたエントリを含み、前記エントリ内に含まれる前記第1アドレッシングパターンをロード操作の第2アドレッシングパターンと比較するように構成され、前記第1および第2アドレッシングパターンのそれぞれは、対応するデータ値アドレスを生成するのに使われる一以上のアドレスオペランドを特定し、もし前記第2アドレッシングパターンが前記エントリに記憶されている前記第1アドレッシングパターンに合致するときは前記第1タグによって指定されるデータ値を前記ロード操作の推定結果にリンクするように構成され、前記エントリ内に含まれる前記第1アドレッシングパターンと前記ロード操作の前記第2アドレッシングパターンとの比較は前記ロード操作の非推測結果の判定の前に発生する、メモリファイルと、
前記メモリファイルに結合され、前記ロード操作に依存する第2操作を実行するときは、前記推測結果にアクセスするように構成される実行コアとを備える、
コンピュータシステム。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2008−33955(P2008−33955A)
【公開日】平成20年2月14日(2008.2.14)
【国際特許分類】
【出願番号】特願2007−248917(P2007−248917)
【出願日】平成19年9月26日(2007.9.26)
【分割の表示】特願2004−502138(P2004−502138)の分割
【原出願日】平成14年12月20日(2002.12.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(591016172)アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド (439)
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
【Fターム(参考)】