架构
Hardware Overview
l Arm cores – 针对控制路径、通用应用和单流性能进行了优化:
n 16 A78 Arm cores general-purpose processor
n Coherent Mesh architecture
n Last level cache (LLC)
n DDR5 memory subsystem
n Base OS and microservices
l Accelerated programmable pipeline-针对高性能数据包处理和高级数据包处理进行了优化:
n Programmable 64-128 packet processor
n Multi-staged, highly parallelized
n Flow-based classification and action engine
n RDMA, crypto, time-based scheduling
l Data-Path Accelerator(DPA)-针对io密集型应用、高插入率、网络流处理、设备仿真以及集群和DMA操作进行了优化:
n 16 hyper-threaded cores I/O and packet processor
n Real-time OS
DOCA framework
l DOCA framework包括DOCA主机软件包和BlueField Software Bundle:
n BlueField Software Bundle (BF-Bundle)是安装在BlueField Arm cores上的软件包;
n DOCA主机软件包包含不同的DOCA安装配置文件、驱动、lib;
l BlueField Software Bundle包括:
n DOCA runtime驱动程序和库;
n 操作系统;
n 平台软件(即固件和UEFI引导加载程序);
DOCA SDK Architecture
DOCA为可编程网络和数据处理提供了函数库以充分利用DPU的硬件加速引擎。DOCA软件框架构建在DOCA Core之上,并为函数库提供了统一的软件框架。
DOCA SDK不仅允许应用程序将加密、压缩等资源密集型任务卸载给硬件,还允许卸载与网络相关的任务,例如数据包采集和RDMA发送。DPU提供专用的硬件处理单元来执行这些任务。
Device System
DOCA Device System是对硬件处理单元的抽象,提供了以下方法:
l 发现可用的硬件加速单元;
l 查询硬件加速单元的能力和属性;
l 打开设备,申请硬件加速相关的资源;
如果有多个可用的设备,应用程序可以根据以下方法来选择:
l 拓扑结构,例如PCIe地址;
l 支持的能力,例如支持加密;
DOCA Core支持两种设备类型:
l local device-这是本地(host或DPU)真实的设备,可以是PF、VF或SF;
l representor device-local device的代表,总是在DPU端,相当于host端设备在DPU上的一个代理。
如下图所示,DPU连接到了host,host有一个PF和VF,主机端会有两个local device:pf0和pf0vf0,DPU端对应会有两个representor device,分别是hpf0和hpf0vf0,是一一映射关系,同时DPU本地还有两个local device:p0和p0s0。
Memory Management Subsystem
为了获得最佳的性能,SDK采用零拷贝技术和硬件进行数据传输,因此应用程序需要预先注册用于保存数据的内存。
MR:
l 定义用于保存数据的内存范围;
l 允许设备访问内存;
l 定义访问权限;
DOCA memory有如下组件:
l doca_buf-供硬件来解析使用的一种数据结构,描述了数据输入或输出的内存范围;
l doca_mmap-用于描述一段内存范围及其权限,doca_buf指向的是doca_mmap中的一段内存;
l doca_buf_inventory- doca_buf的pool,因为doca_buf的申请和释放很频繁,为了加速,所以设计了pool;
三者的关系如上图所示,doca_mmap描述了一段内存空间,关联了两个device,doca_buf_inventory中有两个doca_buf,分别指向了doca_mmap中的某段空间。
Execution Model
DOCA SDK实现了驱动硬件引擎的函数库,每个库都实现了处理特定任务的API,例如加解密。函数库使用context抽象了所有硬件操作的底层细节。由于上下文使用硬件引擎,因此它需要一个设备才能运行。该设备还将确定该上下文可以访问哪些缓冲区。context以task和event的形式提供硬件处理操作api。
l task:
n 应用程序准备好task相关参数;
n 应用程序提交任务,触发向相关硬件引擎发出请求;
n 一旦硬件处理完成,应用程序将以回调函数的形式收到一个completion;
l event:
n 应用程序注册事件,通知硬件事件发生时要上报;
n 每次硬件识别到事件发生时,应用程序将以回调函数的形式收到一个completion;
因为硬件处理是异步的,因此DOCA定义了一个对象Process Engine(PE),以便允许应用程序等待处理完成。
PE有两种模式等待completion:
l 繁忙等待/轮询模式——在这种情况下,应用程序将反复检查是否发生了completion;
l 通知驱动模式——在这种情况下,应用程序可以使用OS原语(例如,linux event fd)在completion发生时通知线程。
一旦completion发生,无论是由task还是event引起,相关的回调将作为PE方法的一部分被调用。
单个PE实例允许等待来自不同context的多个task/event。因此,应用程序可以为每个线程使用一个PE。
如下图所示,三个ctx使用了同一个device,每个ctx都有task或event被应用程序提交或注册,三个ctx都关联到了同一个PE,应用程序可以使用该PE同时等待所有completion。
DOCA Software Framework
NVIDIA DOCA™释放了NVIDIA®BlueField®网络平台的潜力。通过利用BlueField dpu和supernic的强大功能,DOCA可以快速创建应用程序和服务,从而卸载、加速和隔离数据中心工作负载。它允许开发人员创建具有零信任保护的软件定义、云原生、DPU和supernic加速服务,解决现代数据中心的性能和安全需求。DOCA-Host包括NVIDIA BlueField和ConnectX®设备所需的所有主机驱动程序和工具。
DOCA 和 BlueField 网络平台共同助力开发可提供突破性网络、安全和存储性能的应用程序。BlueField 将基础设施服务域与工作负载域隔离开来,从而显著提高应用程序和服务器的性能、安全性和效率,为开发者提供实现优化、安全、加速的数据中心和 AI 云所需的所有工具。
DOCA 软件由 SDK 和运行时(Runtime)环境组成。DOCA Runtime默认包含在 BlueField 网络平台中,具有用于在整个数据中心的数百或数千个 DPU 和 SuperNIC 上配置、部署和编排容器化服务的工具。DOCA SDK 提供行业标准的开放 API 和软件框架。该 SDK 支持一系列操作系统和发行版,并包括驱动程序、库、工具、文档和示例应用程序。
DOCA-Host 是用于主机安装的 DOCA 软件包,包含多个安装配置文件,以便更好的适应您的数据中心工作流程。DOCA-Host 为 NVIDIA 网络平台(包括 BlueField 和 ConnectX 设备)提供所需的接口。
SDK关键组件
l DOCA RDMA (远程直接内存访问) 加速 SDK:统一通信和协作(UCC)和统一通信(UCX)、RDMA verbs、GPUDirect;
l 网络加速 SDK:NVIDIA 加速交换和数据包处理(ASAP2)™软件定义网络(SDN)、仿真VirtIO、P4、用于5G技术的5T、Firefly时间同步;
l 安全加速 SDK:在线加密、App Shield运行时安全;
l 存储加速 SDK:存储仿真和虚拟化、加密和压缩;
l 数据路径加速(DPA) SDK:加速需要高性能访问NIC引擎的工作负载;
l 管理 SDK:部署、配置、服务编排;
l 行业标准 API:DPDK、SPDK、P4、Linux Netlink;
l 用户空间和内核;