キャッシュ メモリのコヒーレンシ プロトコルの例を次に示します。簡単にするために、図では、状態「I 」(またはタグのミス)から発生するすべての「ミス」読み取りおよび書き込みステータス トランザクションは示されていません。これらは、新しい状態に直接示されています。次のプロトコルの多くは、歴史的な価値しかありません。現在使用されている主なプロトコルは、R-MESI タイプ/MESIF プロトコルと HRT-ST-MESI(MOESI タイプ)またはこれらのサブセットまたは拡張です。
キャッシュ一貫性の問題
マルチプロセッサ システム、マルチコア、 NUMA システムなどのシステムでは、プロセッサ、コア、ノードごとに専用のキャッシュが使用されるため、同じデータが複数のキャッシュに格納されると一貫性の問題が発生する可能性があります。この問題は、1 つのキャッシュでデータが変更されたときに発生します。この問題は、次の 2 つの方法で解決できます。
- 他のキャッシュ上のすべてのコピーを無効にする(ブロードキャスト無効化)
- 他のキャッシュ上のすべてのコピーを更新します (書き込みブロードキャスト)。メモリは更新される (ライトスルー) 場合もあれば、更新されない (ライトバック) 場合もあります。
注: 一貫性は通常、データ (オペランドとして) にのみ適用され、命令には適用されません (自己変更コードを参照)。
スキームは以下に基づいて分類できます。
- スヌーピースキームとディレクトリスキーム、共有キャッシュの比較
- ライトスルー vs ライトバック(所有権ベース)プロトコル
- 更新プロトコルと無効化プロトコル
- 介入か非介入か
- ダーティ共有プロトコルと非ダーティ共有プロトコル (MOESI vs MESI)
データの一貫性を維持するために 3 つのアプローチが採用されています。
- バス監視またはスヌーピング– 一般的にバスベースの SMP (対称型マルチプロセッサ システム/マルチコア システム) に使用されます。
- ディレクトリベース – メッセージパッシング– すべてのシステムで使用できますが、通常は NUMA システムと大規模なマルチコアシステムで使用されます。
- 共有キャッシュ– 一般的にマルチコアシステムで使用される
スヌーピー一貫性プロトコル
SMPシステムのようなバスベースのシステムで使用されるプロトコル
SMP – 対称型マルチプロセッサ システム
2つ以上の同種のプロセッサと集中化された共有メインメモリを備えた単一のOS(オペレーティングシステム)で動作するシステム

各プロセッサには、プロセッサとメインメモリ間のブリッジとして機能する独自のキャッシュがあります 。接続は、システムバスまたはクロスバー(「xbar」)、またはアドレス用のバスとデータ用のクロスバー(データクロスバー)の2つの従来のアプローチの組み合わせを使用して行われます。[1] [2] [3]
これらのシステムのボトルネックは、トラフィックとメモリ帯域幅です。帯域幅は、大きなデータ バス パス、データ クロスバー、メモリ インターリーブ(マルチバンク並列アクセス)、および順序外データ トランザクションを使用することで増加できます。トラフィックは、共有メモリに対して「フィルター」として機能するキャッシュを使用することで削減できます。つまり、キャッシュは SMP システムの共有メモリにとって不可欠な要素です。
共通のメモリを共有する個別のキャッシュを備えたマルチプロセッサ システムでは、同じデータが複数のキャッシュに格納されることがあります。データが 1 つのキャッシュでのみ変更されると、データの一貫性の問題が発生する可能性があります。複数のプロセッサの一貫性を維持するためのプロトコルは、キャッシュ一貫性プロトコル
と呼ばれます。
通常、SMP では、一貫性は「バス監視」または「スヌーピー」(ピーナッツのキャラクター、スヌーピーにちなんで)アプローチに基づいています。
スヌーピング システムでは、すべてのキャッシュがバス トランザクションを監視(またはスヌープ)してデータを傍受し、キャッシュにコピーがあるかどうかを判断します。
キャッシュ間のデータの一貫性を維持するために、さまざまなキャッシュ一貫性プロトコルが使用されます。[4]
これらのプロトコルは通常、キャッシュ状態 (3 ~ 5 および 7 以上) とそれらの間のトランザクションのみに基づいて分類されますが、これにより混乱が生じる可能性があります。
この定義は、これらが生成するアクションとして重要かつ不可欠な情報が欠けているため不完全です。これらのアクションは、プロセッサまたはバス コントローラによって呼び出されます (介入、無効化、ブロードキャストなど)。アクションの種類は実装に依存します。状態とトランザクション ルールは、プロトコルに関するすべてを網羅しているわけではありません。たとえば、変更されていないデータに対する共有介入を伴うプロトコル MESI と介入のない MESI は異なります (以下を参照)。同時に、異なる状態を持つ一部のプロトコルは実質的に同じである可能性があります。たとえば、4 状態の MESI Illinois プロトコルと 5 状態の MERSI (R-MESI) IBM / MESIF-Intel プロトコルは、同じ機能の異なる実装にすぎません (以下を参照)。
最も一般的なプロトコルは、4 状態のMESIと 5 状態のMOESIです。各文字は、キャッシュの可能な状態の 1 つを表します。他のプロトコルでは、これらの適切なサブセットを使用しますが、実装が異なり、用語も異なりますが同等です。MESI、MOESI、またはそれらのサブセットという用語は、通常、特定のプロトコルではなく、プロトコルの クラスを指します。
キャッシュ状態
MESI 状態と MOESI 状態は、多くの場合、異なる名前で呼ばれることが多いです。
- M =変更済み、 D =ダーティ、 DE =ダーティ排他、 EM =排他的変更済み
- 1 つのキャッシュのみが変更されます。交換時に書き戻しが必要です。
- データは 1 つのキャッシュにのみ保存されますが、メモリ内のデータは更新されません (無効、クリーンではありません)。
- O =所有者、 SD =共有ダーティ、 SM =共有変更、 T =タグ付き
- 変更済み、共有の可能性あり、所有済み、交換時に書き戻しが必要。
- データは複数のキャッシュに保存される可能性がありますが、メモリ内のデータは更新されません (無効、クリーンではありません)。 1 つのキャッシュのみが「所有者」であり、他のキャッシュは「有効」(S/V/SC) に設定されます。 バス読み取り要求では、データはメモリではなく「所有者」によって提供されます。
- E =排他的、またはR =予約済み、またはVE =有効排他的、またはEC =排他的クリーン、またはMe =排他的
- クリーン、1 つのキャッシュのみ。
- データは 1 つのキャッシュにのみ保存され、メモリ内ではクリーンです。
- S =共有またはV =有効またはSC =共有クリーン
- 共有または有効
- データは他のキャッシュと共有される可能性があります。データはクリーンまたはダーティです。SC の「クリーン」という用語は、ダーティである可能性もあるため誤解を招きます (Dragon プロトコルを参照)。
- I =無効です。
- キャッシュ ラインが無効です。キャッシュ ラインが存在しない (タグが一致しない) 場合は無効とみなされます。したがって、無効なデータは、データは存在するが無効であるか、キャッシュに存在しないことを意味します。
特別な州:
- F =転送またはR =最近
- MESIプロトコルの追加状態
- 最後に読み取られたデータ。これは、変更されていない共有データの「所有者」である特別な「有効」状態であり、一部の拡張 MESI プロトコル (MERSI または R-MESI IBM、[5] [6] MESIF – Intel [7] [8] ) で使用されます。R/F 状態は、値がクリーンであるが多くのキャッシュ間で共有されている場合に「介入」を許可するために使用されます。このキャッシュは介入 (共有介入) を担当します。バス読み取り要求では、データはメモリではなくこのキャッシュによって提供されます。MERSI と MESIF は、用語が異なる ( RではなくF ) 同じプロトコルです。R は「共有最終」(S L) と呼ばれることもあります。 [ 9 ] [ 10 ]
- 状態R = Recentは、 MERSI = R-MESIプロトコルだけでなく、他のいくつかのプロトコルでも使用されます。この状態は、他の状態と組み合わせて使用できます。たとえば、RT-MESI、HR-MESI、HRT-MESI、HRT-ST-MESIなどです。[6] [11] [12]この状態を使用するすべてのプロトコルは、R-MESIタイプと呼ばれます。
- H =ホバー– H-MESI (MESI プロトコルの追加状態) [11]
- Hover ( H ) 状態では、キャッシュ エントリ内の対応する値が無効なコピーであっても、キャッシュ ラインはディレクトリ内のアドレス タグを維持できます。有効な「読み取り」または「書き込み」操作により対応する値がバス上で発生すると (アドレス タグの一致)、エントリは有効なコピーで更新され、その状態はSで変更されます。
- この状態は他の状態と組み合わせて使用することができます。例えば、HR-MESI、HT-MESI、HRT-MESI、HRT-ST-MESIなどです。[6] [11] [12]
さまざまな一貫性プロトコル
スヌーピーの一貫性操作
- バス取引
- データ特性
- キャッシュ操作
バス取引
主な業務は以下のとおりです。
- ライトスルー
- 書き戻し
- 書き込み割り当て
- 書き込みなし割り当て
- キャッシュ介入
- 共同介入
- 汚い介入
- 無効化
- 書き込みブロードキャスト
- 介入放送
ライトスルー
- キャッシュ ラインは、キャッシュと MM の両方で更新されるか、または MM のみで更新されます ( write no-allocate )。
- 実装は簡単ですが、帯域幅を大量に消費します。単一の書き込みに適しています。
書き戻し
- データはキャッシュにのみ書き込まれます。データがキャッシュ内で置き換えられた場合、または他のキャッシュで要求された場合にのみ、データは MM に書き戻されます (書き込みポリシーを参照)。
- 同じキャッシュ ラインでのマルチ書き込みに適しています。
- 中間的な解決策:最初の書き込みはライトスルー、次の書き込みはライトバック(ライトワンスおよびBull HN ISI [20]プロトコル)。
書き込み割り当て
- ミスの場合、データは「所有者」または MM から読み取られ、その後キャッシュに書き込まれます (更新部分書き込み) (書き込みポリシーを参照)。
書き込みなし割り当て
- ミスの場合、データはキャッシュを介さずに MM にのみ書き込まれるか、Bull HN ISI プロトコルの場合と同様に、DまたはSDキャッシュにある「所有者」に書き込まれます (所有者更新)。そうでない場合は MM に書き込まれます。
- Write-no-Allocate は通常、Write Through に関連付けられます。
- キャッシュ介入
- (または略して「介入」)
- –共有介入– 共有クリーン介入(変更されていないデータに対して)
- –読み取りミスの場合、データはMM ではなく、所有者EまたはR / FまたはSによって提供されます (プロトコル Illinois、IBM R-MESI タイプ、および Intel MESIF を参照)。
- –共有介入– 共有クリーン介入(変更されていないデータに対して)
- –ダーティ介入(変更されたデータに対して)
- –読み取りミスの場合、データはM (D) またはO (SD) 所有者によって提供されるか、 MM ではなくE (R) (*) によって提供されます (例: MOESI プロトコル、RT-MESI、…)。
- –ダーティ介入(変更されたデータに対して)
- (*) –元の提案MOESIプロトコル[16] および他のいくつかのMOESIタイプの実装ではE (R)には適用されません。
- – 「介入」は「非介入 」に比べて優れています。キャッシュ間トランザクションは MM アクセスよりもはるかに高速であり、さらにメモリ帯域幅を節約します (メモリ トラフィックの削減)。したがって、拡張 MESI Illinois および R-MESI タイプ / MESIF は MOESI プロトコルよりもはるかに優れています (以下の MESI と MOESI を参照)
- 無効化
- – S (V) またはO (SD) (共有) 状態での書き込みヒットの場合、他のキャッシュ上のすべてのコピーを無効にするバス トランザクションが送信されます (書き込み無効化)。
- 書き込みブロードキャスト(書き込み更新)
- – S (V)またはO (SD)(共有)状態 で書き込みヒットすると、書き込みは他のキャッシュに転送され、そのコピーが更新されます(例:Intel Nehalem [22] Dragonプロトコル、Firefly(DEC))。
- – 注 – 他のキャッシュの更新操作は、スナーフィングとも呼ばれます。キャッシュはバスをスヌープし、キャッシュにヒットがあると、このキャッシュはバスを通過するデータをスナーフィングしてキャッシュを更新します。また、 H in (H-MESI) 状態の更新もスナーフィングとして定義できます。最初のケースでは、これは書き込みブロードキャスト操作で発生し、2 番目のケースでは読み取りと書き込みの両方の操作で発生します。
- 介入放送
- – 介入トランザクションでは、 H状態(H-MESI)のキャッシュはバス上で送信された値で無効なコピーを更新し、その状態はSで変更されます。[6]
- 書き込み無効化とブロードキャスト
- – キャッシュ ラインが別のプロセッサによって読み取られる前に、プロセッサによって複数の書き込み (通常は部分的な書き込み) が行われる場合、書き込み無効化の方が適しています。
- – 書き込みブロードキャスト (更新) は、データのプロデューサーが 1 人で、コンシューマーが多数いる場合に適していますが、次に再び読み取られないデータでキャッシュがいっぱいになると、状況は悪くなります (バス トラフィックの増加、キャッシュ干渉の増加)。
- - 無効化が一般的な解決策です。
データ特性
キャッシュされたデータには 3 つの特性があります。
- 有効
- 排他性
- 所有
- 有効
- – 無効ではないキャッシュ ライン、つまり MOES / D-SD-RV。
- 排他性
- – M (D) またはE (R) 状態では、データは 1 つのキャッシュでのみ有効 (データは共有されない) であり、 M (D) の場合は MM がクリーンではなく、 E (R)の場合は MM がクリーンです。
- 所有
- – MM (介入) の代わりに要求データを供給する責任があるキャッシュ– プロトコルに応じて、介入を行う必要があるキャッシュは、 MESI Illinois ではS - E - M、R-MESI タイプ / MESIF ではR / F - E - M 、MOESI タイプのプロトコルではM (D) またはO (SD) またはE (R) (*) になります (例: AMD64、[16] Bull HN ISI [20] – 以下の「読み取りミス」操作を参照)。
(*) – 実装によって異なります。
注: MOESI プロトコルのより制限的な「所有者」の定義と、このより一般的な定義を混同しないでください。
キャッシュ操作
キャッシュ操作は次のとおりです。
- ヒットを読む
- ミスを読む
- 書き込みヒット
- ミスを書く
- ヒットを読む
- – データはキャッシュから読み取られます。状態は変更されません
- –警告: これは明らかな操作なので、状態トランザクション図でもこれ以上考慮されません。
- ミスを読む
- – データ読み取り要求がバスに送信される
- – いくつかの状況があります:
- MMにのみ保存されるデータ
- – データはMMから読み取られます。
- – キャッシュは E(R)またはS(V)に設定されます
- – E (R) は、特別なバス ライン (「共有ライン」) を使用して「データ共有なし」を検出する場合です。Write -Once および Bull HN ISI プロトコル (以下の「書き込みヒット」を参照) を除く、E (R) 状態を持つすべてのプロトコルで使用されます。
- MM と、S (V)状態の 1 つ以上のキャッシュ、または R-MESI タイプ/MESIF プロトコルの R/F に格納されるデータ。
- – 状況は3つあります:
- – イリノイ プロトコル – ネットワーク プライオリティを使用して、Sコピーに所有権を一時的かつ任意に割り当てます。 - データは選択されたキャッシュによって提供されます。要求キャッシュはS ( MM クリーンとの共有介入
)に設定されます。 - – R-MESI タイプ / MESIF プロトコル – コピーはR / F状態 (共有所有者)にあります
– データはR / Fキャッシュによって提供されます。送信キャッシュはSに変更され、要求キャッシュはR / Fに設定されます(読み取りミスでは、「所有権」は常に最後の要求キャッシュによって取得されます) –共有介入。 - – その他のすべてのケースでは、データはメモリによって提供され、要求キャッシュはS (V) に設定されます。
- データは MM に格納され、E (R)状態の 1 つのキャッシュにのみ格納されます。
- – データはプロトコルに応じてE (R)キャッシュまたはMMによって供給されます。
–拡張MESI(例:Illinois、Pentium(R)II [14] )のE (R) 、R-MESIタイプ/MESIF、および同じMOESI実装(例:AMD64 )からのE(R) – 要求キャッシュはR-MESIタイプ/MESIFプロトコルではS (V)またはR / Fに設定され、 E (R)キャッシュはMEIプロトコルではS (V)またはIで変更されます。 - – その他のすべてのケースでは、データは MM によって提供されます。
- MM がクリーンでない 1 つ以上のキャッシュで変更されたデータ
- プロトコル MOESI タイプ – データは M (D)または O (SD)に保存され、その他のキャッシュは S (V)に保存されます。
- – データは「所有者」 M (D) またはO (SD)から要求キャッシュに送信されます。要求キャッシュはS (V) に設定され、 M (D) はO (SD)に変更されます。
- – MM が更新されません。
- プロトコル MESI タイプと MEI – データは M (D)に保存され、他のキャッシュは S (V) 状態に保存されます
- – 解決策は2つあります。
- – データはM (D)キャッシュから要求キャッシュに送られ、またMM(例えばイリノイ、Pentium(R)II [14] )にも送られる。
- – 操作は 2 つのステップで実行されます。要求トランザクションが停止され、データがM (D) キャッシュから MM に送信され、その後待機トランザクションが続行され、データが MM から読み取られます (例: MESI および MSI Synapse プロトコル)。
- – すべてのキャッシュは S(V)に設定されます
- 書き込みヒット
- – データはキャッシュに書き込まれます
- – いくつかの状況があります:
- S (V)または R/F または O (SD)のキャッシュ(共有)
- –無効にする
- –コピーバック
- – データはキャッシュに書き込まれ、無効化トランザクションがバスに送信され、他のすべてのキャッシュが無効化されます。
- – キャッシュはM(D)に設定されます
- –ライトスルー(ライトワンス、Bull HN ISI)
- – データはキャッシュとMMに書き込まれ、他のすべてのキャッシュは無効になります。キャッシュはR(E)に設定されます。
- –コピーバック
- –放送を書く(例:Firefly、Dragon)
- - データはキャッシュに書き込まれ、ブロードキャストトランザクションがバスに送信され、コピーを持つ他のすべてのキャッシュが更新されます。
- – 「共有ライン」がオフの場合、キャッシュはM (D) に設定され、それ以外の場合はO (SD) に設定されます。その他のコピーはすべてS (V)に設定されます。
- E (R)または M (D)状態のキャッシュ(排他性)
- – 書き込みは他のアクションなしでローカルで実行できます。状態はM(D)に設定(または維持)されます。
- ミスを書く
- –書き込み割り当て
- –変更された操作を意図して読み取り (RWITM)
- – 読み取りミス操作と無効化コマンドの組み合わせのように、キャッシュが書き込まれる(更新される)
- – 要求キャッシュはM(D)に設定され、他のすべてのキャッシュは無効化されます
- –放送を書く(例:Firefly、Dragon)
- – 読み取りミスと同様。「共有ライン」が「オフ」の場合、データはキャッシュに書き込まれ、M(D)が設定されます。それ以外の場合は、書き込みヒットと同様です。書き込みブロードキャスト
- –変更された操作を意図して読み取り (RWITM)
- –書き込みなし割り当て
- – データは MM に送信されますが、Bull HN ISI プロトコルの場合と同様に、キャッシュをバイパスして、D (M) キャッシュまたはSD (O) キャッシュにのみ送信されます。
- –書き込み割り当て
一貫性プロトコル
- –警告– 簡潔にするために、明らかにI状態 (またはタグ ミス)から発生したすべての読み取りおよび書き込み「ミス」状態トランザクションは、図には示されていません。これらは、新しい状態に直接示されています。
- – 注意 – 以下のプロトコルの多くは歴史的価値しかありません。現在使用されている主なプロトコルは、R-MESI タイプ / MESIF と HRT-ST-MES (MOESI タイプ) またはそのサブセットです。
———————————————————————————————————————

MESIプロトコル
州 MESI = DRVI
- – 他のキャッシュ内の「共有」コピーを検出するためにバスの「共有ライン」を使用する
- プロセッサ操作
- ミスを読む
- 代替実装には、標準 MESI (介入なし) と拡張 MESI (介入あり) の 2 つがあります。
- 1 – MESI「介入なし」(例:PowerPC 604 [24])
- –キャッシュにMコピーがある場合、トランザクションは停止し、 MキャッシュがMMを更新するまで待機します。その後、トランザクションは続行され、データはMMから読み取られます。両方のキャッシュはSに設定されます。
- – それ以外の場合は、データは MM から読み取られます。「共有ライン」が「オン」の場合はキャッシュがS に設定され、それ以外の場合はE に設定されます。
- 2 – MとEからのMESI「介入」 (例:Pentium(R)II [14])
- –キャッシュにMまたはEのコピー(排他性)がある場合、データはMまたはE(介入)から要求キャッシュに供給されます。送信キャッシュがMの場合、データはMM(コピーバック)にも同時に書き込まれます。すべてのキャッシュはSに設定されます。
- – それ以外の場合は、データは MM から読み取られます。「共有ライン」が「オン」の場合はキャッシュがS に設定され、それ以外の場合はE に設定されます。
- 書き込みヒット
- – キャッシュがMまたはE (排他性)の場合、書き込みは他のアクションなしでローカルで実行できます。
- – それ以外の場合、データはキャッシュに書き込まれ、無効化トランザクションがバスに送信され、他のすべてのキャッシュが無効化されます。
- – キャッシュはMに設定されています
- ミスを書く
- – RWITM 操作がバスに送信されます。操作は 2 つのステップで実行されます。「読み取りミス」と「無効化」コマンドで他のすべてのキャッシュを無効化し、次に状態Mで「書き込みヒット」を実行します(キャッシュ操作 - 書き込みミスを参照)。
- バス取引
- バス読み取り
- – M かつ「介入なし」の場合、データは MM に送信されます (コピーバック)
- – M と「介入」の場合、データは要求キャッシュとMM(コピーバック)に送信されます。
- – E (*) と「介入」の場合、データは要求キャッシュに送信されます
- – 状態はSに変更される(またはSのままになる)
- バス読み取り – (RWITM)
- – 「バスリード」と同様
- – キャッシュが「無効」に設定されている(I)
- バス無効化トランザクション
- キャッシュが「無効」に設定されている(I)
- オペレーション
- – 書き込み割り当て
- –介入:MからE(*)
- –書き込み無効化
- –コピーバック: Mの置き換え
- (*) – 拡張MESI
———————————————————————————————————————

MOESIプロトコル
状態 MEOSI = DR-SD-VI = T-MESI IBM [12]
- – 他のキャッシュ上の「共有」コピーを検出するためにバスの「共有ライン」を使用する
- プロセッサ操作
- ミスを読む
- – 別のキャッシュにMまたはOまたはE (*)のコピーがある場合、データはこのキャッシュから提供されます(介入)。要求キャッシュはSに設定され、MはOに、EはS に 変更されます。
- – それ以外の場合は、データは MM から読み取られます。
- – 「共有ライン」が「オン」の場合、要求キャッシュはSに設定され、それ以外の場合はEに設定されます。
- 書き込みヒット
- – キャッシュがMまたはE (排他性)の場合、書き込みは他のアクションなしでローカルで実行できます。
- – それ以外の場合、OまたはS (共有) の場合、他のすべてのキャッシュを無効化するために「無効化」トランザクションがバス上に送信されます。
- – キャッシュはMに設定(または保持)されます
- ミスを書く
- – RWITM操作がバスに送信される
- – データは「所有者」または読み取りミスの場合と同様に MM から提供され、その後キャッシュが書き込まれます (更新されます)
- – キャッシュは Mに設定され 、他のすべてのキャッシュはIに設定されます
- バス取引
- バス読み取り
- – キャッシュがMまたはOまたはE(*)の場合、データは要求キャッシュに送信されます(介入)。キャッシュがEの場合、 状態はSに変更され、それ以外の場合はOに設定されます(またはOのままになります)。
- – それ以外の場合は状態が変化するか、Sのままになる
- バス読み取り – (RWITM)
- – キャッシュがMまたはOまたはE(*)の場合、データはバスに送信されます(介入)
- – キャッシュが「無効」に設定されている(I)
- バス無効化トランザクション
- – キャッシュが「無効」に設定されている(I)

- オペレーション
- 書き込み割り当て
- 介入:MOEより(*)
- 書き込み無効化
- コピーバック: MOの置き換え
- – (*) Eに応じて実装が異なります
———————————————————————————————————————
イリノイ州議定書
州 MESI = DRVI [4]
- – 特徴:
- – MESIプロトコルの拡張です
- –共有介入(共有データへの介入)のためのネットワーク優先度の使用
- – MESIとの違い: EとMに加えて、Sからの介入もあります(Read Miss – ポイント1を参照)
- オペレーション
- -書き込み割り当て
- -介入: MESから
- -書き込み無効化
- -コピーバック: Mの置き換え
———————————————————————————————————————

ライトワンス(またはライトファースト)プロトコル
州 DRVI (MESI) [4] [18] [19]
- – 特徴:
- – 「共有ライン」(標準または変更不可能なバスのプロトコル)を使用しない
- – 状態Vで最初の書き込みヒット時に書き込み、その後コピーバックする
- プロセッサ操作
- ミスを読む
- – 別のキャッシュにDコピーがある場合、データはこのキャッシュ (介入) によって提供され、同時に MM (コピーバック) にも書き込まれます。
- – それ以外の場合は、データはMMから読み取られます
- – すべてのキャッシュがVに設定されている
- 書き込みヒット
- – キャッシュがDまたはR(排他性)の場合、書き込みは他のアクションなしでローカルに実行でき、状態はDに設定されます(またはDのままになります)。
- – それ以外の場合、V(最初の書き込みヒット)は、データがキャッシュとMM(書き込みスルー)に書き込まれ、他のすべてのキャッシュが無効化されます(書き込み無効化)。 – キャッシュはRに設定されます。
- ミスを書く
- – 読み取りミスと同様ですが、「無効化」コマンド (RWITM) とD状態 (更新中) での書き込みヒットが加わります。キャッシュはDに設定され、他のすべてのキャッシュは「無効」( I )に設定されます。
- – 注意 – ライト スルーは、「書き込みミス」の場合にのみ実行されます。この場合、他のキャッシュを無効にするためにバス トランザクションが必ず必要となるため、この事実を利用して MM も更新できます。「書き込みヒット」の場合、トランザクションはこれ以上必要ないため、「ライト スルー」はキャッシュが再度更新された場合に無駄な操作になります。
- バス取引
- バス読み取り
- – キャッシュがDの場合、データは要求キャッシュ(介入)とMM(コピーバック)に送信されます。キャッシュはVに設定されています。
- – それ以外の場合は状態が変化するか、Vのままになる
- バス読み取り – (RWITM)
- – キャッシュがDの場合、データはバスに送信されます(介入)
- – キャッシュが「無効」に設定されている(I)
- バス無効化トランザクション
- – キャッシュが「無効」に設定されている(I)
- オペレーション
- 書き込み割り当て
- 介入:Dから
- ライトスルー: V状態での最初の書き込みヒット
- 書き込み無効化
- コピーバック: Dの置き換え
———————————————————————————————————————

Bull HN ISIプロトコル
(ブル・ハネウェル・イタリア)
州 D-SD-RVI (MOESI)
特許取得済みプロトコル (F. Zulian) [20]
- – 特徴:
- – Write-OnceプロトコルのMOESI拡張
- - DまたはSD更新によるミス時の書き込み割り当てなし
- - RWITMの使用なし
- - 「共有回線」は使用しない
- プロセッサ操作
- ミスを読む
- - MOESI と同様に、「共有回線」が「オン」で、「所有者」DまたはSDからの介入のみが可能で、 Rからの介入は不可能
- 書き込みヒット
- - キャッシュがDまたはRの場合、MOESIと同様に、書き込みは他のアクションなしでローカルで実行できます。キャッシュはDに設定されています(またはDのままです)。
- - SDまたはV (最初の書き込み)の場合、Write-Onceと同様に、データはキャッシュとMM(Write Through)に書き込まれ、他のすべてのキャッシュが無効化されます(Write-Invalidate)-キャッシュはRに設定されます。
- - ミスを書く
- - データはキャッシュをバイパスしてバスに送信されます(Write-no-allocate)
- - 「所有者」コピーDまたはSDがある場合、「所有者」は更新されます (Write-no-Allocate – 所有者の更新を参照)。他のキャッシュは無効化されます。「所有者」はD に設定 (またはそのまま) されます。メモリは「ダーティ」のままです。
- - それ以外の場合は、データは MM に送信され、他のすべてのキャッシュが無効化されます (Write-Invalidate)
- - ミスを書く
- バス取引
- バス読み取り
- - MOESIと同様に、「所有者」 DまたはSDからの介入のみ
- バス読み取り (書き込み更新 / 書き込み無効化)
- - キャッシュがDまたはSDの場合、キャッシュは更新され、それ以外の場合は「無効」(I)に設定されます。
- オペレーション
- 書き込み-割り当てなし: ミス時
- 書き込み更新: ミスあり
- ライトスルー: 最初の書き込み、その後コピーバック
- 書き込み更新 / 書き込み無効化
- 介入:SD-Dから
- コピーバック: D 置換または SD 置換 (無効化)
- 注: これは、OE (SD-R) トランザクションを持つ唯一のプロトコルであり、ミス時に Write-no-allocated を使用する唯一のプロトコルでもあります。
———————————————————————————————————————

シナプスプロトコル
州DVI(MSI)[4]
- - 特徴:
- - このプロトコルの特徴は、MM の各キャッシュ ラインに 1 ビットのタグがあり、キャッシュにD状態のラインがあることを示すことです。
- - このビットは、 Dキャッシュが十分に速く応答せず、更新前に MM が応答できない場合に、競合状態が発生するのを防ぎます。
- - データは常にMMから取得されます
- - 「共有回線」は使用しない
- - このプロトコルの特徴は、MM の各キャッシュ ラインに 1 ビットのタグがあり、キャッシュにD状態のラインがあることを示すことです。
- プロセッサ操作
- ミスを読む
- - 別のキャッシュにDコピーがある場合、読み取りトランザクションは拒否されます (確認応答なし)。Dコピーは MM に書き戻され、V内の状態が変更され、要求元のキャッシュは新しい読み取りトランザクションを再送信し、データが MM から読み取られます。
- - それ以外の場合は、データは MM から読み取られます。
- - キャッシュはVに設定されています
- 書き込みヒット
- - キャッシュがDの場合、他のアクションなしでローカルで書き込みを実行できます。
- - それ以外の場合、V は、Read Miss と同様に、無効化コマンド (RWITM) を追加したメモリからのデータ転送を含みます。このプロトコルは無効化トランザクションをサポートしていないため、これは他のVコピーを無効にするためだけに行われます。
- - キャッシュはDに設定されています。他のすべてのキャッシュコピーは「無効」(I)に設定されています。
- ライトミス(RWITM)
- - 読み取りミスと同様ですが、無効化コマンドを使用します。キャッシュ ラインは MM から取得され、キャッシュが書き込まれます (更新されます)。キャッシュはD に設定されます。他のすべてのキャッシュは「無効」( I ) に設定されます。
- バス取引
- バス読み取り
- - キャッシュがDの場合、データはMM(コピーバック)に送られます。キャッシュはVに設定されます。
- - それ以外の場合は状態はVのまま
- バス読み取り (RWITM)
- - キャッシュがDの場合、データはMMに送信されます(コピーバック)
- - キャッシュ(DまたはV)が「無効」(I)に設定されている
- オペレーション
- 書き込み割り当て
- 介入:介入なし
- 書き込み無効化: (RWITM)
- トランザクションを無効にする
- コピーバック: Dの置き換え
———————————————————————————————————————

バークレープロトコル
州D-SD-VI(MOSI)[4]
- - 特徴:
- - E状態のないMOESIと同様
- - 「共有回線」は使用しない
- プロセッサ操作
- ミスを読む
- - データは「所有者」によって提供されます。つまり、DまたはSDから、あるいは MM から提供されます。DはSDで変更されます
- - キャッシュはVに設定されています
- 書き込みヒット
- - キャッシュがD(排他性)の場合、書き込みは他のアクションなしでローカルで実行できます。
- - そうでない場合 ( SDまたはV )、他のキャッシュを無効にするために「無効化」トランザクションがバス上に送信されます。
- - キャッシュが設定されている(または残っている)D
- ミスを書く
- - RWITM操作がバスに送信される
- - 読み取りミスと同様に、データは「所有者」、D、SD、またはMMから取得され、その後キャッシュが更新されます。
- - キャッシュはDに設定されています。他のすべてのキャッシュはIに設定されています。
- バス取引
- バス読み取り
- - キャッシュがDまたはSDの場合、データは要求キャッシュに送信されます(介入)。キャッシュはSDに設定(または保持)されます。
- - それ以外の場合はキャッシュはVに残ります
- バス読み取り – (RWITM)
- - キャッシュがDまたはSDの場合、データはバスに送信されます(介入)
- - キャッシュが「無効」に設定されている(I)
- バス無効化トランザクション
- - キャッシュが「無効」に設定されている(I)
- オペレーション
- 書き込み割り当て
- 介入:D-SDから
- 書き込み無効化
- コピーバック: D-SD の置き換え
———————————————————————————————————————

Firefly (DEC) プロトコル
州 D-VE-S (MES) [4]
- - 特徴:
- - 「無効」状態なし
- - 「書き込みブロードキャスト」+「書き込みスルー」
- - 「共有回線」の利用
- - 「書き込みブロードキャスト」により「無効」状態の必要性を回避
- - すべてのキャッシュからの同時介入(共有およびダーティ介入 - 変更されたデータが変更されていないとき)
- - このプロトコルには同期バスが必要です
- プロセッサ操作
- ミスを読む
- - その他のキャッシュは「所有者」です。つまり、コピーを持つ他のすべてのキャッシュがバス上で同時にデータに供給されます (同時介入 - バスのタイミングは固定されているため、すべてが同じサイクルで応答します)。それ以外の場合、データは MM から供給されます。
- - キャッシュDがある場合、データはMMにも同時に送信されます(コピーバック)
- - 他のキャッシュにコピーがある場合は、「共有ライン」が「オン」に設定されます
- - 「共有ライン」が「オン」の場合、すべてのキャッシュはSに設定され、それ以外の場合は要求キャッシュはVEに設定されます。
- 書き込みヒット
- - キャッシュがDまたはVE(排他性)の場合、書き込みは他のアクションなしでローカルで実行でき、キャッシュはDに設定されます。
- - そうでない場合は、他のすべてのキャッシュとMM(Write Through)を更新するために「書き込みブロードキャスト」がバスに送信されます。
- - 別のキャッシュにコピーがある場合、「共有ライン」は「オン」に設定されます。「共有ライン」が「オフ」に設定されている場合は、キャッシュはVEに設定され、それ以外の場合はすべてのキャッシュがSに設定されます。
- ミスを書く
- - 操作は 2 つのステップで実行されます。読み取りミス、次に書き込みヒットです。
- - データがキャッシュから来た場合(共有ラインが「オン」)、他のすべてのキャッシュとMM(ライトスルー)を更新するために「書き込みブロードキャスト」がバスに送信されます。すべてのキャッシュはSに設定されます。
- - それ以外の場合はキャッシュがDに設定されます
- バス取引
- バス読み取り
- - ヒットした場合(DまたはVEまたはS)、データはバスに送信され(介入)、Dの場合はデータがMMにも書き込まれます。キャッシュはSに設定されます。
- バス読み取り
- - ヒットした場合 ( DまたはVEまたはS )、データはバスに送信されます (介入)。
- - すべてのキャッシュはSに設定されています
- 放送を書く
- - キャッシュは新しいデータで更新されます。状態はSのままです。
- オペレーション
- 書き込み割り当て
- 介入: D-VE-S から (すべての「有効な」キャッシュから)
- 書き込みブロードキャスト – 書き込みスルー
- コピーバック: Dの置き換えとキャッシュDを持つトランザクション
———————————————————————————————————————

ドラゴン(ゼロックス)プロトコル
州 D-SD-VE-SC (MOES) [4]
注意 – SC状態は「クリーン」という用語にもかかわらず、他のプロトコルのS状態と同様に「クリーン」または「ダーティ」になることがあります。SCとSは同等です 。
- - 特徴:
- - 「無効」状態なし
- - 「書き込みブロードキャスト」(「書き込みスルー」なし)
- - 「共有回線」の利用
- - 「書き込みブロードキャスト」により「無効」状態の必要性を回避
- プロセッサ操作
- ミスを読む
- - データは「所有者」によって提供されます。つまり、DまたはSDから、あるいは MM から提供されます。DはSDで変更されます
- - 「共有ライン」が「オン」の場合、キャッシュはSCに設定され、それ以外の場合はVEに設定されます。
- 書き込みヒット
- - キャッシュがDまたはVE(排他性)の場合、書き込みは他のアクションなしでローカルで実行できます。キャッシュはDに設定されています(またはDのままです)。
- - それ以外の場合、SDまたはSC (共有) データはキャッシュに書き込まれ、他のすべてのキャッシュを更新するために「書き込みブロードキャスト」がバスに送信されます。MM は更新されません (書き込みスルーなし)。
- - 別のキャッシュにコピーがある場合は、「共有ライン」が「オン」に設定されます
- - 「共有ライン」が「オン」の場合、キャッシュはSD に設定され、それ以外の場合はD に設定されます。コピー可能な他のすべてのキャッシュはSC に設定されます。
- ミスを書く
- - 読み取りミスと同様に、データは「所有者」、D、SD、またはMMから取得され、その後キャッシュが更新されます。
- - 別のキャッシュにコピーがある場合は、「共有ライン」が「オン」に設定されます。
- - 「共有ライン」が「オン」の場合、更新されたデータは他のキャッシュにブロードキャストされ、状態はSD に設定されます。他のすべてのキャッシュはSC に設定されます。
- - それ以外の場合はキャッシュはDです
- バス取引
- -バスを読む
- - キャッシュがDまたはSDの場合、データは要求キャッシュに送信されます(介入)。キャッシュはSDに設定(またはSDのまま)されます。
- - それ以外の場合はキャッシュはSCのままです
- -バスを読む
- バス読み取り
- - キャッシュがDまたはSDの場合、データはバスに送信されます(介入)
- - キャッシュはSCに設定されています
- 放送を書く
- - キャッシュは新しいデータで更新されます。キャッシュはSCのままです
- オペレーション
- 書き込み割り当て
- 介入: D-SD から (VE からはなし)
- 書き込みブロードキャスト
- コピーバック: D-SD の置き換え
———————————————————————————————————————

MERSI (IBM) / MESIF (インテル) プロトコル
MERSIまたはR-MESIの状態
MESIFの状態
特許取得済みプロトコル – IBM (1997) [6] – Intel (2002) [8]
- - MERSI と MESIF は同じプロトコルです (名前の状態のみが異なり、RではなくFです)
- - 特徴:
- - イリノイプロトコルと同じ機能
- - 新しい状態R (最新) / F (転送) は、「共有クリーン」データ (MM が更新された) の「所有者」です。
- - 「共有所有権」(クリーンデータ上)は、イリノイのようにネットワーク優先度によって割り当てられるのではなく、常に読み取りミスのある最後のキャッシュに割り当てられ、その状態はR / Fに設定されます。
- - R / Fの置き換えの場合、「所有権」は一時的に解放されます。「所有権」は、キャッシュが「共有クリーン」の場合、次の読み取りミスに再度割り当てられます。
- - 「共有回線」の利用
- オペレーション
- 書き込み割り当て
- 介入:MER/Fから
- 書き込み無効化
- コピーバック: Mの置き換え
———————————————————————————————————————
MESI vs MOESI
MESIとMOESIは最も人気のあるプロトコルです
MOESI は MESI プロトコルの拡張であり、したがってより洗練されており、より高性能であるというのが一般的な見解です。これは、標準 MESI、つまり「共有介入なし」の MESI と比較した場合にのみ当てはまります。MESI Illinois のような「共有介入」のある MESI や、同等の 5 状態プロトコル MERSI / MESIF は、MOESI プロトコルよりもはるかに高性能です。
MOESI では、キャッシュ間操作は変更されたデータに対してのみ行われます。一方、MESI イリノイ タイプおよび MERSI / MESIF プロトコルでは、キャッシュ間操作は常にクリーン データと変更されたデータの両方で実行されます。変更されたデータの場合、介入は「所有者」M によって行われますが、所有権は失われません。これは、データが別のキャッシュ (MERSI / MESIF の R/F キャッシュまたはイリノイ タイプとして選択されたキャッシュ) に移行されるためです。唯一の違いは、MM を更新する必要があることです。ただし、MOESI でも、このトランザクションは、その間に他の変更が行われない場合、置換の場合に後で実行する必要があります。ただし、これは、MOESI プロトコルのクリーン データの場合のように介入がないため、メモリ トランザクションと比較して制限が小さくなります。(「MOESI (上海) と MESIF Nehalem-EP のパフォーマンス評価」[21]を参照)
最も先進的なシステムでは、R-MESI / MESIFプロトコルのみ、またはMESIとMOESIプロトコルの強化された統合であるより完全なRT-MESI、HRT-ST-MESI、POWER4 IBMプロトコルのみが使用されます。
注: キャッシュツーキャッシュは、直接接続されたマルチプロセッサ/マルチコア システムでは効率的なアプローチですが、標準 MESI が望ましい NUMA システムのようなリモート キャッシュではそれほど効率的ではありません。POWER4 IBM プロトコルの例では、「共有介入」は「ローカル」のみで行われ、リモート モジュール間では行われません。
———————————————————————————————————————

RT-MESIプロトコル
RT-MESI
IBM特許プロトコル[11] [12]
- 特徴:
- - MESIとMOESIの合併
- - 共有介入 + ダーティ介入 (クリーンデータとダーティデータの両方)
- - R-MESIプロトコルと同じ機能を持つが、新しい状態T =タグ付き、 O状態と同等
- - 「ダーティオーナー」移行
- - 「所有者」(共有またはダーティの両方)は常に最後に要求したキャッシュです(新しい「所有者」(LRU)は、古いものと比較してすぐに割り当て解除される可能性が低くなります)
- - 「所有者」はT、M、E、R ( Sを除くすべて)です。
- - 「共有回線」の利用
プロセッサ操作
- ミスを読む
- - 別のキャッシュにMまたはT (ダーティ所有権)コピーがある場合、データはこのキャッシュから提供されます(ダーティ介入)。要求キャッシュはTに設定され 、以前の MまたはTはSで変更されます。
- - 別のキャッシュにEまたはR (共有所有権)コピーがある場合、データはこのキャッシュから提供されます(共有介入)。要求データはRに設定され、SでEまたはRが変更されます。
- - それ以外の場合は、データが MM から読み取られ、キャッシュがR に設定されます。
- 書き込みヒット
- - キャッシュがMまたはE (排他性)の場合、書き込みは他のアクションなしでローカルで実行できます。
- - そうでない場合、TまたはRまたはS (共有) の場合、他のすべてのキャッシュを無効化するために「無効化」トランザクションがバス上に送信されます。
- - キャッシュはMに設定され(またはMのまま) 、他のすべてのキャッシュはIに設定されます
- ミスを書く
- - RWITM操作がバスに送信される
- - データは「所有者」から、または読み取りミスの場合と同様に MM から提供され、その後キャッシュに書き込まれ (更新され) ます。
- - キャッシュはMに設定され、他のすべてのキャッシュはIに設定されます
- バス取引
- バス読み取り
- - キャッシュがTまたはMまたはRまたはEの場合、データは要求元のキャッシュに送信されます (介入)。
- - キャッシュはSに設定(または保持)されます
- バス読み取り – (RWITM)
- - キャッシュがT、M、R、またはEの場合、データは要求キャッシュに送信されます(介入)
- - キャッシュが「無効」に設定されている(I)
- バス無効化トランザクション
- - キャッシュが「無効」に設定されている(I)
- オペレーション
- 書き込み割り当て
- 介入:TMREより
- 書き込み無効化
- コピーバック: TM の置き換え
———————————————————————————————————————
RT-ST-MESIプロトコル
これはRT-MESIプロトコル[12]の改良版であり、HRT-ST-MESIプロトコル[11]のサブセットである。
- S T = 共有タグ付き
- - 「共有タグ付き」状態を使用すると、タグ付きキャッシュラインの割り当て解除後に介入を維持できます。
- - T の置き換え (キャッシュ ラインの割り当て解除)の場合、データを MM に書き戻す必要があるため、「所有権」が失われます。これを回避するには、新しい状態S T を使用できます。読み取りミスの場合、以前のT はSではなくS Tに設定されます。S T は、T の割り当て解除の場合に所有権を置き換える候補です。Tの「コピー バック」トランザクションは、 Tで状態を変更するS Tキャッシュによって停止されます (MM の更新なし) 。別のキャッシュからの新しい読み取りの場合、この最後のキャッシュがTに設定され、以前のTがS Tで変更され、以前のS TがSで変更されます。
複数のS T状態、S T1、S T2、… S Tnを使用することで、さらなる改善が得られます。
- - 読み取りミスでは、S T1のTが変更され、他のすべてのS Tiのインデックスが「1」増加します。
- - T の割り当て解除の場合、S T1 は「コピーバック」トランザクションを停止し、Tでの状態を変更し、他のS Tiのすべてのインデックスが「1」減少します。
- - 割り当て解除の場合、たとえばS Tk の場合、チェーンは中断され、インデックスが「k」より大きいすべてのS Ti はS Tに関して自動的に解放され、 S Tとして設定されている場合でも、事実上単純なS状態としてのみ考慮されます。これはすべて、S T1のみが介入してブロックし、それ自体をTに置き換えるためです。たとえば、状況タイプT、S T1、S T3、S T4があり、 S T2が置き換えられている場合、 Tが置き換えられると、新しい状況はS T1のないT、 S T2、S T3になります。
———————————————————————————————————————

HRT-ST-MESIプロトコル
IBM特許取得済みの完全なHRT-ST-MESIプロトコル[11] [12]
- I状態 = 無効なタグ (*) – 無効なデータ
- H状態 = 有効なタグ – 無効なデータ
- I状態はキャッシュの初期化時に設定され、プロセッサの読み取りまたは書き込みミスの後にのみ状態が変化します。その後、この状態に戻ることはありません。
- H はI状態と同じ機能を持ちます が、さらにディレクトリのタグに一致するバス トランザクションをキャプチャし、データ キャッシュを更新する機能も備えています。
- 最初の使用後、I はHに置き換えられます
- - 主な機能は次のとおりです。
- - 書き戻す
- - クリーンなデータとダーティなデータの両方の共有への介入 - TMREより
- - タグ付き(共有タグ付き)の予約状態
- - 無効なH状態(ホバー)の自動更新
(*) – 注意: 定義のタグは常に有効ですが、キャッシュ ラインがまだ必要とされておらず使用されていない場合でもキャッシュが更新されないようにするため、キャッシュ ラインの最初の更新までは無効と見なされます。
———————————————————————————————————————
POWER4 IBM プロトコル
状態 MT-Me-SI -Mu-S L = RT-MESI+Mu [9]
- - 「共有回線」の利用
- マルチコア/モジュールシステムで使用される - マルチL2キャッシュ[9]
- このプロトコルは、マルチモジュールシステム上のマルチL2キャッシュを備えたシステムのRT-MESIプロトコルと同等です。
- S L - RT-MESIのR に相当する「Shared Last」
- 私 - 「有効な排他性」 = E
- Mu – 要求されていない変更された状態
- - 特別な状態 - ダブルワードのロードとストアの予約を要求する(64 ビット実装の場合)
- S Lからの「共有介入」は、同じモジュールの L2 キャッシュ間でのみ行われます。
- Tからの「ダーティ介入」 は同じモジュールのL2キャッシュ間でのみ行われる
- オペレーション
- -書き込み割り当て
- -介入:MT-VE-S L = MOES Lから
- -書き込み無効化
- -コピーバック: MTの置き換え
- - 注: T および S L – ロケールモジュールのみの介入
———————————————————————————————————————
プロトコルに関する一般的な考慮事項
いくつかの条件下では、最も効率的で完全なプロトコルは HRT-ST-MESI プロトコルであることがわかります。
- - 書き戻す
- - 共有クリーンデータよりもダーティデータの両方への介入
- - タグ付き状態(共有タグ付き)の予約状態
- - 無効なH(ホバー)状態の自動更新
参考文献
- ^ 米国特許 5701413、「共有メモリを備えたマルチプロセッサ システム」
- ^ EP 特許 0923032A1、「クロスバー相互接続ユニットを備えたマルチプロセッサ コンピュータ システムでデータを転送する方法」
- ^ 「PowerScale バス アービトレーション プロトコルの仕様と検証: LOTOS を使用した産業実験、第 2 章、4 ページ」(PDF)。
- ^ abcdefghijklmnop 、Archibald, James; Baer, Jean-Loup (1986). 「キャッシュコヒーレンスプロトコル:マルチプロセッサシミュレーションモデルを使用した評価」(PDF)。ACM Transactions on Computer Systems。4( 4) 。Association for Computing Machinery(ACM):273–298。doi :10.1145/6513.6514。ISSN 0734-2071。S2CID 713808 。
- ^ ab 「MPC7400 RISC マイクロプロセッサ ユーザーズ マニュアル」(PDF)。
- ^ abcdefg 米国特許 5996049、「データと命令の最近読み取られた状態を持つキャッシュコヒーレンシプロトコル」
- ^ ab 「Intel® QuickPath インターコネクトの概要」(PDF)。
- ^ ab 米国特許 6922756、「マルチプロセッサ システムにおけるキャッシュ コヒーレンシに使用するフォワード状態」
- ^ abcd 「POWER4 System Microarchitecture」(PDF) . cc.gatech.edu . 2008-10-08. 2013-11-07 のオリジナル(PDF)からアーカイブ。
- ^ 「IBM PowerPC 476FP L2 キャッシュ コア データブック」
- ^ abcdefg 米国特許 6275908、「HR 状態を含むキャッシュ一貫性プロトコル」
- ^ abcdefgh 米国特許 6334172、「変更された値に対するタグ付き状態を備えたキャッシュ一貫性プロトコル」
- ^ 「MPC750UM/D 12/2001 Rev. 1 MPC750 RISC マイクロプロセッサ ファミリ ユーザーズ マニュアル」(PDF)。
- ^ abcd Shanley, T. (1998). Pentium Pro および Pentium II システムアーキテクチャ。Mindshare PC システムアーキテクチャシリーズ。Addison-Wesley。p. 160。ISBN 978-0-201-30973-7。
- ^ AMD64 アーキテクチャ プログラマーズ マニュアル。第 2 巻: システム プログラミング。AMD。2013 年 5 月 – Internet Archive 経由。
- ^ abc Sweazey, P.; Smith, AJ (1986). 「互換性のあるキャッシュ一貫性プロトコルのクラスと IEEE futurebus によるサポート」(PDF) . ACM SIGARCH Computer Architecture News . 14 (2). Association for Computing Machinery (ACM): 414–423. doi :10.1145/17356.17404. ISSN 0163-5964. S2CID 9713683.
- ^ Papamarcos, Mark S.; Patel, Janak H. (1984). 「プライベート キャッシュ メモリを備えたマルチプロセッサ向けの低オーバーヘッド コヒーレンス ソリューション」。第11 回コンピュータ アーキテクチャ国際シンポジウム - ISCA '84 の議事録。米国ニューヨーク州ニューヨーク: ACM プレス。pp. 348–354。doi : 10.1145 /800015.808204。ISBN 0818605383。
- ^ ab Goodman, James R. (1983). 「キャッシュ メモリを使用したプロセッサ メモリ トラフィックの削減」(PDF) 。第10 回コンピュータ アーキテクチャ国際シンポジウム - ISCA '83 の議事録。米国ニューヨーク州ニューヨーク: ACM プレス。pp. 124–131。doi : 10.1145 /800046.801647。ISBN 0897911016。
- ^ ab Hwang, K. (2011). 高度なコンピュータアーキテクチャ、第2版。McGraw-Hillコンピュータサイエンスシリーズ。McGraw Hill Education。p. 301。ISBN 978-0-07-070210-3。
- ^ abcd EP 特許 0396940B1、Ferruccio Zulian、「キャッシュ メモリおよび関連する一貫性プロトコル」
- ^ ab Hackenberg, Daniel; Molka, Daniel; Nagel, Wolfgang E. (2009-12-12). 「x86-64 マルチコア SMP システムにおけるキャッシュ アーキテクチャとコヒーレンシ プロトコルの比較」( PDF)。第 42 回 IEEE/ACM 国際マイクロアーキテクチャ シンポジウムの議事録。ニューヨーク、ニューヨーク、米国: ACM。pp. 413–422。doi : 10.1145 /1669112.1669165。ISBN 9781605587981。
- ^ ab Rolf, Trent (2009)、Intel Nehalem コンピュータ アーキテクチャのキャッシュ構成とメモリ管理(PDF)
- ^ David Kanter (2007-08-28)、「共通システムインターフェース: Intel の将来のインターコネクト」、Real World Tech : 5、2012-08-12取得
- ^ 「小規模対称マルチプロセッサ システム上のマルチスレッド アプリケーション向けの MESI キャッシュ コヒーレンス プロトコルの最適化」。Neal Tibrewala の履歴書。2003 年 12 月 12 日。2016 年 10 月 22 日にオリジナルからアーカイブされました。
