今天来看这篇论文:论文讨论了一种方法来更有效地利用现代FPGA中集成的数字信号处理器(DSP)资源。具体来说,该方法专注于如何在单个DSP块中进行低精度算术运算的打包,以提高计算密集型算法的性能、功耗和面积效率。
image-20240731001801622
由于FPGA中的DSP资源往往被设计成支持较大的位宽运算(例如48位累加器或18x27位乘法器),当应用于低精度数据处理时(如图像处理或机器学习中常见的量化数据),这些资源可能会出现利用率不足的问题。
为了解决这一问题,论文提出了一种方法,能够在单个时钟周期内在一个DSP块上同时执行四个4位乘法操作。这种技术被称为“打包”(Packing)。此外,论文还对该方法进行了推广,使其适用于任意位宽和任意数量的乘法操作。研究还指出,之前提出的打包方法会导致一定的误差(平均绝对误差MAE为0.37),并且解释了这些误差产生的原因以及如何进行修正。
论文还介绍了一种称为“Overpacking”的新近似方法,这种方法可以在牺牲一定精度的前提下(MAE为0.47),在一个DSP块中实现更多的乘法操作,例如可以将六个4位乘法操作挤入一个DSP块中,相较于之前的方法提高了利用率。
下面的内容具体可查看论文中的参考文献:
w0·a0=r0
和 w1·a1=r1
)以及一个乘积累加结果(r2=w0·a1+w1·a0
)。w0
和 w1
必须是4位宽,而 a0
和 a1
必须是5位宽,这导致结果 r0
, r1
的位宽为9位。c0·a0=r0
和 c1·a0=r1
)。c0
和 c1
必须是常数,而 a0
是相同的变量输入。w0·a0=r0
和 w0·a1=r1
),这种方法称为INT8-packing。w0·a0=r0
, w1·a0=r1
, w0·a1=r2
, w1·a1=r3
),这种方法称为INT4-packing。w0
, w1
, a0
, a1
都有4位精度,产生四个8位结果。综上所述,这些方法试图解决DSP资源在处理低精度数据时的利用率问题,通过在单个DSP上执行多组乘法来提高资源利用率。然而,每种方法都有其局限性,如特定的输入位宽要求、对常数的需求或是对输入数据的限制。
论文主要就是研究如何在单个DSP块中实现多个低精度乘法运算的技术:
a
和w
各有两个元素,分别为a0
和a1
,以及w0
和w1
。
image-20240731001100502
a0
和a1
是4位无符号整数,而w0
和w1
是4位带符号整数。a0w0
, a0w1
, a1w0
, a1w1
)压缩到一个DSP块中。a1 * 2^11 + a0
和w1 * 2^22 + w0
。
image-20240731001115302
a0
映射到B端口,偏移量为0。a1
也映射到B端口,但是偏移量为11,这相当于a1 * 2^11
。w0
映射到预加器端口A,因为它是带符号的,所以它的符号位必须扩展到所有最高有效位(MSBs)。w1
同样因为是带符号的,不能映射到与w0
相同的端口,因此它被映射到预加器端口D,偏移量为22。a
和w
的元素数量,以及每个元素的位宽。a
和w
的偏移量分别存储在集合aoff
和woff
中,位宽分别存储在awdth
和wwdth
中。r
包含外积a·w>
的结果,其偏移量和位宽分别存储在roff
和rwdth
中。roff,j·|aoff|+i= aoff,i+ woff,j
。wwdth= awdth={4, 4}
, rwdth={8, 8, 8, 8}
, woff={0, 22}
, aoff={0, 11}
, roff={0, 11, 22, 33}
。
通过这种方式,INT-N不仅提供了INT4-Packing的泛化版本,而且也适用于其他类似的情况,比如INT8-Packing。这种技术允许设计者根据特定的应用需求灵活地配置DSP资源,以实现更高的硬件利用率和更好的性能。
接下来作者对乘法打包技术进行了详细的错误分析,并提出了一种新的方法称为“过打包(Overpacking)”来进一步提高DSP资源的利用效率,还介绍了一种将多个小位宽加法操作打包进FPGA DSP模块中的48位累加器的方法。
这些方法和技术共同提高了FPGA中DSP资源的利用效率,特别是在处理低精度算术运算时,如图像处理和机器学习应用。
在实验部分,论文通过一系列测试验证了所提出的不同打包技术的效果,包括INT4-Packing、Overpacking以及添加打包方案的性能。
在结论部分,论文总结了所提出的DSP-Packing方法的优势及其在小位宽乘法中的应用。
总体而言,论文提出的方法有效地提高了FPGA中DSP资源的利用率,尤其是在处理低精度数据时,如图像处理或机器学习应用中的量化数据。这些技术不仅提高了DSP的利用率,还提供了灵活性和适应性,以满足不同应用的具体需求。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有