CN100573441C - 执行指数乘法的微处理器装置与方法 - Google Patents

执行指数乘法的微处理器装置与方法 Download PDF

Info

Publication number
CN100573441C
CN100573441C CN200610065575.7A CN200610065575A CN100573441C CN 100573441 C CN100573441 C CN 100573441C CN 200610065575 A CN200610065575 A CN 200610065575A CN 100573441 C CN100573441 C CN 100573441C
Authority
CN
China
Prior art keywords
montgomery
mentioned
instruction
product
multiplication
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
CN200610065575.7A
Other languages
English (en)
Other versions
CN1834898A (zh
Inventor
汤玛斯A·克里斯宾
G·葛兰亨利
泰瑞帕德斯
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.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
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 Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN1834898A publication Critical patent/CN1834898A/zh
Application granted granted Critical
Publication of CN100573441C publication Critical patent/CN100573441C/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
    • G06F7/728Methods 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 using Montgomery reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明是提供一种执行指数乘法的技术。于一实施例中,本发明是提供一微处理器中的一装置以进行指数乘法运算。此装置包含一转译逻辑电路。此转译逻辑电路自一来源处接收一蒙哥马利乘法指令并且转译该蒙哥马利乘法指令为一微指令序列,其中上述的蒙哥马利乘法指令是指定产生一蒙哥马利乘积。该微指令序列是指定完成该蒙哥马利乘积所需的次级动作。此装置还包含与该转译逻辑电路相连的一执行逻辑电路以接收该微指令序列并且执行该蒙哥马利乘积所需的次级动作。其中,该执行逻辑电路还包含用于产生蒙哥马利乘积的蒙哥马利乘法单元。

Description

执行指数乘法的微处理器装置与方法
技术领域
本发明涉及微电子,尤其是于一微处理器中进行模乘法(modular multiplication)的一装置与方法。
背景技术
所谓独立于其它计算机系统运作的一早期计算机系统,是指于此早期计算机系统上执行的一应用程序所需的全部输入资料,皆存在于此早期计算机系统中,或于执行时期中由应用程序设计者输入。应用程序执行结果为输出资料,其形式可能为一打印输出,或写入此早期计算机系统其中一部份的磁带、磁盘或其它大量储存系统内的档案。此输出档案可作为于同一计算机系统上稍后执行的应用程序的一输入档案,或者当此输出资料是储存于一抽取式或可携式大量储存媒体上的档案时,其可为另一兼容计算机系统的应用程序所利用。于上述的早期计算机系统中,已认知到对敏感信息进行保护的需要,相较于其它信息安全措施,加密应用程序已被发展出来用于保护敏感信息以避免未授权的存取。这些加密应用程序通常是针对置于大量储存媒体档案上的输出资料进行拌码(scramble)与解拌码(de-scramble)。
不消几年,使用者已体认到通过计算机网络以提供分享信息的好处。据此,网络架构、操作系统与数据传输协议持续地进行演化,以致于其不仅仅是支持存取分享信息的能力,而是将存取分享信息视为显著重要的能力。例如,今天一计算机工作站的一使用者对另一计算机工作站或档案服务器存取档案、利用网际网络获取新闻或其它信息、自其它数以百计的计算机传接大量如电子邮件的类的电子信息、连接上一厂商的计算机系统以便提供信用卡或金融信息购买该厂商的产品,或是于餐厅、机场或其它提供无线网络的场所进行上述活动是司空见惯的事情。据此,保护敏感信息避免未授权的存取的需要愈加广泛。于任一计算机通讯联机中,使用者须负责保护其敏感资料的次数亦显著地增加。现代的新闻标题经常将诸如垃圾信件、骇客、身分窃贼、反向工程、电子与信用卡诈欺等计算机信息安全议题推向公众关心的焦点。由于入侵隐私的动机可能出自无心的过或精密策划的恐怖行动,负责的官方机构必须响应这些威胁,例如立定新法、严厉地进行执法并且推行公共宣导计画。然而,上述的众多响应并未能证明其可有效地抵挡计算机信息威胁的狂潮。据此,原本仅为政府机关、金融机构、军方与情报组织所关切的信息安全议题,时至今日,一般大众自其家用计算机读写电子邮件或检查其帐户交易信息时都相当关心此问题。在商言商,熟悉此项技术者应可了解到无论大小企业皆已投资显著部分的资源于保护其专属信息上。
信息安全的相关学术领域中提供对资料进行编码的技术与工具,致使其仅能为特定个人进行译码的一门学问称之为密码学(cryptography)。当特别应用于保护计算机间传输或储存的信息时,密码学最常被应用于将敏感信息(通常称为明文)转换为一种晦涩难懂的形式(通常称为密文)。上述将明文转换为密文的过程被称为加密(encryption、enciphering或ciphering),而反的将密文转换为明文的过程被称为解密(decryption、deciphering或inverse ciphering)。
于密码学的领域当中,已经发展数种程序与协议以令使用者无须具备大量知识与技巧,即可使用密码学相关运算以便使用者可将其敏感信息先转换为一加密的形式再交与他人。除了已加密的信息外,传送信息者通常还提供接收者一组密钥(cryptographic key)以便接收者可对所接收的密文进行解密,故接收者便可回复得知原始信息的内容。熟悉此项技术者应可了解上述的程序与协议通常是以密码保护、数学算法、与特别设计用于对敏感信息加密与解密的应用程序的形式存在。
现在有数种类型的算法用于加解密。其中一类的算法,也就是RSA算法其中一种被称为公钥密码的算法,使用两组密钥,一组公钥与一组私钥以对资料进行加解密。于某些公钥算法中,一传送者利用一接收者的公钥对欲传送给接收者的资料进行加密。由于一使用者的公钥与私钥之间具有一种数学关系,接收者可利用其私钥对所传送的加密资料进行解密以便回复原文。虽然今日已大量广泛地使用此种类型的算法,然而上述的加解密运算是难以忍受地缓慢,甚至仅对少量资料进行加解密时亦是如此。另一类被称为对称钥的算法,可提供一定程度的计算机安全并且其执行速度较公钥算法快得多。此类被称为对称钥的算法,是因为其加密与解密时皆使用单一密钥。在公用领域上,最常被应用的单一密钥算法是资料加密标准(DES,Data Encryption Standard)、三重资料加密标准(Triple DES,Triple Data Encryption Standard)与先进加密标准(AES,Advanced Encryption Standard)。由于前述算法保护资料的能力,故美国政府机关现在已经采用为标准,而在可预见的将来,其中一种或一种以上的算法可望被纳为商业或私人交易的标准。
如上所述,对称钥算法的执行速度是显著地快于公钥算法。现在初估,对称钥算法的速度大约比公钥算法(亦称为非对称钥算法)快上一千倍左右。然而,任何使用对称钥算法的密码系统必须考量到如何保护密钥的问题。此种问题于通过网际网络进行交易的商业时代更值得关切,由于对资料(例如付款帐单)进行加密的加密方几乎无从得知谁欲对此信息进行解密,故对称钥的发布与保护是个大问题。但利用公钥密码法可解决上述对称钥的问题,是因为在多数情况下可用一公钥密码算法对欲传送给接收方的一随机联机(session)钥匙进行加密。接收方接着使用一私钥对此利用公钥密码算法编码的信息解密,据以获得上述的联机钥匙。当双方都握有联机钥匙后,即可在此联机中使用此联机钥匙对所传输的敏感信息进行加解密,其执行速度要比联机全程使用公钥密码算法快上许多。最后,当联机终止后,双方便废弃上述的联机钥匙。
以三位发明者(Ron Rivest、Adi Shamir与LeonardAdleman)的缩写字母著称的RSA算法是现时中最严格的公钥算法。RSA算法是基于对无法对某数进行除法的不可行性(in-feasibility)。公钥与私钥两者皆为质数的函数。更精确地说,先选择两个随机的大质数p与q,其两者的乘积n=pq可作为一模数(modulus)。用以加密的公钥e是与(p-1)(q-1)的乘积数互质,而用于解密的私钥d则是以下列方式计算:
ed=1 mod(p-1)(q-1)
据此可知,公钥与私钥两者互质。当选出公钥与私钥后,将不再需要上述两个质数p与q。欲加密的一信息m,首先分为数个区块mi,其长度是小于上述的模数。现今模数的长度大约是几百个位到数千个位左右。已加密的信息c是由相同长度的已加密区块ci所构成。根据RSA算法,利用公钥e与模数n对此信息区块mi进行加密的方式为:
c i = m i e mod n
而利用私钥d与模数n对已加密的信息区块ci进行解密的方式为:
m i = c i d mod n
请注意于RSA算法中的加密与解密方程式皆依赖指数运算(modular exponentiation)作为其基本运算。故随着钥匙大小的不同,对单一信息区块mi所进行的指数乘法次数可能高达数万次。熟悉此项技术者将可了解每次指数乘法运算的进行需要一次乘法运算(如xi=mimi)以及一次试除运算(如yi=xi/n)以便消除指数。熟悉此项技术者亦可了解于现代计算器中进行两个大数的乘法并非一个轻松的工作,至于试除运算则更加复杂。此外,虽然已经发展许多算法以减少上述指数乘法运算所需的乘法次数,然而目前仅有单一个算法可用于完全消除试除运算。由蒙哥马利(Peter L.Montgomery)所发展的蒙哥马利乘法提供一种于指数运算中免去试除步骤的方法,首先将乘法中的运算元转换为此模数n的一特定有限乘法是中的相对应N个留数(N-residue)。故原本对此乘法的运算元所进行的乘法,可替换为对此N个留数所进行的特定运算,其中上述的试除运算可以位位移运算所取代,据此可显著地减少所需的复杂运算次数。对于蒙哥马利乘法与相关的消除指数技巧的详细解说已经超出本说明书的范围。目前已有许多文件和教科书对其进行详述,其中的一是蒙哥马利本人的论文,刊载于华盛顿特区美国数学协会所出版的计算数学(Mathematics of Computation)1985年四月第44卷第170期的第519至521页,题目为「免除试除步骤的指数乘法」(Modular Multiplication Without Trial Division)当中。于本发明中,此论文可作为参考之用。
于执行单一指数乘法中,将指数乘法的运算元转换为N个留数所需的计算负担亦相当沉重。但特别对于那些指数的长度是数千个位的指数乘法而言,蒙哥马利乘法便是一种相当受欢迎的技术,因为花费将运算元转换为有限数是所需的时间可免除进行数千次试算步骤。
尽管目前已经有许多种软件算法用于增进于一计算装置上执行指数乘法的速度,除此以外,市场亦认知到具有执行RSA算法的加解密功能特定硬件的地位。发明人同时也注意到于桌上型、笔记型与机上盒装置内有效快速地执行指数运算的需求持续增加。虽然并非所有装置皆是如此,然而大多数的上述装置皆使用一微处理器作为其中央处理器,其上并未提供额外的RSA算法专用硬件。再者,RSA算法并非现时唯一需要进行指数乘法的算法。
据此,发明人观察到若能于一微处理器或其类似装置内提供一种执行蒙哥马利乘法的装置与方法将会是有利地。再者,更需要于一微处理器或其类似装置内提供一种产生蒙哥马利乘积的指令。
发明内容
鉴于上述的发明背景中,为了符合产业上利益的需求,本发明的一实施例提供。
一种在微处理器中用于完成指数乘法运算的装置,其特征在于,包含:
转译逻辑电路,用以接收蒙哥马利乘法指令并且转译该蒙哥马利乘法指令为微指令序列,其中上述的蒙哥马利乘法指令用于产生蒙哥马利乘积,该微指令序列用于完成该蒙哥马利乘积所需的次级动作;以及
执行逻辑电路,与该转译逻辑电路相连,以接收该微指令序列并且执行该蒙哥马利乘积所需的次级动作。
该执行逻辑电路还包含用于产生蒙哥马利乘积的蒙哥马利乘法单元和多个可平行处理的执行单元。
其中,该微指令序列包含一第一复数个相关微指令和一第二复数个相关微指令,该第一复数个相关微指令被送至该蒙哥马利乘法单元,并且指定该蒙哥马利乘法单元通过加载逻辑电路加载数据、执行蒙哥马利乘法,以产生一蒙哥马利乘积。
该第二复数个相关微指令被送至该多个执行单元,以执行完成该蒙哥马利乘积所需的次级动作。其中上述的蒙哥马利乘法指令预定去参考该微处理器中的多个暂存器的内容。
其中上述的多个暂存器包含:
第一暂存器,该第一暂存器的内容包含第一指示器以指向第一存储器地址,其中上述的第一存储器地址指示存储器中的第一位置。
其中上述的第一位置对应下列的至少某一种:
第一运算元指示器,该第一运算元指示器是指向第二存储器地址,其中上述的第二存储器地址指示存储器中包含该蒙哥马利乘积所需的第一运算元的第二位置;
第二运算元指示器,该第二运算元指示器是指向第三存储器地址,其中上述的第三存储器地址指示存储器中包含该蒙哥马利乘积所需的第二运算元的第三位置;
结果指示器,该结果指示器指向第二存储器地址,当完成该蒙哥马利乘积时,其中上述的第二存储器地址指示存储器中储存该蒙哥马利乘积的第二位置;
模数指示器,该模数指示器指向第二存储器地址,其中上述的第二存储器地址指示存储器中包含产生该蒙哥马利乘积所需的模数的第二位置;
整数,该整数相关于产生该蒙哥马利乘积所选用的模数与基底,其中上述整数用于产生该蒙哥马利乘积。
其中上述的多个暂存器包含:
第一暂存器,该第一暂存器的内容包含指示产生该蒙哥马利乘积所需的第一运算元、第二运算元以及模数。
本发明一种在微处理器中用于执行指数乘法运算的方法,其特征在于,包含:
自存储器中提取蒙哥马利乘法指令,其中上述的蒙哥马利乘法指令用以产生蒙哥马利乘积;
转译该蒙哥马利乘法指令为微指令序列,该微指令序列包含一第一复数个相关微指令和一第二复数个相关微指令,该第一复数个相关微指令被送至一蒙哥马利乘法单元,并且指定该蒙哥马利乘法单元通过加载逻辑电路加载数据、执行蒙哥马利乘法,以产生一蒙哥马利乘积,该第二复数个相关微指令被送至多个执行单元,以执行完成该蒙哥马利乘积所需的次级动作;以及在微处理器的执行逻辑电路所包含的蒙哥马利乘法单元中执行该微指令序列以产生该蒙哥马利乘积。
其中上述的提取蒙哥马利乘法指令的步骤包含:
预定去参考该微处理器中的多个暂存器的内容。
其中上述的预定去参考该微处理器中的多个暂存器的内容的步骤包含:
指定第一暂存器,该第一暂存器的内容包含第一指示器以指向第一存储器地址,其中上述的第一存储器地址指示存储器中的第一位置。
其中上述的第一位置对应到下列的至少某一种:
第一运算元指示器,该第一运算元指示器指向第二存储器地址,其中上述的第二存储器地址指示存储器中包含该蒙哥马利乘积所需的第一运算元的第二位置;
第二运算元指示器,该第二运算元指示器指向一第三存储器地址,其中上述的第三存储器地址指示存储器中包含该蒙哥马利乘积所需的第二运算元的第三位置;
结果指示器,该结果指示器指向第二存储器地址,当完成该蒙哥马利乘积时,其中上述的第二存储器地址指示存储器中储存该蒙哥马利乘积的第二位置;
模数指示器,该模数指示器指向第二存储器地址,其中上述的第二存储器地址指示存储器中包含产生该蒙哥马利乘积所需的模数的第二位置;
整数,该整数相关于产生该蒙哥马利乘积所选用的模数与基底,其中上述的整数用于产生该蒙哥马利乘积。
其中上述的预定去参考该微处理器中的多个暂存器的内容的步骤包含:
指定第一暂存器,该第一暂存器的内容包含指示产生该蒙哥马利乘积所需的第一运算元、第二运算元与模数。
附图说明
为进一步说明本发明的具体技术内容,以下结合实施例及附图详细说明如后,其中:
图1是为利用指数乘法以发布并且保护联机钥匙或其它资料的传统计算机密码学应用程序的一方块示意图;
图2是为于现今一计算机系统中进行公钥密码学运算技术的一方块示意图;
图3是为根据本发明一实施例的一微处理器装置以执行蒙哥马利乘法运算的一方块示意图;
图4是为本发明一实施例的一核心不可分割的蒙哥马利乘法指令的一方块示意图;
图5是为根据图4标出的蒙哥马利乘法指令的群模式字段值的一表格示意图;以及
图6是为根据本发明一实施例的一x86兼容微处理器中的一蒙哥马利乘法单元的一方块示意图。
具体实施方式
本发明在此所探讨的方向为一种提供蒙哥马利乘积的装置与方法。为了能彻底地了解本发明,将在下列的描述中提出详尽的步骤及其组成。显然地,本发明的施行并未限定于蒙哥马利乘法的技术者所熟习的特殊细节。另一方面,众所周知的组成或步骤并未描述于细节中,以避免造成本发明不必要的限制。本发明的较佳实施例会详细描述如下,然而除了这些详细描述之外,本发明还可以广泛地施行在其它的实施例中,且本发明的范围不受限定,其以的后的专利范围为准。
为讨论传统计算机系统中如何使用先前技术所提及的指数乘法运算及其相关技术与限制,请参考图1与图2所示。接着,本发明将讨论图3至图6。本发明于一传统计算机系统中提供执行指数运算的一装置与方法,其可较先前技术具有较佳的性能表现,而且更具备操作系统的有限干预、不可切割性(atomicity)以及与传统架构的兼容性。
熟悉此项技术者应可了解于一计算机系统中已经具有许多应用程序可供进行指数乘法运算。事实上,于某些操作系统中,如微软公司的窗口与Linux皆以原生指令(primitive)、应用程序接口与类似接口提供直接呼叫指数乘法运算的服务。然而发明人观察到传统计算机密码学的技术在几个层面上是具有瑕疵缺陷的。故现在请注意图1所示,于此将特别指出其缺陷并于以下详述。
参考图1所示,其是为利用指数乘法以发布并且保护联机钥匙或其它资料的传统计算机密码学应用程序的一方块示意图100。此方块示意图100示出连接至一局域网络105的一第一计算机工作站101、一第二计算机工作站102、一网络档案储存装置106、一第一路由器107以连接至如网际网络般的一广域网络110,以及可能兼容于IEEE802.11之类标准的一无线网络路由器108。一膝上型计算机104是通过一无线网络109与上述的无线网络路由器108介接。于此广域网络110的另一端,一第二路由器111提供网络接口给一第三计算机工作站103。
如前所述,今日一计算机使用者可能于一工作联机中遭遇到许多次计算机信息安全问题。例如,于现时的一多任务操作系统的控制下,第一计算机工作站101的一使用者可同时执行许多工作,每个工作可能需要执行密码学的运算,其需要产生并且散布许多不同的联机钥匙。上述第一计算机工作站101的使用者可能需要执行由操作系统提供或呼叫的一加解密应用程序112以于上述网络档案储存装置106储存一档案。于储存档案的同时,使用者可传输一加密信息至上述第二计算机工作站102的一第二使用者,其亦需要此加解密应用程序112的一个个体来进行此项工作。上述的加密信息可能为实时性(如实时传讯)或非实时性(如电子邮件)。再者,使用者可能正通过广域网络110存取或提供其金融信息(如信用卡号码、财务交易等)/其它形式的敏感信息至上述的第三计算机工作站103。此第三计算机工作站103亦可能为一家庭办公室或一远程计算机103,上述第一计算机工作站101的使用者可利用它来存取局域网络105内任何共享资源101、102、106、107、108或109。前述所提及的每项活动皆需要呼叫一个相对应加解密应用程序112的个体,而每个个体需要产生并散布随机联机钥匙以使用对称钥密码算法进行加解密。再者,现在的咖啡厅、机场、学校或其它公众场所通常会提供上述的无线网络109,故此膝上型计算机104的一使用者不仅仅需要对其他人收发的信息进行加解密,而且还需对通过无线网络109与无线网络路由器108交换的所有通讯进行加解密。而每一个通过无线网络109的联机都需要产生并且散布联机钥匙。
熟悉此项技术者将可理解于任一计算机101至104中所进行的某些活动需要密码学的运算,每个活动都需要呼叫相对应的加解密应用程序112的一个体以产生及散布联机钥匙。军方、财政或电子商务所使用的一服务器可能需要每秒产生数千个联机钥匙。
发明人业已注意到上述于一计算机系统101至104中呼叫多个加解密应用程序112个体以进行密码学运算的几个缺点。例如,通过程序化软件的方式执行一已定义功能的速度要比通过特定硬件执行相同功能的速度慢上许多。每次需要加解密应用程序112的服务时,于计算机系统101至104中执行的一现行工作必须暂停执行,然后通过操作系统将密码学运算所需的参数(如明文或密文)传送至加解密应用程序112的个体内。而加解密应用程序112本身或一操作系统的原生指令皆可呼叫加解密应用程序112的一个个体以进行一联机钥匙的加解密运算,接着以此联机钥匙进行对称钥的密码学运算。且由于如RSA这种针对联机钥匙进行加解密运算的算法必须牵涉到数千次指数乘法运算以俾对单一联机钥匙进行加解密,故整体系统的处理速度便受到负面影响。熟悉此项技术者应可理解于微软公司的OUTLOOK应用程序中发送一加密的短信要比未加密的短信多花五倍的时间。
其次,现行技术亦受到操作系统干预所产生延迟的限制。大多数的应用程序都不会提供指数运算元件,它们得利用操作系统所提供的组件或嵌入式应用程序以便进行指数运算。然而操作系统必须分心去处理各式插断(interrupt)以及满足其它同时执行的应用程序的要求。
再者,发明人注意到于现今一计算机系统101至104中完成一联机钥匙加解密运算的过程是非常类似于以往不具有专属浮点运算单元的微处理器中进行浮点运算的过程。早期的浮点运算是由软件的方式执行,速度相当缓慢。如同浮点运算一般,由软件的方式进行指数运算同样是无法接受地缓慢。当浮点运算技术逐渐演进后,便可提供浮点运算指令以于共处理器(co-processor)上执行。同样地,今日现存用于执行RSA的共处理器是为扩充卡的形式,或者为通过并行端口或其它接口总线(如USB)等与一主处理器连接的外接装置的形式。上述这些共处理器当然会比用软件计算的方式更快地完成指数运算,然而上述共处理器仅能执行如RSA的类的特定算法,其需要额外成本与电力,并且减少整体系统的可靠度。密码学共处理器于资料侦伺(snoop)方面具有脆弱性,因为其资料信道并未与主处理器位于同一芯片上。
据此,发明人认知到需要于一现代微处理器上装设专用于指数运算硬件,让需要进行一蒙哥马利乘法运算的一应用程序可直接令此微处理器执行一单一不可分割的蒙哥马利乘法指令以产生一蒙哥马利乘积。发明人亦体认到由于提供这样的一种能力,故可限制操作系统所需的干预与管理动作。此外,发明人亦希望可于应用程序特权层级便可使用上述的蒙哥马利乘法指令,而且用于产生蒙哥马利乘积的专属硬件可适用于现代微处理器的架构。再者,提供蒙哥马利乘法硬件与其相对应的蒙哥马利乘法指令的方式应能支持传统操作系统与应用程序。
请参考图2所示,其是为上述于现今一计算机系统中进行公钥密码学运算技术的一方块示意图200。此方块示意图200包含一微处理器201,其自系统存储器其中一块被称为应用程序存储器203的地方,提取并存取相关于一应用程序的指令与资料。程序的控管以及对程序存储器203中资料的存取通常是由位于系统存储器中一保护区域的一操作系统软件202处理。如上所述,若一正在执行的应用程序(如一电子邮件程序或一档案储存程序)需要执行一密码学运算,例如对一联机钥匙进行加解密,此正在执行的应用程序必须令此微处理器201执行相当多指令以完成上述的密码学运算。上述的指令可能为此应用程序本身的子例程程序(sub-routine),或为连结至此应用程序的嵌入式应用程序,或可为此操作系统202所提供的服务。无论其关系如何,熟悉此项技术者可理解上述指令是位于存储器内部的指定或被分配的区域。为方便讨论的缘故,示于图上的程序存储器203中的存储器区域包含一加密应用程序206与一解密应用程序207;其中上述的加密应用程序206执行存取一明文210区块的指令,上述的解密应用程序207执行指令据以产生位于一密文211区块内的密文。于上述讨论的情况中,上述的明文210可为随机产生的一联机钥匙,而密文211则为根据RSA算法加密后的联机钥匙。当然,上述的加密应用程序206必须根据RSA算法执行指数运算指令。据此,上述的加密应用程序206存取此程序存储器203的复数个公钥储存区域208,并且根据此联机钥匙的接收者挑选其中一把公钥进行加密。此公钥储存区域208包含每一个可能接收者的一组公钥与模数。同样地如上所述,上述的解密应用程序207必须根据RSA算法执行指数运算指令。此解密应用程序207执行指令据以产生位于密文211区块内的密文。如上所述,此密文211可为一已加密的联机钥匙而明文210可为根据RSA算法解密后的联机钥匙。据此,上述的解密应用程序207必须根据RSA算法执行指数运算指令,其存取此程序存储器203的复数个私钥储存区域209,并且根据此已加密联机钥匙的传送者挑选其中一把私钥进行解密。
于加密与解密的过程中,上述的加密应用程序206与解密应用程序207皆可利用一指数运算子例程程序205或操作系统原生指令以执行所需的指数运算。其次,上述的指数运算子例程程序205可使用一指数运算应用程序204的服务以执行每一个指数运算中的每一个指数乘法。再者,如上所述,上述的指数运算应用程序204亦可利用一蒙哥马利乘法技术以进行指数乘法运算。
然而,值得注意的是,必须要自存储器中提取相当多的指令后执行,始能产生单一个指数乘积;而无论加密或解密过程,皆需要对每一个指数值执行相当多的乘法指令。除了必须自指数运算应用程序204提取许多指令以外,还必须于微处理器201中执行这许多指令以便产生所需的一指数乘积。再者,相对于一执行中的应用程序的主要目的而言,如档案管理、实时通讯、电子邮件、存取远程档案或信用卡交易等,对一联机钥匙进行加解密的过程通常会被视为多余而不必要的。于是,此执行中应用程序的使用者便会感到此应用程序的执行是无效率的。对于独立或嵌入式的加密应用程序206与解密应用程序207而言,对上述应用程序206与207的呼叫与管理必定也妨碍到对操作系统的其它需求,诸如支持插断、例外与其它更恶化操作系统服务的事件。此外,对于一计算机系统中需要同时执行的每一个密码学运算来说,都需要于程序存储器203中配置一个独立的应用程序206或207个体。并且如上所述,由单一微处理器201所需同时执行的密码学运算个数也将会与时俱进。
发明人已经认知到现行计算机系统密码学技术所存在的问题与限制,并且更体认到于一微处理器中提供一种执行指数运算以产生蒙哥马利乘积的装置与方法,其可避免使用者遭遇负面的应用程序延迟问题。据此,本发明提供通过一专属蒙哥马利乘法指令及其硬件以执行指数运算的微处理器装置与方法。
请参考图3所示,其是为根据本发明一实施例的一微处理器装置以执行蒙哥马利乘法运算的一方块示意图300。此方块示意图300包含一微处理器301,其通过一存储器总线319连接至一系统存储器321。此微处理器301包含一转译逻辑电路303以自一提取逻辑阶段的一指令暂存器302接收指令。此转译逻辑电路303包含逻辑电路、电路、装置、微码(如微指令或原生指令)或逻辑电路、电路、装置与微码的一混合体,其可用于将指令转译成微指令序列的等效组件。上述于此转译逻辑电路303中用于执行转译动作的组件可与此微处理器301中用于其它功能的电路、微码等共享。亦称为一原生指令的一微指令是指示一单元的执行动作的指令。例如,微指令可直接被精简指令集微处理器执行。对一个如x86兼容的复杂指令集微处理器而言,x86指令会被转译为相对应的微指令,而上述的相对应微指令可直接为复杂指令集微处理器的单元(群)执行。上述的转译逻辑电路303是连接至一微指令队列304,其具有复数个微指令格305至307。此微指令队列304提供微指令至一暂存器阶段的逻辑电路,其还包含一暂存器档案308。此暂存器档案308包含复数个暂存器309至312,其内容须于执行上述的蒙哥马利乘法运算前先建立完毕。设定于暂存器309的一文本指针(CXTPTR,Context Pointer)亦须于执行上述的蒙哥马利乘法运算前先指向系统存储器321的相关位置324至328,其内容是为执行此蒙哥马利乘法运算所需的资料。于一实施例中,一状态暂存器310与一临时暂存器311必须先初始化为0。当执行此蒙哥马利乘法运算而必须服务插断事件时,此二暂存器310与311是用于储存乘法过程的中间资料。于执行上述的蒙哥马利乘法运算前,一比特数(NUMBIT)暂存器312是用于指示产生此蒙哥马利乘积所需的运算元A、B与M的比特数。上述的暂存器阶段是连接至一加载逻辑电路314,其更与一数据快取315界接以便提升此蒙哥马利乘法运算的加载资料的性能表现。此资料快取315是通过上述的存储器总线319连接至上述的系统存储器321。连接至此加载逻辑电路314的一执行逻辑电路340是用于执行由前一阶段传送过来的微指令。此执行逻辑电路340包含逻辑电路、电路、装置、微码(如微指令或原生指令)或逻辑电路、电路、装置与微码的一混合体,其可用于将指令转译成微指令序列的等效组件。上述于此执行逻辑电路340中用于执行动作的组件可与此微处理器301中用于其它功能的电路、微码等共享。此执行逻辑电路340包含一蒙哥马利乘法单元316,其自上述的加载逻辑电路314以及自上述的暂存器档案308中接收资料以执行此蒙哥马利乘法运算。微指令指示此蒙哥马利乘法单元316自系统存储器321中加载及存取数据,并且利用一模数M与一整数质数值MPRIME以产生一第一运算元A与一第二运算元B的一蒙哥马利乘积。其中上述的整数质数值MPRIME是为未示出的一基底R的一函数值,而此模数M已于先前资料内关于蒙哥马利乘法的讨论中提及。于所有实施例中,上述的基底R是间接地由运算元A、B、M与MPRIME的大小来决定,其值为2的幂次值。使用者并不须提供此机底R值,然而却需要提供上述的模数M值。于一实施例中,上述的运算元A与B以及模数M的比特数须先于进行此蒙哥马利乘法前先被加载上述的比特数暂存器312,此比特数必须为128的倍数,其最大值是大于或等于32768。系统存储器321的位置324包含整数质数值MPRIME;位置325包含一指针APTR指向包含第一运算元A的一第一位置329;位置326包含一指针BPTR指向包含第二运算元B的一第二位置330;位置327包含一指针MPTR指向包含模数M的一第三位置331;以及位置328包含一指针TPTR指向包含一蒙哥马利乘积的一第四位置332,此蒙哥马利乘积是利用上述的A、B、M与MPRIME值所产生。于进行此蒙哥马利乘法的前,必须先初始化上述的位置324至332。当产生此蒙哥马利乘积,其将被储存于位置332中。
上述的蒙哥马利乘法单元316包含逻辑电路、电路、装置、微码(如微指令或原生指令)或逻辑电路、电路、装置与微码的一混合体,其可用于将指令转译成微指令序列的等效组件。上述于此蒙哥马利乘法单元316中用于执行蒙哥马利乘法运算的组件可与此微处理器301中用于其它功能的电路、微码等共享。于一实施例中,此蒙哥马利乘法单元316是于此执行逻辑电路单元340的其它未示出的执行单元(如一整数运算单元与一浮点运算单元)平行处理。于本发明的一实施例中,一“单元”包含逻辑电路、电路、装置、微码(如微指令或原生指令)或逻辑电路、电路、装置与微码的一混合体,其可用于将指令转译成微指令序列的等效组件。上述于此“单元”中用于执行其特定功能或特定动作的组件可与此微处理器301中用于其它功能的电路、微码等共享。例如,于一实施例中,一整数运算单元包含逻辑电路、电路、装置、微码(如微指令或原生指令)或逻辑电路、电路、装置与微码的一混合体,其可用于将指令转译成微指令序列的等效组件。一浮点运算单元包含逻辑电路、电路、装置、微码(如微指令或原生指令)或逻辑电路、电路、装置与微码的一混合体,其可用于将指令转译成微指令序列的等效组件。上述于此整数运算单元中用于执行整数运算的组件可与此微处理器301中用于其它功能的电路、微码等共享;上述于此浮点数运算单元中用于执行浮点数运算的组件可与此微处理器301中用于其它功能的电路、微码等共享。于兼容于x86架构的一实施例中,上述的蒙哥马利乘法单元316是与一x86整数运算单元、一x86浮点数运算单元、一x86多媒体指令延伸集(MMX)单元与一x86串流指令延伸集单元进行平行处理。根据本发明的范围,所谓兼容于x86架构的丨实施例是指此实施例可正确地执行某一类应用程序,此类应用程序的绝大部分皆是设计于一x86微处理器上执行。若一应用程序可获得如预期的结果,即可谓此应用程序是已正确地执行。于另一个兼容于x86架构的实施例中,此蒙哥马利乘法单元316是与上述x86执行单元的一子集合进行平行处理。上述的蒙哥马利乘法单元316是连接至一储存逻辑电路单元317并且将提供计算所得的蒙哥马利乘积至此储存逻辑电路单元317。此储存逻辑电路单元317亦连接至上述的资料快取315,其更将计算所得的蒙哥马利乘积储存于系统存储器321的位置332。上述的储存逻辑电路单元317亦连接至一写回逻辑电路单元318。当完成蒙哥马利乘法运算后,此写回逻辑电路单元318即更新暂存器档案308中的暂存器310与311。于一实施例中,经过前述每一逻辑电路单元或阶段302、303、304、308、314、340、317与318的微指令是同步于一未示于图上的时脉信号;据此,上述的各运算动作可同时地平行进行处理,就如同一装配线的运作情况。
于系统存储器321内,需要执行蒙哥马利乘法运算的一应用程序可通过单一蒙哥马利乘法指令以指示此微处理器301进行蒙哥马利乘法;其中上述的蒙哥马利乘法指令于本说明书中被称为一MONTMUL指令322。于一复杂指令集微处理器中,此蒙哥马利乘法MONTMUL指令322包含一指令以指示进行一蒙哥马利乘法运算。于一精简指令集微处理器中,此蒙哥马利乘法MONTMUL指令322包含一微指令以指示进行一蒙哥马利乘法运算。于一实施例中,此蒙哥马利乘法MONTMUL指令322是利用一现存指令集架构中一备用或未使用的指令码(opcode)。于一x86兼容架构中,此蒙哥马利乘法MONTMUL指令322为一个四位组长度的指令,其包含了x86 REP的前码(亦即0xF3),接着是两位组长度的指令码(亦即0x0FA6),最后的一字节是当执行蒙哥马利乘法时用于说明一特定群组模式。于一实施例中,本发明所提供的蒙哥马利乘法MONTMUL指令322可于执行应用程序的系统特权层级中执行,故可被编译入一程序的指令序列中,此指令可直接由一应用程序或由一操作系统320控制交付微处理器301。由于仅须单一个指令322即可令此微处理器301执行蒙哥马利乘法,故可完全独立于操作系统320之外以完成一蒙哥马利乘法。
于运作过程中,此操作系统320激活一应用程序于此微处理器301上执行。作为此应用程序的指令序列的其中一部分,提取逻辑电路自系统存储器321中提取出一蒙哥马利乘法MONTMUL指令322,并且提供至上述的指令暂存器302。然而,此蒙哥马利乘法MONTMUL指令322的前的指令序列已经令此微处理器301初始化暂存器309至312的内容;暂存器310与311被初始化为0而暂存器312的内容则被初始化为完成此蒙哥马利乘法所需的运算元A、B以及模数M的比特数目。此外,上述的文本指针暂存器309的内容被初始化为一文本指针,其指向系统存储器321的位置324至328。于执行此蒙哥马利乘法MONTMUL指令322前,位置324至328的内容亦被初始化以表示MPRIME值、一第一指针APTR、一第二指针BPTR与一模数指针MPTR。再者,此蒙哥马利乘法MONTMUL指令322的前的指令序列必须先将第一运算元A、第二运算元B以及模数M分别存入位置329至332。由于此蒙哥马利乘法MONTMUL指令322是预定去参考暂存器309至312的内容,故于执行此指令322的前,也必须初始化暂存器309至312。
前述的初始化步骤是等效于现今一软件算法于执行蒙哥马利乘法的前的初始化步骤;然而,一旦此软件算法初始完上述变量后,本发明所提供的装置即不须执行此软件算法中的许多额外指令,而仅须通过内定参考暂存器309至312的单一个蒙哥马利乘法MONTMUL指令322即可快速且不须分段地得到蒙哥马利乘积。
接着,上述的转译逻辑电路303自指令暂存器302中取出此蒙哥马利乘法MONTMUL指令322,并且将其转译为相对应的一微指令序列以指示此微处理器301进行蒙哥马利乘法运算。其中,相对应的微指令序列的一第一复数个微指令305至307特别指定上述的蒙哥马利乘法单元316由加载逻辑电路314加载数据、执行蒙哥马利乘法,并且提供蒙哥马利乘积至储存逻辑电路317以通过数据快取315将其储存于系统存储器321的蒙哥马利乘积储存位置332。于一实施例中,此第一复数个微指令305至307是用于反复地(iteratively)加载所需参数MPRIME、A、B、M与T的部分以便计算蒙哥马利乘积的一部份,并且提供此部份的蒙哥马利乘积至储存逻辑电路317。于一32位的实施例中,每一循环可产生32位的蒙哥马利乘积T以储存于位置332。上述相对应微指令序列的一第二复数个微指令(未示于图中)指示此微处理器301的其它的执行单元(例如未示于图中的整数单元)进行完成蒙哥马利乘法的其它必要运算,诸如管理包含临时结果与状态值的暂存器310与311以及提供已发生的插断的后续处理等事项。于一实施例中,暂存器309至312是为架构暂存器。丨架构暂存器是指某特定处理器实作的指令集中所定义的丨暂存器。于一x86兼容架构的实施例中,上述的文本指针暂存器309包含ESI暂存器,比特数暂存器312则包含ECX暂存器。
于一实施例中,上述的蒙哥马利乘法单元316是分散于复数个阶段中以令位于位置329至321的后续运算元与模块区块可以管线化进行处理,并且管线化地产生部份的蒙哥马利乘积至位置322。
本发明所提供的图3方块示意图300是用于教示本发明的必要组件,为方便说明清楚的故,于现代的一微处理器301中的大多数逻辑电路皆未示于此方块示意图300中。然而,熟悉此项技术者应可理解现代的一微处理器301,根据其特定的实作架构应包含许多阶段与逻辑电路组件,其中某些阶段与逻辑电路组件因为方便说明清楚的故被整合混用。例如,上述的加载逻辑电路314可包含一快取线对齐(cacheline alignment)阶段、其后的一快取接口阶段,以及其后的一地址产生阶段。然而值得重视的是,本发明所提供的运算元A、B、M与MPRIME的一完整蒙哥马利乘法运算,是通过单一指令322所进行,其是独立透明于操作系统320的运作,而且此指令322的执行是由一专属的蒙哥马利乘法单元316同时平行于此微处理器301的其它执行单元所进行。发明人提出纳入蒙哥马利乘法单元316的各种实施方式是类似于多年前于一微处理器中纳入一专属浮点运算单元的实施方式。此蒙哥马利乘法单元316的运算过程与蒙哥马利乘法指令322是完全兼容于传统操作系统320与应用程序的同时平行处理作业,其将于下详述。
请参考图4所示,其是为本发明一实施例的一核心不可分割的蒙哥马利乘法指令400的一方块示意图。此蒙哥马利乘法指令400包含一选用的前码字段401,其后接着一重复前码字段402、一指令码字段403与一群模式字段404。于一实施例中,此字段401至404的内容是相符于x86指令集架构。其它的实施例可兼容于其它的指令集架构。
于运作过程中,许多指令集架构是使用上述的选用的前码字段401以开启或关闭一主微处理器的特定处理特征,诸如进入16位或32位作业模式或存取某特定存储器区段等特征。上述的重复前码字段402是用于指示此蒙哥马利乘法指令所指定的蒙哥马利乘法运算是完成于复数个运算元资料区块,其中上述的区块大小是为此蒙哥马利乘法运算元MPRIME、A、B、M的比特数目以及此蒙哥马利乘法单元316所能支持的蒙哥马利乘积部份的长度的一函数。于一实施例中,此重复前码字段402亦隐含指定一兼容微处理器使用一暂存器的内容,其内容为指向系统存储器中一位置的一指针;该系统存储器中的位置是包含或更指向蒙哥马利乘法运算元MPRIME、A、B、M与T。已于前所述,于一x86兼容架构的实施例中,此重复前码字段402的值为0xF3。
上述的指令码字段403是用于指示此微处理器完成一蒙哥马利乘法运算。本发明欲选用一现存指令集架构中备用或未被使用的指令码值以为此指令码字段403的一较佳选择,据此可保留此微处理器与其上执行的操作系统与应用程序的兼容性。例如,已于前所述,于一x86兼容架构的实施例中,此指令码字段403是选用0x0FA6的值以便指示执行蒙哥马利乘法运算。上述的群模式字段404是用于指明于执行蒙哥马利乘法运算时的特定的蒙哥马利乘法模式,其将于图5中进行讨论。
请参考图5所示,其是为根据图4标出的蒙哥马利乘法指令的群模式字段404值的一表格示意图。值0xC0指定上述的蒙哥马利乘法运算是根据一蒙哥马利乘积模式完成。群模式字段404的所有其余值皆保留至后续扩充使用。
请参考图6所示,其是为根据本发明一实施例的一x86兼容微处理器600中的一蒙哥马利乘法单元617的一方块示意图。此微处理器600包含一提取逻辑电路601以自未示于图上的存储器中提取指令。此提取逻辑电路601是连接至一转译逻辑电路602,其包含逻辑电路、电路、装置、微码(如微指令或原生指令)或逻辑电路、电路、装置与微码的一混合体,其可用于将指令转译成微指令序列的等效组件。上述于此转译逻辑电路602中用于执行转译动作的组件可与此微处理器600中用于其它功能的电路、微码等共享。此转译逻辑电路602包含连接至一微指令只读存储器604的一转译器603,以及连接至上述转译器603与微指令只读存储器604的一蒙哥马利乘积逻辑电路640。一插断逻辑电路626是通过一总线633连接至此转译逻辑电路602。由此插断逻辑电路626所负责处理的表示插断事件的复数个软硬件插断信号627是连接至此转译逻辑电路602。此插断逻辑电路626所连接的此微处理器600的后序阶段包含一暂存器阶段605、一地址阶段606、一加载阶段607、一执行阶段608、一储存阶段618与一写回阶段619。每一个后续阶段包含相关的逻辑电路以完成上述提取逻辑电路601所提供的指令执行所需的相关功能,其功能是可参考于图3标出的微处理器的各个同名组件。于图6标出的x86兼容架构实施例中,执行阶段608内的一执行逻辑电路632包含各个可平行处理的执行单元610、612、614、616与617。丨整数单元610自微指令队列609接收整数微指令以便执行。丨浮点数单元612自微指令队列611接收浮点数数微指令以便执行。一多媒体延伸指令集单元614自微指令队列613接收多媒体延伸指令集微指令以便执行。一串流延伸指令集单元616自微指令队列615接收串流延伸指令集微指令以便执行。于此x86兼容实施例中,一蒙哥马利乘法单元617是通过一加载总线620、一停止信号621与一储存总线622连接至上述的串流延伸指令集单元616。此蒙哥马利乘法单元617与串流延伸指令集单元616共享同一个微指令队列615。于另一个实施例的中的蒙哥马利乘法单元617是如同前述各个可平行处理的执行单元610、612、614、616一般独立平行运作。此整数单元610是连接至一机器相关的暂存器628以评估一E位629的状态。此E位629是用于指示上述的蒙哥马利乘法单元617是否于此微处理器600中显现。此整数单元610亦存取一特征控制暂存器630中的一D位631以开启或关闭上述的蒙哥马利乘法单元617。如同图3所示的微处理器的实施例,图6所示的微处理器600仅描绘出于一x86兼容实施例中用于教示本发明的基本组件,而为了方便简洁的缘故,简并或省略了微处理器的其它组件。熟悉此项技术者应可了解其具有许多组件以完成上述接口,诸如未示于图中的一资料快取、总线接口单元、时脉产生与分布逻辑电路等等。
于实际操作时,上述的提取逻辑电路601自存储器(未示于图中)提取指令,并且与一时脉信号(未示于图中)同步提供至上述的转译逻辑电路602。此转译逻辑电路602将每一个指令转译为相对应的一微指令序列,并且接着与此时脉信号同步提供至此微处理器600的后方阶段605-608、618与619。于一微指令序列中的每个微指令指示一个次级动作的执行,以便完成相对应的一指令所描述的一完整动作,诸如于地址阶段606中产生地址、于整数单元610中对暂存器档案605内两个预定暂存器中储存的运算元进行加法运算、通过储存逻辑电路618将执行单元610、612、614、616与617所产生的结果储存于存储器等。根据所转译指令的不同,转译逻辑电路602可能将利用转译器603以直接产生微指令序列,或自微码只读存储器604中提取此序列,或者由转译器603直接产生部份的微指令序列,再通过微码只读存储器604提取部份的微指令序列。此微指令将循序地与时脉信号同步地经过此微处理器600的后续阶段605-608、618与619。当微指令抵达执行逻辑电路608时,执行逻辑电路608会通过将其微指令序列送入相对应的微指令队列609、611、613与615的方式,将此微指令与其运算元(是由暂存器阶段605的暂存器中取得、自地址阶段608的逻辑电路产生,或由加载逻辑电路607自一数据快取中获得)送至被指定的执行单元610、612、614、616与617。此执行单元610、612、614、616与617执行微指令,并且提供执行结果至储存阶段618。于一实施例中,微指令包含可指明此微指令本身是否可于其它动作平行处理的字段。
如上所述,当提取到一个蒙哥马利乘法指令时,上述的转译逻辑电路602产生相关的微指令,其令此微处理器600的后续阶段605-608、618与619执行所要求的蒙哥马利乘法运算。一第一复数个相关微指令直接被配送至上述的蒙哥马利乘法单元617,并且令此蒙哥马利乘法单元617通过上述的加载总线620加载运算元资料的区块以产生一蒙哥马利乘积,或者通过储存总线622将输出资料的区块,亦即蒙哥马利乘积的部分资料,经过储存阶段618存入存储器中。一第二复数个相关微指令被配送至其它执行单元610、612、614与616以执行完成此蒙哥马利乘法所指定的其它次级动作,诸如测试上述的E位629、开启D位631、更新暂存器档案605中的暂存器(状态暂存器与临时暂存器),以及处理来自插断逻辑电路626所指示的插断627等。此相关的微指令是经过排序以达到于输入数据的多重区块下执行特定蒙哥马利乘法运算的最佳化性能表现,其是将整数单元微指令穿插入蒙哥马利乘法微指令的序列当中,使得整数运算可与蒙哥马利乘法运算同时平行处理。包含于相关微指令序列的微指令可允许插断627的中断与回复。由于所有蒙哥马利乘法参数的指针、比特数资料、临时暂存资料、状态资料皆由x86架构暂存器所提供,当处理插断事件时,其内容值将被储存;而当自插断返回时,其内容值将被回复。
一蒙哥马利乘积逻辑电路640是用于执行蒙哥马利乘积产生动作。此蒙哥马利乘积逻辑电路640确保相关的微指令以被适当地排序以当处理插断627前,先更新上述的状态暂存器、临时暂存器与蒙哥马利部分的乘积。
显然地,依照上面实施例中的描述,本发明可能有许多的修正与差异。因此需要在其附加的权利要求项的范围内加以理解,除了上述详细的描述外,本发明还可以广泛地在其它的实施例中施行。上述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利范围;凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在下述申请专利范围内。

Claims (10)

1.一种用于完成指数乘法运算的装置,其中该装置被集成在微处理器中,其特征在于,包含:
转译逻辑电路,用以接收蒙哥马利乘法指令并且转译该蒙哥马利乘法指令为微指令序列,其中上述的蒙哥马利乘法指令用于产生蒙哥马利乘积,该微指令序列用于完成该蒙哥马利乘积所需的次级动作;以及
执行逻辑电路,与该转译逻辑电路相连,以接收该微指令序列并且执行该蒙哥马利乘积所需的次级动作,
该执行逻辑电路还包含用于产生蒙哥马利乘积的蒙哥马利乘法单元和多个可平行处理的执行单元:
其中,该微指令序列包含一第一复数个相关微指令和一第二复数个相关微指令,该第一复数个相关微指令被送至该蒙哥马利乘法单元,并且指定该蒙哥马利乘法单元通过加载逻辑电路加载数据、执行蒙哥马利乘法,以产生一蒙哥马利乘积;
该第二复数个相关微指令被送至该多个执行单元,以执行完成该蒙哥马利乘积所需的次级动作。
2.根据权利要求1项所述的用于完成指数乘法运算的装置,其特征在于,其中上述的蒙哥马利乘法指令预定去参考该微处理器中的多个暂存器的内容。
3.根据权利要求2项所述的用于完成指数乘法运算的装置,其特征在于,其中上述的多个暂存器包含:
第一暂存器,该第一暂存器的内容包含第一指示器以指向第一存储器地址,其中上述的第一存储器地址指示存储器中的第一位置。
4.根据权利要求3项所述的用于完成指数乘法运算的装置,其特征在于,其中上述的第一位置对应下列的至少某一种:
第一运算元指示器,该第一运算元指示器是指向第二存储器地址,其中上述的第二存储器地址指示存储器中包含该蒙哥马利乘积所需的第一运算元的第二位置;
第二运算元指示器,该第二运算元指示器是指向第三存储器地址,其中上述的第三存储器地址指示存储器中包含该蒙哥马利乘积所需的第二运算元的第三位置;
结果指示器,该结果指示器指向第四存储器地址,当完成该蒙哥马利乘积时,其中上述的第四存储器地址指示存储器中储存该蒙哥马利乘积的第四位置;
模数指示器,该模数指示器指向第五存储器地址,其中上述的第五存储器地址指示存储器中包含产生该蒙哥马利乘积所需的模数的第五位置;
整数,该整数相关于产生该蒙哥马利乘积所选用的模数与基底,其中上述整数用于产生该蒙哥马利乘积。
5.根据权利要求2项所述的用于完成指数乘法运算的装置,其特征在于,其中上述的多个暂存器包含:
第一暂存器,该第一暂存器的内容包含产生该蒙哥马利乘积所需的第一运算元、第二运算元以及模数。
6.一种在微处理器中用于执行指数乘法运算的方法,其特征在于,包含:
自存储器中提取蒙哥马利乘法指令,其中上述的蒙哥马利乘法指令用以产生蒙哥马利乘积;
转译该蒙哥马利乘法指令为微指令序列,该微指令序列包含一第一复数个相关微指令和一第二复数个相关微指令,该第一复数个相关微指令被送至一蒙哥马利乘法单元,并且指定该蒙哥马利乘法单元通过加载逻辑电路加载数据、执行蒙哥马利乘法,以产生一蒙哥马利乘积,该第二复数个相关微指令被送至多个执行单元,以执行完成该蒙哥马利乘积所需的次级动作;以及
在微处理器的执行逻辑电路所包含的该蒙哥马利乘法单元中执行该微指令序列以产生该蒙哥马利乘积。
7.根据权利要求6项所述的用于执行指数乘法运算的方法,其特征在于,其中上述的提取蒙哥马利乘法指令的步骤包含:
预定去参考该微处理器中的多个暂存器的内容。
8.根据权利要求7项所述的用于执行指数乘法运算的方法,其特征在于,其中上述的预定去参考该微处理器中的多个暂存器的内容的步骤包含:
指定第一暂存器,该第一暂存器的内容包含第一指示器以指向第一存储器地址,其中上述的第一存储器地址指示存储器中的第一位置。
9.根据权利要求8项所述的用于执行指数乘法运算的方法,其特征在于,其中上述的第一位置对应到下列的至少某一种:
第一运算元指示器,该第一运算元指示器指向第二存储器地址,其中上述的第二存储器地址指示存储器中包含该蒙哥马利乘积所需的第一运算元的第二位置;
第二运算元指示器,该第二运算元指示器指向一第三存储器地址,其中上述的第三存储器地址指示存储器中包含该蒙哥马利乘积所需的第二运算元的第三位置;
结果指示器,该结果指示器指向第四存储器地址,当完成该蒙哥马利乘积时,其中上述的第四存储器地址指示存储器中储存该蒙哥马利乘积的第四位置;
模数指示器,该模数指示器指向第五存储器地址,其中上述的第五存储器地址指示存储器中包含产生该蒙哥马利乘积所需的模数的第五位置;
整数,该整数相关于产生该蒙哥马利乘积所选用的模数与基底,其中上述的整数用于产生该蒙哥马利乘积。
10.根据权利要求7项所述的用于执行指数乘法运算的方法,其特征在于,其中上述的预定去参考该微处理器中的多个暂存器的内容的步骤包含:
指定第一暂存器,该第一暂存器的内容包含产生该蒙哥马利乘积所需的第一运算元、第二运算元与模数。
CN200610065575.7A 2005-05-16 2006-03-22 执行指数乘法的微处理器装置与方法 Active CN100573441C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/130,472 US7664810B2 (en) 2004-05-14 2005-05-16 Microprocessor apparatus and method for modular exponentiation
US11/130,472 2005-05-16

Publications (2)

Publication Number Publication Date
CN1834898A CN1834898A (zh) 2006-09-20
CN100573441C true CN100573441C (zh) 2009-12-23

Family

ID=36954789

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200610065575.7A Active CN100573441C (zh) 2005-05-16 2006-03-22 执行指数乘法的微处理器装置与方法

Country Status (4)

Country Link
US (1) US7664810B2 (zh)
EP (1) EP1724675A1 (zh)
CN (1) CN100573441C (zh)
TW (1) TWI336858B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2015174B1 (en) * 2007-06-21 2018-03-14 Imsys AB Microprogrammed processor having multiple processor cores using time-shared access to a microprogram control store
JP5400395B2 (ja) * 2009-01-07 2014-01-29 株式会社日立製作所 データ配信システム、鍵管理装置および鍵管理方法
TWI403952B (zh) * 2009-05-15 2013-08-01 Chunghwa Telecom Co Ltd A large integer modulus index chip structure for signature cryptography
US8438208B2 (en) * 2009-06-19 2013-05-07 Oracle America, Inc. Processor and method for implementing instruction support for multiplication of large operands
US8775813B2 (en) * 2010-02-26 2014-07-08 Certicom Corp. ElGamal signature schemes
US8560814B2 (en) * 2010-05-04 2013-10-15 Oracle International Corporation Thread fairness on a multi-threaded processor with multi-cycle cryptographic operations
US8583902B2 (en) * 2010-05-07 2013-11-12 Oracle International Corporation Instruction support for performing montgomery multiplication
US8555038B2 (en) 2010-05-28 2013-10-08 Oracle International Corporation Processor and method providing instruction support for instructions that utilize multiple register windows
KR102270791B1 (ko) * 2014-12-10 2021-06-29 삼성전자주식회사 매크로 명령어를 처리하는 방법 및 장치
CN107341540B (zh) * 2016-04-29 2021-07-20 中科寒武纪科技股份有限公司 一种用于执行Hessian-Free训练算法的装置和方法
CN106411519B (zh) * 2016-11-01 2019-01-25 北京百度网讯科技有限公司 用于rsa解密的处理器及用于rsa解密处理器的控制方法
CN109656867B (zh) * 2016-11-03 2023-05-16 中科寒武纪科技股份有限公司 Slam运算装置和方法
US10509651B2 (en) * 2016-12-22 2019-12-17 Intel Corporation Montgomery multiplication processors, methods, systems, and instructions
CN110119265A (zh) * 2018-02-06 2019-08-13 成都鼎桥通信技术有限公司 乘法运算实现方法、装置、计算机存储介质及电子设备
US11249724B1 (en) * 2018-09-26 2022-02-15 Habana Labs Ltd. Processing-memory architectures performing atomic read-modify-write operations in deep learning systems

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513133A (en) 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
JP2001527673A (ja) * 1997-05-04 2001-12-25 フォートレス ユー アンド ティー リミティド モントゴメリー乗算に基づくモジュラ乗算及び累乗の改善された装置と方法
AU2001273653A1 (en) * 2000-06-29 2002-01-14 The State of Oregon acting by and through The State Board of Higher Education on behalf of TheUniversity Of Oregon Method and apparatus for incomplete modular arithmetic
FR2822260A1 (fr) * 2001-03-14 2002-09-20 Bull Sa Procedes et dispositifs pour accelerer le temps de calcul d'un produit de montgomery d'un multiplication et d'une exponentiation modulaire
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
DE60208926T2 (de) * 2001-12-14 2006-08-31 Koninklijke Philips Electronics N.V. Fliessbandkern in einem montgomery-multiplizierer
GB2383435A (en) * 2001-12-18 2003-06-25 Automatic Parallel Designs Ltd Logic circuit for performing modular multiplication and exponentiation
US20040096057A1 (en) * 2002-11-20 2004-05-20 Moore Stephen F. Modular multiplication of multi-precision numbers
US7532720B2 (en) * 2003-10-15 2009-05-12 Microsoft Corporation Utilizing SIMD instructions within montgomery multiplication
US7353364B1 (en) * 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
A Reconfigurable Public-key Cryptography Coprocessor. Xiaoyang,Zeng.etc.2004 IEEE Asia-Pacific Conference on Advanced System Integrated Circuits. 2004
A Reconfigurable Public-key Cryptography Coprocessor. Xiaoyang,Zeng.etc.2004 IEEE Asia-Pacific Conference on Advanced System Integrated Circuits. 2004 *
An Energy-Efficient Reconfigurable Public-KeyCryptographyProcessor. James Goodman.etc.IEEE JOURNAL OF SOLID-STATE CIRCUTES,Vol.36 No.11. 2001
An Energy-Efficient Reconfigurable Public-KeyCryptographyProcessor. James Goodman.etc.IEEE JOURNAL OF SOLID-STATE CIRCUTES,Vol.36 No.11. 2001 *

Also Published As

Publication number Publication date
TW200641666A (en) 2006-12-01
CN1834898A (zh) 2006-09-20
EP1724675A1 (en) 2006-11-22
US20050256920A1 (en) 2005-11-17
TWI336858B (en) 2011-02-01
US7664810B2 (en) 2010-02-16

Similar Documents

Publication Publication Date Title
CN100573441C (zh) 执行指数乘法的微处理器装置与方法
US10523424B2 (en) Optimizing use of hardware security modules
US10547446B2 (en) Method and apparatus for providing a universal deterministically reproducible cryptographic key-pair representation for all SKUs, shipping cartons, and items
CN1655496B (zh) 产生密码钥匙排程的装置及方法
CN104202161B (zh) 一种SoC密码芯片
CN101017557B (zh) 用于密码处理的图形处理单元
US7159112B1 (en) Decryption of graphics data in a graphics processing pipeline
US7305567B1 (en) Decoupled architecture for data ciphering operations
EP1224533B1 (en) A cryptographic accelerator
CN108476198A (zh) 用于在不受信任的计算机上执行私人程序的系统和处理器
CN101997834A (zh) 支持高性能安全协议的装置
CN109479003A (zh) 安全椭圆曲线密码指令
CN109547201A (zh) 一种根密钥的加密方法、计算机可读存储介质及终端设备
CN102833077A (zh) 金融ic及金融社保ic卡远程发卡数据传输加解密方法
CN100391145C (zh) 重组透明化区块密码编译方法及装置
CN108491725A (zh) 一种提高云中虚拟机间通信安全的方法
CN103729324A (zh) 一种基于usb3.0接口的云存储文件安全保护装置
EP4216486A1 (en) Address generation method, blockchain information processing method, and related device
Conti et al. Design exploration of aes accelerators on fpgas and gpus
CN102930229A (zh) 用于提高数据安全性的办公系统
CN100463392C (zh) 执行组态区块密码编译演算法的微处理器装置和方法
CN105373735A (zh) 具有账号密码分散储存防侧录功能的计算机系统
Azuaje Securing IoT: Hardware Vs Software
CN113158203B (zh) 一种soc芯片、电路和soc芯片的外部数据读写方法
CN100527664C (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
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant