计算机组成原理 笔记8


Cache

SRAM

  • 无需刷新: 持续供电即可保持稳态; 掉电数据丢失: 无持久性.
  • 存储密度低: DRAM 使用 1 个晶体管, SRAM 使用 6 个晶体管.

Cache

  • 目的: 根据程序局部性, 加快程序执行.
  • 包含信息:
    • 地址.
    • 数据.
    • Valid 位.
  • 设计原则:
    • 内存物理地址到 Cache 地址的地址映射关系.
    • Cache 使用虚拟地址 or 物理地址.
      • CPU 提供虚拟地址, Cache 虚拟地址无需让 MMU 进行 Page Table Walker, 加速查询.
      • 两个 Cache 虚拟地址对应同一物理地址, 一致性有误.
      • 一个 Cache 虚拟地址对应两个物理地址, Cache 只能保存一项.
      • 薛定谔的地址?
    • 控制位.
    • 数据粒度.
  • Cache Line:

    • 大小至少 4Byte, 使用一个 Valid 位控制.
    • 若 Cache Line 过大, 可针对每 4Byte 或 8Byte 再设 Valid 位.
  • 不允许 Cache 的内存地址: MMIO 外设, 如串口寄存器, 读写慢. 需要将内存地址分类为 Cached/Uncached.

  • Cache 分类:
    • L1 Cache: 多核 private, 分 Icache 与 Dcache.
    • L2 Cache: 多核 private.
    • L3 Cache: 多核 public.
  • 内存物理地址到 Cache 地址的映射关系:

    • 地址只允许被映射到一个位置.
    • 地址允许被映射到多个位置.
    • 全相联映射: 任何地址允许被映射到任何 Cache 的任何位置.

      • Cache Line 大小为 4Byte: 地址前 30 位为 CT, 后 2 位为 CO.
      • 条件:

        • Valid 位为 1.
        • CT 相同.
      • 利用率高; 1024 路比较电路成本大, 硬件复杂, 延迟增加.

      • 需要缓存替换算法.
    • 直接映射: 主存按 Cache 大小分块, 地址对应映射.

      • Cache 大小为 4KB: 地址前 20 位为 CT, 中 10 位为 CI, 后 2 位为 CO.
      • 条件:

        • CI 索引 Cache Line 位置.
        • Valid 位为 1.
        • CT 相同.
      • 单路比较电路, 硬件简单; 利用率低.

      • 无需缓存替换算法.
    • 组相联映射: 结合全相联映射与直接映射, 相当于多路直接映射.

  • Cache 写策略:
    • Write back (绝大多数):
      • 写分配:
        • 先替换, 替换时 Dirty 写回主存, 替换后再写 Cache.
        • 程序 load/store 仅对 Cache 进行, 程序视角满足一致性.
    • Write through (MMIO 内存 or 多核 CPU 的 TLB 更新):
      • 写分配:
        • 先替换, 替换后先写 Cache, 再写主存.
      • 非写分配:
        • 直接写主存.
  • Cache 缺失:

    • 必然缺失: 进程切换/首次访问.
    • 容量缺失: 全相联映射.
    • 冲突缺失: 直接映射/组相联映射.
    • 无效缺失: 其他进程修改.
  • Cache 替换策略:

    • RAND.
    • FIFO.
    • LRU.

文章作者: Chengsx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Chengsx !
  目录