[发明专利]一种实现素数域大整数模乘计算加速的方法在审
申请号: | 202110783676.2 | 申请日: | 2021-07-12 |
公开(公告)号: | CN113608718A | 公开(公告)日: | 2021-11-05 |
发明(设计)人: | 郑昉昱;高莉莉;魏荣;马原;王跃武;范广;万立鹏 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F7/72 | 分类号: | G06F7/72 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 邱晓锋 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 素数 整数 计算 加速 方法 | ||
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比特的定点数;
4)判断是否为所选素数域上的整数,如果是所选素数域上的整数,则即为大整数A和大整数B的模乘结果;如果不是所选素数域上的整数,则将减去p作为大整数A和大整数B的模乘结果。
2.如权利要求1所述的方法,其特征在于,被乘数A和乘数B的分段长度其中52为双精度浮点数的尾码长度;被乘数A和乘数B前(N-1)段的比特长度w和第N段比特长度r满足等式(N-1)×w+r=k,并且在52≥w≥r的情况下,使得w-r尽量小。
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段。
8.如权利要求7所述的方法,其特征在于,所述利用乘法操作和加法操作将R约减为N段定点数包括:约减后的取值范围为[0,2k+σ·2digit-r),其中digit为一个双精度浮点数的比特长度,由于A和B为大整数,其比特长度k远大于一个双精度浮点数的比特长度,所以0<σ·2digit-r<2k,即
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110783676.2/1.html,转载请声明来源钻瓜专利网。