(4 封私信 / 9 条消息) 有了缓存一致性协议为什么还需要多线程同步? - 知乎

(4 封私信 / 9 条消息) 有了缓存一致性协议为什么还需要多线程同步? - 知乎

类型
缓存
操作系统
URL
是否整理吸收
Date
notion image
当一个CPU进行写入时,首先会给其它CPU发送Invalid消息,然后把当前写入的数据写入到Store Buffer中。然后异步在某个时刻真正的写入到Cache中。当前CPU核如果要读Cache中的数据,需要先扫描Store Buffer之后再读取Cache。但是此时其它CPU核是看不到当前核的Store Buffer中的数据的,要等到Store Buffer中的数据被刷到了Cache之后才会触发失效操作。而当一个CPU核收到Invalid消息时,会把消息写入自身的Invalidate Queue中,随后异步将其设为Invalid状态。和Store Buffer不同的是,当前CPU核心使用Cache时并不扫描Invalidate Queue部分,所以可能会有极短时间的脏读问题MESI协议,可以保证缓存的一致性,但是无法保证实时性。
 

Loading Comments...