组成原理(十):存储系统之 高速缓存器

1、提高主存读写速度的技术

1.1、主存与CPU速度的匹配

  主存的速度落后与CPU的速度,会导致CPU在等待数据就绪之前执行多个等待周期,造成了CPU资源的浪费。

1.2、多通道内存技术

  多通道内存技术是解决CPU总线带宽与内存带宽矛盾的方案,实质上是一中多通道内存控制和管理技术,与内存自身无关。

  双通道内存技术,在芯片组里制作两个内存控制器,这两个内存控制器可以相互独立工作,在两个内存通道上,CPU可以分别寻址、读取数据,从而可以使内存的带宽增加一倍。

1.3、多体交叉存储技术

1.3.1、并行访问存储器

  采用并行主存系统,在一个存取周期内可以并行读出多个1字,依赖整体信息吞吐率的提高,以解决CPU与主存之间的速度匹配问题。

1.3.2、交叉访问存储器

  交叉访问存储器中有多个容量相同的存储模块(存储体),且各存储模块具有各自独立的地址寄存器、读写电路和数据寄存器,这就是多体系统。

多体交存储器

 0

  各个存储体能并行工作,又能交叉工作。

  存储器地址寄存器的低位部分经过译码选择不同的存储体,而高位部分则指向存储体内的存储字。

2、高速缓冲存储器

2.1、高速缓存工作原理

2.1.1、程序的局部性原理

  程序的局部性:时间局部性和空间局部性。

  时间局部性:如果一个存储单元被访问,则可能该单元很快被再次访问;

  空间局部性:如果一个存储单元被访问,则该单元邻近的单元也可能很快被访问。

  因为程序中大部分指令是存储存储、顺序执行的,数据一般也是以向量、数组、表等形式簇聚的存储在一起。

  高速缓存技术利用程序局部性原理,将程序中正在使用的部分存放在一个高速的容量较小的Cache中,使CPU的访存操作大多数针对Cache进行,从而使程序的执行速度大大提高。

2.1.2、Cache的基本结构

  Cache和主存被分成若干个大小相等的块,每块由若干字节组成。Cache的容量远小于主存的容量,因此Cache的块数要远少于主存中的块数,保存的信息只是主存中急需执行的若干块的副本。

 0

  用主存地址的块号字段访问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中任何一个块的位置上。

  0

  全相联映像方式灵活,Cache的块冲突概率低、空间利用率高,但地址变换速度慢,实现困难。

2.3.2、直接映像

  主存中的每一个块只能被放置到Cache中唯一的一个指定位置,若该位置已有内容,则产生块冲突,原来的块将无条件被替换出去。

  0

  直接映像方式成本低、易实现,地址变换速度快,不涉及替换算法;

  但不够灵活,Cahce的块冲突概率最高,空间利用率低。

2.3.3、组相联映像

  将Cache空间分成大小相同的组,让主存中的一块直接映像装入Cache中对应组的任何一块位置上,即组间采用直接映像,组内采用全相联映像。

 0

  当组相联映像中的组内块容量为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采用分开缓存,及哈佛结构。

 
posted @ 2023-09-11 15:05  无虑的小猪  阅读(106)  评论(0编辑  收藏  举报