我觉得应该从失效化队列和写缓存器角度考虑吧。 “有一个cpu(假设是cpu1)把a修改为M状态,另一个会变为I(失效状态)”:cpu1修改了a的值之后,会给总线中发送消息,要求其他CPU把他们高速缓存中a的状态置为I。但是其他CPU收到消息后,为了提高响应效率,是把这个a放入失效化队列,然后就立刻给出回复,表示自己已经把a置成I了,其实缓存条目的修改是要滞后的。 写缓存器也是一样的,对于CPU1来说,要修改a的值,不是马上在高速缓存修改,而是把a的新值写入写缓存器, 从写缓存器同步到高速缓存还需要一点时间。 因为写缓存器和失效化队列是每个内核独有的,不能互相访问,所以会出现在CPU1已经修改了a的值的情况下,CPU2依然读到了旧的a的值。
点赞 3

相关推荐

不愿透露姓名的神秘牛友
07-09 12:23
转人工😡
门口唉提是地铁杀:五次握手了
点赞 评论 收藏
分享
06-15 20:57
已编辑
门头沟学院 Java
CARLJOSEPH...:年轻人有傲气很正常,但是建议工作前洗净傲气。 说实在的,什么奖学金什么奖项的都很一般。尊重你的老师,在有时间的时候去上课,真遇到走不开的事,请态度端正地向你的老师说明情况,请求请假。我相信任何一个有师德的老师都会允许的(我的老师就是这样)。
点赞 评论 收藏
分享
07-14 12:22
门头沟学院 Java
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务