一、CPU的多级缓存
1.为什么需要CPU缓存
在一个典型的系统中,可能会有几个缓存共享主存,每个相应的CPU会发出读写请求,CPU的频率太快了,快的主存跟不上,这样主存常常需要等待主存,而缓存的目的是为了减少CPU读写共享主存的次数,解决CPU和主存速度不匹配的问题。
2.CPU缓存有什么意义
时间局部性:如果某个数据被访问,那么不久的将来它有可能会再次被访问。
空间局部性:如果某个数据被访问,那么与它相邻的数据有可能很快也会被访问。
二、MESI CPU缓存行的四种状态
1.M:被修改(Modified)
该缓存行只被缓存在该CPU的缓存中,并且是被修改过的,即与主存中的数据不一致,该缓存行中的内存需要在未来的某个时间点(允许其他CPU读取主存中相应内存之前)写回主存中。当被写回到主存中之后,该缓存行会变成E(独享)状态。
2.E:独享的(Exclusive)
该缓存行只被缓存在该CPU的缓存中,他是未被修改过的,与主存中的数据一致。该状态可以在任何时刻当有其它CPU读取该内存时变成S(共享)状态。同样的当有CPU修改该缓存行的内容时,该状态可以变成M(修改)状态。