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