【问题标题】:Inclusive or exclusive ? L1, L2 cache in Intel Core IvyBridge processor包容还是排他? Intel Core IvyBridge 处理器中的 L1、L2 缓存
【发布时间】:2013-11-15 12:16:30
【问题描述】:

我有 Intel Core IvyBridge 处理器、Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz(L1-32KB、L2-256KB、L3-8MB)。我知道 L3 是包容性的,并且在多个核心之间共享。我想知道关于我的系统的以下内容

第 1 部分:

  1. L1 是包含还是排除?
  2. L2 是包含还是排除?

第 2 部分:

如果 L1 和 L2 都包含,那么要找到 L2 的访问时间,我们首先声明一个大小大于 L2 缓存(256KB)的数组(1MB),然后开始访问整个数组以加载到 L2 缓存中。之后,我们以 64B 的步长访问数组元素从开始索引到结束索引,因为缓存行大小为 64B。为了获得更准确的结果,我们重复此过程(访问索引处的数组元素,开始-结束)多次,例如 100 万次并取平均值。

我的理解为什么这种方法会给出正确的结果如下 - 当我们访问大小超过 L2 缓存大小的数组时,整个数组从主存加载到 L3,然后从 L3 加载到 L2,然后从 L2 加载到 L1。整个数组的最后 32KB 在 L1 中,因为它最近被访问过。由于包容性和缓存一致性,整个阵列也存在于 L2 和 L3 缓存中。现在,当我再次从起始索引开始访问数组时,不是在 L1 缓存中,而是在 L2 缓存中,所以会有缓存未命中,它将从 L2 缓存中加载。这样,整个数组的所有元素都需要更长的访问时间,总的来说,我将获得整个数组的总访问时间。为了获得单一访问权限,我将取总无访问权限的平均值。

我的问题是 - 我说的对吗?

提前致谢。

【问题讨论】:

    标签: c cpu-architecture processor cpu-cache


    【解决方案1】:

    请参阅英特尔优化指南中的第 2.2.5 节 -
    http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf

    (请注意,这适用于 Sandy-Bridge,但对于 Ivy-Bridge 来说似乎没有变化,它与上一代相比只有很小的微架构变化)。

    所以关于你的问题:

    1. 对于 L1,没有包容性问题,因为它没有要包容的上层缓存
    2. L2 缓存包含在内,这意味着无法保证位于 L1 中的行也必须位于 L2 中。然而,在大多数情况下,它可能在那里,因为它可能在最初由核心请求时被填充到 L2 中,并且由于它更大(因此驱逐更好地分布在更多集合上),并由 L1 过滤(通常意味着更少的驱逐)

    另请注意,如果您的基准测试正在访问大于 L2 的数据集,则它可能无法位于 L2 中(尤其是如果您连续访问它并且超过 L2 的大小超过单路的大小) ,而您必须从 L3 中获取它。

    【讨论】:

    • 谢谢李奥。您能告诉我如何处理 L1 中的未命中吗?它会检查 L2 中的数据,然后是 L3 或 L3 中的数据,以防 L1 中发生未命中?另外,还有一个疑问,当L1中发生未命中并且新行来自更高缓存时,当L1中的缓存行被替换时,L2或L3中是否会有替换。
    • 未命中将查找下一个缓存级别,L1->L2->L3。获取 Line 时,它​​应该在途中填充所有缓存级别 - 填充 L3 是强制性的,因为它是包容性的,L2 不是我们所说的包容性,但填充它仍然是一个好主意,因为该行可能会默默地从 L1 下降,因此您希望它在其他级别上复制。
    • @leeor 总是认为由于 VM 分页,进程 mem > L2,页面对齐分配会很有用(并通过在同一页面中打包相关元素来利用局部性)。有人告诉我,仅字对齐就足够了,页面对齐不会提供任何进一步的好处。你的想法?
    • @alphazero,说存储无关紧要,因为缓存以行粒度工作(因此您只会在行内未使用的块上丢失空间)。但是,即使在页面粒度上,数据碎片也绝对是一个坏主意——您需要更多的 TLB 条目(并且有更高的机会被页面遍历序列化),硬件预取在物理页面边界上无效,并且您可能会增加可能对内存单元产生负面影响的较低地址位的冲突率。我不认为 L2 在这里有什么特殊作用,这适用于整个系统。
    • @leeor 谢谢。 p.s.如果你有一个博客,你应该把它放在你的个人资料中。 :)
    猜你喜欢
    • 2010-10-17
    • 2020-05-19
    • 2015-06-29
    • 2017-08-21
    • 2016-07-15
    • 2017-09-24
    • 2010-11-09
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多