一种基于FPGA的数论变换方法、装置、设备及存储介质与流程
- 国知局
- 2024-07-31 23:18:57
本发明涉及信息安全,特别是涉及一种基于fpga的数论变换方法、装置、设备及存储介质。
背景技术:
1、密码技术是维护网络空间安全的基本支柱之一,其中,格密码是主流密码算法之一。
2、有限域上的多项式乘法是格密码中最耗时的运算之一。为降低多项式乘法的耗时,可以利用数论变换(number theoretic transform,ntt)来降低多项式乘法的复杂度。在基于蝶形单元来迭代计算数论变换的过程中,多个蝶形单元可以并行计算,此时需要并行读写多个参数,因此在一次数论变换中,需要将其所需要的参数分段存入不同的内存块中。
3、随着数论变换并行能力的增加,所需利用的内存块数量越来越多,由此带来了较高的内存利用成本,在采用现场可编程逻辑门阵列(field programmable gate array,fpga)对数论变换计算进行加速时,所需的内存成本也进一步拉高。
技术实现思路
1、本发明的目的是提供一种基于fpga的数论变换方法、装置、设备及存储介质,用于提高基于现场可编程逻辑门阵列执行数论变换的内存利用率,以降低采用现场可编程逻辑门阵列处理数论变换的内存利用成本。
2、为解决上述技术问题,本发明提供一种基于fpga的数论变换方法,包括:
3、在基于现场可编程逻辑门阵列执行数论变换计算任务时,确定所述数论变换计算任务的元素数量、执行所述数论变换计算任务所选用的蝶形单元的类型和所述蝶形单元的数量;
4、根据所述元素数量、所述蝶形单元的类型和所述蝶形单元的数量,确定执行一次所述数论变换计算任务所需的参数的数量以及用于存储所述参数的数论变换内存空间中内存块的数量;
5、根据所述内存块的数量自所述现场可编程逻辑门阵列的内存中划分出所述数论变换内存空间,并根据一个所述内存块的大小以及一次所述数论变换计算任务中写入所述内存块的参数片段的大小,计算得到一个所述内存块最多允许存储的所述参数片段的最大参数片段数量;
6、将多次所述数论变换计算任务所需的所述参数写入所述数论变换内存空间,以利用所述数论变换内存空间存储的所述参数执行多次所述数论变换计算任务;
7、其中,所述参数对应写入所述数论变换内存空间的所述数论变换计算任务的次数小于或等于所述最大参数片段数量。
8、一方面,所述参数的类型包括所述蝶形单元计算所需的旋转因子和多项式系数。
9、另一方面,对所述参数中的旋转因子,确定执行一次所述数论变换计算任务中用于存储旋转因子的旋转因子内存块的数量,包括:
10、根据所述蝶形单元的类型确定一个所述蝶形单元在一次迭代计算中所需的旋转因子的数量;
11、计算一个所述蝶形单元在一次迭代计算中所需的旋转因子的数量和所述蝶形单元的数量的乘积,得到所述数论变换计算任务的一次迭代计算所需的旋转因子的数量;
12、以所述数论变换计算任务的一次迭代计算所需的旋转因子的数量为所述旋转因子内存块的数量。
13、另一方面,对所述参数中的旋转因子,在一次所述数论变换计算任务中用于存储旋转因子的一个旋转因子内存块上存储的旋转因子片段的大小的确定步骤包括:
14、根据所述元素数量、所述蝶形单元的类型以及所述蝶形单元的数量,确定一次所述数论变换计算任务中一个所述蝶形单元在迭代计算中采用相同旋转因子的迭代计算次数和采用不同旋转因子的迭代计算次数;
15、在存储各次迭代计算所需的旋转因子时,对于在不同次迭代计算中采用相同旋转因子的迭代计算次数仅存储一次旋转因子,得到在一次数论变换计算任务中在一个所述旋转因子内存块上需要存储的旋转因子的数量为一个所述旋转因子片段的大小。
16、另一方面,一个所述旋转因子片段包括的旋转因子的数量,通过下式表示:
17、;
18、其中, tw为一个所述旋转因子片段包括的旋转因子的数量, n为所述元素数量, pe为所述蝶形单元的数量, radix为所述蝶形单元的基底。
19、另一方面,对所述参数中的旋转因子,根据一个所述内存块的大小以及一次所述数论变换计算任务中写入所述内存块的参数片段的大小,计算得到单个所述内存块最多允许存储的所述参数片段的最大参数片段数量,具体通过下式计算:
20、;
21、其中,为最大旋转因子片段数量, d为用于存储旋转因子的旋转因子内存块的存储深度,所述存储深度以一个旋转因子的大小为单位, tw为一个所述旋转因子内存块中对应同一次所述数论变换计算任务的旋转因子的数量,为向下取整计算。
22、另一方面,对所述参数中的多项式系数,确定执行一次所述数论变换计算任务中用于存储多项式系数的系数内存块的数量,包括:
23、根据所述蝶形单元的类型确定一个所述蝶形单元在一个时钟周期读写的多项式系数的数量;
24、计算一个所述蝶形单元在一个时钟周期读写的多项式系数的数量和所述蝶形单元的数量的乘积,得到所述数论变换计算任务的一个时钟周期读写的多项式系数的数量;
25、以所述数论变换计算任务的一个时钟周期读写的多项式系数的数量为所述系数内存块的数量。
26、另一方面,对所述参数中的多项式系数,在一次所述数论变换计算任务中用于多项式系数的一个系数内存块上存储的系数片段的大小的确定步骤包括:
27、根据所述蝶形单元的类型以及所述蝶形单元的数量,确定一次所述数论变换计算任务中所需的所述系数内存块的数量;
28、根据所述元素数量和所述系数内存块的数量计算得到在一次数论变换计算任务中在一个所述系数内存块上需要存储的多项式系数的数量为一个所述系数片段的大小。
29、另一方面,一个所述系数片段包括的多项式系数的数量,通过下式表示:
30、;
31、其中,为一个所述系数片段包括的多项式系数的数量, n为所述元素数量, pe为所述蝶形单元的数量, radix为所述蝶形单元的基底。
32、另一方面,对所述参数中的多项式系数,根据一个所述内存块的大小以及一次所述数论变换计算任务中写入所述内存块的参数片段的大小,计算得到单个所述内存块最多允许存储的所述参数片段的最大参数片段数量,具体通过下式计算:
33、;
34、其中,为最大系数片段数量,为用于存储多项式系数的系数内存块的存储深度,所述存储深度以一个多项式系数的大小为单位,为一个所述系数片段包括的多项式系数的数量,为向下取整计算。
35、另一方面,对所述参数中的旋转因子,将多次所述数论变换计算任务所需的所述参数写入所述数论变换内存空间,以利用所述数论变换内存空间存储的所述参数执行多次所述数论变换计算任务,包括:
36、对在一次所述数论变换计算任务中用于存储旋转因子的每个旋转因子内存块分配深度为的存储空间来存储对应于一个所述数论变换计算任务的旋转因子片段,以按照来存储个所述旋转因子片段;
37、其中,为最小的不小于 tw的2的幂次, tw为所述旋转因子片段所包括旋转因子的数量,为最大旋转因子片段数量, d为所述旋转因子内存块的存储深度,所述存储深度以一个旋转因子的大小为单位,为向下取整计算。
38、另一方面,对所述参数中的旋转因子,将多次所述数论变换计算任务所需的所述参数写入所述数论变换内存空间,包括:
39、将对应不同所述数论变换计算任务的旋转因子片段存入用于存储旋转因子的旋转因子内存块的不同位置;
40、利用所述数论变换内存空间存储的所述参数执行多次所述数论变换计算任务,包括:
41、根据所述旋转因子内存块中所述旋转因子片段的数量,确定预设旋转因子状态位的类型;
42、自所述预设旋转因子状态位中选取一个旋转因子状态位为一个所述数论变换计算任务的片段状态位,以所述旋转因子状态位以及在对应的所述旋转因子片段中的排列序号为一个旋转因子的地址信息,实现对所述数论变换计算任务所需的旋转因子的读写,当完成所述数论变换计算任务后,释放所述数论变换计算任务对应的所述旋转因子状态位。
43、另一方面,对所述参数中的旋转因子,将多次所述数论变换计算任务所需的所述参数写入所述数论变换内存空间,包括:
44、将对应不同素数模值的旋转因子片段存入用于存储旋转因子的旋转因子内存块的不同位置;
45、利用所述数论变换内存空间存储的所述参数执行多次所述数论变换计算任务,包括:
46、根据所述旋转因子内存块中所述旋转因子片段的数量,确定预设旋转因子状态位的类型;
47、自所述预设旋转因子状态位中选取一个旋转因子状态位为一个所述旋转因子片段的片段状态位,以所述旋转因子状态位以及在对应的所述旋转因子片段中的排列序号为一个旋转因子的地址信息,实现对所述数论变换计算任务所需的旋转因子的读写,当所述旋转因子片段被覆盖后,释放所述旋转因子片段对应的所述旋转因子状态位。
48、另一方面,对所述参数中的多项式系数,将多次所述数论变换计算任务所需的所述参数写入所述数论变换内存空间,包括:
49、将对应不同所述数论变换计算任务的系数片段存入用于存储多项式系数的系数内存块的不同位置;
50、利用所述数论变换内存空间存储的所述参数执行多次所述数论变换计算任务,包括:
51、根据所述系数内存块中所述系数片段的数量,确定预设系数状态位的类型;
52、自所述预设系数状态位中选取一个系数状态位为一个所述数论变换计算任务的片段状态位,以所述系数状态位以及在对应的所述系数片段中的排列序号为一个多项式系数的地址信息,实现对所述数论变换计算任务所需的多项式系数的读写,当完成所述数论变换计算任务后,释放所述数论变换计算任务对应的所述系数状态位。
53、另一方面,将多次所述数论变换计算任务所需的所述参数写入所述数论变换内存空间,以利用所述数论变换内存空间存储的所述参数执行多次所述数论变换计算任务,包括:
54、预先分配两块所述数论变换内存空间;
55、在将其中一块所述数论变换内存空间写完设定的多次所述数论变换计算任务所需的所述参数后,在利用当前的所述数论变换内存空间存储的所述参数执行多次所述数论变换计算任务的同时,将另外的所述数论变换计算任务所需的所述参数写入另一块所述数论变换内存空间,以在利用当前的所述数论变换内存空间存储的所述参数执行完对应的所述数论变换计算任务后,切换至另一块所述数论变换内存空间存储的所述参数执行对应的所述数论变换计算任务,以此循环。
56、另一方面,将多次所述数论变换计算任务所需的所述参数写入所述数论变换内存空间,包括采用根据下式计算得到的传输带宽来传输所述参数:
57、;
58、其中, bw为所述传输带宽, pe为所述蝶形单元的数量, radix为所述蝶形单元的基底,为时钟频率, q为所述数论变换计算任务对应的素数模值,为向上取整计算, n为所述元素数量,为所述传输带宽的单位为比特数每秒。
59、另一方面,将多次所述数论变换计算任务所需的所述参数写入所述数论变换内存空间,以利用所述数论变换内存空间存储的所述参数执行多次所述数论变换计算任务,包括:
60、若在后的所述数论变换计算任务需要在前的所述数论变换计算任务之后的其他类型计算任务的计算结果,则在将所述数论变换内存空间写完设定的多次所述数论变换计算任务所需的所述参数,利用当前的所述数论变换内存空间存储的所述参数执行多次所述数论变换计算任务,并在将当前执行完毕所述数论变换计算任务的计算结果搬至所述其他类型计算任务之后,将另外的所述数论变换计算任务所需的所述参数写入所述数论变换内存空间。
61、为解决上述技术问题,本发明还提供一种基于fpga的数论变换装置,包括:
62、第一确定单元,用于在基于现场可编程逻辑门阵列执行数论变换计算任务时,确定所述数论变换计算任务的元素数量、执行所述数论变换计算任务所选用的蝶形单元的类型和所述蝶形单元的数量;
63、第二确定单元,用于根据所述元素数量、所述蝶形单元的类型和所述蝶形单元的数量,确定执行一次所述数论变换计算任务所需的参数的数量以及用于存储所述参数的数论变换内存空间中内存块的数量;
64、地址计算单元,用于在根据所述内存块的数量自所述现场可编程逻辑门阵列的内存中划分出所述数论变换内存空间后,根据一个所述内存块的大小以及一次所述数论变换计算任务中写入所述内存块的参数片段的大小,计算得到一个所述内存块最多允许存储的所述参数片段的最大参数片段数量;还用于在控制单元执行所述数论变换计算任务时确定所述参数的内存读写地址;
65、所述控制单元,用于将多次所述数论变换计算任务所需的所述参数写入所述数论变换内存空间,以利用所述数论变换内存空间存储的所述参数执行多次所述数论变换计算任务;
66、其中,所述参数对应写入所述数论变换内存空间的所述数论变换计算任务的次数小于或等于所述最大参数片段数量。
67、为解决上述技术问题,本发明还提供一种基于fpga的数论变换设备,包括:
68、存储器,用于存储计算机程序;
69、处理器,用于执行所述计算机程序,所述计算机程序被所述处理器执行时实现如上述任意一项所述基于fpga的数论变换方法的步骤。
70、为解决上述技术问题,本发明还提供一种非易失性存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述基于fpga的数论变换方法的步骤。
71、为解决上述技术问题,本发明还提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现如上述任意一项所述基于fpga的数论变换方法的步骤。
72、本发明所提供的基于fpga的数论变换方法,有益效果在于在基于现场可编程逻辑门阵列执行数论变换计算任务时,根据数论变换计算任务的元素数量、执行数论变换计算任务所选用的蝶形单元的类型和蝶形单元的数量来确定执行一次数论变换计算任务所需的参数的数量以及用于存储参数的数论变换内存空间中内存块的数量之后,根据一个内存块的大小以及一次数论变换计算任务中写入内存块的参数片段的大小,计算一个内存块最多允许存储的参数片段的最大参数片段数量,从而将每个内存块都存储对应于多个数论变换计算任务的参数片段,从而提高了基于现场可编程逻辑门阵列执行数论变换计算任务时的内存利用率,相应地降低了基于现场可编程逻辑门阵列的数论变换的内存成本。
73、本发明还提供一种基于fpga的数论变换方法、装置、设备、非易失性存储介质及计算机程序产品,具有上述有益效果,在此不再赘述。
本文地址:https://www.jishuxx.com/zhuanli/20240730/196965.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。