看板 Grad-ProbAsk 關於我們 聯絡資訊
我想要請問大家第六題 http://imgur.com/a/jJHjB 我大概爬板知道了snooping的意思 但是通常沒有說的話 是使用Write-invalid 還是 write-update? 這個地方我不太懂 還有bus activity 的 yes or no 是來自於有沒有Hit 需不需要data的移轉嗎? 如果說 write 有動到資料 read 沒有 那第三個 P1 的 Write 為什麼是Yes呢? 麻煩大家了>< 我的計組真的比較弱QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.123.143 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1484538564.A.AA5.html
yupog2003: 過了一段時間發現沒有人來回答,我把我的理解打出來 01/16 16:51
yupog2003: 但還是建議原po要多方求證,因為這塊我也不強 01/16 16:51
yupog2003: 先說write-invalid: 01/16 16:52
yupog2003: time 1:第一次寫入x1,應該是write miss,要從memory 01/16 16:54
yupog2003: 讀block進來寫,所以有bus activity 01/16 16:55
yupog2003: 而且要把P2那邊x1所在的block設為invalid 01/16 16:56
yupog2003: time 2:P2發現這個block被設為invalid,所以要看看其他 01/16 17:02
yupog2003: 應該說其他process會看看自己有沒有這個block,有的話 01/16 17:03
yupog2003: 又互斥的話就寫回memory,然後共享 01/16 17:04
yupog2003: 此時要用到bus 01/16 17:04
yupog2003: time 3:我也是納悶應該會write hit,題目又說是用write 01/16 17:08
yupog2003: -back,照理來說不需要用到bus?還是說把其他processor 01/16 17:08
yupog2003: 的cache設為無效也要用到bus? 01/16 17:09
yupog2003: time 4:因為是read miss,所以要從memory抓資料進來, 01/16 17:09
yupog2003: 會用到bus 01/16 17:10
yupog2003: time 5:會read hit,所以不用任何動作,不會用到bus 01/16 17:10
yupog2003: 這個題目是有說要用write-invalid,沒說我也不知道... 01/16 17:11
yupog2003: 我看張凡的圖有寫到:place invalidate on bus,也許 01/16 17:15
yupog2003: 將其他cache設為invalid也要用到bus,那time 1會用到 01/16 17:15
yupog2003: bus還有這個原因 01/16 17:15
Transfat: 我對這個觀念也不是很清楚,我的疑問是在time2的時候, 01/16 17:49
Transfat: P2發現自己是invalid, 所以發生Read miss,這時候是P1會 01/16 17:49
Transfat: 看我是不是也有這個block嗎?x1,x2應該在同一個block,x3 01/16 17:50
Transfat: 在自己一個block,所以P2發現x2在的這個block是invalid, 01/16 17:50
Transfat: p1也要去看我的x2 block是不是exclusive,如果是exclusiv 01/16 17:50
Transfat: e,就要write back,並改成shared? 01/16 17:50
Transfat: 假如time2的時候x2和x1所在的這個block被改成shared, 01/16 17:51
Transfat: time3的時候又要write,所以會再把x1,x2這個block改成E 01/16 17:52
Transfat: Exclusive,然後用write-invalidate去使P2對應的block無 01/16 17:52
Transfat: 效,用wirte-invalidate使對方無效要用到bus這我確定 01/16 17:53
Transfat: 還有另外一個不懂的是為什麼time4的時候read3會是read 01/16 17:53
Transfat: miss,x3資料不是好端端的在P2的block裡面嗎? 01/16 17:53
yupog2003: T大的第一段理解跟我一樣,不過我敘述不好QQ 01/16 18:05
yupog2003: time 4 的時候我是假設所有資料一開始都不在cache裡面 01/16 18:06
yupog2003: x3所在的block從來也就沒有被access過,所以P2第一次 01/16 18:06
yupog2003: read x3的時候就會read miss了 01/16 18:06
yupog2003: 阿阿我看到(c)題目的敘述說x1和x2有在cache裡面了 01/16 18:07
yupog2003: 但是x3不在裡面,所以還是read miss 01/16 18:08
yupog2003: 那我time 1那個講錯了,會有bus activity的原因是因為 01/16 18:08
yupog2003: 要把P2的那個block設為invalid 01/16 18:08
Transfat: 還有另一個疑問是,Cache block size=32Bytes,他給那個 01/16 18:51
Transfat: physical address,是直接除以32嗎?我不確定要怎麼去看 01/16 18:51
Transfat: 會在不在同一個block內 01/16 18:52
Transfat: 關於time1的敘述也可以從之前103台大電機有一題,就是 01/16 19:31
Transfat: 什麼時候要把dirty block寫回,看樣子應該是Read miss的 01/16 19:31
Transfat: 時候,因為P1的block是dirty block,P2被改成invalid,p2要 01/16 19:31
Transfat: 在Read的時候會Read miss,這時候如果P1是dirty,就要寫回 01/16 19:32
Transfat: 以上敘述是我課本上說的 01/16 19:32