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

文档序号:6339125阅读:715来源:国知局
专利名称:基于fpga的高速低延迟浮点累加器及其实现方法
技术领域
本发明涉及FPGA技术及高性能计算技术领域,具体来说是一种基于FPGA的高速 低延迟浮点累加器及其实现方法。
背景技术
浮点累加运算是浮点计算中的一个重要操作,在过程控制、数字信号处理等领域 广泛存在。以前的浮点运算系统通常采用通用浮点处理器或DSP实现,虽然具有技术较为 成熟、实现工具完善、编程简单等优点,但是由于其内部结构的限制,处理器在进行计算时 经常会出现缓存扑空(Cache Miss)等现象,影响系统计算性能。基于通用处理器和DSP技 术的设计通常持续计算性能只能维持在其峰值计算性能的10% 33%,无法取得很高的 计算性能。
近年来FPGA技术取得了飞速发展,已经从最初只能面向纯逻辑替代的应用转变 为能够面向复杂的计算密集型应用。最新推出的FPGA器件中,不仅集成有丰富的可配置逻 辑块资源(Configurable Logic Block,CLB),还包括大量面向计算密集应用的DSP单元、块 状RAM(Block RAM, BRAM)和用于高速串行通信的RocketIO GTP收发器单元。同时为方便 FPGA的调试,各FPGA厂商还推出了片内逻辑分析测试工具(如Xilinx公司的Chipkope), 在软硬件上保证了在FPGA上实现高性能计算的可行性。在浮点运算方面,凭借着更灵活的 配置特性和较低的功耗,FPGA也正获得越来越多的应用。
在FPGA内部,浮点加法器通常通过逻辑资源或可配置的DSP模块实现,为了获得 更高的运算速度,浮点加法器往往需要使用多达10级以上的流水线实现,这样浮点加法结 果的输出往往具有较大延迟。因此,在常规设计中,基于FPGA的浮点累加器通常对不同级 数的加法运算依照级数大小顺序进行,通过内部缓冲器存储每一级加法运算结果,并用于 下一级运算。这样,对于一些累加次数与浮点加法器流水线级数相当甚至更小的情形,由于 需要等待加法流水线操作完成的时间比输入数据的时间更长,加法器往往出现空闲工作状 态,最终累加结果的输出相对于原始数据的输入往往具有很大的时间延迟。在这种情况下, 下一次浮点累加操作的原始数据需要等待上一次浮点累加操作接近全部完成的时候才允 许输入,从而造成较大的延迟。在一些实时性要求很高的场合,这种累加器就无法满足应用 需求。虽然可以通过增加浮点加法器的数目来解决该问题,但是由于浮点运算的复杂度,对 FPGA的逻辑资源或DSP模块消耗急剧增加。发明内容
本发明提供了一种具备优良实时性能的、基于FPGA的高速低延迟浮点累加器及 其实现方法,能够有效提高浮点加法器的利用率,在所需逻辑或DSP资源基本不变的同时 具有较低的延迟。
一种基于FPGA的高速低延迟浮点累加器,包括
—个浮点加法器单元,用于对输入的浮点数进行加法操作,所述的浮点数包括原始数据和各级浮点累加运算的中间结果数据;以及用于对输入的浮点数的标志位进行与相 应的浮点数的加法操作同步的延迟;所述的浮点加法器单元包括一个常规的浮点加法模块 和一个标志位同步延迟逻辑模块,可使用FPGA内部逻辑资源或可配置的DSP模块实现;为 了获得更高的运算速度,浮点加法器单元通常采用多级流水线的方式实现;
N个中间结果缓冲器单元,分别与各级浮点累加运算对应,用于缓存各级浮点累 加运算的中间结果;所述的中间结果缓冲器单元利用FPGA内部fifo实现,由于各级浮点 累加运算得到的中间结果数据总量并不一致,对中间结果缓冲器单元的大小需求也会有所 差别,因此,为了获得更高的资源利用率,可以根据各级浮点累加运算得到的中间结果数据 量,为存储不同浮点累加运算级数中间结果的中间结果缓冲器单元选择合适大小和类型的 fifo,从而减少对FPGA内部存储资源的消耗;
输入控制单元,用于接收原始数据和各级浮点累加运算的中间结果数据,并对不 同来源的数据设立不同的优先级,按照优先级高低将相同优先级的成对数据输入到浮点加 法器单元进行加法操作,同时给每对输入到浮点加法器单元的数据设立标志位,标示对于 当前数据对进行加法操作所属的浮点累加运算级数;其中,对不同来源的数据设立不同的 优先级,为将原始数据设为最高优先级,对于各级浮点累加运算的中间结果数据,其对应 的浮点累加运算级数越高,越是靠近最终结果,其优先级越高;
输出控制单元,用于根据所述的浮点加法器单元同步延迟输出的标志位,确定浮 点加法器单元当前输出的数据所属的浮点累加运算级数,判断所述的浮点加法器单元输出 的当前加法操作的计算结果是中间结果还是最终结果,将中间结果存入相应浮点累加运算 级数的中间结果缓冲器单元;将最终结果输出。
一种基于FPGA的高速低延迟浮点累加的实现方法,包括
(1)原始浮点数据输入步骤每个时钟周期从前级计算或处理模块输入一个原始 浮点数据到浮点加法器单元,所述原始浮点数据WM = 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_Ufifo_2......f ifo_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.一种基于FPGA的高速低延迟浮点累加器,其特征在于,包括一个浮点加法器单元,用于对输入的浮点数进行加法操作,所述的浮点数包括原始数 据和各级浮点累加运算的中间结果数据;以及用于对输入的浮点数的标志位进行与相应的 浮点数的加法操作同步的延迟;N个中间结果缓冲器单元,分别与各级浮点累加运算对应,用于缓存各级浮点累加运算 的中间结果;输入控制单元,用于接收原始数据和各级浮点累加运算的中间结果数据,并对不同来 源的数据设立不同的优先级,按照优先级高低将相同优先级的成对数据输入到浮点加法器 单元进行加法操作,同时给每对输入到浮点加法器单元的数据设立标志位,标示对于当前 数据对进行加法操作所属的浮点累加运算级数;其中,对不同来源的数据设立不同的优先 级,为将原始数据设为最高优先级,对于各级浮点累加运算的中间结果数据,其对应的浮 点累加运算级数越高,其优先级越高;输出控制单元,用于根据所述的浮点加法器单元同步延迟输出的标志位,确定浮点加 法器单元当前输出的数据所属的浮点累加运算级数,判断所述的浮点加法器单元输出的当 前加法操作的计算结果是中间结果还是最终结果,将中间结果存入相应浮点累加运算级数 的中间结果缓冲器单元;将最终结果输出。
2.如权利要求1所述的基于FPGA的高速低延迟浮点累加器,其特征在于,所述的浮点 加法器单元使用FPGA内部逻辑资源或可配置的DSP模块实现。
3.如权利要求1或2所述的基于FPGA的高速低延迟浮点累加器,其特征在于,所述的 浮点加法器单元采用多级流水线的方式实现。
4.如权利要求1所述的基于FPGA的高速低延迟浮点累加器,其特征在于,所述的中间 结果缓冲器单元利用FPGA内部fifo实现。
5.如权利要求1或4所述的基于FPGA的高速低延迟浮点累加器,其特征在于,所述的 中间结果缓冲器单元的大小和类型由各级浮点累加运算得到的中间结果数据量确定。
6.一种基于FPGA的高速低延迟浮点累加的实现方法,其特征在于,包括(1)原始浮点数据输入步骤每个时钟周期从前级计算或处理模块输入一个原始浮点 数据到浮点加法器单元,所述原始浮点数据以M = 2n+1个数据为一组被累加,各组原始浮点 数据被连续输入;N为累加级数;(2)输入控制步骤输入控制单元接收原始浮点数据和各级浮点累加运算的中间结果 浮点数据,并对不同来源的浮点数据设立不同的优先级,按照优先级高低将相同优先级的 成对浮点数据输入到浮点加法器单元进行加法操作,同时给每对输入到浮点加法器单元的 浮点数据设立标志位,标示对于当前浮点数据对进行加法操作所属的浮点累加运算级数; 其中,对不同来源的浮点数据设立不同的优先级,为将原始浮点数据设为最高优先级,对 于各级浮点累加运算的中间结果浮点数据,其对应的浮点累加运算级数越高,其优先级越 尚;(3)浮点累加运算步骤,浮点加法器单元对每个时钟周期输入的成对浮点数据进行加 法计算,同时也对输入控制单元设立的与该对浮点数据对应的标志位进行同步延迟;(4)输出控制步骤,根据所述的浮点加法器单元同步延迟输出的标志位,输出控制单元 确定浮点加法器单元输出的当前加法操作的计算结果所属的浮点累加运算级数,从而判断所述的浮点加法器单元输出的当前加法操作的计算结果是中间结果还是最终结果,将中间 结果存入相应浮点累加运算级数的中间结果缓冲器单元;将最终结果输出。
7.如权利要求6所述的实现方法,其特征在于,所述的浮点加法器单元使用FPGA内部 逻辑资源或可配置的DSP模块实现。
8.如权利要求6或7所述的实现方法,其特征在于,所述的浮点加法器单元采用多级流 水线的方式实现。
9.如权利要求6所述的实现方法,其特征在于,所述的中间结果缓冲器单元利用FPGA 内部fifo实现。
10.如权利要求6或9所述的实现方法,其特征在于,所述的中间结果缓冲器单元的大 小和类型由各级浮点累加运算得到的中间结果数据量确定。
全文摘要
本发明公开了一种基于FPGA的高速低延迟浮点累加器及其实现方法。本发明的浮点累加器包括一个浮点加法器单元、N个中间结果缓冲器、输入控制单元和输出控制单元。本发明的浮点累加实现方法对整个累加计算过程进行分级,不同级数的累加计算过程交叉进行,不同级数的累加计算中间结果分级存储;同时,完全采用流水线方式工作,大大提高内部浮点加法器利用效率,浮点累加计算最终结果的输出具有较低的延迟。本发明通过对内部浮点加法器单元输入数据的动态分配,提高浮点加法器的利用效率,从而能够在所需逻辑或DSP资源消耗不大的同时,保证较高的运算速度和较低的延迟。
文档编号G06F7/57GK102033732SQ20101059492
公开日2011年4月27日 申请日期2010年12月17日 优先权日2010年12月17日
发明者周凡, 袁龙涛, 陈耀武 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1