什么是MESI协议?
MESI协议也叫做缓存一致性协议,主要是用来进行协调多核CPU的高级缓存的数据一致的。
MESI协议的四种状态?
MESI一致性协议定义了高速缓存中数据的4中状态,分别是:
M(Modified): 该缓存行有效, 数据被修改了,但未同步回内存。即数据只存在于本缓存行中,和内存中的数据不一样。
E(Exclusive): 该缓存行有效,数据未被修改,和内存中的数据一致,并且数据只存在本缓存行中。
S(Share):该缓存行有效,数据未被修改,和内存中的数据一致,并且数据同时存在于其他缓存中。
I(Invalid):该缓存行数据无效,数据已过时。
MESI如何解决多核CPU高速缓存数据一致?
JAVA内存模型底层其实也还是通过MESI一致性来使得一个线程修改了数据,把别的线程的工作内存副本数据弄失效的。