首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

蒙哥马利乘法处理器、方法、系统和指令 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:英特尔公司

摘要:一个方面的处理器包含多个寄存器以及用来对指令进行解码的解码单元。指令要指示要存储第一整数、第二整数和模数的至少一个存储位置。运行单元与解码单元耦合并且与多个寄存器耦合。运行单元响应于指令而要将与第一整数、第二整数和模数对应的蒙哥马利乘法乘积存储在目标存储位置中。公开其他处理器、方法、系统和指令。

主权项:1.一种处理器,包括:多个寄存器;解码单元,用来对指令进行解码,其中所述指令对于所述处理器的字大小是不可知的,所述指令用来指示要存储第一整数、第二整数和模数的至少一个存储位置;以及运行单元,与所述解码单元耦合并且与所述多个寄存器耦合,所述运行单元响应于所述指令而用来将与所述第一整数、所述第二整数和所述模数对应的蒙哥马利乘法乘积存储在目标存储位置中。

全文数据:蒙哥马利乘法处理器、方法、系统和指令技术领域[0001]本文所述的实施例一般涉及处理器。更具体来说,本文所述的实施例一般涉及在处理器中执行蒙哥马利乘法。背景技术[0002]密码术广泛地用来帮助保护数据和或通信的保密性和完整性。两种常用类型的密码术是对称密钥密码术和不对称或公有密钥密码术。[0003]对称密钥密码术使用单一类型的密钥。同一密钥用来对数据进行加密以及对数据进行解密。同一密钥还用来生成数字签名以及检验数字签名。[0004]相比之下,公钥密码术使用两种不同类型的密钥。密钥中的一个是秘密或私有的,而其他密钥是公开可用的。所谓的公有和私有密钥用于不同和互补目的。例如,公有密钥可用来加密数据,而私有密钥可用来对加密数据进行解密。作为另一个示例,私有密钥可用来生成数字签名,而公有密钥可用来检验数字签名。[0005]各种类型的公有密钥密码术算法在本领域中是己知的。一种当前广泛使用的公有密钥密码算法是RSA算法(以其作者RiveSt、Shamir、Adleman命名)。另一种公有密钥密码术算法是数字签名算法DSA算法。又一种公有密钥密码术算法是迪菲-赫尔曼密钥交换算法,其有时称作迪菲-赫尔曼或者简单地称作D-H。这类公有密钥密码术算法在因特网和其他网络通信中广泛地用来帮助建立安全信道、安全交换密钥以及交换和检验证书等。[0006]本发明提供一组技术方案,如下。[0007]1.—种处理器,包括:多个寄存器;解码单元,用来对指令进行解码,所述指令用来指示要存储第一整数、第二整数和模数的至少一个存储位置;以及运行单元,与所述解码单元耦合并且与所述多个寄存器耦合,所述运行单元响应于所述指令而用来将与所述第一整数、所述第二整数和所述模数对应的蒙哥马利乘法乘积存储在目标存储位置中。[0008]2.如技术方案1所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示所述多个寄存器的寄存器,所述寄存器要存储存储器地址信息,以识别存储器中要存储所述第一整数和所述第二整数的至少一个的存储位置。[0009]3.如技术方案2所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要隐式指示所述目标存储位置要是所述存储器中的所述存储位置,在所述目标存储位置处要存储所述蒙哥马利乘法乘积,并且其中所述运行单元响应于所述指令而在所述第一整数和所述第二整数的所述整数之上存储所述蒙哥马利乘法乘积。[0010]4.如技术方案2所述的处理器,其中,所述第一整数、所述第二整数和所述模数要存储在所述存储器的所述存储位置中。[0011]5.如技术方案1所述的处理器,其中,所述解码单元要对要指示所述模数的大小的所述指令进行解码。[0012]6.如技术方案5所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要具有要将所述模数的所述大小指示为固定位长度段的数量的立即数,每个固定位长度段要具有作为8位、16位、32位、64位、128位和256位中的一个的以位为单位的大小。[0013]7.如技术方案5所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令操作以将所述模数的所述大小指示为从至少1〇24位变动到至少8丨92位。[0014]8•如技术方案7所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令操作以将所述模数的所述大小指示为变动到至少W384位。[0015]9.如技术方案1所述的处理器,其中,所述运行单元响应于所述指令而要:计算第一蒙哥马利乘法常数,其要等于以二的所述处理器的字大小次方取模的所述模数的负倒数;以及使用所述第一蒙哥马利乘法常数来计算所述蒙哥马利乘法乘积。[0016]10.如技术方案9所述的处理器,其中,所述运行单元响应于所述指令而要:尝试以定位所述处理器的存储位置中的所述第一蒙哥马利乘法常数;当所述第一蒙哥马利乘法常数没有存储在所述存储位置中时确定以计算所述第一蒙哥马利乘法常数;以及将所计算的第一蒙哥马利乘法常数存储在所述存储位置中。[0017]11.如技术方案9所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令对于所述处理器的字大小是不可知的。[0018]12.如技术方案1所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示要等于以二的所述处理器的字大小次方取模的所述模数的负倒数的第一蒙哥马利乘法常数。[0019]13.如技术方案12所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示要存储所述第一蒙哥马利乘法常数的所述多个寄存器的寄存器。[0020]14.如技术方案12所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示所述多个寄存器的寄存器,所述寄存器要存储存储器地址信息,以识别存储器中要存储第一蒙哥马利乘法常数连同所述第一整数、所述第二整数和所述模数的至少一个的存储位置。[0021]15.如技术方案12所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要具有隐式64位字大小,并且其中所述运行单元要执行具有所述M位字大小的所述指令。[0022]16.如技术方案12所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要具有隐式32位字大小,并且其中所述运行单元要执行具有所述32位字大小的所述指令。[0023]17.如技术方案1所述的处理器,其中,所述运行单元响应于所述指令而要存储要等于以所述模数对所述第一和第二整数的乘积除以第二蒙哥马利乘法常数的商取模的所述蒙哥马利乘法乘积,其中所述第二蒙哥马利乘法常数要等于以所述模数对二的所述模数的以位为单位的大小次方取模。[0024]18.—种由处理器所执行的方法,包括:在所述处理器处接收指令,所述指令指示存储第一整数、第二整数和模数的至少一个存储位置;以及响应于所述指令而将与所述第一整数、所述第二整数和所述模数对应的蒙哥马利乘法乘积存储在目标存储位置中。_[0025]19.如技术方案18所述的方法,其中,所述接收包括接收所述指令,所述指令指不存储识别存储器中存储所述第一整数和所述第二整数的至少一个的存储位置的存储器地址信息的寄存器,并且隐式指示所述目标存储位置要是所述存储器中的所述存储位置,在所述目标存储位置处要存储所述蒙哥马利乘法乘积,并且其中所述存储包括在所述第一整数和所述第二整数的所述整数之上存储所述蒙哥马利乘法乘积。[0026]20.如技术方案18所述的方法,其中所述接收包括接收指示所述模数的大小的所述指令。[0027]21.—种用来处理指令的系统,包括:互连;动态随机存取存储器①RAM,与所述互连耦合;以及处理器,与所述互连耦合,所述处理器用来接收指令,所述指令要指示要存储第一整数、第二整数和模数的至少一个存储位置,所述处理器响应于所述指令而将与所述第一整数、所述第二整数和所述模数对应的蒙哥马利乘法乘积存储在目标存储位置中。[0028]22.如技术方案21所述的系统,其中所述指令要指示第一蒙哥马利乘法常数,其要等于以二的所述处理器的字大小次方取模的所述模数的负倒数。[0029]23.—种制造物品,包括非暂时机器可读存储媒介,所述非暂时机器可读存储媒介存储包含第一指令的多个指令,所述第一指令如果由机器运行则要使所述机器执行操作包括:从要由所述第一指令指示的至少一个存储位置访问第一整数、第二整数和模数;以及将与所述第一整数、所述第二整数和所述模数对应的蒙哥马利乘法乘积存储在所述第一指令的目标存储位置中。[0030]24.如技术方案23所述的制造物品,所述第一指令如果由所述机器运行则要使所述机器执行操作包括用来计算第一蒙哥马利乘法常数,其要等于以二的所述处理器的字大小次方取模的所述模数的负倒数25.—种处理器,包括:解码单元,用来对所述指令进行解码,所述指令用来指示要存储下列项的至少一个存储位置:源蒙哥马利乘法累加部分乘积,其对应于蒙哥马利乘法的第i次迭代的前一迭代;模数;第一整数的第i部分;第二整数,具有与所述第一整数相同的大小;以及所述蒙哥马利乘法的所述第i次迭代的先前计算的中间结果;以及运行单元,与所述解码单元耦合,所述运行单元响应于所述指令而将所述蒙哥马利乘法的所述第i次迭代的结果蒙哥马利乘法累加部分乘积存储在目标存储位置中。[0031]26.如技术方案25所述的处理器,其中,所述运行单元响应于所述指令而要存储所述结果蒙哥马利乘法累加部分乘积,其等于以二的所述处理器的字长度次方对所述源蒙哥马利乘法累加部分乘积加上所述先前计算的所述中间结果和所述模数的乘积再加上所述第一整数的所述第i部分和所述第二整数的乘积的和取模。[0032]27.如技术方案25所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示所述多个寄存器的寄存器,所述寄存器要存储存储器地址信息,以识别存储器中要存储所述源蒙哥马利乘法累加部分乘积的存储位置。[0033]28.如技术方案27所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要隐式指示所述目标存储位置要是所述存储器中的所述存储位置,在所述目标存储位置处要存储所述结果蒙哥马利乘法累加部分乘积,并且其中所述运行单元响应于所述指令而在所述源蒙哥马利乘法累加部分乘积之上存储所述结果蒙哥马利乘法累加部分乘积。[0034]29.如技术方案25所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示所述模数的大小。[0035]30.如技术方案25所述的处理器,其中,所述蒙哥马利乘法的所述第i次迭代的所述先前计算的中间结果要等于以二的所述处理器的字大小次方对所述源蒙哥马利乘法累加部分乘积的最低有效部分加上第一整数的所述第i部分乘以所述第二整数的最低有效部分再乘以所述模数的乘积的和取模。附图说明[0036]通过参照用来图示实施例的附图和以下描述,可以最好地理解本发明。在附图中:图1是与机器可读存储媒介的实施例耦合的电子装置的实施例的框图。[0037]图2是操作以执行蒙哥马利乘法指令的实施例的处理器的实施例的框图。[0038]图3是用来响应于蒙哥马利乘法指令的示例实施例而执行蒙哥马利乘法运算的示例实施例的运行单元的示例实施例的框图。图4是操作以执行蒙哥马利乘法指令的示例实施例的处理器的示例实施例的框图。图5是操作以执行蒙哥马利乘法累加部分乘积指令的实施例的处理器的实施例的框图。图6是适合于实现本发明的实施例的处理器的详细示例实施例的框图。[0039]图7是计算机系统的详细说明性示例实施例的框图,其包含芯片上系统SoC的详细说明性示例实施例,SoC包含一个或多个核,该核具有指令集,该指令集包含用来支持蒙哥马利乘法的指令。图8是用来从一个或多个核卸载用来支持蒙哥马利乘法的指令的执行的密码处理器的示例实施例的框图。具体实施方式[0040]本文所公开的是指令的实施例、用来执行指令的处理器的实施例、由处理器在执行指令时所执行的方法的实施例、结合用来执行指令的一个或多个处理器的系统的实施例以及提供指令的程序或机器可读媒介的实施例。在一些实施例中,处理器可具有用来对指令进行接收和或解码的解码单元或其他逻辑以及用来执行指令的运行单元或其他逻辑。在以下描述中,提出许多具体细节例如具体指令操作、操作序列、处理器配置、微架构细节等)。但是,在没有这些具体细节的情况下也可实施实施例。在其他情况下,没有详细示出众所周知的电路、结构和技术,以免模糊对本描述的理解。[0041]图1是与机器可读存储媒介110的实施例耦合的电子装置10〇的实施例的框图。电子装置可表示台式计算机、膝上型计算机、笔记本计算机、平板计算机、服务器、网络装置例如路由器或交换机、智能电话、机顶盒、各种其他类型的计算机系统的任何。[0042]电子装置包含处理器102的实施例。在各个实施例中,处理器可以是通用处理器例如通用微处理器或中央处理单元CPU或者专用处理器。适当专用处理器的示例包含但不限于密码处理器、通信处理器、网络处理器、协处理器、嵌入式处理器、数字信号处理器DSP等。处理器可具有各种复杂指令集计算CISC架构、简化指令集计算RISC架构、超长指令字VLIW架构、混合架构、其他类型的架构或者具有不同架构的组合例如,不同核可具有不同架构)中的任何。[0043]处理器具有指令集104。指令集可包含但不限于多种不同类型的指令。指令集的指令可表示宏指令、机器语言指令、机器代码指令、处理器本机能够解码的其他指令等。在一些实施例中,指令集可包含对加速蒙哥马利乘法是有用的指令的至少一个实施例。在一些实施例中,指令集可选地可包含蒙哥马利乘法指令106,其操作以使处理器执行蒙哥马利乘法。在一些实施例中,指令集可选地可包含蒙哥马利乘法累加部分乘积指令108,其操作以使处理器执行涉及累加部分乘积的蒙哥马利乘法的一部分。可选地可包含这些指令的任一个或两者。有利地,与如果使用更大数量的指令的软件序列相比,包含指令集中的这类指令的至少一个通常可帮助加速或改进执行蒙哥马利乘法的性能。[0044]再次参照图1,机器可读存储媒介110的实施例可以操作以存储采取由电子装置100可读的形式的信息例如指令)。作为示例,机器可读存储媒介可包含各种己知类型的存储器、数据存储装置、数据存储盘等的任何。机器可读存储媒介可存储算法112例如指令序列)。在一些实施例中,算法可包含密码算法,例如比如RSARivest、Shamir、Adleman、数字签名算法DSA、迪菲-赫尔曼或者椭圆曲线公有密钥密码算法,但是本发明的范围并不局限于此。在一些实施例中,算法可具有对加速蒙哥马利乘法是有用的指令的至少一个实施例的实例。在一些实施例中,算法可选地可包含蒙哥马利乘法指令114例如指令106的实例),其如果和或在被执行时操作以使处理器执行蒙哥马利乘法。在一些实施例中,算法可选地可包含蒙哥马利乘法累加部分乘积指令116例如指令108的实例),其如果和或在被执行时操作以使处理器执行涉及累加部分乘积的蒙哥马利乘法的一部分。[0045]蒙哥马利乘法可提供用来执行大整数模乘法的计算和或时间有效方式。大整数模乘法通常包含将两个或更多大整数例如,其包含大量位相乘,并且对乘积以模数取模。如本文所使用的,术语“大整数”表示整数,其具有至少256位的整数,并且可选地具有更多位。在涉及RSA、DSA和或迪菲-赫尔曼的实施例中,大整数可具有512位、1024位或者其他甚至更大数量的位例如范围高达大约16384位或以上)。以模数0^对第一大整数X和第二大整数00的大整数模乘法取模可通过下式1表示:A=X*YmodN等式1当第一大整数(X和第二大整数Y相乘以生成乘积并且然后乘积以模数(N取模mod时,大整数模乘法乘积或结果A等于余数。取模mod运算有效地确定执行乘积与模数的除法类运算之后的余数。[0046」大整数模取幂与大整数模乘法相关。以模数⑽对连乘第二大整数指数⑻次的第一大整数底数05取模的大整数模取幂可通过下式2表示:A=BEmodN等式2取幂涉及将底数取指数E的幂或使底数⑻连乘指数⑹次。作为示例,如果指数为正整数,则取幂可表示将指数数量的底数共同相乘(例如。当取幂的结果以模数⑽取模mod时,大整数模取幂结果A等于余数。将这些底数共同相乘可表示一种形式的大整数模乘法和或可至少与其相关,使得在一些实施例中,大整数模乘法可用来帮助执行大整数模取幂。此外,当模取幂采用蒙哥马利归约reduction来执行时,通常还涉及较大整数模乘法。[0047]这种大整数模乘法、大整数模取幂、大整数模算术例如包含乘法等广泛用于密码算法中,例如比如rSA、DSA和迪菲-赫尔曼以及各种其他算法和用途。作为一个说明性示例,在RSA的情况下,RSA符号过程获取消息,对它填充,使用填充消息和秘密私有密钥例如大整数作为指数来执行大整数模取幂,以及互补检验过程使用对应公有短指数来执行模取幂。另外,这种大整数模乘法、大整数模取幂、大整数模相乘算术等用于其他密码算法、例如比如椭圆曲线密码术ECC中。作为示例,在ECC中,它们可用来计算点相加和或点翻倍。ECC还用于各种应用中,例如比如TLSSSL、国家安全Suite-B算法、安全边界网关协议的P-256以及其他用途。这种大整数模乘法还可用于当前已知或者将来开发的各种其他密码、计算机科学、数学和或其他用途。[0048]一个难题在于,执行大整数模乘法可趋向于是相对计算密集和或费时的。这部分归因于乘法。但是,执行模或除法类运算通常趋向于甚至是比乘法更为计算密集和或费时的。当所涉及整数的大小是大的、很大的例如大约数千位或者极大的(例如大约八千位或以上时,情况可趋向于尤其是这样。[0049]图2是操作以执行蒙哥马利乘法指令206的实施例的处理器202的实施例的框图。处理器可以是先前对图1的处理器102所述的各种不同类型的处理器中的一个例如通用处理器、专用处理器、CISC、RISC或VLIW架构等)。在一些实施例中,处理器可包含和或设置于至少一个集成电路或半导体管芯上。在一些实施例中,处理器可包含至少一些硬件例如晶体管、集成电路系统、存储微码或者其他运行单元级指令的非易失性存储器等)。[0050]在操作期间,处理器202可接收蒙哥马利乘法指令206。例如,指令可在互连上从存储器接收。指令可表示宏指令、机器语言指令、机器代码指令、处理器能够解码的指令或者处理器的指令集的指令。[0051]在一些实施例中,蒙哥马利乘法指令可指定例如显式指定或者以其他方式指示例如隐式指示要存储第一整数00224、第二整数Y226和模数N228的至少一个存储位置222。至少一个存储位置可不同地表示存储器中的一个或多个存储位置、处理器的一个或多个架构寄存器、处理器的一个或多个专用存储位置或者它们的各种组合。第一整数、第二整数和模数N可表示蒙哥马利乘法指令的源操作数。第一和第二整数可表示要在其上执行蒙哥马利乘法并且以模数取模的那些源操作数。通常,按照蒙哥马利乘法,第一和第二整数的数值应当小于模数的值,模数的数值通常应当是奇数,以及第一和第二整数和模数的以位为单位的大小通常各应当相同。如先前所述,第一和第二整数以及模数各可表示具有至少256位并且可选地具有更多位例如可选地具有1〇24位、2〇仙位、40%位、8192位或16384位的大整数。“更大”表示整数的位大小而不一定表示其数值。[0052]在一些实施例中,蒙哥马利乘法指令可选地还可指示作为至少一个存储位置222中的源操作数的第一“更小”蒙哥马利乘法常数M23〇,但是这不被要求。两个不同的常数可与蒙哥马利乘法关联。一个是“更小”蒙哥马利乘法常数M,以及另一个是第二“更大”蒙哥马利乘法常数R。如本文所使用的,术语“更小”和“更大”是相对术语而不是绝对术语,其是彼此相对的(例如,更小蒙哥马利乘法常数M与更大蒙哥马利乘法常数00相比是比较小的)。通常,更小蒙哥马利乘法常数⑽可具有糾位或以下的大小。相反,更大蒙哥马利乘法常数R通常是与模数N其通常是至少256位或者可选地是更多位的大整数相同的大小。[0053]更小蒙哥马利乘法常数⑽可表达为和或等于下式3的赋值evaluation:M=_N1mod264等式3这个等式表明,更小蒙哥马利乘法常数M是以某个值其在本情况中为2的64次方取模的模数N的负倒数。更小蒙哥马利乘法常数⑽称作常数,因为它只是模数⑽(其对指令通常是固定的(例如对通用算法是固定的)的函数。使2连乘64次假定64位字长度和或数据路径大小。备选地,如果使用32位字长度和或数据路径大小或者一些其他长度和或大小,则可改为使2连乘32或者另一个长度和或大小次。[0054]提供更小蒙哥马利乘法常数作为源操作数的一个可能的优点在于,它可提前预先计算或预计算,使得它不需要在蒙哥马利乘法指令例如其每个不同实例)的运行的界限之内执行。例如,由于更小蒙哥马利乘法常数只是模数和架构字长度或大小的函数,所以有可能预先计算给定处理器架构字长度或大小的一个或多个模数值的一个或多个更小蒙哥马利乘法常数值,并且将它们存储在表中(例如存储器中),使得它们无需实时地计算。但是,提供更小蒙哥马利乘法常数作为指令的源操作数是可选的而不被要求。[0055]在其他实施例中,如果更小蒙哥马利乘法常数M没有作为源操作数来提供,则它可选地可改为由处理器响应于蒙哥马利乘法指令的执行和或在此期间来计算或生成。也就是说,蒙哥马利乘法指令可控制或者使处理器生成更小蒙哥马利乘法常数M。如果需要的话,在一些实施例中,一旦它被计算,则它可选地可保存或存储在处理器上,以帮助通过更多计算来分散spreadout或分摊计算更小蒙哥马利乘法常数的成本。例如,在一些实施例中,处理器可选地可包含用来存储更小蒙哥马利乘法常数的专用(例如非架构)寄存器、便笺式存储器、硬件实现表、专用非相干高速缓存或者其他适当存储器。在这类实施例中,蒙哥马利乘法指令的执行可包含最初检查这种存储以查看适当(例如对模数和架构字大小长度的更小蒙哥马利乘法常数是否已经计算并且存储在存储装置中。如果它已经被存储,则它可从存储装置中检索,使得它无需作为执行指令的组成部分重新计算。作为执行蒙哥马利乘法指令的组成部分来计算或生成更小蒙哥马利乘法常数M的一个可能的优点在于,它可允许蒙哥马利乘法指令是与处理器的字大小长度无关的和或对其是不可知的。例如,这可允许同一指令例如同一操作码在处理器的字大小和或长度为32位、64位或一些其他大小时被执行。[0056]蒙哥马利乘法指令可在不同实施例中按照不同方式来指定例如显式指定或者以其他方式指示例如隐式指示至少一个存储位置222。作为一个示例,指令可选地可在其指令编码内具有操作数指定字段或者位集合,以显式指定寄存器或其他存储位置。作为另一个示例,寄存器或其他存储位置可选地可对指令例如其操作码是隐式的,而不是指令需要在其指令编码中具有非操作码位以显式指定寄存器或其他存储位置。例如,处理器可固有地、隐含地或者以其他方式隐式地理解为在检测蒙哥马利乘法指令例如其操作码时使用存储位置。[0057]再次参照图2,处理器包含解码单元或解码器218。解码单元可对蒙哥马利乘法指令进行接收和解码。解码单元可输出一个或多个相对较低级指令或控制信号例如一个或多个微指令、微操作、微码入口点、解码指令或控制信号等),其反映、表示相对较高级蒙哥马利乘法指令和或从其中得出。解码单元可使用各种机制包含但不限于微码只读存储器ROM、查找表、硬件实现、可编程逻辑阵列PLA、适合实现解码单元的其他机制及其组合)来实现。在一些实施例中,解码单元可包含用来接收蒙哥马利乘法指令的至少一个结构例如端口、互连或接口)、与其耦合以便对蒙哥马利乘法指令进行识别和解码的指令识别和解码逻辑以及与其耦合以输出(一个或多个较低级指令或一个或多个控制信号的至少一个输出结构例如端口、互连或接口)。在一些实施例中,解码单元可包含在管芯上例如具有运行单元220的管芯上)。在一些实施例中,解码单元可包含至少一些硬件例如,晶体管、集成电路系统、管芯上只读存储器或者存储微码或其他运行单元级控制信号的其他非易失性存储器等的一个或多个)。[0058]再次参照图2,运行单元220与解码单元218耦合。运行单元可接收一个或多个解码或者以其他方式转换的指令或控制信号,其表示蒙哥马利乘法指令和或从其中得出。运行单元还可与至少一个存储位置222其用来存储蒙哥马利乘法指令的源和或目标操作数)辛禹合。[0059]运行单元可响应于和或因蒙哥马利乘法指令例如,响应于一个或多个指令或者从指令所解码的控制信号和或响应于指令被解码和或响应于指令被提供给解码器而操作以生成并且将与第一整数X224、第二整数Y226和模数N228对应的蒙哥马利乘法乘积A232存储在由蒙哥马利乘法指令所指示的目标存储位置中。蒙哥马利乘法乘积A可表示指令的结果或目标操作数。在一些实施例中,蒙哥马利乘法乘积可等于以模数N对第一整数⑵和第二整数⑺的乘积除以更大蒙哥马利乘法常数⑻的商取模。更大蒙哥马利乘法常数0?可表达为和或符合和或等于下式4的赋值:R=2sizemodN等式4这个等式表明,更大蒙哥马利乘法常数⑻是以模数N取模mod的2的模数的以位为单位的大小次方。作为示例,如果模数为1〇24位,则大小为1〇24。更大蒙哥马利乘法常数R称作常数,因为它只是模数N其对指令通常是固定的(例如对通用算法是固定的)的函数。[0060]运行单元和或处理器可包含特定或具体逻辑例如晶体管、集成电路系统或者潜在地与固件例如非易失性存储器中存储的指令相结合的其他硬件,其操作以响应于和或因蒙哥马利乘法指令例如响应于从蒙哥马利乘法指令所解码的一个或多个指令或控制信号而执行蒙哥马利乘法指令和或存储蒙哥马利乘法乘积A232。在一些实施例中,运行单元可包含用来接收源操作数的一个或多个输入结构例如端口、互连或接口)、操作以执行蒙哥马利乘法、与其耦合以接收和处理源操作数并且生成蒙哥马利乘法乘积的逻辑以及与其耦合以输出蒙哥马利乘法乘积的一个或多个输出结构例如端口、互连或接口)。在一些实施例中,操作以执行蒙哥马利乘法的逻辑可包含算术逻辑单元ALU可选地包含乘加逻辑和移位逻辑)以及用来控制ALU以执行蒙哥马利乘法的蒙哥马利乘法控制逻辑。作为示例,蒙哥马利乘法控制逻辑可包含微码引擎、微序列状态机等或者其组合。在一些实施例中,运行单元可选地可包含对图3所示和所述的逻辑,但是本发明的范围并不局限于此。[0061]为了避免模糊本描述,示出和描述相对简单的处理器202。但是,处理器可选地可包含其他处理器组件。例如,各个实施例可包含对图6所示和所述的组件的各种组合和配置。处理器的组件可耦合在一起,以允许它们按预期操作。[0062]图3是图示响应于蒙哥马利乘法指令的实施例而执行蒙哥马利乘法运算的示例实施例的运行单元320的示例实施例的框图。运行单元320可与图2的运行单元220是相同、类似或者不同的。蒙哥马利乘法指令可指定或者以其他方式指示第一整数⑵324、第二整数Y326和模数N328。在一些实施例中,蒙哥马利乘法指令可选地可指定或者以其他方式指示更小蒙哥马利乘法常数⑽33〇。备选地,运行单元可选地可作为执行蒙哥马利乘法指令的组成部分来生成更小蒙哥马利乘法常数⑽,如本文别的地方所述。第一整数⑵、第二整数⑺、模数⑻和更小蒙哥马利乘法常数⑽各可与图2的对应命名操作数是相同、类似或者不同的。为了避免模糊本描述,将主要描述图3的实施例的不同和或附加特性,而没有重复可选地可与先前对图2的实施例所述的那些特性是相同或类似的全部特性。[0063]在一些实施例中,蒙哥马利乘法指令可选地可指定或者以其他方式指示模数328的以位为单位的大小s。在各个实施例中,可在蒙哥马利乘法指令的立即数中或者在由蒙哥马利乘法指令所指示的寄存器或其他存储位置中指示大小。如所图示示例实施例所示,大小(s可表达为模数N的64位字或者部分的数量。作为一个说明性示例,32的大小可用来指示2048位模数例如,32*64=2048。在其他实施例中,大小可指示模数的8位、I6位、32位、128位、256位或512位字或部分的数量。在其他实施例中,大小可指示模数的位的绝对大小例如,大小可具有值1024,以指示1024位模数)。在又一些实施例中,大小可具有给定数量的可能值,其任意地被指配到给定数量的可能大小并且可用来在给定数量的可能大小之间进行选择。例如,2位大小字段可具有值00以选择1024位模数,具有值01以选择2048位模数,以及具有值1〇以选择8192位模数。又一些方式将对本领域熟练并且具有本公开的有益效果的人员是显而易见的。作为又一个选项,蒙哥马利乘法指令可选地可具有模数的固定或隐式大小,使得该大小无需作为输入或源操作数来提供,而可以(例如对操作码是隐式的。例如,可存在各具有不同操作码的指令的1024位或2048位版本的一个或多个。[0064]如在说明中所示,第一整数和第二整数可在逻辑上划分为多个字、段或其他部分。在具体所图示实施例中,它们被划分为大小s数量的64位字或部分,但是本发明的范围并不局限于此。具体来说,第一整数00具有最低有效64位字x[0]、下一最低有效64位字x[l],一直到最高有效64位字X[s-1]。类似地,第二整数Y具有最低有效64位字y[0]、下一最低有效64位字y[l],一直到最高有效64位字y[s-l]。[0065]运行单元320耦合成接收第一整数X、第二整数⑺、模数⑻、可选的大小(s以及可选的更小蒙哥马利乘法常数M。在一些实施例中,运行单元可具有用来接收源操作数的至少一个输入结构338例如端口、互连或接口)。在一些实施例中,运行单元可选地可具有用来存储源操作数的一个或多个暂时寄存器或其他内部操作数存储装置342。操作数存储装置还可以操作以存储累加部分乘积340。累加部分乘积可表示与进行中的蒙哥马利乘法乘积对应的运行累加值或中间值。如所示,累加部分乘积还可在逻辑上分为最低有效64位字a[0]、下一最低有效64位字a[l],一直到最高有效64位字a[s_l],其中s在这个示例中再次表示模数中的64位字的数量。[0066]运行单元还可包含用来执行与操作数存储装置342耦合的蒙哥马利乘法344的逻辑。在一些实施例中,这种逻辑可包含算术逻辑单元ALU346。在一些实施例中,ALU可包含乘加逻辑348和移位逻辑350。算术逻辑单元可选地可专用于执行蒙哥马利乘法指令或者可选地可由不同类型的其他指令所共享。在一些实施例中,运行单元还可包含蒙哥马利乘法控制逻辑352,其用来控制ALU和或运行单元来处理源操作数并且执行蒙哥马利乘法。适当蒙哥马利乘法控制逻辑的示例包含但不限于微码引擎、微定序状态机等或者其组合。[0067]在一些实施例中,蒙哥马利乘法控制逻辑可包含用来控制ALU和或运行单元来处理源操作数并且执行按照和或符合和或等效于下列伪代码353的蒙哥马利乘法的逻辑:InitializeA=0Forifrom0tos-1s是以64位部分的数量的模数的大小ui=a[0]+x[i]*y[0]*Mmod264A=A+x[i]*Y+ui*N264IfA=NthenA=A-NStoreAA=X*Y*R_1modN,其中R=2s*64modN在这个伪代码中,A最初表示累加部分乘积,并且最终表示蒙哥马利乘法乘积。i表示循环计数器,s表示以64位部分的数量的模数的大小,以及ui是蒙哥马利乘法的第i次迭代的先前计算的中间参数或中间结果。3[1]^[1]、7[1]分别是如上所述的累加部分乘积仏、第一整数X和第二整数00的第i个64位部分。M是更小蒙哥马利乘法常数330,Y是整个第二整数326,以及N是模数328。有利地,蒙哥马利乘法可允许模乘法在无需执行高成本模运算或除法类运算的情况下执行。作为示例,运行单元可通过忽略最低有效64位字等而不是执行这类模或除法类运算来实现mod264和除以上面的伪代码中的(264运算以作为移位逻辑450中的右移位。[0068]运行单元在蒙哥马利乘法完成时可响应于蒙哥马利乘法指令而可操作以将蒙哥马利乘法乘积㈧存储在由指令所指示的目标存储位置中。在一些实施例中,运行单元可具有用来输出蒙哥马利乘法乘积A的至少一个输出结构354例如端口、互连或接口)。[0069]图4是操作以执行蒙哥马利乘法指令406的示例实施例的处理器402的示例实施例的框图。处理器402可与图2的处理器202和或图3的处理器302是相同、类似或者不同的。处理器包含操作以对指令进行解码的解码单元418,操作以执行指令的运行单元420。除非另有指定,这些组件可选地可与图2和或图3的对应命名组件是相同或类似的(例如具有是相同或类似的任何一个或多个特性)。为了避免模糊本描述,将主要描述图4的实施例的不同和或附加特性,而没有重复可选地可与先前对图2和图3的实施例所述的那些特性是相同或类似的全部特性。[0070]解码单元418可以操作以对蒙哥马利乘法指令406进行接收和解码。在一些实施例中,蒙哥马利乘法指令可指定例如显式指定或者以其他方式指示例如隐式指示要存储第一整数X424、第二整数Y426、模数N428和可选的更小蒙哥马利乘法常数M430的至少一个存储位置。如所示,在一些实施例中,第一整数〇〇、第二整数Y和模数N可选地各可存储在存储器460的一个或多个存储位置中,但是这不被要求。例如,在一个具体实施例中,第一整数⑵、第二整数⑺和模数N的每个可选地可彼此相邻或毗连地存储在存储器的相同单个存储位置中,但是本发明的范围并不局限于此。这些操作数可按照各种不同顺序或布置例如比如XYN、NXY、NYX、YXN等来存储。备选地,可选地可使用存储器中的两个或更多存储位置。在又一些实施例中,处理器的向量寄存器458或者其他存储位置可选地可用于这些源操作数的一个或多个。在说明中,处理器与存储器耦合或者以其他方式与其通信。但是要领会,本发明的实施例涉及单独的处理器,其能够和或操作以与存储器耦合,但是其尚未与存储器耦合例如尚未部署在系统中)。[0071]蒙哥马利乘法指令406可以操作以在不同实施例中按照不同方式来指示存储器460中的存储位置。在一些实施例中,指令可以操作以指示处理器的标量寄存器456例如32位或64位通用寄存器的集合中的寄存器,其用来存储指针、有效地址或者其他存储器地址信息457。作为一个示例,指令可具有用来显式指定寄存器的寄存器指定字段。备选地,寄存器可对指令例如操作码是隐式的。在后一种情况下,处理器可固有地、隐含地或者以其他方式隐式地理解,寄存器在它对指令进行解码或识别时要被使用,而指令无需具有用来显式指定寄存器的任何非操作码位。来自寄存器的存储器地址信息可潜在地与其他存储器地址信息相结合这取决于特定存储器寻址模式),以识别存储器中的存储位置。作为示例,这种附加存储器地址信息可存储在数据段寄存器、扩展段寄存器、另一个专用存储器地址寄存器中或者指令的编码中或者其他位置。[0072]将操作数存储在存储器460的一个或多个存储位置中可趋向于是有益的,特别是当操作数比处理器的最宽向量寄存器458要宽时。在这类情况下,每个操作数将需要存储在两个或更多向量寄存器中,这可趋向于占用更多向量寄存器。但是,处理器的向量寄存器可选地也可用来存储操作数。特别是当处理器具有宽向量寄存器其至少与操作数例如模数N的位的宽度同样宽时,这种向量寄存器的使用可趋向于是有益的。[0073]再次参照图4,在一些实施例中,蒙哥马利乘法指令可选地可指示更小蒙哥马利乘法常数M430作为源操作数。如所示,在一些实施例中,更小蒙哥马利乘法常数⑽可选地可存储在标量寄存器例如32位或64位通用寄存器中,其可由蒙哥马利乘法指令显式指定或者隐式指示。在其他实施例中,更小蒙哥马利乘法常数M可选地可存储在存储器的存储位置或者另一个存储位置中。例如,更小蒙哥马利乘法常数M可选地可随第一整数x、第二整数Y和模数N的任何一个或多个或者可选的全部一起存储在存储器的存储位置中。在又一些实施例中,蒙哥马利乘法常数M可以不作为蒙哥马利乘法指令的源操作数来提供,而是可作为执行蒙哥马利乘法指令的组成部分来生成,如本文的别的地方所[0074]在一些实施例中,蒙哥马利乘法指令406可以操作以显式指定或者指示模数N428的大小。例如,在一些实施例中,指令可具有用来指示模数的大小的立即数例如8位立即数)。大小可按照本文别的地方所述的各种方式来指示。作为一个示例,指令可具有立即数,其要将模数的大小指示为固定位长度段其各具有作为8位、16位、32位、64位、I28位、256位和512位中的一个的长度的数量。在一些实施例中,蒙哥马利乘法指令可以操作指示大小,和或可适合于范围从至少1024位至2048位或者从1024位至81沿位或者从256位至16384位只列举几个示例的操作数大小。^〇[0075]标量寄存器456和向量寄存器458可表示管芯上或者集成电路上存储位置,其操作以存储数据。向量寄存器可以操作以存储打包数据、向量数据或者单指令多数据SMD数据。标量和向量寄存器可表示架构上可见或架构寄存器,其对于软件和或编程人员是可见的,和或是通过用来识别操作数的处理器的指令集的指令所指示的寄存器。这些架构寄存器与给定微架构中的其他非架构寄存器例如暂时寄存器、重排序缓冲器等形成对照。寄存器可在不同微架构中按照不同方式来实现,而并不局限于任何特定类型的设计。适当类型的寄存器的示例包含但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器及其组合。[0076]称作M0NTMUL64的64位字大小架构或模式的适当蒙哥马利乘法指令的一个具体示例实施例通过以下伪代码图示。[0077]M0NTMUL64{OPERANDS:SrcDstR164位寄存器R1具有X,Y,N和结果的存储器的地址Src2R264位寄存器R2具有更小的蒙哥马利乘法常数Mimm8i圓8指示64位字的数量OPERATION:{X||YMN}=SrcDst从存储器访问X,Y,N,可选地提高存储器访问故障M=src2从Src2访问Ms=imm8+l模中64位字的数量例如,大小N=s*64位)raisefaultifNisntodd这是可选的InitializeA=0Forifrom0tos-1ui=a[0]+x[i]*y[0]*Mmod264A二(A+x[i]*Y+ui*N264IfA^NthenA=A-NSrcDst=A在X或Y之上存储A例如,现在的存储器具有{A||Y||N}}M0NTMUL64指示用来存储最初用作第一整数⑴、第二整数〇〇和模数⑽的源并且后来用来存储蒙哥马利乘法乘积的存储器中的源目标存储位置的存储器地址信息的寄存器R1例如64位通用寄存器)。蒙哥马利乘法乘积在第一和第二整数中的一个而不是模数之上写入SrcDst中。这可通过允许算法在循环的各迭代仅复制一个新操作数从算法角度帮助改进效率。M0NTMUL64还指示用来存储更小蒙哥马利乘法常数⑽的寄存器R2例如64位通用寄存器)A0NTMUL64具有立即数,在本情况中为8位立即数imm8,其存储表示与模数⑽对应的64位字的计数或数量的值。这个imm8可允许模数的大小在高达16384位的范围内指示。[0078]称作M0NTMUL32的32位字大小架构或模式的适当蒙哥马利乘法指令的另一个类似具体示例实施例通过以下伪代码图示。[0079]M0NTMUL32{OPERANDS:SrcDstRl32位寄存器R1具有X,Y,N和结果的存储器的地址Src2R232位寄存器R2具有更小的蒙哥马利乘法常数Mimm8immS指示32位字的数量OPERATION:{X||Y||N}=SrcDst从存储器访问X,Y,N,可选地提高存储器访问故障M=src2从Src2访问Ms=imm8+l模数中的32位字的数量例如.,大小N=s*32位)raisefaultifNisntodd这是可选的InitializeA=0Forifrom0tos~lui=a[0]+x[i]*y[0]*Mmod232A=A+x[i]*Y+ui*N232IfA彡NthenA=A-NSrcDst=A在X或Y之上存储A例如,现在的存储器具有{A||Y||N}}M0NTMUL32与M0NTMUL64类似,并且以上对M0NTMUL64的论述通常适用,除了32位代替M位字大小之外。代替64位通用寄存器,32位通用寄存器可用于R1和R2。更小蒙哥马利乘法常数M还基于32位字大小例如-N—1mod232,如上所述。a[i]、x[i]和y[i]的每个对应于其相应操作数中的第i个32位字。imm8存储表示与模数对应的32位字的计数或数量的值。[0080]要领会,M0NTMUL32和M0NTMUL64只是两个说明性示例实施例,并且也考虑许多变化。例如,在其他实施例中,更小蒙哥马利乘法常数M可随X、Y和N的一个或多个一起例如作为{X||Y||N||M}来存储在存储器位置中,或者它另外可作为执行指令的操作中的一个来生成。作为指令的组成部分来计算M的一个优点在于,它可允许同一指令对基本架构的字大小是不可知的,使得同一指令例如同一操作码能够用于32位和64位字大小处理器架构或操作模式。作为另一个示例,在其他实施例中,可由指令对模数假定固定大小,在所述情况下,可选地可省略立即数。作为又一个示例,在其他实施例中,代替使用SrcDst,单独存储位置可选地可用来存储蒙哥马利乘法乘积。而且,X、Y和N可选地可按照各种其他顺序存储。更一般来说,向量寄存器或其他存储位置可选地可用于X、Y、N和M操作数的一个或多个。[0081]参照伪代码353,执行蒙哥马利乘法中涉及的最计算密集和或费时的操作中的一个是计算蒙哥马利乘法累加部分乘积A。这个操作在循环的每个迭代期间对模数的字确定大小部分的数量执行一次。另外,可存在较大的这类迭代次数。例如,在1024位模数和64位字的情况下可存在16次迭代,在2048位模数的情况下可存在32次迭代,依此类推。在一些实施例中,蒙哥马利乘法累加部分乘积指令508可选地可包含在处理器的指令集中,以便帮助执行这个操作。[0082]图5是操作以执行蒙哥马利乘法累加部分乘积指令508的实施例的处理器5〇2的实施例的框图。处理器502可与图2的处理器202是相同、类似或者不同的。[0083]处理器包含解码单元518,其操作以便对蒙哥马利乘法累加部分乘积指令5〇8进行接收和解码。除了能够对指令508进行解码的方面之外,作为指令206的补充或替代,解码器可选地可与图2的解码器单元218是类似或相同的。[0084]在一些实施例中,蒙哥马利乘法累加部分乘积指令508可指定例如显式指定或者以其他方式指示例如隐式指示要存储源、先前蒙哥马利乘法累加部分乘积A564、第二整数Y526和模数N528的至少一个存储位置522。源蒙哥马利乘法累加部分乘积A可表示由先前蒙哥马利乘法累加部分乘积指令508在循环的当前第i次迭代的前一immediatelyprior迭代中计算的累加部分乘积。第二整数Y和模数N可选地可与如本文别的地方所述的那些的类似或相同。[0085]至少一个存储位置522还可存储第一整数x[i]566的第i部分。作为示例,这可表示如图3对循环的前一迭代所示的第一整数X324的64位部分例如x[0]、x[l]等)的第i部分。[0086]至少一个存储位置522还可存储蒙哥马利乘法的循环的第i次迭代的先前计算ui568的第i个中间结果。先前计算ui的第i个中间结果可按照下式5的赋值来计算和或可等效于下式5的赋值:ui=a[0]+x[i]*y[0]*Mmod264等式5回想下,这个等式也出现在伪代码353中。非限制性地,先前计算ui的第i个中间结果可由一个或多个先前指令按照程序顺序作为采用蒙哥马利乘法累加部分乘积指令508的算法的组成部分来计算。[0087]各种不同类型的存储位置可选地可用于至少一个存储位置522。适当存储位置的示例包含但不限于存储器中的一个或多个存储位置、处理器的一个或多个寄存器例如标量和或向量寄存器)、处理器的一个或多个专用存储位置等以及它们的各种组合。这些存储位置可由指令按照本文别的地方所公开的各种方式来指示。[0088]再次参照图5,运行单元520与解码单元518耦合。运行单元还与至少一个存储位置522耦合,以接收源蒙哥马利乘法累加部分乘积A、第二整数Y、模数N、第一整数x[i]的第i部分以及先前计算ui的第i个中间结果。这些的每个可表示蒙哥马利乘法累加部分乘积指令508的源操作数。运行单元可响应于和或因蒙哥马利乘法指令例如,响应于一个或多个指令或者从指令所解码的控制信号和或响应于指令被解码和或响应于指令被提供给解码器而可操作以生成并且将蒙哥马利乘法的第i次迭代的结果所更新蒙哥马利乘法累加部分乘积A570存储在由蒙哥马利乘法指令所指示的目标存储位置中。[0089]在一些实施例中,结果所更新蒙哥马利乘法累加部分乘积A可按照下式6的赋值来计算和或可等效于下式6的赋值:A二A+x[i]*Y+ui*N264等式6注意,每个运算、例如x[i]*Y可涉及多个64位乘累加运算。例如,如果Y为2048位操作数,则可存在32个这类操作。[0090]运行单元和或处理器可包含特定或具体逻辑例如晶体管、集成电路系统或者潜在地与固件例如非易失性存储器中存储的指令相结合的其他硬件),其操作以执行蒙哥马利乘法累加部分乘积指令508,和或响应于和或因蒙哥马利乘法累加部分乘积指令508而存储结果所更新蒙哥马利乘法累加部分乘积A570。在一些实施例中,运行单元可包含用来接收源操作数的一个或多个输入结构(例如端口、互连或接口)、操作以执行蒙哥马利乘法累加部分乘积运算与其耦合以接收和处理源操作数并且生成结果所更新蒙哥马利乘法累加部分乘积A的逻辑以及与其耦合以输出结果所更新蒙哥马利乘法累加部分乘积A的一个或多个输出结构例如端口、互连或接口)。在一些实施例中,操作以执行蒙哥马利乘法累加部分乘积运算的逻辑可包含算术逻辑单元ALU可选地包含乘加逻辑和移位逻辑)以及用来控制ALU以执行该运算的蒙哥马利乘法累加部分乘积运算控制逻辑。作为示例,控制逻辑可包含微码引擎、微序列状态机等或者其组合。在一些实施例中,运行单元520可选地可包含与对图3所示和所述逻辑类似的逻辑,只不过控制逻辑452将操作以控制蒙哥马利乘法累加部分乘积运算而不是完全蒙哥马利乘法运算。[0091]在一些实施例中,源、先前蒙哥马利乘法累加部分乘积A、第二整数Y和模数N可选地各可存储在存储器的一个或多个存储位置中,但是这不被要求。蒙哥马利乘法累加部分乘积指令可以操作以如本文别的地方所述的那样指示存储器中的存储位置。例如,在一个具体实施例中,这些源操作数的每个可选地可彼此相邻或毗连地存储在存储器的相同单个存储位置中,但是本发明的范围并不局限于此。这些操作数可按照各种不同顺序或布置例如比如AYN、NAY、NYA、YAN等来存储。备选地,存储器中的两个或更多存储位置可选地可用于这些源操作数。将操作数存储在存储器的一个或多个存储位置中可趋向于是有益的,特别是当操作数比处理器的最宽向量寄存器要宽时。在其他实施例中,处理器的向量寄存器或者其他存储位置可选地可用于这些源操作数的一个或多个。特别是当处理器具有宽向量寄存器其至少与操作数例如模数N的位的宽度同样宽时,这种向量寄存器的使用可趋向于是有益的。[0092]在一些实施例中,第一整数x[i]的第i部分可选地可存储在标量寄存器例如32位或64位通用寄存器)中,其可由蒙哥马利乘法累加部分乘积指令显式指定或者隐式指示。类似地,在一些实施例中,先前计算ui的第i个中间结果可选地可存储在标量寄存器例如32位或64位通用寄存器中,其可由蒙哥马利乘法累加部分乘积指令显式指定或者隐式指示。这些参数是比较小的,并且趋向于完全适合于处理器的寄存器中的存储。作为另一个选项,在其他实施例中,这些源操作数的任一个或两者可选地可存储在存储器的存储位置或者另一个存储位置中。在一些实施例中,这些源操作数的任一个或两者可选地可随源、先前蒙哥马利乘积累加部分乘积A、第二整数〇〇和模数〇〇的一个或多个或者可选的全部一起存储在存储器位置中。[0093]称作ACCM0NTMUL64的M位字大小架构或模式的适当蒙哥马利乘法累加部分乘积指令的一个具体示例实施例通过以下伪代码图示。[0094]ACCM0NTMUL64{OPERANDS:SrcDstR164位寄存器R1具有A,Y,N和结果的存储器位置的地址Src2R264位寄存器R2具有x[i]Src3R364位寄存器R3具有uiimm8imm8指示64位字的数量OPERATION:AIIYIIN}=SrcDst从存储器访问A,y,N,可选地提高存储器访问故障raisefaultifNisntodd这是可选的s=imm8+l模数中的64位字的数量例如,大小N=s*64位)A=A+x[i]*Y+ui*N264SrcDst=A在源A之上存储结果A例如,存储器具有{A||Y||M}ACCM0NTMUL64指示寄存器R1例如64位通用寄存器),其用来存储最初用于源先前蒙哥马利乘法累加部分乘积A、第二整数00和模数0^并且后来用来存储结果所更新蒙哥马利乘法累加部分乘积A的存储器中的源目标存储位置的存储器地址信息。结果所更新部分乘积A在源先前部分乘积A之上写入SrcDst中。ACCMONTMUL64还指示用来存储第一整数x[i]的第i个64位字的寄存器R2例如64位通用寄存器)以及用来存储先前计算ui的第i个中间结果的第三寄存器R3例如64位通用寄存器)。[0095]用来提供64位字的数量的立即数隐式地用来计算例如ui*N的项,其中ui是单个M位操作数,而N包含64位部分的数量。与N的各个部分的迭代64位乘法可采用ui参数执行。同样,迭代乘法可对Y的64位部分的数量执行,以执行x[i]*Y。[0096]称作ACCMONTMUL32的32位字大小架构或模式的适当蒙哥马利乘法指令的另一个类似具体示例实施例通过以下伪代码图示。[0097]ACCM0NTMUL32{OPERANDS:SrcDstR132位寄存器R1具有A,Y,N和结果的存储器位置的地址Src2R232位寄存器R2具有x[i]Src3R332位寄存器R3具有uiimm8imra8指不32位字的数量OPERATION:{A||Y||N}=SrcDst从存储器访问A,Y,N,可选地提高存储器访问故障raisefaultifNisn5todd这是可选的s=imm8+l模数中的32位字的数量例如,大小N=s*32位)A=A+x[i]*Y+ui*N232SrcDst=A在源A之上存储结果A例如,存储器具有{A||Y||N}}ACCM0NTMUL32与ACCM0NTMUL64类似,并且以上对ACCM0NTMUL64的论述一般适用,除了32位代替64位字大小之外。代替64位通用寄存器,32位通用寄存器可用于R1和R2。[0098]要领会,ACCM0NTMUL632和ACCM0NTMUL64只是两个说明性示例实施例,并且还考虑许多变化。例如,在其他实施例中,x[i]和ui的任一个或两者可选地可随A、Y和N的一个或多个一起例如作为{A||Y||N||ui||x[i]}存储在存储器位置中。作为另一个示例,在其他实施例中,代替使用SrcDst,单独存储位置可选地可用来存储结果所更新蒙哥马利乘法累加部分乘积A。而且,X、Y和N可选地可按照各种其他顺序存储。更一般来说,向量寄存器或其他存储位置可选地可用于A、Y、N、x[i]和ui操作数的一个或多个。t〇〇99]在一些实施例中,代替蒙哥马利乘法指令和或蒙哥马利乘法累加部分乘积指令直接提供给解码单元,可选地可使用指令模拟器、转化器、变形器、解释器或其他指令转换模块。各种类型的指令转换模块可通过软件、硬件、固件或其何组合来实现。在一些实施例中,指令转换模块可位于处理器外部,例如比如位于单独管芯上和或存储器例如如静态、动态或运行时模拟模块)中。在其他实施例中,指令转换模块可选地可位于处理器上。作为示例,指令转换模块可接收可属于第一指令集的蒙哥马利乘法指令或蒙哥马利乘法累加部分乘积指令,并且可对它进行模拟、转化、变形、解释或者以其他方式将它转换为一个或多个对应中间指令或控制信号,其可属于第二不同指令集。第二指令集的一个或多个中间指令或控制信号可提供给解码单元例如解码单元218,其可将中间指令或控制信号解码为由处理器的本机硬件例如一个或多个运行单元可运行的一个或多个较低级指令或控制信号。[0100]图6是适合于实现本发明的实施例的处理器671的详细示例实施例的框图。处理器包含至少一个核602,其能够执行对支持或加速蒙哥马利乘法是有用的指令例如蒙哥马利乘法指令206和或蒙哥马利乘法累加部分乘积指令5〇8的实施例。核可选地可包含分支预测单元672,其操作以预测程序流程中的分支。分支预测单元与可选指令预取单元6乃親合。指令预取单元可以操作以从存储器例如经过可选存储器单元68〇来预取或者以其他方式接收指令,包含用来支持蒙哥马利乘法的指令。可选1级L1指令高速缓存单元675和可选指令转换后备缓冲器TLB价4与指令预取单元耦合。L1指令高速缓存单元可以操作以相千地缓存或者以其他方式存储指令,包含用来支持蒙哥马利乘法的指令。指令TLB可以操作以存储指令包含用来支持蒙哥马利乘法的指令的逻辑到物理地址转换。处理器还包含可选L1数据高速缓存单元681,其用来缓存或存储与指令在一些实施例中包含用来支持蒙哥马利乘法的指令)的操作数对应的数据。处理器可选地还包含2级L2高速缓存单元681和可选数据TLB682丄2高速缓存单元可以操作以相干地缓存数据和指令,包含用来支持蒙哥马利乘法的指令。L2高速缓存单元可专用于核,或者由核和其他可选核未示出)共享。可选指令取单元676与L1指令高速缓存单元、L2高速缓存单元和解码单元618耦合。指令取单元可取或者以其他方式接收包含蒙哥马利乘法指令的指令例如从L1指令高速缓存单元或者L2高速缓存单元),并且可向解码单元提供指令。解码单元可对指令包含用来支持蒙哥马利乘法的指令进行解码,如本文别的地方所述。解码单元可选地可与在本文别的地方所公开的解码单元例如解码单元218和或解码单元518是类似或相同的。[0101]处理器还包含一个或多个寄存器堆单元656。(一个或多个寄存器堆单元可包含各种不同可能类型(例如比如向量寄存器、标量或通用寄存器、状态或标志寄存器、控制或配置寄存器及其组合)的寄存器的一个或多个集合。在其中核可选地支持寄存器重命名的实施例中,核可选地还可包含与(一个或多个寄存器堆单元所耦合的寄存器重命名分配器单元677,其用来分配资源,并且对寄存器例如在一些实施例中由用来支持蒙哥马利乘法的指令所使用的寄存器执行寄存器重命名。在可选地支持无序0〇0运行这不被要求)的一些实施例中,核可选地可包含一个或多个调度器单元678,其与解码单元、重命名分配器单元和一个或多个运行单元620耦合。(一个或多个调度器单元可调度与解码指令关联的一个或多个操作包含从用来支持蒙哥马利乘法的指令所解码的一个或多个操作),以供在运行单元上的运行。核可选地可具有多种不同类型的运行单元,例如比如整数运行单元、浮点运行单元、向量运行单元、一个或多个存储器访问单元679等。在一些实施例中,运行单元的一个或多个包含用来支持蒙哥马利乘法684的逻辑例如用来执行指令206和或指令508的逻辑)。对于0〇0运行,核可选地可包含引退或提交单元684,其与运行单元、(一个或多个寄存器堆单元和重命名分配器单元耦合。引退或提交单元可以操作以引退或提交指令。[0102]要领会,这只是适当处理器的一个说明性示例。在备选实施例中,处理器可包含更少或更多组件,其可按照与通过足以允许它们按预期的那样进行操作的各种方式所示的方式类似或不同方式来耦合或布置。可选地可包含的其他组件的示例包括一个或多个重排序缓冲器R0B、地址生成单元、调试单元、性能监测单元、功率管理单元。此外,处理器可选地可具有多个核例如至少2个、至少4个、至少8个、至少24个、至少48个等)。核可以是同构的或者异构的。[0103]本文所公开的处理器可包含在不同类型的电子装置中。适当类型的电子装置的示例包含台式计算机、膝上型计算机、笔记本计算机和相似计算机系统。这类计算机系统通常包含存储器例如比如动态随机存取存储器和或闪速存储器)以及非易失性数据存储装置例如比如硬盘驱动)。通常,这类计算机系统还具有用来提供网络连接的网络控制器、用来提供音频输入和或输出的音频控制器和监视器或显示器例如液晶显示器)以及一个或多个输入输出装置例如键盘和或鼠标和或轨迹垫)。通常,这类计算机系统具有一个或多个串行扩展端口(例如通用串行总线US®,例如以允许外部外围装置被附连。一些这类计算机系统还具有视频捕获装置。在一些情况下,特别是在便携计算机系统的情况下,它们可具有无线收发器。适当计算机系统的其他示例包含但不限于智能电话、机顶盒等。[0104]适当计算机系统或电子装置的又一些示例包含但不限于服务器例如万维网服务器、云服务器和媒体服务器)、网络元件例如交换机和路由器)、存储服务器、系统和设备、安全设备等。为了进一步图示某些概念,将结合图7示出和描述适合于这类实施例的可能计算机系统的详细说明性示例实施例。[0105]图7是计算机系统700的详细说明性示例实施例的框图,其中计算机系统700包含芯片上系统SoCm-l的详细说明性示例实施例,SoC771-1包含一个或多个核702,核702具有指令集,指令集包含用来支持蒙哥马利乘法的指令例如指令206和或指令508。其他实施例涉及在它包含于计算机系统之前的单独的SoGSoC的所有组件可集成或设置于同一芯片、半导体管芯或集成电路上。[0106]SoC771-1包含一个或多个核702。在各个实施例中,可存在单个核、至少2个核、至少4个核、至少8个核、至少M个核、至少48个核、至少56个核或者一些其他数量的核。在一些实施例中,核的至少一个可包含解码器和运行单元,其用来对用来支持蒙哥马利乘法的指令例如指令206和或指令508进行解码和执行。每个核可选地可与处理器202和或处理器402和或处理器502和或核602是相同、类似或者不同的。[0107]—个或多个核与高速缓存相干结构785耦合。共享2级(L2高速缓存783也与高速缓存相干结构耦合。在一些实施例中,每个核可具有集成1级L1高速缓存未示出)。共享L2高速缓存可由一个或多个核的每个来共享例如用来为其存储数据。[0108]SoC的一个或多个存储器控制器78〇经过高速缓存相干结构和L2高速缓存与一个或多个核耦合。在一些实施例中,一个或多个存储器控制器可选地可包含一个或多个双倍数据速率同步动态随机访问存储器DDRSDRAM存储器控制器例如DDR3SDRAM兼容存储器控制器和或DDR4SDRAM兼容存储器控制器)。计算机系统的至少一个存储器760与一个或多个存储器控制器耦合。在一些实施例中,至少一个存储器可包含至少一个DDRSDRAM,例如DDR3SDRAM和或DDR4SDRAM例如双列直插存储器模块DIMM。备选地,可选地可使用其他类型的存储器和存储器控制器。[0109]SoC的可选高速缓存相干互连7洲可与高速缓存相干结构耦合。在一些实施例中,计算机系统的第二SoC771-2可选地可与高速缓存相千互连786耦合。第二SoC可选地可与SoC771-1是类似或相同的。高速缓存相千互连和高速缓存相干结构可以操作以保持S〇C的高速缓存之间的高速缓存相干性。[0110]在一些实施例中,一个或多个协处理器787可选地可经过高速缓存相干结构与一个或多个核耦合。各个不同实施例的适当协处理器的示例包含但不限于安全协处理器、密码协处理器(例如密码引擎)、存储协处理器、网络协处理器、分组协处理器例如分组处理引擎或深层分组检查加速器)、数据压缩和或解压缩协处理器、正则表达式匹配regex引擎及其组合。在一些实施例中,安全协处理器和或密码协处理器可选地可以能够执行如本文所公开的用来支持蒙哥马利乘法的指令的至少一个,但是这不被要求。[0111]输入输出(IO网络控制器788可经过高速缓存相干结构与一个或多个核耦合。如所示,IO网络控制器可与各种其他组件或装置耦合,并且可以操作以经过中间高速缓存相干结构将这些组件或装置的每个与一个或多个核耦合。[0112]在一些实施例中,可选以太网结构789例如以太网交换机和一个或多个可选以太网媒体访问控制器MAC或其他控制器790可选地可与IO网络控制器耦合。在这类实施例中,计算机系统的一个或多个以太网电缆791可耦合一个或多个以太网MAC或其他控制器。在各个实施例中,一个或多个以太网MAC或其他控制器可以操作以支持1〇千兆位以太网、40千兆位以太网、1〇〇千兆位以太网或者其组合。以太网电缆可以操作以耦合到各种存储装置、网络等。[0113]在一些实施例中,一个或多个可选串行高级技术附件SATA控制器792可选地可与IO网络控制器耦合。在这类实施例中,计算机系统的一个或多个电缆和一个或多个大容量存储装置793可耦合一个或多个SATA控制器。适当大容量存储装置的示例包含但不限于一个或多个硬盘驱动、光驱、固态驱动等及其组合。[0114]在一些实施例中,一个或多个可选外设组件互连ExpressPCIe控制器795可选地可与IO网络控制器耦合。在一些实施例中,PCIe控制器可选地可以是pciExpress3.〇基础规范修订3.0相容compliant和或PCIExpress4.0相容。在这类实施例中,计算机系^的一个或多个PCIe总线或其他互连可与一个或多个PCle控制器耦合。PCIe互连可提供串行扩展互连,以允许计算机系统的各种不同类型的外设组件或装置的一个或多个与一个或多个PCIe控制器耦合。在一些实施例中,计算机系统的可选基带管理控制器BMC797可选地可与一个或多个PCIe控制器耦合。在其他实施例中,BMC可选地可包含在s〇c上。[0115]在一些实施例中,一个或多个独立磁盘冗余阵列RAID控制器798可选地可与IO网络控制器稱合。在这类实施例中,计算机系统的一个或多个存储装置799可稱合一个或多个RAID控制器。适当存储装置的示例包含但不限于一个或多个硬盘驱动、固态驱动、存^阵列或组合。[0116]在一些实施例中,一个或多个其他组件7〇1可选地可与1〇网络控制器耦合。在各个实施例中,这类其他组件可选地可包含直接存储器访问(DMA控制器、通用串行总线USB3.0相容控制器、通用输入输出GPI0控制器、集成电路间(Pc控制器或者其组合。[0117]图8是用来从一个或多个核803-1、803-N卸载用来支持蒙哥马利乘法的指令例如指令206和或指令508的执行的密码处理器802的示例实施例的框图。密码处理器与一个或多个核親合。在一些实施例中,如果存在多于一个核,则密码处理器可专用于对应核心或者由核的两个或更多或者全部所共享。核可以是单线程或者多线程的。密码处理器可用作密码协处理器、密码卸载引擎等,以便从核的一个或多个卸载与执行蒙哥马利乘法关联的运算。[0118]第一核803-1可向密码处理器提供控制805例如一个或多个信号)。控制可广义地表示密码处理器执行用来支持蒙哥马利乘法的指令的请求、指示、命令等。在一些实施例中,这可包含向密码处理器的可选接口807提供信号、值等。作为示例,表示执行指令的请求的值可存储在控制字队列、控制寄存器或其他存储位置中。在所图示实施例中,接口是密码处理器的组成部分,但是也有可能使控制字队列、其他寄存器或者其他接口存储在存储器中。备选地,控制可包含将用来支持蒙哥马利乘法的指令转发到密码处理器。[0119]密码处理器包含解码单元818。解码单元可以操作以对用来支持蒙哥马利乘法的所转发指令进行解码,或者可以操作以检验或检查接口807的内容例如控制字队列、控制寄存器等),以确定要执行用来支持蒙哥马利乘法的运算。密码处理器还包含与解码单元耦合的运行单元820。在一些实施例中,运行单元包含用来支持蒙哥马利乘法的逻辑例如用来执行蒙哥马利乘法指令的逻辑和或用来执行蒙哥马利乘法累加部分乘积指令的逻辑)。在一些实施例中,运行单元可选地可与运行单元220和或520类似或相同,除了可能对于与其有关的方面包含在密码处理器中之外。运行单元可选地可具有其他密码逻辑809,例如比如用来执行一个或多个密码例如加密和或解密)算法的逻辑、用来执行一个或多个哈希算法的逻辑等。[0120]密码处理器还包含直接存储器访问(DMA单元81UDMA单元可以操作以例如比如从一级或多级高速缓存、存储器等访问存储器子系统883中的数据。在一些实施例中,DMA单元可从存储器子系统中访问源操作数,并且代表运行单元将结果操作数存储到存储器子系统。在一些实施例中,DMA单元可由对其执行操作例如作为控制805的组成部分)的一个或多个核来配置或控制。密码处理器可有效地确定和提供请求核的结果813。在一些情况下,这些结果可以没有实际上传送或传递给核,而是例如可存储在核可访问的位置例如存储器子系统883中。[0121]在各个不同实施例中,密码处理器802可比较靠近核或者比较远离核。在一些实施例中,密码处理器可选地可处于靠近一个或多个核的处理器的非核部分中。在其他实施例中,密码处理器可选地可处于具有核的SoC上,但是可远离核。在又一些实施例中,密码处理器可选地可处于与核分开的芯片上。本文所公开的蒙哥马利乘法累加部分乘积指令例如指令5〇8—般仅执行本文所公开蒙哥马利乘法指令例如指令206的运算的子集,并且一般预计具有更短运行等待时间。这些更短等待时间可趋向于使它对于要在核内或者比较靠近核例如在同一芯片上的非核中)执行这些指令是比较更为有益的,以便帮助减少访问硬件数据路径的等待时间。蒙哥马利乘法指令可选地还可在核内或者比较靠近核(例如在同一芯片上的非核中)执行,但是也可趋向于更服从被卸载到协处理器、卸载引擎等,其可在同一SoC上比较远离或在单独芯片上。但是,本发明的范围并不局限于这种逻辑的任何已知放置。[0122]对图3、图4、图6、图7和图8的任何所述的组件、特征和细节可选地也可适用于图2。对图6、图7和图8的任何所述的组件、特征和细节可选地也可适用于图5。对本文所公开处理器(例如处理器2〇2和或处理器502的任何所述的组件、特征和细节可选地可适用于本文所述方法其在实施例中可选地可由和或采用这类处理器来执行)的任何。本文在实施例中所述处理器(例如处理器202和或处理器502的任何可选地可包含在本文所公开系统例如计算机系统7〇0、台式计算机等的任何中。[0123]在权利要求书中,本文所公开的处理器组件可说成“将要”、“操作以”、“配置成”、“能够”、“能”执行操作等。例如,解码器可“将要”对指令进行解码,运行单元可“将要”存储结果等。要理解,这些表达并不是暗示处理器组件在操作或使用中,而是表示处理器组件在它们在操作中时能够做什么,但是在设备权利要求中,这些处理器组件不在操作中。[0124]在本描述和权利要求书中,可使用术语“耦合”和或“连接”连同其派生。这些术语不是要作为彼此的同义词。在实施例中,“连接”而是可用来指示两个或更多元件彼此直接物理和或电接触。“耦合”可意味着两个或更多元件彼此直接物理和或电接触。但是,“耦合”也可意味着两个或更多元件不是彼此直接接触,但是仍然彼此配合或交互。例如,运行单元可经过一个或多个中间组件与寄存器和或解码单元耦合。附图中,箭头用来示出连接和耦合。[0125]可使用术语“和或”。如本文所使用的,术语“和或”意味着一个或另一个或者两者例如A和或B意味着A或B或者A和B两者)。[0126]在以上描述中,提出了许多具体细节,以便提供对实施例的透彻理解。但是,在没有这些具体细节的一些的情况下也可实施其他实施例。本发明的范围不是通过以上提供的具体示例来确定,而是仅通过以下权利要求书来确定。在其他情况下,众所周知的电路、结构、装置和操作以框图形式和或没有详细地示出,以免模糊对本描述的理解。在认为适当的情况下,附图中重复参考数字或者参考数字的末端部分,以指示可选地可具有相同或类似特性的对应或相似的元件,除非另有指定或明确显然的。[0127]某些操作可由硬件组件来执行,或者可体现在机器可运行或电路可运行指令中,这些指令可用来使和或引起采用指令所编程的电路或硬件执行操作。操作还可以可选地通过硬件和软件的组合来执行。处理器、机器、电路或硬件可包含特定或具体电路系统或其他逻辑例如潜在地与固件和或软件相结合的硬件),其操作以运行和或处理指令,并且响应于指令而存储结果。[0128]一些实施例J包含制造物品(例如计算机程序产品),其包含机器可读媒介。媒介可包含提供例如存储米取由机器可读的形式的信息的机制。机器可读媒介可提供或者在其上存储了指令或指令序列,其如果和或在由机器运行时操作以使机器执行和或引起机器执行本文所公开的一个或多个操作、方法或技术。[0129]在一些实施例中,机器可读媒介可包含有形和或非暂时机器可读存储媒介。例如,非暂时机器可读存储媒介可包含软盘、光存储媒介、光盘、光数据存储装置、CD_R〇M、磁盘、磁光盘、只读存储器ROM、可编程ROMPR0M、可擦且可编程ROM®PR〇M、电可擦且可编程R0MEEPR0M、随机存取存储器_、静态RAMSRAM、动态RAMDRA1、闪速存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储装置、非暂时存储器、非暂时数据存储装置等。非暂时机器可读存储媒介不是由暂时传播信号来组成。在一些实施例中,存储媒介可包含有形媒介,其包含固态物质或材料,例如比如半导体材料、相变材料、磁性固体材料、固体数据存储材料等。备选地,可选地可使用非有形暂时计算机可读传输媒体,例如比如电、光、声或其他形式的传播信号一例如载波、红外信号和数字信号。1〇13〇]、,适当机器的示例包含但不限于通用处理器、专用处理器、数字逻辑电路、集成电路等。适当机器的又一些示例包含计算机系统或其他电子装置,其包含处理器、数字逻辑电路或集成电路。这类计算机系统和电子装置的示例包含但不限于台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络装置例如路由器和交换机)、移动因特网装置MID、媒体播放器、智能电视机、上网机、机顶盒和视频游戏控制器。[0131]例如,本说明书中通篇提到“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”指示特定特征可包含在本发明的实践中,但是不一定要求这样。类似地,在本描述中,各种特征有时在单个实施例、附图或者其描述中集中在一起,以用于简化本公开的目的,并且帮助理解各个发明方面。但是,本公开的这种方法不应当被理解为反映本发明要求超过各权利要求中明确描述的特征的意图。如以下权利要求所反映的那样,发明方面而是在于少于单个所公开实施例的全部特征。因此,接着详细描述的权利要求书由此明确结合到本详细描述中,其中各权利要求将其本身依赖为本发明的单独实施例。[0132]示例实施例以下示例涉及另外实施例。示例中的具体细节可在一个或多个实施例中的任何位置使用。[0133]示例1是处理器或其他设备,其包含多个寄存器以用来及对指令进行解码的解码单元。指令用来指示要存储第一整数、第二整数和模数的至少一个存储位置。处理器或设备还包含运行单元,其与解码单元耦合并且与多个寄存器耦合。运行单元响应于指令而要将与第一整数、第二整数和模数对应的蒙哥马利乘法乘积存储在目标存储位置中。[0134]示例2包含示例1所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要指示多个寄存器的寄存器,寄存器要存储存储器地址信息,以识别存储器中要存储第一整数和第二整数的至少一个的存储位置。[0135]示例3包含示例2所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要隐式地指示目标存储位置要是存储器中的存储位置,在所述目标存储位置处要存储蒙哥马利乘法乘积。而且,可选地,其中运行单元响应于指令而在第一整数和第二整数的所述整数之上存储蒙哥马利乘法乘积。[0136]示例4包含示例2至3中的任一项所述的处理器或其他设备,其中第一整数、第二整数和模数将要存储在存储器的存储位置中。[0137]示例5包含示例1至4中的任一项所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要指示模数的大小。[0138]示例6包含示例5所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要具有要指示作为固定位长度段的数量的模数的大小的立即数。而且,可选地,其中每个固定位长度段要具有作为8位、16位、32位、64位、128位和256位中的一个的以位为单位的大小。[0139]示例7包含示例5至6中的任一项所述的处理器或其他设备,其中解码单元要对指令进行解码,指令操作以将模数的大小指示为从至少1024位变动到至少8192位。[0140]示例8包含示例7所述的处理器或其他设备,其中解码单元要对指令进行解码,指令操作以将模数的大小指示为变动到至少16384位。一_[0141]示例9包含示例1至8中的任一项所述的处理器或其他设备,其中运行单元响应于指令而要计算第一蒙哥马利乘法常数,其要等于以二的处理器的字大小次方取模的模数的负倒数。而且,可选地,其中运行单元要使用第一蒙哥马利乘法常数来计算蒙哥马利乘法乘积。[0142]示例1〇包含示例9所述的处理器或其他设备,其中运行单元响应于指令而要尝试以定位处理器的存储位置中的第一蒙哥马利乘法常数。而且,可选地,其中运行单元当第一蒙哥马利乘法常数没有存储在存储位置中时确定计算第一蒙哥马利乘法常数。而且,可选地,其中运行单元在存储位置中存储所计算的第一蒙哥马利乘法常数。[0143]示例11包含示例9至10中的任一项所述的处理器或其他设备,其中解码单元要对指令进行解码,指令对于处理器的字大小是不可知的。[0144]示例12包含示例1至8中的任一项所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要指示要等于以二的处理器的字大小次方取模的模数的负倒数的第一蒙哥马利乘法常数。_[0145]示例13包含示例11所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要指示要存储第一蒙哥马利乘法常数的多个寄存器的寄存器。[0146]示例14包含示例11所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要指示多个寄存器的寄存器,寄存器要存储存储器地址信息,以识别存储器中要存储第一蒙哥马利乘法常数连同第一整数、第二整数和模数的至少一个的存储位置。[0147]示例15包含示例12至14中的任一项所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要具有隐式64位字大小。而且,可选地,其中运行单元要执行具有64位字大小的指令。[0148]示例16包含示例12至14中的任一项所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要具有隐式32位字大小。而且,可选地,其中运行单元要执行具有32位字大小的指令。[0149]示例17包含示例1至16中的任一项所述的处理器或其他设备,其中运行单元响应于指令而要存储要等于以模数对第一和第二整数的乘积除以第二蒙哥马利乘法常数的商取模的蒙哥马利乘法乘积,其中第二蒙哥马利乘法常数要等于以模数取模的2的模数的以位为单位的大小次方。[0150]示例18是一种由处理器所执行的方法。该方法包含在处理器处接收指令。指令指示存储第一整数、第二整数和模数的至少一个存储位置。该方法还包含响应于指令而将与第一整数、第二整数和模数对应的蒙哥马利乘法乘积存储在目标存储位置中。[0151]示例19包含示例18所述的方法,其中所述接收包含接收指令,其指示存储识别存储器中存储第一整数和第二整数的至少一个的存储位置的存储器地址信息的寄存器。而且,可选地,其中指令隐式指示目标存储位置将是存储器中的存储位置,在所述目标存储位置处将要存储蒙哥马利乘法乘积。而且,可选地,其中所述存储包含在第一整数和第二整数的所述整数之上存储蒙哥马利乘法乘积。[0152]示例20包含如示例18至19中的任一项所述的方法,其中所述接收包含接收指示模数的大小的指令。[0153]示例21是一种用来处理指令的计算机系统或其他系统。该系统包含互连、与互连耦合的动态随机存取存储器DRAM以及与互连耦合的处理器。处理器要接收指令,其指示要存储第一整数、第二整数和模数的至少一个存储位置。处理器响应于指令而要将与第一整数、第二整数和模数对应的蒙哥马利乘法乘积存储在目标存储位置中。[0154]示例22包含示例21所述的系统,其中指令要指示等于以二的处理器的字大小次方取模的模数的负倒数的第一蒙哥马利乘法常数。[0155]示例23是一种制造物品,其包含非暂时机器可读存储媒介。非暂时机器可读存储媒介存储包含第一指令的多个指令。第一指令如果由机器运行则使该机器执行包含用来从要由第一指令所指示的至少一个存储位置来访问第一整数、第二整数和模数的操作。操作还包含要将与第一整数、第二整数和模数对应的蒙哥马利乘法乘积存储在第一指令的目标存储位置中。[0156]示例24包含示例23所述的制造物品,第一指令如果由机器运行则使该机器执行包含用来计算第一蒙哥马利乘法常数的操作所述第一蒙哥马利乘法常数要等于以二的处理器的字大小次方取模的模数的负倒数。[0157]示例25是处理器或其他设备,其包含用来对指令进行解码的解码单元。指令用来指示要存储下列项的至少一个存储位置:(a源蒙哥马利乘法累加部分乘积,其对应于就在蒙哥马利乘法的第i次迭代之前的迭代;⑹模数;(c第一整数的第i部分;(d第二整数,具有与第一整数相同的大小;以及e蒙哥马利乘法的第i次迭代的先前计算的中间结果。处理器或其他设备还包含与解码单元耦合的运行单元。运行单元响应于指令而要将蒙哥马利乘法的第i次迭代的结果蒙哥马利乘法累加部分乘积存储在目标存储位置中。[0158]示例26包含示例25所述的处理器或其他设备,其中运行单元响应于指令而存储结果蒙哥马利乘法累加部分乘积,其要等于以二的处理器的字长度次方对源蒙哥马利乘法累加部分乘积加上第二整数和第一整数的第i部分的乘积再加上先前计算的中间结果和模数的乘积的和取模。[0159]示例27包含示例25至26中的任一项所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要指示多个寄存器的寄存器,寄存器要存储存储器地址信息,以识别存储器中要存储源蒙哥马利乘法累加部分乘积的存储位置。[0160]示例28包含示例27所述的处理器或其他设备,其中第二整数和模数也要存储在存储器的存储位置中。[0161]示例29包含示例27至28中的任一项所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要隐式地指示目标存储位置要是存储器中的存储位置,在所述目标存储位置处要存储结果蒙哥马利乘法累加部分乘积。而且,可选地,其中运行单元响应于指令而要在源蒙哥马利乘法累加部分乘积之上存储结果蒙哥马利乘法累加部分乘积。[0162]示例30包含示例25至29中的任一项所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要指示模数的大小。[0163]示例31包含示例30所述的处理器或其他设备,其中解码单元要对指令进行解码,指令操作以将模数的大小指示为从至少1024位变动到至少8192位。[0164]示例32包含示例25至31中的任一项所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要指示要存储第一整数的第i部分的寄存器。[0165]示例33包含示例25至32中的任一项所述的处理器或其他设备,其中解码单元要对指令进行解码,指令要指示要存储蒙哥马利乘法的第i次迭代的先前计算的中间结果的寄存器。[0166]示例M包含示例25至33中的任一项所述的处理器或其他设备,其中蒙哥马利乘法的第i次迭代的先前计算的中间结果要等于以二的处理器的字大小次方对源蒙哥马利乘法累加部分乘积的最低有效部分加上第一整数的第i部分乘以第二整数的最低有效部分再乘以模数的乘积的和取模。[0167]示例35是处理器中包含接收指令的方法。指令指示存储下列项的至少一个存储位置:(a源蒙哥马利乘法累加部分乘积,其对应于就在蒙哥马利乘法的第i次迭代之前的迭代;⑹模数;(c第一整数的第i部分;(d第二整数,具有与第一整数相同的大小;以及e蒙哥马利乘法的第i次迭代的先前计算的中间结果。该方法还包括响应于指令而将蒙哥马利乘法的第i次迭代的结果蒙哥马利乘法累加部分乘积存储在目标存储位置中。[0168]示例36是包含用于接收指令的部件的处理器或其他设备。指令用来指示要存储第一整数、第二整数和模数的至少一个存储位置。该设备还包含用于响应于指令而将与第一整数、第二整数和模数对应的蒙哥马利乘法乘积存储在目标存储位置中的部件。[0169]示例37包含示例1至17中的任一项所述的处理器,还包含用来预测分支的可选分支预测单元以及与分支预测单元所耦合的可选指令预取单元,指令预取单元用来预取包含该指令的指令。处理器可选地还可包含与指令预取单元所耦合的可选1级L1指令高速缓存、用来存储指令的L1指令高速缓存、用来存储数据的可选L1数据高速缓存以及用来存储数据和指令的可选2级(L2高速缓存。处理器可选地还可包含指令取单元,其与解码单元、L1指令高速缓存和L2高速缓存耦合,以便在一些情况下从L1指令高速缓存和L2高速缓存中的一个中取指令,并且向解码单元提供指令。处理器可选地还可包含用来重命名寄存器的寄存器重命名单元、用来调度从指令已经解码以供运行的一个或多个操作的可选调度器以及用来提交指令的运行结果的可选提交单元。[0170]示例38包含芯片上系统,其包含至少一个互连、示例1至17中的任一项所述的与至少一个互连所耦合的处理器、与至少一个互连所耦合的可选2级L2高速缓存、与至少一个互连所耦合的至少一个可选存储器控制器、与至少一个互连所耦合的至少一个可选协处理器、与至少一个互连所耦合的至少一个可选以太网控制器、与至少一个互连所耦合的至少一个可选串行高级技术附件SATA控制器、与至少一个互连所耦合的至少一个可选外设组件互连ExpressPCIe控制器以及与至少一个互连所親合的至少一个可选独立磁盘冗余阵列RAID控制器。[0171]示例39是一种处理器或其他设备,其包含用于执行示例18至20的任一个的方法的部件。[0172]示例40是可选非暂时和或有形机器可读媒介,其可选地存储或者以其他方式提供包含第一指令的指令,第一指令如果和或在由处理器、计算机系统、电子装置其他机器运行时操作以使该机器执行示例18至20中的任一项所述的方法。[0173]示例41是基本上如本文所述的处理器或其他设备。

权利要求:1.一种处理器,包括:多个寄存器;解码单元,用来对指令进行解码,所述指令用来指示要存储第一整数、第二整数和模数的至少一个存储位置;以及运行单元,与所述解码单元耦合并且与所述多个寄存器耦合,所述运行单元响应于所述指令而用来将与所述第一整数、所述第二整数和所述模数对应的蒙哥马利乘法乘积存储在目标存储位置中。2.如权利要求1所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示所述多个寄存器的寄存器,所述寄存器要存储存储器地址信息,以识别存储器中要存储所述第一整数和所述第二整数的至少一个的存储位置。3.如权利要求2所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要隐式指示所述目标存储位置要是所述存储器中的所述存储位置,在所述目标存储位置处要存储所述蒙哥马利乘法乘积,并且其中所述运行单元响应于所述指令而在所述第一整数和所述第二整数的所述整数之上存储所述蒙哥马利乘法乘积。4.如权利要求2所述的处理器,其中,所述第一整数、所述第二整数和所述模数要存储在所述存储器的所述存储位置中。5.如权利要求1所述的处理器,其中,所述解码单元要对要指示所述模数的大小的所述指令进行解码。6.如权利要求5所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要具有要将所述模数的所述大小指示为固定位长度段的数量的立即数,每个固定位长度段要具有作为8位、16位、32位、64位、128位和256位中的一个的以位为单位的大小。7.如权利要求5所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令操作以将所述模数的所述大小指示为从至少1〇24位变动到至少8丨92位。8.如权利要求7所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令操作以将所述模数的所述大小指示为变动到至少16:384位。9.如权利要求1至8中的任一项所述的处理器,其中,所述运行单元响应于所述指令而要:计算第一蒙哥马利乘法常数,其要等于以二的所述处理器的字大小次方取模的所述模数的负倒数;以及使用所述第一蒙哥马利乘法常数来计算所述蒙哥马利乘法乘积。10.如权利要求9所述的处理器,其中,所述运行单元响应于所述指令而要:尝试以定位所述处理器的存储位置中的所述第一蒙哥马利乘法常数;当所述第一蒙哥马利乘法常数没有存储在所述存储位置中时确定以计算所述第一蒙哥马利乘法常数;以及将所计算的第一蒙哥马利乘法常数存储在所述存储位置中。11.如权利要求9所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令对于所述处理器的字大小是不可知的。12.如权利要求1至8中的任一项所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示要等于以二的所述处理器的字大小次方取模的所述模数的负倒数的第一蒙哥马利乘法常数。_13.如权利要求12所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示要存储所述第一蒙哥马利乘法常数的所述多个寄存器的寄存器。_14.如权利要求12所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示所述多个寄存器的寄存器,所述寄存器要存储存储器地址信息,以识别存储器中要存储第一蒙哥马利乘法常数连同所述第一整数、所述第二整数和所述模数的至少一个的存储位置。_15.如权利要求12所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要具有隐式64位字大小,并且其中所述运行单元要执行具有所述64位字大小的所述指令。_16.如权利要求12所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要具有隐式32位字大小,并且其中所述运行单元要执行具有所述32位字大小的所述指令。17.如权利要求1至8中的任一项所述的处理器,其中,所述运行单元响应于所述指令而要存储要等于以所述模数对所述第一和第二整数的乘积除以第二蒙哥马利乘法常数的商取模的所述蒙哥马利乘法乘积,其中所述第二蒙哥马利乘法常数要等于以所述模数对二的所述模数的以位为单位的大小次方取模。18.—种由处理器所执行的方法,包括:在所述处理器处接收指令,所述指令指示存储第一整数、第二整数和模数的至少一个存储位置;以及响应于所述指令而将与所述第一整数、所述第二整数和所述模数对应的蒙哥马利乘法乘积存储在目标存储位置中。19.如权利要求18所述的方法,其中,所述接收包括接收所述指令,所述指令指本存储识别存储器中存储所述第一整数和所述第二整数的至少一个的存储位置的存储器地址信息的寄存器,并且隐式指示所述目标存储位置要是所述存储器中的所述存储位置,在所述目标存储位置处要存储所述蒙哥马利乘法乘积,并且其中所述存储包括在所述第一整数和所述第二整数的所述整数之上存储所述蒙哥马利乘法乘积,以及其中所述接收包括接收指示所述模数的大小的所述指令。20.—种处理器,包括:解码单元,用来对所述指令进行解码,所述指令用来指示要存储下列项的至少一个存储位置:源蒙哥马利乘法累加部分乘积,其对应于就在蒙哥马利乘法的第i次迭代之前的迭代;模数;第一整数的第i部分;第二整数,具有与所述第一整数相同的大小;以及所述蒙哥马利乘法的所述第i次迭代的先前计算的中间结果;以及运行单元,与所述解码单元耦合,所述运行单元响应于所述指令而将所述蒙哥马利乘法的所述第i次迭代的结果蒙哥马利乘法累加部分乘积存储在目标存储位置中。21.如权利要求20所述的处理器,其中,所述运行单元响应于所述指令而要存储所述结果蒙哥马利乘法累加部分乘积,其等于以二的所述处理器的字长度次方对所述源蒙哥马利乘法累加部分乘积加上所述先前计算的所述中间结果和所述模数的乘积再加上所述第一整数的所述第i部分和所述第二整数的乘积的和取模。22.如权利要求20所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示所述多个寄存器的寄存器,所述寄存器要存储存储器地址信息,以识别存储器中要存储所述源蒙哥马利乘法累加部分乘积的存储位置。23.如权利要求22所述的处理器,其中,所述第二整数和所述模数也要存储在所述存储器的所述存储位置中。24.如权利要求22所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要隐式指示所述目标存储位置要是所述存储器中的所述存储位置,在所述目标存储位置处要存储所述结果蒙哥马利乘法累加部分乘积,并且其中所述运行单元响应于所述指令而在所述源蒙哥马利乘法累加部分乘积之上存储所述结果蒙哥马利乘法累加部分乘积。25.如权利要求20至24中的任一项所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示所述模数的大小。26.如权利要求20所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令操作以将所述模数的所述大小指示为从至少1024位变动到至少8192位。27.如权利要求20至24中的任一项所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示要存储所述第一整数的所述第i部分的寄存器。28.如权利要求20至24中的任一项所述的处理器,其中,所述解码单元要对所述指令进行解码,所述指令要指示要存储所述蒙哥马利乘法的所述第i次迭代的所述先前计算的中间结果的寄存器。29.如权利要求20至24中的任一项所述的处理器,其中,所述蒙哥马利乘法的所述第i次迭代的所述先前计算的中间结果要等于以二的所述处理器的字大小次方对所述源蒙哥马利乘法累加部分乘积的最低有效部分加上第一整数的所述第i部分乘以所述第二整数的最低有效部分再乘以所述模数的乘积的和取模。30.—种处理器,包括:用于接收指令的部件,所述指令要指示要存储第一整数、第二整数和模数的至少一个存储位置;以及用于响应于所述指令而将与所述第一整数、所述第二整数和所述模数对应的蒙哥马利乘法乘积存储在目标存储位置中的部件。31.—种机器可读媒介,其提供包含第一指令的指令,所述第一指令如果由机器执行则操作以使所述机器执行如权利要求18至19中的任一项所述的方法。32.—种电子装置,包括:互连;如权利要求丨至8中的任一项所述的与所述互连所耦合的所述处理器;以及与所述互连所耦合的动态随机存取存储器D_。

百度查询: 英特尔公司 蒙哥马利乘法处理器、方法、系统和指令

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。