【发布时间】:2017-10-09 02:59:15
【问题描述】:
那里有几种缓存一致性协议,例如MSI、MESI、MOSI、MOESI等。
假设这种情况:CPU 包含 4 核和 L1 私有缓存(L1 缓存大小在这里无关紧要)。这里的内存地址是说明性的。
Core-0 请求对地址 0x1111 的内存访问,因此该值将从主内存加载到其 L1 缓存行。
Core-1 请求对地址 0x2222 的内存访问,因此该值将从主内存加载到其 L1 缓存行。
Core-2 请求对地址 0x1111 的内存访问(之前由 Core-0 访问)。该引用已经加载到Core-0的缓存行中,因此,缓存一致性协议将复制包含该引用的Core-0的缓存行,并最终将其存储到Core-2的缓存行中。
问题 1:core-2 是否知道内存访问是由 Core-0 的缓存线而不是主内存提供的?或者缓存一致性协议对数据的检索位置是透明的?
问题 2:Core-0 和 Core-2 的缓存行在 Shared 状态后第 3 步。但是,Core-2 是否可以从不同核心的给定内存引用中获取当前状态?在这种情况下,Core-2 是否知道对于此内存引用 0x1111 Core-0 缓存行处于 Shared 状态?
【问题讨论】:
标签: performance memory cpu-cache