(57)【要約】      （修正有）【課題】共有メモリへのアクセスの同期を緩和するプロセッサ、方法及びシステムを提供する。【解決手段】プロセッサ１０１は、メモリ・アクセス同期緩和ロジック１０９を含む。ロジック１０９は、適切な場合に、共有メモリ１１５へのアクセスの同期を緩和する働きをする。例えば、幾つかの実施形態では、ロジック１０９は、プロセッサが緩和メモリ・アクセス同期モードのとき、メモリ・アクセス同期命令（例えば、フェンス／バリア命令１０４、ロック命令１０５、条件付きアクセス命令１０６などのうちの１以上）が、メモリへのアクセスを同期させるのを阻止する。【選択図】図１
2014182795.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
複数の論理プロセッサと、
前記複数の論理プロセッサの第１の論理プロセッサであって、メモリへのアクセスを同期させるメモリ・アクセス同期命令を含むソフトウェアを実行する第１の論理プロセッサと、
前記プロセッサが緩和メモリ・アクセス同期モードのときに、前記メモリ・アクセス同期命令が前記メモリへのアクセスを同期させるのを阻止するメモリ・アクセス同期緩和ロジックとを含むプロセッサ。
【請求項２】
前記プロセッサは、前記プロセッサが前記緩和メモリ・アクセス同期モードであることを示す１以上のアーキテクチャ可視ビットを有する、請求項１に記載のプロセッサ。
【請求項３】
前記１以上のアーキテクチャ可視ビットが、ソフトウェアにアクセスして、前記ソフトウェアに、前記プロセッサが緩和メモリ・アクセス同期モードであることを示すように前記１以上のアーキテクチャ可視ビットを修正させることができる、請求項２に記載のプロセッサ。
【請求項４】
前記１以上のアーキテクチャ可視ビットが、前記メモリに対応し、更に、他の第２のメモリに対応する別の組の１以上のアーキテクチャ可視ビットを含む、請求項２または３に記載のプロセッサ。
【請求項５】
前記メモリ・アクセス同期命令が、フェンス命令とバリア命令から選択され、前記メモリ・アクセス同期緩和ロジックが、前記メモリ・アクセス同期命令をノーオペレーション（ＮＯＰ）に変換するロジックを含む、請求項１から４のいずれか１項に記載のプロセッサ。
【請求項６】
前記メモリ・アクセス同期命令が、フェンス命令とバリア命令から選択され、前記メモリ・アクセス同期緩和ロジックが、フェンス操作とバリア操作の対応する一方の実行を省略するためにメモリ・サブシステムのロジックを含む、請求項１から５のいずれか１項に記載のプロセッサ。
【請求項７】
前記メモリ・アクセス同期命令が、条件付きロード命令と条件付きストア命令から選択された条件付きメモリ・アクセス命令を含み、前記メモリ・アクセス同期緩和ロジックが、前記条件付きメモリ・アクセス命令を対応する無条件メモリ・アクセス命令に変換するロジックを含む、請求項１から６のいずれか１項に記載のプロセッサ。
【請求項８】
前記メモリ・アクセス同期命令が、リード・モディファイ・ライト命令、コンペア・アンド・スワップ命令、テスト・アンド・セット命令、及び１対のロードリンク／ストア条件付き命令のストア条件命令から選択され、前記メモリ・アクセス同期緩和ロジックが、前記メモリ・アクセス同期命令をストア命令とライト命令から選択された命令に変換するロジックを含む、請求項１から７のいずれか１項に記載のプロセッサ。
【請求項９】
前記メモリ・アクセス同期命令が、条件付き分岐命令を含み、前記メモリ・アクセス同期緩和ロジックは、前記プロセッサが緩和メモリ・アクセス同期モードのときに前記条件付き分岐を特定の方法で予測させる分岐プレディクタのロジックを含む、請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１０】
プロセッサにおける方法であって、
複数の論理プロセッサのうちの第１の論理プロセッサのための１組の命令を取り出す段階であって、前記１組の命令が、メモリへのアクセスを同期させるメモリ・アクセス同期命令を含む段階と、
前記メモリ・アクセス同期命令の前記同期を考慮せずに前記第１の論理プロセッサから前記メモリにアクセスする段階とを含む方法。
【請求項１１】
前記プロセッサが緩和メモリ・アクセス同期モードであることを示す１以上のアーキテクチャ可視ビットを確認することによって、前記プロセッサが、前記緩和メモリ・アクセス同期モードであることを判定する段階を更に含む、請求項１０に記載の方法。
【請求項１２】
前記プロセッサが緩和メモリ・アクセス同期モードであることを示すように前記１以上のアーキテクチャ可視ビットを修正するソフトウェアを更に含む、請求項１１に記載の方法。
【請求項１３】
前記メモリ・アクセス同期命令が前記メモリへの前記アクセスを同期させるのを阻止する段階と更に含む、請求項１０から１２のいずれか１項に記載の方法。
【請求項１４】
取り出しが、更に、フェンス命令とバリア命令から選択された前記メモリ・アクセス同期命令を取り出すことを含み、更に、前記メモリ・アクセス同期命令をノーオペレーション（ＮＯＰ）に変換することを含む、請求項１０から１３のいずれか１項に記載の方法。
【請求項１５】
前記メモリ・アクセス同期命令が、フェンス命令とバリア命令から選択された命令を含み、更に、フェンス操作とバリア操作の対応する一方を実行することを省略することを含む、請求項１０から１４のいずれか１項に記載の方法。
【請求項１６】
前記取り出しが、リード・モディファイ・ライト命令、コンペア・アンド・スワップ命令、テスト・アンド・セット命令、及びロードリンク／ストア条件付き対の命令のストア条件命令から選択された命令である前記メモリ・アクセス同期命令を取り出すことを含み、更に、前記条件付きメモリ・アクセス命令を、ストア命令とライト命令から選択された命令に変換することを含む、請求項１０から１５のいずれか１項に記載の方法。
【請求項１７】
前記取り出しが、条件付きロード命令と条件付きストア命令から選択された条件付きメモリ・アクセス命令である前記メモリ・アクセス同期命令を取り出すことを含み、更に、前記条件付きメモリ・アクセス命令を対応する無条件メモリ・アクセス命令に変換することを含む、請求項１０から１６のいずれか１項に記載の方法。
【請求項１８】
前記取り出しが、条件付き分岐命令である前記メモリ・アクセス同期命令を取り出すことを含み、更に、前記プロセッサが緩和メモリ・アクセス同期モードであることに基づいて前記条件付き分岐を予測することを含む、請求項１０から１７のいずれか１項に記載の方法。
【請求項１９】
命令を処理するシステムであって、
インターコネクトと、
前記インターコネクトと結合されたプロセッサと、
前記インターコネクトと結合され、命令を記憶する動的ランダム・アクセス・メモリ（ＤＲＡＭ）とを有し、
前記命令は、機械によって実行されたときに、前記機械に、
前記プロセッサの複数の論理プロセッサのうちの第１の論理プロセッサを、緩和メモリ・アクセス同期モードで動作させることを決定することと、
前記第１の論理プロセッサが前記緩和メモリ・アクセス同期モードで動作されることを示すように、前記プロセッサの１以上のアーキテクチャ可視ビットを修正することを含む操作を実行させ、
前記緩和メモリ・アクセス同期モードで動作されるとき、前記第１の論理プロセッサが、メモリ・アクセス同期命令がメモリへのアクセスを同期させるのを阻止するシステム。
【請求項２０】
前記命令は、オペレーティング・システムの命令を含む、請求項１９に記載のシステム。
【請求項２１】
前記命令は、前記第１の論理プロセッサが前記メモリ・アクセス同期命令がアクセスを同期させるのを阻止する前記メモリに、他の論理プロセッサがアクセスしないときに、前記第１の論理プロセッサを前記緩和メモリ・アクセス同期モードで動作させることを前記機械に決定させる命令を含む、請求項１９または２０に記載のシステム。
【請求項２２】
プログラムであって、
コンピュータによって実行された場合に、前記コンピュータに、
前記コンピュータの複数の論理プロセッサのうちの第１の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを決定することと、
前記コンピュータの１以上のアーキテクチャ可視ビットを、前記第１の論理プロセッサが、前記緩和メモリ・アクセス同期モードで動作されることを示すように修正することとを含む操作を実行させ、
前記緩和メモリ・アクセス同期モードで動作されたときに、前記第１の論理プロセッサは、メモリ・アクセス同期命令がメモリへのアクセスを同期させるのを阻止するプログラム。
【請求項２３】
前記第１の論理プロセッサが前記メモリ・アクセス同期命令がアクセスを同期させるのを阻止する前記メモリに、他の論理プロセッサがアクセスしないときに、前記第１の論理プロセッサを前記緩和メモリ・アクセス同期モードで動作させることを前記コンピュータに決定させる、請求項２２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載される実施形態は、一般に、プロセッサに関する。詳細には、本明細書に記載される実施形態は、一般に、プロセッサにおけるメモリ・アクセス同期に関する。
【背景技術】
【０００２】
マルチスレッド・ソフトウェア、及び複数のエンティティが同一の共有メモリにアクセスする可能性がある環境で実行される他のソフトウェアは、典型的に、１以上のタイプのメモリ・アクセス同期命令を含む。種々のそのような命令が、当技術分野で知られている。その例には、メモリ・アクセス・フェンス又はバリア命令、ロック命令、条件付きメモリ・アクセス命令などが挙げられる。これらのメモリ・アクセス同期命令は、一般に、共有メモリへのアクセスが適切な順序で行われる（例えば、元のプログラム順序と一致して行われる）ようにし、それにより間違った結果を防ぐために必要とされる。
【図面の簡単な説明】
【０００３】
【図１】コンピューティング・システムの一実施形態のブロック図である。
【図２】共有メモリへのアクセスの同期を緩和する方法の一実施形態のブロック流れ図である。
【図３】緩和同期モードのときにメモリ・アクセス同期命令をノーオペレーション（ＮＯＰ）に復号化する働きをする復号化ロジックの一実施形態のブロック図である。
【図４】緩和同期モードのときにメモリ・アクセス同期を達成しないようにメモリ・アクセス同期命令をリタイアさせる働きをするメモリ・サブシステムの一実施形態のブロック図である。
【図５】緩和同期モードのときに１以上の同期メモリ・アクセス命令を１以上の対応する非同期メモリ・アクセス命令に変換する働きをする復号化ロジックの一実施形態のブロック図である。
【図６】制御フローを条件によりメモリ・アクセス命令及び／又はメモリ・アクセス同期命令に進めるか進めない条件付き分岐命令を含むコードの例のブロック図である。
【図７】アーキテクチャ緩和同期モードに基づいてメモリ・アクセス同期を強化又は緩和する条件付き分岐命令を予測する働きをする分岐プレディクタの一実施形態のブロック図である。
【図８】緩和メモリ・アクセス同期モードを使用するようにプロセッサを構成する方法の一実施形態のブロック流れ図である。
【図９Ａ】本発明の実施形態による代表的なインオーダ・パイプライン及び代表的なレジスタ・リネーミング・アウトオブオーダ発行／実行パイプラインの両方を示すブロック図である。
【図９Ｂ】本発明の実施形態によるプロセッサに含まれるインオーダ・アーキテクチャ・コアの代表的な実施形態と、代表的なレジスタ・リネーミング・アウトオブオーダ発行／実行アーキテクチャ・コアの両方を示すブロック図である。
【図１０Ａ】本発明の実施形態による単一プロセッサ・コアを、そのオンダイ相互接続ネットワークへの接続と、その２レベル（Ｌ２）キャッシュのローカル・サブセットと共に示すブロック図である。
【図１０Ｂ】本発明の実施形態による図１０Ａのプロセッサ・コアの一部の拡張図である。
【図１１】本発明の実施形態による複数のコア、統合メモリ・コントローラ、及び統合グラフィックスを有することがあるプロセッサのブロック図である。
【図１２】本発明の一実施形態によるシステムのブロック図である。
【図１３】本発明の一実施形態による第１の特定の代表的なシステムのブロック図である。
【図１４】本発明の一実施形態による第２の特定の代表的なシステムのブロック図である。
【図１５】本発明の一実施形態によるＳｏＣのブロック図である。
【図１６】本発明の実施形態によりソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するソフトウェア命令コンバータの使用を対照させるブロック図である。
【発明を実施するための形態】
【０００４】
本発明は、発明の実施形態を示すために使用される以下の詳細及び添付図面を参照することによって最もよく理解されることがある。
【０００５】
以下の記述では、多数の特定の詳細（例えば、特定のメモリ同期命令、メモリ同期を緩和する手法、論理実装、マイクロアーキテクチャ詳細、動作シーケンス、論理区分／統合詳細、システム構成要素のタイプ及び相互関係など）が説明される。しかしながら、本発明の実施形態が、これらの特定の詳細なしに実施されることがあることを理解されたい。他の例では、この説明の理解を不明瞭にしないようにするため、周知の回路、構造及び技術は詳細に示されない。
【０００６】
図１は、プロセッサ１０１とメモリ１１４を含むコンピューティング・システム１００の一実施形態のブロック図である。様々な実施形態では、コンピューティング・システムは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ノートブック・コンピュータ、タブレット・コンピュータ、ネットブック、スマートフォン、携帯情報端末、携帯電話、サーバ、ネットワーク装置（例えば、ルータ又はスイッチ）、モバイル・インターネットデバイス（ＭＩＤ）、メディア・プレイヤ、スマート・テレビ、セットトップ・ボックス、ビデオゲーム・コントローラ、又は少なくとも１つのプロセッサと少なくとも１つのメモリを有する他の電子装置を表わすことがある。メモリ１１４は、同じタイプ又は異なるタイプの１以上のメモリ素子を含むことがある。プロセッサとメモリは、従来の結合機構１１３によって（例えば、１以上のインターコネクト、バス、ハブ、メモリ・コントローラ、チップセット構成要素などを介して）結合されるか、又は他の方法で互いに通信する。一般に、当該技術分野で知られている従来の結合機構が適切である。
【０００７】
幾つかの実施形態では、プロセッサは、汎用プロセッサでよい。例えば、プロセッサは、一般にコンピュータ・システム内の中央処理装置（ＣＰＵ）として使用される汎用プロセッサでよい。他の実施形態では、プロセッサは、専用プロセッサでよい。適切な専用プロセッサの例には、ほんの一例として、通信プロセッサ、ネットワーク・プロセッサ、暗号プロセッサ、グラフィック・プロセッサ、コプロセッサ、埋込み型プロセッサ、及びデジタル・シグナル・プロセッサ（ＤＳＰ）が挙げられるが、これらに限定されない。プロセッサは、様々な複雑命令セット・コンピューティング（ＣＩＳＣ）プロセッサ、様々な縮小命令セット・コンピューティング（ＲＩＳＣ）プロセッサ、様々な超長命令語（ＶＬＩＷ）プロセッサ、これらの様々な複合物、又は全く他のタイプのプロセッサのいずれでもよい。
【０００８】
プロセッサ１０１には、所望の数のコア、ハードウェア・スレッド、ハードウェア・スレッド・ユニット、ハードウェア・スレッド・スロット、ハードウェア実行コンテキスト、又は他の処理要素若しくは論理プロセッサが挙げられる。用語「コア」は、多くの場合、集積回路上に配置されて、専用実行資源と関連付けられた個々のアーキテクチャ状態（例えば、実行状態）を維持できるロジックを指す。これと対照的に、用語「ハードウェア・スレッド」は、多くの場合、集積回路に配置されて、使用する実行資源へのアクセスを共有する独立アーキテクチャ状態を維持できるロジックを指す。特定の資源が、アーキテクチャ状態によって共有され、他の資源が、アーキテクチャ状態に割り当てられるときは、コアとハードウェア・スレッドの境界線は明確でなくなる。しかしながら、コアとハードウェア・スレッドは、多くの場合、オペレーティング・システムからは個別の処理要素又は論理プロセッサと見なされる。オペレーティング・システムは、一般に、各コア上のスレッド若しくはプロセス、ハードウェア・スレッド、ハードウェア・スレッド・ユニット、ハードウェア・スレッド・スロット、ハードウェア実行コンテキスト、又は他の処理要素若しくは論理プロセッサを個々にスケジューリングすることができる。換言すると、処理要素又は論理プロセッサは、一実施形態では、ソフトウェア・スレッド、オペレーティング・システム、アプリケーション、他のコードなどのコードと個々に関連付けることができる任意のオンダイ・プロセッサ・ロジックを表わすことがある。幾つかの実施形態では、処理要素又は論理プロセッサは、広義には、状態を保持することができ、またコードと個々に関連付けることができるロジックを表わすことがある。
【０００９】
示された実施形態では、プロセッサは、第１の論理プロセッサ１０２−１〜第Ｎの論理プロセッサ１０２−Ｎを含む。数Ｎは、特定の実装に適した任意の数でよい。例えば、数Ｎは、一般に、２〜約数百の範囲、更にグラフィック・プロセッサとチップマルチ・プロセッサの場合には数千でもよい。第１の論理プロセッサ１０２−１は、命令処理パイプライン１０８を含む。命令処理パイプラインには、一般に、例えば、命令フェッチロジック、命令復号化ロジック、命令実行ロジックなどの従来の命令処理パイプライン・ロジックが挙げられる。また、他の論理プロセッサはそれぞれ、命令処理パイプライン（単純にするために図示されない）を含んでもよい。コア又は他の論理プロセッサはそれぞれ、シングルスレッドでもマルチスレッドでもよい。様々な実施形態では、コア又は他の論理プロセッサは、対称コアでもよく、非対称コア（例えば、様々なハードウェア資源、更には様々な命令セットを有する異種コア）でもよく、又は一部が対称で他が非対称でもよい。
【００１０】
メモリ１１４にはソフトウェア１１６が記憶される。ソフトウェアは、例えば、１以上のオペレーティング・システム（ＯＳ）１１７と１以上のアプリケーション１１８を含んでもよい。動作中、ソフトウェアの一部分が、プロセッサ１０１にロードされプロセッサによって実行されてもよい。一例として、様々なプロセス又はスレッドが、異なる論理プロセッサ１０２上でスケジューリングされてもよい。図示されたように、第１の論理プロセッサ１０２−１は、実行可能ソフトウェア１０３を有してもよい。同様に、少なくとも時々には、他の論理プロセッサが、実行可能ソフトウェア（図示せず）を有してもよい。実行可能ソフトウェアは、論理プロセッサの命令セット・アーキテクチャ（ＩＳＡ）の命令を含んでもよい。これらのＩＳＡ命令は、マクロ命令、機械レベル命令、又はアセンブリ言語命令と呼ばれることがある。実行可能ソフトウェアは、メモリ１１４にアクセスする１以上のメモリ・アクセス命令１１９を含むことがある。例えば、実行可能ソフトウェアは、共有メモリからデータをロード／読み取る１以上のロード／リード命令、及び／又は共有メモリにデータをストア／書き込む１以上のストア／ライト命令を含んでもよい。これらの命令は、様々な意味があり、様々な名前で知られる。これらの命令の例には、移動命令、ロード／移動及び複製命令、ロード複数命令、記憶複数命令、収集命令、拡散命令などが挙げられるが、これらに限定されない。
【００１１】
また、少なくとも時々、他の論理プロセッサ（例えば、第Ｎの論理プロセッサ１０２−Ｎ）が、ロードされ実行中の実行可能ソフトウェアを有することがある（図示せず）。同様に、この実行可能ソフトウェアは、メモリ１１４にアクセスするために使用される１以上のメモリ・アクセス命令を有することがある。少なくとも時々、共有メモリ１１５（例えば、メモリ１１４の一部）は、論理プロセッサのうちの少なくとも２つによって共有されてもよい。複数の論理プロセッサが、共有メモリにアクセスしているとき、一般には、実行可能ソフトウェア内の適切な位置で、メモリ・アクセスを同期させてメモリ・アクセスが適切な順序になるようにする（例えば、元のプログラム順序と一致して行われる）ことが適切である。場合によっては、論理プロセッサの１以上が、命令をアウトオブオーダに実行してもよい。様々な論理プロセッサが異なる周波数又は他の速度で動作する可能性がある。幾つかの実施形態では、例えば、１以上のコプロセッサ、入出力（Ｉ／Ｏ）装置、又はシステム内の他の装置など、プロセッサ１０１上にない（例えば、同じダイ又はチップ上にない）１以上の外部装置が、共有メモリにアクセスする可能性もある。プロセッサが、比較的強力なメモリ順序付けモデルを有し、論理プロセッサ間の明確な同期プリミティブなしにメモリ・アクセスを受けることができる場合でも、そのような外部装置の可能性があるときには同期が適切なことが多い。
【００１２】
適切な同期メカニズムが使用されない場合は、共有メモリ１１５へのメモリ・アクセスは、意図された順序と異なる（例えば、元のプログラム順序と一致しない）順序で行われる可能性があり、それにより、計算上間違った結果になる可能性がある。プログラムが、第１の論理プロセッサに所定の記憶位置にある値「Ａ」を読み取らせる単純な例を想定し、値「Ａ」を値「Ｂ」に加えると、和「Ａ＋Ｂ」が所定の記憶位置にライトバックされ、第Ｎの論理プロセッサが、所定の記憶位置から「Ａ＋Ｂ」を読み出す。この例では、代わりに、第Ｎの論理プロセッサが、どういう理由であれ、所定の記憶位置から値「Ａ」を読み取った後で、和「Ａ＋Ｂ」がその所定の記憶位置に書き込まれた場合は、計算上間違った結果となる可能性がある。そのようなオカレンスを防ぐために、複数のエンティティが同じ共有メモリにアクセスする可能性がある環境で実行されるマルチスレッドソフトウェアや他のソフトウェアは、メモリ・アクセス同期メカニズム（例えば、１以上のメモリ・アクセス同期命令）を含む。
【００１３】
図１を再び参照すると、実行可能ソフトウェア１０３は、可能なタイプのメモリ・アクセス同期命令の様々な例を含む。示された実施形態では、メモリ・アクセス同期命令には、メモリ・アクセスを条件付きで保護する（例えば、メモリ・アクセスを条件付きで飛び越すか又は飛び越さない）ために、１以上のメモリ・アクセス・フェンス及び／又はメモリ・アクセス・バリア命令１０４、１以上のメモリロック命令１０５、１以上の条件付きメモリ・アクセス命令１０６、及び１以上の条件付き分岐命令１０７を含む。これら及び他のタイプのメモリ・アクセス同期命令及びメカニズムの様々な例が開発された。
【００１４】
フェンス及び／又はバリア命令は、一般に、プロセッサにメモリ・アクセス順序付けの制約を強化させる。例えば、フェンス命令は、プログラム順序においてフェンス命令の前に行われる所定のタイプの特定のメモリ・アクセス操作が、プログラム順序においてフェンス／バリア命令の後で所定のタイプのメモリ・アクセス操作の前に実行されることを保証してもよい。一例として、インテルＩＡ−３２アーキテクチャは、ストア操作をシリアル化する（例えば、プログラム順序においてＳＦＥＮＣＥ命令の前のストアが、ＳＦＥＮＣＥ命令の後のストアの前に実行されるようにする）ＳＦＥＮＣＥ（ストア・フェンス）命令、ロード操作をシリアル化する（例えば、プログラム順序においてＬＦＥＮＣＥ命令の前のロードが、ＬＦＥＮＣＥ命令の後のロードの前に実行されるようにする）ＬＦＥＮＣＥ（ロードフェンス）命令、ロード及びストア操作をシリアル化する（例えば、プログラム順序においてＭＦＥＮＣＥ命令の前のロードとストアが両方とも、ＭＦＥＮＣＥ命令の後のロードとストアの前に実行されるようにする）ＭＦＥＮＣＥ（メモリ・フェンス）命令を含む。
【００１５】
更に、テキサス・インスツルメンツ（ＴＩ）から入手可能なＯＭＡＰＴTM３や他のマルチメディア・アプリケーション・プロセッサは、データ・メモリ・バリア（ＤＭＢ）、データ同期バリア（ＤＳＢ）、及び命令同期バリア（ＩＳＢ）タイプの命令を実行する。ＤＭＢ命令は、ＤＭＢの前の全ての明示的データ・メモリ転送が、ＤＭＢの後の後続データ・メモリ転送の前に完了するようにする。ＤＳＢ命令は、ＤＳＢの前の全ての明示的データ・メモリ転送が、ＤＳＢが実行された後の命令の前に完了するようにする。ＩＳＢ命令は、ＩＳＢの前の全てのコンテキスト変換操作の効果が、後続の命令によって認識されるようにする。更に、ＴＩから入手可能なプロセッサは、ロードリンクとストア条件付き（ＬＬ／ＳＣ）の１対の命令を実行する。ロードリンク命令は、記憶位置の現在値を読み取るために使用されることがある。ストア条件付き命令は、ロードリンク命令に続き、ロードリンク命令以後に記憶位置に変更が行なわれていない場合に、その記憶位置に新しい値を記憶することがある。また、これら及びその他のアーキテクチャは、一般に、アトミック・リード・モディファイ・ライト命令、コンペア・アンド・スワップ命令、コンペア・アンド・スワップ・ダブル命令、コンペア・アンド・エクスチェンジ命令、テスト・アンド・セット命令、コンペア・アンド・セット命令、フェッチ・アンド・アド命令などの１以上の変形を有する。例えば、リード・モディファイ・ライト命令は、記憶位置を読み取り、その記憶位置に新しい値（例えば、新しい値、又はリード値の関数若しくは導関数）を書き込んでもよい。例えば、コンペア・アンド・スワップ・アトミック命令は、記憶位置の内容を所定の値とアトミックに比較し、それらの内容が同じ場合にその記憶位置の内容を所定の新しい値に修正する。
【００１６】
これらのメモリ・アクセス同期命令／メカニズムは、一般に、適切なメモリ・アクセス順序を保証し間違った結果を防ぐために必要に応じて評価される。しかしながら、メモリ・アクセス同期命令／メカニズムは、一般に、性能を低下させる傾向があるオーバヘッド又は負担（tax）となる。一方、そのような命令を実行するために特定の量の時間（例えば、クロックサイクル）、パイプライン資源、及び電力がかかる。更に、そのような命令の幾つかは、命令が順序変更され順不同に実行される程度を制限する傾向があり、これにより、アウトオブオーダ実行の利益が制限される傾向がある。適正なメモリ・アクセス順序付けを保証するには、一般にメモリ・アクセス同期命令をより自由に使用する必要があるので、特に、弱いか又は比較的弱いメモリ順序付けモデルを有するプロセッサでは、そのような負担又はオーバヘッドが目立つことがある。したがって、特に、弱いメモリ・アクセス順序付けモデルを有するプロセッサの場合、そのようなメモリ・アクセス同期命令は、性能を低下させかつ／又は消費電力を増やす傾向がある。
【００１７】
幾つかの実施形態では、メモリ・アクセス同期メカニズムは、性能を高めかつ／又は消費電力を減らすために適切な場合に選択的に緩和されることがある（例えば、同期の量が減らされることがある）。例えば、幾つかの実施形態では、共有メモリ１１５へのメモリ同期のそのような緩和は、１つの論理プロセッサ（例えば、第１の論理プロセッサ１０２−１）だけが共有メモリ１１４にアクセスしているときに適切なことがある。論理プロセッサは、システム内の１以上の他のエンティティが、共有メモリへのアクセスを潜在的に確認することができ、またその共有メモリへのアクセスと同期が必要なときに、同期メカニズムを選択的に使用することがある。例えば、システム内で単一スレッドだけが動作している場合、そのスレッドが動作している論理プロセッサは、典型的には、その単一スレッドが共有メモリの正しいビューを見ていること、したがって単一スレッドが、メモリ・アクセス同期を強化する性能及び電力負担を負う必要がないことを固有に保証する。より正確に言うと、プロセッサは、性能を改善しかつ／又は消費電力を減らすために緩和同期モードで動作してもよい。例えば、緩和同期モードのとき、命令は、メモリ・アクセス同期命令に対して順序変更されて、メモリ・アクセス同期命令は、その他の方法では通常通り許可されなくなる。
【００１８】
図１を再び参照すると、プロセッサ１０１は、メモリ・アクセス同期緩和ロジック１０９を含む。ロジック１０９は、適切な場合に、共有メモリ１１５へのアクセスの同期を緩和する働きをする。例えば、幾つかの実施形態では、ロジック１０９は、プロセッサが緩和メモリ・アクセス同期モードのとき、メモリ・アクセス同期命令（例えば、フェンス／バリア命令１０４、ロック命令１０５、条件付きアクセス命令１０６などのうちの１以上）が、メモリへのアクセスを同期させるのを阻止することがある。それ以外のとき、プロセッサは、共有メモリへのアクセスの同期を緩和しないようにすることがある（例えば、メモリ・アクセス同期命令／メカニズムを実質的に従来の方式で処理してもよい）。幾つかの実施形態では、プロセッサ１０１は、必要に応じて、アーキテクチャ緩和同期モードを有してもよい。幾つかの実施形態では、プロセッサは、アーキテクチャ緩和メモリ・アクセス同期モードを示す１以上のアーキテクチャ・ビット１１０を有してもよい。メモリ・アクセス同期ロジック１０９は、１以上のアーキテクチャ・ビット１１０が、アーキテクチャ緩和同期モードを示すときに、共有メモリへのアクセスの同期を選択的に緩和してもよい。図示されたように、幾つかの実施形態では、プロセッサが緩和同期モードのとき、第１の論理プロセッサ（例えば、スレッドが実行している）が、共有メモリ１１５への緩和（例えば、少なくとも部分的に同期されていない）アクセス１１１を実行してもよい。幾つかの実施形態では、他の論理プロセッサは、プロセッサが緩和同期モードのときに共有メモリ１１５にアクセスしなくてもよい１１２。
【００１９】
幾つかの実施形態では、アクセスの同期を緩和することは、メモリ・アクセス同期命令／メカニズム（例えば、フェンス命令、バリア命令、ロック命令など）を無視することを含むことがある。幾つかの実施形態では、アクセスの同期を緩和することは、メモリ・アクセス同期命令／メカニズムを対応する／類似した非同期メモリ・アクセス命令／メカニズムに変換することを含むことがある（例えば、条件付きメモリ・アクセス命令が、無条件メモリ・アクセス命令に変換されてもよい）。幾つかの実施形態では、アクセスの同期を緩和することは、分岐するか又は飛び越す条件付き分岐命令を、メモリ・アクセス命令に対して特定の適切な方法で予測する（例えば、同期が強制されないようにかつ／又は共用データ衝突の可能性がないように予測する）ことを含むことがある。
【００２０】
幾つかの実施形態では、１以上のアーキテクチャ・ビット１１０は、アーキテクチャ可視かつ／又はオペレーティング・システムや他のソフトウェアから可視でもよい。ビットは、プロセッサ（即ち、第１の論理プロセッサ）がアーキテクチャ緩和同期モードかどうかを示すように構成することができる。例えば、一実施形態では、ビットは、プロセッサが緩和同期モードであることを示す第１の値を有してもよく（例えば、単一のアーキテクチャ可視の緩和同期モード・ビットが、二進数１に設定される）、ビットは、プロセッサが緩和同期モードでないことを示す第２の異なる値を有してもよい（例えば、単一ビットが二進数０にクリアされる）。他の実施形態では、複数のアーキテクチャ・ビット（例えば、様々な対応する共有メモリ部分用に異なるアーキテクチャ・ビット、様々な論理プロセッサ又はスレッド用の異なるアーキテクチャ・ビットなど）があってもよい。例えば、これらのビットは、アーキテクチャ可視又はアーキテクチャ・レジスタ（例えば、ページ・テーブル・ベース・レジスタ、別の制御又はコンフィグレーション・レジスタなど）に含まれてもよい。
【００２１】
例えばオペレーティング・システム、アプリケーション・ソフト、ソフトウェアなどのシステム内の適切なエンティティは、必要に応じて、これらのビットを、特定のアクティビティ、どのスレッドが実行されているか、及びシステム内でどのメモリが共有されているかに応じて構成してもよい。例えば、オペレーティング・システムは、単一スレッドがシステム内で動作していると判定した後、１つのスレッドだけが特定の共有メモリにアクセスすることを判定した後、他のスレッドが共有メモリ又は実行スレッドを監視していないと判定した後、同期命令／メカニズムが必要ないことを判定した後、又はアーキテクチャ緩和同期モードになることが適切又は許容可能であると他の方法で判定した後で、アーキテクチャ緩和同期モードになることを決定してもよい。
【００２２】
記述を不明瞭にしないように、比較的単純なプロセッサ１０１を示し述べてきた。他の実施形態では、プロセッサは、必要に応じて、例えば、命令取出しユニット、命令スケジューリング・ユニット、分岐予測ユニット、命令及びデータキャッシュ、命令及びデータ変換索引バッファ、プリフェッチ・バッファ、マイクロ命令キュー、マイクロ命令シーケンサ、バス・インタフェース・ユニット、２レベル以上のキャッシュ、リタイアメント・ユニット、レジスタ・リネーミング・ユニット、他の従来の構成要素、及びこれらの様々な組み合わせなど、他の周知の構成要素を含んでもよい。プロセッサ内には構成要素の事実上多数の様々な組み合わせ及び構成があり、また実施形態は、特定の組み合わせ又は構成にも限定されない。プロセッサは、１つの集積回路、又は１組の１以上の半導体ダイ又はチップを表わすことがある（例えば、単一のダイ又はチップ、又は複数のダイ又はチップを含むパッケージ）。幾つかの実施形態では、プロセッサは、システム・オン・チップ（ＳｏＣ）及び／又はチップ多重プロセッサ（ＣＭＰ）を表わすことがある。
【００２３】
図２は、共有メモリへのアクセスの同期を緩和する方法２２０の一実施形態のブロック流れ図である。幾つかの実施形態では、図２の操作及び／又は方法は、図１の装置によって及び／又は図１の装置内で実行されることがある。また、装置に関して本明細書で述べる構成要素、特徴及び特定の詳細は、必要に応じて、装置によって及び／又は装置内で実施形態において実行されることがある操作及び／又は方法に当てはまる。あるいは、図２の操作及び／又は方法は、類似の装置又は全く異なる装置によって実行されかつ／又はその装置内で実行されてもよい。更に、図１の装置は、図２と同じ操作及び／若しくは方法、図２と類似の操作及び／若しくは方法、又は図２と全く異なる操作及び／若しくは方法を実行してもよい。
【００２４】
方法は、ブロック２２１で、第１の論理プロセッサのための１組の命令を取り出すことを含む。論理プロセッサは、プロセッサの複数の論理プロセッサのうちの１つでよい。幾つかの実施形態では、１組の命令は、メモリへのアクセスを同期させる少なくとも１つのメモリ・アクセス同期命令を含んでもよい。様々な実施形態では、メモリ・アクセス同期命令は、フェンス命令、バリア命令、ロック命令、条件付きメモリ・アクセス命令、又はメモリ・アクセスに関する分岐に使用される条件付き分岐命令を含んでもよい。
【００２５】
方法は、ブロック２２２で、メモリ・アクセス同期命令の同期を考慮することなく第１の論理プロセッサからメモリにアクセスすることを含む。幾つかの実施形態では、第１の論理プロセッサは、メモリ・アクセス同期命令と関連した同期を無視するか、注意していないか、考慮しないか、監視しないか、フィルタリングするか、防止するか、阻止するか、停止するか、又は他の方法で考慮しないことがある。例えば、幾つかの実施形態では、メモリ・アクセス同期命令は、ノーオペレーション（ＮＯＰ）に復号化されるか又は他の方法で変換される。別の例として、幾つかの実施形態では、メモリ・アクセス同期命令は、非同期命令に復号化されるか又は他の方法で変換される。別の例として、幾つかの実施形態では、プロセッサのロジックは、メモリ・アクセス同期に影響を与えないようにメモリ・アクセス同期命令を無視するかフィルタリングしてもよい。メモリ・アクセス同期命令を考慮せずに論理プロセッサを動作させることは、性能を改善しかつ／又は消費電力を削減するのに役立つことがあり好都合である。
【００２６】
前述のように、幾つかの実施形態において、アクセスの同期を緩和することは、メモリ・アクセス同期命令（例えば、フェンス命令、バリア命令、ロック命令など）を無視することを含んでもよい。プロセッサがそのような同期命令を無視するために使用することがある様々なマイクロアーキテクチャ方法がある。
【００２７】
図３は、プロセッサが緩和同期モードのときに、特定タイプのメモリ・アクセス同期命令をノーオペレーション（ＮＯＰ）に復号化する働きをする復号化ロジック３３０の一実施形態のブロック図である。幾つかの実施形態では、図３の復号化ロジックは、図１のプロセッサに含まれてもよくかつ／又は図２の方法で使用されてもよい。あるいは、図３の復号化ロジックは、類似又は異なるプロセッサに含まれてもよくかつ／又は類似又は異なる方法で使用されてもよい。更に、図１のプロセッサ及び／又は図２の方法は、図３と類似又は異なるロジックを使用してもよい。
【００２８】
復号化ロジックは、復号化ユニット又は復号器と呼ばれることもある。復号器は、マイクロコード読み取り専用メモリ（ＲＯＭ）、ルックアップテーブル、ハードウェア実装、プログラマブルロジック・アレイ（ＰＬＡ）、及び当該技術分野で既知の復号器を実現するために使用される他の機構を含むがこれらに限定されない様々な機構を使用して実現されてもよい。
【００２９】
動作中、アセンブリ命令やマクロ命令などの比較的高レベルの命令が、命令復号化ロジックに提供されてもよい。例えば、命令は、命令取出しユニット、命令キューなどから復号化ロジックに提供されてもよい。図に示されたように、命令は、１以上のタイプのメモリ・アクセス命令３０３（例えば、ロード命令、ストア命令、収集命令など）、１以上のタイプのメモリ・フェンス及び／又はメモリ・バリア命令３０４、及び１以上のタイプのロック命令３０５を含んでもよい。
【００３０】
メモリ・アクセス命令３０３を復号化するときと、メモリ・アクセス同期に使用されない様々な他の命令（例えば、従来の算術、論理、また他の命令）を復号化するとき、復号化ロジックは、プロセッサが緩和同期モードかどうかにかかわらず、実質的に従来通り動作してもよい。復号化ロジックは、これらの相対的に高レベルの命令を、１以上の対応するマイクロ命令、マイクロオペレ−ション、マイクロコード・エントリポイント、又は復号化された命令の操作を一般に実施する相対的に低レベル（例えば、回路レベル又はハードウェアレベル）の命令又は制御信号に復号化してもよい。
【００３１】
これと対照的に、プロセッサが緩和同期モードのとき、復号化ロジックは、特定タイプのメモリ・アクセス同期命令をノーオペレーション（ＮＯＰ）に復号化するか他の方法で変換する働きをしてもよい。図示されたように、幾つかの実施形態において、復号化ロジックは、緩和同期モードと結合されてもよくかつ／又は緩和同期モードを認識してもよい。前述したように、このモードは、１以上のアーキテクチャ可視ビットであってもよく、このアーキテクチャ可視ビットは、プロセッサを緩和同期モードにし緩和同期モードでなくすために、例えばオペレーティング・システムや他のソフトウェアによって設定又はクリアされてもよい。プロセッサが、緩和同期モードでないとき、復号化ロジックは、そのようなメモリ・アクセス同期命令を実質的に従来通り復号化してもよい。即ち、フェンス命令、バリア命令、ロック命令などは、パイプラインによって送られて意図されたフェンス、バリア又はロックを実現するマイクロオペレ−ション又は他の命令又は制御信号に復号化されてもよい。しかしながら、幾つかの実施形態では、プロセッサが緩和同期モードのとき、復号化ロジックは、特定タイプのメモリ・アクセス同期命令をノーオペレーション（ＮＯＰ）に復号化してもよい。図示されたように、幾つかの実施形態では、フェンス及び／又はバリア命令は、ＮＯＰとして復号化されてもよい。例えば、ＭＦＥＮＣＥ、ＳＦＥＮＣＥ、又はＬＦＥＮＣＥマクロ命令は、そのようなマクロ命令が従来通り復号化される命令又は制御信号ではなくＮＯＰに復号化されてもよい。更に、幾つかの実施形態では、ロック命令は、ＮＯＰとして復号化されてもよい。ＮＯＰは、操作を有効に実行しかつ／又はメモリ・アクセス同期を実行してもよい。プロセッサ・パイプラインは、実質的に、これらのＮＯＰを黙って無視してもよい。このようにして、復号化ロジックは、プロセッサが緩和同期状態のときに、フェンス、バリア、及びロック命令、又はこれらの少なくとも一部分を選択的にフィルタリングしてもよい。これは、性能を改善しかつ／又は消費電力を削減するのに役立つことがあり好都合である。
【００３２】
復号化ロジックが、全てのフェンス、バリア及び／又はロックをＮＯＰに復号化する必要がないことを理解されたい。より正確に言うと、幾つかの実施形態では、１以上のフェンス命令及び／又は１以上のバリアの命令及び／又は１以上のロック命令が、ＮＯＰに復号化されてもよい。同期の緩和レベルは、性能を改善しかつ／又は電力を削減する目的を様々なレベルの部分的同期を保持する目的と釣りあわせるために、実施形態によって異なってもよい。幾つかの実施形態では、あるタイプの命令（例えば、同期にとって重要なタイプ及び／又は性能又は電力に強く影響を及ぼすタイプ）は、ＮＯＰとして復号化され、別のタイプは復号化されないことがある。例えば、あるタイプのフェンス又はバリア（例えば、ＬＦＥＮＣＥ）は、ＮＯＰとして復号化されることがあり、別のタイプ（例えば、ＭＦＥＮＣＥ）は復号化されないことがある。別の例として、場合によって、ロックではなくフェンス又はバリアが、ＮＯＰとして復号化されてもよく、この逆でもよい。したがって、同期の緩和レベルは、適応性があり、実装の特定の目的に適するように変更されてもよい。
【００３３】
他の実施形態では、そのような命令をＮＯＰに変換するために、メモリ・アクセス同期命令をＮＯＰに変換する復号器ではなく、他の命令変換ロジックが使用されてもよい。適切な命令変換ロジックの例には、命令エミュレーション・ロジック、命令トランスレーション・ロジック、命令モーフ・ロジック、命令解釈ロジック、及びこれらの組み合わせが挙げられるが、これらに限定されない。
【００３４】
図４は、プロセッサが緩和同期モードのときに、メモリ・アクセス同期を行わないように特定のタイプのメモリ・アクセス同期命令をリタイアさせる働きをするメモリ・サブシステム４３７の一実施形態のブロック図である。幾つかの実施形態では、図４のメモリ・サブシステムは、図１のプロセッサに含まれてもよくかつ／又は図２の方法に使用されてもよい。あるいは、図４のメモリ・サブシステムは、類似又は異なるプロセッサに含まれてもよくかつ／又は類似又は異なる方法に使用されてもよい。更に、図１のプロセッサ及び／又は図２の方法は、図４と類似又は異なるメモリ・サブシステムを使用してもよい。
【００３５】
前述のように、復号化ロジック４３０は、命令復号化ロジックに提供されることがあるアセンブリ命令やマクロ命令などの相対的に高レベルの命令を受け取ることがある。これらの命令には、１以上のタイプのメモリ・アクセス命令４０３（例えば、ロード命令、ストア命令、収集命令など）、１以上のタイプのメモリ・フェンス及び／又はメモリ・バリア命令４０４、並びに１以上のタイプのロック命令４０５が挙げられる。幾つかの実施形態では、復号化ロジックは、プロセッサが緩和同期モードかどうかにかかわらず、これらの命令のそれぞれを実質的に従来通り復号化してもよい。
【００３６】
メモリ・サブシステム４３７は、対応する復号化命令又は制御信号を受け取ってもよい。図示されたように、幾つかの実施形態において、メモリ・サブシステムは、プロセッサと結合され、かつ／又はプロセッサがオプションのアーキテクチャ緩和同期モード４１０かどうかを認識することがある。復号化されたメモリ・アクセス同期命令又は制御信号を処理するとき、メモリ・サブシステムは、プロセッサが緩和同期モードかどうかを確認してもよい（例えば、１以上のアーキテクチャ・ビットを確認する）。プロセッサが緩和同期モードでないとき、メモリ・サブシステムは、場合によってメモリ・アクセス同期を実現又は強化することがあるそのような復号化されたメモリ・アクセス同期命令又は制御信号を実質的に従来通り処理してもよい。例えば、ＬＦＥＮＣＥ命令から復号化された制御信号は、メモリ・サブシステムにロードをフェンスさせてもよい。
【００３７】
しかしながら、幾つかの実施形態では、プロセッサが緩和同期モードのとき、メモリ・サブシステムは、そのような復号化されたメモリ・アクセス同期命令又は制御信号を、メモリ・アクセス同期を緩和するように、違うふうに処理してもよい。これが行われる特定の方法は、一般に、同期を実現するために使用される特定のマイクロアーキテクチャ手法に依存する。当該技術に熟練し本開示で利益を有する者は、本発明の範囲が如何なる特定の手法にも限定されないことを理解するであろう。１つの特定の例として、メモリ・サブシステムは、メモリ・アクセス同期を実行させることなくメモリ・アクセス同期命令又は制御信号をリタイア、終了又は破棄してもよい。図示されたように、幾つかの実施形態において、１以上のフェンス及び／又はバリア命令は、メモリ・サブシステムからリタイアされてもよい４３８。更に、幾つかの実施形態では、１以上のロック命令が、メモリ・サブシステムからのリタイアされてもよい４３９。幾つかの実施形態では、メモリ・サブシステムは、実質上、これらの復号化されたメモリ・アクセス同期命令をＮＯＰとして処理してもよい。幾つかの実施形態では、メモリ・サブシステムは、プロセッサが緩和同期モードのとき、そのような復号化されたメモリ・アクセス同期命令を有効かつ選択的にフィルタリングしてもよい。復号化されたメモリ・アクセス命令又は制御信号は、メモリ４１４に至るインターコネクト４１３上の信号又はサイクル４９９として現われてもよく、プロセッサが緩和同期モードかどうかにより、同期されてもよく同期されなくてもよい。
【００３８】
前述のように、全てのフェンス／バリア及び／又はロックが緩和されるように処理されることは必ずしも必要ない。より正確に言うと、幾つかの実施形態では、少なくとも幾つかのメモリ・アクセス同期命令（例えば、少なくとも１つのタイプ）は、緩和同期により処理されてもよい。同期緩和レベルは、柔軟であり、性能を改善しかつ／又は電力を削減する目的を様々なレベルの部分的同期を保持する目的と釣りあわせるために、実施形態によって変更されてもよい。
【００３９】
前述のように、幾つかの実施形態において、メモリ・アクセスの同期を緩和することは、同期メモリ・アクセス命令（又は、命令のセット）を対応する及び／又は類似した非同期メモリ・アクセス命令（又は、命令のセット）に変換することを含んでもよい。例えば、条件付きメモリ・アクセス命令が、対応し／類似した無条件メモリ・アクセス命令に変換されてもよい。
【００４０】
図５は、プロセッサが緩和同期モードのときに、同期メモリ・アクセス命令（又は、命令のセット）を対応しかつ／又は類似した非同期メモリ・アクセス命令（又は、命令のセット）に復号化又は他の方法で変換する働きをする復号化ロジック５３０の一実施形態のブロック図である。幾つかの実施形態では、図５の復号化ロジックは、図１のプロセッサに含まれてもよくかつ／又は図２の方法に使用されてもよい。あるいは、図５の復号化ロジックは、類似又は異なるプロセッサに含まれてよく及び／又は類似又は異なる方法に使用されてもよい。更に、図１のプロセッサ及び／又は図２の方法は、図５のロジックと類似又は異なるロジックを使用してもよい。
【００４１】
復号器は、同期メモリ・アクセス命令（又は、命令のセット）を受け取ってもよい。図示されたように、幾つかの実施形態では、復号化ロジックは、緩和同期モードと結合されかつ／又は緩和同期モードを認識してもよい。幾つかの実施形態では、同期メモリ・アクセス命令は、例えば条件付きロードや条件付きストアなどの条件付きメモリ・アクセス命令を表わしてもよい。他の実施形態では、命令の同期メモリ・アクセス・セットは、ロードリンクとストア条件付き（ＬＬ／ＳＣ）の１対の命令を表わしてもよい。ロードリンクとストア条件付き（ＬＬ／ＳＣ）の１対の命令は、幾つかのマルチスレッドアーキテクチャでは、同期を達成するために使用される。ロードリンク命令は、記憶位置の現在値を読み取るために使用されることがある。ストア条件命令は、ロードリンク命令の後に続き、ロードリンク命令以後その記憶位置に変更が行なわれていない場合に、その記憶位置に新しい値を記憶することがある。他の実施形態は、他のロックフリー・アトミック・リード・モディファイ・ライト命令／操作に関係する。他の実施形態では、命令の同期されたメモリ・アクセス・セットは、トランザクション同期拡張（ＴＳＸ）又はトランザクション・メモリ・サポート命令を表わすことがある。適切な命令の更に他の例には、コンペア・アンド・スワップ命令、ダブル・コンペア・アンド・スワップ命令、Ｎコンペア・アンド・スワップ命令などが挙げられる。
【００４２】
プロセッサが緩和同期モードでないとき、復号化ロジックは、同期メモリ・アクセス命令（又は、命令のセット）を実質的に従来通り復号化してもよい。しかしながら、幾つかの実施形態では、プロセッサが緩和同期モードのとき、復号化ロジックは、同期メモリ・アクセス命令（又は、命令のセット）を、対応しかつ／又は類似した非同期メモリ・アクセス命令（又は、命令のセット）に復号化するか別の方法で変換してもよい。例えば、一実施形態では、条件付きメモリ・アクセス命令（例えば、条件付きロード又は条件付きストア）は、対応する／類似した無条件メモリ・アクセス（例えば、無条件ロード又は無条件ストア）命令又は制御信号に変換されてもよい。別の例として、ロック移動レジスタ命令が、移動レジスタ命令に変換されてもよい。別の例として、一実施形態では、ロードリンク及びストア条件付き（ＬＬ／ＳＣ）の１対の命令が、単一の無条件ストア命令又は制御信号に変換されてもよい。一態様では、これは、マクロ融合型変換でよい。更に別の実施形態では、リード・モディファイ・ライト操作は、より単純な書き込み命令又は制御信号に変換されてもよい。有利には、より複雑な同期命令は、より単純な非同期命令又は制御信号に変換されてもよい。
【００４３】
前述のように、全ての同期メモリ・アクセス命令（又は、命令のセット）が、対応かつ／又は類似した非同期メモリ・アクセス命令（又は、命令のセット）に変換されなくてもよく、より正確に言えば、少なくとも１つが変換されればよい。緩和レベルは、適応性があり、特定の実装にカスタマイズされてもよい。また、他の実施形態では、これらの命令を変換するために、復号器変換ではなく他の命令変換ロジックが使用されてもよいことを理解されたい。適切な命令変換ロジックの例には、命令エミュレーション・ロジック、命令トランスレーション・ロジック、命令モーフ・ロジック、命令解釈ロジック、及びこれらの組み合わせがあるが、これらに限定されない。
【００４４】
コードは、多くの場合、１以上の様々なタイプの条件付き分岐命令を含む。条件付き分岐命令は、実行の制御フローを２つの可能な方向のどちらかの方向に条件付きで分岐させてもよい。これらの２つの方向は、しばしば「取得経路」と「非取得経路」と呼ばれる。「非取得経路」は、一般に、実行されているコードにおける次の連続した命令に至り、一方、「取得経路」は、一般に、１以上の間にある命令を介して連続しない分岐ターゲット命令に飛び越すか又は分岐する。分岐命令を受けるかどうかは、一般に、命令と関連した条件の評価（例えば、条件が満たされるかどうか）に依存する。
【００４５】
インテル・アーキテクチャは、条件付き飛越し命令の幾つかの適切な例を含む。適切な「条件を満たした場合に飛び越し」（ｊｃｃ）命令の幾つかの代表的な例には、（ａ）（キャリーフラグ＝０とゼロフラグ＝０）より上の場合にショートジャンプする命令（ＪＡ）、（ｂ）キャリー（キャリーフラグ＝１）の場合にショートジャンプする命令（ＪＣ）、（ｃ）０（ゼロフラグ＝１）の場合にニアジャンプニアする命令（ＪＺ）、（ｄ）非ゼロ（ゼロフラグ＝０）の場合にショートジャンプする命令（ＪＮＺ）、（ｅ）（キャリーフラグ＝１又はゼロフラグ＝１）以下の場合にニアジャンプする命令（ＪＢＥ）、及び（ｆ）（ゼロフラグ＝１又は符号フラグ≠ＯＦ）以上の場合にニアジャンプする命令（ＪＮＧ）が挙げられるが、これらに限定されない。他のアーキテクチャでは他の例が知られる。
【００４６】
性能を改善するために、ほとんどの最新のプロセッサは、条件付き分岐の実際の方向が決定される前に条件付き分岐の方向を予測する分岐プレディクタを有する。一般に、条件付き分岐の実際の方向は、最終的には、パイプラインの後続段で条件が実際に評価されるまで分からない。しかしながら、分岐プレディクタは、分岐予測機構又はロジックを使用して条件付き分岐の方向を予測することができる（例えば、過去の履歴に基づいて）。これは、プロセッサの性能を改善するのに役立つことがある。分岐プレディクタがない場合、プロセッサは、条件付き分岐命令と関連した条件の評価を待った後でないと追加の命令をパイプラインに取り出せない可能性がある。しかしながら、分岐プレディクタは、条件付き分岐の最も可能性の高い方向を予測することによって、そのような時間の浪費を回避するのに役立つことがある。次に、予測された分岐方向を使用して、追加命令を取り出しその追加命令を推論的に実行してもよい。
【００４７】
最終的に、予測された分岐方向は、正しいか間違いかが判明する。予測された分岐方向が正しいことが判明した場合、推論的に実行された命令の結果及び／又は状態が利用されることがある。この場合、一般に、普通ならば条件付き分岐の実際の方向の評価を待っている間に活動停止状態になるか少なくとも十分に利用されなくなるパイプライン段の利用が増えるので、プロセッサの性能と速度が向上する。しかしながら、代わりに、予測された分岐方向が間違っていた（例えば、分岐プレディクタによって間違って予測された）ことが判明した場合、条件付き分岐命令を超えて推論的に実行された命令による結果及び／又は状態は、典型的には、廃棄されなければならなくなる。多くの場合、パイプラインはフラッシュされ（パイプライン内で現在進行中の命令を廃棄する）、実行は、間違って予測され、代わりの現在分かっている分岐方向で再開された条件付き分岐まで戻される。この結果は、一般に、性能の不利益とエネルギーの不利益の両方を招く傾向があるので、望ましくない。
【００４８】
図６は、制御フローがメモリ・アクセス命令及び／又はメモリ・アクセス同期命令６５１に進むことを条件付きで許可するか許可しない条件付き分岐命令６５０を含むコードの例のブロック図である。条件付き分岐命令は、「取得経路」と「非取得経路」を有する。取得経路は、条件付き分岐命令によって示された順方向分岐ターゲット命令６５２に至る。例えば、条件付き分岐命令は、分岐ターゲット命令を示す（例えば、分岐ターゲット命令へのオフセットを指定する）引数又はソースオペランドを有することがある。非取得経路は、プログラム順序で条件付き分岐命令に連続的に従い、条件付き分岐命令と分岐ターゲット命令との間にある１組の１以上の命令に至る。幾つかの実施形態では、これらは、メモリ・アクセス命令及び／又はメモリ・アクセス同期命令６５１を含むことがある。
【００４９】
図７は、アーキテクチャ緩和同期モード７１０に基づいてメモリ・アクセス同期を強化又は緩和する条件付き分岐命令を予測する働きをする分岐プレディクタ７５５の一実施形態のブロック図である。分岐プレディクタは、条件付き分岐命令を受け取ることがある。幾つかの実施形態では、条件付き分岐命令は、メモリ・アクセス命令及び／又はメモリ・アクセス同期命令へのフロー移動を条件により制御するために使用されてもよい。分岐プレディクタは、アーキテクチャ緩和同期モード７１０と結合される。分岐プレディクタは、アーキテクチャ緩和同期モードに基づいて実行されるか又はされない条件付き分岐命令を予測する働きをしてもよい。幾つかの実施形態では、この予測は、メモリ・アクセス同期を強化又は緩和するために行われることがある。例えば、アーキテクチャ緩和同期モードのとき、分岐プレディクタは、メモリ・アクセス同期を緩和するように条件付き分岐命令を予測してもよい。あるいは、アーキテクチャ緩和同期モードでないとき、分岐プレディクタは、メモリ・アクセス同期を強化するように条件付き分岐命令を予測してもよい。
【００５０】
図８は、緩和メモリ・アクセス同期モードを使用するようにプロセッサを構成する方法８６０の一実施形態のブロック流れ図である。幾つかの実施形態では、方法８６０は、プロセッサ上で実行されるオペレーティング・システム、アプリケーション又は他のソフトウェアの命令及び／又はモジュールによって行なわれてもよい。幾つかの実施形態では、図８の動作及び／又は方法は、図１の装置によってかつ／又は図１の装置内で行なわれてもよい。また、装置に関して本明細書で述べる構成要素、特徴、及び特定の任意の詳細は、必要に応じて、実施形態において装置によって実行されかつ／又は装置内で実行されることがある操作及び／又は方法に適用される。あるいは、図８の動作及び／又は方法は、類似又は全く異なる装置によって実行されかつ／又は類似又は全く異なる装置内で実行されてもよい。更に、図１の装置は、図８のものと同じ操作及び／若しくは方法、類似した操作及び／若しくは方法、又は全く異なる操作及び／若しくは方法を実行してもよい。
【００５１】
方法は、ブロック８６１で、複数の論理プロセッサのうちの第１の論理プロセッサを、緩和メモリ・アクセス同期モードで動作させることを可能に決定することを含む。幾つかの実施形態では、第１の論理プロセッサがアクセスしているメモリの部分に現在他の論理プロセッサがアクセスしていないとき、第１の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることが決定されてもよい。
【００５２】
方法は、また、ブロック８６２で、１以上のアーキテクチャ可視ビット（例えば、プロセッサのアーキテクチャ可視レジスタ内の）を、第１の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを示すように修正することを含む。あるいは、必要に応じて、非アーキテクチャ・ビットが使用されてもよい。幾つかの実施形態では、緩和メモリ・アクセス同期モードで動作させるとき、第１の論理プロセッサは、メモリ・アクセス同期命令が、共有メモリ（例えば、現在第１の論理プロセッサだけが使用している前に共有されていたメモリ部分）へのアクセスを同期するのを阻止する働きをしてもよい。
【００５３】
代表的なコア・アーキテクチャ、プロセッサ及びコンピュータアーキテクチャ  プロセッサ・コアは、様々な方法で、様々な目的のため、様々なプロセッサに実現されてもよい。例えば、そのようなコアの実装には、１）汎用計算のための汎用インオーダ・コア、２）汎用計算のための高性能汎用アウトオブオーダ・コア、３）主にグラフィックス及び／又は科学（スループット）計算のための専用コアが挙げられる。様々なプロセッサの実装には、１）汎用計算のための１以上の汎用インオーダ・コア及び／又は汎用計算に意図された１以上の汎用アウトオブオーダ・コアを含むＣＰＵ、及び２）主にグラフィクス及び／又は科学（スループット）のための１以上の専用コアを含むコプロセッサが挙げられる。そのような様々なプロセッサは、様々なコンピュータ・システム・アーキテクチャとなり、そのようなコンピュータ・システム・アーキテクチャには、１）ＣＰＵと別のチップ上のコプロセッサ、２）ＣＰＵと同じパッケージ内の別のダイ上のコプロセッサ、３）ＣＰＵと同じダイ上のコプロセッサ（その場合、そのようなコプロセッサは、統合グラフィックス及び／又は科学（スループット）ロジックなどの専用ロジック又は専用コアと呼ばれることがある）、及び４）同じダイ上に前述のＣＰＵ（アプリケーション・コア又はアプリケーション・プロセッサと呼ばれることがある）、前述のコプロセッサ、及び追加の機能を含むことがあるチップ上のシステムが挙げられる。次に代表的なコア・アーキテクチャについて述べ、その後で、代表的なプロセッサ及びコンピュータアーキテクチャについて述べる。
【００５４】
代表的なコア・アーキテクチャ。インオーダ及びアウトオブオーダ・コア・ブロック図。図９Ａは、本発明の実施形態による代表的なインオーダ・パイプライン及び代表的なレジスタ・リネーミング・アウトオブオーダ発行／実行パイプラインの両方を示すブロック図である。図９Ｂは、本発明の実施形態によるプロセッサに含まれるインオーダ・アーキテクチャ・コアの代表的な実施形態と、代表的なレジスタ・リネーミング・アウトオブオーダ発行／実行アーキテクチャ・コアの両方を示すブロック図である。図９Ａ〜図９Ｂの実線の枠は、インオーダ・パイプラインとインオーダ・コアを示し、一方、追加された点線の枠は、レジスタ・リネーミング・アウトオブオーダ発行／実行パイプライン及びコアを示す。インオーダ態様がアウトオブオーダ態様のサブセットの場合のアウトオブオーダ態様について説明する。
【００５５】
図９Ａでは、プロセッサ・パイプライン９００が、フェッチ段階９０２、長さ復号化段階９０４、復号化段階９０６、割り付け段階９０８、リネーミング段階９１０、スケジューリング（ディスパッチ又は発行としても知られる）段階９１２、レジスタリード／メモリリード段階９１４、実行段階９１６、ライトバック／メモリライト段階９１８、例外処理段階９２２、及びコミット段階９２４を含む。
【００５６】
図９Ｂは、実行エンジン・ユニット９５０に結合されたフロントエンド・ユニット９３０を含むプロセッサ・コア９９０を示し、これらの両方が、メモリ・ユニット９７０に結合される。コア９９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複雑命令セット・コンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、又はハイブリッド又は代替コアタイプでよい。更に別の選択肢として、コア９９０は、例えば、ネットワーク又は通信コア、圧縮エンジン、コプロセッサ・コア、汎用コンピューティング・グラフィック処理装置（ＧＰＧＰＵ）コア、グラフィック・コアなどの専用コアでよい。
【００５７】
フロントエンド・ユニット９３０は、命令キャッシュ・ユニット９３４に結合された分岐予測ユニット９３２を含み、命令キャッシュ・ユニット９３４は、命令変換索引バッファ（ＴＬＢ）９３６に結合され、命令変換索引バッファ（ＴＬＢ）９３６は、命令取出しユニット９３８に結合され、命令取出しユニット９３８は、復号化ユニット９４０に結合される。復号化ユニット９４０（又は、復号器）は、命令を復号化し、出力として１以上のマイクロオペレ−ション、マイクロコード・エントリ・ポイント、マイクロ命令、他の命令、又は他の制御信号を生成し、これらの出力は、元の命令から復号化されるか、元の命令を他の方法で反映させるか、元の命令から導出される。復号化ユニット９４０は、様々な異なる機構を使用して実現されてもよい。適切な機構の例には、ルックアップテーブル、ハードウェア実装、プログラマブルロジック・アレイ（ＰＬＡ）、マイクロコード読み取り専用メモリなど（ＲＯＭ）が挙げられるが、これらに限定されない。一実施形態では、コア９９０には、特定のマクロ命令のマイクロコードを記憶するマイクロコードＲＯＭ又は他の媒体が挙げられる（例えば、復号化ユニット９４０内又は他の状況ではフロントエンド・ユニット９３０内）。復号化ユニット９４０は、実行エンジン・ユニット９５０内でリネーム／アロケータ・ユニット９５２に結合される。
【００５８】
実行エンジン・ユニット９５０は、リタイアメント・ユニット９５４及び１組の１以上のスケジューラ・ユニット９５６に結合されたリネーム／アロケータ・ユニット９５２を含む。スケジューラ・ユニット９５６は、予約ステーションや中央命令ウィンドウなどを含む任意数の異なるスケジューラを表す。スケジューラ・ユニット９５６は、物理レジスタ・ファイル・ユニット９５８に結合される。物理レジスタ・ファイル・ユニット９５８はそれぞれ、１以上の物理レジスタ・ファイルを表し、物理レジスタ・ファイルはそれぞれ、スカラ整数、スカラ浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点、状態（例えば、実行される次の命令のアドレスの命令ポインタ）などの１以上の異なるデータ・タイプを記憶する。一実施形態では、物理レジスタ・ファイル・ユニット９５８は、ベクトル・レジスタ・ユニット、ライトマスク・レジスタ・ユニット、及びスカラ・レジスタ・ユニットを含む。レジスタ・ユニットは、アーキテクチャ・ベクトル・レジスタ、ベクトル・マスク・レジスタ、及び汎用レジスタを提供してもよい。物理レジスタ・ファイル・ユニット９５８は、レジスタ・リネーミング及びアウトオブオーダ実行が実施されることがある様々な方法を示すためにリタイアメント・ユニット９５４によって重ねられる（例えば、リオーダ・バッファ及びリタイアメント・レジスタ・ファイルの使用、将来ファイル、履歴バッファ、及びリタイアレジスタ・ファイルの使用、レジスタマップ及びレジスタのプールの使用など）。リタイアメント・ユニット９５４と物理レジスタ・ファイル・ユニット９５８は、実行クラスタ９６０に結合される。実行クラスタ９６０は、１組の１以上の実行ユニット９６２と、１組の１以上のメモリ・アクセス・ユニット９６４とを含む。実行ユニット９６２は、様々なタイプのデータ（例えば、スカラ浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点）に様々な演算（例えば、シフト、加法、減法、乗法）を実行することがある。幾つかの実施形態は、特定の関数又は関数の組に割り当てられた幾つかの実行ユニットを含んでもよく、他の実施形態は、全ての関数を全て実行する１つの実行ユニット又は複数の実行ユニットだけを含んでもよい。スケジューラ・ユニット９５６、物理レジスタ・ファイル・ユニット９５８及び実行クラスタ９６０は、特定の実施形態が、特定タイプのデータ／操作のための個別のパイプラインを作成するので、場合によっては複数であるように示される（例えば、スカラ整数パイプライン、スカラ浮動小数点／パック整数／パック浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、及び／又はメモリ・アクセス・パイプラインであり、これらのパイプラインはそれぞれ、独自のスケジューラ・ユニット、物理レジスタ・ファイル・ユニット、及び／又は実行クラスタを有し、別個のメモリ・アクセス・パイプラインの場合には、このパイプラインの実行クラスタだけがメモリ・アクセス・ユニット９６４を有する特定の実施形態が実現される。）また、別個のパイプラインが使用される場合、これらのパイプラインの１以上が、アウトオブオーダ発行／実行であり残りがインオーダでよいことを理解されたい。
【００５９】
１組のメモリ・アクセス・ユニット９６４は、メモリ・ユニット９７０に結合され、メモリ・ユニット９７０は、レベル２（Ｌ２）キャッシュ・ユニット９７６に結合されたデータ・キャッシュ・ユニット９７４に結合されたデータＴＬＢユニット９７２を含む。１つの代表的な実施形態では、メモリ・アクセス・ユニット９６４は、ロード・ユニット、ストア・アドレス・ユニット、及びストア・データ・ユニットを含むことがあり、それぞれのユニットは、メモリ・ユニット９７０内のデータＴＬＢユニット９７２に結合される。命令キャッシュ・ユニット９３４は、更に、メモリ・ユニット９７０内の２レベル（Ｌ２）キャッシュ・ユニット９７６に結合される。Ｌ２キャッシュ・ユニット９７６は、１以上の他のレベルのキャッシュに結合され、最終的にメイン・メモリに結合される。
【００６０】
一例として、代表的なレジスタ・リネーミング・アウトオブオーダ発行／実行コア・アーキテクチャは、パイプライン９００を、１）命令取出しユニット９３８が、フェッチ及び長さ復号化段階９０２及び９０４を実行し、２）復号化ユニット９４０が、復号化段階９０６を実行し、３）リネーム／アロケータ・ユニット９５２が、割り付け段階９０８とリネーミング段階９１０を実行し、４）スケジューラ・ユニット９５６が、スケジュール段階９１２を実行し、５）物理レジスタ・ファイル・ユニット９５８とメモリ・ユニット９７０が、レジスタリード／メモリリード段階９１４を実行し、実行クラスタ９６０が、実行段階９１６を実行し、６）メモリ・ユニット９７０と物理レジスタ・ファイル・ユニット９５８が、ライトバック／メモリライト段階９１８を実行し、７）各種ユニットが、例外処理段階９２２に関係することがあり、８）リタイアメント・ユニット９５４と物理レジスタ・ファイル・ユニット９５８が、コミット段階９２４を実行するように実現することがある。
【００６１】
コア９９０は、本明細書で述べた命令を含む１以上の命令セット（例えば、ｘ８６命令セット（新しいバージョンを加えた幾つかの拡張を有する）と、カリフォルニア州サニーヴェールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セットと、カリフォルニア州サニーヴェールのＡＲＭ  ＨｏｌｄｉｎｇｓのＡＲＭ命令セット（ＮＥＯＮなどの任意の追加の拡張を有する）に対応してもよい。一実施形態では、コア９９０は、パック・データ命令セット拡張（例えば、ＡＶＸ１、ＡＶＸ２）に対応しているロジックを含み、それにより、多くのマルチメディア・アプリケーションによって使用される操作をパック・データを使用して実行することが可能になる。
【００６２】
コアが、マルチスレッディング（複数の平行な組の操作又はスレッドを実行する）に対応することがあり、またマルチスレッディングを、時間スライス・マルチスレッディング、同時マルチスレッディング（物理コアが同時にマルチスレッディングするスレッド毎に単一の物理コアが論理コアを提供する）、又はこれらの組み合わせ（例えば、Ｉｎｔｅｌ（登録商標） Ｈｙｐｅｒｔｈｒｅａｄｉｎｇ技術など、時間スライス・取り出し及び復号化並びにその後の同時マルチスレッディング）を含む様々な方法で行うことができることを理解されたい。
【００６３】
レジスタ・リネーミングが、アウトオブオーダ実行の文脈で説明されるが、レジスタ・リネーミングが、インオーダ・アーキテクチャで使用されてもよいことを理解されたい。また、プロセッサの示された実施形態が、別個の命令及びデータ・キャッシュ・ユニット９３４／９７４及び共有Ｌ２キャッシュ・ユニット９７６を含むが、代替実施形態は、例えば、レベル１（Ｌ１）内部キャッシュや複数レベルの内部キャッシュなど、命令とデータ両方のために単一内部キャッシュを有してもよい。幾つかの実施形態では、システムは、内部キャッシュと、コア及び／又はプロセッサの外部の外部キャッシュとの組み合わせを含んでもよい。あるいは、全てのキャッシュが、コア及び／又はプロセッサの外部でもよい。
【００６４】
特定の代表的なインオーダ・コア・アーキテクチャ。  図１０Ａ〜図１０Ｂは、特定の代表的なインオーダ・コア・アーキテクチャのブロック図を示し、このコアは、チップ内の幾つかの論理ブロック（同一タイプ及び／又は異なるタイプの他のコアを含む）のうちの１つである。論理ブロックは、高帯域相互接続ネットワーク（例えば、リング・ネットワーク）を介して、用途により、幾つかの固定関数ロジック、メモリ入出力インタフェース、及び他の必要な入出力ロジックと通信する。
【００６５】
図１０Ａは、本発明の実施形態による単一プロセッサ・コアのブロック図であり、単一プロセッサ・コアは、オンダイ相互接続ネットワーク１００２に接続され、レベル２（Ｌ２）キャッシュ１００４のローカルサブセットを有する。一実施形態では、命令復号器１０００は、パック・データ命令セット拡張を有するｘ８６命令セットに対応している。Ｌ１キャッシュ１００６は、スカラ及びベクトルユニット内へのキャッシュ・メモリへの低遅延アクセスを可能にする。一実施形態では（設計を単純化するため）、スカラ・ユニット１００８とベクトル・ユニット１０１０が、別個のレジスタ・セット（それぞれスカラ・レジスタ１０１２とベクトル・レジスタ１０１４）を使用し、スカラ・レジスタ１０１２とベクトル・レジスタ１０１４の間で転送されたデータは、メモリに書き込まれ、次にレベル１（Ｌ１）キャッシュ１００６からリードバックされ、発明の代替実施形態は、異なる手法を使用してもよい（例えば、単一レジスタ・セットを使用するか、書き込みとリードバックなしに２つのレジスタ・ファイル間でデータを転送させる通信経路を含む）。
【００６６】
Ｌ２キャッシュ１００４のローカル・サブセットは、別個のローカル・サブセット（プロセッサ・コアごとに１つ）に分割されたグローバルＬ２キャッシュの一部である。各プロセッサ・コアは、Ｌ２キャッシュ１００４のプロセッサ・コア自体のローカル・サブセットへの直接アクセス経路を有する。プロセッサ・コアによって読み取られたデータは、そのプロセッサ・コアのＬ２キャッシュ・サブセット１００４に記憶され、そのプロセッサ・コア自体のローカルＬ２キャッシュ・サブセットにアクセスする他のプロセッサ・コアと並列に迅速にアクセスされ得る。プロセッサ・コアによって書き込まれたデータは、そのプロセッサ・コア自体のＬ２キャッシュ・サブセット１００４に記憶され、必要に応じて、他のサブセットからフラッシュされる。リングネットワークは、共用データの一貫性を保証する。リングネットワークは、双方向であり、プロセッサ・コア、Ｌ２キャッシュ、及びその他の論理ブロックなどのエージェントが、チップ内で互いに通信することを可能にする。各リング・データ経路は、１方向につき１０１２ビット幅である。
【００６７】
図１０Ｂは、本発明の実施形態による図１０Ａのプロセッサ・コアの一部の拡張図である。図１０Ｂは、Ｌ１キャッシュ１００４のＬ１データ・キャッシュ１００６Ａ部分と、ベクトル・ユニット１０１０とベクトル・レジスタ１０１４とに関するさらなる詳細を含む。具体的には、ベクトル・ユニット１０１０は、整数、単精度浮動及び倍精度浮動命令のうちの１つ又は複数を実行する１６幅ベクトル処理装置（ＶＰＵ）（１６幅算術論理演算装置（ＡＬＵ）１０２８を参照）である。ＶＰＵは、スイズル・ユニット１０２０によるレジスタ入力のスイズル処理、数値変換ユニット１０２２Ａ〜Ｂによる数値変換、及びメモリ入力上の繰り返しユニット１０２４による繰り返しに対応している。ライトマスク・レジスタ１０２６は、結果のベクトル書き込みの予測を可能にする。
【００６８】
統合メモリ・コントローラ及びグラフィックスを備えたプロセッサ  図１１は、複数のコアを有することができ、統合メモリ・コントローラを有することがあり、本発明の実施形態による統合グラフィックスを有することがあるプロセッサ１１００のブロック図である。図１１の実線の枠は、単一コア１１０２Ａ、システム・エージェント１１１０、１組の１以上のバス・コントローラ・ユニット１１１６を有するプロセッサ１１００を示し、追加した点線の枠は、複数のコア１１０２Ａ〜Ｎ、システム・エージェント・ユニット１１１０内の１組の１以上の統合メモリ・コントローラ・ユニット１１１４、及び専用ロジック１１０８を有する代替プロセッサ１１００を示す。
【００６９】
したがって、プロセッサ１１００の様々な実装は、１）統合グラフィックス及び／又は科学（スループット）ロジック（１以上のコアを含むことがある）であり、コア１１０２Ａ〜Ｎが１以上の汎用コア（例えば、汎用インオーダ・コア、汎用アウトオブオーダ・コア、これら２つの組み合わせ）である、統合専用ロジック１１０８を有するＣＰＵ、２）主にグラフィックス及び／又は科学（スループット）用に意図された多数の専用コアである、コア１１０２Ａ〜Ｎを有するコプロセッサ、及び３）多数の汎用インオーダ・コアである、コア１１０２Ａ〜Ｎを有するコプロセッサを含んでもよい。したがって、プロセッサ１１００は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィック・プロセッサ、ＧＰＧＰＵ（汎用グラフィック処理装置）、高スループット多数統合コア（ＭＩＣ）コプロセッサ（３０個以上のコアを含む）、埋込み型プロセッサなどの、汎用プロセッサ、コプロセッサ、又は専用プロセッサでよい。プロセッサは、１以上のチップ上に実現されてもよい。プロセッサ１１００は、１以上の基板の一部でもよくかつ／又は、例えばＢｉＣＭＯＳ、ＣＭＯＳ、ＮＭＯＳなどの幾つかのプロセス技術のうちのいずれかを使用して１以上の基板上に実現されてもよい。
【００７０】
メモリ階層は、コア内の１レベル以上のキャッシュ、１組又は１以上の共有キャッシュ・ユニット１１０６、１組の統合メモリ・コントローラ・ユニット１１１４に結合された外部メモリ（図示せず）を含む。１組の共有キャッシュ・ユニット１１０６は、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、又は他のレベルのキャッシュ、最終レベル・キャッシュ（ＬＬＣ）、及び／又はこれらの組み合わせなど、１以上の中間レベルキャッシュを含むことがある。一実施形態では、リング式相互接続ユニット１１１２が、統合グラフィック・ロジック１１０８、１組の共有キャッシュ・ユニット１１０６、及びシステム・エージェント・ユニット１１１０／統合メモリ・コントローラ・ユニット１１１４を相互接続するが、代替実施形態は、そのようなユニットを相互接続するために任意数の周知の技術を使用することがある。一実施形態では、１以上のキャッシュ・ユニット１１０６とコア１１０２Ａ〜Ｎとの間に一貫性が維持される。
【００７１】
幾つかの実施形態では、コア１１０２Ａ〜Ｎの１以上は、マルチスレッディングすることができる。システム・エージェント１１１０は、コア１１０２Ａ〜Ｎを調整し動作させる構成要素を含む。システム・エージェント・ユニット１１１０は、例えば、電力制御ユニット（ＰＣＵ）と表示ユニットを含んでもよい。ＰＣＵは、コア１１０２Ａ〜Ｎと統合グラフィック・ロジック１１０８の電力状態を調整するのに必要なロジック及び構成要素でもよく、それらのロジックと構成要素を含んでもよい。表示ユニットは、１以上の外部接続表示装置を駆動するためのものである。
【００７２】
コア１１０２Ａ〜Ｎは、アーキテクチャ命令セットに関して同種でも異種でもよく、即ち、コア１１０２Ａ〜Ｎの複数が、同じ命令セットを実行することができ、他のコア１１０２Ａ〜Ｎが、その命令セットのサブセット又は異なる命令セットを実行できてもよい。
【００７３】
代表的なコンピュータ・アーキテクチャ  図１２〜図１５は、代表的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドＰＣ、携帯情報端末、エンジニアリング・ワークステーション、サーバ、ネットワーク装置、ネットワーク・ハブ、スイッチ、埋込み型プロセッサ、デジタル・シグナル・プロセッサ（ＤＳＰ）、グラフィック装置、ビデオゲーム装置、セットトップ・ボックス、マイクロコントローラ、携帯電話、携帯型メディア・プレーヤ、ハンドヘルド装置、及び様々な他の電子装置のための当該技術で既知の他のシステム設計及び構成も適切である。一般に、本明細書に開示されたようなプロセッサ及び／又は他の実行ロジックを組み込むことができる態様なシステム又は電子装置が適切である。
【００７４】
次に図１２を参照すると、本発明の一実施形態によるシステム１２００のブロック図が示される。システム１２００は、コントローラ・ハブ１２２０に結合された１以上のプロセッサ１２１０，１２１５を含んでもよい。一実施形態では、コントローラ・ハブ１２２０は、グラフィック・メモリ・コントローラ・ハブ（ＧＭＣＨ）１２９０と入出力ハブ（ＩＯＨ）１２５０を含み（別のチップ上にあってもよい）、ＧＭＣＨ１２９０は、メモリ１２４０及びコプロセッサ１２４５が結合されたメモリ及びグラフィック・コントローラを含み、ＩＯＨ１２５０は、入出力（入出力）装置１２６０をＧＭＣＨ１２９０に結合する。あるいは、メモリとグラフィック・コントローラの一方又は両方は、プロセッサ内で一体化され（本明細書に記載されているように）、メモリ１２４０とコプロセッサ１２４５は、プロセッサ１２１０と、ＩＯＨ１２５０を有する単一チップ内のコントローラ・ハブ１２２０に直接結合される。
【００７５】
追加のプロセッサ１２１５の任意の性質を図１２に破線で示す。各プロセッサ１２１０，１２１５は、本明細書で述べた処理コアの１以上を含んでもよく、プロセッサ１１００のどのバージョンでもよい。
【００７６】
メモリ１２４０は、例えば、動的ランダム・アクセス・メモリ（ＤＲＡＭ）、相変化メモリ（ＰＣＭ）、又はこれらの２つの組み合わせでよい。少なくとも１つの実施形態の場合、コントローラ・ハブ１２２０は、フロントサイドバス（ＦＳＢ）などのマルチドロップ・バス、ＱｕｉｃｋＰａｔｈインターコネクト（ＱＰＩ）などポイント・ツー・ポイント・インタフェース、又は類似の接続１２９５を介して、プロセッサ１２１０，１２１５と通信する。
【００７７】
一実施形態では、コプロセッサ１２４５は、例えば、高スループットＭＩＣプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィック・プロセッサ、ＧＰＧＰＵ、埋込み型プロセッサなどの専用プロセッサである。一実施形態では、コントローラ・ハブ１２２０は、統合グラフィック・アクセラレータを含んでもよい。
【００７８】
物理資源１２１０，１２１５の間には、アーキテクチャ特性、マイクロアーキテクチャ特性、温度特性、消費電力特性などを含む長所の測定基準の範囲に関して様々な違いがあり得る。
【００７９】
一実施形態では、プロセッサ１２１０は、一般タイプの制御データ処理操作を制御する命令を実行する。命令にはコプロセッサ命令が埋め込まれてもよい。プロセッサ１２１０は、そのようなコプロセッサ命令を、取り付けられたコプロセッサ１２４５によって実行されるべきタイプのものであると認識する。したがって、プロセッサ１２１０は、そのようなコプロセッサ命令（又は、コプロセッサ命令を表わす制御信号）を、コプロセッサ・バスや他のインターコネクトでコプロセッサ１２４５に出す。コプロセッサ１２４５は、受け取ったコプロセッサ命令を受け入れ実行する。
【００８０】
次に図１３を参照すると、本発明の一実施形態による第１の特定の代表的なシステム１３００のブロック図が示される。図１３に示されたように、多重プロセッサ・システム１３００は、ポイント・ツー・ポイント相互接続システムでよく、ポイント・ツー・ポイントインターコネクト１３５０によって結合された第１のプロセッサ１３７０と第２のプロセッサ１３８０を含む。プロセッサ１３７０及び１３８０はそれぞれ、プロセッサ１１００のどのバージョンでよい。本発明の一実施形態では、プロセッサ１３７０及び１３８０はそれぞれ、プロセッサ１２１０及び１２１５であり、一方、コプロセッサ１３３８は、コプロセッサ１２４５である。別の実施形態では、プロセッサ１３７０及び１３８０はそれぞれ、プロセッサ１２１０とコプロセッサ１２４５である。
【００８１】
プロセッサ１３７０及び１３８０は、それぞれ統合メモリ・コントローラ（ＩＭＣ）ユニット１３７２及び１３８２を含むように示された。プロセッサ１３７０は、また、バスコントローラ・ユニットの一部としてポイント・ツー・ポイント（Ｐ−Ｐ）インタフェース１３７６及び１３７８を含み、同様に、第２のプロセッサ１３８０は、Ｐ−Ｐインタフェース１３８６及び１３８８を含む。プロセッサ１３７０，１３８０は、Ｐ−Ｐインタフェース回路１３７８，１３８８を使用して、ポイント・ツー・ポイント（Ｐ−Ｐ）インタフェース１３５０を介して情報を交換してもよい。図１３に示されたように、ＩＭＣ１３７２及び１３８２は、プロセッサをそれぞれのメモリ（即ち、メモリ１３３２とメモリ１３３４）に結合し、これらのメモリは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部分でよい。
【００８２】
プロセッサ１３７０，１３８０はそれぞれ、ポイント・ツー・ポイント・インタフェース回路１３７６，１３９４，１３８６，１３９８を使用して、個別のＰ−Ｐインタフェース１３５２，１３５４を介して、チップセット１３９０と情報を交換する。チップセット１３９０は、必要に応じて、高性能インタフェース１３３９を介してコプロセッサ１３３８と情報を交換してもよい。一実施形態では、コプロセッサ１３３８は、例えば、高スループットＭＩＣプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィック・プロセッサ、ＧＰＧＰＵ、埋込み型プロセッサなどの専用プロセッサである。
【００８３】
共有キャッシュ（図示せず）が、いずれかのプロセッサ内又は両方のプロセッサの外部に含まれ、更にＰ−Ｐ相互接続を介してプロセッサと接続されてもよく、その結果、いずれか又は両方のプロセッサのローカル・キャッシュ情報が、プロセッサが低電力モードになった場合に共有キャッシュに記憶されることがある。
【００８４】
チップセット１３９０は、インタフェース１３９６を介して第１のバス１３１６に結合されてもよい。一実施形態では、第１のバス１３１６は、周辺構成要素相互接続（ＰＣＩ）バス、又はＰＣＩエクスプレス・バスや別の第３世代入出力相互接続バスなどのバスでもよいが、本発明の範囲は、そのように限定されない。
【００８５】
図１３に示されたように、様々な入出力装置１３１４は第１のバス１３１６に結合されてもよく、バス・ブリッジ１３１８は第１のバス１３１６を第２のバス１３２０に結合する。一実施形態では、コプロセッサ、高スループットＭＩＣプロセッサ、ＧＰＧＰＵ、アクセラレータ（例えば、グラフィック・アクセラレータ、デジタルシグナル処理（ＤＳＰ）ユニットなど）、フィールド・プログラマブル・ゲートアレイ、又は他のプロセッサなどの１以上の追加のプロセッサ１３１５が、第１のバス１３１６に結合される。一実施形態では、第２のバス１３２０は、低ピン・カウント（ＬＰＣ）バスでもよい。種々の装置は、一実施形態では、例えば、キーボード及び／又はマウス１３２２、通信装置１３２７、命令／コード及びデータ１３３０を含むことがある記憶装置１３２８（ディスクドライブや他の大容量記憶装置など）を含む第２のバス１３２０に結合されてもよい。更に、音声入出力１３２４が、第２のバス１３２０に結合されてもよい。他のアーキテクチャが可能であることに注意されたい。例えば、図１３のポイント・ツー・ポイントのアーキテクチャの代わりに、システムは、マルチドロップバスや他のそのようなアーキテクチャを実現してもよい。
【００８６】
次に図１４を参照すると、本発明の一実施形態による第２の特定の代表的なシステム１４００のブロック図が示される。図１３と図１４内の類似の要素は、類似の参照番号を有し、図１３の特定の態様は、図１４の他の態様を不明瞭にしないために図１４から省略されている。
【００８７】
図１４は、プロセッサ１３７０，１３８０がそれぞれ、統合メモリ及び入出力制御ロジック（「ＣＬ」）１３７２及び１３８２を含むことがあることを示す。したがって、ＣＬ１３７２，１３８２は、統合メモリ・コントローラ・ユニットを含み、また入出力制御ロジックを含む。図１４は、メモリ１３３２，１３３４だけがＣＬ１３７２，１３８２に結合されているのではなく、入出力装置１４１４も制御ロジック１３７２，１３８２に結合されていることを示す。レガシ入出力装置１４１５は、チップセット１３９０に結合される。
【００８８】
次に図１５を参照すると、本発明の一実施形態によるＳｏＣ１５００のブロック図が示される。図１１の類似の要素は、同じ参照数字を有する。また、点線の枠は、より高度なＳｏＣの任意の特徴である。図１５では、相互接続ユニット１５０２は、１組の１以上のコア２０２Ａ〜Ｎと共有キャッシュ・ユニット１１０６を含むアプリケーション・プロセッサ１５１０と、システム・エージェント・ユニット１１１０と、バスコントローラ・ユニット１１１６と、統合メモリ・コントローラ・ユニット１１１４と、統合グラフィック・ロジック、画像プロセッサ、音声プロセッサ及びビデオ・プロセッサを含むことがある１組又は１以上のコプロセッサ１５２０と、静的ランダム・アクセス・メモリ（ＳＲＡＭ）ユニット１５３０と、直接メモリ・アクセス（ＤＭＡ）ユニット１５３２と、１以上の外部表示装置に結合する表示ユニット１５４０とに結合される。一実施形態では、コプロセッサ１５２０は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、高スループットＭＩＣプロセッサ、埋込み型プロセッサなどの専用プロセッサを含む。
【００８９】
本明細書に開示された機構の実施形態は、ハードウェア、ソフトウェア、ファームウェア、又そのような実装法の組み合わせで実現されてもよい。本発明の実施形態は、少なくとも１つのプロセッサ、記憶システム（揮発性及び不揮発性メモリ及び／又は記憶素子を含む）、少なくとも１つの入力装置、及び少なくとも１つの出力装置を含むプログラマブル・システム上で実行するコンピュータ・プログラム又はプログラム・コードとして実現されてもよい。
【００９０】
図１３に示されたコード１３３０などのプログラム・コードは、本明細書で述べる機能を実行しかつ出力情報を生成する入力命令に適用されてもよい。出力情報は、既知の方法で、１以上の出力装置に適用されてもよい。この用途のため、処理システムは、例えば、デジタル・シグナル・プロセッサ（ＤＳＰ）、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、又はマイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
【００９１】
プログラム・コードは、処理システムと通信するために高度な手続き型又はオブジェクト指向プログラミング言語で実現されてもよい。プログラム・コードは、必要に応じて、アセンブリ又は機械語で実現されてもよい。実際には、本明細書で述べる機構の範囲は、いかなる特定のプログラミング言語にも限定されない。いかなる場合も、言語は、コンパイル又は解釈された言語でよい。
【００９２】
少なくとも１つの実施形態の１以上の態様は、プロセッサ内の様々なロジックを表す機械可読媒体に記憶された代表的命令によって実現されてもよく、そのような命令は、機械によって読み取られたとき、本明細書で述べた技術を機械に実行させるロジックを作成する。「ＩＰコア」として知られるそのような表現は、有形の機械可読媒体に記憶され、様々な顧客又は製造設備に供給されて、ロジック又はプロセッサを実際に作成する製造機械にロードされる。
【００９３】
そのような機械可読記憶媒体には、ハードディスクなどの記憶媒体、フロッピディスク、光ディスク、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスク書き換え可能（ＣＤ−ＲＷ）及び光磁気ディスクを含む適切な他のタイプの媒体、読み取り専用メモリ（ＲＯＭ）、動的ランダム・アクセス・メモリ（ＤＲＡＭ）、静的ランダム・アクセス・メモリ（ＳＲＡＭ）などのランダム・アクセス・メモリ（ＲＡＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、フラッシュ・メモリ、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、相変化メモリ（ＰＣＭ）、磁気又は光カード、又は電子命令を記憶するのに適した任意の他のタイプの媒体などの半導体装置を含む、機械又は装置によって製造又は形成される物品の持続的で有形の構造物が挙げられるがこれらに限定されない。
【００９４】
したがって、本発明の実施形態は、本明細書で述べる構造、回路、装置、プロセッサ及び／又はシステム機能を定義する命令を含むか設計データ（例えば、ハードウェア記述言語（ＨＤＬ））を含む持続的で有形の機械可読媒体を含む。そのような実施形態は、プログラム製品と呼ばれることもある。
【００９５】
エミュレーション（バイナリ変換、コード・モーフィングなどを含む）  場合によっては、命令をソース命令セットからターゲット命令セットに変換するために命令コンバータが使用されることがある。例えば、命令コンバータは、命令を、コアによって処理される１以上の他の命令に変換するか（例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を使用して）、モーフィングするか、エミュレートするか、他の方法で変換する。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア又はこれらの組み合わせで実現されてもよい。命令コンバータは、オンプロセッサ、オフプロセッサ、又はパートオン及びパートオフプロセッサでよい。
【００９６】
図１６は、本発明の実施形態によりソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するソフトウェア命令コンバータの使用を対照させるブロック図である。示された実施形態では、命令コンバータは、ソフトウェア命令コンバータであるが、代替として、命令コンバータは、ソフトウェア、ファームウェア、ハードウェア、又はその様々な組み合わせで実現されてもよい。図１６は、高水準言語１６０２のプログラムが、ｘ８６コンパイラ１６０４を使用してコンパイルされて、少なくとも１つのｘ８６命令セット・コア１６１６を有するプロセッサによって固有に実行されることがあるｘ８６バイナリ・コード１６０６が生成されることがあることを示す。少なくとも１つのｘ８６命令セット・コア１６１６を有するプロセッサは、（１）インテルｘ８６命令セット・コアの命令セットの大部分を処理するか、（２）少なくとも１つのｘ８６命令セット・コアを有するインテル・プロセッサ上で実行するように設計されたアプリケーション又は他のソフトウェアのオブジェクト・コード・バージョンを適合的に実行することによって、少なくとも１つのｘ８６命令セット・コアを有するインテル・プロセッサと実質的に同じ機能を実行して、少なくとも１つのｘ８６命令セット・コアを有するインテル・プロセッサと実質的に同じ結果を達成することができる、任意のプロセッサを示す。ｘ８６コンパイラ１６０４は、追加のリンク処理によって又は追加のリンク処理なしに、少なくとも１つのｘ８６命令セット・コア１６１６を有するプロセッサ上で実行することができるｘ８６バイナリ・コード１６０６（例えば、オブジェクトコード）を生成する働きをするコンパイラを表わす。同様に、図１６は、高水準言語１６０２のプログラムが、代替の命令セット・コンパイラ１６０８を使用してコンパイルされて、少なくとも１つのｘ８６命令セット・コア１６１４なしのプロセッサ（例えば、カリフォルニア州サニーヴェールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セットを実行しかつ／又はカリフォルニア州サニーヴェールのＡＲＭ  ＨｏｌｄｉｎｇｓのＡＲＭ命令セットを実行するコアを有するプロセッサ）によって固有に実行されることがある代替命令セット・バイナリ・コード１６１０が生成されることがあることを示す。命令コンバータ１６１２は、ｘ８６バイナリ・コード１６０６を、ｘ８６命令セット・コア１６１４なしのプロセッサによって固有に実行されることがあるコードに変換するために使用される。この変換されたコードは、この変換ができる命令コンバータが行うのが難しいので、代替の命令セット・バイナリ・コード１６１０と同じになる可能性は低いが、変換されたコードは、一般的な操作を達成し、代替命令セットからの命令で構成される。したがって、命令コンバータ１６１２は、エミュレーション、シミュレーション又は任意の他のプロセスによって、ｘ８６命令セット・プロセッサ又はコアなしのプロセッサ又は他の電子装置が、ｘ８６バイナリ・コード１６０６を実行することを可能にするソフトウェア、ファームウェア、ハードウェア、又はこれらの組み合わせを表す。
【００９７】
また、図３〜図７のどれかで述べた構成要素、特徴、及び詳細は、必要に応じて、図１〜図２のどれに使用されてもよい。更に、装置のうちのどれかに関して本明細書で述べた構成要素、特徴、及び詳細は、必要に応じて、実施形態においてそのような装置によって実行されかつ／又はそのような装置と共に実行されることがある、本明細書で述べた方法のどれに使用されてもよい。
【００９８】
実施例
以下の例は、更に他の実施形態に関する。例における詳細は、１以上の実施形態のどこに使用されてもよい。
【００９９】
例１は、プロセッサである。プロセッサは、複数の論理プロセッサを含む。プロセッサは、また、複数のプロセッサのうちの第１の論理プロセッサを含み、第１の論理プロセッサは、メモリへのアクセスを同期させるメモリ・アクセス同期命令を含むソフトウェアを実行する。プロセッサは、また、プロセッサが緩和メモリ・アクセス同期モードのときに、メモリ・アクセス同期命令がメモリへのアクセスを同期させるのを阻止するメモリ・アクセス同期緩和ロジックを含む。
【０１００】
例２は、例１の内容を含み、必要に応じて、プロセッサは、プロセッサが緩和メモリ・アクセス同期モードであることを示す１以上のアーキテクチャ可視ビットを有する。
【０１０１】
例３は、例２の内容を含み、必要に応じて、１以上のアーキテクチャ可視ビットが、ソフトウェアにアクセスして、そのソフトウェアに、プロセッサが緩和メモリ・アクセス同期モードであることを示すように１以上のアーキテクチャ可視ビットを修正させることができる。
【０１０２】
例４は、例２の内容を含み、必要に応じて、１以上のアーキテクチャ可視ビットが、メモリに対応し、更に、他の異なるメモリに対応する別の組の１以上のアーキテクチャ可視ビットを含む。
【０１０３】
例５は、例１〜例４のいずれかの内容を含み、必要に応じて、メモリ・アクセス同期命令が、フェンス命令、バリア命令、及びロック命令から選択され、メモリ・アクセス同期緩和ロジックが、メモリ・アクセス同期命令をノーオペレーション（ＮＯＰ）に変換するロジックを含む。
【０１０４】
例６は、例１〜例４のいずれかの内容を含み、必要に応じて、メモリ・アクセス同期命令が、フェンス命令とバリア命令から選択され、メモリ・アクセス同期緩和ロジックは、フェンス操作とバリア操作の対応する一方の実行を省略するメモリ・サブシステムのロジックを含む。
【０１０５】
例７は、例１〜例４のいずれかの内容を含み、必要に応じて、メモリ・アクセス同期命令が、条件付きロード命令と条件付きストア命令から選択された条件付きメモリ・アクセス命令を含み、メモリ・アクセス同期緩和ロジックは、条件付きメモリ・アクセス命令を対応する無条件メモリ・アクセス命令に変換するロジックを含む。
【０１０６】
例８は、例１〜例４のいずれかの内容を含み、必要に応じて、メモリ・アクセス同期命令は、リード・モディファイ・ライト命令、コンペア・アンド・スワップ命令、テスト・アンド・セット命令、及びロード・リンク／ストア条件付き対の命令のストア条件付き命令から選択され、メモリ・アクセス同期緩和ロジックは、メモリ・アクセス同期命令をストア命令とライト命令から選択された命令に変換するロジックを含む。
【０１０７】
例９は、例１〜例４のいずれかの内容を含み、必要に応じて、メモリ・アクセス同期命令が、条件付き分岐命令を含み、メモリ・アクセス同期緩和ロジックは、プロセッサが緩和メモリ・アクセス同期モードのときに条件付き分岐を特定の方法で予測させる分岐プレディクタのロジックを含む。
【０１０８】
例１０は、プロセッサにおける方法である。この方法は、複数の論理プロセッサの第１の論理プロセッサのための１組の命令を取り出すことを含む。命令のセットは、メモリへのアクセスを同期させるメモリ・アクセス同期命令を含む。方法は、また、メモリ・アクセス同期命令の同期を考慮せずに第１の論理プロセッサからメモリにアクセスすることを含む。
【０１０９】
例１１は、例１０の内容を含み、必要に応じて、プロセッサが緩和メモリ・アクセス同期モードであることを示す１以上のアーキテクチャ可視ビットを確認することによってプロセッサが緩和メモリ・アクセス同期モードであることを決定することを含む。
【０１１０】
例１２は、例１１の内容を含み、必要に応じて、プロセッサが緩和メモリ・アクセス同期モードであることを示す１以上のアーキテクチャ可視ビットを修正するソフトウェアを更に含む。
【０１１１】
例１３は、例１０の内容を含み、必要に応じて、更に、メモリ・アクセス同期命令がメモリへのアクセスを同期させるのを阻止することを含む。
【０１１２】
例１４は、例１０の内容を含み、必要に応じて、取り出しが、フェンス命令、バリア命令及びロック命令から選択されたメモリ・アクセス同期命令を取り出すことと、更に、メモリ・アクセス同期命令をノーオペレーション（ＮＯＰ）に変換することを含む。
【０１１３】
例１５は、例１０の内容を含み、必要に応じて、メモリ・アクセス同期命令は、フェンス命令とバリア命令から選択された命令を含み、更に、フェンス操作とバリア操作の対応する一方の実行を省略することを含む。
【０１１４】
例１６は、例１０の内容を含み、必要に応じて、取り出しが、リード・モディファイ・ライト命令、コンペア・アンド・スワップ命令、テスト・アンド・セット命令、及びロードリンク／ストア条件付きペアの命令のストア条件付命令から選択された命令であるメモリ・アクセス同期命令を取り出すことを含み、更に、条件付きメモリ・アクセス命令をストア及びライトから選択された命令に変換することを含む。
【０１１５】
例１７は、例１０の内容を含み、必要に応じて、取り出しは、条件付きロード命令と条件付きストア命令から選択された条件付きメモリ・アクセス命令であるメモリ・アクセス同期命令を取り出すことを含み、更に、条件付きメモリ・アクセス命令を対応する無条件メモリ・アクセス命令に変換することを含む。
【０１１６】
例１８は、例１０の内容を含み、必要に応じて、取り出しは、条件付き分岐命令であるメモリ・アクセス同期命令を取り出すことを含み、更に、緩和メモリ・アクセス同期モードのプロセッサに基づいて条件付き分岐を予測することを含む。
【０１１７】
例１９は、インターコネクトを含む命令を処理するシステムである。システムは、また、インターコネクトと結合されたプロセッサを含む。システムは、また、インターコネクトと結合された動的ランダム・アクセスメモリ（ＤＲＡＭ）を含む。ＤＲＡＭは、機械によって実行されたときに機械に操作を実行させる命令を記憶する。操作は、プロセッサの複数の論理プロセッサのうちの第１の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを決定することを含む。また、操作は、第１の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを示すためにプロセッサの１以上のアーキテクチャ可視ビットを修正することを含む。緩和メモリ・アクセス同期モードで動作されるとき、第１の論理プロセッサは、メモリ・アクセス同期命令がメモリへのアクセスを同期するのを阻止する。
【０１１８】
例２０は、例１９の内容を含み、必要に応じて、命令は、オペレーティング・システムの命令を含む。
【０１１９】
例２１は、例１９〜例２０のいずれかの内容を含み、必要に応じて、命令は、第１の論理プロセッサがメモリ・アクセス同期命令によるアクセスの同期を阻止するメモリに、他の論理プロセッサがアクセスしないときに、第１の論理プロセッサが緩和メモリ・アクセス同期モードで動作させることを機械に決定させる命令を含む。
【０１２０】
例２２は、持続性機械可読記憶媒体を含む製造物である。持続性機械可読記憶媒体は、機械によって実行された場合に機械に操作を実行させる命令を記憶する。操作は、機械の複数の論理プロセッサのうちの第１の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを決定することを含む。操作は、第１の論理プロセッサが緩和メモリ・アクセス同期モードで動作されることを示すために機械の１以上のアーキテクチャ可視ビットを修正することを含む。緩和メモリ・アクセス同期モードで動作されるとき、第１の論理プロセッサは、メモリ・アクセス同期命令がメモリへのアクセスを同期させるのを阻止する。
【０１２１】
例２３は、例２２の内容を含み、必要に応じて、命令は、第１の論理プロセッサがメモリ・アクセス同期命令によるアクセスの同期を阻止するメモリに、他の論理プロセッサがアクセスしないときに、第１の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを機械に決定させる命令を含む。
【０１２２】
例２４は、例２２〜例２３のいずれかの内容を含み、必要に応じて、命令は、オペレーティング・システムの命令を含む。
【０１２３】
例２５は、プロセッサである。プロセッサは、複数の論理プロセッサのうちの第１の論理プロセッサのための１組の命令を取り出す取出しユニットを含む。１組の命令は、メモリへのアクセスを同期させるメモリ・アクセス同期命令を含む。プロセッサは、また、メモリ・アクセス同期命令のメモリ・アクセス同期を阻止する手段を含む。
【０１２４】
例２６は、装置である。装置は、機械の複数の論理プロセッサのうちの第１の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを決定する手段を含む。また、装置は、第１の論理プロセッサが緩和メモリ・アクセス同期モードで動作されることを示す機械の１以上のアーキテクチャ可視ビットを修正する手段を含む。緩和メモリ・アクセス同期モードで動作されるとき、第１の論理プロセッサは、メモリ・アクセス同期命令がメモリへのアクセスを同期するのを阻止する。
【０１２５】
例２７は、例１０〜例１８のいずれかの方法を実行する装置である。
【０１２６】
例２８は、例１０〜例１８のいずれかの方法を実行する手段を含む装置である。
【０１２７】
例２９は、実質的に本明細書に記載されたような方法を実行する装置である。
【０１２８】
例３０は、実質的に本明細書に記載されたような方法を実行する手段を含む装置である。
【０１２９】
説明と請求項では、用語「結合された」及び「接続された」が、それらの派生語と共に使用されることがあった。これらの用語が、互いに同義語として意図されないことを理解されたい。より正確に言うと、特定の実施形態において、「接続された」は、複数の要素が互いに直接物理的又は電気的に接触していることを示すために使用されることがある。「結合された」は、複数の要素が直接物理的又は電気的に接触していることを意味することがある。しかしながら、「結合された」は、また、複数の要素が互いに直接接触していないが、互いに協働又は相互作用することを意味することもある。例えば、構成要素は、１以上の介在構成要素によって結合されてもよい。図では、接続と結合を示すために矢印が使用される。
【０１３０】
説明と請求項では、用語「ロジック」が使用されている。本明細書で使用されるとき、ロジックは、ハードウェア、ファームウェア、ソフトウェア、これらの組み合わせなどのモジュールを含むことがある。ロジックの例には、集積回路、特定用途向け集積回路、アナログ回路、デジタル回路、プログラムドロジック装置、命令を含むメモリ素子などが挙げられる。幾つかの実施形態では、ハードウェアロジックは、トランジスタ及び／又はゲートを潜在的に他の回路構成要素と共に含むことがある。
【０１３１】
用語「及び／又は」が、使用されることがあった。本明細書で使用されるとき、用語「及び／又は」は、一方若しくは他方又はその両方を意味する（例えば、Ａ及び／又はＢは、Ａ若しくはＢ又はＡとＢの両方を意味する）。
【０１３２】
以上の記述では、説明のため、本発明の実施形態の完全な理解を提供するために多数の特定の詳細を説明した。しかしながら、当業者には、１以上の他の実施形態が、そのような特定の詳細のうちの幾つかを用いずに実行され得ることは明らかであろう。述べた特定の実施形態は、本発明を限定するためのものではなく本発明を実施例によって示すために提供される。発明の範囲は、特定の例によってではなく請求項のみにより決定される。他の例では、周知の回路、構造物、装置及び動作は、説明の理解を不明瞭にするのを防ぐためにブロック図形式又は詳細なしに示された。
【０１３３】
適切と考えられる場合、参照番号、又は参照番号の末尾は、対応する要素又は類似の要素を示すために図間で繰り返され、そのような要素は、必要に応じて、特に指定されるか又は他の方法で明らかでない限り、類似又は同じ特徴を有することがある。幾つかの例では、複数の構成要素について述べられており、それらの構成要素は、単一構成要素に組み込まれることがある。他の例では、単一の構成要素について述べられており、構成要素は、複数の構成要素に分割されてもよい。
【０１３４】
種々の動作及び方法について述べた。方法のうちの幾つかは、流れ図で比較的基本的な形で述べられたが、必要に応じて、操作が方法に追加されかつ／又は方法から除去されてもよい。更に、流れ図は、代表的な実施形態による操作の特定の順序を示すが、この特定の順序は例示である。代替実施形態は、必要に応じて、操作を異なる順序で実行し、特定の操作を組み合わせ、特定の操作を重ねてもよい。
【０１３５】
幾つかの実施形態は、機械可読媒体を含む製造物（例えば、コンピュータ・プログラム製品）を含む。媒体は、機械によって読み取り可能な形態で情報を提供（例えば、記憶）するメカニズムを含んでもよい。機械可読媒体は、機械によって実行された場合及び／又は実行されたときに、機械に、本明細書に開示された操作、方法又は技術を実行させかつ／又は機械が実行するようにする働きをする１以上の命令を提供するか記憶してもよい。
【０１３６】
幾つかの実施形態では、機械可読媒体は、有形及び／又は持続性機械可読記憶媒体を含むことができる。例えば、有形及び／又は持続性機械可読記憶媒体には、フロッピ・ディスク、光記憶媒体、光ディスク、光学データ記憶装置、ＣＤＲＯＭ、磁気ディスク、光磁気ディスク、読み取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、動的ＲＡＭ（ＤＲＡＭ）、フラッシュ・メモリ、相変化メモリ、相変化データ記憶材料、不揮発性メモリ、不揮発性データ記憶装置、持続性メモリ、持続性データ記憶装置などが挙げられる。持続性機械可読記憶媒体は、一時的伝搬信号で構成されない。別の実施形態では、機械可読媒体は、一時的機械可読通信媒体（例えば、電気、光、音響又は他の形態の搬送波、赤外線信号、デジタル信号などの伝搬信号）を含んでもよい。
【０１３７】
適切な機械の例には、汎用プロセッサ、専用プロセッサ、命令処理装置、デジタル論理回路、集積回路などが挙げられるが、これらに限定されない。適切な機械の更に他の例には、そのようなプロセッサ、命令処理装置、デジタル論理回路又は集積回路を内蔵するコンピューティング装置や他の電子装置が挙げられる。そのようなコンピューティング装置及び電子装置の例には、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ノートブック・コンピュータ、タブレット・コンピュータ、ネットブック、スマートフォン、携帯電話、サーバ、ネットワーク装置（例えば、ルータとスイッチ）、携帯インターネット機器（ＭＩＤ）、メディア・プレイヤ、スマートテレビ、ネットトップス、セット・トップ・ボックス、及びビデオゲーム・コントローラが挙げられるが、これらに限定されない。
【０１３８】
また、本明細書全体における例えば「一実施形態」、「実施形態」又は「１以上の実施形態」の言及は、本発明の実施に特定の特徴が含まれることがあることを意味することを理解されたい。同様に、説明において、様々な発明態様の開示を効率化し理解を支援するために、様々な特徴が、単一の実施形態、図又は説明にまとめられることがあることを理解されたい。しかしながら、この開示方法は、本発明が各請求項に明示的に列挙されたより多くの特徴を必要とするという意図を表すものと解釈されるべきではない。より正確に言うと、以下の請求項が表すように、発明態様は、単一の開示された実施形態の全ての特徴より少なくてもよい。したがって、これにより、詳細な説明に続く請求項は、この詳細な説明に明示的に組み込まれ、各請求項は、本発明の別個の実施形態として自立している。
【符号の説明】
【０１３９】
１００  コンピューティング・システム  １０１  プロセッサ  １０２  第Ｎの論理プロセッサ  １０３  実行可能ソフトウェア  １０４  フェンス／バリア命令  １０５  ロック命令  １０６  条件付きアクセス命令  １０７  条件付き分岐命令保護アクセス  １０８  命令処理パイプライン  １０９  メモリ・アクセス同期緩和ロジック  １１０  緩和メモリ・アクセス同期モードを示すアーキテクチャ・ビット  １１１  共有メモリへの緩和／非同期アクセス  １１２  共有メモリにアクセスしない他の論理プロセッサ  １１４  メモリ  １１５  共有メモリ  １１６  ソフトウェア  １１７  オペレーティング・システム  １１８  アプリケーション
【図１】
2014182795.tif 000003
【図２】
2014182795.tif 000004
【図３】
2014182795.tif 000005
【図４】
2014182795.tif 000006
【図５】
2014182795.tif 000007
【図６】
2014182795.tif 000008
【図７】
2014182795.tif 000009
【図８】
2014182795.tif 000010
【図９Ａ】
2014182795.tif 000011
【図９Ｂ】
2014182795.tif 000012
【図１０Ａ】
2014182795.tif 000013
【図１０Ｂ】
2014182795.tif 000014
【図１１】
2014182795.tif 000015
【図１２】
2014182795.tif 000016
【図１３】
2014182795.tif 000017
【図１４】
2014182795.tif 000018
【図１５】
2014182795.tif 000019
【図１６】
2014182795.tif 000020
【外国語明細書】
2014182795000001.pdf