缓存一致性协议MESI

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

时间: 2024-10-02 10:39:13

缓存一致性协议MESI的相关文章

一篇文章让你明白CPU缓存一致性协议MESI

CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU.这就造成了高性能能的内存和硬盘价格及其昂贵.然而CPU的高度运算需要高速的数据.广州SEO为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题. 在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理. **时间局部性(Tempora

多核程序设计——缓存一致性协议MESI

MESI协议 在MP系统中,每个CPU都有自己独立的cache,缓存之间的一致性很很容易受到破坏的,所以缓存一致性协议就应运而生了.MESI是一种使用非常广泛的缓存一致性协议. MESI存在"modified","exclusive","shared"和"invalid"四种状态,协议可以在一个指定的缓存中应用这四种状态.因此,协议在每一个缓存行中维护一个两位的状态"tag",这个"tag&quo

多线程之缓存一致性协议

前言: CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU.这就造成了高性能能的内存和硬盘价格及其昂贵.然而CPU的高度运算需要 高速的数据.为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题. 首先在电脑中,CPU读取RAM中的数据数据的流程是,通过I/O总线(BUS),将数据从RAM中获取需要操作的数据进CPU需要如下几个步骤 CPU中的三级缓存从RAM中获取该数据. CPU中的二级缓存从三级

多线程之:MESI-CPU缓存一致性协议

MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议,该协议被应用在Intel奔腾系列的CPU中,详见“support the more efficient write-back cache in addition to the write-through cache previously used by the Intel 486 processor” MESI

聊聊高并发(五)理解缓存一致性协议以及对并发编程的影响

Java作为一个跨平台的语言,它的实现要面对不同的底层硬件系统,设计一个中间层模型来屏蔽底层的硬件差异,给上层的开发者一个一致的使用接口.Java内存模型就是这样一个中间层的模型,它为程序员屏蔽了底层的硬件实现细节,支持大部分的主流硬件平台.要理解Java内存模型以及一些处理高并发的技术手段,理解一些基本的硬件知识是必须的.这篇会说一下跟并发编程相关的一些硬件知识. 一个基本的CPU执行计算的过程如下: 1. 程序以及数据被加载到主内存 2. 指令和数据被加载到CPU的高速缓存 3. CPU执行

缓存一致性协议

刚看到一篇很好的介绍缓存一致性的文章,晚一点把其中的英文部分翻译过来 https://zhuanlan.zhihu.com/p/25876351 https://en.wikipedia.org/wiki/MESI_protocol

zt:缓存一致性(Cache Coherency)入门 cach coherency

http://www.infoq.com/cn/articles/cache-coherency-primer http://www.cnblogs.com/xybaby/p/6641928.html 本文是RAD Game Tools程序员Fabian “ryg” Giesen在其博客上发表的<Cache coherency primer>一文的翻译,经作者许可分享至InfoQ中文站.该系列共有两篇,本文系第一篇. 我计划写一些关于多核场景下数据组织的文章.写了第一篇,但我很快意识到有大量的

缓存一致性

多核处理器的基本架构 缓存(Cache) 本文是关于CPU缓存的快速入门.我假设你已经有了基本概念,但你可能不熟悉其中的一些细节.(如果你已经熟悉了,你可以忽略这部分.) 在现代的CPU(大多数)上,所有的内存访问都需要通过层层的缓存来进行.也有些例外,比如,对映射成内存地址的I/O口.写合并(Write-combined)内存,这些访问至少会绕开这个流程的一部分.但这两者都是罕见的场景(意味着绝大多数的用户态代码都不会遇到这两种情况),所以在本文中,我将忽略这两者. CPU的读/写(以及取指令

内存管理_缓存一致性

计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,涉及到数据的读取和写入.由于程序运行过程中的临时数据是存放在SRAM(物理内存)当中的,由于CPU执行速度很快,而从内存读取数 据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度,因此在CPU里面就有了一级.二级Cache(DRAM).也就是,当程序在运行过程中,会将运算需要的数据从RAM复制一份到Cache中,那么CPU进行计算时就可以