存储器3高速缓冲存储器(Cache)

来源:互联网 发布:unity3d书籍推荐 知乎 编辑:程序博客网 时间:2024/04/27 20:13

 

高速缓冲存储器(Cache)

高速缓存是位于CPU和主存之间的高层存储子系统。采用高速缓存的主要目的是提高存储器的平均访问速度,从而使存储器的速度也CPU的速度相匹配。

1、Cache的基本工作原理和结构

Cache通常由两部分组成,块表快速存储器。Cache的工作原理是:处理机按主存地址访问存储器,存储器地址的高段通过主存-Cache地址映象机构借助查表判定该地址的存储单元是否在Cache中,如果在,则Cache命中,按Cache地址访问Cache。否则,Cache不命中,则需要访问主存,并从主存中调入相应数据块到Cache中,若Cache中已写满,则要按某种算法将Cache中的某一块替换出去,并修改有关的地址映象关系。从这个工作原理我们可以看出,它已经涉及到了两个问题。首先是定位、然后是替换的问题。

 

Cache的存在对程序员是透明的。其地址变换和数据块的替换算法均由硬件实现。通常Cache被集成到CPU内以提高访问速度。

2.Cache中是如何进行地址映象和变换的。

因为处理机访问都是按主存地址访问的,而Cache的空间远小于主存,如何知道这一次的访问内容是不是在Cache中,在Cache中的哪一个位置呢? 这就需要地址映象,即把主存中的地址映射成Cache中的地址。让Cache中一个存储块(空间)与主存中若干块相对应,如此,访问一个主存地址时,就可以对应地知道在cache中哪一个地址了。地址映象的方法有三种:直接映象、全相联映象和组相联映象。

直接映象就是将主存地址映象到Cache中的一个指定地址。任何时候,主存中存储单元的数据只能调入到Cache中的一个位置,这是固定的,若这个位置已有数据,则产生冲突,原来的块将无条件地被替换出去。

全相联映象就是任何主存地址可映象到任何Cache地址的方式。在这种方式下,主存中存储单元的数据可调入到Cache中的任意位置。只有在Cache中的块全部装满后才会出现块冲突。

组相联映象指的是将存储空间的页面分成若干组,各组之间的直接映象,而组内各块之间则是全相联映象。

  直接映象 全相联映象 组相联映象 过程 (1)主存地址分成区号、块号、块内地址
(2)在主存地址中截取与Cache地址对就部分作为Cache地址
(3)以块号为地址访问目录表读出区号与主存地址中区号比较
(4)若相等,命中
(5)若不相等,块失效,停止Cache访问。访主存,并调块
(1)主存地址分成主存块号和块内地址
(2)用主存块号同目录表相联比较
(3)若相同,则取出Cache块号,Cache块号与块内地址拼接成Cache地址,访问Cache
(4)若无相同的,则产生缺块、调块
(1)主存地址分区号、组号、块号、块内地址
(2)用组号选出一组
(3)对该组用区号+块号全相联比较
(4)或找不到,则块失效
(5)若找到一样,则将读出的Cache块号与组号和块内地址拼接形成Cache地址。
目录表 长:Cache大小
宽:主存地址位-Cache地址位
长:Cache 大小
宽:(主存块号+Cache块号)位
主存块号位参与比较
长:2ncbCache大小
宽:(区号+2块号)位
(区号+块号)位参与与比较
优点 (1)硬件省,目录表小,成本低
(2)访问Cache与访问区号表同时进行
(1)块冲突最低
(2)Cache空间利用率最高
集中全相联和直接映象的优点弥补他们的缺点 缺点 (1)块冲突概率很大
(2)Cache空间利用率很低
(1)映象表太长
(2)查表速度慢
块冲突仍大于全相联
利用率低于全相联
目录表大于直接方式

 

3.替换策略

直接映象方式下,不存在块替换的算法,因为每一块的位置映象是固定的,需要哪一块数据就可直接确定地将该块数据调入上层确定位置。而其他两种映象就存在替换策略的问题,就是要选择替换到哪一个Cache块。即替换算法。下面将常用的几种替换算法作一比较:

  思想 优点 缺点 随机算法RAND 用软的或硬的随机数产生器产生上层中要被替换的页号 简单、易于实现 没有利用上层存储器使用的"历史信息",没有反映等程序局部性,命中率低。 先进先出FIFO 选择最早装入上层的页作为被替换的页 实现方便,利用了主存历史的信息 不能正确反映程序局部性原理,命中率不高,可能出现一种异常现象。 近期最少使用法LRU 选择近期最少访问的页作为被替换的页 比较正确反映程序局部性,利用访存的历史信息,命中率较高 实现较复杂 优化替换算法OPT 将未来近期不用的页换出去 命中率最高,可作为衡量其他替换算法的标准 不现实,只是一种理想算法

 

 

 

 

 

原创粉丝点击