
AMD于2022年以19亿美元收购了初创公司Pensando之后,获得了DPU技术,当时的意义在于强化了AMD的数据中心布局,毕竟老对手Intel和Nvidia都有对应产品。而随着AI浪潮带来的计算规模的进一步扩大,AMD也针对这类型业务演进了自己的CPU、GPU、DPU产品。

AMD最新的DPU有两款:PensandoPollara 400和 Pensando Salina DPU。
Pollara 400是全球首款符合UEC标准的AI网卡,可降低性能调优的复杂性,并有助于缩短生产时间。而Pensando Salina DPU可为AI系统提供高性能的前端网络。


下面我们来看一下两款DPU的详细参数和功能吧。
1.Pensando Pollara 400
Pollara 400是一款半高半长的PCIe Gen5.0 x16卡,端口有 1 x 400G、 2 x 200G、4 x 100G、4 x 50G、4 x 25G这几种配置方法。
它通过完全可编程的远程直接内存访问(RDMA)传输和基于硬件的拥塞控制来优化后端网络。这种可编程的传输和拥塞控制系统能够实现精确的拥塞管理,有助于确保人工智能工作负载能够以最快的速度完成。
AMD 的创新体现在其数据路径驱动的拥塞控制上,这种拥塞控制集成在可编程传输中,而不依赖于单独的中央处理器(CPU)。
它的详细软件功能如下:
(1)增强的观测性:延时指标、丢包统计数据、遥测阈值警报、内置硬件IPsec加解密、AES - GCM 128/256 位密钥
(2)存储加速:RDMA、RoCEv2、UEC ready RDMA
(3)优化的AI组网:可编程的拥塞控制、GPU Direct、路径感知拥塞避免、智能数据包分发(根据网络的实时状态,像链路的拥塞程度、带宽利用情况等因素,动态且智能地选择最优传输路径,把数据包分散开进行发送)、有序交付&丢包重传
(4)可管理性、UEC Ready、多租户等
2.Pensando Salina DPU
Salina是一款全高8英寸长的PCIe Gen5.0 x16卡,可支持两个主机。端口可配置成2x 400GE、4 x 200GE、4 x 100GE、4 x 50GE、4 x 25GE、NRZ(10/25G)、PAM4(50/100/200/400G)、Quad 200/100/50/25GE这几种模式。在在 L2/L3 网络上支持 RoCE V1/V2 版本。
它能够满足人工智能工作负载不断增长的需求,为人工智能前端网络提供关键的软件定义网络(SDN)、安全、存储卸载和遥测服务。
它的详细软件功能如下:
(1)增强的可观测性:基于流的数据包遥测、有状态连接统计信息、延迟指标、丢包统计、会话阈值警报、ERSPAN(双向)、NetFlow/IPFIX
(2)安全性:有状态防火墙、连接跟踪(L4 层)、安全组、无状态和反射访问控制列表(ACLs)、VPN 终止(IPsec)、网络地址转换(NAT)、端口地址转换(PAT)、TLS/DTLS 加密、TLS 代理
(3)加密功能:批量加密、公钥加密(PKE)、认证、压缩与解压缩(LZRW1-A)、内联 IPsec 和 DTLS、可通过可编程方式链式调用安全哈希和CRC 模块
(4)云网络:路由(BGP)、等价多路径(ECMP)、VPN 覆盖网络、灵活封装(VxLAN、NVGRE、Geneve、IP-in-IP、GRE)、负载均衡、多租户
(5)存储加速:RDMA、RoCEv2、支持 UEC 的 RDMA、NVMe 虚拟化、基于 RDMA 或 TCP 传输的 NVMe-oF、静态数据加密(AES-CTS)、压缩、重删:支持 SHA2 128/256/512、CRC32、Azure CRC64、Adler32 和 M-Adler32、校验和加速(CRC64/32)
平台支持P4、C++、C等高级编程语言开发部署新功能和服务。
实际上,AMD的DPU架构也很有特点。许多DPU是使用通用的CPU内核作为提供服务的主要元素,再辅以硬件加速器提供各种加速卸载功能:

而还有另外一种更先进的架构能提供更好的性能且更灵活。它有可编程的网络流水线、硬件加速器和通用CPU 内核。

AMD Pensado DPU采用的就是第二种架构方式。把Pensado芯片打开看,除了有通用的Arm NOC和PenAccel单元之外,还有非常多的MPU单元(P4 可编程架构的匹配处理单元)。
通用 Arm 内核主要用于控制平面和异常数据包处理,起了一个辅助作用。
而MPU才是关键核心组件,芯片内软件在此执行,并提供加速(快速路径)服务。
系统内存同时连接到通用内核和特定领域的 MPU。
这使得通常由通用内核处理的功能(如连接跟踪)可以在 MPU 上实现,并直接在流水线中执行。
P4 语言对流水线进行编程,流水线在与数据包缓冲区相连的元件中运行。
一个流水线可以包含多个阶段,每个阶段可能提供一种或多种功能。每个阶段可以在不同的MPU 上并行运行,并且当数据包在流水线中传输时,它们无需等待可能正在为不同阶段提供服务的时钟周期。
此外,所有MPU 都可以访问相同的内存系统,因此从一个阶段传递到下一个阶段的数据包无需复制到新的内存位置。
通过这种架构,AMD Pensando Elba DPU 在流水线处理方面,相比仅使用 Arm 内核能够实现更高的性能和更强的扩展性。并具有完全可编程性。
