説明

連続フロープロセッサパイプライン

【課題】キャッシュミスの修復などの長い待ち時間のオペレーションに依存する命令をパイプラインフローから逸らし、スループットを増加させる。
【解決手段】長い待ち時間のオペレーションに依存する命令をプロセッサパイプラインフローから逸らし、長い待ち時間のオペレーションが完了すると、それらの命令をフローに再び導入することによって、プロセッサのスループットを比較的増加させ、プロセッサのスケジューラ及びレジスタファイルに対する圧力を取り除く。このように、これらの命令は資源を拘束せず、パイプラインの全体的な命令スループットは比較的増加する。

【発明の詳細な説明】
【背景技術】
【0001】
マイクロプロセッサは、シングルチップ上で複数のコアをサポートするようにますます要求されている。設計努力及び設計コストを低く抑え、且つ、今後の用途に適合させるために、設計者は、多くの場合、モバイルラップトップからハイエンドサーバに至る全製品の範囲のニーズを満たすことができるマルチコアマイクロプロセッサを設計しようと試みている。この設計目標は、プロセッサ設計者に、ラップトップコンピュータ及びデスクトップコンピュータのマイクロプロセッサにとって重要なシングルスレッド性能を維持すると同時に、サーバのマイクロプロセッサにとって重要なシステムスループットを提供するという困難なジレンマを与える。従来、設計者は、大きく複雑な単一のコアを有するチップを使用して、シングルスレッド性能を高くするという目標を満たそうと試みてきた。他方、設計者は、複数の比較的小さく単純なコアをシングルチップに設けることによってシステムスループットを高くするという目標を満たそうと試みてきた。しかしながら、設計者は、チップサイズ及び電力消費の限界に直面しているので、高いシングルスレッド性能及び高いシステムスループットの双方を同じチップに同時に提供することは、重大な課題を提示する。より具体的には、シングルチップは、多数の大きなコアに対応しておらず、小さなコアは、従来、高いシングルスレッド性能を提供していない。
【0002】
スループットに強い影響を与える1つの要因は、キャッシュミスの修復等、長い待ち時間のオペレーションに依存する命令を実行する必要があるということである。プロセッサの命令は、「スケジューラ」として知られている論理構造体で実行を待つことができる。スケジューラでは、デスティネーションレジスタが割り当てられている命令は、それらのソースオペランドが利用可能になるのを待ち、利用可能になると、命令は、スケジューラを離れ、実行されて、リタイヤすることができる。
【0003】
プロセッサのどの構造でも同様に、スケジューラは、面積制約を受け、したがって、有限個のエントリーを有する。キャッシュミスの修復に依存する命令は、そのミスが修復されるまで数百サイクルを待たなければならない場合がある。命令が待っている間、それらの命令のスケジューラエントリーは、割り当てられた状態に保たれ、したがって、他の命令に利用可能ではない。この状況は、スケジューラに対する圧力を生み出し、その結果、性能損失となる可能性がある。
【0004】
同様に、スケジューラで待っている命令は、それらのデスティネーションレジスタが割り当てられた状態に保たれ、したがって、他の命令に利用可能でないので、圧力はレジスタファイルに対しても生み出される。この状況も、特に、レジスタファイルが数千個の命令を維持することが必要な場合があり、通常、大量の電力を消費して、サイクルが決定的に影響する(cycle-critical)連続クロック制御構造であるということを考慮すると、性能に有害になる可能性がある。
【発明を実施するための最良の形態】
【0005】
本発明の実施の形態は、長い待ち時間のオペレーションに依存する命令をプロセッサパイプラインフローから逸らし、長い待ち時間のオペレーションが完了すると、それらの命令をフローに再び導入することによって、プロセッサのスループット及びメモリ待ち時間の許容範囲を比較的増加させ、スケジューラ及びレジスタファイルに対する圧力を取り除くためのシステム及び方法に関する。このように、これらの命令は資源を拘束せず、パイプラインの全体的な命令スループットは比較的増加する。
【0006】
より具体的には、本発明の実施の形態は、本明細書では「スライス」命令と呼ばれる、長い待ち時間のオペレーションに依存する命令を特定し、スライス命令を実行するのに必要とされる情報の少なくとも一部と共にスライス命令をパイプラインから「スライスデータバッファ」へ移動させることに関する。スライス命令のスケジューラエントリー及びデスティネーションレジスタは、その後、他の命令による使用のために再利用することができる。長い待ち時間のオペレーションから独立した命令は、これらの資源を使用することができ、プログラムの実行を継続することができる。スライスデータバッファにおけるスライス命令が依存する長い待ち時間のオペレーションが完了すると、スライス命令をパイプラインに再導入して、実行し、リタイヤさせることができる。本発明の実施の形態は、それによって、妨害されることのない連続フロープロセッサパイプラインを達成する。
【0007】
図1は、本発明の実施の形態によるシステムの一例を示している。このシステムは、本発明の実施の形態による「スライス処理ユニット」100を備えることができる。スライス処理ユニット100は、スライスデータバッファ101、スライスリネームフィルタ102、及びスライスリマッパ103を備えることができる。これらの構成要素に関連付けられるオペレーションを以下でさらに詳述する。
【0008】
スライス処理ユニット100は、プロセッサパイプラインに関連付けることができる。パイプラインは、割り当て/レジスタリネームロジック105に接続されている、命令をデコードする命令デコーダ104を備えることができる。既知のように、プロセッサは、命令に物理レジスタを割り当てて、命令の論理レジスタを物理レジスタにマッピングする割り当て/レジスタリネームロジック105等のロジックを含むことができる。本明細書で使用される場合、「マッピング」は、両者の間の対応を定義又は指定することを意味する(概念的に言えば、論理レジスタ識別子が、物理レジスタ識別子に「リネーム」される)。より具体的には、パイプラインにおける命令の短期間の寿命の間、命令のソースオペランド及びデスティネーションオペランドは、プロセッサの一組の論理レジスタ(「アーキテクチャ」レジスタも)のレジスタの識別子の点で指定されると、命令をプロセッサで実際に実行できるように物理レジスタを割り当てられる。物理レジスタセットは、通常、論理レジスタセットよりもはるかに多く、したがって、複数の異なる物理レジスタを同じ論理レジスタにマッピングすることができる。
【0009】
割り当て/レジスタリネームロジック105は、実行用の命令をキューに入れるμop(「マイクロ」オペレーション、すなわち命令)キュー106に接続することができ、μopキュー106は、実行用の命令をスケジューリングするスケジューラ107に接続することができる。割り当て/レジスタリネームロジック105によって実行される、論理レジスタの物理レジスタへのマッピング(以下では、「物理レジスタマッピング」という)は、実行を待っている命令用のリオーダバッファ(ROB)(図示せず)又はスケジューラ107に記録することができる。本発明の実施の形態によれば、物理レジスタマッピングは、以下でさらに詳述するように、スライス命令として特定された命令用のスライスデータバッファ101にコピーすることができる。
【0010】
スケジューラ107は、ブロック108のバイパスロジックとともに図1に示される、プロセッサの物理レジスタを含むレジスタファイルに接続することができる。レジスタファイル/バイパスロジック108は、実行用にスケジューリングされた命令を実行するデータキャッシュ/機能ユニットロジック109とインターフェースすることができる。L2キャッシュ110は、データキャッシュ/機能ユニットロジック109とインターフェースして、メモリインターフェース111を介してメモリサブシステム(図示せず)から取り出されたデータを提供することができる。
【0011】
前述したように、L2キャッシュでミスするロードについてのキャッシュミスの修復は、長い待ち時間のオペレーションとみなすことができる。長い待ち時間のオペレーションの他の例には、浮動小数点演算及び浮動小数点演算の依存チェーンが含まれる。命令がパイプラインによって処理される時、本発明の実施の形態に従って、長い待ち時間のオペレーションに依存する命令をスライス命令として分類して、特別な処置を行い、それによって、それらのスライス命令がパイプラインスループットを妨害又は低速化することを防止することができる。スライス命令は、キャッシュミスを発生するロード等の独立命令、又は、ロード命令によってロードされるレジスタを読み出す命令等、別のスライス命令に依存する命令である場合がある。
【0012】
スライス命令がパイプラインに出現すると、そのスライス命令は、スケジューラ107によって決定されるような命令のスケジューリング順序にする代わりに、スライスデータバッファ101に記憶することができる。スケジューラは、通常、データ依存順序で命令をスケジューリングする。スライス命令は、その命令を実行するのに必要な情報の少なくとも一部と共に、スライスデータバッファに記憶することができる。たとえば、この情報には、利用可能な場合にソースオペランドの値と、命令の物理レジスタマッピングとが含まれ得る。物理レジスタマッピングは、命令に関連付けられているデータ依存情報を保持する。利用可能なあらゆるソース値及び物理レジスタマッピングをスライス命令と共にスライスデータバッファに記憶することによって、たとえスライス命令が完了する前であっても、対応するレジスタを他の命令のために解放して再利用することができる。さらに、スライス命令が、その後、パイプライン内に再導入されてその実行が完了すると、そのソースオペランドの少なくとも1つを再評価することを不要とすることができる一方、物理レジスタマッピングは、命令がスライス命令シーケンスの正しい場所で実行されることを保証する。
【0013】
本発明の実施の形態によれば、スライス命令の特定は、長い待ち時間のオペレーションのレジスタ依存状態及びメモリ依存状態を追跡することによって動的に行うことができる。より具体的には、スライス命令は、物理レジスタ及びストアキューエントリーを介してスライス命令指示子を伝えることによって特定することができる。ストアキューは、メモリに書き込むためにキューに入れられたストア命令を保持するための、プロセッサにおける構造体(図1に図示せず)である。ロード命令は、ストアキューエントリーのフィールドを読み出すことができ、ストア命令は、ストアキューエントリーのフィールドを書き込むことができる。スライス命令指示子は、各物理レジスタ及び各ストアキューエントリーに関連付けられる、本明細書では「非値(Not a Value)」(NAV)ビットと呼ばれるビットとすることができる。このビットは、最初にセットすることができない(たとえば、このビットは、論理「0」の値を有する)が、関連付けられている命令が、長い待ち時間のオペレーションに依存する場合には、(たとえば、論理「1」に)セットすることができる。
【0014】
このビットは、最初に、独立スライス命令についてセットすることができ、その後、その独立命令に直接的又は間接的に依存する命令に伝えることができる。より具体的には、キャッシュをミスするロード等、スケジューラにおける独立スライス命令のデスティネーションレジスタのNAVビットをセットすることができる。そのデスティネーションレジスタをソースとして有する後続の命令は、それらの命令の各デスティネーションレジスタのNAVビットもセットできるという点で、NAVビットを「継承」することができる。ストア命令のソースオペランドのNAVビットがセットされている場合、そのストアに対応するストアキューエントリーのNAVビットをセットすることができる。そのストアキューエントリーから読み出しを行う後続のロード命令又はそのストアキューエントリーから今後予測される後続のロード命令について、それらの各デスティネーションのNAVビットをセットすることができる。スケジューラの命令エントリーにも、物理レジスタファイル及びストアキューエントリーのNAVビットに対応する、それらの命令エントリーのソースオペランド及びデスティネーションオペランドについて、NAVビットを設けることができる。スケジューラエントリーにおけるNAVビットは、物理レジスタ及びストアキューエントリーにおける対応するNAVビットがセットされるのと同様にセットされて、スケジューラエントリーを、スライス命令を包含するものとして特定することができる。スライス命令の依存チェーンは、上記プロセスによってスケジューラに形成することができる。
【0015】
パイプラインにおけるオペレーションの通常の過程では、命令は、そのソースレジスタが準備できた時、すなわち、その命令を実行して正当な結果を与えるのに必要とされる値をそのソースレジスタが含む時に、スケジューラを離れて実行することができる。ソースレジスタは、たとえば、ソース命令が実行されて、レジスタに値を書き込んだ時に準備できた状態になることができる。このようなレジスタは、本明細書では、「完成ソースレジスタ」と呼ばれる。本発明の実施の形態によれば、ソースレジスタは、完成ソースレジスタである時又はそのNAVビットがセットされている時のいずれかに準備できたものとみなすことができる。したがって、スライス命令のソースレジスタのいずれかが完成ソースレジスタであり、且つ、完成ソースレジスタでないあらゆるソースレジスタがセットされたNAVビットを有する時に、スライス命令は、スケジューラを離れることができる。スライス命令及び非スライス命令は、したがって、長い待ち時間のオペレーションに対する依存によって遅延が引き起こされることなく、連続フローでパイプラインから「排出」を行うことができ、それによって、後続の命令は、スケジューラエントリーを獲得することが可能になる。
【0016】
スライス命令がスケジューラを離れる時に実行されるオペレーションは、その命令自体と共に、その命令のあらゆる完成ソースレジスタの値をスライスデータバッファに記録すること、及び、あらゆる完成ソースレジスタを読み出されたものとしてマーキングすることとを含む。これによって、完成ソースレジスタを、他の命令による使用のために再利用することが可能になる。命令の物理レジスタマッピングも、スライスデータバッファに記録することができる。複数のスライス命令(「スライス」)を、対応する完成ソースレジスタ値及び物理レジスタマッピングと共に、スライスデータバッファに記録することができる。上記を考慮すると、スライスは、そのスライスが依存する長い待ち時間のオペレーションが完了した時に、パイプライン内に再導入可能な自己完結型のプログラムであって、スライスを実行するのに必要とされる唯一の外部入力はロードからのデータであるので、効率的に実行することができる(長い待ち時間のオペレーションが、キャッシュミスの修復であると仮定する)自己完結型のプログラム、とみなすことができる。他の入力は、完成ソースレジスタの値としてスライスデータバッファにすでにコピーされているか、又は、スライスの内部で生成される。
【0017】
さらに、前述したように、スライス命令のデスティネーションレジスタは、他の命令による再利用及び使用のために解放することができ、それによって、レジスタファイルに対する圧力が取り除かれる。
【0018】
実施の形態では、スライスデータバッファは、複数のエントリーを備えることができる。各エントリーは、スライス命令自体のフィールドと、完成ソースレジスタ値のフィールドと、スライス命令のソースレジスタ及びデスティネーションレジスタの物理レジスタマッピングのフィールドとを含む、各スライス命令に対応する複数のフィールドを備えることができる。スライスデータバッファエントリーは、スライス命令がスケジューラを離れる時に割り当てることができ、スライス命令は、前述したように、それらのスライス命令がスケジューラにおいて有する順序でスライスデータバッファに記憶することができる。スライス命令は、やがて同じ順序でパイプラインに戻すことができる。たとえば、実施の形態では、μopキュー107を介して命令をパイプラインに再挿入することができるが、他の設定も可能である。実施の形態では、スライスデータバッファは、L2キャッシュと同様に、長い待ち時間で高帯域幅のアレイを実施する高密度SRAM(スタティックランダムアクセスメモリ)とすることができる。
【0019】
次に図1を再び参照する。図1に示し、前述したように、本発明の実施の形態によるスライス処理ユニット100は、スライスリネームフィルタ102とスライスリマッパ103とを備えることができる。スライスリマッパ103は、割り当て/レジスタリネームロジック105が論理レジスタを物理レジスタにマッピングする方法と類似した方法で、新しい物理レジスタを、スライスデータバッファの物理レジスタマッピングの物理レジスタ識別子にマッピングすることができる。このオペレーションは、元の物理レジスタマッピングのレジスタが上述したように解放されていることから必要とされる場合がある。これらのレジスタは、スライスをパイプラインに再導入する準備ができた時に、他の命令によってすでに再利用されている可能性があり、他の命令によって使用中である可能性もある。
【0020】
スライスリネームフィルタ102は、推測式プロセッサでは既知のプロセスであるチェックポインティングに関連付けられるオペレーションに使用することができる。チェックポインティングは、所与のポイントで所与のスレッドのアーキテクチャレジスタの状態を保持するのに実行することができ、その結果、必要に応じて、その状態を容易に回復することができる。たとえば、チェックポインティングは、信頼性の低い分岐で実行することができる。
【0021】
スライス命令が、チェックポインティングされた物理レジスタに書き込む場合、リマッパ103はその命令に新しい物理レジスタを割り当てるべきではない。その代わり、チェックポインティングされた物理レジスタは、割り当て/レジスタリネームロジック105によって最初に割り当てられたのと同じ物理レジスタにマッピングされなければならない。そうでない場合、チェックポイントは、破損/無効になる。スライスリネームフィルタ102は、どの物理レジスタがチェックポインティングされているかに関する情報をスライスリマッパ103に提供し、その結果、スライスリマッパ102は、チェックポインティングされた物理レジスタにそれらの物理レジスタの元のマッピングを割り当てることができる。チェックポインティングされたレジスタに書き込みを行うスライス命令の結果が利用可能である場合、それらの結果は、先に完了した、チェックポインティングされたレジスタに書き込みを行う独立命令の結果と融合又は統合することができる。
【0022】
本発明の実施の形態によれば、スライスリマッパ103は、スライスリマッパ103に利用可能な物理レジスタであって、スライス命令の物理レジスタマッピングに割り当てるための物理レジスタとして、割り当て/レジスタリネームロジック105が有するよりも多くの物理レジスタを有することができる。これは、チェックポインティングによるデッドロックを防止するためのものとすることができる。より具体的には、物理レジスタはチェックポイントによって拘束されるので、スライス命令にリマッピングされる物理レジスタが利用不能になる場合がある。他方、スライス命令が完了する場合にのみ、チェックポイントによって拘束された物理レジスタを解放できる場合もあり得る。この状況は、デッドロックにつながる可能性がある。
【0023】
したがって、上述したように、スライスリマッパは、割り当て/レジスタリネームロジック105に利用可能な範囲を上回る、マッピングに利用可能な物理レジスタの範囲を有することができる。たとえば、プロセッサには、192個の実際の物理レジスタが存在することがある。これらのレジスタの128個は、命令へのマッピングを行うための割り当て/レジスタリネームロジック105に利用可能とすることができる一方、192個の全範囲が、スライスリマッパに利用可能である。このように、この例では、余分の64個の物理レジスタがスライスリマッパに利用可能であり、それによって、レジスタが128個の基本セットで利用不能であることによるデッドロック状況が確実に発生しないようにされる。
【0024】
次に、図1の構成要素を参照して、一例を与える。以下の命令シーケンス(1)及び(2)の各命令には、スケジューラ107における対応するスケジューラエントリーが割り当てられているものと仮定する。簡単にするために、さらに、示されたレジスタ識別子は物理レジスタマッピングを表すものと仮定する。すなわち、それらのレジスタ識別子は、命令によって割り当てられた物理レジスタを指し、それらの物理レジスタには、命令の論理レジスタがマッピングされている。このように、対応する論理レジスタは、物理レジスタ識別子のそれぞれには暗黙的である。
(1) R1←Mx
(アドレスがMxであるメモリロケーションの内容を物理レジスタR1にロードする)
(2) R2←R1+R3
(物理レジスタR1の内容及びR3の内容を加算し、その結果を物理レジスタR2に置く)
【0025】
スケジューラ107では、命令(1)及び(2)が実行を待っている。それらの命令のソースオペランドが利用可能になると、命令(1)及び(2)は、スケジューラを離れて実行することができ、それによって、スケジューラ107におけるそれらの命令の各エントリーは、他の命令に利用可能になる。ロード命令(1)のソースオペランドは、メモリロケーションであり、したがって、命令(1)は、L1キャッシュ(図示せず)又はL2キャッシュ110に存在するメモリロケーションに正しいデータを要求する。命令(2)は、正しいデータがレジスタR1に存在するには、命令(1)の実行が成功する必要があるという点で、命令(1)に依存する。レジスタR3は、完成ソースレジスタであるものと仮定する。
【0026】
次に、ロード命令である命令(1)がL2キャッシュ110でミスするものとさらに仮定する。通常、キャッシュミスを修復するには数百サイクルを要する可能性がある。その時間の間、従来のプロセッサでは、命令(1)及び(2)によって占有されたスケジューラエントリーは、他の命令に利用不能であり、それによって、スループットが抑制され、性能が低下していた。その上、キャッシュミスが修復されている間、物理レジスタR1、R2、及びR3は、引き続き割り当てられた状態にあり、それによって、レジスタファイルに対する圧力が生み出されていた。
【0027】
これとは対照的に、本発明の実施の形態によれば、命令(1)及び(2)をスライス処理ユニット100へ逸らすことができ、それらの命令の対応するスケジューラ及びレジスタファイルの資源を、パイプラインの他の命令による使用のために自由にすることができる。より具体的には、命令(1)がキャッシュをミスする時に、NAVビットをR1にセットすることができ、次に、命令(2)がR1を読み出すことに基づいて、R2にもNAVビットをセットすることができる。図示しないが、R1又はR2をソースとして有する後続の命令も、そのNAVビットが、それらの各デスティネーションレジスタにセットされる。それらの命令に対応するスケジューラエントリーのNAVビットもセットされ、それによって、それらの命令はスライス命令として特定される。
【0028】
命令(1)は、より詳細には、ソースとしてレジスタもストアキューエントリーも有さないので、独立スライス命令である。他方、命令(2)は、ソースとしてNAVビットがセットされたレジスタを有するので、依存スライス命令である。
【0029】
NAVビットがR1にセットされているので、命令(1)は、スケジューラ107を出ることができる。命令(1)は、スケジューラ107を出ることに続いて、(或る論理レジスタへの)その物理レジスタマッピングR1と共に、スライスデータバッファ101に書き込まれる。同様に、NAVビットがR1にセットされ、且つ、R3が完成ソースレジスタであるので、命令(2)はスケジューラ107を出ることができ、出る時、命令(2)、R3の値、並びに(或る論理レジスタへの)物理レジスタマッピングR1、(或る論理レジスタへの)物理レジスタマッピングR2、及び(或る論理レジスタへの)物理レジスタマッピングR3は、スライスデータバッファ101に書き込まれる。命令(2)は、スケジューラにおける場合と同様に、スライスデータバッファにおいても命令(1)の後に続く。命令(1)及び(2)によってそれまで占有されていたスケジューラエントリー並びにレジスタR1、R2、及びR3は、今やすべて、再利用可能であり、他の命令による使用のために利用可能にすることができる。
【0030】
命令(1)によって発生したキャッシュミスが修復されると、スライスリマッパ103によって実行された新しい物理レジスタマッピングと共に、命令(1)及び(2)をそれらの元のスケジューリング順序でパイプラインに挿入して戻すことができる。完成ソースレジスタ値は、即値オペランドとして命令と共に運ぶことができる。命令はその後実行することができる。
【0031】
上記説明を考慮して、図2は、本発明の実施の形態によるプロセスフローを示している。ブロック200に示すように、プロセスは、プロセッサパイプラインにおける命令を、長い待ち時間のオペレーションに依存するものとして特定することを含むことができる。たとえば、この命令は、キャッシュミスを発生するロード命令とすることができる。
【0032】
ブロック201に示すように、この特定に基づいて、命令を実行することなく、命令にパイプラインを離れさせることができ、命令を実行するのに必要とされる情報の少なくとも一部と共に、命令をスライスデータバッファに置くことができる。情報のこの少なくとも一部は、ソースレジスタの値及び物理レジスタマッピングを含むことができる。この命令によって割り当てられたスケジューラエントリー及び物理レジスタ(複数可)は、ブロック202に示すように、他の命令による使用のために解放して再利用することができる。
【0033】
長い待ち時間のオペレーションが完了した後、命令は、ブロック203に示すように、パイプラインに再挿入することができる。命令は、長い待ち時間のオペレーションに依存する命令として特定されたことに基づいて、パイプラインからスライスデータバッファへ移動された複数の命令の1つの場合がある。これらの複数の命令は、スケジューリング順序でスライスデータバッファに移動させることができ、その同じ順序でパイプラインに再挿入することができる。その1つの命令は、その後ブロック204に示すように実行することができる。
【0034】
連続フローパイプラインを実施するチェックポイント処理及び回復のアーキテクチャにおける正確な例外処置及び分岐回復を可能にするために、チェックポイントがもはや必要とされなくなるまで、2つのタイプのレジスタは解放されるべきではないことに留意されたい。この2つのタイプのレジスタは、チェックポイントのアーキテクチャ状態に属するレジスタ、及び、アーキテクチャ「リブアウト」に対応するレジスタである。リブアウトレジスタは、既知のように、プログラムの現在の状態を反映する論理レジスタ及び対応する物理レジスタである。より具体的には、リブアウトレジスタは、プロセッサの論理命令セットの所与の論理レジスタに書き込みを行うプログラムの最後の命令又は最も近時の命令に対応する。しかしながら、リブアウトレジスタ及びチェックポインティングされたレジスタは、物理レジスタファイルと比較すると、数が少ない(論理レジスタと同程度である)。
【0035】
他の物理レジスタは、(1)それらのレジスタを読み出すすべての後続の命令が、それらのレジスタをすでに読み出しており、且つ、(2)それらの物理レジスタが、その後すでに再マッピングされている、すなわち上書きされている場合に再利用することができる。本発明の実施の形態による連続フローパイプラインは、条件(1)を保証する。その理由は、スライス命令が完了する前であっても、スライス命令が完成ソースレジスタの値を読み出した後であれば、それらのスライス命令の完成ソースレジスタは、読み出されたものとしてマーキングされるからである。条件(2)は、通常処理それ自体の期間中に満たされる。すなわち、L個の論理レジスタの場合、新しい物理レジスタマッピングを必要とする(L+1)番目の命令が、前の物理レジスタマッピングを上書きする。したがって、パイプラインを離れる、デスティネーションレジスタを有するどのN個の命令についても、N−L個の物理レジスタが上書きされ、したがって、条件(2)は満たされる。
【0036】
このように、完成ソースレジスタの値及び物理レジスタマッピング情報がスライスについて確実に記録されるようにすることによって、命令が物理レジスタを必要とするごとに、このようなレジスタが常に利用可能であるようなペースで、レジスタを再利用することができる。したがって、連続フロー特性が達成される。
【0037】
さらに、スライスデータバッファは、複数の独立したロードによる複数のスライスを含むことができることに留意されたい。前述したように、スライスは、基本的に、実行準備を整えるために、ロードミスのデータ値が復帰することのみを待っている自己完結型のプログラムである。ロードミスのデータ値が利用可能になると、スライスを任意の順序で排出(パイプラインに再挿入)することができる。ロードミスの修復は、順序どおりに完了しない場合があり、したがって、たとえば、スライスデータバッファにおける後のミスに属するスライスが、スライスデータバッファにおける先のスライスよりも前にパイプラインに再挿入される準備ができる場合がある。この状況を処置するための複数の選択肢が存在する。すなわち、(1)最も古いスライスの準備ができるまで待ち、先入れ先出し順序でスライスデータバッファの排出を行う、(2)スライスデータバッファのあらゆるミスが復帰した時に、先入れ先出し順序でスライスデータバッファの排出を行う、及び、(3)修復されたミスから順次スライスデータバッファの排出を行う(必ずしも、最も古いスライスが最初に排出されることになるとは限らない)、といった選択肢が存在する。
【0038】
図3は、コンピュータシステムのブロック図である。このコンピュータシステムは、本発明の一実施の形態に従って使用するための1つ又は複数のプロセッサパッケージ及びメモリを含むアーキテクチャ状態を含むことができる。図3では、コンピュータシステム300は、プロセッサバス320に接続される1つ又は複数のプロセッサパッケージ310(1)〜310(n)を含むことができる。プロセッサバス320は、システムロジック330に接続することができる。1つ又は複数のプロセッサパッケージ310(1)〜310(n)のそれぞれは、Nビットプロセッサパッケージとすることができ、デコーダ(図示せず)及び1つ又は複数のNビットレジスタ(図示せず)を含むことができる。システムロジック330は、バス350を通じてシステムメモリ340に接続することができ、周辺バス360を通じて不揮発性メモリ370及び1つ又は複数の周辺機器380(1)〜380(m)に接続することができる。周辺バス360は、たとえば、1つ又は複数の、1998年12月18日に公表された周辺コンポーネント相互接続(PCI)スペシャルインタレストグループ(Special Interest Group)(SIG)のPCIローカルバス仕様改定第2.2版のPCIバス;業界標準アーキテクチャ(ISA)バス;1992年に公表されたBCPR Services社の拡張ISA(EISA)仕様第3.12版、1992のEISAバス;1998年9月23日に公表されたユニバーサルシリアルバス(USB)仕様第1.1版のUSB;及び同等の周辺バスを表すことができる。不揮発性メモリ370は、読み出し専用メモリ(ROM)又はフラッシュメモリ等のスタティックメモリデバイスとすることができる。周辺デバイス380(1)〜380(m)には、たとえば、キーボード;マウス又は他のポインティングデバイス;ハードディスクドライブ、コンパクトディスク(CD)ドライブ、光ディスク、デジタルビデオディスク(DVD)ドライブ等のマスストレージデバイス;ディスプレイ等が含まれ得る。
【0039】
本発明のいくつかの実施の形態が、本明細書で具体的に図示及び/又は説明されている。しかしながら、本発明の変更及び変形が、本発明の精神及び意図した範囲から逸脱することなく、上記教示によってカバーされ、添付の特許請求の範囲の範囲内にあることが理解されよう。
【図面の簡単な説明】
【0040】
【図1】本発明の実施の形態によるスライス処理ユニットを備えるプロセッサの構成要素を示す図である。
【図2】本発明の実施の形態によるプロセスフローを示す図である。
【図3】本発明の実施の形態によるプロセッサを備えるシステムを示す図である。

【特許請求の範囲】
【請求項1】
プロセッサパイプラインにおける命令を、長い待ち時間のオペレーションに依存する命令として特定すること、
該特定に基づいて、前記命令を実行するのに必要とされる情報の少なくとも一部と共に、前記命令をデータストレージエリアに置くこと、及び
前記命令によって割り当てられている物理レジスタを解放すること
を含む方法。
【請求項2】
前記命令によって占有されるスケジューラエントリーを解放することをさらに含む、請求項1に記載の方法。
【請求項3】
前記長い待ち時間のオペレーションが完了した後、前記命令を前記パイプラインに再挿入すること
をさらに含む、請求項1に記載の方法。
【請求項4】
前記情報の前記少なくとも一部は、前記命令のソースレジスタの値を含む、請求項1に記載の方法。
【請求項5】
前記情報の前記少なくとも一部は、前記命令の物理レジスタマッピングを含む、請求項1に記載の方法。
【請求項6】
前記命令は、長い待ち時間のオペレーションに依存する、前記パイプラインにおける複数の命令の1つであり、該複数の命令は、該複数の命令のスケジューリング順序で前記データストレージエリアに置かれる、請求項1に記載の方法。
【請求項7】
前記長い待ち時間のオペレーションが完了した後、前記複数の命令を前記スケジューリング順序で前記パイプラインに再挿入すること
をさらに含む、請求項6に記載の方法。
【請求項8】
長い待ち時間のオペレーションに依存するものとして特定された命令を記憶するためのデータストレージエリアであって、各命令について、該命令のフィールドと、該命令のソースレジスタの値のフィールドと、該命令のレジスタの物理レジスタマッピングのフィールドとを備える、データストレージエリア
を備えるプロセッサ。
【請求項9】
前記データストレージエリアに接続されて、物理レジスタを、前記データストレージエリアの前記物理レジスタマッピングの物理レジスタ識別子にマッピングするためのリマッパ
をさらに備える、請求項8に記載のプロセッサ。
【請求項10】
前記リマッパの、チェックポインティングされた物理レジスタを特定するためのフィルタをさらに備える、請求項8に記載のプロセッサ。
【請求項11】
命令を記憶するためのメモリと、
該メモリに接続されて、前記命令を実行するためのプロセッサであって、該プロセッサは、長い待ち時間のオペレーションに依存するものとして特定された命令を記憶するためのデータストレージエリアを含み、該データストレージエリアは、各命令について、該命令のフィールドと、該命令のソースレジスタの値のフィールドと、該命令のレジスタの物理レジスタマッピングのフィールドとを備える、プロセッサと
を備えるシステム。
【請求項12】
前記プロセッサは、
前記データストレージエリアに接続されて、物理レジスタを、前記データストレージエリアの前記物理レジスタマッピングの物理レジスタ識別子にマッピングするためのリマッパ
をさらに備える、請求項11に記載のシステム。
【請求項13】
前記プロセッサは、前記リマッパの、チェックポインティングされた物理レジスタを特定するためのフィルタをさらに備える、請求項11に記載のシステム。
【請求項14】
キャッシュミスを発生するロード命令を実行すること、
該ロード命令が長い待ち時間のオペレーションに依存することを示すように、該ロード命令に割り当てられるデスティネーションレジスタの指示子をセットすること、
前記ロード命令を実行するのに必要とされる情報の少なくとも一部と共に、前記ロード命令をデータストレージエリアに移動させること、及び
前記ロード命令に割り当てられた前記デスティネーションレジスタを解放すること
を含む方法。
【請求項15】
前記ロード命令の前記デスティネーションレジスタにセットされた前記指示子に基づいて、別の命令のデスティネーションレジスタの指示子をセットすること、
前記他の命令を実行するのに必要とされる情報の少なくとも一部と共に、前記他の命令を前記データストレージエリアに移動させること、及び
前記別の命令に割り当てられた物理レジスタを解放すること
をさらに含む、請求項14に記載の方法。
【請求項16】
前記ロード命令及び前記他の命令によって割り当てられたスケジューラエントリーを解放することをさらに含む、請求項15に記載の方法。
【請求項17】
前記情報の前記少なくとも一部は、前記他の命令の物理レジスタマッピングを含む、請求項15に記載の方法。
【請求項18】
前記長い待ち時間のオペレーションが完了した後、前記ロード命令及び前記他の命令をスケジューリング順序でプロセッサパイプラインに再挿入すること
をさらに含む、請求項15に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2012−43443(P2012−43443A)
【公開日】平成24年3月1日(2012.3.1)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−199057(P2011−199057)
【出願日】平成23年9月13日(2011.9.13)
【分割の表示】特願2007−533649(P2007−533649)の分割
【原出願日】平成17年9月21日(2005.9.21)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】