【操作系统百科】原子 RMW 操作

💡 原文中文,约3500字,阅读约需9分钟。
📝

内容提要

不同 CPU 架构的原子操作实现差异显著。x86 使用 LOCK 前缀,性能高但在竞争时代价大;ARM 提供 LL/SC 和 LSE,后者在高并发下表现优越;RISC-V 采用 AMO 和 LR/SC。高频原子操作可能导致缓存行争抢,影响性能。内核 atomic API 封装了这些差异,提供一致的接口。

🎯

关键要点

  • 不同 CPU 架构的原子操作实现差异显著。

  • x86 使用 LOCK 前缀,性能高但在竞争时代价大。

  • ARM 提供 LL/SC 和 LSE,后者在高并发下表现优越。

  • RISC-V 采用 AMO 和 LR/SC,提供两种原子操作方式。

  • 高频原子操作可能导致缓存行争抢,影响性能。

  • 内核 atomic API 封装了这些差异,提供一致的接口。

延伸问答

不同 CPU 架构的原子操作有什么差异?

不同 CPU 架构的原子操作实现差异显著,x86 使用 LOCK 前缀,ARM 提供 LL/SC 和 LSE,RISC-V 采用 AMO 和 LR/SC。

x86 架构的原子操作性能如何?

x86 使用 LOCK 前缀,性能高但在竞争时代价大,竞争激烈时可能达到 100+ cycles。

ARM 的 LSE 和 LL/SC 有什么区别?

ARM 的 LSE 提供硬件原子操作,无需重试循环,性能在高并发下比 LL/SC 快 10 倍以上。

RISC-V 的原子操作是如何实现的?

RISC-V 采用 AMO 和 LR/SC 两种原子操作方式,类似于 ARM 的两代方案。

高频原子操作会带来什么问题?

高频原子操作可能导致缓存行争抢,影响性能,特别是在同一缓存行的竞争中。

内核的 atomic API 是什么?

内核 atomic API 封装了不同架构的原子指令,提供一致的接口供开发者使用。

➡️

继续阅读