Cache的复习
- Cache,又名高速缓存器,是为了协调CPU和主存的速度而出现的一种高速的,小的存储器。
Cache主要由两部分组成,一部分是一个存储器,另一部分是一个地址变换与映射表,这个映射表完成了最重要的功能,将主存地址转换成Cache地址。
具体的实施过程是cpu拿到主存地址,去Cache里找有没有,有的话称为命中,转换地址,没有的话就从主存里读取。
- 根据这个寻找的过程对地址映射进行分类
- 全相联地址映射
对主存和Cache地址都进行分块,主存中一块存储可以装进Cache里任意一块地方
缺点:在Cache里查找起来比较麻烦,需要遍历
-
- 直接地址映射
对主存进行分区再分块,在不同的区里存在相同的块号,区的长度与Cache分块后的数目相同。主存中每个与Cache相同的块号都可以填装,是多对一的关系
缺点:如果有相同块号不同区的块需要频繁更替访问,即使Cache中有其他的空闲块也不能用
-
- 组相联地址映射
对主存分区再分块,对Cache分路再分组和块
采用组间直接地址映射,组内全相联的方式
优点:结合二者的一个的输入的方便和另一个的不浪费
- 替换算法
替换算法的核心是替换后对命中率的影响,理想状态是OPT,在假设已知未来的情况下,替换掉那个未来最不会使用的,其他的都是在过去的基础上进行修正
FIFO(先进先出),RAND(随机),OPT(最优选择)
LRU(最近最少使用):从现在往前看,以使用的时间为标准,越近越不会被替换
LFU(最不频繁使用):从现在往前看,使用频率最高的最不会替换,频率一样,参见LRU
- 更新策略
更新策略的前提是主存和Cache的一致性,但是CPU可以修改Cache的数据,所以我们提出的方法是写入主存
写回法:在修改块被替换时写回主存
写直达法:修改Cache时也修改主存
- 性能指标
- 命中率
h/hc
-
- 平均访问时间
T=h*Tc+(1-h)*(Tc+Tm)
-
- 加速比
S=Tm/T