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