CN100378654C - 使用乘加加指令实现长数据乘法的装置及方法 - Google Patents

使用乘加加指令实现长数据乘法的装置及方法 Download PDF

Info

Publication number
CN100378654C
CN100378654C CNB2006101648746A CN200610164874A CN100378654C CN 100378654 C CN100378654 C CN 100378654C CN B2006101648746 A CNB2006101648746 A CN B2006101648746A CN 200610164874 A CN200610164874 A CN 200610164874A CN 100378654 C CN100378654 C CN 100378654C
Authority
CN
China
Prior art keywords
source operand
long data
result
adding addition
instruction
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.)
Active
Application number
CNB2006101648746A
Other languages
English (en)
Other versions
CN1963746A (zh
Inventor
高建良
何子键
徐勇军
李晓维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CNB2006101648746A priority Critical patent/CN100378654C/zh
Publication of CN1963746A publication Critical patent/CN1963746A/zh
Application granted granted Critical
Publication of CN100378654C publication Critical patent/CN100378654C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

本发明涉及安全处理器技术领域,公开了使用乘加加指令实现长数据乘法的装置,该装置包括:部分积产生单元,用于实现第一源操作数与第二源操作数的乘积,将得到的乘积输出给压缩单元;压缩单元,用于实现部分积产生单元输入的部分积、第三源操作数和第四源操作数的压缩,将压缩结果输出给加法单元;所述第三源操作数为长数据乘法运算中产生的中间结果,第四源操作数为上一次乘加加运算产生的进位;加法单元,用于对接收自压缩单元的压缩结果进行最终加法操作,输出积与进位。本发明同时公开了一种使用乘加加指令实现长数据乘法的方法。利用本发明,大大提高了安全处理器在执行长数据乘法运算时的运算效率和速度。

Description

使用乘加加指令实现长数据乘法的装置及方法
技术领域
本发明涉及安全处理器技术领域,尤其涉及一种使用乘加加指令实现长数据乘法的装置及方法。
背景技术
随着计算机及信息技术的发展和广泛应用,信息安全显得日益重要,这使得在芯片设计时就需要考虑对信息安全特定操作的支持。
信息安全处理的很多操作是基于对数字信息进行加解密,为了提高这类操作的效率,有必要设计专门的安全处理器。
密码算法经常需要实现大数据之间的乘法,而且这些大数据的长度往往超出了安全处理器的字长,一般称这种大数为长数据。所以如何在短字长的安全处理器上实现长数据乘法成为安全处理器设计的关键技术之一。
通常做法是分解长数据为多个机器字长的序列,然后采用普通乘法指令分别得到部分乘积和进位,然后累加相应的乘积和进位。
在这种做法中,由于每一个中间结果及进位都需要一条独立的加法指令来处理,所以导致了在短字长的安全处理器上进行长数据乘法时运算的效率非常低,运算的速度也非常低。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的一个目的在于提供一种使用乘加加指令实现长数据乘法的装置,以提高安全处理器在执行长数据乘法运算时的运算效率和速度。
本发明的另一个目的在于提供一种使用乘加加指令实现长数据乘法的方法,以提高安全处理器在执行长数据乘法运算时的运算效率和速度。
(二)技术方案
为达到上述目的,本发明提供了一种使用乘加加指令实现长数据乘法的装置,该装置包括:
部分积产生单元,用于实现第一源操作数与第二源操作数的乘积,将得到的乘积输出给压缩单元;
压缩单元,用于实现部分积产生单元输入的部分积、第三源操作数和第四源操作数的压缩,将压缩结果输出给加法单元;所述第三源操作数为长数据乘法运算中产生的中间结果,第四源操作数为上一次乘加加运算产生的进位;
加法单元,用于对接收自压缩单元的压缩结果进行最终加法操作,输出积与进位。
所述部分积产生单元为一组与门逻辑。
所述压缩单元由3级压缩组件构成,分别为第0级压缩组件、第1级压缩组件和第2级压缩组件。
所述第0级压缩组件为3个,第1级压缩组件为2个,第2级压缩组件为1个。
所述第一源操作数、第二源操作数和第三源操作数存放在随机存储器中,可以采用多体存储技术同时取得。
所述第四源操作数固定为进位寄存器。
为达到上述另一个目的,本发明提供了一种使用乘加加指令实现长数据乘法的方法,该方法包括:
A、将需要做乘法的两个长数据按机器字长分解为第一源操作数序列和第二源操作数序列,对第一源操作数序列的各个部分与第二源操作数序列的各个部分依次执行乘加加运算,运算中的所述第三源操作数为长数据乘法运算中产生的中间结果,第四源操作数为上一次乘加加运算产生的进位;
B、当第一源操作数序列的一个部分与第二源操作数序列的各个部分执行完一遍乘加加运算后,将进位寄存器中的值保存到随机存储器中;
C、当第一源操作数序列各个部分与第二源操作数序列各个部分都执行完乘加加运算后,在随机存储器中就得到最终结果。
所述乘加加指令为:操作码第一源操作数,第二源操作数,第三源操作数,目的操作数。
所述乘加加指令用于实现{进位寄存器,目的操作数}←第一源操作数×第二源操作数+第三源操作数+第四源操作数;其中,所述第一源操作数、第二源操作数和所述第三源操作数存放在随机存储器中,所述第四源操作数为进位寄存器,隐含在操作码中。
所述随机存储器中用于保存最终结果的结果空间大小为源操作数长度的两倍。
所述随机存储器中用于保存最终结果的结果空间,在运算过程中保存产生的中间结果,运算完成后结果空间中存放的结果就是最终结果。
所述中间结果存放在所述结果空间相应的单元中。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1、利用本发明提供的使用乘加加指令实现长数据乘法的装置及方法,在实现长数据乘法时可以把长数据乘法运算中产生的中间结果和进位作为乘加加指令的源操作数,避免了两次加法指令的执行,大大提高了安全处理器在执行长数据乘法运算时的运算效率和速度。
2、利用本发明提供的使用乘加加指令实现长数据乘法的装置及方法,由于在进行长数据乘法时让运算中产生的中间结果和进位作为第三源操作数和第四源操作数及时参与运算,不需要另外执行加法指令来处理,所以提高了在短字长的安全处理器上进行长数据乘法的速度。
3、利用本发明提供的使用乘加加指令实现长数据乘法的装置及方法,由于直接将计算的中间结果存放在随机存储器中用于保存最终结果的结果空间,不必利用其他存储空间来存放中间结果,所以节省了中间结果的存放空间,同时也降低了控制的复杂性。
附图说明
图1为本发明提供的使用乘加加指令实现长数据乘法的装置的结构示意图。
图2为本发明提供的使用乘加加指令实现长数据乘法的方法流程图。
图3为现有技术中使用普通指令实现长数据乘法的示意图;此处,以两倍字长的操作数为例。
图4为本发明提供的使用乘加加指令实现长数据乘法的数据流示意图。
图5为依照本发明实施例使用乘加加指令实现长数据乘法的示意图;此处,以两倍字长的操作数为例。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
如图1所示,图1为本发明提供的使用乘加加指令实现长数据乘法的装置的结构示意图。该装置实现的功能是:{进位寄存器,目的操作数}←第一源操作数×第二源操作数+第三源操作数+第四源操作数。该装置包括部分积产生单元10、压缩单元11和加法单元12。其中,部分积产生单元10为一组与门逻辑,用于实现第一源操作数与第二源操作数的乘积,将得到的乘积输出给压缩单元11。压缩单元11由3级压缩组件构成,分别为3个第0级压缩组件、2个第1级压缩组件和1个第2级压缩组件,用于实现部分积产生单元10输入的乘积、第三源操作数和第四源操作数三者的压缩,将压缩结果输出给加法单元12。所述第三源操作数为长数据乘法运算中产生的中间结果,第四源操作数为上一次乘加加运算产生的进位。加法单元12用于对接收自压缩单元11的压缩结果进行加法操作,输出积与进位。
所述第一源操作数、第二源操作数和第三源操作数存放在随机存储器(Random Access Memory,RAM)中,采用多体存储技术可以同时取得,不会增加取操作数时间;第四源操作数固定为进位寄存器(Carry Register,CR),隐含在操作码中,在使用指令时此操作数不用显示给出。
基于图1所示的使用乘加加指令实现长数据乘法的装置的结构示意图,图2示出了本发明提供的使用乘加加指令实现长数据乘法的方法流程图。该方法使用乘加加指令实现长数据乘法,让中间积和进位及时参与运算,大大提高了运算速度,具体包括以下步骤:
步骤201:将需要做乘法的两个长数据按机器字长分解第一源操作数序列和第二源操作数序列,对第一源操作数序列的各个部分与第二源操作数序列的各个部分、中间结果和进位依次执行乘加加指令,运算中的所述第三源操作数为长数据乘法运算中产生的中间结果,第四源操作数为上一次乘加加运算产生的进位;
步骤202:当第一源操作数序列的一个部分与第二源操作数序列的各个部分、中间结果和进位执行完一遍乘加加运算后,将进位寄存器中的值保存到随机存储器中;
步骤203:当第一源操作数序列各个部分与第二源操作数序列各个部分、中间结果和进位都执行完乘加加运算后,在随机存储器中就得到最终结果。
上述乘加加指令的格式为:操作码第一源操作数,第二源操作数,第三源操作数,目的操作数。所述乘加加指令用于实现如下功能:{进位寄存器,目的操作数}←第一源操作数×第二源操作数+第三源操作数+第四源操作数;其中,所述第一源操作数、第二源操作数和所述第三源操作数存放在随机存储器中,所述第四源操作数固定为进位寄存器,隐含在操作码中。
上述随机存储器中用于保存最终结果的结果空间大小为源操作数长度的两倍。随机存储器中用于保存最终结果的结果空间,在运算过程中保存产生的中间结果,运算完成后结果空间中存放的结果就是最终结果。中间结果存放在所述结果空间相应的单元中。
普通的乘法指令和加法指令通常是两个源操作数。下面以一个实例来介绍使用普通指令实现长数据乘法的流程。
如图3所示,图3为现有技术中使用普通指令实现长数据乘法的示意图。此处,以两倍字长的操作数为例。机器字长为一个字节,A、B长度为二个字节,现在要实现A×B。把A、B分解为长度为一个字节的序列A1A0、B1B0。图3中的伪代码表示了运算的流程细节,首先用B0去乘A1A0,为防止进位寄存器中的值被覆盖,在下一条乘法指令执行之前需要及时转移进位寄存器中的值,本例中用一条ADD指令实现;然后用B1乘A1A0。除了与A0相乘外,都需要用一条ADD指令累加部分积。
使用乘加加指令的实现长数据乘法,需要的指令数要少于普通的乘法指令。如图4所示,图4为本发明提供的使用乘加加指令实现长数据乘法的数据流示意图。n个机器字长的两个数相乘,它们分别存放在n个RAM单元中;RAM中另外有2n个单元存放结果,中间结果和最终结果都存放在这2n个内存单元中。进位寄存器存放每次乘加加运算产生的进位。
图5为依照本发明实施例使用乘加加指令实现长数据乘法的示意图。此处,也以两倍字长的操作数为例。A、B长度为二个字节,现在要实现A×B。把A、B分解为长度为一个字节的序列A1A0、B1B0。该过程可以分为以下6个步骤:
(1)、MAC A0,B0,0,E0,表示E0←A0*B0+0,此时不要加进位寄存器的值;
(2)、MAAA1,B0,0,E1,表示E1←A1*B0+0+CR;
(3)、MAA0,0,0,E2,表示E2←0*0+0+CR,即把进位寄存器CR的值保存到E2;
(4)、MACA0,B1,E1,E1,表示E1←A0*B1+E1;
(5)、MAAA1,B1,E2,E2,表示E2←A1*B1+E2+CR;
(6)、MAA0,0,0,E3,表示E3←0*0+0+CR,即把进位寄存器CR的值保存到E3。
经过上述6个步骤之后,E3E2E1E0中存放的值即为长A×B的最终结果。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种使用乘加加指令实现长数据乘法的装置,其特征在于,该装置包括:
部分积产生单元,用于实现第一源操作数与第二源操作数的乘积,将得到的乘积输出给压缩单元;
压缩单元,用于实现部分积产生单元输入的部分积、第三源操作数和第四源操作数的压缩,将压缩结果输出给加法单元;所述第三源操作数为长数据乘法运算中产生的中间结果,第四源操作数为上一次乘加加运算产生的进位;
加法单元,用于对接收自压缩单元的压缩结果进行最终加法操作,输出积与进位。
2.根据权利要求1所述的使用乘加加指令实现长数据乘法的装置,其特征在于,所述部分积产生单元为一组与门逻辑。
3.根据权利要求1所述的使用乘加加指令实现长数据乘法的装置,其特征在于,所述压缩单元由3级压缩组件构成,分别为第0级压缩组件、第1级压缩组件和第2级压缩组件。
4.根据权利要求3所述的使用乘加加指令实现长数据乘法的装置,其特征在于,所述第0级压缩组件为3个,第1级压缩组件为2个,第2级压缩组件为1个。
5.根据权利要求1所述的使用乘加加指令实现长数据乘法的装置,其特征在于,所述第一源操作数、第二源操作数和第三源操作数存放在随机存储器中。
6.根据权利要求1所述的使用乘加加指令实现长数据乘法的装置,其特征在于,所述第四源操作数固定为进位寄存器。
7.一种使用乘加加指令实现长数据乘法的方法,其特征在于,该方法包括:
A、将需要做乘法的两个长数据按机器字长分解为第一源操作数序列和第二源操作数序列,对第一源操作数序列的各个部分与第二源操作数序列的各个部分依次执行乘加加运算,运算中的所述第三源操作数为长数据乘法运算中产生的中间结果,第四源操作数为上一次乘加加运算产生的进位;
B、当第一源操作数序列的一个部分与第二源操作数序列的各个部分执行完一遍乘加加运算后,将进位寄存器中的值保存到随机存储器中;
C、当第一源操作数序列各个部分与第二源操作数序列各个部分都执行完乘加加运算后,在随机存储器中就得到最终结果。
8.根据权利要求7所述的使用乘加加指令实现长数据乘法的方法,其特征在于,所述乘加加指令为:操作码第一源操作数,第二源操作数,第三源操作数,目的操作数。
9.根据权利要求7或8所述的使用乘加加指令实现长数据乘法的方法,其特征在于,所述乘加加指令用于实现{进位寄存器,目的操作数}←第一源操作数×第二源操作数+第三源操作数+第四源操作数;
其中,所述第一源操作数、第二源操作数和所述第三源操作数存放在随机存储器中,所述第四源操作数为进位寄存器,隐含在操作码中。
10.根据权利要求7所述的使用乘加加指令实现长数据乘法的方法,其特征在于,所述随机存储器中用于保存最终结果的结果空间大小为源操作数长度的两倍。
11.根据权利要求10所述的使用乘加加指令实现长数据乘法的方法,其特征在于,所述随机存储器中用于保存最终结果的结果空间,在运算过程中保存产生的中间结果,运算完成后结果空间中存放的结果就是最终结果。
12.根据权利要求11所述的使用乘加加指令实现长数据乘法的方法,其特征在于,所述中间结果存放在所述结果空间相应的单元中。
CNB2006101648746A 2006-12-07 2006-12-07 使用乘加加指令实现长数据乘法的装置及方法 Active CN100378654C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101648746A CN100378654C (zh) 2006-12-07 2006-12-07 使用乘加加指令实现长数据乘法的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101648746A CN100378654C (zh) 2006-12-07 2006-12-07 使用乘加加指令实现长数据乘法的装置及方法

Publications (2)

Publication Number Publication Date
CN1963746A CN1963746A (zh) 2007-05-16
CN100378654C true CN100378654C (zh) 2008-04-02

Family

ID=38082820

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101648746A Active CN100378654C (zh) 2006-12-07 2006-12-07 使用乘加加指令实现长数据乘法的装置及方法

Country Status (1)

Country Link
CN (1) CN100378654C (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114461275A (zh) 2011-12-22 2022-05-10 英特尔公司 具有独立进位链的加法指令
CN110428247A (zh) * 2019-07-02 2019-11-08 常州市常河电子技术开发有限公司 非对称加密计算中大数乘除法的变权值快速实现方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1049348A (ja) * 1996-08-05 1998-02-20 Toshiba Corp 整数乗算装置
US5862067A (en) * 1995-12-29 1999-01-19 Intel Corporation Method and apparatus for providing high numerical accuracy with packed multiply-add or multiply-subtract operations
CN1490714A (zh) * 2002-10-02 2004-04-21 国际商业机器公司 用于高效模数归约和模数乘法的电路和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5862067A (en) * 1995-12-29 1999-01-19 Intel Corporation Method and apparatus for providing high numerical accuracy with packed multiply-add or multiply-subtract operations
JPH1049348A (ja) * 1996-08-05 1998-02-20 Toshiba Corp 整数乗算装置
CN1490714A (zh) * 2002-10-02 2004-04-21 国际商业机器公司 用于高效模数归约和模数乘法的电路和方法

Also Published As

Publication number Publication date
CN1963746A (zh) 2007-05-16

Similar Documents

Publication Publication Date Title
CN102231102B (zh) 基于余数系统的rsa密码处理方法及协处理器
CN103761068B (zh) 优化的蒙哥马利模乘硬件
CN101986264B (zh) 用于simd向量微处理器的多功能浮点乘加运算装置
CN107729989A (zh) 一种用于执行人工神经网络正向运算的装置及方法
CN103942031B (zh) 椭圆域曲线运算方法
CN104679474A (zh) 有限域gf(2^227)上的乘法器及模乘算法
CN102509036A (zh) 一种可重构密码处理器及抗功耗攻击方法
CN101847137B (zh) 一种实现基2fft计算的fft处理器
Longa Four NEON: Faster elliptic curve scalar multiplications on ARM processors
CN101504599A (zh) 适于数字信号处理应用的专用指令集微处理系统
CN108664447A (zh) 一种矩阵与矢量的乘法运算方法及装置
CN105471855A (zh) 一种用于电子标签快速身份鉴别的低功耗椭圆曲线加密引擎
CN115801244A (zh) 用于资源受限处理器的后量子密码算法实现方法及系统
CN100378654C (zh) 使用乘加加指令实现长数据乘法的装置及方法
CN103279323A (zh) 一种加法器
CN107992283A (zh) 一种基于降维实现有限域乘法的方法和装置
CN114371829A (zh) 多项式乘法器中的数据处理方法、多项式乘法器及处理器
CN101840324A (zh) 支持复数运算和子字并行的64位定浮点乘法器
CN104572012A (zh) 一种基于aop的多项式基gf(2227)高速模乘法器
CN115576606B (zh) 实现矩阵转置乘的方法、协处理器、服务器及存储介质
CN101300544B (zh) 大数乘法方法和装置
CN103761213A (zh) 基于循环流水计算的片上阵列系统
CN103942035B (zh) 处理指令的方法、编译器及指令处理器
CN113705794B (zh) 一种基于动态激活位稀疏的神经网络加速器设计方法
CN114371828A (zh) 多项式乘法器及具有该乘法器的处理器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant