Exclusive monitor在spinlock中的应用

155 阅读1分钟

目录

  • 1、Exclusive monitor概念
  • 2、独占访问在spinlock中的应用

1、Exclusive monitor概念

ARMv6 架构时引入了对内存位置进行独占访问的概念,提供了更灵活的原子内存更新。对应的独占访问的指令是:LDREX 和STREX. 而在armv8架构中,这两个指令变成了LDXR和STXR

独占监视器是一个简单的状态机,具有open和exclusive的两种状态。 为了支持处理器之间的同步,系统必须实现两组监视器,local和global。 Load-Exclusive 操作将监视器更新为exclusive状态。 Store-Exclusive 操作访问监视器以确定它是否可以成功完成。 只有当所有访问的独占监视器都处于独占状态时,Store-Exclusive 才能成功。

read-normal-img

LDXR Wt, [base{,#0}]

(1)、从base地址处读取一个数字,存放到Wt寄存器中;

(2)、将Monitor变成exclusive状态

STXR Ws, Wt, [base{,#0}]

(1)、将Wt中的数据写入到base地址处,如果成功Ws返回0,否则返回1;

(1)、将Monitore从exclusive状态切换成open, 如果切换成功,则说明写入成功,Ws返回0; 如果切换失败,则数据不会写入到内存,Ws返回1

注意事项:

  • 以上独占机制只适用normal memory,如果是device memory则不会启用exclusive访问机制。
  • 如果是配置成shareable的memory,则会启用global monitor,如果配置成的是non-shareable memory,则只有local monitor生效

2、独占访问在spinlock中的应用

read-normal-img

添加威♥:sami01_2023,回复ARM中文,领取ARM中文手册