【计组原理学习笔记】Cache的映射

时间:2024-04-01 09:02:48

目录

 

一、直接映射

直接映射工作图

地址构成

工作流程

直接映射中Cache地址和主存地址对比(重点注意)

二、全相联映射

全相连映射工作图

地址构成

三、组相连映射

组相连映射工作图

地址构成

工作流程


一、直接映射

  • 定义:主存中任一给定的块,只能映射/装载到某一个指定的Cache块中
  • 构成:根据cache存储体和主存储体的大小,将主存划分为若干个与cache存储体相等的区,每个区的大小与cache大小相同
  • 映射规则:主存各区的字块数=cache内的字块数。进行映射时,各个区的 第零块 只能放在cache存储体的 第零块 当中,第n块只能放在cache的第n块中
  • 特点
    • 结构简单,速度较快
    • 可以通过cache块的地址直接找到cache块
    • cache空间利用率最低,cache块调入时最容易冲突
  • 直接映射工作图

【计组原理学习笔记】Cache的映射

  • 地址构成

    • 区号——主存字块标记;与Cache地址内Tag相比较,用于判断Cache是否被命中
    • 块号——Cache字块地址;用于寻找对应的Cache块,找到后通过比较器与块前的标记作对比判断是否命中
    • 块内偏移地址——字块内地址
  • 工作流程

    • ①CPU发出读指令 → 根据字块地址找到对应块 → 对比块前标记通过比较器判断是否命中(主存标记位相等且Cache地址内的有效位 = 1

               ②命中:将Cache内信息送往CPU → 结束

               ③未命中:访问主存将信息送往CPU 同时 判断Cache是否满

                     1)未满 → 将新存储块调入Cache中 → 结束

                     2)已满 → 原来的块被无条件替换(不执行替换算法) → 新存储块调入Cache(主存字块标记位写入Tag,有效位                            置为1 → 结束

  • 直接映射中Cache地址和主存地址对比

    • Cache地址 = 存储容量+标记阵列容量 (由多个标记项组成,容量即为单个标记项长度)
    • 标记阵列容量 = 有效位+标记为(Tag)+一致性维护位(脏位)+替换算法控制位
    • 一般只考虑 有效位+标记位 ,使用写回法时一定包含一致性维护位
    • Cache地址图示

【计组原理学习笔记】Cache的映射

二、全相联映射

  • 定义:主存中任意一个块可以被放到cache的任意一个块中
  • 特点
    • cache利用率较高、冲突概率低、命中率高
    • 主存字块标记要和cache内所有字块标记相比较,判断是否命中
    • 电路比较复杂,地址变换速度较慢
    • 参加比较的主存字块标记过长
    • 成本高,一般用按内容寻址的相联存储器进行地址映射
  • 全相连映射工作图

【计组原理学习笔记】Cache的映射

  • 地址构成

    • 区号+块号——主存字块标记;需要和cache地址内字块标记的Tag位相比较,判断是否命中
    • 块内偏移地址——字块内地址

三、组相连映射

  • 定义:主存中任意一个块可以被放到cache内对应组的任意一个块中
  • 映射规则:先将cache分成块,将块分组,每组包含多个快;将主存储器分区,每个区的大小和cache中的组数相同(组数 = 区内块数)。映像时,每个区的 第零 可以放到cache中 第零 的任何一个位置
  • 是全相联和直接映射的结合体——组间直接映射,组内全相联映射
  • 组相连映射工作图

【计组原理学习笔记】Cache的映射

  • 地址构成

    • 组地址:通过主存块号找到对应的组号
    • 主存字块标记:与对应组内的字块标记进行比较
    • 字块内地址
  • 工作流程

    • ①CPU发出读指令 → 根据组地址找到对应组 → 对比块前标记通过比较器判断是否命中(主存标记位相等且Cache地址内的有效位 = 1

              ②命中:将Cache内信息送往CPU → 结束

              ③未命中:访问主存将信息送往CPU 同时 判断Cache是否满

                    1)未满 → 将新存储块调入Cache中 → 结束

                    2)已满 → 执行替换算法,将信息删除或写回主存 →新存储块调入Cache(主存字块标记位写入Tag,有效位置                               为1→ 结束