求模运算处理方法及相关产品与流程

文档序号:22626169发布日期:2020-10-23 19:34阅读:185来源:国知局
求模运算处理方法及相关产品与流程

本申请涉及图像处理技术领域,具体涉及一种求模运算处理方法及相关产品。



背景技术:

在第四代移动通信技术(4thgenerationmobilecommunicationtechnology,4g)和第五代移动通信技术(5thgenerationmobilecommunicationtechnology,5g)中,为了加速信号处理,很多功能模块都用硬件来实现。而求模运算(即除法后取余数的运算)在收发信机(比如,收发信机进行信道编码与译码时需要用到求模运算)中运用相当广泛。因为求模运算需要用到除法,而除法电路比较复杂,一般情况下都尽可能避开直接做除法来取余数。

目前一般采用减法电路来做求模运算,被除数每次减一次除数,直到得到结果小于除数将得到的结果作为余数。然而,当被除数和除数相差较大时,需要很多次减法迭代才可以算出余数,求模运算需要的时间较长。



技术实现要素:

本申请实施例提供一种求模运算处理方法及相关产品,运算电路可以通过减法电路和移位寄存器模块缩短求模运算所需的时间。

本申请实施例的第一方面提供了一种运算电路,包括控制器、缓存、减法器模块和移位寄存器模块,其中:

所述控制器比较当前被除数是否大于或等于原始除数的2倍,所述原始除数和所述当前被除数均为二进制数,所述当前被除数为所述原始被除数或上一次减法运算得到的被除数;

在所述当前被除数大于或等于所述原始除数的2倍的情况下,所述控制器将原始除数输入所述移位寄存器模块,所述移位寄存器模块对所述原始除数进行移位处理,输出一个为所述原始除数的n倍并且小于所述当前被除数的当前减数至所述减法器模块,n为大于或等于2的整数;

所述减法器模块执行当前次减法运算,所述当前次减法运算用于计算所述当前被除数与所述当前减数的差值,将所述当前被除数与所述当前减数的差值存入缓存;

在所述当前被除数与所述当前减数的差值小于所述原始除数的情况下,所述控制器将所述当前被除数与所述当前减数的差值作为所述原始被除数除以所述原始除数的余数。

本申请实施例的第二方面提供了一种求模运算处理方法,包括:

比较当前被除数是否大于或等于原始除数的2倍,所述原始除数和所述当前被除数均为二进制数,所述当前被除数为所述原始被除数或上一次减法运算得到的被除数;

若所述当前被除数大于或等于所述原始除数的2倍,将原始除数输入移位寄存器模块进行移位处理,得到一个为所述原始除数的n倍并且小于所述当前被除数的当前减数,n为大于或等于2的整数;

执行当前次减法运算,所述当前次减法运算用于计算所述当前被除数与所述当前减数的差值,将所述当前被除数与所述当前减数的差值存入缓存;

若所述当前被除数与所述当前减数的差值小于所述原始除数,将所述当前被除数与所述当前减数的差值作为所述原始被除数除以所述原始除数的余数。

可选的,所述方法还包括:

若所述当前被除数小于所述原始除数的2倍,并且所述当前被除数大于或等于所述原始除数,将所述当前被除数与所述原始除数的差值作为所述原始被除数除以所述原始除数的余数;

若所述当前被除数小于所述原始除数的2倍,并且所述当前被除数小于所述原始除数,将所述当前被除数作为所述原始被除数除以所述原始除数的余数。

可选的,所述方法还包括:

若所述当前被除数与所述当前减数的差值大于所述原始除数,将所述当前被除数与所述当前减数的差值作为新的当前被除数,执行所述比较当前被除数是否大于或等于原始除数的2倍的步骤。

可选的,所述将原始除数输入移位寄存器模块进行移位处理,得到一个为所述原始除数的n倍并且小于所述当前被除数的当前减数,包括:

比较所述当前被除数的最高m位二进制数与所述原始除数的大小,所述原始除数的二进制有效位数为m,所述当前被除数的二进制有效位数为n;m、n均为正整数;

若所述当前被除数的最高m位二进制数大于或等于所述原始除数,将所述原始除数输入移位寄存器模块进行p次第一类左移对齐处理,得到当前减数;每次第一类左移对齐处理是将原始除数的最高位与所述当前被除数的未被对齐的最高位对齐;

若所述当前被除数的未被对齐的位数大于或等于m时,继续执行所述第一类左移对齐处理;若所述当前被除数的未被对齐的位数小于m时,将所述当前减数中与所述当前被除数的未被对齐的位数置零。

可选的,所述方法还包括:

若所述当前被除数的最高m位二进制数小于所述原始除数,将所述原始除数输入移位寄存器模块进行u次第二类左移对齐处理,得到当前减数;每次第二类左移对齐处理是将原始除数的最高位与所述当前被除数除最高位之外的未被对齐的最高位对齐;

若所述当前被除数除最高位之外的未被对齐的位数大于或等于m时,继续执行所述第二类左移对齐处理;若所述当前被除数除最高位之外的未被对齐的位数小于m时,将所述当前减数中与所述当前被除数的未被对齐的位数置零。

可选的,所述将所述当前被除数与所述当前减数的差值作为所述原始被除数除以所述原始除数的余数之后,或者将所述当前被除数作为所述原始被除数除以所述原始除数的余数之后,所述方法还包括:

根据每一次得到的当前减数中左移对齐处理的次数以及每次左移对齐处理的位移量计算每一次得到的当前减数对应的当前商数;

将每一次得到的当前减数对应的当前商数之和作为所述原始被除数除以所述原始除数的商数。

可选的,所述根据每一次得到的当前减数中左移对齐处理的次数以及每次左移对齐处理的位移量计算每一次得到的当前减数对应的当前商数,包括:

若所述左移对齐处理为第一类左移对齐处理,当前次得到的当前减数的二进制有效位数为n,第一类左移对齐处理的总次数为p,按照如下公式计算当前次得到的当前减数对应的当前商数:

若所述左移对齐处理为第二类左移对齐处理,当前次得到的当前减数的二进制有效位数为n,第二类左移对齐处理的总次数为u,按照如下公式计算当前次得到的当前减数对应的当前商数:

其中,h为当前次得到的当前减数对应的当前商数。

可选的,在所述比较当前被除数是否大于或等于原始除数的2倍之前,所述方法还包括:

计算所述原始被除数与所述原始除数的比值;

在所述原始被除数与所述原始除数的比值大于第一阈值的情况下,执行所述比较当前被除数是否大于或等于原始除数的2倍的步骤。

本申请实施例的第三方面提供了一种求模运算处理装置,包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如本申请实施例第二方面中的求模运算处理方法。

本申请实施例的第四方面提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第二方面中的求模运算处理方法。。

本申请实施例的第五方面提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第二方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。

本申请实施例中的运算电路包括控制器、缓存、减法器模块和移位寄存器模块,所述控制器比较当前被除数是否大于或等于原始除数的2倍,所述原始除数和所述当前被除数均为二进制数,所述当前被除数为所述原始被除数或上一次减法运算得到的被除数;在所述当前被除数大于或等于所述原始除数的2倍的情况下,所述控制器将原始除数输入所述移位寄存器模块,所述移位寄存器模块对所述原始除数进行移位处理,输出一个为所述原始除数的n倍并且小于所述当前被除数的当前减数至所述减法器模块,n为大于或等于2的整数;所述减法器模块执行当前次减法运算,所述当前次减法运算用于计算所述当前被除数与所述当前减数的差值,将所述当前被除数与所述当前减数的差值存入缓存;在所述当前被除数与所述当前减数的差值小于所述原始除数的情况下,所述控制器将所述当前被除数与所述当前减数的差值作为所述原始被除数除以所述原始除数的余数。

本申请实施例的运算电路通过减法器模块和移位寄存器模块实现求模运算,可以通过移位寄存器模块一次迭代尽可能的挖掘出原始除数的n倍的当前减数,从而减少减法器模块的减法运算的迭代次数,进而缩短求模运算所需的时间。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种运算电路的结构示意图;

图2是本申请实施例提供的一种第一类左移对齐处理的示意图;

图3是本申请实施例提供的一种第二类左移对齐处理的示意图;

图4是本申请实施例提供的一种求模运算的示例图;

图5是本申请实施例提供的一种求商的示例图;

图6是本申请提供的一种求模运算处理方法的流程示意图;

图7是本申请提供的另一种求模运算处理方法的流程示意图;

图8是本申请提供的另一种求模运算处理方法的流程示意图;

图9是本申请提供的另一种求模运算处理方法的流程示意图;

图10是本申请提供的另一种求模运算处理方法的流程示意图;

图11是本申请实施例提供的一种求模运算处理装置的结构示意图;

图12是本申请实施例提供的另一种求模运算处理装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。

在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。

本申请实施例公开了一种求模运算处理方法及相关产品,可以缩短求模运算所需的时间。

以下分别进行详细说明。

请参阅图1,图1是本申请实施例提供的一种运算电路的结构示意图。如图1所示,该运算电路100包括控制器11、缓存12、减法器模块13和移位寄存器模块14。其中,缓存12用于存储原始被除数和原始除数,以及每次减法运算得到的结果。减法器模块13用于执行减法运算,移位寄存器模块14用于对输入该移位寄存器模块14的数据进行移位处理。控制器11用于控制减法器模块13执行减法运算的次数以及判断减法运算得到的结果是否为原始被除数除以原始除数的余数(即,求模运算的结果)。

本申请实施例中,控制器11可以与缓存12连接,控制器11可以向缓存12发送控制指令,将缓存12中的数据(比如,原始被除数)输入减法器模块13,以及将缓存12中的数据(比如,原始除数)输入移位寄存器模块14。控制器11还可以向移位寄存器模块14发送控制指令,以控制移位寄存器模块14对输入的数据进行移位处理。控制器11还可以向减法器模块13发送控制指令,以控制减法器模块13对从缓存12输入的数据和移位寄存器模块14输入的数据执行减法处理。

减法器模块13可以用来执行减法运算,减法器模块13可以包括一个或多个减法器,可以同时并行处理多个减法运算。移位寄存器模块14可以包括一个或多个移位寄存器,可以同时进行多个数据的移位处理。每个移位寄存器可以由多个触发器组成,每个触发器用于存储1位二进制数据。

缓存12是可以进行高速数据交换的存储器。缓存12可以与其他存储器连接,用于从其他存储器载入数据(比如,原始被除数和原始除数),减法器模块13执行减法运算的结果也可以输入缓存12进行存储。

控制器11可以是具有专门处理求模运算的处理器,也可以是具有通用功能的处理器。

本申请实施例的运算电路100可以集成在芯片中,运算电路100中的控制器11、缓存12、减法器模块13和移位寄存器模块14可以集成为一个模块,也可以是分别独立的模块。

求模运算也可以称为取模运算、取余运算、求余运算等,是为了求取被除数处于除数之后的余数。

本申请实施例的运算电路100可以应用在收发信机的低密度奇偶校验(low-densityparity-check,ldpc)编码及译码、turbo编译码中。

现有的方案是用减法来做求模,每次用原始被除数减去原始除数,将得到的结果作为新的被除数,再用新的被除数减去原始除数,直到新的被除数小于原始除数,即可将得到的结果作为余数。下面的短代码显示了一种常用的硬件求模电路的算法,以mod(2047,5)为例:

上面的短代码中,divisor表示除数,dividend表示被除数,remainder表示余数。从上面的短代码可以看出,对于被除数为2047,除数为5而言,每次减法迭代只能减去除数,求得余数需要循环409次才能得到最终的余数,需要的减法迭代次数较多,求模运算需要的时间较长。

所述控制器11比较当前被除数是否大于或等于原始除数的2倍,所述原始除数和所述当前被除数均为二进制数,所述当前被除数为所述原始被除数或上一次减法运算得到的被除数;

在所述当前被除数大于或等于所述原始除数的2倍的情况下,所述控制器11将原始除数输入所述移位寄存器模块14,所述移位寄存器模块14对所述原始除数进行移位处理,输出一个为所述原始除数的n倍并且小于所述当前被除数的当前减数至所述减法器模块13,n为大于或等于2的整数;

所述减法器模块13执行当前次减法运算,所述当前次减法运算用于计算所述当前被除数与所述当前减数的差值,将所述当前被除数与所述当前减数的差值存入缓存12;

在所述当前被除数与所述当前减数的差值小于所述原始除数的情况下,所述控制器11将所述当前被除数与所述当前减数的差值作为所述原始被除数除以所述原始除数的余数。

本申请实施例中,如果当前被除数大于或等于原始除数的2倍,则移位寄存器模块14对所述原始除数进行移位处理,可以得到一个为所述原始除数的n倍并且小于所述当前被除数的当前减数。移位处理得到的当前减数最少为原始除数的2倍,如果当前被除数小于原始除数的2倍,则移位处理得到的当前减数要大于当前被除数,则无法进行移位处理。

原始除数是最开始的除数,原始除数在这个迭代过程中不会发生变化。本申请实施例的求模运算仍然采用减法器来实现,但是每次的减数和被减数不再是固定的值(固定的值为原始除数),每次减法运算的当前被减数为减法器模块13上一次减法运算得到的当前被除数;每次减法运算的减数是一个为原始除数的n倍并且小于当前被除数的当前减数。移位寄存器模块14对原始除数进行左移移位处理时,根据左移的次数和每次移位的位数来确定原始除数经过移位处理后得到的当前减数。其中,每左移一位,原始除数变为原来的2倍。举例来说,移位寄存器模块14对原始除数进行左移移位处理时,若原始除数左移的次数为三次,每次左移的位数分别为7位、4位和1位,则移位寄存器模块14对原始除数进行左移移位处理得到的当前减数=原始除数(27+24+21),n=(27+24+21)。可见,一次迭代可以挖掘出原始除数的多个2a倍的当前减数,每次减法迭代只能减去原始除数的n倍,从而减少减法器模块的减法运算的迭代次数,可以缩短求模运算所需的时间。

本申请实施例可以适用于原始被除数远大于原始除数的情况下的求模运算。

可选的,在所述当前被除数与所述当前减数的差值大于所述原始除数的情况下,所述控制器11将所述当前被除数与所述当前减数的差值作为新的当前被除数,执行所述比较当前被除数是否大于或等于原始除数的2倍的步骤。

如果当前被除数与当前减数的差值大于原始除数,表明该差值不是最终的余数,将该差值作为新的当前被除数,再次执行所述比较当前被除数是否大于或等于原始除数的2倍的步骤,执行下一次减法迭代运算。

本申请实施例的运算电路通过减法器模块和移位寄存器模块实现求模运算,可以通过移位寄存器模块一次迭代尽可能的挖掘出原始除数的n倍的当前减数,从而减少减法器模块的减法运算的迭代次数,进而缩短求模运算所需的时间。

可选的,在所述当前被除数小于所述原始除数的2倍,并且所述当前被除数大于所述原始除数的情况下,所述控制器11将所述当前被除数与所述原始除数的差值作为所述原始被除数除以所述原始除数的余数;

在所述当前被除数小于所述原始除数的2倍,并且所述当前被除数小于所述原始除数的情况下,所述控制器11将所述当前被除数作为所述原始被除数除以所述原始除数的余数。

本申请实施例中,如果当前被除数小于原始除数的2倍,则移位处理得到的当前减数要大于当前被除数,则无法进行移位处理。在这种情况下,本申请实施例不采用移位处理,直接用一次减法运算即可快速确定始被除数除以原始除数的余数。

可选的,所述控制器11将原始除数输入所述移位寄存器模块14,所述移位寄存器模块14对所述原始除数进行移位处理,输出一个为所述原始除数的n倍并且小于所述当前被除数的当前减数至所述减法器模块13,包括:

所述控制器11比较所述当前被除数的最高m位二进制数与所述原始除数的大小,所述原始除数的二进制有效位数为m,所述当前被除数的二进制有效位数为n;m、n均为正整数;n大于m;

在所述当前被除数的最高m位二进制数大于或等于所述原始除数的情况下,所述控制器11将所述原始除数输入所述移位寄存器模块14,所述移位寄存器模块14对所述原始除数进行p次第一类左移对齐处理,得到当前减数,将所述当前减数输入所述减法器模块13;每次第一类左移对齐处理是将原始除数的最高位与所述当前被除数的未被对齐的最高位对齐;p为正整数;

在所述当前被除数的未被对齐的位数大于或等于m情况下,所述移位寄存器模块14继续执行所述第一类左移对齐处理;

在所述当前被除数的未被对齐的位数小于m的情况下,所述移位寄存器模块14将所述当前减数中与所述当前被除数的未被对齐的位数置零。

某一个二进制数的二进制有效位数,指的是从某一个二进制数的最高位不为0的二进制位到最低位之间的位数。比如,1101的二进制有效位数等于4,0010的二进制有效位数等于2。

本申请实施例中,当前被除数的最高m位二进制数与原始除数的大小很容易进行判断,只需从高位到低位逐个比较当前被除数的最高m位二进制数与原始除数的二进制数的大小即可。举例来说,若当前被除数为1789(十进制,后续的数字如不特别说明,均默认十进制),其对应的二进制数为11011111101;原始除数为5,其对应的二进制数为101。当前被除数的位数为11位,即n=11,原始除数的位数为3位,即m=3。取当前被除数的最高3位,即为二进制数110,110的最高位与101的最高位相等,均为1,110的次高位为1,101的次高位为0,110的次高位大于101的次高位,因此,110大于101。当前被除数的最高3位大于原始除数。又比如,若当前被除数为1245,其对应的二进制数为10011011101;原始除数为5,其对应的二进制数为101。当前被除数的位数为11位,即n=11,原始除数的位数为3位,即m=3。取当前被除数的最高3位,即为二进制数100,显然,当前被除数的最高3位小于原始除数。

每次第一类左移对齐处理的左移位数不同。每次第一类左移对齐处理是将原始除数的最高位与所述当前被除数的未被对齐的最高位对齐,直到当前被除数的未被对齐的位数小于m或者当前被除数的未被对齐的位为0的情况下,将当前减数中与当前被除数的未被对齐的位数置零,即可得到当前减数。

请参阅图2,图2是本申请实施例提供的一种第一类左移对齐处理的示意图。如图2所示,下面以当前被除数为2047,原始除数为5为例,来解释第一类左移对齐处理的具体过程。2047对应的二进制数为11111111111,5对应的二进制数为101。11111111111总共有11位(n=11),最低位用b0表示,最高位用b10表示;101总共有3位(m=3),最低位用b0表示,最高位用b2表示。由于2047的最高3位二进制数“111”大于原始除数101,符合第一类左移处理的前提条件,则将原始除数进行第一次左移,由于当前被除数的未被对齐的最高位为b10,将原始除数整体向左移8位,第一次左移后,原始除数的最高位b2与当前被除数的b10位对齐,原始除数的次高位b1与当前被除数的b9位对齐,原始除数的最低位b0与当前被除数的b8位对齐(如图2中当前减数的深灰色的数据),将原始除数进行第一次左移的3位作为当前减数的最高三位;接下来判断当前被除数的未被对齐的位数(b7~b0,总共8位)大于3,继续将原始除数进行第二次左移,由于当前被除数的未被对齐的最高位为b7,将原始除数整体向左移5位,第二次左移后,原始除数的最高位b2与当前被除数的b7位对齐,原始除数的次高位b1与当前被除数的b6位对齐,原始除数的最低位b0与当前被除数的b5位对齐(如图2中当前减数的中灰色的数据),将原始除数进行第二次左移的3位作为当前减数的第4~6位;接下来判断当前被除数的未被对齐的位数(b4~b0,总共5位)仍然大于3,继续将原始除数进行第三次左移,由于当前被除数的未被对齐的最高位为b4,将原始除数整体向左移2位,第三次左移后,原始除数的最高位b2与当前被除数的b4位对齐,原始除数的次高位b1与当前被除数的b3位对齐,原始除数的最低位b0与当前被除数的b2位对齐(如图2中当前减数的浅灰色的数据),将原始除数进行第三次左移的3位作为当前减数的第7~9位;接下来判断当前被除数的未被对齐的位数(b1~b0,总共2位)小于3,则将当前减数中与当前被除数的未被对齐的位数置零(如图2中当前减数的白色的数据),即将当前减数的第10~11位置零。最终得到的当前减数为10110110100,当前被除数与当前减数的差值为1001001011。

可选的,在所述当前被除数的最高m位二进制数小于所述原始除数的情况,所述控制器11将所述原始除数输入所述移位寄存器模块14,所述移位寄存器模块14对所述原始除数进行u次第二类左移对齐处理,得到当前减数,将所述当前减数输入所述减法器模块13;每次第二类左移对齐处理是将原始除数的最高位与所述当前被除数除最高位之外的未被对齐的最高位对齐;u为正整数;

在所述当前被除数除最高位之外的未被对齐的位数大于或等于m的情况下,所述移位寄存器模块14继续执行所述第二类左移对齐处理;

在所述当前被除数除最高位之外的未被对齐的位数小于m的情况下,所述移位寄存器模块14将所述当前减数中与所述当前被除数的未被对齐的位数置零,或者所述移位寄存器模块14将所述当前减数中与所述当前被除数除最高位之外的未被对齐的位数置零。

如无特别说明,本申请实施例中的当前被除数除最高位均指的是当前被除数除的二进制有效位数的最高位。

本申请实施例中,每次第二类左移对齐处理的左移位数不同。每次第二类左移对齐处理是将原始除数的最高位与当前被除数除最高位之外的未被对齐的最高位对齐,直到当前被除数除最高位之外的未被对齐的位数小于m或者当前被除数除最高位之外的未被对齐的位数为0的情况下,将当前减数中与当前被除数的未被对齐的位数置零,即可得到当前减数。

请参阅图3,图3是本申请实施例提供的一种第二类左移对齐处理的示意图。如图3所示,下面以当前被除数为1245,原始除数为5为例,来解释第二类左移对齐处理的具体过程。1245对应的二进制数为10011011101,5对应的二进制数为101。10011011101总共有11位(n=11),最低位用b0表示,最高位用b10表示;101总共有3位(m=3),最低位用b0表示,最高位用b2表示。由于1245的最高3位二进制数“100”小于原始除数101,符合第二类左移处理的前提条件,则将原始除数进行第一次左移,由于当前被除数除最高位之外的未被对齐的最高位为b9,将原始除数整体向左移7位,第一次左移后,原始除数的最高位b2与当前被除数的b9位对齐,原始除数的次高位b1与当前被除数的b8位对齐,原始除数的最低位b0与当前被除数的b7位对齐(如图3中当前减数的深灰色的数据),将原始除数进行第一次左移的3位作为当前减数的最高三位;接下来判断当前被除数的未被对齐的位数(b6~b0,总共7位)大于3,继续将原始除数进行第二次左移,由于当前被除数除最高位之外的未被对齐的最高位为b6,将原始除数整体向左移5位,第二次左移后,原始除数的最高位b2与当前被除数的b6位对齐,原始除数的次高位b1与当前被除数的b5位对齐,原始除数的最低位b0与当前被除数的b4位对齐(如图3中当前减数的中灰色的数据),将原始除数进行第二次左移的3位作为当前减数的第4~6位;接下来判断当前被除数的未被对齐的位数(b3~b0,总共4位)仍然大于3,继续将原始除数进行第三次左移,由于当前被除数除最高位之外的未被对齐的最高位为b3,将原始除数整体向左移1位,第三次左移后,原始除数的最高位b2与当前被除数的b3位对齐,原始除数的次高位b1与当前被除数的b2位对齐,原始除数的最低位b0与当前被除数的b1位对齐(如图3中当前减数的浅灰色的数据),将原始除数进行第三次左移的3位作为当前减数的第7~9位;接下来判断当前被除数的未被对齐的位数(b0,总共1位)小于3,则将当前减数中与当前被除数的未被对齐的位数置零(如图3中当前减数的白色的数据),即将当前减数的第10位置零。最终得到的当前减数为1011011010,当前被除数与当前减数的差值为1000000011。

下面结合图4来阐述本申请实施例的求模运算的具体流程。请参阅图4,图4是本申请实施例提供的一种求模运算的示例图。如图4所示,图4显示了被除数2047与除数5相除得到余数的过程。原始被除数为2047,其对应的二进制数为11111111111,总位宽为n=11比特(bit),最低位用b0表示,最高位用b10表示。原始除数为5,其对应的二进制数为101,总位宽为m=3比特(bit),最低位用b0表示,最高位用b2表示。原始除数经过移位(具体为,原始除数与原始被除数11111111111对齐的第一类左移对齐处理)后的当前减数为10110110100,第一次迭代是将原始被除数11111111111与当前减数10110110100相减,得到当前被除数为1001001011,由于1001001011大于101,继续执行下一次移位处理和下一次迭代;原始除数经过移位(具体为,原始除数与上一次迭代得到的当前被除数1001001011对齐的第二类左移对齐处理)后的当前减数为101101101,第二次迭代是将上一次迭代得到的当前被除数1001001011与当前减数101101101相减,得到新的当前被除数为11011110,由于11011110大于101,继续执行下一次移位处理和下一次迭代;原始除数经过移位(具体为,原始除数与上一次迭代得到的当前被除数11011110对齐的第一类左移对齐处理)后的当前减数为10110100,第三次迭代是将上一次迭代得到的当前被除数11011110与当前减数10110100相减,得到新的当前被除数为101010,由于101010大于101,继续执行下一次移位处理和下一次迭代;原始除数经过移位(具体为,原始除数与上一次迭代得到的当前被除数101010对齐的第一类左移对齐处理)后的当前减数为101000,第四次迭代是将上一次迭代得到的当前被除数101010与当前减数101000相减,得到10,由于10小于101,则结束移位处理和迭代,并将10(对应的十进制数为2)作为原始被除数除以原始除数的余数。

从图4可以看出,与现有的方案求得余数需要迭代409次才能得到最终的余数相比,图4的方案只需要4次迭代循环,大大减少减法器模块的减法运算的迭代次数,进而缩短求模运算所需的时间。

可选的,所述控制器11在将所述当前被除数与所述当前减数的差值作为所述原始被除数除以所述原始除数的余数之后,或者将所述当前被除数作为所述原始被除数除以所述原始除数的余数之后,根据每一次得到的当前减数中左移对齐处理的次数以及每次左移对齐处理的位移量计算每一次得到的当前减数对应的当前商数;

所述控制器11将每一次得到的当前减数对应的当前商数之和作为所述原始被除数除以所述原始除数的商数。

本申请实施例中,每一次得到的当前减数中左移对齐处理的次数指的是:每一次得到的当前减数中原始除数左移对齐的次数。每次左移对齐处理的位移量指的是:每次原始除数左移对齐的左移位数。

举例来说,如果某一次得到的当前减数中左移对齐处理的次数为3以及每次左移对齐处理的位移量分别为7、4、1,则该次得到的当前减数对应的当前商数为27+24+21=146。

可选的,所述控制器11根据每一次得到的当前减数中左移对齐处理的次数以及每次左移对齐处理的位移量计算每一次得到的当前减数对应的当前商数,包括:

在所述左移对齐处理为第一类左移对齐处理的情况下,若当前次得到的当前减数的二进制有效位数为n,第一类左移对齐处理的总次数为p,所述控制器11按照如下公式计算当前次得到的当前减数对应的当前商数:

其中,h为当前次得到的当前减数对应的当前商数。σ为求和符号,n为当前减数的二进制有效位数,m为原始除数的二进制有效位数,z从1到p进行求和。

具体的,从图2可以看出,如果当前次得到的当前减数的二进制有效位数为n=11,当前次得到的当前减数的原始除数进行第一类左移对齐处理的总次数为p=3,原始除数的位数为m=3,则当前次得到的当前减数对应的当前商数h=28+25+22=292。

可选的,所述控制器11根据每一次得到的当前减数中左移对齐处理的次数以及每次左移对齐处理的位移量计算每一次得到的当前减数对应的当前商数,包括:

在所述左移对齐处理为第二类左移对齐处理的情况下,若当前次得到的当前减数的二进制有效位数为n,第二类左移对齐处理的总次数为u,所述控制器11按照如下公式计算当前次得到的当前减数对应的当前商数:

其中,h为当前次得到的当前减数对应的当前商数。σ为求和符号,n为当前减数的二进制有效位数,m为原始除数的二进制有效位数,z从1到u进行求和。

具体的,从图3可以看出,如果当前次得到的当前减数的二进制有效位数为n=11,当前次得到的当前减数的原始除数进行第二类左移对齐处理的总次数为u=3,原始除数的位数m=3,则当前次得到的当前减数对应的当前商数h=27+24+21=146。

下面结合图5来阐述本申请实施例的求商的具体流程。请参阅图5,图5是本申请实施例提供的一种求商的示例图。如图5所示,图5显示了被除数2047与除数5相除得到余数的过程中计算商的过程。原始被除数为2047,其对应的二进制数为11111111111,总位宽为n=11比特(bit),最低位用b0表示,最高位用b10表示。原始除数为5,其对应的二进制数为101,总位宽为m=3比特(bit),最低位用b0表示,最高位用b2表示。原始除数经过移位(具体为,原始除数与原始被除数11111111111对齐的第一类左移对齐处理)后的当前减数为10110110100,在得到该当前减数的过程中,原始除数经过了三次移位,移位量分别为8、5、2,则该当前次得到的当前减数对应的当前商数h1=28+25+22=292。第一次迭代是将原始被除数11111111111与当前减数10110110100相减,得到当前被除数为1001001011,由于1001001011大于101,继续执行下一次移位处理和下一次迭代;原始除数经过移位(具体为,原始除数与上一次迭代得到的当前被除数1001001011对齐的第二类左移对齐处理)后的当前减数为101101101,在得到该当前减数的过程中,原始除数经过了三次移位,移位量分别为6、3、0,则该当前次得到的当前减数对应的当前商数h2=26+23+20=73。第二次迭代是将上一次迭代得到的当前被除数1001001011与当前减数101101101相减,得到新的当前被除数为11011110,由于11011110大于101,继续执行下一次移位处理和下一次迭代;原始除数经过移位(具体为,原始除数与上一次迭代得到的当前被除数11011110对齐的第一类左移对齐处理)后的当前减数为10110100,在得到该当前减数的过程中,原始除数经过了二次移位,移位量分别为5、2,则该当前次得到的当前减数对应的当前商数h3=25+22=36。第三次迭代是将上一次迭代得到的当前被除数11011110与当前减数10110100相减,得到新的当前被除数为101010,由于101010大于101,继续执行下一次移位处理和下一次迭代;原始除数经过移位(具体为,原始除数与上一次迭代得到的当前被除数101010对齐的第一类左移对齐处理)后的当前减数为101000,在得到该当前减数的过程中,原始除数经过了一次移位,移位量为3,则该当前次得到的当前减数对应的当前商数h4=23=8。第四次迭代是将上一次迭代得到的当前被除数101010与当前减数101000相减,得到10,由于10小于101,则结束移位处理和迭代,并将10(对应的十进制数为2)作为原始被除数除以原始除数的余数。被除数2047与除数5相除得到商数h=h1+h2+h3+h4=292+73+36+8=409。现有的方案中,商数就是迭代次数,迭代的次数越多,求得商数所需的时间越多。本申请实施例根据每次迭代中当前减数中左移对齐处理的次数以及每次左移对齐处理的位移量计算商数,由于迭代次数大大减少,求得商数所需的计算量也降低,可以缩短计算商数所需的时间。

可选的,在所述控制器11比较当前被除数是否大于或等于原始除数的2倍之前,所述控制器11计算所述原始被除数与所述原始除数的比值,在所述原始被除数与所述原始除数的比值大于第一阈值的情况下,所述控制器11执行所述比较当前被除数是否大于或等于原始除数的2倍的步骤。

可选的,在所述原始被除数与所述原始除数的比值小于第一阈值的情况下,所述控制器11按照如下方式计算原始被除数除以原始除数的余数:

执行差值计算,将当前被除数减去原始除数,得到差值;所述当前被除数为所述原始被除数或上一次差值计算得到的差值;

判断该差值是否小于原始除数;

若大于或等于,将该差值作为新的当前被除数,继续执行上述差值计算;

若小于,将该差值作为原始被除数除以原始除数的余数。

本申请实施例中,第一阈值可以预先进行设定,比如,第一阈值可以设定为4。在原始被除数与原始除数的比值小于第一阈值的情况下,只需要几次迭代即可得到余数,无需移位处理;在原始被除数与原始除数的比值大于第一阈值的情况下,通过移位处理和减法迭代,可以快速求得余数。本申请实施例可以提高求模运算的智能性。

请参阅图6,图6是本申请提供的一种求模运算处理方法的流程示意图,如图6所示,该方法包括如下步骤。

601,比较当前被除数是否大于或等于原始除数的2倍,原始除数和当前被除数均为二进制数,当前被除数为原始被除数或上一次减法运算得到的被除数;

602,若当前被除数大于或等于原始除数的2倍,将原始除数输入移位寄存器模块进行移位处理,得到一个为原始除数的n倍并且小于当前被除数的当前减数,n为大于或等于2的整数;

603,执行当前次减法运算,该当前次减法运算用于计算当前被除数与当前减数的差值,将当前被除数与当前减数的差值存入缓存;

604,若当前被除数与当前减数的差值小于原始除数,将当前被除数与当前减数的差值作为原始被除数除以原始除数的余数。

可选的,如图7所示,在执行步骤603之后,还可以执行如下步骤605。

605,若当前被除数与当前减数的差值大于原始除数,将当前被除数与当前减数的差值作为新的当前被除数,执行上述步骤601。

可选的,如图8所示,在执行步骤601之后,还可以执行如下步骤606或步骤607。

606,若当前被除数小于原始除数的2倍,并且当前被除数大于或等于原始除数,将当前被除数与原始除数的差值作为原始被除数除以原始除数的余数;

607,若当前被除数小于原始除数的2倍,并且当前被除数小于原始除数,将当前被除数作为原始被除数除以原始除数的余数。

可选的,步骤602中,将原始除数输入移位寄存器模块进行移位处理,得到一个为原始除数的n倍并且小于当前被除数的当前减数,可以包括如下步骤:

(11)比较当前被除数的最高m位二进制数与原始除数的大小,原始除数的二进制有效位数为m,当前被除数的二进制有效位数为n;m、n均为正整数;

(12)若当前被除数的最高m位二进制数大于或等于原始除数,将原始除数输入移位寄存器模块进行p次第一类左移对齐处理,得到当前减数;每次第一类左移对齐处理是将原始除数的最高位与当前被除数的未被对齐的最高位对齐;

(13)若当前被除数的未被对齐的位数大于或等于m时,继续执行第一类左移对齐处理;若当前被除数的未被对齐的位数小于m时,将当前减数中与当前被除数的未被对齐的位数置零;

其中,若n为m的非整数倍,n=p*m+s;p、s均为正整数;

若n为m的整数倍,n=t*m;t为正整数。

可选的,步骤602中,步骤602中,将原始除数输入移位寄存器模块进行移位处理,得到一个为原始除数的n倍并且小于当前被除数的当前减数,可以包括如下步骤:

(21)比较当前被除数的最高m位二进制数与原始除数的大小,原始除数的二进制有效位数为m,当前被除数的二进制有效位数为n;m、n均为正整数;

(22)若当前被除数的最高m位二进制数小于原始除数,将原始除数输入移位寄存器模块进行u次第二类左移对齐处理,得到当前减数;每次第二类左移对齐处理是将原始除数的最高位与当前被除数除最高位之外的未被对齐的最高位对齐;

(23)若当前被除数除最高位之外的未被对齐的位数大于或等于m时,继续执行第二类左移对齐处理;若当前被除数除最高位之外的未被对齐的位数小于m时,将当前减数中与当前被除数的未被对齐的位数置零;

其中,若n-1为m的非整数倍,n-1=u*m+v,u、v均为正整数;

若n-1为m的非整数倍,n-1=x*m;x为正整数。

可选的,如图9所示,在执行步骤604或步骤606或步骤607之后,还可以执行如下步骤:

608,根据每一次得到的当前减数中左移对齐处理的次数以及每次左移对齐处理的位移量计算每一次得到的当前减数对应的当前商数;

609,将每一次得到的当前减数对应的当前商数之和作为原始被除数除以原始除数的商数。

可选的,步骤608可以包括如下步骤:

若左移对齐处理为第一类左移对齐处理,当前次得到的当前减数的二进制有效位数为n,第一类左移对齐处理的总次数为p,按照如下公式计算当前次得到的当前减数对应的当前商数:

若左移对齐处理为第二类左移对齐处理,当前次得到的当前减数的二进制有效位数为n,第二类左移对齐处理的总次数为u,按照如下公式计算当前次得到的当前减数对应的当前商数:

其中,h为当前次得到的当前减数对应的当前商数。

可选的,如图10所示,在执行步骤601之前,还可以执行如下步骤:

610,计算原始被除数与原始除数的比值;

611比较原始被除数与原始除数的比值是否大于第一阈值,若是,则执行步骤601。

可选的,在执行步骤610之后,还可以执行如下步骤:

若原始被除数与原始除数的比值小于第一阈值,按照如下方式计算原始被除数除以原始除数的余数:

(31)执行差值计算,将当前被除数减去原始除数,得到差值;当前被除数为原始被除数或上一次差值计算得到的差值;

(32)判断该差值是否小于原始除数;

(33)若大于或等于,将该差值作为新的当前被除数,继续执行上述差值计算;

(34)若小于,将该差值作为原始被除数除以原始除数的余数。

图6至图10中各个步骤执行主体可以为图1所示的运算电路,具体可以为运算电路中的控制器、移位寄存器模块或减法器模块。

图6至图10所示的方法的具体实施可以参见上述图1至图5中关于运算电路的实施例,此处不再赘述。

本申请实施例的求模运算处理方法,可以通过减法器模块和移位寄存器模块实现求模运算,可以通过移位寄存器模块一次迭代尽可能的挖掘出原始除数的n倍的当前减数,从而减少减法器模块的减法运算的迭代次数,进而缩短求模运算所需的时间。

请参阅图11,图11是本申请实施例提供的一种求模运算处理装置的结构示意图,如图11所示,该求模运算处理装置包括比较单元1101、移位处理单元1102、减法运算单元1103和求余单元1104,其中:

比较单元1101,用于比较当前被除数是否大于或等于原始除数的2倍,所述原始除数和所述当前被除数均为二进制数,所述当前被除数为所述原始被除数或上一次减法运算得到的被除数;

移位处理单元1102,用于在所述当前被除数大于或等于所述原始除数的2倍的情况下,将原始除数输入移位寄存器模块进行移位处理,得到一个为所述原始除数的n倍并且小于所述当前被除数的当前减数,n为大于或等于2的整数;

减法运算单元1103,用于执行当前次减法运算,所述当前次减法运算用于计算所述当前被除数与所述当前减数的差值,将所述当前被除数与所述当前减数的差值存入缓存;

求余单元1104,用于在所述当前被除数与所述当前减数的差值小于所述原始除数的情况下,将所述当前被除数与所述当前减数的差值作为所述原始被除数除以所述原始除数的余数。

图11所示的求模运算处理装置的实施可以参见图6至图10所示的方法实施例,重复之处不再赘述。

本申请实施例的求模运算处理装置,可以通过减法器模块和移位寄存器模块实现求模运算,可以通过移位寄存器模块一次迭代尽可能的挖掘出原始除数的n倍的当前减数,从而减少减法器模块的减法运算的迭代次数,进而缩短求模运算所需的时间。

请参阅图12,图12是本申请实施例提供的另一种求模运算处理装置的结构示意图,如图12所示,该求模运算处理装置1200包括处理器1201和存储器1202,处理器1201、存储器1202可以通过通信总线1203相互连接。通信总线1203可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。通信总线1203可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器1202用于存储计算机程序,计算机程序包括程序指令,处理器1201被配置用于调用程序指令,上述程序包括用于执行图2所示的方法。

处理器1201可以是通用中央处理器(cpu),微处理器,特定应用集成电路(application-specificintegratedcircuit,asic),或一个或多个用于控制以上方案程序执行的集成电路。处理器1201可以是图1中的控制器。

存储器1202可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。

本申请实施例的求模运算处理装置,可以通过减法器模块和移位寄存器模块实现求模运算,可以通过移位寄存器模块一次迭代尽可能的挖掘出原始除数的n倍的当前减数,从而减少减法器模块的减法运算的迭代次数,进而缩短求模运算所需的时间。

本申请实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种求模运算处理方法的部分或全部步骤。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

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

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

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

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

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

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。

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

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