具有模式匹配的高性能raid-6系统体系结构的制作方法

文档序号:6457111阅读:162来源:国知局
专利名称:具有模式匹配的高性能raid-6系统体系结构的制作方法
技术领域
本公开涉及独立磁盘冗余阵列(RAID)系统,具体来说,涉及 RAID-6系统的计算加速。
背景技术
出于可靠性、容量或性能的目的,独立磁盘冗余阵列(RAID)将 多个物理硬盘驱动器组合成逻辑驱动器。因此,取代多个物理硬盘驱 动器,操作系统看到单个逻辑驱动器。本领域技术人员众所周知,有 很多称为RAID级的标准方法用来在RAID系统的这些物理硬盘驱动 器上分配数据。
例如,在0级RAID系统中,通过将数据分成多个块并将每个块 写入到独立的硬盘驱动器来在硬盘驱动器物理阵列上将数据条带化。 通过将负载散布到多个硬盘驱动器来提高输入/输出(1/0)性能。尽 管O级RAID提高了 1/0性能,但它不提供冗余度,因为如果一个硬 盘驱动器发生故障,则所有数据都会丟失。
5级RAID系统通过在至少三个硬盘驱动器上将数据和奇偶校验 信息条带化来提供高级冗余度。在发生故障的情况下,将数据条带化 与分布式奇偶校验相结合来提供恢复路径。6级RAID系统通过允许 恢复双盘故障而提供甚至高于5级RAID系统的高级冗余度。在6级 RAID系统中,为数据生成称为P校验子(syndrome )和Q校验子的 两个校验子,并将它们存储在RAID系统的硬盘驱动器上。P校验子 是通过为条带(stripe)中的数据(数据块(长条)、P校验子块和Q校 验子块)简单计算奇偶校验信息而生成的。Q校验子的生成需要伽罗 瓦域(Galois Field)乘法,并且如果磁盘驱动器发生故障,则会比较
6复杂。在盘恢复操作期间执行的恢复数据和/或P和/或Q校验子的重 新生成方案需要伽罗瓦域乘法和逆运算。
重新生成通常是通过利用查找表进行计算或通过利用限于特定 多项式的多个伽罗瓦域乘法器来执行的。


随着以下详细描述的继续,参照附图,要求权利的主题的实施例 的特征将变得显而易见,附图中,类似的数字描绘类似的部分,并且
其中
图1是示出RAID-6阵列的实施例的框图,图中示出多个条带, 每个条带包括在硬盘阵列上条带化的数据块(长条)与P和Q校验子;
图2是根据本发明原理包括用于加速计算的加速单元的系统的实 施例的框图3是如图2所示的加速单元中的数据处理单元的实施例的框
图4是如图3所示的数据处理单元的其中任何一条数据处理路径 的配置寄存器的实施例的框图5是如图3所示的数据处理单元的其中任何一条数据处理路径 的状态寄存器的实施例的框图6示出利用如图2所示的加速单元和如图3所示的数据处理单 元并行计算P和Q核_验子的方法的实施例;
图7示出用于在如图1所示的RAID-6阵列中执行部分P和Q校 验子计算的方法的实施例。
图8示出用于在如图1所示的RAID-6阵列中恢复两个数据盘的 损失的方法的实施例。
图9示出用于执行比较检查的方法的实施例,该方法可在如图2 所示的力口速单元中执行。
图10示出用于执行结果非零检查的方法的实施例,该方法可在如图2所示的加速单元中执行;以及
图11 ^^艮据本发明原理包括用于加速RAID-6计算的加速单元的 实施例的系统的框图。
尽管将参照要求权利的主题的说明性实施例继续进行以下详细 描述,但是本领域技术人员将明白其许多备选、修改和变换。因此, 希望广义地看待要求权利的主题,并且要求权利的主题只可如随附权 利要求中所述地那样进行定义。
具体实施例方式
图1是示出RAID-6阵列100的实施例的框图,其中示出多个条 带,每个条带包括在硬盘阵列150上条带化的数据块(长条)与P和 Q校验子。在所示实施例中,RAID阵列具有五个硬盘150:三个数据 盘和2个校验子(P, Q)盘。通过利用块级条带化配合分布在组成硬 盘上的P和Q校验子来以循环方式将数据写入到RAID-6阵列。诸如 分割成块的文件的连续数据可分布在条带(例如,水平条带0)上, 其中块之一存储在三个数据盘102上的数据块102、 104、 106中。为 水平条带0中的数据块102、 104、 106计算的P和Q ^^交验子存储在相 应的P块130和Q块132中。P和Q校验子块存储在每个条带的不同 硬盘150上。在一个实施例中, 一个条带中的每个块中有512个字节。
P校验子可通过执行"异或"(XOR)操作(opemtion)来生成。 XOR是对两个操作数的逻辑操作,如果其中只有一个操作数具有逻辑 值'1,,则它产生逻辑值'1,。例如,具有值'11001010,的第一 操作数和具有值'10000011,的第二操作数的XOR提供具有值
'01001001,的结果。如果存储第一操作数的硬盘驱动器发生故障, 则可通过对第二操作数和结果执行XOR操作来恢复第 一操作数。
P校验子是利用形(XOR)操作在条带上计算获得的数据(D)的筒 单奇偶校验。在具有n个数据盘的系统中,P校验子的生成由下式1 表示P = D0 @ Di①D2……e Dj^ (式1 )
Q校验子的计算需要利用伽罗瓦域多项式(g)进行乘法("。以非常 高的性能对8位(字节)伽罗瓦域多项式执行算术操作。多项式是只 利用加法、减法、乘法和非负整数指数来组合有限数量的常量和变量
的表达式。
一个本原多项式是x8 + xA + xS+xS+l,它可用十六进制表
示法以1D表示。多项式的伽罗瓦域(GF)操作又称为GF(^S)算术。 在具有n个数据盘的系统中,Q校验子的生成由下式2表示
Q = g0*D0 g"Di十g2*D2...…十gn-"D^ (式2 )
在条带基础上执行逐字节伽罗瓦域操作,其中块中的每个字节在 计算上独立于其它字节。逐字节伽罗瓦域操作可以适应多达 255 (2A8-l)个数据盘。
图2是根据本发明原理包括加速单元的实施例以加速计算的系统 200的框图。
系统包括用于存储工作请求210的存储器202和用于处理工作请 求210的状态机(微引擎)204。状态机204通过共享存储器206向 加速单元208发出指令。基于从状态机204执行的指令,加速单元208 可对8位伽罗瓦域多项式执行算术操作。
在一个实施例中,状态机204可以是诸如可从Intel公司购得的 IXP 2400处理器的处理器中的多个微引擎之一。加速单元208分担 状态机(微引擎)204计算8位伽罗瓦域多项式的负担。
存储器202和共享存储器206可以是动态随机存取存储器 (DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存 储器(SDRAM)、双倍数据速率2 (DDR2 ) RAM或Rambus动态随 机存取存储器(RDRAM)或任何其它类型存储器。
加速单元208包括用于对数据执行操作的数据处理单元218。基 于存储在存储器中的工作请求210,状态机204可以使加速单元208 承担RAID阵列操作的计算。在一个实施例中,RAID阵列可以是如 图所示的RAID-6阵列100。加速单元208还包括控制寄存器212、状态寄存器214和加速单元状态机216。
图3是如图2所示的加速单元208中的数据处理单元218的实施 例的框图。在所示实施例中,数据处理单元218包括两个算术逻辑单 元(ALU) 314、 316。 ALU对操作数执行算术和逻辑操作。由每个独 立ALU 314、 316执行的逻辑或算术操作可通过与ALU 314、 316相 关联的配置寄存器212 (图2)进行配置。
在一个实施例中,每个ALU 314、 316可才丸行逐字节算术和逻辑 操作。每个ALU314、 316可包括XOR阵列与比较和零检查功能,并 且可以在数据经过数据处理单元218的单次传递中独立执行P或Q校 验子计算。
在一个实施例中,每个ALU 314、 316具有64位(8字节)数据 路径,并且包括8个可配置的伽罗瓦域(GF)字节片(slice)。每个GF 字节片在8字节数据路径中对一个字节进行操作。每个ALU314、 316 在64位数据路径中同时对8个字节进行操作。这允许利用来自每个 盘块的合适的字节并行执行盘块操作。每个ALU 314、 316具有可存 储多达512个字节的相应的独立累积緩冲器306、 308。 ALU314、 316 共享GF(8)逐字节乘法器322。累积缓冲器314、 316可用于存储处理 单元218的ALU 314、 316和乘法器322中的才乘作的中间结果。
数据处理单元218具有两条独立的数据处理路径。 一条数据处理 路径包括累积緩冲器306和ALU 314。另 一条数据处理路径包括累积 緩冲器308和ALU316。
两条数据处理路径共享乘法器322。如果两条数据处理路径需要 同时执行通用乘法-累积功能,则在ALU 314、 316之间切换乘法器322 的使用。尽管吞吐量有所减小,但加速单元208可允许在来自共享存 储器206的数据的单次传递中利用单个通用乘法-累积来执行双盘恢 复。
加速单元208在存储应用较少性能损失的情况下有效利用单个乘 法器322,例如计算P和Q校验子和执行数据恢复。但是,加速单元
10208不限于用于存储应用。加速单元208可用于涉及生成8位字段的 任何8位多项式的计算。此外,每个ALU 314、 316可对它自己的多 项式独立工作。'
数据处理单元218包括多个复用器。每个复用器基于选择器的状 态将两个或两个以上输入的信息编码(或多路复用)为单个输出。例 如,复用器302、 304允许选择将存储在每个累积緩冲器306、 308中 的数据的源。数据源可以是从共享存储器206 (图2)接收的推数据, 或是从ALU314、 316或乘法器322输出的中间结果。复用器310、 312允许为到相应ALU 314、 316的操作数之一选择源。操作数源可 以来自累积緩冲器306或累积緩冲器308。
复用器318允许为乘法器322选择操作数之一。操作数源是ALU 314或ALU316中的操作的结果、从共享存储器接收的推数据、或存 储在累积緩沖器306或累积緩冲器308中的数据。
复用器320允许选择将用于通过乘法器322执行乘法操作的多个 多项式(P0LY1、 P0LY2)之一。这些多项式是可编程的,并且经过 相应ALU 314、 316的每条处理路径可具有不同的可编程多项式。例 如,在一个实施例中,P0LY1可以是与ALU 314相关联的可编程多 项式,而P0LY2可以是与ALU316相关联的可编程多项式。复用器 324允许选择将用于通过乘法器322执行乘法操作的多个乘数系数 (Ml, M2)之一 。例如,乘数系数(multiplier coefficient)Ml可以与经 过ALU314的处理路径相关联,而乘数系数M2可以与经过ALU316 的处理路径相关联。
复用器328、 332允许选择从相应ALU 314、 316或来自乘法器 322的XOR 330输出的当前操作的结果。数据处理路径之一 (包括 ALU 314或ALU 316)的结果是将返回给共享存储器的最终结果,或 是将存储在相应累积緩冲器306、 308中的中间结果。
64位XOR 330和复用器326允许数据处理路径中的计算包含将 在该数据处理路径中执行的乘法操作和XOR操作。基于通过各个复用器的输出选择,每条数据处理路径可包括ALU操作(ALU 314、 316 )、乘法操作(乘法器322 )和/或异或(XOR )操作(XOR 330 )。
结合图2论述的配置寄存器212包括用于如图3所示的每条独立 的数据处理路径的配置寄存器。
图4是如图3所示的数据处理单元218的其中任何一条数据处理 3各径的配置寄存器400的实施例的框图。在一个实施例中,配置寄存 器400具有可用于管理数据处理路径、即管理加速功能的32个位。 在所示实施例中,配置寄存器400可包括一个或多个保留位402。
配置寄存器400包括保持状态字段404,该字段404可包括指示 在操作之后是保持还是清除状态寄存器内容的一个位。例如,保持状 态字段404可以是单个位,该单个位可以设置成逻辑'1,以保持状 态,或者可以清零,即设置成逻辑'0,以在下一个操作之前清除状 态寄存器的内容,以便通过下一个操作来更新状态。
配置寄存器400中的源字段406可以配置成通过复用器310、 312 来为ALU 314、 316选择数据源。例如,将在ALU314中执行的操作 的数据源可以是累积緩冲器306或累积緩冲器308。在一个实施例中, 源字段406具有设置或清零成通过复用器310、 312选择ALU操作数 的源的一个位。
配置寄存器404中的累积字段408选择是否将通过数据处理单元 218的数据处理路径的结果引导回到相应累积緩冲器。
配置寄存器400中的计算^t式字段410允许将每条数据处理路径 配置成执行不同的操作。计算模式字段410的状态可用于控制经过复 用器328、 332到累积緩冲器306、 308和/或复用器334的数据路径。 在一个实施例中,计算才莫式字段410具有允许选择8种操作之一的3 个位。这些操作如下表l所示,其中具有相关联的计算冲莫式和结果模式
000
001
010
011
100
101
110
111
操作
NULL Basic XOR GF8 XOR FindM个字节 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执行模式100、 101 、 110和111的XOR操作。 例如,对于才莫式100,复用器326选择64,h0,并且数据处理路径在乘 法器322中执行GF8乘法操作,操作结果(M Data )从64位XOR 330 输出。稍后将更详细地描述表l中列出的其它才莫式。
配置寄存器400允许每条数据处理路径配置不同的乘数系数和伽 罗瓦域(GF )多项式用于在乘法器322中执行乘法操作。经过乘法器 332的路径由两条数据处理路径(即,经过ALU 314的路径和经过 ALU 316的路径)共享。复用器320、 324允许乘法器用于为处理路 径之一选择的当前操作。
乘数系数字段412允许配置多个乘数系数(M)之一。通过复用 器324为利用乘法器322进行当前操作的相应数据处理路径输入为相 应数据处理路径配置的乘数系数(Ml, M2)。在一个实施例中,乘 数系数字段具有8个位。
GF多项式字段414允许为数据处理路径配置多个多项式之一。 在一个实施例中,GF多项式字l殳具有8个位。通过复用器320为当 前利用乘法器322进行当前操作的相应数据处理路径输入为相应数据 处理路径配置的GF多项式(POLY1, POLY2)。在一个实施例中, 将GF多项式字段414设置成'1D,(十六进制(hex))。但是, GF多项式字段414允许配置其它GF多项式。
13加速单元208可以对任何GF("S)多项式字段进行操作,并且优 化成以功率高效的方式在常用的发生器ID (hex)上工作。加速单元 208允许通过每个周期处理8个字节的单个乘法器322来快速实现与 任意系数的相乘。通过对8个字节并行执行乘法来增加吞吐量。
结合图3论述的特殊复用器路径和指令使得加速单元208能够通 过叠加从共享存储器206进入加速单元208的数据移动和从加速单元 208移出进入共享存储器206的数据移动来对部分(随机)写提供高 性能。
多条路径还减少了浪费的多次数据传递,即,将相同数据从共享 存储器206传递到数据处理单元218以执行不同操作。
加速单元20'8在无需增加显著额外逻辑的情况下提供了高性能。 在一个实施例中,选择累积緩冲器306、 308以提供最小存储器大小。 有效利用单个大型乘法器322,而不会显著损失存储应用的性能。加 速单元208还在支持生成8位字段的任何8位多项式方面具有灵活性。 此外,每个ALU314、 316可对不同的多项式独立工作。
图5是如图3所示的数据处理单元218的其中任何一条数据处理 路径的状态寄存器500的实施例的框图。经过数据处理单元218中的 相应ALU 314、 316的每条数据处理路径包括相应的状态寄存器500。 在所示实施例中,状态寄存器500包括结果零检查字段502和用于存 爿賭第一个非零结果字节的字节地址的字节地址字段504。结果零检查 字段502可以是根据操作结果而设置或清零的一个位字段。字节地址
在一个实施例中,如图2所示的加速单元208为RAID 6条带写 操作加速对P和Q校验子的计算。在加速单元208中对存储在共享存 储器206中的条带的数据块并行计算P和Q校验子。通过加速单元 208从共享存储器206接收条带的数据块。 一条数据处理路径具有它 相应的配置成计算该条带的P校验子的ALU 314、 316,而另一条数 据处理路径具有它相应的配置成计算相同条带的Q校验子的ALU。如前所述,通过对将存储在n个数据盘驱动器上的条带中的数据 块执行XOR操作来计算P校验子,并用下式1表示P校验子
P = D0 @ Di D2……十Dn—i (式1 )
参照图1,条带包括一组大小相同的可称为长条(strip)的数据块 102、 104、 106。对于每个条带,有两个检验和,即P和Q校验子130、 132。按每个条带的数据块中的数据字节计算P和Q校验子。
可利用因式分解来计算全条带Q校验子。每个系数gi是8位多项 式。也能以1周期吞吐量(8个字节)在单次传递中利用加速单元208 来有效执行通用乘法。通过在乘法器322中把将存储在n个盘驱动器 上的数据块乘以(*)伽罗瓦域(GF)多项式(g)并在XOR330中对乘法 操作的结果执行XOR操作来计算Q校验子,如下式2所示
Q = g°*DQ @ g"D! @ g2*D2…… gD-"Dn.! (式2 )
在本发明的实施例中,对相同数据并行计算P和Q校验子。在数 据经过加速单元208的单次传递中执行这两个计算,优化了数据移动, 并节省了系统总线带宽(即,到/来自共享存储器206)。因此,加速 单元208提高了 P和Q校验子的计算的性能。
图6示出利用如图2所示的加速单元208和如图3所示的数据处 理单元218并行计算P和Q 4爻验子的方法的实施例。
如前所述,为跨越多个硬盘的条带中的数据块计算P和Q校验子。 在一个实施例中,条带中的每个数据块(长条)可存储512个字节。
在方框600,通过将相应配置寄存器400中的配置数据存储在加 速单元208中来配置每条数据处理路径。经过ALU 314的第一数据处 理路径可以配置成计算P校验子,而经过ALU316的第二数据处理路 径可配置成对相同数据并行计算Q校验子。
首先,将每条数据处理路径的相应的加速单元配置寄存器400配 置成将数据从共享存储器206 (图2)移动到相应的累积緩冲器306、 308。将计算模式字段410设置成NULL,将累积字段408设置成'1, 以在累积緩冲器306、 308中累积推数据,并将保持状态位设置成'1,以保持相应状态寄存器500的内容。将相应配置寄存器400中的所有 其它字段设置成默认值,将GF多项式字段414设置成默认值1D (hex),将乘数系数字段412设置成默认值'0,,并将累积緩冲器 源字段408设置成与A1U 314、 316相关联的相应的累积緩沖器306 、 308。
在一个实施例中,通过加速器状态机216来执行利用存储在共享 存储器206中的配置寄存器加载加速单元配置寄存器400的指令。处 理继续执行方框602。
在方框602,通过相应配置寄存器400将每条数据处理路径配置 成将来自共享存储器206(图2 )的数据块存储在相应累积緩冲器306、 308中。通过加速器状态机216向两条数据处理路径发出写指令以移 动来自共享存储器206的数据并将它存储在累积缓冲器306、 308中。 存储在累积緩冲器306、 308中的数据是条带中的第一盘驱动器的第 一数据块。基于配置寄存器400的状态,从共享存储器206接收的推 数据进入ALU314、 316。因为配置寄存器400中的计算模式字段410 为NULL,所以不在ALU314、 316中才丸行任何才喿作。未经修改的数 据从ALU314、 316流出经过复用器328、 332返回以经过复用器302、 304存储在累积緩冲器306、 308中。处理继续才丸行方框604。
在方框604,在将条带的第一数据块存储在累积緩冲器306、 308 中之后,将相应数据处理路径的配置寄存器400配置成执行P和Q校 验子计算。在一个实施例中,基于配置寄存器的状态,将ALU 314配 置成对条带执行P校验子计算,并将ALU 316配置成对条带执行Q 校验子操作。
将ALU 314配置成计算P校验子,其中在相关联的配置寄存器 400中,将计算才莫式字段410设置成"XOR",将累积字段408设置 成累积,并将保持状态字段404设置成'保持,。如之前所述,将配 置寄存器400中的所有其它字段设置成默认值。
将ALU 316配置成计算Q校验子,其中在相关联的配置寄存器400中,将计算模式字段410设置成"mul data before XOR",将累积 字段408设置成累积,并将保持状态字段404设置成保持状态。处理 继续执行方框606。
在方框606,基于相应配置寄存器400的状态,每个ALU 314、 316对两个操作数执行所配置的操作。第一个操作数存储在相应累积 緩冲器306、 308中。另一个操作数通过推数据从共享存储器206流 出。通过相应ALU314、 316执行的操作的结果存储在相应累积緩冲 器306、 308中。
例如,为了计算P校验子,在ALU314中对通过复用器310从累 积緩冲器306接收的存储在累积緩冲器306中的数据和从共享存储器 206检索的推数据执行XOR操作。存储在累积緩沖器306中的数据(操 作数)可以是来自第一盘驱动器的条带的第一长条。从共享存储器206 流出的其它数据(操作数)可以是来自第二盘驱动器的条带的第二长 条。因为将配置寄存器400中的累积字段408设置成累积,所以ALU 314中的操作结果通过复用器328和302存回到累积緩冲器306。处 理继续执行方框608。
在方框608,如果条带中还有另一长条(不同于上一个长条)还 需执行该条带的P或Q计算,则处理继续执行方框606。如果没有, 则处理继续执行方框610。
在方框610,为条带中的上一个长条以外的所有其它长条计算P 和Q校验子。利用来自上一个长条的数据作为操作数之一来为该条带 计算P校验子和Q校验子。另 一个操作数是存储在累积緩冲器306、 308中的对其它长条执行的操作的结果。通过复用器328和334将P 校验子计算的结果发送到由两条数据处理路径共享的"拉"先进先出 (FIFO)存储器(未示出)。将Q操作的结果存储在累积緩冲器308 中。处理继续^l行方框612。
在方框612,将为该条带计算的存储在拉FIFO中的P校验子移到 共享存储器206。,处理继续执行方框614。在方框614,将与计算Q校验子的ALU 316相关联的累积緩冲器 308刷新(flush)到拉FIFO。处理继续执行方框616。
在方框616,将存储在拉FIFO中的Q校验子移到共享存储器206。 在从共享存储器206接收的数据的单次传递中为该条带计算了该条带 的Q校验子和P校验子。结果(P和Q )返回到共享存储器206。
图7示出在如图1所示的RAID-6阵列100中执行部分P和Q计 算的方法的实施例。当条带中的数据只在存储在条带的一个数据盘上 的单个数据块(D)上改变时,执行部分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执行此计 算。
在方框700,通过在相应配置寄存器400中设置合适的位来将两 条数据处理路径配置成将数据块D的旧值存储在相应累积緩冲器 306、 308中。将计算;f莫式字段410设置成NULL,将累积字段408设 置成'1,以将结果存回到累积緩冲器306、 308,并将保持状态位设 置成'1,以保持状态寄存器214的内容。将每条数据处理路径的配 置寄存器400中的所有其它字段设置成默认值,其中将GF多项式字 段414设置成默认值ID (hex),将乘数系数字段412设置成默认值 '0,,并将累积器源字段408设置成与相应ALU314、 316相关联的 累积緩冲器306、 308。通过状态机216执行指令以加载存储在共享存 储器206中的配置寄存器,从而初始化每个配置寄存器400中的字段。 处理继续执行方框702。
在方框702,通过相应配置寄存器400将每条数据处理路径配置成将来自共享存储器206的数据块存储在相应累积緩冲器306、 308 中。通过加速器状态机216向两条数据处理路径发出写指令以移动来 自共享存储器206的数据并将它存储在累积緩冲器306、 308中。存 储在累积緩沖器306、 308中的数据是旧的数据块。基于配置寄存器 400的状态,从共享存储器206接收的推数据进入ALU314、 316。因 为配置寄存器400中的计算才莫式字段410为NULL,所以不在ALU 314、 316中执行任何操作。未经修改的数据从ALU314、 316流出经 过复用器328、 332返回以经过复用器302、 304存储在累积緩冲器306 、 308中。处理继续执行方框704
在方框704,将相应数据处理路径的配置寄存器400配置成为新 的数据块计算新的P和Q校验子。在一个实施例中,基于每个配置寄 存器400的状态,将ALU 314配置成计算P校验子,并将ALU 316 配置成计算Q校验子。
将ALU 314配置成计算新P校验子的部分结果,其中相应配置寄 存器400中的字段设置如下计算模式字段410设置成"XOR",累 积字段408设置成累积,并且保持状态字段404设置成保持。如前所 述,配置寄存器400中的所有其它字段设置成默认值。
将ALU 316配置成计算新Q校验子的部分结果,其中相应配置 寄存器400中的字段设置如下计算模式字段410设置成"mul data after XOR",累积字段408设置成累积,保持状态字段404设置成保 持状态,并且乘数系数字段412存储将通过ALU 316执行的乘法操作 的乘数系数。处理继续执行方框706。
在方框706,每个ALU 314、 316基于相应配置寄存器400的状 态对两个数据输入执行所配置的操作。第一个数据输入(旧数据)存 储在相应累积緩冲器306、 308中,另一个数据输入(新数据)从共 享存储器206流入ALU314、 316。通过相应ALU314、 316执行的操 作的结果存储在相应累积緩冲器306、 308中。ALU 314对存储在累 积緩冲器306中的旧数据和通过'推数据,流入的新数据执行XOR操作。ALU316也对存储在累积缓沖器308中的旧数据和通过'推数 据,从共享存储器206流入的新数据执行XOR操作。乘法器322将 通过复用器318从ALU 316接收的XOR操作的结果与从复用器324 的输出接收的乘数系数相乘。在执行完所配置的操作之后,累积緩冲 器306存储(Dold Dnew)的结果,而累积緩沖器308存储 M'(Dold0 Dnew)的结果。处理继续才丸行方框708。
在方框708,将与P的计算相关联的配置寄存器400配置成利用 存储在累积緩冲器306中的部分结果计算新的P校验子(Pnew)。为 了计算Pnew,将配置寄存器400中的字段配置如下计算才莫式字段 410设置成XOR,累积字段408设置成'1,以累积,并且保持状态 位设置成'1,以保持状态。
将包括ALU 316的另 一条数据处理路径的配置寄存器400中的字 段配置如下计算才莫式字段410设置成NULL,累积字段408设置成 '0,以关闭累积,并且保持状态位设置成'1,以保持状态寄存器的 内容。处理继续执行方框710。
在方框710,旧P从共享存储器206流入ALU 314、 316。旧P 和存储在累积緩冲器306、 308中的之前操作的结果输入到ALU314、 316。 ALU 314中的操作结果、即Pold (累积緩冲器306的内容) 是新P (Pnew),它通过复用器334 ^皮转发到拉FIFO,并且还发回到 累积緩冲器306。因为在ALU316中执行NULL操作并且结果返回到 累积緩冲器308,所以存储在累积緩冲器308中的数据保持不变。处 理继续纟丸行方框712。
在方框712,将存储在拉FIFO中的新P (Pnew)存储在共享存储 器206中。处理继续执行方框714。
在方框714,将与包括ALU316的数据处理路径相关联的配置寄 存器400配置成利用存储在累积缓冲器308中的部分结果计算新Q (Qnew)。将与P校验子计算相关联的配置寄存器400配置如下计 算模式字段410设置成NULL,累积字段408设置成'0,以不累积,并且保持状态位设置成'1,以保持状态寄存器的内容。将与Q校验
子计算相关联的配置寄存器400配置成计算新Q校验子,其中各字段 配置如下计算模式字段410设置成XOR,累积字段408设置成'1, 以累积,并且保持状态位设置成'1,以保持状态。处理继续执行方 框716。
在方框716,旧Q通过推数据从共享存储器206流入。旧Q和存 储在累积緩冲器306、 308中的之前操作的结果输入到ALU 314、 316。 ALU 316中的操作结果、即Qold (累积緩冲器308的内容)是新Q (Qnew),它被转发到拉FIFO,并且回到累积緩冲器308。因为在 ALU 314中执行NULL操作并且结果返回到累积緩冲器306,所以存 储在累积緩沖器.306中的数据保持不变。在方框714执行之后,方框 712和716中的数据传输同时运行。因此,在计算新Q的同时,将新 P移到共享存储器206。这减少了从加速单元输出操作结果的时间。 处理继续执行方框718。
在方框718,从FIFO读取存储在拉FIFO中的新Q (Qnew),并 将它存储在共享存储器206中。
图8是用于恢复如图1所示的RAID-6阵列中的两个数据盘的损 失的方法的实施例。例如,如果有n个数据盘,并且数据盘D0和D1 发生故障,则可通过对剩余盘执行以下计算来恢复数据盘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)
但是,这需要传递数据两次。如上所示,利用上式5和式6的D0 和D1计算需要使用乘法器。因为两个盘同时发生故障的概率较低, 所以为加速单元208增加第二乘法器322的额外成本对于小的性能增 益证明并不合理。因此,为了允许在单次数据传递中恢复两个数据盘, 两条数据处理路径共享单个乘法器。对于利用乘法器322的特定数据处理路径,可经由通过复用器320选择多项式(P)并通过复用器324 选择乘法系数(M)来共享乘法器。
利用如图3所示的数据处理单元218,在具有六个数据盘D0-D5 并且D4和D5发生故障的实施例中,可利用D0-D3、 P和Q在单次 数据传递中恢复D4和D5。
D4可以按照集合(DO, Dl, D2, D3, P, Q)与乘数系数(mO, ml, m2, m3, mP, mQ)的线性组合来计算。在一个实施例中,集合中的每个数 据块可具有512个字节,并且每个乘数系数是一个字节并运用到整个 数据块。因此,执行以下操作以恢复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,配置每条数据处理路径的ALU 314、 316。与ALU 314 相关联的配置寄存器400配置如下将计算模式字段410设置成 NULL,并将累积字段408设置成累积。与另一条数据处理路径中的 ALU316相关联的配置寄存器400配置如下将计算模式字段410设 置成GF8 MUL,并将累积字段408设置成累积GF8 MUL操作的结果。 处理继续纟丸行方框802。
在方框802,每条数据处理路径对从共享存储器接收的数据块执 行所配置的操作。ALU 314中的NULL操作导致将所接收的数据块存 储在累积緩冲器306中。数据块的GF8乘法结果存储在累积緩冲器 308中。处理继续执行方框804。
在方框804,将下一个数据块的乘数系数(M)存储在ALU 316 的配置寄存器400的乘数系数字段412中。对存储在相应累积緩冲器 306、 308中的之前操作的结果和从共享存储器206流入的新块执行存 储在两个配置寄存器400中的操作(ALU 314中的XOR和ALU 316 中的'mul data before XOR,)。处理继续执行方框806。
在方框806,如果有另一个数据块要流入,则处理继续执行方框 804。如果没有,则处理继续执行方框808。在方框808,累积緩冲器306、 308存储以下操作的结果 累积緩冲器308 = (m0*D。
mPDi m2*D2 m3*D3)
累积症爰沖器306 = (Do Di D2 D3)
用P的乘数系数配置与包括ALU 314的数据处理路径相关联的配 置寄存器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的乘数系数配置与包括ALU316的数据处理路 径相关联的配置寄存器400;与包括ALU314的数据处理路径相关联 的配置寄存器400配置成不累积此操作的结果。Q数据流入ALU 314、 316。 ALU316中的操作结果、即mQ^Q①(累积緩沖器308的内容) 是恢复后的D4,它被转发给拉FIFIO并回到累积緩冲器308。在对Q 块执行完每个ALU中配置的操作之后,累积緩冲器306、 308存储以 下操作的结果。
累积纟爰沖器308 = D4 = ((mO*D0十ml*Di十m2*D2 m3*D3 mP*P) $ mQ*Q)
累积緩冲器306 = (D。 D2 D3 P)
处理继续执行方框812。在方框812,将恢复后的D4的数据存回 到共享存储器206。处理继续执行方框814。
在方框814,将与包括ALU314的数据处理路径相关联的配置寄 存器400配置成XOR和累积;将与包括ALU 316的数据处理路径相 关联的配置寄存器400配置成使来自该路径的结果不能返回到累积緩 冲器。D4数据流入ALU314、 316。 ALU 314中的操作结果、即D4 (累积緩冲器306的内容)是恢复后的D5,它^皮转发给拉FIFO并回 到累积緩沖器30.6。即,执行以下操作
D5 = (D0 e Di @ D2 $ D3 P ) @ D4
结果存储在累积緩沖器306中。在方框816,将数据盘D5的恢复
23后的数据返回到共享存储器。
除了结合图6-8描述的执行双盘故障恢复、部分P和Q更新、以 及P和Q校验子计算的方法之外,加速单元还可用于通过将配置寄存 器配置成执行恢复操作来加速恢复数据盘和P盘双故障或数据盘和Q 盘双故障。在P和Q盘都发生故障的情况下,可利用结合图7描述的 方法来恢复P和Q盘。
除了那些涉及RAID-6系统的P、 Q和数据盘的恢复以及P和Q 校验子的计算的数据处理操作之外,加速单元还可用于加速其它数据 处理操作。
图9示出执行比较检查的方法的实施例,该方法可在如图2所示 的加速单元中执行。比较功能比较两个数据块(A和B)并检查数据 块A等于数据块B。将结合图2和图3描述图9。
在方框900,将ALU 314的配置寄存器400配置成执行比较操作。 将ALU 314的配置寄存器400的计算模式字段410设置成XOR,并 将累积字段408配置成累积结果。将ALU 316的配置寄存器400的计 算模式字段410设置成不累积结果的NULL。处理继续执行方框902。
在方框902,将来自第一数据块的数据('A数据,)加载到累 积緩冲器306中。处理继续执行方框904。
在方框904,来自第二数椐块的数据('B数据,)从共享存储 器206流入加速单元208,并且在逐个字节基础上执行XOR操作,其 中A数据存储在累积緩沖器306中。处理继续执行方框906。
在方框906,在B数据流过ALU 314之后,读取与ALU 314相 关联的状态寄存器500。与ALU314相关联的状态寄存器500中的结 果零检查字段502的状态指示是否检测到错误比较。并且,数据块中 的第 一个错误比较(miscompare)字节的字节地址可存储在状态寄存器 500的字节地址字段504中。
图10是用于执行结果非零检查的方法的实施例,该方法可在如 图2所示的加速单元208中执行。在方框1000,将ALU 314的配置寄存器400配置成执行结果非 零检查操作。将ALU 314的配置寄存器400的计算4莫式字段410设置 成MJLL,将保持状态字段404设置成更新状态,并将累积字段408 配置成不累积结果。将ALU 316的配置寄存器400的计算才莫式字段 410也设置成不累积结果的NULL。处理继续执行方框1002。
在方框1002,来自数据块的数据从共享存储器流入ALU 314、 316,并且在逐个字节基础上执行NULL操作,其中没有数据存储在 累积緩冲器306中。
在方框1004,在数据流过ALU314、 316之后,读取与ALU314 相关联的状态寄存器500。与ALU 314相关联的状态寄存器500中的 结果零检查字段502的状态指示是否检测到结果非零。并且,块中的 第一个非零结果字节的字节地址可存储在状态寄存器500的字节地址 字段504中。
在另一个实施例中,可将一条数据处理路径中的ALU配置成执 行结果非零检查,而将另一条数据处理路径中的ALU配置成执行比 丰交检查。可对相同数据块并行执行这两个操作。
增强的字节搜索功能可在公共密钥加密系统(PKCS)和随机数 生成器(RNG)中用于例如在形式为0*(^01*的消息的起始端搜索零 字节或寻找变量模式。在后一种情况下,变量模式的位置指示格式良 好的消息正文的起始端。对格式良好的消息正文的起始端的搜索非常 緩慢,并且在微引擎204中执行时需要大量的码空间。
图11是根据本发明原理包括用于加速RAID-6计算的加速单元的 实施例的系统的框图。
系统1100包括主机中央处理单元(CPU) 1101、存储器控制器集 线器(MCH) 1102和I/O控制器集线器(ICH) 1104。 MCH 1102包 括用于控制CPU 1101和存储器202之间的通信的存储器控制器1106。 CPU 1101和MCH 1102通过系统总线1116进行通信。
主机中央处理单元(CPU) 1101可以是诸如下列的多个处理器中的任何一种处理器单核Intel Pentium IV⑧处理器,单核Intel Celeron 处理器,⑧XScale处理器,或诸如Intel Pentium D、 Intel②Xeon㊣处 理器或Intel Core Duo处理器的多核处理器,或任何其它类型处理 器。
存储器202可以是动态随机存取存储器(DRAM)、静态随机存 取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、双倍数 据速率2 (DDR2 ) RAM或Rambus动态随机存取存储器(RDRAM) 或任何其它类型存储器。
ICH 1104可以利用诸如直接媒体接口 (DMI)的高速芯片-芯片 互连1114耦合到MCH 1102。 DMI支持经由两个单向线道的2千兆 位/秒的并行传输速率。
ICH 1104可包括用于加速耦合到ICH 1104的RAID阵列100的 RAID计算的加速单元208。 ICH 1104可以利用串行存储协议通过存 储协议互连1118与RAID阵列100通信。可以利用标准串行连接存储 协议集通过存储协议互连1118在ICH 1104和RAID阵列100之间交 换封装在帧中的命令、数据和状态信息。
有多种串行存储协议集,例如串行连接小型计算机系统接口 (SAS )和串行高级技术附件(SATA) 。 SATA协议的版本在由Serial ATA工作组于2003年1月7日发布的"Serial ATA: High Speed Serialized AT Attachment" (l.Oa版)中进行了描述。SAS协议的版 本在由美国国家标准协会(ANSI)于2003年9月18日发布的 "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)协议的版本在 美国国家标准协会(ANSI) Standard Fibre Channel Physical and Signaling Interface-2 (FC-FS-2)( 2005年8月9日规范)中进行了描述。
本领域技术人员将明白,在本发明的实施例中涉及的方法可在包括计算机可用介质的计算机程序产品中实施。例如,该计算机可用介
质可由只读存储器设备(如致密盘只读存储器(CD ROM)盘或常规 ROM设备)或计算机盘组成,该只读存储器设备或计算机磁盘上存 储了计算机可读程序代码。
尽管参照其实施例特别示出和描述了本发明的实施例,^f旦本领域 技术人员将了解,在不背离随附权利要求所涵盖的本发明实施例的范 围的情况下,可以在其中作出各种形式和细节的改变。
权利要求
1、一种装置,包括用于接收数据块的第一数据处理路径,所述第一数据处理路径包括用于存储所述数据块的第一累积缓冲器和用于对所述数据块执行第一操作的第一算术逻辑单元;以及用于接收所述数据块的第二数据处理路径,所述第二数据处理路径包括用于存储所述数据块的第二累积缓冲器和用于对所述数据块执行第二操作的第二算术逻辑单元,所述第一数据处理路径和所述第二数据处理路径共享乘法器,所述乘法器对所述数据块执行乘法操作,所述数据处理路径中的每条数据处理路径并行处理所述数据块以在所述数据块经过所述数据处理路径的单次传递中提供第一结果数据块和第二结果数据块。
2、 如权利要求1所述的装置,其中所述数据块是独立磁盘冗余 阵列(RAID)条带中的数据块,所述第一操作用于计算所述条带的P 校验子,并且所述第二操作用于计算所述条带的Q校验子。
3、 如权利要求1所述的装置,其中所述数据块是独立磁盘冗余 阵列(RAID )条带中的数据块,所述RAID条带包括P校验子块和Q 校验子块,通过利用所述RAID条带中的所述P校验子块、所述Q校 验子块和其它数据块,所述第一操作恢复第一数据块,并且所述第二 操作恢复所述RAID条带中的第二块。
4、 如权利要求1所述的装置,其中所述数据块是独立磁盘冗余 阵列(RAID)条带中的数据块,为新数据块更新所述RAID条带,所 述第一操作利用所述条带的旧P校验子块、旧数据块和新数据块来计 算所述条带的新P校验子。
5、 如权利要求4所述的装置,其中所述第二操作利用所述条带 的旧Q校验子块、所述旧数据块和所述新数据块来计算新Q校验子。
6、 如权利要求5所述的装置,其中在计算所述新Q校验子的同时将所述新P校验子移动到共享存储器。
7、 如权利要求1所述的装置,其中所述第一算术逻辑单元具有 第 一可编程多项式,并且所述第二算术逻辑单元具有第二可编程多项 式。
8、 如权利要求1所述的装置,其中所述第一操作对所述第一数 据块和笫二块执行,所述第一数据块和所述第二块包含在6级独立磁 盘冗余阵列(RAID)条带中,结果存储在所述第一累积緩冲器中用于 与另 一块进行随后的操作。
9、 一种方法,包括将数据块存储在第 一数据处理路径中的第 一 累积緩沖器中; 将所述数据块存储在第二处理路径中的第二累积緩冲器中,所述 第一处理路径和所述第二处理路径共享乘法器;通过第一算术单元对所述数据块执行第一操作;以及通过第二算术单元对所述数据块执行第二操作,所述第 一数据处理路径和所述第二数据处理路径并行处理所述数据块以在所述数据 块经过所述数据处理路径的单次传递中提供第 一 结果数据块和第二 结果数据块。
10、 如权利要求9所述的方法,其中所述数据块是独立磁盘冗余 阵列(RAID)条带中的数据块,所述第一操作计算所述条带的P校 验子,并且所述第二操作计算所述条带的Q校验子。
11、 如权利要求9所述的方法,其中所述数据块是独立磁盘冗余 阵列(RAID )条带中的数据块,所述RAID条带包括P校验子块和Q 校验子块,通过利用所述RAID条带中的所述P校验子块、所述Q校 验子块和其它数据块,所述第一操作恢复第一数据块,并且所述第二 操作恢复所述RAID条带中的第二块。
12、 如权利要求9所述的方法,其中所述数据块是独立磁盘冗余 阵列(RAID)条带中的数据块,为新数据块更新所述RAID条带,所 述第一操作利用所述条带的旧P校验子块、旧数据块和新数据块来计算所述条带的新P校验子。
13、 如权利要求12所述的方法,其中所述第二操作利用所述条 带的所述旧Q校验子块、所述旧数据块和所述新数据块来计算新Q校 验子。
14、 如权利要求13所述的方法,其中在计算所述新Q校验子的 同时将所述新P校验子移动到共享存储器。
15、 如权利要求9所述的方法,其中所述笫一算术逻辑单元具有 第 一可编程多项式,并且所述第二算术逻辑单元具有第二可编程多项 式。
16、 如权利要求9所述的方法,其中所述第一操作对存储在所述 第 一 累积緩冲器冲的所述数据块和由所述第 一数据处理路径接收的 第二数据块执行才莫式匹配。
17、 如权利要求9所述的方法,其中所述第一操作对所接收的数 据块执行非零结果操作。
18、 如权利要求9所述的方法,其中所述笫一操作对所述第一数 据块和第二块执行,所述第一数据块和所述第二块包含在6级独立磁 盘冗余阵列(RAID)条带中,结果存储在所述第一累积緩冲器中用于 与另 一块进行随后的操作。
19、 一种包含具有相关联的信息的机器可访问介质的物品,其中 所述信息在被访问时使机器执行以下操作将数据块存储在第 一数据处理路径中的第 一 累积缓冲器中; 将所述数据块存储在第二处理路径中的第二累积緩冲器中,所述 第一处理路径和所述第二处理路径共享乘法器;通过第一算术单元对所述数据块执行第一操作;以及通过第二算术单元对所述数据块执行第二操作,所述第 一数据处理路径和所述第二数据处理路径并行处理所述数据块以在所述数据块经过所述数据处理路径的单次传递中提供第一结果数据块和第二结果数据块。
20、 一种系统,包括具有多个串行连接小型计算机系统接口 (SAS)磁盘驱动器的独 立磁盘冗余阵列(RAID)系统;以及用于为所述RAID系统处理数据的加速单元,所述加速单元包括 用于接收数据块的第一数据处理路径,所述第一数据处理路 径包括用于存储所述数据块的第 一 累积緩冲器和用于对所述数据块 执行第一操作的第一算术逻辑单元;以及用于接收所述数据块的第二数据处理路径,所述第二数据处 理路径包括用于存储所述数据块的第二累积緩沖器和用于对所述数 据块执行第二操作的第二算术逻辑单元,所述第 一数据处理路径和所 述第二数据处理路径共享乘法器,所述乘法器对所述数据块执行乘法以在所述数据块经过所述数据处理路径的单次传递中提供第一结果 数据块和第二结果数据块。
全文摘要
一种加速单元分担来自处理器的计算密集型任务。该加速单元包括两条数据处理路径,每条数据处理路径具有一个算术逻辑单元并共享单个乘法器单元。每条数据处理路径可以对相同数据并行执行可配置的操作。提供特殊的复用器路径和指令以允许在数据经过加速单元的单次传递中在条带上计算P型和Q型校验子。
文档编号G06F3/06GK101611376SQ200780051548
公开日2009年12月23日 申请日期2007年12月6日 优先权日2006年12月19日
发明者G·沃尔里奇, J·弗拉尼奇, K·亚普, R·奥塔维, V·戈帕尔, W·费哈利 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1