系统计算 - 2023.2 简体中文

Versal 自适应 SoC 系统和解决方案规划方法指南 (UG1504)

Document ID
UG1504
Release Date
2023-11-15
Version
2023.2 简体中文

DSP 引擎和 AI 引擎均可执行相似类型的计算操作。这两种引擎都是为了实现高效的乘积累加 (MAC) 函数(例如,FIR 滤波器)而设计的。进行设计分区时,重要的是了解两种块的不同功能及其与 PL 的交互方式。本节主要介绍块的计算功能以及不同数据类型映射到不同引擎的优劣比较结果。

Versal AI Core 系列、AI Edge 系列以及 Versal Premium VP2502 和 VP2802 中的器件包含 AI 引擎 tile 拼块阵列或 AI 引擎机器学习 (AIE-ML) tile 阵列。含 AIE-ML 阵列的器件可包含额外的 512 KB 存储器拼块行,专为机器学习推断加速等各种计算密集型应用经过最优化。

以下提供了部分函数的示例,这些函数可映射到 DSP 引擎,或者可通过矢量化来映射到 AI 引擎

  • 乘积累加
  • 快速傅里叶变换 (FFT)
  • 有限脉冲响应 (FIR) 滤波器
  • 矩阵相乘

DSP 和 PL 计算是基于样本来计算的。PL 擅长位操作函数和快速数据重排序,这些功能在为系统管理数据时尤为重要。

AI 引擎是 SIMD 矢量处理器,即易于矢量化的函数适合在 AI 引擎中实现。例如,线性代数函数本身就适合矢量化。

AI 引擎可执行基于样本和基于块的处理。对于基于样本的处理,AI 引擎随串流接口一起运行,且块与矢量处理和寄存器存储器对齐。这样即可实现低时延,尤其是可以支持高吞吐量设计以高采样率来运行(例如,超采样率处理)。

使用窗口接口时,AI 引擎已配置为基于块进行处理,即矢量化处理。根据窗口大小和采样率,时延和吞吐量可能会受到影响,如果窗口(块)大小较小,则尤其容易受到影响。如果同时使用 256 位存储器读取端口和 256 位写入端口,则此选项适用于高带宽。

由于 AI 引擎是矢量处理器,因此它在单一时钟周期内可执行的操作数量比 DSP 引擎更多,例如,在 INT8 内可执行 256 项操作,相比之下,DSP 引擎在单一时钟周期内只能执行 6 项操作。下表显示了 AI 引擎中的本机数据类型与使用 DSP 引擎时同等性能情况下的比较结果。在某些情况下,如果系统包含大量针对这些数据类型的线性代数计算,那么 AI 引擎可能是更合适的选择。但还有其他注意事项需要考量,详情参阅下文所述。

表 1. 每个 Versal 自适应 SoC 智能引擎的每个周期内的操作数
数据类型 DSP 引擎 AI 引擎
INT8 6 256
INT16 2 64
INT24 2 16
INT32 不适用 1 16
FP32 2 16
Complex 16 2 2 16
Complex 32 不适用 1 2
  1. 无法在单一 DSP 引擎内实现,需要额外 PL 资源
  2. 需要 2 个 DSP 引擎以实现最多 18 位复数乘法器或 MACC

在决定用于实现这些类型的函数的引擎之前,必须评估所需的计算量。如下表中的示例所示,小型 11 抽头 FIR 滤波器所需算力远小于大型 131 抽头 FIR。因此,您可选择使用 DSP 引擎和 PL 来实现 11 抽头 FIR。但 131 抽头 FIR 可能在 AI 引擎中更高效。

表 2. 不同 FIR 实现的计算要求示例
11 抽头 FIR 滤波器 131 抽头 FIR 滤波器

16 位实数数据和 16 位实数系数

AI 引擎中 16 位的可用计算量 = 32 个 MAC

所需计算量 = 11 个 MAC

AI 引擎数 = 0.35 (1)

资源使用率 = 0.35

使用率低

所需计算量 = 131 个 MAC

AI 引擎数 = 4.09 (5)

每个 tile 的资源使用率 = 0.82

使用率高

在进行系统分区时,还有其他因素可能影响您的决策。例如,在应用数据流中 11 抽头滤波器发生位置在哪里?它是否属于更大的滤波器链中的一部分?如果是这样,那么从架构角度而言,合理方法可能是在 AI 引擎中实现此小型 FIR 和滤波器链的其余部分,这样即可提升总体系统设计的效率。

对于 AI 引擎不提供原生支持的函数(例如,INT4 或 24 位复数),最好在 DSP58 和 PL 中实现这些函数,因为这样可以简化实现。或者,在 AI 引擎中也可能支持这些非原生运算符。如果您使用此方法(比如在 PL 内),则必须在矢量通道内谨慎管理这些数据,这需要额外的数据管理功能。

AI 引擎矢量处理器能够高效执行大量并发算术运算。如果应用需要此类运算,那么部分非线性代数函数也可以在 AI 引擎标量处理器中实现。此方法的优势在于它无需将数据移出 AI 引擎阵列再移入 PL 来执行这些函数。由于 PL 与 AI 引擎阵列之间存在的往返时延,在 PL 中对 DSP58 执行预处理和后处理尤为有效。