首页 > 解决方案 > 在“延迟值表”中:每一级缓存的延迟值是否包括上一级缓存的访问?

问题描述

对于这个问题,我将以这张表为例:

在此处输入图像描述

但是这个处理器的内存层次与这个问题无关!

我的问题是每个级别缓存的延迟值是否包括上一级缓存访问。我的意思是,如果我们假设我们只在 L1 未命中后访问 L2(并且仅在 L2 未命中后访问 L3),那么在我的示例中(对于 L1 未命中、L2 未命中和 L3 命中),所花费的 cicle 数将为〜21个周期还是〜(4 + 12 + 21)个周期?

而且,如果答案是延迟值包括上一级缓存访问,那么 RAM 访问延迟值是否也包含在内?

正如我所说,请忽略处理器的确切数字,请以一般方式回答这个问题。

我看过很多“延迟值表”,但由于这个疑问,我从来不知道如何正确解释它们。

标签: cachingmemoryx86processorcpu-cache

解决方案


通常(包括这种情况)延迟被给出为在存储器层次结构的该级别停止的访问的延迟(在内部级别丢失之后)。

这就是您可以实际测量的内容(例如,使用不适合 L1d、不适合 L2 或其他任何内容的链表),以及最容易考虑的内容。


请注意,L3 和内存延迟取决于来自其他内核的争用,以及请求必须遍历多大的环形总线或网格才能从该内核到达 L3 的切片。 为什么 Skylake 在单线程内存吞吐量方面比 Broadwell-E 好这么多?. 例如对于英特尔,四核“客户端”芯片比具有相同内核的大 Xeon 具有更好的 L3 和内存延迟(以及单核带宽)。

OTOH 为 L1d 和 L2 缓存提供相当硬的数字是有点合理的,因为它们是每个核心私有的。请注意,L1d 负载使用延迟并不总是 4 个周期;仅当您正在跟踪指针(取消引用您刚刚加载的指针)并且您使用的是简单的寻址模式时。 当 base+offset 位于与 base 不同的页面时,是否会受到惩罚?


推荐阅读