缓存对齐的数据结构如何在 L1 缓存行中失效
How data structures cache aligned are invalidated in L1 cache line
我正在尝试了解 CPUs 的一级缓存机制。
假设 CPU 有 4 个内核,L1 缓存行大小 是 64 字节使用 MESI 协议.
每个核心有 N 个条目
因此加载内存引用与缓存行大小对齐(引用是某种数据结构,恰好包含 64 个字节)。
- 此时,Core-0修改了这个缓存行中的4个字节(在offset 0)。
然后,Core-1引用相同的内存位置。因此,缓存一致性协议识别此操作并将 Core-0 中的缓存行复制到 Core-1(避免从主内存读取)。
Core-1 从而修改此缓存行中的 4 个字节(在 偏移量 15)。
我的问题是:缓存一致性协议是否会使 Core-0 中的缓存行无效?虽然修改在不同的偏移量。
另外,此时,有人可以告诉我们这个缓存行引用的缓存一致性协议 (MESI) 状态是什么吗?
MESI 协议在缓存行上运行,因此单个缓存行内的偏移量无关紧要。
当 core-1 最初从 core-0 请求缓存行时,它被复制过来并且两个核心的状态都设置为 S(共享)。当 core-1 修改缓存行时,core-1 中的缓存行设置为 M(已修改),而对于 core-0 则设置为 I(无效)。
我正在尝试了解 CPUs 的一级缓存机制。
假设 CPU 有 4 个内核,L1 缓存行大小 是 64 字节使用 MESI 协议.
每个核心有 N 个条目
因此加载内存引用与缓存行大小对齐(引用是某种数据结构,恰好包含 64 个字节)。
- 此时,Core-0修改了这个缓存行中的4个字节(在offset 0)。
然后,Core-1引用相同的内存位置。因此,缓存一致性协议识别此操作并将 Core-0 中的缓存行复制到 Core-1(避免从主内存读取)。
Core-1 从而修改此缓存行中的 4 个字节(在 偏移量 15)。
我的问题是:缓存一致性协议是否会使 Core-0 中的缓存行无效?虽然修改在不同的偏移量。
另外,此时,有人可以告诉我们这个缓存行引用的缓存一致性协议 (MESI) 状态是什么吗?
MESI 协议在缓存行上运行,因此单个缓存行内的偏移量无关紧要。
当 core-1 最初从 core-0 请求缓存行时,它被复制过来并且两个核心的状态都设置为 S(共享)。当 core-1 修改缓存行时,core-1 中的缓存行设置为 M(已修改),而对于 core-0 则设置为 I(无效)。