【发布时间】:2022-08-14 13:44:48
【问题描述】:
假设一个高速缓存行是 64 字节,
100 纳秒是主内存访问经常引用的数字,这个数字是一次 1 个字节还是一次 64 个字节?
标签: caching cpu-architecture latency cpu-cache
假设一个高速缓存行是 64 字节,
100 纳秒是主内存访问经常引用的数字,这个数字是一次 1 个字节还是一次 64 个字节?
标签: caching cpu-architecture latency cpu-cache
当然,这是针对整个缓存行的。
沿途的总线/数据路径在每个点上至少有 8 字节宽,外部 DDR 总线最窄。 (也可能是多核系统上插槽之间的互连。)
在某些 CPU 上,高速缓存行的“关键字”可能比其余部分早一两个周期到达,在古老的 Pentium-M 上甚至可能是 8 个周期,但在许多最近的 CPU 上,L2 和 L1d 之间的最后一步是完整的 64字节宽。例如,为了充分利用该链接(对于数据流向任一方向),我假设 L2 超级队列等待从 Intel CPU 上的 32 字节环形总线接收完整的高速缓存行。
Skylake 例如有 12 个行填充缓冲区,因此 L1d 缓存可以同时跟踪多达 12 行的缓存未命中,加载+存储。 L2 超级队列的条目比这多一些,因此它可以跟踪由硬件预取创建的一些额外请求。内存级并行性(以及预取)对于缓解高速缓存未命中的高延迟非常重要,尤其是在 L3 中未命中并且必须一直传输到 DRAM 的需求负载。
对于一些实际测量,请参阅https://www.7-cpu.com/cpu/Skylake.html,例如 Skylake-client i7-6700 与双通道 DDR4-2400 CL15。
英特尔“服务器”芯片,大型 Xeon,内存延迟明显更高,足以严重降低单个内核可用的内存(和 L3)带宽,即使其他内核处于空闲状态。Why is Skylake so much better than Broadwell-E for single-threaded memory throughput?
虽然我还没有听说过 Ice Lake-server 或 Sapphire Rapids 是否有很大改善;当他们第一次切换到 Skylake-server 中的网状互连(和非包含 L3)时,情况非常糟糕。
【讨论】: