摘要
在数据中心、航空航天与军用、5G 无线以及轿车等范畴,客户有必要满意高档驾驶员辅佐 (ADAS)、雷达和深度学习等运用中严峻的散热、功耗和本钱要求。
要完结这些方针,一种极为有用的办法是用定点数完结信号处理链。赛灵思FPGA 和 SoC 具有固有的可变精度支撑,答应客户轻松调整以习惯不断演化的朝更低精度解决计划开展的这种职业趋势。
赛灵思供给一种包含 Vivado® 高层次归纳 (HLS) 的东西流程,答应客户便利地评价 C/C++ 规划的更低精度完结计划,比如定点等。
简介 :赛灵思支撑的数据类型
赛灵思 All Programmable 器材和东西支撑从二进制到双精度浮点在内的多种数据类型。用定点完结的规划总是比用浮点完结的同一规划愈加高效,由于定点完结计划所占用的资源和耗费的功耗更少。若将规划迁移到定点,功耗和占用面积减缩一半并不稀罕。
相较于浮点,定点数据类型的优势包含 :
• 逻辑资源占用削减
• 功耗下降
• 资料本钱下降
• 时延缩短
赛灵思一切器材均支撑客户选用浮点数据类型供给的动态规模,能完结高达 7.3TFLOPs 的单精度浮点DSP 功用。
业界抢先的赛灵思东西套件供给浮点支撑。Vivado® 高层次归纳 (HLS) [ 参考资料 1] 和 System Generator for DSP [ 参考资料 2] 自身均支撑可变的浮点精度,包含半精度 (FP16)、单精度 (FP32) 和双精度 (FP64) ;System Generator 还支撑自界说精度,具有更大的灵敏性。这些东西自身还支撑可变定点数据类型。
表1 :赛灵思东西支撑浮点和定点数据类型

注 :
1. System Generator for DSP 本来不支撑 FP16,但支撑自界说 FP16。
2. 浮点运算符内核支撑 →定点到浮点转化、浮点到定点转化以及浮点到浮点的精度改换
赛灵思器材和东西均能支撑可变精度数据类型,以便客户可以简略、灵敏地调整和习惯职业趋势的改变,例如图画分类只要求 INT8 或更低的定点核算,以坚持可承受的揣度精度 [ 参考资料 3][ 参考资料 4]。
用于高核算强度作业负载的其他器材,例如 GPU,在传统上其结构决议了只能有用支撑单精度浮点。这些厂商现在也开端从头规划产品,以应对趋势的改变。赛灵思的可扩展架构答应客户调整信号处理链的精度,以便满意一日千里的职业需求。
当挑选完结浮点仍是定点信号处理链时,客户有必要在功耗、本钱、生产力和精度之间细心权衡。
赛灵思灵敏的 DSP48E2 Slice 可运用一切数据类型进行重要的 DSP 核算。当完结新的定点规划或针对某些运用(适用浮点到定点转化)将现有规划从浮点转化成定点时,DSP Slice 与赛灵思东西集相结合可以带来巨大优势和灵敏性 [ 参考资料 5]。
关于选用 C/C++ 言语规划的客户,赛灵思供给 Vivado HLS 并支撑恣意精度定点数据类型,使客户可以便利地选用定点进行规划或许将现有的 C/C++ 规划转化成定点。
浮点转化为定点的优势
关于现在简直一切的规划,最小化功耗是需求优先处理的问题。大多数运用产品有必要首要满意严厉的功耗和散热规模要求,才干投产。
遍及承受的一个原则是,浮点规划较之低精度规划而言,功耗更大 [ 参考资料 6][ 参考资料 7]。这对FPGA 来说也相同,其间的浮点 DSP 模块已被硬化在 FPGA 中,别的客户有必要运用供给的 DSP 资源和其它 FPGA 资源来完结软解决计划。浮点计划与平等的定点解决计划比较需占用更多的 FPGA 资源。资源占用增多,功耗随之增大,终究会添加规划完结的总本钱。
将浮点规划转化为定点规划有助于满意严厉的标准,详细体现在以下几个方面 :
削减 FPGA 资源占用
○ 运用定点数据类型时,所需的 DSP48E2、查找表 (LUT) 和触发器更少。
○ 存储定点数字所需的存储容量更小。
• 功耗更低
○ 削减 FPGA 资源运用天然就会下降功耗。
• 资料本钱下降
○ 规划人员可运用额定的资源以相同本钱在运用中完结附加功用。
○ 资源的节约能大幅进步 FPGA 的核算才能。核算才能的进步可以让许多运用获益,例如机器学习
DNN。
○ 资源的节约还或许减小规划所需的器材尺度。
• 下降时延
○ 当完结 FIR 时削减所用的资源,尤其是削减 DSP48E2 Slice 的占用,能下降定点规划的时延。
• 附近的功用和精度
○ 关于不需求用浮点完结动态规模的规划和运用,定点计划能供给附近的成果和精度。 有些状况
下,成果乃至更好。
曩昔由于缺少东西支撑,难以将规划从浮点转化为定点。关于针对赛灵思 All Programmable 器材的 C/C++ 开发人员来说,可运用 Vivado HLS 削减转化进程中遇到的应战。
这种转化能带来多种优势,在适用状况下应仔细考虑——尤其是不需求运用浮点来完结动态规模和浮点精度的规划,并且很小的可预见的精度丢失不会在布置后的运用中导致无效性。
实例 :将浮点 FIR 滤波器转化为定点
Vivado HLS 中简略的 FIR 滤波器规划 [ 参考资料 8] 可用来展现浮点 FIR 规划转化为定点规划怎么削减所用资源和功耗并完结附近的成果精度。
单精度浮点 FIR
在 C++ FIR 函数代码中,顶层函数将 FIR.h 报头文件中找到的类 CFir 文件 (class CFir) 实例化。

CFir 类 (CFir class) 是首要的 FIR 算法,在报头文件 FIR.h 中界说。

此函数包含重要的 ARRAY_PARTITION 编译指示,以保证规划的一切完结计划都是 II=1 (迭代距离为1)[ 参考资料 9]。PIPELINE 编译指示也被运用到顶层函数调用。
这些编译指示、并行产品完结以及用于履行累加的加法器树,可以在整个 FIR 函数中保证最低时延(不管数据类型怎么),一起坚持 II = 1。
在 fp_FIR 函数中,fp_coef_t、fp_data_t 和 fp_acc_t 都被界说为浮点类型,即 C++ 默许的单精度浮点数据类型。

经过报头文件中的 include 指令加载滤波器系数

用系数创立一个对称 FIR 滤波器,但本例中,未运用 DSP48E2 Slice 中的预加法器。假如运用预加法器,会完结更高功率。
以下是针对 85 抽头 FIR 滤波器得到的成果,在 Vivado HLS 中运转 C 归纳与完结,并选用 XCVU9P2FLGB2104 器材上的 400MHz 时钟(2.5ns 时钟周期)。见表 2。
表 2 :单精度浮点 FIR 的完结后成果

本例中,需求 423 个 DSP48E2 以及约 23,000 个 LUT 来完结单精度浮点 FIR。完结后,时延为 91 个时钟周期,FMAX 为 500MHz(远远高于 400MHz 的方针)。
转化到定点 FIR 滤波器
为完结最高 DSP 功率,浮点到定点的转化有必要考虑 DSP Slice 的总线宽度,即 27×18 位乘法器和 48 位累加器。将总线宽度进一步减缩到到规划答应的最低水平,然后尽或许削减资源占用和功耗。
针对这个 FIR 滤波器实例,界说以下定点数据类型以匹配 DSP48E2 Slice 中的总线巨细,即 18 位系数中1 个整数位和 17 个小数位 ;27 位数据中 15 个整数位和 12 个小数位 ;以及 48 位累加器中 19 个整数位和29 个小数位。

要运用 Vivado HLS 固有的 ap_fixed 数据类型,有必要包含 ap_fixed.h 报头文件,以界说恣意定点数据类型 [ 参考资料 9]。
再次选用 400MHz 时钟(2.5ns 时钟周期)和 XCVU9P-2FLGB2104 器材,定点 FIR 规划的 C 归纳与完结发生的成果如表 3 所示。
表 3 :比较两种规划的完结后成果

正如成果显现的那样,注重时延和 FPGA 资源运用率,能取得显着的改善。
在 UltraScale 架构中,经过将多个 DSP48E2 Slice 级联,必要时仍可支撑更高总线宽度。选用级联DSP48E2 Slice 的定点规划,与浮点计划比较仍可显着削减资源占用和功耗。
比较滤波器精度
在 System Generator for DSP 中运用 Vivado HLS 模块(来自赛灵思模块集),在 MATLAB®/Simulink®环境中比较 FIR 滤波器的两种完结计划。见图 1。

图 1 :System Generator for DSP 模型 – 运用两种 HLS 解决计划进行剖析
System Generator 模型由两个 Vivado HLS 模块构成,都经过装备以包含来自 Vivado HLS 的单精度浮点 (FP32) 和定点 FIR 解决计划。两个模块具有相同的输入和离散脉冲信号,然后在 Simulink 示波器上比较每个 FIR 的输出。见图 2。

图 2 :System Generator 中两个 HLS 规划的输出
为了便利比较输出,有必要推迟定点成果,以依照两种解决计划之间的时延差进行比照。
正如预期的那样,两种 FIR 滤波器发生的成果简直相同,差异很小。
为进一步剖析信号,将两个输出相减。得到的信号标明精度丢失十分小,处在如图 3 所示频谱剖析图中的 -100dBm 至 -160dBm 规模。

图 3 :两个输出差的 dB 图
要害优势
当把原始单精度浮点 FIR 滤波器的成果与转化后定点 FIR 滤波器的成果进行比较时,发现定点规划不只削减了资源占用 , 下降了时延,一起还能坚持乃至进步规划的最大频率 (FMAX) 。见图 4。

图 4 :定点 – 功用附近,并削减时延、资源占用和功耗
大大削减 FPGA 资源占用
本例中的定点 FIR 所占资源缺乏原始浮点 FIR 的五分之一。
挑选总线宽度,完结到硬件中 DSP48E2 slice 的最佳映射。这样答应每次相乘都在一个 DSP48E2 Slice 中完结,并针对 85 个系数并行完结。这将 DSP48E2 Slice 的运用量减小至浮点解决计划的 20%。
完结 FPGA 架构中 LUT 的大幅节约(约 90%),由于在定点计划中,无需额定的 LUT 来构建浮点运算。
假如一个规划有 10 个 FIR 滤波器,估计功耗会随规划而扩展。表 4 显现了 10 FIR 滤波器规划的单精度和定点完结计划的 XCVU9P FPGA 资源占用。当将单精度浮点的资源占用与定点完结计划进行比照时,会看到显着的差异。
表 4 :两种数据类型 10 FIR 滤波器所运用的资源

显着的资源节约能完结多种优势,为规划人员带来深远的影响,有助于他们改善规划特性集、规划功耗、规划功用和规划本钱。
完结显着的功耗节约
显着的资源节约可以相应地下降功耗量。
将本白皮书中单个 FIR 滤波器的两种完结计划的功耗预算成果进行比较,发现定点 FIR 的功耗削减1.4W。两种计划中,器材的静态功耗都是略高于 3W,单个单精度浮点 FIR 规划的总功耗为 4.7W。这标明该规划的动态功耗节约 80% 以上,定点 FIR 功耗为 3.3W。
再看看 10 FIR 滤波器规划,可运用赛灵思功耗预算器 (XPE) 和表 4 中的资源来取得两种完结计划的功耗预算成果。图 5 对节约作用进行了比较。

图 5 :10 FIR 滤波器实例 :运用定点完结显着的功耗节约
这个 10 FIR 滤波器实例中,把规划转化成定点数据类型后,总功耗节约 70%。假如规划具有许多浮点信号处理,需占用许多 FPGA 资源,则经过将部分或悉数浮点信号处理链转化成定点,可以完结巨大的功耗节约。
削减资料本钱
将浮点规划转化成定点计划,能大大削减 FPGA 资源占用。FPGA 资源的削减能下降资料本钱。经过三种办法来完结。
1 可运用最新可用的 FPGA 资源来添加运用特性集。
2 由于所用 FPGA 资源许多削减以及经过数据途径进步 FMAX,因而 FPGA 的整体核算才能显着进步。
3 由于所需 FPGA 资源削减,因而规划可迁移到更小型的赛灵思 FPGA 中。
附近的精度
经过比较单个 FIR 滤波器规划两种完结计划的输出,会发现定点完结计划供给附近的滤波器精度,精度丢失仅为 -100dBm 至 -160dBm,一起能下降功耗和本钱。
可是,定点计划无法取得相同的动态规模,导致规划中呈现可猜测的精度丢失。关于许多规划来说这不成问题,由于只需求最低标准的精度。与单个 FIR 实例相似,这类规划很合适转化为定点。
关于需求更大精度值的规划,有时可将信号处理链中的中心值从浮点转化为定点。这种计划使规划人员可以将规划的特定部分(而非悉数)转化为定点。终究,这使规划人员可以在需求时坚持动态规模,保证保持数据途径的精度,一起充沛发挥定点完结计划带来的部分优势。
下降时延
关于单个 FIR 规划实例,可经过滤波器下降时延——定点完结计划为 12 个时钟周期,浮点规划为 91 个时钟周期。跟着资源用量削减,尤其是 DSP48E2 Slice 削减,有望下降时延。
除了下降时延,在单个 FIR 实例中,还能进步 FMAX,完结之后能将 FMAX 进步 16%。
定论
赛灵思 All Programmable 器材和东西支撑多种数据类型,包含多种精度的浮点和定点。运用浮点的规划与运用定点的同一规划比较,资源用量和功耗都要更高,不管针对 FPGA 仍是其他架构(例如 GPU)都是如此。
某些运用范畴已开端抛弃浮点数据类型,例如深度学习揣度作业负载会尽或许多地运用 INT8 或更低精度,这已经成为显着的职业趋势。
现在的规划环境极富应战,散热和功耗要求越来越难以满意,因而,规划人员有必要评价一切或许的办法来下降功耗。其间一种挑选便是将浮点规划转化为定点。
假如是运用 C/C++,Vivado HLS 等赛灵思东西有助于简化转化进程。
规划人员有必要对定点数据类型的转化进行充沛权衡,并充沛了解这样做所能带来的巨大优势。
持续运用浮点是通向商场的捷径,可是本钱高。投入时刻和精力转化成定点,这样可以下降资源运用量、本钱和功耗,并且功用丢失很小,然后取得巨大优势。