小野@名古屋大学 です. この辺は専門ではありませんが:

<cpjoq2$ce0$1@dojima-n0.hi-ho.ne.jp>の記事において
naoij@m.ieice.orgさんは書きました。
naoij> 例えば、複数のCPUが同一領域を読込・更新した時に、
naoij>   CPU1_Read -> CPU2_Read -> CPU1_Write -> CPU2_Write
naoij> といったアクセスをした場合、スヌープなどにより複数キャッシュの一意
naoij> 性が保たれても、それ以前にレジスタにリードされていれば無意味ではな
naoij> いか、またどちらのライトが有効かはタイミングによって変動するため、
naoij> 意味のあるアクセスにするためにはコヒーレンシというよりメモリアクセ
naoij> スのロック機構のようなものの方が必要ではないか。
このアクセスパターンではコヒーレンシに意味はありませんが,
[1] CPU1_Read
[2] CPU2_Write
[3] CPU1_Read
のようなパターンでは意味があります. つまり, [1] で CPU1 が読み込
んだ (そしてキャッシュに入れた) 領域に対して [2] で CPU2 が書き込
み, その書き込んだデータを [3] で CPU1 が読み込むようなときには,
[2] で CPU2 が書き込んだデータを [3] で CPU1 が確実に読み込めなけ
ればなりません. ということで, CPU1 は CPU2 がデータを書き込んだと
いう情報を元に自らの持つキャッシュを更新するかデータを無効にする
必要があります.
# producer-consumer とか semaphore では必要そうな感じ.
-- 
名古屋大学大学院 情報科学研究科 計算機数理科学専攻
小野 孝男 (takao@hirata.nuee.nagoya-u.ac.jp)