2. Marvell DPU硬件架构解析

Marvell OCTEON系列DPU(如OCTEON 10 DPU、OCTEON TX2等)是面向数据中心基础设施卸载的SoC级芯片,其硬件架构并非简单的"CPU+网卡"组合,而是围绕通用算力、网络数据面、PCIe主机接口、片上内存层次、专用加速引擎五条主线协同设计。理解这套架构,是后续做NVMe-oF目标端卸载、存储虚拟化与线速加解密的前提。本节从硬件模块出发,逐层拆解各单元的职责与相互关系。

一、算力单元:Arm核与专用数据面核的分工

OCTEON 10 DPU采用Arm Neoverse N2核心作为通用算力单元,典型配置为8~24核,主频约2.0~2.5GHz,负责控制面任务:NVMe-oF会话管理、命名空间映射、配置下发、异常处理与日志。与之并列的是Marvell自研的可编程数据面处理流水线(在OCTEON TX2中体现为NITROX与可编程包处理器,在OCTEON 10中进一步整合为DPU数据面引擎),它不执行通用指令流,而是以流水线方式处理报文解析、流表匹配、转发与卸载动作。

这种"通用核管控制、数据面核管线速转发"的分工,决定了编程模型:控制面用C/Linux用户态程序,数据面通过Marvell提供的SDK(如DPDK、DOCA风格API或厂商专用配置接口)下发流规则。实际工程中,一个NVMe-oF目标端通常把TCP/ RoCEv2连接建立、队列管理放在Arm核,把NVMe命令解析、数据搬移、加解密卸载到数据面与加速引擎。

二、网络接口与PCIe拓扑

网络侧,OCTEON 10 DPU集成多端口以太网MAC,支持25G/50G/100G甚至200G速率,可配置为独立端口或链路聚合,并支持RoCEv2、PFC、ECN等无损以太网特性——这是NVMe-oF over RoCEv2的关键。主机侧,DPU通过PCIe Gen4/Gen5 x16上行接口连接服务器CPU,对主机呈现为一块多功能PCIe设备:既提供网络功能(如virtio-net或SR-IOV VF),也提供存储功能(NVMe控制器或NVMe-oF发起端/目标端接口)。

PCIe拓扑上,DPU内部通常包含PCIe Switch或Root Complex逻辑,把上行主机链路与内部各功能块(网络MAC、加速引擎、DMA引擎)连接起来。主机看到的可能是多个PF/VF,通过SR-IOV把队列直接映射给虚拟机或容器,从而绕过主机内核网络栈,降低NVMe-oF数据路径延迟。

OCTEON DPU 硬件架构与数据路径 主机 / 服务器 CPU NVMe-oF 发起端 或 本地 NVMe 驱动 PF / VF (SR-IOV) PCIe Gen4/5 x16 Marvell OCTEON DPU SoC PCIe Switch / Root Complex 逻辑 上行主机链路 · 内部功能块互联 · SR-IOV 队列映射 Arm Neoverse N2 算力单元 8~24 核 · 2.0~2.5GHz 控制面:会话管理 / 命名空间映射 配置下发 / 异常处理 / 日志 可编程数据面流水线 报文解析 · 流表匹配 NVMe 命令解析 · 转发卸载 线速处理,不执行通用指令流 片上内存层次 L1/L2 Cache → 片上 SRAM / LLC → DDR4/DDR5 控制器 数据缓冲队列 · 描述符环 · 元数据存储 为 DMA 与加速引擎提供低延迟访问 存储与安全加速引擎 DMA 引擎 · 压缩/解压 · AES-XTS 加解密 · CRC/校验 · NVMe-oF 卸载 与数据面流水线协同,释放 Arm 核算力 以太网接口 25G / 50G / 100G / 200G RoCEv2 · PFC · ECN 无损以太网支持 NVMe-oF over RoCEv2 网络数据 NVMe-oF 数据路径:网络 → 数据面 → 加速引擎 → 内存 → PCIe 主机

三、内存层次:从Cache到DDR的缓冲设计

DPU的内存层次直接决定NVMe-oF数据路径的吞吐与延迟。最靠近计算单元的是L1/L2 Cache,用于指令与热数据;再往下是片上SRAM或末级缓存(LLC),常被用作数据缓冲队列与描述符环的存放区——网络报文到达后先写入片上缓冲,由DMA引擎搬运,避免频繁访问外部DDR。最外层是DDR4/DDR5控制器,容量可达数十GB,用于存放NVMe命名空间元数据、会话状态、大块数据暂存。

工程上需要关注的是:NVMe-oF目标端的数据缓冲若全部落在DDR,会引入额外访问延迟;合理做法是把小IO的描述符与命令队列放在片上SRAM,大块数据传输才走DDR。OCTEON DPU的硬件队列管理机制允许把队列基址配置到不同内存区域,这需要在驱动初始化时通过寄存器或SDK接口设定。

四、存储加速相关硬件模块

存储加速是OCTEON DPU的核心价值所在,主要包含四类硬件模块:

  • DMA引擎:在主机内存、DPU片上缓冲、网络接口之间搬运数据,支持分散-聚集(Scatter-Gather),是NVMe-oF数据路径的搬运主力。
  • 加解密引擎:支持AES-XTS、AES-GCM等模式,用于NVMe-oF的inline加密或自加密盘场景,吞吐可达线速,避免占用Arm核。
  • 压缩/解压引擎:支持Deflate、LZ4等算法,用于存储压缩卸载,降低后端存储容量与网络带宽压力。
  • NVMe-oF卸载逻辑:在数据面流水线中实现NVMe命令的解析、队列配对、PDU封装/解封装,把原本由主机CPU处理的协议栈下沉到DPU。
在实际部署中,一个典型的NVMe-oF目标端配置示例(教学假设参数):Arm核运行目标端控制程序,监听4420端口;数据面配置RoCEv2流规则,把目的端口4420的流量引导到NVMe-oF卸载路径;DMA引擎把接收到的写命令数据直接搬入DDR中的命名空间缓冲区;AES-XTS引擎对数据做加密后写入后端SSD。整个过程中,主机CPU只负责发起连接与少量控制交互,数据路径完全由DPU硬件承担。

五、模块协同与工程关注点

把上述模块串起来看,OCTEON DPU的数据路径可以概括为:网络接口接收RoCEv2报文 → 数据面流水线解析NVMe-oF PDU → DMA引擎搬运数据 → 加解密/压缩引擎处理 → 内存层次缓冲 → PCIe接口交付主机或写入后端存储。控制路径则由Arm核通过PCIe与主机驱动交互,完成队列建立、命名空间发现与错误恢复。

工程实践中需要重点验证三件事:一是PCIe链路是否协商到预期速率与宽度(可通过lspci -vv查看LnkSta);二是RoCEv2的PFC/ECN配置是否与交换机一致,否则NVMe-oF会出现重传与性能抖动;三是加速引擎的队列深度与DMA描述符是否匹配,避免出现引擎空转或缓冲溢出。这些检查点直接决定后续章节中NVMe-oF卸载能否达到线速。

注意:不同OCTEON型号(CN9670、CN106xx等)在核数、网络端口速率、加速引擎种类上存在差异,实际配置前应以对应型号的硬件手册与SDK版本为准,不可直接套用其他型号的寄存器地址或队列数量。