[理工] 100台大資工計系

看板Grad-ProbAsk作者 (cshcsh6847)時間7年前 (2017/01/16 11:49), 編輯推噓4(4044)
留言48則, 2人參與, 最新討論串1/1
我想要請問大家第六題 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

01/16 16:51, , 1F
過了一段時間發現沒有人來回答,我把我的理解打出來
01/16 16:51, 1F

01/16 16:51, , 2F
但還是建議原po要多方求證,因為這塊我也不強
01/16 16:51, 2F

01/16 16:52, , 3F
先說write-invalid:
01/16 16:52, 3F

01/16 16:54, , 4F
time 1:第一次寫入x1,應該是write miss,要從memory
01/16 16:54, 4F

01/16 16:55, , 5F
讀block進來寫,所以有bus activity
01/16 16:55, 5F

01/16 16:56, , 6F
而且要把P2那邊x1所在的block設為invalid
01/16 16:56, 6F

01/16 17:02, , 7F
time 2:P2發現這個block被設為invalid,所以要看看其他
01/16 17:02, 7F

01/16 17:03, , 8F
應該說其他process會看看自己有沒有這個block,有的話
01/16 17:03, 8F

01/16 17:04, , 9F
又互斥的話就寫回memory,然後共享
01/16 17:04, 9F

01/16 17:04, , 10F
此時要用到bus
01/16 17:04, 10F

01/16 17:08, , 11F
time 3:我也是納悶應該會write hit,題目又說是用write
01/16 17:08, 11F

01/16 17:08, , 12F
-back,照理來說不需要用到bus?還是說把其他processor
01/16 17:08, 12F

01/16 17:09, , 13F
的cache設為無效也要用到bus?
01/16 17:09, 13F

01/16 17:09, , 14F
time 4:因為是read miss,所以要從memory抓資料進來,
01/16 17:09, 14F

01/16 17:10, , 15F
會用到bus
01/16 17:10, 15F

01/16 17:10, , 16F
time 5:會read hit,所以不用任何動作,不會用到bus
01/16 17:10, 16F

01/16 17:11, , 17F
這個題目是有說要用write-invalid,沒說我也不知道...
01/16 17:11, 17F

01/16 17:15, , 18F
我看張凡的圖有寫到:place invalidate on bus,也許
01/16 17:15, 18F

01/16 17:15, , 19F
將其他cache設為invalid也要用到bus,那time 1會用到
01/16 17:15, 19F

01/16 17:15, , 20F
bus還有這個原因
01/16 17:15, 20F

01/16 17:49, , 21F
我對這個觀念也不是很清楚,我的疑問是在time2的時候,
01/16 17:49, 21F

01/16 17:49, , 22F
P2發現自己是invalid, 所以發生Read miss,這時候是P1會
01/16 17:49, 22F

01/16 17:50, , 23F
看我是不是也有這個block嗎?x1,x2應該在同一個block,x3
01/16 17:50, 23F

01/16 17:50, , 24F
在自己一個block,所以P2發現x2在的這個block是invalid,
01/16 17:50, 24F

01/16 17:50, , 25F
p1也要去看我的x2 block是不是exclusive,如果是exclusiv
01/16 17:50, 25F

01/16 17:50, , 26F
e,就要write back,並改成shared?
01/16 17:50, 26F

01/16 17:51, , 27F
假如time2的時候x2和x1所在的這個block被改成shared,
01/16 17:51, 27F

01/16 17:52, , 28F
time3的時候又要write,所以會再把x1,x2這個block改成E
01/16 17:52, 28F

01/16 17:52, , 29F
Exclusive,然後用write-invalidate去使P2對應的block無
01/16 17:52, 29F

01/16 17:53, , 30F
效,用wirte-invalidate使對方無效要用到bus這我確定
01/16 17:53, 30F

01/16 17:53, , 31F
還有另外一個不懂的是為什麼time4的時候read3會是read
01/16 17:53, 31F

01/16 17:53, , 32F
miss,x3資料不是好端端的在P2的block裡面嗎?
01/16 17:53, 32F

01/16 18:05, , 33F
T大的第一段理解跟我一樣,不過我敘述不好QQ
01/16 18:05, 33F

01/16 18:06, , 34F
time 4 的時候我是假設所有資料一開始都不在cache裡面
01/16 18:06, 34F

01/16 18:06, , 35F
x3所在的block從來也就沒有被access過,所以P2第一次
01/16 18:06, 35F

01/16 18:06, , 36F
read x3的時候就會read miss了
01/16 18:06, 36F

01/16 18:07, , 37F
阿阿我看到(c)題目的敘述說x1和x2有在cache裡面了
01/16 18:07, 37F

01/16 18:08, , 38F
但是x3不在裡面,所以還是read miss
01/16 18:08, 38F

01/16 18:08, , 39F
那我time 1那個講錯了,會有bus activity的原因是因為
01/16 18:08, 39F

01/16 18:08, , 40F
要把P2的那個block設為invalid
01/16 18:08, 40F

01/16 18:51, , 41F
還有另一個疑問是,Cache block size=32Bytes,他給那個
01/16 18:51, 41F

01/16 18:51, , 42F
physical address,是直接除以32嗎?我不確定要怎麼去看
01/16 18:51, 42F

01/16 18:52, , 43F
會在不在同一個block內
01/16 18:52, 43F

01/16 19:31, , 44F
關於time1的敘述也可以從之前103台大電機有一題,就是
01/16 19:31, 44F

01/16 19:31, , 45F
什麼時候要把dirty block寫回,看樣子應該是Read miss的
01/16 19:31, 45F

01/16 19:31, , 46F
時候,因為P1的block是dirty block,P2被改成invalid,p2要
01/16 19:31, 46F

01/16 19:32, , 47F
在Read的時候會Read miss,這時候如果P1是dirty,就要寫回
01/16 19:32, 47F

01/16 19:32, , 48F
以上敘述是我課本上說的
01/16 19:32, 48F
文章代碼(AID): #1OV4B4gb (Grad-ProbAsk)