【GPT-4】MESI协议总结

MESI 协议是一种用于管理多处理器系统中的缓存一致性的协议。MESI 是 Modified、Exclusive、Shared 和 Invalid 四个状态的首字母缩写。每个缓存行可以处于这四个状态之一,每个状态都对应着该缓存行在各个处理器的缓存中的分布情况。以下是这四个状态的含义:

MESI(4个状态)

  1. Modified(修改):当前的缓存行已被修改,并且这个处理器拥有该缓存行的唯一一份有效副本。如果其他处理器需要访问这个缓存行,所有权必须转移给请求的处理器。
  2. Exclusive(独占):当前的缓存行在这个处理器中有效,并且在其他所有处理器中都无效。但是,当前的缓存行尚未被修改。如果这个处理器写入该缓存行,它将转变为 Modified 状态。
  3. Shared(共享):这个缓存行可能在多个处理器的缓存中都有效,但都没有被修改。如果一个处理器想要写入这个缓存行,它必须首先将这个缓存行从所有其他的处理器中置为 Invalid 状态。
  4. Invalid(无效):这个缓存行在当前的处理器中无效。如果处理器想要读取或写入这个缓存行,它必须首先获取所有权。

读取+写入(8种情况)

在MESI协议中,读取和写入的操作会影响缓存行的状态,以下是具体的情况:

读取(Read):

  • M(Modified):如果缓存行已在M状态,那么处理器可以直接读取,无需向其他处理器发送信号。
  • E(Exclusive):如果缓存行在E状态,处理器也可以直接读取,无需向其他处理器发送信号。
  • S(Shared):在S状态下,处理器可以直接读取,无需向其他处理器发送信号。
  • I(Invalid):如果缓存行在I状态,处理器不能直接读取,必须先从其他处理器或主存中获取数据。这会触发一个读取失效(Read Miss)操作,处理器需要向其他处理器发出读取请求。如果其他缓存中有共享的数据,那么数据会被发送给请求的处理器并将该缓存行状态改为S,否则从主存中获取数据并将状态改为E。

写入(Write):

  • M(Modified):在M状态下,处理器可以直接写入,无需向其他处理器发送信号。
  • E(Exclusive):在E状态下,处理器可以直接写入,但是需要将状态改为M,无需向其他处理器发送信号。
  • S(Shared):在S状态下,处理器不能直接写入,必须先将其他处理器中的该缓存行置为无效。这会触发一个写入失效(Write Miss)操作,处理器需要向其他处理器发出失效(Invalidate)请求,并将自己的缓存行状态改为M。
  • I(Invalid):在I状态下,处理器不能直接写入,必须先从其他处理器或主存中获取数据。这同样会触发一个写入失效操作,处理器需要向其他处理器发出读取请求。如果其他缓存中有共享的数据,那么数据会被发送给请求的处理器并将该缓存行状态改为M,并向其他处理器发出失效请求,否则从主存中获取数据并将状态改为M。

一个例子

让我们通过一个例子来看看这些状态是如何变化的。在这里,我们将使用 'M' 来表示 Modified 状态,'E' 表示 Exclusive 状态,'S' 表示 Shared 状态,而 'I' 表示 Invalid 状态。

  1. 初始状态:所有处理器的缓存行都处于 Invalid 状态。
  2. 处理器 A 读取操作:A 读取这个缓存行,状态变为 Exclusive。
  3. 处理器 B 读取操作:B 也读取这个缓存行,A 和 B 的状态都变为 Shared。
  4. 处理器 A 写入操作:A 写入这个缓存行,将自己的状态变为 Modified,其他所有处理器的状态变为 Invalid。
  5. 处理器 C 写入操作:C 写入这个缓存行,将自己的状态变为 Modified,其他所有处理器的状态变为 Invalid。
  6. 处理器 D 读取操作:D 读取这个缓存行,C 和 D 的状态都变为 Shared。
  7. 处理器 D 写入操作:D 写入这个缓存行,将自己的状态变为 Modified,其他所有处理器的状态变为 Invalid。
  8. 处理器 D 置换操作:D 的这个缓存行被置换出去,写回内存,D 的状态变为 Invalid。

这就是处理器 A、B、C 和 D 在执行读取和写入操作时,这个缓存行在各个处理器中的状态如何变化的。

#我的实习求职记录#
全部评论
点赞
送花
回复
分享
发布于 2023-08-31 16:20 广东
m
点赞
送花
回复
分享
发布于 2023-08-31 16:20 陕西
滴滴
校招火热招聘中
官网直投

相关推荐

2 1 评论
分享
牛客网
牛客企业服务