CN116820391A - 一种乘法器的运算方法、运算装置、电子设备和存储介质 - Google Patents

一种乘法器的运算方法、运算装置、电子设备和存储介质 Download PDF

Info

Publication number
CN116820391A
CN116820391A CN202310778309.2A CN202310778309A CN116820391A CN 116820391 A CN116820391 A CN 116820391A CN 202310778309 A CN202310778309 A CN 202310778309A CN 116820391 A CN116820391 A CN 116820391A
Authority
CN
China
Prior art keywords
input data
low
data set
multiplier
order input
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.)
Pending
Application number
CN202310778309.2A
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.)
Beijing Horizon Information Technology Co Ltd
Original Assignee
Beijing Horizon 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 Beijing Horizon Information Technology Co Ltd filed Critical Beijing Horizon Information Technology Co Ltd
Publication of CN116820391A publication Critical patent/CN116820391A/zh
Pending legal-status Critical Current

Links

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
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations

Landscapes

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

Abstract

公开了一种乘法器的运算方法、运算装置、电子设备和存储介质,涉及数据处理技术领域。该方法包括:确定乘法器的多个输入数据组和乘法器的编码方式;确定多个输入数据组中的至少一个低位输入数据组;基于至少一个低位输入数据组、编码方式,确定至少一个低位输入数据组对应的进位补偿项;基于至少一个低位输入数据组对应的进位补偿项和多个输入数据组,确定目标部分积阵列;基于目标部分积阵列,确定各输入数据组的乘积运算结果。本公开可以通过一个乘法器实现多种精度的乘法运算,减少硬件资源消耗和硬件面积。

Description

一种乘法器的运算方法、运算装置、电子设备和存储介质
本申请要求于2023年4月27日提交的、申请号为202310468468.2的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本公开涉及数据处理技术领域,具体涉及一种乘法器的运算方法、运算装置、电子设备和存储介质。
背景技术
在微处理器芯片中,乘法器是进行数字信号处理的核心。乘法器的速度和面积优化对于整个微处理器的性能来说是非常重要的。除此之外,乘法器计算精度的多样性决定了微处理器能够处理的算法范围,因此,乘法器计算精度的多样性对微处理器的性能来说也同样重要。
发明内容
通常,一个乘法器用于计算一种精度的乘法运算。相关方案提出组合多个乘法器来实现这一种精度以外的其他精度的乘法运算,以实现多种精度的乘法运算。然而,组合多个乘法器存在硬件资源消耗大和面积开销大的问题。
为了解决上述技术问题,提出了本公开。本公开的实施例提供了一种乘法器的运算方法、运算装置、电子设备和存储介质,可以实现多种精度的乘法运算,并减少硬件资源消耗和硬件面积。
根据本公开的第一个方面,提供了一种乘法器的运算方法,该方法包括:首先,确定乘法器的多个输入数据组和乘法器的编码方式;还确定多个输入数据组中的至少一个低位输入数据组;然后,基于至少一个低位输入数据组、编码方式,确定至少一个低位输入数据组对应的进位补偿项;再基于至少一个低位输入数据组对应的进位补偿项和多个输入数据组,确定目标部分积阵列;最后,基于目标部分积阵列,确定各输入数据组的乘积运算结果。
根据本公开的第二个方面,提供了一种运算装置,包括:补偿确定模块、部分积阵列确定模块和部分积处理模块。补偿确定模块,用于:确定乘法器的多个输入数据组和乘法器的编码方式;确定多个输入数据组中的至少一个低位输入数据组;基于至少一个低位输入数据组、编码方式,确定至少一个低位输入数据组对应的进位补偿项。
部分积阵列确定模块,用于基于补偿确定模块确定的至少一个低位输入数据组对应的进位补偿项、以及多个输入数据组,确定目标部分积阵列。部分积处理模块,用于基于部分积阵列确定模块确定的目标部分积阵列,确定各输入数据组的乘积运算结果。
根据本公开的第三个方面,提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序用于执行上述第一个方面提供的乘法器的运算方法。
根据本公开的第四个方面,提供了一种电子设备,该电子设备包括:处理器;用于存储处理器可执行指令的存储器;处理器,用于从存储器中读取可执行指令,并执行指令以实现上述第一个方面提供的乘法器的运算方法。
根据本公开的第五个方面,提供了一种计算机程序产品,当计算机程序产品中的指令被处理器执行时,执行上述第一个方面提供的乘法器的运算方法。
基于本公开提供的乘法器的运算方法、装置、电子设备及存储介质,将至少一个低位输入数据组对应的进位补偿项增加在目标部分积阵列(Partial Product Array,PPA)中,则可知目标PPA除了包括每个低位输入数据组对应的子PPA,还包括每个低位输入数据组对应的进位补偿项。进而,对目标PPA进行累加的过程中,目标PPA中的每个低位输入数据组对应的进位补偿项可以抵消掉该低位输入数据组对应的子PPA累加时的进位,每个低位输入数据组对应的子PPA累加时的进位就不会影响每个低位输入数据组对应的高位输入数据组的乘积运算结果。从而保证了多个输入数据组中每个低位输入数据组对应的高位输入数据组的乘积运算结果的准确性。其次,多个输入数据组中的至少一个低位输入数据组的乘积运算结果也是准确的,综上可知,各个输入数据组的乘积运算结果都是准确的,可以实现多精度的乘法运算。而且,本公开提供的乘法器的运算方法不需要组合多个乘法器,通过一个乘法器可以实现多种精度的乘法运算,减少了硬件资源消耗和硬件面积。
附图说明
图1是本公开提供的一种乘法器的运算方法的流程示意图一;
图2是本公开提供的一种一个输入数据组对应的目标PPA的示意图;
图3是本公开提供的一种多个输入数据组对应的目标PPA的示意图;
图4是本公开提供的一种乘法器的运算方法的流程示意图二;
图5是本公开提供的一种乘法器的运算方法的流程示意图三;
图6是本公开提供的一种乘法器的运算方法的流程示意图四;
图7是本公开提供的一种乘法器的运算方法的流程示意图五;
图8是本公开提供的一种电子设备的结构示意图一;
图9是本公开提供的另一种多个输入数据组对应的目标PPA的示意图;
图10是本公开提供的一种对多个输入数据组执行乘法器的运算方法的流程示意图;
图11是本公开提供的另一种对多个输入数据组执行乘法器的运算方法的流程示意图;
图12是本公开提供的一种运算装置的结构示意图一;
图13是本公开提供的一种运算装置的结构示意图二;
图14是本公开提供的一种电子设备的结构示意图二。
具体实施方式
为了解释本公开,下面将参考附图详细地描述本公开的示例实施例,显然,所描述的实施例仅是本公开的一部分实施例,而不是全部实施例,应理解,本公开不受示例性实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。“A和/或B”,包括以下三种组合:仅A,仅B,及A和B的组合。
申请概述
为了实现多精度的乘法运算,相关方案除了使用一个乘法器计算一种低精度的乘法运算,还组合多个乘法器计算高精度的乘法运算。具体地,相关方案提出将高精度的两个数据都拆分为低位数据和高位数据。再用多个支持低精度乘法运算的乘法器分别计算两个低位数据的乘积运算结果、低位数据和高位数据的乘积运算结果、以及两个高位数据的乘积运算结果。然后,对多个乘法器的乘积运算结果按权重进行累加,得到高精度的两个数据的乘积运算结果。通过低精度的乘法器实现了低精度的乘法运算和高精度的乘法运算。
示例性地,以int16的被乘数A和乘数B为例,A=a15 a14…a1a0,乘数B=b15 b14…b1b0。相关方案将被乘数A拆分为两个int8的数据,即AH和AL;将乘数B也拆分为两个int8的数据,即BH和BL。其中,A=AH*28+AL,AH=a15 a14…a9a8,AL=a7 a6…a1a0。B=BH*28+BL,BH=b15b14…b9b8,BL=b7 b6…b1 b0。然后,相关方案可以采用4个支持int8的乘法运算的乘法器分别计算AH和BH的乘积运算结果、AH和BL的乘积运算结果、AL和BH的乘积运算结果、以及AL和BL的乘积运算结果;再对4个乘积运算结果按权重进行累加,得到被乘数A和乘数B的乘积运算结果。被乘数A与乘数B的乘积运算结果如下式(1)所示。
A*B=AH*BH*216+(AH*BL+AL*BH)*28+AL*BL (1)
可以理解的是,相关方案组合4个int8的乘法器实现了int16的乘法运算。
虽然上述相关方案可以实现低精度和高精度等多种精度的乘法运算,但是其需要组合多个低精度的乘法器才能实现高精度的乘法元素。使用多个乘法器存在硬件资源浪费和面积开销较大的问题。
示例性系统
本公开实施例提供的乘法器的运算方法在实时图像处理、数字信号处理等多个场景均有广泛的应用。
本公开实施例提供的乘法器的运算方法可以由电子设备执行,也可以由运算装置执行。该运算装置可以位于电子设备中,属于电子设备中的一部分(例如CPU、微处理器芯片或者乘法器)。
示例性方法
图1是本公开一示例性实施例提供的乘法器的运算方法的流程示意图。本实施例提供的乘法器的运算方法可应用在电子设备上,如图1所示,该运算方法可以包括如下步骤S101-S105。
S101、确定乘法器的多个输入数据组和乘法器的编码方式。
电子设备可以包括一个乘法器,该乘法器用于对两个数据执行乘法运算。电子设备先获取多个输入数据组;然后,可以将该多个输入数据组发送至该乘法器;再通过该乘法器对该多个输入数据组执行该运算方法。其中,多个输入数据组中的每个输入数据组可以包括一个乘数和一个被乘数。该乘数和该被乘数可以是有符号数或者无符号数。
在一些实施例中,电子设备中的乘法器支持的最大数据位宽为N,并且,该乘法器支持多种数据位宽的乘法运算(可以称为多种精度的乘法运算)。该乘法器支持的多种数据位宽均小于N。也就说,该乘法器可以用于计算数据位宽为N的两个数据的乘法运算、以及至少一个其他数据位宽的两个数据的乘法运算。至少一个其他数据位宽均小于N。其中,N为正整数,例如,N等于32、16或者8。
在一些实施例中,电子设备可以获取用户输入的多个输入数据组。或者,电子设备可以生成多个输入数据组。
示例性地,电子设备获取的多个输入数据组可以分为一个乘数(称为第一乘数)和一个被乘数(可以称为第一被乘数)。该第一乘数由多个第二乘数拼接组成。该第一被乘数由多个第二被乘数拼接组成。该多个第二乘数和该多个第二被乘数为一一对应的,并且,一个第二乘数及其对应的一个第二被乘数组成一个输入数据组。其中,第一乘数的数据位宽和第一被乘数的数据位宽均小于或等于N。第二乘数的数据位宽小于或等于第一乘数的数据位宽,第二被乘数的数据位宽小于或等于第一被乘数的数据位宽。
在一些实施例中,电子设备获取多个输入数据组,该多个输入数据组中每个输入数据组包括的第二乘数和第二被乘数的数据位宽可以相同或不同。如果任意一个输入数据组中的第二乘数和第二被乘数的数据位宽不同,则电子设备可以对该输入数据组进行预处理,得到预处理后的输入数据组;然后,电子设备将该任意一个输入数据组更新为该预处理后的输入数据组。其中,该预处理后的输入数据组中的第二乘数和第二被乘数的数据位宽相同,并且,预处理前后的输入数据组的数值大小相同(包括预处理前后的第二乘数的数值大小相同,预处理前后的第二被乘数的数值大小相同)。
进一步地,电子设备可以得到更新后的多个输入数据组,并对更新后的多个输入数据组继续执行S102。更新后的多个输入数据组中的每个输入数据组包括的第二乘数和第二被乘数的数据位宽相同。
例如,一个输入数据组包括一个数据位宽为8比特位(bit)的乘数和一个数据位宽为16bit的被乘数,电子设备可以对该输入数据组中的该乘数进行预处理,得到数据位宽为16bit的乘数。该预处理包括对该乘数的最高位之上增加8bit的数值,并且,8bit的数值均为0。
需要说明的是,本公开实施例中以包括的第二乘数和第二被乘数的数据位宽相同的输入数据组为例,对本公开实施例提供的乘法器的运算方法进行介绍。
在一些实施例中,多个输入数据组中不同输入数据组的数据位宽可以相同或不同。每个输入数据组的数据位宽可以是指该输入数据组包括的第二乘数的数据位宽,也可以是指该输入数据组包括的第二被乘数的数据位宽。例如,多个输入数据组包括两个8bit的输入数据组。又例如,多个输入数据组包括:一个8bit的输入数据组、以及一个16bit的输入数据组等等。
在一些实施例中,电子设备可以预先保存有乘法器的编码方式。例如,该乘法器的编码方式可以为基4的波兹(Booth)编码或者基8的booth编码。
需要说明的是,乘法器计算一个乘数和一个被乘数的乘积运算结果的工作原理如下:该乘数中的第一位数值与该被乘数包括的所有数值进行相乘,生成第一位数值对应的一组乘积项;该乘数中的第二位数值再与该被乘数包括的所有数值进行相乘,生成第二位数值对应的一组乘积项,以此类推。然后,对该乘数包括的所有数值对应的乘积项(可以称为多组乘积项)进行排列,得到一个部分积阵列(Partial Product Array,PPA)。其中,“对该乘数包括的所有数值对应的乘积项进行排列”的过程可以包括:第二位数值对应的一组乘积项相较于第一位数值对应的一组乘积项向左移动一位,第三位数值对应的一组乘积项相较于第二位数值对应的一组乘积项向左移动一位,以此类推。最后,对该部分积阵列进行累加,得到该乘数和该被乘数的乘积运算结果。
其中,该乘数和该被乘数均可以为二进制数。如果该乘数中的一位数值是1,这一位数值对应的一组乘积项就是被乘数。如果该乘数中的一位数值是0,这一位数值对应的一组乘积项全为0。
还需要说明的是,Booth编码用于对乘数进行转换,以使得转换后的乘数包括的非零值的个数减少,从而减少部分积的数目,缩小PPA的大小。也就是说,电子设备中的乘法器采用Booth编码,可以加速PPA的生成速度。其次,基数不同的Booth编码可以减少的部分积数目也不同,例如,基4的booth编码(即基4-booth编码)可以将PPA包括的部分积的行数减少一半;基8的booth编码(即基8-booth编码)将PPA包括的部分积行数减少约1/3。
示例性地,以一个int16的乘数A16和一个int16的被乘数B16,并且,该乘数A16和该被乘数B16均是有符号的数据为例,电子设备可以采用基4-booth编码生成该乘数A16和该被乘数B16的PPA。如图2所示,图2所示的PPA中的所有黑点表示乘积项,s表示对该乘数A16进行booth编码得到的符号位,e表示对该乘数A16中每一位数值对应的一组乘积项的符号位,表示对位于PPA的第一行上的e取反得到的数值。图2中的所有s的数值都是1或0,位于PPA的不同行上的s的数值可以相同或不同。图2中的所有e的数值都是1或0,位于PPA的不同行上的e的数值可以相同或不同。
可以知道的是,针对int16的乘数A16和被乘数B16,电子设备采用基4-booth编码生成的PPA包括的乘积项的行数为8行。电子设备通过采用4-booth,将PPA包括的乘积项的行数从16行减少到8行。
S102、确定多个输入数据组中的至少一个低位输入数据组。
电子设备可以根据各个输入数据组在多个输入数据组中的位置,从多个输入数据组中确定出至少一个低位输入数据组。其中,至少一个低位输入数据组包括多个输入数据组中除最高位输入数据组以外的输入数据组。最高位输入数据组是指多个输入数据组中位于最高比特位的输入数据组。
在一些实施例中,各个输入数据组在多个输入数据组中的位置可以是指:各个输入数据组在多个输入数据组中的序号,例如,第一位,第二位,第三位等等。每个输入数据组在多个输入数据组中的序号,表示该输入数据组在多个输入数据组中所占的比特位的顺序。每个输入数据组在多个输入数据组中的序号越低,该输入数据组在多个输入数据组中所占的比特位越低。
示例性地,以多个输入数据组包括数据位宽为32bit的第一乘数A32和数据位宽为32bit的第一被乘数B32为例,A32=a31 a30…a1a0,B32=b31 b30…b1b0。第一乘数A32包括多个第二乘数,分别是数据位宽为16bit的第二乘数A16-1、数据位宽为8bit的第二乘数A8-2、以及数据位宽为8bit的第二乘数A8-3。A16-1=a15 a14…a1a0,A8-2=a23 a22…a17a16,A8-3=a31 a30…a25a24。A16-1、A8-2、A8-3在该多个输入数据组中的序号(即A16-1、A8-2、A8-3在第一乘数A32中的序号)分别是第一位、第二位和第三位。
第一被乘数B32包括多个第二被乘数,分别是数据位宽为16bit的第二被乘数B16-1、数据位宽为8bit的第二被乘数B8-2、以及数据位宽为8bit的第二被乘数B8-3。B16-1=b15 b14…b1b0,B8-2=b23 b22…b17b16,B8-3=b31 b30…b25b24。B16-1、B8-2、B8-3在该多个输入数据组中的序号(即B16-1、B8-2、B8-3在第一被乘数B32中的序号)分别是第一位、第二位和第三位。
其中,针对第一乘数A32和第一被乘数B32,可以确定至少一个低位输入数据组包括:由第二乘数A16-1和第二被乘数B16-1组成的一个低位输入数据组、以及由第二乘数A8-2和第二被乘数B8-2组成的另一个低位输入数据组。
在一些实施例中,电子设备可以除了获取多个输入数据组,还可以获取一个输入信号;该输入信号用于指示该多个输入数据组包括的各个输入数据组的数据位宽(可以称为各个输入数据组的数据精度)。该输入信号可以包括多组数值,这多组数值在该输入信号中所占的比特位不同,每组数值在该输入信号中的位置与每组数值对应的一个输入数据组在多个输入数据组中的位置相同(例如,每组数值在该输入信号中的序号与每组数值对应的一个输入数据组在多个输入数据组中的序号相同)。进而,电子设备可以根据该输入信号,确定各个输入数据组在多个输入数据组中的位置。
其中,每组数值可以包括一个数值或多个数值。每组数值还可以用于表征与该组数值对应的一个输入数据组的数据位宽。
示例性地,输入信号dxlp可以为一个数据位宽等于8bit的数据,dxlp=d7d6…d1d0。该输入信号dxlp中的第1个bit和第2个bit上的数值(即d1d0的数值)用于表示多个输入数据组中排在第一位的输入数据组的数据位宽。该输入信号dxlp中的第3个bit和第4个bit上的数值(即d3d2的数值)用于表示该多个输入数据组中排在第二位的输入数据组的数据位宽。该输入信号dxlp中的第5个bit和第6个bit上的数值(即d5d4的数值)用于表示该多个输入数据组中排在第三位的输入数据组的数据位宽。该输入信号dxlp中的第7个bit和第8个bit上的数值(即d7d6的数值)用于表示该多个输入数据组中排在第四位的输入数据组的数据位宽。
其中,该输入信号dxlp中表示一个输入数据组的数据位宽的数值和该数据位宽可以相等或不等。例如,d1d0=01,表示多个输入数据组中排在第一位的输入数据组的数据位宽为8bit。又例如,d7d6=00,表示多个输入数据组中排在第四位的输入数据组的数据位宽为0bit,则可知该多个输入数据组不包括排在第四位的输入数据组。
需要说明的是,上述示例是以该输入信号dxlp中的每两个比特位表示一个输入数据组的数据位宽为例对该输入信号dxlp进行介绍,该输入信号dxlp中也可以用其他个数的多个比特位(例如,3个比特位,4个比特位等)表示一个输入数据组的数据位宽,并且,多个比特位的个数越多,这多个比特位表示的一个输入数据组的数据位宽的种类越多。
S103、基于至少一个低位输入数据组、以及编码方式,确定至少一个低位输入数据组对应的进位补偿项。
需要说明的是,电子设备采用一个乘法器计算多个输入数据组的乘积运算结果的过程中,可以得到多个输入数据组对应的PPA,该PPA可以包括与各个输入数据组对应的子PPA(包括与每个低位输入数据组对应的子PPA),每个输入数据组对应的子PPA是利用该输入数据组相乘得到PPA。由于多个输入数据组中的每个低位输入数据组对应的子PPA累加时存在进位,并且,该进位影响每个低位输入数据组对应的一个高位输入数据组的乘积运算结果。因此,电子设备可以确定多个输入数据组中的至少一个低位输入数据组对应的进位补偿项。每个低位输入数据组对应的进位补偿项用于抵消该低位输入数据组对应的子PPA累加时的进位。
其中,每个低位输入数据组对应的一个高位输入数据组在多个输入数据组中所占的比特位高于该低位输入数据组在多个输入数据组中所占的比特位,并且,该高位输入数据组在多个输入数据组中所占的比特位与该低位输入数据组在多个输入数据组中所占的比特位相邻。例如,针对由上述第二乘数A16-1和上述第二被乘数B16-1组成的一个低位输入数据组,其对应的一个高位输入数据组包括上述第二乘数A8-2和上述第二被乘数B8-2
还需要说明的是,由于每个低位输入数据组对应的进位补偿项用于抵消该低位输入数据组对应的子PPA累加时的进位,而该低位输入数据组对应的子PPA取决于该低位输入数据组包括的第二乘数和第二被乘数、以及用于生成该子PPA的乘法器的编码方式。因此,电子设备可以根据每个低位输入数据组和乘法器的编码方式,确定每个低位输入数据组对应的进位补偿项。
示例性地,以多个低位输入数据组包括一个int16的第一乘数A16和一个int16的第一被乘数B16,该第一乘数A16和该第一被乘数B16均是有符号的数据,该第一乘数A16包括两个第二乘数(即第二乘数A8-1和第二乘数A8-2),以及该第一被乘数B16包括两个第二被乘数(即第二被乘数B8-1和第二被乘数B8-2)为例,A8-1=a7 a6…a1a0,A8-2=a15 a14…a9a8,B8-1=b7b6…b1b0,B8-2=b15 b14…b9b8。A8-1、A8-2在第一乘数A16中的序号分别是第一位和第二位。B8-1、B8-2在第一被乘数B16中的序号分别是第一位和第二位。由第二乘数A8-1和第二被乘数B8-1组成的一个输入数据组(可以称为第一位输入数据组),由第二乘数A8-2和第二被乘数B8-2组成的另一个输入数据组(可以称为第二位输入数据组)。第一位输入数据组为低位输入数据组,第一位输入数据组对应的高位输入数据组是第二位输入数据组。
电子设备可以采用基4-booth编码生成该第一乘数A16和该第一被乘数B16的PPA(可以称为初始PPA)。该初始PPA包括第一位输入数据组对应的子PPA、以及第二位输入数据组对应的子PPA。
参照图3所示,该第一位输入数据组对应的子PPA包括:第一行至第四行的所有黑点表示的乘积项、以及第一行至第四行的所有符号位。第一行至第四行的所有符号位包括:s0、e0和1。其中,s0表示对该第二乘数A8-1进行booth编码得到的符号位,e0表示对该第二乘数A8-1中每一位数值对应的一组乘积项的符号位,/>表示对位于PPA的第一行上的e0取反得到的数值。图3中的所有s0的数值都是1或0,位于PPA的不同行上的s0的数值可以相同或不同。图3中的所有e0的数值都是1或0,位于PPA的不同行上的e0的数值可以相同或不同。
参照图3所示,该第二位输入数据组对应的子PPA包括:第五行至第八行的所有黑点表示的乘积项、以及第五行至第八行的所有符号位。第五行至第八行的所有符号位包括:s1、e1和1。其中,s1表示对该第二乘数A8-2进行booth编码得到的符号位,e1表示对该第二乘数A8-2中每一位数值对应的一组乘积项的符号位,/>表示对位于PPA的第五行上的e1取反得到的数值。图3中的所有s1的数值都是1或0,位于PPA的不同行上的s1的数值可以相同或不同。图3中的所有e1的数值都是1或0,位于PPA的不同行上的e1的数值可以相同或不同。
进而,针对由该第二乘数A8-1和该第二被乘数B8-1组成的低位输入数据组,电子设备可以确定该低位输入数据组对应的进位补偿项。该低位输入数据组对应的进位补偿项用于抵消该低位输入数据组对应的子PPA累加时的进位。
S104、基于至少一个低位输入数据组对应的进位补偿项和多个输入数据组,得到目标部分积阵列。
电子设备可以先利用多个输入数据组生成初始PPA;再利用该初始PPA结合至少一个低位输入数据组对应的进位补偿项,得到目标部分积阵列(即目标PPA)。
例如,电子设备先利用上述第一乘数A16和上述第一被乘数B16生成初始PPA,再在该初始PPA中增加由上述第二乘数A8-1和上述第二被乘数B8-1组成的低位输入数据组对应的进位补偿项,得到图3所示的目标PPA。图3所示的目标PPA中的E为第二乘数A8-1和第二被乘数B8-1组成的低位输入数据组对应的进位补偿项。
可以知道的是,由第二乘数A8-1和第二被乘数B8-1组成的低位输入数据组对应的子PPA累加时的进位的位置位于图3所示的进位补偿项E所在的位置。该进位补偿项E可以抵消掉该低位输入数据组对应的子PPA累加时的进位,该低位输入数据组对应的子PPA累加时的进位就不会影响该低位输入数据组对应的高位输入数据组(即由上述第二乘数A8-2和上述第二被乘数B8-2组成的输入数据组)的乘积运算结果。从而保证了该高位输入数据组的乘积运算结果的准确性。其次,该低位输入数据组的乘积运算结果也是准确的,综上可知,各个输入数据组的乘积运算结果都是准确的,可以实现多精度的乘法运算。
S105、基于目标部分积阵列,确定各输入数据组的乘积运算结果。
电子设备可以对目标PPA进行累加,得到一个累加结果。该累加结果可以由各个输入数据组的乘积运算结果拼接组成,并且,每个输入数据组的乘积运算结果在该累加结果中的位置(例如,每个输入数据组的乘积运算结果在该累加结果中的序号)与每个输入数据组在多个输入数据组中的位置(例如,每个输入数据组在多个输入数据组中的序号)相同。
需要说明的是,多个输入数据组的数据位宽与累加结果的数据位宽不同,例如,多个输入数据组的数据位宽为16,该多个输入数据组对应的累加结果的数据位宽为32。因此可知,每个输入数据组在多个输入数据组中所占的比特位,与该输入数据组的乘积运算结果在累加结果中所占的比特位不同。
示例性地,一个输入数据组在多个输入数据组中的序号为第一位,该输入数据组位于该多个输入数据组中的第1个bit至第16个bit。该输入数据组的乘积运算结果在累加结果中的序号也是第一位,但是,该输入数据组的乘积运算结果位于该累加结果中的第1个bit至第32个bit。
可以理解的是,电子设备将至少一个低位输入数据组对应的进位补偿项增加在目标PPA中,则可知目标PPA除了包括每个低位输入数据组对应的子PPA,还包括每个低位输入数据组对应的进位补偿项。进而,电子设备对目标PPA进行累加的过程中,目标PPA中的每个低位输入数据组对应的进位补偿项可以抵消掉该低位输入数据组对应的子PPA累加时的进位,每个低位输入数据组对应的子PPA累加时的进位就不会影响每个低位输入数据组对应的高位输入数据组的乘积运算结果。从而保证了多个输入数据组中每个低位输入数据组对应的高位输入数据组的乘积运算结果的准确性。其次,多个输入数据组中的至少一个低位输入数据组的乘积运算结果也是准确的,综上可知,各个输入数据组的乘积运算结果都是准确的,可以实现多精度的乘法运算。而且,本公开提供的乘法器的运算方法不需要组合多个乘法器,通过一个乘法器可以实现多种精度的乘法运算,减少了硬件资源消耗和硬件面积。
另外,上述相关方案利用多个低精度的乘法器实现高精度的乘法运算的过程中,需要对该多个乘法器输出的多个乘积运算结果按权重进行累加,得到高精度的乘法运算结果。在对多个乘积运算结果按权重进行累加的过程中需要对不同权重的乘积运算结果进行移位(例如,相关方案对AH*BH的乘积运算结果进行移位得到AH*BH*216,对AH*BL的乘积结果进行移位得到AH*BL*28,以及对AL*BH的乘积运算结果进行移位,得到AL*BH*28)。相关方案执行移位操作增加了得到高精度的乘积运算结果的时长。本公开实施例中电子设备对目标PPA进行累加,就可以得到各个输入数据组的乘积运算结果(包括高精度的乘积运算结果),不需要执行移位操作,可以减少得到各个输入数据组的乘积运算结果(包括高精度的乘积运算结果)的时长。
在一些实施例中,由于电子设备中的乘法器支持的最大数据位宽为N,因此,电子设备确定多个输入数据组后可以判断各个输入数据组的数据位宽的和是否不超过(即小于或等于)N;如果各个输入数据组的数据位宽的和小于或等于N,则电子设备可以继续对这多个输入数据组执行运算方法;如果各个输入数据组的数据位宽的和大于N,则电子设备可以结束流程。
示例性地,本公开实施例提供的乘法器的运算方法中的S102可包括如下步骤:响应于各输入数据组的数据位宽的和小于或等于N,确定多个输入数据组中的至少一个低位输入数据组。
可以理解的是,电子设备通过一个支持的最大数据位宽为Nbit的乘法器,即可以对数据位宽小于Nbit的一个输入数据组执行乘积运算,还可以对数据位宽的和小于Nbit的多个输入数据组同时执行乘积运算。
在一些实施例中,为了能够抵消每个低位输入数据组对应的子PPA累加时的进位,需要根据每个低位输入数据组对应的子PPA累加时的进位的位置设置每个低位输入数据组对应的进位补偿项的补偿位置,以及根据每个低位输入数据组对应的子PPA累加时的进位的数值设置每个低位输入数据组对应的进位补偿项的补偿值。
如图4所示,在上述图1所示实施例的基础上,本公开实施例提供的乘法器的运算方法中的S103可包括如下步骤S201-S202。
S201、基于编码方式、至少一个低位输入数据组的数据位宽,以及至少一个低位输入数据组在多个输入数据组中的位置,确定至少一个低位输入数据组对应的进位补偿项的补偿位置。
电子设备可以根据乘法器的编码方式、每个低位输入数据组包括的第二乘数的数据位宽(即每个低位输入数据组的数据位宽)、以及每个低位输入数据组在多个输入数据组中的位置,确定每个低位输入数据组对应的子PPA的行数。然后,电子设备根据每个低位输入数据组对应的子PPA的行数,确定每个低位输入数据组对应的进位补偿项的补偿位置。
在一些实施例中,电子设备可以根据乘法器的编码方式、至少一个低位输入数据组的数据位宽、以及至少一个低位输入数据组在多个输入数据组中的位置,确定至少一个低位输入数据组各自对应的子PPA的最后一行的位置;然后,确定每个低位输入数据组对应的子PPA的最后一行的位置为该低位输入数据组对应的进位补偿项的补偿位置。如图5所示,在上述图4所示实施例的基础上,本实施例提供的乘法器的运算方法中的S201可包括如下步骤S301-S302。
S301、基于编码方式、至少一个低位输入数据组的数据位宽,以及至少一个低位输入数据组在多个输入数据组中的位置,确定至少一个低位输入数据组对应的子部分积阵列的最后一行的位置。
其中,每个低位输入数据组对应的子PPA的最后一行的位置可以是指该子PPA的最后一行在多个输入数据组对应的PPA中的行数。
在一些实施例中,每个低位输入数据组在多个输入数据组中的位置可以是指每个低位输入数据组在多个输入数据组中的序号。进而,电子设备可以先根据至少一个低位输入数据组的数据位宽、以及至少一低位输入数据组在多个输入数据组中的序号,确定至少一个低位输入数据组在多个输入数据组中所占的比特位的位置;然后,根据乘法器的编码方式、以及至少一个低位输入数据组在多个输入数据组中所占的比特位的位置,确定每个低位输入数据组对应的子PPA的最后一行的位置。
其中,多个输入数据组可以包括第一乘数和第一被乘数,每个低位输入数据组可以包括第二乘数和第二被乘数。每个低位输入数据组在多个输入数据组中所占的比特位的位置可以是指该第二乘数在该第一乘数中所占的比特位的位置,也可以是指该第二被乘数在该第一被乘数中所占的比特位的位置。
示例性地,以多个输入数据组为上述第一乘数A32和上述第一被乘数B32,以及该多个输入数据组中的至少一个低位输入数据组包括:由上述第二乘数A16-1和上述第二被乘数B16-1组成的第一个低位输入数据组、以及由第二乘数A8-2和第二被乘数B8-2组成的第二个低位输入数据组为例,电子设备根据这两个低位输入数据组的数据位宽、以及这两个低位输入数据组在多个输入数据组中的序号,确定这两个低位输入数据组各自在多个输入数据组中所占的比特位的位置。其中,第一个低位输入数据组的数据位宽为16bit,第二个低位输入数据组的数据位宽为8bit。第一个低位输入数据组在该多个输入数据组中的第一位,第二个低位输入数据组在该多个输入数据组中的第二位。第二个低位输入数据组在该多个输入数据组中所占的比特位的位置为第17个比特位至第24个比特位。
其中,第一个低位输入数据组在该多个输入数据组中所占的比特位的位置可以是指第二乘数A16-1在第一乘数A32中所占的比特位的位置,也可以是指第二被乘数B16-1在第一被乘数B32中所占的比特位的位置。第二个低位输入数据组在该多个输入数据组中所占的比特位的位置可以是指第二乘数A8-2在第一乘数A32中所占的比特位的位置,也可以是指第二被乘数B8-2在第一被乘数B32中所占的比特位的位置。
进一步地,再以乘法器的编码方式为基4的booth编码为例,电子设备根据基4的booth编码、以及第一个低位输入数据组在该多个输入数据组中所占的比特位的位置为第1个比特位至第16个比特位,可以确定第一个低位输入数据组对应的子PPA的最后一行的位置为第八行。同理得,电子设备根据基4的booth编码、以及第二个低位输入数据组在该多个输入数据组中所占的比特位的位置为第17个比特位至第24个比特位,可以确定第一个低位输入数据组对应的子PPA的最后一行的位置为第十二行。
S302、基于至少一个低位输入数据组对应的子部分积阵列的最后一行的位置,确定至少一个低位输入数据组对应的进位补偿项的补偿位置。
电子设备可以确定每个低位输入数据组对应的子PPA的最后一行的位置为该低位输入数据组对应的进位补偿项的补偿位置。例如,上述第一个低位输入数据组对应的子PPA的最后一行的位置为第八行,则可知第一个低位输入数据组对应的进位补偿项的补偿位置为多个输入数据组对应的PPA的第八行。又例如,上述第二个低位输入数据组对应的子PPA的最后一行的位置为第十二行,则可知第二个低位输入数据组对应的进位补偿项的补偿位置为多个输入数据组对应的PPA的第十二行。
可以理解的是,由于每个低位输入数据组对应的子PPA累加时的进位是在该子PPA的最后一行,因此,将该低位输入数据组对应的进位补偿项的补偿位置设置在该子PPA的最后一行,以使得该低位输入数据组对应的进位补偿项可以与该低位输入数据组对应的子PPA累加时的进位相互抵消。
S202、基于至少一个低位输入数据组中各数据的符号位的数值,确定至少一个低位输入数据组对应的进位补偿项的补偿值。
电子设备可以根据每个低位输入数据组中各数据的符号位的数值,确定每个低位输入数据组对应的进位补偿项的补偿值。其中,每个低位输入数据组可以包括第二乘数和第二被乘数,则每个低位输入数据组中各数据的符号位的数值可以包括该第二乘数的符号位的数值和该第二被乘数的符号位的数值。
示例性地,每个低位输入数据组中的每个数据(例如,第二乘数或第二被乘数)可以包括符号位,该符号位的数值用于表征每个数据的符号类型。例如,第二乘数包括的符号位的数值为1,表示该第二乘数的符号类型为负数。又例如,第二乘数包括的符号位的数值为0,表示该第二乘数的符号类型为正数。
在一些实施例中,电子设备可以根据每个低位输入数据组包括的各数据的符号位的数值,确定该低位输入数据组对应的进位补偿项的补偿值。如图5所示,在上述图4所示实施例的基础上,本实施例提供的乘法器的运算方法中的S202可包括如下步骤S303-S304。
S303、对每个低位输入数据组中乘数和被乘数的符号位的数值进行同或运算,确定同或后的数值。
每个低位输入数据组包括一个乘数(即第二乘数)和一个被乘数(即第二被乘数)。进而,电子设备可以对该第二乘数中的符号位的数值和该第二被乘数中的符号位的数值进行同或运算,确定同或后的数值。其中,该第二乘数包括的符号位的数值用于表征该第二乘数的符号类型。该第二被乘数包括的符号位的数值用于表征该第二被乘数的符号类型。
例如,该第二乘数包括的符号位的数值可以为0或1。该第二被乘数包括的符号位的数值可以为0或1。同或后的数值可以为0或1。其中,0表示的符号类型可以为正数,1表示的符号类型可以为负数。
例如,电子设备对0和1进行同或运算,得到的同或后的数值为0。又例如,电子设备对1和1进行同或运算,得到的同或后的数值为1。再例如,电子设备对0和0进行同或运算,得到的同或后的数值为1。
在一些实施例中,每个低位输入数据组的同或后的数值表示的符号类型与该低位输入数据组的乘积运算结果的符号类型相反。
例如,如果一个低位输入数据组包括的第二乘数的符号位的数值表示该第二乘数的符号类型为正数,该低位输入数据组包括的第二被乘数的符号位的数值表示该第二被乘数的符号类型为正数,电子设备对该第二乘数的符号位的数值和该第二被乘数的符号位的数值进行同或运算,确定同或后的数值;该同或后的数值表示的符号类型为负数。而该低位输入数据组对应的乘积运算结果的符号类型为正数,则可知该同或后的数值表示的符号类型与该低位输入数据组对应的乘积运算结果的符号类型相反。
又例如,如果一个低位输入数据组包括的第二乘数的符号位的数值表示该第二乘数的符号类型为正数,该低位输入数据组包括的第二被乘数的符号位的数值表示该第二被乘数的符号类型为负数,电子设备对该第二乘数的符号位的数值和该第二被乘数的符号位的数值进行同或运算,确定同或后的数值,该同或后的数值表示的符号类型为正数。而该低位输入数据组对应的乘积运算结果的符号类型为负数,则可知该同或后的数值表示的符号类型与该低位输入数据组对应的乘积运算结果的符号类型相反。
S304、基于同或后的数值,确定至少一个低位输入数据组对应的进位补偿项的补偿值。
电子设备可以确定每个低位输入数据组的同或后的数值为该低位输入数据组对应的进位补偿项的补偿值。例如,一个低位输入数据组的同或后的数值为0,则可以确定该低位输入数据组对应的进位补偿项的补偿值为0。又例如,一个低位输入数据组的同或后的数值为1,则可以确定该低位输入数据组对应的进位补偿项的补偿值为1。
需要说明的是,电子设备通常使用多个输入数据组对应的二进制数计算PPA,因此,每个低位数据组对应的子PPA中的数值均为0或1,每个低位输入数据组对应的子PPA累加时的进位也是0或1。其次,每个低位输入数据组的乘积运算结果的符号值表示该低位输入数据组的乘积运算结果的符号类型,该符号值为0或1。对该符号值取反后的数值(例如,0取反后的数值为1,1取反后的数值为0)表示的符号类型与该低位输入数据组对应的乘积运算结果的符号类型相反,并且,对该符号值取反后的数值可以与该低位输入数据组对应的子PPA累加时的进位相互抵消。而该低位输入数据组对应的同或后的数值表示的符号类型也与该低位输入数据组对应的乘积运算结果的符号类型相反,则可知该同或后的数值等于对该符号值取反后的数值,并且,该同或后的数值也可以与该低位输入数据组对应的子PPA累加时的进位相互抵消。
其中,如果多个输入数据组包括的第一乘数和第二被乘数都是二进制数,则多个输入数据组对应的二进制数就是该第一乘数和该第二被乘数。如果多个输入数据组包括的第一乘数和第二被乘数不是二进制数,则电子设备可以分别对该第一乘数和第二被乘数进行转换,得到转换后的第一乘数和转换后的第二被乘数。转换后的第一乘数和转换后的第二被乘数都是二进制数,多个输入数据组对应的二进制数包括转换后的第一乘数和转换后的第二被乘数。
在另一些实施例中,电子设备可以先根据每个低位输入数据组包括各数据的符号位的数值,确定符号值,该符号值表示该低位输入数据组的乘积运算结果的符号类型;再根据该符号值,确定该低位输入数据组对应的进位补偿项的补偿值。如图6所示,在上述图4所示实施例的基础上,本实施例提供的乘法器的运算方法中的S202可包括如下步骤S401-S402。
S401、基于每个低位输入数据组中乘数和被乘数的符号位的数值,确定乘数和被乘数的乘积运算结果的符号值。
电子设备可以根据每个低位输入数据组包括的第二乘数的符号位的数值和第二被乘数的符号位的数值,确定该第二乘数和该第二被乘数的乘积运算结果的符号值(即该低位输入数据组的乘积运算结果的符号值)。
例如,一个第二乘数包括的符号位的数值为0,一个第二被乘数包括的符号位的数值为0,则该第二乘数和该第二被乘数的乘积运算结果的符号值为0。又例如,一个第二乘数包括的符号位的数值为0,一个第二被乘数包括的符号位的数值为1,则该第二乘数和该第二被乘数的乘积运算结果的符号值为1。再例如,一个第二乘数包括的符号位的数值为1,一个第二被乘数包括的符号位的数值为1,则该第二乘数和该第二被乘数的乘积运算结果的符号值为0。其中,数值0表示的符号类型可以为正数,数值1表示的符号类型可以为负数。
S402、对乘积运算结果的符号值进行取反运算,得到每个低位输入数据组对应的进位补偿项的补偿值。
例如,一个低位输入数据组的乘积运算结果的符号值为0,表示该乘积运算结果的符号类型为正数,电子设备可以得到该低位输入数据组对应的进位补偿项的补偿值为1。又例如,一个低位输入数据组的乘积运算结果的符号值为1,表示该乘积运算结果的符号类型为负数,电子设备可以得到该低位输入数据组对应的进位补偿项的补偿值为0。
可以理解的是,每个低位输入数据组的乘积运算结果的符号值表示该低位输入数据组的乘积运算结果的符号类型,该符号值为0或1。对该符号值取反后的数值表示的符号类型与该低位输入数据组对应的乘积运算结果的符号类型相反,并且,对该符号值取反后的数值可以与该低位输入数据组对应的子PPA累加时的进位相互抵消。因此,电子设备可以将该符号值取反后的数值确定为该低位输入数据组对应的进位补偿项的补偿值,该低位输入数据组对应的进位补偿项的补偿值就可以与该低位输入数据组对应的子PPA累加时的进位相互抵消。
在一些实施例中,电子设备得到至少一个低位输入数据组对应的进位补偿项后,可以先根据多个输入数据组生成初始PPA;再将该初始PPA中增加该进位补偿项,得到目标PPA。如图7所示,在上述图4所示实施例的基础上,本实施例提供的乘法器的运算方法中的S104可包括如下步骤S501-S503。
S501、采用与各输入数据组的数据位宽对应的编码方式,对各输入数据组进行编码,得到各输入数据组对应的编码后的数据。
由于电子设备计算的是各个输入数据组的乘积运算结果,因此,电子设备可以对各个输入数据组分别进行编码(如,booth编码),得到各个输入数据组对应的编码后的数据。其中,每个输入数据组对应的编码后的数据可以为多组乘积项。
需要说明的是,该多组乘积项的详细可以参照上述实施例对多组乘积项的介绍,本公开实施例这里不再赘述。
示例性地,多个输入数据组包括:一个数据位宽为n1bit的输入数据组、以及一个数据位宽为n2bit的输入数据组。电子设备可以采用n1位的booth编码对数据位宽为n1bit的输入数据组进行编码,以及采用n2位的booth编码对数据位宽为n2bit的输入数据组进行编码。
进一步地,如果乘法器的编码方式是基4-booth编码,电子设备可以采用n1位的基4-booth编码对数据位宽为n1bit的输入数据组进行编码,以及采用n2位的基4-booth编码对数据位宽为n2bit的输入数据组进行编码。
在一些实施例中,电子设备可以先通过选择器,设置乘法器采用与各输入数据组的数据位宽对应的编码方式;然后,通过设置后的乘法器对各输入数据组进行编码,得到各输入数据组对应的编码后的数据。
S502、根据各输入数据组对应的编码后的数据,生成初始部分积阵列;初始部分积阵列包括各输入数据组对应的子部分积阵列。
电子设备可以用各个输入数据组对应的编码后的数据生成各个输入数据组对应的子PPA;再根据各个输入数据组对应的子PPA生成多个输入数据组对应的初始PPA。不同的输入数据组对应的子PPA在该初始PPA所占的列不同。
在一些实施例中,每个输入数据组对应的编码后的数据可以为多组乘积项,电子设备可以对该多组乘积项进行排列,得到每个输入数据组对应的子PPA。
需要说明的是,电子设备可以对该多组乘积项进行排列的详细可以参照上述实施例中关于“对该乘数包括的所有数值对应的乘积项进行排列”的介绍,本公开实施例这里不再赘述。
S503、根据至少一个低位输入数据组对应的进位补偿项的补偿位置和补偿值,在初始部分积阵列中增加进位补偿项,得到目标部分积阵列。
电子设备可以在初始PPA中增加至少一个低位输入数据组对应的进位补偿项,得到目标PPA。
在一些实施例中,初始PPA包括至少一个低位输入数据组对应的子PPA。每个低位输入数据组对应的补偿位置为该低位输入数据组对应的子PPA的最后一行的位置。进而,电子设备可以根据每个低位输入数据组对应的子PPA的最后一行的位置,在该低位输入数据组对应的子PPA的最后一行中增加该低位输入数据组对应的进位补偿项的补偿值,以使得在初始PPA中增加该低位输入数据组对应的进位补偿项。电子设备在初始PPA中增加至少一个低位输入数据组对应的进位补偿项,得到目标PPA。
示例性地,电子设备可以将每个低位输入数据组对应的子PPA的最后一行中的目标高比特位均设置为该低位输入数据组对应的进位补偿项的补偿值。目标高比特位是指该低位输入数据组对应的子PPA的最后一行中的位置高于部分积的位置和符号位的位置的比特位。
可以理解的是,本公开实施例不是将多个输入数据组作为一个整体进行编码,而是对各个输入数据组分别进行编码,得到各个输入数据组对应的编码后的数据。进而,电子设备可以用各个输入数据组对应的编码后的数据生成各个输入数据组对应的子PPA,再生成包括各个输入数据组对应的子PPA的初始PPA。根据该初始PPA可以得到各个输入数据组的乘积运算结果。
在一些实施例中,电子设备可以对目标PPA进行累加,得到各输入数据组的乘积运算结果。或者,电子设备可以先对目标PPA进行压缩,得到压缩后的数据;再对压缩后的数据进行累加,得到各输入数据组的乘积运算结果。
示例性地,以电子设备采用压缩目标PPA的方式得到各输入数据组的乘积运算结果为例,描述电子设备得到各输入数据组的乘积运算结果的过程。具体地,如图7所示,在上述图4所示实施例的基础上,本实施例提供的乘法器的运算方法中的S105可包括如下步骤S504-S505。
S504、采用华莱士树型压缩器,对目标部分积阵列进行压缩,得到压缩后的数据。
电子设备可以采用华莱士树型压缩器(Wallace-Tree型压缩器,也可以称为Wallace-Tree乘法器),对目标PPA进行压缩,得到压缩后的数据。该压缩后的数据可以包括两组数值,该两组数值分别是目标PPA的乘积累加数值和目标PPA的进位数值。
S505、对压缩后的数据进行累加,得到各输入数据组的乘积运算结果。
电子设备可以对压缩后的数据包括的两组数值进行累加,得到累加结果。该累加结果包括各输入数据组的乘积运算结果。该累加结果的数据位宽为2N。
可以理解的是,电子设备通过Wallace-Tree型压缩器对目标PPA进行压缩得到压缩后的数据。相较于目标PPA包括的数据量,该压缩后的数据包括的数据量较少。进而可以提高对压缩后的数据进行累加的速度,实现快速得到各输入数据组的乘积运算结果。
示例性地,参考图8,以图8所示的电子设备为例,介绍本公开实施例提供的一种乘法器的运算方法。图8所示的电子设备包括一个数据位宽为N的乘法器、华莱士树型压缩器(Wallace-Tree型压缩器)和加法器,该电子设备执行该运算方法可以包括如下步骤:
步骤一、电子设备获取多个输入数据组、输入信号dlxp以及该乘法器的编码方式。
例如,该多个输入数据组包括第一乘数AN和第一被乘数BN。该输入信号dlxp用于表征各个输入数据组的数据位宽,具体地,该输入信号dlxp可以用于表征该多个输入数据组中位于第一位的输入数据组(可以简称为第一位输入数据组)的数据位宽为n1bit、位于第二位的输入数据组(可以简称为第二位输入数据组)的数据位宽为n2bit、…、位于第m位的输入数据组(可以简称为第m位输入数据组)的数据位宽为nmbit。该乘法器的编码方式为booth编码。m为正整数。
步骤二、电子设备通过该乘法器分别采用与各个输入数据组的数据位宽对应的编码方式,对各个输入数据组进行编码,得到各个输入数据组对应的编码后的数据。
其中,步骤二可以包括:电子设备通过该乘法器分别采用n1位的booth编码对第一位输入数据组进行编码,采用n2位的booth编码对第二位输入数据组进行编码,…,以及采用nm位的booth编码对第m位输入数据组进行编码,得到第一位输入数据组对应的编码后的数据、第二位输入数据组对应的编码后的数据、…、以及第m位输入数据组对应的编码后的数据。
步骤三、电子设备通过该乘法器,用各个输入数据组对应的编码后的数据生成各个输入数据组对应的子PPA;再根据各个输入数据组对应的子PPA生成该多个输入数据组对应的初始PPA。其中,各个输入数据组对应的子PPA包括:第一位输入数据组对应的子PPA(即PPA1)、第二位输入数据组对应的子PPA(即PPA2)、…、以及第m位输入数据组对应的子PPA(即PPAm)。
例如,结合图8,参照图9所示,以第一位输入数据组的数据位宽n1bit、第二位输入数据组的数据位宽n2bit、…、以及第m位输入数据组的数据位宽nmbit均等于8,以及该乘法器的编码方式为基4-booth编码为例,电子设备可以得到如图9所示的各个输入数据组对应的子PPA,包括:第一位输入数据组对应的子PPA(即PPA1)、第二位输入数据组对应的子PPA(即PPA2)、…、以及第m位输入数据组对应的子PPA(即PPAm)。
需要说明的是,图9所示的PPA1的详细可以参照上述实施例中对图3所示的第一位输入数据组对应的子PPA的介绍,图9所示的PPA2的详细参照可以上述实施例中对图3所示的第二位输入数据组对应的子PPA的介绍,以及图9所示的PPAm的详细可以参考上述实施例中对图3所示的第一位输入数据组对应的子PPA的介绍,本公开实施例这里不再赘述。
步骤四、电子设备通过该乘法器,基于至少一个低位输入数据组、以及编码方式,确定至少一个低位输入数据组对应的进位补偿项;再在该初始PPA中增加至少一个低位输入数据组对应的进位补偿项,得到目标PPA。其中,至少一个低位输入数据组包括:第一位输入数据组、第二位输入数据组、…、以及第m-1位输入数据组。
例如,结合图8,参照图9所示,电子设备确定出至少一个低位输入数据组对应的进位补偿项可以包括:第一位输入数据组对应的进位补偿项E1,第二位输入数据组对应的进位补偿项E2,…,以及第m-1位输入数据组对应的进位补偿项为Em-1。进而,电子设备可以得到如图9所示的目标PPA。
步骤五、电子设备通过Wallace-Tree型压缩器,对目标PPA进行压缩,得到压缩后的数据。
步骤六、电子设备通过加法器对压缩后的数据进行累加,得到各输入数据组的乘积运算结果。其中,电子设备可以对压缩后的数据进行累加得到的累加结果的数据位宽为2N。该累加结果包括各个输入数据组的乘积运算结果,例如,第一位数据输入组的乘积运算结果为该累加结果中的第1个比特位至第2*n1个比特位表示的数值;第二位数据输入组的乘积运算结果为该累加结果中的第2*n1+1个比特位至第2*n2个比特位表示的数值。
示例性地,参考图10,以多个输入数据组包括图10所示的int16的第一乘数A16和int16的第一被乘数B16为例,电子设备计算B16*A16。该第一乘数A16和该第一被乘数B16均是有符号的数据,该第一乘数A16包括图10所示的第二乘数A8-1和第二乘数A8-2,以及该第一被乘数B16包括图10所示的第二被乘数B8-1和第二被乘数B8-2。A16=(0010101100110001)2,A8-1=(00110001)2,A8-2=(00101011)2,A8-1表示的十进制数为49,A8-2表示的十进制数为43。B16=(0000001010001010)2,B8-1=(10001010)2,B8-2=(00000010)2,B8-1表示的十进制数为-118,B8-2表示的十进制数为2。
需要说的是,图10表示的所有二进制数的简写,例如,(0010101100110001)2的简写是0010101100110001,(00110001)2的简写是00110001。
首先,由第二乘数A8-1和第二被乘数B8-1组成的第一位输入数据组的数据位宽为8bit,以及由第二乘数A8-2和第二被乘数B8-2组成的第二位输入数据组的数据位宽为8bit,则电子设备可以采用8位的基4-booth编码对该第一位输入数据组进行编码,得到该第一位输入数据组对应的编码后的数据;以及采用8位的基4-booth编码对该第二位输入数据组进行编码,得到该第二位输入数据组对应的编码后的数据。
然后,电子设备可以根据该第一位输入数据组对应的编码后的数据生成该第一位输入数据组对应的子PPA(即PPA1),以及根据该第二位输入数据组对应的编码后的数据生成该第二位输入数据组对应的子PPA(即PPA2)。
再然后,电子设备可以确定该第一位输入数据组为低位输入数据组,则该第一位输入数据组对应的进位补偿项E1。电子设备确定该第一位输入数据组对应的进位补偿项E1包括如下步骤:该第一位输入数据组中第二乘数A8-1的符号位的数值为0,该第一位输入数据组中第二被乘数B8-1的符号位的数值为1,则电子设备可以确定第二被乘数B8-1和第二乘数A8-1的乘积运算结果的符号值为1;再对该乘积运算结果的符号值进行取反运算,得到该第一位输入数据组对应的进位补偿项E1的补偿值为0;然后,可以确定该第一位输入数据组对应的子PPA的最后一行的位置(即PPA1的第四行)为该第一位输入数据组对应的进位补偿项E1的补偿位置。
进一步地,电子设备可以生成图10所示的目标PPA;再根据该目标PPA,可以确定该第一位输入数据组的乘积运算结果C1、以及该第二位输入数据组的乘积运算结果C2。其中,C1=(1110100101101010)2,C1表示的十进制数为-5728,-5728等于B8-1和A8-1的乘积(即-118和49的乘积)。C2=(0000000001010110)2,C2表示的十进制数为86,86等于B8-2和A8-2的乘积(即2和43的乘积)。
需要说明的是,图10所示的符号位(包括s0、e0s1、e1、/>和1)的详细均可以参照上述实施例对图3所示的(包括s0、e0、/>s1、e1、/>和1)的介绍,本公开实施例这里不再赘述。
示例性地,参考图11,以多个输入数据组包括图11所示的int16的第一乘数A16和int16的第一被乘数B16为例,电子设备计算B16*A16。该第一乘数A16和该第一被乘数B16均是有符号的数据,该第一乘数A16包括图11所示的第二乘数A8-1和第二乘数A8-2,以及该第一被乘数B16包括图11所示的第二被乘数B8-1和第二被乘数B8-2。A16=(1000101000110000)2,A8-1=(00110000)2,A8-2=(10001010)2,A8-1表示的十进制数为48,A8-2表示的十进制数为-118。B16=(0110110100101000)2,B8-1=(00101000)2,B8-2=(01101101)2,B8-1表示的十进制数为40,B8-2表示的十进制数为109。
需要说的是,图11表示的所有二进制数的简写,例如,(1000101000110000)2的简写是1000101000110000,(00110000)2的简写是00110000。
其中,电子设备可以确定图11所示的第一位输入数据组为低位输入数据组,则可以确定该第一位输入数据组对应的进位补偿项E1。电子设备确定图11所示的第一位输入数据组对应的进位补偿项E1包括如下步骤:该第一位输入数据组中第二乘数A8-1的符号位的数值为0,该第一位输入数据组中第二被乘数B8-1的符号位的数值为0,则电子设备可以确定第二被乘数B8-1和第二乘数A8-1的乘积运算结果的符号值为0;再对该乘积运算结果的符号值进行取反运算,得到该第一位输入数据组对应的进位补偿项E1的补偿值为1;然后,可以确定该第一位输入数据组对应的子PPA的最后一行的位置(即PPA1的第四行)为该第一位输入数据组对应的进位补偿项E1的补偿位置。
进一步地,电子设备可以生成图11所示的目标PPA;再根据该目标PPA,可以确定该第一位输入数据组的乘积运算结果C1、以及该第二位输入数据组的乘积运算结果C2。其中,C1=(0000011110000000)2,C1表示的十进制数为1920,1920等于B8-1和A8-1的乘积(即40和48的乘积)。C2=(1100110111000010)2,C2表示的十进制数为-12862,-12862等于B8-2和A8-2的乘积(即109和-118的乘积)。
需要说明的是,电子设备对图11所示的多个输入数据组执行乘法器的运算方法的过程,与电子设备对图10所示的多个输入数据组执行乘法器的运算方法的过程同理,本公开实施例这里不再赘述。
示例性装置
在采用对应各个功能划分各个功能模块的情况下,本公开实施例还提供一种运算装置。如图12所示,为本公开实施例提供的一种运算装置的结构示意图。该运算装置600可以包括:补偿确定模块601、部分积阵列确定模块602和部分积处理模块603。
其中,补偿确定模块601,用于:确定乘法器的多个输入数据组和乘法器的编码方式;确定多个输入数据组中的至少一个低位输入数据组;基于至少一个低位输入数据组、编码方式,确定至少一个低位输入数据组对应的进位补偿项。
部分积阵列确定模块602,用于基于补偿确定模块601确定的至少一个低位输入数据组对应的进位补偿项、以及多个输入数据组,确定目标部分积阵列。
部分积处理模块603,用于基于部分积阵列确定模块602确定的目标部分积阵列,确定各输入数据组的乘积运算结果。
在一些实施例中,结合图12,参照图13所示,补偿确定模块601可以包括补偿位置确定单元6011和补偿值确定单元6012。其中,补偿位置确定单元6011,用于基于编码方式、至少一个低位输入数据组的数据位宽,以及至少一个低位输入数据组在多个输入数据组中的位置,确定至少一个低位输入数据组对应的进位补偿项的补偿位置。补偿值确定单元6012,用于基于至少一个低位输入数据组中各数据的符号位的数值,确定至少一个低位输入数据组对应的进位补偿项的补偿值。
在一些实施例中,补偿位置确定单元6011,具体用于:基于编码方式、至少一个低位输入数据组的数据位宽,以及至少一个低位输入数据组在多个输入数据组中的位置,确定至少一个低位输入数据组对应的子部分积阵列的最后一行的位置;基于至少一个低位输入数据组对应的子部分积阵列的最后一行的位置,确定至少一个低位输入数据组对应的进位补偿项的补偿位置。
在一些实施例中,补偿值确定单元6012,具体用于:对每个低位输入数据组中乘数和被乘数的符号位的数值进行同或运算,确定同或后的数值;基于同或后的数值,确定每个低位输入数据组对应的进位补偿项的补偿值。
在一些实施例中,补偿值确定单元6012,具体用于:基于每个低位输入数据组中乘数和被乘数的符号位的数值,确定乘数和被乘数的乘积运算结果的符号值;对乘积运算结果的符号值进行取反运算,得到每个低位输入数据组对应的进位补偿项的补偿值。
在一些实施例中,结合图12,参照图13所示,部分积阵列确定模块602包括编码单元6021和部分积阵列确定单元6022。其中,编码单元6021,用于采用与各输入数据组的数据位宽对应的编码方式,对各输入数据组进行编码,得到各输入数据组对应的编码后的数据。部分积阵列确定单元6022,用于:根据各输入数据组对应的编码后的数据,生成初始部分积阵列;初始部分积阵列包括各输入数据组对应的子部分积阵列;根据至少一个低位输入数据组对应的进位补偿项的补偿位置和补偿值,在初始部分积阵列中增加进位补偿项,得到目标部分积阵列。
在一些实施例中,补偿确定模块601,具体用于:响应于各输入数据组的数据位宽的和小于或等于乘法器支持的最大数据位宽,确定多个输入数据组中的至少一个低位输入数据组。
在一些实施例中,结合图12,参照图13所示,部分积处理模块603包括部分积压缩单元6031和累加单元6032。其中,部分积压缩单元6031,用于采用华莱士树型压缩器,对目标部分积阵列进行压缩,得到压缩后的数据。累加单元6032,用于对压缩后的数据进行累加,得到各输入数据组的乘积运算结果。
本装置示例性实施例对应的有益技术效果可以参见上述示例性方法部分的相应有益技术效果,在此不再赘述。
示例性电子设备
图14为本公开实施例提供的一种电子设备的结构图,电子设备10包括至少一个处理器11和存储器12。
处理器11可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。
存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(random access memory,RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(read-only memory,ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行一个或多个计算机程序指令,以实现上文中本公开的各个实施例的乘法器的运算方法和/或其他期望的功能。
在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
该输入装置13还可以包括例如键盘、鼠标等等。
该输出装置14可以向外部输出各种信息,其可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图14中仅示出了该电子设备10中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以提供一种计算机程序产品,包括计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行上述“示例性方法”部分中描述的本公开各种实施例的乘法器的运算方法中的步骤。
计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行上述“示例性方法”部分中描述的本公开各种实施例的乘法器的运算方法中的步骤。
计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如但不限于包括电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为其是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本领域的技术人员可以对本公开进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。

Claims (11)

1.一种乘法器的运算方法,包括:
确定乘法器的多个输入数据组和所述乘法器的编码方式;
确定所述多个输入数据组中的至少一个低位输入数据组;
基于所述至少一个低位输入数据组、所述编码方式,确定所述至少一个低位输入数据组对应的进位补偿项;
基于所述至少一个低位输入数据组对应的进位补偿项和所述多个输入数据组,确定目标部分积阵列;
基于所述目标部分积阵列,确定各输入数据组的乘积运算结果。
2.根据权利要求1所述的方法,其中,所述基于所述多个输入数据组中的至少一个低位输入数据组,以及所述编码方式,确定所述至少一个低位输入数据组对应的进位补偿项,包括:
基于所述编码方式、所述至少一个低位输入数据组的数据位宽,以及所述至少一个低位输入数据组在所述多个输入数据组中的位置,确定所述至少一个低位输入数据组对应的进位补偿项的补偿位置;
基于所述至少一个低位输入数据组中各数据的符号位的数值,确定所述至少一个低位输入数据组对应的进位补偿项的补偿值。
3.根据权利要求2所述的方法,其中,所述基于所述编码方式、所述至少一个低位输入数据组的数据位宽,以及所述至少一个低位输入数据组在所述多个输入数据组中的位置信息,确定所述至少一个低位输入数据组对应的进位补偿项的补偿位置,包括:
基于所述编码方式、所述至少一个低位输入数据组的数据位宽,以及所述至少一个低位输入数据组在所述多个输入数据组中的位置,确定所述至少一个低位输入数据组对应的子部分积阵列的最后一行的位置;
基于所述至少一个低位输入数据组对应的子部分积阵列的最后一行的位置,确定所述至少一个低位输入数据组对应的进位补偿项的补偿位置。
4.根据权利要求2所述的方法,其中,所述基于所述至少一个低位输入数据组中各数据的符号位的数值,确定所述至少一个低位输入数据组对应的进位补偿项的补偿值,包括:
对每个低位输入数据组中乘数和被乘数的符号位的数值进行同或运算,确定同或后的数值;
基于所述同或后的数值,确定所述每个低位输入数据组对应的进位补偿项的补偿值。
5.根据权利要求2所述的方法,其中,所述基于所述至少一个低位输入数据组中各数据的符号位的数值,确定所述至少一个低位输入数据组对应的进位补偿项的补偿值,包括:
基于每个低位输入数据组中乘数和被乘数的符号位的数值,确定所述乘数和所述被乘数的乘积运算结果的符号值;
对所述乘积运算结果的符号值进行取反运算,得到所述每个低位输入数据组对应的进位补偿项的补偿值。
6.根据权利要求2-5中任一项所述的方法,其中,所述基于所述至少一个低位输入数据组对应的进位补偿项和所述多个输入数据组,确定目标部分积阵列,包括:
采用与所述各输入数据组的数据位宽对应的编码方式,对所述各输入数据组进行编码,得到所述各输入数据组对应的编码后的数据;
根据所述各输入数据组对应的编码后的数据,生成初始部分积阵列;所述初始部分积阵列包括所述各输入数据组对应的子部分积阵列;
根据所述至少一个低位输入数据组对应的进位补偿项的所述补偿位置和所述补偿值,在所述初始部分积阵列中增加所述进位补偿项,得到所述目标部分积阵列。
7.根据权利要求1-5中任一项所述的方法,其中,所述确定所述多个输入数据组中的至少一个低位输入数据组,包括:
响应于所述各输入数据组的数据位宽的和小于或等于所述乘法器支持的最大数据位宽,确定所述多个输入数据组中的至少一个低位输入数据组。
8.根据权利要求1-5中任一项所述的方法,其中,所述基于所述目标部分积阵列,确定各输入数据组的乘积运算结果,包括:
采用华莱士树型压缩器,对所述目标部分积阵列进行压缩,得到压缩后的数据;
对所述压缩后的数据进行累加,得到所述各输入数据组的乘积运算结果。
9.一种运算装置,包括:
补偿确定模块,用于:确定乘法器的多个输入数据组和所述乘法器的编码方式;确定所述多个输入数据组中的至少一个低位输入数据组;基于所述至少一个低位输入数据组、所述编码方式,确定所述至少一个低位输入数据组对应的进位补偿项;
部分积阵列确定模块,用于基于所述补偿确定模块确定的所述至少一个低位输入数据组对应的进位补偿项、以及所述多个输入数据组,确定目标部分积阵列;
部分积处理模块,用于基于所述部分积阵列确定模块确定的所述目标部分积阵列,确定各输入数据组的乘积运算结果。
10.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-8任一所述的乘法器的运算方法。
11.一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述可执行指令以实现上述权利要求1-8任一所述的乘法器的运算方法。
CN202310778309.2A 2023-04-27 2023-06-28 一种乘法器的运算方法、运算装置、电子设备和存储介质 Pending CN116820391A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202310468468 2023-04-27
CN2023104684682 2023-04-27

Publications (1)

Publication Number Publication Date
CN116820391A true CN116820391A (zh) 2023-09-29

Family

ID=88123649

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310778309.2A Pending CN116820391A (zh) 2023-04-27 2023-06-28 一种乘法器的运算方法、运算装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN116820391A (zh)

Similar Documents

Publication Publication Date Title
US8805915B2 (en) Fused multiply-add apparatus and method
CN115934030B (zh) 算数逻辑单元、浮点数乘法计算的方法及设备
US10491239B1 (en) Large-scale computations using an adaptive numerical format
US20210349692A1 (en) Multiplier and multiplication method
CN105468331B (zh) 独立的浮点转换单元
US20200372097A1 (en) Apparatus and method for matrix operations
US10949168B2 (en) Compressing like-magnitude partial products in multiply accumulation
EP3769208B1 (en) Stochastic rounding logic
KR101929847B1 (ko) 희소행렬 연산 방법과 장치
CN114418057A (zh) 卷积神经网络的运算方法及相关设备
US9143159B2 (en) DPD/BCD to BID converters
US20060143260A1 (en) Low-power booth array multiplier with bypass circuits
CN113126954B (zh) 浮点数乘法计算的方法、装置和算术逻辑单元
US6298368B1 (en) Method and apparatus for efficient calculation of an approximate square of a fixed-precision number
CN116820391A (zh) 一种乘法器的运算方法、运算装置、电子设备和存储介质
JP2020098469A (ja) 演算処理装置および演算処理装置の制御方法
CN111492369A (zh) 人工神经网络中移位权重的残差量化
CN113283591B (zh) 基于Winograd算法和近似乘法器的高效卷积实现方法及装置
JP6863907B2 (ja) 演算回路
US20050010632A1 (en) Digital signal processor based on jumping floating-point arithmetic
CN100410871C (zh) 应用跳跃式浮点数运算法的数字讯号处理器
JP4243277B2 (ja) データ処理装置
EP4036704A1 (en) Multiplier
US20210334635A1 (en) Neural network accelerator configured to perform operation on logarithm domain
JP7247418B2 (ja) 乗算のための計算ユニット、方法及びコンピュータプログラム

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