TW201617960A - Sm4加速處理器、方法、系統及指令 - Google Patents
Sm4加速處理器、方法、系統及指令 Download PDFInfo
- Publication number
- TW201617960A TW201617960A TW104119284A TW104119284A TW201617960A TW 201617960 A TW201617960 A TW 201617960A TW 104119284 A TW104119284 A TW 104119284A TW 104119284 A TW104119284 A TW 104119284A TW 201617960 A TW201617960 A TW 201617960A
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- rounds
- round
- instruction
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 60
- 230000001133 acceleration Effects 0.000 title description 30
- 238000003860 storage Methods 0.000 claims abstract description 61
- 230000004044 response Effects 0.000 claims abstract description 24
- 230000015654 memory Effects 0.000 claims description 91
- 230000006870 function Effects 0.000 claims description 89
- 238000006467 substitution reaction Methods 0.000 claims description 46
- 238000012545 processing Methods 0.000 claims description 23
- 235000009854 Cucurbita moschata Nutrition 0.000 claims description 3
- 240000001980 Cucurbita pepo Species 0.000 claims description 3
- 235000009852 Cucurbita pepo Nutrition 0.000 claims description 3
- 235000020354 squash Nutrition 0.000 claims description 3
- 230000008602 contraction Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 42
- 239000000463 material Substances 0.000 description 11
- 230000008901 benefit Effects 0.000 description 10
- 238000007667 floating Methods 0.000 description 10
- 235000012431 wafers Nutrition 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 238000011156 evaluation Methods 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 230000002441 reversible effect Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 5
- 238000005056 compaction Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000000630 rising effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241001158692 Sonoma Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000009396 hybridization Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 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
- 230000008520 organization Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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/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/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30156—Special purpose encoding of instructions, e.g. Gray coding
-
- 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
-
- 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/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- 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
-
- 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/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
-
- 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/80—Wireless
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Abstract
處理器態樣包含眾多緊縮資料暫存器、及解碼單元以解碼指令。指令是標示一或更多源緊縮資料運算元。一或更多源緊縮資料運算元會具有四先前的SM4密碼回合的四個32位元結果、及四個32位元值。處理器也包含與解碼單元及眾多緊縮資料暫存器耦合的執行單元。執行單元會按照指令將四個正好後續的及順序的SM4密碼回合的四個32位元結果儲存在由指令標示的目的地儲存位置中。
Description
此處所述的實施例大致上關於處理器。特別地,此處所述的實施例大致上關於在處理器中執行密碼。
密碼是電腦系統及其它電子裝置中通常用以保護機密或秘密資訊的技術。密碼通常涉及使用密碼演繹法及密碼鑰以保護資訊。舉例而言,執行加密(有時稱為密碼),其中,使用加密鑰(例如位元串),對未加密的或明文輸入資料(例如代表文字、數字、可理解字元、等等)的位元串執行密碼演繹法指定的一系列的轉換或作業,以產生加密資料。加密資料有時也稱為暗碼文或暗碼資料。加密資料一般是無法理解的。在不知道加密鑰時,要從加密資料決定未加密的明文資料,通常是不可能的或至少實際上不可行的。假使知道密碼鑰時,可以對加密資料執行解密(有時稱為反暗碼),以產生對應的明文或未經加密的資料。在解密期間執行的轉換或運算實質上是加密期間執行的轉換或運算的相反。
SM4是中國政府核准的用於無線網路之密碼演繹法。SM4以前稱為SMS4。SM4密碼演繹法是區塊暗碼演繹法。輸入資料(也稱為狀態)、輸出資料、及密碼鑰均為128位元。經由32回合,執行資料的加密。各回合涉及用以將輸入資料轉換成加密資料之多個不同的運算或轉換。使用具有類似轉換的三十二回合以將資料解密。也有用於鑰擴充的三十二回合,其中,產生用於不同加密及解密回合的回合鑰。此外,假使需要時,可以在2008年5月15日由Sonoma State University的George Ledin及Sun Microsystems的Whitfield翻譯及排版的文獻「SM4 Encryption Algorithm for Wireless Networks」1.03版中取得SM4密碼演繹法的進一步細節。
一個挑戰是實施SM4密碼演繹法通常會傾向於計算上加強的。結果,SM4密碼演繹法的軟體實施通常傾向於具有不良的性能。此不良性能是至少部份地導因於大量的運算需要被執行,以及,需要執行相對大量的指令。通常,各單一回合會用掉數個至很多指令。此外,回想對於各加密、解密、及鑰擴充需要三十二回合。
100‧‧‧指令集
210‧‧‧處理器
212‧‧‧解碼單元
214‧‧‧SM4執行單元
216‧‧‧緊縮資料暫存器
1100‧‧‧處理器
1200‧‧‧系統
1300‧‧‧系統
1400‧‧‧系統
1500‧‧‧系統晶片
參考用以說明實施例的附圖及下述說明,可以最佳地瞭解本發明。在圖式中:
圖1是包含一或更多SM4加速指令之指令集的實施例之方塊圖。
圖2是可操作以執行SM4加速指令的實施例之處理器實施例的方塊圖。
圖3是執行SM4加速指令之方法的實施例之方塊流程圖。
圖4是SM4四密碼回合運算的實施例之方塊圖。
圖5是SM4四鑰擴充回合運算的實施例之方塊圖。
圖6是SM4執行單元的舉例說明的實施例之方塊圖。
圖7是SM4單回合執行邏輯的舉例說明的實施例之方塊圖。
圖8A是用於SM4四回合密碼指令的指令格式及用於SM4四回合鑰擴充指令的指令格式之實施例的方塊圖。
圖8B是用於執行四回合密碼及四回合鑰擴充之單一SM4加速指令的指令格式之實施例的方塊圖。
圖9A是方塊圖,顯示有序管線的實施例及重新命名亂序發佈/執行管線的暫存器之實施例。
圖9B是包含耦合至執行引擎單元的前端單元之處理器核心的實施例的方塊圖,引擎單元及前端單元都耦合至記憶體單元。
圖10A是單一處理器核心伴隨其對一晶粒互連網路的連接及其本地子集合等級2(L2)快取記憶體的實施例之方塊圖。
圖10B是圖10A的處理器核心的部份之展開視圖的實施例的方塊圖。
圖11是具有一個以上的核心之處理器、具有整合記憶體控制器、及具有整合的圖形之處理器實施例的方塊圖。
圖12是電腦架構的第一實施例的方塊圖。
圖13是電腦架構的第二實施例的方塊圖。
圖14是電腦架構的第三實施例的方塊圖。
圖15是系統晶片架構的實施例的方塊圖。
圖16是根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令之方塊圖。
於此揭示SM4加速指令、執行指令的處理器、當處理或執行指令時由處理器執行的方法、及含有一或更多處理器以處理或執行指令的系統。在下述說明中,揭示眾多特定細節(例如,特定指令操作、資料格式、運算元內的資料之配置、處理器配置、微架構細節、操作序列、等等)。但是,沒有這些特定細節,仍可實施實施例。在其它情形中,習知的電路、結構及技術未詳細顯示以免有礙本說明的瞭解。
圖1是包含一或更多SM4加速指令102的處理器之指令集100的方塊圖。SM4加速指令有助於加速SM4密碼演繹法的實施。指令集是處理器的指令集架構(ISA)的一部份以及包含處理器可操作以執行的原生指令。指令集
的指令代表巨集指令、組合語言指令、或提供給處理器執行之機器級指令。這些指令是與導因於指令集的指令解碼之微指令、微作業、或其它指令相對的。
在某些實施例中,SM4加速指令102包含SM4四密碼回合指令104。在密碼期間,(例如加密及解密),SM4演繹法使用回合函數(F)。回合函數(F)顯示於等式1中:Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi XOR T(Xi+1 XOR Xi+2 XOR Xi+3 XOR rki) 等式1
符號「XOR」代表可對這些32位元值執行的位元式互斥或(XOR)運算。Xi項代表用於回合i的32位元件狀態,Xi+1項代表用於回合(i+1)的32位元件狀態,等等。rki項代表用於回合i的32位元回合鑰。初始地,128位元輸入區塊(例如要被加密之128位元的明文資料)可以表示成四個32位元元件(X0、X1、X2、X3)。這些元件可以以大在前排列次序來配置。回合函數(F)用以執行三十二回合(例如,對於i=0,1,...,31)。代表性地,在第一回合期間,藉由評估F(X0、X1、X2、X3、rk0),可以決定32位元結果X4。在三十二回合的加密後,(X28、X29、X30、X31)代表對應於128位元輸入區塊(X0、X1、X2、X3)之128位元的加密資料。
注意,等式1具有函數T(x)。T(x)稱為混合器替代函數。T(x)從32位元輸入產生32位元輸出。如等式2所
示,混合器替代函數T(x)包含二替代函數:T(x)=L(τ(x)) 等式2
函數τ(x)是「非線性替代」函數。函數L(B)是「線性替代」函數。
等式3代表非線性替代函數τ(x)的運算:τ(x)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3)) 等式3
τ(x)應用替代盒(Sbox)至32位元輸入值x。32位元值x可以邏輯上分割成四個8位元區段或位元組a0、a1、a2、a3。使各a0、a1、a2、a3通過Sbox。Sbox取得相關聯的8位元區段作為輸入,對輸入的8位元區段執行非線性替代以產生更換或替代8位元區段,以及,將更換或替代的8位元區段輸出。舉例而言,Sbox可以實施成為固定的查詢表。輸入的8位元區段可以用以查詢查詢表中對應的輸出8位元區段。舉例而言,輸入的8位元區段的一部份可以選取一列,輸入的8位元區段的另一部份可以選取一行,以及,被選取的列及被選取的行可以辨識要作為輸出位元組的位元組。四個輸出的8位元區段可以連接在一起以產生32位元值B。32位元值B可以代表四個相連接的8位元區段(b0,b1,b2,b3)。在B與τ(x)之間的關係以等式4表示:
B=(b0,b1,b2,b3)=τ(x) 等式4
如等式2所示,對非線性替代函數τ(x)之32位元結果B,執行線性替代函數L(B)。用於加密及/或解密的線性替代函數L(B)顯示於等式5中:L(B)=B XOR(B<<<2)XOR(B<<<10)XOR(B<<<18)XOR(B<<<24) 等式5
符號「<<<i」代表32位元值以i位元向左旋轉或是「圓形偏移」。舉例而言,B<<<18代表B向左旋轉18位元。
在加密期間,在三十二回合(i=0,1,...31)的各回合期間,執行由等式1代表的回合函數(F)(例如包含具有等式3給定之非線性替代函數τ(x)及等式5給定之線性替代函數L(B)之混合器替代函數T(x))。在這三十二回合之後,明文的128位元輸入區塊(X0,X1,X2,X3)之經過加密或暗碼文值標示為(Y0,Y1,Y2,Y3)。(Y0,Y1,Y2,Y3)等於(X32,X33,X34,X35)的反替代,(X32,X33,X34,X35)的反替代標示為(X35,X34,X33,X32)。
在解密期間,藉由使用由等式1代表的相同的回合函數(F)(例如包含具有等式3給定之非線性替代函數τ(x)及等式5給定之線性替代函數L(B)之混合器替代函數T(x))但是回合鑰(rki)被使用的次序相反,以將區塊解密。亦即,演繹法的加密及解密執行實質上相同的運算,
但是,回合鑰被使用的次序相反。舉例而言,用於加密的鑰次序可為第一rk0、然後rk1...最後rk31,而用於解密的鑰次序可為第一rk31、然後rk30...最後rk0。
在某些實施例中,SM4四密碼回合指令可以評估所有或是至少實質上所有的四密碼(例如,加密或解密)回合以產生四個單回合結果,各單回合結果均對應於不同的單順序暗碼回合。舉例而言,在某些實施例中,在四合中的各回合期間,SM4四密碼回合指令評估等式1-5中的所有等式或是至少實質上所有的等式。舉例而言,在某些實施例中,在四合中的各回合期間,SM4四密碼回合指令評估等式1給定的四XOR運算、等式3給定的非線性替代函數τ(x)(例如包含Sbox查詢)、等式5給定之線性替代函數L(B)之四XOR及四向左旋轉之所有運算或是至少實質上所有的運算。須瞭解,在某些實施例中,這些運算中的某些運算可以在SM4四密碼回合指令的限制之外選擇性地執行(例如,以中間結果作為輸入,在指令之外部,執行某些XOR或旋轉運算),但是一般而言,性能會增進SM4四密碼回合指令的限制之內的這些運算的至少多數(亦即,大於50%)、至少大多數(亦即大於80%)、實質上全部(例如至少95%)、或是全部。
再參考圖1,在某些實施例中,SM4加速指令102包含選加的SM4四鑰擴充回合指令106,但是,這並非必要。另一部份的SM4演繹法是鑰擴充或是產生。在鑰擴充期間,產生需要作為密碼(例如加密及/或解密)回合
的輸入(例如,輸入至由等式1表示的F函數)之回合鑰或擴充的鑰。
可以從128位元加密鑰「MK」、128位元系統參數「FK」、及三十二鑰產生常數(CK0,CK1,...CK31),產生三十二回合鑰(rk0,rk1,...rk31)。128位元加密鑰「MK」可以表示成四個32位元區段(MK0,MK1,MK2,MK3)。系統參數FK可以表示成四個32位元系統參數區段(FK0,FK1,FK2,FK3)。在十六進位標示法中,這些系統參數區段可為FK0=(a3b1bac6)、FK1=(56aa3350)、
FK2=(677d9197)、及FK3=(b27022dc)。起初,根據等式6,計算四個32位元區段(K0,K1,K2,K3):(K0,K1,K2,K3)=(MK0 XOR FK0,MK1 XOR FK1,MK2 XOR FK2,MK3 XOR FK3) 等式6
根據等式7表示的鑰擴充回合函數(F’),產生32回合鑰(rki):rki=Ki+4=F’(Ki,Ki+1,Ki+2,Ki+3,CKi)=Ki XOR T’(Ki+1 XOR Ki+2 XOR Ki+3 XOR CKi) 等式7
等式7可以被評估一次以產生一回合的鑰擴充(例如回合鑰rki)之單一結果。等式7的鑰擴充回合函數(F’)類似於等式1的密碼回合函數(F)。一例外是等式7的鑰擴充回合函數(F’)具有與等式1的密碼回合函數(F)的混合器
替代函數T(x)稍微不同的混合器替代函數T’(x)。特別地,混合器替代函數T’(x)使用與等式5的密碼線性替代函數L(B)不同的鑰擴充線性替代函數L’(B)。鑰擴充線性替代函數L’(B)以等式8表示:L’(B)=B XOR(B<<<13)XOR(B<<<23) 等式8
比較等式5與等式8,可知相較於等式5之密碼線性替代函數L(B),鑰擴充線性替代函數L’(B)使用不同的旋轉量,具有二個較少的XOR運算,以及具有二個較少的旋轉運算。
在某些實施例中,SM4四鑰擴充回合指令可以評估所有或至少實質上所有的四鑰擴充回合,以產生對應於不同的單順序鑰擴充回合之四回合鑰或擴充鑰。舉例而言,在某些實施例中,在四合中的各回合期間,SM4四密碼回合指令評估等式7、2-4、及8中的所有等式或是至少實質上所有的等式。舉例而言,在某些實施例中,在四合中的各回合期間,SM4四密碼回合指令評估等式7給定的四XOR運算的全部運算或至少實質上全部運算,評估全部運算或至少實質上全部由運算等式3給定的非線性替代函數τ(x)(例如包含Sbox查詢)、評估全部運算或至少實質上全部由等式8給定之線性替代函數L’(B)之二XOR及二向左旋轉。須瞭解,在某些實施例中,這些運算中的某些運算可以在SM4四鑰擴充回合指令的限制之外選擇性地
執行(例如,以中間結果作為輸入,在指令之外部,執行某些XOR或旋轉運算),但是一般而言,性能會增進SM4四鑰擴充回合指令的限制之內的所有這些運算的至少多數(亦即,大於50%)、至少大多數(亦即大於80%)、實質上全部(例如至少95%)、或是全部。
圖2是可操作以執行SM4加速指令202的處理器210的實施例的方塊圖。在某些實施例中,處理器可為一般用途處理器(例如,中央處理單元(CPU)或是通常用於桌上型、膝上型、或其它型式的電腦中的一般用途的處理器)。在一態樣中,使用一般用途處理器的指令有助於避免需要使用專用的密碼特定用途硬體,例如現場可編程閘陣列(FPGA)或特定應用積體電路(ASIC),這些硬體於實施時傾向於增加成本、耗電及/或尺寸。或者,處理器可為特別用途處理器。適合的特定用途處理器包含但不限於密碼處理器、密碼共處理器、網路處理器、通訊處理器、圖形處理器、共處理器、嵌入式處理器、數位訊號處理器(DPS)但這些僅為一些實例。處理器可為各種複雜指令集計算(CISC)處理器、精簡指令集計算(RISC)處理器、超長指令字(VLIW)處理器、其混合中的任一、或是具有不同指令集的組合(例如在不同的核心中)、或其它型式的處理器。
在操作期間,處理器210接收SM4加速指令202。在某些實施例中,SM4加速指令可為SM4四密碼回合指令(例如指令104)、或是在其它實施例中為SM4四鑰擴充
回合指令(例如指令106)。舉例而言,可從指令提取單元、指令佇列、等等接收SM4加速指令。SM4加速指令代表巨集指令、組合語言指令、機器碼指令、或是處理器的指令集的其它指令或控制訊號。
在某些實施例中,SM4加速指令可明確地指明(例如,經由一或更多欄位或位元集)、或以其它方式標示(例如,隱含地標示、等等)一或更多源緊縮資料運算元118、122。在某些實施例中,一或更多源緊縮資料運算元可以具有四個先前的SM4密碼或鑰擴充回合(例如i,i+1,i+2,i+3)的四個32位元結果120(例如Wi,Wi+1,Wi+2,Wi+3)。如同此處所使用般,於此使用符號W(例如Wi,Wi+1,等等)以同屬地代表密碼回合的32位元結果(例如Xi,Xi+1,等等)或是鑰擴充回合的32位元結果(例如Ki,Ki+1,等等)。舉例而言,在加密的情形中,四個32位元結果220可以代表四個正好先前的回合(例如i,i+1,i+2,及i+3)中由等式1表示的回合函數(F)的四個先前評估的結果(例如Xi,Xi+1,Xi+2,及Xi+3)。這四個結果代表被加密或解密的中間狀態。替代地,在鑰擴充的情形中,四個32位元結果220可以代表四個正好先前的回合(例如i,i+1,i+2,及i+3)中由等式7表示的回合函數(F’)的四個先前評估的四個結果(例如Ki,Ki+1,Ki+2,及Ki+3)。初始的四個區段(亦即,K0,K1,K2,K3)除外,這可以代表四個先前回合鑰。回想鑰擴充回合函數(F’)使用鑰擴充線性替代函數L’(x),鑰擴充線性替代函數L’(x)與密碼回合函
數(F)所使用的密碼線性函數L(x)略微不同。
再參考圖2,一或更多源運算元118、122也具有四個32位元值224。在密碼的情形中,四個32位元值224可以代表用於四個先前回合的四個32位元回合鑰(例如rKi,rKi+1,rKi+2,及rKi+3)。這四個回合鑰可以作為如等式1表示的密碼回合函數(F)的四順序評估的輸入。替代地,在鑰擴充的情形中,四個32位元值可以代表四個32位元鑰產生常數(例如CKi,CKi+1,CKi+2,CKi+3)。回想SM4演繹法界定三十二個鑰產生常數CK0-CK31以用於鑰擴充。這四個鑰產生常數可以作為如等式7表示的鑰產生回合函數(F’)的四順序評估的輸入。
如同所示,在某些實施例中,四個先前的SM4回合的四個32位元結果220可以選擇性地儲存於第一源緊縮資料運算元218中,但是這並非必要。又如同所示,在某些實施例中,四個32位元值224(例如用於四個先前回合的32位元回合鑰或四個32位元鑰產生常數)可以選擇性地儲存在第二源緊縮資料運算元222中,但是這並非必要。從整體演繹法的觀點而言,將所有這些相同型式的資料元儲存在相同的緊縮資料運算元內可以提供一定的效率或優點。舉例而言,這有助於方便這些資料元件從演繹法的一回合至下一回合時的有效率管理及/或有助於減少緊縮及/或解除緊縮或類似的資料重配置作業的數目。替代地,在其它實施例中,四個32位元結果220及四個32位元值224可以不同地配置在一或更多源運算元內。舉例而
言,所有八個這些32位元值可以被提供、以及被不同地配置在二個128位元源緊縮資料運算元內(例如各第一及第二源緊縮資料運算元218、222均包含先前回合220的32位元結果及32位元值224的混合)。關於另一實例,單一256位元源緊縮資料運算元(未顯示)可以用以提供全部八個這些32位元值。在仍然其它實例中,記憶體位置、一般用途暫存器或其它儲存位置可以選擇性地用以提供一或更多這些資料元件。雖然對某些配置有某些效率及優點,但是,只要只經由一或更多源運算元而以某方式提供這八個32位元值,則各式各樣不同的配置仍然是可能的。在某些實施例中,第一及第二源緊縮資料運算元218、222可以選擇性地包含如對圖4-5中任一圖說明或顯示的資訊,但是,本發明的範圍不侷限於此。
再參考圖2,處理器包含解碼單元或解碼器212。解碼單元接收及解碼SM4加速指令。解碼單元輸出一或更多微指令、微作業、微碼登入點、已解碼指令或是控制訊號、或是反應、代表、及/或導自SM4加速指令之其它相對較低階的指令或控制訊號。一或更多較低階指令或控制訊號可經由一或更多較低階(例如,電路級或硬體級)作業來實施更高階的SM4加速指令。在某些實施例中,解碼單元包含接收指令之一或更多輸入結構(例如埠、互連、介面)、辨認指令及將指令解碼成一或更多對應的較低階指令或控制訊號之與輸入結構耦合的指令辨認及解碼邏輯、以及輸出一或更多對應的較低階指令或控制訊號之
與辨認及解碼邏輯相耦合的一或更多輸出結構(例如,埠、互連、介面)。使用包含但不限於微碼唯讀記憶體(ROM)、查詢表、硬體實施、可編程邏輯陣列(PLA)、及用以實施此技藝者習知的解碼單元之其它機構等各式各樣的不同機構,來實施辨認及解碼單元。
處理器210也包含緊縮資料暫存器216的組。各緊縮資料暫存器代表可操作以儲存緊縮資料、向量資料、或SIMD資料之晶粒上的儲存位置。緊縮資料暫存器代表架構上可看見的暫存器(例如,架構暫存器檔案)。架構上可看見的或架構上的暫存器是軟體及/或程式人員可看見的以及/或由處理器的指令集的指令所標示的暫存器,以辨識運算元。在某些實施例中,第一源緊縮資料運算元218及/或四個正好先前的回合之四個32位元結果220可以選擇性地儲存於第一緊縮資料暫存器中。在某些實施例中,第二源緊縮資料運算元222及/或四個32位元值224(例如四個32位元回合鑰)可以選擇性地儲存於第二緊縮資料暫存器中。替代地,可以選擇性地使用記憶體位置、或其它儲存位置。緊縮資料暫存器可以在使用習知的技術之不同的微架構中以不同的方式實施且不限於任何特定型式的電路。適當型式的暫存器之實例包含但不限於專用的實體暫存器、使用暫存器重命名的動態分配的實體暫存器、及其組合。
再參考圖2,SM4執行單元214與解碼單元212及緊縮資料暫存器216耦合。為了簡明起見,SM4執行單元於
此也簡稱執行單元。執行單元接收代表及/或導自SM4加速指令202之一或更多已解碼或以其它方式轉換的指令或控制訊號。執行單元也接收四個先前的SM4回合之四個32位元結果220以及四個32位元值224(例如,四個32位元回合鑰)。為了回應及/或因SM4加速指令的結果(例如,回應從指令解碼之一或更多指令或控制訊號),執行單元可操作以儲存結果緊縮資料226,結果緊縮資料226包含四個緊接在後及順序的SM4回合之四個32位元結果228。四個緊接在後及順序的回合緊隨在對應於四個輸入的32位元值220之四個回合之後,以及,彼此順序的或連續的。在密碼的情形中,四個32位元結果228代表如等式1表示的密碼回合函數(F)之四個順序的評估的結果(例如,當Xi,Xi+1,Xi+2,Xi+3駐於第一源緊縮資料運算元218中時,可以產生四個結果Xi+4,Xi+5,Xi+6,Xi+7)。替代地,在鑰擴充的情形中,四個32位元結果228可以代表如等式7表示的鑰擴充回合函數(F’)之四個順序的評估的結果(例如,當Ki,Ki+1,Ki+2,Ki+3駐於第一源緊縮資料運算元218中時,可以產生四個結果rKi,rKi+1,rKi+2,rKi+3)。在某些實施例中,執行單元可以儲存包含如對圖4-5中任一圖說明或顯示的結果、或是此處所述的其它結果,但是,本發明的範圍不侷限於此。
在某些實施例中,結果緊縮資料226可以儲存在由指令明確地指明或以其它方式標示(例如隱含地標示)之目的地儲存位置中。舉例而言,目的地儲存位置可為緊縮資料
暫存器、記憶體位置、一般用途暫存器、或其它儲存位置。在某些實施例中,如同用於源運算元般,目的地儲存位置可選擇性地為相同的儲存位置(例如緊縮資料暫存器),但是,這並非必要。舉例而言,指令可以隱含地標示被指定用於源緊縮資料運算元的儲存位置(例如第一源緊縮資料運算元218)也被隱含地作為目的地儲存位置。結果緊縮資料226可以覆寫最初儲存於儲存位置中的源緊縮資料(例如第一源緊縮資料運算元218)。替代地,不同的儲存位置可以選擇性地用於源及結果緊縮資料運算元。
SM4執行單元及/或處理器包含特定或特別的密碼電路或其它邏輯(例如,電晶體、積體電路、或是其它可能與韌體結合的硬體(例如儲存在非依電性記憶體中的指令)及/或軟體),其可操作以執行SM4加速指令及/或儲存結果,以回應SM4加速指令(例如回應從SM4加速指令解碼的一或更多控制訊號或指令)。在某些實施例中,執行單元包含為圖6-7中任一圖而說明或顯示及/或能夠執行等式1-7中任一等式之密碼硬體、電路、或其它邏輯。
有利地,SM4加速指令202有助於顯著地增加實施SM4演繹法之速度、效率、及/或性能。這部份導因於以單一指令及回應其之處理器的邏輯來取代其它情形中由涉及相當大量的指令之習知的軟體方式所提供的高指令計數及複雜度。
為了避免模糊說明,已顯示及說明簡化的處理器
210。處理器可以選擇性地包含在此之任何它處為處理器而顯示及/或說明的任何其它組件。可以包含在處理器中實施例具有多核心、邏輯處理器、或執行引擎,其中至少之一能夠執行SM4加速指令的實施例。
圖3是執行SM4加速指令的實施例之方法330的實施例之方塊流程圖。在各式各樣的實施例中,方法可由處理器、指令處理設備、或其它數位邏輯裝置執行。在某些實施例中,圖3的作業及/或方法可由圖2的處理器執行及/或在圖2的處理器內執行。此處對圖2的處理器說明之組件、特點、及特定選加的細節也可選擇地應用至圖3的方法及/或作業。替代地,圖3的作業及/或方法可由類似的或不同的處理器或設備執行及/或在其內執行。此外,圖2的處理器可以執行與圖3相同、類似、或不同的作業及/或方法。
在區塊331,方法包含接收SM4加速指令。在各種態樣中,指令可從晶粒外的源(例如,從記憶體、互連、等等)而於處理器被接收、或是從晶粒上的源而於處理器的一部份處(例如,從指令快取記憶體、指令佇列、等等)被接收。SM4加速指令可以指明或以其它方式標示一或更多源緊縮資料運算元。一或更多源緊縮資料運算元可以具有四個先前的SM4回合(例如,i,i+1,i+2,i+3)之四個32位元結果(例如,Wi,Wi+1,Wi+2,Wi+3)、以及四個32位元值(例如,在密碼的情形中為四個32位元回合鑰rKi,rKi+1,rKi+2,rKi+3,或是在鑰擴的情形中為四個鑰產生
常數CKi,CKi+1,CKi+2,CKi+3)。
在方塊226,為回應指令,四個緊隨在後及順序的SM4回合的四個32位元結果可以儲存在目的地儲存位置。四個緊隨在後及順序的SM4回合緊跟隨在對應於設在源緊縮資料運算元中的四個先前的SM4回合之四個32位元結果(Wi,Wi+1,Wi+2,Wi+3)之四個回合之後,以及,彼此順序的或連續的。順序的SM4回合緊跟隨在對應於源運算元的四個先前的SM4回合之後。目的地儲存位置可以由指令明確地指明或以其它方式標示(例如隱含地標示)。代表地,執行單元、指令處理設備、或處理器可以執行指令及儲存結果。在某些實施例中,源及/或結果可以為對圖4-5中任一圖說明或顯示的任何源及/或結果,或是本文中任何它處所述的其它結果。
顯示的方法涉及架構作業(例如從軟體的觀點可見的那些作業)。在其它實施例中,方法選擇性地包含一或更多微架構作業。舉例而言,指令可以被提取、解碼,源運算元可以被存取,執行單元可以執行微架構作業以實施指令、等等。在某些實施例中,方法選擇性地包含評估(F)函數(用於密碼)、評估(F’)函數(用於鑰擴充)、執行Sbox查詢、執行XOR運算、執行旋轉運算、等等。在某些實施例中,方法選擇性地包含對圖4-7或等式1-8中任一者顯示或說明的任何作業。
圖4是方塊圖,顯示為回應SM4四密碼回合指令的實施例而執行之SM4四密碼回合作業430的實施例。在
一態樣中,四密碼回合可以是加密回合。在另一態樣中,四密碼回合可以是解密回合。在某些實施例,相同的指令可以用於加密及解密,主要的不同在於在加密與解密之間使用回合鑰的次序是相反的。為了使鑰相反,鑰可以以相反次序儲存,或者,在相同的鑰排程「飛擊」上使用混洗型或排列型指令,以使次序相反。
指令可以指明或以其它方式標示第一源緊縮資料運算元418以及指明或以其它方式標示第二源緊縮資料運算元422。在各式各樣的實施例中,源緊縮資料運算元可儲存於緊縮資料暫存器、記憶體位置、或其它儲存位置中。在某些實施例中,指令可以僅標示這二個源運算元作為源運算元。替代地,可以使用更少或更多的源運算元以提供相同的資料(例如一個256位元暫存器、四個64位元暫存器、等等)。在顯示的實施例中,第一及第二源緊縮資料運算元均為具有32位元的資料元之128位元運算元。在SM4演繹法的說明中,32位元資料元稱為「字」。
在所示的實施例中,第一源緊縮資料運算元418選擇性地具有四個先前的SM4加密或解密回合的四個32位元結果,分別標示為Xi,Xi+1,Xi+2,Xi+3。從整體演繹法觀點而言(例如藉由降低製備用於後續的回合之資料所需的資料操縱作業之數目),在相同的源緊縮資料運算元中包含四個先前的SM4加密或解密回合之所有四個32位元結果可以提供一定的效率及/或優點,但並非必須。在其它的實施例中,可以在二或更多源運算元中提供這四個32位
元結果、這四個32位元結果可以在第二源緊縮資料運算元422中與回合鑰混合、或是以其它方式提供這四個32位元結果。
如同所示,在某些實施例中,根據回合次序(例如根據上升或下降的回合次序),選擇性地配置四個先前的SM4加密或解密回合的四個32位元結果。舉例而言,在顯示中,第四個先前SM4回合的第一32位元結果(Xi)儲存在位元[31:0]中,第三個先前SM4回合的第二32位元結果(Xi+1)儲存在位元[63:32]中,第二個先前SM4回合的第三32位元結果(Xi+2)儲存在位元[95:64]中,以及,正好先前的SM4回合的第四32位元結果(Xi+3)儲存在位元[127:96]中。在本實施例中,回合結果的年齡隨著漸減的位元重要性而增加(例如較老的回合的結果比較年輕的回合之結果儲存在較低次序的位元位置)。在替代實施例中,可以選擇性地使用相反的次序。從整體的演繹法觀點而言(例如藉由降低製備用於後續回合的資料所需的資料操縱之數目),儲存根據回合次序配置的結果傾向於提供一定的效率或優點,但並非必須。在另一實施例中,元件可以依各式各樣的其它配置儲存,不一定要根據回合次序。
在所示的實施例中,第二源緊縮資料運算元422選擇性地具有對應於四個先前的SM4加密或解密回合之四個32位元回合鑰,以rKi、rKi+1、rKi+2、rKi+3標示。從整體演繹法的觀點而言,在相同的源緊縮資料運算元中包含所
有四個回合鑰可以提供一定的效率及/或優點,但並非必須。在其它的實施例中,可以在二或更多源運算元中提供這四個回合鑰、這四個回合鑰可以在相同的源緊縮資料中與先前的SM4密碼回合的結果相混合、或是以其它方式提供這四個回合鑰。
如同所示,在某些實施例中,根據回合次序(例如根據上升或下降的回合次序),選擇性地配置四個回合鑰。舉例而言,在顯示中,第四個先前SM4回合的第一32位元回合鑰(rKi)儲存在位元[31:0]中,第三個先前SM4回合的第二32位元回合鑰(rKi+1)儲存在位元[63:32]中,第二個先前SM4回合的第三32位元回合鑰(rKi+2)儲存在位元[95:64]中,以及,正好先前的SM4回合的第四32位元回合鑰(rKi+3)儲存在位元[127:96]中。在本實施例中,用於回合鑰的回合年齡隨著運算元或暫存器中漸減的位元重要性而增加(例如rKi比rKi+3用於更老的回合)。在替代實施例中,也可以選擇性地使用相反的次序。從整體的演繹法觀點而言,儲存根據回合次序配置的回合鑰傾向於提供一定的效率或優點,但並非必須。在另一實施例中,元件可以依各式各樣的其它配置儲存,不一定要根據回合次序。
再參考圖4,結果緊縮資料426可以被產生及儲存於目的地儲存位置中,以回應指令/作業。在某些實施例中,結果緊縮資料包含四個緊接的及順序的加密或解密回合之四個32位元結果,以Xi+4,Xi+5,Xi+6,Xi+7標示。四個緊接的及順序的回合緊隨在對應於輸入資料元Xi,Xi+1,
Xi+2,及Xi+3之四回合之後,以及彼此是順序或連續的回合。從整體的演繹法觀點而言,在相同的結果緊縮資料中包含全部四個這些32位元結果可以提供一定的效率及/或優點,但並非必須。在其它實施例中,可以以二或更多結果緊縮資料運算元,提供這四個32位元結果。
在某些實施例中,根據回合次序(例如根據上升或下降的回合次序),選擇性地配置四個32位元結果。舉例而言,某些實施例中,第四個最近的SM4密碼回合的第一32位元結果(Xi+4)儲存在位元[31:0]中,第三個最近的SM4密碼回合的第二32位元結果(Xi+5)儲存在位元[63:32]中,第二個最近的SM4密碼回合的第三32位元結果(Xi+6)儲存在位元[95:64]中,以及,最近的SM4密碼回合的第四32位元結果(Xi+7)儲存在位元[127:96]中。此外,在某些實施例中,四個32位元結果(亦即,Xi+4,Xi+5,Xi+6,Xi+7)可以選擇性地根據與輸入源資料元(亦即,Xi,Xi+1,Xi+2,Xi+3及/或rKi,rKi+1,rKi+2,rKi+3)相同的回合次序而配置。從整體演繹法的觀點,根據回合次序配置四個32位元結果以及/或根據與源/輸入資料相同的回合次序配置它們,可以傾向於提供一定效率或優點,但並非必須。
圖5是方塊圖,顯示為回應SM4四鑰擴充回合指令的實施例而執行之SM4四鑰擴充回合作業530的實施例。除非另外指令或清楚顯示,否則,上述對於圖4的四密碼回合作業所述的特徵、細節、變化及替代也可以選擇性地應用至圖5的四鑰擴充回合作業。
指令可以指明或以其它方式標示第一源緊縮資料運算元518,以及指明或以其它方式標示第二源緊縮資料運算元522。在各式各樣的實施例中,源運算元可儲存於緊縮資料暫存器、記憶體位置、或其它儲存位置中。在某些實施例中,指令可以僅標示這二個源運算元作為源運算元。替代地,可以使用更少或更多的源運算元以提供相關資料。在說明的實施例中,第一及第二源緊縮資料運算元518,522均為具有32位元的資料元或「字」之128位元運算元。
在所示的實施例中,第一源緊縮資料運算元518選擇性地具有四個先前的SM4鑰擴充回合的四個32位元結果,分別標示為Ki,Ki+1,Ki+2,Ki+3。舉例而言,在顯示中,第四個先前SM4鑰擴充回合的第一32位元結果(Ki)儲存在位元[31:0]中,第三個先前SM4鑰擴充回合的第二32位元結果(Ki+1)儲存在位元[63:32]中,第二個先前SM4鑰擴充回合的第三32位元結果(Ki+2)儲存在位元[95:64]中,以及,正好先前的SM4鑰擴充回合的第四32位元結果(Ki+3)儲存在位元[127:96]中。第一個四個所謂的區段(亦即,K0,K1,K2,K3)除外,這32位元結果中的各結果代表先前回合的回合鑰。
第二源緊縮資料運算元522選擇性地具有四個32位元鑰產生常數,標示為CKi,CKi+1,CKi+2,CKi+3。回想SM4演繹法界定要輸入至等式7代表的鑰擴充回合函數(F’)之三十二個預定的鑰產生常數CK0-CK31。在說明中,第四
個先前SM4鑰擴充回合的第一32位元鑰產生常數(CKi)儲存在位元[31:0]中,第三個先前SM4鑰擴充回合的第二32位元鑰產生常數(CKi+1)儲存在位元[63:32]中,第二個先前SM4鑰擴充回合的第三32位元鑰產生常數(CKi+2)儲存在位元[95:64]中,以及,正好先前的SM4鑰擴充回合的第四32位元鑰產生常數(CKi+3)儲存在位元[127:96]中。
結果緊縮資料526可被產生及儲存於目的地儲存位置中,以回應指令/作業。在某些實施例中,結果緊縮資料包含四個緊接的及順序的鑰擴充回合之四個32位元結果,以Ki+4,Ki+5,Ki+6,Ki+7標示。四個緊接的及順序的回合緊隨在對應於輸入資料元之四回合(亦即,Ki,Ki+1,Ki+2,Ki+3)之後,以及彼此是順序或連續的回合。如同所示,在某些實施例中,第四個最近的SM4鑰擴充回合的第一32位元結果(Ki+4)儲存在位元[31:0]中,第三個最近的SM4密碼回合的第二32位元結果(Ki+5)儲存在位元[63:32]中,第二個最近的SM4鑰回合的第三32位元結果(Ki+6)儲存在位元[95:64]中,以及,最近的SM4鑰回合的第四32位元結果(Ki+7)儲存在位元[127:96]中。
注意,在說明的實施例中,四個先前的SM4鑰擴充回合之所有四個32位元結果(亦即,Ki,Ki+1,Ki+2,及Ki+3)在相同的源緊縮資料518中,所有四個32位元鑰產生常數(亦即,CKi,CKi+1,CKi+2,及CKi+3)在相同的源緊縮資料522中,以及,四個緊跟在後及順序的鑰擴充回合之所有四個32位元結果(亦即,Ki+4,Ki+5,Ki+6,及Ki+7)
在相同的源緊縮資料526中。如同先前所述般,從整體演繹法的觀點而言,在相同的運算元內包含類似型式的資料元件可以提供一定的效率或優點,但並非必須。此外,在說明的實施例中,四個先前的SM4鑰擴充回合(亦即,Ki,Ki+1,Ki+2,Ki+3)的32位元結果是根據回合次序配置,四個32位元鑰產生常數(亦即,CKi,CKi+1,CKi+2,CKi+3)以相同次序配置,四個緊隨在後及順序的鑰擴充回合(亦即,Ki+4,Ki+5,Ki+6,Ki+7)的四個32位元結果以相同的回合次序配置。如先前所述般,從整體演繹法觀點而言,配置類似型式的資料元件回合次序,以及,特別是將各不同型式的資料元件配置於相同回合次序中會傾向於提供一定效率及/或優點,但並非必須。在其它實施例中,這些各式各樣的不同型式的資料元件的某些或全部可以不同地配置於一或更多緊縮資料運算元之間,不一定要將類似型式的資料元保持在相同的運算元中,且不一定根據回合次序,而在二運算元之間及運算元內重配置是可能的且是可思及的。
於下列出執行四回合的SM4加密之碼的一舉例說明的實施例。在此碼中,rdi代表指向儲存暗碼文結果之16位元組的指標器,rsi代表指向明文輸入資料之16位元組的指標器,rdx代表指向包含回合鑰之指向輸入鑰排程的指標器。SMS4RNDS4是給予SM4四加密回合指令的名稱。Xmm0及xmm1代表128位元緊縮資料暫存器。
圖6是SM4執行單元614的舉例說明的實施例之方塊圖。在某些實施例中,SM4執行單元能夠具有SM4密碼及鑰擴充中至少之一。在其它實施例中,SM4執行單元能夠具有SM4密碼及鑰擴充。SM4執行單元與第一源緊縮資料618和第二源緊縮資料622相耦合。在本實例中,第一源緊縮資料具有四個正好先前的回合的四個結果(Wi,Wi+1,Wi+2,Wi+3)。在本實例中,第二源緊縮資料具有四個正好先前的回合的四個值(Ki,Ki+1,Ki+2,Ki+3)。在密碼的情形中,這可為四回合鑰(例如rKi,rKi+1,rKi+2,rKi+3)。在鑰擴充的情形中,這可為四個預定的鑰產生常數(例如CKi,CKi+1,CKi+2,CKi+3)。
四個正好先前的回合的四個結果(Wi,Wi+1,Wi+2,Wi+3),及四個正好先前的回合的四個值(Ki,Ki+1,Ki+2,Ki+3)可以提供給SM4單回合執行邏輯640。邏輯640可以操作以執行單一SM4回合(例如單一SM4密碼回合及/或單一SM4鑰擴充回合)。邏輯640可以評估回合函數(例如,等式1的密碼回合函數或是等式7的鑰擴充回合函數),以產生目前回合(Wi+4)的結果。結果(Wi+4)可以儲存在
Wi+4緩衝器642中,以及,可以從邏輯640的輸出提供給其在Wi+4迴路643上的輸入。
結果(Wi+4)以及來自三個正好先前回合的結果(亦即,Wi+3,Wi+2,Wi+1)及值Ki+1可以用以再度評估回合函數以產生結果(Wi+5)。結果Wi+5可以儲存在Wi+5緩衝器644中,以及,可以從邏輯640的輸出提供給其在Wi+5迴路645上的輸入。結果(Wi+5)以及來自三個正好先前回合的結果(亦即,Wi+4,Wi+3,Wi+2)、以及值Ki+2可以用以再度評估回合函數以產生結果(Wi+6)。結果Wi+6可以儲存在Wi+6緩衝器646中,以及,可以從邏輯640的輸出提供給其在Wi+6迴路647上的輸入。結果(Wi+6)以及來自三個正好先前回合的結果(亦即,Wi+5,Wi+4,Wi+3)、以及值Ki+3可以用以再度評估回合函數以產生結果(Wi+7)。SM4執行單元接著將四個結果Wi+4,Wi+5,Wi+6,Wi+7儲存在結果緊縮資料626中。
這僅為適當的執行單元的一實例。為了便於說明,已說明迴路643、645、647,但是,邏輯640可以替代地固持這些值的拷貝以取代輸出它們及輸入它們。此外,如同本文中任何它處所述般,顯示之源及結果資料元件的配置並非必須。
圖7是SM4單回合執行邏輯740的舉例說明的實施例之方塊圖。邏輯740是用於圖6的邏輯640之一適當的舉例說明的實施例。在顯示的實施例中,邏輯740能夠進行SM4密碼及SM4鑰擴充,但是,在其它實施例中,
SM4執行單元僅能夠進行SM4密碼及SM4鑰擴充中之一(例如僅SM4密碼)。
邏輯740包含第一XOR邏輯750。在某些實施例中,第一XOR邏輯750可以取Wi+1、Wi+2、Wi+3及rki(用於密碼)或CKi(用於鑰擴充)作為輸入,以及,產生及輸出等於Wi+1 XOR Wi+2 XOR Wi+3 XOR rki(用於密碼)或等於Wi+1 XOR Wi+2 XOR Wi+3 XOR CKi(用於鑰擴充)之值。
SM4單回合執行邏輯也包含混合器替代函數實施邏輯752。在某些實施例中,邏輯752能夠實施密碼混合替代函數T(x)及/或鑰擴充混合器替代函數T’(x)。邏輯752包含非線性替代函數τ(x)實施邏輯754。非線性替代函數實施邏輯754的輸入與第一XOR邏輯750的輸出相耦合。在某些實施例中,非線性替代函數可以包含替代盒(Sbox)實施邏輯(例如,執行一或更多Sbox查詢或其它非線性型替代運算)。舉例而言,這包含硬體查詢表(例如,一系列根據導自輸入位元組的輸入選取訊號以選取多個輸入中之一的多輸入單輸出多工器。
混合器替代函數實施邏輯752也包含密碼線性替代函數L(B)實施邏輯756及/或鑰擴充線性替代函數L’(B)實施邏輯758。在顯示的實施例中,邏輯752包含L(B)實施邏輯756及L’(B)實施邏輯758。在其它實施例中,邏輯752僅包含二者之一而非二者(例如,僅邏輯756)。代表地,線性替代函數中之一包含XOR邏輯760、761及左旋邏輯
762、763。
SM4單回合執行邏輯也包含第二XOR邏輯764。第二XOR邏輯的輸入與混合器替代函數實施邏輯752的輸出耦合。在顯示的實施例中,第二XOR邏輯可以從邏輯756接收評估T(x)(例如,用於密碼)及/或從邏輯758接收評估T’(x)(例如,用於鑰擴充)。在某些實施例中,第二XOR邏輯可以產生及輸出等於Wi XOR T(x)(例如用於密碼)、或Wi XOR T’(x)(例如用於鑰擴充)的值,以產生用於目前回合(Wi+4)的32位元結果。
圖8A是用於SM4四回合密碼指令的指令格式870及用於SM4四回合鑰擴充指令的指令格式872之舉例說明的實施例的方塊圖。指令格式870具有第一作業碼或運算碼871以辨識要被執行的指令及/或作業的型式是SM4四回合(密碼)的型式。類似地,指令格式872具有第二、不同的作業碼或運算碼873以辨識要被執行的指令及/或作業的型式是SM4四回合鑰擴充的型式。運算碼代表眾多位元或是一或更多欄位。在顯示的實施例中,各指令格式也包含第一源指明符874-1、874-2、第二源指明符876-1、876-2、及選加的目的地指明符878-1、878-2,但是,本發明的範圍不侷限於此。舉例而言,這些指明符中的各指明符包含位元或一或更多欄位以指明暫存器的位址、記憶體位置、或其它儲存位置。
圖8B是用於單一SM4加速指令以執行密碼及鑰擴充等二者之指令格式880之舉例說明的實施例的方塊圖。指
令格式具有第一作業碼或運算碼881以辨識要被執行的指令及/或作業的型式是SM4四回合密碼或是SM4四回合鑰擴充中任一的型式。指令格式也具有密碼或鑰擴充選取器欄位882,以選取密碼(例如加密或解密)或鑰擴充是否要被執行。選取器欄位包含一或更多非運算碼位元。舉例而言,選取器欄位可以選擇性地由立即性提供(例如,8位元、4位元、或2位元立即性)。選取器欄位可以用以選取L(x)線性替代函數或L’(x)線性替代函數是否要被使用。在顯示的實例中,格式也包含第一源指明符874、第二源指明符876、及選加的目的地指明符878,但是,本發明的範圍不侷限於此。舉例而言,這些指明符中的各指明符包含位元或一或更多欄位以指明暫存器的位址、記憶體位置、或其它儲存位置。
圖8A-8B的格式僅是說明的實例。在其它實施例中,第一源指明符、第二源指明符、及目的地指明符中之一或更多(亦即,明確的指明符中之一)可以選擇性地為隱含的(例如,對於指令或是運算碼是隱含的)而不是被明確地指明。舉例而言,在某些實施例中,取代明確的目的地指明符,由第一及第二源指明符中之一指明的相同儲存位置可以選擇性地為隱含地或暗示地作為目的地儲存位置。此外,替代實施例可以具有更少或更多的源(例如,單一256位元源、四個64位元源、等等)。此外,顯示的欄位的次序/配置並非必須如此,而是欄位可以重配置、重疊,欄位不需要包含毗鄰的位元序列而是可由非毗鄰的或
分開的位元、等等構成。
此處所述的指令及處理器是要實施SM4密碼演繹法及取得與SM4密碼演繹法相符的值。在說明中會導致與SM4演繹法不一致的結果之任何可能的差異或不一致(例如導因於打字差誤或其它原因)並非有意的且是錯誤的。此外,雖然已說明SM4演繹法的目前版本,但是,須瞭解實施例也可應用至符合申請專利範圍的限定之此標準的擴充、此標準的衍生、此標準的修改、相關標準、等等。不論是否稱為SM4、SMS4、某些其它名稱,SM4標準是指此處所述之已知的標準。
處理器核心可以以不同方式實施、用於不同目的、及在不同處理器中。舉例而言,這些核心的實施包含:1)用於一般用途的計算之一般用途的有序核心;2)用於一般用途的計算之高性能的一般用途的亂序核心;3)主要用於圖形及/或科學(輸貫量)計算之特別用途的核心。不同處理器的實施包含:1)CPU,包含用於一般用途的計算之一或更多一般用途的有序核心及/或用於一般用途的計算之一或更多一般用途的亂序核心;以及,2)共處理器,包含一或更多主要用於圖形及/或科學(輸貫量)計算之特別用途的核心。這些不同的處理器導致不同的電腦系統架構,包含:1)與CPU在不同的晶片上之共處理器;2)在與CPU相同封裝中的不同晶片上的共處理器;3)
與CPU在相同晶粒上的共處理器(在此情形中,此共處理器有時稱為特別用途邏輯,例如集成的圖形及/或科學(輸貫量)邏輯、或是特別用途的核心);以及,4)系統晶片,在相同晶粒上包含所述CPU(有時稱為應用核心或是應用處理器)、上述共處理器、及其它功能。在說明舉例說明的處理器及電腦架構之後,接著說明舉例說明的核心架構。
圖9A是方塊圖,顯示根據本發明的實施例之舉例說明的有序管線及舉例說明的暫存器重命名、亂序發佈/執行管線。圖9B是方塊圖,顯示根據本發明的實施例之要包含於處理器中之舉例說明的有序架構核心及舉例說明的暫存器重命名、亂序發佈/執行架構核心。圖9A-B中的實線框顯示有序管線及有序核心,而選加的虛線框顯示暫存器重命名、亂序發佈/執行管線及核心。假定有序態樣是亂序態樣的子集合,將說明亂序態樣。
在圖9A中,處理器管線900包含提取級902、長度解碼級904、解碼級906、分配級908、重命名級910、排程(也稱為發送或發佈)級912、暫存器讀取/記憶體級914、執行級916、寫回/記憶體寫入級918、例外處理級922、及確定級924。
圖9B顯示處理器核心990,其包含耦合至執行引擎
單元950的前端單元930,引擎單元950及前端單元930都耦合至記憶體單元970。核心990可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或是混合或替代核心型式。又另一選項,核心990可為特別用途核心,例如,網路或通訊核心、壓縮引擎、共處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖形核心、等等。
前端單元930包含耦合至指令快取單元934的分枝預測單元932,指令快取單元934耦合至指令轉譯旁看緩衝器(TLB)936,指令轉譯旁看緩衝器(TLB)936耦合至指令提取單元938,指令提取單元938耦合至解碼單元940。解碼單元940(或解碼器)將指令解碼,以及產生從原始指令解碼、或是以其它方式反應原始指令、或是從原始指令導出之一或更多微作業、微碼進入點、微指令、其它指令、或其它控制訊號,以作為輸出。可以使用各種不同的機構以實施解碼單元940。適當機構的實例包含但不限於查詢表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心990包含微碼ROM或儲存微碼以用於某些巨集指令的其它媒介(例如,在解碼單元940或者是前端單元930內)。解碼單元940耦合至執行引擎單元950中的重命名/分配器單元952。
執行引擎單元950包含耦合至退出單元954及一或更多排程器單元956的集合之重命名/分配器單元952。排
程器單元956代表任何數目的不同排程器、包含保留站、中央指令窗、等等。排程器單元956耦合至實體暫存器檔案單元958。各實體暫存器檔案單元958代表一或更多實體暫存器檔案,不同的實體暫存器檔案儲存一或更多不同的資料型式,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如指令指標器,指令指標器是要被執行的下一指令之位置)、等等。在一實施例中,實體暫存器檔案單元958包括向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可以提供架構向量暫存器、向量遮罩暫存器、及一般用途暫存器。實體暫存器檔案單元958由退出單元954重疊以顯示實施暫存器重命名及亂序執行的各種方式(例如,使用再排序緩衝器和退出暫存器檔案;使用未來檔案、歷史緩衝器、及退出暫存器檔案;使用暫存器映射及暫存器庫;等等)。退出單元954及實體暫存器檔案單元958耦合至執行簇960。執行簇960包含一或更多執行單元962及一或更多記憶體存取單元964的集合。執行單元962執行多種作業(例如,偏移、加法、減法、乘法)及對各種型式的資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行。雖然某些實施例包含多個專用於特定指令或功能集的執行單元,但是,其它實施例可以僅包含都執行所有功能之多個執行單元或是僅一執行單元。由於某些實施例產生用於某些型式的資料/作業之分別的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮
點/向量整數/向量浮點管線、及/或記憶體存取管線,這些管線均具有它們自已的排程器單元、實體暫存器檔案單元、及/或執行簇-以及,在分別的記憶體存取管線的情形中,實施某些實施例,其中,僅有此管線的執行簇具有記憶體存取單元964),所以,排程器單元956、實體暫存器檔案單元958、及執行簇960顯示為可能是複數的。也應瞭解,在使用分別的管線之情形中,這些管線中之一或更多可以是亂序發佈/執行而其餘的為有序的。
記憶體存取單元964的組包含耦合至記憶體單元970,記憶體單元970包含資料轉譯旁看緩衝器(TLB)單元972,資料TLB單元972耦合至資料快取單元974,資料快取單元974耦合至等級2(L2)快取單元976。在一舉例說明的實施例中,記憶體存取單元964包含載入單元、儲存位址單元、及儲存資料單元,各單元均耦合至記憶體單元970中的資料TLB單元972。指令快取單元934又耦合至記憶體單元970中的等級2(L2)快取單元976。L2快取單元976耦合至一或更多其它等級的快取記憶體以及最後耦合至主記憶體。
舉例而言,舉例說明的暫存器重命名、亂序發佈/執行核心架構可以實施如下所述的管線900:1)指令提取938執行提取及長度解碼級902和904;2)解碼單元940執行解碼級906;3)重命名/分配器單元952執行分配級908及重命名級910;4)排程器單元956執行排程級912;5)實體暫存器檔案單元958及記憶體單元970執行暫存器
讀取/記憶體讀取級914;執行簇960執行執行級916;6)記憶體單元970及實體暫存器檔案單元958執行寫回/記憶體寫入級918;7)牽涉例外處理級922的各種單元;及8)退出單元954及實體暫存器單元958執行確定級924。
核心990支援一或更多指令集(例如,x86指令集(具有添加更新的版本之某些延伸);加州Sunnyvale的MIPS Technologies公司之MIPS指令集;加州Sunnyvale的ARM Holdings公司的ARM指令集(具有例如NEON等選加的延伸)),包含此處所述的指令。在一實施例中,核心990包含邏輯以支援緊縮資料指令集延伸(例如,AVX1、AVX2),藉以允許由很多多媒體應用使用的作業使用緊縮資料來執行。
應瞭解,核心可支援多緒化(執行二或更多平行組的作業或緒),以及以包含時間切片多緒化、同時多緒化(其中,單一實體核心提供用於各緒之邏輯核心,實體核心是同時多緒的)等的各種式方、或者其組合,如此執行(例如,在Intel®的混合緒化技術中之時間切片提取及解碼和之後的同時多緒化)。
雖然在亂序執行的背景下說明暫存器重命名,但是,應瞭解,在有序架構中可使用暫存器重命名。雖然所示的處理器之實施例也包含分別的指令及資料快取單元934/974以及共用的L2快取單元976,但是,替代的實施例可以具有用於指令及資料之單一內部快取記憶體,例如等級1(L1)內部快取記憶體、或多等級內部快取記憶體。
在某些實施例中,系統包含內部快取記憶體及核心和/或處理器之外部的外部快取記憶體。替代地,所有快取記憶體可以是在核心及/或處理器的外部。
圖10A-B是方塊圖,顯示更特定舉例說明的有序核心架構,其中,核心是晶片中數個邏輯區塊(包含相同型式及/或不同型式的其它核心)中之一。邏輯區塊視應用而經由高頻寬互連網路(例如環式網路)與某些固定的功能邏輯、記憶體I/O介面、及其它必要的I/O邏輯通訊。
圖10A是根據本發明的實施例之單一處理器核心、以及其對晶粒上互連網路1002的連接及其區域子集合的等級2(L2)快取記憶體1004之方塊圖。在一實施例中,指令解碼器1000支援具有緊縮資料指令集延伸的x86指令集。L1快取記憶體1006允許對快取記憶體的低潛候期存取進入純量及向量單元。雖然在一實施例中(為簡化設計),純量單元1008及向量單元1010使用分別的暫存器組(分別地,純量暫存器1012及向量暫存器1014)以及在它們之間傳輸的資料被寫至記憶體並接著從等級1(L1)快取記憶體1006讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集合或是包含允許資料在二暫存器檔案之間傳輸而不用被寫入及讀回的通訊路徑)。
L2快取記憶體的區域子集合1004是全區L2快取記
憶體的部份,全區L2快取記憶體是被分割成分別的區域子集合,每一處理器核心一區域子集合。各處理器核心對其自己的區域子集合L2快取記憶體1004具有直接存取路徑。由處理器核心讀取的資料儲存在其L2快取子集合1004中,以及,可以與其它存取它們自己的區域L2快取子集合之處理器核心平行地被快速存取。由處理器核心寫入的資料儲存在它自己的L2快取子集合1004中及於需要時從其它子集合湧入。環式網路確保用於共用資料的相干性。環式網路是雙向的,以允許例如處理器核心、L2快取記憶體及其它邏輯區塊等代理器在晶片內彼此通訊。各環式資料路徑是每一方向1012位元寬。
圖10B是根據本發明的實施例之圖10A中的處理器核心之部份擴充視圖。圖10B包含L1快取記憶體1004之L1資料快取記憶體1006A部份、以及與向量單元1010及向量暫存器1014有關的更多詳節。具體而言,向量單元1010是16位元寬的向量處理單元(VPU)(請參見16寬的ALU 1028),其執行整數、單精度浮動、及雙精度浮動指令中之一或更多。VPU以拌和單元1020支援拌和暫存器輸入、以數值轉換單元1022A-B支援數值轉換、以及以記憶體輸入上的複製單元1024支援複製。寫入遮罩暫器1026允許預測結果向量寫入。
圖11是根據本發明的實施例之具有一個以上的核
心、具有整合記憶體控制器及具有整合的圖形之處理器1100的方塊圖。圖11中的粗線框顯示具有單核心1102A的處理器1100、系統代理器1110、一或更多匯流排控制器單元1116,而選加的虛線框顯示具有多核心1102A-N的替代處理器1100、系統代理器單元1110中的一或更多整合的記憶體控制器單元1114的組、以及特別用途的邏輯1108。
因此,處理器1100的不同實施包含:1)具有與圖形及/或科學(輸貫量)邏輯(包含一或更多核心)整合之特定用途的邏輯1108之CPU,以及,核心1102A-N是一或更多一般用途核心(例如,一般用途的有序核心、一般用途的亂序核心、二者的組合);2)設有核心1102A-N的共處理器是大數目的主要用於圖形及/或科學(輸貫量)之特定用途核心;以及,3)設有核心1102A-N的共處理器是大數目的之一般用途的有序核心。因此,處理器1100可為一般用途的處理器、共處理器或特定用途的處理器,舉例而言,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途的圖形處理單元)、高輸貫量多整合核心(MIC)共處理器(包含30或更多的核心)、嵌入式處理器、等等。處理可以實施於一或更多晶片中。使用例如BiCMOS、CMOS、或NMOS等多種製程技術中的任一技術,處理器1100可以是部份及/或實施在一或更多基底上。
記憶體階層包含在核心內的一或更多等級的快取、一
或更多共用快取單元1106、及耦合至整合記憶體控制器單元1114組之外部記憶體(未顯示)。共用快取單元1106組可以包含例如等級2(L2)、等級3(L3)、等級4(L4)、或其它等級快取等一或更多中級快取、最後等級快取(LLC)、及/或其組合。雖然在一實施例中,環式互連單元1112將整合圖形邏輯1108、共用快取單元1106的組、及系統代理單元1110/整合的記憶體控制器單元1114互連,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。在一實施例中,在一或更多快取單元1106與核心1102-A-N之間維持相干性。
在某些實施例中,一或更多核心1102A-N能夠多緒化。系統代理器1110包含那些元件協調及作業核心1102A-N。系統代理器單元1110可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含調節核心1102A-N及整合圖形邏輯1108的電力狀態所需的邏輯及元件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構指令集的觀點而言,核心1102A-N可以是同質的或異質的;亦即,核心1102A-N中的二或更多核心能夠執行相同的指令集,而其它核心能夠僅執行指令集的子集合或不同的指令集。
圖12-15是舉例說明的電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工
作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置等領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠併有此處所揭示的處理器及/或其它執行邏輯的眾多種類的系統或電子裝置通常是適合的。
現在參考圖12,其顯示根據本發明的一實施例之系統1200的方塊圖。系統1200可以包含耦合至控制器集線器1220之一或更多處理器1210,1215。在一實施例中,控制器集線器1220包含圖形記憶體控制器集線器(GMCH)1290及輸入/輸出集線器(IOH)1250(可以在分別的晶片上);GMCH 1290包含記憶體及圖形控制器,記憶體1240及共處理器1245耦合至記憶體及圖形控制器;IOH 1250將輸入/輸出(I/O)裝置1260耦合至GMCH 1290。替代地,記憶體及圖形控制器中之一或二者整合於處理器之內(如此處所述般),記憶體1240及共處理器1245直接耦合至處理器1210,以及,控制器集線器1220與IOH 1250在單一晶片中。
在圖12中以虛線顯示增加的處理器1215之選擇性的本質。各處理器1210、1215包含此處所述的處理核心中之一或更多且可為處理器1100的某版本。
舉例而言,記憶體1240可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或是二者的組合。對於至
少一實施例而言,控制器集線器1220經由例如前側匯流排(FSB)等多點匯流排、例如快速路徑互連(QPI)等點對點介面、或是類似連接1295而與處理器1210、1215通訊。
在一實施例中,共處理器1245是特別用途的處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。在一實施例中,控制器集線器1220包含整合圖形加速器。
以包含架構、微架構、熱、耗電特徵、等等度量計量光譜的觀點而言,實體源1210、1215之間有各種差異。
在一實施例中,處理器1210執行控制一般型式的資料處理作業的指令。嵌入於指令內的可為共處理器指令。處理器1210將這些共處理器指令視為應由附接的共處理器1245執行的型式。因此,處理器1210在共處理器匯流排或是其它互連上發佈這些共處理器指令(或是代表共處理器指令的控制訊號)給共處理器1245。共處理器1245接受及執行收到的共處理器指令。
現在參考圖13,其為根據本發明的實施例之第一更特定的舉例說明的系統1300的方塊圖。如圖13中所示般,多處理器系統1300是點對點互連系統,以及包含經由點對點互連1350耦合的第一處理器1370和第二處理器1380。各處理器1370及1380可以是某版本的處理器1100。在本發明的一實施例中,處理器1370和1380分別是處理器1210和1215,而共處理器1338是共處理器1245。在另一實施例中,處理器1370及1380分別是處理
器1210和共處理器1245。
處理器1370和1380顯示為分別包含整合記憶體控制器(IMC)單元1372和1382。處理器1370也包含點對點(P-P)介面1376和1378作為其匯流排控制器單元的一部份;類似地,第二處理器1380包含P-P介面1386和1388。處理器1370、1380使用P-P介面電路1378、1388而經由點對點(P-P)介面1350交換資訊。如圖13所示,IMC 1372及1382將處理器耦合至各別記憶體,亦即記憶體1332和記憶體1334,它們可以是本地附著至各別處理器的主記憶體的部份。
處理器1370、1380使用點對點介面電路1376、1394、1386、1398,經由個別的P-P介面1352、1354而均可以與晶片組1390交換資訊。晶片組1390經由高性能圖形介面1339,可選擇地與共處理器1338交換資訊。在一實施例中,共處理器1338是特定用途處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、CPGPU、嵌入式處理器、等等。
共用的快取記憶體(未顯示)可以包含任一處理器中或二處理器的外部、但尚未經由P-P互連與處理器連接,以致於假使處理器處於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取記憶體中。
晶片組1390可以經由介面1396而耦合至第一匯流排1316。在一實施例中,第一匯流排1316可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三
代I/O互匯流排等匯流排,但是,本發明的範圍不侷限於此。
如圖13中所示般,各式各樣的I/O裝置1314與匯流排橋接器1318耦合至第一匯流排1316,匯流排橋接器1318耦合第一匯流排1316至第二匯流排1320。在一實施例中,例如共處理器、高輸貫量MIC處理器、GPGPU、加速器(例如圖形加速器或是數位訊號處理(DSP)單元)、現場可編程閘陣列、或是任何其它處理器等一或更多增加的處理器1315耦合至第一匯流排1316。在一實施例中,第二匯流排1320可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排1320,舉例而言,包含鍵盤及/或滑鼠1322、通訊裝置1327及例如碟片驅動器或其它大量儲存裝置等包含指令/碼及資料1330的儲存單元1328。此外,音訊I/O 1324可以耦合至第二匯流排1320。注意,其它架構是可能的。舉例而言,取代圖13的點對點架構,系統可以實施多點匯流排或其它此類架構。
現在參考圖14,其顯示根據本發明的實施例之第二更特定舉例說明的系統1400之方塊圖。圖13及14中類似的元件帶有類似的代號,以及,圖13的某些態樣在圖14中被省略,以免模糊圖14的其它態樣。
圖14顯示處理器1370、1380分別包含整合的記憶體及/I/O控制邏輯(CL)1372和1382。因此,CL 1372、1382包含整合記憶體控制器單元及包含I/O控制邏輯。
圖14顯示不僅記憶體1332、1334耦合至CL 1372、1382,I/O裝置1414也耦合至控制邏輯1372、1382。舊制I/O裝置1415耦合至晶片組1390。
現在參考圖15,其顯示根據本發明的實施例之SoC 1500的方塊圖。圖11中類似的元件帶有類似的代號。而且,虛線框是關於更多進階的SoCs的選加特點。在圖15中,互連單元1502耦合至:應用處理器1510,包含一或更多核心202A-N及共用快取單元1106的集合;系統代理器單元1110;匯流排控制器單元1116;整合記憶體控制器單元1114;包含整合圖形邏輯、影像處理器、音訊處理器、以及視訊處理器之一或更多共處理器1520的組;靜態隨機存取記憶體(SRAM)單元1530;直接記憶體存取(DMA)單元1532;以及用於耦合至一或更多外部顯示器的顯示單元1540。在一實施例中,共處理器1520包含特定用途的處理器,例如網路或通訊處理器、壓縮引擎、GPGPU、高輸貫量MIC處理器、嵌入式處理器、等等。
此處揭示的機構實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
例如圖13中所示的碼1330等程式碼可以應用至輸入資訊以執行此處所述的功能和產生輸出資訊。輸出資訊可
以以已知方式應用至一或更多輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程序或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機構在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是已編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地製造邏輯的製造機器或處理器。
此機器可讀取的儲存媒體包含但不限於由機器或裝置製造或形成的物件之非暫時性、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、相位改變記憶體(PCM)、磁性或光學卡、或適用於
儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有指令或含有設計資料之非暫時的、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特徵。這些實施例也意指程式產品。
仿真(包含二進位轉譯、碼變形、等等)
在某些情形中,指令轉換器可以用以將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變形、模仿、或其它方式轉換至由核心處理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份不在處理器上。
圖16是方塊圖,根據本發明的實施例之對比使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、韌體、硬體、或其各種結合來實施。圖16顯示高階語言1602的程式,其可以由x86編譯器1604編譯以產生x86二進位碼1606,二進位碼1606可以由具有至少一x86指令集核心1616的處理器原地執行。具有至少一x86指令集核心1616的處理器代表藉由共容地執行或其它方式地處理下述,而能夠與具有至少一x86指令集核心的英特爾
處理器執行實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的Intel處理器上執行為目的之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器1604代表可以操作以產生x86二進位碼1606(例如,物件碼)之編譯器,x86二進位碼1606藉由或不藉由增加的鏈結處理,都可以在具有至少一x86指令集核心1616的處理器上執行。類似地,圖16顯示高階語言1602的程式,使用替代指令集編譯器1608,可以將其編譯以產生替代指令集二進位碼1610,替代指令集二進位碼1610可以由不具有至少一x86指令集核心1614的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器1612用以將x86二進位碼1606轉換成可以由不具有x86指令集核心1614的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製造,所以,此轉換的碼不太可能與替代指令集二進位碼1610相同;但是,所述轉換的碼將完成一般操作及由來自替代指令集的指令組成。因此,指令轉換器1612代表軟體、韌體、硬體或其組合,其經由仿真、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼1606。
圖4-8中任一圖說明的組件、特點、及細節也可選擇地用於圖2-3中的任一圖中。此外,用於此處所述的任何裝置之此處所述的組件、特點、及細節也可選擇地用於及/或應用至在實施例中由及/或與此裝置執行的此處所述的任何方法。此處所述的任何處理器可以包含在此處揭示之任何電腦系統或其它系統中。在某些實施例中,指令具有此處揭示的指令格式之特點或細節,但這並非必要。
在說明及申請專利範圍中,使用「連接」及/或「耦合」等詞與它們的衍生。這些詞並非要作為彼此的同義字。相反地,在實施例中,「連接」可用以表示二或更多元件是彼此直接實體及/或電接觸。「耦合」意指二或更多元件是彼此直接及/或間接接觸。但是,「耦合」也意指二或更多元件彼此未直接接觸但仍然彼此協力或互動。舉例而言,執行單元可以經由一或更多介入的組件而與暫存器及/或解碼單元相耦合。在圖式中,使用箭頭以顯示連接及耦合。
在說明及/或申請專利範圍中,使用「邏輯」術語。此術語意指硬體、韌體、軟體、或其各種組合。在舉例說明的實施例中,此術語意指積體電路、特定應用積體電路、類比電路、數位電路、程式邏輯裝置、包含指令的記憶體裝置、等等、以及其各種組合。在某些實施例中,其包含至少某些硬體(例如,電晶體、閘、其它電路組件、等等)。
使用「及/或」等詞。如同此處所使用般,「及/或」
意謂一或另一或是二者(例如,A及/或B意指A或B或是A及B)。
在上述實施例中,揭示眾多特定細節,以助於完整瞭解本發明的實施例。但是,不用這些特定細節中的某些細節,仍可實施其它實施例。本發明的範圍並非由上述特定實例決定而是僅由下述申請專利範圍決定。在其它情形中,以方塊圖形式及/或無細節,顯示習知的電路、結構、裝置、及作業,以免模糊說明之瞭解。在被視為適當時,在多個圖中,除非另外指明,否則,重複代號、或代號的尾部,以標示選擇性地具有類似的或是相同的特徵之對應的或類似的元件。
某些作業可以由硬體組件執行以及可以以機器可執行的或電路可執行的指令具體實施,這些指令被用以促成及/或造成依執行作業之指令編程的機器、電路或硬體組件(例如處理器、處理器的部份、電路、等等)。作業可以由硬體及軟體的結合選擇性地執行。處理器、機器、電路、或硬體包含特定的或特定別的電路或其它邏輯(例如,可能與韌體及/或軟體相結合之硬體),可操作以執行及/或處理機器指令及儲存結果以回應指令。
某些實施例包含製品(例如,電腦程式產品),製品包含機器可讀取的媒體。媒體包含機構,機構提供(例如儲存)可由機器讀取的形式之資訊。機器可讀取的媒體提供或於其上儲存指令或指令序列,假使及/或由機器執行時,這些指令或指令序列可操作以促使機器執行及/或造
成機器執行此處所述的一或更多作業、方法、或技術。機器可讀取的媒體提供(例如儲存)此處揭示的指令之一或更多實施例。
在某些實施例中,機器可讀取的媒體包含實體的及/或非暫時的機器可讀取的儲存媒體。舉例而言,實體的及/或非暫時的機器可讀取的儲存媒體包含軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹拭及可編程ROM(EPROM)、電可抹拭及可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非依電性記憶體、非依電性資料儲存裝置、非暫時記憶體、非暫時資料儲存裝置、等等。
適當的機器實例包含但不限於一般用途處理器、特別用途處理器、指令處理裝置、數位邏輯電路、積體電路、等等。適當的機器之又其它實例包含計算裝置或是包含處理器、指令處理裝置、數位邏輯電路、或積體電路之其它電子裝置。這些計算裝置及電子裝置的實例包含但不限於桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、筆記電腦、智慧型電話、行動電話、其它無線裝置、伺服器、網路裝置(例如路由器及交換機)。行動網際網路裝置(MID)、媒體播放器、智慧型電視、桌上型易網機、機上盒、及電動玩具控制器。
舉例而言,在本說明書中述及的「一實施例」、「實施例」、「一或更多實施例」、「某些實施例」係表示特定特點包含在本發明的實施中但非必要。類似地,在說明中,為了使揭示流暢及助於瞭解各式各樣的發明態樣,各式各樣的特點有時群聚於單一實施例、圖式、或其說明中。但是,本揭示的方法不應被解釋成反應本發明要求比各申請專利範圍項中載述的特點還多的特點。相反地,如後述申請專利範圍所反應般,發明的態樣少於單一揭示的實施例之所有特點。因此,跟隨在詳細說明之後的申請專利範圍於此併入實施方式一節中,以各項申請專利範圍依據它自己作為本發明的分別實施例。
下述實例關於其它實施例。在一或更多實施例中的任意處可以使用實例中的特點。
實例1是處理器或包含眾多緊縮資料暫存器、及解碼單元以解碼指令的其他裝置。指令是標示會具有四先前的SM4密碼回合的四個32位元結果、及四個32位元值之一或更多源緊縮資料運算元。處理器也包含與解碼單元及眾多緊縮資料暫存器耦合的執行單元。執行單元會將四個正好後續的及順序的SM4密碼回合的四個32位元結果儲存在會由指令標示的目的地儲存位置中,以回應指令。
實例2包含實例1的處理器,其中,解碼單元會將指令解碼,所述指令標示會具有四個先前的SM4密碼回合
之四個32位元結果之第一128位元源緊縮資料運算元。指令也會標示會具有四個32位元值的第二128位元源緊縮資料運算元。
實例3包含實例1-2中任一實例的處理器,其中,四個先前的SM4密碼回合的四個32位元結果是根據回合次序而配置在源緊縮資料運算元中。
實例4包含實例1-3中任一實例的處理器,其中,用於對應回合的32位元值及32位元結果會儲存於第一及第二源緊縮資料運算元的對應資料元件中。
實例5包含實例1-4中任一實例的處理器,其中,解碼單元會將指令解碼,其中,四個32位元結果是四個先前SM4加密回合的四個32位元結果。而且,其中,四個32位元值是用於四個先前SM4加密回合的四個32位元回合鑰。此外,其中執行單元會儲存四個正好後續的及順序的回合之四個32位元結果,所述四個32位元結果是四個正好後續的及順序的SM4加密回合之四個32位元結果。
實例6包含實例1-4中任一實例的處理器,其中,解碼單元會將指令解碼,其中,四個32位元結果是四個先前SM4解密回合的四個32位元結果。而且,其中,四個32位元值是用於四個先前SM4解密回合的四個32位元回合鑰。此外,其中,執行單元會儲存四個正好後續的及順序的回合之四個32位元結果,所述四個32位元結果是四個正好後續的及順序的SM4解密回合之四個32位元結果。
實例7包含實例1-4中任一實例的處理器,其中,解碼單元會將指令解碼,在該指令中,四個32位元結果是用於四個先前SM4鑰擴充回合的四個32位元回合鑰。而且,其中,四個32位元值是用於四個先前SM4鑰擴充回合的四個32位元鑰產生常數。此外,其中,執行單元會儲存四個正好後續的及順序的回合之四個32位元結果,所述四個32位元結果是四個正好後續的及順序的SM4鑰擴充回合之四個32位元回合鑰。
實例8包含實例1-3中任一實例的處理器,其中,解碼單元會將指令解碼,該指令會標示第一源緊縮資料運算元,第一源緊縮資料運算元會將第四個先前的SM4密碼演繹法回合的第一32位元結果包含在位元[31:0]中,以及,將第三個先前的SM4密碼演繹法回合的第二32位元結果包含在位元[63:32]中。第一源緊縮資料運算元也會將第二個先前的SM4密碼演繹法回合的第三32位元結果包含在位元[95:64]中,以及,將正好先前的SM4密碼演繹法回合的第四32位元結果包含在位元[127:96]中。
實例9包含實例8的處理器,其中,執行單元為回應指令而儲存結果緊縮資料,結果緊縮資料會將第四個最近的SM4密碼演繹法回合的第一32位元結果包含在位元[31:0]中,以及,將第三個最近的SM4密碼演繹法回合的第二32位元結果包含在位元[63:32]中。結果緊縮資料也會將第二個最近的SM4密碼演繹法回合的第三32位元結果包含在位元[95:64]中,以及,將最近的SM4密碼演
繹法回合的第四32位元結果包含在位元[127:96]中。
實例10包含實例1至9中任一實例的處理器,其中,解碼單元將指令解碼,所述指令具有一或更多位元以指明四個正後續及順序的SM4密碼回合是否為密碼回合或是鑰擴充回合。
實例11包含實例1至9中任一實例的處理器,其中,執行單元對四個正好後續的及順序的SM4密碼回合中的各回合執行第一組互斥或(XOR)運算、非線性替代函數運算、包含XOR及旋轉運算的線性替代函數運算、以及XOR運算,以回應指令。
實例12包含實例1至9中任一實例的處理器,其中,執行單元將四個正好後續的及順序的SM4密碼回合中的四個32位元結果儲存在由與所有一或更多源緊縮資料運算元分開的指令明確指明的目的地儲存位置中,以回應指令。
實例13包含實例1至9中任一實例的處理器,其中,執行單元將四個正好後續的及順序的SM4密碼回合的四個32位元結果儲存在目的地儲存位置,以回應指令,所述目的地儲存位置與用於一或更多源緊縮資料運算元中之一或更多的儲存位置隱含地相同。
實例14是在處理器中的方法,包含接收標示一或更多源緊縮資料運算元之指令。一或更多源緊縮資料運算元具有四個先前的SM4密碼回合的四個32位元結果、以及四個32位元值。方法也包含將四個正好後續的及順序的
SM4密碼回合的四個32位元結果儲存在目的地儲存位置,以回應指令。目的地儲存位置由指令標示。
實例15包含實例14的方法,其中,儲存包含將四個正好後續的及順序的SM4密碼回合的四個32位元結果儲存在128位元緊縮資料運算元中。
實例16包含實例14-15中任一實例的方法,其中,儲存包含儲存根據回合次序配置之四個正好後續的及順序的SM4密碼回合的四個32位元結果。
實例17包含實例14-16中任一實例的方法,其中,儲存包含儲存四個正好後續的及順序的SM4密碼回合的四個32位元結果,四個正好後續的及順序的SM4密碼回合是四個正好後續的及順序的SM4加密回合。
實例18包含實例14-16中任一實例的方法,其中,儲存包含儲存用於四個正好後續的及順序的SM4密碼回合的四個32位元回合鑰作為四個32位元結果,所述四個正好後續的及順序的SM4密碼回合是鑰擴充回合。
實例19包含實例14-18中任一實例的方法,其中,接收包含接收具有一或更多位元的指令以指明四個正好後續的及順序的SM4密碼回合是否為密碼回合或鑰擴充回合。
實例20包含實例14-18中任一實例的方法,又包含產生四個正好後續的及順序的SM4密碼回合的四個32位元結果的各結果,包含對各回合執行第一組互斥或(XOR)運算、非線性替代運算、線性替代運算、及XOR運算。
實例21是處理指令的系統,包含互連、以及與互連耦合的處理器。處理器接收指令,該指令標示會具有四先前的SM4密碼回合的四個32位元結果、及四個32位元值之一或更多源緊縮資料運算元。處理器也會將四個正好後續的及順序的SM4密碼回合的四個32位元結果儲存在會由指令標示的目的地儲存位置中,以回應指令。密碼回合是具有非線性替代函數及線性替代函數的密碼演繹法的回合。線性替代函數會對值(B)執行下述運算:B XOR(B<<<2)XOR(B<<<10)XOR(B<<<18)XOR(B<<<24),其中,<<<代表左旋及XOR代表互斥OR。系統也包含與互連耦合的動態隨機存取記憶體(DRAM)。
實例22包含實例21的系統,其中,處理器會將依回合次序配置之四個正好後續的及順序的密碼回合的四個32位元結果儲存在目的地儲存位置中,以回應指令。
實例23是製品,包含非暫時的機器可讀取的儲存媒體。非暫時的機器可讀取的儲存媒體儲存指令。指令會標示密碼演繹法的四個32位元鑰產生常數以及四個先前的鑰擴充回合的四個32位元回合鑰。加密演繹法界定系統參數區段,假使以十六進位標示表示時,系統參數區段包含a3b1bac6、56aa3350、677d9197、及b27022dc。指令假使由機器執行時,會促使機器執行作業,作業包含將結果緊縮資料儲存在會由指令標示的目的地儲存位置中。結果緊縮資料會包含四個正好後續的及順序的SM4鑰擴充回合的四個32位元回合鑰。
實例24是實例23的物品,其中,四個32位元回合鑰會被儲存於128位元結果緊縮資料中及根據回合次序配置。
實例25包含處理器或其它設備,可操作以執行實例14-20中任一實例的方法。
實例26包含處理器或其它設備,處理器或其它設備包含用於執行實例14-20中任一實例的方法之機構。
實例27包含處理器,處理器包含模組、單元、邏輯、電路及機構以執行實例14-20中任一實例的方法。
實例28包含製品,製品包含選擇性的非暫時的機器可讀取的媒體,選擇性地儲存或以其它方式提供指令,指令假使及/或當由處理器、電腦系統、或其它機器執行時,可操作以使機器執行如實例14-20中任一實例的方法。
實例29包含電腦系統或其它電子裝置,電腦系統或其它電子裝置包含互連、與互連耦合的實例1-13中的任一實例之處理器、以及與互連耦合的至少一組件,所述至少一組件是選自動態隨機存取記憶體(DRAM)、網路介面、圖形晶片、無線通訊晶片、全球行動通訊系統(GSM)天線、相位改變記憶體、及攝影機。
實例30包含實質上如此處所述的處理器或其它設備。
實例31包含處理器或其它設備,可操作以執行實質上如此處所述的任何方法。
實例32包含處理器或其它設備,處理器或其它設備包含用於執行實質上如此處所述的任何方法之機構。
實例33包含處理器或其它設備,可操作以執行實質上如此處所述的任何四回合SM4指令。
實例34包含處理器或其它設備,處理器或其它設備包含用於執行實質上如此處所述的任何四回合SM4指令之機構。
實例35包含處理器或其它設備,處理器或其它設備包含解碼單元,解碼單元可操作以將第一指令集的指令解碼。解碼單元會接收一或更多模仿第一指令的一或更多指令,所述指令可為與此處所述實質上相同的任何指令,且會具有第二指令集。處理器或其它設備也包含與解碼單元耦合的一或更多執行單元,以執行第一指令集的一或更多指令。一或更多執行單元可操作以將結果儲存在目的地中,以回應第一指令集的一或更多指令。結果包含實質上如此處所揭示之用於第一指令的任何結果。
實例36包含電腦系統或其它電子裝置,電腦系統或其它電子裝置包含具有解碼單元及具有一或更多執行單元的處理器,解碼單元可操作以將第一指令集的指令解碼。電腦系統也包含耦合至處理器的儲存裝置。儲存裝置會儲存第一指令,第一指令可為實質上如此處所揭示的任何指令,以及會具有第二指令集。儲存裝置也會儲存指令,以將第一指令轉換成第一指令集的一或更多指令。第一指令集的一或更多指令當由處理器執行時可操作以使處理器將
結果儲存在目的地中。結果包含實質上如此處所揭示地用於第一指令的任何結果。
202‧‧‧SM4加速指令
210‧‧‧處理器
212‧‧‧解碼單元
214‧‧‧SM4執行單元
216‧‧‧緊縮資料暫存器
218、222‧‧‧第二源緊縮資料運算元
220、224、228‧‧‧四個32位元結果
226‧‧‧緊縮資料
Claims (24)
- 一種處理器,包括:複數緊縮資料暫存器;解碼單元,以解碼指令,該指令標示一或更多源緊縮資料運算元,該一或更多源緊縮資料運算元具有四先前的SM4密碼回合的四個32位元結果、及四個32位元值;以及執行單元,與該解碼單元及該眾多緊縮資料暫存器耦合,該執行單元將四個正好後續的及順序的SM4密碼回合的四個32位元結果儲存在會由該指令標示的目的地儲存位置中。
- 如申請專利範圍第1項的處理器,其中,該解碼單元會將標示具有四個先前的SM4密碼回合之四個32位元結果的第一128位元源緊縮資料運算元以及具有四個32位元值的第二128位元源緊縮資料運算元之指令解碼。
- 如申請專利範圍第1項之處理器,其中,該四個先前的SM4密碼回合的四個32位元結果是根據回合次序而配置在源緊縮資料運算元中。
- 如申請專利範圍第1項之處理器,其中,用於對應回合的該32位元值及該32位元結果會儲存於第一及第二源緊縮資料運算元的對應資料元件中。
- 如申請專利範圍第1項之處理器,其中,該解碼單元會將該指令解碼,其中,該四個32位元結果是四個 先前SM4加密回合的四個32位元結果,以及,其中,該四個32位元值是用於該四個先前SM4加密回合的四個32位元回合鑰,以及,其中,該執行單元會儲存該四個正好後續的及順序的回合之四個32位元結果,該四個正好後續的及順序的回合之四個32位元結果是四個正好後續的及順序的SM4加密回合之四個32位元結果。
- 如申請專利範圍第1項之處理器,其中,該解碼單元會將該指令解碼,其中,該四個32位元結果是四個先前SM4解密回合的四個32位元結果,以及,其中,該四個32位元值是用於該四個先前SM4解密回合的四個32位元回合鑰,以及,其中,該執行單元會儲存該四個正好後續的及順序的回合之四個32位元結果,該四個正好後續的及順序的回合之四個32位元結果是四個正好後續的及順序的SM4解密回合之四個32位元結果。
- 如申請專利範圍第1項之處理器,其中,該解碼單元會將該指令解碼,其中,該四個32位元結果是用於四個先前SM4鑰擴充回合的四個32位元回合鑰,以及,其中,該四個32位元值是用於四個先前SM4鑰擴充回合的四個32位元產生常數,以及,其中,該執行單元會儲存該四個正好後續的及順序的回合之四個32位元結果,該四個正好後續的及順序的回合之四個32位元結果是四個正好後續的及順序的SM4鑰擴充回合之四個32位元回合鑰。
- 如申請專利範圍第1項之處理器,其中,該解碼 單元會將該指令解碼,該指令會標示第一源緊縮資料運算元會:將第四個先前的SM4密碼演繹法回合的第一32位元結果包含在位元[31:0]中;將第三個先前的SM4密碼演繹法回合的第二32位元結果包含在位元[63:32]中;將第二個先前的SM4密碼演繹法回合的第三32位元結果包含在位元[95:64]中;以及,將正好先前的SM4密碼演繹法回合的第四32位元結果包含在位元[127:96]中。
- 如申請專利範圍第8項之處理器,其中,該執行單元為回應該指令而儲存結果緊縮資料,該結果緊縮資料會:將第四個最近的SM4密碼演繹法回合的第一32位元結果包含在位元[31:0]中;將第三個最近的SM4密碼演繹法回合的第二32位元結果包含在位元[63:32]中;將第二個最近的SM4密碼演繹法回合的第三32位元結果包含在位元[95:64]中;以及,將最近的SM4密碼演繹法回合的第四32位元結果包含在位元[127:96]中。
- 如申請專利範圍第1項之處理器,其中,該解碼單元將該指令解碼,該指令具有一或更多位元以指明該四個正後續及順序的SM4密碼回合是否為密碼回合或是鑰 擴充回合。
- 如申請專利範圍第1項之處理器,其中,該執行單元對該四個正好後續的及順序的SM4密碼回合中的各回合執行第一組互斥或(XOR)運算、非線性替代函數運算、包含XOR及旋轉運算的線性替代函數運算、以及XOR運算,以回應指令。
- 如申請專利範圍第1項之處理器,其中,該執行單元將該四個正好後續的及順序的SM4密碼回合中的該四個32位元結果儲存在由與所有該一或更多源緊縮資料運算元分開的該指令明確指明的目的地儲存位置中,以回應指令。
- 如申請專利範圍第1項之處理器,其中,該執行單元將該四個正好後續的及順序的SM4密碼回合的四個32位元結果儲存在目的地儲存位置,以回應指令,該目的地儲存位置與用於該一或更多源緊縮資料運算元的中之一或更多的儲存位置隱含地相同。
- 一種在處理器中的方法,包括:接收指令,該指令標示一或更多源緊縮資料運算元之指令,該一或更多源緊縮資料運算元具有四個先前的SM4密碼回合的四個32位元結果、以及四個32位元值;以及將四個正好後續的及順序的SM4密碼回合的四個32位元結果儲存在目的地儲存位置中,以回應該指令,該目的地儲存位置由該指令標示。
- 如申請專利範圍第14項之方法,其中,儲存包 括將四個正好後續的及順序的SM4密碼回合的四個32位元結果儲存在128位元緊縮資料運算元中。
- 如申請專利範圍第14項之方法,其中,儲存包括儲存根據回合次序配置之四個正好後續的及順序的SM4密碼回合的四個32位元結果。
- 如申請專利範圍第14項之方法,其中,儲存包括儲存四個正好後續的及順序的SM4密碼回合的四個32位元結果,該四個正好後續的及順序的SM4密碼回合是四個正好後續的及順序的SM4加密回合。
- 如申請專利範圍第14項之方法,其中,儲存包括儲存用於該四個正好後續的及順序的SM4密碼回合的四個32位元回合鑰作為該四個正好後續的及順序的SM4密碼回合的四個32位元結果,該四個正好後續的及順序的SM4密碼回合是鑰擴充回合。
- 如申請專利範圍第14項之方法,其中,接收包含接收該指令,該指令具有一或更多位元以指明該四個正好後續的及順序的SM4密碼回合是否為密碼回合或鑰擴充回合。
- 如申請專利範圍第14項之方法,又包括產生該四個正好後續的及順序的SM4密碼回合的該四個32位元結果的各結果,包含對各回合執行第一組互斥或(XOR)運算、非線性替代運算、線性替代運算、及XOR運算。
- 一種處理指令的系統,包括:互連; 處理器,與該互連耦合,該處理器接收指令,該指令標示一或更多源緊縮資料運算元,該一或更多源緊縮資料運算元會具有四先前的SM4密碼回合的四個32位元結果、及四個32位元值,該處理器也會將四個正好後續的及順序的SM4密碼回合的四個32位元結果儲存在會由該指令標示的目的地儲存位置中,以回應該指令,其中,該密碼回合是具有非線性替代函數及線性替代函數的密碼演繹法的回合,該線性替代函數會對值(B)執行下述運算:B XOR(B<<<2)XOR(B<<<10)XOR(B<<<18)XOR(B<<<24),其中,<<<代表左旋及XOR代表互斥OR;以及與互連耦合的動態隨機存取記憶體(DRAM)。
- 如申請專利範圍第21項的系統,其中,該處理器會將依回合次序配置之該四個正好後續的及順序的密碼回合的四個32位元結果儲存在該目的地儲存位置中。
- 一種製品,包括非暫時的機器可讀取的儲存媒體,該非暫時的機器可讀取的儲存媒體儲存指令,該指令會標示密碼演繹法的四個32位元鑰產生常數以及四個正好先前的鑰擴充回合的四個32位元回合鑰,其中,該加密演繹法界定系統參數區段,假使以十六進位標示表示時,該系統參數區段包含a3b1bac6、56aa3350、677d9197、及b27022dc,以及,該指令假使由機器執行時,會促使該機器執行包括下述的作業:將結果緊縮資料儲存在會由該指令標示的目的地儲存 位置中,該結果緊縮資料會包含四個正好後續的及順序的SM4鑰擴充回合的四個32位元回合鑰。
- 如申請專利範圍第23項的製品,其中,該四個32位元回合鑰會被儲存於128位元結果緊縮資料中及根據回合次序配置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/337,999 US9513913B2 (en) | 2014-07-22 | 2014-07-22 | SM4 acceleration processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201617960A true TW201617960A (zh) | 2016-05-16 |
TWI567585B TWI567585B (zh) | 2017-01-21 |
Family
ID=55065556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104119284A TWI567585B (zh) | 2014-07-22 | 2015-06-15 | Sm4加速處理器、方法、系統及指令 |
Country Status (4)
Country | Link |
---|---|
US (8) | US9513913B2 (zh) |
CN (3) | CN110233721A (zh) |
DE (1) | DE102015008012A1 (zh) |
TW (1) | TWI567585B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
US10503510B2 (en) | 2013-12-27 | 2019-12-10 | Intel Corporation | SM3 hash function message expansion processors, methods, systems, and instructions |
US9513913B2 (en) | 2014-07-22 | 2016-12-06 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
US9317719B2 (en) | 2014-09-04 | 2016-04-19 | Intel Corporation | SM3 hash algorithm acceleration processors, methods, systems, and instructions |
US9467279B2 (en) * | 2014-09-26 | 2016-10-11 | Intel Corporation | Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality |
US9658854B2 (en) | 2014-09-26 | 2017-05-23 | Intel Corporation | Instructions and logic to provide SIMD SM3 cryptographic hashing functionality |
US10523436B2 (en) * | 2015-12-18 | 2019-12-31 | Shenzhen Zhenhua Microelectronics Co., Ltd | Security locking device of computers |
US10761979B2 (en) * | 2016-07-01 | 2020-09-01 | Intel Corporation | Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value |
CN107623566B (zh) * | 2016-07-15 | 2022-09-06 | 青岛博文广成信息安全技术有限公司 | 基于非线性变换的sm4白盒实现方法 |
CN106230858A (zh) * | 2016-09-05 | 2016-12-14 | 烟台大学 | 工业数据加密传输方法 |
CN106452769B (zh) * | 2016-09-13 | 2019-11-29 | 杭州华为数字技术有限公司 | 一种数据处理方法、数据处理装置以及处理器 |
CN107342865B (zh) * | 2017-06-20 | 2020-07-10 | 贵州安融科技发展有限公司 | 一种基于sm4的认证加密算法 |
CN110311771B (zh) * | 2018-03-20 | 2022-07-22 | 北京小米松果电子有限公司 | Sm4加解密方法及电路 |
CN108777611B (zh) * | 2018-05-11 | 2021-06-18 | 吉林大学 | 基于双密钥流密码的双向链表顺序加密解密方法 |
US11121856B2 (en) * | 2018-06-15 | 2021-09-14 | Intel Corporation | Unified AES-SMS4—Camellia symmetric key block cipher acceleration |
CN109299614A (zh) * | 2018-10-30 | 2019-02-01 | 天津津航计算技术研究所 | 一种采用流水线方式实现sm4密码算法的系统及方法 |
CN110034918B (zh) * | 2019-03-15 | 2023-10-20 | 深圳市纽创信安科技开发有限公司 | 一种sm4加速方法和装置 |
GB201911802D0 (en) * | 2019-08-16 | 2019-10-02 | Pqshield Ltd | Lattice Coprocessor |
CN110674510B (zh) * | 2019-08-20 | 2023-04-07 | 安徽继远软件有限公司 | 一种类sm4密码算法的实现方法 |
CN111865559B (zh) * | 2020-06-16 | 2022-02-18 | 郑州信大捷安信息技术股份有限公司 | 一种sm4算法快速实现方法及装置 |
CN112564890B (zh) * | 2020-12-07 | 2023-03-24 | 海光信息技术股份有限公司 | 一种加速sm4算法的方法、装置、处理器及电子设备 |
CN112543096A (zh) * | 2020-12-16 | 2021-03-23 | 北京马赫谷科技有限公司 | 基于simd指令的数据处理方法、装置、设备及介质 |
CN114980087B (zh) * | 2021-02-26 | 2024-08-23 | 中国联合网络通信集团有限公司 | 数据加密的方法和装置 |
CN113722702A (zh) * | 2021-09-01 | 2021-11-30 | 上海兆芯集成电路有限公司 | 具备分组密码算法的处理器及其处理方法 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
DE10345454A1 (de) * | 2003-09-30 | 2005-04-28 | Infineon Technologies Ag | Wortindividuelle Schlüsselerzeugung |
CN100389554C (zh) * | 2006-07-31 | 2008-05-21 | 西安西电捷通无线网络通信有限公司 | 高效率实现sms4算法的加解密处理方法 |
EP2092676A4 (en) * | 2006-12-15 | 2013-06-26 | Ericsson Telefon Ab L M | Single-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 |
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 |
US8356185B2 (en) | 2009-10-08 | 2013-01-15 | Oracle America, Inc. | Apparatus and method for local operand bypassing for cryptographic instructions |
CN101764684B (zh) | 2009-10-26 | 2012-07-04 | 广州杰赛科技股份有限公司 | 实现sms4算法的加解密系统 |
CN101764685B (zh) | 2009-10-26 | 2012-02-08 | 广州杰赛科技股份有限公司 | 实现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 |
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 |
GB2497070B (en) | 2011-11-17 | 2015-11-25 | Advanced Risc Mach Ltd | Cryptographic support instructions |
CN104126173A (zh) | 2011-12-23 | 2014-10-29 | 英特尔公司 | 不会引起密码应用的算术标志的三输入操作数向量add指令 |
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 | 西安西电捷通无线网络通信股份有限公司 | 一种利用对称密码算法进行数据加解密的方法及查表装置 |
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 |
-
2014
- 2014-07-22 US US14/337,999 patent/US9513913B2/en active Active
-
2015
- 2015-06-15 TW TW104119284A patent/TWI567585B/zh active
- 2015-06-19 CN CN201910491938.0A patent/CN110233721A/zh active Pending
- 2015-06-19 CN CN201510349232.2A patent/CN105306195A/zh active Pending
- 2015-06-19 CN CN201910491245.1A patent/CN110233720B/zh active Active
- 2015-06-22 DE DE102015008012.1A patent/DE102015008012A1/de active Pending
-
2016
- 2016-12-01 US US15/366,556 patent/US10015010B2/en active Active
-
2018
- 2018-07-02 US US16/025,706 patent/US10419210B2/en active Active
- 2018-09-29 US US16/147,646 patent/US10447468B2/en active Active
- 2018-09-29 US US16/147,649 patent/US10454669B2/en active Active
- 2018-09-29 US US16/147,644 patent/US10425222B2/en active Active
- 2018-09-29 US US16/147,650 patent/US10476667B2/en active Active
- 2018-09-29 US US16/147,654 patent/US10469249B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20190036684A1 (en) | 2019-01-31 |
US10425222B2 (en) | 2019-09-24 |
US20190109703A1 (en) | 2019-04-11 |
DE102015008012A1 (de) | 2016-01-28 |
CN110233720A (zh) | 2019-09-13 |
US10419210B2 (en) | 2019-09-17 |
US20180375642A1 (en) | 2018-12-27 |
CN110233721A (zh) | 2019-09-13 |
CN105306195A (zh) | 2016-02-03 |
CN110233720B (zh) | 2023-01-24 |
TWI567585B (zh) | 2017-01-21 |
US20170085370A1 (en) | 2017-03-23 |
US20190109705A1 (en) | 2019-04-11 |
US20190109704A1 (en) | 2019-04-11 |
US20190036683A1 (en) | 2019-01-31 |
US20160026468A1 (en) | 2016-01-28 |
US10447468B2 (en) | 2019-10-15 |
US10454669B2 (en) | 2019-10-22 |
US10469249B2 (en) | 2019-11-05 |
US10476667B2 (en) | 2019-11-12 |
US10015010B2 (en) | 2018-07-03 |
US9513913B2 (en) | 2016-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI567585B (zh) | Sm4加速處理器、方法、系統及指令 | |
US11128443B2 (en) | SM3 hash algorithm acceleration processors, methods, systems, and instructions | |
JP6537084B2 (ja) | プロセッサ、方法、処理システム、および装置 | |
EP2889760B1 (en) | SMS4 acceleration processors, methods, systems, and instructions | |
TWI512531B (zh) | 用以處理blake安全雜湊演算法的方法、設備、系統及製品 | |
CN108228960B (zh) | 用于熔丝验证的基于Simon的散列 | |
CN109565438B (zh) | 混合加密算法的硬件加速器及其系统 | |
CN108563465B (zh) | 用于响应于单个指令来执行循环和异或的系统、装置和方法 | |
KR102307103B1 (ko) | Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직 | |
CN112543095B (zh) | 处理指令的系统、设备、方法、处理器、介质和电子设备 |