JP2002323991A - パリティセグメント計算方法 - Google Patents

パリティセグメント計算方法

Info

Publication number
JP2002323991A
JP2002323991A JP2002038049A JP2002038049A JP2002323991A JP 2002323991 A JP2002323991 A JP 2002323991A JP 2002038049 A JP2002038049 A JP 2002038049A JP 2002038049 A JP2002038049 A JP 2002038049A JP 2002323991 A JP2002323991 A JP 2002323991A
Authority
JP
Japan
Prior art keywords
parity
data
segment
segments
coefficients
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.)
Pending
Application number
JP2002038049A
Other languages
English (en)
Other versions
JP2002323991A5 (ja
Inventor
Barry J Oldfield
バリー・ジェイ・オールドフィールド
Robert A Rust
ロバート・エー・ラスト
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2002323991A publication Critical patent/JP2002323991A/ja
Publication of JP2002323991A5 publication Critical patent/JP2002323991A5/ja
Pending legal-status Critical Current

Links

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/1054Parity-fast hardware, i.e. dedicated fast hardware for RAID systems with parity
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

(57)【要約】 【課題】N+2パリティ計算の結果、複雑さが増えた環
境下において、充分なデータ処理量を維持することを目
的とする。 【解決手段】特定用途向け集積回路(ASIC)に組み
込まれたパリティセグメント計算モジュールによりパリ
ティセグメントを計算する。ASICは、中間計算結果
を保持する1以上の結果バッファと(602,60
4)、データセグメント及びデータセグメントに対応し
た係数を受信し演算して該1以上の結果バッファに書き
込まれうる中間演算結果を出力すべく配置された、1以
上の数学的演算子コンポーネント(606,608)
と、1以上の帰還線(614a,614b)とを含んで
いる。帰還線は、対応する結果バッファ(602,60
4)と対応する数学的演算子コンポーネント(606,
608)との間で結合され、パリティセグメント計算に
用いるために中間計算結果を数学的演算子に出力する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、冗長なディスクド
ライブシステムのパリティ演算に関し、特にかかるシス
テムであって、各ストレージストライプのパリティセグ
メントを2つ以上用いるもののパリティ演算に関する。
【0002】
【従来の技術】最近では、高記憶容量のデータストレー
ジシステムは、冗長なデータ記憶部のための複数の物理
ディスクドライブを採用している。この配置は、データ
アクセスを早めると共に1枚のディスクによる失敗によ
ると思われるデータの損失を防いでいる。
【0003】冗長データの記憶については2つの方法が
ある。第1の「ミラー」の方法によると、データは複写
され、記憶システムの2つの別領域に記憶される。例え
ばディスクアレイにおいては、同一のデータが2つの別
ディスクに記憶される。この方法は高性能、高稼働率と
いう長所がある。しかしながら、ミラーの方法はまた比
較的高価であり、特にデータ貯蔵コストを倍増させてし
まう。
【0004】第2の「パリティ」の方法によると、記憶
領域の一部が冗長データの記憶に用いられるが、冗長記
憶領域の大きさは、元のデータの記憶に用いられる残留
した記憶スペースよりも小さい。例えば、6つのディス
クを有するディスクアレイにおいては、5つのディスク
がデータの記憶に用いられ、6つ目のディスクが冗長デ
ータの記憶に用いられるが、このデータは「パリティ」
データと呼ばれる。パリティデータは、あるデータディ
スクからのデータの再構築を、生存ディスクからのデー
タと連携したパリティデータを用いて行う。パリティの
方法は、ミラーの方法より安価であるという点において
有利であるが、ミラーの方法に比べ、低性能、低稼働率
という性質がある。
【0005】本発明の1つの側面は、パリティ技術によ
って冗長データを記憶するという点である。パリティス
トレージを用いる従来のディスクアレイにおいては、ス
トレージディスク中のスペースは、多重の貯蔵ストライ
プに分けられ、そして各貯蔵ストライプがストレージデ
ィスクに渡って広がっている。各ストライプは貯蔵スペ
ースの多重セグメントにより構成され、各セグメントは
ストライプの一部であり、そのストライプはディスクア
レイの単一ストレージディスクに備えられている。
【0006】図1は従来のディスクアレイ12を示して
おり、6つのストレージディスクを備えている。この簡
略化された例においては、ストレージディスク中に広が
った5つのストレージストライプがある。図1はこれら
5つのストライプのうち1つにおけるデータおよび貯蔵
セグメントに脚光を当てている。
【0007】示しているストライプのデータセグメント
は、格子模様により示されている。この同じストライプ
の対応パリティセグメントは、黒塗りで示されている。
一般的にストライプを含む6つのセグメントのうち、5
つのセグメントがデータセグメントであり、6つ目のセ
グメントがパリティセグメントである。
【0008】このタイプのパリティストレージは、5+
1パリティストレージと呼ばれる。それは各パリティセ
グメントに対し、5つのデータセグメントがあるという
ことである。この仕組みは一般的に、N+1グルーピン
グと呼ばれ、ここではNがデータストライプ中における
データセグメントの実際の数である。
【0009】図1に示されるN+1冗長グルーピング
は、各物理記憶デバイスをロスから守っている。もし記
憶装置がうまくいかない場合、そのデータは生存データ
から再構築することができる。データの回復のために実
行される演算は、単純であり、よく知られている。一般
的に、単一のパリティセグメントPはデータセグメント
からDをもとに、以下の式により算出される:
【0010】
【数1】P=x+x+x+xn−1 ここでxからxn−1は、データセグメントDから
n−1からのデータに対応している。データセグメン
トの1つが失われた後、そのデータは同じ式における単
純な変化量により回復される。
【0011】
【発明が解決しようとする課題】しかしながら多くのシ
ステムにおいて、1つ以上の多くの記憶デバイスにおけ
る損失からの防護が重要になってきている。従って、冗
長記憶システムにおいてN+2グルーピングを実行する
必要が出てきている。
【0012】N+2冗長グルーピングは、データ防護を
強める一方、より高度な計算を伴う。それは最初のパリ
ティセグメントの計算と、失われたデータセグメントの
再構築の両方においてである。
【0013】N+2パリティコンピュータ演算の一般的
な形式は次の通りである:
【0014】
【数2】 P=p+p+p+pn−1n−1 Q=q+q+q+qn−1n−1 ここで、Pは第1パリティセグメントの値であり;Qは
第2パリティセグメントの値であり、xからxn−1
はデータセグメントの値であり、pからpn− 及び
からqn−1は、与えられたパリティ形式に特有な
定数係数である。
【0015】これらの式は連立方程式を形成し、線形代
数の規則にのっとって、潜在的にx からxの2つの
未知数を解くことができるものであり、2つのうまくい
かなかった記憶装置の単一のストライプと同じ働きをす
る。1つの要件として、係数pi及びqiの2つの組が線形
独立であるというものがある。この要件は、例えばp
=1、p=1、p=1、・・・、そしてq=1、
=2、q=3、・・・、であれば充足される。他
の例においても同様に可能である。
【0016】N+2パリティの数学的処理はよく知られ
ており、本記述の主題ではない。しかしながら、N+2
パリティ計算はN+1パリティ計算より著しく複雑であ
ることは上述の簡単な説明により明らかである。実際の
N+2ディスクアレイの実行において、この複雑さはス
トレージデバイスコントローラのデータ処理量を制限す
るおそれがあり、その結果すべてのディスクアレイに対
して及ぶ。
【0017】本発明は、N+2パリティ計算の結果とし
て複雑さが増えたにもかかわらず、充分なデータ処理量
を維持することができる方法及び手段を提供する。
【0018】
【課題を解決するための手段】本発明の一側面として、
あらゆる可能なパリティ関連計算を異なるシナリオとし
て扱うことができる。係数サブセットは、それぞれ異な
るシナリオに合わせて選択され又は計算され、そして初
期化の過程においてメモリテーブルに記憶される。ある
特定の演算を実行するに当たり、そのシナリオが識別さ
れ、そして対応した係数サブセットが見付けられる。そ
のときハードウェア論理には、実際のパリティ演算の実
行のため、識別された係数サブセットの使用が通知され
る。このことにより、以降で計算され選択される係数を
用いた、とても効率的な計算がなされる。ある実施形態
によると、パリティセグメントは、特定用途向け集積回
路(ASIC)に包含されているパリティセグメント計算モ
ジュールにより計算される。ASICは中間計算結果保持用
バッファを1以上含み、又一方、データセグメント及び
そのデータセグメントに関係した係数を受け取るよう構
成され、及び1以上の結果バッファに書き込まれうる中
間計算結果を出力するよう構成された、1以上の数学的
演算子コンポーネントを含み、さらに1以上の帰還線を
含む。帰還線は、関係する結果バッファと関係する数学
的演算子の間で結合され、中間計算結果をパリティセグ
メント計算に用いるべく数学的演算子に出力する。
【0019】
【発明の実施の形態】パリティ演算 図2によると、本発明に係る冗長データ記憶システム2
0は、ストレージディスク22をデータストライプ24
とともに使用する。各データストライプ24は、複数デ
ータセグメントxからxN−1と少なくとも対応した
パリティセグメントP及びQを備えている。P及びQ
は、データセグメントxからxN−1、パリティ係数
からpN−1の第1セット、及びパリティ係数q
からqN− の第2セットから得られる。パリティ係数
は以下の式に示される各データセグメントに対応してい
る:
【0020】
【数3】 P=p+p+p+pn−1n−1 Q=q+q+q+qn−1n−1
【0021】本発明に関して、パリティ演算は、パリテ
ィセグメント生成演算、パリティセグメント再生成演
算、データセグメント再構築演算に区分される。
【0022】パリティセグメント生成演算が実行される
のは、新たなデータストライプが生成されるとき−パリ
ティセグメントが完全に新しいデータに基づいて生成さ
れるときである。
【0023】パリティセグメント再生成演算が既存のス
トライプについて実行されるのは、新たなデータが新た
なデータセグメントの要因となるときか、読み出し/修
正/書き込みのサイクルで1以上のデータセグメントを
修正するときである。パリティセグメント再生成演算に
おいては、パリティセグメントが、まるまる1つデータ
ストライプを読まずに増分的に修正される。例えば、新
たなデータにより、新たなデータセグメントx・P
newが以下の通り計算される場合について想定する:
【0024】
【数4】Pnew=Pold+p
【0025】同様に、データセグメントx2が読み出し
/修正/書き込みサイクルの結果として修正される場合
を想定する。この場合、Pnewは以下の通り計算され
る:
【0026】
【数5】Pnew=Pold−P2old+p2new
【0027】新たなP及びQ値を古いデータセグメント
値から計算することは、各ストライプ修正後の一番最初
からP及びQ値を計算するのに比べ、少ないメモリで済
む。
【0028】本発明に関連し、パリティセグメント再生
成演算はさらに、追加データセグメントの結果としての
パリティ再生成又は修正データセグメントの結果として
のパリティ再生成のいずれかに区分される。
【0029】データセグメント再構築演算は、2つの補
助区分を含む:単一データセグメント再構築演算及びダ
ブルデータセグメント再構築演算である。単一データセ
グメントは、P又はQパリティセグメントを生存データ
セグメントと組み合わせることで再構築することができ
る。一般的に、データセグメントxaはパリティセグメ
ントP又はQより以下の通り再構築される:
【0030】
【数6】x=f(p,p)x+f(p
)x+・・・+f(p)P+・・・+f(p
N−1,p)xN−1=f(q,q)x+f(q,q)x
・・・+f(q)P+・・・+f(qN−1,q
N−1 ここでf()は変換関数であり、用いられるパリティ生
成コード特有の適当な係数を生成する。
【0031】これらの式を実行すると次のようになる:
【0032】
【数7】x=p −1(p+p・・+P
+・・+pn−1n−1) x=p −1(q+q+・・+Q+・・
+qn−1n−1
【0033】2つのデータセグメントは生存データセグ
メントとともにP及びQパリティセグメントから再構築
することができる。一般的に、2つのデータセグメント
及びxはパリティセグメントP又はQより以下の
通り再構築される:
【0034】
【数8】 ここでf()は変換関数であり、用いられるパリティ生
成コードを適当な係数から特に生成する。
【0035】これらの式を実行すると次のようになる:
【0036】
【数9】
【0037】一般的に、上述のパリティ演算はすべて、
有限数の係数を持つベースセットから選択された既知の
係数の異なる組み合わせを用いることにより実行するこ
とができる。これらの係数はp-pN−1,q-q
N−1及び変換関数f()の結果得られた係数を含む。
特定のパリティ演算は、計算された実際のデータ又はセ
グメントに依存して、これらの係数のサブセットを用い
る。特定の計算に必要な係数の、特定のサブセットは、
演算区分及び、要件となる特定のデータとパリティセグ
メントの両方に依存している。従って、パリティ演算の
与えられた区分内では異なる状況やシナリオがあり、そ
こでは異なる係数のサブセットをそれぞれ要求してい
る。データセグメントxをストライプに追加して、係
数p及びq が必要なとき、例えばあるシナリオが起
こる。別のシナリオではデータセグメントxがストラ
イプに追加して、係数p及びqが必要となる。
【0038】係数サブセット 図3はメモリアレイ30を示し、これは複数の係数サブ
セット31を含んでいる。各係数サブセットは、予備選
択や予備計算された係数のリスト又は連鎖であり、デー
タの対応セグメントに適用されてパリティ計算結果を生
成する。本発明に関連して、異なるサブセットの係数
は、各異なる演算シナリオのために予備選択され記憶さ
れる。それからそのサブセットは、参照やパリティ演算
論理のためにフォーマットされ線形メモリアレイにつめ
られる。異なるシナリオは異なる数の計数を必要として
いるため、サブセットは同じ長さやサイズとはならな
い。
【0039】上述の発明の実施形態においては、各係数
は単一バイトである。「つめる」という語は係数のサブ
セットや集まりが線形メモリで連鎖されていることを意
味し、好ましくは未使用スペースが介在しないようにし
て、記憶空間を集中させることをいう。
【0040】パリティ演算実行時にはサブセット化され
た係数とデータのセグメント(データセグメント又はパ
リティセグメント)の間に1対1の対応関係がある。各
係数は対応したデータセグメント又はパリティセグメン
トにのみ適用され、演算結果を生成する。
【0041】それぞれの可能なパリティ計算の場合やシ
ナリオに対し、1つの係数サブセットがアレイ中に含ま
れる。固有の指標となる式が、各特別の計算シナリオの
ためアレイ中におけるサブセットの最初の位置を決定す
るのに用いられる。一般的にサブセットは対で用意さ
れ、P及びQのそれぞれの計算に対応している。
【0042】図3を参照すると、メモリアレイ30は複
数の区分グループ、32、33、34、35、そして3
6を含み、それぞれ係数サブセット31を特定のパリテ
ィ演算区分に対応して含んでいる。区分グループ中の各
サブセットは、そのグループ区分内で起こる特別のシナ
リオのための係数を含んでいる。例外的に、与えられた
すべての区分グループ中で同じ大きさである係数サブセ
ットもある。
【0043】アレイ30内では、特定の区分グループ
は、アレイのはじめからグループのはじめまでのグルー
プオフセットを計算することで配置される。このグルー
プオフセットは、グループのためのアレイに対する基準
指標である。特定の係数サブセットを区分グループ内で
見付けるためには、グループのはじめからオフセットさ
れたサブセットが基準指標に加えられる。このことは、
望まれる係数サブセットのはじめに位置するアレイへの
指標を示している。
【0044】本発明の一実施形態に関連し、一般的なパ
リティ区分は次のように定義される: 1.パリティ生成演算− あらかじめデータやパリティ
が存在しない部分的又は全体の新たなストライプ。 2.追加されたセグメントから得られたパリティ再生成
演算− 新たなデータセグメントを2つのパリティセグ
メントに結合することによるストライプの増分的成長。 3.セグメント修正から得られたパリティ再生成演算
2つのパリティセグメントですでに結合されたデータ
セグメントの修正(読み出し/修正/書き込み)。 4.単一データセグメント再構築− パリティセグメン
トの1つ、及びストライプからの生存データセグメント
を用いた単一データセグメントの再構築。2つのストレ
ージデバイスがうまく動かない場合、その不調のストレ
ージデバイスがP又はQを持つこともあるため、P又は
Qパリティセグメントのどちらかからの再構築がサポー
トされる。 5.ダブルデータセグメント再構築− 2つのパリティ
セグメントP及びQ、及びストライプからの生存データ
セグメントを用いたストライプにおける2つのデータセ
グメントの再構築。
【0045】区分1係数サブセットの構成 アレイの第1区分グループ32はパリティ生成演算のた
めの係数サブセットを含む。パリティ生成演算により、
新たなxからxN−1までのセグメントからのP及び
Qセグメントが生成される。この区分グループ中には2
つの係数サブセットのみが存在する。そのサブセットは
それぞれパリティセグメントP及びQに対応している:
【0046】
【数10】P:{p,p,・・・pN−1}及び Q:{q,q,・・・qN−1} これらのサブセットは同じ長さ(N)である。
【0047】区分2係数サブセットの構成 アレイの第2区分グループ33は、ストライプに増分を
加えるパリティ演算のための係数サブセットを含む。こ
のタイプの演算は、新たな又は追加されたxからx
までの(ここではb>Nかつa≦b)データセグメント
の与えられた隣接した幅と連繋の上、P及びQセグメン
トを更新する。これらの演算には複数の異なるシナリオ
があり、データセグメント0からN−1までの間の中で
aからbまでのデータセグメントの領域すべてに対応し
ている。各シナリオは異なる係数サブセットを必要とし
ている。例えば、もし新たな又は追加されたデータセグ
メントがx及びxであれば、Pを計算するのに必要
となる係数サブセットは{p,p}である。もし新
たな又は追加されたデータセグメントがxからx
ある場合、Pを計算するのに必要とされる係数サブセッ
トは{p,p,p,p}である。データセグメ
ント0からN−1までの間の可能な幅の総和は、Nの値
に依存する。
【0048】区分グループ2の各係数サブセットは2つ
の初期パラメータを含み、それはそのサブセットがPの
計算に適用されるかQの計算に適用されるかを示してい
る。これらの初期パラメータ“0”又は“1”にセット
される。これらの係数の第1値が“1”であることは、
その計算がパリティセグメントPを要件とすることを示
している。これらの係数の第2値が“1”の値であるこ
とは、その計算がパリティセグメントQを要件とするこ
とを示している。いかなる時においても、これら2つの
パラメータのうちただ1つだけが“1”に等しくセット
される。
【0049】区分2のサブセットの残った係数は、それ
は新たに追加されたデータストライプから再生成される
のに用いられる係数の副レンジである。従ってその区分
グループは、複数の所定形式の係数サブセットを含んで
いる:
【0050】
【数11】P:{1,0,p,・・・p}及び Q:{0,1,q,・・・q
【0051】区分グループ33は、こうした複数のサブ
セットを含むが、これはNに依存しており、aからbの
各幅に対応し、0からN−1の大きな幅の中に入ってい
る。このセクションのアレイにおける係数サブセット
は、各演算シナリオについてb−aと同じとなる様々な
長さと大きさを持つ。
【0052】この区分グループ中、係数サブセットは長
さに従って配置されグループ化される。すなわち、係数
中の最小数を含む係数サブセットは、区分グループの先
頭部分中に配置される。係数中の最大値を含む係数サブ
セットは、区分グループの末尾に配置される。これらの
各グループ化において係数サブセットは、係数サブセッ
トによってカバーされる範囲のより小さい下付き係数に
沿って順番に配置される。従って、まずa=0を有する
サブセットが配置され、次にa=1を持つサブセットが
配置され、というように続いていく。
【0053】区分3係数サブセットの構成 第3区分グループの係数サブセットは、単一データセグ
メントが修正されたときにP及びQを更新するのに用い
られる。このタイプの演算は、修正データセグメントx
aが与えられることでP及びQの更新を行う。
【0054】区分2グループに関して、区分3の各サブ
セットにおける最初の2つのパラメータは、グループの
係数がPの計算又はQの計算のいずれに当てはまるかを
示している。これらの係数のそれぞれは、“0”又は
“1”のいずれかにセットされる。これらの係数の第1
値は、そのサブセットの係数がパリティセグメントPに
適用されることを示している。これらの係数の第2値
“1”は、そのサブセットの係数がパリティセグメント
Qを必要としていることを示している。
【0055】各サブセットは、単一残留係数を含み、そ
れは修正されたデータセグメントx に対応している:
【0056】
【数12】P:{1,0,p}及び Q:{0,1,q
【0057】第3区分グループ34は、そのようなサブ
セットをN組含んでおり、それは0からN−1までのa
のすべての値に対応している。なお、これらのサブセッ
トは区分2におけるa=bとなる係数サブセットという
特別なケースに対応しており、それゆえ新たな単一デー
タセグメントがストライプに加えられたときに用いるこ
とができる点に注意すべきである。
【0058】区分4係数サブセットの構成 第4区分グループ35の係数サブセットは、パリティセ
グメントの1つ及び生存データセグメントに基づき、単
一データセグメントxの再構築に用いられる。係数は
区分1の係数に密接に関係しているが、例外的にそれら
は再構築の演算を実行すべく、選択されたエラー訂正コ
ードについての数学的処理(f())に沿って変換され
る:
【0059】
【数13】P:{f(p,p),f(p
),・・・f(p),・・・f(p N−1
)} Q:{f(q,q),f(q,q),・・・f
(q),・・・f(q N−1,q)} さらに限定すると、
【0060】
【数14】
【0061】第4区分グループはそうしたサブセットを
N組含み、それは0からN−1までのaのすべての値に
対応している。なお、各サブセットにおいては、係数f
(p )又はf(q)はデータセグメントxに対応
している点に注意すべきである。
【0062】区分5係数サブセットの構成 第5区分グループ36における係数サブセットは、2つ
のパリティセグメント及び生存データセグメントに基づ
き2つのデータセグメントx及びxを再構築するの
に用いられる。その係数は、区分1の係数と密接な関係
があるが、例外的にそれらは再構築の演算を実行すべ
く、選択されたエラー訂正コードについての数学的処理
(f())に沿って変換される:
【0063】
【数15】
【0064】アレイの第5セクションはそうしたサブセ
ットを(N(N−1))/2組含み、0からN−1の
範囲内でa及びbのすべての可能な組み合わせに対応し
ている。各サブセットにおいては、係数(p,p
,q)はデータセグメントxに対応しており、
どのデータセグメントが再構築されたかに依存してい
る。
【0065】これらの式の1実行形態は次の通りとな
る:
【0066】
【数16】
【0067】係数サブセットの使用 図4は、上述のアレイ保存手法に対応したパリティ演算
の実行方法を示している。最初のステップ100は、異
なるパリティ演算をパリティセグメント生成演算、パリ
ティセグメント再生成演算、及びデータセグメント再構
築演算を含む区分への区分けを含む。さらに詳細には、
演算は次のいずれかに区分けされる。それは、パリティ
生成演算、追加セグメントにより得られるパリティ再生
成演算、セグメント修正により得られるパリティ再生成
演算、単一データセグメント再構築演算、又はダブルデ
ータセグメント再構築演算のいずれかである。パリティ
演算の各区分は、異なる複数の区分シナリオを含み、そ
れぞれパリティ係数の各サブセットを要件としている。
【0068】ステップ102は、個々のパリティ係数の
予備計算、及び異なるパリティ演算と異なるパリティ演
算のシナリオに用いられるパリティ係数サブセットの予
備選択を含んでいる。このステップはあらかじめ与えら
れた記述に対応して実行される。
【0069】ステップ104は、予備選択されたパリテ
ィ係数サブセットをすべて見出し付けられた線形メモリ
アレイに記憶することを含んでおり、ここでそれらはパ
リティ計算論理によりアクセスすることができる。
【0070】このステップは係数サブセットを予備フォ
ーマットすることをふくみ、その結果それはハードウェ
アベースのパリティ演算ロジックにより効率的に用いる
ことができる。特に、各サブセットの個々の係数は直前
のバイト又はストレージユニットにつめられており、特
にハードウェアベースのパリティ演算ロジックに対応し
た方法で順序化される。このステップの結果、メモリア
レイは各異なる計算シナリオに対応した単一の係数サブ
セットを含むことになる。
【0071】各係数及び係数サブセットはデータ要素を
介在させることなくつめられる。アレイのサブセットは
上述のように、その区分の順序に沿った区分グループへ
とグループ化され順序化される。第2の区分グループに
おいては、そのサブセットは様々な大きさをもつ。さら
に、第2区分グループのサブセットは大きさにより補助
的な区分がなされ、最小数の係数に従って昇順に並べら
れる。
【0072】パリティ演算中、パリティ演算論理は、パ
リティ演算の異なるシナリオに用いられる適切な係数サ
ブセットを得るべくメモリアレイにアクセスする。従っ
て、ステップ106は、記憶されたパリティ係数のうち
どのサブセットが特定のパリティ演算に必要となるかを
決定することを含む。このステップはパリティ演算の区
分化及びグループオフセットの決定を要件としており、
それはパリティ演算区分に対応した区分グループを示し
ている。サブセットのオフセットは、そのときグループ
化すべく計算され、所望の係数サブセットに配置され
る。
【0073】ステップ106は、第2区分グループを除
けばそのままである。既に詳述した通り、第2区分グル
ープは様々な長さや大きさの係数サブセットを含んでお
り、定数係数サブセットのオフセット決定を困難にして
いる。しかしながら、第2区分グループが上述のように
並べられたときに同じ大きさとなる係数サブセットのサ
ブグループを順序化しているので、特定のサブグループ
は、サブグループの係数サブセットの大きさ及びN(す
べてのサブグループに含まれる係数の最大値)の関数と
して計算することができる。特に、サブセットの大きさ
に対応する、特定のサブグループiについてのオフ
セットは以下の式に等しい。
【0074】
【数17】
【0075】この式はP及びQに対応するプリペンドさ
れた定数の対(上述の通り)の各サブセットの存在を前
提としている。しかしながらLはb−aに等しい。サブ
グループi内では、特定の係数サブセットのオフセット
はa(L+2)に等しい。従って、xからxに対
応する係数の領域の区分グループへのオフセット全体
は、
【0076】
【数18】
【0077】第2区分グループの大きさは次の式で与え
られる:
【0078】
【数19】
【0079】メモリアレイへの適切なオフセットが決定
された後、ステップ108はメモリからの決定されたパ
リティ係数サブセットの読み出しを実行する。ステップ
110は、メモリから読み出されたパリティ係数のサブ
セットとともに特定のパリティ演算を実行することを含
んでいる。
【0080】ディスクコントローラ演算 図5は、本発明のディスクコントローラ200における
最重要部を示している。ディスクコントローラはマイク
ロプロセッサ201及び接続されたメモリ202を含ん
でいる。さらにディスクコントローラは、ハードディス
クインターフェースコンポーネント203及び通信コン
ポーネント204を備えている。ハードディスクインタ
ーフェースコンポーネントは、ディスクコントローラに
より接続され制御されている、ハードディスクへの接続
手段を備えている。通信コンポーネントはホストコンピ
ュータとハードディスクコントローラのインターフェー
スとして動作している。
【0081】これらのコンポーネントに加え、ハードデ
ィスクコントローラ200は特定用途向け集積回路(A
SIC)の形となっているハードウェアベースのパリテ
ィ演算論理205を含んでいる。「ハードウェアベー
ス」という語の意味として意図するところは、この論理
コンポーネントが、ソフトウェアベース論理に対する概
念として、プログラムメモリからの命令の検索や実行を
行わないということである。適切に言えば、この論理コ
ンポーネントは、特定用途であり相互接続している論理
コンポーネントであって、信号やデータを処理するもの
である。このようなハードウェアベース論理はマイクロ
プロセッサや他の命令ベースのプロセッサに対して自由
度が低いが、大抵の場合ハードウェアベース論理は命令
ベースの論理に対して相当に速い。
【0082】一般的にディスクコントローラの演算は次
のようになされる。マイクロプロセッサ201はホスト
コンピュータとの通信を処理し、ホストコントローラか
らやホストコントローラへのすべてのデータ転送を取り
扱う。さらに、マイクロプロセッサはすべての実ディス
ク転送を取り扱う。しかしながら、データはディスクへ
の書き込みに優先してメモリ202に保持される。マイ
クロプロセッサ201の制御のもと、メモリ202のデ
ータに基づきパリティ演算が実行される。
【0083】初期化の際に、マイクロプロセッサ201
は、メモリ202中の係数サブセットテーブルを構築す
る。その結果として、パリティ演算時にマイクロプロセ
ッサ201はパリティ演算の区分及びシナリオを決定す
る。この情報が決定されると、マイクロプロセッサはパ
リティ演算の対象となる1以上のデータセグメント及び
パリティセグメントのメモリ202における位置を示す
スクリプトを作成する。このスクリプトは係数サブセッ
トテーブルへのオフセットを示し、このテーブルでパリ
ティ演算及び係数サブセットに含まれる係数の数に対応
した適切な係数サブセットが見付けられる。このスクリ
プトはまた、メモリ中の位置を示し、ここに要求された
計算の結果が配置される。各スクリプトは、単一パリテ
ィ演算と、ここでタスク記述ブロック(TDB)と呼ば
れるそのスクリプトを記憶するためのメモリ構造を記憶
する。TDBはメモリ202の特定位置に記憶され、そ
の位置(例えば64ビットアドレスなど)へのポインタ
はメモリ202中のTDBキュー214に記憶される。
【0084】スクリプトがメモリに記憶されたとき、ハ
ードウェア論理には、キュー214のスクリプトについ
てTDBへのポインタが存在することが通知される。ハ
ードウェア論理の応答は次のものによりなされる。
(a)指定された係数、データセグメント、及びパリテ
ィセグメントを検索すること、(b)指定された係数に
基づき適当なパリティ演算を実行すること、そして
(c)データや計算されたパリティセグメントをメモリ
に返すこと。ハードウェア論理はまた、任意でマイクロ
プロセッサ201に演算が成功裏に完了したこと(又は
二者択一的に処理が成功裏に完了しなかったこと)を通
知することもできる。
【0085】ハードウェア論理は、係数と、データ/パ
リティセグメントとの積を加算することにより異なる様
々な演算を実行できるよう配置されている。実際のとこ
ろ、その異なる演算では、係数、データセグメント、及
びパリティセグメントの、数及び選択についてのみ変更
を行う。これらの変数はスクリプトにより特定される。
従ってこの演算は、ハードウェアベースの計算にとても
都合よく寄与している。
【0086】結果バッファ 現在記述しているシステムの目的の1つは、パリティセ
グメントを、この場合はP及びQを可能な限り素早く効
率的に生成し計算することである。思い出しておくべき
ことは次の通りである。パリティセグメントは、x
らxN−1までのデータセグメント、パリティ係数p
からpN−1までの第1セット、qからqN−1まで
の第2セットにより、上で詳述されたように次の式に従
って計算される:
【0087】
【数20】
【0088】P及びQを計算するための1つの方法によ
ると、外部メモリより1以上のデータセグメントを読み
出し、データセグメントを演算して中間計算結果を出力
し、中間計算結果を外部メモリに出力する。次に、中間
計算結果は外部メモリより読み出され、外部メモリより
読み出された追加データセグメント(及び係数)ととも
に処理されて第2中間計算結果として出力し、外部メモ
リに出力される。パリティセグメントの作成中、多くの
回数外部メモリとの間で読み書きしなければならないこ
とは大変都合が悪い、というのも、他にも理由はあるが
特に、外部メモリの読み書き演算を実行する仕組みやこ
れに関するオーバーヘッドのためであるが、このことは
当業者であれば理解され認識されると思われる。
【0089】図6はパリティ計算モジュール600の一
実行形態を示しているが、これはパリティセグメントの
計算中、外部メモリが読み書きしなければならない回数
をめざましく減少するものである。これによりパリティ
セグメントの迅速かつ効率的な計算が可能となる。パリ
ティ計算モジュールは、ハードウェア、最も望ましくは
ASICを含んだもので具現化されるのが都合がよい。
モジュール600の典型的なものは、入力バッファ60
1及び1以上の結果バッファを含む。特にこの例におい
ては、2つの典型的な結果バッファ602、604が備
えられている。各結果バッファは個々のパリティセグメ
ントと関連付けられている。それゆえ、この例において
は、結果バッファ602はパリティセグメントPと関連
付けられ、結果バッファ604はパリティセグメントQ
と関連付けられている。この例においては、結果バッフ
ァはSRAM(同期RAM)として具現化される。多重
結果バッファが単一SRAMにより具現化されることは
理解されるであろう。例えば、図に示した結果バッファ
602、604は、単一SRAMとして具現化される。
そうすることは、特にパリティ計算モジュール600が
ASICとして具現化される場合に、当業者に理解され
るように、チップの収容領域を守るといった利点をもた
らす。
【0090】また、1以上の数学的演算子コンポーネン
トも含まれている。本発明においては、2つのかかる数
学的演算子コンポーネント606、608が備えられ、
またそれぞれ個々に結果バッファ602、604のそれ
ぞれ1つと対応付けられる。特にこの例では、数学的演
算子コンポーネント606は結果バッファ602と、出
力線606aを通して結合され、数学的演算子コンポー
ネント608は結果バッファ604と、出力線608a
を通して結合される。数学的演算子コンポーネントは、
この例においてはハードウェアに包含されている有限の
数学的演算子として具体化される。さらに各数学的演算
子コンポーネントは、データセグメントの入力、(入力
610)、係数の入力(P係数入力612a、Q係数入
力612b)、及び数学的演算子コンポーネントが接続
される各結果バッファからの帰還入力(入力614a、
614bのそれぞれ)を含む。
【0091】さらに、パリティ計算モジュール600
は、望ましくは1以上の追加ローカルメモリコンポーネ
ントを含むことができるが、これはパリティセグメント
の計算に用いられるデータをそれぞれ維持することので
きるものである。例えば、本件については、ローカルメ
モリコンポーネント616、618が備えられ、それぞ
れ予備計算されたパリティ係数を含むが、これはそれぞ
れパリティセグメント計算の際に用いられている。パリ
ティ係数は、望ましくはローカルメモリコンポーネント
に読み出され、その結果例えば外部DRAMなど外部メ
モリから読み出すことを必要とせずに何度も繰り返し用
いられるが、それはとても遅いという可能性がある。さ
らに(特に図面に示していないが)、ローカルメモリコ
ンポーネントは外部メモリから読み出しうるタスク記述
ブロックに割り当てることができる。このタスク記述ブ
ロックは、係数が配置されているすべてのアドレス(又
はポインタ)を含んでいる。データセグメントが処理さ
れるにつれて、タスク記述ブロックに維持されているア
ドレス情報はそれぞれ更新され、さらなる利用のため維
持される。このことで、パリティセグメント計算を必然
的に遅めている外部メモリへのアドレス情報の書き込み
が不要となる。
【0092】パリティ計算モジュール600がパリティ
セグメントの計算にどのように用いられているかを見通
す上で、次のことを考えて欲しい。RAIDディスクア
レイにおいて、データブロック及びパリティブロック
は、図1及び図2に示されるようにディスクに書き込ま
れる。すべてのデータブロック及びパリティブロックは
独自のディスクドライブに保存され、1つのドライブの
事故により2つのブロックが失われないようにしてい
る。そこに接続されているデータブロック及びパリティ
ブロックは、共に「RAIDストライプ」と呼ばれてい
る。「ストライプ」という語は、業界において、ディス
クへの書き込みを行うフォームでのデータやパリティブ
ロックを指すのに使われている。ディスクアレイは、シ
ステムにおけるすべてのデータ及びパリティブロックの
位置を追っておかなければならないので、比較的大きい
ブロックの大きさを持っておくことが一般的である。例
えば、あるシステムでは、データ及びパリティブロック
は64キロバイト又は256キロバイトの大きさであ
る。このことは以下でなされる議論の内容において重要
なポイントである。上では「フォーム」という語を用い
ているが、これはSDRAM中のデータを参照するとき
に「ストライプ」「ブロック」という語を使うからであ
る。しかしながら「ストライプ」という語は、一般的に
64キロバイト/256キロバイトを集めたものを呼
ぶ。
【0093】上述のシステムにおけるパリティエンジン
又は計算モジュールは、同期DRAM(SDRAM)に
記憶されたデータを演算するカスタムASIC中に配置
されている。もちろん、例えば2速度DRAMなど他の
タイプの外部メモリをSDRAMとともに使用すること
で、1つの典型タイプに限定されない構成とすることが
できる。
【0094】パリティ論理はディスクへの読み書きは行
わないが、外部メモリ(SDRAM)への読み書きは常
に行っている。(パリティ計算がシステムパフォーマン
ス改善のため背景的に実行される間に、時々データブロ
ックがディスクに書き込まれる。) 今度は典型的なパリティ計算処理について説明するが、
−−−64キロバイトのデータブロックA、B、C、D
が処理され、この例においてパリティブロックP及びQ
が生成される場合を仮定する。
【0095】データブロックA、B、C、Dは、ASI
Cの外側のメモリ−−この場合はSDRAM、に置かれ
ている。この外部メモリはASICの内側に含めうるよ
りも遙かに大きなものである。
【0096】TDB(上述の参考文献に含まれる適用例
において詳述されている)は、次の情報を持つSDRA
Mにおいて生成される:
【0097】・実行される計算のタイプに関する情報 ・すべてのデータブロックの初期アドレス位置へのポイ
ンタ。データブロックA、B、C、Dに対して、そのポ
インタは、Aa、Ba、Ca、Daと呼ばれ、ここで付
加された“a”はアドレスを表す。 ・パリティブロック初期アドレス配置Pa及びQa ・データブロックがどのくらい大きいかに対応し、処理
対象となる長さ/大きさの値 ・係数が用いられる初期アドレスへの係数ポインタ ・計算処理完了後に結果メッセージが書き込まれるキュ
ー番号
【0098】バックグラウンドタスク論理(BGT)に
リクエストがなされ、BGTリクエストキューにエント
リを書くことで計算が実行される。BGTはTDBによ
り記述されたタスクを実行する。そのリクエストはその
演算が何であるか、及びTDBへのポインタについての
情報を持っている。
【0099】BGTロジックはリクエストキューエント
リを読み、リクエストポインタに参照されたTDBの読
み出しを行う。TDBはASIC内部の内部メモリに保
存される。図に示され記述された具体例において、内部
メモリはSRAMを含むが、他のタイプの内部メモリで
も可能である。
【0100】BGT論理は、TDBが予想されているも
のであることを認証すべく、リクエストキューエントリ
からのフィールドと、TDBのフィールドを比較する。
【0101】BGT論理はパリティ係数を読み出し、そ
れらを内部RAMに記憶する。
【0102】BGT論理は、今度は第1データブロック
の一部を読みだし、暫定入力バッファに記憶する。図6
の例において、これは入力バッファ601を構成する。
第1データブロックの一部のみが読み出されるが、これ
は上述の実施例では64キロバイトのブロック全体は読
み出すことができないからである。将来これは変わるか
もしれないことは理解されるであろう。しかしながら現
在において、多重に埋め込まれた64キロバイト内部R
AMを持つことは実現可能ではない。ロジックの最新具
体例の1つでは、内部バッファが512バイトの大きさ
である(1キロバイトは1024バイトであるから、5
12バイトは1/2キロバイト)。ここで、いわゆる
「ストライプ」が作用する。多くの、多くの中間的な5
12バイトのデータバッファを保存しなければいけない
ことを防ぐためには、ストライプは512バイトストラ
イプで処理されなければならない。512バイトバッフ
ァを用いて、データブロックは64キロバイト/0.5
キロバイト=128セグメントに崩される。A1−A1
28の専門用語は、続いての議論でAと呼ばれ、64キ
ロバイトのデータブロックを埋め合わせるものである1
28のセグメントを記述するのに用いられる。
【0103】計算処理についての説明を続ける。データ
ブロックパートのAが読み出される。どのパートを読み
出すかを決定すべく、我々はまず、長さの値をチェック
して、どのくらいの大きさのデータを処理する必要があ
るかを確認する。
【0104】長さ>512の場合、我々はAaアドレス
ポインタを用い、位置決定及び512バイトの読み出し
を開始する。このデータは処理され、新たな値はAに対
応したTDBアドレスポインタに保存される(新たなA
a=Aa+512)。TDBは内部RAMに保存される
ので、ポインタの更新により外部メモリのアクセスが行
われない点に留意すべきである。ここでP及びQバッフ
ァは、ストライプのA1,B1,C1,D1ストライプ
におけるA1に割り当てられた中間データを含んでい
る。
【0105】長さ<512の場合、我々はAaアドレス
ポインタを用い、位置決定及び「長さ分の」バイトの読
み出しを開始する。このデータは処理され、新たな値は
Aに対応したTDBアドレスポインタに保存される−−
(新たなAa=Aa+長さ分)。ここでP及びQバッフ
ァは、ストライプのA1,B1,C1,D1ストライプ
におけるA1に割り当てられた中間データを含んでい
る。
【0106】この処理は、残ったブロックセグメントに
ついて(ここでは例えばB,C,そしてD)繰り返され
る。
【0107】それからP及びQセグメントはSDRAM
のPa及びQaの位置に書き込まれ、Pa及びQaポイ
ンタはデータブロックポインタが更新されるたびに同様
に更新される。
【0108】今度は長さの値を更新する。長さが512
より大きい場合、長さ=長さ−512とする。長さは正
の値であるので、まだ処理すべきストライプが残ってい
ることになる。BGT論理が最初のデータブロックのパ
ートで読み出され、暫定入力バッファ601に保存され
るという点から、長さの値が512以下になるまで上述
の処理は繰り返される。
【0109】長さの値が512以下の場合、長さ=0と
し、ストライプ全体の処理を完了する。この例では第1
データブロックの読み出し、暫定入力バッファへの保
存、そして上述の処理、という処理が128回実行され
る。第1回では、A1,B1,C1,D1を処理し、P
1及びQ1を書き出す。最終回では、A128,B12
8,C128,D128が処理され、P128及びQ1
28が書き込まれる。
【0110】上述の処理はデータブロックの深さについ
ての計算を実行できることも理解され認識されるであろ
う。長さの値は8バイトの大きさから大きなメガバイト
(MB)に渡りうる。上述の特殊なアプローチにおいて
は、長さは8バイトの整数ワードでなければならないと
いう制限がある、というのも1度に8バイトの計算を実
行するからである。一般的な場合では、処理の幅は重要
ではない。
【0111】その結果、その処理ではTDBにのせられ
た結果キューに完了を示す書き込みを行う。結果エント
リは、処理が成功裏に終わるかエラーがあったかを示す
ステータスビットを含む。ここでその処理は、追加パリ
ティセグメントについて繰り返される。
【0112】図7は上述の実施例についての典型的な方
法を記述したフローチャートである。ここで記述された
方法は、図6のパリティ計算モジュール600との連繋
で具体化される。
【0113】ステップ700では1以上のデータセグメ
ントを受信する。図6に示された例では、各数学的演算
子606、608でデータセグメントが受信される。ス
テップ702で1以上のパリティ係数を受信する。この
例では、パリティ係数は各数学的演算子606、608
で受信される。望ましくは、パリティ係数はそれぞれの
ローカルメモリコンポーネント(コンポーネント61
8、618など)でそれぞれ維持され、そのシステムは
外部メモリに何回もアクセスしなくてもよくなる。
【0114】処理中この点において、これが1以上のパ
リティセグメントを計算するための最初に各数学的演算
子606、608の通過であったと仮定すると、ステッ
プ704では少なくとも1のデータセグメント及び少な
くとも1のパリティ係数で演算を行い、中間計算結果を
出力する。この例においては、各数学的演算子606、
608は、1以上のデータセグメント及び各セグメント
に関連した係数を演算して中間計算結果を出力すること
ができる。最初の数学的演算子の通過においては、61
4a、614bの線を経由した結果バッファへのフィー
ドバックは、数学的演算子によって実行される計算に影
響を与えない。このことは多くの手法でなされる。例え
ば第1の通過でなされるフィードバックは、単に数学的
演算子で無視することもできる。またフィードバック
は、第1の通過において0とすることも可能である。さ
らに、効率的ではないが、SRAMの関連した内容を第
1の通過において0とすることも可能である。これは、
長い時間をかけてしまい、処理オーバヘッドをもたらす
のであまり望ましくない。
【0115】データセグメント及びパリティセグメント
を演算して中間計算結果を出力したのち、ステップ70
6では中間計算結果を1以上のローカル結果バッファに
書き込む。ここで説明している例では、結果バッファは
SRAMを含む。図6の具体例では2つの別なSRAM
があり、それぞれ各パリティセグメントに対応してい
る。結果バッファが具現化されたSRAMを用いること
は、クロックサイクルのクロックの各端(edge)で演算
がなされるという点において有利である。このことは以
降、より明らかになる。
【0116】中間計算結果が結果バッファに書かれた
後、ステップ708では、1以上のデータセグメント、
1以上のパリティ係数、そして少なくとも1つの中間計
算結果を結果バッファから受信する。この例では、この
ステップは各数学的演算子606、608で具現化され
ている。特に、そのコンポーネントは上述の通りデータ
セグメント及び係数を受け取る。しかしながらさらに、
数学的演算子606、608は帰還入力614a、61
4bを介して既に結果バッファに書き込まれている各中
間計算結果を受け取る。それから数学的演算子606、
608は710において、データセグメント、係数、及
び中間計算結果により演算を行い、追加中間計算結果又
は計算されたパリティセグメントを出力する。もし別の
中間計算結果が出力されたら、ステップ706−710
はパリティセグメントが計算されるまで繰り返される。
【0117】多重ローカルメモリを具現化した1以上の
SRAMを用いることは、1クロックサイクル内で多重
演算が実行されるという点において有利である。特に、
各クロックサイクル内で、中間計算結果は結果バッファ
から検索され、数学的演算子によって演算され、次のク
ロックサイクルに向けて結果バッファに書き込まれるこ
とができる。この手法は非常に敏速であり、上述の外部
メモリへの多重アクセスを利用する技術を大幅に改良す
る。
【0118】結論 上述のパリティ計算アーキテクチャは、従来技術に比べ
多くの利点がある。重要な利点の1つとして、このアー
キテクチャはハードウェアベース論理で実行され、ハー
ドウェアで著しい複雑さを必要としないパリティ計算を
可能とする点がある。この利点を備えるため、マイクロ
プロセッサは、この計算で用いられるような様々なパラ
メータを設定するなどの予備作業を実行する。一度適切
な係数及びデータ/パリティセグメントが設定される
と、ハードウェアは同一ないしは同等の方法で、必要と
される特定演算タイプに関わらず、実際の計算をするこ
とができる。
【0119】係数サブセットの予備選択、及びそのメモ
リ内での配置を行うことは、すべてのパリティ演算に優
先した係数選択に必要な多くの工程を排除するのでかな
り効率を上げる。さらに独自指標による方法では、特に
上述の第2セクションのアレイについて、たとえ係数サ
ブセットが異なる長さを持っていたとしても、その係数
は空間を節約するようメモリ中でつめられる。
【0120】本発明では、特に構造的な特徴や方法論的
な工程の観点から説明してきたが、付された請求項中で
定義された発明は必ずしも記述した特定の特徴や工程に
限定されるわけではないことを理解されたい。むしろ特
定の特徴や工程は、請求項に記載の発明を具現化する好
ましい形式として開示されている。この発明は例とし
て、次の実施形態を含む。
【0121】(1)1以上のパリティセグメントを計算
すべく配置され、特定用途向け集積回路(ASIC)に包含
されたパリティ計算モジュール(600)におけるパリ
ティセグメント計算方法であって、1以上のパリティセ
グメントの計算に用いられる1以上のデータセグメント
を受け取るステップ(700)と、1以上のパリティセ
グメントの計算に用いられる1以上のパリティ係数を受
け取るステップ(702)と、該1以上のデータセグメ
ント及び該1以上のパリティ係数を演算し、中間計算結
果を出力するステップ(704)と、該中間計算結果を
ASICにある1以上のローカルバッファに書き込むステッ
プ(706)と、該1以上のローカルバッファからの中
間計算結果を用いて1以上のパリティセグメントを計算
するステップ(710)と、を含むパリティセグメント
計算方法。
【0122】(2)該ASICはパリティセグメント計算に
用いられるデータを保持するための多重のローカルメモ
リコンポーネント(616,618)を備える(1)に
記載のパリティセグメント計算方法。
【0123】(3)前記演算を行うステップでは、1以
上の有限な数学的演算子コンポーネントにより演算を実
行する(1)又は(2)に記載のパリティセグメント計
算方法。
【0124】(4)前記パリティセグメント計算方法
は、多重パリティ係数をASIC上のローカルメモリコ
ンポーネント(616,618)において維持し、外部
メモリアクセス動作を減少させるステップをさらに備え
る(1)から(3)のいずれか1に記載のパリティセグ
メント計算方法。
【0125】(5)前記パリティ係数を受け取るステッ
プでは、1以上のローカルメモリコンポーネント(61
6,618)から該係数を受信し、中間計算結果を出力
すべく配置された1以上の有限数の数学的演算子コンポ
ーネント(606,608)へと出力する(1)から
(4)のいずれか1に記載のパリティセグメント計算方
法。
【0126】(6)前記パリティセグメント計算方法
は、1以上のローカルバッファから、前記演算を実行す
べく配置された1以上の数学的演算子コンポーネントへ
のフィードバック出力を行うステップをさらに備える
(1)から(5)のいずれか1に記載のパリティセグメ
ント計算方法。
【0127】(7)中間計算結果を保持する1以上の結
果バッファと(602,604)、データセグメント及
びデータセグメントに対応した係数を受信し演算して該
1以上の結果バッファに書き込まれうる中間演算結果を
出力すべく配置された、1以上の数学的演算子コンポー
ネント(606,608)と、対応する結果バッファ
(602,604)と対応する数学的演算子コンポーネ
ント(606,608)との間で結合され、パリティセ
グメント計算に用いるために中間計算結果を数学的演算
子に出力する1以上の帰還線(614a,614b)
と、を少なくとも備える特定用途向け集積回路を含むパ
リティセグメント計算モジュール(600)。
【0128】(8)前記結果バッファ(602,60
4)は少なくとも1つはSRAMを含む(7)に記載の
パリティセグメント計算モジュール。
【0129】(9)前記結果バッファ(602,60
4)は複数のSRAMを含む(7)又は(8)に記載の
パリティセグメント計算モジュール。
【0130】(10)ASIC上で該係数を保持すべく
配置された1以上のメモリコンポーネント(616,6
18)をさらに備えた(7)から(9)のいずれか1に
記載のパリティセグメント計算モジュール。
【図面の簡単な説明】
【図1】従来技術に係るN+1冗長グルーピングを示し
たブロック図である。
【図2】本発明に係るN+2冗長グルーピングを示した
ブロック図である。
【図3】本発明に係るメモリテーブルを示したブロック
図である。
【図4】本発明に係る好ましいステップを示したフロー
チャートである。
【図5】本発明に係るディスクコントローラの適切な構
成要素を示したブロック図である。
【図6】本発明に係るパリティ計算モジュールの適切な
構成要素を示したブロック図である。
【図7】本発明に係るパリティ計算モジュールの適切な
動作を示したフローチャートである。
【符号の説明】
20 冗長データ記憶システム 22 ストレージディスク 24 データストライプ 200 ディスクコントローラ 201 マイクロプロセッサ 202 メモリ 203 ディスクインターフェース 204 通信部 205 ハードウェア論理 600 パリティ計算モジュール 602,604 結果バッファ 606,608 数学的演算子コンポーネント 614a,b 帰還線 616,618 ローカルメモリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 バリー・ジェイ・オールドフィールド アメリカ合衆国83616アイダホ州ボイジー、 ウエスト・ダニエル・コート 11302 (72)発明者 ロバート・エー・ラスト アメリカ合衆国83704アイダホ州ボイジー、 アラマー・ドライブ 5061 Fターム(参考) 5B001 AA01 AA02 AB02 AC01 AD04 AE06 5B065 BA01 CA30 EA02 EA12

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 1以上のパリティセグメントを計算する
    よう構成された、特定用途向け集積回路(ASIC)に包含
    されたパリティ計算モジュールにおけるパリティセグメ
    ント計算方法であって、 1以上のパリティセグメントの計算に用いられる1以上
    のデータセグメントを受け取るステップと、 1以上のパリティセグメントの計算に用いられる1以上
    のパリティ係数を受け取るステップと、 該1以上のデータセグメント及び該1以上のパリティ係
    数を演算し、中間計算結果を出力するステップと、 該中間計算結果をASICにある1以上のローカルバッファ
    に書き込むステップと、 該1以上のローカルバッファからの中間計算結果を用い
    て1以上のパリティセグメントを計算するステップと、
    を含むパリティセグメント計算方法。
JP2002038049A 2001-03-14 2002-02-15 パリティセグメント計算方法 Pending JP2002323991A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/808,910 US6687872B2 (en) 2001-03-14 2001-03-14 Methods and systems of using result buffers in parity operations
US09/808,910 2001-03-14

Publications (2)

Publication Number Publication Date
JP2002323991A true JP2002323991A (ja) 2002-11-08
JP2002323991A5 JP2002323991A5 (ja) 2005-08-18

Family

ID=25200086

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002038049A Pending JP2002323991A (ja) 2001-03-14 2002-02-15 パリティセグメント計算方法

Country Status (3)

Country Link
US (2) US6687872B2 (ja)
EP (1) EP1241576A3 (ja)
JP (1) JP2002323991A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101868834A (zh) * 2008-11-19 2010-10-20 Lsi公司 Raid信息的存储器效率检查

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687872B2 (en) * 2001-03-14 2004-02-03 Hewlett-Packard Development Company, L.P. Methods and systems of using result buffers in parity operations
US7062702B2 (en) * 2001-03-14 2006-06-13 Hewlett-Packard Development Company, L.P. Efficient parity operations
US6766480B2 (en) * 2001-03-14 2004-07-20 Hewlett-Packard Development Company, L.P. Using task description blocks to maintain information regarding operations
CN1279699C (zh) * 2001-06-06 2006-10-11 西加特技术有限责任公司 使用数据存储或数据传输的低密度奇偶校验码的方法和编码装置
US6996739B2 (en) * 2001-07-11 2006-02-07 Sun Microsystems, Inc. Accumulator memory for performing operations on block operands
US7234022B2 (en) * 2001-12-19 2007-06-19 Sun Microsystems, Inc. Cache accumulator memory for performing operations on block operands
US20030115416A1 (en) * 2001-12-19 2003-06-19 Nixon Walter T. Cache accumulator memory with an associativity mechanism
US7007220B2 (en) * 2002-03-01 2006-02-28 Broadlogic Network Technologies, Inc. Error correction coding across multiple channels in content distribution systems
US20050273651A1 (en) * 2004-05-18 2005-12-08 Aristos Logic Corporation Method of implementing XOR based raid algorithms
US7366852B2 (en) * 2004-07-29 2008-04-29 Infortrend Technology, Inc. Method for improving data reading performance and storage system for performing the same
US7555701B2 (en) * 2004-11-04 2009-06-30 Adaptec, Inc. Method and system for recovering from multiple drive failures
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
US7392428B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for recovering from abnormal interruption of a parity update operation in a disk array system
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
US20060123312A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
EP1681770A1 (en) * 2005-01-18 2006-07-19 Koninklijke Philips Electronics N.V. Error correcting code
US8370715B2 (en) * 2007-04-12 2013-02-05 International Business Machines Corporation Error checking addressable blocks in storage
US8201070B2 (en) * 2008-10-15 2012-06-12 Nokia Corporation System and method for pre-calculating checksums
US8327225B2 (en) 2010-01-04 2012-12-04 Micron Technology, Inc. Error correction in a stacked memory
US8788915B2 (en) * 2012-03-05 2014-07-22 Micron Technology, Inc. Apparatuses and methods for encoding using error protection codes
US9454333B2 (en) 2014-10-27 2016-09-27 International Business Machines Corporation Parity logs for RAID systems with variable capacity media
US9864546B1 (en) * 2015-01-08 2018-01-09 Marvell Israel (M.I.S.L) Ltd. FIFO-based operations for redundant array of independent disks (RAID) device
US10387412B1 (en) * 2015-02-12 2019-08-20 Cloud & Stream Gears Llc Incremental Z-score calculation for big data or streamed data using components
US11194663B2 (en) * 2019-09-20 2021-12-07 DigitalOcean, LLC Protocol for improving rebuild times of redundant array of independent disks

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4996690A (en) * 1988-08-26 1991-02-26 Stac Electronics Write operation with gating capability
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
US5499337A (en) * 1991-09-27 1996-03-12 Emc Corporation Storage device array architecture with solid-state redundancy unit
US5384788A (en) * 1992-10-26 1995-01-24 Dell Usa, L.P. Apparatus and method for optimal error correcting code to parity conversion
US5517514A (en) * 1992-11-12 1996-05-14 Amdahl Corporation Parity checking system with reduced usage of I/O pins
US5463643A (en) * 1994-03-07 1995-10-31 Dell Usa, L.P. Redundant memory channel array configuration with data striping and error correction capabilities
US6138125A (en) * 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
US6687872B2 (en) * 2001-03-14 2004-02-03 Hewlett-Packard Development Company, L.P. Methods and systems of using result buffers in parity operations

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101868834A (zh) * 2008-11-19 2010-10-20 Lsi公司 Raid信息的存储器效率检查
JP2012509523A (ja) * 2008-11-19 2012-04-19 エルエスアイ コーポレーション Raid情報のメモリ効率検査
JP2014041664A (ja) * 2008-11-19 2014-03-06 Lsi Corp Raid情報のメモリ効率検査
TWI498725B (zh) * 2008-11-19 2015-09-01 Lsi Corp 檢查獨立磁碟冗餘陣列(raid)資訊之方法及系統

Also Published As

Publication number Publication date
EP1241576A3 (en) 2004-09-22
US6687872B2 (en) 2004-02-03
US7111227B2 (en) 2006-09-19
US20020133783A1 (en) 2002-09-19
US20040083420A1 (en) 2004-04-29
EP1241576A2 (en) 2002-09-18

Similar Documents

Publication Publication Date Title
JP2002323991A (ja) パリティセグメント計算方法
US6567891B2 (en) Methods and arrangements for improved stripe-based processing
US5574882A (en) System and method for identifying inconsistent parity in an array of storage
JP3304115B2 (ja) 構成可能な冗長アレイ記憶装置
US5271012A (en) Method and means for encoding and rebuilding data contents of up to two unavailable DASDs in an array of DASDs
US6542960B1 (en) System and method for parity caching based on stripe locking in raid data storage
US5530948A (en) System and method for command queuing on raid levels 4 and 5 parity drives
US7406621B2 (en) Dual redundant data storage format and method
EP0503768B1 (en) Method and means for accessing arrays of DASDS
US20090265578A1 (en) Full Stripe Processing for a Redundant Array of Disk Drives
US6918007B2 (en) Memory controller interface with XOR operations on memory read to accelerate RAID operations
JPH04230512A (ja) Dasdアレイのための更新記録方法及び装置
JPH0785227B2 (ja) 並列計算システムにおける冗長パリティ保護方法
US6766480B2 (en) Using task description blocks to maintain information regarding operations
JP2004227560A (ja) 外部格納サブシステムにおけるパリティー格納方法及びエラーブロック復旧方法
WO1996033420A1 (en) Method and apparatus for storing and retrieving error check information
US20050278568A1 (en) Method and system for high bandwidth fault tolerance in a storage subsystem
US7062702B2 (en) Efficient parity operations
JPH10240453A (ja) ディスクアレイ装置
JP2570614B2 (ja) デイスクアレイ装置
JP2857289B2 (ja) ディスクアレイ装置
US20240232009A1 (en) Systems and methods of distributed parity calculation offloading
JP2914181B2 (ja) ディスクアレイ装置
JP3224741B2 (ja) データ記憶装置
JPH0736633A (ja) 磁気ディスクアレイ

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050201

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061010

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061228

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070109

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070402

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080311