Please enable JavaScript.
Coggle requires JavaScript to display documents.
volatile (缓存一致性协议 (Bus Locking (一个CPU操作缓存数据时,向总线发送Lock信号,所有其他CPU收到该Lock信号后…
volatile
缓存一致性协议
Bus Locking
一个CPU操作缓存数据时,向总线发送Lock信号,所有其他CPU收到该Lock信号后不能操作各自缓存中相应的数据,直到锁释放
会造成性能损失,因为所有CPU不得不等待锁信号解除
MESI
在CPU缓存中保存一个标记位
标记位状态
Modify
当前CPU缓存已经被修改,数据不一致
该CPU为M或E状态且其他CPU有读操作,把自己的缓存数据写回主存,并改状态为Share
Exclusive
只有当前CPU缓存有该数据且和主存中的数据一致,其他CPU没有该数据的缓存
该CPU为M或E状态且其他CPU有读操作,把自己的缓存数据写回主存,并改状态为Share
Share
缓存数据和主存一致,且多个CPU缓存可以共享该缓存数据段
Invalid
缓存已经失效,不可使用
此时CPU直接从主存读取数据
可见性
volatile修饰的变量在读时必须从main memory读取,
写时必须立即写入main memory并且通知其他CPU该变量的缓存已经失效
低层实现原理