您的位置:首页 > 理论基础

南大Mooc计算机体系基础--高速缓存cache

2017-10-27 22:47 211 查看

高速缓存cache

cpu<–>cache<–>内存(主存)<–>外存(辅存)

计算机存储层次结构:金字塔型

空间、时间局部性:引入cache

例子:访问二维数组A[0][0]-A[0][1]。。。空间局部性好

了解cache才能写出高效程序

操作过程:

cpu通过地址需要一块主存数据

判断是否在cache中,hit直接从cache中取,miss加入到cache

疑问:如何从elf的虚存地址,转换成cpu需要的实际内存地址

cache映射方式:

直接映射:主存块 映射到mod之后的 cache块,cache需要一个标记来

确定是哪一个主存块(块群号)。

块群号+行号+块内号

特点:容易实现,命中时间很短(按地址找)。无需考虑淘汰问题。命中率低。

全相联映射:要标记11位块号。

特点:命中时间长(按内容找),比较器长。成本高,命中率高。

组相联映射:组间取模,组内任意。

cache替换算法(逻辑演示):

FIFO:先进先出,先进的在上面,淘汰最上面的

LRU:最近最少用,最近使用的提到最上面,淘汰最下面的。实际用计数值方式标记最近用。

cache一致性问题:

写命中(要写块的在cache中)

write through:直写,立即写入cache和二级cache,二级cache受存储器控制写回主存。

write back:回写,cache中标记一个‘脏’位来判断是否有更改,当cache块被淘汰时一次性写回。同时要锁定对应主存块,不能被io访问。

写未命中:

写分配:加到cache后在写

非写分配:直接在主存中写

直写:写分配/非写分配

回写:非写分配
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: