用于執(zhí)行jh加密散列的指令的制作方法
【專利摘要】描述了一種方法。該方法包括執(zhí)行一個或多個JH_SBOX_L指令以在JH狀態(tài)上執(zhí)行S-Box映射和線性(L)變換,且一旦已經執(zhí)行了S-Box映射和L變換就執(zhí)行一個或多個JH_Permute指令來在JH狀態(tài)上執(zhí)行置換函數。
【專利說明】用于執(zhí)行JH加密散列的指令
【技術領域】
[0001]本公開涉及加密算法,且特定地涉及JH散列算法。
【背景技術】
[0002]密碼學是依賴于算法的工具且是保護信息的關鍵。算法是復雜的數學算法且密鑰是位的串(string of bits)。有兩種基本類型的加密系統(tǒng):秘密密鑰系統(tǒng)和公共密鑰系統(tǒng)。秘密密鑰系統(tǒng)也被稱為對稱系統(tǒng),具有由兩方或更多方共享的單個密鑰(“秘密密鑰”)。該單個密鑰既用于加密信息也用于解密信息。
[0003]JH散列函數(JH)是一種加密函數,該加密函數已經針對國家標準與技術協(xié)會(NIST)散列函數競爭而提交來發(fā)展新的SHA-3函數以替代較舊的SHA-1和SHA-2。JH是基于包括四個變型(JH-224、JH-256、JH-384、和JH-512)的算法,可產生不同大小的摘要(digest)。然而,JH的每一個變型實現相同的壓縮函數。
[0004]目前,可在通用目的處理器上使用流SMD擴展(SSE)或高級向量擴展(AVX)中的指令來執(zhí)行JH。無論如何,這樣的應用可要求實行高達30個指令來執(zhí)行JH算法。
【專利附圖】
【附圖說明】
[0005]可結合附圖從以下詳細描述中獲得對本發(fā)明的更好理解,其中:
[0006]圖1是示出系統(tǒng)的一個實施例的框圖;
[0007]圖2是示出處理器的一個實施例的框圖;
[0008]圖3是示出打包數據寄存器的一個實施例的框圖;
[0009]圖4示出所得半字節(jié)置換的一個實施例;
[0010]圖5是示出由指令執(zhí)行的過程的一個實施例的流程圖;
[0011]圖6是示出由指令執(zhí)行的過程的一個實施例的流程圖;
[0012]圖7示出使用指令的兩輪次JH的實施例;
[0013]圖8是根據本發(fā)明的一個實施例的寄存器架構的框圖;
[0014]圖9A是根據本發(fā)明的實施例的連接到管芯上互聯網絡且具有第二級(L2)高速緩存的本地子集的單CPU核的框圖;
[0015]圖9B是根據本發(fā)明的各實施例的CPU核的一部分的展開圖;
[0016]圖10是示出根據本發(fā)明的實施例的示例性無序架構的框圖;
[0017]圖11是根據本發(fā)明一個實施例的系統(tǒng)的框圖;
[0018]圖12是根據本發(fā)明的實施例的第二系統(tǒng)的框圖;
[0019]圖13是根據本發(fā)明的實施例的第三系統(tǒng)的框圖;
[0020]圖14是根據本發(fā)明的實施例的片上系統(tǒng)(SoC)的框圖;
[0021]圖15是根據本發(fā)明的實施例的具有集成的存儲器控制器和圖形器件的單核處理器和多核處理器的框圖;且
[0022]圖16是根據本發(fā)明的實施例的對照使用軟件指令轉換器將源指令集中的二進制 指令轉換成目標指令集中的二進制指令的框圖。
【具體實施方式】
[0023]在下文描述中,出于說明目的,闡述了眾多具體細節(jié)以便提供對本發(fā)明的全面理解。然而,對本領域技術人員將顯而易見的是,沒有這些具體細節(jié)中的某些也可實施本發(fā)明。在其他實例中,眾所周知的結構和設備以框圖形式示出,以避免淡化本發(fā)明的底層原理。
[0024]在本說明書中,對“一個實施例”或“一實施例”的引用意味著結合該實施例描述的特定特征、結構或特性被包括在本發(fā)明的至少一個實施例中。在本說明書各處中出現的短語“在一個實施例中”并不一定全部指代同一實施例。
[0025]描述了包括處理JH散列算法的指令的機制。根據一個實施例,經由AVX指令集內的指令來實現JH散列算法。AVX指令集是x86指令集架構(ISA)的擴展,這從128位增加了寄存器組。
[0026]圖1是系統(tǒng)100的一個實施例的框圖,系統(tǒng)100包括用于在通用目的處理器中執(zhí)行JH加密和解密的AVX指令集擴展。
[0027]系統(tǒng)100包括處理器101、存儲控制器中樞(MCH) 102、和輸入/輸出(I/O)控制器中樞(ICH) 104。MCH102包括控制處理器101和存儲器108之間的通信的存儲控制器106。處理器101和MCH102在系統(tǒng)總線116上通信。
[0028]處理器101可以是多個處理器中的任一個,這些處理器諸如單核Intel?奔騰IV?處理器、單核Intel Celeron處理器、Intel?: XScale處理器或多核處理器,諸如 Intel? 奔騰 D、Intel? Xeon? 處理器 Intel? Core? i3, i5, i7, 2Duo 和 Quad、Xeon?, Itanium R處理器、或者任何其他類型的處理器。
[0029]存儲器108可以是動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)、同步動態(tài)隨機存取存儲器(SDRAM)、雙數據率2 (DDR2) RAM、或Rambus動態(tài)隨機存取存儲器(RDRAM)、或任何其他類型的存儲器。
[0030]使用高速芯片-對-芯片互連114 (諸如直接媒體接口(DMI)),ICH104可耦合至MCH102。經由兩個單向通道,DMI支持2吉比特/秒的并發(fā)傳輸速率。
[0031]ICH104可包括存儲器I/O控制器110,用于控制與耦合至ICH104的至少一個存儲設備112的通信。存儲設備可包括,例如,盤驅動器、數字多功能盤(DVD)驅動器、緊湊盤(CD)驅動器、獨立磁盤冗余陣列(RAID)、磁帶驅動器、或其他存儲設備。使用串行存儲協(xié)議,諸如串行附接小型計算機系統(tǒng)接口(SAS)或串行高級技術附接(SATA),在存儲協(xié)議互連118上,ICH104可與存儲設備112通信。
[0032]在一個實施例中,處理器101包括JH函數103,用于執(zhí)行JH加密和解密操作??墒褂肑H函數103來對存儲于存儲器108和/或存儲于存儲設備112內的信息進行加密或解密。
[0033]圖2是示出處理器101的一個實施例的框圖。處理器101包括取指與解碼單元202,用于對從級別I(Ll)指令高速緩存202中接收到的處理器指令進行解碼。用于執(zhí)行該指令的數據可被存儲于寄存器組208內。在一個實施例中,寄存器組208包括多個寄存器,其可由AVX指令用于存儲由AVX指令使用的數據。
[0034]圖3是寄存器組208內的一組合適的打包數據寄存器的示例實施例的方框圖。所示打包數據寄存器包括三十二個512位打包數據或向量寄存器。這些三十二個512位寄存器被標記為ZMMO至ZMM31。在所示實施例中,這些寄存器中的低位十六個的低階256位(即,ZMM0-ZMM15)被混疊或者覆蓋在相應256位打包數據或向量寄存器(標記為YMM0-YMM15)上,但是這不是必需的。
[0035]同樣,在所示實施例中,YMM0-YMM15的低階128位被重疊或者覆蓋在相應128位打包數據或向量寄存器(標記為XMM0-XMM1)上,但是這也不是必需的。512位寄存器ZMMO至ZMM31可操作用于保持512位打包數據、256位打包數據或者128位打包數據。
[0036]256位寄存器YMM0-YMM15可操作用于保持256位打包數據或者128位打包數據。128位寄存器XMM0-XMM1可操作用于保持128位打包數據。每一寄存器可用于存儲打包浮點數據或打包整型數據。支持不同數據元素尺寸,包括至少8位字節(jié)數據、16位字數據、32位雙字或單精度浮點數據、以及64位四字或雙精度浮點數據。打包數據寄存器的替換實施例可包括不同數量的寄存器、不同大小的寄存器,并且可以或者可以不將較大寄存器混疊(alias)在較小寄存器上。
[0037]返回參看圖2,提取和解碼單元202從LI指令高速緩存202中取出宏指令、解碼該宏指令、并將它們分為所謂微操作(μορ)的簡單操作。執(zhí)行單元210調度并執(zhí)行該微操作。在所示實施例中,執(zhí)行單元210內的JH函數103包括AVX指令的微操作。引退單元212將所執(zhí)行的指令的結果寫入寄存器或存儲器。 [0038]JH函數103執(zhí)行壓縮函數,包括運行42輪次的三個函數。第一個函數是S-Box函數,其包括實現兩個變換(Sc^PS1)之一來變換相鄰的4位半字節(jié)(nibble)。表1示出S-Box變換Stl(X)和S1 (X)的一個實施例。
[0039]表1
[0040]
X 1 Il |2 |3 |4 |5 |6 |7 丨8 丨9 IlO 111 Il2 Il3 Il4 Il5
S0(X) 9 0 4 11 13 12 3 15 I 10 2 6 7 5 8 14
S1(X) 3 12 6 13 5 7 I 9 15 2 0 4 11 10 14 8
[0041]第二個函數是線性變換(L),其在GF(24)上實現(4,2,3)最大可分離距離(MDS)碼,其中GF24被定義為二進制多項式模不可約多項式X4+X+l的倍數(multiplication)。在相鄰的8位字節(jié)(或兩個相鄰S-Box輸出)上執(zhí)行線性變換。使A、B、C、和D表示4位字,則 L 將(A, B)轉換為(C,D),即(C,D) = L(A, B) = (5.A+2.B,2.A+B)。因此函數(C,D)=L(A, B)被計算為:
[0042]DO = BO ? Al ;D1 = BI ? A2 ;
[0043]D2 = B2 ? A3 ? AO ;D3 = B3 ? AO ;
[0044]CO = AO ? Dl ;C1 = Al ? D2 ;
[0045]C2 = A2 ? D3 ? DO ;C3 = A3 ? D0.[0046]第三個函數是置換函數(Pd)。Pd是2d元素上的簡單置換,從Jid(交換交替的半字節(jié))、P, d(交換來自狀態(tài)的低半部和高半部的半字節(jié))、和(交換狀態(tài)的高半部內的半字節(jié))構建而來。圖4示出在64位數據路徑中對于d = 4的所得半字節(jié)置換Pd( ^ d, d, Φ<ι)的一個實施例,其中d是位塊的尺寸(dimension)。在一個實施例中,JH函數對于256個4位半字節(jié)(或1024位)的數據寬度使用d = 8。
[0047]在常規(guī)系統(tǒng)中,JH被“位切片”,而不是在字節(jié)中的半字節(jié)上操作。位切片能使半字節(jié)的位被分開為分離的字。因此,S-Box半字節(jié)允許經由SSE/AVX指令并行地執(zhí)行所有的S-Box半字節(jié)。進一步,將位切片與交替的奇偶SBOX寄存器組合能實現SBOX和L變換估計(evaluation)。在位切片實現中,沒有必要對于每一輪次進行完全置換。特定地,合適的奇S-Box被輸入位置以用于 在下一輪次與下合適的偶S-Box操作。通過使用7個交換置換,對于42個JH輪次重復6次,完成此舉。
[0048]盡管位切片方法能使得所有的SBOX計算和L變換并行執(zhí)行,但是需要20個指令來執(zhí)行SBOX邏輯的23個邏輯函數,且對于包含L變換的10個X0R(異或)函數而言需要10個指令(用于2個操作數X0R)。這樣的性能是可予以改進的。
[0049]根據一個實施例,可定義兩個新的指令和數據路徑,其在4位半字節(jié)和半字節(jié)對上操作來使用寄存器組208中的512位ZMM寄存器來執(zhí)行SBOX和L變換函數。在這樣的實施例中,1024位狀態(tài)被存儲在兩個ZMM寄存器中,其中半字節(jié)0-127在第一 ZMM寄存器中,而半字節(jié)128-255在第二 ZMM寄存器中。
[0050]新的指令和數據路徑JH_SB0X_L被定義為JH_SB0X_L ZMM, ZMM掩碼(ZMMmask)。圖5是示出由JH_SB0X_L指令執(zhí)行的過程的一個實施例的流程圖。如上文所述的,1024狀態(tài)位被從O到1023連續(xù)地組織(如JH規(guī)范中表示的)在兩個ZMM寄存器內。
[0051]在處理框510,從ZMM寄存器檢索表示狀態(tài)位的72的512位段。在處理框520,在所檢索的狀態(tài)位上執(zhí)行S-Box和L變換。在一個實施例中,使用來自ZMM掩碼的掩碼信息來執(zhí)行S-Box函數。在一個實施例中,ZMM掩碼表示來自JH規(guī)范的常數(A.2,在E8的位切片實現中的輪次常數)。使用ZMM,256位可通過對每一輪次進行奇偶位交錯來導出。
[0052]一旦完成了 S-Box操作,在每個8位半字節(jié)對上進行L轉換操作。在處理框530,將變換的512位結果存儲在目的寄存器內。執(zhí)行JH_SB0X_L指令兩次(對于低512位,然后對于高512位)以完成對于完全JH狀態(tài)的一輪次S-Box和L變換。
[0053]JH_Permute (JH_置換)指令和數據路徑被實現為對保持S-Box和L變換的結果的ZMM寄存器中的每一個執(zhí)行置換步驟Pd。在一個實施例中,JH_Permute指令被實現為,執(zhí)行所定義為JH_Permute ZMM1、ZMM2、imm8,其中ZMMl存儲低預置換128半字節(jié)(例如,512位),ZMM存儲高預置換128半字節(jié),且imm8 = 0/1,其指定低/高半字節(jié)。
[0054]圖6是示出由JH_PD指令執(zhí)行的過程的一個實施例的流程圖。在處理框550,JH狀態(tài)的預置換的1/2段被從imm8所指示的ZMM寄存器中檢索。在處理框560,對所檢索的位執(zhí)行置換處理。在處理框570,置換的結果被存儲。執(zhí)行JH_Permute指令兩次以完成一輪次置換。圖7示出使用上述指令的JH的42輪次中的兩個。
[0055]上述的JH指令實現三周期流水線數據路徑。因此,在8個周期內完成一輪次的JH(例如,JH_SB0X_L和JH_Permute指令的每一個的兩次執(zhí)行)。這導致勝于位切片方法的2-3倍性能改進。
[0056]示例性寄存器體系架構一圖8[0057]圖8是示出根據本發(fā)明的一個實施例的寄存器體系結構800的框圖。寄存器體系結構的寄存器組(register file)和寄存器列出如下:
[0058]向量寄存器組810—在所示出的實施例中,有32個512比特寬的向量寄存器;這些寄存器被引用為zmmO到zmm31。低位16個zmm寄存器的低階856個位覆蓋在寄存器ymmO-16上。低位16個zmm寄存器的低階128個位(ymm寄存器的低階128個位)覆蓋在寄存器xmmO-15上。
[0059]寫掩碼寄存器815—在所示的實施例中,存在8個寫掩碼寄存器(kO至k7),每一寫掩碼寄存器的尺寸是64位。在本發(fā)明的一個實施例中,向量掩碼寄存器kO無法用作寫掩碼;當正常可指示kO的編碼用作寫掩碼時,它選擇硬連線的寫掩碼OxFFFF,從而有效地停用該指令的寫掩碼。
[0060]多媒體擴展控制狀態(tài)寄存器(MXCSR) 1020—在所示的實施例中,這個32位寄存器提供在浮點操作中使用的狀態(tài)和控制位。
[0061 ] 通用寄存器825—在所示出的實施例中,有十六個64位通用寄存器,這些寄存器連同現有的x86尋址模式被用來尋址存儲器操作數。這些寄存器通過名稱RAX、RBX、RCX、RDX、RBP、RS1、RD1、RSP,以及 R8 到 R15 來引用。
[0062]擴展標志(EFLAGS)寄存器830—在所示實施例中,使用這個32位寄存器來記錄很多指令的結果。
[0063]浮點控制字(FCW)寄存器835和浮點狀態(tài)字(FSW)寄存器840—在所示實施例中,這些寄存器由x87指令集擴展使用來在FCW的情況下設置輪轉(rounding)模式、異常掩模和標志,且在FSW的情況下保持對于例外的追蹤。
[0064]標量浮點堆棧寄存器組(x87堆棧)845,在其上面混疊有MMX打包整型平坦寄存器組1050—在所示出的實施例中,x87堆棧是用于使用x87指令集擴展來對32/64/80位浮點數據執(zhí)行標量浮點運算的八元素堆棧;而使用MMX寄存器來對64位打包整型數據執(zhí)行操作,以及為在MMX和XMM寄存器之間執(zhí)行的某些操作保存操作數。
[0065]段寄存器855—在所示實施例中,存在六個16位寄存器,用于存儲用于分段的地址生成的數據。
[0066]RIP寄存器865—在所示實施例中,這個64位寄存器存儲指令指針。
[0067]本發(fā)明的替換實施例可以使用較寬的或較窄的寄存器。另外,本發(fā)明的替換實施例可以使用更多,更少或不同的寄存器組和寄存器。
[0068]示例性有序處理器體系結構一圖6A-6B
[0069]圖9A-B示出示例性有序處理器體系結構的框圖。這些示例性實施例是圍繞由寬向量處理器(VPU)擴充的有序CPU核的多個實例而設計的。根據應用,核通過高帶寬的互連網絡與某些固定的功能邏輯、存儲器I/O接口和其它必要的1/0邏輯通信。例如,這個實施例的作為獨立GPU的實現將一般包括PCIe總線。
[0070]圖9A是根據本發(fā)明的實施例的連接到管芯上互聯網絡902且具有第二級(L2)高速緩存的本地子集904的單個CPU核的框圖。指令解碼器900支持具有擴展的x86指令集。盡管在本發(fā)明的一個實施例中(為了簡化設計),標量單元908和向量單元910使用分開的寄存器集合(分別為標量寄存器912和向量寄存器914),并且在這些寄存器之間轉移的數據被寫入到存儲器并隨后從一級(LI)高速緩存906讀回,但是可選實施例可以使用不同的方法(例如使用單個寄存器集合或包括允許數據在這兩個寄存器組之間傳輸而無需被寫入和讀回的通信路徑)。
[0071]LI高速緩存906允許對高速緩存存儲器的低等待時間訪問進入標量和向量單元中。與向量友好指令格式中的加載操作(load-op)指令一起,這意味著LI高速緩存906可被視為某種程度上類似擴展的寄存器組。這顯著改進了很多算法的性能。
[0072]L2高速緩存的本地子集904是全局L2高速緩存的一部分,該全局L2高速緩存被劃分成多個分開的本地子集,即每個CPU核一個本地子集。每個CPU具有到其自己的L2高速緩存的本地子集904的直接訪問路徑。被CPU核讀出的數據被存儲在其L2高速緩存子集904中,并且可以被快速訪問,該訪問與其他CPU核訪問其自己的本地L2高速緩存子集并行。被CPU核寫入的數據被存儲在其子集的L2高速緩存子集904中,并在必要的情況下從其它子集清除。環(huán)形網絡確保共享數據的一致性。
[0073]圖9B是根據本發(fā)明的各實施例的圖9A中的CPU核的一部分的展開圖。圖9B包括LI高速緩存904的LI數據高速緩存906A部分、以及關于向量單元910和向量寄存器1114的更多細節(jié)。具體地說,向量單元910是16寬向量處理單元(VPU)(見16寬ALU928),該單元執(zhí)行整型、單精度浮點以及雙精度浮點指令。該VPU支持通過混合單元920混合(swizzling)寄存器輸入、通過數值轉換單元922A-B進行數值轉換,和通過復制單元924進行對存儲器輸入的復制。寫掩碼寄存器926允許斷言所得的向量寫入。
[0074]可以各種方式混合寄存器數據,如,來支持矩陣乘法。來自存儲器的數據可跨VPU通道地被復制。這是圖形和非圖形并行數據處理中的通用操作,這顯著增加了高速緩存效率。
[0075]環(huán)形網絡是雙向的,以允許諸如CPU核、L2高速緩存和其它邏輯塊之類的代理在芯片內彼此通信。每個環(huán)形數據路徑為每個方向1012比特寬。
[0076]示例性無序體系結構一圖7
[0077]圖10是示出根據本發(fā)明的實施例的示例性無序架構的框圖。特定地,圖10示出公知的示例性無序架構,其已經被修改為結合了向量友好指令格式以及其執(zhí)行。在圖10中,箭頭指示兩個或更多個單元之間的耦合,且箭頭的方向指示這些單元之間的數據流的方向。圖10包括耦合到執(zhí)行引擎單元1010和存儲器單元1015的前端單元1005 ;執(zhí)行引擎單元1010還耦合到存儲器單元1015。
[0078]前端單元1005包括耦合到二級(L2)分支預測單元1022的一級(LI)分支預測單元1020。LI和L2分支預測單元1020和1022耦合到LI指令高速緩存單元1024。LI指令高速緩存單元1024耦合至指令翻譯后備緩沖器(TLB) 1026,該TLB1026進一步耦合至指令提取和預解碼單元1028。指令提取和預解碼單元1028耦合至指令隊列單元1030,該單元1030進一步耦合至解碼單元1032。解碼單元1032包括復雜解碼器單元1034和三個簡單解碼器單元1036、1038和1040。解碼單元1032包括微代碼ROM單元1042。在解碼級段中,解碼單元7可如上所述地操作。LI指令高速緩存單元1024還耦合到存儲器單元1015中的L2高速緩存單元1048。指令TLB單元1026還耦合到存儲器單元1015中的二級TLB單元1046。解碼單元1032、微代碼ROM單元1042、和環(huán)流檢測器(LSD)單元1044各自耦合到執(zhí)行引擎單元1010中的重命名/分配器單元1056。
[0079]執(zhí)行引擎單元1010包括耦合到引退單元1074和統(tǒng)一調度器單元1058的重命名/分配器單元1056。引退單元1074還耦合到執(zhí)行單元1060且包括重排序緩沖器單元1078。統(tǒng)一調度器單元1058還耦合到物理寄存器組單元1076,物理寄存器組單元1076耦合到執(zhí)行單元1060。物理寄存器組單元1076包括向量寄存器單元1077A、寫掩碼寄存器單元1077B、和標量寄存器單元1077C ;這些寄存器單元可提供向量寄存器510、向量掩碼寄存器515、以及通用目的寄存器825 ;且物理寄存器組單元1076可包括未示出的附加寄存器組(如,混疊在MMX打包整型平面寄存器組850上的標量浮點棧寄存器組845)。執(zhí)行單元1060包括三個混合標量和向量單元單元1062、1064和1072 ;負載單元1066 ;存儲地址單元1068 ;存儲數據單元1070。負載單元1066、存儲地址單元1068和存儲數據單元1070各自進一步耦合到存儲器單元1015中的數據TLB單元1052。
[0080]存儲器單元1015包括耦合到數據TLB單元1052的二級TLB單元1046。數據TLB單元1052耦合到LI數據高速緩存單元1054。LI數據高速緩存單元1054還耦合到L2高速緩存單元1048。在一些實施例中,L2高速緩存單元1048還耦合到存儲器單元1015內部和/或外部的L3和更高級高速緩存單元1050。
[0081]以示例的方式,示例性無序體系結構可如下實現過程流水線8200:1)指令提取和預解碼單元728執(zhí)行取指和長度解碼級;2)解碼單元732執(zhí)行解碼級;3)重命名/分配器單元1056執(zhí)行分配級和重命名級;4)統(tǒng)一調度器1058執(zhí)行調度級;5)物理寄存器組單元1076、重排序緩沖器單元1078、和存儲器單元1015執(zhí)行寄存器讀取/存儲器讀取級;執(zhí)行單元1060進行執(zhí)行/數據轉換級;6)存儲器單元1015和重排序緩沖器單元1078執(zhí)行寫回/存儲器寫入級I960 ;7)引退單元1074執(zhí)行ROB讀取級;8)各單元可牽涉到異常處理級;以及9)引退單元1074和物理寄存器組單元1076執(zhí)行提交級。
[0082]示例性計算機系統(tǒng)和處理器-圖8-10
[0083]圖11-13示出適于包括處理器101的示例性系統(tǒng)。本領域已知的對膝上型設備、臺式機、手持PC、個人數字助理、工程工作站、服務器、網絡設備、網絡中樞、交換機、嵌入式處理器、數字信號處理器(DSP)、圖形設備、視頻游戲設備、機頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設備以及各種其他電子設備的其他系統(tǒng)設計和配置也是合適的。一般來說,能夠含有本文中所公開的處理器和/或其它執(zhí)行邏輯的大量系統(tǒng)和電子設備一般都是合適的。
[0084]現在參考圖11,所示出的是根據本發(fā)明實施例的系統(tǒng)1100的框圖。系統(tǒng)1100可包括耦合至圖形存儲器控制器中樞(GMCH) 1110的一個或多個處理器1115、1120。附加的處理器1115的任選性在圖11中通過虛線來表示。
[0085]每一處理器1110、1115可以是處理器1100的某種版本。然而,應該注意,集成圖形邏輯和集成存儲器控制單元未必存在于處理器1110和1115中。
[0086]圖11示出GMCH1120可耦合至存儲器1140,該存儲器1140可以是例如動態(tài)隨機存取存儲器(DRAM)。對于至少一個實施例,DRAM可以與非易失性緩存相關聯。
[0087]GMCH1120可以是芯片組或芯片組的一部分。GMCH1120可以與處理器(多個)1110、1115進行通信,并控制處理器1110、1115與存儲器1140之間的交互。GMCH1120還可充當(各)處理器(多個)1110、1115和系統(tǒng)1100的其它元件之間的加速總線接口。對于至少一個實施例,GMCH1120經由諸如前端總線(FSB) 1195之類的多分支總線與處理器(多個)1110、1115進行通信。[0088]此外,GMCHl 120耦合至顯示器1145(諸如平板顯示器)。GMCHl 120可包括集成圖形加速器。GMCHl 120還耦合至輸入/輸出(I/O)控制器中樞(ICH) 1150,該輸入/輸出(I/O)控制器中樞(ICH) 1150可用于將各種外圍設備耦合至系統(tǒng)1100。例如,在圖11的實施例中示出了外部圖形設備860以及另一外圍設備1170,該外部圖形設備860可以是耦合至ICH1150的分立圖形設備。
[0089]可選地,系統(tǒng)1100中還可存在附加或不同的處理器。例如,附加處理器(多個)1115可包括與處理器1110相同的附加處理器(多個)、與處理器1110異類或不對稱的附加處理器(多個)、加速器(諸如圖形加速器或數字信號處理(DSP)單元)、現場可編程門陣列或任何其它處理器。按照包括體系結構、微體系結構、熱、功耗特征等等優(yōu)點的度量譜,物理資源1110、1115之間存在各種差別。這些差別自身會有效顯示為處理元件1110、1115之間的不對稱性和相異性。對于至少一個實施例,各種處理元件1110、1115可駐留在同一管芯封裝中。
[0090]現在參照圖9,所示出的是根據本發(fā)明一實施例的第二系統(tǒng)1200的框圖。如圖12所示,多處理器系統(tǒng)1200是點對點互連系統(tǒng),且包括經由點對點互連1250耦合的第一處理器1270和第二處理器1280。如圖12所示,處理器1270和1280中的每個可以是處理器101的某一版本。
[0091]可選地,處理器1270、1280中的一個或多個可以是除處理器之外的元件,諸如加速器或現場可編程門陣列。
[0092]雖然僅以兩個處理器1270、1280來示出,但應理解本發(fā)明的范圍不限于此。在其它實施例中,在給定處理器中可存在一個或多個附加處理元件。
[0093]處理器1270還可包括集成存儲器控制器中樞(MC) 1272和點對點(P-P)接口1276和1278。類似地,第二處理器1280可包括MC1282和P-P接口 1286與1288。處理器1270、1280可以經由使用點對點(PtP)接口電路1278、1288的點對點(PtP)接口 1250來交換數據。如圖12所示,MC的1272和1282將處理器耦合到相應的存儲器,即存儲器1242和存儲器1244,這些存儲器可以是本地附連到相應處理器的主存儲器部分。
[0094]處理器1270、1280可各自經由使用點對點接口電路1276、1294、1286、和1298的各個P-P接口 1252、1254與芯片組1290交換數據。芯片組1290還可經由高性能圖形接口1239與高性能圖形電路938交換數據。
[0095]共享高速緩存(未示出)可以被包括在兩個處理器的任一個之內或被包括兩個處理器外部但仍經由P-P互連與這些處理器連接,從而如果將處理器置于低功率模式,則可將任一處理器或兩個處理器的本地高速緩存信息存儲在該共享高速緩存中。芯片組1290可以經由接口 1296被耦合到第一總線1216。在一個實施例中,第一總線916可以是外圍部件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之類的總線,但本發(fā)明的范圍并不受此限制。
[0096]如圖12所示,各種I/O設備1214可連同總線橋1218 —起耦合到第一總線1216,總線橋1218將第一總線1216耦合到第二總線1220。在一個實施例中,第二總線1220可以是低引腳數(LPC)總線。在一個實施例中,各設備可耦合到第二總線1220,包括例如鍵盤和/或鼠標1222、通信設備1226、以及可包括代碼1230的諸如盤驅動器或其它海量存儲設備的數據存儲單元1228。進一步地,音頻1/01224可以耦合到第二總線1220。注意,其它體系結構是可能的。例如,代替圖12的點對點架構,系統(tǒng)可實現多分支總線或者其他此類架構。
[0097]現在參照圖13,所示出的是根據本發(fā)明實施例的第三系統(tǒng)1300的框圖。圖12和圖13中的相同部件用相同附圖標記表示,并從圖13中省去了圖12中的某些方面,以避免使圖13的其它方面變得含糊不清。
[0098]圖13示出處理元件1270、1280可分別包括集成存儲器和I/O控制邏輯(“CL”)1272和1282。對于至少一個實施例,CL1272、1282可包括存儲器控制器中樞邏輯(IMC) ο此外,CL1272、1282還可包括I/O控制邏輯。圖10示出:不僅存儲器1242、1244耦合至CL1272、1282,I/0設備1214也耦合至控制邏輯1272、1282。傳統(tǒng)I/O設備1215被耦合至芯片組1290。
[0099]現在參照圖14,所示出的是根據本發(fā)明實施例的SoCHOO的框圖。圖15中的類似元件具有相似的附圖標記。另外,虛線框是更先進的SoC的可選特征。在圖14中,互連單元(多個)1402耦合至:應用處理器1410,包括一個或多個核1402A-N的集合和共享高速緩存單元(多個)1406 ;系統(tǒng)代理單元1410 ;總線控制器單元(多個)1414 ;集成存儲器控制器單元(多個)1414 ;一個或多個媒體處理器1420的集合,可包括集成圖形邏輯1408、用于提供靜態(tài)和/或視頻照相機功能的圖像處理器1424、用于提供硬件音頻加速的音頻處理器1426、以及用于提供視頻編碼/解碼加速的視頻處理器1428 ;靜態(tài)隨機存取存儲器(SRAM)單元1430 ;直接存儲器存取(DMA)單元1432 ;以及顯示單元1440,用于耦合至一個或多個外部顯示器。
[0100]本文公開的機制的各實施例可以被實現在硬件、軟件、固件或這些實現方法的組合中。本發(fā)明的實施例可實現為在可編程系統(tǒng)上執(zhí)行的計算機程序或程序代碼,該可編程系統(tǒng)包括至少一個處理器、存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設備以及至少一個輸出設備。
[0101]可將程序代碼應用至輸入數據以執(zhí)行本文描述的功能并產生輸出信息。輸出信息可以按已知方式被應用于一個或多個輸出設備。為了本申請的目的,處理系統(tǒng)包括具有諸如例如數字信號處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器之類的處理器的任何系統(tǒng)。
[0102]程序代碼可以用高級程序化語言或面向對象的編程語言來實現,以便與處理系統(tǒng)通信。程序代碼也可以在需要的情況下用匯編語言或機器語言來實現。事實上,本文中描述的機制不僅限于任何特定編程語言的范圍。在任一情形下,語言可以是編譯語言或解譯
;五古
P口口 ο
[0103]至少一個實施例的一個或多個方面可以由存儲在機器可讀介質上的代表性指令來實現,該指令表示處理器中的各種邏輯,該指令在被機器讀取時使得該機器制作用于執(zhí)行本文所述的技術的邏輯。被稱為“IP核”的這些表示可以被存儲在有形的機器可讀介質上,并被提供給各種客戶或生產設施以加載到實際制造該邏輯或處理器的制造機器中。
[0104]此類機器可讀存儲介質可包括但不限于通過機器或設備制造或形成的非易失性的有形裝置,包括存儲介質,諸如:硬盤;包括軟盤、光盤、壓縮盤只讀存儲器(CD-ROM)、可重寫壓縮盤(CD-RW)以及磁光盤的任何其它類型的盤;諸如只讀存儲器(ROM)之類的半導體器件;諸如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)之類的隨機存取存儲器(RAM);可擦除可編程只讀存儲器(EPROM);閃存;電可擦除可編程只讀存儲器(EEPROM);磁卡或光卡;或適于存儲電子指令的任何其它類型的介質。
[0105]因此,本發(fā)明的各實施例還包括非瞬態(tài)、有形機器可讀介質,該介質包含向量友好指令格式的指令或包含設計數據,諸如硬件描述語言(HDL),它定義本文中描述的結構、電路、裝置、處理器和/或系統(tǒng)特性。這些實施例也被稱為程序產品。
[0106]在某些情況下,指令轉換器可用來將指令從源指令集轉換至目標指令集。例如,指令轉換器可以變換(例如使用靜態(tài)二進制變換、包括動態(tài)編譯的動態(tài)二進制變換)、變形(morph)、仿真或以其它方式將指令轉換成將由核來處理的一個或多個其它指令。指令轉換器可以用軟件、硬件、固件、或其組合實現。指令轉換器可以在處理器上、在處理器外、或者部分在處理器上部分在處理器外。
[0107]圖16是根據本發(fā)明的實施例的對照使用軟件指令轉換器將源指令集中的二進制指令轉換成目標指令集中的二進制指令的框圖。在所示的實施例中,指令轉換器是軟件指令轉換器,但作為替代該指令轉換器可以用軟件、固件、硬件或其各種組合來實現。
[0108]圖16示出可以使用x86編譯器1604來編譯高級語言1602的程序,以便生成可以由具有至少一個x86指令集核1616的處理器原生地執(zhí)行的x86 二進制代碼1606 (假設指令中的一些是以向量友好指令格式編譯的)。具有至少一個x86指令集核1816的處理器表示任何處理器,該處理器能夠通過兼容地執(zhí)行或以其它方式處理(I)英特爾x86指令集核的指令集的大部分或(2)旨在在具有至少一個x86指令集核的英特爾處理器上運行的應用或其它軟件的對象代碼版本,從而執(zhí)行與具有至少一個x86指令集核的英特爾處理器基本相同的功能,以實現與具有至少一個x86指令集核的英特爾處理器基本相同的結果。x86編譯器1804表示用于生成x86 二進制代碼1606(例如,對象代碼)的編譯器,該二進制代碼1616可通過或不通過附加的可鏈接處理在具有至少一個x86指令集核1016的處理器上執(zhí)行。類似地,圖90示出用高級語言1602的程序可以使用替代的指令集編譯器1608來編譯,以生成可以由不具有至少一個x86指令集核的處理器1614(例如具有執(zhí)行加利福尼亞州桑尼維爾市的MIPS技術公司的MIPS指令集,和/或執(zhí)行加利福尼亞州桑尼維爾市的ARM控股公司的ARM指令集的核的處理器)來原生執(zhí)行的替代指令集二進制代碼1610。指令轉換器1612被用來將x86 二進制代碼1606轉換成可以由不具有x86指令集核1614的處理器原生執(zhí)行的代碼。該經轉換的代碼不大可能與替換性指令集二進制代碼1610相同,因為難以制出能夠這樣做的指令轉換器;然而,轉換后的代碼將完成一般操作并由來自替換性指令集的指令構成。因此,指令轉換器1612表示:通過仿真、模擬或任何其它過程來允許不具有x86指令集處理器或核的處理器或其它電子設備得以執(zhí)行x86 二進制代碼1606的軟件、固件、硬件或其組合。
[0109]指令(多個)的某些操作可由硬件組件執(zhí)行,且可體現在機器可執(zhí)行指令中,該指令用于致使或至少導致以所述指令編程的電路或其它硬件組件執(zhí)行所述操作。電路可包括通用或專用處理器、或邏輯電路,這里僅給出幾個示例。這些操作還可任選地由硬件和軟件的組合執(zhí)行。執(zhí)行邏輯和/或處理器可包括專用或特定電路或其它邏輯,其響應于機器指令或從機器指令導出的或一個或多個控制信號,而存儲指令指定的結果操作數。例如,本文公開的指令(多個)的實施例可在一個或多個系統(tǒng)中執(zhí)行,且向量友好指令格式的指令(多個)的實施例可存儲在將在系統(tǒng)中執(zhí)行的程序代碼中。另外這些附圖的處理元件可利用本文詳細描述的詳細描述的流水線和/或架構(例如有序和無序架構)之一。例如,有序架構的解碼單元可解碼指令(多個)、將經解碼的指令傳送到向量或標量單元等。
[0110]上述描述旨在說明本發(fā)明的優(yōu)選實施例。根據上述討論,還應當顯而易見的是,在發(fā)展迅速且進一步的進展難以預見的此【技術領域】中,本領域技術人員可在安排和細節(jié)上對本發(fā)明進行修改,而不背離落在所附權利要求及其等價方案的范圍內的本發(fā)明的原理。例如,方法的一個或多個操作可組合或進一步分開。
[0111]可選實施例
[0112]盡管已經描述了將原生執(zhí)行向量友好指令格式的實施例,但本發(fā)明的可選實施例可通過運行在執(zhí)行不同指令集的處理器(例如,執(zhí)行美國加利福亞州桑尼維爾的MIPS技術公司的MIPS指令集的處理器、執(zhí)行加利福亞州桑尼維爾的ARM控股公司的ARM指令集的處理器)上運行的仿真層來執(zhí)行向量友好指令格式。同樣,盡管附圖中的流程圖示出本發(fā)明的某些實施例的特定操作順序,但應理解該順序是示例性的(例如,可選實施例可按不同順序執(zhí)行操作、組合某些操作、使某些操作重疊等)。
[0113]在以上描述中,出于解釋的目的,闡明了眾多具體細節(jié)以提供對本發(fā)明的實施例的透徹理解。然而,對本領域技術人員而言將是明顯的是,不用這些具體細節(jié)中的一些也可實踐一個或多個其他實施例。提供所描述的具體實施例不是為了限制本發(fā)明而是為了說明本發(fā)明的實施例。本發(fā)明的范圍不是由所提供的具體示例確定,而是僅由所附權利要求確定。
【權利要求】
1.一種用于在計算機處理器中執(zhí)行過程的方法,包括: 執(zhí)行一個或多個JH_SBOX_L指令以在JH狀態(tài)上執(zhí)行S-Box映射和線性(L)變換;以及一旦已經執(zhí)行了 S-Box映射和L變換,就執(zhí)行一個或多個JH_Permute指令來在所述JH狀態(tài)上執(zhí)行置換函數。
2.如權利要求1所述的方法,其特征在于,在執(zhí)行所述JH_SB0X_L指令前,JH狀態(tài)位被連續(xù)存儲在第一和第二寄存器中。
3.如權利要求2所述的方法,其特征在于,所述第一和第二寄存器是512位ZMM寄存器。
4.如權利要求3所述的方法,其特征在于,所述第一寄存器存儲所述JH狀態(tài)的低512位,且所述第二寄存器存儲所述JH狀態(tài)的高512位。
5.如權利要求2所述的方法,其特征在于,進一步包括: 第一次執(zhí)行所述JH_SB0X_L指令,以在所述JH狀態(tài)的存儲于所述第一寄存器內的第一分量上執(zhí)行S-Box映射和L變換;以及 第二次執(zhí)行所述JH_SB0X_L指令,以在所述JH狀態(tài)的存儲于所述第二寄存器內的第二分量上執(zhí)行S-Box映射和L變換。
6.如權利要求5所述的方法,其特征在于,使用掩碼寄存器來第一次和第二次執(zhí)行所述 JH_SB0X_L 指令。
7.如權利要求5所述的方法,其特征在于,進一步包括: 在第一目的寄存器內將第一次執(zhí)行所述JH_SB0X_L指令的結果存儲為第一 JH狀態(tài)結果;以及 在第二目的寄存器內將第二次執(zhí)行所述JH_SB0X_L指令的結果存儲為第二 JH狀態(tài)結果O
8.如權利要求7所述的方法,其特征在于,執(zhí)行所述JH_Permute指令還包括: 從所述第一和第二目的寄存器檢索JH狀態(tài)結果; 在所述第一 JH狀態(tài)結果上執(zhí)行第一替換函數;以及 在所述第二 JH狀態(tài)結果上執(zhí)行第二替換函數。
9.一種裝置,包括: 多個數據寄存器;以及 與所述多個數據寄存器耦合的執(zhí)行單元,用于執(zhí)行一個或多個JH_SB0X_L指令以在JH狀態(tài)上執(zhí)行S-Box映射和線性(L)變換,且一旦已經執(zhí)行了 S-Box映射和L變換,就執(zhí)行一個或多個JH_Permute指令來在JH狀態(tài)上執(zhí)行置換函數。
10.如權利要求9所述的裝置,其特征在于,所述多個數據寄存器包括: 用于存儲JH狀態(tài)位的第一半部的第一寄存器;以及 用于存儲所述JH狀態(tài)位的第二半部的第二寄存器。
11.如權利要求10所述的裝置,其特征在于,還包括:在執(zhí)行所述JH_SB0X_I^g令前,將JH狀態(tài)位連續(xù)地存儲第一和第二寄存器內。
12.如權利要求11所述的裝置,其特征在于,所述第一和第二寄存器是512位ZMM寄存器。
13.如權利要求10所述的裝置,其特征在于,所述執(zhí)行單元第一次執(zhí)行所述JH_SB0X_L指令,以在所述JH狀態(tài)位的第一半部上執(zhí)行S-Box映射和L變換;并且第二次執(zhí)行所述JH_SB0X_L指令,以在所述JH狀態(tài)位的第二半部上執(zhí)行S-Box映射和L變換。
14.如權利要求13所述的裝置,其特征在于,使用掩碼寄存器來第一次和第二次執(zhí)行所述JH_SB0X_L指令。
15.如權利要求14所述的裝置,其特征在于,所述執(zhí)行單元在第一目的寄存器內將第一次執(zhí)行所述JH_SB0X_L指令的結果存儲為第一 JH狀態(tài)結果,并在第二目的寄存器內將第二次執(zhí)行所述JH_SB0X_L指令的結果存儲為第二 JH狀態(tài)結果。
16.如權利要求15所述的裝置,其特征在于,所述執(zhí)行單元通過以下步驟執(zhí)行所述JH_Permute指令:從所述第一和第二目的寄存器檢索JH狀態(tài)結果,在所述第一 JH狀態(tài)結果上執(zhí)行第一置換函數,并在所述第二 JH狀態(tài)結果上執(zhí)行第二置換函數。
17.一種制品,包括: 機器可讀存儲介質,其包括一個或多個固態(tài)存儲材料,所述機器可讀存儲介質存儲有指令,當執(zhí)行所述指令時,使得處理器: 執(zhí)行一個或多個JH_SB0X_I^g令以在JH狀態(tài)上執(zhí)行S-Box映射和線性(L)變換;以及 一旦已經執(zhí)行了 S-Box映射和L變換,就執(zhí)行一個或多個JH_Permute指令來在所述JH狀態(tài)上執(zhí)行置換函數。
18.如權利要求17所述的制品,其特征在于,在執(zhí)行所述JH_SB0X_L指令前,所述JH狀態(tài)位被連續(xù)存儲在第一 和第二寄存器中。
19.如權利要求17所述的制品,其特征在于,所述機器可讀存儲介質存儲指令,當執(zhí)行所述指令時,進一步使得處理器: 第一次執(zhí)行所述JH_SB0X_L指令,以在所述JH狀態(tài)的存儲于所述第一寄存器內的第一分量上執(zhí)行S-Box映射和L變換;以及 第二次執(zhí)行所述JH_SB0X_L指令,以在所述JH狀態(tài)的存儲于所述第二寄存器內的第二分量上執(zhí)行S-Box映射和L變換。
20.如權利要求19所述的制品,其特征在于,使用掩碼寄存器來第一次和第二次執(zhí)行所述JH_SB0X_L指令。
21.如權利要求19所述的制品,其特征在于,所述機器可讀存儲介質存儲指令,當執(zhí)行所述指令時,進一步使得處理器: 在第一目的寄存器內將第一次執(zhí)行所述JH_SB0X_L指令的結果存儲為第一 JH狀態(tài)結果;以及 在第二目的寄存器內將第二次執(zhí)行所述JH_SB0X_L指令的結果存儲為第二 JH狀態(tài)結果O
22.如權利要求21所述的制品,其特征在于,所述機器可讀存儲介質存儲指令,當執(zhí)行所述指令時,進一步使得處理器: 從所述第一和第二目的寄存器檢索JH狀態(tài)結果; 在第一 JH狀態(tài)結果上執(zhí)行第一替換函數;以及 在第二 JH狀態(tài)結果上執(zhí)行第二替換函數。
23.—種系統(tǒng),包括: 互連;與所述互連耦合的處理器,用于執(zhí)行一個或多個JH_SBOX_L指令以在JH狀態(tài)上執(zhí)行S-Box映射和線性(L)變換,且一旦已經執(zhí)行了 S-Box映射和L變換,就執(zhí)行一個或多個JH_Permute指令來在JH狀態(tài)上執(zhí)行置換函數; 與所述互連耦合的動態(tài)隨機存取存儲器(DRAM)。
24.如權利要求23所述的系統(tǒng),其特征在于,所述多個數據寄存器包括: 用于存儲JH狀態(tài)位的第一半部的第一寄存器;以及 用于存儲所述JH狀態(tài)位的第二半部的第二寄存器。
25.如權利要求24所述的系統(tǒng),其特征在于,所述處理器第一次執(zhí)行所述JH_SB0X_I^^令,以在所述JH狀態(tài)位的第一半部上執(zhí)行S-Box映射和L變換;并且第二次執(zhí)行所述JH_SB0X_L指令,以在所述JH狀態(tài)位的第二半部上執(zhí)行S-Box映射和L變換。
26.如權利要求25所述的系統(tǒng),其特征在于,使用掩碼寄存器來第一次和第二次執(zhí)行所述JH_SB0X_L指令。
27.如權利要求25所述的系統(tǒng),其特征在于,所述處理器在第一目的寄存器內將第一次執(zhí)行所述JH_SB0X_l4g令的結果存儲為第一 JH狀態(tài)結果,并在第二目的寄存器內將第二次執(zhí)行所述JH_SB0X_L指令的結果存儲為第二 JH狀態(tài)結果。
28.如權利要求27所述的系統(tǒng),其特征在于,所述處理器通過以下步驟執(zhí)行所述JH_Permute指令:從所述第一和第二目的寄存器檢索JH狀態(tài)結果,在所述第一 JH狀態(tài)結果上執(zhí)行第一置換函數,并在所述第二 JH狀態(tài)結果上執(zhí)行第二置換函數。
【文檔編號】H04L9/12GK104012031SQ201180075719
【公開日】2014年8月27日 申請日期:2011年12月22日 優(yōu)先權日:2011年12月22日
【發(fā)明者】K·S·雅普, G·M·沃爾里齊, V·戈帕爾, J·D·吉爾福德, E·奧茲圖科, S·M·格爾雷, W·K·費格哈利, M·G·迪克森 申請人:英特爾公司