CPU的cache

4 分钟阅读 662 字 + 307 词
CPU的cache是什么
cache分为一级cache,二级三级,后面是内存,cache是用来缓存最常用的那些数据,空间换时间的思想,cache的速度越靠近CPU是越快的,cache的出现就是来匹配CPU的速度.
缓存行的四个状态:
需要利用 总线嗅探的机制实现了事务串行化 (总线嗅探(Bus Snooping)是一种用于监控和管理多处理器系统或多核系统中共享总线数据传输的机制。它允许各个处理器或缓存控制器观察和响应总线上的活动,以确保数据的一致性和有效性。)
MESI中每个缓存行都有四个状态 ,分别是E(exclusive)、M(modified)、S(shared)、I(invalid)。下面我们介绍一下这四个状态分别代表什么意思。
M:代表该 缓存行 中的内容 被修改 了,并且 该缓存行只被缓存在该CPU中 还没有同步到内存中 。这个状态的 缓存行中的数据和内存中的不一样 ,在未来的某个时刻它会被写入到内存中(当其他CPU要读取该缓存行的内容时。或者其他CPU要修改该缓存对应的内存中的内容时(个人理解CPU要修改该内存时先要读取到缓存中再进行修改),这样的话和读取缓存中的内容其实是一个道理)。
E: E代表该缓存行对应内存中的内容只被该CPU缓存,其他CPU没有缓存该缓存对应内存行中的内容 此时缓存内容和内存中是一致的 。这个状态的缓存行中的内容和内存中的内容一致。该缓存可以在任何其他CPU读取该缓存对应内存中的内容时变成S状态。或者本地处理器写该缓存就会变成M状态。
S:该状态 意味着数据不止存在本地CPU缓存中 ,还存在别的CPU的缓存中。这个状态的数据和内存中的数据 是一致的 。当有一个CPU修改该缓存行对应的内存的内容时会 使其他缓存行变成 I 状态
I:代表 该缓存行中的内容是无效的
原子操作: 先lock指令,只需阻止其他核心对相关内存空间的访问 (对应到MESI协议,就 只需要阻止M,E这两个状态发生改变 ,就可以实现原子操作),任何改变这两种状态的行为都需要阻塞
E -> I :其他核心修改这个数据
E -> S :其他核心读这个数据
M -> I :其他核心修改这个数据
M -> S :其他核心读这个数据