本发明涉及高性能微处理器设计与低功耗设计领域,特别是涉及一种基于掩码的混合浮点乘法低功耗控制方法及装置。
背景技术:
随着半导体工艺的飞速发展,微处理器芯片集成规模与工作频率不断提高,导致芯片功耗急剧增长,对芯片的散热、能耗与可靠性等带来巨大挑战,因此,低功耗设计成为微处理器设计研究热点。浮点运算处理能力一直是高性能微处理器的重要评价指标,而表征这一能力的关键核心部件是浮点乘法或浮点乘加(包含浮点乘法)单元,同时为了追求超高性能浮点运算能力,现代高性能微处理器芯片往往会采用向量结构例化超多浮点乘法单元,因此,浮点乘法单元动态功耗也是高性能微处理器的功耗主要来源。
浮点乘法单元具有面积大、延迟长、结构复杂等特点,为了便于流水和节省硬件开销,一般采用基4-booth编码、有限符号扩展技术和进位保留加法器csa(carrysaveadder)等技术实现,首先采用基4-booth编码与有限符号扩展技术根据乘数对被乘数进行编码得到多个部分积,然后利用4-2csa或者3-2csa对部分积进行压缩求和得到最终乘法结果。
基4-booth编码和csa实现的乘法器比较常用的低功耗技术包括操作数隔离、时钟门控等,在此基础上,一种可行的低功耗控制方法为浮点乘法与定点乘法独立硬件实现,通常浮点乘法与定点乘法不会同时进行运算,因此该技术可以通过操作数隔离和时钟门控等控制在进行浮点乘法运算时定点乘法组合逻辑与时序逻辑不会进行动态翻转而降低功耗。但该技术的缺点是会增加逻辑开销,特别是对于集成超多浮点乘法单元的高性能微处理器,硬件开销与功耗控制尤其需要平衡考虑。
此外,定点乘法器一般比浮点乘法器大,比如在64位处理器中,64位定点乘法需要64*64大小的乘法器实现,而64位双精度浮点乘法只需要53*53位的乘法器实现,因此双精度浮点乘法完全可以复用64位定点乘法器,通过增加少量逻辑开销实现混合浮点乘法功能。
综上,为节省硬件开销,通常可以基于定点乘法器通过增加少量复用逻辑实现混合浮点乘法,而针对这种复用实现的混合浮点乘法器中执行浮点乘法运算时对部分无效逻辑进行功耗控制,可以在操作数隔离、时钟门控等基础上进一步降低浮点乘法功耗。
技术实现要素:
本发明目的是提供一种基于掩码的混合浮点乘法低功耗控制方法及装置,以较低的硬件开销实现混合浮点乘法器中进行浮点运算时自动控制无效逻辑翻转,以节省动态功耗,进而提高高性能微处理器能效比。
根据本发明的第一方面,提供了一种基于掩码的混合浮点乘法低功耗控制方法,包括:
确定混合浮点乘法操作类型,将标准的浮点乘数与被乘数尾数的高位填充全0,使所述浮点乘数、所述被乘数均与复用定点硬件乘法器输入位宽相同;
对于浮点乘法操作,将填充后的浮点乘数与被乘数根据预设的乘法编码规则获得编码部分积,同时根据预设的符号扩展规则得到部分积的两位符号扩展位与低两位补码位,并将两位符号扩展位填充至浮点被乘数部分积编码有效尾数的高两位,而低两位补码扩充至部分积低位,即实现了无效尾数移至高位操作,进而得到所有编码部分积。
进一步的,设置部分积掩码,即部分积有效尾数位(包括高两位符号扩展位与低两位补码位)对应掩码为0,其余无效尾数位掩码为1,控制部分积压缩求和过程中掩码为1的部分积尾数不参与求和运算,以降低部分积求和逻辑功耗;
对于定点乘法,不需要进行乘数与被乘数填充,直接采用定点乘法硬件实现乘法运算即可。
根据本发明的第二方面,提供了一种基于掩码的混合浮点乘法低功耗控制装置,浮点与定点乘法复用一套硬件设计实现,包括:
检测模块:硬件自动确定混合浮点乘法操作类型,对于浮点乘法,将符合标准的浮点乘数与被乘数尾数的高位填充全0,使浮点乘数、被乘数均与定点乘法位宽相同,进而复用定点乘法硬件实现乘法运算;
处理模块:对于浮点操作,将填充后的浮点乘数与被乘数根据预设的乘法编码规则、符号扩展规则获得部分积,并将无效尾数移至高位,设置部分积掩码,使得对应无效尾数位掩码为1;对于定点操作,部分积正常编码,并设置部分积掩码为全0。
计算模块:根据部分积掩码进行部分积求和,对应掩码为1的部分积编码位不参与压缩求和运算,掩码为0的部分积对应位参与压缩求和,如果是定点乘法操作,求和最后得到乘法结果,如果是浮点乘法操作,最后求和得到浮点尾数乘法结果,再根据指数与符号运算处理合并得到最终浮点乘法结果。
本发明的有益效果为:1.支持复用定点乘法硬件实现浮点乘法的低功耗控制,硬件自动检测浮点乘法运算,基于掩码控制高位扩充位编码,具有硬件开销低、易于逻辑实现、功耗控制简单等优点。2.通过硬件动态监测浮点乘法运算、硬件自动控制booth编码高位掩码、浮点乘法运算时掩码控制高位扩充位为全0以控制逻辑无效翻转。
附图说明
图1是根据本发明一实施例的一种基于掩码的混合浮点乘法低功耗控制方法的流程图;
图2是根据本发明一实施例的一种基于掩码的混合浮点乘法低功耗控制装置的结构图;
图3是根据本发明一实施例的掩码实现部分积编码高位无效尾数填充为0示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1示出了根据本发明一实施例的一种基于掩码的混合浮点乘法低功耗控制方法的流程,包括:
s11、确定混合浮点乘法操作类型,对于浮点乘法,将符合标准的浮点乘数与被乘数尾数的高位填充全0,使浮点乘数、被乘数均与定点乘法位宽相同,进而复用定点乘法硬件实现乘法运算。
在本说明书实施例中,以64位混合乘法为例,实际不限于此,定点乘法位宽为64位,为复用该乘法逻辑实现浮点乘法,需要将符合ieee754标准的双精度浮点乘数与被乘数53位尾数在高位填充全0,补齐至64位。
s12、对于浮点操作,将填充后的浮点乘数与被乘数根据预设的乘法编码规则、有限符号扩展规则获得部分积,并将无效尾数移至高位,进一步的,设置部分积掩码,使得对应无效尾数位掩码为1,对于定点操作,部分积正常编码,并设置部分积掩码为全0。
在本说明书实施例中,作为优选实施例,部分积编码采用基-4booth编码规则得到32个部分积,具体包括:
以双精度浮点乘数b的每两位对被乘数a进行编码;
对所有数i进行计算,并将计算结果转换成被乘数a的倍数。
在本说明书实施例中,编码实现如下表所示:
其中,以乘数b(…b2b1b0)为基准对被乘数a进行编码求部分积,对所有数i(i=0,1,2…,n/2-1),计算b2i+b2i-1-2b2i+1的值,并将结果转换成被乘数a的倍数。
在本说明书实施例中,作为优选,符号扩展采用有限符号扩展技术得到符号扩展位e,在有效尾数高两位填充符号扩展位1和e,具体如下:
e=1:部分积的符号与被乘数的符号相同,或者部分积为+0;
e=0:部分积的符号与被乘数的符号不同,或者部分积为-0。
作为优选,补码生成如下:
s=0:如果部分积是正数。
s=1:如果部分积是负数。
即若部分积是正数,则补码位填充为2’b00,若部分积是负数,则补码位填充为2’b01。
最后合并得到各部分积69位结果,从高至低依次为无效尾数11位、符号扩展位2位、部分积编码有效尾数54位、补码位2位。
s13、根据部分积掩码进行部分积求和,对应掩码为1的部分积编码位参与压缩求和运算,掩码为0的部分积对应位参与压缩求和,如果是定点乘法操作,求和最后得到乘法结果,如果是浮点乘法操作,最后求和得到浮点尾数乘法结果,再根据指数与符号运算处理合并得到最终浮点乘法结果。
图2示出了根据本发明一实施例的一种基于掩码的混合浮点乘法低功耗控制装置的结构,包括:
检测模块21:硬件自动确定混合浮点乘法操作类型,对于浮点乘法,将符合标准的浮点乘数与被乘数尾数的高位填充全0,使浮点乘数、被乘数均与定点乘法位宽相同,进而复用定点乘法硬件实现乘法运算;
处理模块22:对于浮点操作,将填充后的浮点乘数与被乘数根据预设的乘法编码规则、符号扩展规则获得部分积,并将无效尾数移至高位,进一步的,设置部分积掩码,使得对应无效尾数位掩码为1。对于定点操作,部分积正常编码,并设置部分积掩码为全0;
计算模块23:根据部分积掩码进行部分积求和,对应掩码为1的部分积编码位不参与压缩求和运算,掩码为0的部分积对应位参与压缩求和,如果是定点乘法操作,求和最后得到乘法结果,如果是浮点乘法操作,最后求和得到浮点尾数乘法结果,再根据指数与符号运算处理合并得到最终浮点乘法结果。
在本说明书实施例中,对于浮点尾数复用硬件实现的定点部分积编码,分以下两种情况:
1)部分积编码符号为正,则高位填充11个0,最高位有两位的符号扩展为1和e;
2)部分积编码符号为正,则高位填充11个1,最高位有两位的符号扩展为1和e。
显然,对于不同的编码,高位会得到不同的结果,而在进行部分积压缩求和时会导致逻辑翻转产生不必要的动态功耗,可以采用掩码技术控制这些逻辑位的翻转,比如进行64位浮点乘法运算时,最高11位掩码为1,即对应压缩求和的部分积编码高11位全部为0,而将部分积扩展符号两位1和e移至部分积编码(双精度浮点尾数部分积编码有效尾数为54位而非65位,即高11位为无效尾数)的54位有效尾数高两位扩充实现,如图3所示,因此,采用基于掩码的混合浮点乘法低功耗控制方法及装置:
对于浮点乘法,不再是对尾数进行简单的填充,部分积统一编码处理,对各个部分积编码均根据浮点运算进行特殊处理,将符号扩展位移至数据有效尾数前两位(浮点乘法的部分积编码有效尾数为54位,不含低位的0与上一部分积取反+1编码s),而编码部分积高11位为无效尾数。即部分积编码的69位尾数中,高11位为无效尾数,低58位为有效尾数(高2位为符号扩展位,中间54位为部分积编码有效尾数,低2位为补码位),实现了无效尾数移至高位操作。同时硬件设计浮点运算监测逻辑运算,对于浮点乘法,设置部分积高11位掩码为全1,低有效尾数对应位为全0,使得这些无效尾数位在进行部分积求和时不参与运算,以减少运算逻辑无效翻转。
对于64位定点乘法,对应掩码为全0,即按照基4-booth编码正常处理,即有效数据位为69位(含低位的0与上一部分积取反+1编码s),最高两位为符号扩展位。
经过上述处理后,对于浮点乘法,掩码控制高位填充的11位无效尾数可以固定为0,不参与部分积压缩求和运算,占全部部分积编码69位的比例为15.94%,对应浮点乘法的csa压缩逻辑无效翻转控制比较可观。同时,双精度浮点乘法结果尾数仍然取压缩后结果的低106位有效数据即可,不影响浮点乘法的正常运算。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其他实施例中所包括的某些特征而不是其他特征,但是不同的实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求的保护的实施例的任意之一都可以以任意的组合方式来使用。
本领域普通技术人员可以理解:以上各实施例仅用以说明本发明的技术方案,而非对其限制,尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。