高速缓存概述
目录
1.存储器的层次结构
数据总是在相邻两层之间进行复制传送,为什么这种结构有效?
程序的空间局部性和时间局部性。刚访问过的单元不久可能还会被访问,刚刚访问过单元的附近单元可能会被访问。
2.cache概述
程序具有访问局部性特征的原因
- 指令:指令按序存放,地址连续,循环程序段或子程序段重复执行
- 数据:连续存放,数组元素重复、按序访问
- 如何分块?
- 主存块和Cache之间如何映射?
- Cache已满时,怎么办?
- 写数据时怎样保证Cache和MM的一致性?
-
如何根据主存地址访问到cache中的数据?
......
3.Cache的映射方式
- 直接(Direct) :每个主存块映射到Cache的固定行
- 全相联(Full Associate) :每个主存块映射到Cache的任一行
- 组相联(Set Associate) :每个主存块映射到Cache固定组中任一行
①直接映射:
主存和Cache之间直接映射,块大小为16B。Cache的数据区容量为64KB,主存地址为32位,按字节编址。
硬件实现的:一条指令执行的过程,取指令和取操作数。
容量4Kx(1+16)+64Kx8=580Kbits=72.5KB,
数据占64KB/72.5KB = 88.3%
特点:
- 容易实现,命中时间短
- 无需考虑淘汰(替换)问题
- 但不够灵活, Cache存储空间得不到充分利用,命中率低
②全相联
特点:
- 冲突缺失概率为0
- 命中时间长
- 比较器长,tag长,开销成本大
③组相联