CN103930869A - 密码算法中用于支持散列值生成的simd指令 - Google Patents

密码算法中用于支持散列值生成的simd指令 Download PDF

Info

Publication number
CN103930869A
CN103930869A CN201280055673.6A CN201280055673A CN103930869A CN 103930869 A CN103930869 A CN 103930869A CN 201280055673 A CN201280055673 A CN 201280055673A CN 103930869 A CN103930869 A CN 103930869A
Authority
CN
China
Prior art keywords
value
xor
data
multiple data
single instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201280055673.6A
Other languages
English (en)
Other versions
CN103930869B (zh
Inventor
马修·詹姆斯·霍斯内尔
理查德·罗伊·格里森思怀特
丹尼尔·克尔肖
斯图亚特·大卫·贝尔斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN103930869A publication Critical patent/CN103930869A/zh
Application granted granted Critical
Publication of CN103930869B publication Critical patent/CN103930869B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Power Engineering (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

数据处理系统(2)包括单一指令多重数据寄存器文件(12)及单一指令多重处理电路(14)。单一指令多重数据处理电路(14)支持用于执行散列算法的部分的密码处理指令的执行。操作数存储在单一指令多重数据寄存器文件(12)内。支持密码的指令不遵循一般基于通道的处理且产生输出操作数,在这些输出操作数中,输出操作数的不同部分取决于在输入操作数内的多个不同元素。

Description

密码算法中用于支持散列值生成的SIMD指令
技术领域
本发明关于数据处理系统领域。更具体地,本发明关于在数据处理系统内提供支持密码的指令。
背景技术
使用数据处理系统执行密码操作是为人们已知的。这种已知密码处理操作的实例包括安全散列算法(Secure Hash Algorithm;SHA)。SHA具有各种不同已知形式,包括SHA-1、SHA-2、SHA256及SHA512。这些算法是运算密集的算法。
一种支持这些算法的已知方法是使用通用处理器,该通用处理器利用该通用处理器的通用寄存器文件(register file)执行通用指令。此方法的一个问题在于执行这些算法必须操纵大量状态数据(通常可产生160位及160位以上的散列值),结果是操作通常必须被分解并且每次由对数据的部分进行操作的单独程序指令的长序列执行,进而导致执行算法所需的时间量及执行算法时消耗的能量的不利增加。
另一已知方法是提供专用支持密码的处理器,诸如密码共处理器,该密码共处理器具有专用电路,该专用电路用于执行该算法且通常通过传递待散列的数据的开始的指针且然后等待接收所得散列值而启动。此方法之问题在于:提供专用密码硬件产生了额外成本及复杂性。此外,在将专用硬件的操作与装置的其他操作整合时会产生问题,诸如中断处理、多任务等等,因为将专用密码硬件并入通常在数据处理系统内提供的机制中以使用数据处理系统处理操作的这些方面非常困难且复杂。
发明内容
自一个方面而言,本发明提供一种数据处理设备,该数据处理设备包含:
单一指令多重数据寄存器文件;及
单一指令多重数据处理电路,该单一指令多重数据处理电路耦接至该单一指令多重数据寄存器文件且被配置为由单一指令多重数据程序指令控制,以独立地对存储在单独通道内的单独数据元素执行处理操作,该单独通道在该单一指令多重数据寄存器文件的输入操作数寄存器内;其中
该单一指令多重数据处理电路被配置为由另外的程序指令控制,以对向量数据值执行另外的处理操作,该向量数据值包含保持在该单一指令多重数据寄存器文件的输入操作数寄存器内的数据元素序列,以产生存储在该单一指令多重数据寄存器文件的输出操作数寄存器内的输出操作数,该输出操作数具有含有值的第一部分,该值取决于在该数据元素序列内的所有数据元素。
本发明技术认识到,许多数据处理系统已具备单一指令多重数据处理机制。这些单一指令多重数据处理机制通常包括单一指令多重数据寄存器文件,该单一指令多重数据寄存器文件具有能够存储且操纵大数据宽度操作数的大存储容量,这些大数据宽度操作数通常在单一指令多重数据处理中涉及。在单一指令多重数据处理中,通常在单一程序指令控制下独立地处理数据的单独通道。例如,数据的单独通道可包含色彩像素值或其他向量值的分量值,所有这些值皆将经受相同处理操作,诸如缩放。本发明技术认识到,单一指令多重数据寄存器文件的存储能力可利用另外的程序指令重复使用,该另外的程序指令不遵循单一指令多重数据程序指令的通常形式。特定言之,通道的处理不必为独立的,且产生的输出操作数可具有含有值的第一部分,该值取决于在形成输入的向量数据值内的所有数据元素。
在单一指令多重数据程序指令的区域外的单一指令多重寄存器文件的重复使用可应用于各种领域,诸如数据压缩及数据密码术。本技术尤其非常适合于数据密码术。
在此上下文中,另外的程序指令可经安排以执行迭代处理操作,该迭代处理操作消耗连续的数据字及至少部分中间散列值以产生输出散列值。散列值产生通常需要操纵大量的数据及寄存器文件,同时具有存储及操纵非常长的操作数值的能力。
另外的程序指令的一个形式为其中该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Sn[31:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中OP FUNC(B,C,D)为以下其中之一:
(((C XOR D)AND B)XOR D);
(B XOR C XOR D);及
(B AND C)OR((B OR C)AND D);及
ROL(P,Q)为值P左旋转Q位位置。
迭代程序指令的该形式非常适合于实施SHA-1算法。应了解,上文定义的操作能够以伪代码形式给出,且上文定义的操作能够以各种不同硬件形式实施,熟习该领域技术的技术人员将很好地理解此点。特定言之,低电路额外负担实施可再循环值以执行迭代操作,其中较高效能实施可寻求并行执行至少部分不同迭代。
另外的程序指令的另一形式具有自该单另一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Sn[31:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中OP FUNC(B,C,D)为以下其中之一:
(((C XOR D)AND B)XOR D);
(B XOR C XOR D);及
(B AND C)OR((B OR C)AND D);及
ROL(P,Q)为值P左旋转Q位位置。
由OP FUNC评估的函数的选择可依赖于在另外的程序指令内的特定字段进行,或该选择可依赖于在处理待散列的数据值之当前输入区块期间已执行多少次迭代。
在一些实施例中,单一指令多重数据寄存器文件可能不具有将所有第一输入操作数及第二输入操作数存储在单个寄存器中的能力,且因此这些输入操作数可存储于在单一指令多重数据寄存器文件内的单独寄存器内。在其他实施例中,第一输入操作数及第二输入操作数可存储在共享寄存器内,且第一输入操作数及第二输入操作数可视为单个输入操作数。
在进一步实施例中,与上述另外的程序指令结合或代替上述另外的程序指令,本发明技术可提供对另外的程序指令的支持,该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Qn[127:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中Choose(B,C,D)为(((C XOR D)AND B)XOR D),Majority(B,C,D)为((B AND C)OR((B OR C)AND D)),Sigma0(B)为(ROR(B,2)XORROR(B,13)XOR ROR(B,22)),Sigma1(B)为(ROR(B,6)XOR ROR(B,11)XOR ROR(B,25))且ROR(P,Q)为值P右旋转Q位位置。
以类似方式,另外的程序指令亦可具有一形式,在该形式中,另外的程序指令具有自该单另一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Qn[127:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中Choose(B,C,D)为(((C XOR D)AND B)XOR D),Majority(B,C,D)为((B AND C)OR((B OR C)AND D)),Sigma0(B)为(ROR(B,2)XORROR(B,13)XOR ROR(B,22)),Sigma1(B)为(ROR(B,6)XOR ROR(B,11)XOR ROR(B,25))且ROR(P,Q)为值P右旋转Q位位置。
上述两种形式的另外的程序指令特别适合于支持SHA-224算法及SHA256算法。
用于管理另外的程序指令的处理的机制可方便地与单一指令多重数据处理电路结合。用于管理另外的处理指令的处理的机制使用单一指令多重数据指令寄存器文件,且当用于管理另外的程序指令的处理(例如中断处理、调度)的机制与单一指令多重数据处理电路的机制整合时,实施可简化。
管理可与单一指令多重数据处理电路的程序指令整合的另外的程序指令的处理的方面包括寄存器重新命名、指令调度、指令发出、指令报废及指令中断。单一指令多重数据处理电路通常已包括管理且支持这些操作的电路组件,且另外的程序指令可相对容易地整合至该管理支持中。此举提供了以下优点:若中断在产生密码散列值中途发生,则正常中断处理机制可用以服务该中断且在服务该中断之后重新启动或继续散列计算而具有较少额外管理负担或复杂性。
对散列算法的支持进一步通过提供旋转指令增强,该旋转指令具有输入操作数Sm[31:0]且产生具有值的输出操作数Sd[31:0],该值与Sm[31:0]右旋转两个位位置给出的值相同。
除产生中间散列值之外还应执行的密码散列算法处理的另一方面为更新在正在处理的文件内的数据元素的调度。应根据散列产生的工作负载平衡该调度更新,以免引入处理量的不利瓶颈。因此,本发明的一些实施例规定该单一指令多重数据处理电路被配置为由第一调度更新指令控制,该第一调度更新指令具有第一输入操作数Sp[127:0]及第二输入操作数Sq[127:0]且产生具有值的输出操作数Sr[127:0],该值与由以下步骤给出的值相同:
T[127:0]={Sp[63:0]:Sq[127:64]}及
Sr[127:0]=T[127:0]XOR Sr[127:0]XOR Sq[127:0].
此外,一些实施例规定该单一指令多重数据处理电路被配置为由第二调度更新指令控制,该第二调度更新指令具有输入操作数Ss[127:0]且产生具有值的输出操作数St[127:0],该值与由以下步骤给出的值相同:
T[127:0]=St[127:0]XOR{32{0}:Ss[127:32]};
St[95:0]={T[94:64]:T[95]:T[62:32]:T[63]:T[30:0]:T[31]};及
St[127:96]=({T[126:96]:T[127]})XOR({T[29:0]:T[31:30]}).
上述两种形式的程序指令特别适合于支持SHA-256及SHA-224算法。
为了帮助支持其他形式的散列算法的调度产生,根据一些实施例该单一指令多重数据处理电路被配置为由第一调度更新指令控制,该第一调度更新指令具有输入操作数Sp[127:0]且产生具有值的输出操作数Sq[127:0],该值与由以下步骤给出的值相同:
T[127:0]={Sp[31:0]:Sq[127:32]};
T[127:0]=VecROR32(T[127:0],7)XOR VecROR32(T[127:0],18)XORVecROR32(T[127:0],3);及
Sq[127:0]=VecADD32(T[127:0],Sq[127:0]),
其中VecROR32(A,B)为在A内的每个32位字单独右旋转B位位置,且VecADD32(A,B)为在A内的每个32位字单独增加至在B内的相应32位字。
进一步实施例另外提供该单一指令多重数据处理电路,该单一指令多重数据处理电路被配置为由第一调度更新指令控制,该第一调度更新指令具有第一输入操作数Sp[127:0]及第二输入操作数Sq[127:0]且产生具有值的输出操作数Sr[127:0],该值与由以下步骤给出的值相同:
T0[127:0]={Sq[31:0]:Sp[127:32]};
T1[63:0]=Sq[127:64];
T1[63:0]=VecROR32(T1[63:0],17)XOR VecROR32(T1[63:0],19)XORVecROR32(T1[63:0],10);
T3[63:0]=VecADD32(Sr[63:0],T0[63:0]);
T1[63:0]=VecADD32(T3[63:0],T1[63:0]);
T2[63:0]=VecROR32(T1[63:0],17)XOR VecROR32(T1[63:0],19)XORVecROR32(T1[63:0],10);
T3[63:0]=VecADD32(Sr[127:64],T0[127:64]);及
Sr[127:0]={VecADD32(T3[63:0],T2[63:0]):T1[63:0]},
其中VecROR32(A,B)为在A内的每个32位字单独右旋转B位位置,且VecADD32(A,B)为在A内的每个32位字单独增加至B内的相应32位字。
上述两种形式的程序指令特别适合于支持SHA-256算法。
自另一方面而言,本发明提供数据处理设备,该数据处理设备包含:
单一指令多重数据寄存器文件装置,用于存储单一指令多重数据操作数;及
单一指令多重数据处理装置,用于在单一指令多重数据程序指令的控制下执行处理操作,该单一指令多重数据处理装置耦接至该单一指令多重数据寄存器文件装置,且对存储在该单一指令多重数据寄存器文件装置的输入操作数寄存器内的单独通道内的单独数据元素独立地执行该处理操作;其中
该单一指令多重数据处理装置由另外的程序指令控制,以对向量数据值执行另外的处理操作,该向量数据值包含保持在该单一指令多重数据寄存器文件装置的输入操作数寄存器内的数据元素序列,以产生存储在该单一指令多重数据寄存器文件装置的输出操作数寄存器内的输出操作数,该输出操作数具有含有值的第一部分,该值取决于在该数据元素序列内的所有数据元素。
自进一步方面而言,本发明提供一种处理数据的方法,该方法包含以下步骤:
将单一指令多重数据操作数存储在单一指令多重数据寄存器文件内;
在单一指令多重数据程序指令的控制下,独立地对存储在该单一指令多重数据寄存器文件的输入操作数寄存器内的单独通道内的单独数据元素执行处理操作;及
在另外的程序指令的控制下,对向量数据值执行另外的处理操作,该向量数据值包含保持在该单一指令多重数据寄存器文件的输入操作数寄存器内的数据元素序列,以产生存储在该单一指令多重数据寄存器文件的输出操作数寄存器内的输出操作数,该输出操作数具有含有值的第一部分,该值取决于在该数据元素序列内的所有数据元素。
本发明的另一方面提供虚拟机实施,该虚拟机实施提供在通用计算机上的执行环境,该执行环境许可上文详述的程序指令如同这些程序指令在上文详述的数据处理设备上执行一样执行。在本文中涵盖本技术的这些虚拟机实施。
附图说明
下面通过举例,并参照附图描述本发明的实施例,附图中:
图1示意性示出包括单一指令多重数据寄存器文件及单一指令多重数据处理电路的数据处理设备,该单一指令多重数据处理电路包括对执行密码处理指令的支持;
图2示意性示出在散列算法的一示例性形式内的数据流;及
图3示意性示出另外的处理指令如何不遵循与单一指令多重数据处理电路相关联的一般的基于通道的处理。
具体实施方式
图1示意性示出中央处理单元4形式的数据处理设备2,该中央处理单元4耦接至存储器6,该存储器6存储待操纵的数据及待执行的程序指令。中央处理单元4包括通用寄存器文件8、通用处理电路10、单一指令多重数据寄存器文件12及单一指令多重数据处理电路14。通用寄存器文件8通常含有低位宽度通用寄存器(例如32位或64位),诸如具有由英国剑桥的ARM有限公司生产的处理器的通用寄存器文件支持的形式的寄存器。单一指令多重数据寄存器文件12通常包括更大的寄存器,且在单一指令多重数据寄存器文件12之内的数据存储可取决于所利用的寄存器大小说明符以不同方式划分以形成不同寄存器。单一指令多重数据寄存器文件12的形式可为由英国剑桥的ARM有限公司生产的处理器的一些实施中支持的Neon寄存器文件的形式。
通用寄存器重新命名及记数电路(score boarding circuitry)16与通用寄存器文件10相关联,且单一指令多重数据寄存器重新命名及记数电路18与单一指令多重数据寄存器文件12相关联。寄存器重新命名及记数自身是本领域技术人员所熟知的已知技术且将不在本文中进一步描述。与提供寄存器重新命名及记数用于一般单一指令多重数据处理指令的方式相同,寄存器重新命名及记数可应用于在下文中进一步描述的密码处理指令的支持中所利用的寄存器。因此,已提供用于支持寄存器重新命名、指令调度、指令发出、指令报废及指令中断的机制可由支持密码的程序指令重新使用,且相应地,这些支持密码的指令的操作可较好地与中央处理单元4的整体操作整合。
程序指令I接收自存储器6且传递至指令管线(instruction pipeline)20。指令译码器22将程序指令译码且产生控制信号,该控制信号控制寄存器文件8、12及处理电路10、14,以及在中央处理单元4内的其他组件的操作。中断电路24响应于外部产生的中断信号int以中断当前由中央处理单元4执行的处理,且开始执行为本技术领域技术人员所熟知的中断处理代码。应了解,中央处理单元4通常将包括许多附加电路组件,且为了清楚起见,已将这些附加电路组件从第1图中省略。
图2示意性图示了散列产生算法的一种形式内的数据流。待散列的文件26被分割成64字节区块28,该64字节区块28经进一步分割成作为一个输入提供至散列算法30的四个32位字的输入向量。在散列操作开始时还提供散列种子值32。散列操作使用两个主程序回路,该两个主程序回路分别负责散列更新34及调度更新36。这些主回路通过在单一指令多重数据处理电路14中提供支持两个回路的专用程序指令来平衡。中间散列值38由散列更新回路34产生且在散列算法持续处理输入数据的区块28时被反馈。当已处理区块28(例如,在SHA-1情况下经历80个散列更新)时,然后通过将当前中间散列值38添加至输出散列值40中而更新输出散列值40。重复该过程直至全部文件26已用完为止。此举总体上产生文件26的最终散列值。
散列更新回路34将被执行多次,且散列更新回路34自身执行指令,这些指令中的每个指令具有其自身的指令内部迭代,下文将对其进行描述。执行调度更新36以便平衡散列更新。调度更新可经向量化以改良效能,下文将对其进行描述。
图3示意性图示根据本发明技术的另外的处理指令如何接收包含多个数据元素的向量数据值42。然后,支持密码的指令对该向量数据值42执行处理操作以产生具有第一部分44的输出操作数,该第一部分44取决于向量数据值42的第一数据元素及在向量数据值内的两个或两个以上另外的数据元素。该行为与典型单一指令多重数据程序指令形成对比,在该典型单一指令多重数据程序指令中处理操作是基于通道的且在不同通道内的数据值之间存在有限的互动。
本技术之一实施是一组指令,该组指令将两个算法作为目标,亦即,算法SHA-1及SHA-256。指令亦对SHA-224算法有利,SHA-224算法需要与SHA-256相同的操作。SHA算法为由国家标准技术局(NationalInstitute of Standards and Technology;NIST)规定的安全散列算法系列。这些算法的规范可公开得到。这些算法通常用于验证数字系统内的数据。
我们从描述SHA算法的高阶操作且包括用于SHA-1及SHA-256算法的伪码开始。
SHA算法的高阶操作(已知;FIPS180-4)
算法中的每个算法处理64字节数据,且产生散列摘要(digest);在SHA-1的情况下,为160位的长度,且在SHA-256的情况下,为256位的长度。长度大于64字节的数据流被分为64字节区块。在流或区块长度小于64字节的情况下,可按照在美国联邦信息处理标准(Federal InformationProcessing Standard;FIPS)180-4中所规定将区块填充至64字节。除非另有说明,否则算法的以下描述假设字为32位无符号整数值。假设字由来自大端(big endian)形式的64字节区块的数据的4个相连字节组成。
两个算法均通过初始化工作的散列摘要开始。若数据区块为给定数据流中的第一个,则将散列摘要初始化至固定种子值。若区块为数据流的延续,则将散列摘要初始化至由先前区块计算的散列摘要。在FIPS180-4中规定种子值。
算法使用调度更新操作扩展区块。对于SHA-1,将区块自初始16数据字扩展为80字;对于SHA-256,扩展为64字。调度更新操作使用固定逻辑异或(xor)将来自调度的四个字结合,并且将该四个字移位且旋转,以在扩展调度中产生下一个字。初始16个字在扩展调度中保持不变。
然后,扩展调度中的每个字具有添加至该字的键值。在SHA-1中,存在4个键常数,每个键常数应用于来自扩展区块的一组20个字。在SHA-256中,存在64个键常数,扩展区块的每个字有一个键常数。在FIPS180-4中定义键常数。在已扩展区块且已添加键常数之后,使用散列更新函数处理每个字,该散列更新函数经由一系列固定逻辑异或并入该字,并且移位且旋转至散列摘要中。
最终,在已使用散列更新函数处理来自扩展区块的每个字之后,将散列摘要添加至先前散列摘要值。
如FIPS180-4中所规定,调度可实施为80/64字(SHA-1/SHA-256)的集合或实施为16字的循环队列。
为完整起见,假定循环队列的SHA-1及SHA-256的伪码算法如下。
SHA-1算法伪码
uint32w[0:15]=164-bytes(big-endian)input[];
uint32wk[0:15]=w[0:15]+k[0:15];
uint32a:e=io->hashes[0:4];
for round=0:63{
hash_update(round,wk[round]);
w[round]=scheduleupdate(round,w);
wk[round]=w[round]+k[round];
}
for round=64:79
hash_update(round,w[round]);
io->hashes[0:4]+=a:e;
SHA-1散列更新代码如下:
hash_update(int round,uint32wk){
e+=FN(round,b,c,d)+ROL(a,5)+wk;
b=ROL(b,30);
rotate(a,b,c,d,e)to(e,a,b,c,d)
}
其中:
if round<20,FN=choose(b,c,d);
else if round<40,FN=parity(b,c,d);
else if round<60,FN=maj ority(b,c,d);
else FN=Parity(b,c,d);
choose(b,c,d)=(((c^d)&b)^d)
parity(b,c,d)=(b^c^d)
majority(b,c,d)=(b&c)|((b|c)&d)
SHA-1调度更新代码如下:
uint32schedule_update(int round,uint32*w){
retum ROR(w[round-3]^W[round-8]^W[round-14]^W[round-16],31);
}
SHA-256算法伪码
uint32a:h=io->hashes[0:7];
uint32w[0:15]=164-bytes(big-endian)input[0:63];
uint32wk[0:15]=w[0:15]+k[0:15];
for round=0:47{
hash_update(wk[round]);
w[round]=schedule_update(round,w);
wk[round]=w[round]+k[round];
}
for round=48:63
hash_update(wk[round]);
io->hashes[0:7]+=a:h;
SHA-256散列更新代码如下:
hash_update(uint32wk){
t=h+Sigma1(e)+Choose(e,f,g)+wk;
d+=t;
h=t+Sigma0(a)+Majority(a,b,c);
rotate(a,b,c,d,e,f,g,h)to(h,a,b,c,d,e,f,g);
}
其中:
Sigma0(x)=ror(x,2)^ror(x,13)^ror(x,22);
Sigmal(x)=ror(x,6)^ror(x,11)^ror(x,25);
Choose(b,c,d)=(((c^d)&b)^d)
Majority(b,c,d)=((b&c)|((b|c)&d)
同样地,SHA-256调度更新伪码如下:
uint32schedule_update(int round,uint32*w){
return w[round]+sigmal(w[round-2])+w[round-7]+sigma0(w[round-15]);
}
其中:
sigma0(x)=ror(x,7)^ror(x,18)^shr(x,3);
sigma1(x)=ror(x,17)^ror(x,19)^shr(x,10);
SHA算法工作状态(可源自FIPS180-4规范)
约束经采用以加速SHA算法的方法的SHA算法的一方面为处理数据区块所需要的工作状态量(如先前所述)。单一指令多重数据寄存器文件保持且操纵此状态的能力解决该约束。
下表概括对于SHA-1及SHA-256的状态要求。
SHA-1状态
SHA-256状态
使用SHA-1或SHA-256算法中任一者构建能够处理数据区块的专用SHA单元(例如,共处理器)需要固定目的状态的投入。该状态无法轻易地由RISC微处理器上的其他操作使用。
将SHA算法分成三元形式RISC指令
为了避免固定目的状态,我们已通过可于RISC微处理器上处理算法的方法将算法分解,该RISC微处理器监视三元指令形式且使用单一指令多重数据处理电路及寄存器文件。
RISC三元形式的典型约束为三个寄存器中仅一个寄存器被定义为目的地。然而,目的地可用为源。
我们使用SIMD寄存器以便比使用通用寄存器每指令可处理更多数据。
通过监视三元指令形式,指令能够使用为现代微处理器所常见的重新命名、调度、发出、结果及报废逻辑。
由于所有状态及相依性由指令定义,所以处理乱序执行、中断及推测(speculation)的管线机制仍然有效;不需要附加控制逻辑即可以保持所提议指令的正确执行。
SHA-1散列更新指令
先前所述的SHA-1散列更新函数将32位字并入160位散列摘要中。函数由固定移位、固定逻辑异或/逻辑和(and)/逻辑或(or)及固定旋转组成。
hash_update(int round,uint32wk){
e+=FN(round,b,c,d)+ROL(a,5)+wk;
b=ROL(b,30);
rotate(a,b,c,d,e)to(e,a,b,c,d)
}
其中:
if round<20,FN=choose(b,c,d);
else if round<40,FN=parity(b,c,d);
else if round<60,FN=majority(b,c,d);
else FN=Parity(b,c,d);
choose(b,c,d)=(((c^d)&b)^d)
parity(b,c,d)=(b^c^d)
majority(b,c,d)=(b&c)|((b|c)&d)
SHA-1散列摘要为160位,且因此对整个摘要加上32位字进行的操作不可能为32位通用三元RISC形式,且这些操作将需要很大努力才能实现为64位通用三元RISC形式;将需要更多内务处理才能将32位数据值插入第三64位操作数的高32位中。
为此,该示例性技术将SHA-1散列函数映射至一组四个高阶SIMD指令;该四个高阶SIMD指令为SHA1C、SHA1P、SHA1M及SHA1H。
SHA1C Qd,Sn,Vm.4S[OP=C,OP_FUNC=choose]
SHA1P Qd,Sn,Vm.4S[OP=P,OP_FUNC=parity]
SHA1M Qd,Sn,Vm.4S[OP=M,OP_FUNC=majority]
SHA1H Sd,Sn
指令SHA1C、SHA1P及SHA1M采用三个操作数。Qd保持摘要散列的前4个32位字,其中Sn保持第5个。第三操作数Vm为向量,该向量在初始实施例中保持四个32位字。这允许待由指令处理的散列更新函数的4个迭代。伪码定义这些指令的操作如下文所述。应了解,根据伪码定义指令的操作为本领域技术人员所熟知,且一旦已定义伪码,则进行(执行)由伪码定义的指令的电路的实现是常规任务。
SHA1<OP>Qd,Sn,Vm.4S
X=Qd;
Y=Sn;
For(i=0to3)
{
Index  =(i*32);
t1<31:0>=OP_FUNC(X<63:32>,X<95:64>,X<127:96>);
Y  =Y+ROL(X<31:0>,5)+t1<31:0>+Vm<(index+31):index>;
X<63:32>=ROL(X<63:32>,30);
//Rotate
t2<31:0>=Y;
Y  =X<127:96>;
X<127:0>={X<95:0>:t2<31:0>};
}
Qd=X;
相应地,根据示例性实施例,单一指令多重数据处理电路经配置以由另外的程序指令控制,该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Sn[31:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中OP FUNC(B,C,D)为以下其中之一:
(((C XOR D)AND B)XOR D);
(B XOR C XOR D);及
(B AND C)OR((B OR C)AND D);及
ROL(P,Q)为值P左旋转Q位位置。
这些指令的另一实现可涉及用于在choose()函数、parity()函数及majority()函数之间进行选择的选择。
SHA1HASH Qd,Sn,Vm.4S,#OP//#OP其中#1选择C,#2选择P,#3选择M。
RISC指令形式的约束在于仅散列摘要的前4个字可由SHA1C、SHA1P及SHA1M指令返回至128位寄存器Qd中。因此,建议指令SHA1H返回散列摘要的第5个字。
在首次实现中,SHA1H可实施为:
SHA1H Sd,Sn
Sd=ROR(Sn,2);
此举遵循以下经验:在四次迭代后第5散列摘要值为Qd[0]初始值的旋转。
SHA1散列更新指令变体
SHA1C指令、SHA1P指令及SHA1M指令的变体可由本发明技术的其他变体扩展以允许Vm.8S或Vm.16S操作数。这些变体包括在本发明技术之内。这将允许在单一指令内处理散列更新函数的8次及16次迭代。亦即,仍将需要Vm.4S变体,因为每20次迭代之后散列更新函数需要变化。
作为一实例,该SHA1<OP>Vm.8S变体:
SHA1<OP>Qd,Sn,Vm.8S
X=Qd;
Y=Sn;
for(i=0to7)
{
Index=(i*32);
t1<31:0>=OP_FUNC(X<63:32>,X<95:64>,X<127:96>);
Y=Y+ROL(X<31:0>,5)+t1<31:0>+Vm<(index+31):index>;
X<63:32>=ROL(X<63:32>,30);
//Rotate
t2<31:0>=Y;
Y=X<127:96>;
X<127:0>={X<95:0>:t2<31:0>};
}
Qd=X;
操作过8次迭代及16次迭代(Vm.8S及Vm.16S)的变体将另外需要SHA1C2指令、SHA1P2指令及SHA1M2指令。这些指令将在8次或16次迭代之后为散列摘要中的第5个字产生适当值。这些新的指令将以与SHA1C指令、SHA1P指令及SHA1M指令类似的方式实施,但是在Qd寄存器中返回第5个散列摘要字,例如:
SHA1<OP>2Qd,Sn,Vm.8S
X=Qd;
Y=Sn;
for(i=0to3)
{
Index=(i*32);
t1<31:0>=OP_FUNC(X<63:32>,X<95:64>,X<127:96>);
Y=Y+ROL(X<31:0>,5)+t1<31:0>+Vm<(index+31):index>;
X<63:32>=ROL(X<63:32>,30);
//Rotate
t2<31:0>=Y;
Y=X<127:96>;
X<127:0>={X<95:0>:t2<31:0>};
}
Qd={0:Y<31:0>};
相应地,根据示例性实施例,单一指令多重数据处理电路经配置以由另外的程序指令控制,该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Sn[31:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中OP FUNC(B,C,D)为以下其中之一:
(((C XOR D)AND B)XOR D);
(B XOR C XOR D);及
(B AND C)OR((B OR C)AND D);及
ROL(P,Q)为值P左旋转Q位位置。
若较宽SIMD数据路径可用,可实现指令的其他变体,该其他变体将整个散列摘要返回成为八位字(8x32位):
SHA1<OP>Od,Vn.4S
SHA1<OP>Od,Vn.8S
这些指令将处理散列函数的4次及8次迭代。
SHA1散列更新微架构选项
对于这些指令的微架构实施存在各种选项:
这些指令的高效能实现可选择增建一些迭代逻辑且执行更多并行化执行。
微架构可选择使用多循环级以减少暂时管线状态,且因此减少功率消耗。
以进位储存形式进行中间架构。
在更广泛的变体中,在可能需要显式SHA1<OP>2指令的情况下,检测SHA1<OP>2操作何时遵循相应SHA1<OP>函数是有可能的。在这些情况下,防止第二计算且仅转发来自数据路径的结果应是可能的。这将在管线中需要一些暂时状态。
SHA1调度更新指令
实现自SHA-1算法的加速需要在散列更新函数与调度更新函数之间的平衡。
先前所述的SHA-1调度更新函数将来自数据调度的四个32位字结合为单一所得字,该单一所得字扩展调度,或在循环队列的情况下,该单一所得字将调度中的字重写。
调度更新操作由逻辑异或及固定旋转组成。
uint32schedule_update(int round,uint32*w){
return ROR(w[round-3]^w[round+8]^W[round-14]^w[round-16],31);
}
或在循环队列形式中:
Void schedule_update(int round,uint32w[0..15]){
w[round]=ROR(w[round+13mod16]^w[round+8mod16]^W[round+2mod16]^w[round],31);
}
操作需要四个输入值,该四个输入值中的一个值具有破坏性。这不符合通用32-三元RISC格式。
调度更新指令可由ARM高阶SIMD架构提供。
为了避免存储器负载及存储器存储,我们选择实施有效执行在FIPS180-4中描述的循环队列形式的调度更新的指令。
为了完整起见,我们包括用于调度更新的向量化方法。
SHA-1调度更新向量化及替代
这遵循w[round]、w[round+1mod16]及w[round+2mod16]可以平行处理的经验。在计算w[round+3mod16]时具有对w[round]的相依性,该相依性防止直接路由到四向向量化。
w[round]=ROR(w[round+13]^w[round+8]^W[round+2]^w[round]),31);
w[round+1]=ROR(w[round+14]^w[round+9]^W[round+3]^w[round+1]),31);
w[round+2]=ROR(w[round+15]^W[round+10]^W[round+4]^W[round+2]),31);
w[round+3]=ROR(w[round]^W[round+11]^W[round+5]^W[round+3]),31);
该限制可通过在w[round+3mod16]的计算中用零替代值w[round],且通过用附加逻辑异或及旋转步骤修复该结果来克服;该情况说明如下。
w[round]=ROR(w[round+13]^W[round+8]^W[round+2]^W[round]),31);
w[round+1]=ROR(w[round+14]^W[round+9]^W[round+3]^W[round+1]),31);
w[round+2]=ROR(w[round+15]^W[round+10]^W[round+4]^W[round+2]),31);
w[round+3]=ROR(0^w[round+11]^w[round+5]^w[round+3]),31);
w[round+3]=w[round+3]^ROR(w[round],31);
可将上述代码区块重新因素分解以对具有4x32位的数据路径大小的SIMD架构利用4通道向量操作。
SHA-1调度更新及散列更新平衡
为了使调度更新操作与散列更新操作平衡,可如先前所述处理调度更新,亦即,使用四向向量化处理调度更新。这允许单个调度更新为后续散列函数指令产生足够的4x32位字数据。在合理的SIMD实施中,与用以执行建议的SHA-1散列函数的技术相比,向量化技术将更多执行循环以计算调度数据。
对此存在数个原因:
含有元素{round+2,round+3,round+4,round+5}的向量可能将横跨两个向量寄存器。
含有元素{round+13,round+14,round+15,0}的向量将需要自一个向量寄存器及零向量中提取。
SIMD向量旋转在例如ARM高阶SIMD等的SIMD指令集中并不常见。因此向量旋转需要两个向量偏移及or指令。
归因于Amdahl定律,应平衡SHA-1算法的两个部分,否则较慢部分将限制可实现的加速量。
该观察产生用于加速SHA-1调度更新函数的以下SIMD指令。
SHA1SU0Vd.4S,Vn.4S,Vm.4S
T<127:0>=Vn<63:0>:Vd<127:64>
Vd=T XORVd XORVm
SHA1SU1Vd.4S,Vn.4S
T<127:0>=Vd XOR{32{0}:Vn<127:32>};
Vd<95:0>=T<94:64>:T<95>:T<62:32>:T<63>:T<30:0>:T<31>:
Vd<127:96>=(T<126:96>:T<127>)XOR(T<29:0>:T<31:30>);
指令假设循环队列常驻于四个4x32位向量寄存器中。
在指令内部完成元素的重新排序。这有效地使元素的重新排序不受拘束,这些元素正好为微架构中的线路。
固定旋转亦仅为线路。
在大部分微架构中,平衡指令且指令可具有极低的循环等待时间(latency);这些指令包含串行及布线中的两个逻辑异或。
因此,根据示例性实施例,该单一指令多重数据处理电路经配置以由第一调度指令控制,该第一调度指令具有第一输入操作数Sp[127:0]及第二输入操作数Sq[127:0]且产生输出操作数Sr[127:0],该输出操作数的值与由以下步骤给出的值相同:
T[127:0]={Sp[63:0]:Sq[127:64]}及
Sr[127:0]=T[127:0]XOR Sr[127:0]XOR Sq[127:0].
将SHA-2算法作为目标指令
在针对SHA-1算法提出的指令的论述中所概括的许多特征可同样地适用于SHA-2算法。本节将描述针对SHA-2算法提出的指令中的差异。
SHA-2散列更新指令
由于针对SHA-1概括的原因,SHA-2散列更新函数被两个散列更新指令作为目标。
SHA-2算法的工作散列摘要为256位或者512位。以下聚焦于算法SHA-256及SHA-224,该算法SHA-256及SHA-224具有256位工作散列,因为这些算法包含于本发明的初始实现中。在稍后的部分论述本发明技术如何应用于SHA-512、SHA-384、SHA-512/256及SHA-512/224。
SHA-256散列更新指令
SHA-256(及SHA-224)的工作散列摘要为256位长。在具有寄存器宽度为128位的SIMD架构中,对散列摘要的任何操作的结果需要两个指令;一个指令返回前4x32位字,且第二指令返回剩余4x32位字。
不同于SHA-1,SHA-2散列更新函数是固定的且在给定数目迭代之后不变化,因此,我们仅需要两个指令。
相应地,根据示例性实施例,单一指令多重数据处理电路经配置以由另外的程序指令控制,该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Qn[127:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中Choose(B,C,D)为(((C XOR D)AND B)XOR D),Majority(B,C,D)为((B AND C)OR((B OR C)AND D)),Sigma0(B)为(ROR(B,2)XORROR(B,13)XOR ROR(B,22)),Sigma1(B)为(ROR(B,6)XOR ROR(B,11)XOR ROR(B,25))且ROR(P,Q)为值P右旋转Q位位置。
SHA256H2Qd,Qn,Vm.4S
X=Qn;
Y=Qd;
for(i=0to3)
相应地,根据示例性实施例,单一指令多重数据处理电路经配置以由另外的程序指令控制,该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Qn[127:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中Choose(B,C,D)为(((C XOR D)AND B)XOR D),Majority(B,C,D)为((B AND C)OR((B OR C)AND D)),Sigma0(B)为(ROR(B,2)XORROR(B,13)XOR ROR(B,22)),Sigma1(B)为(ROR(B,6)XOR ROR(B,11)XOR ROR(B,25))且ROR(P,Q)为值P右旋转Q位位置。
SHA256H预期散列摘要的前4x32位字在Qd中,剩余4x32位字在Qn中且调度数据的4x32位字在Vm.4S中。
SHA256H2预期散列摘要的第二4x32位字在Qd中,前4x32位字在Qn中且调度数据的4x32位字在Vm.4S中。
请注意,因为SHA256H破坏散列摘要的前4x32位字,所以在执行SHA256H之前必须进行复制以便正确值可被传递至Qn中的SHA256H2。
SHA-256散列更新指令变体
如先前对于SHA-1散列更新指令所概述,用于较宽向量SIMD的SHA-256指令的变体可包括以下各项:
SHA256(H|H2)Qd,Qn,Vm.8S
SHA256(H|H2)Qd,Qn,Vm.16S
这些指令将分别处理散列更新函数的8次及16次迭代。较宽的SIMD数据路径亦可允许:
SHA256H Od,Vm.8S
SHA256H Od,Vm.16S
在Od为256位宽寄存器的情况下,不必提供SHA256H2操作,整个散列摘要将适合在向量寄存器中。
SHA-256调度更新
如先前所概述,对于SHA-1,实现来自SHA-256算法的加速需要在散列更新函数与调度更新函数之间的平衡。
SHA-256调度更新函数将来自数据调度的四个32位字结合为单一所得字,该单一所得字扩展调度,或在循环队列的情况下,该单一所得字将调度中的字重写。
调度更新操作由逻辑异或、固定移位及固定旋转(已知)组成。
uint32schedule_update(int round,uint32*w){
retum w[round]+sigma1(w[round-2])+w[round-7]+sigma0(w[round-15]);
}
其中:
sigma0(x)=ror(x,7)^ror(x,18)^shr(x,3);
sigma1(x)=ror(x,17)^ror(x,19)^shr(x,10);
这亦可以循环队列表达(已知):
void schedule_update(int round,uint32*w){
w[round]=sigma1(w[round+14mod16])+w[round+9mod16]+sigma0(w[round+1mod16]);
}
SHA-256调度更新向量化及替代
SHA-256调度更新函数亦可以适合于4向SIMD的方式被向量化。
w[round]=sigma1(w[round+14])+w[round+9]+sigma0(w[round+1]);
w[round+1]=sigma1(w[round+15])+w[round+10]+sigma0(w[round+2]);
w[round+2]=sigma1(w[round])+w[round+11]+sigma0(w[round+3]);
w[round+3]=sigma1(w[round+1])+w[round+12]+sigma0(w[round+4]);
请注意,存在两个相依性,亦即w[round]及w[round+1]。用于SHA-256的替代法通过代入零值且然后决定结果而像以前一样起作用。该方法说明如下:
w[round]=sigma1(w[round+14])+w[round+9]+sigma0(w[round+1]);
w[round+1]=sigma1(w[round+15])+w[round+10]+sigma0(w[round+2]);
w[round+2]=sigma1(w[0])+w[round+11]+sigma0(w[round+3]);
w[round+3]=sigma1(w[0])+w[round+12]+sigma0(w[round+4]);
w[round+2]+=sigma1(w[round]);
w[round+3]+=sigma1(w[round]);
可将上述程序代码区块重新因素分解以对具有4x32位的数据路径大小的SIMD架构利用4通道向量操作。
SHA-256调度更新及散列更新平衡
为了使调度更新操作与散列更新操作平衡,我们提出如先前所述处理调度更新,亦即,使用四向向量化处理调度更新。这允许单个调度更新为后续散列函数指令产生足够的4x32位字的数据。
在合理的SIMD实施中,与用以执行建议的SHA-1散列函数的技术相比,向量化技术将更多执行循环以计算调度数据。
对此存在数个原因:
含有元素{round+1,round+2,round+3,round+4}及{round+9,round+10,round+11,round+12}的向量将跨越多于一个向量寄存器。
含有{round+14,round+15,0,0}的寄存器将需要使用提取组成。
sigma操作含有旋转,且SIMD向量旋转在例如ARM高阶SIMD的SIMD指令集中不常见。在这些架构中的向量旋转需要两个向量位移及OR指令。
考虑替代的安排亦将需要提取寄存器。
sigma0及sigma1操作由大约7个向量操作组成。
归因于Amdahl定律,需要平衡SHA-256算法之两部分以免较慢部分限制可实现的加速量。
这些观察产生用于加速SHA-256调度更新函数的以下SIMD指令。
SHA256SU0Vd.4S,Vn.4S
T<127:0>=Vn<31:0>:Vd<127:32>
T<127:0>=VecROR32(T,7)XOR VecROR32(T,18)XOR VecSHR32(T,3)
Vd=VecADD32(T,Vd)
SHA256SU1Vd.4S,Vn.4S,Vm.4S
T0<127:0>=Vm<31:0>:Vn<127:32>
T1<63:0>=Vm<127:64>
T1<63:0>=VecROR32(T1<63:0>,17)XOR VecROR32(T1<63:0>,19)XOR VecSHR32(T1<63:0>,10)
T3<63:0>=VecADD32(Vd<63:0>,T0<63:0>)
T1<63:0>=VecADD32(T3<63:0>,T1<63:0>)
T2<63:0>=VecROR32(T1<63:0>,17)XOR VecROR32(T1<63:0>,19)XOR VecSHR32(T1<63:0>,10)
T3<63:0>=VecADD32(Vd<127:64>,T0<127:64>)
Vd=VecADD32(T3<63:0>,T2<63:0>):T1<63:0>
指令假设循环队列常驻于四个4x32位向量寄存器中。指令不排除使用调度扩展。
在指令内部实现元素的重新排序及提取。然后,微架构能够选择以将这些及固定移位与旋转实施为布线。
在大部分微架构中,指令可具有低循环等待时间。
因此,根据示例性实施例,单一指令多重数据处理电路经配置以由第一调度指令控制,该第一调度指令具有输入操作数Sp[127:0]且产生输出操作数Sq[127:0],该输出操作数的值与由以下步骤给出的值相同:
T[127:0]={Sp[31:0]:Sq[127:32]};
T[127:0]=VecROR32(T[127:0],7)XOR VecROR32(T[127:0],18)XORVecROR32(T[127:0],3);及
Sq[127:0]=VecADD32(T[127:0],Sq[127:0]),
其中VecROR32(A,B)为在A内的每个32位字单独右旋转B位位置,且VecADD32(A,B)为在A内的每个32位字单独增加至在B内的相应32位字。
因此,根据示例性实施例,单一指令多重数据处理电路经配置以由第二调度指令控制,该第二调度指令具有第一输入操作数Sp[127:0]及第二输入操作数Sq[127:0]且产生输出操作数Sr[127:0],该输出操作数的值与由以下步骤给出的值相同:
T0[127:0]={Sq[31:0]:Sp[127:32]};
T1[63:0]=Sq[127:64];
T1[63:0]=VecROR32(T1[63:0],17)XOR VecROR32(T1[63:0],19)XORVecROR32(T1[63:0],10);
T3[63:0]=VecADD32(Sr[63:0],T0[63:0]);
T1[63:0]=VecADD32(T3[63:0],T1[63:0]);
T2[63:0]=VecROR32(T1[63:0],17)XOR VecROR32(T1[63:0],19)XORVecROR32(T1[63:0],10);
T3[63:0]=VecADD32(Sr[127:64],T0[127:64]);及
Sr[127:0]={VecADD32(T3[63:0],T2[63:0]):T1[63:0]},
其中VecROR32(A,B)为在A内的每个32位字单独右旋转B位位置,且VecADD32(A,B)为在A内的每个32位字单独增加至B内的相应32位字。
在SHA-256与SHA-512之间的差异
SHA-512算法非常类似于SHA-256算法。在描述对SHA-256的支持的部分中概述的相同方法可同样地应用于SHA-512,仅存在以下小的不同:
输入数据分成128字节的区块,且以大端(big endian)形式处理为16x64位字。
SHA-512对8x64位字有效
SHA-512需要散列函数的80次迭代。
散列函数及调度更新对64位字有效,且散列函数及调度更新含有不同固定移位、旋转,及逻辑异或。
为了简便起见,我们忽略SHA-512算法。
将SHA-512、SHA-384、SHA-512/256及SHA-512/256算法作为目标的指令。
将SHA-256作为目标的指令的目的与对于SHA-512算法的目的相同。我们列出将SHA-512作为目标的这些指令的可能实现。
在SIMD寄存器为128位,且假定每散列4次迭代及调度指令的情况下:
SHA512H{Qd,Qd+1},{Qn,Qn+1},{Vm.2D,Vm+1.2D}
SHA512H2{Qd,Qd+1},{Qn,Qn+1},{Vm.2D,Vm+1.2D}
SHA512SU0{Vd.2D,Vd+1.2D},{Vn.2D,Vn+1.2D}
SHA512SU1{Vd.2D,Vd+1.2D},{Vn.2D,Vn+1.2D},{Vm.2D,Vm+1.2D}
请注意,上述指令有可能需要寄存器锁定(register pinning);在微架构之内指定一个寄存器且暗示第二寄存器。指令将不再属于典型RISC三元形式,然而,这些类型操作存在优先,例如,在ARM有限公司的Neon载入/存储多重指令中。
在较宽SIMD寄存器可用的情况下,指令的可能的变体包括:
SHA512H Od,On,Vm.4D
SHA512H2Od,On,Vm.4D
SHA512SU0Vd.4D,Vn.4D
SHA512SU1Vd.4D,Vn.4D,Vm.4D
这些指令的变体亦处理用于散列的迭代及调度更新操作,但是归因于较宽SIMD寄存器符合三元RISC形式。
使用如FIPS180-4中所述的截断,这些指令可同样地以SHA-384、SHA-512/256及SHA-512/224为目标。

Claims (27)

1.一种数据处理设备,该数据处理设备包含:
单一指令多重数据寄存器文件;及
单一指令多重数据处理电路,该单一指令多重数据处理电路耦接至该单一指令多重数据寄存器文件且被配置为由单一指令多重数据程序指令控制,以独立地对存储在单独通道内的单独数据元素执行处理操作,该单独通道在该单一指令多重数据寄存器文件的输入操作数寄存器内;其中
该单一指令多重数据处理电路被配置为由另外的程序指令控制,以对向量数据值执行另外的处理操作,该向量数据值包含保持在该单一指令多重数据寄存器文件的输入操作数寄存器内的数据元素序列,以产生存储在该单一指令多重数据寄存器文件的输出操作数寄存器内的输出操作数,该输出操作数具有含有值的第一部分,该值取决于在该数据元素序列内的所有数据元素。
2.如权利要求1所述的数据处理设备,其中该另外的程序指令为密码程序指令,该密码程序指令操作以依赖于形成该向量数据值的数据的多个字产生作为该输出操作数的输出散列值。
3.如权利要求2所述的数据处理设备,其中该另外的程序指令执行迭代处理操作,该迭代处理操作消耗连续数据字及至少部分中间散列值以产生该输出散列值。
4.如权利要求1、2和3中任一项所述的数据处理设备,其中该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Sn[31:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中OP FUNC(B,C,D)为以下其中之一:
(((C XOR D)AND B)XOR D);
(B XOR C XOR D);及
(B AND C)OR((B OR C)AND D);及
ROL(P,Q)为值P左旋转Q位位置。
5.如权利要求1、2和3中任一项所述的数据处理设备,其中该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Sn[31:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中OP FUNC(B,C,D)为以下其中之一:
(((C XOR D)AND B)XOR D);
(B XOR C XOR D);及
(B AND C)OR((B OR C)AND D);及
ROL(P,Q)为值P左旋转Q位位置。
6.如权利要求4和5中任一项所述的数据处理设备,其中该另外的程序指令包括选择以下其中之一作为OP FUNC(B,C,D)的字段:
(((C XOR D)AND B)XOR D);
(B XOR C XOR D);及
(B AND C)OR((B OR C)AND D)。
7.如权利要求4、5和6中任一项所述的数据处理设备,其中该第一输入操作数Qd[127:0]及该第二输入操作数Sn[31:0]读取自在该单一指令多重数据寄存器文件内的单独寄存器。
8.如权利要求4、5和6中任一项所述的数据处理设备,其中该第一输入操作数Qd[127:0]及该第二输入操作数Sn[31:0]读取自在该单一指令多重数据寄存器文件内的共享寄存器。
9.如权利要求1、2和3中任一项所述的数据处理设备,其中该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Qn[127:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中Choose(B,C,D)为(((C XOR D)AND B)XOR D),Majority(B,C,D)为((B AND C)OR((B OR C)AND D)),Sigma0(B)为(ROR(B,2)XORROR(B,13)XOR ROR(B,22)),Sigma1(B)为(ROR(B,6)XOR ROR(B,11)XOR ROR(B,25))且ROR(P,Q)为值P右旋转Q位位置。
10.如权利要求1、2和3中任一项所述的数据处理设备,其中该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Qn[127:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与由以下步骤给出的值相同的值:
其中Choose(B,C,D)为(((C XOR D)AND B)XOR D),Majority(B,C,D)为((B AND C)OR((B OR C)AND D)),Sigma0(B)为(ROR(B,2)XORROR(B,13)XOR ROR(B,22)),Sigma1(B)为(ROR(B,6)XOR ROR(B,11)XOR ROR(B,25))且ROR(P,Q)为值P右旋转Q位位置。
11.如权利要求9和10中任一项所述的数据处理设备,其中该第一输入操作数Qd[127:0]及该第二输入操作数Qn[127:0]读取自在该单一指令多重数据寄存器文件内的单独寄存器。
12.如权利要求9和10中任一项所述的数据处理设备,其中该第一输入操作数Qd[127:0]及该第二输入操作数Qn[127:0]读取自在该单一指令多重数据寄存器文件内的共享寄存器。
13.如前述任一权利要求所述的数据处理设备,其中该单一指令多重数据处理电路利用用于管理该另外的程序指令及该单一指令多重数据程序指令的处理的共同机制。
14.如权利要求13所述的数据处理设备,其中该管理处理包括管理下述中的一个或多个:
寄存器重新命名;
指令调度;
指令发出;
指令报废;及
指令中断。
15.如权利要求4和5中任一项所述的数据处理设备,其中该单一指令多重数据处理电路被配置为由旋转指令控制,该旋转指令具有输入操作数Sm[31:0]且产生具有值的输出操作数Sd[31:0],该值与Sm[31:0]右旋转两个位位置给出的值相同。
16.如权利要求4和5中任一项所述的数据处理设备,其中该单一指令多重数据处理电路被配置为由第一调度更新指令控制,该第一调度更新指令具有第一输入操作数Sp[127:0]及第二输入操作数Sq[127:0]且产生具有值的输出操作数Sr[127:0],该值与通过以下步骤给出的值相同:
T[127:0]={Sp[63:0]:Sq[127:64]}及
Sr[127:0]=T[127:0]XOR Sr[127:0]XOR Sq[127:0]。
17.如权利要求14所述的数据处理设备,其中该单一指令多重数据处理电路被配置为由第二调度更新指令控制,该第二调度更新指令具有输入操作数Ss[127:0]且产生具有值的输出操作数St[127:0],该值与通过以下步骤给出的值相同:
T[127:0]=St[127:0]XOR{32{0}:Ss[127:32]};
St[95:0]={T[94:64]:T[95]:T[62:32]:T[63]:T[30:0]:T[31]};及
St[127:96]=({T[126:96]:T[127]})XOR({T[29:0]:T[31:30]})。
18.如权利要求9和10中任一项所述的数据处理设备,其中该单一指令多重数据处理电路被配置为由第一调度更新指令控制,该第一调度更新指令具有输入操作数Sp[127:0]且产生具有值的输出操作数Sq[127:0],该值与通过以下步骤给出的值相同:
T[127:0]={Sp[31:0]:Sq[127:32]};
T[127:0]=VecROR32(T[127:0],7)XOR VecROR32(T[127:0],18)XORVecROR32(T[127:0],3);及
Sq[127:0]=VecADD32(T[127:0],Sq[127:0]),
其中VecROR32(A,B)为在A内的每个32位字单独右旋转B位位置,且VecADD32(A,B)为在A内的每个32位字单独增加至在B内的相应32位字。
19.如权利要求18所述的数据处理设备,其中该单一指令多重数据处理电路被配置为由第二调度更新指令控制,该第二调度更新指令具有第一输入操作数Sp[127:0]及第二输入操作数Sq[127:0]且产生具有值的输出操作数Sr[127:0],该值与通过以下步骤给出的值相同:
T0[127:0]={Sq[31:0]:Sp[127:32]};
T1[63:0]=Sq[127:64];
T1[63:0]=VecROR32(T1[63:0],17)XOR VecROR32(T1[63:0],19)XORVecROR32(T1[63:0],10);
T3[63:0]=VecADD32(Sr[63:0],T0[63:0]);
T1[63:0]=VecADD32(T3[63:0],T1[63:0]);
T2[63:0]=VecROR32(T1[63:0],17)XOR VecROR32(T1[63:0],19)XORVecROR32(T1[63:0],10);
T3[63:0]=VecADD32(Sr[127:64],T0[127:64]);及
Sr[127:0]={VecADD32(T3[63:0],T2[63:0]):T1[63:0]},
其中VecROR32(A,B)为在A内的每个32位字单独右旋转B位位置,且VecADD32(A,B)为在A内的每个32位字单独增加至在B内的相应32位字。
20.如前述任一权利要求所述的数据处理设备,该数据处理设备进一步包含与该单一指令多重数据寄存器文件分离的通用寄存器文件,该通用寄存器文件具有通用寄存器,该通用寄存器具有比在该单一指令多重数据寄存器文件内的寄存器位宽度低的位宽度,并且通用处理电路耦接至该通用寄存器文件,且被配置为由通用处理指令控制以对存储在该通用寄存器中的一个通用寄存器内的输入操作数执行处理操作。
21.一种数据处理设备,该数据处理设备包含:
单一指令多重数据寄存器文件装置,用于存储单一指令多重数据操作数;及
单一指令多重数据处理装置,用于在单一指令多重数据程序指令的控制下执行处理操作,该单一指令多重数据处理装置耦接至该单一指令多重数据寄存器文件装置,且对存储在该单一指令多重数据寄存器文件装置的输入操作数寄存器内的单独通道内的单独数据元素独立地执行该处理操作;其中
该单一指令多重数据处理装置由另外的程序指令控制,以对向量数据值执行另外的处理操作,该向量数据值包含保持在该单一指令多重数据寄存器文件装置的输入操作数寄存器内的数据元素序列,以产生存储在该单一指令多重数据寄存器文件装置的输出操作数寄存器内的输出操作数,该输出操作数具有含有值的第一部分,该值取决于在该数据元素序列内的所有数据元素。
22.一种处理数据的方法,该方法包含以下步骤:
将单一指令多重数据操作数存储在单一指令多重数据寄存器文件内;
在单一指令多重数据程序指令的控制下,独立地对存储在该单一指令多重数据寄存器文件的输入操作数寄存器内的单独通道内的单独数据元素执行处理操作;及
在另外的程序指令的控制下,对向量数据值执行另外的处理操作,该向量数据值包含保持在该单一指令多重数据寄存器文件的输入操作数寄存器内的数据元素序列,以产生存储在该单一指令多重数据寄存器文件的输出操作数寄存器内的输出操作数,该输出操作数具有含有值的第一部分,该值取决于在该数据元素序列内的所有数据元素。
23.如权利要求22所述的方法,其中该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Sn[31:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与通过以下步骤给出的值相同的值:
其中OP FUNC(B,C,D)为以下其中之一:
(((C XOR D)AND B)XOR D);
(B XOR C XOR D);及
(B AND C)OR((B OR C)AND D);及
ROL(P,Q)为值P左旋转Q位位置。
24.如权利要求22所述的方法,其中该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Sn[31:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与通过以下步骤给出的值相同的值:
其中OP FUNC(B,C,D)为以下其中之一:
(((C XOR D)AND B)XOR D);
(B XOR C XOR D);及
(B AND C)OR((B OR C)AND D);及
ROL(P,Q)为值P左旋转Q位位置。
25.如权利要求22所述的方法,其中该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Qn[127:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与通过以下步骤给出的值相同的值:
其中Choose(B,C,D)为(((C XOR D)AND B)XOR D),Majority(B,C,D)为((B AND C)OR((B OR C)AND D)),Sigma0(B)为(ROR(B,2)XORROR(B,13)XOR ROR(B,22)),Sigma1(B)为(ROR(B,6)XOR ROR(B,11)XOR ROR(B,25))且ROR(P,Q)为值P右旋转Q位位置。
26.如权利要求22所述的方法,其中该另外的程序指令具有自该单一指令多重数据寄存器文件读取的第一输入操作数Qd[127:0]及第二输入操作数Qn[127:0]两者,且该向量数据值包含Vm[Index+31:Index],其中Index为0至2N,其中N为正整数,该另外的处理操作产生该输出操作数Qdoutput[127:0],以具有与通过以下步骤给出的值相同的值:
其中Choose(B,C,D)为(((C XOR D)AND B)XOR D),Majority(B,C,D)为((B AND C)OR((B OR C)AND D)),Sigma0(B)为(ROR(B,2)XORROR(B,13)XOR ROR(B,22)),Sigma1(B)为(ROR(B,6)XOR ROR(B,11)XOR ROR(B,25))且ROR(P,Q)为值P右旋转Q位位置。
27.一种存储于计算机存储介质上的计算机程序,该计算机程序用于控制计算机以提供对应于如权利要求1至21任一项所述的数据处理设备的虚拟机执行环境。
CN201280055673.6A 2011-11-17 2012-09-20 密码算法中用于支持散列值生成的simd指令 Active CN103930869B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1119834.8 2011-11-17
GB1119834.8A GB2497070B (en) 2011-11-17 2011-11-17 Cryptographic support instructions
PCT/GB2012/052315 WO2013072657A1 (en) 2011-11-17 2012-09-20 Simd instructions for supporting generation of hash values in cryptographic algorithms

Publications (2)

Publication Number Publication Date
CN103930869A true CN103930869A (zh) 2014-07-16
CN103930869B CN103930869B (zh) 2017-10-10

Family

ID=45444264

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280055673.6A Active CN103930869B (zh) 2011-11-17 2012-09-20 密码算法中用于支持散列值生成的simd指令

Country Status (11)

Country Link
US (3) US8966282B2 (zh)
EP (1) EP2742421B1 (zh)
JP (1) JP6068493B2 (zh)
KR (1) KR101962104B1 (zh)
CN (1) CN103930869B (zh)
GB (1) GB2497070B (zh)
IL (1) IL231467B (zh)
IN (1) IN2014CN02111A (zh)
MY (1) MY168503A (zh)
TW (1) TWI522832B (zh)
WO (1) WO2013072657A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113794552A (zh) * 2021-09-14 2021-12-14 山东省计算中心(国家超级计算济南中心) 一种基于simd的sm3并行数据加密运算方法及系统

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2497070B (en) 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
US8874933B2 (en) * 2012-09-28 2014-10-28 Intel Corporation Instruction set for SHA1 round processing on 128-bit data paths
US8953785B2 (en) * 2012-09-28 2015-02-10 Intel Corporation Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor
US9128698B2 (en) * 2012-09-28 2015-09-08 Intel Corporation Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction
US8838997B2 (en) * 2012-09-28 2014-09-16 Intel Corporation Instruction set for message scheduling of SHA256 algorithm
GB2508343A (en) 2012-11-28 2014-06-04 Ibm Replacing a hash function if a second hash function is more effective
US9251377B2 (en) 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US8924741B2 (en) * 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US9425953B2 (en) 2013-10-09 2016-08-23 Intel Corporation Generating multiple secure hashes from a single data buffer
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9912481B2 (en) * 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9513913B2 (en) 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9467279B2 (en) 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
US10110566B2 (en) * 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
KR102307105B1 (ko) * 2015-08-19 2021-09-29 인텔 코포레이션 Simd sm3 암호화 해싱 기능을 제공하기 위한 명령어 및 로직
US10348506B2 (en) 2016-09-30 2019-07-09 International Business Machines Corporation Determination of state of padding operation
US10326596B2 (en) * 2016-10-01 2019-06-18 Intel Corporation Techniques for secure authentication
US9680653B1 (en) * 2016-10-13 2017-06-13 International Business Machines Corporation Cipher message with authentication instruction
US10833847B2 (en) * 2017-02-28 2020-11-10 Google Llc Cryptographic hash generated using data parallel instructions
US10491377B2 (en) * 2017-02-28 2019-11-26 Google Llc Hashing using data parallel instructions
DE102021100538A1 (de) * 2021-01-13 2022-07-14 Infineon Technologies Ag Schaltung und verfahren zur rotationsinvarianten ausführung einer oder mehrerer operationen mit mindestens einem operanden
US20220416999A1 (en) * 2021-06-25 2022-12-29 Intel Corporation Fused instruction to accelerate performance of secure hash algorithm 2 (sha-2) workloads in a graphics environment
CN114095149B (zh) * 2021-11-12 2023-05-30 龙芯中科技术股份有限公司 信息加密方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6377970B1 (en) * 1998-03-31 2002-04-23 Intel Corporation Method and apparatus for computing a sum of packed data elements using SIMD multiply circuitry
CN101520965A (zh) * 2008-02-29 2009-09-02 英特尔公司 包括执行变换序列以隔离一个变换的指令的指令组合
US7599489B1 (en) * 2004-02-09 2009-10-06 Sun Microsystems Inc. Accelerating cryptographic hash computations
US20100115232A1 (en) * 2008-10-31 2010-05-06 Johnson Timothy J Large integer support in vector operations
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918062A (en) * 1997-10-23 1999-06-29 Advanced Micro Devices, Inc. Microprocessor including an efficient implemention of an accumulate instruction
DE10061998A1 (de) 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
GB2389678A (en) * 2002-06-14 2003-12-17 Univ Sheffield Finite field processor reconfigurable for varying sizes of field.
US20060190700A1 (en) * 2005-02-22 2006-08-24 International Business Machines Corporation Handling permanent and transient errors using a SIMD unit
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US7536532B2 (en) * 2006-09-27 2009-05-19 International Business Machines Corporation Merge operations of data arrays based on SIMD instructions
TWI335528B (en) 2007-05-15 2011-01-01 Htc Corp A device with multiple functions, and a method for switching the functions and related electronic devices thereof
US20090106526A1 (en) 2007-10-22 2009-04-23 David Arnold Luick Scalar Float Register Overlay on Vector Register File for Efficient Register Allocation and Scalar Float and Vector Register Sharing
GB2456775B (en) * 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
US7877582B2 (en) * 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
US8595467B2 (en) * 2009-12-29 2013-11-26 International Business Machines Corporation Floating point collect and operate
GB2497070B (en) 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
US9251377B2 (en) * 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US9912481B2 (en) * 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6377970B1 (en) * 1998-03-31 2002-04-23 Intel Corporation Method and apparatus for computing a sum of packed data elements using SIMD multiply circuitry
US7599489B1 (en) * 2004-02-09 2009-10-06 Sun Microsystems Inc. Accelerating cryptographic hash computations
CN101520965A (zh) * 2008-02-29 2009-09-02 英特尔公司 包括执行变换序列以隔离一个变换的指令的指令组合
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法
US20100115232A1 (en) * 2008-10-31 2010-05-06 Johnson Timothy J Large integer support in vector operations

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
FREESCALE SEMICONDUCTOR: "《http://www.freescale.com/files/32bit/doc/ref_manual/ALTIVECPIM.pdf》", 1 June 1999 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113794552A (zh) * 2021-09-14 2021-12-14 山东省计算中心(国家超级计算济南中心) 一种基于simd的sm3并行数据加密运算方法及系统
CN113794552B (zh) * 2021-09-14 2023-07-07 山东省计算中心(国家超级计算济南中心) 一种基于simd的sm3并行数据加密运算方法及系统

Also Published As

Publication number Publication date
EP2742421A1 (en) 2014-06-18
GB201119834D0 (en) 2011-12-28
MY168503A (en) 2018-11-12
TWI522832B (zh) 2016-02-21
EP2742421B1 (en) 2020-07-01
GB2497070A8 (en) 2013-07-10
IN2014CN02111A (zh) 2015-05-29
US9104400B2 (en) 2015-08-11
KR101962104B1 (ko) 2019-03-26
GB2497070B (en) 2015-11-25
JP6068493B2 (ja) 2017-01-25
JP2015501946A (ja) 2015-01-19
IL231467B (en) 2020-03-31
US20160026806A1 (en) 2016-01-28
GB2497070A (en) 2013-06-05
CN103930869B (zh) 2017-10-10
TW201322041A (zh) 2013-06-01
US20150121036A1 (en) 2015-04-30
US9703966B2 (en) 2017-07-11
IL231467A0 (en) 2014-04-30
US8966282B2 (en) 2015-02-24
WO2013072657A1 (en) 2013-05-23
KR20140093695A (ko) 2014-07-28
US20130132737A1 (en) 2013-05-23

Similar Documents

Publication Publication Date Title
CN103930869A (zh) 密码算法中用于支持散列值生成的simd指令
US10928847B2 (en) Apparatuses and methods for frequency scaling a message scheduler data path of a hashing accelerator
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
US11714875B2 (en) Apparatuses, methods, and systems for instructions of a matrix operations accelerator
RU2637463C2 (ru) Команда и логика для обеспечения функциональных возможностей цикла защищенного хеширования с шифром
CN110659244A (zh) 内联编码能力
CN108702286A (zh) 抗功率侧信道攻击的高级加密标准加速器处理器
TW201337632A (zh) 用以處理blake安全雜湊演算法的指令處理器、方法及系統
US11526352B2 (en) Hardware processor and method for loading a microcode patch from cache into patch memory and reloading an overwritten micro-operation
CN113791820A (zh) 位矩阵乘法
CN114546490A (zh) 用于散列指令的装置、方法和系统
CN114675883A (zh) 用于对齐矩阵操作加速器瓦片的指令的装置、方法和系统
US20120151183A1 (en) Enhancing performance by instruction interleaving and/or concurrent processing of multiple buffers
US11243766B2 (en) Flexible instruction set disabling
Li et al. Efficient AES implementation on Sunway TaihuLight supercomputer: A systematic approach
CN107003855B (zh) 带进位的原子加法指令
CN114675884A (zh) 用于优化在部分宽度处理器上的跨通道紧缩数据指令实现方式的方法、系统和装置
US20240220323A1 (en) Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator
CN115934092A (zh) 一种基于sha-256算法的并行调度实现方法、系统、介质及设备
CN116301894A (zh) 一种基于高阶密码算子在异构平台编译优化方法及系统
Greiner et al. Performance innovation in the IBM zEnterprise 196 processor
Aumasson et al. BLAKE in Software

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant