跳转至

缓存测量实验介绍

实验背景

使用 Cache 的原因:

  • 计算机性能的瓶颈在访存上 —— 内存访问的延迟要远大于处理器的时钟周期

  • 程序工作的局部性原理

设计 Cache 时通常要考虑的问题:

  • Cache 大小
  • Cache Line 大小
  • Cache 的相联度
  • Cache 的写策略
  • Cache 的替换策略
  • 多 Cache 的一致性维护
  • ……

常见的 Cache 组织方式:

  • Private L1 DCache; Private L1 ICache
  • Private L2 Cache
  • Shared L3 Cache

Cache Line:

  • 利用程序的空间局部性
  • 不同层级的 Cache 的 Cache Line 大小未必相同
  • Cache Line 的数量 = Cache Size / Cache Line Size
  • 是 Cache 填充的基本单位,但有的处理器的 L2 或者 L3 Cache 会一次性填充多个 Cache Line

相联度:

  • 一个 Cache Set 中的 Cache Line 个数
  • 全相联 v.s. 直接映射 v.s. 组相联

实验内容

  1. 构造测试用例,测量程序在模拟器上运行的周期数,测量模拟器使用的数据缓存大小。

  2. 构造测试用例,测量程序在模拟器上运行的周期数,测量模拟器使用的数据缓存的缓存行大小。

  3. 构造测试用例,测量程序在模拟器上运行的周期数,测量模拟器使用的数据缓存的相连度。

  4. 利用所学的 Cache 知识,优化矩阵乘法代码。

  5. (选做)构造测试用例,测量程序在模拟器上运行的周期数,测量模拟器使用的数据缓存的替换策略和写策略。

实验目的

  1. 加强对 Cache 的理解,让机器的 Cache 不再 “透明”。

  2. 利用 Cache、局部性原理和课上所学的知识优化程序,加深对课程内容的理解。

推荐实验环境

  1. Linux 系统或者虚拟机
  2. C/C++ 编程环境
  3. 已经完成实现的 Tomasulo 模拟器

最后更新: 2024年4月27日
作者:cuibst