TWI489380B - 執行矩陣乘法累積指令的方法、設備與系統及其製品 - Google Patents
執行矩陣乘法累積指令的方法、設備與系統及其製品 Download PDFInfo
- Publication number
- TWI489380B TWI489380B TW101146189A TW101146189A TWI489380B TW I489380 B TWI489380 B TW I489380B TW 101146189 A TW101146189 A TW 101146189A TW 101146189 A TW101146189 A TW 101146189A TW I489380 B TWI489380 B TW I489380B
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- matrix
- register
- stored
- result
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
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 Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Power Engineering (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
此揭示發明相關於加密演算法,並特別相關於Groestl安全散列演算法。
加密係依賴演算法及金鑰保護資訊的工具。演算法係複雜數學演算法且金鑰係位元串。有二種基本種類的加密系統:秘密金鑰系統及公開金鑰系統。也稱為對稱系統的秘密金鑰系統具有為二或多方共享的單一金鑰(「秘密金鑰」)。該單一金鑰用於加密及解密資訊二者。
由美國國家標準技術局(NIST)發佈為聯邦資訊處理標準(FIPS)197的先進加密標準(AES)係秘密金鑰系統。AES係可加密及解密資訊的對稱式區塊加密。Groestl演算法係使用從二個固定、大型、不同排列(P及Q)建立的壓縮函數之以AES-為基的迭代散列函數。
經由P及Q的排列將壓縮函數(f)界定成使得:f(h,m)=P(h XOR m)XOR Q(m)XOR h,其中函數P及Q係排列函數且hi-1
係輸入狀態、mi
係訊息區塊輸入、且hi
係結果狀態。加密(加密)使用秘密金鑰(加密金鑰)實施一系列轉換,以將稱為「明文」的易理解資料轉換為稱為「密文」的不易理解形式。加密中的轉換包括:(1)使用互斥或(XOR)運算將回合常數(導自P函數及Q函數的值)加至狀態(二維位元組陣列);(2)使用非線性位元組代換表
(S-Box)處理該狀態;(3)藉由不同位移循環位移該狀態的末三列;及(4)取出該狀態的所有行並(彼此獨立地)混合彼等的資料,以產生新行。
解密(反加密)使用該加密金鑰實施一系列轉換,以將「密文」區塊轉換為相同尺寸的「明文」區塊。反加密中的轉換與加密中的轉換相反。
Groestl演算法以10或14個連續回合將明文轉換為密文或將密文轉換為明文,回合的數量取決於金鑰的長度。
在以下描述中,為了解釋,陳述許多具體細節以提供對本發明的徹底瞭解。然而,對熟悉本發明之人士將係明顯的,可能實現本發明而無需部分此等具體細節。在其他實例中,方塊圖形式顯示已為人熟知的結構及裝置,以避免模糊下文的本發明原理。
在本說明書中提及的「一實施例」或「實施例」意指將相關於該實施例描述的特定特性、結構、或特徵包括在本發明之至少一實施例中。在本說明書之各種位置出現的片語「在一實施例中」不必然全部指相同的實施例。
描述包括處理Groestl安全散列演算法之指令的機制。如上文所述,Groestl演算法係基於指定在AES標準中之Rijindael演算法的加密散列函數。AES標準包括提供用於在通用處理器中實施AES加密及解密之延伸指令集
的指令集(例如,AES指令集)。
AES指令集係x86指令集架構(ISA)的延伸,其改善使用AES演算法之應用程式的速度。根據一實施例,將AES延伸指令集實作成實施Groestl演算法。圖1係包括用於在通用處理器中實施Groestl加密及解密之AES延伸指令集的系統100之一實施例的方塊圖。
系統100包括處理器101、記憶體控制器集線器(MCH)102、及輸入/輸出(I/O)控制器集線器(ICH)104。MCH 102包括控制處理器101及記憶體108之間的通訊的記憶體控制器106。處理器101及MCH 102透過系統匯流排116通訊。
處理器101可能係複數種處理器的任何一種,諸如,單核心Intel® Pentium IV®處理器、單核心Intel Celeron處理器、Intel® XScale處理器、或多核心處理器,諸如,Intel® Pentium D、Intel® Xeon®處理器、Intel® Core® i3、i5、i7、2 Duo、及Quad、Xeon®、Itanium®處理器、或任何其他種類的處理器。
記憶體108可能係動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、同步動態隨機存取記憶體(SDRAM)、雙倍資料速率2(DDR2)RAM、或Rambus動態隨機存取記憶體(RDRAM)、或任何其他種類的記憶體。
可能使用高速晶片-對晶片互連114,諸如,直接媒體介面(DMI),將ICH 104耦合至MCH 102。DMI經由二單向通道支援2十億位元/每秒並行轉移率。
ICH 104可能包括用於控制與耦合至ICH 104之至少一個儲存裝置112的通訊之儲存器I/O控制器110。儲存裝置可能係,例如,硬碟、數位視訊光碟(DVD)驅動、光碟(CD)驅動、廉價磁碟冗餘陣列(RAID)、磁帶驅動、或其他儲存裝置。ICH 104可能透過使用串聯儲存協定,諸如,序列附接小型電腦系統介面(SAS)、序列先進技術附接(SATA),的儲存協定互連118與儲存裝置112通訊。
在一實施例中,處理器101包括實施Groestl加密及解密運算的Groestl函數103。可能使用Groestl函數103加密或解密儲存在記憶體108及/或儲存在儲存裝置112中的資訊。
圖2係描繪處理器101之一實施例的方塊圖。處理器101包括用於解碼從1級(L1)指令快取記憶體202接收之處理器指令的提取及解碼單元202。可能將用於執行該指令的資料儲存在暫存器檔案208中。在一實施例中,暫存器檔案208包括由AES指令使用以儲存供AES指令使用之資料的複數個暫存器。
圖3係暫存器檔案208中之合適封裝資料暫存器集的範例實施例的方塊圖。所描繪的封裝資料暫存器包括三十二個512位元封裝資料或向量暫存器。將此等三十二個512位元暫存器標示為ZMM0至ZMM31。在所說明的實施例中,將此等暫存器之較低的十六個暫存器,亦即,ZMM0-ZMM15,的低階256-位元化名或重疊在標示為YMM0-YMM15的個別256-位元封裝資料或向量暫存器
上,雖然此非必要的。
相似地,在所說明的實施例中,將YMM0-YMM15的低階128-位元化名或重疊在標示為XMM0-XMM15的個別128-位元封裝資料或向量暫存器上,雖然此也不係必要的。可操作512-位元暫存器ZMM0至ZMM31以保持512-位元封裝資料、256-位元封裝資料、或128-位元封裝資料。
可操作256-位元暫存器YMM0-YMM15以保持256-位元封裝資料或128-位元封裝資料。可操作128-位元暫存器XMM1-XMM15以保持128-位元封裝資料。可能使用各暫存器儲存封裝浮點資料或封裝整數資料之任一者。受支援的不同資料元素尺寸至少包括8-位元位元組資料、16-位元字組資料、32-位元雙字組或單精準浮點資料、及64-位元四字組或倍精準浮點資料。封裝資料暫存器的其他實施例可能包括不同數量的暫存器、不同尺寸的暫存器、及可能或可能不將較大暫存器化名在較小暫存器上。
參考回圖2,提取及解碼單元206從L1指令快取記憶體202提取巨集指令,解碼該巨集指令,並將彼等拆解為稱為微運算(μ運算)的簡單運算。執行單元210排程及執行微運算。在所示的實施例中,執行單元210中的Groestl函數103包括用於AES指令的微運算。引退單元212將已執行指令的結果寫至暫存器或記憶體。
Groestl函數103實施壓縮函數f(h,m)=P(h XOR m)XOR Q(m)XOR h,其中將P及Q的排列設計成使用許多回合
數R,其包括許多回合的轉換。在Groestl函數103中,對各排列界定總共四輪的轉換。轉換在表示為8-位元位元組之矩陣(例如,矩陣A)的狀態上運算。在一實施例中,矩陣具有8列及8行。然而,其他實施例可能實作其他變化(例如,8列及16行)。
在一實施例中,由Groestl函數103實施的轉換序列包括AddRoundConstant(AC)轉換、SubBytes轉換、ShiftBytes轉換、及MixBytes轉換。
AC轉換將回合相關常數(例如,A←A XOR c[i],其中c[i]係用於在回合i中的回合常數)加至狀態矩陣A。P及Q具有不同回合常數。
SubBytes轉換以其他值取代狀態矩陣中的各位元組。狀態係使用非線性位元組取代表(S-Box)處理。SubBytes係藉由將S-box轉換施用至16個位元組的每一者而界定的16位元組對16位元組(逐位元組)轉換。
可經由查找表將S-box轉換表示如下:至查找的輸入為位元組B[7:0],其中x及y指示低及高半位元組x[3:0]=B[7:4],y[3:0]=B[3:0]。在該表中以十六進位(H)記法將輸出位元組編碼為二個數字。在一實施例中,AES-NI指令集提供實施用於Groestl之SubBytes的精確功能。在此種實施例中,使用AES-NI指令AESENCLAST計算SubBytes轉換。
ShiftBytes轉換藉由許多位置將列內的位元組向左循環地移位。在一實施例中,ShiftBytes實作AES-NI指令
PSHUFB,以迅速地重排序XMM暫存器中的位元組。
當在XMM/YMM暫存器中依列地組織P及Q矩陣時,AC及ShiftBytes運算不密集地計算,同時SubBytes運算可使用AES-NI指令AESENCLAST在同一時間對多達16個位元組計算。因此,AES指令集中的大部分複雜性及週期係由於MixBytes運算。
MixBytes轉換獨立地轉換矩陣中的各行。MixBytes實作有限域F256
,其係經由在F2
的不可約多項式x8
XOR x4
XOR x3
XOR x XOR 1界定。可將狀態矩陣A的位元組視為F256
的元素(例如,如同具有{0,1}的係數之最多7次的多項式)。各位元組的最低有效位元決定x0
的係數等。
MixBytes在F256
中將矩陣A的各行乘以8x8常數矩陣B。因此,可將整體矩陣A上的轉換寫成矩陣乘法A←B x A。在一實施例中,矩陣B係循環的(例如,各列與向右旋轉一位置的上一列相等)並指定為:
因此,B=circ(02;02;03;04;05;03;05;07)。在F256
中將狀態矩陣的各列與循環矩陣B中的8列相乘並累計,以一次展開MixBytes轉換的一列。此運算消耗8個指令(在F256
中的64個乘法/累計)。針對Groestl-224/256實作總共64x8 Galois欄位(GF)256乘法/累計(使用乘數02、03、04、05、07)。
因為Groestl狀態係依列組織,該已更新狀態矩陣以一次一列形成,使得:Result Row1=ARow1*02+ARow2*02+ARow3*03+ARow4*04+ARow5*05+ARow6*03+ARow7*05+ARow8*07 Result Row2=ARow1*07+ARow2*02+ARow3*02+ARow4*03+ARow5*04+ARow6*05+ARow7*03+ARow8*05 Result Row3=ARow1*05+ARow2*07+ARow3*02+ARow4*02+ARow5*03+ARow6*04+ARow7*05+ARow8*03 Result Row4=ARow1*03+ARow2*05+ARow3*07+ARow4*02+ARow5*02+ARow6*03+ARow7*04+ARow8*05 Result Row5=ARow1*05+ARow2*03+ARow3*05+ARow4*07+ARow5*02+ARow6*02+ARow7*03+ARow8*04 Result Row6=ARow1*04+ARow2*05+ARow3*03+ARow4*05+ARow5*07+ARow6*02+ARow7*02+ARow8*03 Result Row7=ARow1*03+ARow2*04+ARow3*05+ARow4*03+ARow5*05+ARow6*07+ARow7*02+ARow8*02 Result Row8=ARow1*02+ARow2*03+ARow3*04+ARow4*05+ARow5*03+ARow6*05+ARow7*07+ARow8*02
目前,乘以02、03、04、05、及07的GF乘法以每列乘2的八個GF乘法及每雙列乘以2再每列產生4倍乘積的八個額外GF乘法完成。此導致十六個GF乘法。將03因子形成為row XOR 2*row、將05因子形成為row XOR 4*row、並將07因子形成為row XOR 2*row XOR 4*row。另外,在習知系統中實施的XOR運算總數從48改變至108。
在使用AES指令的習知系統中,乘2的GF乘法係藉由產生具有用於被乘數位元組的十六進位FF之位元組的暫存器而完成,該等被乘數位元組具有針對超過256的各位元組乘積致能1B之加法(XOR)的最高有效位元(msb)(例如,=1)。在此種系統中,使用pcmpgtb指令產生該FF位元組遮罩暫存器。因此,乘2的乘法需要四或五個SIMD指令。因此,使用目前指令之MixBytes的預期效能為需要每週期引退2個SIMD指令之61個週期的(16*4)+58=122個運算。
根據一實施例,將新指令MAC_BYTE_MATRIX_GF2實作成藉由實施二矩陣的乘法累計運算加速MixBytes轉換。在此種實施例中,將MAC_BYTE_MATRIX_GF2界定為MAC_BYTE_MATRIX_GF2 ZMM1,ZMM2,imm8,其中ZMM2=以8位元組列的64位元部組織的最初8x8狀態矩陣;ZMM3=乘法常數;ZMM1=新的8x8矩陣(例如,結果矩陣);且imm8代表8次多項式。
圖4A係描繪針對結果矩陣中的每個位置8*i+j(ZMM1[i][j])
藉由MAC_BYTE_MATRIX_GF2指令實施之處理的一實施例的流程圖,其中i、j在範圍[0-7]中。在處理區塊410,將在狀態矩陣(例如,矩陣A)中之8位元位置(ZMM2[i][k])的值乘以常數矩陣(例如,矩陣B)中的8位元位置(ZMM3[k][j]),其中k代表經由該處理以處理多項式之各項的迭代(0-7)。
在一實施例中,乘法結果值係經由處理區塊420歸約至8位元值的16位元值。在處理區塊430中,將乘法/歸約結果值與目前位置值ZMM1[i][j]互斥或。在處理區塊430,將結果值儲存在ZMM1[i][j]中。在決策區塊440,決定是否有額外的列位置在ZMM2及ZMM3中,以處理額外的多項式迭代。
若為真,控制返回至重複該處理的處理區塊410。否則,該處理針對目前的ZMM1位置(例如,ZMM1[i0
][j0
])完成,並對次一位置(例如,ZMM1[i1
][j0
]、ZMM1[i1
][j1
]等)重複。圖4B描繪MAC_BYTE_MATRIX_GF2指令之虛擬碼的一實施例。
在其他實施例中,該處理可能以不同次序實施。例如,可能將歸約運算實施為該處理中的最終步驟(例如,所有乘法及XOR函數均已針對該矩陣實施之後)。將MAC_BYTE_MATRIX_GF2指令實作在容許在4週期中計算P及Q矩陣的3週期管線中。該指令對二個P及Q 8x8 Groestl狀態矩陣的MixBytes計算所產生的效能改良係從60個週期減少至4個週期。
在另一實施例中,Groestl-1024在P1024
及Q1024
狀態矩陣上使用針對矩陣的左8x8側使用2個MUL_BYTE_GF2指令並對矩陣的右8x8側使用2個MUL_BYTE_GF2指令的相同指令實施MixBytes運算。
雖然係在Groestl演算法的上下文內描述,MAC_BYTE_MATRIX_GF2指令可能使用在實作矩陣乘法累積函數,諸如,里德所羅門碼(Reed Solomon Codes),的任何種類的應用程式中。在此種實施例中,以一般矩陣值取代狀態矩陣及Groestl常數矩陣。
圖5係描繪根據本發明的一實施例之暫存器架構500的方塊圖。將暫存器架構的暫存器檔案及暫存器列示如下:
向量暫存器檔案510-在所說明的實施例中,有32個512位元寬的向量暫存器;將此等暫存器稱為zmm0至zmm31。將較低的16個zmm暫存器的低階256個位元重疊在暫存器ymm0-16上。將較低的16個zmm暫存器的低階128個位元(ymm暫存器之低階128個位元)重疊在暫存器xmm0-15上。
寫入遮罩暫存器515-在說明實施例中,有8個寫入遮罩暫存器(k0至k7),各者的尺寸為64位元。如先前描述的,在本發明的一實施例中,向量遮罩暫存器k0不能使用為寫入遮罩;當編碼通常會指示將k0用於寫入遮罩
時,其選擇0xFFFF的硬接寫入遮罩,有效地將該指令的寫入遮罩除能。
多媒體延伸控制狀態暫存器(MXCSR)1020-在說明實施例中,此32-位元暫存器提供使用在浮點運算中的狀態及控制位元。
通用暫存器525-在說明實施例中,有連同既存之x86定址模式使用以定址記憶體運算元的十六個64位元通用暫存器。藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15參考至此等暫存器。
擴充旗標(EFLAGS)暫存器530-在說明實施例中,使用此32位元暫存器記錄許多指令的結果。
浮點控制字組(FCW)暫存器535及浮點狀態字組(FSW)暫存器540-在所說明的實施例中,此等暫存器為x87延伸指令集所使用以在FCW的情形中設定捨入模式,異常遮罩、及旗標,並在FSW的情形中保持對異常的追蹤。
純量浮點堆疊暫存器檔案(x87堆疊)545,在其上的係化名的MMX封裝整數平坦暫存器檔案1050-在說明實施例中,x87堆疊係用於使用x87延伸指令集在32/64/80位元浮點資料上實施純量浮點操作的八元素堆疊;而將MMX暫存器用於在64位元封裝整數資料上實施操作,及針對在MMX及XMM暫存器之間實施的部分操作保持運算元。
分節暫存器555-在說明實施例中,使用六個16位元
暫存器儲存用於分節位址產生的資料。
RIP暫存器565-在說明實施例中,此64位元暫存器儲存指令指標。
本發明的替代實施例可能使用更寬或更窄的暫存器。此外,本發明的其他實施例可能使用更多、更少、或不同的暫存器檔案及暫存器。
圖6A-B描繪範例有序處理器架構的方塊圖。將此等範例實施例設計成有關以寬向量處理器(VPU)增強之有序CPU的多個實例。核心依據應用經由高帶寬互連網路與特定固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯通訊。例如,此實施例之作為獨立GPU的實作典型地將包括PCIe匯流排。
圖6A係根據本發明的實施例之連同其之至晶粒上互連網路602的連接及其之2級(L2)快取記憶體的區域子集1104之單處理器核心的方塊圖。指令解碼器600支援具有延伸的x86指令集。雖然在本發明的一實施例(為簡化設計)中,純量單元608及向量單元610使用分離的暫存器集(分別係純量暫存器612及向量暫存器614),並將在彼等之間轉移的資料寫至記憶體,然後從1級(L1)快取記憶體606讀回,本發明的其他實施例可能使用不同方法(例如,使用單一暫存器集或包括容許資料在二暫存器檔案之間轉移而無需寫入及讀回的通訊路徑)。
L1快取記憶體606容許將記憶體快取入純量及向量單元的低潛伏期存取。連同向量親和指令格式中的載入運算,此意謂著可略為將L1快取記憶體606視為係延伸暫存器檔案。此顯著地改良許多演算法的效能。
L2快取記憶體區域子集604係分割成分離區域子集之整體L2快取記憶體的一部分,每個CPU核心有一子集。各CPU具有至其自有之L2快取記憶體區域子集604的直接存取路徑。將由CPU核心讀取的資料儲存在其L2快取記憶體子集604中,並可與存取彼等自有之區域L2快取記憶體子集的其他CPU平行地迅速地存取。將由CPU核心寫入的資料儲存在其自有的L2快取記憶體子集604中,且若有需要,從其他子集清除。該環狀網路確保共享資料的一致性。
圖6B係根據本發明的實施例之圖6A中的部分CPU核心的分解圖。圖6B包括L1快取記憶體604的L1資料快取記憶體606A部分,以及關於向量單元610及向量暫存器1114的更多細節。具體地說,向量單元610係寬度16的向量處理單元(VPU)(見寬度16的ALU 1128),其執行整數、單精準浮點、及倍精準浮點指令。VPU支援在記憶體輸入上使用交叉混合單元620交叉混合暫存器輸入,使用數值轉變單元622A-B的數值轉變,及使用複製單元624的複製。寫入遮罩暫存器626容許預測所產生的向量寫入。
暫存器資料可用各種方式交叉混合,例如,以支援矩
陣乘法。來自記憶體的資料可跨越VPU通道複製。此係圖形及非圖形資料處理二者中的共同運算,其顯著地增加快取記憶體效率。
該環狀網路係雙向的,以容許代理器,諸如,CPU核心、L2快取記憶體、及其他邏輯區塊在晶片內彼此通訊。各環狀資料路徑在每方向上為1012-位元寬。
圖7係描繪根據本發明的實施例之範例無序架構的方塊圖。具體地說,圖7描繪已為人熟知之已經改良以合併向量親和指令格式及其執行的範例無序架構。在圖7中,箭號指示在二或多個單元之間的耦合,且箭號的方向指示資料流在該等單元之間的方向。圖7包括耦合至執行引擎單元710及記憶體單元715的前端單元705;執行引擎單元710更耦合至記憶體單元715。
前端單元705包括耦合至2級(L2)分支預測單元722的1級(L1)分支預測單元720。將L1及L2分支預測單元720及722耦合至L1指令快取記憶體單元724。將L1指令快取記憶體單元724耦合至更耦合至指令提取及預解碼單元728的指令轉換後備緩衝器(TLB)726。將指令提取及預解碼單元728耦合至更耦合至解碼單元732的指令佇列單元730。解碼單元732包括複雜解碼器單元734及三個簡單解碼器單元736、738、及740。解碼器單元732包括微碼ROM單元742。解碼單元7可能如先前描述地在解碼
級部分中運算。將L1指令快取單元724另外耦合至記憶體單元715中的L2快取記憶體單元748。將指令TLB單元726另外耦合至記憶體單元715中的第二級TLB單元746。將解碼單元732、微碼ROMM單元742、及迴路串流偵測器單元744各者耦合至執行引擎單元710中的更名/配置器單元756。
執行引擎單元710包括耦合至引退單元774及統一排程器單元758的更名/配置器單元756。引退單元774更耦合至執行單元760並包括重排序緩衝器778。統一排程器單元758更耦合至實體暫存器檔案單元776,其耦合至執行單元760。實體暫存器檔案單元776包括向量暫存器單元777A、寫入遮罩暫存器單元777B、及純量暫存器單元777C;此等暫存器單元可能提供向量暫存器510、向量遮罩暫存器515、及通用暫存器525;且實體暫存器檔案單元776可能包括未顯示的額外暫存器檔案(例如,化名在MMX封裝整數平坦暫存器檔案550上的純量浮點堆疊暫存器檔案545)。執行單元1260包括三個混合純量及向量單元762、764、及772;載入單元766;儲存位址單元768;儲存資料單元770。將載入單元766、儲存位址單元768、及儲存資料單元770各者更耦合至記憶體單元715中的資料TLB讀取752。
記憶體單元715包括耦合至資料TLB單元752的第二級TLB單元746。將資料TLB單元752耦合至L1資料快取記憶體單元754。將L1資料快取記憶體單元754更耦
合至L2快取記憶體單元748。在部分實施例中,將L2快取記憶體單元748更耦合至在記憶體單元715內側及/或外側的L3及更高快取記憶體單元750。
藉由範例,範例無序架構可能將處理管線8200實作如下:1)指令提取及預解碼單元728實施提取及長度解碼級;2)解碼單元732實施解碼級;3)更名/配置器單元756實施配置級及更名級;4)統一排程器758實施排程級;5)實體暫存器檔案單元776、重排序緩衝器單元778、及記憶體單元715實施暫存器讀取/記憶體讀取級;執行單元760實施執行/資料轉換級;6)記憶體單元715及重排序緩衝器778實施寫回/記憶體寫入級1960;7)引退單元774實施ROB讀取級;8)各種單元可能包含在異常管理級中;及9)引退單元1274及實體暫存器檔案單元776實施提交級。
圖8-10係適合包括處理器101的範例系統。在本技術中為人所知之用於膝上型、桌上型、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各種其他電子裝置的其他系統設計及組態也係合適的。通常,能合併如本文揭示之處理器及/或其他執行邏輯之種類繁多的系統或電子裝置通
常係合適的。
現在參考至圖8,顯示係根據本發明的一實施例之系統800的方塊圖。系統800可能包括一或多個處理器810、815,彼等耦合至圖形記憶體控制器集線器(GMCH)820。在圖8中以虛線標示額外處理器815的選擇性性質。
各處理器810、815可能係處理器1700的特定版本。然而,應注意積體圖形邏輯及積體記憶體控制器單元不太可能會存在於處理器810及815中。
圖8描繪可能耦合至可能係,例如,動態隨機存取記憶體(DRAM),之記憶體840的GMCH 820。至少針對一實施例,DRAM可能與非揮發性快取記憶體關聯。
GMCH 820可能係晶片組,或晶片組的一部分。GMCH 820可能與處理器(等)810、815通訊,並控制處理器(等)810、815與記憶體840之間的互動。GMCH 820也可能作為處理器(等)810、815及系統800的其他元件之間的加速匯流排介面使用。針對至少一實施例,GMCH 820經由多分支匯流排,諸如,前側匯流排(FSB)895,與處理器(等)810、815通訊。
此外,將GMCH 820耦合至顯示器845(諸如,平面顯示器)。GMCH 820可能包括積體圖形加速器。將GMCH820更耦合至輸入/輸出(I/O)控制器集線器850,其可能用於將各種周邊裝置耦合至系統800。例如,顯示於圖8中的係外部圖形裝置860,其可能係連同其他周邊裝置870
耦合至ICH 850的分離式圖形裝置。
或者,額外或不同的處理器也可能存在於系統800中。例如,額外處理器(等)815可能包括與處理器810相同的額外處理器(等)、與處理器810異質或非對稱的處理器(等)、加速器(諸如,圖形加速器或數位訊號處理器(DSP)單元)、場效可規劃閘極陣列、或任何其他處理器。依據包括架構、微架構、熱、及電力消耗特徵等之優點的度量頻譜,在實體資源810、815之間可有多種不同。此等不同可能有效地表現出處理元件810、815之間的非對稱及異質性。針對至少一實施例中,各種處理元件810、815可能駐留在相同晶粒封裝中。
現在參考至圖9,顯示係根據本發明的一實施例之第二系統900的方塊圖。如圖9所示,多處理器系統900係點-對-點互連系統,並包括經由點-對-點互連950耦合的第一處理器970及第二處理器980。如圖9所示,各處理器970及980可能係相同版本的處理器101。
或者,一或多個處理器970、980可能係處理器以外的元件,諸如,加速器或場效可規劃閘極陣列。
雖然僅顯示二處理器970、980,待理解本發明的範圍並未受如此限制。在其他實施例中,一或多個額外處理元件可能存在於給定處理器中。
處理器970可能更包括積體記憶體控制器集線器(IMC)972及點-對-點(P-P)介面976及978。相似地,第二處理器980可能包括IMC 982及P-P介面986及988。處
理器970、980可能經由使用PtP介面電路978、988的點-對-點(PtP)介面950交換資訊。如圖9所示,IMC 972及982將處理器耦合至個別記憶體,亦即,記憶體942及944,彼等可能係區域地附接至個別處理器之主記憶體的部分。
處理器970、980各者可能經由使用點對點介面電路976、994、986、998的個別P-P介面952、954與晶片組990交換資料。晶片組990也可能經由高效能圖形介面939與高效能圖形電路938交換資料。
可能將共享快取記憶體(未圖示)包括在處理器中或二處理器外側,仍經由P-P互連與處理器連接,使得若處理器置於低電源模式中,可能將任一或二處理器的區域快取資訊儲存在共享快取記憶體中。可能經由介面996將晶片組990耦合至第一匯流排916。雖然本發明的範圍未受如此限制,在一實施例中,第一匯流排916可能係週邊組件互連(PCI)匯流排、或係諸如PCI快速匯流排或其他第三代I/O互連匯流排的匯流排。
如圖9所示,可能連同將第一匯流排916耦合至第二匯流排920的匯流排橋接器918,將各種I/O裝置99耦合至第一匯流排916。在一實施例中,第二匯流排920可能係低插腳數(LPC)匯流排。在一實施例中,可能將各種裝置耦合至第二匯流排920,包括,例如,鍵盤/滑鼠922、通訊裝置926、以及資料儲存單元928,諸如,硬碟驅動器,或可能包括碼930的其他大量儲存裝置。另外,可能
將音訊I/O 924耦合至第二匯流排920。須注意其他架構也係可能的。例如,取代圖9的點對點架構,系統可能實作多分支匯流排或其他此種架構。
現在參考至圖10,顯示係根據本發明的一實施例之第三系統1500的方塊圖。圖9及10中的相似元件有相似參考數字,且圖9的特定實施樣態已從圖10省略,以避免混淆圖10的其他實施樣態。
圖10描繪處理元件970、980可能分別包括積體記憶體及I/O控制邏輯(「CL」)972及982。針對至少一實施例,CL 972、982可能包括記憶體控制器集線器邏輯(IMC)。此外,CL 972、982也可能包括I/O控制邏輯。圖10描繪不僅將記憶體942、944耦合至CL 972、982,也將I/O裝置914耦合至控制邏輯972、982。將傳統I/O裝置915耦合至晶片組990。
現在參考至圖11,顯示係根據本發明的實施例之SoC 1100的方塊圖。圖11中的相似元件有相似的參考數字。又,虛線方塊係在更先進SoC上的選擇性特性。在圖11中,將互連單元(等)1102耦合至:包括一組一或多個核心1102A-N及共享快取記憶體單元(等)1106的應用處理器1110;系統代理器單元1110;匯流排控制器單元(等)1111;積體記憶體控制器單元(等)1114;可能包括積體圖形邏輯1108、用於提供靜態及/或視訊照相機功能的影像處理器1124、用於提供硬體音訊加速的音訊處理器1126、及用於提供視訊編碼/解碼加速之視訊處理器1128
的一組或一或多個媒體處理器1120;靜態隨機存取記憶體(SRAM)單元1130;直接記憶體存取(DMA)單元1132;及用於耦合至一或多個外部顯示器的顯示單元1140。
本文揭示之機制的實施例可能以硬體、軟體、韌體、或此種實作方式的組合實作。本發明的實施例可能實作為在可程式化系統上執行的電腦程式或程式碼,該系統包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
可能將程式碼施用至輸入資料,以實施本文描述的函數並產生輸出資訊。可能以已知方式將輸出資訊施用至一或多個輸出裝置。針對此申請案的用途,處理系統包括具有處理器,諸如;數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器的系統。
程式碼可能以高階程序或物件導向程式語言實作,以與處理系統通訊。若有需要,程式碼也可能以組合或機器語言實作。實際上,本文描述的機制並未受限在任何特定程式語言範圍中。在任何情形中,語言可能係編譯或解譯語言。
至少一實施例的一或多個實施樣態可能藉由儲存在機器可讀媒體上之代表處理器內的各種邏輯的代表性指令實作,當其由機器讀取時,導致機器製造邏輯以實施本文描述的技術。可能將稱為「IP核心」的此種代表性儲存在實體機器可讀媒體中,並供應至各種客戶或製造設施,以載入至實際產生邏輯或處理器的製造機器中。
此種機器可讀儲存媒體可能不受限制地包括藉由機器或裝置製造或形成的非暫時實體製品配置,包括儲存媒體,諸如,硬碟、任何其他種類的碟片,包括軟碟、光碟(光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW))、以及磁光碟、半導體裝置,諸如,唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如,動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、磁或光學卡、或適合儲存電子指令之任何其他種類的媒體。
因此,本發明的實施例也包括包含向量親和指令格式的指令或包含設計資料,諸如,硬體描述語言(HDL),其界定本文描述之結構、電路、設備、處理器、及/或系統特性的非暫時實體機器可讀媒體。此種實施例也可能稱為程式產品。
在部分情形中,指令變換器可能用於將指令從來源指令集變換為目標指令集。例如,指令變換器可能將指令轉換(例如,使用靜態二進位轉換、包括動態編譯的動態二進位轉換)、變形、模仿、或另外變換為由核心處理的一或多個其他指令。該指令轉換器可能實作成軟體、硬體、韌體、或彼等之組合。該指令轉換器可能在處理器上、在處理器外、或部分在處理器上且部分在處理器外。
圖13係根據本發明的實施例之使用軟體指令變換器將來源指令集中的二進位指令變換為目標指令集中之二進
位指令的對照方塊圖。在說明實施例中,指令變換器係軟體指令變換器,雖然指令變換器可能替代地以軟體、韌體、硬體、或彼等的各種組合實作。
圖13顯示以可能使用x86編譯器1304編譯以高階語言1302撰寫的程式,以產生可能由具有至少一x86指令集核心的處理器1316原生地執行的x86二進位碼1306(假設將部分指令編譯成向量親和指令格式)。具有至少一x86指令集核心的處理器1816代表可藉由相容地執行或另外處理(1)Intel x86指令集核心的實質指令集部分,或(2)目標為在具有至少一x86指令集核心的Intel處理器上運行之應用程式或其他軟體的目的碼版本,實施與具有至少一x86指令集核心之Intel處理器實質相同之功能的任何處理器,以實現與具有至少一x86指令集核心之Intel處理器實質相同的結果。x86編譯器1804代表可操作以使用或不使用額外聯結處理以產生可在具有至少一x86指令集核心的處理器1316上執行的x86二進位碼1306(例如,目的碼)的編譯器。相似地,圖90顯示可能使用替代指令集編譯器1308編譯以高階語言1302撰寫的程式,以產生可能為不具有至少一x86指令集核心的處理器1314(例如,具有執行加州桑尼維爾的MIPS Technologies的MIPS指令集及/或加州桑尼維爾的ARM Holdings的ARM指令集之核心的處理器)原生地執行的替代指令集二進位碼1310。指令變換器1312用於將x86二進位碼1306變換為可能為不具有x86指令集核心的處理器1314原生地執行的碼。
此已變換碼不太可能與替代指令集二進位碼1310相同,因為難以產生能作到此的指令變換器;然而,已變換碼將完成由來自將替代指令集的指令構成的一般操作。因此,指令變換器1312代表經由模仿、模擬、或任何其他處理容許不具有x86指令集處理器或核心的處理器或其他電子裝置執行x86二進位碼1306的軟體、韌體、硬體、或彼等的組合。
指令(等)的特定操作可能藉由硬體組件實施,且可能具現在機器可執行指令中,其可能用於導致,或至少導致使用該等指令規畫的電路或其他硬體組件實施該等操作。該電路可能包括通用或專用處理器、或邏輯電路,此處僅舉幾個例子。該等操作也可能選擇性地由硬體及軟體的組合實施。執行邏輯及/或處理器可能包括回應機器指令或導自機器指令之一或多個控制訊號以儲存指令指定結果運算元的特殊或特定電路或其他邏輯。例如,本文揭示之指令(等)的實施例可能在圖13-16之一或多個系統中執行,並可能將採用向量親和指令格式之指令(等)的實施例儲存在待於該等系統中執行的程式碼中。此外,此等圖式的處理元件可能使用本文詳述之管線及/或詳述的架構(例如,有序及/或無序架構)之一者。例如,有序架構的解碼單元可能解碼指令(等)、傳送已解碼指令至向量或純量單元等。
以上描述意圖說明本發明的較佳實施例。從以上討論,特別在成長快速且不容易預見其他進步的此種技術領
域中也應該係明顯的,本發明可由熟悉本技術的人士改良配置及細節而不脫離在隨附之申請專利範圍及彼等的等效範圍內的本發明的原理。例如,可能將方法的一或多個運算組合或另外拆開。
雖然已描述會原生地執行向量親和指令格式的實施例,本發明的替代實施例可能經由在執行不同指令集的處理器(例如,執行加州桑尼維爾的MIPS Technologies的MIPS指令集的處理器、執行加州桑尼維爾的ARM Holdings的ARM指令集的處理器)上執行的模仿層執行向量親和指令格式。又,雖然圖式中的流程圖顯示由本發明之特定實施例實施的特定運算次序,應理解此種次序係範例(例如,替代實施例可能以不同次序實施運算、組合特定運算、重疊特定運算等)。
在以上描述中,為了解釋的目的,已陳述許多具體細節,以提供對本發明實施例的徹底瞭解。然而,可能實現一或多個其他實施例而無需部分此等具體細節對熟悉本發明之人士將係明顯的。所描述之該等特定實施例未用於限制本發明,而係說明本發明之實施例。本發明的範例並未由上文提供的該等具體範例所決定,而僅由以下的申請專利範圍決定。
100、800‧‧‧系統
101、810、815‧‧‧處理器
102‧‧‧記憶體控制器集線器(MCH)
103‧‧‧Groestl函數
104‧‧‧輸入/輸出(I/O)控制器集線器(ICH)
106‧‧‧記憶體控制器
108、840、932、934‧‧‧記憶體
110‧‧‧儲存器I/O控制器
112‧‧‧儲存裝置
114‧‧‧高速晶片-對晶片互連
116‧‧‧系統匯流排
118‧‧‧儲存協定互連
202‧‧‧1級(L1)指令快取記憶體
206‧‧‧提取及解碼單元
208‧‧‧暫存器檔案
210、760‧‧‧執行單元
212‧‧‧引退單元
500‧‧‧暫存器架構
510‧‧‧向量暫存器檔案
515、626‧‧‧寫入遮罩暫存器
520‧‧‧多媒體延伸控制狀態暫存器
525‧‧‧通用暫存器
530‧‧‧擴充旗標(EFLAGS)暫存器
535‧‧‧浮點控制字組(FCW)暫存器
540‧‧‧浮點狀態字組(FSW)暫存器
545‧‧‧純量浮點堆疊暫存器檔案(x87堆疊)
550‧‧‧MMX封裝整數平坦暫存器檔案
555‧‧‧分節暫存器
565‧‧‧RIP暫存器
600‧‧‧指令解碼器
602‧‧‧晶粒上互連網路
604‧‧‧L2快取記憶體區域子集
606‧‧‧L1快取記憶體
606A‧‧‧L1資料快取記憶體
608‧‧‧純量單元
610‧‧‧向量單元
612‧‧‧純量暫存器
614‧‧‧向量暫存器
620‧‧‧交叉混合單元
622A、622B‧‧‧數值轉變單元
624‧‧‧複製單元
628‧‧‧寬度16的ALU
705‧‧‧前端單元
710‧‧‧執行引擎單元
715‧‧‧記憶體單元
720‧‧‧1級(L1)分支預測單元
722‧‧‧2級(L2)分支預測單元
724‧‧‧L1指令快取記憶體單元
726‧‧‧指令轉換後備緩衝器(TLB)
728‧‧‧指令提取及預解碼單元
730‧‧‧指令佇列單元
732‧‧‧解碼單元
734‧‧‧複雜解碼器單元
736、738、740‧‧‧簡單解碼器單元
742‧‧‧微碼ROM單元
744‧‧‧迴路串流偵測器單元
746‧‧‧第二級TLB單元
748‧‧‧L2快取記憶體單元
750‧‧‧L3及更高快取記憶體單元
752‧‧‧資料TLB單元
754‧‧‧L1資料快取記憶體單元
756‧‧‧更名/配置器單元
758‧‧‧統一排程器單元
762、764、772‧‧‧混合純量及向量單元
766‧‧‧載入單元
768‧‧‧儲存位址單元
770‧‧‧儲存資料單元
774‧‧‧引退單元
776‧‧‧實體暫存器檔案單元
777A‧‧‧向量暫存器單元
777B‧‧‧寫入遮罩暫存器單元
777C‧‧‧純量暫存器單元
778‧‧‧重排序緩衝器單元
820‧‧‧圖形記憶體控制器集線器(GMCH)
845‧‧‧顯示器
850‧‧‧輸入/輸出(I/O)控制器集線器(ICH)
860‧‧‧外部圖形裝置
870‧‧‧周邊裝置
900‧‧‧第二系統
914‧‧‧I/O裝置
916‧‧‧第一匯流排
918‧‧‧匯流排橋接器
920‧‧‧第二匯流排
922‧‧‧鍵盤/滑鼠
924‧‧‧音訊I/O
927‧‧‧通訊裝置
928‧‧‧資料儲存單元
930‧‧‧碼
938‧‧‧高效能圖形電路
939‧‧‧高效能圖形介面
950‧‧‧點-對-點互連
952、954、976、978、986、988‧‧‧點-對-點(P-P)介面
970‧‧‧第一處理器
972、982‧‧‧積體記憶體控制器集線器(IMC)
980‧‧‧第二處理器
990‧‧‧晶片組
994、998‧‧‧點對點介面電路
996‧‧‧介面
1000‧‧‧第三系統
1015‧‧‧傳統I/O裝置
1100‧‧‧SoC
1102‧‧‧互連單元
1102A、1102N‧‧‧核心
1106‧‧‧共享快取記憶體單元
1108‧‧‧積體圖形邏輯
1110‧‧‧應用處理器
1114‧‧‧積體記憶體控制器單元
1116‧‧‧匯流排控制器單元
1120‧‧‧媒體處理器
1124‧‧‧影像處理器
1126‧‧‧音訊處理器
1128‧‧‧視訊處理器
1130‧‧‧靜態隨機存取記憶體(SRAM)單元
1132‧‧‧直接記憶體存取(DMA)單元
1140‧‧‧顯示單元
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進位碼
1308‧‧‧替代指令集編譯器
1310‧‧‧替代指令集二進位碼
1312‧‧‧指令變換器
1314‧‧‧不具有至少一x86指令集核心的處理器
1316‧‧‧具有至少一x86指令集核心的處理器
k0、k7‧‧‧寫入遮罩暫存器
XMM1-15、YMM0-15、ZMM0、ZMM15、ZMM31‧‧‧暫存器
可從下列詳細描述並結合下列圖式得到對本發明的更佳理解,其中:圖1係描繪系統之一實施例的方塊圖;圖2係描繪處理器之一實施例的方塊圖;圖3係描繪封裝資料暫存器之一實施例的方塊圖;圖4A及4B描繪由MUL_ACCUMULATE_BYTE_GF2指令實施之處理的實施例;圖5係根據本發明的一實施例之暫存器架構的方塊圖。
圖6A係根據本發明的實施例之連同其之至晶粒上互連網路的連接及其之2級(L2)快取記憶體的區域子集之單CPU核心的方塊圖;圖6B係根據本發明的實施例之部分CPU核心的分解圖;圖7係描繪根據本發明的實施例之範例無序架構的方塊圖;圖8係根據本發明的一實施例之系統的方塊圖;圖9係根據本發明的實施例之第二系統的方塊圖;圖10係根據本發明的實施例之第三系統的方塊圖;圖11係根據本發明的實施例之系統單晶片(SoC)的方塊圖;圖12係根據本發明的實施例之具有積體記憶體控制器及圖形處理器的單核心處理器及多核心處理器的方塊圖;且
圖13係根據本發明的實施例之使用軟體指令變換器將來源指令集中的二進位指令變換為目標指令集中之二進位指令的對照方塊圖。
Claims (30)
- 一種在電腦處理器中實施MUL_ACCUMULATE_BYTE_GF2指令的方法,包含:解碼該MUL_ACCUMULATE_BYTE_GF2指令;藉由對儲存在第三暫存器中之結果矩陣中的各位置迭代地實施下列步驟,執行該MUL_ACCUMULATE_BYTE_GF2指令:將儲存於第一暫存器中之矩陣位置的值乘以儲存於第二暫存器中之矩陣位置的值,以得到第一乘值,其中在該第一暫存器及該第二暫存器中的該等位置係藉由在該結果矩陣中的該位置決定;且對該第一乘值及儲存在該第三暫存器中之儲存在結果矩陣位置的值實施互斥或(XOR)運算,以得到結果值。
- 如申請專利範圍第1項的方法,其中執行該MUL_ACCUMULATE_BYTE_GF2指令更包含將該結果值儲存在儲存於該第三暫存器中的該結果位置。
- 如申請專利範圍第2項的方法,其中執行該MUL_ACCUMULATE_BYTE_GF2指令更包含在實施該XOR運算之前,對該乘數實施歸約運算。
- 如申請專利範圍第2項的方法,其中執行該MUL_ACCUMULATE_BYTE_GF2指令更包含決定在該第一矩陣及該第二矩陣中是否有額外位置待處理。
- 如申請專利範圍第4項的方法,其中執行該MUL_ACCUMULATE_BYTE_GF2指令更包含: 將儲存於該第一暫存器中之額外矩陣位置的值乘以儲存於該第二暫存器中之額外矩陣位置的值,以得到額外乘值;且對該額外乘值及儲存在該第三暫存器中之儲存在該結果矩陣位置的該結果值實施額外的XOR運算,以得到已更新結果值。
- 如申請專利範圍第5項的方法,其中執行該MUL_ACCUMULATE_BYTE_GF2指令更包含將該已更新結果值儲存在儲存於該第三暫存器中的該結果位置。
- 如申請專利範圍第6項的方法,其中執行該MUL_ACCUMULATE_BYTE_GF2指令更包含在實施該XOR運算之前,對該額外乘數實施歸約運算。
- 如申請專利範圍第6項的方法,其中執行該MUL_ACCUMULATE_BYTE_GF2指令更包含對該已更新結果值實施歸約運算。
- 如申請專利範圍第1項的方法,其中儲存在該第一暫存器中的該矩陣係狀態矩陣,且儲存在該第二暫存器中的該矩陣係groestl常數矩陣。
- 如申請專利範圍第1項的方法,其中執行該MUL_ACCUMULATE_BYTE_GF2指令更包含:將儲存於該第一暫存器中之第二矩陣位置的該值乘以儲存於該第二暫存器中之第二矩陣位置的值,以得到第二乘值;且對第二乘值及儲存在該第三暫存器中之儲存在第二結 果矩陣位置的值實施第二XOR運算,以得到第二結果值。
- 如申請專利範圍第1項的方法,其中該第一矩陣、第二矩陣、及結果矩陣係具有8位元位置的8x8矩陣。
- 如申請專利範圍第1項的方法,其中該第一矩陣、第二矩陣、及結果矩陣係具有8位元位置的8x16矩陣。
- 如申請專利範圍第1項的方法,其中該第一、第二、及第三暫存器係512-位元暫存器。
- 一種執行矩陣乘法累積指令的設備,包含:複數個資料暫存器;及執行單元,與該等複數個資料暫存器耦合,以執行指令,以對儲存在第三暫存器中之結果矩陣中的各位置迭代地實施儲存於第一暫存器中之矩陣位置的值與儲存於第二暫存器中之矩陣位置的值的乘法,以得到第一乘值,其中在該第一暫存器及該第二暫存器中的該等位置係藉由在該結果矩陣中的該位置決定,並對該第一乘值與儲存在該第三暫存器中之儲存在結果矩陣位置的值實施互斥或(XOR)運算,以得到結果值。
- 如申請專利範圍第14項的設備,其中該執行單元將該結果值儲存在儲存於該第三暫存器中的該結果位置。
- 如申請專利範圍第15項的設備,其中該執行單元在實施該XOR運算之前,對該乘值實施歸約運算。
- 如申請專利範圍第15項的設備,其中該執行單元決定在該第一矩陣及該第二矩陣中是否有額外位置待處理。
- 如申請專利範圍第17項的設備,其中該執行單元另外將儲存於該第一暫存器中之額外矩陣位置的值乘以儲存於該第二暫存器中之額外矩陣位置的值,以得到額外乘值,並對該額外乘值及儲存在該第三暫存器中之儲存在該結果矩陣位置的該結果值,實施額外的XOR運算,以得到已更新結果值。
- 如申請專利範圍第14項的設備,其中儲存在該第一暫存器中的該矩陣係狀態矩陣,且儲存在該第二暫存器中的該矩陣係groestl常數矩陣。
- 如申請專利範圍第14項的設備,其中該執行單元另外將儲存於該第一暫存器中之第二矩陣位置的該值乘以儲存於該第二暫存器中之第二矩陣位置的值,以得到額外乘值,且對額外乘值及儲存在該第三暫存器中之儲存在第二結果矩陣位置的值,實施第二XOR運算,以得到額外結果值。
- 一種執行矩陣乘法累積指令的系統,包含:互連;處理器,與該互連耦合,以執行指令,以對儲存在第三暫存器中之結果矩陣中的各位置迭代地實施儲存於第一暫存器中之矩陣位置的值與儲存於第二暫存器中之矩陣位置的值的乘法,以得到第一乘值,其中在該第一暫存器及 該第二暫存器中的該等位置係藉由在該結果矩陣中的該位置決定,並對該第一乘值與儲存在該第三暫存器中之儲存在結果矩陣位置的值實施互斥或(XOR)運算,以得到結果值;及動態隨機存取記憶體(DRAM),與該互連耦合。
- 如申請專利範圍第21項的系統,其中該處理器將該結果值儲存在儲存於該第三暫存器中的該結果位置。
- 如申請專利範圍第22項的系統,其中該處理器在實施該XOR運算之前,對該乘值實施歸約運算。
- 如申請專利範圍第22項的系統,其中該處理器決定在該第一矩陣及該第二矩陣中是否有額外位置待處理。
- 如申請專利範圍第24項的系統,其中該處理器另外將儲存於該第一暫存器中之額外矩陣位置的值乘以儲存於該第二暫存器中之額外矩陣位置的值,以得到額外乘值,並對該額外乘值及儲存在該第三暫存器中之儲存在該第一結果矩陣位置的該結果值實施額外的XOR運算,以得到已更新結果值。
- 如申請專利範圍第21項的系統,其中該處理器更將儲存於該第一暫存器中之第二矩陣位置的該值乘以儲存於該第二暫存器中之第二矩陣位置的值,以得到第二乘值,且對第二乘值及儲存在該第三暫存器中之儲存在第二結果矩陣位置的值實施第二XOR運算,以得到第二結果值。
- 一種執行矩陣乘法累積指令的製品,包含: 機器可讀儲存媒體,包括一或多個固態資料儲存材料,該機器可讀儲存媒體儲存指令,當指令執行時導致處理器對儲存在第三暫存器中之結果矩陣中的各位置迭代地實施下列步驟:將儲存於第一暫存器中之矩陣位置的值乘以儲存於第二暫存器中之矩陣位置的值,以得到第一乘值,其中在該第一暫存器及該第二暫存器中的該等位置係藉由在該結果矩陣中的該位置決定;且對該第一乘值及儲存在該第三暫存器中之儲存在結果矩陣位置的值實施互斥或(XOR)運算,以得到結果值。
- 如申請專利範圍第27項的製品,其中該機器可讀儲存媒體儲存指令,當指令執行時更導致該處理器將該結果值儲存在儲存於該第三暫存器中的該結果位置。
- 如申請專利範圍第28項的製品,其中該機器可讀儲存媒體儲存指令,當指令執行時更導致該處理器在實施該XOR運算之前,對該乘值實施歸約運算。
- 如申請專利範圍第27項的製品,其中該機器可讀儲存媒體儲存指令,當指令執行時更導致該處理器執行下列步驟:將儲存於該第一暫存器中之額外矩陣位置的值乘以儲存於該第二暫存器中之額外矩陣位置的值,以得到第二乘值;及對該額外乘值及儲存在該第三暫存器中之儲存在該第一結果矩陣位置的該結果值實施額外的XOR運算,以得到 已更新結果值。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2011/066814 WO2013095504A1 (en) | 2011-12-22 | 2011-12-22 | Matrix multiply accumulate instruction |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201344564A TW201344564A (zh) | 2013-11-01 |
| TWI489380B true TWI489380B (zh) | 2015-06-21 |
Family
ID=48669145
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW101146189A TWI489380B (zh) | 2011-12-22 | 2012-12-07 | 執行矩陣乘法累積指令的方法、設備與系統及其製品 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US9960917B2 (zh) |
| CN (1) | CN103975302B (zh) |
| TW (1) | TWI489380B (zh) |
| WO (1) | WO2013095504A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI761347B (zh) * | 2016-07-02 | 2022-04-21 | 美商英特爾股份有限公司 | 可中斷及可重啟矩陣乘法指令、處理器、方法和系統 |
Families Citing this family (43)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2013095493A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Instructions to perform groestl hashing |
| US8683296B2 (en) | 2011-12-30 | 2014-03-25 | Streamscale, Inc. | Accelerated erasure coding system and method |
| US8914706B2 (en) | 2011-12-30 | 2014-12-16 | Streamscale, Inc. | Using parity data for concurrent data authentication, correction, compression, and encryption |
| US9646105B2 (en) * | 2012-11-08 | 2017-05-09 | Texas Instruments Incorporated | Reduced complexity hashing |
| US20160179523A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Apparatus and method for vector broadcast and xorand logical instruction |
| US9996320B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Fused multiply-add (FMA) low functional unit |
| US10191749B2 (en) * | 2015-12-24 | 2019-01-29 | Intel Corporation | Scatter reduction instruction |
| US10061523B2 (en) * | 2016-01-15 | 2018-08-28 | Samsung Electronics Co., Ltd. | Versioning storage devices and methods |
| US9870341B2 (en) * | 2016-03-18 | 2018-01-16 | Qualcomm Incorporated | Memory reduction method for fixed point matrix multiply |
| US10855443B2 (en) * | 2016-07-29 | 2020-12-01 | Cryptography Research Inc. | Protecting polynomial hash functions from external monitoring attacks |
| US11106464B2 (en) * | 2016-08-13 | 2021-08-31 | Intel Corporation | Apparatuses, methods, and systems for access synchronization in a shared memory |
| WO2018118569A1 (en) | 2016-12-21 | 2018-06-28 | Cryptography Research, Inc. | Protecting parallel multiplication operations from external monitoring attacks |
| US10228937B2 (en) * | 2016-12-30 | 2019-03-12 | Intel Corporation | Programmable matrix processing engine |
| US10037804B1 (en) * | 2017-01-27 | 2018-07-31 | Hewlett Packard Enterprise Development Lp | Adjusting target values of resistive memory devices |
| CN119861972A (zh) | 2017-03-20 | 2025-04-22 | 英特尔公司 | 用于片矩阵乘法和累加的系统、方法和装置 |
| US10409614B2 (en) | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
| US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
| CN116414350A (zh) * | 2017-05-17 | 2023-07-11 | 谷歌有限责任公司 | 低时延矩阵乘法部件 |
| CN110447010B (zh) * | 2017-05-17 | 2023-09-26 | 谷歌有限责任公司 | 在硬件中执行矩阵乘法 |
| GB2563878B (en) * | 2017-06-28 | 2019-11-20 | Advanced Risc Mach Ltd | Register-based matrix multiplication |
| CN107807819B (zh) * | 2017-07-20 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 |
| CN108986022A (zh) | 2017-10-30 | 2018-12-11 | 上海寒武纪信息科技有限公司 | 图像美化方法及相关产品 |
| US10346163B2 (en) * | 2017-11-01 | 2019-07-09 | Apple Inc. | Matrix computation engine |
| CN108763653B (zh) * | 2018-04-30 | 2022-04-22 | 南京大学 | 基于fpga的可重构线性方程组求解加速器 |
| US11990137B2 (en) | 2018-09-13 | 2024-05-21 | Shanghai Cambricon Information Technology Co., Ltd. | Image retouching method and terminal device |
| US10719323B2 (en) | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
| US10929143B2 (en) * | 2018-09-28 | 2021-02-23 | Intel Corporation | Method and apparatus for efficient matrix alignment in a systolic array |
| US10776110B2 (en) | 2018-09-29 | 2020-09-15 | Intel Corporation | Apparatus and method for adaptable and efficient lane-wise tensor processing |
| US10831505B2 (en) | 2018-09-29 | 2020-11-10 | Intel Corporation | Architecture and method for data parallel single program multiple data (SPMD) execution |
| US11093250B2 (en) | 2018-09-29 | 2021-08-17 | Intel Corporation | Apparatus and method for gang invariant operation optimizations using dynamic evaluation |
| US10915328B2 (en) | 2018-12-14 | 2021-02-09 | Intel Corporation | Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency |
| FR3090932B1 (fr) * | 2018-12-20 | 2022-05-27 | Kalray | Système de multiplication de matrices par blocs |
| US20200210517A1 (en) | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
| CN111596886B (zh) * | 2019-02-21 | 2026-01-16 | 超威半导体公司 | 混合矩阵乘法流水线 |
| US12182035B2 (en) | 2019-03-15 | 2024-12-31 | Intel Corporation | Systems and methods for cache optimization |
| KR102838677B1 (ko) | 2019-03-15 | 2025-07-25 | 인텔 코포레이션 | 매트릭스 가속기 아키텍처를 위한 희소 최적화 |
| KR102894763B1 (ko) | 2019-03-15 | 2025-12-03 | 인텔 코포레이션 | 하이브리드 부동 소수점 포맷에 대한 내적 누산 명령어를 갖는 그래픽 프로세서 및 그래픽 프로세싱 유닛 |
| US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
| US11762658B2 (en) * | 2019-09-24 | 2023-09-19 | Advanced Micro Devices, Inc. | Matrix multiplication unit with flexible precision operations |
| US11861761B2 (en) | 2019-11-15 | 2024-01-02 | Intel Corporation | Graphics processing unit processing and caching improvements |
| US11663746B2 (en) | 2019-11-15 | 2023-05-30 | Intel Corporation | Systolic arithmetic on sparse data |
| US11182458B2 (en) | 2019-12-12 | 2021-11-23 | International Business Machines Corporation | Three-dimensional lane predication for matrix operations |
| US11561794B2 (en) | 2021-05-26 | 2023-01-24 | International Business Machines Corporation | Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20030219118A1 (en) * | 2002-05-23 | 2003-11-27 | Beverly Harlan T. | Optimized multiplicative inverse |
| US20040120518A1 (en) * | 2002-12-20 | 2004-06-24 | Macy William W. | Matrix multiplication for cryptographic processing |
| US20050283714A1 (en) * | 2004-06-19 | 2005-12-22 | Samsung Electronics Co., Ltd. | Method and apparatus for multiplication in Galois field, apparatus for inversion in Galois field and apparatus for AES byte substitution operation |
| TW200728980A (en) * | 2005-09-21 | 2007-08-01 | Widevine Technologies Inc | System and method for software tamper detection |
| TWI309364B (en) * | 2005-09-02 | 2009-05-01 | Infortrend Technology Inc | Method and controller for processing data multiplication in raid system |
| US7843459B2 (en) * | 1998-08-24 | 2010-11-30 | Microunity Systems Engineering, Inc. | Processor for executing multiply matrix instructions requiring wide operands |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6470370B2 (en) | 1995-09-05 | 2002-10-22 | Intel Corporation | Method and apparatus for multiplying and accumulating complex numbers in a digital filter |
| US5931892A (en) * | 1996-12-20 | 1999-08-03 | Compaq Computer Corporation | Enhanced adaptive filtering technique |
| US6496920B1 (en) | 1998-03-18 | 2002-12-17 | Qiuzhen Zou | Digital signal processor having multiple access registers |
| US7080111B2 (en) * | 2001-06-04 | 2006-07-18 | Intel Corporation | Floating point multiply accumulator |
| US7013321B2 (en) * | 2001-11-21 | 2006-03-14 | Sun Microsystems, Inc. | Methods and apparatus for performing parallel integer multiply accumulate operations |
| US20040202317A1 (en) | 2002-12-20 | 2004-10-14 | Victor Demjanenko | Advanced encryption standard (AES) implementation as an instruction set extension |
| US20040122887A1 (en) | 2002-12-20 | 2004-06-24 | Macy William W. | Efficient multiplication of small matrices using SIMD registers |
| KR100901697B1 (ko) | 2007-07-09 | 2009-06-08 | 한국전자통신연구원 | 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치 |
-
2011
- 2011-12-22 CN CN201180075233.2A patent/CN103975302B/zh active Active
- 2011-12-22 US US13/995,453 patent/US9960917B2/en active Active
- 2011-12-22 WO PCT/US2011/066814 patent/WO2013095504A1/en not_active Ceased
-
2012
- 2012-12-07 TW TW101146189A patent/TWI489380B/zh not_active IP Right Cessation
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7843459B2 (en) * | 1998-08-24 | 2010-11-30 | Microunity Systems Engineering, Inc. | Processor for executing multiply matrix instructions requiring wide operands |
| US20030219118A1 (en) * | 2002-05-23 | 2003-11-27 | Beverly Harlan T. | Optimized multiplicative inverse |
| US20040120518A1 (en) * | 2002-12-20 | 2004-06-24 | Macy William W. | Matrix multiplication for cryptographic processing |
| US20050283714A1 (en) * | 2004-06-19 | 2005-12-22 | Samsung Electronics Co., Ltd. | Method and apparatus for multiplication in Galois field, apparatus for inversion in Galois field and apparatus for AES byte substitution operation |
| TWI309364B (en) * | 2005-09-02 | 2009-05-01 | Infortrend Technology Inc | Method and controller for processing data multiplication in raid system |
| TW200728980A (en) * | 2005-09-21 | 2007-08-01 | Widevine Technologies Inc | System and method for software tamper detection |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI761347B (zh) * | 2016-07-02 | 2022-04-21 | 美商英特爾股份有限公司 | 可中斷及可重啟矩陣乘法指令、處理器、方法和系統 |
| US11698787B2 (en) | 2016-07-02 | 2023-07-11 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
| US12050912B2 (en) | 2016-07-02 | 2024-07-30 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
| US12204898B2 (en) | 2016-07-02 | 2025-01-21 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
Also Published As
| Publication number | Publication date |
|---|---|
| US9960917B2 (en) | 2018-05-01 |
| US20140006753A1 (en) | 2014-01-02 |
| TW201344564A (zh) | 2013-11-01 |
| CN103975302A (zh) | 2014-08-06 |
| CN103975302B (zh) | 2017-10-27 |
| WO2013095504A1 (en) | 2013-06-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI489380B (zh) | 執行矩陣乘法累積指令的方法、設備與系統及其製品 | |
| TWI518589B (zh) | 用以執行groestl雜湊法之指令 | |
| US12323515B2 (en) | Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality | |
| TWI597620B (zh) | 提供通用gf(256)simd密碼算術功能的指令與邏輯 | |
| ES2805125T3 (es) | Arquitectura e instrucciones flexibles para el estándar de cifrado avanzado (AES) | |
| CN105204820B (zh) | 用于提供通用gf(256)simd加密算术功能的指令和逻辑 | |
| CN105306195A (zh) | Sm4加速处理器、方法、系统和指令 | |
| CN102171646A (zh) | 用于执行独立磁盘冗余阵列(raid)操作的方法和装置 | |
| US9270460B2 (en) | Instructions to perform JH cryptographic hashing in a 256 bit data path | |
| TWI517654B (zh) | 執行jh密碼雜湊之指令 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |