这里需要什么样的内存栅栏?

时间:2016-10-26 17:23:53

标签: parallel-processing numa memory-fences

作为内存栅栏必须确保并行程序执行正确性的经典示例,通常会给出以下示例:

P1:

x = 42;                 //line 1
flag = true;            //line 2

P2:

while(!flag);
y = x;

一方面,为了获得最佳性能,处理器尝试(合法地)重新排序指令,使得重新排序的指令序列在考虑顺序执行时具有与原始指令完全相同的效果。 另一方面,为了确保顺序执行指令序列的正确性,必须遵守控制依赖性。 从这个角度来看,P2执行的 while 语句不是一个控件依赖吗? 如果是这样,那么唯一需要的内存围栏是P1的第1行和第2行之间的Store | Store围栏,对吧?

0 个答案:

没有答案