news 2026/10/1 15:59:42

pcie原子操作和nvme原子操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pcie原子操作和nvme原子操作

先把两个“原子”分开,否则很容易混:

  • PCIe AtomicOp:PCIe 链路上的原子事务(FetchAdd / Swap / CAS),设备对系统内存/对端内存做“读-改-写”不被打断。
  • NVMe 原子写 / atomic write:NVMe 命令级语义,保证若干 LBA 的写“要么全成、要么全不成”,是存储一致性概念,不是 PCIe AtomicOp。

一、PCIe 原子操作主要用在哪些场景

PCIe AtomicOp 从 PCIe 3.0 起正式增强,核心是让IO 设备像 CPU 一样对共享内存做无锁 RMW(Read-Modify-Write)。

典型场景:

  1. 设备 ↔ 主机共享内存的同步
    • GPU / DPU / 智能网卡更新主机内存里的队列头/尾指针
    • 无锁队列、ring buffer 生产/消费指针
    • 信号量、barrier、eventfd 类轻量同步
  2. 多设备协同
    • GPU↔GPU、NIC↔GPU、FPGA↔GPU 更新共享计数器
    • HSA / ROCm 里用 64-bit FetchAdd 更新 dispatch id,用 CAS 做无锁同步
  3. 分布式 / RDMA 场景
    • NIC 对主机内存里的统计计数器做 FetchAdd
    • 多 writer 场景避免“读-改-写”被插空
  4. IO 设备自己做无锁算法
    • 原来要靠“主机 CPU 用 LOCK 指令”或“设备读回→算→写回(非原子)”
    • AtomicOp 把 RMW 压成一笔 TLP,由 Completer(RC/内存控制器)原子完成

一句话:只要“多个 PCIe 设备 / CPU / 加速器”并发访问同一块内存里的控制变量、指针、计数器、信号量,又不想靠锁和往返软件协调,就可能用 PCIe AtomicOp。


二、NVMe 设备是否需要“发起”PCIe 原子操作?

普通 NVMe SSD:通常不需要,也不是必须

标准 NVMe 模型是:

  • 主机写Submission Queue (SQ)
  • 主机写Doorbell MMIO
  • 设备 DMA 读 SQ 命令
  • 设备 DMA 读写数据
  • 设备写Completion Queue (CQ)
  • 设备发 MSI-X 中断

这里面:

  • SQ/CQ 本来就是“单写者”结构:
    • SQ:主机写,设备读
    • CQ:设备写,主机读
  • Doorbell 是普通 MMIO 写
  • 主机和设备之间不需要用 PCIe CAS/FetchAdd 来抢同一变量

所以传统 NVMe SSD 不需要作为 AtomicOp Requester 去更新主机内存。


但有些“高级 NVMe / 类 NVMe 设备”可能会用

以下情况 NVMe 控制器可能发起 PCIe AtomicOp:

  1. NVMe 用 Host Memory Buffer (HMB) 放 FTL/元数据,并且多控制器/多函数共享
    • 多函数 SSD、SR-IOV NVMe
    • 多个 controller 更新同一块主机内存里的队列/引用计数/锁变量
    • 可以用 FetchAdd/CAS 避免来回加锁
  2. NVMe 支持 Shared Queue / 多 host 多 controller 架构
    • 多 port、multi-controller namespace
    • 设备内部多个核更新主机侧共享队列头尾
  3. NVMe 做 GPU/NIC 协同、计算存储、CXL/PCIe 共享内存编程
    • 比如“存储设备同时是加速器”
    • 要在主机内存里更新信号量、完成计数、task id
  4. 厂商私有扩展
    • 有些 SSD 控制器用 AtomicOp 更新主机内存里的统计/telemetry/IO 调度结构
    • 但这不是 NVMe base spec 的硬性要求

三、NVMe 的“原子性”更多靠这些,而不是 PCIe AtomicOp

NVMe 自己谈的 atomic 主要是:

  • Atomic Write Unit (AWUN / NAWUN)
  • Atomic Write Unit Power Fail (AWUPF / NAWUPF)
  • Atomic Compare & Write(可选)
  • Reservation / Namespace locking
  • 控制器内部保证多命令、掉电、FTL 映射更新的一致性

这些是“写盘原子性”,解决 partial write / torn write,和 PCIe FetchAdd/CAS 不是一回事。


四、结论

  • PCIe AtomicOp 场景:GPU/NIC/DPU/FPGA 对主机或对端内存做无锁同步、队列指针、计数器、信号量。
  • 普通 NVMe SSD:一般不发起​ PCIe AtomicOp;它用 MMIO doorbell + DMA + 单写者队列模型就够了。
  • 高级 NVMe(HMB、SR-IOV、multi-controller、计算存储):可能会用​ PCIe AtomicOp,但不是 NVMe 基本模型必需。
  • 别把NVMe atomic write​ 和PCIe AtomicOp​ 混为一谈。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 15:59:40

本体增强LLM标准化解决方案

本体增强LLM标准化解决方案 ——基于 Protg 本体建模的企业级 AI 知识管理落地方案 版本:V1.0(初稿)日期:2026 年 9 月 目录 一、方案概述二、核心架构设计三、核心落地流程四、窗口期风险管控机制五、分步落地建议六、总结 一…

作者头像 李华
网站建设 2026/10/1 15:59:20

Live-build方法构建debian和ubuntu

一、构建和说明 Live-build 是 Debian/Ubuntu 官方原生维护的标准镜像构建工具,整体非常靠谱‌,是目前构建自定义 Debian/Ubuntu Live 系统、嵌入式根文件系统和定制发行版的主流工业级方案。它的可靠性经过了十多年社区验证,Debian 官方的 …

作者头像 李华
网站建设 2026/10/1 15:59:20

没有钣金参数的STEP模型怎么看展开?快速做钣金DFM工艺检查

键词:STEP钣金展开、无参数钣金审图、钣金DFM工艺检查、钣金折弯缺陷检测、在线看钣金展开做钣金设计、机柜机箱非标设计、钣金厂工艺审核,大家经常遇到一个棘手问题:客户只发 STEP/IGS通用模型,没有原始钣金参数、没有展开图纸、…

作者头像 李华
网站建设 2026/10/1 15:58:29

VASP与Linux入门:从命令行到MgO结构优化实操

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 15:58:03

华为metaERP 政府预算/财政拨款/国际援助/基金场景里,Fusion XCC 的关键不是“建一个政府汇率表”,而是:新建一个“预算专用 Conversion Rate Type” → 维护 D

政府预算/财政拨款/国际援助/基金场景里,Fusion XCC 的关键不是“建一个政府汇率表”,而是:新建一个“预算专用 Conversion Rate Type” → 维护 Daily/Period Rates → 把它挂到 Government Control Budget / Grant Financial Plan Type 上 …

作者头像 李华
网站建设 2026/10/1 15:57:40

2026 人才盘点怎么做落地?衡识人才测评配套实施方案

一、为什么你的年度人才盘点正在变成“过期报告”2026年的人才管理环境里,一个变化正在加速发生。根据行业调研数据,已有超过38%的500人以上企业将人才盘点频率提升到季度甚至月度,而2023年这个比例仅为12%。中大型企业平均每年发生3.2次组织…

作者头像 李华