a282700554 2020-08-31 17:02 采纳率: 0%
浏览 246

CPU缓存锁与缓存一致性协议是什么关系,失效缓存在写操作时又是如何处理的?

最近看资料学习时遇到几个不太懂的问题,来请教大家一下。

1. cpu缓存锁与缓存一致性协议(或者说它的具体实现MESI)是什么关系,我有发现另一篇文章说,缓存锁是基于缓存一致性协议实现的。 那它们两个之间关系是什么,看到很多文章里面说为了解决缓存不一致问题,有几种方案:有说总线锁加缓存锁,有的说总线锁加缓存一致性协议;有点晕。
2. volatile无法保证原子性这一点上,还不是很理解。借如,现在有两个线程a、b。程序要执行的操作是i++。现在a、b线程同时操作,将i的值都读到了a、b线程各自的缓存行中了。然后开始计算,a线程、b线程开始计算,计算完后数据回写到各自线程Store Bufferes中,通过缓存一致性发送Invalidate消息给其它处理器,等待回执并改变各自缓存的状态为Exclusive,然后将数据从Store Bufferes回写到缓存中。那问题来了:
    a.这里面a,b两个线程咋处理? 都收到了Invalidate消息来失效自己的缓存,要独占。
    b.假如这里面只有一个线程成功独占缓存(线程a成功),这个时候线程a i++操作成功执行,并完成操作回写到主内存。那线程b会怎么样,计算后的数据在Store Bufferes中,回写发现缓存失效了Invalid,无法回写,这个时候,线程b会怎么样?是重新读取一次i的数据,然后再计算,还是直接把计算后的数据丢失了?
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-08-31 17:17
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。