JP2002278707A - ディスクコントローラ - Google Patents

ディスクコントローラ

Info

Publication number
JP2002278707A
JP2002278707A JP2002009660A JP2002009660A JP2002278707A JP 2002278707 A JP2002278707 A JP 2002278707A JP 2002009660 A JP2002009660 A JP 2002009660A JP 2002009660 A JP2002009660 A JP 2002009660A JP 2002278707 A JP2002278707 A JP 2002278707A
Authority
JP
Japan
Prior art keywords
parity
data
memory
tdb
segment
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
JP2002009660A
Other languages
English (en)
Other versions
JP2002278707A5 (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 JP2002278707A publication Critical patent/JP2002278707A/ja
Publication of JP2002278707A5 publication Critical patent/JP2002278707A5/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

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

Abstract

(57)【要約】 【課題】 大容量データ格納システムにおいて、タスク
記述ブロックを用いて演算に関する情報を維持し、適切
なデータスループットを確保する。 【解決手段】 ディスクコントローラはマイクロプロセ
ッサ及び演算ロジックの両方がアクセス可能なメモリを
含む。演算を実行するために演算ロジックが必要とする
情報は、マイクロプロセッサにより、メモリ内のタスク
記述ブロックに格納される。タスク記述ブロックへのポ
インタは、タスク記述ブロック待ち行列に加えられる。
すると、演算ロジックは、待ち行列内のポインタに基づ
いてタスク記述ブロックにアクセス可能となり、対応す
る演算を実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、実行する演算に関
連する情報の維持に関し、特にタスク記述ブロックを使
用して演算に関連する情報を維持することに関する。
【0002】
【従来の技術】最近の大容量データ格納システムは、デ
ータの冗長記憶のために複数の物理ディスクドライブを
利用することが多い。このような構成により、データア
クセス速度が向上すると共に、任意の単一ディスクの障
害により発生しうるデータ損失の保護が容易になる。
【0003】冗長データの記憶には2つの一般的な方法
がある。第1の方法、すなわち「ミラーリング」法で
は、データは複製されて記憶システムの2つの別個の領
域に格納される。ディスクアレイには、例えば、同一の
データが2つの別個のディスクに格納される。この方法
は、性能が高くまたデータ可用性も高いという利点があ
る。しかし、ミラーリング法は比較的高価でもあり、デ
ータ格納のコストが事実上2倍になる。
【0004】第2の方法、すなわち「パリティ」法で
は、記憶領域の一部を使用して冗長データを格納する
が、冗長記憶領域のサイズは、元のデータの格納に使用
される残りの記憶空間よりも小さい。例えば、6枚のデ
ィスクを有するディスクアレイでは、5枚のディスクを
データの格納に使用し、6枚目のディスクを「パリテ
ィ」データと呼ばれる冗長データの格納専用とする。パ
リティデータを生存ディスクからのデータと併せて使用
することで、1枚のデータディスクからデータを再構築
できるようになる。パリティ法は、ミラーリング法より
も費用が低いため有利であるが、同時にミラーリング法
と比較して性能が低く可用性も低いという特徴がある。
【0005】パリティ記憶を利用する従来のディスクア
レイでは、記憶ディスクにおける空間は、複数の記憶デ
ィスクにわたる複数の記憶ストライプに構成される。各
ストライプは複数の記憶空間セグメントからなり、各セ
グメントは、ディスクアレイの単一記憶ディスク上にあ
るストライプの一部分である。
【0006】図1は、6つの記憶ディスク13を有する従
来のディスクアレイ12を示す。この単純化した例では、
複数の記憶ディスクにわたる5つの記憶ストライプがあ
る。図1は、これら5つのストライプのうちの1つのス
トライプのデータセグメント及び記憶セグメントを強調
して示している。強調して示されたストライプのデータ
セグメントは、網掛けで示されている。このストライプ
に対応するパリティセグメントは、黒塗りで示されてい
る。一般に、任意の所与のストライプを構成する6つの
セグメントのうち、5つのセグメントはデータセグメン
トであり、6番目のセグメントがパリティセグメントで
ある。
【0007】この種のパリティ記憶は5+1パリティ記
憶と呼ばれ、単一のパリティセグメントにつき5つのデ
ータセグメントがあることを示している。この方式はよ
り一般的にN+1グループ化と呼ばれる。ここで、Nは
データストライプにおけるデータセグメントの実際の数
である。
【0008】図1に示すようなN+1冗長グループ化
は、任意の1つの物理記憶装置をデータ損失から保護す
る。記憶装置に障害が発生した場合、生存データからそ
のデータを再構築することができる。データを回復する
ために実行される計算は単純であり、この計算は既知で
ある。一般に、次式に従って、データセグメントD
N−1から単一のパリティセグメントPが計算され
る。
【0009】
【数1】 式中、x〜xN―1は、データセグメントD〜D
N−1からのデータに相当する。任意の単一データセグ
メントを損失した後、同じ式を簡単に変形することでそ
のデータを回復することができる。
【0010】しかし、多くのシステムでは、2つ以上の
記憶装置を損失から保護することが重要になりつつあ
る。そのため、冗長格納システムにおいてN+2グルー
プ化を実施することが必要になりつつある。
【0011】N+2冗長グループ化によりデータ保護が
強化されるが、その一方、最初のパリティセグメントの
計算及び任意の損失データセグメントの再構築の両方
で、より複雑な計算が必要となる。
【0012】N+2パリティ計算の一般式は、次のよう
になる。
【0013】
【数2】 式中、Pは第1のパリティセグメントの値であり、Qは
第2のパリティセグメントの値であり、x〜xN−1
はデータセグメントの値であり、p〜pN−1及びq
〜qN−1は所与のパリティ方式に固有の定数係数で
ある。
【0014】これらの式は、線形代数の規則により、任
意の2つの障害が発生した記憶装置の単一ストライプか
らのデータを表す任意の2つの未知のx〜xについ
て潜在的に解くことができる2つの等式システムを形成
する。1つの要件は、2つの係数セットp及びq
一次独立していることである。この要件は、例えば、p
=1、p=1、p=1、かつq=1、q
2、q=3の場合に満たされる。また他の例も可能で
ある。
【0015】N+2パリティの数学的処理は既知であ
り、本説明の主題ではない。しかし、上記の簡潔な説明
から、N+2パリティの計算はN+1パリティの計算よ
りもかなり複雑であることは明白である。N+2ディス
クアレイの実際の実施において、この複雑さは、記憶装
置コントローラ及び結果的にディスクアレイ全体のデー
タスループットを制限する恐れがある。
【0016】
【発明が解決しようとする課題】発明者Michael B. Jac
obsonによる「Efficient Parity Operations(効率的な
パリティ演算)」という名称の同時係属中の米国特許出
願(代理人整理番号10971442)には、N+2パリティ計
算により複雑性が追加されるにも関わらず、適切なデー
タスループットを維持するより効率的な方法が記載され
ており、この出願は参照により本明細書に援用される。
しかし、この同時係属中の出願に記載のより効率的な方
法及び手段を用いても、記憶装置コントローラのデータ
スループットは、パリティ計算の実行に必要な情報を格
納するためのメモリ構造が非効率的であることによりな
お悪影響を受けることがある。本発明は、タスク記述ブ
ロックを用いて、パリティ(または他の)演算に関する
情報を維持し、適切なデータスループットを維持する方
法及び装置を提供する。
【0017】
【課題を解決するための手段】本明細書では、タスク記
述ブロックを用いた演算に関連する情報の維持を説明す
る。
【0018】本発明の一態様によると、タスク記述ブロ
ック待ち行列は複数のタスク記述ブロックそれぞれを指
すポインタを格納し、各タスク記述ブロックは1つの演
算についての情報を格納する。演算のデータはメモリに
格納される。各タスク記述ブロックは、メモリに格納さ
れているデータを指すポインタと、演算ロジックが演算
の結果を格納すべきメモリ内の結果位置を指すポインタ
とを含めた、演算ロジックが単一の演算を実行するため
に必要な情報を格納する。この情報がすべてタスク記述
ブロックに格納されると、タスク記述ブロックを指すポ
インタがタスク記述ブロック待ち行列に格納され、演算
ロジックが要求するときにいつでもその演算を実行する
ことが可能になる。
【0019】パリティ演算に関連する本発明の別の態様
によると、タスク記述ブロック待ち行列は複数のタスク
記述ブロックそれぞれを指すポインタを格納し、各タス
ク記述ブロックは1つのパリティ演算についての情報を
格納する。パリティ演算についてのデータは、異なるパ
リティ演算に使用される様々な複数の係数と同様に、メ
モリに格納される。各タスク記述ブロックは、下記を含
め、パリティ演算ロジックが単一パリティ演算を実行す
るために使用する情報を格納する。すなわち、実行する
演算のタイプ、タスク記述ブロックのサイズ、オプショ
ンであるタグ番号(一貫性チェックのため)、実行する
演算のステータス結果のどれを格納するかについての応
答待ち行列の指示、メモリに格納されているデータを指
すポインタ、複数の係数のサブセットを指すポインタ、
サブセット内の係数の数の指示、及びパリティ演算ロジ
ックがパリティ演算の結果を格納するメモリ内の結果位
置を指すポインタを格納する。この情報がすべてタスク
記述ブロックに格納されると、タスク記述ブロックを指
すポインタがタスク記述ブロック待ち行列に格納され、
パリティ演算ロジックが要求するときはいつでもパリテ
ィ演算を実行することが可能になる。
【0020】
【発明の実施の形態】<パリティ演算>図2を参照する
と、本発明による冗長データ格納システム20は、データ
ストライプ24を有する格納ディスク22を利用する。各デ
ータストライプ24は、複数のデータセグメントx〜x
N−1と、少なくとも2つの対応するパリティセグメン
トP及びQとを含む。P及びQは、データセグメントx
〜xN−1、第1のパリティ係数セットp〜p
N−1、及び第2のパリティ係数セットq〜qN−
から導出される。パリティ係数は以下の式に従い、各デ
ータセグメントに対応する。
【0021】
【数3】
【0022】本発明において、パリティ演算は、パリテ
ィセグメント生成演算、パリティセグメント再生成演
算、及びデータセグメント再構築演算に分類することが
できる。
【0023】パリティセグメント生成演算は、新しいデ
ータストライプを作成する場合、すなわちパリティセグ
メントが全く新しいデータに基づいて作成される場合に
行われる。
【0024】パリティセグメント再生成演算は、新しい
データにより新しいデータセグメントが追加される場
合、または読み出し/変更/書き込みサイクルにより1
つまたは複数の既存のデータセグメントが変更される場
合に、既存のストライプに対して行われる。パリティセ
グメント再生成演算では、パリティセグメントが、デー
タストライプ全体を読み出すことなく増分的に変更され
る。例えば、新しいデータにより新しいデータセグメン
トxが追加されるものと想定する。PNEWは、次の
ように計算される。
【0025】
【数4】
【0026】同様に、読み出し/変更/書き込みサイク
ルの結果、データセグメントxが変更されるものと想
定する。この場合、PNEWは、次のように計算され
る。
【0027】
【数5】
【0028】古いデータセグメント値から新しいP及び
Qの値を計算するために要するメモリは、ストライプが
変更される都度初めからP及びQを計算するために要す
るメモリよりもはるかに少ない。
【0029】本発明によれば、パリティセグメント再生
成演算は、データセグメントの追加から生じるパリティ
再生成、またはデータセグメントの変更から生じるパリ
ティ再生成のいずれかにさらに分類することができる。
【0030】データセグメント再構築演算は、2つの下
位分類、すなわち、単一データセグメント再構築演算
と、二重データセグメント再構築演算とを含む。生存デ
ータセグメントと組み合わせて、Pパリティセグメント
またはQパリティセグメントのいずれかから、単一デー
タセグメントを再構築することができる。一般に、デー
タセグメントxは、次のようにしてパリティセグメン
トPまたはQのいずれかから再構築される。
【0031】
【数6】 式中、f( )は、使用しているパリティ生成コードに固
有の適切な係数を生成する変換関数である。
【0032】これらの式の実施形態の1つは、以下の通
りである。
【0033】
【数7】
【0034】生存データセグメントと組み合わせて、P
パリティセグメント及びQパリティセグメントから、2
つのデータセグメントを再構築することができる。一般
に、2つのデータセグメントx及びxは、次のよう
にしてパリティセグメントP及びQから再構築される。
【0035】
【数8】 式中、f( )は、使用しているパリティ生成コードに固
有の適切な係数を生成する変換関数である。
【0036】これらの式の実施形態の1つは、以下の通
りである。
【0037】
【数9】
【0038】一般に、上記パリティ演算はすべて、有限
個のかかる係数を有するベースセットから選択される既
知の係数の種々の組み合わせを用いることで達成するこ
とができる。これら係数は、p〜pN−1、q〜q
N−1、及び変換関数f( )から得られる係数を含む。
任意の特定のパリティ演算は、計算中の実際のデータセ
グメントまたはパリティセグメントに応じて、これら係
数のサブセットを利用する。特定の計算に必要な特定の
係数サブセットは、演算の分類及び関係する特定のデー
タセグメントやパリティセグメントの双方に依存する。
従って、所与のパリティ演算の分類内には種々の状況す
なわちシナリオがあり、それぞれに異なる係数サブセッ
トが必要となる。例えば、データセグメントxをスト
ライプに追加する場合、係数p及びqが必要とされ
る場合に1つのシナリオが発生する。データセグメント
をストライプに追加する場合、係数p及びq
必要な場合に別のシナリオが発生する。
【0039】<係数サブセット>図3は、複数の係数サ
ブセット31を含むメモリアレイ30を示している。各係数
サブセットは、対応するデータセグメントに適用されパ
リティ計算結果を生成する、予め選択された、かつ/ま
たは予め計算された係数のリストまたは連結である。本
発明によれば、異なる係数サブセットが予め選択され、
各異なる演算シナリオについて格納される。次に、パリ
ティ演算ロジックによる参照及び直接の使用のため、サ
ブセットはフォーマットされ線形メモリアレイにパック
される。異なるシナリオには異なる数の係数が必要であ
るため、サブセットは同じ長さまたはサイズである必要
はない。
【0040】本発明の実施形態において、各係数は単一
バイトである。「パックされる」という語は、好ましく
は使用していない空間に干渉することなく、係数のサブ
セットまたはストリングが線形メモリ内で連結され、記
憶空間を節約することを意味する。
【0041】ここで、パリティ演算を行う場合、サブセ
ット内の係数とデータのセグメント(データセグメント
またはパリティセグメントのいずれか)との間には1対
1の対応がある。各係数は、対応するデータセグメント
またはパリティセグメントにのみ適用されて、演算結果
を生成する。
【0042】可能な各パリティ計算のケースすなわちシ
ナリオにつき、1つの係数サブセットがアレイに含まれ
る。特定の各計算シナリオに関するアレイ内のサブセッ
トの開始位置を見つけるために、固有のインデックス式
を用いることができる。一般に、サブセットは、P及び
Qそれぞれに関わる計算に対応する対で構成される。
【0043】図3を参照すると、メモリアレイ30は、複
数の分類グループ32、33、34、35、及び36を含み、各分
類グループは、特定のパリティ演算分類に対応する係数
サブセット31を含む。分類グループにおける各サブセッ
トは、グループの分類内で発生する特定のシナリオに関
する係数を有する。1つの例外を除き、係数サブセット
は任意の所与の分類グループ内で同一のサイズである。
【0044】アレイの開始位置からグループの開始位置
までのグループオフセットを計算することで、アレイ30
内で特定の分類グループを見つけることができる。この
グループ・オフセットは、グループのアレイへのベース
インデックスである。分類グループ内で特定の係数サブ
セットを見つけるために、グループの開始位置からのサ
ブセット・オフセットがベースインデックスに加えられ
る。これにより、所望の係数サブセットの開始位置を見
つけるアレイ内へのインデックスが生成される。
【0045】本発明の一実施形態によれば、一般的なパ
リティ演算分類は以下のように定義される。
【0046】1)パリティ生成演算―既存のデータまた
はパリティを持たない部分ストライプまたは完全に新し
いストライプ。
【0047】2)セグメントの追加によって生じるパリ
ティ再生成演算―新しいデータセグメントを2つのパリ
ティセグメントに組み込むことによる、ストライプの増
分的成長。
【0048】3)セグメントの変更によって生じるパリ
ティ再生成演算―すでに2つのパリティセグメントに組
み込まれているデータセグメントの変更(読み出し/変
更/書き込み)。
【0049】4)単一データセグメント再構築―2つの
パリティセグメントの一方とストライプからの生存デー
タセグメントとを使用した単一データセグメントの再構
築。2つの記憶装置に障害が発生する場合に、障害が発
生した2つの記憶装置の一方がPまたはQを保持するこ
とができるため、PパリティセグメントまたはQパリテ
ィセグメントの何れかからの再構築がサポートされる。
【0050】5)二重データセグメント再構築―2つの
パリティセグメントP及びQと、ストライプからの生存
データセグメントとを用いたストライプの2つのデータ
セグメントの再構築。
【0051】<分類1の係数サブセットの構造>アレイ
の第1の分類グループ32は、パリティ生成演算のための
係数サブセットを含む。パリティ生成演算は、新しいP
セグメント及びQセグメントを新しいデータセグメント
〜xN−1から生成する。この分類グループには、
2つの係数サブセットしかない。サブセットはそれぞ
れ、パリティセグメントP及びQの生成に対応してい
る。
【0052】
【数10】 これらサブセットはそれぞれ同じ長さ(N)である。
【0053】<分類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の値に依存す
る。
【0054】分類グループ2の各係数サブセットは、サ
ブセットがPの計算に適用されるか、またはQの計算に
適用されるかを示す2つの初期パラメータを含む。これ
ら初期パラメータはそれぞれ「0」または「1」のいず
れかに設定される。これら係数のうちの最初の値「1」
は、計算がパリティセグメントPに関わることを示す。
これら係数の二番目の値「1」は、計算がパリティセグ
メントQに関わることを示す。これら2つのパラメータ
の一方のみが随時「1」に等しく設定されるべきであ
る。
【0055】分類2サブセット内の残りの係数は、新し
く追加されたデータストライプからP及びQを再生成す
るために使用される係数の部分範囲(sub-range)であ
る。従って、この分類グループは以下の形態の複数の係
数サブセットを含む。
【0056】
【数11】
【0057】分類グループ33は、Nに応じて、より広い
範囲の0〜N−1内のあらゆる範囲a〜bに対応するよ
うな複数のサブセットを含む。アレイのこのセクション
内の係数サブセットの長さすなわちサイズは可変であ
り、各演算シナリオについて(b−a)に等しい。
【0058】この分類グループ内において、係数サブセ
ットは、長さによって配列されグループ化される。すな
わち、最小数の係数を含む係数サブセットは、分類グル
ープの最初の部分に配置される。最大数の係数を含む係
数サブセットは、分類グループの最後に配置される。こ
れらの各グループの中で、係数サブセットは、係数サブ
セットでカバーされる範囲の係数の下付文字に従った順
に配列される。従って、a=0を有するサブセットが最
初に配置され、a=1を有するサブセットが次に配置さ
れ、以下同様である。
【0059】<分類3の係数サブセットの構造>第3の
分類グループ34内の係数サブセットは、単一データセグ
メントが変更されるとき、P及びQを更新するために使
用される。このタイプの演算は、データセグメントx
が変更される場合に、Pセグメント及びQセグメントを
更新する。
【0060】分類2のグループのように、各分類3サブ
セットの最初の2つのパラメータは、グループの係数が
Pの計算またはQの計算に適用可能であるか否かを示
す。これら係数はそれぞれ「0」または「1」に設定さ
れる。これら係数の最初の値が「1」であることは、サ
ブセットの係数がパリティセグメントPに適用されるこ
とを示す。これら係数の二番目の値が「1」であること
は、サブセットの係数がパリティセグメントQに適用さ
れることを示す。
【0061】各サブセットは、変更中のデータセグメン
トxに対応する単一の残りの係数を含む。
【0062】
【数12】
【0063】第3の分類グループ34は、0からN−1ま
でのaのすべての値に対応するN対のこのようなサブセ
ットを含む。これらサブセットは、a=bである分類2
係数サブセットの特別な場合に対応するため、新しい単
一データセグメントをストライプに追加する際に使用可
能なことに留意されたい。
【0064】<分類4の係数サブセットの構造>第4の
分類グループ35内の係数サブセットは、パリティセグメ
ントの一方及び生存データセグメントに基づいて単一デ
ータセグメントxを再構築するために使用される。係
数は、選択された誤り修正コードの数学的処理(f
( ))に従って変換されて再構築演算を実行することを
除き、分類1の係数に密接に対応する。
【0065】
【数13】 より具体的には、以下の通りである。
【0066】
【数14】
【0067】第4の分類グループは、0からN−1まで
のaのすべての値に対応するN対のこのようなサブセッ
トを含む。各サブセットにおいて、係数f(p)または
係数f(q)はデータセグメントxに対応することに
留意されたい。
【0068】<分類5の係数サブセットの構造>第5の
分類グループ36内の係数サブセットは、2つのパリティ
セグメント及び生存データセグメントに基づいて、2つ
のデータセグメントx及びxを再構築するために使
用される。係数は、選択された誤り修正コードの数学的
処理(f( ))に従って変換されて再構築演算を実行す
ることを除き、分類1の係数に密接に対応する。
【0069】
【数15】
【0070】アレイの5番目のセクションは、0からN
−1の範囲内のa及びbのあらゆる可能な組み合わせに
対応する、(N×(N−1))/2対のかかるサブセッ
トを含む。各サブセットにおいて、係数f(p
,q,q)は、データセグメントのうちどれが
再構築されているかに応じて、データセグメントx
たはxに対応することに留意されたい。
【0071】これらの式の可能な実施形態の1つは、以
下の通りである。
【0072】
【数16】
【0073】<係数サブセットの使用>図4は、上記ア
レイ格納方式に従ってパリティ演算を実行する方法を示
す。第1のステップ100で、種々のパリティ演算をパリ
ティセグメント生成演算、パリティセグメント再生成演
算、及びデータセグメント再構築演算を含む分類に分類
する。より具体的には、演算は、パリティ生成演算、セ
グメント追加によって生じるパリティ再生成演算、セグ
メントの変更によって生じるパリティ再生成演算、単一
データセグメント再構築演算、または二重データセグメ
ント再構築演算のいずれかに分類される。パリティ演算
の各分類は、複数の多様な分類シナリオを含み、その各
シナリオは各パリティ係数サブセットに関係する。
【0074】ステップ102で、個々のパリティ係数を予
め計算し、異なるパリティ演算及びパリティ演算の異な
るシナリオに使用するパリティ係数サブセットを予め選
択する。このステップは、すでに述べた説明に従って行
われる。
【0075】ステップ104で、予め選択したパリティ係
数サブセットのすべてを、インデックスの付いた線形メ
モリアレイに格納する。サブセットには、パリティ計算
ロジックによりアクセス可能である。このステップは、
係数サブセットを予めフォーマットして、ハードウェア
ベースのパリティ演算ロジックが効率的に利用できるよ
うにすることを含む。特に、各サブセットの個々の係数
は隣接するバイトまたは記憶装置にパックされ、ハード
ウェアベースのパリティ演算ロジックに固有の様式に配
列される。このステップの結果、メモリアレイは、種々
の計算シナリオそれぞれに対応する単一の係数サブセッ
トを含むようになる。
【0076】個々の係数及び係数サブセットは、非干渉
データ要素を用いてパックされる。アレイのサブセット
はグループ化され、すでに述べたように順序づけられ、
係数サブセットはそれらの分類順によって分類グループ
にグループ化される。第2の分類グループ内では、サブ
セットは可変サイズを有する。さらに、第2の分類グル
ープ内のサブセットは、サイズによりサブグループ化さ
れ、最小の番号を有する係数に従い昇順に順序づけられ
る。
【0077】パリティ演算中、パリティ演算ロジックが
メモリアレイにアクセスし、パリティ演算の種々のシナ
リオでの使用に適した係数サブセットを得る。よって、
ステップ106で、格納されているパリティ係数サブセッ
トのうちどれが特定のパリティ演算に必要なのかを決定
する。このステップは、パリティ演算の分類と線形メモ
リアレイへのグループオフセットの決定を含み、そのパ
リティ演算分類に対応する分類グループの開始位置を示
す。次に、グループ内への所望の係数サブセットの位置
までのサブセットオフセットが計算される。
【0078】ステップ106は、第2の分類グループ以外
は単純である。詳細に上述したように、第2の分類グル
ープは長さすなわちサイズが可変の係数サブセットを含
み、特定の係数サブセットのオフセットを決定すること
が困難である。しかし、本願発明者らは、第2の分類グ
ループが上述したように配列されるとき、同じサイズの
係数サブセットのサブグループを順序づけると、特定の
サブグループに対するオフセットを、係数サブセットの
サブグループのサイズ及びN(任意のサブグループに含
まれる最大数の係数)の関数として計算することができ
ることを見出した。具体的には、サブセットサイズL
に対応する特定のサブグループiに対するオフセット
は、以下に等しい。
【0079】
【数17】
【0080】この式は、各サブセットには、P及びQに
対応する定数の対(上述)が存在するものと想定してい
る。しかし、Lは(b−a)に等しい。サブグループi
内において、特定の係数サブセットのオフセットはa
(L+2)に等しい。従って、x〜xに対応する係
数の範囲に関して、分類グループへの全体的なオフセッ
トは、次のようになる。
【0081】
【数18】 第2の分類グループのサイズは、次の式によって与えら
れる。
【0082】
【数19】
【0083】メモリアレイへの適切なオフセットを決定
した後、決定したパリティ係数サブセットをメモリから
読み出すステップ108が行われる。ステップ110で、メモ
リから読み出されたパリティ係数サブセットを用いて、
特定のパリティ演算を実行する。
【0084】<ディスクコントローラの動作>図5は、
本発明によるディスクコントローラ200の最も適切な構
成要素を示す。ディスクコントローラ200は、マイクロ
プロセッサ201及び関連するメモリ202を有する。さら
に、ディスクコントローラ200は、ハードディスクイン
タフェースコンポーネント203及び通信コンポーネント2
04を備える。ハードディスクインタフェースコンポーネ
ント203は、ディスクコントローラ200に接続されて制御
されるハードディスクへのアクセス手段を提供する。通
信コンポーネント204は、ホストコンピュータとハード
ディスクコントローラ200の間のインタフェースとして
機能する。
【0085】これらコンポーネントに加え、ハードディ
スクコントローラ200は、特定用途向け集積回路(AS
IC)の形態のハードウェアベースのパリティ演算ロジ
ック205を備える。「ハードウェアベース」という語
は、このロジックコンポーネントが、ソフトウェアベー
スのロジックとは対照的に、プログラムメモリからの命
令の検索や実行を行わないことを意味する。むしろ、ロ
ジックコンポーネントは、信号及びデータを処理する専
用の相互接続されるロジック要素を有する。このような
ハードウェアベースのロジックはマイクロプロセッサま
たは他の命令ベースのプロセッサよりも柔軟性が低い
が、ハードウェアベースのロジックは命令ベースのロジ
ックよりもはるかに高速であることが多い。
【0086】一般に、ディスクコントローラは以下のよ
うに動作する。マイクロプロセッサ201は、ホストコン
ピュータとの通信を処理し、ホストコントローラへの、
かつホストコントローラからのすべてのデータ転送を調
整する。さらに、マイクロプロセッサ201は、実際のデ
ィスク転送をすべて調整する。しかし、データは、ディ
スクに書き込まれる前にメモリ202にバッファリングさ
れる。パリティ演算は、マイクロプロセッサ201の制御
下でメモリ202内のデータに対して行われる。
【0087】初期化中、マイクロプロセッサ201は、メ
モリ202内に係数サブセットテーブル212を構築する。続
いて、パリティ演算のときになると、マイクロプロセッ
サ201は、パリティ演算の分類及びシナリオを決定す
る。この情報がいったん決定されると、マイクロプロセ
ッサ201は、パリティ演算の目的となる1つまたは複数
のデータセグメント及びパリティセグメント(まとめて
データブロック214と呼ぶ)の、メモリ202における位置
を示すスクリプトを作成する。スクリプトは、パリティ
演算に適切な係数サブセットが見つかる係数サブセット
テーブル212へのオフセット、及び係数サブセットに含
まれる係数の数を示す。スクリプトはまた、要求された
計算の結果が配置されるメモリ202内の位置も示す。各
スクリプトは、単一パリティ演算についての情報を格納
し、かかるスクリプトを格納するためのメモリ構造は、
本明細書においてタスク記述ブロック(TDB)と呼ば
れる。TDBはメモリ202内の特定の位置に格納され、
その位置(例えば、32ビットアドレス)へのポインタ
はメモリ202内のTDB待ち行列216に格納される。応答
待ち行列218もまたメモリ202に格納され、ハードウェア
ロジック205がこれを用いて、パリティ演算が成功した
か否かについての指示をマイクロプロセッサ201に戻
す。
【0088】スクリプトがメモリに配置されると、待ち
行列216におけるスクリプトに対するTDBへのポイン
タが存在することで、ハードウェアロジックに通知され
る。ハードウェアロジックはこれに応答して、(a)指
示された係数、データセグメント、及びパリティセグメ
ントを検索し、(b)指示された係数に基づいて適切な
パリティ演算を行い、(c)データ及び/または計算し
たパリティセグメントをメモリに戻し、(d)エントリ
を応答待ち行列218に書き込むことで、演算が首尾良
く完了したか否かをマイクロプロセッサ201に知らせ
る。
【0089】ハードウェアロジックは、係数及びデータ
/パリティセグメントの積を合計することで、各種の異
なるパリティ演算を行うように構成される。異なる演算
は実際に、係数、データセグメント、及びパリティセグ
メントの数及び選択においてのみ異なる。これら変数
は、スクリプトによって特定される。このように、この
演算は、ハードウェアベースの計算に非常に都合が良
い。
【0090】図6は、タスク記述ブロック250の例示的
な構造をさらに詳細に示す。本明細書において、TDB
250は、TDB250内の情報に基づいてパリティ演算を行
うために、ハードウェアロジック205によりアクセスさ
れることに関連して説明される。代わりに、図6に示す
メモリ構造は、種々の方法で(例えば、ソフトウェアま
たはファームウェアを実行するマイクロプロセッサまた
は他の命令ベースのプロセッサにより)パリティ演算を
実行する他のシステムで使用することもできる。
【0091】TDB待ち行列216は複数のエントリを含
み、各待ち行列エントリは、要求ヘッダ及びTDBポイ
ンタの両方を含む。TDBポインタ252はTDB250をポ
イントするが(例えば、TDB250の開始アドレスをメ
モリ202に格納する)、対応する要求ヘッダ251は、TD
B250に基づいて実行される要求された動作についての
様々な情報を格納する。一実施形態においては、TDB
ポインタ252及び要求ヘッダ251の両方が32ビット値で
あり、要求ヘッダ251は以下の情報を含む。すなわ
ち、TDB20のサイズ(例えば、8バイトダブルワード
グループで)、ハードウェアロジック205がTDB250内
のデータに基づいて実行すべき演算の指示、タグベース
の一貫性チェック(より詳細に後述する)を実行すべき
か否か、演算完了情報を書き込むべき応答待ち行列218
の識別、及びタグ番号(タグベースの一貫性チェックが
実行中である場合)である。
【0092】TDB250は、ヘッダ253と、複数のディス
クデータポインタ254と、出力ポインタ256と、係数ポイ
ンタ及びデータ258とを含む複数のフィールドを有す
る。ヘッダ253は、TDBについての様々な情報を含
み、一実施形態では以下を含む。すなわち、TDB250
のサイズ(例えば、8バイトダブルワードグループ
で)、ハードウェアロジック205がTDB250内のデータ
に基づいて実行すべき演算の指示(例えば、上記パリテ
ィ演算の5つの分類のうちの1つの識別)、ハードウェ
アロジック205がTDB250内のデータに基づいて実行す
べき演算の実行優先度(例えば、所望であれば、異なる
タイプの演算に異なる実行優先度を割り当てることがで
きる)、及びタグ番号(タグベースの一貫性チェックが
実行中である場合)である。
【0093】各ディスクデータポインタ254は、パリテ
ィ演算に関するディスクデータのメモリ202内の位置を
ポイントする(図5のデータブロック214のうちの1
つをそれぞれポイントする)。実行中のパリティ演算に
応じて、各ポインタ254によってポイントされるデータ
は、パリティ演算を行うべきストライプのデータセグメ
ントまたはパリティセグメントである。ポインタ254
は、ハードウェアロジック205により(ストライプにお
いて最も小さい番号の付いたデータセグメントから最も
大きな番号の付いたデータを配列し、その後にPパリテ
ィセグメント及びQパリティセグメントが続くといっ
た)既知の順に従って配列されるため、ハードウェアロ
ジック205は、パリティ演算についてどのメモリ位置に
どのセグメントデータがあるかを知る。出力ポインタ25
6は、パリティ演算ロジック205がパリティ演算の結果を
書き込むべきメモリ202内の位置260を指すポインタであ
る。実行中のパリティ演算のタイプに応じて、演算の結
果はPパリティ値及びQパリティ値のいずれか(例え
ば、パリティ生成演算またはパリティ再生成演算の場
合)、またはデータセグメント値(例えば、データセグ
メント再構築の場合)であることができる。単一の出力
ポインタ256を図6に示しているが、代わりに複数の出
力ポインタをTDB250に含めてもよい(例えば、P値
に1つのポインタ、Q値に1つのポインタというよう
に、複数の値が生成される場合)。
【0094】係数ポインタ及びデータ258は、パリティ
演算ロジック205が使用すべき係数サブセットが位置す
る、係数テーブル30内の位置を指すポインタを含む。ポ
インタ及びデータ258内には、係数テーブルから検索す
べき係数の数の指示も存在し得る(これは、ヘッダ253
において識別される実行すべきパリティ演算のタイプの
指示とは別のものであってもよく、また代わりに実行す
べきパリティ演算のタイプの指示に埋め込んでも(また
は固有であっても)よい)。従って、係数ポインタ及び
データ258は(ヘッダ253と組み合わせて)、どこでパリ
ティ演算に関する係数を得るか、及びどのくらい係数を
得るべきか、ならびにどのパリティ演算を実行すべきか
という必要な情報をパリティ演算ロジック205に与え
る。
【0095】必要な情報がすべてパリティ演算のTDB
250に格納されると、マイクロプロセッサ201は、そのT
DBを指すポインタ及び対応する要求ヘッダ情報を含む
エントリをTDB待ち行列216に追加する。待ち行列216
に演算を加え、必要なデータが適切な位置で利用できる
ようになるまで待ち行列216へのエントリの追加を行わ
ないことにより、パリティ演算ロジック205は、確実に
パリティ演算の実行に必要な情報を有する。従って、パ
リティ演算ロジック205は、他のパリティ演算が待ち行
列で待機している間、パリティに関する追加情報を待つ
ことで遅延されず、ロジック205の高速演算が可能にな
る。
【0096】パリティ演算を実行する前に、パリティ演
算ロジック205は、一貫性チェックをオプションとして
実行して、正しいTDBを使用していることを検証する
ことができる。一実施形態では、この一貫性チェック
は、演算のタイプ及びTDBのサイズの検証に基づく。
この実施では、TDB250のヘッダ253は、上記と同様
に、実行すべき演算のタイプの指示及びTDB250のサ
イズを含む。正しいTDBにアクセスしていることを検
証するために、ハードウェアロジック205は、要求ヘッ
ダ251内の演算のタイプ及びTDBサイズにアクセス
し、これらがヘッダ253に格納されている演算のタイプ
及びTDBサイズに一致するか否かをチェックする。ハ
ードウェアロジック205が、2つの演算タイプ及び2つ
のTDBサイズが一致すると判断した場合、TDB250
は正しいTDBであると検証され、その他の場合、TD
Bは正しいTDBではなく、ハードウェアロジック205
は、(例えば、応答待ち行列218内のエントリを介し
て)コマンド不一致のためにパリティ演算が失敗したこ
とをマイクロプロセッサ201に知らせる。
【0097】一貫性チェックはさらに行うことが可能で
あり、本明細書においてこれはタグベースの一貫性チェ
ックと呼ばれる。タグベースの一貫性チェックを用いる
場合、マイクロプロセッサ201はタグ番号を演算に割り
当て、タグ番号は要求ヘッダ251及びヘッダ253の両方に
格納される。ハードウェアロジック205は、演算タイプ
及びTDBサイズを検証することに加え、ヘッダ251及
び253におけるタグ番号の一致もチェックする。タグ番
号が一致する場合、TDB250は正しいTDBであると
検証され(演算タイプ及びTDBサイズも一致するもの
と仮定する)、その他の場合は、TDBは正しいTDB
ではなく、ハードウェアロジック205は、(例えば、応
答待ち行列218内のエントリを介して)タグ不一致によ
りパリティ演算が失敗したことをマイクロプロセッサ20
1に知らせる。
【0098】ハードウェアロジック205が演算を完了す
ると、計算した演算結果が、出力ポインタ256によって
ポイントされるメモリ位置260に格納される。さらに、
ハードウェアロジック205によって実行された演算のス
テータスを示すエントリが応答待ち行列218に追加され
る。複数の応答待ち行列218が存在する場合があり、ハ
ードウェアロジック205がエントリを追加する適切な応
答待ち行列は、演算に対応する要求ヘッダ251で示され
る。
【0099】各応答待ち行列218は複数のエントリを含
むことができ、各エントリは応答ヘッダ及びTDBポイ
ンタを含む。TDBポインタ262は、TDB250をポイン
トするが(例えば、TDB250の開始アドレスをメモリ2
02に格納する)、対応する応答ヘッダ261は、TDB250
に基づいて実行された演算についての様々な情報を格納
する。一実施形態では、TDBポインタ262及び応答ヘ
ッダ261の両方が32ビット値であり、応答ヘッダ261は
以下の情報を含む。すなわち、TDB250のサイズ(例
えば、8バイトダブルワードグループで)、ハードウェ
アロジック205がTDB250内のデータに基づいて実行し
た演算の指示、タグベースの一貫性チェックが実行され
たかどうか、二重パリティブロック計算の結果、ゼロし
か含まないPパリティブロック及びQパリティブロック
が生じたり、または単一パリティブロック計算の結果ゼ
ロしか含まないPパリティブロックが生じる場合に設定
される「パリティ・オール・ゼロ」フラグ(このフラグ
は、演算がパリティ演算ではない場合でも設定され
る)、ソースデータが定義されたフォーマットパターン
に一致する場合に設定される「パターン一致」フラグ、
演算を実行する際にどのタイプのエラーが(もしあれ
ば)発生したかに関する指示、及びタグ番号(タグベー
スの一貫性チェックが実行中である場合)を含む。一実
施形態では、応答ヘッダ261を介して以下のエラーを示
すことができる。すなわち、タグ不一致(待ち行列216
のヘッダ251内のタグが、TDB250のヘッダ253内のタ
グと一致しない)、コマンド不一致(ヘッダ251におけ
る演算タイプ及びTDBサイズが、ヘッダ253内の演算
タイプ及びTDBサイズに一致しない)、パリティエラ
ー(メモリ202から戻されるデータにおいて検出された
パリティエラー)、メモリテストデータ不一致(miscom
pare)(パリティ演算ではなくメモリテスト演算が実行
中である場合、これは、メモリテスト中メモリ202から
戻されるデータが不正確であったことを示す)、及び不
正コマンド(ヘッダ251及びヘッダ253で示される演算タ
イプが正当な値ではない)である。
【0100】従って、図6に示すメモリ構造を使用し
て、単一TDBを用いてパリティ演算ロジック205がパ
リティ演算を実行するために必要な情報をすべて識別す
る。単一ポインタを用いて各TDBを識別することがで
き、複数のパリティ演算を図5のTDB待ち行列216に
容易に入れることが可能になる。次いで、パリティ演算
ロジック205は、演算を待ち行列216から取り除くことに
より、パリティ演算を特定の様式で(例えば、先入れ先
出し(FIFO)方式で)処理することができる。
【0101】さらに、図5及び図6に示すように、どの
演算を実行する必要があるかについての記述は、作業を
実際に実行するコンポーネントから分離される。この分
離により、2つの異なるプロセス(何をすべきかを記述
するプロセス及びする必要があることを実際に実行する
プロセス)を、他方がどのように実行されているか(あ
るいは、どのコンポーネントまたはエンティティがその
プロセスを実行しているか)に関わらず、互いに独立し
て動作することが可能になる。従って、図5のマイクロ
プロセッサ201は、どのコンポーネントが実際にパリテ
ィ演算を実行しているのかに関わらず(例えば、パリテ
ィ演算は、ハードウェアロジック205または代替として
他のコンポーネント(ソフトウェア命令を実行する別の
マイクロプロセッサ等)によって実行することができ
る)、パリティ演算についての必要な情報を準備するこ
とができる。同様に、ハードウェアロジック205は、パ
リティ演算についての情報をメモリ202から獲得でき、
どのエンティティが情報をメモリ202内に準備するか、
または情報がどのように得られたかに関わらず、パリテ
ィ演算を実行することができる。
【0102】図7は、上記メモリ構造によるパリティ演
算についてのタスク記述ブロックを使用する方法を示
す。図7の方法は、図5のマイクロプロセッサ201及び
ハードウェアロジック205によって実行される動作を示
す(マイクロプロセッサ201によって実行される動作は
左側にあり、ハードウェアロジック205によって実行さ
れる動作は右側にある)。第1のステップ270で、実行
するパリティ演算のTDBを生成する。この生成は、様
々な従来の方法の任意のもので実行することができる
(例えば、TDBにメモリを割り当てる、既に割り当て
られたが使用されていないメモリを使用するなど)。ス
テップ272で、コマンドタイプ、応答待ち行列識別子、
及びタグ番号(オプション)をTDBのヘッダに格納す
る。他の情報(上述)がヘッダに含まれてもよい。ステ
ップ274で、パリティ演算に関するディスクデータメモ
リ位置を指すポインタをTDBに格納し、ステップ276
で、パリティ演算に関する結果メモリ位置を指すポイン
タをTDBに格納する。ステップ278で、使用に適した
係数サブセットを決定し(上記図4のステップ106と同
様)、ステップ280で、その係数サブセットを指すポイ
ンタをTDBに格納する。ステップ282で、パリティ演
算ロジックにどのパリティ演算を実行すべきかを知らせ
るために、パリティ演算分類の指示をTDBに格納す
る。これらの情報すべてがTDBに格納されると、ステ
ップ284で、TDB待ち行列に、要求ヘッダ及びこの新
たに追加されたTDBを指すポインタを含むエントリを
追加する。従って、TDBの指示は、パリティ演算につ
いてのすべてのデータがメモリ202内で利用できるよう
になるまで、TDB待ち行列に追加されず、これによっ
て、パリティ演算ロジックがメモリ202にアクセスし、
所望のときにいつでもパリティ演算を実行することが可
能になる。
【0103】TDB待ち行列エントリが追加された後の
ある時点において、ステップ286で、ハードウェアロジ
ック205が要求された演算を実行する。演算が完了また
は失敗すると、ステップ288で、演算が首尾良く完了し
たか、それともエラーが発生したかを示す(上記ステッ
プ272において識別されるような)応答エントリを適切
な応答待ち行列に追加する。
【0104】図7の説明は、TDBエントリ(要求ヘッ
ダ及びTDBポインタの両方)が同時にTDB待ち行列
に追加される(ステップ284)ことを述べている。代わ
りに、情報が利用可能な場合はTDB待ち行列内の要求
ヘッダを埋めても良く、この場合は、ステップ284で、
TDBポインタだけを待ち行列エントリに追加する(及
び本質的にTDB待ち行列エントリが完全に埋められた
ことをハードウェアロジック205に通知する)。
【0105】本発明について、主に異なるタイプのパリ
ティ演算を冗長ディスクドライブシステムにおいて実行
することに関連して説明したが、本発明は、代替的に他
の状況で使用することができる。例えば、本発明は、ハ
ードウェア加速メモリテストを実行するために使用する
ことも可能であり、この場合、検証のために書き込まれ
るべきメモリアドレスは、図6のフィールド254によっ
て識別され、図5のハードウェアロジック205がテスト
データを識別されたメモリアドレスに書き込み、そのメ
モリアドレスからデータを読み戻し、読み戻されたデー
タをポインタ256によって識別される位置に格納する。
【0106】別の例として、本発明は、コピー機能を実
行するために使用することができる。この場合、コピー
するデータはポインタ254によって識別され、得られる
コピーの位置はポインタ256によって識別され、ハード
ウェアロジック205がコピーを実行する。
【0107】さらに別の例において、本発明は、パター
ンマッチングを実行するために使用することもできる。
この場合、比較されるデータセグメントはポインタ254
によって識別され、ハードウェアロジック205が比較を
実行し、比較の結果(例えば、2つのデータセグメント
が一致するかどうかの指示)をポインタ256によって識
別される位置に書き込む。
【0108】さらに別の例として、本発明は、チェック
サム計算の実行に使用することもできる。この場合、チ
ェックサムが計算されるデータセグメントがポインタ25
4によって識別され、ハードウェアロジック205がチェッ
クサムを計算し、得られるチェックサム値をポインタ25
6によって識別される位置に書き込む。
【0109】本発明には例として以下の実施形態が含ま
れる。
【0110】1.冗長データ記憶システムにおいてパリ
ティ演算を実行するディスクコントローラ(200)であ
って、実行すべき前記パリティ演算についての情報をそ
れぞれ識別する複数のタスク記述ブロック(250)を格
納するメモリ(202)と、前記メモリ(202)に接続さ
れ、前記複数のタスク記述ブロック(250)のそれぞれ
にアクセスし、前記タスク記述ブロック(250)で識別
される情報に基づいて前記パリティ演算を実行するパリ
ティ演算ロジック(205)と、を備えるディスクコント
ローラ。
【0111】2.前記メモリ(202)は、それぞれが前
記複数のタスク記述ブロック(250)のうちの1つを識
別する複数のエントリを有するタスク記述ブロック待ち
行列(216)をさらに格納し、前記パリティ演算ロジッ
ク(205)は、前記複数のエントリのうちの1つによっ
て識別されるタスク記述ブロック(250)にアクセスす
ることによって、パリティ演算の実行に必要な情報を得
る、上記1に記載のディスクコントローラ(200)。
【0112】3.前記複数のタスク記述ブロック(25
0)はそれぞれ、対応するパリティ演算を実行するため
に必要な情報を格納し、前記情報には、前記パリティ演
算に関するディスクデータについて、前記メモリ(20
2)内の位置をそれぞれ識別する複数のディスクデータ
ポインタ(254)と、前記パリティ演算の結果を格納す
べき前記メモリ(202)内の位置を識別する出力ポイン
タ(256)と、前記パリティ演算に関するパリティ係数
が格納される前記メモリ(202)内の位置を識別する係
数ポインタ(258)と、実行すべき前記パリティ演算の
タイプの識別子(253)と、が含まれる、上記1に記載
のディスクコントローラ。
【0113】4.パリティ演算についての情報をメモリ
(202)に格納するステップ(272、274、276、280、
282)であって、前記パリティ演算は、冗長データ記憶
システムにおけるストライプについて少なくとも1つの
パリティセグメントを生成するか、または前記ストライ
プについて少なくとも1つのデータセグメントを再生成
するものである、ステップと、前記パリティ演算に必要
な前記情報がすべて前記メモリ(202)に格納された後
でのみ、パリティ演算ロジック(205)が前記情報を利
用できるようにするステップと、を含む方法。
【0114】5.前記格納ステップは、前記パリティ演
算についての前記情報を前記メモリ(202)に格納する
ステップと、前記情報を指すポインタを前記パリティ演
算に対応するタスク記述ブロック(250)に格納するス
テップと、を含む上記4に記載の方法。
【0115】6.前記格納ステップは、前記情報のメモ
リ位置識別子を前記パリティ演算に対応するタスク記述
ブロック(250)に格納するステップを含み、前記情報
を利用できるようにするステップは、前記タスク記述ブ
ロック(250)の識別子を、前記パリティ演算ロジック
(205)がアクセス可能なタスク記述ブロック待ち行列
(216)に追加するステップを含む、上記4に記載の方
法。
【0116】7.前記格納ステップは、前記メモリ(20
2)内にタスク記述ブロック(250)を生成するステップ
(270)を含み、該タスク記述ブロック(250)には、前
記パリティ演算に関するディスクデータの、前記メモリ
(202)内の位置をそれぞれ識別する複数のディスクデ
ータポインタ(254)と、前記パリティ演算の結果を格
納すべき前記メモリ(202)内の位置を識別する出力ポ
インタ(256)と、前記パリティ演算に関するパリティ
係数が格納される前記メモリ(202)内の位置を識別す
る係数ポインタ(258)と、実行すべき前記パリティ演
算のタイプの識別子(253)と、を含む、上記4に記載
の方法。
【0117】8.ハードウェア演算ロジック(205)が
情報を利用できるようにして、1つまたは複数のデータ
セグメントに基づいて演算を実行する方法であって、演
算に関する1つまたは複数のデータセグメントをそれぞ
れメモリ(202)内の別々の位置に格納するステップ
と、前記演算に対応するタスク記述ブロック(250)
に、前記メモリ(202)内の別々の位置それぞれへのポ
インタ(254)を格納するステップと、前記タスク記述
ブロック(250)に、前記演算の結果を格納すべき前記
メモリ(202)内の結果位置へのポインタ(256)を格納
するステップと、タスク記述ブロック待ち行列(216)
に、前記タスク記述ブロック(250)へのポインタ(25
2)を格納するステップと、を含む方法。
【0118】9.前記ハードウェア演算ロジック(20
5)が前記パリティ演算を実行し、前記方法は、前記メ
モリ(202)に異なる前記パリティ演算に使用される複
数の係数を格納するステップと、前記タスク記述ブロッ
ク(250)に、前記パリティ演算ロジック(205)が前記
パリティ演算に使用する複数の係数サブセットへのポイ
ンタ(258)を格納するステップと、をさらに含む、上
記8に記載の方法。
【0119】10.前記ポインタ(258)を前記タスク
記述ブロック(250)に格納するステップは、前記メモ
リ(202)内の前記複数の異なる位置それぞれを指す前
記ポインタ(254)が前記タスク記述ブロック(250)に
格納された後でのみ、かつ前記結果位置を指す前記ポイ
ンタ(256)が前記タスク記述ブロック(250)に格納さ
れた後でのみ、前記タスク記述ブロック(250)を指す
前記ポインタを前記タスク記述ブロック待ち行列(21
6)に格納するステップを含む、上記8に記載の方法。
【図面の簡単な説明】
【図1】従来技術によるN+1冗長グループ化を示すブ
ロック図である。
【図2】本発明の実施形態において使用されるN+2冗
長グループ化を示すブロック図である。
【図3】本発明によるメモリテーブルのレイアウトを示
すブロック図である。
【図4】本発明の特定の実施形態によりパリティ演算を
実行する方法を示す図である。
【図5】本発明によるディスクコントローラの関連コン
ポーネントを示すブロック図である。
【図6】タスク記述ブロックの例示的な構造をさらに詳
細に示す図である。
【図7】本発明の特定の実施形態によるタスク記述ブロ
ックを使用する方法を示す図である。
【符号の説明】
200 ディスクコントローラ 202 メモリ 205 演算ロジック 216 タスク記述ブロック待ち行列 250 タスク記述ブロック 252 タスク記述ブロックポインタ 253 ヘッダ 254 ディスクデータポインタ 256 出力ポインタ 258 係数ポインタ及びデータ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロバート・エー・ラスト アメリカ合衆国83704アイダホ州ボイジー、 アラマー・ドライブ 5061 Fターム(参考) 5B001 AA02 AB03 AC01 AD03 AE02 5B065 BA01 EA03

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 冗長データ記憶システムにおいてパリテ
    ィ演算を実行するディスクコントローラであって、 実行すべき前記パリティ演算についての情報をそれぞれ
    識別する複数のタスク記述ブロックを格納するメモリ
    と、 前記メモリに接続され、前記複数のタスク記述ブロック
    のそれぞれにアクセスし、前記タスク記述ブロックで識
    別される情報に基づいて前記パリティ演算を実行するパ
    リティ演算ロジックと、 を備えるディスクコントローラ。
JP2002009660A 2001-03-14 2002-01-18 ディスクコントローラ Pending JP2002278707A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/808,713 US6766480B2 (en) 2001-03-14 2001-03-14 Using task description blocks to maintain information regarding operations
US09/808,713 2001-03-14

Publications (2)

Publication Number Publication Date
JP2002278707A true JP2002278707A (ja) 2002-09-27
JP2002278707A5 JP2002278707A5 (ja) 2005-08-04

Family

ID=25199506

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002009660A Pending JP2002278707A (ja) 2001-03-14 2002-01-18 ディスクコントローラ

Country Status (3)

Country Link
US (1) US6766480B2 (ja)
EP (1) EP1241560A3 (ja)
JP (1) JP2002278707A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529904B2 (en) 2004-03-31 2009-05-05 International Business Machines Corporation Storing location identifier in array and array pointer in data structure for write process management
JP2014521130A (ja) * 2011-10-19 2014-08-25 株式会社日立製作所 ストレージシステム
US11971782B2 (en) 2020-02-20 2024-04-30 Sk Hynix Nand Product Solutions Corp. On-SSD erasure coding with uni-directional commands

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050273651A1 (en) * 2004-05-18 2005-12-08 Aristos Logic Corporation Method of implementing XOR based raid algorithms
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
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
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
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
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 ストレージ制御装置および方法
US8631284B2 (en) * 2010-04-30 2014-01-14 Western Digital Technologies, Inc. Method for providing asynchronous event notification in systems
US8762682B1 (en) 2010-07-02 2014-06-24 Western Digital Technologies, Inc. Data storage apparatus providing host full duplex operations using half duplex storage devices
JP6341795B2 (ja) * 2014-08-05 2018-06-13 ルネサスエレクトロニクス株式会社 マイクロコンピュータ及びマイクロコンピュータシステム
US10725963B2 (en) 2015-09-12 2020-07-28 Microsoft Technology Licensing, Llc Distributed lock-free RDMA-based memory allocation and de-allocation
US10713210B2 (en) * 2015-10-13 2020-07-14 Microsoft Technology Licensing, Llc Distributed self-directed lock-free RDMA-based B-tree key-value manager
US10375167B2 (en) 2015-11-20 2019-08-06 Microsoft Technology Licensing, Llc Low latency RDMA-based distributed storage
WO2019102656A1 (ja) * 2017-11-21 2019-05-31 ソニーセミコンダクタソリューションズ株式会社 メモリコントローラ、メモリ、メモリシステム、情報処理システム、および、それらにおける制御方法
CN111679990B (zh) * 2020-06-17 2023-08-08 北京字节跳动网络技术有限公司 测试数据生成方法、装置、可读介质及电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4433388A (en) * 1980-10-06 1984-02-21 Ncr Corporation Longitudinal parity
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
JPH04184634A (ja) * 1990-11-20 1992-07-01 Matsushita Electric Ind Co Ltd マイクロコンピュータ
JP3409859B2 (ja) * 1991-01-31 2003-05-26 株式会社日立製作所 制御装置の制御方法
US5446855A (en) * 1994-02-07 1995-08-29 Buslogic, Inc. System and method for disk array data transfer
JP3209634B2 (ja) * 1994-03-28 2001-09-17 株式会社日立製作所 計算機システム
JP3011035B2 (ja) * 1994-12-08 2000-02-21 株式会社日立製作所 計算機システム
US5893162A (en) * 1997-02-05 1999-04-06 Transwitch Corp. Method and apparatus for allocation and management of shared memory with data in memory stored as multiple linked lists
US6523087B2 (en) * 2001-03-06 2003-02-18 Chaparral Network Storage, Inc. Utilizing parity caching and parity logging while closing the RAID5 write hole
US6567891B2 (en) * 2001-03-14 2003-05-20 Hewlett-Packard Development Company, L.P. Methods and arrangements for improved stripe-based processing
US7062702B2 (en) * 2001-03-14 2006-06-13 Hewlett-Packard Development Company, L.P. Efficient parity operations
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 (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529904B2 (en) 2004-03-31 2009-05-05 International Business Machines Corporation Storing location identifier in array and array pointer in data structure for write process management
US7818533B2 (en) 2004-03-31 2010-10-19 International Business Machines Corporation Storing location identifier in array and array pointer in data structure for write process management
JP2014521130A (ja) * 2011-10-19 2014-08-25 株式会社日立製作所 ストレージシステム
US9519554B2 (en) 2011-10-19 2016-12-13 Hitachi, Ltd. Storage system with rebuild operations
US11971782B2 (en) 2020-02-20 2024-04-30 Sk Hynix Nand Product Solutions Corp. On-SSD erasure coding with uni-directional commands
JP7529947B2 (ja) 2020-02-20 2024-08-07 エスケイ ハイニックス ナンド プロダクト ソリューションズ コーポレーション 単方向コマンドによるオン-ssdの消失訂正符号化

Also Published As

Publication number Publication date
US6766480B2 (en) 2004-07-20
EP1241560A3 (en) 2004-09-22
EP1241560A2 (en) 2002-09-18
US20020166078A1 (en) 2002-11-07

Similar Documents

Publication Publication Date Title
US5166936A (en) Automatic hard disk bad sector remapping
US6138125A (en) Block coding method and system for failure recovery in disk arrays
US10210045B1 (en) Reducing concurrency bottlenecks while rebuilding a failed drive in a data storage system
US5375128A (en) Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders
US6687872B2 (en) Methods and systems of using result buffers in parity operations
US6567891B2 (en) Methods and arrangements for improved stripe-based processing
JP2002278707A (ja) ディスクコントローラ
CA1270333A (en) Parity spreading to enhance storge access
US7406621B2 (en) Dual redundant data storage format and method
US6918007B2 (en) Memory controller interface with XOR operations on memory read to accelerate RAID operations
EP0503768B1 (en) Method and means for accessing arrays of DASDS
US7797612B2 (en) Storage accelerator
US20020035666A1 (en) Method and apparatus for increasing raid write performance by maintaining a full track write counter
US5978856A (en) System and method for reducing latency in layered device driver architectures
JP2004227560A (ja) 外部格納サブシステムにおけるパリティー格納方法及びエラーブロック復旧方法
US6343343B1 (en) Disk arrays using non-standard sector sizes
US7346733B2 (en) Storage apparatus, system and method using a plurality of object-based storage devices
US7356757B2 (en) Fault tolerance system and method for one or two failed disks in a disk array
JP2002328814A (ja) パリティ演算を実行する方法
US20050278612A1 (en) Storage device parity computation
JP2006178926A (ja) 複数のオブジェクトベースのストレージ装置を使用したストレージ装置、システム、および方法
US7788525B2 (en) Fault tolerance system and method for multiple failed disks in a disk array
WO2001001581A1 (en) Data integrity management for data storage systems

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050105

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060920

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070227

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070523

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070528

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070620

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070625

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071009

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071225

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080402

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080520