CN114185514B - 一种基于费马模数的多项式乘法器 - Google Patents

一种基于费马模数的多项式乘法器 Download PDF

Info

Publication number
CN114185514B
CN114185514B CN202111521452.0A CN202111521452A CN114185514B CN 114185514 B CN114185514 B CN 114185514B CN 202111521452 A CN202111521452 A CN 202111521452A CN 114185514 B CN114185514 B CN 114185514B
Authority
CN
China
Prior art keywords
data
unit
polynomial
period
address
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
CN202111521452.0A
Other languages
English (en)
Other versions
CN114185514A (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.)
Hefei University of Technology
Original Assignee
Hefei University 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 Hefei University of Technology filed Critical Hefei University of Technology
Priority to CN202111521452.0A priority Critical patent/CN114185514B/zh
Publication of CN114185514A publication Critical patent/CN114185514A/zh
Application granted granted Critical
Publication of CN114185514B publication Critical patent/CN114185514B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

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

Abstract

本发明公开了一种基于费马模数的多项式乘法器,包括:控制单元、地址生成单元、存储单元、存储管理单元、旋转因子生成单元、蝶形计算单元、换向器单元和点乘单元。其中,控制单元负责生成控制信号,调节工作状态;地址生成单元负责生成读写地址;旋转因子生成单元负责生成旋转因子;存储管理单元负责管理存储单元的访存方向;存储单元由多块存储块组成,负责存储源数据,中间过程数据和结果数据;蝶形计算单元实现向量基2×2模式下的蝶形运算;换向器负责将蝶形运算后的结果数据重排序。本发明旨在于通过优化同址FNT算法,解决同址计算与蝶形单元流水计算冲突的问题,以此来减小存储资源消耗、提高计算速度和多项式乘法器的性能。

Description

一种基于费马模数的多项式乘法器
技术领域
本发明属于全同态加密中优化多项式乘法器硬件电路的设计领域,具体说是基于费马模数的多项式乘法器。
背景技术
RLWE密码***中最耗时的操作是多项式乘法。到目前为止,对多项式乘法的加速进行了大量的研究。目前的大多数多项式乘法利用教科书中的多项式算法(SPMA)或数论变换(NTT)加实现。SPMA是简单且直接的硬件实现,而NTT需要复杂的预计算和数组重排序,把多项式乘法时间复杂度从二次降到准线性来实现高性能。与其他算法相比,SPMA算法结构简单,使用的硬件最少,但吞吐量低,NTT的吞吐是SPMA的9倍。然而高吞吐的NTT方法需要以硬件资源为代价,总之,SPMA和NTT在时间和面积上处于两个极端。FNT算法是介于两个极端之间的另一种候选算法,在对R-LWE的FPGA实现的研究中并不广泛。硬件实现2D-FNT上,除了传统的行列型方法,提出了基于向量基算法实现2D-FNT,减少了过程中的乘法操作次数。行列型和向量基方法都是采用短序列FNT算法来构造长序列FNT算法,虽然可以有效降低算法的时间复杂度,但也会使数据交互变得困难。长序列的FNT算法一旦被拆分,输入数据就需要根据拆分结构,进行相应的顺序调整,特别是当FNT算法输入的数据量非常多时,数据交互过程就变得更加复杂,同时也会占据很多资源。
发明内容
本发明为克服现有技术的不足之处,提出一种基于费马模数的多项式乘法器,以期能通过优化同址FNT算法,解决同址计算与蝶形单元流水计算冲突的问题,从而减小存储资源消耗、并提高计算速度和多项式乘法器的性能。
为达到上述发明目的,本发明所采用的技术方案如下:
本发明一种基于费马模数的多项式乘法器的特点包括:控制单元、地址生成单元、存储单元、存储管理单元、旋转因子生成单元、蝶形计算单元、换向器单元和点乘单元;
所述存储单元由多个共享地址线的小存储块组成,其中,4个小存储块存储有N×N的多项式X1,另外4个小存储块存储有N×N的多项式X2;
所述控制单元在所述存储单元完成多项式的存储后,在当前第i个周期下发送FNT正变换的使能信号给地址生成单元;
所述地址生成单元根据所述FNT正变换的使能信号和无冲突访存规则生成当前第i个周期下的读写地址w和标签y,并将所述读写地址w发送给所述存储单元和所述旋转因子生成单元,将所述标签y发送给所述存储管理单元和所述旋转因子生成单元;
所述存储单元当前第i个周期下根据所述读写地址w读取多项式X1中的4个数据和多项式X2中的4个数据并发送给所述存储管理单元;
所述点乘单元从所述存储单元中获取多项式X1中的4个数据和多项式X2中的4个数据并进行点乘运算,得到当前第i个周期下的正变换时的点乘计算结果并发送给所述存储管理单元;
所述存储管理单元根据所述标签y中的第一位y[0],并利用二选一选择器选择N×N的多项式X1中的4个数据作为一组数据并输出给所述蝶形计算单元;
所述旋转因子生成单元根据所述读写地址w和所述标签y中的第三位y[2]生成4个正变换旋转因子并作为一组因子;
所述蝶形计算单元对所述正变换时的一组数据中的每个数据和一组因子中对应的一个因子分别进行加法、移位和取模操作,得到在当前第i个周期下的4个正变换时的计算数据;
所述换向器单元由4个4选1的数据选择器、6个数据延迟器组成;
第一4选1的数据选择器在当前第i个周期下接收4个计算数据的第一个计算数据并利用第一数据延迟器进行3个延迟;
第二4选1的数据选择器在当前第i个周期下接收4个计算数据的第二个计算数据并利用第二数据延迟器进行1个延迟和第一个数据延迟器进行3个延迟;
第三4选1的数据选择器在当前第i个周期下接收4个计算数据的第三个计算数据并利用第四数据延迟器进行2个延迟和第一个数据延迟器进行3个延迟;
第四4选1的数据选择器在当前第i个周期下接收4个计算数据的第四个计算数据并利用第六数据延迟器进行3个延迟和第一个数据延迟器进行3个延迟;
在第i+1、第i+2、第i+3个周期下按照同样的方式对第二组、第三组、第四组数据进行相同的处理;
所述换向器单元将4个周期所接收的计算数据一起组成16个数据的正变换时的矩阵,分别在第i+3个周期下,输出第一行的四个数据给所述存储管理单元;在第i+4个周期下,输出第二行的四个数据给所述存储管理单元;在第i+5个周期下,输出第三行的四个数据给所述存储管理单元;在第i+6个周期下,输出第四行的四个数据给所述存储管理单元,从而对矩阵进行转置,得到正变换时的重排序数据;
所述存储管理单元根据所述标签y中的第二位y[1],在第i+6个周期下的正变换时的点乘计算结果和所述正变换时的重排序数据中选择所述正变换时的重排序数据输出,再根据第一位y[0],将所述正变换时的重排序数据写入到所述存储单元的读写地址w中,从而完成多项式X1中一组数据的正变换,进而完成多项式X1中所有数据的正变换以及多项式X2的正变换;
所述控制单元在第j个周期下将完成多项式X1和多项式X2正变换后的数据存储到所述存储单元,并发送点乘使能信号给所述地址生成单元;
所述地址生成单元根据所述点乘使能信号生成一个读写地址w’和两个标签y’、z,并将所述读写地址w’发送给所述存储单元,将标签y’和标签z发送给所述存储管理单元;
所述存储单元根据所述读写地址w’读取所述存储单元中的多项式X1和多项式X2正变换后的数据;
所述存储管理单元根据标签z,通过四选一选择器选择所述多项式X1和多项式X2正变换后的数据中各自的一个数据输出到所述点乘单元进行点乘运算,得到第j个周期下的点乘计算结果并发送给所述存储管理单元;
所述存储管理单元根据标签y’中的第二位y’[1],通过二选一选择器选择所述第j个周期下的点乘计算结果输出,再根据标签y’中的第一位标签y’[0],通过二选一选择器将所述第j个周期下的点乘计算结果存入所述存储单元的读写地址w’中,完成点乘运算;
所述控制单元在所述存储单元完成所述第j个周期下的点乘计算结果存储后,在第k个周期完成所有点乘计算结果的存储后,发送FNT逆变换的使能信号给所述地址生成单元;
所述地址生成单元根据所述FNT逆变换脉冲使能信号和无冲突访存规则生成第k个周期的读写地址w”和标签y”,并将所述读写地址w”发送给所述存储单元和所述旋转因子生成单元,将所述标签y”发送给所述存储管理单元和所述旋转因子生成单元;
所述存储单元根据所述读写地址w”读取第k个周期下点乘计算结果的一组数据到所述存储管理单元;
所述存储管理单元根据标签y”中的第一位y”[0],通过二选一选择器选择所述点乘计算结果的逆变换时的一组数据输出到所述蝶形计算单元;
所述旋转因子生成单元根据所述读写地址w”和标签y”中的第三位y[2]生成一组逆变换旋转因子;
所述蝶形计算单元对逆变换时的一组数据中的每个数据和一组逆变换旋转因子对应的一个因子分别进行加法、移位和取模操作,得到第k个周期下的4个逆变换时的计算数据;
所述换向器单元将4个周期下接收到的4个逆变换时的计算数据组成16个数据的逆变换时的矩阵再进行转置后再分4个周期分别输出一组转置后的逆变换时的重排序数据;
所述存储管理单元根据标签y”中的第二位y[1],选择所述逆变换时的重排序数据输出,再根据标签y”中的第一位y[0],将所述逆变换时的重排序数据写入到存储单元的所述读写地址w”,从而完成所述点乘计算结果的一组数据的逆变换,进而完成点乘计算结果所有数据的逆变换,实现多项式乘法功能。
本发明所述的基于费马模数的多项式乘法器的特点也在于,所述无冲突访存规则是按如下步骤进行:
步骤1、根据N×N的多项式X1和多项式X2的行列数,利用式(1)计算变量M和变量L:
步骤2、定义当前循环次数为m、最大循环次数为M,并初始化m=1;
步骤2.1、定义第m次循环的变量Bm,并初始化Bm=2M-m
步骤2.2、定义第m次循环的变量B’m,并初始化B’m=2M-m-1
步骤3、定义第m次循环的变量Am,并初始化Am=0;
步骤3.1、定义第m次循环的变量A’m,并初始化A’m=0;
步骤4、定义第m次循环的前四级寻址的行地址Cm,并初始化Cm=Am
步骤4.1、定义第m次循环的前四级寻址的列地址C’m,并初始化C’m=A’m
步骤5、定义变量s,并初始化s=0;
步骤5.1、定义变量t,并初始化t=0;
步骤6、生成输出读写地址w{Cm+s×B’m,C’m+t×B’m},并将Cm+s×B’m赋值给Cm,将C’m+t×B’m赋值给C’m
步骤7、将t+1赋值给t,判断t=2是否成立,若成立,则执行步骤7.1;否则,返回到步骤6顺序执行;
步骤7.1、将s+1赋值给s,判断s=2是否成立,若成立,执行步骤8;否则,返回到步骤5.1顺序执行;
步骤8、将C’m+1赋值给C’m,判断C’m=A’m+B’m是否成立,若成立,则执行步骤8.1;否则,返回到步骤5顺序执行;
步骤8.1、将Cm+1赋值给Cm,判断Cm=Am+Bm是否成立,若成立,则执行步骤9;否则,返回到步骤4.1顺序执行;
步骤9、将C’m+Bm赋值给C’m,判断C’m>L-1是否成立,若成立,则执行步骤9.1;否则,返回到步骤4顺序执行;
步骤9.1、将Cm+Bm赋值给Cm,判断Cm>L-1是否成立,若成立,则执行步骤10;否则,返回到步骤3.1顺序执行;
步骤10、将m+1赋值给m,判断m>M-1是否成立,若成立,则表示完成前四级的寻址和计算,并执行步骤11;否则,返回到步骤3顺序执行;
步骤11、定义第m次循环的第五级寻址的行地址Cm,并初始化Cm=0;
步骤11.1、定义第m次循环的第五级寻址的列地址C’m,并初始化C’m=0;
步骤12、生成输出读写地址w{Cm,C’m};
步骤13、将C’m+1赋值给C’m,判断C’m>L-1是否成立,若成立,则执行步骤13.1;否则,返回到步骤12顺序执行;
步骤13.1、将Cm+1赋值给Cm,判断Cm>L-1是否成立,若成立,则表示完成一次完整FNT变换的地址产生;否则,返回到步骤11.1顺序执行。
与现有技术相比,本发明的有益技术效果体现在:
1、本发明提出了硬件友好的基于同址计算的FNT算法,针对流水计算的特点改进了访存规则,避免了同址计算与蝶形流水计算产生冲突,减少了存储资源消耗,提高了计算速度。
2、本发明使用资源共享的方法,复用硬件电路分时计算多项式1和2,进一步提高了资源效率,降低了硬件资源消耗。
3、本发明采用了模数P=65537,保证了蝶形计算的旋转因子都为2的幂次方,从而在实现蝶形计算时,只需要通过加法和移位实现,极大的节省了硬件资源,提高了计算的速度。
附图说明
图1为本发明采用的基于费马模数的多项式乘法器的硬件结构图;
图2为本发明存储管理单元内部构造图;
图3为本发明换向器内部结构图;
图4为本发明无冲突访存规则算法流程图;
图5为本发明无冲突访存规则寻址图。
具体实施方式
本实施例中,如图1所示,一种基于费马模数的多项式乘法器的硬件电路,其结构组成为:控制单元、地址生成单元、点乘单元、旋转因子生成单元、存储管理单元、存储单元、蝶形计算单元和换向器单元。在该乘法器中,使用FNT算法代替NTT算法和使用无冲突访存规则来实现多项式乘法器。FNT算法通过降低预计算,同时保留数组重排序来降低硬件资源使用和保持较快的计算速度。FNT架构相比SPMA和NTT具有更好的面积时间效率。利用无冲突访存规则优化向量基2×2的32×32FNT的数据交换过程,保证蝶形计算单元的4个输入输出流水计算。
存储单元由8个共享地址线的小存储块组成,其中,4个小存储块存储有N×N=32×32的多项式X1的数据,另外4个小存储块存储有32×32的多项式X2的数据;
控制单元在存储单元完成多项式的存储后,在当前第i个周期下发送FNT正变换的使能信号给地址生成单元;
地址生成单元根据FNT正变换的使能信号和无冲突访存规则生成当前第i个周期下的8位的读写地址w和标签y,并将读写地址w发送给存储单元和旋转因子生成单元,将标签y发送给存储管理单元和旋转因子生成单元;
存储单元当前第i个周期下根据读写地址w读取多项式X1中的4个数据和多项式X2中的4个数据并发送给存储管理单元;
点乘单元从存储单元中获取多项式X1中的4个数据和多项式X2中的4个数据并进行点乘运算,得到当前第i个周期下的正变换时的点乘计算结果并发送给存储管理单元;
如图2所示,存储管理单元根据标签y中的第一位y[0],并利用二选一选择器选择32×32的多项式X1中的4个数据作为一组数据并输出给蝶形计算单元;
旋转因子生成单元根据读写地址w和标签y中的第三位y[2]生成4个正变换旋转因子并作为一组因子;
蝶形计算单元对正变换时的一组数据中的每个数据和一组因子中对应的一个因子分别进行加法、移位和取模操作,得到在当前第i个周期下的4个正变换时的计算数据;
如图3所示,换向器单元由4个4选1的数据选择器、6个数据延迟器组成;
第一4选1的数据选择器在当前第i个周期下接收4个计算数据的第一个计算数据并利用第一数据延迟器进行3个延迟;
第二4选1的数据选择器在当前第i个周期下接收4个计算数据的第二个计算数据并利用第二数据延迟器进行1个延迟和第一个数据延迟器进行3个延迟;
第三4选1的数据选择器在当前第i个周期下接收4个计算数据的第三个计算数据并利用第四数据延迟器进行2个延迟和第一个数据延迟器进行3个延迟;
第四4选1的数据选择器在当前第i个周期下接收4个计算数据的第四个计算数据并利用第六数据延迟器进行3个延迟和第一个数据延迟器进行3个延迟;
在第i+1、i+2、i+3个周期下与上述同样的方式对第二组、第三组、第四组数据进行同样的处理;
换向器单元将4个周期所接收的计算数据一起组成16个数据的正变换时的矩阵,分别在第i+3个周期下,输出第一行的四个数据给存储管理单元;在第i+4个周期下,输出第二行的四个数据给存储管理单元;在第i+5个周期下,输出第三行的四个数据给存储管理单元;在第i+6个周期下,输出第四行的四个数据给存储管理单元,从而对矩阵进行转置,得到正变换时的重排序数据;
如图2所示,存储管理单元根据标签y中的第二位y[1],在第i+6个周期下的正变换时的点乘计算结果和正变换时的重排序数据中选择正变换时的重排序数据输出,再根据第一位y[0],将正变换时的重排序数据写入到存储单元的读写地址w中,从而完成多项式X1中一组数据的正变换,进而完成多项式X1中所有数据的正变换以及多项式X2的正变换;
控制单元在第j个周期下将完成多项式X1和多项式X2正变换后的数据存储到存储单元,并发送点乘使能信号给地址生成单元;
地址生成单元根据点乘使能信号生成一个8位的读写地址w’和两个标签y’、z,并将读写地址w’发送给存储单元,将标签y’和标签z发送给存储管理单元;
存储单元根据读写地址w’读取存储单元中的多项式X1和多项式X2正变换后的数据;
如图2所示,存储管理单元根据标签z,通过四选一选择器选择多项式X1和多项式X2正变换后的数据中各自的一个数据输出到点乘单元进行点乘运算,得到第j个周期下的点乘计算结果并发送给存储管理单元;
如图2所示,存储管理单元根据标签y’中的第二位y’[1],通过二选一选择器选择第j个周期下的点乘计算结果输出,再根据标签y’中的第一位标签y’[0],通过二选一选择器将第j个周期下的点乘计算结果存入存储单元的读写地址w’中,完成点乘运算;
控制单元在存储单元完成第j个周期下的点乘计算结果存储后,在第k个周期完成所有点乘计算结果的存储后,发送FNT逆变换的使能信号给地址生成单元;
地址生成单元根据FNT逆变换脉冲使能信号和无冲突访存规则生成第k个周期的读写地址w”和标签y”,并将读写地址w”发送给存储单元和旋转因子生成单元,将标签y”发送给存储管理单元和旋转因子生成单元;
存储单元根据读写地址w”读取第k个周期下点乘计算结果的一组数据到存储管理单元;
如图2所示,存储管理单元根据标签y”中的第一位y”[0],通过二选一选择器选择点乘计算结果的逆变换时的一组数据输出到蝶形计算单元;
旋转因子生成单元根据读写地址w”和标签y”中的第三位y[2]生成一组逆变换旋转因子;
蝶形计算单元对逆变换时的一组数据中的每个数据和一组逆变换旋转因子对应的一个因子分别进行加法、移位和取模操作,得到第k个周期下的4个逆变换时的计算数据;
换向器单元将4个周期下接收到的4个逆变换时的计算数据组成16个数据的逆变换时的矩阵再进行转置后再分4个周期分别输出一组转置后的逆变换时的重排序数据;
如图2所示,存储管理单元根据标签y”中的第二位y[1],选择逆变换时的重排序数据输出,再根据标签y”中的第一位y[0],将逆变换时的重排序数据写入到存储单元的读写地址w”,从而完成点乘计算结果的一组数据的逆变换,进而完成点乘计算结果所有数据的逆变换,实现多项式乘法功能。
本实例中,如图4所示,地址生成单元和换向器单元涉及到的无冲突访存规则的算法流程是按如下进行:
步骤1、根据32×32的多项式X1和多项式X2的行列数,通过式(1)计算变量M和变量L;
式(1)中,N是多项式X1和多项式X2的行列数,即N=32。
步骤2、定义当前循环次数为m、最大循环次数为M,并初始化m=1;
步骤2.1、定义第m次循环的变量Bm,并初始化Bm=2M-m
步骤2.2、定义第m次循环的变量B’m,并初始化B’m=2M-m-1
步骤3、定义第m次循环的变量Am,并初始化Am=0;
步骤3.1、定义第m次循环的变量A’m,并初始化A’m=0;
步骤4、定义第m次循环的前四级寻址的行地址Cm,并初始化Cm=Am
步骤4.1、定义第m次循环的前四级寻址的列地址C’m,并初始化C’m=A’m
步骤5、定义变量s,并初始化s=0;
步骤5.1、定义变量t,并初始化t=0;
步骤6、生成输出读写地址w{Cm+s×B’m,C’m+t×B’m},并将Cm+s×B’m赋值给Cm,将C’m+t×B’m赋值给C’m
步骤7、将t+1赋值给t,判断t=2是否成立,若成立,则执行步骤7.1;否则,返回到步骤6顺序执行;
步骤7.1、将s+1赋值给s,判断s=2是否成立,若成立,执行步骤8;否则,返回到步骤5.1顺序执行;
步骤8、将C’m+1赋值给C’m,判断C’m=A’m+B’m是否成立,若成立,则执行步骤8.1;否则,返回到步骤5顺序执行;
步骤8.1、将Cm+1赋值给Cm,判断Cm=Am+Bm是否成立,若成立,则执行步骤9;否则,返回到步骤4.1顺序执行;
步骤9、将C’m+Bm赋值给C’m,判断C’m>L-1是否成立,若成立,则执行步骤9.1;否则,返回到步骤4顺序执行;
步骤9.1、将Cm+Bm赋值给Cm,判断Cm>L-1是否成立,若成立,则执行步骤10;否则,返回到步骤3.1顺序执行;
步骤10、将m+1赋值给m,判断m>M-1是否成立,若成立,则表示完成前四级的寻址和计算,并执行步骤11;否则,返回到步骤3顺序执行;
本实施例中,如图5所示,前四级的寻址如下操作:
当M=1时,第一级的寻址开始,此时的Bm=16,B’m=8,Am和A’m可以取得的值为0,Cm和C’m可以取得的值为0到7的数,s和t可以取0和1。首先Am、A’m、Cm、C’m、s和t都取0,此时l1和l2的值都为0,则生成的第一个行列地址为(0,0),按照算法的循环和图5所示的第一级寻址方向,可以得到后面的三个地址为(0,8),(8,0),(8,8),这四个点就可以等同为图5所示中第一级方块的四个顶点位置。此后就将方块整体向右平移一个方格,再按此方式寻址,以此类推可以遍历完所有的地址。
当M=2时,第二级的寻址开始,此时的Bm=8,B’m=4,Am和A’m可以取得的值为0和8,s和t可以取0和1。首先当Am和A’m为0的时候,Cm和C’m可以取得的值为0到3的数,此时生成的第一个行列地址为(0,0),按照算法的循环和图5所示的第二级寻址方向,可以得到后面的三个点为(0,4),(4,0),(4,4),这四个点就可以等同为图5所示中第二级方块的四个顶点位置。此后就将方块整体向右平移一个方格,再按此方式寻址,以此类推可以遍历完所有的地址。
当M=3时,第三级的寻址开始,此时的Bm=4,B’m=2,Am和A’m可以取得的值为0、4、8和12,s和t可以取0和1。首先当Am和A’m为0的时候,Cm和C’m可以取得的值为0到1的数,此时生成的第一个行列地址为(0,0),按照算法的循环和图5所示的第二级寻址方向,可以得到后面的三个点为(0,2),(2,0),(2,2),这四个点就可以等同为图5所示中第三级方块的四个顶点位置。此后就将方块整体向右平移一个方格,再按此方式寻址,以此类推可以遍历完所有的地址。
当M=4时,第三级的寻址开始,此时的Bm=2,B’m=1,Am和A’m可以取得的值为0、2、4、6、8、10、12和14,s和t可以取0和1。首先当Am和A’m为0的时候,Cm和C’m可以取得的值为0,此时生成的第一个行列地址为(0,0),按照算法的循环和图5所示的第二级寻址方向,可以得到后面的三个点为(0,1),(1,0),(1,1),这四个点就可以等同为图5所示中第四级方块的四个顶点位置。此后就将方块整体向右平移一个方格,再按此方式寻址,以此类推可以遍历完所有的地址。
步骤11、定义第m次循环的第五级寻址的行地址Cm,并初始化Cm=0;
步骤11.1、定义第m次循环的第五级寻址的列地址C’m,并初始化C’m=0;
步骤12、生成输出读写地址w{Cm,C’m};
步骤13、将C’m+1赋值给C’m,判断C’m>L-1是否成立,若成立,则执行步骤13.1;否则,返回到步骤12顺序执行;
步骤13.1、将Cm+1赋值给Cm,判断Cm>L-1是否成立,若成立,则表示完成一次完整FNT变换的地址产生;否则,返回到步骤11.1顺序执行。
如图5所示,第五级的寻址如下操作:
当M=5时,第五级的寻址开始,此时按照第五级的寻址方向,先取出(0,0)这个地址,随后先逐行寻址,再到列寻址,直到将所有地址遍历完。

Claims (2)

1.一种基于费马模数的多项式乘法器,其特征包括:控制单元、地址生成单元、存储单元、存储管理单元、旋转因子生成单元、蝶形计算单元、换向器单元和点乘单元;
所述存储单元由多个共享地址线的小存储块组成,其中,4个小存储块存储有N×N的多项式X1,另外4个小存储块存储有N×N的多项式X2;
所述控制单元在所述存储单元完成多项式的存储后,在当前第i个周期下发送FNT正变换的使能信号给地址生成单元;
所述地址生成单元根据所述FNT正变换的使能信号和无冲突访存规则生成当前第i个周期下的读写地址w和标签y,并将所述读写地址w发送给所述存储单元和所述旋转因子生成单元,将所述标签y发送给所述存储管理单元和所述旋转因子生成单元;
所述存储单元当前第i个周期下根据所述读写地址w读取多项式X1中的4个数据和多项式X2中的4个数据并发送给所述存储管理单元;
所述点乘单元从所述存储单元中获取多项式X1中的4个数据和多项式X2中的4个数据并进行点乘运算,得到当前第i个周期下的正变换时的点乘计算结果并发送给所述存储管理单元;
所述存储管理单元根据所述标签y中的第一位y[0],并利用二选一选择器选择N×N的多项式X1中的4个数据作为一组数据并输出给所述蝶形计算单元;
所述旋转因子生成单元根据所述读写地址w和所述标签y中的第三位y[2]生成4个正变换旋转因子并作为一组因子;
所述蝶形计算单元对所述正变换时的一组数据中的每个数据和一组因子中对应的一个因子分别进行加法、移位和取模操作,得到在当前第i个周期下的4个正变换时的计算数据;
所述换向器单元由4个4选1的数据选择器、6个数据延迟器组成;
第一4选1的数据选择器在当前第i个周期下接收4个计算数据的第一个计算数据并利用第一数据延迟器进行3个延迟;
第二4选1的数据选择器在当前第i个周期下接收4个计算数据的第二个计算数据并利用第二数据延迟器进行1个延迟和第一个数据延迟器进行3个延迟;
第三4选1的数据选择器在当前第i个周期下接收4个计算数据的第三个计算数据并利用第四数据延迟器进行2个延迟和第一个数据延迟器进行3个延迟;
第四4选1的数据选择器在当前第i个周期下接收4个计算数据的第四个计算数据并利用第六数据延迟器进行3个延迟和第一个数据延迟器进行3个延迟;
在第i+1、第i+2、第i+3个周期下按照同样的方式对第二组、第三组、第四组数据进行相同的处理;
所述换向器单元将4个周期所接收的计算数据一起组成16个数据的正变换时的矩阵,分别在第i+3个周期下,输出第一行的四个数据给所述存储管理单元;在第i+4个周期下,输出第二行的四个数据给所述存储管理单元;在第i+5个周期下,输出第三行的四个数据给所述存储管理单元;在第i+6个周期下,输出第四行的四个数据给所述存储管理单元,从而对矩阵进行转置,得到正变换时的重排序数据;
所述存储管理单元根据所述标签y中的第二位y[1],在第i+6个周期下的正变换时的点乘计算结果和所述正变换时的重排序数据中选择所述正变换时的重排序数据输出,再根据第一位y[0],将所述正变换时的重排序数据写入到所述存储单元的读写地址w中,从而完成多项式X1中一组数据的正变换,进而完成多项式X1中所有数据的正变换以及多项式X2的正变换;
所述控制单元在第j个周期下将完成多项式X1和多项式X2正变换后的数据存储到所述存储单元,并发送点乘使能信号给所述地址生成单元;
所述地址生成单元根据所述点乘使能信号生成一个读写地址w’和两个标签y’、z,并将所述读写地址w’发送给所述存储单元,将标签y’和标签z发送给所述存储管理单元;
所述存储单元根据所述读写地址w’读取所述存储单元中的多项式X1和多项式X2正变换后的数据;
所述存储管理单元根据标签z,通过四选一选择器选择所述多项式X1和多项式X2正变换后的数据中各自的一个数据输出到所述点乘单元进行点乘运算,得到第j个周期下的点乘计算结果并发送给所述存储管理单元;
所述存储管理单元根据标签y’中的第二位y’[1],通过二选一选择器选择所述第j个周期下的点乘计算结果输出,再根据标签y’中的第一位标签y’[0],通过二选一选择器将所述第j个周期下的点乘计算结果存入所述存储单元的读写地址w’中,完成点乘运算;
所述控制单元在所述存储单元完成所述第j个周期下的点乘计算结果存储后,在第k个周期完成所有点乘计算结果的存储后,发送FNT逆变换的使能信号给所述地址生成单元;
所述地址生成单元根据所述FNT逆变换脉冲使能信号和无冲突访存规则生成第k个周期的读写地址w”和标签y”,并将所述读写地址w”发送给所述存储单元和所述旋转因子生成单元,将所述标签y”发送给所述存储管理单元和所述旋转因子生成单元;
所述存储单元根据所述读写地址w”读取第k个周期下点乘计算结果的一组数据到所述存储管理单元;
所述存储管理单元根据标签y”中的第一位y”[0],通过二选一选择器选择所述点乘计算结果的逆变换时的一组数据输出到所述蝶形计算单元;
所述旋转因子生成单元根据所述读写地址w”和标签y”中的第三位y[2]生成一组逆变换旋转因子;
所述蝶形计算单元对逆变换时的一组数据中的每个数据和一组逆变换旋转因子对应的一个因子分别进行加法、移位和取模操作,得到第k个周期下的4个逆变换时的计算数据;
所述换向器单元将4个周期下接收到的4个逆变换时的计算数据组成16个数据的逆变换时的矩阵再进行转置后再分4个周期分别输出一组转置后的逆变换时的重排序数据;
所述存储管理单元根据标签y”中的第二位y[1],选择所述逆变换时的重排序数据输出,再根据标签y”中的第一位y[0],将所述逆变换时的重排序数据写入到存储单元的所述读写地址w”,从而完成所述点乘计算结果的一组数据的逆变换,进而完成点乘计算结果所有数据的逆变换,实现多项式乘法功能。
2.根据权利要求1所述的基于费马模数的多项式乘法器,其特征是,所述无冲突访存规则是按如下步骤进行:
步骤1、根据N×N的多项式X1和多项式X2的行列数,利用式(1)计算变量M和变量L:
步骤2、定义当前循环次数为m、最大循环次数为M,并初始化m=1;
步骤2.1、定义第m次循环的变量Bm,并初始化Bm=2M-m
步骤2.2、定义第m次循环的变量B’m,并初始化B’m=2M-m-1
步骤3、定义第m次循环的变量Am,并初始化Am=0;
步骤3.1、定义第m次循环的变量A’m,并初始化A’m=0;
步骤4、定义第m次循环的前四级寻址的行地址Cm,并初始化Cm=Am
步骤4.1、定义第m次循环的前四级寻址的列地址C’m,并初始化C’m=A’m
步骤5、定义变量s,并初始化s=0;
步骤5.1、定义变量t,并初始化t=0;
步骤6、生成输出读写地址w{Cm+s×B’m,C’m+t×B’m},并将Cm+s×B’m赋值给Cm,将C’m+t×B’m赋值给C’m
步骤7、将t+1赋值给t,判断t=2是否成立,若成立,则执行步骤7.1;否则,返回到步骤6顺序执行;
步骤7.1、将s+1赋值给s,判断s=2是否成立,若成立,执行步骤8;否则,返回到步骤5.1顺序执行;
步骤8、将C’m+1赋值给C’m,判断C’m=A’m+B’m是否成立,若成立,则执行步骤8.1;否则,返回到步骤5顺序执行;
步骤8.1、将Cm+1赋值给Cm,判断Cm=Am+Bm是否成立,若成立,则执行步骤9;否则,返回到步骤4.1顺序执行;
步骤9、将C’m+Bm赋值给C’m,判断C’m>L-1是否成立,若成立,则执行步骤9.1;否则,返回到步骤4顺序执行;
步骤9.1、将Cm+Bm赋值给Cm,判断Cm>L-1是否成立,若成立,则执行步骤10;否则,返回到步骤3.1顺序执行;
步骤10、将m+1赋值给m,判断m>M-1是否成立,若成立,则表示完成前四级的寻址和计算,并执行步骤11;否则,返回到步骤3顺序执行;
步骤11、定义第m次循环的第五级寻址的行地址Cm,并初始化Cm=0;
步骤11.1、定义第m次循环的第五级寻址的列地址C’m,并初始化C’m=0;
步骤12、生成输出读写地址w{Cm,C’m};
步骤13、将C’m+1赋值给C’m,判断C’m>L-1是否成立,若成立,则执行步骤13.1;否则,返回到步骤12顺序执行;
步骤13.1、将Cm+1赋值给Cm,判断Cm>L-1是否成立,若成立,则表示完成一次完整FNT变换的地址产生;否则,返回到步骤11.1顺序执行。
CN202111521452.0A 2021-12-13 2021-12-13 一种基于费马模数的多项式乘法器 Active CN114185514B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111521452.0A CN114185514B (zh) 2021-12-13 2021-12-13 一种基于费马模数的多项式乘法器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111521452.0A CN114185514B (zh) 2021-12-13 2021-12-13 一种基于费马模数的多项式乘法器

Publications (2)

Publication Number Publication Date
CN114185514A CN114185514A (zh) 2022-03-15
CN114185514B true CN114185514B (zh) 2024-03-08

Family

ID=80604787

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111521452.0A Active CN114185514B (zh) 2021-12-13 2021-12-13 一种基于费马模数的多项式乘法器

Country Status (1)

Country Link
CN (1) CN114185514B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023519A (zh) * 2012-10-26 2013-04-03 中国兵器科学研究院 一种费马数变换的方法和装置
CN103870438A (zh) * 2014-02-25 2014-06-18 复旦大学 一种利用数论变换计算循环卷积的电路结构
WO2018012828A1 (ko) * 2016-07-13 2018-01-18 김태형 다기능 연산 장치 및 고속 푸리에 변환 연산 장치
CN108229666A (zh) * 2017-11-03 2018-06-29 东南大学 基于费马数变换的卷积神经网络硬件加速架构
CN112464296A (zh) * 2020-12-18 2021-03-09 合肥工业大学 一种用于同态加密技术的大整数乘法器硬件电路

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104793919B (zh) * 2015-04-15 2017-11-07 深圳国微技术有限公司 一种蒙哥马利模乘装置及具有其的嵌入式安全芯片

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023519A (zh) * 2012-10-26 2013-04-03 中国兵器科学研究院 一种费马数变换的方法和装置
CN103870438A (zh) * 2014-02-25 2014-06-18 复旦大学 一种利用数论变换计算循环卷积的电路结构
WO2018012828A1 (ko) * 2016-07-13 2018-01-18 김태형 다기능 연산 장치 및 고속 푸리에 변환 연산 장치
CN108229666A (zh) * 2017-11-03 2018-06-29 东南大学 基于费马数变换的卷积神经网络硬件加速架构
CN112464296A (zh) * 2020-12-18 2021-03-09 合肥工业大学 一种用于同态加密技术的大整数乘法器硬件电路

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于FPGA的F_2~m域椭圆曲线点乘的快速实现;魏东梅;杨涛;;计算机应用;20110201(02);全文 *
流水并行1-D FFT地址映射算法;刘红侠;杨靓;黄巾;黄士坦;;武汉大学学报(工学版);20080628(03);全文 *

Also Published As

Publication number Publication date
CN114185514A (zh) 2022-03-15

Similar Documents

Publication Publication Date Title
US6901422B1 (en) Matrix multiplication in a vector processing system
US20080208944A1 (en) Digital signal processor structure for performing length-scalable fast fourier transformation
CN112464296B (zh) 一种用于同态加密技术的大整数乘法器硬件电路
WO2022007266A1 (zh) 一种卷积神经网络的加速方法及装置
CN102652315B (zh) 信息处理设备及其控制方法
CN110751277A (zh) 运算电路、包括该运算电路的运算装置和***
CN110674927A (zh) 一种用于脉动阵列结构的数据重组方法
CN114185514B (zh) 一种基于费马模数的多项式乘法器
CN109669666A (zh) 乘累加处理器
CN111221501B (zh) 一种用于大数乘法的数论变换电路
CN110766136B (zh) 一种稀疏矩阵与向量的压缩方法
KR0175733B1 (ko) 비트-시리얼 메트릭스 전치를 위한 초대규모 집적회로
US9268744B2 (en) Parallel bit reversal devices and methods
US6728742B1 (en) Data storage patterns for fast fourier transforms
CN113610221B (zh) 一种基于fpga的可变膨胀卷积运算硬件***
US5946405A (en) Block-matching motion estimation apparatus under use of linear systolic array architecture
CN114201725B (zh) 基于多模可重构fft的窄带通信信号处理方法
CN109343826B (zh) 一种面向深度学习的可重构处理器运算单元
CN117194861A (zh) 一种支持输出剪枝的可重构混合基fft装置
CN112445752B (zh) 一种基于乔列斯基分解的矩阵求逆装置
KR20030054300A (ko) 레딕스-8 단일 경로 지연 전달 구조의 고속 퓨리에 변환장치 및 그 방법
CN114422315B (zh) 一种超高吞吐量ifft/fft调制解调方法
CN118051709A (zh) 一种fft处理器及运算方法
JPH07234863A (ja) 2次元直交変換装置
US20030023779A1 (en) Symbol window correlative operation circuit and address generation circuit therefor

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
GR01 Patent grant
GR01 Patent grant