我正在尝试理解CPU的L1缓存机制。
我们假设CPU有4个核心, L1缓存行大小 64字节,每个核心使用 MESI协议
因此,内存引用与高速缓存行大小对齐加载(引用是某种精确保存64个字节的数据结构)。
然后, Core-1 引用相同的内存位置。因此,高速缓存一致性协议识别此操作并将Core-0中的高速缓存行复制到Core-1(避免从主存储器读取)。
Core-1 因此修改此缓存行中的4个字节(偏移15 )。
我的问题是:缓存一致性协议会使Core-0中的缓存行无效吗?虽然修改有不同的偏移量。
此外,此时,有人可以告诉此缓存行参考的缓存一致性协议(MESI)状态是什么?
答案 0 :(得分:1)
MESI协议在高速缓存行上运行,因此单个高速缓存行中的偏移无关紧要。
当core-1最初从core-0请求缓存行时,它将被复制并且两个核心的状态都设置为 S (共享)。当core-1修改缓存行时,core-1中的缓存行设置为 M (已修改),而对于core-0,缓存行设置为 I (无效)