4.10.9. DBG、DMB、DSB 和 ISB

调试指令、数据内存屏障指令、数据同步屏障指令和指令同步屏障指令。

语法

DBG{cond} {#option}
DMB{cond} {#option}
DSB{cond} {#option}
ISB{cond} {#option}

其中:

cond

是一个可选的条件代码(请参阅条件执行)。

option

对提示操作的可选限制。

用法

这些是提示指令。 是否实现这些指令是可选的。 只要其中任何一个指令未实现,则与 NOP 效果相同。

DBG

调试提示可向调试系统及其相关系统发送提示。 有关这些系统如何使用此指令的信息,请参这些系统的文档。

DMB

数据内存屏障可作为内存屏障使用。 它可确保会先检测到程序中位于 DMB 指令前的所有显式内存访问指令,然后再检测到程序中位于 DMB 指令后的显式内存访问指令。 它不影响其他指令在处理器上的执行顺序。

option 的允许值为:

SY

完整的系统 DMB 操作。 这是缺省值,可以省略。

ST

存储完成后才可执行的 DMB 操作。

ISH

仅对内部可共享域执行的 DMB 操作。

ISHST

只有当存储完成后才可执行的 DMB 操作,并且只对内部可共享域执行。

NSH

只可完成于统一点的 DMB 操作。

NSHST

只有当存储完成后才可执行的 DMB 操作,并且只会完成于统一点。

OSH

仅对外部可共享域执行的 DMB 操作。

OSHST

只有当存储完成后才可执行的 DMB 操作,并且只对外部可共享域执行。

DSB

数据同步屏障是一种特殊的内存屏障。 只有当此指令执行完毕后,才会执行程序中位于此指令后的指令。 当满足以下条件时,此指令才会完成:

  • 位于此指令前的所有显式内存访问均完成。

  • 位于此指令前的所有高速缓存、跳转预测和 TLB 维护操作全部完成。

option 的允许值为:

SY

完整的系统 DSB 操作。 这是缺省值,可以省略。

ST

存储完成后才可执行的 DSB 操作。

ISH

仅对内部可共享域执行的 DSB 操作。

ISHST

只有当存储完成后才可执行的 DSB 操作,并且只对内部可共享域执行。

NSH

只可完成于统一点的 DSB 操作。

NSHST

只有当存储完成后才可执行的 DSB 操作,并且只会完成于统一点。

OSH

仅对外部可共享域执行的 DSB 操作。

OSHST

只有当存储完成后才可执行的 DSB 操作,并且只对外部可共享域执行。

ISB

指令同步屏障可刷新处理器中的流水线,以便在 ISB 指令完成后,才从高速缓存或内存中提取位于该指令后的所有其他指令。 这可确保提取时间晚于 ISB 指令的指令能够检测到 ISB 指令执行前就已经执行的上下文更改操作(例如更改 ASID 或已完成的 TLB 维护操作、跳转预测维护操作以及对 CP15 寄存器所做的所有更改)的执行效果。

此外,ISB 指令可确保程序中位于其后的所有跳转指令总会被写入跳转预测逻辑,其写入上下文可确保 ISB 指令后的指令均可检测到这些跳转指令。 这是指令流能够正确执行的前提条件。

option 的允许值为:

SY

完整的系统 ISB 操作。 这是缺省设置,可以省略。

别名

DMB 和 DSB 支持 option 的以下备选值,但是 ARM 建议您不要使用这些值:

  • SHISH 的别名

  • SHSTISHST 的别名

  • UNNSH 的别名

  • UNSTNSHST 的别名

体系结构

这些 ARM 和 32 位 Thumb 指令可用于 ARMv7。

这些指令均无 16 位 Thumb 版本。

Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IC
Non-Confidential