aarch64;负载获取独占vs负载独占

时间:2019-01-03 01:50:12

标签: arm locking arm64

AArch64指令集中的LDAXRLDXR指令之间有什么区别?

根据参考手册,它们看起来完全一样(“ acquire”一词除外):

LDAXR -加载获取专用寄存器:将字从基址寻址的存储器加载到Wt。将物理地址记录为独占访问。

LDXR -加载专用寄存器:将一个字从基址寻址的存储器加载到Wt。将物理地址记录为独占访问。

谢谢

1 个答案:

答案 0 :(得分:1)

以最简单的形式,LDAEX == LDXR + DMB_SY

这是我对LDAXR的描述:

  

C6.2.104 LDAXR

     

Load-Acquire Exclusive Register从基数派生一个地址   寄存器值,从内存中加载32位字或64位双字,   并将其写入寄存器。内存访问是原子的。 PE标志   作为独占访问方式访问的物理地址。这个   独占访问标记由“商店独占”说明检查。看到   同步和信号灯,第B2-135页。该指令也   具有如Load-Acquire中所述的内存排序语义,   第B2-108页的Load-AcquirePC和Store-Release。有关信息   有关内存访问的信息,请参阅第C1-157页的加载/存储寻址模式。

来自DDI0487 Da的K11.3节

  

ARMv8体系结构将获取​​和发布语义添加到   排他性和排他性说明,使他们能够   获取顺序获取和/或释放语义。独占负载   可以将指令指定为具有获取语义,并且   可以指定商店专有指令来发布   语义。这些可以任意组合以允许原子   成功的“独占负载”和“独占存储”对创建的更新   具有以下任何一项:

     
      
  • 无排序语义(使用LDREX和STREX)。

  •   
  • 仅获取语义(使用LDAEX和STREX)。

  •   
  • 仅释放语义(使用LDREX和STLEX)。

  •   
  • 顺序一致的语义(使用LDAEX和STLEX)。

  •   

也(B2.3.5),

  

Load-Acquire指令的基本原理是介绍   加载获取生成的内存访问之间的顺序   指令和存储器访问按程序顺序出现   Load-Acquire指令,以便由   每个PE在一定程度上遵守Load-Acquire指令   要求该PE必须先一致地观察访问   在程序之后按程序顺序显示的内存访问量   该PE遵守Load-Acquire指令,   PE必须连贯地观察访问。