ARM内存屏障产生的原因

ARM内存屏障用于解决程序中内存访问顺序不一致的问题,保证内存访问的一致性和程序正确性。ARM提供ISB、DMB和DSB三种内存屏障指令,分别用于指令同步、数据存储和数据同步。在弱一致性内存模型下,适当使用内存屏障可以避免多核处理器的乱序执行导致的错误。
摘要由CSDN通过智能技术生成

程序在执行时的实际内存访问顺序和程序代码编写的访问顺序不一致,会导致内存乱序访问。

  1. 编译时,编译器优化导致内存乱序访问;
  2. 执行时,多个CPU间交互引起的内存乱序访问。

这些优化可能会导致实际执行代码与程序员的代码逻辑不符,导致一些错误的发生,为了保证内存访问的一致性,也是保证程序的正确性,使用内存屏障来保证内存的访问顺序。

ARM采用的是弱一致性内存模型,使用内存屏障将一致性问题交由程序员解决。内存屏障指令的基本原则如下:

  • 所有在内存屏障指令之前的数据访问必须在内存屏障指令之前完成;
  • 所有在内存屏障指令后面的数据访问必须等待内存屏障指令执行完;
  • 多条内存屏障指令是按顺序执行的。

ARM有三种内存屏障指令,分别是:

  • Instruction Synchronization Barrier (ISB),指令同步屏障
  • Data Memory Barrier (DMB),数据存储屏障
  • Data Synchronization Barrier (DSB),数据同步屏障

假设有如下代码片段:

Core A:
	STR R0, [Msg]
	STR R1, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值