首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MESI协议监听实现问题

MESI协议监听实现问题
EN

Stack Overflow用户
提问于 2019-02-10 02:44:20
回答 1查看 36关注 0票数 0

我有个MESI协议的问题。假设我有两个核心(核心1和核心2),每个核心都有自己的l2缓存。当两个核心具有相同的数据并且高速缓存线处于状态S时,意味着它们都具有干净且相同的数据。在t=0,核心1写入高速缓存线,核心1将切换到M(修改),核心2最终将处于I(无效)状态。在现实世界中,这个事务需要时间才能完成。假设高速缓存2知道高速缓存1更新了高速缓存线需要5秒。

假设在t=2,内核2写入相同的高速缓存线并切换到M状态。来自核心2的这个写入动作将在t=7 (2+5)被通知给核心1。然后核心2需要在t=5使高速缓存2无效,核心1在t=7使这条线无效,现在这两条线都无效,由核心1和核心2写入的数据丢失。这显然没有遵循协议。我的逻辑出了什么问题,如何防止这种胡言乱语?

EN

回答 1

Stack Overflow用户

发布于 2019-02-15 07:04:09

两个核心必须彼此一致才能更新。您可以通过snoopy或基于目录的协议来完成此操作。因此,在您的示例中,缓存不能更改其状态,而是请求更改。然后,无论谁赢得仲裁,都将更改为modified,而另一个将无效。

These slides似乎总结得很好。您希望以snoopy协议的幻灯片20为例进行查看。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54609505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档