缓存测量实验介绍
实验背景
使用 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. 组相联
实验内容
-
构造测试用例,测量程序在模拟器上运行的周期数,测量模拟器使用的数据缓存大小。
-
构造测试用例,测量程序在模拟器上运行的周期数,测量模拟器使用的数据缓存的缓存行大小。
-
构造测试用例,测量程序在模拟器上运行的周期数,测量模拟器使用的数据缓存的相连度。
-
利用所学的 Cache 知识,优化矩阵乘法代码。
-
(选做)构造测试用例,测量程序在模拟器上运行的周期数,测量模拟器使用的数据缓存的替换策略和写策略。
实验目的
-
加强对 Cache 的理解,让机器的 Cache 不再 “透明”。
-
利用 Cache、局部性原理和课上所学的知识优化程序,加深对课程内容的理解。
说明
本实验分为模拟器版和真机版两种,请同学们根据自己课堂的要求,阅读对应版本的文档完成实验。
推荐实验环境
- Linux 系统或者虚拟机
- C/C++ 编程环境
对于模拟器版本的实验,还需要已经完成实现的 Tomasulo 模拟器
最后更新:
2025年3月11日
作者: