CN111694540B - 一种用于数论变换乘法的基64运算电路 - Google Patents

一种用于数论变换乘法的基64运算电路 Download PDF

Info

Publication number
CN111694540B
CN111694540B CN202010371311.4A CN202010371311A CN111694540B CN 111694540 B CN111694540 B CN 111694540B CN 202010371311 A CN202010371311 A CN 202010371311A CN 111694540 B CN111694540 B CN 111694540B
Authority
CN
China
Prior art keywords
operands
operand
bit
csa
circuit
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.)
Active
Application number
CN202010371311.4A
Other languages
English (en)
Other versions
CN111694540A (zh
Inventor
华斯亮
卞九辉
张静亚
张惠国
刘玉申
徐健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changshu Institute of Technology
Original Assignee
Changshu Institute of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Changshu Institute of Technology filed Critical Changshu Institute of Technology
Priority to CN202010371311.4A priority Critical patent/CN111694540B/zh
Publication of CN111694540A publication Critical patent/CN111694540A/zh
Application granted granted Critical
Publication of CN111694540B publication Critical patent/CN111694540B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • G06F7/503Half or full adders, i.e. basic adder cells for one denomination using carry switching, i.e. the incoming carry being connected directly, or only via an inverter, to the carry output under control of a carry propagate signal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种用于数论变换乘法的基64运算电路,包括64个操作数生成模块,对64个输入数据的每一个进行高位填零后以3比特为一个字分割为22个字,合并输出1路64个96比特操作数、48路22个192比特操作数、3路32个192比特操作数以及12路24个192比特操作数,每个操作数生成模块连接一个操作数模加模块,对每个操作数生成模块的输出的操作数进行模加;模p模块,将每个操作数模加模块输出的数据对质数p取模输出,质数p=264‑232+1。本发明将操作数从现有技术的4096个合并到1504个,大幅减小了计算开销,提高了基64运算的计算效率。

Description

一种用于数论变换乘法的基64运算电路
技术领域
本发明涉及一种运算电路,特别是涉及一种用于数论变换乘法的基64运算电路。
背景技术
大整数乘法除了传统的长乘法,还有
Figure GDA0004083257020000011
–Strassen算法。
Figure GDA0004083257020000012
–Strassen算法的核心思想是:对两个长度为n的大整数分别做一次环上的FFT,转换为频域分布;对两个整数的频域分布做点乘,得到乘积的频域分布;对乘积的频域分布做一次环上的IFFT,由此得到乘积。使用数论变换而不是离散傅立叶变换,可以通过使用模块化算术而不是浮点算术来避免舍入误差问题。数论变换乘法特指
Figure GDA0004083257020000013
–Strassen算法中使用数论变换的乘法。数论变换和逆数论变换作为数论变换乘法中的运算核心,占据了NTT乘法中90%以上的运算量和运算时间,优化数论变换的速度、面积和功耗,对于NTT乘法的整体性能,具有关键性的影响。
一个16777216点的数论变换可以被分解成4级基64运算单元和旋转因子乘法的运算。其中旋转因子的计算可以事先计算好并存于ROM中,需要使用时直接读取即可。基64运算的计算量占数论变换的90%以上,它的优化对数论变换的效率至关重要。
大整数乘法器FPGA设计与实现,谢星等,电子与信息学报,2019年。该论文描述了一种基于
Figure GDA0004083257020000014
–Strassen算法的大整数乘法器硬件架构。论文将65536点的数论变换,分解成64点与1024点的形式,1024点数论变换使用2级基32运算串行构建的结构。其基64运算包括64个移位单元和树形大数求和处理单元。论文所采用的“0”填充的方式,使得每个树形大数求和处理单元,需要处理64个192位的数据,整个基64运算需要处理64*64=4096个操作数。该基64运算电路效率不够高,导致电路实现后所需的功耗和资源比较大。
发明内容
针对上述现有技术的缺陷,本发明提供了一种用于数论变换乘法的基64运算电路,解决基64运算电路功耗及资源开销大的问题。
本发明技术方案如下:一种用于数论变换乘法的基64运算电路,包括:
操作数生成模块,设有64个,64个操作数生成模块编号为Xk,k=0,1,2,...,63,每个所述操作数生成模块包括分割电路、合并电路和填充零电路,所述分割电路对64个输入数据的每一个进行高位填零后以3比特为一个字分割为22个字,分割后的输入数据为xn,m,0≤n<64,0≤m<22,所述合并电路将所述分割为64×22个字的输入数据形成操作数输出,64个所述输出操作数生成模块的所述分割电路中1个输出为64个96比特操作数、48个输出为22个192比特操作数、3个输出为32个192比特操作数以及12个输出为24个192比特操作数,所述填充零电路将所述合并电路输出操作数时的空位填入“0”;
操作数模加模块,对每个所述操作数生成模块的输出的操作数进行模加;
以及,
模p模块,实现将每个所述操作数模加模块输出的数据对质数p取模后输出,所述质数p=264-232+1。
进一步地,所述输出为64个96比特操作数的操作数生成模块编号为X0,每个96比特操作数的后22个字为输入的数据,前10个字被分配为零。
进一步地,所述输出为22个192比特操作数的操作数生成模块编号为Xk,k为奇数,每个操作数OPm由32个不同的输入数据xn,m,0≤n<64,使用相同的字索引m,0≤m<22合并而成,xn,m的最低位在OPm中的位置,是由3×(m+nk)(mod 192)计算所得。
进一步地,所述输出为32个192比特操作数的操作数生成模块编号为X16、X32和X48,32个操作数分为16组,每组2个操作数,OP0和OP1是一组,OP2和OP3是一组,以此类推,每组内的操作数OP2j和OP2j+1由88个不同的输入数据xn,m,4j≤n≤4j+3,0≤m<22合并而成,xn,m的最低位在OP2j和OP2j+1中的位置,是由3×(m+nk)(mod 192)计算所得,xn,m优先置于OP2j中,如OP2j中该位置已经被占用,则置于OP2j+1中对应的位置。
进一步地,所述输出为24个192比特操作数的操作数生成模块编号为除X0、X16、X32和X48外的Xk,k为可被4或8整除的偶数,24个操作数分为4组,OP0至OP5是一组,OP6至OP11是一组,以此类推,每组内的操作数OP6j至OP6j+5由352个不同的输入数据xn,m,16j≤n≤16j+15,0≤m<22合并而成,xn,m的最低位在OP6j至OP6j+5中的位置,是由3×(m+nk)(mod192)计算所得,xn,m以4个字或8个字为周期合并操作数,优先置于OP6j至OP6j+5中索引号较小的OP中。
进一步地,所述输出为22个192比特操作数的操作数生成模块编号为除X0、X16、X32和X48外的Xk,k为不可被4或8整除的偶数,22个操作数分为2组,OP0至OP10是一组,OP11至OP21是一组,每组内的操作数OP11j至OP11j+10由704个不同的输入数据xn,m,32j≤n≤32j+31,0≤m<22合并而成,xn,m的最低位在OP11j至OP11j+10中的位置,是由3×(m+nk)(mod 192)计算所得,xn,m以2个字为周期合并操作数,优先置于OP11j至OP11j+10中索引号较小的OP中。
本发明所提供的技术方案的优点在于:
利用操作数移位后的“零填充”的空位,合并数论变换乘法中基64运算的操作数,将操作数从现有技术的4096个合并到1504个,大幅减小了计算开销,提高了基64运算的计算效率。
附图说明
图1为本发明用于数论变换乘法的基64运算电路的总体结构示意图。
图2为操作数生成模块中分割电路对输入数据填充零分割方法示意图。
图3为操作数生成模块中分割电路示意图。
图4为X0操作数生成模块的合并电路得到的输出数据示意图。
图5为X0操作数生成模块的合并电路示意图。
图6为X1操作数生成模块的合并电路合并后的操作数。
图7为X1操作数生成模块中0号操作数OP0的合并电路。
图8为X16操作数生成模块的合并电路合并后的操作数。
图9为X4操作数生成模块的合并电路合并后的操作数。
图10为X2操作数生成模块的合并电路合并后的操作数。
图11为64操作数模加模块的电路示意图。
图12为22操作数模加模块的电路示意图。
图13为32操作数模加模块的电路示意图。
图14为24操作数模加模块的电路示意图。
具体实施方式
下面结合实施例对本发明作进一步说明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等同形式的修改均落于本申请所附权利要求所限定的范围内。
基64运算的公式如下
Figure GDA0004083257020000031
其中,0≤k<64,p是质数,W64是第64个单位根。
在质数p为Solinas质数,p=264-232+1。该质数支持高效的取模操作:2192modp=1,296modp=-1,264modp=232-1。利用该质数计算得到的单位根W64=23是2的幂次方的特性,可以将以上的乘加运算,方便地转换为移位和模加运算,降低数论变换的计算复杂性。由此,基64运算可以写成
Figure GDA0004083257020000041
将每个xn以3比特为一个基本单位,分成22个字,称为xn,m,0≤m<22。xn可以表示为
Figure GDA0004083257020000042
其中m表示第m个字,xn的数据宽度是64比特,xn,m的数据宽度是3比特,xn,21的有效数据位是1比特。将输入数据分割后,基64运算可以写成以下公式,利用“0填充”可以合并移位后的操作数,减少模加的运算操作数。
Figure GDA0004083257020000043
请结合图1所示,本实施例涉及的一种用于数论变换乘法的基64运算电路,包括X0至X63共64个操作数生成模块、操作数模加模块和模p模块,其中操作数模加模块根据输入操作数的数量不同分为64操作数模加模块,22操作数模加模块,32操作数模加模块,24操作数模加模块。电路结构上输入的64个64位比特数据作为每一个操作数生成模块的输入,每个操作数生成模块后连接操作数模加模块,每个操作数模加模块后连接模p模块。
操作数生成模块包括分割电路、合并电路和填充零电路,依次对输入的64个64位比特数据进行分割、合并、填充零处理,形成操作数。请结合图2及图3所示,分割电路将每个64比特输入数据xn的最高2比特填充0,形成66比特数据,然后分割成22个字,每个字包含3比特,第22个字因为最高2比特填充0,所以有效数据位是1比特。数据分割能够很容易的用现有硬件实现,几乎没有硬件开销。
以Xk,k=0,1,2,...,15对操作数生成模块编号,每个操作数生成模块中的合并电路不同,但可以按照类型分成4组,每组内的电路相似。
组一:X0,共1个;组二:X1、X3、X5等k为奇数的,共8个;组三:X16、X32和X48,共3个;组四:除X0、X16、X32和X48外的Xk,k为可被4或8整除的偶数,有X4、X8、X12,共12个;组五:除X0、X16、X32和X48外的Xk,k为不可被4或8整除的偶数,有X2、X6、X10等,共16个。
以下分组解释每组的数据合并操作:
组一,即X0操作数生成模块的合并电路。
操作数实际上是对齐的输入数据。换句话说,每个操作数都是从分割电路输出数据的22个连续字中派生得出的。合并电路输出为16个96比特的操作数,每个新的96比特操作数由32个字组成,后22个字为输入的数据,前10个字被分配为零。如图4所示,j号操作数OPj有96比特,是将xn置于低66位,高30位填充零得到的,合并电路如图5所示。
组二,X1、X3、X5等奇数操作数生成模块的合并电路。
对于k为奇数的Xk操作数生成模块的合并电路,输入是64个64比特输入数据,输出是22个192比特操作数。每个操作数OPm由64个不同的数据xn,m,0≤n<64,使用相同的字索引m,0≤m<22合并而成。xn,m的最低位在OPm中的位置,是由3×(m+nk)(mod 192)计算所得。以下以X1为例说明输出的操作数构成:
X1操作数生成模块的合并电路合并后的操作数,如图6所示。合并后共有22个操作数,每个操作数由64个不同的数据xn,m,0≤n<64,使用相同的字索引m,0≤m<22合并而成。x0,0的最低位在OP0中的位置为3×(0+0×1)(mod 192)=0,x1,0的最低位在OP0中的位置为3×(0+1×1)(mod 192)=3,而x0,1的最低位在OP1中的位置为3×(1+0×1)(mod 192)=3,x63,1的最低位在OP1中的位置为3×(1+63×1)(mod 192)=0。X1操作数生成模块中0号操作数OP0的合并电路如图7所示。
其余的操作数生成模块的合并电路输出的操作数依次类推。
组三,X16、X32和X48操作数生成模块的合并电路。
输入是64个64比特输入数据,输出是32个192比特操作数。32个操作数分为16组,每组2个操作数,OP0和OP1是一组,OP2和OP3是一组,以此类推。每组内的操作数OP2j和OP2j+1由88个不同的数据xn,m,4j≤n≤4j+3,0≤m<22合并而成。xn,m的最低位在OP2j和OP2j+1中的位置,是由33×(m+nk)(mod 192)计算所得。xn,m优先置于OP2j中,如OP2j中该位置已经被占用,则置于OP2j+1中对应的位置。其余的空位全部填“0”。以X16操作数生成模块的合并电路输出数据为例,如图8所示,有16组操作数,每组包括2个合并后的操作数。每个新的192位操作数由64个字组成,它们来自4个不同的输入数据。
组四,除X0、X16、X32和X48外的Xk,k为可被4或8整除的偶数操作数生成模块的合并电路。
对于k为除0、16、32或48以外的可被4或8整除的偶数的Xk操作数生成模块的合并电路,输入是64个64比特输入数据,输出是24个192比特操作数。24个操作数分为4组,每组6个操作数,OP0至OP5是一组,OP6至OP11是一组,以此类推。每组内的操作数OP6j至OP6j+5由352个不同的数据xn,m,16j≤n≤16j+15,0≤m<22合并而成。xn,m的最低位在OP6j至OP6j+5中的位置,是由3×(m+nk)(mod 192)计算所得。xn,m以4个字或8个字为周期合并操作数,优先置于OP6j至OP6j+5中索引号较小的OP中。其余的空位全部填“0”。以X4操作数生成模块的合并电路输出数据为例,如图9所示,有4组操作数,每组包括6个合并后的操作数。第一组包含了OP0至OP5;第二组包括OP6至OP11,以此类推。每个新的192位操作数由64个字组成,它们来自16个不同的输入数据,每个输入数据提供4或8个连续的字。
组五,除X0、X16、X32和X48外的Xk,k为不可被4或8整除的偶数操作数生成模块的合并电路。
对于k为除0、16、32或48以外的不可被4或8整除的偶数的Xk操作数生成模块的合并电路,输入是64个64比特输入数据,输出是22个192比特操作数。22个操作数分为2组,每组11个操作数,OP0至OP10是一组,OP11至OP21是一组。每组内的操作数OP11j至OP11j+10由704个不同的输入数据xn,m,32j≤n≤32j+31,0≤m<22合并而成,xn,m的最低位在OP11j至OP11j+10中的位置,是由3×(m+nk)(mod 192)计算所得,xn,m以2个字为周期合并操作数,优先置于OP11j至OP11j+10中索引号较小的OP中。其余的空位全部填“0”。以X2操作数生成模块的合并电路输出数据为例,如图10所示,有2组操作数,每组包括11个合并后的操作数。第一组包含了OP0至OP10;第二组包括OP11至OP21,以此类推。每个新的192位操作数由64个字组成,它们来自32个不同的输入数据,每个输入数据提供2个连续的字。
根据上述不同组的操作数生成模块得到操作数数量不同,操作数模加模块包括64操作数模加模块,22操作数模加模块,32操作数模加模块,24操作数模加模块。
64操作数模加模块如图11所示,其中CSA表示保留进位加法器,CPA表示行波进位加法器,“<<1”表示将保留进位加法器的进位端(Carry端)向左移位1比特。64个操作数中保留4i,i=1,2,...,16位置的操作数,其余的操作数每三个输入第一层CSA;第一层CSA的进位端向左移位1比特与其和数端及4i,i=1,2,...,16位置的操作数输入第二层CSA;将每两个第二层CSA的和数端及其中一个第二层CSA的进位端向左移位1比特输入第三层CSA;第三层CSA的进位端向左移位1比特、第三层CSA的和数端及每两个第二层CSA中另一个第二层CSA的进位端向左移位1比特输入第四层CSA;将每两个第四层CSA的和数端及其中一个第四层CSA的进位端向左移位1比特输入第五层CSA;第五层CSA的进位端向左移位1比特、第五层CSA的和数端及每两个第四层CSA中另一个第四层CSA的进位端向左移位1比特输入第六层CSA;将每两个第六层CSA的和数端及其中一个第六层CSA的进位端向左移位1比特输入第七层CSA;第七层CSA的进位端向左移位1比特、第七层CSA的和数端及每两个第六层CSA中另一个第六层CSA的进位端向左移位1比特输入第八层CSA;第八层共两个CSA,将第二个CSA的进位端向左移位1比特、第二个CSA的和数端及第一个CSA的和数端输入第九层CSA(共1个);第九层的CSA进位端向左移位1比特、和数端以及第八层第一个CSA的进位端向左移位1输入第十层CSA;第十层的CSA进位端向左移位1比特及和数端输入CPA,结果再输入模加模块。模加模块实现将输入的193比特宽度数据,实现低192位数据与第193位数据相加操作,输出结果与输入数据对质数p同余。
22操作数模加模块如图12所示,其中CSA表示保留进位加法器,CPA表示行波进位加法器,“ROL 1-bit”表示将保留进位加法器的进位端(Carry端)向左循环移位1比特。32个操作数每11个为一组,两组操作数进行以下相同操作:11个操作数中1、2、3;5、6、7;9、10、11分别输入三个第一层CSA,第一层CSA中第一个CSA的和数端、操作数4和第一层CSA中第二个CSA的进位端向左循环移位1比特输入第二层第一个CSA,操作数8、第一层CSA中第三个CSA的进位端向左循环移位1比特及其和数端输入第二层第二个CSA,第一层CSA中第一个CSA的进位端向左循环移位1比特、第二层第一个CSA的进位端向左循环移位1比特及其和数端输入第三层第一个CSA,第一层CSA中第二个CSA的和数端、第二层第二个CSA的进位端向左循环移位1比特及其和数端输入第三层第二个CSA;第三层CSA中第一个CSA的和数端、第三层第二个CSA的进位端向左循环移位1比特及其和数端输入第四层CSA;第三层CSA中第一个CSA的进位端向左循环移位1比特、第四层CSA的进位端向左循环移位1比特及其和数端输入第五层CSA。第一组的第五层CSA的和数端、第二组的第五层CSA的进位端向左循环移位1比特及其和数端输入第六层CSA;第一组的第五层CSA的进位端向左循环移位1比特、第六层CSA的进位端向左循环移位1比特及其和数端输入第七层CSA;第七层的CSA进位端向左循环移位1比特及和数端输入CPA,结果再输入模加模块。模加模块实现将输入的193比特宽度数据,实现低192位数据与第193位数据相加操作,输出结果与输入数据对质数p同余。
32操作数模加模块如图13所示,其中CSA表示保留进位加法器,CPA表示行波进位加法器,“ROL 1-bit”表示将保留进位加法器的进位端(Carry端)向左循环移位1比特。32个操作数中保留4i,i=1,2,...,8位置的操作数,其余的操作数每三个输入第一层CSA;第一层CSA的进位端向左移位1比特与其和数端及4i,i=1,2,...,8位置的操作数输入第二层CSA;将每两个第二层CSA的和数端及其中一个第二层CSA的进位端向左移位1比特输入第三层CSA;第三层CSA的进位端向左移位1比特、第三层CSA的和数端及每两个第二层CSA中另一个第二层CSA的进位端向左移位1比特输入第四层CSA;将每两个第四层CSA的和数端及其中一个第四层CSA的进位端向左移位1比特输入第五层CSA;第五层CSA的进位端向左移位1比特、第五层CSA的和数端及每两个第四层CSA中另一个第四层CSA的进位端向左移位1比特输入第六层CSA;第六层共两个CSA,将第二个CSA的进位端向左移位1比特、第二个CSA的和数端及第一个CSA的和数端输入第七层CSA(共1个);第七层的CSA进位端向左移位1比特、和数端以及第六层第一个CSA的进位端向左移位1输入第八层CSA;第八层的CSA进位端向左移位1比特及和数端输入CPA,结果再输入模加模块。模加模块实现将输入的193比特宽度数据,实现低192位数据与第193位数据相加操作,输出结果与输入数据对质数p同余。
24操作数模加模块如图14所示,其中CSA表示保留进位加法器,CPA表示行波进位加法器,“ROL 1-bit”表示将保留进位加法器的进位端(Carry端)向左循环移位1比特。24个操作数每三个输入第一层CSA,将每两个第一层CSA的和数端及其中一个第二层CSA的进位端向左循环移位1比特输入第二层CSA;第二层CSA的进位端向左循环移位1比特、第二层CSA的和数端及每两个第一层CSA中另一个第一层CSA的进位端向左循环移位1输入第三层CSA;将每两个第三层CSA的和数端及其中一个第三层CSA的进位端向左循环移位1比特输入第四层CSA;第四层CSA共两个CSA,将第二个CSA的进位端向左循环移位1比特、第二个CSA的和数端及第一个CSA的和数端输入第四层CSA;第四层CSA的进位端向左循环移位1比特、第四层CSA的和数端及每两个第三层CSA中另一个第三层CSA的进位端向左循环移位1比特输入第五层CSA;第五层CSA共两个CSA,将第二个CSA的进位端向左循环移位1比特、第二个CSA的和数端及第一个CSA的和数端输入第六层CSA(共1个);第六层的CSA进位端向左循环移位1比特、和数端以及第五层第一个CSA的进位端向左循环移位1比特输入第七层CSA;第七层的CSA进位端向左循环移位1比特及和数端输入CPA,结果再输入模加模块。模加模块实现将输入的193比特宽度数据,实现低192位数据与第193位数据相加操作,输出结果与输入数据对质数p同余。
模p模块实现对输入的数据对质数p取模。

Claims (6)

1.一种用于数论变换乘法的基64运算电路,其特征在于,操作数生成模块,设有64个,64个操作数生成模块编号为Xk,k=0,1,2,...,63,每个所述操作数生成模块包括分割电路、合并电路和填充零电路,所述分割电路对64个输入数据的每一个进行高位填零后以3比特为一个字分割为22个字,分割后的输入数据为xn,m,0≤n<64,0≤m<22,所述合并电路将所述分割为64×22个字的输入数据形成操作数输出,64个所述操作数生成模块的所述合并电路中1个输出为64个96比特操作数、48个输出为22个192比特操作数、3个输出为32个192比特操作数以及12个输出为24个192比特操作数,所述填充零电路将所述合并电路输出操作数时的空位填入“0”;操作数模加模块,对每个所述操作数生成模块的输出的操作数进行模加;
以及,
模p模块,实现将每个所述操作数模加模块输出的数据对质数p取模后输出,所述质数p=264-232+1。
2.根据权利要求1所述的用于数论变换乘法的基64运算电路,其特征在于,所述输出为64个96比特操作数的操作数生成模块编号为X0,每个96比特操作数的后22个字为输入的数据,前10个字被分配为零。
3.根据权利要求1所述的用于数论变换乘法的基64运算电路,其特征在于,所述输出为22个192比特操作数的操作数生成模块编号为Xk,k为奇数,每个操作数OPm由64个不同的输入数据xn,m,0≤n<64,使用相同的字索引m,0≤m<22合并而成,xn,m的最低位在OPm中的位置,是由3×(m+nk)(mod 192)计算所得。
4.根据权利要求1所述的用于数论变换乘法的基64运算电路,其特征在于,所述输出为32个192比特操作数的操作数生成模块编号为X16、X32和X48,32个操作数分为16组,每组2个操作数,OP0和OP1是一组,OP2和OP3是一组,以此类推,每组内的操作数OP2j和OP2j+1由88个不同的输入数据xn,m,4j≤n≤4j+3,0≤m<22合并而成,xn,m的最低位在OP2j和OP2j+1中的位置,是由3×(m+nk)(mod 192)计算所得,xn,m优先置于OP2j中,如OP2j中该位置已经被占用,则置于OP2j+1中对应的位置。
5.根据权利要求1所述的用于数论变换乘法的基64运算电路,其特征在于,所述输出为24个192比特操作数的操作数生成模块编号为除X0、X16、X32和X48外的Xk,k为可被4或8整除的偶数,24个操作数分为4组,OP0至OP5是一组,OP6至OP11是一组,以此类推,每组内的操作数OP6j至OP6j+5由352个不同的输入数据xn,m,16j≤n≤16j+15,0≤m<22合并而成,xn,m的最低位在OP6j至OP6j+5中的位置,是由3×(m+nk)(mod 192)计算所得,xn,m以4个字或8个字为周期合并操作数,优先置于OP6j至OP6j+5中索引号较小的OP中。
6.根据权利要求1所述的用于数论变换乘法的基64运算电路,其特征在于,所述输出为22个192比特操作数的操作数生成模块编号为除X0、X16、X32和X48外的Xk,k为不可被4或8整除的偶数,22个操作数分为2组,OP0至OP10是一组,OP11至OP21是一组,每组内的操作数OP11j至OP11j+10由704个不同的输入数据xn,m,32j≤n≤32j+31,0≤m<22合并而成,xn,m的最低位在OP11j至OP11j+10中的位置,是由3×(m+nk)(mod 192)计算所得,xn,m以2个字为周期合并操作数,优先置于OP11j至OP11j+10中索引号较小的OP中。
CN202010371311.4A 2020-05-06 2020-05-06 一种用于数论变换乘法的基64运算电路 Active CN111694540B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010371311.4A CN111694540B (zh) 2020-05-06 2020-05-06 一种用于数论变换乘法的基64运算电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010371311.4A CN111694540B (zh) 2020-05-06 2020-05-06 一种用于数论变换乘法的基64运算电路

Publications (2)

Publication Number Publication Date
CN111694540A CN111694540A (zh) 2020-09-22
CN111694540B true CN111694540B (zh) 2023-04-21

Family

ID=72476916

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010371311.4A Active CN111694540B (zh) 2020-05-06 2020-05-06 一种用于数论变换乘法的基64运算电路

Country Status (1)

Country Link
CN (1) CN111694540B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866875A (zh) * 2012-10-05 2013-01-09 刘杰 通用多操作数加法器
CN103870438A (zh) * 2014-02-25 2014-06-18 复旦大学 一种利用数论变换计算循环卷积的电路结构
CN110543291A (zh) * 2019-06-11 2019-12-06 南通大学 有限域大整数乘法器及基于ssa算法的大整数乘法的实现方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8577952B2 (en) * 2008-12-08 2013-11-05 International Business Machines Corporation Combined binary/decimal fixed-point multiplier and method
EP3610382A4 (en) * 2017-04-11 2021-03-24 The Governing Council of the University of Toronto HOMOMORPHIC PROCESSING UNIT (HPU) TO ACCELERATE SECURE CALCULATIONS USING HOMORPHIC ENCRYPTION
US10162633B2 (en) * 2017-04-24 2018-12-25 Arm Limited Shift instruction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866875A (zh) * 2012-10-05 2013-01-09 刘杰 通用多操作数加法器
CN103870438A (zh) * 2014-02-25 2014-06-18 复旦大学 一种利用数论变换计算循环卷积的电路结构
CN110543291A (zh) * 2019-06-11 2019-12-06 南通大学 有限域大整数乘法器及基于ssa算法的大整数乘法的实现方法

Also Published As

Publication number Publication date
CN111694540A (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
Berg Introduction to the operational calculus
CN100388630C (zh) 具有矩阵转换技术的循环冗余码计算方法及***
CN101902228B (zh) 快速循环冗余校验编码方法及装置
Craigen et al. Complex Golay sequences: structure and applications
CN106951211B (zh) 一种可重构定浮点通用乘法器
CN112039535B (zh) 一种基于准循环生成矩阵的码率兼容ldpc编码器
CN102332924A (zh) 并行至串行转换装置
CN104617959A (zh) 一种基于通用处理器的ldpc编译码方法
CN108008932A (zh) 除法合成
Al-Khaleel et al. Fast and compact binary-to-BCD conversion circuits for decimal multiplication
CN103942028A (zh) 应用在密码技术中的大整数乘法运算方法及装置
CN101295237B (zh) 求商和余数的高速除法器
CN102420674A (zh) 子块交织方法及并行子块交织器
CN111694540B (zh) 一种用于数论变换乘法的基64运算电路
CN111694541B (zh) 一种用于数论变换乘法的基32运算电路
JPS6382546A (ja) ディスクリート変換を計算するための装置
CN103955585B (zh) 一种适用于低功耗容错电路的fir滤波器结构
CN1801079A (zh) 优化的标准带符号数字的系数乘法器
CN102857240A (zh) 循环右移累加基的深空通信中ldpc编码器和编码方法
CN102004720B (zh) 可变长快速傅立叶变换电路及实现方法
CN111694542B (zh) 一种用于数论变换乘法的基16运算电路
JP2002149399A (ja) プロセッサ用命令セット
Brumer et al. Corrigendum to “Paramodular abelian varieties of odd conductor
CN102868412A (zh) 基于并行滤波的深空通信中ldpc编码器和编码方法
Mansour et al. Two further generalizations of the Calkin–Wilf tree

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
CB03 Change of inventor or designer information

Inventor after: Hua Siliang

Inventor after: Bian Jiuhui

Inventor after: Zhang Jingya

Inventor after: Zhang Huiguo

Inventor after: Liu Yushen

Inventor after: Xu Jian

Inventor before: Hua Siliang

Inventor before: Bian Jiuhui

Inventor before: Zhang Jingya

Inventor before: Zhang Huiguo

Inventor before: Liu Yushen

Inventor before: Xu Jian

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant