数据结构缓存对齐的方式在L1缓存行

时间:2017-10-08 16:58:51

标签: c performance caching cpu-cache

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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