玩酷网

一篇关于现代计算机的内存带宽性能,以及如何进行粗略的估算的文章www.forre

一篇关于现代计算机的内存带宽性能,以及如何进行粗略的估算的文章

www.forrestthewoods.com/blog/memory-bandwidth-napkin-math

作者编写了一个 C++ 基准测试程序,测试结果:

* 内存带宽上限: 在作者的系统上,顺序访问内存的带宽上限约为 40 GB/s。

* 随机访问内存非常慢: 单线程 int32 随机访问速度仅为 0.46 GB/s,远低于顺序访问的 11.03 GB/s。

* 缓存速度非常快: 特别是使用 SIMD 指令时,在 L1 缓存中的操作速度可以超过 1000 GB/s。

* 多线程可以提高性能: 但在访问内存时,性能会受到内存带宽的限制。

* 缓存大小的影响: 当数据可以完全放入缓存时,性能显著提高。

* 指针追踪性能很差: 速度比直接访问慢 10 到 20 倍。

作者给出了现代桌面 PC 的内存和缓存性能的粗略估算值(2020年的电脑):

* 内存性能:

* 上限:45 GB/s

* 估算值:5 GB/s

* 下限:1 GB/s

* CPU缓存性能 (每个核心):

* 上限 (使用 SIMD):210 GB/s (L1) / 80 GB/s (L2) / 60 GB/s (L3)

* 估算值:25 GB/s (L1) / 15 GB/s (L2) / 9 GB/s (L3)

* 下限:13 GB/s (L1) / 8 GB/s (L2) / 3.5 GB/s (L3)