一种流水线结构的浮点融合乘加装置、方法及处理器与流程

1.本发明涉及数字信号处理技术领域,尤其涉及一种流水线结构的浮点融合乘加装置、方法及处理器。
背景技术:
2.浮点融合乘加运算(fma,fused multiply-add)是一种执行a
×
c+b类型的浮点乘加操作,可以有效解决浮点计算中的加减法、乘法和乘加乘减的运算,当需要计算加减法时则把c置为1,需要计算乘法时则把b置为0,因此,只需要一个计算单元就能够实现多种操作,浮点融合乘加运算作为高性能的处理器的核心运算操作之一,对整个处理器的浮点性能具有很大影响。
3.然而,虽然目前对于乘法器和加法器的研究已经较为成熟,但是单纯对于乘法器和加法器的研究已经很难做到较大的性能提升,而且现有的浮点融合乘加运算算法复杂,逻辑执行时间长,规模大,降低了浮点融合乘加运算的执行速度,因此,对高性能浮点融合乘加单元的研究具有广泛的应用价值和重要的现实意义,而如何使用现有的乘法器和加法器实现高性能浮点乘加单元是目前的主要难点。
技术实现要素:
4.本发明的目的在于提供一种流水线结构的浮点融合乘加装置、方法及处理器,以通过现有的乘法器和加法器实现高性能浮点乘加装置,提升浮点融合乘加运算的执行速度。
5.为解决以上技术问题,本发明提供了一种流水线结构的浮点融合乘加装置、方法及处理器。
6.第一方面,本发明提供了一种流水线结构的浮点融合乘加装置,所述装置包括:第一级流水段、第二级流水段、第三级流水段、第四级流水段和第五级流水段;其中,所述第三级流水段包括并行的双路加法处理模块、前导零预测模块、前导零预测并行纠错模块和特殊前导零预测纠错模块;
7.第一级流水段,用于响应于浮点操作数的输入,对所述浮点操作数的符号位、指数和尾数进行拆分,并对乘法操作数的尾数进行编码,得到乘数尾数部分积;其中,所述浮点操作数包括乘法操作数和加法操作数;
8.第二级流水段,用于对所述乘数尾数部分积进行两级压缩,并对所述加法操作数的尾数进行对阶移位,以及对所述浮点操作数的尾数进行前导零操作;
9.第三级流水段,用于基于前导零预测并行纠错树,对两级压缩后的乘数尾数部分积和对阶移位后的加法操作数尾数进行处理,得到前导零预测并行纠错结果,并对前导零操作后的浮点操作数尾数进行特殊前导零预测纠错操作,得到特殊前导零预测纠错结果;
10.第四级流水段,用于根据前导零预测并行纠错结果和特殊前导零预测纠错结果,得到前导零预测结果,根据前导零预测结果,对加法结果并行进行尾数规格化移位和尾数
非规格化左移,得到移位尾数;所述加法结果是根据加法操作数和乘法操作数相加产生的;
11.第五级流水段,用于对所述移位尾数进行尾数舍入,得到尾数舍入结果,将所述尾数舍入结果同时进行不同精度数尾数的选择,以筛选出最终的浮点结果。
12.在进一步的实施方案中,所述第二级流水段包括:
13.部分积两级压缩模块,用于将所述乘数尾数部分积输入第一级部分积压缩器,得到部分积零和中间部分积,将所述中间部分积输入第二级部分积压缩器,得到伪和信号和伪进位信号;
14.加数尾数处理模块,用于根据移位量对所述加法操作数的尾数进行对阶移位,得到加数移位值,根据符号位和操作类型确定运算方式,根据运算方式对加数移位值进行处理,得到加数部分积;其中,所述移位量为将乘法操作数的指数和与加法操作数的指数作差得到的指数差值;
15.前导零模块,用于确定尾数前导零个数,并基于所述尾数前导零个数,对所述浮点操作数的尾数进行前导零操作,得到浮点尾数前导零结果;
16.异常处理模块,用于对由第一级流水段对所述浮点操作数拆分得到的非数、无穷和部分零进行异常处理,得到异常处理结果。
17.在进一步的实施方案中,第三级流水段还包括压缩编码模块;
18.所述压缩编码模块,用于对所述加数部分积、所述部分积零、所述伪和信号和所述伪进位信号依次进行压缩、编码操作,得到压缩编码信号;
19.所述双路加法处理模块,用于将压缩编码信号输入双通道加法器,得到两个加法中间结果;
20.所述前导零预测模块,用于对所述压缩编码信号进行前导零预测,得到前导零值;
21.所述前导零预测并行纠错模块,用于将压缩编码信号输入前导零预测并行纠错树,得到前导零预测并行纠错结果,所述前导零预测并行纠错结果包括正纠错信号和负纠错信号;
22.所述特殊前导零预测纠错模块,用于利用预设的特殊前导零预测纠错规则,对所述浮点尾数前导零结果依次进行左移位和特殊前导零预测纠错,得到特殊前导零预测纠错结果。
23.在进一步的实施方案中,所述特殊前导零预测纠错规则具体为:
24.在对所述加法操作数的尾数进行对阶移位时,若加法操作数移位超过预设位的计算范围,则对所述加法结果的最低位进行补偿。
25.在进一步的实施方案中,所述第四级流水段包括:
26.尾数移位模块,用于根据所述前导零预测并行纠错结果、所述前导零值和所述特殊前导零预测纠错结果,得到前导零预测结果,根据加法中间结果的正负对所述加法中间结果进行处理,得到加法结果,根据前导零预测结果,将加法结果进行规格化左移,得到规格化左移尾数,同时基于由第三级流水段根据指数差值确定的最小指数差,将加法结果分别进行非规格左移和右移移位,得到非规格左移尾数和右移移位尾数;
27.尾数选择模块,用于基于所述最小指数差,对规格化左移尾数、非规格左移尾数和右移移位尾数进行选择,得到移位尾数;
28.符号位选择模块,用于根据加法中间结果对乘加符号进行计算,得到舍入符号位,
所述乘加符号由第一级流水段对所述浮点操作数拆分得到的符号位进行异或操作得到。
29.在进一步的实施方案中,所述尾数选择模块,具体用于:
30.根据所述最小指数差,生成尾数选择控制信号,所述尾数选择控制信号包括规格化控制信号和非规格化控制信号;
31.若所述尾数选择控制信号为规格化控制信号,则选择规格化左移尾数作为移位尾数;
32.若所述尾数选择控制信号为非规格化控制信号且当前操作的数据为单精度数据或双精度数据,则选择非规格左移尾数作为移位尾数;
33.若所述尾数选择控制信号为非规格化控制信号且当前操作的数据为双精度规格的单精度数据,则选择右移移位尾数作为移位尾数。
34.在进一步的实施方案中,所述第五级流水段包括:
35.舍入模块,用于将所述移位尾数进行舍入操作,得到尾数舍入结果;
36.精度数选择模块,用于在不同的精度下对尾数舍入结果、舍入符号位和指数同时并行选择,并根据所述异常处理结果筛选出最终的浮点结果,其中,尾数舍入结果精度选择包括单精度数尾数选择、双精度规格单精度数尾数选择和双精度数尾数选择三种中的部分或全部,符号位舍入结果选择包括单精度符号位选择、双精度规格单精度数符号位选择和双精度数符号位选择三种中的部分或全部,指数选择包括单精度数指数选择、双精度规格单精度数指数选择和双精度数指数选择三种中的部分或全部。
37.第二方面,本发明提供了一种流水线结构的浮点融合乘加方法,所述方法包括以下步骤:
38.响应于浮点操作数的输入,对所述浮点操作数的符号位、指数和尾数进行拆分,并对乘法操作数的尾数进行编码,得到乘数尾数部分积;其中,所述浮点操作数包括乘法操作数和加法操作数;
39.对所述乘数尾数部分积进行两级压缩,并对所述加法操作数的尾数进行对阶移位,以及对所述浮点操作数的尾数进行前导零操作;
40.基于并行的双通道加法操作、前导零预测操作、前导零预测并行纠错操作以及特殊前导零预测纠错操作进行处理;其中,前导零预测并行纠错操作包括利用前导零预测并行纠错树,对两级压缩后的乘数尾数部分积和对阶移位后的加法操作数尾数进行处理,得到前导零预测并行纠错结果;特殊前导零预测纠错操作包括对前导零操作后的浮点操作数尾数进行特殊前导零预测纠错操作,得到特殊前导零预测纠错结果;
41.根据前导零预测并行纠错结果和特殊前导零预测纠错结果,得到前导零预测结果,根据前导零预测结果,对加法结果并行进行尾数规格化移位和尾数非规格化左移,得到移位尾数;所述加法结果是根据加法操作数和乘法操作数相加产生的;
42.对所述移位尾数进行尾数舍入,得到尾数舍入结果,将所述尾数舍入结果同时进行不同精度数尾数的选择,以筛选出最终的浮点结果。
43.第三方面,本发明还提供了一种处理器,包括处理器本体和设于处理器本体中的如上述的浮点融合乘加装置。
44.第四方面,本发明还提供了一种计算机设备,包括处理器和存储器,所述处理器与所述存储器相连,所述处理器包括处理器本体和设于处理器本体中的如上述的浮点融合乘
加装置。
45.本发明提供了一种流水线结构的浮点融合乘加装置、方法及处理器,所述装置包括五级流水段,第一级流水段用于对浮点操作数的符号位、指数和尾数进行拆分,并对乘法操作数的尾数进行编码,得到乘数尾数部分积;第二级流水段用于实现阶移位操作、两级部分积压缩操作和前导零操作;第三级流水段包括并行的双路加法处理模块、前导零预测模块、前导零预测并行纠错模块和特殊前导零预测纠错模块,第三级流水段用于实现前导零预测并行纠错操作和特殊前导零预测纠错操作;第四级流水段用于实现规格化移位、非规格化移位和右移移位操作;第五级流水段用于实现舍入操作和精度选择。与现有技术相比,该装置在第三级流水段实现了前导零预测并行纠错操作以及特殊情况前导零预测纠错操作,在第四级流水段增加了非规格化左移移位器和右移移位器,不仅使其能够处理特殊的数据格式,而且可以实现并行执行逻辑,平衡每一流水段中的执行时间,进一步提高了浮点融合乘加装置的执行速度。
附图说明
46.图1是本发明实施例提供的流水线结构的浮点融合乘加装置的结构框图;
47.图2是本发明实施例提供的浮点融合乘加装置的一个具体示例的原理框图;
48.图3是本发明实施例提供的浮点融合乘加装置的对阶方式示意图;
49.图4是本发明实施例提供的第二级流水段的一个具体示例图;
50.图5是本发明实施例提供的流水线结构的浮点融合乘加方法流程示意图;
51.图6是本发明实施例提供的计算机设备的结构示意图。
具体实施方式
52.下面结合附图具体阐明本发明的实施方式,实施例的给出仅仅是为了说明目的,并不能理解为对本发明的限定,包括附图仅供参考和说明使用,不构成对本发明专利保护范围的限制,因为在不脱离本发明精神和范围基础上,可以对本发明进行许多改变。
53.参考图1,本发明实施例提供了一种流水线结构的浮点融合乘加装置,如图1所示,该装置包括:第一级流水段1、第二级流水段2、第三级流水段3、第四级流水段4和第五级流水段5。
54.在本实施例中,第一级流水段1包括数据拆分模块11和编码模块12,所述数据拆分模块11用于响应于浮点操作数的输入,对所述浮点操作数的符号位、指数和尾数进行拆分,得到浮点操作数的符号位、指数(exponent)和尾数,其中,所述浮点操作数包括乘法操作数和加法操作数;所述编码模块12用于对乘法操作数的尾数进行编码,得到乘数尾数部分积。
55.本实施例在兼容ieee-754标准的基础上,同时兼容了一种特殊的双精度格式单精度浮点数,以及指令集规定的一些特殊操作,比如:图2所示的第五级流水段的下溢指数加固定值和上溢指数减固定值等操作,ieee-754标准定义的浮点数精度以及浮点数对应的数据类型如下所示:
56.eee-754标准定义了32位单精度浮点数,如表1所示:
57.表1
58.1位符号位8位指数23位尾数位
59.64位双精度浮点数,如表2所示:
60.表2
61.1位符号位11位指数52位尾数位
62.本实施例介绍一种特殊的双精度格式的单精度浮点数,如表3所示:
63.表3
64.1位符号位11位指数23位尾数位29位全0
65.需要说明的是,本实施例虽然采用了64位位宽,但实际只表示单精度浮点数,因此,指数的表示范围只有897~1150,单精度为0~256,双精度为0~2048;
66.浮点数对应的数据类型,如表4所示:
67.表4
68.数据类型指数尾数隐藏位非数全1非全0undefined无穷大全1全0undefined零全0全00非规格化数全0非全00规格化数非全1、非全0任意数1
69.为了便于理解,本实施例后续将以在浮点融合乘加装置中执行a
×
c+b类型的浮点乘加操作为例进行说明,如图2所示,当输入三个浮点操作数a、b、c时,若当前运算为加减法,则将乘法操作数c置为1,若当前运算为乘法,则将加法操作数b置为0,然后数据拆分模块根据输入的浮点操作数的精度,标志出数据类型,并将浮点操作数拆分为符号位、指数和尾数三个部分,其中,符号位直接输出最高位;指数将原本精度的指数偏移修改为13位的偏移量,即单精度减去0x7f再加上0xfff,双精度减去0x3ff再加上0xfff,其中,0x3ff表示16进制数据;尾数根据数据类型拓展出隐藏位,并将位宽统一为53位,即双精度为隐藏位加上52位尾数位,单精度为隐藏位加上23位尾数位加上29位0;需要说明的是,图2中的乘数即为乘法操作数,加数即为加法操作数。
70.在对所述浮点操作数拆分完成后,非数、无穷和部分零进入第二级流水段进行异常处理,其他零、非规格化数和规格化数正常进行计算,其中,拆分后的符号位和加法操作数的指数直接输入第二级流水段;乘法操作数的指数和的计算公式即为:
71.f=exp(a)+exp(c)+56-λ
72.式中,f为乘法操作数的指数和;exp(a)、exp(c)分别是为乘数操作数a、c的指数;λ为偏移量,其值为0xfff;需要说明的是,上式加56为算法实现。
73.同时拆分得到的尾数则直接开始计算乘法,本实施例在第一级流水段中对乘法操作数的尾数进行编码,编码完成后产生的乘数尾数部分积输入第二级流水段,对于编码,本实施例优先采用布斯编码(booth encoding)对乘法操作数的尾数进行编码,得到27个部分积,由于每个流水线的作业时间不同,而用时最长的工序就是整条流水线的瓶颈工序,瓶颈工序决定着流水线的节拍,而节拍决定着整条流水线的效率,而平衡整条流水线的节拍可以推进快速流水作业,因此,相比于现有技术将布斯编码和部分积压缩器设置在同一流水段进行处理,本实施例将布斯编码和部分积压缩器设置在不同的流水段进行处理,其中,在
第一级流水段仅实现布斯编码操作,在第二级流水段实现部分积压缩操作,可以实现平衡划分流水线,在单位时间内生产较多的分段,极大的提高了流水线工作效率,从而节省了时间。
74.第二级流水段2用于对所述乘数尾数部分积进行两级压缩,并对所述加法操作数的尾数进行对阶移位,以及对所述浮点操作数的尾数进行前导零操作,在本实施例中,所述第二级流水段2包括部分积两级压缩模块21、加数尾数处理模块22、前导零模块23和异常处理模块24,具体功能说明如下所示:
75.所述部分积两级压缩模块21用于将所述乘数尾数部分积输入第一级部分积压缩器,得到部分积零和中间部分积,将所述中间部分积输入第二级部分积压缩器,得到伪和信号和伪进位信号;
76.所述加数尾数处理模块22用于根据移位量对所述加法操作数的尾数进行对阶移位,得到加数移位值,根据所述符号位和操作类型确定运算方式,根据运算方式对加数移位值进行处理,得到加数部分积;其中,所述移位量为将乘法操作数的指数和与加法操作数的指数作差得到的指数差值;
77.所述前导零模块23用于确定尾数前导零个数,并基于所述尾数前导零个数,对所述浮点操作数的尾数进行前导零操作,得到浮点尾数前导零结果;
78.所述异常处理模块24用于对由第一级流水段对所述浮点操作数拆分得到的非数、无穷和部分零进行异常处理,得到异常处理结果。
79.如图3所示,在第二级流水段中,融合乘加装置的对阶过程具体为:乘积为106位,小数点在数据第二位后,由于本实施例预先将加法操作数b左移56位,相当于乘积右移56位,因此,第一级流水段在计算乘法操作数的指数和时需要加上56的偏移量,本实施例中的对阶方式采用小阶对大阶的原则,由于预先将加法操作数b左移了56位,因此,对阶后只需右移加法操作数b即可,其中,右移的移位量为将乘法操作数的指数和与加法操作数的指数作差得到的指数差值,图2、图3中的加数即为加法操作数,本实施例在第二级流水段的加数尾数处理模块中设置了一个右移移位器,通过右移移位器右移加法操作数b,并在移位之后根据符号位和操作类型检测后续需要进行的运算方式,即具体是做加法还是减法运算,若后续需要做加法运算,则直接将加法操作数b输入第四个部分积d单元中,以将加法操作数b通过第四个部分积d单元输入到第三级流水段的压缩器中;若后续需要做减法运算,则需要先将加法操作数b取反再输入第四个部分积d单元中,需要说明的是,此处取反的目的是取补码运算,先取反码,而加1操作则放在第四级流水段的加法之后判断。
80.如图4所示,对于所述部分积两级压缩模块,本实施例在第一级流水段通过布斯编码得到的27个部分积先经过第一级部分积压缩器,得到部分积零给到第三个部分积c单元中,其余产生的中间部分积继续给到第二级部分积压缩器中,最终得到一个伪和信号和一个伪进位信号,分别给到第二个部分积b单元和第一个部分积a单元中,本实施例中的第一级部分积压缩器和第二级部分积压缩器优先采用4-2压缩器csa42,其中,csa为进位保存加法器,csa42即4-2压缩器,使用carry save adder进位保留加法器实现将4个数压缩为2个数,本领域技术人员也可根据具体实施情况将其设置为其他的压缩器,不局限于本发明实施例,比如:采用3-2压缩器作为第一级部分积压缩器和第二级部分积压缩器,需要说明的是,本实施例将4-2压缩器替换为3-2压缩器之后,对第二级流水段的执行耗时时间基本无
影响,同时,第二级流水段的异常处理模块对在第一级流水段中拆分出来的非数、无穷和部分零进行异常处理,异常处理包括对非数异常、无穷乘数和无穷加数等进行处理,同时第二级流水段还对输入的三个浮点操作数的53位尾数前导零,以用于后续进行特殊情况前导零纠错。
81.同时,在第二级流水段中,本实施例在将乘法操作数的指数和与加法操作数的指数作差得到的指数差值之后,根据指数差值的正负选出较大的指数作为第一指数,并将由第一级流水段拆分得到的三个浮点操作数的符号位进行异或操作,得到乘加符号。
82.由于在流水线中,下一条指令的地址依赖于上一条指令的执行结果,若多个任务在同一时间周期内争用同一个流水段,则会使下一条指令无法在设计的时钟周期内执行,后续指令都需要暂停等待若干时钟周期,从而将会降低流水线性能,因此,相较于现有技术将布斯编码和部分积压缩器设置在同一流水段实现而言,本实施例将布斯编码和部分积压缩器分别设置在第一级流水段和第二级流水段中实现,同时通过第二级流水段实现对阶移位操作、前导零操作和异常处理操作,可以在一个周期执行多个操作,降低了每个流水段的执行耗时时间,从而进一步提高处理器性能。
83.第三级流水段3用于基于前导零预测并行纠错树,对两级压缩后的乘数尾数部分积和对阶移位后的加法操作数尾数进行处理,得到前导零预测并行纠错结果,并对前导零操作后的浮点操作数尾数进行特殊前导零预测纠错操作,得到特殊前导零预测纠错结果;在本实施例中,所述第三级流水段3包括压缩编码模块31以及并行的双路加法处理模块32、前导零预测模块33、前导零预测并行纠错模块34和特殊前导零预测纠错模块35,需要说明的是,虽然双路加法处理模块32、前导零预测模块33、前导零预测并行纠错模块34和特殊前导零预测纠错模块35为并行的关系,但是对于第三级流水段各个模块的顺序重要性依次为顺序的重要性依次是双路加法处理模块32、前导零预测模块33、前导零预测并行纠错模块34和特殊前导零预测纠错模块35,第三级流水段各个模块的功能具体为:
84.压缩编码模块31用于对所述加数部分积、所述部分积零、所述伪和信号和所述伪进位信号依次进行压缩、编码操作,得到压缩编码信号;
85.双路加法处理模块32用于将压缩编码信号输入双通道加法器,得到两个加法中间结果;
86.前导零预测模块33用于对所述压缩编码信号进行前导零预测,得到前导零值;
87.前导零预测并行纠错模块34用于将压缩编码信号输入前导零预测并行纠错树,得到前导零预测并行纠错结果,所述前导零预测并行纠错结果包括正纠错信号和负纠错信号;
88.特殊前导零预测纠错模块35用于利用预设的特殊前导零预测纠错规则,对所述浮点尾数前导零结果依次进行左移位和特殊前导零预测纠错操作,得到特殊前导零预测纠错结果。
89.在本实施例中,所述特殊前导零预测纠错规则具体为:在对所述加法操作数的尾数进行对阶移位时,若加法操作数移位超过预设位的计算范围,则对所述加法结果的最低位进行补偿;具体地,特殊前导零预测纠错规则用于对特殊情况下的浮点尾数前导零结果进行纠错,产生前导零预测纠错信号,而特殊情况具体是指当加法对阶移位时,若加法操作数移位超过163位的计算范围,此时,需要在加法结果的最低位进行补偿,以确保计算精度,
即:当为加法操作时,在最低位加1;当为减法操作时,在最低位减1,需要说明的是,由于当做减法操作时,若计算结果为1.000
……
000,省略号为全0,此时,将最后一位减1,计算结果会变为0.111
……
111,此时,省略号为全1,前导零的值由0变为1,而且由于该操作在加法之后,因此,前导零预测并行纠错树无法检测出这一错误,因此,本实施例增加了一个并行的特殊情况纠错逻辑,通过特殊前导零预测纠错操作实现对特殊情况的纠错。
90.在第三级流水段中,指数位将第一指数和当前精度的最小指数范围计算得到的差值,即最小指数差,用于第四级流水段的非规格化左移和右移过程;尾数部分则由第二级流水段得到的四个部分积(加数部分积、部分积零、伪和信号和伪进位信号)经过一个压缩器、部分积编码之后分别输入双通道加法器、前导零预测模块和前导零预测并行纠错树,其中,如图4所示,第三级流水段的压缩器优先采用4-2压缩器,本领域技术人员可根据具体情况设置为其它的压缩器,不局限于本发明实施例,所述双通道加法器输出两个加法中间结果,其中一个加法中间结果是正常结果,另一个加法中间结果是正常结果加1;所述前导零预测模块输出一个前导零值;前导零预测并行纠错树输出正负两个纠错信号,在第三级流水段中,尾数的相关计算均为163位宽,同时前导零预测纠错模块将第二级流水段输出的3个53位尾数前导零进行53位左移位和特殊前导零预测纠错操作,产生特殊情况下的特殊前导零预测纠错结果。
91.本实施例通过第三级流水段实现了压缩编码操作、前导零预测操作、前导零预测并行纠错操作以及特殊情况的前导零预测纠错操作,通过特殊前导零预测纠错操作实现并行的特殊情况纠错逻辑,在有效简化结构路径的同时产生尽可能少的错误,从而进一步确保计算精度,同时通过并行纠错进一步加快了该级流水段的执行速度,实现了高性能、高精度。
92.所述第四级流水段4用于根据前导零预测并行纠错结果和特殊前导零预测纠错结果,得到前导零预测结果,根据前导零预测结果,对由对阶移位后的加法操作数尾数产生的加法结果并行进行尾数规格化移位和尾数非规格化左移,得到移位尾数,所述加法结果是根据加法操作数和乘法操作数相加产生的;在本实施例中,所述第四级流水段4包括尾数移位模块41、尾数选择模块42和符号位选择模块43,各个模块的功能具体为:
93.尾数移位模块41,用于根据所述前导零预测并行纠错结果、所述前导零值和所述特殊前导零预测纠错结果,得到前导零预测结果,根据加法中间结果的正负对所述加法中间结果进行处理,得到加法结果,根据前导零预测结果,将加法结果进行规格化左移,得到规格化左移尾数,同时基于由第三级流水段根据指数差值确定的最小指数差,将加法结果分别进行非规格左移和右移移位,得到非规格左移尾数和右移移位尾数;
94.尾数选择模块42,用于基于所述最小指数差,对规格化左移尾数、非规格左移尾数和右移移位尾数进行选择,得到移位尾数;
95.符号位选择模块43,用于根据加法中间结果对乘加符号进行计算,得到舍入符号位,所述乘加符号由第一级流水段对所述浮点操作数拆分得到的符号位进行异或操作得到。
96.在本实施例中,所述尾数选择模块,具体用于:根据所述最小指数差,生成尾数选择控制信号,所述尾数选择控制信号包括规格化控制信号和非规格化控制信号;若所述尾数选择控制信号为规格化控制信号,则选择规格化左移移位器产生的规格化左移尾数作为
移位尾数;若所述尾数选择控制信号为非规格化控制信号且当前操作的数据为单精度数据或双精度数据,则选择非规格化左移移位器产生的非规格左移尾数作为移位尾数;若所述尾数选择控制信号为非规格化控制信号且当前操作的数据为双精度规格的单精度数据,则选择右移移位器产生的右移移位尾数作为移位尾数。
97.具体地,在第四级流水段中,当实现减法操作时,需要对加法操作数进行取补码,由于在第二级流水段仅仅对加法操作数取了反码,并未加1,因此,在第四级流水段中,根据加法中间结果的正负对得到的两个加法中间结果选择是否需要取反和加一操作,得到最终的加法结果,前导零预测结果根据前导零预测并行纠错树和特殊情况下的特殊前导零预测纠错得到的控制信号来选择前导零值,然后将前导零预测结果作为规格化左移移位量,将加法中间结果进行规格化左移,非规格左移和右移移位量由第三级流水段得到的最小指数差确定,在移位后,根据不同情况对规格化左移移位器、非规格左移移位器和右移移位器进行三选一得到舍入前的尾数(移位尾数),其中,第四级流水段中的移位器和计算结果均为163位,在本实施例中,第四级流水段还用于将第一指数减去前导零预测结果得到第二指数,以及在加法结束后,根据加法中间结果重新计算乘加符号,到舍入符号位。
98.本实施例在第四级流水段设计了并行的规格化左移移位器、非规格左移移位器和右移移位器,通过并行增加的右移移位器可以实现在非规格化控制信号下,对双精度规格的单精度数据的处理,显著缩短了关键路径延时,从而显著地减小了执行消耗的时间,提高了浮点融合乘加装置的处理性能。
99.所述第五级流水段5用于对所述移位尾数进行尾数舍入,得到尾数舍入结果,将所述尾数舍入结果同时进行不同精度数尾数的选择,以筛选出最终的浮点结果,在本实施例中,所述第五级流水段5包括舍入模块51和精度数选择模块52,各个模块的功能具体为:
100.舍入模块51,用于将所述移位尾数进行舍入操作,得到尾数舍入结果;
101.精度数选择模块52,用于在不同的精度下对尾数舍入结果、舍入符号位和指数同时并行选择,并根据所述异常处理结果筛选出最终的浮点结果,其中,尾数舍入结果精度选择包括单精度数尾数选择、双精度规格单精度数尾数选择和双精度数尾数选择三种中的部分或全部,符号位舍入结果选择包括单精度符号位选择、双精度规格单精度数符号位选择和双精度数符号位选择三种中的部分或全部,指数选择包括单精度数指数选择、双精度规格单精度数指数选择和双精度数指数选择三种中的部分或全部;其中,需要说明的是,在第五流水段对第二指数的溢出检测以及在下溢时,将下溢指数与固定值相加,或者在上溢时,将上溢指数与固定值相减为本领域的现有技术,此处不再赘述。
102.具体地,第五级流水段将163位移位尾数和符号位输入舍入模块,输出53位尾数以及尾数舍入和不精确标志位,尾数舍入和不精确标志位输入浮点状态寄存器状态位产生模块中,舍入符号位根据结果确定是否需要进行取反操作,从而选择出最终的符号位,需要说明的是,部分指令在计算完成之后需要对符号位进行取反,由于舍入部分条件受到符号位的影响,因此,判断舍入符号位是否需要进行取反操作需要在对符号位舍入完成之后再进行;第四级算出的指数位可以用于最终的计算结果,并且同时计算加上固定值和减去固定值的指数位,然后同时并行选出不同精度下的符号位、指数位和尾数位,再根据精度选择出常规计算的计算结果,需要说明的是,精度是指32位单精度浮点数、64位双精度浮点数以及特殊的双精度格式的单精度浮点数,本实施例同时计算出三种精度下的结果,然后根据当
前执行的操作精度选择对应精度的结果,最后根据异常处理结果选择出最终的计算结果输出,同时产生各种状态控制位,需要说明的是,若第二级流水段的异常处理模块检测到数据是异常的,则异常处理模块会输出一个异常处理控制信号和一个异常处理结果,若第五级流水段收到该异常处理控制信号,则输出的最终的浮点结果为异常处理结果,若未收到该异常处理控制信号,则直接输出常规计算结果。
103.相比于现有技术将符号位、指数位和尾数位组合起来再根据精度选择的方式,本实施例在第五级流水段中利用舍入模块实现尾数舍入,采用同时并行的方式在不同精度下选择符号位、指数位和尾数位,支持多种不同数据精度的转换,不仅可以减少整个结构关键路径长度,节省资源,加快计算速度,而且可以提高工作效率,从而实现具有高精度、高性能、时序较短等特点的浮点融合乘加装置。
104.本发明实施例提供了一种流水线结构的浮点融合乘加装置,所述装置包括五级流水段,第一级流水段用于对浮点操作数的符号位、指数和尾数进行拆分,并对乘法操作数的尾数进行编码,得到乘数尾数部分积;第二级流水段用于实现阶移位操作、两级部分积压缩操作和前导零操作;第三级流水段用于实现并行的双通道加法操作、前导零预测操作、前导零预测并行纠错操作和特殊前导零预测纠错操作;第四级流水段用于实现规格化移位、非规格化移位和右移移位操作;第五级流水段用于实现舍入操作和精度选择。相较于现有技术而言,由于工艺的进步,面积对性能的约束影响降低,本实施例基于并行优先的原则,在少量牺牲面积的情况下,在第三级流水段中增加了前导零预测并行纠错操作以及特殊情况前导零预测纠错操作,在第四级流水段中设置了并行的规格化左移、非规格化左移移位器和右移移位器,从而不仅能够处理特殊的数据格式,提高运算精度,而且可以将现有采用串行方式实现的逻辑,在本技术中通过并行的方式实现,减少了整个结构的关键路径长度,同时均匀划分各级流水段,避免了时序的浪费,实现了高性能计算,具有结构原理简单、实现简便、效率更高等优点。
105.在一个实施例中,如图5所示,本发明实施例提供了一种流水线结构的浮点融合乘加方法,所述方法包括以下步骤:
106.s1.响应于浮点操作数的输入,对所述浮点操作数的符号位、指数和尾数进行拆分,并对乘法操作数的尾数进行编码,得到乘数尾数部分积;其中,所述浮点操作数包括乘法操作数和加法操作数;
107.s2.对所述乘数尾数部分积进行两级压缩,并对所述加法操作数的尾数进行对阶移位,以及对所述浮点操作数的尾数进行前导零操作;
108.s3.基于并行的双通道加法操作、前导零预测操作、前导零预测并行纠错操作以及特殊前导零预测纠错操作进行处理;其中,前导零预测并行纠错操作包括利用前导零预测并行纠错树,对两级压缩后的乘数尾数部分积和对阶移位后的加法操作数尾数进行处理,得到前导零预测并行纠错结果;特殊前导零预测纠错操作包括对前导零操作后的浮点操作数尾数进行特殊前导零预测纠错操作,得到特殊前导零预测纠错结果;
109.s4.根据前导零预测并行纠错结果和特殊前导零预测纠错结果,得到前导零预测结果,根据前导零预测结果,对由对阶移位后的加法操作数尾数产生的加法结果并行进行尾数规格化移位和尾数非规格化左移,得到移位尾数;所述加法结果是根据加法操作数和乘法操作数相加产生的;
110.s5.对所述移位尾数进行尾数舍入,得到尾数舍入结果,将所述尾数舍入结果同时进行不同精度数尾数的选择,以筛选出最终的浮点结果。
111.需要说明的是,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
112.关于一种流水线结构的浮点融合乘加方法的具体限定可以参见上述对于一种流水线结构的浮点融合乘加装置的限定,此处不再赘述。本领域普通技术人员可以意识到,结合本技术所公开的实施例描述的各个模块和步骤,能够以硬件、软件或者两者结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
113.本发明实施例提供了一种流水线结构的浮点融合乘加方法,所述方法将各个阶段的工序均匀化,不仅增加了前导零预测并行纠错操作以及特殊情况前导零预测纠错操作,同时设置了并行的规格化左移、非规格化左移移位器和右移移位器,以及将所述尾数舍入结果同时进行不同精度数尾数的选择,以筛选出最终的浮点结果,从而通过并行的方式加快了浮点融合乘加方法的执行速度,通过增加的前导零预测并行纠错操作以及特殊情况前导零预测纠错操作实现了对特殊数据格式的处理。
114.本发明实施例还提供了一种处理器,包括处理器本体和设于处理器本体中的如上述的浮点融合乘加装置。
115.图6是本发明实施例提供的一种计算机设备,包括存储器、处理器和收发器,它们之间通过总线连接;所述处理器包括处理器本体和设于处理器本体中的如上述的浮点融合乘加装置。
116.其中,存储器可以包括易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者;处理器可以是中央处理器、微处理器、特定应用集成电路、可编程逻辑器件或其组合。通过示例性但不是限制性说明,上述可编程逻辑器件可以是复杂可编程逻辑器件、现场可编程逻辑门阵列、通用阵列逻辑或其任意组合。
117.另外,存储器可以是物理上独立的单元,也可以与处理器集成在一起。
118.本领域普通技术人员可以理解,图6中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有相同的部件布置。
119.本发明实施例提供的一种流水线结构的浮点融合乘加装置、方法及处理器,其一种流水线结构的浮点融合乘加装置通过五级流水段实现了对特殊数据格式的处理,同时通过设计的并行方式,减少了整个结构的关键路径长度,加快了执行速度,节省了执行时间。
120.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机
指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如ssd)等。
121.本领域技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。
122.以上所述实施例仅表达了本技术的几种优选实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本技术的保护范围。因此,本技术专利的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种流水线结构的浮点融合乘加装置,其特征在于,包括:第一级流水段、第二级流水段、第三级流水段、第四级流水段和第五级流水段;其中,所述第三级流水段包括并行的双路加法处理模块、前导零预测模块、前导零预测并行纠错模块和特殊前导零预测纠错模块;第一级流水段,用于响应于浮点操作数的输入,对所述浮点操作数的符号位、指数和尾数进行拆分,并对乘法操作数的尾数进行编码,得到乘数尾数部分积;其中,所述浮点操作数包括乘法操作数和加法操作数;第二级流水段,用于对所述乘数尾数部分积进行两级压缩,并对所述加法操作数的尾数进行对阶移位,以及对所述浮点操作数的尾数进行前导零操作;第三级流水段,用于基于前导零预测并行纠错树,对两级压缩后的乘数尾数部分积和对阶移位后的加法操作数尾数进行处理,得到前导零预测并行纠错结果,并对前导零操作后的浮点操作数尾数进行特殊前导零预测纠错操作,得到特殊前导零预测纠错结果;第四级流水段,用于根据前导零预测并行纠错结果和特殊前导零预测纠错结果,得到前导零预测结果,根据前导零预测结果,对加法结果并行进行尾数规格化移位和尾数非规格化左移,得到移位尾数;所述加法结果是根据加法操作数和乘法操作数相加产生的;第五级流水段,用于对所述移位尾数进行尾数舍入,得到尾数舍入结果,将所述尾数舍入结果同时进行不同精度数尾数的选择,以筛选出最终的浮点结果。2.如权利要求1所述的一种流水线结构的浮点融合乘加装置,其特征在于,所述第二级流水段包括:部分积两级压缩模块,用于将所述乘数尾数部分积输入第一级部分积压缩器,得到部分积零和中间部分积,将所述中间部分积输入第二级部分积压缩器,得到伪和信号和伪进位信号;加数尾数处理模块,用于根据移位量对所述加法操作数的尾数进行对阶移位,得到加数移位值,根据符号位和操作类型确定运算方式,根据运算方式对加数移位值进行处理,得到加数部分积;其中,所述移位量为将乘法操作数的指数和与加法操作数的指数作差得到的指数差值;前导零模块,用于确定尾数前导零个数,并基于所述尾数前导零个数,对所述浮点操作数的尾数进行前导零操作,得到浮点尾数前导零结果;异常处理模块,用于对由第一级流水段对所述浮点操作数拆分得到的非数、无穷和部分零进行异常处理,得到异常处理结果。3.如权利要求2所述的一种流水线结构的浮点融合乘加装置,其特征在于,第三级流水段还包括压缩编码模块;所述压缩编码模块,用于对所述加数部分积、所述部分积零、所述伪和信号和所述伪进位信号依次进行压缩、编码操作,得到压缩编码信号;所述双路加法处理模块,用于将压缩编码信号输入双通道加法器,得到两个加法中间结果;所述前导零预测模块,用于对所述压缩编码信号进行前导零预测,得到前导零值;所述前导零预测并行纠错模块,用于将压缩编码信号输入前导零预测并行纠错树,得到前导零预测并行纠错结果,所述前导零预测并行纠错结果包括正纠错信号和负纠错信
号;所述特殊前导零预测纠错模块,用于利用预设的特殊前导零预测纠错规则,对所述浮点尾数前导零结果依次进行左移位和特殊前导零预测纠错,得到特殊前导零预测纠错结果。4.如权利要求3所述的一种流水线结构的浮点融合乘加装置,其特征在于,所述特殊前导零预测纠错规则具体为:在对所述加法操作数的尾数进行对阶移位时,若加法操作数移位超过预设位的计算范围,则对所述加法结果的最低位进行补偿。5.如权利要求3所述的一种流水线结构的浮点融合乘加装置,其特征在于,所述第四级流水段包括:尾数移位模块,用于根据所述前导零预测并行纠错结果、所述前导零值和所述特殊前导零预测纠错结果,得到前导零预测结果,根据加法中间结果的正负对所述加法中间结果进行处理,得到加法结果,根据前导零预测结果,将加法结果进行规格化左移,得到规格化左移尾数,同时基于由第三级流水段根据指数差值确定的最小指数差,将加法结果分别进行非规格左移和右移移位,得到非规格左移尾数和右移移位尾数;尾数选择模块,用于基于所述最小指数差,对规格化左移尾数、非规格左移尾数和右移移位尾数进行选择,得到移位尾数;符号位选择模块,用于根据加法中间结果对乘加符号进行计算,得到舍入符号位,所述乘加符号由第一级流水段对所述浮点操作数拆分得到的符号位进行异或操作得到。6.如权利要求5所述的一种流水线结构的浮点融合乘加装置,其特征在于,所述尾数选择模块,具体用于:根据所述最小指数差,生成尾数选择控制信号,所述尾数选择控制信号包括规格化控制信号和非规格化控制信号;若所述尾数选择控制信号为规格化控制信号,则选择规格化左移尾数作为移位尾数;若所述尾数选择控制信号为非规格化控制信号且当前操作的数据为单精度数据或双精度数据,则选择非规格左移尾数作为移位尾数;若所述尾数选择控制信号为非规格化控制信号且当前操作的数据为双精度规格的单精度数据,则选择右移移位尾数作为移位尾数。7.如权利要求2所述的一种流水线结构的浮点融合乘加装置,其特征在于,所述第五级流水段包括:舍入模块,用于将所述移位尾数进行舍入操作,得到尾数舍入结果;精度数选择模块,用于在不同的精度下对尾数舍入结果、舍入符号位和指数同时并行选择,并根据所述异常处理结果筛选出最终的浮点结果,其中,尾数舍入结果精度选择包括单精度数尾数选择、双精度规格单精度数尾数选择和双精度数尾数选择三种中的部分或全部,符号位舍入结果选择包括单精度符号位选择、双精度规格单精度数符号位选择和双精度数符号位选择三种中的部分或全部,指数选择包括单精度数指数选择、双精度规格单精度数指数选择和双精度数指数选择三种中的部分或全部。8.一种流水线结构的浮点融合乘加方法,其特征在于,所述方法包括以下步骤:响应于浮点操作数的输入,对所述浮点操作数的符号位、指数和尾数进行拆分,并对乘
法操作数的尾数进行编码,得到乘数尾数部分积;其中,所述浮点操作数包括乘法操作数和加法操作数;对所述乘数尾数部分积进行两级压缩,并对所述加法操作数的尾数进行对阶移位,以及对所述浮点操作数的尾数进行前导零操作;基于并行的双通道加法操作、前导零预测操作、前导零预测并行纠错操作以及特殊前导零预测纠错操作进行处理;其中,前导零预测并行纠错操作包括利用前导零预测并行纠错树,对两级压缩后的乘数尾数部分积和对阶移位后的加法操作数尾数进行处理,得到前导零预测并行纠错结果;特殊前导零预测纠错操作包括对前导零操作后的浮点操作数尾数进行特殊前导零预测纠错操作,得到特殊前导零预测纠错结果;根据前导零预测并行纠错结果和特殊前导零预测纠错结果,得到前导零预测结果,根据前导零预测结果,对加法结果并行进行尾数规格化移位和尾数非规格化左移,得到移位尾数;所述加法结果是根据加法操作数和乘法操作数相加产生的;对所述移位尾数进行尾数舍入,得到尾数舍入结果,将所述尾数舍入结果同时进行不同精度数尾数的选择,以筛选出最终的浮点结果。9.一种处理器,其特征在于:包括处理器本体和设于处理器本体中的如权利要求1~7中任意一项所述的浮点融合乘加装置。10.一种计算机设备,其特征在于:包括处理器和存储器,所述处理器与所述存储器相连,所述处理器包括处理器本体和设于处理器本体中的如权利要求1~7中任意一项所述的浮点融合乘加装置。
技术总结
本发明涉及数字信号处理技术领域,尤其涉及一种流水线结构的浮点融合乘加装置、方法及处理器,包括用于对乘法操作数的尾数进行编码的第一级流水段;用于对乘数尾数部分积进行两级压缩的第二流水段;包括并行的双路加法处理模块、前导零预测模块、前导零预测并行纠错模块和特殊前导零预测纠错模块的第三级流水段;用于实现规格化左移、非规格化左移移位器和右移移位的第四级流水段;用于对符号位、指数和舍入尾数并行进行不同精度数的选择,以得到浮点结果的第五级流水段。本发明通过五级流水段实现浮点融合乘加,不仅能够减少了整个结构的关键路径长度,而且可以使流水线划分均匀,避免了时序的浪费,实现了高性能计算。实现了高性能计算。实现了高性能计算。
技术研发人员:马思杰 冯春阳 李坤 刘刚
受保护的技术使用者:北京市合芯数字科技有限公司
技术研发日:2023.06.16
技术公布日:2023/8/28
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/