Re: マルチ CPU のキャッシュ( コヒーレンシ) について質問
小野@名古屋大学 です. この辺は専門ではありませんが:
<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)
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735