CPU结构、高速缓存、总线锁、缓存锁、缓存一致性协议、StoreBuffer、指令重排序、内存屏障

CPU结构 

任务管理器CPU部分右下中会展示高速缓存(L1、L2、L3): 

一级缓存(Level 1 Cache)为一级数据缓存(Data Cache,D-Cache,L1 d-Cache)和一级指令缓存(Instruction Cache,I-Cache,L1 i-Cache)。

L1、L2、L3参考:https://baijiahao.baidu.com/s?id=1598811284058671259&wfr=spider&for=pc

总线锁

总线层面解决数据一致性问题。 

 缓存锁

 解决高速缓存中数据一致性问题(简称:缓存一致性问题)。避免多核CPU的线程中,复制的主内存数据不能及时同步。一个CPU内核的高速缓存中的数据更新,会让其他CPU内存的高速缓存中相同数据的缓存失效。然后此CPU内核的高速缓存中的数据同步到主内存,其他CPU内核的高速缓存中相同数据从主内存重新复制。

缓存一致性协议:

MSI、MESI、MOSI...

MESI四种缓存状态:

Modify 修改、Exclusive 独占、Shared 共享、Invalid 失效。

MESI的一个优化:

每个CPU内核引入了Store Buffers(仅限于x64架构。x86架构是强一致性,无需Store Buffers)。导致了指令重排序:涉及到缓存一致性问题的数据更新指令暂存到StoreBufferes中,其他不涉及缓存一致性问题的指令先执行。涉及到缓存一致性问题的数据更新暂存到StoreBufferes后,使其他内核的高速缓存中相同数据失效,然后StoreBuffers中的数据同步到主内存,其他CPU内核的高速缓存中相同数据从主内存重新复制。

内存屏障

内存屏障分读屏障、写屏障、全屏障。

内存屏障可以防止指令重排序。

参考:

https://www.cnblogs.com/jokerjason/p/9584402.html

https://www.cnblogs.com/jokerjason/p/9584402.html

https://blog.csdn.net/weixin_35227692/article/details/72833209

猜你喜欢

转载自blog.csdn.net/haoranhaoshi/article/details/108553396