1.Cache 概念
Cache存储器是一种高速的,但其规模大小相对于主存储器而言又是比较小的位于处理机和操作速度比较低的主存储器之间的一种存储设备。其内保存的是目前处理机正在使用的主存储器的副本,处理机使用Cache 可以快速地从其内取得所需的指令和数据。
2.为什么要用CACHE
内存是以系统总线的时钟频率工作的,这个频率通常也就是CPU的外频(对于雷鸟、毒龙系列的处理器,由于在设计采用了DDR技术,CPU工作的外频为系统总线频率的两倍)。但是,CPU的工作频率(主频)是外频与倍频因子的乘积。这样一来,内存的工作频率就远低于CPU的工作频率了。这样造成的直接结果是:CPU在执行完一条指令后,常常需要“等待”一些时间才能再次访问内存,极大降了CPU工作效率。在这样一种情况下,Cache就应运而生。在正常情况下执行时,访问Cache 的速度要比访问主存储器的速度快3~8倍,所以装配有Cache 的处理机实实在在地减少了访问存储器的时间。由于装备有Cache,相应地减少了访问主存储器的次数。
3.CACHE组成
由一个目录(或称之为标记)以及一个数据存储器组成,或更详细点:由Cache 存储部件和Cache控制部件组成,Cache 控制器部件包括主存地址寄存器、Cache 地址寄存器,主存—Cache地址变换部件及替换控制部件。
4、CACHE怎么工作
Cache是怎样工作的
为使Cache 更加有效,要求程序有高度的暂时性和局部性。配备Cache的基础是基于程序访问的局部性原理,即要被访问的数据大多集中在存储器的某个局部区域。从程序执行的过程上来说,它不可能长时间地仅执行位于存储器内某个局部区域中的某一段程序,被执行的程序段有可能会随着程序的结构被更换,但在短时间内CPU访问的程序段还是固定的几个程序段。通常大部分程序都是顺序执行的,除分支转移指令和调用指令外,在大多数情况下,下一次要取的指令往往是紧跟着上一次刚取的那一条指令。
我们知道,CPU运行程序是一条指令一条指令地执行的,而且指令地址往往是连续的,意思就是说CPU在访问内存时,在较短的一段时间内往往集中于某个局部,这时候可能会碰到一些需要反复调用的子程序。电脑在工作时,把这些活跃的子程序存入比内存快得多的Cache 中。CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中”,此时CPU直接从Cache中调用该内容;否则,就称为“不命中”,CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从Cache中读出内容,也可以直接往其中写入内容。由于Cache的存取速率相当快,使得CPU的利用率大大提高,进而使整个系统的性能得以提升。
Cache 分类
§ 统一Cache(Unified Cache)指令Cache与数据Cache统一为一体的Cache。
§ 分离Cache(Split Cache)指令Cache与数据Cache各为一体的Cache。
按映射方式分:
直接映像的Cache(Direct Mapped Cache)这是一项Cache交换技术,为存储器中每一存储器单元,对应分配Cache中惟一的一个存储单元。
N路相联的Cache (N-Set-Associative Cache)这是一项Cache映像技术。对主存储器中的每一存储单元,在Cache中就有好几个可用的存储单元与其对应。
CACHE替换算法
FIFO替换算法(FIFO Replacement Algorithm)
即先进先出的替换算法。当所需的存储空间较大时,驻留在Cache中最深的那个数据,最先从Cache内传送出来。
LRU替换算法(LRU Replacement Algorithm)
这是一种比FIFO替换算法更有效的替换算法。当需要较大的存储空间时,就用最近经常要使用的数据替换下Cache中最近最少使用的数据。
交换(swapping)
是指在Cache和主存储器之间进行的数据传送操作。由于Cache存储器的存储空间相对较小,所以会经常地把某些数据块传送回主存储器,主存储器要为CPU经常使用的数据块的数据准备好地方。
一致性(Coherency)
指的是Cache中信息与主存储器中的信息一致性,即Cache中每一地址上的数据与主存储器中相应存储单元中数据相一致。欲使主存储器信息与Cache内信息之间协调一致,通常有三种写方案可供选择。
(1)写贯穿(Writ Through):
这是在所有写操作时修改主存储器和Cache存储器的一种方法,在向Cache写数据的同时,把相同的数据也写入主存储器中。
(2)写回(Write Back):
这种写方案是一种用来更新Cache的写方法,只有当Cache中某一存储块被刷新时,才会把这一存储块写回主存储器。
(3)记入式写(Posted Write):
这种写方案实际上是一种带缓冲的写贯穿,这种写方案是把欲写到Cache中的数据先复制到一个缓冲存储器中去。然后再把这个副本写回主存储器。