CN209895329U - 乘法器 - Google Patents

乘法器 Download PDF

Info

Publication number
CN209895329U
CN209895329U CN201921433513.6U CN201921433513U CN209895329U CN 209895329 U CN209895329 U CN 209895329U CN 201921433513 U CN201921433513 U CN 201921433513U CN 209895329 U CN209895329 U CN 209895329U
Authority
CN
China
Prior art keywords
circuit
multiplier
data
sub
partial product
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
CN201921433513.6U
Other languages
English (en)
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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201921433513.6U priority Critical patent/CN209895329U/zh
Application granted granted Critical
Publication of CN209895329U publication Critical patent/CN209895329U/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本申请提供一种乘法器,该乘法器包括:乘法运算电路、寄存控制电路、寄存器电路、状态控制电路及选择电路;乘法运算电路包括正则有符号数编码子电路及累加子电路,正则有符号数编码子电路的输出端与累加子电路的输入端连接,累加子电路的输出端与寄存控制电路的第一输入端连接,寄存控制电路的输出端与寄存器电路的输入端连接,寄存器电路的输出端与选择电路的第一输入端连接,状态控制电路的第一输出端与寄存控制电路的第二输入端连接,状态控制电路的第二输出端与选择电路的第二输入端连接,该乘法器能够对接收到的数据进行正则有符号数编码,得到的有效部分积的数目较少,降低了乘法器实现乘法运算的复杂性。

Description

乘法器
技术领域
本申请涉及计算机技术领域,特别是涉及一种乘法器。
背景技术
随着数字电子技术的不断发展,各类人工智能(Artificial Intelligence,AI)芯片的快速发展对于高性能数字乘法器的要求也越来越高。神经网络算法作为智能芯片广泛应用的算法之一,通过乘法器进行乘法运算在神经网络算法中是一种常见的操作。
目前,乘法器是对乘数中的每三位数值作为一个编码,并根据被乘数得到部分积,并用***树对所有部分积进行压缩处理得到目标运算结果。但是,传统技术中,编码中非零位数值的数目较多,产生的对应部分积的数目较多,导致乘法器实现乘法运算的复杂性较高。
实用新型内容
基于此,有必要针对上述技术问题,提供一种能够减少乘法运算过程中获取的有效部分积数目,以降低乘法器乘法运算复杂性的乘法器。
本申请实施例提供一种乘法器,包括:乘法运算电路、寄存控制电路、寄存器电路、状态控制电路以及选择电路,所述乘法运算电路包括正则有符号数编码子电路以及累加子电路,所述正则有符号数编码子电路的输出端与所述累加子电路的输入端连接,所述累加子电路的输出端与所述寄存控制电路的第一输入端连接,所述寄存控制电路的输出端与所述寄存器电路的输入端连接,所述寄存器电路的输出端与所述选择电路的第一输入端连接,所述状态控制电路的第一输出端与所述寄存控制电路的第二输入端连接,所述状态控制电路的第二输出端与所述选择电路的第二输入端连接。
在其中一个实施例中,所述正则有符号数编码子电路包括正则有符号数编码单元以及部分积获取单元,所述正则有符号数编码单元用于接收第一数据,并对所述第一数据进行所述正则有符号数编码处理,得到所述目标编码,所述部分积获取单元用于接收第二数据,根据所述目标编码以及所述第二数据得到原始部分积,并根据所述原始部分积得到所述目标编码的部分积,所述累加子电路用于对所述目标编码的部分积进行累加处理得到乘法运算结果,所述状态控制电路用于获取存储指示信号以及读取指示信号,所述寄存控制电路用于根据所述状态控制电路输入的所述存储指示信号,确定存储所述乘法运算结果的所述寄存器电路,所述寄存器电路用于存储所述乘法运算结果,所述选择电路用于根据接收到的所述读取指示信号,读取所述寄存器电路中存储的所述乘法运算结果中的数据,作为目标运算结果。
在其中一个实施例中,所述正则有符号数编码单元可以包括:数据输入端口和目标编码输出端口;所述数据输入端口用于接收进行正则有符号数编码处理的所述第一数据,所述目标编码输出端口用于输出对所述第一数据进行正则有符号数编码处理后得到的所述目标编码。
在其中一个实施例中,所述部分积获取单元具体用于对所述目标编码进行转换处理得到原始部分积,并对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积,根据所述符号位扩展后的部分积得到所述目标编码的部分积。
在其中一个实施例中,所述部分积获取单元包括:目标编码输入端口、第二数据输入端口以及部分积输出端口;所述目标编码输入端口用于接收所述目标编码,所述第二数据输入端口用于接收所述第二数据,所述部分积输出端口用于输出所述目标编码的部分积。
在其中一个实施例中,所述累加子电路包括:***树组单元和累加单元;其中,所述***树组单元的输出端与所述累加单元的输入端连接;所述***树组单元用于对所述目标编码的部分积进行累加处理得到累加运算结果,所述累加单元用于对所述累加运算结果进行累加处理。
在其中一个实施例中,所述***树组单元包括:***树子单元,所述***树子单元用于对所有目标编码的部分积中的每一列数值进行累加处理。
在其中一个实施例中,所述累加单元包括:加法器,所述加法器用于对接收到的所述累加修正结果进行加法运算。
在其中一个实施例中,所述加法器包括:进位信号输入端口、和位信号输入端口以及结果输出端口;所述进位信号输入端口用于接收进位信号,所述和位信号输入端口用于接收和位信号,所述结果输出端口用于输出所述进位信号与所述和位信号进行累加处理的结果。
在其中一个实施例中,所述寄存器电路包括:寄存子电路,所述寄存子电路用于将不同存储指示信号对应的所述乘法运算结果进行存储。
本申请实施例提供一种乘法器,该乘法器包括:乘法运算电路以及转数电路,所述乘法运算电路包括正则有符号数编码子电路以及累加子电路,所述正则有符号数编码子电路的输出端与所述累加子电路的输入端连接,所述累加子电路的输出端与所述转数电路的输入端连接,所述转数电路包括第一转换子电路和第二转换子电路;
其中,所述正则有符号数编码子电路用于对接收到的数据进行正则有符号数编码处理得到目标编码,并根据所述目标编码得到目标编码的部分积,所述累加子电路用于对所述目标编码的部分积进行累加处理得到乘法运算结果,所述第一转换子电路及第二转换子电路分别用于对所述乘法运算结果进行转数处理,得到目标运算结果。
在其中一个实施例中,所述转数电路中包括输入端口,用于接收数据转换信号;所述数据转换信号用于确定所述转数电路处理的数据转换类型。
在其中一个实施例中,所述第一转换子电路具体用于将所述乘法运算结果转换成浮点类型的所述目标运算结果,所述第二转换子电路具体用于将所述乘法运算结果转换成定点类型的所述目标运算结果。
本实施例提供的一种乘法器,上述乘法器能够通过正则有符号数编码子电路对接收到的数据进行正则有符号数编码,得到的有效部分积的数目较少,从而降低了乘法器实现乘法运算的复杂性。
本申请实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个所述的乘法器;该机器学习运算装置用于从其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其它处理装置;
当所述机器学习运算装置包含多个所述乘法器时,多个所述计算装置间通过预设特定结构进行连接并传输数据;
其中,多个所述乘法器通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘法器共享同一控制***或拥有各自的控制***;多个所述乘法器共享内存或者拥有各自的内存;多个所述乘法器的互联方式是任意互联拓扑。
本申请实施例提供的一种组合处理装置,该组合处理装置包括如所述的机器学习处理装置、通用互联接口,和其它处理装置;该机器学习运算装置与上述其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述其它处理装置连接,用于保存所述机器学习运算装置和所述其它处理装置的数据。
本申请实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的乘法器、上述所述的机器学习运算装置或者上述所述的组合处理装置。
本申请实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。
本申请实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。
本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。
本申请实施例提供的一种芯片,包括至少一个如上述任一项所述的乘法器。
本申请实施例提供的一种电子设备,包括如所述的芯片。
附图说明
图1为一实施例提供的乘法器的结构示意图;
图2为另一实施例提供的乘法器的结构示意图;
图3为另一实施例提供的9个目标编码的部分积的分布规律示意图;
图4为另一实施例提供的8位数据运算时累加电路的具体电路结构图;
图5为一实施例提供的一种数据处理方法的流程示意图;
图6为另一实施例提供的另一种数据处理方法的流程示意图;
图7为一实施例提供的一种组合处理装置的结构图;
图8为一实施例提供的另一种组合处理装置的结构图;
图9为一实施例提供的一种板卡的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的乘法器可应用于AI芯片、现场可编程门阵列FPGA(Field-Programmable Gate Array,FPGA)芯片、或者是其它的硬件电路设备中进行比较运算处理,其具体结构示意图如图1和图2所示。
如图1所示为一实施例提供的一种乘法器的结构示意图。该乘法器包括:乘法运算电路11、寄存控制电路12、寄存器电路13、状态控制电路14以及选择电路15,所述乘法运算电路11包括正则有符号数编码子电路111以及累加子电路112,所述正则有符号数编码子电路111的输出端与所述累加子电路112的输入端连接,所述累加子电路112的输出端与所述寄存控制电路12的第一输入端连接,所述寄存控制电路12的输出端与所述寄存器电路13的输入端连接,所述寄存器电路13的输出端与所述选择电路15的第一输入端连接,所述状态控制电路14的第一输出端与所述寄存控制电路13的第二输入端连接,所述状态控制电路14的第二输出端与所述选择电路15的第二输入端连接。
其中,所述正则有符号数编码子电路111包括正则有符号数编码单元1111以及部分积获取单元1112,所述正则有符号数编码单元1111用于接收第一数据,并对所述第一数据进行所述正则有符号数编码处理,得到所述目标编码,所述部分积获取单元1112用于接收第二数据,根据所述目标编码以及所述第二数据得到原始部分积,并根据所述原始部分积得到所述目标编码的部分积,所述累加子电路112用于对所述目标编码的部分积进行累加处理得到乘法运算结果;所述状态控制电路14用于获取存储指示信号以及读取指示信号;所述寄存控制电路12用于根据所述状态控制电路14输入的所述存储指示信号,确定存储所述乘法运算结果的所述寄存器电路13,所述寄存器电路13用于存储所述乘法运算结果,所述选择电路15用于根据接收到的所述读取指示信号,读取所述寄存器电路13中存储的所述乘法运算结果中的数据,作为目标运算结果。
具体的,上述正则有符号数编码子电路111通过正则有符号数编码单元1111,可以对接收到的第一数据进行正则有符号数编码处理得到目标编码,上述第一数据可以为乘法运算中的乘数。可选的,上述部分积获取单元1112可以根据接收到的第二数据以及目标编码,得到原始部分积,并根据原始部分积得到目标编码的部分积,该第二数据可以为乘法运算中的被乘数。其中,上述乘数以及被乘数可以为同位宽的定点数。可选的,上述寄存器电路13可以包括多个存储单元。可选的,上述乘法运算结果的位宽可以等于正则有符号数编码子电路111接收到的数据位宽的2倍。可选的,上述正则有符号数编码子电路111可以对固定位宽的数据进行处理,并且正则有符号数编码子电路111接收到的数据位宽可以等于乘法器输入端口的位宽,另外,在本实施例中,乘法器输出端口的位宽可以小于输入端口位宽的2倍。可选的,上述选择电路15的输入端口均可以有多个,每个输入端口的功能可以不相同,并且输出端口可以有一个。可选的,上述目标运算结果的位宽可以等于乘法运算结果位宽的1/2,本实施例对此不做任何限定。在本实施例中,还可以理解为,目标运算结果的位宽可以小于乘法运算结果位宽的2倍。可选的,上述目标编码的数目可以等于目标编码的部分积的数目,且该目标编码中可以包含三种数值,分别为-1、0和1。
需要说明的是,上述状态控制电路14可以自动获取累加子电路112得到每一个乘法运算时,对应的存储指示信号,例如,累加子电路112得到第一个乘法运算结果时,状态控制电路14获取的存储指示信号可以为1,累加子电路112得到第二个乘法运算结果时,状态控制电路14获取的存储指示信号可以为2,依次类推,累加子电路112得到每一个乘法运算结果,状态控制电路14获取的存储指示信号的数值,可以为在上一个乘法运算结果对应存储指示信号数值的基础上加1。可选的,上述状态控制电路14还可以自动获取寄存器电路13中存在乘法运算结果时,当前时钟周期数对应的读取指示信号,其中,上述状态控制电路14可以自动获取当前的时钟周期数,还可以接收外界设备传输的时钟周期数。例如,若第一时钟周期下,寄存器电路13中存储第一个乘法运算结果时,状态控制电路14获取的对应读取指示信号可以为1,此时,选择电路15可以读取寄存器电路13中存储的部分数据,第二时钟周期时,状态控制电路14获取的对应读取指示信号可以为2,此时,选择电路15可以读取寄存器电路13存储的第一个乘法运算结果中的剩余部分数据,还可以理解为,乘法器对应两个时钟周期可以输出一个乘法运算结果;但是,得到第一个乘法运算结果后需要经过五个时钟周期才可以得到第二个乘法运算结果时,第六个时钟周期下,寄存器电路13才可以存储第二个乘法运算结果,此时,状态控制电路14获取的对应读取指示信号可以为3,相当于读取指示信号的数值可以根据寄存器电路13中存储数据的数目确定。
另外,累加子电路112得到的乘法运算结果并不是乘法器得到的目标运算结果,目标运算结果可以通过乘法器两次输出的两个运算结果拼接得到,且乘法器中的选择电路15第一次输出的运算结果,与第二次输出的运算结果拼接,可以得到乘法器得到的目标运算结果,依次类推,选择电路15两次输出的运算结果拼接,可以得到乘法器每一次乘法运算得到的目标运算结果。此外,乘法运算电路11对应多个时钟周期也可以输出一个目标运算结果。
需要说明的是,乘法器可以通过寄存控制电路12,接收累加子电路112每一次乘法运算输出的乘法运算结果,并根据接收到的存储指示信号,确定存储每一个乘法运算结果的存储单元。可选的,选择电路15可以根据接收到的不同读取指示信号,确定读取对应的寄存器电路13中,存储的乘法运算结果中的数据。可选的,若乘法器输入端口的位宽为N,并且接收到的数据位宽也为N,此时,乘法器输出端口的位宽M可以等于2N/t+deta((2N/t+deta)<2N),其中,通常情况下,乘法运算电路11经过t(t>1)个时钟周期可以完成一次乘法器实现的乘法运算,得到一个乘法运算结果,并将乘法运算电路11中的累加子电路112得到的乘法运算结果存储至寄存器电路13中,其中,deta(deta>=0)为一个常数。另外,还存在一种小概率的情况,乘法器可以经过m(m<t,且m<=1)个时钟周期完成一次乘法运算,得到一个乘法运算结果,并将乘法运算电路11中的累加子电路112得到的乘法运算结果存储至寄存器电路13中。可选的,选择电路15可以两次读取寄存器电路13存储的乘法运算结果中的数据,其中,乘法运算结果的位宽可以等于2N,读取的乘法运算结果中的数据位宽可以等于N,选择电路15两次可以分别读取同一个乘法运算结果中的高N位数据,和低N位数据作为两次运算结果,并将两个运算结果拼接,得到乘法器进行乘法运算得到的目标运算结果。
另外,在本实施例中,可以理解的是,上述部分积获取单元1112可以根据原始部分积得到符号位扩展后的部分积,并且根据符号位扩展后的部分积得到目标编码的部分积。可选的,上述符号位扩展后的部分积的位宽可以等于乘法器接收到的数据位宽N的2倍,上述原始部分积的位宽可以等于乘法器接收到的数据位宽N。可选的,符号位扩展后的部分积中的高N位数值可以等于原始部分积中的最高位数值,即原始部分积的符号位数值,也就是,符号位扩展后的部分积中的高N+1位数值相等于,低N-1位数值可以等于原始部分积中的低N-1位数值。
示例性的,若乘法器当前处理8位*8位的定点数乘法运算,通过部分积获取单元1112得到的一个原始部分积为“p7p6p5p4p3p2p1p0”,对原始部分积进行符号位扩展处理,得到的符号位扩展后的部分积可以表示为“p7p7p7p7p7p7p7p7p7p6p5p4p3p2p1p0”。
还可以理解的是,所有目标编码的部分积的分布规律中,每一个目标编码的部分积均可以有对应的符号位扩展后的部分积,第一个目标编码的部分积可以为第一个符号位扩展后的部分积,从第二个目标编码的部分积开始,对应的符号位扩展后的部分积在上一个目标编码的部分积的基础上,可以向左移动一位数值,每一个目标编码的部分积的最高位数值与第一个目标编码的部分积的最高位数值位于同一列,相当于,从第二个目标编码的部分积开始,左移每一个符号位扩展后的部分积后,对应左移的更高位数值不进行加法运算。
本实施例提供的一种乘法器,乘法器通过正则有符号数编码子电路对接收到的数据进行正则有符号数编码处理得到目标编码,并根据目标编码得到目标编码的部分积,通过累加子电路对符号位扩展后的部分积进行累加处理得到乘法运算结果,通过状态控制电路获取存储指示信号以及读取指示信号,并且寄存控制电路根据存储指示信号,确定存储所述乘法运算结果的寄存器电路,通过寄存器电路存储乘法运算结果,同时,选择电路根据读取指示信号读取寄存器电路中,存储的乘法运算结果中的数据得到目标运算结果,该乘法器能够采用正则有符号数编码子电路对接收到的数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法器实现乘法运算的复杂性;同时,该乘法器能够提高乘法运算的运算效率,有效降低了乘法器的功耗。
如图2所示为一实施例提供的一种乘法器的具体结构示意图。该乘法器包括:乘法运算电路21和转数电路22,所述乘法运算电路21包括正则有符号数编码子电路211以及累加子电路212,所述正则有符号数编码子电路211的输出端与所述累加子电路212的输入端连接,所述累加子电212路的输出端与所述转数电路22的输入端连接,所述转数电路22包括第一转换子电路221和第二转换子电路222;其中,所述正则有符号数编码子电路211用于对接收到的数据进行正则有符号数编码处理得到目标编码,并根据所述目标编码得到目标编码的部分积,所述累加子电路212用于对所述目标编码的部分积进行累加处理得到乘法运算结果,所述第一转换子电路221及第二转换子电路222分别用于对所述乘法运算结果进行转数处理,得到目标运算结果。
可选的,所述正则有符号数编码子电路211包括正则有符号数编码单元2111以及部分积获取单元2112,所述正则有符号数编码单元2111用于接收第一数据,并对所述第一数据进行所述正则有符号数编码处理,得到所述目标编码,所述部分积获取单元2112用于接收第二数据,根据所述目标编码以及所述第二数据得到原始部分积,并根据所述原始部分积得到所述目标编码的部分积。
具体的,上述正则有符号数编码子电路211可以对接收到的数据进行正则有符号数编码处理,上述数据可以为乘法运算中的乘数以及被乘数,且乘数以及被乘数可以为同位宽的定点数。可选的,上述正则有符号数编码子电路211可以包括多个具有不同功能的数据处理子电路,多个不同功能的数据处理子电路的输入端口可以有一个或多个,每个数据处理子电路中的每个输入端口的功能可以不相同,输出端口也可以有一个,每个数据处理子电路中的每个输出端口的功能可以不相同,并且不同功能数据处理子电路的电路结构可以不相同。可选的,上述转数电路22可以将累加子电212输出的乘法运算结果,转换成目标格式的数据,即目标运算结果,其中,乘法运算结果可以为定点数,则上述目标格式的数据可以为定点数,也可以为浮点数,另外,目标格式的数据位宽可以小于乘法运算结果位宽的2倍。可选的,目标运算结果可以为乘法运算结果中的部分数据。可选的,上述目标运算结果的位宽可以等于乘法运算结果位宽的1/2,还可以等于乘法运算结果位宽的1/4,本实施例对此不做任何限定。在本实施例中,还可以理解为,目标运算结果的位宽小于乘法运算结果位宽的2倍。另外,累加子电212得到的乘法运算结果并不是乘法器实现乘法运算得到的目标运算结果,只是目标运算结果中的部分数据。可选的,上述目标编码的数目可以等于目标编码的部分积的数目,且该目标编码中可以包含三种数值,分别为-1、0和1。
需要说明的是,上述正则有符号数编码子电路211可以对固定位宽的数据进行乘法运算处理,并且正则有符号数编码子电路211接收到的数据位宽可以等于乘法器输入端口的位宽,另外,在本实施例中,乘法器输出端口的位宽可以小于输入端口位宽的2倍。
可选的,所述转数电路22中包括输入端口,用于接收数据转换信号。可选的,所述数据转换信号用于确定所述转数电路22处理的数据转换类型。
可选的,上述数据转换信号可以有多种,不同数据转换信号对应转数电路22可以将接收到的数据转换成目标格式的数据。可选的,上述数据转换类型可以包括定点数转定点数,以及定点数转浮点数。示例性的,若乘法器输入端口和输出端口的位宽均为N,则乘法器可以得到2N比特位宽的乘法运算结果,并且乘法器可以通过转数电路22将2N比特位宽的乘法运算结果,转换成N比特位宽的目标运算结果,该目标运算结果可以为浮点数,另外,乘法器还可以通过转数电路22将2N比特位宽的乘法运算结果,转换成N比特位宽的定点数,即目标运算结果。在本实施例中,正则有符号数编码子电路211的电路结构及其功能,与正则有符号数编码子电路111的电路结构及其功能相同,对此本实施例不再赘述正则有符号数编码子电路211的具体结构。
本实施例提供的一种乘法器,该乘法器能够采用正则有符号数编码子电路对接收到的数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法器实现乘法运算的复杂性;同时,该乘法器能够提高乘法运算的运算效率,有效降低了乘法器的功耗。
作为其中一个实施例,所述正则有符号数编码单元1111可以包括:第一数据输入端口1111a和目标编码输出端口1111b;所述第一数据输入端口1111a用于接收进行正则有符号数编码处理的所述第一数据,所述目标编码输出端口1111b用于输出对所述第一数据进行正则有符号数编码处理后得到的所述目标编码。
具体的,正则有符号数编码单元1111中的第一数据输入端口1111a接收到的第一数据可以为乘法运算中的乘数,该乘数可以为定点数。可选的,部分积获取单元1112接收到的第二数据可以为乘法运算中的被乘数,该被乘数可以为定点数,且上述乘数和被乘数可以为同位宽的数据。可选的,上述目标编码的数目可以等于原始部分积的数目以及目标编码的部分积的数目。
需要说明的是,上述正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+1)。进一步地,在正则有符号数编码处理时,数据11可以转换为(100-001),即数据11可以等价转换为10(-1);数据111可以转换为(1000-0001),即数据111可以等价转换为100(-1);依次类推,其它连续l(l>=2)位数值1转换处理的方式也类似。
例如,正则有符号数编码单元1111接收到的乘数为“001010101101110”,对该乘数进行第一级转换处理后得到的第一新数据为“0010101011100(-1)0”,继续对第一新数据进行第二级转换处理后得到的第二新数据为“0010101100(-1)00(-1)0”,继续对第二新数据进行第三级转换处理后得到的第三新数据为“0010110(-1)00(-1)00(-1)0”,继续对第三新数据进行第四级转换处理后得到的第四新数据为“00110(-1)0(-1)00(-1)00(-1)0”,继续对第四新数据进行第五级转换处理后得到的第五新数据为“010(-1)0(-1)0(-1)00(-1)00(-1)0”,第五新数据中不存在连续的l(l>=2)位数值1,此时,将第五新数据可以称为中间编码,并对中间编码进行一次补位处理后,表征正则有符号数编码处理完成,其中,中间编码的位宽可以等于乘数的位宽。可选的,正则有符号数编码单元1111对乘数进行正则有符号数编码处理后,得到的新数据(即中间编码)中,若新数据中的最高位数值和次高位数值为“10”或“01”,则正则有符号数编码单元1111可以对该新数据得到的中间编码的最高位数值的更高一位处补一位数值0,得到对应目标编码的高三位数值分别为“010”或“001”。可选的,上述中间编码的位宽可以等于目标编码的位宽减1。
需要说明的是,正则有符号数编码单元1111可以通过目标编码输出端口1111b将目标编码输出。可选的,上述目标编码的位宽可以等于正则有符号数编码单元1111接收到的数据的位宽,且目标编码中可以包含三种数值,分别为-1、0以及1,也可以理解的是,目标编码中包含的数值的数目可以等于目标编码的位宽。
本实施例提供的一种乘法器,通过乘法运算电路中的正则有符号数编码单元可以对接收到的数据进行正则有符号数编码处理得到目标编码,再通过部分积获取单元根据每一个目标编码得到原始部分积,并根据原始部分积得到目标编码的部分积,最后通过累加子电路对目标编码的部分积进行累加处理,得到乘法运算处理,通过状态控制电路获取存储指示信号以及读取指示信号,并且寄存控制电路根据存储指示信号,确定存储所述乘法运算结果的寄存器电路,通过寄存器电路存储乘法运算结果,同时,选择电路根据读取指示信号读取寄存器电路中,存储的乘法运算结果中的数据得到目标运算结果,该乘法器能够采用正则有符号数编码单元对接收到的数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法器实现乘法运算的复杂性;同时,该乘法器能够提高乘法运算的运算效率,有效降低了乘法器的功耗。
作为其中一个实施例,所述部分积获取单元1112具体用于对所述目标编码进行转换处理得到原始部分积,并对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积,根据所述符号位扩展后的部分积得到所述目标编码的部分积。
具体的,上述转换处理可以表征为,基于乘法运算中的被乘数(即X),将目标编码中的数值转换成原始部分积。可选的,目标编码中的每一位数值均有对应的原始部分积;若目标编码中的数值为-1,则对应的原始部分积可以为-X,若目标编码中的数值为1,则对应的原始部分积可以为X,若目标编码中的数值为0,则对应的原始部分积可以为0。可选的,上述原始部分积可以为未进行符号位扩展的部分积,且原始部分积的位宽可以与乘法运算电路11当前所处理数据的位宽相同。可选的,上述符号位扩展后的部分积的位宽可以等于乘法器处理数据位宽N的2倍,此时,原始部分积的位宽可以等于N。可选的,符号位扩展后的部分积中的低N位数值可以等于原始部分积包含的N位数值,符号位扩展后的部分积中的高N位数值可以等于原始部分积的最高位数值,即原始部分积的符号位数值。
另外,部分积获取单元1112可以根据得到的所有符号位扩展后的部分积得到目标编码的部分积,所有目标编码的部分积的分布规律中,第一个目标编码的部分积可以等于第一个符号位扩展后的部分积,从第二个目标编码的部分积开始,每一个目标编码的部分积的最高位数值可以与第一个目标编码的部分积的最高位数值位于同一列,每一个目标编码的部分积的位宽可以等于上一个目标编码的部分积的位宽减1,还可以等于每一个对应符号位扩展后的部分积的位宽2N减(i-1),其中,i表示目标编码的部分积从1开始的编号,得到的9个目标编码的部分积的分布图可见图3所示。
可选的,所述部分积获取单元1112包括:目标编码输入端口1112a、第二数据输入端口1112b以及部分积输出端口1112c;所述目标编码输入端口1112a用于接收所述目标编码,所述第二数据输入端口1112b用于接收所述第二数据,所述部分积输出端口1112c用于输出所述目标编码的部分积。
在本实施例中,部分积获取单元1112可以通过目标编码输入端口1112a接收正则有符号数编码单元1111得到的目标编码,通过第二数据输入端口1112b接收第二数据,根据目标编码以及第二数据进行转换处理,以及移位处理得到目标编码的部分积,并将目标编码的部分积通过部分积输出端口1112c输出。
本实施例提供的一种乘法器,乘法器能够获取的有效部分积的数目较少,从而降低乘法器实现乘法运算的复杂性;同时,该乘法器能够提高乘法运算的运算效率,有效降低了乘法器的功耗。
另一实施例提供的一种乘法器,其中,乘法器包括所述累加子电路112,该累加子电路112包括:***树组单元1121和累加单元1122;其中,所述***树组单元1121的输出端与所述累加单元1122的输入端连接;所述***树组单元1121用于对所述目标编码的部分积进行累加处理得到累加运算结果,所述累加单元1122用于对所述累加运算结果进行累加处理。
具体的,上述***树组单元1121可以对部分积获取单元1112得到的所有目标编码的部分积中的数值进行累加处理得到累加运算结果,并通过累加单元1122对***树组单元1121得到累加运算结果进行累加处理,得到目标运算结果。
本实施例提供的一种乘法器,通过***树组单元可以对目标编码的部分积进行累加处理,并通过累加单元对累加结果进行累加处理,得到乘法运算结果,并根据乘法运算结果得到目标运算结果,从而保证乘法器获取的有效部分积的数目较少,降低乘法器实现乘法运算的复杂性;同时,该乘法器能够提高乘法运算的运算效率,有效降低了乘法器的功耗。
另一个实施例提供的乘法器中的***树组单元1121包括:***树子单元1121_1~1121_n,多个所述***树子单元1121_1~1121_n用于对所有目标编码的部分积中的每一列数值进行累加处理。
具体的,***树子单元1121_1~1121_n的电路结构可以由全加器和半加器组合实现,另外,还可以理解为***树子单元1121_1~1121_n是一种能够对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路。可选的,***树组单元1121包含的***树子单元的数目n可以等于乘法运算电路11当前所处理数据位宽的2倍,并且n个***树子单元可以对目标编码的部分积进行并行处理,但连接方式可以是串行连接。可选的,***树组单元1121中每一个***树子单元可以对所有目标编码的部分积中的每一列数值进行加法处理,每一个***树子单元可以输出两个信号,即进位信号Carryi与一个和位信号Sumi,其中,i可以表示每一个***树子单元对应的编号,第一个***树子单元的编号为1。可选的,每一个***树子单元接收到输入信号的数目可以等于目标编码的数目或者符号位扩展后的部分积的数目。
另外,***树组单元1121中每一个***树子单元接收到的信号可以包括进位输入信号Cini,部分积输入信号,进位输出信号Couti。可选的,每一个***树子单元接收到的部分积输入信号可以为所有目标编码的部分积中的每一列数值,每一个***树子单元输出的进位信号Couti的位数可以等于NCout=floor((NI+NCin)/2)-1。其中,NI可以表示该***树子单元的部分积数值输入信号的数目,NCin可以表示该***树子单元的进位输入信号的数目,NCout可以表示该***树子单元最少的进位输出信号的数目,floor(·)可以表示向下取整函数。可选的,***树组单元1121中每一个***树子单元接收到的进位输入信号,可以为上一个***树子单元输出的进位输出信号,而第一个***树子单元接收到的进位输入信号可以为0,同时,第一个***树子单元接收到的进位信号输入端口的数目,可以与其它***树子单元的进位信号输入端口的数目相同。
示例性的,若乘法运算电路11当前处理8位*8位的乘法运算,通过部分积获取单元1112得到的符号位扩展后的部分积为“pi9pi9pi9pi9pi9pi9pi9pi9pi8pi7pi6pi5pi4pi3pi2pi1”(i=1,…,n=9),其中,i可以表示第i个符号位扩展后的部分积,并根据9个符号位扩展后的部分积得到9个目标编码的部分积,并对这9个目标编码的部分积进行累加处理。可选的,9个目标编码的部分积的分布规律可以参见图3所示,每一个原点可以代表符号位扩展后的部分积中的每一位数值,且第一个目标编码的部分积可以为第一个符号位扩展后的部分积,其中,9个目标编码的部分积的分布规律中,每一个目标编码的部分积均可以有对应的符号位扩展后的部分积,从第二个目标编码的部分积开始,对应的符号位扩展后的部分积在上一个目标编码的部分积的基础上,可以向左移动一位数值,每一个目标编码的部分积的最高位数值与第一个目标编码的部分积的最高位数值位于同一列,相当于,从第二个目标编码的部分积开始,左移每一个符号位扩展后的部分积后,对应左移的更高位数值不进行加法运算。可选的,9个目标编码的部分积中,第一个目标编码的部分积可以为第一个符号位扩展后的部分积,从第二个目标编码的部分积开始,每一个目标编码的部分积的最高位数值,与第一个目标编码的部分积的最高位数值位于同一列;从最右列至最左列算起,共需要16个***树子单元对9个符目标编码的部分积进行累加处理,16个***树子单元的连接电路图如图4所示,其中,图4中Wallace_i表示***树子单元,i为***树子单元从1开始的编号,并且两两***树子单元之间连接的实线表示高位编号对应的***树子单元有进位输出信号,虚线表示高位编号对应的***树子单元没有进位输出信号。
本实施例提供的一种乘法器,该乘法器获取的有效部分积的数目较少,降低乘法器实现乘法运算的复杂性;同时,该乘法器能够提高乘法运算的运算效率,有效降低了乘法器的功耗。
作为其中一个实施例,其中,乘法器中的累加单元1122包括:加法器,所述加法器用于对接收到的所述累加修正结果进行加法运算。
具体的,加法器可以为不同位宽的加法器,该加法器可以为超前进位加法器。可选的,加法器可以接收修正***树组单元1121输出的两路信号,对两路输出信号进行加法运算,输出乘法运算结果。
可选的,所述加法器包括:进位信号输入端口、和位信号输入端口以及结果输出端口;所述进位信号输入端口用于接收进位信号,所述和位信号输入端口用于接收和位信号,所述结果输出端口用于输出所述进位信号与所述和位信号进行累加处理的结果。
具体的,加法器可以通过进位信号输入端口接收修正***树组单元1121输出的进位信号Carry,通过和位信号输入端口接收修正***树组单元1121输出的和位信号Sum,并将进位信号Carry与和位信号Sum进行累加的结果,通过结果输出端口输出。
需要说明的是,乘法运算时,乘法处理电路11可以采用不同位宽的加法器对修正***树组单元1121输出的进位输出信号Carry与和位输出信号Sum进行加法运算,其中,上述加法器可处理数据的位宽可以等于乘法器当前处理的数据位宽N的2倍。可选的,修正***树组单元1121中的每一个***树子单元可以输出一个进位输出信号Carryi,与一个和位输出信号Sumi(i=0,…,2N-1,i为每一个***树子单元的对应编号,编号从0开始)。可选的,加法器接收到的Carry={[Carry0:Carry2N-2],0},也就是说,加法器接收到的进位输出信号Carry的位宽为2N,进位输出信号Carry中前2N-1位数值对应修正***树组单元1121中,前2N-1个***树子单元的进位输出信号,进位输出信号Carry中最后一位数值可以用数值0代替。可选的,加法器接收到的和位输出信号Sum的位宽为2N,和位输出信号Sum中的数值可以等于修正***树组单元1121中每一个***树子单元的和位输出信号。
示例性的,若乘法运算电路11当前处理8位*8位的乘法运算,则加法器可以为16位超前进位加法器,继续如图4所示,修正***树组单元1121可以输出16个***树子单元的和位输出信号Sum和进位输出信号Carry,但是,16位超前进位加法器接收到的和位输出信号可以为修正***树组单元1121输出的完整和位信号Sum,接收到的进位输出信号可以为修正***树组单元1121中,除去最后一个***树子单元输出的进位输出信号的所有进位输出信号,与数值0结合后的进位信号Carry。
本实施例提供的一种乘法器,该乘法器获取的有效部分积的数目较少,降低乘法运算的复杂性,提高了乘法运算的运算效率,有效降低了乘法器的功耗。
在一个实施例中,乘法器包括所述寄存器电路13,该寄存器电路13包括:寄存子电路131,所述寄存子电路131用于将不同存储指示信号对应的所述乘法运算结果进行存储。
具体的,上述寄存器电路13可以包括两个或多个寄存子电路131,还可以理解为,寄存器电路13中寄存子电路131的数目,可以等于2Nin/Nout,Nin表示乘法器接收到的数据位宽,Nout(Nout<2Nin)表示乘法器输出的数据位宽。可选的,寄存子电路131存储的数据位宽可以等于乘法器输入端口位宽的2倍。可选的,乘法器接收到的数据位宽可以等于乘法器输入端口的位宽,并且乘法器输出的数据位宽可以等于乘法器输入端口的位宽,还可以小于乘法器输入端口位宽的2倍。示例性的,若乘法器输入端口的位宽和输出端口的位宽均为N比特,则寄存器电路13需要通过两个寄存子电路131组合而成;若乘法器输入端口的位宽为N比特,输出端口的位宽为N/2比特,则寄存器电路13需要通过四个寄存子电路131组合而成。可选的,乘法器可以根据存储指示信号将每一次乘法运算得到的乘法运算结果,存储至对应的2Nin/Nout个寄存子电路131中,其中,不同的存储指示信号有对应存储乘法运算结果的不同寄存子电路131。可选的,乘法器得到的每一个乘法运算结果,只能按照存储指示信号对应的寄存子电路131存储,并不能将每一次得到的乘法运算结果,存储至与存储指示信号不对应的其它寄存子电路131中。
示例性的,若寄存器电路13中有n个寄存子电路131,对应编号为1,2,3,...,n,则乘法器得到的第一个乘法运算结果可以存储至1号寄存子电路131中,此时,存储指示信号的数值可以为1,乘法器得到的第二个乘法运算结果可以存储至2号寄存子电路132中,此时,存储指示信号的数值可以为2,还可以理解为,存储指示信号的数值为奇数时,存储乘法运算结果的寄存子电路131的对应编号也为奇数,存储指示信号的数值为偶数时,存储乘法运算结果的寄存子电路131的对应编号也为偶数,其中,存储指示信号的数值可以等于对应存储乘法运算结果的寄存子电路131的编号。
本实施例提供的一种乘法器,乘法器中的寄存子电路,根据不同的存储指示信号将每一次乘法运算得到的乘法运算结果,存储至不同的寄存子电路中,进而根据读取指示信号输出对应寄存子电路存储的乘法运算结果中的数据,以便后续通过输出端口位宽不匹配输入端口位宽2倍的乘法器,输出目标运算结果,同时,上述乘法器获取的有效部分积的数目较少,降低乘法器实现乘法运算的复杂性。
另一实施例提供的一种乘法器,其中,乘法器包括所述累加子电路212,该累加子电路212包括:***树组单元2121和累加单元2122;其中,所述***树组单元2121的输出端与所述累加单元2122的输入端连接;所述***树组单元2121用于对所述目标编码的部分积进行累加处理得到累加运算结果,所述累加单元2122用于对所述累加运算结果进行累加处理,得到所述目标运算结果。
具体的,上述***树组单元2121可以对部分积获取单元2112得到的所有目标编码的部分积中的数值进行累加处理得到累加运算结果,并通过累加单元2122对***树组单元2121得到累加运算结果进行累加处理,得到目标运算结果。
可选的,一种乘法器包括所述***树组单元2121,该***树组单元2121包括:***树子单元2121_1~2121_n,多个所述***树子单元2121_1~2121_n用于对所有目标编码的部分积中的每一列数值进行累加处理。
在本实施例中,***树组单元2121的电路结构及其功能,与***树组单元1121的电路结构及其功能可以相同,对此本实施例不再赘述***树组单元2121的具体结构。
本实施例提供的一种乘法器,通过***树组单元可以对目标编码的部分积进行累加处理,并通过累加单元对结果进行累加处理,得到乘法运算结果,并根据乘法运算结果得到目标运算结果,从而保证乘法器获取的有效部分积的数目较少,降低乘法器实现乘法运算的复杂性;同时,该乘法器能够提高乘法运算的运算效率,有效降低了乘法器的功耗。
作为其中一个实施例,其中,乘法器包括所述累加单元2122,该累加单元2122包括:加法器,所述加法器用于对所述累加运算结果进行加法运算。
具体的,加法器可以为不同位宽的加法器,该加法器可以为超前进位加法器。可选的,加法器可以接收***树组单元2121输出的两路信号,对两路输出信号进行加法运算,输出乘法运算结果。
本实施例提供的一种乘法器,通过累加单元可以对***树组单元输出的两路信号进行累加处理,输出乘法运算结果,并根据乘法运算结果得到目标运算结果,从而保证乘法器获取的有效部分积的数目较少,降低乘法器实现乘法运算的复杂性;同时,该乘法器能够提高乘法运算的运算效率,有效降低了乘法器的功耗。
在其中一个实施例中,其中,乘法器包括所述加法器,该加法器包括:进位信号输入端口、和位信号输入端口以及结果输出端口;所述进位信号输入端口用于接收进位信号,所述和位信号输入端口用于接收和位信号,所述结果输出端口用于输出所述进位信号与所述和位信号进行累加处理得到的乘法运算结果。
具体的,加法器可以通过进位信号输入端口接收***树组单元2121输出的进位信号Carry,通过和位信号输入端口接收***树组单元2121输出的和位信号Sum,并将进位信号Carry与和位信号Sum进行累加得到的乘法运算结果,通过结果输出端口输出。
需要说明的是,乘法运算时,乘法运算电路21可以采用不同位宽的加法器对***树组单元2121输出的进位输出信号Carry与和位输出信号Sum进行加法运算,其中,上述加法器可处理数据的位宽可以等于乘法器当前处理的数据位宽N的2倍。可选的,***树组单元2121中的每一个***树子单元可以输出一个进位输出信号Carryi,与一个和位输出信号Sumi(i=0,…,2N-1,i为每一个***树子单元的对应编号,编号从0开始)。可选的,加法器接收到的Carry={[Carry0:Carry2N-2],0},也就是说,加法器接收到的进位输出信号Carry的位宽为2N,进位输出信号Carry中前2N-1位数值对应***树组单元2121中前2N-1个***树子单元的进位输出信号,进位输出信号Carry中最后一位数值可以用0代替。可选的,加法器接收到的和位输出信号Sum的位宽为2N,和位输出信号Sum中的数值可以等于***树组单元2121中每一个***树子单元的和位输出信号。
示例性的,若乘法运算电路11当前处理8位*8位的乘法运算,则加法器可以为16位超前进位加法器,继续如图4所示,***树组单元2121可以输出16个***树子单元的和位输出信号Sum和进位输出信号Carry,但是,16位超前进位加法器接收到的和位输出信号可以为***树组单元2121输出的完整和位信号Sum,接收到的进位输出信号可以为***树组单元2121中,除去最后一个***树子单元输出的进位输出信号的所有进位输出信号与0结合后的进位信号Carry。
本实施例提供的一种乘法器,通过累加单元可以对***树组单元输出的两路信号进行累加运算,输出乘法运算结果,并根据乘法运算结果得到目标运算结果,从而保证乘法器获取的有效部分积的数目较少,降低乘法器实现乘法运算的复杂性;同时,该乘法器能够提高乘法运算的运算效率,有效降低了乘法器的功耗。
另一实施例提供的一种乘法器,该乘法器包括所述第一转换子电路221以及所述第二转换子电路222,所述第一转换子电路221具体用于将所述乘法运算结果转换成浮点类型的所述目标运算结果,所述第二转换子电路222具体用于将所述乘法运算结果转换成定点类型的所述目标运算结果。
具体的,上述乘法运算结果的位宽可以等于乘法器接收到的数据位宽的2倍,浮点类型运算结果的位宽和定点类型运算结果的位宽均可以等于乘法器输出端口的位宽,并且转数电路22中,浮点类型的运算结果的位宽可以等于定点类型的运算结果的位宽。
需要说明的是,在转数电路22中,第一转换子电路221和第二转换子电路222没有任何连接关系,两者相互独立,每一次乘法运算时,转数电路22只需要用到第一转换子电路221或第二转换子电路222进行数据转数处理,得到目标运算结果即可。可选的,转数电路22可以根据接收到的数据转换信号,确定本次乘法运算需要通过第一转换子电路221还是第二转换子电路222进行数据转数处理。
可选的,数据转换信号可以包括两种信号,分别可以用二进制数值表示成00,01,其中,数据转换信号为00表征的信号可以包括转数电路22接收到的数据为2N比特位宽的定点数,将该2N比特位宽的定点数需要转换成N比特位宽的定点数,以及转换后定点数小数点的位置,其中,转换前2N比特位宽的定点数小数点的位置可以是确定的;数据转换信号为01表征的信号可以包括转数电路22接收到的乘法运算结果为2N比特位宽的定点数,将该2N比特位宽的定点数需要转换成N比特位宽的浮点数。可选的,转数电路22可以根据接收到的两种不同的数据转换信号,通过第一转换子电路221或第二转换子电路222将接收到的乘法运算结果进行不同的转数处理,具体实现方式通过如下方式实现:
(1)若转数电路22接收到的数据转换信号为00,则转数电路22可以将2N比特位宽的定点数转换成N比特位宽的定点数,此时,转数电路22可以通过第二转换子电路222对接收到的2N比特位宽的定点数进行数据转换,具体地,转数处理时,需要将目标转换后N比特位宽的定点数小数点的位置,与转换前2N比特位宽的定点数小数点的位置对齐,然后截取转换前2N比特位宽的定点数小数点位置前后共N位数值,得到转换后的N比特位宽的定点数,截取的方式可以分为三种情况:
情况a,当即将截取N位数值均包含在转换前2N比特位宽的定点数内,则第二转换子电路222可以直接截取转换前2N比特位宽的定点数中小数点位置前后共N位数值;
情况b,当即将截取的N位数值中的一部分数值包含在转换前2N比特位宽的定点数内,而需要截取的N位数值中的高位部分数值,在转换前2N比特位宽的定点数内没有对应的部分数值可截取,则第二转换子电路222均可以用转换前2N比特位宽的定点数的符号位,对这部分每位数值进行补位,然后从补位后的定点数中截取N位数值;
情况c,当即将截取的N位数值中的一部分数值包含在转换前2N比特位宽的定点数内,而需要截取的N位数值中的低位部分数值,在转换前2N比特位宽的定点数内没有对应的部分数值可截取,则第二转换子电路222可以根据转换前2N比特位宽的定点数的正负,对这部分每位数值进行补位,若转换前2N比特位宽的定点数为正数,这部分每位数值可以用数值0补位,否则用数值1补位,然后从补位后的定点数中截取N位数值;
(2)若转数电路22接收到的数据转换信号为01,则转数电路22可以将2N比特位宽的定点数转换成N比特位宽的浮点数,此时,转数电路22可以通过第一转换子电路221对接收到的2N比特位宽的定点数进行数据转换,具体地,转数处理时,将定点数的最高位数值(即符号位)可以作为转换后浮点数的符号位数值,另外,若转换前2N位定点数为正数,则除去最高位数值符号位,从2N-1位定点数最高位往最低位方向查找,查找到数值1时,统计数值1后还有m位数值,此时,转换后浮点数的指数位数值可以等于m加指数位偏移值i,并减去转换前2N位定点数小数点的位置,但是,若转换前2N位定点数为负数,则除去最高位数值符号位,从2N-1位定点数最高位往最低位方向查找,查找到数值0时,统计的是数值0后还有m位数值,此外,还需要截取m位数值中的高n位数值作为转换后浮点数的尾数位数值,若m>=n,则可以直接截取n位数值作为尾数位数值,若m<n,则可以在转换前2N位定点数后补n-m位最高位(即符号位)数值。
示例性的,若需要将2N比特位宽的定点数转换成16比特位宽的浮点数,则i可以等于16,n可以等于10;若需要将2N比特位宽的定点数转换成32比特位宽的浮点数,则i可以等于127,n可以等于23;若需要将2N比特位宽的定点数转换成64比特位宽的浮点数,则i可以等于1023,n可以等于52。
本实施例提供的一种乘法器,该乘法器可以通过转数电路将乘法运算结果,转换成位宽与乘法器输出端口位宽相等的数据后,输出目标运算结果,使得获得的目标运算结果的位宽,可以小于乘法器输入的数据位宽的2倍,从而有效降低了乘法器对输入输出端口位宽的要求,同时,上述乘法器获取的有效部分积的数目较少,降低乘法器实现乘法运算的复杂性。
图5为一实施例提供的数据处理方法的流程示意图,该方法可以通过图1所示的乘法器进行处理,本实施例涉及的是对数据进行比较运算的过程。如图5所示,该方法包括:
S101、接收待处理数据。
具体的,乘法器中的正则有符号数编码子电路可以接收两个待处理数据。可选的,正则有符号数编码子电路可以处理两个固定位宽的数据,并且固定位宽可以等于乘法器输入端口的位宽。可选的,上述正则有符号数编码子电路接收到的待处理数据可以为定点数,且定点数的位宽可以等于乘法器输入端口的位宽。
S102、对所述待处理数据进行正则有符号数编码处理,得到目标编码的部分积。
具体的,上述正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+1)。需要说明的是,上述目标编码的部分积的数目可以等于乘法器接收到的数据位宽N加1。
S103、对所述目标编码的部分积进行累加处理,得到乘法运算结果。
具体的,累加子电路可以对所有目标编码的部分积中的每一列数值进行累加运算,得到乘法运算结果。可选的,上述乘法运算结果的位宽可以等于乘法器接收到的数据位宽的2倍,还可以等于乘法器输入端口位宽的2倍。
S104、获取存储指示信号以及读取指示信号。
具体的,乘法器通过状态控制电路可以自动获取存储指示信号以及读取指示信号。
S105、根据所述存储指示信号将多个所述乘法运算结果存储至不同的寄存子电路中。
具体的,乘法器中的状态控制电路将获取的存储指示信号可以输入至寄存控制电路,寄存控制电路根据接收到的存储指示信号,确定本次乘法运算得到的乘法运算结果,可以存储至对应的寄存子电路中。
需要说明的是,一个寄存子电路最多只能存储一个乘法运算结果,并且多个寄存子电路中可以有部分寄存子电路为空闲状态。
S106、根据所述读取指示信号,读取不同寄存子电路中存储的对应所述乘法运算结果中的部分数据,得到目标运算结果。
具体的,乘法器中的选择电路可以根据接收到的读取指示信号,读取对应寄存子电路中存储的乘法运算结果中的部分数据,作为目标运算结果。可选的,上述运算结果并不是目标运算结果,乘法运算的目标运算结果可以为读取两次运算结果拼接而成,也可以为读取多次运算结果拼接而成,可以理解为,上述乘法运算结果中部分数据的位宽可以等于乘法运算结果位宽的1/2,还可以小于乘法运算结果位宽的1/2。可选的,目标运算结果的位宽可以小于等于乘法器输入端口的位宽。
本实施例提供的一种数据处理方法,该方法可以对接收到的数据进行正则有符号数编码处理,得到目标编码的部分积,对目标编码的部分积进行累加处理,得到乘法运算结果,分别读取乘法运算结果中的高位数据以及低位数据,作为目标运算结果,使得获得的目标运算结果的位宽可以小于乘法器输入的数据位宽的2倍,从而有效降低了乘法器对输入输出端口位宽的要求;同时,该方法能够采用正则有符号数编码电路对接收到的数据进行正则有符号数编码处理,降低乘法运算过程中获取的有效部分积的数目,从而降低乘法运算的复杂性;同时,该方法能够提高乘法运算的运算效率。
作为其中一个实施例,上述S102中对所述待处理数据进行正则有符号数编码处理,得到目标编码的部分积的步骤,可以包括:
S1021、对所述待处理数据进行正则有符号数编码处理,得到原始部分积。
可选的,上述S1021中对所述待处理数据进行正则有符号数编码处理,得到原始部分积的步骤,可以包括:
S1021a、对所述待处理数据进行正则有符号数编码处理,得到目标编码。
具体的,乘法器可以通过正则有符号数编码单元对接收到的待处理乘数进行正则有符号数编码处理,得到目标编码。其中,目标编码的位宽可以等于待处理乘数位宽N加1。
可选的,上述S1021a中对所述待处理数据进行正则有符号数编码处理,得到目标编码的步骤,可以包括:将所述待处理数据中连续的l位数值1转换为(l+1)位最高位数值为1,最低位数值为-1,其余位为数值0后,得到所述目标编码,其中,l大于等于2。
需要说明的是,上述正则有符号数编码处理的方法可以通过以下方式表征:对于N位乘数而言,从低位数值向高位数值处理,若存在连续l(l>=2)位数值1时,则可以将连续n位数值1转换处理为数据“1(0)l-1(-1)”,并且将其余对应(N-l)位数值与转换后的(l+1)位数值进行结合得到一个新的数据;然后将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位数值1为止;其中,对N位乘数进行正则有符号数编码处理,得到的目标编码的位宽可以等于(N+1)。
S1022b、根据所述待处理数据与所述目标编码进行转换处理,得到所述原始部分积。
需要说明的是,上述原始部分积的数目可以等于目标编码的位宽。
示例性的,若部分积获取单元接收到一个8位的被乘数“x7x6x5x4x3x2x1x0”(即X),则部分积获取单元可以根据被乘数“x7x6x5x4x3x2x1x0”(即X)与目标编码中包含的三种数值-1,0,1直接得到对应原始部分积,当目标编码中一位数值为-1时,则原始部分积可以为-X,当目标编码中一位数值为0时,则原始部分积可以为0,当目标编码中一位数值为1时,则原始部分积可以为X。可选的,上述转换处理可以表征为,基于乘法运算中的被乘数,将目标编码中的数值转换成原始部分积。
S1022、对所述原始部分积进行符号位扩展处理,得到所述目标编码的部分积。
可选的,上述S1022中对所述原始部分积进行符号位扩展处理,得到所述目标编码的部分积的步骤,具体可以包括:对所述原始部分积进行补位处理,得到所述目标编码的部分积。
具体的,符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽N的2倍,而原始部分积的位宽可以等于N,符号位扩展位的位数可以等于N。可选的,符号位扩展处理可以理解为,将符号位扩展位的数值均用原始部分积中符号位的数值进行补位,即补位数值可以为原始部分积中的符号位数值,该符号位数值可以为原始部分积中的最高位数值,得到一个2N比特位宽的符号位扩展后的部分积。可选的,上述补位的位数可以等于N。可选的,在所有符号位扩展后的部分积的分布规律中,所有符号位扩展后的部分积中的最高位数值可以位于同一列,最低位数值也可以位于同一列,其它对应位数值也可以对应同一列。
本实施例提供的一种数据处理方法,该方法可以对所述待处理数据进行正则有符号数编码处理,得到原始部分积,对所述原始部分积进行符号位扩展处理,得到所述目标编码的部分积,并对目标编码的部分积进行累加处理,得到乘法运算结果,进而分别读取乘法运算结果中的高位数据以及低位数据,作为目标运算结果,使得获得的目标运算结果的位宽可以小于乘法器输入的数据位宽的2倍,从而有效降低了乘法器对输入输出端口位宽的要求;同时,该方法能够获取的有效部分积的数目较少,从而降低乘法运算的复杂性;同时,该方法能够提高乘法运算的运算效率。
另一实施例提供的数据处理方法,上述S105中根据所述存储指示信号将多个所述乘法运算结果存储至不同的寄存子电路中的步骤,具体可以包括:
S1051、将第一存储指示信号对应的第一乘法运算结果存储至第一寄存子电路中。
具体的,存储指示信号的数目可以等于乘法器实现乘法运算的次数,乘法器实现一次乘法运算,可以得到一个乘法运算结果,并且状态控制电路可以获取一个对应的存储指示信号。若乘法器进行第一次乘法运算,得到第一乘法运算结果,状态控制电路自动获取第一存储指示信号,寄存控制电路根据状态控制电路输入的第一存储指示信号,确定存储第一乘法运算结果的第一寄存子电路,并将第一乘法运算结果输入至第一寄存子电路存储。
S1052、将第二存储指示信号对应的第二乘法运算结果存储至第二寄存子电路中。
需要说明的是,若乘法器进行第二次乘法运算,得到第二乘法运算结果,状态控制电路自动获取第二存储指示信号,寄存控制电路根据状态控制电路输入的第二存储指示信号,确定存储第二乘法运算结果的第二寄存子电路,并将第二乘法运算结果输入至第二寄存子电路存储。依次类推,乘法器可以将每一次乘法运算得到的乘法运算结果存储至不同的寄存子电路中,并且按照寄存子电路的编号顺序存储对应的乘法运算结果,也就是连续的两次乘法运算结果可以存储至相邻的两个寄存子电路中。
本实施例提供的一种数据处理方法,将第一存储指示信号对应的第一乘法运算结果存储至第一寄存子电路中,将第二存储指示信号对应的第二乘法运算结果存储至第二寄存子电路中,从而避免出现乘法运算结果覆盖的问题;另外,该方法还能使得获得的目标运算结果的位宽可以小于乘法器输入的数据位宽的2倍,有效降低乘法器对输入输出端口位宽的要求,同时,该方法能够获取的有效部分积的数目较少,降低乘法运算的复杂性。
作为其中一个实施例,上述S106中根据所述读取指示信号,读取不同寄存子电路中存储的对应所述乘法运算结果中的部分数据,得到目标运算结果的步骤,具体可以通过以下方式实现:
S1061、根据第一读取指示信号,读取所述第一寄存子电路中存储的第一乘法运算结果中的第一部分数据,得到第一运算结果。
S1062、根据第二读取指示信号,读取所述第一寄存子电路中存储的所述第一乘法运算结果中的第二部分数据,得到第二运算结果。
具体的,乘法器中的状态控制电路获取的读取指示信号的数目,可以等于乘法器读取运算结果的次数,相当于乘法运算结果数目的2倍。可选的,乘法运算结果可以包括两部分数据,即第一部分数据以及第二部分数据。示例性的,若乘法运算结果的位宽等于2N,则乘法运算结果可以分成两部分数据,高N位数据和低N位数据,其中,第一部分数据可以为高N位数据或低N位数据,第二部分数据可以为低N位数据或高N位数据。
S1063、根据第三读取指示信号,读取所述第二寄存子电路中存储的第二乘法运算结果中的第一部分数据,得到第三运算结果。
可选的,每一个读取指示信号可以对应乘法运算结果中的第一部分数据或第二部分数据。
S1064、根据第四读取指示信号,读取所述第二寄存子电路中存储的所述第二乘法运算结果中的第二部分数据,得到第四运算结果。
具体的,乘法器可以对多组待处理数据进行乘法运算,得到多个乘法运算结果,因此,乘法器读取第四运算结果后,可以根据下一读取指示信号,读取下一乘法运算结果中的部分数据。
示例性的,若乘法器的输入端口位宽为32比特,输出端口位宽为64/t+deta比特(一般,乘法器经过t个时钟周期可以完成一次乘法运算,得到一个乘法运算结果,t>1,deta>=0),乘法器接收到的数据位宽也为32比特,并且该乘法器需要对多组待处理数据进行乘法运算,该情况下,寄存器电路13中包括(64/(64/t+deta))个寄存子电路131(即寄存子电路A1,A2,...,Ai,i可以等于(64/(64/t+deta))),则得到目标运算结果的实现过程可以为:
若乘法器经过t(t可以大于等于0)个时钟周期得到第一乘法运算结果M_0,则寄存控制电路根据第一存储指示信号将M_0(64比特位宽)可以存储至寄存子电路A1中,此时,选择电路可以根据第一读取指示信号,从寄存子电路A1中读取M_0的高32位数据,作为第一次乘法运算得到的第一运算结果;
同时,当乘法器到第t+1个时钟周期时,则选择电路可以根据第二读取指示信号,从寄存子电路A1中读取M_0的低32位数据,作为第一次乘法运算得到的第二运算结果,在本实施例中,乘法器将第一运算结果与第二运算结果拼接,可以得到待处理数据的目标运算结果;
若乘法器到第2t个时钟周期时,可以得到第二乘法运算结果M_1,则寄存控制电路根据第二存储指示信号将M_1可以存储至寄存子电路A2中,此时,选择电路可以根据第三读取指示信号,从寄存子电路A2中读取M_1的高32位数据,作为第二次乘法运算得到的第三运算结果;
同时,当乘法器到第2t+1个时钟周期的运算时,则选择电路可以根据第四读取指示信号,从寄存子电路A2中读取M_1的低32位数据,作为第二次乘法运算得到的第四运算结果,在本实施例中,数据比较器将第三运算结果与第四运算结果合并,可以得到待处理数据的目标运算结果;
依次类推,根据不同的存储指示信号将得到的乘法运算结果,可以存储至对应不同的寄存子电路中,并根据不同的读取指示信号读取不同寄存子电路中,存储的乘法运算结果中的部分数据,得到目标运算结果。
另外,若多组待处理数据中的一组待处理数据,存在零值的情况,此时,乘法器经过m(m<t)个时钟周期可以得到该组待处理数据对应的乘法运算结果,乘法器可以根据存储指示信号将该乘法运算结果存储至对应的寄存子电路中,当前时钟周期下,乘法器可以根据读取指示信号读取不同寄存子电路存储的乘法运算结果中的部分数据,下一时钟周期乘法器可以输出乘法运算结果中的剩余部分数据;若下一组待处理数据中也存在零值的情况,并且需要1个时钟周期就可以完成一次乘法运算,得到乘法运算结果,此时,乘法器可以将该乘法运算结果存储至相邻的下一寄存子电路中。
本实施例提供的一种数据处理方法,乘法器根据读取指示信号,读取不同寄存子电路中存储的对应乘法运算结果中的部分数据,得到目标运算结果,该方法可以分别读取乘法运算结果中的高位数据以及低位数据,作为目标运算结果,使得获得的目标运算结果的位宽可以小于乘法器输入的数据位宽的2倍,从而有效降低了乘法器对输入输出端口位宽的要求;同时,该方法能够获取的有效部分积的数目较少,降低乘法运算的复杂性。
图6为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图2所示的乘法器进行处理,本实施例涉及的是对数据进行乘法运算的过程。如图6所示,该方法包括:
S201、接收数据转换信号以及待处理数据。
具体的,乘法器中的乘法运算电路可以接收两个待处理数据和数据转换信号。可选的,待处理数据的位宽可以等于乘法器输入端口的位宽。可选的,若转数电路接收不同的数据转换信号,则转数电路可以将接收到的数据转换成,数据转换信号对应格式的数据。
S202、对所述待处理数据进行正则有符号数编码处理,得到目标编码的部分积。
具体的,上述正则有符号数编码处理的原理可以表征为,对于N位乘数而言,从低位向高位数值处理,若存在连续l(l>=2)位1时,则可以将n位1转换处理为数据“1(0)l-1(-1)”,并且将其余对应N-l位数值与转化后的l+1位数值结合得到一个新的数据,将该新数据作为下一级转换处理的初始数据,直到转换处理后得到的新数据中不存在连续l(l>=2)位1为止,其中,对N位乘数进行正则有符号数编码处理得到的目标编码的位宽可以等于N+1位数值。需要说明的是,上述目标编码的部分积的数目可以等于乘法器接收到的数据位宽N加1。
S203、对所述目标编码的部分积进行累加处理,得到乘法运算结果。
具体的,累加子电路可以对所有目标编码的部分积中的每一列数值进行累加运算,得到乘法运算结果。可选的,上述乘法运算结果的位宽可以等于乘法器接收到的数据位宽的2倍,还可以等于乘法器输入端口位宽的2倍。可选的,上述乘法运算结果的位宽可以等于乘法器输入端口的位宽的2倍,还可以等于待处理数据的位宽的2倍。
S204、根据所述数据转换信号将所述乘法运算结果进行转数处理,得到目标运算结果,其中,所述数据转换信号用于指示乘法器需要将所述目标运算结果转换为需求的数据类型。
具体的,转数电路根据接收到的数据转换信号确定,可以将乘法运算结果转换成,定点类型的运算结果或者浮点类型的运算结果。示例性的,若转数电路可以接收两种数据转换信号,分别表示为00和01,同时,乘法器输入端口和输出端口的位宽均为N比特,则00表示转数电路可以将接收到的2N位乘法运算结果转换成,N位定点类型的运算结果,01表示转数电路可以将接收到的2N位乘法运算结果转换成,N位浮点类型的运算结果,其中,不同数据转换信号对应转数电路实现的功能可以灵活设置。可选的,每一种数据转换信号可以表征乘法器需要将乘法运算结果转换为需求的一种数据类型。
本实施例提供的一种数据处理方法,接收数据转换信号以及待处理数据,对所述待处理数据进行乘法运算处理,得到乘法运算结果,并根据所述数据转换信号将所述乘法运算结果进行转数处理,得到目标运算结果,该方法能够使得获得的目标运算结果的位宽,可以小于乘法器输入数据位宽的2倍,从而有效降低了乘法器对输入输出端口位宽的要求;同时,该方法能够获取的有效部分积的数目较少,降低乘法运算的复杂性。
本申请实施例还提供了一个机器学习运算装置,其包括一个或多个在本申请中提到的乘法器,用于从其它处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给***设备。***设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上乘法器时,乘法器间可以通过特定的结构进行链接并传输数据,譬如,通过快速外部设备互连总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制***,也可以有各自独立的控制***;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过快速外部设备互连接口与各种类型的服务器相连接。
本申请实施例还提供了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其它处理装置。机器学习运算装置与其它处理装置进行交互,共同完成用户指定的操作。图7为组合处理装置的示意图。
其它处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其它处理装置所包括的处理器数量不做限制。其它处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其它处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其它处理装置间传输数据和控制指令。该机器学习运算装置从其它处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其它处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其它处理装置。
可选的,该结构如图8所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其它处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其它处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其它处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上***,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。如图9所示,图9提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其它的配套部件,该配套部件包括但不限于:存储器件390、接收装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接收装置与所述芯片封装结构内的芯片电连接。所述接收装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接收装置可以为标准快速外部设备互连接口。比如,待处理数据由服务器通过标准快速外部设备互连接口传递至所述芯片,实现数据转移。优选的,当采用快速外部设备互连3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接收装置还可以是其它的接口,本申请并不限制上述其它的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接收装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备可以为乘法器、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的电路组合,但是本领域技术人员应该知悉,本申请并不受所描述的电路组合方式的限制,因为依据本申请,某些电路可以采用其它方式或者结构实现。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的器件和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种乘法器,其特征在于,所述乘法器包括:乘法运算电路、寄存控制电路、寄存器电路、状态控制电路以及选择电路,所述乘法运算电路包括正则有符号数编码子电路以及累加子电路,所述正则有符号数编码子电路的输出端与所述累加子电路的输入端连接,所述累加子电路的输出端与所述寄存控制电路的第一输入端连接,所述寄存控制电路的输出端与所述寄存器电路的输入端连接,所述寄存器电路的输出端与所述选择电路的第一输入端连接,所述状态控制电路的第一输出端与所述寄存控制电路的第二输入端连接,所述状态控制电路的第二输出端与所述选择电路的第二输入端连接。
2.根据权利要求1所述的乘法器,其特征在于,所述正则有符号数编码子电路包括正则有符号数编码单元以及部分积获取单元,所述正则有符号数编码单元用于接收第一数据,并对所述第一数据进行所述正则有符号数编码处理,得到目标编码,所述部分积获取单元用于接收第二数据,根据所述目标编码以及所述第二数据得到原始部分积,并根据所述原始部分积得到目标编码的部分积,所述累加子电路用于对所述目标编码的部分积进行累加处理得到乘法运算结果,所述状态控制电路用于获取存储指示信号以及读取指示信号,所述寄存控制电路用于根据所述状态控制电路输入的所述存储指示信号,确定存储所述乘法运算结果的所述寄存器电路,所述寄存器电路用于存储所述乘法运算结果,所述选择电路用于根据接收到的所述读取指示信号,读取所述寄存器电路中存储的所述乘法运算结果中的数据,作为目标运算结果。
3.根据权利要求2所述的乘法器,其特征在于,所述部分积获取单元具体用于对所述目标编码进行转换处理得到原始部分积,并对所述原始部分积进行符号位扩展处理,得到符号位扩展后的部分积,根据所述符号位扩展后的部分积得到所述目标编码的部分积。
4.根据权利要求2至3中任一项所述的乘法器,其特征在于,所述累加子电路包括:***树组单元和累加单元;其中,所述***树组单元的输出端与所述累加单元的输入端连接;所述***树组单元用于对所述目标编码的部分积进行累加处理得到累加运算结果,所述累加单元用于对所述累加运算结果进行累加处理。
5.根据权利要求4所述的乘法器,其特征在于,所述***树组单元包括:***树子单元,所述***树子单元用于对所有目标编码的部分积中的每一列数值进行累加处理。
6.根据权利要求4所述的乘法器,其特征在于,所述累加单元包括:加法器,所述加法器用于对接收到的所述累加运算结果进行加法运算。
7.根据权利要求1所述的乘法器,其特征在于,所述寄存器电路包括:寄存子电路,所述寄存子电路用于将不同存储指示信号对应的所述乘法运算结果进行存储。
8.一种乘法器,其特征在于,所述乘法器包括:乘法运算电路以及转数电路,所述乘法运算电路包括正则有符号数编码子电路以及累加子电路,所述正则有符号数编码子电路的输出端与所述累加子电路的输入端连接,所述累加子电路的输出端与所述转数电路的输入端连接,所述转数电路包括第一转换子电路和第二转换子电路;
其中,所述正则有符号数编码子电路用于对接收到的数据进行正则有符号数编码处理得到目标编码,并根据所述目标编码得到目标编码的部分积,所述累加子电路用于对所述目标编码的部分积进行累加处理得到乘法运算结果,所述第一转换子电路及第二转换子电路分别用于对所述乘法运算结果进行转数处理,得到目标运算结果。
9.根据权利要求8所述的乘法器,其特征在于,所述转数电路中包括输入端口,用于接收数据转换信号;所述数据转换信号用于确定所述转数电路处理的数据转换类型。
10.根据权利要求8或9所述的乘法器,其特征在于,所述第一转换子电路具体用于将所述乘法运算结果转换成浮点类型的所述目标运算结果,所述第二转换子电路具体用于将所述乘法运算结果转换成定点类型的所述目标运算结果。
CN201921433513.6U 2019-08-30 2019-08-30 乘法器 Active CN209895329U (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201921433513.6U CN209895329U (zh) 2019-08-30 2019-08-30 乘法器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201921433513.6U CN209895329U (zh) 2019-08-30 2019-08-30 乘法器

Publications (1)

Publication Number Publication Date
CN209895329U true CN209895329U (zh) 2020-01-03

Family

ID=69022051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201921433513.6U Active CN209895329U (zh) 2019-08-30 2019-08-30 乘法器

Country Status (1)

Country Link
CN (1) CN209895329U (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110515589A (zh) * 2019-08-30 2019-11-29 上海寒武纪信息科技有限公司 乘法器、数据处理方法、芯片及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110515589A (zh) * 2019-08-30 2019-11-29 上海寒武纪信息科技有限公司 乘法器、数据处理方法、芯片及电子设备
CN110515589B (zh) * 2019-08-30 2024-04-09 上海寒武纪信息科技有限公司 乘法器、数据处理方法、芯片及电子设备

Similar Documents

Publication Publication Date Title
CN110515589B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111008003B (zh) 数据处理器、方法、芯片及电子设备
CN110515587B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110362293B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110515590B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111381808B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110673823B (zh) 乘法器、数据处理方法及芯片
CN111258541B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258633B (zh) 乘法器、数据处理方法、芯片及电子设备
CN209895329U (zh) 乘法器
CN111258544B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113031912A (zh) 乘法器、数据处理方法、装置及芯片
CN210109863U (zh) 乘法器、装置、神经网络芯片及电子设备
CN110647307B (zh) 数据处理器、方法、芯片及电子设备
CN110515586B (zh) 乘法器、数据处理方法、芯片及电子设备
CN209879493U (zh) 乘法器
CN111258542B (zh) 乘法器、数据处理方法、芯片及电子设备
CN210006029U (zh) 数据处理器
CN110515588B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258545B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113031916A (zh) 乘法器、数据处理方法、装置及芯片
CN113031915A (zh) 乘法器、数据处理方法、装置及芯片
CN113031911A (zh) 乘法器、数据处理方法、装置及芯片
CN209962284U (zh) 乘法器、装置、芯片及电子设备
CN110378478B (zh) 乘法器、数据处理方法、芯片及电子设备

Legal Events

Date Code Title Description
GR01 Patent grant
GR01 Patent grant