JP2008504603A - 競合しないロック命令の投機実行のための方法及び装置 - Google Patents
競合しないロック命令の投機実行のための方法及び装置 Download PDFInfo
- Publication number
- JP2008504603A JP2008504603A JP2007518188A JP2007518188A JP2008504603A JP 2008504603 A JP2008504603 A JP 2008504603A JP 2007518188 A JP2007518188 A JP 2007518188A JP 2007518188 A JP2007518188 A JP 2007518188A JP 2008504603 A JP2008504603 A JP 2008504603A
- Authority
- JP
- Japan
- Prior art keywords
- lock
- micro
- processor
- load
- conflict
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 239000000872 buffer Substances 0.000 claims description 19
- 238000012544 monitoring process Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 8
- 230000015654 memory Effects 0.000 description 57
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 5
- 238000011084 recovery Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000007958 sleep Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
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)
- Executing Machine-Instructions (AREA)
Abstract
アウト・オブ・オーダープロセッサで投機的にロック命令を実行する方法及び装置が開示される。1実施の形態では、所与のロック命令が実際に競合するかについて予測が行われる。競合しない場合、ロック命令は投機的に実行された通常のロードマイクロ動作を有するとして扱われる。モニタロジックは、ロック命令が実際に競合することの示唆を探す。かかる示唆が発見されない場合、投機的なロードマイクロ動作及びロック命令に対応する他のマイクロ動作がリタイアとなる。しかし、かかる示唆が実際に発見された場合、ロック命令が再始動され、予測メカニズムがアップデートされる。
Description
本発明は、(アトミックに、メモリから値を読み込み,変更し,その値を同じアドレスに書き戻す)メモリロック命令を利用するマイクロプロセッサ全般に関し、より詳細には、アウト・オブ・オーダー実行アーキテクチャで実行されるメモリロック命令を利用することを望むマイクロプロセッサに関する。
現代のマイクロプロセッサは、それらのアーキテクチャにおいてアウト・オブ・オーダー実行の使用をサポートする。個々の命令は、対応するマイクロ動作(micro-operation)のセットにそれぞれデコードされ、次いで、このマイクロ動作のセットは、実行前にリオーダバッファに記憶される。スケジューラは、どのマイクロ動作が実際に実行の準備ができているかを判定し、厳密なプログラムオーダー以外、すなわち「アウト・オブ・オーダー」でマイクロ動作を発する。マイクロ動作がリタイアとなる(使われなくなる“retirement”)準備がされたとき、そのマイクロ動作はプログラムオーダーでリタイアとなり、したがってプログラムオーダーで実行されていない外観を有する。
先のアウト・オブ・オーダープロセッサにおいて問題を提起する1つの命令のファミリは、ロック命令ファミリである。ロック命令は、一般に信号をアサートするか、又はアトミックなメモリトランザクションを実行する幾つかの手順を利用する。すなわち、ロック命令は、他のプロセッサ、又は同じプロセッサ上の他のスレッドが構成要素のロードの間に使用されるメモリロケーション(又は等価なキャッシュライン)にアクセスするのを防止し、マイクロ命令を記憶するため、メモリにおける特定の位置をロックする。異なる実施の形態では、信号は、バス信号又はキャッシュコヒーレンシープロトコルロックを含む。ロック命令の特定の実現は、ロック命令が実行され始める前に(プログラムオーダーでの)全ての前の命令がリタイアとなることが必要とされる。ロック命令のロード及びストアマイクロ動作は、プロセッサがロック命令により使用されるメモリアドレス及びキャッシュラインをプロテクトしなければならない時間を制限するため、それらができるだけ互いに近くで実行及びリタイアされるように、一般に遅延される。しかし、これは、ロードマイクロ動作及び何れか他の介入するマイクロ動作が投機実行するのを妨げ、それらの遅延をプログラムのクリティカルパスに付加する。また、特定の実現は、後続するロード動作又は他の後続する動作が投機実行するのを妨げ、これにより後続する動作の遅延が増加される。実際に、これは、アウト・オブ・オーダー処理をサポートするために使用されるリオーダバッファがパイプラインを満たして失速し、アプリケーションのパフォーマンスを更に低下させる。
本発明は、例示を通して説明され、添付図面の図において制限されるものではない。図において、同じ参照符号は同様のエレメントを参照する。
以下の説明は、ロック命令のアウト・オブ・オーダー実行を可能にする記述を説明するものであり、この技術は、それらのロック命令が競合しないときに利益を与えるものである。ロック命令は、1を超えるプロセッサ、又は同じプロセッサにおける1を超えるスレッドが本質的に同時にメモリにおける同じロケーションをロックするのを試みたときに競合される、といわれる。ロック命令は、別のプロセッサ、又は同じプロセッサにおける別のスレッドが別のプロセッサ又はスレッドによりロックされたメモリにおけるロケーションにアクセスするのを試みたときに競合されるとして扱われる。これは、他のプロセッサ(又は他のスレッド)のメモリアクセスがロックアテンプト又は単なるシンプルメモリアクセスであるかを判定するのが可能ではないためである。以下の記載では、ロジックインプルメンテーション、ソフトウェアモジュールアロケーション、バス及び他のインタフェースシグナリング技術のような様々な特定の詳細、及び動作の詳細は、本発明の更に全体的な理解を提供するために述べられる。しかし、当業者によれば、本発明はかかる特定の詳細なしに実施さてる場合があることを理解されるであろう。他の例では、制御構造、ゲートレベル回路、フルソフトウェア命令シーケンスは、本発明を曖昧にすることのないように、詳細に示されない。当業者であれば、包含される記載により、過度の実験なしに適切な機能を実現することができる。所定の実施の形態では、本発明は、Intel(登録商標)社により製造されるプロセッサのようなPentium(登録商標)コンパチブルプロセッサ用の定量化した属性値を予測する形式で開示される。しかし、本発明は、アウト・オブ・オーダーで命令を実行する、Itaniumプロセッサファミリコンパチブルプロセッサ、又はX−Scale(登録商標)ファミリコンパチブルプロセッサのような他の種類のプロセッサで実施される場合がある。
図1を参照して、1実施の形態に係る、パイプラインの終了近くで動作するロック競合予測器を示す、プロセッサ100及びその実行パイプラインの概念図が示されている。図1の実施の形態では、フロントエンドステージ102、デコードステージ104、トレースキャッシュ106、リオーダバッファ(ROB)108、実行ステージ112及びリタイアメントステージ114が示されている。他の実施の形態では、他のステージは、パイプラインで使用され、ステージのオーダリングが変化する場合がある。
マクロ命令は、フロントエンドステージ102によりレベル1(L1)のキャッシュ124から引き出され、デコーダステージ104によりマイクロ動作の対応するセットにデコードされる。これらのマイクロ動作のセットは、トレースキャッシュ106におけるトレースの形式で記憶される。他の実施の形態では、トレースは、別の形式のバッファに記憶される。更なる実施の形態では、マイクロ動作のセットは、トレースの形式ではなく、他の形式のバッファに記憶される。マイクロ動作のセットが実行の準備がされたとき、ROB108にロードされる。ROB108は、一連のストレージロケーション150〜166を含み、それぞれは、マイクロ動作、そのソース及び目的地レジスタのアイデンティフィケーション、及び利用可能なときには実行結果を含む。他の実施の形態では、異なるストレージロケーションの番号が提供され、ストレージロケーションのコンテンツの正確なフォーマットが異なる場合がある。
スケジューラ110は、ストレージロケーション150〜166におけるどのマイクロ動作が、利用可能な、すなわち実行を可能にするそれらのソースオペランドの値を有するか、を判定するために使用される。1実施の形態では、スケジューラ110は、トレージロケーション150〜166におけるそれぞれのマイクロ動作のソースレジスタの状態を調べる。次いで、スケジューラ110は、それらのマイクロ動作を発生し、そのソースレジスタは、書かれたソフトウェアでのそれらの順序(すなわち、潜在的に「アウト・オブ・オーダー」)に関わらず、(実行ステージ112における)実行のための有効データを含む。かかるマイクロ動作の実行からの結果は、対応するストレージロケーションにおける実行結果として一時的に記憶される。
ストレージロケーション150〜166のそれぞれは、関連される「終了」ビット130〜146を有し、このビットは、対応するマイクロ動作が実行を完了し、実行からの結果が対応するストレージロケーション150〜166における実行結果として一時的に記憶されることを示す。1実施の形態では、終了ビット130〜146は、(プログラムオーダーで)前の命令に対応するマイクロ動作がひとたびリタイアされると、対応するマイクロ動作がリタイアの準備がされることを示す。(マクロ命令から生成されたマイクロ動作は、オリジナルのプログラムオーダーでなお使われない) リタイアメントの準備がされたマイクロ動作は、リタイアメントステージ114に送出される場合がある。メモリの参照を発するマイクロ動作は、メモリオーダバッファ(MOB)122に配置される。MOB122は、幾つかのペンディングになっているメモリ参照の動作を記憶する。
図1のプロセッサは、ロック命令を実行可能である。1つのロック命令の形式は、プロセッサがロックされているメモリで動作を実行している間、他のプロセッサ、又はマルチスレッドプロセッサにおける他のスレッドが所与のメモリロケーション又はキャッシュにアクセスするのを妨げる。実際に、命令を実行している間、これは、他のアクセスを妨げるために特定のメモリ位置又はキャッシュラインを「ロックする」。別の観点は、このロッキングの形式により、命令が特定のメモリロケーション又はキャッシュラインをアトミックに変更する(文献では、アトミックな読取り、変更、書込み命令“atomic read-modify-write instruction”と呼ぶことがある)のを可能にすることである。対照的に、これらロッキング命令は、拡張された数の命令にわたり他のメモリロケーションを意味的にロックするためのソフトウェアセマフォとして使用される。これら拡張された数の命令は、クリティカルセクションとして文献において参照される。1実施の形態では、ロック命令は、通常の命令に添付されるロックプレフィックスとして実現される。Pentium(登録商標)コンパチブルアーキテクチャでは、ロックプレフィックスは、目的地オペランドがメモリオペランドである、以下の種類を含む命令に付加される。ADD(add)、ADC(add with carry)、AND(logical and)、BTC(bit test and complement)、BTR(bit test and reset)、BTS(bit test and set)、CMPXCHG(compare and exchange)、CMPXCH8B(compare and exchange 8 bytes)、DEC(decrement)、INC(increment)、NEG(two’s complement negation)、NOT(one’s complement negation)、OR(logical or)、SBB(integer subtraction with borrow)、SUB(subtract)、XOR(exclusive or)、XADD(exchange and add)、及びXCHG(exchange memory with register)。
他のプロセッサ又はスレッドが、これらの命令により規定される読取り・変更・書込み機能の部分間の目的地のメモリロケーションの値を変えないことが絶対に必要なとき、ロックプレフィックスは、(1つのシングルパートに見える)その部分をアトミックにするために使用される。
1実施の形態では、ロック命令は、“load_with_store_intent_lock”マイクロ動作及び“store_unlock”マイクロ動作を含む、幾つかのマイクロ動作にデコードされる。他のマイクロ動作は、先のパラグラフで記載された様々な命令について存在する。議論の容易さのため、“load_with_store_intent_lock”マイクロ動作を“load_with_lock”マイクロ動作として示し、それをload_lockで書くことにする。load_lockマイクロ動作は、実行ユニット112に入るとき、ロック状態を始める。store_unlockマイクロ動作は、MOB122から発せられるときロック状態を除く。
先の実施の形態は、2つの条件が満たされるまでload_lockマイクロ動作を発しない。第一の条件は、オリジナルプログラムオーダーにおける全ての前の命令が実行され、リタイアされている必要があることである。言い換えれば、load_lockマイクロ命令は、ROB108において最も古いマイクロ命令である。第二の条件は、MOB122における前にペンディングにされているstoreマイクロ動作が終了されている必要があり、MOB122と関連付けされたストアバッファがドレインしている必要がある(言い換えれば、全てのストア動作は、それらのデータをメモリシステムに書き込んでいる必要がある)ことである。これら2つの条件は、アウト・オブ・オーダー実行と互換性がない。
ロック命令は厳密に必須ではないことが多いことが知られている。かなりのパーセンテージのケースでは、メモリロケーション又はキャッシュラインは、ロックの期間で競合されない状態のままであり、すなわち他のプロセッサ又はスレッドは、ロックの下で特定のメモリロケーション又はキャッシュラインにアクセスするのを試みることはなく、他のプロセッサのイベントは、そのメモリロケーションの保全性に脅威を与えない。プロセッサ100は、ロック競合予測器118及びモニタロジック116を更に含む。ロック競合予測器118は、特定のロック命令がロック期間の間に競合されるか否かに関する予測を発する。予測が、特定のロック命令が実際に競合されることを示す場合、ロック命令のための前の実行方法に従う。
しかし、予測が、特定のロック命令が実際に競合しないことを示す場合、投機的に発せられた通常のloadマイクロ動作に進み、いずれか競合することの示唆が生じるかを判定するためにモニタロジック116で関与されるメモリロケーションをモニタすることが可能である。したがって、アトミック性(atomicity)を強制するために命令の読取り・変更・書込み部分を実行しつつ、メモリロケーションを実際にロックしないが、代わりに、別のプロセッサ又はスレッドがアトミック性の知覚を破壊したことを示す状態を監視しつつ、その部分を個別に実行する。かかる競合することの示唆は、ロード命令のターゲットアドレスを含むキャッシュラインへのスヌープ(snoop)、割り込み、又はその後のstore_unlockマイクロ動作がキャッシュで抜けた場合を含む。モニタロジック116は、幾つかの実施の形態では、プロセッサに存在する幾つかの既存のロジック信号を監視する。競合しない示唆が等価なロック条件を表す時間の間に生じない場合、投機的に発せられた通常のloadマイクロ動作は、正常にリタイアとなる。これは、ロック命令のアウト・オブ・オーダー実行を可能にし、プロセッサパフォーマンスをエンハンスする。しかし、競合することの示唆が生じた場合、パイプラインがフラッシュされ、ロック命令が再び実行される必要がある。この際実行の間、ロック命令は、フォワードプログレスにおいて支援するために従来の実現におけるように非投機的に実行される。別の実施の形態では、プロセッサは、数回にわたり投機的にロック命令を実行するのを試み、非投機的に命令を実行する前にそれぞれで競合を検出する。(従来の実現におけるように)プロセッサが非投機的に命令を実行するとき、信号をアサートするか、又は他のスレッド(又はプロセッサ)が問題のあるメモリロケーションにアクセスするのを妨げる手順を採用する。これは、プロセッサが実行を終了し、その後の再始動なしにロック命令をリタイアとすることを保証する。固定された数の投機的な実行の試みの後、プロセッサが非投機的な実行に戻らない場合、プロセッサがそれぞれの実行で競合することの示唆に遭遇し、ロック命令を繰り返し強制的に再始動され、フォワードプログレスを禁止するケースである。
ロック競合予測器118は、ローカル予測器及び代替的にグローバル予測器の回路及び理論を含めて、様々な公知のブランチ予測器のうちの1つの動作の回路及び理論を利用する。1実施の形態では、ロック競合予測器118は、競合することが過去において発見されているそれらロック命令のリニアな命令ポインタを記憶するためのテーブルである。1実施の形態では、テーブルは、プロセッサの初期化に応じて空にされ、全てのロック命令は、競合しないことが想定される。所与のロック命令の予測が誤っていることが発見されたとき、そのロック命令のリニアな命令ポインタは、将来の使用のためにテーブルに書き込まれる。
ロック競合予測器118が所与のロック命令が競合しないことを予測したとき、スケジューラ110は、ROB108から対応するload_lockマイクロ動作を投機的に発生する。1実施の形態では、対応するload_lockマイクロ動作は、投機的なload_without_lockマイクロ動作としてROB108から発せられる。いずれかの種類のloadマイクロ動作は、幾つかの実施の形態では、(modified/exclusive/shared/invalid “MEST” キャッシュコヒーレンシープロトコルを使用したキャッシュにおいて)排他的“E”状態に遷移するキャッシュラインを始動する、対応するキャッシュラインのオーナシップの要求を発生する。loadマイクロ動作が最も低いキャッシュを失った場合、フィルバッファが割り当てられ、ロードはMOB122におけるペンディング動作として「スリープ」する。
load_lockマイクロ動作がキャッシュでヒットした場合、又は眠っているload_lockマイクロ動作が対応するキャッシュラインフィルによりMOB122で目覚めたとき、以下が行われる。幾つかの実施の形態では、ロック変数を含むキャッシュラインがload_lockの実行とstore_unlockのリタイアメントとの間で置き換えられるのを防止することが必要である。1実施の形態では、置き換えを防止するため、更にメモリのオーダリングプロトコルにより必要とされるときにスヌープするのを可能にするため、キャッシュラインのタグにビットを設定することができる。しかし、これら投機的なload_lockのセットについて古いロードの前に実行することができ、したがって、キャッシュセットにおける方法の全てが消費される。これは、次のレベルのキャッシュからそのデータを満たすため、古いロードのセットにおける方法を残さず、古いロードのリタイアメントは、終了することができないので防止される。投機的なload_lockは、最も古くないのでリタイアすることができず、したがってヘッドロックを有することになる。このシナリオを防止するため、load_lockは、古い命令について少なくとも幾つかを利用可能なままにするため、セットにおいて十分なロックされていない方法が存在する場合にのみ投機的に発する。十分にロックされていない方法が存在しない場合、(従来の実現におけるように)全ての前の命令がリタイアとなったときにのみ、load_lockが発生される。1実施の形態では、発すべき投機的なload_lockについて少なくとも2つの利用可能な方法が存在する必要がある。
load_lockマイクロ動作又はload_without_lockマイクロ動作がROB108から発せられたかは、対応するstore_unlockマイクロ動作及び何れか介入するマイクロ動作が、ロードマイクロ動作の前後のいずれかでROB108から発する。しかし、store_unlockマイクロ動作がロードマイクロ動作までにMOB122でペンディングされた状態に留まり、何れか介入するマイクロ動作は、リタイアメントのポイントにあり、そのポイントで、MOB122がstore_unlockマイクロ動作を発する。
ロードマイクロ動作及び対応するstore_unlockマイクロ動作は、競合する示唆が発生したことをモニタロジック116が判定した場合にリタイアすることが許可されない。これは、ロック命令が競合しないという予測が誤っていることを意味する。この競合された示唆が考慮される時間は、異なる実施の形態で変わる場合がある。1実施の形態では、この時間は、(store_unlockに対応する)メモリストアがグローバルに観察可能となるときに終了する。ここで、「グローバルに観察可能」とは、キャッシュコヒーレンシードメインにおける全てのエージェントがこのメモリロケーションの最後の値を見ることを意味する。別の実施の形態では、この時間は、store_unlockがMOB122で最も古いストアとなったときに終了する。この第二の実施の形態では、実際のロック条件は、store_unlockがMOB122における最も古いストアとなった時間とstore_unlockがグローバルに観察可能になった時間との間の短い期間について必要とされる。
前の実現では、store_unlockマイクロ動作は、メモリストアがグローバルに観察可能となったとき、ROB108における最も古いリタイアされていないマイクロ動作である。しかし、1実施の形態では、store_unlockマイクロ動作は、メモリストアがグローバルに観察可能となったとき、ROB108における最も古いリタイアとなっていないマイクロ動作ではない。これは、メモリストアがグローバルに観察可能となるまで、(ロックを持つか、ロックを持たない)loadマイクロ動作がリタイアとなっていないためである。したがって、ロードは、コンピュータにおいて最も古いリタイアとなっていないマイクロ動作である。
別の実施の形態では、ロック競合予測器118が省略される。変わりに、ロック命令が競合しない全てのケースで想定される。対応するロードマイクロ動作は、それぞれのケースにおいて、はじめに投機的に実行される。ロック命令が実際に競合しないことが分かっているケースでは、モニタロジック116は、競合することの示唆を検出し、実行パイプラインを再始動する。競合することの示唆を生じたロック命令のみが非投機的な方式で再実行される。
別の実施の形態では、モニタロジック116が省略される場合がある。この実施の形態では、キャッシュシステムは、ロック命令に対する関心のあるアドレスに向けられるスヌープを拒否するためのロジックを含む。これは、正式なロックが発せられることなしに関心のあるアドレスでのコンテンツの保全性を保持する。スヌープを発生した他のエージェントは、そのスヌープの拒否を短時間の後に再びスヌープをトライする示唆として受ける。
ここで図2を参照して、1実施の形態に係る、パイプラインの開始近くで動作するロック競合予測器を示す、プロセッサ及びその実行パイプラインの概念図が示される。図2で示される回路の多くは、図1の回路に類似するが、ロック競合予測器218は、代わりに、デコードステージ204の動作を変更するために使用される。ロック命令をload_lockマイクロ動作及びstore_lockマイクロ動作に常にデコードするよりはむしろ、ロック命令が競合しないことをロック競合予測器218が判定したとき、デコードステージ204は、規則的なロードのマイクロ動作及びstore_unlockマイクロ動作を含むマイクロ動作にロック命令をデコードする。規則的なロードのマイクロ動作は、幾つかの実施の形態では、ヒント又は他のステータスビットが添付されて、load_lockマイクロ動作として現れる。これらのマイクロ動作は、トレースキャッシュ206でトレースを構築するために使用される。他の実施の形態では、マイクロ動作は、別の形式のバッファに一時的に記憶される。
モニタロジック216は、図1のモニタロジック116により実行される機能と同様の機能を実行する。さらに、loadマイクロ動作及び対応するstore_unlockマイクロ動作は、競合することの示唆が生じたことをモニタロジック216が判定した場合にリタイアとなることが許可されない。これは、ロック命令が競合しないという予測が誤りであったことを意味する。この競合することの示唆が考慮される期間は、異なる実施の形態で変わる場合がある。1実施の形態では、(store_unlockに対応する)メモリストアがグローバルに観察可能であるときに期間が終了する。別の実施の形態では、この期間は、store_unlockがMOB222において最も古い記憶となったときに終了する場合がある。
競合することの示唆が判定された場合、回復プロセスは、先の図1とともに説明されたプロセスと異なる。再始動に応じたロック命令は、トレースキャッシュ206から再び発生することが不可能である。これは、トレースキャッシュ206がload_without_lockマイクロ動作によるトレースを含むためである。ロック命令は、デコードステージで再びデコードされる必要があり、このとき、load_lockマイクロ動作及び対応するstore_unlockマイクロ動作を含むマイクロ動作にデコードする。これらのマイクロ動作は、新たなトレースがトレースキャッシュ206で構築されるのを必要とする。
図3を参照して、1実施の形態に係る、パイプラインの終わり近くで動作するロック競合予測器を示すプロセッサ及びその実行パイプラインの概念図が示されている。図3の実施の形態は、Pentium(登録商標)4コンパチブルプロセッサでのリプレイ動作をサポートするため、リプレイキュー322で示される変更されたMOBを含む。リプレイ動作は、データの投機(data speculation)が正しくなるまで、投機的に発せられたマイクロ動作を再実行することで誤ったデータの投機を修復する。1実施の形態では、load_lock及びstore_unlockマイクロ動作は、パイプラインをフラッシュするか、又はロック命令を再始動することなしに、モニタロジック316が競合を示唆する場合にリプレイされる。
別の実施の形態では、チェックポイントの修復は、チェックポイント回復ロジック370を使用して実行される。1実施の形態では、チェックポイント回復ロジック370は、load_lockマイクロ動作の前に全てのマイクロ動作がリタイアされるとき、プロセッサ状態のスナップショットを記憶する。チェックポイントが取られた後、投機的に実行されたロック命令の全ての構成のマイクロ動作、及びある実施の形態では、プログラムにおける後続する命令は、それらが終了したときに順序においてリタイアとなる。プロセッサパイプラインがフラッシュされる必要があることを示唆して、(store_unlockに対応する)メモリストアがグローバルに観察可能である前に、モニタロジック316が競合を示唆する場合、load_lockの直前にマイクロ命令のリタイアメントでのプロセッサ状態は、(チェックポイント回復ロジック370から)回復される。load_lock、store_unlock、及びロック命令のいずれか他の構成要素のマイクロ動作は、再実行される。この再実行の間、構成要素のマイクロ動作は、従来の実現として扱われ、非投機的に実行される。チェックポイント回復ロジック370は、他の実施の形態では、先の図1及び図2で示されるプロセッサのような他のプロセッサで使用される。
1実施の形態では、ロック命令が競合しないことをロック競合予測器318が判定したとき、load_lockマイクロ動作又はload_without_lockマイクロ動作は、ROB308から投機的に発せられる。load_lockマイクロ動作又はload_without_lockマイクロ動作がROB308から発せられるかで、対応するstore_unlockマイクロ動作、及び介入するマイクロ動作は、loadマイクロ動作の前又は後のいずれかでROB308から発せられる。誤ったデータの投機が間違ったアドレスを生成したケースでは、1以上のデータチェッカーロジック368は、無効なアドレス信号372をリプレイキュー322に発する。無効なアドレス信号372は、投機的なloadマイクロ動作及び対応するstore_unlockマイクロ動作の処理を判定するため、モニタロジック316とともに使用される。
無効なアドレス信号372がFALSEであり、モニタロジック316が競合することの示唆を検出しないとき、storeマイクロ動作及びstore_unlockマイクロ動作は、正常にリタイアとなる。無効なアドレス信号372がFALSEであり、モニタロジック316が競合することの示唆を検出するとき、パイプラインはフラッシュされ、ロック命令が再始動される。別の実施の形態では、モニタロジック316が競合の示唆を検出した場合、loadマイクロ動作がリプレイされる。しかし、無効なアドレス信号372がTRUEであるとき、何れか競合することの示唆が誤ったアドレスに関するので、モニタロジック316の状態は無関係である。したがって、無効なアドレス信号372がTRUEであるとき、リプレイが生じ、モニタロジック316からの何れか競合することの示唆は、ロック競合予測器318を更新しない。
図4を参照して、この開示の1実施の形態によれば、ロック命令の実行の状態図が示される。ブロック410では、ロック命令が競合するか否かに関する予測が行われる。ロック命令が競合するという予測である場合、プロセスは、競合するパス414に沿って存在し、ブロック460に入る。ブロック460では、load_lockマイクロ動作は、リタイアメントで、及び全てのペンディングにされているストアバッファがデータを流し出した(ドレインした)後にのみ、メモリシステムに発せられる。
ブロック410でなされた予測が、ロック命令が競合しない場合、プロセスは、競合しないパス412に沿って存在し、load_lockマイクロ動作(又はある実施の形態では、ロック動作が競合しない幾つかのヒントが添付されたload_lockマイクロ動作、又はある実施の形態では、load_with_uncontended_lockマイクロ動作又はload_without_lockマイクロ動作のような幾つかの新たなマイクロ動作に変形されるload_lockマイクロ動作)は、実行のために投機的に発せられる。次いで、ブロック430では、load_lockマイクロ動作がリタイアメントにあるとき、store_unlockマイクロ動作がメモリに発せられる。store_unlockマイクロ動作は、リタイアメントとなる準備をする。1実施の形態では、store_unlockマイクロ動作は、メモリストアがグローバルに観察可能であるとき、リタイアとなるために準備される。また、これは、load_lockマイクロ動作がリタイアするのを可能にする。別の実施の形態では、store_unlockマイクロ動作は、メモリストアがメモリオーダリングバッファで最も古いペンディングにされているstoreマイクロ動作となるときに、リタイアとなる準備がされる。つぎに、これにより、load_lockマイクロ動作がリタイアとなるのが可能となる。
競合することの示唆なしで(1実施の形態では、グローバルに観察可能となったときである)store_unlockマクロ動作がリタイアとなる準備がされた場合、プロセスはパス432に沿って存在し、ブロック440で、load_lockマイクロ動作がリタイアとなり、予測ロジックはTRUE(真の)予測結果でアップデートされる。しかし、store_unlockマイクロ動作がリタイアとなる準備がされる前に、競合することの示唆が生じた場合、プロセスはパス434に沿って存在し、ブロック450で、ロック命令が再始動され、予測ロジックは、FALSE(偽の)予測結果でアップデートされる。この再実行の間、ロック命令は、フォワードプログレスで支援するために従来の実現におけるように、非投機的に実行される。
別の実施の形態では、ブロック410,460及び470が省略される場合がある。かわりに、ロック命令が競合しないことが全てのケースで想定される。対応するロードマイクロ動作は、それぞれのケースで、はじめに投機的に実行される(ブロック420)。ロック命令が実際の競合することが分かっているケースでは、モニタロジック160は、競合することの示唆を検出し、実行パイプラインをフラッシュし、ロック命令を再始動する(ブロック450)。競合することの示唆を生じているロック命令のみが非投機的な方式で再実行される。
ここで図5A及び図5Bを参照して、この開示の2つの実施の形態に係る、ロック競合予測器及びモニタロジックをサポートするプロセッサを含むシステムの概念図が示される。図5Aのシステムは、プロセッサ、メモリ、及び入力/出力装置がシステムバスにより相互接続されるシステムを一般的に示し、図5Bのシステムは、プロセッサ、メモリ、及び入力/出力装置が多数のポイント・ツー・ポイントインタフェースにより相互接続されるシステムを一般的に示している。
図5Aのシステムは、幾つかのプロセッサを含み、このうち2つのプロセッサ40,60のみが明確さのために示される。プロセッサ40,60は、レベル1のキャッシュ42,62を含む。図5Aのシステムは、システムバス6とバスインタフェース44,64,12を介して接続される幾つかの機能を有する。1実施の形態では、システムバス6は、Intel(登録商標)社により製造されるPentium(登録商標)クラスのマイクロプロセッサで利用されるフロントサイドバス(FSB)である。他の実施の形態では、他のバスが使用される場合もある。ある実施の形態では、メモリコントローラ34及びバスブリッジ32は、チップセットと集合的に呼ばれる。ある実施の形態では、チップセットの機能は、図5Aの実施の形態で示されるのとは異なる物理的なチップのなかで分割される。
メモリコントローラ34は、プロセッサ40,60がシステムメモリ10との間で、及びBIOS(basic input/output system)消去可能なプログラマブルリードオンリメモリ(EPROM)との間で読み取り、書き込みするのを可能にする。ある実施の形態では、BIOS EPROM36は、フラッシュメモリを利用する。メモリコントローラ34は、メモリ読み取り及び書き込みデータがシステムバス6のバスエージェントに送出され、バスエージェントから送出されるのを可能にするバスインタフェース8を含む。また、メモリコントローラ34は、高性能グラフィックインタフェース39を通して高性能グラフィック回路38と接続する。所定の実施の形態では、高性能グラフィックインタフェース39は、最新のグラフィックスポートAGPインタフェースである。メモリコントローラ34は、高性能グラフィックスインタフェース39にわたりシステムメモリ10から高性能グラフィックス回路38にデータを送出する。
図5Bのシステムは、幾つかのプロセッサを含み、このうち2つのプロセッサ70,80のみが明確さのために示されている。プロセッサ70,80は、メモリ2,4との接続するため、ローカルメモリコントローラハブ(MCH)72,82をそれぞれ含んでいる。プロセッサ70,80は、ポイント・ツー・ポイントインタフェース回路78,88を使用して、ポイント・ツー・ポイントインタフェース50を介してデータをやり取りする。プロセッサ70,80は、ポイント・ツー・ポイントインタフェース回路76,94,86,98を使用して、個々のポイント・ツー・ポイントインタフェース52,54を介してチップセット90とデータをやり取りする。チップセット90は、高性能グラフィックスインタフェース92を介して高性能グラフィックス回路38とデータをやり取りする。
図5Aのシステムでは、バスブリッジ32は、システムバス6とバス16との間でのデータのやり取りを可能にし、このブリッジは、ある実施の形態では、ISA(industry standard architecture)バス又はPCI(peripheral component interconnect)バスである。図5Bのシステムでは、チップセット90は、バスインタフェース96を介してバス16とのデータをやり取りする。いずれのシステムであっても、ある実施の形態では低性能グラフィックスコントローラ、ビデオコントローラ、及びネットワークコントローラを含む、バス16に様々な入力/出力I/O装置14が存在する。別のバスブリッジ18は、ある実施の形態では、バス16とバス20との間でのデータのやり取りを可能にするために使用される。バス20は、ある実施の形態では、SCSI(small computer system interface)バス、IDE(integrated drive electronics)バス、又はUSB(universal serial bus)バスである。更なるI/O装置は、バス20と接続される。これらは、マウス、オーディオI/O24、通信装置26を含み、モデム及びネットワークインタフェース及びデータストレージ装置28を含む、キーボード及びカーソル制御装置22を含む。ソフトウェアコード30は、データストレージ装置28に記憶される。ある実施の形態では、データストレージ装置28は、固定された磁気ディスク、フロプティカルディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ、フラッシュメモリを含む不揮発性メモリである。
上述された明細書では、本発明は、その特定の実施の形態を参照して記載された。しかし、様々な変更及び変形が特許請求の範囲で述べたように本発明の広義の精神及び範囲から逸脱することなしになされることが明らかである。したがって、明細書及び図面は、限定的な意味よりはむしろ例示的な意味であると考えられる。
Claims (64)
- ロック命令が競合するかに関する予測を発生する予測器と、
前記予測が、前記ロック命令が競合していないことを示すとき、前記ロック命令に対応するマイクロ動作のセットを投機的に発生するスケジューラと、
を有することを特徴とするプロセッサ。 - 前記スケジューラは、load_without_lockマイクロ動作としてload_with_lockマイクロ動作を発する、
請求項1記載のプロセッサ。 - 競合することの示唆が生じたかを判定するモニタロジックを更に有する、
請求項1記載のプロセッサ。 - 前記プロセッサは、競合することの示唆が生じたことを前記モニタロジックが判定したとき、前記ロック命令の処理を再始動する、
請求項3記載のプロセッサ。 - 前記競合することの示唆は、前記ロック命令のターゲットアドレスを含むキャッシュラインへのスヌープである、
請求項4記載のプロセッサ。 - 前記競合することの示唆は、前記unlockマイクロ動作によるストアがキャッシュで抜けているときである、
請求項4記載のプロセッサ。 - 前記競合することの示唆は割り込みである、
請求項4記載のプロセッサ。 - 前記モニタロジックは、前記unlockマイクロ動作によるストアが最も古いリタイアされていないstoreマイクロ動作となる前に、前記競合することの示唆を判定する、
請求項3記載のプロセッサ。 - 前記モニタロジックは、前記unlockマイクロ動作によるストアの結果がグローバルに観察可能になる前に、前記競合することの示唆を判定する、
請求項3記載のプロセッサ。 - 前記ロック命令のターゲットアドレスへのスヌープを拒否するスヌープ拒否ロジックを更に有する、
請求項1記載のプロセッサ。 - ロック命令が競合するかに関する予測を発生する予測器と、
前記ロック命令がload_without_lockマイクロ動作及びstoreマイクロ動作にデコードするデコーダと、
競合することの示唆が生じたかを判定するモニタロジックと、
を有することを特徴とするプロセッサ。 - 前記プロセッサは、前記競合することの示唆が生じたことを前記モニタロジックが判定したとき、前記ロック命令の処理を再始動する、
請求項11記載のプロセッサ。 - 前記競合することの示唆は、前記ロック命令のターゲットアドレスを含むキャッシュラインへのスヌープである、
請求項12記載のプロセッサ。 - 前記競合することの示唆は、前記storeマイクロ動作がキャッシュで抜けているときである、
請求項12記載のプロセッサ。 - 前記競合することの示唆は割り込みである、
請求項12記載のプロセッサ。 - 前記モニタロジックは、前記storeマイクロ動作が最も古いリタイアされていないstoreマイクロ動作となる前に、前記競合することの示唆を判定する、
請求項11記載のプロセッサ。 - 前記モニタロジックは、前記storeマイクロ動作による結果がグローバルに観察可能になる前に、前記競合することの示唆を判定する、
請求項11記載のプロセッサ。 - ロック命令が競合するかに関して予測するステップと、
前記ロック命令が競合していないことを示す前記予測であるとき、前記ロック命令に対応するload_without_lockマイクロ動作に発生するステップと、
競合することの示唆をモニタするステップと、
を有することを特徴とする方法。 - 前記モニタステップで競合することの示唆が検出されたとき、前記ロック命令の実行を再始動するステップを更に含む、
請求項18記載の方法。 - 前記競合することの示唆は、前記ロック命令のターゲットアドレスを含むキャッシュラインへのスヌープである、
請求項18記載の方法。 - 前記競合することの示唆は、前記unlockマイクロ動作によるストアがキャッシュで抜けているときである、
請求項18記載の方法。 - 前記競合することの示唆は割り込みである、
請求項18記載の方法。 - 前記発生するステップは、前記load_without_lockマイクロ動作をバッファから送出するステップを含む、
請求項18記載の方法。 - 前記load_without_lockマイクロ動作は、load_with_lockマイクロ動作として前記バッファに記憶される、
請求項23記載の方法。 - 前記発生するステップは、前記ロック命令からの前記load_without_lockマイクロ命令をデコードするステップを含む、
請求項18記載の方法。 - ロック命令が競合するかを予測する手段と、
前記予測手段が、前記ロック命令が競合しないことを予測したとき、前記ロック命令に対応するload_without_lockマイクロ動作を発生する手段と、
競合することの示唆をモニタする手段と、
を有することを特徴とする装置。 - 前記モニタ手段が競合することの示唆を検出したとき、前記ロック命令の実行を再始動する手段を更に有する、
請求項26記載の装置。 - 前記競合することの示唆は、前記ロック命令のターゲットアドレスを含むキャッシュラインへのスヌープである、
請求項26記載の装置。 - 前記競合することの示唆は、前記unlockマイクロ動作によるストアがキャッシュで抜けているときである、
請求項26記載の装置。 - 前記競合することの示唆は割り込みである、
請求項26記載の装置。 - 前記発生手段は、バッファから前記load_without_lockマイクロ動作を送出する手段を含む、
請求項26記載の装置。 - 前記load_without_lockマイクロ動作は、前記バッファに前記load_with_lockマイクロ動作として記憶される、
請求項31記載の装置。 - 前記発生手段は、前記ロック命令から前記load_without_lockマイクロ動作をデコードする手段を含む、
請求項26記載の装置。 - ロック命令が競合するかに関する予測を発する予測器と、前記ロック命令が競合しない前記予測であるとき、前記ロック命令に対応するマイクロ動作のセットを投機的に発生するスケジューラとを含む第一のプロセッサと、
第二のプロセッサへの第一のインタフェースと、
入力/出力装置への第二のインタフェースと、
前記第二のインタフェースに結合されるオーディオ入力−出力装置と、
を有することを特徴とするシステム。 - 前記スケジューラは、load_with_lockマイクロ動作をload_without_lockマイクロ動作として発生する、
請求項34記載のシステム。 - 前記プロセッサは、unlockマイクロ動作のリタイアによるストアの前に、競合することの示唆が生じたかを判定するためのモニタロジックを更に含む、
請求項34記載のシステム。 - 前記プロセッサは、競合することの示唆が生じたことを前記モニタロジックが判定したとき、前記ロック命令の処理を再始動する、
請求項36記載のシステム。 - 前記モニタロジックは、前記unlockマイクロ動作によるストアが最も古いリタイアされていないstoreマイクロ動作となる前に、前記競合することの示唆を判定する、
請求項36記載のシステム。 - 前記モニタロジックは、前記unlockマイクロ動作によるストアの結果がグローバルに観察可能となる前に、前記競合することの示唆を判定する、
請求項36記載のシステム。 - ロック命令が競合するかに関する予測を発生する予測器と、前記ロック命令をload_without_lockマイクロ動作及びstoreマイクロ動作にデコードするデコーダと、前記storeマイクロ動作がリタイアする前に、競合することの示唆が生じたかを判定するモニタロジックとを含む第一のプロセッサと、
第二のプロセッサへの第一のインタフェースと、
前記第二のインタフェースに結合されるオーディオ入力−出力装置と、
を有することを特徴とするシステム。 - 前記プロセッサは、競合することの示唆が生じたことを前記モニタロジックが判定したとき、前記ロック命令の処理を再始動する、
請求項40記載のシステム。 - 前記storeマイクロ動作が最も古いリタイアされていないstoreマイクロ動作となる前に、前記競合することの示唆を判定する、
請求項40記載のシステム。 - 前記モニタロジックは、前記ストアの結果がグローバルに観察可能となる前に、前記競合することの示唆を判定する、
請求項40記載のシステム。 - ロック命令が競合しないことを最初に示すロジックと、
前記ロック命令に対応するマイクロ動作のセットを投機的に発生するスケジューラと、
を有することを特徴とするプロセッサ。 - 前記スケジューラは、load_with_lockマイクロ動作をload_without_lockマイクロ動作として発生する、
請求項44記載のプロセッサ。 - 競合することの示唆が生じたかを判定するモニタロジックを更に有する、
請求項44記載のプロセッサ。 - 前記プロセッサは、競合することの示唆が生じたことを前記モニタロジックが判定したとき、前記ロック命令の処理を再始動する、
請求項46記載のプロセッサ。 - 前記モニタロジックは、前記unlockマイクロ動作によるストアが最も古いリタイアされていないstoreマイクロ動作となる前に、前記競合することの示唆を判定する、
請求項46記載のプロセッサ。 - 前記モニタロジックは、前記unlockによるストアの結果がグローバルに観察可能になる前に、前記競合することの示唆を判定する、
請求項46記載のプロセッサ。 - 前記ロック命令のターゲットアドレスへのスヌープを拒否するスヌープ拒否ロジックを更に有する、
請求項44記載のプロセッサ。 - ロック命令が競合しないことを最初に示すロジックと、
前記ロック命令をload_without_lockマイクロ動作及びstoreマイクロ動作にデコードするデコーダと、
競合することの示唆が生じたかを判定するモニタロジックと、
を有することを特徴とするプロセッサ。 - 前記プロセッサは、競合することの示唆が生じたことを前記モニタロジックが判定したとき、前記ロック命令の処理を再始動する、
請求項51記載のプロセッサ。 - 前記モニタロジックは、前記storeマイクロ動作が最も古いリタイアされていないstoreマイクロ動作になる前に、前記競合することの示唆を判定する、
請求項51記載のプロセッサ。 - 前記モニタロジックは、前記ストアの結果がグローバルに観察可能になる前に、前記競合することの示唆を判定する、
請求項51記載のプロセッサ。 - ロック命令が競合しないことを最初に仮定するステップと、
前記ロック命令に対応するload_without_lockマイクロ動作を発するステップと、
競合することの示唆をモニタするステップと、
を含むことを特徴とする方法。 - 前記モニタするステップが競合することの示唆を検出したとき、前記ロック命令の実行を再始動するステップを更に含む、
請求項55記載の方法。 - 前記発生するステップは、前記load_without_lockマイクロ動作をバッファから送出するステップを含む、
請求項55記載の方法。 - 前記load_without_lockマイクロ動作は、前記バッファにload_with_lockマイクロ動作として記憶される、
請求項57記載の方法。 - 前記発生するステップは、前記ロック命令から前記load_without_lockマイクロ動作をデコードするステップを含む、
請求項55記載の方法。 - ロック命令が競合しないことを最初に仮定する手段と、
前記ロック命令に対応するload_without_lockマイクロ動作を発生する手段と、
競合することの示唆をモニタする手段と、
を有することを特徴とする装置。 - 前記モニタするステップが競合することの示唆を検出したとき、前記ロック命令の実行を再始動する手段を更に有する、
請求項60記載の装置。 - 前記発生手段は、前記load_without_lockマイクロ動作をバッファから送出するための手段を含む、
請求項60記載の装置。 - 前記load_without_lockマイクロ動作は、load_with_lockマイクロ動作として前記バッファに記憶される、
請求項62記載の装置。 - 前記発生手段は、前記ロック命令から前記load_without_lockマイクロ動作をデコードするための手段を含む、
請求項60記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/883,519 US7529914B2 (en) | 2004-06-30 | 2004-06-30 | Method and apparatus for speculative execution of uncontended lock instructions |
PCT/US2005/021838 WO2006012103A2 (en) | 2004-06-30 | 2005-06-17 | Method and apparatus for speculative execution of uncontended lock instructions |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011102812A Division JP2011175669A (ja) | 2004-06-30 | 2011-05-02 | 競合しないロック命令の投機実行のための方法及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008504603A true JP2008504603A (ja) | 2008-02-14 |
Family
ID=35427811
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007518188A Pending JP2008504603A (ja) | 2004-06-30 | 2005-06-17 | 競合しないロック命令の投機実行のための方法及び装置 |
JP2011102812A Pending JP2011175669A (ja) | 2004-06-30 | 2011-05-02 | 競合しないロック命令の投機実行のための方法及び装置 |
JP2014255908A Expired - Fee Related JP6113705B2 (ja) | 2004-06-30 | 2014-12-18 | ロック命令を実行するためのプロセッサ及び装置 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011102812A Pending JP2011175669A (ja) | 2004-06-30 | 2011-05-02 | 競合しないロック命令の投機実行のための方法及び装置 |
JP2014255908A Expired - Fee Related JP6113705B2 (ja) | 2004-06-30 | 2014-12-18 | ロック命令を実行するためのプロセッサ及び装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7529914B2 (ja) |
JP (3) | JP2008504603A (ja) |
CN (2) | CN101847091B (ja) |
DE (1) | DE112005001515T5 (ja) |
WO (1) | WO2006012103A2 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011508309A (ja) * | 2007-12-20 | 2011-03-10 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | ロックされたオペレーションを実行するためのシステムおよび方法 |
JP2012198803A (ja) * | 2011-03-22 | 2012-10-18 | Fujitsu Ltd | 演算処理装置及び演算処理方法 |
JP2016537709A (ja) * | 2013-10-14 | 2016-12-01 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ロック無効化とロックの選択を用いたデータ共有のための適応プロセス |
JP2019530120A (ja) * | 2016-09-22 | 2019-10-17 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | ロックアドレス競合予測器 |
JP2019532420A (ja) * | 2016-09-15 | 2019-11-07 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | ロック命令の後のスペキュレーティブリタイア |
JP2020523674A (ja) * | 2017-06-16 | 2020-08-06 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | システム内のキャッシュ転送のオーバーヘッドの削減 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7529914B2 (en) * | 2004-06-30 | 2009-05-05 | Intel Corporation | Method and apparatus for speculative execution of uncontended lock instructions |
US8607241B2 (en) * | 2004-06-30 | 2013-12-10 | Intel Corporation | Compare and exchange operation using sleep-wakeup mechanism |
US7984248B2 (en) * | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US7516310B2 (en) * | 2006-06-08 | 2009-04-07 | International Business Machines Corporation | Method to reduce the number of times in-flight loads are searched by store instructions in a multi-threaded processor |
US8190859B2 (en) | 2006-11-13 | 2012-05-29 | Intel Corporation | Critical section detection and prediction mechanism for hardware lock elision |
US7899663B2 (en) * | 2007-03-30 | 2011-03-01 | International Business Machines Corporation | Providing memory consistency in an emulated processing environment |
US8069340B2 (en) * | 2008-02-08 | 2011-11-29 | Via Technologies, Inc. | Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions |
US8195896B2 (en) * | 2008-06-10 | 2012-06-05 | International Business Machines Corporation | Resource sharing techniques in a parallel processing computing system utilizing locks by replicating or shadowing execution contexts |
US8195921B2 (en) * | 2008-07-09 | 2012-06-05 | Oracle America, Inc. | Method and apparatus for decoding multithreaded instructions of a microprocessor |
US20100017583A1 (en) * | 2008-07-15 | 2010-01-21 | International Business Machines Corporation | Call Stack Sampling for a Multi-Processor System |
US9418005B2 (en) | 2008-07-15 | 2016-08-16 | International Business Machines Corporation | Managing garbage collection in a data processing system |
US8533436B2 (en) * | 2009-06-26 | 2013-09-10 | Intel Corporation | Adaptively handling remote atomic execution based upon contention prediction |
US8856496B2 (en) | 2010-04-27 | 2014-10-07 | Via Technologies, Inc. | Microprocessor that fuses load-alu-store and JCC macroinstructions |
US8843729B2 (en) | 2010-04-27 | 2014-09-23 | Via Technologies, Inc. | Microprocessor that fuses MOV/ALU instructions |
US9176783B2 (en) | 2010-05-24 | 2015-11-03 | International Business Machines Corporation | Idle transitions sampling with execution context |
US8843684B2 (en) | 2010-06-11 | 2014-09-23 | International Business Machines Corporation | Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration |
US8799872B2 (en) | 2010-06-27 | 2014-08-05 | International Business Machines Corporation | Sampling with sample pacing |
US8799904B2 (en) | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
US9892063B2 (en) * | 2012-11-27 | 2018-02-13 | Advanced Micro Devices, Inc. | Contention blocking buffer |
US9886277B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
US9483266B2 (en) | 2013-03-15 | 2016-11-01 | Intel Corporation | Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources |
US9471397B2 (en) | 2014-10-03 | 2016-10-18 | International Business Machines Corporation | Global lock contention predictor |
CN106897306B (zh) * | 2015-12-21 | 2019-04-30 | 阿里巴巴集团控股有限公司 | 数据库操作方法及装置 |
TWI725110B (zh) * | 2017-01-19 | 2021-04-21 | 香港商阿里巴巴集團服務有限公司 | 資料庫操作方法及裝置 |
CN107301072B (zh) * | 2017-06-22 | 2021-03-23 | 苏州浪潮智能科技有限公司 | 一种升级文件的自动加载方法及装置 |
GB2567190B (en) * | 2017-10-05 | 2020-02-26 | Advanced Risc Mach Ltd | Error recovery for intra-core lockstep mode |
US11392380B2 (en) * | 2019-12-28 | 2022-07-19 | Intel Corporation | Apparatuses, methods, and systems to precisely monitor memory store accesses |
US11119767B1 (en) | 2020-06-19 | 2021-09-14 | Apple Inc. | Atomic operation predictor to predict if an atomic operation will successfully complete and a store queue to selectively forward data based on the predictor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS626366A (ja) * | 1985-07-03 | 1987-01-13 | Hitachi Ltd | 記憶制御方式 |
WO2001077820A2 (en) * | 2000-03-24 | 2001-10-18 | Intel Corporation | Method and apparatus for partitioning a resource between multiple threads within a multi-threaded processor |
JP2002007371A (ja) * | 2000-06-23 | 2002-01-11 | Hitachi Ltd | L1キャッシュフォールスシェア緩和制御方式 |
US20020046334A1 (en) * | 1998-12-02 | 2002-04-18 | Wah Chan Jeffrey Meng | Execution of instructions that lock and unlock computer resources |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01119849A (ja) * | 1987-11-04 | 1989-05-11 | Hitachi Ltd | 多重プロセッサシステム |
JPH04182831A (ja) * | 1990-11-19 | 1992-06-30 | Hitachi Ltd | 情報処理装置及び情報処理方法 |
US6003129A (en) * | 1996-08-19 | 1999-12-14 | Samsung Electronics Company, Ltd. | System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture |
US6665792B1 (en) * | 1996-11-13 | 2003-12-16 | Intel Corporation | Interface to a memory system for a processor having a replay system |
JPH10333973A (ja) * | 1997-05-27 | 1998-12-18 | Kofu Nippon Denki Kk | 排他制御装置とデータ処理システム |
US6463522B1 (en) * | 1997-12-16 | 2002-10-08 | Intel Corporation | Memory system for ordering load and store instructions in a processor that performs multithread execution |
US6615340B1 (en) * | 2000-03-22 | 2003-09-02 | Wilmot, Ii Richard Byron | Extended operand management indicator structure and method |
US6463511B2 (en) * | 2000-12-29 | 2002-10-08 | Intel Corporation | System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model |
US20030145136A1 (en) * | 2002-01-31 | 2003-07-31 | Tierney Gregory E. | Method and apparatus for implementing a relaxed ordering model in a computer system |
US20040111593A1 (en) * | 2002-12-05 | 2004-06-10 | International Business Machines Corporation | Interrupt handler prediction method and system |
US7529914B2 (en) * | 2004-06-30 | 2009-05-05 | Intel Corporation | Method and apparatus for speculative execution of uncontended lock instructions |
-
2004
- 2004-06-30 US US10/883,519 patent/US7529914B2/en not_active Expired - Fee Related
-
2005
- 2005-06-17 WO PCT/US2005/021838 patent/WO2006012103A2/en active Application Filing
- 2005-06-17 CN CN201010003959.2A patent/CN101847091B/zh not_active Expired - Fee Related
- 2005-06-17 DE DE112005001515T patent/DE112005001515T5/de not_active Withdrawn
- 2005-06-17 CN CN200580021048A patent/CN100593154C/zh not_active Expired - Fee Related
- 2005-06-17 JP JP2007518188A patent/JP2008504603A/ja active Pending
-
2011
- 2011-05-02 JP JP2011102812A patent/JP2011175669A/ja active Pending
-
2014
- 2014-12-18 JP JP2014255908A patent/JP6113705B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS626366A (ja) * | 1985-07-03 | 1987-01-13 | Hitachi Ltd | 記憶制御方式 |
US20020046334A1 (en) * | 1998-12-02 | 2002-04-18 | Wah Chan Jeffrey Meng | Execution of instructions that lock and unlock computer resources |
WO2001077820A2 (en) * | 2000-03-24 | 2001-10-18 | Intel Corporation | Method and apparatus for partitioning a resource between multiple threads within a multi-threaded processor |
JP2002007371A (ja) * | 2000-06-23 | 2002-01-11 | Hitachi Ltd | L1キャッシュフォールスシェア緩和制御方式 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011508309A (ja) * | 2007-12-20 | 2011-03-10 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | ロックされたオペレーションを実行するためのシステムおよび方法 |
JP2012198803A (ja) * | 2011-03-22 | 2012-10-18 | Fujitsu Ltd | 演算処理装置及び演算処理方法 |
JP2016537709A (ja) * | 2013-10-14 | 2016-12-01 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ロック無効化とロックの選択を用いたデータ共有のための適応プロセス |
JP2019532420A (ja) * | 2016-09-15 | 2019-11-07 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | ロック命令の後のスペキュレーティブリタイア |
JP7084382B2 (ja) | 2016-09-15 | 2022-06-14 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | ロック命令の後のスペキュレーティブリタイア |
JP2019530120A (ja) * | 2016-09-22 | 2019-10-17 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | ロックアドレス競合予測器 |
US11868818B2 (en) | 2016-09-22 | 2024-01-09 | Advanced Micro Devices, Inc. | Lock address contention predictor |
JP2020523674A (ja) * | 2017-06-16 | 2020-08-06 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | システム内のキャッシュ転送のオーバーヘッドの削減 |
JP7159223B2 (ja) | 2017-06-16 | 2022-10-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | キャッシュの競合を管理するための方法およびシステム |
US11586542B2 (en) | 2017-06-16 | 2023-02-21 | International Business Machines Corporation | Reducing cache transfer overhead in a system |
US11892949B2 (en) | 2017-06-16 | 2024-02-06 | International Business Machines Corporation | Reducing cache transfer overhead in a system |
Also Published As
Publication number | Publication date |
---|---|
CN100593154C (zh) | 2010-03-03 |
CN1973261A (zh) | 2007-05-30 |
CN101847091A (zh) | 2010-09-29 |
JP2015072717A (ja) | 2015-04-16 |
CN101847091B (zh) | 2014-03-19 |
JP2011175669A (ja) | 2011-09-08 |
WO2006012103A2 (en) | 2006-02-02 |
US7529914B2 (en) | 2009-05-05 |
JP6113705B2 (ja) | 2017-04-12 |
DE112005001515T5 (de) | 2007-05-10 |
WO2006012103A3 (en) | 2006-04-13 |
US20060004998A1 (en) | 2006-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6113705B2 (ja) | ロック命令を実行するためのプロセッサ及び装置 | |
US10956163B2 (en) | Processor support for hardware transactional memory | |
JP5118652B2 (ja) | アウトオブオーダープロセッサにおけるトランザクショナルメモリ | |
US8301849B2 (en) | Transactional memory in out-of-order processors with XABORT having immediate argument | |
US6463511B2 (en) | System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model | |
US7721076B2 (en) | Tracking an oldest processor event using information stored in a register and queue entry | |
JP5255614B2 (ja) | マルチプロセッサ環境におけるトランザクションベースの共有データオペレーション | |
US7870369B1 (en) | Abort prioritization in a trace-based processor | |
US20050066131A1 (en) | Apparatus and method for loading data values | |
US7849293B2 (en) | Method and structure for low latency load-tagged pointer instruction for computer microarchitechture | |
JP2002508564A (ja) | 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ | |
US20040123078A1 (en) | Method and apparatus for processing a load-lock instruction using a scoreboard mechanism | |
WO2020198369A1 (en) | Reduction of data cache access in a processing system | |
TWI801603B (zh) | 處理獨佔式載入指令的資料處理設備、方法及電腦程式 | |
US9400655B2 (en) | Technique for freeing renamed registers | |
US11663014B2 (en) | Speculatively executing instructions that follow a status updating instruction | |
US7783863B1 (en) | Graceful degradation in a trace-based processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100202 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100423 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110104 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110502 |