"キャッシュメモリの一部に投機的に書き込み、前記キャッシュメモリの前記一部のコピーを作成し、前記コピーを更新する論理を有するプロセッサコアを備えるプロセッサ。前記プロセッサコアは、前記コピーを投機状態としてタグ付する論理を有する、請求項1に記載のプロセッサ。前記プロセッサコアは、前記コピーに関連付けられたコミットを実行する論理を有する、請求項1または2に記載のプロセッサ。前記プロセッサコアは、前記コミットに一部基づいて前記コピーを異なる有効な状態にタグ付する論理を有する、請求項3に記載のプロセッサ。前記プロセッサコアは、前記コミットに一部基づいて前記キャッシュメモリの前記一部を破棄する論理を有する、請求項4に記載のプロセッサ。前記プロセッサコアは、前記キャッシュメモリの前記一部をログ状態にタグ付する論理を有する、請求項1に記載のプロセッサ。キャッシュラインへのデータを伴わない所有権の投機的要求を実行する論理を有するプロセッサコアを備えるプロセッサ。前記プロセッサコアは、前記キャッシュラインからのデータがない前記キャッシュラインの所有権の受領確認を検知する論理を有する、請求項7に記載のプロセッサ。前記プロセッサコアは、前記キャッシュラインをログ状態にタグ付して、前記キャッシュラインの新たなバージョンを作成して、前記新たなバージョンを投機状態にタグ付する論理を有する、請求項7または8に記載のプロセッサ。前記プロセッサコアは、前記新たなバージョンに書き込みを実行する論理を有する、請求項9に記載のプロセッサ。前記プロセッサコアは、前記新たなバージョンに関連付けられるコミットを実行して、前記新たなバージョンの前記投機状態を有効状態に変更して、前記キャッシュラインの前記ログ状態を無効状態に変更する論理を有する、請求項9に記載のプロセッサ。前記プロセッサコアは、前記ログ状態の前記キャッシュラインに関連付けられるロールバックを実行して、前記新たなバージョンの状態を無効状態に変更して、前記ログ状態の前記キャッシュラインの前記状態を有効状態に変更する論理を有する、請求項9または10に記載のプロセッサ。データを伴わない前記所有権の投機的要求が検知されると、前記キャッシュラインの有効なコピーのバックアップコピーを作成する論理を有する、前記キャッシュラインの前記有効なコピーを保持する1以上の他のプロセッサコアをさらに備える、請求項7に記載のプロセッサ。前記1以上の他のプロセッサコアは、前記プロセッサの非コアで、データを伴わない前記所有権の投機的要求を検知する論理を有する、請求項13に記載のプロセッサ。前記1以上の他のプロセッサコアは、前記バックアップコピーを遠隔ログ状態にタグ付して、前記バックアップコピーを前記プロセッサコアの識別子にタグ付する論理を有する、請求項13または14に記載のプロセッサ。前記1以上の他のプロセッサコアは、前記プロセッサコアの識別子および前記キャッシュラインと関連付けられるコミットを検知し、前記コミットに一部基づいて前記バックアップコピーを破棄する論理を有する、請求項13から15のいずれか一項に記載のプロセッサ。キャッシュラインのデータを伴わない所有権の投機的要求を検知して、前記キャッシュラインのコピーを作成する論理を有するプロセッサコアを備えるプロセッサ。前記プロセッサコアは、前記コピーを遠隔ログ状態にタグ付する論理を有する、請求項17に記載のプロセッサ。前記プロセッサコアは、前記キャッシュラインに関連付けられるロールバック処理を検知して、前記コピーを異なる有効な状態にタグ付する論理を有する、請求項17に記載のプロセッサ。前記プロセッサコアは、前記キャッシュラインに関連付けられるコミット処理を検知して、前記コピーを無効状態にタグ付する論理を有する、請求項17に記載のプロセッサ。本開示は、キャッシュメモリの一部たとえばキャッシュラインのための、データを伴わない所有権の投機的要求SRFOWD:SpeculativeRequestForOwnershipWithoutDataを含む高度なキャッシュコヒーレンシープロトコルの実施形態の一例に関する。現在のRFOと異なり、SRFOWDでは、受領確認メッセージのみが返答として提供される。影響をうけるキャッシュラインの内容は、返答の一部として必須ではない。こうすることで、上書きされてしまうデータを転送するリソースの無駄を省くことができるようになるので、マルチコアプロセッサの相互接続ネットワーク上のトラフィックの競合を減らすことができる。本文献の様々な実施形態で開示されるように、マルチコアプロセッサのコアは、一式の格納処理がキャッシュの全部分たとえばキャッシュラインを上書きすることを検知する場合にはたとえば投機する場合、SRFOWDを送信することができる。しかし、要求の投機的な性質から、現在のキャッシュラインのコピーを無効化する代わりに、高度なキャッシュコヒーレンシープロトコルが、現在のキャッシュラインの有効なコピーが、要求を出しているコアの投機間違いの場合にも確実に存在するようにすることができる。したがって、キャッシュラインの現在のコピーの所有者は、キャッシュラインの古い内容のコピーを維持することができる。キャッシュラインの古い内容は、要求を発しているコアの投機が正確であることがわかると、破棄されてよい。要求を発しているコアの投機が間違いであった場合には、キャッシュラインの古い内容を、有効状態に戻す。<システムアーキテクチャの例>図1は、高度なキャッシュコヒーレンシープロトコルを実行するために利用可能なマルチコアプロセッサの環境100の一例を示す。プロセッサ102は、それぞれコアが高度なキャッシュコヒーレンシープロトコルの少なくとも一部を実装する論理を有している1以上のプロセッサコア1041から104Nを有するマルチコアプロセッサたとえば、1つの集積回路ダイ上のマルチコアプロセッサを含んでよい。コア1041は、関連するコアキャッシュ1061を有してよい。キャッシュ1061は、たとえば、レベル1L1キャッシュ等のプロセッサコア1041が直接アクセスすることができるキャッシュメモリを含んでよい。一実施形態では、キャッシュ1061を、コア1041の一部と捉えてもよい。図1を説明する便宜上、キャッシュ1061は1つのキャッシュとして示されているが、コア1041内には複数のキャッシュが含まれていてもよい。コア1041同様に、コア104Nが、関連するコアキャッシュ106Nを有してよい。キャッシュ1061同様に、キャッシュ106Nは、たとえば、レベル1L1キャッシュ等のコア104Nが直接アクセスすることができるキャッシュメモリを含んでよい。一実施形態では、キャッシュ106Nは、コア104Nの一部と考えてよい。図1を説明する便宜上、キャッシュ106Nは、1つのキャッシュとして示されているが、コア104N内には複数のキャッシュが含まれていてもよい。プロセッサ102は、さらに、非コア108を含んでよい。非コア108は、コアにないが、コア1041から104Nの機能を実行するために本質的であってよいハードウェアコンポーネントを含んでよい。一実施形態では、非コア108は、これもコア1041から104Nを含む1つの集積回路ダイの上のマルチコアチップの一部であってよい。一例として、非コア108は、コア相互接続ネットワーク110、非コアキャッシュ112、メモリコントローラ114プロセッサ102の外部にあってよいメモリ116に対するアクセスを制御するためのもの、およびその他の非コアデバイス118を含んでよいが、これらに限定はされない。キャッシュ112は、たとえば、L2キャッシュ、L3キャッシュ等の、コア1041から104Nの少なくとも1つがアクセス可能なキャッシュメモリを含んでよい。図1を説明する便宜上、キャッシュ112は、非コア108内の1つのキャッシュとして示されている。しかし、キャッシュ112は、非コア108内に分散されている複数のキャッシュ、非コア108の外部の1以上のキャッシュ、プロセッサ102の外部の1以上のキャッシュ等を含んでもよい。プロセッサ102内の各キャッシュメモリは、システムの他のエージェントと通信して、たとえばコア1041から104Nによって相互接続ネットワーク110を介してキャッシュメモリアクセスおよび、キャッシュコヒーレンシープロトコル126の実装を促すための関連する相互接続インタフェースコントローラを有してよい。たとえば、相互接続インタフェースコントローラ1201は、キャッシュ1061の相互接続ネットワーク110への接続を促すためにキャッシュ1061に取り付けられる。同様に、相互接続インタフェースコントローラ120Nがキャッシュ106Nに取り付けられ、相互接続インタフェースコントローラ124が、キャッシュ112に取り付けられて、これらに関連するキャッシュの、相互接続ネットワーク110への接続を促す。一例としては、相互接続インタフェースコントローラ1201は、コア1041と非コア108との間でメッセージ交換およびメッセージの変換を行い、キャッシュコヒーレンシープロトコル126を促すことができる。同様に、相互接続インタフェースコントローラ120Nが、コア104Nと非コア108との間でメッセージ交換およびメッセージの変換を行い、キャッシュコヒーレンシープロトコル126を促すことができる。このようにして、相互接続インタフェースコントローラ1201から120Nおよび124は、コア1041から104Nおよび非コア108の間の活動および処理の観察および応答の両方または片方ができてよい。相互接続ネットワーク110は、コア1041から104Nおよび非コア108、並びに、非コア108のコンポーネントたとえばキャッシュ112の間のメッセージ交換およびデータ転送を行うバス状の相互接続ネットワーク機能を実装することができる。ここで記載したように、複数のコアが、キャッシュメモリの様々なブロックおよびラインの所有権またはアクセス権を求める場合があるので、データに一貫性がなくなる、という問題が生じる場合がある。したがってプロセッサ102は、キャッシュコヒーレンシープロトコル126等の高度なキャッシュコヒーレンシープロトコルを実装して、キャッシュメモリの部分たとえば特定のキャッシュラインの有効性および利用可能性を保証する。一例として、キャッシュコヒーレンシープロトコル126の一実施形態では、コア1041が、キャッシュメモリの一部たとえば特定のアドレスまたはインデックスを有するキャッシュラインのための、データを伴わない所有権の投機的要求SRFOWDを実行することができる。このSRFOWD処理は、次に、相互接続インタフェースコントローラ1201により、相互接続インタフェースコントローラ1201によって、コア104のうちの他のものに、相互接続ネットワーク110経由で送られた非コアメッセージに変換されてもよい。要求されているキャッシュラインは、たとえば、現在たとえばコア104Nにより所有されており、修正された状態修正状態のコア104Nのキャッシュメモリ106Nに常駐していてよい。コア104Nは、要求されているキャッシュラインの所有権をコア1041に許可して、一方では、異なる状態たとえば遠隔ログされた等としてタグ付されている現在のキャッシュラインのコピーまたはバージョンを維持してよい。コア104Nは、次に、キャッシュラインのデータ内容をコア1041に提供することなく、コア1041に現在のキャッシュラインの所有権を許可することができる。次にコア1041は、たとえばキャッシュ1061の、要求されているキャッシュラインの所有権を取得することができる。一実施形態では、コア1041は、コア1041が、キャッシュライン全体の完全な書き込みを投機的にコア1041が実行するように、SRFOWD処理を実行することができる。一実施形態では、コア1041が、キャッシュライン全体の完全な書き込みが投機ミスであった場合、コア104Nは、現在のキャッシュラインのコピーまたはバージョンを有効状態に遷移させることができる。一実施形態では、コア1041がキャッシュライン全体の書き込みを無事に完了した場合、コア104Nが、現在のキャッシュラインのコピーまたはバージョンを、無効状態に遷移させることができる。別の例として、キャッシュコヒーレンシープロトコル126の一実施形態では、コア1041が、共有状態にあるキャッシュ112に常駐しているキャッシュラインの所有権要求RFOまたはSRFOWDを行うことを想定する。コア104の他のものが、共有状態のこれらに関連するキャッシュ106に、要求されているキャッシュラインを保持することができる。この例では、相互接続インタフェースコントローラ1201が、RFOまたはSRFOWD処理を、コア1041から、相互接続ネットワーク110経由で送られた関連する非コアメッセージに変換して、コア104の他のものに、キャッシュラインの命名のコピーを破棄または無効化させることができる。一実施形態では、コア1041が、次に所有権を得て、キャッシュラインを別の状態たとえば投機状態としてタグ付することができる。別の例として、キャッシュコヒーレンシープロトコル126の一実施形態では、コア1041が、修正された状態にあるキャッシュ1061に常駐しているキャッシュラインの所有権要求RFOまたはSRFOWDを行ってよい。この例では、処理によって、コア1041は、キャッシュラインを、別のログされた状態としてタグ付して、別の状態たとえば投機状態の要求されたキャッシュラインの新たなコピーまたはバージョンを作成する。図1を説明する便宜上、キャッシュコヒーレンシープロトコル126は、非コア108およびコア1041から104Nの外部に描かれている。しかし様々な実施形態では、キャッシュコヒーレンシープロトコル126は、その全体または一部が、非コア108、コア1041から104Nおよびプロセッサ102のその他の任意の部分の少なくともいずれかの中に実装されていてもよい。一例として、キャッシュコヒーレンシープロトコル126を利用して、キャッシュラインたとえば64バイトのキャッシュブロックの内容および状態の制御または修正を促すことができる。キャッシュコヒーレンシープロトコル126を利用して、コア1041から104N、非コア108、相互接続インタフェースコントローラ1201から120Nおよび124等に関連した様々なメッセージまたは要求たとえば処理に応答することができる。キャッシュコヒーレンシープロトコル126はさらに、コア1041から104N、非コア108のうちの少なくとも1つに関連付けられる処理に対応したキャッシュの現在の状態たとえばキャッシュラインの状態に関連する様々な遷移を制御することもできる。一実施形態では、コアプロセッサ1041から104Nのうちの1以上が、キャッシュコヒーレンシープロトコル126に影響を与えうる処理を実行する場合がある。これら処理は、キャッシュコヒーレンシープロトコル126によって、たとえば相互接続インタフェースコントローラ経由で、非コア108を介してトランザクション、要求、およびメッセージの少なくとも1つに変換され、これにより、キャッシュの一部たとえばキャッシュラインの状態遷移がなされてもよい。相互接続インタフェースコントローラ120は、関連するコア104からのメッセージまたは処理を変換して、同時に、同期させて、または非同期で、コア104のうちの少なくとも1つに非コアメッセージを提供することができる。別の実施形態では、キャッシュコヒーレンシープロトコル126が、非コアメッセージをコア104のうちの1以上に対して提供しない、という判断を行ったり、そのように検知したり、構成されていたりしてもよい。加えて、一実施形態では、コアプロセッサ1041から104Nのうちの1以上が、キャッシュラインの状態遷移を非コア108と相互作用せずに生じさせることが可能な処理を、キャッシュコヒーレンシープロトコル126と協働して実行してもよいたとえば、相互接続インタフェースコントローラは、コア104のいずれにも非コアメッセージを送信しなくてもよい。共通のキャッシュコヒーレンシープロトコルの一例には、MSIModifiedSharedandInvalid、MESIModifiedExclusiveSharedandInvalid、MOSIModifiedOwnedSharedandInvalid、MOESIModifiedOwnedExclusiveSharedandInvalid、MERSIModifiedExclusiveReadOnlyorRecentSharedandInvalid、MESIFModifiedExclusiveSharedInvalidandForward、Synapse、Berkeley,Firefly,Dragon等が含まれる。説明するように、キャッシュコヒーレンシープロトコル126の実施形態は、共通のキャッシュコヒーレンシープロトコルを拡張したり、より高度にしたり、変更または修正を加えたりすることができる。これらの、拡張したり、より高度にしたり、変更または修正したりといった処理のほんの数例の利点を挙げると、キャッシュミスが減ること、マルチコアプロセッサの相互接続ネットワーク上でのトラフィックおよびトラフィックの競合が減ること、および、失敗したトランザクションの効率的なロールバックが可能となること、などである。これらの利点およびその他の利点によって、マルチコアプロセッサの速度、パフォーマンス、および効率のうち少なくとも1つを向上させることができる。<キャッシュライン状態の例>図2は、高度なキャッシュコヒーレンシープロトコルたとえばキャッシュコヒーレンシープロトコル126などのキャッシュ状態202の一例を示す。簡単な説明をめざして、図2は、MSIキャッシュコヒーレンシープロトコルの延長を表すキャッシュ状態202を示している。しかし、図2に示す状態は、単独で、または他の特徴といずれの形式で組み合わせて、他のキャッシュコヒーレンシープトロコルたとえば、MESI、MOSI、MOESI,MERSI、MESIF、writeonce、Synapse、Berkeley、Firefly、Dragon等に拡張するように応用することが容易である。キャッシュ状態202は、キャッシュの一部の状態の様々な例に関している。一実施形態では、キャッシュの一部は、整数個のバイトを含むキャッシュの1つのラインまたは1つのブロックを含んでよい。別の実施形態では、キャッシュの一部が、整数個ではないバイト、または、整数個のビットを含むキャッシュの1つのラインまたは1つのブロックを含んでもよい。簡単な説明をめざして、特にキャッシュ状態202を有することができるキャッシュの一部を、キャッシュラインと称することにする。一例として、このキャッシュの一部は、キャッシュ1061から106Nまたはキャッシュ112のいずれかのキャッシュラインであってよい。図2は、共有SH204、修正M206、無効I208、観察O210、投機的S212、ログL214、および、遠隔ログRL216を含んだ、キャッシュ状態202の1つにおけるキャッシュラインの例を示す。SH204は、共有状態の一例である。状態SH204のキャッシュラインは、共有および無修正の状態で存在していてよいたとえば有効状態。状態SH204は、キャッシュが、キャッシュラインの最新のバージョンを含み、キャッシュラインが、共有状態にある他のコアのキャッシュメモリに存在していてもよいことを示していてよい。状態SH204のキャッシュラインは、このキャッシュラインが、複数のキャッシュに格納されており、クリーンであることを示していてよく、これは、メインメモリたとえばメモリ116のキャッシュラインのコピーに合致することを示唆している。状態SH204のキャッシュラインは、いつでも破棄することができる。一例として、コア104は、状態SH204のキャッシュラインには、まずキャッシュラインの所有権を要求しなくては、書き込みができない。M206は、修正状態の一例である。状態M206のキャッシュラインは、修正状態で存在することができるつまり、キャッシュラインの古いバージョンを含んでいてよい。たとえば、状態M206のキャッシュラインは、ダーティであると考えることができ、これは、メインメモリにおける自身の関連値から修正されていることを示唆している。状態M206のキャッシュラインを含むキャッシュは、メインメモリの状態もはや有効ではないの他の呼び出しを許可する前に、将来のいつかの時点において、キャッシュラインのデータをメインメモリに書き戻す必要があるようなものである。一例としては、コア104が、キャッシュラインの所有権を要求することができ、所有権要求が許可されると、次にコア104がキャッシュラインを更新することができる。ひとたびコア104がキャッシュラインの更新を行うと、キャッシュラインは状態M206となる。他のコア104は、このキャッシュラインが、キャッシュメモリ106のいずれかにおいて修正状態M206である場合、クリーンまたはダーティなコピーを有していてよい。I208は、キャッシュラインが無効であると考えられる無効状態の一例である。状態I208のキャッシュラインは、有効ではなく、もはやキャッシュには存在していないキャッシュラインと考えられる。O210は、観察状態の一例である。たとえば状態O210は、コア104によって、キャッシュラインが投機的に読み出されていることを示唆してよい。メインメモリまたは他のコアが共有しているキャッシュメモリは、状態O210のキャッシュラインの最新バージョンを含んでよい。たとえば、キャッシュラインは、投機的読み出し処理によりコア104が読み出し、またはロードを行った後に、状態O210としてマークされてよい。一実施形態では、状態O210のキャッシュラインに対してコミットまたはロールバックが行われると、当該キャッシュラインは、共有状態SH204に遷移してよい。S212は、投機状態の一例である。たとえば状態S212は、特定のキャッシュにあるキャッシュラインが存在しておりたとえば有効である、且つ、既に投機的に修正されているまたは今後、投機的に修正されることを示唆していてよい。メインメモリは、キャッシュラインの古くなったバージョンを含んでいてよい。他方で、他のキャッシュメモリ106は、キャッシュラインの有効なコピーを有していない。これに対する例外は、唯一存在している他のキャッシュ106が、遠隔ログ状態にあるキャッシュラインの古い内容をもつコピーを含んでいるような場合であり、これに関しては後述する。一例としては、状態S212が、投機的ロードたとえば読み出しではなく投機的格納たとえば書き込みに関している点を除いては、状態O210と同等であってもよい。一実施形態では、投機状態S212のキャッシュラインは、コミットを実行すると修正状態M206に遷移してよく、一方でロールバックの際には無効状態I208に遷移する。L214は、ログ状態の一例である。一実施形態では、状態L214のキャッシュラインは、状態S212のキャッシュラインの古いコピーまたは対応する投機的バージョンであってよい。一実施形態では、ログ状態L214は、修正状態M206がトランザクション内に、たとえば修正状態M206のラインを所有しているものと同じコアによって書き込まれる場合に利用されてよい。この場合、影響を受けるキャッシュラインは、ログ状態L214にされ、キャッシュラインのコピーが作成されて、投機状態S212にタグ付される。キャッシュラインの投機コピーは、次に、トランザクション内の書き込み処理によって更新されてよい。トランザクションコミットの場合つまり、トランザクションが成功した場合、投機状態S212のラインが修正状態M206にされ、ログ状態L214のラインを破棄することができる無効状態208にする。他方で、トランザクションがロールバックした場合にはトランザクションが成功しなかった場合、投機状態S212のラインを破棄して無効状態I208にする、ログ状態L214のキャッシュラインを修正状態M206に戻して、キャッシュラインの古い内容を復帰させる。一実施形態では、投機状態S212のキャッシュラインは常にシステムのどこかに古い内容をもつクリーンコピーをもつことで、ロールバックの場合には状態復帰をすることができる。たとえば、古い内容は、同じキャッシュ106にログ状態L214であってもよいし、別のキャッシュ106に遠隔ログされていてもよいし、キャッシュ112またはメインメモリにコピーを有していてもよい。RL216は、遠隔ログ状態の一例である。一実施形態では、状態RL216のキャッシュラインは、別のコアが完全な更新を要求してきているキャッシュラインの古いコピーバージョンである。一実施形態では、コア1041が、たとえばトランザクション実行の一部として、キャッシュライン全体を上書きするとして検知たとえば投機することができる。コア1041は、SRFOWDを実行して、たとえば、修正状態M206のラインを有していたコア104Nからキャッシュラインの所有権を取得してよい。コア104Nは、次に、遠隔ログ状態216にキャッシュラインの現在のコピーを維持することができる。コア1041がトランザクションを完了することができない場合には、コア104Nは、遠隔ログ状態216にマークされているキャッシュラインを、有効状態たとえば修正状態M206に復元することができる。コア1041がトランザクションを成功裏に完了した場合には、コア104Nが、無効状態208に移動させることで、遠隔ログ状態216のキャッシュラインを破棄することができる。したがい、上述した状態の例を利用すると、例である環境100が、違反を検知するメカニズムを持つことができ、キャッシュラインの古い内容を復帰させるサポートを行うことができるようになる。<プロセッサ処理の例>図3は、キャッシュコヒーレンシープロトコル126をサポートするよう実行可能なプロセッサ処理302をもつ環境300の一例を示す。たとえば、プロセッサ処理302は、プロセッサコア1041から104Nの1以上により実行されて、キャッシュコヒーレンシープロトコル126に影響を与える。プロセッサ処理302の例には、プロセッサ読み出しPRd304、プロセッサ書き込みPWr306、プロセッサコミットPCo308、プロセッサロールバックPRo310、および、プロセッサ投機的完全書き込みPSCWr312が含まれてよい。一実施形態では、プロセッサ処理302の一例が、1以上のプロセッサコア104により実行されてよい。一実施形態では、プロセッサ処理302が、たとえば、プロセッサコアによるトランザクションの実行中に実行されてもよい。しかし別の実施形態では、プロセッサ処理302が、たとえば、トランザクション内で、トランザクションの外部で、またはトランザクションの内外両方において、実行されてもよい。今後の記載では、明瞭を期すために、これらの処理をトランザクション内で実行する、として説明を行う。したがって、一実施形態では、プロセッサ読み出しPRd304、プロセッサ書き込みPWr306、および、プロセッサ投機的完全書き込みPSCWr312が、トランザクションの投機的な性質から、投機的処理である。当業者であれば、トランザクションの外部で実行されるプロセッサの処理を説明するために必要な拡張を用意に想到することができる。プロセッサ読み出し処理PRd304は、プロセッサコアが、メモリ位置を読み出すロード命令を実行したことを示す。関連するキャッシュラインの状態に応じて、キャッシュコヒーレンシープロトコル126に知らせる必要がある場合がある。PRd304は、プロセッサコアが読み出し命令を実行したことをキャッシュコヒーレンシープロトコル126に知らせるために利用されてよい。プロセッサ書き込み処理PWr306は、プロセッサコアが、メモリ位置に書き込む格納命令を実行したことを示す。関連するキャッシュラインの状態に応じて、キャッシュコヒーレンシープロトコル126に情報を知らせる必要がある。PWr306は、プロセッサコアが書き込み命令を実行したことをキャッシュコヒーレンシープロトコル126に知らせるために利用されてよい。プロセッサコミット処理PCo308は、プロセッサコアが現在実行されているトランザクションにコミットすることを示す。PCo308は、プロセッサコアがコミット命令を実行したことをキャッシュコヒーレンシープロトコル126に知らせるために利用されてよい。プロセッサロールバック処理PRo310は、プロセッサが、現在実行されているトランザクションにロールバックしてよいことを示している。PRo310は、プロセッサコアがロールバック命令を実行したことをキャッシュコヒーレンシープロトコル126に知らせるために利用されてよい。一例としては、割り込み、メモリ違反、または、その他のイベントが、プロセッサコアが、トランザクションの実行を完了させないようにすることができる。この場合には、プロセッサが、他のコアに、トランザクションが成功しなかったことを通知する必要がある場合がある。これら他のコアの1以上は、トランザクションに関連付けられるキャッシュラインの古いコピーを保持している場合があるので、そのように動作して、これらが古いキャッシュラインコピーをロールバックする必要がある場合がある。プロセッサ投機的完全書き込み処理PSCWr312は、プロセッサコアが、キャッシュの一部キャッシュライン全体を上書きする旨を投機することを示すつまり、キャッシュラインに対して投機的に書き込むこと。したがって、他のコアは、この処理に関して知らされる必要がある場合がある。PSCWr312は、キャッシュコヒーレンシープロトコル126に対して、プロセッサコアが、投機的な完了書き込み命令を実行したことを通知するために利用されてよい。一実施形態では、PSCWr312処理が、データなしの所有権投機的要求SRFOWDと等しい。一例としては、プロセッサコアは、完全なキャッシュラインを書きこむことを投機実行してよい。この場合には、プロセッサコアは、たとえばPSCWr312処理のような形式で、キャッシュラインのためにデータなしで投機的な所有権要求を送ることができる。一実施形態では、必要な場合には次に、キャッシュコヒーレンシープロトコル126が、非コア108の関連するメッセージの生成を促して、この処理をコア104に知らせてもよい。<非コアトランザクションの例>図4は、キャッシュコヒーレンシープロトコル126をサポートするために実行されてよい非コアトランザクション402を持つ環境400の一例を示す。一例として、プロセッサ処理302は、非コア108で生じる非コアトランザクション402に変換されてよい。非コアトランザクション402の例には、非コア読み出しPRd404、非コア書き込みPWr406、非コアコミットPCo408、非コアロールバックPRo410、および、非コア投機的完全書き込みUSCWr412、および、データdata414が含まれてよい。非コア読み出しPRd404は、他のコアに、キャッシュラインが読み出された、または読み出されようとしていることを知らせる。キャッシュラインの状態によって、プロセッサが実行するPRd304処理は、URd404メッセージを非コア108で生成することができる。非コア書き込みUWr406は、他のコアに、キャッシュラインが書き込まれた、または書き込まれようとしていることを知らせる。キャッシュラインの状態によって、PWr306処理は、非コアでUWrメッセージを生成することができる。非コアコミットUCo408は、他のコアに、たとえば、コアがそのトランザクションにコミットしていることを知らせる。UCo408のメッセージには、コミットを実行しているコアの識別子IDが含まれてよい。非コアロールバックURo410は、他のコアに、たとえば、コアが、そのトランザクションをロールバックしていることを知らせる。このメッセージには、ロールバックを実行しているコアのIDが含まれてよい。非コア投機的完全書き込みUSCWr412は、他のコアに、たとえば、プロセッサが、投機的にデータなしに所有権要求をキャッシュラインに対して行っていることを知らせる。キャッシュラインの状態によって、コアが実行するPSCWr312処理は、非コアでUSCWr412を送信することを示唆してよい。このメッセージには、SRFOWD処理を実行しているコアのIDが含まれてよい。データdata414は、コアまたはメインメモリのいずれかが、たとえばキャッシュラインの内容で応答する非コアトランザクションである。<キャッシュコヒーレンシー状態遷移の例>図5は、たとえば非コア108の相互接続インタフェースコントローラ120から見たキャッシュコヒーレンシープロトコル126のキャッシュ状態の状態遷移502-538を示す環境500の例を示す。各状態遷移502-538は、非コア108で観察されるメッセージメッセージ/応答の対の第1のコンポ―ネント、および、もしあれば、対応する状態遷移が生成した応答つまりメッセージ/応答の対の第2のコンポーネントとして特定されてよい。表1は、図5の状態遷移502-538と、関連する非コアメッセージ/応答の対の間の関連付けの例を示す。図5では、各状態遷移502-538は、非コア108で観察されるメッセージたとえばメッセージ/応答の対のメッセージ部分および関連する応答たとえばメッセージ/応答の対の応答部分で特定することができる。この例としては、図5の状態遷移530つまり、状態M206から状態RL216への遷移は、表1の以下に示す非コアメッセージ/outの対に関連付けられる。USCWr412/-この非コアメッセージ/応答の対では、USCWr412つまり、非コア投機的完全書き込みが、非コアで観察されるメッセージであり、一方では、状態遷移530が生成する非コアメッセージ/応答の対の応答部分が、-で示されており、これは、非コア108でほかに何もしないことを示唆している。一例としては、状態遷移530で、USCWr412が、1以上のコアプロセッサ104によって非コア108内に観察されるメッセージであってよい。このUSCWr412メッセージは、PSCWr312プロセッサ投機的完全書き込み処理を実行するコアプロセッサ104の1つであってよく、これは、コアプロセッサが、完全なキャッシュラインに、たとえばトランザクションの実行の一部として書き込むことができることを投機することを示唆している。キャッシュラインが、書き込みを実行しているものとは異なるコアのキャッシュに修正状態M206で現在あると想定すると、キャッシュラインの状態は、遠隔ログ状態RL216に遷移する。この状態遷移530に対する応答は、表1に、-として示されており、これは、状態遷移530への応答が他のものとは関係がないことを示唆している。一実施形態では、状態遷移530に関して、キャッシュラインの所有権を有する第1のプロセッサコアが、第2のプロセッサコアに関連付けられるメッセージUSCWr412を観察すると、キャッシュラインのコピーを作成して、そのキャッシュラインを、状態RL216としてタグ付することができる。第1のプロセッサコアは、第2のプロセッサコアの識別子IDを、RL216のキャッシュラインと関連付けることができる。第1のコアは、さらに、キャッシュラインコピーのデータなしに受領確認を提供することで、第2のコアにキャッシュラインの所有権を手放して、状態RL216にキャッシュラインコピーを維持することができる。別の例としては、図5の状態遷移512がつまり状態RL216から状態MRL216への遷移が、表1で、次に示す非コアメッセージ/応答の対と関連付けられる。URo410/-この非コアメッセージ/応答の対では、URo410つまり非コアロールバックが、非コアで観察されるメッセージであり、一方では、状態遷移512が生成する非コアメッセージ/応答の対の応答部分が、-で示されており、これは、非コア108でほかに何もしないことを示唆している。したがって、状態遷移512は、キャッシュラインに関連付けられ、非コア108により観察される非コアメッセージURo410を受けて、状態RL216のキャッシュラインが、状態M206に遷移することを示唆していてよい。したがって一実施形態では、第2のコアのIDに関連付けられる状態RL216にキャッシュラインのコピーを維持する第1のコアが、非コア108で第2のコアと関連付けられるURo410つまり非コアロールバックメッセージを観察すると、キャッシュラインのコピーを状態M206に戻すことができる。図5に示す別の例では、状態遷移524が、共有状態SH204から無効状態I208に遷移することを示す。表1では、状態遷移524が、以下の非コアメッセージ/応答の対に関連付けられる。UWr406/-USCWr412/-したがって、図5の状態遷移524は、表1では、UWr406つまり非コア書き込みトランザクションと関連付けられて、応答としてはほかには何もしない-で表すか、または、USCWr412つまり非コア投機的完全書き込みトランザクションと関連付けられて、応答としてほかには何もしない。したがってこの例では、非コア108で遷移UWr406またはUSCWr412を観察する共有状態S212にキャッシュラインを保持するコアプロセッサが、キャッシュラインを、無効状態I208にして、この状態遷移524に応じてなんら他の処理を行わなくてよい。図5に示す別の例として、状態遷移504は、ログ状態L214から遠隔ログ状態RL216への遷移を示している。表1では、状態遷移504が、以下の非コアメッセージ/応答の対に関連付けられる。USCWr412/URo410図5の状態遷移504は、表1で、USCWr412つまり非コア投機的完全書き込みトランザクション、および、状態遷移504に応じて生成されたURo410つまり非コアロールバック応答に関連付けられる。状態遷移504に関する一実施形態では、第1のコアが、ログ状態L214のキャッシュライン、および、第1のコアによる更新に利用できる投機状態S212の関連する新たなキャッシュラインを保持していてよい。第2のコアは、ログ状態L214のキャッシュラインのためのデータたとえば実行処理PSCWr312なしの所有権の投機的要求を実行することができる。第1のコアは、第2のコアの要求に関連付けられるUSCWr412メッセージを検知して、ログ状態L214のキャッシュラインを、遠隔ログ状態RL216にして、投機状態S212のキャッシュラインの新たなバージョンを無効状態I208にすることができる。ロールバックメッセージURo410は、状態遷移504に対する応答として生成されてよく、両方のコアで実行されるトランザクションにおけるコンフリクトが検知されたことにより、第1のコアがロールバックを実行したことを他のコアに通信してよい。図5に示す別の例では、状態遷移514が、ログ状態L214から共有状態SH204への遷移を示している。表1では、状態遷移514が、以下の非コアメッセージ/応答の対に関連付けられる。URd404/URo410data414図5の状態遷移514は、表1では、URd404つまり非コア読み出しトランザクション、および、URo410つまり非コアロールバックに状態遷移514に応じて生成されたデータ414応答をプラスしたものに関連付けられる。状態遷移514に関する一実施形態では、第1のコアが、ログ状態L214のキャッシュライン、および、第1のコアの更新のために利用される投機状態S212の関連する新たなキャッシュラインを保持していてよい。第2のコアは、ログ状態L214のキャッシュラインの読み出したとえば実行処理PRd304を実行してよい。第1のコアは、第2のコアの読み出しに関連付けられるURd404メッセージを検知して、ログ状態L214のキャッシュラインを共有状態SH204にして、投機状態S212のキャッシュラインの新たなバージョンを、無効状態I208にしてよい。ロールバックメッセージURo410は、データつまり読み出しが要求するデータ414とともに、状態遷移514に対する応答として生成されてよく、実行されたトランザクションのコンフリクトが検知されたことにより、第1のコアがロールバックを実行したことを他のコアに通信してよい。図5に示す別の例では、状態遷移508が、ログ状態L214から無効状態I208への遷移を示している。表1では、状態遷移508が、以下の非コアメッセージ/応答の対に関連付けられる。UWr406/URo410data414図5の状態遷移508は、表1では、UWr406つまり非コア書き込みトランザクション、および、URo410つまり非コアロールバックに状態遷移508に応じて生成されたデータ414応答をプラスしたものに関連付けられる。状態遷移508に関する一実施形態では、第1のコアが、ログ状態L214のキャッシュライン、および、第1のコアの更新のために利用される投機状態S212の関連する新たなキャッシュラインを保持していてよい。第2のコアは、ログ状態L214のキャッシュラインの書き込みたとえば実行処理PWr306を実行してよい。第1のコアは、第2のコアの書き込みに関連付けられるUWr406メッセージを検知して、ログ状態L214のキャッシュラインを無効状態I208にして、投機状態S212のキャッシュラインの新たなバージョンを、無効状態I208にしてよい。ロールバックメッセージURo410は、データつまり書き込みが要求するデータ414とともに、状態遷移508に対する応答として生成されてよく、実行されたトランザクションのコンフリクトが検知されたことにより、第1のコアがロールバックを実行したことを他のコアに通信してよい。図5に示す別の例では、状態遷移526が、観察状態O210から無効状態I208への遷移を示している。表1では、状態遷移526が、以下の非コアメッセージ/応答の対に関連付けられる。UWr406/URo410USCWr412/URo410状態遷移526に関する一実施形態では、第1のコアが、観察状態O210のキャッシュラインを保持していてよい。第2のコアは、観察状態O210のキャッシュラインのために、書き込みたとえば実行処理PWr306または投機的書き込みたとえば実行処理PSCWr312306を実行してよい。第1のコアは、第2のコアの書き込みに関連付けられるUWr406またはUSCWr412メッセージを検知して、観察状態O210のキャッシュラインを無効状態I208にしてよい。ロールバックメッセージURo410は、状態遷移526に対する応答として生成されてよく、実行されたトランザクションのコンフリクトが検知されたことにより、第1のコアがロールバックを実行したことを他のコアに通信してよい。状態遷移502-538のうち上述しなかったものは、上述した例と同様の方法で解釈されてよい。図6は、一例として、1以上のプロセッサコア104などのコアプロセッサから見たキャッシュコヒーレンシープロトコル126のキャッシュ状態202の状態遷移602-640を示す環境600の例を示す。各状態遷移602-640は、コアプロセッサが実行するコアプロセッサ処理つまりプロセッサ処理/応答の対の第1のコンポーネント、および、もしあれば、対応する状態遷移に応じて非コアに生成された応答メッセージつまりプロセッサ処理/応答の第2のコンポーネントとして特定されてよい。表2は、図6の状態遷移602-640と、関連する非コアメッセージ/応答の対の間の関連付けの例を示す。図6では、各状態遷移602-640が、プロセッサ処理プロセッサ処理/応答の対の処理部分などおよび、もしあれば非コア内に生成されている応答メッセージプロセッサ処理/応答の対の応答部分などで特定されてよい。一例として、図6の状態遷移620つまり、状態M206から状態L214への遷移が、表2の以下のプロセッサ処理/応答の対に関連付けられる。PSCWr312/-PWr306/-これらプロセッサ処理/応答の対では、PSCWr312つまり、プロセッサ投機完全書き込みおよびPWr306つまりプロセッサ書き込みが、コアプロセッサが実行可能なプロセッサ処理/応答の対の処理であり、状態遷移620が生成するプロセッサ処理/応答の各対の応答部分が、ほかに何もしないことを意味する-で表される。図6の状態遷移620の実施形態では、コアプロセッサ104が、キャッシュラインに関連付けられるPSCWr312処理を実行してよい。この処理は、コアプロセッサが、たとえばトランザクションの完了に成功することで、キャッシュライン全体に書き込みを行うことができると投機的に判断することを示していてよい。図6の状態遷移620に示すように、キャッシュラインが、書き込みを実行しているコア104のキャッシュ106で修正状態M206にあると想定して、キャッシュラインがログ状態L214に遷移する。この状態遷移620に対する応答は、表2では、ほかに何もしないことを意味する-で表されている。これは、メッセージを非コアで送り他のエージェントに処理に対する応答として通知する必要がないことを示しているというのも、処理は、書き込みを実行しているコア内でローカルに解決されているからである。一実施形態では、コアプロセッサが、キャッシュラインを状態L214にして、さらに、投機状態S212にタグ付されるキャッシュラインのコピーを生成する。コアプロセッサは次に、投機状態S212のキャッシュラインのコピーに書き込みを実行して、かつ、状態L214にログされている元のキャッシュラインを維持することができる。別の実施形態では、コアプロセッサは、投機状態S212のキャッシュラインのコピーに、コアプロセッサが、キャッシュライン全体に投機的に書き込むトランザクションの一環として書き込むことができる。図6の別の例では、状態遷移610が、ログ状態L214から修正状態M206に遷移することを意味している。表2では、状態遷移610が以下のプロセッサ処理/応答の対に関連付けられる。PRo310/-したがい、図6の状態遷移610は、表2では、Pro310つまりプロセッサロールバック処理、および、ほかには何もしない-で表される応答に関連付けられる。一実施形態では、コアプロセッサは、ログ状態L214のキャッシュラインを生成した遷移を完了できないことを検知して、PRo310処理を実行することもできる。次に、これが状態遷移610を生じさせ、状態L214のキャッシュラインが修正状態M206にロールバックする。図6に示す別の例として、遷移状態630が、投機状態S212から修正状態M206への遷移を示している。表2では、状態遷移630が以下のプロセッサ処理/応答の対に関連付けられる。PCo308/UCo408したがい、図6の状態遷移630は、表2ではPCo308つまりプロセッサコミット処理および非コアで生成されたUCo408つまり非コアコミット応答メッセージに関連付けられる。一実施形態では、コアプロセッサは、状態S212にタグ付されているキャッシュラインに関するコミット処理PCo308を実行することができ、これにより、キャッシュラインが状態S212から状態M206に、状態遷移630の一環として移動する。別の実施形態では、コアプロセッサが、トランザクションの完了に成功したことを検知すると、状態S212にタグ付されているキャッシュラインに影響を与えるコミット処理PCo308を実行することができ、これにより、キャッシュラインが状態S212から状態M206に、状態遷移630の一環として移動する。また別の実施形態では、コアプロセッサユニットが、状態S212にタグ付されているキャッシュラインの元のコピーをログ状態L214に維持してもよい。別の例として、図6では、状態遷移616が、投機状態S212から無効状態I208に遷移することを示している。表2では、状態遷移616が、以下のプロセッサ処理/応答の対に関連付けられる。PRo310/URo410したがって、図6の状態遷移616が、表2では、PRo310つまりプロセッサロールバック処理、および、非コア108等の非コアで生成されたURo410つまり非コアロールバック応答メッセージに関連付けられる。一実施形態では、コアプロセッサは、状態S212にタグ付されているキャッシュラインに関するコミット処理PRo310を実行することができ、これにより、キャッシュラインが状態S212から状態I208に、状態遷移616の一環として移動する。別の実施形態では、コアプロセッサが、トランザクションの完了に成功しないことを検知すると、状態S212にタグ付されているキャッシュラインに影響を与えるコミット処理PRo310を実行することができ、これにより、キャッシュラインが状態S212から状態I208に、状態遷移616の一環として移動する。また別の実施形態では、コアプロセッサが、状態S212にタグ付されているキャッシュラインの元のコピーをログ状態L214に維持して、状態S212にタグ付されているキャッシュラインが破棄されたときに、キャッシュラインの元のコピーがログ状態L214に残っているようにすることもできる。ログ状態L214のこのようなコピーは、この場合には、上述したように修正状態M206に遷移する。別の例として、図6では、状態遷移608が、ログ状態L214から無効状態I208に遷移することを示している。表2では、状態遷移608が、以下のプロセッサ処理/応答の対に関連付けられる。PCo308-したがって、図6の状態遷移608が、表2では、PCo308つまりプロセッサコミット処理、および、ほかには何もしない-で表される応答に関連付けられる。一実施形態では、コアプロセッサは、状態L214にタグ付されているキャッシュラインに関するコミット処理PCo308を実行して、これにより、キャッシュラインが、状態L214から状態I208に状態遷移608の一環として遷移してよい。別の実施形態では、コアプロセッサは、トランザクションの完了に成功したことを検知すると、状態L214にタグ付されているキャッシュラインに影響を与えるコミット処理PCo308を実行することができ、これにより、キャッシュラインが状態L214から状態I208に、状態遷移608の一環として遷移してよい。別の例として、図6では、状態遷移624が、共有状態SH204から投機状態S212に遷移することを示している。表2では、状態遷移624が、以下のプロセッサ処理/応答の対に関連付けられる。PWr306/UWr406PSCWr312/USCWr412したがい、図6の状態遷移624は、表2において、PWr306つまりプロセッサ書き込み処理、および、UWr406つまり非コア書き込み応答、または、PSCWr312つまりプロセッサ投機的完全書き込み処理、および、USCWr412つまり非コア投機的完全書き込み応答に関連付けられる。一実施形態では、コアプロセッサが、状態SH204にタグ付されているキャッシュラインに関する投機的書き込みたとえば投機的に書き込むことを実行して、これにより、キャッシュラインが、状態SH204から投機状態S212に状態遷移624の一環として遷移してよい。状態遷移602-640のうち上述しなかったものは、上述した例と同様の方法で解釈されてよい。図5および図6は、同じ図に描くこともできるプロセッサ処理図6を実線にして、非コアトランザクション図5を点線にすることで。ここでは明瞭に説明する観点から、図5と図6とを分けた。図1から図6は、ここでキャッシュコヒーレンシープロトコル126の様々な実施形態を説明するために利用された。しかし、これらの実施形態がキャッシュコヒーレンシープロトコル126の範囲を限定することを意図しているわけではなく、さらなる別の実施形態も存在する。別の実施形態の一例として、コアは、現在のトランザクションがコミットまたはロールバックするかを他のコアに伝える必要は必ずしもない。一例として、第1のコアは、他のコアに対して、自身がコミットまたはロールバックを行った旨を伝え、他のコアに、状態RL216のキャッシュラインを無効にして第1のコアのコアIDにタグ付させる必要がある場合もある。したがい、PCo308またはPRo310処理を実行するコアは、前にUSCWr412メッセージをたとえばキャッシュラインに関する現在の遷移中に非コアで送信させた場合に限ってUCo408またはURo410メッセージを生成する必要があるだろう。したがって、コミットメッセージおよびロールバックメッセージを選択的にフィルタリングすることで、コミットトランザクションおよびロールバックトランザクションを非コアで回避することができる。加えて、キャッシュラインに関する、データを伴わない所有者の投機的要求SRFOWDトランザクションの投機的な性質によって、プロセッサコアは、トランザクションがコミットされるか否かを知ることはできないことが示唆される。一例として、プロセッサコアは、トランザクションが成功裏に完了する場合に、キャッシュライン全体が更新されると確実に知ることができてよい。しかし一実施形態では、キャッシュコヒーレンシープロトコル126は、さもなくば成功したトランザクションがキャッシュライン全体の更新に失敗したときには、ロールバックURo410を強制執行するように拡張することができてよい。言い換えると、ロールバックは、関連するトランザクションが成功裏に完了して、プロセッサコアがコミットを実行した場合であっても、USCWr412により要求されたキャッシュラインに部分的に書き込む場合に生成することができる。別の実施形態では、キャッシュコヒーレンシープロトコル126が、さもなくば成功したトランザクションが、プロセッサコアがデータなしに所有権を投機的に要求したたとえばトランザクションの一環としてすべてのキャッシュライン全体の更新に失敗した場合であってもロールバックを強制執行するように拡張することができる。別の実施形態の例として、図5に示す状態遷移518に示すように、共有状態SH204のキャッシュラインを、別のコアがUSCWr412トランザクションを非コア108で発行したときに、状態遷移524の無効状態I208に移す。しかし別の実施形態では、そのキャッシュラインは、共有ログ状態不図示と称される新たな状態にしてもよい。他のコアは次に、関連するトランザクションにコミットして、共有時ログ状態の関連するキャッシュラインを、無効状態I208にしてよい。他のコアがトランザクションにロールバックする場合には、共有ログ状態のラインを、共有状態SH204に戻す。こうすることで、共有ログ状態のキャッシュラインを所有しているコアが、ロールバック時にほかの非コアトランザクションを必要とせずに、キャッシュラインにアクセスすることができるようになる。別の例として、コア104が非コア108で非コアトランザクション402を生成させる場合、他のコア104は、すぐにトランザクションを観察してサービス提供する。たとえば、PRd304処理を遠隔ログ状態RL216のキャッシュラインで実行しているコア104は図6の状態遷移614参照、キャッシュラインを、即座に修正状態M206に遷移させることができる。しかし別の実施形態では、この遷移は即座に行われなくてもよい。コア104は、自己スヌープされてよいたとえば、コアが、非コアで同じ関連するメッセージを受信してよい。一例として、第1のプロセッサコア104が、状態RL216のキャッシュラインでPRd304処理を実行する場合、URd404メッセージを、非コア108で送信することができるが、このメッセージは、状態RL216のキャッシュラインを退出することができる。自身のURd404メッセージを受信すると図5の状態遷移522に示す、第1のプロセッサコア104は、非コアで対応するキャッシュラインデータを送信してたとえばすべてのコアで共有されているキャッシュメモリまたはメインメモリ116を更新する、キャッシュラインを共有状態SH204に遷移させることで、処理を続行することができる。別の例として、コア104は、プロセッサ処理302等の処理を、上述したトランザクション内で実行することができる。しかし別のある実施形態では、コア104が、トランザクション内で実行された読み出しとトランザクション外で実行された読み出しとを区別することができる。したがい、新たなプロセッサ処理は、たとえば、トランザクション内の読み出しが、PRdプロセッサの投機的読み出し処理として定義され、トランザクション外の読み出しは、PURdプロセッサのトランザクショナルではない読み出し処理と定義されてよく、後者は、非投機的な読み出しに相当する。同じことが書き込みおよび完全なライン書き込みにも当てはまるだろう。したがい、新たなプロセッサ処理は、たとえば、トランザクション内の書き込みが、PWrプロセッサの投機的書き込み処理として定義され、トランザクション外の書き込みは、PUWrプロセッサのトランザクショナルではない書き込み処理と定義されてよく、後者は、非投機的な書き込みに相当し、トランザクション内の完全な投機的書き込みが、PUCWrプロセッサの投機的な完全な書き込み処理として定義され、トランザクション外のプロセッサの書き込みは、PUCWrプロセッサの完全なトランザクショナルではない書き込み処理と定義されてよく、PCWrは、データの内所有権要求を生成する動作と類似していてよい。この場合の様々な状態間の遷移の拡張は簡単である。<プロトコル処理の例>図7から図9は、ここで説明する拡張されたキャッシュコヒーレンシープロトコルの様々な態様を示すフローチャートの例を示す。図7は、コアプロセッサユニットがキャッシュメモリの一部分たとえばキャッシュラインに投機的に書き込みを行うキャッシュコヒーレンシープロトコルの態様を含む方法700の一例を示す。702で、コア104の1つ等のプロセッサコアが、キャッシュメモリに投機的な書き込みを行う。一実施形態では、プロセッサコアは、キャッシュライン全体に投機的に書き込む。別の実施形態では、プロセッサコアは、トランザクション実行の一環として、修正状態M206のキャッシュライン全体に投機的に書き込みを行う。一例としては、プロセッサコアは現在のトランザクションがコミットするか否かを保証することができないので、キャッシュライン全体に投機的に書き込みを行う。704で、プロセッサコアは、キャッシュラインをログ状態たとえばログ状態L214に遷移させる。一例としては、プロセッサコアが修正状態M206のラインを有しており、PWr306またはPSCWr312処理を実行する場合、キャッシュラインをログ状態L214にして、ローカルなトランザクションにとってキャッシュラインの古いコピーであることを示す。706で、プロセッサコアは新たなキャッシュラインを作成して、新たなキャッシュラインを投機状態であるとしてタグ付する。一実施形態では、プロセッサコアがPWr306処理を実行する場合には、新たなキャッシュラインは、投機状態S212で作成され、トランザクション内の格納命令により更新されたキャッシュラインの新たなコピーであってよい。プロセッサコアがPSCWr312処理を実行する場合には、新たなキャッシュラインは、投機状態S212で作成され、トランザクション内の格納命令により更新されたキャッシュラインの新たなバージョンであってよい。一実施形態では、プロセッサコアは、更新を新たな部分に行うことができるたとえば、投機状態S212のキャッシュライン。この場合のPWr306およびPSCWr312処理の間の差は、プロセッサコアがPSCWr312処理を実行する場合、新たなキャッシュラインがキャッシュラインのコピーである必要がないことである。しかし別の実施形態では、キャッシュラインの新たなバージョンがキャッシュラインのコピーであってよく、新たなキャッシュラインが、キャッシュラインのコピーであってよい。例えば、プロセッサコアが、共有状態S212のキャッシュラインにPWr306またはPSCWr312処理を実行する場合には、UWr406またはUSCWr412トランザクションがそれぞれ非コアで送信され、キャッシュラインが小槻状態S212に遷移させられる。708で、プロセッサコアはコミット処理を実行してよいたとえばPCo308。一実施形態では、プロセッサコアは、トランザクションが成功する場合、PCo308を実行することができる。これにより、プロセッサコアの識別子つまりIDをもつUCo408トランザクションが、非コア108で送信されてよい。710で、キャッシュラインを別の有効な状態にするたとえばM206。一例としては、コミット処理に呼応して、キャッシュラインが、投機状態S212から修正状態M206に遷移されてよい。この結果、ログ状態にタグ付されているキャッシュラインをこれ以上維持する必要がなくなる。したがい712で、プロセッサコアは、ログ状態にタグ付されているキャッシュラインを、無効状態I208にすることで破棄することができる。プロセッサコアが708でコミット処理を行わない場合、714で、プロセッサコアはPRo310等のロールバック処理を実行してよい。一実施形態では、トランザクションが成功しない場合に、プロセッサコアがロールバック処理を実行してよい。ロールバック処理によって、ロールバックメッセージURo410などが、プロセッサコアのIDとともに、非コア108で送信されてよい。ロールバック処理の結果、716で、プロセッサコアは、ログ状態にタグ付されているキャッシュラインを、別の有効な状態に変更することができる。一例では、プロセッサコアが、ログ状態L214にタグ付されているキャッシュラインの状態を修正状態M206に変更することができる。718で、ロールバック処理の結果、プロセッサコアが、投機的な状態にタグ付されている新たなキャッシュラインを、たとえば無効状態I208にタグ付することで破棄してよい。図8は、プロセッサコアがキャッシュラインのデータを伴わない所有権の投機的要求を行う、キャッシュコヒーレンシープロトコルの態様を含む方法800の例を示すフローチャートである。802で、一実施形態では、プロセッサコアが、キャッシュラインのデータを伴わない所有権要求を行うPSCWr312処理を実行してよい。PSCWr312処理によって、プロセッサコアのIDを含むUSCWr412メッセージが、非コア108で送られてよい。一例としては、プロセッサコアが、キャッシュライン全体等のキャッシュメモリの一部を投機的に書き込むことができる。プロセッサは、キャッシュライン全体の上書きを投機的に行うことができるので、プロセッサは、キャッシュラインに関連付けられていているデータを受信する必要がない。したがい、要求されているキャッシュラインを所有する実体はいずれもたとえば所有者コア、キャッシュラインに関連付けられるデータをプロセッサコアに送信する必要がない。一実施形態では、PSCWr312処理を実行しているプロセッサコアが、提供されているキャッシュラインに含まれているデータなしにキャッシュラインの所有権を要求する。804で、プロセッサコアは、キャッシュラインの所有権に対する受領確認を検知するが、この受領確認には、所有者コアOCからのキャッシュラインからのデータが含まれていない。加えて、OCは、遠隔ログ状態RL216にタグ付されたキャッシュラインのコピーを作成する。一例として、現在キャッシュラインを所有しているOCたとえば異なるプロセッサコア104は、プロセッサコアが実行するPSCWr312処理に応答して、単に、所有権要求に対してキャッシュラインの所有権をプロセッサコアに許可する受領確認のみを返す。別の言い方をすると、非コア108で検知したUSCWr412メッセージに対して、キャッシュラインを現在所有しているOCは、単に、プロセッサコアに対して、USCWr412メッセージにIDを含んだ受領確認のみ返し、要求されているキャッシュラインのプロセッサコアの所有権の許可を行う。受領確認には、キャッシュラインのデータ内容は含めない。806で、プロセッサコアは、投機状態たとえば状態S212をタグ付した新たなキャッシュラインを作成することができる。新たなキャッシュラインは、キャッシュラインの新たなコピーまたは新たなバージョンであってよい。808で、プロセッサコアがコミットまたはロールバックのいずれを実行するかを判断する。一実施形態では、プロセッサコアが、PCo308を実行することによってトランザクションにコミットしたり、Pro310を実行することでトランザクションをロールバックしたりする。808で、もしもプロセッサコアがコミットを実行する場合には、810で、プロセッサコアは、新たなキャッシュラインを別の有効な状態にタグ付することができる。一例としては、プロセッサコアは、新たなキャッシュラインを投機状態S212から修正状態M206へと変更することができる。812で、プロセッサコアは、関連するコアIDを持つコミットメッセージを、相互接続ネットワーク110で送る。814で、OCは、たとえばキャッシュラインの状態をI208に変更することで、遠隔ログ状態にタグ付されたキャッシュラインを破棄する。他方で、808でプロセッサコアがロールバックを実行する場合には、816で、プロセッサコアは、前に投機状態にタグ付されていた新たなキャッシュラインを、無効状態にタグ付し直すことができる。818で、プロセッサコアは、コアIDが関連付けられたロールバックメッセージを相互接続ネットワーク110経由で送信する。820で、OCタグは、状態RL216に保持されているキャッシュラインを有効状態M206にタグ付する。図9は、プロセッサコアが、キャッシュラインのデータを伴わない所有権の投機的要求を検知する、キャッシュコヒーレンシープロトコルの態様を含む方法900の例を示すフローチャートである。902で、一実施形態で、第1のプロセッサコアは、非コア108でキャッシュラインのデータを伴わない所有権要求をしている第2のプロセッサコアのIDを含むメッセージUSCWr412を検知してよい。一例として、要求を発している第2のプロセッサコアは、キャッシュライン全体のデータを伴わない所有権要求をしているPSCWr312処理を実行したものであってよい。要求をしている第2のプロセッサコアは、キャッシュライン全体の上書きを投機的に実行するので、第1のプロセッサコアが、キャッシュラインに関連するデータを送信する必要がない。904で、要求されているキャッシュラインを修正状態M206で所有している実体がたとえば第1のプロセッサコア104、要求されているキャッシュラインのバックアップコピーを作成して、要求している第2のプロセッサコアのIDとともに、遠隔ログ状態たとえば状態RL216にタグ付する。906で、第1のプロセッサコアが、第2のプロセッサコアにキャッシュラインの所有権の受領確認を提供する。一実施形態では、受領確認は、第1のプロセッサコアから第2のプロセッサコアに対して、キャッシュラインにデータを含ませずに提供される。この時点では、キャッシュラインの所有権が、要求している実体に渡される。一例としては、受領確認が、キャッシュラインにデータを含まない非コア108で検知されたメッセージUSCWr412のIDで、第2のプロセッサコアに提供される。908では、第1のプロセッサコアが、第2のプロセッサコアが、要求されているキャッシュラインに関連するコミットまたはロールバックを実行したかを検知する。908でもしも第1のプロセッサコアが第2のプロセッサコアがコミットを実行したと検知した場合には、910で第1のプロセッサコアが、たとえばその状態をRL216から無効状態I208に変更することでバックアップコピーを破棄する。他方で、もしも908で第1のプロセッサコアが、第2のプロセッサコアが、要求されているキャッシュラインに関連するロールバックを実行したことを検知した場合には、912で、第1のプロセッサコアが、キャッシュラインのバックアップコピーを、別の有効な状態にタグ付する。一例としては、第1のプロセッサコアが、キャッシュラインのバックアップコピーの状態をRL216から状態M206または任意の他の有効な状態に変更させることができる。別の実施形態図9で示していないものの一例として、第1のプロセッサコアは、たとえば投機的にキャッシュラインのデータを伴わない所有権を要求している第3のプロセッサコアのIDを含む第2のUSCWr412メッセージを検知することができる。この例では、第1のプロセッサコアが、遠隔のログ状態RL216にキャッシュラインを保持して、第3のプロセッサコアのIDを記録する。第2のプロセッサコアは、第2のUSCWr412メッセージを非コア108で観察し、そのトランザクションを、その関連するキャッシュラインを投機状態S212にすることで、図5に示す状態遷移518に示す無効状態I208に移すことで、ロールバックして、関連するURo410メッセージを非コア108で送る。図10は、複数のマルチコアプロセッサを含む高度な、または拡張されたキャッシュコヒーレンシープロトコルを実行するために利用可能な環境1000の一例を示す。環境1000では、ここで説明したキャッシュコヒーレンシープロトコル126が、拡張されて、複数のプロセッサ1021から102Nでキャッシュコヒーレンシーを提供することができるNは、1を超える整数である。主題を、構造における特徴および方法における動作の両方または片方に特化した言語で記載してきたが、添付請求項に定義されている主題は、必ずしもこれら記載してきた特定の特徴または動作に限定されない点を理解されたい。そうではなくて、記載してきた特定の特徴または動作は、請求項を実装する形態の例として開示されている。たとえば上述した装置またはプロセッサのすべての任意的な特徴を、ここで説明した方法またはプロセスに関して実装可能である。例における具体例は、1以上の実施形態のいずれにおいても利用可能である。"