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;}

现在确实安全了。完美无暇!