乘法器、数据处理方法、芯片及电子设备与流程

文档序号:21027224发布日期:2020-06-09 20:00阅读:195来源:国知局
乘法器、数据处理方法、芯片及电子设备与流程

本发明涉及计算机技术领域,特别是涉及一种乘法器、数据处理方法、芯片及电子设备。



背景技术:

随着数字电子技术的不断发展,各类人工智能(artificialintelligence,ai)芯片的快速发展对于高性能数字乘法器的要求也越来越高。神经网络算法作为智能芯片广泛应用的算法之一,通过乘法器进行乘法运算在神经网络算法中是一种常见的操作。

目前,乘法器是采用布斯算法求取部分积,通过华莱士树进行部分积的压缩,用一组全加器进行对压缩结果进行累加得到运算结果。其中,在布斯算法中,需要对负的编码信号需要进行取反加一操作才能得到部分积。

但是,传统技术中,对负的编码信号进行取反加一操作会造成信号翻转,导致乘法器产生较多功耗。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种乘法器、数据处理方法、芯片及电子设备。

本发明实施例提供一种乘法器,所述乘法器包括:布斯编码电路,修正部分积获取电路,修正华莱士树组电路和累加电路,所述布斯编码电路的输出端与所述修正部分积获取电路的输入端连接,所述修正部分积获取电路的输出端与所述修正华莱士树组电路的输入端连接,所述修正华莱士树组电路的输出端与所述累加电路的输入端连接;

其中,所述布斯编码电路用于对接收到的数据进行布斯编码处理得到编码信号,所述修正部分积获取电路用于根据编码信号得到符号位扩展后的部分积以及加一位数值,并根据符号位扩展后的所述部分积以及所述加一位数值得到目标编码的所述部分积,所述修正华莱士树组电路用于对目标编码的所述部分积进行累加处理,所述累加电路用于对接收到的输入数据进行累加处理。

在其中一个实施例中,所述布斯编码电路包括:数据输入端口和编码信号输出端口,所述数据输入端口用于接收进行布斯编码处理的数据,所述编码信号输出端口用于输出对接收到的所述数据进行布斯编码处理后得到的编码信号。

在其中一个实施例中,所述修正部分积获取电路包括:编码信号输入端口,数据输入端口和部分积输出端口,所述编码信号输入端口用于接收编码信号,数据输入端口用于接收数据,部分积输出端口用于输出目标编码的所述部分积。

在其中一个实施例中,所述修正华莱士树组电路包括:部分积输入端口,进位信号输入端口,和位信号输出端口和进位信号输出端口,所述部分积输入端口用于接收修正部分积获取电路得到的目标编码的所述部分积,所述进位信号输入端口用于接收进位输入信号,所述和位信号输出端口用于输出华莱士树组电路获取的和位信号,所述进位信号输出端口用于输出华莱士树组电路获取的进位信号。

在其中一个实施例中,所述修正华莱士树组电路包括:修正华莱士树子电路,所述修正华莱士树子电路用于对目标编码的所述部分积的每一列进行累加处理。

在其中一个实施例中,所述累加电路包括:加法器,所述加法器用于对接收到的两个同位宽数据进行加法运算。

在其中一个实施例中,所述加法器包括:进位信号输入端口,和位信号输入端口和结果输出端口,所述进位信号输入端口用于接收进位信号,所述和位信号输入端口用于接收和位信号,所述结果输出端口用于输出进位信号与和位信号进行累加处理的结果。

本实施例提供的一种乘法器,该乘法器能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

本发明实施例提供一种数据处理方法,所述方法包括:

接收待处理的数据;

将待处理的所述数据进行布斯编码处理,得到编码信号;

根据待处理的所述数据与所述编码信号,得到目标编码的部分积;

对目标编码的所述部分积进行累加处理,得到运算结果。

在其中一个实施例中,所述根据待处理的所述数据与所述编码信号,得到目标编码的部分积,包括:

根据待处理的所述数据与所述编码信号,得到符号位扩展后的部分积;

根据所述编码信号得到加一位数值;

通过符号位扩展后的所述部分积与所述加一位数值,获得目标编码的所述部分积。

在其中一个实施例中,所述根据待处理的所述数据与所述编码信号,得到符号位扩展后的部分积,包括:

根据待处理的所述数据与所述编码信号,得到原始部分积;

对所述原始部分积进行符号位扩展处理,得到符号位扩展后的所述部分积。

在其中一个实施例中,所述对目标编码的所述部分积进行累加处理,得到运算结果,包括:

对目标编码的所述部分积进行累加处理,得到两路输出信号;

对所述两路输出信号进行累加处理,得到运算结果。

本实施例提供的一种数据处理方法,接收待处理的数据,将待处理的所述数据进行布斯编码处理,得到编码信号,根据待处理的所述数据与所述编码信号,得到目标编码的部分积,对目标编码的所述部分积进行累加处理,得到运算结果,该方法能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

本发明实施例提供的一种机器学习运算装置,该机器学习运算装置包括一个或者多个所述的乘法器;该机器学习运算装置用于从其它处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过i/o接口传递给其它处理装置;

当所述机器学习运算装置包含多个所述乘法器时,所述多个所述乘法器间可以通过特定的结构进行链接并传输数据;

其中,多个所述乘法器通过pcie总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘法器共享同一控制系统或拥有各自的控制系统;多个所述乘法器共享内存或者拥有各自的内存;多个所述乘法器的互联方式是任意互联拓扑。

本发明实施例提供的一种组合处理装置,该组合处理装置包括如所述的机器学习处理装置、通用互联接口,和其它处理装置;该机器学习运算装置与上述其它处理装置进行交互,共同完成用户指定的操作;该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述其它处理装置连接,用于保存所述机器学习运算装置和所述其它处理装置的数据。

本发明实施例提供的一种神经网络芯片,该神经网络芯片包括上述所述的乘法器、上述所述的机器学习运算装置或者上述所述的组合处理装置。

本发明实施例提供的一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述所述的神经网络芯片。

本发明实施例提供的一种板卡,该板卡包括上述所述的神经网络芯片封装结构。

本申请实施例提供了一种电子装置,该电子装置包括上述所述的神经网络芯片或者上述所述的板卡。

本发明实施例提供的一种芯片,包括至少一个如上述任一项所述的乘法器。

本发明实施例提供的一种电子设备,包括如所述的芯片。

附图说明

图1为一实施例提供的一种乘法器的结构示意图;

图2为另一实施例提供的另一种乘法器的结构示意图;

图3为一实施例提供的乘法器的具体结构示意图;

图4为另一实施例提供的8位数据乘法运算得到的目标编码的所有部分积的分布规律示意图;

图5为另一实施例提供的8位数据乘法运算得到的另一种目标编码的所有部分积的分布规律示意图;

图6为另一实施例提供的实现8位数据乘法运算时华莱士树子电路的连接结构示意图;

图7为另一实施例提供的另一种乘法器的具体结构示意图;

图8为另一实施例提供的另一种8位数据乘法运算得到的目标编码的所有部分积的分布规律示意图;

图9为另一实施例提供的实现8位数据乘法运算时修正华莱士树子电路的连接结构示意图;

图10为另一实施例提供的实现8位数据乘法运算时另一种修正华莱士树子电路的连接结构示意图;

图11为一实施例提供的一种数据的处理方法流程示意图;

图12为另一实施例提供的得到目标编码的部分积以及加一位数值的方法流程示意图;

图13为另一实施例提供的得到符号位扩展后的部分积的具体方法流程示意图;

图14为另一实施例提供的得到运算结果的具体方法流程示意图;

图15为另一实施例提供的另一种数据的处理方法流程示意图;

图16为另一实施例提供的另一种得到目标编码的部分积的方法流程示意图;

图17为另一实施例提供的另一种得到运算结果的具体方法流程示意图;

图18为一实施例提供的一种组合处理装置的结构图;

图19为一实施例提供的另一种组合处理装置的结构图;

图20为一实施例提供的一种板卡的结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的乘法器可应用于ai芯片、现场可编程门阵列fpga(field-programmablegatearray,fpga)芯片、或者是其它的硬件电路设备中进行乘法运算处理,其具体结构示意图如图1和2所示。

图1为一个实施例提供的一种乘法器的具体结构示意图,如图1所示,所述乘法器包括:布斯编码电路11,修正部分积获取电路12,华莱士树组电路13和累加电路14,所述布斯编码电路11的输出端与所述修正部分积获取电路12的输入端连接,所述修正部分积获取电路12的输出端与所述华莱士树组电路13的输入端连接,所述华莱士树组电路13的输出端与所述累加电路14的输入端连接。其中,所述布斯编码电路11用于对接收到的数据进行布斯编码处理得到编码信号,所述修正部分积获取电路12用于根据所述编码信号得到符号位扩展后的部分积以及加一位数值,并根据符号位扩展后的所述部分积得到目标编码的部分积,所述华莱士树组电路13用于根据目标编码的所述部分积以及所述加一位数值进行累加处理,所述累加电路14用于对接收到的输入数据进行累加处理。

具体的,上述布斯编码电路11可以接收乘法运算中的乘数,并对乘数进行布斯编码处理,得到编码信号。其中,在布斯编码处理前,布斯编码电路11可以自动对接收到的乘数进行补位处理,该补位处理可以表征为对乘数的最低位数值后补一位数值0。示例性的,若乘法器当前可处理8位*8位的数据乘法运算,乘法器接收到的乘数为y7y6y5y4y3y2y1y0,则在布斯编码处理前,布斯编码电路11可以自动将乘数进行补位处理,将乘数转换为y7y6y5y4y3y2y1y00。可选的,上述编码信号的数量可以等于乘法器当前所处理数据位宽的1/2,该编码信号的数量可以等于符号位扩展后的部分积的数量,且修正部分积获取电路12可以根据每一个编码信号得到对应的符号位扩展后的部分积以及对应的加一位数值。可选的,上述符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽的2倍。可选的,上述目标编码的所有部分积可以为符号位扩展后部分积中的数值。

需要说明的是,乘法器中的布斯编码电路11根据接收到的乘数进行布斯编码处理,得到编码信号,修正部分积获取电路12通过编码信号和接收到的被乘数获得符号位扩展后的部分积和加一位数值,并根据符号位扩展后的部分积得到目标编码的部分积,通过华莱士树组电路13可以对修正部分积获取电路12得到目标编码的部分积中的每一列数值进行累加处理,得到累加结果,并通过累加电路14对华莱士树组电路13得到的累加结果进行累加处理,得到乘法运算的目标结果,其中,在乘法运算过程中,加一位数值可以作为华莱士树组电路13和累加电路14的进位输入信号。可选的,编码信号可以为正信号,也可以为负信号,若编码信号为负信号,则加一位数值为1,否则为0。可选的,上述乘数和被乘数可以是多比特位宽的定点数,可以理解为,本实施例提供的乘法器可以处理固定比特位宽的数据乘法运算,但是,同一次乘法运算时,布斯编码电路11和修正部分积获取电路12接收到的乘数以及被乘数可以是同位宽的数据。

本实施例提供的一种乘法器,通过布斯编码电路对接收到的数据进行布斯编码处理得到编码信号,修正部分积获取电路根据编码信号和接收到的数据获取符号位扩展后的部分积以及加一位数值,并根据符号位扩展后的部分积得到目标编码的部分积,通过华莱士树组电路对目标编码的部分积以及加一位数值进行累加处理得到累加结果,最后通过累加电路对接收到的累加结果进行累加处理,得到运算结果,该过程能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到原始部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

图2为一个实施例提供的一种乘法器的具体结构示意图,如图2所示,所述乘法器包括:布斯编码电路11,修正部分积获取电路12,修正华莱士树组电路13和累加电路14,所述布斯编码电路11的输出端与所述修正部分积获取电路12的输入端连接,所述修正部分积获取电路12的输出端与所述修正华莱士树组电路13的输入端连接,所述修正华莱士树组电路13的输出端与所述累加电路14的输入端连接。其中,所述布斯编码电路11用于对接收到的数据进行布斯编码处理得到编码信号,所述修正部分积获取电路12用于根据编码信号得到符号位扩展后的部分积以及加一位数值,并根据符号位扩展后的所述部分积以及所述加一位数值得到目标编码的所述部分积,所述修正华莱士树组电路13用于对目标编码的所述部分积进行累加处理,所述累加电路14用于对接收到的输入数据进行累加处理。

具体的,上述布斯编码电路11可以接收乘法运算中的乘数,并对乘数进行布斯编码处理,得到编码信号。其中,在布斯编码处理前,布斯编码电路11可以自动对接收到的乘数进行补位处理,该补位处理可以表征为对乘数的最低位数值后补一位数值0。示例性的,若乘法器目前可处理8位*8位的定点数乘法运算,乘数为y7y6y5y4y3y2y1y0,则在布斯编码处理前,布斯编码电路11可以自动将乘数进行补位处理,将乘数转换为y7y6y5y4y3y2y1y00。可选的,上述编码信号的数量可以等于乘法器当前所处理数据位宽的1/2,可以等于原始部分积的数量,还可以等于目标编码的部分积的数量,且修正部分积获取电路12可以根据每一个编码信号得到对应的符号位扩展后的部分积以及对应的加一位数值,并根据符号位扩展后的所有部分积和所有加一位数值得到目标编码的部分积。可选的,上述符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽的2倍。可选的,修正华莱士树组电路13可以对编码电路11得到的目标编码的部分积中的每一列数值进行累加处理,得到累加结果,并通过累加电路14对修正华莱士树组电路13得到的累加结果进行累加处理,得到乘法运算的目标结果。可选的,上述目标编码的所有部分积可以包括符号位扩展后部分积中的数值和加一位数值。

需要说明的是,乘法器通过修正部分积获取电路12可以接收乘法运算中的被乘数,并根据布斯编码电路11得到的编码信号和接收到的被乘数获取符号位扩展后的部分积,并根据布斯编码电路11得到的编码信号获取加一位数值。

本实施例提供的一种乘法器,通过布斯编码电路对接收到的数据进行布斯编码处理得到编码信号,修正部分积获取电路根据编码信号和接收到的数据获取符号位扩展后的部分积以及加一位数值,并根据符号位扩展后的部分积以及加一位数值得到目标编码的部分积,通过修正华莱士树组电路对目标编码的部分积进行累加处理得到累加结果,最后通过累加电路对接收到的累加结果进行累加处理,得到运算结果,该过程能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

在其中一个实施例中,上述乘法器包括所述布斯编码电路11,该布斯编码电路11包括:数据输入端口111和编码信号输出端口112,所述数据输入端口111用于接收进行布斯编码处理的数据,所述编码信号输出端口112用于输出对接收到的所述数据进行布斯编码处理后得到的编码信号。

具体的,若布斯编码电路11通过数据输入端口111接收到一个数据,则布斯编码电路11可以自动对该数据进行补位处理,得到一个比原数据的位宽多一位数值的数据,同时,布斯编码电路11可以对补位后的数据进行布斯编码处理,得到多个编码信号,将多个编码信号通过编码信号输出端口112输出。可选的,布斯编码电路11可以通过数据输入端口111接收乘法运算中的乘数,且布斯编码电路11可以对乘数进行布斯编码处理。可选的,每一次布斯编码处理时,可以将补位后的数据划分成多组待编码数据,布斯编码电路11可以同时对划分后的多组待编码数据进行布斯编码处理。可选的,划分多组待编码数据的原则可以表征为将补位后的数据中相邻每3位数值作为一组待编码数据,每一组待编码数据中的最高位数值可以作为相邻下一组待编码数据中的最低位数值。可选的,布斯编码电路11实现布斯编码处理的编码规则可以参见表1,其中,表1中的y2i+1,y2i和y2i-1可以表示每一组待编码数据对应的数值,x可以表示编码电路11接收到的被乘数,对每一组对应待编码数据进行布斯编码处理后得到对应的编码信号ppi(i=0,1,2,...,n)。可选的,根据表1所示,布斯编码处理后得到的编码信号可以包括五类,每类编码信号分别定义为-2x,2x,-x,x和0。示例性的,若布斯编码电路11接收到的被乘数为x7x6x5x4x3x2x1x0,则x可以表示为x7x6x5x4x3x2x1x0。

表1

示例性的,若布斯编码电路11接收到的乘数为8位的数据y7y6y5y4y3y2y1y0,则补位后的数据可以为y7y6y5y4y3y2y1y00,当i=0时,y2i+1=y1,y2i=y0,y2i-1=y-1,则y-1可以表示y0后的补位数值0(即乘数可以表示为y7y6y5y4y3y2y1y0y-1),布斯编码过程中,可以对y-1y0y1,y1y2y3,y3y4y5和y5y6y7四组待编码数据分别进行布斯编码处理,得到4个编码信号,其中,每一组待编码数据中的最高位数值可以作为相邻下一组待编码数据中的最低位数值。

本实施例提供的一种乘法器,布斯编码电路可以对接收到的数据进行布斯编码得到编码信号,然后修正部分积获取电路可以根据每一个编码信号和接收到的数据获取符号位扩展后的部分积以及加一位数值,并通过符号位扩展后的部分积以及加一位数值得到目标编码的部分积,再通过华莱士树组电路对目标编码的部分积进行累加处理得到累加结果,最后通过累加电路对接收到的累加结果进行累加处理,得到运算结果,该过程能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

作为其中一个实施例,修正部分积获取电路12包括:编码信号输入端口121,数据输入端口122和部分积输出端口123,所述编码信号输入端口121用于接收编码信号,数据输入端口122用于接收数据,部分积输出端口123用于输出目标编码的所述部分积。

具体的,继续参见上一示例,根据表1可知,修正部分积获取电路12可以通过编码信号输入端口121接收布斯编码电路11输出的五类不同的编码信号,每类编码信号分别定义为-2x,2x,-x,x和0,并且修正部分积获取电路12可以根据接收到的不同编码信号以及接收到的数据获取原始部分积,对原始部分积进行符号位扩展处理得到符号位扩展后的部分积,并根据接收到的不同编码信号获取对应的加一位数值,最后根据符号位扩展后的部分积得到目标编码的部分积。可选的,数据输入端口122可以接收乘法运算中的数据,该数据可以为乘法运算中的被乘数。可选的,原始部分积与符号位扩展后的部分积中每一位数值均为二进制数据0或1,其中0可以表示低电平信号,1可以表示高电平信号。

可选的,目标编码的所有部分积的分布规律中,每一个目标编码的部分积可以等于符号位扩展后的部分积,还可以等于符号位扩展后的部分积中的部分位数值,其中,第一个目标编码的部分积可以等于第一个对应的符号位扩展后的部分积。可选的,每一个目标编码的部分积中的最低位数值可以与上一个目标编码的部分积中的最低位数值的低两位处数值位于同一列,相当于每一个符号位扩展后的部分积中的每一位数值,在上一个符号位扩展后的部分积中的每一位数值所处对应列的基础上,左移两列,并且每一个目标编码的部分积的最高位数值,与第一个目标编码的部分积中的最高位数值位于同一列,相当于每一个符号位扩展后的部分积,超出第一个符号位扩展后的部分积中最高位数值对应列的更高列数值可以不进行累加运算。可选的,目标编码的所有部分积的列数可以等于乘法器当前所处理数据位宽的2倍。

需要说明的是,修正部分积获取电路12可以根据编码信号直接得到原始部分积,并对原始部分积进行符号位扩展处理得到符号位扩展后的部分积。可选的,原始部分积的位宽可以等于n+1,符号位扩展后的部分积的位宽可以等于2n,其中,n表示乘法器当前所处理数据的位宽。可选的,符号位扩展后的部分积中,低n+1位数值可以等于原始部分积的n+1位数值,将高n-1位数值扩展成原始部分积中的符号位数值,该原始部分积中的符号位数值可以为原始部分积中的最高位数值。也可以理解为,符号位扩展后的部分积中,高n位数值可以相同,低n+1位数值可以等于原始部分积的n+1位数值。

示例性的,若乘法器当前处理8位*8位的定点数乘法运算,通过修正部分积获取电路12得到的一个原始部分积为p8p7p6p5p4p3p2p1p0,进行符号位扩展处理后得到的符号位扩展后的部分积可以表示为p8p8p8p8p8p8p8p8p7p6p5p4p3p2p1p0。

另外,若修正部分积获取电路12可以接收到五类编码信号-2x,2x,-x,x和0,当编码信号为-2x时,则对应的加一位数值可以为1,当编码信号为2x时,则对应的加一位数值可以为0,当编码信号为-x时,则对应的加一位数值可以为1,当编码信号为x时,则对应的加一位数值可以为0,当编码信号为±0时,则对应的加一位数值可以为0。

示例性的,继续参见上一示例,乘法器进行8位*8位的数据乘法运算,得到目标编码的所有部分积的分布规律如图3所示,图中“●”表示符号位扩展后的部分积中的符号位数值,“○”表示符号位扩展后的部分积中,除去符号位数值外的其它位数值。

本实施例提供的一种乘法器,通过修正部分积获取电路可以根据每一个编码信号和接收到的数据获取符号位扩展后的部分积以及加一位数值,根据符号位扩展后的部分积得到目标编码的部分积,通过华莱士树组电路以及加一位数值对目标编码的部分积进行累加处理得到累加结果,最后通过累加电路对接收到的累加结果进行累加处理,得到运算结果,该过程能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到原始部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

在其中一个实施例中,上述乘法器包括所述华莱士树组电路13,该华莱士树组电路13包括:加一位数值输入端口131,部分积输入端口132,和位信号输出端口133和进位信号输出端口134,所述加一位数值输入端口131用于接收修正部分积获取电路12获取的所述加一位数值,所述部分积输入端口132用于接收修正部分积获取电路12得到的符号位扩展后的所述部分积,所述和位信号输出端口133用于输出华莱士树组电路13获取的和位信号,所述进位信号输出端口134用于输出华莱士树组电路13获取的进位信号。

可选的,如图4所示,乘法器包括所述华莱士树组电路13,该华莱士树组电路13包括:华莱士树子电路1311~131n,多个所述华莱士树子电路1311~131n用于对符号位扩展后的所述部分积的每一列进行累加处理。

具体的,华莱士树子电路1311~131n的电路结构可以由全加器和/或半加器组合实现,另外,还可以理解为华莱士树子电路1311~131n是一种能够对多位输入信号进行处理,将多位输入信号相加得到两位输出信号的电路。可选的,华莱士树组电路13包含的华莱士树子电路的数量n可以等于乘法器当前所处理数据位宽的2倍,并且n个华莱士树子电路对目标编码的部分积进行并行处理,但连接方式可以是串行连接。可选的,华莱士树组电路13中每一个华莱士树子电路可以对目标编码的所有部分积的每一列进行加法处理,每一个华莱士树子电路可以输出两个信号,即进位信号carryi与一个和位信号sumi,其中,i可以表示每一个华莱士树子电路对应的编号,第一个华莱士树子电路的编号为0。可选的,每一个华莱士树子电路接收到的部分积输入信号的数量可以等于符号位扩展后的部分积的数量,还可以等于符号位扩展后的部分积加1,并且上述输入信号可以为目标编码的所有部分积中的一列数值和0,其中,每一个华莱士树子电路接收到的进位输入信号的端口与部分积输入信号的端口不同,并且每一个华莱士树子电路的部分积输入信号端口的数量是固定的,若目标编码的所有部分积中,其中一列数值数量小于部分积输入信号端口的数量,则可以将未输入列数值的部分积输入信号端口输入0。另外,上述加一位数值输入端口131和部分积输入端口132,可以为华莱士树组电路13中的第一个华莱士树子电路的输入端口,上述和位信号输出端口133和进位信号输出端口134,可以为华莱士树组电路13中的最后一个华莱士树子电路的输入端口。

需要说明的是,每一个华莱士树子电路的进位输出信号,可以作为下一个华莱士树子电路对应的进位输入信号。可选的,若从第一个编码信号开始对应的编号分别为0,1,…,(n/2)-1,对应得到的加一位数值的编号也可以为0,1,…,(n/2)-1,则华莱士树组电路中的第一个华莱士树子电路,接收到的进位输入信号可以为编码信号对应编号从0到(n/2)-3的这(n/2)-2个编码信号对应的加一位数值。可选的,每一个华莱士树子电路的进位输出位数ncout可以等于floor((ni+ncin)/2)-1,其中,ni表示该华莱士树子电路的数据(即包括输入信号和进位输入信号)输入位数,ncin表示该华莱士树子电路的进位输入位数,floor(·)表示向下取整函数,ncout表示最少数量的进位输出位数。

另外,原目标编码的所有部分积的第一列是第一个符号位扩展后的部分积的最低位数值,其它数值均为0,实际上,华莱士树组电路中的第一个华莱士树子电路,接收到的进位输入信号可以为编码信号对应编号从0到(n/2)-3的这(n/2)-2个编码信号对应的加一位数值,因此,实际目标编码的所有部分积的分布规律可以理解为,实际运算的数值为一个n*2n的方阵,除了每一个符号位扩展后的部分积中的数值外,每一位数值周围空白处的数值均用数值0或1补位。可选的,每一个目标编码的部分积均有对应的编码信号,若编码信号为负数,则实际运算对应的目标编码的部分积的空白处用数值1补位进行运算,若编码信号为正数,则实际运算对应的目标编码的部分积的空白处用数值0补位进行运算。继续上一示例,乘法器进行8位*8位的定点数乘法运算,可以等于4个目标编码的部分积,n可以等于8,则实际目标编码的所有部分积的分布规律可以参见图5所示,图中“●”表示符号位扩展后的部分积中的符号位数值,“○”表示符号位扩展后的部分积中,除去符号位数值外的其它位数值,表示目标编码的所有部分积中空白处的数值,该数值由编码信号确定。可选的,华莱士树组电路13在实际累加运算中,是将目标编码的所有部分积中的第一列数据中的空白出补位数值,用编码信号对应编号从0到(n/2)-3的这(n/2)-2个编码信号对应的加一位数值等效代替。

示例性的,若乘法器当前处理8位*8位的数据乘法运算,修正部分积获取电路12得到的目标编码的所有部分积的分布规律可以继续参见图5,每一个华莱士树子电路可以接收目标编码的所有部分积中对应列的所有数值,华莱士树组电路13中的16个华莱士树子电路的连接电路图如图6所示,图中wallace_i表示华莱士树子电路,i为华莱士树子电路从0开始的编号,并且两两华莱士树子电路之间连接的实线表示高位编号对应的华莱士树子电路有进位输出信号,虚线表示高位编号对应的华莱士树子电路没有进位输出信号。

本实施例提供的一种乘法器,通过华莱士树组电路对目标编码的部分积进行累加处理得到累加结果,并通过累加电路对累加结果进行累加处理,得到运算结果,该过程能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到原始部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

继续参见图4为另一实施例提供的一种乘法器的具体结构示意图,其中,乘法器包括所述累加电路14,该累加电路14包括:加法器141,所述加法器141用于对接收到的两个同位宽数据以及进位输入信号进行加法运算。

具体的,加法器141可以为不同位宽的加法器,该加法器可以为超前进位加法器。可选的,加法器141可以接收华莱士树组电路13输出的两路信号以及进位输入信号,对两路输出信号和进位输入信号进行加法运算,输出乘法运算结果。

本实施例提供的一种乘法器,通过累加电路可以对华莱士树组电路输出的两路信号以及接收到的进位信号进行累加处理,输出乘法运算结果,该过程能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到原始部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

作为其中一个实施例,该加法器141包括:进位信号输入端口1411,和位信号输入端口1412,进位输入端口1413和结果输出端口1414,所述进位信号输入端口1411用于接收进位信号,和位信号输入端口1412用于接收所述和位信号,进位输入端口1413用于接收所述修正部分积获取电路12得到的所述加一位数值,并将所述加一位数值填充至进位输入信号的最低位处,所述结果输出端口1414用于输出对所述进位信号,所述和位信号以及所述加一位数值进行累加运算的结果。

具体的,加法器141可以通过进位信号输入端口1411接收华莱士树组电路13输出的进位信号carry,通过和位信号输入端口1412接收华莱士树组电路13输出的和位信号sum,通过进位输入端口1413可以接收修正部分积获取电路12得到的最后一个编号的编码信号对应的加一位数值,还可以接收修正部分积获取电路12得到的倒数第二个编号的编码信号对应的加一位数值,其中,carry={carry1,carry2,…,carryi},sum={sum1,sum2,…,sumi},i表示华莱士树组电路13中从第一个华莱士树子电路开始对应的编号,i可以等于华莱士树子电路的数量。其中,最后一个编号的编码信号对应的加一位数值可以作为加法器141进位输入信号。

需要说明的是,加法器141对接收到的加一位数值,进位输入信号与和位输入信号进行累加运算前,可以将进位输入信号carry={carry1,carry2,…,carryi}左移一位,得到一个i-1位进位输入信号,即{carry2,carry3,…,carryi},相当于最低位进位输入信号不进行累加运算,原始进位输入信号carry对应的最低位变空,此时,加法器141可以将接收到的倒数第二个编号对应的加一位数值,填充至原始进位输入信号carry对应的最低位处,重新得到一个i位进位输入信号,加法器141可以对重新得到的该i位进位输入信号,接收到的和位信号sum,以及接收到的最后一个编号的编码信号对应的加一位数值进行累加运算,并将累加运算的结果通过结果输出端口1414输出。

示例性的,若乘法器当前处理8位*8位的定点数乘法运算,则加法器141可以为16位超前进位加法器,继续参见图6所示,华莱士树组电路13可以输出16个华莱士树子电路的和位输出信号sum和进位输出信号carry,但是,16位超前进位加法器接收到的和位输出信号可以为华莱士树组电路13输出的完整和位信号sum,接收到的进位输出信号可以为华莱士树组电路13中,除去最后一个华莱士树子电路输出的进位输出信号的所有进位输出信号与0结合后的进位信号carry。

本实施例提供的一种乘法器,通过累加电路可以对华莱士树组电路输出的两路信号以及接收到的进位输入信号进行累加处理,输出乘法运算结果,该过程能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到原始部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

作为其中一个实施例,其中,乘法器包括所述修正部分积获取电路12,该修正部分积获取电路12包括:编码信号输入端口121,数据输入端口122和部分积输出端口123,所述编码信号输入端口121用于接收编码信号,数据输入端口122用于接收数据,部分积输出端口123用于输出目标编码的所述部分积。

具体的,继续参见上一示例,根据表1可知,修正部分积获取电路12可以通过编码信号输入端口121接收布斯编码电路11输出的五类不同的编码信号,每类编码信号分别定义为-2x,2x,-x,x和0,并且修正部分积获取电路12可以根据接收到的不同编码信号以及接收到的数据获取原始部分积,对原始部分积进行符号位扩展处理得到符号位扩展后的部分积,同时,根据接收到的不同编码信号获取对应的加一位数值,最后根据符号位扩展后的部分积和加一位数值得到目标编码的部分积。可选的,数据输入端口122可以接收乘法运算中的数据,该数据可以为乘法运算中的被乘数。可选的,原始部分积与符号位扩展后的部分积中每一位数值均为二进制数据0或1,其中0可以表示低电平信号,1可以表示高电平信号。

另外,乘法器可以通过修正部分积获取电路12,将得到的每一个符号位扩展后的部分积,与对应的加一位数值组合,得到目标编码的部分积。可选的,上述每一个目标编码的部分积可以等于符号位扩展后的部分积,还可以等于符号位扩展后的部分积中的部分数值,与上一个符号位扩展后的部分积对应的加一位数值组合的部分积,并且每一个目标编码的部分积中的加一位数值可以位于对应符号位扩展后的部分积中最低位数值后低两位处。可选的,目标编码的所有部分积的列数可以等于乘法器当前所处理数据位宽的2倍,且目标编码的部分积的数量可以等于符号位扩展后的部分积的数量加1。

需要说明的是,修正部分积获取电路12可以根据编码信号直接得到原始部分积,并对原始部分积进行符号位扩展处理得到符号位扩展后的部分积。可选的,原始部分积的位宽可以等于n+1,符号位扩展后的部分积的位宽可以等于2n,其中,n表示乘法器当前所处理数据的位宽。可选的,符号位扩展后的部分积中,低n+1位数值可以等于原始部分积的n+1位数值,将高n-1位数值扩展成原始部分积中的符号位数值,该原始部分积中的符号位数值可以为原始部分积中的最高位数值。也可以理解为,符号位扩展后的部分积中,高n位数值可以相同,低n+1位数值可以等于原始部分积的n+1位数值。

示例性的,若乘法器当前处理8位*8位的定点数乘法运算,通过修正部分积获取电路12得到的一个原始部分积为p8p7p6p5p4p3p2p1p0,进行符号位扩展处理后得到的符号位扩展后的部分积可以表示为p8p8p8p8p8p8p8p8p7p6p5p4p3p2p1p0。

另外,若修正部分积获取电路12可以接收到五类编码信号-2x,2x,-x,x和0,当编码信号为-2x时,则对应的加一位数值可以为1,当编码信号为2x时,则对应的加一位数值可以为0,当编码信号为-x时,则对应的加一位数值可以为1,当编码信号为x时,则对应的加一位数值可以为0,当编码信号为±0时,则对应的加一位数值可以为0。

可选的,目标编码的所有部分积的分布规律中,第一个目标编码的部分积可以等于第一个符号位扩展后的部分积,从第二个目标编码的部分积开始,每一个目标编码的部分积可以等于每一个符号位扩展后的部分积,与上一个符号位扩展后的部分积对应的加一位数值组合得到的部分积,且加一位数值可以位于所对应符号位扩展后的部分积最低位数值的低两位处,但是,最后一个目标编码的部分积可以等于最后一个符号位扩展后的部分积得到的对应加一位数值,还可以理解为,最后一个加一位数值没有可以组合的符号位扩展后的部分积。同时,目标编码的所有部分积的分布规律中,第一个目标编码的部分积的最低位数值,可以与第二个目标编码的部分积的最低位数值位于同一列,从第三个目标编码的部分积开始,每一个目标编码的部分积的最低位数值,可以与上一个目标编码的部分积的最低位的高两位处对应的数值位于同一列。同时,目标编码的所有部分积的分布规律中,以第一个目标编码的部分积的最高位数值对应列为准,其它的每一个目标编码的所有部分积最高位数值所对应列,与第一个目标编码的部分积的最高位数值对应列为同一列,可以理解为,目标编码的所有部分积中的高位数值均为对应符号位扩展后的部分积中的数值,超出最高位数值对应列的数值均不进行累加运算。

示例性的,继续参见上一示例,乘法器进行8位*8位的数据乘法运算,得到目标编码的所有部分积的分布规律如图8所示,图中表示加一位数值,“●”表示符号位扩展后的部分积中的符号位数值,“○”表示符号位扩展后的部分积中,除去符号位数值外的其它位数值。

本实施例提供的一种乘法器,通过修正部分积获取电路可以根据每一个编码信号和接收到的数据获取符号位扩展后的部分积以及加一位数值,并通过符号位扩展后的部分积以及加一位数值得到目标编码的部分积,再通过修正华莱士树组电路对目标编码的部分积进行累加处理,最后通过累加电路对接收到的输入数据进行再次累加处理,得到运算结果,该过程能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

作为其中一个实施例,该修正华莱士树组电路13包括:部分积输入端口131,进位信号输入端口132,和位信号输出端口133和进位信号输出端口134,所述部分积输入端口131用于接收修正部分积获取电路12得到的目标编码的所述部分积,所述进位信号输入端口132用于接收进位输入信号,所述和位信号输出端口133用于输出华莱士树组电路13获取的和位信号,所述进位信号输出端口134用于输出华莱士树组电路13获取的进位信号。

可选的,所述修正华莱士树组电路13包括:修正华莱士树子电路1311~131n,多个所述修正华莱士树子电路1311~131n用于对目标编码的所述部分积的每一列进行累加处理。

具体的,修正华莱士树组电路13包含的修正华莱士树子电路的数量n可以等于乘法器当前所处理数据位宽的2倍,并且n个修正华莱士树子电路可以对目标编码的部分积进行并行处理,但连接方式可以是串行连接。可选的,修正华莱士树组电路13中每一个修正华莱士树子电路可以对目标编码的所有部分积的每一列进行加法处理,每一个修正华莱士树子电路可以输出两个信号,即进位信号carryi与一个和位信号sumi,其中,i可以表示每一个修正华莱士树子电路对应的编号,第一个修正华莱士树子电路的编号为0,且第一个修正华莱士树子电路接收到的进位信号可以为0。可选的,每一个修正华莱士树子电路接收到部分积输入信号的数量可以等于目标编码的部分积的数量,还可以等于符号位扩展后的部分积的数量加1,并且上述输入信号可以为目标编码的所有部分积中的一列数值和0,其中,每一个修正华莱士树子电路接收到的进位输入信号的端口与部分积输入信号的端口不同,并且每一个修正华莱士树子电路的部分积输入信号端口的数量是固定的,若目标编码的所有部分积中,其中一列数值数量小于部分积输入信号端口的数量,则可以将未输入列数值的部分积输入信号端口输入0。

另外,修正华莱士树组电路13中的每一个修正华莱士树子电路接收到部分积输入信号的数量还可以等于目标编码的部分积的数量减1,但是,其中一个修正华莱士树子电路接收到部分积输入信号的数量可以等于目标编码的部分积的数量,该修正华莱士树子电路对应接收的是最后一个目标编码的部分积对应列的所有数值。其中,最后一个目标编码的部分积可以等于最后一个编码信号对应的加一位数值。

示例性的,若乘法器当前处理8位*8位的数据乘法运算,修正部分积获取电路12得到的目标编码的所有部分积的分布规律可以继续参见图8,得到5个目标编码的部分积,每一个修正华莱士树子电路可以接收目标编码的所有部分积中对应列的所有数值,修正华莱士树组电路13中的16个修正华莱士树子电路的连接电路图如图9所示,图中wallace_i表示修正华莱士树子电路,i为修正华莱士树子电路从0开始的编号,并且两两修正华莱士树子电路之间连接的实线表示高位编号对应的修正华莱士树子电路有进位输出信号,虚线表示高位编号对应的修正华莱士树子电路没有进位输出信号,其中,该修正华莱士树组电路13中的每一个修正华莱士树子电路除去进位输入端口外,均有5个部分积数值输入端口。另外,针对本示例还可以采用另一种华莱士树组电路13进行累加运算,其中16个修正华莱士树子电路的连接电路图如图10所示,其中,该修正华莱士树组电路13中的每一个修正华莱士树子电路除去进位输入端口外,均有4个部分积数值输入端口,但是,仅有一个修正华莱士树子电路除去进位输入端口外,还有5个部分积数值输入端口,该修正华莱士树子电路对应处理的是图7中最后一个目标编码的部分积对应列的数值。

本实施例提供的一种乘法器,通过修正华莱士树组电路对目标编码的部分积进行累加处理得到累加结果,并通过累加电路对累加结果进行累加处理,得到运算结果,该过程能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

在其中一个实施例中,继续如图7所示乘法器的具体结构示意图,其中,乘法器包括所述累加电路14,该累加电路14包括:加法器141,所述加法器141用于对接收到的两个同位宽数据进行加法运算。

具体的,加法器141可以为不同位宽的加法器,并且加法器141可以为超前进位加法器。可选的,加法器141可以接收修正华莱士树组电路13输出的两路信号,对两路输出信号进行加法运算,输出乘法运算结果。

本实施例提供的一种乘法器,通过累加电路可以对修正华莱士树组电路输出的两路信号进行累加处理,输出乘法运算结果,该过程能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

在其中一个实施例中,其中,乘法器包括所述加法器141,该加法器141包括:进位信号输入端口1411,和位信号输入端口1412和结果输出端口1413,所述进位信号输入端口1411用于接收进位信号,所述和位信号输入端口1412用于接收和位信号,所述结果输出端口1413用于输出进位信号与和位信号进行累加处理的结果。

具体的,加法器141可以通过进位信号输入端口1411接收修正华莱士树组电路13输出的进位信号carry,通过和位信号输入端口1412接收修正华莱士树组电路13输出的和位信号sum,并将进位信号carry与和位信号sum进行累加运算的结果,通过结果输出端口1413输出。

需要说明的是,乘法运算时,乘法器可以采用不同位宽的加法器141对修正华莱士树组电路13输出的进位输出信号carry与和位输出信号sum进行加法运算,其中,上述加法器141可处理数据的位宽可以等于乘法器当前处理的数据位宽n的2倍。可选的,修正华莱士树组电路13中的每一个华莱士树子电路可以输出一个进位输出信号carryi,与一个和位输出信号sumi(i=0,…,2n-1,i为每一个畸形华莱士树子电路的对应编号,编号从0开始)。可选的,加法器141接收到的carry={[carry0:carry2n-2],0},也就是说,加法器141接收到的进位输出信号carry的位宽为n,进位输出信号carry中前2n-2位数值对应华莱士树组电路12中前2n-2个华莱士树子电路的进位输出信号,进位输出信号carry中最后一位数值可以用0代替。可选的,加法器141接收到的和位输出信号sum的位宽为2n,和位输出信号sum中的数值可以等于修正华莱士树组电路13中每一个华莱士树子电路的和位输出信号。

示例性的,若乘法器当前处理8位*8位的定点数乘法运算,则加法器141可以为16位超前进位加法器,继续参见图9所示,修正华莱士树组电路13可以输出16个华莱士树子电路的和位输出信号sum和进位输出信号carry,但是,16位超前进位加法器接收到的和位输出信号可以为修正华莱士树组电路13输出的完整和位信号sum,接收到的进位输出信号可以为修正华莱士树组电路13中,除去最后一个修正华莱士树子电路输出的进位输出信号的所有进位输出信号与0结合后的进位信号carry。

本实施例提供的一种乘法器,通过累加电路可以对修正华莱士树组电路输出的两路信号进行累加处理,输出乘法运算结果,该过程能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

图11为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图1和图3所示的乘法器进行处理,本实施例涉及的是数据乘法运算的过程。如图11所示,该方法包括:

s101、接收待处理的数据。

具体的,乘法器可以通过布斯编码电路接收待处理的数据,该数据可以为乘法运算中的乘数和被乘数。可选的,布斯编码电路接收到的待处理的乘数和被乘数的位宽可以为8比特,16比特,32比特,64比特,对此本实施例不做任何限定。其中,待处理乘数的位宽可以等于待处理被乘数的位宽。

s102、将待处理的所述数据进行布斯编码处理,得到编码信号。

具体的,乘法器可以通过布斯编码电路对待处理的乘数进行布斯编码处理,得到编码信号。可选的,布斯编码过程中,输入的乘数中3比特位宽的数据可以得到一位编码后的数据,上述布斯编码过程中的编码规则可以参见表1,根据表1可知,布斯编码电路对乘数进行布斯编码,可以得到五类不同的编码信号,每类编码信号分别定义为-2x,2x,-x,x和0。

s103、根据待处理的所述数据与所述编码信号,得到目标编码的部分积以及加一位数值。

s104、根据所述加一位数值对目标编码的所述部分积进行累加处理,得到运算结果。

具体的,乘法器中的华莱士树组电路可以根据加一位数值对目标编码的部分积中的每一列数值进行累加处理,得到累加结果,并将累加结果输出。其中,加一位数值可以作为华莱士树组电路的进位输入信号。

本实施例提供的一种数据处理方法,接收待处理的数据,将待处理的所述数据进行布斯编码处理,得到编码信号,根据待处理的所述数据与所述编码信号,得到目标编码的部分积以及加一位数值,根据所述加一位数值对目标编码的所述部分积进行累加处理,得到运算结果,该方法能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

图12为另一实施例提供的数据处理方法,上述s103中根据待处理的所述数据与所述编码信号,得到目标编码的部分积以及加一位数值,包括:

s1031、根据待处理的所述数据与所述编码信号,得到符号位扩展后的所述部分积。

具体的,修正部分积获取电路可以根据接收到的待处理被乘数,与布斯编码电路得到的编码信号,得到符号位扩展后的部分积。

s1032、根据所述编码信号得到所述加一位数值。

具体的,修正部分积获取电路可以根据接收到的编码信号通过加一位处理规则得到对应的加一位数值。

示例性的,若修正部分积获取电路可以接收到五类编码信号,分别定义为-2x,2x,-x,x和0,接收到的被乘数为x,修正部分积获取电路可以根据加一位处理规则确定每一类编码信号对应的加一位数值,当编码信号为-2x时,则对应的加一位数值可以为1,当编码信号为2x时,则对应的加一位数值可以为0,当编码信号为-x时,则对应的加一位数值可以为1,当编码信号为x时,则对应的加一位数值可以为0,当编码信号为±0时,则对应的加一位数值可以为0。

s1033、根据符号位扩展后的所述部分积得到目标编码的所述部分积。

具体的,每一个符号位扩展后的部分积可以对应一个编号,编号从1开始。可选的,乘法运算的数据可以包括高位数据和低位数据,高位数据可以为乘法器接收到的n位数据中的高n/2位数据,低位数据可以为乘法器接收到的n位数据中的低n/2位数据。可选的,低位数据得到的符号位扩展后的部分积对应的编号可以从1开始。可选的,第一个目标编码的部分积可以等于第一个对应的符号位扩展后的部分积,从第二个目标编码的部分积开始,每一个目标编码的部分积可以为对应符号位扩展后的部分积左移(2n-i+1)位数值,相当于对应符号位扩展后的部分积中的高(2n-i+1)位数值不进行累加运算,其中,i表示每一个符号位扩展后的部分积的编号。

本实施例提供的一种数据处理方法,根据待处理的所述数据与所述编码信号,得到符号位扩展后的部分积以及加一位数值,根据符号位扩展后的所述部分积得到目标编码的所述部分积,并根据所述加一位数值对目标编码的所述部分积进行累加处理,得到运算结果,该方法能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到原始部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

在其中一个实施例中,如图13所示,上述s1031中根据待处理的所述数据与所述编码信号,得到符号位扩展后的所述部分积,包括:

s1031a、根据待处理的所述数据与所述编码信号,得到原始部分积。

具体的,上述原始部分积的数量可以等于编码信号的数量。示例性的,若修正部分积获取电路接收到一个8位的被乘数x7x6x5x4x3x2x1x0(即x),则修正部分积获取电路可以根据被乘数x7x6x5x4x3x2x1x0(即x)与五类编码信号-2x,2x,-x,x和0直接得到对应的原始部分积,当编码信号为-2x时,则原始部分积可以为对x进行左右一位后取反再加1,当编码信号为2x时,则原始部分积可以为对x进行左移一位,当编码信号为-x时,则原始部分积可以为对x按位取反再加1,当编码信号为x时,则原始部分积可以为x与x最高位的更高一位数值结合的数据,其中,x最高位的更高一位数值可以等于x的符号位数值,当编码信号为±0时,则原始部分积可以为0,也就是9位部分积中的每一位数值均等于0。

s1031b、对所述原始部分积进行符号位扩展处理,得到符号位扩展后的所述部分积。

具体的,符号位扩展后的部分积的位宽可以等于乘法器当前所处理数据位宽n的2倍,而原始部分积的位宽可以等于n+1,符号位扩展位的位数可以等于n-1。可选的,符号位扩展处理可以理解为将符号位扩展位的数值均用原始部分积中符号位的数值填充,符号位的数值可以为原始部分积中最高位数值,得到一个2n比特位宽的符号位扩展后的部分积。可选的,在符号位扩展后的所有部分积的分布规律中,符号位扩展后的所有部分积中的最高位数值可以位于同一列,最低位数值也可以位于同一列,其它对应位数值也可以对应同一列。

示例性的,若乘法器当前处理8位*8位的定点数乘法运算,通过修正部分积获取电路得到的一个原始部分积为p8p7p6p5p4p3p2p1p0,进行符号位扩展后的部分积可以表示为p8p8p8p8p8p8p8p8p7p6p5p4p3p2p1p0。

本实施例提供的一种数据处理方法,根据待处理的所述数据与所述编码信号,得到原始部分积,对所述原始部分积进行符号位扩展处理,得到符号位扩展后的所述部分积,并根据加一位数值对符号位扩展后的所述部分积进行累加处理,得到运算结果,该方法能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到原始部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

图14为另一实施例提供的数据处理方法,上述s104中根据所述加一位数值对目标编码的所述部分积进行累加处理,得到运算结果,包括:

s1041、根据所述加一位数值对目标编码的所述部分积进行累加处理,得到两路输出信号。

具体的,乘法器通过华莱士树组电路中的华莱士树子电路,可以对目标编码的所有部分积中的每一列数值进行累加处理,得到两路输出信号,进位输出信号carry={carry0,carry1,…,carryi}与和位输出信号sum={sum0,sum1,…,sumi},其中,i表示华莱士树子电路从0开始的编号。可选的,每一个华莱士树子电路接收到的输入信号的数量可以等于符号位扩展后的部分积的数量,每一个华莱士树子电路接收到的进位输入信号的数量,可以等于上一个华莱士树子电路输出的进位输出信号的数量。可选的,若布斯编码电路得到的编码信号的数量为n/2,所有编码信号对应的编号可以为1,...,n/2,则第一个华莱士树子电路接收到的进位输入信号可以为编号从1至(n/2)-2对应的编码信号得到的(n/2)-2个加一位数值。另外,每一个华莱士树子电路可以输出两路信号,进位输出信号carryi与和位输出信号sumi。可选的,每一个华莱士树子电路输入信号的端口数量可以等于对应列数值的数量。

需要说明的是,若华莱士树组电路中的华莱士树子电路从0开始的编号为0,1,…,i-1,华莱士树组电路接收到的对应原始部分积的编号也可以为0,1,…,i-1,则华莱士树组电路中的第一个华莱士树子电路,接收到的进位输入信号可以为编号为0,1,…,i-3的原始部分积对应的i-2个加一位数值。

s1042、根据所述加一位数值对所述两路输出信号进行累加处理,得到运算结果。

具体的,上述累加电路的进位输入信号可以为最后一个编号的编码信号对应的加一位数值。可选的,乘法器通过累加电路可以对华莱士树组电路输出的进位输出信号carry进行移位处理,得到移位后的进位输出信号carry’,再对移位后的进位输出信号carry’,华莱士树组电路输出的和位输出信号sum以及累加电路接收到的进位输入信号进行累加处理,并将运算结果输出。可选的,上述移位处理可以为左移一位处理,华莱士树组电路将输出的进位输出信号carry进行左移一位处理后,原始进位输入信号carry对应的最低位变空,此时,累加电路可以将接收到的倒数第二个编号对应的编码信号对应的加一位数值,填充至原始进位输入信号carry对应的最低位处,得到移位后的进位输出信号carry’。

本实施例提供的一种数据处理方法,根据所述加一位数值对目标编码的所述部分积进行累加处理,得到两路输出信号,根据所述加一位数值对所述两路输出信号进行累加处理,得到运算结果,该方法能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到原始部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

图15为一个实施例提供的数据处理方法的流程示意图,该方法可以通过图2和图7所示的乘法器进行处理,本实施例涉及的是数据乘法运算的过程。如图15所示,该方法包括:

s201、接收待处理的数据。

具体的,乘法器可以通过布斯编码电路接收待处理的数据,该数据可以为乘法运算中的乘数和被乘数。可选的,布斯编码电路接收到的待处理的乘数和被乘数的位宽可以为8比特,16比特,32比特,64比特,对此本实施例不做任何限定。其中,待处理乘数的位宽可以等于待处理被乘数的位宽。

s202、将待处理的所述数据进行布斯编码处理,得到编码信号。

具体的,乘法器可以通过布斯编码电路对待处理的乘数进行布斯编码处理,得到编码信号。可选的,布斯编码过程中,输入的乘数中3比特位宽的数据可以得到一位编码后的数据,上述布斯编码过程中的编码规则可以参见表1,根据表1可知,布斯编码电路对乘数进行布斯编码,可以得到五类不同的编码信号,每类编码信号分别定义为-2x,2x,-x,x和0。

s203、根据待处理的所述数据与所述编码信号,得到目标编码的部分积。

具体的,乘法器中的修正部分积获取电路可以根据接收到的待处理数据,以及布斯编码电路获得的编码信号,得到目标编码的部分积。

s204、对目标编码的所述部分积进行累加处理,得到运算结果。

本实施例提供的一种数据处理方法,接收待处理的数据,将待处理的所述数据进行布斯编码处理,得到编码信号,根据待处理的所述数据与所述编码信号,得到目标编码的部分积,对目标编码的所述部分积进行累加处理,得到运算结果,该方法能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

图16为另一实施例提供的数据处理方法,上述s202中根据待处理的所述数据与所述编码信号,得到目标编码的部分积,包括:

s2021、根据待处理的所述数据与所述编码信号,得到符号位扩展后的部分积。

具体的,修正部分积获取电路可以根据接收到的待处理被乘数,与布斯编码电路得到的编码信号,得到符号位扩展后的部分积。

s2022、根据所述编码信号得到加一位数值。

具体的,修正部分积获取电路可以根据接收到的编码信号通过加一位处理规则得到对应的加一位数值。

s2023、通过符号位扩展后的所述部分积与所述加一位数值,获得目标编码的所述部分积。

具体的,每一个符号位扩展后的部分积有对应的编码信号,而每一个编码信号又有对应的加一位数值,相当于每一个符号位扩展后的部分积都有对应的加一位数值。可选的,目标编码的所有部分积可以通过符号位扩展后的部分积中的数值与加一位数值组合得到。可选的,在目标编码的所有部分积的分布规律中,第一个符号位扩展后的部分积没有与对应的加一位数值组合,从第二个符号位扩展后的部分积开始,每一个符号位扩展后的部分积均可以与上一个符号位扩展后的部分积对应的加一位数值组合,得到目标编码的部分积,但是,最后一个目标编码的部分积可以为最后一个编号的编码信号对应的加一位数值,没有对应组合的符号位扩展后的部分积。可选的,目标编码的部分积的数量可以等于符号位扩展后的部分积的数量加1。

需要说明的是,目标编码的所有部分积的分布规律中,第一个目标编码的部分积可以等于第一个符号位扩展后的部分积,从第二个目标编码的部分积开始,每一个目标编码的部分积可以等于每一个符号位扩展后的部分积,与上一个符号位扩展后的部分积对应的加一位数值组合得到的部分积,且加一位数值可以位于所对应符号位扩展后的部分积最低位数值的低两位处,但是,最后一个目标编码的部分积可以等于最后一个符号位扩展后的部分积得到的对应加一位数值,还可以理解为,最后一个加一位数值没有可以组合的符号位扩展后的部分积。同时,目标编码的所有部分积的分布规律中,第一个目标编码的部分积的最低位数值,可以与第二个目标编码的部分积的最低位数值位于同一列,从第三个目标编码的部分积开始,每一个目标编码的部分积的最低位数值,可以与上一个目标编码的部分积的最低位的高两位处对应的数值位于同一列。同时,目标编码的所有部分积的分布规律中,以第一个目标编码的部分积的最高位数值对应列为准,其它的每一个目标编码的所有部分积最高位数值所对应列,与第一个目标编码的部分积的最高位数值对应列为同一列,可以理解为,目标编码的所有部分积中的高位数值均为对应符号位扩展后的部分积中的数值,超出最高位数值对应列的数值均不进行累加运算。

本实施例提供的一种数据处理方法,根据待处理的所述数据与所述编码信号,得到符号位扩展后的部分积,根据所述编码信号得到加一位数值,通过符号位扩展后的所述部分积与所述加一位数值,获得目标编码的所述部分积,,进而对目标编码的所述部分积进行累加处理,得到运算结果,该方法能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

另一实施例提供的乘法运算方法,上述s2021中根据待处理的所述数据与所述编码信号,得到符号位扩展后的部分积,包括:

s2021a、根据待处理的所述数据与所述编码信号,得到原始部分积。

s2021b、对所述原始部分积进行符号位扩展处理,得到符号位扩展后的所述部分积。

本实施例提供的一种数据处理方法,根据待处理的数据与编码信号,得到原始部分积,对原始部分积进行符号位扩展处理,得到符号位扩展后的部分积,进而通过符号位扩展后的部分积以及得到加一位数值得到目标编码的部分积,并对目标编码的部分积进行累加处理,得到运算结果,该方法能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

图17为另一实施例提供的数据处理方法,上述s204中对目标编码的所述部分积进行累加处理,得到运算结果,包括:

s2041、对目标编码的所述部分积进行累加处理,得到两路输出信号。

具体的,乘法器通过修正华莱士树组电路中的华莱士树子电路对目标编码的部分积的每一列数值进行累加处理,得到两路输出信号,进位输出信号carry={carry0,carry1,…,carryi}与和位输出信号sum={sum0,sum1,…,sumi},其中,i表示修正华莱士树子电路从0开始的编号。可选的,每一个修正华莱士树子电路接收到的输入信号的数量可以等于符号位扩展后的部分积的数量,还可以等于目标编码的部分积的数量,若目标编码的所有部分积中其中一列数值的数量小于目标编码的部分积的数量时,则未接收目标编码的部分积中数值的输入信号端口可以接收低电平信号0。可选的,每一个修正华莱士树子电路接收到的进位输入信号的数量,可以等于上一个华莱士树子电路输出的进位输出信号的数量,但是,第一个修正华莱士树子电路接收到的进位输入信号可以等于0。可选的,每一个修正华莱士树子电路可以输出两路信号,进位输出信号carryi与和位输出信号sumi。可选的,每一个修正华莱士树子电路输入信号的端口数量可以等于目标编码的部分积的数量。

s2042、对所述两路输出信号进行累加处理,得到运算结果。

具体的,乘法器可以通过累加电路对修正华莱士树组电路中每一个修正华莱士树子电路获得的进位输出信号carryi与和位输出信号sumi进行累加处理,输出乘法运算结果。可选的,上述累加处理可以理解为通过累加电路将修正华莱士树组电路的所有进位输出信号carryi,与用0替代最后一个和位信号sum2n-1后的所有和位信号的加法运算。

本实施例提供的一种数据处理方法,对目标编码的所述部分积进行累加处理,得到两路输出信号,对所述两路输出信号进行累加处理,得到运算结果,该方法能够在能够完全保证乘法器运算准确性的前提下,消除因负的编码信号得到目标编码的部分积时,需要进行取反加一操作可能会产生进位向前传递,造成多位数据信号的翻转,有效降低了乘法器的功耗。

本申请实施例还提供了一个机器学习运算装置,其包括一个或多个在本申请中提到的乘法器,用于从其它处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过i/o接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上乘法器时,乘法器间可以通过特定的结构进行链接并传输数据,譬如,通过pcie总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。

该机器学习运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。

本申请实施例还提供了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其它处理装置。机器学习运算装置与其它处理装置进行交互,共同完成用户指定的操作。图18为组合处理装置的示意图。

其它处理装置,包括中央处理器cpu、图形处理器gpu、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其它处理装置所包括的处理器数量不做限制。其它处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其它处理装置也可以和机器学习运算装置协作共同完成运算任务。

通用互联接口,用于在所述机器学习运算装置与其它处理装置间传输数据和控制指令。该机器学习运算装置从其它处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其它处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其它处理装置。

可选的,该结构如图19所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其它处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其它处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其它处理装置的内部存储中无法全部保存的数据。

该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的soc片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。

在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。

在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。

在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。如图20所示,图20提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其它的配套部件,该配套部件包括但不限于:存储器件390、接收装置391和控制器件392;

所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是ddrsdram(英文:doubledataratesdram,双倍速率同步动态随机存储器)。

ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组所述存储单元中采用ddr4-3200颗粒时,数据传输的理论带宽可达到25600mb/s。

在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。

所述接收装置与所述芯片封装结构内的芯片电连接。所述接收装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接收装置可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述芯片,实现数据转移。优选的,当采用pcie3.0x16接口传输时,理论带宽可达到16000mb/s。在另一个实施例中,所述接收装置还可以是其它的接口,本申请并不限制上述其它的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接收装置传送回外部设备(例如服务器)。

所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过spi接口电连接。所述控制器件可以包括单片机(microcontrollerunit,mcu)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。

在一些实施例里,申请了一种电子设备,其包括了上述板卡。

电子设备可以为数据处理器、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的电路组合,但是本领域技术人员应该知悉,本申请并不受所描述的电路组合方式的限制,因为依据本申请,某些电路可以采用其它方式或者结构实现。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的器件和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1