目录
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 才能成功。
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中的应用
添加威♥:sami01_2023,回复ARM中文,领取ARM中文手册