草榴社区

ARC VPX 矢量 DSP:数字信号处理浮点的使用

新思科技ARC 处理器 IP 产物营销经理 Markus Willems

浮点应用

传统意义上的数字信号处理器 (DSP) 架构在特定的信号处理计算应用中已受到限制。超长指令字 (VLIW) 和单指令多数据 (SIMD) 架构的组合提供了高计算性能所需的并行吞吐量,数据通常为 16、24 和 32 位定点数。这非常适合语音/音频和通信等应用中使用的算法。对于最近几代的算法和计算,由于对更高的动态范围、工作效率和可靠性的要求逐渐提高,这些要求也在不断演变和变化。

更高的动态范围

最新的高级驾驶辅助系统 (ADAS) 和 RADAR/LiDAR 应用要求所有计算路径都是高精度的。在前端 FFT 计算中,较大点 FFT,例如 4K、8K 和更高点 FFT,无法在定点(溢出)保持位精度。因此,为了获得最高性能 RADAR 系统,需要浮点数据类型。这可以是单精度或半精度浮点。

另一个例子是预测性建模,以实现更快/更流畅的系统响应,这在各种汽车、自动化和航空电子应用中越来越普遍。预测建模使用一个复杂的统计模型,它根据一系列传感器的各种输入,来预测结果。机器学习算法对于匹配预测模型的状态通常很有用,可以帮助学习预期的结果并进一步改善响应时间和输出质量。预测建模最好在基于线性代数的算法中实现,使用单精度浮点来提供计算数据的动态范围。线性代数运算需要在 DSP 上进行大量运算,并伴随神经网络的高性能计算,最常使用 8 位整数数据类型。

某些算法对动态范围非常敏感。例如,使用定点运算实现矩阵反转需要显着的缩放工作,并且通常需要对单个矩阵元素允许的值范围进行某些限制。这就是浮点运算成为此类算法首选的原因。

工作效率

信号处理算法通常使用基于模型的方法予以开发和分析,例如从浮点运算开始的 MATLAB? 或 Simulink?。最初,所有重点都放在算法功能上,浮点数据类型提供最大的灵活性,无需花费精力进行缩放和量化。

将信号处理算法映射到不同 DSP 架构的方法

图 1:将信号处理算法映射到不同 DSP 架构的方法

如果必须在定点架构上完成实施,则存在两种方式,如图 1 所示:模拟浮点行为(每次运算需要许多周期),或将浮点算法转换为定点算法(这是一个耗时且繁琐的过程)。通常,算法设计团队在这个阶段会意识到,由于上述原因,所选择的算法不是很适合定点实现,然后他们必须考虑替代方案。显然,避免浮动到固定的转换将显著提高工作效率,消除量化过程,并提供从基于模型的设计到最终实施的纽带。

即用型库是提高工作效率的关键。最明显的例子是 BLAS(基本线性代数子程序)和 LAPACK(线性代数包)。这些库广泛用于许多信号处理应用,并且以浮点形式提供。

可靠性

可靠性与工作效率密切相关。浮点运算由 IEEE754 标准定义。这意味着,当在主机、DSP 指令集模拟器或硬件本身(在这些情况下,都执行由 DSP 处理器的编译器生成的二进制模型)上运行纯函数模型(MATLAB 模型或 C 代码)的算法时,可以预期相同的结果。关键在于这是符合 IEEE 标准的编译器,它可用于所有的这些目标系统。

PPA 影响

如前所述,浮点运算可以使用定点硬件予以执行,在这种情况下,浮点行为将被模拟,但这种方法导致显着的性能退化。如果浮点运算所占的工作量非常有限,则可能可以接受。然而,数字信号处理应用通常并非如此(与传统控制器是以执行整数编写的控制代码为主不同。这就是为什么许多嵌入式控制器都是整数机器的原因)。为了高效实施浮点算法,它需要专用的浮点硬件单元,即本机浮点支持。

过去,针对浮点架构的主要争论是其对功率、面积和整体性能 (PPA) 的影响。浮点单元每个功能单元使用的门数多于定点单元。以周期/秒为单位测量的整体性能受到较低的 fmax 的影响,因为浮点单元经常处于任何综合优化的关键路径中。现代 DSP 架构和最新工艺技术不再支持这些论点。

新思科技 ARC VPX 处理器

新思科技的 ARC? VPX DSP IP 是 VLIW/SIMD 处理器系列。它支持多种矢量长度,128 位、256 位和 512 位,因而成为适用于各种信号处理和 AI 应用的多功能解决方案。

VPX DSP 采用优化平衡的 4 路 VLIW 架构,以低功耗实现高性能。每个 VPX DSP 内核都集成了高性能的 32 位标量流水线和一个多指令槽矢量处理单元,支持 8 位、16 位和 32 位 SIMD 计算。每个 VPX DSP 内核每个周期能够执行一个标量和三个矢量指令。VPX DSP 包含可配置的指令和数据 cache 用于标量操作,和矢量紧密耦合型存储器 (VCCM),用于矢量处理的单周期访问。

为了加快应用软件的开发,VPX 系列受 新思科技的 ARC MetaWare 开发工具的支持,该工具提供全面且与矢量长度无关的软件编程环境,使 VPX 系列的所有成员都能进行代码移植。该工具套件包括优化的 C/C++ 矢量编译器、调试器、指令集模拟器以及 DSP、机器学习推理和线性代数库。

即用型库函数,已针对 VPX 架构进行了优化,并基于浮点来实现

图 2:即用型库函数,已针对 VPX 架构进行了优化,并基于浮点来实现

 

每个 VPX DSP 内核最多有三个并行浮点处理管道,包括两个可选的符合 IEEE-754 标准的矢量浮点单元(VFPUA、VFPUB),其支持全(32 位)和半(16 位)精度浮点运算。VPX 内核还可选择添加专用矢量浮点管道,从而加速一系列线性和非线性代数数学函数 (VFFC),包括 div、√x、1/√x、sin(x)、cos(x)、log2(x)、2x、ex 和 arctan(x)。此类运算可以每四个周期开始,并且与标准数学运算并行执行,如图 4 所示。

“可选”是指用户可以配置 VPX 处理器以匹配目标应用的特定 PPA 要求。这种可配置性允许对具有和不具有本机浮点支持的配置进行基于性能分析的比较,这将用于以下 PPA 分析。

非阻塞管道在两个发射槽中执行三个浮点运算

图 3:非阻塞管道在两个发射槽中执行三个浮点运算

 

区域影响

表 1 显示了两种配置的结果,一种没有 VFPU,另一种同时启用了 VFPUA 和 VFPUB。两者均针对 TSMC 12nm FFC 进行了综合。仅考虑单元逻辑时,添加浮点单元会导致面积增加 10%-15%,如果考虑合理的 RAM 大小,则增加 5.6%-11%。由设计人员判断这种中等程度的面积增加对于给定的应用是否可接受。

比较添加和不添加浮点单元的 VPX 变体的相对面积数

表 1:比较添加和不添加浮点单元的 VPX 变体的相对面积数

 

性能影响

在此语境中,性能是指完成特定算法的执行所花费的时间。它是此类算法所需的周期数除以时钟频率。对于 VPX,无论是否包括 VFPU 单元,最大频率 (Fmax) 不受影响,这要归功于浮点硬件单元的优化。因此,性能将仅取决于执行特定算法所需的周期数。如果关键内核需要浮点运算(例如,用于覆盖动态范围),则固定点处理器必须模拟浮点行为。这会导致性能显著退化。对整体性能的影响将取决于这些内核的相对指令周期计数,而非整个应用程序的整体指令周期计数。

功耗/能源影响

特别是对于电池供电的设备,能源可能是需要关注的更相关的指标。它考虑了完成特定任务所需的指令周期数以及每个周期的功耗。例如,由于使用高级指令,将周期次数减少 50% 可能会节省高达 50% 的能源,而峰值功率保持不变。也就是说,功耗仍然是一个重要的参数,因为它决定了热效应和对特殊散热的需求。

如前所述,当您必须使用定点架构来模拟浮点时,周期次数将显着增加,能耗也会显着增加。更相关的情况是,算法设计师努力将浮点代码转换为定点代码。因此对比的是在定点架构上执行的定点代码与在浮点架构上执行的浮点代码。

总动态能耗比较 float32 和 int32

表 2:总动态能耗比较 float32 和 int32

 

表 2 显示了一些基准测试结果,其中包括客户提供的实际应用内核。它区分了 ALU 密集型内核(由逻辑运算主导)和 MAC 密集型内核(由乘法/累加主导)。定点运算使用 int32 数据类型,浮点运算使用 float32 数据类型。

对于 MAC 密集型运算,整数的能耗比浮点高 2.7%。为什么会这样? 整数比浮点多进行约 9% 的指令周期,主要是由于移位和四舍五入所需的周期。在标准化尺度上,每个周期的整数比浮点更加节能高效,这是由于乘法器中消耗的能源的影响。

对于 ALU 密集型运算,图片略有不同。整数使能耗比浮点高 8%,而周期比浮点少 0.5%。由于 int 和 float 的周期次数几乎相等,因此能量差异表示浮点运算对给定指令消耗的功率更少。

根据应用的不同,浮点和整数之间的比率可能不同。此外,还有一些算法可以使用 Int16 数据类型,或者半精度 (HP) 浮点,或者两者混合使用来实施。然而,这些基准表明,由于 VPX 非常先进的浮点单元,能耗的差异将非常有限。

超越浮点

几乎没有任何信号处理应用没有利用某种 AI 功能。AI 算法是计算密集型算法,以乘法/累加 (MAC) 运算为主。对于任何嵌入式应用,AI 算法都依赖于 int8 和 int16 数据类型。根据性能要求,AI 功能在专用加速器或处理器上执行。DSP 处理器提供出色的 MAC 支持,因为“经典”筛选操作也需要这种支持。为了实现 AI 算法的高效实施,VPX 为 int8 和 int16 数据类型提供本机支持。这是在对浮点提供的本机支持之外,提供的功能。

对于 AI,软件工具支持是关键。图形映射工具可转换 TensorFlow 和 ONNX 等框架中描述的图形,以便它们可以在底层架构上执行。新思科技的 NN SDK 工具包针对新的 NPX AI 加速器和 VPX 处理器 IP。使用 NN SDK,可以探索仅用 VPX 实现是否足够,是否需要 VPX 和 NPX 的组合使用。

总结

越来越多的信号处理应用使用浮点运算,这是由高级算法和总体设计工作效率驱动的。新思科技的 VPX 等现代 DSP 处理器架构提供本机浮点支持,这些支持已针对 PPA 效率进行了优化。由于 VPX 的可配置性,因此可以添加浮点单元作为选项。这提供了最大的设计灵活性,以在算法要求、编程效率和实施效率之间实现理想的平衡。