我正在阅读下面提到的memory-barrier.txt文件。
请澄清我的疑问。 1)例如,如果CPU1获得锁定,PCI桥如何看到STORE * STORE * DATA = 1之前ADDR = 4?
在某些情况下(特别是涉及NUMA),I / O访问内部 两个不同CPU上的两个自旋锁定部分可能被视为交错 PCI桥,因为PCI桥不一定参与其中 缓存一致性协议,因此无法发布所需的协议 读内存障碍。
例如:
CPU 1
===============================
spin_lock(Q)
writel(0, ADDR)
writel(1, DATA);
spin_unlock(Q);
CPU 2
===============================
spin_lock(Q);
writel(4, ADDR);
writel(5, DATA);
spin_unlock(Q);
may be seen by the PCI bridge as follows:
STORE *ADDR = 0, STORE *ADDR = 4, STORE *DATA = 1, STORE *DATA = 5
which would probably cause the hardware to malfunction.
答案 0 :(得分:0)