TWI544362B - 用以提供單一指令多重資料(simd)sm4加密區塊加密功能之指令和邏輯 - Google Patents

用以提供單一指令多重資料(simd)sm4加密區塊加密功能之指令和邏輯 Download PDF

Info

Publication number
TWI544362B
TWI544362B TW104127515A TW104127515A TWI544362B TW I544362 B TWI544362 B TW I544362B TW 104127515 A TW104127515 A TW 104127515A TW 104127515 A TW104127515 A TW 104127515A TW I544362 B TWI544362 B TW I544362B
Authority
TW
Taiwan
Prior art keywords
instruction
source data
processor
simd
data operation
Prior art date
Application number
TW104127515A
Other languages
English (en)
Other versions
TW201616388A (zh
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 英特爾股份有限公司
Priority to JP2017511158A priority Critical patent/JP6537084B2/ja
Priority to KR1020177005198A priority patent/KR102307103B1/ko
Priority to PCT/US2015/065137 priority patent/WO2017034601A1/en
Priority to KR1020227035517A priority patent/KR102562111B1/ko
Priority to KR1020217029175A priority patent/KR102456395B1/ko
Priority to EP15902463.7A priority patent/EP3342093B1/en
Publication of TW201616388A publication Critical patent/TW201616388A/zh
Application granted granted Critical
Publication of TWI544362B publication Critical patent/TWI544362B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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
    • 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/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • 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/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

用以提供單一指令多重資料(SIMD)SM4加密區塊加密功能之指令和邏輯
本發明內容涉及處理邏輯、微處理器及相關聯指令組結構的領域,當由處理器或其它處理邏輯、執行邏輯、數學或其它功能操作執行時。特別是,本發明有關於提供SIMD SM4加密區塊密碼功能之指令和邏輯。
密碼學是一種依賴演算法及金鑰來保護資訊。演算法是一種複雜的數學演算法而金鑰是一種位元串。存在有兩種密碼學系統之基礎類型:私密金鑰(secret key)系統以及公開金鑰(public key)系統。私密金鑰系統也稱為一種具有但一金鑰(「私密金鑰」)之對稱系統,該金鑰係有兩個或多個團體共享。單一金鑰是被用來加密及解碼資訊。
例如,先進加密標準(Advanced Encryption Standard,AES),也稱為Rijndael,是一種由兩個比利 時密碼學家建立之區塊密碼且由美國政府採用作為密碼標準。AES於2001年11月26日由國家標準技術局(National Institute of Standards and Technology;簡稱NIST)宣布為U.S.FIPS PUB 197(FIPS 197)。其它的加密演算法也感興趣。
其它範例為SM4(以前也稱為SMS4),區塊密碼被使用在用於無線LAN WAPI(有線鑑別與保密基礎架構)之中國國家標準中。它處理幾回合(即,32回合)明文資料作為在Galois field 28中之128位元區塊,也表示為GF(256)、模數不可約分多項式。SM4演算法是由教授LU Shu-wang所發明,且由中國政府撤銷機密及於2006年1月發佈。
SM4之輸入、輸出及金鑰各為128位元。每一回合藉由進行XOR修改組成128位元區塊之4個32位元字元中的一個與其它三個字元之金鑰的功能。加密和解碼具有相同的結構不同的是用於解碼之回合金鑰(round key)進度是用於加密之回合金鑰進度的反向。SM4(在ANSIC中)之軟體實施由Free Software Foundation在2009年12月線上發佈。軟件運行大小比專門的硬體慢幾個數量級,因此希望具有一個硬體/韌體實施的附加性能。
使用查找記憶(lookup memories)、真值表(truth tables)、二元決策圖(binary decision diagram)或256輸入多工器(multiplexers)之典型簡單的硬體實 施就電路面積方面是昂貴的。使用有限域同構的GF(256)替代方法可以是有效的區域,但也可能比直接硬體實施還慢。
現代的處理器通常包括用以提供計算密集的操作指令,但提供高水平的資料平行處理(data parallelism),其中資料平行處理可經由使用各種資料儲存裝置之有效實施的而被利用,例如單一指令多重資料(single instruction multiple data,SIMD)向量暫存器。中央處理單元(CPU)可接著提供平行硬體以支持處理向量。向量為一種保存數個連續資料元件的資料結構。大小M之向量暫存器(其中M為2K,例如512、256、128、64、32…4或2)可含有大小O之N向量元件,其中N=M/O。例如,64位元向量暫存器可被劃分為(a)64個向量元件,每個元件保存佔據1位元的資料、(b)32個向量元件以保存各佔有2位元之資料項(或一「字元」)、(c)16個向量元件以保存各佔有4位元之資料項(或一「雙倍字元(doubleword)」)、或(d)8個向量元件以保存各佔有8位元之資料項(或一「四倍字元(quadword)」)。在SIMD向量暫存器中平行處理的本質可能是非常適合的塊加密演算法的處理。
至今,對於此種複雜性、效能限制問題及其它瓶頸所提供有效的空間-時間的折衷設計和潛在的解決方法的選擇還沒有得到充分探討。
100‧‧‧系統
102、1000‧‧‧處理器
104‧‧‧1階(L1)內部快取記憶體
106、145、164‧‧‧暫存器資料
108、142、162、462‧‧‧執行單元
109、113‧‧‧緊密指令集
110‧‧‧處理器匯流排
112‧‧‧圖形卡
114‧‧‧加速圖形埠互連
116‧‧‧系統邏輯晶片
118‧‧‧高頻寬記憶體路徑
120、640、732、734、1140‧‧‧記憶體
122‧‧‧集線器介面匯流排
124‧‧‧資料儲存器/資料儲存裝置
126‧‧‧無線收發機
128‧‧‧韌體集線器(快閃BIOS)
130‧‧‧I/O控制器集線
134‧‧‧網路控制器
140‧‧‧資料處理系統/電腦系統
141‧‧‧匯流排
144、165、165B‧‧‧解碼器
146‧‧‧同步動態隨機存取記憶體(SDRAM)控制
147‧‧‧靜態隨機存取記憶體(SRAM)控制
148‧‧‧叢發快閃記憶體介面
149‧‧‧個人電腦記憶卡國際協會(PCMCIA)/緊密快閃(CF)卡控制
150‧‧‧液晶顯示器(LCD)控制
151‧‧‧直接記憶體存取(DMA)控制器
152‧‧‧匯流排主控介面
153‧‧‧I/O匯流排
154‧‧‧I/O橋接器
155‧‧‧通用異步接收器/發射器(UART)
156‧‧‧通用串列匯流排(USB)
157‧‧‧藍牙無線UART
158‧‧‧I/O擴充介面
159、170‧‧‧處理核心
160‧‧‧資料處理系統
161‧‧‧SIMD共處理器
163‧‧‧指令集
166‧‧‧主處理器
167‧‧‧快取記憶體
169‧‧‧無線介面
171‧‧‧處理器匯流排
200、870、880、1000、1215、1314、1316‧‧‧處理器
201‧‧‧循序前端
202‧‧‧快速排程器
203‧‧‧亂序執行引擎
204‧‧‧uop排程器
206‧‧‧簡單浮點排程器
208、210‧‧‧整數暫存器檔案
210‧‧‧浮點暫存器檔案
211‧‧‧執行區塊
212‧‧‧執行單元/位址產生單元/AGU
214‧‧‧執行單元/AGU
216、218‧‧‧執行單元/快速ALU
220‧‧‧執行單元/緩慢ALU
222‧‧‧執行單元/浮點單元
224‧‧‧執行單元/浮點移動單元/浮點執行區塊/浮點單元
226‧‧‧指令預擷取器
228‧‧‧指令解碼器/解碼器
230‧‧‧追蹤快取記憶體
232‧‧‧微碼ROM
234‧‧‧uop隊列
310‧‧‧緊縮位元組
320‧‧‧緊縮字元
330‧‧‧緊縮雙字元
341‧‧‧緊縮一半
342‧‧‧緊縮單
343‧‧‧緊縮雙
344‧‧‧無符號緊縮位元組表示
345‧‧‧有符號緊縮位元組表示
346‧‧‧無符號緊縮字元表示/無符號緊縮字元暫存器內表示
347‧‧‧有符號緊縮字元表示
348‧‧‧無符號緊縮雙字元表示/無符號緊縮雙字元暫存器內表示
349‧‧‧有符號緊縮雙字元表示
360、370‧‧‧運算編碼(操作碼)格式/操作碼格式/格式
361、362、371、372‧‧‧欄位
363、373‧‧‧MOD欄位
364、365‧‧‧來源運算元識別符
366‧‧‧目的運算元識別符
374、375‧‧‧來源運算元識別符/運算元識別符/識別符
376‧‧‧目的運算元識別符
378‧‧‧欄位/前綴位元組
380‧‧‧運算編碼(操作碼)格式
381‧‧‧條件欄位
382、389‧‧‧CDP操作碼欄位
383、384、387、388、392‧‧‧欄位
385、390‧‧‧來源運算元識別符
386‧‧‧目的運算元識別符
391、396‧‧‧選擇性VEX前綴位元組
393‧‧‧選擇性比例變址基址(SIB)識別符
394‧‧‧選擇性位移識別符
395‧‧‧選擇性立即位元組
397‧‧‧運算編碼(操作碼)格式
400‧‧‧處理器管線/管線
402‧‧‧擷取階段
404‧‧‧長度解碼階段
406‧‧‧解碼階段/解
408‧‧‧分配階段
410‧‧‧重新命名階段
412‧‧‧排程階段
414‧‧‧暫存器讀取/記憶體讀取階段
416‧‧‧執行階段
418‧‧‧回寫/記憶體寫入階段
422‧‧‧異常處理階段
424‧‧‧確認階段
430‧‧‧前端單元
432‧‧‧分支預測單元
434‧‧‧指令快取記憶單元
436‧‧‧指令轉譯後備緩衝器(TLB)
438‧‧‧指令擷取單元/指令擷取
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧重新命名/分配器單元
454‧‧‧引退單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行聚集
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取記憶體單元
476‧‧‧2階(L2)快取記憶體單元
490‧‧‧核心
500‧‧‧多心處理器/處理器
502A-N‧‧‧核心
506‧‧‧共享快取記憶體單元
508‧‧‧整合型圖形邏輯
510‧‧‧系統代理單元/系統代理
512‧‧‧環式互連單元
514‧‧‧整合型記憶體控制器單元
516‧‧‧匯流排控制器單元
600‧‧‧系統
610、615‧‧‧處理器/實體資源
620‧‧‧圖形記憶體控制器集線器/GMCH
645‧‧‧顯示器
650‧‧‧輸入/輸出(I/O)控制器集線器/ICH
660‧‧‧外部圖形裝置
670‧‧‧周邊裝置
695‧‧‧前端匯流排
700‧‧‧第二系統
714‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤和/或滑鼠
724‧‧‧音訊I/O
727‧‧‧通訊裝置
728‧‧‧儲存單元
730‧‧‧指令/碼及資料
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
750‧‧‧點對點互連/點對點(P-P)介面
752、754‧‧‧P-P介面
770‧‧‧第一處理器/處理器
772、782‧‧‧整合型記憶體控制器單元/IMC
776、778‧‧‧點對點介面/P-P介面/點對點介面電路
780‧‧‧第二處理器/處理器
786、788、794、798‧‧‧P-P介面
790‧‧‧晶片組
796‧‧‧介面
800‧‧‧第三系統
814‧‧‧I/O裝置
815‧‧‧舊式I/O裝置
832、834‧‧‧記憶體
872、882‧‧‧I/O控制邏輯/CL
890‧‧‧晶片組
900‧‧‧SoC
902‧‧‧互連單元
910‧‧‧應用處理器
920‧‧‧媒體處理器
924‧‧‧影像處理器
926‧‧‧音訊處理器
928‧‧‧視訊處理器
930‧‧‧靜態隨機存取記憶體(SRAM)單元
932‧‧‧直接記憶體存取(DMA)單元
940‧‧‧顯示單元
1005‧‧‧CPU
1010‧‧‧GPU
1015‧‧‧影像處理器
1020‧‧‧視訊處理器
1025‧‧‧USB控制器
1030‧‧‧UART控制器
1035‧‧‧SPI/SDIO控制器
1040‧‧‧顯示裝置
1045‧‧‧高畫質多媒體介面(HDMI)控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙資料速率(DDR)控制器
1065‧‧‧安全引擎
1070‧‧‧I2S/I2C介面
1110‧‧‧硬體或軟體模型
1120‧‧‧模擬軟體
1130‧‧‧儲存器
1150‧‧‧有線連接
1160‧‧‧無線連接
1205‧‧‧程式
1210‧‧‧仿真邏輯
1215‧‧‧處理器
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進位碼
1308‧‧‧替代性指令集編譯器
1310‧‧‧替代性指令集二進位碼
1312‧‧‧指令轉換器
1401,1402,1404,1405,1406‧‧‧設備
1403‧‧‧處理區塊
1410‧‧‧第一來源資料運算元
1412,1414,1432,1434‧‧‧多工器
1420‧‧‧第二來源資料運算元
1430,1452‧‧‧立即運算元
1431,1437‧‧‧XOR電路
1433‧‧‧τ
1435‧‧‧T
1436‧‧‧T'
1440,1450‧‧‧結果元件
1451‧‧‧運算元選擇控制
1453‧‧‧旁通
1455‧‧‧控制區塊
1457‧‧‧元件選擇控制
1440,1450,1460,1470,1480‧‧‧結果元件
1490‧‧‧SIMD暫存器
1501,1502,1503,1601,1602,1603‧‧‧處理
1513,1523,1531,1532,1533,1536,1537,1538,1541, 1542,1561,1562,1563,1571,1572,1573,1581,1582,1583,1591,1592,1593,1610,1620,1630,1632,1640,1650,1660,1670,1680,1682,1690,1699‧‧‧處理區塊
在伴隨圖式之諸圖中以範例而非限制之方式示出本發明。
圖1A為執行用以提供SIMD SM4加密區塊密碼功能之指令的系統之一實施例的方塊圖。
圖1B為執行用以提供SIMD SM4加密區塊密碼功能之指令的系統之另一實施例的方塊圖。
圖1C為執行用以提供SIMD SM4加密區塊密碼功能之指令的系統之另一實施例的方塊圖。
圖2為執行用以提供SIMD SM4加密區塊密碼功能之指令的處理器之一實施例的方塊圖。
圖3A根據一實施示出緊縮資料類型。
圖3B根據一實施示出緊縮資料類型。
圖3C根據一實施示出緊縮資料類型。
圖3D根據一實施示出用以提供SIMD SM4加密區塊密碼功能之指令編碼。
圖3E根據另一實施示出用以提供SIMD SM4加密區塊密碼功能之指令編碼。
圖3F根據另一實施示出用以提供SIMD SM4加密區塊密碼功能之指令編碼。
圖3G根據另一實施示出用以提供SIMD SM4加密區塊密碼功能之指令編碼。
圖3H根據另一實施示出用以提供SIMD SM4加密區塊密碼功能之指令編碼。
圖4A示出用以執行提供SIMD SM4加密區塊密碼功能之指令的處理器微型架構之一實施例之元件。
圖4B示出用以執行提供SIMD SM4加密區塊密碼功能之指令的處理器微型架構之另一實施例之元件。
圖5為用以執行提供SIMD SM4加密區塊密碼功能之指令的處理器之一實施例的方塊圖。
圖6為用以執行提供SIMD SM4加密區塊密碼功能之指令的電腦系統之一實施例的方塊圖。
圖7為用以執行提供SIMD SM4加密區塊密碼功能之指令的電腦系統之另一實施例的方塊圖。
圖8為用以執行提供SIMD SM4加密區塊密碼功能之指令的電腦系統之另一實施例的方塊圖。
圖9為用以執行提供SIMD SM4加密區塊密碼功能之指令的單晶片系統之一實施例的方塊圖。
圖10為用以執行提供SIMD SM4加密區塊密碼功能之指令的處理器之一實施例的方塊圖。
圖11為提供SIMD SM4加密區塊密碼功能之IP核心開發系統之一實施例的方塊圖。
圖12示出提供SIMD SM4加密區塊密碼功能之架構仿真系統的一實施例。
圖13示出用以轉譯提供SIMD SM4加密區塊密碼功能之指令的系統之一實施例。
圖14A示出用於執行用以提供SIMD SM4加密區塊密碼功能的指令的設備之一實施例的圖。
圖14B示出用於執行用以提供SIMD SM4加密區塊密碼功能的指令的設備之替代實施例的圖。
圖14C示出用於執行用以提供SIMD SM4加密區塊密碼功能的指令的設備之另一替代實施例的圖。
圖15A示出用於一處理的實施例之流程圖,其中處理為執行用以提供加密區塊密碼功能之SIMD SM4的回合片段的指令。
圖15B示出用於一處理的替代實施例之流程圖,其中處理為執行用以提供加密區塊密碼功能之SIMD SM4的回合片段的指令。
圖15C示出用於一處理的另一替代實施例之流程圖,其中處理為執行用以提供加密區塊密碼功能之SIMD SM4的回合片段的指令。
圖16A示出用於一處理的實施例之流程圖,其中處理為使用用以提供加密區塊密碼功能之SIMD SM4的回合片段的指令有效地實施SM4加密區塊密碼。
圖16B示出用於一處理的替代實施例之流程圖,其中處理為使用用以提供加密區塊密碼功能之SIMD SM4的回合片段的指令有效地實施SM4加密區塊密碼。
【發明內容及實施方式】
下面敘述揭露提供用於單一指令重資料(SIMD)SM4回合片段操作之指令和邏輯。指令的實施例指定第一和第二來源資料運算元組以及取代功能指標, 例如,在一立即運算元中。處理器之實施例可包括加密單元,回應於第一指令以:在具有來自回應於指示第一取代功能之取代功能指標的第二來源資料運算元組之相應的金鑰的第一來源資料運算元組的一部分上執行SM4回合交換之片段、使用具有來自回應於指示第二取代功能之取代功能指標的第二來源資料運算元組之相應的常數之第一來源資料運算元組的另一部分執行SM4金鑰產生之片段、以及儲存第一指令之結果元件組在SIMD目的暫存器。
應該理解的是透過相同SIMD指令執行SM4回合交換之片段及SM4金鑰產生之片段兩者,加密或解碼可以以在小緩衝器(例如,256位元)中的金鑰擴展而同時處理。在一些實施例中,片段可包含四回合之SM4回合交換及四回合之SM4金鑰產生。對於此種實施例,三十二回合之SM4回合交換及SM4金鑰產生可使用八(或九)個SM4回合片段操作被執行。在一些實施例中,每一256位元資料路徑或512為來源資料路徑之128位元通道可基於在指定特定取代功能(例如,T或T’,或者L或L’)的指令之立即運算元中之相應的值,被選擇用於處理SM4回合交換或用於處理SM4金鑰產生之片段。在一些替代實施例中,用於處理SM4回合交換之片段及用於處理SM4金鑰產生之片段可預先確定和/或固定。在一些實施例中,片段可藉由微指令(或微-ops或u-ops)實施且結果可從一個微指令旁通至下一個微指令。在一些替代實施例中,片段可藉由在硬體中的邏輯多層 (例如,二、或四、或八)、或者藉由微指令和硬體中的邏輯多層的結合實施。在一些實施例中,藉由在指令之立即運算元中的值指定之片段可包含數個SM4回合交換和SM4金鑰產生之回合(例如,一、二、四、八、十六、或三十二)。在一些替代實施例中,片段中的回合數可由指令存儲器(mnemonic)和/或及(and)操作加密(或操作碼(opcode))指定。
在以下描述中,闡述了諸如處理邏輯、處理器類型、微型架構條件、事件、賦能機構等之許多特定細節,以便提供對本發明之實施例的更徹底理解。然而,熟悉此項技術者將瞭解的是,可在無此類特定細節的情況下實踐本發明。另外,一些熟知的結構、電路等並未詳細地顯示以避免不必要地使本發明之實施例模糊。
儘管以下實施例參考處理器予以描述,但是其他實施例適用於其他類型之積體電路及邏輯裝置。本發明之實施例的類似技術及教示可應用於可受益於較高管線通量及改良的效能之其他類型之電路或半導體裝置。本發明之實施例的教示適用於執行資料調處之任何處理器或機器。然而,本發明不限於執行512位元、256位元、128位元、64位元、32位元或16位元資料運算之處理器或機器,且可應用於執行資料之調處或管理之任何處理器及機器。另外,以下描述提供範例,且伴隨圖式顯示出各種範例以用於圖解之目的。然而,不應以限制性意義來理解此等範例,因為該等範例僅意欲提供本發明之實施例的範例 而非提供本發明之實施例的所有可能實行方案之詳盡清單。
儘管以下範例描述在執行單元及邏輯電路之上下文中的指令處置及分佈,但是本發明之其他實施例可藉由儲存在機器可讀的有形媒體上之資料和/或指令實現,該等資料和/或指令在由機器執行時使機器執行與本發明之至少一實施例一致的功能。在一實施例中,與本發明之實施例相關聯的功能體現於機器可執行指令中。指令可用來使以指令程式設計的通用處理器或專用處理器執行本發明之步驟。本發明之實施例可提供為電腦程式產品或軟體,該電腦程式產品或軟體可包括上面儲存有指令的機器可讀媒體或電腦可讀媒體,該等指令可用來程式設計電腦(或其他電子裝置)以根據本發明之實施例的一或多個運算執行。或者,可藉由含有用於執行步驟之固定功能邏輯的特殊硬體部件,或藉由程式設計的電腦部件及固定功能硬體部件之任何組合來執行本發明之實施例的步驟。
用來程式設計用以執行本發明之實施例的邏輯的指令可儲存在系統中之記憶體內,該記憶體諸如DRAM、快取記憶體、快閃記憶體或其他儲存器。此外,可經由網路或藉由其他電腦可讀媒體分佈指令。因此,機器可讀媒體可包括用於以可由機器(例如,電腦)讀取的形式儲存或傳輸資訊之任何機構,但是不限於軟碟片、光碟、光碟片唯讀記憶體(CD-ROM)及磁光碟片、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可規劃唯讀記 憶體(EPROM)、電氣可抹除可規劃唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體,或在網際網路上經由電信號、光信號、聲信號或其他形式之傳播信號(例如,載波、紅外信號、數位信號等)進行的資訊傳輸中使用的有形的機器可讀儲存器。因此,電腦可讀媒體包括適合於以可由機器(例如,電腦)讀取的形式儲存或傳輸電子指令或資訊的任何類型之有形的機器可讀媒體。
設計可經歷各種階段,自創造至模擬至製造。表示設計的資料可以許多方式來表示設計。首先,如用於模擬中的,硬體可使用硬體描述語言或另一功能描述語言來表示。另外,可在設計過程之一些階段處產生具有邏輯閘和/或電晶體閘之電路層模型。此外,大多數設計在一些階段處達到表示各種裝置在硬體模型中之實體置放的資料層。在使用習知半導體製造技術的情況下,表示硬體模型之資料可為指定用來產生積體電路之遮罩的不同遮罩層上之各種特徵之存在或不存在的資料。在設計之任何表示中,資料可以機器可讀媒體之任何形式儲存。諸如碟片之記憶體或磁儲存器或光儲存器可為用以儲存資訊的機器可讀媒體,該資訊係經由經調變或以其他方式產生來傳輸此類資訊之光波或電波傳輸。當傳輸指示或攜帶碼或設計的電載波時,在執行電信號之複製、緩衝或重新傳輸的程度上,製作新複本。因此,通訊提供者或網路提供者可將實施本發明之實施例之技術的製品(諸如編碼成載波之資訊)至少暫時地儲存在有形的機器可讀媒體上。
在現代處理器中,許多不同的執行單元用來處理且執行各種碼及指令。並非所有指令經創造為相同的,因為一些完成得較快,而其他的可花費許多時鐘週期來完成。指令之通量愈快,處理器之整體效能愈好。因此,使盡可能多的指令盡可能快地執行將為有利的。然而,存在具有較大複雜性且在執行時間及處理器資源方面需要得更多的某些指令。例如,存在浮點指令、載入/儲存運算、資料移動等。
因為更多的電腦系統使用於網際網路、本文及多媒體應用中,所以隨著時間推移已引入額外的處理器支援。在一實施例中,指令集可與一或多個電腦架構相關聯,該一或多個電腦架構包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置,以及外部輸入及輸出(I/O)。
在一實施例中,指令集架構(ISA)可由一或多個微型架構來實行,該一或多個微型架構包括用來實行一或多個指令集之處理器邏輯及電路。因此,具有不同微型架構之處理器可共享共用指令集之至少一部分。例如,Intel® Pentium 4處理器、Intel® Core TM處理器及來自Advanced Micro Devices公司(Sunnyvale CA)的處理器實行x86指令集(以及一些擴展,較新版本已新增該等擴展)之幾乎相同的版本,但具有不同內部設計。類似地,由諸如ARM Holdings公司、MIPS或上述兩者之被授權人或接受者的其他處理器開發公司設計的處理器可共享共用指令 集之至少一部分,但可包括不同處理器設計。例如,ISA之相同暫存器架構可使用新技術或熟知技術以不同方式實行於不同微型架構中,其中包括專用實體暫存器、使用暫存器重新命名機構(例如,暫存器別名表(RAT)、重新排序緩衝器(ROB)及引退(retirement)暫存器檔案之使用)的一或多個動態分配的實體暫存器。在一實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案或其他暫存器集合,該等其他暫存器集合可能可由軟體程式設計師尋址或可能不可由該軟體程式設計師尋址。
在一實施例中,指令可包括一或多個指令格式。在一實施例中,指令格式可指示各種欄位(位元之數目、位元之位置等)以尤其指定將要執行的運算及運算元,將要對該運算元執行該運算。一些指令格式可由指令模板(或子格式)之進一步分解定義。例如,給定指令格式之指令模板可經定義成具有指令格式的欄位之不同子集且/或定義成具有不同地解譯的給定欄位。在一實施例中,指令係使用指令格式(且,若經定義,則以該指令格式之指令模板中之一給定指令模板)來表達,且指定或指示運算及運算元,該運算將對該等運算元進行操作。
科學、金融、自向量化一般目的、RMS(識別、挖掘及合成),以及視覺及多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音識別演算法及音訊調處)可需要相同運算對大量資料項執行。在一實施例中,單指令多資料(SIMD)代表使處理器對多個資料元件 執行運算的指令類型。SIMD技術可用於可將暫存器中之位元劃分為許多固定大小或可變大小的資料元件的處理器中,該等資料元件中每一個表示單獨的值。例如,在一實施例中,64位元暫存器中之位元可經組織為含有四個單獨的16位元資料元件之來源運算元,該四個單獨的16位元資料元件中每一個表示單獨的16位元值。此類型之資料可被稱為「緊縮」資料類型或「向量」資料類型,且此資料類型之運算元被稱為緊縮資料運算元或向量運算元。在一實施例中,緊縮資料項或向量可為儲存在單個暫存器內之緊縮資料元件之序列,且緊縮資料運算元或向量運算元可為SIMD指令(或「緊縮資料指令」或「向量指令」)之來源運算元或目的運算元。在一實施例中,SIMD指令指定單個向量運算將要對兩個來源向量運算元執行,以產生相同大小或不同大小之目的向量運算元(亦被認為結果向量運算元),該目的向量運算元具有相同或不同數目的資料元件,且以相同資料元件順序或不同資料元件順序。
SIMD技術已賦能於應用效能之顯著改良,該SIMD技術諸如由具有包括x86、MMX TM、串流SIMD擴展(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令之指令集的Intel® Core TM處理器、ARM處理器(諸如具有包括向量浮點(VFP)和/或NEON指令之指令集的ARM Cortex®族處理器)及MIPS處理器(諸如由中國科學院計算技術研究所(ICT)開發的Loongson族處理器)使用之SIMD技術(Core TM及MMX TM為Intel公司(Santa Clara,Calif.)的 註冊商標或商標)。
在一實施例中,目的暫存器及來源暫存器/資料為用以表示對應的資料或運算之來源或目的之通用術語。在一些實施例中,該等目的暫存器及來源暫存器/資料可由暫存器、記憶體或其他儲存區來實行,該等其他儲存區具有不同於所描繪的該等名稱或功能之名稱或功能。例如,在一實施例中,「DEST1」可為暫時儲存暫存器或其他儲存區,而「SRC1」及「SRC2」可為第一來源儲存暫存器及第二來源儲存暫存器,等等。在其他實施例中,SRC及DEST儲存區中之兩個或兩個以上可對應於相同儲存區(例如,SIMD暫存器)內之不同資料儲存元件。在一實施例中,來源暫存器之一可藉由例如將對第一來來源資料及第二來來源資料執行的運算之結果寫回充當目的暫存器的兩個來源暫存器之一亦充當目的暫存器。
圖1A為使用處理器形成之示範性電腦系統的方塊圖,該處理器包括用以根據本發明之一實施例的指令執行之執行單元。系統100包括諸如處理器102之部件,以使用包括根據本發明之邏輯的執行單元來執行諸如本文所述之實施例中的程序資料之演算法。系統100表示基於可得自Intel公司(Santa Clara,California)的PENTIUM® III、PENTIUM® 4、Xeon TM、Itanium®、XScale TM和/或StrongARM TM微處理器之處理系統,然而可亦使用其他系統(包括具有其他微處理器、工程工作站、機上盒(set-top box)等之PC)。在一實施例中,取樣系統100可 執行可得自Microsoft公司(Redmond,Washington)的WINDOWS TM作業系統之一版本,然而可亦使用其他作業系統(例如UNIX及Linux)、嵌入式軟體和/或圖形使用者介面。因此,本發明之實施例不限於硬體電路及軟體之任何特定組合。
實施例不限於電腦系統。本發明之替代性實施例可使用於諸如手持裝置及嵌入式應用之其他裝置中。手持裝置之一些範例包括行動電話、網際網路協定裝置、數位相機、個人數位助理(PDA)及手持PC。嵌入式應用可包括微控制器、數位信號處理器(DSP)、單晶片系統、網路電腦(NetPC)、機上盒、網路集線器(network hub)、廣域網路(WAN)交換器(switch)或可根據至少一實施例之一或多個指令執行的任何其他系統。
圖1A為使用處理器102形成之電腦系統100的方塊圖,該處理器包括用以執行演算法以根據本發明之一實施例執行的至少一指令之一或多個執行單元108。一實施例可描述於單處理器桌面或伺服器系統之上下文中,但替代性實施例可包括於多處理器系統中。系統100為「集線器」系統架構之一範例。電腦系統100包括用以處理資料信號之處理器102。處理器102可為複雜指令集電腦(CISC)微處理器、精簡指令集計算(RISC)微處理器、極長指令字元(VLIW)微處理器、實行指令集之組合的處理器,或任何其他處理器裝置,諸如例如數位信號處理器。處理器102耦接至處理器匯流排110,該處理器匯流排可 在處理器102與系統100中之其他部件之間傳輸資料信號。系統100之元件執行熟習此項技術者熟知的該等元件之習知功能。
在一實施例中,處理器102包括1階(L1)內部快取記憶體104。取決於架構,處理器102可具有單個內部快取記憶體或多階內部快取記憶體。或者,在另一實施例中,快取記憶體可存在於處理器102外部。其他實施例可取決於特定實行方案及需求而亦包括內部快取記憶體及外部快取記憶體兩者之組合。暫存器檔案106可將不同類型之資料儲存於各種暫存器中,該等各種暫存器包括整數暫存器、浮點暫存器、狀態暫存器及指令指標暫存器。
包括用以執行整數運算及浮點運算之邏輯的執行單元108亦存在於處理器102中。處理器102亦包括微碼(ucode)ROM,該微碼ROM儲存用於某些巨集指令之微碼。對於一實施例,執行單元108包括用以處置緊縮指令集109之邏輯。藉由在通用處理器102之指令集中包括緊縮指令集109,連同執行該等指令之關聯電路,由許多多媒體應用使用之操作可使用通用處理器102中之緊縮資料而被執行。因此,許多多媒體應用可藉由使用處理器之資料匯流排之全寬度來對緊縮資料執行運算而更有效地加速且執行。此舉可消除如下的需要:對越過處理器之資料匯流排傳送資料之較小單元以每次一個資料元件執行一或多次運算。
執行單元108之替代性實施例可亦使用於微 控制器、嵌入式處理器、圖形裝置、DSP及其他類型之邏輯電路中。系統100包括記憶體120。記憶體120可為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置或其他記憶體裝置。記憶體120可儲存由資料信號表示的指令和/或資料,該等資料信號可由處理器102執行。
系統邏輯晶片116耦接至處理器匯流排110及記憶體120。示出的實施例中之系統邏輯晶片116為記憶體控制器集線器(MCH)。處理器102可經由處理器匯流排110傳達至MCH 116。MCH 116提供通向記憶體120之高頻寬記憶體路徑118,以用於指令及資料儲存且用於圖形命令、資料及紋理之儲存。MCH 116用以在處理器102、記憶體120與系統100中之其他部件之間導引資料信號,且用以在處理器匯流排110、記憶體120與系統I/O 122之間橋接資料信號。在一些實施例中,系統邏輯晶片116可提供用於耦接至圖形控制器112的圖形埠。MCH 116經由記憶體介面118耦接至記憶體120。圖形卡112經由加速圖形埠(AGP)互連114耦接至MCH 116。
系統100使用專屬集線器介面匯流排122來將MCH 116耦接至I/O控制器集線器(ICH)130。ICH 130經由區域I/O匯流排提供至一些I/O裝置的直接連接。區域I/O匯流排為用於將周邊設備連接至記憶體120、晶片組及處理器102之高速I/O匯流排。一些範例為音訊控制器、韌體集線器(快閃BIOS)128、無線收發機126、資料 儲存器124、含有使用者輸入及鍵盤介面之舊式I/O控制器、諸如通用串列匯流排(USB)之串列擴充埠,及網路控制器134。資料儲存裝置124可包含硬碟片驅動機、軟碟片驅動機、CD-ROM裝置、快閃記憶體裝置或其他大量儲存裝置。
對於系統之另一實施例,根據一實施例之指令可與單晶片系統一起使用。單晶片系統之一實施例由處理器及記憶體組成。用於一個此類系統之記憶體為快閃記憶體。快閃記憶體可位於與處理器及其他系統部件相同的晶粒上。另外,諸如記憶體控制器或圖形控制器之其他邏輯區塊可亦位於單晶片系統上。
圖1B示出實行本發明之一實施例之原理的資料處理系統140。熟習此項技術者將易於瞭解的是,本文所述之實施例可在不脫離本發明之實施例之範疇的情況下與替代性處理系統一起使用。
電腦系統140包含處理核心159,該處理核心能夠根據一實施例執行至少一指令。對於一實施例,處理核心159表示任何類型之架構之處理單元,該任何類型之架構包括但不限於CISC類型架構、RISC類型架構或VLIW類型架構。處理核心159可亦適合於一或多個製程技術中的製造,且藉由被足夠詳細地表示在機器可讀媒體上,可適合於促進該製造。
處理核心159包含執行單元142、暫存器檔案145之集合及解碼器144。處理核心159亦包括額外電路 (未顯示),該額外電路並非理解本發明之實施例所必需的。執行單元142用於執行由處理核心159接收之指令。除執行典型的處理器指令之外,執行單元142可執行緊縮指令集143中之指令,以用於對緊縮資料格式執行運算。緊縮指令集143包括用於執行本發明之實施例的指令及其他緊縮指令。執行單元142藉由內部匯流排耦接至暫存器檔案145。暫存器檔案145表示處理核心159上用於儲存資訊(包括資料)的儲存區。如先前所提及,將理解的是,用於儲存緊縮資料之儲存區並非關鍵的。執行單元142耦接至解碼器144。解碼器144用於將由處理核心159接收之指令解碼為控件信號和/或微碼入口點。回應於此等控件信號和/或微碼入口點,執行單元142執行適當的運算。在一實施例中,解碼器用來解譯指令之操作碼(opcode),該操作碼將指示應對該指令內指示的對應資料執行何運算。
處理核心159與匯流排141耦接以用於與各種其他系統裝置通訊,該等各種其他系統裝置可包括但不限於例如同步動態隨機存取記憶體(SDRAM)控制146、靜態隨機存取記憶體(SRAM)控制147、叢發快閃記憶體介面148、個人電腦記憶卡國際協會(PCMCIA)/緊密快閃(CF)卡控制149、液晶顯示器(LCD)控制150、直接記憶體存取(DMA)控制器151及替代性匯流排主控介面152。在一實施例中,資料處理系統140可亦包含用於經由I/O匯流排153與各種I/O裝置通訊的I/O橋接器154。此類I/O裝置 可包括但不限於例如通用異步接收器/發射器(UART)155、通用串列匯流排(USB)156、藍牙無線UART 157及I/O擴充介面158。
資料處理系統140之一實施例提供行動通訊、網路通訊和/或無線通訊以及能夠執行包括正文字串比較運算之SIMD運算的處理核心159。處理核心159可使用各種音訊、視訊、圖像及通訊演算法來程式設計,該等演算法包括:不連續變換,諸如華須-哈德瑪(Walsh-Hadamard)變換、快速傅立葉(Fourier)變換(FFT)、離散餘弦變換(DCT)及上述各者的個別逆變換;壓縮/解壓技術,諸如色空間變換、視訊編碼運動估計或視訊解碼運動補償;以及調變/解調(MODEM)功能,諸如脈碼調變(PCM)。
圖1C示出能夠執行用以提供SIMD SM4加密區塊密碼功能之指令的資料處理系統之另一替代性實施例。根據一替代性實施例,資料處理系統160可包括主處理器166、SIMD共處理器161、快取記憶體167及輸入/輸出系統168。輸入/輸出系統168可選擇性地耦接至無線介面169。SIMD共處理器161能夠執行包括根據一實施例之指令的運算。處理核心170可適合於在一或多個處理技術中之製造,且藉由被足夠詳細地表示在機器可讀媒體上,可適合於促進包括處理核心170的資料處理系統160之全部或部分之製造。
對於一實施例,SIMD共處理器161包含執行 單元162及暫存器檔案164之集合。主處理器166之一實施例包含解碼器165以辨識包括根據一實施例之指令的指令集163之指令,以用於由執行單元162執行。對於替代性實施例,SIMD共處理器161亦包含解碼器165B之至少部分以解碼指令集163之指令。處理核心170亦包括額外電路(未顯示),該額外電路並非理解本發明之實施例所必需的。
在運算中,主處理器166執行資料處理指令之串流,該等資料處理指令控制一般類型之資料處理運算,該等資料處理運算包括與快取記憶體167及輸入/輸出系統168的互動。嵌入資料處理指令之串流內的是SIMD共處理器指令。主處理器166之解碼器165將此等SIMD共處理器指令辨識為具有應由附接SIMD共處理器161執行的類型。因此,主處理器166將此等SIMD共處理器指令(或表示SIMD共處理器指令之控件信號)發佈於共處理器匯流排171上,該等SIMD共處理器指令由任何附接SIMD共處理器自該共處理器匯流排接收。在此狀況下,SIMD共處理器161將接受且執行預定給該SIMD共處理器之任何接收的SIMD共處理器指令。
資料可經由無線介面169接收,以用於由SIMD共處理器指令處理。對於一範例,語音通訊可以數位信號之形式被接收,該數位信號可由SIMD共處理器指令處理來重新產生表示語音通訊之數位音訊樣本。對於另一範例,壓縮音訊和/或視訊可以數位位元串流之形式被 接收,該數位位元串流可由SIMI)共處理器指令處理來重新產生數位音訊樣本和/或運動視訊訊框。對於處理核心170之一實施例,主處理器166及SIMD共處理器161整合至單個處理核心170中,該單個處理核心170包含執行單元162、暫存器檔案164之集合及解碼器165,以辨識包括根據一實施例之指令的指令集163之指令。
圖2為用於處理器200之微型架構的方塊圖,該處理器包括用以根據本發明之一實施例執行的指令之邏輯電路。在一些實施例中,可根據一實施例實行指令以對資料元件進行操作,該等資料元件具有位元組、字元、雙字元、四倍字元等之大小以及諸如單倍及雙倍精度整數及浮點資料型式之資料型式。在一實施例中,循序前端201為處理器200之部分,該循序前端擷取將要執行之指令且使該等指令準備稍後用於處理器管線中。前端201可包括若干單元。在一實施例中,指令預擷取器226自記憶體擷取指令,且將該等指令饋送至指令解碼器228,該指令解碼器又解碼或解譯該等指令。例如,在一實施例中,解碼器將接收的指令解碼為機器可執行的稱為「微指令」或「微運算」(亦稱為micro op或uop)的一或多個運算。在其他實施例中,解碼器將指令剖析為操作碼及對應的資料以及控制欄位,該操作碼及對應的資料以及控制欄位由微型架構用來執行根據一實施例之運算。在一實施例中,追蹤快取記憶體230取得解碼後uop且將該等解碼後uop組合成uop隊列234中之程式有序序列或追蹤,以用 於執行。當追蹤快取記憶體230遭遇複雜指令時,微碼ROM 232提供完成運算所需之uop。
一些指令經轉換為單個micro-op,而其他指令需要若干micro-op來完成全部運算。在一實施例中,若需要多於四個micro-op來完成指令,則解碼器228存取微碼ROM 232以執行指令。對於一實施例,指令可經解碼為少量micro op,以用於在指令解碼器228處處理。在另一實施例中,指令可儲存在微碼ROM 232內,應需要許多micro-op來實現運算。追蹤快取記憶體230代表入口點可規劃邏輯陣列(PLA),以確定用於自微碼ROM 232讀取用以完成根據一實施例之一或多個指令之微碼序列的正確微指令指標。在微碼ROM 232完成對指令之micro-op定序之後,機器之前端201恢復自追蹤快取記憶體230擷取micro-op。
亂序執行引擎203為指令為執行做準備的所在之處。亂序執行邏輯具有許多緩衝器以平滑並重新排序微指令流,以在該等微指令流過管線且經排程以用於執行時最佳化效能。分配器邏輯分配每一uop需要的機器緩衝器及資源以便執行。暫存器重新命名邏輯將邏輯暫存器重新命名至暫存器檔案中之入口上。分配器亦在指令排程器:記憶體排程器、快速排程器202、緩慢/一般浮點排程器204及簡單浮點排程器206前方為兩個uop隊列(一個用於記憶體運算且一個用於非記憶體運算)中之一個中的每一uop分配一入口。uop排程器202、204、206基於其 相依輸入暫存器運算元來源之就緒狀態及uop需要以完成該等uop之運算的執行資源之可利用性來決定uop何時準備好執行。一實施例之快速排程器202可在主時鐘週期之每一半上排程,而其他排程器可每主處理器時鐘週期僅排程一次。排程器為分派埠仲裁以排程uop用於執行。
暫存器檔案208、210位於排程器202、204、206與執行區塊211中之執行單元212、214、216、218、220、222、224之間。分別存在用於整數運算及浮點運算之單獨的暫存器檔案208、210。一實施例之每一暫存器檔案208、210亦包括旁通網路,該旁通網路可將尚未寫入暫存器檔案中之剛剛完成的結果旁通或轉送至新的相依uop。整數暫存器檔案208及浮點暫存器檔案210亦能夠與另一者通訊資料。對於一實施例,將整數暫存器檔案208分為兩個單獨的暫存器檔案,一個暫存器檔案用於低次32個位元之資料且第二暫存器檔案用於高次32個位元之資料。一實施例之浮點暫存器檔案210具有128位元寬的入口,因為浮點指令通常具有寬度自64個位元至128個位元之運算元。
執行區塊211含有執行單元212、214、216、218、220、222、224,指令實際上在該等執行單元中執行。此部分包括暫存器檔案208、210,該等暫存器檔案儲存整數及浮點資料運算元值,微指令需要該等整數及浮點資料運算元值來執行。一實施例之處理器200由以下許多執行單元組成:位址產生單元(AGU)212、AGU 214、快 速ALU 216、快速ALU 218、緩慢ALU 220、浮點ALU 222、浮點移動單元224。對於一實施例,浮點執行區塊222、224執行浮點運算、MMX運算、SIMD運算及SSE運算,或其他運算。一實施例之浮點ALU 222包括64位元乘64位元浮點除法器,以執行除法、平方根及餘數micro-op。對於本發明之實施例,可使用浮點硬體來處置涉及浮點值的指令。在一實施例中,ALU運算轉至高速ALU執行單元216、218。一實施例之快速ALU 216、218可在半個時鐘週期之有效潛伏的情況下快速地執行運算。對於一實施例,最複雜的整數運算轉至緩慢ALU 220,因為緩慢ALU 220包括用於長潛伏類型的運算之整數執行硬體,諸如乘法器、移位、旗標邏輯及分支處理。記憶體載入/儲存運算係由AGU 212、214執行。對於一實施例,整數ALU 216、218、220描述於對64位元資料運算元執行整數運算的上下文中。在替代性實施例中,可實行ALU 216、218、220以支援包括16位元、32位元、128位元、256位元等之各種資料位元。類似地,可實行浮點單元222、224以支援具有各種寬度之位元的運算元之範圍。對於一實施例,浮點單元222、224可結合SIMD及多媒體指令對128個位元寬的緊縮資料運算元進行操作。
在一實施例中,uop排程器202、204、206在父載入已完成執行之前分派相依運算。因為uop在處理器200中被臆測性地排程且執行,所以處理器200亦包括用以處置記憶體未中之邏輯。若資料載入在資料快取記憶體 中遺漏,則在管線中可存相依運算處於飛行中,該等相依運算已在具有暫時不正確的資料的情況下離開排程器。重播機構追蹤且重新執行使用不正確資料的指令。僅相依運算需要被重播,且允許獨立運算完成。處理器之一實施例的排程器及重播機構亦經設計來擷取提供SIMD SM4加密區塊密碼功能之指令。
「暫存器」一詞可代表用作識別運算元的指令之部分的機載處理器儲存位置。換言之,暫存器可為自處理器之外部(自程式設計師的視角)可使用的該等處理器儲存位置。然而,一實施例之暫存器在意義上不應限於特定類型之電路。實情為,一實施例之暫存器能夠儲存且提供資料,並且執行本文所述之功能。可使用許多不同的技術由處理器內之電路來實行本文所述之暫存器,諸如專用實體暫存器、使用暫存器重新命名之動態分配實體暫存器、專用實體暫存器及動態分配實體暫存器之組合等。在一實施例中,整數暫存器儲存三十二位元整數資料。一實施例之暫存器檔案亦含有用於緊縮資料之八個多媒體SIMD暫存器。對於以下論述,暫存器係理解為經設計來保存緊縮資料之資料暫存器,諸如以來自Intel公司(Santa Clara,California)的MMX技術賦能之微處理器中之64個位元寬的MMXTM暫存器(在一情況下亦稱為「mm」暫存器)。可以整數及浮點形式兩者利用的此等MMX暫存器可使用伴隨SIMD及SSE指令的緊縮資料元件來進行操作。類似地,與SSE2、SSE3、SSE4或之外的(屬類地被稱為 「SSEx」)技術有關的128個位元寬的XMM暫存器亦可用來保存此類緊縮資料運算元。在一實施例中,在儲存緊縮資料及整數資料中,暫存器不需要區分兩個資料類型。在一實施例中,整數及浮點含於相同暫存器檔案或不同暫存器檔案中。此外,在一實施例中,浮點及整數資料可儲存於不同暫存器或相同暫存器中。
在以下諸圖之範例中,描述許多資料運算元。圖3A例示根據本發明之一實施示出的多媒體暫存器中之各種緊縮資料類型表示。圖3A示出用於128個位元寬的運算元之緊縮位元組310、緊縮字元320及緊縮雙字元(dword)330的資料類型。此範例之緊縮位元組格式310為128個位元長,且含有十六個緊縮位元組資料元件。位元組在此係定義為8個位元之資料。用於每一位元組資料元件之資訊係儲存於位元7至位元0中供位元組0用、儲存於位元15至位元8中供位元組1用、儲存於位元23至位元16中供位元組2用,以及最後儲存於位元120至位元127中供位元組15用。因此,所有可利用的位元在暫存器中皆被使用。此儲存佈置提高處理器之儲存效率。又,在存取十六個資料元件的情況下,現可並行地對十六個資料元件執行一運算。
大體而言,資料元件為單獨資料件,其與具有相同長度之其他資料元件一起儲存於單個暫存器或記憶體位置中。在與SSEx技術有關的一些緊縮資料序列中,儲存於XMM暫存器中之資料元件之數目為128個位元除 以獨立資料元件之位元的長度。類似地,在與MMX及SSE技術有關的緊縮資料序列中,儲存於MMX暫存器中之資料元件之數目為64個位元除以獨立資料元件之位元的長度。儘管圖3A中示出之資料類型為128位元長,但是本發明之實施例亦可使用64位元寬、256位元寬、512位元寬或其他大小的運算元進行操作。此範例之緊縮字元格式320為128個位元長,且含有八個緊縮字元資料元件。每一緊縮字元皆含有十六個位元之資訊。圖3A之緊縮雙字元格式330為128個位元長,且含有四個緊縮雙字元資料元件。每一緊縮雙字元資料元件皆含有三十二個位元之資訊。緊縮四倍字元為128個位元長,且含有兩個緊縮四倍字元資料元件。
圖3B示出替代性暫存器內資料儲存格式。每一緊縮資料可包括多於一個獨立的資料元件。示出三個緊縮資料格式:緊縮一半(packed half)341、緊縮單(packed single)342及緊縮雙(packed double)343。緊縮一半341、緊縮單342及緊縮雙343之一實施例含有定點資料元件。對於一替代性實施例,緊縮一半341、緊縮單342及緊縮雙343中之一或多個可含有浮點資料元件。緊縮一半341之一替代性實施例為一百二十八個位元長,含有八個16位元資料元件。緊縮單342之一實施例為一百二十八個位元長,且含有四個32位元資料元件。緊縮雙343之一實施例為一百二十八個位元長,且含有兩個64位元資料元件。應該理解的是,此類緊縮資料格式可進一步擴充至其 他暫存器長度,例如,擴充至96位元、160位元、192位元、224位元、256位元、512位元或更長。
圖3C根據本發明之一實施示出多媒體暫存器中之各種有符號緊縮資料類型表示及無符號緊縮資料類型表示。無符號緊縮位元組表示344示出無符號緊縮位元組在SIMD暫存器中之儲存。用於每一位元組資料元件之資訊係儲存於位元七至位元零中供位元組零用、儲存於位元十五至位元八中供位元組一用、儲存於位元二十三至位元十六中供位元組二用等等,以及最終儲存於位元一百二十至位元一百二十七中供位元組十五用。因此,所有可利用的位元在暫存器中皆被使用。此儲存佈置可提高處理器之儲存效率。又,在存取十六個資料元件的情況下,現可以並行方式對十六個資料元件執行一運算。有符號緊縮位元組表示345示出有符號緊縮位元組之儲存。請注意,每一位元組資料元件之第八位元為有符號指示元。無符號緊縮字元表示346示出字元七至字元零如何儲存於SIMD暫存器中。有符號緊縮字元表示347類似於無符號緊縮字元暫存器內表示346。請注意,每一字元資料元件之第十六位元為正負號指示元。無符號緊縮雙字元表示348顯示出如何儲存雙字元資料元件。有符號緊縮雙字元表示349類似於無符號緊縮雙字元暫存器內表示348。請注意,必要的正負號位元為每一雙字元資料元件之第三十二位元。
圖3D為與在位於intel.com/products/processor/manuals/之全球資訊網(www)上可得自Intel公 司(Santa Clara,CA)的「Intel® 64 and IA-32 Intel Architecture Software Developer’s Manual Combined Volumes 2A and 2B:Instruction Set Reference A-Z」中所述的一類型操作碼格式一致的具有三十二個或三十二個以上位元的運算編碼(操作碼)格式360及暫存器/記憶體運算元尋址模式之一實施例的描繪。在一實施例中,指令可由欄位361及362中之一或多個編碼。可識別達到每指令兩個運算元位置,包括達到兩個來源運算元識別符364及365。對於一實施例,目的運算元識別符366與來源運算元識別符364相同,而在其他實施例中其為不同的。對於一替代性實施例,目的運算元識別符366與來源運算元識別符365相同,而在其他實施例中其為不同的。在一實施例中,由來源運算元識別符364及365識別的來源運算元之一由指令之結果重寫,而在其他實施例中識別符364對應於來源暫存器元件且識別符365對應於目的暫存器元件。對於一實施例,運算元識別符364及365可用來識別32位元或64位元來源運算元及目的運算元。
圖3E為具有四十個或四十個以上位元之另一替代性運算編碼(操作碼)格式370的描繪。操作碼格式370與操作碼格式360一致,且包含選擇性前綴位元組378。根據一實施例之指令可由欄位378、371及372中之一或多個編碼。可由來源運算元識別符374及375且由前綴位元組378識別達每指令兩個運算元位置。對於一實施例,前綴位元組378可用來識別32位元或64位元來源運 算元及目的運算元。對於一實施例,目的運算元識別符376與來源運算元識別符374相同,而在其他實施例中其為不同的。對於一替代性實施例,目的運算元識別符376與來源運算元識別符375相同,而在其他實施例中其為不同的。在一實施例中,指令對由運算元識別符374及375識別之運算元中之一或多個進行操作,且由運算元識別符374及375識別之一或多個運算元由該指令之結果重寫,而在其他實施例中,由識別符374及375識別之運算元經寫入至另一暫存器中之另一資料元件。操作碼格式360及370允許部分由MOD欄位363及373且由選擇性比例變址基址(scale-index-base)及位移位元組指定的暫存器至暫存器、記憶體至暫存器、暫存器藉由記憶體、暫存器藉由暫存器、暫存器藉由立即、暫存器至記憶體尋址。
接下來轉至圖3F,在一些替代性實施例中,可經由共處理器資料處理(CDP)指令執行64位元(或128位元,或256位元,或512位元或更長)單指令多資料(SIMD)算術運算。運算編碼(操作碼)格式380描繪具有CDP操作碼欄位382及389之一個此類CDP指令。對於替代性實施例,可由欄位383、384、387及388中之一或多個編碼該類型CDP指令運算。可識別達每指令三個運算元位置,包括達兩個來源運算元識別符385及390以及一目的運算元識別符386。共處理器之一實施例可對8位元、16位元、32位元及64位元值進行操作。對於一實施例,對整數資料元件執行指令。在一些實施例中,可有條 件地執行指令,使用條件欄位381。對於一些實施例,可由欄位383編碼來來源資料大小。在一些實施例中,可在SIMD欄位上進行零(Z)偵測、負(N)偵測、進位(C)偵測及溢位(V)偵測。對於一些指令,可由欄位384編碼飽和之類型。
接下來轉至圖3G,其為與在位於intel.com/products/processor/manuals/之全球資訊網(www)上可得自Intel公司(Santa Clara,CA)的「Intel® Advanced Vector Extensions Programming Reference」中所述的一類型操作碼格式一致的用以根據另一實施例提供SIMD SM4加密區塊密碼功能的另一替代操作加密(操作碼)格式397的描繪。
原始x86指令集提供具有含於額外位元組中之位址字節及立即運算元之各種格式的1位元組操作碼,該等額外位元組之存在係自第一「操作碼」位元組知悉。另外,存在保留為操作碼之修飾符(稱為前綴,因為其必須置放在指令之前)的某些位元組值。當256個操作碼位元組(包括此等特殊前綴值)之原始調色板耗盡時,將單個位元組專門用作256個操作碼之新集合的逸出。當增添向量指令(例如,SIMD)時,產生對更多操作碼之需要,且「二位元組」操作碼映射亦為不充分的,即使在藉由前綴之使用進行擴充時。為此,將新指令增添於額外映射中,該等額外映射使用2個位元組加上選擇性前綴作為識別符。
另外,為了促進64位元模式之額外暫存器,可在前綴與操作碼(及決定操作碼所必需的任何逸出位元組)之間使用額外前綴(稱為「REX」)。在一實施例中,REX可具有4個「酬載」位元,以指示64位元模式之額外暫存器的使用。在其他實施例中,REX可具有少於或多於4個位元。至少一指令集之一般格式(其通常與格式360和/或格式370一致)藉由以下格式屬類地示出:[prefixes][rex]escape[escape2]opcode modrm(等)
操作碼格式397與操作碼格式370一致,且包括選擇性VEX前綴位元組391(在一實施例中開始於C4十六進位),以替換大多數其他常用舊式指令前綴位元組及逸出碼。例如,以下示出使用兩個欄位來編碼指令之一實施例,當第二逸出碼存在於原始指令中時,或當需要REX欄位中之額外位元(例如,XB欄位及W欄位)以使用時,可使用該實施例。在以下示出之實施例,舊式逸出由新逸出值表示,舊式前綴完全經壓縮為「酬載」位元組之部分,舊式前綴經收回且可利用於未來擴展,第二逸出碼經壓縮於具有可利用的未來映射或特徵空間之「映射」欄位中,且增添新特徵(例如,增加的向量長度及額外來源暫存器說明符)。
根據一實施例之指令可由欄位391及392中之一或多個編碼。可由欄位391結合來源運算元識別符374及375且結合選擇性比例變址基址(SIB)識別符393、選擇性位移識別符394及選擇性立即位元組395識別達每指令四個運算元位置。對於一實施例,VEX前綴位元組391可用來識別32位元或64位元來源運算元及目的運算元和/或128位元或256位元SIMD暫存器或記憶體運算元。對於一實施例,由操作碼格式397提供之功能可為使用操作碼格式370之冗餘,而在其他實施例中其為不同的。操作碼格式370及397允許部分由MOD欄位373且由選擇性(SIB)識別符393、選擇性位移識別符394及選擇性立即位元組395指定的暫存器至暫存器、記憶體至暫存器、暫存器藉由記憶體、暫存器藉由暫存器、暫存器藉由立即、暫存器至記憶體尋址。
接下來轉至圖3H,其為用以根據另一實施例提供SIMD SM4加密區塊密碼功能之另一替代性運算編碼(操作碼)格式398的描繪。操作碼格式398與操作碼格式370及397一致,且包含選擇性EVEX前綴位元組396(在一實施例中開始於62十六進位),以替換大多數其他常用的舊式指令前綴位元組及逸出碼且提供額外功能。根據一實施例之指令可由欄位396及392中之一或多個編碼。可由欄位396結合來源運算元識別符374及375且結合選擇性比例變址基址(SIB)識別符393、選擇性位移識別符394及選擇性立即位元組395識別達每指令四個運算元位置及 一遮罩。對於一實施例,EVEX前綴位元組396可用來識別32位元或64位元來源運算元及目的運算元和/或128位元、256位元或512位元SIMD暫存器或記憶體運算元。對於一實施例,由操作碼格式398提供之功能可為使用操作碼格式370或397之冗餘,而在其他實施例中其為不同的。操作碼格式398允許部分由MOD欄位373且由選擇性(SIB)識別符393、選擇性位移識別符394及選擇性立即位元組395指定的在具有遮罩的情況下的暫存器至暫存器、記憶體至暫存器、暫存器藉由記憶體、暫存器藉由暫存器、暫存器藉由立即、暫存器至記憶體尋址。至少一指令集之一般格式(其通常與格式360和/或格式370一致)藉由以下格式屬類地示出:evex1 RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm]
對於一實施例,根據EVEX格式398編碼之指令可具有額外「酬載」位元,該等額外「酬載」位元可用來提供具有額外新特徵之SIMD SM4加密區塊密碼功能,該等額外新特徵諸如例如使用者可組配的遮罩暫存器、額外運算元或自128位元、256位元或512位元向量暫存器之選擇,或用以選擇之更多暫存器等。
例如,在VEX格式397可用來提供具有內隱(implicit)遮罩的SIMD SM4加密區塊密碼功能的情況下,EVEX格式398可用來提供具有顯示使用者可組配遮罩的SIMD SM4加密區塊密碼功能。另外,在VEX格式397可用來在128位元或256位元向量暫存器上提供 SIMD SM4加密區塊密碼功能的情況下,EVEX格式398可用來在128位元、256位元、512位元或更大(或更小)向量暫存器上提供SIMD SM4加密區塊密碼功能。
由以下範例示出了用以提供SIMD SM4加密區塊密碼功能的範例指令:
上述的範例指示可指定第一和第二來源資料運算元組(例如,作為Vmm1和Vmm2/Mem-V,其可能為256位元或512位元等等),且取代功能指標(例如,在立即運算元中的Imm8)。用於執行上面所示之範例指令的處理器之實施例可包括加密單元,其回應於指令以:在具有來自響應於指示第一取代功能的取代指令指標的第二來源資料運算元組之相應的金鑰部分的第一來源資料運算元組的一部分上執行SM4回合交換之片段(例如,基於在Imm8中相應的值之一的T或L),使用具有來自回應於指示第二取代功能之取代功能指標的第二來源資料運算元組之相應的常數之第一來源資料運算元組的另一部分執行SM4金鑰產生之片段(例如,基於在Imm8中相應的值之零的T’或L’),以及儲存第一指令之結果元件組在SIMD目的暫存器。
應該理解的是透過相同SIMD指令執行SM4回合交換及SM4金鑰產生兩者,加密或解碼可以以在小緩衝器(例如,256位元)中的金鑰擴展而同時處理。因為128位元(例如,四個32位元字元件)為每一回合交換或金鑰產生所需的,每一輪形成的最新的128位元可被管線輸送或旁通在下一個連續的回合。在一些實施例中,片段可包含四回合之SM4回合交換及四回合之SM4金鑰產生。對於此種實施例,三十二回合之SM4回合交換及SM4金鑰產生可使用八(或九)個SM4回合片段操作被執行。在一些實施例中,每一256位元資料路徑或512位 元來源資料路徑之128位元通道可基於在指示特定取代功能(例如,T或T’,或者L或L’)的指令之立即運算元中之相應的值,被選擇用於處理SM4回合交換或用於處理SM4金鑰產生之片段。在一些替代實施例中,用於處理SM4回合交換之片段及用於處理SM4金鑰產生之片段可預先確定和/或固定。在一些實施例中,片段可藉由微指令(或微-ops或u-ops)實施且結果可從一個微指令旁通至下一個微指令。在一些替代實施例中,片段可藉由在硬體中的邏輯多層(例如,二、或四、或八)、或者藉由微指令和硬體中的邏輯多層的一些結合實施。在一些實施例中,片段可包含數個藉由在指令之立即運算元中的值指示之SM4回合交換和SM4金鑰產生之回合(例如,一、二、四、八、十六、或三十二)。在一些替代實施例中,片段中的回合數可藉由指令存儲器(mnemonic)和/或藉由及(and)操作加密(或操作碼(opcode))指定。在一些實施例中,其中片段可包含複數個回合(例如,四、八、十六、三十二等等),在源運算元中的金鑰資訊可在每一回合被更新及供應至用於下一輪的區塊處理邏輯,且常數可被讀取(例如,來自128位元、256位元、512位元、1024位元等等之記憶體運算元)以提供至用於每一連續的回合之金鑰處理邏輯。
圖4A為根據本發明之至少一實施示出循序管線及暫存器重新命名階段、亂序發佈/執行管線的方塊圖。圖4B為根據本發明之至少一實施示出將包括於處理 器中之循序架構核心及暫存器重新命名邏輯、亂序發佈/執行邏輯的方塊圖。圖4A中之實線方框示出循序管線,而虛線方框示出暫存器重新命名、亂序發佈/執行管線。類似地,圖4B中之實線方框示出循序架構邏輯,而虛線方框示出暫存器重新命名邏輯及亂序發佈/執行邏輯。
在圖4A中,處理器管線400包括擷取階段402、長度解碼階段404、解碼階段406、分配階段408、重新命名階段410、排程(亦稱為分派或發佈)階段412、暫存器讀取/記憶體讀取階段414、執行階段416、回寫/記憶體寫入階段418、異常處置階段422及確認階段424。
在圖4B中,箭頭表示兩個或兩個以上單元之間的耦接,且箭頭之方向指示該等單元之間的資料流之方向。圖4B顯示出處理器核心490,其包括耦接至執行引擎單元450之前端單元430,且該執行引擎單元及該前端單元兩者皆耦接至記憶體單元470。
核心490可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心,或混合式或替代性核心類型。作為另一選項,核心490可為專用核心,諸如例如,網路或通訊核心、壓縮引擎、圖形核心等。
前端單元430包括耦接至指令快取記憶體單元434之分支預測單元432,該指令快取記憶體單元耦接至指令轉譯後備緩衝器(TLB)436,該指令TLB耦接至指令擷取單元438,該指令擷取單元耦接至解碼單元440。 解碼單元或解碼器可解碼指令,且產生一或多個微運算、微碼入口點、微指令、其他指令或其他控制信號作為輸出,上述各者係自原始指令解碼所得,或以其他方式反映原始指令,或係由原始指令導出。可使用各種不同機構來實行解碼器。適合的機構之範例包括但不限於查找表、硬體實行方案、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。指令快取記憶體單元434進一步耦接至記憶體單元470中之2階(L2)快取記憶體單元476。解碼單元440耦接至執行引擎單元450中之重新命名/分配器單元452。
執行引擎單元450包括重新命名/分配器單元452,該重新命名/分配器單元耦接至引退單元454及一或多個排程器單元456之集合。排程器單元456表示任何數目之不同排程器,包括保留站、中央指令窗等。排程器單元456耦接至實體暫存器檔案單元458。實體暫存器檔案單元458中每一個表示一或多個實體暫存器檔案,該一或多個實體暫存器檔案中之不同實體暫存器檔案儲存一或多個不同資料類型(諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點等)、狀態(例如,指令指標,其為將要執行之下一個指令之位址)等。實體暫存器檔案單元458由引退單元454重疊以示出可實行暫存器重新命名及亂序執行之各種方式(例如,使用重新排序緩衝器及引退暫存器檔案,使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器映射及暫存器池;等等)。一 般而言,架構暫存器為自處理器之外部或自程式設計師之視角為可見的。暫存器不限於任何已知特定類型之電路。各種不同類型之暫存器為適合的,只要其能夠儲存及提供如本文所述之資料即可。適合的暫存器之範例包括但不限於專用實體暫存器、使用暫存器重新命名的動態分配實體暫存器、專用實體暫存器及動態分配實體暫存器之組合等。引退單元454及實體暫存器檔案單元458耦接至執行聚集460。執行叢集460包括一或多個執行單元462之集合及一或多個記憶體存取單元464之集合。執行單元462可執行各種運算(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)進行執行。雖然一些實施例可包括專門針對特定功能或功能集合之許多執行單元,但其他實施例可包括僅一個執行單元或多個執行單元,該等執行單元均執行所有功能。排程器單元456、實體暫存器檔案單元458及執行叢集460被顯示為可能為多個,因為某些實施例針對某些類型之資料/運算創建單獨的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線,和/或記憶體存取管線,其中每一管線具有其自有之排程器單元、實體暫存器檔案單元和/或執行叢集,且在單獨的記憶體存取管線的情況下,所實行的某些實施例中,唯有此管線之執行叢集具有記憶體存取單元464)。亦應理解,在使用單獨的管線之情況下,此等管線中之一或多者可為亂序發佈/執行而其餘管線為循序發佈/ 執行。
記憶體存取單元464之集合耦接至記憶體單元470,該記憶體單元包括耦接至資料快取記憶體單元474的資料TLB單元472,該資料快取記憶體單元耦接至2階(L2)快取記憶體單元476。在一示範性實施例中,記憶體存取單元464可包括載入單元、儲存位址單元及儲存資料單元,上述單元中之每一個耦接至記憶體單元470中之資料TLB單元472。L2快取記憶體單元476耦接至一或多個其他階快取記憶體且最終耦接至主記憶體。
藉由範例,示範性暫存器重新命名亂序發佈/執行核心架構可將管線400實行如下:1)指令擷取438執行擷取階段402及長度解碼階段404;2)解碼單元440執行解碼階段406;3)重新命名/分配器單元452執行分配階段408及重新命名階段410;4)排程器單元456執行排程階段412;5)實體暫存器檔案單元458及記憶體單元470執行暫存器讀取/記憶體讀取階段414;執行叢集460執行執行階段416;6)記憶體單元470及實體暫存器檔案單元458執行回寫/記憶體寫入階段418;7)異常處置階段422中可涉及各種單元;以及8)引退單元454及實體暫存器檔案單元458執行確認階段424。
核心490可支援一或多個指令集(例如,x86指令集(以及一些擴展,較新版本已新增該等擴展);MIPS Technologie公司(Sunnyvale,CA)的MIPS指令集;ARM Holdings公司(Sunnyvale,CA)的ARM指令集(以及選擇性 的額外擴展,諸如NEON))。
應理解,該核心可支援多執行緒處理(multithreading)(執行運算或執行緒之兩個或兩個以上並行集合),且可以各種方式完成此支援,其中包括經時間切割之多執行緒處理、同時多執行緒處理(其中單個實體核心針對該實體核心同時在多執行緒處理的各執行緒中之每一者提供一邏輯核心)或上述各者之組合(例如,經時間切割之擷取及解碼以及隨後同時的多執行緒處理,諸如在Intel®超多執行緒處理(Hyperthreading)技術中)。
雖然在亂序執行之上下文中描述暫存器重新命名,但應理解,暫存器重新命名可用於循序架構中。雖然處理器之所示實施例亦包括單獨的指令與資料快取記憶體單元434/474以及共享的L2快取記憶體單元476,但替代性實施例可具有用於指令與資料兩者的單個內部快取記憶體,諸如1階(L1)內部快取記憶體或多階內部快取記憶體。一些實施例中,系統可包括內部快取記憶體與外部快取記憶體之組合,該外部快取記憶體在核心和/或處理器外部。或者,所有快取記憶體可在核心和/或處理器外部。
圖5為根據本發明之實施例的具有整合型記憶體控制器及圖形之單核心處理器及多心處理器500的方塊圖。圖5中之實線方框示出處理器500,其具有單個核心502A、系統代理510、一或多個匯流排控制器單元516之集合,而虛線方框之選擇性增添示出替代性處理器 500,其具有多個核心502A-N、位於系統代理單元510中之一或多個整合型記憶體控制器單元514之集合,以及整合型圖形邏輯508。
記憶體階層包括該等核心內的一或多階快取記憶體、一或多個共享快取記憶體單元506之集合、耦接至整合型記憶體控制器單元514之集合的外部記憶體(未顯示)。共享快取記憶體單元506之集合可包括一或多個中階快取記憶體,諸如2階(L2)、3階(L3)、4階(L4),或其他階快取記憶體、末階快取記憶體(LLC),和/或上述各者之組合。雖然在一實施例中,環式互連單元512對整合型圖形邏輯508、共享快取記憶體單元506之集合及系統代理單元510進行互連,但替代性實施例可使用任何數目的熟知技術來互連此等單元。
在一些實施例中,核心502A-N中之一或多個能夠進行多執行緒處理。系統代理510包括協調並操作核心502A-N之彼等部件。系統代理單元510可包括例如功率控制單元(PCU)及顯示單元。PCU可為調節核心502A-N及整合型圖形邏輯508之功率狀態所需要的邏輯組及部件,或者包括上述邏輯及部件。顯示單元係用於驅動一或多個外部已連接顯示器。
核心502A-N在架構和/或指令集方面可為同質的或異質的。例如,核心502A-N中之一些可為循序的,而其他核心為亂序的。如另一範例,核心502A-N中之兩個或兩個以上可能能夠執行相同指令集,而其他核心 可能能夠執行僅指令集之子集或不同指令集。
處理器可為通用處理器,諸如CoreTM i3、i5,、i7、2 Duo及Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM處理器,上述各者可得自Intel公司(Santa Clara,Calif)。或者,處理器可來自另一公司,諸如ARM Holdings公司、MIPS等。處理器可為專用處理器,諸如例如,網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器等。處理器可實行於一或多個晶片上。處理器500可為一或多個基板之部分和/或可使用許多處理技術(諸如例如,BiCMOS、CMOS或NMOS)中之任一者將處理器500實行於一或多個基板上。
圖6至圖8為適合於包括處理器500的示範性系統,而圖9為可包括核心502中之一或多個的示範性單晶片系統(SoC)。此項技術中已知的關於以下各者之其他系統設計及組配亦適合:膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、攜帶型媒體播放器、手持式裝置,以及各種其他電子裝置。一般而言,能夠併入如本文中所揭示之處理器和/或其他執行邏輯的多種系統或電子裝置通常適合。
現參閱圖6,所顯示係根據本發明之一實施例之系統600的方塊圖。系統600可包括耦接至圖形記憶體 控制器集線器(GMCH)620的一或多個處理器610、615。圖6中用間斷線表示額外處理器615之選擇性性質。
每一處理器610、615可為處理器500之一些版本。然而,應注意的是,整合型圖形邏輯及整合型記憶體控制單元不太可能存在於處理器610、615中。圖6示出GMCH 620可耦接至記憶體640,該記憶體可為例如動態隨機存取記憶體(DRAM)。對於至少一實施例,DRAM可與非依電性快取記憶體相關聯。
GMCH 620可為晶片組或晶片組之一部分。GMCH 620可與處理器610、615通訊且控制介於處理器610、615與記憶體640之間的互動。GMCH 620亦可充當介於處理器610、615與系統600之其他元件之間的加速匯流排介面。對於至少一實施例,GMCH 620經由多分支匯流排(諸如前端匯流排(frontside bus;FSB)695)與處理器610、615通訊。
此外,GMCH 620耦接至顯示器645(諸如平板顯示器)。GMCH 620可包括整合型圖形加速器。GMCH 620進一步耦接至輸入/輸出(I/O)控制器集線器(ICH)650,該ICH可用來將各種周邊裝置耦接至系統600。例如在圖6之實施例中顯示之外部圖形裝置660,該外部圖形裝置可為與另一周邊裝置670一起耦接至ICH 650之離散圖形裝置。
或者,額外或不同的處理器亦可存在於系統600中。例如,額外處理器615可包括:與處理器610相 同之額外處理器、與處理器610異質或不對稱之額外處理器、加速器(諸如例如,圖形加速器或數位信號處理(DSP)單元)、場可規劃閘陣列,或任何其他處理器。就優點量度範圍而言,實體資源610、615之間可存在各種差異,其中包括架構特性、微架構特性、熱特性、功率消耗特性等。此等差異可有效表現為處理器610、615之間的不對稱性及異質性。對於至少一實施例,各種處理器610、615可存在於相同晶粒封裝中。
現參閱圖7,所顯示係根據本發明之一實施例之第二系統700的方塊圖。如圖7中所示,多處理器系統700係點對點互連系統,且包括第一處理器770及第二處理器780,該等處理器經由點對點互連750予以耦接。處理器770及780中每一個可為如處理器610、615中一或多個的處理器500之一些版本。
雖然僅顯示出兩個處理器770、780,但應理解,本發明之範疇不限於此。在其他實施例中,一或多個額外處理器可存在於給定處理器中。
處理器770及780係顯示出為分別包括整合型記憶體控制器單元772及782。處理器770亦包括點對點(P-P)介面776及778,作為其匯流排控制器單元之部分;類似地,第二處理器780包括P-P介面786及788。處理器770、780可使用P-P介面電路778、788經由點對點(P-P)介面750交換資訊。如圖7中所示,IMC 772及782將處理器耦接至個別記憶體,亦即,記憶體732及記 憶體734,該等記憶體可為局部地附接至個別處理器的主記憶體之部分。
處理器770、780各自可使用點對點介面電路776、794、786、798經由個別P-P介面752、754與晶片組790交換資訊。晶片組790亦可經由高效能圖形介面739與高效能圖形電路738交換資訊。
在任一處理器中或兩個處理器外部,可包括共享快取記憶體(未顯示),而該共享快取記憶體經由P-P互連與該等處理器連接,使得當處理器被置於低功率模式中時,可將任一處理器或兩個處理器之局域快取記憶體資訊儲存在該共享快取記憶體中。
晶片組790可經由介面796耦接至第一匯流排716。在一實施例中,第一匯流排716可為周邊部件互連(PCI)匯流排,或者諸如高速PCI匯流排或另一第三代I/O互連匯流排之匯流排,但本發明之範疇不限於此。
如圖7中所示,各種I/O裝置714以及匯流排橋接器718可耦接至第一匯流排716,該匯流排橋接器將第一匯流排716耦接至第二匯流排720。在一實施例中,第二匯流排720可為低接腳計數(LPC)匯流排。各種裝置可耦接至第二匯流排720,其中包括例如鍵盤和/或滑鼠722、通訊裝置727及儲存單元728(諸如碟片驅動機或其他大量儲存裝置),在一實施例中,該儲存單元可包括指令/碼及資料730。此外,音訊I/O 724可耦接至第二匯流排720。請注意,其他架構係可能的。例如,代替圖7 之點對點架構,系統可實行多分支匯流排或其他此類架構。
現參閱圖8,所顯示係根據本發明之一實施例之第三系統800的方塊圖。圖7圖8中的相似元件帶有相似參考數字,且圖8已省略圖7之某些態樣以避免混淆圖8之其他態樣。
圖8示出處理器870、880分別可包括整合型記憶體及I/O控制邏輯(「CL」)872及882。對於至少一實施例,CL 872、882可包括整合型記憶體控制器單元,諸如以上結合圖5圖7所述之該整合型記憶體控制器單元。另外,CL 872、882亦可包括I/O控制邏輯。圖8示出不僅記憶體832、834耦接至CL 872、882,而且I/O裝置814亦耦接至控制邏輯872、882。舊式I/O裝置815耦接至晶片組890。
現參閱圖9,所顯示係根據本發明之一實施例之SoC 900的方塊圖。圖5中之類似元件帶有相似參考數字。此外,虛線方框為更先進SoC上之選擇性特徵。在圖9中,互連單元902耦接至以下各者:應用處理器910,其包括一或多個核心502A-N之集合及共享快取記憶體單元506;系統代理單元510;匯流排控制器單元516;整合型記憶體控制器單元514;一或多個媒體處理器920之集合,其可包括整合型圖形邏輯508、用於提供靜物攝影機和/或視訊攝影機功能之影像處理器924、用於提供硬體音訊加速之音訊處理器926及用於提供視訊編碼/解碼加 速之視訊處理器928;靜態隨機存取記憶體(SRAM)單元930;直接記憶體存取(DMA)單元932;以及用於耦接至一或多個外部顯示器之顯示單元940。
圖10示出含有中央處理單元(CPU)及圖形處理單元(GPU)之處理器,該處理器可執行根據一實施例之至少一指令。在一實施例中,可由CPU執行根據至少一實施例之用以執行運算的指令。在另一實施例中,可由GPU執行指令。在又一實施例中,可經由由GPU及CPU執行的運算之組合為執行指令。例如,在一實施例中,可接收且解碼根據一實施例之指令,以用於在GPU上執行。然而,可由CPU執行解碼後指令內之一或多個運算,且將結果返回至GPU以用於指令之最終引退。相反地,在一些實施例中,CPU可充當主處理器,且GPU充當共處理器。
在一些實施例中,可由GPU執行受益於高並行通量處理器的指令,而可由CPU執行受益於得益於深管線架構的處理器之效能的指令。例如,圖形、科學應用、金融應用及其他並行工作負荷可受益於GPU之效能且因此可被執行,而諸如作業系統核心或應用程式碼之較連續應用可較佳適合於CPU。
圖10中,處理器1000包括CPU 1005、GPU 1010、影像處理器1015、視訊處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示裝置1040、高畫質多媒體介面(HDMI)控制器1045、 MIPI控制器1050、快閃記憶體控制器1055、雙資料速率(DDR)控制器1060、安全引擎1065及I2S/I2C(Integrated Interchip Sound/Inter-Integrated Circuit)介面1070。其他邏輯及電路可包括於圖10之處理器中,其中包括更多CPU或GPU以及其他周邊介面控制器。
至少一實施例之一或多個態樣可藉由儲存於機器可讀媒體上之代表性資料來實行,該機器可讀媒體表示處理器內之各種邏輯,該資料在由機器讀取時使機器製造邏輯來執行本文所述之技術。此類表示(稱為IP核心)可儲存於有形的機器可讀媒體(磁帶)上,且可供應給各種用戶端或製造設施以載入至實際上製作該邏輯或處理器的製造機中。例如,IP核心(諸如由ARM Holdings公司開發的CortexTM族處理器及由中國科學院計算技術研究所(ICT)開發的Loongson IP核心)可授權或出售給各種用戶端或被受權人(諸如Texas Instruments、Qualcomm、Apple或Samsung)且實行於由此等用戶端或被受權人生產的處理器。
圖11顯示根據一實施示出之IP核心之開發的方塊圖。儲存器1130包括模擬軟體1120和/或硬體或軟體模型1110。在一實施例中,可經由記憶體1140(例如,硬碟片)、有線連接(例如,網際網路)1150或無線連接1160將表示IP核心設計之資料提供至儲存器1130。由模擬工具及模型產生之IP核心資訊然後可傳輸至製作設施,在該製作設施處IP核心資訊可由第三方製造,以執 行根據至少一實施例的至少一指令。
在一些實施例中,一或多個指令可對應於第一類型或架構(例如,x86)且在不同類型或架構(例如,ARM)之處理器上被轉譯或仿真。因此可在任何處理器或處理器類型(其中包括ARM、x86、MIPS、GPU或其他處理器類型或架構)上執行根據一實施例的指令。
圖12示出如何由不同類型之處理器來仿真根據一實施例的第一類型之指令。在圖12中,程式1205含有一些指令,該等指令可執行與根據一實施例的指令相同或大體上相同之功能。然而,程式1205之指令可具有與處理器1215不同或不相容的類型和/或格式,此意味程式1205中之類型之指令可無法由處理器1215原型地執行。然而,藉助於仿真邏輯1210,將程式1205之指令轉譯為能夠由處理器1215原型地執行之指令。在一實施例中,仿真邏輯係體現於硬體中。在另一實施例中,仿真邏輯係體現於有形的機器可讀媒體中,該媒體含有軟體,用來將程式1205中之類型之指令轉譯為可由處理器1215原型地執行之類型。在其他實施例中,仿真邏輯為固定功能或可規劃硬體與儲存於有形的機器可讀媒體上之程式之組合。在一實施例中,處理器含有仿真邏輯,然而在其他實施例中,仿真邏輯存在於處理器外部且由第三方提供。在一實施例中,處理器能夠藉由執行含於處理器中或與處理器相關聯之微碼或韌體來載入仿真邏輯,該仿真邏輯係體現於含有軟體之有形的機器可讀媒體中。
圖13為對照根據本發明之實施例的軟體指令轉換器之用途的方塊圖,該軟體指令轉換器用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。在所示之實施例中,指令轉換器為軟體指令轉換器,但指令轉換器或者可以軟體、韌體、硬體、或其各種組合來實行。圖13顯示出,可使用x86編譯器1304來編譯用高階語言1302撰寫的程式以產生x86二進位碼1306,該x86二進位碼可由具有至少一x86指令集核心之處理器1316原型地執行。具有至少一x86指令集核心之處理器1316表示可執行與具有至少一x86指令集核心之Intel處理器大體相同的功能之任何處理器,上述執行係藉由相容地執行或以其他方式處理以下各者:(1)Intel x86指令集核心之指令集的大部分,或(2)旨在在具有至少一x86指令集核心之Intel處理器上執行的應用程式或其他軟體之目標碼版本,以便達成與具有至少一x86指令集核心之Intel處理器大體相同的結果。x86編譯器1304表示可操作以產生x86二進位碼1306(例如目標碼)之編譯器,該x86二進位碼在經額外連結處理或未經額外連結處理的情況下可在具有至少一x86指令集核心之處理器1316上執行。類似地,圖13顯示出,可使用替代性指令集編譯器1308來編譯用高階語言1302撰寫的程式以產生替代性指令集二進位碼1310,該替代性指令集二進位碼可由不具有x86指令集核心之處理器1314(例如,具有多個核心的處理器,該等核心執行MIPS Technologie公司 (Sunnyvale,CA)之MIPS指令集,和/或該等核心執行ARM Holdings公司(Sunnyvale,CA)之ARM指令集)原型地執行。指令轉換器1312用來將x86二進位碼1306轉換成可由不具有一x86指令集核心之處理器1314原型地執行的碼。此轉換後的碼不可能與替代性指令集二進位碼1310相同,因為能夠實現此操作的指令轉換器很難製作,然而,轉換後的碼將完成一般運算且由來自替代性指令集之指令構成。因此,指令轉換器1312表示經由仿真、模擬或任何其他處理程序來允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二進位碼1306的軟體、韌體、硬體或其組合。
圖14A示出用於執行用以提供SIMD SM4加密區塊密碼功能的指令的設備之一實施例的圖。設備1402包含元件之第一來源資料運算元1410組、元件之第二來源資料運算元1420組、以及一或多個在8位元立即運算元1430中的取代功能指標。在設備1401中,具有來自該第二來源資料運算元1420組之相應的第一一或多個金鑰(RKi)的該第一來源資料運算元1420組之一部份(Xi-Xi+3)之第一一或多個SM4-回合交換被執行,以回應在多工器1412之指示區塊取代功能T的立即運算元1430中指示第一取代功能之該一或多個取代功能指標之第一指標。區塊取代功能T是一種包非線性取代τ(tau)及線性取代L(即,T(.)=L(τ(.)))的可反相混合器取代,其中L(B)=B ⊕(B<<<2)⊕(B<<<10)⊕(B<<<18)⊕(B<<<24),以及 B=(b0,b1,b2,b3)=τ(a0,a1,a2,a3)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3)),每一個a0-a3及b0-b3具有8位元,運算子⊕表示位元互斥或(Bitwise Exclusive-OR)處理以及運算子<<<表示左旋。Sbox功能之進一步細節(常數參數、金鑰擴展及加密等等)可在「用於無線網路標準之SM4加密演算法(SM4 Encryption Algorithm for Wireless Networks)」(1.03版,2008年5月15日出版)中找到,其由Whitfield Diffie of Sun Microsystem和Georger Ledin of Sonoma State University翻譯和排版,可在網際網路eprint.iacr.org/2008/329.pdf取得。
在設備1401中,使用具有來自第二來源資料運算元1420組之相應的第一一或多個常數(CKi)的第一來源資料運算元1410組所述的部分(RKi-RKi+3)一或多個SM4金鑰產生,以在多工器1414回應在指示金鑰取代功能T’的立即運算元1430中所述一或多個取代功能指標之第二指標。區塊取代功能T’是一種包非線性取代τ(tau)但不同的線性取代L’(即,T’(.)=L’(τ(.)))的可反相混合器取代,其中L'(B)=B ⊕(B<<<13)⊕(B<<<23),以及B=(b0,b1,b2,b3)=τ(a0,a1,a2,a3)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3)).
應該理解的是,在立即運算元1430中的一或多個取代功能指標可被選擇在替代較佳的實施例以指示區塊及金鑰取代功能,分別為L和L’而不是T和T’(例如,如在處理區塊1403之設備中所示),以提供進一步 簡化電路而對設備1401或設備1402沒有任何結構上可見變化,或特定指令以提供SIMD SM4加密區塊密碼功能。至設備1401之T和T’的輸入分別為Xi+1 ⊕ Xi+2 ⊕ Xi+3 ⊕ RKi以及RKi+1 ⊕ RKi+2 ⊕ RKi+3 ⊕ CK。多工器1412和1414之輸出接著分別與Xi和RKi互斥或(XORed),以分別產生Xi+4和RKi+4。根據設備1401的一實施例,一或多個SM4回合交換和一或多個SM4金鑰產生之結果元件1440組可被儲存在SIMD暫存器(例如,如果需要單一回合、或如果微指令被使用來產生立即結果)。
在設備1402中,一或多個SM4回合交換及一或多個SM4金鑰產生之結果元件1440組與元件之另一來源資料運算元1420組和一或多個在立即運算元1430中的取代功能指標被存取(例如,在SIMD暫存器)。在設備1402中,具有來自來源資料運算1420組之相應的第二一或多個金鑰(RKi+1)之結果元件1440組之一部分(Xi+1-Xi+4)的第二一或多個SM4回合交換被執行,以在多工器1430回應在指示區塊取代功能T的立即運算1430中一或多個取代功能指標之第三指標。在設備1402之第二一或多個SM4回合交換的輸入為Xi+2 ⊕ Xi+3 ⊕ Xi+4 ⊕ RKi+1
在設備1402之處理區塊1403,使用具有來自來源資料運算元1440組之相應的第二一或多個常數(CKi+1)的結果元件1440組之所述部分(RKi+1-RKi+4)第二一或多個SM4金鑰產生被執行,以在多工器1434回應在指示金鑰取代功能L’之立即運算元1430中另一一或多個 取代功能指標的第四指標。至處理區塊1403之設備中之τ 1433的輸入為RKi+2 ⊕ RKi+3 ⊕ RKi+4 ⊕ CKi+1(例如,如在XOR電路1431所示)。在設備1403中之τ 1433的輸出輸入至T 1435和T’1436。多工器1432和1434之選擇的輸出接著與Xi+1以及與RKi+1互斥或(例如,如處理區塊1403之XOR電路1437所示)以分別產生Xi+5以及RKi+5。根據設備1402之實施例,第二一或多個SM4回合交換及第二一或多個SM4金鑰產生之結果元件1450的另一組可儲存在SIMD暫存器(例如,如果需要兩回合、或如果另一微指令被使用來產生另一中間結果)。
應該理解的是藉由相同SIMD指令一起執行SM4回合交換及SM4金鑰產生,加密或解碼可隨著在小緩衝器(例如,256位元)中各自的後續金鑰擴展被同時處理。因為128位元(例如,四個32位元字元件)為每一新回合交換或金鑰產生所需的,每一回合形成的最新的128位元結果可被管線輸送或旁通在下一個連續的回合。在一些實施例中,片段可包含兩回合之SM4回合交換及兩回合之SM4金鑰產生。對於此種實施例,三十二回合之SM4回合交換及SM4金鑰產生可使用十六(或十七)個SM4回合片段操作被執行。在一些實施例中,每一256位元資料路徑或512位元來源資料路徑之128位元通道可基於在指示特定取代功能(例如,T或T’,或者L或L’)的指令之立即運算元中之相應的值,被選擇用於處理SM4回合交換或用於處理SM4金鑰產生之片段。在替代 實施例中,每一256位元資料路徑或512位元來源資料路徑之128位元通道可基於指令存儲器或指令之操作加密(或操作碼)被決定用於處理SM4回合交換之片段或用於處理SM4金鑰產生之片段。也應該理解的是SM4演算法的加密和解碼方法具有相同結構,除了在其中回合金鑰被使用的順序是相反的。例如,用於加密之金鑰順序為(RK0、RK1、RK2...RK31),而用於解碼之金鑰順序為(RK31、RK30、RK29...RK0)。
圖14B示出用於執行用以提供SIMD SM4加密區塊密碼功能的指令的設備之替代實施例的圖。設備1404包含元件之第一來源資料運算元1410組、元件之第二來源資料運算元1420組、以及一或多個在8位元立即運算元1430中的取代功能指標。在此設備1401的實施例中,具有來自該第二來源資料運算元1420組之相應的第一一或多個金鑰(RKi)的該第一來源資料運算元1420組之一部份(Xi-Xi+3)之第一一或多個SM4-回合交換被執行,以回應在指示區塊取代功能作為輸入至相應的處理區塊1403的立即運算元1430中之一或多個取代功能指標的第一指標。在此設備1401的實施例中,使用具有來自第二來源資料運算元1420組之相應的第一一或多個的常數(CKi)第一來源資料運算元1410組之所述部分(RKi-RKi+3)第一一或多個SM4金鑰產生,以回應在指示金鑰取代功能作為輸入至第二相應的處理區塊1403之立即運算元1430中的一或多個取代功能指標之第二指標。根據設 備1401之一替代實施例,一或多個SM4回合交換及一或多個SM4金鑰產生之結果元件1440組可被儲存在SIMD暫存器中(例如,如果僅需單一回合、或如果微指令被使用來產生中間結果)。在其它設備1401之替代實施例中,一或多個SM4回合交換及一或多個SM4金鑰產生之結果元件1440組可被鎖定用於旁通至、或儲存在用於額外的處理層之臨時中間儲存。例如,一些設備1401之實施例也可包含元件之中間來源資料運算元1440組。在設備1404中,具有來自第二來源資料運算元1420組的相應的第一一或多個金鑰(RKi+1)中間來源資料運算元1440組之一部分(Xi+1-Xi+4)的第二一或多個SM4回合交換被執行,以回應在指示區塊取代功能作為輸入至其它相應的處理區塊1403之立即運算元1430中的一或多個取代功能指標之第一指標。在設備1404之實施例中,在指示區塊取代功能之第一指標中的一(1)值被使在相應的128位元通道上。在設備1404中,使用具有來自第二來源資料運算元1420組之相應的第二一或或個常數(CKi+1)之中間來源資料運算元1440組之部分(RKi+1-RKi+4)的第二一或多個SM4金鑰產生,以回應在指示金鑰取代功能作為輸入至另一第二相應的處理區塊1403之立即運算元1430中所述一或多個取代功能指標之第二指標。在設備1404之一實施例中,在指示金鑰取代功能之第二指標中的零(0)值被使用在相應的128位元通道上。根據設備1404之一實施例,一或多個SM4回合交換及一或多個SM4金鑰產 生之結果元件1450組可被儲存在SIMD暫存器中(例如,如果僅需要兩回合、或如果微指令被使用來產生中間結果)。在設備1404支替代實施例中,一或多個SM4回合交換及一或多個SM4金鑰產生之結果元件1450組可被鎖定用於旁通至、或儲存在用於額外的處理層之臨時中間儲存。
例如,設備1404之實施例也可包含元件之第二中間來源資料運算元1450組。在設備1404中,具有來自第二來源資料運算元1420組之相應的第三一或多個金鑰(RKi+2)的中間來源資料運算元1450組之部分(Xi+2-Xi+5)的第三一或多個SM4回合交換被執行,以回應在指示區塊取代功能作為輸入至又一相應的處理區塊1403之立即運算元1430中的一或多個取代功能指標。此外在設備1404中,使用具有來自第二來源資料運算元1420組之相應的第三一或多個常數(CKi+2)之中間來源資料運算元1450組之部分(RKi+2-RKi+5)的第三一或多個SM4金鑰產生,以回應在指示金鑰取代功能作為輸入至又一第二相應的處理區塊1403之立即運算1430中的一或多個取代功能指標之第二指標。根據設備1404之一實施例,一或多個SM4回合交換及一或多個SM4金鑰產生之結果元件1450組可被儲存在SIMD暫存器中(例如,如果僅需要三回合、或如果微指令被使用來產生中間結果)。在設備1404支替代實施例中,一或多個SM4回合交換及一或多個SM4金鑰產生之結果元件1460組可再次被鎖定用於旁 通至、或儲存在用於額外的處理層之臨時中間儲存。因此設備1404之實施例也可包含元件之第三中間來源資料運算元1460組。在此設備1404之實施例中,具有來自第二來源資料運算元1420組之相應的第四一或多個金鑰(RKi+3)中間來源資料運算元1460組之部分(Xi+3-Xi+6)的第四一或多個SM4回合交換被執行,以回應在指示區塊取代功能作為輸入至又一相應的處理區塊1403之立即運算元1430中的一或多個取代功能指標之第一指標。此外在設備1404中,使用具有來自第二來源資料運算元1460組之相應的第四一或多個常數(CKi+3)之中間來源資料運算元1460組之部分(RKi+3-RKi+6)的第四一或多個SM4金鑰產生,以回應在指示金鑰取代功能作為輸入至又一第二相應的處理區塊1403之立即運算元1430中所述一或多個取代功能指標之第二指標。根據設備1404之一實施例,一或多個SM4回合交換及一或多個SM4金鑰產生之結果元件1470組可被儲存在SIMD暫存器(例如,如果僅需要四回合、或如果微指令被使用來產生中間結果)。在設備1404之替代實施例,一或多個SM4回合交換及一或多個金鑰產生之結果元件1470組可被鎖定用於旁通至、或儲存在用於額外的處理層之臨時中間儲存。
應該理解的是在一些實施例中,片段可包含四回合的SM4回合交換及四回合的SM4金鑰產生。對於此種實施例,三十二回合的SM4回合交換及SM4金鑰產生可使用八(或九)SM4回合片段操作被執行。在一些實 施例中,256位元資料路徑或512位元資料路徑之每一128位元通道可基於在指令之立即運算元中之相應的值被選擇用於處理SM4回合交換之片段或用於處理SM4金鑰產生之片段。在一些替代實施例中,用於處理SM4回合交換之片段及用於SM4金鑰產生之片段的資料路徑之通道可根據操作碼(或opcode)被預先確定和/或固定。
也應該理解的是在一些實施例中,片段可藉由微指令(或微-ops或u-ops)實施且結果可從一個微指令旁通至下一個微指令。在一些替代實施例中,片段可藉由在硬體中的邏輯多層(例如,二、或四、或八)、或者藉由微指令和硬體中的邏輯多層的一些結合實施。在一些實施例中,片段可包含數個藉由在指令之立即運算元中的值指示之SM4回合交換和SM4金鑰產生之回合(例如,一、二、四、八、十六、或三十二)。在一些替代實施例中,片段中的回合數可藉由指令存儲器和/或藉由及(and)操作加密(或操作碼)指定。
圖14C示出用於執行用以提供SIMD SM4加密區塊密碼功能的指令的設備之另一替代實施例的圖。設備1406包含元件之第一來源資料運算元1410組、元件之第二來源資料運算元1420組以及一或多個取代功能指標(例如,任意地在一可選的8位元立即運算元1430中)。在設備1405之一實施例中,部分(Xi-Xi+3)根據來自第一來源資料運算元1410組之具有根據來自用於執行第一一或多個SM4回合交換之第二來源資料運算元1420 組之元件選擇控制1457選擇的相應的第一一或多個金鑰(RKi)運算元選擇控制1451首先被選擇,以回應在指示區塊取代功能作為輸入至相應的處理區塊1403之控制區塊1455(和/或也任意地在一可選的立即運算元1430)中一或多個取代功能指標1452之第一指標。在此設備1405之實施例中,部分(RKi-RKi+3)可根據來自具有根據來自用於執行第一一或多個SM4金鑰產生之第二來源資料運算元1420組之元件選擇控制1457選擇的相應的第一一或多個常數(CKi)第一來源資料運算元1410組之運算元選擇控制1451被首先選擇,以回應在指示金鑰取代功能作為輸入至第二相應的處理區塊1403之控制區塊1455(和/或也任意地在一可選的立即運算元1430)中一或多個取代功能指標1452之第二指標。根據設備1406之一替代實施例,一或多個SM4回合交換及一或多個SM4金鑰產生之結果元件1480組可被儲存在SIMD暫存器1490中(例如,如果用於片段之所需回合數已完成、或如果微指令被使用以產生中間結果)。在設備1406之其它替代實施例中,一或多個SM4回合交換及一或多個SM4金鑰產生之結果元件1480組可被鎖定用於旁通1453至、或儲存在用於額外的處理層之臨時中間儲存。
例如,設備1406支實施例包含元件之中間來源資料運算元1480組。在設備1405中,後續部分(Xj+1-Xj+4)根據來自具有根據來自用於執行後續一或多個SM4回合交換之第二來源資料運算元1420組之元件選擇控制 1457而選擇的相應的後續一或多個金鑰(RKi+j+1)之中間來源資料運算元1480組的運算元選擇控制1451被選擇,以回應在指示區塊取代能作為輸入至相應的處理區塊1403之控制區塊1455(和/或也任意地在可選的中間運算元1430)中一或多個取代功能指標1452之第一指標。在設備1405之實施例中,在指示區塊取代功能之第一指標中的一(1)值被使在相應的128位元通道上。在設備1406之實施例中,在指示區塊取代功能之一或多個取代功能指標1452之第一指標中的一值(其可以不同於一)被使在相應的128位元通道上,任意地回應在立即運算1430中相應的值(其可以為一(1)或可以不同於一)。在設備1405中,後續部分(RKj+1-RKj+4)係根據來自中間來源資料運算元1480組連同根據來自用於執行後續一或多個SM4金鑰產生的第二來源資料運算元1420組之元件選擇控制1457選擇的相應的後續的一或多個常數(CKi+j+1)運算元選擇控制1451被選擇,以回應在控制區塊1455(和/或也任意地在可選中間運算元1430)中一或多個取代功能指標之第二指標。在設備1405之一實施例中,在指示金鑰取代功能之第二指標中的零(0)值被使在相應的128位元通道上。在設備1406之一實施例中,在指示金鑰取代功能之一或多個取代功能指標1452之第二指標中的一值(其可能不同於零)被使用在相應的128位元通道上,任意地回應在立即運算元1430中相應的值(其可以為零(0)或可以不同於零)。根據設備1406之一實施例,一 或多個SM4回合交換及一或多個SM4金鑰產生之結果元件1480組可被儲存在SIMD暫存器1490中(例如,當用於片段之所需回合數目已經完成時)。
圖15A示出用於一處理的實施例之流程圖,其中處理為執行用以提供加密區塊密碼功能之SIMD SM4的回合片段的指令。本文所揭露之處理1501及其它處理係藉由可包含專用的硬體或軟體或由一般目的機器或由特別目的機器或由兩者結合之可操作的韌體操作碼的處理區塊被執行。
在處理區塊1531中,指令被解碼用於操作之SIMD SM4回合片段,該指令指定區塊和/或金鑰操作。例如,指令之實施例可指定第一來源資料運算元、第二來源資料運算元及一或多個取代功能指標,其中取代功能指標可被選擇以指定無論在第一及第二來源資料運算元組(例如,其可被儲存在256位元或512位元SIMD暫存器中)之相應的部分(例如,諸如128位元通道)上的區塊或金鑰操作。回應於解碼的指令,複數個微指令(或微-ops或u-ops)可任意地在處理區塊1536(例如,用以執行片段之單獨回合、或替代地用以執行無論是指定的區塊或指定的金鑰操作)中被產生。在處理區塊1541中,第一來源資料運算元組被存取(例如,從256位元或512位元的SIMD暫存器)。在處理區塊1551中,第二來源資料運算元組被存取(從256位元或512位元的SIMD暫存器或記憶體位置)。在處理區塊1561中,SM4回合交換在關連 於指定的區塊操作以及來自第二來源資料運算元組之相關的一或多個金鑰之第一來源資料運算元組的部分被執行,以回應指示(例如,藉由在具有第一值之立即運算元中的位元)取代功能用於區塊操作之一或多個取代功能指標之指標。在處理區塊1571中,SM4金鑰產生使用關連於指定的金鑰操作及來自第二來源資料運算元之相應的一或多個常數之第一來源資料運算元組的第二部分被執行,以回應指示(例如,藉由在具有第二值之立即運算元中的位元)取代功能用於金鑰操作之一或多個取代功能指標之另一指標。在處理區塊1581中,做出確定是否片段之全部SM4回合操作已經完成。如果沒有,處理再次開始於處理區塊1541。否則處理進行到處理區塊1591,其中指令之結果元件組被儲存在SIMD目的暫存器中。
應該理解的是儘管本文所揭露之處理1501和其它處理的處理區塊被示出為以迭代方式被執行,任何可能的以替代順序、或同時、或並行執行可較佳地被執行。
圖15B示出用於一處理的替代實施例之流程圖,其中處理為執行用以提供加密區塊密碼功能之SIMD SM4的回合片段的指令。在處理區塊1532中,指令被解碼用於操作之SIMD SM4回合片段,該指令指定取代功能組(例如,用於區塊和/或金鑰操作)。例如,指令之實施例可指定第一來源資料運算元、第二來源資料運算元及一或多個取代功能指標,其中取代功能指標可被選擇以指定無論在第一及第二來源資料運算元組(例如,其可被儲 存在256位元或512位元SIMD暫存器中)之相應的部分(例如,諸如128位元通道)上的區塊或金鑰操作。回應於解碼的指令,複數個微指令(或微-ops或u-ops)可任意地在處理區塊1537(例如,用以執行片段之單獨回合、或替代地用以執行無論是指定的區塊或指定的金鑰操作)中被產生。在處理區塊1542中,第一來源資料運算元組被存取(例如,從256位元或512位元的SIMD暫存器)。在處理區塊1552中,第二來源資料運算元組被存取(從256位元或512位元的SIMD暫存器或記憶體位置)。在處理區塊1562中,一或多個SM4回合交換在關連於第一取代功能及來自第二資料運算元組相應的一或多個金鑰之第一來源資料運算元組的部分上被執行,以回應指示(例如,藉由在具有第一值之立即運算元中的位元)第一取代功能係用於區塊操作之一或多個取代功能指標之指標。在處理區塊1572中,一或多個SM4金鑰產生使用關連於第二取代功能及來自第二來源資料運算元組之相應的一或多個常數的第一資料運算元組之部分被執行,以回應指示(例如,藉由在具有第二值之立即運算元中的位元)第二取代功能係用於金鑰操作之一或多個取代功能指標之另一指標。在處理區塊1582中,做出確定是否操作之SM4回合片段已經完成。如果沒有,處理再次開始於處理區塊1562。否則處理進行到處理區塊1592,其中指令之結果元件組被儲存在SIMD目的暫存器中。
圖15C示出用於一處理的另一替代實施例之 流程圖,其中處理為執行用以提供加密區塊密碼功能之SIMD SM4的回合片段的指令。在處理區塊1513中,包括一或多個輸入區塊和/或金鑰排程的第一來源資料運算元組儲存在第一SIMD暫存器(例如,256位元或512位元的SIMD暫存器)中。在處理區塊1523中,包括一或多個回合金鑰和/或常數組的第二來源資料運算元組儲存在第二SIMD暫存器(例如,256位元或512位元的SIMD暫存器)中。在處理區塊1533中,指令被接收用於操作之SIMD SM4回合片段,該指令指定取代功能(例如,用於區塊和/或金鑰操作)組。例如,指令之實施例可指定第一來源資料運算元、第二來源資料運算元及一或多個取代功能指標,其中取代功能指標之一些實施例可被選擇以指定無論在第一及第二來源資料運算元組之相應的部分(例如,諸如128位元通道)上的區塊或金鑰操作。在回應用於操作之SIMD SM4回合片段的指令之處理1504中,複數個微指令(或微-ops或u-ops)可任意地在處理區塊1538(例如,用以執行片段之單獨回合、或替代地用以執行無論是指定的區塊或指定的金鑰操作)中被產生。在處理1504之處理區塊1563中,一或多個SM4回合交換在關連於第一取代功能及來自第二來源資料運算元組之相應的一或多個金鑰的第一來源資料運算元之相應的通道上被執行,以回應指示(例如,藉由具有第一值的立即運算元)第一取代功能用於區塊操作的一或多個取代功能指標。在處理1504之處理區塊1573中,一或多個 SM4金鑰產生使用關連於取代功能指令及來自第二來源資料運算元之相應的一或多個常數的第一來源資料運算元之相應的通道被執行,以回應指示(例如,藉由在具有第二值之立即運算元中相應的位元)第二取代功能用於金鑰操作之一或多個取代功能指標。在處理1504之處理區塊1583中,做出確定是否操作之SM4回合片段已經完成。如果沒有,處理再次開始於處理區塊1563。否則處理進行到處理1504之處理區塊1593,其中指令之結果元件組被儲存在SIMD目的暫存器中。
圖16A示出用於一處理的實施例之流程圖,其中處理為使用用以提供加密區塊密碼功能之SIMD SM4的回合片段的指令有效地實施SM4加密區塊密碼。在處理區塊1610中,第一源運算元組(例如,含有從128位元加密金鑰衍生出的初始金鑰值)被儲存在第一SIMD暫存器。在處理區塊1620中,第二源運算元組(例如,含有常數參數值CK0-CK3)被儲存在第二SIMD暫存器。應該理解的是第一源運算元組及第二源運算元組之初始準備(未示出)根據用於無線網路標準之SM4加密演算法被執行(英文敘述可在網際網路eprint.iacr.org/2008/329.pdf取得)。在處理區塊1630中,SM4金鑰排程(例如,RK0-RK3)使用關連於金鑰取代功能及來自第二元運算元組(例如,來自第二SIMD暫存器之一或多個相應的128位元通道的CK0-CK3)之相應的常數的第一來源運算元組之一或多個通道產生。在處理區塊1640中,新的第一來 源運算元(例如,1410)組被儲存在第三SIMD暫存器(在一些實施例中,其可以為相同於第一SIMD暫存器之暫存器)。在處理區塊1650中,新的第二來源運算元(例如,1420)組被儲存在第四SIMD暫存器(在一些實施例中,其可以為相同於第二SIMD暫存器之暫存器)。應該理解的是處理區塊1650藉由一或多個指令以重新排列SM4排程(例如,來自運算元1470之RKi+4-RKi+7)及相應的常數(例如,來自記憶體之CKi+4-CKi+7)的使用被完成,諸如藉由執行用以執行SM4加密區塊密碼之SIMD SM4回合片段,用以置換(permute)元件、弄混(shuffle)元件、混合(blend)元件等等之指令進入用於在處理1603中的處理之新的第二來源運算元(例如,1420)組內。
在處理1603之處理區塊1660中,SM4回合交換在關連於指定的區塊取代功能及來自第二來源資料運算元(例如,1420)組之相應的一或多個金鑰排程第一來源資料運算元(例如,1410)組之一或多個通道上被執行,以回應指示(例如,藉由在具有第一值之立即運算元中的位元)取代功能用於區塊操作之一或多個取代功能指標之指標。在處理區塊1670中,SM4金鑰產生使用關連於指定的金鑰取代功能及來自第二來源資料運算元(例如,1420)組之相應的一或多個常數第一來源資料運算(例如,1410)組一或多個通道被執行,以回應指示(例如,藉由在具有第二值之立即運算元1430中的位元)取 代功能用於金鑰操作的一或多個取代功能指標之另一指標。在處理區塊1680中,指令之結果元件組被儲存在SIMD暫存器中的SIMD目的運算元(例如,1470)。
在處理區塊1690中,做出確定是否全部SM4回合片段操作已經完成。如果沒有,處理再次開始於處理區塊1650。否則處理1601結束在處理區塊1699。
圖16B示出用於一處理的替代實施例之流程圖,其中處理為使用用以提供加密區塊密碼功能之SIMD SM4的回合片段的指令有效地實施SM4加密區塊密碼。應該理解的是第一來源運算元組及第二來源運算元組之初始準備(未示出)根據用於無線網路標準之SM4加密演算法被執行(英文敘述可在網際網路eprint.iacr.org/2008/329.pdf取得)。在處理區塊1610中,第一來源運算元組(例如,含有從128位元加密金鑰衍生出的初始金鑰值)被儲存在第一SIMD暫存器。在處理區塊1620中,第二來源運算元組(例如,含有常數參數值CK0-CK3)被儲存在第二SIMD暫存器。在處理區塊1630中,SM4金鑰排程(例如,RK0-RK3)使用關連於金鑰取代功能及來自第二元運算元組(例如,來自第二SIMD暫存器之一或多個相應的128位元通道的CK0-CK3)之相應的常數的第一來源運算元組之一或多個通道產生。在處理區塊1640中,新的第一來源運算元(例如,1410)組被儲存在第三SIMD暫存器(在一些實施例中,其可以為相同於第一SIMD暫存器之暫存器)。在處理區塊1650中,新的第二 來源運算元(例如,1420)組被儲存在第四SIMD暫存器(在一些實施例中,其可以為相同於第二SIMD暫存器之暫存器)。應該理解的是處理區塊1640和/或1650藉由一或多個指令以重新排列SM4輸入區塊和/或金鑰排程(例如,來自運算元1470之X0-X3和/或RKi+4-RKi+7)及相應的常數(例如,來自記憶體之CKi+4-CKi+7)的使用被完成,諸如藉由執行用以執行SM4加密區塊密碼之SIMD SM4回合片段,用以置換元件、弄混元件、混合元件等等之指令進入用於在處理1604中的處理之新的第二來源運算元(例如,1420)組內。
在處理1604之處理區塊1660中,SM4回合交換在關連於指定的區塊取代功能及來自第二來源資料運算元(例如,1420)之相應的一或多個金鑰排程第一來源資料運算元(例如,1410)組之一或多個通道上被執行,以回應指示(例如,藉由在操作碼或立即運算元1430中具有第一值的位元)取代功能用於區塊操作之一或多個取代功能指標之指標。在處理區塊1670中,SM4金鑰產生使用關連於指定的金鑰取代功能及來自第二來源資料運算元(例如,1420)之相應的一或多個常數之第一來源資料運算元(例如,1410)組之一或多個通道被執行,以回應指示(例如,藉由在操作碼或立即運算元1430中具有第二值的位元)取代功能用於金鑰操作之一或多個取代功能指標之另一指標。在處理區塊1682中,指令之結果元件被儲存在目的及在第三SIMD暫存器中新的第一來源運算 元(例如,1470)組中。
在處理區塊1690中,做出確定是否全部SM4回合片段操作已經完成。如果沒有,處理再次開始於處理區塊1650。否則處理1601結束在處理區塊1699。
本文揭示之機構的實施例可以硬體、軟體、韌體或者此類實行方法之組合來實施。本發明之實施例可實行為在可程式化系統上執行之電腦程式或程式碼,該等可程式化系統包含至少一處理器、一儲存系統(包括依電性及非依電性記憶體和/或儲存元件)、至少一輸入裝置及至少一輸出裝置。
可將程式碼應用於輸入指令,以執行本文所述之功能且產生輸出資訊。可將輸出資訊以已知方式應用於一或多個輸出裝置。出於本申請案之目的,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器。
程式碼可以高階程序性或物件導向式程式設計語言來實行,以便與處理系統通訊。必要時,程式碼亦可以組合語言或機器語言來實行。事實上,本文所述之機構的範疇不限於任何特定的程式設計語言。在任何情況下,該語言可為編譯語言或解譯語言。
至少一實施例之一或多個態樣可藉由儲存於機器可讀媒體上之代表性指令來實行,該機器可讀媒體表示處理器內之各種邏輯,該等指令在由機器讀取時使機器 製造邏輯來執行本文所述之技術。此類表示(稱為IP核心)可儲存於有形的機器可讀媒體上,且可供應給各種用戶端或製造設施以載入至實際上製作該邏輯或處理器的製造機中。
此等機器可讀儲存媒體可包括(但不限於)由機器或裝置製造或形成的非暫時性有形物品配置,其中包括:儲存媒體,諸如硬碟片、任何其他類型之碟片(包括軟碟片、光碟、光碟片-唯讀記憶體(CD-ROM)、可重寫光碟片(CD-RW)及磁光碟);半導體裝置,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)(諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可規劃化唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可規劃化唯讀記憶體(EEPROM)、磁性或光學卡;或者適合於儲存電子指令的任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)之設計資料的非暫時性有形機器可讀媒體,其中設計資料定義本文所述之結構、電路、設備、處理器和/或系統特徵。此類實施例亦可被稱為程式產品。
在一些情況下,可使用指令轉換器將指令自來源指令集轉換成目標指令集。例如,指令轉換器可將指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、漸變、仿真或以其他方式轉換成將由核心處理的一或多個其他指令。指令轉換器可以軟體、硬 體、韌體或其組合來實施。指令轉換器可位於處理器上、位於處理器外部,或部分位於處理器上而部分位於處理器外部。
因此,揭示用於根據至少一實施例執行之一或多個指令的技術。雖然已描述且在伴隨圖式中顯示出某些示範性實施例,但是將理解,此類實施例僅為對廣泛的發明之示而非限制,且本發明不限於所顯示及描述之特定構造及佈置,因為熟習此項技術者在學習本揭示內容後可想到各種其他修改。在諸如成長迅速且進步不容易預見的技術領域中,所揭示之實施例之佈置及細節可為容易修改的,如在不脫離本揭示案之原理或伴隨申請專利範圍之範疇的情況下藉由賦能於技術進步。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧1階(L1)內部快取記憶體
106‧‧‧暫存器資料
108‧‧‧執行單元
109‧‧‧緊密指令集
110‧‧‧處理器匯流排
112‧‧‧圖形卡
114‧‧‧加速圖形埠互連
116‧‧‧系統邏輯晶片
118‧‧‧高頻寬記憶體路徑
120‧‧‧記憶體
122‧‧‧集線器介面匯流排
124‧‧‧資料儲存器/資料儲存裝置
126‧‧‧無線收發機
128‧‧‧韌體集線器(快閃BIOS)
130‧‧‧I/O控制器集線
134‧‧‧網路控制器

Claims (37)

  1. 一種處理器,包含:解碼階段,其用以解碼用於單一指令多重資料(SIMD)SM4操作之第一指令,該第一指令指示第一來源資料運算元組、第二來源資料運算元組以及一或多個取代功能指標;以及一或多個執行單元,其回應該解碼的第一指令,以:如果該一或多個取代功能指標之第一指標指示第一取代功能,執行具有來自該第二來源資料運算元組之相應的第一一或多個金鑰的該第一來源資料運算元組之一部份之一或多個SM4-回合交換;如果該一或多個取代功能指標之第二指標指示第二取代功能,使用具有來自該第二來源資料運算元組之相應的第一一或多個常數的該第一來源資料運算元組之該部分來執行一或多個SM4金鑰產生;以及儲存該第一指令之結果在SIMD目的暫存器。
  2. 如申請專利範圍第1項所述之處理器,其中該第一取代功能係該SM4混合器取代功能,T。
  3. 如申請專利範圍第2項所述之處理器,其中該第二取代功能係該SM4金鑰擴展取代功能,T’。
  4. 如申請專利範圍第1項所述之處理器,其中該第一指令指定該SIMD目的暫存器為目的運算元。
  5. 如申請專利範圍第1項所述之處理器,其中該第一指令指定SIMD暫存器用以保持四個32位元元件為該 第一來源資料運算元組。
  6. 如申請專利範圍第1項所述之處理器,其中該第一指令指定SIMD暫存器用以保持八個32位元元件為該第一來源資料運算元組。
  7. 如申請專利範圍第1項所述之處理器,其中該第一指令指定SIMD暫存器用以保持十六個32位元元件為該第一來源資料運算元組。
  8. 如申請專利範圍第1項所述之處理器,其中該第一指令指示該一或多個取代功能指標為立即位元組運算元。
  9. 如申請專利範圍第8項所述之處理器,其中該第一指令藉由設定在該立即位元組運算中的一位元來指示該一或多個取代功能指標用於在該第一來源資料運算元組中四個32位元元件之每一相應的通道(lane)。
  10. 如申請專利範圍第1項所述之處理器,其中該第一指令指示在該第一指令記憶存儲器(mnemonic)中的該一或多個取代功能指標。
  11. 如申請專利範圍第1項所述之處理器,其中回應該解碼的第一指令之該一或多個執行單元使用該第一來源資料運算元組之該部分來執行四個SM4-回合交換或四個SM4金鑰產生。
  12. 一種機器可讀媒體,其用以記錄具有一或多個可執行指令儲存其上之功能的描述性材料,該一或多個可執行指令包括第一指令,其如果代表機器的一個線程執行, 導致該機器以:存取元件之第一來源資料運算元組、元件之第二來源資料運算元組以及一或多個取代功能指標;執行具有來自該第二來源資料運算元組之相應的第一一或多個金鑰的該第一來源資料運算元組之一部份之第一一或多個SM4-回合交換,以回應指示第一取代功能之該一或多個取代功能指標之第一指標;執行使用具有來自該第二來源資料運算元組之相應的第一一或多個常數的該第一來源資料運算元組之該部分的第一一或多個SM4金鑰產生,以回應指示第二取代功能之該一或多個取代功能指標之第二指標;以及儲存該一或多個SM4-回合交換及該一或多個SM4金鑰產生之結果元件組在SIMD暫存器中。
  13. 如申請專利範圍第12項所述之機器可讀媒體,該一或多個可執行指令也包括第二指令,其如果代表該機器的該線程執行,更導致該機器以:存取該一或多個SM4-回合交換和在該SIMD暫存器中的該一或多個SM4金鑰產生之該結果元件組、元件之第三來源資料運算元組以及另外的一或多個取代功能指標;執行具有來自該第三來源資料運算元組之相應的第二一或多個金鑰之該結果元件組的一部份之第二一或多個SM4-回合交換,以回應指示該第一取代指令之該另外的一或多個取代功能指標之第三指標; 執行使用具有來自該第三資料運算元之相應的第二一或多個常數之該結果元件組的該部分之第二一或多個SM4金鑰產生,以回應指示該第二取代指令之該另外的一或多個取代功能指標之第四指標;以及儲存該第二一或多個SM4-回合交換和第二一或多個SM4金鑰產生之另外的結果元件組在該SIMD暫存器中。
  14. 如申請專利範圍第13項所述之機器可讀媒體,其中該第一取代功能係該SM4混合器取代功能,T。
  15. 如申請專利範圍第14項所述之機器可讀媒體,其中該第二取代功能係該SM4金鑰擴展取代功能,T’。
  16. 如申請專利範圍第15項所述之機器可讀媒體,該一或多個可執行指令如果代表該機器的該線程執行,更導致該機器以:儲存元件之該第三來源資料運算元組在第二SIMD暫存器;以及重複該第二指令代表該機器的該線程的執行。
  17. 如申請專利範圍第16項所述之機器可讀媒體,其中該一或多個可執行指令如果代表該機器的該線程執行,導致該儲存在該第二SIMD暫存器及重複該第二指令的該執行直到至少三十二SM4回合交換及SM4金鑰產生代表該機器的該線程被執行。
  18. 如申請專利範圍第17項所述之機器可讀媒體,其中該一或多個可執行指令如果代表該機器的該線程執行,導致在用以完成該三十二SM4回合交換及SM4金鑰 產生代表該機器的該線程之該第一指令之執行之後的該重複該第二指令的該執行不超過十五次。
  19. 如申請專利範圍第18項所述之機器可讀媒體,其中該一或多個可執行指令如果代表該機器的該線程執行,導致在用以完成該三十二SM4回合交換及SM4金鑰產生代表該機器的該線程之該第一指令之執行之後的該重複該第二指令的該執行僅七次。
  20. 一種方法,包含:解碼用於單一指令多重資料(SIMD)SM4回合片段操作之第一指令,該第一指令指示第一來源資料運算元組、第二來源資料運算元組以及一或多個取代功能指標;以及回應該第一指令,存取該第一來源資料運算元組,存取該第二來源資料運算元組,在具有來自該第二來源資料運算元組之相應的第一一或多個金鑰之該第一來源資料運算元組之第一部分上執行第一複數個SM4-回合交換,以回應指示第一取代功能的該一或多個取代功能指標之第一指標,執行使用具有來自該第二來源資料運算元之相應的第一一或多個常數的該第一來源資料運算元組的第二部分之第一複數個SM4金鑰產生,以回應指示第二取代功能之該一或多個取代功能指標之第二指標,以及儲存該第一指令之結果元件組在SIMD目的暫存 器。
  21. 如申請專利範圍第20項所述之方法,更包含:產生相等於該第一複數個回應於該第一指令的複數個微指令。
  22. 如申請專利範圍第20項所述之方法,其中該第一複數個係等於四。
  23. 如申請專利範圍第20項所述之方法,其中該第一複數個係等於二。
  24. 如申請專利範圍第20項所述之方法,其中該第一和第二部分包含128位元寬SIMD資料通道。
  25. 如申請專利範圍第20項所述之方法,其中該第一取代功能係該SM4混合器取代功能,T。
  26. 如申請專利範圍第25項所述之方法,其中該第二取代功能係該SM4金鑰擴展取代功能,T’。
  27. 一種處理系統,包含:用以儲存用於單一指令多重資料(SIMD)SM4回合片段操作之第一指令的記憶體;以及處理器,其包含:用以擷取該第一指令的指令擷取階段;用以解碼第一指令的解碼階段,該第一指令指定第一來源資料運算元組、第二來源資料運算元組及一或多個取代功能指標;以及一或多個執行單元,其回應於該解碼的第一指令以: 存取該第一來源資料運算元組,存取該第二來源資料運算元組,在具有來自該第二來源資料運算元組之相應的第一一或多個金鑰之該第一來源資料運算元組之第一部分上執行第一複數個SM4-回合交換,以回應指示第一取代功能的該一或多個取代功能指標之第一指標,執行使用具有來自該第二來源資料運算元之相應的第一一或多個常數的該第一來源資料運算元組的第二部分之第一複數個SM4金鑰產生,以回應指示第二取代功能之該一或多個取代功能指標之第二指標,以及儲存該第一指令之結果元件組在SIMD目的暫存器。
  28. 如申請專利範圍第27項所述之處理系統,其中該第一取代功能係該SM4混合器取代功能,T。
  29. 如申請專利範圍第28項所述之處理系統,其中該第二取代功能係該SM4金鑰擴展取代功能,T’。
  30. 如申請專利範圍第27項所述之處理系統,其中回應於解碼該第一指令之該解碼階段,更用以:產生等於回應該第一指令之該第一複數個的複數個微指令。
  31. 如申請專利範圍第27項所述之處理系統,其中該第一複數個係等於四。
  32. 如申請專利範圍第27項所述之處理系統,其中該第一複數個係等於二。
  33. 如申請專利範圍第27項所述之處理系統,其中該第一和第二部分包含128位元寬SIMD資料通道。
  34. 一種在處理器中的設備,包含:用以儲存用於單一指令多重資料(SIMD)SM4回合片段操作之第一指令的記憶體,該第一指令指定第一來源資料運算元組、第二來源資料運算元組及一或多個取代功能指標;以及處理器,包含:一或多個加密單元,其回應於該第一指令以:在具有來自該第二來源資料運算元組之相應的第一一或多個金鑰之該第一來源資料運算元組之第一部分上執行第一複數個SM4-回合交換,以回應指示第一取代功能的該一或多個取代功能指標之第一指標,執行使用具有來自該第二來源資料運算元之相應的第一一或多個常數的該第一來源資料運算元組的第二部分之第一複數個SM4金鑰產生,以回應指示第二取代功能之該一或多個取代功能指標之第二指標,以及儲存該第一指令之結果元件組在SIMD目的暫存器。
  35. 如申請專利範圍第34項所述之設備,其中該第一指令指定該SIMD目的暫存器作為目的運算元。
  36. 如申請專利範圍第34項所述之設備,其中該第一指令指定該SIMD目的暫存器作為該第一來源資料運算元。
  37. 如申請專利範圍第34項所述之設備,其中該第一指令指定該一或多個取代功能指標作為立即資料運算元。
TW104127515A 2014-09-26 2015-08-24 用以提供單一指令多重資料(simd)sm4加密區塊加密功能之指令和邏輯 TWI544362B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2017511158A JP6537084B2 (ja) 2014-09-26 2015-12-11 プロセッサ、方法、処理システム、および装置
KR1020177005198A KR102307103B1 (ko) 2015-08-24 2015-12-11 Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직
PCT/US2015/065137 WO2017034601A1 (en) 2014-09-26 2015-12-11 Instructions and logic to provide simd sm4 cryptographic block cipher functionality
KR1020227035517A KR102562111B1 (ko) 2014-09-26 2015-12-11 Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직
KR1020217029175A KR102456395B1 (ko) 2015-08-24 2015-12-11 Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직
EP15902463.7A EP3342093B1 (en) 2014-09-26 2015-12-11 Instructions and logic to provide simd sm4 cryptographic block cipher functionality

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/498,633 US9467279B2 (en) 2014-09-26 2014-09-26 Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality

Publications (2)

Publication Number Publication Date
TW201616388A TW201616388A (zh) 2016-05-01
TWI544362B true TWI544362B (zh) 2016-08-01

Family

ID=55585608

Family Applications (2)

Application Number Title Priority Date Filing Date
TW105114570A TWI578188B (zh) 2014-09-26 2015-08-24 用以提供單一指令多重資料(simd)sm4加密區塊加密功能之指令和邏輯
TW104127515A TWI544362B (zh) 2014-09-26 2015-08-24 用以提供單一指令多重資料(simd)sm4加密區塊加密功能之指令和邏輯

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW105114570A TWI578188B (zh) 2014-09-26 2015-08-24 用以提供單一指令多重資料(simd)sm4加密區塊加密功能之指令和邏輯

Country Status (7)

Country Link
US (6) US9467279B2 (zh)
EP (1) EP3342093B1 (zh)
JP (1) JP6537084B2 (zh)
KR (1) KR102562111B1 (zh)
CN (2) CN107209661B (zh)
TW (2) TWI578188B (zh)
WO (1) WO2017034601A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9513913B2 (en) 2014-07-22 2016-12-06 Intel Corporation SM4 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
US10296416B2 (en) * 2016-07-02 2019-05-21 Intel Corporation Read from memory instructions, processors, methods, and systems, that do not take exception on defective data
US10275391B2 (en) * 2017-01-23 2019-04-30 International Business Machines Corporation Combining of several execution units to compute a single wide scalar result
CN106712930A (zh) * 2017-01-24 2017-05-24 北京炼石网络技术有限公司 一种sm4加密方法及装置
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10684856B2 (en) * 2017-07-11 2020-06-16 International Business Machines Corporation Converting multiple instructions into a single combined instruction with an extension opcode
WO2019067337A1 (en) * 2017-09-29 2019-04-04 Knowles Electronics, Llc MULTI-CORE AUDIO PROCESSOR WITH LOW LATENCY SAMPLE PROCESS HEART
WO2019067334A1 (en) * 2017-09-29 2019-04-04 Knowles Electronics, Llc MULTICORDER AUDIO PROCESSOR WITH FLEXIBLE MEMORY ALLOCATION
CN109558706B (zh) * 2018-11-16 2021-09-07 杭州师范大学 国密sm4分组密码算法的检测方法
CN109450616A (zh) * 2018-12-03 2019-03-08 北京安华金和科技有限公司 一种提高sm4加密算法速度的方法
US10831480B2 (en) * 2019-02-25 2020-11-10 International Business Machines Corporation Move data and set storage key instruction
CN109981250B (zh) * 2019-03-01 2020-04-07 北京海泰方圆科技股份有限公司 一种sm4加密、密钥扩展方法、装置、设备及介质
CN110034918B (zh) * 2019-03-15 2023-10-20 深圳市纽创信安科技开发有限公司 一种sm4加速方法和装置
CN110147680B (zh) * 2019-05-29 2022-07-26 浪潮软件股份有限公司 一种优化数据抽取的方法
CN110784306B (zh) * 2019-11-01 2023-10-27 成都卫士通信息产业股份有限公司 Sm4算法白盒实现方法、装置、电子设备及计算机介质
CN111026053B (zh) * 2019-12-06 2021-03-23 华北电力科学研究院有限责任公司 基于真值表的模块化程控控制方法及装置
KR102457166B1 (ko) * 2020-11-23 2022-10-20 부산대학교 산학협력단 ARIA의 암호화 및 복호화를 지원하는 프로세서용 32bit 확장 명령어 체계를 갖는 하드웨어 모듈 및 이의 제어 방법
CN113064555A (zh) * 2021-04-21 2021-07-02 山东英信计算机技术有限公司 一种bios的数据存储方法、装置、设备及存储介质
CN115237374A (zh) * 2021-04-22 2022-10-25 华为技术有限公司 芯片、处理数据的方法和计算机设备
CN113242216A (zh) * 2021-04-23 2021-08-10 长春理工大学光电信息学院 一种基于国产商用密码算法的可信网络摄像机

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193159A (en) * 1986-09-24 1993-03-09 Hitachi, Ltd. Microprocessor system
US6154541A (en) 1997-01-14 2000-11-28 Zhang; Jinglong F Method and apparatus for a robust high-speed cryptosystem
US6230257B1 (en) 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US6604158B1 (en) 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US6964881B2 (en) 2002-08-27 2005-11-15 Micron Technology, Inc. Multi-chip wafer level system packages and methods of forming same
US20040202317A1 (en) 2002-12-20 2004-10-14 Victor Demjanenko Advanced encryption standard (AES) implementation as an instruction set extension
DE10345454A1 (de) 2003-09-30 2005-04-28 Infineon Technologies Ag Wortindividuelle Schlüsselerzeugung
US20070288761A1 (en) 2006-06-09 2007-12-13 Dale Jason N System and method for booting a multiprocessor device based on selection of encryption keys to be provided to processors
CN100389554C (zh) 2006-07-31 2008-05-21 西安西电捷通无线网络通信有限公司 高效率实现sms4算法的加解密处理方法
US20100046448A1 (en) 2006-12-15 2010-02-25 Telefonak Tiebolaget Lm Ericsson ( Single Bit Segmentation Indicator
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8538012B2 (en) 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8391475B2 (en) 2007-03-30 2013-03-05 Intel Corporation Method and apparatus for advanced encryption standard (AES) block cipher
KR100930591B1 (ko) * 2007-12-10 2009-12-09 한국전자통신연구원 고속 세션 변경이 가능한 암호화 장치
US8923510B2 (en) 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
US8301912B2 (en) 2007-12-31 2012-10-30 Sandisk Technologies Inc. System, method and memory device providing data scrambling compatible with on-chip copy operation
US8194854B2 (en) * 2008-02-27 2012-06-05 Intel Corporation Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation
GB2464703A (en) * 2008-10-22 2010-04-28 Advanced Risc Mach Ltd An array of interconnected processors executing a cycle-based program
US8356185B2 (en) 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions
CN101764685B (zh) 2009-10-26 2012-02-08 广州杰赛科技股份有限公司 实现sms4算法的加解密系统
CN101764684B (zh) 2009-10-26 2012-07-04 广州杰赛科技股份有限公司 实现sms4算法的加解密系统
US9544133B2 (en) 2009-12-26 2017-01-10 Intel Corporation On-the-fly key generation for encryption and decryption
US8619985B2 (en) 2010-04-27 2013-12-31 Research In Motion Limited Table splitting for cryptographic processes
RU2010149150A (ru) * 2010-12-02 2012-06-10 ЭлЭсАй Корпорейшн (US) Способ и устройство (варианты) для декодирования с упреждающим исправлением ошибок по алгоритму витерби radix-4
US9183014B2 (en) 2011-02-16 2015-11-10 Intel Corporation Enabling virtual calls in a SIMD environment
US20120254588A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
CN106951214B (zh) * 2011-09-26 2019-07-19 英特尔公司 用于向量加载/存储操作的处理器、系统、介质和方法
GB2497070B (en) 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
CN104126173A (zh) 2011-12-23 2014-10-29 英特尔公司 不会引起密码应用的算术标志的三输入操作数向量add指令
US9754357B2 (en) * 2012-03-23 2017-09-05 Panasonic Intellectual Property Corporation Of America Image processing device, stereoscoopic device, integrated circuit, and program for determining depth of object in real space generating histogram from image obtained by filming real space and performing smoothing of histogram
EP3902200A1 (en) * 2012-03-30 2021-10-27 INTEL Corporation Method and apparatus to process sha-2 secure hashing algorithm
CN102710415B (zh) * 2012-06-18 2015-03-11 西安西电捷通无线网络通信股份有限公司 一种利用对称密码算法进行数据加解密的方法及查表装置
US8953785B2 (en) * 2012-09-28 2015-02-10 Intel Corporation Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor
CN103812641A (zh) * 2012-11-07 2014-05-21 中国科学院微电子研究所 一种实现sm4分组对称密码算法的系统
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
US9361106B2 (en) * 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
CN103746796B (zh) 2014-01-20 2017-01-04 深圳华视微电子有限公司 一种实现智能卡sm4 密码算法的协处理器
US9800406B2 (en) 2014-05-21 2017-10-24 Intel Corporation Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher
US9513913B2 (en) 2014-07-22 2016-12-06 Intel Corporation SM4 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
US9503256B2 (en) 2014-12-24 2016-11-22 Intel Corporation SMS4 acceleration hardware
CN104579636B (zh) * 2015-02-16 2018-01-05 滨州职业学院 一种超高速实现sm4算法的系统及其运行方法
CN105117370B (zh) * 2015-09-18 2018-07-03 芯佰微电子(北京)有限公司 一种多协议密码算法处理器及片上系统

Also Published As

Publication number Publication date
US20220353070A1 (en) 2022-11-03
EP3342093A4 (en) 2019-04-24
JP2018502347A (ja) 2018-01-25
JP6537084B2 (ja) 2019-07-03
CN107209661A (zh) 2017-09-26
WO2017034601A1 (en) 2017-03-02
CN107209661B (zh) 2021-09-07
KR102562111B1 (ko) 2023-07-31
KR20220145414A (ko) 2022-10-28
EP3342093A1 (en) 2018-07-04
TW201709102A (zh) 2017-03-01
TWI578188B (zh) 2017-04-11
US20160094340A1 (en) 2016-03-31
US20170033928A1 (en) 2017-02-02
US10158484B2 (en) 2018-12-18
CN113485752A (zh) 2021-10-08
US9467279B2 (en) 2016-10-11
TW201616388A (zh) 2016-05-01
US11303438B2 (en) 2022-04-12
US11849035B2 (en) 2023-12-19
US20210036848A1 (en) 2021-02-04
US20240146521A1 (en) 2024-05-02
US20190238330A1 (en) 2019-08-01
EP3342093B1 (en) 2020-09-23
US10778425B2 (en) 2020-09-15

Similar Documents

Publication Publication Date Title
TWI544362B (zh) 用以提供單一指令多重資料(simd)sm4加密區塊加密功能之指令和邏輯
TWI595376B (zh) 用於提供密碼算術功能的處理器、機器可讀媒體、方法及處理系統
US20180375642A1 (en) Sm4 acceleration processors, methods, systems, and instructions
KR101753467B1 (ko) 범용 gf(256) simd 암호용 산술 기능성을 제공하는 명령어 및 로직
WO2017030600A1 (en) Instructions and logic to provide simd sm3 cryptographic hashing functionality
CN105409158A (zh) 提供安全密码散列回合功能的指令和逻辑
CN109565438B (zh) 混合加密算法的硬件加速器及其系统
CN105204820A (zh) 用于提供通用gf(256)simd加密算术功能的指令和逻辑
KR102307105B1 (ko) Simd sm3 암호화 해싱 기능을 제공하기 위한 명령어 및 로직
KR102307103B1 (ko) Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees