计算单元、计算核心、数据计算方法、芯片及电子设备与流程

未命名 09-17 阅读:127 评论:0


1.本技术涉及芯片技术领域,具体而言,涉及一种计算单元、计算核心、数据计算方法、芯片及电子设备。


背景技术:

2.ai(artificial intelligence,人工智能)应用有时需要较高的数据精度才能达到有效的结果。为了提高精度,通常会在计算核心里增加更高精度的计算单元,例如在布设有fp32的计算单元的计算核心内,还增设fp64的计算单元来支持fp64精度的数值运算,并在指令集里增加相应的指令。
3.然而,在计算核心内增加更高精度的计算单元,会导致计算核心的面积显著增加。


技术实现要素:

4.本技术实施例的目的在于提供一种计算单元、计算核心、数据计算方法、芯片及电子设备,用以缓解相关技术存在着的,在计算核心内增加更高精度的计算单元,会导致计算核心的面积显著增加的问题。
5.本技术实施例提供了一种计算单元,包括:
6.计算电路,所述计算电路为将fp32计算电路中的指数位加法器配置为支持进行11比特数相加的加法器的计算电路;
7.第一转换电路,分别与所述计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将所述计算电路运算后输出的符号位、指数位和尾数位数据转换为tf64数据;所述tf64数据由两个df32数据f0和f1表征,且tf64数据等于f0+f1*2-20
;所述df32数据为由1比特符号位、11比特指数位、20比特尾数位构成的数据。
8.在上述实现方式中,提出了一种由1比特符号位、11比特指数位、20比特尾数位构成的df32数据,并使用两个df32数据f0和f1表征tf64数据,这样得到的tf64数据在数据范围上与fp64数据一致,精度上比fp64数据稍小(每个df32数据尾数为20比特,故tf64数据精度为40比特,fp64数据的精度为53比特),但是比fp32的精度更高(fp32的精度为23比特)。而在上述实现方式中,通过将fp32计算电路中的指数位加法器配置为支持进行11比特数相加的加法器的计算电路,使得计算电路可以支持df32数据的运算(fp32数据由1比特符号位、8比特指数位、23比特尾数位构成,将指数位加法器配置为支持进行11比特数相加的加法器后,即可完整容纳df32数据,在支持fp32数据的运算的同时,还支持df32数据的计算)。又因为tf64数据是由两个df32数据f0和f1表征,因此上述通过计算单元就可以支持tf64数据的运算。同时,通过配置第一转换电路,可以保证一个计算任务在反复利用计算单元进行计算的过程中,始终可以支持tf64数据的运算。从而相比于传统的仅设置有fp32计算单元的方案,可以支持更高的数据精度。相比于增设fp64的计算单元以提高数据精度的方案,本技术实施例的方案复用了fp32计算电路(即原本的fp32计算单元),仅需增大fp32计算电路中指数位加法器所支持的位数,以及增加对于tf64格式的转换电路即可,增加的面积较增
设fp64的计算单元的方式而言更小,也即面积开销更低。
9.进一步地,所述计算单元还包括:第二转换电路,分别与所述计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将所述计算电路运算后输出的符号位、指数位和尾数位数据转换为df32数据。
10.在上述实现方式中,通过第二转换电路的配置,使得计算单元还可以支持单个df32数据的转换与输出,使得计算单元具有更灵活的处理能力。
11.进一步地,所述计算电路中包括第三转换电路,分别与所述计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将所述计算电路运算后输出的符号位、指数位和尾数位数据转换为fp32数据;所述计算单元还包括:第一多路选择器,输入端分别与所述第一转换电路的第一输出端、所述第三转换电路的输出端连接;其中,所述第一转换电路的第一输出端用于输出所述f0。
12.在上述实现方式中,通过设置第一多路选择器,就可以通过控制第一多路选择器实现fp32数据与f0的选通输出,从而可以使得计算单元在两个输出端口的情况下,满足fp32数据和tf64数据的输出需求。同时通过第三转换电路的设置,可以使得计算单元计算后可以输出fp32格式的数据,从而满足通用场景下的数据格式要求。
13.进一步地,所述计算单元还包括:第四转换电路,分别与所述计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将所述计算电路运算后输出的符号位、指数位和尾数位数据转换为fp64数据;所述第一多路选择器的输入端还与所述第四转换电路的第一输出端连接;所述第四转换电路的第一输出端用于输出所述fp64数据的第32至63位数;第二多路选择器,输入端分别与所述第一转换电路的第二输出端、所述第四转换电路的第二输出端连接;其中,所述第一转换电路的第二输出端用于输出所述f1,所述第四转换电路的第二输出端用于输出所述fp64数据的第0至31位数。
14.在上述实现方式中,通过配置第四转换电路,可以使得计算单元输出的计算结果可以是fp64格式,从而满足通用场景下的数据格式要求。同时,通过第二多路选择器的配置,可以实现tf64数据和fp64数据的另一部分数据的输出,使得计算单元只需配置两个输出端口。
15.进一步地,所述第一转换电路包括:第一转换子单元,输入端分别与所述计算电路的符号位输出端、指数位输出端和标准化后的前20位尾数位输出端连接,以转换得到所述f0;所述第一转换子单元的输出端与所述第一多路选择器的输入端连接;第二转换子单元,输入端分别与所述计算电路的符号位输出端、指数位输出端和所述标准化后的前20位之后的尾数位输出端连接,并进行标准化处理,以转换得到所述f1;所述第二转换子单元的输出端与所述第二多路选择器的输入端连接。
16.在本技术实施例中,tf64数据等于f0+f1*2-20
,对于计算电路计算得到的结果而言,1比特符号位、11比特指数位和前20位尾数位刚好可以构成f0,对于1比特符号位、11比特指数位和前20位之后的尾数位(可能超过20位),则需要再进行标准化处理,以转换为f1。而通过以上电路,则可以有效实现f0和f1的转换。
17.本技术实施例还提供了一种计算核心,包括:至少一个上述任一种的计算单元;数据寄存器,与所述计算单元连接,用于向所述计算单元提供用于进行计算的操作数,以及用于接收并保存所述计算单元输出的数据。
18.上述计算核心可以支持tf64数据的运算,相比于传统的仅设置有fp32计算单元的计算核心,可以支持更高的数据精度。相比于增设fp64的计算单元以提高数据精度的计算核心,本技术实施例的方案复用了fp32计算电路(即原本的fp32计算单元),仅需增大fp32计算电路中指数位加法器所支持的位数,以及增加对于tf64格式的转换电路即可,增加的面积较增设fp64的计算单元的方式而言更小,也即面积开销更低。
19.进一步地,所述计算核心还包括第五转换电路;所述第五转换电路包括第一操作数输入端、第二操作数输入端、f0输出端、f1输出端、分解器以及标准化电路;所述第一操作数输入端、所述第二操作数输入端、所述f0输出端和所述f1输出端分别与所述数据寄存器连接;其中,所述第一操作数输入端用于接收所述数据寄存器传输来的fp64数据第32至63位数,所述第二操作数输入端用于接收所述数据寄存器传输来的fp64数据第0至31位数;所述第一操作数输入端分别与所述f0输出端和所述分解器连接;所述分解器用于从所述fp64数据第32至63位数中提取出符号位和指数位;所述标准化电路的输入端分别与所述分解器以及所述第二操作数输入端连接,以转换得到所述f1;所述标准化电路的输出端与所述f1输出端连接。
20.通过上述实现结构,可以将fp64数据第32至63位数直接输出为f0,将fp64数据的符号位、指数位和剩下的尾数位部分进行处理,转换为f1,实现针对fp64数据到tf64数据的格式转换,弥补了本技术实施例所提供的计算单元无法支持fp64数据到tf64数据的格式转换的不足。
21.本技术实施例还提供了一种数据处理方法,应用于前述计算核心中,所述方法包括:通过所述计算单元或所述第五转换电路将目标格式的待运算数据转换为tf64数据;所述tf64数据由两个df32数据f0和f1表征,且tf64数据等于f0+f1*2-20
;所述df32数据为由1比特符号位、11比特指数位、20比特尾数位构成的数据;通过所述计算单元进行所述tf64数据的数据运算;通过所述计算单元将数据运算结果转换为所述目标格式。
22.通过上述方法,可以复用fp32计算单元执行双精度浮点数的运算(支持tf64数据的运算语),满足计算核心对于更高精度的需求,并降低面积开销。
23.本技术实施例还提供了一种芯片,包括前述任一种的计算核心。
24.本技术实施例还提供了一种电子设备,包括上述芯片。
附图说明
25.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
26.图1为本技术实施例提供的一种计算单元的基本结构示意图;
27.图2为本技术实施例提供的一种计算电路的结构示意图;
28.图3为本技术实施例提供的一种基于图2所示的计算电路实现的计算单元的结构示意图;
29.图4为本技术实施例提供的一种在图2基础上更细化的计算单元的结构示意图;
30.图5为本技术实施例在图3基础上提供的第一种更具体的计算单元的结构示意图;
31.图6为本技术实施例在图3基础上提供的第二种更具体的计算单元的结构示意图;
32.图7为本技术实施例在图3基础上提供的第三种更具体的计算单元的结构示意图;
33.图8为本技术实施例在图3基础上提供的第四种更具体的计算单元的结构示意图;
34.图9为本技术实施例提供的一种计算核心的基本结构示意图;
35.图10为本技术实施例提供的一种计算核心的更具体的结构示意图;
36.图11为本技术实施例提供的一种第五转换单元的基本结构示意图;
37.图12为本技术实施例提供的一种数据处理方法的流程示意图。
具体实施方式
38.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
39.为了缓解相关技术存在着的,在计算核心内增加更高精度的计算单元,会导致计算核心的面积显著增加的问题,本技术实施例中一方面定义一种由1比特符号位、11比特指数位、20比特尾数位构成的df32数据,并定义一种使用两个df32数据f0和f1表征的tf64数据,另一方面提供一种新的计算单元,通过将fp32计算电路中的指数位加法器配置为支持进行11比特数相加的加法器,使得计算电路可以支持df32数据的运算,进而支持tf64数据的运算,从而提高计算单元可以支持的数据精度的同时,无需增设fp64的计算单元,从而降低面积开销。
40.请参见图1所示,本技术实施例中所提供的计算单元包括计算电路和第一转换电路。其中,计算电路为将fp32计算电路中的指数位加法器配置为支持进行11比特数相加的加法器的计算电路。所谓fp32计算电路,是指用于进行fp32数据的计算的电路结构。
41.示例性的,计算电路的结构可以如图2所示,其中src0、src1和src2为三个操作数,每个操作数32比特,分解器用于从操作数中分解出符号位sign、指数位exp和尾数位mant。图中的sign、exp和mant可以通过寄存器实现,以分别存储符号位、指数位和尾数位。xor表征异或电路,add表征加法器,11+11表征进行11比特数之间的加法,mul表征乘法器,24
×
24表征进行24比特数之间的乘法,max是比较电路,用于输出输入数据中的最大值,sub为减法电路,通常采用加法器实现,对于指数部分的减法电路,其内的加法器同样采用支持进行11比特数相加的加法器。shift to 60bits表征移位电路,表征通过移位运算后最终得到60bit的结果,shift to 60bits negate表征移位电路,表征通过移位运算最终得到60bit的结果后对结果进行取反。标准化单元,用于对尾数进行标准化和四舍五入处理。其中,所谓标准化是指,针对从尾数的高位向低位找到第一个数值为1的比特,然后基于最高位于该比特位数之间的差值调整指数(具体而言,在指数部分减去该差值)。例如,对于尾数100000,最高位数值即为1,则指数部分不变;又例如,对于尾数010000,第二高位数值为1,则指数部分需要减一;又例如,对于尾数001000,第三高位数值为1,则指数部分需要减二,并以此类推。所谓四舍五入是指基于输出的数据格式中的尾数要求,对多余的尾数部分进行四舍五入处理,得到满足尾数要求的尾数部分。标准化单元采用现有电路实现,对此本技术实施例不做限制。可以理解,标准化单元中可以仅实现前述标准化处理,而将实现四舍五入的电路放到各转换电路中实现,以满足不同数据格式下的四舍五入要求。
42.可以理解的,图2示出的计算电路结构仅为一种可行示例,在该结构中,可以实现src0与src1相乘后,再与src2相加的操作。在实际应用中,用于进行调整的fp32计算电路也
可以是其他形式,例如具有单独的实现两个操作数相乘的电路,和单独的用于实现两个操作数相加的电路,其同样可以通过将电路中的指数位加法器配置为支持进行11比特数相加的加法器,从而得到适配本技术实施例的方案的计算电路。
43.还可以理解,图2中的11bit、12比特、60比特等仅为示例,实际应用中还可以配置支持更大的数据位数的加法器或寄存器。
44.在本技术实施例中,定义一种数据格式df32,其数据格式为1.11.20,即由1比特的符号位s,11比特的指数位e,20比特的尾数位m构成。df32数据和fp64数据有同样长的指数位。由于df32数据和fp32数据具有相同的比特长度,因此df32数据的加运算和乘运算与fp32数据类似,因此基于前述计算电路就可以支持df32数据之间的运算。此外,本技术实施例中还定义一种tf64数据,一个tf64数据由两个df32数据组成,记为tf64(f0,f1)。tf64数据的数值等于f0+f1*2-20
。这样,由于tf64数据是由df32数据表征的,因此两个tf64数据之间的运算就可以拆解成4个df32数据之间的运算,从而可以利用前述计算电路实现运算。
45.可以理解,在本技术实施例所描述的各种数据格式的数据中,数据的最高位为符号位,其次为指数位,再后才为尾数位。例如,对于df32数据而言,第31位为符号位,第30至20位为指数位,第19至0位为尾数位。对于fp32数据而言,第31位为符号位,第30至23位为指数位,第22至0位为尾数位。对于fp64数据而言,第63位为符号位,第62至52位为指数位,第51至0位为尾数位。
46.在本技术实施例的一些可行实施方式中,如图3所示,第一转换电路可以分别与计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将计算电路运算后输出的符号位、指数位和尾数位数据转换为tf64数据。
47.可以理解,在计算电路完成计算并输出计算结果时,计算结果的符号位、指数位和标准化后的尾数位被分别输出,此时第一转换电路只需基于tf64数据的数值等于f0+f1*2-20
这一原则设置电路进行数据转换即可。
48.示例性的,如图4所示,第一转换电路可以包括第一转换子单元和第二转换子单元。其中,第一转换子单元的输入端分别与计算电路的符号位输出端、指数位输出端和标准化后的前20位尾数位输出端连接,以转换得到f0。第二转换子单元的输入端分别与计算电路的符号位输出端、指数位输出端和标准化后的前20位之后的尾数位输出端连接,并进行标准化处理,以转换得到f1。
49.可以理解,对于计算电路而言,无论是符号位、指数位还是尾数位,其中每一个比特的数据是通过一条信号线与下一部件连接的,即计算结果中的每一比特的数值都有一条专门的信号线进行输出,因此第一转换子单元的输入端可以仅与前20位尾数位输出端连接,从而直接得到f0。而第二转换子单元的输入端直接与标准化后的前20位之后的尾数位输出端连接,这样就无需进行移位处理,效率更高。而如图3所示的计算单元中,为了保证尾数位相加后数据不会溢出,计算电路中的最终的加法器设置为了进行60比特数据相加的加法器,因此接入第二转换子单元的尾数位会超过df32数据所要求的20位(一位数据即为一比特数据),因此需要进行标准化处理。可以理解,在标准化后还可以进行四舍五入处理。为实现标准化和四舍五入处理,第二转换子单元中可以设置有标准化单元。
50.在本技术实施例中,通过配置第一转换电路,可以保证一个计算任务在反复利用计算单元进行计算的过程中,始终可以支持fp64数据的运算。
51.在本技术实施例的一些可行实施方式中,如图5所示,计算电路中可以包括第三转换电路。第三转换电路分别与计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将计算电路运算后输出的符号位、指数位和尾数位数据转换为fp32数据。可以理解,第三转换电路可以仅与计算电路的前8位指数位输出端连接以及仅与前23位尾数位输出端连接。还可以理解,第三转换电路也可以与计算电路的所有指数位输出端连接以及与所有尾数位输出端连接,并设置进行四舍五入运算的电路,以进行四舍五入后保留前8位指数位和前23位尾数位。需要说明的是,本技术实施例中的前x位是指最高的x位。
52.在本技术实施例中,通过第三转换电路的设置,可以使得计算单元计算后可以输出fp32格式的数据,从而满足通用场景下的数据格式要求,提高配置本技术实施例所提供的计算单元的芯片的兼容性。
53.如图5所示,在本技术实施例的一些可行实施方式中,计算单元还可以包括第一多路选择器。第一多路选择器的输入端分别与第一转换电路的第一输出端、第三转换电路的输出端连接。其中,第一转换电路的第一输出端用于输出f0,示例性的,第一转换电路的第一输出端可以为前述第一转换子单元的输出端。
54.可以理解,第一多路选择器的控制端可以与计算单元外部的指令寄存器等指令分发器件连接,以接收相关指令,实现对于数据的选通。
55.在本技术实施例的另一些实施方式中,第一转换单元和第三转换单元也可以具有独立的输出端口,而不通过第一多路选择器复用同一输出端口,对此本技术实施例不做限制。
56.在本技术实施例的一些可行实施方式中,如图6或图7所示,计算单元还可以包括第四转换电路。第四转换电路分别与计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将计算电路运算后输出的符号位、指数位和尾数位数据转换为fp64数据。可以理解,第四转换电路可以仅与计算电路的所有指数位输出端连接以及仅与前52位尾数位输出端连接。还可以理解,第四转换电路也可以与计算电路的所有指数位输出端连接以及与所有尾数位输出端连接,并设置进行四舍五入运算的电路,以进行四舍五入后保留前52位尾数位。
57.在本技术实施例中,通过第四转换电路的设置,可以使得计算单元计算后可以输出fp64格式的数据,从而满足通用场景下的数据格式要求,提高配置本技术实施例所提供的计算单元的芯片的兼容性。
58.如图6或图7所示,第一多路选择器的输入端可以与第四转换电路的第一输出端连接;第四转换电路的第一输出端用于输出fp64数据的第32至63位数。
59.计算单元还可以包括第二多路选择器。第二多路选择器的输入端分别与第一转换电路的第二输出端、第四转换电路的第二输出端连接。其中,第四转换电路的第二输出端用于输出fp64数据的第0至31位数,第一转换电路的第二输出端用于输出f1,示例性的,第一转换电路的第二输出端可以为前述第二转换子单元的输出端。
60.可以理解,第二多路选择器的控制端可以与计算单元外部的指令寄存器等指令分发器件连接,以接收相关指令,实现对于数据的选通。
61.在本技术实施例的另一些实施方式中,第一转换单元和第四转换单元也可以具有独立的输出端口,而不通过第一多路选择器和第二多路选择器复用相同的输出端口,对此
本技术实施例不做限制。
62.参见图8所示,在本技术实施例的一些可行实施方式中,计算单元还可以包括第二转换电路。第二转换电路分别与计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将计算电路运算后输出的符号位、指数位和尾数位数据转换为df32数据。可以理解,第二转换电路可以仅与计算电路的全部指数位输出端连接以及仅与前20位尾数位输出端连接。还可以理解,第二转换电路也可以与计算电路的所有指数位输出端连接以及与所有尾数位输出端连接,并设置进行四舍五入运算的电路,以进行四舍五入后保留前20位尾数位。
63.可以理解,如图8所示,第二转换电路的输出端还可以与第一多路选择器的输入端连接,以通过第一多路选择器复用同一个输出端。此外,第二转换电路也可以是配置有单独的输出端,而不与第一多路选择器连接,对此本技术实施例不做限制。
64.基于同一发明构思,本技术实施例中还提供了一种计算核心,如图9所示,包括:至少一个前述提供的计算单元和至少一个数据寄存器。数据寄存器与计算单元连接,用于向计算单元提供用于进行计算的操作数,以及用于接收并保存计算单元输出的数据。
65.可以理解,在本技术实施例中,计算核心还可以包括更多的部件,例如图10所示,寄存器file中除了可以具有数据寄存器外,还可以具有指令寄存器,用于向各计算单元分配指令。计算核心还可以包括scheduler(分发器),用于分发数据与指令给到数据寄存器或指令寄存器。计算核心还可以包括用于进行整数运算的整数计算单元、lsu(数据存储单元)单元、l1缓存与共享内存等。此外,计算核心还可以包括用于根据指令类型将指令派发分发器的dispatch(派遣器)单元、用于解码的decode(解码器)单元、用于从l1缓存中获取指令的fetch(获取器)单元、用于进行操作数暂存的寄存器src0至src3,用于进行计算结果暂存的暂存器dst0至dst3等。应理解,图10仅为示例,不作为对本技术实施例中计算核心的结构限制。
66.在本技术实施例中,利用计算单元可以实现fp32数据到df32数据的转换(src0输入待转换的fp32数据,src1输入1,src2输入0,选择第二转换电路输出)、fp32数据到tf64数据的转换(src0输入待转换的fp32数据,src1输入1,src2输入0,选择第一转换电路输出)、df32数据到fp32数据的转换(src0输入待转换的df32数据,src1输入1,src2输入0,选择第三转换电路输出)、tf64数据到fp32数据的转换(src0输入f1,src1输入2-20
,src2输入f0,选择第三转换电路输出)、df32数据到fp64数据的转换(src0输入待转换的df32数据,src1输入1,src2输入0,选择第四转换电路输出)、tf64数据到fp64数据的转换(src0输入f1,src1输入2-20
,src2输入f0,选择第四转换电路输出)。
67.但是,计算单元无法实现fp64数据到tf64数据的转换,为此,在本技术实施例的一些实施方式中,在计算核心中还可以设置第五转换电路,如图11所示:
68.第五转换电路包括第一操作数输入端(即图11中的src0)、第二操作数输入端(即图11中的src1)、f0输出端(即图11中的f0)、f1输出端(即图11中的f1)、分解器以及标准化电路。
69.第一操作数输入端、第二操作数输入端、f0输出端和f1输出端分别与数据寄存器连接。其中,第一操作数输入端用于接收数据寄存器传输来的fp64数据第32至63位数,第二操作数输入端用于接收数据寄存器传输来的fp64数据第0至31位数。
70.第一操作数输入端分别与f0输出端和分解器连接。
71.分解器用于从fp64数据第32至63位数中提取出符号位和指数位。
72.标准化电路的输入端分别与分解器以及第二操作数输入端连接,以转换得到f1。标准化电路的输出端与f1输出端连接。
73.通过上述实现结构,可以将fp64数据第32至63位数直接输出为f0,将fp64数据的符号位、指数位和剩下的尾数位部分进行处理,转换为f1,实现针对fp64数据到tf64数据的格式转换,弥补了本技术实施例所提供的计算单元无法支持fp64数据到tf64数据的格式转换的不足。
74.可以理解,前述标准化电路除了可以实现标准化外,还可以配置实现四舍五入操作的相关电路。
75.通过本技术实施例所提供的计算单元和计算核心,可以支持tf64数据的运算,相比于传统的仅设置有fp32计算单元的计算核心,可以支持更高的数据精度。相比于增设fp64的计算单元以提高数据精度的计算核心,本技术实施例的方案复用了fp32计算电路(即原本的fp32计算单元),仅需增大fp32计算电路中指数位加法器所支持的位数,以及增加对于tf64格式的转换电路即可,增加的面积较增设fp64的计算单元的方式而言更小,也即面积开销更低。
76.基于同一发明构思,本技术实施例还提供了一种数据处理方法,应用于本技术实施例所提供的计算核心中,参见图12所示,方法包括:
77.s1201:通过计算单元或第五转换电路将目标格式的待运算数据转换为tf64数据。
78.s1202:通过计算单元进行tf64数据的数据运算。
79.s1203:通过计算单元将数据运算结果转换为目标格式。
80.为便于理解本技术实施例的方案,下面针对几种具体的运算进行说明:
81.fp64数据的加法实现:
82.算法逻辑为:
[0083][0084]
具体执行:
[0085]
利用第五转换电路,将数据d0转换为tf64格式的t0;
[0086]
利用第五转换电路,将数据d1转换为tf64格式的t1;
[0087]
向图8所示的计算单元中输入数据t0.f0(src0)、1(src1)和t1.f0(src2),选择第
一转换电路输出,得到t2。
[0088]
通过计算核心具有的赋值电路将t3.f0赋值为t2.f0。当然也可以向图8所示的计算单元中输入数据t2.f0(src0)、1(src1)和0(src2),选择第二转换电路输出,得到t3.f0。
[0089]
向图8所示的计算单元中输入数据t2.f1(src0)、1(src1)和t0.f1(src2),选择第二转换电路输出,得到中间值k。
[0090]
向图8所示的计算单元中输入数据k(src0)、1(src1)和t1.f1(src2),选择第二转换电路输出,得到t3.f1。
[0091]
向图8所示的计算单元中输入数据t3.f1(src0)、2-20
(src1)和t3.f0(src2),选择第四转换电路输出,得到fp64形式的计算结果。
[0092]
需要说明的是,t0.f0表征t0中的f0,t0.f1表征t0中的f1,t1.f0表征t1中的f0,t1.f1表征t1中的f1,t2.f0表征t2中的f0,t2.f1表征t2中的f1,t3.f0表征t3中的f0,t3.f1表征t3中的f1,后文定义相同,不再赘述。
[0093]
fp32数据的加法实现:
[0094]
算法逻辑为:
[0095][0096]
具体执行:
[0097]
向图8所示的计算单元中输入数据fp32的数据d0(src0)、1(src1)和0(src2),选择第一转换电路输出,得到t0。
[0098]
向图8所示的计算单元中输入数据fp32的数据d1(src0)、1(src1)和0(src2),选择第一转换电路输出,得到t1。
[0099]
向图8所示的计算单元中输入数据t0.f0(src0)、1(src1)和t1.f0(src2),选择第一转换电路输出,得到t2。
[0100]
通过计算核心具有的赋值电路将t3.f0赋值为t2.f0。当然也可以向图8所示的计算单元中输入数据t2.f0(src0)、1(src1)和0(src2),选择第二转换电路输出,得到t3.f0。
[0101]
向图8所示的计算单元中输入数据t2.f1(src0)、1(src1)和t0.f1(src2),选择第二转换电路输出,得到中间值k。
[0102]
向图8所示的计算单元中输入数据k(src0)、1(src1)和t1.f1(src2),选择第二转换电路输出,得到t3.f1。
[0103]
向图8所示的计算单元中输入数据t3.f1(src0)、2-20
(src1)和t3.f0(src2),选择
第三转换电路输出,得到fp32形式的计算结果。
[0104]
fp64数据的乘法实现:
[0105]
算法逻辑为:
[0106][0107]
具体执行:
[0108]
利用第五转换电路,将数据d0转换为tf64格式的t0;
[0109]
利用第五转换电路,将数据d1转换为tf64格式的t1;
[0110]
向图8所示的计算单元中输入数据t0.f0(src0)、t1.f0(src1)和0(src2),选择第一转换电路输出,得到t2。
[0111]
通过计算核心具有的赋值电路将t3.f0赋值为t2.f0。当然也可以向图8所示的计算单元中输入数据t2.f0(src0)、1(src1)和0(src2),选择第二转换电路输出,得到t3.f0。
[0112]
向图8所示的计算单元中输入数据t0.f1(src0)、t1.f0(src1)和t2.f1(src2),选择第二转换电路输出,得到中间值k。
[0113]
向图8所示的计算单元中输入数据t1.f1(src0)、t0.f0(src1)和k(src2),选择第二转换电路输出,得到t3.f1。
[0114]
向图8所示的计算单元中输入数据t3.f1(src0)、2-20
(src1)和t3.f0(src2),选择第四转换电路输出,得到fp64形式的计算结果。
[0115]
fp32数据的乘法实现:
[0116]
算法逻辑为:
[0117][0118]
具体执行:
[0119]
向图8所示的计算单元中输入数据fp32的数据d0(src0)、1(src1)和0(src2),选择第一转换电路输出,得到t0。
[0120]
向图8所示的计算单元中输入数据fp32的数据d1(src0)、1(src1)和0(src2),选择第一转换电路输出,得到t1。
[0121]
向图8所示的计算单元中输入数据t0.f0(src0)、t1.f0(src1)和0(src2),选择第一转换电路输出,得到t2。
[0122]
通过计算核心具有的赋值电路将t3.f0赋值为t2.f0。当然也可以向图8所示的计算单元中输入数据t2.f0(src0)、1(src1)和0(src2),选择第二转换电路输出,得到t3.f0。
[0123]
向图8所示的计算单元中输入数据t0.f1(src0)、t1.f0(src1)和t2.f1(src2),选择第二转换电路输出,得到中间值k。
[0124]
向图8所示的计算单元中输入数据t1.f1(src0)、t0.f0(src1)和k(src2),选择第二转换电路输出,得到t3.f1。
[0125]
向图8所示的计算单元中输入数据t3.f1(src0)、2-20
(src1)和t3.f0(src2),选择第三转换电路输出,得到fp32形式的计算结果。
[0126]
fp64数据的mad(mad是指a*b+c的运算)实现:
[0127]
算法逻辑为:
[0128][0129][0130]
具体执行:
[0131]
利用第五转换电路,将数据d0转换为tf64格式的t0;
[0132]
利用第五转换电路,将数据d1转换为tf64格式的t1;
[0133]
利用第五转换电路,将数据d2转换为tf64格式的t2;
[0134]
向图8所示的计算单元中输入数据t0.f0(src0)、t1.f0(src1)和0(src2),选择第一转换电路输出,得到t3。
[0135]
向图8所示的计算单元中输入数据t0.f1(src0)、t1.f0(src1)和t3.f1(src2),选择第二转换电路输出,得到中间值k1。
[0136]
向图8所示的计算单元中输入数据t1.f1(src0)、t0.f0(src1)和k1(src2),选择第二转换电路输出,得到最新的t3.f1。
[0137]
向图8所示的计算单元中输入数据t3.f0(src0)、1(src1)和t2.f0(src2),选择第一转换电路输出,得到t4。
[0138]
向图8所示的计算单元中输入数据最新的t3.f1(src0)、1(src1)和t2.f1(src2),选择第二转换电路输出,得到中间值k2。
[0139]
向图8所示的计算单元中输入数据t4.f1(src0)、1(src1)和k2(src2),选择第二转换电路输出,得到最新的t4.f1。
[0140]
向图8所示的计算单元中输入数据最新的t4.f1(src0)、2-20
(src1)和t4.f0(src2),选择第四转换电路输出,得到fp64形式的计算结果。
[0141]
其中,t4.f0表征t4中的f0,t4.f1表征t4中的f1。
[0142]
fp32数据的mad实现:
[0143]
算法逻辑为:
[0144][0145][0146]
具体执行:
[0147]
向图8所示的计算单元中输入数据fp32的数据d0(src0)、1(src1)和0(src2),选择第一转换电路输出,得到t0。
[0148]
向图8所示的计算单元中输入数据fp32的数据d1(src0)、1(src1)和0(src2),选择第一转换电路输出,得到t1。
[0149]
向图8所示的计算单元中输入数据fp32的数据d2(src0)、1(src1)和0(src2),选择第一转换电路输出,得到t2。
[0150]
向图8所示的计算单元中输入数据t0.f0(src0)、t1.f0(src1)和0(src2),选择第一转换电路输出,得到t2。
[0151]
向图8所示的计算单元中输入数据t0.f0(src0)、t1.f0(src1)和0(src2),选择第一转换电路输出,得到t3。
[0152]
向图8所示的计算单元中输入数据t0.f1(src0)、t1.f0(src1)和t3.f1(src2),选择第二转换电路输出,得到中间值k1。
[0153]
向图8所示的计算单元中输入数据t1.f1(src0)、t0.f0(src1)和k1(src2),选择第二转换电路输出,得到最新的t3.f1。
[0154]
向图8所示的计算单元中输入数据t3.f0(src0)、1(src1)和t2.f0(src2),选择第一转换电路输出,得到t4。
[0155]
向图8所示的计算单元中输入数据最新的t3.f1(src0)、1(src1)和t2.f1(src2),选择第二转换电路输出,得到中间值k2。
[0156]
向图8所示的计算单元中输入数据t4.f1(src0)、1(src1)和k2(src2),选择第二转换电路输出,得到最新的t4.f1。
[0157]
向图8所示的计算单元中输入数据t3.f1(src0)、2-20
(src1)和t3.f0(src2),选择第三转换电路输出,得到fp32形式的计算结果。
[0158]
需要理解的是,若不存在第二转换电路,则可以通过第一转换电路进行输出,此时上述算法中输出的f1可以直接丢弃。
[0159]
基于同一发明构思,本技术实施例中还提供了一种芯片,其包括本本技术实施例中所提供的计算核心。
[0160]
示例性的,在本技术实施例中的芯片可以是但不限于gpu(graphics processing units,图形处理器)芯片、gpgpu(general-purpose computing on graphics processing units,通用图形处理器)芯片、cpu(central processing unit,中央处理器)芯片、fpga(field programmable gate array,可编程阵列逻辑)、ai加速芯片、dpu(data processing unit,数据处理单元)等。
[0161]
基于同一发明构思,本技术实施例中还提供了一种电子设备,其包括本本技术实施例中所提供的芯片。
[0162]
示例性的,该电子设备可以是诸如显卡、安装有cpu的板卡、控制器等可独立生产与销售的电子部件。还可以是诸如终端、服务器等具有形成完成产品的设备。
[0163]
在本技术所提供的实施例中,应该理解到,以上各实施方式在不冲突的情况下可以自由组合得到新的实施方式。
[0164]
在本技术所提供的实施例中,还应该理解到,所显示或讨论的相互之间的连接可以是通过一些接口直接或间接连接,可以是电性的。
[0165]
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
[0166]
在本文中,多个是指两个或两个以上。
[0167]
以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。

技术特征:
1.一种计算单元,其特征在于,包括:计算电路,所述计算电路为将fp32计算电路中的指数位加法器配置为支持进行11比特数相加的加法器的计算电路;第一转换电路,分别与所述计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将所述计算电路运算后输出的符号位、指数位和尾数位数据转换为tf64数据;所述tf64数据由两个df32数据f0和f1表征,且tf64数据等于f0+f1*2-20
;所述df32数据为由1比特符号位、11比特指数位、20比特尾数位构成的数据。2.如权利要求1所述的计算单元,其特征在于,所述计算单元还包括:第二转换电路,分别与所述计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将所述计算电路运算后输出的符号位、指数位和尾数位数据转换为df32数据。3.如权利要求1或2所述的计算单元,其特征在于,所述计算电路中包括第三转换电路,分别与所述计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将所述计算电路运算后输出的符号位、指数位和尾数位数据转换为fp32数据;所述计算单元还包括:第一多路选择器,输入端分别与所述第一转换电路的第一输出端、所述第三转换电路的输出端连接;其中,所述第一转换电路的第一输出端用于输出所述f0。4.如权利要求3所述的计算单元,其特征在于,所述计算单元还包括:第四转换电路,分别与所述计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将所述计算电路运算后输出的符号位、指数位和尾数位数据转换为fp64数据;所述第一多路选择器的输入端还与所述第四转换电路的第一输出端连接;所述第四转换电路的第一输出端用于输出所述fp64数据的第32至63位数;第二多路选择器,输入端分别与所述第一转换电路的第二输出端、所述第四转换电路的第二输出端连接;其中,所述第一转换电路的第二输出端用于输出所述f1,所述第四转换电路的第二输出端用于输出所述fp64数据的第0至31位数。5.如权利要求4所述的计算单元,其特征在于,所述第一转换电路包括:第一转换子单元,输入端分别与所述计算电路的符号位输出端、指数位输出端和标准化后的前20位尾数位输出端连接,以转换得到所述f0;所述第一转换子单元的输出端与所述第一多路选择器的输入端连接;第二转换子单元,输入端分别与所述计算电路的符号位输出端、指数位输出端和所述标准化后的前20位之后的尾数位输出端连接,并进行标准化处理,以转换得到所述f1;所述第二转换子单元的输出端与所述第二多路选择器的输入端连接。6.一种计算核心,其特征在于,包括:至少一个如权利要求1-5任一项所述的计算单元;数据寄存器,与所述计算单元连接,用于向所述计算单元提供用于进行计算的操作数,以及用于接收并保存所述计算单元输出的数据。7.如权利要求6所述的计算核心,其特征在于,所述计算核心还包括第五转换电路;
所述第五转换电路包括第一操作数输入端、第二操作数输入端、f0输出端、f1输出端、分解器以及标准化电路;所述第一操作数输入端、所述第二操作数输入端、所述f0输出端和所述f1输出端分别与所述数据寄存器连接;其中,所述第一操作数输入端用于接收所述数据寄存器传输来的fp64数据第32至63位数,所述第二操作数输入端用于接收所述数据寄存器传输来的fp64数据第0至31位数;所述第一操作数输入端分别与所述f0输出端和所述分解器连接;所述分解器用于从所述fp64数据第32至63位数中提取出符号位和指数位;所述标准化电路的输入端分别与所述分解器以及所述第二操作数输入端连接,以转换得到所述f1;所述标准化电路的输出端与所述f1输出端连接。8.一种数据处理方法,其特征在于,应用于如权利要求7所述的计算核心中,所述方法包括:通过所述计算单元或所述第五转换电路将目标格式的待运算数据转换为tf64数据;所述tf64数据由两个df32数据f0和f1表征,且tf64数据等于f0+f1*2-20
;所述df32数据为由1比特符号位、11比特指数位、20比特尾数位构成的数据;通过所述计算单元进行所述tf64数据的数据运算;通过所述计算单元将数据运算结果转换为所述目标格式。9.一种芯片,其特征在于,包括如权利要求5或6所述的计算核心。10.一种电子设备,其特征在于,包括如权利要求7所述的芯片。

技术总结
本申请提供一种计算单元、计算核心、数据计算方法、芯片及电子设备,计算单元包括计算电路,所述计算电路为将FP32计算电路中的指数位加法器配置为支持进行11比特数相加的加法器的计算电路;第一转换电路,分别与所述计算电路的符号位输出端、指数位输出端和标准化后的尾数位输出端连接,以将所述计算电路运算后输出的符号位、指数位和尾数位数据转换为TF64数据;所述TF64数据由两个DF32数据f0和f1表征,且TF64数据等于f0+f1*2-20


技术研发人员:邵平平 倪岭
受保护的技术使用者:上海天数智芯半导体有限公司
技术研发日:2023.06.16
技术公布日:2023/9/16
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐