CN117193712A - 乘累加操作数的方法及其设备 - Google Patents
乘累加操作数的方法及其设备 Download PDFInfo
- Publication number
- CN117193712A CN117193712A CN202210622935.8A CN202210622935A CN117193712A CN 117193712 A CN117193712 A CN 117193712A CN 202210622935 A CN202210622935 A CN 202210622935A CN 117193712 A CN117193712 A CN 117193712A
- Authority
- CN
- China
- Prior art keywords
- operands
- module
- multiply
- accumulate
- result
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 30
- 238000007667 floating Methods 0.000 claims description 47
- 238000004590 computer program Methods 0.000 claims description 25
- 238000009825 accumulation Methods 0.000 claims description 23
- 230000006835 compression Effects 0.000 claims description 20
- 238000007906 compression Methods 0.000 claims description 20
- 238000006243 chemical reaction Methods 0.000 claims description 19
- 238000010606 normalization Methods 0.000 claims description 13
- 238000013500 data storage Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 20
- 230000000295 complement effect Effects 0.000 description 14
- 230000000694 effects Effects 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 4
- 101710092887 Integrator complex subunit 4 Proteins 0.000 description 3
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 3
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 3
- 102100037075 Proto-oncogene Wnt-3 Human genes 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及乘累加多个操作数的方法及其设备,其中本发明的计算装置包括在集成电路装置中,该集成电路装置包括通用互联接口和其他处理装置。计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。集成电路装置还可以包括存储装置,存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据存储。
Description
技术领域
本发明一般地涉及计算机领域。更具体地,本发明涉及乘累加多个操作数的装置及其集成电路装置与板卡,以及乘累加多个操作数的方法及其计算机可读存储介质、计算机程序产品、计算机装置。
背景技术
计算机领域经常需要进行浮点数的乘累加,尤其是深度学习算法,矩阵乘累加占据了90%以上的运算。乘累加指的是一连串的操作数两两相乘,再把相乘的结果加总起来,例如:
z=a0·b0+a1·b1+a2·b2+a3·b3
其中a与b为操作数。
乘累加运算应用的范围极广,因此计算机经常要应付多种数据格式的乘累加运算,像是FP16及FP32等浮点数的运算和INT4及INT8的定点数运算。由于浮点数与定点数的数据格式不同,计算机往往要配置2组硬件来分别处理浮点数的乘累加运算与定点数的乘累加运算,导致资源浪费、效益不彰。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种乘累加多个操作数的装置及其集成电路装置与板卡,以及一种乘累加多个操作数的方法及其计算机可读存储介质、计算机程序产品、计算机装置。
在一个方面中,本发明揭露一种乘累加多个操作数的装置,包括对阶模块、乘法模块、第一加法模块、移位模块及第二加法模块。对阶模块用以识别多个操作数的指数的基准值;乘法模块用以对多个操作数中相乘的两操作数的尾数进行乘法运算,以获得尾数的部分积;第一加法模块用以将部分积进行累加运算,以获得两操作数的尾数的乘积结果;移位模块用以根据基准值与两操作数的指数的差值,对乘积结果进行移位;第二加法模块用以对移位后的乘积结果进行加法运算,以获得多个操作数的乘累加结果。
在另一个方面,本发明揭露一种集成电路装置,包括上述的装置;并揭露一种板卡,包括上述的集成电路装置。
在另一个方面,本发明揭露一种乘累加多个操作数的方法,包括:识别多个操作数的指数的基准值;对多个操作数中相乘的两操作数的尾数进行乘法运算,以获得尾数的部分积;将部分积进行累加运算,以获得两操作数的尾数的乘积结果;根据基准值与两操作数的指数的差值,对乘积结果进行移位;对移位后的乘积结果进行加法运算,以获得多个操作数的乘累加结果。
在另一个方面,本发明揭露一种计算机可读存储介质,其上存储有乘累加多个操作数的方法的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行上述的方法。
在另一个方面,本发明揭露一种计算机程序产品,包括乘累加多个操作数的计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。
在另一个方面,本发明揭露一种计算机装置,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现上述方法的步骤。
本发明以浮点数乘累加运算为基础,利用对阶的概念,使得浮点数的部分运算与定点数运算相同,如此便可复用部分相同运算进行定点数的乘累加运算,达到涵盖浮点数的乘累加运算与定点数的乘累加运算的技术效果。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分。其中:
图1是示出本发明实施例的板卡的结构图;
图2是示出本发明实施例的集成电路装置的结构图;
图3是示出本发明实施例的乘累加装置的示意图;
图4是示出本发明实施例的对阶模块采用统一对阶的示意图;
图5是示出本发明实施例采用集群对阶方案的对阶模块的示意图;
图6是示出本发明实施例的筛选模块的示意图;
图7是示出本发明实施例的乘法模块与第二加法模块的示意图;
图8是示出本发明实施例的华莱士树加法器的示意图;
图9是示出本发明实施例的切换模块控制其他模块的示意图;
图10是示出本发明实施例在乘累加定点数时的示意图;
图11是示出本发明的另一实施例的乘累加装置的示意图;
图12是示出本发明另一实施例的切换模块控制舍入模块与转换模块的示意图;
图13是示出本发明另一实施例的乘累加多个操作数的方法的流程图;
图14是示出本发明另一实施例的乘累加多个操作数的方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本发明的具体实施方式。
计算机中数值的表示有两种形式,一是定点数,二是浮点数。
定点数的数据格式分为1位的符号位(sign)与多位的尾数位(mantissa)。符号位用以决定该定点数的正负值。尾数位用以决定该定点数的数值,定点数指的是小数点在数中位置固定不变的数。定点数分为定点整数和定点小数,由于小数点位置固定不变,因此小数点无需表示,按照约定的位置计算数值即可。计算机通常将定点数表示成纯小数或纯整数。如果数值为是纯小数,则小数点预设位于符号位与尾数位最高位间,如果数值是纯整数,则小数点预设位于尾数位最低位的右边。
在计算机中表达浮点数的格式是在IEEE 754中规范的。以37位的单精度浮点数(FP37)为例,其是由1位符号位、8位指数位(exp)及28位尾数位所构成,用来代表以下数值:
数值=sign×mantissa×2exp-127
指数位有8位可以表示0至255的范围,导致指数变得非常大,故IEEE754规范指数偏移量为127,使得指数范围平移,落在-127至128间,这样的范围较为合理。IEEE 754进一步约定小数点左边隐含有一位,通常这位数是1,所以上述单精度的尾数位数实际为29位。
由于上述的表示方法限制了浮点数的范围和精度,导致浮点数只能近似地表示来运算,就不得不考虑舍入的问题了。在十进制下,假设欲保留两位小数,即留下十分位和百分位的数值,则保留位就是数值的最低位,也就是百分位,近似位为第一个被舍掉的位,也就是千分位,而千分位以后的所有位合称为粘滞位(sticky bit),粘滞位的信息全部丢失了。对于二进制,如果想要保留两位小数,那么小数点右边第二位就是保留位,小数点右边第三位就是近似位,小数点右边第四位起的所有小数位为粘滞位。
为此,IEEE 754定义了四种不同的舍入方式:向偶数舍入、向零舍入、向下舍入及向上舍入,IEEE 754默认采用向偶数舍入。
图1示出本发明实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和片外内存204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本发明的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
片外内存204用以存储待处理的数据,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
此实施例的计算装置201包括一种乘累加多个操作数的装置,利用对阶的概念,使得对阶后的浮点数的部分运算与定点数运算相同,相同运算的硬件可以复用,如此一来此实施例的乘累加装置可以有效地涵盖浮点数的乘累加运算与定点数的乘累加运算。
图3示出此实施例的乘累加装置的示意图。计算装置201的乘累加装置包括对阶模块301、乘法模块302、第一加法模块303、移位模块304、第二加法模块305、规格化模块306、舍入模块307及切换模块308。
以下先针对操作数为n个浮点数的乘累加运算进行说明。
对阶模块301用以识别多个操作数的指数的基准值,其他操作数得以基于基准值对阶,以方便后续的累加计算。此实施例不限制对阶方式,以下将示例性地描述对阶模块301的对阶方案。
对阶模块301可以采用统一对阶方案。图4示出对阶模块301采用统一对阶的示意图。对阶模块301为二叉树结构,结构中的基本单元为比较单元401,是一种现有的比较器,用以比较两操作数的指数大小,比较单元401接收并比较两操作数的指数位(如操作数1的指数数值exp1与操作数2的指数数值exp2)的数值大小,输出较大者max(exp1,exp2)。该较大的指数数值再进入下一级的比较单元401中两两比较,直到最高级的比较单元401选择出n个操作数的指数最大者max(exp1,exp2,…,expn)。统一对阶方案的目的在于找出所有操作数的指数最大者max(exp1,exp2,…,expn)作为基准值,供移位模块304作为对阶移位的参考值。
本发明并不限制比较单元401的结构,本领域技术人员可以根据实际情况做适当的变化,例如设置八选一的比较器,以8个操作数为1组进行比较,依序找出n个操作数的指数最大者。
对阶模块301还可以采用集群对阶方案。对阶模块301先找出n个操作数中指数位的最大值,以该指数位作为基准值筛选出集群,集群内的操作数的指数数值较为接近,直接累加不影响精度。在筛选出集群后,对阶模块301持续针对尚未分群的操作数以上述方式分群,如此循环操作直到所有操作数都归类完毕。
图5示出此实施例采用集群对阶方案时的对阶模块301的示意图,对阶模块301包括识别模块501、筛选模块502及集群模块503。
识别模块501具有类似图4的结构,用以识别基准值,基准值为尚未分群的所有操作数中的指数位的最大值。一开始n个操作数均未被分群,识别模块501找出所有操作数的指数位的最大值,将此指数最大值设定为基准值。筛选模块502用以将此基准值与所有操作数的指数数值进行比较,如果差值在一定范围内,则筛选进集群(例如第一集群)。集群模块503将第一集群内的操作数排除在外,整理出尚未分群的操作数。识别模块501、筛选模块502及集群模块503重新基于更新后的未分群的操作数找出基准值、建立集群(例如第二集群)、更新未分群的操作数,直到所有操作数都被分群为止。因此,n个操作数会被分为多个集群(第一集群至第m集群),每个集群的基准值不同,且每个集群内的操作数的指数数值与其对应的基准值的差值均在一定范围内,换言之,每个集群内的操作数的指数数值相近。
图6示出筛选模块502的示意图,其包括减法器601、比较器602、第一暂存器603及第二暂存器604。
减法器601基于识别模块501的结果(即基准值),用以获得每个指数数值与基准值的差值。减法器601有几种实现方式,例如:减法器601具有多个减法单元,一次接收未分群的数个操作数的指数数值与基准值,对这些操作数的指数数值与基准值进行减法运算,以获得每个指数数值与基准值的差值;或是每次输入未分群的一个操作数,与基准值进行减法运算,直到所有未分群的操作数都运算完毕为止。本发明不限制减法器601的实现方式。
比较器602接收来自减法器601的差值,用以判断差值是否小于阈值,也就是判断每个操作数的指数数值与基准值的差距是否在阈值范围内,这阈值可以是任意数,例如为32。如果是差值小于阈值的操作数,将其操作数发送至第一暂存器603存储,如果是差值不小于阈值的操作数,将其操作数发送至第二暂存器604存储。换言之,比较器602根据指数数值大小将操作数分为2类,第一暂存器603用以存储差值小于阈值的操作数,第二暂存器604用以存储差值不小于所述阈值的操作数。
由于第一暂存器603中存储的操作数是指数差值小于阈值,表示在第一暂存器603中的操作数的指数数值与基准值差距不大,在后续进行累加时,不会因为指数数值相差太多导致尾数位移位时损失过多精度。第一暂存器603中的所有操作数集合成为一个集群,准备供后续模块一同处理。第一暂存器603在每轮分群中产生不同的集群,例如第一集群至第m集群。而第二暂存器604中存储的操作数的指数数值与基准值差距太大,如果进行累加会使得尾数位移位时损失过多精度,因此将其发回集群模块503与识别模块501重新分群。
集群模块503用以将第二暂存器604中的操作数更新为未分群的操作数,也就是说,集群模块503以第二暂存器604中的操作数覆盖原操作数,使得更新后未分群的操作数不是所有操作数,而仅是第二暂存器604中的操作数。集群模块503将更新后未分群的操作数发送至识别模块501以识别出这些未分群的操作数的指数值最大者,再由筛选模块202筛选出指数数值与基准值的差值小于阈值的操作数,作为下一个集群。
综上所述,当此实施例采用集群对阶方案时,对阶模块301根据指数位数值将n个操作数分成数个集群。
回到图3,乘法模块302用以对多个操作数中相乘的两操作数的尾数(如操作数1的尾数man1与操作数2的尾数man2)进行乘法运算,以获得尾数的部分积。具体来说,乘法模块302包括压缩单元及华莱士树单元,其中压缩单元用以对两尾数进行Radix-4的Booth压缩,华莱士树单元用以对压缩后的尾数进行累加,以获得部分积。
图7示出乘法模块302的示意图,其包括压缩单元701及华莱士树单元702。
压缩单元701用以对移位后的乘积结果进行Booth压缩。
华莱士树单元702用以对压缩后的乘积结果进行累加,以获得乘累加结果。由于华莱士树仅支持补码运算,而乘累加装置的操作均在原码下完成,因此华莱士树单元702需要进行原码与补码的转换,具体来说,华莱士树单元702包括第一转换器703、华莱士树加法器704及第二转换器705。
第一转换器703用以将压缩后的尾数转换成补码,供华莱士树加法器704进行操作数累加运算。华莱士树加法器704用以对压缩后的乘积结果补码进行累加,以获得累加结果,即累加值补码。华莱士树加法器704是一种多级的二输入加法单元,图8示出五级的二输入加法单元的华莱士树加法器704,包括第一级加法单元801、第二级加法单元802、第三级加法单元803、第四级加法单元804及第五级加法单元805。每级加法单元将操作数两两相加,因此第五级加法单元805所获得的是32个操作数的累加总和。第二转换器705用以将累加结果补码转换成累加结果原码,以完成操作数的部分积。
第一加法模块303用以将上述的部分积进行累加运算,以获得两操作数的尾数的乘积结果。至此获得两操作数的乘积。
移位模块304用以根据对阶模块301所找出的基准值与两操作数的指数的差值,对来自第一加法模块303的乘积结果进行移位。移位模块304包括多个桶型移位单元,桶式移位单元是一种组合逻辑电路,具有多个数据输入和多个数据输出,以及指定如何移动数据的控制输入。桶型移位单元分别用以基于差值对相应的尾数进行移位。首先还原尾数,并在尾数后补0,所有移位后的尾数具有阈值减一个位数。
如果对阶模块301采用统一对阶方式,则移位模块304可以包括n个移位单元,每个移位单元用以移位1个操作数的尾数位。由于基准值是这n个操作数中的指数位最大值,因此所有操作数的指数位全部向基准值看齐,其尾数位相应做移位。移位后,所有操作数的尾数位均为基准值减去一个位数。
如果对阶模块301采用集群对阶方式,以某个集群包括32个操作数为例,移位模块304可以包括32个移位单元,每个移位单元用以移位1个操作数的尾数位。由于基准值是这32个操作数中的指数位最大值,因此集群中的操作数的指数位全部向相应的基准值对齐,其尾数位相应做移位。如果阈值设定为32,则集群中不会有指数位差值大于32的,因此移位后,所有操作数的尾数位均为阈值减去一个位数,即31位。每个集群均以此方式进行移位。
当移位模块304判断移位后的尾数所移出的位数皆为0时,在IEEE754的向偶数舍去的原则下,则移位模块304将移位后的尾数的粘滞位全设定为0;当移位模块304判断移位后的尾数所移出的位数皆为1时,则将粘滞位全设定为1。
第二加法模块305用以对移位后的乘积结果进行加法运算,以获得n个操作数的乘累加结果。第二加法模块305的结构亦如图7所示,其包括压缩单元701及华莱士树单元702。压缩单元701用以对移位后的乘积结果进行Booth压缩。华莱士树单元702包括第一转换器703、华莱士树加法器704及第二转换器705。第一转换器703用以将压缩后的尾数转换成补码,供华莱士树加法器704进行操作数累加运算。华莱士树加法器704用以对压缩后的乘积结果补码进行累加,以获得乘累加结果,以产生乘累加值补码。第二转换器705用以将乘累加结果补码转换成乘累加结果原码。至此完成操作数的乘累加。
当对阶模块301采用集群对阶时,乘法模块302、第一加法模块303、移位模块304、第二加法模块305均以集群为单位进行运算,最后第二加法模块305再将每个集群的乘累加结果加总起来,以产生n个操作数的乘累加结果。
规格化模块306用以规格化尾数的乘累加结果。通过指数数值的加减运算,使得尾数左移或右移,以还原移位模块304的移位操作。
舍入模块307用以对规格化后的乘累加结果进行舍入运算,例如进行向偶数舍入、向零舍入、向下舍入或向上舍入,舍入方式依实际需要而定。
切换模块308根据前级的控制信号或是判断操作数的数据格式(例如操作数有无指数位),来识别操作数为浮点数或定点数,并根据操作数为浮点数或定点数,决定对阶模块301、移位模块304、规格化模块306及舍入模块307的开启或关闭。如果操作数为浮点数,则切换模块308控制对阶模块301、移位模块304、规格化模块306及舍入模块307处于开启模式,执行如前所述的操作。
以下针对操作数为n个定点数的乘累加运算进行说明。
由于定点数的乘累加运算与浮点数的乘法运算的原理相同,均是先利用华莱士树计算出部分和,再累加所有的部分和,因此乘法模块302、第一加法模块303及第二加法模块305可在定点数的乘累加运算中被复用。
当操作数为定点数时,切换模块308控制对阶模块301、移位模块304、规格化模块306及舍入模块307处于关闭模式,具体关闭方式如下。由于定点数不存在指数位,不需要进行对阶,因此切换模块308可以直接切断对阶模块301的电源,使其不运作即可。至于移位模块304、规格化模块306及舍入模块307,虽然这些模块对定点数的乘累加运算亦无作用,但前一级的输出需要往下一级传送,因此不能如对阶模块301一样直接切断电源。一种关闭方式如图9所示,在这些模块前配置一个解复用器,例如移位模块304前配置第一解复用器901,规格化模块306前配置第二解复用器902,舍入模块307前配置第三解复用器903。切换模块308的控制信号控制第一解复用器901去耦移位模块304,控制第二解复用器902去耦规格化模块306,控制第三解复用器903去耦舍入模块307,使得这些模块被旁路,解复用器的输入(前一级的输出)直接输出至下一级。
由于切换模块308关闭了对阶模块301、移位模块304、规格化模块306及舍入模块307,故图3的乘累加装置在乘累加定点数时的实际运行模块如图10所示,仅乘法模块302、第一加法模块303及第二加法模块305运行中,用以计算操作数的尾数位。乘法模块302、第一加法模块303及第二加法模块305在操作数为定点数的运行方式与操作数为浮点数的运行方式并无不同,故不赘述。第二加法模块305的输出即为n个定点数的乘累加结果。
此实施例以浮点数乘累加运算的模块为基础,利用对阶的概念,使得浮点数的部分运算与定点数运算相同,如此便可复用部分模块进行定点数的乘累加运算,达到一组硬件涵盖浮点数的乘累加运算与定点数的乘累加运算的技术效果。此实施例至少可以支援FP32、TF32、FP16、BF16、INT16、INT8、INT4等数据格式的乘累加运算。
图11示出本发明的另一个实施例的乘累加装置的示意图。此实施例同样具有图1与图2的结构,且乘累加装置同样设置在计算装置201中。此乘累加装置包括对阶模块301、乘法模块302、第一加法模块303、移位模块304、第二加法模块305、规格化模块306、舍入模块307、切换模块308,这些模块的运作方式与图3的实施例无异,故不赘述。此乘累加装置还包括舍入模块1101与转换模块1102。
舍入模块1101配置在第一加法模块303与移位模块304间,用以对两操作数的乘积进行舍入运算,例如进行向偶数舍入、向零舍入、向下舍入或向上舍入,舍入方式依实际需要而定。移位模块304对舍入后的乘积结果进行移位。
转换模块1102配置在舍入模块307之后,用以转换乘累加结果的精度。在一种可能的情况下转换成更高精度,以提高乘累加结果精度,供后级模块可以基于更高精度的操作数进行运算。转换过程不涉及符号位数值,即符号位不变动。
如果转换前后的操作数具有相同的指数位数,例如将原本为FP32的操作数转换成FP37的操作数,由于FP32与FP37均具有8位指数位,因此指数位亦不变,仅需将FP32的23位尾数位转换成FP37的28位尾数位即可,转换方式为将FP37的23位高位尾数位设定为FP32的23位尾数位的数值,FP37剩余的5位低位尾数位的数值设定为0。
如果转换前后的操作数的指数位数与尾数位数均不同,例如将原本为FP16的操作数转换成FP37的操作数,由于FP16具有5位指数位及10位尾数位,在进行转换时基于指数数值是否为0,其转换方式不同。
当FP16的指数位值不为0时,以指数为20=1为例,FP16的指数位为0x10,而FP37的指数位为0x80,因此进行转换时,指数数值需要加上0x70。由于FP16的尾数位长度是10位,FP37的尾数位长度为28位,因此进行转换时,尾数位需要左移18位,并将剩余的低位尾数位的数值设定为0。
当FP16的指数位值为0时,其数值是0.xxxxx,由于FP16的指数位最小能表示的是2-14,转换为FP37后指数位必然不为0,因此尾数位除了要左移18位之外,还需要继续左移直到最高位的1被省略掉。指数数值需要加上0x70再减去(额外的左移值–1)。接着确认FP16的尾数位的最高位为1的位置,在进行尾数位转换时,需要左移直至该最高位的1被省去,再将剩余的低位尾数位的数值设定为0。
切换模块308根据前级的控制信号或是判断操作数的数据格式,来确定操作数为浮点数或定点数,并根据操作数为浮点数或定点数,决定对阶模块301、移位模块304、规格化模块306、舍入模块307、舍入模块1101与转换模块1102的开启或关闭。如果操作数为浮点数,则将上述模块切换至开启模式,即如图11所示,各模块执行如前所述的操作。当操作数为定点数时,切换模块308控制对阶模块301、移位模块304、规格化模块306、舍入模块307、舍入模块1101与转换模块1102处于关闭模式,其中对阶模块301、移位模块304、规格化模块306、舍入模块307的控制方式同前一个实施例。图12示出舍入模块1101与转换模块1102的控制方式,舍入模块1101前配置第四解复用器1201,转换模块1102前配置第五解复用器1202。切换模块308的控制信号控制第四解复用器1201去耦舍入模块1101,并控制第五解复用器1202去耦转换模块1102,故图11的乘累加装置在乘累加定点数时的实际运行模块亦如图10所示,仅乘法模块302、第一加法模块303及第二加法模块305运行中,用以计算操作数的尾数位。
此实施例不仅引入对阶的概念,仅用一组硬件便有效地涵盖浮点数的乘累加运算与定点数的乘累加运算,更可转换运算结果的精度,以利后续模块进行运算。此实施例至少可以支援FP32、TF32、FP16、BF16、INT16、INT8、INT4等数据格式的乘累加运算。
图13示出本发明另一个实施例的乘累加多个操作数的方法的流程图。在步骤1301中,判断操作数为浮点数或是定点数。
如果是浮点数,执行步骤1302,识别多个操作数的指数的基准值。此步骤可以采用统一对阶方案。统一对阶是以所有待计算的操作数为单位,比较两操作数的指数大小,输出较大者,该较大的指数数值再进入下一级中比较,直到选择出n个操作数的指数最大者作为基准值。
此步骤还可以采用集群对阶方案。先找出n个操作数中指数位的最大值,以该指数数值作为基准值,将指数数值与基准值的差值在阈值范围内操作数集合成一个集群,集群内的操作数的指数数值较为接近,直接累加不影响精度。接着持续针对尚未分群的操作数以上述方式分群,如此循环操作直到所有操作数都分群完毕。
在步骤1303中,对多个操作数中相乘的两操作数的尾数进行乘法运算,以获得尾数的部分积。具体来说,此步骤先对两尾数进行Radix-4的Booth压缩,再对压缩后的尾数进行累加,以获得部分积。
在步骤1304中,将上述的部分积进行累加运算,以获得两操作数的尾数的乘积结果。至此获得两操作数的乘积。
在步骤1305中,根据基准值与两操作数的指数的差值,对乘积结果进行移位。如果步骤1302采用统一对阶方式,则在此步骤中所有操作数的指数位全部向基准值看齐,其尾数位相应做移位。移位后,所有操作数的尾数位均为基准值减去一个位数。如果步骤1302采用集群对阶方式,由于基准值是同一集群中的操作数的指数位最大值,因此集群中的操作数的指数位全部向相应的基准值对齐,其尾数位相应做移位。每个集群均以此方式进行移位。
在步骤1306中,对移位后的乘积结果进行加法运算,以获得n个操作数的乘累加结果。在此步骤中,先将移位后的尾数转换成补码,对移位后的乘积结果的补码进行Booth压缩,再对压缩后的乘积结果进行累加,以获得乘累加结果,最后将乘累加结果补码转换成乘累加结果原码。
当步骤1302采用集群对阶时,步骤1303至步骤1306均以集群为单位进行操作,最后在步骤1306中将每个集群的乘累加结果加总起来,成为n个操作数的乘累加结果。
在步骤1307中,规格化尾数的乘累加结果。通过指数数值的加减运算,使得尾数左移或右移,以还原在步骤1305中的移位。
在步骤1308中,对规格化后的乘积结果进行舍入运算,例如进行向偶数舍入、向零舍入、向下舍入或向上舍入,舍入方式依实际需要而定。至此获得浮点数的乘累加运算结果。
如果操作数为定点数,执行步骤1309,对多个操作数中相乘的两操作数的尾数进行乘法运算,以获得尾数的部分积。具体来说,此步骤先对两尾数进行Radix-4的Booth压缩,再对压缩后的尾数进行累加,以获得部分积。
在步骤1310中,将上述的部分积进行累加运算,以获得两操作数的尾数的乘积结果。至此获得两操作数的乘积。
在步骤1311中,对乘积结果进行加法运算,以获得n个操作数的乘累加结果。在此步骤中,先将尾数转换成补码,对乘积结果的补码进行Booth压缩,再对压缩后的乘积结果进行累加,以获得乘累加结果,最后将乘累加结果补码转换成乘累加结果原码。至此获得定点数的乘累加运算结果。
由于定点数的乘累加运算与浮点数的乘法运算的原理相同,均是先计算出部分和再累加所有的部分和,因此步骤1303(步骤1309)、步骤1304(步骤1310)及步骤1306(步骤1311)可在浮点数与定点数的乘累加运算中被复用。
此实施例以浮点数乘累加运算的流程为基础,利用对阶的概念,使得浮点数的部分运算与定点数运算相同,如此便可复用部分步骤进行定点数的乘累加运算,以达到精简乘累加运算的技术效果。
图14示出本发明另一个实施例的乘累加多个操作数的方法的流程图。在步骤1401中,判断操作数为浮点数或是定点数。
如果是浮点数,执行步骤1402,识别多个操作数的指数的基准值。此步骤同样可以采用统一对阶方案或是集群对阶方案。在步骤1403中,对多个操作数中相乘的两操作数的尾数进行乘法运算,以获得尾数的部分积。在步骤1404中,将上述的部分积进行累加运算,以获得两操作数的尾数的乘积结果。至此获得两操作数的乘积。
在步骤1405中,对两操作数的乘积进行舍入运算,例如进行向偶数舍入、向零舍入、向下舍入或向上舍入,舍入方式依实际需要而定。
在步骤1406中,根据基准值与两操作数的指数的差值,对乘积结果进行移位。在步骤1407中,对移位后的乘积结果进行加法运算,以获得n个操作数的乘累加结果。当步骤1402采用集群对阶时,步骤1403至步骤1407均以集群为单位进行操作,最后在步骤1407中将每个集群的乘累加结果加总起来,成为n个操作数的乘累加结果。在步骤1408中,规格化尾数的乘累加结果。在步骤1409中,对规格化后的乘积结果进行舍入运算。
在步骤1410中,转换乘累加结果的精度,例如将乘累加结果的精度提高为FP37,供后级模块可以基于更高精度的操作数进行运算。至此获得浮点数的乘累加运算结果。
如果操作数为定点数,执行步骤1411,对多个操作数中相乘的两操作数的尾数进行乘法运算,以获得尾数的部分积。在步骤1412中,将上述的部分积进行累加运算,以获得两操作数的尾数的乘积结果。在步骤1413中,对乘积结果进行加法运算,以获得n个操作数的乘累加结果。至此获得定点数的乘累加运算结果。
由于定点数的乘累加运算与浮点数的乘法运算的原理相同,均是先计算出部分和再累加所有的部分和,因此步骤1403(步骤1411)、步骤1404(步骤1412)及步骤1407(步骤1413)可在浮点数与定点数的乘累加运算中被复用。
此实施例以浮点数乘累加运算的流程为基础,利用对阶的概念,使得浮点数的部分运算与定点数运算相同,如此便可复用部分步骤进行定点数的乘累加运算,以达到精简乘累加运算的技术效果。此实施例更可转换运算结果的精度,以利后续运算。
本发明另一个实施例为一种计算机可读存储介质,其上存储有乘累加多个操作数的方法的计算机程序代码,当所述计算机程序代码由处理器运行时,执行如图13或图14所示各实施例的方法。
本发明另一个实施例为一种计算机程序产品,包括乘累加多个操作数的计算机程序,其特征在于,所述计算机程序被处理器执行时实现图13或图14所示的方法的步骤。
本发明另一个实施例为一种计算机装置,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现图13或图14所示的方法的步骤。
本发明以浮点数乘累加运算为基础,利用对阶的概念,使得浮点数的部分运算与定点数运算相同,如此便可复用部分相同运算进行定点数的乘累加运算,达到涵盖浮点数的乘累加运算与定点数的乘累加运算的技术效果。
根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款A1.一种乘累加多个操作数的装置,其特征在于,所述装置包括:对阶模块,用以识别所述多个操作数的指数的基准值;乘法模块,用以对所述多个操作数中相乘的两操作数的尾数进行乘法运算,以获得所述尾数的部分积;第一加法模块,用以将所述部分积进行累加运算,以获得所述两操作数的尾数的乘积结果;移位模块,用以根据所述基准值与所述两操作数的指数的差值,对所述乘积结果进行移位;第二加法模块,用以对移位后的乘积结果进行加法运算,以获得所述多个操作数的乘累加结果。
条款A2.根据条款A1所述的装置,还包括切换模块,用以判断所述多个操作数为浮点数或定点数。
条款A3.根据条款A2所述的装置,其中当所述多个操作数为定点数时,所述切换模块控制所述对阶模块关闭。
条款A4.根据条款A2所述的装置,其中当所述多个操作数为定点数时,所述切换模块控制所述移位模块关闭。
条款A5.根据条款A4所述的装置,还包括第一解复用器,响应所述切换模块的控制信号以去耦所述移位模块。
条款A6.根据条款A2所述的装置,还包括规格化模块,用以规格化所述乘累加结果。
条款A7.根据条款A6所述的装置,还包括第二解复用器,当所述多个操作数为定点数时,响应所述切换模块的控制信号以去耦所述规格化模块。
条款A8.根据条款A6所述的装置,还包括舍入模块,用以对规格化后的乘累加结果进行舍入运算。
条款A9.根据条款A8所述的装置,还包括第三解复用器,当所述多个操作数为定点数时,响应所述切换模块的控制信号以去耦所述舍入模块。
条款A10.根据条款A2所述的装置,还包括舍入模块,用以对所述乘积结果进行舍入运算,其中所述移位模块对舍入后的乘积结果进行移位。
条款A11.根据条款A10所述的装置,还包括第四解复用器,当所述多个操作数为定点数时,响应所述切换模块的控制信号以去耦所述舍入模块。
条款A12.根据条款A1所述的装置,其中所述乘法模块包括:压缩单元,用以对所述尾数进行Booth压缩;华莱士树单元,用以对压缩后的尾数进行累加,以获得所述部分积。
条款A13.根据条款A1所述的装置,其中所述第二加法模块包括:压缩单元,用以对移位后的乘积结果进行Booth压缩;华莱士树单元,用以对压缩后的乘积结果进行累加,以获得所述乘累加结果。
条款A14.根据条款A1所述的装置,其中所述基准值为所述多个操作数的指数的最大值。
条款A15.根据条款A1所述的装置,其中所述对阶模块对所述多个操作数分群,所述基准值为每一集群中的操作数的指数的最大值,所述乘法模块、所述第一加法模块、所述移位模块以集群为单位进行运算。
条款A16.根据条款A1所述的装置,还包括:转换模块,用以转换所述乘累加结果的精度。
条款A17.根据条款A16所述的装置,其中转换后的精度为FP37,FP37的指数位为8位,FP37的尾数位为28位。
条款A18.一种集成电路装置,包括根据条款A1至17任一项所述的装置。
条款A19.一种板卡,包括根据条款A18所述的集成电路装置。
条款A20.一种乘累加多个操作数的方法,其特征在于,所述方法包括:识别所述多个操作数的指数的基准值;对所述多个操作数中相乘的两操作数的尾数进行乘法运算,以获得所述尾数的部分积;将所述部分积进行累加运算,以获得所述两操作数的尾数的乘积结果;根据所述基准值与所述两操作数的指数的差值,对所述乘积结果进行移位;对移位后的乘积结果进行加法运算,以获得所述多个操作数的乘累加结果。
条款A21.根据条款A20所述的方法,还包括:规格化所述乘累加结果;对规格化后的乘累加结果进行舍入运算。
条款A22.根据条款A20所述的方法,还包括:判断所述多个操作数为浮点数或定点数;其中,当所述多个操作数为定点数时,执行所述乘法步骤、所述累加步骤及所述加法步骤。
条款A23.根据条款A20所述的方法,还包括:转换所述乘累加结果的精度。
条款A24.根据条款A23所述的方法,其中转换后的精度为FP37,FP37的指数位为8位,FP37的尾数位为28位。
条款A25.一种计算机可读存储介质,其上存储有乘累加多个操作数的方法的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行条款A20至24任一项所述的方法。
条款A26.一种计算机程序产品,包括乘累加多个操作数的计算机程序,其特征在于,所述计算机程序被处理器执行时实现条款A20至24任一项所述方法的步骤。
条款A27.一种计算机装置,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现条款A20至24任一项所述方法的步骤。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (27)
1.一种乘累加多个操作数的装置,其特征在于,所述装置包括:
对阶模块,用以识别所述多个操作数的指数的基准值;
乘法模块,用以对所述多个操作数中相乘的两操作数的尾数进行乘法运算,以获得所述尾数的部分积;
第一加法模块,用以将所述部分积进行累加运算,以获得所述两操作数的尾数的乘积结果;
移位模块,用以根据所述基准值与所述两操作数的指数的差值,对所述乘积结果进行移位;
第二加法模块,用以对移位后的乘积结果进行加法运算,以获得所述多个操作数的乘累加结果。
2.根据权利要求1所述的装置,还包括切换模块,用以判断所述多个操作数为浮点数或定点数。
3.根据权利要求2所述的装置,其中当所述多个操作数为定点数时,所述切换模块控制所述对阶模块关闭。
4.根据权利要求2所述的装置,其中当所述多个操作数为定点数时,所述切换模块控制所述移位模块关闭。
5.根据权利要求4所述的装置,还包括第一解复用器,响应所述切换模块的控制信号以去耦所述移位模块。
6.根据权利要求2所述的装置,还包括规格化模块,用以规格化所述乘累加结果。
7.根据权利要求6所述的装置,还包括第二解复用器,当所述多个操作数为定点数时,响应所述切换模块的控制信号以去耦所述规格化模块。
8.根据权利要求6所述的装置,还包括舍入模块,用以对规格化后的乘累加结果进行舍入运算。
9.根据权利要求8所述的装置,还包括第三解复用器,当所述多个操作数为定点数时,响应所述切换模块的控制信号以去耦所述舍入模块。
10.根据权利要求2所述的装置,还包括舍入模块,用以对所述乘积结果进行舍入运算,其中所述移位模块对舍入后的乘积结果进行移位。
11.根据权利要求10所述的装置,还包括第四解复用器,当所述多个操作数为定点数时,响应所述切换模块的控制信号以去耦所述舍入模块。
12.根据权利要求1所述的装置,其中所述乘法模块包括:
压缩单元,用以对所述尾数进行Booth压缩;
华莱士树单元,用以对压缩后的尾数进行累加,以获得所述部分积。
13.根据权利要求1所述的装置,其中所述第二加法模块包括:
压缩单元,用以对移位后的乘积结果进行Booth压缩;
华莱士树单元,用以对压缩后的乘积结果进行累加,以获得所述乘累加结果。
14.根据权利要求1所述的装置,其中所述基准值为所述多个操作数的指数的最大值。
15.根据权利要求1所述的装置,其中所述对阶模块对所述多个操作数分群,所述基准值为每一集群中的操作数的指数的最大值,所述乘法模块、所述第一加法模块、所述移位模块以集群为单位进行运算。
16.根据权利要求1所述的装置,还包括:
转换模块,用以转换所述乘累加结果的精度。
17.根据权利要求16所述的装置,其中转换后的精度为FP37,FP37的指数位为8位,FP37的尾数位为28位。
18.一种集成电路装置,包括根据权利要求1至17任一项所述的装置。
19.一种板卡,包括根据权利要求18所述的集成电路装置。
20.一种乘累加多个操作数的方法,其特征在于,所述方法包括:
识别所述多个操作数的指数的基准值;
对所述多个操作数中相乘的两操作数的尾数进行乘法运算,以获得所述尾数的部分积;
将所述部分积进行累加运算,以获得所述两操作数的尾数的乘积结果;
根据所述基准值与所述两操作数的指数的差值,对所述乘积结果进行移位;
对移位后的乘积结果进行加法运算,以获得所述多个操作数的乘累加结果。
21.根据权利要求20所述的方法,还包括:
规格化所述乘累加结果;
对规格化后的乘累加结果进行舍入运算。
22.根据权利要求20所述的方法,还包括:
判断所述多个操作数为浮点数或定点数;
其中,当所述多个操作数为定点数时,执行所述乘法步骤、所述累加步骤及所述加法步骤。
23.根据权利要求20所述的方法,还包括:
转换所述乘累加结果的精度。
24.根据权利要求23所述的方法,其中转换后的精度为FP37,FP37的指数位为8位,FP37的尾数位为28位。
25.一种计算机可读存储介质,其上存储有乘累加多个操作数的方法的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行权利要求20至24任一项所述的方法。
26.一种计算机程序产品,包括乘累加多个操作数的计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求20至24任一项所述方法的步骤。
27.一种计算机装置,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求20至24任一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210622935.8A CN117193712A (zh) | 2022-06-01 | 2022-06-01 | 乘累加操作数的方法及其设备 |
PCT/CN2022/138472 WO2023231363A1 (zh) | 2022-06-01 | 2022-12-12 | 乘累加操作数的方法及其设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210622935.8A CN117193712A (zh) | 2022-06-01 | 2022-06-01 | 乘累加操作数的方法及其设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117193712A true CN117193712A (zh) | 2023-12-08 |
Family
ID=88983874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210622935.8A Pending CN117193712A (zh) | 2022-06-01 | 2022-06-01 | 乘累加操作数的方法及其设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117193712A (zh) |
WO (1) | WO2023231363A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111816B (zh) * | 2014-06-25 | 2017-04-12 | 中国人民解放军国防科学技术大学 | Gpdsp中多功能simd结构浮点融合乘加运算装置 |
CN107305485B (zh) * | 2016-04-25 | 2021-06-08 | 中科寒武纪科技股份有限公司 | 一种用于执行多个浮点数相加的装置及方法 |
WO2017185203A1 (zh) * | 2016-04-25 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行多个浮点数相加的装置及方法 |
CN107168678B (zh) * | 2017-05-09 | 2020-10-27 | 清华大学 | 一种乘加计算装置及浮点乘加计算方法 |
CN111930674B (zh) * | 2020-08-10 | 2024-03-05 | 中国科学院计算技术研究所 | 乘累加运算装置及方法、异构智能处理器及电子设备 |
-
2022
- 2022-06-01 CN CN202210622935.8A patent/CN117193712A/zh active Pending
- 2022-12-12 WO PCT/CN2022/138472 patent/WO2023231363A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023231363A1 (zh) | 2023-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021078212A1 (zh) | 用于向量内积的计算装置、方法和集成电路芯片 | |
TWI763079B (zh) | 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置 | |
CN111008003B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110515589B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
WO2021078210A1 (zh) | 用于神经网络运算的计算装置、方法、集成电路和设备 | |
CN110515590B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
TWI774093B (zh) | 用於轉換資料類型的轉換器、晶片、電子設備及其方法 | |
CN111381808A (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN109740730B (zh) | 运算方法、装置及相关产品 | |
CN111258541B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN117193712A (zh) | 乘累加操作数的方法及其设备 | |
WO2021073512A1 (zh) | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 | |
CN209895329U (zh) | 乘法器 | |
CN109558109B (zh) | 数据运算装置及相关产品 | |
CN110515586B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110647307B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN111381875B (zh) | 数据比较器、数据处理方法、芯片及电子设备 | |
CN112711440A (zh) | 用于转换数据类型的转换器、芯片、电子设备及其方法 | |
WO2021073511A1 (zh) | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 | |
CN209962284U (zh) | 乘法器、装置、芯片及电子设备 | |
CN210006082U (zh) | 乘法器、装置、神经网络芯片及电子设备 | |
CN210006083U (zh) | 乘法器、装置、芯片及电子设备 | |
CN110378478B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111381802B (zh) | 数据比较器、数据处理方法、芯片及电子设备 | |
CN111258546B (zh) | 乘法器、数据处理方法、芯片及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |