TSO(Total Store Ordering)内存模型
- TSO(Total Store Ordering)是一个被广泛使用的内存模型
- 并在x86架构中使用,RISC-V也提供了TSO扩展,即RVTSO,人们普遍认为x86内存模型等同于TSO,然而Intel和AMD从来没有保证这一点
- x86选择放弃SC(顺序一致性sequential consistency),以更好地支持基于FIFO的write buffer,用于加速性能
- TSO和SC最关键的区别就是store可能被放入write buffer中且允许load的bypass
- 对于单核视角来说,和SC没有区别,执行顺序和程序顺序一致
- 对于多核来说,需要额外的手段来保证memory consistency
- 由于TSO只允许store-load的重排,因此需要使用FENCE的场合不多,FENCE的实现方式也不是很重要。一种简单的实现是,当FENCE被执行时,清空write buffer,并在FENCE提交之前不再执行后面的load指令。