Java内存模型JMM:《Java多线程面试题精粹及答案解析》
发布时间
阅读量:
阅读量
以下将简要介绍缓存一致性协议 MESI 的基本原理。当多个 CPU 核心同时缓存了某个共享变量时,若其中某一核心对该变量进行了修改操作,那么其余核心中对应的缓存单元将失效(此处失效的范围是整个 CacheLine,而不仅仅局限于该变量所占用的存储区域),同时修改后的数据会被同步至主内存中。若其他核心在后续需要访问该变量时,必须从主内存重新读取数据,以此确保各缓存内容的一致性。
然而,引入缓存一致性协议会导致较大的性能开销。为缓解这一问题,相关技术进行了多方面的优化措施。其中一种典型的优化方式是在计算单元与一级缓存之间增设 StoreBuffer 和 LoadBuffer,具体结构如图所示:

引入多种Buffer的CPU架构图组
StoreBuffer与LoadBuffer的加入显著增强了计算机系统的运行效率,但同时也引发了一些新的挑战:在不同层级的缓存之间,数据保持同步,然而StoreBuffer与LoadBuffer这两个一级缓存之间的数据传输却存在异步性,这便导致了数据一致性问题的发生。
当某一缓存中的数据被修改后,该数据会被暂存至StoreBuffer中。而StoreBuffe
全部评论 (0)
还没有任何评论哟~
