CN101611376A - 具有模式匹配的高性能raid-6系统体系结构 - Google Patents

具有模式匹配的高性能raid-6系统体系结构 Download PDF

Info

Publication number
CN101611376A
CN101611376A CN200780051548.7A CN200780051548A CN101611376A CN 101611376 A CN101611376 A CN 101611376A CN 200780051548 A CN200780051548 A CN 200780051548A CN 101611376 A CN101611376 A CN 101611376A
Authority
CN
China
Prior art keywords
data block
data
syndrome
processing path
band
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200780051548.7A
Other languages
English (en)
Other versions
CN101611376B (zh
Inventor
V·戈帕尔
G·沃尔里奇
K·亚普
W·费哈利
J·弗拉尼奇
R·奥塔维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101611376A publication Critical patent/CN101611376A/zh
Application granted granted Critical
Publication of CN101611376B publication Critical patent/CN101611376B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Abstract

一种加速单元分担来自处理器的计算密集型任务。该加速单元包括两条数据处理路径,每条数据处理路径具有一个算术逻辑单元并共享单个乘法器单元。每条数据处理路径可以对相同数据并行执行可配置的操作。提供特殊的复用器路径和指令以允许在数据经过加速单元的单次传递中在条带上计算P型和Q型校验子。

Description

具有模式匹配的高性能RAID-6系统体系结构
技术领域
本公开涉及独立磁盘冗余阵列(RAID)系统,具体来说,涉及RAID-6系统的计算加速。
背景技术
出于可靠性、容量或性能的目的,独立磁盘冗余阵列(RAID)将多个物理硬盘驱动器组合成逻辑驱动器。因此,取代多个物理硬盘驱动器,操作系统看到单个逻辑驱动器。本领域技术人员众所周知,有很多称为RAID级的标准方法用来在RAID系统的这些物理硬盘驱动器上分配数据。
例如,在0级RAID系统中,通过将数据分成多个块并将每个块写入到独立的硬盘驱动器来在硬盘驱动器物理阵列上将数据条带化。通过将负载散布到多个硬盘驱动器来提高输入/输出(I/O)性能。尽管0级RAID提高了I/O性能,但它不提供冗余度,因为如果一个硬盘驱动器发生故障,则所有数据都会丢失。
5级RAID系统通过在至少三个硬盘驱动器上将数据和奇偶校验信息条带化来提供高级冗余度。在发生故障的情况下,将数据条带化与分布式奇偶校验相结合来提供恢复路径。6级RAID系统通过允许恢复双盘故障而提供甚至高于5级RAID系统的高级冗余度。在6级RAID系统中,为数据生成称为P校验子(syndrome)和Q校验子的两个校验子,并将它们存储在RAID系统的硬盘驱动器上。P校验子是通过为条带(stripe)中的数据(数据块(长条)、P校验子块和Q校验子块)简单计算奇偶校验信息而生成的。Q校验子的生成需要伽罗瓦域(Galois Field)乘法,并且如果磁盘驱动器发生故障,则会比较复杂。在盘恢复操作期间执行的恢复数据和/或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)操作(operation)来生成。XOR是对两个操作数的逻辑操作,如果其中只有一个操作数具有逻辑值‘1’,则它产生逻辑值‘1’。例如,具有值‘11001010’的第一操作数和具有值‘10000011’的第二操作数的XOR提供具有值‘01001001’的结果。如果存储第一操作数的硬盘驱动器发生故障,则可通过对第二操作数和结果执行XOR操作来恢复第一操作数。
P校验子是利用
Figure G2007800515487D00031
操作在条带上计算获得的数据(D)的简单奇偶校验。在具有n个数据盘的系统中,P校验子的生成由下式1表示:
P = D 0 ⊕ D 1 ⊕ D 2 . . . . . . ⊕ D n - 1 (式1)
Q校验子的计算需要利用伽罗瓦域多项式(g)进行乘法(*)。以非常高的性能对8位(字节)伽罗瓦域多项式执行算术操作。多项式是只利用加法、减法、乘法和非负整数指数来组合有限数量的常量和变量的表达式。一个本原多项式是x8+x4+x3+x2+1,它可用十六进制表示法以1D表示。多项式的伽罗瓦域(GF)操作又称为GF(2^8)算术。在具有n个数据盘的系统中,Q校验子的生成由下式2表示:
Q = g 0 * D 0 ⊕ g 1 * D 1 ⊕ g 2 * D 2 . . . . . . ⊕ g n - 1 * D n - 1 (式2)
在条带基础上执行逐字节伽罗瓦域操作,其中块中的每个字节在计算上独立于其它字节。逐字节伽罗瓦域操作可以适应多达255(2^8-1)个数据盘。
图2是根据本发明原理包括加速单元的实施例以加速计算的系统200的框图。
系统包括用于存储工作请求210的存储器202和用于处理工作请求210的状态机(微引擎)204。状态机204通过共享存储器206向加速单元208发出指令。基于从状态机204执行的指令,加速单元208可对8位伽罗瓦域多项式执行算术操作。
在一个实施例中,状态机204可以是诸如可从Intel公司购得的
Figure G2007800515487D00043
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可执行逐字节算术和逻辑操作。每个ALU 314、316可包括XOR阵列与比较和零检查功能,并且可以在数据经过数据处理单元218的单次传递中独立执行P或Q校验子计算。
在一个实施例中,每个ALU 314、316具有64位(8字节)数据路径,并且包括8个可配置的伽罗瓦域(GF)字节片(slice)。每个GF字节片在8字节数据路径中对一个字节进行操作。每个ALU 314、316在64位数据路径中同时对8个字节进行操作。这允许利用来自每个盘块的合适的字节并行执行盘块操作。每个ALU 314、316具有可存储多达512个字节的相应的独立累积缓冲器306、308。ALU 314、316共享GF(8)逐字节乘法器322。累积缓冲器314、316可用于存储处理单元218的ALU 314、316和乘法器322中的操作的中间结果。
数据处理单元218具有两条独立的数据处理路径。一条数据处理路径包括累积缓冲器306和ALU 314。另一条数据处理路径包括累积缓冲器308和ALU 316。
两条数据处理路径共享乘法器322。如果两条数据处理路径需要同时执行通用乘法-累积功能,则在ALU 314、316之间切换乘法器322的使用。尽管吞吐量有所减小,但加速单元208可允许在来自共享存储器206的数据的单次传递中利用单个通用乘法-累积来执行双盘恢复。
加速单元208在存储应用较少性能损失的情况下有效利用单个乘法器322,例如计算P和Q校验子和执行数据恢复。但是,加速单元208不限于用于存储应用。加速单元208可用于涉及生成8位字段的任何8位多项式的计算。此外,每个ALU 314、316可对它自己的多项式独立工作。
数据处理单元218包括多个复用器。每个复用器基于选择器的状态将两个或两个以上输入的信息编码(或多路复用)为单个输出。例如,复用器302、304允许选择将存储在每个累积缓冲器306、308中的数据的源。数据源可以是从共享存储器206(图2)接收的推数据,或是从ALU 314、316或乘法器322输出的中间结果。复用器310、312允许为到相应ALU 314、316的操作数之一选择源。操作数源可以来自累积缓冲器306或累积缓冲器308。
复用器318允许为乘法器322选择操作数之一。操作数源是ALU314或ALU 316中的操作的结果、从共享存储器接收的推数据、或存储在累积缓冲器306或累积缓冲器308中的数据。
复用器320允许选择将用于通过乘法器322执行乘法操作的多个多项式(POLY1、POLY2)之一。这些多项式是可编程的,并且经过相应ALU 314、316的每条处理路径可具有不同的可编程多项式。例如,在一个实施例中,POLY1可以是与ALU 314相关联的可编程多项式,而POLY2可以是与ALU 316相关联的可编程多项式。复用器324允许选择将用于通过乘法器322执行乘法操作的多个乘数系数(M1,M2)之一。例如,乘数系数(multiplier coefficient)M1可以与经过ALU 314的处理路径相关联,而乘数系数M2可以与经过ALU 316的处理路径相关联。
复用器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的其中任何一条数据处理路径的配置寄存器400的实施例的框图。在一个实施例中,配置寄存器400具有可用于管理数据处理路径、即管理加速功能的32个位。在所示实施例中,配置寄存器400可包括一个或多个保留位402。
配置寄存器400包括保持状态字段404,该字段404可包括指示在操作之后是保持还是清除状态寄存器内容的一个位。例如,保持状态字段404可以是单个位,该单个位可以设置成逻辑‘1’以保持状态,或者可以清零,即设置成逻辑‘0’以在下一个操作之前清除状态寄存器的内容,以便通过下一个操作来更新状态。
配置寄存器400中的源字段406可以配置成通过复用器310、312来为ALU 314、316选择数据源。例如,将在ALU 314中执行的操作的数据源可以是累积缓冲器306或累积缓冲器308。在一个实施例中,源字段406具有设置或清零成通过复用器310、312选择ALU操作数的源的一个位。
配置寄存器404中的累积字段408选择是否将通过数据处理单元218的数据处理路径的结果引导回到相应累积缓冲器。
配置寄存器400中的计算模式字段410允许将每条数据处理路径配置成执行不同的操作。计算模式字段410的状态可用于控制经过复用器328、332到累积缓冲器306、308和/或复用器334的数据路径。在一个实施例中,计算模式字段410具有允许选择8种操作之一的3个位。这些操作如下表1所示,其中具有相关联的计算模式和结果:
模式       操作                  结果
000        NULL                  Data
001        Basic XOR             Data XOR ACC
010        GF8XOR                Data GF8XOR ACC
011        Find M个字节          (Data==M)?0x01:0
100        GF8mul                M·Data
101        mul data after XOR    M·(Data XOR ACC)
110        mul data before XOR   (M·Data)XOR Acc
111        mul Acc before XOR    (M·Acc)XOR Data
表1
通过64位XOR 330执行模式100、101、110和111的XOR操作。例如,对于模式100,复用器326选择64’h0,并且数据处理路径在乘法器322中执行GF8乘法操作,操作结果(M·Data)从64位XOR 330输出。稍后将更详细地描述表1中列出的其它模式。
配置寄存器400允许每条数据处理路径配置不同的乘数系数和伽罗瓦域(GF)多项式用于在乘法器322中执行乘法操作。经过乘法器332的路径由两条数据处理路径(即,经过ALU 314的路径和经过ALU 316的路径)共享。复用器320、324允许乘法器用于为处理路径之一选择的当前操作。
乘数系数字段412允许配置多个乘数系数(M)之一。通过复用器324为利用乘法器322进行当前操作的相应数据处理路径输入为相应数据处理路径配置的乘数系数(M1,M2)。在一个实施例中,乘数系数字段具有8个位。
GF多项式字段414允许为数据处理路径配置多个多项式之一。在一个实施例中,GF多项式字段具有8个位。通过复用器320为当前利用乘法器322进行当前操作的相应数据处理路径输入为相应数据处理路径配置的GF多项式(POLY1,POLY2)。在一个实施例中,将GF多项式字段414设置成‘1D’(十六进制(hex))。但是,GF多项式字段414允许配置其它GF多项式。
加速单元208可以对任何GF(2^8)多项式字段进行操作,并且优化成以功率高效的方式在常用的发生器1D(hex)上工作。加速单元208允许通过每个周期处理8个字节的单个乘法器322来快速实现与任意系数的相乘。通过对8个字节并行执行乘法来增加吞吐量。
结合图3论述的特殊复用器路径和指令使得加速单元208能够通过叠加从共享存储器206进入加速单元208的数据移动和从加速单元208移出进入共享存储器206的数据移动来对部分(随机)写提供高性能。
多条路径还减少了浪费的多次数据传递,即,将相同数据从共享存储器206传递到数据处理单元218以执行不同操作。
加速单元208在无需增加显著额外逻辑的情况下提供了高性能。在一个实施例中,选择累积缓冲器306、308以提供最小存储器大小。有效利用单个大型乘法器322,而不会显著损失存储应用的性能。加速单元208还在支持生成8位字段的任何8位多项式方面具有灵活性。此外,每个ALU 314、316可对不同的多项式独立工作。
图5是如图3所示的数据处理单元218的其中任何一条数据处理路径的状态寄存器500的实施例的框图。经过数据处理单元218中的相应ALU 314、316的每条数据处理路径包括相应的状态寄存器500。在所示实施例中,状态寄存器500包括结果零检查字段502和用于存储第一个非零结果字节的字节地址的字节地址字段504。结果零检查字段502可以是根据操作结果而设置或清零的一个位字段。字节地址字段504可以具有用于存储512字节数据块内的字节的地址的9个位。
在一个实施例中,如图2所示的加速单元208为RAID 6条带写操作加速对P和Q校验子的计算。在加速单元208中对存储在共享存储器206中的条带的数据块并行计算P和Q校验子。通过加速单元208从共享存储器206接收条带的数据块。一条数据处理路径具有它相应的配置成计算该条带的P校验子的ALU 314、316,而另一条数据处理路径具有它相应的配置成计算相同条带的Q校验子的ALU。
如前所述,通过对将存储在n个数据盘驱动器上的条带中的数据块执行XOR操作来计算P校验子,并用下式1表示P校验子:
P = D 0 ⊕ D 1 ⊕ D 2 . . . . . . ⊕ D n - 1 (式1)
参照图1,条带包括一组大小相同的可称为长条(strip)的数据块102、104、106。对于每个条带,有两个检验和,即P和Q校验子130、132。按每个条带的数据块中的数据字节计算P和Q校验子。
可利用因式分解来计算全条带Q校验子。每个系数gi是8位多项式。也能以1周期吞吐量(8个字节)在单次传递中利用加速单元208来有效执行通用乘法。通过在乘法器322中把将存储在n个盘驱动器上的数据块乘以(*)伽罗瓦域(GF)多项式(g)并在XOR 330中对乘法操作的结果执行XOR操作来计算Q校验子,如下式2所示:
Q = g 0 * D 0 ⊕ g 1 * D 1 ⊕ g 2 * D 2 . . . . . . ⊕ g n - 1 * D n - 1 (式2)
在本发明的实施例中,对相同数据并行计算P和Q校验子。在数据经过加速单元208的单次传递中执行这两个计算,优化了数据移动,并节省了系统总线带宽(即,到/来自共享存储器206)。因此,加速单元208提高了P和Q校验子的计算的性能。
图6示出利用如图2所示的加速单元208和如图3所示的数据处理单元218并行计算P和Q校验子的方法的实施例。
如前所述,为跨越多个硬盘的条带中的数据块计算P和Q校验子。在一个实施例中,条带中的每个数据块(长条)可存储512个字节。
在方框600,通过将相应配置寄存器400中的配置数据存储在加速单元208中来配置每条数据处理路径。经过ALU 314的第一数据处理路径可以配置成计算P校验子,而经过ALU 316的第二数据处理路径可配置成对相同数据并行计算Q校验子。
首先,将每条数据处理路径的相应的加速单元配置寄存器400配置成将数据从共享存储器206(图2)移动到相应的累积缓冲器306、308。将计算模式字段410设置成NULL,将累积字段408设置成‘1’以在累积缓冲器306、308中累积推数据,并将保持状态位设置成‘1’以保持相应状态寄存器500的内容。将相应配置寄存器400中的所有其它字段设置成默认值,将GF多项式字段414设置成默认值1D(hex),将乘数系数字段412设置成默认值‘0’,并将累积缓冲器源字段408设置成与AlU 314、316相关联的相应的累积缓冲器306、308。
在一个实施例中,通过加速器状态机216来执行利用存储在共享存储器206中的配置寄存器加载加速单元配置寄存器400的指令。处理继续执行方框602。
在方框602,通过相应配置寄存器400将每条数据处理路径配置成将来自共享存储器206(图2)的数据块存储在相应累积缓冲器306、308中。通过加速器状态机216向两条数据处理路径发出写指令以移动来自共享存储器206的数据并将它存储在累积缓冲器306、308中。存储在累积缓冲器306、308中的数据是条带中的第一盘驱动器的第一数据块。基于配置寄存器400的状态,从共享存储器206接收的推数据进入ALU 314、316。因为配置寄存器400中的计算模式字段410为NULL,所以不在ALU 314、316中执行任何操作。未经修改的数据从ALU 314、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流出。通过相应ALU 314、316执行的操作的结果存储在相应累积缓冲器306、308中。
例如,为了计算P校验子,在ALU 314中对通过复用器310从累积缓冲器306接收的存储在累积缓冲器306中的数据和从共享存储器206检索的推数据执行XOR操作。存储在累积缓冲器306中的数据(操作数)可以是来自第一盘驱动器的条带的第一长条。从共享存储器206流出的其它数据(操作数)可以是来自第二盘驱动器的条带的第二长条。因为将配置寄存器400中的累积字段408设置成累积,所以ALU314中的操作结果通过复用器328和302存回到累积缓冲器306。处理继续执行方框608。
在方框608,如果条带中还有另一长条(不同于上一个长条)还需执行该条带的P或Q计算,则处理继续执行方框606。如果没有,则处理继续执行方框610。
在方框610,为条带中的上一个长条以外的所有其它长条计算P和Q校验子。利用来自上一个长条的数据作为操作数之一来为该条带计算P校验子和Q校验子。另一个操作数是存储在累积缓冲器306、308中的对其它长条执行的操作的结果。通过复用器328和334将P校验子计算的结果发送到由两条数据处理路径共享的“拉”先进先出(FIFO)存储器(未示出)。将Q操作的结果存储在累积缓冲器308中。处理继续执行方框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 ⊕ M · ( Dold ⊕ Dnew ) (式4)
式3和式4中都利用表达式
Figure G2007800515487D00133
来计算新的P校验子和新的Q校验子。因此,可为Pnew计算这个表达式一次,然后将其用于计算Qnew。加速单元206可配置成通过配置寄存器400执行此计算。
在方框700,通过在相应配置寄存器400中设置合适的位来将两条数据处理路径配置成将数据块D的旧值存储在相应累积缓冲器306、308中。将计算模式字段410设置成NULL,将累积字段408设置成‘1’以将结果存回到累积缓冲器306、308,并将保持状态位设置成‘1’以保持状态寄存器214的内容。将每条数据处理路径的配置寄存器400中的所有其它字段设置成默认值,其中将GF多项式字段414设置成默认值1D(hex),将乘数系数字段412设置成默认值‘0’,并将累积器源字段408设置成与相应ALU 314、316相关联的累积缓冲器306、308。通过状态机216执行指令以加载存储在共享存储器206中的配置寄存器,从而初始化每个配置寄存器400中的字段。处理继续执行方框702。
在方框702,通过相应配置寄存器400将每条数据处理路径配置成将来自共享存储器206的数据块存储在相应累积缓冲器306、308中。通过加速器状态机216向两条数据处理路径发出写指令以移动来自共享存储器206的数据并将它存储在累积缓冲器306、308中。存储在累积缓冲器306、308中的数据是旧的数据块。基于配置寄存器400的状态,从共享存储器206接收的推数据进入ALU 314、316。因为配置寄存器400中的计算模式字段410为NULL,所以不在ALU314、316中执行任何操作。未经修改的数据从ALU 314、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 dataafter XOR”,累积字段408设置成累积,保持状态字段404设置成保持状态,并且乘数系数字段412存储将通过ALU 316执行的乘法操作的乘数系数。处理继续执行方框706。
在方框706,每个ALU 314、316基于相应配置寄存器400的状态对两个数据输入执行所配置的操作。第一个数据输入(旧数据)存储在相应累积缓冲器306、308中,另一个数据输入(新数据)从共享存储器206流入ALU 314、316。通过相应ALU 314、316执行的操作的结果存储在相应累积缓冲器306、308中。ALU 314对存储在累积缓冲器306中的旧数据和通过‘推数据’流入的新数据执行XOR操作。ALU 316也对存储在累积缓冲器308中的旧数据和通过‘推数据’从共享存储器206流入的新数据执行XOR操作。乘法器322将通过复用器318从ALU 316接收的XOR操作的结果与从复用器324的输出接收的乘数系数相乘。在执行完所配置的操作之后,累积缓冲器306存储的结果,而累积缓冲器308存储
Figure G2007800515487D00152
的结果。处理继续执行方框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中的之前操作的结果输入到ALU 314、316。ALU 314中的操作结果、即
Figure G2007800515487D00153
(累积缓冲器306的内容)是新P(Pnew),它通过复用器334被转发到拉FIFO,并且还发回到累积缓冲器306。因为在ALU 316中执行NULL操作并且结果返回到累积缓冲器308,所以存储在累积缓冲器308中的数据保持不变。处理继续执行方框712。
在方框712,将存储在拉FIFO中的新P(Pnew)存储在共享存储器206中。处理继续执行方框714。
在方框714,将与包括ALU 316的数据处理路径相关联的配置寄存器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中的操作结果、即
Figure G2007800515487D00161
(累积缓冲器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和D1:
D 0 = a 2 * D 2 ⊕ a 3 * D 3 . . . . . . ⊕ a n * D n ⊕ a * P ⊕ a * Q (式5)
D 1 = b 2 * D 2 ⊕ b 3 * D 3 . . . . . . ⊕ b n * D n ⊕ b * P ⊕ b * Q (式6)
通常,首先计算D0。D1可利用D0如下计算:
D 1 = D 0 ⊕ D 2 ⊕ D 3 . . . . . . ⊕ D n ⊕ 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可以按照集合{D0,D1,D2,D3,P,Q}与乘数系数{m0,m1,m2,m3,mP,mQ}的线性组合来计算。在一个实施例中,集合中的每个数据块可具有512个字节,并且每个乘数系数是一个字节并运用到整个数据块。因此,执行以下操作以恢复D4和D5:
D 4 = ( m 0 * D 0 ⊕ m 1 * D 1 ⊕ m 2 * D 2 ⊕ m 3 * D 3 ⊕ mP * P ) ⊕ mQ * Q
D 5 = ( D 0 ⊕ D 1 ⊕ D 2 ⊕ D 3 ⊕ P ) ⊕ D 4
在方框800,配置每条数据处理路径的ALU 314、316。与ALU 314相关联的配置寄存器400配置如下:将计算模式字段410设置成NULL,并将累积字段408设置成累积。与另一条数据处理路径中的ALU 316相关联的配置寄存器400配置如下:将计算模式字段410设置成GF8MUL,并将累积字段408设置成累积GF8MUL操作的结果。处理继续执行方框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存储以下操作的结果:
Figure G2007800515487D00181
Figure G2007800515487D00182
用P的乘数系数配置与包括ALU 314的数据处理路径相关联的配置寄存器400。P块流入ALU 314、316。累积缓冲器306、308存储以下操作的结果:
Figure G2007800515487D00183
Figure G2007800515487D00184
在方框810,用Q的乘数系数配置与包括ALU 316的数据处理路径相关联的配置寄存器400;与包括ALU 314的数据处理路径相关联的配置寄存器400配置成不累积此操作的结果。Q数据流入ALU 314、316。ALU 316中的操作结果、即
Figure G2007800515487D00185
(累积缓冲器308的内容)是恢复后的D4,它被转发给拉FIFIO并回到累积缓冲器308。在对Q块执行完每个ALU中配置的操作之后,累积缓冲器306、308存储以下操作的结果。
Figure G2007800515487D00186
mQ * Q )
Figure G2007800515487D00188
处理继续执行方框812。在方框812,将恢复后的D4的数据存回到共享存储器206。处理继续执行方框814。
在方框814,将与包括ALU 314的数据处理路径相关联的配置寄存器400配置成XOR和累积;将与包括ALU 316的数据处理路径相关联的配置寄存器400配置成使来自该路径的结果不能返回到累积缓冲器。D4数据流入ALU 314、316。ALU 314中的操作结果、即
Figure G2007800515487D00189
(累积缓冲器306的内容)是恢复后的D5,它被转发给拉FIFO并回到累积缓冲器306。即,执行以下操作:
D 5 = ( D 0 ⊕ D 1 ⊕ D 2 ⊕ D 3 ⊕ P ) ⊕ D 4
结果存储在累积缓冲器306中。在方框816,将数据盘D5的恢复后的数据返回到共享存储器。
除了结合图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。与ALU 314相关联的状态寄存器500中的结果零检查字段502的状态指示是否检测到错误比较。并且,数据块中的第一个错误比较(miscompare)字节的字节地址可存储在状态寄存器500的字节地址字段504中。
图10是用于执行结果非零检查的方法的实施例,该方法可在如图2所示的加速单元208中执行。
在方框1000,将ALU 314的配置寄存器400配置成执行结果非零检查操作。将ALU 314的配置寄存器400的计算模式字段410设置成NULL,将保持状态字段404设置成更新状态,并将累积字段408配置成不累积结果。将ALU 316的配置寄存器400的计算模式字段410也设置成不累积结果的NULL。处理继续执行方框1002。
在方框1002,来自数据块的数据从共享存储器流入ALU 314、316,并且在逐个字节基础上执行NULL操作,其中没有数据存储在累积缓冲器306中。
在方框1004,在数据流过ALU 314、316之后,读取与ALU 314相关联的状态寄存器500。与ALU 314相关联的状态寄存器500中的结果零检查字段502的状态指示是否检测到结果非零。并且,块中的第一个非零结果字节的字节地址可存储在状态寄存器500的字节地址字段504中。
在另一个实施例中,可将一条数据处理路径中的ALU配置成执行结果非零检查,而将另一条数据处理路径中的ALU配置成执行比较检查。可对相同数据块并行执行这两个操作。
增强的字节搜索功能可在公共密钥加密系统(PKCS)和随机数生成器(RNG)中用于例如在形式为0*0x01*的消息的起始端搜索零字节或寻找变量模式。在后一种情况下,变量模式的位置指示格式良好的消息正文的起始端。对格式良好的消息正文的起始端的搜索非常缓慢,并且在微引擎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可以是诸如下列的多个处理器中的任何一种处理器:单核
Figure G2007800515487D00211
Pentium处理器,单核Intel Celeron处理器,
Figure G2007800515487D00213
处理器,或诸如
Figure G2007800515487D00214
Pentium D、
Figure G2007800515487D00215
处理器或
Figure G2007800515487D00216
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协议的版本在由SerialATA工作组于2003年1月7日发布的“Serial ATA:High SpeedSerialized AT Attachment”(1.0a版)中进行了描述。SAS协议的版本在由美国国家标准协会(ANSI)于2003年9月18日发布的“Information Technology--Serial Attached SCSI--1.1,”Working DraftAmerican National Standard of International Committee For InformationTechnology Standards(INCITS)T10 Technical Committee,ProjectT10/1562-D(版本1)中进行了描述。光纤信道(FC)协议的版本在美国国家标准协会(ANSI)Standard Fibre Channel Physical andSignaling Interface-2(FC-FS-2)(2005年8月9日规范)中进行了描述。
本领域技术人员将明白,在本发明的实施例中涉及的方法可在包括计算机可用介质的计算机程序产品中实施。例如,该计算机可用介质可由只读存储器设备(如致密盘只读存储器(CD ROM)盘或常规ROM设备)或计算机盘组成,该只读存储器设备或计算机磁盘上存储了计算机可读程序代码。
尽管参照其实施例特别示出和描述了本发明的实施例,但本领域技术人员将了解,在不背离随附权利要求所涵盖的本发明实施例的范围的情况下,可以在其中作出各种形式和细节的改变。

Claims (20)

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系统处理数据的加速单元,所述加速单元包括:
用于接收数据块的第一数据处理路径,所述第一数据处理路径包括用于存储所述数据块的第一累积缓冲器和用于对所述数据块执行第一操作的第一算术逻辑单元;以及
用于接收所述数据块的第二数据处理路径,所述第二数据处理路径包括用于存储所述数据块的第二累积缓冲器和用于对所述数据块执行第二操作的第二算术逻辑单元,所述第一数据处理路径和所述第二数据处理路径共享乘法器,所述乘法器对所述数据块执行乘法操作,所述数据处理路径中的每条数据处理路径并行处理所述数据块以在所述数据块经过所述数据处理路径的单次传递中提供第一结果数据块和第二结果数据块。
CN200780051548.7A 2006-12-19 2007-12-06 具有模式匹配的高性能raid-6系统体系结构 Expired - Fee Related CN101611376B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/642,315 US7664915B2 (en) 2006-12-19 2006-12-19 High performance raid-6 system architecture with pattern matching
US11/642,315 2006-12-19
PCT/US2007/086672 WO2008079624A1 (en) 2006-12-19 2007-12-06 High performance raid-6 system architecture with pattern matching

Publications (2)

Publication Number Publication Date
CN101611376A true CN101611376A (zh) 2009-12-23
CN101611376B CN101611376B (zh) 2012-06-20

Family

ID=39529025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200780051548.7A Expired - Fee Related CN101611376B (zh) 2006-12-19 2007-12-06 具有模式匹配的高性能raid-6系统体系结构

Country Status (5)

Country Link
US (1) US7664915B2 (zh)
EP (1) EP2115562B1 (zh)
JP (1) JP5182672B2 (zh)
CN (1) CN101611376B (zh)
WO (1) WO2008079624A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193746A (zh) * 2010-03-11 2011-09-21 Lsi公司 在分布式数据布局环境中优化冗余恢复的系统和方法
CN102609221A (zh) * 2012-02-07 2012-07-25 无锡众志和达存储技术有限公司 一种硬件raid5/6存储系统的架构及数据处理方法
CN107450852A (zh) * 2017-07-31 2017-12-08 郑州云海信息技术有限公司 一种存储空间处理方法、装置和设备

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4935367B2 (ja) * 2007-01-19 2012-05-23 富士通株式会社 Raid装置及びガロア体の積演算処理方法
US7930586B1 (en) * 2008-02-07 2011-04-19 At&T Intellectual Property Ii, L.P. Error rate reduction for memory arrays
WO2010034167A1 (zh) * 2008-09-28 2010-04-01 北京大学深圳研究生院 一种集成电路的处理器结构
EP2297741A1 (en) * 2008-11-19 2011-03-23 LSI Corporation Memory efficient check of raid information
US9270698B2 (en) * 2008-12-30 2016-02-23 Intel Corporation Filter for network intrusion and virus detection
US8255773B2 (en) * 2009-06-29 2012-08-28 Sandisk Technologies Inc. System and method of tracking error data within a storage device
JP5544897B2 (ja) * 2010-01-22 2014-07-09 富士通株式会社 記憶装置、制御装置および記憶装置の制御方法
US8239625B2 (en) * 2010-01-24 2012-08-07 Freescale Semiconductor, Inc. Parity generator for redundant array of independent discs type memory
CN103034559B (zh) * 2012-12-18 2016-06-08 无锡众志和达数据计算股份有限公司 基于rdma架构设计的pq检验模块及检验方法
US9594634B2 (en) 2014-06-02 2017-03-14 Intel Corporation Techniques to efficiently compute erasure codes having positive and negative coefficient exponents to permit data recovery from more than two failed storage units
US9509773B2 (en) * 2014-09-10 2016-11-29 Futurewei Technologies, Inc. Array-based computations on a storage device
US10423487B2 (en) * 2016-08-19 2019-09-24 Samsung Electronics Co., Ltd. Data protection offloads using SSD peering

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0716145B2 (ja) * 1988-11-02 1995-02-22 日本電気株式会社 ディジタルトランスバーサルフィルタ
JP3418718B2 (ja) * 1996-03-19 2003-06-23 富士通株式会社 磁気テープ装置の制御装置及びその再同期信号検出方法
GB9707861D0 (en) * 1997-04-18 1997-06-04 Certicom Corp Arithmetic processor
US5978954A (en) 1997-11-25 1999-11-02 Palmchip Corporation On-the-fly error detection and correction buffer processor
US6247157B1 (en) * 1998-05-13 2001-06-12 Intel Corporation Method of encoding data signals for storage
JP2000259359A (ja) 1999-03-04 2000-09-22 Toshiba Corp Raid装置および記録媒体
US6396548B1 (en) * 1999-10-29 2002-05-28 Koninklijke Philips Electronics N.V. System and method for multimode operation of a digital filter with shared resources
JP3386427B2 (ja) * 2000-01-28 2003-03-17 シャープ株式会社 高位合成方法並びに高位合成方法の実施に使用される記録媒体
US6594796B1 (en) * 2000-06-30 2003-07-15 Oak Technology, Inc. Simultaneous processing for error detection and P-parity and Q-parity ECC encoding
US7020811B2 (en) * 2001-04-24 2006-03-28 Sun Microsystems, Inc. System and method for verifying error detection/correction logic
JP4054182B2 (ja) * 2001-09-25 2008-02-27 株式会社東芝 仮想的なraid装置を有するクラスタシステム及び同システム用のコンピュータ
US6883131B2 (en) * 2001-09-28 2005-04-19 Sun Microsystems, Inc. XOR processing incorporating error correction code data protection
US6748488B2 (en) * 2001-09-28 2004-06-08 Sun Microsystems, Inc. Storage array having multiple erasure correction and sub-stripe writing
JP2003317400A (ja) * 2003-02-14 2003-11-07 Fujitsu Ltd 磁気テープ装置の制御装置
JP2003288762A (ja) * 2003-02-14 2003-10-10 Fujitsu Ltd 磁気テープ装置の制御装置
US7698625B2 (en) * 2003-08-26 2010-04-13 Adaptec, Inc. System for improving parity generation and rebuild performance
JP2005316762A (ja) * 2004-04-28 2005-11-10 Toshiba Corp ディスク記憶装置及びraid構築方法
JP2006178926A (ja) * 2004-10-18 2006-07-06 Hitachi Ltd 複数のオブジェクトベースのストレージ装置を使用したストレージ装置、システム、および方法
US20060123271A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation RAID environment incorporating hardware-based finite field multiplier for on-the-fly XOR
JP2006171957A (ja) * 2004-12-14 2006-06-29 Fujitsu Ltd ストレージ制御装置および方法
US7343546B2 (en) * 2004-12-23 2008-03-11 Intel Corporation Method and system for syndrome generation and data recovery
WO2007012920A1 (en) * 2005-07-27 2007-02-01 Adaptec, Inc. Method and system for improving the performance of reed-solomon parity operations in redundant array of inexpensive disks
US7607068B2 (en) * 2006-08-31 2009-10-20 Intel Corporation Apparatus and method for generating a Galois-field syndrome

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193746A (zh) * 2010-03-11 2011-09-21 Lsi公司 在分布式数据布局环境中优化冗余恢复的系统和方法
CN102193746B (zh) * 2010-03-11 2015-11-25 Lsi公司 在分布式数据布局环境中优化冗余恢复的系统和方法
CN102609221A (zh) * 2012-02-07 2012-07-25 无锡众志和达存储技术有限公司 一种硬件raid5/6存储系统的架构及数据处理方法
CN102609221B (zh) * 2012-02-07 2015-07-08 无锡众志和达数据计算股份有限公司 一种硬件raid5/6存储系统及数据处理方法
CN107450852A (zh) * 2017-07-31 2017-12-08 郑州云海信息技术有限公司 一种存储空间处理方法、装置和设备
CN107450852B (zh) * 2017-07-31 2020-03-31 郑州云海信息技术有限公司 一种存储空间处理方法、装置和设备

Also Published As

Publication number Publication date
US7664915B2 (en) 2010-02-16
WO2008079624A1 (en) 2008-07-03
CN101611376B (zh) 2012-06-20
JP5182672B2 (ja) 2013-04-17
EP2115562A4 (en) 2011-12-21
EP2115562A1 (en) 2009-11-11
JP2010514066A (ja) 2010-04-30
US20080148025A1 (en) 2008-06-19
EP2115562B1 (en) 2013-01-23

Similar Documents

Publication Publication Date Title
CN101611376B (zh) 具有模式匹配的高性能raid-6系统体系结构
US11573909B2 (en) Apparatus, system, and method for managing commands of solid-state storage using bank interleave
CN101084486B (zh) 用于校验子生成以及数据恢复的方法和系统
US9263102B2 (en) Apparatus, system, and method for data transformations within a data storage device
CN103793182B (zh) 用于可扩展存储保护的系统和方法
CN101625652B (zh) 多磁盘容错系统及生成校验块、恢复数据块的方法
CN101059751B (zh) 磁盘阵列恢复数据时增加磁盘访问并行性的方法和系统
CN101719086B (zh) 磁盘阵列容错处理方法和装置及容错系统
EP0689143A1 (en) Data storage subsystem
CN101236517A (zh) Raid系统和使用伽罗瓦域的数据恢复装置
CN101976175A (zh) 一种水平型分组并行集中校验的磁盘阵列的构建方法
CN101646994A (zh) 利用内存库交错管理固态存储器的命令的装置、系统及方法
GB2380836A (en) Fault-tolerant memory system having parity groups
CN102609221B (zh) 一种硬件raid5/6存储系统及数据处理方法
CN101976177A (zh) 一种垂直型分组并行集中校验的磁盘阵列的构建方法
CN102200938B (zh) 无需使用奇偶校验建立优于6级raid的冗余和容错性的方法
CN101976179B (zh) 一种垂直型分组并行分布校验的磁盘阵列的构建方法
EP1644817A2 (en) Multi-path data retrieval from redundant array
CN108604166A (zh) 冷存储系统的数据保护
Yang et al. Xhr-code: An efficient wide stripe erasure code to reduce cross-rack overhead in cloud storage systems
CN100419700C (zh) 磁盘容错系统及方法
Chai et al. Case study on the recovery of a virtual large-scale disk
US11586503B2 (en) Faster rebuilding of 2-disk failure in raid by efficient, modular, diagonal, concurrent parity
Shi et al. EC-Bench: Benchmarking Onload and Offload Erasure Coders on Modern Hardware Architectures
Sobe et al. FPGA-accelerated deletion-tolerant coding for reliable distributed storage

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120620

Termination date: 20181206