我正在尝试了解CPU的L1缓存机制。
假设 CPU 有 4 个核心,L1 缓存行大小为 64 字节,每个核心有 N 个条目,使用 MESI 协议。
因此,内存引用会与缓存行大小对齐加载(该引用是某种精确保存 64 字节的数据结构)。
然后,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(无效)。