TW201842442A - 用以在256位元資料路徑中執行jh密碼雜湊技術之指令(一) - Google Patents
用以在256位元資料路徑中執行jh密碼雜湊技術之指令(一) Download PDFInfo
- Publication number
- TW201842442A TW201842442A TW107128044A TW107128044A TW201842442A TW 201842442 A TW201842442 A TW 201842442A TW 107128044 A TW107128044 A TW 107128044A TW 107128044 A TW107128044 A TW 107128044A TW 201842442 A TW201842442 A TW 201842442A
- Authority
- TW
- Taiwan
- Prior art keywords
- unit
- instruction
- register
- nibbles
- processor
- Prior art date
Links
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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Image Processing (AREA)
Abstract
描述一種方法。該方法包括執行一或多個JH_SBOX_L指令以在一JH態上執行S-Box映射及線性(L)變換,及一旦已經執行S-Box映射及L變換,則執行一或多個JH_P指令以在該JH態上執行一置換函數。
Description
本文揭示係有關於密碼演算法及更明確言之係有關於JH雜湊演算法。
密碼術乃仰賴演算法及鑰以保護資訊的工具。該演算法為複雜的數學演算法,而該鑰為一串位元。有兩個基本型別的密碼術系統:密鑰系統及公鑰系統。密鑰系統又稱為非對稱系統,具有單一鑰(「密鑰」)由二方或多方所共享。該單一鑰係用於加密與解密二者。
JH雜湊函數(JH)乃密碼函數,已經提交國家標準與技術學會(NIST)雜湊函數爭用以發展新的SHA-3函數來置換較舊的SHA-1及SHA-2。JH係基於包括四個變量(JH-224、JH-256、JH-384及JH-512)的演算法,其產生不同大小的消化產物。但JH的各個變量體現相同的壓縮函數。
目前,JH可於通用處理器使用於串流化SIMD擴延(SSE)或進階向量擴延(AVX)的指令執行。雖言如此,此等應用可能要求執行高達30指令以執行JH演算法。
依據本發明之一實施例,係特地提出一種於一電腦處理器中執行一處理之方法,該方法係包含:執行一或多個第一型態之指令以對一JH態執行S-Box映射;以及執行一或多個第二型態之指令以對該JH態之該映射執行一線性(L)變換。
100‧‧‧系統
101、1110、1115、1270、1280、1400‧‧‧處理器
102‧‧‧記憶體控制器中樞器(MCH)
103‧‧‧JH函數
104‧‧‧輸入/輸出(I/O)控制中樞器(ICH)
106‧‧‧記憶體控制器
108‧‧‧記憶體
110‧‧‧儲存裝置I/O控制器
112‧‧‧儲存裝置
114‧‧‧高速晶片對晶片互連體
116‧‧‧系統匯流排
118‧‧‧儲存協定互連體
202‧‧‧L1指令快取記憶體
206‧‧‧提取及解碼單元
208‧‧‧暫存器檔案
210‧‧‧執行單元
212、1074‧‧‧報廢單元
510-570、610-680‧‧‧處理方塊
800‧‧‧暫存器架構
810‧‧‧向量暫存器檔案
815‧‧‧寫遮罩暫存器
820‧‧‧多媒體擴延控制狀態暫存器(MXCSR)
825‧‧‧通用暫存器
830‧‧‧擴延旗標(EFLAGS)暫存器
835‧‧‧浮點控制字元(FCW)暫存器
840‧‧‧浮點狀態字元(FSW)暫存器
845‧‧‧純量浮點堆疊暫存器檔案(x87堆疊)
850‧‧‧MMX緊縮整數平坦暫存器檔案
855‧‧‧節段暫存器
865‧‧‧RIP暫存器
900‧‧‧指令解碼器
902‧‧‧晶粒上互連體網路
904‧‧‧層級2(L2)快取記憶體
906‧‧‧L1快取記憶體
906A‧‧‧L1資料快取記憶體
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
920‧‧‧調合單元
922A-B‧‧‧數值轉換單元
924‧‧‧複製單元
926‧‧‧寫遮罩暫存器
928‧‧‧16-位元寬向量算術邏輯單元(ALU)
1005‧‧‧前端單元
1010‧‧‧執行引擎單元
1015‧‧‧記憶體單元
1020‧‧‧層級1(L1)分支預測單元
1022‧‧‧層級2(L2)分支預測單元
1024‧‧‧L1指令快取單元
1026‧‧‧指令轉譯後備緩衝器(TLB)單元
1028‧‧‧指令提取及預解碼單元
1030‧‧‧指令佇列單元
1032‧‧‧解碼單元
1034‧‧‧複雜解碼器單元
1036、1038、1040‧‧‧簡單解碼器單元
1042‧‧‧微碼ROM單元
1044‧‧‧迴路串流檢測器單元
1046‧‧‧第二層級TLB單元
1048‧‧‧L2快取單元
1050‧‧‧L3及更高快取單元
1052‧‧‧資料TLB單元
1054‧‧‧L1資料快取單元
1056‧‧‧重新命名/配置器單元
1058‧‧‧統一排程器單元
1060‧‧‧執行單元
1062、1064、1072‧‧‧純量與向量混合單元
1066‧‧‧負載單元
1068‧‧‧儲存位址單元
1070‧‧‧儲存資料單元
1076‧‧‧實體暫存器檔案單元
1078‧‧‧重新排序緩衝器單元
1100、1200、1300‧‧‧系統
1120‧‧‧圖形記憶體控制器中樞器(GMCH)
1140、1232、1234、1242、1244‧‧‧記憶體
1145‧‧‧顯示器
1150‧‧‧輸入/輸出(I/O)控制中樞器(ICH)
1160‧‧‧外部圖形裝置
1170‧‧‧周邊裝置
1195‧‧‧前端匯流排(FSB)
1212、1214‧‧‧I/O裝置
1216‧‧‧第一匯流排
1218‧‧‧匯流排橋接器
1220‧‧‧第二匯流排
1222‧‧‧鍵盤/滑鼠
1224‧‧‧音訊I/O
1226‧‧‧通訊裝置
1228‧‧‧資料儲存單元
1230‧‧‧代碼
1238‧‧‧高效能圖形電路
1239‧‧‧高效能圖形介面
1250‧‧‧點對點(P-P、PtP)互連體
1252、1254、1286、1288‧‧‧點對點介面
1272、1282‧‧‧積體記憶體控制器單元(IMC)
1276、1278、1286、1288、1294、1298‧‧‧點對點介面電路
1290‧‧‧晶片組
1296‧‧‧介面
1314‧‧‧I/O裝置
1315‧‧‧舊式I/O
1400‧‧‧單晶片系統(SoC)
1402‧‧‧互連體單元
1410‧‧‧應用程式處理器
1420‧‧‧媒體處理器
1424‧‧‧影像處理器
1426‧‧‧音訊處理器
1428‧‧‧視訊處理器
1430‧‧‧靜態隨機存取記憶體(SRAM)單元
1432‧‧‧直接記憶體存取(DMA)單元
1440‧‧‧顯示單元
1402A-N‧‧‧核心
1404A-N‧‧‧快取單元
1406‧‧‧分享快取單元
1408‧‧‧積體圖形邏輯
1410‧‧‧系統代理器單元
1412‧‧‧環式
1414‧‧‧積體記憶體控制器單元
1416‧‧‧匯流排控制器單元
1602‧‧‧高階語言
1604‧‧‧x86編譯器
1606‧‧‧x86二進制碼
1608‧‧‧另一指令集編譯器
1610‧‧‧另一指令集二進制碼
1612‧‧‧指令轉換器
1614‧‧‧不具x86指令集核心之處理器
1616‧‧‧具有至少一個x86指令集核心之處理器
a0-15、b0-15‧‧‧半字節
L‧‧‧線性(L)變換
S‧‧‧S-Box映射
XMM、xmm、YMM、ymm、ZMM、zmm‧‧‧暫存器
從後文詳細說明部分結合下列附圖圖式將更為明瞭本發明,附圖中:圖1為一方塊圖例示說明系統的一個實施例;圖2為一方塊圖例示說明處理器的一個實施例;圖3為一方塊圖例示說明緊縮資料暫存器的一個實施例;圖4例示說明結果所得之半字節置換的一個實施例;圖5A及5B為流程圖例示說明藉指令執行之處理的一個實施例;圖6例示說明體現指令以執行一回合JH演算法的一個實施例;圖7例示說明使用指令之兩回合JH之一實施例;圖8為依據本發明之一個實施例一暫存器之方塊圖;圖9A為依據本發明之實施例,單一CPU核心連同其連結至晶粒上互連體網路及其層級2(L2)快取記憶體之本地子集之方塊圖;圖9B為依據本發明之一實施例該CPU核心之部分之一 分解視圖;圖10為一方塊圖例示說明依據本發明之一實施例一失序架構實例;圖11為依據本發明之一個實施例一系統之方塊圖;圖12為依據本發明之一實施例第二系統之方塊圖;圖13為依據本發明之一實施例第三系統之方塊圖;圖14為依據本發明之一實施例單晶片系統(SoC)之方塊圖;圖15為依據本發明之一實施例具有整合型記憶體控制器及圖形之一單核心處理器及一多核心處理器之方塊圖;及圖16為方塊圖對比依據本發明之實施例使用軟體指令轉換器以轉換於一來源指令集的二進制指令成為於一目標指令集的二進制指令。
於後文詳細說明部分中,為了解說目的,陳述無數特定細節以供徹底瞭解本發明。但熟諳技藝人士顯然易知可無此等特定細節之若干部分實施。於其它情況下,眾所周知結構及裝置係以方塊圖形式顯示以免遮掩本發明之潛在原理。
說明書中述及「一個實施例」或「一實施例」表示連結該實施例描述的一特定特徵、結構、或特性係含括於至少一個本發明之實施例。如此,「於一個實施例中」或 「於一實施例中」出現於說明書各處並非必要皆係指同一個實施例。
描述一種包括指令以處理該JH雜湊演算法之機制。依據一個實施例,JH雜湊演算法係透過於AVX指令集中的指令而體現。AVX指令集乃x86指令集架構(ISA)的擴延,其從128位元增加暫存器檔案。
圖1為系統100之一個實施例之方塊圖,該系統包括用以於一通用處理器執行JH加密與解密的AVX指令集擴延。
系統100包括一處理器101、一記憶體控制器中樞器(MCH)102及一輸入/輸出(I/O)控制中樞器(ICH)104。MCH 102包括一記憶體控制器106,其控制處理器101與記憶體108間之通訊。處理器101及MCH 102係透過一系統匯流排116通訊。
處理器101可為多種處理器中之任一者,諸如單核心英特爾(Intel®)奔騰(Pentium IV®)處理器、單核心英特爾席龍(Celeron)處理器、英特爾®叉級(XScale)處理器或多核心處理器諸如英特爾奔騰D、英特爾席翁(Xeon®)處理器、英特爾核心(Core®)i3、i5、i7、2雙重及四重、席翁(Xeon)、伊塔尼(Itanium)處理器、或任何其它型別的處理器。
記憶體108可為動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、同步動態隨機存取記憶體(SDRAM)、雙倍資料率2(DDR2)RAM、或RAMBUS動態隨機存取記憶體(RDRAM)或任何其它型別的記憶體。
ICH 104可使用高速晶片對晶片互連體114,諸如直接媒體介面(DMI)而耦接至MCH 102。DMI透過兩條單向通道而支援2十億位元/秒併行傳輸率。
ICH 104可包括一儲存裝置I/O控制器110用以控制與耦接至該ICH 104的至少一個儲存裝置112之通訊。該儲存裝置例如可為碟片驅動裝置、數位影音碟(DVD)驅動裝置、光碟(CD)驅動裝置、獨立碟片冗餘陣列(RAID)、磁帶機或其它儲存裝置。ICH 104可使用串列儲存方案,諸如串列附件小型電腦系統介面(SAS)或串列高級技術附件(SATA),透過儲存協定互連體118而與該儲存裝置112通訊。
於一個實施例中,處理器101包括一JH函數103以執行JH加密及解密操作。JH函數103可用以加密或解密儲存在記憶體108及/或儲存在儲存裝置112的資訊。
圖2為方塊圖例示說明處理器101的一個實例。處理器101包括一提取及解碼單元202用以解碼接收自層級1(L1)指令快取記憶體202的處理器指令。用以執行該指令的資料可儲存於暫存器檔案208。於一個實施例中,暫存器檔案208包括多個暫存器,其係由AVX指令用以儲存由AVX指令使用的資料。
圖3為在暫存器檔案208中緊縮資料暫存器之一適當集合的一具體實施例之方塊圖。圖中例示說明的緊縮資料暫存器包括32個512-位元緊縮資料或向量暫存器。此等32個512-位元係標示為ZMM0至ZMM31。於該具體實施例中,此等暫存器中的較低16個暫存器亦即ZMM0-ZMM15 之較低排序256-位元係頻疊或混疊在標示為YMM0-YMM15的個別256-位元緊縮資料或向量暫存器上,但非必要。
同理,於該具體實施例中,YMM0-YMM15的較低排序128-位元係頻疊或混疊在標示為XMM0-XMM1的個別128-位元緊縮資料或向量暫存器上,但非必要。512-位元係標示為ZMM0至ZMM31可操作以保有512-位元緊縮資料、256-位元緊縮資料、或128-位元緊縮資料。
256-位元暫存器YMM0-YMM15可操作以保有256-位元緊縮資料、或128-位元緊縮資料。128-位元暫存器XMM0-XMM1可操作以保有128-位元緊縮資料。暫存器各自可用以儲存緊縮浮點資料或緊縮整數資料。支援不同資料元件大小,包括8-位元位元組資料、16-位元字組資料、32-位元雙字組或單一精度浮點資料、及64-位元四字組或雙精度浮點資料。緊縮資料暫存器的替代實施例可包括不同數目的暫存器、不同大小的暫存器、且可能或可能不會頻疊更大型暫存器於小型暫存器上。
回頭參考圖2,提取及解碼單元202從L1指令快取記憶體202提取巨集指令,解碼該巨集指令,將其分解成簡單操作,稱作微操作(μop)。執行單元210排程與執行微操作。於所示實施例中,於執行單元210中的JH函數103包括用於AVX指令的微操作。報廢單元212將所執行的指令的結果寫至暫存器或記憶體。
JH函數103執行壓縮功能,包括跑42回合的三項 函數。第一函數為S-框函數,包括體現兩項變換(S0及S1)中之一者而變換相鄰4-位元半字節。表1例示說明S-框變換S0(x)及S1(x)中之一個實施例。
第二函數為線性變換(L),在GF(24)上體現(4,2,3)最大可分隔距離(MDS)代碼,於該處GF 24係定義為二進制多項式模不可簡約多項式X4+X+1的乘法。線性變換係在相鄰8位元位元組(或兩個相鄰S-框輸出)上執行。設A、B、C及D表示4-位元字組,則L將(A,B)變換成(C,D),因(C,D)=L(A,B)=(5˙A+2˙B,2˙A+B)。如此函數(C,D)=L(A,B)係運算為D0=B0 ⊕ A1;D1=B1 ⊕A2;D2=B2 ⊕ A3 ⊕A0;D3=B3 ⊕ A0;C0=A0 ⊕ D1;C1=A1 ⊕ D2;C2=A2 ⊕ D3 ⊕ D0;C3=A3 ⊕ D0.
第三函數為置換函數(Pd)。Pd為在2d元件上的簡單置換,係從πd(調換替代半字節)、P’d(得自下半態及上半態中的下半的調換半字節)及φd(於上半態的調換半字節)。圖4例示說明於64-位元資料路徑中針對d=4結果所得半字節置換Pd(πd、P’d、φd)的一個實施例示說明,D為位元區塊的大小。於一個實施例中,JH函數使用d=8於256 4-位元半 字節(或1024位元)的資料寬度。
於習知系統中,JH為「位元截割」,而非在位元組的半字節上操作。位元截割使得半字節的位元被劃分成分開的字元。如此S-框半字節許可全部S-框半字節透過SSE/AVX指令執行。又復,組合位元截割與交錯奇及偶SBOX暫存器,許可作SBOX及L變換評估二者。針對在位元截割體現中的每個回合完整置換並非必要。更明確言之,適當奇S-框係放置定位以與下個回合的適當偶S-框操作。此點係使用7個調換置換完成,針對42 JH回合重複六次。
雖然位元截割辦法使得全部SBOX計算與L變換並列執行,但要求20個指令以執行SBOX邏輯的23邏輯函數,及針對組成L變換的10互斥或(XOR)函數需要10個指令(用於2運算元XOR)。此種效能可被改良。
依據一個實施例,新指令及資料路徑係定義為使用暫存器檔案208中的256位元YMM暫存器,可在4位元半字節及成對半字節上操作以執行SBOX及L變換函數。於此一實施例中,體現新指令JH_SBOX_L及JH_PD以加速JH演算法。
於一個實施例中,JH_SBOX_L產生一個指令及資料路徑以在JH態的四分之一上體現64個S-Box映射及32個L變換函數。於一個進一步實施例中,JH_SBOX_L係定義為JH_SBOX_L YMM0、YMM1、YMM2,於該處YMM0為256-位元區段目的地/結果,YMM1為256-位元區段來 源,及YMM2為用於S-Box0/S-Box1選擇的常數之64位元。
圖5A為流程圖例示說明由JH_SBOX_L指令執行的一處理之一個實施例。於一個實施例中,1024狀態位元係接續組織如於四個YMM暫存器中以0至1023的JH規格表示。於此種實施例中,暫存器組織如下:YMM0(0:255);YMM1(256:511);YMM2(512:767);YMM3(768:1023)。於又一個實施例中,YMM0(0:3)包括SBOX0,YMM0(4:7)包括SBOX1,YMM0(8:11)包括SBOX2,繼續至YMM3(252:255)表示狀態位元1020至1023。
於處理方塊510,表示狀態位元的256-位元區段係從暫存器YMM0-YMM3中之一者取回。於處理方塊520,在所取回的狀態位元上執行S-Box及L變換。於處理方塊530,該等變換的256-位元結果儲存於目的地暫存器。JH_SBOX_L指令執行四次以對整個JH態完成一回合S-Box及L變換。
JH_PD指令及資料路徑對保有JH態的四分之一的YMM暫存器各自執行置換步驟Pd。於一個實施例中,JH_PD指令定義為JH_PD YMMdest、YMMsrc1、YMMsrc2、imm,於該處YMMdest為該JH態的經Pd置換的四分之一,YMMsrc1為該JH態的一個預置換的四分之一區段,YMMsrc2為該JH態的第二預置換的四分之一區段,imm=0-3載明第一、第二、第三、及第四區段。
圖5B為流程圖例示說明藉JH_PD指令執行的一處理之一個實施例。於處理方塊550,取回JH態的兩個預置 換1/4區段。於處理方塊560,對所取回的位元執行置換處理。於一個實施例中,第一置換區段(以imm0表示)包括在YMM1及YMM2上執行的置換。於處理方塊570,置換結果係儲存於規定的目的地暫存器。
JH_PD指令重複四次以完成一個置換回合,於該處在各個接續執行中的imm標示欲執行置換的1/4區段。例如,YMM1←YMM1,YMM2 imm=0
YMM2←YMM3,YMM4 imm=1
YMM3←YMM1,YMM2 imm=2
YMM4←YMM3,YMM4 imm=3
使得第二置換區段(以imm1表示)包括在YMM3及YMM4上執行的置換。同理,第三置換區段(以imm2表示)包括在YMM1及YMM2上執行的置換,及第四置換區段(以imm3表示)包括在YMM3及YMM4上執行的置換。
JH_PD指令使用鑰性質,當將JH態劃分成四個區段時,係只在JH態的兩個區段,從狀態位元決定各個區段的Pd置換結果。回頭參考圖4,可觀察得若a0、a1、a2、a3為在置換之前JH態的首1/4的半字節;a4、a5、a6、a7為首2/4的半字節;a8、a9、a10、a11為首3/4的半字節;及a12、a13、a14、a15為首4/4的半字節,則a0、a3、a7、a7為置換成b0、b1、b2、b3(例如區段1輸出係得自區段1及區段2輸入);a8、a11、a12、a15為置換成b4、b5、b6、b7(例如區段2輸出係得自區段3及區段4輸入);a22、a1、a6、a5為置換成b8、b9、b10、b11(例 如區段3輸出係得自區段1及區段2輸入);及a10、a9、a14、a13為置換成b12、b13、b14、b45(例如區段4輸出係得自區段3及區段4輸入)。
JH_SBOX_L及JH_PD指令的體現免除須執行與位元-截割處理相聯結的過量運算。
於替代實施例中,針對S-Box及L變換函數載明指令。於此一實施例中,藉將奇S-Box半字節劃分成兩個256位元YMM暫存器,及將偶S-Box半字節劃分成兩個256位元YMM暫存器,及對偶S-Box暫存器上執行調換演算法,以配對合宜4-位元S-Box區段用於隨後JH回合的L計算,並無新指令而完成Pd置換。
類似針對置換的位元-截割機制,類似前文說明,調換演算法避免建立JH_PD指令。如此,奇S-Box計算係定位用以使用下一回合的適當偶S-Box計算工作。如此以調換置換重複六次完成,導致全部位元返回其原先位置。
調換回合包括:回合0模7:調換相鄰偶半字節(奇/偶半字節i、i+1)回合1模7調換偶半字節對;回合2模7調換偶4半字節之群組;回合3模7調換偶8半字節之群組;回合4模7調換偶16半字節之群組;回合5模7調換偶32半字節之群組;及回合6模7調換偶64半字節之群組。
依據一個實施例,針對此辦法體現三個新指令。 此等指令包括在YMM1、YMM2、YMM3、YMM上執行的JH_SBOX指令,一JH_LTRANSFORM_ODD指令以針對具有奇半字節的兩個YMM暫存器處理L變換,及一JH_LTRANSFORM_EVEN指令以針對具有偶半字節的兩個YMM暫存器處理L變換。於本實施例中,JH態1024位元係儲存如下:YMM1-奇半字節1-64,YMM2-奇半字節65-128,YMM3-偶半字節1-64,及YMM4-偶半字節65-128。
圖6例示說明體現JH_SBOX、JH_LTRANSFORM_ODD、及JH_LTRANSFORM_EVEN指令以執行JH演算法的一回合之一個實施例。於處理方塊610,JH_SBOX YMM1,YMM2(常數)奇半字節低指令係經執行以針對儲存在YMM2的奇半字節1-64執行S-Box映射。於一個實施例中,常數為128-位元值,其針對各個半字節選擇S-Box函數s1或s0。在JH_S-Box指令之前,常數將載入YMM暫存器,使得指令將出現為JH_SBOX YMM1,YMM2。
於處理方塊620,JH_SBOX YMM1,YMMn(常數)奇半字節高指令係經執行以針對儲存在YMM2的奇半字節65-128執行S-Box映射。於處理方塊630,JH_SBOX YMM3,YMMn(常數)偶半字節低指令係經執行以針對儲存在YMM3的奇半字節1-64執行S-Box映射。於處理方塊640,JH_SBOX YMM4,YMMn(常數)偶半字節高指令係經執行以針對儲存在YMM4的偶半字節65-128執行S-Box映射。於處理方塊650,執行JH_LTRANSFORM_EVEN YMM3,YMM1以在半字節1-64上執行L變換操作。於處理方 塊660,執行JH_LTRANSFORM_EVEN YMM4,YMM2以在半字節65-128上執行L變換操作。
於一個實施例中,L變換係先對偶半字節執行,以當L變換係對奇半字節執行時,在偶半字節上執行置換。於處理方塊660,執行JH_LTRANSFORM_ODD YMM1,YMM3以在半字節1-64上執行L變換操作。於處理方塊660,執行JH_LTRANSFORM_ODD YMM2,YMM4以在半字節65-128上執行L變換操作。
於一個實施例中,於回合0至4(mod7)針對偶YMM的置換係與針對回合2至6的位元-截割置換相同。回合5為在256位元YMM內部128位元的調換,及回合6為256位元偶YMM暫存器的調換,藉由變更回合的交錯mod7通過的代碼而可以零指令完成。於又一個實施例中,JH_SBOX指令映射半字節S-Box函數,可在3-循環管路完成。JH_TRANSFORM指令也可在3_循環管路完成。
偶YMM的置換平均耗4指令或每回合2循環週期,具有2 SIMD埠:回合0針對相鄰半字節2x5指令,回合1及2針對8及16之群組2x3指令,針對回合3及4兩次混洗32及64的群組,針對回合5之128群組及針對合回0之256群組2x1 vperm,完整YMM暫存器重新命名。圖7例示說明使用前述指令的JH42回合中之二者。
暫存器架構實例-圖8
圖8為方塊圖例示說明依據本發明之一個實施例的一暫存器架構800。該暫存器架構之暫存器檔案及暫存器 列舉如下:向量暫存器檔案810-於該具體實施例中,有32個寬512位元的向量暫存器;此等暫存器稱作為zmm0至zmm32。較低16個zmm暫存器的較低排序856位元係混疊在暫存器ymm0-16上。較低16個zmm暫存器的較低排序128位元(ymm暫存器的較低排序128位元)係混疊在暫存器xmm0-15上。
寫遮罩暫存器815-於該具體實施例中,有八個寫遮罩暫存器(k0至k7),各自大小為64位元。於本發明之一個實施例中,向量遮罩暫存器k0無法用作為寫遮罩;當正常指示k0的編碼用於寫遮罩時,其選擇0xFFFF硬體電路寫遮罩,有效地去能該指令的寫遮罩。
多媒體擴延控制狀態暫存器(MXCSR)1020-於該具體實施例中,此一32-位元暫存器指供用於浮點操作的狀態位元及控制位元。
通用暫存器825-於該具體實施例中,有16個64-位元通用暫存器,其係連同既有x86定址模用以定址記憶體運算元。此等暫存器係稱作名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
擴延旗標(EFLAGS)暫存器830-於該具體實施例中,此種32位元暫存器係用以記錄許多指令的結果。
浮點控制字元(FCW)暫存器835及浮點狀態字元(FSW)暫存器840-於該具體實施例中,此等暫存器係由x87指令集使用以設定捨入模式,於FCW情況下的例外遮罩及 旗標,及保持追蹤於FSW情況下的例外。
純量浮點堆疊暫存器檔案(x87堆疊)845於其上頻疊MMX緊縮整數平坦暫存器檔案850-於該具體實施例中,x87堆疊乃運用x87指令集擴延在32/64/80-位元浮點資料上執行純量浮點運算的八元體堆疊;而MMX暫存器係用以在64-位元緊縮整數資料上執行運算,以及對在MMX暫存器與XMM暫存器間從事的若干操作保有運算元。
節段暫存器855-於該具體實施例中,有六個16位元暫存器用儲存用次節段位址產生的資料。
RIP暫存器865-於該具體實施例中,此64位元暫存器儲存指令指標。
其它本發明之實施例可使用更寬的或更窄的暫存器。此外,本發明之替代實施例可使用更多、更少、或不同的暫存器檔案及暫存器。
有序處理器架構實例-圖6A-6B
圖9A及圖9B例示說明一有序處理器架構實例之方塊圖。此等具體實施例係環繞有序CPU核心的多個例示設計而以寬向量處理器(VPU)加強。取決於應用,核心透過一高頻寬互連體網路而與若干固定功能邏輯、記憶體I/O介面、及其它需要的I/O邏輯通訊。舉例言之,此一實施例體現為一孤立GPU典型地含括一PCIe匯流排。
圖9A為依據本發明之實施例,單一CPU核心連同其連結至晶粒上互連體網路902及其層級2(L2)快取記憶體904之本地子集之方塊圖。一指令解碼器900支援具擴延之 x86指令集。雖然於本發明之一個實施例中(為了簡化設計)純量單元908及向量單元910使用分開暫存器集合(分別為純量暫存器912及向量暫存器914),及在其間移轉的資料係寫至記憶體,然後從層級1(L1)快取記憶體906回寫,本發明之替代實施例可運用不同辦法(例如運用單一暫存器集合或含括一通訊路徑,其許可資料在兩個暫存器檔案間移轉而不被回寫及回讀)。
L1快取記憶體906許可低延遲存取快取記憶體進入純量單元及向量單元。連同於向量友善指令格式的載入操作指令,如此表示L1快取記憶體906可視為略為類似擴延暫存器檔案處理。如此顯著改良許多演算法的效能。
L2快取記憶體904的本地子集乃通用L2快取記憶體的一部分,該通用L2快取記憶體被平分為分開的本地子集,每個CPU核心一個子集。各個CPU具有直接存取路徑至其本身的L2快取記憶體904的本地子集。由CPU核心讀取的資料係儲存在其L2快取記憶體904,且與其它存取其本身的本地L2快取記憶體子集平行地,可被快速地存取。若有所需,由CPU核心寫入的資料係儲存在其本身的L2快取記憶體子集904,且從其它子集清除。環式網路確保分享資料的同調。
圖9B為依據本發明之實施例圖9A中CPU核心之部分分解圖。圖9B包括L1快取記憶體904之一L1資料快取記憶體906A,以及有關向量單元910及向量暫存器1114的進一步細節。更明確言之,向量單元910乃16-寬向量處理單 元(VPU)(參考16-寬ALU 928),其係執行整數指令、單精度浮點指令、及雙精度浮點指令。VPU支援使用調合單元920調合暫存器輸入,使用數值轉換單元922A-B作數值轉換,及使用複製單元924在記憶體輸入上的複製。寫遮罩暫存器926許可斷定結果所得之向量寫。
暫存器資料可以多種不同方式調合,例如以支援矩陣乘法。來自記憶體的資料可跨VPU通道複製。此乃圖形與非圖形平行資料處理的常見操作,顯著地提高快取效率。
環式網路為雙向,以許可代理者諸如CPU核心、L2快取記憶體及其它邏輯區塊在該晶片內部彼此通訊。各個環狀資料路徑為每個方向1012-位元寬。
失序架構實例-圖7
圖10為方塊圖例示說明依據本發明之實施例的失序架構實例。更明確言之,圖10例示說明眾所周知的失序架構實例,其已經修正而結合向量友善指令格式及其執行。於圖10中,箭頭代表二或多個單元間的耦合,箭頭方向係指示該等單元間的資料流向。圖10包括耦接至一執行引擎單元1010及一記憶體單元1015的一前端單元1005;該執行引擎單元1010係進一步耦接至該記憶體單元1015。
前端單元1005包括層級1(L1)分支預測單元1020耦接至一層級2(L2)分支預測單元1022。L1及L2分支預測單元1020及1022係耦接至L1指令快取單元1024。L1指令快取單元1024係耦接至一指令轉譯後備緩衝器(TLB)1026,其又 係進一步耦接至一指令提取及預解碼單元1028。指令提取及預解碼單元1028係耦接至一指令佇列單元1030,其係進一步耦接至一解碼單元1032。解碼單元1032包含一複雜解碼器單元1034及三個簡單解碼器單元1036、1038及1040。解碼單元1032包括一微碼ROM單元1042。解碼單元7可如前文於解碼階段章節的描述操作。L1指令快取單元1024係進一步耦接至記憶體單元1015中的L2快取單元1048。指令TLB單元1026係進一步耦接至記憶體單元記憶體單元1015中的第二層級TLB單元1046。解碼單元1032、微碼ROM單元1042、及一迴路串流檢測器單元1044各自係耦接至執行引擎單元執行引擎單元1010中的一重新命名/配置器單元1056。
執行引擎單元1010包括重新命名/配置器單元1056,其係耦接至一報廢單元1074及一統一排程器單元1058。報廢單元1074係進一步耦接至執行單元1060及包括一重新排序緩衝器單元1078。統一排程器單元1058係進一步耦接至實體暫存器檔案單元1076,其係耦接至執行單元1060。實體暫存器檔案單元1076包含一向量暫存器單元1077A、一寫遮罩暫存器單元1077B、及一純量暫存器單元1077C;此等暫存器單元可提供向量暫存器510、向量遮罩暫存器515、及通用暫存器825;及該實體暫存器檔案單元1076可包括圖中未顯示的額外暫存器檔案(例如純量浮點堆疊暫存器檔案845頻疊在MMX緊縮整數平坦暫存器檔案850上)。執行單元1060包括三個純量與向量混合單元 1062、1064及1072;一負載單元1066;一儲存位址單元1068;一儲存資料單元1070。負載單元1066、儲存位址單元1068及儲存資料單元1070各自係進一步耦接至記憶體單元1015中的資料TLB單元1052。
記憶體單元1015包括耦接至資料TLB單元1052的第二層級TLB單元1046。L1資料快取單元1054進一步係耦接至L2快取單元1048。於若干實施例中,L2快取單元1048係進一步耦接至記憶體單元1015內部及/或外部的L3及更高快取單元1050。
舉例言之,失序架構實例可體現處理管線8200如下:1)指令提取及預解碼單元728執行提取及長度解碼階段;2)解碼單元732執行解碼階段;3)重新命名/配置器單元1056執行配置階段及重新命名階段;4)統一排程器1058執行排程階段;5)實體暫存器檔案單元1076、重新排序緩衝器單元1078、及記憶體單元1015執行暫存器讀取/記憶體讀取階段;執行單元1060進行執行/資料變換階段;6)記憶體單元1015及重新排序緩衝器單元1078執行回寫/記憶體寫階段1960;7)報廢單元1074執行ROB讀取階段;8)各個單元可涉及例外處理階段;及9)報廢單元1074及實體暫存器檔案單元1076執行委付階段。
電腦系統及處理器之實例-圖8-10
圖11至圖13為適合含括處理器101的系統實例。技藝界已知之針對膝上型電腦、桌上型電腦、手持式個人電腦、個人數位助理器、工程工作站、伺服器、網路裝置、 網路中樞器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、小區式電話、可攜式媒體播放器、手持式裝置及其它多種電子裝置的其它系統設計及組態也屬適宜。概略言之,能夠結合一處理器及/或其它此處揭示的執行邏輯的大量多種系統及電子裝置大致上為適宜。
現在參考圖11,圖11顯示依據本發明之一個實施例一種系統1100之方塊圖。系統1100可包括一或多個處理器1110、1115,耦接至圖形記憶體控制器中樞器(GMCH)1120。額外處理器1115的選擇性性質係於圖11以虛線標示。
各個處理器1110、1115可為處理器1100的某個版本。但須注意積體圖形邏輯與積體記憶體控制單元不可能存在於處理器1110、1115。
圖11例示說明GMCH 1120可耦接至記憶體1140,例如可為動態隨機存取記憶體(DRAM)。針對至少一個實施例,DRAM可與非依電性快取記憶體相聯結。
GMCH 1120可為晶片組或為晶片組的一部分。GMCH 1120可與處理器1110、1115通訊,且控制處理器1110、1115與記憶體1140間的互動。GMCH 1120也可用作為處理器1110、1115與系統1100的其它元件間的加速匯流排介面。於至少一個實施例中,GMCH 1120透過一多插匯流排,諸如前端匯流排(FSB)1195而與處理器1110、1115通訊。
又復,GMCH 1120係耦接至一顯示器1145(諸如平板顯示器)。GMCH 1120可包括一積體圖形加速器。 GMCH 1120進一步耦接至一輸入/輸出(I/O)控制中樞器(ICH)1150,其可用以耦接多個周邊裝置至系統1100。例如於圖11之實施例中顯示一外部圖形裝置860,連同另一個周邊裝置1170可為耦接至ICH 1150的分立圖形裝置。
另外,額外的或不同的處理器也可存在於系統1100。舉例言之,額外處理器1115可包括與處理器1110相同的額外處理器、與處理器1110異質的或不對稱的額外處理器、加速器(例如圖形加速器或數位信號處理(DSP)單元)、可現場程式規劃閘陣列、或任何其它處理器。就一範圍的優劣量表包括架構、微架構、熱、功耗特性等而言,實體資源1110、1115間有多項差異。此等差異可有效地表現本身為處理器1110、1115間的不對稱性及異質性。於至少一個實施例中,多個處理器1110、1115可駐在同一個晶粒封裝體。
現在參考圖9,顯示依據本發明之一實施例第二系統1200之一方塊圖。如圖12所示,微處理器系統1200為點對點互連體系統,包括透過點對點互連體1250而耦接的第一處理器1270及第二處理器1280。如圖12所示,處理器1270及1280各自可為處理器1700的某個版本。
另外,處理器1270、1280中之一或多者可為處理器以外的元件,諸如加速器或可現場程式規劃閘陣列。
雖然只顯示兩個處理器1270、1280,但須瞭解本發明之範圍並非囿限於此。於其它實施例中,一給定處理器內可存在有一或多個額外處理器。
處理器1270可進一步包括一積體記憶體控制器單元(IMC)1272及點對點(P-P)介面1276及1278。同理,第二處理器1280可包括IMC 1282及P-P介面1286及1288。處理器1270、1280可使用PtP介面電路1278、1288透過點對點(P-P)介面1250交換資訊。如圖12所示,IMC 1272及1282耦接該等處理器至個別記憶體,亦即記憶體1242及記憶體1244,可為本地附接至個別處理器的主記憶體的一部分。
處理器1270、1280可使用點對點介面電路1276、1294、1286、1298透過點對點(P-P)介面1252、1254而各自與一晶片組1290交換資訊。晶片組1290也可透過一高效能圖形介面1239而與高效能圖形電路938交換資訊。
一分享快取記憶體(圖中未顯示)可含括於任一處理器內或二處理器外部,但仍然透過P-P互連體而與處理器連結,使得當一處理器被置於低功率模式時,任一處理器的或二處理器的本地快取記憶體資訊可被儲存於該分享快取記憶體。晶片組1290可透過一介面1296而耦接至一第一匯流排1216。於一個實施例中,第一匯流排916可為周邊組件互連體(PCI)匯流排,或諸如PCI快速匯流排或其它第三代I/O互連體匯流排之一匯流排,但本發明之範圍並非受此所限。
如圖12所示,多個I/O裝置1214可連同一匯流排橋接器1218而耦接至第一匯流排1216,該匯流排橋接器1218係耦接第一匯流排1216至第二匯流排1220。於一個實施例中,第二匯流排1220可為低接腳數目(LPC)匯流排。於 一個實施例中,多個裝置可耦接至第二匯流排1220,包括例如鍵盤/滑鼠1222、通訊裝置1226及資料儲存單元1228,諸如磁碟機或其它大容量儲存裝置,可包括代碼1230。又復,音訊I/O 1224可耦接至第二匯流排1220。注意其它架構係屬可能。舉例言之,替代圖12之點對點架構,一系統可體現多插匯流排或其它此種架構。
現在參考圖13,顯示依據本發明之一實施例第三系統1300之一方塊圖。圖12與圖13中相似的元件具有相似的元件符號,及圖12的某些面向已經從圖13刪除以免不必要地遮掩圖13的其它面向。
圖13例示說明處理器1270、1280分別地可包括集積式記憶體及I/O控制邏輯(「CL」)1272及1282。於至少一個實施例中,CL 1272、1282可包括記憶體控制器中樞器邏輯(IMC),諸如前文關聯圖8、9及12所述者。此外,CL 1272、1282可包括I/O控制邏輯。圖10例示說明不僅記憶體1242、1244耦接至CL 1272、1282,I/O裝置1214也耦接至控制邏輯1272、1282。舊式I/O裝置1215係耦接至晶片組1290。
現在參考圖14,顯示依據本發明之一個實施例,一個SoC 1400之方塊圖。圖15中的相似元件具有類似的元件符號。又虛線框乃更為先進SoC上的選擇性特徵。於圖14中,一互連體單元1402係耦接至:一應用程式處理器1410其包括一或多個核心1402A-N與分享快取單元1406之一集合;一系統代理器單元1410;一匯流排控制器單元1414;一積體記憶體控制器單元1412;一或多個媒體處理器1420 之一集合其可包括積體圖形邏輯1408、用以提供靜像及/或視訊相機功能的一影像處理器1424、用以提供硬體音訊加速的一音訊處理器1426、及用以提供視訊編碼/解碼加速的一視訊處理器1428;一靜態隨機存取記憶體(SRAM)單元1430;一直接記憶體存取(DMA)單元1432;及用以耦接至一或多個外部顯示器的一顯示單元1440。
此處揭示之機制的實施例可於硬體、軟體、韌體、或此等體現辦法之組合體現。本發明之實施例可體現為電腦程式或在包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置的可規劃系統上執行的程式碼。
程式碼可應用於輸入資料以執行此處描述的功能與產生輸出資訊。輸出資訊可以已知方式應用於一或多個輸出裝置。用於本案之目的,處理系統包括具有處理器的任何系統,諸如數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可於高階程序取向的或目標取向的程式語言以與一處理系統通訊。若有所需,程式碼也可於組合語言或機器語言體現。實際上,此處描述的機制之範圍並非限於任何特定程式語言。總而言之,語言可為編譯語言或解譯語言。
至少一個實施例的一或多個面向可藉儲存在一機器可讀取媒體上的代表性指令體現,該等指令表示在該處理器內部的個別邏輯,該等指令當由一機器讀取時使得 該機器製造邏輯以執行此處描述的技術。此種表示型態稱作為「IP核心」可儲存在一具體有形的機器可讀取媒體上且供給各個客戶或製造廠,以載入該等製造機器內而實際上製造該邏輯或處理器。
此種機器可讀取儲存媒體可包括但非僅限於由機器或裝置所製造或製成的非過渡具體有形的物品配置,包括儲存媒體諸如硬碟;任何其它型別的碟片包括軟碟、光碟(光碟-唯讀記憶體(CD-ROM)、光碟可覆寫式(CD-RW))、及磁光碟;半導體裝置諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、可電氣抹除可規劃唯讀記憶體(EEPROM)、磁卡或光卡;或適用以儲存電子指令的任何其它型別的媒體。
據此,本發明之實施例也包括非過渡具體有形的機器可讀取媒體含有向量友善的指令格式之指令或含有設計資料,諸如硬體描述語言(HDL)其定義此處描述的結構、電路、裝置、處理器及/或系統特徵。此等實施例也可稱作為程式產品。
於某些情況下,指令轉換器可用以將指令從來源指令集轉換成目標指令集。舉例言之,指令轉換器可將一指令轉譯(例如使用靜態二進制轉譯、含動態編譯的動態二進制轉譯)、變形、仿真或以其它方式轉換成欲藉核心處理的一或多個其它指令。指令轉換器可於軟體、硬體、韌體 或其組合體現。指令轉換器可在處理器上、不在處理器上、或部分在及部分不在處理器上。
圖16為方塊圖對比依據本發明之實施例使用軟體指令轉換器以轉換於一來源指令集的二進制指令成為於一目標指令集的二進制指令。於該具體實施例中,指令轉換器為軟體指令轉換器,但另外,指令轉換器可於軟體、硬體、韌體或其各項組合體現。
圖16顯示可使用x86編譯器1604編譯以產生x86二進制碼1606的高階語言1602,該x86二進制碼1606可由具有至少一個x86指令集核心之處理器1616本機執行(假設編譯的若干指令係以向量友善的指令格式編譯)。具有至少一個x86指令集核心之處理器1816表示藉相容式執行或以其它方式處理(1)英特爾x86指令集核心的該指令集之一相當大部分或(2)靶定以在具至少一個x86指令集核心的一英特爾處理器跑的應用程式或其它軟體之目標碼版本而執行與具至少一個x86指令集核心的一英特爾處理器實質上相同功能以達成與具至少一個x86指令集核心的一英特爾處理器實質上相同結果。x86編譯器1804表示可操作而產生x86二進制碼1606(例如目標碼)的一編碼器,該等x86二進制碼1606有或無額外鏈結處理可在具至少一個x86指令集核心的該處理器1616上執行。同理,圖90顯示於高階語言1602的該程式可使用另一指令集編譯器1608編譯以產生另一指令集二進制碼1610,可藉不具至少一個x86指令集核心的一處理器1614本機執行(例如具有執行加州昇陽谷的MIPS技 術公司之MIPS指令集及/或執行加州昇陽谷的ARM控股公司的ARM指令集之核心的一處理器)。指令轉換器1612係用以將x86二進制碼1606轉換成可由不具一x86指令集核心的該處理器1614本機執行的代碼。此種轉換碼不可能與另一指令集二進制碼1610相同,原因在於難以製造可達成此項目的的一指令轉換器;但轉換碼將達成一般操作且係由得自該另一指令集的指令組成。如此,指令轉換器1612表示軟體、韌體、硬體或其組合其透過仿真、模擬或任何其它處理許可不具至少一個x86指令集處理器或核心的一處理器或其它電子裝置執行該x86二進制碼1606。
指令的某些操作可藉硬體組件執行,且可於機器可執行指令實施,用以造成或至少導致以執行該等操作的指令規劃的電路或其它組件。該電路可包括通用處理器或特用處理器、或邏輯電路,只舉出少數實例。此等操作也可選擇性地藉硬體與軟體的組合執行。執行邏輯及/或處理器可包括應答一機器指令的特定或特殊電路或其它邏輯或推衍自機器指令以儲存指令載明的結果運算元之一或多個控制信號。舉例言之,此處揭示的指令實施例可於一或多個系統實施例執行,及呈向量友善的指令格式的指令之實施例可以欲於系統執行的程式碼儲存。此外,此等圖式的處理元件可運用此處詳細描述的細節管線及/或架構(例如有序架構與失序架構)中之一者。舉例言之,有序架構的解碼單元可解碼指令,發送解碼指令給一向量單元或純量單元等。
前文描述係意圖舉例說明本發明之較佳實施例。由前文討論,特別顯然於此種技術領域中,於該處成長快速且進一步發展不容易預測,不悖離於隨附之申請專利範圍及其相當範圍以內之本發明原理,熟諳技藝人士將可就配置及細節上修改本發明。舉例言之,一或多個方法操作可組合或進一步分解。
替代實施例
雖然已經描述實施例將本機執行向量友善的指令格式,但本發明之替代實施例可透過在執行不同指令集的處理器(例如執行加州昇陽谷的MIPS技術公司之MIPS指令集的處理器,執行加州昇陽谷的ARM控股公司的ARM指令集之核心的處理器)上跑的一仿真層而執行該向量友善的指令格式。又,雖然圖式中流程圖顯示藉若干本發明之實施例執行的特定操作順序,但須瞭解此種順序為舉例說明(例如替代實施例可以不同順序執行操作,組合某些操作,重疊某些操作等)。
於前文詳細說明部分中,為了解釋目的,陳述無數特定細節以供徹底瞭解本發明之實施例。但熟諳技藝人士顯然易知可無此等特定細節而實施一或多個其它實施例。所描述的特定實施例非供限制本發明反而係例示說明本發明之實施例。本發明之範圍並非由前由提供的特定實例決定反而係由如下申請專利範圍決定。
Claims (6)
- 一種於一電腦處理器中執行一處理之方法,該方法係包含:執行一或多個第一型態之指令以對一JH態執行S-Box映射;以及執行一或多個第二型態之指令以對該JH態之該S-Box映射執行一線性(L)變換。
- 如請求項1之方法,其係進一步包含:在執行該第一型態之指令之前,儲存JH態之奇半字節(odd nibbles)的一第一集合於一第一暫存器中;儲存JH態之奇半字節的一第二集合於一第二暫存器中;儲存JH態之偶半字節(even nibbles)的一第一集合於一第三暫存器中;以及儲存JH態之偶半字節的一第二集合於一第四暫存器中。
- 如請求項2之方法,其係進一步包含:第一次執行該第一型態之指令以對奇半字節之該第一集合執行該S-Box映射,並將結果儲存於一第一目的地暫存器作為第一奇半字節結果;第二次執行該第一型態之指令以對奇半字節之該第二集合執行該S-Box映射,並將結果儲存於一第二目的地暫存器作為第二奇半字節結果; 第三次執行該第一型態之指令以對偶半字節之該第一集合執行該S-Box映射,並將結果儲存於一第三目的地暫存器作為第一偶半字節結果;以及第四次執行該第一型態之指令以對偶半字節之該第二集合執行該S-Box映射,並將結果儲存於一第四目的地暫存器作為第二偶半字節結果。
- 如請求項3之方法,其中該第二型態之指令之執行包含:對該第一偶半字節結果執行一第一L變換;對該第二偶半字節結果執行一第二L變換;對該第一奇半字節結果執行一第三L變換;以及對該第二奇半字節結果執行一第四L變換。
- 如請求項4之方法,其係進一步包含執行該等L變換的一調換操作。
- 如請求項4之方法,其中該調換操作包含調換相鄰偶半字節、調換偶半字節對、調換偶4半字節之群組、調換偶8半字節之群組、調換偶16半字節之群組、調換偶32半字節之群組、及調換偶64半字節之群組中之一者。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2011/066719 WO2013112118A2 (en) | 2011-12-22 | 2011-12-22 | Instructions to perform jh cryptographic hashing in a 256 bit data path |
| ??PCT/US11/66719 | 2011-12-22 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201842442A true TW201842442A (zh) | 2018-12-01 |
| TWI661356B TWI661356B (zh) | 2019-06-01 |
Family
ID=48874037
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW101143929A TWI641991B (zh) | 2011-12-22 | 2012-11-23 | 用以在256位元資料路徑中執行jh密碼雜湊技術之指令 |
| TW107128044A TWI661356B (zh) | 2011-12-22 | 2012-11-23 | 用以在256位元資料路徑中執行jh密碼雜湊技術之指令(一) |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW101143929A TWI641991B (zh) | 2011-12-22 | 2012-11-23 | 用以在256位元資料路徑中執行jh密碼雜湊技術之指令 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US9270460B2 (zh) |
| CN (1) | CN104011709B (zh) |
| TW (2) | TWI641991B (zh) |
| WO (1) | WO2013112118A2 (zh) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9270460B2 (en) * | 2011-12-22 | 2016-02-23 | Intel Corporation | Instructions to perform JH cryptographic hashing in a 256 bit data path |
| WO2013095484A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Instructions to perform jh cryptographic hashing |
| US20160112200A1 (en) | 2014-10-17 | 2016-04-21 | 21, Inc. | Cryptographic hashing circuitry having improved scheduling efficiency |
| US9659123B2 (en) | 2014-10-17 | 2017-05-23 | 21, Inc. | Systems and methods for flexibly optimizing processing circuit efficiency |
| US11032061B2 (en) * | 2018-04-27 | 2021-06-08 | Microsoft Technology Licensing, Llc | Enabling constant plaintext space in bootstrapping in fully homomorphic encryption |
| KR102457166B1 (ko) * | 2020-11-23 | 2022-10-20 | 부산대학교 산학협력단 | ARIA의 암호화 및 복호화를 지원하는 프로세서용 32bit 확장 명령어 체계를 갖는 하드웨어 모듈 및 이의 제어 방법 |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1193537C (zh) * | 2000-07-04 | 2005-03-16 | 皇家菲利浦电子有限公司 | 将输入数据块加密转换成输出数据块的方法和系统 |
| US20030002668A1 (en) * | 2001-06-30 | 2003-01-02 | Gary Graunke | Multi-level, multi-dimensional content protections |
| TWI323613B (en) | 2002-07-29 | 2010-04-11 | Qualcomm Inc | Digital image encoding |
| US7502470B2 (en) * | 2003-01-13 | 2009-03-10 | Silicon Image, Inc. | Method and apparatus for content protection within an open architecture system |
| US20060023875A1 (en) * | 2004-07-30 | 2006-02-02 | Graunke Gary L | Enhanced stream cipher combining function |
| KR100996023B1 (ko) | 2005-10-31 | 2010-11-22 | 삼성전자주식회사 | 다중 안테나 통신 시스템에서 데이터 송수신 장치 및 방법 |
| US8036379B2 (en) * | 2006-03-15 | 2011-10-11 | Microsoft Corporation | Cryptographic processing |
| KR100837270B1 (ko) * | 2006-06-07 | 2008-06-11 | 삼성전자주식회사 | 스마트 카드 및 그것의 데이터 보안 방법 |
| TWI322613B (en) | 2006-11-15 | 2010-03-21 | Quanta Comp Inc | 3d image adjusting apparatus and method of the same |
| US8655939B2 (en) * | 2007-01-05 | 2014-02-18 | Digital Doors, Inc. | Electromagnetic pulse (EMP) hardened information infrastructure with extractor, cloud dispersal, secure storage, content analysis and classification and method therefor |
| US8675865B2 (en) * | 2010-09-24 | 2014-03-18 | Intel Corporation | Method and apparatus for a high bandwidth stream cipher |
| US20120254591A1 (en) * | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
| WO2013095484A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Instructions to perform jh cryptographic hashing |
| WO2013095493A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Instructions to perform groestl hashing |
| US9270460B2 (en) * | 2011-12-22 | 2016-02-23 | Intel Corporation | Instructions to perform JH cryptographic hashing in a 256 bit data path |
-
2011
- 2011-12-22 US US13/995,457 patent/US9270460B2/en not_active Expired - Fee Related
- 2011-12-22 CN CN201180075826.9A patent/CN104011709B/zh active Active
- 2011-12-22 WO PCT/US2011/066719 patent/WO2013112118A2/en not_active Ceased
-
2012
- 2012-11-23 TW TW101143929A patent/TWI641991B/zh not_active IP Right Cessation
- 2012-11-23 TW TW107128044A patent/TWI661356B/zh not_active IP Right Cessation
Also Published As
| Publication number | Publication date |
|---|---|
| US20140205084A1 (en) | 2014-07-24 |
| US9270460B2 (en) | 2016-02-23 |
| TW201342211A (zh) | 2013-10-16 |
| TWI641991B (zh) | 2018-11-21 |
| WO2013112118A3 (en) | 2013-10-24 |
| WO2013112118A2 (en) | 2013-08-01 |
| CN104011709B (zh) | 2018-06-05 |
| CN104011709A (zh) | 2014-08-27 |
| TWI661356B (zh) | 2019-06-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10911222B2 (en) | Instructions processors, methods, and systems to process secure hash algorithms | |
| CN104126174B (zh) | 执行groestl散列的指令 | |
| US9960917B2 (en) | Matrix multiply accumulate instruction | |
| US10705842B2 (en) | Hardware accelerators and methods for high-performance authenticated encryption | |
| JP6088655B2 (ja) | 単一の命令に応じて回転及びxorを実行するためのシステム、装置及び方法 | |
| TWI661356B (zh) | 用以在256位元資料路徑中執行jh密碼雜湊技術之指令(一) | |
| GB2581038A (en) | Instruction set for SHA1 round processing on 128-bit data paths | |
| WO2014051747A1 (en) | Instruction set for skein256 sha3 algorithm on a 128-bit processor | |
| TWI517654B (zh) | 執行jh密碼雜湊之指令 | |
| KR20170037640A (ko) | Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |