测量 Cache Line Size 的大小
实验思路
使用不同步长,对大于 L1 DCache Size 的某个数组做相同次数的访问
- 只有当数组大小 大于 L1 DCache Size 时,L1 DCache 才会发生替换
- 当命中时,访问速度会快
- 当 Cache Line 的第一个字节缺失时,会访问更高层的 Cache 以及内存,将整个 Cache Line 移入 L1 DCache,导致运行时间增加
- 当测试步长大于 L1 DCache Line Size 的时候,可以近似认为每次访问都 miss。
- 使用数组循环访问模式即可
注意:
- 保证访问次数相同
- 保证数组大小超过 L1 DCache Size 但不超过 L2 Cache Size
实验步骤
参考上一节的步骤,编写负载,并在 cache-exp/block_size.cpp
编写 unsigned MeasureCacheBlockSize(ProcessorAbstract *p)
函数,完成模拟器缓存行大小的测量。
实验提示
测量 cache line size 时有可能会受到模拟器中内存的机制影响。
在 Tomasulo 模拟器的内存当中,对于连续访存,Memory 会立即返回结果。当测试 step 与 cache line size 相同时,可能会有意外的情况发生。
实验时需要考虑到该内存机制的影响。
最后更新:
2025年3月11日
作者: