高速缓存Cache

定义

    高速缓冲存储器是用来存放当前最活跃的程序和数据,介于中央处理器和主存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。

    高速缓存还解决CPU与内存速度不匹配的问题。高速缓存和CPU的速度几乎一样,其速度一般是内存的5-10倍。

    存取速度:寄存器>Cache>内存>硬盘>光盘>软盘。寄存器是CPU中的部件。

    其实cpu每次取指令的时候如果一个字节一个字节取,效率就比较低,cpu每次会取很多到高速缓冲区,比如每次取1K,那么你的指令如果就在这1K范围内,CPU就直接在缓冲区中取出指令执行,不需要从内存中取了,这样速度会快很多,如果你的指令超出这个范围,CPU就需要重新取指令,速度就比较慢。

形象比喻想象医生从护士手里取手术刀什么的器件,护士可以在手上放几把常用的,这样医生需要的时候如果手上就有,速度就快很多。护士手上拿的东西多,命中率就高,速度就比较快,聪明的护士会提前判断医生要使用什么,提前准备在手上,速度也会比较快。护士就相当于高速缓存存储器Cache,护士(Cache)去拿刀都是护士自己进行的和医生(CPU)没多大关系。

组成

    Cache存储体: 存放由主存调入的指令与数据块。

    地址转换部件: 建立目录表以实现主存地址到缓存地址的转换。

    替换部件: 在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。


高速缓存中的地址映像方法

    将主存地址转换成Cache存储器的地址,这种地址的转换称为地址映像

1、直接映像

     主存地址=cache区号+块号+块内地址

    地址映象规则: 主存储器中一块只能映象到Cache的一个特定的块中。

    (1) 主存与缓存分成相同大小的数据块。

    (2) 主存容量应是缓存容量的整数倍,将主存空间按缓存的容量分成区,主存中每一区的块数与缓存的总块数     相等。

    (3) 主存中某区的一块存入缓存时只能存入缓存中块号相同的位置。

主存中各区内相同块号的数据块都可以分别调入缓存中块号相同的地址中,但同时只能有一个区的块存入缓存。由于主、缓存块号相同,因此,目录登记时,只记录调入块的区号即可。主、缓存块号及块内地址两个字段完全相同。目录表存放在高速小容量存储器中,其中包括二部分:数据块在主存的区号和有效位。目录表的容量与缓存的块数相同。

    优点:地址映象方式简单,数据访问时,只需检查区号是否相等即可,因而可以得到比较快的访问速度,硬件设备简单。

    缺点:替换操作频繁,命中率比较低。


全相联映像

    主存地址=cache区号+块内地址

    地址映象规则:主存的任意一块可以映象到Cache中的任意一块

    (1) 主存与缓存分成相同大小的数据块。

    (2) 主存的某一数据块可以装入缓存的任意一块空间中。如果Cache的块数为Cb,主存的块数为Mb,则映象关系共有Cb×Mb种。

    目录表存放在相关(联)存储器中,其中包括三部分:数据块在主存的块地址、存入缓存后的块地址、及有效位(也称装入位)。由于是全相联方式,因此,目录表的容量应当与缓存的块数相同。

    优点:命中率比较高,Cache存储空间利用率高。

    缺点:访问相关存储器时,每次都要与全部内容比较,速度低,成本高,因而应用少。


组相联映像

    主存地址=cache区号+组号+块号+块内地址

    组相联的映象规则:

    (1) 主存和Cache按同样大小划分成块。

    (2) 主存和Cache按同样大小划分成组。

    (3) 主存容量是缓存容量的整数倍,将主存空间按缓冲区的大小分成区,主存中每一区的组数与缓存的组数相同。

    (4) 当主存的数据调入缓存时,主存与缓存的组号应相等,也就是各区中的某一块只能存入缓存的同组号的空间内,但组内各块地址之间则可以任意存放,即从主存的组到Cache的组之间采用直接映象方式;在两个对应的组内部采用全相联映象方式。

主存地址与缓存地址的转换有两部分,组地址是按直接映象方式,按地址进行访问,而块地址是采用全相联方式,按内容访问。组相联的地址转换部件也是采用相关存储器实现。

优点:块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。

缺点:实现难度和造价要比直接映象方式高。

命中率

    影响Cache命中率的因素很多,如Cache的容量,块的大小,映象方式,替换策略以及程序执行中地址流的分布情况等等。一般地说,Cache容量越大则命中率越高,当容量达到一定程度后,容量的增加命中率的改善并不大;Cache块容量加大,命中率也明显增加,但增加到一定值之后反而出现命中率下降的现象;直接映象法命中率比较低,全相联方式命中率比较高,在组相联方式中,组数分得越多,则命中率下降。

总结

            
    偶然发现这张图片,觉得挺有道理,大家可以借鉴一下。以上总结虽说都是知识点,但总结会使我的留存率更高。
    
    

你可能感兴趣的:(高速缓存Cache)