欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

執(zhí)行GROESTL散列的指令的制作方法

文檔序號:11386131閱讀:244來源:國知局
執(zhí)行GROESTL散列的指令的制造方法與工藝

本申請是國際申請?zhí)枮閜ct/us2011/066775,國際申請日為2011/12/22,進(jìn)入國家階段的申請?zhí)枮?01180076443.3,題為“執(zhí)行g(shù)roestl散列的指令”的發(fā)明專利申請的分案申請。

發(fā)明領(lǐng)域

本公開涉及加密算法,尤其涉及groestl安全散列算法。



背景技術(shù):

密碼術(shù)(cryptology)是一種依賴算法和密鑰來保護(hù)信息的工具。該算法是復(fù)雜的數(shù)學(xué)算法,而密鑰是位串。存在兩種基本的密碼術(shù)系統(tǒng)類型:秘密密鑰系統(tǒng)和公開密鑰系統(tǒng)。秘密密鑰系統(tǒng)(也被稱為對稱系統(tǒng))具有兩方或更多方共享的單一密鑰(“秘密密鑰”)。該單一密鑰既被用來將信息加密,也被用來將信息解密。

由國家標(biāo)準(zhǔn)和技術(shù)委員會(nist)作為聯(lián)邦信息處理標(biāo)準(zhǔn)(fips)197發(fā)布的先進(jìn)加密標(biāo)準(zhǔn)(aes)是一種秘密密鑰系統(tǒng)。aes是能夠?qū)⑿畔⒓用芎徒饷艿膶ΨQ塊密碼(blockcipher)。groestl算法是一種基于aes的迭代散列函數(shù),其具有從兩個固定的大的不同的置換(p和q)構(gòu)造的壓縮函數(shù)。

該壓縮函數(shù)(f)被經(jīng)由p和q的置換來定義,使得:f(h,m)=p(hxorm)xorq(m)xorh,其中函數(shù)p和q是置換函數(shù),而是hi-1是輸入狀態(tài),mi是消息塊輸入,而hi是結(jié)果狀態(tài)。加密(密碼)使用該秘密密鑰(密碼密鑰)執(zhí)行一系列變換來將被稱為“明文”的可理解數(shù)據(jù)變換為被稱為“密文”的不可理解形式。密碼中的變換可包括:(1)使用異或(xor)運算向該狀態(tài)(二維字節(jié)數(shù)組)添加輪次常數(shù)(從p函數(shù)和q函數(shù)推出的值);(2)使用非線性字節(jié)代換表(s-box)處理該狀態(tài);(3)將該狀態(tài)的最后三行循環(huán)移位不同的偏移量;以及(4)取該狀態(tài)的所有的列并將這些列的數(shù)據(jù)(彼此獨立地)混合以產(chǎn)生新的列。

解密(逆向密碼)使用該密碼密鑰執(zhí)行一系列變換來將“密文”塊變換為相同大小的“明文”塊。逆向密碼中的變換是該密碼中的變換的逆反。

groestl算法用10個或14個連續(xù)的輪次將明文變換為密碼文本或?qū)⒚芪淖儞Q為明文,輪次的數(shù)量取決于密鑰的長度。

附圖簡述

結(jié)合以下附圖,從以下詳細(xì)描述可獲得對本發(fā)明更好的理解,其中:

圖1是圖解系統(tǒng)的一個實施例的框圖;

圖2是圖解處理器的一個實施例的框圖;

圖3是圖解緊縮數(shù)據(jù)寄存器的一個實施例的框圖;

圖4a和4b圖解了圖解由mul_byte_gf2指令和mix_byte_xor指令執(zhí)行的過程的一個實施例的流程圖;

圖5是根據(jù)本發(fā)明的一個實施例的寄存器架構(gòu)的框圖;

圖6a是根據(jù)本發(fā)明的多個實施例的單cpu核,連同其到管芯上互連網(wǎng)絡(luò)的連接及其本地2級(l2)高速緩存子集,的框圖;

圖6b是根據(jù)本發(fā)明的多個實施例的cpu核的一部分的剖視圖;

圖7是圖解根據(jù)本發(fā)明的多個實施例的示例性無序架構(gòu)的框圖;

圖8是根據(jù)本發(fā)明的一個實施例的系統(tǒng)的框圖;

圖9是根據(jù)本發(fā)明的一實施例的第二系統(tǒng)的框圖;

圖10是根據(jù)本發(fā)明的一實施例的第三系統(tǒng)的框圖;

圖11是根據(jù)本發(fā)明的一實施例的片上系統(tǒng)(soc)的框圖;

圖12是根據(jù)本發(fā)明的多個實施例的帶有集成存儲器控制器和圖形元件的單核處理器和多核處理器的框圖;以及

圖13是對照根據(jù)本發(fā)明的多個實施例的使用軟件指令轉(zhuǎn)換器來將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的框圖。

詳細(xì)描述

在下面的描述中,出于解釋目的闡述了眾多具體細(xì)節(jié)以便提供對本發(fā)明的完全理解。然而對于本領(lǐng)域技術(shù)人員顯然的是,沒有這些具體細(xì)節(jié)中的一些細(xì)節(jié)也可實踐本發(fā)明。在其他實例中,公知的結(jié)構(gòu)和設(shè)備以框圖形式示出以避免湮沒本發(fā)明的基礎(chǔ)概念。

說明書中對“一個實施例”或“一實施例”的引用旨在指示結(jié)合該實施例所述的特定特征、結(jié)構(gòu)、或特性被包括在本發(fā)明的至少一個實施例中。在說明書各處出現(xiàn)的短語“在一個實施例中”不一定全部指相同實施例。

描述了一種包括用于處理groestl安全散列算法的指令的機(jī)制。如同上面討論的,groestl算法是一種基于在aes標(biāo)準(zhǔn)中指定的rijindael算法的加密散列函數(shù)。該aes標(biāo)準(zhǔn)包括提供用于在通用處理器中執(zhí)行aes加密和解密的指令集擴(kuò)展的指令集(例如,aes指令集)。

該aes指令集是對x86指令集架構(gòu)(isa)的擴(kuò)展,其改善了使用該aes算法的應(yīng)用的速度。根據(jù)一個實施例,該aes指令集擴(kuò)展被實現(xiàn)以執(zhí)行g(shù)roestl算法。圖1是系統(tǒng)100的一個實施例的框圖,該系統(tǒng)包括用于在通用處理器中執(zhí)行g(shù)roestl加密和解密的aes指令集擴(kuò)展。

系統(tǒng)100包括處理器101、存儲器控制器中樞(mch)102、以及輸入/輸出(i/o)控制器中樞(ich)104。mch102包括控制處理器101和存儲器108之間的通信的存儲器控制器106。處理器101和mch102通過系統(tǒng)總線116通信。

處理器101可以是多種處理器中的任何一者,所述多種處理器諸如是:單核pentium處理器、單核intelceleron處理器、xscale處理器或多核處理器(諸如pentiumd、處理器、i3,i5,i7,2duo及quad、處理器)、或任何其他類型的處理器。

存儲器108可以是動態(tài)隨機(jī)存取存儲器(dram)、靜態(tài)隨機(jī)存取存儲器(sram)、同步動態(tài)隨機(jī)存取存儲器(sdram)、雙數(shù)據(jù)率2(ddr2)ram或rambus動態(tài)隨機(jī)存取存儲器(rdram)或任何其他類型的存儲器。

ich104可使用高速芯片到芯片互連114(諸如直接媒體接口(dmi))耦合于mch102。dmi支持經(jīng)由兩個單向通道的2千兆比特/秒并發(fā)傳輸速率。

ich104可包括用于控制與耦合至ich104的至少一個存儲設(shè)備112的通信的存儲i/o控制器110。該存儲設(shè)備可以例如是盤驅(qū)動器、數(shù)字視頻盤(dvd)驅(qū)動器、緊致盤(cd)驅(qū)動器、獨立盤冗余陣列(raid)、磁帶驅(qū)動器或其他存儲設(shè)備。ich104可使用諸如串行附接小型計算機(jī)系統(tǒng)接口(sas)或串行先進(jìn)技術(shù)附接(sata)之類的串行存儲協(xié)議通過存儲協(xié)議互連118與存儲設(shè)備112通信。

在一個實施例中,處理器101包括用于執(zhí)行g(shù)roestl加密和解密運算的groestl函數(shù)103。groestl函數(shù)103可被用來加密或解密存儲器108中存儲的和/或存儲設(shè)備112中存儲的信息。

圖2是圖解了處理器101的一個實施例的框圖。處理器101包括用于解碼從1級(l1)指令高速緩存202接收的處理器指令的取回和解碼單元202。要用于執(zhí)行該指令的數(shù)據(jù)可被存儲在寄存器文件208中。在一個實施例中,寄存器文件208包括被aes指令用來存儲供該aes指令使用的數(shù)據(jù)的多個寄存器。

圖3是寄存器文件208中的緊縮數(shù)據(jù)寄存器的適當(dāng)集合的示例實施例的框圖。所示緊縮數(shù)據(jù)寄存器包括32個512位緊縮數(shù)據(jù)或矢量寄存器。這32個512位寄存器被標(biāo)記為zmm0到zmm31。在所示實施例中,這些寄存器中的較低的16個寄存器(即zmm0-zmm15)的較低階的256位被混疊或覆蓋在被標(biāo)記為ymm0-ymm15的相應(yīng)的256位緊縮數(shù)據(jù)或矢量寄存器中,然而不要求如此。

類似地,在所示實施例中,ymm0-ymm15的較低階128位被混疊或覆蓋在被標(biāo)記為xmm0-xmm1的相應(yīng)的128位緊縮數(shù)據(jù)或矢量寄存器上,然而也不要求如此。512位寄存器zmm0到zmm31能夠操作以保存512位緊縮數(shù)據(jù)、256位緊縮數(shù)據(jù)、或128位緊縮數(shù)據(jù)。

256位寄存器ymm0-ymm15能夠操作以保存256位緊縮數(shù)據(jù)或128位緊縮數(shù)據(jù)。128位寄存器xmm0-xmm1能夠操作以保存128位緊縮數(shù)據(jù)。這些寄存器中的每個寄存器可被用于存儲緊縮浮點數(shù)據(jù)或緊縮整數(shù)數(shù)據(jù)。支持不同的數(shù)據(jù)元素大小,包括至少8位字節(jié)數(shù)據(jù)、16位字?jǐn)?shù)據(jù)、32位雙字或單精度浮點數(shù)據(jù)、以及64位四字或雙精度浮點數(shù)據(jù)。緊縮數(shù)據(jù)寄存器的替代實施例可包括不同數(shù)量的寄存器、不同大小的寄存器,并且可以或可以不在較小的寄存器上混疊較大的寄存器。

參考圖2,取回和解碼單元202從l1指令高速緩存202取回宏指令,解碼所述宏指令并且將所述宏指令分解為被稱為微操作(μops)的簡單操作。執(zhí)行單元210調(diào)度并執(zhí)行所述微操作。在所示實施例中,執(zhí)行單元210中的groestl函數(shù)103包括用于aes指令的微操作。退役單元212將所執(zhí)行的指令的結(jié)果寫到寄存器或存儲器。

函數(shù)103執(zhí)行壓縮函數(shù)f(h,m)=p(hxorm)xorq(m)xorh,其中置換p和q是使用多個輪次r來設(shè)計的,其包括多個輪次變換。在groestl函數(shù)103中,針對每個置換定義全部4個輪次變換。所述變換對被表示為8位字節(jié)的矩陣(例如,矩陣a)的狀態(tài)操作。在一個實施例中,該矩陣具有8行和8列。然而,其他實施例可實現(xiàn)其他變型(例如,8行和16列)。

在一個實施例中,groestl函數(shù)103所執(zhí)行的變換序列包括addroundconstant(ac)變換、subbytes變換、shiftbytes變換和mixbytes變換。

ac變換向狀態(tài)矩陣a添加輪次相關(guān)常數(shù)(例如,a←axorc[i],其中c[i]是在輪次i中使用的輪次常數(shù))。p和q具有不同的輪次常數(shù)。

subbytes變換用另一值取代該狀態(tài)矩陣中的每個字節(jié)。使用非線性字節(jié)取代表(s-box)處理該狀態(tài)。subbytes是通過將s-box變換應(yīng)用于該16個字節(jié)中的每個字節(jié)來定義的16字節(jié)到16字節(jié)(逐字節(jié))變換。

s-box變換可經(jīng)由如下的查找表來表示:對查找表的輸入是字節(jié)b[7:0],其中x和y表示低和高半字節(jié)x[3:0]=b[7:4],y[3:0]=b[3:0]。輸出字節(jié)在該表中被編碼為用16(h)進(jìn)制表示的2數(shù)位數(shù)。在一個實施例中,aes-ni指令集提供了用于為groestl執(zhí)行subbytes的精確功能。在這種實施例中,使用aes-ni指令aesenclast來計算subbytes變換。

shiftbytes變換將一行內(nèi)的字節(jié)向左循環(huán)移位多個位置。在一個實施例中,shiftbytes實現(xiàn)aes-ni指令pshufb以對xmm寄存器中的字節(jié)快速重新排序。

當(dāng)p和q矩陣是以xmm/ymm寄存器中的行組織的時,ac和shiftbytes操作不是計算密集的,而使用aes-ni指令aesenclast可以同時為高達(dá)16個字節(jié)計算subbytes操作。從而,aes指令集中的復(fù)雜度和循環(huán)的大部分是由mixbytes操作帶來的。

mixbytes變換將該矩陣中的每一列獨立地進(jìn)行變換。mixbytes實現(xiàn)有限字段f256,其是經(jīng)由對f2的不可化簡多項式x8xorx4xorx3xorxxor1來定義的。狀態(tài)矩陣a的字節(jié)可被看作f256的元素,(例如,作為系數(shù)為{0,1}的最高為7次的多項式)。每個字節(jié)的最低有效位確定x0的系數(shù)等。

mixbytes將矩陣a的每一列乘以f256中的常數(shù)8x8矩陣b。從而,整個矩陣a上的變換可被寫為矩陣乘法:a←bxa。在一個實施例中,矩陣b是循環(huán)行列式(例如,每一行等于將上一行向右輪轉(zhuǎn)一個位置,并被指定為:

從而,b=circ(02;02;03;04;05;03;05;07)。該狀態(tài)矩陣的每一行被在f256中與循環(huán)行列式b矩陣的8個行相乘并累加以每次一行地進(jìn)行mixbytes變換。此操作花費8個指令(f256中的64個乘法/累加)。針對groestl-224/256實現(xiàn)總共64x8個伽羅瓦域(gf)256乘法/累加(其中乘數(shù)為02,03,04,05,07)。

因為groestl狀態(tài)按行組織,所以每次一行地形成經(jīng)更新的狀態(tài)矩陣,使得:

結(jié)果行1=a行1*02+a行2*02+a行3*03+a行4*04+a行5*05+a行6*03+a行7*05+a行8*07

結(jié)果行2=a行1*07+a行2*02+a行3*02+a行4*03+a行5*04+a行6*05+a行7*03+a行8*05

結(jié)果行3=a行1*05+a行2*07+a行3*02+a行4*02+a行5*03+a行6*04+a行7*05+a行8*03

結(jié)果行4=a行1*03+a行2*05+a行3*07+a行4*02+a行5*02+a行6*03+a行7*04+a行8*05

結(jié)果行5=a行1*05+a行2*03+a行3*05+a行4*07+a行5*02+a行6*02+a行7*03+a行8*04

結(jié)果行6=a行1*04+a行2*05+a行3*03+a行4*05+a行5*07+a行6*02+a行7*02+a行8*03

結(jié)果行7=a行1*03+a行2*04+a行3*05+a行4*03+a行5*05+a行6*07+a行7*02+a行8*02

結(jié)果行8=a行1*02+a行2*03+a行3*04+a行4*05+a行5*03+a行6*05+a行7*07+a行8*02

目前,與02,03,04,05和07的gf乘法通過以下方式實現(xiàn):將每一行與2的8個gf相乘乘法和經(jīng)加倍的行乘積與2的8個附加的gf相乘,再次產(chǎn)生每一行4倍的乘積。這導(dǎo)致16個gf乘法。03因子形成為行xor2*行,05因子形成為行xor4*行,而07因子形成為行xor2*行xor4*行。此外,在傳統(tǒng)系統(tǒng)中執(zhí)行的xor操作的總數(shù)量從48變?yōu)?08。

在使用aes指令的傳統(tǒng)系統(tǒng)中,與2的gf相乘是通過創(chuàng)建帶有用作被乘數(shù)字節(jié)的16進(jìn)制ff的字節(jié)的寄存器來形成,所述被乘數(shù)字節(jié)的最高有效位(msb)(例如,=1)使得超過256的每個字節(jié)乘積能夠加(xor)1b。在這種系統(tǒng)中,pcmpgtb指令被用來創(chuàng)建ff字節(jié)掩碼寄存器。從而,與2相乘要求4個或5個simd指令。從而,使用當(dāng)前指令的mixbytes的預(yù)期性能是(16*4)+58=122個操作,需要61個周期,每個周期退役2個simd指令。

根據(jù)一個實施例,新指令mul_byte_gf2和mix_byte_xor被實現(xiàn)以加速mixbytes變換。在這種實施例中,mul_byte_gf2指令被執(zhí)行兩次以便對狀態(tài)矩陣執(zhí)行與2的gf相乘運算。本指令的示例是mul_byte_gf2zmm2,zmm1,其中zmm2=按8字節(jié)行的64位段組織的初始8x8矩陣;zmm1=該矩陣的每個元素的2倍;其中mul_byte_gf2zmm2,zmm1zmm2中形成2x原始矩陣,而mul_byte_gf2zmm3,zmm2乘以zmm2中的2x矩陣并且zmm3=zmm1矩陣中的每個元素的4倍。

圖4a是圖解mul_byte_gf2指令所執(zhí)行的過程的一個實施例的流程圖。在處理框410處,所有8個64位行被存儲在zmm1中。在處理框420處,zmm1中所存儲的行被乘以2。對于msb=1的每個字節(jié),用1bhex(1b十六位)與該值進(jìn)行xor以完成gf2乘法。

在處理框430處,gf2結(jié)果被存儲在zmm2中。在處理框440處,zmm2中存儲的乘以2的結(jié)果被乘以2以創(chuàng)建乘以4的結(jié)果。在處理框450處,乘以4的結(jié)果被存儲在zmm3中。從而,3個zmm寄存器包括被用作mix_byte_xorzmm1,zmm2,zmm3的源操作數(shù)的8x8矩陣、2xgf2中的每個字節(jié)以及4xgf2中的每個字節(jié),其中zmm1是mixbyte操作的結(jié)果的目的地寄存器。

mix_byte_xor的數(shù)據(jù)路徑包括到達(dá)用xor函數(shù)來組合狀態(tài)矩陣的1、2和4因子的路由。圖4b圖解mix_byte_xor所執(zhí)行的流程的一個實施例。mix_byte_xor使用由mul_byte_gf2生成的x1、x2和x4因子為該狀態(tài)矩陣的每64(或128)個元素執(zhí)行所有的xor運算并分別存儲在寄存器zmm1、zmm2和zmm3中。如圖4b中所示,通過從結(jié)果寄存器中取乘法因子并執(zhí)行xor運算來得到結(jié)果行。

在一個實施例中,將x1、x2和x4因子相加以得到其他因子。例如,結(jié)果行1中的因子3是通過將來自相應(yīng)寄存器的x1因子和x2因子相加獲得的。類似地,因子7是通過將x1、x2和x4因子相加獲得的。在一個實施例中,結(jié)果行被存儲在zmm1中。然而,在其他實施例中,結(jié)果行可被存儲在zmm2或zmm3之一中。

mul_byte_gf2和mix_byte_xor指令被實現(xiàn)在3周期流水線中,允許在10個周期中計算出p和q矩陣。對于兩個p和q8x8groestl狀態(tài)矩陣的mixbytes計算,mul_byte_gf2和mix_byte_xor指令所得到的性能改進(jìn)是從60個周期減少到10個周期。

在又一個實施例中,groestl-1024使用相同的指令來對p1024和q1024狀態(tài)矩陣執(zhí)行mixbytes操作,對于該矩陣的左8x8側(cè)使用2個mul_byte_gf2指令,且對于該矩陣的右8x8側(cè)使用2個mul_byte_gf2指令。隨后使用mix_byte_xor指令來確定8x16矩陣的每一半。

示例性寄存器架構(gòu)-圖5

圖5是圖解根據(jù)本發(fā)明的一個實施例的寄存器架構(gòu)的框圖。該架構(gòu)的寄存器文件和寄存器被列在下面:

矢量寄存器文件510——在所示實施例中,存在32個512位寬的矢量寄存器,這些寄存器被作為zmm0到zmm31引用。較低的16個zmm寄存器的較低階856位被覆蓋在寄存器ymm0-16上。較低的16個zmm寄存器的較低階128位(ymm寄存器的較低階128位)被覆蓋在寄存器xmm0-15上。

寫掩碼寄存器515-在所示實施例中,存在8個寫掩碼寄存器(k0到k7),每個寫掩碼寄存器的大小為64位。如前所述,在本發(fā)明的一個實施例中,矢量掩碼寄存器k0不能用作寫掩碼;當(dāng)正常情況下指示k0的編碼被用于寫掩碼時,它選擇0xffff的硬連線的寫掩碼,從而有效地針對該指令禁用寫掩碼。

多媒體擴(kuò)展控制狀態(tài)寄存器(mxcsr)1020——在所示實施例中,此32位寄存器提供在浮點運算中使用的狀態(tài)和控制位。

通用寄存器525-在所示實施例中,存在16個64位通用寄存器,它們與現(xiàn)有的x86尋址模式一起被用來對存儲器操作數(shù)尋址。這些寄存器用名稱來rax,rbx,rcx,rdx,rbp,rsi,rdi,rsp和r8到r15指代。

擴(kuò)展標(biāo)志(eflags)寄存器530-在所示實施例中,此32位寄存器被用來記錄許多指令的結(jié)果。

浮點控制字(fcw)寄存器535和浮點狀態(tài)字(fsw)寄存器540-在所示實施例中,這些寄存器被x87指令集擴(kuò)展用來在fcw的情況下設(shè)置取整模式、異常掩碼和標(biāo)志,而在fsw的情況下跟蹤異常。

標(biāo)量浮點棧寄存器文件(x87棧)545(其上混疊了mmx緊縮整數(shù)平坦寄存器文件1050)-在所示實施例中,x87棧是用來使用x87指令集擴(kuò)展對32/64/80位浮點數(shù)據(jù)執(zhí)行標(biāo)量浮點運算的8元素棧;而mmx寄存器被用來對64位緊縮整數(shù)數(shù)據(jù)執(zhí)行運算,以及為在mmx和xmm寄存器之間執(zhí)行的一些運算保存操作數(shù)。

段寄存器555-在所示實施例中,存在用來存儲用于分段地址生成的數(shù)據(jù)的6個16位寄存器。

rip寄存器565-在所示實施例中,此64位寄存器存儲指令指針。

本發(fā)明的替代實施例可使用更寬或更窄的寄存器。此外,本發(fā)明的替代實施例可使用更多的、更少的或不同的寄存器文件和寄存器。

示例性有序(in-order)處理器架構(gòu)——圖6a-6b

圖6a-b圖解示例性有序處理器架構(gòu)的框圖。這些示例性實施例是圍繞用寬矢量處理器(vpu)擴(kuò)充的有序cpu核的多個實例設(shè)計的。取決于應(yīng)用,核通過高帶寬互連網(wǎng)絡(luò)與某些固定功能邏輯、存儲器i/o接口以及其他必要的i/o邏輯通信。例如,此實施例作為獨立gpu的一實現(xiàn)通常包括pcie總線。

圖6a是根據(jù)本發(fā)明的多個實施例的單cpu核,連同到管芯上互連網(wǎng)絡(luò)602的連接及其本地2級(l2)高速緩存子集1104,的框圖。指令解碼器600支持具有擴(kuò)展的x86指令集。盡管在本發(fā)明的一個實施例中(為了簡化設(shè)計)標(biāo)量單元608和矢量單元610使用獨立的寄存器集合(分別使用標(biāo)量寄存器612和矢量寄存器614),并且在其間傳輸?shù)臄?shù)據(jù)被寫到存儲器并隨后從1級(l1)高速緩存606讀回,然而本發(fā)明的多個替代實施例可使用不同的方法(例如,使用單一寄存器集合或者包括允許數(shù)據(jù)在不被寫入并讀回的情況下在這兩個寄存器文件之間傳輸?shù)耐ㄐ怕窂?。

l1高速緩存606允許低等待時間訪問以將存儲器高速緩存到標(biāo)量和矢量單元中。與此矢量友好指令格式的load-op(加載運算)指令一起,這意味著l1高速緩存606能夠在某種程度上像擴(kuò)展寄存器文件一樣被對待。這顯著提高了許多算法的性能。

l2高速緩存604的本地子集是被劃分成單獨的本地子集(每個cpu核一個本地子集)的全局l2高速緩存的一部分。每個cpu具有對該l2高速緩存604的其自己的本地子集的直接訪問路徑。cpu核所讀取的數(shù)據(jù)被存儲在其l2高速緩存子集604中并能與其他cpu訪問其自己的本地l2高速緩存子集并行地被快速訪問。cpu核所寫入的數(shù)據(jù)被存儲在其自己的l2高速緩存子集604中并在必要時從其他子集清空。環(huán)形網(wǎng)絡(luò)確保了共享數(shù)據(jù)的一貫性。

圖6b是根據(jù)本發(fā)明的多個實施例的圖6a中的cpu核的一部分的剖視圖。圖6b包括l1數(shù)據(jù)高速緩存606a,l1高速緩存604的一部分,以及關(guān)于矢量單元610和矢量寄存器1114的更多細(xì)節(jié)。具體而言,矢量單元610是16-寬矢量處理單元(vpu)(參見16寬alu1128),該vpu執(zhí)行整數(shù)、單精度浮點數(shù)以及雙精度浮點數(shù)指令。該vpu支持通過拌和單元620拌和寄存器輸入、通過數(shù)值轉(zhuǎn)換單元622a-b進(jìn)行數(shù)值轉(zhuǎn)換,以及通過復(fù)制單元624進(jìn)行對存儲器輸入的復(fù)制。寫掩碼寄存器626允許斷言所得的矢量寫入。

可以各種方式攪和寄存器數(shù)據(jù),如,來支持矩陣乘法。可將來自存儲器的數(shù)據(jù)跨vpu通道被復(fù)制。這是圖形和非圖形并行數(shù)據(jù)處理中的通用操作,這顯著增加了高速緩存效率。

環(huán)形網(wǎng)絡(luò)是雙向的,以允許諸如cpu核、l2高速緩存和其它邏輯塊之類的代理在芯片內(nèi)彼此通信。每個環(huán)形數(shù)據(jù)路徑每個方向為1012位寬。

示例性無序架構(gòu)—圖7

圖7是圖解根據(jù)本發(fā)明的多個實施例的示例性無序架構(gòu)的框圖。具體而言,圖7示出公知的示例性無序架構(gòu),已經(jīng)被修改為結(jié)合了矢量友好指令格式以及其實行。在圖7中,箭頭指示兩個或更多個單元之間的耦合,且箭頭的方向指示這些單元之間的數(shù)據(jù)流的方向。圖7包括耦合到執(zhí)行引擎單元705和存儲器單元710的前端單元715;執(zhí)行引擎單元710還耦合到存儲器單元715。

前端單元705包括耦合到二級(l2)分支預(yù)測單元722的一級(l1)分支預(yù)測單元720。l1和l2分支預(yù)測單元720和722耦合到l1指令高速緩存單元724。l1指令高速緩存單元724耦合至指令翻譯后備緩沖器(tlb)726,該緩沖器726進(jìn)一步耦合至指令取回和預(yù)解碼單元728。指令取回和預(yù)解碼單元728耦合至指令隊列單元730,該單元730進(jìn)一步耦合至解碼單元732。解碼單元732包括復(fù)雜解碼器單元734和三個簡單解碼器單元736、738和740。解碼單元732包括微代碼rom單元742。在解碼級段中,解碼單元7可如上所述地操作。l1指令高速緩存單元724還耦合到存儲器單元715中的l2高速緩存單元748。指令tlb單元726還耦合到存儲器單元715中的二級tlb單元746。解碼單元732、微代碼rom單元742、和循環(huán)流檢測器(lsd)單元744各自耦合到執(zhí)行引擎單元710中的重命名/分配器單元756。

執(zhí)行引擎單元710包括耦合到退役單元774和統(tǒng)一調(diào)度器單元758的重命名/分配器單元756。退役單元774還耦合到執(zhí)行單元760且包括重排序器緩沖器單元778。統(tǒng)一調(diào)度器單元758還耦合到物理寄存器文件單元776,物理寄存器文件單元776耦合到執(zhí)行單元760。物理寄存器文件單元776包括矢量寄存器單元777a、寫掩碼寄存器單元777b、和標(biāo)量寄存器單元777c;這些寄存器單元可提供矢量寄存器510、矢量掩碼寄存器515、以及通用目的寄存器525;且物理寄存器文件單元776可包括未示出的附加寄存器文件(如,混疊在mmx緊縮整數(shù)平坦寄存器文件550上的標(biāo)量浮點棧寄存器文件545)。執(zhí)行單元1260包括三個混合標(biāo)量和矢量單元762、764和772;負(fù)載單元766;存儲地址單元768;存儲數(shù)據(jù)單元770。負(fù)載單元766、存儲地址單元768和存儲數(shù)據(jù)單元770各自進(jìn)一步耦合到存儲器單元715中的tlb單元752。

存儲器單元715包括耦合到數(shù)據(jù)tlb單元752的二級tlb單元746。數(shù)據(jù)tlb單元752耦合到l1數(shù)據(jù)高速緩存單元754。l1數(shù)據(jù)高速緩存單元754還耦合到l2高速緩存單元748。在一些實施例中,l2高速緩存單元748還耦合到存儲器單元715內(nèi)部和/或外部的l3和更高級高速緩存單元750。

以示例的方式,示例性無序體系結(jié)構(gòu)可如下實現(xiàn)過程流水線:1)指令取回和預(yù)解碼單元728執(zhí)行取回和長度解碼級;2)解碼單元732執(zhí)行解碼級;3)重命名/分配器單元756執(zhí)行分配級和重命名級;4)統(tǒng)一調(diào)度器758執(zhí)行調(diào)度級;5)物理寄存器組單元776、重排序緩沖器單元778、和存儲器單元715執(zhí)行寄存器讀取/存儲器讀??;執(zhí)行單元760執(zhí)行(perform)執(zhí)行(execute)/數(shù)據(jù)變換級;6)存儲器單元715和重排序緩沖器單元778執(zhí)行寫回/存儲器寫入級1960;7)退役單元774執(zhí)行rob讀取級;8)各單元可牽涉到異常處理級;以及9)退役單元1274和物理寄存器組單元776執(zhí)行提交級。

示例性計算機(jī)系統(tǒng)和處理器-圖8-10

圖8-10示出適于包括處理器101的示例性系統(tǒng)。本領(lǐng)域已知的對膝上型設(shè)備、臺式機(jī)、手持pc、個人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)中樞、交換機(jī)、嵌入式處理器、數(shù)字信號處理器(dsp)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計和配置也是合適的。一般來說,能夠含有本文中所公開的處理器和/或其它執(zhí)行邏輯的大量系統(tǒng)和電子設(shè)備一般都是合適的。

現(xiàn)在參考圖8,所示出的是根據(jù)本發(fā)明的一個實施例的系統(tǒng)800的框圖。系統(tǒng)800可包括耦合至圖形存儲器控制器中樞(gmch)810的一個或多個處理器815、820。附加處理器815的可選性質(zhì)用虛線表示在圖8中。

每一處理器810、815可以是處理器1700的某種版本。然而,應(yīng)該注意,集成圖形邏輯和集成存儲器控制單元未必存在于處理器810和815中。

圖8示出gmch820可耦合至存儲器840,該存儲器840可以是例如動態(tài)隨機(jī)存取存儲器(dram)。對于至少一個實施例,dram可以與非易失性緩存相關(guān)聯(lián)。

gmch820可以是芯片組或芯片組的一部分。gmch820可以與(各)處理器810、815進(jìn)行通信,并控制處理器810、815與存儲器840之間的交互。gmch820還可充當(dāng)(各)處理器810、815和系統(tǒng)800的其它元件之間的加速總線接口。對于至少一個實施例,gmch820經(jīng)由諸如前端總線(fsb)895之類的多站總線與(諸)處理器810、815進(jìn)行通信。

此外,gmch820耦合至顯示器845(諸如平板顯示器)。gmch820可包括集成圖形加速器。gmch820還耦合至輸入/輸出(i/o)控制器中樞(ich)850,該輸入/輸出(i/o)控制器中樞(ich)850可用于將各種外圍設(shè)備耦合至系統(tǒng)800。在圖8的實施例中作為示例示出了外部圖形設(shè)備860以及另一外圍設(shè)備870,該外部圖形設(shè)備860可以是耦合至ich850的分立圖形設(shè)備。

可選地,系統(tǒng)800中還可存在附加或不同的處理器。例如,附加處理器(多個)815可包括與處理器810相同的附加處理器(多個)、與處理器810異類或不對稱的附加處理器(多個)、加速器(諸如圖形加速器或數(shù)字信號處理(dsp)單元)、現(xiàn)場可編程門陣列或任何其它處理器。按照包括體系結(jié)構(gòu)、微體系結(jié)構(gòu)、熱、功耗特征等等優(yōu)點的度量譜,(多個)物理資源810、815之間存在各種差別。這些差別會有效顯示為處理元件810、815之間的不對稱性和異類性。對于至少一個實施例,各種處理元件810、815可駐留在同一管芯封裝中。

現(xiàn)在參照圖9,所示出的是根據(jù)本發(fā)明一實施例的第二系統(tǒng)900的框圖。如圖9所示,多處理器系統(tǒng)900是點對點互連系統(tǒng),且包括經(jīng)由點對點互連950耦合的第一處理器970和第二處理器980。如圖9所示,處理器970和980中的每個可以是處理器101的某一版本。

可選地,處理器970、980中的一個或多個可以是除處理器之外的元件,諸如加速器或現(xiàn)場可編程門陣列。

雖然僅以兩個處理器970、980來示出,但應(yīng)理解本發(fā)明的范圍不限于此。在其它實施例中,在給定處理器中可存在一個或多個附加處理元件。

處理器970還可包括集成存儲器控制器中樞(imc)972和點對點(p-p)接口976和978。類似地,第二處理器980包括imc982和p-p接口986和988。處理器970、980可以經(jīng)由使用點對點(ptp)接口電路978、988的點對點(ptp)接口950來交換數(shù)據(jù)。如圖9所示,imc972和982將處理器耦合到相應(yīng)的存儲器,即存儲器942和存儲器944,這些存儲器可以是本地附連到相應(yīng)處理器的主存儲器部分。

處理器970、980可各自經(jīng)由使用點對點接口電路976、994、986、998的各個p-p接口952、954與芯片組990交換數(shù)據(jù)。芯片組990還可經(jīng)由高性能圖形接口939與高性能圖形電路938交換數(shù)據(jù)。

共享高速緩存(未示出)可以被包括在任一處理器之內(nèi)或被包括兩個處理器外部但仍經(jīng)由p-p互連與這些處理器連接,從而如果將某處理器置于低功率模式時,可將任一處理器或兩個處理器的本地高速緩存信息存儲在該共享高速緩存中。芯片組990可經(jīng)由接口996耦合至第一總線916。在一個實施例中,第一總線916可以是外圍部件互連(pci)總線,或諸如pciexpress總線或其它第三代i/o互連總線之類的總線,但本發(fā)明的范圍并不受此限制。

如圖9所示,各種i/o設(shè)備99可連同總線橋918一起耦合到第一總線916,總線橋918將第一總線916耦合到第二總線920。在一個實施例中,第二總線920可以是低引腳數(shù)(lpc)總線。在一個實施例中,各設(shè)備可耦合到第二總線920,包括例如鍵盤和/或鼠標(biāo)922、通信設(shè)備926、以及可包括代碼930的諸如盤驅(qū)動器或其它海量存儲設(shè)備的數(shù)據(jù)存儲單元928。進(jìn)一步地,音頻i/o924可以耦合到第二總線920。注意,其它架構(gòu)是可能的。例如,代替圖9的點對點架構(gòu),系統(tǒng)可實現(xiàn)多點總線或者其他此類架構(gòu)。

現(xiàn)在參照圖10,所示出的是根據(jù)本發(fā)明實施例的第三系統(tǒng)1500的框圖。圖9和10中的類似元件使用類似附圖標(biāo)記,且在圖10中省略了圖9的某些方面以避免混淆圖10的其它方面。

圖10示出處理元件970、980可分別包括集成存儲器和i/o控制邏輯(“cl”)972和982。對于至少一個實施例,cl972、982可包括存儲器控制器中樞邏輯(imc)。此外,cl972、982還可包括i/o控制邏輯。圖10示出:不僅存儲器942、944耦合至cl972、982,i/o設(shè)備914也耦合至控制邏輯972、982。傳統(tǒng)i/o設(shè)備915被耦合至芯片組990。

現(xiàn)在參考圖11,所示為根據(jù)本發(fā)明的一實施例的soc1100的框圖。圖12中的類似元件具有相似的附圖標(biāo)記。另外,虛線框是更先進(jìn)的soc的可選特征。在圖11中,互連單元1102耦合至:應(yīng)用處理器1110,包括一組一個或多個核心1102a-n以及共享高速緩存單元1106;系統(tǒng)代理單元1110;總線控制器單元1111;集成存儲器控制器單元1114;一組或一個或多個媒體處理器1120,可包括集成圖形邏輯1108、用于提供靜態(tài)和/或視頻照相功能的圖像處理器1124、提供硬件音頻加速的音頻處理器1126、提供視頻編碼/解碼加速的視頻處理器1128、靜態(tài)隨機(jī)存取存儲器(sram)單元1130;直接存儲器存取(dma)單元1132;以及顯示單元1140,用于耦合至一個或多個外部顯示器。

本文公開的機(jī)制的各實施例可以被實現(xiàn)在硬件、軟件、固件或這些實現(xiàn)方法的組合中。本發(fā)明的實施例可實現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計算機(jī)程序或程序代碼,該可編程系統(tǒng)包括至少一個處理器、存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備以及至少一個輸出設(shè)備。

可將程序代碼應(yīng)用至輸入數(shù)據(jù)以執(zhí)行本文描述的功能并產(chǎn)生輸出信息。輸出信息可以按已知方式被應(yīng)用于一個或多個輸出設(shè)備。為了本申請的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號處理器(dsp)、微控制器、專用集成電路(asic)或微處理器之類的處理器的任何系統(tǒng)。

程序代碼可以用高級過程語言或面向?qū)ο蟮木幊陶Z言來實現(xiàn),以便與處理系統(tǒng)通信。程序代碼也可以在需要的情況下用匯編語言或機(jī)器語言來實現(xiàn)。事實上,本文中描述的機(jī)制不限于任何特定編程語言的范圍。在任一情形下,語言可以是編譯語言或解譯語言。

至少一個實施例的一個或多個方面可以由存儲在機(jī)器可讀介質(zhì)上的代表性指令來實現(xiàn),該指令表示處理器中的各種邏輯,該指令在被機(jī)器讀取時使得該機(jī)器制作用于執(zhí)行本文所述的技術(shù)的邏輯。被稱為“ip核”的這些表示可以被存儲在有形的機(jī)器可讀介質(zhì)上,并被提供給各種客戶或生產(chǎn)設(shè)施以加載到實際制造該邏輯或處理器的制造機(jī)器中。

此類機(jī)器可讀存儲介質(zhì)可包括但不限于通過機(jī)器或設(shè)備制造或形成的非易失性的粒子有形排列,包括存儲介質(zhì),諸如:硬盤;包括軟盤、光盤、壓縮盤只讀存儲器(cd-rom)、可重寫壓縮盤(cd-rw)以及磁光盤的任何其它類型的盤;諸如只讀存儲器(rom)之類的半導(dǎo)體器件;諸如動態(tài)隨機(jī)存取存儲器(dram)、靜態(tài)隨機(jī)存取存儲器(sram)之類的隨機(jī)存取存儲器(ram);可擦除可編程只讀存儲器(eprom);閃存;電可擦除可編程只讀存儲器(eeprom);磁卡或光卡;或適于存儲電子指令的任何其它類型的介質(zhì)。

因此,本發(fā)明的各實施例還包括非瞬態(tài)、有形機(jī)器可讀介質(zhì),該介質(zhì)包含矢量友好指令格式的指令或包含設(shè)計數(shù)據(jù),諸如硬件描述語言(hdl),它定義本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特性。這些實施例也被稱為程序產(chǎn)品。

在某些情況下,指令轉(zhuǎn)換器可用來將指令從源指令集轉(zhuǎn)換至目標(biāo)指令集。例如,指令轉(zhuǎn)換器可以變換(例如使用靜態(tài)二進(jìn)制變換、包括動態(tài)編譯的動態(tài)二進(jìn)制變換)、變形(morph)、仿真或以其它方式將指令轉(zhuǎn)換成將由核來處理的一個或多個其它指令。指令轉(zhuǎn)換器可以用軟件、硬件、固件、或其組合實現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、在處理器外、或者部分在處理器上部分在處理器外。

圖13是根據(jù)本發(fā)明的各實施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。在所示的實施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但作為替代該指令轉(zhuǎn)換器可以用軟件、固件、硬件或其各種組合來實現(xiàn)。

圖13示出可以使用x86編譯器1304來編譯高級語言1302的程序,以便生成可以由具有至少一個x86指令集核的處理器1316本地執(zhí)行的x86二進(jìn)制代碼1306(假設(shè)指令中的一些是以矢量友好指令格式編譯)。具有至少一個x86指令集核1816的處理器表示任何處理器,該處理器能夠通過兼容地執(zhí)行或以其它方式處理(1)英特爾x86指令集核的指令集的大部分或(2)旨在具有至少一個x86指令集核的英特爾處理器上運行的應(yīng)用或其它軟件的目標(biāo)代碼版本來執(zhí)行與具有至少一個x86指令集核的英特爾處理器基本相同的功能,以實現(xiàn)與具有至少一個x86指令集核的英特爾處理器基本相同的結(jié)果。x86編譯器1804表示用于生成x86二進(jìn)制代碼1306(例如,目標(biāo)代碼)的編譯器,該二進(jìn)制代碼1306可通過或不通過附加的鏈接處理在具有至少一個x86指令集核的處理器1316上執(zhí)行。類似地,圖90示出高級語言1302的程序可使用替換指令集編譯器1308來編譯以生成替換指令集二級制代碼1310,替換指令集二級制代碼1310可由不具有至少一個x86指令集核的處理器1314(諸如,具有執(zhí)行加利福尼亞州桑尼威爾的mips技術(shù)公司的mips指令集的處理器和/或執(zhí)行加利福尼亞州桑尼威爾的arm控股公司的arm指令集的處理器)來本地執(zhí)行。指令轉(zhuǎn)換器1312被用來將x86二進(jìn)制代碼1306轉(zhuǎn)換成可以由不具有x86指令集核的處理器1314原生執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不大可能與替代性指令集二進(jìn)制代碼1310相同,因為能夠這樣做的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換后的代碼將完成一般操作并由來自替代指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器1312表示:通過仿真、模擬或任何其它過程來允許不具有x86指令集處理器或核的處理器或其它電子設(shè)備得以執(zhí)行x86二進(jìn)制代碼1306的軟件、固件、硬件或其組合。

指令(多個)的某些操作可由硬件組件執(zhí)行,且可體現(xiàn)在機(jī)器可執(zhí)行指令中,該指令用于導(dǎo)致或至少致使電路或其它硬件組件以執(zhí)行該操作的指令編程。電路可包括通用或?qū)S锰幚砥?、或邏輯電路,這里僅給出幾個示例。這些操作還可任選地由硬件和軟件的組合執(zhí)行。執(zhí)行邏輯和/或處理器可包括響應(yīng)于從機(jī)器指令導(dǎo)出的機(jī)器指令或一個或多個控制信號以存儲指令指定的結(jié)果操作數(shù)的專用或特定電路或其它邏輯。例如,本文公開的指令的實施例可在圖13-16的一個或多個系統(tǒng)中執(zhí)行,且矢量友好指令格式的指令的實施例可存儲在將在系統(tǒng)中執(zhí)行的程序代碼中。另外這些附圖的處理元件可利用本文詳細(xì)描述的詳細(xì)描述的流水線和/或架構(gòu)(例如有序和無序架構(gòu))之一。例如,有序架構(gòu)的解碼單元可解碼指令、將經(jīng)解碼的指令傳送到矢量或標(biāo)量單元等。

上述描述旨在說明本發(fā)明的優(yōu)選實施例。根據(jù)上述討論,還應(yīng)當(dāng)顯而易見的是,在發(fā)展迅速且進(jìn)一步的進(jìn)展難以預(yù)見的此技術(shù)領(lǐng)域中,本領(lǐng)域技術(shù)人員可在安排和細(xì)節(jié)上對本發(fā)明進(jìn)行修改,而不背離落在所附權(quán)利要求及其等價方案的范圍內(nèi)的本發(fā)明的原理。例如,方法的一個或多個操作可組合或進(jìn)一步分開。

替換實施例

盡管已經(jīng)描述了將本地執(zhí)行矢量友好指令格式的實施例,但本發(fā)明的可選實施例可通過運行在執(zhí)行不同指令集的處理器(例如,執(zhí)行美國加利福亞州桑尼維爾的mips技術(shù)公司的mips指令集的處理器、執(zhí)行加利福亞州桑尼維爾的arm控股公司的arm指令集的處理器)上的仿真層來執(zhí)行矢量友好指令格式。同樣,盡管附圖中的流程圖示出本發(fā)明的某些實施例的特定操作順序,按應(yīng)理解該順序是示例性的(例如,可選實施例可按不同順序執(zhí)行操作、組合某些操作、使某些操作重疊等)。

在以上描述中,為解釋起見,闡明了眾多具體細(xì)節(jié)以提供對本發(fā)明的實施例的透徹理解。然而,將對本領(lǐng)域技術(shù)人員明顯的是,沒有這些具體細(xì)節(jié)中的一些也可實踐一個或多個其他實施例。提供所描述的具體實施例不是為了限制本發(fā)明而是為了說明本發(fā)明的實施例。本發(fā)明的范圍不是由所提供的具體示例確定,而是僅由所附權(quán)利要求確定。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
庐江县| 铜梁县| 福贡县| 固始县| 凌海市| 方山县| 龙海市| 长寿区| 新密市| 镇远县| 南部县| 丹东市| 淮安市| 安宁市| 措美县| 涡阳县| 阜宁县| 正定县| 徐州市| 阳江市| 梧州市| 松桃| 万源市| 登封市| 东兰县| 镇平县| 伊通| 扶风县| 九寨沟县| 托克托县| 衡山县| 陆丰市| 梨树县| 滨州市| 丰台区| 绥滨县| 九台市| 安徽省| 九江县| 北海市| 六枝特区|