![]() ロックされたオペレーションを実行するためのシステムおよび方法
专利摘要:
処理ユニットにおいて被ロックオペレーションを実行するための機構。ディスパッチユニットは、被ロック命令と複数の無ロック命令とを含む複数の命令をディスパッチしうる。前記無ロック命令の1つ以上が、前記被ロック命令の前後にディスパッチされうる。実行ユニットは、前記無ロック命令と前記被ロック命令とを含む前記複数の命令を実行しうる。リタイアユニットは、前記被ロック命令の実行後に、前記被ロック命令をリタイアさせうる。リタイア中に、前記処理ユニットは、前記被ロック命令がアクセスするキャッシュラインに対する取得済みの排他的所有権の行使を開始しうる。更に、前記処理ユニットは、前記被ロック命令の前記ライトバックオペレーションが完了するまで、前記被ロック命令の後にディスパッチされた前記1つ以上の無ロック命令のリタイアをストールさせうる。前記被ロック命令のリタイア後の任意の時点で、前記ライトバックユニットは、前記被ロック命令に関連するライトバックオペレーションを実行しうる。 公开号:JP2011508309A 申请号:JP2010539423 申请日:2008-12-03 公开日:2011-03-10 发明作者:ジェイ.;ヘルテル マイケル 申请人:アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated; IPC主号:G06F9-38
专利说明:
[0001] 本発明はマイクロプロセッサのアーキテクチャに関し、より詳細には、ロックされたオペレーション(locked operations)を実行するための機構に関する。] 背景技術 [0002] x86命令セットは、ロックされた(被ロック)オペレーションを実行可能な命令をいくつか提供している。ロックされた(被ロック)命令はアトミックに動作する。すなわち、被ロック命令は、メモリ位置を読み出してから書き込むまでの間に、関連するメモリ位置の内容が、他のプロセッサ(またはシステムメモリにアクセスできる他のエージェント)によって変更されないことを保証する。被ロックオペレーションは、通常、マルチプロセッサシステムの共有データ構造を読み出して更新する複数のエンティティを同期するために、ソフトウェアによって使用される。] [0003] 各種プロセッサアーキテクチャでは、被ロック命令は、一般に、古い命令がすべてリタイアされて、この古い命令に関連するメモリへのライトバックオペレーションが実行されるまで、プロセッサパイプラインのディスパッチステージでストールされる。古い命令のすべてのライトバックオペレーションが完了した後に、被ロック命令がディスパッチされる。この時点で、被ロック命令より新しい命令のディスパッチも許可される。プロセッサは、通常、被ロック命令を実行する前に、被ロック命令がアクセスするメモリ位置を含むキャッシュラインの排他的所有権を取得して、排他的所有権を行使する。被ロック命令の実行が開始してから、この被ロック命令に関連するライトバックオペレーションが完了するまで、他のプロセッサによるこのキャッシュラインへの読み出しまたは書き込みは禁止される。被ロック命令より新しい命令のうち、被ロック命令とは異なるメモリにアクセスするか、メモリに一切アクセスしない命令は、通常、制約されずに同時実行が許される。] 発明が解決しようとする課題 [0004] このようなシステムでは、被ロック命令とすべての新しい命令が、ディスパッチステージでストールされ、古いオペレーションが完了するのを待機するため、プロセッサは、通常、ディスパッチからストール終了事象(すなわち、古い命令のライトバックオペレーション)までのパイプライン深さに等しい時間、有用な作業を実行しない。このような命令のディスパッチと実行のストールが、プロセッサのパフォーマンスに大きく影響することがある。] 課題を解決するための手段 [0005] コンピュータシステムの処理ユニットにおいて被ロックオペレーションを実行するための装置および方法の各種実施形態が開示される。前記処理ユニットは、ディスパッチユニット、実行ユニット、リタイアユニット、およびライトバックユニットを有しうる。動作中に、前記ディスパッチユニットは、被ロック命令と複数の無ロック(non-locked)命令とを含む複数の命令をディスパッチしうる。前記無ロック命令の1つ以上が前記被ロック命令の前にディスパッチされ、前記無ロック命令の1つ以上が前記被ロック命令の後にディスパッチされうる。] [0006] 前記実行ユニットは、前記無ロック命令と前記被ロック命令とを含む前記複数の命令を実行しうる。一実施形態では、前記実行ユニットは、前記被ロック命令を、前記被ロック命令の前にディスパッチされた前記無ロック命令と前記被ロック命令の後にディスパッチされた前記無ロック命令の両方と同時に実行しうる。前記リタイアユニットは、前記被ロック命令の実行後に、前記被ロック命令をリタイアさせうる。前記被ロック命令のリタイア中に、前記処理ユニットは、前記被ロック命令がアクセスするキャッシュラインに対する取得済みの排他的所有権の行使を開始しうる。前記処理ユニットは、前記キャッシュラインの前記排他的所有権の前記行使を、前記被ロック命令に関連する前記ライトバックオペレーションが完了するまで維持しうる。更に、前記処理ユニットは、前記被ロック命令の前記ライトバックオペレーションが完了するまで、前記被ロック命令の後にディスパッチされた前記1つ以上の無ロック命令のリタイアをストールさせうる。前記被ロック命令のリタイア後の任意の時点で、前記ライトバックユニットは、前記被ロック命令に関連するライトバックオペレーションを実行しうる。] 図面の簡単な説明 [0007] 一実施形態による、例示的なプロセッサコアの各種処理コンポーネントのブロック図。 一実施形態による、命令のシーケンスの実行における主要なイベントを示すタイミングチャート。 一実施形態による、被ロックオペレーションを実行するための方法を示すフローチャート。 一実施形態による、被ロックオペレーションを実行するための方法を示す別のフローチャート。 プロセッサコアの一実施形態のブロック図。 複数の処理コアを備えるプロセッサの一実施形態のブロック図。] 実施例 [0008] 本発明は、さまざまに変形されたり代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面および詳細な説明は、本発明を開示の実施形態に限定することを意図するものではなく、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれるすべての変形例、均等物および代替例を含むことを意図したものであることが理解されるべきである。] [0009] 図1を参照すると、一実施形態による、例示的なプロセッサコア100の各種処理コンポーネントのブロック図が示される。図に示すように、プロセッサコア100は、命令キャッシュ110、フェッチユニット120、命令デコードユニット(DEC)140、ディスパッチユニット150、実行ユニット160、ロード監視ユニット165、リタイアユニット170、ライトバックユニット180、およびコアインタフェースユニット190を備える。] [0010] 動作中に、フェッチユニット120は、命令キャッシュ110(例えば、プロセッサコア100内に設けられたL1キャッシュ)から命令をフェッチする。フェッチユニット120は、フェッチした命令をDEC140に提供する。DEC140は命令をデコードし、実行ユニット160にデコードした命令をディスパッチできるようになるまで、当該命令をバッファに記憶しうる。DEC140については、図5を参照して下で更に詳しく説明する。] 図5 [0011] ディスパッチユニット150は、実行のために命令を実行ユニット160に提供する。特定の一実装では、ディスパッチユニット150は、オンオーダーまたはアウトオブオーダーの実行を待機するプログラム順序で、実行ユニット160に命令をディスパッチしうる。実行ユニット160は、ロードオペレーションを実行してメモリから必要なデータを取得し、取得したデータを使用して演算を実行し、結果を、未処理のストアの内部ストアキューに記憶することによって命令を実行し、キューイングされた結果が、最終的にシステムのメモリ階層(例えば、プロセッサコア100内に設けられたL2キャッシュ(図5参照)、L3キャッシュまたはシステムメモリ(図6参照)など)に書き込まれうる。実行ユニット160については、図5を参照して下で更に詳しく説明する。] 図5 図6 [0012] 実行ユニット160が、命令のロードオペレーションを実行してから、ロードがリタイアされるまで、ロード監視ユニット165は、ロードがアクセスするメモリ位置の内容を継続的に監視しうる。ロードがアクセスするメモリ位置において、データを変更するイベント(例えば、マルチプロセッサシステムの別のプロセッサによる同じメモリ位置へのストアオペレーション)が発生した場合、ロード監視ユニット165は、このようなイベントを検出し、プロセッサに、データを廃棄させ、ロードオペレーションを再実行させうる。] [0013] 実行ユニット160が実行オペレーションを完了すると、リタイアユニット170は命令をリタイアさせる。リタイア前であれば、プロセッサコア100は、いつの時点でも、命令を破棄して再開することができる。しかし、リタイア後は、プロセッサコア100は、命令が指定するレジスタおよびメモリの更新をコミットされる。リタイアの後の任意の時点で、ライトバックユニット180は、ライトバックオペレーションを実行し、内部ストアキューの内容を取り出し、コアインタフェースユニット190を使用して、実行結果をシステムのメモリ階層に書き込む。ライトバックステージ後は、結果が、システムの他のプロセッサに対して公開される。] [0014] 各種実施形態では、処理コア100は、各種のコンピューティングシステムまたは処理システムのいずれに搭載されてもよく、この例としては、例えば、ワークステーション、パーソナルコンピュータ(PC)、サーバブレード、ポータブルコンピューティングデバイス、ゲームコンソール、システムオンチップ(SoC)、テレビジョンシステム、オーディオシステムなどが挙げられる。例えば、一実施形態では、処理コア100は、コンピューティングシステムの回路基板またはマザーボードに接続されたプロセッサに搭載されてもよい。図5を参照して下で説明するように、プロセッサコア100はx86命令セットアーキテクチャ(ISA)の一種を実装するように構成されてもよい。しかし、別の実施形態では、コア100が、異なるISAまたはISAの組み合わせを実装してもよい点に留意されたい。一部の実施形態では、図6を参照して下で更に詳しく説明するように、プロセッサコア100は、コンピューティングシステムのプロセッサ内部に含まれる複数のプロセッサコアの1つでもよい。] 図5 図6 [0015] 図1を参照して記載した構成要素は例示に過ぎず、本発明を任意の構成要素または構成の特定の組に限定することを意図するものではない。例えば、各種実施形態では、記載した構成要素の1つ以上を、必要に応じて、省略したり組み合わせても、追加の構成要素が含まれもよい。例えば、一部の実施形態では、ディスパッチユニット150が、DEC140内部に物理的に配置され、リタイアユニット170とライトバックユニット180が、実行ユニット160内部または実行コンポーネントのクラスタ(例えば、図5のクラスタ550a〜b)内部に物理的に配置されてもよい。] 図1 図5 [0016] 図2は、一実施形態による、無ロックのロード命令(L)、無ロックのストア命令(S)、および被ロックの命令(X)を含む命令のシーケンスの実行における主要なイベントのタイミングチャートである。図2では、論理的な実行が上から下に進み、時間が左から右に進む。また、命令のシーケンスの実行における主要なイベントは大文字で表され、「D」はディスパッチステージの始点を表し、「E」は実行ステージの始点を表し、「R」はリタイアステージの始点を表し、「W」はライトバックステージの始点を表す。更に、小文字の「r」は命令のリタイアがストールされる期間を表し、等号「=」は、被ロック命令がアクセスするキャッシュラインに対する取得済みの排他的所有権をプロセッサコア100が行使する期間を表す。] 図2 [0017] 図3は、一実施形態による、被ロックオペレーションを実行するための方法を示すフローチャートである。さまざまな実施形態では、図に示すステップの一部が、同時に実行されても、図とは異なる順序で実行されても、あるいは省略されてもよい点に留意すべきである。また、必要に応じて追加のステップが実行されてもよい。] 図3 [0018] 図1〜3を合わせて参照すると、オペレーション中に、複数の命令がフェッチされ、デコードされた後、実行のためにディスパッチされる(ブロック310)。ディスパッチされる命令には、被ロック命令と、複数の無ロック命令とが含まれうる。図2に示すように、無ロック命令の1つ以上が被ロック命令の前にディスパッチされ、無ロック命令の1つ以上が被ロック命令の後にディスパッチされうる。複数の命令は、プログラム順序で実行するためにディスパッチされ、被ロック命令は、プログラムシーケンスにおける前の命令の直後にディスパッチされうる。つまり、一部のプロセッサアーキテクチャとは異なり、被ロック命令がディスパッチステージでストールされず、命令が同時または実質的に並列にディスパッチされうる。] 図1 図2 図3 [0019] 古い命令が全てリタイアされ、これらの命令に関連するメモリへのライトバックオペレーションが実行されるまで、被ロック命令を、プロセッサパイプラインのディスパッチステージでストールさせるプロセッサアーキテクチャでは、被ロック命令と全ての古い命令は、通常、例えば、図2の点A〜点Bに示す期間ストールしてしまう。図1〜3を参照して記載する機構は、命令をディスパッチステージでストールさせない。命令をディスパッチステージでストールさせないことにより、命令をプロセッサパイプラインのディスパッチステージでストールさせるプロセッサアーキテクチャに固有の遅延の一部を低減することにより、パフォーマンスを向上させることができる。] 図1 図2 図3 [0020] ディスパッチステージののち、実行ユニット160は、複数の命令を実行する(ブロック320)。実行ユニット160は、被ロック命令を、被ロック命令の前にディスパッチされた無ロック命令と被ロック命令の後にディスパッチされた無ロック命令の両方と同時または実質的に並列に実行しうる。詳細には、実行中に、実行ユニット160は、ロードオペレーションを実行してメモリから必要なデータを取得し、取得したデータを使用して演算を実行し、結果を、未処理のストアの内部ストアキューに記憶して、キューイングされた結果が、システムのメモリ階層に書き込まれる。各種実装では、被ロック命令がディスパッチステージでストールされないため、無ロック命令の処理のステージまたは状態を考慮せずに、被ロック命令の実行が進行することができる。] [0021] 被ロック命令の実行中に、プロセッサコア100は、被ロック命令がアクセスするキャッシュラインの排他的所有権を取得しうる(ブロック330)。キャッシュラインの排他的所有権は、被ロック命令に関連するライトバックオペレーションの完了まで保持されうる。] [0022] 実行ユニット160が被ロック命令を実行したら、リタイアユニット170は被ロック命令をリタイアさせる(ブロック340)。リタイア前であれば、プロセッサコア100は、いつの時点でも、命令を破棄して再開することができる。しかし、リタイア後は、プロセッサコア100は、被ロック命令が指定するレジスタおよびメモリの更新をコミットされる。] [0023] 各種実装では、リタイアユニット170は、プログラム順序で複数の命令をリタイアさせうる。このため、被ロック命令の前にディスパッチされた1つ以上の無ロック命令を、被ロック命令がリタイアされる前にリタイアさせることができる。] [0024] 被ロック命令のリタイア中に、図2に示すように、プロセッサコア100は、被ロック命令がアクセスするキャッシュラインに対する取得済みの排他的所有権の行使を開始しうる(ブロック350)。つまり、プロセッサコア100がキャッシュラインの排他的所有権の行使を開始すると、プロセッサコア100は、このキャッシュラインへの読み出しまたは書き込みを行おうとする他のプロセッサ(または他のエンティティ)に、キャッシュラインの所有権を解放するのを拒否する。リタイア前に、プロセッサコア100がキャッシュラインの排他的所有権を実行時に取得していた場合でも、プロセッサコア100は、アクセスを要求している他のプロセッサに所有権を解放しうる。しかし、リタイア前にプロセッサコア100がキャッシュラインの所有権を解放すると、プロセッサコア100は、被ロック命令の処理を再開しなければならない。図2に示すように、キャッシュラインの排他的所有権の行使が、リタイアの開始から、被ロック命令に関連するライトバックオペレーションの完了まで継続されうる。] 図2 [0025] 更に、図2に示すように、被ロック命令に関連するライトバックオペレーションが完了するまで、プロセッサコア100は、被ロック命令の後にディスパッチされた1つ以上の無ロック命令のリタイアをストールさせうる(ブロック360)。つまり、実行ユニット160が、被ロック命令の後にディスパッチされた1つ以上の命令の実行を完了した場合、ライトバックユニット180が被ロック命令のライトバックオペレーションを実行するまで、プロセッサコア100はこのような命令のリタイアをストールさせる。図2に示す1つの具体例では、ロード命令(L4)のリタイアステージは、点Bから点Cまでの間ストールされる。なお、この例では、時点Bから時点Cまでの時間が、時点Aから時点Bまでの時間よりも実質的に短い。] 図2 [0026] 被ロック命令より新しい命令のリタイアを、ライトバックの後まで遅らせることにより、例えば、被ロック命令のライトバックオペレーションの前に、例えば他のプロセッサの活動によってメモリシステムの状態が変化する過渡的な状態を、新しいロード命令が見られないように保証するために、ロード監視ユニット165は、新しいロード命令から見える結果を監視することができるようになる。] [0027] 前述のように、図1〜3の実施形態に記載した機構の、命令の実行に関する他のプロセッサアーキテクチャとの差異の1つは、被ロック命令と新しい命令がディスパッチステージでストールされるのではなく、被ロックオペレーションより新しい命令がリタイアステージでストールされる点にある。] 図1 図2 図3 [0028] 被ロック命令とすべての新しい命令が、古いオペレーションが完了するのを待機してディスパッチステージでストールされるプロセッサアーキテクチャでは、プロセッサは、通常、ディスパッチからストール終了事象(すなわち、古い命令のライトバックオペレーション)までのパイプライン深さに等しい時間、有用な作業を実行しない。その後、ストール終了事象後に、プロセッサは、有用な作業の実行を再開することができる。しかし、一般に、実行速度が、ストールが発生しなかったと仮定した場合よりも遅くなり、このため、プロセッサは、通常は遅延を埋め合わせることができない。これがプロセッサのパフォーマンスに大きく影響することがある。] [0029] 図1〜3の実施形態では、新しい命令がリタイアステージでストールされるため、システムが割り当て可能なリソース(リネームレジスタ、ロード/ストアバッファのスロット、リオーダバッファのスロットなど)を使い果たさない限り、プロセッサコア100は有用な命令を継続的にディスパッチして実行することができる。このような実施形態では、ストールの終了時に、さまざまな命令がリタイアを待っている場合でも、プロセッサコア100は、これらの命令を、通常の実行帯域幅を実質的に超える最大リタイア帯域幅でバースト方式でリタイアさせることができる。また、リタイアからライトバックまでのパイプライン深さが、ディスパッチからライトバックまでのパイプライン深さよりも実質的に浅い。この手法は、実際の命令のディスパッチと実行の流れを遅延させることを回避するために、リタイアの帯域幅が高いという点と、割り当て可能なリソースが利用可能である点とを利用している。] 図1 図2 図3 [0030] 被ロック命令のリタイアの後の任意の時点で、ライトバックユニット180は、被ロック命令のライトバックオペレーションを実行し、内部ストアキューの内容を取り出し、コアインタフェースユニット190を介して、実行結果をシステムのメモリ階層に書き込む(ブロック370)。ライトバックステージ後に、被ロック命令の結果がシステムの他のプロセッサに対して公開され、キャッシュラインの排他的所有権が解放される。] [0031] 各種実装では、ライトバックユニット180は、複数の命令にプログラム順にライトバックオペレーションを実行しうる。このため、被ロックオペレーションの前にディスパッチされた1つ以上の無ロック命令に関連するライトバックオペレーションが、被ロック命令に関連するライトバックオペレーションの実行前に実行されうる。] [0032] 被ロック命令がディスパッチステージでストールしないため、被ロック命令に関連するディスパッチ、実行、リタイア、およびライトバックの各オペレーションが、被ロック命令の前にディスパッチされた1つ以上の無ロック命令に関連する、ディスパッチ、実行、リタイア、およびライトバックの各オペレーションと、同時または実質的に並列に実行される。つまり、被ロック命令に関連する各ステージの実行が、無ロック命令の処理のステージまたは実行状態のために遅延することがない。] [0033] 図1〜3の実施形態に記載した機構の、命令の実行に関して他のプロセッサアーキテクチャと異なる別の差異は、キャッシュラインの排他的所有権の行使が、実行ステージからライトバックステージまでではなく、リタイアステージからライトバックステージまで行われる点にある。このような実施形態では、キャッシュラインの排他的所有権が、実行ステージからリタイアステージの間はプロセッサコア100によって行使されないため、アクセスを要求している他のプロセッサが、この期間にキャッシュラインを利用できるようになる。] 図1 図2 図3 [0034] 被ロック命令の処理中に、ロード監視ユニット165は、他のプロセッサが、対応するキャッシュラインへのアクセスを取得しようとするのを監視しうる。プロセッサコア100がキャッシュラインに排他的所有権を行使する前(すなわちリタイア前)に、あるプロセッサが、キャッシュラインへのアクセスを取得した場合、ロード監視ユニット165は、所有権の解放を検出して、プロセッサコア100に、部分的に実行した被ロック命令を放棄させてから、この被ロック命令の処理を再開させうる。ロード監視ユニット165の監視機能は、被ロックオペレーションのアトミック性を保証するのを支援する。] [0035] 上で説明したように、キャッシュラインの排他的所有権が解放され、キャッシュラインが、アクセスを要求している他のプロセッサに利用可能となると、プロセッサコア100は、被ロック命令の処理を再開する。一部の実装では、この状況が再度発生して被ロック命令の処理がループするのを回避するために、キャッシュラインが、アクセスを要求している他のプロセッサに解放されると、被ロック命令の処理が再開されるが、今回は、キャッシュラインの排他的所有権の取得と行使の両方が実行ステージで行われる。今回は、プロセッサコア100が、実行ステージからライトバックステージまでキャッシュラインの排他的所有権を行使するため、この間は、キャッシュラインが、アクセスを要求している他のプロセッサに解放されることがなく、被ロック命令の処理が、プロセスが再びループすることなく完了し、先に進むことが保証される。] [0036] 一部の実装では、ディスパッチされる複数の命令に、第1の被ロック命令の後にディスパッチされた1つ以上の追加の被ロック命令が含まれることがある。このような実装では、追加の被ロック命令が、ディスパッチされ実行されうるが、第1の被ロック命令に関連するライトバックオペレーションが完了するまで、シーケンス内の第2の被ロック命令のリタイアがストールされうる。つまり、図4のフローチャートを参照して下で更に詳しく説明するように、古い被ロック命令が全てライトバックステージを完了するまで、ディスパッチされ実行された被ロック命令がリタイアステージでストールされうる。] 図4 [0037] 図4は、一実施形態による、被ロックオペレーションを実行するための方法を示す別のフローチャートである。さまざまな実施形態では、図に示すステップの一部が、同時に実行されても、図とは異なる順序で実行されても、あるいは省略されてもよい点に留意すべきである。また、必要に応じて追加のステップが実行されてもよい。] 図4 [0038] 図1〜4を合わせて参照すると、オペレーション中に、複数の命令がフェッチされ、デコードされた後、実行のためにディスパッチされる(ブロック410)。ディスパッチされる命令には、無ロック命令と、第1の被ロック命令と、第2の無ロック命令とが含まれうる。第1の被ロック命令は、第2の被ロック命令の前にディスパッチされる。ディスパッチステージののち、実行ユニット160は、複数の命令を実行する(ブロック420)。実行ユニット160は、第1の被ロック命令および第2の被ロック命令を、無ロック命令と同時または実質的に並列に実行しうる。被ロック命令の実行中に、プロセッサコア100は、第1の被ロック命令と第2の被ロック命令がアクセスするキャッシュラインの排他的所有権を取得しうる。キャッシュラインの排他的所有権は、対応するライトバックオペレーションの完了まで保持されうる。] 図1 図2 図3 図4 [0039] 実行ユニット160が第1の被ロック命令を実行したあとに、リタイアユニット170は第1の被ロック命令をリタイアさせる(ブロック430)。また、第1の被ロック命令のリタイア中に、プロセッサコア100は、第1の被ロック命令がアクセスするキャッシュラインに対する取得済みの排他的所有権の行使を開始しうる(ブロック440)。つまり、プロセッサコア100がキャッシュラインの排他的所有権の行使を開始すると、プロセッサコア100は、このキャッシュラインの読み出しまたは書き込みを行おうとしている他のプロセッサ(または他のエンティティ)に、キャッシュラインの所有権を解放するのを拒否する。] [0040] 更に、プロセッサコア100は、第1の被ロック命令に関連するライトバックオペレーションが完了するまで、第1の被ロック命令の後にディスパッチされた第2の被ロック命令と無ロック命令のリタイアをストールさせうる(ブロック450)。詳細には、第2の被ロック命令と、第1の被ロック命令の後であるが第2の被ロック命令の前にディスパッチされた無ロック命令とは、第1の被ロック命令に関連するライトバックオペレーションが完了するまでストールされる。第2の被ロック命令の後にディスパッチされた無ロック命令は、第2の被ロック命令に関連するライトバックオペレーションが完了するまでストールされる。この同じ手法を、この後に続く別の被ロック命令と無ロック命令とに実装することができる点に留意されたい。] [0041] 第1の被ロック命令のリタイアの後の任意の時点で、ライトバックユニット180は、第1の被ロック命令のライトバックオペレーションを実行し、内部ストアキューの内容を取り出し、コアインタフェースユニット190を介して、実行結果をシステムのメモリ階層に書き込む(ブロック460)。ライトバックステージ後に、第1の被ロック命令の結果がシステムの他のプロセッサに対して公開され、キャッシュラインの排他的所有権が解放される。第1の被ロック命令のライトバックステージの完了後に、第2の被ロック命令がリタイアされる(ブロック470)。第2の被ロック命令のリタイア中に、プロセッサコア100は、第2の被ロック命令がアクセスするキャッシュラインに対する取得済みの排他的所有権の行使を開始しうる(ブロック480)。次に、第2の被ロック命令のリタイア後の任意の時点で、第2の被ロック命令のライトバックオペレーションが実行される(ブロック490)。] [0042] 図5は、プロセッサコア100の一実施形態のブロック図である。一般に、コア100は、コア100に直接または間接的に結合されたシステムメモリに保存されうる命令を実行するように構成されうる。このような命令は、特定の命令セットアーキテクチャ(ISA)に従って定義されうる。例えば、コア100は、x86 ISAの一種を実装するように構成されうるが、別の実施形態では、コア100は異なるISAまたはISAの組み合わせを実装してもよい。] 図5 [0043] 図に示した実施形態では、コア100は、命令フェッチユニット(IFU)520に命令を提供するように結合された命令キャッシュ(IC)510を備えうる。IFU520は、分岐予測ユニット(BPU)530と、命令デコードユニット(DEC)540とに結合されうる。DEC540は、複数の整数実行クラスタ550a〜bと、浮動小数点ユニット(FPU)560とにオペレーションを提供するように結合されうる。各クラスタ550a〜bは、各々の複数の整数実行ユニット554a〜bに結合された個々のクラスタスケジューラ552a〜bを備えうる。クラスタ550a〜bは、実行ユニット554a〜bにデータを提供するために結合された各々のデータキャッシュ556a〜bを備えうる。図に示した実施形態では、データキャッシュ556a〜bはFPU560の浮動小数点実行ユニット564にもデータを提供し、浮動小数点実行ユニット564は、FPスケジューラ562からオペレーションを受け取るために結合されうる。データキャッシュ556a〜bと命令キャッシュ510とは、コアインタフェースユニット570にも結合され、コアインタフェースユニット570は、一元化されたL2キャッシュ580のほか、図6に示し、下で説明するコア100の外部にあるシステムインタフェースユニット(SIU)にも結合されうる。図5は、各ユニット間の特定の命令とデータの流れの経路を示しているが、図5には特に図示しないデータまたは命令の流れの追加の経路または向きが提供されてもよい点に留意されたい。図5を参照して記載する構成要素も同様に、被ロック命令を含む命令を実行するために、図1〜4を参照して上で説明した機構を実装しうる。] 図1 図2 図3 図4 図5 図6 [0044] 下で更に詳細に説明するように、コア100は、別個の実行スレッドに含まれる命令が同時に実行されうるマルチスレッド実行のために構成されうる。一実施形態では、各クラスタ550a〜bは、2つのスレッドのそれぞれ一方に対応する命令の実行に占有的に使用されるが、FPU560と上りの命令フェッチユニットおよびデコードロジックとは、複数のスレッドで共有されうる。別の実施形態では、同時実行がサポートされるスレッド数が異なっていてもよく、設けられるクラスタ550とFPU560の個数も異なっていてもよい。] [0045] 命令キャッシュ510は、取得、デコード、および実行のために発行される前の命令を記憶するように構成されうる。各種実施形態では、命令キャッシュ510は、例えば、8ウェイ64キロバイト(KB)のキャッシュなど、特定のサイズのダイレクトマップ、セットアソシエティブまたはフルアソシエティブのキャッシュとして構成されうる。命令キャッシュ510は、物理アドレッシングされても、仮想アドレッシングされても、この両者の組み合わせ(例えば、仮想インデックスビットと物理タグビット)でもよい。一部の実施形態では、命令キャッシュ510は、命令フェッチアドレスのために仮想−物理変換をキャッシュするように構成された変換ルックアサイドバッファ(TLB)論理を有してもよいが、TLBと変換論理が、コア100の他の構成要素に含まれていてもよい。] [0046] 命令キャッシュ510への命令フェッチアクセスは、IFU520によって調整されうる。例えば、IFU520は、各実行スレッドの現在のプログラムカウンタ状態をトラッキングし、実行する後続の命令を取得するために、命令キャッシュ510にフェッチを発行しうる。命令キャッシュミスの場合、命令キャッシュ510またはIFU520のいずれかが、L2キャッシュ580からの命令データの取得を調整しうる。一部の実施形態では、IFU520は、メモリレーテンシの影響を軽減するために、予想される命令が使用される前に、メモリ階層の他のレベルからの、その命令のプリフェッチを調整しうる。例えば、精度の高い命令のプリフェッチにより、命令が必要となったときに、その命令が命令キャッシュ510に存在する確率が高くなり、これにより、おそらくメモリ階層の複数のレベルでのキャッシュミスのレーテンシの影響が回避される。] [0047] 各種の分岐(例えば、条件付きの分岐または無条件の分岐、呼び出し/戻り命令など)により、特定のスレッドの実行の流れが変わりうる。分岐予測ユニット530は、通常、IFU520のために、今後フェッチするアドレスを予測するように構成されうる。一部の実施形態では、BPU530は、命令の流れにおいて可能な分岐に関するさまざまな情報を記憶するように構成されうる分岐先バッファ(BTB)を備えうる。例えば、BTBは、分岐の種類(例えば、静的、条件付き、直接、間接など)、予測される分岐先アドレス、命令キャッシュ510の、分岐先が存在しうると予測されるウェイに関する情報、あるいは他の任意の適切な分岐情報を記憶するように構成されうる。一部の実施形態では、BPU530は、キャッシュのような階層方式に構成された複数のBTBを有しうる。また、一部の実施形態では、BPU530は、条件付きの分岐の結果を予測するように構成された1つ以上の種類の異なる予測器(例えば、ローカル予測器、グローバル予測器またはハイブリッド予測器)を備えうる。一実施形態では、分岐予測が命令のフェッチに先行し、IFU520が命令をフェッチ可能となるまでに、今後フェッチする複数のアドレスを予測してキューイングできるように、IFU520の実行パイプラインとBPU530の実行パイプラインが分離されてもよい。マルチスレッドオペレーション中に、予測のパイプラインとフェッチのパイプラインが、異なるスレッドに同時に操作するように構成されてもよい点が考察される。] [0048] IFU520は、フェッチを行った結果、「フェッチパケット」と呼ばれる命令バイトのシーケンスを生成するように構成されうる。例えば、フェッチパケットは、32バイト長または別の適切な値でもよい。一部の実施形態では、特に、可変長命令を実装するISAでは、所定のフェッチパケット内の任意の境界に配列される有効な命令数が変わり、場合によっては、命令が異なるフェッチパケットにまたがることがある。一般に、DEC540は、フェッチパケット内で命令の境界を特定して、この命令を、デコードするか、あるいはまたはほかの方法で、クラスタ550またはFPU560が実行可能なオペレーションに変換して、このようなオペレーションを実行のためにディスパッチするように構成されうる。] [0049] 一実施形態では、DEC540は、最初に、1つ以上のフェッチパケットから抽出した所定のバイトのウィンドウ内で、可能な命令の長さを決定するように構成されうる。例えば、DEC540は、x86互換ISAの場合、所定のフェッチパケット内の各バイト位置を始点とする、プレフィックス、オペコード、「mod/rm」、および「SIB」の各バイトの有効なシーケンスを特定するように構成されうる。一実施形態では、DEC540内の抽出論理は、次に、ウィンドウ内で最大4つの有効な命令の境界を特定するように構成されうる。一実施形態では、複数のフェッチパケットと、命令の境界を特定する複数の命令ポインタ群が、DEC540内にキューイングされ、IFU520が時としてデコードよりも「先にフェッチ」できるように、デコードプロセスをフェッチから分離することが可能となる。] [0050] 次に、命令が、フェッチパケット記憶域からDEC540内のいくつかの命令デコーダの1つに送られうる。一実施形態では、DEC540は、1サイクルにつき最大4つの命令を実行のためにディスパッチするように構成されており、これに対応して4つの別個の命令デコーダが設けられるが、他の構成も可能であり、考察される。コア100がマイクロコード命令をサポートしている実施形態では、各命令デコーダは、所定の命令がマイクロコード化されているかどうかを判定し、マイクロコード化されている場合は、命令をオペレーションのシーケンスに変換するために、マイクロコードエンジンの動作を起動するように構成されうる。マイクロコード化されていない場合、命令デコーダは、命令を、クラスタ550またはFPU560が実行するのに適した1つのオペレーション(あるいは、一部の実施形態では複数のオペレーション)に変換しうる。得られたオペレーションは、「マイクロオペレーション」、「マイクロオペ」または「UOP」とも呼ばれ、1つ以上のキューに格納され、実行のためにディスパッチされるのを待機しうる。一部の実施形態では、マイクロコードオペレーションと、非マイクロコード(または「高速パス」)オペレーションとは、別のキューに格納されうる。] [0051] DEC540内のディスパッチ論理は、ディスパッチパーセルを組み立てるために、ディスパッチ待機中のキューイングされたオペレーションの状態を、実行リソースの状態およびディスパッチルールと併せて調べるように構成されうる。例えば、DEC540は、キューイングされたオペレーションをディスパッチ可能かどうか、キューイングされてクラスタ550および/またはFPU560内での実行を待機しているオペレーションの数、ならびにディスパッチするオペレーションに適用されうるリソース制約を考慮しうる。一実施形態では、DEC540は、所定の実行サイクル中に、クラスタ550またはFPU560の1つに、最大4オペレーションのパーセルをディスパッチするように構成されうる。] [0052] 一実施形態では、DEC540は、所定の実行サイクル中に1つのスレッドのオペレーションのみをデコードし、ディスパッチするように構成されてもよい。しかし、IFU520とDEC540が、同時に同じスレッドを操作する必要はない点に留意されたい。命令のフェッチおよびデコード中に各種のスレッド切替ポリシーを使用することが考察される。例えば、IFU520とDEC540は、Nサイクル(Nは最小で1)おきに、ラウンドロビン方式で、処理する異なるスレッドを選択するように構成されうる。あるいは、スレッド切替が、キューの占有率などの動的な条件によって変更されてもよい。例えば、DEC540内の特定のスレッドのキューイングされているデコード済みのオペレーション、または特定のクラスタ550のキューイングされているディスパッチ済みのオペレーションの深さが、しきい値を下回ると、異なるスレッドのキューイングされているオペレーションが不足するまで、デコード処理はそのスレッドに切り換えうる。一部の実施形態では、コア100は、複数の異なるスレッド切替ポリシーをサポートすることができ、そのうちのいずれかが、ソフトウェアによって、あるいは製造時(例えば、製造マスクオプションとして)選択されてもよい。] [0053] 一般に、クラスタ550は、ロード/ストアオペレーションのほかに、整数演算オペレーションと論理オペレーションも実装するように構成されうる。一実施形態では、クラスタ550a〜bのそれぞれは、個々のスレッドのオペレーションの実行のみに使用され、コア100がシングルスレッドモードで動作するように構成されている場合、オペレーションが、クラスタ550の1つのみにディスパッチされうる。各クラスタ550は、独自のスケジューラ552を有し、このスケジューラ552は、クラスタに既にディスパッチされているオペレーションを実行するための発行を管理するように構成されうる。各クラスタ550は、独自の整数物理レジスタファイルのコピーのほか、独自の終了論理(例えば、オペレーションの終了とリタイアを管理するためのリオーダバッファまたは他の構造体)も有しうる。] [0054] 各クラスタ550内の実行ユニット554は、異なるタイプのオペレーションの同時実行をサポートすることができる。例えば、一実施形態では、実行ユニット554は、2つの並列ロード/ストアアドレス生成(AGU)オペレーションと、2つの同時数値/論理演算(ALU)オペレーションとをサポートし、クラスタ当たり合計4つの同時整数オペレーションをサポートすることができる。実行ユニット554は、整数の乗算、除算などの追加のオペレーションをサポートしてもよいが、各種実施形態では、クラスタ550は、スループットに対するスケジューリングの制約、ならびにこのような追加のオペレーションの他のALU/AGUオペレーションとの同時実行を実装してもよい。また、各クラスタ550は、命令キャッシュ510と同様に、さまざまなキャッシュ構成のいずれかを使用して実装されうる独自のデータキャッシュ556を備えてもよい。データキャッシュ556が命令キャッシュ510とは異なる構造で編成されてもよい点に留意されたい。] [0055] 図に示した実施形態では、クラスタ550とは異なり、FPU560は異なるスレッドの浮動小数点演算を実行するように構成され、場合によってはこれらを同時に実行するように構成されうる。FPU560は、クラスタスケジューラ552と同様に、オペレーションを受け取り、キューイングし、FP実行ユニット564内で実行するために発行するように構成されうるFPスケジューラ562を備えうる。また、FPU560は、浮動小数点オペランドを管理するように構成された浮動小数点物理レジスタファイルを備えうる。FP実行ユニット564は、加算、乗算、除算、乗算累算などの各種の浮動小数点演算のほか、ISAによって規定されうる他の浮動小数点、マルチメディアまたはその他のオペレーションを実装するように構成されうる。各種実施形態では、FPU560は、特定の異なる種類の浮動小数点演算の同時実行をサポートし、異なる精度(例えば、64ビットオペランド、128ビットオペランドなど)もサポートすることができる。図に示すように、FPU560はデータキャッシュを有さないが、代わりに、クラスタ550内部に設けられたデータキャッシュ556にアクセスするように構成されうる。一部の実施形態では、FPU560は、浮動小数点のロード命令とストア命令を実行するように構成されうるが、別の実施形態では、FPU560の代わりにクラスタ550が上記命令を実行してもよい。] [0056] 命令キャッシュ510とデータキャッシュ556とは、コアインタフェースユニット570を介してL2キャッシュ580にアクセスするように構成されうる。一実施形態では、CIU570は、システム内のコア100と他のコア101間のほか、外部システムメモリ、周辺機器との間でも一般的にインタフェースさせうる。一実施形態では、L2キャッシュ580は、任意の適切なキャッシュ構成を使用する一元的なキャッシュとして構成されうる。通常に、L2キャッシュ580は、1次命令キャッシュおよびデータキャッシュよりも実質的に大容量である。] [0057] 一部の実施形態では、コア100は、ロードオペレーションとストアオペレーションを含むオペレーションのアウトオブオーダー実行をサポートすることができる。すなわち、クラスタ550とFPU560内でのオペレーションの実行の順序が、オペレーションに対応する命令の元のプログラムの順序と変わることがある。このように実行の順序を柔軟に設定できることにより、実行リソースをより効率的にスケジューリングできるようになり、全体的な実行パフォーマンスを向上させることができる。] [0058] また、コア100は、各種の制御手法とデータ投機手法とを実装してもよい。前述のように、コア100は、スレッドの実行制御の流れの進行方向を予測するために、各種の分岐予測手法と投機的プリフェッチ手法を実装しうる。このような制御投機手法は、一般に、命令が使用可能となるか、(例えば、分岐予測ミスのため)投機ミスが発生するかどうかが確定する前に、矛盾のないような命令の流れを与えようとする手法である。コア100は、制御投機ミスが発生すると、投機ミスの経路に沿ってオペレーションとデータを廃棄し、実行制御を正しい経路に導くように構成されうる。例えば、一実施形態では、クラスタ550は、条件付きの分岐命令を実行して、分岐結果が予測された結果と一致するかどうかを判定するように構成されうる。一致しない場合、クラスタ550は、IFU520に、正しい経路に沿ったフェッチを開始させるように構成されうる。] [0059] これとは別に、コア100は、値の正誤が判明する前に、その後の実行で使用するデータ値を提供しようとする各種データ投機手法を実装しうる。例えば、セットアソシエティブキャッシュでは、データがキャッシュに存在する場合、キャッシュ内のどのウェイにデータが実際にヒットするかが判明する前に、データを、キャッシュの複数のウェイから取得することが可能である。一実施形態では、コア100は、ウェイのヒット/ミス状態が判明する前に、キャッシュ結果を提供するために、命令キャッシュ510、データキャッシュ556および/またはL2キャッシュ580において、一種のデータ投機としてウェイ予測を実行するように構成されうる。データ投機の誤りが発生した場合、投機ミスとなったデータに依存するオペレーションが、「再生」すなわち再実行のために再発行されうる。例えば、ウェイ予測が外れたロードオペレーションが再生されうる。実施形態によっては、再実行時に、ロードオペレーションが、以前の投機ミスの結果に基づいて、再投機される(例えば、先に判定された正しいウェイを使用して投機される)か、あるいはデータ投機を行わずに実行されうる(例えば、結果の生成前に、ウェイのヒット/ミスチェックが終了まで実行の進行が許容される)。各種実施形態では、コア100は、アドレス予測、アドレスまたはアドレスオペランドのパターンに基づくロード/ストア依存関係の検出、投機的なストア−ロード結果の転送、データコヒーレンスの投機、または他の適切な手法、あるいはその組み合わせなど、数多くの他の種類のデータ投機を実装してもよい。] [0060] 各種実施形態では、プロセッサ実装は、ほかの構造と共に、1つの集積回路に一体化して形成されたコア100を複数有してもよい。このようなプロセッサの一実施形態が図6に示される。図に示すように、プロセッサ600は、それぞれが前述のように構成されうる4つのコア100a〜dを有する。図に示した実施形態では、各コア100は、システムインタフェースユニット(SIU)610を介して、L3キャッシュ620、およびメモリコントローラ/周辺機器インタフェースユニット(MCU)630に結合されうる。一実施形態では、L3キャッシュ620は、任意の適切な構成を使用して実装され、コア100のL2キャッシュ580と、比較的低速のシステムメモリ640との間の中間キャッシュとして動作する一元的なキャッシュとして構成されうる。] 図6 [0061] MCU630は、プロセッサ600をシステムメモリ640と直接インタフェースするように構成されうる。例えば、MCU630は、1種類以上の種類の異なるランダムアクセスメモリ(RAM)をサポートするために必要な信号を生成するように構成され、このようなRAMには、デュアルデータレートシンクロナスダイナミックRAM(DDR SDRAM)、DDR−2 SDRAM、フルバッファデュアルインラインメモリ(FB−DIMM)、あるいはシステムメモリ640を実装するために使用されうる別の適切なタイプのメモリが挙げられる。システムメモリ640は、プロセッサ600の各種コア100によって操作されうる命令およびデータを保存するように構成され、システムメモリ640の内容が、上で説明した各種キャッシュによってキャッシュされうる。] [0062] また、MCU630は、プロセッサ600への他のタイプのインタフェースもサポートすることができる。例えば、MCU630は、プロセッサ600を、グラフィック処理サブシステム(別個のグラフィックプロセッサ、グラフィックメモリおよび/または他のコンポーネントなどを含む)にインタフェースするために使用されうるアクセラレィティッド/アドバンスドグラフィックスポート(AGP)インタフェースの一種などの専用のグラフィックプロセッサインタフェースを実装しうる。MCU630は、1種類以上の周辺機器インタフェース(例えば、PCIExpressバス規格の一種)を実装するように構成され、プロセッサ600は、このインタフェースを使用して、ストレージデバイス、グラフィックデバイス、ネットワークデバイスなどの周辺機器とインタフェースすることができる。一部の実施形態では、他の種類のバスまたは相互接続を介して、プロセッサ600を他の周辺機器に結合するために、プロセッサ600の外部の2次バスブリッジ(例えば、「サウスブリッジ」)が使用されうる。メモリコントローラと周辺機器インタフェースの機能が、MCU630を介してプロセッサ600内に統合されて図示されているが、別の実施形態では、これらの機能が、従来の「ノースブリッジ」構成を介してプロセッサ600の外部に実装されてもよい点に留意されたい。例えば、MCU630の各種機能が、プロセッサ600内に一体化されるのではなく、別個のチップセットを介して実装されてもよい。] [0063] 上の実施形態についてかなり詳細に記載したが、上記の開示を完全に理解できれば、数多くの変形例および変更例が当業者にとって明らかであろう。下記の特許請求の範囲は、このような変形例および変更例を全て包含するものと解釈されることが意図される。] [0064] 本発明は、一般にマイクロプロセッサアーキテクチャに利用可能である。]
权利要求:
請求項1 コンピュータシステムの処理ユニットにおいて被ロックオペレーションを実行するための方法であって、被ロック命令と複数の無ロック命令とを含み、前記無ロック命令の1つ以上が前記被ロック命令の前にディスパッチされ、前記無ロック命令の1つ以上が前記被ロック命令の後にディスパッチされる複数の命令をディスパッチするステップと、前記無ロック命令と前記被ロック命令とを含む前記複数の命令を実行するステップと、前記被ロック命令の実行後に、前記被ロック命令をリタイアさせるステップと、前記被ロック命令のリタイア後に、前記被ロック命令に関連するライトバックオペレーションを実行するステップと、前記被ロック命令に関連する前記ライトバックオペレーションが完了するまで、前記被ロック命令の後にディスパッチされた前記1つ以上の無ロック命令のリタイアをストールさせるステップとを含む方法。 請求項2 前記被ロック命令の実行中に前記被ロック命令がアクセスするキャッシュラインの排他的所有権を取得するステップと、前記被ロック命令のリタイア中に前記キャッシュラインに対する取得済みの前記排他的所有権を行使するステップとを更に含み、前記キャッシュラインの前記排他的所有権の前記行使は前記被ロック命令に関連する前記ライトバックオペレーションが完了するまで維持される、請求項1に記載の方法。 請求項3 前記被ロック命令がアクセスする前記キャッシュラインの前記排他的所有権の行使の前に、前記所有権が前記コンピュータシステムの別の処理ユニットに解放された場合には、前記被ロック命令の前記処理を再開するステップを更に含み、前記被ロック命令の前記処理を再開する前記ステップは前記被ロック命令の実行中に前記被ロック命令がアクセスするキャッシュラインの排他的所有権の取得と行使の両方を行う、請求項2に記載の方法。 請求項4 前記被ロック命令のリタイア前に、前記被ロック命令の前にディスパッチされた前記1つ以上の無ロック命令をリタイアさせるステップを更に含む、請求項1に記載の方法。 請求項5 被ロック命令と複数の無ロック命令とを含み、前記無ロック命令の1つ以上が前記被ロック命令の前にディスパッチされ、前記無ロック命令の1つ以上が、前記被ロック命令の後にディスパッチされる複数の命令をディスパッチするように構成されたディスパッチユニットと、前記無ロック命令と前記被ロック命令とを含む前記複数の命令を実行するように構成された実行ユニットと、前記被ロック命令の実行後に、前記被ロック命令をリタイアさせるように構成されたリタイアユニットと、前記被ロック命令のリタイア後に、前記被ロック命令に関連するライトバックオペレーションを実行するように構成されたライトバックユニットとを備え、前記処理ユニットは、前記被ロック命令に関連する前記ライトバックオペレーションが完了するまで、前記被ロック命令の後にディスパッチされた前記1つ以上の無ロック命令のリタイアをストールさせるように構成されている、処理ユニット。 請求項6 前記実行ユニットは、前記被ロック命令を、前記被ロック命令の前にディスパッチされた前記無ロック命令と前記被ロック命令の後にディスパッチされた前記無ロック命令の両方と同時に実行するように構成されている、請求項5に記載の処理ユニット。 請求項7 前記処理ユニットは、前記被ロック命令を、前記被ロック命令の前にディスパッチされた前記1つ以上の無ロック命令の処理と同時に処理するように構成されている、請求項5に記載の処理ユニット。 請求項8 前記実行ユニットは、前記無ロック命令の処理のステージを考慮せずに、前記被ロック命令を実行するように構成されている、請求項5に記載の処理ユニット。 請求項9 前記被ロック命令の実行中に前記処理ユニットは前記被ロック命令がアクセスするキャッシュラインの排他的所有権を取得するように構成され、前記被ロック命令のリタイア中に前記処理ユニットは前記キャッシュラインに対する取得済みの前記排他的所有権を行使するように構成され、前記処理ユニットは前記キャッシュラインの前記排他的所有権の前記行使を前記被ロック命令に関連する前記ライトバックオペレーションが完了するまで維持するように構成されている、請求項5に記載の処理ユニット。 請求項10 前記処理ユニットが前記被ロック命令がアクセスする前記キャッシュラインの前記排他的所有権を行使する前に、前記所有権が対応するコンピュータシステムの別の処理ユニットに解放された場合には、前記処理ユニットは前記被ロック命令の前記処理を再開するように構成され、前記被ロック命令の前記処理の再開後に、前記処理ユニットは前記被ロック命令の実行中に前記被ロック命令がアクセスするキャッシュラインの排他的所有権の取得と行使の両方を行うように構成されている、請求項9に記載の処理ユニット。
类似技术:
公开号 | 公开日 | 专利标题 US10061593B2|2018-08-28|Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions Sinharoy et al.2015|IBM POWER8 processor core microarchitecture US10282300B2|2019-05-07|Accessing physical memory from a CPU or processing element in a high performance manner US9311095B2|2016-04-12|Using register last use information to perform decode time computer instruction optimization US9483267B2|2016-11-01|Exploiting an architected last-use operand indication in a system operand resource pool US10061588B2|2018-08-28|Tracking operand liveness information in a computer system and performing function based on the liveness information US8966232B2|2015-02-24|Data processing system operable in single and multi-thread modes and having multiple caches and method of operation US20170097826A1|2017-04-06|System, Method, and Apparatus for Improving Throughput of Consecutive Transactional Memory Regions US10409763B2|2019-09-10|Apparatus and method for efficiently implementing a processor pipeline JP6526609B2|2019-06-05|プロセッサ TWI537824B|2016-06-11|零循環載入 US6357016B1|2002-03-12|Method and apparatus for disabling a clock signal within a multithreaded processor EP1989619B1|2013-04-24|Hardware acceleration for a software transactional memory system JP3096451B2|2000-10-10|データを転送する方法およびプロセッサ US5890008A|1999-03-30|Method for dynamically reconfiguring a processor US5850543A|1998-12-15|Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return US7500087B2|2009-03-03|Synchronization of parallel processes using speculative execution of synchronization instructions US7827390B2|2010-11-02|Microprocessor with private microcode RAM US9037837B2|2015-05-19|Hardware assist thread for increasing code parallelism KR101702788B1|2017-02-03|스토어 상위 서열에 기초하여 상이한 스레드들로부터의 포워딩을 구현하는 스레드에 무관한 로드 스토어 버퍼 DE112005000706B4|2011-02-17|Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene US5935241A|1999-08-10|Multiple global pattern history tables for branch prediction in a microprocessor US9262171B2|2016-02-16|Dependency matrix for the determination of load dependencies DE10296989B4|2008-06-26|Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms JP5118652B2|2013-01-16|Transactional memory in out-of-order processors
同族专利:
公开号 | 公开日 EP2235623A1|2010-10-06| WO2009082430A1|2009-07-02| CN101971140A|2011-02-09| KR20100111700A|2010-10-15| US20090164758A1|2009-06-25| TW200937284A|2009-09-01| JP5543366B2|2014-07-09|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2011-12-03| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111202 | 2013-04-30| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130430 | 2013-05-16| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130515 | 2013-08-16| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130815 | 2013-12-19| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131218 | 2014-03-19| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140318 | 2014-04-07| TRDD| Decision of grant or rejection written| 2014-04-10| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140409 | 2014-05-15| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140508 | 2014-05-16| R150| Certificate of patent or registration of utility model|Ref document number: 5543366 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 | 2017-05-16| LAPS| Cancellation because of no payment of annual fees|
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|