CN115525245A - 基于karatsuba算法的整数乘装置 - Google Patents
基于karatsuba算法的整数乘装置 Download PDFInfo
- Publication number
- CN115525245A CN115525245A CN202211153533.4A CN202211153533A CN115525245A CN 115525245 A CN115525245 A CN 115525245A CN 202211153533 A CN202211153533 A CN 202211153533A CN 115525245 A CN115525245 A CN 115525245A
- Authority
- CN
- China
- Prior art keywords
- input
- output
- multiplication
- module
- selector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 37
- 238000012805 post-processing Methods 0.000 claims abstract description 24
- 230000008707 rearrangement Effects 0.000 claims description 27
- 239000000126 substance Substances 0.000 claims description 5
- 238000000034 method Methods 0.000 abstract description 13
- 238000007792 addition Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 13
- 238000007781 pre-processing Methods 0.000 description 5
- 239000004744 fabric Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
本申请提供的一种基于karatsuba算法的整数乘装置,用于实现两个被均分成N项的输入数据的相乘运算,包括重排序模块、预计算模块、乘法模块、后处理模块以及加法合并模块。其中重排序模块用于重排N项系数,预计算模块计算交叉核输入系数,乘法模块包括N/2点的karatsuba乘法子模块,并且乘法模块不在递归过程中对输出的结果进行合并,而是利用后处理模块得到第零项输出数据、奇数项输出数据以及偶数项输出数据,再通过加法合并模块对各输出数据进行拆分拼接合并,得到最终的乘法结果,节约硬件资源,缩短时延。
Description
技术领域
本申请涉及密码学技术领域,特别涉及一种整数乘装置。
背景技术
整数乘在密码学中有重要的应用。Karatsuba算法是当整数数位较小时调用的一种重要的整数快速乘法算法。
一阶Karatsuba算法将输入的两个乘数分别拆成两项,然后做三次小数乘法操作以及少量的加法和移位操作,即a1、a0和b1、b0。当乘数为L比特时,原本乘法需要4个L/2比特的乘法和3个L比特的加法,而一阶Karatsuba算法可以将复杂度降低至3个L/2比特乘法、4个L比特加法和2个L/2比特加法,具体一阶Karatsuba算法的乘法过程如下:
(a12L/2+a0)(b12L/2+b0)=a1b12L+(a1b0+a0b1)2L/2+a0b0
=a1b12L+((a1+a0)(b1+b0)-a1b1-a0b0)2L/2+a0b0
根据一阶的Karatsuba算法,可推导得到二阶的Karatsuba算法,即将乘数分为四项,具体乘法过程如下所示:
(a323L/2+a22L+a12L/2+a0)(b323L/2+b22L+b12L/2+b0)
=(a1 *2L/2+a0 *)(b1 *2L/2+b0 *)
=a1 *b1 *2L+((a1 *+a0*)(b1 *+b0 *)-a1 *b1 *-a0 *b0 *)2L/2+a0 *b0 *
其中,a0 *=a22L+a0,a1 *=a32L+a1,b0 *=b22L+b0,b1 *=b32L+b1。对于a1 *b1 *,(a1 *+a0 *)(b1 *+b0 *)和a0 *b0 *可逐个采用一阶Karatsuba算法进行计算。对于输入项数更多的算法,则可以采用更高阶的Karatsuba算法。比如当项数为N时,需要阶数k=log2N的递归Karatsuba算法,类似上述方法,三次使用k-1阶Karatsuba算法并不断递归至一阶的Karatsuba算法。递归的Karatsuba算法(KOA,Karatsuba-OfmanAlgorithms)如下所示:
目前的整数乘装置基于上述递归的Karatsuba算法,把大数乘法运算拆分成三个部分积的运算,每个部分积的运算按照同样的算法递归求取,直到将大数拆分成两个积的乘法。但是上述整数乘装置在每次递归时,都需要通过移位操作和加法操作对上次递归的结果进行合并,进行合并操作时会用到移位和加法操作,资源消耗较大,延迟较长。
发明内容
为了解决目前的整数乘装置在每次递归时,都需要通过移位操作和加法操作对上次递归的结果进行合并,而合并操作是会用到移位和加法操作,资源消耗大,延迟较长的问题,本申请通过以下方面提供的一种基于karatsuba算法的整数乘装置。
本申请第一方面提供的一种基于karatsuba算法的整数乘装置用于实现两个输入数据的相乘,其中,两个输入数据分别均分成N项,所述整数乘装置包括:重排序模块、预计算模块、乘法模块、后处理模块以及加法合并模块;
重排序模块用于将输入数据的N项系数基于预设模型进行重排序,得到重排系数,输出至乘法模块和预计算模块;
预计算模块用于根据重排系数进行预计算,得到交叉核输入系数,输出至乘法模块,其中交叉核输入系数的项数为N/2;
乘法模块包括N/2点的karatsuba乘法子模块,乘法模块用于根据偶数核输入系数进行计算,得到偶数核输出数据,以及用于根据奇数核输入系数进行计算,得到奇数核输出数据,以及用于根据交叉核输入系数进行计算,得到交叉核输出数据;其中,偶数核输入系数为所述重排系数的前N/2项,奇数核输入系数为所述重排系数的后N/2项;
后处理模块用于根据偶数核输出数据、奇数核输出数据以及交叉核输出数据,得到第零项输出数据、奇数项输出数据以及偶数项输出数据,其中,第零项输出数据等于偶数核输出数据中第一项,偶数项输出数据等于偶数核输出数据左移一项之后和奇数核输出数据相加,奇数项输出数据等于交叉核输出数据减去偶数核输出数据和奇数核输出数据;
合并加法模块用于根据第零项输出数据、奇数项输出数据以及偶数项输出数据进行拼接和相加,得到乘法结果。
在一些实施例中,预设模型为二叉树模型,二叉树模型的根节点值为0;二叉树模型的目标节点的左子节点的值等于目标节点的值,目标节点的右子节点的值等于目标节点的值加上2a,其中,a为目标节点在二叉树模型中的深度,目标节点为二叉树模型中的任意一个节点;
在一些实施例中,N=8,预计算模块包括第一输入选择器、第二输入选择器、第三输入选择器、第四输入选择器,第一加法器、第二加法器,第一输出选择器,第二输出选择器以及第一寄存器、第二寄存器;
第一输入选择器的输入依次为重排系数中的第一个和第三个;第二输入选择器的输入依次为重排系数中的第二个和第四个,第三输入选择器的输入依次为重排系数中的第五个和第七个,第四输入选择器的输入依次为重排系数中的第六个和第八个;
第一输入选择器和第三输入选择器的输出端连接至第一加法器的输入端,第一加法器的输出端连接至第一输出选择器;第一加法器的输出端还连接至乘法模块,用于输出交叉核输入系数中的第三项;
第二输入选择器和第四输入选择器的输出端连接至第二加法器的输入端,第二加法器的输出端连接至第二输出选择器;第二加法器的输出端还连接至乘法模块,用于输出交叉核输入系数中的第二项;
第一输出选择器的输入依次为第一加法器的输出和第一寄存器的输出,第一输出选择器的输出端连接至第一寄存器的输入端;
第二输出选择器的输入依次为第二加法器的输出和第二寄存器的输出,第二输出选择器的输出端连接至第二寄存器的输入端;
第一寄存器的输出端还连接至乘法模块,用于输出交叉核输入系数中的第一项;
第二寄存器的输出端还连接至乘法模块,用于输出交叉核输入系数中的第四项。
在一些实施例中,乘法模块串行工作,乘法模块包括第五输入选择器、N/2点的karatsuba乘法子模块;
第五输入选择器的输入依次为偶数核输入系数、奇数核输入系数和交叉核输入系数;
第一个迭代周期,第五输入选择器输出偶数核输入系数至N/2点的karatsuba乘法子模块;N/2点的karatsuba乘法子模块根据偶数核输入系数进行计算,得到偶数核输出数据;
第二个迭代周期,第五输入选择器输出奇数核输入系数至N/2点的karatsuba乘法子模块;N/2点的karatsuba乘法子模块根据奇数核输入系数进行计算,得到奇数核输出数据;
第三个迭代周期,第五输入选择器输出交叉核输入系数至N/2点的karatsuba乘法子模块;N/2点的karatsuba乘法子模块根据交叉核输入系数进行计算,得到交叉核输出数据。
在一些实施例中,后处理包括第六输入选择器、第七输入选择器、第三寄存器、第四寄存器、移位器、第三输出选择器、第四输出选择器、第三加法器、第四加法器;其中,
第六输入选择器的输入端依次连接至N/2点的karatsuba乘法子模块的输出端和第三寄存器的输出端;
第七输入选择器的输入端依次连接至N/2点的karatsuba乘法子模块的输出端和第四寄存器的输出端;
第三寄存器的输入端连接至第六输入选择器的输出端;第三寄存器的输出端还连接至移位器的输入端;
第四寄存器的输入端连接至第七输入选择器的输出端;
移位器用于对接收到的数据向左移一位,移位器的输出端连接至第三输出选择器的输入端;
第三输出选择器的输入端依次连接至移位器的输出端和寄存器的输出端,用于在第二个迭代周期输出偶数核输出数据至第三加法器;
第四输出选择器的输入端依次连接至第四寄存器的输出端和N/2点的karatsuba乘法子模块的输出端,第四输出选择器用于在第二个迭代周期输出奇数核输出数据至第三加法器;
第三加法器用于在第二迭代周期输出偶数项输出数据至合并加法模块;
第三加法器的输出端还通过取反电路连接至第四加法器的输入端;
第四加法器的输入端还连接至乘法模块的输出端,第四加法器用于在第三迭代周期输出奇数项输出数据至合并加法模块;
加减模块还用于在第一个迭代周期将偶数核输出数据中的第一项直接输出至合并加法模块。
在一些实施例中,合并加法模块包括第一拼接电路、进位保存加法器、以及第二拼接电路;
拼接电路用于将偶数项输出数据依次拼接,得到拼接后的偶数项数据,以及用于将奇数项输出数据中将最高位替换成零之后依次拼接,得到拼接后的奇数项数据,以及用于将偶数项输出数据的最高位和奇数项输出数据的最高位依次拼接,得到拼接后的余项数据;
进位保存加法器用于将拼接后的偶数项数据、拼接后的奇数项数据以及拼接后的余项数据进行相加,得到中间乘法结果;
第二拼接电路用于将中间乘法结果和第零项输出数据的前w比特进行拼接,得到乘法结果,其中w为输入数据的每一项的位宽。
本申请提供的一种基于karatsuba算法的整数乘装置,用于实现两个以N项多项式形式表示的输入数据的相乘运算,包括重排序模块、预计算模块、乘法模块、后处理模块以及合并加法模块;重排序模块用于重排序N项系数得到重排系数,进而得到偶数核输入系数和奇数核输入系数,预计算模块根据重排系数得到交叉核输入系数;乘法模块包括N/2点的karatsuba乘法子模块,根据偶数核输入系数、奇数核输入系数、交叉核输入系数进行乘法计算,得到偶数核输出数据、奇数核输出数据、交叉核输出数据,通过后处理模块计算得到第零项输出数据、奇数项输出数据以及偶数项输出数据,通过合并加法模块模块进行拼接相加,得到乘法结果。上述整数乘装置可以直接将乘法模块的输出结果进行拼接和相加,得到最终的乘法结果,节约硬件资源,缩短时延。
附图说明
图1为本申请实施例提供的一种基于karatsuba算法的整数乘装置的结构示意图;
图2为本申请实施例采用的2点FCM架构的电路结构示意图;
图3为本申请实施例提供的一种基于karatsuba算法的整数乘装置的示例性结构示意图;
图4为本申请实施例提供的一种基于karatsuba算法的整数乘装置中预计算模块的电路结构示意图;
图5本申请实施例提供的一种基于karatsuba算法的整数乘装置中乘法模块和后处理模块的电路结构示意图处理模块;
图6为本申请实施例提供的一种基于karatsuba算法的整数乘装置中所述合并加法模块的处理过程示意图;
图7为本申请实施例提供的一种基于karatsuba算法的整数乘装置中所述合并加法模块中的进位保存加法器的电路结构示意图;
图8为本申请实施例采用的3点FCM架构的电路结构示意图。
具体实施方式
为便于对申请的技术方案进行说明,以下首先在对本申请所涉及到的一些概念进行说明。
为了解决目前的整数乘装置在每次递归时,都需要通过移位操作和加法操作对上次递归的结果进行合并,而合并操作是会用到移位和加法操作,资源消耗大,延迟较长的问题,本申请通过以下实施例提供的一种基于karatsuba算法的整数乘装置。
参见图1,本申请实施例提供的基于karatsuba算法的整数乘装置用于实现两个输入数据的相乘,其中,所述两个输入数据分别被均分成N项。在本申请中,两个输入数据的长度为L比特,其中一个输入数据用X表示,对应的N项的系数用x0,x1,...,xN-1表示,另一个输入数据用Y表示,对应的N项系数用y0,y1,...,yN-1表示,其中每一项的位宽为w比特,乘法结果用Z表示。
参见图1,所述整数乘装置包括:重排序模块、预计算模块、乘法模块、后处理模块以及加法合并模块。
所述重排序模块用于将所述输入数据的N项系数基于预设模型进行重排序,得到重排系数,输出至所述乘法模块和所述预计算模块。
在一些实施例中,N为2的次幂,所述输入数据被拆分成4项多项式形式、8项多项式形式或者更多。在这些实施例中,所述预设模型为二叉树模型,所述二叉树模型的根节点值为0;所述二叉树模型的目标节点的左子节点的值等于所述目标节点的值,所述目标节点的右子节点的值等于所述目标节点的值加上2a,其中,a为所述目标节点在二叉树模型中的深度,所述目标节点为所述二叉树模型中的任意一个节点。其中,表示所述重排系数中的一个,xj表示所述输入数据的N项系数中的一个;其中,i依次为所述二叉树模型中第k层从左到右的值,对应的,j依次为0、1、2......、N-1,其中,k=log2N。
在一种实现方式中,可以利用基于二叉树模型的深度优先的递归函数,实现对输入数据的N项系数进行重排序。重排序之后的重排系数富有规律性,可扩展性强。所述基于二叉树模型的深度优先的递归函数的算法过程如下:
Input:The maximum depth log2N,xi with i∈0,1,…,N-1,
初始化部分:
e=0,depth0,and index=0.
迭代计算部分:
迭代结束后顶层部分:
所述预计算模块用于根据所述重排系数进行预计算,得到交叉核输入系数,输出至所述乘法模块,其中所述交叉核输入系数的项数为N/2。
所述乘法模块包括N/2点的karatsuba乘法子模块,所述乘法模块用于根据偶数核输入系数进行计算,得到偶数核输出数据,以及用于根据奇数核输入系数进行计算,得到奇数核输出数据,以及用于根据所述交叉核输入系数进行计算,得到交叉核输出数据;其中,所述偶数核输入系数为所述重排系数的前N/2项,所述奇数核输入系数为所述重排系数的后N/2项。
所述后处理模块用于根据所述偶数核输出数据、所述奇数核输出数据以及所述交叉核输出数据,得到第零项输出数据、奇数项输出数据以及偶数项输出数据,其中,所述第零项输出数据等于所述偶数核输出数据中第一项,所述偶数项输出数据等于所述偶数核输出数据左移一项之后和所述奇数核输出数据相加,所述奇数项输出数据等于所述交叉核输出数据减去所述偶数核输出数据和所述奇数核输出数据。
所述合并加法模块用于根据所述第零项输出数据、所述奇数项输出数据以及所述偶数项输出数据进行拼接和相加,得到乘法结果。
在一些实施例中,所述乘法模块包括N/2点的karatsuba乘法子模块。在本申请中,所述karatsuba乘法子模块采用FCM(Fast Convolution-like Multiplier,类快速卷积乘法器)架构。
参见图2为2点的FCM架构的结构示意图,即输入数据拆分成2项。利用前述实施例中的重排序模块,根据输入数据的项数N,改变递归的层数(一共需要递归log2N次),从而适用于各种大小的输入数据。每次递归都会使用3个低一级的FCM架构,按照递归调用的顺序,低一级的FCM架构分别表示为偶数核,交叉核和奇数核,偶数输出z2i(0<i<N)为偶数核输出数据左移一位之后和奇数核输出数据相加的结果,而奇数输出z2i+1(0≤i<N)是交叉核的输出数据减去相应偶数核和奇数核的输出数据,如此递归直至2点的FCM架构。参见图3为一种4点的FCM架构,即输入数据拆分成4项。
如图3所示,所述4点的FCM架构中的输入数据是经过重排序模块得到的重排系数。图3中的4点FCM架构中包括三个并行的2点FCM架构,第一个2点FCM架构在本申请中称为偶数核,第二个2点FCM架构在本申请中称为交叉核,第三个2点FCM架构在本申请中称为奇数核。其中,偶数核输入系数是重排系数中的前2个,奇数核输入系数是重排系数中的后2个,通过预计算模块对重排系数进行交叉计算,得到交叉核输入系数,分别为和分别进行计算,得到偶数核输出数据、奇数核输出数据和交叉核输出数据,通过后处理模块包括的加减电路,得到第零项输出数据、奇数项输出数据以及偶数项输出数据。
在一些实施例中,所述乘法模块串行工作,使得所述整数乘装置中只需要使用一个低一级的FCM架构即可。参见图4,给出一种(N=8时)所述乘法模块在串行工作时的预计算模块和所述乘法模块的电路结构图示例。
参见图4,为N=8时预计算模块的电路结构示意图。所述预计算模块包括第一输入选择器、第二输入选择器、第三输入选择器、第四输入选择器,第一加法器、第二加法器,第一输出选择器,第二输出选择器以及第一寄存器、第二寄存器。
第一输入选择器的输入依次为所述重排系数中的第一个和第三个;第二输入选择器的输入依次为所述重排系数中的第二个和第四个,第三输入选择器的输入依次为所述重排系数中的第五个和第七个,第四输入选择器的输入依次为所述重排系数中的第六个和第八个。
所述第一输出选择器的输入依次为第一加法器的输出和第一寄存器的输出,所述第一输出选择器的输出端连接至所述第一寄存器的输入端。
所述第二输出选择器的输入依次为第二加法器的输出和第二寄存器的输出,所述第二输出选择器的输出端连接至所述第二寄存器的输入端。
在一些实施例中,还包括一个前处理模块,预计算模块是所述前处理模块中的一部分。当第一个迭代周期时,所述前处理模块用于输出重排系数的前4位至所述乘法模块,示例性的,可以通过一个控制器以及直连电路将所述重排系数的前4位至所述乘法模块;第二个迭代周期时,所述前处理模块用于输出重排系数的后4位至所述乘法模块,可以通过一个控制器以及直连电路将所述重排系数的后4位至所述乘法模块;第三个迭代周期时,所述前处理模块中的预计算模块将计算结果输出值所述乘法模块。
在这些实施例中,参见图5,所述乘法模块包括第五输入选择器、N/2点的karatsuba乘法子模块(N=8时,为4点类快速卷积乘法模块,即整个图3)。需要说明的是,N=8时,所述N/2点的karatsuba乘法子模块为4点FCN架构,即图3;N=4时,所述N/2点的karatsuba乘法子模块为2点FCM架构,即图2。
所述后处理模块用于根据所述偶数核输出数据、所述奇数核输出数据以及所述交叉核输出数据,得到第零项输出数据z0、奇数项输出数据z奇以及偶数项输出数据z偶,其中,所述第零项输出数据z0等于所述偶数核输出数据中第一项,所述偶数项输出数据z偶等于所述偶数核输出数据左移一项之后和所述奇数核输出数据相加,所述奇数项输出数据z奇等于所述交叉核输出数据减去所述偶数核输出数据和所述奇数核输出数据。
在这些实施例中,所述加减模块包括第六输入选择器、第七输入选择器、第三寄存器、第四寄存器、移位器、第三输出选择器、第四输出选择器、第三加法器、第四加法器;其中,
所述第六输入选择器的输入端依次连接至所述N/2点的karatsuba乘法子模块的输出端和所述第三寄存器的输出端。
所述第七输入选择器的输入端依次连接至所述N/2点的karatsuba乘法子模块的输出端和所述第四寄存器的输出端。
所述第三寄存器的输入端连接至所述第六输入选择器的输出端;所述第三寄存器的输出端还连接至所述移位器的输入端。
所述第四寄存器的输入端连接至所述第七输入选择器的输出端。
所述移位器用于对接收到的数据向左移一位,所述移位器的输出端连接至所述第三输出选择器的输入端。
所述第三输出选择器的输入端依次连接至所述移位器的输出端和所述寄存器的输出端,用于在第二个迭代周期输出所述偶数核输出数据至所述第三加法器。
所述第四输出选择器的输入端依次连接至所述第四寄存器的输出端和所述N/2点的karatsuba乘法子模块的输出端,所述第四输出选择器用于在第三个迭代周期输出所述奇数核输出数据至所述第三加法器。
所述第三加法器用于在所述第三迭代周期输出所述偶数项输出数据z偶至所述后处理模块。
所述第三加法器的输出端还通过取反电路连接至所述第四加法器的输入端。
所述第四加法器的输入端还连接至所述乘法模块的输出端,所述第四加法器用于在第三迭代周期输出所述奇数项输出数据z奇至所述后处理模块。
所述加减模块还用于在第一个迭代周期将所述偶数核输出数据中的第一项z0直接输出至所述后处理模块。
为了控制所述预计算模块和乘法模块以及后处理模块中的各个选择器,在一种实现方式中,引入了两个信号,2比特的信号num和单比特信号s,其中num的值从0开始,每个迭代周期加一,加至2后再次归零,反复循环。s是num的最低位和最高位的或值,即s=num[0]|num[1]。图4中所有选择器的控制信号均为s,图5中的选择器的控制信号为num或者s。
在这些实施例中,在N/2点的karatsuba乘法子模块和后处理模块中,实现了加法器的复用,节省约一半的加法器。在N/2点的karatsuba乘法子模块内部并联三个N/4点的karatsuba乘法子模块,兼容串行架构和混合串并行架构,在输入和输出处实现更多的加法器复用,减小电路面积,从而适应对面积和延时的不用需求。
由递归的Karatsuba算法可知,每次迭代过程都需要通过移位操作和加法操作对上次迭代的结果进行合并,这样的架构延迟较大,消耗的资源较多,并且随着乘法位数的增加,延迟和资源也会大幅增加。在本申请中采用延迟合并的办法,子乘法器不再进行合并,而是在合并加法模块完成合并,通过合并加法模块,将乘法模块得到的结果进行拆分重组,如图6所示,将乘法模块输出的偶数项和奇数项(不包括第2w-1位)分别拼接,并把每一项(除了第0项)的第2w-1位拼接为余项,将三个拼接后的数据利用(2N-1)w bit的进位保存加法器相加,得到最后的整式乘法的结果。
在一些实施例中,所述合并加法模块包括第一拼接电路、进位保存加法器、以及第二拼接电路。
所述拼接电路用于将所述偶数项输出数据依次拼接,得到拼接后的偶数项数据,以及用于将所述奇数项输出数据中将所述最高位替换成零之后依次拼接,得到拼接后的奇数项数据,以及用于将所述偶数项输出数据的最高位和所述奇数项输出数据的最高位依次拼接,得到拼接后的余项数据。
所述进位保存加法器用于将所述拼接后的偶数项数据、所述拼接后的奇数项数据以及所述拼接后的余项数据进行相加,得到中间乘法结果。
参见图7,为在一种实现方式中的进位保存加法器的结构示意图。其中,其中FA为全加器,偶数项输入为E,奇数项输入为O,余项输入为R,n=(2N-1)×w。利用进位保存加法器可以将关键路径缩短。
所述第二拼接电路用于将所述中间乘法结果和所述第零项输出数据的前w比特进行拼接,得到所述乘法结果,其中w为所述输入数据的位宽。即将图7中的输出数据c0,c1,…,cn+1和z0的前w比特拼接,即为最终乘法结果。
在前述实施例中,所述karatsuba乘法子模块的底层的核是2点的FCM架构。在一些实施例中,所述karatsuba乘法子模块的底层的核也可以采用3点的FCM架构,从而可以支持多项式的项数为2n×3的整数乘运算。利用3点的FCM架构的整数乘装置可以将计算复杂度降低至原来的2/3。参见图8为3点的FCM架构的电路结构示意图。相应的,重排序模块中的预设模型为三叉树模型。
为了清楚说明本申请实施例提供的一种基于karatsuba算法的整数乘装置,以下结合具体数据说明所述整数乘装置的计算过程。
设所述整数乘装置的输入数据为128比特,对于不满128比特的数据进行补零。将输入分为8项,每位宽为16比特。
输入两个十六进制的大数,分别为:
X=1d 3b0c 34908 40f 2944 e824
Y=ffffffff
将X和Y输入架构,通过重排序模块,得到重排序后的序列(即所述重排系数)为:
X_permute[0:7]=e824,3b0c,840f,0000,2944,001d,3490,0000
Y_permute[0:7]=ffff,0000,0000,0000,ffff,0000,0000,0000
将重排序后的结果输入预计算模块,计算4点FCM的交叉核的输入。输入图4所示的电路得到输出:
从而得交叉核输入系数:
X_cross[0:3]=11168,03b29,0b89f,00000;
Y_cross[0:3]=1fffe,00000,00000,00000;
此外,偶数核输入系数为:
X_even[0:3]=0e824,03b0c,0840f,00000;
Y_even[0:3]=0ffff,00000,00000,00000;
奇数核输入系数为:
X_odd[0:3]=02944,0001d,03490,00000;
Y_odd[0:3]=0ffff,00000,00000,00000;
分别将偶数核输入系数、奇数核输入系数以及交叉核输入系数输入4点FCM架构,得到偶数核输出数据为:
Zeven[0:6]=0e82317dc,0840e7bf1,03b0bc4f4,
000000000,000000000,000000000,000000000;
得到的奇数核输出数据为:
Zodd[0:6]=02943d6bc,0348fcb70,0001cffe3,
000000000,000000000,000000000,000000000;
得到的交叉核输出数据为:
Zcross[0:6]=222cddd30,1713c8ec2,0765189ae,
000000000,000000000,000000000,000000000;
在三次调用4点的FCM后,将输出结果通过一个加减法电路(后处理模块),得到后处理模块的结果z偶,z奇和z0,具体为:
Z[0:14]=0e82317dc,11166ee98,0ad5252ad,0b89e4761,
06f9b9064,03b28c4d7,0001cffe3,000000000,000000000,
000000000,000000000,000000000,000000000,000000000,000000000;
通过合并加法模块,得到最后的输出结果:
C=1d3b0c34734902f4b46414d6bb17dc。
以上实施例提供的一种基于karatsuba算法的整数乘装置,用于实现两个以N项多项式形式表示的输入数据的相乘运算,包括重排序模块、预计算模块、乘法模块、后处理模块以及合并加法模块;重排序模块用于重排序N项系数得到重排系数,进而得到偶数核输入系数和奇数核输入系数,预计算模块根据重排系数得到交叉核输入系数;乘法模块包括N/2点的karatsuba乘法子模块,根据偶数核输入系数、奇数核输入系数、交叉核输入系数进行乘法计算,得到偶数核输出数据、奇数核输出数据、交叉核输出数据,通过后处理模块计算得到第零项输出数据、奇数项输出数据以及偶数项输出数据,再通过合并加法模块进行拼接相加,得到乘法结果。所述整数乘装置在进行乘法运算之前,利用深度优先的递归函数对输入进行重排序,降低算法的复杂度;在传统的递归Karatsuba架构的基础上,兼容串行、并行、混合串并行架构,并在乘法模块的输入和输出部分实现了加法器的复用,减小了电路的面积;利用延迟合并的方法,递归过程不进行合并操作,而是对乘法模块输出的结果进行拆分重排序,利用合并加法模块进行合并得到最终结果,和传统的递归Karatsuba架构每次迭代都进行合并操作相比,节约硬件资源,缩短时延。
本申请实施例可以采用硬件描述语言(如VerilogHDL)进行描述,通过现场可编程门阵列(fieldprogrammable gate array,FPGA)、PLD(可编程逻辑器件)、或者实现专用逻辑运算的逻辑电路实现。
本说明书的各个实施例之间相同相似的部分互相参见即可,每个实施例重点介绍的都是与其他实施例不同之处。
Claims (6)
1.一种基于karatsuba算法的整数乘装置,用于实现两个输入数据的相乘,其中,所述两个输入数据分别均分成N项,其特征在于,所述整数乘装置包括:重排序模块、预计算模块、乘法模块、后处理模块以及加法合并模块;
所述重排序模块用于将所述输入数据的N项系数基于预设模型进行重排序,得到重排系数,输出至所述乘法模块和所述预计算模块;
所述预计算模块用于根据所述重排系数进行预计算,得到交叉核输入系数,输出至所述乘法模块,其中所述交叉核输入系数的项数为N/2;
所述乘法模块包括N/2点的karatsuba乘法子模块,所述乘法模块用于根据偶数核输入系数进行计算,得到偶数核输出数据,以及用于根据奇数核输入系数进行计算,得到奇数核输出数据,以及用于根据所述交叉核输入系数进行计算,得到交叉核输出数据;其中,所述偶数核输入系数为所述重排系数的前N/2项,所述奇数核输入系数为所述重排系数的后N/2项;
所述后处理模块用于根据所述偶数核输出数据、所述奇数核输出数据以及所述交叉核输出数据,得到第零项输出数据、奇数项输出数据以及偶数项输出数据,其中,所述第零项输出数据等于所述偶数核输出数据中第一项,所述偶数项输出数据等于所述偶数核输出数据左移一项之后和所述奇数核输出数据相加,所述奇数项输出数据等于所述交叉核输出数据减去所述偶数核输出数据和所述奇数核输出数据;
所述合并加法模块用于根据所述第零项输出数据、所述奇数项输出数据以及所述偶数项输出数据进行拼接和相加,得到乘法结果。
3.根据权利要求1所述的整数乘装置,其特征在于,N=8,所述预计算模块包括第一输入选择器、第二输入选择器、第三输入选择器、第四输入选择器,第一加法器、第二加法器,第一输出选择器,第二输出选择器以及第一寄存器、第二寄存器;
第一输入选择器的输入依次为所述重排系数中的第一个和第三个;第二输入选择器的输入依次为所述重排系数中的第二个和第四个,第三输入选择器的输入依次为所述重排系数中的第五个和第七个,第四输入选择器的输入依次为所述重排系数中的第六个和第八个;
第一输入选择器和第三输入选择器的输出端连接至第一加法器的输入端,第一加法器的输出端连接至第一输出选择器;所述第一加法器的输出端还连接至所述乘法模块,用于输出所述交叉核输入系数中的第三项;
第二输入选择器和第四输入选择器的输出端连接至第二加法器的输入端,第二加法器的输出端连接至第二输出选择器;所述第二加法器的输出端还连接至所述乘法模块,用于输出所述交叉核输入系数中的第二项;
所述第一输出选择器的输入依次为第一加法器的输出和第一寄存器的输出,所述第一输出选择器的输出端连接至所述第一寄存器的输入端;
所述第二输出选择器的输入依次为第二加法器的输出和第二寄存器的输出,所述第二输出选择器的输出端连接至所述第二寄存器的输入端;
所述第一寄存器的输出端还连接至所述乘法模块,用于输出所述交叉核输入系数中的第一项;
所述第二寄存器的输出端还连接至所述乘法模块,用于输出所述交叉核输入系数中的第四项。
4.根据权利要求1所述的整数乘装置,其特征在于,所述乘法模块串行工作,所述乘法模块包括第五输入选择器、N/2点的karatsuba乘法子模块;
所述第五输入选择器的输入依次为偶数核输入系数、奇数核输入系数和所述交叉核输入系数;
第一个迭代周期,所述第五输入选择器输出偶数核输入系数至所述N/2点的karatsuba乘法子模块;所述N/2点的karatsuba乘法子模块根据所述偶数核输入系数进行计算,得到偶数核输出数据;
第二个迭代周期,所述第五输入选择器输出奇数核输入系数至所述N/2点的karatsuba乘法子模块;所述N/2点的karatsuba乘法子模块根据所述奇数核输入系数进行计算,得到奇数核输出数据;
第三个迭代周期,所述第五输入选择器输出交叉核输入系数至所述N/2点的karatsuba乘法子模块;所述N/2点的karatsuba乘法子模块根据所述交叉核输入系数进行计算,得到交叉核输出数据。
5.根据权利要求4的整数乘装置,其特征在于,所述后处理模块包括第六输入选择器、第七输入选择器、第三寄存器、第四寄存器、移位器、第三输出选择器、第四输出选择器、第三加法器、第四加法器;其中,
所述第六输入选择器的输入端依次连接至所述N/2点的karatsuba乘法子模块的输出端和所述第三寄存器的输出端;
所述第七输入选择器的输入端依次连接至所述N/2点的karatsuba乘法子模块的输出端和所述第四寄存器的输出端;
所述第三寄存器的输入端连接至所述第六输入选择器的输出端;所述第三寄存器的输出端还连接至所述移位器的输入端;
所述第四寄存器的输入端连接至所述第七输入选择器的输出端;
所述移位器用于对接收到的数据向左移一位,所述移位器的输出端连接至所述第三输出选择器的输入端;
所述第三输出选择器的输入端依次连接至所述移位器的输出端和所述寄存器的输出端,用于在第二个迭代周期输出所述偶数核输出数据至所述第三加法器;
所述第四输出选择器的输入端依次连接至所述第四寄存器的输出端和所述N/2点的karatsuba乘法子模块的输出端,所述第四输出选择器用于在第三个迭代周期输出所述奇数核输出数据至所述第三加法器;
所述第三加法器用于在所述第三迭代周期输出所述偶数项输出数据至所述合并加法模块;
所述第三加法器的输出端还通过取反电路连接至所述第四加法器的输入端;
所述第四加法器的输入端还连接至所述乘法模块的输出端,所述第四加法器用于在第三迭代周期输出所述奇数项输出数据至所述合并加法模块;
所述加减模块还用于在第一个迭代周期将所述偶数核输出数据中的第一项直接输出至所述合并加法模块。
6.根据权利要求1整数乘装置,其特征在于,所述合并加法模块包括第一拼接电路、进位保存加法器、以及第二拼接电路;
所述拼接电路用于将所述偶数项输出数据依次拼接,得到拼接后的偶数项数据,以及用于将所述奇数项输出数据中将所述最高位替换成零之后依次拼接,得到拼接后的奇数项数据,以及用于将所述偶数项输出数据的最高位和所述奇数项输出数据的最高位依次拼接,得到拼接后的余项数据;
所述进位保存加法器用于将所述拼接后的偶数项数据、所述拼接后的奇数项数据以及所述拼接后的余项数据进行相加,得到中间乘法结果;
所述第二拼接电路用于将所述中间乘法结果和所述第零项输出数据的前w比特进行拼接,得到所述乘法结果,其中w为所述输入数据的每一项的位宽。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211153533.4A CN115525245A (zh) | 2022-09-21 | 2022-09-21 | 基于karatsuba算法的整数乘装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211153533.4A CN115525245A (zh) | 2022-09-21 | 2022-09-21 | 基于karatsuba算法的整数乘装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115525245A true CN115525245A (zh) | 2022-12-27 |
Family
ID=84699509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211153533.4A Pending CN115525245A (zh) | 2022-09-21 | 2022-09-21 | 基于karatsuba算法的整数乘装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115525245A (zh) |
-
2022
- 2022-09-21 CN CN202211153533.4A patent/CN115525245A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7536430B2 (en) | Method and system for performing calculation operations and a device | |
US5506799A (en) | Booth array multiplying circuit having carry correction | |
US4718031A (en) | Multiplying circuit | |
US4797848A (en) | Pipelined bit-serial Galois Field multiplier | |
US4864529A (en) | Fast multiplier architecture | |
CN114968173A (zh) | 基于ntt和intt结构的多项式乘法运算方法和多项式乘法器 | |
JPH0474219A (ja) | 高速乗算器 | |
JPH04135233A (ja) | プログラマブル直列乗算器 | |
US6304133B1 (en) | Moving average filter | |
CN112799634A (zh) | 一种基于基22mdc ntt结构的高性能环多项式乘法器 | |
CN115525245A (zh) | 基于karatsuba算法的整数乘装置 | |
US6668267B1 (en) | Device and method for the implementation of an elementary modular operation according to the Montgomery method | |
JP3660075B2 (ja) | 除算装置 | |
Mekhallalati et al. | Novel radix finite field multiplier for GF (2 m) | |
Wu et al. | Improving common subexpression elimination algorithm with a new gate-level delay computing method | |
Girisankar et al. | Multiplier-free implementation of Galois field Fourier transform on a FPGA | |
CN117806590B (zh) | 一种矩阵乘硬件架构 | |
Chandran et al. | NEDA based hybrid architecture for DCT—HWT | |
CN115587274A (zh) | 一种多项式乘法的加速方法及装置 | |
CN117521581B (zh) | 一种除法器及其运用方法、除法运算系统 | |
JP4408727B2 (ja) | ディジタル回路 | |
Abrahamsson | Architectures for multiplication in Galois rings | |
US11829731B2 (en) | Modular multiplication circuit and corresponding modular multiplication method | |
US6844756B1 (en) | Configurable dedicated logic in PLDs | |
Nair et al. | Optimized FIR filter using distributed parallel architectures for audio application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |