MOESI 协议:当 Owned 脏且其他处理器读取 Shared 中的行时会发生什么?

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

我一直在思考 MOESI 协议的“拥有”状态。假设存在以下情况:

P0 的 A 线处于 O 状态。 P1 的 A 线处于 S 状态。

  1. P0 写入其本地缓存中的 A 行。
  2. P1 然后读取 A 行进行本地处理。

P1读取的数据现在已经过时了。在 MESI 协议(或 MESIF 协议)中,只要处理器可以写入高速缓存行,就可以保证其他处理器在假设数据正确之前必须侦听该行。但 MOESI 似乎并非如此。

我在这里缺少什么?

cpu-architecture cpu-cache mesi
1个回答
0
投票

https://en.wikipedia.org/wiki/MOESI_protocol -

拥有
该行是系统中的多个副本之一。 此缓存没有权限修改副本 ...

它“拥有”写回脏数据的责任,但它没有独占所有权,因此在发送无效请求并接收确认之前它无法修改它。 (类似于 RFO(读取所有权),但不需要发送数据。)

这就是O态与M或E态不同的原因。

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