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修饰变量读/写操作前加入内存屏障防止重排序









网友评论