03 部分存储定序模型

部分存储定序模型

TSO在store buffer的情况下已经带来了不小的性能提升,但是芯片设计人员并不满足于这一点,于是他们在TSO模型的基础上继续放宽内存访问限制,允许CPU以非FIFO来处理store buffer缓冲区中的指令。

CPU只保证地址相关指令在store buffer中才会以FIFO的形式进行处理(大白话就是对同一个相同的地址做store,才会有严格执行顺序制约),而其他的则可以乱序处理,所以这被称为部分存储定序(PSO)。

Core C1 Core C2
S1: store data=2
S2: store flag=1
L1: load r1=flag
B1: if(r1 != 1) goto L1
L2: load r2=data

S1和S2是地址无关的store指令,被CPU推到store buffer中后任意顺序执行。

可能的顺序是:S2->L1->L2->S1,导致r2!=2,不是我们期望的情况。

这样PSO带来的store-store乱序将会对我们的代码逻辑造成致命影响。