cpu高速缓存的由来
高速缓存概述
高速缓存和内存
高速缓存分为L1-L3 Cache
CPU系统架构
单CPU缓存的读与写操作
缓存的一致性协议
缓存一致性约定
如何解决上述的问题,出现缓存数据不一致的原因如下:
缓存的MESI协议
缓存的一致性协议有很多种,比较典型的就是MESI协议,关于MESI协议简述如下:
cpu数据读写流程
CPU优化手段:运行时指令重排序
当CPU写缓存时发现区块正被其他CPU占用,为了提高CPU处理性能,可能将后面的读缓存命令优先执行
重排需要遵循as-if-serial语义规则,即不管怎么进行重排序(编译器和处理器为了提高并行度),(单线程)程序的执行结果不能被改变.编译器/runtime/处理器都必须遵循as-if-serial语义,也就是说编译器和处理器不会对存在数据依赖关系的操作做重排序
CPU高速缓存存在的问题
内存屏障
是一类同步屏障指令,它使得CPU或编译器在对内存进行操作的时候,严格按照一定的顺序来执行, 也就是说在memory barrier之前的指令和memory barrier之后的指令不会由于系统优化等原因而导致乱序
最后,关于写作内存相关的原因是为了更好地理解同步关键字synchronized的内存语义(下一篇哈)