[发明专利]基于向量指令的大整数乘法实现方法及装置有效
申请号: | 201410645961.8 | 申请日: | 2014-11-14 |
公开(公告)号: | CN104461449B | 公开(公告)日: | 2018-02-27 |
发明(设计)人: | 林璟锵;赵原;荆继武;潘无穷;郑昉昱;向继 | 申请(专利权)人: | 中国科学院数据与通信保护研究教育中心 |
主分类号: | G06F7/523 | 分类号: | G06F7/523 |
代理公司: | 北京德琦知识产权代理有限公司11018 | 代理人: | 牛峥,王丽琴 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 向量 指令 整数 乘法 实现 方法 装置 | ||
技术领域
本发明涉及计算机技术中的数据加解密领域,特别涉及一种基于向量指令的大整数乘法实现方法及装置。
背景技术
大整数乘法广泛应用于计算机技术中公钥密码计算过程,保证所传输数据的安全性。在计算机的数据密码计算领域,大整数乘法常常用于计算大整数模乘。大整数模乘是一类公钥加密算法,如RSA算法和椭圆曲线算法)的基本运算,决定了算法的计算速度。对于事先不知道模数的大整数模乘,如RSA算法中的模乘,一般使用蒙哥马利模乘算法实现;对于可以事先确定模数且模数为梅森素数的大整数模乘,如椭圆曲线算法,比如SM2算法和ECDSA算法中的模乘,可以先计算大整数乘法,再用快速约简对乘积取模。
大整数乘法可以用硬件实现,也可以用软件实现。硬件实现包括采用现场可编辑逻辑门阵列(FPGA)和专用集成电路(ASIC)实现。硬件实现比较灵活,可以按照需要定制乘法器,如乘法器的字长,流水线的设计等。但是硬件实现一般开发难度大,开发周期长,成本高。软件实现是在商用处理器上进行软件编程,利用商用处理器的特性优化算法。商用处理器主要包括以下几类:中央处理器(CPU)、数字信号处理器(DSP)和图形处理器(GPU)。这些处理器使用不同的指令集,存储结构也有所不同。CPU和DSP一般是单核或多核的处理器,每个核都有较强的计算能力,可以执行不同指令,支持向量指令集。GPU是众核处理器,一般拥有数千个核,每个核的计算能力较弱,多个核同时执行相同的指令。对于大整数乘法的计算速率影响最大的是处理器使用的指令集,直接决定完成一次大整数乘法需要的指令数。
处理器的指令可分为两大类:标量指令和向量指令。标量指令是一条指令处理一个字;向量指令是一条指令处理一个向量,一个向量包含多个字,即一条向量指令可以对向量中的所有字同时执行相同操作。CPU,包括x86、ARM,支持向量指令集,是单指令多数据(SIMD)的处理器。GPU是单指令多线程(SIMT)的处理器,即多个线程执行相同的指令,但每个线程执行的指令一次只处理一个字。而且,CPU和GPU选择了不同的发展方向。CPU不断加强向量指令,增加向量长度,添加新的向量指令,提升单核计算能力,GPU则不断增加核的数量,提高线程并行度,增大总的计算吞吐量。因此,对于用户最常用的CPU处理器,要想发挥其计算能力,必须充分利用向量指令。
x86CPU近20年不断加强向量指令集,从MMX指令集、SSE指令集发展到AVX指令集、AVX2指令集,AVX2指令集支持256位的整数和浮点运算。英特尔公司的Xeon Phi协处理器支持512位向量指令集,支持对16个单精度浮点数或16个32位整数同时计算。向量指令集中的向量乘法指令和向量加法指令对两个向量相同位置的字进行计算。如果向量内不同位置的字数据相关,如加法进位要累加到更高位置的字中,向量指令就很难处理。
计算大整数相乘要对多个向量乘法结果求和,每次相加都要使用向量加法指令将相同位置的字相加,并处理这些字产生的进位。其中最重要的是获取和保存各字产生的进位,并将进位累加到和向量。一个字产生的进位需要加到更高位置的字中,而且还可能产生新的进位,所以进位是不断向更高位置的字传播的,直到不再产生新的进位。所以如何处理加法进位是实现基于向量指令的大整数乘法的关键,也是难点。
目前利用向量指令处理大整数乘法中的加法进位的方法是使用冗余表示,即:将大整数拆开存储到向量每个字的低比特位,空出若干高比特位,向量相加时产生的进位会保存在高比特位,不会溢出,也不用立刻向更高的字传播,最后要将和向量从冗余表示转换回整数。
这种方法的主要缺点是:第一,将大整数转换为冗余表示,以及将大整数乘法的结果从冗余表示转换回整数需要很多向量指令;第二,由于每个字都要留出若干高位容纳加法产生的进位,大整数可能需要拆成更多的字,这样会增加向量乘法指令和向量加法指令的运行次数。
冗余表示的方法不能非常高效地计算大整数乘法中的向量快速求和,所以计算效率较低。
发明内容
有鉴于此,本发明提供了一种基于向量指令的大整数乘法实现方法,该方法能够提高大整数乘法的计算效率。
本发明还提供一种基于向量指令的大整数乘法的实现装置,该装置能够提高大整数乘法的计算效率。
根据上述目的,本发明是这样实现的:
一种基于向量指令的大整数乘法实现方法,该方法应用在计算机的公钥密码计算过程,
A、将大整数乘法的被乘数和乘数拆分为一个或多个向量长度整数;
B、计算向量长度整数相乘,过程为:
(1)将被乘数向量依次与乘数向量的每个字相乘,得到所有积向量;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院数据与通信保护研究教育中心,未经中国科学院数据与通信保护研究教育中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410645961.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种融化橡胶的保温搅拌罐系统
- 下一篇:一种塑胶风叶生产中的混料装置