一种定点加法结果位宽限制的处理方法和装置与流程

文档序号:12718668阅读:675来源:国知局
一种定点加法结果位宽限制的处理方法和装置与流程

本发明属于数字信号处理技术领域,具体地说,是涉及一种定点加法结果位宽限制的处理方法和装置。



背景技术:

加法器作为数据处理的基本器件不仅单独使用于数据处理集成电路中,而且还作为一个基本的部件应用于乘法器等处理器的运算部件中。

大部分算法中都会用到乘法操作,特别是在信号处理算法中,先进行乘法操作然后将乘法结果与累加寄存器中的结果相加/减的乘累加操作是核心操作之一,这使得每秒可执行乘累加操作数(MAC/S)成为简单衡量一个数字信号处理器计算能力的指标之一。不仅是在数字信号处理器中,通用处理器为了中也集成了乘累加器,某些通用处理器为了加速图像处理或其他科学计算,也使用了乘累加器。

定点乘法操作的结果位宽是输入操作数位宽的两倍(假设两个输入操作数位宽相同),如果需要经过多次乘法操作,理论上运算结果的位宽将以指数形式增长。但通常处理器可处理数据的位宽是有限制的,而且一般情况下程序设计员也不需要得到如此形式的结果,所以通常情况下,需要限制乘法结果的位宽与输入数的位宽相同。

通常,累加寄存器的位宽长于乘法结果,例如32位乘累加器中乘法结果是64位,其累加寄存器位宽可能是80位。增加累加寄存器的位宽的主要目的是防止计算结果在多次累加/减的过程中溢出。在连续的累加/减操作结束并写出时,仍然需要将结果的位宽限制到正常操作数的位宽。不仅仅在累加器中,较多的加减法类操作也需要对结果进行类似的位宽限制处理。

在整数加法器的位宽限制操作中,如果加法器得出的结果已经超过了限制位宽的表示范围,则要求进行饱和,也即,只保留低位部分;或者,将不在限制位宽可表示范围内的加法器结果舍去,保留限制位宽可表示范围内的和。在某些处理器中,并不要求运算单元直接将结果饱和,只要求给出上溢出或者下溢出状态。以32位乘累加操作要求得到32位饱和结果为例:首先32位乘法操作会得到64位的乘法结果,然后至少进行64位的累加操作,在累加操作后,需要将64位的加法结果保存为32位。将64位加法结果保存为32位结果的通常流程如下:首先需要判断64位累加操作是否溢出,然后需要判断高33位是否是纯粹的符号位,如果既没有64位溢出且高33位都是符号位,则选择低32位作为结果即可,否则需要根据结果上溢出/下溢出饱和至32位最大值/最小值。

上述可见,在位宽限制操作过程中,若运算结果超过限制位宽的表示范围,需要进行饱和操作或者溢出状态报告。通常的位宽限制操作是在得到最终结果之后再判断是否需要进行饱和处理,并根据判断结果进行饱和处理后写出运算结果。如图1所示的常用加法结果处理框图,用于将乘法结果位宽限制在与乘法输入操作数的位宽相同;图示中的结果处理方式是:根据加法器高位的“规约或”“规约与”结果判断运算结果是否超出限制位宽能表示的范围,并结合整个加法器的溢出判断逻辑,最终选择写出的结果。这其中,“规约”操作若以NAND2/NOR2逻辑门衡量,位宽为N的输入需要log2N级的逻辑,如图2所示是一个典型的“规约与”门锥:位宽为N的加法器的进位链逻辑级数也是log2N(以AOI21/OAI21逻辑门衡量,与NAND2/NOR2逻辑门延迟基本相同),可见,规约操作是一个不可忽视的逻辑长度,这造成了在得到运算最终结果之后再根据结果进行饱和处理的操作方式不利于提升处理器性能的技术问题。



技术实现要素:

本申请提供了一种定点加法结果位宽限制的处理方法和装置,能够提升加法器限制位宽操作的处理速度,从而实现提升处理器性能的技术效果。

为解决上述技术问题,本申请采用以下技术方案予以实现:

提出一种定点加法结果位宽限制的处理方法,包括:基于加法器输入操作数的高位部分,获得上溢预判值和下溢预判值;以及,基于加法器运算结果中次高位向最高位的进位,获得所述运算结果是否超出所述加法器输入位宽的溢出判断和所述运算结果的符号位判断;基于所述上溢预判值、所述下溢预判值、所述溢出判断、所述符号位判断和所述加法器运算结果,判断所述运算结果是否上溢出或下溢出;若是,将所述运算结果饱和至所述加法器限制位宽可表示范围的最大值或最小值写出;若否,将所述运算结果不经饱和处理写出。

进一步的,所述基于加法器输入操作数的高位部分,获得上溢预判值和下溢预判值,具体为:基于所述加法器输入操作数的高位部分得到传递码、产生码和零码;基于所述传递码、所述产生码和所述零码的编码获得上溢预测因子和下溢预测因子;根据所述上溢预测因子的规约或运算得到所述上溢预判值,根据所述下溢预测因子的规约或运算得到所述下溢预判值;其中,所述上溢预测因子的每一位根据所述传递码的每一位与权重低一位的零码采取同或运算得到;所述下溢预测因子的每一位根据所述传递码的每一位与权重低一位的产生码采取同或运算得到;所述传递码每一位为所述输入操作数的高位部分的相同权重位采取异或运算得到;所述产生码每一位为所述输入操作数的高位部分的相同权重位采取与运算得到;所述零码每一位为所述输入操作数的高位部分的相同权重位采取或非运算得到。

进一步的,基于加法器运算结果中次高位向最高位的进位,获得所述运算结果是否超出所述加法器输入位宽的溢出判断和所述运算结果的符号位判断,具体为:根据所述零码最高位和所述运算结果中次高位向最高位的进位采取与运算得到上溢位判断结果;根据所述产生码最高位和取反的所述运算结果中次高位向最高位的进位采取与运算得到下溢位判断结果;根据所述零码最高位和所述运算结果中次高位向最高位的进位采取或运算后,和所述产生码最高位采取与运算再取反运算确定所述符号位判断。

进一步的,判断所述运算结果是否上溢出,具体为:判断所述运算结果是否大于所述加法器输入位宽可表示的最大值;或,判断所述运算结果是否大于所述加法器限制位宽可表示的最大值; 判断所述运算结果是否下溢出,具体为:判断所述运算结果是否小于所述加法器输入位宽可表示的最小值;或,判断所述运算结果是否小于所述加法器限制位宽可表示的最小值。

进一步的,判断所述运算结果是否大于所述加法器输入位宽可表示的最大值,具体为:基于所述上溢位判断结果,判断所述运算结果是否大于所述加法器输入位宽可表示的最大值;判断所述运算结果是否大于所述加法器限制位宽可表示的最大值,具体为:根据对所述上溢预判值和所述运算结果处于限制位宽范围内的最高位采取或运算,再与所述符号位判断采取与运算后的运算结果,判断所述运算结果是否大于所述加法器限制位宽可表示的最大值;判断所述运算结果是否小于所述加法器输入位宽可表示的最小值,具体为:基于所述下溢位判断结果,判断所述运算结果是否小于所述加法器输入位宽可表示的最小值;判断所述运算结果是否小于所述加法器限制位宽可表示的最小值,具体为:根据对所述下溢预判值和所述运算结果处于限制位宽范围内的最高位采取或运算,再与所述符号位判断采取与运算后的运算结果,判断所述运算结果是否小于所述加法器限制位宽可表示的最小值。

提出一种定点加法结果位宽限制的处理装置,包括预判模块、溢出判断和符号位确定模块、溢出结果判定模块和运算结果表示模块;所述预判模块,用于基于加法器输入操作数的高位部分,获得上溢预判值和下溢预判值; 所述溢出判断和符号位确定模块,用于基于加法器运算结果中次高位向最高位的进位,获得所述运算结果是否超出所述加法器输入位宽的溢出判断和所述运算结果的符号位判断;所述溢出结果判定模块,用于基于所述上溢预判值、所述下溢预判值、所述溢出判断、所述符号位判断和所述加法器运算结果,判断所述运算结果是否上溢出或下溢出;所述运算结果表示模块,用于在所述溢出结果判定模块判断所述运算结果上溢出或下溢出时,将所述运算结果饱和至所述加法器限制位宽可表示范围的最大值或最小值写出;在所述溢出结果判定模块判断所述运算结果不存在溢出时,将所述运算结果不经饱和处理写出。

进一步的,所述预判模块具体包括传递码编码单元、产生码编码单元、零码编码单元、上溢预测因子编码单元、下溢预测因子编码单元、上溢预判规约或运算单元和下溢预判规约或运算单元;所述传递码编码单元,用于根据所述输入操作数的高位部分的相同权重位采取异或运算得到所述传递码的每一位;所述产生码编码单元,用于根据所述输入操作数的高位部分的相同权重位采取与运算得到所述产生码的每一位;所述零码编码单元,用于根据所述输入操作数的高位部分的相同权重位采取或非运算得到所述零码的每一位;所述上溢预测因子编码单元,用于根据所述传递码的每一位与权重低一位的零码采取同或运算得到所述上溢预测因子的每一位;所述下溢预测因子编码单元,用于根据所述传递码的每一位与权重低一位的产生码采取同或运算得到所述下溢预测因子的每一位;所述上溢预判规约或运算单元,用于根据所述上溢预测因子的规约或运算得到所述上溢预判值;所述下溢预判规约或运算单元,用于根据所述下溢预测因子的规约或运算得到所述下溢预判值。

进一步的,所述溢出判断和符号位确定模块具体包括上溢位判断单元、下溢位判断单元和符号位确定单元;所述上溢位判断单元,用于根据所述零码最高位和所述运算结果中次高位向最高位的进位采取与运算得到上溢位判断结果;所述下溢位判断单元,用于根据所述产生码最高位和取反的所述运算结果中次高位向最高位的进位采取与运算得到下溢位判断结果;所述符号位确定单元,用于根据所述零码最高位和所述运算结果中次高位向最高位的进位采取或运算后,和所述产生码最高位采取与运算再取反运算确定所述符号位判断。

进一步的,所述溢出结果判定模块具体包括上溢出判定单元和下溢出判定单元;所述上溢出判定单元,用于判断所述运算结果是否大于所述加法器输入位宽可表示的最大值;或判断所述运算结果是否大于所述加法器限制位宽可表示的最大值,若是,则判断所述运算结果上溢出;所述下溢出判定单元,用于判断所述运算结果是否小于所述加法器输入位宽可表示的最小值;或判断所述运算结果是否小于所述加法器限制位宽可表示的最小值;若是,则判断所述运算结果下溢出。

进一步的,所述上溢出判定单元包括基于输入位宽的上溢出判定子单元和基于限制位宽的上溢出判定子单元;所述基于输入位宽的上溢出判定子单元,用于基于所述上溢位判断结果,判断所述运算结果是否大于所述加法器输入位宽可表示的最大值;所述基于限制位宽的上溢出判定子单元,用于根据对所述上溢预判值和所述运算结果处于限制位宽范围内的最高位采取或运算,再与所述符号位判断采取与运算后的运算结果,判断所述运算结果是否大于所述加法器限制位宽可表示的最大值;所述下溢出判定单元包括基于输入位宽的下溢出判定子单元和基于限制位宽的下溢出判定子单元;所述基于输入位宽的下溢出判定子单元,用于基于所述下溢位判断结果,判断所述运算结果是否小于所述加法器输入位宽可表示的最小值;所述基于限制位宽的下溢出判定子单元,用于根据对所述下溢预判值和所述运算结果处于限制位宽范围内的最高位采取或运算,再与所述符号位判断采取与运算后的运算结果,判断所述运算结果是否小于所述加法器限制位宽可表示的最小值。

与现有技术相比,本申请的优点和积极效果是:本申请提出的定点加法结果位宽限制的处理方法和装置中,一方面,在加法器运算结束之前,获取任意时刻的一对执行加法运算的输入操作数对运算结果做出上溢预判和下溢预判,预判部分包括传递码、产生码、零码、上溢预测因子、下溢预测因子等的编码运算,以及采取规约或运算得到上溢预判值和下溢预判值等的编码运算操作,这部分运算在获得运算结果之前的加法器运算过程中同步进行;另一方面,稍早于加法器获得运算结果之前,采用运算结果的次高位向最高位的进位,获得运算结果是否超出加法器输入位宽的溢出判断和运算结果的符号位判断,这部分运算采用了运算结果的次高位向最高位的进位,在运算结果获得之前即可执行,使得溢出判断和符号位判断稍早于加法器得到运算结果得到;最后,在运算结果获得之后,利用上溢预判值、下溢预判值、溢出判断、符号位判断和部分运算结果信息,做出运算结果是否上溢出或下溢出的判断,这部分运算中虽然使用了运算结果中的部分信息,但是上溢出或下溢出的判断是在加法器结束之后的约一级逻辑时间即可完成,也即,在加法器获得运算结果之后的约一级门的时延之后就可以确定是否需要对结果进行饱和运算,与现有技术中在获得运算结果之后再采取规约操作判断是否对需要饱和处理相比,本申请提出的处理方法在运算结果获得之前采取耗时的规约运算等操作,在运算结果出来之后约一级门的延时即可获得是否需要饱和处理的判断结果,缩短了判断是否需要饱和处理的时间,提升加法器限制位宽操作的处理速度,从而实现提升处理器性能的技术效果。

结合附图阅读本申请实施方式的详细描述后,本申请的其他特点和优点将变得更加清楚。

附图说明

图1为现有技术中加法结果为宽限制的处理流程示意图;

图2为现有技术中判断加法器运算结果是否超出限制位宽表示范围而采取的规约与运算逻辑门示意图;

图3为本申请提出的定点加法结果位宽限制的处理方法的方法流程图;

图4为本申请提出的定点加法结果位宽限制的处理装置的逻辑架构图;

图5为本申请提出的预判模块的具体实施例逻辑门架构示意图;

图6为本申请提出的预判模块的具体实施例逻辑门示意图;

图7为本申请提出的定点加法结果位宽限制的处理装置的具体实施例逻辑门示意图。

具体实施方式

下面结合附图对本申请的具体实施方式作进一步详细地说明。

本申请针对整数加法器中的位宽限制操作,即将两个位宽较大的数相加/减得到的结果限制到较小的位宽,例如,如何将64位的加法结果保存为32位的结果,提出一种定点加法结果位宽限制的处理方法,使用在加法器运算结果获得之前对运算结果进行预判,并在加法器运算结果得到之后立刻进行饱和操作,缩短了加法器判断是否需要进行饱和处理的时间,如图3所示,该方法包括以下步骤:

步骤S31:基于加法器输入操作数的高位部分,获得上溢预判值和下溢预判值。

预判部分采用的是加法器输入操作数的高位部分,具体位宽由加法器的限制位宽决定,例如,若加法器的输入操作数为a[n-1:0]和b[n-1:0],其加法运算后的运算结果为s[n-1:0],而加法器的限制位宽为m,也即需要将运算结果饱和限制到m位宽r[m-1:0];则本申请中用于预判逻辑的输入操作数实际为加法器输入操作数的高位部分a[n-1:m-1]和b[n-1:m-1]。预判部分获得两个预判结果:上溢预判值pof和下溢预判值puf。

具体的,首先使用加法器输入操作数的高位部分进行编码获得传递码、产生码和零码。

传递码t[n-1:m-1]的每一位是操作数a[n-1:m-1]和b[n-1:m-1]的相同权重位采取异或运算得到;产生码g[n-1:m-1] 的每一位是操作数a[n-1:m-1]和b[n-1:m-1] 的相同权重位采取与运算得到;零码z[n-1:m-1]的每一位是操作数a[n-1:m-1]和b[n-1:m-1] 的相同权重位采取或非运算得到。

上述三个编码在常用的超前进位加法器中也会产生,因此在使用超前进位加法器的实施例中,可以直接由加法器产生上述编码后输入给预判部分使用即可。

在获得上述三种编码后,使用编码产生上溢预测因子iof和下溢预测因子iuf;上溢预测因子iof[n-1:m]的每一位是根据传递码的每一位与权重低一位的零码采取同或运算得到的;下溢预测因子iuf[n-1:m]的每一位是根据传递码的每一位与权重低一位的产生码采取同或运算得到的。

最后,将所有的上溢预测因子采取规约或运算得到上溢预判值pof,以及将所有的下溢预测因子采取规约或运算得到下溢预判值puf。

该步骤的预判部分是在加法器运算结束之前,获取任意时刻的一对执行加法运算的输入操作数对运算结果做出上溢预判和下溢预判,预判部分包括传递码、产生码、零码、上溢预测因子、下溢预测因子等的编码运算,以及采取规约或运算得到上溢预判值和下溢预判值等的编码运算操作,这部分运算在获得运算结果之前的加法器运算过程中同步进行,而不是在运算结果获得之后进行。

步骤S32:基于加法器运算结果中次高位向最高位的进位,获得运算结果是否超出加法器输入位宽的溢出判断和运算结果的符号位判断。

加法器运算结果中次高位向最高位的进位可以在运算结果获得之前得到,因此本步骤也在加法器运算结果获得之前执行,能稍早于运算结果获得完成。

具体的,根据零码最高位z[n-1]和运算结果中次高位向最高位的进位Cn-2采取与运算得到上溢位判断结果aov;根据产生码最高位g[n-1]和取反的运算结果中次高位向最高位的进位Cn-2采取与运算得到下溢位判断结果auv;根据零码最高位z[n-1]和运算结果中次高位向最高位的进位Cn-2采取或运算后,和产生码最高位g[n-1]采取与运算再取反运算确定符号位判断rs;如可用足够的位宽表示运算结果,则运算结果的最高位为符号位,符号位为高表示负,为低表示正;由于加法器本身就存在溢出的可能导致无法使用运算结果的最高位判断运算结果的正负情况,本申请实施例中,可根据产生码的最高位、零码最高位和运算结果中次高位向最高位的进位推算出符号位判断,例如,产生码最高位g[n-1]为高,或者零码最高位z[n-1]和运算结果中次高位向最高位的进位Cn-2的“或非”运算是高,则rs为高,否则为低。

步骤S33:基于上溢预判值、下溢预判值、溢出判断、符号位判断和加法器运算结果,判断运算结果是否上溢出或下溢出;若是,

步骤S34:将运算结果饱和至加法器限制位宽可表示范围的最大值或最小值写出。

步骤S33中,运用步骤S31和步骤S32中产生的上溢预判值、下溢预判值、溢出判断、符号位判断,以及结合加法器运算结果进行处理,判定在加法器限制位宽可表示范围内运算结果是否溢出。

具体的,通过判断运算结果是否大于加法器输入位宽可表示的最大值;或,通过判断运算结果是否大于加法器限制位宽可表示的最大值,来实现判断运算结果是否上溢出。由上溢位判断结果aov判断运算结果是否大于加法器输入位宽可表示的最大值;根据对上溢预判值pof和运算结果处于限制位宽范围内的最高位s[m-1]采取或运算,再与符号位判断rs采取与运算后的运算结果,判断运算结果是否大于加法器限制位宽可表示的最大值;例如,若符号位判断rs表明运算结果为正,上溢预判值pof表示上溢出或运算结果处于限制位宽范围内的最高位s[m-1]是高,则表明加法器运算结果大于限制位宽可表示范围的最大值,则运算结果上溢,需要报告上溢状态,并饱和至限制位宽可表示范围的最大值写出。

通过判断运算结果是否小于加法器输入位宽可表示的最小值;或,判断运算结果是否小于加法器限制位宽可表示的最小值,来实现判断运算结果是否下溢出。由下溢位判断结果auv判断运算结果是否小于加法器输入位宽可表示的最小值;根据对下溢预判值puf和运算结果处于限制位宽范围内的最高位s[m-1]采取或运算,再与符号位判断rs采取与运算后的运算结果,判断运算结果是否小于加法器限制位宽可表示的最小值;例如,若符号位判断rs表明运算结果为负,下溢预判值puf表示下溢出或运算结果处于限制位宽范围内的最高位s[m-1]是低,则表明加法器运算结果小于限制位宽可表示范围的最小值,则运算结果下溢,需要报告下溢状态,并饱和至限制位宽可表示范围的最小值写出。

若判断上溢出和下溢出都不成立,也即运算结果不存在溢出的情况,则选择按照加法器限制位宽可表示范围的原始运算结果s[m-1:0]输出,加法器状态指示正常。

上述可见,本申请提出的定点加法结果位宽限制的处理方法中,一方面,在加法器运算结束之前,获取任意时刻的一对执行加法运算的输入操作数对运算结果做出上溢预判和下溢预判,预判部分包括传递码、产生码、零码、上溢预测因子、下溢预测因子等的编码运算,以及采取规约或运算得到上溢预判值和下溢预判值等的编码运算操作,这部分运算在获得运算结果之前的加法器运算过程中同步进行;另一方面,稍早于加法器获得运算结果之前,采用运算结果的次高位向最高位的进位,获得运算结果是否超出加法器输入位宽的溢出判断和运算结果的符号位判断,这部分运算采用了运算结果的次高位向最高位的进位,在运算结果获得之前即可执行,使得溢出判断和符号位判断稍早于加法器得到运算结果得到;最后,在运算结果获得之后,利用上溢预判值、下溢预判值、溢出判断、符号位判断和部分运算结果信息,做出运算结果是否上溢出或下溢出的判断,这部分运算中虽然使用了运算结果中的部分信息,但是上溢出或下溢出的判断是在加法器结束之后的约一级逻辑时间即可完成,也即,在加法器获得运算结果之后的约一级门的时延之后就可以确定是否需要对结果进行饱和运算,与现有技术中在获得运算结果之后再采取规约操作判断是否对需要饱和处理相比,本申请提出的处理方法在运算结果获得之前采取耗时的规约运算等操作,在运算结果出来之后约一级门的延时即可获得是否需要饱和处理的判断结果,缩短了判断是否需要饱和处理的时间,升加法器限制位宽操作的处理速度,从而实现提升处理器性能的技术效果。

需要说明的是:上述处理方法可执行于加法器运算结果没有获得之前,这包括了加法器所有可能的输入情况;若在某些特殊情况下,可预先获知运算结果在输入位宽上的正、负、是否可能溢出或其他情况下,本着缩短处理时间、提高处理速度、降低资源利用的意图,本处理方法同样适用。

基于上述提出的定点加法结果位宽限制的处理方法,本申请还提出一种定点加法结果位宽限制的处理装置,如图4所示,包括预判模块41、溢出判断和符号位确定模块42、溢出结果判定模块42和运算结果表示模块44。

预判模块41用于基于加法器40输入操作数的高位部分a[n-1:m-1]和b[n-1:m-1],获得上溢预判值pof和下溢预判值puf; 溢出判断和符号位确定模块42用于基于加法器运算结果中次高位向最高位的进位Cn-2,获得运算结果是否超出加法器输入位宽的溢出判断av和运算结果的符号位判断rs;溢出结果判定模块43用于基于上溢预判值pof、下溢预判值puf、溢出判断av、符号位判断rs和加法器运算结果,判断运算结果是否上溢出或下溢出;运算结果表示模块44用于在溢出结果判定模块43判断运算结果上溢出或下溢出时,将运算结果饱和至加法器限制位宽可表示范围的最大值或最小值写出;并在溢出结果判定模块43判断运算结果不存在溢出时,将运算结果不经饱和处理写出,也即写出原始运算结果。

在一个具体的实施例中,如图5所示,预判模块41具体包括传递码编码单元411、产生码编码单元412、零码编码单元413、上溢预测因子编码单元414、下溢预测因子编码单元415、上溢预判规约或运算单元416和下溢预判规约或运算单元417。

传递码编码单元411用于根据输入操作数的高位部分a[n-1:m-1]和b[n-1:m-1]的相同权重位采取异或运算得到传递码t[n-1:m-1]的每一位;产生码编码单元412用于根据输入操作数的高位部分a[n-1:m-1]和b[n-1:m-1]的相同权重位采取与运算得到产生码g[n-1:m-1]的每一位;零码编码单元413用于根据输入操作数的高位部分a[n-1:m-1]和b[n-1:m-1]的相同权重位采取或非运算得到零码z[n-1:m-1]的每一位;上溢预测因子编码单元414用于根据传递码的每一位与权重低一位的零码采取同或运算得到上溢预测因子iof[n-1:m]的每一位;下溢预测因子编码单元415用于根据传递码的每一位与权重低一位的产生码采取同或运算得到下溢预测因子iuf[n-1:m]的每一位;上溢预判规约或运算单元416用于根据上溢预测因子iof[n-1:m]的规约或运算得到上溢预判值pof;下溢预判规约或运算单元417用于根据下溢预测因子iuf[n-1:m]的规约或运算得到下溢预判值puf。

其中,传递码编码单元411、产生码编码单元412和零码编码单元413的编码在常用的超前进位加法器中也会产生,因此在使用超前进位加法器的实施例中,上述三个编码单元实际应用于加法器中,可以直接由加法器产生上述编码后输入给预判模块41使用即可。

如图6所示,为预判模块41一个具体逻辑门实施例图,使用加法器输入操作数的高位部分a[n-1:m-1]和b[n-1:m-1]作为输入,使用编码逻辑601产生上溢预测因子iof和下溢预测因子iuf,图中结构使用了一种更适合具体实现的逻辑结构,因为需要同时产生传递码、产生码和零码,而传递码可以由产生码和零码得到,所以在编码逻辑601中,首先得到产生码和零码,然后再使用产生码和零码得到传递码。在每一位编码逻辑601得到传递码、产生码和零码后,需要产生上溢预测因子和下溢预测因子,需要使用每一位传递码分别与第一位的产生码和零码进行异或/同或的操作,得到上溢预测因子的每一位和下溢预测因子的每一位;其中,最高位不需要向更高位给出产生码和零码,如编码逻辑602所示,最低位没有更低位,不需要产生传递码产生该位的预测因子,如编码逻辑603所示。得到上溢预测因子iof和下溢预测因子iuf之后,将上溢预测因子的所有位进行规约或逻辑运算得到上溢预判值pof,将下溢预测因子的所有位进行规约或逻辑运算得到下溢预判值puf。

如图7所示,溢出判断和符号位确定模块42具体包括上溢位判断单元402、下溢位判断单元403和符号位确定单元404;上溢位判断单元402用于根据零码最高位z[n-1]和运算结果中次高位向最高位的进位Cn-2采取与运算得到上溢位判断结果aov;图示中,从加法器401的运算中获取运算结果中次高位向最高位的进位Cn-2;下溢位判断单元403用于根据产生码最高位g[n-1]和取反的运算结果中次高位向最高位的进位Cn-2采取与运算得到下溢位判断结果auv,图示中,采用了同理编码逻辑设计,即,根据产生码最高位g[n-1]和运算结果中次高位向最高位的进位Cn-2采取或运算后再取反得到下溢位判断结果auv;符号位确定单元404用于确定运算结果符号位的正负,由于加法器本身就存在溢出的可能导致无法使用运算结果的最高位判断运算结果的正负情况,本申请实施例中,可根据零码最高位z[n-1]和运算结果中次高位向最高位的进位Cn-2采取或运算后,和产生码最高位g[n-1]采取与运算再取反运算确定符号位判断。

如图7所示,溢出结果判定模块43具体包括上溢出判定单元405和下溢出判定单元406;上溢出判定单元405用于判断运算结果是否大于加法器输入位宽可表示的最大值;或判断运算结果是否大于加法器限制位宽可表示的最大值,若是,则判断运算结果上溢出;下溢出判定单元406用于判断运算结果是否小于加法器输入位宽可表示的最小值;或判断运算结果是否小于加法器限制位宽可表示的最小值;若是,则判断运算结果下溢出。

具体的,上溢出判定单元405包括基于输入位宽的上溢出判定子单元和基于限制位宽的上溢出判定子单元;基于输入位宽的上溢出判定子单元中,基于上溢位判断结果aov,判断运算结果是否大于加法器输入位宽可表示的最大值;基于限制位宽的上溢出判定子单元中,根据对上溢预判值pof和运算结果处于限制位宽范围内的最高位s[m-1]采取或运算,再与符号位判断rs采取与运算后的运算结果,判断运算结果是否大于加法器限制位宽可表示的最大值。下溢出判定单元406包括基于输入位宽的下溢出判定子单元和基于限制位宽的下溢出判定子单元;基于输入位宽的下溢出判定子单元中,基于下溢位判断结果auv判断运算结果是否小于加法器输入位宽可表示的最小值;基于限制位宽的下溢出判定子单元中,根据对下溢预判值puf和运算结果处于限制位宽范围内的最高位s[m-1]采取或运算,再与符号位判断rs采取与运算后的运算结果,判断运算结果是否小于加法器限制位宽可表示的最小值。

针对上述实施例需要说明的是:由于同样的逻辑可以使用不同的逻辑门进行表达和实现,因此,基于同样的实现原理,使用其他方式得到相同逻辑结果的设计同样属于本申请的保护范围内。上述所有判断中,基于逻辑门的特点,结合实际设计使用情况,采取最终逻辑结果为高时代表肯定判断,最终逻辑结果为低时代表否定判断,或,最终逻辑结果为高时代表否定判断,最终逻辑结果为低时代表肯定判断,本申请实施例不予限制。

应该指出的是,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。

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