深入硬件级别的MESI协议
2022-04-10 12:30:07 32 举报
MESI协议是多处理器系统中用于管理共享内存的一致性协议。它定义了四个状态:Modified(修改)、Exclusive(独占)、Shared(共享)和Invalid(无效)。当一个处理器需要读取或写入某个内存位置时,它会先检查该位置的状态。如果状态为Modified或Exclusive,则允许操作并更新状态;如果状态为Shared,则需要发送消息通知其他处理器同步状态;如果状态为Invalid,则需要从主存中重新读取数据。通过这种方式,MESI协议确保了多处理器系统中的内存一致性和可见性。
作者其他创作
大纲/内容
tag
cache line
数据写入
无效队列
5. 嗅探invalidate消息
cache entry
flag
1.read读取数据
L3高速缓存
指向主存中数据的地址
11.修改数据
存在问题:有序性问题,比如第一个数据s:写入到写缓冲区;第二个数据i:写入到高速缓冲区;则默认为storestore重排
处理器02
b = 0
a = 0
bucket
处理器01
a = 1
高速缓存
L2高速缓存
L1高速缓存
BUS
9.从写缓冲去取数数据refresh到高速缓存
Core 1
私有Cache
Core 3
4.数据写入到写缓冲区
2.read返回值
主存(或者共享Cache)
通过线程总线进行数据读取
6.invalidate写入无效队列
Core 2
7.返回invalidate ack消息
容量更大
3.数据为s,修改数据发送invalidate消息
当数据无效后,从其他处理器高速缓存中或者主存中读取数据
容量更小
flag=i
数据传输
写缓冲器
数据读取
b = 1
Core 4
LOCK#
总线
c = 1
速度更慢
主内存
1.read数据
速度更快
主存(Memory)
flush
flag=s
存在问题:有序性问题,比如第一个数据s:写入到写缓冲区;第二个数据i:直接读取数据,则默认为storeLoad重排
MESI原理图
CPU物理缓存结构
8.嗅探invalidate ack消息
10.读数据加锁
数据状态:S(shared) => E(exclusive)=> M(modified)
缓存一致性协议
invalidate消息写入,修改为无效状态
c = 0
0 条评论
下一页