CN115344237A - 结合Karatsuba和蒙哥马利模乘的数据处理方法 - Google Patents

结合Karatsuba和蒙哥马利模乘的数据处理方法 Download PDF

Info

Publication number
CN115344237A
CN115344237A CN202211279542.8A CN202211279542A CN115344237A CN 115344237 A CN115344237 A CN 115344237A CN 202211279542 A CN202211279542 A CN 202211279542A CN 115344237 A CN115344237 A CN 115344237A
Authority
CN
China
Prior art keywords
result
register
bit
multiplier
bits
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
Application number
CN202211279542.8A
Other languages
English (en)
Other versions
CN115344237B (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.)
Wuxi Muchuang Integrated Circuit Design Co ltd
Original Assignee
Wuxi Muchuang Integrated Circuit Design Co ltd
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 Wuxi Muchuang Integrated Circuit Design Co ltd filed Critical Wuxi Muchuang Integrated Circuit Design Co ltd
Priority to CN202211279542.8A priority Critical patent/CN115344237B/zh
Publication of CN115344237A publication Critical patent/CN115344237A/zh
Application granted granted Critical
Publication of CN115344237B publication Critical patent/CN115344237B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

本申请公开了一种结合Karatsuba和蒙哥马利模乘的数据处理方法,涉及数据加密领域,该方法结合Karatsuba和蒙哥马利模乘以快速实现模乘运算,利用小位宽的乘法器即可快速完成乘法运算,Karatsuba可以加速大整数乘法的运算,降低大整数乘法的计算复杂度,而且本申请在设计乘法器位宽时,直接预留进位,使得乘法运算和加法运算可以同步推进,从而可以优化整个数据处理过程的时序,进一步缩短计算耗时,从而可以在占用较小面积的基础上还可以有较少的计算耗时,电路面积与计算时间都有较优的表现。

Description

结合Karatsuba和蒙哥马利模乘的数据处理方法
技术领域
本申请涉及数据加密领域,尤其是一种结合Karatsuba和蒙哥马利模乘的数据处理方法。
背景技术
公钥密码体制使用不同的加密密钥和解密密钥,其具有运算速度快的优点,被广泛应用于各种高性能数据密集应用场景中,可以为互联网通信提供安全及完整性保障。常见的公钥密码体制的加密算法包括RSA加密算法、ECC(Elliptic Curve Cryptography,椭圆曲线密码学)加密算法、IBC(Identity-Based Cryptograph,基于标识的密码学)加密算法等。其中,ECC加密算法比如SM2算法,IBC加密算法比如SM9算法。
公钥密码体制的各种加密算法的计算最终都会分解成有限域上的基本算数运算,包括模加运算、模减运算、模乘运算和模逆运算等。其中,模乘运算和模逆运算对资源和时间的消耗远大于模加运算和模减运算,而模逆运算的被调用频率较低且通常可以通过多次调用模乘运算来实现,因此高效完成模乘运算是提高加密算法的算法速度的核心。在加密算法中,大整数模乘(Large Integer Modular Multiplication)是常见的模乘运算,也是对计算耗时和资源消耗最严重的基本算数运算。大整数模乘可以表示为
Figure 725872DEST_PATH_IMAGE001
,其中
Figure 111854DEST_PATH_IMAGE002
Figure 626012DEST_PATH_IMAGE003
Figure 755642DEST_PATH_IMAGE004
均为二进制的大整数,其运算性能往往直接影响整个加密算法的性能。
在普通算法中,在计算模
Figure 288124DEST_PATH_IMAGE004
时,利用的是带余除法,除法运算需要太多次乘法,计算复杂度较高,蒙哥马利(Montgomery)模乘通过将除法计算转化成简单的移位计算,可以大幅度提高大整数模乘的运算速度。但是,以公钥密码体制中操作数
Figure 845007DEST_PATH_IMAGE002
Figure 846461DEST_PATH_IMAGE003
常见的有256bit的情况为例,一次完整蒙哥马利模乘需要进行3次完整256bit*256bit二进制乘法,目前常见的实现包括:(1)使用1个256bit*256bit乘法器;(2)使用若干256bit*32bit乘法器和若干加法器;(3)使用若干64bit*64bit乘法器和若干加法器;(4)使用若干2bit*2bit乘法器和若干加法器。在上述各种实现方法中,使用大位宽的乘法器会增加电路面积,消耗较多的硬件资源,尤其是使用256bit*256bit乘法器时往往导致电路面积过大而无法被接受,使用小位宽的乘法器虽然可以减小电路面积,但会导致需要多次运算迭代,使得计算时间大大增加。因此目前在加密算法中引入蒙哥马利模乘虽然可以一定程度上优化加密算法的性能,但是计算效率还是不够理想。
发明内容
本申请人针对上述问题及技术需求,提出了一种结合Karatsuba和蒙哥马利模乘的数据处理方法,本申请的技术方案如下:
一种结合Karatsuba和蒙哥马利模乘的数据处理方法,该数据处理方法包括:
获取两个模乘操作数
Figure 779782DEST_PATH_IMAGE002
Figure 917502DEST_PATH_IMAGE003
,两个模乘操作数
Figure 645287DEST_PATH_IMAGE002
Figure 383304DEST_PATH_IMAGE003
的位宽均为
Figure 854737DEST_PATH_IMAGE005
将两个模乘操作数
Figure 112543DEST_PATH_IMAGE002
Figure 11229DEST_PATH_IMAGE003
分别拆分为若干个
Figure 987275DEST_PATH_IMAGE006
位宽的子操作数,通过模乘操作数
Figure 996819DEST_PATH_IMAGE002
Figure 374711DEST_PATH_IMAGE003
拆分得到的各个子操作数以及子操作数的加法结果利用
Figure 427987DEST_PATH_IMAGE007
位宽的乘法器、基于Karatsuba算法求解得到两个模乘操作数
Figure 891329DEST_PATH_IMAGE002
Figure 438985DEST_PATH_IMAGE003
的第一乘积结果
Figure 405804DEST_PATH_IMAGE008
,其中,乘法器的位宽
Figure 911872DEST_PATH_IMAGE007
满足子操作数的加法结果的位宽需求且小于预定阈值;
基于蒙哥马利模乘计算第一乘积结果
Figure 583549DEST_PATH_IMAGE008
的低
Figure 200475DEST_PATH_IMAGE005
位结果
Figure 21801DEST_PATH_IMAGE009
与中间参数
Figure 698770DEST_PATH_IMAGE010
的第二乘积结果
Figure 871125DEST_PATH_IMAGE011
Figure 26163DEST_PATH_IMAGE012
Figure 482421DEST_PATH_IMAGE013
Figure 799133DEST_PATH_IMAGE014
Figure 458784DEST_PATH_IMAGE015
Figure 417513DEST_PATH_IMAGE004
的最大公约数为1;
将第二乘积结果
Figure 947851DEST_PATH_IMAGE011
的低
Figure 215891DEST_PATH_IMAGE005
位结果
Figure 362838DEST_PATH_IMAGE016
以及位宽为
Figure 125258DEST_PATH_IMAGE005
的模乘操作数
Figure 41261DEST_PATH_IMAGE004
分别拆分为若干个
Figure 965355DEST_PATH_IMAGE006
位宽的子操作数,通过
Figure 334019DEST_PATH_IMAGE016
和模乘操作数
Figure 634551DEST_PATH_IMAGE004
拆分得到的各个子操作数以及子操作数的加法结果利用
Figure 919907DEST_PATH_IMAGE007
位宽的乘法器、基于Karatsuba算法求解得到
Figure 14902DEST_PATH_IMAGE016
和模乘操作数
Figure 136442DEST_PATH_IMAGE004
的第三乘积结果
Figure 975085DEST_PATH_IMAGE017
基于第三乘积结果
Figure 600101DEST_PATH_IMAGE017
输出
Figure 131577DEST_PATH_IMAGE018
的结果作为
Figure 474834DEST_PATH_IMAGE001
的模乘结果。
本申请的有益技术效果是:
本申请公开了一种结合Karatsuba和蒙哥马利模乘的数据处理方法,该方法结合Karatsuba和蒙哥马利模乘可以快速计算模乘的方法,Karatsuba可以加速大整数乘法的运算,且Karatsuba还可以得到想要的指定的计算位宽,通过小位宽的乘法器即可快速完成乘法运算,降低大整数乘法的计算复杂度,而且本申请在设计乘法器位宽时,直接预留进位,使得乘法运算和加法运算可以同步推进,从而可以优化整个数据处理过程的时序,进一步缩短计算耗时,从而可以在占用较小面积的基础上还可以有较少的计算耗时,电路面积与计算时间都有较优的表现。
进一步的,在电路面积可接受的基础上,可以增加使用的乘法器结合并行运算设计进一步缩短计算耗时,具有较高的运算并行度,从而可以提高模乘运算的运算效率。
附图说明
图1是本申请一个实施例的数据处理方法的方法流程图。
图2是本申请一个实施例的数据处理方法的求解示意图。
图3是一个实施例中用于实现本申请的数据处理方法的数据处理电路的电路结构图。
具体实施方式
下面结合附图对本申请的具体实施方式做进一步说明。
本申请公开了一种结合Karatsuba和蒙哥马利模乘的数据处理方法,该数据处理方法用于高效处理得到
Figure 634944DEST_PATH_IMAGE001
的模乘结果,其中,模乘操作数
Figure 114467DEST_PATH_IMAGE002
Figure 816844DEST_PATH_IMAGE003
Figure 647396DEST_PATH_IMAGE004
都是二进制的大整数,所谓的大整数表示模乘操作数的位宽超过预设值,比如模乘操作数的位宽达到64bit或者达到256bit即称为大整数。该数据处理方法得到
Figure 93421DEST_PATH_IMAGE001
的模乘结果的方法包括如下步骤,请参考图1所示的流程图以及图2所示的计算示意图:
步骤110,获取两个模乘操作数
Figure 693030DEST_PATH_IMAGE002
Figure 549996DEST_PATH_IMAGE003
,获取到的这两个模乘操作数
Figure 867845DEST_PATH_IMAGE002
Figure 586402DEST_PATH_IMAGE003
的位宽均为
Figure 306097DEST_PATH_IMAGE005
,模乘操作数
Figure 350276DEST_PATH_IMAGE002
Figure 155421DEST_PATH_IMAGE003
均为二进制的大整数,也即模乘操作数
Figure 926937DEST_PATH_IMAGE002
Figure 501138DEST_PATH_IMAGE003
的位宽
Figure 716218DEST_PATH_IMAGE005
均超过预设值。
步骤120,计算两个模乘操作数
Figure 743080DEST_PATH_IMAGE002
Figure 334599DEST_PATH_IMAGE003
的乘积记为第一乘积结果
Figure 497727DEST_PATH_IMAGE008
在本申请中,由于
Figure 883709DEST_PATH_IMAGE002
Figure 912713DEST_PATH_IMAGE003
均为大整数,直接计算
Figure 42343DEST_PATH_IMAGE002
Figure 325557DEST_PATH_IMAGE003
的全积较为耗时,因此为了降低计算复杂度,将两个模乘操作数
Figure 882440DEST_PATH_IMAGE002
Figure 883895DEST_PATH_IMAGE003
分别拆分为若干个
Figure 817215DEST_PATH_IMAGE006
位宽的子操作数,每个子操作数包括相应的模乘操作数的连续
Figure 954936DEST_PATH_IMAGE006
位的内容,且各个子操作数的内容连续而不重合。
也即将大位宽的模乘操作数拆分为小位宽的子操作数,然后通过模乘操作数
Figure 923199DEST_PATH_IMAGE002
Figure 411949DEST_PATH_IMAGE003
拆分得到的各个子操作数以及子操作数的加法结果利用
Figure 883382DEST_PATH_IMAGE007
位宽的乘法器、基于Karatsuba算法求解得到两个模乘操作数
Figure 141188DEST_PATH_IMAGE002
Figure 39873DEST_PATH_IMAGE003
的第一乘积结果
Figure 750341DEST_PATH_IMAGE008
由于本申请将大位宽的模乘操作数拆分为小位宽的子操作数,然后以小位宽的子操作数以及子操作数的加法结果作为处理对象执行乘法运算,因此本申请使用的乘法器的位宽
Figure 274732DEST_PATH_IMAGE007
小于预定阈值,该预定阈值可以自定义设置,也即本申请使用小位宽的乘法器即可,从而减小电路面积,而且乘法规模也较小,从而减少计算耗时。
另外,由于本申请不仅要对子操作数执行乘法操作,而且要对子操作数的加法结果执行乘法操作,而子操作数的加法结果由多个子操作数执行加法操作得到,在执行加法操作过程中可能会产生进位,导致子操作数的加法结果的位宽大于子操作数的位宽
Figure 652623DEST_PATH_IMAGE006
。因此为了适应子操作数的加法结果的位宽,本申请使用的乘法器的位宽
Figure 722211DEST_PATH_IMAGE019
且满足子操作数的加法结果的位宽需求,从而可以为进位预留位宽,实现乘法运算与加法运算的同步推进,从而进一步优化计算时序,减少计算耗时。
步骤130,基于蒙哥马利模乘计算第一乘积结果
Figure 919974DEST_PATH_IMAGE008
的低
Figure 733209DEST_PATH_IMAGE005
位结果
Figure 965607DEST_PATH_IMAGE009
与中间参数
Figure 206096DEST_PATH_IMAGE010
的第二乘积结果
Figure 406002DEST_PATH_IMAGE011
。上述步骤120计算得到的第一乘积结果
Figure 757349DEST_PATH_IMAGE008
包括高位部分的
Figure 844253DEST_PATH_IMAGE020
以及低位部分的
Figure 521222DEST_PATH_IMAGE009
,仅取低
Figure 693578DEST_PATH_IMAGE005
位结果
Figure 583036DEST_PATH_IMAGE009
进入步骤130与中间参数
Figure 39294DEST_PATH_IMAGE010
相乘,其中,中间参数
Figure 621585DEST_PATH_IMAGE012
Figure 281237DEST_PATH_IMAGE013
Figure 239965DEST_PATH_IMAGE014
Figure 301462DEST_PATH_IMAGE015
Figure 54655DEST_PATH_IMAGE004
的最大公约数为1。
步骤140,计算第二乘积结果
Figure 201602DEST_PATH_IMAGE011
的低
Figure 950640DEST_PATH_IMAGE005
位结果
Figure 866643DEST_PATH_IMAGE016
与模乘操作数
Figure 56316DEST_PATH_IMAGE004
的乘积记为第三乘积结果
Figure 424981DEST_PATH_IMAGE017
上述步骤130计算得到的第二乘积结果
Figure 725512DEST_PATH_IMAGE011
包括高位部分
Figure 496022DEST_PATH_IMAGE021
和低位部分
Figure 856596DEST_PATH_IMAGE016
,高位部分
Figure 227403DEST_PATH_IMAGE021
在计算结束后被丢弃,因此可以不计算它来节省操作,因此该步骤仅取低
Figure 66046DEST_PATH_IMAGE005
位结果
Figure 956642DEST_PATH_IMAGE016
与模乘操作数
Figure 222538DEST_PATH_IMAGE004
计算乘法结果。
而与上述步骤120类似,该步骤中,
Figure 565795DEST_PATH_IMAGE016
Figure 473708DEST_PATH_IMAGE004
的位宽也都为
Figure 218810DEST_PATH_IMAGE005
Figure 904875DEST_PATH_IMAGE016
Figure 735428DEST_PATH_IMAGE004
也都是大整数,直接计算
Figure 915874DEST_PATH_IMAGE016
Figure 781062DEST_PATH_IMAGE004
的全积同样较为耗时。所以该步骤的计算方法与上述步骤120类似,将第二乘积结果
Figure 388760DEST_PATH_IMAGE011
的低
Figure 706609DEST_PATH_IMAGE005
位结果
Figure 940013DEST_PATH_IMAGE016
以及位宽为
Figure 659708DEST_PATH_IMAGE005
的模乘操作数
Figure 703887DEST_PATH_IMAGE004
分别拆分为若干个
Figure 509032DEST_PATH_IMAGE006
位宽的子操作数,通过
Figure 296860DEST_PATH_IMAGE016
Figure 605481DEST_PATH_IMAGE004
拆分得到的各个子操作数以及子操作数的加法结果利用
Figure 820562DEST_PATH_IMAGE007
位宽的乘法器、基于Karatsuba算法求解得到
Figure 99621DEST_PATH_IMAGE016
和模乘操作数
Figure 691139DEST_PATH_IMAGE004
的第三乘积结果
Figure 119847DEST_PATH_IMAGE017
步骤150,基于第三乘积结果
Figure 240249DEST_PATH_IMAGE017
输出
Figure 19986DEST_PATH_IMAGE018
的结果,即作为
Figure 149616DEST_PATH_IMAGE001
的模乘结果。在得到第三乘积结果
Figure 432830DEST_PATH_IMAGE017
后需要与第一乘积结果
Figure 504560DEST_PATH_IMAGE008
相加得到
Figure 240435DEST_PATH_IMAGE022
,而使用蒙哥马利模乘的目的是最后得到的
Figure 908177DEST_PATH_IMAGE022
的低位部分
Figure 311476DEST_PATH_IMAGE023
为零,这样对
Figure 304840DEST_PATH_IMAGE022
进行移位操作即能得到最终的模乘结果。因此只需确定是否会通过
Figure 528011DEST_PATH_IMAGE008
的低位部分
Figure 265023DEST_PATH_IMAGE009
Figure 506517DEST_PATH_IMAGE017
的低位部分
Figure 405203DEST_PATH_IMAGE024
相加产生进位即可正确计算
Figure 381249DEST_PATH_IMAGE022
的高位部分
Figure 656373DEST_PATH_IMAGE025
来得到最终的模乘结果。通过验证可知,最终计算时并不需要添加
Figure 503106DEST_PATH_IMAGE026
Figure 838273DEST_PATH_IMAGE027
,因为:(1)如果
Figure 285303DEST_PATH_IMAGE028
,那么会使第二乘积结果
Figure 364118DEST_PATH_IMAGE029
,继而会使第三乘积结果
Figure 596516DEST_PATH_IMAGE030
,因此
Figure 571425DEST_PATH_IMAGE031
,不会产生进位。(2)如果
Figure 522064DEST_PATH_IMAGE032
,则
Figure 138990DEST_PATH_IMAGE027
一定是非零的二进制整数,因为
Figure 225895DEST_PATH_IMAGE033
结果要为零,此时
Figure 623902DEST_PATH_IMAGE026
总是生成
Figure 796258DEST_PATH_IMAGE034
的进位,那么只需要计算
Figure 216875DEST_PATH_IMAGE035
即可。
所以当
Figure 158286DEST_PATH_IMAGE032
Figure 6156DEST_PATH_IMAGE035
否则
Figure 665808DEST_PATH_IMAGE036
。当计算得到的
Figure 608225DEST_PATH_IMAGE037
时,输出
Figure 669722DEST_PATH_IMAGE038
作为模乘结果,否则输出
Figure 688493DEST_PATH_IMAGE039
作为模乘结果。
在本申请提供的方案中,使用Karatsuba算法与蒙哥马利模乘结合来计算
Figure 569862DEST_PATH_IMAGE001
的模乘结果,通过Karatsuba算法完成步骤120和步骤140两步中的大整数乘法运算,从而可以减少计算耗时。而且直接预留进位所需的位宽,使用满足子操作数的加法结果的位宽需求的乘法器来实现乘法运算,实现乘法运算与加法运算的同步推进,进一步减少计算耗时。
在一个实施例中,针对现有加密算法常见的256bit操作数的应用场景,本申请提供的数据处理方法中两个模乘操作数
Figure 332281DEST_PATH_IMAGE002
Figure 248285DEST_PATH_IMAGE003
的位宽均为
Figure 172378DEST_PATH_IMAGE040
,对每个模乘操作数拆分得到的4个子操作数的位宽均为
Figure 55890DEST_PATH_IMAGE041
。第二乘积结果
Figure 356421DEST_PATH_IMAGE011
的低
Figure 126931DEST_PATH_IMAGE005
位结果
Figure 487505DEST_PATH_IMAGE016
以及模乘操作数
Figure 343466DEST_PATH_IMAGE004
的位宽均为
Figure 182109DEST_PATH_IMAGE040
,对
Figure 72704DEST_PATH_IMAGE016
拆分得到的4个子操作数的位宽均为
Figure 853447DEST_PATH_IMAGE041
,对模乘操作数
Figure 196704DEST_PATH_IMAGE004
拆分得到的4个子操作数的位宽均为
Figure 839038DEST_PATH_IMAGE041
。基于本申请提供的方法,对每个模乘操作数拆分得到的多个子操作数相加得到的加法结果的位宽最多为66bit,对
Figure 584140DEST_PATH_IMAGE016
拆分得到的多个子操作数相加得到的加法结果的位宽最多为66bit,对模乘操作数
Figure 20938DEST_PATH_IMAGE004
拆分得到的多个子操作数相加得到的加法结果的位宽最多为66bit。该数据处理方法使用的乘法器的位宽
Figure 851490DEST_PATH_IMAGE042
,相比于直接使用64bit位宽的乘法器,使用66bit的乘法器时可以直接存储乘数的进位。
对于典型的模乘操作数
Figure 297515DEST_PATH_IMAGE002
Figure 426619DEST_PATH_IMAGE003
Figure 299897DEST_PATH_IMAGE004
都是256bit的场景,利用该实施例这种拆分成4个子操作数,使用66bit的乘法器实现的方法可以加快执行速度。同样针对模乘操作数
Figure 86587DEST_PATH_IMAGE002
Figure 336303DEST_PATH_IMAGE003
Figure 55998DEST_PATH_IMAGE004
都是256bit的场景:(1)当直接使用64bit的乘法器完成蒙哥马利模乘需要进行48个计算周期。(2)当基于FIOS(Finely Integrated Operand Scanning)、SOS(Separated Operand Scanning)、CIOS(Coarsely Integrated Operand Scanning)、FIPS(Finely Integrated Operand Scanning)、CIHS(Coarsely Integrated HybirdScanning) 这五种不同类型的蒙哥马利扩展算法,使用64bit的乘法器完成模乘运算时,可以将计算耗时降低至38个计算周期。(3)在使用本申请的数据处理方法,结合Karatsuba算法与蒙哥马利模乘,并利用单个66bit的乘法器完成时,只需
Figure 100177DEST_PATH_IMAGE043
个计算周期即可得到
Figure 639743DEST_PATH_IMAGE001
的模乘结果,其中,
Figure 676838DEST_PATH_IMAGE044
,符号
Figure 985459DEST_PATH_IMAGE045
表示向上取整。在取
Figure 200540DEST_PATH_IMAGE042
的情况下代入数据可计算得到可以将计算耗时降低至28个计算周期。
在另一个实施例中,进一步的,该数据处理方法使用多个乘法器结合并行运算设计,可以进一步减小计算大整数模乘的计算耗时。基于该实施例结合Karatsuba算法与蒙哥马利模乘,并利用
Figure 492981DEST_PATH_IMAGE046
个66bit的乘法器并行运算的场景,该数据处理方法通过
Figure 818920DEST_PATH_IMAGE047
个计算周期得到
Figure 247627DEST_PATH_IMAGE001
。其中,
Figure 882877DEST_PATH_IMAGE048
表示与乘法器的个数
Figure 397035DEST_PATH_IMAGE046
对应的额外计算周期数,是并行运算时不同电路器件必须增加的必要的等待周期,当使用的乘法器的个数不同的,所需的额外计算周期数也会存在不同。
但是增加乘法器会增加电路面积,因此综合考虑计算耗时和电路面积,在一个实施例中,使用两个66bit的乘法器实现该数据处理方法。以取
Figure 526665DEST_PATH_IMAGE042
Figure 75458DEST_PATH_IMAGE049
为例,通过并行运算设计可以使得
Figure 632341DEST_PATH_IMAGE050
,最终总计只需16个计算周期即可。而对比同样使用两个乘法器的FIOS蒙哥马利扩展算法,其在最优情况下需要使用4个额外计算周期数。FIOS、SOS、CIOS依次需要28个计算周期、24个计算周期和24个计算周期。因此本申请中这种方法,并行度更高,可以使用更少的计算周期完成,且所需的额外计算周期数也是相对较小的。
接下去,该实施例针对使用两个66bit的乘法器结合并行运算设计实现该数据处理方法的时序过程介绍如下:
上述步骤120和步骤140的计算过程是相同的,该实施例以基于Karatsuba算法求解得到任意两个位宽均为256bit的乘数
Figure 368216DEST_PATH_IMAGE051
Figure 301537DEST_PATH_IMAGE052
的乘积结果
Figure 954104DEST_PATH_IMAGE053
为例对这两种情况做统一描述。当乘数
Figure 681889DEST_PATH_IMAGE051
Figure 170639DEST_PATH_IMAGE052
分别为模乘操作数
Figure 907651DEST_PATH_IMAGE002
Figure 899877DEST_PATH_IMAGE003
时,对应得到的乘积结果
Figure 798563DEST_PATH_IMAGE053
即为第一乘积结果
Figure 774610DEST_PATH_IMAGE008
。当乘数
Figure 301930DEST_PATH_IMAGE051
Figure 148664DEST_PATH_IMAGE052
分别为
Figure 483830DEST_PATH_IMAGE016
和模乘操作数
Figure 681593DEST_PATH_IMAGE004
时,对应得到的乘积结果
Figure 760408DEST_PATH_IMAGE053
即为第三乘积结果
Figure 727227DEST_PATH_IMAGE017
在对乘数
Figure 216983DEST_PATH_IMAGE051
Figure 902042DEST_PATH_IMAGE052
拆分为子操作数时,对乘数
Figure 518968DEST_PATH_IMAGE051
拆分得到的4个64bit的子操作数
Figure 605873DEST_PATH_IMAGE054
Figure 282842DEST_PATH_IMAGE055
Figure 189618DEST_PATH_IMAGE056
Figure 610235DEST_PATH_IMAGE057
,其中,
Figure 800914DEST_PATH_IMAGE054
包括乘数
Figure 648784DEST_PATH_IMAGE051
的0到63位,
Figure 308435DEST_PATH_IMAGE055
包括乘数
Figure 267164DEST_PATH_IMAGE051
的64到127位,
Figure 328661DEST_PATH_IMAGE056
包括乘数
Figure 816274DEST_PATH_IMAGE051
的128到191位,
Figure 963222DEST_PATH_IMAGE057
包括乘数
Figure 974909DEST_PATH_IMAGE051
的192到255位。类似的,对乘数
Figure 890912DEST_PATH_IMAGE052
拆分得到的4个64bit的子操作数
Figure 80585DEST_PATH_IMAGE058
Figure 183671DEST_PATH_IMAGE059
Figure 484202DEST_PATH_IMAGE060
Figure 520291DEST_PATH_IMAGE061
,其中,
Figure 880865DEST_PATH_IMAGE058
包括乘数
Figure 723444DEST_PATH_IMAGE052
的0到63位,
Figure 827666DEST_PATH_IMAGE059
包括乘数
Figure 718262DEST_PATH_IMAGE052
的64到127位,
Figure 249737DEST_PATH_IMAGE060
包括乘数
Figure 592994DEST_PATH_IMAGE052
的128到191位,
Figure 235328DEST_PATH_IMAGE061
包括乘数
Figure 964118DEST_PATH_IMAGE052
的192到255位。
计算乘数
Figure 666495DEST_PATH_IMAGE051
的子操作数的加法结果包括:
Figure 497048DEST_PATH_IMAGE062
Figure 943073DEST_PATH_IMAGE063
Figure 542681DEST_PATH_IMAGE064
Figure 150380DEST_PATH_IMAGE065
以及
Figure 468229DEST_PATH_IMAGE066
。其中,在由子操作数计算得到
Figure 967212DEST_PATH_IMAGE067
Figure 421327DEST_PATH_IMAGE068
Figure 465507DEST_PATH_IMAGE069
Figure 270652DEST_PATH_IMAGE070
的过程中可能产生进位,所以
Figure 792900DEST_PATH_IMAGE067
Figure 367101DEST_PATH_IMAGE068
Figure 582181DEST_PATH_IMAGE069
Figure 123890DEST_PATH_IMAGE070
在加法产生的进位的作用下位宽最多为65bit。而
Figure 184250DEST_PATH_IMAGE071
又可能再产生进位,所以
Figure 612957DEST_PATH_IMAGE072
在加法产生的进位的作用下位宽最多为66bit。
类似的,计算乘数
Figure 264518DEST_PATH_IMAGE052
的子操作数的加法结果包括:
Figure 778676DEST_PATH_IMAGE073
Figure 908306DEST_PATH_IMAGE074
Figure 457099DEST_PATH_IMAGE075
Figure 601DEST_PATH_IMAGE076
以及
Figure 2055DEST_PATH_IMAGE077
。其中,
Figure 935376DEST_PATH_IMAGE078
Figure 338675DEST_PATH_IMAGE079
Figure 800881DEST_PATH_IMAGE080
Figure 289631DEST_PATH_IMAGE081
在加法产生的进位的作用下位宽最多为65bit,
Figure 10331DEST_PATH_IMAGE082
在加法产生的进位的作用下位宽最多为66bit。
在完成对乘数
Figure 268137DEST_PATH_IMAGE051
Figure 432402DEST_PATH_IMAGE052
的拆分后,使用位宽
Figure 142869DEST_PATH_IMAGE042
的乘法器计算乘数
Figure 152413DEST_PATH_IMAGE051
的子操作数与乘数
Figure 530305DEST_PATH_IMAGE052
的子操作数的乘积,以及使用位宽
Figure 599892DEST_PATH_IMAGE042
的乘法器计算乘数
Figure 46923DEST_PATH_IMAGE051
的子操作数的加法结果与乘数
Figure 860158DEST_PATH_IMAGE052
的子操作数的加法结果的乘积,继而计算得到乘数
Figure 92556DEST_PATH_IMAGE051
Figure 598624DEST_PATH_IMAGE052
的乘积结果
Figure 18104DEST_PATH_IMAGE053
。经过本申请的并行运算设计,通过五个计算周期即可以得到乘积结果
Figure 635030DEST_PATH_IMAGE053
,包括如下过程:
(1)在第一个计算周期,利用两个乘法器并行地分别计算
Figure 971203DEST_PATH_IMAGE083
以及
Figure 648172DEST_PATH_IMAGE084
,计算
Figure 820527DEST_PATH_IMAGE085
Figure 709985DEST_PATH_IMAGE086
之和并在当前计算周期结束后更新存入寄存器
Figure 916976DEST_PATH_IMAGE087
,计算
Figure 764846DEST_PATH_IMAGE085
Figure 424498DEST_PATH_IMAGE086
的位操作结果并在当前计算周期结束后更新存入寄存器
Figure 358126DEST_PATH_IMAGE088
。在一个实施例中,将
Figure 154043DEST_PATH_IMAGE085
作为高位部分、
Figure 172815DEST_PATH_IMAGE086
作为低位部分,执行二进制数拼接得到
Figure 319763DEST_PATH_IMAGE085
Figure 82182DEST_PATH_IMAGE086
的位操作结果,加快运算。
(2)在第二个计算周期,利用两个乘法器并行地分别计算
Figure 732606DEST_PATH_IMAGE089
以及
Figure 905968DEST_PATH_IMAGE090
,计算
Figure 540211DEST_PATH_IMAGE091
Figure 840743DEST_PATH_IMAGE092
之和并在当前计算周期结束后更新存入寄存器
Figure 611252DEST_PATH_IMAGE093
,计算
Figure 706247DEST_PATH_IMAGE091
Figure 827787DEST_PATH_IMAGE092
的位操作结果并在当前计算周期结束后更新存入寄存器
Figure 932009DEST_PATH_IMAGE094
。计算
Figure 806293DEST_PATH_IMAGE091
Figure 337769DEST_PATH_IMAGE092
的位操作结果与寄存器
Figure 415446DEST_PATH_IMAGE088
存储数据之和、并在当前计算周期结束后更新存入寄存器
Figure 323359DEST_PATH_IMAGE095
。这里的寄存器
Figure 68462DEST_PATH_IMAGE088
存储数据即为第一个计算周期更新存入的数据。在一个实施例中,将
Figure 770838DEST_PATH_IMAGE091
作为高位部分、将
Figure 585079DEST_PATH_IMAGE092
作为低位部分,直接执行二进制数拼接得到
Figure 31104DEST_PATH_IMAGE091
Figure 630713DEST_PATH_IMAGE092
的位操作结果。
(3)在第三个计算周期,利用两个乘法器并行地分别计算
Figure 503991DEST_PATH_IMAGE096
以及
Figure 821840DEST_PATH_IMAGE097
,计算
Figure 805976DEST_PATH_IMAGE098
与寄存器
Figure 260091DEST_PATH_IMAGE087
存储数据之差并暂时赋值给
Figure 556468DEST_PATH_IMAGE099
,计算
Figure 361613DEST_PATH_IMAGE100
与寄存器
Figure 149441DEST_PATH_IMAGE101
存储数据之差并暂时赋值给
Figure 458062DEST_PATH_IMAGE102
。在当前周期结束后将
Figure 673143DEST_PATH_IMAGE099
更新存入寄存器
Figure 700005DEST_PATH_IMAGE103
,在当前周期结束后将
Figure 291523DEST_PATH_IMAGE102
更新存入寄存器
Figure 969498DEST_PATH_IMAGE101
。计算
Figure 355480DEST_PATH_IMAGE099
与寄存器
Figure 135217DEST_PATH_IMAGE088
存储数据的位操作结果并在当前周期结束后更新存入寄存器
Figure 999268DEST_PATH_IMAGE088
,计算
Figure 282482DEST_PATH_IMAGE102
与寄存器
Figure 104944DEST_PATH_IMAGE094
存储数据的位操作结果并在当前周期结束后更新存入寄存器
Figure 106398DEST_PATH_IMAGE094
在一个实施例中,对
Figure 23407DEST_PATH_IMAGE099
左移64位并与寄存器
Figure 161128DEST_PATH_IMAGE088
存储数据相加得到位操作结果,对
Figure 154492DEST_PATH_IMAGE102
左移64位并与寄存器
Figure 643242DEST_PATH_IMAGE094
存储数据相加得到位操作结果。由于
Figure 849095DEST_PATH_IMAGE099
与寄存器
Figure 106901DEST_PATH_IMAGE088
存储数据的位操作结果可能产生进位,因此为了避免丢位,在该计算周期内执行逻辑运算得到所需的位操作结果,而不直接执行二进制数拼接。对于
Figure 520434DEST_PATH_IMAGE102
与寄存器
Figure 230901DEST_PATH_IMAGE094
存储数据的位操作结果同理。
(4)在第四个计算周期,利用两个乘法器并行地分别计算
Figure 506024DEST_PATH_IMAGE104
以及
Figure 821599DEST_PATH_IMAGE105
。计算
Figure 143384DEST_PATH_IMAGE106
Figure 606726DEST_PATH_IMAGE107
之和并在当前计算周期结束后更新存入寄存器
Figure 419961DEST_PATH_IMAGE108
,计算寄存器
Figure 386780DEST_PATH_IMAGE108
存储数据与寄存器
Figure 627269DEST_PATH_IMAGE103
存储数据之和、并在当前计算周期结束后更新存储入寄存器
Figure 577907DEST_PATH_IMAGE103
;计算
Figure 194833DEST_PATH_IMAGE106
Figure 531006DEST_PATH_IMAGE107
的位操作结果与寄存器
Figure 207975DEST_PATH_IMAGE095
存储数据之差并在当前计算周期结束后更新存储在寄存器
Figure 114751DEST_PATH_IMAGE095
。在一个实施例中,对
Figure 269789DEST_PATH_IMAGE106
左移128位并与
Figure 476779DEST_PATH_IMAGE107
相加得到位操作结果,同样的,为了避免丢位,通过执行逻辑运算得到所需的位操作结果。
(5)在第五个计算周期,利用一个乘法器计算
Figure 793491DEST_PATH_IMAGE109
,计算
Figure 702410DEST_PATH_IMAGE110
减去寄存器
Figure 661139DEST_PATH_IMAGE111
存储数据以及减去寄存器
Figure 722635DEST_PATH_IMAGE112
存储数据的结果并暂时赋值给
Figure 741407DEST_PATH_IMAGE113
,计算
Figure 888355DEST_PATH_IMAGE113
与寄存器
Figure 119616DEST_PATH_IMAGE114
存储数据的位操作结果并暂时赋值给
Figure 35619DEST_PATH_IMAGE115
;计算寄存器
Figure 474560DEST_PATH_IMAGE094
存储数据和寄存器
Figure 108803DEST_PATH_IMAGE088
存储数据的位操作结果与
Figure 143755DEST_PATH_IMAGE115
之和作为乘积结果。
在一个实施例中,将
Figure 914265DEST_PATH_IMAGE113
左移64位并与寄存器
Figure 274840DEST_PATH_IMAGE114
存储数据相加得到位操作结果,将寄存器
Figure 396379DEST_PATH_IMAGE094
存储数据作为高位部分、将寄存器
Figure 235022DEST_PATH_IMAGE088
存储数据作为低位部分执行二进制数拼接得到位操作结果。同理,为了避免丢位,通过执行逻辑运算得到
Figure 112236DEST_PATH_IMAGE113
与寄存器
Figure 643711DEST_PATH_IMAGE114
存储数据的位操作结果。而寄存器
Figure 986968DEST_PATH_IMAGE094
存储数据与寄存器
Figure 894881DEST_PATH_IMAGE088
存储数据的位操作结果不存在进位,因此可以直接执行二进制数拼接,以减少计算耗时。
在上述过程中,暂时赋值的数据可以在当前计算周期中继续使用,而使用到的寄存器存储数据都是当前计算周期取出的、上一个计算周期存入寄存器中的数据。各个计算周期内,除了乘法操作之外,没有数据依赖关系的其他计算步骤也都可以并行操作。
在一个实施例中,在使用两个66bit的乘法器结合并行运算设计的基础上,上述步骤130基于蒙哥马利模乘计算
Figure 639983DEST_PATH_IMAGE009
与中间参数
Figure 342360DEST_PATH_IMAGE010
的第二乘积结果
Figure 156601DEST_PATH_IMAGE011
需要使用到5个计算周期,在该步骤中,同样需要对
Figure 337047DEST_PATH_IMAGE009
Figure 202235DEST_PATH_IMAGE010
进行拆分,包括将256bit位宽的
Figure 75513DEST_PATH_IMAGE009
拆分为
Figure 393362DEST_PATH_IMAGE116
Figure 111919DEST_PATH_IMAGE117
Figure 831613DEST_PATH_IMAGE118
Figure 125060DEST_PATH_IMAGE119
,其中,
Figure 930205DEST_PATH_IMAGE116
包括
Figure 718033DEST_PATH_IMAGE120
的0到63位,
Figure 26654DEST_PATH_IMAGE117
包括
Figure 241735DEST_PATH_IMAGE120
的64到127位,
Figure 268597DEST_PATH_IMAGE118
包括
Figure 860115DEST_PATH_IMAGE120
的128到191位,
Figure 538090DEST_PATH_IMAGE119
包括
Figure 658493DEST_PATH_IMAGE120
的192到255位。将中间参数
Figure 438230DEST_PATH_IMAGE010
拆分为
Figure 567860DEST_PATH_IMAGE121
Figure 851074DEST_PATH_IMAGE122
Figure 673536DEST_PATH_IMAGE123
Figure 674990DEST_PATH_IMAGE124
Figure 341069DEST_PATH_IMAGE121
包括中间参数
Figure 744368DEST_PATH_IMAGE125
的0到63位,
Figure 737732DEST_PATH_IMAGE122
包括中间参数
Figure 695324DEST_PATH_IMAGE125
的64到127位,
Figure 432336DEST_PATH_IMAGE123
包括中间参数
Figure 690142DEST_PATH_IMAGE125
的128到191位,
Figure 838095DEST_PATH_IMAGE124
包括中间参数
Figure 814141DEST_PATH_IMAGE125
的192到255位。则通过5个计算周期计算得到第二乘积结果
Figure 89265DEST_PATH_IMAGE126
的过程包括:
(1)在第一个计算周期,利用两个乘法器并行地分别计算
Figure 935998DEST_PATH_IMAGE127
以及
Figure 271165DEST_PATH_IMAGE128
,计算
Figure 468928DEST_PATH_IMAGE129
Figure 547742DEST_PATH_IMAGE130
之和并在当前计算周期结束后更新存入寄存器
Figure 29408DEST_PATH_IMAGE131
以及寄存器
Figure 4317DEST_PATH_IMAGE132
(2)在第二个计算周期,利用两个乘法器并行地分别计算
Figure 954956DEST_PATH_IMAGE133
以及
Figure 571882DEST_PATH_IMAGE134
,计算寄存器
Figure 658786DEST_PATH_IMAGE131
存储数据左移64位与
Figure 804597DEST_PATH_IMAGE135
相加后的结果并暂时赋值给
Figure 226220DEST_PATH_IMAGE136
,在当前计算周期结束后将
Figure 646837DEST_PATH_IMAGE136
更新存入寄存器
Figure 588248DEST_PATH_IMAGE131
,计算
Figure 436118DEST_PATH_IMAGE137
、寄存器
Figure 95770DEST_PATH_IMAGE132
存储数据以及
Figure 54499DEST_PATH_IMAGE138
之和并在当前计算周期结束后更新存入寄存器
Figure 850416DEST_PATH_IMAGE132
(3)在第三个计算周期,利用两个乘法器并行地分别计算
Figure 121385DEST_PATH_IMAGE139
以及
Figure 2754DEST_PATH_IMAGE140
,计算
Figure 765173DEST_PATH_IMAGE141
Figure 415597DEST_PATH_IMAGE142
之和左移192位的结果
Figure 605270DEST_PATH_IMAGE143
,将
Figure 239514DEST_PATH_IMAGE143
与寄存器
Figure 540045DEST_PATH_IMAGE131
存储数据,以及寄存器
Figure 559823DEST_PATH_IMAGE132
存储数据左移128位的结果相加得到的
Figure 920397DEST_PATH_IMAGE144
,并在当前计算周期结束后更新存入寄存器
Figure 776357DEST_PATH_IMAGE145
(4)在第四个计算周期,利用两个乘法器并行地分别计算
Figure 615000DEST_PATH_IMAGE146
以及,计算
Figure 505596DEST_PATH_IMAGE147
左移128位的结果,与寄存器
Figure 37072DEST_PATH_IMAGE145
存储数据,以及
Figure 380328DEST_PATH_IMAGE148
左移128位的结果相加得到的
Figure 271930DEST_PATH_IMAGE149
,并在当前计算周期结束后更新存入寄存器
Figure 751453DEST_PATH_IMAGE145
(5)在第五个计算周期,利用两个乘法器并行地分别计算
Figure 453829DEST_PATH_IMAGE150
以及
Figure 284382DEST_PATH_IMAGE151
,计算
Figure 730407DEST_PATH_IMAGE152
Figure 595595DEST_PATH_IMAGE153
之和左移192位的结果与寄存器
Figure 452561DEST_PATH_IMAGE145
存储数据之和得到所述第二乘积结果
Figure 504831DEST_PATH_IMAGE126
基于上述实施例提供的利用两个66bit实现的并行运算过程,上述步骤150利用寄存器存储的数据输出所需的模乘结果的方法包括:当第一乘积结果
Figure 754547DEST_PATH_IMAGE008
的低
Figure 474241DEST_PATH_IMAGE005
位结果
Figure 518420DEST_PATH_IMAGE028
,且
Figure 57986DEST_PATH_IMAGE154
时输出
Figure 580234DEST_PATH_IMAGE155
。当第一乘积结果
Figure 406632DEST_PATH_IMAGE008
的低
Figure 621713DEST_PATH_IMAGE005
位结果
Figure 914154DEST_PATH_IMAGE156
,且
Figure 240093DEST_PATH_IMAGE157
时,输出
Figure 668801DEST_PATH_IMAGE158
。当第一乘积结果
Figure 54783DEST_PATH_IMAGE008
的低
Figure 568940DEST_PATH_IMAGE005
位结果
Figure 947838DEST_PATH_IMAGE032
,且
Figure 496631DEST_PATH_IMAGE159
时,输出
Figure 787935DEST_PATH_IMAGE160
。当第一乘积结果
Figure 789389DEST_PATH_IMAGE008
的低
Figure 722710DEST_PATH_IMAGE005
位结果
Figure 126010DEST_PATH_IMAGE161
,且
Figure 853794DEST_PATH_IMAGE162
时,输出
Figure 326233DEST_PATH_IMAGE163
。其中,
Figure 63245DEST_PATH_IMAGE164
表示第三乘积结果
Figure 321051DEST_PATH_IMAGE165
与寄存器
Figure 219736DEST_PATH_IMAGE166
存储数据之和。
在经过5个计算周期得到第一乘积结果
Figure 930203DEST_PATH_IMAGE008
,此时需要先将第一乘积结果
Figure 205327DEST_PATH_IMAGE008
存入寄存器
Figure 566907DEST_PATH_IMAGE167
中,由此会产生额外计算周期数。然后在下一个计算周期再从寄存器
Figure 902074DEST_PATH_IMAGE167
中取出第一乘积结果
Figure 99837DEST_PATH_IMAGE008
的低
Figure 913072DEST_PATH_IMAGE005
位结果
Figure 879891DEST_PATH_IMAGE009
使用并再经过5个计算周期得到第二乘积结果
Figure 385959DEST_PATH_IMAGE011
,最后经过5个计算周期得到第三乘积结果
Figure 71018DEST_PATH_IMAGE017
后,乘法部分已经全部计算完成,但是这个时候还需要执行若干个加法操作得到最终的模乘结果,但是目前的加法器已经都参与过计算,不能立刻再进行输入,这样会覆盖掉之前的结果,所以也需要先将第三乘积结果
Figure 940141DEST_PATH_IMAGE017
更新存入寄存器
Figure 761467DEST_PATH_IMAGE167
中,再放到下个周期进行计算,由此又产生了额外计算周期数。所以在使用两个66bit乘法器并行运算实现该数据处理方法时,总共产生了2个额外计算周期数,总计需要16个计算周期。在最后一个计算周期中,可以将寄存器中存储的第三乘积结果
Figure 438436DEST_PATH_IMAGE017
取出并按上述逻辑进行加法运算后最终输出模乘结果。
基于上述实施例描述的并行运算过程,该实施例对16个计算周期的计算过程分别描述如下:
Figure 610791DEST_PATH_IMAGE168
Figure 31408DEST_PATH_IMAGE169
Figure 972819DEST_PATH_IMAGE170
上述16个计算周期中,计算周期1~5中的乘数
Figure 804378DEST_PATH_IMAGE051
Figure 464029DEST_PATH_IMAGE052
分别为模乘操作数
Figure 422758DEST_PATH_IMAGE002
Figure 484255DEST_PATH_IMAGE003
,对应得到的乘积结果
Figure 237447DEST_PATH_IMAGE053
即为第一乘积结果
Figure 118816DEST_PATH_IMAGE008
存入寄存器
Figure 881235DEST_PATH_IMAGE167
。计算周期6将寄存器
Figure 46506DEST_PATH_IMAGE167
中的数据读出得到
Figure 236179DEST_PATH_IMAGE009
,计算周期6~10基于蒙哥马利模乘计算
Figure 604844DEST_PATH_IMAGE009
与中间参数
Figure 639796DEST_PATH_IMAGE010
的第二乘积结果
Figure 675885DEST_PATH_IMAGE011
并存入寄存器
Figure 36459DEST_PATH_IMAGE167
。计算周期11将寄存器
Figure 892420DEST_PATH_IMAGE167
中的数据读出得到
Figure 980330DEST_PATH_IMAGE016
,计算周期11~15中的乘数
Figure 870926DEST_PATH_IMAGE051
Figure 402401DEST_PATH_IMAGE052
分别为
Figure 745658DEST_PATH_IMAGE016
Figure 387992DEST_PATH_IMAGE004
,对应得到的乘积结果
Figure 867515DEST_PATH_IMAGE053
即为第三乘积结果
Figure 810370DEST_PATH_IMAGE017
存入寄存器
Figure 640923DEST_PATH_IMAGE167
。计算周期16通过多次加法操作将可能输出的多种结果均计算出来并暂时赋值给
Figure 86948DEST_PATH_IMAGE171
Figure 420977DEST_PATH_IMAGE172
Figure 294255DEST_PATH_IMAGE173
Figure 612104DEST_PATH_IMAGE174
,最终输出其中一个所需的值作为模乘结果。在上述时序列表中,符号
Figure 861820DEST_PATH_IMAGE175
表示在计算周期结束后更新存入对应的寄存器,符号
Figure 565202DEST_PATH_IMAGE176
表示将计算结果暂时赋值给对应的参数以供当前计算周期后续操作步骤使用,符号
Figure 343803DEST_PATH_IMAGE177
为左移运算符,
Figure 148948DEST_PATH_IMAGE178
表示执行
Figure 936775DEST_PATH_IMAGE179
计算
Figure 510976DEST_PATH_IMAGE180
暂时赋值给
Figure 460477DEST_PATH_IMAGE181
,然后在当前计算周期结束后执行
Figure 2186DEST_PATH_IMAGE182
Figure 328125DEST_PATH_IMAGE181
更新存入寄存器
Figure 756832DEST_PATH_IMAGE183
,其他依次类推。
在一个实施例中,用于实现上述实施例的数据处理方法的数据处理电路请参考图3,包括两个位宽为66bit的乘法器M1和M2,还包括第一加法器组、第二加法器组、包含多个寄存器的寄存器组、四个四选一多路选择器MUX1、MUX2、MUX3和MUX4、两个五选二多路选择器MUX5和MUX6、一个数据选择器MUX7以及控制器,控制器控制所有四选一多路选择器、五选二多路选择器、数据选择器和寄存器组。
MUX1的四个输入端分别获取模乘操作数
Figure 408394DEST_PATH_IMAGE002
的四个子操作数,MUX2的四个输入端分别获取模乘操作数
Figure 656972DEST_PATH_IMAGE003
的四个子操作数,MUX3的四个输入端分别获取模乘操作数
Figure 786602DEST_PATH_IMAGE004
的四个子操作数,MUX4的四个输入端分别获取中间参数
Figure 335395DEST_PATH_IMAGE010
的四个子操作数。
MUX5的五个输入端分别连接MUX1的输出端、MUX2的输出端、MUX3的输出端、MUX4的输出端以及寄存器组的输出端,MUX5的两个输出端连接第一加法器组。
MUX6的五个输入端分别连接MUX1的输出端、MUX2的输出端、第一加法器组的两个输出端以及寄存器组的输出端。MUX6的一个输出端分别连接两个乘法器的一个输入端,MUX6的另一个输出端分别连接两个乘法器的另一个输入端。
MUX7的三个输入端分别连接两个乘法器的输出端以及寄存器的输出端,MUX7引出两个输出端连接第二加法器组的两个输入端,MUX7还引出输出端连接寄存器组的输入端,第二加法器组的输出端连接寄存器组的输入端。
基于图3所示的数据处理电路,输入的数据首先进入第一加法器组进行处理,输出的结果通过MUX6进入到两个66bit的乘法器中做并行的乘法运算,得到的一部分乘法结果存入寄存器组中的相应寄存器中,等待下次返回给输入。另一部分乘法结果进入第二加法器组中进行加法运算,得到的加法结果存入寄存器组中的相应寄存器中等待下次返回给输入。
在一个实施例中,第一加法器组包括4个64bit的加法器。第二加法器组包括2个132bit的加法器、1个256bit的加法器和1个384bit的加法器,该实施例提供的数据处理电路可以在电路面积可接受范围内,使用最少的寄存器和最少的加法器。
以上所述的仅是本申请的优选实施方式,本申请不限于以上实施例。可以理解,本领域技术人员在不脱离本申请的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本申请的保护范围之内。

Claims (10)

1.一种结合Karatsuba和蒙哥马利模乘的数据处理方法,其特征在于,所述数据处理方法包括:
获取两个模乘操作数
Figure 502478DEST_PATH_IMAGE001
Figure 477257DEST_PATH_IMAGE002
,两个模乘操作数
Figure 51457DEST_PATH_IMAGE001
Figure 453489DEST_PATH_IMAGE002
的位宽均为
Figure 745930DEST_PATH_IMAGE003
将两个模乘操作数
Figure 9552DEST_PATH_IMAGE001
Figure 687527DEST_PATH_IMAGE002
分别拆分为若干个
Figure 276771DEST_PATH_IMAGE004
位宽的子操作数,通过模乘操作数
Figure 790929DEST_PATH_IMAGE001
Figure 128018DEST_PATH_IMAGE002
拆分得到的各个子操作数以及子操作数的加法结果利用
Figure 676811DEST_PATH_IMAGE005
位宽的乘法器、基于Karatsuba算法求解得到两个模乘操作数
Figure 420645DEST_PATH_IMAGE001
Figure 422099DEST_PATH_IMAGE002
的第一乘积结果
Figure 293103DEST_PATH_IMAGE006
,其中,乘法器的位宽
Figure 945670DEST_PATH_IMAGE005
满足子操作数的加法结果的位宽需求且小于预定阈值;
基于蒙哥马利模乘计算所述第一乘积结果
Figure 876717DEST_PATH_IMAGE006
的低
Figure 552418DEST_PATH_IMAGE003
位结果
Figure 23850DEST_PATH_IMAGE007
与中间参数
Figure 219339DEST_PATH_IMAGE008
的第二乘积结果
Figure 635802DEST_PATH_IMAGE009
Figure 549531DEST_PATH_IMAGE010
Figure 559075DEST_PATH_IMAGE011
Figure 123918DEST_PATH_IMAGE012
Figure 396767DEST_PATH_IMAGE013
Figure 109377DEST_PATH_IMAGE014
的最大公约数为1;
将所述第二乘积结果
Figure 860296DEST_PATH_IMAGE009
的低
Figure 92694DEST_PATH_IMAGE003
位结果
Figure 785712DEST_PATH_IMAGE015
以及位宽为
Figure 470771DEST_PATH_IMAGE003
的模乘操作数
Figure 271719DEST_PATH_IMAGE014
分别拆分为若干个
Figure 358623DEST_PATH_IMAGE004
位宽的子操作数,通过
Figure 973275DEST_PATH_IMAGE015
和模乘操作数
Figure 394898DEST_PATH_IMAGE014
拆分得到的各个子操作数以及子操作数的加法结果利用
Figure 487619DEST_PATH_IMAGE005
位宽的乘法器、基于Karatsuba算法求解得到
Figure 694610DEST_PATH_IMAGE015
和模乘操作数
Figure 729431DEST_PATH_IMAGE014
的第三乘积结果
Figure 389082DEST_PATH_IMAGE016
基于所述第三乘积结果
Figure 534761DEST_PATH_IMAGE016
输出
Figure 330679DEST_PATH_IMAGE017
的结果作为
Figure 287134DEST_PATH_IMAGE018
的模乘结果。
2.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法使用的乘法器的位宽
Figure 686279DEST_PATH_IMAGE019
,两个模乘操作数
Figure 386381DEST_PATH_IMAGE001
Figure 302385DEST_PATH_IMAGE002
的位宽均为
Figure 413429DEST_PATH_IMAGE020
,对每个模乘操作数拆分得到的4个子操作数的位宽均为
Figure 250935DEST_PATH_IMAGE021
,每个模乘操作数拆分得到的多个子操作数相加得到的加法结果的位宽最多为66bit;第二乘积结果
Figure 800734DEST_PATH_IMAGE009
的低
Figure 774506DEST_PATH_IMAGE003
位结果
Figure 869501DEST_PATH_IMAGE015
以及模乘操作数
Figure 177992DEST_PATH_IMAGE014
的位宽均为
Figure 669497DEST_PATH_IMAGE020
,对
Figure 763355DEST_PATH_IMAGE015
拆分得到的4个子操作数的位宽均为
Figure 481781DEST_PATH_IMAGE021
,且对
Figure 825038DEST_PATH_IMAGE015
拆分得到的多个子操作数相加得到的加法结果的位宽最多为66bit,对模乘操作数
Figure 919902DEST_PATH_IMAGE014
拆分得到的4个子操作数的位宽均为
Figure 665004DEST_PATH_IMAGE021
,且对模乘操作数
Figure 305064DEST_PATH_IMAGE014
拆分得到的多个子操作数相加得到的加法结果的位宽最多为66bit。
3.根据权利要求2所述的数据处理方法,其特征在于,所述数据处理方法利用单个乘法器通过
Figure 384884DEST_PATH_IMAGE022
个计算周期得到
Figure 768592DEST_PATH_IMAGE018
的模乘结果,其中,
Figure 368201DEST_PATH_IMAGE023
,符号
Figure 431359DEST_PATH_IMAGE024
表示向上取整。
4.根据权利要求2所述的数据处理方法,其特征在于,所述数据处理方法利用
Figure 749208DEST_PATH_IMAGE025
个位宽
Figure 185874DEST_PATH_IMAGE019
的乘法器通过
Figure 843252DEST_PATH_IMAGE026
个计算周期得到
Figure 887431DEST_PATH_IMAGE018
的模乘结果,其中,
Figure 145106DEST_PATH_IMAGE023
,符号
Figure 870617DEST_PATH_IMAGE024
表示向上取整,
Figure 897347DEST_PATH_IMAGE027
表示与乘法器的个数
Figure 112428DEST_PATH_IMAGE025
对应的额外计算周期数。
5.根据权利要求2所述的数据处理方法,其特征在于,在基于Karatsuba算法求解得到任意两个位宽均为256bit的乘数
Figure 323311DEST_PATH_IMAGE028
Figure 914829DEST_PATH_IMAGE029
的乘积结果
Figure 281220DEST_PATH_IMAGE030
时:
对乘数
Figure 916469DEST_PATH_IMAGE028
拆分得到的4个64bit的子操作数
Figure 899469DEST_PATH_IMAGE031
Figure 216049DEST_PATH_IMAGE032
Figure 499263DEST_PATH_IMAGE033
Figure 977518DEST_PATH_IMAGE034
Figure 978972DEST_PATH_IMAGE031
包括乘数
Figure 849976DEST_PATH_IMAGE028
的0到63位,
Figure 380839DEST_PATH_IMAGE032
包括乘数
Figure 561154DEST_PATH_IMAGE028
的64到127位,
Figure 502434DEST_PATH_IMAGE033
包括乘数
Figure 380391DEST_PATH_IMAGE028
的128到191位,
Figure 90727DEST_PATH_IMAGE034
包括乘数
Figure 459521DEST_PATH_IMAGE028
的192到255位;对乘数
Figure 373250DEST_PATH_IMAGE029
拆分得到的4个64bit的子操作数
Figure 382794DEST_PATH_IMAGE035
Figure 947637DEST_PATH_IMAGE036
Figure 220486DEST_PATH_IMAGE037
Figure 933096DEST_PATH_IMAGE038
Figure 684015DEST_PATH_IMAGE035
包括乘数
Figure 916413DEST_PATH_IMAGE029
的0到63位,
Figure 343852DEST_PATH_IMAGE036
包括乘数
Figure 294490DEST_PATH_IMAGE029
的64到127位,
Figure 645837DEST_PATH_IMAGE037
包括乘数
Figure 188202DEST_PATH_IMAGE029
的128到191位,
Figure 802854DEST_PATH_IMAGE038
包括乘数
Figure 224477DEST_PATH_IMAGE029
的192到255位;
计算乘数
Figure 317198DEST_PATH_IMAGE028
的子操作数的加法结果包括:
Figure 524188DEST_PATH_IMAGE039
Figure 293430DEST_PATH_IMAGE040
Figure 953081DEST_PATH_IMAGE041
Figure 98761DEST_PATH_IMAGE042
以及
Figure 160258DEST_PATH_IMAGE043
;其中,
Figure 116712DEST_PATH_IMAGE044
Figure 509998DEST_PATH_IMAGE045
Figure 944521DEST_PATH_IMAGE046
Figure 860525DEST_PATH_IMAGE047
在加法产生的进位的作用下位宽最多为65bit,
Figure 237148DEST_PATH_IMAGE048
在加法产生的进位的作用下位宽最多为66bit;
计算乘数
Figure 871392DEST_PATH_IMAGE029
的子操作数的加法结果包括:
Figure 358874DEST_PATH_IMAGE049
Figure 129384DEST_PATH_IMAGE050
Figure 693220DEST_PATH_IMAGE051
Figure 1711DEST_PATH_IMAGE052
以及
Figure 840354DEST_PATH_IMAGE053
;其中,
Figure 465370DEST_PATH_IMAGE054
Figure 452305DEST_PATH_IMAGE055
Figure 733245DEST_PATH_IMAGE056
Figure 890426DEST_PATH_IMAGE057
在加法产生的进位的作用下位宽最多为65bit,
Figure 573211DEST_PATH_IMAGE058
在加法产生的进位的作用下位宽最多为66bit;
使用位宽
Figure 275588DEST_PATH_IMAGE019
的乘法器计算乘数
Figure 293091DEST_PATH_IMAGE028
的子操作数与乘数
Figure 473537DEST_PATH_IMAGE029
的子操作数的乘积,以及使用位宽
Figure 525675DEST_PATH_IMAGE019
的乘法器计算乘数
Figure 398953DEST_PATH_IMAGE028
的子操作数的加法结果与乘数
Figure 654485DEST_PATH_IMAGE029
的子操作数的加法结果的乘积,计算得到乘数
Figure 884960DEST_PATH_IMAGE028
Figure 542337DEST_PATH_IMAGE029
的乘积结果
Figure 586516DEST_PATH_IMAGE030
其中,乘数
Figure 578612DEST_PATH_IMAGE028
Figure 366440DEST_PATH_IMAGE029
分别为模乘操作数
Figure 127591DEST_PATH_IMAGE001
Figure 342672DEST_PATH_IMAGE002
、对应得到的乘积结果
Figure 307217DEST_PATH_IMAGE030
为所述第一乘积结果
Figure 148003DEST_PATH_IMAGE006
;或者,乘数
Figure 514393DEST_PATH_IMAGE028
Figure 900375DEST_PATH_IMAGE029
分别为
Figure 869993DEST_PATH_IMAGE015
和模乘操作数
Figure 999623DEST_PATH_IMAGE014
、对应得到的乘积结果
Figure 469787DEST_PATH_IMAGE030
为所述第三乘积结果
Figure 292250DEST_PATH_IMAGE016
6.根据权利要求5所述的数据处理方法,其特征在于,所述数据处理方法使用2个位宽
Figure 231387DEST_PATH_IMAGE019
的乘法器并行实现乘法运算,基于Karatsuba算法求解任意两个位宽均为256bit的乘数
Figure 148396DEST_PATH_IMAGE028
Figure 489379DEST_PATH_IMAGE029
的乘积结果
Figure 482742DEST_PATH_IMAGE030
的方法包括:
在第一个计算周期,利用两个乘法器并行地分别计算
Figure 892864DEST_PATH_IMAGE059
以及
Figure 629876DEST_PATH_IMAGE060
,计算
Figure 360720DEST_PATH_IMAGE061
Figure 993826DEST_PATH_IMAGE062
之和并在当前计算周期结束后更新存入寄存器
Figure 907556DEST_PATH_IMAGE063
,计算
Figure 431947DEST_PATH_IMAGE061
Figure 481942DEST_PATH_IMAGE062
的位操作结果并在当前计算周期结束后更新存入寄存器
Figure 817109DEST_PATH_IMAGE064
在第二个计算周期,利用两个乘法器并行地分别计算
Figure 201823DEST_PATH_IMAGE065
以及
Figure 139692DEST_PATH_IMAGE066
,计算
Figure 372090DEST_PATH_IMAGE067
Figure 802459DEST_PATH_IMAGE068
之和并在当前计算周期结束后更新存入寄存器
Figure 753097DEST_PATH_IMAGE069
,计算
Figure 556974DEST_PATH_IMAGE067
Figure 378299DEST_PATH_IMAGE068
的位操作结果并在当前计算周期结束后更新存入寄存器
Figure 992952DEST_PATH_IMAGE070
,计算
Figure 414574DEST_PATH_IMAGE067
Figure 772875DEST_PATH_IMAGE068
的位操作结果与寄存器
Figure 714286DEST_PATH_IMAGE064
存储数据之和、并在当前计算周期结束后更新存入寄存器
Figure 14686DEST_PATH_IMAGE071
在第三个计算周期,利用两个乘法器并行地分别计算
Figure 612021DEST_PATH_IMAGE072
以及
Figure 817087DEST_PATH_IMAGE073
,计算
Figure 816267DEST_PATH_IMAGE074
与寄存器
Figure 835039DEST_PATH_IMAGE063
存储数据之差并暂时赋值给
Figure 700095DEST_PATH_IMAGE075
,计算
Figure 665777DEST_PATH_IMAGE076
与寄存器
Figure 768732DEST_PATH_IMAGE077
存储数据之差并暂时赋值给
Figure 958404DEST_PATH_IMAGE078
,在当前周期结束后将
Figure 530331DEST_PATH_IMAGE079
更新存入寄存器
Figure 80130DEST_PATH_IMAGE080
,在当前周期结束后将
Figure 788323DEST_PATH_IMAGE078
更新存入寄存器
Figure 148897DEST_PATH_IMAGE077
;计算
Figure 194738DEST_PATH_IMAGE079
与寄存器
Figure 298960DEST_PATH_IMAGE064
存储数据的位操作结果并在当前周期结束后更新存入寄存器
Figure 376507DEST_PATH_IMAGE064
,计算
Figure 907982DEST_PATH_IMAGE078
与寄存器
Figure 188922DEST_PATH_IMAGE070
存储数据的位操作结果并在当前周期结束后更新存入寄存器
Figure 80523DEST_PATH_IMAGE070
在第四个计算周期,利用两个乘法器并行地分别计算
Figure 763309DEST_PATH_IMAGE081
以及
Figure 465685DEST_PATH_IMAGE082
,计算
Figure 483189DEST_PATH_IMAGE083
Figure 929214DEST_PATH_IMAGE084
之和并在当前计算周期结束后更新存入寄存器
Figure 978423DEST_PATH_IMAGE085
,计算寄存器
Figure 851701DEST_PATH_IMAGE085
存储数据与寄存器
Figure 841653DEST_PATH_IMAGE080
存储数据之和、并在当前计算周期结束后更新存储入寄存器
Figure 340637DEST_PATH_IMAGE080
;计算
Figure 998014DEST_PATH_IMAGE083
Figure 494723DEST_PATH_IMAGE084
的位操作结果与寄存器
Figure 768710DEST_PATH_IMAGE071
存储数据之差并在当前计算周期结束后更新存储在寄存器
Figure 759800DEST_PATH_IMAGE071
在第五个计算周期,利用一个乘法器计算
Figure 583268DEST_PATH_IMAGE086
,计算
Figure 736032DEST_PATH_IMAGE087
减去寄存器
Figure 28473DEST_PATH_IMAGE088
存储数据以及减去寄存器
Figure 544292DEST_PATH_IMAGE089
存储数据的结果并暂时赋值给
Figure 238579DEST_PATH_IMAGE090
,计算
Figure 811512DEST_PATH_IMAGE090
与寄存器
Figure 325670DEST_PATH_IMAGE091
存储数据的位操作结果并暂时赋值给
Figure 392983DEST_PATH_IMAGE092
;计算寄存器
Figure 191043DEST_PATH_IMAGE070
存储数据和寄存器
Figure 685610DEST_PATH_IMAGE064
存储数据的位操作结果与
Figure 687064DEST_PATH_IMAGE092
之和作为所述乘积结果
Figure 807335DEST_PATH_IMAGE030
7.根据权利要求6所述的数据处理方法,其特征在于,在基于Karatsuba算法求解乘数
Figure 210635DEST_PATH_IMAGE028
Figure 122440DEST_PATH_IMAGE029
的乘积结果
Figure 611191DEST_PATH_IMAGE030
的过程中:
在第一个计算周期,将
Figure 285886DEST_PATH_IMAGE061
作为高位部分、将
Figure 792959DEST_PATH_IMAGE062
作为低位部分,直接执行二进制数拼接得到
Figure 629328DEST_PATH_IMAGE061
Figure 605374DEST_PATH_IMAGE062
的位操作结果;
在第二个计算周期,将
Figure 67449DEST_PATH_IMAGE067
作为高位部分、将
Figure 179761DEST_PATH_IMAGE068
作为低位部分,直接执行二进制数拼接得到
Figure 967457DEST_PATH_IMAGE067
Figure 102904DEST_PATH_IMAGE068
的位操作结果;
在第三个计算周期,对
Figure 916139DEST_PATH_IMAGE075
左移64位并与寄存器
Figure 338417DEST_PATH_IMAGE064
存储数据相加得到位操作结果,对
Figure 844485DEST_PATH_IMAGE078
左移64位并与寄存器
Figure 263965DEST_PATH_IMAGE070
存储数据相加得到位操作结果;
在第四个计算周期,对
Figure 67842DEST_PATH_IMAGE083
左移128位并与
Figure 358009DEST_PATH_IMAGE084
相加得到位操作结果;
在第五个计算周期,将
Figure 284246DEST_PATH_IMAGE090
左移64位并与寄存器
Figure 394284DEST_PATH_IMAGE091
存储数据相加得到位操作结果,将寄存器
Figure 533010DEST_PATH_IMAGE070
存储数据作为高位部分、将寄存器
Figure 412105DEST_PATH_IMAGE064
存储数据作为低位部分执行二进制数拼接得到位操作结果。
8.根据权利要求6所述的数据处理方法,其特征在于,基于蒙哥马利模乘计算
Figure 259975DEST_PATH_IMAGE007
与中间参数
Figure 127085DEST_PATH_IMAGE008
的第二乘积结果
Figure 85814DEST_PATH_IMAGE009
的方法包括:
在第一个计算周期,利用两个乘法器并行地分别计算
Figure 334261DEST_PATH_IMAGE093
以及
Figure 290716DEST_PATH_IMAGE094
,计算
Figure 172084DEST_PATH_IMAGE095
Figure 387034DEST_PATH_IMAGE096
之和并在当前计算周期结束后更新存入寄存器
Figure 303037DEST_PATH_IMAGE097
以及寄存器
Figure 945240DEST_PATH_IMAGE098
在第二个计算周期,利用两个乘法器并行地分别计算
Figure 251587DEST_PATH_IMAGE099
以及
Figure 552119DEST_PATH_IMAGE100
,计算寄存器
Figure 778088DEST_PATH_IMAGE097
存储数据左移64位与
Figure 138662DEST_PATH_IMAGE101
相加后的结果并暂时赋值给
Figure 181574DEST_PATH_IMAGE102
,在当前计算周期结束后将
Figure 285796DEST_PATH_IMAGE102
更新存入寄存器
Figure 114075DEST_PATH_IMAGE097
,计算
Figure 894818DEST_PATH_IMAGE103
、寄存器
Figure 175757DEST_PATH_IMAGE098
存储数据以及
Figure 270621DEST_PATH_IMAGE104
之和并在当前计算周期结束后更新存入寄存器
Figure 15723DEST_PATH_IMAGE098
在第三个计算周期,利用两个乘法器并行地分别计算
Figure 655783DEST_PATH_IMAGE105
以及
Figure 732674DEST_PATH_IMAGE106
,计算
Figure 116382DEST_PATH_IMAGE107
Figure 715990DEST_PATH_IMAGE108
之和左移192位的结果
Figure 776219DEST_PATH_IMAGE109
;将
Figure 94068DEST_PATH_IMAGE109
与寄存器
Figure 530735DEST_PATH_IMAGE097
存储数据,以及寄存器
Figure 984850DEST_PATH_IMAGE098
存储数据左移128位的结果相加得到的
Figure 966712DEST_PATH_IMAGE110
,并在当前计算周期结束后更新存入寄存器
Figure 21125DEST_PATH_IMAGE111
在第四个计算周期,利用两个乘法器并行地分别计算
Figure 746635DEST_PATH_IMAGE112
以及
Figure 320836DEST_PATH_IMAGE113
,计算
Figure 725797DEST_PATH_IMAGE114
左移128位的结果,与寄存器
Figure 18238DEST_PATH_IMAGE111
存储数据,以及
Figure 531128DEST_PATH_IMAGE115
左移128位的结果相加得到的
Figure 163098DEST_PATH_IMAGE116
,并在当前计算周期结束后更新存入寄存器
Figure 814659DEST_PATH_IMAGE111
在第五个计算周期,利用两个乘法器并行地分别计算
Figure 515767DEST_PATH_IMAGE117
以及
Figure 645397DEST_PATH_IMAGE118
,计算
Figure 381141DEST_PATH_IMAGE119
Figure 938024DEST_PATH_IMAGE120
之和左移192位的结果与寄存器
Figure 877162DEST_PATH_IMAGE111
存储数据之和得到所述第二乘积结果
Figure 56820DEST_PATH_IMAGE121
其中,
Figure 397803DEST_PATH_IMAGE122
包括
Figure 125588DEST_PATH_IMAGE123
的0到63位,
Figure 801288DEST_PATH_IMAGE124
包括
Figure 272721DEST_PATH_IMAGE123
的64到127位,
Figure 717478DEST_PATH_IMAGE125
包括
Figure 881743DEST_PATH_IMAGE123
的128到191位,
Figure 795472DEST_PATH_IMAGE126
包括
Figure 257546DEST_PATH_IMAGE123
的192到255位;
Figure 635438DEST_PATH_IMAGE127
包括中间参数
Figure 894906DEST_PATH_IMAGE128
的0到63位,
Figure 358248DEST_PATH_IMAGE129
包括中间参数
Figure 109166DEST_PATH_IMAGE128
的64到127位,
Figure 590832DEST_PATH_IMAGE130
包括中间参数
Figure 34583DEST_PATH_IMAGE128
的128到191位,
Figure 719642DEST_PATH_IMAGE131
包括中间参数
Figure 523519DEST_PATH_IMAGE128
的192到255位。
9.根据权利要求6所述的数据处理方法,其特征在于,所述基于所述第三乘积结果
Figure 610424DEST_PATH_IMAGE016
输出
Figure 474343DEST_PATH_IMAGE017
的结果作为
Figure 646699DEST_PATH_IMAGE018
的模乘结果,包括:
当所述第一乘积结果
Figure 739420DEST_PATH_IMAGE006
的低
Figure 192748DEST_PATH_IMAGE003
位结果
Figure 978301DEST_PATH_IMAGE132
,且
Figure 637953DEST_PATH_IMAGE133
时输出
Figure 783632DEST_PATH_IMAGE134
当所述第一乘积结果
Figure 579550DEST_PATH_IMAGE006
的低
Figure 785272DEST_PATH_IMAGE003
位结果
Figure 932220DEST_PATH_IMAGE135
,且
Figure 897902DEST_PATH_IMAGE136
时,输出
Figure 735277DEST_PATH_IMAGE137
当所述第一乘积结果
Figure 318092DEST_PATH_IMAGE006
的低
Figure 873707DEST_PATH_IMAGE003
位结果
Figure 643080DEST_PATH_IMAGE138
,且
Figure 866120DEST_PATH_IMAGE139
时,输出
Figure 961115DEST_PATH_IMAGE140
当所述第一乘积结果
Figure 20338DEST_PATH_IMAGE006
的低
Figure 373828DEST_PATH_IMAGE003
位结果
Figure 936527DEST_PATH_IMAGE141
,且
Figure 468003DEST_PATH_IMAGE142
时,输出
Figure 284297DEST_PATH_IMAGE143
其中,
Figure 129893DEST_PATH_IMAGE144
表示所述第三乘积结果
Figure 124263DEST_PATH_IMAGE145
与寄存器
Figure 764323DEST_PATH_IMAGE146
存储数据之和。
10.根据权利要求8所述的数据处理方法,其特征在于,用于实现所述数据处理方法的数据处理电路包括两个位宽为66bit的乘法器、第一加法器组、第二加法器组、包含多个寄存器的寄存器组、四个四选一多路选择器MUX1、MUX2、MUX3和MUX4、两个五选二多路选择器MUX5和MUX6、一个数据选择器MUX7以及控制器,所述控制器控制所有四选一多路选择器、五选二多路选择器、数据选择器和寄存器组;
MUX1的四个输入端分别获取模乘操作数
Figure 594876DEST_PATH_IMAGE001
的四个子操作数,MUX2的四个输入端分别获取模乘操作数
Figure 227851DEST_PATH_IMAGE002
的四个子操作数,MUX3的四个输入端分别获取模乘操作数
Figure 30722DEST_PATH_IMAGE014
的四个子操作数,MUX4的四个输入端分别获取中间参数
Figure 887689DEST_PATH_IMAGE008
的四个子操作数;
MUX5的五个输入端分别连接MUX1的输出端、MUX2的输出端、MUX3的输出端、MUX4的输出端以及所述寄存器组的输出端,MUX5的两个输出端连接所述第一加法器组;
MUX6的五个输入端分别连接MUX1的输出端、MUX2的输出端、所述第一加法器组的两个输出端以及所述寄存器组的输出端;MUX6的一个输出端分别连接两个乘法器的一个输入端,MUX6的另一个输出端分别连接两个乘法器的另一个输入端;
MUX7的三个输入端分别连接两个乘法器的输出端以及所述寄存器的输出端,MUX7引出两个输出端连接所述第二加法器组的两个输入端,MUX7还引出输出端连接所述寄存器组的输入端,所述第二加法器组的输出端连接所述寄存器组的输入端。
CN202211279542.8A 2022-10-19 2022-10-19 结合Karatsuba和蒙哥马利模乘的数据处理方法 Active CN115344237B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211279542.8A CN115344237B (zh) 2022-10-19 2022-10-19 结合Karatsuba和蒙哥马利模乘的数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211279542.8A CN115344237B (zh) 2022-10-19 2022-10-19 结合Karatsuba和蒙哥马利模乘的数据处理方法

Publications (2)

Publication Number Publication Date
CN115344237A true CN115344237A (zh) 2022-11-15
CN115344237B CN115344237B (zh) 2023-03-28

Family

ID=83957343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211279542.8A Active CN115344237B (zh) 2022-10-19 2022-10-19 结合Karatsuba和蒙哥马利模乘的数据处理方法

Country Status (1)

Country Link
CN (1) CN115344237B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827555A (zh) * 2022-11-30 2023-03-21 格兰菲智能科技有限公司 数据处理方法、计算机设备、存储介质和乘法器结构
CN116225366A (zh) * 2023-03-06 2023-06-06 开源网安物联网技术(武汉)有限公司 应用于嵌入式流水cpu内核的乘法指令扩展方法及装置
CN117134917A (zh) * 2023-08-09 2023-11-28 北京融数联智科技有限公司 一种用于椭圆曲线加密的快速模运算方法和装置
CN117234458A (zh) * 2023-11-09 2023-12-15 深圳大普微电子股份有限公司 乘法阵列、数据处理方法、处理终端及存储介质
CN117555515A (zh) * 2024-01-11 2024-02-13 成都市晶蓉微电子有限公司 一种用于平衡性能与面积的数字asic串并结合乘法器
CN117785129A (zh) * 2024-02-23 2024-03-29 蓝象智联(杭州)科技有限公司 一种基于gpu的蒙哥马利模乘运算方法
CN115827555B (zh) * 2022-11-30 2024-05-28 格兰菲智能科技有限公司 数据处理方法、计算机设备、存储介质和乘法器结构

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0927928A1 (fr) * 1997-12-31 1999-07-07 Sgs Thomson Microelectronics Sa Procédé de production amélioré d'un paramètre JO associé à la mise en oeuvre d'opérations modulaires selon la méthode de Montgomery
CN1786900A (zh) * 2005-10-28 2006-06-14 清华大学 基于改进的蒙哥马利算法的模乘器
CN103793199A (zh) * 2014-01-24 2014-05-14 天津大学 一种支持双域的快速rsa密码协处理器
CN110351087A (zh) * 2019-09-06 2019-10-18 南京秉速科技有限公司 流水线型的蒙哥马利模乘运算方法及计算装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0927928A1 (fr) * 1997-12-31 1999-07-07 Sgs Thomson Microelectronics Sa Procédé de production amélioré d'un paramètre JO associé à la mise en oeuvre d'opérations modulaires selon la méthode de Montgomery
CN1786900A (zh) * 2005-10-28 2006-06-14 清华大学 基于改进的蒙哥马利算法的模乘器
CN103793199A (zh) * 2014-01-24 2014-05-14 天津大学 一种支持双域的快速rsa密码协处理器
CN110351087A (zh) * 2019-09-06 2019-10-18 南京秉速科技有限公司 流水线型的蒙哥马利模乘运算方法及计算装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
麻永新等: "基为4的可扩展模乘运算器设计", 《计算机工程与应用》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827555A (zh) * 2022-11-30 2023-03-21 格兰菲智能科技有限公司 数据处理方法、计算机设备、存储介质和乘法器结构
CN115827555B (zh) * 2022-11-30 2024-05-28 格兰菲智能科技有限公司 数据处理方法、计算机设备、存储介质和乘法器结构
CN116225366A (zh) * 2023-03-06 2023-06-06 开源网安物联网技术(武汉)有限公司 应用于嵌入式流水cpu内核的乘法指令扩展方法及装置
CN116225366B (zh) * 2023-03-06 2024-04-05 开源网安物联网技术(武汉)有限公司 应用于嵌入式流水cpu内核的乘法指令扩展方法及装置
CN117134917A (zh) * 2023-08-09 2023-11-28 北京融数联智科技有限公司 一种用于椭圆曲线加密的快速模运算方法和装置
CN117134917B (zh) * 2023-08-09 2024-04-26 北京融数联智科技有限公司 一种用于椭圆曲线加密的快速模运算方法和装置
CN117234458A (zh) * 2023-11-09 2023-12-15 深圳大普微电子股份有限公司 乘法阵列、数据处理方法、处理终端及存储介质
CN117234458B (zh) * 2023-11-09 2024-02-23 深圳大普微电子股份有限公司 乘法阵列、数据处理方法、处理终端及存储介质
CN117555515A (zh) * 2024-01-11 2024-02-13 成都市晶蓉微电子有限公司 一种用于平衡性能与面积的数字asic串并结合乘法器
CN117555515B (zh) * 2024-01-11 2024-04-02 成都市晶蓉微电子有限公司 一种用于平衡性能与面积的数字asic串并结合乘法器
CN117785129A (zh) * 2024-02-23 2024-03-29 蓝象智联(杭州)科技有限公司 一种基于gpu的蒙哥马利模乘运算方法
CN117785129B (zh) * 2024-02-23 2024-05-07 蓝象智联(杭州)科技有限公司 一种基于gpu的蒙哥马利模乘运算方法

Also Published As

Publication number Publication date
CN115344237B (zh) 2023-03-28

Similar Documents

Publication Publication Date Title
CN115344237B (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
Erdem et al. A general digit-serial architecture for montgomery modular multiplication
Kuang et al. Low-cost high-performance VLSI architecture for Montgomery modular multiplication
CN110351087B (zh) 流水线型的蒙哥马利模乘运算方法
Lai et al. Elixir: High-throughput cost-effective dual-field processors and the design framework for elliptic curve cryptography
CN109814838B (zh) 获取加解密运算中的中间结果组的方法、硬件装置和系统
Morales‐Sandoval et al. Scalable GF (p) Montgomery multiplier based on a digit–digit computation approach
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
Tian et al. Ultra-fast modular multiplication implementation for isogeny-based post-quantum cryptography
CN113467750A (zh) 用于基数为4的srt算法的大整数位宽除法电路及方法
WO2001076132A1 (en) Scalable and unified multiplication methods and apparatus
KR20220049212A (ko) 모듈러 연산을 위한 워드 병렬 연산 방법
TW202319909A (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
Feng et al. A high performance FPGA implementation of 256-bit elliptic curve cryptography processor over GF (p)
US7607165B2 (en) Method and apparatus for multiplication and/or modular reduction processing
Hu et al. Low-power reconfigurable architecture of elliptic curve cryptography for IoT
CN115270155A (zh) 一种获取大数拓展最大公约数的方法及硬件架构
Mahapatra et al. RSA cryptosystem with modified Montgomery modular multiplier
Issad et al. Efficient and scalable hardware implementation of montgomery modular multiplication
CN113467752A (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
Nadjia et al. High throughput parallel montgomery modular exponentiation on FPGA
Prema et al. Enhanced high speed modular multiplier using Karatsuba algorithm
Xie et al. Low-complexity systolic multiplier for GF (2 m) using toeplitz matrix-vector product method
CN116820394B (zh) 一种面向椭圆曲线加密算法的标量乘电路
US11954487B2 (en) Techniques, devices, and instruction set architecture for efficient modular division and inversion

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