B2.8 指令获取的排序
对于两个内存位置 A 和 B,如果 A 已经被写入更新的值并且与共享域的指令获取保持一致,然后 B 也被写入更新的值,且共享域的一个观察者看到的顺序是 A 的写入发生在 B 之前,那么在共享域中,来自 B 的指令获取如果读取到包含更新值的 B 的话,随后在程序顺序中从 A 获取的指令将包含 A 的更新值。
当满足以下条件时,写操作已与共享域的指令获取保持一致:
-
CTR_EL0:{DIC, IDC} == {0, 0}
写入的地点已经从数据缓存清理到统一点(PoU),且该清理已完成共享域的操作。随后,该地点已从指令缓存中失效,并且该失效操作已完成共享域的操作。 -
CTR_EL0:{DIC, IDC} == {1, 0}
写入的地点已经从数据缓存清理到统一点(PoU),且该清理已完成共享域的操作。 -
CTR_EL0:{DIC, IDC} == {0, 1}
写操作已完成共享域的操作。随后,该地点已从指令缓存中失效,并且该失效操作已完成共享域的操作。 -
CTR_EL0:{DIC, IDC} =&