IT铁人
上一次我们提到了Set Associate Cache,意思是在entry中加入多个Block,以避免常常存取的Block要求进入同一个entry导致miss rate居高不下。
所以我们可以在外面加上第二层Cache,不论是晶片内外都可以,实作的方式也很多,就不特别说明了。
因为多了第二层,hit time不可能比第一层高,所以第二层以後注重的是减少miss rate,降低hit time就留给第一层注重。
在计算Miss Rate之前,需要先介绍两个词:
底下提供了一个例子,假设发生了1000次的access,其中L1发生了50次miss,而这50次又在L2发生了20次miss,後面又在L3发生了5次miss,所以总的来说,这样子的三层Cache miss rate为0.5%。
CPU | L1 Cache | L2 Cache | L3 Cache | |
---|---|---|---|---|
1000 access | 50 miss | 20 miss | 5 miss | |
GMR | 50/1000 | 20/1000 | 5/1000 | |
LMR | 50/1000 | 20/50 | 5/20 |
L1 GMR = L1 LMR
L2 GMR = L1 LMR x L2 LMR
L3 GMR = L1 LMR x L2 LMR x L3 LMR
刚刚都是用miss rate说明,这次用实际一点的时间计算来示范:
假设处理器CPI=1.0,clock rate=4GHz,Memory access time=100ns,并且保证所有access都能在Memory hit。第一层Cache miss rate=2%。
如果加上了第二层Cache,其access time=5ns,GMR=0.5%,那麽整个处理器速度会提昇多少?
在这类型的题目要把单位都换成一样的,换成时间会是cycle数量,以下用cycle换算:
clock rate:4GHz -> clock time:0.25ns
Memory access time=400 cycles
secondary cache access time=20 cycles
因为最快速的第一层access时间很短,可以直接省略。
未加上第二层时,Cycle数 = 1(CPI) + 2% x 400(Memory stall) = 9
加上第二层後,Cycle数 = 1(CPI) + (2%-0.5%) x 20(L2 Cache stall) + 0.5% x (20+400)(Memory stall) = 3.4
所以performance提昇 9/3.4 = 2.6左右
要特别注意的是L2miss後进入Memory,不能只有考虑Memory stall,还要考虑刚刚L2miss的时间,所以才有20+400的数字。
这三回讲的是Cache System,分成了Direct Mapped, Set Associate还有Multilevel三种,下一回开始会讲Virtual Memory,会比Cache System复杂一些些。
上一篇 | 下一篇 |
---|---|
Set Associative Cache | Miku Memory |
<<: Day9 自订开机执行的程序码 - 函数宣告与语法糖
这一篇来把上一篇范例订单项目的名称改为下拉选单的项目 下拉选单要使用套件 jQuery UI Sel...
前言 Hi, 我是鱼板伯爵今天要教大家 Firebase Authentication 和开通 Go...
很遗憾,由于假期原因,没能够及时更新,中断了更新。 不过这个系列还是会继续更新下去的,直到结束。 未...
为什麽需要这麽多种注册事件处理的方式? 上一篇提到注册事件的方式有三种 1.HTML 属性 2.DO...
之前就一直觉得网页配色好难,今天试用了 material color tool,觉得之後设计网页可以...