8位并行左移串行转换电路_一种双速、基4、串行-并行乘法器

本文提出了一种双速、基4、串行-并行乘法器,适用于数字滤波和CNN应用。通过优化Booth4算法,跳过0操作,根据乘数的数值动态调整延迟,提高吞吐率和面积-时间性能。在FPGA上评估显示,对于32和64位宽乘法,相比标准并行Booth乘法器,它在面积-时间上提升了1.42-3.36倍。
摘要由CSDN通过智能技术生成

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表示。乘法操作产生

,其中p由2n位的向量P表示。

005aeec09b106849c747e10f4286b53e.png
图1

具体过程如图1所示,其实我没看懂....但这里不重要

公式(1)可以被扩展到有符号补码乘法

A. 乘法器优化

总结前人工作

B. 低精度CNN

总结前人工作

三、Booth4乘法

ab6a92a2fc12fc05354cf55f8614bc9b.png
算法1 Booth4算法

Booth4乘法器是并行-串行乘法器的扩展。计算

,其中被乘数x和乘数y都是n位补码,乘积p为2n位补码。该算法分为N步,每步同时考虑Y中的三个数字来生成编码e,其中

下式描述计算原理

编码e的生成公式为

其中i表示第i位,完整编码如表I所示

7dea591d9fccc44a61bc362d70da8aef.png
表I

利用

和以下公式可以得到部分积

为了对齐

,需要将其左移
位,通过求和得到最终乘积。由于没有
,第0个部分积单独定义为
。串行乘法在N个周期内计算每个部分积,公式(9)即为Booth4算法的改进版本,如图2所示。为了实现更高的硬件利用率,改进了两个部分。首先,将乘数y存储在乘积p的n位LSB中(
),这可以省去储存y所需的寄存器。因此,随着p的右移
可以一直由p的最低三位计算。其次是将
累加到p的高n位,从而免去了部分积的左移对齐(
)

35b5b1cb54b4d21e16b3e1510b49e796.png
图2

四、双速乘法器

本节将介绍双速乘法器,它是串行Booth算法的扩展。关键修改是将电路分成两条路径,每条都有各自的关键路径

,如图3所示。乘法器的时钟频率是
,其中上半部分为延迟为
的组合电路,K是两个子电路的延时比。
是将结果存储到乘积寄存器之前完成加法所需的循环数,在乘法器的硬件实现中使用

d7989e3afb1cfbb89e6cf9f9b418b0e3.png
图3

如算法2所示,在执行加法前,先检查e确定部分积是否为0,可以利用如下的skip信号来判断

ee16b5b6880ae1b43226b82f16a4343e.png
算法2

当skip=1时仅需执行右移和循环计数累加,此时关键路径为

。当skip=0时,电路执行
次。这样可确保加法器和部分积发生器内有足够的传播时间,从而允许乘积寄存器遵守时序约束。因此乘法器花费的总时间为

其中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)所示,控制电路主要由一个

位累加器、一个
位累加器、一个比较器和三个用来识别非零编码的门构成。Count2负责记录加法所需要的周期数,以符合时钟约束(即
)。当编码非零时,Count2递增。Counter1记录已处理的编码数。完成一次乘法需要N个周期,因此累加器和Counter1的字长必须为
。当
或遇到零编码时,Count1递增,信号右移

103b41149d712c692ca20482a93e4631.png

控制器需要区分零编码和非零编码,它包含一个三门电路来实现公式(10)。取乘数y的最低三位,存在两种情况的0编码,该电路的作用即识别这两种零编码。当编码非零时,将有一个反相器连接到Count2的累加器,使其递增

B. 例子

图5为该乘法器的一个示例。每个周期检查乘数y的最低三位,并生成一个操作。

dc452f7fa5ba45529fac9d470870dc30.png
图5

C. 数据集分析与平均延时

D. 用时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值