如果索引位相同但标签不同,MESI 协议状态转换

问题描述 投票:0回答:1

我正在尝试解决 MESI 缓存问题。我有四个处理器(P0、P1、P2、P3),每个处理器都有 4 个状态设置为“无效”。偏移位将被忽略。如果我用两个索引位和 3 个标记位读取地址 11010 上的 P0,我会得到 P0 的 IIIEI。现在我在地址 01010 上对 P2 进行了另一个读取。现在一般来说,我会说 P0 应该转向 IISI,P2 也应该转向 IISI,因为它是相同的索引,但我不确定标签位在这里有什么区别。下一个动作来自 P1,它再次读取地址 11010,这现在肯定会使其成为 P1 和 P2 的 IISI,但不确定是否也适用于 P0。提前感谢您的帮助!

caching computer-science mesi
1个回答
0
投票

我认为你应该首先尝试理解标签索引偏移概念。

[11010|offset] 和 [01010|offset] 寻址的缓存行完全不同。它们指向内存上不同的缓存行。索引只是帮助将数据放置在缓存中。 2 个具有相同索引的地址,意味着您应该将这些数据放置到缓存中的同一行。如果标签不同并且您使用的是组关联/全关联缓存,您可以将 2 个数据放置在同一索引行但不同的方式(列)中,但它们指向不同的数据。

你的答案隐藏在你的问题中。您不确定标签位有何不同。要了解缓存一致性,首先您应该完全了解缓存的基础知识。

其他一些建议,对于独占状态,您应该确保在这样做之前可以声明缓存行是独占的。您可以通过两种不同的方式来确定,您可以发送无效消息,或者从总线获得独家响应。这因您用于缓存一致性的总线协议而异。

概念并不简单,需要研究一个小时才能完全理解。

© www.soinside.com 2019 - 2024. All rights reserved.