发明名称 一种低功耗高吞吐的浮点数乘累加单元的实现方法
摘要 本发明公开了一种低功耗高吞吐的浮点数乘累加单元的实现方法。它的步骤如下:1)计算矢量点乘运算时,在N个周期内每周期输入一对操作数A与操作数B,前三级流水线执行操作数A与操作数B的浮点乘法操作;2)在第四级流水线将乘积进行权重转换,使尾数位宽增加,指数位宽减少;3)将转换后的乘积在第五级流水线进行累加操作,每周期完成一次乘积的累加;4)第六级流水线与第七级流水线完成权重的复原,在第N+6个周期输出最终乘累加的结果。本发明可完成任意长度N的矢量点乘运算,每周期计算一次乘累加,避免了处理器中寄存器的频繁存取操作。上述运算可以在N+6个周期内完成,兼容单精度与双精度浮点数,并有效降低浮点数运算的功耗。
申请公布号 CN103176767B 申请公布日期 2016.08.03
申请号 CN201310066901.6 申请日期 2013.03.01
申请人 浙江大学 发明人 沈海斌;沈俊
分类号 G06F7/52(2006.01)I 主分类号 G06F7/52(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 张法高
主权项 一种低功耗高吞吐的浮点数乘累加单元的实现方法,其特征在于,它的步骤如下:1)提取计算矢量点乘运算<img file="FDA0000932471130000011.GIF" wi="335" he="103" />的个数N,在N个周期内每周期输入一对操作数A与操作数B,前三级流水线执行操作数A与操作数B的浮点乘法操作,得到乘积结果,乘积结果采用进位保留形式传递给下一级;所述的前三级流水线包括四部分,第一部分为S1级的操作数A、操作数B、指数和和booth编码与部分积生成,第二部分为S2级的指数偏移,第三部分为S3级的符号、3‑2压缩和选择器,以及第四部分为贯穿S1‑S3的华莱士树;操作数A的三个输出分别连接符号、指数和、booth编码与部分积生成的第一个输入,其中到符号的连接经过了S2;操作数B的三个输出分别连接符号、指数和、booth编码与部分积生成的第二个输入,其中到符号的连接经过了S2;指数和的输出连接指数偏移的输入;booth编码与部分积生成的输出连接华莱士树的输入;华莱士树的输出S和C分别连接到3‑2压缩输入和选择器的前两个输入,3‑2压缩的输出连接到选择器后两个输入;2)在第四级流水线将乘积进行位宽拓展,对于双精度浮点数将乘积从基2权重转换到基64权重,对于单精度浮点数将乘积从基2权重转换到基32权重,将权重提高以后,尾数位宽增加,指数位宽减少;所述的第四级流水线包括指数尾部和移位,指数尾部的输入来自S2的指数偏移的输出,并经过S3;移位的输入来自S3级的选择器的输出;3)将转换后的乘积在第五级流水线进行累加操作,累加的临时结果反馈到输入端,与下一周期输入的乘积继续累加,直到N次全部完成,从而消除流水线的停顿,到达每周期完成一次乘积累加,累加器采用4‑2进位保留加法器;所述的第五级流水线包括指数计算、单周期累加器,指数计算的输入来自S4的指数尾部,单周期累加器的输入来自S4的移位和S5的指数计算;4)将进位保留结果通过第六级流水线与第七级流水线的最终加法器与移位器完成权重的复原,在第N+6个周期输出最终乘累加的结果;所述的第六级流 水线包括S6的加法和前导0,所述的第七级流水线包括S7的‘‑’、‘+’两个移位;S6的加法的输入来自S5的单周期累加器的输出,加法输出连接到S7的第一个移位的第一个输入;S6的前导0的输入来自S5的单周期累加器,前导0输出连接到S7的第一个移位的第二个输入;S7的‘‑’的第一个输入来自S5的指数计算,并经过S6,第二个输入来自第一个移位的输出;S7的‘+’的第一个输入来自‘‑’的输出,第二个输入来自第二个移位的输出;第二个移位的输入来自第一个移位的输出;加法、‘+’和第二个移位的输出分别连接到最终结果操作数C的输入。
地址 310027 浙江省杭州市西湖区浙大路38号
您可能感兴趣的专利