多核处理器的MESI协议的细节

时间:2011-10-10 21:26:53

标签: caching memory-management multicore shared-memory cache-control

多核处理器的MESI协议的细节对我来说非常重要,但我无法在任何地方找到它们。即使http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf也没有包含足够的细节。例如:假设私有L1和共享L2缓存。如果一行的状态在L1中是独占的,那么它在L2中也是独占的(或者是无效的,因为只有一个缓存可能是一行独占的状态)?显然,如果另一个核心写入此行,则L1中先前独占行的状态变为无效,但如何更改L2缓存行的状态?如果L1中的修改后的行被另一个内核读取,那么该行的新状态是否共享,是否通过L2缓存写回主内存,或者在L2中保持修改?等

2 个答案:

答案 0 :(得分:1)

您无法找到这些答案的原因是因为没有为分层缓存架构定义传统协议,因此MESI协议本身并未定义具有L1和L2缓存时会发生什么。它取决于其他三个系统属性。

如果L2被设计为不包括L1(即,保证L2和L1永远不会有公共缓存行),那么L1中的任何行都将是L2中的无效状态(基本上不存在) 。

如果L2包含L1,即L1中的每一行也必须在L2中有一个条目,则L2中的条目将包含一个描述符,说明哪个L1高速缓存具有E状态的行。

在从E或W阶段读取时,是否将值写入L2或内存取决于您的系统是否支持缓存到缓存传输。在旧时代,当每个芯片都是单核心,并且核心到核心的通信与读取/写入内存一样昂贵时,系统会将数据写入内存并使另一个处理器读取它(这使得它们不支持缓存到缓存传输)。在多核中,与通过内存与其他内核通信相比,通过内存进行通话非常昂贵,因此现在几乎所有的多核芯片都支持缓存到缓存的传输。因此,通过写入存储器不能从E或W级读取服务。

我希望这会有所帮助。

答案 1 :(得分:0)

我找到了this。这可能会有所帮助 第三条评论here也可能有用。