java并发2——CPU多级缓存——缓存一致性(MESI)

用于保证多个CPU cache之间缓存共享数据的一致。如下图所示(M表示被修改,E是独享状态,S表示共享状态,I表示无效状态):

 

java并发2——CPU多级缓存——缓存一致性(MESI)_第1张图片

四种状态说明:M表示被该缓存行只被缓存在改CPU的缓存中并且是被修改过的,因此它与主存间的数据是不一致的,该缓存行的内存未来是要被写回主存的;E是独享状态,它的缓存行只被共享在该CPU中,它的状态是和主存中的一致的,当有其他CPU读取该CPU时,变成共享状态;S表示共享状态,这个状态意味着该缓存行可能被多个CPU缓存,并且各个缓存中的数据与存储数据是一致的;I表示无效状态 ,就是表示该缓存行是无效的,可能是由于其他CPU修改了该缓存行。

 

四种操作说明:

local read:表示读本地缓存中的数据;

local write:表示将数据写到本地中的缓存;

remote read:表示将内存中的数据读取过来;

remote write:表示写会到主存中去。

 

可以用下图来理解:

java并发2——CPU多级缓存——缓存一致性(MESI)_第2张图片

 

 

 

你可能感兴趣的:(java,并发,java,并发)