一种浮点乘法器及其兼容双精度和双单精度计算的方法

文档序号:6538310阅读:393来源:国知局
专利名称:一种浮点乘法器及其兼容双精度和双单精度计算的方法
技术领域
本发明涉及一种微处理器中的浮点乘法器,尤其涉及一种浮点乘法器及其兼容双精度和双单精度计算的方法。本发明可以使得64比特的浮点乘法器能够执行双精度浮点乘法指令和双单精度(MIPS V指令集中的MUL.PS,后缀PS为pairedsingle的简称,见MIPS V instruction set,MIPS是Microprocessor withoutInterlocked Piped Stages的简称)的浮点乘法指令。
背景技术
随着科学计算以及多媒体的普及,数据的计算要求精度越来越高,为了提高乘法器的性能,现在的微处理器结构中都用硬件实现了支持IEEE754标准中双精度和单精度格式的浮点乘法器(其中Intelx86实现了扩展到80比特的浮点乘法指令),执行的节拍数在2~4拍之间。IEEE754标准对32位单精度格式和64位双精度做了如下表1和表2的规定,表1和表2中隐藏了尾数的整数位1,加上常为1的整数位,单精度的尾数为24位,双精度尾数为53位。表3是MIPS V的双单精度数据格式。可以看出一个64位长度的数据可以表示为一个64位的双精度浮点数或者两个32位的单精度浮点数。
IEEE754标准中单精度格式表1

IEEE754标准中双精度格式表2

MIPS V中双单精度格式表3

硬件流水的浮点乘法器实现通常方法是,例如要实现双精度浮点尾数53位×53位的乘法,先对乘数采用基2的booth(波茨)编码产生27个部分积(partial product),再利用一个106比特长,压缩比为27∶2的wallace tree(华莱士树)组成的平行四边形树矩阵,压缩成为2个106比特部分积,然后再把这两个部分积相加,得到106比特长度的乘法结果,最后进行舍入和规格化运算,如果乘法结果≤2则结果向左移1位,并根据舍入模式对乘法结果的低53位进行舍入运算,最后得到53比特乘法结果。在乘法器实现过程中,106比特长度压缩比为27∶2乘法压缩树要耗费大量的硬件资源,是乘法器面积的主要部分。
对于一个单精度尾数24位×24位比特的浮点乘法,在经过booth-2(基2的波茨)编码后产生13个部分积,用13∶2的压缩树压缩后,产生两个48比特的部分积,然后用48比特加法器进行相加得到48比特结果,进行48比特舍入和规格化后得到24比特结果。比较双精度和单精度的运算单元,压缩树∶双精度为106比特压缩比为27∶2,单精度为48比特压缩比13∶2;加法器双精度为106比特,单精度为48比特;舍入和规格化单元双精度为106比特,单精度为48比特。可以得出单精度的浮点乘法的硬件要比双精度少一半多,而且双精度完全可以在数据长度以及部分积数目方面完全覆盖单精度。所以目前实现的64比特和32比特浮点乘法器中为了减少硬件面积,一般都使用双精度和单精度兼容的硬件结构,并在硬件实现所需的面积和运算性能中间取得一个权衡点。要么为了省硬件,只用一个53位×27位比特的乘法树实现单精度乘法,在双精度计算时用这个53位×27位比特的乘法树循环压缩2次,比单精度多用一个节拍得到结果,牺牲了双精度乘法的效率(见1.A dual precision IEEEfloating-point multiplier,Guy Even,Silvia M.Mueller,Peter-Michael Seidel,INTRGRATION,the VLSI journal 29(2000)167-180)。要么为了提高双精度乘法的运算性能,用两个53位×27位的乘法树压缩双精度,降低双精度运算执行的时间,但这种结构在进行单精度的乘法运算只用到一个53位×27位的压缩树,另一个53位×27位的压缩树处于空闲状态,硬件在这时是浪费的(见中国专利01141498.7)。

发明内容
本发明的目的是使得64比特浮点乘法器在支持双精度浮点乘法的基础上,比通用双精度浮点乘法器增加尽量少的硬件,使得单精度执行时硬件利用率更高,从而能够执行双单精度的浮点乘法指令,在3拍后同时得到两个单精度数的浮点乘法结果,或者1个双精度浮点乘法结果,提高了乘法器的单精度运算性能;从而提供一种浮点乘法器及其兼容双精度和双单精度计算的方法。
为了达到上述目的,本发明提供了一种双单精度连续编码填充方法(方法1)。连续编码填充方法使得双单精度乘法尾数长度从24×2比特填充为和双精度相同的53比特,从而和双精度乘法的53比特共用一个booth-2(基2的波茨)编码器,使得在双精度和双单精度的数据格式下都产生27个部分积。
本发明还提供了一种27个部分积压缩树截断和压缩树复合方法(方法2)。截断的2组压缩树分别能产生2组压缩结果,每组有2个部分积,这2×2个部分积分别对应着双单精度两组部分积。在双精度运算时这2×2个部分积通过4∶2的压缩树复合,最后得到双精度乘法的2个部分积。利用这种方法,做到了双单精度运算时复用双精度的乘法压缩树,整个乘法器的压缩树的规模在没有增加的情况下,可以同时执行两个单精度操作。
本发明提供了一种应用上述两种方法的浮点乘法器,包括双单精度连续编码填充单元1,第一选择器2,基2的波茨编码器3,13∶2的压缩树4,14∶2的压缩树5,48比特加法器6,4∶2的压缩复合树7,第二选择器8,106比特加法器9,48比特单精度舍入和规格化单元10,106比特双精度舍入和规格化单元11以及双精度和双单精度指数处理单元12,其中双单精度连续编码填充单元1,对应着本发明中方法1的实现;13∶2的压缩树4对应着本发明中方法2中的第1组截断压缩树,14∶2的压缩树5对应着本发明中方法2中的第2组截断压缩树,4∶2的压缩复合树7对应着方法2中的4∶2的压缩复合树;第一选择器2,48比特的加法器6,第二选择器8以及48比特单精度舍入和规格化单元10是相对于通常兼容单精度和双精度的64比特乘法器所增加的硬件单元。
本发明中浮点乘法器的单精度数据通路复用了双精度数据通路,包括13∶2的压缩树4,14∶2的压缩树5,106比特加法器9以及106比特双精度舍入和规格化单元11。在增加尽量少硬件的情况下,单精度乘法指令执行速度达到普通浮点乘法器的2倍,每拍可得到两个单精度浮点乘法结果,或者一个双精度乘法的结果;两个并行压缩树都得到充分利用,不存在单精度硬件浪费问题。


图1是本发明中双单精度连续编码填充方法示意图;图2是本发明中27个部分积压缩树截断和压缩树复合方法示意图;图3是本发明的双精度和双单精度兼容计算的乘法器硬件结构图;图面说明1是双单精度连续编码填充单元;2是第一选择器,为53比特的2选1的选择器,输出结果为53比特;3是基2的波茨编码器,输出结果为27个部分积,每个部分积为53比特;4是13∶2的压缩树,压缩比为13∶2,输出结果长度为78比特;5是14∶2的压缩树,压缩比为14∶2,输出结果长度为80比特;6是48比特的加法器;7是4∶2的压缩复合树,输入2个78比特部分积和2个80比特部分积,输出2个部分积,每个部分积106比特;8是第二选择器,为2个106比特的2选1选择器,输入为2个106比特数据,输出为2个106比特数据;9是106比特的加法器;10是48比特单精度舍入和规格化单元,输入48比特数据,规格化舍入后输出24比特数据;11是106比特双精度舍入和规格化单元,输入106比特数据,规格化舍入后输出53比特数据;12是双精度和双单精度指数处理单元。
图3中操作数a是64比特,在双单精度时是按照表3格式的2个单精度数据,双精度时是按照表2格式的1个双精度数据;操作数b也是64比特,在双单精度时是按照表3格式的2个单精度数据,双精度时是按照表2格式的1个双精度数据。
图3中双精度和双单精度兼容的乘法器尾数处理部分有3个流水节拍第一个流水拍由双单精度连续编码填充单元1,第一选择器2,基2的波茨编码器3,13∶2的压缩树4和14∶2的压缩树5组成。
第二个流水节拍由48比特加法器6,4∶2的压缩复合树7,第二选择器8和106比特加法器9组成。
第三个流水节拍由48比特单精度舍入和规格化单元10和106比特双精度舍入和规格化单元11组成。
具体实施例方式
下面参照附图和实施例详细说明本发明的技术方案。
支持双单精度和双精度兼容的3拍乘法器硬件结构如图3所示,本乘法器中应用了双单精度连续编码填充方法(方法1)和27个部分积压缩树截断和压缩树复合方法(方法2)。
图1中,图1a表示双精度的53比特尾数直接用53比特的基2波茨编码器进行编码,不需要填充;图1b是双单精度连续编码填充方法(方法1)示意图把一个单精度尾数的24比特填充到53比特编码的0~23比特,然后填充2比特0,然后把另一个单精度尾数的24比特填充到53比特数据26~49比特,50~52比特填充3比特0,这样就把双单精度尾数24×2比特填充为53比特。从图1b可以看出部分积0~12对应着第一个单精度的部分积,部分积13~27对应着第二个单精度的部分积,其中部分积27为0。这部分是在图3中双单精度连续编码填充单元1中完成的。利用这种填充方法把双单精度填充为53比特,做到了和双精度共用同一个53比特的基2波茨编码器,而且这种填充方法做到了双单精度两组部分积的自然分割。
图2中,基于图1中双单精度连续编码填充方法,在双精度时需要将27个部分积压缩为2个部分积,而第一个单精度需要将13个部分积压缩为2个部分积,第二个单精度需要将14个部分积压缩为2个部分积。所以把双精度所需的27∶2的压缩树,分割为2个压缩树,一个是13∶2的压缩树,一个是14∶2的压缩树,这两个压缩树可以用来分别压缩第一个单精度的13个部分积和第二个单精度的14个部分积。这两个压缩树的4个结果在双精度时只需要进行错位为26比特的4∶2的复合再压缩,就会得到双精度的27个部分积压缩后的2个部分积。这样双单精度复用了双精度13∶2压缩树和14∶2压缩树,整个压缩树的规模是和27∶2的压缩树是相同的,并没有增加额外的压缩树硬件。截断的2个压缩树分别对应着图3中的13∶2的压缩树4和14∶2压缩树5,复合压缩树对应着图3中4∶2的压缩复合树7。本发明中把这种方法称为27个部分积压缩树截断和压缩树复合方法(方法2)。
下面是附图3中各个单元的具体实现功能的描述单精度连续编码填充单元1,用于使得双单精度填充为53比特,具体填充方法参照图1b,把一个单精度尾数的24比特填充到53比特编码的0~23比特,然后填充2比特0,然后把另一个单精度尾数的24比特填充到53比特数据26~49比特,50~52比特填充3比特0。
第一选择器2,在单精度时选择输出双单精度填充后的53比特数据,在双精度时选择输出双精度尾数得53比特。
基2的波茨编码器3,具体编码方法是现在乘法器中所通用的编码每次从低到高位取编码2个比特(yi+1yi)进行编码,看3个比特(yi+1yiyi-1),第3个比特yi-1是考察位,是前面一组编码比特的高位 n是操作数的位数),可以看出booth-2(基2的波茨)编码能产生个 部分积(可以参照附图1中每个部分积所对应的比特来看)。下表是3个编码比特所对应得编码结果,在表中M表示被乘数,例如-2M表示负的2倍被乘数。双精度和双单精度的53比特数据编码后都得到27个部分积,对于双单精度来说部分积0~12对应着第一个单精度编码后的部分积,13~27对应着第二个单精度编码后的部分积,其中第27个部分积为0。

13∶2的压缩树4,压缩比为13∶2,长度为78比特,用来压缩附图2中截断的13个部分积,在单精度时,这13个部分积对应着第一个单精度的部分积,双精度时对应着部分积0~27中的0~13部分积。
14∶2的压缩树5,压缩比为14∶2,长度为80比特,用来压缩图2中截断的14个部分积,在单精度时,这14个部分积对应着第二个单精度的部分积(13个部分积为有效数据,1个部分积为0),双精度时对应着部分积中的14~27部分积。
48比特的加法器6,对13∶2压缩树4输出的2个部分积的低48比特进行相加,得到第一个单精度乘法的48比特结果。
4∶2的压缩复合树7,用来压缩双精度计算时13∶2压缩树4输出的2个78比特部分积和14∶2压缩树5输出的2个80比特部分积,得到双精度的27个部分积的压缩后的2个106部分积。
第二选择器8,在单精度时选择直接从14∶2压缩树的2个80比特结果(低位填充29比特0,高位是压缩数的76~0比特合成106比特),在双精度时选择经过4∶2压缩复合树7之后的2个106比特结果。
106比特加法器9,用来相加第二选择器8输出的数据,得到106比特的结果。
48比特单精度舍入和规格化单元10,用来对第一个单精度的48比特乘法结果进行规格化和舍入得到24比特的第一个单精度的乘法尾数结果。
106比特双精度舍入和规格化单元11,用来对双精度的106比特乘法结果进行舍入和规格化得到53比特的双精度乘法尾数结果。在单精度时由于第二选择器8在生成106比特的单精度结果时低位填充29比特0,正好和双精度的舍入点对齐,所以可以复用双精度的规格化和舍入单元得到53比特的舍入后结果,其中0~23位是第二个单精度的乘法尾数结果。
双精度和双单精度指数处理单元12,在双精度时对2个11比特指数进行相加,在双单精度时对分别对第一个单精度的2个8比特指数进行相加和对第二个单精度的2个8比特指数进行相加。这个单元包括2个加法器,1个11比特加法器,另一个8比特加法器,双单精度中的一个单精度复用双精度的11比特加法器。在这里统称为双精度和双单精度指数处理单元。
以下为本发明中乘法器双精度和双单精度计算的步骤双精度计算时步骤0,双精度和双单精度指数处理单元12计算输出双精度乘法的11比特指数结果。
步骤1,第一选择器2对操作数b的尾数(见图3)和其经过双单精度连续编码填充单元1的结果进行选择;双精度时选择信号是1,所以第一选择器2输出双精度的53比特尾数;步骤2,步骤1输出的53比特经过基2的波茨编码器3,得到27个部分积。
步骤3,步骤2输出27个部分积中0~12部分积送到13∶2的压缩树4,13~27部分积送到14∶2的压缩树5,同时进行压缩;13∶2的压缩树输出压缩后2个的78比特的部分积,14∶2的压缩树输出压缩后的2个80比特部分积。
步骤4,步骤3输出的4个部分积利用4∶2的复合树7进行错位复合压缩;14∶2压缩树输出的2个部分积比13∶2压缩树的输出2个部分积左移26位(见附图2),经过4∶2的压缩复合树7后输出2个106比特的压缩结果;步骤5,步骤4输出的2个106比特部分积利用第二选择器8与14∶2压缩树的双单精度进行选择;双精度时选择信号是1,所以选择器输出的是2个106比特的双精度部分积;步骤6,步骤5输出的2个106比特的部分积利用106比特加法器9计算,得到1个106比特的加法结果,即双精度尾数53位×53位的106比特结果;步骤7,步骤6输出的数据经过106比特双精度的舍入和规格化单元11得到53比特的乘法尾数结果;步骤8,步骤7输出的53比特和步骤0输出11比特的指数合成64比特的浮点双精度数,然后从64比特结果总线上输出。
单精度计算时步骤00,双精度和双单精度指数处理单元12计算输出双单精度乘法的2个8比特指数结果;步骤10,双单精度经过双单精度连续编码填充单元1进行编码填充,由48比特变为和双精度兼容的53比特;步骤20,步骤10输出的53比特的双单精度数据利用第一选择器2和双精度的53比特数据进行选择,双单精度时选择标志为0,选择器的输出结果为双单精度的53比特;步骤30,步骤20输出的53比特经过基2的波茨编码器3得到27个部分积,其中0~12部分积是第一个单精度的部分积,13~27部分积是第二个单精度的部分积;步骤40,步骤30输出的27个部分积中0~12送到13∶2的压缩树4,13~27部分积送到14∶2的压缩树5,同时进行压缩,同时得到第一个单精度的2个78比特部分积,和第二个单精度的2个80比特的部分积;步骤50,步骤40输出第一单精度个乘法的2个78比特部分积的低48比特送到48比特加法器6;步骤60,步骤50输出的结果利用48比特单精度的舍入规格化单元10得到24比特的第一个单精度的乘法尾数结果;步骤70,步骤40输出的第二个单精度乘法的2个部分积的76~0比特在低位填充29比特0得到2个106比特送到第二选择器8,和双精度4∶2复合压缩结果2个106比特的结果进行选择,双单精度时选择信号为0,选择的是第二个单精度的106比特;步骤80,步骤70输出的第二个单精度乘法的106比特结果利用106比特加法器9进行相加得到106比特结果;步骤90,步骤80输出第二个乘法结果的106比特经过步骤7的低位填充后和和双精度的106比特具有相同的舍入比特,所以可以利用双精度的舍入和规格化单元11,计算得到第二个单精度乘法尾数结果53比特,其中低24位是第二个单精度乘法的尾数结果;步骤100,步骤60输出的第一个单精度乘法的24比特尾数和步骤00输出的其8比特指数合并后得到32比特数据,步骤90输出的第二个单精度24比特尾数和步骤00输出的其8比特指数合并后得到32比特数据。第一个单精度的32比特数据和第二个单精度的32比特数据合并为64比特结果,然后从64比特结果总线上输出。
下面列举两个具体的实施例子,通过一条双精度浮点乘法和一条双单精度浮点乘法的执行过程,来说明本发明的浮点乘法器实现双单精度和双精度乘法指令的执行步骤。
例一浮点双精度乘法(以16进制表示)0x3ff0000000000000×0x3fffffffffffffff。
1. 53比特尾数经过第一选择器2后,输出0x10000000000000。
2.先利用基2的波茨编码器3,把乘数0x3ff0000000000000的53比特尾数(52比特前面加入隐含1)0x10000000000000利用上面的编码表格编码为{1,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0},然后把编码的结果和被乘数0x3fffffffffffffff的尾数0x1fffffffffffff(53比特)尾数相乘得到27个部分积,0~26个部分积全为0,第27个部分积是0x1fffffffffffff。
3.第0~12个部分积送到13∶2的压缩树4中进行压缩,第13~26个部分积送到14∶2的压缩树5中进行压缩,13∶2的压缩树4得到的结果是78比特的0x00000000000000000000和0x000000000000000000,14∶2的压缩树5得到的结果是80比特的0x1fffffffffffff000000和0x00000000000000000000。
4.这4个部分积利用4∶2的压缩复合树7进行错位复合,得到两个106比特的部分积0x1fffffffffffff0000000000000和0x000000000000000000000000000。
5.这两个部分积经过第二选择器8后输出两个106比特的部分积0x1fffffffffffff0000000000000和0x000000000000000000000000000。
6.步骤5输出的数据送入一个106比特加法器9中,得到的加法结果是0x1fffffffffffff0000000000000。
7.步骤6输出的数据经过106比特双精度舍入和规格化11后得到53比特的乘法结果是0x1fffffffffffff。
8.从7得到结果和指数结果3ff联并,得到最后的乘法结果是0x3fffffffffffffff。
例二浮点双单精度乘法(以16进制表示)0x3f8000003f800000×0x3fffffff3fffffff。
1.双单精度乘数0x3f8000003f800000的尾数经过双单精度连续编码填充单元1填充为53比特0x02000000800000。
2.经过第一选择器2,选择输出53比特0x02000000800000。
3.利用基2的波茨编码器3,编码成为{0,1,-2,0,0,0,0,0,0,0,0,0,0,0,1,-2,0,0,0,0,0,0,0,0,0,0,0}。把编码的结果和被乘数0x3fffffff 3fffffff的两个尾数进行相乘得到27个部分积,第0~12个部分积是第一个单精度的乘法结果,第13~27是第二个单精度的乘法结果。
4.对于第一个单精度,把0~12个部分积送到13∶2的压缩树4中压缩得到78比特两个部分积0x000000007fffff800000和0x00000000000000000000。同时对于第二个单精度,把从步骤3出来13~27个部分积送到14∶2的压缩树5中进行压缩得到80比特的两个部分积0x000000007fffff800000和0x00000000000000000000。
5.把步骤4输出的两个部分积送到48比特的加法器6中(高30比特舍掉)得到最后的尾数结果0xffffff000000。
6.把步骤5输出的数据送入48比特单精度舍入和规格化单元10,得到24比特0xffffff。
7.步骤4输出的2个部分积(低位填充29比特0,高位是两个部分积的76~0比特)与4∶2的压缩复合树的7输出的部分积经过第二选择器8选择输出两个106比特部分积0x000000007fffff800000和0x00000000000000000000。
8.步骤7输出的2个部分积然后送到106比特加法器9中得到0x00000000ffffff0000000000000的结果。
9.步骤8输出的数据利用106比特双精度舍入和规格化单元11进行和双精度相同的对低位的53比特进行舍入和规格化,得到53比特结果0x00000000ffffff,低24为第二个单精度结果0xffffff。
10.第一个单精度24比特尾数和指数结果0x7f合并后得到第一个单精度乘法的结果0x3fffffff,第二个单精度24比特尾数和指数0x7f合并后得到第二个单精度乘法的结果0x3fffffff。然后第一个单精度的32比特结果和第二个单精度的32比特结果连接后得到64比特的双单精度的乘法结果0x3fffffff3fffffff。
综上所述,本发明所提供的乘法器设计有益效果是1.在单精度计算时尽量复用双精度的硬件结构,只增加占通用64比特浮点乘法器1%~2%的硬件,单精度计算的速度提高了2倍,一次可以得到2个单精度结果。在比通用双精度兼容单精度的浮点乘法器的硬件多增加了一个48比特加法器,一个48比特单精度的舍入规格化运算单元,2个106比特2选1选择器以及一个53比特2选1选择器的情况下,做到了双精度和双单精度计算的兼容。得到两个单精度和一个双精度乘法结果的延迟都是3拍,在提高单精度产出率的同时并未降低双精度的延迟。
2.本发明克服了在中国专利01141498.7中浮点乘法器在单精度执行时的只用到一个53位×27位压缩树,另一个53位×27位压缩树空闲的硬件浪费问题,同时也在双精度计算时比只用一个53位×27位的压缩树的方法提高了效率(这种情况双精度比单精度晚一拍出结果,而本发明中双精度和单精度计算的节拍相同)。本发明使用了不同于中国专利01141498.7的两个并行53位×27位比特乘法压缩树,每拍可以执行两个单精度乘法(1个双单精度指令),得到两个单精度乘法的结果,两个并行压缩树都得到充分利用,不存在单精度硬件浪费问题,从而提高了单精度乘法的执行效率。
最后应说明的是以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种浮点乘法器,包括双单精度连续编码填充单元1,第一选择器2,基2的波茨编码器3,13:2的压缩树4,14:2的压缩树5,48比特加法器6,4:2的压缩复合树7,第二选择器8,106比特加法器9,48比特单精度舍入和规格化单元10,106比特双精度舍入和规格化单元11以及双精度和双单精度指数处理单元12,其中双单精度连续编码填充单元1,用于使得双单精度填充为53比特,输出给第一选择器;第一选择器2,为53比特2选1的选择器,在单精度时选择输出双单精度填充后的53比特数据,在双精度时选择输出双精度尾数的53比特;基2的波茨编码器3,用于对第一选择器2输出的数据进行基2的波茨编码,输出给13:2的乘法压缩树4和14:2的乘法压缩树5;13:2的乘法压缩树4,长度为78比特,用于压缩截断的13个部分积,在单精度时,这13个部分积对应着第一个单精度的部分积,双精度时对应着部分积0~27中的0-13部分积;14:2的乘法压缩树5,长度为80比特,用来压缩截断的14个部分积,在单精度时,这14个部分积对应着第二个单精度的部分积(13个部分积为有效数据,1个部分积为0),双精度时对应着部分积中的14~27部分积;48比特加法器6,用来对13:2压缩树输出的2个部分积进行相加得到第一个单精度乘法的48比特结果,输出给48比特的单精度舍入和规格化单元10;4:2的压缩复合树7,用来压缩13:2压缩树4输出的2个部分积和14:2压缩树5输出的2个部分积,得到双精度的27个部分积的压缩后的2个部分积;第二选择器8,是2个106比特2选1的选择器。在单精度时选择14:2压缩树输出的76~0比特,在其低位填充29比特0合成106比特,在双精度时选择4:2的压缩复合树7之后的2个106比特结果;106比特加法器9,用来对第二选择器8输出的数据进行相加,得到106比特的结果,送入106比特双精度舍入和规格化单元11;48比特单精度舍入和规格化单元10,用来对第一个单精度的48比特乘法结果进行舍入和规格化得到第一个单精度的24比特乘法尾数结果;106比特双精度舍入和规格化单元11,用来对双精度或第二个单精度的106比特乘法结果舍入和规格化得到53比特的双精度或第二个单精度乘法尾数结果;双精度和双单精度指数处理单元12,用来计算双精度和双单精度乘法的指数结果。
2.如权利要求1所述的一种乘法器,其特征在于,双精度和双单精度指数处理单元12,在双精度时对2个11比特指数进行相加,在双单精度时对分别对第一个单精度的2个8比特指数进行相加和对第二个单精度的2个8比特指数进行相加。
3.如权利要求2所述的一种乘法器,其特征在于,所述双精度和双单精度指数处理单元12包括2个加法器,1个11比特加法器,另一个8比特加法器,双单精度中的一个单精度复用双精度的11比特加法器。
4.如权利要求1所述的一种乘法器,其特征在于通过一种27个部分积压缩树截断和压缩树复合方法实现的13:2的乘法压缩树4,14:2的乘法压缩树5,4:2的压缩复合树7,双单精度压缩树复用了双精度的乘法压缩树。
5.一种乘法器的双单精度连续编码填充方法,其特征在于,把一个单精度尾数的24比特填充到53比特编码的0~23比特,然后填充2比特0,然后把另一个单精度尾数的24比特填充到53比特数据26~49比特,50~52比特填充3比特0,双单精度利用这种方法复用了双精度的基2的波茨编码器,做到了双单精度两组部分积的自然分割。
6.一种乘法器的27个部分积压缩树截断和压缩树复合方法,其特征在于,把双精度所需的27:2的压缩树,分割为2个压缩树,一个是13:2的压缩树,一个是14:2的压缩树,这两个压缩树可以用来分别压缩第一个单精度的13个部分积和第二个单精度的14个部分积,所述两个压缩树的4个结果在双精度时进行错位为26比特的4:2的复合再压缩,得到双精度27的部分积压缩后的2个部分积。
全文摘要
本发明涉及一种浮点乘法器及其兼容双精度和双单精度计算的方法,包括双单精度连续编码填充单元,第一选择器,基2的波茨编码器,13∶2的压缩树,14∶2的压缩树,48比特加法器,4∶2的压缩复合树,第二选择器,106比特加法器,48比特单精度舍入和规格化单元,106比特双精度舍入和规格化单元以及双精度和双单精度指数处理单元,本发明中浮点乘法器的双单精度复用了双精度的数据通路进行计算,包括基的波茨编码器,乘法树的压缩,106比特加法器以及106比特双精度舍入规格化单元。在增加尽量少硬件的情况下,单精度乘法指令执行速度达到普通浮点乘法器的2倍,每拍可得到两个单精度浮点乘法结果,或者一个双精度乘法的结果。
文档编号G06F7/48GK1831753SQ20051005360
公开日2006年9月13日 申请日期2005年3月8日 优先权日2005年3月8日
发明者齐子初, 张戈, 胡伟武 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1