我现在正在学习缓存一致性,但是我不太明白MESI协议(protocol)中Exclusive状态的作用是什么,因为我认为MSI也很好用。
最佳答案
MSI 协议(protocol)的问题是,默认情况下所有数据都会以共享状态加载,即使它不是共享的。当我们将缓存 block X 从共享状态移动到修改状态时,我们必须向其他缓存发送信号,以使它们的 block X 副本无效;如果他们没有 block X 的副本,那么我们就不必要地浪费总线带宽/周期。
程序的常见情况是读取并可能修改不与其他线程共享的数据。通过引入独占状态,我们有一种方法来区分这种非共享(独占)数据。当我们修改大部分数据时,我们不必发出多余的无效信号。 MESI 在功能上与 MSI 相同,但针对常见情况进行了更优化。
关于caching - 为什么MESI协议(protocol)需要Exclusive状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32829987/