CN109992242A - 基于乘法器的运算方法及装置 - Google Patents
基于乘法器的运算方法及装置 Download PDFInfo
- Publication number
- CN109992242A CN109992242A CN201711487259.3A CN201711487259A CN109992242A CN 109992242 A CN109992242 A CN 109992242A CN 201711487259 A CN201711487259 A CN 201711487259A CN 109992242 A CN109992242 A CN 109992242A
- Authority
- CN
- China
- Prior art keywords
- memory
- numerical value
- multiplier
- storage location
- product
- 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
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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
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)
- General Engineering & Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于乘法器的运算方法及装置,该方法包括:设定周期到期后,获取第一乘数;根据乘法器对应的第二乘数集合得到第一设定个数的子集合和段数差值集合;调用第一加法器和第一移位器计算最小子集合中的各个数值与第二乘数的乘积,将得到的乘积依次保存在第一存储器中;调用第二加法器和第二移位器计算段数差值集合中的各个数值与第二乘数的乘积,将得到的乘积依次保存在第二存储器中;获取第二乘数后,根据第二乘数分别从第一存储器中获取第一乘积以及从第二存储器中获取第二乘积;调用第三加法器计算第一乘积和第二乘积的和,得到第一乘数与第二乘数的乘积。该方案的运算压力大大减小,运算效率得到很大提升,功耗减小。
Description
技术领域
本发明涉及计算机技术领域,尤指一种基于乘法器的运算方法及装置。
背景技术
随着计算机运算速度的迅速提高和Internet分布式计算能力的日益强大,经典的RSA公钥密码体制在密钥长度为1024比特下已经越来越不安全。目前为了保证用户的安全,增加RSA密钥长度是必然趋势。但是随着密钥长度从 1024比特向2048比特,甚至4096比特方向发展的过程中,安全系统能增加其固有的安全性,但是加解密效率会越来越低,同时对计算机系统的要求也会提高。为此,需要具有更高执行效率的RSA硬件系统来提高加解密系统的效率。
而在RSA加解密算法中,乘法器是硬件算法设计的重中之重,只要提高了乘法器的执行效率就可极大提高RSA算法的效率。目前的基于乘法器的运算方法中,完全基于硬件实现运算,每两个乘数相乘都要通过乘法器进行运算,在密钥长度越来越长的情况下,乘法器的运算压力非常大,运算效率很低,功耗很大。
发明内容
本发明实施例提供一种基于乘法器的运算方法及装置,用以解决现有技术中存在的运算压力非常大,运算效率很低,功耗很大的问题。
根据本发明实施例,提供一种基于乘法器的运算方法,所述乘法器包括第一加法器、第一左移位器、第二加法器、第二左移位器、第三加法器、第一存储器和第二存储器,所述方法包括:
设定周期到期后,获取第一乘数;
根据所述乘法器对应的第二乘数集合得到第一设定个数的子集合和段数差值集合,每个子集合包括第二设定个数的数值;
调用所述第一加法器和所述第一移位器计算最小子集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第一存储器中;
调用所述第二加法器和所述第二移位器计算所述段数差值集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第二存储器中;
获取第二乘数后,根据所述第二乘数分别从所述第一存储器中获取第一乘积以及从所述第二存储器中获取第二乘积;
调用所述第三加法器计算所述第一乘积和所述第二乘积的和,得到所述第一乘数与所述第二乘数的乘积。
具体的,根据所述乘法器对应的第二乘数集合得到第一设定个数的子集合和段数差值集合,具体包括:
将所述乘法器对应的第二乘数集合依次划分为第一设定个数的子集合;
依次计算各个子集合与最小子集合之间的差值得到段数差值集合。
具体的,若所述第一乘数为M比特二进制数值,所述第二乘数集合包括N 比特二进制数值中的各个数值,第二设定个数为八,则调用所述第一加法器和所述第一移位器计算最小子集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第一存储器中,具体包括:
在所述第一存储器的第一存储位置的各位写入0;
将所述第一乘数写入所述第一存储器的第二存储位置;
调用所述第一移位器将所述第一乘数左移一位、末位填0后得到的数值写入所述第一存储器的第三存储位置;
调用所述第一加法器将所述第一存储器的第二存储位置的数值与所述第一存储器的第三存储位置的数值相加得到的数值写入所述第一存储器的第四位置;
调用所述第一移位器将所述第一乘数左移两位、末两位填0后得到的数值写入所述第一存储器的第五存储位置;
调用所述第一加法器将所述第一存储器的第二存储位置的数值与所述第一存储器的第五存储位置的数值相加得到的数值写入所述第一存储器的第六位置;
调用所述第一移位器将所述第一存储器的第四存储位置的数值左移一位、末位填0后得到的数值写入所述第一存储器的第七存储位置;
调用所述第一加法器将所述第一存储器的第四存储位置的数值与所述第一存储器的第五存储位置的数值相加得到的数值写入所述第一存储器的第八位置。
具体的,若所述第一乘数为M比特二进制数值,所述第二乘数集合包括N 比特二进制数值中的各个数值,所述段数差值集合中的数值的个数为八,则调用所述第二加法器和所述第二移位器计算所述段数差值集合中的各个数值与所述第二乘数的乘积,将得到的乘积保存在所述第二存储器中,具体包括:
在所述第二存储器的第一存储位置的各位写入0;
调用所述第二移位器将所述第一乘数左移三位、末三位填0后得到的数值写入所述第二存储器的第二存储位置;
调用所述第二移位器将所述第一乘数左移四位、末四位填0后得到的数值写入所述第二存储器的第三存储位置;
调用所述第二加法器将所述第二存储器的第二存储位置的数值与所述第二存储器的第三存储位置的数值相加得到的数值写入所述第二存储器的第四位置;
调用所述第二移位器将所述第一乘数左移五位、末五位填0后得到的数值写入所述第二存储器的第五存储位置;
调用所述第二加法器将所述第二存储器的第二存储位置的数值与所述第二存储器的第五存储位置的数值相加得到的数值写入所述第二存储器的第六位置;
调用所述第二移位器将所述第二存储器的第四存储位置的数值左移一位、末位填0后得到的数值写入所述第二存储器的第七存储位置;
调用所述第二加法器将所述第二存储器的第四存储位置的数值与所述第二存储器的第五存储位置的数值相加得到的数值写入所述第二存储器的第八位置。
具体的,根据所述第二乘数分别从所述第一存储器中获取第一乘积以及从所述第二存储器中获取第二乘积,具体包括:
确定所述第二乘数对应在所述最小子集合中的第一位置和对应在所述段数差值集合中的第一段数;
从所述第一存储器中获取所述最小子集合中的第一位置对应的第一乘积;以及,
从所述第二存储器中获取所述段数差值集合中的第一段数对应的第二乘积。
根据本发明实施例,还提供一种基于乘法器的运算装置,所述乘法器包括第一加法器、第一左移位器、第二加法器、第二左移位器、第三加法器、第一存储器和第二存储器,所述装置包括:
第一获取模块,用于设定周期到期后,获取第一乘数;
第二获取模块,用于根据所述乘法器对应的第二乘数集合得到第一设定个数的子集合和段数差值集合,每个子集合包括第二设定个数的数值;
第一调用模块,用于调用所述第一加法器和所述第一移位器计算最小子集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第一存储器中;
第二调用模块,用于调用所述第二加法器和所述第二移位器计算所述段数差值集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第二存储器中;
第三获取模块,用于获取第二乘数后,根据所述第二乘数分别从所述第一存储器中获取第一乘积以及从所述第二存储器中获取第二乘积;
第三调用模块,用于调用所述第三加法器计算所述第一乘积和所述第二乘积的和,得到所述第一乘数与所述第二乘数的乘积。
具体的,所述第二获取模块,具体用于:
将所述乘法器对应的第二乘数集合依次划分为第一设定个数的子集合;
依次计算各个子集合与最小子集合之间的差值得到段数差值集合。
具体的,若所述第一乘数为M比特二进制数值,所述第二乘数集合包括N 比特二进制数值中的各个数值,第二设定个数为八,则所述第一调用模块,具体用于:
在所述第一存储器的第一存储位置的各位写入0;
将所述第一乘数写入所述第一存储器的第二存储位置;
调用所述第一移位器将所述第一乘数左移一位、末位填0后得到的数值写入所述第一存储器的第三存储位置;
调用所述第一加法器将所述第一存储器的第二存储位置的数值与所述第一存储器的第三存储位置的数值相加得到的数值写入所述第一存储器的第四位置;
调用所述第一移位器将所述第一乘数左移两位、末两位填0后得到的数值写入所述第一存储器的第五存储位置;
调用所述第一加法器将所述第一存储器的第二存储位置的数值与所述第一存储器的第五存储位置的数值相加得到的数值写入所述第一存储器的第六位置;
调用所述第一移位器将所述第一存储器的第四存储位置的数值左移一位、末位填0后得到的数值写入所述第一存储器的第七存储位置;
调用所述第一加法器将所述第一存储器的第四存储位置的数值与所述第一存储器的第五存储位置的数值相加得到的数值写入所述第一存储器的第八位置。
具体的,若所述第一乘数为M比特二进制数值,所述第二乘数集合包括N 比特二进制数值中的各个数值,所述段数差值集合中的数值的个数为八,则所述第二调用模块,具体用于:
在所述第二存储器的第一存储位置的各位写入0;
调用所述第二移位器将所述第一乘数左移三位、末三位填0后得到的数值写入所述第二存储器的第二存储位置;
调用所述第二移位器将所述第一乘数左移四位、末四位填0后得到的数值写入所述第二存储器的第三存储位置;
调用所述第二加法器将所述第二存储器的第二存储位置的数值与所述第二存储器的第三存储位置的数值相加得到的数值写入所述第二存储器的第四位置;
调用所述第二移位器将所述第一乘数左移五位、末五位填0后得到的数值写入所述第二存储器的第五存储位置;
调用所述第二加法器将所述第二存储器的第二存储位置的数值与所述第二存储器的第五存储位置的数值相加得到的数值写入所述第二存储器的第六位置;
调用所述第二移位器将所述第二存储器的第四存储位置的数值左移一位、末位填0后得到的数值写入所述第二存储器的第七存储位置;
调用所述第二加法器将所述第二存储器的第四存储位置的数值与所述第二存储器的第五存储位置的数值相加得到的数值写入所述第二存储器的第八位置。
具体的,所述第三调用模块,具体用于:
确定所述第二乘数对应在所述最小子集合中的第一位置和对应在所述段数差值集合中的第一段数;
从所述第一存储器中获取所述最小子集合中的第一位置对应的第一乘积;以及,
从所述第二存储器中获取所述段数差值集合中的第一段数对应的第二乘积。
本发明有益效果如下:
本发明实施例提供一种基于乘法器的运算方法及装置,通过设定周期到期后,获取第一乘数;根据所述乘法器对应的第二乘数集合得到第一设定个数的子集合和段数差值集合,每个子集合包括第二设定个数的数值;调用所述第一加法器和所述第一移位器计算最小子集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第一存储器中;调用所述第二加法器和所述第二移位器计算所述段数差值集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第二存储器中;获取第二乘数后,根据所述第二乘数分别从所述第一存储器中获取第一乘积以及从所述第二存储器中获取第二乘积;调用所述第三加法器计算所述第一乘积和所述第二乘积的和,得到所述第一乘数与所述第二乘数的乘积。该方案中,乘法器包括3个加法器、2个移位器和2个存储器,极大的降低了乘法器的复杂度、减小了运算规模;在设定周期内,第一乘数是固定的数值,而第二乘数可以是第二乘数集合中的任一个数值,针对每个第二乘数,可以预先计算出最小子集合中的各个数值与第二乘数的乘积保存在第一存储器中,预先计算段数差值集合中的各个数值与第二乘数的乘积依次保存在第二存储器中,获取第二乘数后,可以直接从第一存储器和第二存储器中查询并将查询到的结果进行相加就可以得到第一乘数与第二乘数的乘积,从而避免复杂的乘加运算,乘法器的运算压力大大减小,运算效率得到很大提升,功耗减小。
附图说明
图1为本发明实施例中一种基于乘法器的运算方法的流程图;
图2为本发明实施例中基于乘法器的运算装置的结构示意图。
具体实施方式
针对现有技术中存在的运算压力非常大,运算效率很低,功耗很大的问题,本发明实施例提供一种基于乘法器的运算方法,其中,乘法器包括第一加法器、第一左移位器、第二加法器、第二左移位器、第三加法器、第一存储器和第二存储器。该方法的流程如图1所示,执行步骤如下:
S11:设定周期到期后,获取第一乘数。
在RSA加解密算法中,通常在一定的时长内,相乘的两个乘数中有一个是固定的,另一个乘数不断变化,该固定的乘数可以定义为第一乘数,该设定时长可以定义为设定周期,设定周期可以但不限于为2微秒。
S12:根据乘法器对应的第二乘数集合得到第一设定个数的子集合和段数差值集合。
另一个变化的乘数的所有数值组成第二乘数集合,第二乘数集合通常有一定的规律,可以将第二乘数集合划分成若干个子集合,段数差值集合表示的是各个子集合之间的差值关系,子集合的个数为第一设定个数,每个子集合包括第二设定个数的数值,第一设定个数和第二设定个数可以根据实际需要进行设定。
S13:调用第一加法器和第一移位器计算最小子集合中的各个数值与第二乘数的乘积,将得到的乘积依次保存在第一存储器中。
最小子集合是第二乘数集合中最小的子集合,可以调用第一加法器和第一移位器计算最小子集合中的各个数值与第二乘数的乘积,将得到的乘积依次保存在第一存储器中,其中,第一存储器可以是RAM。
S14:调用第二加法器和第二移位器计算段数差值集合中的各个数值与第二乘数的乘积,将得到的乘积依次保存在第二存储器中。
第二存储器可以但不限于是RAM。
S15:获取第二乘数后,根据第二乘数分别从第一存储器中获取第一乘积以及从第二存储器中获取第二乘积。
S16:调用第三加法器计算第一乘积和第二乘积的和,得到第一乘数与第二乘数的乘积。
在设定周期内,针对不同的第二乘数,可以反复执行S15和S16,直到第一乘数改变后,再重新执行S11。
该方案中,乘法器包括3个加法器、2个移位器和2个存储器,极大的降低了乘法器的复杂度、减小了运算规模;在设定周期内,第一乘数是固定的数值,而第二乘数可以是第二乘数集合中的任一个数值,针对每个第二乘数,可以预先计算出最小子集合中的各个数值与第二乘数的乘积保存在第一存储器中,预先计算段数差值集合中的各个数值与第二乘数的乘积依次保存在第二存储器中,获取第二乘数后,可以直接从第一存储器和第二存储器中查询并将查询到的结果进行相加就可以得到第一乘数与第二乘数的乘积,从而避免复杂的乘加运算,乘法器的运算压力大大减小,运算效率得到很大提升,功耗减小。
以上介绍了基于乘数器的运算方法,目前存在二进制、十进制等等运算原则,上述方法可以适用于各种运算原则,下面以二进制为例介绍该方法的原理:
目前的耙形求余乘法器的运算原则为二进制,主要包括6比特乘2048比特乘法器、四个加法器、左移6位移位器、63×2060比特RAM。其中6比特乘2048比特乘法器占用的资源最多,因此乘法器成为耙形求余乘法器模块中的核心。完成一次2048×2048比特运算,需调用6×2048比特运算342次。342次乘法运算中2048比特的被乘数是不会变化的。
6比特数据换算成十进制可以表示0~63,6×2048比特运算只有64种计算结果。可以将0~63分为8段,每段8个数据。0~63个乘积值,可以通过段数对应的数值和第一个段数内(最小子集合)的数值相加得到。如下表1所示:
表1
具体的,上述S12中根据乘法器对应的第二乘数集合得到第一设定个数的子集合和段数差值集合,实现方式具体包括:将乘法器对应的第二乘数集合依次划分为第一设定个数的子集合;依次计算各个子集合与最小子集合之间的差值得到段数差值集合。
基于上述原理介绍,在二进制情况下,对于6×2048比特的乘法器,第二乘数集合为0~63,第一设定个数可以为8,计算各个子集合与最小子集合之间的差值,得到段数差值集合,为{0×X,8×X,16×X,24×X,32×X,40×X,48×X, 56×X}。
具体的,若第一乘数为M比特二进制数值,第二乘数集合包括N比特二进制数值中的各个数值,第二设定个数为八,则S13中调用第一加法器和第一移位器计算最小子集合中的各个数值与第二乘数的乘积,将得到的乘积依次保存在第一存储器中,实现方式具体包括:
在第一存储器的第一存储位置的各位写入0;
将第一乘数写入第一存储器的第二存储位置;
调用第一移位器将第一乘数左移一位、末位填0后得到的数值写入第一存储器的第三存储位置;
调用第一加法器将第一存储器的第二存储位置的数值与第一存储器的第三存储位置的数值相加得到的数值写入第一存储器的第四位置;
调用第一移位器将第一乘数左移两位、末两位填0后得到的数值写入第一存储器的第五存储位置;
调用第一加法器将第一存储器的第二存储位置的数值与第一存储器的第五存储位置的数值相加得到的数值写入第一存储器的第六位置;
调用第一移位器将第一存储器的第四存储位置的数值左移一位、末位填0 后得到的数值写入第一存储器的第七存储位置;
调用第一加法器将第一存储器的第四存储位置的数值与第一存储器的第五存储位置的数值相加得到的数值写入第一存储器的第八位置。
最小子集合中的各个数值对应的运算方法如下表2,X表示第一乘数。
最小子集合 | 运算方法 |
0×X | 直接填充0值 |
1×X | 原值,不用计算 |
2×X | 原值左移一位,末位填0 |
3×X | 2X+X |
4×X | 原值左移两位,末两位填0 |
5×X | 4X+X |
6×X | 3×X左移一位,末一位填0 |
7×X | 4X+3X |
表2
具体的,若第一乘数为M比特二进制数值,第二乘数集合包括N比特二进制数值中的各个数值,段数差值集合中的数值的个数为八,则上述S14中调用第二加法器和第二移位器计算段数差值集合中的各个数值与第二乘数的乘积,将得到的乘积保存在第二存储器中,实现方式具体包括:
在第二存储器的第一存储位置的各位写入0;
调用第二移位器将第一乘数左移三位、末三位填0后得到的数值写入第二存储器的第二存储位置;
调用第二移位器将第一乘数左移四位、末四位填0后得到的数值写入第二存储器的第三存储位置;
调用第二加法器将第二存储器的第二存储位置的数值与第二存储器的第三存储位置的数值相加得到的数值写入第二存储器的第四位置;
调用第二移位器将第一乘数左移五位、末五位填0后得到的数值写入第二存储器的第五存储位置;
调用第二加法器将第二存储器的第二存储位置的数值与第二存储器的第五存储位置的数值相加得到的数值写入第二存储器的第六位置;
调用第二移位器将第二存储器的第四存储位置的数值左移一位、末位填0 后得到的数值写入第二存储器的第七存储位置;
调用第二加法器将第二存储器的第四存储位置的数值与第二存储器的第五存储位置的数值相加得到的数值写入第二存储器的第八位置。
8个段数的运算方法如下表3所示,X标识第一乘数。
段数差值集合 | 运算方法 |
0×X | 直接填充0值 |
8×X | 原值左移三位,末三位填0 |
16×X | 原值左移四位,末四位填0 |
24×X | 8X+16X |
32×X | 原值左移五位,末五位填0 |
40×X | 32X+8X |
48×X | 24×X左移一位,末一位填0 |
56×X | 32X+24X |
表3
通过上表1和表2分析,对于最小子集合中的8个数值,只需要利用一个加法器,计算三次即可获得3X、5X、7X计算结果。对于段数差值集合的8个数据,也只需要利用一个加法器,计算三个数据即可获得24X、40X、56X。其它数据不需要计算,通过移位即可获得。然后分别将获取的数值保存在第一存储器和第二存储器中即可。
具体的,上述S14中根据第二乘数分别从第一存储器中获取第一乘积以及从第二存储器中获取第二乘积,实现方式具体包括:
确定第二乘数对应在最小子集合中的第一位置和对应在段数差值集合中的第一段数;
从第一存储器中获取最小子集合中的第一位置对应的第一乘积;以及,
从第二存储器中获取段数差值集合中的第一段数对应的第二乘积。
对于第二段内的8~15数据,可以通过第二段的段数差值8×X加最小子集合内相应数据值相加可得。同理,第三、四、五、六、七、八段数据可通过查询相应段数的差值加最小子集合内相应数值相加可得。因此通过本方案,6×2048 比特乘法,可通过数据查询方式完成。
基于同一发明构思,本发明实施例提供一种基于乘法器的运算装置,乘法器包括第一加法器、第一左移位器、第二加法器、第二左移位器、第三加法器、第一存储器和第二存储器,该装置的结构如图2所示,包括:
第一获取模块21,用于设定周期到期后,获取第一乘数;
第二获取模块22,用于根据乘法器对应的第二乘数集合得到第一设定个数的子集合和段数差值集合,每个子集合包括第二设定个数的数值;
第一调用模块23,用于调用第一加法器和第一移位器计算最小子集合中的各个数值与第二乘数的乘积,将得到的乘积依次保存在第一存储器中;
第二调用模块24,用于调用第二加法器和第二移位器计算段数差值集合中的各个数值与第二乘数的乘积,将得到的乘积依次保存在第二存储器中;
第三获取模块25,用于获取第二乘数后,根据第二乘数分别从第一存储器中获取第一乘积以及从第二存储器中获取第二乘积;
第三调用模块26,用于调用第三加法器计算第一乘积和第二乘积的和,得到第一乘数与第二乘数的乘积。
该方案中,乘法器包括3个加法器、2个移位器和2个存储器,极大的降低了乘法器的复杂度、减小了运算规模;在设定周期内,第一乘数是固定的数值,而第二乘数可以是第二乘数集合中的任一个数值,针对每个第二乘数,可以预先计算出最小子集合中的各个数值与第二乘数的乘积保存在第一存储器中,预先计算段数差值集合中的各个数值与第二乘数的乘积依次保存在第二存储器中,获取第二乘数后,可以直接从第一存储器和第二存储器中查询并将查询到的结果进行相加就可以得到第一乘数与第二乘数的乘积,从而避免复杂的乘加运算,乘法器的运算压力大大减小,运算效率得到很大提升,功耗减小。
具体的,第二获取模块22,具体用于:
将乘法器对应的第二乘数集合依次划分为第一设定个数的子集合;
依次计算各个子集合与最小子集合之间的差值得到段数差值集合。
具体的,若第一乘数为M比特二进制数值,第二乘数集合包括N比特二进制数值中的各个数值,第二设定个数为八,则第一调用模块23,具体用于:
在第一存储器的第一存储位置的各位写入0;
将第一乘数写入第一存储器的第二存储位置;
调用第一移位器将第一乘数左移一位、末位填0后得到的数值写入第一存储器的第三存储位置;
调用第一加法器将第一存储器的第二存储位置的数值与第一存储器的第三存储位置的数值相加得到的数值写入第一存储器的第四位置;
调用第一移位器将第一乘数左移两位、末两位填0后得到的数值写入第一存储器的第五存储位置;
调用第一加法器将第一存储器的第二存储位置的数值与第一存储器的第五存储位置的数值相加得到的数值写入第一存储器的第六位置;
调用第一移位器将第一存储器的第四存储位置的数值左移一位、末位填0 后得到的数值写入第一存储器的第七存储位置;
调用第一加法器将第一存储器的第四存储位置的数值与第一存储器的第五存储位置的数值相加得到的数值写入第一存储器的第八位置。
具体的,若第一乘数为M比特二进制数值,第二乘数集合包括N比特二进制数值中的各个数值,段数差值集合中的数值的个数为八,则第二调用模块24,具体用于:
在第二存储器的第一存储位置的各位写入0;
调用第二移位器将第一乘数左移三位、末三位填0后得到的数值写入第二存储器的第二存储位置;
调用第二移位器将第一乘数左移四位、末四位填0后得到的数值写入第二存储器的第三存储位置;
调用第二加法器将第二存储器的第二存储位置的数值与第二存储器的第三存储位置的数值相加得到的数值写入第二存储器的第四位置;
调用第二移位器将第一乘数左移五位、末五位填0后得到的数值写入第二存储器的第五存储位置;
调用第二加法器将第二存储器的第二存储位置的数值与第二存储器的第五存储位置的数值相加得到的数值写入第二存储器的第六位置;
调用第二移位器将第二存储器的第四存储位置的数值左移一位、末位填0 后得到的数值写入第二存储器的第七存储位置;
调用第二加法器将第二存储器的第四存储位置的数值与第二存储器的第五存储位置的数值相加得到的数值写入第二存储器的第八位置。
具体的,第三调用模块26,具体用于:
确定第二乘数对应在最小子集合中的第一位置和对应在段数差值集合中的第一段数;
从第一存储器中获取最小子集合中的第一位置对应的第一乘积;以及,
从第二存储器中获取段数差值集合中的第一段数对应的第二乘积。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种基于乘法器的运算方法,其特征在于,所述乘法器包括第一加法器、第一左移位器、第二加法器、第二左移位器、第三加法器、第一存储器和第二存储器,所述方法包括:
设定周期到期后,获取第一乘数;
根据所述乘法器对应的第二乘数集合得到第一设定个数的子集合和段数差值集合,每个子集合包括第二设定个数的数值;
调用所述第一加法器和所述第一移位器计算最小子集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第一存储器中;
调用所述第二加法器和所述第二移位器计算所述段数差值集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第二存储器中;
获取第二乘数后,根据所述第二乘数分别从所述第一存储器中获取第一乘积以及从所述第二存储器中获取第二乘积;
调用所述第三加法器计算所述第一乘积和所述第二乘积的和,得到所述第一乘数与所述第二乘数的乘积。
2.如权利要求1所述的方法,其特征在于,根据所述乘法器对应的第二乘数集合得到第一设定个数的子集合和段数差值集合,具体包括:
将所述乘法器对应的第二乘数集合依次划分为第一设定个数的子集合;
依次计算各个子集合与最小子集合之间的差值得到段数差值集合。
3.如权利要求1所述的方法,其特征在于,若所述第一乘数为M比特二进制数值,所述第二乘数集合包括N比特二进制数值中的各个数值,第二设定个数为八,则调用所述第一加法器和所述第一移位器计算最小子集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第一存储器中,具体包括:
在所述第一存储器的第一存储位置的各位写入0;
将所述第一乘数写入所述第一存储器的第二存储位置;
调用所述第一移位器将所述第一乘数左移一位、末位填0后得到的数值写入所述第一存储器的第三存储位置;
调用所述第一加法器将所述第一存储器的第二存储位置的数值与所述第一存储器的第三存储位置的数值相加得到的数值写入所述第一存储器的第四位置;
调用所述第一移位器将所述第一乘数左移两位、末两位填0后得到的数值写入所述第一存储器的第五存储位置;
调用所述第一加法器将所述第一存储器的第二存储位置的数值与所述第一存储器的第五存储位置的数值相加得到的数值写入所述第一存储器的第六位置;
调用所述第一移位器将所述第一存储器的第四存储位置的数值左移一位、末位填0后得到的数值写入所述第一存储器的第七存储位置;
调用所述第一加法器将所述第一存储器的第四存储位置的数值与所述第一存储器的第五存储位置的数值相加得到的数值写入所述第一存储器的第八位置。
4.如权利要求2所述的方法,其特征在于,若所述第一乘数为M比特二进制数值,所述第二乘数集合包括N比特二进制数值中的各个数值,所述段数差值集合中的数值的个数为八,则调用所述第二加法器和所述第二移位器计算所述段数差值集合中的各个数值与所述第二乘数的乘积,将得到的乘积保存在所述第二存储器中,具体包括:
在所述第二存储器的第一存储位置的各位写入0;
调用所述第二移位器将所述第一乘数左移三位、末三位填0后得到的数值写入所述第二存储器的第二存储位置;
调用所述第二移位器将所述第一乘数左移四位、末四位填0后得到的数值写入所述第二存储器的第三存储位置;
调用所述第二加法器将所述第二存储器的第二存储位置的数值与所述第二存储器的第三存储位置的数值相加得到的数值写入所述第二存储器的第四位置;
调用所述第二移位器将所述第一乘数左移五位、末五位填0后得到的数值写入所述第二存储器的第五存储位置;
调用所述第二加法器将所述第二存储器的第二存储位置的数值与所述第二存储器的第五存储位置的数值相加得到的数值写入所述第二存储器的第六位置;
调用所述第二移位器将所述第二存储器的第四存储位置的数值左移一位、末位填0后得到的数值写入所述第二存储器的第七存储位置;
调用所述第二加法器将所述第二存储器的第四存储位置的数值与所述第二存储器的第五存储位置的数值相加得到的数值写入所述第二存储器的第八位置。
5.如权利要求1-4任一所述的方法,其特征在于,根据所述第二乘数分别从所述第一存储器中获取第一乘积以及从所述第二存储器中获取第二乘积,具体包括:
确定所述第二乘数对应在所述最小子集合中的第一位置和对应在所述段数差值集合中的第一段数;
从所述第一存储器中获取所述最小子集合中的第一位置对应的第一乘积;以及,
从所述第二存储器中获取所述段数差值集合中的第一段数对应的第二乘积。
6.一种基于乘法器的运算装置,其特征在于,所述乘法器包括第一加法器、第一左移位器、第二加法器、第二左移位器、第三加法器、第一存储器和第二存储器,所述装置包括:
第一获取模块,用于设定周期到期后,获取第一乘数;
第二获取模块,用于根据所述乘法器对应的第二乘数集合得到第一设定个数的子集合和段数差值集合,每个子集合包括第二设定个数的数值;
第一调用模块,用于调用所述第一加法器和所述第一移位器计算最小子集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第一存储器中;
第二调用模块,用于调用所述第二加法器和所述第二移位器计算所述段数差值集合中的各个数值与所述第二乘数的乘积,将得到的乘积依次保存在所述第二存储器中;
第三获取模块,用于获取第二乘数后,根据所述第二乘数分别从所述第一存储器中获取第一乘积以及从所述第二存储器中获取第二乘积;
第三调用模块,用于调用所述第三加法器计算所述第一乘积和所述第二乘积的和,得到所述第一乘数与所述第二乘数的乘积。
7.如权利要求6所述的装置,其特征在于,所述第二获取模块,具体用于:
将所述乘法器对应的第二乘数集合依次划分为第一设定个数的子集合;
依次计算各个子集合与最小子集合之间的差值得到段数差值集合。
8.如权利要求6所述的装置,其特征在于,若所述第一乘数为M比特二进制数值,所述第二乘数集合包括N比特二进制数值中的各个数值,第二设定个数为八,则所述第一调用模块,具体用于:
在所述第一存储器的第一存储位置的各位写入0;
将所述第一乘数写入所述第一存储器的第二存储位置;
调用所述第一移位器将所述第一乘数左移一位、末位填0后得到的数值写入所述第一存储器的第三存储位置;
调用所述第一加法器将所述第一存储器的第二存储位置的数值与所述第一存储器的第三存储位置的数值相加得到的数值写入所述第一存储器的第四位置;
调用所述第一移位器将所述第一乘数左移两位、末两位填0后得到的数值写入所述第一存储器的第五存储位置;
调用所述第一加法器将所述第一存储器的第二存储位置的数值与所述第一存储器的第五存储位置的数值相加得到的数值写入所述第一存储器的第六位置;
调用所述第一移位器将所述第一存储器的第四存储位置的数值左移一位、末位填0后得到的数值写入所述第一存储器的第七存储位置;
调用所述第一加法器将所述第一存储器的第四存储位置的数值与所述第一存储器的第五存储位置的数值相加得到的数值写入所述第一存储器的第八位置。
9.如权利要求7所述的装置,其特征在于,若所述第一乘数为M比特二进制数值,所述第二乘数集合包括N比特二进制数值中的各个数值,所述段数差值集合中的数值的个数为八,则所述第二调用模块,具体用于:
在所述第二存储器的第一存储位置的各位写入0;
调用所述第二移位器将所述第一乘数左移三位、末三位填0后得到的数值写入所述第二存储器的第二存储位置;
调用所述第二移位器将所述第一乘数左移四位、末四位填0后得到的数值写入所述第二存储器的第三存储位置;
调用所述第二加法器将所述第二存储器的第二存储位置的数值与所述第二存储器的第三存储位置的数值相加得到的数值写入所述第二存储器的第四位置;
调用所述第二移位器将所述第一乘数左移五位、末五位填0后得到的数值写入所述第二存储器的第五存储位置;
调用所述第二加法器将所述第二存储器的第二存储位置的数值与所述第二存储器的第五存储位置的数值相加得到的数值写入所述第二存储器的第六位置;
调用所述第二移位器将所述第二存储器的第四存储位置的数值左移一位、末位填0后得到的数值写入所述第二存储器的第七存储位置;
调用所述第二加法器将所述第二存储器的第四存储位置的数值与所述第二存储器的第五存储位置的数值相加得到的数值写入所述第二存储器的第八位置。
10.如权利要求6-9任一所述的装置,其特征在于,所述第三调用模块,具体用于:
确定所述第二乘数对应在所述最小子集合中的第一位置和对应在所述段数差值集合中的第一段数;
从所述第一存储器中获取所述最小子集合中的第一位置对应的第一乘积;以及,
从所述第二存储器中获取所述段数差值集合中的第一段数对应的第二乘积。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711487259.3A CN109992242B (zh) | 2017-12-29 | 2017-12-29 | 基于乘法器的运算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711487259.3A CN109992242B (zh) | 2017-12-29 | 2017-12-29 | 基于乘法器的运算方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109992242A true CN109992242A (zh) | 2019-07-09 |
CN109992242B CN109992242B (zh) | 2021-05-28 |
Family
ID=67110428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711487259.3A Active CN109992242B (zh) | 2017-12-29 | 2017-12-29 | 基于乘法器的运算方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109992242B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115934029A (zh) * | 2023-02-20 | 2023-04-07 | 辰星(天津)自动化设备有限公司 | 乘法运算资源转换逻辑资源方法、装置、乘法器及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040024806A1 (en) * | 2002-07-31 | 2004-02-05 | Woong Jeong | Pipelined divider and dividing method with small lookup table |
CN1666173A (zh) * | 2002-05-08 | 2005-09-07 | 英特尔公司 | 快速乘法电路 |
US20060069710A1 (en) * | 2004-09-24 | 2006-03-30 | Dong-Soo Har | Montgomery multiplier for RSA security module |
CN102231102A (zh) * | 2011-06-16 | 2011-11-02 | 天津大学 | 基于余数系统的rsa密码处理方法及协处理器 |
CN103268214A (zh) * | 2013-04-19 | 2013-08-28 | 荣成市鼎通电子信息科技有限公司 | 基于查找表的深空通信中准循环矩阵高速乘法器 |
CN103902509A (zh) * | 2014-04-23 | 2014-07-02 | 荣成市鼎通电子信息科技有限公司 | Wpan中全并行输入的循环左移准循环矩阵乘法器 |
US20160110163A1 (en) * | 2014-10-17 | 2016-04-21 | Imagination Technologies, Limited | Small multiplier after initial approximation for operations with increasing precision |
-
2017
- 2017-12-29 CN CN201711487259.3A patent/CN109992242B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1666173A (zh) * | 2002-05-08 | 2005-09-07 | 英特尔公司 | 快速乘法电路 |
US20040024806A1 (en) * | 2002-07-31 | 2004-02-05 | Woong Jeong | Pipelined divider and dividing method with small lookup table |
US20060069710A1 (en) * | 2004-09-24 | 2006-03-30 | Dong-Soo Har | Montgomery multiplier for RSA security module |
CN102231102A (zh) * | 2011-06-16 | 2011-11-02 | 天津大学 | 基于余数系统的rsa密码处理方法及协处理器 |
CN103268214A (zh) * | 2013-04-19 | 2013-08-28 | 荣成市鼎通电子信息科技有限公司 | 基于查找表的深空通信中准循环矩阵高速乘法器 |
CN103902509A (zh) * | 2014-04-23 | 2014-07-02 | 荣成市鼎通电子信息科技有限公司 | Wpan中全并行输入的循环左移准循环矩阵乘法器 |
US20160110163A1 (en) * | 2014-10-17 | 2016-04-21 | Imagination Technologies, Limited | Small multiplier after initial approximation for operations with increasing precision |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115934029A (zh) * | 2023-02-20 | 2023-04-07 | 辰星(天津)自动化设备有限公司 | 乘法运算资源转换逻辑资源方法、装置、乘法器及介质 |
CN115934029B (zh) * | 2023-02-20 | 2023-05-30 | 辰星(天津)自动化设备有限公司 | 乘法运算资源转换逻辑资源方法、装置、乘法器及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109992242B (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110351087B (zh) | 流水线型的蒙哥马利模乘运算方法 | |
CN106897046B (zh) | 一种定点乘累加器 | |
Wefers | Partitioned convolution algorithms for real-time auralization | |
CN104111816B (zh) | Gpdsp中多功能simd结构浮点融合乘加运算装置 | |
CN100476719C (zh) | 密码系统和相关的椭圆曲线运算方法 | |
CN106445471A (zh) | 处理器和用于在处理器上执行矩阵乘运算的方法 | |
KR101269737B1 (ko) | 암호 처리 장치 및 암호 처리 방법과 프로그램을 기록한 컴퓨터 판독 가능한 기록매체 | |
US7580966B2 (en) | Method and device for reducing the time required to perform a product, multiplication and modular exponentiation calculation using the Montgomery method | |
WO2013109532A1 (en) | Algebraic processor | |
CN106339204A (zh) | 加密计算方法以及装置 | |
CN107992283A (zh) | 一种基于降维实现有限域乘法的方法和装置 | |
CN109992242A (zh) | 基于乘法器的运算方法及装置 | |
CN106371803B (zh) | 用于蒙哥马利域的计算方法和计算装置 | |
CN110119265A (zh) | 乘法运算实现方法、装置、计算机存储介质及电子设备 | |
CN104506316A (zh) | 一种基于sm2基点的点乘运算方法 | |
CN117155572A (zh) | 一种基于gpu并行实现密码技术中大整数乘法的方法 | |
CN109284085B (zh) | 一种基于fpga的高速模乘和模幂运算方法及装置 | |
CN110232289A (zh) | 椭圆曲线密码的高速倍点运算方法 | |
CN104750455A (zh) | 一种基于蒙哥马利模乘的数据处理方法和装置 | |
Seo et al. | Consecutive operand-caching method for multiprecision multiplication, revisited | |
Nedjah et al. | A reconfigurable recursive and efficient hardware for Karatsuba-Ofman's multiplication algorithm | |
CN107273089A (zh) | 非模数乘法器、用于非模数乘法的方法及计算装置 | |
US7590235B2 (en) | Reduction calculations in elliptic curve cryptography | |
CN109947393B (zh) | 基于求余器的运算方法及装置 | |
Wang et al. | A novel fast modular multiplier architecture for 8,192-bit RSA cryposystem |
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 |