1.什么是cache?
cache是高速缓冲存储器。cache是介于CPU和主存之间的高速小容量存储器。
2.为什么需要cache?
cache能够高效的向CPU提供指令和数据,从而加快了程序的执行速度。
3.cache向cpu提供数据的过程?
cpu和cache之间的数据交换是以字为单位,而cache与主存之间数据交换是以块为单位的。
块由若干个字组成,是定长的。
当CPU读取内存中的一个字时,便发出此字的内存地址到cache到主存。
此时cache控制逻辑地址判断此字当前是否在cache中,
如果在,则cache命中,此字立即传送给cpu,
如果不在,则cache未命中,用主存读周期把此字从主存读出送到cpu,
与此同时,把含由这个字的整个数据块从主存读出送到cache中。
4.cache设计中必须解决的问题?
cache设计必须遵循两个原则:
(1)希望cache的命中率尽可能的高。
(2)希望cache对cpu而言是透明的。
cache设计中要解决的四个问题:
(1)主存的内容调用cache中如何存放?-----------------地址映射
(2)访存时如何找到cache的信息?---------------------地址变换
(3)当cache的空间不足的时候如何替换cache的内容?-----cache的替换策略
(4)需要写操作时如何改写cache的内容?----------------cache的写操作策略
5.主存与cache地址映射?
(1)全相联映射方式
(2)直接映射方式
(3)组相连映射方式
6.cache的替换策略
对于直接映射来说,因一个主存块只有一个特定的位置可以存放,只要把特定位置上的原主存块换出cache即可。对于全相联和组相联cache来说,就要从允许存放主存块的若干特点中选取一行换出。
(1)最不常用使用(LFU算法)
LFU算法认为将一段时间内访问次数最少的那行数据换出。
每行设置计数器,没访问一次,计数器加一,根据计数器的数值判断那行访问最少。
(2)近期最少使用(LRU算法)
LRU算法将近期内长久未被访问过的行换出。
每行设置计数器,每命中一次计数器清零,其他各行计数器加一,将计数最大的换出。
(3)随机替换
就是随机替换。
7.cache的读写行为
8.多级cache减少缺失损失
为了缩小现代处理器高时钟频率和访问DRAM相对较慢之间的差距,高性能微处理器可支持附加一级的cache。