A Two-Speed, Radix-4, Serial–Parallel Multiplier
摘要
本文提出了一种用于加速数字滤波、CNN等应用的双速、基4、串行-并行乘法器,它是 Booth4乘法器的一种变体,加入了串行-并行修改。通过只加非零Booth编码来跳过0操作,这使延时取决于乘数的具体数值。利用两个具有不同关键路径的子电路来改善吞吐率和延迟。该乘法器在Intel CycloneV FPGA上通过四个不同的PVT工艺角进行了评估,对于32和64位宽的乘法,它比标准并行Booth乘法器在面积-时间上提高了1.42-3.36倍,具体取决于输入集。
一、简介
乘法是DSP和ML中最重要的原语,它决定了并行实现的面积、延时和整体性能。优化乘法电路的工作已经广泛开展,将高基数的改进Booth算法与Wallace树或Dadda树相结合已经被公认为是性能最高的方法。在数字电路中,乘法器通常采用三种方式实现:并行-并行(PP)、串行-并行(SP)和串行-串行(SS)。使用改进的Booth算法,我们开发了SP双速乘法器(TSM),它会有条件地将乘法的非零部分积相加,并跳过零编码部分。
在DSP和ML中,通常降低精度来提升设计的性能,尽量用最小的位宽实现所需的准确率。精度通常在设计时就要确定,因此需求的任何改变都需要进一步的修改,甚至是重新设计。在低精度时设计通常效率很低,因为要进行许多不必要的计算。为了改善这种情况,混合精度算法尝试在大多数时候保持低精度,在必要时再使用高精度。这通常用两个不同精度的数据通路操作来实现。
本文介绍了一种动态控制结构,可以在运行时完全移除某些运算。这是通过改进的串行Booth乘法器实现的,它可以并行获取两个操作数的所有位,跳过编码的全零或全一计算,而与位置无关。该乘法器可以设计为原语块,轻松地整合到现有的DSP、CPU和GPU中。对于某些输入集,该乘法器实现了相当大的性能提升。输入集的稀疏性和内部二进制表示都会导致性能提升。本文主要做了以下几点工作:
- 第一个串行的改进Booth乘法器,其中数据通路分为两个以不同关键路径工作的子电路。
- 演示了该乘法器如何利用特定位模式来执行较少的工作,它比传统乘法器有更低的延迟、更高的吞吐量和更高的面积-时间性能。
- 一个估计乘法器性能的模型,并通过FPGA实现评估了本乘法器的性能。
二、乘法(这一节不重要)
乘法是决定大型DSP性能的关键原语,ML的主要硬件优化都是降低乘加运算的消耗。因此精心构造的乘法单元会带来巨大的性能提升。本节介绍了一种无符号整数相乘的算法,然后将其扩展为有符号整数。
设x为被乘数,y为乘数,在r进制的传统表示法里由n位的向量X和Y表示。乘法操作产生
具体过程如图1所示,其实我没看懂....但这里不重要
公式(1)可以被扩展到有符号补码乘法
A. 乘法器优化
总结前人工作
B. 低精度CNN
总结前人工作
三、Booth4乘法
Booth4乘法器是并行-串行乘法器的扩展。计算
下式描述计算原理
编码e的生成公式为
其中i表示第i位,完整编码如表I所示
利用
为了对齐
四、双速乘法器
本节将介绍双速乘法器,它是串行Booth算法的扩展。关键修改是将电路分成两条路径,每条都有各自的关键路径
如算法2所示,在执行加法前,先检查e确定部分积是否为0,可以利用如下的skip信号来判断
当skip=1时仅需执行右移和循环计数累加,此时关键路径为
其中N由公式(5)定义,O是乘数Y中非零编码的数量。乘法的执行时间取决于Y的编码,总时间上下限在O=N和O=0时发生。从公式(11)中可知
最短执行时间是当输入Y=0时,此时乘数中的所有位均为0,Booth编码后也为0,所以O=0。有几种情况会导致最坏情况O=N,一种是0和1交错出现。
A. 控制
如图4(a)和(b)所示,控制电路主要由一个
控制器需要区分零编码和非零编码,它包含一个三门电路来实现公式(10)。取乘数y的最低三位,存在两种情况的0编码,该电路的作用即识别这两种零编码。当编码非零时,将有一个反相器连接到Count2的累加器,使其递增
B. 例子
图5为该乘法器的一个示例。每个周期检查乘数y的最低三位,并生成一个操作。