找回密码
 注册
关于网站域名变更的通知
查看: 183|回复: 2
打印 上一主题 下一主题

专⽤数据处理器(DPU)技术⽩⽪书4:DPU软件栈五层模型

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-16 09:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
1. 软件栈开发面临的挑战% c, w. _- \7 d6 t7 Q
DSA架构和XPU芯片的兴盛在给解决算力问题带来新机遇的同时,也给软硬件开发带来了新的挑战。与传统的以CPU为核心的应用开发模式相比,异构计算的开发难度较高。异构计算的一个特点是“异构”,即缺少“通用性”,需要开发人员同时深入了解多种处理器的开发和调优方式,给软硬件开发带来了更高的复杂度。异构计算的另一个特点是“软硬协作”,它需要开发人员将软件硬件作为一个整体来架构和开发,给当下计算生态中软硬界限分明、技术栈分层的开发模式带来颠覆性挑战,尤其是当DPU兴起之后的“多PU“共存(CPU+DPU+GPU/XPU)时代,如何协同调度好各个处理器编程框架(如GPU的CUDA、FPGA的OpenCL/HLS等),使其发挥最大效用,并且构建一个面向开发人员友好的协同软件开发生态,是迫切需要解决的问题。针对这个问题,根据职责分层、按功能抽象的思路,提出一个针对DPU芯片应用场景的异构计算五层架构模型。该模型定义了在异构计算场景下的通用 的开发架构模式,以此来降低包括DPU芯片在内的异构计算应用研发的难度,提高开发、维护和迭代效率。2 `! d4 z% K) A
7 u! L" _/ D" ^+ [  @% T# }/ O
2. DPU异构计算架构五层开发模型* \/ {  y2 M: O
一般说来,异构计算的核心目的是解决特定应用场景下算力不足的问题,并且大幅度提升整体系统的计算性能。在整体架构上,它的分层逻辑从应用场景出发,通过上层的需求来定义下层的功能,而每一层是对特定功能的抽象与封装。在定义每一层功能时,要达到以下几个目标:
8 e+ w* @, ^7 ]) I5 c% F& @• 各层职责单一
! O4 Z* C* \/ K, v/ |• 层间边界清晰
: t6 I: e" j: u  \7 i. l! P• 层内功能实现独立
. E: {: g6 @( I7 h. w! \• 灵活易扩展
: W+ c  b0 q5 K* k* H基于上述目标,将一个异构计算的系统抽象为五层(如图4-1所示),自下而上分别是:
0 y9 \" @/ [( d" D) R* v1)DSA设备层(DSA device Layer),- B4 n$ n' u6 D. s
2)DSA操作层 (DSA Operating Layer),  t$ x* L# d, K7 K2 M) L3 `
3)计算引擎层(Scheduling Operating Layer),( o+ a( Z( `& q7 H" e6 E& W  T
4)应用服务层(APPlication Service Layer)/ ?) r% k% I2 G9 P' n. Q
5)业务开发层 (Business Development Layer),详述如下:8 f$ x/ C9 X/ m) ^5 j# }* N

! A5 ?+ b  L3 y" z& }3 Z" d2.1.DSA设备层
) G% q) }" K7 g- z$ T/ E! [DSA设备层代表的是执行异构计算的DSA处理器以及集成了该处理器的硬件设备,例如,以DPU或GPU为处理器的异构计算设备。异构计算设备需要具备以下两个核心能力:& e* Z8 P2 ^2 p$ k. B' q% h
1)提供支持专用计算操作的指令集(Instruction Set),
5 F8 L: Y( ~8 A! M0 P2)CPU或其他DSA设备的标准通信接口,如PCIe数据传输标准。
2 w" R: H# h9 u* R) m# h2 \/ I% J% o, r0 R' |. O3 B
2.2. DSA操作层
8 w$ O* X8 p, U7 b! L2 o1 b4 U2 TDSA操作层是对DSA处理器的指令集的管理以及基础开发平台的整合,该层完成了对硬件资源的抽象,从而使上层软件对底层设备透明;DSA操作层是对DSA设备层计算设备的抽象和计算资源的封装,是软件与硬件、逻辑与物理 的边界。它基于如DPU芯片等DSA处理器提供的指令集,以更加抽象和编程友 好的方式对上层提供了异构计算开发和访问的软件接口、以及设备监控管理的接口。该层内部有四个必要的模块,分别是设备驱动器,指令集管理器,资源访问接口,开发和管理平台。   \1 x( w3 Q" ]7 d! D" c# ]
• 设备驱动器:设备驱动器是硬件设备的软件抽象,它基于操作系统标准的驱动框架及PCIe协议,实现了对计算设备的物理访问,主要包括设备处理器的指令执行和设备存储的读写。 2 l+ u; j8 Z& x
• 指令集管理器:指令管理器的作用是对计算设备所提供的指令集进行统一管理,通过对指令集的封装及组合,提供更加友好的编程接口。
' D; \  t  w) Z8 K• 资源访问接口:基于设备驱动器和指令集管理器的功能,该模块完成对整个计算资源访问的抽象和封装,它以编程接口的方式对上层提供资源访问 入口,服务于上层计算逻辑和控制逻辑的执行。
$ R& y) A) G$ H/ g• 开发和管理平台:除了上述运行时所需的能力外,还需要针对开发人员提供友好的编程工具,如指令集编译工具、监控管理工具、日志工具、异构计算卡模拟器等。) g# P- I/ v4 u7 Y+ a9 A( R+ M
2.3.计算引擎层
7 q0 K9 |% ?0 V. Z计算引擎层是对计算逻辑的封装,为上层提供通用的计算能力。与DSA操作层的对计算资源封装不同,计算引擎层是对计算逻辑的封装,它基于DSA操作层提供的资源访问接口,根据上层应用层软件对算力的需求,提供了可复用的算子集合及执行接口。( X1 w: A( p# g% j4 u) ?) ^' o
2.4. 应用服务层
6 \: C4 @# K$ k2 f应用服务层是数据处理的应用服务软件,也是算力的需求侧。应用服务层代表具有通用功能的软件系统,这些软件系统可以利用计算引擎提供的算子进行异构计算,从而达到计算性能提升的目的。常见的应用层软件系统有分布式计算领域的Spark, Flink, Hadoop;数据库领域的PostgreSQL, MySQL;分布式网络中的gPRC,Network Gateway,Nginx;以及存储服务中的Ceph等等,基本上 通用服务型的系统都属于该层的范畴。
) D7 ]4 D: Z  z1 @6 H% G; P2.5. 业务开发层. G9 A  b- T* z& C" K9 C8 `
业务开发层是在某特定领域的业务系统。业务开发层是最贴近实际业务场景的软件系统,通常它是针对某个特定行业的具体业务需求定制的软件系统,如金融行业的交易系统,互联网行业的数据分析系统等等。整个异构计算架构本质上就是解决业务层的性能瓶颈问题,所以在实际开发过程中,应该从业务端出发,寻找要解决的根本问题,然后驱动整个异构系统的构建。同时,整体架构也要保证底层构建对具体的业务系统完全透明,达到对各行业业务软件系统的无缝支撑和业务逻辑开发的隔离。$ M% H' f" q! M$ n  N' G

5 x+ Q; r/ Q# L# f# `, k3. 典型软件框架案例8 s5 Q& b0 n& Q# ~8 ]7 q+ o
3.1. NVIDIA DOCA软件框架3 j. Q% h  P4 d3 [- l9 i2 l
1、设计⽬的
, F% H) X: }8 T* hNVIDIA BlueField DPU的核心目的是解决数据中心中基于CPU计算的基础设施的算力问题,主要涉及网络、存储、安全及基础设施管理这个几个方面。而DOCA是为了将BlueField DPU提供的硬件能力做软件抽象和封装,以SDK Library的形式提供友好的可编程接口,提高应用开发的效率。0 m! d* F1 U3 o% F; H- V1 \/ S
2、技术细节
5 u, V4 ]6 a1 A) |' x7 i7 q. e. lDOCA架构如图4-2所示,DOCA有三个模块,分别是:& c3 r' Z' k; C& H5 ^/ k
(1)DOCA drivers: 是对DPU硬件资源的低层次封装,其提供的low-level API是对硬件卸载能力的访问,主要包含网络卸载、安全卸载、存储卸载等算力的访问,同时支持DPDK, RDMA,Virtio-net(网络虚拟化),Virtio-blk(存储虚拟化),PCIe等通用能力。
. a" g' q5 N2 t$ g8 U+ }8 b(2)DOCA lIBS: 是基于DOCA drivers为上层应用封装的high-level API, 这些API是面向应用层所需的功能,例如面向网络应用的Flow,Data Integrity,UPF(User Plane Function), VNF(Network Functions Virtualization);面向存储应用的SPDK;面向安全应用的DPI(Deep Packet InSPECtion), Host intrOSPection等。" r+ @( ^; |% a' l6 }( v
(3)DOCA services: 封装了基础设施的控制和管理功能,如DPU设备的管理,SDN(Software-Defined Network)的控制接口, 存储管理,NetworkTelemetry等。9 D4 R2 M, S" q! m( P# e+ e

8 N( a2 T+ T3 ^. ^. S6 H3、功能分析
) z5 T- Y. {2 G% D, W: b从纵向的功能角度来看,DOCA SDK提供了网络加速、安全加速、存储加速和基础设施管理加速的功能,相关的技术细节如下:
( M. a- E9 c* l' P: I(1)网络加速SDK:支持ASAP2 (Accelerated Switching and Packet Processing) SDN、VirtIO、OVS (open virtual switching) 、P4 编程、RDMA。
  r2 a" W- ]  V  |* I: T8 I(2)安全加速SDK:支持Inline encryption、DPI (Deep Packet Inspection)、 TLS、IPSec。
, `  T1 }  I3 U" w1 O(3)存储加速SDK:支持SPDK、VirtIO、NVMe-oF、数据加解密和数据压缩等。7 U3 C4 p  y# k( `# Q
(4)基础设施管理加速SDK:支持DPU management、Traffic telemetry、Packet fiLTEring。
+ q& y3 k' w% A* J7 Z! v; {
$ ^9 Q* I7 v' l* ^; P3.2. Intel OneAPI软件框架" m) ~/ H9 a0 c, D# R0 c
(1)设计⽬的
9 o/ e0 T/ N6 XOneAPI设计的目的是通过实现一个跨平台,开放的,标准的通用编程模型及接口来提高在异构加速器架构下的开发效率。OneAPI本身并不提供DPU设备,而是构建一个软件框架来整合业界现有的异构计算设备11。
. u4 x# q- p8 P) C(2)技术细节& G* g' O  k9 b$ ]
OneAPI抽象出两层APIs,分为L0 (Low-level) API 和L1 (High-Level) API。其结构如图4-3所示。# t0 e) s$ T$ m1 ^. j! H$ g
1 W# J% {2 G/ m6 Q
L0 API: OneAPI 的L0 API整合并封装了业界流行的异构计算设备(如GPU,AI,FPGA等)及其软件框架(如CUDA,OpenCL),并提供统一的针对硬件资源访问的low-level API。这样,不同的硬件平台对上层应用开发来说是 透明的,从而起到了跨平台的作用。- T7 H% C0 N' E" E# E
L1 API:OneAPI的L1 API提供了一系列针对特定应用场景的High-level API,这些API主要服务于机器学习、数据分析、并行计算、视频处理等特定领域,有Deep Learning API, Data Science API, Data Analysis API,Multiple Thread API,video Processing API等。* B: Y8 ?$ w0 Q3 i( d: m7 s* h! D: i
0 u/ u) X+ T. a  H8 W

3 H1 J9 S" P/ U) G# V2 U

DPU-whitepaper-final-x.pdf

10.58 MB, 下载次数: 0, 下载积分: 威望 -5

该用户从未签到

2#
发表于 2022-6-16 10:07 | 只看该作者
这个不错啊,学习了,谢谢楼主慷慨分享

该用户从未签到

3#
发表于 2022-6-16 13:06 | 只看该作者
不错啊,学习了,谢谢楼主慷慨分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-20 19:38 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表