MESI是四个单词的缩写:Modifield,Exclusive,Shared,Invalid代表缓存的四种状态
首先来了解缓存:
缓存:为了弥补内存和处理器之间处理速度不匹配的问题
我们的数据和程序都是存储到内存中的,在执行时加载到处理器中,因为处理器的处理速度非常快,导致内存中数据的加载赶不上处理器处理的速度,从而cpu需要等待内存处理数据,内存是一种使用DRAM的动态随机存储器,缓存是放在cpu内部的使用称之为SRAM的静态随机存储器,缓存的处理速度非常快,可以比肩cpu的处理速度,这个存储器称为高速缓存存储器,它可以让cpu优先处理缓存中的数据,而不是频繁的读取内存
现在的cpu为了提升执行效率,通常会设计多层缓存,例如单核处理器
它采取了两级的缓存结构,L1 Cache(几十k左右)和L2 Cache(几百k),L1又分为L1P和L1D,分别给程序和数据使用,在L2中程序和数据共用,cpu处理数据时,先找L1,L1没有再找L2,L2没有再从主内存中加载.
多核处理器的缓存结构
L1和L2为独立,L3为多核共有
缓存的最小单位称为缓存行,在主流的arm和X86架构中,缓存行大小为64个字节
缓存一致性协议
上面提到了缓存的四种状态,每个缓存行都要花费两个比特位来表示当前状态
Invalid(失效的):代表当前状态是无效的,要读取该数据可前往主内存或其他核
Shared(共享的):代