一种基于费马模数的多项式乘法器制造技术

技术编号:32672962 阅读:16 留言:0更新日期:2022-03-17 11:28
本发明专利技术公开了一种基于费马模数的多项式乘法器,包括:控制单元、地址生成单元、存储单元、存储管理单元、旋转因子生成单元、蝶形计算单元、换向器单元和点乘单元。其中,控制单元负责生成控制信号,调节工作状态;地址生成单元负责生成读写地址;旋转因子生成单元负责生成旋转因子;存储管理单元负责管理存储单元的访存方向;存储单元由多块存储块组成,负责存储源数据,中间过程数据和结果数据;蝶形计算单元实现向量基2

【技术实现步骤摘要】
一种基于费马模数的多项式乘法器


[0001]本专利技术属于全同态加密中优化多项式乘法器硬件电路的设计领域,具体说是基于费马模数的多项式乘法器。

技术介绍

[0002]RLWE密码系统中最耗时的操作是多项式乘法。到目前为止,对多项式乘法的加速进行了大量的研究。目前的大多数多项式乘法利用教科书中的多项式算法(SPMA)或数论变换(NTT)加实现。SPMA是简单且直接的硬件实现,而NTT需要复杂的预计算和数组重排序,把多项式乘法时间复杂度从二次降到准线性来实现高性能。与其他算法相比,SPMA算法结构简单,使用的硬件最少,但吞吐量低,NTT的吞吐是SPMA的9倍。然而高吞吐的NTT方法需要以硬件资源为代价,总之,SPMA和NTT在时间和面积上处于两个极端。FNT算法是介于两个极端之间的另一种候选算法,在对R

LWE的FPGA实现的研究中并不广泛。硬件实现2D

FNT上,除了传统的行列型方法,提出了基于向量基算法实现2D

FNT,减少了过程中的乘法操作次数。行列型和向量基方法都是采用短序列FNT算法来构造长序列FNT算法,虽然可以有效降低算法的时间复杂度,但也会使数据交互变得困难。长序列的FNT算法一旦被拆分,输入数据就需要根据拆分结构,进行相应的顺序调整,特别是当FNT算法输入的数据量非常多时,数据交互过程就变得更加复杂,同时也会占据很多资源。

技术实现思路

[0003]本专利技术为克服现有技术的不足之处,提出一种基于费马模数的多项式乘法器,以期能通过优化同址FNT算法,解决同址计算与蝶形单元流水计算冲突的问题,从而减小存储资源消耗、并提高计算速度和多项式乘法器的性能。
[0004]为达到上述专利技术目的,本专利技术所采用的技术方案如下:
[0005]本专利技术一种基于费马模数的多项式乘法器的特点包括:控制单元、地址生成单元、存储单元、存储管理单元、旋转因子生成单元、蝶形计算单元、换向器单元和点乘单元;
[0006]所述存储单元由多个共享地址线的小存储块组成,其中,4个小存储块存储有N
×
N的多项式X1,另外4个小存储块存储有N
×
N的多项式X2;
[0007]所述控制单元在所述存储单元完成多项式的存储后,在当前第i个周期下发送FNT正变换的使能信号给地址生成单元;
[0008]所述地址生成单元根据所述FNT正变换的使能信号和无冲突访存规则生成当前第i个周期下的读写地址w和标签y,并将所述读写地址w发送给所述存储单元和所述旋转因子生成单元,将所述标签y发送给所述存储管理单元和所述旋转因子生成单元;
[0009]所述存储单元当前第i个周期下根据所述读写地址w读取多项式X1中的4个数据和多项式X2中的4个数据并发送给所述存储管理单元;
[0010]所述点乘单元从所述存储单元中获取多项式X1中的4个数据和多项式X2中的4个数据并进行点乘运算,得到当前第i个周期下的正变换时的点乘计算结果并发送给所述存
储管理单元;
[0011]所述存储管理单元根据所述标签y中的第一位y[0],并利用二选一选择器选择N
×
N的多项式X1中的4个数据作为一组数据并输出给所述蝶形计算单元;
[0012]所述旋转因子生成单元根据所述读写地址w和所述标签y中的第三位y[2]生成4个正变换旋转因子并作为一组因子;
[0013]所述蝶形计算单元对所述正变换时的一组数据中的每个数据和一组因子中对应的一个因子分别进行加法、移位和取模操作,得到在当前第i个周期下的4个正变换时的计算数据;
[0014]所述换向器单元由4个4选1的数据选择器、6个数据延迟器组成;
[0015]第一4选1的数据选择器在当前第i个周期下接收4个计算数据的第一个计算数据并利用第一数据延迟器进行3个延迟;
[0016]第二4选1的数据选择器在当前第i个周期下接收4个计算数据的第二个计算数据并利用第二数据延迟器进行1个延迟和第一个数据延迟器进行3个延迟;
[0017]第三4选1的数据选择器在当前第i个周期下接收4个计算数据的第三个计算数据并利用第四数据延迟器进行2个延迟和第一个数据延迟器进行3个延迟;
[0018]第四4选1的数据选择器在当前第i个周期下接收4个计算数据的第四个计算数据并利用第六数据延迟器进行3个延迟和第一个数据延迟器进行3个延迟;
[0019]在第i+1、第i+2、第i+3个周期下按照同样的方式对第二组、第三组、第四组数据进行相同的处理;
[0020]所述换向器单元将4个周期所接收的计算数据一起组成16个数据的正变换时的矩阵,分别在第i+3个周期下,输出第一行的四个数据给所述存储管理单元;在第i+4个周期下,输出第二行的四个数据给所述存储管理单元;在第i+5个周期下,输出第三行的四个数据给所述存储管理单元;在第i+6个周期下,输出第四行的四个数据给所述存储管理单元,从而对矩阵进行转置,得到正变换时的重排序数据;
[0021]所述存储管理单元根据所述标签y中的第二位y[1],在第i+6个周期下的正变换时的点乘计算结果和所述正变换时的重排序数据中选择所述正变换时的重排序数据输出,再根据第一位y[0],将所述正变换时的重排序数据写入到所述存储单元的读写地址w中,从而完成多项式X1中一组数据的正变换,进而完成多项式X1中所有数据的正变换以及多项式X2的正变换;
[0022]所述控制单元在第j个周期下将完成多项式X1和多项式X2正变换后的数据存储到所述存储单元,并发送点乘使能信号给所述地址生成单元;
[0023]所述地址生成单元根据所述点乘使能信号生成一个读写地址w

和两个标签y

、z,并将所述读写地址w

发送给所述存储单元,将标签y

和标签z发送给所述存储管理单元;
[0024]所述存储单元根据所述读写地址w

读取所述存储单元中的多项式X1和多项式X2正变换后的数据;
[0025]所述存储管理单元根据标签z,通过四选一选择器选择所述多项式X1和多项式X2正变换后的数据中各自的一个数据输出到所述点乘单元进行点乘运算,得到第j个周期下的点乘计算结果并发送给所述存储管理单元;
[0026]所述存储管理单元根据标签y

中的第二位y

[1],通过二选一选择器选择所述第j
个周期下的点乘计算结果输出,再根据标签y

中的第一位标签y

[0],通过二选一选择器将所述第j个周期下的点乘计算结果存入所述存储单元的读写地址w

中,完成点乘运算;
[0027]所述控制单元在所述存储单元完成所述第j个周期下的点乘计算结果存储后,在第k个周期完成所有点乘计算结果的存储后,发送FNT逆变换的使能信号给所述地址生成单元;
[0028]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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个周期分别输出一...

【专利技术属性】
技术研发人员:杜高明廖秋竹郭文杰宋宇鲲李桢旻尹勇生
申请(专利权)人:合肥工业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1