JP4856646B2 - 連続フロープロセッサパイプライン - Google Patents

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

Info

Publication number
JP4856646B2
JP4856646B2 JP2007533649A JP2007533649A JP4856646B2 JP 4856646 B2 JP4856646 B2 JP 4856646B2 JP 2007533649 A JP2007533649 A JP 2007533649A JP 2007533649 A JP2007533649 A JP 2007533649A JP 4856646 B2 JP4856646 B2 JP 4856646B2
Authority
JP
Japan
Prior art keywords
instruction
slice
register
physical
instructions
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
Application number
JP2007533649A
Other languages
English (en)
Other versions
JP2008513908A (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2008513908A publication Critical patent/JP2008513908A/ja
Application granted granted Critical
Publication of JP4856646B2 publication Critical patent/JP4856646B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

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)
  • Memory System Of A Hierarchy Structure (AREA)

Description

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

Claims (27)

  1. スケジューラが、プロセッサパイプラインにおける命令を、キャッシュミスにより待ち時間を生じた命令であるスライス命令として特定すること、
    該特定に基づいて、前記スライス命令を実行するのに必要とされる情報の少なくとも一部であって前記スライス命令のソースレジスタの値を含む前記情報の前記少なくとも一部と共に、割り当て/レジスタリネームロジックが前記スライス命令をスライス処理ユニット内のスライスデータバッファに移動し前記ソースレジスタに読み出されたものしてマーキングすること、及び
    割り当て/レジスタリネームロジックが、前記マーキングを、そのスライス命令以降の命令が、前記ソースレジスタをすでに読み出し済みであるという物理レジスタ解放条件の1つを保証するために用いて、前記スライス命令の実行のために割り当てられている物理レジスタを、他の命令によって利用可能となるように解放すること、
    前記スライス命令のロードミスのデータ値が利用可能になった後、スライス処理ユニットが前記スライス命令を前記プロセッサパイプラインに再挿入すること
    を含み、前記物理レジスタは、前記スライス命令が完了する前に他の命令による使用のために再利用される方法。
  2. 前記スライス命令によって占有されるスケジューラエントリーを、前記スケジューラが解放することをさらに含む、請求項1に記載の方法。
  3. 前記スライス命令は、前記パイプラインにおける複数の命令の1つであり、前記スライス命令は、該複数の命令のスケジューリング順序で前記スライスデータバッファに置かれる、請求項1または2に記載の方法。
  4. 前記情報の前記少なくとも一部は、前記スライス命令の物理レジスタマッピングを含む、請求項1から3のいずれか1項に記載の方法。
  5. プロセッサパイプラインにおける命令を、キャッシュミスにより待ち時間を生じた命令であるスライス命令として特定するスケジューラ、
    スライス命令として特定された命令を記憶するためにスライス処理ユニット内に設けられるスライスデータバッファであって、各命令について、該命令のフィールドと、該命令のソースレジスタの値のフィールドと、該命令のレジスタの物理レジスタマッピングのフィールドとを備える、スライスデータバッファ
    前記プロセッサパイプラインにおける命令が前記スライス命令として特定されると、前記特定に基づいて前記スライス命令を実行するのに必要な情報の少なくとも一部であって前記スライス命令のソースレジスタの値を含む前記情報の前記少なくとも一部と共に前記スライス命令を前記プロセッサパイプラインから前記スライスデータバッファに移動し、前記ソースレジスタに読み出されたものしてマーキングし、前記マーキングを、そのスライス命令以降の命令が、前記ソースレジスタをすでに読み出し済みであるという物理レジスタ解放条件の1つを保証するために用いて、前記スライス命令の実行のために割り当てられている物理レジスタを解放する割り当て/レジスタリネームロジック、
    前記スライス命令のロードミスのデータ値が利用可能になった後、前記スライス命令を前記プロセッサパイプラインに再挿入するスライス処理ユニット、
    を備え、前記物理レジスタは、前記スライス命令が完了する前に他の命令による使用のために再利用されるプロセッサ。
  6. 前記スライスデータバッファに接続されて、物理レジスタを、前記スライスデータバッファの前記物理レジスタマッピングの物理レジスタ識別子にマッピングするためのリマッパ
    をさらに備える、請求項5に記載のプロセッサ。
  7. 前記リマッパの、チェックポインティングされた物理レジスタを特定するためのフィルタをさらに備える、請求項6に記載のプロセッサ。
  8. 命令を記憶するためのメモリと、
    該メモリに接続されて、前記命令を実行するためのプロセッサと、を備え、該プロセッサは、
    プロセッサパイプラインにおける命令を、キャッシュミスにより待ち時間を生じた命令であるスライス命令として特定するスケジューラ、
    各命令について、該命令のフィールドと、該命令のソースレジスタの値のフィールドと、該命令のレジスタの物理レジスタマッピングのフィールドと有し、スライス命令として特定された命令を記憶するためにスライス処理ユニット内に設けられるスライスデータバッファ
    前記プロセッサパイプラインにおける命令がスライス命令として特定されると、前記特定に基づいて前記スライス命令を実行するのに必要な情報の少なくとも一部であって前記スライス命令のソースレジスタの値を含む前記情報の前記少なくとも一部と共に前記スライス命令を前記プロセッサパイプラインから前記スライスデータバッファに移動し、前記ソースレジスタに読み出されたものしてマーキングし、前記マーキングを、そのスライス命令以降の命令が、前記ソースレジスタをすでに読み出し済みであるという物理レジスタ解放条件の1つを保証するために用いて、前記スライス命令の実行のために割り当てられている物理レジスタを解放する割り当て/レジスタリネームロジック、
    前記スライス命令のロードミスのデータ値が利用可能になった後、前記スライス命令を前記プロセッサパイプラインに再挿入するスライス処理ユニット、
    を有し、前記物理レジスタは、前記スライス命令が完了する前に他の命令による使用のために再利用されるシステム。
  9. 前記プロセッサは、
    前記スライスデータバッファに接続されて、物理レジスタを、前記スライスデータバッファの前記物理レジスタマッピングの物理レジスタ識別子にマッピングするためのリマッパ
    をさらに備える、請求項8に記載のシステム。
  10. 前記プロセッサは、前記リマッパの、チェックポインティングされた物理レジスタを特定するためのフィルタをさらに備える、請求項9に記載のシステム。
  11. キャッシュミスを発生するロード命令を、データキャッシュ/機能ユニットロジックが実行すること、
    該ロード命令がキャッシュミスにより待ち時間を生じた命令であるスライス命令であることを示すように、該ロード命令に割り当てられるデスティネーションレジスタの指示子を、スケジューラがセットすること、
    前記ロード命令を実行するのに必要とされる情報の少なくとも一部であって前記スライス命令のソースレジスタの値を含む前記情報の前記少なくとも一部と共に、割り当て/レジスタリネームロジックが前記ロード命令をスライス処理ユニット内のスライスデータバッファに移動させ前記ソースレジスタに読み出されたものしてマーキングすること、及び
    割り当て/レジスタリネームロジックが、前記マーキングを、そのスライス命令以降の命令が、前記ソースレジスタをすでに読み出し済みであるという物理レジスタ解放条件の1つを保証するために用いて、前記ロード命令の実行のために割り当てられた前記デスティネーションレジスタを解放すること、
    前記スライス命令のロードミスのデータ値が利用可能になった後、スライス処理ユニットが前記ロード命令をプロセッサパイプラインに再挿入すること、
    を含み、前記デスティネーションレジスタは、前記スライス命令が完了する前に他の命令による使用のために再利用される方法。
  12. 前記デスティネーションレジスタにセットされた前記指示子に基づいて、前記デスティネーションレジスタをソースとして有する後続の命令のデスティネーションレジスタの指示子を、スケジューラがセットすること、
    前記後続の命令を実行するのに必要とされる情報の少なくとも一部と共に、割り当て/レジスタリネームロジックが前記後続の命令を前記スライスデータバッファに移動させること、
    割り当て/レジスタリネームロジックが前記後続の命令に割り当てられた物理レジスタを解放すること、
    及び
    前記スライス命令のロードミスのデータ値が利用可能になった後、スライス処理ユニットが前記後続の命令を前記プロセッサパイプラインに再挿入すること、
    をさらに含み、前記物理レジスタは、前記後続の命令が完了する前に他の命令による使用のために再利用される請求項11に記載の方法。
  13. 前記ロード命令及び前記他の命令によって割り当てられたスケジューラエントリーを、スケジューラが解放することをさらに含む、請求項12に記載の方法。
  14. 前記情報の前記少なくとも一部は、前記他の命令の物理レジスタマッピングを含む、請求項12または13に記載の方法。
  15. 前記スライス命令のオペレーションが完了した後、前記ロード命令及び前記後続の命令をスケジューリング順序でプロセッサパイプラインに再挿入すること
    をさらに含む、請求項12から14のいずれか1項に記載の方法。
  16. 前記スライス命令が前記スケジューラを離れる時に、前記スライス命令と共に、前記スライス命令の完成ソースレジスタの値が前記スライスデータバッファに記録され、前記完成ソースレジスタは読み出されたものとしてマーキングされ、前記完成ソースレジスタは、前記スライス命令が完了する前に他の命令による使用のために再利用される請求項1から4のいずれか1項に記載の方法。
  17. 前記スライス処理ユニットは、前記割り当て/レジスタリネームロジックに利用可能な範囲を上回る、マッピングに利用可能な物理レジスタの範囲を有する請求項1から4及び16のいずれか1項に記載の方法。
  18. 前記物理レジスタが、チェックポイントのアーキテクチャ状態に属するレジスタ、及びプログラムの現在の状態を反映するリブアウトレジスタのいずれかである場合、前記物理レジスタマッピングの物理レジスタ識別子に、最初に割り当てられたのと同じ物理レジスタがマッピングされる請求項4に記載の方法。
  19. 前記スライス命令は、L2キャッシュミスしたロード命令及び浮動小数点演算命令を含む請求項1から4及び16から18のいずれか1項に記載の方法。
  20. 前記スライス命令が前記スケジューラを離れる時に、前記スライス命令と共に、前記スライス命令の完成ソースレジスタの値が前記スライスデータバッファに記録され、前記完成ソースレジスタは読み出されたものとしてマーキングされ、前記完成ソースレジスタは、前記スライス命令が完了する前に他の命令による使用のために再利用される請求項5から7のいずれか1項に記載のプロセッサ。
  21. 前記スライス処理ユニットは、前記割り当て/レジスタリネームロジックに利用可能な範囲を上回る、マッピングに利用可能な物理レジスタの範囲を有する請求項5から7及び20のいずれか1項に記載のプロセッサ。
  22. 前記物理レジスタが、チェックポイントのアーキテクチャ状態に属するレジスタ、及びプログラムの現在の状態を反映するリブアウトレジスタのいずれかである場合、前記リマッパは、前記物理レジスタマッピングの物理レジスタ識別子に、最初に割り当てられたのと同じ物理レジスタをマッピングする請求項6または7に記載のプロセッサ。
  23. 前記スライス命令は、L2キャッシュミスしたロード命令及び浮動小数点演算命令を含む請求項5から7及び20から22のいずれか1項に記載のプロセッサ。
  24. 前記スライス命令が前記スケジューラを離れる時に、前記スライス命令と共に、前記スライス命令の完成ソースレジスタの値が前記スライスデータバッファに記録され、前記完成ソースレジスタは読み出されたものとしてマーキングされ、前記完成ソースレジスタは、前記スライス命令が完了する前に他の命令による使用のために再利用される請求項8から10のいずれか1項に記載のシステム。
  25. 前記スライス処理ユニットは、前記割り当て/レジスタリネームロジックに利用可能な範囲を上回る、マッピングに利用可能な物理レジスタの範囲を有する請求項8から10及び24のいずれか1項に記載のシステム。
  26. 前記物理レジスタが、チェックポイントのアーキテクチャ状態に属するレジスタ、及びプログラムの現在の状態を反映するリブアウトレジスタのいずれかである場合、前記リマッパは、前記物理レジスタマッピングの物理レジスタ識別子に、最初に割り当てられたのと同じ物理レジスタをマッピングする請求項9または10に記載のシステム。
  27. 前記スライス命令は、L2キャッシュミスしたロード命令及び浮動小数点演算命令を含む請求項8から10及び24から26のいずれか1項に記載のシステム。
JP2007533649A 2004-09-30 2005-09-21 連続フロープロセッサパイプライン Expired - Fee Related JP4856646B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/953,762 US20060090061A1 (en) 2004-09-30 2004-09-30 Continual flow processor pipeline
US10/953,762 2004-09-30
PCT/US2005/034145 WO2006039201A2 (en) 2004-09-30 2005-09-21 Continuel flow processor pipeline

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011199057A Division JP2012043443A (ja) 2004-09-30 2011-09-13 連続フロープロセッサパイプライン

Publications (2)

Publication Number Publication Date
JP2008513908A JP2008513908A (ja) 2008-05-01
JP4856646B2 true JP4856646B2 (ja) 2012-01-18

Family

ID=35995756

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2007533649A Expired - Fee Related JP4856646B2 (ja) 2004-09-30 2005-09-21 連続フロープロセッサパイプライン
JP2011199057A Withdrawn JP2012043443A (ja) 2004-09-30 2011-09-13 連続フロープロセッサパイプライン

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2011199057A Withdrawn JP2012043443A (ja) 2004-09-30 2011-09-13 連続フロープロセッサパイプライン

Country Status (6)

Country Link
US (1) US20060090061A1 (ja)
JP (2) JP4856646B2 (ja)
CN (1) CN100576170C (ja)
DE (1) DE112005002403B4 (ja)
GB (1) GB2430780B (ja)
WO (1) WO2006039201A2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487337B2 (en) * 2004-09-30 2009-02-03 Intel Corporation Back-end renaming in a continual flow processor pipeline
US20080077778A1 (en) * 2006-09-25 2008-03-27 Davis Gordon T Method and Apparatus for Register Renaming in a Microprocessor
US20080215804A1 (en) * 2006-09-25 2008-09-04 Davis Gordon T Structure for register renaming in a microprocessor
US8386712B2 (en) * 2006-10-04 2013-02-26 International Business Machines Corporation Structure for supporting simultaneous storage of trace and standard cache lines
US20090210666A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7877579B2 (en) * 2008-02-19 2011-01-25 International Business Machines Corporation System and method for prioritizing compare instructions
US20090210672A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7984270B2 (en) * 2008-02-19 2011-07-19 International Business Machines Corporation System and method for prioritizing arithmetic instructions
US20090210669A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Prioritizing Floating-Point Instructions
US8095779B2 (en) * 2008-02-19 2012-01-10 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US7865700B2 (en) * 2008-02-19 2011-01-04 International Business Machines Corporation System and method for prioritizing store instructions
US20090210677A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Optimization Within a Group Priority Issue Schema for a Cascaded Pipeline
US8108654B2 (en) * 2008-02-19 2012-01-31 International Business Machines Corporation System and method for a group priority issue schema for a cascaded pipeline
US7870368B2 (en) * 2008-02-19 2011-01-11 International Business Machines Corporation System and method for prioritizing branch instructions
US7882335B2 (en) * 2008-02-19 2011-02-01 International Business Machines Corporation System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline
US7996654B2 (en) * 2008-02-19 2011-08-09 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US9304749B2 (en) * 2013-09-12 2016-04-05 Marvell World Trade Ltd. Method and system for instruction scheduling
US10346171B2 (en) * 2017-01-10 2019-07-09 Intel Corporation End-to end transmission of redundant bits for physical storage location identifiers between first and second register rename storage structures
US10133620B2 (en) 2017-01-10 2018-11-20 Intel Corporation Detecting errors in register renaming by comparing value representing complete error free set of identifiers and value representing identifiers in register rename unit
US11269650B2 (en) 2018-12-29 2022-03-08 Texas Instruments Incorporated Pipeline protection for CPUs with save and restore of intermediate results
US10956160B2 (en) * 2019-03-27 2021-03-23 Intel Corporation Method and apparatus for a multi-level reservation station with instruction recirculation
US11126438B2 (en) 2019-06-26 2021-09-21 Intel Corporation System, apparatus and method for a hybrid reservation station for a processor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249182A (ja) * 1995-05-08 1996-09-27 Hitachi Ltd 情報処理装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627985A (en) * 1994-01-04 1997-05-06 Intel Corporation Speculative and committed resource files in an out-of-order processor
US6609190B1 (en) * 2000-01-06 2003-08-19 International Business Machines Corporation Microprocessor with primary and secondary issue queue
US7114059B2 (en) * 2001-11-05 2006-09-26 Intel Corporation System and method to bypass execution of instructions involving unreliable data during speculative execution
US7114060B2 (en) * 2003-10-14 2006-09-26 Sun Microsystems, Inc. Selectively deferring instructions issued in program order utilizing a checkpoint and multiple deferral scheme

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249182A (ja) * 1995-05-08 1996-09-27 Hitachi Ltd 情報処理装置

Also Published As

Publication number Publication date
DE112005002403T5 (de) 2007-08-16
CN101027636A (zh) 2007-08-29
JP2012043443A (ja) 2012-03-01
JP2008513908A (ja) 2008-05-01
GB0700980D0 (en) 2007-02-28
WO2006039201A3 (en) 2006-11-16
DE112005002403B4 (de) 2010-04-08
CN100576170C (zh) 2009-12-30
GB2430780B (en) 2010-05-19
US20060090061A1 (en) 2006-04-27
WO2006039201A2 (en) 2006-04-13
GB2430780A (en) 2007-04-04

Similar Documents

Publication Publication Date Title
JP4856646B2 (ja) 連続フロープロセッサパイプライン
EP0682789B1 (en) System and method for register renaming
US7711898B2 (en) Register alias table cache to map a logical register to a physical register
US7228402B2 (en) Predicate register file write by an instruction with a pending instruction having data dependency
US9454371B2 (en) Micro-architecture for eliminating MOV operations
US20160026463A1 (en) Zero cycle move using free list counts
JP2023526788A (ja) マスターシャドウ物理レジスタファイルを利用するための方法及びシステム
US20040148493A1 (en) Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue
US11995445B2 (en) Assignment of microprocessor register tags at issue time
US20050138339A1 (en) Method for and a trailing store buffer for use in memory renaming
US7487337B2 (en) Back-end renaming in a continual flow processor pipeline
US7191315B2 (en) Method and system for tracking and recycling physical register assignment
US20030182538A1 (en) Method and system for managing registers
US20120144174A1 (en) Multiflow method and apparatus for operation fusion
US7529913B2 (en) Late allocation of registers
US20020144091A1 (en) Method and apparatus for dynamic register management in a processor
US7055020B2 (en) Flushable free register list having selected pointers moving in unison
US6360315B1 (en) Method and apparatus that supports multiple assignment code
US6954848B2 (en) Marking in history table instructions slowable/delayable for subsequent executions when result is not used immediately
WO2013101323A1 (en) Micro-architecture for eliminating mov operations
US11281466B2 (en) Register renaming after a non-pickable scheduler queue
US20210132985A1 (en) Shadow latches in a shadow-latch configured register file for thread storage

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090630

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090929

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091006

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091029

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091106

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091130

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100104

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110207

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110913

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: 20111011

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111028

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141104

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees