CN105814536A - Rsa算法加速处理器、方法、系统以及指令 - Google Patents

Rsa算法加速处理器、方法、系统以及指令 Download PDF

Info

Publication number
CN105814536A
CN105814536A CN201380081286.4A CN201380081286A CN105814536A CN 105814536 A CN105814536 A CN 105814536A CN 201380081286 A CN201380081286 A CN 201380081286A CN 105814536 A CN105814536 A CN 105814536A
Authority
CN
China
Prior art keywords
instruction
place value
processor
potential source
operand
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.)
Pending
Application number
CN201380081286.4A
Other languages
English (en)
Inventor
Y·陆
X·孙
N·S·乔
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN105814536A publication Critical patent/CN105814536A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • 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/544Methods 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 for evaluating functions by calculation
    • 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/722Modular multiplication
    • 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/723Modular exponentiation
    • 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
    • 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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • G06F2211/008Public Key, Asymmetric Key, Asymmetric Encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

处理器包括对指令译码的译码单元。所述指令包含具有第一64位值的第一64位源操作数,指示具有第二64位值的第二64位源操作数,指示具有第三64位值的第三64位源操作数,以及指示具有第四64位值的第四64位源操作数。执行单元与译码单元耦合。执行单元响应于指令而可操作以存储结果。所述结果包含第一64位值乘以第二64位值加上第三64位值加上第四64位值。执行单元可以将结果的64位最低有效半数存储在由指令指示的第一64位目的地操作数中,并且将结果的64位最高有效半数存储在由指令指示的第二64位目的地操作数中。

Description

RSA算法加速处理器、方法、系统以及指令
技术领域
本文描述的实施例一般涉及处理器。特别地,本文描述的实施例一般涉及执行加速密码算法的指令的处理器。
背景技术
RSA(RonRivest,AdiShamir和LeonardAdleman)是一种公知且广泛使用的公钥密码算法。RSA算法由密钥生成、加密和解密构成。RSA基于包含RSA公钥和RSA私钥的RSA密钥对。RSA公钥可为公共所知(例如,被任何人)并且可用于加密消息。RSA私钥用于对消息解密。RSA私钥不应为公共所知,而是保密或者仅为那些意在解密加密的消息的人预留。在高层次上,RSA算法基于大整数作为因子的推定难度。RSA公钥通常包括两个大的素数和辅助值的乘积。素数因子保密且用于解密加密的消息。由RSA算法提供的安全性基于如下假设:借助公钥加密的消息仅能够通过利用私钥来可行地和/或在合理量的时间内被解密。如果需要,关于RSA算法的进一步的细节可从如下获得:RequestforComments3447,Public-KeyCryptographyStandards(PKCS)#1:RSACryptographySpecificationsVersion2.1,作者J.Jonsson和B.KalinskiofRSALaboratories,2003年2月。如果需要,关于RSA算法的进一步的细节可从美国专利4,405,829获得。然而要理解本文公开的发明的实施例,不要求RSA算法的详细理解。
如上所述,RSA算法是广泛使用的公钥密码算法。因此,多年来已经花费了大量的努力来提高实现RSA算法的速度和效率。这是通过硬件和软件两个方面来完成的。一种更常见的实现RSA算法的方式是用OpenSSL库。OpenSSL库是开源软件库,其支持包含RSA算法在内的各种密码算法。然而,即使是努力提高实现RSA算法的速度和效率,其实现经常仍趋于相对计算密集。因此,进一步的提高实现RSA算法的速度和/或效率的方法将是有益的。
附图说明
通过参考用于说明实施例的下面的描述和附图,可以最好地理解本发明。在附图中:
图1是可操作以执行RSA加速指令的实施例的处理器的实施例的框图。
图2是处理RSA加速指令的实施例的方法的实施例的流程框图。
图3是用于执行单元的实施例的微架构的示例性实施例的框图。
图4示出了表示RSA加速指令的示例性实施例的操作的伪码。
图5是适合的指令格式的示例性实施例的框图。
图6示出适合的64位通用寄存器组的示例性实施例。
图7A是示出根据本发明的实施例的示范性的有序流水线和示范性的寄存器重命名、无序发布/执行流水线的框图。
图7B是示出根据本发明的实施例的包含在处理器中的有序架构核的示范性实施例以及示范性的寄存器重命名、无序发布/执行架构核的框图。
图8A是根据本方面的实施例的单处理器核以及其与片上互连网络以及与其级别2(L2)高速缓存的本地子集804的连接的框图。
图8B是根据本发明的实施例的图8A中的处理器核的部分的扩展图。
图9是根据本发明的实施例可以具有多于一个核,可以具有集成式存储器控制器并且可以具有集成图形的处理器的框图。
图10示出的是根据本发明的一个实施例的系统的框图。
图11示出的是根据本发明的实施例的第一更具体示范性系统的框图。
图12示出的是根据本发明的实施例的第二更具体示范性系统的框图。
图13示出的是根据本发明的实施例的SoC的框图。
图14是根据本发明的实施例对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文公开了RSA加速指令、执行RSA加速指令的处理器、当处理或执行RSA加速指令时由处理器执行的方法以及包含处理或执行RSA加速指令的一个或多个处理器的系统。在下面的说明中,阐述了若干具体细节(例如,具体的指令操作、数据格式、处理器配置、微架构细节、操作顺序等)。然而,实施例可在没有这些具体细节的情况下实施。在其它实例中,公知的电路、结构和技术没有被详细示出以免混淆对描述的理解。
已经分析了使用OpenSSL库来实现RSA算法。在该分析过程中,VTuneTM分析器已经用于利用基准工作负荷执行应用剖析类型的分析。分析包括识别消耗总执行时间的最大相对比例的RSA算法的OpenSSL库实现的特定函数或部分。这些函数经常称为“热函数”。RSA算法的OpenSSL实现中的一个特定的“热函数”,名称是bn_mul_mont,被发现是最耗时的函数。另外,构成热函数bn_mul_mont的指令也被分析。发现这些指令的子集单独负责总执行时间的相对大的比例。换言之,在热函数bn_mul_mont内的代码的特定子集代表了相对“热码”,其消耗总执行时间的相对大的比例。
表1是列出来自已经被观察到消耗实现RSA算法的总执行时间的相对大的比例的RSA算法的OpenSSL实现的函数bn_mul_mont的一组指令的表格。不是限制,认为该组指令的执行消耗了为执行特定工作负荷和分析用于实现RSA算法的总执行时间的大约一半的数量级。
表1.来自OpenSSL函数bn_mul_mont的热码
表1的操作是RSA算法的循环的核心部分。上述代码的输入参数是四个参数WORD,IN,OUT和CARRY,它们都是64位参数。参数IN和OUT是阵列的一个元素且利用下一迭代中的接着的邻接值进行更新。参数WORD在迭代期间不变。参数CARRY是从前一迭代继承的。所谓继承意指前一循环的输出是下一循环的输入。参数OUT有时继承自前一迭代。这七个指令的总体操作是生成等于WORD*IN+CARRY+OUT的结果。参数WORD*IN的乘算可以产生高达128位的乘积(64位参数的大小的两倍)。乘积存储在由RDX:RAX表示的128位存储设备中。结果,涉及到RAX的两个后续加法指令需要被执行为128位相加,因为进位或上溢可能出自64位寄存器而进入用于存储值的位[128:64]的寄存器RDX。因此,ADD和ADC指令一起用于实现128位加法。ADC指令所使用的进位标记(CF)的状态表示由前面的ADD指令所执行的前一相加中的进位。也即,由于经由仅具有64位而不是128位寄存器的64位架构的实现,128位相加是通过ADD和ADC指令对来实现的。通过这七个指令生成的结果被输出作为两个输出参数OUT*和CARRY*。
在一些实施例中,表1的若干个,至少五个,至少六个或者全部七个指令可以通过单个新的RSA加速指令来实现。在一些实施例中,至少行2-6所表示的指令可以在该单个新指令中实现。在其他实施例中,由行1和/或行7所表示的指令还可以可选地实现在该单个新指令中。有益地,RSA加速指令可帮助提高实现RSA算法的速度和/或效率,尤其当利用OpenSSL库实现时,以及尤其当利用函数bn_mul_mont实现时。
图1是可操作以执行RSA加速指令102的实施例的处理器100的实施例的框图。在一些实施例中,处理器可以是通用处理器(例如,在台式计算机、膝上型计算机或其他计算机中常用的类型)。可替选地,处理器可以是专用处理器。适合的专用处理器的示例包括但不限于密码处理器、网络处理器、通信处理器、协处理器、图形处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅列举了几个示例。处理器可以是各种复杂指令集计算(CISC)处理器、各种精减指令集计算(RISC)处理器、各种极长指令字(VLIW)处理器、其各种混合物或其他类型的处理器中的任一种。
在操作期间,处理器100可以接收RSA加速指令102的实施例。例如,RSA加速指令可以接收自指令取回单元、指令队列等。RSA加速指令可以表示宏指令、汇编语言指令、机器码指令、或处理器的指令集的其他指令或控制信号。在一些实施例中,RSA加速指令可以显式地规定(例如,通过一个或多个字段或者一组位),或以其他方式指示(例如,隐式地指示)具有第一64位值111的第一64位源操作数110(在图示中标记为“WORD”),并且可以显式地规定或以其他方式指示具有第二64位值113的第二64位源操作数112(在图示中标记为“IN”)。RSA加速指令还可以显式地规定或以其他方式指示具有第三64位值115的第三64位源操作数114(在图示中标记为“CARRY”),并且可以显式地规定或以其他方式指示具有第四64位值117的第四64位源操作数116(在图示中标记为“OUT”)。
再参考图1,处理器包括译码单元或译码器104。译码单元可接收指令并且将指令译码,指令包括RSA加速指令102。译码单元可以输出一个或多个微指令、微操作、微代码输入点、译码指令或控制信号、或反映、表征和/或源自RSA加速指令的其他相对较低级指令或控制信号。一个或多个相对较低级指令或控制信号可以通过一个或多个相对较低级(例如,电路级或硬件级)操作来实现相对较高级RSA加速指令。在一些实施例中,译码单元可以包括接收指令的一个或多个输入结构(例如,输入端口、输入互连、输入接口等)、接收并识别RSA加速指令的与输入结构耦合的指令识别逻辑、接收并译码RSA加速指令的与识别逻辑耦合的译码逻辑,以及输出一个或多个对应的较低级指令或控制信号的与译码逻辑耦合的一个或多个输出结构(例如,输出端口、输出互连、输出接口等)。识别逻辑和译码逻辑可以利用各种不同的机制来实现,所述机制包括但不限于微码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)以及用于实现本领域已知的译码单元的其他机制。
处理器100还包括一组寄存器108。在一些实施例中,寄存器可以包括可操作来保存64位数据的通用寄存器。术语通用通常用来指代将数据或地址存储在寄存器中的能力,但是这不是必需的。每个通用寄存器可以表示可操作以存储数据的片上存储位置。通用寄存器可以表示架构上可见的寄存器(例如,架构寄存器文件)。架构上可见的或者架构寄存器对软件和/或编程者可见和/或是指令指示的标识操作数的寄存器。这些架构寄存器与在给定微架构中的其他非架构或者非架构可见的寄存器(例如,临时寄存器、重定序缓冲器、引退寄存器等)形成对比。寄存器可以利用公知技术以不同方式实现在不同的微架构中并且不限于任何特定类型的电路。各种不同类型的寄存器是适用的。适合类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器以及它们的组合。在一些实施例中,寄存器可以是图5中的那些寄存器,但是本发明的范围不限于此。
如图所示,在一些实施例中,第一64位源操作数110可存储在第一通用寄存器中,第二64位源操作数112可存储在第二通用寄存器中,第三64位源操作数114可存储在第三通用寄存器中,并且第四64位源操作数116可以存储在第四通用寄存器中。在一些实施例中,通用寄存器RAX可以可选地用于存储具有参数IN的第二64位源操作数。在一些实施例中,RAX寄存器可被隐式地指示或对指令为隐式的。有益地,寄存器RAX的使用可以对来自表1的MOV和MUL指令中使用的特定寄存器提供增加的一致性。可选地,其他寄存器可被使用,或者可以可选地使用类似于表1的行1中的第一MOV指令的附加MOV指令。可选地,可以为四个源操作数中的一个或多个使用存储器位置或其他存储位置。例如,在一些实施例中,存储器操作可潜在地用于第一和第四源操作数中的一个或多个,但是这不是必需的。
再参考图1,执行单元106与译码单元104和寄存器108耦合。通过示例的方式,执行单元可包括算术单元、算术逻辑单元、执行算术和逻辑运算的数字电路、包括乘法器和加法器的数字电路或类似物。执行单元可以接收表示和/或源自RSA加速指令102的一个或多个译码后的或以其他方式转换的指令或控制信号。执行单元还可以接收具有第一64位值111的第一64位源操作数110(在图示中标记为“WORD”),具有第二64位值113的第二64位源操作数112(在图示中标记为“IN”)、具有第三64位值115的第三64位源操作数114(在图示中标记为“CARRY”),以及具有第四64位值117的第四64位源操作数116(在图示中标记为“OUT”)。执行单元能够响应于RSA加速指令和/或作为RSA加速指令的结果(例如,响应于来自指令的一个或多个直接或间接(例如通过仿真)译码的指令或控制信号)而操作以存储结果。
在一些实施例中,结果可以包括等于和/或代表第一64位值(WORD)乘以第二64位值(IN)加上第三64位值(CARRY)加上第四64位值(OUT)的值。在一些实施例中,结果可以存储在由指令规定或以其他方式指示的第一64位目的地操作数118以及由指令规定或以其他方式指示的第二64位目的地操作数120中。在一些实施例中,结果119(在图示中标记为“OUT*”)的64位最低有效(例如,最低顺序)半数可存储在由指令指示的第一64位目的地操作数118中。也即,第一64位目的操作数118可以存储结果WORD*IN+CARRY+OUT的位[63:0]。在一些实施例中,结果121(在图示中标记为“CARRY*”)的64位最高有效(例如,最高顺序)半数可以存储在由指令指示的第二64位目的地操作数120中。也即,第二64位目的地操作数120可以存储结果WORD*IN+CARRY+OUT的位[127:64]。
如图所示,在一些实施例中,第一目的地操作数118和第二目的地操作数120可以可选地是寄存器(例如,通用寄存器)。在一些实施例中,通用寄存器RDX可以可选地用于存储具有参数CARRY*的第二64位目的地操作数。在一些实施例中,RDX寄存器可以被隐式地指示或者对指令是隐式的。有益地,寄存器RDX的使用可以提供与来自表1的行6的ADC指令所使用的特定寄存器的增强的一致性,并且可帮助消除行7中的MOV指令。可选地,其他寄存器可被使用和/或类似于表1的行7中的第二MOV指令的附加MOV指令可被可选地使用。可选地,不使用寄存器,存储器位置或其他存储位置可用于一个或多个目的地操作数。例如,在一些实施例中,存储器操作可以可选地用于第一目的地操作数,但是这不是必需的。
执行单元和/或处理器可包括可操作以执行RSA加速指令和/或响应于RSA加速指令和/或作为RSA加速指令的结果(例如,响应于被译码或以其他方式取自RSA加速指令的一个或多个指令或控制信号)而存储结果的具体的或特定的逻辑(例如,晶体管、集成电路系统或其他可能与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的硬件)。在一些实施例中,执行单元可以包括接收源操作数的一个或多个输入结构(例如,输入端口、输入互连、输入接口等)、接收且处理源操作数且生成结果操作数的与输入结构耦合的电路系统或逻辑(例如,乘法器以及至少一个加法器),以及输出结果操作数的、与电路系统或逻辑耦合的一个或多个输出结构(例如,输出端口、输出互连、输出接口等)。在一些实施例中,执行单元可包括图3的电路系统或逻辑。
为避免使得本说明不清楚,已经示出和描述了相对简单的处理器100。在其他实施例中,处理器可以可选地包括其他公知的处理器组件。这些组件的可能的示例包括但不限于指令取回单元、指令和数据高速缓存、第二或更高级高速缓存、无序执行逻辑、指令调度单元、寄存器重命名单元、引退单元、总线接口单元、指令与数据变换后备缓冲器、预取缓冲器、微指令队列、微指令定序器、处理器包含的其他组件及其各种组合。这些组件的若干不同的组合和配置是适合的。实施例不限于任何已知的组合或配置。而且,实施例可包含在具有多个核、逻辑处理器或执行引擎的处理器中,其中至少一个具有执行RSA加速指令的实施例的译码单元和执行单元。
图2是处理RSA加速指令的实施例的方法230的实施例的流程框图。在各实施例中,该方法可通过处理器、指令处理装置或其他数字逻辑器件来执行。在一些实施例中,图2的操作和/或方法可由图1的处理器来执行和/或在图1的处理器内执行。本文针对图1的处理器所描述的组件、特征和具体的可选细节也可选地应用于图2的操作和/或方法。可选地,图2的操作和/或方法可被类似的或不同的处理器或装置来执行和/或在类似的或不同的处理器或装置内执行。而且,图1的处理器和/或装置可以执行与图2的相同、相似或不同的操作和/或方法。
该方法包括:在框231处,接收RSA加速指令。在各方面,指令可以在处理器、指令处理装置或其部分(例如,指令取回单元、译码单元、总线接口单元等)处被接收。在各方面中,可以从片外源(例如,从存储器、互连等)或者从片上源(例如,从指令高速缓存、指令队列等)接收指令。RSA加速指令可以规定或以其它方式指示具有第一64位值(例如,WORD)的第一64位源操作数,可以规定或以其它方式指示具有第二64位值(例如,IN)的第二64位源操作数,可以规定或以其它方式指示具有第三64位值(例如,CARRY)的第三64位源操作数,并且可以规定或以其它方式指示具有第四64位值(例如,OUT)的第四64位源操作数。
在框232中,响应于RSA加速指令和/或作为RSA加速指令的结果,存储结果。代表性地,执行单元、指令处理装置或处理器可以执行指令且存储结果。在一些实施例中,结果可以包括第一64位值(例如WORD)乘以第二64位值(例如IN)加上第三64位值(例如,CARRY)加上第四64位值(例如,OUT)。在一些实施例中,结果的64位最低有效(例如,最低排序)半数(例如,OUT*)可以存储在由指令指示的第一64位目的地操作数中。在一些实施例中,结果的64位最高有效(例如,最高排序)半数(例如,CARRY*)可以存储在由指令指示的第二64位目的地操作数中。如图所示,在一些实施例中,目的地操作数可以是通用寄存器。可选地,存储器位置或其它存储位置可以可选地用于这些操作数中的一个或多个。
在一些实施例中,方法230可以在实现RSA算法的同时来执行。在一些实施例中,该方法可以在RSA算法的OpenSSL库实现期间来执行。在一些实施例中,该方法可以在RSA算法的OpenSSL库实现的函数bn_mul_mont期间来执行。
图示的方法涉及到架构操作(例如,那些从软件视角可见的)。在其它实施例中,该方法可以可选地包括一个或多个微架构操作。通过示例的方式,指令可以被取回、译码、无序调度,源操作数可被存取,执行单元可以执行微架构操作来实现指令,等等。在一些实施例中,实现指令的微架构操作可以可选地包括乘法运算和两个加法运算。
图3是执行单元306的实施例的微架构的示例性实施例的框图。执行单元包括乘法器334。乘法器可以具有耦合以从第一64位源操作数接收第一64位值(例如,WORD)的第一64位输入,以及耦合以从第二64位源操作数接收第二64位值(例如,IN)的第二64位输入。乘法器可操作以将第一和第二64位值相乘以形成128位乘积(例如,WORD*IN)。乘法器可以具有输出乘积的128位输出。
执行单元还包括第一128位加法器336。第一128位加法器具有128位输入,其与乘法器的128位输出耦合以接收128位乘积(例如,WORD*IN)。第一128位加法器还具有耦合以接收第三64位值(例如,CARRY)的64位输入。第一128位加法器可以将第三64位值与128位乘积相加以产生第一128位和数(例如,WORD*IN+CARRY)。第一128位加法器可以具有输出第一128位和数的128位输出。
执行单元还包括第二128位加法器338。第二128位加法器具有128位输入,其与第一加法器的128位输出耦合以接收第一128位和数(例如,WORD*IN+CARRY)。第二128位加法器还具有耦合以接收第四64位值(例如,OUT)的64位输入。第二128位加法器可以将第四64位值与第一128位和数相加以产生第二128位和数(例如,WORD*IN+CARRY+OUT)。在一些实施例中,第二128位加法器可以具有第一64位输出,其将第二128位和数的第一较低排序64位半数(例如,值WORD*IN+CARRY+OUT的位[63:0])输出到第一64位目的地操作数。第二128位加法器还可以具有第二64位输出,以将第二128位和数的第二较高排序64位的半数(例如,值WORD*IN+CARRY+OUT的位[127:64])输出到第二64位目的地操作数。
图4示出了表示RSA加速指令402的示例性实施例的操作的伪码。RSA加速指令具有伪码RSAFMAA128。指令RSAFMAA128具有如下格式:64位源/目的地操作数(DEST)被显式地规定,64位源操作数(SRC)被显式地规定,64位源通用寄存器RAX是隐式的,并且64位源/目的地通用寄存器RDX是隐式的。寄存器RAX和RDX显示在指令编码中的括号中以表明它们是隐式的。在其它实施例中,更少或更多的操作数可以被显式地规定和/或更少或更多的操作可以是隐式的。
在伪码中,TEMP1,TEMP2和TEMP3表示临时寄存器(例如,微架构寄存器)。符号←表示存储。在其它实施例中,更少或更多的临时寄存器可以可选地使用。COMBINE操作用于将两个64位操作数组合成128位操作数。例如,COMBINE(0x1,0x2)是0x10000000000000002。注意,在128位操作数上执行相加,这提供了对于执行单独的两对ADD指令和ADC指令所需的提高的效率和/或速度。
DEST初始地用作源操作数且随后用作目的地操作数。DEST可以是64位通用寄存器或64位存储器位置并且具有读写能力。在OUT的值被继承的情况下,寄存器可以提供一些优点,而在OUT未被继承的情况下,可存在使用存储位置的优点。在一些实施例中,SRC可以是64位通用寄存器或64位存储器位置并且具有读能力,但是不一定具有写能力。
有益地,在一些实施例中,RAX可用于提供参数IN。这可以提供与表1的行1中的第一MOV指令增强的一致性。可选地,另一寄存器可被使用和/或附加的MOV指令可以包含在RSAFMAA128指令之外。
有益地,在一些实施例中,RDX可用作提供参数CARRY*的目的地操作数。这可以提供与表1的行7的最后的MOV指令增强的一致性。可选地,另一寄存器可被使用和/或附加的MOV指令可包含在RSAFMAA128指令之外。还注意的是,在一些实施例中,RDX可以初始地用作源操作数以提供参数(例如,CARRY)并随后用作目的地操作数。该重用可有助于避免需要另一寄存器。可选地,不同的寄存器可以可选地用作源操作数以提供参数(例如,CARRY)。RDX的值可以在迭代期间被继承。
图5是适合的指令格式550的示例性实施例的框图。指令格式包括操作代码或操作码552。操作码可以表示可操作以标识待执行的指令和/或操作的多个位或者一个或多个字段。在一些实施例中,操作码可以表示RSA加速操作或者与RSA加速操作相关联。
指令格式还包括源/目的地规定器554以及源规定器556。通过示例的方式,这些规定器中的每一个均可以包括规定寄存器、存储器位置或其它存储位置的地址的位或者一个或多个字段。源/目的地规定器554规定具有源操作数的存储位置,并且相同的规定的存储位置也用作存储结果操作数的目的地。源规定器556规定具有另一源操作数的存储位置。
在一些实施例中,指令还具有隐式RAX源558。所谓隐式是指指令格式无需具有规定RAX寄存器的位或者一个或多个字段,而是RAX寄存器可以对指令是隐式的(例如,对操作码是隐式的)。在一些实施例中,指令还具有隐式RDX源/目的地560。RDX寄存器可以初始地用于存储源操作数且随后存储待存储的目的地操作数。
应当理解,这仅是适合的指令格式的一个示例性实施例。该指令格式规定或以其它方式指示仅两个操作数/存储位置,而其它的是隐式的。在其它实施例中,可以显式地规定更少或更多的操作数。在各个实施例中,指令可以具有显式地规定一个、两个、三个或多于三个操作数的格式,其它的是隐式的。而且,字段的图示次序/布置不是必需的,而是字段可重新布置。字段无需包括位的邻接序列,而是可以由非邻接或分开的位构成。一些字段可能重叠。可选的实施例还可以可选地添加附加字段。例如,字段或者一个或多个位可以被添加以规定操作数大小,将操作定性为有符号的或无符号的,表明是否要使用饱和,等等。
图6示出了适合的64位通用寄存器组608的示例性实施例。64位寄存器组包括十六个64位或四倍字通用寄存器。这些寄存器称为RAX,RBX,RCX,RDX,RSI,RDI,RBP,RSP,R8,R9,R10,R11,R12,R13,R14和R15。通过示例的方式,具有64位的四倍字无符号整数可以存储在寄存器RAX,RBX,RCX,RDX,RSI,RDI,RBP,RSP或R8-R15中。这些寄存器还能够在32位模式下操作以存储32位操作数。RAX,RBX,RCX,RDX,RSI,RDI,RBP和RSP寄存器中的较低的32位分别对应于寄存器EAX,EBX,ECX,EDX,ESI,EDI,EBP和ESP寄存器。具有32位的双字无符号整数可以存储在寄存器EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP,R8D-R15D中。寄存器R8-R15的较低32位也能以32位模式寻址且由R8D-R15D引用。这些32位寄存器还能够以16位模式和8位模式寻址。EAX,EBX,ECX和EDX寄存器的较低的16位分别称为AX,BX,CX和DX(未示出)。通过示例的方式,具有16位的字无符号整数可以分别存储在寄存器BX,CX和DX中。这些通用寄存器能够提供于各种x86架构处理器中,并且适合于实现一个或多个实施例,但是这些特定寄存器不是必需的。其它处理器可以具有更少或更多的寄存器,无需使用较大寄存器在较小寄存器上的这种混叠,可以具有不同尺寸的寄存器,等等。
关于图3-6中的任意图所描述的组件、特征和可选细节还可以可选地用于图1-2中的任意图中。而且,关于本文描述的任意装置在此描述的组件、特征和可选的细节可以可选地用于和/或适用于本文所描述的任意方法,在实施例中这些方法可通过该装置和/或借助该装置来执行。进一步,关于在本文所描述的任意处理器的此处描述的组件、特征和可选的细节可以可选地用于和/或适用于本文所描述的任何系统,在实施例中所述系统可以包括这些处理器。
示范性的核架构、处理器和计算机架构
可以用不同的方式、为了不同的目的和在不同的处理器中实现处理器核。例如,这样的核的实现可包括:1)为通用计算而设计的通用有序(in-order)核;2)为通用计算而设计的高性能通用无序(out-of-order)核;3)主要为图形和/或科学(吞吐量)计算而设计的专用核。不同处理器的实现可包括:1)包括为通用计算而设计的一个或多个通用有序核和/或为通用计算而设计的一个或多个通用无序核的CPU;以及2)包括主要为图形和/或科学(吞吐量)而设计的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分离的芯片上的协处理器;2)在与CPU相同的封装中的单独管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在这种情况下,这样的协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑或作为专用核);以及4)可在同一管芯上包括所述CPU(有时被称为应用核或应用处理器)、上面描述的协处理器和额外的功能的片上系统。示例核架构被接着描述,后面是示例性处理器和计算机架构的描述。
示例性核架构
有序和无序核方框图
图7A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名无序发布/执行流水线的方框图。图7B是示出根据本发明的实施例的被包括在处理器中的有序架构核和示例性寄存器重命名无序发布/执行架构核的示例性实施例的方框图。在图7A-B中的实线框示出有序流水线和有序核,而虚线框的可选添加示出寄存器重命名无序发布/执行流水线和核。假定有序方面是无序方面的子集,将描述无序方面。
在图7A中,处理器流水线700包括取回级702、长度译码级704、译码级706、分配级708、重命名级710、调度(也被称为分派或发布)级712、寄存器读取/存储器读取级714、执行级716、写回/存储器写入级718、异常处理级722和提交级724。
图7B示出包括耦合到执行引擎单元750的前端单元730的处理器核790,且两者都耦合到存储器单元770。核790可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或可选的核类型。作为又一选择,核790可以是专用核,例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,指令高速缓存单元734耦合到指令翻译旁视缓冲器(TLB)736,指令翻译旁视缓冲器(TLB)736耦合到指令取回单元738,指令取回单元738耦合到译码单元740。译码单元740(或译码器)可对指令译码,并产生一个或多个微操作、微代码输入点、微指令、其它指令或从原始指令被译码或反映原始指令或从原始指令得到的其它控制信号作为输出。可使用各种不同的机制来实现译码单元740。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包括微代码ROM或存储某些宏指令的微代码(例如在译码单元740中或在前端单元730内)的其它介质。译码单元740耦合到在执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括耦合到引退单元754的重命名/分配器单元752和一组一个或多个调度器单元756。调度器单元756代表任何数量的不同调度器,包括预留站、中央指令窗口等。调度器单元756耦合到物理寄存器文件单元758。每一个物理寄存器文件单元758代表一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如指令指针,其为待执行的下一指令的地址)等。在一个实施例中,物理寄存器文件单元758包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器文件单元758由引退单元754重叠以示出寄存器重命名和无序执行可被实现(例如使用记录器缓冲器和引退寄存器文件;使用未来的文件、历史缓冲器和引退寄存器文件;使用寄存器地图和一池寄存器;等等)的各种方式。引退单元754和物理寄存器文件单元758耦合到执行集群760。执行集群760包括一组一个或多个执行单元762和一组一个或多个存储器访问单元764。执行单元1062可对各种类型的数据(例如标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行各种操作(例如移位、加法、减法、乘法)。虽然一些实施例可包括专用于特定的功能或功能组的多个执行单元,其它实施例可包括仅仅一个执行单元或都执行所有功能的多个执行单元。调度器单元756、物理寄存器文件单元758和执行集群760被示为可能多个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线,每一个流水线具有它们自己的调度器单元、物理寄存器文件单元和/或执行集群,且在单独的存储器访问流水线的情况下,实现某些实施例,其中只有这个流水线的执行集群具有存储器访问单元764)。也应理解,在单独的流水线被使用的场合,这些流水线中的一个或多个可以是无序发布/执行,而其余是有序的。
这组存储器访问单元764耦合到存储器单元770,其包括耦合到数据高速缓存单元774的数据TLB单元772,数据高速缓存单元774耦合到2级(L2)高速缓存单元776。在一个示例性实施例中,存储器访问单元764可包括装入单元、存储地址单元和存储数据单元,其中每一个耦合到在存储器单元770中的数据TLB单元772。指令高速缓存单元734进一步耦合到在存储器单元770中的2级(L2)高速缓存单元776。L2高速缓存单元776耦合到高速缓存的一个或多个其它级并最终耦合到主存储器。
作为示例,示例性寄存器重命名无序发布/执行核架构可如下实现流水线700:1)指令取回738执行取回和长度译码级702和704;2)译码单元740执行译码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)调度器单元756执行调度器级712;5)物理寄存器文件单元758和存储器单元770执行寄存器读取/存储器读取级714;执行集群760执行执行级716;6)存储器单元770和物理寄存器文件单元758执行写回/存储器写入级718;7)在异常处理级722中涉及各种单元;以及8)引退单元754和物理寄存器文件单元758执行提交级724。
核790可支持一个或多个指令集(例如x86指令集(具有添加了较新版本的一些扩展);MIPSTechnologiesofSunnyvale,CA的MIPS指令集;ARMHoldingsofSunnyvale,CA的ARM指令集(具有可选的额外扩展例如NEON)),包括本文所述的指令。在一个实施例中,核790包括支持紧缩数据指令集扩展(例如AVX1、AVX2)的逻辑,从而允许使用紧缩数据执行由很多多媒体应用使用的操作。
应理解,核可支持多线程(执行两个或多个并行组的操作或线程),并可以用各种方式来这么做,包括时间分片多线程、同时多线程(其中单个物理核为每一个线程提供逻辑核,物理核是同时多线程的)或其组合(例如其后例如在Hyperthreading技术中的时间分片取回和译码和同时多线程)。
虽然在无序执行的上下文中描述了寄存器重命名,应理解,可在有序架构中使用寄存器重命名。虽然处理器的所示实施例也包括单独的指令和数据高速缓存单元734/774和共享L2高速缓存单元776,可选的实施例可具有指令和数据的单个内部高速缓存,例如1级(L1)内部高速缓存或内部高速缓存的多个级。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。可选地,所有高速缓存可以在核和/或处理器外部。
特定的示例性有序核架构
图8A-B示出更具体的示例性有序核架构的方框图,该核将是在芯片中的几个逻辑块之一(包括相同类型和/或不同类型的其它核)。逻辑块通过高带宽互联网络(例如环形网络)与某个固定功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信,取决于应用。
图8A是根据本发明的实施例的单处理器核连同它到管芯上互连网络802的连接及它的2级(L2)高速缓存的本地子集804的方框图。在一个实施例中,指令译码器800支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存806允许对在标量和向量单元内的高速缓存存储器的低时延访问。虽然在一个实施例中(为了简化设计)标量单元808和向量单元810使用单独的寄存器组(分别为标量寄存器812和向量寄存器814)且在它们之间传输的数据被写到存储器并接着从1级(L1)高速缓存806被读回,本发明的可选实施例可使用不同的方法(例如使用单个寄存器组或包括允许数据在这两个寄存器文件之间传输而没有被写入和读回的通信路径)。
L2高速缓存的本地子集804是被分成单独的本地子集的全局L2高速缓存的部分,每处理器核一个本地子集。每一个处理器核具有到它自己的L2高速缓存的本地子集804的直接访问路径。由处理器核读取的数据存储在它的L2高速缓存子集804中并可与访问它们自己的本地L2高速缓存子集的其它处理器一起并行地被快速访问。由处理器核写入的数据存储在它自己的L2高速缓存子集804中并从其它子集清除,如果必要。环形网络确保共享数据的一致性。环形网络是双向的以允许代理例如处理器核、L2高速缓存和其它逻辑块在芯片内与彼此通信。每一个环形数据路径是每方向1012位宽。
图8B是根据本发明的实施例的在图8A中的处理器核的部分的展开图。图8B包括L1高速缓存804的L1数据高速缓存806A部分以及关于向量单元810和向量寄存器814的更多细节。具体地,向量单元810是16宽向量处理单元(VPU)(见16宽ALU828),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持使用拌合(swizzle)单元820拌合寄存器输入,使用数值转换单元822A-B进行的数值转换以及使用复制单元824对存储器输入的复制。写入掩码寄存器826允许断定因而产生的向量写入。
具有集成存储器控制器和图形的处理器
图9是根据本发明的实施例的可具有多于一个核、可具有集成存储器控制器、并可具有集成图形的处理器900的方框图。在图9中的实线框示出具有单个核902A、系统代理910、一组一个或多个总线控制器单元916的处理器900,而虚线框的可选添加示出具有多个核902A-N、在系统代理单元910中的一组一个或多个集成存储器控制器单元914和专用逻辑908的可选处理器900。
因此,处理器900的不同实现可包括:1)CPU,其具有作为集成图形和/或科学(吞吐量)逻辑的专用逻辑908(其可包括一个或多个核)和作为一个或多个通用核(例如通用有序核、通用无序核、这两者的组合)的核902A-N;2)协处理器,其具有主要为图形和/或科学(吞吐量)设计的作为大量专用核的核902A-N;以及3)协处理器,其具有作为大量通用有序核的核902A-N。因此,处理器900可以是通用处理器、协处理器或专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多集成核(MIC)协处理器(包括30或更多核)、嵌入式处理器等。处理器可以在一个或多个芯片上实现。处理器900可以是一个或多个衬底的一部分和/或可使用多种处理器技术中的任一个(例如BiCMOS、CMOS或NMOS)在一个或多个衬底上实现。
存储器层次结构包括在核内的高速缓存的一个或多个级、一组或一个或多个共享高速缓存单元906和耦合到这组集成存储器控制器单元914的外部存储器(未示出)。这组共享高速缓存单元906可包括一个或多个中级高速缓存,例如第2级(L2)、第3级(L3)、第4级(L4)或高速缓存的其它级、最后一级高速缓存(LLC)和/或其组合。虽然在一个实施例中基于环的互连单元912将集成图形逻辑908、这组共享高速缓存单元906和系统代理单元910/集成存储器控制器单元914互连,可选的实施例可使用用于将这样的单元互连的任何数量的公知技术。在一个实施例中,在一个或多个高速缓存单元906和核902-A-N之间维持一致性。
在一些实施例中,一个或多个核902A-N有多线程的能力。系统代理910包括协调和操作核902A-N的那些部件。系统代理单元910可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核902A-N和集成图形逻辑908的功率状态所需的逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核902A-N从架构指令集方面来说可以是同构的或异构的;也就是说,两个或更多个核902A-N可能能够执行相同的指令集,而其它核可能能够只执行那个指令集的子集或不同的指令集。
示例性计算机架构
图10-13是示例性计算机架构的方框图。膝上型计算机、台式计算机、手持PC、个人数字助理、工程设计工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其它电子设备的在本领域中已知的其它系统设计和配置也是合适的。通常,能够合并处理器和/或如本文公开的其它执行逻辑的多种系统或电子设备通常是合适的。
现在参考图10,其示出根据本发明的一个实施例的系统1000的方框图。系统1000可包括耦合到控制器中心1020的一个或多个处理器1010、1015。在一个实施例中,控制器中心1020包括图形存储器控制器中心(GMCH)1090和输入/输出中心(IOH)1050(其可以在单独的芯片上);GMCH1090包括存储器1040和协处理器1045耦合到的存储器和图形控制器;IOH1050将输入/输出(I/O)设备1060耦合到GMCH1090。可选地,存储器和图形控制器中的一个或两个集成在处理器(如在本文所述的)内,存储器1040和协处理器1045在单个芯片中与IOH1050一起直接耦合到处理器1010和控制器中心1020。
在图10中用虚线表示额外的处理器1015的可选性质。每一个处理器1010、1015可包括在本文所述的一个或多个处理核,且可以是处理器900的某个版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中心1020经由多点总线例如前端总线(FSB)、点对点接口例如QuickPath互连(QPI)或类似的连接1095与处理器1010、1015通信。
在一个实施例中,协处理器1045是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中心1020可包括集成图形加速器。
从包括架构、微架构、热、功率消耗特性等的一系列优点的度量方面,在物理资源1010、1015之间可以有各种差异。
在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。嵌入指令内的可以是协处理器指令。处理器1010将这些协处理器指令识别为具有应由附加的协处理器1045执行的类型。对应地,处理器1010向协处理器1045发出在协处理器总线或其它互连上的这些协处理器指令(或表示协处理器指令的控制信号)。协处理器1045接受并执行所接收的协处理器指令。
现在参考图11,其示出根据本发明的实施例的第一更具体的示例性系统1100的方框图。如图11所示,多处理器系统1100是点对点互连系统,并包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。每一个处理器1170和1180可以是处理器900的某个版本。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010和协处理器1045。
示出分别包括集成存储器控制器(IMC)单元1172和1182的处理器1170和1180。处理器1170还包括点对点(P-P)接口1176和1178作为它的总线控制器单元的部分;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可经由点对点(P-P)接口1150使用P-P接口电路1178、1188来交换信息。如在图11中所示的,IMC1172和1182将处理器耦合到对应的存储器,即存储器1132和存储器1134,其可以是在本地附接到对应的处理器的主存储器的部分。
处理器1170、1180可每一个经由单独的P-P接口1152、1152使用点对点接口电路1176、1194、1186、1198与芯片组1190交换信息。芯片组1190可以可选地经由高性能接口1139与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可包括在任一处理器中或在这两个处理器之外,还经由P-P互连与处理器连接,使得任一或两个处理器的本地高速缓存信息可存储在共享高速缓存中(如果处理器被置于低功率模式中)。
芯片组1190可经由接口1196耦合到第一总线1116。在一个实施例中,第一总线1116可以是外围部件互连(PCI)总线或诸如PCIExpress总线或另一第三代I/O互连总线的总线,虽然本发明的范围不被如此限制。
如图11所示,各种I/O设备1114可连同将第一总线1116耦合到第二总线1120的总线桥1118一起耦合到第一总线1116。在一个实施例中,一个或多个额外的处理器1115,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器,耦合到第一总线1116。在一个实施例中,第二总线1120可以是低管脚计数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线1120,包括例如键盘和/或鼠标1122、通信设备1127和存储单元1128例如磁盘驱动器或可包括指令/代码和数据1130的其它大容量存储设备。此外,音频I/O1124可耦合到第二总线1120。注意,其它架构是可能的。例如,不是图11的点对点架构,系统可实现多点总线或其它这样的架构。
现在参考图12,其示出根据本发明的实施例的第二更具体的示例性系统1200的方框图。图11-12中的相似元件具有相似的参考数字,且图11的某些方面从图12省略,以便避免使图12的其它方面难理解。
图12示出处理器1170、1180可分别包括集成存储器和I/O控制逻辑(“CL”)1172和1182。因此,CL1172、1182包括集成存储器控制器单元并包括I/O控制逻辑。图12示出不仅存储器1132、1134耦合到CL1172、1182,而且I/O设备1214也耦合到控制逻辑1172、1182。旧有I/O设备1215耦合到芯片组1190。
现在参考图13,其示出根据本发明的实施例的SoC1300的方框图。在图9中的相似元件具有相似的参考数字。此外,虚线框是在更高级的SoC上的可选特征。在图13中,互连单元1302耦合到:包括一组一个或多个核202A-N和共享高速缓存单元906的应用处理器1310;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;可包括集成图形逻辑、图像处理器、音频处理器和视频处理器的一组或一个或多个协处理器1320;静态随机存取存储器(SRAM)单元1330;直接存储器存取(DMA)单元1332;以及用于耦合到一个或多个外部显示器的显示单元1340。在一个实施例中,协处理器1320包括专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可在硬件、软件、固件或这样的实现方法的组合中实现。本发明的实施例可被实现为在包括至少一个处理器、存储系统(包括易失性和/或非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备的可编程系统上执行的计算机程序或程序代码。
程序代码,例如图11所示的代码1130可应用于输入指令以执行本文所述的功能并产生输出信息。输出信息可以用已知的方式应用于一个或多个输出设备。为了这个申请的目的,处理系统包括具有处理器(例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何系统。
程序代码可以用高级过程或面向对象的编程语言来实现以与处理系统通信。如果需要,程序代码也可以用汇编或机器语言来实现。事实上,本文所述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可由存储在代表在处理器内的各种逻辑的机器可读介质上的代表性指令实现,指令当被机器读取时使机器制造执行本文所述的技术的逻辑。被称为“IP核”的这样的代表可存储在有形机器可读介质上并被提供到各种消费者或制造设施以装入实际上制造逻辑或处理器的制造机器内。
这样的机器可读存储介质可没有限制地包括由机器或设备制造或形成的物品的非暂时性有形布置,包括存储介质例如硬盘、任何其它类型的磁盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘、半导体设备例如只读存储器(ROM)、随机存取存储器(RAM)例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡或适合于存储电子指令的任何其它类型的介质。
对应地,本发明的实施例还包括包含指令或包含设计数据(例如硬件描述语言(HDL))的非暂时性有形机器可读介质,其定义本文所述的结构、电路、装置、处理器和/或系统特征。这样的实施例也可被称为程序产品。仿真(包括二进制翻译、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换成目标指令集。例如,指令转换器可将指令翻译(例如使用静态二进制翻译、动态二进制翻译,包括动态编译)、变形、仿真或转换成由核处理的一个或多个其它指令。指令转换器可在软件、硬件、固件或其组合中实现。指令转换器可以在处理器上、处理器外或部分在处理器上和部分在处理器外。
图14是根据本发明的实施例的对照将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的方框图。在所示实施例中,指令转换器是软件指令转换器,虽然可选地,指令转换器可在软件、固件、硬件或其各种组合中实现。图14示出用高级语言1402的程序可使用x86编译器1404来编译以产生可本机地由具有至少一个x86指令集核的处理器1416执行的x86二进制代码1406。具有至少一个x86指令集核的处理器1416代表可执行与具有至少一个x86指令集核的英特尔处理器实质上相同的功能的任何处理器,是通过兼容地执行或处理(1)英特尔x86指令集核的指令集的实质的部分或(2)以在具有至少一个x86指令集核的英特尔处理器上运行为目标的应用或其它软件的对象代码版本,以便实现与具有至少一个x86指令集核的英特尔处理器实质上相同的结果。x86编译器1404代表可操作来产生可在有或没有额外的连接处理的情况下在具有至少一个x86指令集核的处理器1416上执行的x86二进制代码1406(例如对象代码)的编译器。类似地,图14示出可使用可选的指令集编译器1408来编译以产生可本机地由不具有至少一个x86指令集核的处理器1414(例如具有执行MIPSTechnologiesofSunnyvale,CA的MIPS指令集和/或执行ARMHoldingsofSunnyvale,CA的ARM指令集的核的处理器)执行的可选的指令集二进制代码1410的用高级语言1402的程序。指令转换器1412用于将x86二进制代码1406转换成可本机由不具有x86指令集核的处理器1414执行的代码。这个所转换的代码不太可能与可选的指令集二进制代码1410相同,因为有此能力的指令转换器难以制造;然而,所转换的代码将实现一般操作并由来自可选的指令集的指令构成。因此,指令转换器1412代表软件、固件、硬件或其组合,其通过仿真、模拟或任何其它过程允许处理器或没有x86指令集处理器或核的其他电子设备执行x86二进制代码1406。
在描述和权利要求中,可能使用术语“耦合”和/或“连接”连同其衍生词。这些术语不旨在作为彼此的同义词。在实施例中,“连接”可用于指示两个或更多个元件彼此直接物理和/或电接触。“耦合”可意指两个或更多个元件彼此直接物理和/或电接触。然而,“耦合”也可意指两个或更多个元件彼此不直接接触,但仍然彼此协作或交互作用。例如,执行单元可通过一个或多个介入部件与寄存器和/或译码单元耦合。在附图中,箭头用于显示连接和耦合。
可以使用术语“和/或”。如本文所使用的,术语“和/或”意指一个或另一个或两者(例如,A和/或B意指A或B或者A和B两者)。
在上面的说明中,已经阐述了具体细节从而提供实施例的全面理解。然而,可以在不具有这些具体细节中的一些细节的情况下来实践其它实施例。本发明的范围不是由上面提供的具体示例而是仅通过下面的权利要求来确定。在其它实例中,公知的电路、结构、设备和操作已经以框图形式和/或没有细节来被示出,以免混淆说明的理解。在认为适当的情况下,除非规定或以其他方式显而易见,附图标记或者附图标记的末尾部分可以在图之间重复以指示对应或类似的要素,其可能可选地具有类似的或者相同的特性。
某些操作可由硬件部件执行,或可体现在机器可执行或电路可执行指令中,这些指令可用于使和/或导致使用指令编程的机器、电路或硬件部件(例如处理器、处理器的部分、电路等)执行操作。操作也可以可选地由硬件和软件的组合执行。处理器、机器、电路或硬件可包括特定的或特有的电路或可操作来执行和/或处理指令并响应于指令而存储结果的其它逻辑(例如可能与固件和/或软件组合的硬件)。
一些实施例包括制品(例如计算机程序产品),其包括机器可读介质。介质可包括提供例如存储机器可读的形式的信息的机制。机器可读介质可提供或在其上存储有指令或指令的序列,其如果和/或当被机器执行时可操作来使机器执行和/或导致机器执行本文所公开的一个或多个操作、方法或技术。机器可读介质可以存储或以其他方式提供本文所公开的指令的实施例中的一个或多个。
在一些实施例中,机器可读介质可包括有形和/或非暂时性机器可读存储介质。例如,有形和/或非暂时性机器可读存储介质可包括软盘、光学存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除和可编程ROM(EPROM)、电可擦除和可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂时性存储器、非暂时性数据存储设备等。
适当的机器的示例包括但不限于通用处理器、专用处理器、指令处理装置、数字逻辑电路、集成电路等。适当的机器的又一些其它示例包括计算设备或包含处理器、指令处理装置、数字逻辑电路或集成电路的其它电子设备。这样的计算设备和电子设备的示例包括但不限于台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本计算机、智能电话、服务器、网络设备(例如路由器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视机、上网机、机顶盒和视频游戏控制器。
在整个这个说明书中对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的提及例如指示特定的特征可被包括在本发明的实践中,而不一定需要是这样。类似地,在描述中,为了使本公开合理化并帮助理解各种创造性方面的目的,各种特征有时在单个实施例、附图或其描述中被集中在一起。然而,公开的这个方法并不应被解释为反映本发明需要比在每一个权利要求中明确列举的更多的特征的意图。更确切地,如下面的权利要求反映的,创造性方面在于少于单个所公开的实施例的所有特征。因此,在具体实施方式之后的权利要求特此明确地合并到这个具体实施方式内,每一个权利要求独立地作为本发明的分开的实施例。
示例性实施例
下面的示例关于另外的实施例。在示例中的具体细节可以在一个或多个实施例中任意处使用。
示例1是包括译码单元的处理器或其它装置,该译码单元对指令译码。所述指令指示具有第一64位值的第一64位源操作数,指示具有第二64位值的第二64位源操作数,指示具有第三64位值的第三64位源操作数,以及指示具有第四64位值的第四64位源操作数。处理器或装置的执行单元与所述译码单元耦合。所述执行单元响应于所述指令而可操作以存储结果。所述结果包含所述第一64位值乘以所述第二64位值加上所述第三64位值加上所述第四64位值。所述执行单元将所述结果的64位最低有效半数存储在由所述指令指示的第一64位目的地操作数中,并且将所述结果的64位最高有效半数存储在由所述指令指示的第二64位目的地操作数中。
示例2包括示例1所述的处理器,并且可选地其中所述译码单元对包括RSA算法加速指令的指令进行译码。
示例3包括任一前述示例所述的处理器,并且可选地其中所述译码单元对隐式地指示具有所述第二64位值的第二64位源操作数作为所述通用寄存器RAX的指令进行译码。
示例4包括任一前述示例所述的处理器,并且可选地其中所述译码单元对隐式地指示具有所述结果的64位最高有效半数的第二64位目的地操作数为通用寄存器RDX的指令进行译码。
示例5包括示例1所述的处理器,并且可选地其中所述译码单元对隐式地指示具有第二64位值的第二64位源操作数为通用寄存器RAX以及隐式地指示具有所述结果的64位最高有效半数的第二64位目的地操作数为通用寄存器RDX的指令进行译码。
示例6包括任一前述示例所述的处理器,并且可选地其中所述译码单元对显式地规定具有第四64位值的第四64位源操作数的指令进行译码,所述具有第四64位值的第四64位源操作数隐式地与存储结果的64位最低有效半数的第一64位目的地操作数为相同的存储位置。
示例7包括任一前述示例所述的处理器,并且可选地其中所述译码单元对隐式地指示具有第三64位值的第三64位源操作数的指令进行译码,所述具有第三64位值的第三64位源操作数隐式地与存储结果的64位最高有效半数的第二64位目的地操作数为相同的存储位置。
示例8包括示例7所述的处理器,并且可选地其中所述存储位置包括通用寄存器。
示例9包括任一前述示例所述的处理器,并且可选地其中所述译码单元对具有显式地规定仅两个操作数的格式的指令进行译码。
示例10包括示例9所述的处理器,并且可选地其中所述译码单元对如下指令进行译码:显式地规定具有第一64位值的第一64位源操作数;隐式地指示具有第二64位值的第二64位源操作数;隐式地指示具有第三64位值的第三64位源操作数;显式地规定具有第四64位值的第四64位源操作数;隐式地指示存储结果的64位最低有效半数的第一64位目的地操作数与用于具有第四64位值的第四64位源操作数的存储位置为相同的存储位置;以及隐式地指示存储结果的64位最高有效半数的第二64位目的地操作数与用于具有第三64位值的第三64位源操作数的存储位置为相同的存储位置。
示例11包括任一前述示例所述的处理器,并且可选地其中所述执行单元包括存储第三64位值的和数以及第一64位值和第二64位值的乘积的128位存储位置。
示例12包括任一前述示例所述的处理器,并且可选地其中所述执行单元包括将表示第三64位值的值与将第一64位值和第二64位值相乘的128位乘积相加的128位加法器。
示例13是包括接收指令的处理器或其它装置中的方法。该指令指示具有第一64位值的第一64位源操作数,指示具有第二64位值的第二64位源操作数,指示具有第三64位值的第三64位源操作数以及指示具有第四64位值的第四64位源操作数。该方法包括响应于指令而存储结果。该结果包含所述第一64位值乘以第二64位值加上第三64位值加上第四64位值。存储所述结果包括将所述结果的64位最低有效半数存储在由指令指示的第一64位目的地操作数中,以及将结果的64位最高有效半数存储在由指令指示的第二64位目的地操作数中。
示例14包括示例13所述的方法,可选地在RSA算法的OpenSSL库实现期间执行。
示例15包括示例14所述的方法,可选地在所述RSA算法的所述OpenSSL库实现的函数bn_mul_mont期间执行。
示例16包括任一前述示例所述的方法,并且可选地其中接收包括接收隐式地指示具有所述第二64位值的第二64位源操作数为通用寄存器RAX的指令。
示例17包括任一前述示例所述的方法,并且可选地其中接收包括接收隐式地指示具有结果的64位最高有效半数的第二64位目的地操作数为通用寄存器RDX的指令。
示例18包括任一前述示例所述的方法,并且可选地其中接收包括接收隐式地指示具有第二64位值的第二64位源操作数为通用寄存器RAX,以及隐式地指示具有结果的64位最高有效半数的第二64位目的地操作数为通用寄存器RDX的指令。
示例19包括任一前述示例所述的方法,并且可选地其中接收包括接收显式地规定具有第四64位值的第四64位源操作数的指令,该具有第四64位值的第四64位源操作数也隐式地与用于存储结果的64位最低有效半数的第一64位目的地操作数为相同的存储位置。
示例20包括任一前述示例所述的方法,并且可选地其中接收包括接收隐式地指示具有第三64位值的第三64位源操作数的指令,所述具有第三64位值的第三64位源操作数还隐式地与用于存储结果的64位最高有效半数的第二64位目的地操作数为相同的存储位置。
示例21包括任一前述示例所述的方法,并且可选地其中接收包括接收具有显式地规定仅两个操作数的格式的指令。
示例22是包括多个通用寄存器以及对RSA算法加速指令进行译码的译码单元的处理器或其它装置。所述RSA算法加速指令指示具有第一64位值的第一64位源操作数,隐式地指示通用寄存器RAX作为具有第二64位值的第二64位源操作数,指示具有第三64位值的第三64位源操作数,以及指示具有第四64位值的第四64位源操作数。处理器或其它装置还包括与译码单元和多个通用寄存器耦合的执行单元。该执行单元响应于RSA算法加速指令而能够操作以存储结果。该结果包含所述第一64位值乘以所述第二64位值加上所述第三64位值加上第四64位值。执行单元将结果的64位最低有效半数存储在位于与64位源操作数相同的存储位置上的、由指令指示的第一64位目的地操作数中,以及将结果的64位最高有效半数存储在作为由指令指示的第二64位目的地操作数的隐式地指示的通用寄存器RDX中。
示例23包括示例22所述的处理器,并且可选地其中所述通用寄存器RDX也用于存储第三64位值,其中用于存储结果的64位最低有效半数的存储位置还用于存储第四64位值。
示例24是包含互连和与互连耦合的处理器在内的处理指令的系统。该处理器接收指令,所述指令指示具有第一64位值的第一64位源操作数,指示具有第二64位值的第二64位源操作数,指示具有第三64位值的第三64位源操作数,以及指示具有第四64位值的第四64位源操作数。该处理器能够响应于指令而操作以存储结果,所述结果包含所述第一64位值乘以所述第二64位值加上第三64位值加上第四64位值。所述处理器将所述结果的64位最低有效半数存储在由指令指示的第一64位目的地操作数中,以及将结果的64位最高有效半数存储在由指令指示的第二64位目的地操作数中。该系统还包括动态随机存取存储器(DRAM),其与所述互连耦合。所述DRAM存储要使用所述指令来更新阵列的参数的RSA算法的OpenSSL实现。
示例25包括示例24所述的系统,并且可选地其中所述指令隐式地指示具有所述第二64位值的第二64位源操作数作为第一通用寄存器,以及隐式地指示具有结果的64位最高有效半数的第二64位目的地操作数作为不同的第二通用寄存器。
示例26是包含非暂时性机器可读存储介质的制造品。所述非暂时性机器可读存储介质存储指令,所述指令指示具有第一64位值的第一64位源操作数,指示具有第二64位值的第二64位源操作数,指示具有第三64位值的第三64位源操作数,以及指示具有第四64位值的第四64位源操作数。所述指令如果由机器执行则可操作以使所述机器执行包括存储结果的操作。该结果包含所述第一64位值乘以第二64位值加上第三64位值加上第四64位值。结果的64位最低有效半数存储在由指令指示的第一64位目的地操作数中,以及结果的64位最高有效半数存储在由指令指示的第二64位目的地操作数中。
示例27包括示例26所述的制造品,并且可选地其中所述指令隐式地指示具有第二64位值的第二64位源操作为作为第一通用寄存器,以及隐式地指示具有结果的64位最高有效半数的第二64位目的地操作数作为不同的第二通用寄存器。
示例28包括可操作以执行示例13-21中任一项所述的方法的处理器或其他装置。
示例29包括用于执行示例13-21中任一项所述的方法的单元的处理器或其他装置。
示例30包括用于执行示例13-21中任一项所述的方法的包括模块、单元、逻辑、电路系统、单元或它们的任意组合的处理器。
示例31包括计算机系统或其它电子设备,其包含互连、与互连耦合的处理器以及从DRAM、图形芯片、无线通信芯片、相变存储器和视频照相机中选出的与所述互连耦合的至少一个组件,所述计算机系统或其它电子设备执行示例13-21中任一项所述的方法。
示例32包括可选的非暂时性机器可读介质,其可选地存储或以其他方式提供指令,如果由处理器、计算机系统或其他机器执行和/或当由处理器、计算机系统或其他机器执行时,所述指令可操作以使所述机器执行示例13-21中任一项所述的方法。
示例33包括可操作以执行基本上如本文所描述的一个或多个操作或任何方法的处理器或其他装置。
示例34包括包含用于执行基本上如本文所描述的一个或多个操作或任何方法的单元的处理器或其他装置。
示例35包括可操作来执行基本上如本文所描述的任意指令的处理器或其他装置。
示例36包括包含用于执行基本上如本文所描述的任意指令的单元的处理器或其他装置。

Claims (36)

1.一种处理器,包括:
译码单元,其对指令译码,所述指令指示具有第一64位值的第一64位源操作数,指示具有第二64位值的第二64位源操作数,指示具有第三64位值的第三64位源操作数,以及指示具有第四64位值的第四64位源操作数;以及
执行单元,其与所述译码单元耦合,所述执行单元响应于所述指令而可操作来存储包含所述第一64位值与所述第二64位值相乘加上所述第三64位值加上所述第四64位值的结果,其中所述执行单元将所述结果的64位最低有效半数存储在由所述指令指示的第一64位目的地操作数中,并且将所述结果的64位最高有效半数存储在由所述指令指示的第二64位目的地操作数中。
2.如权利要求1所述的处理器,其中所述译码单元对包括RSA算法加速指令的指令进行译码。
3.如权利要求1所述的处理器,其中所述译码单元对隐式地指示具有所述第二64位值的第二64位源操作数为通用寄存器RAX的指令进行译码。
4.如权利要求1所述的处理器,其中所述译码单元对隐式地指示具有所述结果的64位最高有效半数的第二64位目的地操作数为通用寄存器RDX的指令进行译码。
5.如权利要求1所述的处理器,其中所述译码单元对隐式地指示具有所述第二64位值的第二64位源操作数为通用寄存器RAX以及隐式地指示具有所述结果的64位最高有效半数的第二64位目的地操作数为通用寄存器RDX的指令进行译码。
6.如权利要求1所述的处理器,其中所述译码单元对显式地规定具有所述第四64位值的第四64位源操作数的指令进行译码,所述具有所述第四64位值的第四64位源操作数隐式地与存储所述结果的64位最低有效半数的第一64位目的地操作数为相同的存储位置。
7.如权利要求1所述的处理器,其中所述译码单元对隐式地指示具有所述第三64位值的第三64位源操作数的指令进行译码,所述具有所述第三64位值的第三64位源操作数隐式地与存储所述结果的64位最高有效半数的第二64位目的地操作数为相同的存储位置。
8.如权利要求7所述的处理器,其中所述存储位置包括通用寄存器。
9.如权利要求1所述的处理器,其中所述译码单元对具有显式地规定仅两个操作数的格式的指令进行译码。
10.如权利要求9所述的处理器,其中所述译码单元对如下的指令进行译码:
显式地规定具有所述第一64位值的第一64位源操作数;
隐式地指示具有所述第二64位值的第二64位源操作数;
隐式地指示具有所述第三64位值的第三64位源操作数;
显式地规定具有所述第四64位值的第四64位源操作数;
隐式地指示存储所述结果的64位最低有效半数的第一64位目的地操作数与用于具有所述第四64位值的第四64位源操作数的存储位置为相同的存储位置;以及
隐式地指示存储所述结果的64位最高有效半数的第二64位目的地操作数与用于具有所述第三64位值的第三64位源操作数的存储位置为相同的存储位置。
11.如权利要求1所述的处理器,其中所述执行单元包括存储所述第一64位值和所述第二64位值二者的乘积与所述第三64位值之和的128位存储位置。
12.如权利要求1所述的处理器,其中所述执行单元包括将所述第一64位值和所述第二64位值二者相乘的128位乘积与表示所述第三64位值的值相加的128位加法器。
13.一种处理器中的方法,所述方法包括:
接收指令,所述指令指示具有第一64位值的第一64位源操作数,指示具有第二64位值的第二64位源操作数,指示具有第三64位值的第三64位源操作数以及指示具有第四64位值的第四64位源操作数;以及
响应于所述指令而存储结果,所述结果包含所述第一64位值与所述第二64位值相乘加上所述第三64位值加上所述第四64位值,其中存储所述结果包括将所述结果的64位最低有效半数存储在由所述指令指示的第一64位目的地操作数中,以及将所述结果的64位最高有效半数存储在由所述指令指示的第二64位目的地操作数中。
14.如权利要求13所述的方法,在RSA算法的OpenSSL库实现期间执行。
15.如权利要求14所述的方法,在所述RSA算法的所述OpenSSL库实现的函数bn_mul_mont期间执行。
16.如权利要求13所述的方法,其中接收包括接收隐式地指示具有所述第二64位值的第二64位源操作数为通用寄存器RAX的指令。
17.如权利要求13所述的方法,其中接收包括接收隐式地指示具有所述结果的64位最高有效半数的第二64位目的地操作数为通用寄存器RDX的指令。
18.如权利要求13所述的方法,其中接收包括接收隐式地指示具有所述第二64位值的第二64位源操作数为通用寄存器RAX、以及隐式地指示具有所述结果的64位最高有效半数的第二64位目的地操作数为通用寄存器RDX的指令。
19.如权利要求13所述的方法,其中接收包括接收显式地规定具有所述第四64位值的第四64位源操作数的指令,所述具有所述第四64位值的第四64位源操作数也隐式地与用于存储所述结果的64位最低有效半数的第一64位目的地操作数为相同的存储位置。
20.如权利要求13所述的方法,其中接收包括接收隐式地指示具有所述第三64位值的第三64位源操作数的指令,所述具有所述第三64位值的第三64位源操作数还隐式地与用于存储所述结果的64位最高有效半数的第二64位目的地操作数为相同的存储位置。
21.如权利要求13所述的方法,其中接收包括接收具有显式地规定仅两个操作数的格式的指令。
22.一种处理器,包括:
多个通用寄存器;
译码单元,其对RSA算法加速指令进行译码,所述RSA算法加速指令指示具有第一64位值的第一64位源操作数,隐式地指示通用寄存器RAX作为具有第二64位值的第二64位源操作数,指示具有第三64位值的第三64位源操作数,以及指示具有第四64位值的第四64位源操作数;以及
执行单元,其与所述译码单元和所述多个通用寄存器耦合,所述执行单元响应于所述RSA算法加速指令而可操作来存储结果,所述结果包含所述第一64位值与所述第二64位值相乘加上所述第三64位值加上所述第四64位值,其中所述执行单元将所述结果的64位最低有效半数存储在位于与64位源操作数相同的存储位置上的、由所述指令指示的第一64位目的地操作数中,以及将所述结果的64位最高有效半数存储在作为由所述指令指示的第二64位目的地操作数的隐式地指示的通用寄存器RDX中。
23.如权利要求22所述的处理器,其中所述通用寄存器RDX也用于存储所述第三64位值,其中用于存储所述结果的64位最低有效半数的存储位置还用于存储所述第四64位值。
24.一种处理指令的系统,包括:
互连;
处理器,其与所述互连耦合,所述处理器接收指令,所述指令指示具有第一64位值的第一64位源操作数,指示具有第二64位值的第二64位源操作数,指示具有第三64位值的第三64位源操作数,以及指示具有第四64位值的第四64位源操作数,所述处理器响应于所述指令而可操作来存储结果,所述结果包含所述第一64位值与所述第二64位值相乘加上所述第三64位值加上所述第四64位值,其中所述处理器将所述结果的64位最低有效半数存储在由指令指示的第一64位目的地操作数中,以及将所述结果的64位最高有效半数存储在由所述指令指示的第二64位目的地操作数中;以及
动态随机存取存储器(DRAM),其与所述互连耦合,所述DRAM存储使用所述指令来更新阵列的参数的RSA算法的OpenSSL实现。
25.如权利要求24所述的系统,其中所述指令隐式地指示具有所述第二64位值的第二64位源操作数为第一通用寄存器,以及隐式地指示具有所述结果的64位最高有效半数的第二64位目的地操作数为不同的第二通用寄存器。
26.一种包含非暂时性机器可读存储介质的制造品,所述非暂时性机器可读存储介质存储指令,所述指令指示具有第一64位值的第一64位源操作数,指示具有第二64位值的第二64位源操作数,指示具有第三64位值的第三64位源操作数,以及指示具有第四64位值的第四64位源操作数,所述指令如果由机器执行则可操作以使所述机器执行包括如下的操作:
存储结果,所述结果包含所述第一64位值所述第二64位值相乘加上所述第三64位值加上所述第四64位值,其中所述结果的64位最低有效半数存储在由所述指令指示的第一64位目的地操作数中,以及所述结果的64位最高有效半数存储在由所述指令指示的第二64位目的地操作数中。
27.如权利要求26所述的制造品,其中所述指令隐式地指示具有所述第二64位值的第二64位源操作数为第一通用寄存器,以及隐式地指示具有所述结果的64位最高有效半数的第二64位目的地操作数为不同的第二通用寄存器。
28.一种可操作以执行如权利要求13-21中任一项所述的方法的处理器或其他装置。
29.一种包括用于执行如权利要求13-21中任一项所述的方法的模组的处理器或其他装置。
30.一种包括用于执行如权利要求13-21中任一项所述的方法的模块、单元、逻辑、电路系统、模组或它们的任意组合的处理器或其他装置。
31.一种包括可选的非暂时性机器可读介质的制造品,所述可选的非暂时性机器可读介质可选地存储或以其他方式提供指令,如果由处理器、计算机系统或其他机器执行和/或当由处理器、计算机系统或其他机器执行时,所述指令可操作以使所述机器执行权利要求13-21中任一项所述的方法。
32.一种计算机系统或其他电子设备,其包括:互连;与所述互连耦合的处理器;以及从DRAM、图形芯片、无线通信芯片、相变存储器和视频照相机中选出的与所述互连耦合的至少一个组件,所述计算机系统或其他电子设备可操作来执行权利要求13-21中任一项所述的方法。
33.一种可操作来执行实质如本文所描述的一个或多个操作或任何方法的处理器或其他装置。
34.一种包括用于执行实质如本文所描述的一个或多个操作或任何方法的模组的处理器或其他装置。
35.一种执行实质如本文所描述的任意指令的处理器或其他装置。
36.一种包括用于执行实质如本文所描述的任意指令的模组的处理器或其他装置。
CN201380081286.4A 2013-12-28 2013-12-28 Rsa算法加速处理器、方法、系统以及指令 Pending CN105814536A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/090801 WO2015096167A1 (en) 2013-12-28 2013-12-28 Rsa algorithm acceleration processors, methods, systems, and instructions

Publications (1)

Publication Number Publication Date
CN105814536A true CN105814536A (zh) 2016-07-27

Family

ID=53477424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380081286.4A Pending CN105814536A (zh) 2013-12-28 2013-12-28 Rsa算法加速处理器、方法、系统以及指令

Country Status (7)

Country Link
US (1) US10187208B2 (zh)
EP (1) EP3087470B1 (zh)
JP (1) JP2017503232A (zh)
KR (1) KR101927858B1 (zh)
CN (1) CN105814536A (zh)
DE (1) DE112013007736T5 (zh)
WO (1) WO2015096167A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107358125A (zh) * 2017-06-14 2017-11-17 北京多思科技工业园股份有限公司 一种处理器
CN108228137A (zh) * 2016-12-22 2018-06-29 英特尔公司 蒙哥马利乘法处理器、方法、系统和指令

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10187208B2 (en) 2013-12-28 2019-01-22 Intel Corporation RSA algorithm acceleration processors, methods, systems, and instructions
CN109710308B (zh) * 2017-10-25 2023-03-31 阿里巴巴集团控股有限公司 任务的处理方法、装置和系统
CN110825436B (zh) * 2018-08-10 2022-04-29 昆仑芯(北京)科技有限公司 应用于人工智能芯片的计算方法和人工智能芯片
CN114095149B (zh) * 2021-11-12 2023-05-30 龙芯中科技术股份有限公司 信息加密方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100504758C (zh) * 2004-01-26 2009-06-24 富士通微电子株式会社 多字乘法-累加电路和蒙哥马利模乘法-累加电路
US20110153994A1 (en) * 2009-12-22 2011-06-23 Vinodh Gopal Multiplication Instruction for Which Execution Completes Without Writing a Carry Flag

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4405829A (en) 1977-12-14 1983-09-20 Massachusetts Institute Of Technology Cryptographic communications system and method
US6412063B1 (en) * 1999-04-02 2002-06-25 Via-Cyrix, Inc. Multiple-operand instruction in a two operand pipeline and processor employing the same
US6714197B1 (en) * 1999-07-30 2004-03-30 Mips Technologies, Inc. Processor having an arithmetic extension of an instruction set architecture
US6427159B1 (en) * 1999-08-03 2002-07-30 Koninklijke Philips Electronics N.V. Arithmetic unit, digital signal processor, method of scheduling multiplication in an arithmetic unit, method of selectively delaying adding and method of selectively adding during a first or second clock cycle
DE10061997A1 (de) 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
DE10260655B3 (de) 2002-12-23 2004-06-24 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden, insbesondere bei der kryptographischen Berechnung
US7720900B2 (en) * 2005-09-09 2010-05-18 International Business Machines Corporation Fused multiply add split for multiple precision arithmetic
CN100518058C (zh) * 2005-10-12 2009-07-22 浙江大学 一种用于公钥密码运算加速的方法及其体系结构
US7974409B2 (en) 2007-06-28 2011-07-05 Samsung Electronics Co., Ltd. Changing the order of public key cryptographic computations
JP5097138B2 (ja) 2009-01-15 2012-12-12 シャープ株式会社 モンゴメリ乗算のための演算回路及び暗号回路
US8468191B2 (en) * 2009-09-02 2013-06-18 Advanced Micro Devices, Inc. Method and system for multi-precision computation
US8549264B2 (en) 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
US8667042B2 (en) 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
CN102662628B (zh) * 2012-03-23 2015-03-04 山东大学 Rsa加密算法的指令优化处理器
US9804840B2 (en) * 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US10187208B2 (en) 2013-12-28 2019-01-22 Intel Corporation RSA algorithm acceleration processors, methods, systems, and instructions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100504758C (zh) * 2004-01-26 2009-06-24 富士通微电子株式会社 多字乘法-累加电路和蒙哥马利模乘法-累加电路
US20110153994A1 (en) * 2009-12-22 2011-06-23 Vinodh Gopal Multiplication Instruction for Which Execution Completes Without Writing a Carry Flag

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JOHANN GROSSSCHADL ET AL: "《Proceedings of the 2nd Workshop on Intelligent Solutions in Embedded Systems》", 31 December 2004 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228137A (zh) * 2016-12-22 2018-06-29 英特尔公司 蒙哥马利乘法处理器、方法、系统和指令
CN108228137B (zh) * 2016-12-22 2024-03-08 英特尔公司 蒙哥马利乘法处理器、方法、系统和指令
CN107358125A (zh) * 2017-06-14 2017-11-17 北京多思科技工业园股份有限公司 一种处理器

Also Published As

Publication number Publication date
EP3087470B1 (en) 2020-03-25
KR20160079038A (ko) 2016-07-05
WO2015096167A1 (en) 2015-07-02
JP2017503232A (ja) 2017-01-26
EP3087470A4 (en) 2017-08-16
US10187208B2 (en) 2019-01-22
DE112013007736T5 (de) 2016-12-22
US20160308676A1 (en) 2016-10-20
EP3087470A1 (en) 2016-11-02
KR101927858B1 (ko) 2018-12-11

Similar Documents

Publication Publication Date Title
JP6351682B2 (ja) 装置および方法
US10152325B2 (en) Instruction and logic to provide pushing buffer copy and store functionality
KR101790428B1 (ko) 조건부 루프들을 벡터화하기 위한 명령어들 및 로직
CN104115115B (zh) 用于多精度算术的simd整数乘法累加指令
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN107729048B (zh) 提供向量压缩和旋转功能的指令和逻辑
CN108369509B (zh) 用于基于通道的跨步分散操作的指令和逻辑
CN108292229B (zh) 用于重新出现的相邻聚集的指令和逻辑
CN108369516B (zh) 用于加载-索引和预取-分散操作的指令和逻辑
US20130339649A1 (en) Single instruction multiple data (simd) reconfigurable vector register file and permutation unit
EP3384378B1 (en) Instruction and logic for in-order handling in an out-of-order processor
CN108351779A (zh) 用于安全指令执行流水线的指令和逻辑
JP5607832B2 (ja) 汎用論理演算の方法および装置
KR20170131379A (ko) 원자적 범위 연산들을 제공하기 위한 명령어들 및 로직
CN105247475A (zh) 紧缩数据元素断定处理器、方法、系统和指令
CN105814536A (zh) Rsa算法加速处理器、方法、系统以及指令
CN108292271B (zh) 用于向量置换的指令和逻辑
CN109791486A (zh) 用于具有紧凑指令编码的指令的处理器、方法、系统和指令转换模块
TW201723810A (zh) 用於部分縮減操作之指令及邏輯
WO2017105716A1 (en) Instructions and logic for even and odd vector get operations
JP2014182796A (ja) 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法
US8719519B2 (en) Split-word memory
CN106293631B (zh) 用于提供向量分散操作和聚集操作功能的指令和逻辑
JP5798650B2 (ja) 短整数の乗算の数を減らすためのシステム、装置、および方法
US20160378480A1 (en) Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160727

RJ01 Rejection of invention patent application after publication