一种可重构的整型-浮点加法器的制作方法

文档序号:19679558发布日期:2020-01-14 17:09阅读:185来源:国知局
一种可重构的整型-浮点加法器的制作方法

本发明属于数字信号处理领域,特别涉及一种可重构的整型-浮点加法器。



背景技术:

在众多的计算密集型应用中,卷积神经网络作为典型的多层神经网络始终处于研究的核心地位。在深度学习芯片的研究与设计中,对于模型的准确描述往往需要多种类型的数据与算法协同完成,算数逻辑单元往往需要应对快速处理多种类型数据的挑战。

通常,在数字信号处理领域,卷积等运算中会大量使用到乘加运算,即将乘法运算的结果与另外一个操作数融合相加得到最终结果,从而节省整个乘加操作的执行延迟。乘加计算的性能常常是由乘运算与加运算的执行速度决定的,所以在通用信号处理器中,加法器对芯片的性能具有重要的影响。

近些年来,随着电子技术的快速发展,处理器的复杂度和集成度越来越高,加法器无论在微处理器还是在可编程逻辑器件上,都是一个很基础很关键的存在。在数字信号处理的不同领域,对加法器的要求也不尽相同;以运算所用的数据类型分类,加法器可分为定点加法器和浮点加法器。定点加法器所需的运算资源较少,但精度较低;浮点加法器所需的运算资源多,但精度高,它们各自有其应用的优势和劣势。但现有的加法器一般只支持单一的定点加法或浮点加法运算。



技术实现要素:

本发明的目的在于提供一种可重构的整型-浮点加法器,在不断优化定点加法器性能的基础上,降低浮点加法器的资源利用。

为了实现上述目的,本发明采用如下技术方案:

一种可重构的整型-浮点加法器,包括:使能控制模块、整型-浮点转换模块、移位对阶模块、可重构求和模块与先导“0”计数移位器;

整型-浮点转换模块、移位对阶模块、可重构求和模块与先导“0”计数移位器顺次连接;使能控制模块连接移位对阶模块和先导“0”计数移位器;

使能控制模块,用于控制和切换可重构的整型-浮点加法器的运算模式:整型模式或浮点模式;

整型-浮点转换模块,用于对输入的整型数据或浮点数据做同质化的前处理;

移位对阶模块,用于在浮点运算模式下对经整型-浮点转换模块前处理后的数据进行移位判断和移位对阶操作;

可重构求和模块,用于完成经处理的整型或浮点数据的求和运算,得到初步求和结果;

先导“0”计数移位器,用于在浮点运算模式下对求和的初步求和结果进行规格化处理,并输出最终结果。

进一步的,所述整型-浮点转换模块包括2个32位并行移位寄存器,分别与两输入端相连接。

进一步的,移位对阶模块包括移位判断器与移位对阶器,移位判断器和移位对阶器均与使能控制模块相连接,其中移位判断器连接整型-浮点转换模块输出,移位对阶器连接移位判断器输出与整型-浮点转换模块输出。

进一步的,移位判断器包括1个8位比较器,1个8位两输入加法器和1个8位并行移位寄存器;8位比较器连接于整型-浮点转换模块2个32位并行移位寄存器的高8位输出;8位两输入加法器连接于整型-浮点转换模块2个32位并行移位寄存器的高8位输出和8位比较器输出;8位并行移位寄存器连接于8位比较器输出、8位两输入加法器输出、整型-浮点转换模块2个32位并行移位寄存器的高8位输出。

进一步的,移位对阶器包括2个24位并行移位寄存器,2个24位并行移位寄存器分别连接于移位判断器输出与整型-浮点转换模块2个32位并行移位寄存器的低24位输出。

进一步的,可重构求和模块包括4个8位两输入加法器,4个8位两输入加法器间采取级联,4个8位两输入加法器分别串联于移位对阶模块的移位判断器和移位对阶器。

进一步的,先导“0”模块包括26个多输入或非门、1个23位并行移位寄存器和1个8位两输入加法器;26个多输入或非门采用串并混合连接,分别与23位并行移位寄存器、8位两输入加法器串联连接;由23位并行移位寄存器、8位两输入加法器分别实现数据输出。

进一步的,加数由外部输入后,使能控制信号ctrl为1时,可重构的整型-浮点加法器进行整型运算:先导“0”计数移位器对数据做整型数处理;使能控制信号ctrl为0,可重构的整型-浮点加法器进行浮点运算,先导“0”计数移位器对数据做浮点数处理。

进一步的,使能控制信号ctrl为1时,输入的32位待处理整型数a、b,各被分割为4个部分,每部分8位,分别作为整型-浮点转换模块的4个8位整型加法器的输入:a[7:0]和b[7:0]输入低8位整型加法器,a[15:8]和b[15:8]输入次低8位整型加法器;a[31]a[22:16]和b[31]b[22:16]作为次高8位的输入数据,输入次高8位整型加法器;a[30:23]和b[30:23]作为高8位的输入,输入高8位的整型加法器中进行后续运算;四个8位整型加法器顺次级联,由低位8位加法器向高位8位加法器进位,最高8位加法器向外输出整个32位加法运算的最高进位cout;4个8位加法器的运算结果拼接为32位的中间求和结果;经过移位处理将符号位前置于最高位后,得到32位整型初步求和结果;再经过先导“0”计数移位器的整型数处理,直接输出得到最终32位整型加法求和结果。

进一步的,使能控制信号ctrl为1时,输入的32位待处理单精度浮点数a、b,各被分割为4个部分,每部分8位,分别作为4个8位整型加法器的输入;a[7:0]和b[7:0]输入低8位整型加法器,a[15:8]和b[15:8]输入次低8位整型加法器;a[31]a[22:16]和b[31]b[22:16]作为次高8位的输入数据,输入次高8位整型加法器,而a[30:23]和b[30:23]则作为高8位的输入,输入高8位的整型加法器中进行后续运算;

浮点运算模式的逻辑如下:先由移位判断器对输入单精度浮点数的指数位进行判断,比较两指数位大小,并求得两指数位的差值;再小阶对大阶,将差值输入给尾数运算单元部分的移位对阶器,供其进行移位操作;而后对已完成对阶与移位的待处理单精度浮点数分别由4个8位加法分部进行相应运算操作,得出32位的单精度浮点数中间运算结果;而后将后置的符号位前置,输入先导“0”计数移位器;经过先导“0”计数移位器的浮点数处理,最终得到规格化的32位单精度浮点数加法求和结果。

整型-浮点转换模块,根据运算模式的切换来进行数据位的换位安排,使之与4个8位整形加法器的运算资源分布相匹配;

求和模块与级联模块,包括32位整型加法器,由4个8位整型加法器级联组成,并且可重构成32位单精度浮点加法器,进行对输入数据的整型求和运算,计算出每位的结果及进位情况,并且在级联的8位加法器之间进行进位传输,并且将最高位进位进行输出寄存处理,以备后续运算使用;

移位判断器,在使能端给出浮点运算模式信号的情况下,对输入的两浮点数进行阶码判断,得出由于对阶而需要移位的位数;

移位对阶器,在浮点运算模式下,对输入浮点数的尾码进行对阶移位操作;

先导“0”计数移位器,浮点运算模式下,运算结果的尾码处理模块,确定规格化的移位位数并进行移位。

进一步的的,在由使能控制器控制的浮点运算模式下,将输入的32位单精度浮点数拆分成4个8位的部分,分别进行对应的运算及处理。由于32位单精度浮点数由高到低分别由1位符号位,8位指数位和23位尾数位构成,因此在拆分时,将数位顺序重组,由8位指数位充当高8位部(符号位后移),由1位符号位和尾数的高7位拼接充当次高8位部,由尾数的剩余16位顺次充当次低8位部和低8位部。将四个部分分别输入前述4个8位运算单元中进行处理。进一步地讲,高8位部率先进行阶码的比较操作与求差操作,将差值作为控制信号给入后3个部分,以便后3个部分的对阶移位;而后,后3个部分的8位运算单元进行先移位后求和操作(次高8位部的指数位不参与移位)。而后产生32位初步求和结果,对其进行符号位复位处理,使符号位回置于32位最高位得到实际求和结果。后续,再对实际求和结果进行先导“0”计数移位处理。另,在由使能控制器控制的整型运算模式下,高8位部改为进行求和运算,后3个部分改为仅进行求和操作;而后在实际求和结果进入先导“0”计数移位器后,不移位直接输出最终结果;其余操作流程与浮点运算模式相同。

相对于现有技术,本发明具有以下有益效果:本发明基于可重构思想,实现了同时可用于整型运算与浮点运算的32位可重构整型-浮点加法器的设计。在面对同时处理多种类型的数据的运算需求时,相对于常规的加法运算单元,会有更好的通用性。另外,用4个8位单元级联的形式实现32位数据的处理,可以在保证运算性能的基础上,提升硬件分配的灵活性,从而减少版图面积,降低功耗,降低硬件成本。

本发明可用于更大规模的可重构算法链(如可重构卷积器,可重构处理单元)中,在人工智能芯片对运算资源灵活复杂的计算需求下,实现更精准、更高效的资源复用。

随着可重构技术越来越火,本发明在不断优化定点加法器性能的基础上,降低浮点加法器的资源利用;在追求更快的速度,更小的面积的同时,也增强其通用性,以满足各种情况下对于加法器的需求。

附图说明

构成本申请的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是32位可重构的整型-浮点加法器的整体结构示意图。

图2是可重构的整型-浮点加法器的整型-浮点转换模块示意图。

图3是32位可重构的整型-浮点加法器移位对阶模块示意图。

图4是32位可重构的整型-浮点加法器可重构求和模块示意图。

图5是先导“0”计数移位器示意图。

具体实施方式

下面将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

以下详细说明均是示例性的说明,旨在对本发明提供进一步的详细说明。除非另有指明,本发明所采用的所有技术术语与本申请所属领域的一般技术人员的通常理解的含义相同。本发明所使用的术语仅是为了描述具体实施方式,而并非意图限制根据本发明的示例性实施方式。

请参阅图1所示,本发明提供一种可重构的整型-浮点加法器,包括使能控制模块、整型-浮点转换模块、移位对阶模块、可重构求和模块和先导“0”计数移位器。

使能控制模块,用于控制和切换可重构的整型-浮点加法器的运算模式:整型模式或浮点模式;使能控制模块连接位移判断器、移位对阶模块和先导“0”计数移位器。

整型-浮点转换模块,用于对输入的整型数据或浮点数据做同质化的前处理,以便可重构求和模块运算;

移位对阶模块,用于在浮点运算模式下对经前处理后的数据进行移位判断和移位对阶操作;

可重构求和模块,用于完成经处理的整型或浮点数据的求和运算;

先导“0”模块,用于在浮点运算模式下对求和的初步结果进行规格化处理,并输出最终结果。

整型-浮点转换模块包括2个32位并行移位寄存器,2个32位并行移位寄存器分别与两输入端a/b相连接,同时与可重构求和模块的4个8位整型加法器输入相连。

移位对阶模块包括移位判断器与移位对阶器,其中移位判断器包括若干比较器,移位对阶器包括若干移位寄存器,比较器和移位寄存器串联于整型-浮点转换模块输出,并分别与使能控制模块相连接,移位判断器和移位对阶器均与使能控制模块相连接,其中移位判断器连接整型-浮点转换模块输出,移位对阶器连接移位判断器输出与整型-浮点转换模块输出。

移位判断器包括1个8位比较器,1个8位两输入加法器和1个8位并行移位寄存器;8位比较器连接于整型-浮点转换模块2个32位并行移位寄存器的高8位输出;8位两输入加法器连接于整型-浮点转换模块2个32位并行移位寄存器的高8位输出和8位比较器输出;8位并行移位寄存器连接于8位比较器输出、8位两输入加法器输出、整型-浮点转换模块2个32位并行移位寄存器的高8位输出。

移位对阶器包括2个24位并行移位寄存器,2个24位并行移位寄存器分别连接于移位判断器输出与整型-浮点转换模块2个32位并行移位寄存器的低24位输出。

可重构求和模块包括4个8位两输入加法器,4个8位两输入加法器间采取级联,4个8位两输入加法器分别串联于移位对阶模块的移位判断器和移位对阶器。

先导“0”模块包括若干多输入或非门、加法器和移位寄存器,若干多输入或非门之间采用串并混合连接,与加法器、移位寄存器间采取串联连接,与可重构求和模块输出串联。具体的,先导“0”模块包括26个多输入或非门、1个23位并行移位寄存器和1个8位两输入加法器;26个多输入或非门采用串并混合连接,分别与23位并行移位寄存器、8位两输入加法器串联连接;由23位并行移位寄存器、8位两输入加法器分别实现数据输出。

使能配置信息和待处理数据由外部输入,由使能控制信息确定数据运算的通路选择,整型加法运算或是单精度浮点加法运算。最后,输入数据经过相应的运算通路完成相对应的加法运算。

如图4所示,所述的32位可重构整型-浮点加法器由4个8位整型加法器级联构成。在使能控制信号(ctrl)的控制下,可重构加法器完成运算通路选择;ctrl信号输入为1时,可重构整型-浮点加法器选择为整型运算模式,ctrl信号输入为0时,可重构整型-浮点加法器选择为浮点运算模式。

如图1、图2、图3所示,加数由外部输入后,将会分为两种情况。

第一种,使能控制信号ctrl为1,可重构整型-浮点加法器进行整型运算,先导“0”计数移位器对数据做整型数处理。输入的32位待处理整型数a、b,将各被分割为4个部分,每部分8位,分别作为4个8位整型加法器的输入。例如,a[7:0]和b[7:0]输入低8位整型加法器,a[15:8]和b[15:8]输入次低8位整型加法器。而需要注意的是,如图2所示,考虑到整个可重构整型-浮点加法器结构的复用性,输入的32位整型数仅在低16位时顺次分割,而在高16位上,采用将符号位后置的处理方案进行运算,即a[31]a[22:16]和b[31]b[22:16]作为次高8位的输入数据,输入次高8位整型加法器,而a[30:23]和b[30:23]则作为高8位的输入,输入高8位的整型加法器中进行后续运算。四个8位整型加法器顺次级联,由低位8位加法器向高位8位加法器进位(如图4),最高8位加法器向外输出整个32位加法运算的最高进位cout(如图4)。4个8位加法器的运算结果将拼接为32位的中间求和结果(因符号位后置);经过移位处理将符号位前置于最高位后,得到32位整型初步求和结果;再经过先导“0”计数移位器的整型数处理(不移位),直接输出得到最终32位整型加法求和结果(如图5)。

第二种,使能控制信号ctrl为0,可重构整型-浮点加法器进行浮点运算,先导“0”计数移位器对数据做浮点数处理。输入的32位待处理单精度浮点数a、b,将各被分割为4个部分,每部分8位,分别作为4个8位整型加法器的输入。例如,a[7:0]和b[7:0]输入低8位整型加法器,a[15:8]和b[15:8]输入次低8位整型加法器。而与整型运算模式相同,如图2所示,考虑到整个可重构整型-浮点加法器结构的复用性,在这里需要注意的是,输入的32位单精度浮点数数仅在低16位时顺次分割,而在高16位上,同样采用将符号位后置的处理方案进行运算,即a[31]a[22:16]和b[31]b[22:16]作为次高8位的输入数据,输入次高8位整型加法器,而a[30:23]和b[30:23]则作为高8位的输入,输入高8位的整型加法器中进行后续运算。

由于单精度浮点数运算的基本原理是指数位相等的数,尾数位才可以相加,所以运算首先需要判断两个浮点数指数位的大小,并且求其差值,再根据差值对指数位进行对阶,对尾数位进行移位,移位的位数即为指数位的差值。如图3,对阶的原则是“小阶对大阶”,即指数位较小的数a,将它的指数位与指数位较大的数b的指数位对齐,而由于a的指数位被扩大,其尾数位需要进行右移来保证a的整体值不变,此种对阶移位的方法相较于“大阶对小阶”的优势在于,尾数位右移相对于左移所产生的误差影响较小。由a、b的符号位决定尾数位做加法运算还是减法运算。

与整型运算模式顺次级联的方式不同,浮点运算模式的分部逻辑如下:先由移位判断器对输入单精度浮点数的指数位进行判断,比较两指数位大小,并求得两指数位的差值;再“小阶对大阶”,将差值输入给尾数运算单元部分的移位对阶器,供其进行移位操作;而后对已完成对阶与移位的待处理单精度浮点数分别由4个8位加法分部进行相应运算操作,得出32位的单精度浮点数中间运算结果(如图4);而后将后置的符号位前置,输入先导“0”计数移位器(如图4);经过先导“0”计数移位器的浮点数处理(移位输出),最终得到规格化的32位单精度浮点数加法求和结果(如图5)。

本实施例基于可重构的思想,实现了一种32位整型-浮点可重构加法器的设计。实现了在不同运算资源与不同运算需求下,在保证运算性能的前提下对运算模式的灵活切换。相比于现有的可重构加法器,本实施例所示可重构的整型-浮点加法器具有更好的数据与硬件分配灵活性。

由技术常识可知,本发明可以通过其它的不脱离其精神实质或必要特征的实施方案来实现。因此,上述公开的实施方案,就各方面而言,都只是举例说明,并不是仅有的。所有在本发明范围内或在等同于本发明的范围内的改变均被本发明包含。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1