算数逻辑单元、浮点数乘法计算的方法及设备与流程

文档序号:33775923发布日期:2023-04-18 23:02阅读:65来源:国知局
算数逻辑单元、浮点数乘法计算的方法及设备与流程

本技术涉及数据处理,特别涉及一种算数逻辑单元、浮点数乘法计算的方法及设备。


背景技术:

1、浮点数是计算机中一种重要的数字格式,在计算机中浮点数由符号、阶码和尾数三部分组成。为了满足不同业务对数据精度的不同需求,计算机通常需要具有对不同精度的浮点数进行乘法运算的能力。

2、目前,为了实现对不同精度浮点数的乘法运算需求,通常会对应不同的精度设计多个独立的乘法器。例如,在需要处理器同时支持半精度、单精度和双精度的乘法运算时,则可以在处理器等芯片中设计独立的至少三个乘法器,使其分别满足半精度、单精度和双精度浮点数的乘法运算需求。

3、在实现本技术的过程中,发明人发现相关技术至少存在以下问题:

4、在芯片中独立设计多个分别支持不同精度的乘法器,当系统只使用其中一种精度的乘法器计算时,其余精度的乘法器处于闲置状态,十分浪费计算资源。


技术实现思路

1、本技术提供了一种逻辑计算单元、浮点数乘法计算的方法及设备,可以解决相关技术中浪费计算资源的技术问题。所述技术方案如下:

2、第一方面,本技术提供了一种算数逻辑单元,该算数逻辑单元,用于计算机芯片,算数逻辑单元包括至少一个调整电路和至少一个乘加器。其中,每个调整电路,用于获取输入浮点数,根据所述输入浮点数,调整得到输出浮点数,其中,所述输入浮点数为第一精度的浮点数,所述输出浮点数为第二精度的浮点数,将所述输出浮点数输入至所述乘加器。每个乘加器,用于根据所述输出浮点数获得第一乘积结果,将第一乘积结果匹配为第一精度的浮点数的格式,输出第一匹配结果。

3、通过调整电路将不同精度的输入浮点数转换为同一精度的输出浮点数,将不同精度的输入浮点数的乘法运算,转换为了同一精度的输出浮点数的乘法运算,这样,在计算设备中不必设计多种独立的不同精度乘法器,有效地节省了计算资源。

4、上述计算机芯片可以为中央处理器(central processing unit,cpu)芯片、图形处理器(graphics processing unit,gpu)芯片、现场可编程门阵列(field-programmablegate array,fpga)芯片、专用集成电路(application specific intergrated circuits,asic)芯片或其他人工智能(artificial intelligence,ai)芯片等,本技术不对计算机芯片的具体类型进行限制。

5、算数逻辑单元(arithmetic and logic unit,alu)是指在运算器中执行算数运算(包括加减乘除等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)的实体电路。本技术的算数逻辑单元可以是专门用于进行浮点数运算的算数逻辑单元,可以称为浮点数alu。

6、调整电路和乘加器是算数逻辑单元中的实体电路,调整电路与乘加器电性连接。乘加器用于对某一精度(如第一精度)的浮点数进行运算,而调整电路的作用是将非第二精度的浮点数转换为第二精度的浮点数,并输出给乘加器。从而,使得一种精度的乘加器,就可以支持多种精度浮点数的运算。

7、上述所示的方案,在算数逻辑单元进行运算时,调整电路获取第一精度的输入浮点数,然后,根据输入浮点数调整得到第二精度的输出浮点数。然后,将这输出浮点数输入至乘加器中。乘加器对第二精度浮点数进行乘加运算,得到第一乘积结果,然后,将第一乘积结果匹配为第一精度的浮点数的格式,并输出第一匹配结果。该第一匹配结果即为第一精度的输入浮点数的乘积结果。

8、需要说明的是,调整电路在将输出浮点数输入至乘加器时,可以是按照乘数组合的形式输入,即将多个输出浮点数划分成多组输出浮点数的组合,并依次输入至乘加器中。该输出浮点数的组合中可以包括分别来自两个输入浮点数的两个输出浮点数,也可以包括分别来自多个输入浮点数的多个输出浮点数,本技术对此不做限定。

9、例如,算数逻辑单元需要进行输入浮点数c和d的乘法计算,而调整电路将c拆分为c1和c2,将d拆分为d1和d2,则c×d=(c1+c2)×(d1+d2)=c1×d1+c1×d2+c2×d1+c2×d2。可见,将输入浮点数c和d的乘法计算,转换为4组输出浮点数的乘法计算。则调整电路可以确定4组输出浮点数组合,即c1和d1、c1和d2、c2和d1以及c2和d2,并将4组输出浮点数组合依次输入到乘加器中。则乘加器可以对4组输出浮点数的乘积进行累加,得到第一乘积结果。

10、为了便于说明,第一精度浮点数的精度可以表示为fp(1+e+m),第二精度浮点数的精度可以表示为fp(1+e+m),其中,1表示符号位宽,e表示输入浮点数的阶码位宽,e表示输出浮点数的阶码位宽,m表示输入浮点数的尾数位宽,m表示输出浮点数的尾数位宽。另外,对于输入浮点数和输出浮点数来说,其尾数部分均还包括一位隐藏的整数位。e、m、e、m均为正整数。

11、下面介绍几种典型的第一精度浮点数和第二精度浮点数:

12、如果第二精度浮点数的阶码位宽为9bit,例如,fp(1+9+10)和fp(1+9+11)。则第一精度浮点数可以为阶码位宽小于9bit的任何浮点数,例如,fp(1+5+10)、fp(1+8+7)和fp(1+8+23)。

13、如果第二精度浮点数的阶码位宽为12bit,例如,fp(1+12+10)、fp(1+12+11)和fp(1+12+13)。则第一精度浮点数可以为阶码位宽小于12bit的任何浮点数,例如,fp(1+5+10)、fp(1+8+7)、fp(1+8+23)和fp(1+11+52)。

14、需要说明的是,第一精度浮点数fp(1+5+10)、fp(1+8+7)、fp(1+8+23)和fp(1+11+52)还可以分别表示为半精度浮点数(half-precision floating-point format,fp16)、bfloat16、单精度浮点数(single-precision floating-point format,fp32)和双精度浮点数(double-precision floating-point format,fp64)。第二精度浮点数fp(1+9+10)、fp(1+9+11)、fp(1+12+10)、fp(1+12+11)和fp(1+12+13)还可以分别表示为fp20、fp21、fp23、fp24和fp26。

15、在一种可能的实现方式中,所述每个调整电路接收的输入浮点数的精度不同,所述每个乘加器接收的来自每个调整电路的输出浮点数的精度相同。

16、上述所示的方案,为了使算数逻辑单元可以兼容多种不同精度浮点数的运算,可以设置多个调整电路,每个调整电路接收的输入浮点数的精度不同,输出的输出浮点数的精度相同。也即,多个调整电路接收不同精度的输入浮点数,但可以输出同一精度的输出浮点数。

17、由于多个调整电路的输出浮点数的精度均相同,所以,可以只用一种精度的乘加器即可以进行后续的运算。该乘加器可以称为第二精度乘加器。

18、在实际应用中,算数逻辑单元在接收输入浮点数时,还可以接收模式信息,该模式信息可以指示对应的调整电路,则算数逻辑单元可以根据模式信息,将输入浮点数输入至对应的调整电路中。

19、在一种可能的实现方式中,所述输出浮点数的阶码位宽大于所述输入浮点数的阶码位宽。

20、上述所示的方案,输入浮点数的阶码位宽小于输出浮点数的阶码位宽,是为了保证拆分或转换出的输出浮点数的阶码实际值不超出输出浮点数的阶码位的表示范围。

21、应理解,如果输入浮点数的阶码位宽大于输出浮点数的阶码位宽,那么输入浮点数的阶码实际值的表示范围大于输出浮点数的阶码实际值的表示范围。则如果输入浮点数的阶码实际值超过输出浮点数的表示范围,那么,该输入浮点数的阶码实际值在输出浮点数的阶码位中无法表示。

22、而如果输入浮点数的阶码位宽等于输出浮点数的阶码位宽,那么虽然输入浮点数和输出浮点数的阶码实际值的表示范围相等。但是,当涉及到将输入浮点数拆分为多个输出浮点数的操作时,需要对输出浮点数的阶码实际值进行相应的调整,则这一调整可能会造成输出浮点数的阶码位无法表示阶码实际值。比如,输入浮点数的阶码实际值为表示范围的下限值,则如果对该阶码实际值的调整为减小某一数值,则调整后的阶码实际值超过的输出浮点数的阶码实际值的表示范围。

23、在另一种可能的实现方式中,输出浮点数的阶码位宽也可以小于输入浮点数的阶码位宽,则此时,可以额外存储一个阶码偏移值,该阶码偏移值和输出浮点数的阶码位存储的数值一起,共同表示该输出浮点数的阶码实际值,以解决输入浮点数的阶码实际值超过输出浮点数的阶码位的表示范围的问题。

24、在一种可能的实现方式中,所述每个乘加器包括运算子电路和格式处理子电路。所述运算子电路,用于接收所述输出浮点数,根据所述输出浮点数获得所述第一乘积结果。所述格式处理子电路,用于接收模式信号和所述第一乘积结果,根据所述模式信号将所述第一乘积结果匹配为第一精度的浮点数的格式,输出第一匹配结果,所述模式信号用于指示所述格式处理子电路输出精度,所述输出精度为所述输入浮点数的精度。

25、上述所示的方案,乘加器包括运算子电路和格式处理子电路,运算子电路和格式处理子电路连接。运算子电路用于对输入的输出浮点数组合进行乘加运算得到第一乘积结果,并将第一乘积结果输出给格式处理子电路。格式处理子电路接收第一乘积结果以及用于指示目标精度的模式信息,然后,格式处理子电路将第一乘积结果匹配为目标精度(如第一精度,即输入浮点数的精度)的浮点数格式,并输出第一匹配结果。

26、当调整电路根据输入浮点数得到一组输出浮点数组合时,运算子电路接收该一组输出浮点数,并对该一组输出浮点数中的浮点数进行乘法运算,得到第一乘积结果。然后,将该第一乘积结果输出给格式处理子电路,格式处理子电路将第一乘积结果匹配为模式信息指示的精度的浮点数格式,并输出第一匹配结果。

27、当调整电路根据输入浮点数得到多组输出浮点数组合时,该多组输出浮点数组合依次输入到运算子电路中。对于第一个输入的输出浮点数组合,运算子电路对该浮点数组合中的浮点数进行乘法运算,得到第一中间计算结果。对于第二个输入的输出浮点数组合,运算子电路对第二个输入的输出浮点数组合中的浮点数进行乘法运算,并将乘积结果与第一中间计算结果进行加法运算,得到第二中间计算结果。同样的,对于后续每个输入的输出浮点数组合,运算子电路对此次输入的输出浮点数组合中的浮点数进行乘法运算,并将乘积结果与上一中间计算结果进行加法运算,得到此次对应的中间计算结果。最后,当该多组输出浮点数组合均输入到运算子电路后,运算子电路即得到第一乘积结果。然后,将该第一乘积结果输出给格式处理子电路,格式处理子电路将第一乘积结果匹配为模式信息指示的精度的浮点数格式,并输出第一匹配结果。

28、在一种可能的实现方式中,所述输入浮点数的尾数位宽小于或等于所述输出浮点数的尾数位宽,则所述每个调整电路调整得到的所述输出浮点数的数量与接收到的所述输入浮点数的数量相同,每个输入浮点数与每个输出浮点数一一对应,每个输入浮点数与所述每个输入浮点数对应的输出浮点数表示的数值相同。

29、上述所示的方案,当输入浮点数的尾数位宽小于或等于输出浮点数的尾数位宽时,输入浮点数的尾数,可以在输出浮点数的尾数部分进行完整的表示。

30、以输入浮点数的阶码位宽小于输出浮点数的阶码位宽为例,对将第一精度的输入浮点数转换为第二精度的输出浮点数的转换过程进行说明:

31、符号位:使输出浮点数的符号值与输入浮点数的符号值相等。

32、阶码位:使输出浮点数的阶码实际值与输入浮点数的阶码实际值相等。可以理解的是,阶码实际值相等,并不意味着阶码存储值相等。由于阶码实际值等于阶码存储值减去固定偏移值,而不同精度的浮点数对应的固定偏移值一般不同(与阶码位宽有关),由于输出浮点数的阶码位宽大于输入浮点数的阶码位宽,所以输出浮点数和输入浮点数的阶码存储值并不相等。

33、尾数位:使输出浮点数的尾数与输入浮点数的尾数相等,由于输入浮点数的尾数位宽小于或等于输出浮点数的尾数位宽,则还需要在输出浮点数的后m-m位补0,其中,m为输出浮点数的尾数位宽,m为输入浮点数的尾数位宽。

34、在一种可能的实现方式中,所述输入浮点数的尾数位宽大于所述输出浮点数的尾数位宽,则所述每个调整电路调整得到的所述输出浮点数的数量大于接收到的所述输入浮点数的数量,每个输入浮点数对应多个输出浮点数,每个输入浮点数与所述每个输入浮点数对应的多个输出浮点数之和表示的数值相同。

35、上述所示的方案,当输入浮点数的尾数位宽大于输出浮点数的尾数位宽时,输入浮点数的尾数不能在一个输出浮点数的尾数部分进行完整的表示。因此,需要将输入浮点数拆分为多个输出浮点数,由多个输出浮点数的尾数部分共同表示一个输入浮点数的尾数。

36、每个输入浮点数可以拆分为n个输出浮点数,其中,n为(m+1)/(m+1)向上取整的值,m+1表示输入浮点数的尾数位宽加上一位隐藏的整数位,m+1表示输出浮点数的尾数位宽加上一位隐藏的整数位。当然,每个输入浮点数的尾数还可以拆分出大于n个输出浮点数,本技术对此不做限定。

37、以输入浮点数的阶码位宽小于输出浮点数的阶码位宽为例,对将第一精度的输入浮点数转换为第二精度的输出浮点数的转换过程进行说明:

38、符号位:使每个输出浮点数的符号值与输入浮点数的符号值相等。

39、尾数位:将输入浮点数的尾数拆分为多个尾数段,并使每个输出浮点数的尾数位存储一个尾数段。需要注意的是,输出浮点数可以按照多种方式存储来自于输入浮点数的尾数段,下面提供两种可选的方式:

40、第一种方式:将来自于输入浮点数的尾数段先进行左规操作至最高位为1,然后,将最高位1作为输出浮点数的整数位隐藏,并将尾数段中的其余尾数作为小数部分存储。可以理解的是,如果尾数段的最高位本来就为1,则就不需进行左规操作。如果无法左规操作至最高位为0,则说明该尾数段为0。

41、第二种方式:将来自于输入浮点数的尾数段的最高位直接作为输出浮点数的整数位,并将尾数段中的其余尾数作为小数部分存储。在这种情况下,拆分出的输出浮点数可能不为规约数。

42、阶码位:使每个输出浮点数的阶码实际值等于输入浮点数的阶码实际值减去阶码偏移量,其中,阶码偏移量等于输出浮点数所包含的尾数段中的最高位在输入浮点数的尾数位中所处的位次与输入浮点数最高位的位次之差。

43、在一种可能的实现方式中,所述每个输入浮点数对应的输出浮点数的个数根据所述输入浮点数的尾数位宽以及所述输出浮点数的尾数位宽确定。

44、所示的方案,可以设每个输入浮点数对应的输出浮点数的个数为n,m+1表示输入浮点数的尾数位宽加上一位隐藏的整数位,m+1表示输出浮点数的尾数位宽加上一位隐藏的整数位。

45、则n为(m+1)/(m+1)向上取整的值。

46、因此,当m小于或等于m时,即输入浮点数的尾数位宽小于或等于输出浮点数的尾数位宽时,一个输入浮点数转换为一个输出浮点数。

47、当m大于m时,即输入浮点数的尾数位宽大于输出浮点数的尾数位宽时,一个输入浮点数拆分为n个输出浮点数,n为大于或等于2的整数。

48、在一种可能的实现方式中,所述每个调整电路,具体用于:将每个输入浮点数的尾数拆分为多个尾数段,每个尾数段的位宽小于或等于所述输出浮点数的尾数位宽。根据每个输入浮点数的多个尾数段,确定每个输入浮点数对应的多个输出浮点数。

49、其中,该输出浮点数的尾数位宽是指包含了一位整数隐藏位的尾数位宽。

50、本技术实施例所示的方案,当输入浮点数的尾数位宽大于输出浮点数的尾数位宽时,输入浮点数的尾数不能在一个输出浮点数的尾数部分进行完整的表示。因此,需要将输入浮点数拆分为多个输出浮点数,由多个输出浮点数的尾数部分共同表示一个输入浮点数的尾数。

51、每个输入浮点数的尾数可以拆分为n个尾数段,其中,n为(m+1)/(m+1)向上取整的值,m+1表示输入浮点数的尾数位宽加上一位隐藏的整数位,m+1表示输出浮点数的尾数位宽加上一位隐藏的整数位。当然,每个输入浮点数的尾数还可以拆分出大于n个尾数段,本技术对此不做限定。

52、在将输入浮点数的尾数拆分为n个尾数段时,可以按照任意方式进行拆分,但是要保证拆分出的尾数段小于或等于输出浮点数的尾数位宽。例如,在拆分时,可以是拆分出n个等长度的尾数段,也可以是先尽可能拆分出与输出浮点数的尾数位宽相等的尾数段,本技术对拆分的具体方式不做限定。

53、对于不同的尾数段,包含该尾数段的输出浮点数的阶码实际值也不同。具体的,输出浮点数的阶码实际值等于输入浮点数的阶码实际值减去阶码偏移量,其中,阶码偏移量等于输出浮点数所包含的尾数段中的最高位在输入浮点数的尾数位中所处的位次与输入浮点数最高位的位次之差。

54、另外,对于拆分出的每个输出浮点数,其符号值与输入浮点数的符号值相等。

55、在一种可能的实现方式中,所述算数逻辑单元包括至少两个调整电路,所述至少两个调整电路中的第一调整电路用于获取第一精度的输入浮点数,第二调整电路用于获取第三精度的输入浮点数,所述第一调整电路将所述第一精度的输入浮点数调整为第二精度的输出浮点数,所述第二调整电路将所述第三精度的输入浮点数调整为第二精度的输出浮点数。所述至少一个乘加器,根据接收到的所述第二精度的输出浮点数,获得第二乘积结果,根据所述第二精度的输出浮点数所对应的调整电路的精度信息,将所述第二乘积结果匹配为对应精度的浮点数的格式,输出第二匹配结果。

56、其中,第三精度与第一精度不同。

57、本技术实施例所示的方案,在实际应用中,算数逻辑单元可能会涉及到不同精度浮点数之间的乘法运算,例如,第一精度的浮点数和第三精度的浮点数的乘法运算。则在处理时,第一调整电路可以将获取到的第一精度的输入浮点数调整为第二精度的输出浮点数,而第二调整电路可以将获取到的第三精度的输入浮点数调整为第二精度的输出浮点数。然后,第一调整电路和第二调整电路可以输出第二精度的输出浮点数至乘加器中,乘加器进行乘加运算以及格式匹配的处理,最终,得到第二匹配结果。

58、该第二匹配结果的精度可以是第一精度,也可以是第三精度,还可以是乘加器输出两个精度的第二匹配结果,分别为第一精度和第三精度。相应的,在将第二乘积结果匹配为第二匹配结果时,可以是根据第一调整电路的精度信息(即第一精度)将第二乘积结果匹配为第一精度的匹配结果,也可以是根据第二调整电路的精度信息(即第三精度)将第二乘积结果匹配为第三精度的匹配结果,还可以是根据第一调整电路和第二调整电路的精度信息将第二乘积结果分别匹配为第一精度的匹配结果和第三精度的匹配结果。

59、在一种可能的实现方式中,所述输入浮点数的格式满足电气与电子工程师协会(institute of electrical and electronics engineers,ieee)二进制浮点数算术标准,所述输出浮点数的格式不满足所述ieee二进制浮点数算术标准。

60、本技术实施例所示的方案,输入浮点数的格式可以满足ieee二进制浮点数算数标准。

61、而由于输出浮点数仅仅是算数逻辑单元在计算的中间过程产生的数值,其不需要在存储器中进行存储,因此输出精度浮点数的格式可以不满足ieee二进制浮点数算数标准。

62、输出精度浮点数可以根据应用需求进行阶码位宽和尾数位宽的自定义,例如,可以定义输出浮点数的阶码位宽较大,而尾数位宽相对较小。由于在浮点数的运算中,浮点数的阶码间只存在比较、加减等较为简单的逻辑,因此增加阶码位宽而引起增加的芯片面积较少,而浮点数的尾数间存在乘法运算,所需芯片面积与尾数位宽的平方成正比,因此尾数位宽较小,一定程度上可以减少芯片面积。

63、第二方面,本技术提供了一种浮点数乘法计算的方法,用于计算机芯片中的算数逻辑单元,该方法包括:

64、获取输入浮点数,根据所述输入浮点数,调整得到输出浮点数,其中,所述输入浮点数为第一精度的浮点数,所述输出浮点数为第二精度的浮点数;

65、根据所述输出浮点数获得第一乘积结果,将所述第一乘积结果匹配为第一精度的浮点数的格式,输出第一匹配结果。

66、在一种可能的实现方式中,所述输出浮点数的阶码位宽大于所述输入浮点数的阶码位宽。

67、在一种可能的实现方式中,所述根据所述输出浮点数获得所述第一乘积结果,将所述第一乘积结果匹配为第一精度的浮点数的格式,输出第一匹配结果,包括:

68、根据所述输出浮点数获得所述第一乘积结果;

69、接收模式信号,根据所述模式信号将所述第一乘积结果匹配为第一精度的浮点数的格式,输出第一匹配结果,所述模式信号用于指示所述输入浮点数的精度。

70、在一种可能的实现方式中,所述输入浮点数的尾数位宽小于或等于所述输出浮点数的尾数位宽,则根据所述输入浮点数,调整得到与所述输入浮点数数量相同的输出浮点数,每个输入浮点数与所述每个输入浮点数对应的输出浮点数表示的数值相同。

71、在一种可能的实现方式中,所述输入浮点数的尾数位宽大于所述输出浮点数的尾数位宽,则根据所述输入浮点数,调整得到的输出浮点数的数量大于所述输入浮点数的数量,每个输入浮点数对应多个输出浮点数,每个输入浮点数与所述每个输入浮点数对应的多个输出浮点数之和表示的数值相同。

72、在一种可能的实现方式中,所述每个输入浮点数对应的输出浮点数的个数根据所述输入浮点数的尾数位宽以及所述输出浮点数的尾数位宽确定。

73、在一种可能的实现方式中,所述调整步骤,包括:

74、将每个输入浮点数的尾数拆分为多个尾数段,每个尾数段的位宽小于或等于所述输出浮点数的尾数位宽;

75、根据每个输入浮点数的多个尾数段,确定每个输入浮点数对应的多个输出浮点数。

76、在一种可能的实现方式中,所述输入浮点数的格式满足电气与电子工程师协会ieee二进制浮点数算术标准,所述输出浮点数的格式不满足所述ieee二进制浮点数算术标准。

77、第三方面,提供了一种浮点数乘法计算的装置,该装置包括:

78、调整模块,用于获取输入浮点数,根据所述输入浮点数,调整得到输出浮点数,其中,所述输入浮点数为第一精度的浮点数,所述输出浮点数为第二精度的浮点数;

79、匹配模块,用于根据所述输出浮点数获得第一乘积结果,将所述第一乘积结果匹配为第一精度的浮点数的格式,输出第一匹配结果。

80、在一种可能的实现方式中,所述输出浮点数的阶码位宽大于所述输入浮点数的阶码位宽。

81、在一种可能的实现方式中,所述匹配模块,用于:

82、根据所述输出浮点数获得所述第一乘积结果;

83、接收模式信号,根据所述模式信号将所述第一乘积结果匹配为第一精度的浮点数的格式,输出第一匹配结果,所述模式信号用于指示所述输入浮点数的精度。

84、在一种可能的实现方式中,所述输入浮点数的尾数位宽小于或等于所述输出浮点数的尾数位宽,则根据所述输入浮点数,调整得到与所述输入浮点数数量相同的输出浮点数,每个输入浮点数与每个输出浮点数一一对应,每个输入浮点数与所述每个输入浮点数对应的输出浮点数表示的数值相同。

85、在一种可能的实现方式中,所述输入浮点数的尾数位宽大于所述输出浮点数的尾数位宽,则根据所述输入浮点数,调整得到的输出浮点数的数量大于所述输入浮点数的数量,每个输入浮点数对应多个输出浮点数,每个输入浮点数与所述每个输入浮点数对应的多个输出浮点数之和表示的数值相同。

86、在一种可能的实现方式中,所述每个输入浮点数对应的输出浮点数的个数根据所述输入浮点数的尾数位宽以及所述输出浮点数的尾数位宽确定。

87、在一种可能的实现方式中,所述调整模块,具体用于:

88、将每个输入浮点数的尾数拆分为多个尾数段,每个尾数段的位宽小于或等于所述输出浮点数的尾数位宽;

89、根据每个输入浮点数的多个尾数段,确定每个输入浮点数对应的多个输出浮点数。

90、在一种可能的实现方式中,所述输入浮点数的格式满足电气与电子工程师协会ieee二进制浮点数算术标准,所述输出浮点数的格式不满足所述ieee二进制浮点数算术标准。

91、第四方面,提供了一种芯片,该芯片包括至少一个如第一方面任一项所述的算数逻辑单元。

92、第五方面,提供了一种计算设备,该计算设备包括主板以及如第四方面所述的芯片;

93、所述芯片设置在所述主板上。

94、第六方面,提供了一种计算机可读存储介质,包括指令,当所述计算机可读存储介质中的指令由计算设备执行时,所述计算设备执行如第二方面所述的方法。

95、第七方面,提供了一种包含指令的计算机程序产品,当所述计算机程序产品在计算设备上运行时,所述计算设备执行如第二方面所述的方法。

96、第八方面,提供了一种运算器,该运算器包括如上述第一方面任一项所述的算数逻辑单元。

97、第九方面,提供了一种计算设备,包括存储器和处理器;

98、所述存储器用于存储计算机程序;

99、当所述处理器运行所述存储器中的计算机程序时,所述处理器执行所述第二方面任一项所述的方法。

100、第十方面,提供了一种计算设备,包括处理器和算数逻辑单元;

101、所述处理器用于获取输入浮点数,根据所述输入浮点数,调整得到输出浮点数,其中,所述输入浮点数为第一精度的浮点数,所述输出浮点数为第二精度的浮点数,将所述输出浮点数输入至所述算数逻辑单元;

102、所述算数逻辑单元,用于根据所述输出浮点数获得第一乘积结果,将所述第一乘积结果匹配为第一精度的浮点数的格式,输出第一匹配结果。

103、本技术实施例所示的方案,可以由处理器对输入浮点数进行精度调整,将第一精度的输入浮点数调整为第二精度的输出浮点数,并输出至算数逻辑单元。

104、算数逻辑单元可以根据输出浮点数获取第一乘积结果,并将第一乘积结果匹配为第一精度的浮点数的格式,输出第一匹配结果。算数逻辑单元的具体功能,可以参照第一方面所述的乘加器部分,在此不再赘述。

105、在一种可能的实现方式中,所述输出浮点数的阶码位宽大于所述输入浮点数的阶码位宽。

106、在一种可能的实现方式中,所述算数逻辑单元包括至少一个乘加器,每个乘加器对应的精度均为所述第二精度。

107、在一种可能的实现方式中,所述输入浮点数的格式满足电气与电子工程师协会ieee二进制浮点数算术标准,所述输出浮点数的格式不满足所述ieee二进制浮点数算术标准。

108、本技术实施例提供的技术方案带来的有益效果是:

109、本技术实施例所示的方案,通过调整电路将不同精度的输入浮点数调整为同一精度的输出浮点数,从而,将不同精度的输入浮点数的乘法运算,转换为了同一精度的输出浮点数的乘法运算,这样,在计算设备中不必额外设计多种独立的不同精度乘法器,有效地节省了计算资源。

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