包括乘累加器的芯片、终端和控制方法与流程
未命名
07-23
阅读:105
评论:0
1.本技术涉及芯片领域,特别是涉及一种包括乘累加器的芯片、终端和控制方法。
背景技术:
2.在人工智能处理器芯片的核心计算单元:向量/矩阵运算单元的设计中,用于乘累加(multiply accumulate,mac)运算的乘累加器作为基本的运算单元,是诸如图形处理器(graphics processing unit,gpu)、人工智能(artificial intelligence,ai)芯片、中央处理器(central processing unit,cpu)、现场可编程门阵列(field-programmable gate array,fpga)、专用集成电路(application specific integrated circuits,asic)等芯片上的核心部件。
3.乘累加器的硬件资源占芯片总面积的绝大部分比重,其设计方案的优劣直接影响着芯片的算力和成本。然而,芯片高频使用的操作数的数据格式主要有定点数和浮点数,不同的定点数和浮点数可以具有不同的精度(操作数的位宽,可通过比特数体现)。
4.在相关设计芯片的技术中,为了匹配需要处理的操作数的不同精度,一般会分别针对不同操作位宽设计各自对应的乘累加器,使得相关芯片上集成了分别对应不同操作位宽的多个乘累加器,导致该芯片的芯片面积和功耗较大。
技术实现要素:
5.为了解决上述技术问题,本技术提供了一种包括乘累加器的芯片、终端和控制方法,有效控制了乘累加器在芯片中占用空间,对芯片面积缩小和功耗降低都带来了有力的支撑。
6.本技术实施例公开了如下技术方案:
7.一方面,本技术实施例提供了一种包括乘累加器的芯片,所述乘累加器包括乘法模块,所述乘法模块包括n个基本乘法单元和n个基本加法单元,所述基本乘法单元用于对输入所述乘累加器的操作数进行乘法运算中的乘法操作,所述基本加法单元用于对输入所述乘累加器的操作数进行乘法运算中的加法操作;
8.所述基本乘法单元包括k个整型乘法器,所述基本乘法单元用于对一对第一位宽的乘数,或者对k对第二位宽的乘数进行所述乘法操作;所述基本加法单元包括k个整型加法器,所述基本加法单元用于对一对所述第一位宽的加数,或者对k对所述第二位宽的加数进行所述加法操作,所述第二位宽小于所述第一位宽,所述第一位宽和所述第二位宽为所述乘累加器所涉及操作数的位宽确定的;
9.所述基本乘法单元用于根据所述k个整型乘法器的输出确定所述乘法操作的第一计算结果;所述基本加法单元用于根据所述k个整型加法器的输出确定所述加法操作的第二计算结果;
10.所述乘法模块用于根据所述n个基本乘法单元和所述n个基本加法单元分别输出的所述第一计算结果和所述第二计算结果确定所述乘法运算的乘法运算结果。
11.另一方面,本技术实施例提供了一种终端,所述终端中包括如上述方面提供的芯片。
12.又一方面,本技术实施例提供了一种控制方法,所述方法应用于如上述方面提供的芯片,所述方法包括:
13.获取待进行乘累加运算的操作数;
14.根据所述操作数对应的位宽大小,从所述基本乘法单元和所述基本加法单元中确定对应所述操作数的目标整型乘法器和目标整型加法器;其中,若所述操作数包括位宽大小为所述第一位宽的一对第一目标操作数,将所述k个整型乘法器作为所述第一目标操作数的目标整型乘法器,将所述k个加法器作为所述第一目标操作数的目标整型加法器;若所述操作数包括位宽大小为所述第二位宽的一对第二目标操作数,将所述k个整型乘法器中的一个整型乘法器作为所述第二目标操作数的目标整型乘法器,将所述k个整型加法器中的一个整型加法器作为所述第二目标操作数的目标整型加法器;
15.基于所述目标整型乘法器输出的第一计算结果和所述目标整型加法器输出的第二计算结果,确定所述操作数在所述乘累加运算中的乘法运算结果;
16.根据所述乘法运算结果确定所述操作数对应的乘累加运算结果。
17.由上述技术方案可以看出,在芯片所包括的乘累加器中设置了包括n个基本乘法单元和n个基本加法单元的乘法模块,该乘法模块用于进行乘累加运算中的乘法运算。在基本乘法单元中设置了k个整型乘法器,这k个整型乘法器可以为一对第一位宽的乘数,或者能够分别为k对第二位宽的乘数进行乘法运算中的乘法操作。在基本加法单元中设置了k个整型加法器,这k个整型加法器可以为一对第一位宽的加数,或者能够分别为k对第二位宽的加数进行乘法运算中的加法操作。由此在该乘累加器提供乘累加运算时,不论操作数是定点数还是浮点数,以及操作数的不同位宽大小,通过该乘累加器的乘法模块均能够得到乘法运算对应的乘法运算结果,可以支持n对高位宽的操作数,或者n
×
k对低位宽的操作数的乘法运算。通过上述硬件结构的设置,使得乘累加器的硬件电路资源能够被高效复用,而且针对低位宽的操作数也不会出现硬件资源的浪费。从而无需在芯片中专门设计针对不同位宽的多个乘累加器,有效控制了乘累加器在芯片中占用空间,对芯片面积缩小和功耗降低都带来了有力的支撑。
附图说明
18.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本技术实施例提供的一种芯片中乘累加器的乘法模块的结构示意图;
20.图2为本技术实施例提供的一种乘法模块中基本加法单元的结构示意图;
21.图3为本技术实施例提供的一种乘法模块中基本乘法单元的结构示意图;
22.图4为本技术实施例提供的一种乘法模块中基本乘法单元的计算示意图;
23.图5为本技术实施例提供的一种芯片中乘累加器的结构示意图;
24.图6为本技术实施例提供的一种芯片中乘累加器的加法模块的结构示意图;
25.图7为本技术实施例提供的一种芯片中乘累加器的输入解码模块的结构示意图;
26.图8为一种相关技术提供的芯片中乘累加器的结构示意图;
27.图9为另一种相关技术提供的芯片中乘累加器的结构示意图;
28.图10为本技术实施例提供的一种控制方法的方法流程图;
29.图11为本技术实施例提供的一种电子设备的结构示意图;
30.图12为本技术实施例提供的一种服务器的结构示意图。
具体实施方式
31.下面结合附图,对本技术的实施例进行描述。
32.首先对本技术涉及的若干个名词进行简介:
33.乘累加运算(multiply accumulate,mac)是在数字信号处理器或一些微处理器中的特殊运算。实现此运算操作的硬件电路单元,被称为“乘数累加器”。这种运算的操作,将第一操作数a和第二操作数b相乘后,将乘积与第三操作数c相加的运算,也即cout=a*b+c。
34.乘累加器:在数字信号处理器或一些微处理器中,用于实现乘累加运算的硬件电路单元。乘累加器作为基本的计算单元,在cpu、gpu和ai等芯片中应用广泛,例如ai、大数据处理、新空口技术等应用场景。
35.定点数(fixed-point number):计算机中采用的一种数的表示方法,约定机器中所有数据的小数点位置是固定不变的。在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。一般常称前者为定点小数,后者为定点整数。
36.浮点数(floating-point number):计算机中采用的另一种数的标识方法,与科学计数法相似,任意一个二进制数n,浮点数n的二进制表示为:
37.符号位指数位尾数位
38.公式表示为:
39.n=(-1)s×f×2e
;
40.其中,s为符号位,e为指数部分(也称阶码exponent,是一个整数),f为尾数部分(尾数mantissa属于浮点数的小数部分)。当浮点数的符号位上为0时,表示浮点数n为正,当符号位上为1时,表示浮点数n为负。这种表示方法相当于数的小数点位置随比例因子的不同,而在一定范围内可以自由浮动。
41.对于浮点数n1和n2,有:
[0042][0043]
浮点数n1和n2的乘积为:
[0044][0045]
由上式可知,浮点数的乘法运算中包含了定点数的乘法和加法,即需要对指数部分进行加法操作,对尾数部分进行乘法操作。
[0046]
浮点数n1和n2的加和为:
[0047]
[0048][0049]
由上式可知,浮点数的加法运算中包含了定点数的加法,即需要对指数部分进行加法操作,对尾数部分(根据指数大小)进行移位对齐和加法操作。
[0050]
另外,由于浮点数的符号位只有1位,因此对乘积的符号处理可以使用简单的逻辑比较而不是算数(加法)运算。
[0051]
目前云端推理/训练处理器芯片高频使用的数据格式主要有:fp16、bf16、fp32、int8,其中int8为定点数,也记为整型数,包括有符号sint8和无符号uint8,而浮点数包括fp16、bf16以及fp32,格式如下:
[0052][0053]
由上表可见,作为操作数的浮点数和定点数基于数据量的大小,会涉及不同的位宽,即占用乘累加芯片不同宽度的数据位,在相关技术中,为了对不同位宽的操作数提供乘累加运算,会在芯片中设计对应不同位宽的多个乘累加器,需要在芯片中占用较大的面积,功耗也很大。以具有多个乘累加器的ai芯片为例,这些因素直接会制约ai芯片的可制造性、良品率、散热和性能。也即,一方面硬件结构面积更大导致芯片面积更大,芯片面积更大导致成本变高、可制造性变差且良品率变低;另一方面,硬件结构面积更大导致功耗变大,功耗变大会导致散热变多,太高的温度会影响芯片的整体性能。
[0054]
可见,目前亟需一个通用性、运算性能、芯片面积等多方面因素能够兼顾的硬件架构。因此,本技术提出了一种包括乘累加器的芯片,其具备通用性、可伸缩性、面积更小、应用更广、性能更优的特性,适用于gpu、ai芯片、cpu、dsp、以及专用芯片等产品中。
[0055]
图1为本技术实施例提供的一种芯片中的乘累加器,乘累加器用于实现乘累加运算,乘累加运算需要先进行乘法运算,再基于乘法运算的结果进行加法运算,最终得到乘累加运算的乘累加运算结果。
[0056]
本技术实施例所提供的包括乘累加器的芯片可以应用于人工智能(artificial intelligence,ai),ai是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
[0057]
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通
等几大方向。本技术实施例所提供的包括乘累加器的芯片可以应用于上述各个方向。
[0058]
在图1中主要关注乘累加器10中的乘法模块100。该乘法模块100用于实现上述乘累加运算中的乘法运算。如前所述,对于作为操作数的浮点数,浮点数间的乘法运算包括了乘法操作和加法操作,即进行乘法运算的一对浮点数(即两个浮点数),对该对浮点数的指数部分进行加法操作,对尾数部分进行乘法操作。
[0059]
故该乘法模块100包括了n个基本乘法单元(如图1中的基本乘法单元1-基本乘法单元n)和n个基本加法单元(如图1中的基本加法单元1-基本加法单元n),其中,n的大小可以基于设计需求,n最小为1,也可以是大于1的整数。
[0060]
其中,n的大小取决于芯片的设计需求或处理指标,n的大小决定了乘累加器所支持高位宽的操作数的数量,即乘累加器的乘法模块可以支持n对高位宽的操作数,或者n
×
k对低位宽的操作数的乘法运算。
[0061]
这里指出的位宽高低可以基于操作数在进行乘法运算时的乘数、加数的数据量大小来确定,例如浮点数fp32的尾数部分有23bit的数据量,被处理时需要占用较多的数据位,属于高位宽的操作数,例如fp16、bf16等浮点数的尾数部分最大只有10bit的数据量,被处理时需要占用较少的数据位,属于低位宽的操作数。
[0062]
在实现通过单个基本乘法单元和基本加法单元为高位宽操作数提供乘法运算的基础上,本技术对单个基本乘法单元和基本加法单元的硬件结构进行了设计,每个基本乘法单元中包括k个整型乘法器,每个基本加法单元中包括k个整型加法器。在图1中,基于基本乘法单元1作为示例进结构放大,其包括了整型乘法器1-整型乘法器k一共k个整型乘法器,并基于基本加法单元1作为示例进结构放大,其包括了整型加法器1-整型加法器k一共k个整型加法器。
[0063]
每个整型乘法器均可以独立为一对第二位宽的乘数提供乘法运算中的乘法操作,每个整型加法器均可以独立为一对第二位宽的加法提供乘法运算中的加法操作。
[0064]
由此,一个基本乘法单元和一个基本加法单元可以独立为一对第一位宽的输入数(如乘数、加数)提供乘法运算,也可以同时为k对第二位宽的输入数(如乘数、加数)提供乘法运算。例如支持n对fp32,或4n对fp16/bf16/tf32,或4n对int8的乘累加运算中的乘法运算(包括乘法操作和加法操作)。
[0065]
使得本技术中的乘累加器的乘法模块不仅可以实现对不同位宽的输入数的复用,还可以提高对低位宽的输入数的复用效率,避免了针对高位宽的硬件结构在处理低位宽输入数时的硬件资源浪费。
[0066]
其中,第一位宽和第二位宽是基于乘累加器所涉及操作数的位宽确定的,即操作数中需要进行乘法操作和加法操作的输入数所需占用数据位的宽度确定的。不同的应用场景和计算需求可以确定出不同的第一位宽和第二位宽。第一位宽所标识的数据位宽度大于第二位宽所标识的数据位宽度。例如在一种可能的实现方式中,第一位宽为24个数据位,第二位宽为12个数据位,其中一个数据位对应一个比特(bit)。
[0067]
需要说明的是,在本技术实施例中,第一位宽和第二位宽并不限定为是某一个定值,也可以用于标识一个位宽范围,例如第一位宽可以是在位宽a至位宽b之间,第二位宽可以为位宽b以下。其中位宽a的数值大于位宽b的数值。
[0068]
基本乘法单元中的每个整型乘法器包括两个输入端,用于输入需要进行乘法操作
的两个乘数,其中两个输入端分别记为第一输入端和第二输入端,两个乘数分别记为第一乘数和第二乘数。其中,第一输入端用于输入根据操作数确定的第一乘数,第二输入端用于输入根据操作数确定的第二乘数。
[0069]
例如针对作为操作数的一对浮点数的乘法操作,第一乘数和第二乘数可以基于这对浮点数的尾数部分确定。
[0070]
基本加法单元中的每个整型加法器包括两个输入端,用于输入需要进行加法操作的两个加数,其中两个输入端分别记为第三输入端和第四输入端,两个加数分别记为第一加数和第二加数。其中,第三输入端用于输入根据操作数确定的第一加数,第四输入端用于输入根据操作数确定的第二加数。
[0071]
例如针对作为操作数的一对浮点数的加法操作,第一加数和第二加数可以基于这对浮点数的指数部分确定。
[0072]
基本乘法单元1-n用于根据各自包括的k个整型乘法器的输出确定所述乘法操作的第一计算结果;基本加法单元1-n用于根据各自包括的k个整型加法器的输出确定所述加法操作的第二计算结果。
[0073]
其中,可以基于操作数所对应的位宽大小,确定一个基本乘法单元输出的第一计算结果的数量。
[0074]
当操作数是高位宽时,基本乘法单元需要处理第一位宽的乘数,故需要通过将基本乘法单元中的k个整型乘法器作为一个整体对一对第一位宽的乘数进行乘法操作的处理。输出对应该乘法操作的一个第一计算结果。
[0075]
当操作数是低位宽时,基本乘法单元需要处理第二位宽的乘数,可以通过基本乘法单元中任意一个整型乘法器对一对第二位宽的乘数进行乘法操作的处理。姑基本乘法单元可以输出分别对应k个乘法操作的k个第一计算结果。
[0076]
基于前述芯片高频使用的数据格式,每个基本乘法单元支持1对fp32型浮点数的尾数乘法运算,或者4对fp16/bf16/tf32型浮点数的尾数乘法运算,或者4对int8的乘法运算。
[0077]
乘法模块100用于根据所述n个基本乘法单元和所述n个基本加法单元分别输出的所述第一计算结果和所述第二计算结果确定所述乘法运算的乘法运算结果。
[0078]
在一种可能的实现方式中,基本加法单元的硬件结构可以如图2所示,图2示出的是k=4时的基本加法单元,包括了4个8位+8位整型加法器。
[0079]
由此可见,在芯片中设置本技术的乘累加器,由此在该乘累加器提供乘累加运算时,不论操作数是定点数还是浮点数,以及操作数的不同位宽大小,通过该乘累加器的乘法模块均能够得到乘法运算对应的乘法运算结果,可以支持n对高位宽的操作数,或者n
×
k对低位宽的操作数的乘法运算。通过上述硬件结构的设置,使得乘累加器的硬件电路资源能够被高效复用,而且针对低位宽的操作数也不会出现硬件资源的浪费。从而无需在芯片中专门设计针对不同位宽的多个乘累加器,有效控制了乘累加器在芯片中占用空间,对芯片面积缩小和功耗降低都带来了有力的支撑。
[0080]
接下来基于高位宽的操作数和低位宽的操作数,分别说明在本技术乘累加器中乘法模块不同的乘法操作处理方式。
[0081]
针对高位宽的操作数,基于一个基本乘法单元,可以确定出一对第一位宽的乘数。
为了匹配高位宽的乘数,需要通过一个基本乘法单元中k个整型乘法器配合完成对应的乘法操作。
[0082]
为此,本技术提供了一种基本乘法单元的硬件结构,在一种可能的实现方式中,基本乘法单元包括k=4个整型乘法器,还包括了第一加法器和第二加法器。这4个整型乘法器分别记为第一整型乘法器至第四整型乘法器。
[0083]
如图3所示,所述第一加法器的输入端与第一整型乘法器的输出端以及第二加法器的输出端相连;所述第二加法器的输入端与第二整型乘法器、第三整型乘法器和第四整型乘法器的输出端相连。
[0084]
针对一对第一位宽的目标高位宽乘数,所述整型乘法器用于根据所述第一加法器的输出、所述第二加法器的输出和所述第四整型乘法器的输出确定所述目标高位宽乘数的第一计算结果。
[0085]
以上三个输出可以为第一计算结果的高数据位部分、中数据位部分和低数据位部分,通过拼接得到第一计算结果。
[0086]
接下来以目标高位宽乘数为一对24bit的乘数,分别为第一高位宽乘数和第二高位宽乘数,4个整型乘法器均为12位
×
12位的整型乘法器(即第二位宽为12个数据位)为例,结合图3进行说明。
[0087]
由于整型乘法器的输入位宽对应第二位宽,该第二位宽小于目标高位宽乘数的第一位宽,故需要先将目标高位宽乘数进行拆分。可以基于整型乘法器对应的第二位宽作为拆分粒度,将第一高位宽乘数拆分为高位部分和低位部分,将第二高位宽乘数也拆分为高位部分和低位部分。其中,高位部分包括了所对应高位宽乘数的数据位从第23位到第12位的数据,低位部分包括了所对应高位宽乘数的数据位从第11位到第0位的数据,以上数据位的计数方式为从0开始计数。
[0088]
第一整型乘法器的第一输入端和第二输入端分别用于输入所述第一高位宽乘数的高位部分和所述第二高位宽乘数的高位部分。
[0089]
第二整型乘法器的第一输入端和第二输入端分别用于输入所述第一高位宽乘数的高位部分和所述第二高位宽乘数的低位部分。
[0090]
第三整型乘法器的第一输入端和第二输入端分别用于输入所述第一高位宽乘数的低位部分和所述第二高位宽乘数的高位部分。
[0091]
第四整型乘法器的第一输入端和第二输入端分别用于输入所述第一高位宽乘数的低位部分和所述第二高位宽乘数的低位部分。
[0092]
以上4个整型乘法器的第一输入端和第二输入端所输入的乘数可以如图3所示,以第一高位宽乘数和第二高位宽乘数为fp32型浮点数为例。第一整型乘法器至第四整型乘法器在图4中从左至右排列,可参考图3所示的排列方式。
[0093]
其中[a:b]的定义为第a个数据位至第b个数据位,乘数1为第一高位宽乘数,乘数2为第二高位宽乘数。例如乘数1[23:12]为第一高位宽乘数的数据为从第23位至第12位的数据,乘数2[11:0]为第二高位宽乘数的数据为从第11位至第0位的数据。
[0094]
通过第一加法器(图4中的24位+12位整型加法器)、第二加法器(图4中的24位+24位+12位整型加法器)以及第四整型乘法器的输出,可以拼接出乘数1和乘数2的乘积作为第一计算结果。
[0095]
所述第一加法器用于输出所述第一计算结果中数据位从第47位到第24位的数据,所述第二加法器用于输出所述第一计算结果中数据位从第23位到第12位的数据,所述第四整型乘法器用于输出所述第一计算结果中数据位从第11位到第0位的数据。
[0096]
针对低位宽的操作数,基于一个基本乘法单元,为了针对低位宽的乘数的硬件复用程度,可以对k对第二位宽的乘数进行乘法操作的处理。每个基本乘法单元中k个整型乘法器,每一个整型乘法器均能为一对第二位宽的乘数提供乘法操作的处理。
[0097]
故在一种可能的实现方式中,针对k对第二位宽的目标低位宽乘数,所述基本乘法单元用于根据k个整型乘法器一一对应的确定k对所述目标低位宽乘数的k个第一计算结果。
[0098]
与针对高位宽的操作数的区别在于,对高位宽的操作数进行乘法操作时,需要通过图3示出的结构,基于第一加法器的输出、所述第二加法器的输出和所述第四整型乘法器的输出得到第一计算结果。而对低位宽的操作数进行乘法操作时,由于不存在在输入整型乘法器之前对乘数进行拆分的操作,故将一对第二位宽的乘数分别通过整型乘法器的第一输入端和第二输入端输入后,该整型乘法器的输出端所输出乘积即为该对第二位宽的目标低位宽乘数的第一计算结果。
[0099]
故在通过乘累加器对不同位宽的操作数进行乘法运算时,可以基于操作数的位宽满足第一位宽还是第二位宽,从乘法模块的基本乘法单元的输出中确定出实际标识第一计算结果的输出值。
[0100]
结合图2示出的基本加法单元和图3或图4示出的基本乘法单元所构成的乘法模块中,每个基本乘法单元支持1组fp32型浮点数的尾数乘法运算,或者4组fp16/bf16/tf32型浮点数的尾数乘法运算,或者4组int8型定点数的乘法运算,乘法模块中基本乘法单元的总数为n。每个基本加法模块支持:a)对浮点数进行乘法运算时进行指数位加和的加法操作;b)当进行(有符号)定点数的乘法运算时,计算输入乘数补码(反码加1),乘法模块中基本加法单元的总数也为n。
[0101]
如前所述,乘累加器所提供的乘累加运算包括乘法运算,以及基于乘法运算结果的加法运算。故本技术实施例中的乘累加器还包括加法模块,该加法模块用于执行乘累加器的乘累加运算中的加法运算。该加法模块在乘累加器中的位置例如图5示出的加法模块200。
[0102]
可以针对输入乘累加器的操作数的数据类型,选择该加法模块的不同输入端进行乘累加运算的加法运算。该数据类型用于标识进行乘累加运算的操作数是浮点数还是定点数。
[0103]
接下来基于作为操作数的浮点数,说明如何通过加法模块进行乘累加运算中的加法运算。
[0104]
所述加法模块200包括第一保留进位加法器、第二保留进位加法器和第一全加器。
[0105]
所述第一保留进位加法器用于将m个加数转换为两个第一加数,所述m个加数是根据所述乘法运算结果中与所述浮点数对应的第一运算结果确定的。例如可以如图6示出的m:2保留进位加法器。
[0106]
其中,m的数值基于乘法模块100的输出数量决定,例如可以是n个,也可以是k
×
n个。该第一保留进位加法器的作用是将输入的m个需要进行加法运算的数据转换为两个。
[0107]
所述第二保留进位加法器用于将所述两个第一加数和累加输入链路输入的加数转换为两个第二加数;例如可以如图6示出的3:2保留进位加法器。
[0108]
这两个第二加数除了可以用于通过下一级的第一全加器进行最终的加法运算,同时还可以将这两个第二加数输入至前导零预测这一模块,提前计算后续归一化的移位步长,优化硬件电路时序。
[0109]
所述加法模块200用于根据所述第一全加器通过两个第二加数输出的第一加和结果确定所述加法运算的加法运算结果。
[0110]
接下来基于作为操作数的定点数,说明如何通过加法模块进行乘累加运算中的加法运算。
[0111]
为了针对定点数提供乘累加运算中的加法运算,加法模块200还包括第三保留进位加法器、第二全加器和多路选择器。
[0112]
所述第三保留进位加法器用于l个加数转换为两个第三加数,所述l个加数是根据所述乘法运算结果中与所述定点数对应的第二运算结果确定的。例如可以如图6示出的l:2保留进位加法器。
[0113]
所述第二全加器用于根据所述两个第三加数确定对应定点数的第二加和结果;
[0114]
所述多路选择器用于基于所述操作数中包括的数据类型,根据所述第一加和结果和所述第二加和结果输出所述加法运算结果,所述数据类型用于标识定点数和浮点数。
[0115]
以上不同方式确定出的加法运算结果可以确定为乘累加器的乘累加运算结果进行输出。
[0116]
由此可见,该加法模块200的控制方式与乘法模块100有所区别。针对乘法模块100,主要是基于操作数的位宽大小来确定使用一个基本乘法单元还是使用一个整型乘法器来进行乘法运算中的乘法操作,而针对加法模块200,是基于操作数的数据类型来确定使用哪部分的硬件结构来进行加法运算。
[0117]
如图6所示,针对操作数的数据类型标识为定点数,采用左侧虚线框内的硬件结构进行加法运算,即将乘法模块输出对应定点数的乘法运算结果确定出待进行加法运算的加数,将这些加数输入左侧虚线框中l:2保留进位加法器。
[0118]
针对操作数的数据类型标识为浮点数,采用右侧虚线框内的硬件结构进行加法运算。即将乘法模块输出对应浮点数乘法运算结果确定出待进行加法运算的加数,将这些加数输入右侧虚线框中m:2保留进位加法器。
[0119]
由于乘累加器所需处理的操作数中可以包括定点数和浮点数,针对不同的数据类型,后续的乘法运算和加法运算会有所区别,故为了明确区分操作数的数据类型。
[0120]
在一种可能的实现方式中,所述乘累加器还包括输入解码模块,所述输入解码模块用于基于所述操作数的数据类型对所述操作数据进行分类解码,所述数据类型用于标识定点数和浮点数。该输入解码模块在乘累加器中的位置例如图5示出的输入解码模块300。输入解码模块主要功能是对输入的不同数据类型的操作数进行分类解码,完成以下操作:判断符号位的正负(0为正,1为负),定点数反码转换,浮点数的指数和尾数部分拆分。
[0121]
其中,针对所述操作数中的定点数,所述输入解码模块用于对所述定点数进行反码转换。针对所述操作数中的浮点数,所述输入解码模块用于拆分所述浮点数的指数部分和尾数部分,并用于判断进行乘法运算的每对浮点数的符号位的正负。
[0122]
在一种可能的实现方式中,所述乘累加器还包括尾数对齐模块和归一化模块。该尾数对齐模块和归一化模块在乘累加器中的位置例如图5示出的尾数对齐模块和归一化模块。
[0123]
所述尾数对齐模块的输出端与所述加法模块的输入端相连。
[0124]
所述尾数对齐模块的输入端与所述输入解码模块和所述乘法模块相连,用于根据所述乘法运算结果中与所述浮点数对应的第一运算结果中指数部分的比较情况,对所述第一运算结果的尾数部分进行位移对齐操作。
[0125]
所述归一化模块的输入端与所述加法模块的输出端相连,用于对所述加法运算结果进行归一化处理。
[0126]
其中,尾数对齐模块主要功能是根据输入浮点数的乘法运算结果的指数部分比较情况,对相应的尾数部分进行移位对齐操作,使得每个浮点数的乘积(仍以浮点型数据的格式表示)都统一到相同次幂的指数下,这样所有的尾数都可以直接进入之后的加法运算阶段。此处推荐的移位寄存器的位宽为大于或等于74bit,小于或等于124bit。
[0127]
归一化模块主要功能是对之前运算好的乘累加运算结果基于浮点数及定点数的标准格式进行移位和舍入操作。具体格式标准参考ieee754标准。
[0128]
接下来将结合一些相关技术说明本技术所能实现的技术效果。
[0129]
图8示出了一种相关技术中专用于浮点数的乘累加器的硬件结构,该乘累加器无法对定点数进行乘累加运算,导致芯片中必须再提供额外的空间设置用于为定点数提供乘累加运算的乘累加器。
[0130]
图9示出了一种相关技术中专用于定点数的乘累加器的硬件结构,该乘累加器无法对浮点数进行乘累加运算,导致芯片中必须再提供额外的空间设置用于为浮点数提供乘累加运算的乘累加器。
[0131]
相对于图8、图9示出的相关技术,本技术实施例提供的乘累加器,同时支持定点数与浮点数的乘累加运算,其中针对定点数的乘累加运算所使用的硬件计算资源绝大部分能够复用于浮点数的乘累加运算,支持目前业界主流浮点数据类型(fp16、bf16、fp32、tf32),很好地支撑了推理+训练混合型人工智能处理器对数值运算的需求而没有刻意为定点数额外增加硬件资源开销。
[0132]
基于图8的硬件结构,虽然也能通过复用的方式,对不同位宽的浮点数进行乘累加运算,但是可以看到对应1组fp32型数据的乘法运算硬件资源为4个15位
×
15位整型乘法器加上三个30bit+30bit整型加法器。而本技术实施例提供的乘累加器高效地利用了硬件电路资源,即根据不同数据类型的位宽进行相应的组合,使得1对fp32的浮点数的硬件计算资源可供4对fp16/bf16/tf32的浮点数或4对int8的定点数在乘累加运算时使用。相比之下,图8的硬件资源复用效率不高,在较低精度(较小位宽)数据运算时,由于使用为匹配更高精度数据而设计的较大位宽的标准硬件单元,会造成资源浪费,从芯片整体看会极大地提高设计成本,使用的硬件资源明显多于本技术实施例的乘累加器。同时,对于乘累加运算的中间结果精度的处理通常损耗较多,累加运算流水线级数未达最优。
[0133]
而且,本技术实施例的乘累加运算(包括乘法运算和加法运算)可以在一个时钟周期内完成,保证了运算效率。如图8示出方案中,仅仅乘累加运算中的加法运算就至少需要两个时钟周期才能完成。
[0134]
图10为本技术实施例提供的一种控制方法的方法流程图,所述方法应用于如前述图1-图7所对应实施例中的包括乘累加器的芯片,所述方法包括:
[0135]
s1001:获取待进行乘累加运算的操作数。
[0136]
芯片中的乘累加器可以获取该操作数,例如通过图5示出的输入解码模块。该操作数可以是浮点数,也可以是定点数。
[0137]
s1002:根据所述操作数对应的位宽大小,从所述基本乘法单元和所述基本加法单元中确定对应所述操作数的目标整型乘法器和目标整型加法器。
[0138]
如前所述,可以基于操作数的位宽大小,确定通过整个基本乘法单元或者一个整型乘法器提供乘法运算中的乘法操作。
[0139]
其中,若所述操作数包括位宽大小为所述第一位宽的一对第一目标操作数,将所述k个整型乘法器作为所述第一目标操作数的目标整型乘法器,将所述k个加法器作为所述第一目标操作数的目标整型加法器。
[0140]
若所述操作数包括位宽大小为所述第二位宽的一对第二目标操作数,将所述k个整型乘法器中的一个作为所述第二目标操作数的目标整型乘法器,将所述k个加法器中的一个作为所述第二目标操作数的目标整型加法器。
[0141]
s1003:基于所述目标整型乘法器输出的第一计算结果和所述目标整型加法器输出的第二计算结果,确定所述操作数在所述乘累加运算中的乘法运算结果。
[0142]
s1004:根据所述乘法运算结果确定所述操作数对应的乘累加运算结果。
[0143]
在一种可能的实现方式中,乘累加器中还包括加法模块,可以通过加法模块基于所述乘法运算结果确定出对应的加法运算结果。具体的,可以基于操作数的数据类型选择加法模块中对应的保留进位加法器进行输入,并通过多路选择器确定对应的输出作为加法运算结果。
[0144]
在一种可能的实现方式中,s1004包括:
[0145]
s10041:根据所述乘法运算结果确定用于输入所述乘累加器所包括加法模块的目标加数;
[0146]
s10042:通过所述加法模块确定所述目标加数对应的加法运算结果;
[0147]
s10043:根据所述加法运算结果确定所述乘累加运算结果。
[0148]
在一种可能的实现方式中,s10041包括:
[0149]
确定所述操作数的数据类型,所述数据类型用于标识浮点数或定点数;
[0150]
若所述操作数包括所述浮点数,根据所述乘法运算结果确定用于输入所述第一保留进位加法器的m个加数;
[0151]
若所述操作数包括所述定点数,根据所述乘法运算结果确定用于输入所述第三保留进位加法器的l个加数。
[0152]
在一种可能的实现方式中,所述通过所述加法模块确定所述目标加数对应的加法运算结果,包括:
[0153]
基于所述操作数中包括的数据类型,通过所述加法模块的多路选择器确定输出的所述加法运算结果。
[0154]
在一种可能的实现方式中,在s1001之后,所述方法还包括:
[0155]
通过所述乘累加器的输入解码模块,基于所述操作数的所述数据类型对所述操作
数据进行分类解码;
[0156]
针对所述操作数中的定点数,通过所述输入解码模块对所述定点数进行反码转换;
[0157]
针对所述操作数中的浮点数,通过所述输入解码模块拆分所述浮点数的指数部分和尾数部分,并用于判断进行乘法运算的每对浮点数的符号位的正负。
[0158]
除此之外,该乘累加器还包括尾数对齐模块和归一化模块,具体的控制方式可以参见前述实施例,这里不再一一赘述。
[0159]
由此可见,在芯片所包括的乘累加器中设置了包括n个基本乘法单元和n个基本加法单元的乘法模块,该乘法模块用于进行乘累加运算中的乘法运算。在基本乘法单元中设置了k个整型乘法器,这k个整型乘法器可以为一对第一位宽的乘数,或者能够分别为k对第二位宽的乘数进行乘法运算中的乘法操作。在基本加法单元中设置了k个整型加法器,这k个整型加法器可以为一对第一位宽的加数,或者能够分别为k对第二位宽的加数进行乘法运算中的加法操作。由此在该乘累加器提供乘累加运算时,不论操作数是定点数还是浮点数,以及操作数的不同位宽大小,通过该乘累加器的乘法模块均能够得到乘法运算对应的乘法运算结果,且该乘法模块还能够并行支持k对低位宽的操作数的乘法运算。通过上述硬件结构的设置,使得乘累加器的硬件电路资源能够被高效复用,而且针对低位宽的操作数也不会出现硬件资源的浪费。从而无需在芯片中专门设计针对不同位宽的多个乘累加器,有效控制了乘累加器在芯片中占用空间,对芯片面积缩小和功耗降低都带来了有力的支撑。
[0160]
请参考图11,其示出了本技术一个实施例提供的电子设备的结构示意图。该电子设备用于实施上述实施例中提供的控制方法。可选的,电子设备包括智能手机、服务器、物联网(internet of things,iot)设备、云服务器、端侧设备中的至少一种,具体来讲:
[0161]
电子设备400可以包括rf(radio frequency,射频)电路410、包括有一个或一个以上计算机可读存储介质的存储器420、输入单元430、显示单元440、传感器450、音频电路460、wifi(无线保真)模块470、包括有一个或者一个以上处理核心的处理器480、以及电源490等部件。本领域技术人员可以理解,图11中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
[0162]
rf电路410可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器480处理;另外,将涉及上行的数据发送给基站。通常,rf电路410包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(sim)卡、收发信机、耦合器、lna(low noise amplifier,低噪声放大器)、双工器等。此外,rf电路410还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于gsm(global system of mobile communication,全球移动通讯系统)、gprs(general packet radio service,通用分组无线服务)、cdma(code division multiple access,码分多址)、wcdma(wideband code division multiple access,宽带码分多址)、lte(long term evolution,长期演进)、电子邮件、sms(short messaging service,短消息服务)等。
[0163]
存储器420可用于存储软件程序以及模块,处理器480通过运行存储在存储器420的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器420可主要包括存储程
序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备400的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器420还可以包括存储器控制器,以提供处理器480和输入单元430对存储器420的访问。
[0164]
输入单元430可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元430可包括图像输入设备431以及其他输入设备432。图像输入设备431可以是摄像头,也可以是光电扫描设备。除了图像输入设备431,输入单元430还可以包括其他输入设备432。具体地,其他输入设备432可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
[0165]
显示单元440可用于显示由用户输入的信息或提供给用户的信息以及电子设备400的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元440可包括显示面板441,可选的,可以采用lcd(liquid crystal display,液晶显示器)、oled(organic light-emitting diode,有机发光二极管)等形式来配置显示面板441。
[0166]
电子设备400还可包括至少一种传感器450,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板441的亮度,接近传感器可在电子设备400移动到耳边时,关闭显示面板441和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于电子设备400还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
[0167]
音频电路460、扬声器461,传声器462可提供用户与电子设备400之间的音频接口。音频电路460可将接收到的音频数据转换后的电信号,传输到扬声器461,由扬声器461转换为声音信号输出;另一方面,传声器462将收集的声音信号转换为电信号,由音频电路460接收后转换为音频数据,再将音频数据输出处理器480处理后,经rf电路410以发送给比如另一电子设备,或者将音频数据输出至存储器420以便进一步处理。音频电路460还可能包括耳塞插孔,以提供外设耳机与电子设备400的通信。
[0168]
wifi属于短距离无线传输技术,电子设备400通过wifi模块470可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图11示出了wifi模块470,但是可以理解的是,其并不属于电子设备400的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
[0169]
处理器480是电子设备400的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器420内的数据,执行电子设备400的各种功能和处理数据。可选的,处理器480可包括一个或多个处理核心;优选的,处理器480可集成应用处理器和调制解调处理器,其中,应用处理器
主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器480中。
[0170]
电子设备400还包括如上述图1至图7任一所示的包括乘累加器的芯片482。该包括乘累加器的芯片482可以实现如上述实施例提供的控制方法。图11给出了一种包括乘累加器的芯片482在电子设备400中的连接方式,但包括乘累加器的芯片482在电子设备400中的连接方法不仅限于上述一种方法,还可以与根据需要实现的功能做出适应性的连接,比如,当需要包括乘累加器的芯片482完成图像的处理时,可以直接与图像输入设备431相连。
[0171]
图12示出了本技术一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例中提供的浮点运算的控制方法。具体来讲:
[0172]
所述服务器500包括cpu(central processing unit,中央处理器)501、包括ram(random access memory,随机存取存储器)502和rom(read-only memory,只读存储器)503的系统存储器504,以及连接系统存储器504和中央处理单元501的系统总线505。所述服务器500还包括帮助计算机内的各个器件之间传输信息的基本i/o(input/output,输入/输出)506,和用于存储操作系统513、应用程序514和其他程序模块515的大容量存储设备507。
[0173]
所述基本输入/输出系统506包括有用于显示信息的显示器508和用于用户输入信息的诸如鼠标、键盘之类的输入设备509。其中所述显示器508和输入设备509都通过连接到系统总线505的输入输出控制器510连接到中央处理单元501。所述基本输入/输出系统506还可以包括输入输出控制器510以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器510还提供输出到显示屏、打印机或其他类型的输出设备。
[0174]
所述大容量存储设备507通过连接到系统总线505的大容量存储控制器(未示出)连接到中央处理单元501。所述大容量存储设备507及其相关联的计算机可读介质为服务器500提供非易失性存储。也就是说,所述大容量存储设备507可以包括诸如硬盘或者cd-rom(compact disc read-only memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
[0175]
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom(erasable programmable read-only memory,可擦除可编程只读存储器)、eeprom(electrically erasable programmable read-only memory,电可擦可编程只读存储器)、闪存(flash memory)或其他固态存储其技术,cd-rom、dvd(digital versatile disc,数字通用光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器504和大容量存储设备507可以统称为存储器。
[0176]
根据本技术的各种实施例,所述服务器500还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器500可以通过连接在所述系统总线505上的网络接口单元511连接到网络512,或者说,也可以使用网络接口单元511来连接到其他类型的网络或远程计算机系统(未示出)。
[0177]
所述服务器500还包括如图1至图7任一所示的包括乘累加器的芯片516,乘累加器516与服务器500中的其他模块通过系统总线连接。该包括乘累加器的芯片516可以实现如
上述实施例提供的控制方法。
[0178]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0179]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0180]
以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
技术特征:
1.一种包括乘累加器的芯片,其特征在于,所述乘累加器包括乘法模块,所述乘法模块包括n个基本乘法单元和n个基本加法单元,所述基本乘法单元用于对输入所述乘累加器的操作数进行乘法运算中的乘法操作,所述基本加法单元用于对输入所述乘累加器的操作数进行乘法运算中的加法操作;所述基本乘法单元包括k个整型乘法器,所述基本乘法单元用于对一对第一位宽的乘数,或者对k对第二位宽的乘数进行所述乘法操作;所述基本加法单元包括k个整型加法器,所述基本加法单元用于对一对所述第一位宽的加数,或者对k对所述第二位宽的加数进行所述加法操作,所述第二位宽小于所述第一位宽,所述第一位宽和所述第二位宽为所述乘累加器所涉及操作数的位宽确定的;所述基本乘法单元用于根据所述k个整型乘法器的输出确定所述乘法操作的第一计算结果;所述基本加法单元用于根据所述k个整型加法器的输出确定所述加法操作的第二计算结果;所述乘法模块用于根据所述n个基本乘法单元和所述n个基本加法单元分别输出的所述第一计算结果和所述第二计算结果确定所述乘法运算的乘法运算结果。2.根据权利要求1所述的芯片,其特征在于,若k=4,所述基本乘法单元还包括第一加法器和第二加法器;所述第一加法器的输入端与所述4个整型乘法器中的第一整型乘法器的输出端以及所述第二加法器的输出端相连;所述第二加法器的输入端与所述4个整型乘法器中的第二整型乘法器、第三整型乘法器和第四整型乘法器的输出端相连;针对一对第一位宽的目标高位宽乘数,所述整型乘法器用于根据所述第一加法器的输出、所述第二加法器的输出和所述第四整型乘法器的输出确定所述目标高位宽乘数的第一计算结果。3.根据权利要求2所述的芯片,其特征在于,所述4个整型乘法器为12位
×
12位的整型乘法器,所述一对第一位宽的目标高位宽乘数包括24比特的第一高位宽乘数和24比特的第二高位宽乘数;所述第一整型乘法器的第一输入端和第二输入端分别用于输入所述第一高位宽乘数的高位部分和所述第二高位宽乘数的高位部分,所述高位部分为数据位从第23位到第12位的数据;所述第二整型乘法器的第一输入端和第二输入端分别用于输入所述第一高位宽乘数的高位部分和所述第二高位宽乘数的低位部分,所述低位部分为数据位从第11位到第0位的数据;所述第三整型乘法器的第一输入端和第二输入端分别用于输入所述第一高位宽乘数的低位部分和所述第二高位宽乘数的高位部分;所述第四整型乘法器的第一输入端和第二输入端分别用于输入所述第一高位宽乘数的低位部分和所述第二高位宽乘数的低位部分;所述第一加法器用于输出所述第一计算结果中数据位从第47位到第24位的数据,所述第二加法器用于输出所述第一计算结果中数据位从第23位到第12位的数据,所述第四整型乘法器用于输出所述第一计算结果中数据位从第11位到第0位的数据。
4.根据权利要求1所述的芯片,其特征在于,针对k对第二位宽的目标低位宽乘数,所述基本乘法单元用于根据k个整型乘法器一一对应的确定k对所述目标低位宽乘数的k个第一计算结果。5.根据权利要求1所述的芯片,其特征在于,所述操作数包括浮点数,所述乘累加器还包括加法模块,所述加法模块用于执行所述乘累加器的加法运算;所述加法模块包括第一保留进位加法器、第二保留进位加法器和第一全加器;所述第一保留进位加法器用于将m个加数转换为两个第一加数,所述m个加数是根据所述乘法运算结果中与所述浮点数对应的第一运算结果确定的;所述第二保留进位加法器用于将所述两个第一加数和累加输入链路输入的加数转换为两个第二加数;所述加法模块用于根据所述第一全加器通过两个第二加数输出的第一加和结果确定所述加法运算的加法运算结果。6.根据权利要求5所述的芯片,其特征在于,所述操作数包括定点数,所述加法模块还包括第三保留进位加法器、第二全加器和多路选择器;所述第三保留进位加法器用于l个加数转换为两个第三加数,所述l个加数是根据所述乘法运算结果中与所述定点数对应的第二运算结果确定的;所述第二全加器用于根据所述两个第三加数确定对应定点数的第二加和结果;所述多路选择器用于基于所述操作数中包括的数据类型,根据所述第一加和结果和所述第二加和结果输出所述加法运算结果,所述数据类型用于标识定点数和浮点数。7.根据权利要求1所述的芯片,其特征在于,所述乘累加器还包括输入解码模块,所述输入解码模块用于基于所述操作数的数据类型对所述操作数据进行分类解码,所述数据类型用于标识定点数和浮点数;针对所述操作数中的定点数,所述输入解码模块用于对所述定点数进行反码转换;针对所述操作数中的浮点数,所述输入解码模块用于拆分所述浮点数的指数部分和尾数部分,并用于判断进行乘法运算的每对浮点数的符号位的正负。8.根据权利要求5所述的芯片,其特征在于,所述操作数包括浮点数,所述乘累加器还包括尾数对齐模块和归一化模块;所述尾数对齐模块的输出端与所述加法模块的输入端相连;所述尾数对齐模块的输入端与所述输入解码模块和所述乘法模块相连,用于根据所述乘法运算结果中与所述浮点数对应的第一运算结果中指数部分的比较情况,对所述第一运算结果的尾数部分进行位移对齐操作;所述归一化模块的输入端与所述加法模块的输出端相连,用于对所述加法运算结果进行归一化处理。9.一种终端,其特征在于,所述终端中包括如权利要求1-8任意一项所述的芯片。10.一种控制方法,其特征在于,所述方法应用于如权利要求1-8任意一项所述的芯片,所述方法包括:获取待进行乘累加运算的操作数;根据所述操作数对应的位宽大小,从所述基本乘法单元和所述基本加法单元中确定对应所述操作数的目标整型乘法器和目标整型加法器;其中,若所述操作数包括位宽大小为
所述第一位宽的一对第一目标操作数,将所述k个整型乘法器作为所述第一目标操作数的目标整型乘法器,将所述k个加法器作为所述第一目标操作数的目标整型加法器;若所述操作数包括位宽大小为所述第二位宽的一对第二目标操作数,将所述k个整型乘法器中的一个整型乘法器作为所述第二目标操作数的目标整型乘法器,将所述k个整型加法器中的一个整型加法器作为所述第二目标操作数的目标整型加法器;基于所述目标整型乘法器输出的第一计算结果和所述目标整型加法器输出的第二计算结果,确定所述操作数在所述乘累加运算中的乘法运算结果;根据所述乘法运算结果确定所述操作数对应的乘累加运算结果。11.根据权利要求10所述的方法,其特征在于,所述根据所述乘法运算结果确定所述操作数对应的乘累加运算结果,包括:根据所述乘法运算结果确定用于输入所述乘累加器所包括加法模块的目标加数;通过所述加法模块确定所述目标加数对应的加法运算结果;根据所述加法运算结果确定所述乘累加运算结果。12.根据权利要求11所述的方法,其特征在于,所述根据所述乘法运算结果确定用于输入所述乘累加器所包括加法模块的目标加数,包括:确定所述操作数的数据类型,所述数据类型用于标识浮点数或定点数;若所述操作数包括所述浮点数,根据所述乘法运算结果确定用于输入所述第一保留进位加法器的m个加数;若所述操作数包括所述定点数,根据所述乘法运算结果确定用于输入所述第三保留进位加法器的l个加数。13.根据权利要求12所述的方法,其特征在于,所述通过所述加法模块确定所述目标加数对应的加法运算结果,包括:基于所述操作数中包括的数据类型,通过所述加法模块的多路选择器确定输出的所述加法运算结果。14.根据权利要求10所述的方法,其特征在于,在所述获取待进行乘累加运算的操作数之后,所述方法还包括:通过所述乘累加器的输入解码模块,基于所述操作数的所述数据类型对所述操作数据进行分类解码;针对所述操作数中的定点数,通过所述输入解码模块对所述定点数进行反码转换;针对所述操作数中的浮点数,通过所述输入解码模块拆分所述浮点数的指数部分和尾数部分,并用于判断进行乘法运算的每对浮点数的符号位的正负。
技术总结
本申请实施例公开了一种包括乘累加器的芯片、终端和控制方法,该芯片应用于人工智能场景,芯片的乘累加器中设置了包括N个基本乘法单元和基本加法单元的乘法模块,在基本乘法单元和基本加法单元中中分别设置了K个整型乘法器和整型加法器。由此在该乘累加器提供乘累加运算时,不论操作数是定点数还是浮点数,以及操作数的不同位宽大小,通过该乘累加器的乘法模块可以支持N对高位宽的操作数,或者N
技术研发人员:李东声 任子木
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.01.05
技术公布日:2023/7/22
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:媒体串流装置及媒体串流方法与流程 下一篇:接口注册、执行方法、装置和管理系统与流程
