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

How data structures cache aligned are invalidated in L1 cache line

我正在尝试了解 CPUs 的一级缓存机制。

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

  2. 每个核心有 N 个条目
  3. 因此加载内存引用与缓存行大小对齐(引用是某种数据结构,恰好包含 64 个字节)。

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

  6. Core-1 从而修改此缓存行中的 4 个字节(在 偏移量 15)。

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

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

MESI 协议在缓存行上运行,因此单个缓存行内的偏移量无关紧要。

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