goronと申します。

マルチCPUについて独学している者ですが、マルチCPUのキャッシュ、特に
コヒーレンシの意義がよくわかりません。

CPUの参考図書などでもキャッシュコヒーレンシの方法やそのものの機能・
意味などは書かれており、理解もできているつもりですが、なぜそれが必
要なのか、どういった場面で有効なのかが理解できていません。そのため
下記の様な疑問が常にあり、それが解決できません。

例えば、複数のCPUが同一領域を読込・更新した時に、
  CPU1_Read -> CPU2_Read -> CPU1_Write -> CPU2_Write
といったアクセスをした場合、スヌープなどにより複数キャッシュの一意
性が保たれても、それ以前にレジスタにリードされていれば無意味ではな
いか、またどちらのライトが有効かはタイミングによって変動するため、
意味のあるアクセスにするためにはコヒーレンシというよりメモリアクセ
スのロック機構のようなものの方が必要ではないか。
つまりキャッシュコヒーレンシはあくまでもキャッシュまでのコヒーレン
シであり、記憶階層の頂点であるレジスタのコヒーレンシは(当然)保た
れない。そのため、複数のCPUが同一領域を更新するような場合は、キャッ
シュをコヒーレントしたところで意味はなく、1つのCPUが更新・他のCPU
はリードという場合のみ意味がある、しかしその割にはスヌープ機構は複
雑だし、実際は別の方法/用途があるのだろう、という考えになってしまい
そこから一歩も出られません。

どなたか、この本を読め/このwebを見よでも構わないので、お教えいただ
けませんでしょうか。