04 宽松存储模型

宽松存储模型

为了获取更多的性能,在PSO的模型的基础上不仅允许store-load、store-store乱序,还进一步允许load-load乱序和load-store乱序。

只要是地址无关的指令,在读写访问的时候都可以打乱所有load/store的顺序,这就是宽松内存模型(RMO)。

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

在RMO模型里,不仅会出现PSO的store-store乱序,C2本身执行指令的时候,由于L1与L2是地址无关的,所以L2可能先比L1执行,这样即使C1没有出现store-store乱序,C2本身的load-load乱序也会导致我们看到的r2为0。