引言
虽然运算误差一般是需要避免的,但是在诸如多媒体、无线通信、自动识别、数据挖掘等应用场景下,一定限度内的运算误差是可以接受的[[1]]。因为人类的感知能力是有限度的,这些运算误差并不会产生很大的不同,例如在声音、图像和视频处理中;另外,许多的数字信号处理系统的输入信号本身就是含有许多噪声的,限制了输出的精度;还有一些应用是基于统计学、概率学运算的,例如分类与识别算法(机器学习),这些算法的本质决定了其输出质量不会因为运算中的微小误差而发生巨大的衰减。据此可以认为,近似计算有着广阔的应用领域。
在近似计算领域,已有的工作涵盖了从电路到编程语言的机会每一个层面[[2]]。本课题的重心在于近似加法器电路,以及对近似加法器电路的性能评估。一般来说,有两种方法可以提升近似运算电路的运算速度和能效。第一种方法是通过电压过缩放(voltage Overscaling,VOS)来节省CMOS电路的功耗[[3]] ,尽管这种方法能够应用于大部分的场景下,其局限在于误差一般发生在高位(MSB)的关键路径上,误差偏大。第二种方法是重新设计加法器逻辑电路,从而得到近似加法器。例如[[4]]中提出的近似加法器电路,在离散余弦变换种,实现了60%的功耗削减,而相比之下,输出误差可以忽略不计。
卷积神经网络(Convolutional Neural Network, CNN)已在图像分类、语音检测等领域取得了广泛的成功。但是,CNN的运算量是很大的,许多CNN需要依靠性能优越的硬件来进行推理,与之伴随的是极高的功耗,并不能很好地应用于对功耗限制要求严苛的场景,比如低功耗的物联网设备中。权重二值化网络(Binary Weight Network, BWN)[[5]]的运算复杂度远小于传统CNN,却能取得优异的分类精度,所以近年来BWN逐渐受到关注。由于在BWN中所有的权重都二值化为 1和-1,所以可以消除大部分乘法运算,从而大幅削减功耗。在此基础上,如果可以继续利用BWN的容错特性,使用近似加法器电路,理论上可以更进一步节约功耗。[[6]]中探索并实现了针对BWN的高能效硬件架构,并取得了2.37倍的能效比提升。
近似加法器
加法器顾名思义是将两个二进制数相加的电路。常见的多位加法器结构包括行波进位加法器(ripple carry adder,RCA)和超前进位加法器(carry lookahead adder,CLA)。在n位行波进位加法器中,每一位全加器的进位输出都会传递到下一位的进位输入,因此其电路延时和电路复杂度与n成比例关系()。而在n位超前进位加法器中,所有位的运算同时进行,来产生sum、generate、propagate信号,因此其延时与n的对数成比例关系,与行波进位加法器相比显著缩短了关键路径。但是,超前几位加法器需要更大的电路面积(),并且产生更大的功耗。
已有的工作中提出了许多针对加法电路的近似策略。一种早期的思路是基于预测操作(speculative operation)的,n位加法的每一位和输出,都由和的最低k位来预测(klt;n)。分段(segmentation)与进位选择(carry select)的方法也提供了近似的思路。另外,还可以从一位全加器电路出发做近似设计,再将其组合为多位近似加法器。已有的工作中提出的加法器可以总结为如下几类。
几乎正确加法器(almost correct adder,ACA)[[7]]是基于最初的预测加法器结构设计的。在一个n位的ACA中,最低的k位被用于预测每一位和输出的进位(ngt;k),如图 1所示。因此,关键路径延时被减少到。最初的设计包括了(n-k)个k位部分进位产生器,所以其硬件占用率是非常高的(达到了)。之后这一缺陷被[7]中的工作所弥补,其方法是让部分进位产生器能够共用部分电路,从而减小电路的规模。
图 1 几乎全对加法器(ACA)。:和输出的进位传播路径
等分段加法器(equal segmentation adder,ESA)将n位加法器分成了多个k位的部分加法器,这些部分加法器之间进行并行运算,且他们的进位输入是固定的,所以部分加法器之间没有进位传播,如图 2所示[[8]]。ESA的电路延时是,电路复杂度是,其硬件开支远小于ACA。
