KR20140093695A - 암호 알고리즘에서 해시값의 생성을 지원하는 simd 명령어 - Google Patents

암호 알고리즘에서 해시값의 생성을 지원하는 simd 명령어 Download PDF

Info

Publication number
KR20140093695A
KR20140093695A KR1020147014337A KR20147014337A KR20140093695A KR 20140093695 A KR20140093695 A KR 20140093695A KR 1020147014337 A KR1020147014337 A KR 1020147014337A KR 20147014337 A KR20147014337 A KR 20147014337A KR 20140093695 A KR20140093695 A KR 20140093695A
Authority
KR
South Korea
Prior art keywords
xor
single instruction
multiple data
instruction multiple
operand
Prior art date
Application number
KR1020147014337A
Other languages
English (en)
Other versions
KR101962104B1 (ko
Inventor
매튜 제임스 홀스넬
리차드 로이 그리센드와이트
다니엘 커셔
스튜어트 데이비드 빌레스
Original Assignee
에이알엠 리미티드
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 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20140093695A publication Critical patent/KR20140093695A/ko
Application granted granted Critical
Publication of KR101962104B1 publication Critical patent/KR101962104B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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 명령어{SIMD INSTRUCTIONS FOR SUPPORTING GENERATION OF HASH VALUES IN CRYPTOGRAPHIC ALGORITHMS}
본 발명은, 데이터 처리 시스템 분야에 관한 것이다. 보다 구체적으로, 본 발명은, 데이터 처리 시스템내에서 암호 지원 명령어를 제공하는 것에 관한 것이다.
데이터 처리 시스템을 사용하여 암호 연산을 행하는 것은 공지되어 있다. 이러한 공지된 암호처리 연산의 예들로서는, 안전한 해시 알고리즘(SHA)이 있다. 그 SHA의 형태는 SHA-1, SHA-2, SHA256 및 SHA512를 포함하는 다양하고 상이한 것이 공지되어 있다. 이들 알고리즘은 계산 집약적이다.
이들의 알고리즘을 지원하는 공지된 해결방법의 하나는, 범용 레지스터 파일을 갖는 범용 명령어를 실행하는 범용 프로세서를 사용하는 방법이다. 이 해결방법이 갖는 문제점은, 일반적으로 160비트 이상의 해시값을 생성할 수 있는 이들 알고리즘을 행할 때 연산되어야 하는 대량의 상태 데이터가, 한번에 상기 데이터의 일부를 연산하는 긴 연속적 개별 프로그램 명령어에 의해 상기 연산을 분할하여 행해야 하는 경우도 있어서, 그 알고리즘을 실행하는데 필요한 많은 시간과 그 알고리즘을 실행할 때 소비된 에너지가 불리하게 증가하게 되는 결과를 갖는다는 것이다.
또 다른 해결방법으로는, 상기 알고리즘을 행하는 전용 회로를 갖고, 포인터가 상기 데이터가 해시되는 시작부를 지나간 후 그 결과의 해시값을 수신하기를 기다림으로써 시작되는 것이 일반적인, 전용 암호지원 프로세서, 이를테면 암호 코프로세서를 제공하는 방법이 있다. 이러한 해결방법이 갖는 문제점은, 상기 전용 암호 하드웨어의 제공으로 별도의 비용과 복잡함을 초래한다는 것이다. 또한, 상기 전용 하드웨어의 연산과, 인터럽트 핸들링이나 멀티태스킹 등의 상기 디바이스의 다른 연산을 통합할 때 문제가 생기는데, 그 이유는, 상기 전용 암호 하드웨어는, 데이터 처리 시스템내에 통상 구비된 메카니즘에 내장되어 상기 데이터 처리 시스템에 의한 상기 연산의 국면들을 처리하기 어렵고 복잡하기 때문이다.
일 국면에서 본 본 발명의 데이터 처리장치는,
단일 명령어 다중 데이터 레지스터 파일; 및
상기 단일 명령어 다중 데이터 레지스터 파일에 연결되고, 단일 명령어 다중 데이터 프로그램 명령어에 의해 제어되어 상기 단일 명령어 다중 데이터 레지스터 파일의 입력 오퍼랜드용 레지스터내에 별도의 레인(lane)내에 기억된 별도의 데이터 요소에 관해서 독립적으로 처리 연산을 행하도록 구성된, 단일 명령어 다중 데이터 처리회로를 구비하고,
상기 단일 명령어 다중 데이터 처리회로는, 추가의 프로그램 명령어에 의해 제어되어, 내부에 기억된 출력 오퍼랜드를 발생시키기 위해 상기 단일 명령어 다중 데이터 레지스터 파일의 입력 오퍼랜드용 레지스터와 상기 단일 명령어 다중 데이터 레지스터 파일의 출력 오퍼랜드용 레지스터내에 유지된 연속적인 데이터 요소를 포함하는 벡터 데이터 값에 관한 추가의 처리연산을 행하되, 상기 출력 오퍼랜드의 제1 부분이 상기 연속적인 데이터 요소내에 모든 데이터 요소에 의존한 값을 갖도록 구성된다.
본 기술에 의해 안 것은, 많은 데이터 처리 시스템에는 이미 단일 명령어 다중 데이터 처리 메카니즘이 구비되어 있다는 것이다. 이 단일 명령어 다중 데이터 처리 메카니즘은, 단일 명령어 다중 데이터 처리에서 일반적으로 포함된 큰 데이터 폭 오퍼랜드를 기억 및 조작 가능한 기억용량이 큰 단일 명령어 다중 데이터 레지스터 파일을 포함하는 것이 일반적이다. 단일 명령어 다중 데이터 처리에 있어서 별도의 레인의 데이터는 단일 프로그램 명령어의 제어하에서 독립적으로 처리되는 것이 보통이다. 예를 들면, 별도의 레인의 데이터는, 색상 화소값의 성분값, 또는 다른 벡터값, 스케일링등의 같은 처리 연산이 실시되는 모든 것을 포함하여도 된다. 본 기술에 의해 안 것은, 일반적인 형태의 단일 명령어 다중 데이터 프로그램 명령어를 추종하지 않는 추가의 프로그램 명령어로 단일 명령어 다중 데이터 레지스터 파일의 기억용량을 재사용할 수 있다는 것이다. 특히, 상기 레인의 처리는 독립적일 필요는 없고, 생성된 출력 오퍼랜드의 제1 부분은 입력을 형성하는 벡터 데이터 값내에서 데이터 요소 모두에 의존하는 값을 가질 수도 있다.
단일 명령어 다중 데이터 프로그램 명령어의 영역 외측의 단일 명령어 다중 데이터 레지스터 파일의 재사용은, 데이터 압축 및 데이터 암호화 등의 다양한 영역에 적용되어도 된다. 특히, 상기 기술은, 데이터 암호화에 아주 적합하다.
이와 관련해서, 상기 추가의 프로그램 명령어는, 연속적인 워드의 데이터와 중간 해시값의 적어부 일부를 소비하는 반복 처리 연산을 행하도록 구성되어 출력 해시값을 생성하여도 된다. 해시값 생성은, 매우 긴 오퍼랜드값들을 기억 및 연산할 능력을 갖는 대량의 데이터와 레지스터 파일의 연산을 필요로 하는 것이 일반적이다.
일 형태의 추가의 프로그램 명령어는, 상기 추가의 프로그램 명령어가 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Sn[31:0] 양쪽을 갖고, 상기 벡터 데이터 값은 Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시킨다:
Figure pct00001
Figure pct00002
여기서, 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 알고리즘을 구현하는데 매우 적합하다. 상기 규정된 연산은 의사코드의 형태로 주어지고, 본 기술분야에서 당업자라면 알 수 있듯이 다양한 상이한 하드웨어 형태로 구현되어도 된다는 것을 알 것이다. 특히, 로우(low) 회로 오버헤드 구현은, 보다 고성능의 구현으로서 적어도 일부의 상이한 반복을 동시에 행하려고 하는 반복 연산을 형성하기 위해 값들을 재순환시킬 수도 있다.
또 다른 형태의 상기 추가의 프로그램 명령어는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Sn[31:0] 양쪽을 갖고, 상기 벡터 데이터값은, Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시킨다:
Figure pct00003
Figure pct00004
여기서, 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에서 평가한 함수는, 상기 추가의 프로그램 명령어내에 특별한 필드에 따라 선택되어도 되거나, 해시되는 현재 입력된 블록의 데이터 값의 처리동안에 얼마나 많은 반복을 행하였는지에 따라 선택되어도 된다.
일부의 실시예에서, 상기 단일 명령어 다중 데이터 레지스터 파일은, 상기 제1 입력 오퍼랜드와 상기 제2 입력 오퍼랜드 모두를 단일 레지스터에 기억할 수 없을 수도 있어서, 이들은 상기 단일 명령어 다중 데이터 레지스터 파일내의 별도의 레지스터내에 저장될 수도 있다. 그 밖의 실시예에서, 상기 제1 입력 오퍼랜드와 상기 제2 입력 오퍼랜드는, 공유 레지스터내에 저장되어도 되고 단일 입력 오퍼랜드로서 생각되어도 된다.
또 다른 실시예에서, 상기 추가의 프로그램 명령어와 조합하거나 상기 추가의 프로그램 명령어 대신에, 본 기술은, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Qn[127:0] 양쪽을 갖는 상기 추가의 프로그램 명령어에 대해 지원하고, 상기 벡터 데이터값은, Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시킨다:
Figure pct00005
Figure pct00006
여기서, 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) XOR ROR(B,13) XOR ROR(B,22))이고, Sigma1(B)는 (ROR(B,6) XOR ROR(B,11) XOR ROR(B,25))이고, ROR(P,Q)는 P값의 Q비트 위치만큼의 우회전이다.
마찬가지의 방식으로, 상기 추가의 프로그램 명령어는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Qn[127:0] 양쪽을 갖는 형태도 가져도 되고, 상기 벡터 데이터값은, Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시킨다:
Figure pct00007
여기서, 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) XOR ROR(B,13) XOR ROR(B,22))이고, Sigma1(B)는 (ROR(B,6) XOR ROR(B,11) XOR ROR(B,25))이고, ROR(P,Q)는 P값의 Q비트 위치만큼의 우회전이다.
상기 2개의 형태의 추가의 프로그램 명령어는, SHA-224 알고리즘과 SHA-256 알고리즘을 지원하는데 매우 적합하다.
상기 추가의 프로그램 명령어의 처리를 관리하는 메카니즘(들)은, 편리하게 상기 단일 명령어 다중 데이터 처리회로와 조합되어도 된다. 상기 추가의 처리 명령어의 처리를 관리하는 메카니즘(들)은, 상기 단일 명령어 다중 데이터 명령어 레지스터 파일을 사용하고, 상기 추가의 프로그램 명령어(예를 들면, 인터럽트 핸들링, 스케쥴링)의 처리를 관리하는 메카니즘들이 상기 단일 명령어 다중 데이터 처리회로의 것과 통합될 때 구현이 단순화될 수 있다.
상기 단일 명령어 다중 데이터 처리회로의 것과 통합되어도 되는 상기 추가의 프로그램 명령어의 처리를 관리하는 국면들은, 레지스터 재명명, 명령어 스케쥴링, 명령어 발행, 명령어 폐기 및 명령어 인터럽트를 포함한다. 상기 단일 명령어 다중 데이터 처리회로는, 이미 이들 연산을 관리 및 지원하는 회로요소를 구비하는 것이 일반적이고, 상기 추가의 프로그램 명령어는 이러한 관리 지원에 상대적으로 용이하게 통합되어도 된다. 이것은, 인터럽트가 암호 해시값의 생성에 의해 일부 일어나면, 통상의 인터럽트 핸들링 메카니즘들은 그 인터럽트를 서비스하고, 그 해시 계산을 추가의 비용이나 복잡함이 거의 없이 상기 인터럽트를 서비스한 후에 재시작하거나 또는 계속하는데 사용되어도 된다는 이점을 제공한다.
해시 알고리즘의 지원은, 입력 오퍼랜드Sm[31:0]를 갖고 출력 오퍼랜드Sd[31:0]를 생성하는 회전 명령어에, 2개의 비트 위치만큼의 Sm[31:0]의 우회전으로 나타낸 것과 같은 값을 제공하는 것에 의해 더욱 개선된다.
상기 중간 해시값의 생성과 추가에 의해 행해지는 암호 해시 알고리즘의 처리의 다른 국면은, 처리중인 상기 파일내에 데이터 요소들의 스케쥴의 갱신이다. 이러한 스케쥴의 갱신은, 그 해시 생성에 의한 작업 부하의 관점에서 균형이 맞추어져 처리 스루풋에서 불리한 병목현상이 생기지 않아야 한다. 이에 따라, 본 발명의 일부의 실시예는, 상기 단일 명령어 다중 데이터 처리회로가, 제1 입력 오퍼랜드Sp[127:0]와 제2 입력 오퍼랜드Sq[127:0]을 갖고, 아래의 단계에 의해 나타낸 것과 같은 값을 갖는 출력 오퍼랜드Sr[127:0]를 생성하는, 제1 스케쥴 갱신 명령어에 의해 제어되도록 구성된 것을 제공한다:
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]를 생성하는, 제2 스케쥴 갱신 명령어에 의해 제어되도록 구성된 것을 제공한다:
Figure pct00008
위의 2개의 형태의 프로그램 명령어는, 상기 SHA-256 및 상기 SHA-224 알고리즘을 지원하는데에 매우 적합하다.
다른 형태의 해시 알고리즘에서 상기 스케쥴 생성의 지원을 돕기 위해서, 일부의 실시예는, 상기 단일 명령어 다중 데이터 처리회로가, 입력 오퍼랜드Sp[127:0]를 갖고, 아래의 단계에 의해 나타낸 것과 같은 값을 갖는 출력 오퍼랜드Sq[127:0]를 생성하는, 제1 스케쥴 갱신 명령어에 의해 제어되도록 구성된 것을 제공한다:
Figure pct00009
여기서, VecROR32(A,B)는 A내에서 각 32비트 워드의 B비트 위치만큼의 별도의 우회전이고, VecADD32(A,B)는 A내에서 각 32비트 워드를 B내에서 대응한 32비트 워드에 별도로 가산하는 것이다.
또 다른 실시예에서는, 상기 단일 명령어 다중 데이터 처리회로가, 제1 입력 오퍼랜드Sp[127:0]와 제2 입력 오퍼랜드Sq[127:0]를 갖고, 아래의 단계에 의해 나타낸 것과 같은 값을 갖는 출력 오퍼랜드Sr[127:0]를 생성하는, 제1 스케쥴 갱신 명령어에 의해 제어되도록 구성된 것을 추가로 제공한다:
Figure pct00010
여기서, VecROR32(A,B)는 A내에서 각 32비트 워드의 B비트 위치만큼의 별도의 우회전이고, VecADD32(A,B)는 A내에서 각 32비트 워드를 B내에서 대응한 32비트 워드에 별도로 가산하는 것이다.
위의 2개의 형태의 프로그램 명령어는, 상기 SHA-256 알고리즘을 지원하는데에 매우 적합하다.
다른 국면에서 본 본 발명의 데이터 처리장치는,
단일 명령어 다중 데이터 오퍼랜드를 기억하는 단일 명령어 다중 데이터 레지스터 파일 수단; 및
단일 명령어 다중 데이터 프로그램 명령어의 제어하에서 처리연산을 행하고, 상기 단일 명령어 다중 데이터 레지스터 파일 수단에 연결되고, 상기 처리연산이 상기 단일 명령어 다중 데이터 레지스터 파일 수단의 입력 오퍼랜드용 레지스터내에 별도의 레인내에 기억된 별도의 데이터 요소에 관해서 독립적으로 행해지는, 단일 명령어 다중 데이터 처리수단을 구비하고,
상기 단일 명령어 다중 데이터 처리수단은, 추가의 프로그램 명령어에 의해 제어되어, 내부에 기억된 출력 오퍼랜드를 발생시키기 위해 상기 단일 명령어 다중 데이터 레지스터 파일 수단의 입력 오퍼랜드용 레지스터와 상기 단일 명령어 다중 데이터 레지스터 파일 수단의 출력 오퍼랜드용 레지스터내에 유지된 연속적인 데이터 요소를 포함하는 벡터 데이터 값에 관한 추가의 처리연산을 행하되, 상기 출력 오퍼랜드의 제1 부분이 상기 연속적인 데이터 요소내에 모든 데이터 요소에 의존한 값을 갖는다.
또 다른 국면에서 본 본 발명의 데이터 처리방법은,
단일 명령어 다중 데이터 오퍼랜드를 단일 명령어 다중 데이터 레지스터 파일에 기억시키는 단계;
단일 명령어 다중 데이터 프로그램 명령어의 제어하에서 상기 단일 명령어 다중 데이터 레지스터 파일의 입력 오퍼랜드용 레지스터내에 별도의 레인내에 기억된 별도의 데이터 요소에 관해서 독립적으로 처리연산을 행하는 단계; 및
추가의 프로그램 명령어의 제어하에서, 내부에 기억된 출력 오퍼랜드를 발생시키기 위해 상기 단일 명령어 다중 데이터 레지스터 파일의 입력 오퍼랜드용 레지스터와 상기 단일 명령어 다중 데이터 레지스터 파일의 출력 오퍼랜드용 레지스터내에 유지된 연속적인 데이터 요소를 포함하는 벡터 데이터 값에 관한 추가의 처리연산을 행하는 단계로서, 상기 출력 오퍼랜드의 제1 부분이 상기 연속적인 데이터 요소내에 모든 데이터 요소에 의존한 값을 갖는, 단계를 포함한다.
본 발명의 또 다른 국면은, 상기 상술한 것과 같은 프로그램 명령어를 마치 상기 상술한 데이터 처리장치상에서 실행중이었던 것처럼 실행 가능하게 하는 범용 컴퓨터의 실행 환경을 제공하는 가상 머신 구현을 제공하는 것이다. 여기서는, 본 기술들의 이러한 가상 머신 구현을 포함한다.
아래의 첨부도면을 참조하여 예시로만 본 발명의 실시예들을 설명하겠다:
도 1은 단일 명령어 다중 데이터 레지스터 파일과, 암호처리 명령어들의 실행을 위한 지원을 포함하는 단일 명령어 다중 데이터 처리회로를, 구비한 데이터 처리장치를 개략적으로 나타내고;
도 2는 일 예시 형태의 해시 알고리즘내의 데이터 흐름을 개략적으로 나타내고;
도 3은 상기 추가의 처리 명령어가 단일 명령어 다중 데이터 처리회로에 관한 통상의 레인 기반 처리를 추종하지 않는 모습을 개략적으로 나타낸다.
도 1은 조작되는 데이터와 실행되는 프로그램 명령어를 기억하는 메모리(6)에 연결된 중앙처리장치(4) 형태의 데이터 처리장치(2)를 개략적으로 나타낸 것이다. 상기 중앙처리장치(4)는, 범용 레지스터 파일(8), 범용 처리회로(10), 단일 명령어 다중 데이터 레지스터 파일(12) 및 단일 명령어 다중 데이터 처리회로(14)로 이루어진다. 상기 범용 레지스터 파일(8)은, 영국 캠브리지의 ARM사에서 생산한 프로세서의 상기 범용 레지스터 파일에 의해 지원된 형태의 레지스터 등의 저비트 폭 범용 레지스터(32 또는 64비트 등)를 포함하는 것이 전형적이다. 단일 명령어 다중 데이터 레지스터 파일(12)은 매우 큰 레지스터를 구비하는 것이 전형적이고, 단일 명령어 다중 데이터 레지스터 파일(12)내의 상기 데이터 스토리지는 상이한 방식으로 분할되어 사용된 상기 레지스터 사이즈 지정자에 따라 상이한 레지스터를 형성하기도 한다. 단일 명령어 다중 데이터 레지스터 파일(12)의 형태는, 영국 캠브리지의 ARM사에서 생산한 프로세서의 일부의 구현으로 지원된 신규 레지스터 파일의 형태이어도 된다.
범용 레지스터 재명명 및 스코어 보딩 회로 16은 범용 레지스터 파일(10)과 관련되어 있고, 단일 명령어 다중 데이터 레지스터 재명명 및 스코어 보딩회로 18은 단일 명령어 다중 데이터 레지스터 파일(12)과 관련되어 있다. 레지스터 재명명 및 스코어 보딩 그 자체는, 본 기술분야에서의 작업자에게 잘 알려져 있어 여기서는 추가로 설명하지 않는 공지된 기술이다. 상기 레지스터 재명명 및 스코어 보딩은, 통상의 단일 명령어 다중 데이터 처리 명령어에 대해 제공된 것과 같은 방식으로 아래에 설명한 암호 처리 명령어의 지원에 사용된 상기 레지스터에 적용되어도 된다. 따라서, 이미 레지스터 재명명, 명령어 스케쥴링, 명령어 발행, 명령어 폐기 및 명령어 인터럽트를 지원하도록 제공된 상기 메카니즘은, 암호 지원 프로그램 명령어에 의해 재사용되어도 됨에 따라서, 이들 암호 지원 명령어의 연산은 중앙처리장치(4)의 전체 연산과 보다 좋게 통합되어도 된다.
프로그램 명령어 I는, 메모리(6)로부터 수신되어 명령어 파이프라인(20)을 통과한다. 명령어 디코더(22)는, 그 프로그램 명령어를 복호화하여, 상기 중앙처리장치(4)내의 다른 요소들뿐만 아니라 상기 레지스터 파일(8,12)과 상기 처리회로(10,14)의 동작도 제어하는 제어신호를 생성한다. 인터럽트 회로(24)는, 외부적으로 생성된 인터럽트 신호들 int에 응답하여, 현재 상기 중앙처리장치(4)에서 행하고 있는 처리를 중단하고 본 기술분야의 것들에 잘 알려져 있듯이 인터럽트 핸들링 코드의 실행을 시작한다. 중앙처리장치(4)는 다수의 추가의 회로요소를 구비하는 것이 일반적이고, 이들은 명료함을 기하기 위해서 도 2로부터 생략되어 있다는 것을 알 것이다.
도 2는 일 형태의 해시 생성 알고리즘내에서의 데이터 흐름을 개략적으로 나타낸 것이다. 해시될 파일(26)은, 64바이트 블록(28)으로 분할되고 일 입력으로서 해시 알고리즘(30)에 공급된 4개의 32비트 워드의 입력 벡터로 한층 더 분할된다. 또한, 해시 종자값은, 해시 연산의 시작부분에서 제공된다. 그 해시 연산은, 각각 상기 해시 갱신 루프(34)와 상기 스케쥴 갱신 루프(36)를 책임지는 2개의 메인 프로그램 루프를 이용한다. 이들의 메인 루프는, 상기 단일 명령어 다중 데이터 처리회로(14)내에서 양쪽의 루프를 지원하는 전용 프로그램 명령어의 제공에 의해 균형이 맞추어진다. 중간 해시값(38)은, 해시 갱신 루프(34)에 의해 생성되어 상기 해시 알고리즘으로서 피드백되어 입력 데이터의 블록(28)을 계속 처리한다. 그 블록(28)이 처리되었을 때(예를 들면, SHA-1일 경우에 80번의 해시 갱신이 반복됨), 출력 해시값(40)은 현재의 중간 해시값(38)에 가산하여서 갱신된다. 이 처리는, 상기 파일(26) 모두가 완료될 때까지 반복된다. 이것은, 전체적으로 상기 파일(26)에 대한 결과 해시값을 생성한다.
상기 해시 갱신 루프(34)는, 여러 번 실행되고, 후술하는 것처럼 각각 명령어들 자신의 명령어내 반복을 하게 하는 그 명령어들을 실행한다. 상기 스케쥴 갱신 루프(36)는, 상기 해시 갱신 루프와 균형을 맞추도록 행해진다. 상기 스케쥴 갱신 루프는 후술하는 것처럼 성능을 향상시키기 위해 벡터화되어도 된다.
도 3은 본 기술에 따라 추가의 처리 명령어가 복수의 데이터 요소를 포함한 벡터 데이터 값(42)을 수신하는 모습을 개략적으로 나타낸 것이다. 그리고, 암호 지원 명령어는, 이 벡터 데이터 값(42)에 관한 처리 연산을 행하여, 상기 벡터 데이터 값(42)의 제1 데이터 요소와 상기 벡터 데이터 값내의 2개 이상의 추가의 데이터 요소 양쪽에 의존하는 제1 부분(44)을 갖는 출력 오퍼랜드를 생성한다. 이러한 작용은, 상기 처리연산이 레인 기반 연산이고, 상이한 레인내에서 데이터 값간에 어떠한 상호작용일 경우도 제한이 있는 전형적인 단일 명령어 다중 데이터 프로그램 명령어들과 대조한다.
본 기술의 일 구현은, 2개의 알고리즘 즉, SHA-1 및 SHA-256을 대상으로 하는 일 세트의 명령어이다. 또한, 그 명령어는 SHA-256과 같은 연산을 필요로 하는 SHA-224 알고리즘에 도움을 준다. SHA 알고리즘은, 미국 국립 표준 기술 연구소(NIST)에서 규정한 안전한 해시 알고리즘의 패밀리다. 이들 알고리즘의 사양은, 개방적으로 이용 가능하다. 그 알고리즘은, 디지털 시스템내에서 데이터를 인증하는데 사용되는 것이 일반적이다.
우리는, 상기 SHA 알고리즘의 하이레벨 연산을 기술하고 SHA-1 및 SHA-256 알고리즘에 대한 의사코드를 포함하여서 개시한다.
SHA 알고리즘의 하이레벨 연산(공지됨; FIPS 180-4)
상기 알고리즘 각각은 64바이트의 데이터를 처리하고, 해시 다이제스트(digest)를 발생시킨다; SHA-1의 경우에, 이것은 길이가 160비트이고, SHA-256의 경우에, 이것은 길이가 256비트다. 64바이트보다 큰 길이의 데이터 스트림은, 64바이트 블록으로 분할된다. 스트림이나 블록이 길이가 64바이트미만인 경우, 그 블록은, FIPS(Federal Information Processing Standard) 180-4에 규정된 것처럼, 64바이트로 채워넣어진다. 달리 언급하지 않으면, 그 알고리즘에 대한 이하의 설명은, 워드를 32비트의 비부호 정수값으로 가정한다. 워드가, 빅 엔디언 형태로 64바이트의 블록으로부터 4개의 인접한 바이트로 이루어진다고 가정한다.
양쪽의 알고리즘은 워킹(working) 해시 다이제스트를 초기화함으로써 시작한다. 그 데이터의 블록이 주어진 데이터 스트림에서 첫 번째일 경우, 그 해시 다이제스트는 고정된 종자값으로 초기화된다. 그 블록이 데이터 스트림의 연속일 경우, 상기 해시 다이제스트는 이전의 블록으로부터 산출된 상기 해시 다이제스트에 초기화된다. 상기 종자값은 FIPS 180-4에 규정되어 있다.
상기 알고리즘은 스케쥴 갱신 연산을 이용하여 상기 블록을 확장하다. 이것은, SHA-1의 경우 초기의 16개의 워드로부터 80개의 워드의 데이터로 상기 블록을 확장하고, SHA-256의 경우에는 64개의 워드의 데이터로 상기 블록을 확장한다. 상기 스케쥴 갱신 연산은, 고정된 xor, 시프트 및 회전을 사용하여, 상기 스케쥴로부터 4개의 워드를 조합하여, 상기 확장된 스케쥴에서 다음의 워드를 생성한다. 초기의 16개의 워드는, 상기 확장 스케쥴에서 그대로 남아 있다.
그리고, 상기 확장 스케쥴에서 각 워드는, 키값이 가산되어 있다. SHA-1에는, 상기 확장 블록으로부터 일 세트의 20개의 워드에 각각 적용된 키 상수 4개가 있다. SHA-256에는, 상기 확장 블록의 워드마다 키 상수 64개가 있다. 그 키 상수는, FIPS 180-4에 규정되어 있다. 그 블록을 확장하고 키 상수를 가산한 후에, 각 워드는, 일련의 고정된 xor, 시프트 및 회전에 의해 그 워드를 상기 해시 다이제스트에 포함하는 해시 갱신함수를 사용하여 처리된다.
끝으로, 상기 확장 블록으로부터의 각 워드가 상기 해시 갱신 함수를 이용하여 처리된 후에는, 상기 해시 다이제스트가 이전의 해시 다이제스트 값에 가산된다.
FIPS 180-4에 규정된 바와 같이, 상기 스케쥴은, 일 세트의 80/64개의 워드(SHA-1/SHA-256)로서 또는 원형 큐의 16개의 워드로서 구현될 수 있다.
SHA-1 및 SHA-256에 대한 의사코드 알고리즘을 완료하기 위해서, 원형 큐를 가정한 것이 아래에 표현되어 있다.
SHA-1 알고리즘 의사코드
Figure pct00011

Figure pct00012

SHA-256 알고리즘 의사코드
Figure pct00013

Figure pct00014

SHA-256 해시 갱신 코드가 다음과 같다:
Figure pct00015

여기서,
Figure pct00016

마찬가지로, SHA-256 스케쥴 갱신 의사 코드는 다음과 같다:
Figure pct00017

여기서,
Figure pct00018

SHA 알고리즘 워킹 상태(FIPS 180-4 사양으로부터 얻어질 수 있음)
상기 SHA 알고리즘을 가속하는데 취한 해결방법을 제약하는 일 국면은, (이전에 설명한 바와 같이) 일 블록의 데이터를 처리하는데 필요한 많은 워킹 상태다. 단일 명령어 다중 데이터 레지스터 파일을 이 상태를 유지 및 조작하는 능력은 상기 제약을 해결한다.
다음의 표는, SHA-1 및 SHA-256에 대한 상태 요구사항의 개요를 나타낸다.
SHA-1 상태
초기/이전의 해시 다이제스트 5×32비트 워드
워킹 해시 다이제스트 5×32비트 워드
스케쥴 16×32비트 워드
키 상수 4×32비트 워드

SHA-256 상태
초기/이전의 해시 다이제스트 8×32비트 워드
워킹 해시 다이제스트 8×32비트 워드
스케쥴 16×32비트 워드
키 상수 64×32비트 워드
SHA-1 또는 SHA-256의 알고리즘을 사용하여, 일 블록의 데이터를 처리 가능한 (예를 들면, 코프로세서로서) 전용 SHA 유닛을 구축하려면, 확고한 목적의 상태에서 투자를 필요로 한다. 이 상태는 RISC 마이크로프로세서상에서 다른 연산에서 쉽게 사용될 수 있었다.
SHA 알고리즘들을 3개 한 벌의 형태의 RISC 명령어에 넣기
확고한 목적의 상태를 피하기 위해서, 우리는, 상기 3개 한 벌의 명령어 형태를 준수하며 단일 명령어 다중 데이터 처리회로와 레지스터 파일을 사용하여 상기 알고리즘들을 처리할 수 있는 방식으로 그 알고리즘들을 분할하였다.
상기 RISC 3개 한 벌의 형태의 전형적인 제약은, 3개의 레지스터 중 하나의 레지스터만을 수신지로서 정의하는 것이다. 그렇지만, 상기 수신지는 소스로서 사용될 수 있다.
우리는 SIMD 레지스터를 사용함으로써 명령어마다 범용 레지스터를 사용하여 처리 가능한 것보다 많은 데이터를 처리할 수 있다.
상기 3개 한 벌의 명령어 형태를 준수함으로써, 그 명령어는 최신의 마이크로프로세서에 공통된, 리네임(rename), 스케쥴링, 발행, 결과 및 폐기 로직을 이용할 수 있다.
모든 상태와 종속성이 그 명령어에 의해 규정되어 있으므로, 비순차적 실행, 인터럽션 및 투기적 실행(speculation)을 처리하는 파이프라인 메카니즘이 그래도 유효하고; 상기 제안된 명령어들의 정확한 실행을 유지하는데 제어 로직을 추가할 필요가 없다.
SHA-1 해시 갱신 명령어
이전에 설명한 것처럼, SHA-1 해시 갱신함수는, 32비트 워드를 160비트 해시 다이제스트에 넣는다. 이 함수는 고정된 시프트, 고정된 xor/and/or 및 고정된 회전으로 이루어진다.
Figure pct00019

여기서,
Figure pct00020

Figure pct00021

SHA-1 해시 다이제스트는 160비트이기 때문에, 전체 다이제스트 플러스 32비트 워드에 관해 행하는 연산은 32비트 범용 3개 한 벌의 RISC형태로 가능하지 않고 64비트 범용 3개 한 벌의 RISC형태로 실현하는데 상당한 노력을 요할 것이고; 32비트 데이터 값을 제3의 64비트 오퍼랜드의 하이 32비트에 삽입하는데 보다 많은 정리 작업(housekeeping)이 필요할 것이다.
이 때문에, 본 예시 기술은 SHA-1 해시 함수를 개선된 일 세트의 4개의 SIMD 명령어, 즉 SHA1C, SHA1P, SHA1M 및 SHA1H에 매핑한다.
Figure pct00022

명령어 SHA1C, SHA1P 및 SHA1M은 3개의 오퍼랜드를 취한다. Qd는 상기 다이제스트 해시의 첫번째 4개의 32비트 워드를 보유하고, 이때 Sn은 다섯 번째를 보유한다. 세 번째 오퍼랜드 Vm은, 초기의 실시예에서는 4개의 32비트 워드를 보유하는 벡터다. 이에 따라 그 해시 갱신 함수를 상기 명령어에 의해 4번 반복 처리할 수 있다. 의사코드는, 이들 명령어의 연산이 아래에서 표현되도록 정의되어 있다. 의사코드의 관점에서 어떤 명령어의 연산을 정의하는 것은 본 기술분야에 잘 알려져 있고, 상기 의사코드에 의해 정의된 명령어를 행하는(실행하는) 회로의 실현은, 일단 상기 의사코드가 정의되어 있었다면 일상적인 것이라는 것을 알 것이다.
Figure pct00023

따라서, 일 실시예의 예시에 따라, 상기 단일 명령어 다중 데이터 처리회로는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Sn[31:0]를 갖는 추가의 프로그램 명령어에 의해 제어되도록 구성되고, 상기 벡터 데이터 값이 Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산이 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시킨다:
Figure pct00024

여기서, 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()함수 중에서 선택하기 위한 선택을 포함한다:
Figure pct00025

상기 RISC명령어 형태의 제약은, 상기 해시 다이제스트의 첫 번째 4개의 워드만을, SHA1C, SHA1P 및 SHA1M 명령어에 의해 128비트 레지스터 Qd에 돌려줄 수 있는 것이다. 이 때문에, 명령어 SHA1H는, 상기 해시 다이제스트의 다섯 번째 워드를 돌리주도록 제안된다.
초기의 실현에서는 SHA1H를 다음과 같이 구현한다:
Figure pct00026

4번의 반복 후의 다섯 번째 해시 다이제스트 값이 Qd[0]의 초기값의 회전이다는 것을 준수한다.
SHA1 해시 갱신 명령어 변형
SHA1C, SHA1P 및 SHA1M 명령어의 변형은, 본 기술의 다른 변형에 의해 확장되어 Vm.8S 오퍼랜드 또는 Vm.16S 오퍼랜드를 허용할 수 있었다. 이들의 변형은, 본 기술내에 포함된다. 이에 따라 단일 명령어내에서 상기 해시 갱신 함수를 8번 및 16번 반복 처리할 수 있다. 그렇긴 하지만, 상기 Vm.4S 변형은, 매 20번 반복 후에 상기 해시 갱신 함수를 변경시킬 필요가 있으므로 그래도 필요할 것이다.
일례로서 상기 SHA1<OP>Vm.8S 변형:
Figure pct00027

8번 및 16번의 반복에 걸쳐 연산하는 변형(Vm.8S 및 Vm.16S)은, 추가로 SHA1C2, SHA1P2 및 SHA1M2 명령어를 필요로 한다. 이들 명령어는, 8번 반복이나 16번 반복 후에 상기 해시 다이제스트에서 다섯 번째 워드에 대한 적절한 값을 발생시킨다. 이들의 새로운 명령어는, SHA1C, SHA1P 및 SHA1M 명령어와 마찬가지의 방식으로 구현되지만, 예를 들면, 아래와 같은 Qd 레지스터에서 다섯 번째 해시 다이제스트 워드를 돌려준다:
Figure pct00028

Figure pct00029

따라서, 일 실시예의 예시에 따라, 상기 단일 명령어 다중 데이터 처리회로는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Sn[31:0]를 갖는 추가의 프로그램 명령어에 의해 제어되도록 구성되고, 상기 벡터 데이터 값이 Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산이 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시킨다.
Figure pct00030

여기서, 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 데이터패스가 하기를 이용 가능하였다면 8워드(8x32비트)로 되돌리도록 실현될 수 있었다:
SHA1<OP> Qd,Vn.4S
SHA1<OP> Qd,Vn.8S.
이들의 명령어는, 상기 해시 함수의 4번 및 8번 반복을 처리한다.
SHA1 해시 갱신 마이크로 구조 선택사항
각 종 선택사항은 이들 명령어의 마이크로구조 실현에 대해 존재한다:
이들 명령어의 고성능 실현을 선택하여, 반복 로직 중 일부를 확장하고 보다 많은 병행 실행을 행하여도 된다.
상기 마이크로 구조를 선택하여 일시적 파이프라인 상태와 그에 따른 소비전력을 감소시키기 위해서 멀티 사이클 단(stages)을 이용할 수 있었다.
중간 계산은 자리올림 보존 형태로 행해질 수 있다.
명백한 SHA1<OP>2 명령어가 필요한 경우의 보다 넓은 변형에서는, SHA1<OP>2 연산이 대응한 SHA1<OP>함수에 후속할 때 검출하는 것이 가능하기도 하다. 그들의 경우에는, 두 번째 계산을 방지하고 상기 데이터패스로부터의 결과를 간단히 보내는 것이 가능해야 한다. 이에 따라 파이프라인에서 임시의 상태를 일부 필요로 한다.
SHA1 스케쥴 갱신 명령어
SHA1 알고리즘으로 속도를 향상시키려면 상기 해시 갱신함수와 스케쥴 갱신 함수간에 균형이 필요하다.
이전에 설명한 것처럼, SHA1 스케쥴 갱신 함수는, 상기 데이터 스케쥴로부터의 4개의 32비트 워드를 상기 스케쥴을 확장하는 단일 결과 워드로 조합하거나, 원형 큐일 경우에는, 상기 스케쥴에 하나의 워드를 겹쳐쓴다.
그 스케쥴 갱신 연산은, xor들과 고정된 회전으로 이루어진다.
Figure pct00031

이 연산은 4개의 입력값을 필요로 하고, 이 입력값 중 하나는 파괴적이다. 이것은, 범용 32- 3개 한 벌의 RISC 형태에 맞지 않는다.
상기 스케쥴 갱신 명령어는, ARM사의 개선된 SIMD 아키텍처에 의해 제공되어도 된다.
메모리 로드(load)와 스토어(store)를 피하기 위해서, 우리는, FIPS 180-4에 기재된, 상기 스케쥴 갱신의 원형 큐 형태를 효율적으로 실행하는 명령어를 구현하도록 선택했다.
완전을 기하기 위해서, 우리는 스케쥴 갱신의 벡터화 방법을 포함한다.
SHA-1 스케쥴 갱신 벡터화 및 치환
상기 준수의 결과로서, w[round], w[round+1mod16] 및 w[round+2mod16]는 동시에 처리될 수 있다. 4-웨이(way) 벡터화에 대한 직접 경로를 방지하는 w[round+3mod16]의 계산에서는 w[round]에 의존한다.
Figure pct00032

이러한 제약은, w[round+3mod16]의 계산에서 w[round]의 값에 대해 0으로 치환하여, 그 결과를 추가의 xor과 회전의 단계로 결정함으로써 해결될 수 있다; 이것은 아래에 설명되어 있다.
Figure pct00033

상기 블록의 코드를 리팩토링 하여(re-factor) 데이터패스의 사이즈가 4×32비트인 SIMD 아키텍처상에서 4레인 벡터 연산을 이용할 수 있다.
SHA-1 스케쥴 갱신 및 해시 갱신 균형 맞추기
상기 스케쥴 갱신 연산과 상기 해시 갱신 연산의 균형을 맞추기 위해서, 상기 스케쥴 갱신은, 이전에 설명한 것처럼, 즉 4-웨이 벡터화를 사용하여 처리된다. 이에 따라 단일 스케쥴 갱신을 할 수 있어 이후의 해시 함수 명령어에 대해 충분한 데이터, 4×32비트 워드를 발생시킨다.
상기 벡터화 기술은, 합리적인 SIMD 구현에 있어서, 상기 제안된 SHA-1 해시 함수를 실행하는데 걸리는 실행 사이클보다 상기 스케쥴 데이터를 계산하는데 많은 실행 사이클이 걸릴 것이다.
이것에 대해서는 이유가 여러 가지다:
요소 {round+2, round+3, round+4, round+5}를 포함하는 벡터는 2개의 벡터 레지스터에 걸쳐 있을 가능성이 있다.
요소 {round+13, round+14, round+15, 0}를 포함하는 벡터는 하나의 벡터 레지스터와 제로 벡터로부터 추출될 필요가 있다.
SIMD 벡터 회전은, SIMD 명령어 세트, 예를 들면 ARM 개선 SIMD명령어에서는 일반적으로 발견되지 않고 있다. 그래서, 벡터 회전은, 2개의 벡터 시프트와 하나의 or 명령어를 필요로 한다.
암달의 법칙(Amdahl's law)으로 인해서, SHA-1 알고리즘의 양쪽 부분은 균형을 맞추어야 하고, 그렇지 않으면 부품의 속도가 느릴수록 달성 가능한 많은 속도향상이 제한될 것이다.
이러한 소견에 따라 SHA-1 스케쥴 갱신 함수를 가속하기 위한 다음의 SIMD 명령어가 행해지게 된다.
Figure pct00034

Figure pct00035

이 명령어는, 상기 원형 큐에는 4개의 4×32비트 벡터 레지스터가 있다는 것을 가정한다.
요소들의 재배치는 상기 명령어 내부에서 제어된다. 이에 따라 효율적으로 상기 요소들의 재배치를 자유롭게 하고, 그것들은 마이크로 구조에서 배선들일뿐이다.
고정된 회전도 배선들일뿐이다.
상기 명령어는, 균형이 맞추어지고, 대부분의 마이크로 구조에서 사이클 대기시간이 매우 짧아도 되고; 그들은 직렬 배선으로 2개의 xor를 포함한다.
따라서, 실시예의 예시에 따라, 상기 단일 명령어 다중 데이터 처리회로는, 제1 입력 오퍼랜드Sp[127:0]와 제2 입력 오퍼랜드Sq[127:0]을 갖고, 아래의 단계에 의해 나타낸 것과 같은 값을 갖는 출력 오퍼랜드Sr[127:0]를 생성하는, 제1 스케쥴 명령어에 의해 제어되도록 구성된다:
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에 대해 개요를 나타낸 그 이유 때문에, 2개의 해시 갱신 명령어에서는 SHA-2 해시 갱신 함수를 대상으로 한다.
SHA-2 알고리즘에 대해서 워킹 해시 다이제스트는, 256비트 또는 512비트다. 이하에서는, 본 발명의 초기 실현시에 포함되는 것처럼, 256비트의 워킹 해시를 갖는 SHA-256 알고리즘과 SHA-224 알고리즘에 초점을 둔다. 후자의 절에서는, 본 기술을 SHA-512, SHA-384, SHA-512/256 및 SHA-512/224에 적용하는 방법을 설명한다.
SHA-256 해시 갱신 명령어
SHA-256( 및 SHA-224)의 워킹 해시 다이제스트의 길이는 256비트이다. 레지스터 폭이 128비트인 SIMD아키텍처에서는, 상기 해시 다이제스트에 관해 어떠한 조작에 의한 결과도 2개의 명령어, 즉, 첫 번째 4×32비트 워드를 돌려주는 명령어와 그 나머지 4×32비트 워드를 돌려주는 명령어를, 필요로 한다.
SHA-1과 달리 상기 SHA-2 해시 갱신 함수는, 고정되어 있고, 주어진 수의 반복 후에 변경하지 않으므로, 2개의 명령어만을 필요로 한다.
Figure pct00036

Figure pct00037

따라서, 일 실시예의 예시에 따라, 상기 단일 명령어 다중 데이터 처리회로는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Qn[127:0]를 갖는 추가의 프로그램 명령어에 의해 제어되도록 구성되고, 상기 벡터 데이터 값이 Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산이 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시킨다.
Figure pct00038

여기서, 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) XOR ROR(B,13) XOR ROR(B,22))이고, Sigma1(B)는 (ROR(B,6) XOR ROR(B,11) XOR ROR(B,25))이고, ROR(P,Q)는 P값의 Q비트 위치만큼의 우회전이다.
Figure pct00039

따라서, 일 실시예의 예시에 따라, 상기 단일 명령어 다중 데이터 처리회로는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Qn[127:0]를 갖는 추가의 프로그램 명령어에 의해 제어되도록 구성되고, 상기 벡터 데이터 값이 Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산이 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시킨다.
Figure pct00040

Figure pct00041

여기서, 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) XOR ROR(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에서는, Qd에서 상기 해시 다이제스트의 첫 번째 4×32비트 워드, Qn에서 나머지 4×32비트 워드 및 Vm.4S에서 스케쥴 데이터의 4×32비트 워드를 예상한다.
SHA256H2에서는, Qd에서 상기 해시 다이제스트의 두 번째 4×32비트 워드, Qn에서 첫번째 4×32비트 워드 및 Vm.4S에서 스케쥴 데이터의 4×32비트 워드를 예상한다.
이때, SHA256H가 상기 해시 다이제스트의 첫 번째 4×32비트 워드를 자동 파괴할 때, Qn에서 SHA256H2에 정확한 값을 건네줄 수 있도록 SHA256H를 실행하기에 앞서 사본을 만들어야 한다.
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 Qd, Vm.8S
SHA256H Qd, Vm.16S
여기서, Qd는 폭이 256비트인 레지스터이고, SHA256H2연산을 제공할 필요가 없고, 해시 다이제스트 전체는 벡터 레지스터에 들어간다.
SHA-256 스케쥴 갱신
SHA-1에 대해 이전에 개요를 나타낸 바와 같이, SHA-256 알고리즘으로 속도를 향상시키려면, 상기 해시 갱신함수와 상기 스케쥴 갱신함수간에 균형을 맞출 필요가 있다.
SHA-256 스케쥴 갱신함수는, 상기 데이터 스케쥴로부터의 4개의 32비트 워드를, 상기 스케쥴을 확장하거나, 원형 큐일 경우에 상기 스케쥴에 워드를 겹쳐쓰는 단일 결과 워드로 조합한다.
상기 스케쥴 갱신 연산은, xor, 고정된 시프트 및 고정된 회전(공지됨)으로 이루어진다.
Figure pct00042

SHA-256 스케쥴 갱신 벡터화 및 치환
또한, SHA-256 스케쥴 갱신 함수는, 4-웨이 SIMD에 적합한 방식으로 벡터화될 수도 있다.
Figure pct00043

이때, 2개의 종속성, 즉 w[round]와 w[round+1]가 존재한다. SHA-256의 치환 방법은, 이전과 같이, 제로 값으로 치환한 후 그 결과를 결정하여서 이루어진다. 이 방법이 아래에 설명되어 있다:
Figure pct00044

상기 블록의 코드를 리팩토링 하여 데이터패스의 사이즈가 4×32비트인 SIMD 아키텍처상에서 4레인 벡터 연산을 이용할 수 있다.
SHA-256 스케쥴 갱신 및 해시 갱신 균형 맞추기
상기 스케쥴 갱신 연산과 상기 해시 갱신 연산의 균형을 맞추기 위해서, 우리는, 상기 스케쥴 갱신을, 이전에 설명한 것처럼, 즉 4-웨이 벡터화를 사용하여 처리하는 것을 제안한다. 이에 따라 단일 스케쥴 갱신을 할 수 있어 이후의 해시 함수 명령어에 대해 충분한 데이터, 4×32비트 워드를 발생시킨다.
상기 벡터화 기술은, 합리적인 SIMD 구현에 있어서, 상기 제안된 SHA-1 해시 함수를 실행하는데 걸리는 실행 사이클보다 상기 스케쥴 데이터를 계산하는데 많은 실행 사이클이 걸릴 것이다.
이것에 대해서는 이유가 여러 가지다:
요소 {round+1, round+2, round+3, round+4} 및 {round+9, round+10, round+11, round+12}를 포함하는 벡터는, 1개보다 많은 벡터 레지스터에 걸쳐 있다.
요소 {round+14, round+15, 0, 0}를 포함하는 레지스터는 추출을 이용하여 구성될 필요가 있다.
시그마(sigma) 연산은 회전을 포함하고, SIMD 벡터 회전은 SIMD 명령어 세트, 예를 들면 ARM사의 개선된 SIMD에서 일반적으로 발견되지 않고 있다. 이러한 아키텍처에서의 벡터 회전은, 2개의 벡터 시프트와 하나의 OR 명령어를 필요로 한다.
상기 치환을 고려하는 결정도, 상기 레지스터들의 추출을 필요로 한다.
상기 sigma0와 sigma1 연산은, 대략 7벡터 연산으로 이루어진다.
암달의 법칙으로 인해서, SHA-256 알고리즘의 양쪽 부분은 균형을 맞추어서 속도가 보다 느린 부품이 달성 가능한 많은 속도향상을 제한하지 않도록 할 필요가 있다.
이들의 소견에 따라 SHA-256 스케쥴 갱신 함수를 가속하기 위한 다음의 SIMD 명령어가 행해지게 된다.
Figure pct00045

이 명령어는, 상기 원형 큐에는 4개의 4×32비트 벡터 레지스터가 있다는 것을 가정한다. 그 명령어는 상기 스케쥴 확장의 이용을 방해하지 않는다.
요소들의 재배치 및 추출은, 상기 명령어 내부에서 제어된다. 그 후, 상기 마이크로 구조는, 이들 및 고정된 시프트와 회전을 배선으로서 구현하도록 선택할 수 있다.
상기 명령어는, 대부분의 마이크로 구조에서 사이클 대기시간이 짧아도 된다.
따라서, 실시예의 예시에 따라, 상기 단일 명령어 다중 데이터 처리회로는, 입력 오퍼랜드Sp[127:0]를 갖고, 아래의 단계에 의해 나타낸 것과 같은 값을 갖는 출력 오퍼랜드Sq[127:0]를 생성하는, 제1 스케쥴 명령어에 의해 제어되도록 구성된다:
T[127:0]={Sp[31:0]:Sq[127:32]};
T[127:0]=VecROR32(T[127:0],7) XOR VecROR32(T[127:0],18) XOR VecROR32(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비트 워드에 별도로 가산하는 것이다.
따라서, 실시예의 예시에 따라, 상기 단일 명령어 다중 데이터 처리회로는, 제1 입력 오퍼랜드Sp[127:0]와 제2 입력 오퍼랜드Sq[127:0]을 갖고, 아래의 단계에 의해 나타낸 것과 같은 값을 갖는 출력 오퍼랜드Sr[127:0]를 생성하는, 제2 스케쥴 갱신 명령어에 의해 제어되도록 구성된 것을 제공한다:
Figure pct00046

여기서, 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바이트의 블록들로 분할되고, 빅 엔디언 형태의 16×64비트 워드로서 처리된다.
SHA-512는 8×64비트 워드로 동작한다.
SHA-512는 해시 함수의 80번 반복을 필요로 한다.
상기 해시 함수와 스케쥴 갱신은, 64비트 워드로 동작하고, 상이한 고정 시프트, 회전 및 xor을 포함한다.
간결함을 기하기 위해, 우리는 SHA-512 알고리즘을 생략한다.
SHA-512, SHA-384, SHA-512/256 및 SHA-512/256 알고리즘을 대상으로 하는 명령어
SHA-256 알고리즘을 대상으로 하는 명령어의 동기는, SHA-512 알고리즘과 마찬가지다.
우리는 이들 SHA-512 알고리즘을 대상으로 하는 명령어의 가능성이 있는 실현을 열거하고 있다.
상기 SIMD 레지스터가 128비트인 경우, 해시 및 스케쥴 명령어마다 4번 반복이라고 가정한다:
Figure pct00047

이때, 위의 명령어는 레지스터 피닝(pinning); 상기 마이크로 구조내에서, 한쪽의 레지스터를 지정하는 것과 제2의 레지스터를 암시하는 것을 필요로 할 것 같다. 그 명령어는, 더 이상 전형적 RISC 3개 한 벌의 형태가 되지 않을 것 같지만, 예를 들면 ARM사의 Neon 로드/스토어 다중 명령어에서, 이들 종류의 연산에 대해 우선권이 있다.
보다 넓은 SIMD 레지스터가 이용 가능한 경우, 그 명령어들의 가능한 변형은 다음을 포함한다:
Figure pct00048

이들도, 상기 해시 및 스케쥴 갱신 연산의 반복동안 처리하지만, 상기 보다 넓은 SIMD 레지스터로 인해 상기 3개 한 벌의 RISC형태에 적합하다.
FIPS 180-4에 기재된 것처럼, 절단(truncation)을 사용한 이들 명령어도, 마찬가지로 SHA-384, SHA-512/256 및 SHA-512/224를 대상으로 할 수 있었다.

Claims (27)

  1. 단일 명령어 다중 데이터 레지스터 파일; 및
    상기 단일 명령어 다중 데이터 레지스터 파일에 연결되고, 단일 명령어 다중 데이터 프로그램 명령어에 의해 제어되어 상기 단일 명령어 다중 데이터 레지스터 파일의 입력 오퍼랜드용 레지스터내에 별도의 레인내에 기억된 별도의 데이터 요소에 관해서 독립적으로 처리 연산을 행하도록 구성된, 단일 명령어 다중 데이터 처리회로를 구비하고,
    상기 단일 명령어 다중 데이터 처리회로는, 추가의 프로그램 명령어에 의해 제어되어, 내부에 기억된 출력 오퍼랜드를 발생시키기 위해 상기 단일 명령어 다중 데이터 레지스터 파일의 입력 오퍼랜드용 레지스터와 상기 단일 명령어 다중 데이터 레지스터 파일의 출력 오퍼랜드용 레지스터내에 유지된 연속적인 데이터 요소를 포함하는 벡터 데이터 값에 관한 추가의 처리연산을 행하되, 상기 출력 오퍼랜드의 제1 부분이 상기 연속적인 데이터 요소내에 모든 데이터 요소에 의존한 값을 갖도록 구성된, 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 추가의 프로그램 명령어는, 상기 벡터 데이터 값을 형성하는 복수의 워드의 데이터에 따라 출력 해시값을 상기 출력 오퍼랜드로서 생성하도록 연산하는 암호 프로그램 명령어인, 데이터 처리장치.
  3. 제 2 항에 있어서,
    상기 추가의 프로그램 명령어는, 연속적인 워드의 데이터와 중간 해시값의 적어부 일부를 소비하는 반복 처리 연산을 행하여 상기 출력 해시값을 생성하는, 데이터 처리장치.
  4. 제 1 항, 제 2 항 또는 제 3 항 중 어느 한 항에 있어서,
    상기 추가의 프로그램 명령어는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Sn[31:0] 양쪽을 갖고, 상기 벡터 데이터 값은 Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시키는, 데이터 처리장치:
    Figure pct00049

    Figure pct00050

    여기서, 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 항 중 어느 한 항에 있어서,
    상기 추가의 프로그램 명령어는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Sn[31:0] 양쪽을 갖고, 상기 벡터 데이터값은, Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시키는, 데이터 처리장치:
    Figure pct00051

    여기서, 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 항 중 어느 한 항에 있어서,
    상기 제1 입력 오퍼랜드Qd[127:0]와 상기 제2 입력 오퍼랜드Sn[31:0]은, 상기 단일 명령어 다중 데이터 레지스터 파일내의 별도의 레지스터로부터 판독되는, 데이터 처리장치.
  8. 제 4 항, 제 5 항 또는 제 6 항 중 어느 한 항에 있어서,
    상기 제1 입력 오퍼랜드Qd[127:0]와 상기 제2 입력 오퍼랜드Sn[31:0]은, 상기 단일 명령어 다중 데이터 레지스터 파일내의 공유 레지스터로부터 판독되는, 데이터 처리장치.
  9. 제 1 항, 제 2 항 또는 제 3 항 중 어느 한 항에 있어서,
    상기 추가의 프로그램 명령어는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Qn[127:0] 양쪽을 갖고, 상기 벡터 데이터값은, Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시키는, 데이터 처리장치:
    Figure pct00052

    Figure pct00053

    여기서, 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) XOR ROR(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 항 중 어느 한 항에 있어서,
    상기 추가의 프로그램 명령어는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Qn[127:0] 양쪽을 갖고, 상기 벡터 데이터값은, Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시키는, 데이터 처리장치:
    Figure pct00054

    여기서, 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) XOR ROR(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 항에 있어서,
    상기 제1 입력 오퍼랜드Qd[127:0]와 상기 제2 입력 오퍼랜드Qn[127:0]은, 상기 단일 명령어 다중 데이터 레지스터 파일내의 별도의 레지스터로부터 판독되는, 데이터 처리장치.
  12. 제 9 항 또는 제 10 항에 있어서,
    상기 제1 입력 오퍼랜드Qd[127:0]와 상기 제2 입력 오퍼랜드Qn[127:0]은, 상기 단일 명령어 다중 데이터 레지스터 파일내의 공유 레지스터로부터 판독되는, 데이터 처리장치.
  13. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 단일 명령어 다중 데이터 처리회로는, 상기 추가의 프로그램 명령어와 상기 단일 명령어 다중 데이터 프로그램 명령어의 처리를 관리하는 공통 메카니즘을 이용하는, 데이터 처리장치.
  14. 제 13 항에 있어서,
    상기 처리를 관리하는 것은,
    레지스터 재명명;
    명령어 스케쥴링;
    명령어 발행;
    명령어 폐기; 및
    명령어 인터럽트를,
    하나 이상 관리하는 것을 포함하는, 데이터 처리장치.
  15. 제 4 항 또는 제 5 항에 있어서,
    상기 단일 명령어 다중 데이터 처리회로는, 입력 오퍼랜드Sm[31:0]를 갖고, 2개의 비트 위치만큼의 Sm[31:0]의 우회전으로 나타낸 것과 같은 값을 갖는 출력 오퍼랜드Sd[31:0]를 생성하는 회전 명령어에 의해 제어되도록 구성된, 데이터 처리장치.
  16. 제 4 항 또는 제 5 항에 있어서,
    상기 단일 명령어 다중 데이터 처리회로는, 제1 입력 오퍼랜드Sp[127:0]와 제2 입력 오퍼랜드Sq[127:0]을 갖고, 아래의 단계에 의해 나타낸 것과 같은 값을 갖는 출력 오퍼랜드Sr[127:0]를 생성하는, 제1 스케쥴 갱신 명령어에 의해 제어되도록 구성된, 데이터 처리장치:
    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]를 생성하는, 제2 스케쥴 갱신 명령어에 의해 제어되도록 구성된, 데이터 처리장치:
    Figure pct00055

    Figure pct00056

  18. 제 9 항 또는 제 10 항에 있어서,
    상기 단일 명령어 다중 데이터 처리회로는, 입력 오퍼랜드Sp[127:0]를 갖고, 아래의 단계에 의해 나타낸 것과 같은 값을 갖는 출력 오퍼랜드Sq[127:0]를 생성하는, 제1 스케쥴 갱신 명령어에 의해 제어되도록 구성된, 데이터 처리장치:
    Figure pct00057

    Figure pct00058

    여기서, VecROR32(A,B)는 A내에서 각 32비트 워드의 B비트 위치만큼의 별도의 우회전이고, VecADD32(A,B)는 A내에서 각 32비트 워드를 B내에서 대응한 32비트 워드에 별도로 가산하는 것이다.
  19. 제 18 항에 있어서,
    상기 단일 명령어 다중 데이터 처리회로는, 제1 입력 오퍼랜드Sp[127:0]와 제2 입력 오퍼랜드Sq[127:0]를 갖고, 아래의 단계에 의해 나타낸 것과 같은 값을 갖는 출력 오퍼랜드Sr[127:0]를 생성하는, 제2 스케쥴 갱신 명령어에 의해 제어되도록 구성된, 데이터 처리장치:
    Figure pct00059

    Figure pct00060

    Figure pct00061

    여기서, VecROR32(A,B)는 A내에서 각 32비트 워드의 B비트 위치만큼의 별도의 우회전이고, VecADD32(A,B)는 A내에서 각 32비트 워드를 B내에서 대응한 32비트 워드에 별도로 가산하는 것이다.
  20. 제 1 항 내지 제 19 항 중 어느 한 항에 있어서,
    상기 단일 명령어 다중 데이터 레지스터 파일로부터 분리되어 있고, 상기 단일 명령어 다중 데이터 레지스터 파일내의 레지스터들보다 비트폭이 낮은 범용 레지스터들을 갖는, 범용 레지스터 파일과, 상기 범용 레지스터 파일에 연결되고, 범용 처리 명령어에 의해 제어되어 상기 범용 레지스터들 중 하나에 기억된 입력 오퍼랜드에 관한 처리 연산을 행하도록 구성된 범용 처리회로를 더 구비한, 데이터 처리장치.
  21. 단일 명령어 다중 데이터 오퍼랜드를 기억하는 단일 명령어 다중 데이터 레지스터 파일 수단; 및
    단일 명령어 다중 데이터 프로그램 명령어의 제어하에서 처리연산을 행하고, 상기 단일 명령어 다중 데이터 레지스터 파일 수단에 연결되고, 상기 처리연산이 상기 단일 명령어 다중 데이터 레지스터 파일 수단의 입력 오퍼랜드용 레지스터내에 별도의 레인내에 기억된 별도의 데이터 요소에 관해서 독립적으로 행해지는, 단일 명령어 다중 데이터 처리수단을 구비하고,
    상기 단일 명령어 다중 데이터 처리수단은, 추가의 프로그램 명령어에 의해 제어되어, 내부에 기억된 출력 오퍼랜드를 발생시키기 위해 상기 단일 명령어 다중 데이터 레지스터 파일 수단의 입력 오퍼랜드용 레지스터와 상기 단일 명령어 다중 데이터 레지스터 파일 수단의 출력 오퍼랜드용 레지스터내에 유지된 연속적인 데이터 요소를 포함하는 벡터 데이터 값에 관한 추가의 처리연산을 행하되, 상기 출력 오퍼랜드의 제1 부분이 상기 연속적인 데이터 요소내에 모든 데이터 요소에 의존한 값을 갖는, 데이터 처리장치.
  22. 단일 명령어 다중 데이터 오퍼랜드를 단일 명령어 다중 데이터 레지스터 파일에 기억시키는 단계;
    단일 명령어 다중 데이터 프로그램 명령어의 제어하에서 상기 단일 명령어 다중 데이터 레지스터 파일의 입력 오퍼랜드용 레지스터내에 별도의 레인내에 기억된 별도의 데이터 요소에 관해서 독립적으로 처리연산을 행하는 단계; 및
    추가의 프로그램 명령어의 제어하에서, 내부에 기억된 출력 오퍼랜드를 발생시키기 위해 상기 단일 명령어 다중 데이터 레지스터 파일의 입력 오퍼랜드용 레지스터와 상기 단일 명령어 다중 데이터 레지스터 파일의 출력 오퍼랜드용 레지스터내에 유지된 연속적인 데이터 요소를 포함하는 벡터 데이터 값에 관한 추가의 처리연산을 행하는 단계로서, 상기 출력 오퍼랜드의 제1 부분이 상기 연속적인 데이터 요소내에 모든 데이터 요소에 의존한 값을 갖는, 단계를 포함한, 데이터 처리방법.
  23. 제 22 항에 있어서,
    상기 추가의 프로그램 명령어는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Sn[31:0] 양쪽을 갖고, 상기 벡터 데이터 값은 Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시키는, 데이터 처리방법:
    Figure pct00062

    Figure pct00063

    여기서, 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 항에 있어서,
    상기 추가의 프로그램 명령어는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Sn[31:0] 양쪽을 갖고, 상기 벡터 데이터값은, Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시키는, 데이터 처리방법:
    Figure pct00064

    Figure pct00065

    여기서, 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 항에 있어서,
    상기 추가의 프로그램 명령어는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Qn[127:0] 양쪽을 갖고, 상기 벡터 데이터값은, Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시키는, 데이터 처리방법:
    Figure pct00066

    여기서, 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) XOR ROR(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 항에 있어서,
    상기 추가의 프로그램 명령어는, 상기 단일 명령어 다중 데이터 레지스터 파일로부터 판독된 제1 입력 오퍼랜드Qd[127:0]와 제2 입력 오퍼랜드Qn[127:0] 양쪽을 갖고, 상기 벡터 데이터값은, Index가 0∼2N이고 N이 양의 정수인 Vm[Index+31:Index]를 포함하고, 상기 추가의 처리 연산은 아래의 단계로 표현된 것과 같은 값을 갖도록 상기 출력 오퍼랜드Qdoutput[127:0]를 발생시키는, 데이터 처리방법:
    Figure pct00067

    여기서, 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) XOR ROR(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 중 어느 한 항에 기재된 것과 같은 데이터 처리장치에 대응한 가상 머신 실행 환경을 제공하도록 제어하는 컴퓨터 기억매체에 기억된 컴퓨터 프로그램.
KR1020147014337A 2011-11-17 2012-09-20 암호 알고리즘에서 해시값의 생성을 지원하는 simd 명령어 KR101962104B1 (ko)

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
KR20140093695A true KR20140093695A (ko) 2014-07-28
KR101962104B1 KR101962104B1 (ko) 2019-03-26

Family

ID=45444264

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147014337A KR101962104B1 (ko) 2011-11-17 2012-09-20 암호 알고리즘에서 해시값의 생성을 지원하는 simd 명령어

Country Status (11)

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

Families Citing this family (27)

* 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
US8953785B2 (en) * 2012-09-28 2015-02-10 Intel Corporation Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor
US8838997B2 (en) * 2012-09-28 2014-09-16 Intel Corporation Instruction set for message scheduling of SHA256 algorithm
US8874933B2 (en) * 2012-09-28 2014-10-28 Intel Corporation Instruction set for SHA1 round processing on 128-bit data paths
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
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
US10491377B2 (en) * 2017-02-28 2019-11-26 Google Llc Hashing using data parallel instructions
US10833847B2 (en) * 2017-02-28 2020-11-10 Google Llc Cryptographic hash generated 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
CN113794552B (zh) * 2021-09-14 2023-07-07 山东省计算中心(国家超级计算济南中心) 一种基于simd的sm3并行数据加密运算方法及系统
CN114095149B (zh) * 2021-11-12 2023-05-30 龙芯中科技术股份有限公司 信息加密方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004516706A (ja) * 2000-12-13 2004-06-03 インフィネオン テクノロジーズ アクチエンゲゼルシャフト 暗号プロセッサ
KR20150079731A (ko) * 2012-12-28 2015-07-08 인텔 코포레이션 보안 해시 알고리즘들을 처리하는 명령어 프로세서들, 방법들 및 시스템들
KR20150112782A (ko) * 2014-03-27 2015-10-07 인텔 코포레이션 해시 동작을 효율적으로 실행하는 방법 및 장치

Family Cites Families (16)

* 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
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
GB2389678A (en) * 2002-06-14 2003-12-17 Univ Sheffield Finite field processor reconfigurable for varying sizes of field.
US7599489B1 (en) * 2004-02-09 2009-10-06 Sun Microsystems Inc. Accelerating cryptographic hash computations
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
US8879725B2 (en) * 2008-02-29 2014-11-04 Intel Corporation Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
US20100115232A1 (en) * 2008-10-31 2010-05-06 Johnson Timothy J Large integer support in vector operations
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004516706A (ja) * 2000-12-13 2004-06-03 インフィネオン テクノロジーズ アクチエンゲゼルシャフト 暗号プロセッサ
KR20150079731A (ko) * 2012-12-28 2015-07-08 인텔 코포레이션 보안 해시 알고리즘들을 처리하는 명령어 프로세서들, 방법들 및 시스템들
KR20150112782A (ko) * 2014-03-27 2015-10-07 인텔 코포레이션 해시 동작을 효율적으로 실행하는 방법 및 장치

Also Published As

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

Similar Documents

Publication Publication Date Title
KR101962104B1 (ko) 암호 알고리즘에서 해시값의 생성을 지원하는 simd 명령어
US10908908B2 (en) Instruction for determining histograms
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
TWI713594B (zh) 向量資料轉換指令
CN107077329B (zh) 用于实现和维持判定值的栈的方法和设备
US20160011873A1 (en) Instruction for implementing vector loops of iterations having an iteration dependent condition
EP3674890B1 (en) Hardware processors and methods for extended microcode patching
US10990397B2 (en) Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator
US10564968B2 (en) Vector load instruction
US11461098B2 (en) Apparatuses, methods, and systems for instructions for operating system transparent instruction state management of new instructions for application threads
CN114675884A (zh) 用于优化在部分宽度处理器上的跨通道紧缩数据指令实现方式的方法、系统和装置
US10241801B2 (en) Method and apparatus to create register windows for parallel iterations to achieve high performance in HW-SW codesigned loop accelerator

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant