【论文导读】 Complexity-Effective Multicore Coherence

目前通用的维护cache 一致性的就是通过MESI或者MOESI来标志cacheline的state,在访问相同的数据时,会进行broadcast或者使用directory的方式进行记录。
论文采取了新的一致性策略VIPS以及改进的版本VIPS-M来进行已执行的维护,即不需要broadcast,也不需要维护directory。

  • dynamic write policy 将写回和写直达动态结合,利用了写直达不需要维护cache 一致性的优点
  • selective flush 如果当前的core想要写数据,但是在其他的L1中有备份,那么不可避免的会需要snoop其他的L1 cache,那么如何避免snoop?在当前core到达同步点(lock acquire/release, barriers, wait/signal sychronization)的时候自己主动的将所有share的data都自己flush掉,只保留private data,这样就不需要directory记录来实现snoop了。

VIPS : Valid/Invalid/Private/Share
VIPS-M: 额外在MSHR中增加了用于表明dirty word的标志位,用来将false-sharing 的data进行 merge。

具体实现方法

  • share的data 使用 write through的方式 考虑到write through可能会对同一个地址的数据进行重复的写,而降低性能,因此在实现了delayed write through,在MSHR中将数据保留,进行merge
  • private的data使用write back的方式
  • CPU初次获取数据时,拿到的数据就是private类型,这时候就是用write back 策略,等到其他的CPU也访问这个数据,就像数据的类型从private转为share。这时那些之前dirty的数据就需要write back了,不过这种情况比较少见

VIPS:在这里插入图片描述
VIPS-M
在这里插入图片描述
对于锁操作的支持:
在这里插入图片描述
普通的spin操作会持续的读取到数据的值,但是数据的值在另一个CPU释放锁之前一直不满足,paper中提到的方法则是另一个锁就一直不会读到数据的值,会持续的等待,这样对性能的影响也很小。

Paper Website

欢迎关注我的公众号《处理器与AI芯片》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值