(57)【要約】  アウトオブオーダープロセッサにおけるトランザクショナルメモリの実行を供給する方法及び装置を記載する。一実施形態では、格納値は、コミットされていないトランザクショナルメモリアクセス要求の数に対応する。格納値を使用して、記載する実施形態に従って、エラー、障害等の場合にネスト状の回復を供給する。【選択図】  図１
2009527866.tif 000002
【特許請求の範囲】
【請求項１】
コミットされていない複数のトランザクショナルメモリアクセス要求の数に対応する値を格納する記憶ユニットと、
トランザクショナルメモリアクセス要求の開始及びトランザクショナルメモリアクセス要求のコミットメントの発生に対して、前記記憶ユニット内に格納された前記値を更新する第１の論理と、
を含む装置。
【請求項２】
前記複数のトランザクショナルメモリアクセス要求のうちの１つに呼応して、少なくとも部分的に、プロセッサの１つ以上の構成要素のステートに対応するデータを格納する第２の論理を更に含む、請求項１に記載の装置。
【請求項３】
前記複数のトランザクショナルメモリアクセス要求のうちの１つに対応する１つ以上のオペレーションのうちの少なくとも１つのオペレーションがコミットすることができなかった後に、前記プロセッサの前記１つ以上の構成要素の前記ステートを回復する第３の論理を更に含む、請求項２に記載の装置。
【請求項４】
前記複数のトランザクショナルメモリアクセス要求のうちの少なくとも１つに対応する１つ以上のオペレーションを、前記１つ以上のオペレーションがアトミックにコミット可能であることが示された後に、実行させる第３の論理を更に含む、請求項２に記載の装置。
【請求項５】
前記第３の論理は、前記記憶ユニット内に格納された前記値が、前記複数のトランザクショナルメモリアクセス要求のうちの最近のトランザクショナルメモリアクセス要求はコミットされたことを示した後に、前記１つ以上のオペレーションを実行させる、請求項４に記載の装置。
【請求項６】
前記プロセッサの前記１つ以上の構成要素は、１つ以上のレジスタを含む、請求項２に記載の装置。
【請求項７】
前記複数のトランザクショナルメモリアクセス要求は、同じスレッドに対応する、請求項１に記載の装置。
【請求項８】
データを格納するキャッシュを更に含み、
前記キャッシュは、前記キャッシュの一部に対する、前記複数のトランザクショナルメモリアクセス要求のうちの１つに対応するアクセスを示す１つ以上のビットを含む、請求項１に記載の装置。
【請求項９】
前記キャッシュの前記一部は、キャッシュライン又はキャッシュブロックのうちの一方又は両方である、請求項８に記載の装置。
【請求項１０】
前記複数のトランザクショナルメモリアクセス要求のうちの少なくとも１つに対応する前記キャッシュの１つ以上のエントリは、前記キャッシュの他の複数のエントリの後にエビクトされる、請求項８に記載の装置。
【請求項１１】
前記複数のトランザクショナルメモリアクセス要求に対応する１つ以上のオペレーションの少なくとも一部を投機的に実行する第２の論理を更に含む、請求項１に記載の装置。
【請求項１２】
前記複数のトランザクショナルメモリアクセス要求に対応する１つ以上のオペレーションの少なくとも一部は、トランザクショナル又は非トランザクショナルとして特定される、請求項１に記載の装置。
【請求項１３】
異なるオペレーションとのコンフリクト、アボートを強制する実装に固有のイベント、又は、明示的なアボート要求のうち１つ以上に応答して前記複数のトランザクショナルメモリアクセス要求のうちの少なくとも１つをアボートする第２の論理を更に含む、請求項１に記載の装置。
【請求項１４】
複数のプロセッサコアを更に含み、
前記複数のプロセッサコアのうちの少なくとも１つは、前記第１の論理又は前記記憶ユニットのうちの一方又は両方を含む、請求項１に記載の装置。
【請求項１５】
ロードオペレーションを、前記複数のトランザクショナルメモリアクセス要求のうちの前のトランザクショナルメモリアクセス要求が、前記ロードオペレーションに対応するメモリの同じロケーションにアクセスした後に、投機的に発行させる第２の論理を更に含む、請求項１に記載の装置。
【請求項１６】
前記複数のトランザクショナルメモリアクセスに対応する非トランザクショナルのストアを、メモリに対するライトスルーオペレーションとして実行させる第２の論理を更に含む、請求項１に記載の装置。
【請求項１７】
１つのトランザクショナルメモリ要求に対応する少なくとも第１の命令に呼応して、コミットされていない複数のトランザクショナルメモリアクセス要求の数に対応する格納値を更新することと、
前記トランザクショナルメモリ要求に対応する第２の命令に呼応して１つ以上のオペレーションを実行することと、
を含む、方法。
【請求項１８】
前記第２の命令に呼応して前記格納値を更新することを更に含む、請求項１７に記載の方法。
【請求項１９】
前記第１の命令に呼応して、プロセッサの１つ以上の構成要素をチェックポイントすることを更に含む、請求項１７に記載の方法。
【請求項２０】
キャッシュの一部に対応するビットが、前のトランザクショナルアクセスは、前記キャッシュの同じ一部に対するものであることを示す場合に、前記トランザクショナルメモリ要求に対応するロード命令を投機的に発行することを更に含む、請求項１７に記載の方法。
【請求項２１】
前記トランザクショナルメモリ要求に対応する１つ以上の命令を、トランザクショナル又は非トランザクショナルとして特定することを更に含む、請求項１７に記載の方法。
【請求項２２】
前記１つ以上の命令を特定することは、黙示的又は明示的に行われる、請求項２１に記載の方法。
【請求項２３】
データを格納するメモリと、
プロセッサと、
を含み、
前記プロセッサは、
トランザクショナルメモリアクセスの開始に対応する前記メモリからの第１の命令と、前記トランザクショナルメモリアクセスの終了に対応する前記メモリからの第２の命令とをフェッチする第１の論理と、
前記第１の命令及び前記第２の命令のうちの一方又は両方に呼応して記憶ユニット内に格納された値を更新する第２の論理と、
を含む、システム。
【請求項２４】
前記メモリに対する１つ以上のオペレーションを、前記１つ以上のメモリオペレーションがアトミックにコミット可能であることが示された後に実行させる第３の論理を更に含む、請求項２３に記載のシステム。
【請求項２５】
前記トランザクショナルメモリアクセスに対応する１つ以上のオペレーションのうちの少なくとも１つのオペレーションがコミットすることができなかった後に、前記プロセッサの１つ以上の構成要素のステートを回復する
第３の論理を更に含む、請求項２３に記載のシステム。
【請求項２６】
前記記憶ユニット内に格納された前記値は、コミットされていない複数のトランザクショナルメモリアクセス要求の数に対応する、請求項２３に記載のシステム。
【請求項２７】
前記第２の論理は、前記第１の命令又は前記第２の命令の実行又は発行に呼応して、前記記憶ユニット内に格納された前記値を更新する、請求項２３に記載のシステム。
【請求項２８】
前記メモリ内に格納されたデータの少なくとも一部を格納するキャッシュを更に含み、
前記キャッシュは、前記キャッシュの一部に対する、前記トランザクショナルメモリアクセスに対応するアクセスを示す１つ以上のビットを含む、請求項２３に記載のシステム。
【請求項２９】
前記トランザクショナルメモリアクセスに対応する１つ以上のオペレーションに呼応して、前記キャッシュ内に格納されたデータを更新する第３の論理を更に含む、請求項２８に記載のシステム。
【請求項３０】
オーディオデバイスを更に含む、請求項２３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、電子工学の分野に係る。より具体的には、本発明の実施形態は、アウトオブオーダープロセッサにおけるトランザクショナルメモリ（ＴＭ）の実行に係る。
【背景技術】
【０００２】
性能を向上することを目的として、一部のコンピュータシステムは、複数のスレッドを並行で実行しうる。一般に、１つのスレッドは、共有リソースにアクセスする前に、共有リソースのロックを獲得しうる。共有リソースが、メモリ内に格納されるデータ構造である場合、同じリソースへのアクセスを試みる全てのスレッドは、それらのオペレーションの実行を、ロッキングメカニズムにより与えられる相互排他性を考慮してシリアル化しうる。これは、システム性能に不利益であり、また、例えば、デッドロックバグによるプログラム故障を引き起こしうる。
【０００３】
ロッキングメカニズムを使用することによる性能損失を低減することを目的として、一部のコンピュータシステムは、トランザクショナルメモリを使用しうる。トランザクショナルメモリとは、一般に、複数のスレッドが、ロッキングメカニズムを使用することなく、共有リソースに並行アクセスすることを可能にする同期化モデルを指す。しかし、アウトオブオーダープロセッサにおいてのトランザクショナルメモリの実行は、例えば、アウトオブオーダープロセッサにおいて行われる投機処理から生じる予測ミスによって、設計に複雑さを追加してしまう。
【図面の簡単な説明】
【０００４】
添付図面を参照して詳細な説明を提供する。図面中、参照番号の左端の数字は、その参照番号が最初に登場する図面を特定する。異なる図面において同じ参照番号を使用することにより同様又は同一の構成要素を示す。
【０００５】
【図１】本願において説明する様々な実施形態を実施するために使用しうるコンピューティングシステムの実施形態を示すブロック図である。
【０００６】
【図２】本発明の一実施形態によるプロセッサコアの一部を示すブロック図である。
【０００７】
【図３】本発明の様々な実施形態による方法を説明するブロック図である。
【０００８】
【図４】本発明の様々な実施形態による方法を説明するブロック図である。
【０００９】
【図５】トランザクションステータス及び制御レジスタの一実施形態を示す図である。
【００１０】
【図６】本願において説明する様々な実施形態を実施するために使用しうるコンピューティングシステムの実施形態を示すブロック図である。
【００１１】
【図７】本願において説明する様々な実施形態を実施するために使用しうるコンピューティングシステムの実施形態を示すブロック図である。
【発明を実施するための最良の形態】
【００１２】
以下の説明において、多数の特定の詳細を、様々な実施形態の十分な理解を与えるために記載する。しかし、一部の実施形態は、これらの特定の詳細なしでも実施されうる。また、周知の方法、手順、構成要素、及び回路は、特定の実施形態を曖昧にしないよう詳細には記載しない。
【００１３】
本願において説明する一部の実施形態は、図１乃至７を参照して説明するようなプロセッサといったアウトオブオーダープロセッサにおけるトランザクショナルメモリの実行のための効率的なメカニズムを提供しうる。より具体的には、図１は、本発明の一実施形態によるコンピューティングシステム１００のブロック図を示す。システム１００は、１つ以上のプロセッサ１０２−１乃至１０２−Ｎ（本願では、一般的に「複数のプロセッサ１０２」又は「プロセッサ１０２」と呼ぶ）を含みうる。複数のプロセッサ１０２は、相互接続又はバス１０４を介して通信しうる。各プロセッサは、様々な構成要素を含み、それらの一部は、明瞭にすることを目的としてプロセッサ１０２−１を参照してのみ説明する。従って、残りのプロセッサ１０２−２乃至１０２−Ｎは、プロセッサ１０２−１を参照して説明する構成要素と同一又は同様の構成要素を含みうる。
【００１４】
一実施形態では、プロセッサ１０２−１は、１つ以上のプロセッサコア１０６−１乃至１０６−Ｍ（本願では、「複数のコア１０６」、又は、より一般的に「コア１０６」と呼ぶ）、キャッシュ１０８（１つ以上の占有又は共有キャッシュを含みうる）、及び／又はルータ１１０を含みうる。複数のプロセッサコア１０６は、単一の集積回路（ＩＣ）チップ上に実装されうる。更に、チップは、１つ以上の共有及び／又は占有キャッシュ（例えば、キャッシュ１０８）、バス又は相互接続（例えば、バス又は相互接続１１２）、メモリコントローラ、又は他の構成要素を含みうる。
【００１５】
一実施形態では、ルータ１１０を用いて、プロセッサ１０２−１及び／又はシステム１００の様々な構成要素間で通信しうる。更に、プロセッサ１０２−１は、２つ以上のルータ１１０を含みうる。更に、複数のルータ（１１０）は、プロセッサ１０２−１の内部又は外部の様々な構成要素間のデータルーティングを可能にするよう互いに通信しうる。
【００１６】
キャッシュ１０８は、複数のコア１０６といったプロセッサ１０２−１の１つ以上の構成要素により使用されるデータ（例えば、命令を含む）を格納しうる。例えば、キャッシュ１０８は、プロセッサ１０２の構成要素がより高速にアクセスできるようにすることを目的としてメモリ１１４内に格納されたデータをローカルにキャッシュしうる。図１に示すように、メモリ１１４は、相互接続１０４を介して複数のプロセッサ１０２と通信しうる。一実施形態では、キャッシュ１０８は、ラストレベルキャッシュ（ＬＬＣ）でありうる。更に、各コア１０６は、レベル１（Ｌ１）キャッシュ（１１６）（本願では、一般に、「Ｌ１キャッシュ１１６」と呼ぶ）を含みうる。更に、プロセッサ１０２−１は、幾つかのコア（１０６）により共有される中間レベルキャッシュも含みうる。プロセッサ１０２−１の様々な構成要素は、キャッシュ１０８と、直接的に、バス（例えば、バス１１２）及び／又はメモリコントローラ又はハブを介して通信しうる。
【００１７】
図２は、本発明の一実施形態によるプロセッサコア１０６の一部のブロック図を示す。一実施形態では、図２に示す矢印は、コア１０６内を流れる命令のフローを示す。１つ以上のプロセッサコア（例えば、プロセッサコア１０６）は、図１を参照して説明したような単一の集積回路チップ（又はダイ）上に実装されうる。更に、チップは、１つ以上の共有及び／又は占有キャッシュ（例えば、図１のキャッシュ１０８）、相互接続（例えば、図１の相互接続１０４及び／又は１１２）、メモリコントローラ、又は他の構成要素を含みうる。一実施形態では、図２に示すプロセッサコア１０６を使用して、ハードウェア（本願において、一般的に、制限付きトランザクショナルメモリ（ＲＴＭ）と呼ぶ）においてトランザクショナルメモリアクセス要求を実行しうる。
【００１８】
図２に示すように、プロセッサコア１０６は、コア１０６により実行される命令をフェッチするフェッチユニット２０２を含みうる。命令は、図６及び７を参照して説明するメモリ１１４及び／又はメモリデバイスといった任意の記憶デバイスからフェッチされうる。コア１０６は更に、フェッチされた命令を復号化する復号化ユニット２０４を含む。例えば、復号化ユニット２０４は、フェッチされた命令を複数のｕｏｐ（マイクロオペレーション）に復号化しうる。
【００１９】
更に、コア１０６は、スケジュールユニット２０６を含みうる。スケジュールユニット２０６は、命令がディスパッチの準備が整うまで、例えば、復号化された命令の全てのソース値が利用可能となるまでの間、（例えば、復号化ユニット２０４から受信される）復号化された命令を格納することに関連付けられる様々なオペレーションを実行しうる。一実施形態では、スケジュールユニット２０６は、実行を目的として、実行ユニット２０８に対して復号化された命令をスケジューリングしうる及び／又は発行しうる（又はディスパッチしうる）。実行ユニット２０８は、ディスパッチされた命令をそれらが（例えば、復号化ユニット２０４によって）復号化され、また、（スケジュールユニット２０６によって）ディスパッチされた後に実行しうる。一実施形態では、実行ユニット２０８は、メモリ実行ユニット、整数実行ユニット、浮動小数点実行ユニット、又は他の実行ユニットといった２つ以上の実行ユニットを含みうる。更に、実行ユニット２０８は、複数の命令を順不同に実行しうる。従って、プロセッサコア１０６は、一実施形態では、アウトオブオーダープロセッサコアでありうる。コア１０６は更に、リタイアメントユニット２１０を含みうる。リタイアメントユニット２１０は、コミットされた後に、実行された命令をリタイアしうる。一実施形態では、実行された命令がリタイアされることにより、例えば、プロセッサステートが命令の実行からコミットされたり、命令によって使用された物理レジスタが割当て解放されたりする。
【００２０】
図２に示すように、コア１０６は更に、プロセッサコア１０６の様々な構成要素によるアクセスのための複数のインフライト命令（又はｕｏｐ）に関する情報を格納するリオーダーバッファ（ＲＯＢ）２１２を含みうる。コア１０６は、（ソフトウェア命令のオペランドにより特定されるようなレジスタといった）論理（又はアーキテクチャ）レジスタの対応する物理レジスタに対するマッピングを維持するＲＡＴ（レジスタエイリアステーブル）２１４を含みうる。一実施形態では、ＲＡＴ２１４における各エントリは、各物理レジスタに割り当てられるＲＯＢ識別子を含みうる。更に、ロードバッファ２１６及びストアバッファ２１８（本願において、集合的に、メモリオーダーバッファ（ＭＯＢ）と呼ぶ場合もある）は、それぞれ、メインメモリ（例えば、メモリ１１４のようにプロセッサコア１０６の外部のメモリ）にロード又はライトバックされていないペンディングのメモリオペレーションを格納しうる。ＭＯＢ論理２１９は、例えば、図３及び４を参照して説明するようなバッファ２１６及び２１８に関する様々なオペレーションを実行しうる。
【００２１】
更に、プロセッサコア１０６は、プロセッサコア１０６の構成要素と他の構成要素（例えば、図１を参照して説明したような構成要素）との間の１つ以上のバス（例えば、バス１０４及び／又は１１２）を介する通信を可能にするバスユニット２２０を含みうる。１つ以上のフィルバッファ２２２は、メモリ１１４から（例えば、バス１０４及び／又は１１２を介して）受信したデータを、キャッシュ１１６に格納する前に、一時的に格納しうる。
【００２２】
図２に示すように、キャッシュ１１６は、１つ以上のキャッシュライン２２４（例えば、キャッシュライン０乃至Ｗ）を含みうる。一実施形態では、キャッシュ１１６の各ラインは、コア１０６で実行される各スレッドに対して、トランザクション読出しビット２２６及び／又はトランザクション書込みビット２２８を含みうる。複数のビット２２６及び２２８は、図３を参照して説明するようにセット又はクリアされ、それにより、例えば、トランザクショナルメモリアクセス要求による対応するキャッシュラインへの（ロード及び／又はストア）アクセスを示す。更に、図２では、各キャッシュライン２２４は、各ビット２２６及び２２８を有するように示すが、他の構成も可能である。例えば、トランザクション読出しビット２２６（又はトランザクション書込みビット２２８）は、キャッシュ１１６のキャッシュブロック又は他の部分といったキャッシュ１１６の選択部分に対応しうる。更に、ビット２２６及び／又は２２８は、図１のキャッシュ１０８、メモリ１１４、又は、ビクティムキャッシュといったキャッシュ１１６以外のロケーションに格納されてもよい。
【００２３】
図３を参照して更に説明するように、コア１０６は、コミットされていないトランザクショナルメモリアクセス要求の数に対応する値を格納するトランザクション深度カウンタ２３０を含みうる。例えば、カウンタ２３０に格納される値は、同じスレッドに対応する複数のトランザクショナルメモリアクセス要求のネスト深度を示しうる。一例では、（例えば、ライブラリ呼出し又は他のネスト手順を介して）１つのトランザクションがペンディングのトランザクション内で開始される場合、複数のトランザクショナルメモリアクセス要求が存在しうる。カウンタ２３０は、ハードウェアレジスタといった任意のタイプの記憶デバイス、又は、メモリ（例えば、メモリ１１４又はキャッシュ１１６）内に格納される変数として実施されうる。コア１０６は更に、カウンタ２３０に格納された値を更新するトランザクション深度カウンタ論理２３２を含みうる。図３を参照して更に説明するように、コア１０６は、コア１０６の様々な構成要素のステートをチェックポイント（又は格納）するトランザクションチェックポインティング論理２３４と、コア１０６の様々な構成要素のステートを回復するトランザクション回復論理２３６を含みうる。コア１０６は更に、例えば、図３及び４を参照して本願において更に説明するように、キャッシュ１１６にアクセスすることにより様々なオペレーションを実行しうるキャッシュ論理２３９を含みうる。更に、図３を参照して更に説明するように、コア１０６は、トランザクションステータス及び制御（ＴＸＳＲ）（図４を参照して本願に更に説明する）、トランザクション命令ポインタ（ＴＸＩＰ）（例えば、対応するトランザクションの始まり（又は直後）における命令に対する命令ポインタでありうる）、及び／又はトランザクションスタックポインタ（ＴＸＳＰ）（例えば、コア１０６の１つ以上の構成要素の様々なステートを格納するスタックの先頭に対するスタックポインタでありうる）といった、様々なトランザクショナルメモリアクセス要求に対応する１つ以上の追加レジスタ２４０を含みうる。
【００２４】
より具体的には、図３は、トランザクショナルメモリアクセス要求に対応する１つ以上のオペレーションを実行する方法３００の一実施形態のブロック図を示す。一実施形態では、図１、２、及び６、７を参照して説明した／する様々な構成要素を使用して、図３を参照して説明する１つ以上のオペレーションを実行しうる。
【００２５】
図１乃至３を参照するに、オペレーション３０２において、トランザクショナルメモリアクセス要求（例えば、１つ以上のメモリロード又はストアオペレーション）が受信される。例えば、フェッチユニット２０２が、トランザクショナルメモリ実行の開始を示す命令をフェッチしうる。少なくとも１つの命令セットアーキテクチャに従って、トランザクショナルメモリ実行の開始を示す命令は、ＴＸＭＢＥＧ＜ｕｓｅｒ＿ｈａｎｄｌｅｒ＿ＩＰ＞でありうる。このｕｓｅｒ＿ｈａｎｄｌｅｒ＿ＩＰは、アボート、エラー、又は他のフォルト条件の場合に実行がリダイレクトされうるユーザハンドラ手順を特定する。更にトランザクショナル終了命令（例えば、少なくとも１つの命令セットアーキテクチャに従ってＴＸＭＥＮＤ）は、トランザクションの終了を示しうる。一実施形態では、ＴＸＭＢＥＧ命令とＴＸＭＥＮＤ命令との間のすべてのオペレーションは、トランザクショナルであるとしてマーク付けされうる。一実施形態では、トランザクショナルオペレーションは、トランザクショナル（及び、例えば、命令プレフィックス又はパラメータを用いれば明示的に非トランザクショナル）であるようデフォルト設定され、それにより、例えば、非トランザクショナルレガシライブラリが、コード変更なしでトランザクションに使用されることを可能にする。或いは、トランザクショナルオペレーションは、非トランザクショナル（及び、例えば、命令プレフィックス又はパラメータを用いれば明示的にトランザクショナル）であるようデフォルト設定されうる。一実施形態では、例えば、ＴＸＭＢＥＧ命令とＴＸＭＥＮＤ命令との間のトランザクション内に登場しうるが非トランザクション的に処理される明示的な非トランザクショナル命令の特殊セットを用いうる。一実施形態では、（例えば、ＴＸＭＢＥＧ命令とＴＸＭＥＮＤ命令との間の）トランザクションにおいて生じる非トランザクショナルストアオペレーションは、メモリ１１４に対するライトスルーオペレーションとして実行ユニット２０８により実行されうる。一実施形態では、オペレーションのデフォルト処理用の設定は、ＴＸＭＢＥＧ命令と共に、例えば、対応するパラメータ又はプレフィックスを介して供給される。一実施形態では、デフォルト設定は、制御レジスタ内のモードビットを介して供給されうる。
【００２６】
オペレーション３０４において、論理２３２は、カウンタ２３０を更新しうる（例えば、実施に応じて、カウンタ２３０をインクリメント又はデクリメントしうる）。一実施形態では、（例えば、実行ユニット２０８による）ＴＸＭＢＥＧ命令を実行することにより、カウンタ２３０が更新されうる。或いは、カウンタ２３０は、例えば、スケジュールユニット２０６がＴＸＭＢＥＧ命令を発行する発行時間において更新されうる。更に、オペレーション３０４において、トランザクションチェックポインティング論理２３４が、様々な構成要素（例えば、カウンタ２３０及び／又はレジスタ２４０）のステートをチェックポイントしうる。例えば、論理２３４は、コア１０６の１つ以上の構成要素のステートを、記憶デバイス（例えば、キャッシュ１１６、キャッシュ１０８、及び／又はメモリ１１４）内に格納しうる。本願に更に説明するように、コア１０６は、同時に（及び／又は投機的に）２つ以上のトランザクショナルメモリアクセス要求を処理しうるので、論理２３４は、コア１０６の様々な構成要素の２つ以上のステートを格納し、また、一実施形態では、様々なチェックポイント済みステートは、スタックとして実施されるデータ構造に格納されうる。一実施形態では、論理２３４は、最外側のトランザクショナルメモリ要求に対応するチェックポイント済みステートを格納しうる。
【００２７】
オペレーション３０６において、オペレーション３０２のトランザクショナルメモリアクセス要求に対応する１つ以上の命令（又はオペレーション）が、例えば、実行ユニット２０８によって実行されうる。オペレーション３０６における命令の実行時に、キャッシュ１１６の一部がアクセスされる度に、対応するビット（例えば、ビット２２６及び／又は２２８）が、実施に依存して、更新されうる、例えば、セット又はクリアされうる。例えば、キャッシュ論理２３９が、キャッシュ１１６にアクセスするトランザクショナル命令を特定し、対応するビット２２６及び／又は２２８を更新しうる。一実施形態では、オペレーション３０６の命令は、例えば、命令と共に供給される、及び／又は、ＲＯＢ２１２の対応するエントリ内といった対応するロケーションに格納されうるプレフィックス（又は制御ビット）を使用することで、明示的又は黙示的にトランザクショナル又は非トランザクショナルオペレーションであると特定されうる。
【００２８】
オペレーション３０８において、別のトランザクショナルメモリアクセス要求が受信されると、方法３００は、オペレーション３０４に戻る。オペレーション３０８において追加のトランザクショナルメモリアクセス要求が受信されない場合、オペレーション３１０において、オペレーション３０６の命令の実行に対応するコンフリクト又はアボート条件が存在するか否か判断される。（例えば、同じ又は異なるプロセッサコア上で実行される別のスレッドに対応する命令でありうる）別の命令とのコンフリクトがある場合、トランザクションは、オペレーション３１２においてアボートされる。例えば、コンフリクトする命令は、オペレーション３０２のトランザクションがアクセスしている（又は、ビット２２６及び／又は２２８に格納される値により示されるようにアクセスされているとマークされる）キャッシュ１１６内のエントリに対しスヌープ無効化（snoop invalidate）を送信しうる。更に、キャッシュ１１６の一部のトランザクション書込みビット２２８が、前の書込みアクセスはキャッシュの同じ部分に対するものであったことを示す場合、別のスレッドからの、キャッシュ１１６の同じ部分に対するスヌープ読出し要求は、オペレーション３１２においてアボートされうる。更に、オペレーション３１０におけるアボートは、アボートを強制する実施固有のイベント（例えば、キャッシュ不可（ＵＣ）イベント、Ｉ／Ｏイベント、バッファオーバフロー等）による場合もある。
【００２９】
一実施形態では、スヌープによって、（キャッシュ１１６内に格納されたような）メモリ内に格納されたデータが無効となると、ロードバッファ２１６の先頭におけるロード命令が、スヌープチェック内に含まれ、（部分アドレスチェックではなく）完全アドレスチェックが、例えば、ＭＯＢ論理２１９によって行われうる。ロードバッファ２１６の先頭におけるロード命令が、オペレーション３１０におけるスヌープとコンフリクトする場合、対応するトランザクショナルメモリ要求は、オペレーション３１２においてアボートされうる。或いは、明示的なアボート要求によって、オペレーション３１０が実行されうる。例えば、少なくとも１つの命令セットアーキテクチャに従って、トランザクショナルメモリ実行のアボートを示す命令は、ＴＸＭＡＢＴでありうる。アボート命令は、（例えば、カウンタ２３０内に格納される値により示されるように）複数のネスト状のトランザクショナルメモリアクセス要求がある場合に、前のステートへのロールバック、及び、対応するハンドラ（例えば、複数のペンディングトランザクショナルメモリアクセス要求の場合に、オペレーション３０２を参照して説明したような対応するＴＸＭＢＥＧ命令により特定されうる最内側のハンドラ）の呼出しをもたらしうる明示的なアボートとなりうる。一実施形態では、アボートは、最外側のトランザクションに対応するチェックポイントされたステートへのロールバック、及び、対応する最外側のＴＸＭＢＥＧハンドラの呼出しをもたらしうる。一実施形態では、オペレーション３１２において、トランザクション回復論理２３６は、コア１０６の様々な構成要素を、図２を参照して説明したような前のステートに回復しうる。
【００３０】
一実施形態では、オペレーション３０４におけるチェックポインティングは、コピーオンライトメカニズムを使用して実行され、レジスタ回復ステートを、レジスタ２４０及び／又はＲＡＴ２１４の対応するエントリ内の１ビットに記録しうる。例えば、１ビットアレイは、各ＲＡＴインスタンス化に関連付けられうる（或いは、１つのそのようなアレイのみが使用されうる）。カウンタ２３０内に格納される値は、ペンディングのトランザクション（例えば、一実施形態では、ＴＸＮＤ＞０）を示す間、復号化ユニット２０４がレジスタリネームオペレーションを実行する間、アレイがチェックされる。対応するビットが前のアクセスがないことを示す場合、ｕｏｐが命令フローに挿入され、ＲＯＢ２１２は、対応するデータを、例えば、リネームの前に、レジスタ２４０のうちの１つのレジスタに書込みする。対応するビットが前のアクセスを示す場合、対応するデータは既に書込みの前にコピーされているのでコピーは不要である。分岐の予測ミスが生じる場合、様々な１ビットアレイは、論理的に互いにＯＲ演算され、そして、例えば、いずれは開始アレイが形成されうる。このことが行われると、ミス予測が繰り返されても、コア１０６のレジスタ内に所与のデータの１つのコピーが存在することが確実にされるのでコピーオンライトオペレーションは繰り返されない。これは、コピーオンライトの性能オーバヘッドを抑えうる。
【００３１】
一実施形態では、キャッシュ１１６がエビクトされる場合、アクティブ（例えば、セットされた）ビット２２６又はビット２２８を有するエントリは最後にエビクトされうる。キャッシュ１１６内に利用可能な空間がなくなると、プログラム実行は、ユーザハンドラ（例えば、対応するＴＸＭＢＥＧ命令のハンドラ）にリダイレクトされうる。更に、フィルバッファ２２２を使用して、トランザクションはアクティブであるが一時的にサスペンドされる間に非トランザクショナルオペレーション（例えば、データを格納する）を提供しうる。
【００３２】
コンフリクトが存在しない場合、オペレーション３１４において、（例えば、ＴＸＭＢＥＧ及び対応するＴＸＭＥＮＤ命令により特定されるような）トランザクショナルメモリアクセス要求に対応するトランザクショナルメモリアクセスオペレーションの（例えば、リタイアメントユニット２１０による）コミットメントが成功したか否か判断される。トランザクショナルメモリアクセスオペレーションがコミットされていない場合、方法３００は、オペレーション３０６に戻って対応する命令を実行する。トランザクショナルメモリアクセス要求に対応するトランザクショナルメモリアクセスオペレーションのコミットメントが成功すると、論理２３２は、オペレーション３１６においてカウンタ２３０を更新する。一実施形態では、ＴＸＭＥＮＤ命令の（例えば、実行ユニット２０８による）実行、又は、（例えば、スケジュールユニット２０６による）発行は、トランザクショナルメモリアクセス要求のコミットメント、即ち、オペレーション３１６の実行をもたらしうる。
【００３３】
オペレーション３１８において、他のトランザクショナルメモリアクセス要求に対応する任意のトランザクショナルメモリアクセスオペレーションがまだコミットされていない状態か否か判断される。一実施形態では、オペレーション３１８は、例えば、カウンタ２３０内に格納された値が未処理のトランザクショナルメモリアクセス要求の存在を示す（例えば、カウンタ２３０が、一実施形態において、クリアされていない場合）か否か判断することにより、論理２３２によって行われうる。オペレーション３１８において、他のオペレーションが未実行である場合、方法３００は、オペレーション３０６に戻り処理を続ける。トランザクショナルメモリアクセス要求に対応する更なるオペレーションがない場合（例えば、カウンタ２３０がクリアされる場合）、オペレーション３２０において、（例えば、キャッシュ１１６、キャッシュ１０８、及び／又は、メモリ１１４内の）対応するデータが、コミットされたトランザクションメモリアクセス要求のオペレーションに従ってアトミックに更新される。更に、ＴＸＭＥＮＤ命令は、カウンタ２３０内に格納される値が、ＴＸＭＥＮＤは最外側のトランザクショナルメモリアクセスに対応することを示す場合（例えば、カウンタ２３０がクリアされる場合）、対応するトランザクショナルメモリアクセス要求のためのコミットポイントを示しうる。一実施形態では、対応するビット２２６及び／又は２２８も更新されて（例えば、一実施形態では、クリアされて）、コア１０６内にペンディングされたトランザクショナルメモリアクセス要求はないことを示しうる。従って、ＴＸＭＥＮＤ命令は、例えば、全ての推測及び／又は例外が解決され、トランザクション書込みセットに属する全てのキャッシュブロックは排他的ステートにあり、及び／又は、読出しセットに属する全てのブロックは現在存在して有効であることを確実にすることによってアトミックコミットをもたらしうる。本願に説明するような読出し又は書込みセットは、一般に、それぞれ、ビット２２６及び２２８に対応するメモリ（例えば、キャッシュ１１６）内のデータのセットを指しうる。一実施形態では、入来スヌープは、対応する書込みセットがコミットされる間は、ストールされる。
【００３４】
一実施形態では、コア１０６は、図４を参照して更に説明するように、方法３００を参照して説明した様々な命令（又はオペレーション）を投機的に実行しうる。更に、方法３００の様々なオペレーションは、順不同で行われうる。例えば、オペレーション３０６、３０８、及び３１０は、任意の順序で行われうる。更に、一実施形態では、スヌープオペレーションは、オペレーション３１０、３１２、３１４、及び／又は３２０の実行前にストールされ、オペレーション３１０、３１２、３１４、及び／又は３２０の実行後にストール解除されうる。
【００３５】
図４は、トランザクショナルメモリアクセス要求に対応する１つ以上のロードオペレーションを実行する方法４００の一実施形態のブロック図を示す。一実施形態では、図１、２、及び６、７を参照して説明した／する様々な構成要素を使用して、図４を参照して説明する１つ以上のオペレーションを実行しうる。
【００３６】
図１乃至４を参照するに、オペレーション４０２において、復号化ユニット２０４は、フェッチされた命令を復号化し、そのフェッチされた命令が、トランザクショナルメモリアクセスロードオペレーションに対応するか否かを判断する。フェッチされた命令が、トランザクショナルメモリアクセスロードオペレーションに対応しない場合、コア１０６は、その命令を適宜処理しうる（４０４）。例えば、トランザクショナルメモリアクセスストアオペレーションでは、コア１０６は、ストアオペレーション（又は命令を）、対応するトランザクショナルメモリアクセス要求のリタイアメントの後に、キャッシュ１１６に対して発行しうる。一実施形態では、ストアオペレーションに対応するアドレス又はデータは、投機的に計算され、ストアバッファ２１８内に格納されうる。対応するトランザクショナルメモリアクセス要求がリタイアすると、ストアは、予め計算されたデータに従って、キャッシュに対して発行されうる。一実施形態では、リタイアされたストアは更に、ストアがキャッシュ１１６に対して発行される際にビットがセットされない場合、アクセスされたキャッシュブロック（例えば、対応するＴＸｗビット２２８）をセットしうる。
【００３７】
オペレーション４０６において、論理２３９は、前のトランザクショナルメモリアクセス要求は、オペレーション４０２のロード命令によりアドレスされたキャッシュ１１６内のロケーションと同じロケーションに対するアクセスであるか否かを判断しうる。一実施形態では、論理２３９は、キャッシュ１１６の対応するビット２２６にアクセスして、オペレーション４０６を実行しうる。同じロケーションが前にアクセスされている場合、スケジュールユニット２０６は、ロード命令を投機的に発行しうる。同じロケーションが前にアクセスされていない場合、ＭＯＢ論理２１９は、オペレーション４１０において、リタイアメント（又は、ＲＯＢ２１２の対応するエントリにより示されるコミットメント）後にロード命令を再発行し、次に、オペレーション４１２においてキャッシュ１１６内に対応するＴＸｒビット２２６を設定しうる。一実施形態では、対応するビット２２６も、前のトランザクショナルロードによりアクセスされていた場合、ロードバッファ２１６内に格納されうる。ＲＯＢ２１２の対応するエントリにより示されるようにロードオペレーションがコミットされると、ＲＯＢ２１２は、信号をロードバッファ２１６（又はＭＯＢ論理２１９）に送信して対応するロードオペレーションがコミットされたことを示しうる。従って、ロードバッファ２１６内にビット２２６を供給することは、例えば、キャッシュバンド幅を最適化することを目的としてオペレーション４１０及び４１２でのキャッシュ１１６のリアクセスを制限しうる。
【００３８】
一実施形態では、トランザクショナルメモリアクセス要求のロード又はストアオペレーションは、例えば、シリアル化、及び、読出し又は書込みセットの更新なしで複数のロードを発行することを可能にするが、トランザクション読出し又は書込みセットに属するとしてロード又はストアアドレスが明示的に特定するようオペレーションが対応するロード又はストアバッファ（例えば、それぞれバッファ２１６又は２１８）の先頭にあるときにキャッシュ１１６にリアクセスすることによって、トランザクショナル又は非トランザクショナルオペレーションであるとして黙示的又は明示的に特定されうる。これは、ロードとストアが、読出し／書込みセットを誤って更新することなく、投機的に発行されることを可能にし、従って、ロード及びストアの特定が正確となることを可能にし、また更に、分岐予測ミスに自動的に対処しうる。ストアオペレーションは、ストア命令がストアバッファ２１８の最も古い部分（一実施形態では、シニアストアキューと呼ぶ場合がある）から出る際に、読出し／書込みセットを更新しうる。更に、黙示的な包含は、レガシライブラリが本願に説明する実施形態によりサポートされることを可能にしうる。
【００３９】
図５は、トランザクションステータス及び制御レジスタ（ＴＸＳＲ）５００の一実施形態を示す。一実施形態では、ＴＸＳＲレジスタ５００を使用して、例えば、図２及び３を参照して本願において説明した様々な実施形態を実施しうる。例えば、図２のレジスタ２４０は、一実施形態では、ＴＸＳＲレジスタ５００を含みうる。更に、図２乃至４を参照して説明したオペレーションは、レジスタ５００にアクセスすることにより実行されうる。
【００４０】
図５に示すように、ＴＸＳＲレジスタ５００は、１つ以上のエントリ５０２（又は一実施形態では、１つ以上のビット）を含みうる。各エントリ５０２は、少なくとも１つの命令セットアーキテクチャに従った図示するような名称（５０４）を有しうる。更に、各エントリ５０２は、例えば、類似する複数のビットを１つのカテゴリにまとめるために対応するクラス５０６を有しうる。図５は、各エントリ５０２に対応する説明５０８を更に示す。一実施形態では、クラス情報５０６及び説明５０８は、情報提供を目的とし、実際のレジスタ５００内には格納されなくともよい。一実施形態において、複数のエントリ５０２のうちの１つのエントリが、説明５０８により特定されるステータスを示す場合、１つ以上のアクション５１０が取られうる。図５では、ＴＸＤＲ及びＴＸＦＲは、デバッグ用のレジスタ（例えば、図２のレジスタ２４０に含まれる）でありうる。例えば、ＴＸＤＲは、メモリ命令のアドレス、又は、データコンフリクトのスヌープアドレスを、トランザクションアボートオペレーションの前に格納しうる。更に、ＴＸＦＲは、トランザクションをアボートさせたフォルト命令の命令ポインタ（ＩＰ）を格納しうる。一実施形態では、ＴＸＤＲ及びＴＸＦＲ内に格納された値は、アボート後にトランザクションハンドラルーチン（例えば、ＴＸＭＢＥＧにより特定されるハンドラ）により読出しされ、それにより、ソフトウェアがアボートを引き起こしたアドレスを見つけることを可能にする。
【００４１】
図１乃至５を参照するに、一実施形態では、図３を参照して説明したＴＸＭＢＥＧ命令は、ＴＸＳＲレジスタ５００のステータスに依存して以下の２つのアクションのうちの一方又は両方のアクションを実行しうる。即ち、
１．ＴＸＭＢＥＧ命令は、実行を、命令に従ったオペレーションが回復可能なモードで実行されるアトミック実行モードに移行させうる。コア１０６がこのモードにある間に命令によって実行される任意の更新は、いつでも放棄することができる。レジスタのステート回復可能性を可能にする目的で、複数のレジスタ２４０のうちの一部は、論理２３４によりチェックポイントされうる。実行されると取り消すことのできないオペレーションは、エラーをもたらし、トランザクション更新は放棄され、及び／又は、制御がＴＸＭＢＥＧ命令により特定されるハンドラに転送されうる。
２．ＴＸＭＢＥＧ命令は更に、ＴＸＳＲレジスタ５００のステートに依存して条件付き制御転送を行いうる。適切なＴＸＳＲビットがセットされる場合、ＴＸＭＢＥＧ命令は、プログラム制御を、戻り情報を記録することなくトランザクショナルメモリアクセス要求に対応する命令ストリームにおける異なるポイントに転送しうる。デスティネーション（ターゲット）オペランドは、命令がジャンプする先のアドレスを指定しうる。ＴＸＭＢＥＧが、条件付き制御転送を実行すると、コア１０６は、回復可能な実行モードに移行せず、実行は、少なくとも１つの命令セットアーキテクチャに従ったＪＭＰ（又はジャンプ）命令の実行に類似する。
【００４２】
一実施形態では、以下の疑似コードは、図５に示すレジスタ５００の一部のエントリ５０２を参照して上述したオペレーションを説明しうる：
【数１】
2009527866.tif 000003
【００４３】
上記のコードでは、ＳＰレジスタに加えて、複数のレジスタ（例えば、レジスタ２４０）が保存されうる。一実施形態では、保存されるべき複数のレジスタのセットは、ソフトウェアによってハードウェアに通信されうる。図１乃至５を参照するに、一実施形態では、図３を参照して説明したＴＸＭＥＮＤ命令は、ＴＸＳＲレジスタ５００のステータスに依存して以下の疑似コードを実行しうる（一実施形態では、以下に示す「ｔｍｐｍｅｍｓｔａｔｕｓ」は、キャッシュ１１６における全てのキャッシュブロックが適切なステートにあるか否かを示すよう連続的にゲートされうるステートでありうる）：
【数２】
2009527866.tif 000004
【００４４】
図１乃至５を参照するに、一実施形態では、図３を参照して説明したＴＸＭＡＢＴ命令は、ユーザがアトミックブロック実行を明示的にアボートすることを可能にしうる。結果は、実行アボート、及び（レジスタ５００の複数のビット以外の）全ての更新が放棄される場合と同様でありうる。一実施形態では、ＴＸＭＡＢＴ命令は、ＴＸＳＲレジスタ５００のステータスに依存して以下の疑似コードを実行しうる：
【数３】
2009527866.tif 000005
【００４５】
一実施形態において、以下の表１は、（例えば、図２のキャッシュ１１６の）サンプルキャッシュステート、図２の複数のビット２２６及び２２８のビット値、及び対応する説明を示す。表１において、「Ｍ」は、変更されたキャッシュステートを示し、「Ｅ」は、排他的キャッシュステートを示し、「Ｓ」は、共有キャッシュステートを示し、「Ｉ」は、無効キャッシュステートを示し、「Ｘ」は、無視可能な（do not care）ステートを示し、「Ｎ／Ａ」は、該当なしであることを示す。
【表１】
2009527866.tif 000006
【００４６】
一実施形態では、以下の表２は、プロセッサコア１０６の要求、（例えば、図２のキャッシュ１１６の）キャッシュステート、図２の複数のビット２２６及び２２８のビット値、及び対応するアクションを示す。表２において、「Ｍ」は、変更されたキャッシュステートを示し、「Ｅ」は、排他的キャッシュステートを表し、「Ｓ」は、共有キャッシュステートを示し、「Ｉ」は、無効キャッシュステートを示し、「Ｘ」は、無視可能なステートを示し、「ＬＤ」は、ロード要求を示し、「ＳＴ」は、ストア要求を示し、「ＬＤｎｔｘ」は、明示的な非トランザクションロード要求を示し、「ＳＴｎｔｘ」は、明示的な非トランザクションストア要求を示し、「完了」は、ベースラインシステムにおいて発生しうるオペレーションに対して追加のオペレーションがないこと（他のアクションのない既存のキャッシュヒット条件）を示し、「［ＴＸｒ＝？  ＴＸｗ＝？］」は、そのイベントのためのキャッシュブロックの最終ステートを示し、「ＮＡ」は、そのエントリは発生すべきではないことを示し、「フォルト」は、エラー条件がフラグされうることを示し、「発行ミス」は、ミス要求が発行されることを示す。
【表２】
2009527866.tif 000007
【００４７】
図６は、コンピューティングシステム６００の一実施形態のブロック図を示す。コンピューティングシステム６００は、相互接続（又はバス）６０４と通信する１つ以上の中央オペレーション処理ユニット（ＣＰＵ）又はプロセッサ６０２を含みうる。一実施形態では、プロセッサ６０２は、図１のプロセッサ１０２と同一又は同様でありうる。更に、相互接続６０４は、図１及び２を参照して説明した相互接続１０４及び／又は１１２と同一又は同様でありうる。プロセッサ６０２は、汎用プロセッサ、ネットワークプロセッサ（例えば、コンピュータネットワークを介して通信されたデータを処理するプロセッサ）、又は、縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ又は複数命令セットコンピュータ（ＣＩＳＣ）プロセッサを含む他のプロセッサといった任意のタイプのプロセッサを含みうる。更に、プロセッサ６０２は、図１及び２を参照して説明したような１つ以上のプロセッサコア（１０６）を含む、シングル又はマルチプルコア設計を有しうる。マルチプルコア設計を有するプロセッサ６０２では、様々なタイプのプロセッサコアが同一の集積回路（ＩＣ）ダイ上に集積されうる。更に、マルチプルコア設計を有するプロセッサ６０２は、対称又は非対称マルチプロセッサとして実施されうる。
【００４８】
図６に示すように、チップセット６０６は、相互接続６０４と通信しうる。チップセット６０６は、メモリ制御ハブ（ＭＣＨ）６０８を含みうる。ＭＣＨ６０８は、メモリ１１４と通信するメモリコントローラ６１０を含みうる。メモリ１１４は、例えば、プロセッサ６０２、又は、コンピューティングシステム６００と通信する任意の他のデバイスにより実行される命令のシーケンスを含むデータを格納しうる。本発明の一実施形態では、メモリ１１４は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、又は他の揮発性メモリデバイスといった１つ以上の揮発性記憶（又はメモリ）デバイスを含みうる。ハードディスクといった不揮発性メモリも用いてもよい。複数のプロセッサ及び／又は複数のシステムメモリといった追加のデバイスが相互接続６０４を介して通信してもよい。
【００４９】
ＭＣＨ６０８は更に、グラフィクスアクセラレータ６１６と通信するグラフィクスインターフェイス６１４を含みうる。一実施形態では、グラフィクスインターフェイス６１４は、アクセラレーテッドグラフィクスポート（ＡＧＰ）を介してグラフィクスアクセラレータ６１６と通信しうる。本発明の一実施形態では、ディスプレイ（例えば、フラットパネルディスプレイ）は、例えば、ビデオメモリ又はシステムメモリといった記憶デバイス内に格納された画像のデジタル表現を、ディスプレイにより解釈且つ表示される表示信号に変換する信号変換器を介してグラフィクスインターフェイス６１４と通信しうる。様々な実施形態において、表示装置により生成された表示信号は、ディスプレイにより解釈され且つその上で表示される前に様々な制御デバイスを通されうる。
【００５０】
更に、ハブインターフェイス６１８は、ＭＣＨ６０８と入出力（Ｉ／Ｏ）制御ハブ（ＩＣＨ）６２０との間の通信を可能にしうる。ＩＣＨ６２０は、コンピューティングシステム６００と通信するＩ／Ｏデバイスに対しインターフェイスを提供しうる。ＩＣＨ６２０は、周辺コンポーネント相互接続（ＰＣＩ）ブリッジ又は汎用シリアルバス（ＵＳＢ）コントローラといった周辺機器ブリッジ（又はコントローラ）６２４を介してバス６２２と通信しうる。ブリッジ６２４は、プロセッサ６０２と周辺デバイスとの間のデータ経路を供給しうる。他のタイプのトポロジも用いてもよい。更に、複数のバスが、例えば、複数のブリッジ又はコントローラを介して、ＩＣＨ６２０と通信しうる。更に、本発明の様々な実施形態におけるＩＣＨ６２０と通信する他の周辺機器には、電子集積ドライブ（ＩＤＥ）又は小型コンピュータシステムインターフェイス（ＳＣＳＩ）ハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、又は他のデータサポートインターフェイス（例えば、デジタルビデオインターフェイス（ＤＶＩ））が含まれうる。
【００５１】
バス６２２は、オーディオデバイス６２６、１つ以上のディスクドライブ６２８、及びネットワークアダプタ６３０と通信しうる。ネットワークアダプタ６３０は、例えば、システム６００の様々な構成要素を有効化してネットワーク６３１を介してデータを送受信して、コンピュータネットワーク６３１と通信しうる。他のデバイスがバス６２２を介して通信してもよい。更に、本発明の一部の実施形態では、様々な構成要素（例えば、ネットワークアダプタ６３０）は、ＭＣＨ６０８と通信しうる。更に、プロセッサ６０２及びＭＣＨ６０８は、１つのチップを形成するよう組み合わされてもよい。更に、本発明の他の実施形態では、グラフィクスアクセラレータ６１６が、ＭＣＨ６０８内に含まれてもよい。
【００５２】
一実施形態では、コンピューティングシステム６００は、揮発性及び／又は不揮発性メモリ（又は記憶装置）を含みうる。例えば、不揮発性メモリには、読出し専用メモリ（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば、６２８）、フロッピー（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、フラッシュメモリ、磁気光学ディスク、又は、（例えば、命令を含む）電子データを格納するための他のタイプの不揮発性機械可読媒体のうちの２つ以上が含まれうる。
【００５３】
図７は、本発明の一実施形態による、ポイントツーポイント（ＰｔＰ）構成に配置されたコンピューティングシステム７００を示す。具体的に、図７は、複数のプロセッサ、メモリ、及び複数の入出力デバイスが、多数のポイントツーポイントインターフェイスにより相互接続されるシステムを示す。図１乃至６を参照して説明したオペレーションは、システム７００の１つ以上の構成要素によって実行されうる。
【００５４】
図７に示すように、システム７００は、幾つかのプロセッサを含み、そのうちの２つのプロセッサ７０２及び７０４のみを明瞭にすることを目的として示す。プロセッサ７０２及び７０４は、それぞれ、メモリ７１０及び７１２との通信を可能にするようローカルメモリコントローラハブ（ＭＣＨ）７０６及び７０８を含みうる。メモリ７１０及び／又は７１２は、図１、２、及び６のメモリ１１４を参照して説明したようなデータといった様々なデータを格納しうる。
【００５５】
一実施形態では、プロセッサ７０２及び７０４は、図６を参照して説明した複数のプロセッサ６０２のうちの１つでありうる。プロセッサ７０２及び７０４は、それぞれ、ポイントツーポイント（ＰｔＰ）インターフェイス回路７１６及び７１８を使用してＰｔＰインターフェイス７１４を介してデータを交換しうる。更に、プロセッサ７０２及び７０４は、それぞれ、ポイントツーポイントインターフェイス回路７２６、７２８、７３０、及び７３２を使用して別々のＰｔＰインターフェイス７２２及び７２４を介してチップセット７２０とデータを交換しうる。チップセット７２０は、更に、例えば、ＰｔＰインターフェイス回路７３７を使用して、高性能グラフィクスインターフェイス７３６を介して高性能グラフィクス回路７３４とデータを交換しうる。
【００５６】
本発明の少なくとも１つの実施形態は、プロセッサ７０２及び７０４内に設けられうる。例えば、図１又は２の１つ以上のコア１０６は、プロセッサ７０２及び７０４内に位置付けられうる。しかし、本発明の他の実施形態は、図７のシステム７００内の他の回路、論理ユニット、又はデバイス内に存在しうる。更に、本発明の他の実施形態は、図７に示す幾つかの回路、論理ユニット、又はデバイスに亘って分散配置されてもよい。
【００５７】
チップセット７２０は、ＰｔＰインターフェイス回路７４１を使用してバス７４０と通信しうる。バス７４０は、バスブリッジ７４２及びＩ／Ｏデバイス７４３といった当該バスと通信する１つ以上のデバイスを有しうる。バスブリッジ７４３は、バス７４４を介して、キーボード／マウス７４５、通信デバイス７４６（例えば、モデム、ネットワークインターフェイスデバイス（例えば、図６のネットワークアダプタ６３０）、又は、コンピュータネットワーク６３１と通信しうる他の通信デバイス）、オーディオＩ／Ｏデバイス、及び／又はデータ記憶デバイス７４８といった他のデバイスと通信しうる。データ記憶デバイス７４８は、プロセッサ７０２及び／又は７０４により実行されうるコード７４９を格納しうる。
【００５８】
本発明の様々な実施形態において、例えば、図１乃至７を参照して本願にて説明したオペレーションは、ハードウェア（例えば、回路）、ソフトウェア、ファームウェア、又はそれらの組み合わせによって実施されえ、例えば、本願にて説明したプロセスをコンピュータに実行させるようプログラムするために使用する複数の命令（又はソフトウェア手順）が格納された機械可読又はコンピュータ可読媒体を含むコンピュータプログラムプロダクトとして提供されうる。更に、用語「論理」は、例示的に、ソフトウェア、ハードウェア、又は、ソフトウェア及びハードウェアの組み合わせを含みうる。機械可読媒体は、図１乃至７を参照して説明したような記憶デバイスといった記憶デバイスを含みうる。更に、そのようなコンピュータ可読媒体は、コンピュータプログラムプロダクトとしてダウンロードされてもよく、その場合、プログラムは、リモートコンピュータ（例えば、サーバ）から要求を出すコンピュータ（例えば、クライアント）に、通信リンク（例えば、バス、モデム、又は、ネットワーク接続）を介する搬送波又は他の伝播媒体内に具現化されうるデータ信号によって転送されうる。従って、本願では、搬送波は、機械可読媒体を構成するとみなす。
【００５９】
明細書中、「一実施形態」との言及は、実施形態に関連して説明した特定の機能、構造、又は特徴が、少なくとも１つの実施例に含まれることを意味する。明細書中の様々な箇所に登場する「一実施形態では」との表現は、必ずしも同一の実施形態を指さない場合もある。
【００６０】
更に、詳細な説明及び特許請求の範囲において、用語「結合された」及び「接続された」、及びその派生語を使用しうる。本発明の一部の実施形態では、「接続された」は、２つ以上の素子が、互いに直接物理的に又は電気的に接触することを示すよう用いうる。「結合された」は、２つ以上の素子が直接物理的に又は電気的に接触することを意味しうる。しかし、「結合された」は更に、２つ以上の素子が互いに直接接触しないが、互いに協働する又は相互作用しうることを意味しうる。
【００６１】
従って、本発明の実施形態は、構造的機能及び／又は方法論的動作に固有の表現で説明したが、特許を請求する対象の主題は、記載した特定の機能又は動作に限定されない。むしろ、特定の機能及び動作は、特許を請求する対象の主題を実施するための例示形態として開示する。
【図１】
2009527866.tif 000008
【図２】
2009527866.tif 000009
【図３】
2009527866.tif 000010
【図４】
2009527866.tif 000011
【図５】
2009527866.tif 000012
【図６】
2009527866.tif 000013
【図７】
2009527866.tif 000014
2009527866.tif 000015
【国際調査報告】
2009527866.tif 000016
2009527866.tif 000017