TWI639954B - 提供通用gf(256)simd密碼算術功能的指令與邏輯 - Google Patents

提供通用gf(256)simd密碼算術功能的指令與邏輯 Download PDF

Info

Publication number
TWI639954B
TWI639954B TW106120226A TW106120226A TWI639954B TW I639954 B TWI639954 B TW I639954B TW 106120226 A TW106120226 A TW 106120226A TW 106120226 A TW106120226 A TW 106120226A TW I639954 B TWI639954 B TW I639954B
Authority
TW
Taiwan
Prior art keywords
instruction
simd
processor
instructions
source data
Prior art date
Application number
TW106120226A
Other languages
English (en)
Other versions
TW201804320A (zh
Inventor
夏 葛隆
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201804320A publication Critical patent/TW201804320A/zh
Application granted granted Critical
Publication of TWI639954B publication Critical patent/TWI639954B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Advance Control (AREA)
  • Error Detection And Correction (AREA)
  • Executing Machine-Instructions (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)

Abstract

本發明提供通用GF(28)SIMD密碼算術功能的指令與邏輯。實施例包括處理器,用以解碼用於SIMD二元有限體乘法逆元的指令,該指令指定源資料運算元及不可約多項式,用以為源資料運算元的每一個元素計算逆元素模該不可約多項式。指令的結果儲存在SIMD目的暫存器中。某些實施例也解碼用於SIMD仿射變換的指令,指定源資料運算元、變換矩陣運算元、及平移向量。對源資料運算元的每一個元素施加變換矩陣與平移向量。某些實施例也解碼用於SIMD二元有限體乘法的指令,指定第一與第二源資料運算元,用以乘第一與第二源資料運算元之元素的每一個對應元素並對不可約多項式作求模運算。

Description

提供通用GF(256)SIMD密碼算術功能的指令與邏輯
本發明屬於處理邏輯、微處理器、及相關指令集架構的領域,當被處理器或其它處理邏輯執行時,實施邏輯、數學、或其它功能操作。特別是,本發明與提供通用GF(256)SIMD密碼算術功能的指令與邏輯有關。
密碼學係依靠演算法與金鑰來保護資訊的工具。演算法係一複雜的數學演算法,而金鑰係一串位元。目前的密碼系統有密鑰系統與公鑰系統兩種基本類型。密鑰系統也稱為對稱系統,其具有單個金鑰(“密鑰”),供兩或多方共用。加密與解密資訊都使用該單個金鑰。
例如,先進加密標準(Advanced Encryption Standard;AES)也稱為Rijndael,係由兩位比利時的密碼學家Joan Daemen與Vincent Rijmen所發展出的區塊加密(block cipher),且被美國政府採用做為加密標準。國家標準與技術局(National Institute of Standards and Technology; NIST)於2001年11月26日發佈AES為U.S.FIPS PUB 197(FIPS 197)。
AES具有128位元之固定的區塊大小及128、192、或256位元的金鑰大小。金鑰擴展使用Rijndael的金鑰排程(key schedule)將128、192、或256位元大小的金鑰變換成10、12、或14個128位元的回合金鑰(round key)。在各回合中使用回合金鑰來將明文資料處理成128位元的區塊(看成位元組的4×4陣列),並將其轉換成密文區塊。典型上,關於輸入到回合(16位元組)的128位元,按照稱為S-box的查找表將每一個位元組以另一個位元組置換。區塊加密的此部分稱為位元組置換(SubBytes)。接下來,位元組的各列(看成4×4陣列)循環地向左移位或旋轉一特定的移置量(即列0移置0位元組、列1移置1位元組、列2移置2位元組、及列3移置3位元組)。區塊加密的此部分稱為列移位(ShiftRows)。接著,將位元組行的每一行視為有限體GF(256)(也稱為伽羅瓦體28)中之多項式的4個係數,並乘以可逆的線性變換。區塊加密的此部分稱為行混合(MixColumns)。最後,128位元的區塊與回合金鑰XOR以產生16位元組的密文區塊,此稱為加回合金鑰(AddRoundKey)。
在32位元或更大字元的系統上,可藉由將SubBytes、ShiftRows、及MixColumns變換轉換成4個256登錄的32位元表來實施AES加密,其利用4096位元組的記憶體。軟體實施的一項缺點是效能。軟體運行的數量級比專用硬 體慢,因此,其需要具有硬體/韌體實施的附加效能。
就電路面積而論,使用查找記憶體、真值表、二元決策圖、或256輸入乘法器之典型的直接硬體實施很昂貴。使用同構於GF(256)之有限體的替代方法在電路面積方面有效率,但也比直接的硬體實施來的慢。
現代化的處理器通常包括用以提供運算密集之操作的指令,但要透過使用各種資料儲存裝置之有效率的實施,才能提供可被利用的高階資料平行性,例如,諸如單指令多資料(SIMD)向量暫存器。中央處理單元(CPU)可提供平行硬體以支援處理向量。向量係容納數個連續資料元素的資料結構。大小為M(其中M係2k,例如,256,128,64,32,...4或2)的向量暫存器可包含N個大小為O的向量元素,其中,N=M/O。例如,64位元組的向量暫存器可被分割成(a)64個向量元素,每一個元素容納佔據1位元組的資料項;(b)32個向量元素,每一個元素容納佔據2位元組(或一個“字組”)的資料項:(c)16個向量元素,每一個元素容納佔據4位元組(或一個“雙字組”)的資料項:或(d)8個向量元素,每一個元素容納佔據8位元組(或一個“四字組”)的資料項。SIMD向量暫存器中之平行性的本質非常適合安全雜湊演算法的處理。
其它類似的加密演算法也能引起興趣。例如,Rijndael規格本質上是以各種不同的區塊與金鑰大小來指定,其可以是32位元的任何倍數,最小128位元及最大256位元。另一個例子是中國國家標準所使用的區塊加密 SMS4,用於無線LAN WAPI(Wired Authentication and Privacy Infrastructure)。其也是以回合(即,32)來處理明文資料,如同GF(256)中的128位元區塊,但實施對不同的多項式的縮減求模運算。
迄今,提供有效率之空間-時間設計取捨及對此複雜度、性能受限之議題、及其它瓶頸之潛在解決方案的選項尚未被完全地探索。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧內部快取記憶體
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧封裝的指令集
110‧‧‧處理器匯流排
112‧‧‧繪圖卡
114‧‧‧加速繪圖埠互連
116‧‧‧系統邏輯晶片
118‧‧‧高頻寬的記憶體路徑
120‧‧‧記憶體
122‧‧‧系統輸入/輸出
124‧‧‧資料儲存裝置
126‧‧‧無線收發器
128‧‧‧韌體集線器
130‧‧‧輸入/輸出控制器集線器
134‧‧‧網路控制器
140‧‧‧資料處理系統
141‧‧‧匯流排
142‧‧‧執行單元
143‧‧‧封裝之指令集
144‧‧‧解碼器
145‧‧‧暫存器檔案
146‧‧‧同步動態隨機存取記憶體控制
147‧‧‧靜態隨機存取記憶體控制
148‧‧‧叢發快閃記憶體介面
149‧‧‧緊湊型快閃記憶卡控制
150‧‧‧液晶顯示器控制
151‧‧‧直接記憶體存取控制器
152‧‧‧匯流排主介面
153‧‧‧輸入/輸出匯流排
154‧‧‧輸入/輸出電橋
155‧‧‧通用非同步接收器/發送器
156‧‧‧通用序列匯流排
157‧‧‧藍牙無線通用非同步接收器/發送器
158‧‧‧輸入/輸出擴充介面
159‧‧‧處理核心
160‧‧‧資料處理系統
161‧‧‧SIMD協同處理器
162‧‧‧執行單元
163‧‧‧指令集
164‧‧‧暫存器檔案
165‧‧‧解碼器
166‧‧‧主處理器
167‧‧‧快取記憶體
168‧‧‧輸入/輸出系統
169‧‧‧無線介面
170‧‧‧處理核心
171‧‧‧協同處理器匯流排
200‧‧‧處理器
201‧‧‧有序前端
202‧‧‧快速排程器
203‧‧‧亂序執行引擎
204‧‧‧慢速/一般浮點排程器
206‧‧‧簡單浮點排程器
208‧‧‧暫存器檔案
210‧‧‧暫存器檔案
211‧‧‧執行方塊
212‧‧‧位址產生單元
214‧‧‧位址產生單元
216‧‧‧快速算術邏輯單元
218‧‧‧快速算術邏輯單元
220‧‧‧慢速算術邏輯單元
222‧‧‧浮點算術邏輯單元
224‧‧‧浮點移動單元
226‧‧‧指令預取器
228‧‧‧指令解碼器
230‧‧‧跡線快取
232‧‧‧微碼ROM
234‧‧‧微操作佇列
310‧‧‧封裝的位元組
320‧‧‧封裝的字
330‧‧‧封裝的雙字
341‧‧‧封裝的半字
342‧‧‧封裝的單字
343‧‧‧封裝的雙字
344‧‧‧無符號封裝位元組表示法
345‧‧‧有符號封裝位元組表示法
346‧‧‧無符號封裝字表示法
347‧‧‧有符號封裝字表示法
348‧‧‧無符號封裝雙字表示法
349‧‧‧有符號封裝雙字表示法
360‧‧‧運算碼格式
364‧‧‧源運算元識別符
365‧‧‧源運算元識別符
366‧‧‧目的運算元識別符
370‧‧‧運算碼格式
374‧‧‧源運算元識別符
375‧‧‧源運算元識別符
376‧‧‧目的運算元識別符
378‧‧‧前置位元組
380‧‧‧運算碼格式
385‧‧‧源運算元識別符
386‧‧‧目的運算元識別符
390‧‧‧源運算元識別符
381‧‧‧條件欄位
397‧‧‧運算碼格式
393‧‧‧標度-索引-基礎識別符
394‧‧‧位移識別符
395‧‧‧立即位元組
391‧‧‧VEX前置位元組
373‧‧‧MOD欄位
398‧‧‧運算碼格式
396‧‧‧EVEX前置位元組
400‧‧‧處理器管線
402‧‧‧提取級
404‧‧‧長度解碼級
406‧‧‧解碼級
408‧‧‧配置級
410‧‧‧更名級
412‧‧‧排程級
414‧‧‧暫存器讀取/記憶體讀取級
416‧‧‧執行級
418‧‧‧寫回/記憶體寫入級
422‧‧‧異常處置級
424‧‧‧確認級
430‧‧‧前端單元
450‧‧‧執行引擎單元
490‧‧‧處理器核心
432‧‧‧分支預測單元
434‧‧‧指令快取單元
436‧‧‧指令轉譯後備緩衝區
438‧‧‧指令提取單元
440‧‧‧解碼單元
452‧‧‧更名/配置單元
470‧‧‧記憶體單元
476‧‧‧2級快取單元
454‧‧‧至止用單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行群
462‧‧‧執行單元
464‧‧‧記憶體存取單元
472‧‧‧資料轉譯後備緩衝區單元
500‧‧‧處理器
502‧‧‧核心
506‧‧‧共用快取單元
508‧‧‧整合式繪圖邏輯
510‧‧‧系統代理
512‧‧‧環式互連單元
514‧‧‧整合式記憶體控制器單元
516‧‧‧匯流排控制器單元
600‧‧‧系統
610‧‧‧處理器
615‧‧‧處理器
620‧‧‧圖形記憶體控制器集線器
645‧‧‧顯示器
650‧‧‧輸入/輸出控制器集線器
660‧‧‧外部圖形裝置
670‧‧‧周邊裝置
695‧‧‧前端匯流排
700‧‧‧系統
770‧‧‧處理器
780‧‧‧處理器
772‧‧‧整合式記憶體控制器單元
782‧‧‧整合式記憶體控制器單元
776‧‧‧匯流排控制器單元點對點介面
778‧‧‧匯流排控制器單元點對點介面
786‧‧‧點對點介面
788‧‧‧點對點介面電路
750‧‧‧點對點介面
732‧‧‧記憶體
734‧‧‧記憶體
794‧‧‧點對點介面電路
798‧‧‧點對點介面電路
739‧‧‧高性能圖形介面
738‧‧‧高性能圖形電路
790‧‧‧晶片組
796‧‧‧介面
716‧‧‧第一匯流排
714‧‧‧輸入/輸出裝置
720‧‧‧第二匯流排
718‧‧‧匯流排電橋
722‧‧‧鍵盤及/或滑鼠
727‧‧‧通訊裝置
728‧‧‧儲存單元
730‧‧‧指令/碼與資料
724‧‧‧音訊輸入/輸出裝置
800‧‧‧系統
870‧‧‧處理器
880‧‧‧處理器
872‧‧‧整合式記憶體與輸入/輸出控制邏輯
882‧‧‧整合式記憶體與輸入/輸出控制邏輯
832‧‧‧記憶體
834‧‧‧記憶體
815‧‧‧傳統輸入/輸出裝置
890‧‧‧晶片組
900‧‧‧系統單晶片
902‧‧‧互連單元
910‧‧‧應用處理器
920‧‧‧媒體處理器
924‧‧‧影像處理器
926‧‧‧音訊處理器
928‧‧‧視訊處理器
930‧‧‧靜態隨機存取記憶體單元
932‧‧‧直接記憶體存取(DMA)單元
940‧‧‧顯示單元
1000‧‧‧處理器
1005‧‧‧中央處理單元
1010‧‧‧圖形處理單元
1015‧‧‧影像處理器
1020‧‧‧視訊處理器
1025‧‧‧USB控制器
1030‧‧‧UART控制器
1035‧‧‧SPI/SDIO控制器
1040‧‧‧顯示裝置
1045‧‧‧高解析度多媒體介面控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙資料率控制器
1065‧‧‧安全引擎
1070‧‧‧整合晶片間聲音/內部積體電路介面
1130‧‧‧儲存器
1120‧‧‧模擬軟體
1110‧‧‧硬體或軟體模型
1140‧‧‧記憶體
1160‧‧‧無線連接
1150‧‧‧有線連接
1205‧‧‧程式
1210‧‧‧仿真邏輯
1215‧‧‧處理器
1304‧‧‧x86編譯器
1302‧‧‧高階語言
1316‧‧‧x86指令集核心
1306‧‧‧x86二進制碼
1308‧‧‧替代的指令集編譯器
1314‧‧‧無x86指令集核心之處理器
1310‧‧‧替代的指令集二進制碼
1312‧‧‧指令轉換器
1601‧‧‧執行仿射映圖指令之設備
1602、1603‧‧‧處理方塊
1630~1637‧‧‧互斥或邏輯
1612‧‧‧源資料運算元組的元素
1610‧‧‧變換矩陣
1614‧‧‧平移向量
1620~1627‧‧‧AND邏輯
1618‧‧‧經仿射變換的結果元素
1605‧‧‧執行仿射逆指令之設備
1604‧‧‧有限體乘法逆元微指令
1640‧‧‧乘法逆元單元
1648‧‧‧乘法逆元結果元素
1606‧‧‧執行逆仿射指令之設備
1616‧‧‧SIMD二元有限體乘法逆元元素
1638‧‧‧經仿射變換的結果元素
1701‧‧‧執行有限體乘法逆元指令之設備
1702‧‧‧執行有限體乘法逆元指令之設備
1703‧‧‧執行有限體乘法逆元指令之設備
1710‧‧‧源資料運算元組的元素
1740‧‧‧最高階係數為1的不可約多項式
1735‧‧‧體元素
1736‧‧‧體元素
1746‧‧‧逆體元素
1737‧‧‧互斥或邏輯
1745‧‧‧逆體元素
1750‧‧‧乘法逆元結果元素
1801‧‧‧執行特定模數縮減指令之設備
1811B‧‧‧模數多項式
1810‧‧‧源資料運算元組的元素
1850‧‧‧模數縮減結果元素
1820‧‧‧元素的雙位元組值
1828‧‧‧元素的雙位元組值
1867‧‧‧互斥或邏輯閘
1803‧‧‧執行特定模數縮減指令之設備
1887‧‧‧特定的模數多項式
1813‧‧‧元素
1870‧‧‧移位器
1873‧‧‧移位器
1875‧‧‧移位器
1877‧‧‧移位器
1879‧‧‧移位器
1853‧‧‧特定模數縮減結果元素
1804‧‧‧執行模數縮減指令之設備
1901‧‧‧執行二元有限體乘法指令之設備
1910‧‧‧源資料運算元組的元素
1912‧‧‧源資料運算元組的元素
1916‧‧‧選擇器
1918‧‧‧經縮減的乘積
1903‧‧‧執行二元有限體乘法指令之設備
1920‧‧‧源資料運算元組的元素
1922‧‧‧源資料運算元組的元素
1925‧‧‧陣列
本發明藉由例子來說明,且不限於附圖中的圖式。
圖1A係系統之實施例的方塊圖,該系統執行指令以提供通用GF(256)SIMD密碼算術功能。
圖1B係系統之另一實施例的方塊圖,該系統執行指令以提供通用GF(256)SIMD密碼算術功能。
圖1C係系統之另一實施例的方塊圖,該系統執行指令以提供通用GF(256)SIMD密碼算術功能。
圖2係處理器之實施例的方塊圖,該系統執行指令以提供通用GF(256)SIMD密碼算術功能。
圖3A說明按照一實施例的封裝資料類型。
圖3B說明按照一實施例的封裝資料類型。
圖3C說明按照一實施例的封裝資料類型。
圖3D說明按照一實施例之用以提供通用GF(256)SIMD密碼算術功能的指令編碼。
圖3E說明按照另一實施例之用以提供通用 GF(256)SIMD密碼算術功能的指令編碼。
圖3F說明按照另一實施例用以提供通用GF(256)SIMD密碼算術功能的指令編碼。
圖3G說明按照另一實施例用以提供通用GF(256)SIMD密碼算術功能的指令編碼。
圖3H說明按照另一實施例用以提供通用GF(256)SIMD密碼算術功能的指令編碼。
圖4A說明用以執行提供通用GF(256)SIMD密碼算術功能之指令之處理器微架構之實施例的元件。
圖4B說明用以執行提供通用GF(256)SIMD密碼算術功能之指令之處理器微架構之另一實施例的元件。
圖5的方塊圖說明用以執行提供通用GF(256)SIMD密碼算術功能之指令之處理器的實施例。
圖6的方塊圖說明用以執行提供通用GF(256)SIMD密碼算術功能之指令之電腦系統的實施例。
圖7的方塊圖說明用以執行提供通用GF(256)SIMD密碼算術功能之指令之電腦系統的另一實施例。
圖8的方塊圖說明用以執行提供通用GF(256)SIMD密碼算術功能之指令之電腦系統的另一實施例。
圖9的方塊圖說明用以執行提供通用GF(256)SIMD密碼算術功能之指令之系統單晶片的實施例。
圖10的方塊圖說明用以執行提供通用GF(256)SIMD密碼算術功能之指令之處理器的實施例。
圖11的方塊圖係提供通用GF(256)SIMD密碼算術功 能之IP核心開發系統的實施例。
圖12的方塊圖係提供通用GF(256)SIMD密碼算術功能之架構仿真系統的實施例。
圖13說明用於轉譯指令以提供通用GF(256)SIMD密碼算術功能之系統的實施例。
圖14之流程圖說明用於有效地實施先進加密標準(AdvancedEncryptionStandard;AES)加密/解密標準之處理的實施例。
圖15的流程圖說明用於有效地實施AESS-box之乘法逆元之處理的實施例。
圖16A的圖說明用於執行仿射映圖指令以提供通用GF(256)SIMD密碼算術功能之設備的一實施例。
圖16B的圖說明用於執行仿射逆指令以提供通用GF(256)SIMD密碼算術功能之設備的一實施例。
圖16C的圖說明用於執行逆仿射指令以計算乘法逆元接著仿射變換結果以提供通用GF(256)SIMD密碼算術功能之設備的一替代實施例。
圖17A的圖說明用於執行有限體乘法逆元指令以提供通用GF(256)SIMD密碼算術功能之設備的一實施例。
圖17B的圖說明用於執行有限體乘法逆元指令以提供通用GF(256)SIMD密碼算術功能之設備的替代實施例。
圖17C的圖說明用於執行有限體乘法逆元指令以提供通用GF(256)SIMD密碼算術功能之設備的另一替代實施例。
圖18A的圖說明用於執行特定模數縮減指令以提供通用GF(256)SIMD密碼算術功能之設備的一實施例。
圖18B的圖說明用於執行特定模數縮減指令以提供通用GF(256)SIMD密碼算術功能之設備的替代實施例。
圖18C的圖說明用於執行特定AES伽羅瓦計數器模式(GCM)模數縮減指令以提供GF(2128)SIMD密碼算術功能之設備的替代實施例。
圖I8D的圖說明用於執行模數縮減指令之設備的一實施例,以提供通用GF(2t)SIMD密碼算術功能。
圖19A說明用於執行二元有限體乘法指令之設備的實施例,以提供通用GF(256)SIMD密碼算術功能。
圖19B說明用於執行二元有限體乘法指令之設備的替代實施例,以提供通用GF(256)SIMD密碼算術功能。
圖20A的流程圖說明用於執行仿射映圖指令以提供通用GF(256)SIMD密碼算術功能之處理的實施例。
圖20B的流程圖說明用於執行有限體乘法逆元指令以提供通用GF(256)SIMD密碼算術功能之處理的實施例。
圖20C的流程圖說明用於執行仿射逆指令以提供通用GF(256)SIMD密碼算術功能之處理的實施例。
圖20D的流程圖說明用於執行二元有限體乘法指令以提供通用GF(256)SIMD密碼算術功能之處理的實施例。
【發明內容及實施方式】
以下描述本發明之用以提供通用GF(2 n )SIMD密碼算術 功能的指令與處理邏輯,特別是其中n等於2 m (例如,GF(28),GF(216),GF(232),...GF(2128),等)。實施例包括處理器,用以解碼為SIMD仿射變換指定源資料運算元、變換矩陣運算元、及平移向量的指令。對源資料運算元的每一個元素施加變換矩陣,並對每一個經變換的元素施加平移向量。指令的結果儲存在SIMD目的暫存器中。某些實施例也解碼用於SIMD二元有限體乘法逆元的指令,為源資料運算元的每一個元素,計算二元有限體中之逆元素與不可約多項式的模運算。某些實施例也解碼用於SIMD二元有限體乘法逆元的指令,用以為源資料運算元組的每一個元素計算二元有限體中的逆元素與不可約多項式的模運算。某些實施例也解碼用於SIMD仿射變換與乘法逆元(或乘法逆元與仿射變換)的指令,其中,在乘法逆元運算之前或是之後,對源資料運算元的每一個元素施加變換矩陣,並對每一個經變換的元素施加平移向量。某些實施例也解碼用於SIMD模數縮減的指令,以計算縮減模選擇自二元有限體中之多項式的特定模數多項式ps,模數縮減係由指令(或微指令)為此所提供。某些實施例也解碼用於SIMD二元有限體乘法的指令,指定第一與第二源資料運算元用以乘第一與第二源資料運算元之每一對應的元素,並對不可約多項式求模運算。
應可理解,如在本文所描述的實施例中,通用GF(2 n )SIMD密碼算術指令可用來提供應用程式密碼算術功能,諸如在加密協定及網際網路通訊中,用以確保金融交易、電子商務、電子郵件、軟體配銷、資料儲存等的私密性、 資料完整性、身分驗證、訊息內容認證、及訊息來源認證。
亦應理解,該等指令之執行至少提供:(1)SIMD仿射變換,指定源資料運算元、變換矩陣運算元、及平移向量,其中,變換矩陣施加於源資料運算元的每一個元素,及平移向量施加於每一個經變換的元素;(2)SIMD二元有限體乘法逆元,用以為源資料運算元之每一個元素,計算二元有限體中之逆元素與不可約多項式的模運算;(3)SIMD仿射變換與與乘法逆元(或乘法逆元與仿射變換),指定源資料運算元、變換矩陣運算元、及平移向量,其中,在乘法逆元運算之前或是之後,對源資料運算元的每一個元素施加變換矩陣,且對每一個經變換的元素施加平移向量;(4)模數縮減,用以計算對自二元有限體中之多項式(由指令(或微指令)為這些特定的多項式提供模數縮減)中選出的特定模數多項式ps,進行縮減求模運算;(5)SIMD二元有限體乘法,指定第一與第二源資料運算元去乘第一與第二源資料運算元之每一對應對的元素,並對不可約多項式求模運算;其中,該等指令之結果儲存在SIMD目的暫存器中;為了大幅增進數個重要性能關鍵之應用程式的性能,可在硬體及/或微碼序列中提供通用GF(256)及/或其它替代的二元有限體SIMD密碼算術功能,如此就不致會有超量或過多之需要額外電路、面積、或電力的功能單元。
為能更徹底瞭解本發明的實施例,在以下的描述中陳述了許多特定的細節,諸如處理邏輯、處理器類型、微架 構條件、事件、允許機制、及類似物。不過,熟悉此領域之習知技藝者應可理解,實施本發明不需要這些特定的細節。此外,某些習知的結構、電路、及類似物並未詳細顯示,以避免不必要地糢糊了本發明的實施例。
雖然以下的實施例是參考處理器來描述,但其它的實施例可應用於其它類型的積體電路及邏輯裝置。類似的技術與本發明之實施例之教學可應用於可得益於較高管線產出量之其它類型的電路或半導體裝置並提升性能。本發明之實施例的教學可應用於實施資料調處的任何處理器或機器。不過,本發明並不限於實施512位元、256位元、128位元、64位元、32位元、16位元、或8位元之資料操作的處理器或機器,其可應用於其內實施資料之調處或管理的任何處理器或機器。此外,以下之描述所提供的例子及顯示各不同例子的附圖乃基於說明之目的。不過,不能將這些例子解釋成限制之意,它們僅意欲提供本發明之實施例的例子,而非提供本發明之實施例之所有可能實施的詳盡表列。
雖然以下例子描述指令在執行單元與邏輯電路之環境中的處置與分配,但本發明的其它實施例可藉由儲存在機器可讀取之有形媒體上的資料及/或指令來完成,當其被機器執行時,致使機器實施與本發明之至少一個實施例一致的功能。在一實施例中,與本發明之實施例相關聯的功能係具體化成機器可執行指令。該等指令可用來致使經該等指令程式化之通用或專用處理器來實施本發明之步驟。 本發明之實施例可提供為電腦程式產品或軟體,其可包括其上儲存有指令的機器或電腦可讀取媒體,這些指令可用來程式化電腦(或其它電子裝置)以按照本發明的實施例實施一或多項操作。另者,本發明之實施例的步驟,可藉由包含用於實施該等步驟之固定功能邏輯的特定硬體組件來實施,或藉由任何程式化的電腦組件及固定功能硬體組件來實施。
用來程式化邏輯以實施本發明之實施例的指令,可以儲存在系統的記憶體內,諸如DRAM、快取、快閃記憶體、或其它儲存器。此外,指令可經由網路或經由其它電腦可讀取媒體來配送。因此,機器可讀取媒體可包括用於儲存或傳送形式為機器(例如,電腦)可讀取之資訊的任何機制,但不限於軟式磁碟、光學碟、小型光碟、唯讀記憶體(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可程式唯讀記憶體(EPROM)、電可抹除可程式唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體、或用於在網際網路上經由電、光、聲、或其它形式之傳播信號(例如,載波、紅外線信號、數位信號、等)之實體的機器可讀取儲存器。因此,電腦可讀取媒體包括任何類型的實體機器可讀取媒體,適合儲存或傳送可由機器(例如,電腦)讀取之形式的電子指令或資訊。
設計可經歷各種階段,從創造到模擬到製造。用來代表設計的資料可用許多方式來表現設計。首先,在模擬中使用硬體描述語言或其它的功能描述語言來表示硬體很有 用處。此外,可在設計過程的某些階段產生含有邏輯及/或電晶體閘極之電路階層的模型。此外,大多數的設計,在某些階段,到達以資料來表示各裝置在硬體模型中之實體配置的階層。在使用習知半導體製造技術的情況中,用來表示硬體模型的資料,可以是指明各種不同之特徵存在或不存在於用來製造積體電路之光罩的各不同光罩層上的資料。設計之任何表示法中的資料可儲存在任何形式的機器可讀取媒體上。諸如碟片之記憶體或磁性或光學儲存器可以是機器可讀取媒體,用以儲存經由光或電波調變後所傳送來的資訊,或以其它方式產生來傳送此資訊。當指示或攜載碼或設計的電載波被傳送時,在實施電信號之複製、緩衝、或再傳送的情況中,新的複本被完成。因此,通訊提供者或網路提供者可將具體化本發明之實施例之技術的物件,諸如被編碼到載波內的資訊,至少暫時儲存在實體的機器可讀取媒體上。
在現代化的處理器中,許多不同的執行單元被用來處理及執行各種碼及指令。所建立的指令並非全部相同,如某些較快完成,而其它的要花費一些時脈周期來完成。指令的產出量愈快,處理器的整體性能愈佳。因此,儘量快速執行儘量多的指令為有利。不過,有某些指令具有較大的複雜度,且需要更多的執行時間與處理器資源。例如,有浮點指令、載入/儲存操作、資料移動等。
隨著愈來愈多的電腦系統用於網際網路、文字、及多媒體應用,已不時引入額外的處理器支援。在一實施例 中,指令集可能與一或多個電腦架構相關聯,包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷與異常處置、以及外部的輸入與輸出(I/O)。
在一實施例中,指令集架構(ISA)可藉由一或多個微架構來實施,其包括用來實施一或多個指令集的處理器邏輯與電路。因此,具有不同微架構的處理器可共用至少部分公用的指令集。例如,Intel® Pentium 4處理器、Intel® CoreTM處理器、及來自加州Sunnyvale之Advanced Micro Devices,Inc的處理器,都實施近乎相同版本的x86指令集(較新版本則已增加某些延伸),但具有不同的內部設計。同樣地,其它處理器開發公司所設計的處理器,諸如ARM Holdings、Ltd.、MIPS、或這些公司的被授權人或採用者,可共用至少部分公用的指令集,但其包括不同的處理器設計。例如,ISA之相同的暫存器架構,可在使用新或習知技術的不同微架構中以不同的方式實施,包括專用的實體暫存器、一或多個使用暫存器更名機制(例如,使用暫存器別名表(Register Alias Table;RAT)、重排序緩衝器(Reorder Buffer;ROB)、及止用暫存器檔案)之動態配置的實體暫存器。在一實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案、或其它可被或不可被軟體程式員定址的暫存器組。
在一實施例中,指令可包括一或多個指令格式。在一實施例中,除了別的以外,指令格式可指示各不同的欄位(位元數量、位元位置等)用來指定所要執行的操作及要 被執行之操作的運算元。某些指令格式可藉由指令樣板(或子格式)進一步分段定義。例如,某指令格式的指令樣板可被定義成指令格式之欄位具有不同的子集,及/或定義成具有不同解譯的特定欄位。在一實施例中,指令係使用指令格式來表示(且,如果定義,是在該指令格式之其中一個特定的指令樣板中),並指定或指示該操作及該操作所要操作的運算元。
科學、金融、通用自動向量化、RMS(辨識、大數據挖掘、及合成)、及視覺與多媒體應用(例如,2D/3D繪圖、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音頻調處)都需要對大量的資料項實施相同的操作。在一實施例中,單指令多資料(SIMD)意指可致使處理器對多個資料元素實施操作的指令類型。SIMD技術可在處理器中使用,其將暫存器中的位元邏輯地劃分若干固定大小或可變大小的資料元素,每一個元素代表一獨立的值。例如,在一實施例中,64位元暫存器中的位元可被組織成包含4個獨立之16位元資料元素的源運算元,每一個代表一個獨立的16位元值。此類型的資料可稱為“封裝的”資料類型或“向量”資料類型,且此資料類型的運算元被稱為封裝的資料運算元或向量運算元。在一實施例中,封裝的資料項或向量可以是儲存在單個暫存器內之封裝資料項的序列,且封裝的資料運算元或向量運算元可以是SIMD指令(或“封裝的資料指令”或“向量指令”)的源或目的運算元。在一實施例中,SIMD指令將所要實施的單個向量操作指 定給兩個源向量運算元以產生大小相同或不同之目的向量運算元(也稱為結果向量運算元),具有相同或不同數目之資料元素,及相同或不同的資料元素順序。
諸如具有包括x86、MMXTM、Streaming SIMD Extensions(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令之指令集的Intel® CoreTM處理器,ARM處理器,諸如具有包括向量浮點(Vector Floating Point;VFP)及/或NEON指令之指令集的ARM Cortex®系列處理器,諸如中國科學院之計算技術研究所(Institute of Computing Technology;ICT)所發展的龍芯(Loongson)系列處理器所使用的SIMD技術,在應用性能方面已能做到重大增進(CoreTM與MMXTM係加州Santa Clara之英代爾公司所註冊的商標)。
在一實施例中,目的與源暫存器/資料係通用術語,用來代表對應之資料或操作的源與目的地。在某些實施例中,它們可被暫存器、記憶體、或具有與那些所描繪之名稱或功能不同的其它儲存區域實施。例如,在一實施例中,“DEST1”可以是暫時的儲存暫存器或其它的儲存區域,然而,“SRC1”與“SRC2”可以是第一與第二源儲存暫存器或其它儲存區域,等等。在其它實施例中,兩或更多個SRC與DEST儲存區域可對應於相同儲存區域(例如,SIMD暫存器)中之不同的資料儲存單元。在一實施例中,其中一個源暫存器也可做為目的暫存器,例如,藉由將在第一與第二源資料上所實施之操作的結果,寫回到兩個源暫存器其中做為目的暫存器者。
圖1A係以處理器所形成的例示性電腦系統的方塊圖,處理器包括執行單元,用以執行按照本發明之實施例的指令。系統100包括按照本發明的組件,諸如處理器102使用包括邏輯的執行單元實施用於處理資料的演算法,諸如本文所描述的實施例。系統100係以PENTIUM® III、PENTIUM® 4、XeonTM、Itanium®、XScaleTM及/或StrongARMTM微處理器(可從加州Santa Clara之英代爾公司獲得)為基礎之處理系統的代表,然而,也可使用其它系統(包括具有其它微處理器的PC、工程工作站、機上盒等)。在一實施例中,樣品系統100可執行WINDOWSTM作業系統(可從華盛頓Redmond的微軟公司獲得)之版本,然而,也可使用其它的作業系統(例如,UNIX與Linux)、內建軟體、及/或圖形使用者介面。因此,本發明的實施例並不限於任何特定之硬體電路與軟體的組合。
實施例並不限於電腦系統。本發明之替代的實施例可用於其它裝置,諸如手持式裝置與嵌入式應用。手持式裝置的一些例子包括細胞式電話、網際網路協定裝置、數位式照相機器、個人數位式助理(PDA)、及手持式PC。嵌入式應用可包括微控制器、數位信號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機器上盒、網路集線器、廣域網路(WAN)交換機、或可實施按照至少一實施例之一或多個指令的任何其它系統。
圖1A係以處理器102所形成的電腦系統100的方塊圖,其包括一或多個執行單元108,用以執行實施按照本 發明之至少一個實施例的演算法。一實施例可在單處理器的桌上型電腦或伺服系統的環境中描述,但替代的實施例可包括在多處理器系統中。系統100係“集線器”系統架構的例子。系統100包括用以處理資料信號的處理器102。處理器102可以是複雜指令集電腦(CISC)微處理器、精簡指令集電腦(RISC)微處理器、極長指令字(VLIW)微處理器、實施混合指令集的處理器、或任何其它處理器裝置,例如,諸如,數位信號處理器。處理器102耦接至處理器匯流排110,其可在處理器102與系統100之其它組件之間傳送資料信號。系統100之各單元實施它們習知功能,這些為熟悉此領域之習知技藝者所熟知。
在一實施例中,處理器102包括1級(L1)內部快取記憶體104。視架構而定,處理器102可具有單一的內部快取或多級的內部快取。另者,在另一實施例中,快取記憶體存在於處理器102的外部。其它實施例也可視特定的實施與需要而包括內部與外部快取兩者的組合。暫存器檔案106可將不同類型的資料儲存在各種不同的暫存器中,包括有整數暫存器、浮點暫存器、狀態暫存器、及指令指標暫存器。
執行單元108包括用以實施整數與浮點運算的邏輯,也存在於處理器102中。處理器102也包括微碼(ucode)ROM,其儲存用於某些微指令的微碼。關於一實施例,執行單元108包括用以處置封裝指令集109的邏輯。藉由在通用處理器102的指令集中包括封裝的指令集109,連同 用以執行該等指令的相關電路,很多多媒體應用程式所使用的操作,都可使用封裝的資料在通用處理器102中實施。因此,藉由使用處理器之全寬的資料匯流排來對封裝的資料實施操作,很多多媒體應用程式可以被加速且更有效率的執行。此可消除橫過處理器之資料匯流排轉移較小資料單元的需要,以一次對一個資料元素實施一或多項操作。
執行單元108的另一實施例也可使用在微控制器、內嵌式處理器、繪圖裝置、DSP、及其它類型的邏輯電路中。系統100包括記憶體120。記憶體120可以是動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、或其它記憶體裝置。記憶體120可儲存以處理器102可執行之資料信號所代表的指令及/或資料
系統邏輯晶片116耦接至處理器匯流排110與記憶體120。在所說明之實施例中的系統邏輯晶片116係記憶體控制器集線器(MCH)。處理器102可經由處理器匯流排110與MCH 116通訊。MCH 116提供到達記憶體120的高頻寬的記憶體路徑118,用以儲存指令與資料,及用於繪圖命令、資料、及紋理的儲存。MCH 116在處理器102、記憶體120、及系統100中的其它組件之間導引資料信號,且在處理器匯流排110、記憶體120、及系統I/O 122之間橋接資料信號。在某些實施例中,系統邏輯晶片116可提供用以耦接繪圖控制器112的圖形埠。MCH 116 經由記憶體介面118耦接至記憶體120。繪圖卡112經由加速繪圖埠(AGP)互連114耦接至MCH 116。
系統100使用專屬的集線器介面匯流排122將MCH 116耦接至I/O控制器集線器(ICH)130。ICH 130經由本地I/O匯流排提供與某些I/O裝置的直接連接。本地I/O匯流排係高速I/O匯流排,用於將周邊連接到記憶體120、晶片組、與處理器102。某些例子係音訊控制器、韌體集線器(快閃BIOS)128、無線收發器126、資料儲存器124、包含使用者輸入與鍵盤介面的傳統I/O控制器、諸如萬用序列匯流排(USB)的序列擴充埠、以及網路控制器134。資料儲存裝置124可包含硬式磁碟機、軟式磁碟機、CD-ROM裝置、快閃記憶體裝置、或其它的大量儲存裝置。
關於系統的其它實施例,按照一實施例的指令可用於系統單晶片。系統單晶片的一實施例包含處理器與記憶體。用於此一系統的記憶體係快閃記憶體。快閃記憶體可位於與處理器及其它系統組件同一片晶粒上。此外,其它的邏輯區塊,諸如記憶體控制器或繪圖控制器也可位於系統單晶片上。
圖1B說明資料處理系統140,其實施本發明之實施例的原理。熟悉此領域的習知技藝者將很容易理解,本文所描述的實施例可用於替代的處理系統,不會偏離本發明之實施例的範圍。
電腦系統140包含有能力實施按照一實施例之至少一 個指令的處理核心159。關於一實施例,處理核心159代表任何類型之架構的處理單元,包括但不限於CISC、RISC、或VLIW類型的架構。處理核心159也適合以一或多種處理技術來製造並以詳細展現於機器可讀取媒體上的方式而可來適合有助於該製造。
處理核心159包含執行單元142、一組暫存器檔案145、及解碼器144。處理核心159也包括額外的電路(未顯示),其對於瞭解本發明之實施例並非必要。執行單元142用於執行處理核心159所接收的指令。除了實施典型的處理器指令之外,執行單元142也實施封裝之指令集143中的指令,用以對封裝的資料格式實施操作。封裝的指令集143包括用於實施本發明之實施例的指令及其它封裝的指令。執行單元142藉由內部匯流排耦接至暫存器檔案145。暫存器檔案145表示處理核心159上用於儲存資訊(包括資料)的儲存區域。如前所述,須瞭解,用於儲存封裝之資料的儲存區域並非關鍵。執行單元142耦接至解碼器144。解碼器144用來將處理核心159所接收的指令解碼成控制信號及/或微碼登錄點。執行單元142回應這些控制信號及/或微碼登錄點而實施適當的操作。在一實施例中,解碼器係用來解譯指令的運算碼,其指示需對該指令內所指示之對應的資料實施何種操作。
處理核心159耦接至匯流排141用以與各種其它的系統裝置通訊,例如,其包括但不限於同步動態隨機存取記憶體(SDRAM)控制146、靜態隨機存取記憶體(SRAM)控 制147、叢發快閃記憶體介面148、個人電腦記憶體卡國際協會(PCMCIA)/緊湊型快閃記憶卡(CF)控制149、液晶顯示器(LCD)控制150、直接記憶體存取(DMA)控制器151、及替代的匯流排主介面152。在一實施例中,資料處理系統140也包含I/O電橋154,用於經由I/O匯流排153與各種I/O裝置通訊。這些I/O裝置可包括但不限於例如,通用非同步接收器/發送器(UART)155、通用序列匯流排(USB)156、藍牙無線UART 157、及I/O擴充介面158。
資料處理系統140的一實施例提供行動、網路及/或無線通訊,且處理核心159具有實施包括文字串比較操作之SIMD操作的能力。處理核心159可用的各種音訊、視訊、成像與通訊演算法來編程,包括離散變換,諸如沃爾什-哈達瑪變換、快速傅利葉變換(FFT)、離散餘弦變換(DCT)、及以上這些各自的逆變換;壓縮/解壓縮技術,諸如色彩空間變換、視訊編碼移動估計、或視訊解碼移動壓縮;以及調變/解調變(MODEM)功能,諸如脈衝編碼調變(PCM)。
圖1C說明資料處理系統的另一替代實施例,其具有執行提供通用GF(256)SIMD密碼算術功能之指令的能力。按照一替代實施例,資料處理系統160包括主處理器166、SIMD協同處理器161、快取記憶體167、及輸入/輸出系統168。輸入/輸出系統168可選用地耦接至無線介面169。SIMD協同處理器161有能力實施包括按照一實施例 之指令的操作。處理核心170適合以一或多種處理技術來製造並以詳細展現於機器可讀取媒體上的方式而可適合有助於製造包括處理核心170之所有或部分的資料處理系統160。
關於一實施例,SIMD協同處理器161包含執行單元162與一組暫存器檔案164。主處理器166的一實施例包含解碼器165,用以辨認指令集163之指令,其包括供執行單元162執行之按照一實施例的指令。關於替代的實施例,SIMD協同處理器161也包含至少部分的解碼器165B,用以解碼指令集163的指令。處理核心170也包括其它電路(未顯示),其對於瞭解本發明之實施例並非必要。
操作時,主處理器166執行資料處理指令之串流,其控制一般類型的資料處理操作,包括與快取記憶體167、及輸入/輸出系統168的互動。SIMD協同處理器指令嵌入在資料處理指令的串流中。主處理器166的解碼器165辨認這些SIMD協同處理器指令係應由附加之SIMD協同處理器161執行的類型。因此,主處理器166在協同處理器匯流排171上發出這些SIMD協同處理器指令(或代表SIMD協同處理器指令之控制信號),由任何附加的SIMD協同處理器接收。在此情況,SIMD協同處理器161將接受及執行任何所接收之供其使用的SIMD協同處理器指令。
資料可經由無線介面169接收供SIMD協同處理器指 令處理。例如,以數位信號之形式接收語音通訊,其可由SIMD協同處理器指令處理,以再生語音通訊的數位音訊樣本表示。關於另一例子,接收數位位元串流形式之經壓縮的音訊及/或視訊,其可由SIMD協同處理器指令處理,以再生數位音訊樣本及/或移動的視訊框。關於處理核心170、主處理器166、及SIMD協同處理器161被整合到單一處理核心170的實施例,其包含執行單元162、一組暫存器檔案164、及用以辨認指令集163之指令的解碼器165,指令集163包括按照一實施例的指令。
圖2係處理器200之微架構的方塊圖,其包括用以實施按照本發明一實施例之指令的邏輯電路。在某些實施例中,按照一實施例的指令可被實施來操作具有位元組、單字、雙字、四字等大小及資料類型諸如單或雙精度整數與浮點資料類型的資料元素。在一實施例中,有序前端201係處理器200的一部分,其擷取要被執行的指令,並準備這些指令,以便稍後在處理器管線中使用。前端201可包括幾個單元。在一實施例中,指令預取器226從記憶體擷取指令,並將其饋送至指令解碼器228,其依次解碼或解譯這些指令。例如,在一實施例中,解碼器將所接收的指令解碼成機器可執行的一或多個操作,稱為“微指令”或“微操作”(也稱為micro op或uops)。在其它實施例中,解碼器將指令剖析成運算碼及對應的資料與控制欄位,其被微架構使用來實施按照一實施例的操作。在一實施例中,跡線快取230取得經解碼的微操作,並將它們組合到微操 作佇列234中的程式有序序列或跡線內供執行。當跡線快取230遇到複雜的指令時,微碼ROM 232提供完成操作所需的微操作。
某些指令被轉換成單個微操作,然而其它的指令需要數個微操作來完全整個操作。在一實施例中,如果需要4個以上的微操作來完成指令,則解碼器228存取微碼ROM 232來完成該指令。關於一實施例,指令可在指令解碼器228處被解碼成少量的微操作供處理。在另一實施例中,指令可被儲存在微碼ROM 232內,需要若干個微操作來完成操作。跡線快取230參考可程式邏輯陣列(PLA)的登錄點來決定一正確的微指令指標器,用以從微碼ROM 232讀取用以完成按照一實施例之一或多個指令的微碼序列。在微碼ROM 232為指令完成微操作的排序之後,機器的前端201恢復從跡線快取230擷取微操作。
在亂序執行引擎203處準備指令供執行。亂序執行邏輯具有若干緩衝器用以平滑及重排序指令流,以最佳化當這些指令下到管線並取得排程供執行時的性能。為了執行,配置器邏輯為每一個微操作配置所需的機器緩衝器與資源。暫存器更名邏輯將邏輯暫存器更名到暫存器檔案中的登錄上。在指令排程器(記憶體排程器、快速排程器202、慢速/一般浮點排程器204、及簡單浮點排程器206)之前,配置器也為每一個微操作在兩個微操作佇列其中之一之中配置登錄,一個用於記憶體操作及一個用於非記憶體操作。微操作排程器202、204、206根據它們相依之輸 入暫存器運算元來源的就緒度,以及微操作完成它們之操作所需之執行資源的可用度,來決定微操作何時準備好執行。一實施例的快速排程器202可在每半個主時脈周期上排程,而其它排程器僅能每個主處理器時脈周期排程一次。排程器對調度埠(dispatch port)進行仲裁,以便排程微操作供執行。
暫存器檔案208、210位於排程器202、204、206與執行方塊211中的執行單元212、214、216、218、220、222、224之間。暫存器檔案208、210係為獨立,分別用於整數與浮點運算。一實施例的暫存器檔案208、210也包括旁通網路,其可將剛完成的結果旁通或向前轉送,而不寫入暫存器檔案給新的相依微操作。整數暫存器檔案208和浮點暫存器檔案210也有能力與另一通訊資料。關於一實施例,整數暫存器檔案208被分割成兩個獨立的暫存器檔案,一個暫存器檔案用於資料的低位32位元,第二個暫存器檔案用於資料的高位32位元。由於浮點指令的運算元典型上具有64至128位元的寬度,因此,一實施例的浮點暫存器檔案210具有128位元寬的登錄。
執行方塊211包含執行單元212、214、216、218、220、222、224,指令在此被實際地執行。此段包括暫存器檔案208、210,其儲存微指令執行所需要的整數與浮點資料運算元的值。一實施例的處理器200係由位址產生單元(AGU)212、AGU 214、快速算術邏輯單元(ALU)216、快速ALU 218、慢速ALU 220、浮點ALU 222、浮 點移動單元224等執行單元組成。關於一實施例,浮點執行方塊222、224,執行浮點、MMX、SIMD、及SSE、或其它操作。一實施例的浮點ALU 222包括64位元除64位元的浮點除法器,用於執行除、平方根、及餘數微操作。關於本發明的實施例,包括浮點值的指令可使用浮點硬體來處理。在一實施例中,ALU操作前往高速ALU執行單元216、218。一實施例的快速ALU216、218可用半個時脈周期之有效的潛時執行快速操作。關於一實施例,由於慢速ALU 220包括有用於長潛時類型之操作的整數執行硬體,最複雜的整數運算前往慢速ALU 220,諸如乘法器、移位、旗標邏輯、及分支處理等。記憶體載入/儲存操作係由AGU 212、214來執行。關於一實施例,係在對64位元之資料運算元實施整數操作的環境中描述整數ALU 216、218、220。在替代的實施例中,ALU 216、218、220可實施來支援各種不同的資料位元,包括16、32、128、256等。同樣地,浮點單元222、224可實施來支援一範圍之具有各種不同位元寬度的運算元。關於一實施例,浮點單元222、224可對結合SIMD與多媒體指令之128位元寬的封裝運算元操作。
在一實施例中,微操作排程器202、204、206在母體載入完成之前執行調度相依操作。當微操作在處理器200中被推測地排程與執行時,處理器200也包括邏輯用來處置記憶體未命中。如果在資料快取中資料載入未命中,則相依的操作在管線中飛行,其以暫時的錯誤資料留置排程 器。一重播機制追蹤並再執行使用錯誤資料的指令。僅相依的操作需要被重播且允許獨立的操作完成。處理器之一實施例的排程器與重播機制也被設計來捕捉提供通用GF(256)SIMD密碼算術功能的指令。
名詞“暫存器”可意指內建在處理器的儲存位置,其被當成指令的一部分使用,用以識別運算元。換言之,暫存器是可從處理器外部使用的那些儲存位置(從程式員的觀點)。不過,實施例的暫存器不限於意指特定的電路類型。反之,實施例的的暫存器具有儲存與提供資料並實施本文所描述之功能的能力。本文所描述的暫存器可藉由處理器內之電路使用任何多種不同的技術來實施,諸如專用實體暫存器、使用暫存器更名的動態配置實體暫存器、專用與動態配置實體暫存器的組合等。在一實施例中,整數暫存器儲存32位元的整數資料。一實施例的暫存器檔案也包含8個多媒體SIMD暫存器用於封裝的資料。關於以下的討論,須瞭解暫存器係資料暫存器,設計用來保存封裝的資料,諸如微處理器中之64位元寬的MMXTM暫存器(在某些例中也稱為‘mm’暫存器),以來自加州Santa Clara之英代爾公司的MMX技術致能。這些MMX暫存器在整數與浮點兩種形式中均可用,可用伴隨有SIMD與SSE指令的封裝資料元素來操作。同樣地,與SSE2、SSE3、SSE4或以上(一般為“SSEx”)技術有關之128位元寬的XMM暫存器,也被用來保存此封裝的資料運算元。在一實施例中,在儲存封裝資料與整數資料方面,暫存器不需 要區分這兩資料類型。在一實施例中,整數與浮點可包含在相同的暫存器檔案或不同的暫存器檔案中。此外,在一實施例中,浮點與整數資料可儲存在不同的暫存器或相同的暫存器中。
在以下各圖的例子中描述若干資料運算元。圖3A說明按照本發明之一實施例,多媒體暫存器中各種不同封裝資料類型表示法。圖3A說明用於128位元寬之運算元的封裝位元組310、封裝字320、及封裝雙字330的資料類型。本例之封裝位元組格式310係長128位元,且包含16個封裝位元組資料元素。在此,位元組的定義為8位元的資料。每一個位元組資料元素的資訊係儲存在位元組0的位元7至位元0、位元組1的位元15至位元8、位元組2的位元23至位元16、及最後位元組15的位元120至位元127。因此,暫存器中所有可用的位元都被使用。此儲存配置增加了處理器的儲存效率。同樣地,以16個資料元素存取,一個操作現在可對16個資料元素平行實施。
一般來說,資料元素係個別的資料件,其與其它長度相同的資料元素儲存在單一個暫存器或記憶體位置中。在與SSEx技術相關的封裝資料序列中,儲存在XMM暫存器中之資料元素的數量係128位元除以個別資料元素之位元長度。相似地,在與MMX和SSE技術相關的封裝資料序列中,儲存在MMX暫存器中之資料元素的數量係64位元除以個別資料元素之位元長度。雖然圖3A中所說明 之資料類型為128位元長,但本發明之實施例也可操作64位元寬、256位元寬、512位元寬、或其它大小的運算元。本例之封裝字格式320係128位元長,且包含8個封裝字資料元素。每一個封裝字包含16位元的資訊。圖3A之封裝雙字格式330係128位元長,且包含4個封裝雙字資料元素。每一個封裝雙字資料元素包含32位元的資訊。封裝四字係128位元長,且包含2個封裝四字資料元素。
圖3B說明替代之暫存器內的資料儲存格式。每一個封裝資料可包括一個以上的獨立資料元素。在此說明3個封裝的資料格式:封裝的半字341、封裝的單字342、及封裝的雙字343。封裝半字341、封裝單字342、及封裝雙字343的一實施例包含固定點資料元素。一或多個封裝半字341、封裝單字342、及封裝雙字343的替代實施例可包含浮點資料元素。封裝半字341的替代實施例係128位元長,包含8個16位元的資料元素。封裝單字342的一實施例係128位元長,包含4個32位元的資料元素。封裝雙字343的一實施例係128位元長,包含2個64位元的資料元素。須理解,此封裝資料格式可進一步延伸到其它暫存器長度,例如,96位元、160位元、192位元、224位元、256位元、512位元、或更多。
圖3C說明按照本發明一實施例,多媒體暫存器中各種有符號與無符號之封裝資料類型的表示法。無符號封裝位元組表示法344說明無符號封裝的位元組在SIMD暫存 器中的儲存。每一個位元組資料元素的資訊係位元組0儲存在位元7至位元0、位元組1儲存在位元15至位元8、位元組2儲存在位元23至位元16、等,及最後,位元組15儲存在位元120至位元127。因此,暫存器中所有可用的位元都被使用。此儲存配置增加了處理器的儲存效率。同樣地,以16個資料元素存取,一項操作現在可用平行的方式對16個資料元素實施。有符號封裝位元組表示法345說明有符號封裝位元組的儲存。須注意,每個位元組資料元素的第8個位元為符號指示元。無符號封裝字表示法346說明字7到字0在SIMD暫存器中如何儲存。有符號封裝字表示法347與無符號封裝字暫存器內表示法346類似。須注意,每一個字資料元素的第16個位元係符號指示元。無符號封裝雙字表示法348顯示雙字資料元素如何儲存。有符號封裝雙字表示法349與無符號封裝雙字暫存器內表示法348類似。須注意,每一個雙字資料元素所需的符號位元係第32個位元。
圖3D描繪運算編碼(運算碼)格式360的實施例,其具有32或更多個位元,且暫存器/記憶體運算元定址模式符合“Intel® 64 and IA-32 Intel Architecture Software Developer’s Manual Combined Volumes 2A and 2B:Instruction Set Reference A-Z,”中所描述之運算碼格式的類型,其可從全球通訊網(www)上之加州Santa Clara之英代爾公司的intel.com/products/processor/manuals/處獲得。在一實施例中,且指令係由一或多個欄位361與363 來編碼。每個指令要識別到兩個運算元位置,包括兩個源運算元識別符364與365。關於一實施例,目的運算元識別符366與源運算元識別符364相同,然而在其它實施例中它們則不相同。關於一替代實施例,目的運算元識別符366與源運算元識別符365相同,然而在其它實施例中它們則不相同。在一實施例中,被源運算元識別符364與365識別的其中一個源運算元被指令的結果覆寫,然而,在另一實施例中,識別符364對應於源暫存器元素,及識別符365對應於目的暫存器元素。關於一實施例,運算元識別符364與365可用來識別32位元或64位元的源與目的運算元。
圖3E描繪另一替代的運算編碼(運算碼)格式370,其具有40或更個多位元。運算碼格式370符合運算碼格式360,且包含選用的前置位元組378。按照一實施例的指令可被一或多個欄位378、371、及372編碼。每個指令可有兩個運算元位置可被源運算元識別符374與375及被前置位元組378識別。關於一實施例,前置位元組378可用來識別32位元或64位元的源與目的運算元。關於一實施例,目的運算元識別符376與源運算元識別符374相同,然而在其它實施例中它們則不相同。關於一替代實施例,目的運算元識別符376與源運算元識別符375相同,然而在其它實施例中它們則不相同。在一實施例中,指令對被運算元識別符374與375所識別的一或多個運算元操作,且被運算元識別符374與375所識別的一或多個運算 元被指令的結果覆寫,然而,在其它實施例中,被識別符374與375所識別的一或多個運算元被寫入另一暫存器中的另一資料元素。運算碼格式360與370允許暫存器對暫存器、記憶體對暫存器、暫存器被記憶體、暫存器被暫存器、暫存器被立即、暫存器對記憶體等定址,部分是由MOD欄位363與373與選用的標度-索引-基礎(scale-index-base)與位移位元組所指定。
接下來轉向圖3F,在某些替代的實施例中,64位元(或128位元、或256位元、或512位元、或更多)單指令多資料(SIMD)算術運算可透過協處理器資料處理(coprocessor data processing;CDP)指令來實施。運算編碼(運算碼)格式380描繪一個具有CDP運算碼欄位382與389的CDP指令。關於替代的實施例,CDP指令操作的類型可由一或多個欄位383、384、387、及388來編碼。每個指令能有3個運算元位置被識別,包括兩個源運算元識別符385與390及一個目的運算元識別符386。協處理器的一實施例可對8、16、32、及64位元的值操作。關於一實施例,指令係對整數元素實施。在某些實施例中,可使用條件欄位381有條件地執行指令。關於某些實施例,源資料大小可由欄位383來編碼。在某些實施例中,零(Z)、負(N)、進位(C)、及溢位(V)檢測可在SIMD欄位完成。關於某些指令,飽合的類型可藉由欄位384來編碼。
現轉向圖3G,其描繪提供按照另一實施例之通用GF(256)SIMD密碼算術功能的另一替代運算編碼(運算碼) 格式397,其符合“Intel® Advanced Vector Extensions Programming Reference,”中所描述之運算元格式的類型,其可從全球通訊網(www)上之加州Santa Clara之英代爾公司的intel.com/products/processor/manuals/處獲得。
原始x86指令集提供具有各種不同格式之位址字節的1位元組運算碼與包含在附加位元組中的立即運算元,它的存在係從第一個“運算碼”位元組得知。此外,會有某些位元組值保留給運算碼(稱為前置,由於它們必須放在指令的前面)做為修改符。當256個運算碼位元組的原始調色板(包括這些特殊前置值)被用盡時,有一個位元組被專用於逸出到新組的256運算碼。當向量指令(例如,SIMD)被附加時,需要產生更多的運算碼,且即使當透過使用前置來擴充時,“兩位元組”的運算碼映圖也不夠。為此目的,新的指令被加入到附加的映圖中,其使用2位元組加上選用的前置做為識別符。
此外,為了方便64位元模式的附加暫存器,在前置與運算碼之間使用附加的前置(稱為“REX”)(及用來決定運算碼所需的任何逸出位元組)。在一實施例中,REX可具有4個“酬載”位元用來指示64位元模式之附加暫存器的使用。在其它實施例中,其可少於或多於4個位元。至少一個指令集(其通常符合格式360及/或格式370)的通用格式一般可藉由以下來說明:[prefixes][rex]escape[escape2]opcode modrm(等)
運算碼格式397符合運算碼格式370且包含選用的 VEX前置位元組391(在一實施例中,以十六進制的C4開始)用來置換其它最常用的傳統指令前置位元組與逸出碼。例如,以下說明的實施例使用兩個欄位來編碼指令,當原始指令中存在有第二個逸出碼時,或當REX欄位中需要使用額外的位元(例如,XB與W欄位)時,其會被使用。在以下說明的實施例中,以新的逸出值來代表傳統的逸出,傳統的前置被完全壓縮成為“酬載”位元組的一部分,傳統前置被再生且可用於未來的展開,第二個逸出碼被壓縮入“映圖”欄位,含有未來的映圖或可用的特徵空間,且新的特徵被加入(例如,增加的向量長度與附加的源暫存器說明符)。
按照一實施例的指令可藉由一或多個欄位391與392來編碼。藉由欄位391結合源運算元識別符374與375並結合選用的標度-索引-基礎(SIB)識別符393、選用的位移識別符394、與選用的立即位元組395能識別每個指令的4個運算元位置。關於一實施例,VEX前置位元組391可用來識別32位元或64位元的源與目的運算元,及/或128位元或256位元的SIMD暫存器或記憶體運算元。關於一實施例,運算碼格式397所提供的功能可與運算碼格式 370冗餘,然而,在其它實施例中,它們可不相同。運算碼格式370與397允許暫存器對暫存器、記憶體對暫存器、暫存器被記憶體、暫存器被暫存器、暫存器被立即、暫存器對記憶體定址,部分是由MOD欄位373及由選用的(SIB)與識別符393、選用的位移識別符394及選用的立即位元組395所指定。
接下來轉向圖3H,其描繪用以提供按照另一實施例之通用GF(256)SIMD密碼算術功能的另一替代運算編碼(運算碼)格式398。運算碼格式398與運算碼格式370與397相符,且包含選用的EVEX前置位元組396(在一實施例中以十六進制的62開始)來置換其它最常使用的傳統指令前置位元組及逸出碼並提供附加功能。按照一實施例的指令,其可藉由一或多個欄位396與392來編碼。藉由欄位396結合源運算元識別符374與375並結合選用的標度-索引-基礎(SIB)識別符393、選用的位移識別符394、與選用的立即位元組395能識別每個指令的4個運算元位置與遮罩。關於一實施例,EVEX前置位元組396用來識別32位元或64位元的源與目的運算元,及/或128位元、256位元或512位元的SIMD暫存器或記憶體運算元。關於一實施例,運算碼格式398所提供的功能可與運算碼格式370或397冗餘,然而,在其它實施例中,它們可不相同。運算碼格式398允許暫存器對暫存器、記憶體對暫存器、暫存器被記憶體、暫存器被暫存器、暫存器被立即、暫存器對記憶體以遮罩定址,部分是由MOD欄位373及 由選用的(SIB)與識別符393、選用的位移識別符394、及選用的立即位元組395所指定。至少一個指令集(其通常符合格式360及/或格式370)的通用格式一般可藉由以下來說明:evex1 RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm]
關於按照EVEX格式398編碼之指令的實施例可具有附加的“酬載”位元,其可用於提供通用GF(256)SIMD密碼算術功能與附加的幾項新特徵,例如,諸如使用者可組態的遮罩暫存器、或附加的運算元、或從128位元、256位元、或512位元向量暫存器之中選擇,或從其選擇更多暫存器等。
例如,VEX格式397可用來提供通用GF(256)SIMD密碼算術功能與隱式遮罩,而EVEX格式398可用來提供通用GF(256)SIMD密碼算術功能與顯式使用者可組態的遮罩。此外,VEX格式397可用來在128位元或256位元向量暫存器上提供通用GF(256)SIMD密碼算術功能,而EVEX格式398可用來在128位元、256位元、或512位元或更大的向量暫存器上提供通用GF(256)SIMD密碼算術功能。
藉由以下的例子來說明提供通用GF(256)SIMD密碼算術功能的例示指令:
可理解,如本文所描述的實施例中,通用GF(256)SIMD密碼算術功能可用來在應用程式中提供密碼算術功能,諸如在加密協定與網際網路通訊中,用來確保金融交易、電子商務、電子郵件、軟體配銷、資料儲存等的私密性、資料完整性、身分驗證、訊息內容認證、及訊息來源認證。
亦應理解,該等指令之執行至少提供:(1)SIMD仿射變換,指定源資料運算元、變換矩陣運算元、及平移向量,其中,變換矩陣施加於源資料運算元的每一個元素,及平移向量施加於每一個經變換的元素;(2)SIMD二元有限體乘法逆元,用以為源資料運算元之每一個元素,計算二元有限體中之逆元素與不可約多項式的模運算;(3)SIMD仿射變換與與乘法逆元(或乘法逆元與仿射變換),指定源資料運算元、變換矩陣運算元、及平移向量,其中,在乘法逆元運算之前或是之後,對源資料運算元的每一個元素施加變換矩陣,且對每一個經變換的元素施加平移向量;(4)模數縮減,用以計算對自二元有限體中之多項式(由指令(或微指令)為這些特定的多項式提供模數縮減)中選出的特定模數多項式ps,進行縮減模運算;(5)SIMD二元有限體乘法,指定第一與第二源資料運算元去乘第一與第二源資料運算元之每一對應對的元素,對不可約多項式求模運算;其中,該等指令之結果儲存在SIMD目的暫存器中;為了大幅增進數個重要性能關鍵之應用程式的性能,可在硬體及/或微碼序列中提供通用GF(256)及/或其它替代的二元有限體SIMD密碼算術功能,而不致會有 超量或過多之需要額外電路、面積、或電力的功能單元。
圖4A說明按照本發明至少一實施例之循序管線與暫存器更名級、亂序發出/執行管線的方塊圖。圖4B說明包括在按照本發明至少一實施例之處理器中的循序架構核心與暫存器更名邏輯、亂序發出/執行邏輯。圖4A中的實線方塊說明循序管線,而虛線方塊說明暫存器更名、亂序發出/執行管線。同樣地,圖4B中的實線方塊說明循序架構邏輯,而虛線方塊說明暫存器更名邏輯與亂序發出/執行邏輯。
在圖4A中,處理器管線400包括提取級402、長度解碼級404、解碼級406、配置級408、更名級410、排程(也稱為調度或發送)級412、暫存器讀取/記憶體讀取級414、執行級416、寫回/記憶體寫入級418、異常處置級422、與確認級424。
在圖4B中,箭頭指示兩或多個單元之間的耦接,且箭頭方向指示這些單元之間資料流的方向。圖4B顯示處理器核心490包括前端單元430耦接至執行引擎單元450,且兩者耦接至記憶體單元470。
核心490可以是精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字組(VLIW)核心、或混合或替代的核心類型。如還有其它選擇,核心490可以是特殊用途核心,例如,諸如網路或通訊核心、壓縮引擎、繪圖核心、或類似物。
前端單元430包括耦接至指令快取單元434的分支預 測單元432,指令讀取單元也耦接至指令轉譯後備緩衝區(TLB)436,其耦接至指令提取單元438,其耦接至解碼單元440。解碼單元或解碼器可解碼指令,並產生如一或多個微操作、微碼登錄點、微指令、其它指令、或其它控制信號的輸出,這些係解碼自、或以其它方式反射、或導出自原始指令。解碼器可使用各種不同的機制來實施。適合的機制例包括但不限於查找表、硬體實施、可程式邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。指令快取單元434進一步耦接至記憶體單元470中的2級(L2)快取單元476。解碼單元440耦接至執行引擎單元450內的更名/配置單元452。
執行引擎單元450包括更名/配置單元452耦接至止用單元454及一組一或多個排程器單元456。排程器單元456代表任何數量之不同的排程器,包括保留站、中央指令視窗等。排程器單元456耦接至實體暫存器檔案單元458。每一個實體暫存器檔案單元458代表一或多個實體暫存器檔案,不同的暫存器檔案儲存一或多個不同的資料類型,諸如純量整數、純量浮點、封裝的整數、封裝的浮點、向量整數、向量浮點等、狀態(例如,指令指標器,其為要被執行之下一個指令的位址)等。實體暫存器檔案單元458被止用單元454重疊用以說明可用來實施暫存器更名與亂序執行的各種不同的方法(例如,使用重排序緩衝區與止用暫存器檔案;使用未來檔案、歷史緩衝區、及止用暫存器檔案;使用暫存器映圖與暫存器池;等)。通 常,從處理器之外部或從程式員的觀點可以看到架構暫存器。暫存器並不限於任何特定類型的電路。任何不同類型的暫存器都可適用,只要它們能夠按本文之描述儲存與提供資料。適用之暫存器的例子包括但不限於專用的實體暫存器、使用暫存器更名的動態配置實體暫存器、專用與動態配置實體暫存器的組合等。止用單元454與實體暫存器檔案單元458被耦接至執行群460。執行群460包括一組一或多個執行單元462與一組一或多個記憶體存取單元464。執行單元462可對各種類型的資料(例如,純量浮點、封裝的整數、封裝的浮點、向量整數、向量浮點)實施各種的操作(例如,移位、加、減、乘)。雖然某些實施例可包括若干個專用於特定功能或一組功能的執行單元,但其它實施例可包括全部用來實施所有功能的僅一個執行單元或多個執行單元。圖中所顯示的排程器單元456、實體暫存器檔案單元458、與執行群460有可能是複數個,因為某些實施例為某些類型的資料/操作建立各自獨立的管線(例如,純量整數管線、純量浮點/封裝的整數/封裝的浮點/向量整數/向量浮點管線,及/或記憶體存取管線,其每一個具有它們自已的排程器單元、實體暫存器檔案單元、及/或執行群,且在獨立記憶體存取管線的情況中,所實施的某些實施例中僅此管線的執行群具有記憶體存取單元464)。亦須瞭解,使用獨立管線之處,一或多個這些管線可以是亂序發出/執行且其餘的為循序。
該組記憶體存取單元464耦接至記憶體單元470,其 包括資料TLB單元472耦接至資料快取單元474耦接至2級(L2)快取單元476。在一例示的實施例中,記憶體存取單元464可包括載入單元、儲存位址單元、及儲存資料單元,每一個單元皆耦接至記憶體單元470中的資料TLB單元472。L2快取單元476耦接至一或多個其它級的快取,及最後耦接到主記憶體。
藉由例子,例示性暫存器更名、亂序發出/執行核心架構可按如下實施管線400:1)指令提取438實施提取與長度解碼級402、404;2)解碼單元440實施解碼級406;3)更名/配置單元452實施配置級408與更名級410;4)排程器單元456實施排程級412;5)實體暫存器檔案單元458與記憶體單元470實施暫存器讀取/記憶體讀取級414;執行群460實施執行級416;6)記憶體單元470與實體暫存器檔案單元458實施寫回/記憶體寫入級418;7)異常處置級422中包括各種不同的單元;以及8)止用單元454與實體暫存器檔案單元458實施確認級424。
核心490可支援一或多種指令集(例如,x86指令集(具有某些延伸,較新的版本已增加);加州Sunnyvale之MIPS Technologies的MIPS指令集;加州Sunnyvale之ARM Holdings的ARM指令集(具有選用的附加延伸,諸如NEON)
須瞭解,核心可支援多執行緒(執行兩或多個平行組的操作或執行緒),且有多種的方法可做到此,包括分時多緒執行、同時多緒執行(其中,單實體核心為每一個執 行緒提供邏輯核心,該實體核心係同時多緒執行)、或此兩者的組合(例如,分時提取與解碼,並於之後同時多緒執行,諸如Intel®的混合緒執行技術)。
雖然是在亂序執行的環境中來描述暫存器更名,但須瞭解,在循序架構中也可使用暫存器更名。雖然所說明的處理器實施例也包括獨立的指令與資料快取單元434/474及共用的L2快取單元476,但替代的實施例可具有用於指令與資料兩者的單一個內部快取,例如,諸如1級(L1)內部快取,或多級的內部快取。在某些實施例中,系統可包括內部快取與外部快取的組合,外部快取位於核心及/或處理器的外部。或者,所有的快取都可位在核心及/或處理器的外部。
圖5係按照本發明之實施例的單核心處理器與多核心處理器500的方塊圖,其具有整合式記憶體控制器與繪圖。圖5中的實線方塊說明處理器500,其具有單核心502A、系統代理510、一組一或多個匯流排控制器單元516,而選用的附加虛線方塊說明替代的處理器500,其具有多核心502A-N、位於系統代理單元510內的一組一或多個整合式記憶體控制器單元514、及整合式繪圖邏輯508。
記憶體階層包括核心內的一或多級快取、一組一或多個共用快取單元506、外部記憶體(未顯示)耦接至該組整合式記憶體控制器單元514。該組共用快取單元506包括一或多個中級快取,諸如2級(L2)、3級(L3)、4級(L4)、 或其它級的快取、末級快取(LLC)、及/或它們的組合。在一實施例中雖然是以環式互連單元512來互連整合式繪圖邏輯508、該組共用快取單元506、與系統代理單元510,但替代的實施例可使用任何數量之習知技術來互連這些單元。
在某些實施例中,一或多個核心502A-N具有多緒執行的能力。系統代理單元510包括那些協調與操作核心502A-N的組件。系統代理單元510例如也包括電力控制單元(PCU)與顯示單元。PCU可以是或包括調節核心502A-N與整合式繪圖邏輯508之電力狀態所需的邏輯與組件。顯示單元用於驅動一或多個外部連接的顯示器。
從架構及/或指令集的角度,核心502A-N可以是均質或異質。例如,某些核心502A-N可以是循序,而其它是亂序。如另一例,兩或多個核心502A-N有能力執行相同的指令集,而其它的核心僅能執行該指令集的子集或不同的指令集。
處理器可以是通用處理器,諸如可從加州Santa Clara之英代爾公司獲得的CoreTM i3、i5、i7、2 Duo與Quad、XeonTM、ItaniumTM、XScaleTM、或StrongARMTM處理器。或者,來自其它公司的處理器,諸如ARM Holdings公司、MIPS等。處理器可以是特殊用途處理器,例如,諸如網路或通訊處理器、壓縮引擎、圖形處理器、協處理器、內嵌式處理器、或類似處理器。處理器可在一或多個晶片上實施。處理器500可以使用任何多種的處理技術在 部分基板及/或在一或多個基板上實施,例如,諸如BiCMOS、CMOS、或NMOS。
圖6-8係適合包括處理器500的例示性系統,而圖9係可包括一或多個核心502的例示性系統單晶片(SoC)。習知技藝的其它系統設計與組構也都適合,如膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換機、內嵌式處理器、數位信號處理器(DSP)、圖形裝置、遊戲機、機上盒、微控制器、細胞式電話、可攜式媒體播放器、手持式裝置、及各種其它的電子裝置。一般來說,能夠結合如本文所描述之處理器及/或其它執行邏輯之各種各樣的系統或電子裝置都一體適合。
現參考圖6,圖中顯示按照本發明一實施例之系統600的方塊圖。系統600可包括一或多個處理器610、615,其耦接至圖形記憶體控制器集線器(GMCH)620。選用性質的附加處理器615在圖6中以虛線表示。
每一個處理器610、615可以是處理器500的某些型式。不過,須注意,不同的是,處理器610、615內可含有整合式圖形邏輯與整合式記憶體控制單元。圖6說明GMCH 620可耦接至記憶體640,其例如是動態隨機存取記憶體(DRAM)。在至少一個實施例中,DRAM與非揮發性快取有關。
GMCH 620可以是晶片組或是晶片組的一部分。GMCH 620可以與處理器610、615通訊,並控制處理器 610、615與記憶體640之間的互動。GMCH 620也可做為處理器610、615與系統600中其它元件之間的加速匯流排介面。關於至少一實施例,GMCH 620經由多點匯流排(諸如前端匯流排(FSB)695)與處理器610、615通訊。
此外,GMCH 620耦接至顯示器645(諸如平面顯示器)。GMCH 620可包括整合式圖形加速器。GMCH 620進一步耦接至輸入/輸出(I/O)控制器集線器(ICH)650,其可用來將各種不同的周邊裝置耦接至系統600。圖6之實施例中所顯示的例子係外部圖形裝置660,其是分離的圖形裝置,連同其它周邊裝置670耦接至ICH 650。
另者,在系統600中也可存在附加或不同的處理器。例如,附加的處理器615可包括與處理器610相同的附加處理器、與處理器610異質或不對稱的附加處理器、加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其它的處理器。在特徵之指標的範圍方面,實體資源610、615之間有許多差異,包括架構、微架構、熱、電力消耗特性、或類似物。在處理器610、615之間,這些差異可有效地明白表示出它們的不對稱與異質。關於至少一實施例,不同的處理器610、615可存在於同一晶粒封裝中。
現參考圖7,圖中顯示按照本發明之實施例之第二系統700的方塊圖。如圖7所示,多處理器系統700係點對點互連系統,且包括經由點對點互連來耦接的第一處理器770與第二處理器780。每一個處理器770與780可以是 處理器500的某些型式,如處理器610、615其中之一或多個處理器。
雖然只顯示兩個處理器770與780,但須瞭解,本發明的範圍並無此限制。在其它實施例中,一或多個附加處理器可存在於特定的處理器中。
所顯示的處理器770與780分別包括整合式記憶體控制器單元772與782。處理器770也包括做為其一部分的匯流排控制器單元點對點(P-P)介面776與778;同樣地第二處理器780包括點對點介面786與788。處理器770與780可使用點對點介面電路778、788經由點對點(P-P)介面750來交換資訊。如圖7所示,IMC772與782將處理器耦接至各自的記憶體,即記憶體732與記憶體734,其可以是主記憶體之本地附接到各自處理器的一部分。
每一個處理器770與780可使用點對點介面電路776、794、786、798經由個別的點對點介面752、754與晶片組790交換資訊。晶片組790也可經由高性能圖形介面739與高性能圖形電路738交換資訊。
共用快取(未顯示)可包括在任一個處理器內或兩處理器的外部,依然是經由點對點互連與處理器連接,如果處理器被置於低電力模式中,使得任一或兩個處理器的本地快取資訊可儲存在共用快取中。
晶片組790可經由介面796耦接至第一匯流排716。在一實施例中,第一匯流排716可以是周邊組件互連(PCI)匯流排、或諸如PCI Express匯流排或其它第三代 I/O互連匯流排之匯流排,但本發明之範圍不受此限制。
如圖7所示,各種的I/O裝置714連同將第一匯流排716耦接至第二匯流排720的匯流排電橋718可耦接至第一匯流排716。在一實施例中,第二匯流排720可以是低接腳數(LPC)匯流排。在一實施例中,可耦接至第二匯流排720的各種裝置例如包括鍵盤及/或滑鼠722、通訊裝置727、及儲存單元728,諸如磁碟機或其它的大量儲存裝置,其可包括指令/碼與資料730。此外,音訊I/O裝置724也可耦接至第二匯流排720。須注意,也可以是其它架構。例如,系統可實施多點匯流排或其它此類架構來取代圖7的點對點架構。
現參考圖8,圖中顯示按照本發明之實施例之第三系統800的方塊圖。在圖8中,與圖7相同之元件也採用相同的參考數字,且為避免模糊了圖8的其它態樣,圖8中也省略了圖7的某些態樣。
圖8說明處理器870、880,其可分別包括整合式記憶體與I/O控制邏輯(“CL”)872與882。關於至少一實施例,CL872與882可包括整合式記憶體控制器單元,諸如以上與圖5及7有關的描述。此外,CL872與882也可包括I/O控制邏輯。圖8中所說明的不僅是記憶體832、834耦接至CL872與882,而且I/O裝置也耦接至控制邏輯872與882。傳統I/O裝置815耦接至晶片組890。
現參考圖9,圖中顯示按照本發明之實施例之SoC 900的方塊圖。與圖5中類似的元件具有類似的參考數 字。此外,虛線方塊係更先進之SoC上的選用特徵。在圖9中,互連單元902耦接至:包括一組一或多個核心502A-N與共用快取單元506的應用處理器910;系統代理單元510;匯流排控制器單元516;整合式記憶體控制器單元514;一組一或多個媒體處理器920,其包括整合式圖形邏輯508、用於提供靜止及/或視訊攝影機功能的影像處理器924、用於提供硬體音訊加速的音訊處理器926、及用於提供視訊編碼/解碼加速的視訊處理器928;靜態隨機存取記憶體(SRAM)單元930;直接記憶體存取(DMA)單元932;以及顯示單元940,用於耦接至一或多個外部顯示器。
圖10說明包含中央處理單元(CPU)與圖形處理單元(GPU)的處理器,其可實施按照一實施例的至少一個指令。在一實施例中,實施按照至少一實施例之操作的指令可由CPU來實施。在另一實施例中,指令可由GPU來實施。在又另一實施例中,指令可透過經由結合GPU與CPU所實施的操作來實施。例如,在一實施例中,按照一實施例的指令可在GPU上執行接收與解碼。不過,經解碼之指令內的一或多項操作可由CPU來實施,並將結果送回GPU做指令的最終止用。反之,在某些實施例中,CPU可做為主處理器,而GPU做為協處理器。
在某些實施例中,得益於高度平行、產出之處理器的指令,可由GPU來實施,而得益於處理器之性能的指令,可由得益於深度管線化架構的CPU來實施。例如, 繪圖、科學應用、財經應用、及其它平行工作負荷可得益於GPU之性能,且相應地被其執行,然而,較序列性的應用,諸如作業系統核心或應用程式碼,則較適合CPU。
在圖10中,處理器1000包括CPU 1005、GPU 1010、影像處理器1015、視訊處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示裝置1040,高解析度多媒體介面(HDMI)控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙資料率(DDR)控制器1060、安全引擎1065、及整合晶片間聲音/內部積體電路(Integrated Interchip Sound/Inter-Integrated Circuit;I2S/I2C)介面1070。圖10的處理器內可包括其它的邏輯與電路,包括更多的CPU或GPU及其它的周邊介面控制器。
至少一實施例的一或多個態樣可藉由儲存在機器可讀取媒體上的代表資料來實施,其代表處理器內的各種不同邏輯,當其被機器讀取時,致使機器製造用以實施本文所描述之技術的邏輯。此種表示法為習知的“IP核心”,可儲存在實體的機器可讀取媒體(“磁帶”)上,並供應給各不同的客戶或製造工廠,用以載入到實際製造邏輯或處理器的製造機具內。例如,諸如ARM Holdings公司所開發的CortexTM系列處理器、中國科學院之計算技術研究所(ICT)所開發的龍芯IP核心,這些IP核心可授權或販售給各不同的客戶或被授權者,諸如德州儀器、高通、蘋果、或三星,並在這些客戶或被授權者所生產的處理器中實施。
圖11顯示的方塊圖說明按照一實施例之IP核心的開發。儲存器1130包括模擬軟體1120及/或硬體或軟體模型1110。在一實施例中,代表IP核心設計的資料可經由記憶體1140(例如,硬式磁碟機)、有線連接(例如,網際網路)1150、無線連接1160提供給儲存器1130。由模擬工具與模型所產生的IP核心資訊可接著被傳送到製造工廠,其可被第三方製造以實施按照至少一實施例的至少一個指令。
在某些實施例中,對應於第一類型或架構(例如,x86)的一或多個指令,可在不同類型或架構(例如,ARM)的處理器上被轉譯或仿真。因此,按照一實施例,指令可在任何處理器或處理器類型上實施,包括ARM、x86、MIPS、GPU、或其它處理器類型或架構。
圖12說明按照一實施例,第一類型的指令如何被不同類型的處理器仿真。在圖12中,程式1205包含的某些指令可實施與按照一實施例之指令相同或實質相同的功能。不過,程式1205之指令可以與處理器1215之類型及/或格式不相同或不相容,意指程式1205中之指令的類型無法被處理器1215原生地執行。不過,藉助於仿真邏輯1210,程式1205之指令被轉譯成能被處理器1215原生執行的指令。在一實施例中,仿真邏輯係以硬體來具體化。在另一實施例中,使仿真邏輯具體化於包含軟體的有形機器可讀取媒體中,該軟體能將程式1205中之指令的類型轉譯成處理器1215可原生執行的類型。在其它實施例 中,仿真邏輯係具有固定功能或可程式之硬體與儲存在實體機器可讀取媒體中之程式的組合。在一實施例中,處理器包含仿真邏輯,然而,在其它實施例中,仿真邏輯存在於處理器的外部,且是由第三方提供。在一實施例中,處理器有能力藉由執行包含在處理器中或與處理器相關聯的微碼或韌體而載入具體化於包含軟體之有形機器可讀取媒體中的仿真邏輯。
圖13的方塊圖係按照本發明之實施例,使用軟體指令轉換器將源指令集中的二進制指令轉換到目標指令集中之二進制指令之對照。在說明的實施例中,指令轉換器係軟體指令轉換器,然而,可替代地在軟體、韌體、硬體、或以上這些的各種組合中實施指令轉換器。圖13顯示,可使用x86編譯器1304編譯高階語言1302的程式,以產生可被具有至少一個x86指令集核心1316之處理器原生執行的x86二進制碼1306。具有至少一個x86指令集核心1316的處理器代表可實質地實施與具有至少一個x86指令集核心之英代爾處理器相同功能的任何處理器,其為了獲致與具有至少一個x86指令集核心之英代爾處理器實質相同的結果,藉由相容地執行或以其它方式處理(1)英代爾x86指令集核心之指令集的實質部分,或(2)以在具有至少一個x86指令集核心之英代爾處理器上運行為目標之應用程式或其它軟體的目的碼版本。x86編譯器1304代表一編譯器,無論有或無額外的鏈結處理,其可操作以產生可在具有至少一個x86指令集核心1316之英代爾處 理器上執行的x86二進制碼1306(例如目標碼)。同樣地,圖13顯示高階語言1302的程式可使用替代的指令集編譯器1308來編譯,以產生可被不具有至少一個x86指令集核心之處理器1314(例如,具有執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或ARM Holdings of Sunnyvale,CA之ARM指令集)原生執行之替代的指令集二進制碼1310。指令轉換器1312被用來將x86二進制碼1306轉換成可被無x86指令集核心之處理器1314原生執行的碼。此經轉換的碼不太可能與替代的指令集二進制碼1310相同,原因是此指令轉換器的能力很難做到;不過,經轉換的碼將可完成一般的操作,並從替代的指令集組成指令。因此,指令轉換器1312代表軟體、硬體、韌體、或它們的組合,透過仿真、模擬、或任何其它處理,允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進制碼1306。
圖14說明處理1401之實施例的流程圖,用於有效地實施先進加密標準(Advanced Encryption Standard;AES)加密/解密標準。本文所揭示的處理1401及其它處理係由處理方塊來實施,其包含可由通用機器或由特殊用途機器或由此兩者之組合執行的專用硬體或軟體或韌體操作碼。在一實施例中,對於AES逆-行-混合轉換(inverse-columns-mix transformation),合成體GF((24)2)可使用不可約多項式x4+x2+x+1與x2+2x+0xE。
在處理方塊1411,包括16位元組值的128位元輸入 區塊與回合金鑰邏輯地互斥或(exclusive-OR(XOR))。在處理方塊1412中,其決定該處理是否為加密,在加密的情況中,處理器從點1418繼續,或,如果處理是解密,則處理回復到處理方塊1413。
在處理方塊1413,使用體轉換電路分別將16位元組值的每一個值從在GF(256)中之對應的多項式表示法轉換到在合成體GF((24)2)中之另一個對應的多項式表示法。關於處理方塊1413的一實施例,藉由以8位元乘8位元的轉換矩陣乘每一個位元組值,可將在GF(256)中的多項式表示法[a7,a6,a5,a4,a3,a2,a1,a0]轉換到在合成體GF((24)2)中之對應的多項式表示法[b7,b6,b5,b4,b3,b2,b1,b0],其可藉由如下的一連串XOR來實施:b0=a0 ⊕ a2 ⊕ a3 ⊕ a4 ⊕ a5 ⊕ a6 ⊕ a7, b1=a7, b2=a4 ⊕ a5 ⊕ a7, b3=a1 ⊕ a3 ⊕ a5 ⊕ a6, b4=a4 ⊕ a5 ⊕ a6, b5=a1 ⊕ a4 ⊕ a5 ⊕ a6, b6=a5 ⊕ a7, b7=a2 ⊕ a3 ⊕ a4 ⊕ a6 ⊕ a7.
在此點,16位元組可看成具有4列及具有4行之位元組的4乘4區塊。在處理方塊1414中,其決定目前的回合是否為最後/特殊的回合,在此情況中,沒有逆行混合要被執行,或,否則,在處理方塊1415使用逆-行-混合電路來計算16位元組值在GF((24)2)中的逆-行-混合變換,以得到GF((24)2)中之對應的變換後多項式表示法。關 於一實施例,16位元組輸入值在GF((24)2)中的逆-行-混合變換可按如下實施:
可理解,此矩陣乘法可對GF((24)2)中的[a3,a2,a1,a0,b3,b2,b1,b0]實施,在第一階段中,藉由計算為每一結果計算式中需要實施矩陣常數乘法的唯一項,並接著加總該等唯一項以產生每一個結果。例如,來自半位元組[a3,a2,a1,a0]需要計算以上矩陣乘法的唯一項有:(a3 ⊕ a0)⊕ a1,(a2 ⊕ a1)⊕ a3,(a2 ⊕ a0)⊕ a1,(a3 ⊕ a2)⊕ a0,a3 ⊕ a1,(a3 ⊕ a2)+(a1 ⊕ a0).
來自半位元組[b3,b2,b1,b0]需要計算以上矩陣乘法的唯一項有:(b3 ⊕ b2)⊕ b1,(b2 ⊕ b1)⊕ b3,b3 ⊕ b0,b3 ⊕ b1,b1 ⊕ b0,(b3 ⊕ b0)+(b1 ⊕ b2).
無論處理方塊1414中的決定為何,在處理方塊1416中,在對應於逆列混合變換的16位元組值上實施列的硬線置換(hard-wired permutation)。在處理方塊1417中,使用第二體轉換電路來轉換GF((24)2)中之每一個對應之經變換的多項式表示法,並也分別施加逆仿射變換,以產生除了GF((24)2)以外之有限體中的第三對應的多項式表示法。在處理1401的一實施例中,除了GF((24)2)以外之新的有限體係合成體GF((22)4)。以下將關於圖2更詳細描述此實 施例。在處理1410的替代實施例中,新的有限體係原始體GF(256)。以下將關於圖3a與3b更詳細描述這些實施例。
從點1418繼續,在處理方塊1420中,使用乘法逆元電路分別為16位元組值之每一個第三對應的多項式表示法計算在除了GF((24)2)以外之新有限體中之對應的乘法逆元多項式表示法。在處理方塊1421中,其決定該處理是否為解密,若為解密,則回合處理結束,且在處理方塊1426輸出,或如果處理是加密,在此情況則處理回復到處理方塊1422。
在處理方塊1422,使用一電路分別對16位元組值之每一個對應的乘法逆元多項式表示法施加仿射變換,以產生除了GF((24)2)以外之新有限體中經變換之對應的多項式表示法。如果該新的有限體不是原始體GF(256),則方塊1422中的電路要再結合另一體轉換,用以將每一個對應之經變換的多項式表示法變換回原始體GF(256)。因此,可假設處理1401之剩餘的多項式表示法是在原始體GF(256)中。
在處理方塊1423中,在對應於向前列混合變換的16位元組值上實施列的硬線置換。在處理方塊1424,其決定目前的回合是否為最後/特殊的回合,若是,則不實施行混合,否則,在處理方塊1425,使用向前-行-混合電路來計算16位元組值之GF(256)中的向前-行-混合變換,以得到GF(256)中之對應的經變換多項式表示法。須理解, 由於GF(256)中之向前-行-混合變換中的係數相對較小,因此,在處理方塊1425中不使用替代的體表示法。最後,處理1401的回合處理完成,且在處理方塊1426輸出16位元組的結果。
圖15說明處理1501之實施例的流程圖,用以有效地實施AES S-box的乘法逆元。在以下說明的一實施例中,使用合成體GF((22)4)與不可約多項式x4+x3+x2+2來做S-box變換。
從處理1401的點1418繼續,其在處理方塊1518處決定此項處理是否為加密,若是,則繼續在處理方塊1519中處理。否則,如果該處理是解密,則在處理方塊1417中已實施過體轉換,且16位元組值之第三對應的多項式表示法是在合成體GF((22)4)中。關於處理方塊1417的一實施例,可施加逆仿射變換,並藉由以8位元乘8位元的轉換矩陣乘每一個位元組值及某些常數的XOR(即,逐位元反轉),將合成體GF((24)2)中的多項式表示法[a7,a6,a5,a4,a3,a2,a1,a0]轉換成合成體GF((22)4)中對應的多項式表示法[b7,b6,b5,b4,b3,b2,b1,b0],其可藉由如下一連串的XOR來實施: ﹁b0=a3 ⊕ a5 ⊕ a7,b1=a1 ⊕ a2 ⊕ a3 ⊕ a4,b2=a0 ⊕ a2 ⊕ a4 ⊕ a5 ⊕ a6,b3=a0 ⊕ a1 ⊕ a2 ⊕ a4 ⊕ a5 ⊕ a6,﹁b4=a1 ⊕ a6,b5=a0 ⊕ a1 ⊕ a2 ⊕ a3 ⊕ a5 ⊕ a6 ⊕ a7,﹁b6=a0 ⊕ a5 ⊕ a6,b7=a0 ⊕ a1 ⊕ a2 ⊕ a3 ⊕ a4 ⊕ a6.
在處理方塊1519中,加密處理需要體轉換,且因此使用體轉換電路來分別轉換16位元組值的每一個值,從GF(256)中對應的多項式表示法轉換到合成體GF((22)4)中對應的多項式表示法。關於處理方塊1519的一實施例,藉由以8位元乘8位元的轉換矩陣乘每一個位元組值,GF(256)中的多項式表示法[a7,a6,a5,a4,a3,a2,a1,a0]可被轉換成合成體GF((22)4))中之對應的多項式表示法[b7,b6,b5,b4,b3,b2,b1,b0],其可藉由如下一連串的XOR來實施:b0=a0 ⊕ a1 ⊕ a6,b1=a1 ⊕ a4 ⊕ a6,b2=a5 ⊕ a6 ⊕ a7,b3=a3 ⊕ a4,b4=a1 ⊕ a2 ⊕ a3 ⊕ a4 ⊕ a5,b5=a3 ⊕ a4 ⊕ a5 ⊕ a7,b6=a2 ⊕ a5 ⊕ a6,b7=a3 ⊕ a7.
在處理方塊1520中,使用反轉電路來為16位元組值之GF((22)4)中的每一個多項式表示法分別計算GF((22)4) 中的乘法逆元多項式表示法。關於一實施例,輸入對應於合成體GF((22)4)中的多項式表示法[a,b,c,d],而有關的乘法逆元[A,B,C,D]如下:(a ⊕ c ⊕ d).A ⊕(b ⊕ c).B ⊕(a ⊕ b).C ⊕ a.D=0
(2.a ⊕ b ⊕ c).A ⊕(a ⊕ b ⊕ d).B ⊕(a ⊕ c).C ⊕ b.D=0
(2.a ⊕ 2.b).A ⊕(2.a).B ⊕ d.C ⊕ c.D=0
(2.b ⊕ 2.c).A ⊕(2.a ⊕ 2.b).B ⊕(2.a).C ⊕ d.D=1
其中,⊕與‘.’分別指示GF(22)加法與乘法。
解為:A=Δ-1.Δa;B=Δ-1.Δb;C=Δ-1.Δc;D=Δ-1.Δd,其中,行列式Δ係得自:
並以{0,0,0,1}分別置換Δ的第一、第二、第三、及第四行,以從Δ得到行列式Δa、Δb、Δc、及Δd。再次,須理解,此等計算可在GF(22)中執行,藉由展開行列式計算,在硬體中計算諸如a2,b2,a3,3.b2等唯一項,且需要各項的唯一和,並接著加總特定項組合,以產生必須的結果。
在處理方塊1521,其決定該處理是否為解密,若是,在處理方塊1522中繼續處理。在處理方塊1522中使用另一個體轉換電路將16位元組值的每一個值分別從合成體GF((22)4)中之對應的多項式表示法轉換成GF(256)中 之對應的多項式表示法。關於處理方塊1522的一實施例,藉由以8位元乘8位元的轉換矩陣乘每一個位元組值,將合成體GF((22)4)中的多項式表示法[a7,a6,a5,a4,a3,a2,a1,a0]轉換成GF(256)中之對應的多項式表示法[b7,b6,b5,b4,b3,b2,b1,b0],其可藉由如下一連串的XOR來實施:b0=a0 ⊕ a3 ⊕ a4 ⊕ a6,b1=a2 ⊕ a4 ⊕ a5 ⊕ a6,b2=a1 ⊕ a2 ⊕ a4 ⊕ a7,b3=a1 ⊕ a4 ⊕ a6,b4=a1 ⊕ a3 ⊕ a4 ⊕ a6,b5=a1 ⊕ a3 ⊕ a4 ⊕ a5 ⊕ a6 ⊕ a7,b6=a2 ⊕ a3 ⊕ a5,b7=a1 ⊕ a4 ⊕ a6 ⊕ a7.
否則,如果該處理是加密,則處理前進到處理1401的處理方塊1412。如關於處理1401之處理方塊1422的解釋,在處理方塊1422用來對16位元組施加仿射變換的電路可以與本實施例的體轉換電路結合,用以將16位元組值從GF((22)4)中的多項式表示法轉換到GF(256)中之對應的多項式表示法。關於處理方塊1422的一實施例,可施加仿射變換,並藉由以8位元乘8位元的轉換矩陣乘每一個位元組值並以某些常數XOR(即,逐位元反轉),將合成體GF((22)4)中的多項式表示法[a7,a6,a5,a4,a3,a2,a1,a0]轉換成GF(256)中之對應的多項式表示法[b7,b6,b5,b4,b3,b2,b1,b0],其可藉由如下的一連串XOR來實施: ﹁b0=a0 ⊕ a1 ⊕ a2,﹁b1=a0 ⊕ a3 ⊕ a5,b2=a0 ⊕ a2 ⊕ a6,b3=a0 ⊕ a1 ⊕ a3 ⊕ a4 ⊕ a5,b4=a0 ⊕ a1 ⊕ a4 ⊕ a5 ⊕ a7,﹁b5=a4,﹁b6=a3 ⊕ a6,b7=a2 ⊕ a3.
圖16A的圖說明用於執行仿射映圖指令之設備1601的實施例,用於仿射變換以提供通用GF(256)SIMD密碼算術功能。在某實施例中,設備1601可被重複16次,每一個設備1601包含硬體處理方塊,用以有效率地對包括16位元組值的128位元區塊實施仿射變換,每一個位元組都具有GF(256)中的多項式表示法。在仿射映圖指令(或微指令)的其它實施例中,元素大小也被指定,及/或可選擇設備1601重複的數量,以便對128位元區塊、或256位元區塊、或512位元區塊等實施仿射變換。設備1601的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一部分,用於執行仿射映圖指令以提供通用GF(256)SIMD密碼算術功能。設備1601的實施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,用以為GF(256)中的仿射變換解碼指令。在某些實施例中,仿射映圖指令可藉由微指令(或微操作、micro-ops或uops)來實施,例如,有限體矩陣-向量乘法微指令,接著是有限體向量加法(XOR)微指 令。
例如,設備1601的實施例可與SIMD向量暫存器(例如,實體暫存器檔案單元458)耦接,其包含可變的複數個m可變大小的資料檔案,用以儲存可變的複數個m可變大小的資料元素之值。用以提供通用GF(256)SIMD仿射變換功能之仿射映圖指令的某些實施例指定元素1612的源資料運算元組、變換矩陣1610運算元、及平移向量1614運算元。一或多個執行單元(例如,執行單元462)回應經解碼的仿射映圖指令,藉由透過處理方塊1602之GF(256)位元組乘法器陣列之8個逐位元的AND1627-1620對源資料運算元組的每一個元素1612(例如,在16位元組元素的128位元區塊中)施加變換矩陣1610運算元,以及透過處理方塊1603之GF(256)位元加法器陣列之8個9輸入的XOR1637-1630對源資料運算元組之每一個經變換的元素施加平移向量1614運算元來實施SIMD仿射變換。仿射映圖指令之源資料運算元組之每一個元素1612之經仿射變換的結果元素1618被存入SIMD目的暫存器(例如,實體暫存器檔案單元458)中。
圖16B的圖說明用於執行仿射逆指令之設備1605的一實施例,用於仿射變換接著計算該結果的乘法逆元,以提供通用GF(256)SIMD密碼算術功能。設備1605的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一部分,用以執行仿射逆指令以提供通用GF(256)SIMD密碼算術功能。設備1605的實 施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,用以解碼用於GF(256)中之仿射變換與逆的指令。在某些實施例中,仿射逆指令可藉由微指令(或微操作、micro-ops或uops)來實施,例如,仿射映圖1601微指令,接著是有限體乘法逆元微指令1604。在替代的實施例中,仿射逆指令可藉由不同的微指令來實施,例如,有限體矩陣-向量乘法微指令,接著是位元組廣播微指令、有限體向量加法(XOR)微指令、及有限體乘法逆元微指令。
設備1605的實施例可與SIMD向量暫存器(例如,實體暫存器檔案單元458)耦接,其包含可變的複數個m可變大小的資料欄位,用以儲存可變的複數個m可變大小資料元素的值。用以提供通用GF(256)SIMD仿射變換功能並接著計算該結果之乘法逆元之仿射逆指令的某些實施例指定元素1612的源資料運算元組、變換矩陣1610運算元、平移向量1614運算元、及選用的最高階係數為1的不可約多項式。一或多個執行單元(例如,執行單元462)回應經解碼的仿射逆指令,藉由透過處理方塊1602之GF(256)位元組乘法器陣列之8個逐位元的AND1627-1620對源資料運算元組的每一個元素1612(例如,在16位元組元素的128位元區塊中)施加變換矩陣1610運算元,及透過處理方塊1603之GF(256)位元加法器陣列之8個9輸入的XOR1637-1630對源資料運算元組之每一個經變換的元素施加平移向量1614運算元來實施SIMD仿射變換。 須理解,計算中的此點對應處理1403的點1418。從經仿射變換的結果元素1618透過乘法逆元單元1640為源資料運算元組的每一個元素1612,計算有限體乘法逆元元素1648與不可約多項式的模運算。仿射逆指令之每一個經仿射變換之結果元素1618的乘法逆元結果元素1648被存入SIMD目的暫存器(例如,實體暫存器檔案單元458)中。
須理解,仿射逆指令的某些實施例對於實施諸如處理1403的處理很有用處。其它實施例對於實施諸如處理1402的處理很有用處。
圖16C的圖說明用於執行逆仿射指令之設備1606的替代實施例,其用於計算乘法逆元接著仿射變換該結果以提供通用GF(256)SIMD密碼算術功能。設備1606的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一部分,用來執行逆仿射指令以提供通用GF(256)SIMD密碼算術功能。設備1606的實施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,用以解碼GF(256)中之用於逆與仿射變換的指令。在某些實施例中,逆仿射指令可藉由微指令(或微操作、micro-ops或uops)來實施,例如,有限體乘法逆元微指令1604,接著是仿射映圖1601微指令。在替代的實施例中,逆仿射指令可藉由不同的微指令來實施,例如,有限體乘法逆元微指令,接著是有限體矩陣-向量乘法微指令以及有限體向量純量平移(例如,廣播與XOR)微指令。
設備1606的實施例可與SIMD向量暫存器(例如,實體暫存器檔案單元458)耦接,其包含可變的複數個m可變大小的資料欄位,用以儲存可變的複數個m可變大小資料元素的值。用以提供通用GF(256)SIMD之乘法逆元的計算並接著仿射變換功能之逆仿射指令的某些實施例指定元素1612的源資料運算元組、變換矩陣1610運算元、平移向量1614運算元、及選用的最高階係數為1的不可約多項式。在處理方塊1604中,一或多個執行單元(例如,執行單元462)回應經解碼的逆仿射指令,透過乘法逆元單元1640為源資料運算元組的每一個元素1612,計算SIMD二元有限體乘法逆元元素1616與不可約多項式的模運算。接著,該一或多個執行單元藉由透過處理方塊1602之GF(256)位元組乘法器陣列之8個逐位元的AND1627-1620對源資料運算元組的每一個元素1612(例如,在16位元組元素的128位元區塊中)的乘法逆元元素1616施加變換矩陣1610運算元,及透過處理方塊1603之GF(256)位元加法器陣列之8個9輸入的XOR1637-1630對源資料運算元組之每一個經變換的逆元元素施加平移向量1614運算元來實施SIMD仿射變換。逆仿射指令之源資料運算元組之元素1612的每一個乘法逆元元素1616之經仿射變換的結果元素1638被存入SIMD目的暫存器(例如,實體暫存器檔案單元458)中。
圖17A說明用於執行有限體乘法逆元指令之設備1701的實施例,以提供通用GF(256)SIMD密碼算術功 能。在某些實施例中,設備1701可重複16次,每一個設備1701包含硬體處理方塊,用於有效率地對包括有16位元組值的128位元區塊實施AES S-box的乘法逆元,每一個位元組都具有GF(256)中的多項式表示法。在有限體乘法逆元指令(或微指令)的其它實施例中,元素大小也被指定,及/或可選擇設備1701重複的數量,以便對128位元區塊、或256位元區塊、或512位元區塊等實施有限體乘法逆元。設備1701的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一部分,用於有限體乘法逆元指令之執行,以提供通用GF(256)SIMD密碼算術功能。設備1701的實施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,用以解碼GF(256)中用於乘法逆元的指令。在設備1701中,吾人考慮每一個位元組x從處理1401的點1418被輸入,因此,設備1701從取得包含x的源資料運算元組開始。處理方塊1711-1717包含多項式冪次產生電路的位元組片,用以分別為16位元組值的每一個值計算具有GF(256)中對應於它們各自位元組值x之多項式表示法之冪次x2,x4,x8,x16,x32,x64及x128之多項式表示法的位元組值。處理方塊1718-1720與1728-1730包含乘法器電路的位元組片,用以在GF(256)中分別為每一個16位元組值將對應於多項式表示法之冪次的位元組值相乘在一起,以產生每一個都具有在GF(256)中對應於它們各自之位元組值x之乘法逆元x-1=x254之多項式表示法的16位元組 值。接著,儲存這些16個乘法逆元位元組值(例如,存入實體暫存器檔案單元458),或輸出到處理1401的處理方塊1421,其中,視處理1401是實施加密或解密,在處理方塊1422中可選用仿射變換電路(例如,1601)以施加仿射變換。
圖17B說明用於執行有限體乘法逆元指令之設備1702的替代實施例,用以提供通用GF(256)SIMD密碼算術功能。在某些實施例中,設備1702可重複16次,每一個設備1702包含硬體處理方塊,用於有效率地對包括有16位元組值的128位元區塊實施AES S-box的乘法逆元,每一個位元組都具有GF(256)中的多項式表示法。在有限體乘法逆元指令(或微指令)的其它實施例中,元素大小也被指定,及/或可選擇設備1702重複的數量,以便對128位元區塊、或256位元區塊、或512位元區塊等實施有限體乘法逆元。設備1702的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一部分,用於有限體乘法逆元指令之執行,以提供通用GF(256)SIMD密碼算術功能。設備1702的實施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,用以解碼GF(256)中之用於乘法逆元的指令。在設備1702中,吾人再次考慮每一個位元組x從處理1401的點1418被輸入,因此,設備1702從取得包含x的源資料運算元組開始。須理解,處理1401的點1418可代表仿射變換電路(例如,1601)或處理方塊1417中之仿 射映圖指令的輸出。處理方塊1721-1727包含多項式冪次產生電路的位元組片,用以分別為16位元組值的每一個值計算具有GF(256)中對應於它們各自位元組值x之多項式表示法之冪次x6,x24,x96,及x128之多項式表示法的位元組值。處理方塊1728-1730包含乘法器電路的位元組片,用以在GF(256)中分別為16位元組值的每一個值將對應於多項式表示法之冪次的位元組值相乘在一起,以產生每一個都具有在GF(256)中對應於它們各自之位元組值x之乘法逆元x-1=x254之多項式表示法的16位元組值。儲存這16個乘法逆元位元組值(例如,存入實體暫存器檔案單元458中),或輸出到處理1401的處理方塊1421,其中,視處理1401是實施加密或解密,在處理方塊122中可選用仿射變換電路(例如,1601)以施加仿射變換。
圖17C說明用於執行有限體乘法逆元指令之設備1703的另一替代實施例,以提供通用GF(256)SIMD密碼算術功能。在某些實施例中,設備1703可重複16次,每一個設備1703包含硬體處理方塊,用於有效率地對包括有16位元組值的128位元區塊實施有限體乘法逆元,每一個位元組都具有GF(256)中的多項式表示法。在有限體乘法逆元指令(或微指令)的其它實施例中,元素大小也被指定,及/或可選擇設備1703重複的數量,以便對128位元區塊、或256位元區塊、或512位元區塊等實施有限體乘法逆元。設備1703的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一 部分,用於有限體乘法逆元指令之執行,以提供通用GF(256)SIMD密碼算術功能。設備1703的實施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,用以解碼GF(256)中用於乘法逆元的指令。
設備1703的實施例可與SIMD向量暫存器(例如,實體暫存器檔案單元458)耦接,其包含可變的複數個m可變大小的資料欄位,用以儲存可變的複數個m可變大小資料元素的值。用以提供通用GF(256)SIMD乘法逆元功能之有限體乘法逆元指令的某些實施例指定元素1710的源資料運算元組及最高階係數為1的不可約多項式1740。一或多個執行單元(例如,執行單元462)回應經解碼的有限體乘法逆元指令,為源資料運算元組的每一個元素1710,計算SIMD二元有限體乘法逆元與不可約多項式的模運算。設備1703的某些實施例實施合成體GF((24)2)中的有限體乘法逆元操作。源資料運算元組的每一個元素1710被映射到處理方塊1734中的合成體GF((24)2),其輸出4位元的體元素zH1735與zL1736。關於一實施例,逆體元素zL -11746按如下計算:(1)體元素zH1735與zL1736在合成體中相加(逐位元XOR 1737);(2)在處理方塊1739中,體元素zH1735與逐位元XOR 1737的輸出相乘並對不可約多項式p求模運算。在一實施例中的多項式為p=z4+z3+1,但在替代的實施例中,也可使用其它的四次不可約多項式。繼續逆體元素zL -11746的計算:(3)在處理方塊1738中,將體元素zH1735平方並乘十六進制值8,並對p求模運算,其 結果與處理方塊1739的輸出在合成體中相加(逐位元XOR 1741);(4)在處理方塊1742中計算逐位元XOR 1741之輸出的逆元,以及(5)在處理方塊1744中,乘體元素zL1736並對p求模運算,以產生逆體元素zL -11746。關於一實施例,逆體元素zH -11745按如下計算:步驟(1)至(4)如前所述;及(5)在處理方塊1743中,處理方塊1742的輸出乘體元素zH1735,並對p求模運算,以產生逆體元素zH -11745。接著,在處理方塊1747中,每一對4位元的體元素zH -11745與zL -11746被從合成體GF((24)2)逆映射,以產生GF(256)中的乘法逆元結果元素1750。最後,有限體乘法逆元指令之源資料運算元組之每一個元素1710的乘法逆元結果元素1750被存入SIMD目的暫存器(例如,實體暫存器檔案單元458)中。
圖18A的圖說明用於執行特定模數縮減指令之設備1801的一實施例,用以提供通用GF(256)SIMD密碼算術功能。在目前說明的例中,特定的模數多項式1811B係GF(256)中的p=x8+x4+x3+x+1。在某些實施例中,設備1801可重複16次,每一個設備1801包含硬體處理方塊,用於對包括有16雙位元組值的兩個128位元區塊(或對一個256位元區塊)有效率地實施特定的模數縮減,以產生包括16位元組值的128位元區塊,所得到的每一個16位元組值都具有GF(256)中的多項式表示法。設備1801的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一部分,用於執行 特定的模數縮減指令,以提供通用GF(256)SIMD密碼算術功能。設備1801的實施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,用以解碼GF(256)中用於特定模數縮減的指令。
設備1801的實施例可與SIMD向量暫存器(例如,實體暫存器檔案單元458)耦接,其包含可變的複數個m可變大小的資料欄位,用以儲存可變的複數個m可變大小資料元素的值。用以提供通用GF(256)SIMD模數縮減功能之特定模數縮減指令的某些實施例指定元素1810的源資料運算元組及最高階係數為1的不可約多項式1811B。一或多個執行單元(例如,執行單元462)回應經解碼的模數縮減指令,為源資料運算元組的每一個元素1810,計算SIMD二元有限體對不可約多項式的縮減求模運算。具有qH1828與qL1820雙位元組值之源資料運算元組的元素1810輸入到處理方塊1821內。在處理方塊1821中,設備1801的某些實施例在處理方塊1825中實施12位元操作,其等效於:T←qL ⊕(qH<<4)⊕(qH<<3)⊕(qH<<1)⊕ qH.
處理方塊1825所得到的元素T具有部分縮減的12位元值TH1838與TL1830被輸入到處理方塊1831內。設備1801的某些實施例在處理方塊1831中的處理方塊1835中實施8位元操作,其也等效於:q mod p←TL ⊕(TH<<4)⊕(TH<<3)⊕(TH<<1)⊕ TH.
須理解,在XOR運算中,可消除零(0)輸入,藉以進一步降低設備1801的邏輯複雜度。特定模數縮減指令之源資料運算元組之每一個元素1810的特定模數縮減結果元素1850被存入SIMD目的暫存器(例如,實體暫存器檔案單元458)中。
圖18B的圖說明用於執行特定模數縮減指令之設備1802的替代實施例,以提供通用GF(256)SIMD密碼算術功能。在目前說明的例中,特定的模數多項式1811B也為GF(256)中的p=x8+x4+x3+x+1。須理解,類似的技術也可應用來對其它的模數多項式實施不同的特定模數縮減指令(或微指令),例如GF(256)中的f5=x8+x7+x6+x5+x4+x2+1,如中國國家標準之無線LANWAPI(Wired Authentication and Privacy Infrastructure)區塊加密SMS4中所使用的模數多項式。在某些實施例中,設備1802可重複16次,每一個設備1802包含硬體處理方塊,用於對包括有16雙位元組值的兩個128位元區塊(或對一個256位元區塊)有效率地實施特定的模數縮減,以產生包括有16位元組值的128位元區塊,所得到的每一個16位元組值都具有GF(256)中的多項式表示法。設備1802的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一部分,用於執行特定的模數縮減指令,以提供通用GF(256)SIMD密碼算術功能。設備1802的實施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,用以解碼GF(256)中用於特定模數縮減的指 令。
設備1802的實施例可與SIMD向量暫存器(例如,實體暫存器檔案單元458)耦接,其包含可變的複數個m可變大小的資料欄位,用以儲存可變的複數個m可變大小資料元素的值。用以提供通用GF(256)SIMD模數縮減功能之特定模數縮減指令的某些實施例指定源資料運算元組的元素1810及最高階係數為1的不可約多項式1811B。一或多個執行單元(例如,執行單元462)回應經解碼的模數縮減指令,為源資料運算元組的每一個元素1810,計算SIMD二元有限體對不可約多項式的縮減求模運算。具有q[15:8]1828與q[7:0]1820雙位元組值之源資料運算元組的元素1810輸入到處理方塊1861內。在處理方塊1861中,設備1802的某些實施例在XOR邏輯閘1867-1860中實施邏輯操作,其等效於:q0 mod p=q0 ⊕ q8 ⊕ q12 ⊕ q13,q1 mod p=q1 ⊕ q8 ⊕ q9 ⊕ q12 ⊕ q14,q2 mod p=q2 ⊕ q9 ⊕ q10 ⊕ q13,q3 mod p=q3 ⊕ q8 ⊕ q10 ⊕ q11 ⊕ q12 ⊕ q13 ⊕ q14,q4 mod p=q4 ⊕ q8 ⊕ q9 ⊕ q12 ⊕ q14,q5 mod p=q5 ⊕ q9 ⊕ q10 ⊕ q12,q6 mod p=q6 ⊕ q10 ⊕ q11 ⊕ q13,q7 mod p=q7 ⊕ q11 ⊕ q12 ⊕ q14.
特定模數縮減指令之源資料運算元組之每一個元素1810的特定模數縮減結果元素(q mod p)1850被存入SIMD目的暫存器(例如,實體暫存器檔案單元458)中。
圖18C的圖說明用於執行特定之AES伽羅瓦計數器 模式(AES Galois CounterMode;GCM)模數縮減指令之設備1803的另一替代實施例,以提供通用GF(2128)SIMD密碼算術功能。在目前說明的例中,特定的模數多項式1887係GF(2128)中的p=x128+x7+x2+x+1。設備1803的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一部分,用於執行特定的模數縮減指令,以提供通用GF(2128)SIMD密碼算術功能。設備1803的實施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,用以解碼GF(2128)中用於特定模數縮減的指令。
設備1803的實施例可與SIMD向量暫存器(例如,實體暫存器檔案單元458)耦接,其包含可變的複數個m可變大小的資料欄位,用以儲存可變的複數個m可變大小資料元素的值。用以提供GF(2128)中之AESGCM模數縮減功能之特定指令的某些實施例指定元素1813的源資料運算元組及最高階係數為1的不可約多項式1887。一或多個執行單元(例如,執行單元462)回應經解碼的有限體模數縮減指令,為源資料運算元組的每一個元素1813,計算SIMD有限體對不可約多項式的縮減求模運算。
具有32位元組值之源資料運算元組的元素1813被輸入到處理方塊1871內。在處理方塊1871中,設備1803的某些實施例實施關於非位元反射縮減多項式的非位元反射操作,其等效於位元反射乘積之位元反射模數縮減,如下: (i) [X3,X2,X1,X0]=q[255:0]<<1;(i) A=X0<<63;B=X0<<62;C=X0<<57;(iii) D=X1 ⊕ A ⊕ B ⊕ C;(iv) [E1,E0]=[D,X0]>>1;[F1,F0]=[D,X0]>>2;[G1,G0]=[D,X0]>>7;(v) q[127:64]=X3 ⊕ D ⊕ E1 ⊕ F1 ⊕ G1(mod p);(vi) q[63:0]=X2 ⊕ X0 ⊕ E0 ⊕ F0 ⊕ G0(mod p).
因此,方程式(i)係藉由移位器1870從元素1813得到,用以產生[X3,X2,X1,X0]1872。方程式(ii)係藉由移位器1873-1875得到。方程式(iii)係藉由處理方塊1876得到。方程式(iv)係藉由移位器1877-1879得到。方程式(v)係藉由處理方塊1885得到。方程式(vi)係藉由處理方塊1880得到。特定模數縮減指令之源資料運算元組的每一個元素1813的特定模數縮減結果元素(qmodp)1853被儲入SIMD目的暫存器(例如,實體暫存器檔案單元458)中。
圖18D的圖說明用於執行模數縮減指令之設備1804的一實施例,用以提供通用二元有限體GF(2t)SIMD密碼算術功能。在目前說明的例中,特定的模數多項式ps可選擇自指令(或微指令)所提供之模數縮減的特定模數多項式,例如,p0,p1,...pn。在某些實施例中t=8,設備1804可重複16次,每一個設備1804包含硬體處理方塊,用於對包括有16雙位元組值的兩個128位元區塊(或一個256位元區塊)有效率地實施特定的模數縮減,以產生包括有16位元組值的128位元區塊,所得到的16位元組值每一個都具有GF(256)中或某些替代合成體(例如,GF((24)2)或 GF((22)4)等)中的多項式表示法。在模數縮減指令(或微指令)的其它實施例中,t的大小也被指定,及/或可選擇設備1804重複的數量,以產生128位元區塊、256位元區塊、或512位元區塊等。設備1804的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一部分,用於執行模數縮減指令,以提供通用二元有限體GF(2t)SIMD密碼算術功能。設備1804的實施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,用以解碼二元有限體GF(2t)中或某些替代合成體(例如,GF((2u)v)其中t=u+v)中之用於模數縮減的指令。
圖19A說明用於執行二元有限體乘法指令之設備1901的實施例,以提供通用GF(256)SIMD密碼算術功能。在某些實施例中,設備1901可重複16次,每一個設備1901包含硬體處理方塊,用於有效率地對每一個都包括有16位元組值的兩個128位元區塊實施二元有限體乘法,每一個位元組都具有GF(256)中的多項式表示法。在二元有限體乘法指令(或微指令)的其它實施例中,元素大小也被指定,及/或可選擇設備1901重複的數量,以便對兩個128位元區塊、或兩個256位元區塊、或兩個512位元區塊等實施二元有限體乘法。設備1901的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一部分,用於執行二元有限體乘法指令,以提供通用GF(256)SIMD密碼算術功能。設備1901 的實施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,用以解碼GF(256)中用於有限體乘法的指令。
設備1901的實施例可與SIMD向量暫存器(例如,實體暫存器檔案單元458)耦接,其包含可變的複數個m可變大小的資料欄位,用以儲存可變的複數個m可變大小資料元素的值。用以提供二元有限體乘法功能之通用GF(256)SIMD計算之二元有限體乘法指令的某些實施例指定元素1910與1912的兩個源資料運算元組,及最高階係數為1的不可約多項式。在處理方塊1902中,一或多個執行單元(例如,執行單元462)回應經解碼的二元有限體乘法指令,為源資料運算元組的每一對元素1910與1912計算SIMD無進位8乘8乘法,以產生15位元的乘積元素1915,與經縮減的乘積1918透過模數縮減單元1917對被選擇(例如,經由選擇器1916)的不可約多項式作求模運算。源資料運算元組之元素對1910與1912之每一個二元有限體乘法之經縮減的乘積1918結果被儲入SIMD目的暫存器(例如,實體暫存器檔案單元458)中。
圖19B說明用於執行二元有限體乘法指令之設備1903的替代實施例,以提供通用GF(256)SIMD密碼算術功能。在某些實施例中,設備1903可重複2次,每一個設備1903包含硬體處理方塊,用於有效率地對每一個都包括有16位元組值的兩個128位元區塊實施二元有限體乘法,每一個位元組都具有GF(256)中的多項式表示法。在二元有 限體乘法指令(或微指令)的其它實施例中,元素大小也被指定,及/或可選擇設備1903重複的數量,以便對兩個128位元區塊、或兩個256位元區塊、或兩個512位元區塊等實施二元有限體乘法。設備1903的實施例可以是管線400(例如,執行級416)的一部分或核心490(例如,執行單元462)的一部分,用於執行二元有限體乘法指令,以提供通用GF(256)SIMD密碼算術功能。設備1903的實施例可以與解碼級(例如,解碼406)或解碼器(例如,解碼單元440)耦接,以解碼GF(256)中用於有限體乘法的指令。
設備1903的實施例可與SIMD向量暫存器(例如,實體暫存器檔案單元458)耦接,其包含可變的複數個m可變大小的資料欄位,用以儲存可變的複數個m可變大小資料元素的值。用以提供二元有限體乘法功能之通用GF(256)SIMD計算之二元有限體乘法指令的某些實施例指定了兩個源資料運算元組,例如,1920與1922,及最高階係數為1的不可約多項式p。在陣列1925的每一個處理方塊1902中,一或多個執行單元(例如,執行單元462)回應經解碼的二元有限體乘法指令,為源資料運算元組1920與1922的每一對元素計算SIMD無進位8乘8乘法,以產生乘積元素1915,與經縮減之乘積1918透過模數縮減單元1917,對被選擇(例如,經由選擇器1916)的不可約多項式作求模運算。源資料運算元組1920與1922之SIMD二元有限體乘法之經縮減的乘積組1928結果被存入SIMD目的暫存器(例如,實體暫存器檔案單元458)中。
圖20A的流程圖說明用於執行仿射映圖指令以提供通用GF(256)SIMD密碼算術功能之處理2001的實施例。本文所揭示的處理2001及其它處理係由處理方塊來執行,其可包含專用的硬體或可藉由通用機器或特殊用途機器或這兩者之組合來執行的軟體或韌體運算碼。
在處理方塊2011中,用於有限體中之SIMD仿射變換的處理器仿射映圖指令被解碼。在處理方塊2016中,解碼仿射映圖指令以選用性地產生微指令,例如,第一微指令用於有限體矩陣-向量乘法1602,及第二微指令用於有限體向量加法(或XOR)1603。在處理方塊2021中,取得元素的源資料運算元組。在處理方塊2031中,取得變換矩陣運算元。在處理方塊2041中,取得平移向量運算元。在處理方塊2051中,對源資料運算元組的每一個元素施加變換矩陣運算元。在處理方塊2061中,對源資料運算元組之每一個經變換的元素施加平移向量運算元。在處理方塊2081中,做出源資料運算元組之每一個元素之處理是否完成的決定。若否,則SIMD仿射變換的處理回到處理方塊2051重複開始。否則,在處理方塊2091中,SIMD仿射變換的結果被存入SIMD目的暫存器。
圖20B的流程圖說明用於執行有限體乘法逆元指令以提供通用GF(256)SIMD密碼算術功能之處理2002的實施例。在處理方塊2012中,用於有限體中之SIMD乘法逆元的處理器乘法逆元指令被解碼。在處理方塊2016中,解碼乘法逆元指令以選用性地產生微指令,例如,第一微指令 用於乘法逆元,及第二微指令用於模數縮減,諸如1801-1804其中之一。在處理方塊2022中,取得元素的源資料運算元組。在處理方塊2032中,明確地識別選用的不可約多項式。在一實施例中,例如,在指令的立即運算元中,不可約多項式被指定為十六進制控制值1B,用以指示伽羅瓦體GF(256)中的多項式x8+x4+x3+x+1。在另一實施例中,例如,在指令的立即運算元中,不可約多項式被指定為十六進制控制值FA,用以指示GF(256)中的多項式x8+x7+x6+x5+x4+x2+1,或替代的控制值用以指示其它的多項式。在另一替代的實施例中,不可約多項式可在指令助憶中被指定及/或明確地被識別。在處理方塊2042中,為源資料運算元組的每一個元素計算二元有限體乘法逆元,及在處理方塊2052中,源資料運算元組之每一個元素的逆元素對被選用不可約多項式作縮減求模運算。在處理方塊2082中,做出源資料運算元組之每一個元素之處理是否完成的決定。若否,則SIMD有限體乘法逆元的處理回到處理方塊2042重複開始。否則,在處理方塊2092中,SIMD仿射變換的結果被存入SIMD目的暫存器。
圖20C的流程圖說明用於執行仿射逆指令以提供通用GF(256)SIMD密碼算術功能之處理2003的實施例。在處理方塊2013中,用於有限體中之SIMD仿射變換與逆的處理器仿射逆指令被解碼。在處理方塊2016中,仿射逆指令之解碼選用性地產生微指令,例如,第一微指令用於有限體仿射映圖1601,及第二微指令用於有限體乘法逆 元1604;或替代的第一微指令用於有限體矩陣-向量乘法1601,接著第二微指令用於位元組廣播、第三微指令用於有限體向量加法(或XOR)1602、及第四微指令用於有限體乘法逆元1604。在處理方塊2023中,取得元素的源資料運算元組。在處理方塊2033中,取得變換矩陣運算元。在處理方塊2043中,取得平移向量運算元。在處理方塊2053中,對源資料運算組之每一個元素施加變換矩陣運算元。在處理方塊2063中,對源資料運算元組之每一個經變換的元素施加平移向量運算元。在處理方塊2073,為源資料運算元組之每一個經仿射變換的元素計算二元有限體乘法逆元。在處理方塊2083中,做出源資料運算元組之每一個元素之處理是否完成的決定。若否,則SIMD仿射變換與逆的處理回到處理方塊2053重複開始。否則,在處理方塊2093中,SIMD仿射變換與乘法逆元的結果被存入SIMD目的暫存器。
圖20D的流程圖說明用於執行二元有限體乘法指令以提供通用GF(256)SIMD密碼算術功能之處理2004的實施例。在處理方塊2014,用於有限體中之SIMD乘法的處理器乘法指令被解碼。在處理方塊2016中,仿射逆指令之解碼選用性地產生微指令,例如,第一微指令用於有限體無進位乘法1913,及第二微指令用於有限體模數縮減1917,諸如1801-1804其中之一。在處理方塊2024,取得元素的第一源資料運算元組。在處理方塊2034,取得元素的第二源資料運算元組。在處理方塊2044,明確地識 別選用的不可約多項式。在一實施例中,例如,在指令的立即運算元中不可約多項式被指定為十六進制控制值1B,用以指示伽羅瓦體GF(256)中的多項式x8+x4+x3+x+1。在另一實施例中,例如,在指令的立即運算元中不可約多項式被指定為十六進制控制值FA,用以指示GF(256)中的多項式x8+x7+x6+x5+x4+x2+1。在另一替代的實施例中,不可約多項式可在指令助憶中指定及/或明確地識別。在處理方塊2054中,為第一與第二源資料運算元組之每一對應之元素計算對應元素對的乘積,及在處理方塊2064中,選用地,第一與第二源資料運算元組之每一對應之元素的乘積對不可約多項式作縮減求模運算。在處理方塊2084中,做出第一與第二源資料運算元組之每一對應之元素的處理是否完成的決定。若否,則SIMD有限體乘法的處理回到處理方塊2054重複開始。否則,在處理方塊2094中,SIMD有限體乘法的結果被存入SIMD目的暫存器。
須理解,雖然以上已按迭代之方式說明了執行提供通用SIMD密碼算術功能之指令的處理,但為了提高執行的效能與產出量,只要可能,各種處理方塊的一或多個示例,以同時及/或以平行方式執行為更佳。
可理解,通用GF(256)SIMD密碼算術指令可在諸如密碼協定與網際網路通訊之應用軟體中,用來提供通用GF(256)SIMD密碼算術功能,用來確保金融交易、電子商務、電子郵件、軟體配銷、資料儲存等的資料完整性、身 分驗證、訊息內容認證、及訊息來源認證。
因此,亦應理解,該等指令之執行至少提供:(1)SIMD仿射變換,指定源資料運算元、變換矩陣運算元、及平移向量,其中,變換矩陣施加於源資料運算元的每一個元素,及平移向量施加於每一個經變換的元素;(2)SIMD二元有限體乘法逆元,用以為源資料運算元之每一個元素,計算二元有限體中之逆元素與不可約多項式的模運算;(3)SIMD仿射變換與與乘法逆元(或乘法逆元與仿射變換),指定源資料運算元、變換矩陣運算元、及平移向量,其中,在乘法逆元運算之前或之後,對源資料運算元的每一個元素施加變換矩陣,且對每一個經變換的元素施加平移向量;(4)模數縮減,用以計算自二元有限體中之多項式(由指令(或微指令)為這些特定的多項式提供模數縮減)中選出的特定模數多項式ps進行縮減求模運算;(5)SIMD二元有限體乘法,指定第一與第二源資料運算元去乘第一與第二源資料運算元之每一對應對的元素,並對不可約多項式作求模運算;其中,該等指令的結果存入SIMD目的暫存器中;為了支援大幅增進數個重要性能關鍵之應用程式的性能,可在硬體及/或微碼序列中提供通用GF(256)及/或其它替代的二元有限體SIMD密碼算術功能,而不致會有超量或過多之需要額外電路、面積、或電力的功能單元。
本文所揭示之機制的實施例可在硬體、軟體、韌體、或這些實施方法的組合中實施。本發明的實施例可用能在 可程式系統上執行的電腦程式或程式碼來實施,該系統包含至少一個處理器、儲存系統(包括揮發性與非揮發性記憶體及/或儲存單元)、至少一個輸入裝置、及至少一個輸出裝置。
程式碼可施加於輸入指令以實施本文所描述的功能並產生輸出資訊。該輸出資訊可按已知的方式施加於一或多個輸出裝置。基於此應用之目的,處理系統包括具有處理器的任何系統,例如,諸如數位信號處理器(DSP)、微控制器、特殊用途積體電路(ASIC)、或微處理器。
程式碼可在高階程序或物件導向程式語言中實施,以與處理系統通訊。如有需要,程式碼也可在組合或機器語言中實施。事實上,本文所描述的機制並不限定於任何特定程式語言的範圍。無論如何,語言是經編譯或解譯的語言。
至少一實施例的一或多個態樣可藉由儲存在機器可讀取媒體中的代表指令來實施,其代表處理器內的各種邏輯,當被機器讀取時,致使機器製造用來實施本文所描述之技術的邏輯。此種表示法為習知的“IP核心”,可儲存在實體的機器可讀取媒體上,並供應給各不同之客戶或製造工廠,用以載入到實際製造邏輯或處理器的製造機具內。
此等機器可讀取儲存媒體可包括但不限於由機器或裝置所製造或形成之物件的非暫時性實體配置,包括諸如硬碟的儲存媒體;任何其它類型的碟片,包括軟碟、光碟、唯讀光碟記憶體(CD-ROM)、可覆寫光碟(CD-RW)、及磁 光碟;半導體裝置,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式唯讀記憶體(EEPROM);磁或光卡;或適合儲存電子指令之任何其它類型的媒體。
因此,本發明的實施例也包括包含指令或包含設計資料的非暫時性實體機器可讀取媒體,諸如硬體描述語言(Hardware Description Language;HDL),其定義本文所描述的結構、電路、設備、處理器、及/或系統特徵。此等實施例也稱為程式產品。
在某些情況中,會使用指令轉換器將指令從源指令集轉換到目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二元轉譯、包括動態編譯的動態二元轉譯)、變形、仿真、或以其它方式將指令轉換成可供核心處理的一或多個其它指令。指令轉換器可在軟體、硬體、韌體、或它們的組合中實施。指令轉換器可位在處理器上、處理器外部、或部分在處理器上部分在處理器外部。
因此,本文揭示了用於實施按照至少一實施例之一或多個指令的技術。雖然已描述了某些例示性實施例並顯示於附圖中,但須瞭解,此等實施例僅是說明本發明,並非對本發明的限制,且本發明並不限於本文所顯示與描述之特定的構造與配置,因為熟悉一般技藝者在研究了本揭示之後,可做出各種其它的修改。諸如本發明之領域的技 術,成長快速且未來的進步很難預見,隨著技術進步所帶來的助益,使得所揭示之實施例的配置與細節很容易修改,不會偏離本發明之原理或所附申請專利範圍的範圍。

Claims (22)

  1. 一種處理器,包含:解碼電路,能用以解碼用於單指令多資料(SIMD)仿射變換的第一指令,該第一指令指定源資料運算元組、變換矩陣運算元、與平移向量運算元;以及一或多個執行單元,反應該經解碼的第一指令,能用以:藉由施加該變換矩陣運算元至該源資料運算元組的各個元素及施加該平移向量運算元至該源資料運算元組的各個變換元素而執行SIMD仿射變換,並儲存該第一指令的結果至SIMD目的暫存器。
  2. 如申請專利範圍第1項之處理器,其中,所述一或多個執行單元反應於該經解碼的第一指令更能用以:為該源資料運算元組的各個經仿射變換的元素,計算SIMD二元有限體乘法逆元與特定不可約多項式的模運算。
  3. 如申請專利範圍第2項之處理器,其中,該特定不可約多項式係在該第一指令的立即運算元中被指定為十六進制控制值1B,用以指示伽羅瓦體GF(28)中的x8+x4+x3+x+1。
  4. 如申請專利範圍第1項之處理器,其中該第一指令指定該SIMD目的暫存器為目的運算元。
  5. 如申請專利範圍第1至4項中任一項之處理器,其中該第一指令指定SIMD暫存器以保存多個16位元組的元素作為該源資料運算元組。
  6. 如申請專利範圍第1至4項中任一項之處理器,其中,該第一指令指定SIMD暫存器保存多個32位元組的元素作為該源資料運算元組。
  7. 如申請專利範圍第1至4項中任一項之處理器,其中,該第一指令指定SIMD暫存器保存多個64位元組的元素作為該源資料運算元組。
  8. 如申請專利範圍第1至4項中任一項之處理器,其中,該第一指令指定SIMD暫存器保存至少64個1-位元的元素作為該變換矩陣運算元。
  9. 如申請專利範圍第1項之處理器,其中該第一指令指定該平移向量運算元作為在立即運算元中的8-位元向量。
  10. 如申請專利範圍第1項之處理器,其中施加該變換矩陣運算元至該源資料運算元組的各個元素係被執行為在伽羅瓦體GF(28)中的矩陣乘法。
  11. 如申請專利範圍第1項之處理器,其中施加該平移向量運算元至該源資料運算元組的各個變換元素係被執行為在伽羅瓦體GF(28)中的向量加法。
  12. 一種方法,包含:解碼用於單指令多資料(SIMD)仿射變換的第一指令,該第一指令指定源資料運算元組、變換矩陣運算元、及平移向量運算元;以及反應該經解碼的第一指令,藉由施加該變換矩陣運算元至該源資料運算元組的各個元素及施加該平移向量運算 元至該源資料運算元組的各個變換元素而執行SIMD仿射變換;及將該第一指令的結果儲存在SIMD目的暫存器中。
  13. 如申請專利範圍第12項之方法,更包含:為該源資料運算元組的各個經仿射變換的元素,計算SIMD二元有限體乘法逆元與特定不可約多項式的模運算。
  14. 如申請專利範圍第13項之方法,其中,該特定不可約多項式係在該第一指令的立即運算元中被指定為十六進制控制值1B,用以指示伽羅瓦體GF(28)中的x8+x4+x3+x+1。
  15. 如申請專利範圍第12項之方法,其中該第一指令指定該SIMD目的暫存器為目的運算元。
  16. 如申請專利範圍第12至15項中任一項之方法,其中該第一指令指定SIMD暫存器以保存多個16位元組的元素作為該源資料運算元組。
  17. 如申請專利範圍第12至15項中任一項之方法,其中,該第一指令指定SIMD暫存器保存多個32位元組的元素作為該源資料運算元組。
  18. 如申請專利範圍第12至15項中任一項之方法,其中,該第一指令指定SIMD暫存器保存多個64位元組的元素作為該源資料運算元組。
  19. 如申請專利範圍第12至15項中任一項之方法,其中,該第一指令指定SIMD暫存器保存至少64個1-位 元的元素作為該變換矩陣運算元。
  20. 如申請專利範圍第12項之方法,其中該第一指令指定該平移向量運算元作為在立即運算元中的8-位元向量。
  21. 如申請專利範圍第12項之方法,其中施加該變換矩陣運算元至該源資料運算元組的各個元素係被執行為在伽羅瓦體GF(28)中的矩陣乘法。
  22. 如申請專利範圍第12項之方法,其中施加該平移向量運算元至該源資料運算元組的各個變換元素係被執行為在伽羅瓦體GF(28)中的向量加法。
TW106120226A 2007-12-28 2015-05-21 提供通用gf(256)simd密碼算術功能的指令與邏輯 TWI639954B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/966,658 US8923510B2 (en) 2007-12-28 2007-12-28 Method and apparatus for efficiently implementing the advanced encryption standard
US14/316,511 2014-06-26
US14/316,511 US20150067302A1 (en) 2007-12-28 2014-06-26 Instructions and logic to provide general purpose gf(256) simd cryptographic arithmetic functionality

Publications (2)

Publication Number Publication Date
TW201804320A TW201804320A (zh) 2018-02-01
TWI639954B true TWI639954B (zh) 2018-11-01

Family

ID=40799868

Family Applications (3)

Application Number Title Priority Date Filing Date
TW104116270A TWI597620B (zh) 2007-12-28 2015-05-21 提供通用gf(256)simd密碼算術功能的指令與邏輯
TW106120226A TWI639954B (zh) 2007-12-28 2015-05-21 提供通用gf(256)simd密碼算術功能的指令與邏輯
TW104116462A TWI595376B (zh) 2007-12-28 2015-05-22 用於提供密碼算術功能的處理器、機器可讀媒體、方法及處理系統

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW104116270A TWI597620B (zh) 2007-12-28 2015-05-21 提供通用gf(256)simd密碼算術功能的指令與邏輯

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW104116462A TWI595376B (zh) 2007-12-28 2015-05-22 用於提供密碼算術功能的處理器、機器可讀媒體、方法及處理系統

Country Status (2)

Country Link
US (6) US8923510B2 (zh)
TW (3) TWI597620B (zh)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2273472B1 (en) * 2008-03-31 2016-02-17 Fujitsu Limited Coder equipped with common key code function and built-in equipment
CN104011732B (zh) * 2011-12-30 2018-06-15 英特尔公司 双合成域高级加密标准存储器加密引擎
US20130204962A1 (en) * 2012-02-02 2013-08-08 Texas Instruments Incorporated Network and peripheral interface circuits, systems and processes
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
KR102133200B1 (ko) * 2013-08-08 2020-07-13 서울대학교산학협력단 데이터의 보호 방법 및 장치
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9425961B2 (en) * 2014-03-24 2016-08-23 Stmicroelectronics S.R.L. Method for performing an encryption of an AES type, and corresponding system and computer program product
US9912481B2 (en) 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9800406B2 (en) 2014-05-21 2017-10-24 Intel Corporation Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher
KR101753467B1 (ko) 2014-06-26 2017-07-03 인텔 코포레이션 범용 gf(256) simd 암호용 산술 기능성을 제공하는 명령어 및 로직
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
US9658854B2 (en) * 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
US9467279B2 (en) 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US10158485B2 (en) * 2015-09-24 2018-12-18 Intel Corporation Double affine mapped S-box hardware accelerator
US9910792B2 (en) 2016-04-11 2018-03-06 Intel Corporation Composite field scaled affine transforms-based hardware accelerator
CN111651203B (zh) * 2016-04-26 2024-05-07 中科寒武纪科技股份有限公司 一种用于执行向量四则运算的装置和方法
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
EP3287859B1 (en) * 2016-08-25 2023-01-25 Ningbo Geely Automobile Research & Development Co., Ltd. Methods and systems for detecting faults in vehicle control systems
US10218497B2 (en) * 2016-08-31 2019-02-26 Intel Corporation Hybrid AES-SMS4 hardware accelerator
US9825649B1 (en) 2016-09-29 2017-11-21 Intel Corporation Efficient huffman decoder improvements
US10256973B2 (en) * 2016-09-30 2019-04-09 Intel Corporation Linear masking circuits for side-channel immunization of advanced encryption standard hardware
CN106921487B (zh) * 2017-03-01 2023-09-15 芜湖职业技术学院 可重构s盒电路结构
US11360770B2 (en) 2017-03-20 2022-06-14 Intel Corporation Systems, methods, and apparatuses for zeroing a matrix
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US11275588B2 (en) 2017-07-01 2022-03-15 Intel Corporation Context save with variable save state size
US11243880B1 (en) 2017-09-15 2022-02-08 Groq, Inc. Processor architecture
US11868804B1 (en) 2019-11-18 2024-01-09 Groq, Inc. Processor instruction dispatch configuration
US11114138B2 (en) 2017-09-15 2021-09-07 Groq, Inc. Data structures with multiple read ports
US11360934B1 (en) 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
US11170307B1 (en) 2017-09-21 2021-11-09 Groq, Inc. Predictive model compiler for generating a statically scheduled binary with known resource constraints
US11221849B2 (en) * 2017-09-27 2022-01-11 Intel Corporation Instructions for vector multiplication of unsigned words with rounding
CN108008934B (zh) * 2017-12-04 2021-09-07 深圳职业技术学院 一种基于查找表的复合有限域求逆装置
CN118449685A (zh) * 2017-12-13 2024-08-06 区块链控股有限公司 安全共享加密材料的系统和方法
US11023235B2 (en) 2017-12-29 2021-06-01 Intel Corporation Systems and methods to zero a tile register pair
US11669326B2 (en) 2017-12-29 2023-06-06 Intel Corporation Systems, methods, and apparatuses for dot product operations
US11093247B2 (en) 2017-12-29 2021-08-17 Intel Corporation Systems and methods to load a tile register pair
US11816483B2 (en) 2017-12-29 2023-11-14 Intel Corporation Systems, methods, and apparatuses for matrix operations
US11809869B2 (en) 2017-12-29 2023-11-07 Intel Corporation Systems and methods to store a tile register pair to memory
US11789729B2 (en) 2017-12-29 2023-10-17 Intel Corporation Systems and methods for computing dot products of nibbles in two tile operands
DE102018107114A1 (de) * 2018-03-26 2019-09-26 Infineon Technologies Ag Seitenkanalgehärtete Operation
US10664287B2 (en) 2018-03-30 2020-05-26 Intel Corporation Systems and methods for implementing chained tile operations
US11032061B2 (en) * 2018-04-27 2021-06-08 Microsoft Technology Licensing, Llc Enabling constant plaintext space in bootstrapping in fully homomorphic encryption
CN109039583B (zh) * 2018-06-11 2021-04-02 安徽工程大学 复用轮变换电路、aes加密电路及加密方法
CN109150496B (zh) * 2018-06-11 2021-05-04 安徽工程大学 Aes加密运算单元、aes加密电路及加密方法
CN108874365A (zh) * 2018-06-29 2018-11-23 深圳职业技术学院 一种基于不可约三项式的有限域求逆器及有限域求逆方法
US11093579B2 (en) 2018-09-05 2021-08-17 Intel Corporation FP16-S7E8 mixed precision for deep learning and other algorithms
US10970076B2 (en) 2018-09-14 2021-04-06 Intel Corporation Systems and methods for performing instructions specifying ternary tile logic operations
US11579883B2 (en) 2018-09-14 2023-02-14 Intel Corporation Systems and methods for performing horizontal tile operations
US10866786B2 (en) 2018-09-27 2020-12-15 Intel Corporation Systems and methods for performing instructions to transpose rectangular tiles
US10990396B2 (en) 2018-09-27 2021-04-27 Intel Corporation Systems for performing instructions to quickly convert and use tiles as 1D vectors
US10719323B2 (en) 2018-09-27 2020-07-21 Intel Corporation Systems and methods for performing matrix compress and decompress instructions
US10896043B2 (en) 2018-09-28 2021-01-19 Intel Corporation Systems for performing instructions for fast element unpacking into 2-dimensional registers
US10929143B2 (en) 2018-09-28 2021-02-23 Intel Corporation Method and apparatus for efficient matrix alignment in a systolic array
US10963256B2 (en) 2018-09-28 2021-03-30 Intel Corporation Systems and methods for performing instructions to transform matrices into row-interleaved format
CN111104093A (zh) * 2018-10-25 2020-05-05 贵州白山云科技股份有限公司 有限域运算方法、系统、运算设备和计算机可读存储介质
US10963246B2 (en) 2018-11-09 2021-03-30 Intel Corporation Systems and methods for performing 16-bit floating-point matrix dot product instructions
US11204976B2 (en) * 2018-11-19 2021-12-21 Groq, Inc. Expanded kernel generation
US10929503B2 (en) 2018-12-21 2021-02-23 Intel Corporation Apparatus and method for a masked multiply instruction to support neural network pruning operations
US11294671B2 (en) 2018-12-26 2022-04-05 Intel Corporation Systems and methods for performing duplicate detection instructions on 2D data
US11886875B2 (en) 2018-12-26 2024-01-30 Intel Corporation Systems and methods for performing nibble-sized operations on matrix elements
US20200210517A1 (en) 2018-12-27 2020-07-02 Intel Corporation Systems and methods to accelerate multiplication of sparse matrices
US10922077B2 (en) 2018-12-29 2021-02-16 Intel Corporation Apparatuses, methods, and systems for stencil configuration and computation instructions
US10942985B2 (en) 2018-12-29 2021-03-09 Intel Corporation Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions
US11029921B2 (en) 2019-02-14 2021-06-08 International Business Machines Corporation Performing processing using hardware counters in a computer system
US11016731B2 (en) 2019-03-29 2021-05-25 Intel Corporation Using Fuzzy-Jbit location of floating-point multiply-accumulate results
US11269630B2 (en) 2019-03-29 2022-03-08 Intel Corporation Interleaved pipeline of floating-point adders
US10990397B2 (en) 2019-03-30 2021-04-27 Intel Corporation Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator
US11175891B2 (en) 2019-03-30 2021-11-16 Intel Corporation Systems and methods to perform floating-point addition with selected rounding
US11216281B2 (en) 2019-05-14 2022-01-04 International Business Machines Corporation Facilitating data processing using SIMD reduction operations across SIMD lanes
US11403097B2 (en) 2019-06-26 2022-08-02 Intel Corporation Systems and methods to skip inconsequential matrix operations
US11334647B2 (en) 2019-06-29 2022-05-17 Intel Corporation Apparatuses, methods, and systems for enhanced matrix multiplier architecture
US11569980B2 (en) 2019-11-20 2023-01-31 International Business Machines Corporation Combined SBox and inverse SBox cryptography
US11909857B2 (en) * 2019-12-23 2024-02-20 Intel Corporation Functionally safe encryption for vehicle to anything communication
US11714875B2 (en) 2019-12-28 2023-08-01 Intel Corporation Apparatuses, methods, and systems for instructions of a matrix operations accelerator
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof
KR20210153423A (ko) * 2020-06-10 2021-12-17 한국전자통신연구원 곱셉 역원 연산 회로, 장치 및 방법
US11972230B2 (en) 2020-06-27 2024-04-30 Intel Corporation Matrix transpose and multiply
US12112167B2 (en) 2020-06-27 2024-10-08 Intel Corporation Matrix data scatter and gather between rows and irregularly spaced memory locations
US11635967B2 (en) * 2020-09-25 2023-04-25 Advanced Micro Devices, Inc. Vertical and horizontal broadcast of shared operands
US11941395B2 (en) 2020-09-26 2024-03-26 Intel Corporation Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions
KR102457166B1 (ko) * 2020-11-23 2022-10-20 부산대학교 산학협력단 ARIA의 암호화 및 복호화를 지원하는 프로세서용 32bit 확장 명령어 체계를 갖는 하드웨어 모듈 및 이의 제어 방법
EP4248433A4 (en) * 2020-12-08 2024-10-23 Rambus Inc HIGH-SPEED CIRCUIT WITH COMBINATION OF AES AND SM4 ENCRYPTION AND DECRYPTION
US12001887B2 (en) 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator
US12001385B2 (en) 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator
CN112506469B (zh) * 2021-02-05 2021-04-27 支付宝(杭州)信息技术有限公司 针对隐私数据进行处理的方法和装置
US11740869B2 (en) 2021-04-28 2023-08-29 International Business Machines Corporation Scheduling atomic field operations in jacobian coordinates used in elliptic curve cryptography scalar multiplications
CN116361840B (zh) * 2023-06-02 2023-08-04 深圳市力博实业有限公司 一种银行自助设备数据安全管理系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6766344B2 (en) * 2001-05-08 2004-07-20 International Business Machines Corporation Processing Galois Field arithmetic
TW200531494A (en) * 2004-03-15 2005-09-16 Via Tech Inc Microprocessor apparatus and method for optimizing block cipher cryptographic functions
TW201105080A (en) * 2009-02-04 2011-02-01 Globalfoundries Us Inc Processor instructions for improved AES encryption and decryption

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5808690A (en) * 1996-01-02 1998-09-15 Integrated Device Technology, Inc. Image generation system, methods and computer program products using distributed processing
US6426746B2 (en) * 1998-03-31 2002-07-30 Intel Corporation Optimization for 3-D graphic transformation using SIMD computations
US6288723B1 (en) * 1998-04-01 2001-09-11 Intel Corporation Method and apparatus for converting data format to a graphics card
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
US6574772B1 (en) * 2000-02-04 2003-06-03 Northrop Grumman Corporation Efficient galois field multiplier structures for error-correction encoding and decoding
WO2002046885A2 (en) * 2000-11-28 2002-06-13 Chipwrights Design, Inc. Handling conditional processing in a single instruction multiple datapath processor architecture
US7155601B2 (en) * 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6766345B2 (en) * 2001-11-30 2004-07-20 Analog Devices, Inc. Galois field multiplier system
US7343389B2 (en) * 2002-05-02 2008-03-11 Intel Corporation Apparatus and method for SIMD modular multiplication
GB2389678A (en) * 2002-06-14 2003-12-17 Univ Sheffield Finite field processor reconfigurable for varying sizes of field.
JP2005534973A (ja) * 2002-08-06 2005-11-17 ディスクレティックス・テクノロジーズ・リミテッド 有限体内でデータを操作する方法および装置
JP3818263B2 (ja) * 2003-01-28 2006-09-06 日本電気株式会社 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法
US7146486B1 (en) * 2003-01-29 2006-12-05 S3 Graphics Co., Ltd. SIMD processor with scalar arithmetic logic units
US8643659B1 (en) * 2003-12-31 2014-02-04 3Dlabs Inc., Ltd. Shader with global and instruction caches
US7532721B2 (en) * 2004-10-28 2009-05-12 Cisco Technology, Inc. Implementation of a switch-box using a subfield method
US7512647B2 (en) * 2004-11-22 2009-03-31 Analog Devices, Inc. Condensed Galois field computing system
US8538015B2 (en) * 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8139764B2 (en) * 2008-05-06 2012-03-20 Harris Corporation Closed galois field cryptographic system
JP4623199B2 (ja) * 2008-10-27 2011-02-02 ソニー株式会社 画像処理装置、画像処理方法およびプログラム
US20110052023A1 (en) * 2009-08-28 2011-03-03 International Business Machines Corporation Reconstruction of Images Using Sparse Representation
US8688957B2 (en) * 2010-12-21 2014-04-01 Intel Corporation Mechanism for conflict detection using SIMD
US8401242B2 (en) * 2011-01-31 2013-03-19 Microsoft Corporation Real-time camera tracking using depth maps
US9143325B2 (en) * 2012-12-14 2015-09-22 Microsoft Technology Licensing, Llc Masking with shared random bits
US9251590B2 (en) 2013-01-24 2016-02-02 Microsoft Technology Licensing, Llc Camera pose estimation for 3D reconstruction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6766344B2 (en) * 2001-05-08 2004-07-20 International Business Machines Corporation Processing Galois Field arithmetic
TW200531494A (en) * 2004-03-15 2005-09-16 Via Tech Inc Microprocessor apparatus and method for optimizing block cipher cryptographic functions
TW201105080A (en) * 2009-02-04 2011-02-01 Globalfoundries Us Inc Processor instructions for improved AES encryption and decryption

Also Published As

Publication number Publication date
US20170272237A1 (en) 2017-09-21
TW201617959A (zh) 2016-05-16
US20170195116A1 (en) 2017-07-06
US8923510B2 (en) 2014-12-30
US20090172068A1 (en) 2009-07-02
US9960907B2 (en) 2018-05-01
TW201617958A (zh) 2016-05-16
US20160204938A1 (en) 2016-07-14
US10148426B2 (en) 2018-12-04
US9906359B2 (en) 2018-02-27
US20150378736A1 (en) 2015-12-31
US20150067302A1 (en) 2015-03-05
TWI595376B (zh) 2017-08-11
US10050778B2 (en) 2018-08-14
TW201804320A (zh) 2018-02-01
TWI597620B (zh) 2017-09-01

Similar Documents

Publication Publication Date Title
TWI639954B (zh) 提供通用gf(256)simd密碼算術功能的指令與邏輯
US11849035B2 (en) Instructions and logic to provide SIMD SM4 cryptographic block cipher
KR101753467B1 (ko) 범용 gf(256) simd 암호용 산술 기능성을 제공하는 명령어 및 로직
CN105204820B (zh) 用于提供通用gf(256)simd加密算术功能的指令和逻辑
US10606765B2 (en) Composite field scaled affine transforms-based hardware accelerator
CN109565438B (zh) 混合加密算法的硬件加速器及其系统
KR20170037641A (ko) Simd sm3 암호화 해싱 기능을 제공하기 위한 명령어 및 로직
KR102456395B1 (ko) Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직

Legal Events

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