【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 陕西

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
2 1 评论
分享
牛客网
牛客企业服务