專利名稱:具有模式匹配的高性能raid-6系統(tǒng)體系結構的制作方法
技術領域:
本公開涉及獨立磁盤冗余陣列(RAID)系統(tǒng),具體來說,涉及 RAID-6系統(tǒng)的計算加速。
背景技術:
出于可靠性、容量或性能的目的,獨立磁盤冗余陣列(RAID)將 多個物理硬盤驅(qū)動器組合成邏輯驅(qū)動器。因此,取代多個物理硬盤驅(qū) 動器,操作系統(tǒng)看到單個邏輯驅(qū)動器。本領域技術人員眾所周知,有 很多稱為RAID級的標準方法用來在RAID系統(tǒng)的這些物理硬盤驅(qū)動 器上分配數(shù)據(jù)。
例如,在0級RAID系統(tǒng)中,通過將數(shù)據(jù)分成多個塊并將每個塊 寫入到獨立的硬盤驅(qū)動器來在硬盤驅(qū)動器物理陣列上將數(shù)據(jù)條帶化。 通過將負載散布到多個硬盤驅(qū)動器來提高輸入/輸出(1/0)性能。盡 管O級RAID提高了 1/0性能,但它不提供冗余度,因為如果一個硬 盤驅(qū)動器發(fā)生故障,則所有數(shù)據(jù)都會丟失。
5級RAID系統(tǒng)通過在至少三個硬盤驅(qū)動器上將數(shù)據(jù)和奇偶校驗 信息條帶化來提供高級冗余度。在發(fā)生故障的情況下,將數(shù)據(jù)條帶化 與分布式奇偶校驗相結合來提供恢復路徑。6級RAID系統(tǒng)通過允許 恢復雙盤故障而提供甚至高于5級RAID系統(tǒng)的高級冗余度。在6級 RAID系統(tǒng)中,為數(shù)據(jù)生成稱為P校驗子(syndrome )和Q校驗子的 兩個校驗子,并將它們存儲在RAID系統(tǒng)的硬盤驅(qū)動器上。P校驗子 是通過為條帶(stripe)中的數(shù)據(jù)(數(shù)據(jù)塊(長條)、P校驗子塊和Q校 驗子塊)簡單計算奇偶校驗信息而生成的。Q校驗子的生成需要伽羅 瓦域(Galois Field)乘法,并且如果磁盤驅(qū)動器發(fā)生故障,則會比較
6復雜。在盤恢復操作期間執(zhí)行的恢復數(shù)據(jù)和/或P和/或Q校驗子的重 新生成方案需要伽羅瓦域乘法和逆運算。
重新生成通常是通過利用查找表進行計算或通過利用限于特定 多項式的多個伽羅瓦域乘法器來執(zhí)行的。
隨著以下詳細描述的繼續(xù),參照附圖,要求權利的主題的實施例 的特征將變得顯而易見,附圖中,類似的數(shù)字描繪類似的部分,并且
其中
圖1是示出RAID-6陣列的實施例的框圖,圖中示出多個條帶, 每個條帶包括在硬盤陣列上條帶化的數(shù)據(jù)塊(長條)與P和Q校驗子;
圖2是根據(jù)本發(fā)明原理包括用于加速計算的加速單元的系統(tǒng)的實 施例的框圖3是如圖2所示的加速單元中的數(shù)據(jù)處理單元的實施例的框
圖4是如圖3所示的數(shù)據(jù)處理單元的其中任何一條數(shù)據(jù)處理路徑 的配置寄存器的實施例的框圖5是如圖3所示的數(shù)據(jù)處理單元的其中任何一條數(shù)據(jù)處理路徑 的狀態(tài)寄存器的實施例的框圖6示出利用如圖2所示的加速單元和如圖3所示的數(shù)據(jù)處理單 元并行計算P和Q核_驗子的方法的實施例;
圖7示出用于在如圖1所示的RAID-6陣列中執(zhí)行部分P和Q校 驗子計算的方法的實施例。
圖8示出用于在如圖1所示的RAID-6陣列中恢復兩個數(shù)據(jù)盤的 損失的方法的實施例。
圖9示出用于執(zhí)行比較檢查的方法的實施例,該方法可在如圖2 所示的力口速單元中執(zhí)行。
圖10示出用于執(zhí)行結果非零檢查的方法的實施例,該方法可在如圖2所示的加速單元中執(zhí)行;以及
圖11 ^^艮據(jù)本發(fā)明原理包括用于加速RAID-6計算的加速單元的 實施例的系統(tǒng)的框圖。
盡管將參照要求權利的主題的說明性實施例繼續(xù)進行以下詳細 描述,但是本領域技術人員將明白其許多備選、修改和變換。因此, 希望廣義地看待要求權利的主題,并且要求權利的主題只可如隨附權 利要求中所述地那樣進行定義。
具體實施例方式
圖1是示出RAID-6陣列100的實施例的框圖,其中示出多個條 帶,每個條帶包括在硬盤陣列150上條帶化的數(shù)據(jù)塊(長條)與P和 Q校驗子。在所示實施例中,RAID陣列具有五個硬盤150:三個數(shù)據(jù) 盤和2個校驗子(P, Q)盤。通過利用塊級條帶化配合分布在組成硬 盤上的P和Q校驗子來以循環(huán)方式將數(shù)據(jù)寫入到RAID-6陣列。諸如 分割成塊的文件的連續(xù)數(shù)據(jù)可分布在條帶(例如,水平條帶0)上, 其中塊之一存儲在三個數(shù)據(jù)盤102上的數(shù)據(jù)塊102、 104、 106中。為 水平條帶0中的數(shù)據(jù)塊102、 104、 106計算的P和Q ^^交驗子存儲在相 應的P塊130和Q塊132中。P和Q校驗子塊存儲在每個條帶的不同 硬盤150上。在一個實施例中, 一個條帶中的每個塊中有512個字節(jié)。
P校驗子可通過執(zhí)行"異或"(XOR)操作(opemtion)來生成。 XOR是對兩個操作數(shù)的邏輯操作,如果其中只有一個操作數(shù)具有邏輯 值'1,,則它產(chǎn)生邏輯值'1,。例如,具有值'11001010,的第一 操作數(shù)和具有值'10000011,的第二操作數(shù)的XOR提供具有值
'01001001,的結果。如果存儲第一操作數(shù)的硬盤驅(qū)動器發(fā)生故障, 則可通過對第二操作數(shù)和結果執(zhí)行XOR操作來恢復第 一操作數(shù)。
P校驗子是利用形(XOR)操作在條帶上計算獲得的數(shù)據(jù)(D)的筒 單奇偶校驗。在具有n個數(shù)據(jù)盤的系統(tǒng)中,P校驗子的生成由下式1 表示P = D0 @ Di①D2……e Dj^ (式1 )
Q校驗子的計算需要利用伽羅瓦域多項式(g)進行乘法("。以非常 高的性能對8位(字節(jié))伽羅瓦域多項式執(zhí)行算術操作。多項式是只 利用加法、減法、乘法和非負整數(shù)指數(shù)來組合有限數(shù)量的常量和變量
的表達式。
一個本原多項式是x8 + xA + xS+xS+l,它可用十六進制表
示法以1D表示。多項式的伽羅瓦域(GF)操作又稱為GF(^S)算術。 在具有n個數(shù)據(jù)盤的系統(tǒng)中,Q校驗子的生成由下式2表示
Q = g0*D0 g"Di十g2*D2...…十gn-"D^ (式2 )
在條帶基礎上執(zhí)行逐字節(jié)伽羅瓦域操作,其中塊中的每個字節(jié)在 計算上獨立于其它字節(jié)。逐字節(jié)伽羅瓦域操作可以適應多達 255 (2A8-l)個數(shù)據(jù)盤。
圖2是根據(jù)本發(fā)明原理包括加速單元的實施例以加速計算的系統(tǒng) 200的框圖。
系統(tǒng)包括用于存儲工作請求210的存儲器202和用于處理工作請 求210的狀態(tài)機(微引擎)204。狀態(tài)機204通過共享存儲器206向 加速單元208發(fā)出指令。基于從狀態(tài)機204執(zhí)行的指令,加速單元208 可對8位伽羅瓦域多項式執(zhí)行算術操作。
在一個實施例中,狀態(tài)機204可以是諸如可從Intel公司購得的 IXP 2400處理器的處理器中的多個微引擎之一。加速單元208分擔 狀態(tài)機(微引擎)204計算8位伽羅瓦域多項式的負擔。
存儲器202和共享存儲器206可以是動態(tài)隨機存取存儲器 (DRAM)、靜態(tài)隨機存取存儲器(SRAM)、同步動態(tài)隨機存取存 儲器(SDRAM)、雙倍數(shù)據(jù)速率2 (DDR2 ) RAM或Rambus動態(tài)隨 機存取存儲器(RDRAM)或任何其它類型存儲器。
加速單元208包括用于對數(shù)據(jù)執(zhí)行操作的數(shù)據(jù)處理單元218?;?于存儲在存儲器中的工作請求210,狀態(tài)機204可以使加速單元208 承擔RAID陣列操作的計算。在一個實施例中,RAID陣列可以是如 圖所示的RAID-6陣列100。加速單元208還包括控制寄存器212、狀態(tài)寄存器214和加速單元狀態(tài)機216。
圖3是如圖2所示的加速單元208中的數(shù)據(jù)處理單元218的實施 例的框圖。在所示實施例中,數(shù)據(jù)處理單元218包括兩個算術邏輯單 元(ALU) 314、 316。 ALU對操作數(shù)執(zhí)行算術和邏輯操作。由每個獨 立ALU 314、 316執(zhí)行的邏輯或算術操作可通過與ALU 314、 316相 關聯(lián)的配置寄存器212 (圖2)進行配置。
在一個實施例中,每個ALU 314、 316可才丸行逐字節(jié)算術和邏輯 操作。每個ALU314、 316可包括XOR陣列與比較和零檢查功能,并 且可以在數(shù)據(jù)經(jīng)過數(shù)據(jù)處理單元218的單次傳遞中獨立執(zhí)行P或Q校 驗子計算。
在一個實施例中,每個ALU 314、 316具有64位(8字節(jié))數(shù)據(jù) 路徑,并且包括8個可配置的伽羅瓦域(GF)字節(jié)片(slice)。每個GF 字節(jié)片在8字節(jié)數(shù)據(jù)路徑中對一個字節(jié)進行操作。每個ALU314、 316 在64位數(shù)據(jù)路徑中同時對8個字節(jié)進行操作。這允許利用來自每個 盤塊的合適的字節(jié)并行執(zhí)行盤塊操作。每個ALU 314、 316具有可存 儲多達512個字節(jié)的相應的獨立累積緩沖器306、 308。 ALU314、 316 共享GF(8)逐字節(jié)乘法器322。累積緩沖器314、 316可用于存儲處理 單元218的ALU 314、 316和乘法器322中的才乘作的中間結果。
數(shù)據(jù)處理單元218具有兩條獨立的數(shù)據(jù)處理路徑。 一條數(shù)據(jù)處理 路徑包括累積緩沖器306和ALU 314。另 一條數(shù)據(jù)處理路徑包括累積 緩沖器308和ALU316。
兩條數(shù)據(jù)處理路徑共享乘法器322。如果兩條數(shù)據(jù)處理路徑需要 同時執(zhí)行通用乘法-累積功能,則在ALU 314、 316之間切換乘法器322 的使用。盡管吞吐量有所減小,但加速單元208可允許在來自共享存 儲器206的數(shù)據(jù)的單次傳遞中利用單個通用乘法-累積來執(zhí)行雙盤恢 復。
加速單元208在存儲應用較少性能損失的情況下有效利用單個乘 法器322,例如計算P和Q校驗子和執(zhí)行數(shù)據(jù)恢復。但是,加速單元
10208不限于用于存儲應用。加速單元208可用于涉及生成8位字段的 任何8位多項式的計算。此外,每個ALU 314、 316可對它自己的多 項式獨立工作。'
數(shù)據(jù)處理單元218包括多個復用器。每個復用器基于選擇器的狀 態(tài)將兩個或兩個以上輸入的信息編碼(或多路復用)為單個輸出。例 如,復用器302、 304允許選擇將存儲在每個累積緩沖器306、 308中 的數(shù)據(jù)的源。數(shù)據(jù)源可以是從共享存儲器206 (圖2)接收的推數(shù)據(jù), 或是從ALU314、 316或乘法器322輸出的中間結果。復用器310、 312允許為到相應ALU 314、 316的操作數(shù)之一選擇源。操作數(shù)源可 以來自累積緩沖器306或累積緩沖器308。
復用器318允許為乘法器322選擇操作數(shù)之一。操作數(shù)源是ALU 314或ALU316中的操作的結果、從共享存儲器接收的推數(shù)據(jù)、或存 儲在累積緩沖器306或累積緩沖器308中的數(shù)據(jù)。
復用器320允許選擇將用于通過乘法器322執(zhí)行乘法操作的多個 多項式(P0LY1、 P0LY2)之一。這些多項式是可編程的,并且經(jīng)過 相應ALU 314、 316的每條處理路徑可具有不同的可編程多項式。例 如,在一個實施例中,P0LY1可以是與ALU 314相關聯(lián)的可編程多 項式,而P0LY2可以是與ALU316相關聯(lián)的可編程多項式。復用器 324允許選擇將用于通過乘法器322執(zhí)行乘法操作的多個乘數(shù)系數(shù) (Ml, M2)之一 。例如,乘數(shù)系數(shù)(multiplier coefficient)Ml可以與經(jīng) 過ALU314的處理路徑相關聯(lián),而乘數(shù)系數(shù)M2可以與經(jīng)過ALU316 的處理路徑相關聯(lián)。
復用器328、 332允許選擇從相應ALU 314、 316或來自乘法器 322的XOR 330輸出的當前操作的結果。數(shù)據(jù)處理路徑之一 (包括 ALU 314或ALU 316)的結果是將返回給共享存儲器的最終結果,或 是將存儲在相應累積緩沖器306、 308中的中間結果。
64位XOR 330和復用器326允許數(shù)據(jù)處理路徑中的計算包含將 在該數(shù)據(jù)處理路徑中執(zhí)行的乘法操作和XOR操作?;谕ㄟ^各個復用器的輸出選擇,每條數(shù)據(jù)處理路徑可包括ALU操作(ALU 314、 316 )、乘法操作(乘法器322 )和/或異或(XOR )操作(XOR 330 )。
結合圖2論述的配置寄存器212包括用于如圖3所示的每條獨立 的數(shù)據(jù)處理路徑的配置寄存器。
圖4是如圖3所示的數(shù)據(jù)處理單元218的其中任何一條數(shù)據(jù)處理 3各徑的配置寄存器400的實施例的框圖。在一個實施例中,配置寄存 器400具有可用于管理數(shù)據(jù)處理路徑、即管理加速功能的32個位。 在所示實施例中,配置寄存器400可包括一個或多個保留位402。
配置寄存器400包括保持狀態(tài)字段404,該字段404可包括指示 在操作之后是保持還是清除狀態(tài)寄存器內(nèi)容的一個位。例如,保持狀 態(tài)字段404可以是單個位,該單個位可以設置成邏輯'1,以保持狀 態(tài),或者可以清零,即設置成邏輯'0,以在下一個操作之前清除狀 態(tài)寄存器的內(nèi)容,以便通過下一個操作來更新狀態(tài)。
配置寄存器400中的源字段406可以配置成通過復用器310、 312 來為ALU 314、 316選擇數(shù)據(jù)源。例如,將在ALU314中執(zhí)行的操作 的數(shù)據(jù)源可以是累積緩沖器306或累積緩沖器308。在一個實施例中, 源字段406具有設置或清零成通過復用器310、 312選擇ALU操作數(shù) 的源的一個位。
配置寄存器404中的累積字段408選擇是否將通過數(shù)據(jù)處理單元 218的數(shù)據(jù)處理路徑的結果引導回到相應累積緩沖器。
配置寄存器400中的計算^t式字段410允許將每條數(shù)據(jù)處理路徑 配置成執(zhí)行不同的操作。計算模式字段410的狀態(tài)可用于控制經(jīng)過復 用器328、 332到累積緩沖器306、 308和/或復用器334的數(shù)據(jù)路徑。 在一個實施例中,計算才莫式字段410具有允許選擇8種操作之一的3 個位。這些操作如下表l所示,其中具有相關聯(lián)的計算沖莫式和結果模式
000
001
010
011
100
101
110
111
操作
NULL Basic XOR GF8 XOR FindM個字節(jié) GF8 mul
mul data after XOR mul data before XOR mul Acc before XOR 表1
結果 Data
Data XOR ACC Data GF8XOR ACC (Data=M) 0x01:0 M Data
M'(Data XOR ACC) (M Data) XOR Acc (M* Acc) XOR Data
通過64位XOR 330執(zhí)行模式100、 101 、 110和111的XOR操作。 例如,對于才莫式100,復用器326選擇64,h0,并且數(shù)據(jù)處理路徑在乘 法器322中執(zhí)行GF8乘法操作,操作結果(M Data )從64位XOR 330 輸出。稍后將更詳細地描述表l中列出的其它才莫式。
配置寄存器400允許每條數(shù)據(jù)處理路徑配置不同的乘數(shù)系數(shù)和伽 羅瓦域(GF )多項式用于在乘法器322中執(zhí)行乘法操作。經(jīng)過乘法器 332的路徑由兩條數(shù)據(jù)處理路徑(即,經(jīng)過ALU 314的路徑和經(jīng)過 ALU 316的路徑)共享。復用器320、 324允許乘法器用于為處理路 徑之一選擇的當前操作。
乘數(shù)系數(shù)字段412允許配置多個乘數(shù)系數(shù)(M)之一。通過復用 器324為利用乘法器322進行當前操作的相應數(shù)據(jù)處理路徑輸入為相 應數(shù)據(jù)處理路徑配置的乘數(shù)系數(shù)(Ml, M2)。在一個實施例中,乘 數(shù)系數(shù)字段具有8個位。
GF多項式字段414允許為數(shù)據(jù)處理路徑配置多個多項式之一。 在一個實施例中,GF多項式字l殳具有8個位。通過復用器320為當 前利用乘法器322進行當前操作的相應數(shù)據(jù)處理路徑輸入為相應數(shù)據(jù) 處理路徑配置的GF多項式(POLY1, POLY2)。在一個實施例中, 將GF多項式字段414設置成'1D,(十六進制(hex))。但是, GF多項式字段414允許配置其它GF多項式。
13加速單元208可以對任何GF("S)多項式字段進行操作,并且優(yōu) 化成以功率高效的方式在常用的發(fā)生器ID (hex)上工作。加速單元 208允許通過每個周期處理8個字節(jié)的單個乘法器322來快速實現(xiàn)與 任意系數(shù)的相乘。通過對8個字節(jié)并行執(zhí)行乘法來增加吞吐量。
結合圖3論述的特殊復用器路徑和指令使得加速單元208能夠通 過疊加從共享存儲器206進入加速單元208的數(shù)據(jù)移動和從加速單元 208移出進入共享存儲器206的數(shù)據(jù)移動來對部分(隨機)寫提供高 性能。
多條路徑還減少了浪費的多次數(shù)據(jù)傳遞,即,將相同數(shù)據(jù)從共享 存儲器206傳遞到數(shù)據(jù)處理單元218以執(zhí)行不同操作。
加速單元20'8在無需增加顯著額外邏輯的情況下提供了高性能。 在一個實施例中,選擇累積緩沖器306、 308以提供最小存儲器大小。 有效利用單個大型乘法器322,而不會顯著損失存儲應用的性能。加 速單元208還在支持生成8位字段的任何8位多項式方面具有靈活性。 此外,每個ALU314、 316可對不同的多項式獨立工作。
圖5是如圖3所示的數(shù)據(jù)處理單元218的其中任何一條數(shù)據(jù)處理 路徑的狀態(tài)寄存器500的實施例的框圖。經(jīng)過數(shù)據(jù)處理單元218中的 相應ALU 314、 316的每條數(shù)據(jù)處理路徑包括相應的狀態(tài)寄存器500。 在所示實施例中,狀態(tài)寄存器500包括結果零檢查字段502和用于存 爿賭第一個非零結果字節(jié)的字節(jié)地址的字節(jié)地址字段504。結果零檢查 字段502可以是根據(jù)操作結果而設置或清零的一個位字段。字節(jié)地址
在一個實施例中,如圖2所示的加速單元208為RAID 6條帶寫 操作加速對P和Q校驗子的計算。在加速單元208中對存儲在共享存 儲器206中的條帶的數(shù)據(jù)塊并行計算P和Q校驗子。通過加速單元 208從共享存儲器206接收條帶的數(shù)據(jù)塊。 一條數(shù)據(jù)處理路徑具有它 相應的配置成計算該條帶的P校驗子的ALU 314、 316,而另一條數(shù) 據(jù)處理路徑具有它相應的配置成計算相同條帶的Q校驗子的ALU。如前所述,通過對將存儲在n個數(shù)據(jù)盤驅(qū)動器上的條帶中的數(shù)據(jù) 塊執(zhí)行XOR操作來計算P校驗子,并用下式1表示P校驗子
P = D0 @ Di D2……十Dn—i (式1 )
參照圖1,條帶包括一組大小相同的可稱為長條(strip)的數(shù)據(jù)塊 102、 104、 106。對于每個條帶,有兩個檢驗和,即P和Q校驗子130、 132。按每個條帶的數(shù)據(jù)塊中的數(shù)據(jù)字節(jié)計算P和Q校驗子。
可利用因式分解來計算全條帶Q校驗子。每個系數(shù)gi是8位多項 式。也能以1周期吞吐量(8個字節(jié))在單次傳遞中利用加速單元208 來有效執(zhí)行通用乘法。通過在乘法器322中把將存儲在n個盤驅(qū)動器 上的數(shù)據(jù)塊乘以(*)伽羅瓦域(GF)多項式(g)并在XOR330中對乘法 操作的結果執(zhí)行XOR操作來計算Q校驗子,如下式2所示
Q = g°*DQ @ g"D! @ g2*D2…… gD-"Dn.! (式2 )
在本發(fā)明的實施例中,對相同數(shù)據(jù)并行計算P和Q校驗子。在數(shù) 據(jù)經(jīng)過加速單元208的單次傳遞中執(zhí)行這兩個計算,優(yōu)化了數(shù)據(jù)移動, 并節(jié)省了系統(tǒng)總線帶寬(即,到/來自共享存儲器206)。因此,加速 單元208提高了 P和Q校驗子的計算的性能。
圖6示出利用如圖2所示的加速單元208和如圖3所示的數(shù)據(jù)處 理單元218并行計算P和Q 4爻驗子的方法的實施例。
如前所述,為跨越多個硬盤的條帶中的數(shù)據(jù)塊計算P和Q校驗子。 在一個實施例中,條帶中的每個數(shù)據(jù)塊(長條)可存儲512個字節(jié)。
在方框600,通過將相應配置寄存器400中的配置數(shù)據(jù)存儲在加 速單元208中來配置每條數(shù)據(jù)處理路徑。經(jīng)過ALU 314的第一數(shù)據(jù)處 理路徑可以配置成計算P校驗子,而經(jīng)過ALU316的第二數(shù)據(jù)處理路 徑可配置成對相同數(shù)據(jù)并行計算Q校驗子。
首先,將每條數(shù)據(jù)處理路徑的相應的加速單元配置寄存器400配 置成將數(shù)據(jù)從共享存儲器206 (圖2)移動到相應的累積緩沖器306、 308。將計算模式字段410設置成NULL,將累積字段408設置成'1, 以在累積緩沖器306、 308中累積推數(shù)據(jù),并將保持狀態(tài)位設置成'1,以保持相應狀態(tài)寄存器500的內(nèi)容。將相應配置寄存器400中的所有 其它字段設置成默認值,將GF多項式字段414設置成默認值1D (hex),將乘數(shù)系數(shù)字段412設置成默認值'0,,并將累積緩沖器 源字段408設置成與A1U 314、 316相關聯(lián)的相應的累積緩沖器306 、 308。
在一個實施例中,通過加速器狀態(tài)機216來執(zhí)行利用存儲在共享 存儲器206中的配置寄存器加載加速單元配置寄存器400的指令。處 理繼續(xù)執(zhí)行方框602。
在方框602,通過相應配置寄存器400將每條數(shù)據(jù)處理路徑配置 成將來自共享存儲器206(圖2 )的數(shù)據(jù)塊存儲在相應累積緩沖器306、 308中。通過加速器狀態(tài)機216向兩條數(shù)據(jù)處理路徑發(fā)出寫指令以移 動來自共享存儲器206的數(shù)據(jù)并將它存儲在累積緩沖器306、 308中。 存儲在累積緩沖器306、 308中的數(shù)據(jù)是條帶中的第一盤驅(qū)動器的第 一數(shù)據(jù)塊。基于配置寄存器400的狀態(tài),從共享存儲器206接收的推 數(shù)據(jù)進入ALU314、 316。因為配置寄存器400中的計算模式字段410 為NULL,所以不在ALU314、 316中才丸行任何才喿作。未經(jīng)修改的數(shù) 據(jù)從ALU314、 316流出經(jīng)過復用器328、 332返回以經(jīng)過復用器302、 304存儲在累積緩沖器306、 308中。處理繼續(xù)才丸行方框604。
在方框604,在將條帶的第一數(shù)據(jù)塊存儲在累積緩沖器306、 308 中之后,將相應數(shù)據(jù)處理路徑的配置寄存器400配置成執(zhí)行P和Q校 驗子計算。在一個實施例中,基于配置寄存器的狀態(tài),將ALU 314配 置成對條帶執(zhí)行P校驗子計算,并將ALU 316配置成對條帶執(zhí)行Q 校驗子操作。
將ALU 314配置成計算P校驗子,其中在相關聯(lián)的配置寄存器 400中,將計算才莫式字段410設置成"XOR",將累積字段408設置 成累積,并將保持狀態(tài)字段404設置成'保持,。如之前所述,將配 置寄存器400中的所有其它字段設置成默認值。
將ALU 316配置成計算Q校驗子,其中在相關聯(lián)的配置寄存器400中,將計算模式字段410設置成"mul data before XOR",將累積 字段408設置成累積,并將保持狀態(tài)字段404設置成保持狀態(tài)。處理 繼續(xù)執(zhí)行方框606。
在方框606,基于相應配置寄存器400的狀態(tài),每個ALU 314、 316對兩個操作數(shù)執(zhí)行所配置的操作。第一個操作數(shù)存儲在相應累積 緩沖器306、 308中。另一個操作數(shù)通過推數(shù)據(jù)從共享存儲器206流 出。通過相應ALU314、 316執(zhí)行的操作的結果存儲在相應累積緩沖 器306、 308中。
例如,為了計算P校驗子,在ALU314中對通過復用器310從累 積緩沖器306接收的存儲在累積緩沖器306中的數(shù)據(jù)和從共享存儲器 206檢索的推數(shù)據(jù)執(zhí)行XOR操作。存儲在累積緩沖器306中的數(shù)據(jù)(操 作數(shù))可以是來自第一盤驅(qū)動器的條帶的第一長條。從共享存儲器206 流出的其它數(shù)據(jù)(操作數(shù))可以是來自第二盤驅(qū)動器的條帶的第二長 條。因為將配置寄存器400中的累積字段408設置成累積,所以ALU 314中的操作結果通過復用器328和302存回到累積緩沖器306。處 理繼續(xù)執(zhí)行方框608。
在方框608,如果條帶中還有另一長條(不同于上一個長條)還 需執(zhí)行該條帶的P或Q計算,則處理繼續(xù)執(zhí)行方框606。如果沒有, 則處理繼續(xù)執(zhí)行方框610。
在方框610,為條帶中的上一個長條以外的所有其它長條計算P 和Q校驗子。利用來自上一個長條的數(shù)據(jù)作為操作數(shù)之一來為該條帶 計算P校驗子和Q校驗子。另 一個操作數(shù)是存儲在累積緩沖器306、 308中的對其它長條執(zhí)行的操作的結果。通過復用器328和334將P 校驗子計算的結果發(fā)送到由兩條數(shù)據(jù)處理路徑共享的"拉"先進先出 (FIFO)存儲器(未示出)。將Q操作的結果存儲在累積緩沖器308 中。處理繼續(xù)^l行方框612。
在方框612,將為該條帶計算的存儲在拉FIFO中的P校驗子移到 共享存儲器206。,處理繼續(xù)執(zhí)行方框614。在方框614,將與計算Q校驗子的ALU 316相關聯(lián)的累積緩沖器 308刷新(flush)到拉FIFO。處理繼續(xù)執(zhí)行方框616。
在方框616,將存儲在拉FIFO中的Q校驗子移到共享存儲器206。 在從共享存儲器206接收的數(shù)據(jù)的單次傳遞中為該條帶計算了該條帶 的Q校驗子和P校驗子。結果(P和Q )返回到共享存儲器206。
圖7示出在如圖1所示的RAID-6陣列100中執(zhí)行部分P和Q計 算的方法的實施例。當條帶中的數(shù)據(jù)只在存儲在條帶的一個數(shù)據(jù)盤上 的單個數(shù)據(jù)塊(D)上改變時,執(zhí)行部分P和Q計算。因此,輸入是 該條帶的P、 Q和D的舊值。輸出基于D、 P和Q的舊值以及D的新 值。下式定義用于計算P和Q校驗子的新值的操作。
Pnew = Pold (Dold Dnew) (式3 )
Qnew = Qold 6 M'(Dold @ Dnew) (式4 )
式3和式4中都利用表達式(D°ld Dnew)來計算新的P校驗子和 新的Q校驗子。因此,可為Pnew計算這個表達式一次,然后將其用 于計算Qnew。加速單元206可配置成通過配置寄存器400執(zhí)行此計 算。
在方框700,通過在相應配置寄存器400中設置合適的位來將兩 條數(shù)據(jù)處理路徑配置成將數(shù)據(jù)塊D的舊值存儲在相應累積緩沖器 306、 308中。將計算;f莫式字段410設置成NULL,將累積字段408設 置成'1,以將結果存回到累積緩沖器306、 308,并將保持狀態(tài)位設 置成'1,以保持狀態(tài)寄存器214的內(nèi)容。將每條數(shù)據(jù)處理路徑的配 置寄存器400中的所有其它字段設置成默認值,其中將GF多項式字 段414設置成默認值ID (hex),將乘數(shù)系數(shù)字段412設置成默認值 '0,,并將累積器源字段408設置成與相應ALU314、 316相關聯(lián)的 累積緩沖器306、 308。通過狀態(tài)機216執(zhí)行指令以加載存儲在共享存 儲器206中的配置寄存器,從而初始化每個配置寄存器400中的字段。 處理繼續(xù)執(zhí)行方框702。
在方框702,通過相應配置寄存器400將每條數(shù)據(jù)處理路徑配置成將來自共享存儲器206的數(shù)據(jù)塊存儲在相應累積緩沖器306、 308 中。通過加速器狀態(tài)機216向兩條數(shù)據(jù)處理路徑發(fā)出寫指令以移動來 自共享存儲器206的數(shù)據(jù)并將它存儲在累積緩沖器306、 308中。存 儲在累積緩沖器306、 308中的數(shù)據(jù)是舊的數(shù)據(jù)塊?;谂渲眉拇嫫?400的狀態(tài),從共享存儲器206接收的推數(shù)據(jù)進入ALU314、 316。因 為配置寄存器400中的計算才莫式字段410為NULL,所以不在ALU 314、 316中執(zhí)行任何操作。未經(jīng)修改的數(shù)據(jù)從ALU314、 316流出經(jīng) 過復用器328、 332返回以經(jīng)過復用器302、 304存儲在累積緩沖器306 、 308中。處理繼續(xù)執(zhí)行方框704
在方框704,將相應數(shù)據(jù)處理路徑的配置寄存器400配置成為新 的數(shù)據(jù)塊計算新的P和Q校驗子。在一個實施例中,基于每個配置寄 存器400的狀態(tài),將ALU 314配置成計算P校驗子,并將ALU 316 配置成計算Q校驗子。
將ALU 314配置成計算新P校驗子的部分結果,其中相應配置寄 存器400中的字段設置如下計算模式字段410設置成"XOR",累 積字段408設置成累積,并且保持狀態(tài)字段404設置成保持。如前所 述,配置寄存器400中的所有其它字段設置成默認值。
將ALU 316配置成計算新Q校驗子的部分結果,其中相應配置 寄存器400中的字段設置如下計算模式字段410設置成"mul data after XOR",累積字段408設置成累積,保持狀態(tài)字段404設置成保 持狀態(tài),并且乘數(shù)系數(shù)字段412存儲將通過ALU 316執(zhí)行的乘法操作 的乘數(shù)系數(shù)。處理繼續(xù)執(zhí)行方框706。
在方框706,每個ALU 314、 316基于相應配置寄存器400的狀 態(tài)對兩個數(shù)據(jù)輸入執(zhí)行所配置的操作。第一個數(shù)據(jù)輸入(舊數(shù)據(jù))存 儲在相應累積緩沖器306、 308中,另一個數(shù)據(jù)輸入(新數(shù)據(jù))從共 享存儲器206流入ALU314、 316。通過相應ALU314、 316執(zhí)行的操 作的結果存儲在相應累積緩沖器306、 308中。ALU 314對存儲在累 積緩沖器306中的舊數(shù)據(jù)和通過'推數(shù)據(jù),流入的新數(shù)據(jù)執(zhí)行XOR操作。ALU316也對存儲在累積緩沖器308中的舊數(shù)據(jù)和通過'推數(shù) 據(jù),從共享存儲器206流入的新數(shù)據(jù)執(zhí)行XOR操作。乘法器322將 通過復用器318從ALU 316接收的XOR操作的結果與從復用器324 的輸出接收的乘數(shù)系數(shù)相乘。在執(zhí)行完所配置的操作之后,累積緩沖 器306存儲(Dold Dnew)的結果,而累積緩沖器308存儲 M'(Dold0 Dnew)的結果。處理繼續(xù)才丸行方框708。
在方框708,將與P的計算相關聯(lián)的配置寄存器400配置成利用 存儲在累積緩沖器306中的部分結果計算新的P校驗子(Pnew)。為 了計算Pnew,將配置寄存器400中的字段配置如下計算才莫式字段 410設置成XOR,累積字段408設置成'1,以累積,并且保持狀態(tài) 位設置成'1,以保持狀態(tài)。
將包括ALU 316的另 一條數(shù)據(jù)處理路徑的配置寄存器400中的字 段配置如下計算才莫式字段410設置成NULL,累積字段408設置成 '0,以關閉累積,并且保持狀態(tài)位設置成'1,以保持狀態(tài)寄存器的 內(nèi)容。處理繼續(xù)執(zhí)行方框710。
在方框710,舊P從共享存儲器206流入ALU 314、 316。舊P 和存儲在累積緩沖器306、 308中的之前操作的結果輸入到ALU314、 316。 ALU 314中的操作結果、即Pold (累積緩沖器306的內(nèi)容) 是新P (Pnew),它通過復用器334 ^皮轉發(fā)到拉FIFO,并且還發(fā)回到 累積緩沖器306。因為在ALU316中執(zhí)行NULL操作并且結果返回到 累積緩沖器308,所以存儲在累積緩沖器308中的數(shù)據(jù)保持不變。處 理繼續(xù)纟丸行方框712。
在方框712,將存儲在拉FIFO中的新P (Pnew)存儲在共享存儲 器206中。處理繼續(xù)執(zhí)行方框714。
在方框714,將與包括ALU316的數(shù)據(jù)處理路徑相關聯(lián)的配置寄 存器400配置成利用存儲在累積緩沖器308中的部分結果計算新Q (Qnew)。將與P校驗子計算相關聯(lián)的配置寄存器400配置如下計 算模式字段410設置成NULL,累積字段408設置成'0,以不累積,并且保持狀態(tài)位設置成'1,以保持狀態(tài)寄存器的內(nèi)容。將與Q校驗
子計算相關聯(lián)的配置寄存器400配置成計算新Q校驗子,其中各字段 配置如下計算模式字段410設置成XOR,累積字段408設置成'1, 以累積,并且保持狀態(tài)位設置成'1,以保持狀態(tài)。處理繼續(xù)執(zhí)行方 框716。
在方框716,舊Q通過推數(shù)據(jù)從共享存儲器206流入。舊Q和存 儲在累積緩沖器306、 308中的之前操作的結果輸入到ALU 314、 316。 ALU 316中的操作結果、即Qold (累積緩沖器308的內(nèi)容)是新Q (Qnew),它被轉發(fā)到拉FIFO,并且回到累積緩沖器308。因為在 ALU 314中執(zhí)行NULL操作并且結果返回到累積緩沖器306,所以存 儲在累積緩沖器.306中的數(shù)據(jù)保持不變。在方框714執(zhí)行之后,方框 712和716中的數(shù)據(jù)傳輸同時運行。因此,在計算新Q的同時,將新 P移到共享存儲器206。這減少了從加速單元輸出操作結果的時間。 處理繼續(xù)執(zhí)行方框718。
在方框718,從FIFO讀取存儲在拉FIFO中的新Q (Qnew),并 將它存儲在共享存儲器206中。
圖8是用于恢復如圖1所示的RAID-6陣列中的兩個數(shù)據(jù)盤的損 失的方法的實施例。例如,如果有n個數(shù)據(jù)盤,并且數(shù)據(jù)盤D0和D1 發(fā)生故障,則可通過對剩余盤執(zhí)行以下計算來恢復數(shù)據(jù)盤D0和Dl:
DO = a2*p2 a3*D3 ...... afl*Dn a*P a*Q (式5 )
Dl = b2*D2 b3*D3 ...... bD*Dn 6 b*P b*Q (式6 )
通常,首先計算D0。 Dl可利用DO如下計算
D1=D0 D2 D3 ......@Dn P (式7)
但是,這需要傳遞數(shù)據(jù)兩次。如上所示,利用上式5和式6的D0 和D1計算需要使用乘法器。因為兩個盤同時發(fā)生故障的概率較低, 所以為加速單元208增加第二乘法器322的額外成本對于小的性能增 益證明并不合理。因此,為了允許在單次數(shù)據(jù)傳遞中恢復兩個數(shù)據(jù)盤, 兩條數(shù)據(jù)處理路徑共享單個乘法器。對于利用乘法器322的特定數(shù)據(jù)處理路徑,可經(jīng)由通過復用器320選擇多項式(P)并通過復用器324 選擇乘法系數(shù)(M)來共享乘法器。
利用如圖3所示的數(shù)據(jù)處理單元218,在具有六個數(shù)據(jù)盤D0-D5 并且D4和D5發(fā)生故障的實施例中,可利用D0-D3、 P和Q在單次 數(shù)據(jù)傳遞中恢復D4和D5。
D4可以按照集合(DO, Dl, D2, D3, P, Q)與乘數(shù)系數(shù)(mO, ml, m2, m3, mP, mQ)的線性組合來計算。在一個實施例中,集合中的每個數(shù) 據(jù)塊可具有512個字節(jié),并且每個乘數(shù)系數(shù)是一個字節(jié)并運用到整個 數(shù)據(jù)塊。因此,執(zhí)行以下操作以恢復D4和D5:
D4 = (mO*Do ml*Di m2*D2 6 m3*D3 mP*P ) mQ *Q D5 = (Do @ D! D2 @ D3 P ) 6 D4
在方框800,配置每條數(shù)據(jù)處理路徑的ALU 314、 316。與ALU 314 相關聯(lián)的配置寄存器400配置如下將計算模式字段410設置成 NULL,并將累積字段408設置成累積。與另一條數(shù)據(jù)處理路徑中的 ALU316相關聯(lián)的配置寄存器400配置如下將計算模式字段410設 置成GF8 MUL,并將累積字段408設置成累積GF8 MUL操作的結果。 處理繼續(xù)纟丸行方框802。
在方框802,每條數(shù)據(jù)處理路徑對從共享存儲器接收的數(shù)據(jù)塊執(zhí) 行所配置的操作。ALU 314中的NULL操作導致將所接收的數(shù)據(jù)塊存 儲在累積緩沖器306中。數(shù)據(jù)塊的GF8乘法結果存儲在累積緩沖器 308中。處理繼續(xù)執(zhí)行方框804。
在方框804,將下一個數(shù)據(jù)塊的乘數(shù)系數(shù)(M)存儲在ALU 316 的配置寄存器400的乘數(shù)系數(shù)字段412中。對存儲在相應累積緩沖器 306、 308中的之前操作的結果和從共享存儲器206流入的新塊執(zhí)行存 儲在兩個配置寄存器400中的操作(ALU 314中的XOR和ALU 316 中的'mul data before XOR,)。處理繼續(xù)執(zhí)行方框806。
在方框806,如果有另一個數(shù)據(jù)塊要流入,則處理繼續(xù)執(zhí)行方框 804。如果沒有,則處理繼續(xù)執(zhí)行方框808。在方框808,累積緩沖器306、 308存儲以下操作的結果 累積緩沖器308 = (m0*D。
mPDi m2*D2 m3*D3)
累積癥爰沖器306 = (Do Di D2 D3)
用P的乘數(shù)系數(shù)配置與包括ALU 314的數(shù)據(jù)處理路徑相關聯(lián)的配 置寄存器400。 P塊流入ALU314、 316。累積緩沖器306、 308存儲 以下操作的結果
累積緩沖器308 = (m0*Do m"D! @ m2*D2 6 m3*D3十mP*P)
累積緩沖器306 = (Do $ D2 D3 6 P)
在方框810,用Q的乘數(shù)系數(shù)配置與包括ALU316的數(shù)據(jù)處理路 徑相關聯(lián)的配置寄存器400;與包括ALU314的數(shù)據(jù)處理路徑相關聯(lián) 的配置寄存器400配置成不累積此操作的結果。Q數(shù)據(jù)流入ALU 314、 316。 ALU316中的操作結果、即mQ^Q①(累積緩沖器308的內(nèi)容) 是恢復后的D4,它被轉發(fā)給拉FIFIO并回到累積緩沖器308。在對Q 塊執(zhí)行完每個ALU中配置的操作之后,累積緩沖器306、 308存儲以 下操作的結果。
累積纟爰沖器308 = D4 = ((mO*D0十ml*Di十m2*D2 m3*D3 mP*P) $ mQ*Q)
累積緩沖器306 = (D。 D2 D3 P)
處理繼續(xù)執(zhí)行方框812。在方框812,將恢復后的D4的數(shù)據(jù)存回 到共享存儲器206。處理繼續(xù)執(zhí)行方框814。
在方框814,將與包括ALU314的數(shù)據(jù)處理路徑相關聯(lián)的配置寄 存器400配置成XOR和累積;將與包括ALU 316的數(shù)據(jù)處理路徑相 關聯(lián)的配置寄存器400配置成使來自該路徑的結果不能返回到累積緩 沖器。D4數(shù)據(jù)流入ALU314、 316。 ALU 314中的操作結果、即D4 (累積緩沖器306的內(nèi)容)是恢復后的D5,它^皮轉發(fā)給拉FIFO并回 到累積緩沖器30.6。即,執(zhí)行以下操作
D5 = (D0 e Di @ D2 $ D3 P ) @ D4
結果存儲在累積緩沖器306中。在方框816,將數(shù)據(jù)盤D5的恢復
23后的數(shù)據(jù)返回到共享存儲器。
除了結合圖6-8描述的執(zhí)行雙盤故障恢復、部分P和Q更新、以 及P和Q校驗子計算的方法之外,加速單元還可用于通過將配置寄存 器配置成執(zhí)行恢復操作來加速恢復數(shù)據(jù)盤和P盤雙故障或數(shù)據(jù)盤和Q 盤雙故障。在P和Q盤都發(fā)生故障的情況下,可利用結合圖7描述的 方法來恢復P和Q盤。
除了那些涉及RAID-6系統(tǒng)的P、 Q和數(shù)據(jù)盤的恢復以及P和Q 校驗子的計算的數(shù)據(jù)處理操作之外,加速單元還可用于加速其它數(shù)據(jù) 處理操作。
圖9示出執(zhí)行比較檢查的方法的實施例,該方法可在如圖2所示 的加速單元中執(zhí)行。比較功能比較兩個數(shù)據(jù)塊(A和B)并檢查數(shù)據(jù) 塊A等于數(shù)據(jù)塊B。將結合圖2和圖3描述圖9。
在方框900,將ALU 314的配置寄存器400配置成執(zhí)行比較操作。 將ALU 314的配置寄存器400的計算模式字段410設置成XOR,并 將累積字段408配置成累積結果。將ALU 316的配置寄存器400的計 算模式字段410設置成不累積結果的NULL。處理繼續(xù)執(zhí)行方框902。
在方框902,將來自第一數(shù)據(jù)塊的數(shù)據(jù)('A數(shù)據(jù),)加載到累 積緩沖器306中。處理繼續(xù)執(zhí)行方框904。
在方框904,來自第二數(shù)椐塊的數(shù)據(jù)('B數(shù)據(jù),)從共享存儲 器206流入加速單元208,并且在逐個字節(jié)基礎上執(zhí)行XOR操作,其 中A數(shù)據(jù)存儲在累積緩沖器306中。處理繼續(xù)執(zhí)行方框906。
在方框906,在B數(shù)據(jù)流過ALU 314之后,讀取與ALU 314相 關聯(lián)的狀態(tài)寄存器500。與ALU314相關聯(lián)的狀態(tài)寄存器500中的結 果零檢查字段502的狀態(tài)指示是否檢測到錯誤比較。并且,數(shù)據(jù)塊中 的第 一個錯誤比較(miscompare)字節(jié)的字節(jié)地址可存儲在狀態(tài)寄存器 500的字節(jié)地址字段504中。
圖10是用于執(zhí)行結果非零檢查的方法的實施例,該方法可在如 圖2所示的加速單元208中執(zhí)行。在方框1000,將ALU 314的配置寄存器400配置成執(zhí)行結果非 零檢查操作。將ALU 314的配置寄存器400的計算4莫式字段410設置 成MJLL,將保持狀態(tài)字段404設置成更新狀態(tài),并將累積字段408 配置成不累積結果。將ALU 316的配置寄存器400的計算才莫式字段 410也設置成不累積結果的NULL。處理繼續(xù)執(zhí)行方框1002。
在方框1002,來自數(shù)據(jù)塊的數(shù)據(jù)從共享存儲器流入ALU 314、 316,并且在逐個字節(jié)基礎上執(zhí)行NULL操作,其中沒有數(shù)據(jù)存儲在 累積緩沖器306中。
在方框1004,在數(shù)據(jù)流過ALU314、 316之后,讀取與ALU314 相關聯(lián)的狀態(tài)寄存器500。與ALU 314相關聯(lián)的狀態(tài)寄存器500中的 結果零檢查字段502的狀態(tài)指示是否檢測到結果非零。并且,塊中的 第一個非零結果字節(jié)的字節(jié)地址可存儲在狀態(tài)寄存器500的字節(jié)地址 字段504中。
在另一個實施例中,可將一條數(shù)據(jù)處理路徑中的ALU配置成執(zhí) 行結果非零檢查,而將另一條數(shù)據(jù)處理路徑中的ALU配置成執(zhí)行比 豐交檢查??蓪ο嗤瑪?shù)據(jù)塊并行執(zhí)行這兩個操作。
增強的字節(jié)搜索功能可在公共密鑰加密系統(tǒng)(PKCS)和隨機數(shù) 生成器(RNG)中用于例如在形式為0*(^01*的消息的起始端搜索零 字節(jié)或?qū)ふ易兞磕J?。在后一種情況下,變量模式的位置指示格式良 好的消息正文的起始端。對格式良好的消息正文的起始端的搜索非常 緩慢,并且在微引擎204中執(zhí)行時需要大量的碼空間。
圖11是根據(jù)本發(fā)明原理包括用于加速RAID-6計算的加速單元的 實施例的系統(tǒng)的框圖。
系統(tǒng)1100包括主機中央處理單元(CPU) 1101、存儲器控制器集 線器(MCH) 1102和I/O控制器集線器(ICH) 1104。 MCH 1102包 括用于控制CPU 1101和存儲器202之間的通信的存儲器控制器1106。 CPU 1101和MCH 1102通過系統(tǒng)總線1116進行通信。
主機中央處理單元(CPU) 1101可以是諸如下列的多個處理器中的任何一種處理器單核Intel Pentium IV⑧處理器,單核Intel Celeron 處理器,⑧XScale處理器,或諸如Intel Pentium D、 Intel②Xeon㊣處 理器或Intel Core Duo處理器的多核處理器,或任何其它類型處理 器。
存儲器202可以是動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存 取存儲器(SRAM)、同步動態(tài)隨機存取存儲器(SDRAM)、雙倍數(shù) 據(jù)速率2 (DDR2 ) RAM或Rambus動態(tài)隨機存取存儲器(RDRAM) 或任何其它類型存儲器。
ICH 1104可以利用諸如直接媒體接口 (DMI)的高速芯片-芯片 互連1114耦合到MCH 1102。 DMI支持經(jīng)由兩個單向線道的2千兆 位/秒的并行傳輸速率。
ICH 1104可包括用于加速耦合到ICH 1104的RAID陣列100的 RAID計算的加速單元208。 ICH 1104可以利用串行存儲協(xié)議通過存 儲協(xié)議互連1118與RAID陣列100通信??梢岳脴藴蚀羞B接存儲 協(xié)議集通過存儲協(xié)議互連1118在ICH 1104和RAID陣列100之間交 換封裝在幀中的命令、數(shù)據(jù)和狀態(tài)信息。
有多種串行存儲協(xié)議集,例如串行連接小型計算機系統(tǒng)接口 (SAS )和串行高級技術附件(SATA) 。 SATA協(xié)議的版本在由Serial ATA工作組于2003年1月7日發(fā)布的"Serial ATA: High Speed Serialized AT Attachment" (l.Oa版)中進行了描述。SAS協(xié)議的版 本在由美國國家標準協(xié)會(ANSI)于2003年9月18日發(fā)布的 "Information Technology—Serial Attached SCSI—1.1," Working Draft American National Standard of International Committee For Information Technology Standards (INCITS) T10 Technical Committee, Project T10/1562-D (版本l)中進行了描述。光纖信道(FC)協(xié)議的版本在 美國國家標準協(xié)會(ANSI) Standard Fibre Channel Physical and Signaling Interface-2 (FC-FS-2)( 2005年8月9日規(guī)范)中進行了描述。
本領域技術人員將明白,在本發(fā)明的實施例中涉及的方法可在包括計算機可用介質(zhì)的計算機程序產(chǎn)品中實施。例如,該計算機可用介
質(zhì)可由只讀存儲器設備(如致密盤只讀存儲器(CD ROM)盤或常規(guī) ROM設備)或計算機盤組成,該只讀存儲器設備或計算機磁盤上存 儲了計算機可讀程序代碼。
盡管參照其實施例特別示出和描述了本發(fā)明的實施例,^f旦本領域 技術人員將了解,在不背離隨附權利要求所涵蓋的本發(fā)明實施例的范 圍的情況下,可以在其中作出各種形式和細節(jié)的改變。
權利要求
1、一種裝置,包括用于接收數(shù)據(jù)塊的第一數(shù)據(jù)處理路徑,所述第一數(shù)據(jù)處理路徑包括用于存儲所述數(shù)據(jù)塊的第一累積緩沖器和用于對所述數(shù)據(jù)塊執(zhí)行第一操作的第一算術邏輯單元;以及用于接收所述數(shù)據(jù)塊的第二數(shù)據(jù)處理路徑,所述第二數(shù)據(jù)處理路徑包括用于存儲所述數(shù)據(jù)塊的第二累積緩沖器和用于對所述數(shù)據(jù)塊執(zhí)行第二操作的第二算術邏輯單元,所述第一數(shù)據(jù)處理路徑和所述第二數(shù)據(jù)處理路徑共享乘法器,所述乘法器對所述數(shù)據(jù)塊執(zhí)行乘法操作,所述數(shù)據(jù)處理路徑中的每條數(shù)據(jù)處理路徑并行處理所述數(shù)據(jù)塊以在所述數(shù)據(jù)塊經(jīng)過所述數(shù)據(jù)處理路徑的單次傳遞中提供第一結果數(shù)據(jù)塊和第二結果數(shù)據(jù)塊。
2、 如權利要求1所述的裝置,其中所述數(shù)據(jù)塊是獨立磁盤冗余 陣列(RAID)條帶中的數(shù)據(jù)塊,所述第一操作用于計算所述條帶的P 校驗子,并且所述第二操作用于計算所述條帶的Q校驗子。
3、 如權利要求1所述的裝置,其中所述數(shù)據(jù)塊是獨立磁盤冗余 陣列(RAID )條帶中的數(shù)據(jù)塊,所述RAID條帶包括P校驗子塊和Q 校驗子塊,通過利用所述RAID條帶中的所述P校驗子塊、所述Q校 驗子塊和其它數(shù)據(jù)塊,所述第一操作恢復第一數(shù)據(jù)塊,并且所述第二 操作恢復所述RAID條帶中的第二塊。
4、 如權利要求1所述的裝置,其中所述數(shù)據(jù)塊是獨立磁盤冗余 陣列(RAID)條帶中的數(shù)據(jù)塊,為新數(shù)據(jù)塊更新所述RAID條帶,所 述第一操作利用所述條帶的舊P校驗子塊、舊數(shù)據(jù)塊和新數(shù)據(jù)塊來計 算所述條帶的新P校驗子。
5、 如權利要求4所述的裝置,其中所述第二操作利用所述條帶 的舊Q校驗子塊、所述舊數(shù)據(jù)塊和所述新數(shù)據(jù)塊來計算新Q校驗子。
6、 如權利要求5所述的裝置,其中在計算所述新Q校驗子的同時將所述新P校驗子移動到共享存儲器。
7、 如權利要求1所述的裝置,其中所述第一算術邏輯單元具有 第 一可編程多項式,并且所述第二算術邏輯單元具有第二可編程多項 式。
8、 如權利要求1所述的裝置,其中所述第一操作對所述第一數(shù) 據(jù)塊和笫二塊執(zhí)行,所述第一數(shù)據(jù)塊和所述第二塊包含在6級獨立磁 盤冗余陣列(RAID)條帶中,結果存儲在所述第一累積緩沖器中用于 與另 一塊進行隨后的操作。
9、 一種方法,包括將數(shù)據(jù)塊存儲在第 一數(shù)據(jù)處理路徑中的第 一 累積緩沖器中; 將所述數(shù)據(jù)塊存儲在第二處理路徑中的第二累積緩沖器中,所述 第一處理路徑和所述第二處理路徑共享乘法器;通過第一算術單元對所述數(shù)據(jù)塊執(zhí)行第一操作;以及通過第二算術單元對所述數(shù)據(jù)塊執(zhí)行第二操作,所述第 一數(shù)據(jù)處理路徑和所述第二數(shù)據(jù)處理路徑并行處理所述數(shù)據(jù)塊以在所述數(shù)據(jù) 塊經(jīng)過所述數(shù)據(jù)處理路徑的單次傳遞中提供第 一 結果數(shù)據(jù)塊和第二 結果數(shù)據(jù)塊。
10、 如權利要求9所述的方法,其中所述數(shù)據(jù)塊是獨立磁盤冗余 陣列(RAID)條帶中的數(shù)據(jù)塊,所述第一操作計算所述條帶的P校 驗子,并且所述第二操作計算所述條帶的Q校驗子。
11、 如權利要求9所述的方法,其中所述數(shù)據(jù)塊是獨立磁盤冗余 陣列(RAID )條帶中的數(shù)據(jù)塊,所述RAID條帶包括P校驗子塊和Q 校驗子塊,通過利用所述RAID條帶中的所述P校驗子塊、所述Q校 驗子塊和其它數(shù)據(jù)塊,所述第一操作恢復第一數(shù)據(jù)塊,并且所述第二 操作恢復所述RAID條帶中的第二塊。
12、 如權利要求9所述的方法,其中所述數(shù)據(jù)塊是獨立磁盤冗余 陣列(RAID)條帶中的數(shù)據(jù)塊,為新數(shù)據(jù)塊更新所述RAID條帶,所 述第一操作利用所述條帶的舊P校驗子塊、舊數(shù)據(jù)塊和新數(shù)據(jù)塊來計算所述條帶的新P校驗子。
13、 如權利要求12所述的方法,其中所述第二操作利用所述條 帶的所述舊Q校驗子塊、所述舊數(shù)據(jù)塊和所述新數(shù)據(jù)塊來計算新Q校 驗子。
14、 如權利要求13所述的方法,其中在計算所述新Q校驗子的 同時將所述新P校驗子移動到共享存儲器。
15、 如權利要求9所述的方法,其中所述笫一算術邏輯單元具有 第 一可編程多項式,并且所述第二算術邏輯單元具有第二可編程多項 式。
16、 如權利要求9所述的方法,其中所述第一操作對存儲在所述 第 一 累積緩沖器沖的所述數(shù)據(jù)塊和由所述第 一數(shù)據(jù)處理路徑接收的 第二數(shù)據(jù)塊執(zhí)行才莫式匹配。
17、 如權利要求9所述的方法,其中所述第一操作對所接收的數(shù) 據(jù)塊執(zhí)行非零結果操作。
18、 如權利要求9所述的方法,其中所述笫一操作對所述第一數(shù) 據(jù)塊和第二塊執(zhí)行,所述第一數(shù)據(jù)塊和所述第二塊包含在6級獨立磁 盤冗余陣列(RAID)條帶中,結果存儲在所述第一累積緩沖器中用于 與另 一塊進行隨后的操作。
19、 一種包含具有相關聯(lián)的信息的機器可訪問介質(zhì)的物品,其中 所述信息在被訪問時使機器執(zhí)行以下操作將數(shù)據(jù)塊存儲在第 一數(shù)據(jù)處理路徑中的第 一 累積緩沖器中; 將所述數(shù)據(jù)塊存儲在第二處理路徑中的第二累積緩沖器中,所述 第一處理路徑和所述第二處理路徑共享乘法器;通過第一算術單元對所述數(shù)據(jù)塊執(zhí)行第一操作;以及通過第二算術單元對所述數(shù)據(jù)塊執(zhí)行第二操作,所述第 一數(shù)據(jù)處理路徑和所述第二數(shù)據(jù)處理路徑并行處理所述數(shù)據(jù)塊以在所述數(shù)據(jù)塊經(jīng)過所述數(shù)據(jù)處理路徑的單次傳遞中提供第一結果數(shù)據(jù)塊和第二結果數(shù)據(jù)塊。
20、 一種系統(tǒng),包括具有多個串行連接小型計算機系統(tǒng)接口 (SAS)磁盤驅(qū)動器的獨 立磁盤冗余陣列(RAID)系統(tǒng);以及用于為所述RAID系統(tǒng)處理數(shù)據(jù)的加速單元,所述加速單元包括 用于接收數(shù)據(jù)塊的第一數(shù)據(jù)處理路徑,所述第一數(shù)據(jù)處理路 徑包括用于存儲所述數(shù)據(jù)塊的第 一 累積緩沖器和用于對所述數(shù)據(jù)塊 執(zhí)行第一操作的第一算術邏輯單元;以及用于接收所述數(shù)據(jù)塊的第二數(shù)據(jù)處理路徑,所述第二數(shù)據(jù)處 理路徑包括用于存儲所述數(shù)據(jù)塊的第二累積緩沖器和用于對所述數(shù) 據(jù)塊執(zhí)行第二操作的第二算術邏輯單元,所述第 一數(shù)據(jù)處理路徑和所 述第二數(shù)據(jù)處理路徑共享乘法器,所述乘法器對所述數(shù)據(jù)塊執(zhí)行乘法以在所述數(shù)據(jù)塊經(jīng)過所述數(shù)據(jù)處理路徑的單次傳遞中提供第一結果 數(shù)據(jù)塊和第二結果數(shù)據(jù)塊。
全文摘要
一種加速單元分擔來自處理器的計算密集型任務。該加速單元包括兩條數(shù)據(jù)處理路徑,每條數(shù)據(jù)處理路徑具有一個算術邏輯單元并共享單個乘法器單元。每條數(shù)據(jù)處理路徑可以對相同數(shù)據(jù)并行執(zhí)行可配置的操作。提供特殊的復用器路徑和指令以允許在數(shù)據(jù)經(jīng)過加速單元的單次傳遞中在條帶上計算P型和Q型校驗子。
文檔編號G06F3/06GK101611376SQ200780051548
公開日2009年12月23日 申請日期2007年12月6日 優(yōu)先權日2006年12月19日
發(fā)明者G·沃爾里奇, J·弗拉尼奇, K·亞普, R·奧塔維, V·戈帕爾, W·費哈利 申請人:英特爾公司