CN110659014A - 乘法器及神经网络计算平台 - Google Patents
乘法器及神经网络计算平台 Download PDFInfo
- Publication number
- CN110659014A CN110659014A CN201810715399.XA CN201810715399A CN110659014A CN 110659014 A CN110659014 A CN 110659014A CN 201810715399 A CN201810715399 A CN 201810715399A CN 110659014 A CN110659014 A CN 110659014A
- Authority
- CN
- China
- Prior art keywords
- multiplexer
- input
- operand
- output
- multiplier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
提出了一种乘法器及相应神经网络计算平台。乘法器包括与第二操作数的位数数目相同的加法单元,每个加法单元包括一个多路选择器,且次低到最高位的加法单元各自包括一个移位器和一个加法器,第二操作数的每一位作为对应多路选择器的选择信号送入;最低位多路选择器的第一输入端的输入为零,后续输入为在前多路选择器的输出;最低位多路选择器的第二输入端的输入为第一操作数,后续输入为在前多路选择器的输出与经移位第一操作数之和;最高位多路选择器的输出端输出第一和第二操作数的相乘结果,至少一个多路选择器的第二输入端上布置有寄存器。该乘法器把乘法展开为加法运算来提高时钟频率,利用稀疏性减少运算时间,由此有效加速神经网络计算。
Description
技术领域
本发明涉及数字电路,尤其涉及乘法器、相乘方法及其所应用的神经网络计算平台。
背景技术
神经网络(Neural Network)近年来成为图像识别领域的研究热点。经训练的神经网络模型,可以用于图像分类、物体识别与显著性检测等诸多领域。近年来神经网络模型呈现计算规模增加、复杂度提升的趋势,利用传统的CPU平台,已无法满足其实用性需求。因此,利用FPGA、GPU、ASIC等异构计算平台进行神经网络加速器设计成为新的研究热点。其中,相较GPU平台,FPGA和ASIC能够实现更为灵活的硬件架构以及更高的计算能效比,更适应算法高速发展的要求。
由于原生网络中的非线性操作(比如ReLU)以及对网络的剪枝和压缩,使得在异构计算平台,尤其是在FPGA或ASIC实现的计算平台上部署的神经网络中的参数和特征值总是存在大量的零。在针对权重和特征值的大量乘法运算中,现有的乘法运算和对零值判断所需时间往往相同,使得神经网络的上述稀疏性并没有得到很好的利用。
因此,需要一种能够充分利用神经网络的稀疏性来提升神经网络计算效率的方案。
发明内容
为了对神经网络中的稀疏性加以利用,本发明提供了一种特殊设计的硬件乘法单元,通过把乘法展开成若干拍的加法运算来提高时钟频率,同时利用稀疏性减少运算时间,从而可以有效加速神经网络的计算。
根据本发明的一个方面,提出了一种用于将第一操作数与第二操作数相乘的乘法器,包括:与第二操作数的位数数目相同的加法单元,每个加法单元包括一个多路选择器,并且次低位到最高位的加法单元各自包括一个移位器和一个加法器,其中第二操作数的每一位作为与之对应的多路选择器的选择信号送入;最低位多路选择器的第一输入端的输入为零,后续每个多路选择器的第一输入端的输入为在前多路选择器的输出;最低位多路选择器的第二输入端的输入为第一操作数,后续每个多路选择器的第二输入端的输入为在前多路选择器的输出与经移位器移位的所述第一操作数的由加法器相加之和;最高位多路选择器的输出端输出所述第一操作数所述第二操作数的相乘结果,并且其中,至少一个多路选择器的第二输入端上布置有寄存器。
通过将乘法拆分成若干时钟周期的移位加法,并加入至少一个寄存器减小关键路径,能够实现比现有乘法器所需的更高的时钟频率。由此,针对稀疏度较高的操作数,能够以一个时钟周期输出0值,从而能够整体上提升系统的计算效率。
可以在预定间隔的所述加法单元的多路选择器的第二输入端上布置有寄存器。优选地,可以在每个加法单元的多路选择器的第二输入端上布置有寄存器。还可以在加法单元之前布置第一操作数寄存器。更为密集的寄存器能够使得缩短关键路径,由此缩短延时并相应提升系统时钟频率。
本发明的乘法器还可以包括接收有效信号的送入并在所述乘法器输出所述相乘结果的时钟周期输出有效信号的控制通路。优选地,所述控制通路包括与每个加法单元相对应的多路选择器单元,其中,第二操作数的每一位作为与之对应的多路选择器的选择信号送入;最低位多路选择器的第一输入端和第二输入端的输入为所述有效信号,后续每个多路选择器的第一输入端和第二输入端的输入为在前多路选择器的输出;所述最高位多路选择器的输出端在所述最高位多路选择器输出所述相乘结果同一的时钟周期输出所述有效信号,并且其中,与所述加法单元相对应地在至少一个多路选择器的第二输入端上布置有寄存器。
根据本发明的另一个方面,提出了一种将第一操作数与第二操作数相乘的方法,包括:将第二操作数的每一位送入与之对应的多路选择器的选择信号输入端;将零输入最低位多路选择器的第一输入端,并将每个在前多路选择器的输出作为在后多路选择器的第一输入端的输入;将第一操作数输入最低位多路选择器的第二输入端,并将所述每个在前多路选择器的输出与经移位的所述第一操作数之和作为在后多路选择器的第二输入端的输入;以及由最高位多路选择器的输出端输出所述第一操作数所述第二操作数的相乘结果。其中,至少一个多路选择器的第二输入端上布置有寄存器,例如以预定间隔布置或在每一个加法单元的多路选择器的第二输入端上布置有寄存器。优选地,可以将所述第一操作数在与所述第二操作数相乘之前经过一个时钟周期的寄存器寄存。输出所述相乘结果所需的时钟周期数与上述寄存器的数量正相关。
本方法还可以包括:将有效信号送入控制通路以在输出所述相乘结果的时钟周期输出所述有效信号,具体可以包括:将第二操作数的每一位送入与之对应的多路选择器的选择信号输入端;将所述有效信号输入最低位多路选择器的第一输入端和第二输入端,并且将在前多路选择器的输出输入后续每个多路选择器的第一输入端和第二输入端;在所述最高位多路选择器输出所述相乘结果同一的时钟周期从所述最高位多路选择器的输出端输出所述有效信号,并且其中,在与用于相乘的至少一个多路选择器相对应的多路选择器的第二输入端上布置有寄存器。
根据本发明的另一个方面,提出了一种神经网络计算平台,包括用于执行高并行度卷积计算的并行计算模块,其中,所述并行计算模块可以包括如上所述的乘法器。上述乘法器可以执行如上所述的相乘方法。
适于布置本发明的乘法器的计算平台优选是执行定点量化神经网络计算的定点神经网络计算平台。定点神经网络计算平台至少部分由FPGA、GPU和/或ASIC实现。定点量化的位宽由所述FPGA、GPU和/或ASIC规定的位宽决定。每个所述乘法器中的加法单元个数由所述位宽决定。
在实际应用中,可以规定第一操作数是特征值数据,第二操作数是权重数据。另外,计算平台的系统频率可以与每个所述乘法器中的寄存器数量正相关。
本发明提出了一种针对神经网络中的稀疏性而特殊设计的乘法单元,通过把乘法展开成若干拍的加法运算来提高时钟频率,同时利用稀疏性减少运算时间,从而可以有效加速神经网络的计算。时钟频率的提升水平以及乘法器最大时钟周期可由乘法器中寄存器的布置数量确定。另外,可以引入类似布置的控制通路在获知相乘结果的具体输出时钟周期。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了典型CNN的构成例。
图2示出了神经网络中一个卷积层的典型操作例。
图3示出了卷积操作的一个例子。
图4示出了根据本发明一个实施例的乘法器的示意图。
图5示出了二进制乘法的一个例子。
图6示出了根据本发明另一个实施例的乘法器的示意图。
图7示出了与图6所示乘法器的加法单元对应配置的控制通路的一个例子。
图8示出了根据本发明一个实施例的相乘方法的示意图。
图9示出了可以应用本发明乘法器的用于神经网络计算的SoC的一个例子。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
人工智能近年得到迅速发展,在图像分类、检测、视频和语音处理等领域取得良好的应用效果,并且依然具备极大的发展前景。神经网络是人工智能应用的核心,深度学习神经网络算法是其中最常见的一种神经网络模型。神经网络的工作负载特征是计算和数据密集。神经网络计算所需的乘加操作通常为G数量级,例如目标检测类神经网络SSD的计算量为120G操作次数。而计算所需参数则通常为M至数百M字节数量级,例如分类神经网络VGG的参数为480M字节。
常见的人工神经网络(ANN)包括深度神经网络(DNN)、循环神经网络(RNN)与卷积神经网络(CNN)。以下以CNN为例进行一定程度的背景说明。
CNN基本概念
如图1所示,典型的CNN由一系列有序运行的层(Layer)组成。
CNN神经网络由输入层、输出层和多个隐藏层串联组成。CNN的第一层读取输入值,例如输入图像,并输出一系列的激活值(也可称为特征图)。下面的层读取由上一层产生的激活值,并输出新的激活值。最后一个分类器(classifier)输出该输入图像可能属于的每一类别的概率。
这些层大致可分为带权重的层(如CONV层、全连接层、批量归一化层等)和不带权重的层(如池化层、ReLU层、Softmax层等)。CONV层(Convolutional layers,卷积层)以一系列特征图作为输入,并以卷积内核卷积获得输出激活值。池化层(Pooling layer)通常与CONV层相连,用于输出每个特征图中的每个分区(sub area)的最大值或平均值,由此通过亚采样降低计算量,同时保持某种程度的位移、尺度和形变不变性。一个CNN中可以包括卷积层和池化层之间的多个交替,由此逐步降低空间分辨率并增加特征映射的数量。CONV层之间也可以不经过池化层直接相连。随后可以连接至至少一个全连接层(FC),通过应用于输入特征向量上的线性变换,得到包括多个特征值的一维向量输出。
总体来说,带权重的层的操作可以表示为:
Y=WX+b,
其中W为权重值,b为偏置,X为输入激活值,Y为输出激活值。
不带权重的层的操作可以表示为:
Y=f(X),
其中f(X)为非线性函数。
在此,“权重”(weights)指代隐藏层中的参数。在CNN网络中,可以将权重认为是针对每一卷积层尺寸可以有所变化,针对每一卷积层的每个通道取值也可以有所变化的卷积核。从广义上理解,权重还可以包括偏置,并且是通过训练过程习得的数值,并且在推理时保持不变。另外,CNN还可以包括用于执行其他操作的参数,例如不带权重的层进行各类操作所需的参数。激活值指代从输入层开始,每一层的输出由输入值和权重值通过运算得到,在各层之间传递的数值,也称为特征值。与参数值不同,激活值的分布会根据输入数据样本而动态变化。
如图所示,在特征值被送入FC层之前,从输入特征图(输入图像)开始的各个层都具有多个通道(channel),用以表征输入图像的不同特征。在输入为彩色图像时,最初的输入特征图通常具有RGB三个通道,同一层内不同通道的特征值与尺寸相同但取值可以不同的卷积核分别进行卷积计算以生成该层的输出特征值,随后该特征值被送入通道数与卷积核大小可以不同的下一CONV层(Layer 1)中进行进一步的特征提取。重复上述过程直至Layer 7的输出被送入FC层。如图所示,在输入特征图中的W、H和C分别指代宽、高和通道三个维度。上述箭头可以指代具体计算顺序或计算并行度(尤其是在高并行度计算平台上进行计算的情况下)。
第一个FC层可以是用于将各个通道的特征提取为一个一维特征向量的全连接层。第二个FC层则可以是用于进行分类的分类器。
卷积层的操作
无论是DNN、RNN还是CNN,典型的神经网络模型,尤其是用于计算机视觉应用的神经网络模型都包括如图1所示的多个CONV层。针对每个CONV层,都会从输入的特征图数据中提取出更高级别的抽象数据,以保留输入数据中重要且唯一的信息。现代的DNN能够通过利用深层级(例如,几百个卷积层)来实现优异的视觉性能。
图2示出了神经网络中一个卷积层的典型操作例。上述操作同样适用于全连接层,例如图1所示的FC层。每个卷积层的三维输入是具有多个通道(C)的二维特征图(W×H)。对进行视觉处理的神经网络而言,其第一次的输入通常是具有RGB三个颜色通道的二维图像。多个三维过滤器(具有R×S×C维度的M个过滤器,过滤器也可被称为卷积核)随后与输入特征图进行卷积,并且每个过滤器可以生成输出的三维特征图(具有M个通道的二维E×F特征图)的一个通道。相同的一组M个过滤器可以应用于具有N个输入特征图的批次(B)。于是,N个输入特征图能够获取N个输出特征图(在此,也可以将批次B看作是输入的第四个维度)。此外,可以对经过滤的结果施加1维的偏置(图2中未示出)。
图3示出了卷积操作的一个例子。该卷积操作可以看作是在某一个通道C上,二维过滤器(R×S)与二维特征图(W×H)的卷积。如图3所示,使用一个3x3(R×S)的卷积核,以步长1对一个5x5(W×H)的特征图进行卷积计算。图的左侧示出了第一次卷积计算,中间示出了第二次卷积计算,依次类推。根据卷积计算的定义可知,每次具体的卷积计算可以分解成多次乘加计算。在经过9次卷积计算后,得到图3右侧的经卷积的3x3特征图。这9次的卷积计算之间不存在依赖关系,因此可以在利用高并行度计算平台进行计算时,在单次操作中完成执行(并行度M通常可以达到数千量级)。图3可以看作是CONV层多个通道中的一个通道C的卷积操作,在完成了所有通道C的卷积操作以及后续的相加操作后才能得到输出三维特征图的M个通道中的一个通道的特征图。更进一步地,上述输出三维特征图(具有M个通道的二维E×F特征图)也只是该批次中N个输出三维特征图之一。
神经网络的定点量化和部署
在部署使用CNN进行推理(例如,图像分类)之前,首先需要对CNN进行训练。通过训练数据的大量导入,确定神经网络模型各层的参数,例如权重和偏置。
为了保证训练精度,通常在神经网络训练时采用浮点或更高精度。神经网络的冗余性和抗干扰性为将其转换为定点提供了可能。嵌入式和移动式硬件存储容量和计算能力有限,甚至没有浮点运算单元,定点量化则为将复杂网络部署在这些设备上提供了可能。
神经网络模型中的定点量化是指将一组高精度浮点数量化为低精度的定点值,实质是将一个连续的数据分布映射到有限的离散分布的过程,即:
X’=F1(X),
其中X为原浮点数值,X’为量化后的定点数值。在输出时,需要将量化后的定点数值还原为浮点数值,即:
X”=F2(X’),
其中X”为还原后浮点数值。还原后的数值与原浮点数值的差距称为量化误差,即:
Loss=∑(X-X”)^2。
常见的量化方法中的F1和F2函数为非线性函数或线性函数。采用线性量化使得定点值和浮点值之间为线性关系,减小了定浮点转换所需运算量。为了优化神经网络的推理速度,通常优选采用线性量化的方式。
为了将训练之后的深度神经网络进行部署,需要使用编译器将神经网络算法编译成计算平台所能执行的二进制指令流。不同于使用如C++或Java等的高级语言开发的应用程序,神经网络算法有着自己独特的语法和结构。有鉴于此,业已出现了专用于神经网络计算的高性能计算平台以及相应的神经网络编译器。例如,一种深度神经网络编译器DNNC(Deep Neural Network Compiler)可将神经网络算法编译成为DPU(Deep LearningProcessor Unit,深度学习专用处理器)平台的优化指令流。经编译的二进制指令码随后可送入专用的神经网络计算平台(例如,DPU)以执行针对上述定点量化的参数和特征图数据的高效神经网络推理运算。在此,神经网络计算平台可以指代专用于执行神经网络推理计算的硬件平台,其也可被称为神经网络计算系统,并且可以被实现为神经网络专用的处理器,如上文所述的DPU。
参数和特征图数据的定点量化位宽通常由执行神经网络计算的具体计算平台决定。计算平台通常会综合考虑应用场合、硬件约束等诸多因素而以16比特、8比特甚至4比特的位宽实现。
本发明的乘法器
如上所述,部署在定点神经网络计算平台上的经定点量化的神经网络数据通常具有极高的稀疏性,即,由原生网络中的非线性操作(比如ReLU)以及对网络的剪枝和压缩而造成的神经网络参数和特征值中存在大量的零。
如上结合图2和3所述,神经网络推理计算中涉及大量的乘法运算。乘法中如果有一个乘数是零,则积为零。如果能在这些运算中跳过零值元素,则可以节省运行时间。但是在现有技术中,对零的判断往往与乘法运算同样需要消耗一个时钟周期相同,因此大量的零的存在并未能省掉运行时间。
有鉴于此,本发明提供了一种针对神经网络中的稀疏性而特殊设计的乘法单元,通过把乘法展开成若干拍的加法运算来提高时钟频率,同时利用稀疏性减少运算时间,从而可以有效加速神经网络的计算。
图4示出了根据本发明一个实施例的乘法器的示意图。图4所示的乘法器可用于执行4比特乘法。在此就以4比特为例对本发明的乘法器及其操作进行描述。可以理解的是,本发明的乘法器同样可以根据需求实现为其他位数的乘法器,例如8比特乘法器等等。另外,在本发明中,“比特”和“位”用于指代二进制操作数中的一个位元(bit),在此可以互换使用。
如图所示,乘法器100可以用于将第一操作数与第二操作数相乘。在此,可以假设第一操作数为A,第二操作数为B。第一操作数A[3:0]例如以从低到高的位次送入乘法器100。
乘法器100可以包括与第二操作数的位数数目相同的加法单元,在此例中,包括4个加法单元110、120、130和140。每个加法单元都各自包括一个多路选择器。即,加法单元110包括多路选择器111,加法单元120包括多路选择器121,加法单元130包括多路选择器131,并且加法单元140包括多路选择器141。
次低位到最高位的加法单元各自包括一个移位器和一个加法器。在此例中,加法单元120包括移位器122和加法器123,加法单元130包括移位器132和加法器133,并且加法单元140包括移位器142和加法器143。
在操作中,第二操作数的每一位作为与之对应的多路选择器的选择信号送入。在此例中,B[0](即,第二操作数的第0位)送入多路选择器111的选择信号输入端;B[1]送入多路选择器121的选择信号输入端;B[2]送入多路选择器131的选择信号输入端;以及B[3]送入多路选择器131的选择信号输入端。
最低位多路选择器的第一输入端的输入为零,后续每个多路选择器的第一输入端的输入为在前多路选择器的输出。在此例中,多路选择器111的第一输入端为0;多路选择器121的第一输入端的输入为多路选择器111的输出;多路选择器131的第一输入端的输入为多路选择器121的输出;以及多路选择器141的第一输入端的输入为多路选择器131的输出。
最低位多路选择器的第二输入端的输入为第一操作数,后续每个多路选择器的第二输入端的输入为在前多路选择器的输出与经移位器移位的所述第一操作数的由加法器相加之和。在此例中,多路选择器111的第二输入端为第一操作数A本身。多路选择器121的第二输入端的输入为多路选择器111的输出与经移位器122向左移了一位的第一操作数由加法器123相加之和;多路选择器131的第二输入端的输入为多路选择器121的输出与经移位器132向左移了一位的第一操作数由加法器133相加之和;以及多路选择器141的第二输入端的输入为多路选择器131的输出与经移位器142向左移了一位的第一操作数由加法器143相加之和。
最后,最高位多路选择器的输出端输出所述第一操作数与所述第二操作数的相乘结果。在此例中,多路选择器141的输出端输出第一操作数A与第二操作数B的相乘结果。
由二进制算术运算的特性可知,二进制数的乘法可以通过若干次的“被乘数(或零)左移1位”和“被乘数(或零)与部分积相加”这两种操作完成。图5示出了二进制乘法的一个例子。在此,将1001看作第一操作数,0101看作第二操作数,则1001与0101的乘积可以看作是1001与左移两位的100100之和,即101101。由此,基于一个时钟周期的乘法等效于若干时钟周期的移位加法的特性构造得到本发明的乘法器。
在第二操作数为零的情况下,由于每个多路选择器的选择信号都为零,则直接将多路选择器111的第一输入端的输入0作为最终输出进行输出。而在第二操作数不为零的情况下,例如,在B[0]和B[2]为1的情况下,则可以输出操作数A(例如,1001)与左移两位的操作数A(例如,100100)之和(101101)作为最终的相乘结果进行输出。
至少一个多路选择器的第二输入端上布置有寄存器(Reg)。在此例中,多路选择器121和141的第二输入端上分别布置有寄存器124和144。换句话说,多路选择器111的输出与经移位器122向左移了一位的第一操作数由加法器123相加之和在送入多路选择器121的第二输入端之前,由寄存器124寄存了一个时钟周期。多路选择器131的输出与经移位器142向左移了一位的第一操作数由加法器143相加之和在送入多路选择器141的第二输入端之前,由寄存器144寄存了一个时钟周期。由此,通过引入寄存器使得两寄存器之间的关键路径变短,从而使得本发明的乘法器中每条关键路径内的延时要远优于常规乘法器,因此能够以更高的时钟频率进行工作。
在此,寄存器布置的越密集,关键路径的延时就越小,使得系统能够在更高的时钟频率下工作。在一个实施例中,可以在预定间隔的加法单元的多路选择器的第二输入端上布置有寄存器。在一个优选实施例中,可以在每个加法单元的多路选择器的第二输入端上布置寄存器。为了进一步提升时钟频率,还可以在所有加法单元之前布置用于寄存第一操作数的第一操作数寄存器。图6示出了根据本发明另一个实施例的乘法器的示意图。图6是用于执行8比特乘法的例子,并且优选为每个多路选择器在其第二输入端布置了一个寄存器,并且还为第一操作数在真正送入乘法器之前布置了一个寄存器。由此,由于关键路径上只有一个加法器和一个多路选择器,因此图6所示乘法器的延时要远优于常规乘法器,可以在至少两倍的高速时钟频率下进行工作。
在图6所示的结构中,当乘数B为零时,在一个时钟周期后得到乘积0。当乘数B不为零时,若B中有N比特不为零(即,B中有N位为1),则在N+1周期后得到乘积AxB,其中1个周期对应于第一操作数寄存器的寄存,N个周期分别对应于为1的位数所对应的加法单元中的寄存器。
由于最终输出相乘结果所需的时钟周期不定,由此,本发明的乘法器优选还包括接收有效信号的送入并在所述乘法器输出所述相乘结果的时钟周期输出有效信号的控制通路。换句话说,可以在将第一和第二操作数送入乘法器的同一时钟周期,将数据有效信号送入控制通路。该控制通路例如可以通过与加法单元相类似的多路选择器串联结构来实现对相乘结果输出的有效通报。在一个实施例中,控制通路包括与每个加法单元相对应的多路选择器单元,其中,第二操作数的每一位作为与之对应的多路选择器的选择信号送入;最低位多路选择器的第一输入端和第二输入端的输入为所述有效信号,后续每个多路选择器的第一输入端和第二输入端的输入为在前多路选择器的输出;所述最高位多路选择器的输出端在所述最高位多路选择器输出所述相乘结果同一的时钟周期输出所述有效信号,并且其中,与所述加法单元相对应地在至少一个多路选择器的第二输入端上布置有寄存器。
图7示出了与图6所示乘法器的加法单元对应配置的控制通路的一个例子。如图7所示,控制通路包括与图6的加法单元一一对应的多路选择器,并且为了使得有效信号(VALID)能与相乘结果同步输出,控制通路也与乘法器部分相对应的布置了一个对应于输入的有效信号的寄存器以及用于每一个多路选择器第二输入端的寄存器。
如上结合图4-7描述了根据本发明的乘法器及其优选实施例。本发明的方案还可以实现为一种相乘方法。图8示出了根据本发明一个实施例的相乘方法的示意图。具体地,图8示出了一种将第一操作数与第二操作数相乘的方法800。
在步骤S810,将第二操作数的每一位送入与之对应的多路选择器的选择信号输入端。在步骤S820,将零输入最低位多路选择器的第一输入端,并将每个在前多路选择器的输出作为在后多路选择器的第一输入端的输入。在此,将0输入例如图4所示多路选择器111的第一输入端能够确保在操作数B为0的情况下对相乘结果0的单时钟周期输出。在步骤S830,将第一操作数输入最低位多路选择器的第二输入端,并将所述每个在前多路选择器的输出与经移位的所述第一操作数之和作为在后多路选择器的第二输入端的输入。在步骤S840,由最高位多路选择器的输出端输出所述第一操作数所述第二操作数的相乘结果。
至少一个多路选择器的第二输入端上布置有寄存器,例如,如图4所示以预定间隔布置或如图6所示在每一个加法单元的多路选择器的第二输入端上布置有寄存器。优选地,可以将所述第一操作数在与所述第二操作数相乘之前经过一个时钟周期的寄存器寄存。输出所述相乘结果所需的时钟周期数与上述寄存器的数量正相关。
本领域技术人员应该理解的是,第一和第二操作数的输入可以是在同一时钟周期内进行的。换句话说,上述步骤S810、以及S820和S830中最初的零和第一操作数的输入可以是同时进行的。在第二操作数B等于0的情况下,可以不考虑步骤S820和S830中的后续操作,而直接经由直连的第一输入端通路输出为0的相乘结果。
在一个实施例中,本方法还可以包括:将有效信号送入控制通路以在输出所述相乘结果的时钟周期输出所述有效信号,具体可以包括:将第二操作数的每一位送入与之对应的多路选择器的选择信号输入端;将所述有效信号输入最低位多路选择器的第一输入端和第二输入端,并且将在前多路选择器的输出输入后续每个多路选择器的第一输入端和第二输入端;在所述最高位多路选择器输出所述相乘结果同一的时钟周期从所述最高位多路选择器的输出端输出所述有效信号,并且其中,在与用于相乘的至少一个多路选择器相对应的多路选择器的第二输入端上布置有寄存器。
如上所述的乘法器及其相应操作方法尤其适用于稀疏神经网络。在目前实际应用的稀疏网络中,参数为零的个数占比多达60%~80%,如果进一步考虑到不为零的参数本身还有相当多的位数为零,则采用本发明的乘法器架构的神经网络计算平台就能获得相当高的计算效率提升。
因此,本发明还提出了一种神经网络计算平台,包括用于执行高并行度卷积计算的并行计算模块,其中,所述并行计算模块可以包括如上所述的乘法器。上述乘法器可以执行如图8所示的相乘方法。
本发明的乘法器通过把乘法展开成若干拍的加法运算来提高时钟频率,同时利用稀疏性减少运算时间来实现计算效率提升。由于每进行一次乘法运算所需的时钟周期与第二操作数的位数线性相关,因此如果位数太多则,稀疏性带来的收益很可能无法抵消时钟周期的增加。为此,本发明适用于第一和第二操作数的位数不多的情况。换句话说,适于布置本发明的乘法器的计算平台优选是执行定点量化神经网络计算的定点神经网络计算平台。定点神经网络计算平台至少部分由FPGA、GPU和/或ASIC实现。定点量化的位宽由所述FPGA、GPU和/或ASIC规定的位宽决定。每个所述乘法器中的加法单元个数由所述位宽决定。
在一个实施例中,本发明的乘法器可以在包括通用处理器、存储器和数字电路的片上系统(SoC)中应用。图9示出了可以应用本发明乘法器的用于神经网络计算的SoC的一个例子。可由SoC上的数字电路部分(例如,由FPGA实现的可编程计算模块)来实现本系统所需的深度学习网络,例如卷积神经网络。具体地,用于执行高并行度计算的复杂计算核可由多个计算单元(PE)构成,其中每个PE都可以使用本发明所述的多个乘法器来进行神经网络推理所需的乘法运算。应该理解的是,还可以使用图9的可编程逻辑模块所示以外的其他架构来实现本发明的神经网络计算系统。例如,在其他实施例中,本发明的乘法器也可以在例如由ASIC实现的专用神经网络处理器中得到应用。
在实际应用中,可以自由选择将特征值数据还是权重数据用作第一或是第二操作数。由于权重数据的稀疏度更大,因此在一个优选实施例中,可以规定第一操作数是特征值数据,第二操作数是权重数据。
由于两寄存器之间的关键路径决定了本发明乘法器的延时,而乘法器又是神经网络计算系统的主要计算部件,因此计算平台的系统频率与每个所述乘法器中的寄存器数量正相关。换句话说,寄存器数量越多,最高时钟频率就可以越高。但另一方面,乘法器中布置的寄存器数量也多,完成一次乘法运算所需的最大时钟周期也就越高。例如,图6的结构图按照每一位都被寄存器寄存一拍来设计,并且为第一操作数的输入也布置了一拍寄存,因此最大需要8+1个时钟周期得到相乘结果。而在图4的结构图和其他实施例中,可以根据实际情况每两位或者更多位再寄存一拍。由此,乘法器中完成一次乘法运算所需的最大时钟周期会相应减小,但运行的最高时钟频率会由于关键路径增长导致的延时增大而变小。因此,在实际应用中,可以根据神经网络计算平台的定点位宽,神经网络的参数稀疏度,以及系统运行频率等合理选择乘法器内寄存器的布置密度。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (20)
1.一种用于将第一操作数与第二操作数相乘的乘法器,包括:
与第二操作数的位数数目相同的加法单元,每个加法单元包括一个多路选择器,并且次低位到最高位的加法单元各自包括一个移位器和一个加法器,其中
第二操作数的每一位作为与之对应的多路选择器的选择信号送入;
最低位多路选择器的第一输入端的输入为零,后续每个多路选择器的第一输入端的输入为在前多路选择器的输出;
最低位多路选择器的第二输入端的输入为第一操作数,后续每个多路选择器的第二输入端的输入为在前多路选择器的输出与经移位器移位的所述第一操作数的由加法器相加之和;
最高位多路选择器的输出端输出所述第一操作数所述第二操作数的相乘结果,并且其中,
至少一个多路选择器的第二输入端上布置有寄存器。
2.如权利要求1所述的乘法器,其中,预定间隔的所述加法单元的多路选择器的第二输入端上布置有寄存器。
3.如权利要求1所述的乘法器,其中,每个加法单元的多路选择器的第二输入端上布置有寄存器。
4.如权利要求1所述的乘法器,还包括:
布置在加法单元之前的第一操作数寄存器。
5.如权利要求1所述的乘法器,还包括接收有效信号的送入并在所述乘法器输出所述相乘结果的时钟周期输出有效信号的控制通路。
6.如权利要求5所述的乘法器,其中,所述控制通路包括与每个加法单元相对应的多路选择器单元,其中,
第二操作数的每一位作为与之对应的多路选择器的选择信号送入;
最低位多路选择器的第一输入端和第二输入端的输入为所述有效信号,后续每个多路选择器的第一输入端和第二输入端的输入为在前多路选择器的输出;
所述最高位多路选择器的输出端在所述最高位多路选择器输出所述相乘结果同一的时钟周期输出所述有效信号,并且其中,
与所述加法单元相对应地在至少一个多路选择器的第二输入端上布置有寄存器。
7.一种将第一操作数与第二操作数相乘的方法,包括:
将第二操作数的每一位送入与之对应的多路选择器的选择信号输入端;
将零输入最低位多路选择器的第一输入端,并将每个在前多路选择器的输出作为在后多路选择器的第一输入端的输入;
将第一操作数输入最低位多路选择器的第二输入端,并将所述每个在前多路选择器的输出与经移位的所述第一操作数之和作为在后多路选择器的第二输入端的输入;
由最高位多路选择器的输出端输出所述第一操作数所述第二操作数的相乘结果,并且其中,
至少一个多路选择器的第二输入端上布置有寄存器,并且
输出所述相乘结果所需的时钟周期数与所述寄存器的数量正相关。
8.如权利要求7所述的方法,其中,预定间隔的所述加法单元的多路选择器的第二输入端上布置有寄存器,并且所述方法包括:
在将所述第一操作数和/或在前多路选择器的输出与经移位的所述第一操作数之和送入布置寄存器的在后多路选择器的第二输入端之前经过一个时钟周期的所述寄存器寄存。
9.如权利要求7所述的方法,其中,每个加法单元的多路选择器的第二输入端上布置有寄存器,并且所述方法包括:
在将所述第一操作数和每个在前多路选择器的输出与经移位的所述第一操作数之和送入在后多路选择器的第二输入端之前经过一个时钟周期的寄存器寄存。
10.如权利要求7所述的方法,还包括:
将所述第一操作数在与所述第二操作数相乘之前经过一个时钟周期的寄存器寄存。
11.如权利要求7所述的方法,还包括:
将有效信号送入控制通路以在输出所述相乘结果的时钟周期输出所述有效信号。
12.如权利要求11所述的方法,其中,将有效信号送入控制通路以在输出所述相乘结果的时钟周期输出所述有效信号包括:
将第二操作数的每一位送入与之对应的多路选择器的选择信号输入端;
将所述有效信号输入最低位多路选择器的第一输入端和第二输入端,并且将在前多路选择器的输出输入后续每个多路选择器的第一输入端和第二输入端;
在所述最高位多路选择器输出所述相乘结果同一的时钟周期从所述最高位多路选择器的输出端输出所述有效信号,并且其中,
在与用于相乘的至少一个多路选择器相对应的多路选择器的第二输入端上布置有寄存器。
13.一种神经网络计算平台,包括用于执行高并行度卷积计算的并行计算模块,其中,所述并行计算模块包括如权利要求1-6中任一项所述的乘法器。
14.如权利要求13所述的计算平台,其中,所述计算平台是执行定点量化神经网络计算的定点神经网络计算平台。
15.如权利要求14所述的计算平台,其中,所述定点神经网络计算平台至少部分由FPGA、GPU和/或ASIC实现。
16.如权利要求15所述的计算平台,其中,所述定点量化的位宽由所述FPGA、GPU和/或ASIC规定的位宽决定。
17.如权利要求16所述的计算平台,其中,每个所述乘法器中的加法单元个数由所述位宽决定。
18.如权利要求17所述的计算平台,其中,所述位宽为4比特或8比特。
19.如权利要求13所述的计算平台,其中,所述第一操作数是特征值数据,所述第二操作数是权重数据。
20.如权利要求13所述的计算平台,其中,所述计算平台的系统频率与每个所述乘法器中的寄存器数量正相关。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810715399.XA CN110659014B (zh) | 2018-06-29 | 2018-06-29 | 乘法器及神经网络计算平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810715399.XA CN110659014B (zh) | 2018-06-29 | 2018-06-29 | 乘法器及神经网络计算平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110659014A true CN110659014A (zh) | 2020-01-07 |
CN110659014B CN110659014B (zh) | 2022-01-14 |
Family
ID=69027189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810715399.XA Active CN110659014B (zh) | 2018-06-29 | 2018-06-29 | 乘法器及神经网络计算平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110659014B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111275180A (zh) * | 2020-02-28 | 2020-06-12 | 西安微电子技术研究所 | 一种降低深度神经网络数据迁移及功耗的卷积运算结构 |
CN112906863A (zh) * | 2021-02-19 | 2021-06-04 | 山东英信计算机技术有限公司 | 一种神经元加速处理方法、装置、设备及可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101082858A (zh) * | 2007-07-12 | 2007-12-05 | 北京航空航天大学 | 一种cordic算法的实现装置 |
US8242829B1 (en) * | 2009-06-24 | 2012-08-14 | Arris Group, Inc. | Multichannel interpolator |
US8410903B2 (en) * | 2008-06-16 | 2013-04-02 | Canon Kabushiki Kaisha | Personal authentication apparatus and personal authentication method |
CN103491375A (zh) * | 2013-05-29 | 2014-01-01 | 东南大学 | 基于binDCT算法的JPEG压缩系统 |
CN107527090A (zh) * | 2017-08-24 | 2017-12-29 | 中国科学院计算技术研究所 | 应用于稀疏神经网络的处理器和处理方法 |
CN107729996A (zh) * | 2016-08-11 | 2018-02-23 | 图芯芯片技术有限公司 | 零系数跳过卷积神经网络引擎 |
CN107797962A (zh) * | 2017-10-17 | 2018-03-13 | 清华大学 | 基于神经网络的计算阵列 |
-
2018
- 2018-06-29 CN CN201810715399.XA patent/CN110659014B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101082858A (zh) * | 2007-07-12 | 2007-12-05 | 北京航空航天大学 | 一种cordic算法的实现装置 |
US8410903B2 (en) * | 2008-06-16 | 2013-04-02 | Canon Kabushiki Kaisha | Personal authentication apparatus and personal authentication method |
US8242829B1 (en) * | 2009-06-24 | 2012-08-14 | Arris Group, Inc. | Multichannel interpolator |
CN103491375A (zh) * | 2013-05-29 | 2014-01-01 | 东南大学 | 基于binDCT算法的JPEG压缩系统 |
CN107729996A (zh) * | 2016-08-11 | 2018-02-23 | 图芯芯片技术有限公司 | 零系数跳过卷积神经网络引擎 |
CN107527090A (zh) * | 2017-08-24 | 2017-12-29 | 中国科学院计算技术研究所 | 应用于稀疏神经网络的处理器和处理方法 |
CN107797962A (zh) * | 2017-10-17 | 2018-03-13 | 清华大学 | 基于神经网络的计算阵列 |
Non-Patent Citations (2)
Title |
---|
R. CAYSSIALS ET AL.: "A Digital PLL Circuit for AC Power Lines with Instantaneous Sine and Cosine Computation", 《2008 4TH SOUTHERN CONFERENCE ON PROGRAMMABLE LOGIC》 * |
叶晓敏 等: "优化的可重构多常数乘法器生成算法", 《计算机工程》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111275180A (zh) * | 2020-02-28 | 2020-06-12 | 西安微电子技术研究所 | 一种降低深度神经网络数据迁移及功耗的卷积运算结构 |
CN111275180B (zh) * | 2020-02-28 | 2023-04-07 | 西安微电子技术研究所 | 一种降低深度神经网络数据迁移及功耗的卷积运算结构 |
CN112906863A (zh) * | 2021-02-19 | 2021-06-04 | 山东英信计算机技术有限公司 | 一种神经元加速处理方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110659014B (zh) | 2022-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liang et al. | FP-BNN: Binarized neural network on FPGA | |
Kang | Accelerator-aware pruning for convolutional neural networks | |
CN109543830B (zh) | 一种用于卷积神经网络加速器的拆分累加器 | |
US10621486B2 (en) | Method for optimizing an artificial neural network (ANN) | |
US20180218518A1 (en) | Data compaction and memory bandwidth reduction for sparse neural networks | |
Farrukh et al. | Power efficient tiny yolo cnn using reduced hardware resources based on booth multiplier and wallace tree adders | |
Que et al. | Optimizing reconfigurable recurrent neural networks | |
Fan et al. | Reconfigurable acceleration of 3D-CNNs for human action recognition with block floating-point representation | |
DiCecco et al. | FPGA-based training of convolutional neural networks with a reduced precision floating-point library | |
US10853037B1 (en) | Digital circuit with compressed carry | |
CN113887710A (zh) | 循环神经网络中的数字格式选择 | |
CN110659014B (zh) | 乘法器及神经网络计算平台 | |
Vo et al. | A deep learning accelerator based on a streaming architecture for binary neural networks | |
Baischer et al. | Learning on hardware: A tutorial on neural network accelerators and co-processors | |
CN110716751B (zh) | 高并行度计算平台、系统及计算实现方法 | |
Tsai et al. | An on-chip fully connected neural network training hardware accelerator based on brain float point and sparsity awareness | |
US20220253709A1 (en) | Compressing a Set of Coefficients for Subsequent Use in a Neural Network | |
EP3933705A1 (en) | Methods and systems for running dynamic recurrent neural networks in hardware | |
Véstias et al. | Efficient design of low bitwidth convolutional neural networks on FPGA with optimized dot product units | |
CN110765413B (zh) | 矩阵求和结构及神经网络计算平台 | |
Wisayataksin et al. | A Programmable Artificial Neural Network Coprocessor for Handwritten Digit Recognition | |
KR20210116182A (ko) | 소프트맥스 연산 근사화 방법 및 장치 | |
US20230004788A1 (en) | Hardware architecture for processing tensors with activation sparsity | |
Sreehari et al. | A hardware accelerator based on quantized weights for deep neural networks | |
US20220261652A1 (en) | Training a Neural Network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |