1. 缓存一致性协议的由来:
计算机的存储设备速度与cpu的运算速度之间是数量级的差距,现代计算机不得不加入一层读写速度尽可能接近cpu运算速度的高速缓存来作为内存和cpu之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样cpu就无须等待缓慢的内存读写了。
基于高速缓存的存储交互很好地解决了cpu与内存的速度矛盾,但是也引入了新的问题:缓存一致性。在多cpu系统中,每个cpu都有自己的高速缓存,而它们又共享同一主内存,当多个cpu的运算任务都涉及同一块主内存区域时,将可能导致各自的缓存数据不一致的情况,如果真的发生这种情况,那同步回主内存时以谁的缓存数据为准呢?为了解决一致性的问题,需要各个cpu访问缓存时都遵循一些协议,在读写时根据协议来进行操作,这类协议有MSI、MESI、MOSI、Synapse、Firefly及Dragon Protocol等等。jvm内存模型中定义的内存访问操作与硬件的缓存访问操作具有可比性。
2. MESI协议:
来源:https://www.cnblogs.com/i-hard-working/p/12105304.html