ARM屏蔽指令介绍

本文档深入浅出地介绍了ARM处理器中用于隔离的指令,旨在帮助读者更好地理解和应用这些汇编指令,促进技术交流和学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:该文档是参考网上资料整理出来,以通俗的方式讲解,方便大家理解,如有不懂,可以私下讨论,共同进步。

1.屏蔽指令的介绍

1.1.屏蔽指令简介
DMB :全称 Data Memory Barrier,仅当所有在它前面的存储器访问都执行完毕后,才执行它后面的存储器访问动作(注意只对存储器访问敏感);


DSB:全称Data Synchronous Barrier,比DMB严格:仅当所有在它前面的存储器访问都执行完毕后,才执行它在后面的指令(亦即任何指令都要等待) ;


ISB:全称 Instruction Synchronous Barrier,最严格: 清洗流水线,以保证所有它前面的指令都执行完毕之后,才执行它后面的指令。
 
DMB与DSB的区别:
DMB作用的范围比DSB小,DSB比DMB严格,DSB牺牲的性能比DMB大,DMB只对存储器访问的指令敏感,而DSB是对所有的指令都敏感,所以说它
宁可错杀也不漏网 ,对于新手来说更加保险,只有大虾才会使用DMB。


1.2.ARM官方文档介绍
数据内存屏障指令、数据同步屏障指令和指令同步屏障指令。


语法
DMB{cond} {option}
DSB{cond} {option}
ISB{cond} {option}
其中:
cond
是一个可选的条件代码(请参阅条件执行)。
option
对提示操作的可选限制。


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


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


option 的允许值为:


SY
完整的系统DMB 操作。 这是缺省情况,可以省略。


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


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


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


允许的值为:


SY
完整的系统 DSB 操作。 这是缺省情况,可以省略。


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


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


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


ISB


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


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


option 的允许值为:


SY
完整的系统DMB 操作。 这是缺省情况,可以省略。


体系结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值