問題タブ [mesi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
246 参照

cpu-architecture - MESI キャッシュ コヒーレンス プロトコルでは、データをメモリからフェッチする必要がある場合、キャッシュ ラインの状態が変わるのはいつですか?

CPU の場合の MESI プロトコル:

  • 読み取り操作を実行します
  • キャッシュ ラインが無効な状態であることを検出します
  • 他のキャッシュに無効でないコピーはありません

メモリからデータをフェッチする必要があります。これを行うには、一定のサイクル数が必要です。では、キャッシュ ラインの状態は (I) から (E) に即座に変化するのでしょうか、それともデータがメモリからフェッチされた後にのみ変化するのでしょうか?

0 投票する
0 に答える
15 参照

cpu-architecture - キャッシュ MOSI プロトコル: 書き込みミスが発生したときにブロックがデータを提供する必要がある理由

私はComputer Architecture: A Quantitative Approachを読んでいましたが、次の段落 (バージョン 5 - ページ 415) に混乱しました。

" 一般的なプロトコルの最適化は、Owned 状態 (通常は O で示される) を導入することです。Owned 状態は、ノードが Owned ブロックのみを読み取ることができるという点で、Shared 状態のように動作します。他のノードの所有ブロックに対する読み取りおよび書き込みミス Modified または Owned 状態のいずれかのブロックに対する読み取りミスは、データを要求側ノードに提供し、Owned 状態に遷移しますModified または Owned 状態のいずれかのブロックに対する書き込みミスは、データを供給しますこの最適化された MOSI プロトコルは、ノードが Modified または Owned 状態のブロックを置き換えるときにのみメモリを更新します。」

私の質問は: 書き込みミスが発生したときに、要求元のノードに古いデータを提供する必要があるのはなぜですか?

私が行った努力: 関連する質問を 1 つ読みました。その質問に対する答えがよくわかりません。特に、「古いデータを利用できるようにしておくと、正確性の問題なしに、書き込みミス要求を投機的に (順不同の実行や書き込みのプリフェッチなどで) 送信できます。」 しかし、古いデータはメモリに書き戻されるのではなく、要求元のノードに書き戻されるため、私の質問はまだ異なると思います (キャッシュである必要がありますか?)。