缓存对齐的数据结构如何在L1缓存行中失效

问题描述 投票:0回答:1

我正在尝试了解CPU的L1缓存机制。

  1. 假设 CPU 有 4 个核心,L1 缓存行大小64 字节,每个核心有 N 个条目,使用 MESI 协议

  2. 因此,内存引用会与缓存行大小对齐加载(该引用是某种精确保存 64 字节的数据结构)。

  3. 此时,Core-0修改了该缓存行中的4个字节(在偏移0处)。
  4. 然后,Core-1引用相同的内存位置。因此,缓存一致性协议识别此操作并将 Core-0 中的缓存行复制到 Core-1(避免从主内存读取)。

  5. Core-1因此修改此缓存行中的 4 个字节(位于 偏移 15)。

我的问题是这样的:缓存一致性协议是否会使Core-0中的缓存线无效?虽然修改的偏移量不同。

此外,此时,有人可以告诉这个缓存行引用的缓存一致性协议(MESI)状态是什么吗?

c performance caching cpu-cache
1个回答
1
投票

MESI 协议在缓存行上运行,因此单个缓存行内的偏移量并不重要。

当 core-1 最初从 core-0 请求缓存行时,它会被复制,并且两个内核的状态都设置为 S(共享)。当 core-1 修改缓存行时,core-1 中的缓存行设置为 M(已修改),而 core-0 中的缓存行设置为 I(无效)。

© www.soinside.com 2019 - 2024. All rights reserved.