CN103176767B - 一种低功耗高吞吐的浮点数乘累加单元的实现方法 - Google Patents
一种低功耗高吞吐的浮点数乘累加单元的实现方法 Download PDFInfo
- Publication number
- CN103176767B CN103176767B CN201310066901.6A CN201310066901A CN103176767B CN 103176767 B CN103176767 B CN 103176767B CN 201310066901 A CN201310066901 A CN 201310066901A CN 103176767 B CN103176767 B CN 103176767B
- Authority
- CN
- China
- Prior art keywords
- input
- index
- product
- output
- operand
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000007667 floating Methods 0.000 title claims abstract description 34
- 238000000034 method Methods 0.000 title claims abstract description 15
- 230000001186 cumulative effect Effects 0.000 claims abstract description 15
- 238000009825 accumulation Methods 0.000 claims abstract description 12
- 238000004519 manufacturing process Methods 0.000 claims abstract description 12
- 238000006243 chemical reaction Methods 0.000 claims abstract description 7
- 238000011084 recovery Methods 0.000 claims abstract description 4
- 238000006073 displacement reaction Methods 0.000 claims description 13
- 230000006835 compression Effects 0.000 claims 3
- 238000007906 compression Methods 0.000 claims 3
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种低功耗高吞吐的浮点数乘累加单元的实现方法。它的步骤如下:1)计算矢量点乘运算时,在N个周期内每周期输入一对操作数A与操作数B,前三级流水线执行操作数A与操作数B的浮点乘法操作;2)在第四级流水线将乘积进行权重转换,使尾数位宽增加,指数位宽减少;3)将转换后的乘积在第五级流水线进行累加操作,每周期完成一次乘积的累加;4)第六级流水线与第七级流水线完成权重的复原,在第N+6个周期输出最终乘累加的结果。本发明可完成任意长度N的矢量点乘运算,每周期计算一次乘累加,避免了处理器中寄存器的频繁存取操作。上述运算可以在N+6个周期内完成,兼容单精度与双精度浮点数,并有效降低浮点数运算的功耗。
Description
技术领域
本发明涉及中央处理器以及数字信号处理器中核心运算单元的设计领域,尤其涉及一种低功耗高吞吐的浮点数乘累加单元的实现方法。
背景技术
计算机和通讯技术的迅猛发展,极大的改变了我们的工作和生活方式,人类的生产生活越来越依赖计算机等设备,科学研究和工程应用都对浮点数的运算性能提出了很高的要求,其中乘累加是数字信号处理、科学计算中的关键运算单元。
在传统结构中,矢量点乘运算由于数据相关性的原因,流水线无法每个周期计算一次乘累加,所以吞吐率会大幅下降,其每秒浮点运算次数与峰值性能相距甚远。在实现诸如有限长单位冲激响应滤波器时,传统的浮点数运算装置需要多次寄存器存取操作才能完成,性能损失严重。另外,随着嵌入式手持设备越来越普及,系统的功耗越来越被人们所关注和研究,因而如何降低芯片功耗也成为当前集成电路设计中的关键因素之一。
发明内容
本发明的目的在于克服现有设计对矢量点乘操作的不足,提供一种低功耗高吞吐的浮点数乘累加单元的实现方法。
低功耗高吞吐的浮点数乘累加单元的实现方法的步骤如下:
1)提取计算矢量点乘运算的个数N,在N个周期内每周期输入一对操作数A与操作数B,前三级流水线执行操作数A与操作数B的浮点乘法操作,得到乘积结果,乘积结果采用进位保留形式传递给下一级;
2)在第四级流水线将乘积进行位宽拓展,对于双精度浮点数将乘积从基2权重转换到基64权重,对于单精度浮点数将乘积从基2权重转换到基32权重,将权重提高以后,尾数位宽增加,指数位宽减少;
3)将转换后的乘积在第五级流水线进行累加操作,累加的临时结果反馈到输入端,与下一周期输入的乘积继续累加,直到N次全部完成,从而消除流水线的停顿,到达每周期完成一次乘积累加,累加器采用4-2进位保留加法器;
4)将进位保留结果通过第六级流水线与第七级流水线的最终加法器与移位器完成权重的复原,在第N+6个周期输出最终乘累加的结果。
所述的权重转换为:乘积需要的位宽调整采用基64-2/32-2转换模块,对于双精度浮点数指数的高5位保留,尾数根据指数低6位左移;对于单精度浮点数指数的高3位保留,尾数根据指数低5位左移。
所述的累加操作为:累加值根据三种指数差值的执行不同的常量移位,分别对应累加值右移位64位,左移位64位,或者不移位,将移位后的尾数相加,在累加器执行的过程中,如果累加的临时结果积累了超过63个零,那么需要将临时结果左移64位,从而使有效位大于53位。
与现有技术相比,本发明的有益效果在于:
1)本发明的浮点数乘累加装置可以完成任意长度N的矢量点乘运算,可以每周期计算一次乘累加,避免了处理器中寄存器的频繁存取操作。本发明可以全流水执行,上述运算可以在N+6个周期内完成,兼容单精度与双精度浮点数;
2)本发明执行一次长度为N的矢量点乘运算,规格化与舍入模块仅仅使用到一次,从而大幅降低了该类运算的功耗;
3)本发明具有模块化设计思想,可以运用到处理器,或者在FPGA上组成运算阵列,完全符合IEEE浮点数运算标准,针对矢量运算具有低功耗和高吞吐率的特点。
附图说明
图1是低功耗高吞吐的浮点数乘累加单元的实现方法的原理图;
图2是本发明的浮点数数据存储格式示意图;
图3是本发明的乘法器模块图;
图4是本发明的基64-2转换模块图;
图5是本发明的单周期累加算法的原理示意图;
图6是本发明的单周期累加模块图;
图7是本发明的低功耗原理示意图。
具体实施方法
如图1、2所示,低功耗高吞吐的浮点数乘累加单元的实现方法的步骤如下:
1)提取计算矢量点乘运算的个数N,在N个周期内每周期输入一对操作数A与操作数B,前三级流水线执行操作数A与操作数B的浮点乘法操作,得到乘积结果,乘积结果采用进位保留形式传递给下一级;
2)在第四级流水线将乘积进行位宽拓展,对于双精度浮点数将乘积从基2权重转换到基64权重,对于单精度浮点数将乘积从基2权重转换到基32权重,将权重提高以后,尾数位宽增加,指数位宽减少;
3)将转换后的乘积在第五级流水线进行累加操作,累加的临时结果反馈到输入端,与下一周期输入的乘积继续累加,直到N次全部完成,从而消除流水线的停顿,到达每周期完成一次乘积累加,累加器采用4-2进位保留加法器;
4)将进位保留结果通过第六级流水线与第七级流水线的最终加法器与移位器完成权重的复原,在第N+6个周期输出最终乘累加的结果。
如图3所示,乘法器采用booth编码与华莱士树实现,结果采用进位保留的形式,而不直接求出乘积结果,从而节约一个加法器的面积与功耗,最终结果求和会在累加完成后执行。为了保证同时兼容双精度与单精度浮点数。该乘法器采用硬件隔离的手段,在单精度模式下复用双精度模式下的运算逻辑,同时并行执行两组单精度浮点数。
如图4所示,所述的权重转换为:乘积需要的位宽调整采用基64-2/32-2转换模块,对于双精度浮点数指数的高5位保留,尾数根据指数低6位左移;对于单精度浮点数指数的高3位保留,尾数根据指数低5位左移。
扩展了尾数位宽后,使得在累加的过程中可以将规格化与舍入步骤后置到后续流水线,在完成所有累加之后只做一次处理。同理对于两组单精度浮点数而言,该模块将采用硬件隔离的手段,同时做两组基32-2的转换。经过转换以后的尾数宽度为116位,指数仅保留高5位。
如图5、6所示,所述的累加操作为:累加值根据三种指数差值的执行不同的常量移位,分别对应累加值右移位64位,左移位64位,或者不移位,将移位后的尾数相加,在累加器执行的过程中,如果累加的临时结果积累了超过63个零,那么需要将临时结果左移64位,从而使有效位大于53位。
对于基转换以后的乘积,如果乘积与累加临时结果的指数相差在1或0,那么直接将较小的数右移64位,再执行累加。如果乘积与累加临时结果的指数相差大于等于2,那么直接将较大数作为累加结果。
如图7所示,由于图1中第6,7级流水线在整个乘累加过程中只使用到一次,因此在累加过程中可以将其关闭,本发明采用简单的与门逻辑来隔离第6,7级的数据翻转,只要乘累加的数据还在第5级流水线反馈循环,那么控制信号将置为0,从而第6,7级的组合逻辑的信号将不会改变,当乘累加运算结束以后,第6,7级的控制信号将置为1,从而使得数据可以传递到后续模块。
本发明采用smic0.13um工艺实现,频率可以达到400MHz,逻辑规模等效于50K标准与非门,动态功耗为54mW,由此可以看到本设计相比传统设计在不牺牲面积与速度的前提下,使得矢量点乘操作的效率大幅提高。计算一次仅仅需要N+6个周期即可完成。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明做出的任何修改和润饰,都落入本发明的保护范围。
Claims (3)
1.一种低功耗高吞吐的浮点数乘累加单元的实现方法,其特征在于,它的步骤如下:
1)提取计算矢量点乘运算的个数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的输入。
2.根据权利要求1所述的一种低功耗高吞吐的浮点数乘累加单元的实现方法,其特征在于所述的权重转换为:乘积需要的位宽调整采用基64-2/32-2转换模块,对于双精度浮点数指数的高5位保留,尾数根据指数低6位左移;对于单精度浮点数指数的高3位保留,尾数根据指数低5位左移。
3.根据权利要求1所述的一种低功耗高吞吐的浮点数乘累加单元的实现方法,其特征在于所述的累加操作为:累加值根据三种指数差值的执行不同的常量移位,分别对应累加值右移位64位,左移位64位,或者不移位,将移位后的尾数相加,在累加器执行的过程中,如果累加的临时结果积累了超过63个零,那么需要将临时结果左移64位,从而使有效位大于53位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310066901.6A CN103176767B (zh) | 2013-03-01 | 2013-03-01 | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310066901.6A CN103176767B (zh) | 2013-03-01 | 2013-03-01 | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103176767A CN103176767A (zh) | 2013-06-26 |
CN103176767B true CN103176767B (zh) | 2016-08-03 |
Family
ID=48636674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310066901.6A Expired - Fee Related CN103176767B (zh) | 2013-03-01 | 2013-03-01 | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103176767B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407836B (zh) * | 2014-10-14 | 2017-05-31 | 中国航天科技集团公司第九研究院第七七一研究所 | 利用定点乘法器进行级联乘累加运算的装置和方法 |
CN106325812B (zh) * | 2015-06-15 | 2019-03-08 | 华为技术有限公司 | 一种针对乘累加运算的处理方法及装置 |
CN105528191B (zh) * | 2015-12-01 | 2017-04-12 | 中国科学院计算技术研究所 | 数据累加装置、方法及数字信号处理装置 |
CN107305485B (zh) * | 2016-04-25 | 2021-06-08 | 中科寒武纪科技股份有限公司 | 一种用于执行多个浮点数相加的装置及方法 |
WO2017185203A1 (zh) * | 2016-04-25 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行多个浮点数相加的装置及方法 |
US10073676B2 (en) * | 2016-09-21 | 2018-09-11 | Altera Corporation | Reduced floating-point precision arithmetic circuitry |
CN106897046B (zh) * | 2017-01-24 | 2019-04-23 | 青岛专用集成电路设计工程技术研究中心 | 一种定点乘累加器 |
CN106951211B (zh) * | 2017-03-27 | 2019-10-18 | 南京大学 | 一种可重构定浮点通用乘法器 |
TW201926147A (zh) * | 2017-12-01 | 2019-07-01 | 阿比特電子科技有限公司 | 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統 |
CN108875924A (zh) * | 2018-02-09 | 2018-11-23 | 北京旷视科技有限公司 | 基于神经网络的数据处理方法、装置、系统及存储介质 |
CN110209375B (zh) * | 2019-05-30 | 2021-03-26 | 浙江大学 | 一种基于radix-4编码和差分权重存储的乘累加电路 |
CN113168308A (zh) * | 2020-04-20 | 2021-07-23 | 深圳市大疆创新科技有限公司 | 浮点累加装置、方法和计算机存储介质 |
CN112051981B (zh) * | 2020-09-15 | 2023-09-01 | 厦门壹普智慧科技有限公司 | 一种数据流水线计算路径结构及单线程数据流水线系统 |
CN112230993A (zh) * | 2020-09-29 | 2021-01-15 | 海光信息技术股份有限公司 | 数据处理方法及装置、电子设备 |
CN112463112B (zh) * | 2020-11-19 | 2022-08-16 | 上海壁仞智能科技有限公司 | 点积累加方法及装置 |
CN112988112B (zh) * | 2021-04-27 | 2021-08-10 | 北京壁仞科技开发有限公司 | 点积计算装置 |
CN117492693B (zh) * | 2024-01-03 | 2024-03-22 | 沐曦集成电路(上海)有限公司 | 一种用于滤波器的浮点数据处理系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840324A (zh) * | 2010-04-28 | 2010-09-22 | 中国科学院自动化研究所 | 支持复数运算和子字并行的64位定浮点乘法器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7543013B2 (en) * | 2006-08-18 | 2009-06-02 | Qualcomm Incorporated | Multi-stage floating-point accumulator |
-
2013
- 2013-03-01 CN CN201310066901.6A patent/CN103176767B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840324A (zh) * | 2010-04-28 | 2010-09-22 | 中国科学院自动化研究所 | 支持复数运算和子字并行的64位定浮点乘法器 |
Non-Patent Citations (1)
Title |
---|
高吞吐率单双精度可配置浮点乘累加器的设计与实现;黄丹连;《中国优秀硕士学位论文全文数据库信息科技辑》;20120715(第7期);正文第1页第1行-第60页第30行 * |
Also Published As
Publication number | Publication date |
---|---|
CN103176767A (zh) | 2013-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103176767B (zh) | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 | |
CN102629189B (zh) | 基于fpga的流水浮点乘累加方法 | |
CN102722352B (zh) | 一种Booth乘法器 | |
CN102681815B (zh) | 用加法器树状结构的有符号乘累加算法的方法 | |
CN104111816A (zh) | Gpdsp中多功能simd结构浮点融合乘加运算装置 | |
CN103809930A (zh) | 一种双精度浮点数除法器的设计方法及除法器 | |
CN106775577B (zh) | 一种高性能非精确冗余二进制乘法器的设计方法 | |
CN103092560A (zh) | 一种基于Bypass技术的低功耗乘法器 | |
CN100465877C (zh) | 高速分裂式乘累加器mac装置 | |
CN103279323A (zh) | 一种加法器 | |
CN106682732A (zh) | 一种应用于神经网络的高斯误差函数电路 | |
CN101840324A (zh) | 支持复数运算和子字并行的64位定浮点乘法器 | |
CN107092462B (zh) | 一种基于fpga的64位异步乘法器 | |
CN110825346B (zh) | 一种低逻辑复杂度的无符号近似乘法器 | |
Kuppili et al. | Design of Vedic Mathematics based 16 bit MAC unit for Power and Delay Optimization | |
CN104636114A (zh) | 一种浮点数乘法的舍入方法及装置 | |
CN103365826B (zh) | 一种小面积的基-3fft蝶形单元 | |
Daud et al. | Hybrid modified booth encoded algorithm-carry save adder fast multiplier | |
Buddhe et al. | Design and verification of dadda algorithm based binary floating point multiplier | |
CN103699729A (zh) | 模乘法器 | |
Pawar et al. | Design & implementation of area efficient low power high speed MAC unit using FPGA | |
CN102929575B (zh) | 一种模(2n+3)乘法器 | |
Harika et al. | Analysis of different multiplication algorithms & FPGA implementation | |
CN203276276U (zh) | 一种实时数据处理单元及处理器 | |
CN102955682A (zh) | 模乘法器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160803 Termination date: 20190301 |
|
CF01 | Termination of patent right due to non-payment of annual fee |