多谢,学习了。
看概述专利的特点:
cpu1提交 transactional memory成功后,主动把cache给flush到LLC,方便下一个cpu来访问? 如果是这个思路,感觉普通atomic 指令完成write之后(spin_unlock()),然后cpu主动把自己的priviate cache给flush到LLC,这样是不是也有性能上提升?
但是假如push到LLC后,后面的cpu还是cpu1发起的访问,感觉这个优化就有点没必要了。是不是在典型的软件场景上,一般是其它cpu 。
我知道的有些处理器实现,对于mulit-core之间的next-level cache的allocation policy是exclusive until shared。 比如一个处理器cluster里面有per-cpu的 L1和L2 cache,还有cluster内部的L3 cache,外加bus上的system cache的层次结构。 除非软件采用了cache flush的操作指令,L3 cache和LLC只有在2个cpu或者以上访问这个数据的时候才缓存该cache line。 不过write的时候是exclusive的,会把其他cpu里面的cache line,包括L3 cache 和LLC 给invalidate掉。
transactional memory这一块实现不了解,这个专利需要好好阅读下。 假如一个transaction里面涉及到多个cacheline,按照你这个专利,是不是都要给clean & invalidate到LLC ?
【 在 MaLing 的大作中提到: 】
:
https://patents.google.com/patent/CN104951240B/zh?inventor=%E9%A9%AC%E5%87%8C&assignee=%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4&oq=%E9%A9%AC%E5%87%8C+%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4: 这种方法可以加快锁的访问
--
FROM 101.88.9.*