CPU缓存一致性协议
(资料图)
关注+星标公众号,不错过精彩内容
作者 | strongerHuang
CPU高速缓存(Cache Memory)
CPU为何要有高速缓存
带有高速缓存的CPU执行计算的流程
目前流行的多级缓存结构
多核CPU多级缓存一致性协议MESI
MESI协议缓存状态
MESI状态转换
多核缓存协同操作
单核读取
双核读取
修改数据
同步数据
MESI优化和他们引入的问题
CPU切换状态阻塞解决-存储缓存(Store Bufferes)
Store Bufferes
Store Bufferes的风险
硬件内存模型
void executedOnCpu0() { value = 10; //在更新数据之前必须将所有存储缓存(store buffer)中的指令执行完毕。 storeMemoryBarrier(); finished = true;}void executedOnCpu1() { while(!finished); //在读取之前将所有失效队列中关于该数据的指令执行完毕。 loadMemoryBarrier(); assert value == 10;}
现在确实安全了。完美无暇!