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乱序将会对我们的代码逻辑造成致命影响。
发布于