Arm ldrex/strex和swp之间的差异

Arm ldrex/strex和swp之间的差异,arm,Arm,ldrex/strex和swp之间的差异 区别是什么 它们有相同的功能吗 一个比另一个好吗? 根据arm v7 rm ARM强烈建议所有软件使用本节所述的同步原语,而不是SWP或SWPB。SWP只需按照其名称进行操作—以原子方式将寄存器的内容与内存中的字交换,而无需其他操作。它从v6开始就被弃用,在某些v7实现中可能不存在,并且在v8中完全从体系结构中删除(类似地,单字节版本SWPB) 另一方面,它们是基本体,您可以从中构造几乎所有的基本体。排他性的另一个关键点是它们是非阻塞的,因此更适合于多处

ldrex/strex和swp之间的差异 区别是什么

它们有相同的功能吗

一个比另一个好吗? 根据arm v7 rm


ARM强烈建议所有软件使用本节所述的同步原语,而不是SWP或SWPB。

SWP
只需按照其名称进行操作—以原子方式将寄存器的内容与内存中的字交换,而无需其他操作。它从v6开始就被弃用,在某些v7实现中可能不存在,并且在v8中完全从体系结构中删除(类似地,单字节版本
SWPB


另一方面,它们是基本体,您可以从中构造几乎所有的基本体。排他性的另一个关键点是它们是非阻塞的,因此更适合于多处理器环境——如果CPU1在CPU0的原子操作的中间写入相同的地址,CPU0将看到 Strux 失败并简单重试,而CPU1则更不明智。与总线锁定原子相比较,在总线锁定原子中,在CPU0完成之前,CPU1根本无法访问任何内存。

swp不适合多核体系结构,因此需要改用ldrex/strex。为了使ldrex/strex正常工作,您需要芯片供应商的硬件支持,但不确定是谁直接管理swp,如果arm管理swp,那么单核/单处理器的风险较小,但正如arm所示,它最终将消失。