[发明专利]一种利用浮点数计算指令实现大整数乘法计算加速方法有效
申请号: | 201610325863.5 | 申请日: | 2016-05-17 |
公开(公告)号: | CN105930128B | 公开(公告)日: | 2018-11-06 |
发明(设计)人: | 郑昉昱;董建阔;林璟锵;荆继武;蔡权伟;赵原 | 申请(专利权)人: | 中国科学院数据与通信保护研究教育中心 |
主分类号: | G06F7/487 | 分类号: | G06F7/487 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 司立彬 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种利用浮点数计算指令实现大整数乘法计算加速方法。本方法为:1)将长度为n比特的被乘数A分为N段,长度为m比特乘数B分为M段;每段的长度为w比特,M≥N;2)将被乘数A、乘数B的每段分别转化为一浮点数;3)采用熔加运算对转化后的被乘数A、乘数B进行乘法运算;并将运算结果转化为一定点数;4)将该定点数分为多段,每段长度为w比特;然后对每一段定点数R[u]:R[u]对2w进行求模运算,将求模结果保存到C[u]中;然后对R[u]右移w位,结果保存到Carry1中;然后将Carry1与R[u+1]作和,并保存到R[u+1]中。本发明减少了计算的复杂度,提升了计算速度。 | ||
搜索关键词: | 一种 利用 浮点 计算 指令 实现 整数 乘法 加速 方法 | ||
【主权项】:
1.一种利用浮点数计算指令实现大整数乘法计算加速方法,其步骤为:1)从低位到高位将长度为n比特的被乘数A分为N段,长度为m比特乘数B分为M段,若最后一段长度不足w比特,将该最后一段高位补0;其中,每段的长度为w比特,M≥N;将分段后位宽w比特的每段定义为一个字;其中,A[0:N‑1]表示被乘数A的第0~(N‑1)的N个字,B[0:M‑1]乘数B的第0~(M‑1)的M个字,2)将被乘数A、乘数B的每段分别转化为一浮点数;3)采用熔加运算对步骤2)转化后的被乘数A、乘数B进行乘法运算;并将运算结果转化为一定点数;4)将该定点数分为多段,每段长度为w比特;然后对每一段定点数R[u]分别进行下列操作:R[u]对2w进行求模运算,将求模结果保存到C[u]中;然后对R[u]右移w位,结果保存到Carry1中;然后将该R[u]右移后的结果Carry1与R[u+1]作和,并保存到R[u+1]中;其中,R[u]为第u段定点数,R[u+1]为第u+1段定点数;其中,将被乘数A的每段分别转化为一浮点数的方法为:首先初始化(N+1)个初值为0的浮点数用来表示分段后的被乘数,即用一组浮点数A’[0:N]表示转化后的被乘数;设被乘数A第u段对应的字A[u]转化的浮点数结果为A’[u],然后从A[0]开始到A[N‑1]中的每一字A[u]分别进行以下操作:判断A[u]与2w‑1的大小关系,如果A[u]小于2w‑1,则将长度为w的数值A[u]转化为浮点数A’[u];否则,将(A[u]‑2w)的计算结果保存到A’[u]中,并且置A[u+1]的数值为(A[u+1]+1);最后得到存储转化后的被乘数A的一组浮点数A’[0:N];将乘数B的每段分别转化为一浮点数的方法为:首先初始化(M+1)个初值为0的浮点数用来表示分段后的乘数,即用一组浮点数B’[0:M]表示转化后的乘数;设乘数B第u段对应的字B[u]转化的浮点数结果为B’[u],然后从B[0]开始到B[M‑1]中的每一字B[u]分别进行以下操作:判断B[u]与2w‑1的大小关系,如果B[u]小于2w‑1,则将长度为w的数值B[u]转化为浮点数B’[u];否则,将(B[u]‑2w)的计算结果保存到B’[u]中,并且置B[u+1]的数值为(B[u+1]+1);最后得到存储转化后的乘数B的一组浮点数B’[0:M]。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院数据与通信保护研究教育中心,未经中国科学院数据与通信保护研究教育中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610325863.5/,转载请声明来源钻瓜专利网。