作者qwertz (人生苦短,來日方長)
看板Grad-ProbAsk
標題Re: [理工] [計組] 99台大
時間Wed Mar 10 04:18:29 2010
面對多核cpu來說 各個cpu都會有自己的cache
不過各個cpu對自己的cache做更新的同時
其他cpu不知道cache裡位於同一個block的資料已經被改過了
於是就會有資料錯誤的情形 所以就會出現cache coherence問題
通常有兩種解決方式 這兩種就是題目問的7(a)與7(b)
7(a)的意思是說進行寫入的cpu(A)在改變自己cache的資料時
會將其他cpu裡的copy都設為無效 (invalidate)
若cpu(B)裡要對這個無效的block作read/write時一定會miss
則會place read/write miss on bus
cpu(A)收到這個signal則會將cache資料write back至memory
cpu(B)再從memory抓資料時就會是最新資料了
故通常write-invalidate都搭配write back使用
用講的有點複雜 最好看書本上的FSM diagram去跑一次所有情況了解比較好
7(b)的意思是進行寫入的cpu在改變自己cache資料時
除了將自己資料更新 並且也廣撥此最新的資料到其他cpu的cache並更新
所以全部的cache都有最新資料
通常搭配write through使用
解這類題目通常列表格會比較快速 雖然比較麻煩 但是也比較清楚
注意這時題意說每個processor的cache只有一個block
所以各個cache需要一格就夠了
block d 都沒用到就不寫了
7(a) P1 P2 P3 Memory
cache1 cache2 cache3 a b c
1.P1:read(a) 10(a) . . 10 20 40
2.P2:read(a) 10(a) 10(a) . 10 20 40
3.P3:read(a) 10(a) 10(a) 10(a) 10 20 40
4.P1:a=a+20 30(a) 10(a)x 10(a)x 10 20 40
5.P1:read(c) 40(c) 10(a)x 10(a)x 30 20 40 (30wb)
6.P2:read(a) 40(c) 30(a) 10(a)x 30 20 40
7.P3:a=15 40(c) 30(a)x 15(a) 30 20 40
8.P1:c=c+10 50(c) 30(a)x 15(a) 30 20 40
7(b) P1 P2 P3 Memory
cache1 cache2 cache3 a b c
1.P1:read(a) 10(a) . . 10 20 40
2.P2:read(a) 10(a) 10(a) . 10 20 40
3.P3:read(a) 10(a) 10(a) 10(a) 10 20 40
4.P1:a=a+20 30(a) 30(a) 30(a) 30 20 40
5.P1:read(c) 40(c) 30(a) 30(a) 30 20 40
6.P2:read(a) 40(c) 30(a) 30(a) 30 20 40
7.P3:a=15 40(c) 15(a) 15(a) 15 20 40
8.P1:c=c+10 50(c) 15(a) 15(a) 15 20 50
大概是這樣 有錯請更正@@
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.115.13
※ 編輯: qwertz 來自: 118.160.115.13 (03/10 04:38)
推 abcde1499:感謝!! 好像比較知道在幹什麼了!! 03/10 08:09
推 stevenwin:想問這題的解答是? 03/10 13:04
※ 編輯: qwertz 來自: 118.160.113.196 (03/10 17:31)
推 opcan:請問為何7(b)的p2的a最後又變30? 03/10 22:41
打錯 已更正 謝謝~
推 RoddickJoe:請問7(A)的第7步 p3:a=15它原本是invalid的a(30) 為什 03/10 23:02
→ RoddickJoe:麼可以更新成15? 03/10 23:02
→ RoddickJoe:說錯 不是a(30) 是10(a)x 03/10 23:03
※ 編輯: qwertz 來自: 118.160.113.196 (03/11 02:02)
→ qwertz:p3先read miss 然後把正確的值讀進block後write 03/11 02:03
→ qwertz:之後在p2裡同一個block就設為invalid 03/11 02:04
推 stevenwin:終於懂了,太感謝了XD 03/13 21:29
推 iam30719: 推 淺顯易懂 感謝回文的大大 02/08 19:12