3. Marvell OCTEON/DPU硬件架构解析
Marvell OCTEON系列(含OCTEON TX2、OCTEON 10以及基于其演进的DPU产品)是云数据中心网络卸载的核心硬件平台。理解其硬件架构,关键不是记住型号参数,而是建立一张“资源地图”:哪些计算单元、哪些加速引擎、哪些内存层级、哪些I/O通道,分别适合承接哪一类卸载任务。本节围绕多核处理器、网络接口、加速引擎、内存层次、PCIe与CXL接口五个维度展开,并给出硬件资源到卸载任务的映射方法。
一、多核处理器:任务并行的基础单元
OCTEON采用ARMv8/v9多核架构,典型配置从8核到48核不等,核与核之间通过一致性互连(Coherent Interconnect)共享缓存一致性域。每个核通常配备私有L1指令/数据缓存(如32KB+32KB)和私有L2缓存(如256KB~1MB),多核共享的L3缓存(Last Level Cache)容量可达数十MB。这种层次结构决定了:小包转发、流表查找等高频短任务适合绑定到固定核并利用L1/L2局部性;而需要大状态表的任务(如连接跟踪)则更依赖L3和外部内存。
在卸载任务映射中,常见的做法是采用“核分组”策略:将若干核划分为控制面核、数据面核和加速引擎管理核。例如,在24核配置下,可分配2核处理控制面(配置下发、统计上报),18核处理数据面(报文解析、转发、加解密),4核专职管理加速引擎队列与DMA描述符回收。核间通过无锁环形队列或硬件队列传递描述符,避免频繁加锁带来的缓存颠簸。
二、网络接口与加速引擎:卸载的执行主体
OCTEON/DPU通常集成多个以太网MAC/PCS模块,支持25G/50G/100G/200G端口,并配合Packet Input Unit(PIU)和Packet Output Unit(POU)完成报文收发。PIU负责从MAC接收报文、做初步解析并分发到指定核或加速引擎的队列;POU则负责发送调度与整形。这一“收—分—处理—发”的路径,是网络卸载任务的主干。
加速引擎是OCTEON区别于通用多核处理器的关键。典型引擎包括:
- 加密引擎(CPT):支持IPsec、TLS、MACsec的对称加解密与认证,适合卸载安全网关、VPN网关任务;
- 正则/模式匹配引擎(REE):用于DPI、入侵检测中的特征匹配;
- 压缩/解压引擎(ZIP):用于存储卸载、日志压缩;
- DMA引擎:负责主机内存与DPU内存之间的数据搬运,是PCIe/CXL数据通路的核心。
这些引擎通过专用队列与核交互,核只负责提交描述符和回收完成事件,从而把大量重复计算从通用核上卸载出去。
三、内存层次与PCIe/CXL接口
内存层次直接决定卸载任务的吞吐上限。OCTEON/DPU内部通常集成DDR4/DDR5控制器,支持多通道本地内存,容量从8GB到64GB。本地内存用于存放流表、会话状态、密钥材料和描述符环。核访问本地内存的延迟远低于访问主机内存,因此高频查表任务应尽量把状态放在本地内存。
PCIe接口是DPU与主机CPU通信的主通道。OCTEON DPU通常支持PCIe Gen5 x16,提供约64GB/s双向带宽。主机通过PCIe BAR空间映射DPU的寄存器、队列和门铃(Doorbell),DPU通过DMA引擎读写主机内存。CXL接口则在PCIe物理层之上增加了缓存一致性和内存语义,使DPU能够以更细粒度访问主机内存,甚至让主机直接访问DPU的本地内存。对于卸载任务而言,CXL的价值在于减少数据拷贝:例如,主机上的应用缓冲区可以被DPU直接读写,而不必先复制到DPU本地内存。
四、硬件资源到卸载任务的映射方法
把硬件资源映射到卸载任务,可以按以下判断顺序进行:
- 判断任务类型:是报文处理、安全加解密、模式匹配、压缩,还是主机内存搬运?不同类型对应不同引擎。
- 判断数据位置:数据在DPU本地内存、主机内存,还是网络接口缓冲区?这决定使用DMA还是直接访问。
- 判断延迟与吞吐要求:高频小包任务优先绑定核与L1/L2;大流量顺序任务优先走加速引擎与DMA。
- 判断状态规模:小状态表放L3或本地内存;大状态表放DDR;跨主机共享状态考虑CXL。
- 分配核与队列:为每个卸载任务分配独立的核组和队列,避免与其它任务争抢缓存和带宽。
示例映射:假设一台OCTEON 10 DPU配置24核、32GB DDR5、双100G端口、PCIe Gen5 x16。要卸载IPsec网关任务,可分配:2核控制面负责IKE协商与SA下发;16核数据面负责报文解析、流表查找和CPT描述符提交;4核管理CPT队列与DMA回收;SA表放本地DDR5;加密后的报文通过POU从100G端口发出。主机侧通过PCIe BAR配置SA和读取统计。这一映射中,CPT承担加解密,核只做调度和状态管理,DMA负责主机与DPU之间的SA同步。
五、资源映射的常见误区
第一个误区是把所有任务都放在通用核上跑,忽略加速引擎。通用核适合控制逻辑和复杂分支,但加解密、正则匹配这类规则化计算交给CPT/REE后,核占用可显著下降。第二个误区是忽视内存层次,把大表放在主机内存却期望低延迟查表,结果每次查表都走PCIe,延迟和带宽都成为瓶颈。第三个误区是核与队列绑定不当,多个任务共享同一队列导致缓存频繁失效。合理的做法是:每个卸载任务有独立的队列和核组,状态尽量靠近计算单元,主机交互尽量批量化和异步化。
理解OCTEON/DPU硬件架构的最终目的,是让每一类卸载任务都能找到最合适的执行单元和数据通路。多核负责灵活调度,加速引擎负责规则化计算,内存层次决定状态放置位置,PCIe/CXL决定主机与DPU的协作方式。把这四者对齐,才能把硬件能力真正转化为卸载收益。