美文网首页
JMM & 并发三大特性--原子性,有序性

JMM & 并发三大特性--原子性,有序性

作者: 蓝调_4f2b | 来源:发表于2023-02-10 16:06 被阅读0次

1. CPU高速缓存模型

CPU高速缓存模型.png

CPU缓存位于CPU与主内存之间,由于CPU运行速度远高于主内存,CPU直接从内存中存取数据需要等待一段时间,缓存中保存一定常用数据可减少CPU存取内存次数,提高效率
注:

  • 时间局部性:当一个信息正在被访问时,近期它很可能再次被访问
  • 空间局部性:当一个存储器位置被引用,则将来它附近位置也大概率被引用

2. 多线程CPU缓存工作原理

多线程并发CPU缓存工作原理.png

2.1 一致性机制

(1)窥探机制
总先窥探机制:当特定数据被多个缓存共享时,处理器修改了共享数据的值,更改必须传播到所有其他具有该数据副本的缓存中,这种方式可以防止系统违反缓存一致性
(2)窥探协议
write_invalidate(其他缓存共享副本写入失效)
write_update(其他缓存共享副本更新值)
(3)缓存锁定
M:修改
E:独占
S:共享
I:无效
(4)注:num++非原子性操作,其包含了读取,加和,回写三个步骤

2.2 内存屏障原理及类型

(1)作用:禁止代码重排序;保证多线程的可见性
(2)内存屏障类型
Loadload屏障,Loadstore屏障,Storestore屏障,Storeload屏障
(3)对应硬件的内存屏障
ifence,一种Load Barrier读屏障
sfence,一种store Barrier写屏障
mfence, 具有ifence, sfence混合能力
Lock前缀,有类似内存屏障能力

2.3 补充 volatile

(1)可见性:对一个volatile修饰的变量读取,总能看到对该volatile最后的写入值
(2)原子性:对任意单个volatile变量的读/写操作具有原子性
(3)有序性:对volatile修饰变量读/写操作前加入内存屏障防止重排序

相关文章

网友评论

      本文标题:JMM & 并发三大特性--原子性,有序性

      本文链接:https://www.haomeiwen.com/subject/caskkdtx.html