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

用于執(zhí)行獨立磁盤冗余陣列(raid)操作的方法和裝置的制作方法

文檔序號:6595120閱讀:220來源:國知局
專利名稱:用于執(zhí)行獨立磁盤冗余陣列(raid)操作的方法和裝置的制作方法
技術(shù)領(lǐng)域
本公開涉及獨立磁盤冗余陣列(RAID),特別地,涉及6級RAID。
背景技術(shù)
出于可靠性、容量或性能的目的,獨立磁盤冗余陣列(RAID)將多個物理硬盤驅(qū)動器組合成邏輯驅(qū)動器。因此,操作系統(tǒng)看到的是單個邏輯驅(qū)動器而不是多個物理硬盤驅(qū)動器。如本領(lǐng)域技術(shù)人員所熟知的,有很多稱為RAID級的標(biāo)準(zhǔn)方法用來在RAID系統(tǒng)的這些物理硬盤驅(qū)動器上分布數(shù)據(jù)。例如,在0級RAID系統(tǒng)中,通過將數(shù)據(jù)分成多個塊并將每個塊寫入獨立的硬盤驅(qū)動器來在硬盤驅(qū)動器物理陣列上將數(shù)據(jù)條帶化。通過將負載分擔(dān)到多個硬盤驅(qū)動器中,從而提高了輸入/輸出(I/O)性能。盡管O級RAID提高了 I/O性能,但它不提供冗余度,因為只要一個硬盤驅(qū)動器發(fā)生故障,則所有數(shù)據(jù)都會丟失。5級RAID系統(tǒng)通過在至少三個硬盤驅(qū)動器上將數(shù)據(jù)和奇偶校驗信息條帶化來提供高級冗余度。在發(fā)生故障的情況下,將數(shù)據(jù)條帶化與分布式奇偶校驗相結(jié)合來提供恢復(fù)路徑。6級RAID (RAID-6)系統(tǒng)通過允許從兩個盤故障中恢復(fù),提供了比5級RAID系統(tǒng)更高級的冗余度。在6級RAID系統(tǒng)中,為數(shù)據(jù)生成稱為P校驗子(syndrome)和Q校驗子的兩個校驗子,并將它們存儲在RAID系統(tǒng)的硬盤驅(qū)動器上。P校驗子是通過計算條帶(stripe)(多個數(shù)據(jù)塊(多個條),P校驗子塊和Q校驗子塊)中數(shù)據(jù)的奇偶校驗信息而生成的。Q校驗子的生成需要伽羅瓦域(Galois Field)乘法,并且如果磁盤驅(qū)動器發(fā)生故障,則會很復(fù)雜。在伽羅瓦域(有限域)GFO8)中的計算通過約簡多項式x8+x4+x3+x+l來定義(也就是,11B(16進制表示法))。在磁盤恢復(fù)操作期間執(zhí)行的恢復(fù)數(shù)據(jù)和/或P和/或Q校驗子的重新生成方案, 需要伽羅瓦域乘法及逆操作。例如,在有η個數(shù)據(jù)磁盤DO、Dl、D2、......Dn-I的RAID陣列中(n ( 255),需要
兩個量,即奇偶校驗(P)和里德-所羅門碼⑴),來從兩個磁盤的丟失中恢復(fù)。P和Q的定義是P = Do+Di+D^. . . +Dn^1 Q = g° · Do+g1 · D^g2 · D2+. · · +g11—1 · Dlri其中g(shù) = {02}是伽羅瓦域(有限域)GFQ8)中的一個元素,‘ + ’和‘ ,是該域上的操作。RAID-6系統(tǒng)的計算瓶頸在于Q的計算成本。困難來自于這樣的事實傳統(tǒng)處理器 (中央處理單元(CPU))對于在伽羅瓦域(有限域)GW28)中的計算具有很差的性能。因此,典型地,利用基于表查找的算法來增強性能。使用表查找導(dǎo)致固有的緩慢串行處理。


通過參考附圖,隨著以下詳細描述的進行,要求保護的主題的實施例的特征將變得顯而易見,在附圖中,相同的數(shù)字指代相同的部分,其中圖1是說明RAID-6陣列的實施例的框圖,其中示出了多個條帶,每個條帶包括在硬盤陣列上條帶化的數(shù)據(jù)塊(條)、P和Q校驗子。圖2是包括用于在通用處理器中執(zhí)行AES加密和解密的指令的系統(tǒng)的框圖。圖3是圖1中示出的處理器的實施例的框圖;圖4是依據(jù)本發(fā)明的原理進行伽羅瓦域乘法的方法實施例的流程圖。圖5A-5C說明了壓縮混洗字節(jié)(PSHUFB)指令的使用;圖6A-6C是允許在多個16字節(jié)數(shù)據(jù)塊上并發(fā)地進行伽羅瓦域乘法的代碼示例。盡管將參照要求保護的主題的說明性實施例繼續(xù)進行以下詳細描述,但是其許多替代、修改和變型對本領(lǐng)域技術(shù)人員將是顯而易見的。因此,意圖廣泛地看待要求保護的主題,并且要求保護的主題僅如所附權(quán)利要求那樣進行限定。
具體實施例方式圖1是示出RAID-6陣列100的實施例的框圖,其中示出多個條帶,每個條帶包括在硬盤陣列150上條帶化的數(shù)據(jù)塊(條)與P和Q校驗子。在所示實施例中,RAID陣列100 具有五個硬盤150。通過利用塊級條帶化來向RAID-6陣列寫入數(shù)據(jù),其中P和Q校驗子以輪替(round robin)方式分布在成員硬盤上。諸如分割成塊的文件的連續(xù)數(shù)據(jù)可分布在條帶(例如,水平條帶0)上,其中塊之一存儲在三個數(shù)據(jù)盤150上的數(shù)據(jù)塊102、104、106中。 在一個實施例中,一個條帶中的每個塊中有512個字節(jié)。為水平條帶0中的數(shù)據(jù)塊102、104、106計算的P和Q校驗子存儲在條帶0中相應(yīng)的P塊130和Q塊132中。P和Q校驗子塊存儲在每個條帶的不同硬盤150上。P校驗子可通過執(zhí)行“異或”O(jiān)(OR)操作來生成。XOR是對兩個操作數(shù)的邏輯運算, 如果其中只有一個操作數(shù)具有邏輯值‘1’,則它產(chǎn)生邏輯值‘1’。例如,具有值‘11001010’ 的第一操作數(shù)和具有值‘10000011,的第二操作數(shù)的XOR提供具有值‘01001001,的結(jié)果。 如果存儲第一操作數(shù)的硬盤驅(qū)動器發(fā)生故障,則可通過對第二操作數(shù)和結(jié)果執(zhí)行XOR操作來恢復(fù)第一操作數(shù)。P校驗子是利用 (XOR)操作在條帶上計算的數(shù)據(jù)(D)的簡單奇偶校驗。在具有η個數(shù)據(jù)盤的系統(tǒng)中,P校驗子的生成由下式1表示P=D0 D1 D2...... D W(Si)Q校驗子的計算需要利用伽羅瓦域多項式(g)進行乘法(·)。以非常高的性能對 8位(1字節(jié))伽羅瓦域多項式執(zhí)行算術(shù)運算。多項式是只利用加法、減法、乘法和非負整數(shù)指數(shù)來組合有限數(shù)量的常量和變量的表達式。一個本原多項式是x8+x4+X3+x2+l。對多項式的伽羅瓦域(GF)操作又稱為GFQ8)算術(shù)。在具有η個數(shù)據(jù)盤的系統(tǒng)中,Q校驗子的生成由下式2表示Q=g0.D0 θ g^Di g2.D2...... g^^Dn.!(式 2)在條帶基礎(chǔ)上執(zhí)行按字節(jié)的伽羅瓦域操作,其中塊中的每個字節(jié)在計算上獨立于其它字節(jié)。按字節(jié)的伽羅瓦域操作可以適應(yīng)多達255 (28-1)個數(shù)據(jù)盤。
生成Q校驗子的性能可以通過將Q用其赫諾(Horner)形式表示來提高,如下式3 表不Q=((- · .Dn.,.. .)'g D2)'g Di) g D0 ( ζ 3)因此,用兩種操作來計算Q (1) XOR (十),以及(2)乘以 g = {02} ( ·)與如式2所示的計算相比,式3的計算不需要在GF256中的通用乘法。替換地是乘以g{02}。對于單字節(jié),可以通過將值左移一位來實現(xiàn)乘以g= {02}。然后對相乘的結(jié)果和基于結(jié)果中的最高有效位的狀態(tài)的另一個值進行條件異或O(OR)操作。為了一次并行地計算四個字節(jié),可以通過將該四個字節(jié)中存儲的值左移一位來執(zhí)行乘以102},然后進行四個條件XOR操作,每個字節(jié)一個操作,如下所示uint32_t ν, νν ;νν = (ν << l)&0xfefefefe ;νν“ = ((v&0x00000080) ? OxOOOOOOld:0) +((v&0x00008000) ? OxOOOOldOO:0)+((v&0x00800000) ? OxOOldOOOO:0)+((v&0x80000000) ? 0xld000000:0);“&0xfefefefe ”是用于避免不期望的進位的掩碼。然而,條件XOR操作的效率并不太高。通過并行地對8字節(jié)而非4字節(jié)進行操作,并且基于在8個字節(jié)中的每一個字節(jié)中的最高有效位(MSB)使用掩碼,則可能縮短計算時間。RAID-6算法的Q校驗子的計算采用與用于高級加密標(biāo)準(zhǔn)(AES)的GFQ8)的表示相同的表示,AES由美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)公布為聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS) 197。 AES是可以加密和解密信息的對稱分組密碼。在一個實施例中,根據(jù)本發(fā)明的原理,利用GFQ8)的AES指令被用來進行伽羅瓦域乘法操作,以計算RAID 6需要的Q校驗子。圖2是包括在通用處理器中進行AES加密和解密的指令的系統(tǒng)200的框圖。該系統(tǒng)200包括處理器201、存儲器控制中心(MCH)或(圖形存儲器控制中心(GMCH))202,以及輸入/輸出(1/0)控制中心(ICH) 204。MCH 202包括控制在處理器201和存儲器208之間的通信的存儲器控制器206。處理器201和MCH 202通過系統(tǒng)總線216進行通信。處理器201可以是諸如下列的多個處理器中的任意一種單核Intel Pentium IV 處理器、單核htel Celeron處理器、Intel XScale處理器,或諸如Intel Pentium D、Intel Xeon 處理器、或Intel Core Duo處理器的多核處理器,或任何其它類型的處理器。存儲器208可以是動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)、同步動態(tài)隨機存儲存儲器(SDRAM)、雙倍數(shù)據(jù)速率2 (DDR2) RAM或Rambus動態(tài)隨機存取存儲器 (RDRAM)或任何其他類型存儲器。ICH 204可以利用諸如直接媒體接口(DMI)的高速芯片到芯片互連214耦合至 MCH 202。DMI支持經(jīng)由兩個單向線道(lane)的2千兆位/秒的并發(fā)傳輸速率。ICH 204可包括存儲1/0控制器210,用來控制與諸如獨立磁盤冗余陣列
6(RAID) 100(圖1)的至少一個存儲設(shè)備212的通信。ICH 204可以利用串行存儲協(xié)議通過存儲協(xié)議互連218與存儲設(shè)備212通信。串行存儲協(xié)議的例子是,串行連接小型計算機系統(tǒng)接口(SAQ或串行高級技術(shù)附件(SATA)。處理器201包括進行AES加密和解密操作的AES功能203。AES功能203可被用于對存儲在存儲器208和/或存儲在存儲設(shè)備212中的信息進行加密或解密。加密(密碼)利用秘密密鑰(密鑰)來進行一系列的變換,以將被稱為“明文”的可理解的數(shù)據(jù)變換為被稱為“密文”的不可理解的形式。密碼中的變換包括(1)用異或 (XOR)操作向狀態(tài)(state) ( 二維字節(jié)陣列)添加輪密鑰(round key)(得自于密鑰的值); (2)用非線性字節(jié)替換表(S盒(S-box))對狀態(tài)進行處理;(3)將狀態(tài)的最后三行循環(huán)移位不同的偏移量;以及(4)取得狀態(tài)所有的列,將它們的數(shù)據(jù)(彼此無關(guān))進行混合以生成新的列,這可被稱為列混合變換。由隨后描述的單個AES指令進行上述的四個變換。在列混合變換中,將狀態(tài)的所有列中的數(shù)據(jù)(彼此無關(guān))進行混合,以生成新的列。列混合是對1 位(16字節(jié))的輸入的虹4的矩陣表示的列進行1 位一128位的變換操作。該變換將每個列都視為AES伽羅瓦域256上的有系數(shù)的三次多項式。將狀態(tài)的虹4 矩陣表示的狀態(tài)的每一列乘以多項式a(x) = {03}13+{01^2+{01^+{02},并約簡模14+1。 該1 位到1 位的列混合變換是16字節(jié)到16字節(jié)的變換。例如,該16字節(jié)(狀態(tài))可以被表示為[P,O,n, m, i,k,j,i,h,g,f,e, d,c, b,a],其中a是最低有效字節(jié),該狀態(tài)有四個列,每個列是一個32位的雙字G字節(jié))。列混合變換是基于GF (28)算術(shù)(模x8+x4+x3+x+l)的矩陣乘法。因此,如下文所討論的,伽羅瓦域乘法功能250可以使用該列混合變換來計算6級RAID系統(tǒng)的Q校驗子。為了使用該列混合變換,列混合變換從AES指令中被隔離出。對狀態(tài)的四個列分別地進行列混合變換。這四個列是(1) [ρ,ο, n, m](2)[i,k,j,i](3) [h,g, f, e](4) [d,c,b,a]。對[p,o,n,m,i,k,j,i,h,g,f,e,d,c,b,a]進行列混合變換的結(jié)果是[p,,o,, n,,m,,i,,k,,j,,i,,h,,g,,f,,e,,d,,C,,b,,a,],如下表 1 所示。對列(1)的變換a,= ({02} · a)+ ({03} ‘ b)+c+d ;b,= a+({02} · b) + ({03} · c)+d ;c,= a+b+({02} · c) + ({03} · d);d,= ({03} · a) +b+c+({02} · d)對列⑵的變換e,= ({02} · e) + ({03} · f) +g+h ;f,= e+({02} · f) + ({03} · g) +h ;g,= e+f+({02} · g) + ({03} · h);h,= ({03} · e)+f+g+({02} · h)對列⑶的變換
i,= ({02} · i) + ({03} · j)+k+l ;j,= i+({02} · j) + ({03} · k)+l ;k,= i+j+({02} · k) + ({03} · 1);1,= ({03} · i)+j+k+({02} · 1)對列(41的變換m,= ({02} .m) + ({03} ·η)+ο+ρ;η,= m+({02} · η)+ ({03} · o)+p ;ο,= m+n+({02} · ο)+ ({03} · ρ);ρ,= ({03} · m)+n+o+({02} · ρ)表 1如上面的表1所示,對所述四列中的每一個進行相同的操作。因此,假設(shè)操作對每一個雙字(列)是類似的,可以用簡寫形式來描述對四個列中的一列(例如,列4,最低有效雙字)進行的列混合變換。對于列4,雙字(dword) = [d,c, b,a],簡寫的列混合變換示出如下d, c, b, a ^ 3a+b+c+2d, a+b+2c+3d, a+2b+3c+d, 2a+3b+c+d圖3是圖2所示的處理器201的實施例的框圖。處理器201包括取指和解碼單元 306,用于對從1級(Li)指令高速緩存302接收的處理器指令進行解碼。用來執(zhí)行處理器指令的數(shù)據(jù)可以存儲在寄存器文件308中。在一個實施例中,寄存器文件308包括多個由 AES指令使用的1 位寄存器,用于存儲由AES指令使用的數(shù)據(jù)。在一個實施例中,寄存器文件308是類似于htel Pentium MMX處理器中提供的 128位MMX寄存器的1 位寄存器組,所述htel Pentium MMX處理器具有流(單指令多數(shù)據(jù)(SIMD))擴展(SSE)指令集。在SIMD處理器中,以1 位塊來處理數(shù)據(jù),其中一次加載一個128位塊。取指和解碼單元306從Ll指令高速緩存302中取得宏指令,對該宏指令進行解碼并將其分解成稱作微操作(μop)的簡單操作,這些簡單操作可以存儲在微代碼只讀存儲器(R0M)314中。被流水線化的執(zhí)行單元310調(diào)度并執(zhí)行所述微操作。在示出的該實施例中,執(zhí)行單元310中的AES功能203包括用于AES指令的微操作。所述AES指令被完全流水線化,從而,在有數(shù)據(jù)準(zhǔn)備好要被處理時,處理器(CPU)可以將指令分派在每一周期中。引退單元312將AES指令的執(zhí)行結(jié)果寫入到寄存器或存儲器中。AES指令使用的輪密鑰316 可存儲在Ll數(shù)據(jù)高速緩存304中,并加載到執(zhí)行單元310,以供微操作用來執(zhí)行任意一個 AES指令。在取指和解碼單元306解碼AES指令后,執(zhí)行單元310對AES指令的執(zhí)行包括進行與AES指令相關(guān)聯(lián)的微操作,所述微操作可以存儲在微代碼ROM 314中。AES指令集包括獨立的AES指令,用于進行加密輪、解密輪、加密最后輪和解密最后輪。在一個實施例中,每個AES指令都有唯一的操作碼(opcode)。所述AES指令集包括如下表2所示的四個AES指令(加密、解密、加密最后輪、解密最后輪)。AES指令集中的AES指令包括進行加密和解密輪操作的單輪操作,其用于除最后一輪以外的所有輪。AESENC xmmsrcdst xmm
輸入數(shù)據(jù)(=目標(biāo)),輪密鑰輸出通過使用輪密鑰的AES輪進行變換后的數(shù)據(jù)變換序列Tmp =行移位(數(shù)據(jù))(Shift Rows (data));Tmp =字節(jié)替換(Tmp) (Substitute Bytes(Tmp));Tmp =列混合(Tmp) (Mix Columns(Tmp));輸出=添加輪密鑰(Tmp,輪密鑰)(AddRound Key (Tmp, round key))AESENCLAST xmmsrcdst xmm輸入數(shù)據(jù)(=目標(biāo)),輪密鑰輸出通過使用輪密鑰的AES最后輪進行變換后的數(shù)據(jù)變換序列Tmp =行移位(數(shù)據(jù))(Shift Rows (data));Tmp =字節(jié)替換(Tmp) (Substitute Bytes(Tmp));輸出=添加輪密鑰(Tmp,輪密鑰)(AddRound Key (Tmp, round key))AESDEC xmmsrcdst xmm輸入數(shù)據(jù)(=目標(biāo)),輪密鑰輸出通過使用輪密鑰的AES輪進行變換后的數(shù)據(jù)變換序列Tmp =逆行移位(數(shù)據(jù))(Inverse ShiftRows (data));Tmp =逆字節(jié)替換(Tmp) (InverseSubstitute Bytes(Tmp));Tmp =逆列混合(Tmp) (Inverse MixColumns(Tmp));輸出=添加輪密鑰(Tmp,輪密鑰)(Add Round Key (Tmp, round key))AESDECLAST xmmsrcdst xmm輸入數(shù)據(jù)(=目標(biāo)),輪密鑰輸出通過使用輪密鑰的AES最后輪進行變換后的數(shù)據(jù)變換序列
Tmp =逆行移位(數(shù)據(jù))(Inverse ShiftRows (data));Tmp =逆字節(jié)替換(Tmp) (InverseSubstitute Bytes(Tmp));輸出=添加輪密鑰(Tmp,輪密鑰)(Add Round Key(Tmp, round key))表 2例如,表2中的AESENC單輪指令中,輸入數(shù)據(jù)存儲在1 位寄存器(xmmsrcdst) 中,并且輪密鑰存儲在另一 1 位寄存器(xmm)中。該指令對存儲于1 位xmmsrcdst寄存器中的輸入數(shù)據(jù)(源)進行一系列的針對一個AES加密輪的四個變換,并用該輪操作的執(zhí)行結(jié)果重寫所述1 位xmmsrcdst寄存器中存儲的輸入數(shù)據(jù)。因此,xmmsrcdst首先存儲輸入數(shù)據(jù),之后存儲所述AES輪操作的結(jié)果。如表2所示,采用FIPS公布197的術(shù)語描述了相應(yīng)的128位一128位變換序列。 加密輪的變換序列包括(I)AddRoundKey變換用異或O(OR)操作向狀態(tài)(二維1 位字節(jié)陣列)添加輪密鑰(round key)(得自于密鑰的值)。AddRoundKey是(1 位,1 位)一1 位的變換, 其定義是它的兩個變量的按位異或(XCM)。在AES流中,所述變量是所述狀態(tài)和所述輪密鑰。(2) SubBytes變換用非線性字節(jié)替換表(S盒)對所述狀態(tài)進行處理。SubBytes 是16字節(jié)到16字節(jié)(按字節(jié))的變換,該變換被定義為將S盒變換應(yīng)用于輸入的16字節(jié)中的每一個字節(jié)。所述S盒變換可通過查找表來表示如下該查找表的輸入是字節(jié)B [7 0], 其中χ和y表示低和高半字節(jié)χ[3:0] = B[7:4],y [3:0] = B[3:0]。在該表中將輸出字節(jié)編碼為16進制(H)表示的兩數(shù)位的數(shù)。例如,輸入85H產(chǎn)生97H。(3)ShiftRows變換將所述狀態(tài)的最后三行以不同的偏移量循環(huán)移位。 ShiftRows 是以下按字節(jié)的置換(15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0) — (11,6, 1,12,7,2,13,8,3,14,9,4,15,10,5,0)。該變換被視為對狀態(tài)的4x4矩陣表示的操作。所述4x4矩陣的第一行不變。第二行向左旋轉(zhuǎn)一個字節(jié)位置。第三行向左旋轉(zhuǎn)2個字節(jié)位置。 第四行向左旋轉(zhuǎn)3個字節(jié)位置。(4)列混合變換將所述狀態(tài)中所有的列中的數(shù)據(jù)進行混合(彼此獨立),以生成新的列。列混合是對所述1 位(16字節(jié))輸入的4x4矩陣表示的列進行操作的1 位 —1 位變換。所述變換將每一列視為在AES伽羅瓦域256中有系數(shù)的三次多項式。狀態(tài)的4x4矩陣表示中的每一列乘以多項式a(x) = {03}χ3+{01}χ2+{01}χ+{02},并且約簡模 x4+l。如表2中所示,AES最后加密輪指令A(yù)ESENCLAST不執(zhí)行列混合變換。解密(逆密碼)是用密鑰進行一系列變換,以將“密文”塊變換為相同大小的“明文”塊。在逆密碼中的變換是密碼中的逆變換。如上述表2所示,可由單個的AES解密輪指令A(yù)ESDEC執(zhí)行上述解密輪的變換序列,而由單個的AES最后解密輪指令A(yù)ESDECCLAST來執(zhí)行最后解密輪的變換序列。包括AES加密和解密指令的指令組合可以用來獲得作為隔離出的變換的AES算法的子步驟(變換)。所述隔離出的變換包括加密AES指令(AESENC,AESENCLAST)使用的行移位、字節(jié)替換和列混合變換。本發(fā)明的一個實施例采用通過使用AES加密和解密指令組成的指令組合獲得的隔離出的AES列混合變換,來計算6級RAID的Q校驗子。圖4是依據(jù)本發(fā)明的原理進行伽羅瓦域(GF)乘法的方法實施例的流程圖。AESENC指令和AESDEC指令都采用列混合變換的微操作。如表2所示,AESDEC指令包括AESENC指令變換的逆變換。因此,可以通過執(zhí)行以下指令序列來隔離出列混合變換的微操作(1)輪密鑰設(shè)置為0的AESENC指令,接著是( 輪密鑰設(shè)置為0的AESDECLAST 指令。參考每一個AES指令的變換序列,該指令序列隔離出列混合變換,這是因為 AddRoimdKey微操作執(zhí)行無操作(NOP),并且其余微操作(行移位、字節(jié)替換)通過進行逆微操作(逆行移位、逆字節(jié)替換)進行兌換。因此,AES指令(AESENC,AESDECLAST)的序列的執(zhí)行結(jié)果是隔離出(狀態(tài))的列混合變換,如下所示Y =逆列混合(逆字節(jié)替換(逆行移位(字節(jié)替換(行移位(狀態(tài)))))按照本發(fā)明的一個實施例,被隔離出的列混合變換用以在AES伽羅瓦域用{02}乘以 16 字節(jié)。將描述 16 字節(jié)(ρ,ο,n, m,1,k,j,i,h,g,f,e,d,c,b,a)中的 4(d,c,b,a) 乘以{02}的實施例。在這個實施例中,用約簡多項式Oxllb定義所述有限域。在其它實施例中,域表示的選擇是可以配置的。參考圖4,在框400,輸入數(shù)據(jù)(d,c, b,a)的奇數(shù)字節(jié)位置被設(shè)置為0,即,b = d =0,從而得到(0,c,0,a)。在一個實施例中,用壓縮混洗字節(jié)(PSHUFB)指令將奇數(shù)字節(jié)位置設(shè)置為0。圖5A-5C說明了壓縮混洗字節(jié)(PSHUFB)指令的使用。所述PSHUFB指令根據(jù)存儲于第二操作數(shù)的混洗控制掩碼對第一操作數(shù)中的字節(jié)進行混洗(進行字節(jié)的原地混洗)。 如果設(shè)置了混洗控制掩碼中的字節(jié)的最高有效位,則在第一操作數(shù)中對應(yīng)的字節(jié)中寫入0。所述PSHUFB指令有可被稱為兩個字節(jié)寄存器A和B的兩個1 位輸入。所述 PSHUFB指令采用兩個128位的字節(jié)寄存器A = [a15a14a13. . . aj和B = [b15b14b13. . . bj,用 [ab15ab14ab13. · · ab0]替代寄存器Α。如果h的最高位被設(shè)置為1,則該結(jié)果的第i個條目是 0。參考圖5A,框500說明了 1 位第一寄存器較低的4字節(jié)的初始內(nèi)容,框502說明了在用混洗控制掩碼'ff02ff00h'執(zhí)行了 PSHUFB指令后第一寄存器較低的4字節(jié)的內(nèi)容。如圖所示,因為MSB被設(shè)置為’ 1’,所以兩個奇數(shù)字節(jié)(字節(jié)1和字節(jié)幻被設(shè)置為’ 0’。再返回圖4,在將奇數(shù)字節(jié)設(shè)置為’ 0’后,通過采用第一寄存器的內(nèi)容執(zhí)行指令序列(AESDECLAST,接著是AESENC),來進行列混合變換。該指令序列執(zhí)行以下變換d, c, b, a ^ 3a+b+c+2d, a+b+2c+3d, a+2b+3c+d, 2a+3b+c+d當(dāng)d和b都是0時,對'd = 0,c,b = 0,a'的指令序列的結(jié)果是3a+c, a+2c, a+3c, 2a+c接下來,用壓縮混洗字節(jié)(PSHUFB)指令將上述結(jié)果(3a+c,a+2c,a+3c,2a+c)中的奇數(shù)字節(jié)設(shè)置為0,將第二 PSHUFB指令的結(jié)果(0,a+2c,0,2a+c)存儲在第一寄存器中。
在框404,輸入數(shù)據(jù)(d,c, b,a)的偶數(shù)字節(jié)位置被設(shè)置為0,SP,a = c = 0,從而得到(d,0,b,0)。在一個實施例中,用壓縮混洗字節(jié)(PSHUFB)指令將偶數(shù)字節(jié)位置設(shè)置為 O0參考圖5B,502說明了第一寄存器的初始內(nèi)容,504說明了在用混洗控制掩碼'03ff01ffh'執(zhí)行PSHUFB指令后第一寄存器的內(nèi)容。如圖所示,所有的偶數(shù)字節(jié)位置都被設(shè)置為’ 0’。再返回到圖4,在將偶數(shù)字節(jié)位置設(shè)置為’ 0’后,通過采用第一寄存器的內(nèi)容執(zhí)行指令序列(AESDECLAST,接著是AESENC),來進行列混合變換。該指令序列執(zhí)行以下變換d, c, b, a ^ 3a+b+c+2d, a+b+2c+3d, a+2b+3c+d, 2a+3b+c+d當(dāng)(和£1都是0時,對'd,c = 0,b,a = 0'的指令序列的結(jié)果是b+2d,b+3d, 2b+d,3b+d接下來,用壓縮混洗字節(jié)(PSHUFB)指令將上述結(jié)果(b+2d,b+3d,2b+d, 3b+d)中的偶數(shù)字節(jié)設(shè)置為0,將第四PSHUFB指令的結(jié)果(b+2d,0,2b+d,0)存儲在第二寄存器中。在框408,將存儲于第一寄存器的結(jié)果(框402)和存儲于第二寄存器的結(jié)果(框 406)進行M)R,以提供兩個列混合變換的結(jié)果(b+2d,a+2C,2b+dJa+C)。在一個實施例中, 使用PXOR指令對結(jié)果進行M)R。所述PXOR指令對兩個寄存器中的內(nèi)容進行XOR操作,并將結(jié)果存儲在其中之一的寄存器中。在框410,根據(jù)掩碼用壓縮混洗字節(jié)(PSHUFB)指令對輸入數(shù)據(jù)(d,c,b,a)中的字節(jié)進行混洗。參考圖5C,506說明了第三寄存器的初始內(nèi)容,508說明了在用混洗控制掩碼'000302h'執(zhí)行PSHUFB指令后第三寄存器的內(nèi)容。如圖所示,輸入數(shù)據(jù)(d,c,b,a)的字節(jié)被混洗,以提供結(jié)果(b,a, d,c) 510,該結(jié)果被存儲在第三寄存器中。繼續(xù)圖4,在框412,對寄存器3的內(nèi)容(b+2d,b+3d,2b+d,3b+d)和寄存器2的內(nèi)容(b,a,d,c)進行XOR操作,以提供乘法操作的結(jié)果,即,(2d,2c,2b,2a)。已經(jīng)描述了執(zhí)行在4字節(jié)數(shù)據(jù)塊上乘以g= {02}的實施例。下面的表4說明了對一個16字節(jié)數(shù)據(jù)塊進行操作的功能正確未優(yōu)化的實施例的代碼示例(匯編程序)。
data— do 07b5b54657374566563746f725d53475dh; zero_ do OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOh; maskl do 0ff0eff0cffDaff08ffD6ff04fR)2ff00h mask2 do 00fH0dff0bff09ff07ff05ff03ff01ffh mask3 do 00d0c0f0e09080b0a0504070601000302h movdqu xmm4, OWORD PTR data_ movdqu xmm 1,xmm3PSHUFB xmml, maskl
AESDECLAST xmml, zero— ;輪密鑰=0 的 AES 指令 AESENC xmml, zero_
PSHUFB xmml, maskl;再次通過maskl進行傳遞
movdqu xmml, xmm4
PSHUFB xmm2, mask2
AESDECLAST xmm2, zero_
AESENC xmm2, zero—
PSHUFB xmm2, mask2
PXOR xmm2, xmml; xmm2 = xmml xor xmm2
PSHUFB xmm3, mask3 ;用 mask3 混洗 xmmO (原始數(shù)據(jù)) PXOR xmm3, xmm2; xmmO = xmmO xor xmm2
;xmm3保持結(jié)果表 4如表4中的代碼示例所示,采用11個指令(5個PSHUFB指令,2個PXOR指令,2個 AESENC 指令,2 個 AESDECLAST 指令)、3 個掩碼(maskl,mas2 (2, mask3)和三個 xmm 寄存器 (xmml, xmm2, xmm3)對_data的16字節(jié)進行伽羅瓦域乘法。例如,對輸入數(shù)據(jù)‘e59827Ief 11141b8ae52b4e0305dbfd4‘進行伽羅瓦域乘法的結(jié)果是輸出數(shù)據(jù)‘dl2b4e3cf922826b47a473db60ba65b3'。在上述代碼示例中,如果順序處理上述指令,因為AES指令的時延導(dǎo)致吞吐量很慢。例如,在一個實施例中,PSHUFB和PXOR指令的時延是1個周期,AES指令的時延是6個周期。因此,如果順序處理AES指令對,會有12個周期的時延。在其它實施例中,可以通過并發(fā)地處理輸入數(shù)據(jù)的多個16字節(jié)來縮短整個時延,其中指令被交錯,以使得AES指令對中的第二 AES指令在該AES指令對中的第一 AES指令被調(diào)度后6個周期被調(diào)度??梢愿淖冊诒?中示出的代碼示例的指令順序,如圖6A-6C中所示示例所說明的。這種指令順序允許并發(fā)地處理數(shù)個16字節(jié)數(shù)據(jù)塊,因為AES指令的時延超過了 PXOR和PSHUFB指令的時延。圖6A-6C是允許對多個16字節(jié)數(shù)據(jù)塊并發(fā)地進行伽羅瓦域乘法的代碼示例。所述代碼僅僅是可能使用的代碼的一個示例。還可以有很多其它變型,例如,代碼可以被優(yōu)化以與特定編譯器一起使用。圖6A-6C示出了對NBL0CKS數(shù)據(jù)塊(每個塊有16字節(jié)(16B)) 的數(shù)據(jù)緩沖器執(zhí)行乘以10 的函數(shù)(內(nèi)聯(lián)匯編程序)。并行處理4個16字節(jié)塊,并重復(fù)這個操作(并行地處理4個16字節(jié)塊)G個塊并行處理)4次,從而使用256字節(jié)數(shù)據(jù)緩沖器。用12個xmm寄存器(xmmO-xmmll)存儲輸入數(shù)據(jù)和對輸入數(shù)據(jù)的操作結(jié)果。3個掩碼寄存器(maskl,mask2,mask3)存儲與表4中示出的代碼示例相同的掩碼。參考圖6A,框 600中的指令將存儲于xmm寄存器(xmml,xmm4, xmm7, xmmlO)中的輸入數(shù)據(jù)的奇數(shù)字節(jié)位置設(shè)置為O。在示出的示例中,使用壓縮混洗字節(jié)(VPSHUFB)指令將奇數(shù)字節(jié)位置設(shè)置為O。 VPSHUFB指令執(zhí)行移動,之后是PSHUFB,例如對于指令“vpshufb xmml, xmmO, maskl", xmmO的內(nèi)容被移動到xmml,然后根據(jù)存儲于xmmO的控制掩碼對xmml的內(nèi)容進行混洗。接下來,框602中的AESDECLAST指令對存儲在xmml, xmm4, xmm7和xmmlO寄存器的奇數(shù)字節(jié)位置被設(shè)置為O的輸入數(shù)據(jù)進行操作。框604中的指令把輸入數(shù)據(jù)移至xmm寄存器(Xmm2,Xmi^)并將奇數(shù)字節(jié)位置設(shè)置為0,并如結(jié)合圖5C所討論那樣將xmm寄存器(xmmO,xmm3)中的輸入字節(jié)重新混洗。參考圖6B,框606中的AESENC指令隔離出MixColumns變換,并將結(jié)果存儲到xmm 寄存器(xmml, xmm3, xmm7, xmmlO)中???08中的指令將輸入數(shù)據(jù)移至xmm寄存器(xmm8,xmml 1),并將偶數(shù)字節(jié)位置設(shè)置為0,并如結(jié)合圖5C所討論那樣對xmm寄存器(Xmm6,Xmm9)中的輸入字節(jié)進行重新混洗???10中的指令對存儲于xmm寄存器(xmm2,xmm5, xmm8, xmmll)中的偶數(shù)字節(jié)被設(shè)置為O的輸入數(shù)據(jù)執(zhí)行AESDECLAST指令???12中的指令,將存儲在xmm寄存器(xmml,xmm4, xmm7, xmmlO)中的數(shù)據(jù)的奇
數(shù)位置字節(jié)歸零???14中的指令對存儲在xmm寄存器(xmm2,xmm5, xmm8, xmmll)中的數(shù)據(jù)執(zhí)行 AESENC指令,并在存儲于xmm寄存器(xmm2,xmm5, xmm8, xmmll)的結(jié)果中將偶數(shù)字節(jié)位置設(shè)置為O???16中的指令對xmm寄存器(xmmO-xmmll)中的內(nèi)容進行XOR操作,以提供xmm 寄存器(xmmO,xmm3, xmm6, xmm9)中的乘法操作的結(jié)果???18中的指令將存儲于xmm寄存器(xmmO,xmm3, xmm6, xmm9)的乘法操作的結(jié)
果移動至rbx寄存器???20中的指令計算指向下一個要被進行乘法的16字節(jié)塊的位置的指針。在另一個實施例中,以GF08)的另一表示進行RAID-6計算,通過將輸入轉(zhuǎn)換成其中可以應(yīng)用AES指令的“優(yōu)選”表示(具有約簡多項式11B),有可能使用所描述的技術(shù)。到原始表示的最終轉(zhuǎn)換是需要的(但是該最終轉(zhuǎn)換可以暫緩到真的需要恢復(fù)時進行)。該轉(zhuǎn)換可采用預(yù)計算的表來實現(xiàn)。本發(fā)明的替代實施例還包括機器可訪問介質(zhì),其包含用于執(zhí)行本發(fā)明的操作的指令。此類實施例也可稱為程序產(chǎn)品。此類機器可訪問介質(zhì)可包括但不限于諸如軟盤、硬盤、 光盤只讀存儲器(CD-ROMQ、只讀存儲器(ROM)、隨機存取存儲器(RAM)的存儲介質(zhì),以及可由機器或設(shè)備制造或形成的粒子其他有形排列。指令也可用在分布式環(huán)境中,并可在本地存儲和/或遠程存儲,以供單處理器或多處理器的機器訪問。盡管已經(jīng)通過參考本發(fā)明的實施例對這些實施例進行了具體示出和描述,但本領(lǐng)域技術(shù)人員將會理解,可以對這些實施例在形式上和細節(jié)上進行各種改變,而不背離由所述權(quán)利要求涵蓋的本發(fā)明的實施例的范圍。
1權(quán)利要求
1.一種方法,包括對字節(jié)塊中多個字節(jié)中的每一個字節(jié)并行地執(zhí)行伽羅瓦域乘法操作,包括對所有偶數(shù)位置字節(jié)被設(shè)置為ο的所述字節(jié)塊執(zhí)行高級加密標(biāo)準(zhǔn)(AEQ列混合變換, 以提供第一結(jié)果;對所有奇數(shù)位置字節(jié)被設(shè)置為0的所述字節(jié)塊執(zhí)行所述AES列混合變換,以提供第二結(jié)果;以及將所述第一結(jié)果和所述第二結(jié)果進行組合,以提供所述伽羅瓦域乘法操作的結(jié)果。
2.如權(quán)利要求1所述的方法,其中所述伽羅瓦域乘法操作中的有限域由約簡多項式 OxllB定義。
3.如權(quán)利要求1所述的方法,其中執(zhí)行所述AES列混合變換包括執(zhí)行AESDECLAST輪指令及跟隨其后的AESENC輪指令。
4.如權(quán)利要求3所述的方法,其中由所述AESDECLAST輪指令執(zhí)行的一系列變換包括逆行移位變換和逆字節(jié)替換變換,由所述AESENC輪指令執(zhí)行的一系列變換包括行移位變換、 字節(jié)替換變換和列混合變換。
5.如權(quán)利要求1所述的方法,其中組合還包括對所述第一結(jié)果和所述第二結(jié)果執(zhí)行異或O(OR)操作,以提供第三結(jié)果;對存儲于所述字節(jié)塊的數(shù)據(jù)進行混洗,來將所述字節(jié)塊中每個四字節(jié)塊的低位的兩個字節(jié)和高位的兩個字節(jié)進行交換,以提供第四結(jié)果;以及對所述第三結(jié)果和所述第四結(jié)果進行XOR操作。
6.如權(quán)利要求1所述的方法,其中所述AES列混合變換將四字節(jié)塊序列d,c,b,a變換成另一個四字節(jié)塊序列 3a+b+c+2d,a+b+2c+3d, a+2b+3c+d,2a+3b+c+d。
7.如權(quán)利要求1所述的方法,其中所述組合用于計算6級RAID系統(tǒng)的Q校驗子。
8.一種裝置,包括存儲器,用于存儲多個指令,所述多個指令用于對字節(jié)塊中多個字節(jié)中的每一個字節(jié)并行地執(zhí)行伽羅瓦域乘法操作;以及處理器,其包括執(zhí)行單元,所述多個指令以一順序存儲于所述存儲器中,以使得當(dāng)所述執(zhí)行單元執(zhí)行所述多個指令時,所述執(zhí)行單元用于對所有偶數(shù)位置字節(jié)被設(shè)置為0的所述字節(jié)塊執(zhí)行高級加密標(biāo)準(zhǔn)(AEQ列混合變換, 以提供第一結(jié)果;對所有奇數(shù)位置字節(jié)被設(shè)置為0的所述字節(jié)塊執(zhí)行所述AES列混合變換,以提供第二結(jié)果;以及將所述第一結(jié)果和所述第二結(jié)果進行組合,以提供所述伽羅瓦域乘法操作的結(jié)果。
9.如權(quán)利要求8所述的裝置,其中所述伽羅瓦域乘法操作中的有限域由約簡多項式 OxllB定義。
10.如權(quán)利要求8所述的裝置,其中所述執(zhí)行單元用于通過執(zhí)行AESDECLAST輪指令及跟隨其后的AESENC輪指令來執(zhí)行所述AES列混合變換。
11.如權(quán)利要求10所述的裝置,其中由所述AESDECLAST輪指令執(zhí)行的一系列變換包括逆行移位變換和逆字節(jié)替換變換,由所述AESENC輪指令執(zhí)行的一系列變換包括行移位變換、字節(jié)替換變換和列混合變換。
12.如權(quán)利要求8所述的裝置,其中所述AES列混合變換將四字節(jié)塊序列d,c,b,a變換成另一個四字節(jié)塊序列 3a+b+c+2d,a+b+2c+3d, a+2b+3c+d,2a+3b+c+d。
13.如權(quán)利要求8所述的裝置,其中所述組合用于計算6級RAID系統(tǒng)的Q校驗子。
14.一種包括機器可訪問介質(zhì)的制品,所述機器可訪問介質(zhì)具有相關(guān)聯(lián)的信息,其中當(dāng)所述信息被訪問時,使得機器執(zhí)行對字節(jié)塊中多個字節(jié)中的每一個字節(jié)并行地執(zhí)行伽羅瓦域乘法操作,包括對所有偶數(shù)位置字節(jié)被設(shè)置為0的所述字節(jié)塊執(zhí)行高級加密標(biāo)準(zhǔn)(AEQ列混合變換, 以提供第一結(jié)果;對所有奇數(shù)位置字節(jié)被設(shè)置為0的所述字節(jié)塊執(zhí)行所述AES列混合變換,以提供第二結(jié)果;以及將所述第一結(jié)果和所述第二結(jié)果進行組合,以提供所述伽羅瓦域乘法操作的結(jié)果。
15.如權(quán)利要求14所述的制品,其中所述伽羅瓦域乘法操作中的有限域由約簡多項式 OxllB定義。
16.如權(quán)利要求14所述的制品,其中執(zhí)行所述AES列混合變換包括執(zhí)行AESDECLAST輪指令及跟隨其后的AESENC輪指令。
17.如權(quán)利要求14所述的制品,其中由所述AESDECLAST輪指令執(zhí)行的一系列變換包括逆行移位變換和逆字節(jié)替換變換,由所述AESENC輪指令執(zhí)行的一系列變換包括行移位變換、字節(jié)替換變換和列混合變換。
18.一種系統(tǒng),包括處理器;以及存儲設(shè)備,其可由所述處理器訪問并且存儲有多個指令,所述多個指令中的至少一個指令用來執(zhí)行變換序列,所述多個指令以一順序被組合,以使得當(dāng)被所述處理器執(zhí)行時,使得所述處理器至少對所有偶數(shù)位置字節(jié)被設(shè)置為0的字節(jié)塊執(zhí)行高級加密標(biāo)準(zhǔn)(AEQ列混合變換,以提供第一結(jié)果;對所有奇數(shù)位置字節(jié)被設(shè)置為0的所述字節(jié)塊執(zhí)行所述AES列混合變換,以提供第二結(jié)果;以及將所述第一結(jié)果和所述第二結(jié)果進行組合,以提供對所述字節(jié)塊中多個字節(jié)中的每一個字節(jié)進行伽羅瓦域乘法操作的結(jié)果。
19.如權(quán)利要求18所述的系統(tǒng),其中所述伽羅瓦域乘法操作中的有限域由約簡多項式 OxllB定義。
20.如權(quán)利要求18所述的系統(tǒng),其中AESDECLAST輪指令及跟隨其后的AESENC輪指令執(zhí)行所述AES列混合變換。
全文摘要
提供了通過采用AES操作來計算RAID 6系統(tǒng)的Q校驗子的方法和裝置。在一個實施例中,使用所述AES操作執(zhí)行的GF乘法的結(jié)果使得提供RAID-6支持,而不需要專用的RAID控制器。
文檔編號G06F7/52GK102171646SQ200980139241
公開日2011年8月31日 申請日期2009年12月4日 優(yōu)先權(quán)日2008年12月19日
發(fā)明者S·格倫 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
安顺市| 丽江市| 扎赉特旗| 无极县| 无极县| 泸水县| 东山县| 会理县| 兴文县| 石家庄市| 治县。| 海南省| 饶阳县| 平遥县| 黔西县| 临朐县| 武义县| 会宁县| 斗六市| 凭祥市| 云阳县| 沂源县| 宁陕县| 绥化市| 江北区| 唐河县| 绿春县| 共和县| 怀来县| 义乌市| 沙雅县| 体育| 望谟县| 柳河县| 奈曼旗| 泰来县| 石渠县| 柯坪县| 永胜县| 洞口县| 博爱县|