ldrex / strex和swp之间的区别

时间:2014-05-17 11:56:24

标签: arm

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

他们有相同的功能

比其他人好吗? 按照手臂v7 rm

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

1 个答案:

答案 0 :(得分:3)

SWP完全正如其名称所暗示的那样 - 用原子上的内存中的单词交换寄存器的内容,而不是其他内容。它自v6以来已被弃用,可能在某些v7实现中不存在,并且在v8中完全从架构中删除(类似SWPB,单字节版本)。

另一方面,

Load/store exclusives是基元,你可以构建几乎任何atomic read-modify-write operation。排他性的另一个关键点是它们是非阻塞的,因此更适合多处理器环境 - 如果CPU1在CPU0的原子操作中写入相同的地址,CPU0将看到STREX失败并简单地重试,而CPU1则不是明智之举。将其与总线锁定原子进行比较,其中CPU1将被阻止访问任何内存,直到CPU0完成。