HBM 配置和使用 - 2023.2 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文

部分算法与存储器绑定,并受到基于 DDR 的 Alveo 卡上可用的 77 Gb/s 带宽的限制。对于此类应用,可使用基于高带宽存储器 (HBM) 的 Alveo 卡,这些卡可提供高达 460 Gb/s 的存储器带宽。对于 Alveo 实现,在 FPGA 封装内整合了 2 个 16 层 HBMHBM2 规范)栈,并通过中介层连接到 FPGA 互连结构。双 HBM 栈的高层次示意图如下所示。

图 1. HBM 栈的高层次示意图

此实现可提供:

  • 16 GB HBM,其中有 512 MB 伪通道 (PC) 用于 Alveo U55C 加速器卡,如 Alveo U55C 数据中心加速器卡数据手册(DS978) 中所述
  • 总计 8 GB HBM,其中有 256 MB PC 用于 Alveo U280 加速器卡和 U50 卡,如 Alveo U50 数据中心加速器卡数据手册(DS965) 中所述。
  • 一条独立 AXI 通道,用于 Vitis 内核与 HBM PC 之间通过分段式交叉开关矩阵网络进行通信
  • 1 个双通道存储器控制器用于为两个 PC 寻址
  • 每条 PC 最大 14.375 Gb/s 理论带宽
  • 针对 HBM 子系统最大理论带宽为 460 Gb/s (32 × 14.375 Gb/s)

虽然每条 PC 的最大理论性能为 14.375 Gb/s,但它小于 DDR 通道的理论最大值 19.25 Gb/s。为了超越 DDR 性能,设计必须将多个 AXI 主接口有效集成到 HBM 子系统内。可编程逻辑具有 32 个 HBM AXI 接口,可以通过内置开关网络访问任一 HBM 栈上的任意 PC 中的任意存储器位置,此内置开关网络可提供对存储器空间的完整访问权限。

HBM 的连接由 HBM Memory Subsystem (HMSS) IP 管理,此 IP 启用所有 HBM PC,并将 XDMA 自动连接至 HBM 以便主机访问全局存储器。搭配 Vitis 编译器使用时,HMSS 会自动自定义为仅激活 --connectivity.sp 选项所指定的必要存储器控制器和端口,以将用户内核与 XDMA 连接到这些存储器控制器,从而实现最优化的带宽和时延。

注释: 由于内置开关网络的复杂性和灵活性,有诸多实现可能会在特定存储器位置或开关网络中出现拥塞。受存储器控制器时序参数(总线周转)的影响,交织式读写传输事务会导致只读或只写操作相关性能下降。如果写入传输事务跨两个 HBM 栈,则也会产生性能降级,因此应避免此情况。重要的是规划存储器存取,以尽可能限制内核执行的存储器存取,并配置内核连接,将不同内核的存储器存取操作隔离到不同 HBM PC 中。
用于将内核连接到 HBM PC 的 --connectivity.sp 选项如下:
sp=<compute_unit_name>.<argument>:<HBM_PC>

在以下配置文件示例中,内核输入端口 in1in2 分别连接到 HBM PC 0 和 1,输出缓冲器 out 则连接到 HBM PC 3–4

[connectivity]
sp=krnl.in1:HBM[0]
sp=krnl.in2:HBM[1]
sp=krnl.out:HBM[3:4]

每个 HBM PC 为 256 MB,为该内核提供总共 1 GB 的存储器存取。请参阅使用 HBM 教程以获取更多信息和示例。

提示: 此配置文件用于指定内核实参到一个或多个 HBM PC 的映射。映射到多个 PC 时,每个 AXI 接口都应仅访问可用的 32 个 HBM PC 中的连续子集。例如,HBM[3:7]。
实现内核实参与指定 PC 之间的连接时,HMSS 会自动选择开关网络中的相应通道以连接 AXI 从接口端口,以便在给定伪通道数量或范围的前提下访问存储器、尽可能提升带宽并缩短时延。但 HBM--connectivity.sp 语法还支持您指定开关网络的通道索引,HMSS 应将指定的索引用于连接内核接口。指定开关网络索引的 --connectivity.sp 语法是:
sp=<compute_unit_name>.<argument>:<bank_name>.<index> 

指定开关索引时,每个 sp 选项仅限指定一个索引。不得复用配置文件中的其他 sp 选项或行已使用的索引。

在此例中,先前示例的最后一行可重写为:sp=krnl.out:HBM[3:4].3,表示使用开关通道 3 (S_AXI03),或者重写为 sp=krnl.out:HBM[3:4].4,表示使用开关通道 4 (S_AXI04),如上图所示。

任一 sp 选项都会将内核数据传输事务布线为穿过最左侧的网络开关块之一,以降低实现复杂性。使用范围 0 到 7 内的任意索引则会使用网络中最左侧的两个开关块之一,使用任何其他索引将强制使用额外开关块,由此增加布线复杂性,并且可能对性能造成负面影响(取决于应用)。

HBM 端口位于器件的底部 SLR 中。对于 SSI 技术器件中跨超级逻辑区域 (SLR) 的 AXI 接口,HMSS 会自动处理这些接口的复杂布局和时序。默认情况下,如果在 v++ 上不指定 --connectivity.sp--connectivity.slr 选项,那么所有内核 AXI 接口都访问 HBM[0] 且所有内核都分配到 SLR0。

但您可以使用 --connectivity.slr 选项来指定内核的 SLR 分配。对于使用多个 SLR 的器件或平台,强烈建议您定义对特定 SLR 的 CU 分配。如需了解更多信息,请参阅 在 Alveo 加速器卡上将计算单元分配给 SLR