TWI551104B - 用以提供安全密碼雜湊循環功能之指令與邏輯 - Google Patents

用以提供安全密碼雜湊循環功能之指令與邏輯 Download PDF

Info

Publication number
TWI551104B
TWI551104B TW103125144A TW103125144A TWI551104B TW I551104 B TWI551104 B TW I551104B TW 103125144 A TW103125144 A TW 103125144A TW 103125144 A TW103125144 A TW 103125144A TW I551104 B TWI551104 B TW I551104B
Authority
TW
Taiwan
Prior art keywords
instruction
data
processor
iterations
destination register
Prior art date
Application number
TW103125144A
Other languages
English (en)
Other versions
TW201519623A (zh
Inventor
維諾德 歌波
瓦迪K 費哈利
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 TW201519623A publication Critical patent/TW201519623A/zh
Application granted granted Critical
Publication of TWI551104B publication Critical patent/TWI551104B/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/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask

Description

用以提供安全密碼雜湊循環功能之指令與邏輯 發明領域
本揭露內容有關處理邏輯、微處理器、以及相關指令集架構之領域,當該相關指令集架構被該處理器或其他處理邏輯執行時會施行邏輯、數學、或其他函數運算。尤其,本揭露內容與用以提供安全密碼雜湊循環功能之指令與邏輯有關。
發明背景
雜湊函數可被使用於許多用途:例如,用以將資料編索引於雜湊表(hash table)中,用於指紋分析,用於負載平衡分佈,用以於資料庫中查找資料,用以檢測重複的資料或唯一地識別檔案,以及作為核對和(checksum)而用以檢測偶發的資料惡化。舉例來說,於負載平衡分佈的應用中,雜湊演算法可使用用戶端的網際網路協定(IP)位址、或用戶端的媒體存取控制(MAC)位址、或HTTP標頭的值、等等作為伺服器選擇的基礎。於這樣的應用中,相同的用戶端可由相同的伺服器來服務,即使當可用伺服器的列表在該用戶端的對話(session)期間被更改。這樣的性質亦可使得 此演算法有用於需要儲存例如網路餅乾(cookies)的伺服器端狀態資訊之應用。
該用語”一致性雜湊(consistent hashing)”參照為在網站伺服器的群體變化之間分佈請求的方式。那麼,每一槽係由一分散式系統中的一節點來表示。當槽/節點的數量改變時,節點的增加(結合)與移除(離去/失效)需要被重新混洗(re-shuffled)登錄。該雜湊函數並未保留結構。理想上,對於每一輸入資料,獲取任何可能的輸出資料的可能性應為相等的。該輸入資料的頻率分佈中的任何不等式係被轉換成為輸出資料的均勻分佈。
然而,由於偶發事故以及故意的而可能會有問題。偶然地,該等使用者可由請求存取資源至不同程度的不同群組所組成。若此等群組不幸地為平衡的,被該雜湊函數導引至一特定資源的該等使用者可請求存取該等資源至比其他使用者更大的範圍。此特定資源接著比其他資源承受更大的負載,導致該等資源之間的偏倚負載平衡。
故意地,所謂的”雜湊攻擊”可能會發生,其等是為了致使該等資源之間的偏倚負載平衡。該等雜湊攻擊一般可能由具有關於該系統的足夠知識的該等攻擊者所做出,及/或由利用從包含該等資源的該系統所輸出的資訊的該等攻擊者所做出。該等攻擊者接著留意使得對於資源的每一請求經過該雜湊函數時,係被導引至相同的一個資源。此資源接著遭受異常高負載,並且或多或少無效率地運行,其會導致所謂的”阻斷服務”,其中該資源不接受任何使用 者。此阻斷服務會影響整個系統的服務效率。
密碼雜湊函數為一雜湊函數,亦即取得任意的資料塊並轉回定長位元串、該(密碼)雜湊值的一演算法,使得對資料的(偶發或故意)改變(非常高的可能性)將改變該雜湊值。將被編碼(encoded)的資料通常稱為”訊息”,且該雜湊值有時被稱為該訊息摘要或”摘要”。
密碼雜湊函數具有許多資訊安全應用,尤其是在數位簽章、訊息鑒別碼(MACs)、以及其他鑒別的形式方面。其等亦可被使用作為通常的雜湊函數,用以將資料編索引於雜湊表之中、用於指紋分析、用以檢測重複的資料或唯一地識別檔案、以及作為核對和而用以檢測偶發的資料惡化。於資訊安全的上下文中,密碼雜湊值有時被稱為(數位)指紋、核對和、或者只是雜湊值,儘管所有此等用語代表有相當不同的性質與目的之函數。
最有名的密碼雜湊函數中的一個為Ronald Rivest所開發的MD5(訊息摘要演算法5)演算法。其他常見的演算法為(美國)國家標準技術局(NIST)所公佈作為(美國)聯邦資訊處理標準(FIPS)的SHA-1(保全散列演算法1)以及變體SHA-2和SHA-3。
若一密碼雜湊函數係基於某些數學函數,其仍會成為易受阻斷服務的攻擊,因為在某些情況下,其會變成受到所謂”齊夫定律”、”冪次律”、或”柏拉圖分佈”中之一者的約束,其中某些特定的資源係遭受異常高負載。此性質或相似性質會惡意地被利用,以致使該等資源之間的偏倚 負載平衡導致阻斷服務。
對於用以實行查找的雜湊的一個類別,在雜湊函數中的兩個重要折衷(tradeoff)為:(1)複雜性對計算速度-太簡單則該雜湊容易間斷,太複雜則該雜湊需要太長的時間來計算;以及(2)摘要分佈與突崩(avalanche)性質-該輸入中的單一位元改變應致使該雜湊摘要輸出值之中的n個位元改變,最強烈的是n大約為該雜湊摘要輸出的大小的一半。
某些已經提出能夠執行一整體安全雜湊演算法的處理器(例如,美國專利第8,255,703號)或共處理器(例如,美國專利第7,240,203號)。此類方式的一個缺點是,在未做特殊考慮例如中斷的特別處置或其他指令的同作超純量執行之情況下,不容易配適於一現代微處理器的標準執行管線。與標準執行管線的另一失配(mismatch)為執行一整體安全雜湊演算法所需要的潛伏(latency)。
現代處理器通常包括用以提供計算密集之操作的指令,但給予一高程度的資料數據平行性,透過高效地實施使用例如單指令多資料(SIMD)向量暫存器之各種不同的資料儲存裝置而可利用高程度的資料數據平行性。中央處理器(CPU)可接著提供平行硬體以支援處理向量。一向量為保持若干連序的資料元件的一資料結構。大小M的一向量暫存器可含有N個大小O的向量元件,其中N=M/O。舉例來說,一64位元組的向量暫存器可被分割為(a)各自用以保持佔用1位元組之資料項的64個向量元件、(b)各自用以保持 佔用2位元組(或一個”字”)之資料項的32個向量元件、(c)各自用以保持佔用4位元組(或一個”雙字”)之資料項的16個向量元件、或(d)各自用以保持佔用8位元組(或一個”四倍字”)之資料項的8個向量元件。SIMD向量暫存器中的平行性之本質應可相當合適於安全雜湊演算法的處置。
迄今,對於此類複雜性、失配、效能限制問題、以及其他瓶頸的潛在解決辦法尚未被充分地探索。
發明概要
依據本發明之一實施例,係特地提出一種處理器,其包含:一解碼階段,其用以解碼用於安全密碼雜湊演算法的一指令,該第一指令規定一原始資料、及一或多個金鑰運算元;以及一或多個執行單元,其回應該經解碼的第一指令而用以:對該原始資料實行一初始排列;使用該等一或多個金鑰運算元對該原始資料來實行該安全密碼雜湊演算法的一或多個循環疊代,其中該等一或多個循環疊代係少於16;及對該經編密的資料實行一反向初始排列;將該第一指令的一結果儲存於一目的地暫存器中。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧快取記憶體
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形/視訊卡
114‧‧‧加速圖形埠互連
116‧‧‧記憶體控制器集線器
118‧‧‧記憶體路徑
120‧‧‧記憶體
122‧‧‧集線器介面匯流排
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧快閃BIOS
130‧‧‧I/O控制器集線器
134‧‧‧網路控制器
140‧‧‧資料處理系統
141‧‧‧匯流排
142‧‧‧執行單元
143‧‧‧緊縮指令集
144‧‧‧解碼器
145‧‧‧暫存器檔案
146‧‧‧SDRAM控制
147‧‧‧SRAM控制
148‧‧‧叢集快閃記憶體介面
149‧‧‧PCMCIA/CF卡控制
150‧‧‧液晶顯示器控制
151‧‧‧直接記憶體存取控制器
152‧‧‧替代匯流排主控器介面
153‧‧‧I/O匯流排
154‧‧‧I/O橋接器
155‧‧‧通用異步接收/發射器
156‧‧‧通用串列匯流排
157‧‧‧藍牙無線UART
158‧‧‧I/O擴充介面
159‧‧‧處理核心
160‧‧‧資料處理系統
161‧‧‧SIMD共處理器
162‧‧‧執行單元
163‧‧‧指令集
164‧‧‧暫存器檔案
165‧‧‧解碼器
165B‧‧‧解碼器
166‧‧‧主處理器
167‧‧‧快取記憶體
168‧‧‧輸入/輸出系統
169‧‧‧無線介面
170‧‧‧處理核心
171‧‧‧共處理器匯流排
200‧‧‧處理器
201‧‧‧前端
202‧‧‧快速排程器
203‧‧‧亂序執行引擎
204‧‧‧慢速/一般浮點排程器
206‧‧‧簡單浮點排程器
208‧‧‧整數暫存器檔案
210‧‧‧浮點暫存器檔案
211‧‧‧執行方塊
212‧‧‧位址產生單元
214‧‧‧位址產生單元
216‧‧‧快速ALU
218‧‧‧快速ALU
220‧‧‧慢速ALU
222‧‧‧浮點ALU
224‧‧‧浮點移動單元
226‧‧‧指令預取器
228‧‧‧指令解碼器
230‧‧‧追蹤快取
232‧‧‧微碼ROM
234‧‧‧uop佇列
310‧‧‧緊縮位元組
320‧‧‧緊縮字
330‧‧‧緊縮雙倍字
341‧‧‧緊縮半倍
342‧‧‧緊縮單倍
343‧‧‧緊縮雙倍
344‧‧‧無符號緊縮位元組表示
345‧‧‧帶正負號緊縮位元組表示
346‧‧‧無符號緊縮字表示
347‧‧‧帶正負號緊縮字表示
348‧‧‧無符號緊縮雙倍字表示
349‧‧‧帶正負號緊縮雙倍字表示
360‧‧‧運算編碼格式
361、362‧‧‧欄
364、365‧‧‧來源運算元識別符
366‧‧‧目的地運算元識別符
370‧‧‧運算編碼格式
371、372‧‧‧欄
374、375‧‧‧來源運算元識別符
376‧‧‧目的地運算元識別符
378‧‧‧前置位元組
380‧‧‧運算編碼格式
382‧‧‧CDP運算碼欄
383、384‧‧‧欄
385‧‧‧來源運算元識別符
386‧‧‧目的地運算元識別符
387、388‧‧‧欄
389‧‧‧CDP運算碼欄
390‧‧‧來源運算元識別符
391、392‧‧‧欄
393‧‧‧SIB識別符
394‧‧‧替換識別符
395‧‧‧立即位元組
396‧‧‧EVEX前置位元組
397‧‧‧運算編碼格式
400‧‧‧處理器管線
402‧‧‧提取階段
404‧‧‧長度解碼階段
406‧‧‧解碼階段
408‧‧‧分配階段
410‧‧‧重新命名階段
412‧‧‧排程階段
414‧‧‧暫存器讀取/記憶體讀取階段
416‧‧‧執行階段
418‧‧‧寫回/記憶體寫入階段
422‧‧‧異常處置階段
424‧‧‧確定階段
430‧‧‧前端單元
432‧‧‧分支預測單元
434‧‧‧指令快取單元
436‧‧‧指令轉換搜索緩衝器
438‧‧‧指令提取單元
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧重新命名/分配器單元
454‧‧‧引退單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行叢集
462‧‧‧執行單元
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取單元
476‧‧‧2階快取單元
490‧‧‧處理器核心
500‧‧‧處理器
502A-N‧‧‧核心
504A-N‧‧‧快取單元
506‧‧‧共享快取單元
508‧‧‧整合圖形邏輯
510‧‧‧系統代理單元
512‧‧‧互連單元
514‧‧‧整合記憶體控制器單元
516‧‧‧匯流排控制器單元
600‧‧‧系統
610‧‧‧處理器
615‧‧‧處理器
620‧‧‧圖形記憶體控制器集線器
640‧‧‧記憶體
645‧‧‧顯示器
660‧‧‧外部圖形裝置
670‧‧‧週邊裝置
695‧‧‧前端匯流排
700‧‧‧多處理器系統
714‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤及/或滑鼠
724‧‧‧聲頻I/O
727‧‧‧通訊裝置
728‧‧‧儲存單元
730‧‧‧資料
732、734‧‧‧記憶體
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
750‧‧‧點對點互連
770‧‧‧第一處理器
772‧‧‧整合記憶體控制器單元
776、778‧‧‧點對點介面
780‧‧‧第二處理器
782‧‧‧整合記憶體控制器單元
786、788‧‧‧點對點介面
790‧‧‧晶片組
794、798‧‧‧點對點介面電路
796‧‧‧介面
800‧‧‧系統
814‧‧‧I/O裝置
815‧‧‧舊有I/O裝置
832、834‧‧‧記憶體
870‧‧‧處理器
872‧‧‧控制邏輯
880‧‧‧處理器
882‧‧‧控制邏輯
890‧‧‧晶片組
900‧‧‧單晶片系統
902‧‧‧互連單元
910‧‧‧應用處理器
920‧‧‧媒體處理器
924‧‧‧影像處理器
926‧‧‧聲頻處理器
928‧‧‧視訊處理器
930‧‧‧靜態隨機存取記憶體單元
932‧‧‧直接記憶體存取單元
940‧‧‧顯示器單元
1000‧‧‧處理器
1005‧‧‧CPU
1010‧‧‧GPU
1015‧‧‧影像處理器
1020‧‧‧視訊處理器
102‧‧‧5USB控制器
1030‧‧‧UART控制器
1035‧‧‧SPI/SDIO控制器
1040‧‧‧顯示裝置
1045‧‧‧HDMI控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧DDR控制器
1065‧‧‧安全引擎
1070‧‧‧I2S/I2C介面
1110‧‧‧硬體模型
1120‧‧‧模擬軟體
1130‧‧‧儲存器
1140‧‧‧記憶體
1150‧‧‧有線連接
1160‧‧‧無線連接
1205‧‧‧程式
1210‧‧‧仿真邏輯
1215‧‧‧處理器
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進制碼
1308‧‧‧替代的指令集編譯器
1310‧‧‧替代的指令集二進制碼
1312‧‧‧指令轉換器
1314‧‧‧沒有至少一個x86指令 集核心的處理器
1316‧‧‧帶有至少一個x86指令 集核心的處理器
1401‧‧‧設備
1410‧‧‧原始資料
1415‧‧‧初始排列
1420‧‧‧經排列的原始資料
1420L‧‧‧左部分
1420R‧‧‧右部分
1421‧‧‧處理方塊
1430‧‧‧金鑰運算元
1440‧‧‧功能方塊F
1441‧‧‧功能方塊E
1443‧‧‧XOR邏輯
1445‧‧‧選擇功能
1447‧‧‧功能方塊P
1449‧‧‧XOR邏輯
1450‧‧‧預輸出
1450L‧‧‧新的左部分
1450R‧‧‧新的右部分
1452L、1452R‧‧‧旁路
1455‧‧‧反向初始排列
1460‧‧‧經編密的輸出資料
1461‧‧‧處理方塊
1501‧‧‧設備
1510‧‧‧原始資料
1515‧‧‧初始排列
1520‧‧‧經排列的原始資料
1520L‧‧‧左部分
1520R‧‧‧右部分
1521‧‧‧處理方塊
1530‧‧‧金鑰運算元
1540‧‧‧功能方塊F
1541‧‧‧功能方塊E
1543‧‧‧XOR邏輯
1545‧‧‧選擇功能
1547‧‧‧功能方塊P
1549‧‧‧XOR邏輯
1550‧‧‧預輸出
1550L‧‧‧新的左部分
1550R‧‧‧新的右部分
1551‧‧‧信號Last
1552L、1552R‧‧‧旁路
1553L‧‧‧左MUX
1553R‧‧‧右MUX
1555‧‧‧反向初始排列
1560‧‧‧經編密的輸出資料
1561‧‧‧處理方塊
1601‧‧‧程序
1610~1660‧‧‧處理方塊
1701‧‧‧程序
1710~1760‧‧‧處理方塊
本發明係由範例的方式來例示說明,且並非限制於所附圖式的圖中。
圖1A為執行指令以提供安全密碼雜湊循環功能的一系統的一個實施例的方塊圖。
圖1B為執行指令以提供安全密碼雜湊循環功能的一系統的另一實施例的方塊圖。
圖1C為執行指令以提供安全密碼雜湊循環功能的一系統的另一實施例的方塊圖。
圖2為執行指令以提供安全密碼雜湊循環功能的一處理器的一個實施例的方塊圖。
圖3A根據一個實施例來例示說明緊縮資料類型。
圖3B根據一個實施例來例示說明緊縮資料類型。
圖3C根據一個實施例來例示說明緊縮資料類型。
圖3D根據一個實施例來例示說明一指令編碼以提供安全密碼雜湊循環功能。
圖3E根據另一實施例來例示說明一指令編碼以提供安全密碼雜湊循環功能。
圖3F根據另一實施例來例示說明一指令編碼以提供安全密碼雜湊循環功能。
圖3G根據另一實施例來例示說明一指令編碼以提供安全密碼雜湊循環功能。
圖3H根據另一實施例來例示說明一指令編碼以提供安全密碼雜湊循環功能。
圖4A例示說明用以執行提供安全密碼雜湊循環功能之指令的一處理器微架構的一個實施例的元件。
圖4B例示說明用以執行提供安全密碼雜湊循環功能之指令的一處理器微架構的另一實施例的元件。
圖5為用以執行提供安全密碼雜湊循環功能之指令的 一處理器的一個實施例的方塊圖。
圖6為用以執行提供安全密碼雜湊循環功能之指令的一電腦系統的一個實施例的方塊圖。
圖7為用以執行提供安全密碼雜湊循環功能之指令的一電腦系統的另一實施例的方塊圖。
圖8為用以執行提供安全密碼雜湊循環功能之指令的一電腦系統的另一實施例的方塊圖。
圖9為用以執行提供安全密碼雜湊循環功能之指令的一單晶片系統的一個實施例的方塊圖。
圖10為用以執行提供安全密碼雜湊循環功能之指令的一處理器的一個實施例的方塊圖。
圖11為提供SIMD安全雜湊循環截割(slice)功能的一IP核心發展系統的一個實施例的方塊圖。
圖12例示說明提供SIMD安全雜湊循環截割功能的一架構仿真系統的一個實施例。
圖13例示說明用以翻譯提供安全雜湊循環功能之指令的一系統的一個實施例。
圖14例示說明關於用於一指令之執行的一設備的一個實施例的圖,該指令用以提供安全密碼雜湊循環功能。
圖15例示說明關於用於一指令之執行的一設備的一替代實施例的圖,該指令用以提供安全密碼雜湊循環功能。
圖16例示說明關於用以提供安全密碼雜湊循環功能的程序的一實施例的流程圖。
圖17例示說明關於用以提供安全密碼雜湊循環功能的 程序的另一實施例的流程圖。
較佳實施例之詳細說明
下列敘述揭露用以提供安全密碼雜湊演算法循環功能之指令及處理邏輯。某些實施例包括一處理器,其包含:一解碼(decode)階段,用以解碼用於安全密碼雜湊演算法的一指令,該第一指令規定一原始資料、及一或多個金鑰運算元(key operand)。處理器執行單元係響應經解碼的指令,使用該等一或多個金鑰運算元對該原始資料實行一或多個安全密碼雜湊演算法循環疊代,並且將該指令的一結果儲存於一目的地暫存器中。該指令的一個實施例規定使用例如DES(資料加密標準)或TDES(三重DES)之Feistel密碼演算法的一安全密碼雜湊演算法循環疊代。替代實施例可使用其他密碼演算法,舉例來說,例如:Blowfish演算法、SAFER(安全及快速加密常式)、K-64、CAST5(由Carlisle Adams及Stafford Tavares提出)、FEAL(快速資料編密演算法)、等等。於一個實施例中,該指令的一結果可被使用於從對於橫跨該組處理資源的負載平衡請求的一請求來產生一資源指派。某些實施例可規定(例如,於一立即運算元之中)用於實行該安全密碼雜湊演算法之循環次數的範圍。舉例來說,於一個實施例中,於一立即位元組運算元之中的0x0F的十六進位範圍可指示該指令係用以實行一密碼雜湊演算法的所有十六(16)次疊代,而於一立即位元組運算元之中的0xFF的十六進位範圍可指示該指令係用以實行僅一個 循環的十六(16)次疊代,或者於一立即位元組運算元之中的0xF8的十六進位範圍可指示該指令係用以實行密碼雜湊演算法的解密模式中的循環十六(16)至循環九(9)的該等疊代。將可察知的是,與單向雜湊演算法相比,利用一密碼作為雜湊演算法的一個意想不到的好處是其為可逆的,可幫助用於負載平衡的金鑰之設計,當允許插入新的金鑰來阻撓一攻擊(例如,諸如阻斷服務攻擊)時提供所欲的特性(例如,持續及/或一致的雜湊)。實行僅一特定數量之該密碼的疊代作為雜湊演算法之另一意想不到的好處是,不同組的金鑰可被使用於循環疊代每一循環或循環疊代的每一範圍,為不可能使用一標準子鍵排程的密碼結果準備。
將可察知的是,如於此所敘述的實施例中,用以利用安全密碼雜湊演算法的指令可被用於在應用系統中提供安全雜湊功能,例如在用於提供負載平衡分佈、及/或阻斷服務攻擊的防禦、等等的那些應用系統之中,而沒有需要過度複雜的計算或不能接受的延遲,但仍考慮到適當選定的調整以阻撓攻擊,且在過程中更沒有減少所欲的服務品質。
於下列敘述中,例如處理邏輯、處理器類型、微架構條件、事件、賦能機制、及類似的許多特定細節被提出,以為了提供對本發明的實施例更徹底的了解。然而,熟此技藝者將可察知的是,本發明可在沒有此類特定細節的情況下被實踐。此外,某些熟知的結構、電路、及類似並未被詳細示出,以避免不必要地模糊了本發明的實施 例。
儘管下面的實施例係參考一處理器來敘述,其他實施例可應用於其他類型的積體電路及邏輯裝置。本發明的實施例的相似技術及教示可被應用於其他類型的電路或半導體裝置,其等可自較高的管線通量(throughput)及改善的效能中得益。本發明的實施例的該等教示可應用於實行資料調處的任何處理器或機器。然而,本發明並非被限制於實行512位元、256位元、128位元、64位元、32位元、或16位元資料處理的處理器或機器,並且可被應用於於其中實行資料調處或管理的任何處理器或機器。此外,下面的敘述提供範例,並且該等所附圖式顯示為了例示說明之目的的各種範例。然而,此等範例不應被理解為限制性的意思,因為其等僅意欲於提供本發明的實施例之範例,而非提供本發明的實施例的所有可能實施的詳盡清單。
儘管下面的範例敘述執行單元與邏輯電路的內容中的指令處置與分佈,本發明的其他實施例可以儲存於機器可讀有形媒體上的資料及/或指令的方式來實現,該等資料及/或指令當被一機器實行時,會致使該機器實行與本發明的至少一個實施例一致的功能。於一個實施例中,與本發明的實施例相關聯的功能係被體現為機器可執行指令。該等指令可被用以致使以該等指令來程控的一通用或特別用途處理器實行本發明的該等步驟。本發明的實施例可被提供如包括機器或電腦可讀媒體的一電腦程式產品或軟體,該機器或電腦可讀媒體具有儲存於其上的指令,該等指令 可被使用於程控一電腦(或其他電子裝置)以實行根據本發明的實施例的一或多個操作。替代地,本發明的實施例的步驟可由含有用於實行該等步驟的固定功能邏輯之特定硬體組件來實行,或者由程控電腦組件及固定功能硬體組件的任何組合來實行。
使用於程控邏輯以實行本發明的實施例之指令可被儲存於該系統的一記憶體之中,例如DRAM、快取、快閃記憶體、或其他儲存器。再者,該等指令可憑藉網路或者以其他電腦可讀媒體的方式來分佈。因此,一機器可讀媒體可包括用於以可由一機器(例如,電腦)讀取之型式來儲存或發送資訊的任何機制,但不限於軟式磁片、光碟、光碟唯讀記憶體(CD-ROMs)、及磁光碟、唯讀記憶體(ROMs)、隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、電子可抹除可程式化唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體、或者使用於透過網際網路而憑藉電性、光學、聲響、或其他形式的傳播信號(例如,載波、紅外線信號、數位信號、等等)來傳送資訊的有形機器可讀儲存器。於是,該電腦可讀媒體包括適合用於以可由一機器(例如,電腦)讀取之型式來儲存或發送電子指令或資訊之任何類型的有形機器可讀媒體。
一個設計可經過各種不同階段,從創造到模擬到製造。表示一個設計的資料可用若干方式來表示該設計。首先,如同在模擬中有用的,可使用硬體描述語言或另一個功能描述語言來表示該硬體。此外,於該設計過程的一 些階段中可產出有邏輯及/或電晶體閘的一電路層次模型。再者,於一些階段,大部份的設計達到一資料層次,其表示該硬體模型中的各種裝置的實體布局。在使用傳統的半導體製造技術的實例中,表示該硬體模型的資料可為規定不同遮罩層上關於使用來產出該積體電路的遮罩的各種特徵存在或不存在之資料。於該設計的任何表示法中,該資料可儲存於任何形式的機器可讀媒體之中。一記憶體或者例如磁碟的一磁性或光學儲存器可為用以儲存資訊的該機器可讀媒體,該資訊憑藉被調變或以其他方式產生以傳送此類資訊的光學或電性波來傳送。當指示或攜載該碼或設計的一電性載波被傳送至實行信號複製、緩衝、或重傳的一延伸區時,係做成一個新的複本。因此,一通訊提供者或一網路提供者可至少暫時地在一有形機器可讀媒體上,儲存體現本發明的實施例之技術的一物,例如被編碼至一載波之中的資訊。
於現代處理器中,若干不同的執行單元係被使用於處理並執行各種碼及指令。並非所有指令皆是被產生為相同的,一些較快完成,然而其他的可花費若干時鐘週期才完成。指令通量越快速,則處理器的整體效能越佳。因此,具有越多的指令盡可能快速執行將是有益的。然而,有某些指令具有更大的複雜度,且在執行時間及處理器資源方面需要的更多。舉例來說,浮點指令、載入/儲存操作、資料移動、等等。
當越多的電腦系統被使用於網際網路、文字、及 多媒體應用時,隨著時間而採用額外的處理器支援。於一個實施例中,一指令集可與一或多個電腦架構相關,包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷與異常處置、以及外部輸入及輸出(I/O)。
於一個實施例中,該指令集架構(ISA)可藉由一或多個微架構來實施,該等微架構包括用於實施一或多個指令集的處理器邏輯及電路。於是,有不同微架構的處理器可共享一共用指令集的至少一部份。舉例來說,Intel® Pentium 4處理器、Intel® CoreTM處理器、以及來自Sunnyvale CA的超微半導體公司(AMD,Inc.)的處理器實施近乎相同版本的x86指令集(帶有一些已被加入較新版本的延伸),但具有不同的內部設計。同樣地,由例如ARM有限公司(ARM Holdings,Ltd.)、MIPS、或其等之被授權者或採用者的其他處理器開發公司所設計的處理器可共享至少一部份一共用指令集,但可包括不同的處理器設計。舉例來說,ISA的相同暫存器架構可用不同的方式以不同的微架構使用新的或熟知的技術來實施,包括專屬實體暫存器、使用暫存器重新命名機制(例如,使用暫存器別名表(RAT))的一或多個動態分配實體暫存器、一重排序緩衝器(ROB)、以及引退暫存器(retirement register)檔案。於一個實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案、或其他暫存器集,其等可以或不能由一軟體程式器定址。
於一個實施例中,一指令可包括一或多個指令格式。於一個實施例中,一指令格式可指示各種欄位(位元數 量、位元位置、等等),以於其他事情之間規定將被實行的運算以及將對其實行該運算的運算元。一些指令格式可進一步由指令模板(或子格式)間斷界定。舉例來說,一既定指令格式的該等指令模板可被界定為具有該等指令格式的欄位的不同子集,及/或界定為具有不同解釋的一既定欄位。於一個實施例中,一指令係使用一指令格式來陳述(且,若有界定,則以該指令格式的該等指令模板的既定一者來陳述),並且規定或指示該運算與將對其操作該運算的運算元。
科學的、金融的、自動向量化一般用途、RMS(辨識、挖掘、合成)、以及視覺與多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法、及聲頻調處)會需要對大量的資料項執行相同的運算。於一個實施例中,單一指令多重資料(SIMD)參照為致使一處理器於多重資料元件實行一運算的指令類型。SIMD技術可被使用於能夠將一暫存器中的該等位元邏輯劃分為若干固定大小或可變大小的資料元件之處理器,該等資料元件中的每一者表示一分離值。舉例來說,於一個實施例中,於64位元暫存器中的該等位元可被組織為含有四個分離16位元資料元件的一來源運算元,該等四個分離16位元資料元件之每一者表示一分離的16位元值。此類型的資料可被參照為”緊縮”資料類型或”向量”資料類型,且此資料類型的運算元係參照為緊縮資料運算元或向量運算元。於一個實施例中,一緊縮資料項或向量可為儲存於一單一暫存器之中的一序 列的緊縮資料元件,且一緊縮資料運算元或一向量運算元可一SMID指令(或’緊縮資料指令’或者’向量指令’)的一來源或目的地運算元。於一個實施例中,一SIMD指令規定一單一向量運算,於兩個來源向量運算元實行以產生相同或不同大小的一目的向量運算元(亦參照為結果向量運算元),有相同或不同數量的資料元件,並且為相同或不同的資料元件順序。
例如由具有包括x86、MMXTM、資料流SIMD延伸(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令的指令集之Intel® CoreTM處理器,例如具有包括向量浮點(VFP)及/或NEON指令的指令集之ARM Cortex®處理器系列的ARM處理器,以及例如由中國科學院計算技術研究所(ICT)開發的龍芯(Loongson)處理器系列之MIPS處理器所利用的技術,SIMD技術已經被賦予能夠在應用性能方面的顯著改善(CoreTM及MMXTM為註冊商標或者美國加州聖塔克拉拉的英特爾公司(Intel Corporation)的商標)。
於一個實施例中,目的與來源暫存器/資料為同屬的用語,用以表示對應資料或運算的來源及目的。於一些實施例中,它們可由暫存器、記憶體、或具有除了那些描述之外的其他名稱或功能的其他儲存區來實施。舉例來說,於一個實施例中,”DEST1”可為一暫時儲存暫存器或者其他儲存區,而”SRC1”與”SRC2”可為第一與第二來源儲存暫存器或者其他儲存區,等等。於其他實施例中,兩個或更多個的SRC與DEST儲存區可對應相同儲存區(例如, SIMD暫存器)之中的不同資料儲存元件。於一個實施例中,該等來源暫存器中之一者亦可作為一目的地暫存器,舉例來說,藉由將對該第一與第二原始資料實行之運算的結果寫回至該等兩個來源暫存器中當作目的地暫存器的一者。
圖1A為以一處理器形成的一範例電腦系統的方塊圖,該處理器包括用以依照本發明的一個實施例來執行一指令的執行單元。系統100包括例如處理器102的一組件,用以利用包括邏輯的執行單元依照本發明來實行用於處理資料的演算法,例如於此處所敘述之實施例中。系統100為基於可得自美國加州聖塔克拉拉的英特爾公司的PENTIUM® III、PENTIUM® 4、XeonTM、Itanium®、XScaleTM、及/或StrongARMTM微處理器的處理系統的代表,儘管亦可使用其他系統(包括具有其他微處理器的PCs、工程工作站、機上盒、及相似系統)。於一個實施例中,樣本系統100可執行可得自華盛頓州雷德蒙德的微軟股份有限公司的WINDOWSTM作業系統,儘管亦可使用其他作業系統(舉例來說,UNIX及Linux)、內建軟體、及/或圖形使用者界面。因此,本發明的實施例並不限於硬體電路及軟體的特定組合。
實施例並不限於電腦系統。本發明的替代實施例可被使用於其他裝置,例如手持裝置及嵌式應用系統。手持裝置的一些範例包括行動電話、網際網路協定裝置、數位相機、個人數位助理(PDAs)、以及手持PCs。嵌式應用系統可包括一微控制器、一數位信號處理器(DSP)、單晶片系 統、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換機、或能夠依照至少一個實施例實行一或多個指令的其他系統。
圖1A為以一處理器102形成的一電腦系統100的方塊圖,該處理器102包括用以依照本發明的一個實施例實行一演算法來實行至少一個指令的一或多個執行單元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的替代實施例亦可被使用於微控制器、嵌式處理器、圖形裝置、DSPs、及其他類型的邏輯電路之中。系統100包括一記憶體120。記憶體120可為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、或其他記憶體裝置。記憶體120可儲存藉由可被該處理器102執行的資料信號來表示的指令及/或資料。
一系統邏輯晶片116係耦接至該處理器匯流排110及記憶體120。於例示說明的實施例中的該系統邏輯晶片116為一記憶體控制器集線器(MCH)。該處理器102可經由一處理器匯流排110而通訊至該MCH 116。該MCH 116提供一高頻寬記憶體路徑118至記憶體120,用於指令及資料 儲存以及用於圖形命令、資料與紋理的儲存。該MCH 116係用以於該處理器102、記憶體120、以及該系統100中的其他組件之間指向資料信號,並且用以於處理器匯流排110、記憶體120、以及系統I/O 122之間橋接該等資料信號。於一些實施例中,該系統邏輯晶片116可提供用於耦接至一圖形控制器112的一圖形埠。該MCH 116係透過一記憶體介面118耦接至記憶體120。該圖形卡112係透過一加速圖形埠(AGP)互連114偶合至該MCH 116。
系統100使用一專屬集線器介面匯流排122,用以將該MCH 116耦接至該I/O控制器集線器(ICH)130。該ICH 130憑藉一區域I/O匯流排來提供直接連接至一些I/O裝置。該區域I/O匯流排為用於將週邊設備連接至該等記憶體120、晶片組、及處理器102的一高速I/O匯流排。一些範例為聲頻控制器、韌體集線器(快閃BIOS)128、無線收發器126、資料儲存器124、包含使用者輸入與鍵盤介面的舊有I/O控制器、例如通用串列匯流排(USB)的串列擴充埠、以及網路控制器134。該資料儲存器裝置124可包含硬式磁碟驅動機、軟式磁碟驅動機、CD-ROM裝置、快閃記憶體裝置、或其他大量儲存器裝置。
對於一系統的另一實施例,依照一個實施例的一指令可與一單晶片系統一起被使用。單晶片系統的一個實施例包含一處理器及一記憶體。對於這樣的一個系統的該記憶體為快閃記憶體。該快閃記憶體設置於與該處理器及其他系統組件相同的晶粒上。此外,例如記憶體控制器或 圖形控制器的其他邏輯方塊亦可設置於一單晶片系統上。
圖1B例示說明一資料處理系統140,其實施本發明的一個實施例的原理。熟此技藝者將可容易察知的是,在沒有背離本發明的實施例之範圍的情況下,於此所敘述的該等實施例可與替代的處理系統一起被使用。
電腦系統140包含一處理核心159,其能夠實行依照一個實施例的至少一個指令。對於一個實施例,處理核心159表示任何類型的架構的處理單元,包括但不限於CISC、RISC或VLIW類型架構。處理核心159亦適合以一或多個製程技術來製造,或者藉由充分詳細地被表示於一機器可讀媒體上可適合用以便於該製造。
處理核心159包含一執行單元142、一組暫存器檔案145、以及一解碼器144。處理核心159亦包括對於了解本發明的實施例為非必要之額外的電路(未顯示)。執行單元142係被使用於執行由處理核心159所接收的指令。除了實行典型的處理器指令之外,執行單元142可實行用於對緊縮資料格式實行運算的緊縮指令集143中之指令。緊縮指令集143包括用於實行本發明的實施例之指令、以及其他緊縮指令。執行單元142藉由一內部匯流排耦接至暫存器檔案145。暫存器檔案145表示處理核心159上用於儲存資訊的一儲存區,包括資料。如先前所提及的,可理解的是,用於儲存該緊縮資料的該儲存區並非關鍵的。執行單元142係耦接至解碼器144。解碼器144被使用於將處理核心159所接收的指令解碼成為控制信號及/或微碼進入點(entry point)。回應此 等控制信號及/或微碼進入點,執行單元142實行適當的運算。於一個實施例中,該解碼器被使用於解釋該指令的運算碼,其將會指示應該於該指令中所指示的對應資料實行什麼運算。
處理核心159與用於和各種其他系統裝置通訊的匯流排141耦接,舉例來說,其他系統裝置可包括但不限於同步動態隨機存取記憶體(SDRAM)控制146、靜態隨機存取記憶體(SRAM)控制147、叢集快閃記憶體介面148、個人電腦記憶卡國際協會(PCMCIA)/CF卡控制149、液晶顯示器(LCD)控制150、直接記憶體存取(DMA)控制器151、以及替代匯流排主控器介面152。於一個實施例中,資料處理系統140亦可包含用於透過一I/O匯流排153而與各種I/O裝置通訊的一I/O橋接器154。舉例來說,此類I/O裝置可包括但不限於通用異步接收/發射器(UART)155、通用串列匯流排(USB)156、藍牙無線UART 157、以及I/O擴充介面158。
資料處理系統140的一個實施例提供行動、網路及/或無線通訊、以及一處理器核心159,其能夠實行包括文字串比對運算的SIMD運算。處理核心159可被程式化有各種聲頻、視訊、成像、及通訊演算法,包括離散轉換,例如沃爾什哈達馬德轉換、快速傅立葉轉換(FFT)、離散餘弦轉換(DCT)、以及其等之各別的反轉換;壓縮/解壓縮技術,例如色空間轉換、視訊編碼運動估計、或視訊解碼運動補償;以及調變/解調(MODEM)功能,例如脈碼調變(PCM)。
圖1C例示說明能夠執行指令以提供安全密碼雜湊循環功能的一資料處理系統的另一替代實施例。依照一個替代實施例,資料處理系統160可包括一主處理器166、一SIMD共處理器161、一快取記憶體167、以及一輸入/輸出系統168。該輸入/輸出系統168可任選地耦接至一無線介面169。SIMD共處理器161能夠實行包括依照一個實施例的指令之運算。處理核心170適合以一或多個製程技術來製造,或者藉由充分詳細地被表示於一機器可讀媒體上,可適合用以便於包括處理核心170的資料處理系統160的全部或部分的製造。
對於一個實施例,SIMD共處理器161包含一執行單元162、以及一組暫存器檔案164。主處理器166的一個實施例包含一解碼器165,用以辨識包括依照一個實施例用於由執行單元162執行的指令之指令集163的指令。對於替代實施例,SIMD共處理器161亦包含至少部分的解碼器165B,用以對指令集163的指令解碼。處理核心170亦包括對於了解本發明的實施例為非必要之額外的電路(未顯示)。
於運算中,該主處理器166執行控制一般類型的資料處理運算的資料處理指令流,一般類型的資料處理運算包括與該快取記憶體167及該輸入/輸出系統168的交互作用。嵌入於該資料處理指令流之中的是SIMD共處理器指令。主處理器166的該解碼器165將此等SIMD共處理器指令辨識為應該由一附加SIMD共處理器161執行的類型。於是,該主處理器166於共處理器匯流排171上發出此等SIMD共 處理器指令(或者表示SIMD共處理器指令的控制信號),其等從該共處理器匯流排171被任何附加的SIMD共處理器所接收。於此實例中,該SIMD共處理器161將接受並執行任何接收到之其所意欲的SIMD共處理器指令。
資料可透過無線介面169所接收,用於由該SIMD共處理器指令所作之處理。對於一個範例,語音通訊可用數位信號的形式來接收,該數位信號可由該SIMD共處理器指令來處理以再生表示該等語音通訊的數位聲頻樣本。對於另一範例,壓縮的聲頻及/或視訊可用數位位元流的形式來接收,該數位位元流可由該SIMD共處理器指令來處理以再生數位聲頻樣本及/或動作視訊框。對於處理核心170的一個實施例,主處理器166以及一SIMD共處理器161係整合至一單一處理核心170之中,該單一處理核心170包含一執行單元162、一組暫存器檔案164、以及用以辨識包括依照一個實施例的指令之指令集163的指令的一解碼器165。
圖2為用於一處理器200的該微架構的一方塊圖,該處理器200包括用以實行依照本發明的一個實施例之指令的邏輯電路。於一些實施例中,依照一個實施例的一指令可被實施以對資料元件進行運算,資料元件具有位元組、字、雙字、四倍字、等等之大小,以及例如單精度與雙倍精度整數及浮點資料類型的資料類型。於一個實施例中,順序(in-order)前端201為該處理器200的一部份,其提取將被執行的指令並且備妥該等指令稍後於處理器管線中使用。該前端201可包括數個單元。於一個實施例,該指令預取器 226從記憶體提取指令,並且將其等饋送至接著對其等解碼或解釋的一指令解碼器228。舉例來說,於一個實施例中,該解碼器將一接收到的指令解碼成為機器可執行之一或多個稱為”微指令”或”微運算”(亦稱為micro op或uops)的運算。於其他實施例中,該解碼器剖析該指令成為一運算碼以及對應的資料和控制欄,其等被該微架構使用來實行依照一個實施例的運算。於一個實施例中,該追蹤快取230取得被解碼的uops,並且將其等組合成為uop佇列234中用於執行之程式有序的序列或軌跡。當該追蹤快取230遭遇一複雜的指令時,該微碼ROM 232提供需要用以完成該運算之該等uops。
一些指令係轉換成為一單一micro-op,而其他則需要數個micro-ops來完成完整的運算。於一個實施例中,若需要超過四個micro-ops來完成一指令,該解碼器228存取該微碼ROM 232來完成該指令。對於一個實施例,一指令可被解碼為少數量的micro ops,用於在該指令解碼器228處理。於另一實施例中,一指令可被儲存於該微碼ROM 232之中,micro-ops的數量應為用以實現該運算所需。該追蹤快取230參照一進入點可程式邏輯陣列(PLA)來判定一正確的微指令指標,用於從該微碼ROM 232讀取該微碼序列以完成依照一個實施例的一或多個指令。於該微碼ROM 232結束對用於一指令的micro-ops定序之後,該機器的該前端201回復從該追蹤快取230提取micro-ops。
該亂序執行引擎203為將該等指令備妥用於執行 之處。該亂序執行邏輯具有若干緩衝器,用以在該等指令順著該管線並且被排程用於執行時,平順並重排序該等指令的流來最佳化效能。該分配器邏輯分配該等機器緩衝器、以及每一uop為了執行而需要的資源。該暫存器重新命名邏輯將邏輯暫存器重新命名至一暫存器檔案中的登錄上。該分配器亦於指令排程器之前,將一登錄分配給一個用於記憶體作業、一個用於非記憶體作業的兩個uop佇列中之一uop佇列中的每一uop,該等指令排程器包括:記憶體排程器、快速排程器202、慢速/一般浮點排程器204、以及簡單浮點排程器206。該等uop排程器202、204、206基於其等之相依輸入暫存器運算元資源的備妥狀態以及該等uops需要用於完成其等運算的該等執行資源的可用性,來判定一uop何時準備好執行。一個實施例的該快速排程器202可在主時鐘週期的每半個週期排程,而其他排程器僅能於每個主時鐘週期排程一次。該等排程器仲裁該等配送埠(dispatch port)來排程uops用於執行。
於執行方塊211中,暫存器檔案208、210位於該等排程器202、204、206與該等執行單元212、214、216、218、220、222、224之間。有一分別用於整數與浮點運算之分開的暫存器檔案208、210。一個實施例的每一暫存器檔案208、210亦包括一旁路網路,其可將剛剛完成而尚未被寫入至該暫存器檔案之中的結果略過或轉送至新的相依uops。該整數暫存器檔案208及該浮點暫存器檔案210亦能夠彼此傳遞資料。對於一個實施例,該整數暫存器檔案208 係分割為兩個分開的暫存器檔案,一個暫存器檔案用於低階32位元資料,一第二暫存器檔案用於高階32位元資料。一個實施例的該浮點暫存器檔案210具有128位元寬的登錄,因為浮點指令典型地具有寬度從64至128位元的運算元。
該執行方塊211含有該等執行單元212、214、216、218、220、222、224,其等為該等指令實際被執行的地方。此節包括該等暫存器檔案208、210,其等儲存該等微指令執行所需要的該等整數與浮點資料運算元值。一個實施例的該處理器200係包含若干執行單元:位址產生單元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮點ALU 222、浮點移動單元224。對於一個實施例,該等浮點執行方塊222、224執行浮點、MMX、SIMD、及SSE、或其他運算。一個實施例的該浮點ALU 222包括64位元乘64位元的浮點除法器,用以執行除法、平方根、以及餘數micro-ops。對於本發明的實施例,牽涉浮點值的指令可用浮點硬體來處置。於一個實施例中,該等ALU運算來到該等高速ALU執行單元216、218。一個實施例的該等快速ALUs 216、218可用一半時鐘週期的有效潛時來執行快速運算。對於一個實施例,由於該慢速ALU 220包括用於長潛時類型之運算的整數執行硬體,大部分的複雜整數運算來到該慢速ALU 220,例如乘數、推移、旗標邏輯、以及分支處理。記憶體載入/儲存作業係由該等AGUs 212、214來執行。對於一個實施例,該等整數ALUs 216、218、220係敘述於對64位元資料運算元實行整數運算的上下文之中。 於替代實施例中,該等整數ALUs 216、218、220可被實施用以支援各種資料位元,包括16、32、128、256、等等。同樣地,該等浮點單元222、224可被實施用以支援一系列之具有各種寬度的位元的運算元。對於一個實施例,該等浮點單元222、224可與SIMD及多媒體指令一起對128位元寬的緊縮資料運算元作運算。
於一個實施例中,在上層負載已經完成執行之前,該等upos排程器202、204、206配送相依的運算。當uops於處理器200中被臆測排程並執行,該處理器200亦包括用以處置記憶體未中(memory miss)的邏輯。若於資料快取中一資料負載未中,於該管線中可以有已經由於暫時性錯誤資料而離開該排程器但飛行中的相依運算。一重播機制追蹤並重新執行使用錯誤資料的指令。僅該等相依運算需要被重播,而獨立的運算被允許完成。一處理器的一個實施例之該等排程器及重播機制亦被設計用於捕捉(catch)提供安全密碼雜湊循環功能的指令。
該用語”暫存器”可參照至機載處理器儲存位置,其等被使用作為用以識別運算元的指令的部分。換言之,暫存器可以是那些從該處理器的外部(從程式設計師的觀點)為可用的。然而,一實施例的該等暫存器在意思上不應被限制於一特定類型的電路。相反地,一實施例的暫存器係能夠儲存並提供資料,並且實行於此所述之功能。於此所述之該等暫存器可使用任何數量的不同技術而由一處理器之中的電路來實施,例如專屬實體暫存器、使用暫存器 重新命名的動態分配實體暫存器、專屬及動態分配實體暫存器之組合、等等。於一個實施例中,整數暫存器儲存三十二位元的整數資料。一個實施例的一暫存器檔案亦含有八個用於緊縮資料的多媒體SIMD暫存器。對於下文的討論,該等暫存器可被理解為設計用來的保持資料的暫存器,例如以美國加州聖塔克拉拉的英特爾公司的MMX技術賦能之微處理器中的64位元寬的MMXTM暫存器(於某些例子中亦參照為”mm”暫存器)。以整數及浮點形式皆為可得的此等MMX暫存器可與伴隨SIMD及SSE指令的緊縮資料元件一起操作。同樣地,有關SSE2、SSE3、SSE4、或更往後的技術(一般參照為”SSEx”)之128位元寬的XMM暫存器亦可被使用於保持此類緊縮資料運算元。於一個實施例中,在儲存緊縮資料與整數資料上,該等暫存器不需要區分該等兩種資料類型。於一個實施例中,整數及浮點係包含於相同的暫存器檔案中,或者於不同的暫存器檔案中。再者,於一個實施例中,浮點及整數資料可被儲存於不同的暫存器中,或者於相同的暫存器中。
於下列圖式的範例中,係敘述若干資料運算元。圖3A根據本發明的一個實施例來例示說明於多媒體暫存器中的各種緊縮資料類型的表示。圖3A例示說明用於128位元寬之運算元的一緊縮位元組310、一緊縮字320、以及一緊縮雙倍字(dword)330的的資料類型。此範例的該緊縮位元組格式310為128位元長,並且含有十六個緊縮位元資料元件。一位元組係被界定為8位元的資料。用於每一位元組資 料元件的資訊,對於位元組0係儲存於位元7至位元0、對於位元組1係儲存於位元15至位元8、對於位元組2係儲存於位元23至位元16、以及最後對於位元組15係儲存於位元120至位元127。因此,所有可用的位元皆被使用於該暫存器之中。此儲存安排增加該處理器的儲存效率。同樣地,隨著十六個資料元件被存取,一個運算現在可被平行實行於十六個資料元件上。
通常,一資料元件係為一個別的資料件,與其他相同長度的資料元件一起儲存於一單一暫存器或記憶體位置之中。與SSEx技術有關的緊縮資料順序中,儲存於一XMM暫存器之中的資料元件的數量為128位元除以一個別資料元件的位元之長度。同樣地,與MMX及SSE技術有關的緊縮資料順序中,儲存於一MMX暫存器之中的資料元件的數量為64位元除以一個別資料元件的位元之長度。儘管圖3A中所例示說明的該等資料類型為128位元長,本發明的實施例亦能夠以64位元寬、256位元寬、512位元寬、或其他尺寸的運算元來操作。此範例的該緊縮字格式320為128位元長,並且含有八個緊縮字資料元件。每一緊縮字含有十六位元的資訊。圖3A的該緊縮雙倍字格式330為128位元長,並且含有四個緊縮雙倍字資料元件。每一緊縮雙倍字資料元件含有三十二位元的資訊。一緊縮四倍字為128位元長,並且含有兩個緊縮四倍字資料元件。
圖3B例示說明替代的暫存器中資料儲存格式。每一緊縮資料可包括一個以上獨立的資料元件。係例示說 明三種緊縮資料格式;緊縮半倍(packed half)341、緊縮單倍(packed single)342、以及緊縮雙倍(packed double)343。緊縮半倍341、緊縮單倍342、以及緊縮雙倍343的一個實施例包含定點(fixed-point)資料元件。對於一替代的實施例,緊縮半倍341、緊縮單倍342、以及緊縮雙倍343中的一或多者可包含浮點資料元件。緊縮半倍341的一個替代實施例為包含八個16位元的資料元件的128位元長。緊縮單倍342的一個實施例為128位元長,並且包含四個32位元的資料元件。緊縮雙倍343的一個實施例為128位元長,並且包含兩個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為具有32位元或更多位元的運算編碼(運算碼)格式360以及暫存器/記憶體運算元定址模式的一個實施例之敘述,該等定址模式符合可在全球資訊網(www)intel.com/products/processor/manuals/上得自美國加州聖塔克拉拉的英特爾公司的”Intel® 64 and IA-32 Intel Architecture Software Developer’s Manual Combined Volumes 2A and 2B:Instruction Set Reference A-Z”中所描述的一運算碼格式的類型。在一個實施例中,及(and)指令可由欄361及362中的一或多者來編碼。每一個指令最多兩個運算元位置可被識別,包括最多兩個來源運算元識別符364及365。對於一個實施例,目的地運算元識別符366與來源運算元識別符364相同,然而於其他實施例中,其等為不同的。對於一替代實施例,目的地運算元識別符366與來源運算元識別符365相同,然而於其他實施例中,他們為不同的。於一個實施例中,該等來源運算元中由來源運算元識別符364及365所識別的一個來源運算元係被該指令的結果重寫, 然而於其他實施例中,識別符364對應一來源暫存器元件,而識別符365對應一目的地暫存器元件。對於一個實施例,運算元識別符364及365可被使用於識別32位元或64位元的來源及目的地運算元。
圖3E為具有四十或更多位元之另一替代的運算編碼(運算碼)格式370的敘述。運算碼格式370符合運算碼格式360,並且包含一任選前置位元組378。根據一個實施例的一指令可由欄378,371及372中的一或多者來編碼。每一個指令最多兩個運算元位置可由來源運算元識別符374和375以及由前置位元組378來識別。對於一個實施例,前置位元組378可被使用於識別32位元或64位元的來源及目的地運算元。對於一個實施例,目的地運算元識別符376與來源運算元識別符374相同,然而於其他實施例中,他們為不同的。對於一替代實施例,目的地運算元識別符376與來源運算元識別符375相同,然而於其他實施例中,他們為不同的。於一個實施例中,一指令係運算於由運算元識別符374與375所識別的該等運算元中的一或多者之上,且由該等運算元識別符374與375所識別的一或多個運算元係由該指令的結果所重寫,然而於其他實施例中,由識別符374與375所識別的運算元係被寫至另一個暫存器中的另一個資料元件。運算碼格式370及360允許暫存器至暫存器、記憶體至暫存器、暫存器經記憶體、暫存器經暫存器、暫存器經立即的、暫存器至記憶體的定址,該定址係部分地由MOD欄363與373以及由任選的標度-指標-基底(scale-index-base)與 替換位元組所規定。
接下來轉到圖3F,於一些替代實施例中,64位元(或128位元、或256位元、或512位元)的單一指令多重資料(SIMD)架構運算可憑藉一共處理器資料處理(CDP)指令來實行。運算編碼(運算碼)格式380描述一個具有CDP運算碼欄382及389的此類CDP指令。對於替代實施例,該類型的CDP指令運算可由欄383、384、387及388中的一或多者來編碼。每一個指令最多三個運算元位置可被識別,包括最多兩個來源運算元識別符385與390以及一個目的地運算元識別符386。共處理器的一個實施例可對8、16、32及64位元的值進行運算。對於一個實施例,一指令可被實行於整數資料元件上。於一些實施例中,一指令可有條件地使用條件欄381來執行。對於一些實施例,原始資料大小可由欄383來編碼。於一些實施例中,零(Z)、負(N)、進位(C)、及溢位(V)檢測可在SIMD欄上完成。對於一些指令,該類型的飽和可由欄384來編碼。
接下來轉到圖3G,為另一替代運算編碼(運算碼)格式397的描述,用以根據另一實施例來提供安全密碼雜湊循環功能,符合可在全球資訊網(www)intel.com/products/processor/manuals/上得自美國加州聖塔克拉拉的英特爾公司的”Intel® Advanced Vector Extensions Programming Reference”中所敘述的運算碼格式的類型。
原始x86指令集係提供用於具有包含在額外位元組中各種格式之位址字節及立即運算元的1位元組運算碼, 該等額外位元組的存在被辨別為第一”運算碼”位元組。此外,有某些被保留作為用於該運算碼之修飾符的位元組值(稱為前置,因為其等必須在該指令之前被替換)。該256個運算碼位元組(包括那些特別的前置值)的原始調色盤(palette)被耗盡時,一單一位元組被專屬作為用於256個運算碼的新集合的逸出(escape)。因新增向量指令(例如,SIMD),產生對於更多運算碼的需求,且即使當透過使用前置來擴展時,該”兩個位元組”運算碼映射亦不足夠。為此,新的指令被新增至額外的映射之中,該等額外的映射使用2個位元組加上一任選前置作為一識別符。
此外,為了促進64位元模式的額外暫存器,於該等前置與該運算碼(以及必須用於判定該運算碼的任何逸出位元組)之間可使用一額外的前置(稱為”REX”)。於一個實施例中,該REX可具有4個”酬載(payload)”位元,以指示64位元模式的額外暫存器之使用。於其他實施例中,其可具有少於或多於4位元。至少一個指令集的一般格式(其一般符合格式360及/或格式370)係同屬地由下列來例示說明:[prefixes][rex]escape[escpae2]opcode modrm(etc.)
運算碼格式397符合運算碼格式370,且包含任選VEX前置位元組391(於一實施例中,以C4 hex開始),用以替換大多數其他通常所使用的指令前置位元組及逸出碼。舉例來說,下列例示說明使用兩欄來編碼一指令的一實施例,當一第二逸出碼出現在該原始指令之中時,或者當該 REX欄之中的額外位元(例如,XB及W欄)需要被使用時,該指令可被使用。於下面所例示說明的實施例中,舊有的逸出係由一新的逸出值來表示,舊有的前置完全壓縮為該”酬載”位元組的一部份,舊有的前置係被收回並且對於將來的擴展為可用的,該第二逸出碼被壓縮至一”映射”欄之中,有將來的映射或可用的特徵空間,且新增新的特徵(例如,增加的向量長度以及額外的來源暫存器說明符)。
根據一個實施例的一指令可由欄391及392中的一或多者來編碼。每一個指令最多四個運算元位置可由欄391與來源運算元識別符374及375組合,以及與一任選的標度-指標-基底(SIB)識別符393、一任選的替換識別符394和一任選的立即位元組395組合來識別。對於一個實施例,VEX前置位元組391可被使用於識別32位元或64位元的來源與目的地運算元及/或128位元或256位元的SIMD暫存器或記憶體運算元。對於一個實施例,運算碼格式397所提供的功能與運算碼格式370相比為冗餘的,然而於其他實施例中,其等為不同的。運算碼格式370與397允許暫存器至暫存器、記憶體至暫存器、暫存器經記憶體、暫存器經暫存器、暫存器經立即的、暫存器至記憶體的定址,該定址係部分地由MOD欄373以及由任選的(SIB)識別符393、一任選 的替換識別符394、和一任選的立即位元組395所規定。
接下來轉到圖3H為另一替代的運算編碼(運算碼)格式398的描述,用以根據另一實施例來提供安全密碼雜湊循環功能。運算碼格式398符合運算碼格式370及397,並且包含任選的EVEX前置位元組396(於一實施例中,以62 hex開始),用以替換大多數其他通常所使用的舊有指令前置位元組及逸出碼並且提供額外的功能。根據一個實施例的一指令可由欄396及392中的一或多者來編碼。每一個指令最多四個運算元位置以及一遮罩可由欄396與來源運算元識別符374及375組合,以及與一任選的標度-指標-基底(SIB)識別符393、一任選的替換識別符394和一任選的立即位元組395組合來識別。對於一個實施例,EVEX前置位元組396可被使用於識別32位元或64位元的來源及目的地運算元及/或128位元、256位元或512位元的SIMD暫存器或記憶體運算元。對於一個實施例,運算碼格式398所提供的功能與運算碼格式370或397相比為冗餘的,然而於其他實施例中,其等為不同的。運算碼格式398允許暫存器至暫存器、記憶體至暫存器、暫存器經記憶體、暫存器經暫存器、暫存器經立即的、暫存器至記憶體的定址,帶有遮罩,該定址係部分地由MOD欄373以及由任選的(SIB)識別符393、一任選的替換識別符394、和一任選的立即位元組395所規定。至少一個指令集的一般格式(其一般符合格式360及/或格式370)係同屬地由下列來例示說明:evex1 RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm]
對於一個實施例,根據EVEX格式398來編碼的一指令可具有額外的”酬載”位元,其等可被使用於提供帶有額外新特徵的安全密碼雜湊循環功能,舉例來說,該等新特徵例如使用者可組態遮罩暫存器、或額外的運算元、或從128位元、256位元或512位元向量暫存器之間的選擇、或從中選擇的更多暫存器、等等。
舉例來說,於VEX格式397可被使用於提供帶有隱含的遮罩之安全密碼雜湊循環功能之處,該EVEC格式398可被使用於提供帶有外顯的使用者可組態遮罩之安全密碼雜湊循環功能。此外,於VEX格式397可被使用於提供128位元或256位元的向量暫存器上的安全密碼雜湊循環功能之處,該EVEC格式398可被使用於提供128位元、256位元、512位元或更大(更小)的向量暫存器上的安全密碼雜湊循環功能。
用以提供安全密碼雜湊循環功能的範例指令係由下列範例來例示說明:
將可察知的是,如同上述範例中,用於利用一安全密碼雜湊演算法的指令可被使用於在例如那些提供負載平衡分佈、及/或對抗阻斷服務攻擊之防禦、等等的應用程式中,提供安全密碼雜湊循環功能,而無需過度的計算的複雜性或不可接受的延遲,但仍允許精選的調整以阻撓攻擊,且仍然沒有減少所欲之進行中的服務品質。一些實施 例可規定(例如,於一立即運算元之中)用於實行該安全密碼雜湊演算法的循環數量的範圍。舉例來說,於一個實施例中,立即位元組運算元之中的0x0F的十六進位範圍可指示該指令係用以實行一密碼雜湊演算法的所有十六(16)次疊代,而立即位元組運算元之中的0xFF的十六進位範圍可指示該指令係用以實行僅僅一個循環的十六(16)次疊代,或者於一立即位元組運算元之中的0xF8的十六進位範圍可指示該指令係用以實行密碼雜湊演算法的解密模式中的循環十六(16)至循環九(9)的該等疊代。將可察知的是,與單向雜湊演算法相比,利用一密碼作為雜湊演算法的一個意想不到的好處是其為可逆的,可幫助用於負載平衡的金鑰之設計,當允許插入新的金鑰來阻撓一攻擊(例如,諸如阻斷服務攻擊)時提供所欲的特性(例如,持續及/或一致的雜湊)。實行僅一特定數量之該密碼的疊代作為雜湊演算法之另一意想不到的好處是,不同組的金鑰可被使用於循環疊代每一循環或循環疊代的每一範圍,為不可能使用一標準子鍵排程的密碼結果準備。
亦可察知的是,提供僅實行該雜湊循環的指定次數的疊代之安全密碼雜湊循環指令,可致使該雜湊演算法能夠於一處理器管線中與其他處理並行執行,例如金鑰的預處理、以及從預定金鑰的一專屬集合中選擇一或多個金鑰以阻撓攻擊。亦即,在雜湊循環的單一疊代可具有三個週期(cycle)的管線潛伏之處(例如,每一循環3週期),藉由將結果略過回到該管線,兩次疊代可具有僅僅四個週期的 潛伏(例如,每一循環2週期),四次疊代可具有僅僅六個週期的潛伏(例如,每一循環1.5週期),而五次疊代可具有僅僅七個週期的潛伏(例如,每一循環1.4週期)。於四、六或七個週期的此等管線潛伏的期間,其他可使用的處理可與該安全密碼雜湊平行或並行地實行。因此,提供用於安全密碼雜湊演算法循環(其具有若干疊代(例如二、四或五次疊代)但少於該密碼演算法的循環疊代總數)之指令,允許其他指令於一超純量執行管線及/或一亂序處理器管線中並行執行,藉此顯著地改善處理通量並將縮放頻率(scaling of frequency)利用於與通用處理器相關的製程改善。
圖4A為例示說明根據本發明的至少一個實施例之順序管線,以及暫存器重新命名階段、亂序發出/執行管線的一方塊圖。圖4B為例示說明根據本發明的至少一個實施例之順序架構核心,以及暫存器重新命名邏輯、包括於一處理器中的亂序發出/執行邏輯的一方塊圖。圖4A中的實線框例示說明該順序管線,而虛線框例示說明該暫存器重新命名、亂序發出/執行管線。同樣地,圖4B中的實線框例示說明該順序架構邏輯,而虛線框例示說明該等暫存器重新命名邏輯以及亂序發出/執行邏輯。
於圖4A中,一處理器管線400包括一提取階段402、一長度解碼階段404、一解碼階段406、一分配階段408、一重新命名階段410、一排程(亦稱為調度或發出)階段412、一暫存器讀取/記憶體讀取階段414、一執行階段416、一寫回/記憶體寫入階段418、一異常處置階段422、以及一確定 (commit)階段424。
於圖4B中,箭頭代表二或單元更多個之間的耦接,且箭頭的方向指示此等單元之間的資料流的方向。圖4B顯示一處理器核心490包括耦接至一執行引擎單元450的一前端單元430,且兩者皆耦接至一記憶體單元470。
該核心490可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或者併合或替代核心類型。又另一種選擇,該核心490可為特別用途核心,舉例來說,例如網路或通訊核心、壓縮引擎、圖形核心、或相似核心。
該前端單元430包括耦接至一指令快取單元434的一分支預測單元432,該指令快取單元434耦接至一指令轉換搜索緩衝器(TLB)436,該指令TLB 436耦接至一指令提取單元438,該指令提取單元438耦接至一解碼單元440。該解碼單元或解碼器可解碼指令,並且產生作為輸出的一或多個微運算、微碼進入點、微指令、其他指令、或其他控制信號,其等係解碼自該等原始指令、或以其他方式反映該等原始指令、或自該等原始指令導出。可使用各種不同的機制來實施該解碼器。適合的機制的範例包括,但不限於,查找表、硬體實施、可程式邏輯陣列(PLAs)、微碼唯讀記憶體(ROMs)、等等。該指令快取單元434係進一步耦接至該記憶體單元470的2階(L2)快取單元476。該解碼單元440係耦接至該執行引擎單元450中的重新命名/分配器單元452。
該執行引擎單元450包括該重新命名/分配器單元452,其耦接至一引退單元454及一或多個排程器單元456的一集合。該(等)排程器單元456表示任何數量的不同排程器,包括保留站、中央指令窗、等等。該(等)排程器單元456係耦接至該(等)實體暫存器檔案單元458。該等實體暫存器檔案單元458的每一者表示一或多個實體暫存器檔案,該等實體暫存器檔案的不同檔案儲存一或多個不同的資料類型(例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、等等)、狀態(例如,為下一個將被執行的指令的位址的一指令指標)、等等。該(等)實體暫存器檔案單元458被該引退單元454重疊,以例示說明實施暫存器重新命名與亂序執行的各種方式(例如,使用重排序緩衝器及引退暫存器檔案,使用未來檔案、歷史緩衝器、及引退暫存器檔案;使用暫存器映射及暫存器池;等等)。一般,該等架構暫存器從該處理器的外部或從程式設計師的觀點而言為可見的。該等暫存器並非限制於任何已知的特定類型的電路。各種不同類型的暫存器是適合的,只要其等能夠儲存並提供於此所述之資料。適合的暫存器的範例包括,但不限於,專屬實體暫存器、使用暫存器重新命名的動態分配實體暫存器、專屬及動態分配實體暫存器的組合、等等。該引退單元454及該(等)實體暫存器檔案單元458係耦接至該(等)執行叢集460。該(等)執行叢集460包括一或多個執行單元462的一集合、以及一或多個記憶體存取單元464的一集合。該等執行單元462可實行各種運算(例如,移位、加 法、減法、乘法)並且對於各種類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。儘管一些實施例可包括專屬於特定函數或函數集的若干執行單元,其他實施例可包括僅一個執行單元、或多個皆執行全部函數的執行單元。該(等)排程單元456、實體暫存器檔案單元458、以及執行叢集460係顯示為可能是複數,因某些實施例建立分離的管線用於某些類型的資料/運算(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其等各自具有它們自己的排程單元、實體暫存器檔案單元、及/或執行叢集,且在分離的記憶體存取管線的例子中,某些實施例係實施為此管線的該執行叢集具有該(等)記憶體存取單元464)。應亦可理解的是,使用分離的管線之處,此等管線中的一或多者可唯亂序發出/執行,且剩下的為順序。
記憶體存取單元464的該集合係耦接至該記憶體單元470,其包括耦接至一資料快取單元474的一資料TLB單元472,該資料快取單元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指令集(帶有一些已被加入較新版本的延伸);美國加州森尼韋爾的MIPS科技公司(MIPS Technologies)的MIPS指令集;美國加州森尼韋爾的ARM公司(ARM Holdings)的ARM指令集(帶有選性的額外延伸,例如NEON))。
應可理解的是,該核心可支援多執行緒(執行運算或執行緒的二或更多個平行集合),並且可以各種方式來支援,包括時間片段多執行緒、同時多執行緒(一單一實體核心提供一邏輯核心,用於實體核心正同時多線的該等執行緒之每一者)、或其等之組合(例如,時間片段提取及解碼並且在之後同時多執行緒,例如以Intel®超執行緒技術)。
儘管暫存器重新命名係敘述於亂序執行的上下文中,應可理解的是,暫存器重新命名可使用於順序架構中。儘管例示說明之該處理器的實施例亦包括分離的指令 與資料快取單元434/474以及一共享L2快取單元476,替代的實施例可具有用於指令及資料兩者的一單一內部快取,舉例來說,例如一1階(L1)內部快取、或多階的內部快取。於一些實施例中,該系統可包括一內部快取與該核心及/或該處理器外部的一外部快取的一組合。替代地,全部的快取可為該核心及/或該處理器外部。
圖5為根據本發明的實施例之一單一核心處理器以及有整合記憶體控制器與圖形的一多核心處理器500的一方塊圖。圖5中的該等實線框例示說明有一單一核心502A、一系統代理510、一或多個匯流排控制器單元516的一集合的一處理器500,而該等虛線框的選擇性增加例示說明有多個核心502A-N、該系統代理單元510中的一或多個整合記憶體控制器單元514的一集合、以及一整合圖形邏輯508的一替代的處理器500。
該記憶體階層包括該等核心中的一或多階快取、一組或一個或多個共享快取單元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的兩者或更多者可以能夠執行相同的指令集,而其他可以能夠執行該指令集的一子集或一不同的指令集。
該處理器可為一通用處理器,例如CoreTMi3、i5、i7、2 Duo以及Quad、XeonTM、ItaniumTM、XScaleTM、或者StrongARMTM處理器,其等可得自美國加州聖塔克拉拉的英特爾公司。替代地,該處理器可來自另一家公司,例如ARM Holdings,Ltd、MIPS、等等。該處理器可為特別用途處理器,舉例來說,例如網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌式處理器、或類似處理器。該處理器可實施於一或多個晶片上。該處理器500可為一或多個基體的一部份,及/或可使用任何數量的製程技術而被實施於一或多個基體上,舉例來說,例如BiCMOS、CMOS、或NMOS。
圖6-8為適合用於包括該處理器500的範例系統,而圖9為可包括該等核心502中的一或多者的一範例單晶片 系統(SoC)。此技藝中所熟知之用於膝上型電腦、桌上型電腦、手持式個人電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌式處理器、數位信號處理器(DSPs)、圖形裝置、電動遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放裝置、手持裝置、以及各種其他電子裝置的其他系統設計及組態亦為適合的。通常,非常多種的系統或能夠合併一處理器及/或於此所述之其他執行邏輯的電子裝置一般為適合的。
現參考圖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的一多點 下傳匯流排(multi-drop bus)與該(等)處理器610、615通訊。
再者,GMCH 620係耦接至一顯示器645(例如一平面顯示器)。GMCH 620可包括一整合圖形加速器。GMCH 620更耦接至一輸入/輸出(I/O)控制器集線器(ICH)650,其可使用於將各種週邊裝置耦接至系統600。圖6的實施例中的範例所示為一外部圖形裝置660,其可為與另一週邊裝置670一起耦接至ICH 650的一離散圖形(discrete graphics)裝置。
替代地,額外的或不同的處理器亦可存在於該系統600之中。舉例來說,額外的處理器615可包括與處理器610相同的額外處理器、與處理器610異質或非對稱的額外處理器、加速器(例如,比方說圖形加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或者任何其他處理器。在包括架構、微架構、熱(thermal)、電力消耗特性、等等的指標之度量譜(spectrum of metrics of merit)方面,該等實體資源610、615之間可以有各種差異。此等差異可有效地表明其等本身在該等處理器610、615當中的非對稱性及非齊性。對於至少一個實施例,該等各種處理器610、615可存在於相同的晶粒封裝之中。
現參照圖7,所顯示的是依照本發明的一實施例的一第二系統700的方塊圖。如圖7中所示,多處理器系統700為一點對點互連系統,且包括透過一點對點互連750耦接的一第一處理器770及一第二處理器780。如該等處理器610、615的一或多者,處理器770及780的每一者可為該處 理器500的某種版本。
儘管所顯示的僅帶有兩個處理器770、780,可理解的是本發明的範圍並不限於此。於其他實施例中,一或多個額外的處理器可存在於一給定的處理器之中。
處理器770與780係顯示分別包括整合記憶體控制器單元772與782。處理器770亦包括作為其匯流排控制器單元的一部份之點對點(P-P)介面776及778;同樣地,第二處理器780包括P-P介面786及788。處理器770、780可透過點對點(P-P)介面750而使用P-P介面電路778、788來交換資訊。如圖7中所示,IMCs 772及782將該等處理器耦接至分別的記憶體,亦即一記憶體732與一記憶體734,其等可為本地附接至分別的處理器之主記憶體的一部份。
處理器770、780可使用點對點介面電路776、794、786、798透過個別的P-P介面752、754各自與一晶片組790交換資訊。晶片組790亦可透過一高效能圖形介面739與一高效能圖形電路738交換資訊。
一共享快取(未顯示)可包括於處理器之中,亦或兩處理器的外部但透過P-P互連而連接至該等處理器,以至於若一處理器被置於低功率模式則該等處理器中的任一者或兩者的區域快取資訊可被儲存於該共享快取之中。
晶片組790可透過一介面796而被耦接至一第一匯流排716。於一個實施例中,第一匯流排716可為週邊組件互連(PCI)匯流排、或者例如快速週邊組件互連匯流排或另一第三代I/O互連匯流排的一匯流排,然而本發明的範圍 並非如此限制。
如圖7中所示,各種I/O裝置714可與一匯流排橋接器718一起耦接至第一匯流排716,匯流排橋接器718將第一匯流排716耦接至一第二匯流排720。於一個實施例中,第二匯流排720可為一低接腳計數(LPC)匯流排。於一個實施例中,各種裝置可耦接至第二匯流排720,舉例來說,包括鍵盤及/或滑鼠722、通訊裝置727及儲存單元728,儲存單元728例如為可包括指令/碼及資料730的磁碟驅動機或其他大型儲存裝置。再者,一聲頻I/O 724可耦接至第二匯流排720。注意的是,其他架構亦為可能的。舉例來說,代替圖7的點對點架構,一系統可實施一多點下傳匯流排或其他此類架構。
現參照圖8,所顯示的是依照本發明的一實施例的一第三系統800的方塊圖。圖7與圖8中同樣的元件擁有同樣的元件符號,且圖7的某些觀點已從圖8省略以為了避免混淆圖8的其他觀點。
圖8例示說明該等處理器870、880分別可包括整合記憶體及I/O控制邏輯(“CL”)872及882。對於至少一個實施例,該等CL 872、882可包括例如上文聯接圖5及7所敘述的整合記憶體控制器單元。此外,CL 872、882亦可包括I/O控制邏輯。圖8例示說明的是,不僅該等記憶體832、834耦接至CL 872、882,而且I/O裝置814也耦接至CL 872、882。舊有I/O裝置815係耦接至晶片組890。
現參照圖9,所顯示的是依照本發明的一實施例 的一SoC 900的方塊圖。圖5中相似的元件擁有同樣的元件符號。同樣地,虛線框在更先進的SoCs上為選擇性特徵。圖9中,互連單元902係耦接至:一應用處理器910,其包括一組一或多個核心502A-N以及共享快取單元506;一系統代理單元510;匯流排控制器單元516;整合記憶體控制單元514;一組一或多個媒體處理器920,其可包括整合圖形邏輯508、用於提供相機及/或視訊攝影機功能的一影像處理器924、用於提供硬體聲頻加速的一聲頻處理器926、以及用於提供視訊編碼/解碼加速的一視訊處理器928;一靜態隨機存取記憶體(SRAM)單元930;一直接記憶體存取(DMA)單元932;以及用於耦接至一或多個外部顯示器的一顯示器單元940。
圖10例示說明含有一中央處理單元(CPU)及一圖形處理單元(GPU)的一處理器,其等可執行根據一個實施例的至少一個指令。於一個實施例中,用以根據至少一個實施例來執行操作的一指令可由該CPU來執行。於另一實施例中,該指令可由該GPU來執行。於又另一實施例中,該指令可透過該GPU與該CPU所執行的操作的組合來執行。舉例來說,於一個實施例中,依照一個實施例的一指令可被接收並解碼用於在該GPU上的執行。然而,經解碼的指令之中的一或多個操作可由一CPU來執行,而將結果轉回至該GPU用於該指令的最終引退。相反地,於一些實施例中,該CPU可作用為主要處理器,而該GPU為共處理器。
於一些實施例中,得益於高度平行通量處理器的 指令可由該GPU來執行,而得益於處理器效能(其得益於深度管線架構)的指令可由該CPU來執行。舉例來說,圖形、科學應用程式、金融應用程式以及其他平行工作量可得益於該GPU的效能並且據此被執行,而例如作業系統核心或應用程式碼之較循序的應用程式對於該CPU為更合適的。
圖10中,處理器1000包括一CPU 1005、GPU 1010、影像處理器1015、視訊處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示裝置1040、高畫質晰度多媒體介面(HDMI)控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙倍資料速率(DDR)控制器1060、安全引擎1065、以及I2S/I2C(整合內晶片聲音/內部整合電路)介面1070。其他邏輯與電路可包括於圖10的該處理器之中,包括更多CPUs或GPUs以及其他週邊介面控制器。
至少一個實施例的一或多個觀點可由儲存在一機器可讀媒體上的代表資料來實施,其代表該處理器中的各種邏輯,當被一機器讀取時其致使該機器組構用於執行於此所述之該等技術的邏輯。已知為”IP核心”的此類表示法可被儲存於有形機器可讀媒體(“磁帶”)上,並且被供應至各種顧客或製造設施以載入至實際製作出該邏輯或處理器的製造機器之中。舉例來說,例如ARM有限公司所開發的CortexTM處理器系列以及中國科學院計算技術研究所(ICT)開發的龍芯IP核心之IP核心可被授權或販售給例如德州儀器公司(Texas Instruments)、高通(Qualcomm)、蘋果公司(Apple)、或三星電子(Samsung)各種顧客或者被授權者, 並且被實施於由此等顧客或被授權者所生產的處理器之中。
圖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顯示高階語言1302中的一程式可使用x86編譯器1304來編譯以產生x86二進制碼1306,其可被一帶有至少一個x86指令集核心的處理器1316本機地執行。該帶有至少一個x86指令集核心的處理器1316代表任可執行與帶有至少一個x86指令集核心的英特爾處理器實質相同之功能的何處理器,藉由相容地執行或以其他方式處理(1)該英特爾x86指令集核心的指令集之實質部分、或者(2)目標對準運行於帶有至少一個x86指令集核心的英特爾處理器上之應用程式或其他軟體的目標碼版本,以為了達到與帶有至少一個x86指 令集核心的英特爾處理器實質相同的結果。該x86編譯器1304代表操作以產生x86二進制碼1306(例如,目標碼)的一編譯器,該x86二進制碼1306可有或沒有額外的鏈結處理而於該帶有至少一個x86指令集核心的處理器1316上被執行。同樣地,圖13顯示該高階語言1302中該程式可使用一替代的指令集編譯器1308來編譯以產生替代的指令集二進制碼1310,其可被一沒有至少一個x86指令集核心的處理器1314(例如,一處理器,其帶有執行美國加州森尼韋爾的MIPS科技公司的MIPS指令集及/或執行美國加州森尼韋爾的ARM公司的ARM指令集之核心)本機地執行。該指令轉換器1312係使用於將該x86二進制碼1306轉換成可被該沒有至少一個x86指令集核心的處理器1314本機執行的碼。此經轉換的碼不可能與該替代的指令集二進制碼1310相同,因為能夠如此的一指令轉換器很難製造;然而,該經轉換的碼將完成一般操作並且係由來自該替代的指令集的指令所組成。因此,該指令轉換器1312代表軟體、韌體、硬體、或其等之組合,其透過仿真、模擬或任何其他處理而使得一處理器或者不具有x86指令集處理器或核心的其他電子裝置能夠執行該x86二進制碼。
圖14例示說明用於提供安全密碼雜湊循環功能的指令之執行的一設備1401的一個實施例的圖。設備1401的實施例可為用於提供安全密碼雜湊循環功能的指令之執行的一管線400的一部份(例如,執行階段416)、或者一核心490的一部分(例如,執行單元462)。設備1401的實施例可與 一解碼階段(例如,解碼406)或一解碼器(例如,解碼單元440)耦接以解碼一指令,該指令用於一安全密碼雜湊演算法循環或者具有少於該雜湊演算法的循環疊代的總數之疊代數量的循環(例如,一個、兩個或四個疊代,其等可允許於一超純量執行管線中的其他指令的同作執行),該指令規定一原始資料及一或多個金鑰運算元1430。一或多個執行單元(例如,執行設備1401)回應經解碼的第一指令,於處理方塊1421中對該原始資料1410實行一初始排列1415以產出一經排列的原始資料1420。經排列的原始資料1420包含一左部分1420L以及一右部分1420R。該等一或多個執行單元使用該等一或多個金鑰運算元1430對該經排列的原始資料1420實行該安全密碼雜湊演算法的一或多個循環疊代,其中該等一或多個循環疊代係少於該雜湊演算法的循環疊代的總數,例如,於一個實施例中少於16。該右部分1420R可藉由選擇性的功能方塊F 1440來處理,該功能方塊F 1440於某些實施例中為例如使用於DES及/或三重DES(TDES)的Feistel密碼循環功能。替代的實施例可使用另一密碼演算法,舉例來說,例如Blowfish、SAFER K-64、CAST5、FEAL、等等。功能方塊F 1440的一個實施例包含一功能方塊E 1441,用以從右(例如,32位元)部分1420R選擇位元以產出一擴充(例如,48位元)部分,其係藉由XOR邏輯1443與金鑰1430的一部份(例如,48位元)組合。功能方塊F 1440進一步包含選擇功能1445,S[1]至S[8],於一個實施例中,每一選擇功能從XOR邏輯1443接收一輸入部分(例如,6位元)並輸出一 部份(例如,4位元)至一排列功能方塊P 1447,該排列功能方塊P 1447產生功能方塊F 1440的一輸出(例如,32位元)。功能方塊F 1440的輸出係藉由XOR邏輯1449與一左部分(例如,32位元)1420L組合以產生一新的右部分(例如,32位元)1450R。對於一個實施例,一新的左部分(例如,32位元)1450L係藉由簡單地複製先前的該右部分(例如,32位元)1420R來產生。於一個實施例中,該等新的左部分1450L與新的右部分1450R組成一預輸出1450。將可察知的是,當該安全密碼雜湊演算法的一個以上的循環疊代被設備1401實行時,該等新的左部分1450L及新的右部分1450R可分別藉由旁路1452L與1452R而被略過,以形成該安全密碼雜湊演算法的下一次後續的循環疊代的左部分1420L及右部分1420R。當該安全密碼雜湊演算法之指定的一或多個循環疊代的最後一個已被實行時,於處理方塊1461中,對該經編密的(enciphered)預輸出1450實行一反向初始排列1455以產生該第一指令的一結果作為一經編密的輸出資料1460,其係儲存於一目的地暫存器中。設備1401的某些實施例可將經編密的輸出資料1460儲存於一64位元通用目的地暫存器之中。設備1401的某些替代實施例可將經編密的輸出資料1460儲存於64位元、128位元、256位元或512位元SIMD向量目的地暫存器的64位元部分之中。舉例來說,設備1401的實施例可與向量暫存器(例如,實體暫存器檔案單元458)耦接,向量暫存器包含可變的複數個之m個可變大小的資料欄位,用於儲存可變的複數個之m個可變大小的資料元件之 值。
圖15例示說明用於提供安全密碼雜湊循環功能的指令之執行的一設備1501的一替代實施例的圖。設備1501的實施例亦可為用於提供安全密碼雜湊循環功能的指令之執行的一管線400的一部份(例如,執行階段416)、或者一核心490的一部分(例如,執行單元462)。設備1501的實施例可與一解碼階段(例如,解碼406)或一解碼器(例如,解碼單元440)耦接以解碼一指令,該指令用於一安全密碼雜湊演算法循環或者具有少於該雜湊演算法的循環疊代的總數之疊代數量的循環(例如,一個、兩個或四個疊代,其等可允許於一超純量執行管線中的其他指令的同作執行),該指令規定一原始資料及一或多個金鑰運算元1530。一或多個執行單元(例如,執行設備1501)回應經解碼的第一指令,於處理方塊1521中對該原始資料1510實行一初始排列1515以產出一經排列的原始資料1520。經排列的原始資料1520包含一左部分1520L以及一右部分1520R。該等一或多個執行單元使用該等一或多個金鑰運算元1530對該經排列的原始資料1520實行該安全密碼雜湊演算法的一或多個循環疊代,其中該等一或多個循環疊代係少於該雜湊演算法的循環疊代的總數,例如,於一個實施例中少於16。該右部分1520R可藉由選擇性的功能方塊F 1540來處理,該功能方塊F 1540於某些實施例中為例如使用於DES及/或TDES的Feistel密碼循環功能。功能方塊F 1540的一個實施例包含一功能方塊E 1541,用以從右(例如,32位元)部分1520R選擇位元以 產出一擴充(例如,48位元)部分,其係藉由XOR邏輯1543與金鑰1530的一部份(例如,48位元)組合。功能方塊F 1540進一步包含選擇功能1545,S[1]至S[8],於一個實施例中,每一選擇功能從XOR邏輯1543接收一輸入部分(例如,6位元)並輸出一部份(例如,4位元)至一排列功能方塊P 1547,該排列功能方塊P 1547產生功能方塊F 1540的一輸出(例如,32位元)。功能方塊F 1540的輸出係藉由XOR邏輯1549與一左部分(例如,32位元)1520L組合以產生一右輸入至左MUX 1553L以及至右MUX 1553R。至左MUX 1553L以及至右MUS 1553R的一左輸入係藉由簡單地複製先前的該右部分(例如,32位元)1520R來產生。當該安全密碼雜湊演算法的最後一個循環疊代(例如,於一個實施例中為16)已被實行時,該信號Last 1551可被斷言(assert)(1),以致使至左MUX 1553L的該右輸入以及至右MUX 1553R的該左輸入被選擇分別用於產出新的左部分(例如,32位元)1550L以及新的右部分(例如,32位元)1550R。在其他方面,當該信號Last 1551並未被斷言(0),至左MUX 1553L的該左輸入以及至右MUX 1553R的該右輸入被選擇分別用於產出新的左部分(例如,32位元)1550L以及新的右部分(例如,32位元)1550R。於一個實施例中,該等新的左部分1550L與新的右部分1550R組成一預輸出1550。將可察知的是,當該安全密碼雜湊演算法的一個以上的循環疊代被設備1501實行時,該等新的左部分1550L及新的右部分1550R可分別藉由旁路1552L與1552R而被略過,以形成該安全密碼雜湊演算法的下一次後 續的循環疊代的左部分1520L及右部分1520R。
當該安全密碼雜湊演算法之指定的一或多個循環疊代的最後一個已被實行時,於處理方塊1561中,對該經編密的預輸出資料1550實行一反向初始排列1555以產生該第一指令的一結果作為一經編密的輸出資料1560,其係儲存於一目的地暫存器中。設備1501的某些實施例可將經編密的輸出資料1560儲存於一64位元通用目的地暫存器之中。設備1501的某些替代實施例可將經編密的輸出資料1560儲存於一對32位元通用目的地暫存器之中。設備1501的某些替代實施例可將經編密的輸出資料1560儲存於64位元、128位元、256位元或512位元SIMD向量目的地暫存器的64位元部分之中。
可察知的是,提供僅實行該雜湊循環的指定次數的疊代之安全密碼雜湊循環疊代的指令之執行,可致使該雜湊演算法能夠於一處理器管線中與其他處理並行執行,例如金鑰的預處理、以及從預定金鑰的一專屬集合中選擇一或多個金鑰以阻撓攻擊、等等。亦即,在雜湊循環的單一疊代可具有三個週期(cycle)的管線潛伏之處(例如,每一循環3週期),藉由將結果略過回到該管線,兩次疊代可具有僅僅四個週期的潛伏(例如,每一循環2週期),四次疊代可具有僅僅六個週期的潛伏(例如,每一循環1.5週期),而五次疊代可具有僅僅七個週期的潛伏(例如,每一循環1.4週期)。於四、六或七個週期的此等管線潛伏的期間,其他可使用的處理可與該安全密碼雜湊平行或並行地實行。因 此,提供用於安全密碼雜湊演算法循環(其具有若干疊代(例如二、四或五次疊代)但少於該密碼演算法的循環疊代總數)之指令,允許其他指令於一超純量執行管線及/或一亂序處理器管線中並行執行,藉此顯著地改善處理通量並將縮放頻率(scaling of frequency)利用於與通用處理器相關的製程改善。
圖16例示說明用於提供安全密碼雜湊循環功能之程序1601的一實施例的流程圖。程序1601以及此處所揭露之其他程序係由可包含專屬硬體或軟體或韌體操作碼的處理方塊實行,該等操作碼可藉由通用機器或藉由專用機器或藉由兩者之組合執行。
於程序1601的處理方塊1610中,一指令被解碼用於安全密碼雜湊,其中該指令的某些實施例可規定至少一原始資料、及一或多個金鑰運算元。於處理方塊1620中,對該原始資料實行一初始排列以產出一經排列的原始資料。於處理方塊1630中,回應該指令,使用該等一或多個金鑰運算元對該經排列的原始資料實行該安全密碼雜湊演算法的一循環疊代。該安全密碼雜湊的某些實施例回應該相同的指令而實行不止一個循環疊代,但典型地少於循環疊代的完整數量(例如,少於16)係被需要於該安全密碼雜湊。於處理方塊1640中,判定對於該指令的循環疊代的規定數量是否已經完成。若否,處理反覆開始於處理方塊1630。否則,於處理方塊1650中,對該經編密的資料實行一反向初始排列。接著,於處理方塊1660中,該指令的一結果係根 據該指令所規定的格式被儲存於一目的地,舉例來說,該指令所規定的格式可關於最後一個循環疊代或者中間的循環疊代,而該目的地可被該指令規定為一暫存器目的地運算元或者一記憶體目的地運算元。該指令的一個實例規定一安全密碼雜湊演算法循環疊代使用例如DES或TDES的Feistel密碼演算法。替代的實施例可使用其他密碼演算法,舉例來說,例如Blowfish、SAFER K-64、CAST5、FEAL、等等。
將可察知的是,用以利用安全密碼雜湊演算法的指令可被使用於在應用程式中提供安全密碼雜湊循環功能,舉例來說,例如那些提供負載平衡分佈、及/或阻斷服務攻擊的防禦、等等,而沒有需要過度複雜的計算或不能接受的延遲,但仍考慮到適當選定的調整以阻撓攻擊,且在過程中更沒有減少所欲的服務品質。某些實施例可規定(例如,於一立即運算元之中)用以實行該安全密碼雜湊演算法的循環數量的範圍。舉例來說,於一個實施例中,立即位元組運算元之中的0x0F的十六進位範圍可指示該指令係用以實行一密碼雜湊演算法的所有十六(16)次疊代,而立即位元組運算元之中的0xFF的十六進位範圍可指示該指令係用以實行僅僅一個循環的十六(16)次疊代,或者於一立即位元組運算元之中的0xF8的十六進位範圍可指示該指令係用以實行密碼雜湊演算法的解密模式中的循環十六(16)至循環九(9)的該等疊代。將可察知的是,與單向雜湊演算法相比,利用一密碼作為雜湊演算法的一個意想不到的好處是其為 可逆的,可幫助用於負載平衡的金鑰之設計,當允許插入新的金鑰來阻撓一攻擊(例如,諸如阻斷服務攻擊)時提供所欲的特性(例如,持續及/或一致的雜湊)。實行僅一特定數量之該密碼的疊代作為雜湊演算法之另一意想不到的好處是,不同組的金鑰可被使用於循環疊代每一循環或循環疊代的每一範圍,為不可能使用一標準子鍵排程的密碼結果準備。
圖17例示說明用於提供安全密碼雜湊循環功能之程序1701的另一實施例的流程圖。於程序1701的處理方塊1710中,一指令被解碼用於安全密碼雜湊,其中該指令的某些實施例可規定至少一原始資料、及一或多個金鑰運算元。於處理方塊1720中,對該原始資料實行一初始排列以產出一經排列的原始資料。於處理方塊1730中,回應該指令,依照該指令所規定的循環數量,使用該等一或多個金鑰運算元對該經排列的原始資料實行該安全密碼雜湊演算法的一循環疊代。於某些實施例中,使用於一循環疊代或多個疊代中之特定的金鑰或特定的多個金鑰,係取決於該指令所規定的循環數量或多個循環數量。該安全密碼雜湊的某些實施例回應該相同的指令而實行不止一個循環疊代,但典型地少於循環疊代的完整數量(例如,少於16)係被需要於該安全密碼雜湊。於處理方塊1740中,判定對於該指令的循環疊代的規定數量是否已經完成。若否,處理反覆開始於處理方塊1730。否則,於處理方塊1750中,對該經編密的資料實行一反向初始排列。接著,於處理方塊1760 中,該指令的一結果係根據該指令所規定的格式被儲存於一目的地,舉例來說,該指令所規定的格式可關於最後一個循環疊代或者中間的循環疊代,而該目的地可被該指令規定為一暫存器目的地運算元或者一記憶體目的地運算元。
於此揭露的該等機制的實施例可以硬體、軟體、韌體、或此類實施途徑的組合來實施。本發明的實施例可被實施為執行於可程式系統上的電腦程式或程式碼,可程式系統包含至少一個處理器、一儲存系統(包括依電性及不變性記憶體及/或儲存元件)、至少一個輸入裝置、以及至少一個輸出裝置。
程式碼可被應用於輸入指令以實行於此所述隻功能並產生輸出資訊。該輸出資訊可以已知型式被應用於一或多個輸出裝置。對於此申請案之目的,一處理系統包括任何具有一處理器的系統,舉例來說,處理器例如為數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或者微處理器。
該程式碼可以高階程序或物件導向程式語言來實施,以與一處理系統通訊。視所欲,該程式碼亦可以組合語言或機器語言來實施。事實上,於此所述之該等機制在範圍上並非受限於任何程式語言。於任何情況,該語言可為編譯語言或解釋語言。
至少一個實施例的一或多個觀點可藉由儲存於機器可讀媒體上的代表指令來實施,該機器可讀媒體代表 該處理器之中的各種邏輯,當該機器可讀媒體被一機器讀取時致使該機器組構用於實行於此所述之技術的邏輯。已知為”IP核心”的此類表示法可被儲存於有形機器可讀媒體上,並且被供應至各種顧客或製造設施以載入至實際製作出該邏輯或處理器的製造機器之中。
此類機器可讀儲存媒體在沒有限制的情況下可包括由機器或裝置所製造的製品之非暫態有形安排,包括例如硬碟的儲存媒體、包括軟磁碟的任何其他類型的磁碟、光碟、光碟唯讀記憶體(CD-ROMs)、可讀寫式光碟(CD-RWs)、及磁光碟、例如唯讀記憶體(ROMs)的半導體裝置、例如動態隨機存取記憶體(DRAMs)的隨機存取記憶體(RAMs)、靜態隨機存取記憶體(SRAMs)、可抹除可程式化唯讀記憶體(EPROMs)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROMs)、磁性或光學卡、或者任何其他類型之適於儲存電子指令的媒體。
於是本發明的實施例亦包括含有指令或含有設計資料的非暫態有形機器可讀媒體,指令或設計資料例如為界定於此所述之結構、電路、設備、處理器、及/或系統特徵的硬體描述語言(HDL)。此類實施例亦可被稱為程式產品。
於某些情況,一指令轉換器可被使用於將一指令從一源指令集轉換至一目標指令集。舉例來說,該指令轉換器可翻譯()、變形(morph)、仿真、或以其他方式將一指令轉換成一或多個將由該核心處理的其他指令。該指令轉 換器可以軟體、硬體、韌體、或其等之組合來實施。該指令轉換器可於處理器上、離開處理器、或者部分於處理器上而部分離開處理器。
因此,用於根據至少一個實施例來實行一或多個指令的技術係被揭露。儘管某些範例的實施例已被敘述並顯示於所附圖式中,將可理解的是,此類實施例僅為概括發明的例示說明而並非限制,且因為熟此技藝者可在研讀此揭露內容後想到各種其他改變,此發明並非被限制於所顯示及敘述的特定構造與安排。例如此發展快速且進一步進展不容易預見的技術領域中,在沒有偏離本揭露內容之原理或所附申請專利範圍之範圍的情況下,藉由實現技術進展的推動,所揭露的實施例在安排與細節上可輕易改變。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧快取記憶體
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形/視訊卡
114‧‧‧加速圖形埠互連
116‧‧‧記憶體控制器集線器
118‧‧‧記憶體路徑
120‧‧‧記憶體
122‧‧‧集線器介面匯流排
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧快閃BIOS
130‧‧‧I/O控制器集線器
134‧‧‧網路控制器

Claims (32)

  1. 一種處理器,其包含:一解碼級,其用以解碼用於一安全密碼雜湊演算法的一第一指令,該第一指令規定一原始資料及一或多個金鑰運算元;以及一或多個執行單元,其回應該經解碼的第一指令而用以:對該原始資料實行一初始排列;使用該等一或多個金鑰運算元對該經排列的原始資料實行該安全密碼雜湊演算法的一或多個循環疊代,以產生經編密的資料,其中該等一或多個循環疊代係少於16;對該經編密的資料實行一反向初始排列;及將該第一指令的一結果儲存於一目的地暫存器中,其中該第一指令以一單指令多資料(SIMD)目的地暫存器運算元來規定該目的地暫存器。
  2. 如請求項1之處理器,其中該第一指令係用於使用Feistel密碼演算法來實行一安全密碼雜湊演算法單一循環疊代。
  3. 如請求項1之處理器,其中該第一指令係用於使用資料加密標準(DES)演算法來實行一安全密碼雜湊演算法單一循環疊代。
  4. 如請求項1之處理器,其中該第一指令係用於使用三重 資料加密標準(TDES)演算法,以該第一指令所規定的循環數量來實行一安全密碼雜湊演算法循環疊代。
  5. 如請求項1之處理器,其中該等一或多個金鑰運算元規定一或多個48位元金鑰。
  6. 如請求項1之處理器,其中該等一或多個金鑰運算元規定一或多個56位元金鑰。
  7. 如請求項1之處理器,其中該等一或多個金鑰運算元規定兩個三重資料加密標準(TDES)、模式2金鑰。
  8. 如請求項1之處理器,其中該安全密碼雜湊演算法的該等一或多個循環疊代包含使用一或多個預定金鑰的一或多個解密(decryption)循環疊代以阻撓攻擊。
  9. 如請求項1之處理器,其中該安全密碼雜湊演算法的該等一或多個循環疊代包含使用一或多個預定金鑰的一或多個三重資料加密標準(TDES)循環疊代以阻撓攻擊。
  10. 如請求項1之處理器,其中該第一指令以一64位元目的地運算元來規定該目的地暫存器。
  11. 如請求項1之處理器,其中該第一指令隱含地規定該目的地暫存器作為一對32位元目的地暫存器。
  12. 如請求項1之處理器,其中該SIMD目的地暫存器運算元規定一來源暫存器及該目的地暫存器。
  13. 一種用以提供安全密碼雜湊循環功能之方法,該方法包含:解碼用於一安全密碼雜湊的一第一指令,該第一指 令規定一原始資料、及一或多個金鑰運算元;對該原始資料實行一初始排列;回應該第一指令,使用該等一或多個金鑰運算元對該經排列的原始資料實行該安全密碼雜湊演算法的一或多個循環疊代,以產生經編密的資料,其中該等一或多個循環疊代係少於16;對該經編密的資料實行一反向初始排列;以及根據該第一指令所規定的格式將該第一指令的一結果儲存於一目的地暫存器中,其中該第一指令以一單指令多資料(SIMD)目的地暫存器運算元來規定該目的地暫存器。
  14. 如請求項13之方法,其中該安全密碼雜湊演算法的該等一或多個循環疊代包含使用一或多個預定金鑰的一或多個解密循環疊代以阻撓攻擊。
  15. 如請求項13之方法,其更包含:使用一或多個預定金鑰來實行一或多個解密循環疊代以阻撓攻擊。
  16. 如請求項15之方法,其更包含:從預定金鑰的一集合中隨機選擇以阻撓攻擊。
  17. 如請求項15之方法,其更包含:從預定金鑰的一專屬集合中隨機選擇以阻撓攻擊。
  18. 如請求項13之方法,其中該第一指令以一64位元目的地運算元來規定該目的地暫存器。
  19. 如請求項13之方法,其中該第一指令隱含地規定該目的地暫存器作為一對32位元目的地暫存器。
  20. 如請求項13之方法,其中該SIMD目的地暫存器運算元規定一來源暫存器及該目的地暫存器。
  21. 如請求項13之方法,其更包含:對儲存於該目的地暫存器中之該第一指令的該結果實行一初始排列;回應一第二指令,使用第二的一或多個金鑰運算元對儲存在該目的地暫存器中的該第一指令的該結果,實行一加密(encryption)模式中的該安全密碼雜湊演算法之第二的一或多個循環疊代,以產生經加密的編密資料其中該等第二的一或多個循環疊代係少於16;以及對該經加密的編密資料實行一反向初始排列。
  22. 一種用以提供安全密碼雜湊循環功能之方法,該方法包含:解碼用於一安全密碼雜湊的一第一指令,該第一指令規定一原始資料、一或多個金鑰運算元、及一最後的疊代儲存格式;對該原始資料實行一初始排列;回應該第一指令,使用該等一或多個金鑰運算元對該經排列的原始資料實行該安全密碼雜湊演算法的一或多個循環疊代,以產生經編密的資料,其中該等一或多個循環疊代係少於16;回應該第一指令,對該經編密的資料實行一反向初 始排列;以及根據該第一指令所規定之該最後的疊代儲存格式,將該第一指令的一結果儲存於一目的地暫存器中。
  23. 如請求項22之方法,其更包含:對儲存於該目的地暫存器中之該第一指令的該結果實行一初始排列,以產生該第一指令的一排列結果;回應一第二指令,使用第二的一或多個金鑰運算元對該第一指令的該排列結果,實行一解密模式中的該安全密碼雜湊演算法之第二的一或多個循環疊代,以產生一經解密的編密資料,其中該等第二的一或多個循環疊代係少於16;以及對該經解密的編密資料實行一反向初始排列。
  24. 一種用以提供安全密碼雜湊循環功能之方法,該方法包含:解碼用於一安全密碼雜湊的一第一指令,該第一指令規定一原始資料、及一或多個金鑰運算元;對該原始資料實行一初始排列;回應該第一指令,根據該第一指令所規定的一循環數量,使用該等一或多個金鑰運算元對該經排列的原始資料實行該安全密碼雜湊演算法的一或多個循環疊代,以產生經編密的資料,其中該等一或多個循環疊代係少於16;以及對該經編密的資料實行一反向初始排列;根據該指令所規定的一格式排程將該第一指令的 一或多個結果儲存於一目的地暫存器中,其中該第一指令以一單指令多資料(SIMD)目的地暫存器運算元來規定該目的地暫存器。
  25. 如請求項24之方法,其更包含:對儲存於該目的地暫存器中之該第一指令的最後一個結果實行一初始排列,以產生該第一指令的一排列的最後結果;回應一第二指令,使用第二的一或多個金鑰運算元對該第一指令之該排列的最後結果,實行一解密模式中的該安全密碼雜湊演算法之第二的一或多個循環疊代,以產生經解密的編密資料,其中該等第二的一或多個循環疊代係少於16;以及對該經解密的編密資料實行一反向初始排列。
  26. 如請求項25之方法,其更包含:從預定金鑰的一專屬集合中選擇該等第二的一或多個金鑰運算元以阻撓攻擊。
  27. 一種計算系統,其包含:一記憶體,用以儲存對於橫跨一組處理資源的負載平衡請求之資源指派;以及一處理器,包含:一解碼階段,其用以解碼用於一安全密碼雜湊演算法的一第一指令,該第一指令規定一原始資料、及一或多個金鑰運算元;以及一或多個執行單元,其回應該經解碼的第一指 令而用以:對該原始資料實行一初始排列;使用該等一或多個金鑰運算元對該經排列的原始資料實行該安全密碼雜湊演算法的一或多個循環疊代,以產生經編密的資料,其中該等一或多個循環疊代係少於16;及對該經編密的資料實行一反向初始排列;及將該第一指令的一結果儲存於一目的地暫存器中,且將被使用於從對於橫跨該組處理資源的負載平衡請求的一請求來產生一資源指派,其中該第一指令以一單指令多資料(SIMD)目的地暫存器運算元來規定該目的地暫存器。
  28. 如請求項27之系統,其中該第一指令係用於使用Feistel密碼演算法來實行一安全密碼雜湊演算法的單一循環疊代。
  29. 如請求項27之系統,其中該第一指令係用於使用資料加密標準(DES)演算法來實行一安全密碼雜湊演算法循環疊代。
  30. 如請求項27之系統,其中該第一指令以一64位元目的地運算元來規定該目的地暫存器。
  31. 如請求項27之系統,其中該第一指令隱含地規定該目的地暫存器作為一對32位元目的地暫存器。
  32. 如請求項27之系統,其中該等一或多個安全密碼雜湊演算法循環疊代包含使用來自預定金鑰的一集合之一或 多個金鑰的一或多個三重資料加密標準(TDES)循環疊代以阻撓攻擊。
TW103125144A 2013-08-08 2014-07-22 用以提供安全密碼雜湊循環功能之指令與邏輯 TWI551104B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/962,933 US10038550B2 (en) 2013-08-08 2013-08-08 Instruction and logic to provide a secure cipher hash round functionality

Publications (2)

Publication Number Publication Date
TW201519623A TW201519623A (zh) 2015-05-16
TWI551104B true TWI551104B (zh) 2016-09-21

Family

ID=52448689

Family Applications (2)

Application Number Title Priority Date Filing Date
TW103125144A TWI551104B (zh) 2013-08-08 2014-07-22 用以提供安全密碼雜湊循環功能之指令與邏輯
TW105120330A TWI646818B (zh) 2013-08-08 2014-07-22 用以提供安全密碼雜湊循環功能之指令與邏輯(二)

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW105120330A TWI646818B (zh) 2013-08-08 2014-07-22 用以提供安全密碼雜湊循環功能之指令與邏輯(二)

Country Status (8)

Country Link
US (1) US10038550B2 (zh)
EP (1) EP3031167B1 (zh)
JP (2) JP6220453B2 (zh)
KR (1) KR101821066B1 (zh)
CN (1) CN105409158B (zh)
RU (1) RU2637463C2 (zh)
TW (2) TWI551104B (zh)
WO (1) WO2015021380A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI646818B (zh) * 2013-08-08 2019-01-01 英特爾公司 用以提供安全密碼雜湊循環功能之指令與邏輯(二)
TWI745333B (zh) * 2016-02-12 2021-11-11 英商Arm股份有限公司 用於控制有界指標的使用的設備及方法
TWI754680B (zh) * 2016-11-03 2022-02-11 南韓商三星電子股份有限公司 產生起始估算值的裝置及方法、製造方法及測試方法
US11610003B2 (en) 2020-05-29 2023-03-21 Delta Electronics, Inc. Software protection method and system thereof

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US9292298B2 (en) * 2013-07-08 2016-03-22 Arm Limited Data processing apparatus having SIMD processing circuitry
EP3095044B1 (en) * 2013-11-19 2020-09-23 Top Galore Limited Block mining methods and apparatus
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9912481B2 (en) * 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
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
US10409827B2 (en) * 2014-10-31 2019-09-10 21, Inc. Digital currency mining circuitry having shared processing logic
US9960909B2 (en) * 2014-12-08 2018-05-01 Open-Silicon Inc. High speed and low power hashing system and method
CN108139901B (zh) 2015-09-30 2022-04-26 惠普发展公司,有限责任合伙企业 使用外部设备的运行时间验证
CN105391546A (zh) * 2015-12-16 2016-03-09 南京航空航天大学 基于双伪随机变换和Feistel结构的轻量级分组密码技术VHF
US10049057B2 (en) * 2015-12-18 2018-08-14 Intel Corporation Instruction and logic for secure instruction execution pipeline
CN105959099A (zh) * 2016-06-20 2016-09-21 浪潮电子信息产业股份有限公司 一种实现ssr密码加密的方法
US9680653B1 (en) * 2016-10-13 2017-06-13 International Business Machines Corporation Cipher message with authentication instruction
US10374793B2 (en) * 2016-12-09 2019-08-06 Intel Corporation Simon-based hashing for fuse validation
CN108462681B (zh) * 2017-02-22 2020-12-29 中国移动通信集团公司 一种异构网络的通信方法、设备及系统
CN109194461B (zh) * 2018-05-11 2022-02-22 吉林大学 基于双密钥流密码的单向链表顺序加密解密方法
EP3595256A1 (de) * 2018-07-13 2020-01-15 Siemens Aktiengesellschaft Vorrichtung und verfahren zum betreiben einer durch software gestalteten verarbeitungseinheit für ein gerät
US10540207B1 (en) * 2018-07-18 2020-01-21 International Business Machines Corporation Fast, low memory, consistent hash using an initial distribution
GB2582900A (en) 2019-03-18 2020-10-14 Pqshield Ltd Cryptography using a cryptographic state
WO2021038281A1 (en) * 2019-08-30 2021-03-04 Telefonaktiebolaget Lm Ericsson (Publ) A round-free cryptographic hashing device for secure and low-latency communications
TWI731407B (zh) 2019-09-09 2021-06-21 新唐科技股份有限公司 具有旁通通道的金鑰管理裝置及處理器晶片
TWI705687B (zh) 2019-09-09 2020-09-21 新唐科技股份有限公司 用於資料加解密的金鑰管理裝置及處理器晶片
IT201900025567A1 (it) * 2019-12-24 2021-06-24 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
US11763008B2 (en) 2020-01-15 2023-09-19 International Business Machines Corporation Encrypting data using an encryption path and a bypass path
US11520709B2 (en) 2020-01-15 2022-12-06 International Business Machines Corporation Memory based encryption using an encryption key based on a physical address
CN112988235B (zh) * 2021-02-06 2022-06-14 华中科技大学 一种高效率第三代安全散列算法的硬件实现电路及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020018562A1 (en) * 2000-06-13 2002-02-14 Hynix Semiconductor Inc. Key scheduler for encryption apparatus using data encryption standard algorithm
TW526450B (en) * 2000-12-13 2003-04-01 Infineon Technologies Ag Cryptographic processor
US7254231B1 (en) * 1999-10-14 2007-08-07 Ati International Srl Encryption/decryption instruction set enhancement
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8356185B2 (en) * 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions

Family Cites Families (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2458331A1 (de) 1973-12-13 1975-06-19 Honeywell Inf Systems Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes
US4250483A (en) 1978-01-30 1981-02-10 Rubner Anthony C System for signalized intersection control
EP0354774B1 (en) 1988-08-11 1996-04-10 International Business Machines Corporation Data cryptography using control vectors
US5339398A (en) 1989-07-31 1994-08-16 North American Philips Corporation Memory architecture and method of data organization optimized for hashing
US5349642A (en) 1992-11-03 1994-09-20 Novell, Inc. Method and apparatus for authentication of client server communication
US5649179A (en) 1995-05-19 1997-07-15 Motorola, Inc. Dynamic instruction allocation for a SIMD processor
US5608801A (en) 1995-11-16 1997-03-04 Bell Communications Research, Inc. Efficient cryptographic hash functions and methods for amplifying the security of hash functions and pseudo-random functions
JPH10340048A (ja) * 1997-06-06 1998-12-22 Hitachi Ltd ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置
US5920900A (en) 1996-12-30 1999-07-06 Cabletron Systems, Inc. Hash-based translation method and apparatus with multiple level collision resolution
US5897637A (en) 1997-03-07 1999-04-27 Apple Computer, Inc. System and method for rapidly identifying the existence and location of an item in a file
US6067547A (en) 1997-08-12 2000-05-23 Microsoft Corporation Hash table expansion and contraction for use with internal searching
US5960434A (en) 1997-09-26 1999-09-28 Silicon Graphics, Inc. System method and computer program product for dynamically sizing hash tables
US6260055B1 (en) 1997-10-15 2001-07-10 Kabushiki Kaisha Toshiba Data split parallel shifter and parallel adder/subtractor
US6226710B1 (en) 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6269163B1 (en) 1998-06-15 2001-07-31 Rsa Security Inc. Enhanced block ciphers with data-dependent rotations
US6360218B1 (en) 1998-10-26 2002-03-19 Microsoft Corporation Compact record format for low-overhead databases
US6307955B1 (en) 1998-12-18 2001-10-23 Topaz Systems, Inc. Electronic signature management system
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6578131B1 (en) 1999-04-27 2003-06-10 Microsoft Corporation Scaleable hash table for shared-memory multiprocessor system
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6631419B1 (en) 1999-09-22 2003-10-07 Juniper Networks, Inc. Method and apparatus for high-speed longest prefix and masked prefix table search
US6594665B1 (en) 2000-02-18 2003-07-15 Intel Corporation Storing hashed values of data in media to allow faster searches and comparison of data
US6952770B1 (en) 2000-03-14 2005-10-04 Intel Corporation Method and apparatus for hardware platform identification with privacy protection
US6470329B1 (en) 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US20020032551A1 (en) 2000-08-07 2002-03-14 Jabari Zakiya Systems and methods for implementing hash algorithms
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
JP2002108691A (ja) * 2000-09-29 2002-04-12 Mitsubishi Electric Corp 半導体記憶装置および半導体記憶装置の制御方法
US7299355B2 (en) 2001-01-12 2007-11-20 Broadcom Corporation Fast SHA1 implementation
US6829355B2 (en) 2001-03-05 2004-12-07 The United States Of America As Represented By The National Security Agency Device for and method of one-way cryptographic hashing
US7073059B2 (en) 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
US7249255B2 (en) 2001-06-13 2007-07-24 Corrent Corporation Apparatus and method for a hash processing system using multiple hash storage areas
US7240203B2 (en) 2001-07-24 2007-07-03 Cavium Networks, Inc. Method and apparatus for establishing secure sessions
KR100423811B1 (ko) 2001-12-12 2004-03-22 한국전자통신연구원 카스미 암호화 알고리즘을 응용한 암호화 장치
US7395412B2 (en) 2002-03-08 2008-07-01 Ip-First, Llc Apparatus and method for extending data modes in a microprocessor
US7400722B2 (en) 2002-03-28 2008-07-15 Broadcom Corporation Methods and apparatus for performing hash operations in a cryptography accelerator
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7165135B1 (en) 2002-04-18 2007-01-16 Advanced Micro Devices, Inc. Method and apparatus for controlling interrupts in a secure execution mode-capable processor
AU2003221972A1 (en) 2002-04-18 2003-11-03 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
US7392384B2 (en) 2002-06-28 2008-06-24 Hewlett-Packard Development Company, L.P. Method and system for secure storage, transmission and control of cryptographic keys
JP2004109420A (ja) 2002-09-18 2004-04-08 Sony Corp 乱数生成装置及び乱数生成方法
US7925891B2 (en) 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7373514B2 (en) 2003-07-23 2008-05-13 Intel Corporation High-performance hashing system
US7921300B2 (en) 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
US7545928B1 (en) 2003-12-08 2009-06-09 Advanced Micro Devices, Inc. Triple DES critical timing path improvement
US7684563B1 (en) 2003-12-12 2010-03-23 Sun Microsystems, Inc. Apparatus and method for implementing a unified hash algorithm pipeline
US7599489B1 (en) 2004-02-09 2009-10-06 Sun Microsystems Inc. Accelerating cryptographic hash computations
US7496196B2 (en) * 2004-06-30 2009-02-24 Intel Corporation Method apparatus and system of performing one or more encryption and/or decryption operations
ATE490636T1 (de) 2004-07-30 2010-12-15 Ericsson Telefon Ab L M Sicherer lastausgleich in einem netzwerk
US7602905B2 (en) 2004-09-01 2009-10-13 Texas Instruments Incorporated Processes, circuits, devices, and systems for encryption and decryption and other purposes, and processes of making
US7370050B2 (en) 2005-02-28 2008-05-06 Microsoft Corporation Discoverability and enumeration mechanisms in a hierarchically secure storage system
WO2006098015A1 (ja) 2005-03-16 2006-09-21 Mitsubishi Denki Kabushiki Kaisha データ変換装置及びデータ変換方法
US7725624B2 (en) 2005-12-30 2010-05-25 Intel Corporation System and method for cryptography processing units and multiplier
US8073892B2 (en) 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier
US8392174B2 (en) * 2006-08-07 2013-03-05 International Characters, Inc. Method and apparatus for lexical analysis using parallel bit streams
US8020142B2 (en) 2006-12-14 2011-09-13 Intel Corporation Hardware accelerator
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US20100027781A1 (en) 2007-12-20 2010-02-04 Galbi Duane E Method and apparatus for enhancing performance of data encryption standard (des) encryption/decryption
US8281109B2 (en) 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
US8923510B2 (en) 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
US8340280B2 (en) 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
US8788841B2 (en) 2008-10-23 2014-07-22 Samsung Electronics Co., Ltd. Representation and verification of data for safe computing environments and systems
US8194858B2 (en) * 2009-02-19 2012-06-05 Physical Optics Corporation Chaotic cipher system and method for secure communication
US8711159B2 (en) 2009-02-23 2014-04-29 Microsoft Corporation VGPU: a real time GPU emulator
US8832464B2 (en) 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US9680637B2 (en) 2009-05-01 2017-06-13 Harris Corporation Secure hashing device using multiple different SHA variants and related methods
JP5423217B2 (ja) * 2009-08-04 2014-02-19 富士通株式会社 演算処理装置、情報処理装置、および演算処理装置の制御方法
US8417961B2 (en) 2010-03-16 2013-04-09 Oracle International Corporation Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC)
US8995663B2 (en) 2010-03-31 2015-03-31 Feitian Technologies Co., Ltd. Method for implementing an encryption engine by smart key device
US8583902B2 (en) 2010-05-07 2013-11-12 Oracle International Corporation Instruction support for performing montgomery multiplication
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
FR2963135B1 (fr) 2010-07-22 2013-02-08 Viaccess Sa Procede de protection d'un contenu
WO2012101721A1 (ja) 2011-01-25 2012-08-02 三洋電機株式会社 通信装置
US8712039B2 (en) 2011-04-06 2014-04-29 Certicom Corp. Efficient implementation of hash algorithm on a processor
JP2012252281A (ja) 2011-06-06 2012-12-20 Canon Inc 演算処理装置およびその方法、並びに、情報処理装置
US8855302B2 (en) 2011-06-21 2014-10-07 Intel Corporation Apparatus and method for Skein hashing
EP2724269B1 (en) 2011-06-27 2020-02-19 Jethrodata Ltd. System, method and data structure for fast loading, storing and access to huge data sets in real time
GB2497070B (en) 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
WO2013095503A1 (en) 2011-12-22 2013-06-27 Intel Corporation Method and apparatus to process sha-1 secure hashing algorithm
EP3627764B1 (en) 2012-03-30 2021-07-28 Intel Corporation Method and apparatus to process sha-2 secure hashing algorithm
US10203934B2 (en) 2012-07-11 2019-02-12 Intel Corporation Parallell processing of a single data buffer
GB2496934B (en) 2012-08-07 2014-06-11 Imagination Tech Ltd Multi-stage register renaming using dependency removal
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US20140362098A1 (en) 2013-06-10 2014-12-11 Sharp Laboratories Of America, Inc. Display stream compression
CN103457719B (zh) 2013-07-23 2016-06-08 国家密码管理局商用密码检测中心 一种对sm3密码算法hmac模式的侧信道能量分析方法
US10038550B2 (en) * 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
CN103490895B (zh) 2013-09-12 2016-09-14 电小虎能源科技(北京)有限公司 一种应用国密算法的工业控制身份认证方法及装置
US9424209B2 (en) 2013-09-19 2016-08-23 Intel Corporation Dynamic heterogeneous hashing functions in ranges of system memory addressing space
US9390246B2 (en) 2013-09-25 2016-07-12 Intel Corporation Creating secure original equipment manufacturer (OEM) identification
US9250914B2 (en) 2013-12-20 2016-02-02 Intel Corporation Method and apparatus for selecting cache locality for atomic operations
US9361106B2 (en) 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9912481B2 (en) 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7254231B1 (en) * 1999-10-14 2007-08-07 Ati International Srl Encryption/decryption instruction set enhancement
US20020018562A1 (en) * 2000-06-13 2002-02-14 Hynix Semiconductor Inc. Key scheduler for encryption apparatus using data encryption standard algorithm
TW526450B (en) * 2000-12-13 2003-04-01 Infineon Technologies Ag Cryptographic processor
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8356185B2 (en) * 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI646818B (zh) * 2013-08-08 2019-01-01 英特爾公司 用以提供安全密碼雜湊循環功能之指令與邏輯(二)
TWI745333B (zh) * 2016-02-12 2021-11-11 英商Arm股份有限公司 用於控制有界指標的使用的設備及方法
TWI754680B (zh) * 2016-11-03 2022-02-11 南韓商三星電子股份有限公司 產生起始估算值的裝置及方法、製造方法及測試方法
US11610003B2 (en) 2020-05-29 2023-03-21 Delta Electronics, Inc. Software protection method and system thereof

Also Published As

Publication number Publication date
EP3031167A4 (en) 2017-03-29
JP2018013802A (ja) 2018-01-25
EP3031167B1 (en) 2019-02-06
TW201642619A (zh) 2016-12-01
RU2637463C2 (ru) 2017-12-04
WO2015021380A1 (en) 2015-02-12
US20150043729A1 (en) 2015-02-12
TW201519623A (zh) 2015-05-16
JP6504679B2 (ja) 2019-04-24
RU2016100274A (ru) 2017-07-14
TWI646818B (zh) 2019-01-01
US10038550B2 (en) 2018-07-31
CN105409158A (zh) 2016-03-16
JP2016527569A (ja) 2016-09-08
EP3031167A1 (en) 2016-06-15
JP6220453B2 (ja) 2017-10-25
KR20160017080A (ko) 2016-02-15
CN105409158B (zh) 2019-07-02
KR101821066B1 (ko) 2018-01-22

Similar Documents

Publication Publication Date Title
TWI551104B (zh) 用以提供安全密碼雜湊循環功能之指令與邏輯
US11849035B2 (en) Instructions and logic to provide SIMD SM4 cryptographic block cipher
US10592245B2 (en) Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
TWI595376B (zh) 用於提供密碼算術功能的處理器、機器可讀媒體、方法及處理系統
US8924741B2 (en) Instruction and logic to provide SIMD secure hashing round slice functionality
CN108228960B (zh) 用于熔丝验证的基于Simon的散列
US10606765B2 (en) Composite field scaled affine transforms-based hardware accelerator
CN112580113A (zh) 具有专用流水线的处理器
EP3338397B1 (en) Instructions and logic to provide simd sm3 cryptographic hashing functionality
US20240146521A1 (en) Instructions and logic to provide simd sm4 cryptographic block cipher functionality

Legal Events

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