【问题标题】:implementation of mutex with single CPU instruction in ARMARM中单CPU指令互斥锁的实现
【发布时间】:2023-04-09 00:03:01
【问题描述】:

我知道有一些原子指令,例如测试和设置以及比较和交换指令,它们可以实现互斥体的硬件实现。但我很想知道在 ARM 上是否有像 Compare 或 swap 之类的单一指令可以实现互斥锁?

我认为实现互斥体至少需要两条指令(以原子方式执行)。

附:在描述了比较和交换之后,我在一次采访中被问到这个问题。更多针对 ARM 的优化。但我想知道它是否也可以在其他架构中使用?

【问题讨论】:

  • 您可以自己回答这个问题:a) 简单地查看指令集,b) 比较任何开源操作系统中现有的 ARM 互斥锁实现。虽然答案是may change in future,但要相当长的时间才能投入生产。

标签: assembly synchronization arm embedded mutex


【解决方案1】:

互斥锁是一种级别太高的机制,无法在一条指令中实现。它需要关于哪个线程持有锁的信息,在有锁的线程中嵌套的互斥锁级别的计数,并且在基于优先级的抢占式 RTOS 中需要优先级反转机制,其中涉及临时提升拥有该锁的线程的优先级。锁。

【讨论】:

    【解决方案2】:

    在单个操作中,即使是简单的自旋锁也往往不是一个好主意。 ARM 曾经有一些简单的“交换”指令,它们以原子方式将寄存器中的值与内存中的值交换,但它们不能很好地扩展到高频多核系统(因为您必须有效地锁定总线以确保原子性的交换),因此它们从较新版本的体系结构中删除并替换为多部分加载/存储独占指令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 2011-02-20
      相关资源
      最近更新 更多