一、Cache基本概念

  • 定义:Cache是位于CPU与主存之间的高速缓冲存储器,用于缓解CPU与主存之间的速度差异。
  • 透明性:对程序员和编译器而言,Cache是透明的,程序员无需关心其存在与否,但理解Cache机制有助于编写高效程序。
  • 基本术语
    • 主存块(Block):主存被划分为大小相等的块。
    • Cache行(Line)或槽(Slot):Cache被划分为与主存块大小相同的行或槽。
    • 命中(Hit):CPU访问的数据在Cache中。
    • 缺失(Miss):CPU访问的数据不在Cache中,需从主存调入。

二、Cache映射方式(Cache Mapping)

Cache映射方式决定了主存块如何映射到Cache行中,主要有三种方式:

映射方式 特点 优点 缺点
直接映射(Direct Mapped) 每个主存块映射到Cache中固定的行 实现简单、命中时间短、无需考虑替换策略 不够灵活,易产生冲突缺失,Cache空间利用率低
全相联映射(Fully Associative) 每个主存块可映射到Cache任意行 灵活,冲突缺失为0,命中率高 实现复杂,需大量比较器,成本高,速度慢
组相联映射(Set Associative) 每组主存块映射到Cache固定组的任意行(组间模映射、组内全映射) 综合直接映射和全相联映射优点,兼顾灵活性与实现成本 实现较复杂,需一定数量比较器

三、Cache地址划分与组织结构

  • 地址划分
    • 标记(Tag):用于标识主存块。
    • 索引(Index):用于定位Cache行或组。
    • 字节偏移(Byte Offset):用于定位块内具体字节。
  • 有效位(Valid Bit)
    • 标记Cache行数据是否有效(1有效,0无效或初始状态)。