这篇特别讨论一下access policy,有些特别的点没算过还真的很难发现。
本篇稍长,可以看一下大纲决定要不要继续看下去。
一. 复习
二. 概念延伸
三. 解题
四. 前人探讨
五. 结论
六. reference
以下讨论可以搭配一些系统图[5]来记忆并请使用PC版观看比较好,
Page Up和Page Down是你/妳的好帮手
复习一下cache access policy
read
hit easy
miss
有两种 read allocate,memory controller把block搬进cache,然后在从cache
读进CPU的reg.
read through,memory controller直接把memory读进CPU的reg.
write
hit
有两种 write back,CPU更新block中某个word,并把dirty bit设为1
write through,CPU同时对cache和memory block中某个word更新
miss
有两种 write allocate,memory controller把在memory的block搬到cache
no write allocate,CPU直接更新memory的某个word
概念延伸,由于write hit和write miss各两种,因此共有四种组合,以下分别探讨。
write back+write allocate
Hit,同上
Miss,memory controller把memory的block搬到cache,之后CPU写入cache并把
dirty bit设为1
write back+no write allocate
Hit,同上
Miss,同上
write through+write allocate
Hit,同上
Miss,memory controller把memory的block搬到cache,之后CPU同时写入cache
和memory block的其中一个word
write through+no write allocate
Hit,同上
Miss,同上
这里讲一个概念,dirty block什么时候被覆蓋?write allocate要把block搬到cache,
所以是有可能把dirty block覆蓋的,值得一提的是read allocate也是把block搬到cache
所以同样有可能把dirty block覆蓋。
103台大电机丙http://imgur.com/bHdKHJU
a write through
R
H 0
M 0.05*(4)*0.8
W
H 0.95*(1)*0.2
M 0.05*(4+1)*0.2
bandwidth使用率=0.05*0.8*4+0.95*0.+0.05*5*0.2=40%
b 同a算法,bandwidth使用率=60%
c write back
R
H 0
M 0.05*(4+4*0.3)*0.8
W
H 0
M 0.05*(4+4*0.3)*0.2
bandwidth使用率=5.2*0.05*(0.8+0.2)=26%
d 同c算法,bandwidth使用率=52%
100清大计系http://imgur.com/a/29xHUzx
a write through
R
H 0
M 0.1*2*0.7
W
H 0.9*1*0.3
M 0.1*1*0.3
bandwidth使用率=0.1*2*0.7+0.9*1*0.3+0.1*1*0.3=44%
b write back
R
H 0
M 0.1*(2+2*0.2)*0.7
W
H 0
M 0.1*1*0.3
bandwidth使用率=0.1*2.4*0.7+0.1*1*0.3=19.8%
蒐集一下前人讨论结果[1][2],然后用一些已知和我的理解回答。
1.CPU和Cache之间资料传输为什么不用算到bus?
→yupog2003:cache是做在CPU里面的
没错, 实际上Intel的CPU里头有个叫做DMI(Direct Media Interface)的是这两个元件的
通道。
2.write through+write allocate
- write hit时,为什么只要更新1 word(不是1 block)?
CPU处理大小只有一个word,memory controller是一个block。
- write miss时,为什么这边更新就是1 block?
Memory controller写入一个block。
- write hit时同时写入cache和memory为什么只要1 word?
CPU处理大小只有一个word。
3.什么时候要把dirty block写回memory?
dirt block被取代的时候,什么时候会被取代?在cache miss的时候,memory controller
会把资料写到cache,这时候有机会覆蓋dirty block。
4.→joeboy:为什么write allocation+write through不是4+1?
国外网站example是有的,看各位怎么想。
结论
1.算这个干麻?
因为现代computer system的设计原因,memory bus是CPU与I/Odevice 共用的,所以当你
考虑加入新的I/O device时,必须先算现有系统bus的使用率,否则使用率超过100%时多增
加几个I/O device也没办法运作。
2.可以看到write back的设计是把dirty block先放在cahce,并在dirty block被修改时,
写回lower level(memory),这样的好处是bandwidth的需求可以降低。
/*补充可跳过
Computer Architecture会有进阶的概念是Merging Write Buffer[4],其概念为把
dirty block放到一个buffer,之后一起把它们写回memory,可以减少penalty,因为不用
access memory那么多次,而是一次写回。
*/
3.哪种write policy 的组合的bandwidth最高?相对来说哪种比较省bandwidth?
-也可以知道哪种组合不合乎逻辑
-常见配置,write back+write allocate(why?)
write through+no write allocate(why?)
4.是说清大计系的题库还蛮广的,有时候会在国外网站的hw或是example[3]上看到......
小修改或是原封不动就在考卷上了。
[1][理工] 103台大电机计结 第5题
http://www.ptt.cc/bbs/Grad-ProbAsk/M.1484383235.A.C57.html
[2][理工] 103台大电机丙计结
http://www.ptt.cc/bbs/Grad-ProbAsk/M.1485331672.A.0D7.html
[3]Example on interaction with main memory
http://web.cs.iastate.edu/~prabhu/Tutorial/CACHE/ex21.html
[4]Computer Architecture pg. 116
Seventh Optimization:Merging Write Buffer
[5]系统图-北桥&南桥
http://imgur.com/dMOm4e9
[ref]Interaction Policies with Main Memory
http://web.cs.iastate.edu/~prabhu/Tutorial/CACHE/interac.html