前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试完才知道MESI缓存一致性协议竟然和 volatile 没有半毛关系!

面试完才知道MESI缓存一致性协议竟然和 volatile 没有半毛关系!

作者头像
JavaEdge
发布2020-05-27 11:40:44
1.7K0
发布2020-05-27 11:40:44
举报
文章被收录于专栏:JavaEdgeJavaEdge

学习了下马士兵老师的公开课,特此做下笔记,以供交流学习。

缓存一致性协议和 java 的 volatile 实现无任何关系

MESI 只是 CPU 层级的保证一致性的一种方式,最简单粗暴保证 CPU 一致性的其实就是直接锁总线,因为总线只有一条! 而 JVM 的 hotspot 就是直接锁总线,确保了 volatile 作用. 所以二者毫无关系!!!

因为因特尔的用的比较多,所以网上文章写的都是

1 英特尔的 MESI 协议

保证 cpu 间数据一致性。

cache line的概念 缓存行对齐 伪共享

a. cache是以cache line为单位与内存映射的,cache只要命中了就是命中64字节,对应内存中连续的64个地址,这64个地址刚好对应了地址的低6位。所以这6位被划为一个段。 b. cache分为了64组,要有hash方式确定内存中的地址在哪个cache组,可以用36位地址中的高30位模64得到组索引,模64和和取高30位中的低6位得到的结果是相同的。所以这6位就是另一个段。 c. 因为内存大小远远大于cache,内存和cache的映射必然是多对一(即多个内存映射到一块cache),这样必然会产生冲突,36位地址的高24位就是用来解决冲突问题的,所以这24位就是一个段

2 CPU 的乱序执行

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 英特尔的 MESI 协议
  • 2 CPU 的乱序执行
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档