使用新一代 DSP 进行更快更准确的数据计算

Synopsys ARC 处理器产品营销经理 Graham Wilson

传统上,数字信号处理器 (DSP) 的架构在特定的信号处理计算应用中已受到限制。超长指令字 (VLIW) 和单指令流多数据流 (SIMD) 架构的组合提供了高计算性能所需的并行吞吐量,数据通常为 16、24 和 32 定点。这非常适合语音/音频和通信等应用中使用的算法。在前几代 DSP 算法开发中,系统和软件开发人员会在 MathWorksMATLAB® 中开发系统算法,并且当将算法移至 DSP 时,会采取将 MATLAB 的浮点数据类型输出转换为定点的步骤。我们认为有必要这么做,因为通常认为定点数据类型是“真正的”DSP 开发人员所考虑的方面,而且定点范围涵盖了将硬件使用和功耗降至最低时,循环和准确性方面的计算需求。

利用浮点实现更高吞吐量

对于最近一代的算法和计算的要求,由于多种原因而不断发展和变化,其中的一个原因就是上市时间。这是因为需要利用自定义软件算法以及新产品更激进的上市时间窗口来区分产品。结果,当前系统可能跳过从浮点到定点的转换步骤,而只是在 DSP 上运行浮点。对数据计算中更高准确性的需求也推动新要求的出现。例如,汽车 ADAS 和 RADAR/LiDAR 等较新应用要求在计算路径的所有部分中都具有高精度。在前端 FFT 计算中,较大的点 FFT(例如 4K、8K 和更高的点 FFT)无法在定点(溢出)保持位精度。因此,为了获得最高性能,需要浮点数据类型。这可以是单精度或半精度浮点。

在各种汽车应用中,尤其是 ADAS、动力总成和马达控制/管理中,用于更快/更流畅的系统响应的预测建模正变得越来越普遍。预测建模使用能够基于各种输入来预测结果的统计模型。这种实现方式的好处在于,DSP 处理器可以运行高度复杂的模型,并且可以响应更广范围的传感器和环境输入,更快地生成输出。机器学习算法对于匹配预测模型的状态也很有用,可以帮助学习预期的结果并进一步改善响应时间和输出质量。预测建模最好在基于线性代数的算法中使用单精度浮点实现,以确定计算数据的范围和准确性。可以将数学计算归类为线性代数运算,这需要在 DSP 处理器上进行大量计算。

具有高处理要求的应用,例如每秒 10 吉比特数据速率的 5G 无线通信,以及每秒需要 200 吉比特以上数据吞吐量的汽车 ADAS、RADAR 和 LiDAR,都需要具有非常宽的向量计算能力以及具备高度并行执行能力的 DSP。这些新的 DSP 计算驱动因素改变了传统 DSP 内核的架构和指令集架构 (ISA) 要求。DSP 需要提供极高水平的计算吞吐量,并需要提供高水平的单精度和半精度浮点计算。具有架构和 ISA 的传统 DSP 处理器最初重点执行定点数据类型处理,现在增加了浮点单元,而这些浮点单元在处理能力和功耗方面通常并非最佳选择。这些传统的 DSP 处理器对线性代数的指令支持有限,对于矩阵转置运算,可能提供 SQRT 和/或 1/SQRT 支持,但是对于线性代数算法的完整范围,必须对数学运算进行软件仿真。

面向数据主导型世界的新一代 DSP 架构

需要新一代的 DSP 内核来满足这些对于浮点和线性代数数据吞吐量的计算要求。这种新的 DSP 是 DesignWare® ARC® VPX5 处理器 IP,会在其中作为本机架构的一部分开发浮点和线性代数向量计算,可通过向量 SIMD 和 VLIW 架构有效实现,以提供超高水平的并行处理。这种 DesignWare ARC VPX5 处理器 IP  具有四个并行执行维度(图 1)。

图 1:在 DesignWare ARC VPX5 处理器 IP 上并行执行的 4 个维度

第 1 维度浮点的多 SIMD 计算引擎

基本向量数据长度为 512 位,从而可以对 8 位、16 位和 32 位数据或半精度和单精度浮点数据的数据单元进行 SIMD 计算。所有 SIMD 引擎都使用 512 位向量长度进行计算;这就确定了 ARC VPX5 处理器的计算能力上限。

对于 8 位、16 位和 32 位长度的整数数据,有两个 512 位 SIMD 计算引擎以及三个 ALU 处理单元。这为机器学习卷积运算(5x5、3x3 和 1x1)等算法提供了非常高的计算水平。

对于半精度和单精度浮点计算,有三个向量 SIMD 计算引擎,所有引擎都支持 512 位的最大向量长度。用于“常规”浮点向量运算的双 SIMD 引擎,为浮点向量运算提供了超高性能,例如包括 FFT 的 DSP 函数、矩阵运算等。

第三向量 SIMD 浮点引擎专用于线性代数数学函数。这种专用引擎允许卸载和并行计算数学函数,将会在第 4 维度部分中进一步说明。

第 2维度借助多任务发布 VLIW 实现灵活性

在 4 次发布 VLIW 方案中执行灵活分配,使处理器能够尽可能分配最多的并行操作。VLIW 方案的开发与软件编译器的开发工作实现了密切配合,因此编译器会预先分配在原始 C 代码程序中编译的运算符。编译器与 VLIW 架构相结合,可以跨多个 SIMD 引擎并行执行操作

例如,图 2 显示了编译器如何能够结合 VLIW 分配方案,仅使用两个 VLIW 插槽即可实现跨三个浮点 SIMD 引擎的并行执行,并且实现最佳的 VLIW 插槽分配和更小的指令代码大小。两个向量 SIMD 浮点引擎具有零周期插入延迟,因此可以在每个周期将向量数据加载到 SIMD 引擎中。线性代数向量 SIMD 引擎的插入延迟为四个周期,因此在加载数据之后,需要额外等待三个周期,直到可以加载新的向量数据为止。编译器可以为这种不同的插入延迟预先分配 VLIW 插槽,从而在所有三个向量 SIMD 浮点引擎上提供有效的并行执行。

图 2:三个并行向量 FPU 执行的编译器分配

第 3 维度可配置为单核、双核及四核

DesignWare ARC VPX5 处理器 IP 与多个向量 SIMD 计算引擎并行,并带有 VLIW 分配功能, 允许将单核扩展到双核和四核配置。这样可以根据需要将单核 VPX5 的计算性能提高一倍或三倍,以满足更高的计算需求。DesignWare ARC MetaWare 开发工具包完全支持跨多核配置的代码编译和执行。此外,由于产品包含信号功能,所以支持多核任务执行和同步。

对于单核、双核和四核配置,数据移动是 VPX5 产品的关键方面。有一个 2D 直接内存访问 (DMA) 引擎,可配置多达四个通道,每个周期最多提供 512 位传输。DMA 可以配置为在各个多核的数据存储器之间、本地集群存储器之间或在外部 AXI 总线的输入/输出之间并行移动数据。这种高性能 DMA 与 VPX5 处理器的高计算吞吐量相得益彰,使向量 SIMD 引擎可以不断访问每个内核上本地紧密耦合的向量数据存储器中的新向量数据。

第 4 维度线性代数计算

许多新一代算法使用依赖线性代数基本函数的数学方程式和计算来实现计算吞吐量。此类示例包括对象跟踪和识别、预测建模以及一些筛选操作。在这种新的驱动趋势之下,VPX 处理器在提供纯粹用于线性代数的专用向量 SIMD 浮点计算引擎方面独树一帜。该引擎硬件加速了线性功能,例如除法、SQRT、1/SQRT、log2(x)、2^x、正弦、余弦和反正切,并在 SIMD 向量中予以执行,从而提供了非常高的性能。

这对于性能数字有何影响?

借助这种 4 维并行处理功能,DesignWare ARC VPX5 处理器 IP  满足了高吞吐量应用对浮点和线性代数处理的需求,并且与具有类似架构的其他 DSP 处理器相比,还提供了业界领先的性能指标。例如,配置最高的 VPX5 每周期可提供 512 次半精度浮点运算,如果以 1.5GHz 运行,则为 768 GFLOP。此外,VPX5 根据线性代数运算的使用情况,每周期提供 16 次数学浮点计算。对于机器学习计算算法中使用的 8 位整数数据,VPX5 每周期最多可提供 512 个 MAC。

VPX5 处理器受 DesignWare ARC MetaWare 开发工具包支持,该工具包提供 完整的编译器、调试和仿真平台。这使开发人员能够快速高效地将 C 代码算法编译到 VPX5 内核中的处理引擎。循环等效仿真平台使开发人员可以评估循环计数性能,并检查关键算法和程序的最佳性能。DesignWare ARC MetaWare 开发工具包除了提供 DSP 库之外,还提供线性代数和机器学习推断 (MLI) 库。这使开发人员可以轻松地通过 API 接口将代码移植到库中,并很快达到最佳性能。对于 MLI 算法,提供了各种基于神经网络的计算组件,以实现高性能软件 AI 计算。

结语

DesignWare ARC VPX5 处理器 IP  是新一代 DSP,用于满足处理密集型应用的数据计算需求。浮点、AI 和线性代数计算算法的四个并行处理维度使 DesignWare  ARC VPX5 处理器能够为汽车 ADAS 传感器节点(RADAR 和 LiDAR)、5G 新无线电 (NR) 通信基带调制解调器、动力系统、引擎管理、机器人技术、马达控制和 5G 汽车通信 (5G C-V2X) 等应用提供超高性能。VPX5 凭借行业领先的 512 FLOP/周期和针对线性代数的独特 16 数学 FLOP/周期,为系统开发人员提供了性能满足新一代高性能计算算法需求的 DSP。结合具有 DSP 和数学库的 ARC MetaWare 开发工具包,开发人员可以快速移植 C 代码算法并获得最佳性能,以加快产品上市时间。