KR101732046B1 - 해시 동작을 효율적으로 실행하는 방법 및 장치 - Google Patents
해시 동작을 효율적으로 실행하는 방법 및 장치 Download PDFInfo
- Publication number
- KR101732046B1 KR101732046B1 KR1020150028373A KR20150028373A KR101732046B1 KR 101732046 B1 KR101732046 B1 KR 101732046B1 KR 1020150028373 A KR1020150028373 A KR 1020150028373A KR 20150028373 A KR20150028373 A KR 20150028373A KR 101732046 B1 KR101732046 B1 KR 101732046B1
- Authority
- KR
- South Korea
- Prior art keywords
- state values
- storage location
- hash function
- rounds
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 230000015654 memory Effects 0.000 claims description 55
- 230000006870 function Effects 0.000 claims description 48
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000002093 peripheral effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 15
- 230000006835 compression Effects 0.000 description 10
- 238000007906 compression Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 3
- 101000878595 Arabidopsis thaliana Squalene synthase 1 Proteins 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization 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 Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
프로세서 상에서 해시 함수를 실행하기 위한 장치와 방법이 기술된다. 예컨대, 프로세서의 일 실시예는, 해시 함수의 상태 변수가 저장되어야 할 제1 저장 위치 및 제2 저장 위치를 포함하는 레지스터 세트와, 상기 해시 함수를 실행하고, 상기 해시 함수의 라운드를 계산하는 데에 사용되는 상태 값의 제1 세트를 저장하는 것으로서 상기 제1 저장 위치를 초기 지정하고, 상기 해시 함수의 라운드를 계산하는 데에 또한 사용되는 상태 값의 제2 세트를 저장하는 것으로서 상기 제2 저장 위치를 초기 지정하는 실행 유닛을 포함하고, 상기 실행 유닛은 상태 데이터의 제1 및 제2 세트를 사용하여 상기 해시 함수의 복수의 라운드를 실행하고, 상기 실행은, 상기 제1 저장 위치가 라운드의 제1 세트에 대한 상기 상태 값의 제1 세트 및 라운드의 제2 세트에 대한 상기 상태 값의 제2 세트를 저장하는 것으로 지정되고, 상기 제2 저장 위치가 상기 라운드의 제1 세트에 대한 상기 상태 값의 제2 세트 및 상기 라운드의 제2 세트에 대한 상기 상태 값의 제1 세트를 저장하는 것으로 지정되도록 상기 제1 저장 위치와 상기 제2 저장 위치의 지정을 스와핑하는 것을 포함한다.
Description
본 발명은 전반적으로 컴퓨터 프로세서의 분야에 관한 것이다. 보다 구체적으로, 본 발명은 해시 동작을 효율적으로 실행하기 위해 방법 및 장치에 관한 것이다.
시큐어 메시지(SM)-3 해시 함수는 인터넷 엔지니어링 태스크 포스(IETF) 및 인터넷 리서치 태스크 포스(IRTF) 커뮤니티의 편의성을 위해 중국 상업용 암호 관리국(Chinese Commercial Cryptography Administration)에 의해 발표된 새로운 암호화 함수이다. SM3은 현재 중국 정보 보안 표준화 기술 자문 위원회(줄여서 TC260) 이니셔티브에 의해 TCM(Trusted Computing Module)을 위한 해싱 알고리즘으로서 지정되어 있다. SM3의 디자인은, 보안 해시 알고리즘(SHA)-2의 설계 상에, SHA-2의 경우에 단지 하나의 메시지로부터 유도된 워드를 각 라운드에 공급하는 것과는 대조적으로, 2개의 메시지로부터 유도된 워드를 각 라운드에 공급하는 것과 같이, 해시 함수를 강화하기 위한 추가적인 특징을 부가함으로써 구축한다.
첨부된 도면과 함께 아래의 상세한 설명으로부터 본 발명의 보다 나은 이해가 얻어질 수 있다.
도 1a는 본 발명의 실시예에 따른 예시적인 순차적(in-order) 인출, 디코드, 리타이어(retire) 파이프라인과, 예시적인 레지스터 리네이밍(renaming), 비순차적(out-of order) 이슈/실행 파이프 라인의 양자 모두를 설명하는 블록도.
도 1b는 본 발명의 실시예에 따른 프로세서에 포함될 순차적 인출, 디코드, 리타이어 코더의 예시적인 실시예와, 예시적인 레지스터 리네이밍, 비순차적 이슈/실행 아키텍처 코어의 양자 모두를 도시하는 블록도.
도 2는 본 발명의 실시예에 따른 통합 메모리 컨트롤러 및 그래픽을 구비하는 싱글 코어 프로세서 및 멀티코어 프로세서의 블록도.
도 3은 본 발명의 일 실시예에 따른 시스템의 블록도.
도 4는 본 발명의 일 실시예에 따른 제2 시스템의 블록도.
도 5는 본 발명의 일 실시예에 따른 제3 시스템의 블록도.
도 6은 본 발명의 일 실시에에 따른 시스템 온 칩(SoC)의 블록도.
도 7은 본 발명의 일 실시예에 따라 소스 명령어 세트 내의 이진 명령어를 대상 명령어 세트 내의 이진 명령어로 변환하는 소프트웨어 명령어 컨버터의 사용을 대조하는 블록도.
도 8은 본 발명의 실시예가 실시될 수 있는 프로세서 아키텍처의 일 실시예를 도시하는 도면.
도 9는 보안 메시지(SM)-3 해시 함수를 실시하기 위해 소정의 라운드에서 수행되는 동작을 도시하는 도면.
도 10은 해시 동작의 상이한 라운드를 수행하는 아키텍처 및 관련 기술의 일 실시예를 도시하는 도면.
도 11은 본 발명의 일 실시예에 따른 해시 함수의 라운드를 수행하는 방법을 도시하는 도면.
도 1a는 본 발명의 실시예에 따른 예시적인 순차적(in-order) 인출, 디코드, 리타이어(retire) 파이프라인과, 예시적인 레지스터 리네이밍(renaming), 비순차적(out-of order) 이슈/실행 파이프 라인의 양자 모두를 설명하는 블록도.
도 1b는 본 발명의 실시예에 따른 프로세서에 포함될 순차적 인출, 디코드, 리타이어 코더의 예시적인 실시예와, 예시적인 레지스터 리네이밍, 비순차적 이슈/실행 아키텍처 코어의 양자 모두를 도시하는 블록도.
도 2는 본 발명의 실시예에 따른 통합 메모리 컨트롤러 및 그래픽을 구비하는 싱글 코어 프로세서 및 멀티코어 프로세서의 블록도.
도 3은 본 발명의 일 실시예에 따른 시스템의 블록도.
도 4는 본 발명의 일 실시예에 따른 제2 시스템의 블록도.
도 5는 본 발명의 일 실시예에 따른 제3 시스템의 블록도.
도 6은 본 발명의 일 실시에에 따른 시스템 온 칩(SoC)의 블록도.
도 7은 본 발명의 일 실시예에 따라 소스 명령어 세트 내의 이진 명령어를 대상 명령어 세트 내의 이진 명령어로 변환하는 소프트웨어 명령어 컨버터의 사용을 대조하는 블록도.
도 8은 본 발명의 실시예가 실시될 수 있는 프로세서 아키텍처의 일 실시예를 도시하는 도면.
도 9는 보안 메시지(SM)-3 해시 함수를 실시하기 위해 소정의 라운드에서 수행되는 동작을 도시하는 도면.
도 10은 해시 동작의 상이한 라운드를 수행하는 아키텍처 및 관련 기술의 일 실시예를 도시하는 도면.
도 11은 본 발명의 일 실시예에 따른 해시 함수의 라운드를 수행하는 방법을 도시하는 도면.
아래의 설명에서는, 설명의 목적으로, 아래에서 기술되는 본 발명의 실시예의 철저한 이해를 제공하기 위해 많은 특정한 세부 사항에 대해서 설명한다. 그러나, 본 발명의 실시예는 이들 특정한 세부 사항의 일부가 없어도 실시될 수 있음이 본 기술 분야의 통상의 기술자에게 명확할 것이다. 다른 경우에, 본 발명의 실시예의 기본 원리를 모호하게 하는 것을 회피하기 위해서, 공지된 구조 및 장치가 블록도 형태로 나타난다.
예시적 프로세서 아키텍처 및 데이터 유형
도 1a는 본 발명의 실시예에 따른 예시적인 순차적 인출, 디코드, 리타이어 파이프라인과, 예시적인 레지스터 리네이밍, 비순차적 이슈/실행 파이프라인의 양자 모두의 블록도를 도시한다. 도 1b는 본 발명의 실시예에 따른 프로세서에 포함될 순차적 인출, 디코드, 리타이어 코어의 예시적인 실시예와, 예시적인 레지스터 리네이밍, 비순차적 이슈/실행 아키텍처 코어의 양자 모두를 도시하는 블록도이다. 도 1a 및 도 1b의 실선의 박스는 파이프라인 및 코어의 순차적 부분을 도시하고, 점섬 박스의 선택사항적인 부가는 레지스터 리네이밍, 비순차적 이슈/실행 파이프라인 및 코어를 도시한다.
도 1a에서, 프로세서 파이프라인(100)은 인출단(102), 길이 디코드단(104) 디코드단(106), 할당단(108), 리네이밍단(110) 스케쥴링(디스패치 또는 이슈로도 알려짐)단(112), 레지스터 판독/메모리 판독단(114), 실행단(116), 라이트백/메모리 기입단(118), 예외 처리단(122) 및 커밋단(124)을 포함한다.
도 1b는 실행 엔진 유닛(150)에 결합된 프론트 엔드 유닛(130)을 포함하는 프로세서 코어(190)를 도시하는데, 실행 엔진 유닛(150)과 프론트 엔드 유닛(130) 양자 모두는 메모리 유닛(170)에 결합된다. 코어(190)는 RISC(reduced instruction set computing) 코어, CISC(complex instruction set computing) 코어, VLIW(very long instruction word) 코어, 또는 하이브리드 또는 다른 코어 유형일 수 있다. 또 다른 선택사항으로서, 코어(190)는, 예컨대 네트워크 또는 통신 코어, 압축 엔진, 코프로세서 코어, 범용 컴퓨팅 그래픽 처리 유닛(GPGPU) 코어, 그래픽 코어 등과 같은 전용 코어일 수 있다.
프론트 엔드 유닛(130)은, 명령어 캐시 유닛(134)에 결합되는 분기 예측 유닛(132)과, 명령어 TLB(translation lookaside buffer)(136)에 결합되는 명령어 캐시 유닛과, 명령어 인출 유닛(138)에 결합되는 명령어 TLB와, 디코드 유닛(140)에 결합되는 명령어 인출 유닛(138)을 포함한다. 디코드 유닛(140)(또는 디코더)은 명령어를 디코딩하여, 원래의 명령어로부터 디코딩되거나, 그렇지 않고서 이들을 반영하거나, 또는 이들로부터 유도되는 하나 이상의 마이크로 연산, 마이크로코드 엔트리 포인트, 마이크로 명령어, 기타 명령어 또는 기타 제어 신호를 출력으로서 생성할 수 있다. 디코드 유닛(140)은 다양한 상이한 메커니즘을 이용하여 구현될 수 있다. 적절한 메커니즘의 예는, 룩업 테이블, 하드웨어 구현, 프로그램가능 논리 배열(PLA), 마이크로코드 ROM(ROMs) 등을 포함하지만, 이들에 한정되지는 않는다. 일 실시예에서, 코어(190)는 (예컨대, 디코드 유닛(140) 또는 그렇지 않은 경우에 프론트 엔드 유닛(130) 내에) 소정의 매크로 명령어를 위한 마이크로코드를 저장하기 위한 마이크로코드 ROM 또는 다른 매체를 포함한다. 디코드 유닛(140)은 실행 엔진 유닛(150) 내의 리네임/할당기 유닛(152)에 결합된다.
실행 엔진 유닛(150)은 리타이어먼트 유닛(retirement unit)(154) 및 하나 이상의 스케쥴러 유닛(156)의 세트에 결합된 리네임/할당기 유닛(152)을 포함한다. 스케쥴러 유닛(156)은 예약 스테이션, 중앙 명령어 윈도우 등을 포함하는 임의의 수의 상이한 스케쥴러를 나타낸다. 스케쥴러 유닛(156)은 물리적 레지스터 파일 유닛(158)에 결합된다. 각각의 물리적 레지스터 파일 유닛(158)은 하나 이상의 물리적 레지스터 파일을 나타내는데, 그 중 상이한 것들은, 스칼라 정수, 스칼라 부동점, 패킹된 정수, 패킹된 부동점, 벡터 정수, 벡터 부동점, 스테이터스(예컨대, 실행될 다음 명령어의 어드레스인 명령어 지시자) 등과 같은 하나 이상의 상이한 데이터 유형을 저장한다. 일 실시예에서, 물리적 레지스터 파일 유닛(158)은 벡터 레지스터 유닛, 기입 마스크 레지스터 유닛 및 스칼라 레지스터 유닛을 포함한다. 이들 레지스터 유닛은 아키텍처 벡터 레지스터, 벡터 마스크 레지스터 및 범용 레지스터를 제공할 수 있다. 물리적 레지스터 파일 유닛(158)은, (예컨대, 레코더 버퍼 및 리타이어먼트 레지스터 파일을 이용하여, 퓨쳐 파일, 히스토리 버퍼 및 리타이어먼트 레지스터 파일을 이용하여, 레지스터 맵 및 레지스터의 풀을 이용하여) 레지스터 리네이밍 및 비순차적 실행이 구현될 수 있는 다양한 방식을 설명하기 위해서 리타이어먼트 유닛(154)에 의해 중첩되어 있다. 리타이어먼트 유닛(154) 및 물리적 레지스터 파일 유닛(158)은 실행 클러스터(160)에 결합된다. 실행 클러스터(160)는 하나 이상의 실행 유닛(162)의 세트 및 하나 이상의 메모리 액세스 유닛(164)의 세트를 포함한다. 실행 유닛(162)은 다양한 연산(예컨대, 시프트, 가산, 감산, 승산)을 다양한 유형의 데이터(예컨대, 스칼라 부동점, 패킹된 정수, 패킹된 부동점, 벡터 정수, 벡터 부동점)에 대해 수행할 수 있다. 일부 실시예는 특정 함수 또는 함수들의 세트 전용의 많은 실행 유닛을 포함할 수 있지만, 다른 실시예는 단지 하나의 실행 유닛 또는 모든 실행 유닛이 모든 함수를 실행하는 복수의 실행 유닛을 포함할 수 있다. 스케쥴러 유닛(156), 물리적 레지스터 파일 유닛(158) 및 실행 클러스터(160)는 복수일 수도 있는 것으로 도시되어 있는데, 소정의 실시예가 특정 유형의 데이터/연산을 위한 별도의 파이프라인을 생성하기 때문이다(예컨대, 각각 자기 자신의 스케쥴러 유닛, 물리적 레지스터 파일 유닛 및/또는 실행 클러스터를 가지는 스칼라 정수 파이프라인, 스칼라 부동점/패킹된 정수/패킹된 부동점/벡터 정수/벡터 부동점 파이프라인 및/또는 메모리 액세스 파이프라인, 그리고, 별도의 메모리 액세스 파이프라인의 경우에는 이 파이프라인의 실행 클러스터만이 메모리 액세스 유닛(164)을 가지는 소정의 실시예가 실시된다). 별도의 파이프라인이 이용되는 경우에는, 이들 파이프라인 중 하나 이상이 비순차적 이슈/실행이고, 나머지는 순차적인 것임을 이해하여야 한다.
메모리 액세스 유닛(164)의 세트는 레벨 2(L2) 캐시 유닛(176)에 결합된 데이터 캐시 유닛(174)과, 데이터 캐시 유닛에 결합된 데이터 TLB 유닛(172)을 포함하는 메모리 유닛(170)에 결합된다. 예시적인 일 실시예에서, 메모리 액세스 유닛(164)은 로딩 유닛, 어드레스 저장 유닛 및 데이터 저장 유닛을 포함할 수 있으며, 그 각각은 메모리 유닛(170) 내의 데이터 TLB 유닛(172)에 결합된다. 명령어 캐시 유닛(134)은 메모리 유닛(170) 내의 레벨 2(L2) 캐시 유닛(176)에도 결합된다. L2 캐시 유닛(176)은 하나 이상의 기타 레벨의 캐시에 결합되고, 최종적으로 메인 메모리에 결합된다.
예로서, 예시적인 레지스터 리네이밍, 비순차적 이슈/실행 코어 아키텍처는 다음과 같이, 즉 1) 인스트럭션 인출부(138)가 인출 및 길이 디코딩단(102, 104)을 수행하고, 2) 디코드 유닛(140)은 디코드단(106)을 수행하고, 3) 리네임/할당자 유닛(152)이 할당단(108) 및 리네이밍단(110)을 수행하고, 4) 스케쥴러 유닛(156)이 스케쥴단(112)을 수행하고, 5) 물리적 레지스터 파일 유닛(158) 및 메모리 유닛(170)이 레지스터 판독/메모리 판독단(114)을 수행하고, 실행 클러스터(160)가 실행단(116)을 수행하고, 6) 메모리 유닛(170) 및 물리적 레지스터 파일 유닛(158)이 라이트 백/메모리 기입단(118)을 수행하고, 7) 다양한 유닛이 예외 처리단(122)에 포함될 수 있으며, 8) 리타이어먼트 유닛(154) 및 물리적 레지스터 파일 유닛(158)이 커밋단(124)을 수행하는 것과 같이 파이프라인(100)을 구현할 수 있다.
코어(190)는 본 명세서에서 기술된 명령어를 포함하는 하나 이상의 명령어 세트(예컨대, (새로운 버전이 추가된 일부 확장을 가지는)x86 명령어 세트), 즉 캘리포니아주 서니베일 소재의 MIP Technologies의 MIP 명령어 세트, (캘리포니아주 서니베일 소재의 ARM Holdings의 NEON과 같은 선택사항적인 추가적인 확장을 가지는)ARM 명령어 세트를 지원할 수 있다. 일 실시예에서, 코어(190)는 패킹된 데이터 명령어 세트 확장(예컨대, 이하에 설명하는 AVX1, AVX2 및/또는 일반 벡터 친화적 명령어 포맷(U=0 및/또는 U=1)의 일부 형태)에 대한 로직을 포함하며, 이로써 많은 멀티미디어 애플리케이션에 의해 사용되는 연산이 패킹된 데이터를 사용하여 수행될 수 있게 한다.
코어는 멀티스레딩(연산 또는 스레드의 2개 이상의 병렬 세트를 실행하는 것)을 지원할 수 있고, 타임 슬라이스 멀티스레딩(time sliced multithreading), (물리적 코어가 동시 멀티스레딩하고 있는 스레드들 각각에 대해 단일의 물리적 코어가 논리적 코어를 제공하는) 동시 멀티스레딩, 또는 이들의 조합(예컨대, Intel® 하이퍼스레딩 기술과 같은 타임 슬라이스 인출 및 디코딩, 및 그 이후의 동시 멀티스레딩)을 포함하는 다양한 방식으로 멀티스레딩을 지원할 수 있다는 것을 이해하여야 한다.
레지스터 리네이밍이 비순차적 실행의 맥락에서 설명되었지만, 레지스터 리네이밍은 순차적 아키텍처에서 이용될 수도 있다는 점을 이해하여야 한다. 프로세서의 예시된 실시예는 또한 별개의 명령어 및 데이터 캐시 유닛들(134/174) 및 공유 L2 캐시 유닛(176)을 포함하지만, 대안적인 실시예들은, 예컨대, 레벨 1(L1) 내부 캐시와 같은 명령어와 데이터 양자를 위한 단일 내부 캐시, 또는 복수 레벨의 내부 캐시를 가질 수 있다. 일부 실시예에서, 시스템은 내부 캐시와, 코어 및/또는 프로세서 외부의 외부 캐시의 조합을 포함할 수 있다. 또는, 모든 캐시가 코어 및/또는 프로세서 외부에 있을 수 있다.
도 2는 본 발명의 실시예에 따라 하나를 초과하는 코어를 가질 수 있고, 통합 메모리 컨트롤러를 가질 수 있고, 통합 그래픽을 가질 수 있는 프로세서(200)의 블록도이다. 도 2의 실선 박스는 단일 코어(202A), 시스템 에이전트(210), 하나 이상의 버스 컨트롤러 유닛(216)의 세트를 구비한 프로세서(200)를 도시하며, 점선 박스의 선택사항적인 추가는 다중 코어(202A-N), 시스템 에이전트 유닛(210) 내의 하나 이상의 통합 메모리 컨트롤러 유닛(214)의 세트 및 전용 로직(208)을 구비한 대안의 프로세서(200)를 도시한다.
따라서, 프로세서(200)의 상이한 구현은, 1) (하나 이상의 코어를 포함할 수 있는) 통합 그래픽 및/또는 과학(스루풋) 로직인 전용 로직(208), 및 하나 이상의 범용 코어인 코어(202A-N)(예컨대, 범용 순차적 코어, 범용 비순차적 코어, 이 둘의 조합)를 갖는 CPU, 2) 그래픽 및/또는 과학(스루풋)을 위해 주로 의도된 다수의 전용 코어인 코어(202A-N)를 갖는 코프로세서 및 3) 다수의 범용 순차적 코어인 코어(202A-N)를 갖는 코프로세서를 포함할 수 있다. 따라서, 프로세서(200)는 범용 프로세서, 코프로세서, 또는 예컨대 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU(general purpose graphics processing unit), 고처리량의 MIC(many integrated core) 코프로세서(30개 이상의 코어를 포함함), 임베디드 프로세서 등의 전용 프로세서일 수 있다. 프로세서는 하나 이상의 칩 상에 구현될 수 있다. 프로세서(200)는, 예컨대 BiCMOS, CMOS 또는 NMOS와 같은 많은 프로세스 기술 중 임의의 것을 이용하여 하나 이상의 기판들 상에 구현되고/구현되거나 그 일부일 수도 있다.
메모리 계층구조는 코어 내의 하나 이상의 레벨의 캐시, 공유 캐시 유닛들(206)의 세트 또는 하나 이상의 공유 캐시 유닛들, 및 통합 메모리 컨트롤러 유닛(214)의 세트에 결합된 외부 메모리(도시되지 않음)를 포함한다. 공유 캐시 유닛(206)의 세트는 하나 이상의 중간 레벨 캐시, 예컨대 레벨 2(L2), 레벨 3(L3), 레벨 4(L4) 또는 다른 레벨의 캐시, 최종 레벨 캐시(LLC) 및/또는 이들의 조합들을 포함할 수 있다. 일 실시예에서, 링 기반 상호접속 유닛(ring based interconnect unit)(212)은 통합 그래픽 로직(208), 공유 캐시 유닛(206)의 세트 및 시스템 에이전트 유닛(210)/통합 메모리 컨트롤러 유닛(214)을 상호접속하는 반면, 대안의 실시예는 이러한 유닛을 상호접속하는 데에 임의의 수의 공지된 기법을 사용할 수 있다. 일 실시예에서, 하나 이상의 캐시 유닛(206)과 코어(202-A-N) 사이에 코히어런시(coherency)가 유지된다.
일부 실시예에서, 코어(202A-N) 중 하나 이상은 멀티스레딩할 수 있다. 시스템 에이전트(210)는 코어(202A-N)를 조정 및 조작하는 컴포넌트를 포함한다. 시스템 에이전트 유닛(210)은, 예컨대 전력 제어 유닛(PCU) 및 디스플레이 유닛을 포함할 수 있다. PCU는, 코어(202A-N) 및 통합 그래픽 로직(208)의 전력 상태를 조절하는데 필요한 로직 및 컴포넌트이거나, 이들을 포함할 수 있다. 디스플레이 유닛은 하나 이상의 외부적으로 접속된 디스플레이를 구동하기 위한 것이다.
코어(202A-N)는 아키텍처 명령어 세트의 관점에서 동질적(homogenous)이거나 이질적(heterogeneous)일 수 있는데, 즉, 코어(202A-N) 중 2개 이상은 동일한 명령어 세트를 실행할 수 있는 반면, 다른 것들은 그 명령어 세트의 서브셋만, 또는 다른 명령어 세트를 실행할 수 있다. 일 실시예에서, 코어(202A-N)는 이질적이고, 아래 기술되는 "작은" 코어 및 "큰" 코어 양자 모두를 포함한다.
도 3 내지 6은 예시적인 컴퓨터 아키텍처의 블록도이다. 랩톱, 데스크톱, 핸드헬드 PC, 퍼스널 디지털 어시스턴트, 엔지니어링 워크스테이션, 서버, 네트워크 장치, 네트워크 허브, 스위치, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 그래픽 장치, 비디오 게임 장치, 셋톱박스, 마이크로 컨트롤러, 휴대 전화, 휴대용 미디어 플레이어, 핸드헬드 장치 및 다양한 다른 전자 장치를 위해 이 기술분야에 알려진 다른 시스템 설계 및 구성 또한 적합하다. 일반적으로, 본 명세서에 개시된 바와 같은 프로세서 및/또는 다른 실행 로직을 통합할 수 있는 매우 다양한 시스템 또는 전자 장치가 일반적으로 적합하다.
이제, 도 3을 참조하면, 본 발명의 일 실시예에 따른 시스템(300)의 블록도가 도시되어 있다. 시스템(300)은 하나 이상 프로세서(310, 315)를 포함할 수 있고, 이들은 컨트롤러 허브(320)에 결합된다. 일 실시예에서, 컨트롤러 허브(320)는 그래픽 메모리 컨트롤러 허브(GMCH)(390) 및 입력/출력 허브(IOH)(350)(별개의 칩 상에 있을 수 있음)를 포함하고, GMCH(390)는 메모리 및 메모리(340)와 코프로세서(345)에 결합되는 그래픽 컨트롤러를 포함하고, IOH(350)는 입력/출력(I/O) 장치(360)를 GMCH(390)에 결합한다. 대안으로서, 메모리 및 그래픽 컨트롤러 중 하나 또는 양자 모두는 (본 명세서에 기술된 바와 같이) 프로세서 내에 통합되어 있고, 메모리(340) 및 코프로세서(345)는 프로세서(310)와, IOH(350)를 갖는 단일 칩 내의 컨트롤러 허브(320)에 직접 결합된다.
추가 프로세서(315)의 선택사항적 성질이 도 3에 점선으로 표시되어 있다. 각각의 프로세서(310, 315)는 본 명세서에 개시된 하나 이상의 프로세싱 코어를 포함할 수 있으며, 프로세서(200)의 어떤 버전일 수 있다.
메모리(340)는, 예컨대, DRAM(dynamic random access memory), PCM(phase change memory), 또는 이 둘의 조합일 수 있다. 적어도 일 실시예에서, 컨트롤러 허브(320)는 프론트사이드 버스(FSB)와 같은 멀티-드롭 버스, QPI(QuickPath Interconnect)와 같은 점대점 인터페이스, 또는 유사한 접속(395)을 통해 프로세서(310, 315)와 통신한다.
일 실시예에서, 코프로세서(345)는, 예컨대 고처리량 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 임베디드 프로세서 등과 같은 전용 프로세서이다. 일 실시예에서, 컨트롤러 허브(320)는 통합 그래픽 가속기를 포함할 수 있다.
구조적, 미세구조적, 열적, 전력 소비 특성 등을 포함하는 장점의 기준의 스펙트럼과 관련하여 물리 자원들(310, 315) 사이에는 다양한 차이가 존재할 수 있다.
일 실시예에서, 프로세서(310)는 일반적인 유형의 데이터 처리 동작을 제어하는 명령어를 실행한다. 명령어 내에는 코프로세서 명령어가 포함될 수 있다. 프로세서(310)는 이들 코프로세서 명령어를 부착된 코프로세서(345)에 의해 실행되어야 하는 유형으로서 인식한다. 따라서, 프로세서(310)는 이러한 코프로세서 명령어(또는 코프로세서 명령어를 나타내는 제어 신호)를 코프로세서 버스 또는 다른 상호접속 상의 이들 코프로세서 명령어(또는 코프로세서 명령어를 나타내는 제어 신호)를 코프로세서(345)로 발행한다. 코프로세서(345)는 수신된 코프로세서 명령어를 수용하고 실행한다.
이제 도 4를 참조하면, 본 발명의 일 실시예에 따른, 보다 구체적이고 예시적인 제1 시스템(400)의 블록도가 도시되어 있다. 도 4에 도시된 바와 같이, 멀티프로세서 시스템(400)은 점대점 상호접속 시스템이고, 점대점 상호접속(450)을 통해 결합된 제1 프로세서(470) 및 제2 프로세서(480)를 포함한다. 프로세서(470, 480)의 각각은 프로세서(200)의 어떤 버전일 수 있다. 본 발명의 일 실시예에서, 프로세서(470, 480)는 각각 프로세서(310, 315)이고, 코프로세서(438)는 코프로세서(345)이다. 다른 실시예에서, 프로세서(470, 480)는 각각 프로세서(310), 코프로세서(345)이다.
프로세서(470, 480)는 각각 통합 메모리 컨트롤러(IMC) 유닛(472, 482)을 포함하는 것으로 도시되어 있다. 프로세서(470)는 그 버스 컨트롤러 유닛의 일부로서 점대점(P-P) 인터페이스(476, 478) 또한 포함하고, 이와 유사하게, 제2 프로세서(480)는 P-P 인터페이스(486, 488)를 포함한다. 프로세서(470, 480)는 점대점(P-P) 인터페이스 회로(478, 488)를 사용하여 P-P 인터페이스(450)를 통해 정보를 교환할 수 있다. 도 4에 도시된 바와 같이, IMC(472, 482)는 프로세서를 각각의 메모리, 즉 메모리(432) 및 메모리(434)에 결합시키고, 이 메모리들은 각각의 프로세서에 국지적으로 부착되는 메인 메모리의 부분일 수 있다.
프로세서(470, 480)는 각각 점대점 인터페이스 회로(476, 494, 486, 498)를 사용하여 개별적인 P-P 인터페이스(452, 454)를 통해 칩셋(490)과 정보를 교환할 수 있다. 칩셋(490)은 고성능 인터페이스(439)를 통해서 코프로세서(438)와 선택적으로 정보를 교환할 수 있다. 일 실시예에서, 코프로세서(438)는 전용 프로세서, 예컨대 고처리량 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 임베디드 프로세서 등일 수 있다.
공유 캐시(도시되지 않음)는 어느 한 프로세서에 포함되거나, 양쪽 프로세서의 외부에 있을 수 있지만, 여전히 P-P 상호접속을 통해 프로세서와 접속되어서, 한쪽 또는 양쪽의 프로세서의 로컬 캐시 정보가, 프로세서가 저전력 모드에 놓이는 경우, 공유 캐시에 저장될 수 있다.
칩셋(490)은 인터페이스(496)를 통해 제1 버스(416)에 결합될 수 있다. 일 실시예에서, 제1 버스(416)는 주변 컴포넌트 상호접속(PCI) 버스, 또는 PCI 익스프레스 버스 또는 다른 3세대 I/O 상호접속 버스와 같은 버스일 수 있지만, 본 발명의 범위는 이에 한정되지 않는다.
도 4에 도시된 바와 같이, 제1 버스(416)를 제2 버스(420)에 결합하는 버스 브리지(418)와 함께, 다양한 I/O 장치(414)가 제1 버스(416)에 결합될 수 있다. 일 실시예에서, 코프로세서, 고처리량 MIC 프로세서, GPGPU, 가속기(예컨대, 그래픽 가속기 또는 디지털 신호 처리(DSP) 유닛 등), 필드 프로그램가능 게이트 어레이, 또는 임의의 다른 프로세서와 같은 하나 이상의 추가적인 프로세서(415)가 제1 버스(416)에 결합된다. 일 실시예에서, 제2 버스(420)는 로우 핀 카운트(LPC) 버스일 수 있다. 일 실시예에서, 예컨대, 키보드 및/또는 마우스(422), 통신 장치(427) 및 명령어/코드 및 데이터(430)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 저장 장치와 같은 저장 유닛(428)을 포함하는 다양한 장치가 제2 버스(420)에 결합될 수 있다. 또한, 오디오 I/O(424)는 제2 버스(420)에 결합될 수 있다. 다른 아키텍처도 가능하다는 점에 유의한다. 예컨대, 도 4의 점대점 아키텍처 대신에, 시스템은 멀티 드롭 버스 또는 다른 그러한 아키텍처를 구현할 수 있다.
이제 도 5를 참조하면, 본 발명의 실시예에 따른 더욱 구체적인 예시적인 제2 시스템(500)의 블록도가 도시되어 있다. 도 4 및 5의 동일한 요소들은 동일한 참조 번호를 갖고, 도 4의 특정 측면은 도 5의 다른 측면을 모호하게 하는 것을 회피하기 위해 도 5에서 생략하였다.
도 5는 프로세서(470, 480)가 통합 메모리 및 I/O 제어 로직("CL")(472, 482)을 각각 포함할 수 있다는 것을 예시한다. 이로 인해, CL(472, 482)은 통합 메모리 컨트롤러 유닛을 포함하고, 또한 I/O 제어 로직을 포함한다. 도 5는 CL(472, 482)에 결합되는 메모리(432, 434)뿐만 아니라, I/O 장치(514) 또한 제어 로직(472, 482)에 결합되는 것을 나타낸다. 레거시 I/O 장치(515)는 칩셋(490)에 결합된다.
이제, 도 6을 참조하면, 본 발명의 실시예에 따른 SoC(600)의 블록도가 도시되어 있다. 도 2의 유사한 요소는 동일한 참조 부호를 갖는다. 또한, 점선 박스는 더욱 진보된 SoC의 선택사항적인 특징이다. 도 6에서, 상호접속 유닛(602)은 하나 이상의 코어(202A-N) 및 공유 캐시 유닛(206)의 세트를 포함하는 애플리케이션 프로세서(610), 시스템 에이전트 유닛(210), 버스 컨트롤러 유닛(216), 통합 메모리 컨트롤러 유닛(214), 통합 그래픽 로직, 화상 프로세서, 오디오 프로세서 및 비디오 프로세서를 포함할 수 있는 코프로세서(620)의 세트, 또는 하나 이상의 코프로세서(620), SRAM(static random access memory) 유닛(630), DMA(direct memory access) 유닛(632), 및 하나 이상의 외부 디스플레이에 결합하는 디스플레이 유닛(640)에 결합된다. 일 실시예에서, 코프로세서(620)는 전용 프로세서, 예컨대 네트워크 또는 통신 프로세서, 압축 엔진, GPGPU, 고처리량 MIC 프로세서, 임베디드 프로세서 등을 포함한다.
여기에 설명된 메커니즘의 실시예는 하드웨어, 소프트웨어, 펌웨어 또는 이러한 구현 접근법의 조합으로 구현될 수 있다. 본 발명의 실시예는 적어도 하나의 프로세서, 저장 시스템(휘발성 및 불휘발성 메모리 및/또는 저장 소자를 포함함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함하는 프로그램가능 시스템에서 실행하는 컴퓨터 프로그램 또는 프로그램 코드로서 구현될 수 있다.
도 4에 도시된 코드(430)와 같은 프로그램 코드는, 본 명세서에 기술된 기능을 수행하고 출력 정보를 생성하기 위한 명령어를 입력하는 데에 적용될 수 있다. 출력 정보는 공지된 방식으로 하나 이상의 출력 장치에 적용될 수 있다. 본 출원의 목적으로, 처리 시스템은, 예컨대 디지털 신호 프로세서(DSP), 마이크로컨트롤러, 주문형 집적 회로(ASIC) 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램 코드는 프로세싱 시스템과 통신하는 고레벨 프로시쥬얼(procedural) 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 프로그램 코드는, 원하는 경우에는 어셈블리어 또는 기계어로 구현될 수도 있다. 사실, 본 명세서에 설명된 메커니즘은 임의의 특정 프로그래밍 언어로 범위가 한정되지 않는다. 어느 경우에나, 언어는 컴파일되거나 해석되는 언어일 수 있다.
적어도 일 실시예의 하나 이상의 측면은, 기계에 의해 판독될 때 기계로 하여금 본 명세서에서 설명되는 기술을 수행하기 위한 로직을 제조하게 하는, 프로세서 내의 다양한 로직을 표현하는 기계 판독가능 매체 상에 저장된 전형적인 명령어에 의해 구현될 수 있다. "IP 코어"로 알려진 그러한 표현은 유형의 기계 판독가능 매체 상에 저장될 수 있으며, 다양한 고객 또는 제조 설비에 제공되어, 로직 또는 프로세서를 실제로 제조하는 제조 기계 내에 로딩될 수 있다.
이러한 기계 판독가능 저장 매체는 하드 디스크, 플로피 디스크, 광 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 재기입 가능 컴팩트 디스크(CD-RW) 및 광자기 디스크를 포함하는 임의의 다른 타입의 디스크, 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM)와 같은 랜덤 액세스 메모리(RAM), 소거가능하고 프로그래밍가능한 판독 전용 메모리(EPROM), 플래시 메모리, 전기적으로 소거가능하고 프로그래밍가능한 판독 전용 메모리(EEPROM), 상 변환 메모리(PCM)와 같은 반도체 장치, 자기 또는 광학 카드, 또는 전자 명령어를 저장하기에 적합한 임의의 다른 타입의 매체와 같은 저장 매체를 포함하는 기계 또는 장치로 제조되거나 형성된 물품의, 비일시적인, 유형의 배열을 포함할 수 있지만, 이에 한정되지 않는다.
따라서, 본 발명의 실시예는 명령어를 포함하거나 또는 본 명세서에 설명된 구조, 회로, 장치, 프로세서 및/또는 시스템 특징부를 정의하는, HDL(Hardware Description Language)과 같은 설계 데이터를 포함하는 비일시적인, 유형의 기계 판독가능 매체 또한 포함한다. 이러한 실시예는 프로그램 제품으로도 지칭될 수 있다.
어떤 경우에는, 명령어 변환기가 소스 명령어 세트로부터 대상 명령어 세트로 명령어를 변환하는 데에 사용될 수 있다. 예컨대, 명령어 변환기는 명령어를 코어에 의해 처리될 하나 이상의 다른 명령어로 (예컨대, 정적 이진 번역, 동적 컴파일링을 포함하는 동적 이진 번역을 이용하여) 번역하거나, 모핑하거나, 에뮬레이팅하거나, 또는 변환할 수 있다. 명령어 변환기는 소프트웨어, 하드웨어, 펌웨어, 또는 이것들의 조합으로 구현될 수 있다. 명령어 변환기는 프로세서 상에, 프로세서 외부에, 또는 일부는 프로세서 상에, 일부는 프로세서 외부에 있을 수 있다.
도 7은 본 발명의 실시예에 따른, 소스 명령어 세트 내의 이진 명령어를 대상 명령어 세트 내의 이진 명령어로 변환하는 소프트웨어 명령어 변환기의 사용을 대비하는 블록도이다. 예시된 실시예에서, 명령어 변환기는 소프트웨어 명령어 변환기이지만, 대안적으로 명령어 변환기는 소프트웨어, 펌웨어, 하드웨어 또는 이것들의 다양한 조합으로 구현될 수 있다. 도 7은 x86 컴파일러(704)를 사용하여 컴파일링되어, 하나 이상의 x86 명령어 세트 코어를 가지는 프로세서(716)에 의해서 기본적으로 실행될 수 있는 x86 이진 코드(706)를 생성할 수 있는 고수준 언어(702)의 프로그램을 도시한다. 하나 이상의 x86 명령어 세트 코어를 가지는 인텔 프로세서와 실질적으로 동일한 결과를 얻을 수 있기 위해, 하나 이상의 x86 명령어 세트 코어를 가지는 프로세서(716)는, (1) 인텔 x86 명령어 세트 코어의 명령어 세트의 상당 부분, 또는 (2) 하나 이상의 x86 명령어 세트 코어를 가지는 인텔 프로세서에서 실행되는 대상이 된 애플리케이션의 객체 코드 버전 또는 다른 소프트웨어를 호환가능하게 실행하거나, 처리함으로써, 하나 이상의 x86 명령어 세트 코어를 갖는 인텔 프로세서와 실질적으로 동일한 기능을 행할 수 있는 임의의 프로세서를 나타낸다. x86 컴파일러(704)는, 부가의 링크(linkage) 처리에 의해, 또는 부가의 링크 처리없이, 하나 이상의 x86 명령어 세트 코어를 가지는 프로세서(716) 상에서 실행될 수 있는 x86 이진 코드(706)(예컨대, 오브젝트 코드)를 발생시키도록 동작가능한 컴파일러를 나타낸다. 이와 유사하게, 도 7은 하나 이상의 x86 명령어 세트 코어를 가지지 않는 프로세서(714)(예컨대, 캘리포니아주 서니베일 소재의 MIPS Technologies의 MIPS 명령어 세트를 실행하고/실행하거나, 캘리포니아주 서니베일 소재의 ARM Holdings의 ARM 명령어 세트를 실행하는 코어를 가지는 프로세서)에 의해 기본적으로 실행될 수 있는 대안의 명령어 세트 이진 코드(710)를 생성하기 위해 대안의 명령어 세트 컴파일러(708)를 사용하여 고수준 언어(702)의 프로그램이 컴파일될 수 있다는 것을 나타낸 것이다. 명령어 컨버터(712)는 x86 이진 코드(706)를 x86 명령어 세트 코어를 가지지 않는 프로세서(714)에 의해 기본적으로 실행될 수 있는 코드로 변환하는데 사용된다. 이 변환된 코드는 대안 명령어 세트 이진 코드(710)와 동일할 것 같지는 않은데, 그 이유는, 이것을 행할 수 있는 명령어 변환기를 만들기가 어렵기 때문이지만, 그러나, 변환된 코드는 일반 연산을 수행할 것이고, 대안 명령어 세트로부터의 명령어들로 이루어질 것이다. 이로 인해, 명령어 컨버터(712)는 에뮬레이션, 시뮬레이션 또는 임의의 다른 프로세스를 통해, x86 명령어 세트 프로세서 또는 코어를 가지지 않는 프로세서 또는 다른 전자 장치로 하여금 x86 이진 코드(706)를 실행할 수 있게 하는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다.
해시 동작을 효율적으로 실행하는 방법 및 장치
본 발명의 일 실시예는 해싱 동작을 효율적으로 실행하는 새로운 명령어 및 그것을 지원하는 하드웨어를 포함한다. 아래 기술된 실시예의 초점이 SM3 해싱 알고리즘에 맞추어지고 있지만, 본 발명의 기본적인 원리는 SM3에 제공된 특정한 구현에 제한되지 않는다. 예컨대, SM3을 구현하는 아래 기술된 것과 동일한 기법은 다른 해싱 알고리즘들 및/또는 다른 유형의 처리 함수를 효율적으로 실행하는데에 사용될 수 있다. 더욱이, 일 실시예가 인텔 아키텍처 (IA)로의 확장으로서 수행되지만, 본 발명의 기본적인 원리는 임의의 특정 ISA로 제한되지 않는다.
도 8에 도시된 것과 같이, 본 발명의 실시예가 구현될 수 있는 예시적 프로세서(855)는 본 명세서에서 설명되는 효율적인 해싱 기술을 실행하기 위한 해시 함수 실행 로직(841)을 가지는 실행 유닛(840)을 포함한다. 레지스터 세트(805)는 실행 유닛(840)이 명령어 스트림을 실행할 때에, 피연산자, 제어 데이터 및 다른 유형의 데이터를 위한 레지스터 저장소를 제공한다. 일 실시예에서, 레지스터 세트(805)는 IA 스트리밍 SIMD(single instruction multiple data) 확장(SSE) 아키텍처의 일부로서 규정되는 XMM SIMD 레지스터 등의 128 비트 레지스터를 포함한다. 대안적으로, 또는 부가적으로, 레지스터는 IA 어드밴스드 벡터 확장(AVX)-2 아키텍처의 일부로서 규정되는 YMM SIMD 레지스터와 같은 256 비트 레지스터를 포함할 수도 있다. 그러나, 본 발명의 기본 원리는 특정 레지스터 유형 또는 레지스터 크기에 한정되지 않는다.
단일 프로세서 코어("코어 0")의 세부 사항은 단순함을 위해 도 8에 도시된다. 그러나, 도 8에 나타난 각각의 코어가 코어 0과 동일한 로직 세트를 가질 수도 있음이 이해될 것이다. 도시된 바와 같이, 각각의 코어는 규정된 캐시 관리 정책에 따라 명령어 및 데이터를 캐싱하는 전용 레벨 1(L1) 캐시(812) 및 레벨 2(L2) 캐시(811) 또한 포함할 수 있다. L1 캐시(811)는 명령어를 저장하기 위한 별도의 명령어 캐시(120)와, 데이터를 저장하기 위한 별도의 데이터 캐시(121)를 포함한다. 다양한 프로세서 캐시 내에 저장된 명령어 및 데이터는 고정 크기(예컨대, 길이가 64, 128, 512 바이트)일 수 있는 캐시 라인의 단위 크기로 다루어진다. 이 예시적 실시예의 각각 코어는 메인 메모리(800) 및/또는 공유 레벨 3(L3) 캐시(816)로부터 명령어를 인출하기 위한 명령어 인출 유닛(810)과, 명령어를 디코딩하기 위한(예컨대, 프로그램 명령어를 마이크로 연산, 즉 "uops"로 디코딩하기 위한) 디코드 유닛(820), 명령어(예컨대, 본 명세서에서 기술된 바와 같은 술어 명령어)를 실행하기 위한 실행 유닛(840) 및 명령어를 리타이어링(retiring)하고 결과를 라이트 백하기 위한 라이트 백 유닛(850)을 구비한다.
명령어 인출 유닛(810)은 메모리(800)(또는 캐시 중 하나)로부터 인출될 다음 명령어의 어드레스를 저장하기 위한 다음 명령어 지시자(803)와, 어드레스 번역의 속도를 향상시키기 위해 최근에 사용된 가상-물리 명령어 어드레스(virtual-to-physical instruction address)의 지도를 저장하기 위한 명령어 번역 룩어사이드 버퍼(ITLB)(804)와, 명령어 분기 어드레스를 이론적으로 예측하기 위한 분기 예측 유닛(802) 및 분기 어드레스와 대상 어드레스를 저장하기 위한 분기 대상 버퍼(BTB)(801)를 포함하는 다양한 공지된 구성 요소를 포함한다. 명령어는, 일단 인출되면, 디코드 유닛(830), 실행 유닛(840) 및 라이트 백 유닛(850)을 포함하는 명령어 파이프라인의 남은 단에 스트리밍된다. 이들 유닛 각각의 구조 및 기능은 본 기술 분야의 통상의 기술자에 의해 명확하게 이해될 것이므로, 본 발명의 다른 실시예의 관련된 측면을 불명료하게 하는 것을 회피하기 위하여 여기에서 상세하게 설명되지 않을 것이다.
전술한 바와 같이, 일 실시예에서, 실행 유닛(840) 내의 해시 함수 로직(841)은 보다 효율적으로 SM3 해싱 알고리즘을 처리하기 위한 다양한 기법을 수행한다. 따라서, SM3 해싱 알고리즘의 기초 원리의 간단한 설명이 먼저 제공되고, 본 발명의 실시예의 상세한 설명이 이어질 것이다.
본 명세서에 사용된 "메시지"는 SM3 해시가 수행되고 있는 이진 부호를 말한다. "메시지 다이제스트(message digest)" 또는 "다이제스트(digest)"는 해싱 동작의 최종 결과이다. SM3 알고리즘은 메시지를 전체 512 비트 블록으로 분할하는 "스터핑(stuffing)" 방법을 특정한다. SM3 압축 알고리즘은 다음 512 비트 블록 압축을 위한 입력 상태로서 기능하는, 중간 블록의 출력 상태를 가지는 512 비트 블록의 시퀀스에 대해서 행해진다. 각각의 블록 압축 및 최종 다이제스트의 상태는 256 비트 값이다. 256 비트 상태 값은 워드 A, B, C, D, E, F, G 및 H로 불리는 8개의 32 비트 "워드"로 분할되며, "빅 엔디언(Big Endian)" 포맷(A, 그 후에 B 등)으로 특정된다. 도 9는, 상태 값의 제1 세트(901)가 상태 값의 제2 세트(902)로 변환되는 처리 라운드 동안에 수행되는 동작을 그래픽으로 도시한다. 초기 상태 값은 SM3 표준에서 규정된 상수이다. 특히, 512 비트 블록의 압축 함수는 아래와 같이 정의된다.
변수 SS1, SS2, TT1 및 TT2는 각각의 반복에서 사용되는 내부 중간값이다. Tj는 0≤j≤15에 대하여 79cc4519로 지정되며, 16≤j≤63에 대하여 7a879d8a로 지정된다. 각각의 라운드에 대한 (Tj<<<j) 입력은 미리 결정될 수 있고, 라운드 값 j에 의해 참조되는 표로부터 로딩될 수 있다. P0 함수는 P0(x)=X xor (X<<<9) xor (X<<<17)로 지정되는 선형 번역 순열 함수이다.
압축되는 512 비트 블록은 W0 내지 W15로서 빅 엔디언 형태로 참조되는 16개의 32 비트 워드들로 분할된다. W' 입력은 W'j=WjxorWj +4로 지정되어, W'0내지 W'11이 초기 블록 데이터로부터 단일의 xor 함수로 결정될 수 있다.
라운드 16 내지 63에 대한 Wj 입력과, 라인드 12 내지 63에 대한 W'j 입력은 아래와 같이 지정되는 "메시지 확장"(메시지 스케쥴러)에 따라 전개된다.
Wj=P1(Wj -16 xor Wj -9 xor (Wj -3<<<15)) xor (Wj -13<<<7) xor Wj -6
여기서, P1은 아래와 같이 지정되는 다른 순열 함수이다.
P1(X)=X xor (X<<<15) xor (X<<<23)
추가적으로, j=64 내지 j=67에 대한 Wj는 라운드 60 내지 63에 대한 W'j의 전개에서 Wj + 4 항을 지지하도록 계산된다.
본 발명의 일 실시예는 IA 스트리밍 SIMD 확장(SSE) 아키텍처의 일부로서 규정되는 XMM SIMD 레지스터와 같은 128 비트 레지스터 파일, 또는 IA 어드밴스드 벡터 확장(AVX)-2 아키텍처의 일부로서 규정되는 YMM SIMD 레지스터와 같은 256 비트 레지스터로 프로세서의 SM3 해싱 알고리즘의 성능을 증가시키기 위한 새로운 명령어를 포함한다. 128 비트 SSE 아키텍처에 대하여 규정되는 명령어는 내재된(implicit) 피연산자 레지스터의 사용을 요구하지만, 동일한 XXM 기반 명령어를 사용하여 전력 효율이 좋은 고성능 코어의 보다 넓은 범위에서의 SM3 가속을 가능하게 하는 이점을 가진다.
본 발명의 일 실시예는, SM3 상태가 8개의 상태 변수 A 내지 H를 포함하지만, 이전 라운드의 변수 A, C, E 및 G를 단순히 재사용함으로써 변수 B, D, F 및 H가 갱신되며, 이에 의해 계산이 필요없다는 사실을 이용한다. 특히, 전술한 바와 같이, 현재 라운드에 대해서는,
B(현재 라운드)←A(이전 라운드),
D(현재 라운드)←C(이전 라운드),
F(현재 라운드)←E(이전 라운드) 및
H(현재 라운드)←G(이전 라운드)이다.
이에 따라, 본 발명의 일 실시예는 각각의 라운드에 대하여 아래와 같이 상태 변수 A, C, E, G만을 계산한다.
변수 A는 TT1에 의해 갱신되고,
변수 E는 P0(TT2)에 의해 갱신되고,
변수 C는 최종 라운드 변수 B<<<9에 의해 갱신되고,
변수 G는 최종 라운드 변수 F<<<19에 의해 갱신된다.
남아있는 상태 값 B, D, F 및 H는 아래에 기술된 것처럼 단순히 각각의 처리 라운드에서의 레지스터 지정을 변경함으로써 결정된다.
특히, 256 비트의 전체 SM3 상태는 2개의 128 비트 XMM 레지스터(예컨대, xmm1 및 xmm2)를 요구하지만, 남는 의문점은 8개의 변수 A 내지 H를 어떻게 이상적으로 분할할 것인지이다. 전술한 관측들을 이용하면, 본 발명의 일 실시예는 다음과 같은 효율적 레지스터 분할을 이용한다. 도 10에 도시된 것과 같이, SM3 상태 변수는 2개의 XMM 레지스터, XMM1(1002) 및 XMM2(1010)에 보유되고, XMM1(1002)은 홀수 라운드 동안에는 A, C, E 및 G를 포함하고, 짝수 라운드 동안에는 B, D, F 및 H를 포함하며, XMM2(1010)는 홀수 라운드 동안에는 B, D, F 및 H를 포함하고, 짝수 라운드 동안에는 A, C, E 및 G를 포함한다. 도 10은 라운드 1에 대한 XMM2(1010)에 저장된 값 A1, C1, E1 및 G1에 도달하기 위해 사이클 1 내지 3을 이용하는 (A0-G0 지정에 의해 나타난 것과 같은)라운드 0에 대한 세부 사항을 설명한다.
도 10은 각각의 사이클에서의 계산 값에 대해 관련된 로직을 설명하지만, 파이프라인 프로세서 아키텍처 내에서 이용될 수 있는 파이프라이닝 기법 또는 다른 구현 상세를 특히 식별하지 않다는 것에 주의한다. 이러한 상세는 본 기술분야의 당업자에 의해 잘 이해되므로, 본 발명의 기본 원리를 불명료하게 하는 것을 회피하기 위해서 도 10에서 도시되지 않는다.
128 비트 데이터 경로와 레지스터 파일에 대하여, SM3 해시의 단일 라운드를 갱신하는 명령어의 일 실시예는 다음과 같이 지정된다.
SM3RND XMMsrcdst, XMMsrc, IMM
여기서, XMMsrcdst는 홀수 라운드에 대하여 XMM1(1002)이고, 짝수 라운드에 대하여 XMM2(1010)이며, XMMsrc는 짝수 라운드에 대하여 XMM1(1002)이고, 홀수 라운드에 대하여 XMM2(1010)이다. 일 실시예에서, 순간 값 IMM은 j=0 내지 15에 대해서 0으로 설정되고, j=16 내지 63에 대하여 1로 설정된다.
도 10에 도시된 구체적인 상세로 돌아가서, 일 실시예에서, XMM0(1001)은 라운드 0의 사이클 1에 대하여 (Tj<<<j), Wj 및 W'j를 포함하는 내재적인 소스이다. 이들 값은 XMM1(1002)로부터의 A0, C0, E0, G0와 함께 사이클 2의 값을 계산하는 데에 이용된다. 내부 임시 저장소(1008)(예컨대, 비아키텍처 레지스터(not-architectural register) 또는 버퍼)는 도시된 바와 같이 SS2, SS1, W'j 및 Wj의 새 값을 저장한다. SS1은 다음과 같이 계산된다. 값 A는 연산자(1003)를 이용하여 왼쪽으로 12회 회전되고(rotate), 자리 올림 보존 가산기(carry save adder)(1004)는 가산기(1005)와 결합하여 A<<<12 결과를 E 및 Tj<<<J와 결합하고, 그 후에 결합된 결과는 연산자(1006)를 이용하여 좌측으로 7회 회전된다. SS2는 XOR 연산자(1007)를 이용하여 A<<<12와 SS1을 XOR하여 계산한다. 설명된 것처럼, W'j 및 Wj의 값은 XMM0(1001)으로부터 통과한다.
사이클 2는 상기 값들, XMM1(1002)에 저장된 A0, C0, E0 및 G0에 대한 초기값, XMM2(1010)에 저장된 B0, D0, F0 및 H0에 대한 초기값으로 시작한다. A, C, E 및 G의 새 값(라운드 1을 나타내기 위해 A1, C1, E1 및 G1로 식별한다)은 사이클 2 내지 3에서 계산되고 다음과 같이 XMM2(1010)에 저장된다. 연산자(1011)는 입력으로서 A0, B0 및 C0을 이용하여 FFj(A, B, C)를 생성하고(상기 FFj에 대한 방정식 참조), 연산자(1013)는 입력으로서 E0, F0 및 G0를 사용하여 GGj(E, F, G)를 생성한다(상기 GGj에 대한 방정식 참조). 그 후에, A1을 위한 값이 자리 올림 보존 가산기(1012, 1015) 및 가산기(1017)를 이용하여 FFj(A0, B0, C0)+D0+SS2+W'j를 사용하여 계산된다. C1의 값은 연산자(1018)를 통해서 왼쪽으로 9 회전된 B0의 값을 이용하여 계산된다. E1의 값은 P0에 GGj(E0, F0, G0)+H0+SS1+Wj를 곱함으로써 계산되고, 그것은 자리 올림 보전 가산기(1014, 1016) 및 가산기(1019)로 계산된다. P0 함수는 P0(X)=(X<<<9) xor (X<<<17)로 지정된 선형 번역 순열 함수이다. 그러므로, E1은 GGj(E0, F0, G0)+H0+SS1+Wj에 P0 선형 번역 순열을 수행함으로써 계산된다. G1의 값은 9만큼 F0을 좌측으로 회전시키는 연산자(1020)에 의해 계산된다.
현저하게, 단지 A1, C1, E1 및 G1에 대한 값은 사이클 2 내지 3에서 계산된다. B1, D1, F1 및 H1에 대한 값은 A0, C0, E0 및 G0의 이전 값을 취한다. 상기와 같이, XMMsrcdst는 홀수 라운드에 대하여 XMM1(1002)이고, 짝수 라운드에 대하여 XMM2(1010)이며, XMMsrc는 짝수 라운드에 대하여 XMM1(1002)이고, 홀수 라운드에 대하여 XMM2(1010)이다. 그러므로, 1 라운드로부터의 A, C, E 및 G의 값은, 이러한 값들이 다음 라운드에서 B, D, F 및 H가 될 때, 독립적으로 계산되거나, 새로운 레지스터로 물리적으로 이동되는 것으로 계산되지 않는다. 오히려, 이러한 값들은 간단하게 XMM1/XMM2 레지스터 지정의 스와핑에 의해 B, D, F 및 H가 되어, 처리 자원을 보존한다.
다른 실시예(예컨대, AVX2 또는 256 비트 레지스터를 가지는 다른 아키텍처를 사용함)에서, 단일 YMM SIMD 레지스터 내에서 SM3의 라운드에 대한 완전한 상태 갱신을 행하는 256 비트 YMM 레지스터를 사용한 명령어는, YMM1이 8x32 비트 SM3 상태에 대한 소스/목적지 레지스터이고, YMM2가 현재 라운드에 대한 (Tj<<<j), Wj 및 W'j를 포함하는 소스 레지스터인 경우에, SM3RND YMM1, YMM2로 지정될 수 있다
두 번째로 높은 성능의 다른 정의는 SM3 해시의 2개의 완전한 라운드에 대하여 5개 사이클의 SIMD 파이프에서 수행할 수 있고, 다음과 같이 상세화된다.
SM3RNDS2 YMM1, YMM2, YMM3
여기서, YMM1은 소스로서 라운드 j에 대한 SM3 상태를 가지는 소스/목적지 레지스터이며, 그 결과인 라운드 j+2에 대한 SM3 상태는 목적지로서 라이트 백된다. 본 실시예에서, YMM2는 Wj, W'j, Wj +1, W'j +1에 대한 소스 레지스터이며, YMM3은 Tj 및 Tj +1에 대한 소스 레지스터이다. 일 실시예에서, 이것은 Wj, W'j, Wj +1 및 W'j+1, Tj 및 Tj +1 모두를 유지하는 YMM2를 가지는 단지 2개의 레지스터로 지정된다는 것에 주의한다.
단일 및 이중 SM3 라운드 명령어 대안 모두를 위하여, 라운드 16 내지 63에 대한 Wj 및 라운드 12 내지 63에 대한 W'j +1의 전개는 입력으로서 그 파라미터를 사용하는 라운드 명령어에 앞서, 이전의 라운드의 라운드 명령어와 병렬적으로 계산되어, SM3 성능이 메시지 확장에 의해서 영향을 받지 않을 수 있다.
도 11은 본 발명의 일 실시예에 따른 방법을 설명한다. 1101에서, SM3과 같은 해싱 동작은 프로세서 내에서 초기화된다. 예컨대, 본 명세서에서 기술된 SM3 명령어 중 하나가 디코딩되어, 그 결과로 생기는 uops가 실행 유닛의 하나 이상의 실행 포트에 제공될 수 있다. 또한, 해싱 동작을 수행하는 데에 필요한 초기값은 적절한 저장 위치에 설정된다. 상술한 바와 같이, 예컨대, XMM0은 처리의 제1 라운드에 대하여 (Tj<<<j), Wj 및 W'j를 포함하도록 갱신될 수 있다. 유사하게, 도 10에 나타난 임시 저장소(1008)는 SS2, SS1, W'j 및 Wj의 값으로 업데이트될 수 있다.
1102에서, 상태 값의 제1 세트(예컨대, A0, C0, E0 및 G0)는 논리적 저장 위치의 제1 세트(예컨대, XMM1)에 저장되고, 상태 값의 제2 세트(예컨대, B0, D0, F0 및 H0)는 논리적 저장 위치의 제2 세트(예컨대, XMM2)에 저장된다. 1103에서, 처리의 "홀수" 라운드는 상태 값의 갱신된 제1 세트를 생성하기 위해 상태 값의 제1 세트 및 제2 세트를 이용하여 수행된다(예컨대, 새 값 A1, C1, E1 및 G1이 계산된다).
1104에서, 제1 논리적 저장 위치와 제2 논리적 저장 위치의 지정은, 상태 값의 제2 세트가 자동적으로 비갱신의 제1 상태 값의 세트와 동일하게 설정되도록 스와핑된다. 도 10에 도시된 실시예에서, 예컨대, SM3 상태 변수가 2개의 XMM 레지스터, XMM1(1002) 및 XMM2(1010)에 유지되고, XMM1(1002)은 홀수 라운드에 대하여 A, C, E 및 G를 포함하고, 짝수 라운드에 대해서는 B, D, F 및 H를 포함하며, XMM2(1010)는 홀수 라운드에 대해서는 B, D, F 및 H를 포함하고, 짝수 라운드에 대해서는 A, C, E 및 G를 포함한다. 그러므로, B, D, F 및 H의 값은 단순히 레지스터 지정(즉, 어느 상태 변수가 어느 레지스터에 저장되었는지에 대한 지시)을 스와핑함으로써, 각 라운드에서 A, C, E 및 G 각각의 이전 값으로 자동으로 설정된다. 이에 의해, 본 명세서에 사용된 것처럼, 저장 위치의 "지정"의 스와핑은 저장 위치에 저장되는 데이터의 지시를 변경하는 것을 의미한다.
1105에서, 새롭게 계산된 값 A, C, E 및 G는 새롭게 지정된 제2 논리적 저장 위치에 저장되고(예컨대, 도 10에 도시된 예에서 XMM2에 저장된 A1, C1, E1 및 G1), 1106에서, 상태 변수의 제1 및 제2 세트를 이용하여 계산의 짝수 라운드가 행해져서, 상태 변수(예컨대, A, C, E 및 G)의 제1 세트를 다시 갱신한다.
1107에서, 제1 논리적 저장 위치와 제2 논리적 저장 위치에 대한 지정은, 상태 값의 제2 세트가 자동적으로 비갱신의 상태 값의 제1 세트와 동일하게 설정되도록 다시 스와핑된다. 전술한 바와 같이, 일 실시예에서, A, C, E 및 G를 포함하는 지정 레지스터와, B, D, F 및 H를 포함하는 지정 레지스터는 짝수 및 홀수 라운드에 대하여 스와핑된다. 이에 의해, B, D, F 및 H의 값은 레지스터 지정을 스와핑함으로써 각각 다시 자동적으로 A, C, E 및 G의 이전 값으로 설정된다. 1108에서, 갱신된 상태 값의 제1 세트는 제1 논리적 저장 위치(예컨대, 도 10의 XMM1)에 저장된다. 그 후에, 상기 방법은 1108에서 결정되는, 해싱 동작의 완료까지 1103 내지 1108을 반복한다.
최적의 SM3 구현은 현재 FPGA 또는 ASIC 전용 하드웨어이다. 소프트웨어에서의 SM3의 성능은 각각의 SM3 라운드 및 메시지 확장의 연산에서 요구되는 종속적인 연산의 수 때문에 불량하다. 본 명세서에서 기술된 SM3RND 명령어의 추가는 2개의 라운드의 SM3 해시 압축 함수 중 하나가 5개의 프로세서 사이클에서 실행되거나, SM3의 하나의 라운드가 3개의 프로세서 사이클에서 완료될 수 있게 한다. 이것은 최고의 소프트웨어 구현을 통한 4배의 개선보다 더 큰 개선을 제공하는 것으로 추정된다.
다른 실시예에서, 즉각적 바이트(immediate byte)가 (Tj를 포함하는 YMM 레지스터 대신에) j를 지정하는 데에 사용된다. 이러한 실시예에서, YMM2는 W 값을 포함할 수 있으며, YMM3은 W'를 포함할 수 있다. 또한, YMM2는 전술한 것과 동일한 방식으로 정의될 수 있으며, W & W'의 결합된 값 또한 포함한다(YMM3을 요구하지 않음).
상기 설명에서, 그 상세한 실시예들을 참조하여 본 발명을 설명하였다. 그러나, 첨부된 청구항들에서 설명된 바와 같은 본 발명의 더 넓은 사상 및 범주로부터 벗어나지 않고, 그에 대한 다양한 변형 및 변경들이 행해질 수 있다는 것은 명백할 것이다. 명세서 및 도면은, 그에 따라, 제한적인 의미라기보다는 예시적인 것으로 간주되어야 한다.
본 발명의 실시예는 다양한 단계들을 포함할 수 있고 그것은 위에서 기술되었다. 이 단계들은 범용 또는 전용 프로세서가 단계들을 실행하게 하는데에 사용될 수 있는 기계 실행가능 명령어들로 구현될 수 있다. 대안적으로, 이 단계들은 단계들을 수행하기 위한 하드와이어드 로직을 포함하는 특정 하드웨어 컴포넌트들에 의해, 또는 프로그래밍된 컴퓨터 컴포넌트들 및 커스텀 하드웨어 컴포넌트들의 임의의 조합에 의해 수행될 수 있다.
본 명세서에서 사용된 명령어는 비일시적 컴퓨터 판독가능 매체에 내장된 메모리에 저장된 미리 정해진 기능 또는 소프트웨어 명령어들을 갖거나 특정한 동작들을 수행하도록 구성된 ASIC과 같은 하드웨어의 특정한 구성들을 지칭할 수도 있다. 그러므로, 도면에 나타난 기법은 저장되고 하나 이상의 전자 장치들(예컨대, 엔드 스테이션, 네트워크 구성 요소 등) 상에 저장되고 실행되는 코드 및 데이터를 이용하여 구현될 수 있다. 이러한 전자 장치는 비일시 컴퓨터 기계 판독가능 저장 매체(예컨대, 자기 디스크, 광 디스크, 랜덤 액세스 메모리, 판독 전용 메모리, 플래시 메모리 장치, 상 변경 메모리) 및 일시적 컴퓨터 기계 판독가능 통신 매체(예컨대, 전기, 광, 음향 또는 다른 형태의 전달 신호 - 예컨대, 반송파, 적외선 신호, 디지털 신호 등) 등의 컴퓨터 기계 판독가능 매체를 사용해서 코드 및 데이터를 (내부적으로 및/또는 네트워크를 통해 다른 전자 장치에 대하여) 저장하고 통신한다. 또한, 이러한 전자 장치는 통상적으로 하나 이상의 저장 장치(비일시적 기계 판독가능한 저장 매체), 사용자 입/출력 장치(예컨대, 키보드, 터치스크린 및/또는 디스플레이) 및 네트워크 접속과 같은 하나 이상의 다른 컴포넌트에 결합된 하나 이상의 프로세서의 세트를 포함한다. 프로세서의 세트 및 다른 컴포넌트의 결합은 전형적으로 하나 이상의 버스 및 브리지(버스 컨트롤러라고도 부른다)를 통해 이루어진다. 저장 장치 및 네트워크 트래픽을 운반하는 신호들은 각각 하나 이상의 기계 판독가능 저장 매체 및 기계 판독가능 통신 매체를 나타낸다. 그러므로, 주어진 전자 장치의 저장 장치는 전형적으로 실행을 위한 코드 및/또는 데이터를 그 전자 장치의 하나 이상의 프로세서들의 세트에 저장한다. 물론, 본 발명의 실시예의 하나 이상의 부분은 소프트웨어, 펌웨어 및/또는 하드웨어의 상이한 조합을 사용하여 구현될 수 있다. 본 상세한 설명의 전체를 통틀어, 설명을 위해, 다수의 특정 세부 사항들이 본 발명의 철저한 이해를 제공하기 위해 기재되었다. 그러나, 본 발명은 이들 특정 세부 사항의 일부가 없어도 실시될 수 있다는 것을 당업자라면 이해할 것이다. 특정 실시예들에서, 널리 공지된 구조 및 기능은 본 발명의 주제를 모호하게 하는 것을 방지하기 위해 정교하고 상세하게 기술되지 않았다. 따라서, 본 발명의 범위 및 사상은 이하의 청구항과 관련하여 판단되어야 한다.
Claims (25)
- 하드웨어 프로세서로 구현되는 해시 함수 실행 방법으로서,
상기 해시 함수의 라운드를 계산하는 데에 사용되는 상태 값의 제1 세트를 저장하는 것으로서 제1 저장 위치를 초기 지정하는 단계와,
상기 해시 함수의 라운드를 계산하는 데에 또한 사용되는 상태 값의 제2 세트를 저장하는 것으로서 제2 저장 위치를 초기 지정하는 단계와,
상태 데이터의 제1 및 제2 세트를 사용하여 상기 해시 함수의 복수의 라운드를 실행하는 단계를 포함하고,
상기 실행하는 단계는, 상기 제1 저장 위치가 라운드의 제1 세트에 대한 상기 상태 값의 제1 세트 및 라운드의 제2 세트에 대한 상기 상태 값의 제2 세트를 저장하는 것으로 지정되고, 상기 제2 저장 위치가 상기 라운드의 제1 세트에 대한 상기 상태 값의 제2 세트 및 상기 라운드의 제2 세트에 대한 상기 상태 값의 제1 세트를 저장하는 것으로 지정되도록 상기 제1 저장 위치의 지정과 제2 저장 위치의 지정을 스와핑하는 단계를 포함하는 해시 함수 실행 방법. - 제1항에 있어서, 상기 라운드의 제1 세트는 짝수 라운드를 포함하고, 상기 라운드의 제2 세트는 홀수 라운드를 포함하는 해시 함수 실행 방법.
- 제2항에 있어서, 상기 실행하는 단계는,
기존의 상태 값의 제1 세트 및 제2 세트를 사용하여 각 라운드에서의 새로운 상태 값의 제1 세트를 계산하는 단계와,
상기 상태 값의 제2 세트를 상기 기존의 상태 값의 제1 세트와 동일하게 설정하는 단계를 더 포함하는 해시 함수 실행 방법. - 제3항에 있어서, 상기 상태 값의 제2 세트를 상기 기존의 상태 값의 제1 세트와 동일하게 설정하는 동작은, 상기 제1 저장 위치의 지정과 상기 제2 저장 위치의 지정의 스와핑에 의해서 자동으로 수행되는 해시 함수 실행 방법.
- 제4항에 있어서, 상기 제1 저장 위치 및 상기 제2 저장 위치는 각각 128 비트 패킹된 레지스터를 포함하는 해시 함수 실행 방법.
- 제4항에 있어서, 상기 제1 저장 위치 및 상기 제2 저장 위치는 각각 256 비트 패킹된 레지스터를 포함하는 해시 함수 실행 방법.
- 제3항에 있어서, 상기 해시 함수는 보안 메시지(SM)-3 해시 함수를 포함하고, 상기 상태 값의 제1 세트는 상기 SM3 해시 함수의 변수 A, C, E 및 G를 포함하고, 상기 상태 값의 제2 세트는 상기 SM3 해시 함수의 변수 B, D, F 및 H를 포함하는 해시 함수 실행 방법.
- 제1항에 있어서, 상기 제1 세트 및 제2 세트의 각각의 값은 32 비트 값을 포함하는 해시 함수 실행 방법.
- 제8항에 있어서, 상기 상태 값의 제1 세트는 4개의 32 비트 값을 포함하고, 상기 상태 값의 제2 세트는 다른 4개의 32 비트 값을 포함하는 해시 함수 실행 방법.
- 프로세서로서,
해시 함수에 대한 상태 변수가 저장되는 제1 저장 위치 및 제2 저장 위치를 포함하는 레지스터 세트와,
상기 해시 함수를 실행하고, 상기 해시 함수의 라운드를 계산하는 데에 사용되는 상태 값의 제1 세트를 저장하는 것으로서 제1 저장 위치를 초기 지정하고, 상기 해시 함수의 라운드를 계산하는 데에 또한 사용되는 상태 값의 제2 세트를 저장하는 것으로서 제2 저장 위치를 초기 지정하는 실행 유닛을 포함하고,
상기 실행 유닛은 상태 데이터의 제1 및 제2 세트를 사용하여 상기 해시 함수의 복수의 라운드를 실행하고, 상기 실행은, 상기 제1 저장 위치가 라운드의 제1 세트에 대한 상기 상태 값의 제1 세트 및 라운드의 제2 세트에 대한 상기 상태 값의 제2 세트를 저장하는 것으로 지정되고, 상기 제2 저장 위치가 상기 라운드의 제1 세트에 대한 상기 상태 값의 제2 세트 및 상기 라운드의 제2 세트에 대한 상기 상태 값의 제1 세트를 저장하는 것으로 지정되도록 상기 제1 저장 위치의 지정과 제2 저장 위치의 지정을 스와핑하는 것을 포함하는 프로세서. - 제10항에 있어서, 상기 라운드의 제1 세트는 짝수 라운드를 포함하고, 상기 라운드의 제2 세트는 홀수 라운드를 포함하는 프로세서.
- 제11항에 있어서, 상기 실행은,
기존의 상태 값의 제1 세트 및 제2 세트를 사용하여 각 라운드에서의 새로운 상태 값의 제1 세트를 계산하는 것과,
상기 상태 값의 제2 세트를 상기 기존의 상태 값의 제1 세트와 동일하게 설정하는 것을 더 포함하는 프로세서. - 제12항에 있어서, 상기 상태 값의 제2 세트를 상기 기존의 상태 값의 제1 세트와 동일하게 설정하는 동작은, 상기 제1 저장 위치의 지정과 상기 제2 저장 위치의 지정의 스와핑에 의해서 자동으로 수행되는 프로세서.
- 제13항에 있어서, 상기 제1 저장 위치 및 상기 제2 저장 위치는 각각 128 비트 패킹된 레지스터를 포함하는 프로세서.
- 제13항에 있어서, 상기 제1 저장 위치 및 상기 제2 저장 위치는 각각 256 비트 패킹된 레지스터를 포함하는 프로세서.
- 제12항에 있어서, 상기 해시 함수는 보안 메시지(SM)-3 해시 함수를 포함하고, 상기 상태 값의 제1 세트는 상기 SM-3 해시 함수의 변수 A, C, E 및 G를 포함하고, 상기 상태 값의 제2 세트는 상기 SM-3 해시 함수의 변수 B, D, F 및 H를 포함하는 프로세서.
- 제10항에 있어서, 상기 제1 세트 및 상기 제2 세트의 각각의 값은 32 비트 값을 포함하는 프로세서.
- 제17항에 있어서, 상기 상태 값의 제1 세트는 4개의 32 비트 값을 포함하고, 상기 상태 값의 제2 세트는 다른 4개의 32 비트 값을 포함하는 프로세서.
- 시스템으로서,
명령어 및 데이터를 저장하기 위한 메모리와,
상기 명령어 및 데이터를 캐싱하기 위한 복수의 캐시 레벨을 가지는 캐시 서브시스템과,
상기 시스템을 네트워크 상에 통신가능하게 결합하기 위한 네트워크 인터페이스와,
하나 이상의 주변 장치로부터 커맨드를 수신하기 위한 적어도 하나의 입력/출력 유닛과,
프로세서를 포함하고,
상기 프로세서는,
해시 함수에 대한 상태 변수가 저장되는 제1 저장 위치 및 제2 저장 위치를 포함하는 레지스터 세트와,
상기 해시 함수를 실행하고, 상기 해시 함수의 라운드를 계산하는 데에 사용되는 상태 값의 제1 세트를 저장하는 것으로서 제1 저장 위치를 초기 지정하고, 상기 해시 함수의 라운드를 계산하는 데에 또한 사용되는 상태 값의 제2 세트를 저장하는 것으로서 제2 저장 위치를 초기 지정하는 실행 유닛을 포함하고,
상기 실행 유닛은, 상태 데이터의 제1 및 제2 세트를 사용하여 상기 해시 함수의 복수의 라운드를 실행하고, 상기 실행은, 상기 제1 저장 위치가 라운드의 제1 세트에 대한 상기 상태 값의 제1 세트 및 라운드의 제2 세트에 대한 상기 상태 값의 제2 세트를 저장하는 것으로 지정되고, 상기 제2 저장 위치가 상기 라운드의 제1 세트에 대한 상기 상태 값의 제2 세트 및 상기 라운드의 제2 세트에 대한 상기 상태 값의 제1 세트를 저장하는 것으로 지정되도록 상기 제1 저장 위치의 지정과 제2 저장 위치의 지정을 스와핑하는 것을 포함하는 시스템. - 제19항에 있어서, 상기 라운드의 제1 세트는 짝수 라운드를 포함하고, 상기 라운드의 제2 세트는 홀수 라운드를 포함하는 시스템.
- 제20항에 있어서, 상기 실행은,
기존의 상태 값의 제1 세트 및 제2 세트를 사용하여 각 라운드에서의 새로운 상태 값의 제1 세트를 계산하는 것과,
상기 상태 값의 제2 세트를 상기 기존의 상태 값의 제1 세트와 동일하게 설정하는 것을 더 포함하는 시스템. - 제21항에 있어서, 상기 상태 값의 제2 세트를 상기 기존의 상태 값의 제1 세트와 동일하게 설정하는 동작은, 상기 제1 저장 위치의 지정과 상기 제2 저장 위치의 지정의 스와핑에 의해서 자동으로 수행되는 시스템.
- 제22항에 있어서, 상기 제1 저장 위치 및 상기 제2 저장 위치는 각각 128 비트 패킹된 레지스터를 포함하는 시스템.
- 제22항에 있어서, 상기 제1 저장 위치 및 상기 제2 저장 위치는 각각 256 비트 패킹된 레지스터를 포함하는 시스템.
- 제21항에 있어서, 상기 해시 함수는 보안 메시지(SM)-3 해시 함수를 포함하고, 상기 상태 값의 제1 세트는 상기 SM-3 해시 함수의 변수 A, C, E 및 G를 포함하고, 상기 상태 값의 제2 세트는 상기 SM-3 해시 함수의 변수 B, D, F 및 H를 포함하는 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/228,056 | 2014-03-27 | ||
US14/228,056 US9912481B2 (en) | 2014-03-27 | 2014-03-27 | Method and apparatus for efficiently executing hash operations |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150112782A KR20150112782A (ko) | 2015-10-07 |
KR101732046B1 true KR101732046B1 (ko) | 2017-05-02 |
Family
ID=52822172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150028373A KR101732046B1 (ko) | 2014-03-27 | 2015-02-27 | 해시 동작을 효율적으로 실행하는 방법 및 장치 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9912481B2 (ko) |
JP (1) | JP6051458B2 (ko) |
KR (1) | KR101732046B1 (ko) |
CN (1) | CN104951702B (ko) |
DE (1) | DE102015002254A1 (ko) |
GB (1) | GB2528343B (ko) |
TW (2) | TWI575388B (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2497070B (en) * | 2011-11-17 | 2015-11-25 | Advanced Risc Mach Ltd | Cryptographic support instructions |
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 |
US10503510B2 (en) | 2013-12-27 | 2019-12-10 | Intel Corporation | SM3 hash function message expansion processors, methods, systems, and instructions |
US9317719B2 (en) * | 2014-09-04 | 2016-04-19 | Intel Corporation | SM3 hash algorithm acceleration processors, methods, systems, and instructions |
US9658854B2 (en) | 2014-09-26 | 2017-05-23 | Intel Corporation | Instructions and logic to provide SIMD SM3 cryptographic hashing functionality |
US10020934B2 (en) * | 2015-11-05 | 2018-07-10 | Intel Corporation | Hardware accelerator for cryptographic hash operations |
CN106452769B (zh) * | 2016-09-13 | 2019-11-29 | 杭州华为数字技术有限公司 | 一种数据处理方法、数据处理装置以及处理器 |
US10824428B2 (en) | 2019-03-29 | 2020-11-03 | Intel Corporation | Apparatuses, methods, and systems for hashing instructions |
CN114499465A (zh) * | 2020-10-23 | 2022-05-13 | 北京京东方技术开发有限公司 | 散列算法及电路、电子设备 |
US11275726B1 (en) * | 2020-12-06 | 2022-03-15 | Kamu Data Inc. | Distributed data processing method with complete provenance and reproducibility |
CN113721986B (zh) * | 2021-07-23 | 2024-02-09 | 浪潮电子信息产业股份有限公司 | 一种数据压缩方法、装置及电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100214301A1 (en) | 2009-02-23 | 2010-08-26 | Microsoft Corporation | VGPU: A real time GPU emulator |
US20130283064A1 (en) | 2011-12-22 | 2013-10-24 | Kirk S. Yap | Method and apparatus to process sha-1 secure hashing algorithm |
Family Cites Families (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2458331A1 (de) | 1973-12-13 | 1975-06-19 | Honeywell Inf Systems | Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes |
US4250483A (en) | 1978-01-30 | 1981-02-10 | Rubner Anthony C | System for signalized intersection control |
DE68926200T2 (de) | 1988-08-11 | 1996-10-17 | Ibm | Geheime Datenübertragung mittels Steuervektoren |
US5339398A (en) | 1989-07-31 | 1994-08-16 | North American Philips Corporation | Memory architecture and method of data organization optimized for hashing |
US5349642A (en) | 1992-11-03 | 1994-09-20 | Novell, Inc. | Method and apparatus for authentication of client server communication |
US5649179A (en) | 1995-05-19 | 1997-07-15 | Motorola, Inc. | Dynamic instruction allocation for a SIMD processor |
US5608801A (en) | 1995-11-16 | 1997-03-04 | Bell Communications Research, Inc. | Efficient cryptographic hash functions and methods for amplifying the security of hash functions and pseudo-random functions |
US5920900A (en) | 1996-12-30 | 1999-07-06 | Cabletron Systems, Inc. | Hash-based translation method and apparatus with multiple level collision resolution |
US5897637A (en) | 1997-03-07 | 1999-04-27 | Apple Computer, Inc. | System and method for rapidly identifying the existence and location of an item in a file |
US6067547A (en) | 1997-08-12 | 2000-05-23 | Microsoft Corporation | Hash table expansion and contraction for use with internal searching |
US5960434A (en) | 1997-09-26 | 1999-09-28 | Silicon Graphics, Inc. | System method and computer program product for dynamically sizing hash tables |
US6260055B1 (en) | 1997-10-15 | 2001-07-10 | Kabushiki Kaisha Toshiba | Data split parallel shifter and parallel adder/subtractor |
US6226710B1 (en) | 1997-11-14 | 2001-05-01 | Utmc Microelectronic Systems Inc. | Content addressable memory (CAM) engine |
US6360218B1 (en) | 1998-10-26 | 2002-03-19 | Microsoft Corporation | Compact record format for low-overhead databases |
US6307955B1 (en) | 1998-12-18 | 2001-10-23 | Topaz Systems, Inc. | Electronic signature management system |
US7065633B1 (en) | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US6578131B1 (en) | 1999-04-27 | 2003-06-10 | Microsoft Corporation | Scaleable hash table for shared-memory multiprocessor system |
US6983350B1 (en) | 1999-08-31 | 2006-01-03 | Intel Corporation | SDRAM controller for parallel processor architecture |
US6631419B1 (en) | 1999-09-22 | 2003-10-07 | Juniper Networks, Inc. | Method and apparatus for high-speed longest prefix and masked prefix table search |
US6594665B1 (en) | 2000-02-18 | 2003-07-15 | Intel Corporation | Storing hashed values of data in media to allow faster searches and comparison of data |
US6952770B1 (en) | 2000-03-14 | 2005-10-04 | Intel Corporation | Method and apparatus for hardware platform identification with privacy protection |
US6470329B1 (en) | 2000-07-11 | 2002-10-22 | Sun Microsystems, Inc. | One-way hash functions for distributed data synchronization |
US20020032551A1 (en) | 2000-08-07 | 2002-03-14 | Jabari Zakiya | Systems and methods for implementing hash algorithms |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
WO2002056538A2 (en) | 2001-01-12 | 2002-07-18 | Broadcom Corporation | Implementation of the shai algorithm |
US7073059B2 (en) | 2001-06-08 | 2006-07-04 | Hewlett-Packard Development Company, L.P. | Secure machine platform that interfaces to operating systems and customized control programs |
US7249255B2 (en) * | 2001-06-13 | 2007-07-24 | Corrent Corporation | Apparatus and method for a hash processing system using multiple hash storage areas |
US7240203B2 (en) | 2001-07-24 | 2007-07-03 | Cavium Networks, Inc. | Method and apparatus for establishing secure sessions |
KR100423811B1 (ko) | 2001-12-12 | 2004-03-22 | 한국전자통신연구원 | 카스미 암호화 알고리즘을 응용한 암호화 장치 |
US7395412B2 (en) | 2002-03-08 | 2008-07-01 | Ip-First, Llc | Apparatus and method for extending data modes in a microprocessor |
US7400722B2 (en) | 2002-03-28 | 2008-07-15 | Broadcom Corporation | Methods and apparatus for performing hash operations in a cryptography accelerator |
US7069442B2 (en) | 2002-03-29 | 2006-06-27 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
US7165135B1 (en) | 2002-04-18 | 2007-01-16 | Advanced Micro Devices, Inc. | Method and apparatus for controlling interrupts in a secure execution mode-capable processor |
EP1495401B1 (en) | 2002-04-18 | 2007-01-24 | Advanced Micro Devices, Inc. | Initialization of a computer system including a secure execution mode-capable processor |
JP2004109420A (ja) | 2002-09-18 | 2004-04-08 | Sony Corp | 乱数生成装置及び乱数生成方法 |
US7373514B2 (en) | 2003-07-23 | 2008-05-13 | Intel Corporation | High-performance hashing system |
US7921300B2 (en) | 2003-10-10 | 2011-04-05 | Via Technologies, Inc. | Apparatus and method for secure hash algorithm |
US7684563B1 (en) | 2003-12-12 | 2010-03-23 | Sun Microsystems, Inc. | Apparatus and method for implementing a unified hash algorithm pipeline |
US7599489B1 (en) | 2004-02-09 | 2009-10-06 | Sun Microsystems Inc. | Accelerating cryptographic hash computations |
US7602905B2 (en) * | 2004-09-01 | 2009-10-13 | Texas Instruments Incorporated | Processes, circuits, devices, and systems for encryption and decryption and other purposes, and processes of making |
EP1860630B1 (en) | 2005-03-16 | 2018-12-26 | Mitsubishi Electric Corporation | Data converting apparatus and data converting method |
US8073892B2 (en) | 2005-12-30 | 2011-12-06 | Intel Corporation | Cryptographic system, method and multiplier |
US7725624B2 (en) | 2005-12-30 | 2010-05-25 | Intel Corporation | System and method for cryptography processing units and multiplier |
US8020142B2 (en) | 2006-12-14 | 2011-09-13 | Intel Corporation | Hardware accelerator |
US7949130B2 (en) | 2006-12-28 | 2011-05-24 | Intel Corporation | Architecture and instruction set for implementing advanced encryption standard (AES) |
US8281109B2 (en) | 2007-12-27 | 2012-10-02 | Intel Corporation | Compressed instruction format |
US8923510B2 (en) | 2007-12-28 | 2014-12-30 | Intel Corporation | Method and apparatus for efficiently implementing the advanced encryption standard |
US8340280B2 (en) | 2008-06-13 | 2012-12-25 | Intel Corporation | Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations |
US8832464B2 (en) * | 2009-03-31 | 2014-09-09 | Oracle America, Inc. | Processor and method for implementing instruction support for hash algorithms |
US20100250965A1 (en) | 2009-03-31 | 2010-09-30 | Olson Christopher H | Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm |
WO2011120421A1 (zh) | 2010-03-31 | 2011-10-06 | 北京飞天诚信科技有限公司 | 加密引擎的实现方法 |
US8583902B2 (en) | 2010-05-07 | 2013-11-12 | Oracle International Corporation | Instruction support for performing montgomery multiplication |
US8712039B2 (en) | 2011-04-06 | 2014-04-29 | Certicom Corp. | Efficient implementation of hash algorithm on a processor |
JP2012252281A (ja) | 2011-06-06 | 2012-12-20 | Canon Inc | 演算処理装置およびその方法、並びに、情報処理装置 |
US8855302B2 (en) | 2011-06-21 | 2014-10-07 | Intel Corporation | Apparatus and method for Skein hashing |
GB2497070B (en) * | 2011-11-17 | 2015-11-25 | Advanced Risc Mach Ltd | Cryptographic support instructions |
CN106802788B (zh) | 2012-03-30 | 2019-11-08 | 英特尔公司 | 用于处理sha-2安全散列算法的方法和设备 |
US10203934B2 (en) * | 2012-07-11 | 2019-02-12 | Intel Corporation | Parallell processing of a single data buffer |
GB2496934B (en) | 2012-08-07 | 2014-06-11 | Imagination Tech Ltd | Multi-stage register renaming using dependency removal |
US8924741B2 (en) | 2012-12-29 | 2014-12-30 | Intel Corporation | Instruction and logic to provide SIMD secure hashing round slice functionality |
US20140362098A1 (en) | 2013-06-10 | 2014-12-11 | Sharp Laboratories Of America, Inc. | Display stream compression |
CN103457719B (zh) | 2013-07-23 | 2016-06-08 | 国家密码管理局商用密码检测中心 | 一种对sm3密码算法hmac模式的侧信道能量分析方法 |
US10038550B2 (en) * | 2013-08-08 | 2018-07-31 | Intel Corporation | Instruction and logic to provide a secure cipher hash round functionality |
CN103490895B (zh) | 2013-09-12 | 2016-09-14 | 电小虎能源科技(北京)有限公司 | 一种应用国密算法的工业控制身份认证方法及装置 |
US9424209B2 (en) * | 2013-09-19 | 2016-08-23 | Intel Corporation | Dynamic heterogeneous hashing functions in ranges of system memory addressing space |
US9390246B2 (en) * | 2013-09-25 | 2016-07-12 | Intel Corporation | Creating secure original equipment manufacturer (OEM) identification |
US9250914B2 (en) * | 2013-12-20 | 2016-02-02 | Intel Corporation | Method and apparatus for selecting cache locality for atomic operations |
US10503510B2 (en) | 2013-12-27 | 2019-12-10 | Intel Corporation | SM3 hash function message expansion processors, methods, systems, and instructions |
US9361106B2 (en) | 2013-12-27 | 2016-06-07 | Intel Corporation | SMS4 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 |
US9658854B2 (en) | 2014-09-26 | 2017-05-23 | Intel Corporation | Instructions and logic to provide SIMD SM3 cryptographic hashing functionality |
-
2014
- 2014-03-27 US US14/228,056 patent/US9912481B2/en active Active
-
2015
- 2015-02-16 TW TW104105374A patent/TWI575388B/zh active
- 2015-02-16 TW TW105144233A patent/TWI610184B/zh not_active IP Right Cessation
- 2015-02-17 JP JP2015028528A patent/JP6051458B2/ja not_active Expired - Fee Related
- 2015-02-23 DE DE102015002254.7A patent/DE102015002254A1/de active Pending
- 2015-02-25 GB GB1503156.0A patent/GB2528343B/en active Active
- 2015-02-27 KR KR1020150028373A patent/KR101732046B1/ko active IP Right Grant
- 2015-03-04 CN CN201510096246.8A patent/CN104951702B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100214301A1 (en) | 2009-02-23 | 2010-08-26 | Microsoft Corporation | VGPU: A real time GPU emulator |
US20130283064A1 (en) | 2011-12-22 | 2013-10-24 | Kirk S. Yap | Method and apparatus to process sha-1 secure hashing algorithm |
Non-Patent Citations (1)
Title |
---|
Guilford, J., D. Cote, and V. Gopal., Fast SHA512 Implementations on Intel® Architecture Processors(Nov 2012), Intel, 2012.11. |
Also Published As
Publication number | Publication date |
---|---|
TWI610184B (zh) | 2018-01-01 |
TW201546628A (zh) | 2015-12-16 |
JP6051458B2 (ja) | 2016-12-27 |
TWI575388B (zh) | 2017-03-21 |
CN104951702A (zh) | 2015-09-30 |
DE102015002254A1 (de) | 2015-10-01 |
JP2015212804A (ja) | 2015-11-26 |
KR20150112782A (ko) | 2015-10-07 |
GB201503156D0 (en) | 2015-04-08 |
GB2528343A (en) | 2016-01-20 |
CN104951702B (zh) | 2018-11-09 |
TW201738773A (zh) | 2017-11-01 |
US20150280917A1 (en) | 2015-10-01 |
US9912481B2 (en) | 2018-03-06 |
GB2528343B (en) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101732046B1 (ko) | 해시 동작을 효율적으로 실행하는 방법 및 장치 | |
US10503505B2 (en) | Read and write masks update instruction for vectorization of recursive computations over independent data | |
CN112543095B (zh) | 处理指令的系统、设备、方法、处理器、介质和电子设备 | |
CN107094369B (zh) | 用于提供simd sm3密码散列函数的指令和逻辑 | |
JP6207095B2 (ja) | 条件付きループをベクトル化する命令及び論理 | |
EP3391196B1 (en) | Instruction and logic for secure instruction execution pipeline | |
US9563425B2 (en) | Instruction and logic to provide pushing buffer copy and store functionality | |
US9378182B2 (en) | Vector move instruction controlled by read and write masks | |
GB2534037A (en) | Instructions and logic to provide advanced paging capabilities for secure enclave page caches | |
US9898300B2 (en) | Instruction for fast ZUC algorithm processing | |
KR101787615B1 (ko) | 단일 명령어에 응답하여 회전 및 xor을 수행하기 위한 시스템들, 장치들, 및 방법들 | |
WO2014051782A1 (en) | Instruction for shifting bits left with pulling ones into less significant bits | |
US10187208B2 (en) | RSA algorithm acceleration processors, methods, systems, and instructions | |
KR20170037641A (ko) | Simd sm3 암호화 해싱 기능을 제공하기 위한 명령어 및 로직 | |
US9473296B2 (en) | Instruction and logic for a simon block cipher | |
KR101635856B1 (ko) | 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법 |
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 |