组成原理(十):存储系统之 高速缓存器
1、提高主存读写速度的技术
1.1、主存与CPU速度的匹配
主存的速度落后与CPU的速度,会导致CPU在等待数据就绪之前执行多个等待周期,造成了CPU资源的浪费。
1.2、多通道内存技术
多通道内存技术是解决CPU总线带宽与内存带宽矛盾的方案,实质上是一中多通道内存控制和管理技术,与内存自身无关。
双通道内存技术,在芯片组里制作两个内存控制器,这两个内存控制器可以相互独立工作,在两个内存通道上,CPU可以分别寻址、读取数据,从而可以使内存的带宽增加一倍。
1.3、多体交叉存储技术
1.3.1、并行访问存储器
1.3.2、交叉访问存储器
交叉访问存储器中有多个容量相同的存储模块(存储体),且各存储模块具有各自独立的地址寄存器、读写电路和数据寄存器,这就是多体系统。
多体交存储器
各个存储体能并行工作,又能交叉工作。
存储器地址寄存器的低位部分经过译码选择不同的存储体,而高位部分则指向存储体内的存储字。
2、高速缓冲存储器
2.1、高速缓存工作原理
2.1.1、程序的局部性原理
程序的局部性:时间局部性和空间局部性。
时间局部性:如果一个存储单元被访问,则可能该单元很快被再次访问;
空间局部性:如果一个存储单元被访问,则该单元邻近的单元也可能很快被访问。
因为程序中大部分指令是存储存储、顺序执行的,数据一般也是以向量、数组、表等形式簇聚的存储在一起。
高速缓存技术利用程序局部性原理,将程序中正在使用的部分存放在一个高速的容量较小的Cache中,使CPU的访存操作大多数针对Cache进行,从而使程序的执行速度大大提高。
2.1.2、Cache的基本结构
Cache和主存被分成若干个大小相等的块,每块由若干字节组成。Cache的容量远小于主存的容量,因此Cache的块数要远少于主存中的块数,保存的信息只是主存中急需执行的若干块的副本。
用主存地址的块号字段访问Cache标记,并将取出的标记和主存地址的标记字段相比较,若相等,说明Cache有效;若不相等,说明访问Cache无效,称Cache不命中或失效。
2.2、Cache的读写操作
2.2.1、Cache的读操作
当CPU发出读请求,若Cache命中,直接对Cache进行读操作,与主存无关;
若Cache不命中,访问主存,并把该块信息一次从主存调入Cache内。若此时Cache已满。必须根据某种替换算法,用这个块替换掉Cache中原来的某块信息。
2.2.2、Cache的写操作
由于Cache中保存的只是主存部分副本,副本与主存中数据存在一致性的问题。
当CPU发出写请求,若Cache命中,有可能会遇到Cache与主存中的内容不一致。如,CPU写Cache,把Cache中某单元中的内容从X修改成X',而主存对应单元中的内容仍然是X,没有改变。所以若Cache命令,需要进行一定的写处理,处理的方法有:写直达法和写回法。
若写Cache不命中,就直接把信息写入主存,并由两种处理方法:
1、不按写分配法,即只把所要写的信息写入主存;
2、按写分配法,即在把所要写的信息写入主存后还把这个块从主存读入Cache。
2.3、地址映像
在Cache中,地址映像是指把主存地址空间映像到Cache地址空间,即把存放在主存中的程序按照某种规则装入Cache中。
地址映像的3种方法:全相联映像、直接映像和组相连映像。
2.3.1、全相连映像
让主存中任何一个块均可以映像装入到Cache中任何一个块的位置上。
全相联映像方式灵活,Cache的块冲突概率低、空间利用率高,但地址变换速度慢,实现困难。
2.3.2、直接映像
主存中的每一个块只能被放置到Cache中唯一的一个指定位置,若该位置已有内容,则产生块冲突,原来的块将无条件被替换出去。
直接映像方式成本低、易实现,地址变换速度快,不涉及替换算法;
但不够灵活,Cahce的块冲突概率最高,空间利用率低。
2.3.3、组相联映像
将Cache空间分成大小相同的组,让主存中的一块直接映像装入Cache中对应组的任何一块位置上,即组间采用直接映像,组内采用全相联映像。
当组相联映像中的组内块容量为1时,就转化为直接映像;当组内的块容量为Cache的容量时,就转化为全相联映像。
2.4、替换算法
在采用全相联映像和组相联映像方式从主存向Cache传送一个新块,而Cache中的空间已被沾满时,就需要把原来存储的一替换掉。
常用的替换算法:
随机算法
|
随机选择一个Cache块替换掉
|
先进先出(FIFO)
|
按调入Cache的先后决定淘汰的顺序,在需要更新时,将最先进入Cache的块作为被替换的块,为每一块做一记录,记录进入Cache的先后次序。
|
近期最少使用(LRU)
|
把CPU近期最少使用的块作为被替换的块,需随时记录Cache中各块的使用情况,以确定哪个块近期最少使用
|
2.5、更新策略
为解决Cache与主存内容不一致问题,需要选择合适的Cache更新策略。
Cache有两种更新策略:写直达法、写回法。
写直达法
|
CPU在执行写操作时,必须把数据同时写入Cache和主存。
当某一块需要替换时,不必将该块写回到主存中,新调入的块可立即覆盖该块。
可保持主存数据的正确性;降低存取速度。
|
写回法
|
CPU在执行写操作时,被写数据只写入Cache,不写入主存。
当某一块需要替换时,才将已经修改过的Cache块写回到主存。
Cache块表中,有一个标志位(也称"脏位"),当一块中的任何一个单元被修改时,标志位被置"1",在需要替换该块时,若标志位为"1",则必须先把该块写回到主存中,才能调入新的块;若标志为"0",则这一块不必写回主存。
|
2.6、微机中Cache技术实现
多级Cache,增加了Cache的级数,将统一的Cache编程分开的Cache。
2.6.1、单一缓存和多级缓存
单一缓存,CPU和主存之间只设一个Cache。
与CPU制作在同一个芯片的Cache,被称为一级Cache(L1 cache),又称片内Cache。L1 Cache是所有系统中最快的高速缓存,CPU可直接访问L1 Cache,不必占用外部总线。
安装在主板上的Cache,被称为L2 Cache(二级缓存),L2 Cache以主板速度运行。
多级Cached的容量相对递增。CPU访存时首先查找 L1 Cache,若L1 Cache未命中,则访问 L2 Cache,直到所有级别的Cache都不命中,才访问主存。
2.6.2、统一缓存和分开缓存
统一缓存,指令和数据都存放在同一个Cache中。
分开缓存,指令和数据分别存放在两个Cache中,分别是指令Cache 和 数据Cache。
当前绝大多数的CPU采用分开缓存,及哈佛结构。