CN111475135B - 一种乘法器 - Google Patents

一种乘法器 Download PDF

Info

Publication number
CN111475135B
CN111475135B CN201910065752.9A CN201910065752A CN111475135B CN 111475135 B CN111475135 B CN 111475135B CN 201910065752 A CN201910065752 A CN 201910065752A CN 111475135 B CN111475135 B CN 111475135B
Authority
CN
China
Prior art keywords
data
product
multiplier
bit
selection control
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.)
Active
Application number
CN201910065752.9A
Other languages
English (en)
Other versions
CN111475135A (zh
Inventor
孔阳
徐俊
张立鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910065752.9A priority Critical patent/CN111475135B/zh
Publication of CN111475135A publication Critical patent/CN111475135A/zh
Application granted granted Critical
Publication of CN111475135B publication Critical patent/CN111475135B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)

Abstract

申请公开了一种乘法器,所述乘法器包括:预处理器,与所述预处理器连接的第一选通器,与所述第一选通器连接的累加器;所述预处理器,用于获得第一低位宽数据和第二低位宽数据,对所述第一低位宽数据和所述第二低位宽数据进行乘法运算,得到第一乘积数据;所述第一选通器,用于获得至少一个预处理器提供的第一乘积数据从至少一个预处理器提供的第一乘积数据中选择一个第一乘积数据。采用本申请提供的乘法器,解决了现有技术中乘法器针对低位宽数据的乘加计算效率低的问题。

Description

一种乘法器
技术领域
本申请涉及电路设计领域,具体涉及一种乘法器。
背景技术
在互联网、大数据、物联网等领域,人工智能的使用日益广泛。随之而来的是,人工智能需要处理的数据也越来越庞大。
在人工智能需要处理的数据中,图像类数据占据了比较大的比例。在人工智能中,图像处理一般使用卷积神经网络(CNN)来处理。因此,硬件的CNN计算能力要求日益增强。CNN中,卷积计算非常多。众所周知,卷积的本质是做矩阵运算,也即乘加计算。
现有技术中,主流的神经网络一般使用高性能CPU或者GPU等硬件来实现信息处理。但是,这些硬件中的乘法器针对低位宽数据的乘加计算未进行优化,必须使用数字信号处理资源来实现,从而导致乘法器针对低位宽数据的乘加计算效率低。
发明内容
本申请提供一种乘法器,以解决现有技术中,乘法器针对低位宽数据的乘加运算未进行优化,必须使用数字信号处理资源来实现,从而导致乘法器针对低位宽数据的乘加计算效率低的问题。
本申请提供的乘法器,包括:预处理器,与所述预处理器连接的第一选通器,与所述第一选通器连接的累加器;
所述预处理器,用于获得第一低位宽数据和第二低位宽数据,对所述第一低位宽数据和所述第二低位宽数据进行乘法运算,得到第一乘积数据;
所述第一选通器,用于获得至少一个预处理器提供的第一乘积数据,从所述至少一个预处理器提供的第一乘积数据中选择一个第一乘积数据;
所述累加器,用于对所述选择的第一乘积数据和所述累加器预先获得的累加数进行加法运算,获得和值。
可选的,所述第一低位宽数据为神经网络的特征图数据。
可选的,所述第二低位宽数据为神经网络的权重数据。
可选的,所述神经网络的权重数据为剔除了值为+3和-3的权重数据。
可选的,所述选择控制数据为所有第二低位宽数据中的一个第二低位宽数据。
可选的,所述预处理器的数量为多个,多个预处理器通过一根总线接地。
可选的,所述选择控制数据为二进制编码后的选择控制数据;
所述乘法器还包括:与所述第一选通器连接的第二选通器,与所述第二选通器连接的编码器;
所述编码器,用于获得原始选择控制数据,将所述原始选择控制数据进行二进制编码处理,获得二进制编码后的选择控制数据,并将所述二进制编码后的选择控制数据提供给所述第二选通器;
第二选通器,用于向所述第一选通器提供所述二进制编码后的选择控制数据。
可选的,所述二进制编码后的选择控制数据中的第一比特位标识所述原始选择控制数据为正值数据或负值数据,所述二进制编码后的选择控制数据中的第二比特位标识所述原始选择控制数据的值是否为0。
可选的,所述第二选通器与所述累加器连接;
所述第二选通器,还用于将所述二进制编码后的选择控制数据提供给所述累加器;
所述累加器,还用于判断所述二进制编码后的选择控制数据中的第一比特位是否标识所述原始选择控制数据为负值数据,如果是,则将所述选择的第一乘积数据修改为负值数据,其中,所述选择的第一乘积数据为正值数据。
可选的,所述乘法器还包括:与所述累加器连接的寄存器;
所述累加器,还用于将所述和值提供给所述寄存器;
所述寄存器,用于存储所述和值。
可选的,所述乘法器,还包括:与累加器连接的模式控制器;
所述模式控制器,用于控制所述累加器选择第一累加数或第二累加数;
所述累加器,还用于根据所述模式控制器的指示,选择所述第一累加数或所述第二累加数作为与所述选择的第一乘积数据进行加法运算的累加数;
其中,所述第一累加数包括历史第一乘积数据与历史累加数的历史和值,所述第二累加数为指定的数据。
可选的,所述乘法器使用现场可编程门阵列实现。
可选的,所述乘法器使用专用集成电路实现。
本申请提供一种电子设备,所述电子设备包括所述乘法器。
本申请提供一种图像识别方法,包括:
获取待识别的图像;
将所述图像数据输入卷积神经网络,获取所述卷积神经网络的特征图数据和所述卷积神经网络的权重数据;
根据所述卷积神经网络的特征图数据和所述卷积神经网络的权重数据,利用所述乘法器,获得所述卷积神经网络的特征图数据和所述卷积神经网络的权重数据的乘积和;
根据所述乘积和,获得所述图像数据的卷积计算结果;
根据所述卷积计算结果,获得所述图像数据对应的图像的识别结果。
本申请提供一种应用于智能设备的数据处理方法,包括:
获取待处理的数据;
利用所述乘法器,获得所述数据中的低位宽数据之间的乘积和;
根据所述乘积和,获得所述数据的处理结果。
与现有技术相比,本申请具有如下优点:
采用本申请提供的方法,只需要使用选通器和累加器就可以实现低位宽数据的乘加计算,不需要使用数字信号处理资源,从而解决了乘法器针对低位宽数据的乘加计算效率低的问题。
附图说明
图1是本申请第一实施例提供的一种低位宽乘法器的结构示意图;
图2是本申请第一实施例涉及的一种4比特位宽乘法器的结构示意图;
图3是本申请第三实施例的流程图;
图4是本申请第四实施例的流程图;
图5是本申请第五实施例的流程图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请第一实施例提供一种乘法器。请参看图1,该图为本申请第一实施例提供的一种乘法器的结构示意图。以下结合图1对本申请第一实施例提供一种乘法器进行详细说明。
所述乘法器包括:预处理器,与所述预处理器连接的第一选通器,与所述第一选通器连接的累加器。
所述乘法器可以在现场门阵列中实现。
图1提供了所述乘法器的结构示意图。从图1中可以看出,所述乘法器包括若干个预处理器,分别为第一预处理器、第二预处理器、第三预处理器和第四预处理器。图2提供了4比特宽的低位宽乘法器的结构示意图。
本实施例中,所述预处理器的数量为多个,多个预处理器通过一根总线接地。
本实施例中,所述预处理器的数量可以根据低位宽数据的位数确定。从图2中可以看出,所述多个预处理器通过一根总线接地,通过这种直连加接地的方法,最大化降低了可编程现场门阵列的面积和功耗。
所述预处理器,用于获得第一低位宽数据和第二低位宽数据,对所述第一低位宽数据和所述第二低位宽数据进行乘法运算,得到第一乘积数据,向所述第一选通器提供所述第一乘积数据。
本实施例中,所述第一低位宽数据和第二低位宽数据可以为任意的低位宽数据。所述低位宽数据一般为8比特以下的数据,如4比特数据、5比特数据等。
所述第一低位宽数据可以为神经网络的特征图数据。
所述神经网络可以为卷积神经网络。所述第二低位宽数据可以为神经网络的权重数据。
图1中,第一预处理器的方框里面的×4代表神经网络的权重为4,第二预处理器的方框里面的×3代表神经网络的权重为3,第三预处理器的方框里面的×2代表神经网络的权重为2,第四预处理器的方框里面的×1代表神经网络的权重为1。
图2中,第一预处理器的方框里面的x4代表神经网络的权重为4,第二预处理器的方框里面的×3代表神经网络的权重为3,第三预处理器的方框里面的×2代表神经网络的权重为2,第四预处理器的方框里面的×1代表神经网络的权重为1。
所述神经网络的权重数据为剔除了值为+3和-3的权重数据。
在实际的低精度神经网络中,-3/+3的权重数据常常被舍弃,因此本实施例提供的乘法器支持可裁剪的-3/+3预处理器,以节省面积和功耗。请参考图1,其中的第二预处理器使用虚线框来标识,表示第二预处理器为可裁剪选项。图2中的第二预处理器使用虚线框来标识,表示第二预处理器为可裁剪选项。
图1中,第一低位宽数据可以是介于-8到7直接的有符号整型数据,或者介于0到15之间的正整数,第二低位宽数据可以是取值范围{-4,-3,-2-1,0,1,2,3,4}集合的有符号整型数据。
本实施例中,针对第二低位宽数据可以只取其中的正值,假设第一低位宽数据的值为x,这样获取的预处理器集合就为{x,2x,4x}。当然权重数据3也可以不舍弃,这样获取的预处理器集合就为{x,2x,3x,4x}。利用现场可编程门阵列FPGA来实现本步骤时,第二预处理器是一个可裁剪选项。请参考图2所示。
本实施例中,所述第二低位宽数据可以为神经网络中的权重数据,例如如下权重数据:-1,-2,-3,-4,0,1,2,3,4。第一低位宽数据可以为-8到7的有符号整形数据,或者为0到15之间的正整数,一般为神经网络中的特征图数据(feature map)。这里的神经网络可以是卷积神经网络(CNN)。
本实施例中,针对CNN中的乘加计算,首先通过预处理器,提供预处理计算后的1×,2×,3×,4×乘积。这里的预处理可以使用软件实现,也可以使用硬件电路实现。例如,神经网络的特征图数据为5,神经网络的权重数据为{-1,-2,-3,-4,0,1,2,3,4},那么可以使用四个预处理器,分别存储所述神经网络的特征图数据与神经网络的权重数据中正数的乘积,即四个预处理器分别保存5×1,5×2,5×3,5×4。本实施例中,所述选择控制数据为所有第二低位宽数据中的一个第二低位宽数据,即所述选择控制数据可以为神经网络的权重数据为{-1,-2,-3,-4,0,1,2,3,4}中的一个。根据所述选择控制数据,可以直接获取四个预处理器中预存的一个乘积。例如,选择控制数据为-1/1时,获取的乘积数据为5×1,选择控制数据为-2/2时,获取的乘积数据为5×2。预存器中只预存正值,负值通过累加器的一个输入来实现。另外,由于0可以忽略,因此预处理器也不预存0值。
所述第一选通器,用于获得至少一个预处理器提供的第一乘积数据,根据用于控制所述第一选通器选择第一乘积数据的选择控制数据,从所述至少一个预处理器提供的第一乘积数据中选择一个第一乘积数据,并将选择的第一乘积数据提供给所述累加器。
例如,神经网络的特征图数据为5,神经网络的权重数据为{-1,-2,-3,-4,0,1,2,3,4},那么可以使用四个预处理器,分别存储所述神经网络的特征图数据与神经网络的权重数据中正数的乘积,即四个预处理器分别保存5×1,5×2,5×3,5×4。根据所述选择控制数据,可以直接获取四个预处理器中预存的一个乘积。例如,选择控制数据为-1/1时,获取的乘积数据为5×1,选择控制数据为-2/2时,获取的乘积数据为5×2。预存器中只预存正值,负值通过累加器的一个输入来实现。另外,由于0可以忽略,因此预处理器也不预存0值。在获取乘积数据之后,将所述乘积数据提供给累加器。
所述选择控制数据为二进制编码后的选择控制数据;
所述乘法器还包括:与所述第一选通器连接的第二选通器,与所述第二选通器连接的编码器;
所述编码器,用于获得原始选择控制数据,将所述原始选择控制数据进行二进制编码处理,获得二进制编码后的选择控制数据,并将所述二进制编码后的选择控制数据提供给所述第二选通器;
第二选通器,用于向所述第一选通器提供所述二进制编码后的选择控制数据。
请参考图2,其中第二选通器和编码器生成的编码数据为虚线,表示第二选通器和编码器是可选项。如果不使用编码器和第二选通器,那么第二低位宽数据提供的权重数据可以直接发送给第一选通器,用来从多个预处理器中选择合适的乘积数据,这是可行的一种方案。作为另外一种优选的方案,本实施例提供了一种采用编码器和第二选通器的方案,该方案利用编码器针对权重数据进行二进制编码,获得更适应硬件计算的二进制操作符,利用所述二进制操作符来控制第一选通器。
所述二进制编码后的选择控制数据中的第一比特位标识所述原始选择控制数据为正值数据或负值数据,所述二进制编码后的选择控制数据中的第二比特位标识所述原始选择控制数据的值是否为0。
使用二进制码编码的目的是为了更适于硬件运算。下表是本实施例提供的一种编码规则。
Figure BDA0001954559530000061
Figure BDA0001954559530000071
表1二进制编码规则
表1中的编码规则具体为,用四位二进制针对权重进行编码,四位二进制从高位到低位分别为bit3,bit2,bit1,bit0。bit3用来标识权重是否为0,例如bit3为1,表示权重为0,此时其他比特位为全0。bit2用来表示权重的正负。bit1,bit0用来表示权重的绝对值。例如二进制00对应十进制1,二进制01对应十进制2,二进制10对应十进制4。
所述第二选通器与所述累加器连接;
所述第二选通器,还用于将所述二进制编码后的选择控制数据提供给所述累加器;
所述累加器,还用于判断所述二进制编码后的选择控制数据中的第一比特位是否标识所述原始选择控制数据为负值数据,如果是,则将所述选择的第一乘积数据修改为负值数据,其中,所述选择的第一乘积数据为正值数据。
请参考图1,在图1中第二选通器和所述累加器相连。由于预处理器中只存储正的乘积,当权重数据为负值时,特征图数据和权重数据的乘积为负。此时,需要根据第二选通器向所述累加器提供所述特征图数据和权重数据的乘积的正负信息。如果权重数据为负值,那么累加器获得第一选通器提供的正的乘积后,再根据第二选通器提供的正负信息,决定累加正数或者负数。例如特征数据为5,权重数据为-4,此时根据表1的编码规则,-4的二进制编码为0110,该二进制编码输入第一选通器后获得的特征图数据和权重数据的预处理器中存取的乘积为5×4,累加器从所述第一选通器中获得5×4,此外累加器还从所述第二选通器获得二进制编码0110,所述累加器根据该二进制编码,将特征图数据和权重数据的乘积从5×4修改为-5×4。
所述累加器,用于对所述选择的第一乘积数据和所述累加器预先获得的累加数进行加法运算,获得和值。
例如,累加器获得本次的特征图数据和权重数据的乘积为5×4,可以和上一次的特征图数据和权重数据的乘积5×3相加,获得和值,从而获得所述特征图数据和权重数据的卷积。
所述乘法器,其特征在于,还包括:与所述累加器连接的寄存器;
所述累加器,还用于将所述和值提供给所述寄存器;
所述寄存器,用于存储所述和值。
请参考图2,在图2中的寄存器具有清零的输入端,由时钟Clock驱动。
所述乘法器,还包括:与累加器连接的模式控制器;
所述模式控制器,用于控制所述累加器选择第一累加数或第二累加数;
所述累加器,还用于根据所述模式控制器的指示,选择所述第一累加数或所述第二累加数作为与所述选择的第一乘积数据进行加法运算的累加数;
其中,所述第一累加数包括历史第一乘积数据与历史累加数的历史和值,所述第二累加数为指定的数据。
请参考图1,使用模式控制器针对历史数据进行选择,从第二累加数和第一累加数中选择一项。
具体的,可以通过如下公式实现:
P(n)=A(n)*B(n)+C(n)或者P(n)=A(n)*B(n)+P(n-1);
其中,A(n)为本实施例中所述的第一低位宽数据,B(n)为本实施例中所述的第二低位宽数据,C(n)为第二累加数,可以为指定的数据,P(n-1)为历史累加数的历史和值,n为该乘法器进行乘法运算的次数。
本实施例中,以现场可编程门阵列(FPGA)为例,详细说明了本申请提供的乘法器的实现方法。
另外,本申请提供的乘法器也可以使用其他基础电路单元来实现。例如,还可以使用专用集成电路(ASIC)实现。
所述使用集成电路实现的乘法器包括预处理器,与所述预处理器连接的第一选通器,与所述第一选通器连接的累加器;
所述预处理器,用于获得第一低位宽数据和第二低位宽数据,对所述第一低位宽数据和所述第二低位宽数据进行乘法运算,得到第一乘积数据,向所述第一选通器提供所述第一乘积数据;
所述第一选通器,用于获得至少一个预处理器提供的第一乘积数据,根据用于控制所述第一选通器选择第一乘积数据的选择控制数据,从所述至少一个预处理器提供的第一乘积数据中选择一个第一乘积数据,并将选择的第一乘积数据提供给所述累加器;
所述累加器,用于对所述选择的第一乘积数据和所述累加器预先获得的累加数进行加法运算,获得和值。
由于使用专用集成电路(ASIC)实现的乘法器与使用现场门电路实现的乘法器的实施步骤基本相同,这里就不再详细赘述了。
本申请第二实施例提供一种电子设备,所述电子设备包括所述第一实施例提供的乘法器。
本申请第三实施例提供一种图像识别方法。请参看图3,该图为本申请第三实施例的流程图。以下结合图3对本申请第三实施例提供一种图像识别方法进行详细说明。所述方法包括如下步骤:
步骤S301:获取待识别的图像数据。
本步骤用于获取待识别的图像。
所述第一实施例提供的乘法器可以使用于云端的图像识别加速中,首先可以在云端获取待识别的图像数据。
步骤S302:将所述图像数据输入卷积神经网络,获取所述卷积神经网络的特征图数据和所述卷积神经网络的权重数据。
本步骤用于将所述图像数据输入卷积神经网络,获取所述卷积神经网络的特征图数据和所述卷积神经网络的权重数据。
在云端获取待识别的图像数据后,将所述图像数据输入卷积神经网络进行处理,获取所述卷积神经网络的特征图数据和所述卷积神经网络的权重数据。
根据所述卷积神经网络的特征图数据和所述卷积神经网络的权重数据,利用本申请第一实施例提供的所述乘法器,获得所述卷积神经网络的特征图数据和所述卷积神经网络的权重数据的乘积和。
本实施例中,所述卷积神经网络的特征图数据对应于本申请第一实施例提供的所述乘法器中的第一低位宽数据,所述卷积神经网络的权重数据对应于本申请第一实施例提供的所述乘法器中的第二低位宽数据。
使用第一实施例提供的乘法器,可以在FPGA芯片中不使用DSP资源,从而提高了FPGA的整体计算力。
步骤S304:根据所述乘积和,获得所述图像数据的卷积计算结果。
本步骤用于根据所述乘积和,获得所述图像数据的卷积计算结果。
由于卷积计算本质上就是乘积和计算,获得所述乘积和,就获得了所述特征图数据和权重数据的卷积,
步骤S305:根据所述卷积计算结果,获得所述图像数据对应的图像的识别结果。
本步骤用于根据所述卷积计算结果,获得所述图像数据对应的图像的识别结果。
根据该卷积值,可以获得图像的识别信息。例如判断所述图像属于人物还是自然景物等等。由于利用卷积神经网络进行图像识别是常用的技术手段,这里对于图像识别的过程就不再赘述了。
本申请第四实施例提供一种乘积和的获得方法,请参考图4。所述方法包括如下步骤:
步骤S401:获取卷积神经网络的特征图数据和权重数据。
本步骤可以用于获取卷积神经网络的特征图数据和权重数据。
本实施例中,所述神经网络可以采用卷积神经网络。卷积神经网络在机器学习中应用非常多,这里就不再赘述细节了。本实施例中,特征图数据和权重数据可以为低位宽的数据。
图1提供了一种FPGA实现低位宽乘积和的乘法器的结构示意图。图2提供了一种FPGA实现4比特位宽乘积和的结构示意图。
所述特征图数据对应于图1和图2中的第一低位宽数据,所述权重数据对应于图1和图2中的第二低位宽数据。
步骤S402:针对所述特征图数据和权重数据进行预处理,获取乘积中间值数据集合。
本步骤用于针对所述特征图数据和权重数据进行预处理,获取乘积中间值数据集合。
本步骤可以使用软件来实现,也可以在现场可编程门阵列中实现。
所述针对所述特征图数据和权重数据进行预处理,获取乘积中间值数据集合,包括:
根据所述权重数据和卷积神经网络的权重为±3的训练数据被舍弃的特性,获得所述权重数据中的第二权重;
将所述特征图数据分别与所述第二权重相乘,获得第二乘积数据;
将所述第二乘积数据的集合作为所述中间值数据集合。
本实施例中所述特征图数据和权重数据可以为低位宽的特征图数据A和权重数据B。其中A是介于-8到7直接的有符号整型数据,或者介于0到15之间的正整数;B是取值范围{-4,-3,-2-1,0,1,2,3,4}集合的有符号整型数据,其中-3和3在训练时往往会被舍弃,针对神经网络的这个特性。本实施例中,针对权重数据可以只取其中的正值,假设A的值为x,这样获取的中间值数据集合就为{x,2x,4x}。当然3也可以不舍弃,这样获取的中间值数据集合就为{x,2x,3x,4x}。利用现场可编程门阵列FPGA来实现本步骤时,中间值3x是一个可裁剪选项。
图1中,所述中间值数据集合可以为x4单元,x3单元,x2单元,x1单元,x3单元使用虚线标识,代表其为可裁剪单元。
图2中,所述中间值数据集合可以为x4单元,x3单元,x2单元,x1单元,x3单元使用虚线标识,代表其为可裁剪单元。
步骤S403:根据所述权重数据,获取所述乘积中间值数据集合中的第一乘积数据。
本步骤用于根据所述权重数据,获取所述乘积中间值数据集合中的第一乘积数据。
所述根据所述权重数据,获取所述乘积中间值数据集合中的第一乘积数据,包括:
将所述乘积中间值数据集合输入选通器;
利用权重数据针对所述选通器进行控制,获取所述乘积中间值数据集合中的第一乘积数据。
现有技术中,乘法运算在FPGA中一般是使用FPGA的DSP来实现的。本实施例中,仅仅使用FPGA中选通器,就可以获得乘积。例如,针对步骤S103中的例子,中间值数据集合为{x,2x,4x},如果权重数据选2,将2输入选通器,就可以从中间值数据集合中选择2x作为乘积。如果权重数据选4,将4输入选通器,就可以从中间值数据集合中选择4x作为乘积。
图1中,第二选通器用虚线标识,表示其为裁剪单元。利用权重数据针对所述选通器进行控制,获取所述乘积中间值数据集合中的第一乘积数据,在图1中,即为第二低位宽数据不使用编码器,直接输入第一选通器,选择所述乘积中间值数据集合中的一个数据。
图2中,第二选通器用虚线标识,表示其为裁剪单元。利用权重数据针对所述选通器进行控制,获取所述乘积中间值数据集合中的第一乘积数据,在图2中,即为第二低位宽数据不使用编码器生成的编码数据,而直接输入第一编码器,选择所述乘积中间值数据集合中的一个数据。
所述根据所述权重数据,获取所述乘积中间值数据集合中的第一乘积数据,包括:
将所述权重数据进行编码处理,获得二进制编码;
根据所述二进制编码,获取所述乘积中间值数据集合中的第一乘积数据;
所述根据所述权重数据和第一乘积数据,获得所述特征图数据和权重数据的乘积和,包括:根据所述二进制编码和第一乘积数据,获得所述特征图数据和权重数据的乘积和。
所述将所述权重数据进行编码处理,获得二进制编码,包括:
采用如下编码规则将所述权重数据进行编码处理,获得适用于硬件设计的二进制编码:
使用二进制编码中的第一比特位将所述权重数据标识为正权重数据或负权重数据;
使用二进制编码中的第二比特位标识所述权重数据为0。
本实施例中,使用二进制码编码的目的是为了更适于硬件运算。
表1中的编码规则具体为,用四位二进制针对权重进行编码,四位二进制从高位到低位分别为bit3,bit2,bit1,bit0。bit3用来标识权重是否为0,例如bit3为1,表示权重为0,此时其他比特位为全0。bit2用来表示权重的正负。bit1,bit0用来表示权重的绝对值。例如二进制00对应十进制1,二进制01对应十进制2,二进制10对应十进制4。
在本实施例中,所述第一比特位为bit2,所述第二比特位为bit3。
所述根据所述二进制编码,获取所述乘积中间值数据集合中的第一乘积数据,包括:
将所述乘积中间值数据集合输入选通器;
利用所述二进制编码对所述选通器进行控制,获取所述乘积中间值数据集合中的第一乘积数据。
例如,针对上例中的中间值数据集合为{x,2x,4x},如果二进制编码为0001(权重选2),将0001输入选通器,就可以从中间值数据集合中选择2x作为乘积。如果二进制编码为0010(权重选4),将0010输入选通器,就可以从中间值数据集合中选择4x作为乘积。
图1或者图2中,使用编码器对于权重数据进行编码,编码结果输出到编码数据单元,编码数据单元向第二选通器提供编码后的二进制编码。
所述根据所述二进制编码和第一乘积数据,获得所述特征图数据和权重数据的乘积和,包括:
获取历史数据,将所述历史数据输入累加器;
将所述第一乘积数据输入累加器;
利用所述二进制编码对输入累加器的第一乘积数据进行正负转换,获得第二乘积数据;
根据所述历史数据、第二乘积数据,获得所述特征图数据和权重数据的乘积和。
所述历史数据可以是通过选通器获得的上一次乘积计算值,也可以来自于FPGA中的其他逻辑单元。
图1中,使用模式控制器针对历史数据进行选择,从第二累加数和上一次乘积计算值中选择一项。
完成的数学公式是P(n)=A(n)*B(n)+C(n)或者P(n)=A(n)*B(n)+P(n-1)。
其中,n是指该乘法器进行计算的次数,n的取值为大于等于1的整数;A是本实施例所述的特征图数据;B是本实施例所述的权重数据,C是本实施例所述的第二累加数,所述第二累加数可以是来自于其他乘法器的输出结果;P代表使用该乘法器获得的历史乘积和计算结果,例如P(n-1)代表该乘法器第n-1次的乘积和计算结果。
步骤S404:根据所述权重数据和第一乘积数据,获得所述特征图数据和权重数据的乘积和。
本步骤用于根据所述权重数据和第一乘积数据,获得所述特征图数据和权重数据的乘积和。
所述根据所述权重数据和第一乘积数据,获得所述特征图数据和权重数据的乘积和,包括:
获取历史数据,将所述历史数据输入累加器;
将所述第一乘积数据输入所述累加器;
利用所述权重数据对输入所述累加器的第一乘积数据进行正负转换,获得第二乘积数据;
根据所述历史数据、第二乘积数据,获得所述特征图数据和权重数据的乘积和。
下面对所述利用所述权重数据对输入所述累加器的第一乘积数据进行正负转换,获得第二乘积数据,进行举例说明。例如,如果权重数据为-2,特征图数据为x,对应的中间值数据集合中的值为2x,那么该权重数据会控制累加器,在所述累加器中将输入的2x转换为-2x,随后再与历史数据进行加法运算。如果权重为2,特征图数据为x,对应的中间值数据集合中的值为2x,那么该权重数据控制所述累加器,这时累加器中输入的2x保持为正值,随后再与历史数据进行加法运算。
需要注意的是,在使用二进制编码的情况下,是使用权重数据-2的二进制编码针对输入所述累加器的第一乘积数据进行正负转换。
本申请第五实施例提供一种应用于智能设备的数据处理方法。请参考图5,其为本申请第五实施例的流程图。以下结合图5对本申请第五实施例提供一种应用于智能设备的数据处理方法进行详细说明。所述方法包括如下步骤:
步骤S501:获取待处理的数据。
本步骤用于获取待处理的数据。
在智能设备中,基于人工智能的应用越来越多。在人工智能中,卷积运算应用非常频繁。本步骤待处理的数据可以为人工智能的应用中,需要进行卷积运算的数据。
步骤S502:利用所述乘法器,获得所述数据中的低位宽数据之间的乘积和。
本步骤用于利用所述基于现场可编程门阵列的乘法器,获得所述数据中的低位宽数据之间的乘积和。
卷积运算本质上就是乘积和运算,利用第一实施例提供的乘法器,可以完成所述卷积运算。
步骤S503:根据所述乘积和,获得所述数据的处理结果。
本步骤用于根据所述乘积和,获得所述数据的处理结果。
所述数据的处理结果,可以是人工智能应用中的物体识别结果。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个操作器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (14)

1.一种乘法器,其特征在于,包括:预处理器,与所述预处理器连接的第一选通器,与所述第一选通器连接的累加器;
所述预处理器,用于获得第一低位宽数据和第二低位宽数据,对所述第一低位宽数据和所述第二低位宽数据进行乘法运算,得到第一乘积数据;
所述第一选通器,用于获得至少一个预处理器提供的第一乘积数据,从所述至少一个预处理器提供的第一乘积数据中选择一个第一乘积数据,所述预处理器还包括预存器,所述第一乘积数据预存在所述预存器中,所述获得至少一个预处理器提供的第一乘积数据包括:获得至少一个预处理器中的预存器提供的第一乘积数据;
所述累加器,用于对所述选择的第一乘积数据和所述累加器预先获得的累加数进行加法运算,获得和值;
其中,所述从所述至少一个预处理器提供的第一乘积数据中选择一个第一乘积数据,包括:根据选择控制数据,从所述至少一个预处理器提供的第一乘积数据中选择一个第一乘积数据,所述选择控制数据为所有第二低位宽数据中的一个第二低位宽数据。
2.根据权利要求1所述的乘法器,其特征在于,所述第一低位宽数据为神经网络中的特征图数据。
3.根据权利要求1所述的乘法器,其特征在于,所述第二低位宽数据为神经网络中的权重数据。
4.根据权利要求3所述的乘法器,其特征在于,所述神经网络的权重数据为剔除了值为+3和-3的权重数据。
5.根据权利要求1所述的乘法器,其特征在于,所述预处理器的数量为多个,多个预处理器通过一根总线接地。
6.根据权利要求1所述的乘法器,其特征在于,所述选择控制数据为二进制编码后的选择控制数据;
所述乘法器还包括:与所述第一选通器连接的第二选通器,与所述第二选通器连接的编码器;
所述编码器,用于获得原始选择控制数据,将所述原始选择控制数据进行二进制编码处理,获得二进制编码后的选择控制数据,并将所述二进制编码后的选择控制数据提供给所述第二选通器;
第二选通器,用于向所述第一选通器提供所述二进制编码后的选择控制数据。
7.根据权利要求6所述的乘法器,其特征在于,所述二进制编码后的选择控制数据中的第一比特位标识所述原始选择控制数据为正值数据或负值数据,所述二进制编码后的选择控制数据中的第二比特位标识所述原始选择控制数据的值是否为0。
8.根据权利要求7所述的乘法器,其特征在于,所述第二选通器与所述累加器连接;
所述第二选通器,还用于将所述二进制编码后的选择控制数据提供给所述累加器;
所述累加器,还用于判断所述二进制编码后的选择控制数据中的第一比特位是否标识所述原始选择控制数据为负值数据,如果是,则将所述选择的第一乘积数据修改为负值数据,其中,所述选择的第一乘积数据为正值数据。
9.根据权利要求1所述的乘法器,其特征在于,还包括:与所述累加器连接的寄存器;
所述累加器,还用于将所述和值提供给所述寄存器;
所述寄存器,用于存储所述和值。
10.根据权利要求9所述的乘法器,其特征在于,还包括:与累加器连接的模式控制器;
所述模式控制器,用于控制所述累加器选择第一累加数或第二累加数;
所述累加器,还用于根据所述模式控制器的指示,选择所述第一累加数或所述第二累加数作为与所述选择的第一乘积数据进行加法运算的累加数;
其中,所述第一累加数包括历史第一乘积数据与历史累加数的历史和值,所述第二累加数为指定的数据。
11.根据权利要求1-10任意一项所述的乘法器,其特征在于,所述乘法器使用现场可编程门阵列或者专用集成电路实现。
12.一种电子设备,其特征在于,所述电子设备包括权利要求1-10任意一项所述的乘法器。
13.一种图像识别方法,其特征在于,包括:
获取待识别的图像数据;
将所述图像数据输入卷积神经网络,获取所述卷积神经网络的特征图数据和所述卷积神经网络的权重数据;根据所述卷积神经网络的特征图数据和所述卷积神经网络的权重数据,利用权利要求1-10任意一项所述的乘法器,获得所述卷积神经网络的特征图数据和所述卷积神经网络的权重数据的乘积和;
根据所述乘积和,获得所述图像数据的卷积计算结果;
根据所述卷积计算结果,获得所述图像数据对应的图像的识别结果。
14.一种应用于智能设备的数据处理方法,其特征在于,包括:
获取待处理的数据;
利用权利要求1-10任意一项所述的乘法器,获得所述数据中的低位宽数据之间的乘积和;
根据所述乘积和,获得所述数据的处理结果。
CN201910065752.9A 2019-01-23 2019-01-23 一种乘法器 Active CN111475135B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910065752.9A CN111475135B (zh) 2019-01-23 2019-01-23 一种乘法器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910065752.9A CN111475135B (zh) 2019-01-23 2019-01-23 一种乘法器

Publications (2)

Publication Number Publication Date
CN111475135A CN111475135A (zh) 2020-07-31
CN111475135B true CN111475135B (zh) 2023-06-16

Family

ID=71743417

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910065752.9A Active CN111475135B (zh) 2019-01-23 2019-01-23 一种乘法器

Country Status (1)

Country Link
CN (1) CN111475135B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112906863B (zh) * 2021-02-19 2023-04-07 山东英信计算机技术有限公司 一种神经元加速处理方法、装置、设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996005554A1 (fr) * 1994-08-15 1996-02-22 Di, Zongkai Procede et unite de multiplication
CN103236851A (zh) * 2013-04-19 2013-08-07 荣成市鼎通电子信息科技有限公司 基于查找表的cmmb中准循环矩阵高速乘法器
US9519460B1 (en) * 2014-09-25 2016-12-13 Cadence Design Systems, Inc. Universal single instruction multiple data multiplier and wide accumulator unit
CN107797962A (zh) * 2017-10-17 2018-03-13 清华大学 基于神经网络的计算阵列

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL143951A0 (en) * 2001-06-21 2003-09-17 Discretix Technologies Ltd A method and apparatus for carrying out efficiently arithmetic computations in hardware
US9563402B2 (en) * 2011-09-01 2017-02-07 Advanced Micro Devices, Inc. Method and apparatus for additive range reduction

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996005554A1 (fr) * 1994-08-15 1996-02-22 Di, Zongkai Procede et unite de multiplication
CN103236851A (zh) * 2013-04-19 2013-08-07 荣成市鼎通电子信息科技有限公司 基于查找表的cmmb中准循环矩阵高速乘法器
US9519460B1 (en) * 2014-09-25 2016-12-13 Cadence Design Systems, Inc. Universal single instruction multiple data multiplier and wide accumulator unit
CN107797962A (zh) * 2017-10-17 2018-03-13 清华大学 基于神经网络的计算阵列

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张琳 ; 田现忠 ; 赵兴文 ; 颜广 ; 葛兆斌 ; .一种并行结构有符号乘累加器的设计.山东科学.2016,(02),全文. *

Also Published As

Publication number Publication date
CN111475135A (zh) 2020-07-31

Similar Documents

Publication Publication Date Title
US20200134460A1 (en) Processing method and accelerating device
KR102566480B1 (ko) 신경망 프루닝 및 재훈련을 위한 자동 임계값들
CN112292816B (zh) 处理核心数据压缩和存储系统
US10491239B1 (en) Large-scale computations using an adaptive numerical format
US11262982B2 (en) Computation circuit including a plurality of processing elements coupled to a common accumulator, a computation device and a system including the same
CN111522528B (zh) 乘法器、乘法运算方法、运算芯片、电子设备及存储介质
US10872295B1 (en) Residual quantization of bit-shift weights in an artificial neural network
US20200117981A1 (en) Data representation for dynamic precision in neural network cores
WO2020088131A1 (zh) 一种卷积神经网络计算加速方法及装置、设备、介质
CN109389208B (zh) 数据的量化装置及量化方法
CN110109646A (zh) 数据处理方法、装置和乘加器及存储介质
EP3767550A1 (en) Asymmetric quantization for compression and for acceleration of inference for neural networks
CN113222102A (zh) 用于神经网络模型量化的优化方法
CN111475135B (zh) 一种乘法器
CN110955405A (zh) 一种输入数据的处理及指数值获取方法、装置及电子设备
CN114092708A (zh) 特征图像的处理方法、装置和存储介质
US20210044303A1 (en) Neural network acceleration device and method
CN109389209B (zh) 处理装置及处理方法
CN109389218B (zh) 数据压缩方法及压缩装置
WO2015116184A1 (en) Constant hamming weight coding
EP3620911A1 (en) Multiply-accumulate operation device, multiply-accumulate operation methods, and systems
CN114600126A (zh) 一种卷积运算电路和卷积运算方法
WO2022247368A1 (en) Methods, systems, and mediafor low-bit neural networks using bit shift operations
CN113988279A (zh) 一种支持负值激励的存算阵列输出电流读出方法及系统
CN114692077A (zh) 一种矩阵计算装置、方法、系统、电路、芯片及设备

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