2

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

+0

我有类似的问题。我似乎无法找到详细信息。 – atoMerz

+0

与可接受的答案可以找到类似的问题[Here](http://stackoverflow.com/a/8006202/403279) –

回答

0

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

1

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

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

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

无论是否值被写到L2或内存上给E或W阶段读取决于你的系统是否支持高速缓存到缓存传输与否。在过去,当每个芯片都是单核时,核心到核心的通信与读写内存一样昂贵,系统会将数据写入内存并使其他处理器读取它(这使得它们不支持缓存到缓存传输)。在多内核中,通过内存进行通话相比与片上其他内核而言是非常昂贵的,因此几乎所有的多核芯片都支持缓存到缓存传输。因此,从E或W阶段的读取不通过写入存储器来提供服务。

我希望这会有所帮助。

相关问题