看板 Grad-ProbAsk 關於我們 聯絡資訊
http://imgur.com/a/IyaTs 這題困擾我好久,不過版上竟然只有一篇在討論 (a)使用Write allocate+Write through Read hit:我一開始看到就有個疑問,CPU和Cache之間資了傳輸為什麼不用算到bus裡?這 題的解答bus使用量似乎只有算CPU和Memory, Memory和Cache之間的資料傳輸量 Read miss:要去Memory讀資料,每次讀一個block=4 words這我ok Wrtie hit:採用wrtie throguh更新Cache和memory,為什麼每次只要更新1 word? 為什麼 不是每次更新1 block=4 words? Wrtie miss:採用write allocate, 要從memory把block搬到cache,再寫入cache,同樣的 ,這邊搬block要花4 words,但是寫入cache只有1 word?而且這邊如果寫入cache要花1 word ,那為什麼Read hit的時候從cache 班資料到CPU就不用佔用bus bandwidth?(還有write hit 時同時寫入cache和memory只要花1 word? 如果這邊寫入cache要花1 word,同時寫入cache和 memory應該要花2 words吧,假設一次只寫1 word的話) (b)同(a)只是改數字 __________________________________________________________________________ (c)(d)(e)相同使用write through+write back Read hit:同(a)的疑問,CPU和cache之間傳輸不用佔bus bandwidth 嗎? 以下都沒問題,寫出來讓大家參考 Read miss:要先把dirty的block(4 words)移回memory(花0.3*4 words),再把要讀出來的 block(4 words)送到CPU(從memory)這邊OK write hit:用write back,僅更改cache block,並將dirty bit=1, 不用寫入memory , bandwidth=0 write miss:用wirte allocate,將memory 的一個block(4 words)搬到cache,並且同write hit,所以只要花4 words 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1484383235.A.C57.html
ken52011219: 這題想到就好笑..昨天在寫看到這題就先跳過 01/14 16:43
ken52011219: 結果到最後忘記寫 連答案都沒寫QQ 然後就對了 01/14 16:44
ken52011219: 建議拿100 年的清大資工題目拿來比較 01/14 16:46
yupog2003: cache是做在CPU裡面的,所以CPU跟cache之間傳輸不需要 01/14 17:13
yupog2003: 用到bus,因為cache速度需求很高,用bus對他來說太遠太 01/14 17:15
yupog2003: 慢,所以都做在CPU裡面,從CPU的規格書裡面都會寫他有 01/14 17:15
yupog2003: 多少cache可以看出端倪 01/14 17:15
原來如此
yupog2003: 也許write through就只會更新在記憶體中的那個位址的 01/14 17:33
yupog2003: 資料?我也是看到這篇才知道@@ 01/14 17:35
似乎是,我看100清大寫說:Because we have write through policy we have to write to main memory on every hit. But we have to write only 1 word. ※ 編輯: Transfat (140.112.25.105), 01/14/2017 17:41:35
yupog2003: 現在每天都還會跑出我不懂的東西,真的是很崩潰... 01/14 17:44
聽說這樣子才是會考得好的前兆,如果覺得自己都會的人通常都(?)
yupog2003: 是說雖然課本都還是把北橋南橋獨立出來看,但現今的 01/14 17:47
yupog2003: 個人電腦CPU已經把北橋整合到CPU裡面了,當然CPU到 01/14 17:48
yupog2003: memory的bus還是在 01/14 17:48
yupog2003: 喔喔我看到課本寫到這段了,之前沒看到QQ 01/14 17:50
謝謝ken和yu,我搞懂這題了。 ※ 編輯: Transfat (140.112.25.105), 01/14/2017 17:52:20
DZASHIANG: 請問這份詳解的(c)(d)write miss的部份,為什麼不是算 01/14 20:54
DZASHIANG: 寫回dirty block 加上從mem搬入的1block,以c為例,也就 01/14 20:54
DZASHIANG: 是10^7*0.2*0.05*(4*0.3+4)=0.052*10^7,這樣算的話c 01/14 20:54
DZASHIANG: d選項true 01/14 20:54
這是個好問題,什麼時候要把dirty block寫回memory,網路上幾乎都只說當系統有空的時 候或是有其他使用率更高的address要來取代,或是講一些模稜兩可的話:The data in these locations are written back to the backing store when those data are evicted from the cache. 而103台大電機的答案和100清大的答案都說要在Read miss的時候把dirty block寫回memory. 所以我們就姑且相信他吧 ※ 編輯: Transfat (140.112.25.105), 01/14/2017 21:49:28 ※ 編輯: Transfat (140.112.25.105), 01/14/2017 21:49:52 ※ 編輯: Transfat (140.112.25.105), 01/14/2017 21:50:33
DZASHIANG: 我以為清大那題的(b)也就是write back+no-allocate 在 01/14 22:06
DZASHIANG: 算write miss的時候,是因為他是no wirte allocate, 01/14 22:06
DZASHIANG: 不用寫到cache,直接寫到mem,所以才不用先寫回dirty b 01/14 22:06
DZASHIANG: lock。但在witeallocate 的情況下是不是應該先寫回, 01/14 22:06
DZASHIANG: 畢竟題目說任何時刻dirty block都佔30%。有錯請指正 01/14 22:06
有道理,可是台大的老師似乎不是這樣想?因為台大這題是出write allocate+wrtie back, 也沒有在write miss的時候寫回dirty block
yupog2003: D大沒說我還沒注意到,同樣疑問+1 01/14 23:05
ncku5656: http://i.imgur.com/CLGMKBb.jpg 01/14 23:21
ncku5656: http://i.imgur.com/m8QMnBe.jpg 01/14 23:22
哇這個解答覺得write miss和read miss都要寫回dirty block
yupog2003: 原來還有另一種解答,不過這個解答的(a)(b)選項的 01/14 23:26
yupog2003: write miss就沒有考慮到write through了 01/14 23:27
的確,因為wrtie through和write allocate一起用很怪,都已經在miss的時候把block搬 到cache了,結果寫入又要一併寫回memory,有種多此一舉的感覺
yupog2003: 感覺要各取正確的部份來看XD 01/14 23:28
ncku5656: 張凡是說write miss 時就看write allocate會怎麼操作就 01/14 23:37
ncku5656: 好 不用在回去做write through 我也不太清楚是怎樣QQ 01/14 23:37
yupog2003: 原來張凡有特別提到,那也許應該以老師講的為主... 01/14 23:38
※ 編輯: Transfat (140.112.25.105), 01/15/2017 14:56:03 ※ 編輯: Transfat (140.112.25.105), 01/15/2017 15:00:18
b10007034: 為什麼我覺得這題的答案意思是dirty block被取代時才 01/29 22:10
b10007034: 要寫回去,所以被寫回來的4個word有30%的機會replace 01/29 22:10
b10007034: dirty block,所以才會是4+4*0.3 01/29 22:10