首页> 中国专利> 基于FPGA的高速低延迟浮点累加器及其实现方法

基于FPGA的高速低延迟浮点累加器及其实现方法

摘要

本发明公开了一种基于FPGA的高速低延迟浮点累加器及其实现方法。本发明的浮点累加器包括一个浮点加法器单元、N个中间结果缓冲器、输入控制单元和输出控制单元。本发明的浮点累加实现方法对整个累加计算过程进行分级,不同级数的累加计算过程交叉进行,不同级数的累加计算中间结果分级存储;同时,完全采用流水线方式工作,大大提高内部浮点加法器利用效率,浮点累加计算最终结果的输出具有较低的延迟。本发明通过对内部浮点加法器单元输入数据的动态分配,提高浮点加法器的利用效率,从而能够在所需逻辑或DSP资源消耗不大的同时,保证较高的运算速度和较低的延迟。

著录项

  • 公开/公告号CN102033732A

    专利类型发明专利

  • 公开/公告日2011-04-27

    原文格式PDF

  • 申请/专利权人 浙江大学;

    申请/专利号CN201010594926.X

  • 发明设计人 陈耀武;袁龙涛;周凡;

    申请日2010-12-17

  • 分类号G06F7/57(20060101);

  • 代理机构33224 杭州天勤知识产权代理有限公司;

  • 代理人胡红娟

  • 地址 310027 浙江省杭州市西湖区浙大路38号

  • 入库时间 2023-12-18 02:26:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-07-01

    专利实施许可合同备案的生效 IPC(主分类):G06F7/57 合同备案号:2015330000092 让与人:浙江大学 受让人:浙江双元科技开发有限公司 发明名称:基于FPGA的高速低延迟浮点累加器及其实现方法 申请公布日:20110427 授权公告日:20120718 许可种类:普通许可 备案日期:20150506 申请日:20101217

    专利实施许可合同备案的生效、变更及注销

  • 2012-07-18

    授权

    授权

  • 2011-06-15

    实质审查的生效 IPC(主分类):G06F7/57 申请日:20101217

    实质审查的生效

  • 2011-04-27

    公开

    公开

说明书

技术领域

本发明涉及FPGA技术及高性能计算技术领域,具体来说是一种基于FPGA的高速低延迟浮点累加器及其实现方法。

背景技术

浮点累加运算是浮点计算中的一个重要操作,在过程控制、数字信号处理等领域广泛存在。以前的浮点运算系统通常采用通用浮点处理器或DSP实现,虽然具有技术较为成熟、实现工具完善、编程简单等优点,但是由于其内部结构的限制,处理器在进行计算时经常会出现缓存扑空(Cache Miss)等现象,影响系统计算性能。基于通用处理器和DSP技术的设计通常持续计算性能只能维持在其峰值计算性能的10%~33%,无法取得很高的计算性能。

近年来FPGA技术取得了飞速发展,已经从最初只能面向纯逻辑替代的应用转变为能够面向复杂的计算密集型应用。最新推出的FPGA器件中,不仅集成有丰富的可配置逻辑块资源(Configurable Logic Block,CLB),还包括大量面向计算密集应用的DSP单元、块状RAM(Block RAM,BRAM)和用于高速串行通信的RocketIO GTP收发器单元。同时为方便FPGA的调试,各FPGA厂商还推出了片内逻辑分析测试工具(如Xilinx公司的ChipScope),在软硬件上保证了在FPGA上实现高性能计算的可行性。在浮点运算方面,凭借着更灵活的配置特性和较低的功耗,FPGA也正获得越来越多的应用。

在FPGA内部,浮点加法器通常通过逻辑资源或可配置的DSP模块实现,为了获得更高的运算速度,浮点加法器往往需要使用多达10级以上的流水线实现,这样浮点加法结果的输出往往具有较大延迟。因此,在常规设计中,基于FPGA的浮点累加器通常对不同级数的加法运算依照级数大小顺序进行,通过内部缓冲器存储每一级加法运算结果,并用于下一级运算。这样,对于一些累加次数与浮点加法器流水线级数相当甚至更小的情形,由于需要等待加法流水线操作完成的时间比输入数据的时间更长,加法器往往出现空闲工作状态,最终累加结果的输出相对于原始数据的输入往往具有很大的时间延迟。在这种情况下,下一次浮点累加操作的原始数据需要等待上一次浮点累加操作接近全部完成的时候才允许输入,从而造成较大的延迟。在一些实时性要求很高的场合,这种累加器就无法满足应用需求。虽然可以通过增加浮点加法器的数目来解决该问题,但是由于浮点运算的复杂度,对FPGA的逻辑资源或DSP模块消耗急剧增加。

发明内容

本发明提供了一种具备优良实时性能的、基于FPGA的高速低延迟浮点累加器及其实现方法,能够有效提高浮点加法器的利用率,在所需逻辑或DSP资源基本不变的同时具有较低的延迟。

一种基于FPGA的高速低延迟浮点累加器,包括:

一个浮点加法器单元,用于对输入的浮点数进行加法操作,所述的浮点数包括原始数据和各级浮点累加运算的中间结果数据;以及用于对输入的浮点数的标志位进行与相应的浮点数的加法操作同步的延迟;所述的浮点加法器单元包括一个常规的浮点加法模块和一个标志位同步延迟逻辑模块,可使用FPGA内部逻辑资源或可配置的DSP模块实现;为了获得更高的运算速度,浮点加法器单元通常采用多级流水线的方式实现;

N个中间结果缓冲器单元,分别与各级浮点累加运算对应,用于缓存各级浮点累加运算的中间结果;所述的中间结果缓冲器单元利用FPGA内部fifo实现,由于各级浮点累加运算得到的中间结果数据总量并不一致,对中间结果缓冲器单元的大小需求也会有所差别,因此,为了获得更高的资源利用率,可以根据各级浮点累加运算得到的中间结果数据量,为存储不同浮点累加运算级数中间结果的中间结果缓冲器单元选择合适大小和类型的fifo,从而减少对FPGA内部存储资源的消耗;

输入控制单元,用于接收原始数据和各级浮点累加运算的中间结果数据,并对不同来源的数据设立不同的优先级,按照优先级高低将相同优先级的成对数据输入到浮点加法器单元进行加法操作,同时给每对输入到浮点加法器单元的数据设立标志位,标示对于当前数据对进行加法操作所属的浮点累加运算级数;其中,对不同来源的数据设立不同的优先级,为:将原始数据设为最高优先级,对于各级浮点累加运算的中间结果数据,其对应的浮点累加运算级数越高,越是靠近最终结果,其优先级越高;

输出控制单元,用于根据所述的浮点加法器单元同步延迟输出的标志位,确定浮点加法器单元当前输出的数据所属的浮点累加运算级数,判断所述的浮点加法器单元输出的当前加法操作的计算结果是中间结果还是最终结果,将中间结果存入相应浮点累加运算级数的中间结果缓冲器单元;将最终结果输出。

一种基于FPGA的高速低延迟浮点累加的实现方法,包括:

(1)原始浮点数据输入步骤:每个时钟周期从前级计算或处理模块输入一个原始浮点数据到浮点加法器单元,所述原始浮点数据以M=2N+1个数据为一组被累加,各组原始浮点数据被连续输入;N为累加级数;

(2)输入控制步骤:输入控制单元接收原始浮点数据和各级浮点累加运算的中间结果浮点数据,并对不同来源的浮点数据设立不同的优先级,按照优先级高低将相同优先级的成对浮点数据输入到浮点加法器单元进行加法操作,同时给每对输入到浮点加法器单元的浮点数据设立标志位,标示对于当前浮点数据对进行加法操作所属的浮点累加运算级数;其中,对不同来源的浮点数据设立不同的优先级,为:将原始浮点数据设为最高优先级,对于各级浮点累加运算的中间结果浮点数据,其对应的浮点累加运算级数越高,越是靠近最终结果,其优先级越高;

(3)浮点累加运算步骤,浮点加法器单元对每个时钟周期输入的成对浮点数据进行加法计算,同时也对输入控制单元设立的与该对浮点数据对应的标志位进行同步延迟;

(4)输出控制步骤,根据所述的浮点加法器单元同步延迟输出的标志位,输出控制单元确定浮点加法器单元输出的当前加法操作的计算结果所属的浮点累加运算级数,从而判断所述的浮点加法器单元输出的当前加法操作的计算结果是中间结果还是最终结果,将中间结果存入相应浮点累加运算级数的中间结果缓冲器单元;将最终结果输出。

当原始浮点数据按照时钟周期连续输入到浮点加法器单元时,上述过程各步骤以流水线方式进行,各组原始浮点数据累加最终结果以M=2N+1-1个时钟为间隔持续输出。

与现有技术相比,本发明具有以下有益的技术效果:

本发明中,所述的高速低延迟浮点累加器内部仅使用一个浮点加法器单元,减少了对浮点运算所需的大量FPGA内部逻辑资源或DSP资源的消耗。采用所述的高速低延迟浮点累加器进行浮点累加运算时,对整个累加计算过程进行分级,不同级数的累加计算过程交叉进行,不同级数的累加计算中间结果分级存储;同时,完全采用流水线方式工作,大大提高内部浮点加法器单元利用效率,浮点累加计算最终结果的输出具有较低的延迟。

本发明通过对输入到内部浮点加法器单元的数据的动态分配,在等待浮点加法器单元流水线输出的同时,保持浮点加法器单元各级流水线的运作,有效提高浮点加法器单元的利用率,从而能够在所需逻辑或DSP资源消耗不大的同时,保证较高的运算速度和较低的延迟。

附图说明

图1为本发明的高速低延迟浮点累加器的内部结构示意框图;

图2为本发明的高速低延迟浮点累加实现方法中一组数据进行多级浮点累加运算过程示意图,累加级数N=2。

具体实施方式

下面结合实施例和附图来详细说明本发明,但本发明并不仅限于此。

如图1所示,一种基于FPGA的高速低延迟浮点累加器,具体包括:

浮点加法器单元110,用于对输入的浮点数进行加法操作,所述的浮点数包括原始数据和各级浮点累加运算的中间结果数据;以及用于对输入的浮点数的标志位进行与相应的浮点数的加法操作同步的延迟;浮点加法器单元110包括一个常规的浮点加法模块和一个标志位同步延迟逻辑模块,使用FPGA内部逻辑资源或可配置的DSP模块实现;为了获得更高的运算速度,浮点加法器单元110通常采用多级流水线的方式实现;

N个中间结果缓冲器单元120,包括:fifo_1、fifo_2......fifo_N,分别与各级浮点累加运算相对应,用于缓存各级浮点累加运算的中间结果;中间结果缓冲器单元120利用FPGA内部fifo实现,由于各级浮点累加运算得到的中间结果数据总量并不一致,对中间结果缓冲器单元120的大小需求也会有所差别,因此,为了获得更高的资源利用率,可以根据各级浮点累加运算得到的中间结果数据量,为存储不同浮点累加运算级数中间结果的中间结果缓冲器单元120选择合适大小和类型的fifo,从而减少对FPGA内部存储资源的消耗;

输入控制单元130,用于根据当前输入的原始数据和各个缓冲器内数据存储量,控制浮点加法器单元110的输入。

由于一次加法操作需要同时两个数据输入,因此在原始数据每个时钟连续输入的情况下,每隔2个时钟才能进行一次原始数据的加法运算,空余的那个时钟间隔将被用来对读取自中间结果缓冲器单元120的中间结果进行运算。当有多个中间结果缓冲器单元120内有两个以上数据、可以进行一次加法运算操作时,将根据这些中间结果缓冲器单元120对应的优先级、选择优先级更高的数据进行加法运算。为了获得最小的时间延迟,浮点累加运算级数高的数据缓冲区将被赋以更高的优先级。

此外,为了便于输出控制单元140识别浮点加法器单元110当前输出结果对应的浮点累加运算级数,输入控制单元130会为每个输入到浮点加法器单元110的数据设立对应的标志位,这些标志位采用同步移位的方式延迟,保持与对应加法操作的一致,当一对输入数据的浮点加法运算结束时,该加法运算的结果和与该加法运算对应的同步移位之后的标志位被浮点加法器单元110同时送到输出控制单元140。

因此,输入控制单元130在接收原始数据和各级浮点累加运算的中间结果数据时,会给不同来源的数据设立不同的优先级,按照优先级高低将相同优先级的成对数据输入到浮点加法器单元110进行加法操作,同时给每对输入到浮点加法器单元110的数据设立与当前加法操作同步延迟的标志位,标示对于当前数据对进行加法操作所属的浮点累加运算级数;其中,对不同来源的数据设立不同的优先级,为:将原始数据设为最高优先级,对于各级浮点累加运算的中间结果数据,其对应的浮点累加运算级数越高,越是靠近最终结果,其优先级越高。

输出控制单元140,用于根据浮点加法器单元110同步延迟输出的标志位,确定浮点加法器单元110当前输出的数据所属的浮点累加运算级数,判断浮点加法器单元110输出的当前加法操作的计算结果是中间结果还是最终结果,并将中间结果存入相应浮点累加运算级数的中间结果缓冲器单元,或将最终结果输出。

采用上述高速低延迟浮点累加器实现浮点累加的方法,包括:

(1)原始浮点数据输入步骤:每个时钟周期从前级计算或处理模块输入一个原始浮点数据到浮点加法器单元110,所述原始浮点数据以M=2N+1个数据为一组被累加,各组原始浮点数据被连续输入;N为累加级数;

(2)输入控制步骤:输入控制单元130接收原始浮点数据和各级浮点累加运算的中间结果浮点数据,并对不同来源的浮点数据设立不同的优先级,按照优先级高低将相同优先级的成对浮点数据输入到浮点加法器单元110进行加法操作,同时给每对输入到浮点加法器单元110的浮点数据设立标志位,标示对于当前浮点数据对进行加法操作所属的浮点累加运算级数,所述标志位与当前加法操作同步延迟;其中,对不同来源的浮点数据设立不同的优先级,为:将原始浮点数据设为最高优先级,对于各级浮点累加运算的中间结果浮点数据,其对应的浮点累加运算级数越高,越是靠近最终结果,其优先级越高;

(3)浮点累加运算步骤,浮点加法器单元110对每个时钟周期输入的成对浮点数据进行加法计算,同时也对输入控制单元设立的与该对浮点数据对应的标志位进行同步延迟;

(4)输出控制步骤,根据所述的浮点加法器单元110同步延迟输出的标志位,输出控制单元140确定浮点加法器单元110输出的当前加法操作的计算结果所属的浮点累加运算级数,从而判断浮点加法器单元110输出的当前加法操作的计算结果是中间结果还是最终结果,将中间结果存入相应浮点累加运算级数的中间结果缓冲器单元120;将最终结果输出。

当原始浮点数据按照时钟周期连续输入到浮点加法器单元110时,上述过程各步骤以流水线方式进行,各组原始浮点数据累加最终结果以M=2N+1-1个时钟为间隔持续输出。

为了进一步详细说明高速低延迟浮点累加实现方法中的多级浮点累加运算,图2给出了相应的累加级数N=2(即累加次数为8)的一组数据的浮点累加运算过程。通过对浮点累加运算过程进行如下表1所示的划分,不同浮点累加运算级数的中间计算结果被存储到不同fifo,同时,按照不同fifo内数据的存储量,浮点加法器单元110被动态的分配用于不同浮点累加运算级数的加法计算。

不同级数存储器数据和原始数据输入优先级划分如表1所示。

表1

通过优先级的设置,可以有效解决多个不同浮点累加运算级数数据待输入的情况下,浮点加法器单元110输入端口分配的问题。如表1所示,由于待累加的原始数据每个时钟周期被连续输入,无法被强制中断,因此具有最高的优先级;对来自不同浮点累加运算级数中间结果缓冲器单元120的数据而言,浮点累加运算级数越高,该数据越接近最后的累加结果,通过给高浮点累加运算级数的中间结果赋以更高的优先级,可以降低累加最终结果的输出延迟,同时也可以腾出后级缓冲区空间用以接收新的中间结果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号