跳转至

测量 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 相同时,可能会有意外的情况发生。

实验时需要考虑到该内存机制的影响。


最后更新: 2024年5月23日
作者:cuibst