Skip to content

📒 访存优化

基础知识:延迟和带宽

做 System 的同学需要对各类存储器的大小和访问时延有一定的敏感度。复习一下存储器山:

存储器 容量 时钟周期数 时延 备注
寄存器 1KB 1 0.3ns
L1 Cache 32KB 3 1ns
L2 Cache 256KB 14 4ns
L3 Cache 96MB(AMD Zen6) 40 12ns 所有核心共享
DRAM 100 30ns
SSD 1000 300ns

几个要点:

  • CPU 以 CacheLine 为单位进行数据传输。在 x86-64 架构下,CacheLine 大小为 64B。

测量 L1 ~ DRAM 的延迟,可以使用 Pointer Chasing 测试,分析见 Smarter CPU Testing – How to Benchmark Kaby Lake & Haswell Memory Latency | Nexthink。要点如下:

  • 节点间添加 4KB padding,避免相邻节点命中同一个 CacheLine。
  • 节点数为希望测试的块大小/CacheLine 大小。如果节点数比该值小,则该层次 Cache 能够存下所有节点,第一次循环遍历后均命中该层次 Cache。