• 主要内容:

    1. 高速缓冲存储器的工作原理
    2. 告诉缓冲存储器的地址映射
    3. 替换策略
    4. 写操作策略

    高速缓存cache

  • **作用:**解决Cpu与主存速度不匹配的问题。

工作原理

  • 程序访问的局部性
    • 在一段时间内,对局部方位内的存储器频繁访问,而对其他大区域很少访问。 大量的典型程序运行情况分析表明,程序访问具有局部性。
    • 根据程序访问的局部性特点,在cpu与主存之间设置一高速但容量较小的存储器(cache),将当前正在执行的程序、数据和周围局部地方放在其中,将会大大提高整个程序运行的速度。

一、基本设计思想:

  • 主存和cache之间的信息交换,以块为单位,每块包含的字数一样多。
  • Cache的每行都设置有标记,cpu访问程序或数据时,先访问标记。
  • 当Cpu访问主存某内容时,先检查该内容是否在cache中,若在就从cache中读出(cache命中),若没有就从主存中读出,同时将该单元所在块的所有字都读入cache中,以便下次访问。
  • 除了包含快速的SRAM外( Cache通常使用昂贵但较快速的SRAM技术(通常认为cache是静态随机存储器)。 Cache还要有相应的控制逻辑支持`。
    • 若cache在cpu外,则cache的控制逻辑一般与主存的控制逻辑合成在一起。
    • 若cache在cpu内,则由cpu提供Cache的控制逻辑。

二、Cache的基本结构

  • 存储体: 基本单位为字,若干个字构成一个数据块
  • 地址映射变换机构: 用于将主存地址变换为Cache地址,以利用Cpu发送的主存地址访问cache。
  • 替换机构: 用于更新Cache中数据。
  • 相连存储器: Cache的块表,快速指示索要访问的信息是否在Cache中(提高性能);
  • 读写控制 :对读写操作实施控制

三、Cache读操作

  1. cpu发出有效的主存地址;
  2. 经过地址变换机构,变换为可能的Cache地址;
  3. 查找块表,判断所访问的信息是否在Cache中;
    1. 若在,则直接读取数据。
    2. 若不在,则cpu访问主存,并判断cache是否已经满了。
      • 若Cache未满,则将改数据所在块从主从中调入Cache
      • 若Cache已满,使用替换机制,更新Cache中的某些块。

四、Cache写操作

  1. CPU发出有效的主存地址

  2. 经过地址变换机构,变换为可能的Cache;

  3. 查找对于的相联存储器,判断所要访问的信息是否在Cache中,且是否已经更新

    1. 若不在,则使CPU直接写主存数据
    2. 若在,则使用某种写策略将数据写入Cache
  4. Cache写操作有三种

    1. 直写式系统
    2. 缓冲直写式系统
    3. 回写式系统(常用)
      • 为每一块个数据块设置一个更新位
        • 当CPU准备写入数据时,若果更新位是1,则表示该块数据未被更新到主存中,则cpu跳过cache直接将数据写入到主存中,再回写入cache中。
        • 如果更新位是0,则表示该块数据已经更新备份到主存中,cpu直接将数据写入到cache中。

五、Cache的评价指标

  1. Cache的命中率

    • 访问cache的次数占总访问次数的比例。
    • 影响cache命中率的因素
      1. Cache容量 :如果容量过小,命中率低。 容量过大,对提高效率不明显,且成本高。
      2. Cache中的块大小:一般用一个主存周期所能调出的存储单元数(字或字节)作为一个块。
  2. 主存储系统的平均访问时间

  • 主存系统的访问时间:cache系统的访问时间加上主存的访问时间

存储系统--高速缓冲存储器
存储系统--高速缓冲存储器

  • 这一题直接用(190050+250100)/(1900+100) 计算更快

高速缓存存储器的地址映射

  • 信息在主存和Cache中,确定它们的对应关系就需要借助地址映射。
  • 地址映射的定义:
    • 主存地址按某种规律(函数)映射到cache中。
  • 当cpu访问存储器时,它发出的内存会自动变换为cache地址。
  • 实现:采用硬件,很快。而且编程人员不会感到Cache的存在。这种特性也称为cache的透明性。
  • 主要地址映射方式:
    1. 全相联方式
    2. 直接方式
    3. 组相联方式

几个概念

  • 行的概念“”: Cache的数据块称为”行”,用Li表示。
  • ”: 主存的数据称为“块”,用Bj来表示 (每个数据块和cache的行的大小完全一样, 而且每个块或行都是由若干个连续的字组成的)。

一、全相连映射方式:

一、映射关系

  • 主存中任意一个块可以映射到cache中的任意一行中。需要在cache中的一行增加标记部分,存放该行内容的主存块的块号。
  • 二、主存与cache地址格式
    存储系统--高速缓冲存储器
  • 将CPU发出的内存地址的快号部分与cache所有行的标记进行比较 ,如果有相同的,则cache命中了。如果找不到,则没命中。
  • 与主存中某块的标记相同,则表示cache命中了。

三、优缺点

  • 灵活性好
    • Cache中只要有空行,就可以调入所需的主存数据块
  • 利用效率不高
    • 因为存在了一个m位的标记位,使cache的行包含了一些对存储无用的信息。
  • 速度太慢
    • 每次访问cache时,需将一个一个遍历并比较标记,才能判断所需主存的字块是否在cache中
  • 因此全相联映射方式更适用于小容量的cache。(容量一大,所占位数就大,块内地址的位数不变,行内地址位数不变,那么行内标记的位数就更大了,利用率更不理想。)

五、例题!!!
存储系统--高速缓冲存储器

  1. cache的地址格式:
    • cache的容量是16KB,所以按字编码的话,cache的总线长度是14位。
    • 块(行)的大小是512B,也就是说块(行)内地址是9位。
    • 因此行标记 14-9=5位 ,也就是说cache一共有32行。
      存储系统--高速缓冲存储器
  2. 主存的地址格式
    • 主存容量1MB,一共是20位。
    • 块的大小是9位,所以块标记公用11位。 一共2048块
      存储系统--高速缓冲存储器
      3.块表的容量
    • 根据行的数量和块标记的位数,可以得到块表的容量是 32*11位
    • 这个块表不包含地址部分,只有标记部分。块表中块的数量由cache行的数量决定。
      存储系统--高速缓冲存储器
      存储系统--高速缓冲存储器

直接映射方式:

一、简介:

  • 一些约定的主存块只能复制到cache中的一个特定行中。
    • 如果cache中有m行,则主存的第0块,第m块,第2m块,……,第2s-m块只能映射到cache的第0行。(s是块标记个数,m是行数)
    • 主存的第1块,第m+1块,第2m+1块,……,第2s-m+1块只能映射到cache的第1行。
      存储系统--高速缓冲存储器二、映射关系
      存储系统--高速缓冲存储器

三、主存地址格式

  • 假设主存共2n个单元,分成2s个块,每块单元数为2w个,则主存地址为s+w位。(2^s^个块代表块标记数目,每块单元数2^w^代表块内地址位数
  • Cache空间被分成2m行,每行大小也应该为2w单元,则Cache地址为m+w位。

相关文章: