store buffer
1. store buffer位于CPU和L1 cache之间
2.CPU在写数据时,先把数据写入store buffer,不用等待收到其他所有CPU的应答,可以解决CPU停滞问题
3. 如果store buffer有数据,cpu优先从store buffer里面读取,而不是从L1 cache读取数据。称为store forwarding
4.smp_wmb()可以冲刷store buffer,保证前面的数据被写入到cache,在执行后面的存储操作
invalidate queue
1.invalidate queue位于L1 cache和总线侦听控制单元之间
2.当CPU收到总线请求后,如果需要执行无效本地高速缓存行操作,那么会把这个请求加入到无效队列里,然后立马给对方回复一个应答信号,而无需把该高速缓存无效之后再应答。
3.smp_rmb()可以冲刷invalidate queue,保证在读数据前,把高速缓存的数据无效掉。