硬件

Cache 替换算法和写策略

2019-05-15  本文已影响100人  madao756

前言:来吧,继续补 Cache 的知识。

替换算法

还记得组相联吗?就是主存中的一块可以放在 Cache 中的一组中的任意一行。但是 Cache 满了怎么办?就得覆盖掉一个,覆盖掉哪一个?这就是替换算法要解决的。

不去说什么先进先出、随机替换的算法。直接上最难的——最近最少用算法 LRU(least-recently used)

LRU

关键就是:总是把最近最少用的那一块淘汰掉

在具体到硬件的时候,Cache 每一行都有一个计数器。用来记录少用的次数。

具体看这个图:

现在有四个格子,但是有 5 个不一样的块要进来,我一步一步给你解释。

做题!

为了巩固上面的知识,我们来做题

MRU 的算法我们就不做了

假设主存以字为单位(16 位)先解决:「主存地址划分」

主存地址 = 主存标签 + 组号 + 块内地址

所以得到

现在要循环访问 0~4351 10次

第一次循环结束

第二次循环开始的时候,一共会有 20 个块要替换。

每次循环都是这样

所以:

命中率为:(43520 - 68 - 9*20)/43520 = 99.43%

再放个图感受一下。。。(我是不是没讲清楚。。。)

写策略

为什么要保持 Cache 和主存中数据的一致?

写操作也有两种情况:

写策略

写命中:

写不命中

现代的计算机当然存在多级 Cache,我就不继续深挖了。。。

上一篇 下一篇

猜你喜欢

热点阅读