文章目录
1 背景
随着AI时代的爆发,在数据中心对高性能数据通信需求极大激发,尤其是随着2019 Mellanox被NVIDIA收购后,NVIDIA进一步结合DPU和GPU的战略布局越来越强烈。DOCA之于DPU,就相当于CUDA之于GPU。2007年NVIDIA发布CUDA架构,现在生态壁垒之高,可想NVIDIA在DPU上的雄心。本文是针对NVIDIA在DPU上的软件框架DOCA的一个面面观,争取通过本文,看看DOCA是什么?他的三件套?以及背后软件定义硬件加速的理解和对NVIDIA构建DPU生态有一个体感和概念上的认识。更多关于DOCA的文章后期逐渐更新。
2 要点
- DOCA: Data Center-on-a-Chip Architecture,片上数据中心架构。片上的表层意思就是将数据中心放到一个芯片上,代表NVIDIA对数据中心的心得一种架构。主要是针对DPU提出的一种架构概念。是NVIDIA在DPU生态上的布局,DOCA之于DPU,就相当于CUDA之于GPU。2007年NVIDIA发布CUDA架构,现在生态壁垒之高,可想NVIDIA在DPU上的雄心。本质是一种架构。软件定义数据中心的架构。
- DOCA SDK:是2021年NVIDIA 发布的 NVIDIA DOCA的SDK(软件开发工具),目的是为开发人员提供了一种对 BlueField DPU 进行编程的简单方法。并且兼容。 实际就是在HOST上和DPU上运行的软件框架。分为DOCA-Host 软件包和BlueField DPU软件包,前者为主机提供NV网卡和DPU所有必需的库和驱动程序,后者提供在BlueField DPU的包。
- 传统的软件定义数据中心方法会带来巨大的性能负担,很容易消耗 30% 或更多的服务器 CPU 内核。为了解决这个问题,NVIDIA BlueField 数据处理单元 (DPU) 卸载、加速和隔离数据中心基础设施,同时实现突破性的网络、安全性和存储性能。DPU对应的软件框架便是DOCA SDK。
3 DOCA的几个视角查看
3.1 在纯BlueField DPU上的视角看DOCA
下图是BlueField DPU上的架构图,主要分成了3层, BPS+DOCA+APPS。
其中BPS是平台软件,就是标准系统的三件套(ATF+Bootloader+OS)外加DPU上的网卡的固件。
3.1.1 先看BPS层
BPS层其实就是一个标准的服务器的底层软件架构:
ATF是arm trust firmware是 ARM多级启动流程中的EL1启动的bootrom。 然后拉起UEFI的bootloader,然后bootloader拉起OS。
其中Customer OS和BlueField OS是二选一,可以使用官方提供的OS(默认是Ubuntu)也包括有Centos等多个,也可以是用户自定义的OS,官方提供了bfb-build工具来编译os,比如国产麒麟系统都可以移植上去,他的本质是一个arm芯片的服务器,只是需要搭配一些驱动程序。
另外底层还有其他几个Firmware是因为DPU还有其他几个硬件,比如BF2上实际包含了ConnectX6, BF3上的CX7,BF4上的CX8。还有就是BlueField的DPU有BMC,有的是板载的,有的是集成的,BMC也有相关的芯片。比如BF2使用的是Aspeed的2500的BMC芯片,那么就需要这个2500的Firmware,NV官网也提供了BMC的固件,可以通过bfb升级,值得注意的是BMC的版本需要和NIC版本这些配合。上面提到的EROT是External Root of Trust,是NVIDIA提供的一个安全flash和启动机制的硬件单元,是BMC的一部分。
3.1.2 再看APPs层
APPs层其实就是基于DOCA构建的用户态程序,值得注意的是,这个图中是运行在DPU上的。这里就不详细说明,后期会更新关于DOCA的各种应用。
3.1.3 最后来看DOCA层
可以看到DOCA层是在OS上的一层,他提供了一种软件抽象,将硬件和OS的差异屏蔽,提供一套统一的框架,让应用层可以以一种类似服务或者接口或者库的方式,来构建应用。DOCA的功能结合DPU的硬件能力,在不断地迭代,可以在官网上看到DOCA版本迭代非常快。
可以看到这张架构图中DOCA包括了最上层对外提供的服务,中间层为支撑服务提供的库libs,以及为了支撑库和硬件结合的Drivers。由此可以看到DOCA本质是一个软件定义,硬件加速的典范,并且把这个硬件加速后的硬件设备又用软件框架定义出来给用户态使用,并构建出生态。