mesi 以及 硬件是如何支持的
2021-08-20 15:39:49 0 举报
mesi 以及 硬件是如何支持的
作者其他创作
大纲/内容
cache
高速缓存
1-0 嗅探到其他cpu invalidate ack
无效队列 : 收到其他cpu的invalidate消息之后,直接把消息放入无效队列,就返回invalidate ack给那个写cpu
read 消息
flag
read消息
bucket
E - >M
数据写入
其中一个cpu 计算数据
I
无效队列 --硬件
总 线
0-0 数据写入
写缓冲 -- 硬件
0-2-0 嗅探到invalidate消息
数据读取
0-2-2 返回invalidate消息ack
其中一个cpu
缓存行的四个状态: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:代表该缓存行中的内容时无效的。这个是我参考的百度
写缓冲:作用写数据的时候,直接把数据写入缓冲器,同时向总线发送invalidate消息,然后就等待其他cpu兄弟返回ack
read返回值
read 返回值
主 存
MESI协议规定,各个处理器在操作内存数据的时候,必须向总线发送消息,而且各个处理器还会不停的从总线嗅探最新的消息,通过这个总线的消息传递来保证各个处理器的协作
0-2-1 invalidate消息进入无效队列
1-1 收到所有cpu的invalidate ack
数据加锁
0-1 invalidate消息
cache 就是缓存的数据flag表示数据的状态 和mesi对应
0 条评论
下一页