一种除法运算方法及装置与流程

文档序号:12063316阅读:465来源:国知局
一种除法运算方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种除法运算方法及装置。



背景技术:

在实现除法器的除法运算时,通常是通过调用专用的数字信号处理单元或者使用查找表(LUT,Look Up Table)资源实现除法器的功能,但如果除法器的位宽较大时,直接调用内置的芯片进行除法运算,则需要消耗大量的芯片资源。一般将位宽较大的除法器称为大位宽除法器,大位宽是相对于芯片的处理能力而定的,例如中高端芯片处理能力较强,位宽高于某个值才算大位宽,即对位宽不敏感;而低端芯片处理能力较弱,一般位宽大于20位(bits)便很敏感,处理速度就会很慢,则可称之为大位宽。

在很多应用场景中,大位宽除法器对精度的要求有限,对芯片的处理能力要求高,故在实现除法器运算时,需要消耗数量庞大的报警器和寄存器,导致芯片资源消耗极大。



技术实现要素:

本申请提供一种除法运算方法及装置,能够解决大位宽除法器在运算时,需要消耗较多芯片资源的问题。

第一方面,提供一种除法运算方法,包括:

在第一被除数不大于第一除数时,将所述第一被除数输入移位器,所述第一被除数和所述第一除数为二进制数;

对输入所述移位器的所述第一被除数进行左移操作,得到第二被除数;

从所述第二被除数和所述第一除数中移除连续为0的比特,得到第三被除数和第二除数;

将所述第三被除数与所述第二除数进行除法运算,得到实际运算值。

通过从除数和被除数中移除连续为0的比特,实现了对除数和被除数位宽的压缩,从而实现将大位宽除法器压缩为小位宽除法器,有效减少原大位宽除法器在运算时所需消耗的芯片资源,进而提高运算效率和提升芯片性能。

结合第一方面,在第一方面的第一种可能的实现方式中,从所述第二被除数中移除连续为0的比特,得到第三被除数,以及从所述第一除数中移除连续为0的比特,得到第二除数,包括:

步骤A:按照二进制位的从高至低的顺序,从所述第二被除数中选择连续t个比特作为第一待压缩比特集,以及按照二进制位的从高至低的顺序,从所述第一除数中选择连续t个比特作为第二待压缩比特集,其中t为第一阈值,用于指示单次压缩的比特数;

步骤B:在判断所述第一待压缩比特集中的每一比特均为0,且判断所述第二待压缩比特集中的每一比特均为0时,则将所述第一待压缩比特集从所述第二被除数中移除,得到压缩后的所述第二被除数,以及将所述第二待压缩比特集从所述第一除数中移除,得到压缩后的所述第一除数。通过每次选择一个第一待压缩比特集和一个第二待压缩比特集,实现可以将原数据中连续为0的比特压缩掉,可以不用一次压缩一个为0的比特,在保证满足压缩精度前提下,有效减少压缩次数。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在得到所述压缩后的第二被除数和所述压缩后的第一除数,所述方法还包括:

步骤C:判断所述压缩后的第二被除数和所述压缩后的第一除数是否满足预设压缩条件;

若不满足所述预设压缩条件,则将所述压缩后的第二被除数作为新的第二被除数,将所述压缩后的第一除数作为新的第一除数,重复所述步骤A、所述步骤B及所述步骤C;

若满足所述预设压缩条件,则将所述压缩的第二被除数作为所述第三被除数,将所述压缩后的第一除数作为第二除数,结束压缩操作。

可选的,所述预设压缩条件包括以下之一:

所述压缩后的第一除数的位宽Q小于或等于第二阈值,其中位宽Q为正整数,所述第二阈值用于指示当前的压缩精度是否满足预设压缩精度;

所述第一除数中不存在每一比特均为0的第二待压缩比特集;

所述压缩后的第一除数的位宽Q小于或等于第二阈值,且所述压缩后的 第一除数中的下一个连续t个比特不均为0。本实现方式中,根据预设压缩条件判断是否结束压缩操作,在保证除法运算结果精度的前提下,可以提高运算效率。

结合第一方面,在第一方面的第三种可能的实现方式中,从所述第二被除数中移除连续为0的比特,得到第三被除数,以及从所述第一除数中移除连续为0的比特,得到第二除数,具体包括:

按照二进制位的从高至低的顺序以及第一阈值t,依次从所述第二被除数中选择N个第一待压缩比特集,每个所述第一待压缩比特集包括连续为0的t个比特,其中,N为正整数,所述第一阈值t用于指示单次压缩的比特数;

按照二进制位的从高至低的顺序以及所述第一阈值t,依次从所述第一除数中选择N个第二待压缩比特集,每个所述第二待压缩比特集包括连续为0的t个比特;

将所述N个第一待压缩比特集从所述第二被除数中移除,得到所述第三被除数,以及将所述N个第二待压缩比特集从所述第一除数中移除,得到所述第二除数。

结合第一方面的第一至第三种可能的实现方式中的任一种,在第一方面的第四种可能的实现方式中,所述第一阈值t满足如下条件:1≤t≤Q’*1/2,其中,满足如下条件:Q’为所述第一除数的有效位宽,Q’为正整数。

在进行压缩操作前,根据第一除数的有效位宽Q’计算单次压缩的比特数,即第一阈值t,可以精确地进行压缩。

结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,在选择所述第一待压缩比特集和所述第二待压缩比特集之前,所述方法还包括:

按照二进制位的从高至低的顺序,判断所述第一除数的第一个不为0的比特和所述第一除数的最后一个为0的比特,并计算从所述第一个不为0的比特至所述最后一个为0的比特的有效位宽Q’,根据所述有效位宽Q’确定所述第一阈值t。

结合第一方面的第二至第五种可能的实现方式中的任一种,在第一方面的第六种实现方式中,在满足所述预设压缩条件,结束压缩操作之后,所述 方法还包括:

判断预设的理论运算值与所述实际运算值之差是否小于压缩精度,所述预设的理论运算值为所述第二被除数与所述第一除数进行除法运算得到的值;

若小于,则结束操作;若不小于,则重复执行选择和移除待压缩比特集的操作,直至所述理论运算值与所述实际运算值之差小于压缩精度。

本申请通过进一步的判断经过压缩操作后的除法运算结果是否达到要求的压缩精度,从而决定是否需要再次进行压缩操作,提高压缩精度,以保证除法运算结果的精准度。

第二方面,提供一种除法运算装置,具有实现上述除法运算方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。

一种可能的实现方式中,所述除法运算装置包括输入器,移位器,计算器和处理器,其中:

所述输入器,用于在第一被除数不大于除数时,将所述第一被除数输入移位器,所述第一被除数和所述第一除数为二进制数;

所述移位器,用于对所述第一被除数进行左移操作,得到第二被除数;

所述处理器,用于从移位器得到的所述第二被除数中移除连续为0的比特,得到第三被除数,以及从移位器得到的所述第一除数中移除连续为0的比特,得到第二除数;

所述计算器,用于将处理器得到的所述第三被除数与所述第二除数进行除法运算,得到实际运算值。

另一种可能的实现方式中,所述除法运算装置包括:

输入模块,用于在第一被除数不大于第一除数时,将所述第一被除数输入移位模块,所述第一被除数和所述第一除数为二进制数;

所述移位模块,用于对所述第一被除数进行左移操作,得到第二被除数;

处理模块,用于从所述第二被除数中移除连续为0的比特,得到第三被 除数,以及从所述第一除数中移除连续为0的比特,得到第二除数;

运算模块,用于将所述第三被除数与所述第二除数进行除法运算,得到实际运算值。

从以上技术方案可以看出,本发明中,通过先将第一被除数左移,然后将第二被除数和第一除数中为0的比特移除,从而实现将大位宽除法器压缩为小位宽除法器,有效减少原大位宽除法器在运算时所需消耗的芯片资源,进而提高运算效率和提升芯片性能。

附图说明

图1为本实施例中一种除法运算方法的流程示意图;

图2为本实施例中一种除法运算装置的结构示意图;

图3为本实施例中一种除法运算装置的另一结构示意图。

具体实施方式

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本文中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个系统中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本文中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分不到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本发明实施例方案的目的。

通常情况下,除法器的位宽较大时,需要消耗大量的芯片资源,为此本发明实施例提供了一种除法运算方法及装置,能够解决大位宽除法器在运算时,需要消耗较多芯片资源的问题。

该方法应用在被除数小于等于除数的场景下,可以节约更多资源,获得更显著的效果。

本申请提供的除法运算过程如下:

1、将被除数左移X位,左移的位数根据实际要求精度和原除法器的位宽决定。

2、确定左移后的被除数中为0的比特,以及除数中为0的比特;

这些为0的比特为比特位连续为0的n个比特,即比特位连续的比特集,包含至少一个比特,其中比特位连续的比特集是指二进制中,按照位的顺序,相邻且不间隔的多个比特,例如,10110011中的1011,这4个比特为比特位连续的关系。

3、分别将被除数和除数中为0的比特移除,将大位宽除法器压缩为小位宽除法器;

本申请中,将被除数或除数中为0的比特移除理解为对被除数或除数进行压缩操作。

其中,单次移除为0的比特数(即单次压缩的比特数)为t,t≥1,且为正整数,具体应用时,t可以根据被除数的位宽、除数的位宽、计算机硬件的实际处理能力、所要求的运算效率以及所要求的压缩精度k而定,压缩精度k根据实际需求来定。例如,t=1时,压缩精度最高,所要求硬件处理能力也更高,压缩的次数也最多,消耗时间最长;另外,每次所压缩的t可相同或不同,例如,在t较大时,越靠后的压缩,按照t选择的待压缩比特集为0的几率越小,由于没有为0的待压缩比特集时便不能进行移除操作,故可以根据实际场景灵活动态的改变t值。

举例来说,在一次完整的压缩操作中,可以按照压缩的次序,将每次压缩的t取值逐渐变小以提高压缩的精度;或者在两次以上的完整压缩操作中,将越靠后的一次完整压缩操作时的t值减小(即将后续的每一次完整的压缩操 作所设定的t值逐渐减小)。但考虑到实际运算时硬件的处理速度较快,一般将t设置为固定值,具体的t取值本文不作限定。

可以理解的是,本方法主要通过两种手段实现:

1、通过使用芯片实现,如可编程逻辑器件(Field Programmable Gate Array,FPGA)等硬件,即针对原除法器增加移除为0的比特的处理过程。

2、通过中央处理器调用现有的小位宽除法器来实现,即在将除数和被除数输入除法器之前,中央处理器中的预处理单元通过对被除数和除数进行移位、移除比特为0的比特的预处理,从而实现在实际芯片的处理能力较弱的情况下,通过预处理使得处理能力较弱的芯片也能实现大位宽除法器的除法运算,可以减少升级硬件的成本,具体不赘述。

请参照图1,为本发明实施例提供的一种除法运算方法,包括:

101、在第一被除数不大于第一除数时,将所述第一被除数输入移位器;其中,所述第一被除数和所述第一除数为二进制数。

102、对输入所述移位器的所述第一被除数进行左移操作,得到第二被除数;

103、从所述第二被除数中移除连续为0的比特,得到第三被除数,以及从所述第一除数中移除连续为0的比特,得到第二除数;

其中,移除连续为0的比特的数目为n,n大于等于1,对于第二被除数和第一除数的单次压缩,两者选择的n相同,每次压缩选择的n可以不同,可以以递减的模式选择,即可以根据要求的压缩精度和压缩效率等设置单次移除比特的数目t,单次压缩通过对第二被除数和第一除数进行移除为0的比特后,得到压缩后的除法器,即小位宽除法器。

可以理解的是,第二被除数和除数为同时压缩。

104、将所述第三被除数与所述第二除数进行除法运算,得到实际运算值。

本发明实施例中,通过现将第一被除数左移,然后将第二被除数中为连续为0的比特和第一除数中为连续0的比特移除,从而实现将大位宽除法器压缩为小位宽除法器,有效减少原大位宽除法器在运算时所需消耗的芯片资源,进而提高运算效率和提升芯片性能。

可选的,在一些发明实施例中,在移除上述第二被除数以及第一除数中比特连续为0的n个比特时,可以先按照单次压缩的比特数t(t为固定的第一阈值)分别从上述第二被除数和第一除数中选取待压缩比特集,然后再进行压缩。具体的,上述步骤103具体包括:

步骤A:按照二进制位的从高至低的顺序,从所述第二被除数中选择连续t个比特作为第一待压缩比特集,以及按照二进制位的从高至低的顺序,从所述第一除数中选择连续t个比特作为第二待压缩比特集,其中t为第一阈值,用于指示单次压缩的比特数;可选的,在执行压缩操作之前,根据第一除数的有效位宽Q’确定t的取值范围,可以精确地进行压缩。具体的,所述第一阈值t满足如下条件:1≤t≤Q’*1/2,其中,Q’为正整数。

并判断所述第一待压缩比特集中的每一位是否为0,且判断所述第二待压缩比特集中的每一位是否为0;

步骤B:在判断所述第一待压缩比特集中的每一比特均为0,且判断所述第二待压缩比特集中的每一比特均为0时,将所述第一待压缩比特集从所述第二被除数中移除,得到压缩后的第二被除数(即已移除所述第一待压缩比特集的所述第二被除数);以及将所述第二待压缩比特集从所述第一除数中移除,得到压缩后的第一除数(即已移除所述第二待压缩比特集的第一除数)。

通过每次选择一个第一待压缩比特集和一个第二待压缩比特集,最终得到步骤104中的第三被除数和第二除数,实现可以将原数据中连续为0的比特压缩掉,可以不用一次压缩一个为0的比特,在保证满足压缩精度前提下,有效减少压缩次数。

可选的,在得到所述压缩后的第二被除数和所述压缩后的第一除数之后,上述步骤103还可以包括:

步骤C:判断所述压缩后的第二被除数和所述压缩后的第一除数是否满足预设压缩条件;

若不满足所述预设压缩条件,则将所述压缩后的第二被除数作为新的第二被除数,将所述压缩后的第一除数作为新的第一除数,重复所述步骤A、所述步骤B及所述步骤C;

若满足所述预设压缩条件,则将所述压缩的第二被除数作为所述第三被 除数,将所述压缩后的第一除数作为第二除数,结束压缩操作。通过判断压缩后的第一除数的位宽小于或等于所述第二阈值时,则表明已达到所要求的精度,可以不用继续压缩,在满足预设精度要求的前提下,进一步提高压缩效率。

可选的,上述预设压缩条件包括以下之一:

所述压缩后的第一除数的位宽Q小于或等于第二阈值,其中位宽Q为正整数,所述第二阈值用于指示当前的压缩精度是否满足预设压缩精度;

所述第一除数中不存在每一比特均为0的第二待压缩比特集;

所述压缩后的第一除数的位宽Q小于或等于第二阈值,且所述压缩后的第一除数中的下一个连续t个比特不均为0。

举例来说,在得到所述压缩后的所述第二被除数和所述压缩后的所述第一除数之后,上述步骤C包括以下之一:

1、判断所述已移除所述第二待压缩比特集的所述第一除数的位宽是否小于或等于第二阈值,若小于或等于所述第二阈值,则结束压缩操作。通过判断压缩后的第一除数的位宽小于或等于所述第二阈值时,则表明已达到所要求的精度,可以不用继续压缩,例如,后续所选择的待压缩比特集多次不为0的情况下,继续压缩后得到的精度一定会更高,但实质上当前已经达到所要求的压缩精度,即可终止压缩,一定程度上提高运算效率。

2、在判断所述第一除数中不存在为0的待压缩比特集时,则结束压缩操作。通过该判断,减少后续不必要操作,能够提高运算效率。

3、若压缩后的第一除数的位宽小于或等于所述第二阈值,且该压缩后的第一除数中的下一连续t个比特不均为0时,则表明已达到所要求的精度,可以不用继续压缩,例如,后续所选择的待压缩比特集多次不为0的情况下,继续压缩后得到的精度一定会更高,但实质上当前已经达到所要求的压缩精度,即可终止压缩,一定程度上提高运算效率。

可选的,采用上述步骤A、步骤B及步骤C对第二被除数和第一除数进行压缩时,主要有两种方式进行压缩,具体操作如下:

一、按照二进制位的顺序依次选择为0的比特集,并依次压缩为0的比 特集。

1、对第二被除数进行压缩:

所述按照二进制位的从高至低的顺序,从所述第二被除数中选择连续t个比特的第一待压缩比特集,包括:

a1、按照二进制位的从高至低的顺序和所述第一阈值,从已移除所述第一待压缩比特集的被除数中选择下一第一待压缩比特集;

b1、判断所述下一第一待压缩比特集是否为0;

c1、若为0,则将所述下一第一待压缩比特集从所述已移除第一所述待压缩比特集的被除数中移除;若不为0,则按照二进制位的从高至低的顺序和所述第一阈值,从所述已移除所述第一待压缩比特集的被除数中选择下一第一待压缩比特集,并重复执行步骤b1和步骤c1,直至已移除所述第一待压缩比特集的被除数的位宽小于或等于所述第二阈值。在循环压缩的每一次选择下一第一待压缩比特集之前,通过判断当前被除数的的位宽是否小于等于第二阈值,可以判断当前的压缩结果是否已满足精度要求,若满足则结束压缩操作,在保证除法运算结果精度的前提下,进一步提高运算效率。

2、对第一除数进行压缩:

所述按照二进制位的从高至低的顺序,从所述第一除数中选择连续t个比特的第二待压缩比特集,包括:

a2、按照二进制位的从高至低的顺序和所述第一阈值,从已移除所述第二待压缩比特集的除数中选择下一第二待压缩比特集;

b2、判断所述下一第二待压缩比特集是否为0;

c2、若为0,则将所述下一第二待压缩比特集从所述已移除所述待压缩比特集的除数中移除;若不为0,则按照二进制位的从高至低的顺序和所述第一阈值,从所述已移除所述第二待压缩比特集的除数中选择下一第二待压缩比特集,并重复执行步骤b2和步骤c2,直至已移除第二待压缩比特集的除数的位宽小于或等于所述第二阈值。在循环压缩的每一次选择下一第二待压缩比特集之前,通过判断当前除数的的位宽是否小于等于第二阈值,可以判断当前的压缩结果是否已满足精度要求,若满足则结束压缩操作,在保证除法运算结果精度的前提下,进一步提高运算效率。

这种情况下,按照二进制位的顺序,每选取t位比特集,若该t位比特集为0,则移除,继续选择下一个t位比特集;若该t位比特集不为0,则不移除,则继续选择下一个t位比特集,在下一个t位比特集为0时便移除该比特集,若不为0,则继续选择,以此类推。

另外,还可以通过以下手段进一步提高运算效率:在除数的某t位比特集不为0时,也可以判断此时的除数的位宽是否小于或等于上述第二阈值,若是,则表明当前的压缩精度已达到所要求的精度,即可以停止后续还未完成的压缩操作,实现既满足压缩精度有保证运算效率较高,具体不再赘述。

二、先判断第二被除数和第一除数中为0的待压缩比特集,再一同压缩。

1、按照二进制位的从高至低的顺序以及第一阈值t,依次从所述第二被除数中选择N个第一待压缩比特集,每个所述第一待压缩比特集包括连续为0的t个比特,其中,N为正整数,所述第一阈值t用于指示单次压缩的比特数;

2、按照二进制位的从高至低的顺序以及所述第一阈值t,依次从所述第一除数中选择N个第二待压缩比特集,每个所述第二待压缩比特集包括连续为0的t个比特;

3、将所述为0的N个第一待压缩比特集从所述第二被除数中移除,得到所述第三被除数,以及将所述为0的N个第二待压缩比特集从所述第一除数中移除,得到所述第二除数。

可选的,若在第一除数中不存在为0的t位比特集,但第二被除数中仍存在为0的t位比特集,可以继续压缩第二被除数,也可以结束压缩操作。

可选的,在一些发明实施例中,在选择所述第一待压缩比特集和所述第二待压缩比特集之前,所述方法还包括:

按照二进制位的从高至低的顺序,判断所述第一除数的第一个不为0的比特和所述第一除数的最后一个为0的比特,并计算从所述第一个不为0的比特至所述最后一个为0的比特的有效位宽,根据所述有效位宽确定所述第一阈值,具体为,所述第一阈值t满足如下条件:1≤t≤Q’*1/2,其中,Q’为所述第一除数的有效位宽,Q’为正整数。

可选的,在一些发明实施例中,在满足所述预设压缩条件,结束压缩操作之后,即若所述已移除所述第二待压缩比特集的所述第一除数的位宽小于或等于第二阈值时,则结束压缩操作之后;或者,在判断所述第一除数中不存在为0的待压缩比特集时,则结束压缩操作之后;或者,在压缩后的第一除数的位宽小于或等于所述第二阈值,且该压缩后的第一除数中的下一个t位比特集不为0时,则结束压缩操作之后,所述方法还包括:

判断预设的理论运算值与所述实际运算值之差是否小于压缩精度,所述预设的理论运算值为所述第二被除数与所述第一除数进行除法运算得到的值;

若小于,则结束操作;若不小于,则重复执行选择待压缩比特集和移除为0的待压缩比特集的操作(包括上述步骤a1、b1、及c1,a2、b2、及c2),直至所述理论运算值与所述实际运算值之差小于压缩精度。可选的,若经过一次完整的压缩操作后,仍未达到精度要求,可以重复执行压缩操作,则可以继续使用上述第一阈值,也可以选择更小的第三阈值,具体重复的次数不作限定。

本实施例中,通过进一步的判断经过压缩操作后的除法运算结果是否达到要求的压缩精度,从而决定是否需要再次进行压缩操作,提高压缩精度,以保证除法运算结果的精准度。

为便于理解,下面以一具体应用场景对本发明实施例中的一种除法运算方法进行举例说明:

计算除法器A/B,A为50bits的数据:0x0000021385271,B为50bits的数据:0x0003245145483,要求压缩精度k为0.001,单次压缩的比特数t为5bits,压缩前除法计算理论结果为0.0025813818444914,以下为具体的压缩过程:

201、将A左移10bits,变为0x0000084E149C400,则除法器A/B变为一个60bits除以50bits的除法器A’/B,即0x0000084E149C400/0x0003245145483。

202、将除法器A’/B压缩为一个25bits除以15bits的除法器,即按照二 进制位的顺序,按每5位选取待压缩比特集,具体如下:

1、第一轮压缩:

选择,A’的59-55位即[59:55],以及B的49-45位即[49:45],在判断B[49:45]=0且A’[59:55]=0时,将A’[59:55]从A’中移除,以及将B[49:45]从B中移除,则除法器A’/B压缩为A’[54:0]/B[44:0]。

2、第二轮压缩:

选择,A’[54:50],以及B[44:40],在判断B[44:40]=0且A’[54:50]=0时,将A’[54:50]从A’中移除,以及将[44:40]从B中移除,则除法器A’/B压缩为A’[54:0]/B[44:0]。

3、第三轮压缩:

选择,A’[49:45],以及B[39:35],在判断B[39:35]≠0时,结束压缩操作,则除法器A’/B压缩为A’[49:25]/B[39:25]。

通过上述三轮压缩,将60bits除以50bits的除法器压缩为25bits除以15bits的除法器,压缩后的计算结果为0.0025815,则精度误差delt=理论除法器计算值-压缩后的除法计算值=0.0025813818444914-0.0025815=0.0000001,由此可见,压缩后的除法器满足精度0.001的要求。

又举例来说,若k要求为0.0001,则需要将被除数A左移14Bits,将除法器A/B变为一个64bits除以50bits的除法器A’/B,再通过相同的压缩算法可以将除法器A’/B压缩为一个29bits除以15bits的除法器,整个过程所消耗的芯片资源比k=0.001时所消耗多,即压缩精度要求越低,则压缩算法所节省的资源越明显。要能达到所要求的压缩精度k,上述精度误差delt只需满足小于1/2k

参阅图2,为本发明提供一种除法运算装置,所述装置包括:

输入模块201,用于在第一被除数不大于第一除数时,将所述第一被除数输入移位模块,所述第一被除数和所述第一除数为二进制数;

所述移位模块202,用于对所述第一被除数进行左移操作,得到第二被除数;

处理模块203,用于从所述第二被除数中移除连续为0的比特,得到第三 被除数,以及从所述第一除数中移除连续为0的比特,得到第二除数;

运算模块204,用于将所述第三被除数与所述第二除数进行除法运算,得到实际运算值。

本发明实施例中,通过移位模块202先将第一被除数左移,然后通过处理模块203将第二被除数中为连续为0的比特和第一除数中为连续0的比特移除,从而实现将大位宽除法器压缩为小位宽除法器,有效减少原大位宽除法器在运算时所需消耗的芯片资源,进而提高运算效率和提升芯片性能。

可选的,在一些发明实施例中,所述处理模块203具体用于执行以下步骤:

步骤A:按照二进制位的从高至低的顺序,从所述第二被除数中选择连续t个比特作为第一待压缩比特集;按照二进制位的从高至低的顺序,从所述第一除数中选择连续t个比特作为第二待压缩比特集,其中t为第一阈值,用于指示单次压缩的比特数;

步骤B:若所述第一待压缩比特集中的每一比特均为0,且所述第二待压缩比特集中的每一比特均为0,则将所述第一待压缩比特集从所述第二被除数中移除,得到压缩后的第二被除数,以及将所述第二待压缩比特集从所述第一除数中移除,得到压缩后的第一除数。

可选的,在一些发明实施例中,所述处理模块203在得到所述压缩后的第二被除数和所述压缩后的第一除数之后,还用于执行以下步骤:

步骤C:判断所述压缩后的第二被除数和所述压缩后的第一除数是否满足预设压缩条件;

若不满足所述预设压缩条件,则将所述压缩后的第二被除数作为新的第二被除数,将所述压缩后的第一除数作为新的第一除数,重复所述步骤A、所述步骤B及所述步骤步骤C;

若满足所述预设压缩条件,则将所述压缩的第二被除数作为所述第三被除数,将所述压缩后的第一除数作为第二除数,结束压缩操作。通过判断压缩后的第一除数的位宽小于或等于所述第二阈值时,则表明已达到所要求的 精度,可以不用继续压缩,在满足预设精度要求的前提下,进一步提高压缩效率。

可选的,所述预设压缩条件包括以下之一:

所述压缩的第一除数的位宽Q小于或等于第二阈值,其中位宽Q为正整数,所述第二阈值用于指示当前的压缩精度是否满足预设压缩精度;

所述第一除数中不存在每一比特均为0的第二待压缩比特集;

所述压缩的第一除数的位宽Q小于或等于第二阈值,且所述压缩后的第一除数中的下一连续t个比特不均为0。

可选的,在一些发明实施例中,所述处理模块203具体用于:

1、对第二被除数进行压缩:

a1、按照二进制位的从高至低的顺序和所述第一阈值,从已移除所述第一待压缩比特集的被除数中选择下一第一待压缩比特集;

b1、判断所述下一第一待压缩比特集是否为0;

c1、若为0,则将所述下一第一待压缩比特集从所述已移除第一所述待压缩比特集的被除数中移除;若不为0,则按照二进制位的从高至低的顺序和所述第一阈值,从所述已移除所述第一待压缩比特集的被除数中选择下一第一待压缩比特集,并重复执行步骤b1和步骤c1,直至已移除所述第一待压缩比特集的被除数的位宽小于或等于所述第二阈值。

2、对第一除数进行压缩:

a2、按照二进制位的从高至低的顺序和所述第一阈值,从已移除所述第二待压缩比特集的除数中选择下一第二待压缩比特集;

b2、判断所述下一第二待压缩比特集是否为0;

c2、若为0,则将所述下一第二待压缩比特集从所述已移除所述待压缩比特集的除数中移除;若不为0,则按照二进制位的从高至低的顺序和所述第一阈值,从所述已移除所述第二待压缩比特集的除数中选择下一第二待压缩比特集,并重复执行步骤b2和步骤c2,直至已移除第二待压缩比特集的除数的位宽小于或等于所述第二阈值。

可选的,在一些发明实施例中,所述处理模块203具体用于:

按照二进制位的从高至低的顺序以及所述第一阈值,依次从所述第二被除数中选择N个第一待压缩比特集,每个所述第一待压缩比特集包括连续为0的t个比特,N为正整数;

按照二进制位的从高至低的顺序以及所述第一阈值,依次从所述第一除数中选择N个第二待压缩比特集,每个所述第二待压缩比特集包括连续为0的t个比特;

将所述N个第一待压缩比特集从所述第二被除数中移除,得到所述第三被除数,以及将所述N个第二待压缩比特集从所述第一除数中移除,得到所述第二除数。

可选的,在一些发明实施例中,为进一步提高运算效率,所述处理模块203在所述按照二进制位的从高至低的顺序,从所述第二被除数中选择比特连续且位数为第一阈值的第一待压缩比特集之前还用于:

按照二进制位的从高至低的顺序,判断所述第一除数的第一个不为0的比特和所述第一除数的最后一个为0的比特,并通过运算模块204计算从所述第一个不为0的比特至所述最后一个为0的比特的有效位宽,根据所述有效位宽确定所述第一阈值。可选的,在进行压缩操作前,根据第一除数的有效位宽Q’对第一阈值t进行计算,所述第一阈值t满足如下条件:1≤t≤Q’*1/2,其中,Q’为所述第一除数的有效位宽,Q’为正整数。

可选的,在一些发明实施例中,在判断满足所述预设压缩条件,结束压缩操作之后,所述处理模块203还用于执行:

判断预设的理论运算值与所述实际运算值之差是否小于压缩精度;

若小于,则结束操作;若不小于,则重复执行选择待压缩比特集和移除为0的待压缩比特集的操作,直至所述理论运算值与所述实际运算值之差小于所述压缩精度。

本发明还提供一种计算机存储介质,该介质存储有程序,该程序执行时包括上述除法运算装置执行一种除法运算方法中的部分或者全部步骤。

本发明实施例提供一种除法运算装置30,用于实现降低除法器在运算时所需消耗的芯片资源的功能,如图3所示,除法运算的装置30包括输入器31,移位器32、处理器33和计算器34,其中,所述输入器31,移位器32、处理器33和计算器34之间通过总线35相互连接。

所述输入器31,用于在第一被除数不大于除数时,将所述第一被除数输入移位器,所述第一被除数和所述第一除数为二进制数;

所述移位器32,用于对输入所述移位器32的所述第一被除数进行左移操作,得到第二被除数;

所述处理器33,用于从所述第二被除数中移除连续为0的比特,得到第三被除数,以及从所述第一除数中移除连续为0的比特,得到第二除数;

所述计算器34,用于将处理器33得到的所述第三被除数与所述第二除数进行除法运算,得到实际运算值。

所述处理器33可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件等。

所述处理器33为CPU时,所述除法运算装置30还可以包括:存储器,用于存储程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可能包含随机存取存储器(random access memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。所述处理器33执行所述存储器中存储的程序代码,实现上述功能。

在一些发明实施例中,所述处理器33还用于执行以下步骤:

步骤A:按照二进制位的从高至低的顺序,从所述第二被除数中选择连续t个比特作为第一待压缩比特集;按照二进制位的从高至低的顺序,从所述第一除数中选择连续t个比特作为第二待压缩比特集,其中t为第一阈值,用于指示单次压缩的比特数;

步骤B:若所述第一待压缩比特集中的每一比特均为0,且所述第二待压缩比特集中的每一比特均为0,则将所述第一待压缩比特集从所述第二被除数 中移除,得到压缩后的第二被除数,以及将所述第二待压缩比特集从所述第一除数中移除,得到压缩后的第一除数。

在一些发明实施例中,所述处理器33在得到所述压缩后的第二被除数和所述压缩后的第一除数之后,还用于执行以下步骤:

步骤C:判断所述压缩后的第二被除数和所述压缩后的第一除数是否满足预设压缩条件;

若不满足所述预设压缩条件,则将所述压缩后的第二被除数作为新的第二被除数,将所述压缩后的第一除数作为新的第一除数,重复所述步骤A、所述步骤B及所述步骤步骤C;

若满足所述预设压缩条件,则将所述压缩的第二被除数作为所述第三被除数,将所述压缩后的第一除数作为第二除数,结束压缩操作。

可选的,所述预设压缩条件包括以下之一:

所述压缩的第一除数的位宽Q小于或等于第二阈值,其中位宽Q为正整数,所述第二阈值用于指示当前的压缩精度是否满足预设压缩精度;

所述第一除数中不存在每一比特均为0的第二待压缩比特集;

所述压缩的第一除数的位宽Q小于或等于第二阈值,且所述压缩后的第一除数中的下一连续t个比特不均为0。

在一些发明实施例中,所述处理器33还用于执行以下步骤:

按照二进制位的从高至低的顺序以及所述第一阈值,依次从所述第二被除数中选择N个第一待压缩比特集,每个所述第一待压缩比特集包括连续为0的t个比特,N为正整数;

按照二进制位的从高至低的顺序以及第一阈值t,依次从所述第一除数中选择为0的N个第二待压缩比特集,每个所述第二待压缩比特集包括连续为0的t个比特,所述第一阈值t用于指示单次压缩的比特数;

将所述N个第一待压缩比特集从所述第二被除数中移除,得到所述第三被除数,以及将所述N个第二待压缩比特集从所述第一除数中移除,得到所述第二除数。

其中,所述第一阈值t满足如下条件:1≤t≤Q’*1/2,其中,Q’为所述第一除数的有效位宽,Q’为正整数。

在一些发明实施例中,所述处理器33在选择所述第一待压缩比特集和所述第二待压缩比特集之前还用于执行以下步骤:

按照二进制位的从高至低的顺序,判断所述第一除数的第一个不为0的比特和所述第一除数的最后一个为0的比特,并计算从所述第一个不为0的比特至所述最后一个为0的比特的有效位宽,根据所述有效位宽确定所述第一阈值t。

在一些发明实施例中,所述处理器33在通过所述判别器35判断满足所述预设压缩条件,结束压缩操作之后还用于执行以下步骤:

判断预设的理论运算值与所述实际运算值之差是否小于压缩精度;

若小于,则结束操作;若不小于,则重复执行选择待压缩比特集和移除为0的待压缩比特集的操作,直至所述理论运算值与所述实际运算值之差小于压缩精度。

所述除法运算装置30也可以是专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件实现,完成本申请图1所示的除法运算功能。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方, 或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本发明所提供的一种除法运算方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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