CN113608718A - 一种实现素数域大整数模乘计算加速的方法 - Google Patents
一种实现素数域大整数模乘计算加速的方法 Download PDFInfo
- Publication number
- CN113608718A CN113608718A CN202110783676.2A CN202110783676A CN113608718A CN 113608718 A CN113608718 A CN 113608718A CN 202110783676 A CN202110783676 A CN 202110783676A CN 113608718 A CN113608718 A CN 113608718A
- Authority
- CN
- China
- Prior art keywords
- multiplicand
- multiplier
- segment
- bits
- large integer
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000004364 calculation method Methods 0.000 title claims abstract description 24
- 230000001133 acceleration Effects 0.000 title claims abstract description 6
- 238000007667 floating Methods 0.000 claims abstract description 30
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011423 initialization method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
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/60—Methods 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/72—Methods 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
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开一种实现素数域大整数模乘计算加速的方法,将素数域长度为k比特的被乘数和乘数分为N段,前(N‑1)段每段长为w比特,第N段长为r比特,w≥r;将被乘数和乘数的每一段转化为双精度浮点数,采用积和熔加运算对转化后的被乘数和乘数的每一段进行乘加运算,初始化2N个定点数,将乘加结果的二进制数值累加到经过初始化后的定点数中,对定点数进行位数约减,获得最后的模乘结果。本发明充分利用双精度浮点数的格式特点,提升了素数域模乘的计算效率。
Description
技术领域
本发明属于计算技术领域,涉及一种实现素数域大整数模乘计算加速的方法。
背景技术
随着科技的不断进步,计算机技术的飞速发展,用户对隐私保护有了更高的要求,密码学也随之被大量应用到网络通信技术中。例如,电子商务、软件分发等面向海量用户的互联网衍生产业通过密钥协商和数字签名实现在互联网上的隐私保护和安全通信。大整数模乘是许多非对称密码算法的核心计算负载。世界主流的非对称密码算法ECC(EllipticCurve Cryptography)的主要计算负载是素数域的大整数模乘。因此,素数域大整数模乘的运算速度直接影响到密钥协商及数字签名实现的速率,针对素数域中的大整数模乘高性能实现的研究十分重要。
GPUs(Graphics processing units)在计算机图形和图像处理方面非常高效,因而更加擅长浮点数的运算。GPUs的浮点数的计算能力在过去十年间增长超过十倍。此外,NVIDIA公司推出的CUDA并行计算框架使得原本只适用于图形处理计算的GPUs计算资源也可以用于加速科学计算。很多研究人员利用GPUs的计算资源加速主流的密码原语。例如,Pan等人利用GPUs的定点数计算能力加速ECDSA,Niall等人利用GPUs的双精度浮点数计算能力加速RSA,吞吐量都达到了新的峰值。为了适应GPUs浮点数计算能力发展快速这一特点,本发明结合基于双精度浮点数的积和熔加指令和整数域算数指令,加速素数域的大整数模乘运算。
当前计算机基本数据类型有对应的固定字长,大整数在计算机中无法通过基本数据类型直接表示,研究人员一般拆分大整数,用多个基本数据类型表示一个大整数,采用多精度计算方式计算大整数模乘。
本发明使用的双精度浮点数格式符合IEEE 754所规定的浮点数标准。IEEE754标准中一个浮点数由符号位,阶码和尾码组成,其中尾码包含1位隐含位和若干位分数部分。一个双精度浮点数包含1位符号位,12位阶码,1位隐含位和52位分数部分,隐含位即在计算机中不显示表示。
发明内容
本发明提供一种实现素数域大整数模乘计算加速的方法,能够充分利用计算资源的双精度浮点计算能力,提升大整数模乘的计算速度。
一种实现素数域大整数模乘计算加速的方法,其步骤为:
1)将定义在素数域Fp上长度为k比特的大整数A和B分为N段,前(N-1)段每段为w比特,第N段为r比特,w≥r;其中,p为2k-σ,σ为小于2w的素数;
2)将被乘数A、乘数B的每段分别转化为双精度浮点数;采用积和熔加运算对被转化后的被乘数A、乘数B进行乘加操作,并将运算结果转化为一定点数R;
3)将该定点数R分为2N段,在R数值不变的情况下,将R的前(2N-1)段的段长设置为w比特;利用乘法操作和加法操作将R约减为N段定点数利用乘法操作,加法操作和移位操作将超过k比特的部分消减,使得为k比特的定点数;
其中,“大整数”是指无法仅用一个双精度浮点数表示的整数。
进一步的,被乘数A和乘数B的分段长度其中52为双精度浮点数的尾码长度;被乘数A和乘数B的前(N-1)段的比特长度w和第N段比特长度r满足等式(N-1)×w+r=k,并且在52≥w≥r的情况下,使得w-r尽量小。
进一步的,对被乘数和乘数分段后,A[0:N-1]表示被乘数A的第0~(N-1)的N个段,A’[0:N-1]为A[0:N-1]的浮点数形式,B[0:N-1]表示乘数的第0~(N-1)的N个段,B’[0:N-1]为B[0:N-1]的浮点数形式。
进一步的,所述采用积和熔加运算对被转化后的被乘数A、乘数B进行乘加操作,包括:首先初始化2N个定点数记为R[0:2N-1];其次按照段扫描的大整数乘法次序∑i,jA'[i]·B'[j],计算被乘数A’的一个段A’[i]和乘数B’的一个段B’[j]与加数C0的乘加结果Mij[0],然后计算被乘数A’的一个段A’[i]和乘数B’的一个段B’[j]与加数C1的乘加结果Mij[1],其中0≤i,j<N;设conv_2_bin(x)的操作为求x的二进制形式,将conv_2_bin(Mij[0])累加到定点数R[i+j+1]中,将conv_2_bin(Mij[1])累加到R[i+j]中。
进一步的,2N个定点数R[0:2N-1]的初始化方法是:当t∈[0,N-1]时,R[t]=-[(t×(0x433+w)+(t+1)×0x433)&0xFFF]<<52,当t∈[N,2N-1]时,R[t]=-[((t+1)×(0x433+w)+t×0x433)&0xFFF]<<52。其中,0x433为双精度浮点数阶码位的偏移量1023加上52的十六进制形式。0xFFF为212-1的十六进制形式。
进一步的,加数C0的值为252+w,加数C1的值为252+w+252-Mij[0]。
进一步的,将R的前(2N-1)段的段长设置为w比特的方法为:Rt+1=Rt+1+(Rt>>w),t∈[0,2N-2]。其中,Rt表示R中的第t+1段,Rt+1表示R中的第t+2段。
进一步的,所述利用乘法操作和加法操作将R约减为N段定点数包括:约减后的取值范围为[0,2k+σ·2digit-r),其中digit为一个双精度浮点数的比特长度,由于A和B为大整数,其比特长度k远大于一个双精度浮点数的比特长度,所以即
进一步的,表示的第0~(N-1)的N个段,记的高digit-r位为进位carry,根据的范围可知,carry的取值为0或1;所述利用乘法操作,加法操作和移位操作将超过k比特的部分消减,使得为k比特的定点数,包括:首先令 其中maskr为2r-1;然后当t∈[0,N-2]时,令经过进位消减的的取值范围为:当carry为0的时候,当carry为1的时候,由于σ为小素数且digit远小于k,所以进位消减后的取值范围可统一为[0,2k-1]。
与现有技术相比,本发明的积极效果为:
本发明在计算素数域大整数模乘时,首先将被乘数与乘数拆分并转化为多个双精度浮点类型的数值,在浮点数转化过程中,充分利用了双精度浮点数尾数中的分数部分;利用浮点数的积和熔加指令对转化后的被乘数和乘数进行乘加操作,并将乘加结果转换为二进制形式累加到定点数中,对存放累加结果的定点数进行位数约减得到模乘结果,本方法利用浮点数计算指令实现素数域大整数模乘,构思新颖,计算高效,最大化利用计算机的双精度浮点数存储格式,提升了大整数模乘的计算速度。
附图说明
图1为本发明的利用浮点数计算指令实现素数域大整数模乘计算加速方法流程图。
具体实施方式
下面对本发明的技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
对于给定的素数域Fp,p=2221-3,A和B为素数域Fp上的大整数,计算A乘以B对p取模时,利用浮点数计算指令实现素数域大整数模乘计算加速方法,主要包括以下步骤:
1)将长度为221比特的被乘数A和乘数B分别分为N段,N=5;其中,前4段每段为45比特,第5段为41比特;
2)对被乘数和乘数分段后,A[0:4]表示被乘数A的第0~4的5个段,B[0:4]表示乘数B的第0~4的5个段。将A[0:4]的每一段转化为双精度浮点形式记为A’[0:4],将B[0:4]的每一段转化为双精度浮点形式记为B’[0:4]。
3)按照段扫描的大整数乘法次序∑i,jA'[i]·B'[j],i,j∈[0,4],先计算被乘数A’的一个段A’[i],和乘数B’的一个段B’[j]与加数C0的乘加结果Mij[0],其中,C0=297;然后计算被乘数A’的一个段A’[i],和乘数B’的一个段B’[j]与加数C1的乘加结果Mij[1],其中C1=297+252-Mij[0]。
4)初始化定点数R,将其分为2N段,记为R[0:2N-1];R[0:2N-1]的初始化方式为:
5)设conv_2_bin(x)的操作为求x的二进制形式,将conv_2_bin(Mij[0])累加到定点数R[i+j+1]中,将conv_2_bin(Mij[1])累加到R[i+j]中。
6)将R[0:9]的前9段的段长设置为45比特,设置方法为:
Rt+1=Rt+1+(Rt>>45),t∈[0,8]
8)表示的第0~(N-1)的N个段,记的高23位为进位carry,根据步骤7)中的范围可知,carry的取值为0或1;利用乘法操作,加法操作和移位操作将N段定点数消减为221比特。令 然后当t∈[0,3]时,令经过进位消减操作后,
最后,通过对密码学中常用的7个素数域,用本发明提出的利用浮点数计算指令实现素数域大整数模乘计算加速方法计算相关参数,得出以下表1。
表1.常用素数域的分组长度和段长选择
p | k | σ | N | w | r |
2<sup>221</sup>-3 | 221 | 3 | 5 | 45 | 41 |
2<sup>222</sup>-117 | 222 | 117 | 5 | 45 | 42 |
2<sup>251</sup>-9 | 251 | 9 | 5 | 51 | 47 |
2<sup>255</sup>-19 | 255 | 19 | 5 | 51 | 51 |
2<sup>382</sup>-105 | 382 | 105 | 8 | 48 | 46 |
2<sup>383</sup>-187 | 383 | 187 | 8 | 48 | 47 |
2<sup>414</sup>-17 | 414 | 17 | 8 | 52 | 50 |
基于同一发明构思,本发明的另一实施例提供一种非对称密码方法,其中包含素数域大整数模乘计算,所述素数域大整数模乘采样本发明的方法进行计算。
基于同一发明构思,本发明的另一实施例提供一种电子装置(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。
基于同一发明构思,本发明的另一实施例提供一种计算机可读存储介质(如ROM/RAM、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。
以上公开的本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例所公开的内容,本发明的保护范围以权利要求书界定的范围为准。
Claims (10)
1.一种实现素数域大整数模乘计算加速的方法,其步骤为:
1)A和B为定义在素数域Fp上的大整数,p为2k-σ,σ为小于2w的素数;将长度为k比特的被乘数A和乘数B分别分为N段;其中,前(N-1)段每段为w比特,第N段为r比特,w≥r;
2)将被乘数A、乘数B的每段分别转化为双精度浮点数;采用积和熔加运算对被转化后的被乘数A、乘数B进行乘加操作,并将运算结果转化为一定点数R;
3)将该定点数R分为2N段,在R数值不变的情况下,将R的前(2N-1)段的段长设置w比特;利用乘法操作和加法操作将R约减为N段定点数利用乘法操作,加法操作和移位操作将超过k比特的部分消减,使得为k比特的定点数;
3.如权利要求1或2所述的方法,其特征在于,对被乘数和乘数分段后,A[0:N-1]表示被乘数A的第0~(N-1)的N个段,A’[0:N-1]为A[0:N-1]的浮点数形式,B[0:N-1]表示乘数的第0~(N-1)的N个段,B’[0:N-1]为B[0:N-1]的浮点数形式。
4.如权利要求3所述的方法,其特征在于,所述采用积和熔加运算对被转化后的被乘数A、乘数B进行乘加操作,包括:首先初始化定点数R,将其分为2N段,记为R[0:2N-1];其次按照段扫描的大整数乘法次序∑i,jA'[i]·B'[j],计算被乘数A’的一个段A’[i]和乘数B’的一个段B’[j]与加数C0的乘加结果Mij[0],然后计算被乘数A’的一个段A’[i]和乘数B’的一个段B’[j]与加数C1的乘加结果Mij[1],其中0≤i,j<N;设conv_2_bin(x)的操作为求x的二进制形式,将conv_2_bin(Mij[0])累加到定点数R[i+j+1]中,将conv_2_bin(Mij[1])累加到R[i+j]中。
5.如权利要求4所述的方法,其特征在于,所述初始化定点数R,包括:当t∈[0,N-1]时,R[t]=-[(t×(0x433+w)+(t+1)×0x433)&0xFFF]<<52,当t∈[N,2N-1]时,R[t]=-[((t+1)×(0x433+w)+t×0x433)&0xFFF]<<52。
6.如权利要求4所述的方法,其特征在于,加数C0的值为252+w,加数C1的值为252+w+252-Mij[0]。
7.如权利要求1或5所述的方法,其特征在于,将R的前(2N-1)段的段长设置为w比特的方法为:Rt+1=Rt+1+(Rt>>w),t∈[0,2N-2],其中,Rt表示R中的第t+1段,Rt+1表示R中的第t+2段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110783676.2A CN113608718B (zh) | 2021-07-12 | 2021-07-12 | 一种实现素数域大整数模乘计算加速的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110783676.2A CN113608718B (zh) | 2021-07-12 | 2021-07-12 | 一种实现素数域大整数模乘计算加速的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113608718A true CN113608718A (zh) | 2021-11-05 |
CN113608718B CN113608718B (zh) | 2024-06-25 |
Family
ID=78337471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110783676.2A Active CN113608718B (zh) | 2021-07-12 | 2021-07-12 | 一种实现素数域大整数模乘计算加速的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113608718B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114422116A (zh) * | 2021-12-14 | 2022-04-29 | 阿里巴巴(中国)有限公司 | 数据处理方法及装置 |
CN117908835A (zh) * | 2024-03-20 | 2024-04-19 | 南京邮电大学 | 一种基于浮点数计算能力加速sm2国密算法的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2327924A1 (en) * | 2000-12-08 | 2002-06-08 | Ibm Canada Limited-Ibm Canada Limitee | Processor design for extended-precision arithmetic |
CN104461449A (zh) * | 2014-11-14 | 2015-03-25 | 中国科学院数据与通信保护研究教育中心 | 基于向量指令的大整数乘法实现方法及装置 |
CN105930128A (zh) * | 2016-05-17 | 2016-09-07 | 中国科学院数据与通信保护研究教育中心 | 一种利用浮点数计算指令实现大整数乘法计算加速方法 |
CN112181360A (zh) * | 2019-07-04 | 2021-01-05 | 福建天泉教育科技有限公司 | 浮点数的乘法运算方法及计算机可读存储介质 |
WO2021073512A1 (zh) * | 2019-10-14 | 2021-04-22 | 安徽寒武纪信息科技有限公司 | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 |
-
2021
- 2021-07-12 CN CN202110783676.2A patent/CN113608718B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2327924A1 (en) * | 2000-12-08 | 2002-06-08 | Ibm Canada Limited-Ibm Canada Limitee | Processor design for extended-precision arithmetic |
CN104461449A (zh) * | 2014-11-14 | 2015-03-25 | 中国科学院数据与通信保护研究教育中心 | 基于向量指令的大整数乘法实现方法及装置 |
CN105930128A (zh) * | 2016-05-17 | 2016-09-07 | 中国科学院数据与通信保护研究教育中心 | 一种利用浮点数计算指令实现大整数乘法计算加速方法 |
CN112181360A (zh) * | 2019-07-04 | 2021-01-05 | 福建天泉教育科技有限公司 | 浮点数的乘法运算方法及计算机可读存储介质 |
WO2021073512A1 (zh) * | 2019-10-14 | 2021-04-22 | 安徽寒武纪信息科技有限公司 | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 |
Non-Patent Citations (1)
Title |
---|
郑昉昱: ""基于GPU的高性能密码计算"", 《信息安全研究》, vol. 5, no. 1, 31 January 2019 (2019-01-31), pages 88 - 94 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114422116A (zh) * | 2021-12-14 | 2022-04-29 | 阿里巴巴(中国)有限公司 | 数据处理方法及装置 |
CN114422116B (zh) * | 2021-12-14 | 2023-11-28 | 阿里巴巴(中国)有限公司 | 数据处理方法及装置 |
CN117908835A (zh) * | 2024-03-20 | 2024-04-19 | 南京邮电大学 | 一种基于浮点数计算能力加速sm2国密算法的方法 |
CN117908835B (zh) * | 2024-03-20 | 2024-05-17 | 南京邮电大学 | 一种基于浮点数计算能力加速sm2国密算法的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113608718B (zh) | 2024-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7476175B2 (ja) | 乗算累積回路 | |
US9519460B1 (en) | Universal single instruction multiple data multiplier and wide accumulator unit | |
US20210349692A1 (en) | Multiplier and multiplication method | |
CN113138750A (zh) | 算数逻辑单元、浮点数乘法计算的方法及设备 | |
US11816448B2 (en) | Compressing like-magnitude partial products in multiply accumulation | |
CN113608718B (zh) | 一种实现素数域大整数模乘计算加速的方法 | |
CN106951211A (zh) | 一种可重构定浮点通用乘法器 | |
WO2022133686A1 (zh) | 有/无符号乘累加装置及方法 | |
US5796645A (en) | Multiply accumulate computation unit | |
CN117908835B (zh) | 一种基于浮点数计算能力加速sm2国密算法的方法 | |
CN112860220A (zh) | 一种适用于多精度计算的可重构浮点乘加运算单元及方法 | |
WO2022170811A1 (zh) | 一种适用于混合精度神经网络的定点乘加运算单元及方法 | |
CN114341796A (zh) | 带符号多字乘法器 | |
CN112558920B (zh) | 有/无符号乘累加装置及方法 | |
Tang et al. | A high-accuracy hardware-efficient multiply–accumulate (mac) unit based on dual-mode truncation error compensation for cnns | |
CN113672196B (zh) | 一种基于单数字信号处理单元的双乘法计算装置和方法 | |
WO2022174733A1 (zh) | 一种神经元加速处理方法、装置、设备及可读存储介质 | |
Mohan et al. | Evaluation of Mixed-Radix Digit Computation Techniques for the Three Moduli RNS {2 n− 1, 2 n, 2 n+ 1− 1} | |
CN115827555A (zh) | 数据处理方法、计算机设备、存储介质和乘法器结构 | |
US20220075598A1 (en) | Systems and Methods for Numerical Precision in Digital Multiplier Circuitry | |
WO2022068327A1 (zh) | 运算单元、浮点数计算的方法、装置、芯片和计算设备 | |
CN113625990B (zh) | 浮点转定点装置、方法、电子设备及存储介质 | |
US20230259581A1 (en) | Method and apparatus for floating-point data type matrix multiplication based on outer product | |
Iyer et al. | Generalised Algorithm for Multiplying Binary Numbers Via Vedic Mathematics | |
JP2705640B2 (ja) | 積和演算器 |
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 |