(57)【要約】【課題】ストレージ・アレイにデータを格納するための方法、システムおよびコンピュータ・プログラム製品、並びにアレイ中の消失エラーを訂正するための方法、およびコンピュータ・プログラム製品を提供する。【解決手段】データ・ストレージ・アレイは、各エントリが少なくとも一つのセクタを含むエントリのｍ個の行とｎ個の列とを含む。このアレイにおいて、各行が少なくともｒ個のパリティ・エントリを有するようにして、ｍｒ＋ｓ個の場所がパリティ・エントリに割り当てられる。これらパリティ・エントリは、ｍの行それぞれにおける最大ｒ個までの消失エラー、およびデータ・アレイ中の任意の場所中のさらなるｓ個（ｓはゼロより大きい整数）の消失エラーからの復元を可能にする部分最大距離分離（ＰＭＤＳ）符号に対応する。書き込みデータおよび関連付けられたパリティ・エントリは、ストレージ・デバイスのセットに書き込まれる。【選択図】図２
2015508917.tif 000002
【特許請求の範囲】
【請求項１】
ｎ個のストレージ・デバイスのセットにデータを格納する方法であって、前記方法は、
書き込みデータを受信するステップと、
前記書き込みデータを、各エントリが少なくとも一つのセクタを含む、ｍ個の行とｎ個の列とのエントリ群を包含するアレイ中に配置するステップと、
各行に少なくともｒ個のパリティ・エントリがあるように、さらに前記パリティ・エントリが部分最大距離分離（ＰＭＤＳ）符号に対応するように、前記アレイ中のｍｒ＋ｓ個の場所を前記パリティ・エントリに割り当てるステップであって、かかる符号は、前記ｍの行のそれぞれにおける最大ｒ個までの消失エラー、並びに前記データ・アレイ中の任意の場所にあるｓ個（ｓはゼロより大きい整数）のさらなる消失エラーの復元を可能にする、前記割り当てるステップと、
前記書き込みデータおよび関連付けられたパリティ・エントリを前記ストレージ・デバイスのセットに書き込むステップと、
を含む方法。
【請求項２】
前記パリティ・エントリが、ｍｒ＋ｓが未知であるｍｒ＋ｓ個の方程式の線形システムを解くことによって計算され、前記線形システムは、前記書き込みデータおよび前記ＰＭＤＳ符号に対応するパリティ検査マトリックスに基づく、
請求項１に記載の方法。
【請求項３】
前記書き込みデータおよびパリティ・エントリが、ｂ個の要素を有する体または環の中にあり、前記体または環は、次数ｂの多項式ｆ（ｘ）によって生成され、ｍとｎとの積はｆ（ｘ）の指数より小さい、請求項１に記載の方法。
【請求項４】
ｆ（ｘ）が前記多項式Ｍｐ（ｘ）＝１＋ｘ＋ｘ２＋・・・＋ｘｐ−１であり、ｐは素数である、請求項３に記載の方法。
【請求項５】
ｒ＝１である、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記パリティ検査マトリックスが、（ｍ＋ｓ）×（ｍｎ）のマトリックスであって、
ｊ番目（ｊが最大でもｍ）の行が、（ｊ−１）ｍ個の０と、それに続くｍ個の１と、それに続く０群とを含み、
（ｍ＋１）番目の行は、１、その後にα、その後にα２と順々に続く前記行の最後のシンボルαｍｎ−１までを含み、αはｆ（ｘ）の根であり、
（ｍ＋ｉ）番目（ｉは２とｓとの間の数字）の行が、ｉ−１乗された前記（ｍ＋１）番目の行の前記エントリを含む、
請求項１に記載の方法。
【請求項７】
前記パリティ検査マトリックスが、（ｍ＋ｓ）×（ｍｎ）のマトリックスであって、
ｊ番目（ｊは最大でもｍ）の行が、（ｊ−１）ｍ個の０と、それに続くｍ個の１と、それに続く０群とを含み、
（ｍ＋１）番目の行は、１、その後にα、その後にα２と順々に続く前記行の最後のシンボルαｍｎ−１までを含み、αはｆ（ｘ）の根であり、
（ｍ＋ｉ）番目（ｉは２とｓとの間の数字）の行が、ｉ乗された前記（ｍ＋１）番目の行の前記エントリを含む、
請求項１に記載の方法。
【請求項８】
ｍ−１の行が、各々丁度ｒ個のパリティ・エントリを包含し、１つの行がｒ＋ｓ個のパリティ・エントリを包含する、請求項１に記載の方法。
【請求項９】
丁度ｒ個のパリティ・エントリを包含する前記ｍ−１の各行中の前記ｒ個のパリティ・エントリは、［ｎ，ｎ−ｒ］最大距離分離（ＭＤＳ）符号を用いて得られたものであり、残りの前記ｒ＋ｓ個のパリティ・エントリは、前記書き込みデータ、前に得られた前記パリティ・エントリ、および前記ＰＭＤＳ符号に対応する前記パリティ検査マトリックスに基づき、ｒ＋ｓが未知であるｒ＋ｓ個の方程式のシステムを解くことによって得られる、請求項８に記載の方法。
【請求項１０】
ストレージ・アレイ中にデータを格納するためのシステムであって、前記システムは、
複数のストレージ・デバイスを含むストレージ・アレイと、
書き込みデータを受信し、
前記書き込みデータを、各エントリが少なくとも一つのセクタを含む、ｍ個の行とｎ個の列とのエントリ群を包含するアレイ中に配置し、
各行に少なくともｒ個のパリティ・エントリがあるように、さらに前記パリティ・エントリが部分最大距離分離（ＰＭＤＳ）符号に対応するように、前記アレイ中のｍｒ＋ｓ個の場所を前記パリティ・エントリに割り当て、かかる符号は、前記ｍの行それぞれにおける最大ｒ個までの消失エラー並びに前記データ・アレイ中の任意の場所にあるｓ個（ｓはゼロより大きい整数）のさらなる消失エラーの復元を可能にし、
前記書き込みデータおよび関連付けられたパリティ・エントリを前記ストレージ・デバイスのセットに書き込む、
よう構成されたアレイ・コントローラと、
を含むシステム。
【請求項１１】
前記データおよびパリティ・エントリが、ｂ個の要素を有する体または環の中にあり、前記体または環は、次数ｂの多項式ｆ（ｘ）によって生成され、ｍとｎとの積はｆ（ｘ）の指数より小さい、請求項１０に記載のシステム。
【請求項１２】
ｒ＝１である、請求項１０に記載のシステム。
【請求項１３】
前記パリティ検査マトリックスが、（ｍ＋ｓ）×（ｍｎ）のマトリックスであって、
ｊ番目（ｊは最大でもｍ）の行が、（ｊ−１）ｍ個の０と、それに続くｍ個の１と、それに続く０群とを含み、
（ｍ＋１）番目の行は、１、その後にα、その後にα２と順々に続く前記行の最後のシンボルαｍｎ−１までを含み、αはｆ（ｘ）の根であり、
（ｍ＋ｉ）番目（ｉは２とｓとの間の数字）の行が、ｉ−１乗された前記（ｍ＋１）番目の行の前記エントリを含む、
請求項１０に記載のシステム。
【請求項１４】
前記パリティ検査マトリックスが、（ｍ＋ｓ）×（ｍｎ）のマトリックスであって、
ｊ番目（ｊは最大でもｍ）の行が、（ｊ−１）ｍ個の０と、それに続くｍ個の１と、それに続く０群とを含み、
（ｍ＋１）番目の行は、１、その後にα、その後にα２と順々に続く前記行の最後のシンボルαｍｎ−１までを含み、αはｆ（ｘ）の根であり、
（ｍ＋ｉ）番目（ｉは２とｓとの間の数字）の行が、ｉ乗された前記（ｍ＋１）番目の行の前記エントリを含む、
請求項１０に記載のシステム。
【請求項１５】
ｍ−１の行が、各々丁度ｒ個のパリティ・エントリを包含し、１つの行がｒ＋ｓ個のパリティ・エントリを包含する、請求項１０に記載のシステム。
【請求項１６】
丁度ｒ個のパリティ・エントリを包含する前記ｍ−１の各行中の前記ｒ個のパリティ・エントリは、［ｎ，ｎ−ｒ］最大距離分離（ＭＤＳ）符号を用いて得られたものであり、残りの前記ｒ＋ｓ個のパリティ・エントリは、前記書き込みデータ、前に得られた前記パリティ・エントリ、および前記ＰＭＤＳ符号に対応する前記パリティ検査マトリックスに基づき、ｒ＋ｓが未知であるｒ＋ｓ個の方程式のシステムを解くことによって得られる、請求項１５に記載のシステム。
【請求項１７】
ストレージ・アレイにデータを格納するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、
具現化されたコンピュータ可読プログラム・コードを有するコンピュータ可読ストレージ媒体を含み、
前記コンピュータ可読プログラム・コードは、
書き込みデータを受信し、
前記書き込みデータを、各エントリが少なくとも一つのセクタを含む、ｍ個の行とｎ個の列とのエントリ群を包含するアレイ中に配置し、
各行に少なくともｒ個のパリティ・エントリがあるように、さらに前記パリティ・エントリが部分最大距離分離（ＰＭＤＳ）符号に対応するように、前記アレイ中のｍｒ＋ｓ個の場所を前記パリティ・エントリに割り当て、かかる符号は、前記ｍの行のそれぞれにおける最大ｒ個までの消失エラー並びに前記データ・アレイ中の任意の場所にあるｓ個（ｓはゼロより大きい整数）のさらなる消失エラーの復元を可能にし、
前記書き込みデータおよび関連付けられたパリティ・エントリを前記ストレージ・デバイスのセットに書き込む、
よう構成される、
コンピュータ・プログラム製品。
【請求項１８】
前記データおよびパリティ・エントリが、ｂ個の要素を有する体または環の中にあり、前記体または環は、次数ｂの多項式ｆ（ｘ）によって生成され、ｍとｎとの積はｆ（ｘ）の指数より小さい、請求項１７に記載のコンピュータ・プログラム製品。
【請求項１９】
ｒ＝１である、請求項１７に記載のコンピュータ・プログラム製品。
【請求項２０】
ｍ−１の行が、各々丁度ｒ個のパリティ・エントリを包含し、１つの行がｒ＋ｓ個のパリティ・エントリを包含する、請求項１７に記載のコンピュータ・プログラム製品。
【請求項２１】
丁度ｒ個のパリティ・エントリを包含する前記ｍ−１の各行中の前記ｒ個のパリティ・エントリは、［ｎ，ｎ−ｒ］最大距離分離（ＭＤＳ）符号を用いて得られたものであり、残りの前記ｒ＋ｓ個のパリティ・エントリは、前記書き込みデータ、前に得られた前記パリティ・エントリ、および前記ＰＭＤＳ符号に対応する前記パリティ検査マトリックスに基づき、ｒ＋ｓが未知であるｒ＋ｓ個の方程式のシステムを解くことによって得られる、請求項２０に記載のコンピュータ・プログラム製品。
【請求項２２】
ストレージ・アレイ中の消失エラーを訂正する方法であって、前記方法は、
複数ｎ個のストレージ・デバイスから読み取りストライプを受信するステップであって、前記読み取りストライプは、各列が前記ストレージ・デバイスの一つに対応する、ｍ個の行とｎ個の列とに配置されたエントリのデータ・アレイを含み、前記エントリは、データ・エントリ群とｍｒ＋ｓ個のパリティ・エントリを含み、各行は、部分最大距離分離（ＰＭＤＳ）符号によって、前記データ・エントリから生成された少なくともｒ個のパリティ・エントリを包含する、前記受信するステップと、
前記読み取りストライプが、少なくとも一つの消失エラー・エントリ、最大でもｒｍ＋ｓまでの消失エラー・エントリ含むこと、およびｒ＋ｓより多い消失エラー・エントリを有する行がないこと、を判定するステップと、
消失エラーのないエントリから前記消失エラー・エントリを再構築するステップであって、前記再構築するステップが復元された読み取りストライプをもたらす、前記再構築するステップと、
を含む方法。
【請求項２３】
前記再構築するステップが、
前記データ・アレイ中の前記消失エラーのないエントリおよびパリティ検査マトリックスに基づいてシンドロームを計算するステップと、
ｍｒ＋ｓが未知である最大でもｍｒ＋ｓ個までの方程式の線形システムを解くステップであって、前記線形システムは、前記シンドロームおよび前記パリティ検査マトリックスに基づく、前記解くステップと、
を含む、請求項２２に記載の方法。
【請求項２４】
ストレージ・アレイ中の消失エラーを訂正するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、
具現化されたコンピュータ可読プログラム・コードを有するコンピュータ可読ストレージ媒体を含み、
前記コンピュータ可読プログラム・コードは、
複数ｎ個のストレージ・デバイスから読み取りストライプを受信し、前記読み取りストライプは、各列が前記ストレージ・デバイスの一つに対応する、ｍ個の行とｎ個の列とに配置されたエントリのデータ・アレイを含み、前記エントリは、データ・エントリ群とｍｒ＋ｓ個のパリティ・エントリを含み、各行は、部分最大距離分離（ＰＭＤＳ）符号によって、前記データ・エントリから生成された少なくともｒ個のパリティ・エントリを包含し、
前記読み取りストライプが、少なくとも一つの消失エラー・エントリ、最大でもｒｍ＋ｓまでの消失エラー・エントリ含むこと、およびｒ＋ｓより多い消失エラー・エントリを有する行がないこと、を判定し、
消失エラーのないエントリから前記消失エラー・エントリを再構築し、前記再構築することが復元された読み取りストライプをもたらす、
よう構成される、
コンピュータ・プログラム製品。
【請求項２５】
前記再構築することが、
前記データ・アレイ中の前記消失エラーのないエントリおよびパリティ検査マトリックスに基づいてシンドロームを計算することと、
ｍｒ＋ｓが未知である最大でもｍｒ＋ｓ個までの方程式の線形システムを解くことであって、前記線形システムは、前記シンドロームおよび前記パリティ検査マトリックスに基づく、前記解くことと、
を含む、請求項２４に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にストレージ・システムに関し、さらに具体的にはストレージ・アレイに対する部分最大距離分離（ＰＭＤＳ：ｐａｒｔｉａｌ−ｍａｘｉｍｕｍ  ｄｉｓｔａｎｃｅ  ｓｅｐａｒａｂｌｅ）消失エラー訂正符号に関する。
【背景技術】
【０００２】
コンピュータ・システムは、ストレージ・デバイスのデータ喪失を防止するために、パリティ計算などデータ冗長スキームを用いている。独立ディスクの冗長アレイ（ＲＡＩＤ：ｒｅｄｕｎｄａｎｔ  ａｒｒａｙｓ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ）システムでは、データ値と関連するパリティ値とは、ディスク・ドライブにまたがって分散配置（ｓｔｒｉｐｅ）される。ＲＡＩＤシステムは、通常、ハード・ディスク・ドライブ（ＨＤＤ：ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）のアレイ中に格納された情報を、ディスク壊損（ｃａｔａｓｔｒｏｐｈｉｃ  ｄｉｓｃ  ｆａｉｌｕｒｅ）から保護するために用いられる。２つのよく使われるＲＡＩＤスキームは、単一のディスク壊損から保護するＲＡＩＤ５および二重のディスク壊損から保護するＲＡＩＤ６である。
【０００３】
フラッシュ・デバイスは、大ブロックで電気的に消去して再プログラムできる、固体不揮発性ストレージ・デバイスの一種である。ＨＤＤと同様、フラッシュ・デバイスは、媒体を、通常５１２バイトのセクタに分割する。フラッシュ・デバイスは、セクタを、通常ページ当たり８セクタのページにさらに纏め、各ページは４千バイトまたは４キロバイト（ＫＢ：ｋｉｌｏｂｙｔｅ）を包含する。各セクタは、いくつかのエラー（通常は単一ビット・エラーであるが、バイト・エラーなど他の可能性もあり得る）を訂正する誤り訂正符号（ＥＣＣ：ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｎｇ  ｃｏｄｅ）によって保護される。よく使われる選択は、ボーズ・チョドーリ・オッケンジェム（ＢＣＨ：Ｂｏｓｅ−Ｃｈａｕｄｈｕｒｉ−Ｈｏｃｑｕｅｎｇｈｅｍ）符号の、８ビット訂正または１５ビット訂正ＢＣＨ符号などであるが、多くの変形があり得る。ＨＤＤにおけるのと同様、フラッシュ・デバイス中のページもハード・エラー（ＨＥ：ｈａｒｄ  ｅｒｒｏｒｓ）による被害を受けることがある。これは、例えば、ページのセクタ中のＢＣＨ符号のエラー訂正能力を超過したときに生ずる。ＢＣＨ符号のエラー訂正能力に対する超過は、ＨＤＤと比べると、フラッシュ・デバイスでのほうが起こりやすく、その書き込み耐用寿命の終わり近くのページ、およびそのデータ保持寿命の終わり近くのページの両方として生ずる。しかして、フラッシュ・デバイスにおけるＨＥの回数は、デバイスに潜在的なＨＥを残しつつ時間経過とともに増加することが予期し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
フラッシュ・デバイスを構成するアレイは、より頻度が高いであろうＨＥと組み合わさった、込み入った破局的デバイス故障に遭遇し得る。例えば、潜在的なＨＥがある場合、フラッシュ・デバイス中に格納された情報を保護するためのＲＡＩＤ５の使用が、デバイス故障をもたらすことがある。その結果、所与のデータ・ストライプ（例えば、一単位として読み取られもしくは書き込まれまたはその両方が行われるデータ・アレイ）に対し、ＲＡＩＤ５システム中のあるデバイスが、破局的なデバイス故障を被り、且つ何らかの他のデバイスがＨＥを被ったとき、ＲＡＩＤ５システムは、該データ・ストライプ中の情報を回復することができないことになろう。ＲＡＩＤ６は、こういったデータを回復することを可能にし得るが、ＲＡＩＤ６は、全体が第二デバイスをパリティ専用とすることを必要とし、主な故障がＨＥである場合、これはコスト高である。
【課題を解決するための手段】
【０００５】
諸実施形態は、ストレージ・アレイ中にデータを格納するための方法、システム、およびコンピュータ・プログラム製品を含む。書き込みデータが受信され、各エントリが少なくとも一つのセクタを含むエントリのｍ個の行とｎ個の列とを含むアレイの中に配置される。このアレイにおいて、各行が少なくともｒ個のパリティ・エントリを有するように、ｍｒ＋ｓ個の場所がパリティ・エントリに割り当てられる。これらパリティ・エントリは、ｍ個の行それぞれにおける最大ｒ個までの消失エラーおよびデータ・アレイ中の任意の場所のさらなるｓ個（ｓはゼロより大きい整数）の消失エラーからの復元を可能にする、部分最大距離分離（ＰＭＤＳ）符号に対応する。これら書き込みデータおよび関連付けられたパリティ・エントリは、ストレージ・デバイスのセットに書き込まれる。
【０００６】
さらなる実施形態は、ストレージ・アレイ中の消失エラーを訂正するための方法およびコンピュータ・プログラム製品を含む。読み取りストライプが複数ｎ個のストレージ・デバイスから受信される。この読み取りストライプは、各コラムがストレージ・デバイスの一つに対応する、ｍ行とｎ列との中に配置されたエントリのアレイを含む。これらエントリは、データ・エントリ群とｍｒ＋ｓ個のパリティ・エントリとを含む。各行は、部分最大距離分離（ＰＭＤＳ）符号に従って、データ・エントリから生成された少なくともｒ個のパリティ・エントリを包含する。この読み取りストライプが、少なくとも一つの消失エラー・エントリ、多くてもｍｒ＋ｓまでの消失エラー・エントリを含むことと、ｒ＋ｓ個より多い消失エラー・エントリを有する行がないことと、が判定される。これら消失エラー・エントリは消失エラーがなかったエントリから再構築され、復元された読み取りストライプが得られる。
【０００７】
本発明の技法を用いてさらなる特徴および利点が実現される。本明細書では、本発明の他の実施形態および態様が詳細に説明され、これらは請求対象の発明の一部と見なされる。本発明の利点および特徴をよりよく理解するため、これらの説明および図面を参照されたい。
【０００８】
単なる例示を目的として、添付の図面を参照しながら、以下に本発明の実施形態（群）を説明する。
【図面の簡単な説明】
【０００９】
【図１】ある実施形態による、部分最大距離分離（ＰＭＤＳ）符号を提供するためのシステムのブロック図を示す。
【図２】ある実施形態による、ストレージ・システムを示す。
【図３】ある実施形態による、符号化ブロックの内容を示す。
【図４】ある実施形態による、消失エラー訂正を実施するためのプロセス・フローである。
【図５】ある実施形態による、書き込みストライプを符号化するためのプロセス・フローである。
【図６】ある実施形態による、読み取りストライプを復号するためのプロセス・フローである。
【発明を実施するための形態】
【００１０】
本発明のある実施形態は、二次元構造を有する消失エラー訂正符号の新規ファミリである。本明細書では、これらの消失エラー訂正符号を、部分最大距離分離（ＰＭＤＳ）符号と言う。本明細書で説明するＰＭＤＳ符号の実施形態は、破局的故障と少なくとも２つのさらなるハード・エラー（ＨＥ）とを、このさらなるＨＥが一単位（例えば、一つの読み取りデータ・ストライプ、一つの書き込みデータ・ストライプ）として処理されるデータ・アレイ中の同じ行の中に所在する場合であっても、許容（すなわちそれらを復元）することができる。
【００１１】
本明細書で用いる用語「破局的故障」とは、フラッシュ・デバイスなど固体ドライブ（ＳＳＤ：ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）全体の故障を言う。本明細書で用いる用語「消失エラー訂正（ｅｒａｓｕｒｅ  ｃｏｒｒｅｃｔｉｏｎ）」とは、場所が判明しているエラーを訂正することを言う。消失エラー訂正は「誤り訂正（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ）」とは異なり、後者は、本明細書では場所が未判明のエラーを訂正することを言う。消失エラーを訂正するには、エラーを訂正するため必要な冗長性の量の約半分を要する。本明細書で用いる用語「ハード・エラー」または「ＨＥ」とは、消失エラー（すなわち、場所の判明しているエラー）を言う。
【００１２】
ボーズ・チョドーリ・オッケンジェム（ＢＣＨ）符号などの誤り訂正符号（ＥＣＣ）は、訂正の後、フラッシュ・デバイス中の生ビット不良率をより低いレベルに低減する助力となるが、それでも最終的なレベルは、ストレージ・システムに対する目標生ビット不良率よりも高くなり得る。例えば、１５ビット訂正ＢＣＨ符号は、０．００１の生ビット不良率を、５１２バイト（Ｂ：ｂｙｔｅ）セクタを復号した後、２．７ｅ−９の生不良率に低下させることができる。但し、フラッシュ・デバイス中のＨＥの確率を表すこの生ビット不良率は、典型的なハード・ディスク・ドライブ（ＨＤＤ：ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）の不良率よりも実質的に高く、これは、８ｅ−１４〜８ｅ−１６に分布し得る。より高い不良率は、フラッシュ・デバイスの書き込み耐用寿命の終末近く、並びにデータ保持寿命の終末近くで生じ易い。
【００１３】
ＥＣＣの誤り訂正能力を超過すると、この事象が非常に高い確率で検出されることになる。例えば、１５ビット訂正ＢＣＨ符号が実装されていて、１５より多いエラーが生じた場合、ＢＣＨ符号自体がかかる事象を検出する確率が非常に高くなる。いずれの場合も、訂正ミスの確率が１ｅ−２６のオーダー近くになることを保証するため、一般には、巡回冗長符号（ＣＲＣ：ｃｙｃｌｉｃａｌ  ｒｅｄｕｎｄａｎｃｙ  ｃｏｄｅ）が加えられる。訂正ミスの検出に失敗したＢＣＨ符号は、ＨＤＤの書き落としまたはトラック外書き込みと症候的には同様である。
【００１４】
ある実施形態では、当該技術分野で既知の任意の多重消失エラー訂正符号が用いられ得る。ある実施形態によって用いられる多重消失エラー訂正符号の一例は、リードソロモン（ＲＳ：Ｒｅｅｄ−Ｓｏｌｏｍｏｎ  ）符号である。ＲＳ符号は、当該技術分野では周知であり、複数の消失エラーを訂正するため使うことができる。ＲＳ符号は、シンボルに基づいており、これらシンボルのサイズはアプリケーションに依存する。ＲＡＩＤアーキテクチャに関するＲＳ符号の参考文献については、Ｊ．Ｓ．Ｐｌａｎｋ著、「Ａ  Ｔｕｔｏｒｉａｌ  ｏｎ  Ｒｅｅｄ−Ｓｏｌｏｍｏｎ  Ｃｏｄｉｎｇ  ｆｏｒ  Ｆａｕｌｔ−Ｔｏｌｅｒａｎｃｅ  ｉｎ  ＲＡＩＤ−ｌｉｋｅ  Ｓｙｓｔｅｍｓ」、Ｓｏｆｔｗａｒｅ，Ｐｒａｃｔｉｃｅ  ＆  Ｅｘｐｅｒｉｅｎｃｅ，９９５〜１０１２、１９９７年９月、を参照されたい。
【００１５】
複数の消失エラーの訂正のための効率的な符号の別のファミリが、Ｂｌａｕｍ−Ｒｏｔｈ９３（ＢＲ９３）符号により提供され、これは、Ｍ．Ｂｌａｕｍら著、「Ｎｅｗ  Ａｒｒａｙ  Ｃｏｄｅｓ  ｆｏｒ  Ｍｕｌｔｉｐｌｅ  Ｐｈａｓｅｄ  Ｂｕｒｓｔ  Ｃｏｒｒｅｃｔｉｏｎ」、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ、ｖｏｌ．３９、ｐｐ．６６〜７７、１９９３年に記載されている。ＢＲ９３符号は、ガロア体演算を回避し、代わりに排他的ＯＲ（ＸＯＲ）演算だけを行うので、ＲＳ符号よりもより単純な傾向のあるアレイ符号である。
【００１６】
ＲＳおよびＢＲ９３符号の両方は最大距離分離（ＭＤＳ：ｍａｘｉｍｕｍ  ｄｉｓｔａｎｃｅ  ｓｅｐａｒａｂｌｅ）符号である。すなわち、これらは消失エラーを訂正するため、冗長性の最適利用を図る。ＲＳおよびＢＲ９３符号は、本明細書で説明する諸実施形態が用いることの可能な多重消失エラー訂正符号の２種類の例である。諸実施形態は、これら２つの符号に限定されるものでなく、一般化ＥＶＥＮＯＤＤ符号または一般化行−対角符号（ＲＤＣ：ｒｏｗ  ｄｉａｇｏｎａｌ  ｃｏｄｅ）などの他のファミリの符号も実装することが可能である。
【００１７】
ハード・ディスク・ドライブ（ＨＤＤ）のアレイと対照的に、ＳＳＤのアレイは入り混じった故障モードを呈する。一方では、ＨＤＤの場合と同様、破局的なＳＳＤ故障がある。他方では、ハード・エラー（ＨＥ）があり、これは一般に、ＨＥを包含するセクタにアクセスしようとするまでそれらの存在が分からないという点でサイレントである。この状況は、ＲＡＩＤ（独立ディスクの冗長アレイ）型のアーキテクチャにおける復元作業を困難にしている。例えば、ＲＡＩＤ５アーキテクチャで破局的ＳＳＤ故障が生じたと仮定する。復元は、無事なデバイス各々中の対応するセクタに「排他論理和演算を行う」（ＸＯＲ演算を行う）ことによって故障したデバイスの各セクタを再構築することから開始される。しかしながら、ＨＥも被っている行がある場合、かかる行は故障した２つのセクタを有することになる。ＲＡＩＤ５は、かかる事象からの復元はできないので、データ喪失が生じることになる。
【００１８】
上記の状態に対する可能な対処策は、ＲＡＩＤ６型のアーキテクチャを用いることであり、この型ではパリティのために２つのＳＳＤが使われる。ＲＡＩＤ６アーキテクチャは、一行中の２つの消去されたセクタの復元を可能にする。しかしながら、かかる対処策は浪費的である。というのは、これは、ＨＥからの保護を行うために追加の全体デバイスを必要とするからである。本明細書で説明するＰＭＤＳ符号の実施形態は、パリティ専用の第二のＳＳＤの必要なしにＨＥを取り扱えるようにすることによって、ＲＡＩＤ５とＲＡＩＤ６との中間の対処策を提供する。
【００１９】
破局的故障とＨＥとが混在するこの環境を取り扱うために、情報をＳＳＤ中に書き込むやり方を考慮に入れる。情報をＳＳＤ中に書き込むこのやり方は、ＨＤＤの中に情報が書き込まれるやり方とは全く異なる。ＳＳＤにおいて、新規書き込みは、最初にいくつかの連続するセクタを消去するステップと、その後それらの全てに再書き込みをするステップとを含む。したがって、ＳＳＤのアレイ中の短い書き込みオペレーション（例えば、一度に一セクタ）はここでの要諦ではない。新規書き込みが行われるたびに、各ＳＳＤ中の、例えばＭ個のセクタのデータ・ストライプが消去され次いで再書き込みされる。この場合、パリティは、新規書き込みの一部として再計算される。本明細書での説明では、ストレージ・アレイは、次々に反復される「ｍ×ｎ」のストライプ（「ｎ」はＳＳＤの数）で構成されていると仮定している。各ｍ×ｎのストライプは、独立した単位であり、各ストライプに対するパリティは、本明細書で説明される諸実施形態に従って計算されることになる。さらに、各新規書き込みは、いくつかのｍ×ｎストライプを書き込むステップを含む（この数は、使われるアプリケーション、個別のＳＳＤ、および他のファクタ如何によっては、一にすることもできる）。本明細書で説明する、ＰＭＤＳ符号のファミリの実施形態は、破局的な故障とＨＥとの同時訂正を可能にする。
【００２０】
図１は、ある実施形態による、ＰＭＤＳ符号を用いて保護されるシステム１００のブロック図を示す。図１に示されるように、ホスト・コンピュータ１０２は、ストレージ・システム１１０中のアレイ・コントローラ１０４と通信している。ストレージ・システム１１０は、ストレージ・デバイス０（１０６ａ）、ストレージ・デバイス１（１０６ｂ）、ストレージ・デバイス２（１０６ｃ）からストレージ・デバイスｎ−１（１０６ｄ）までのｎ個のストレージ・デバイス１０６（ｎは１より大きい）で構成されるストレージ・アレイ１０８中にデータを格納する。ある実施形態において、パリティ・ビットは、ホスト・データ（例えば、データ・ビットとして表される）と共にストレージ・デバイス１０６中に格納される。一実施形態において、ストレージ・アレイ１０８中のストレージ・デバイス１０６は、フラッシュ・デバイスなどのＳＳＤによって実装される。ある実施形態において、このアレイは、各デバイスが３２ギガバイト（ＧＢ：Ｇｉｇａｂｙｔｅ）のストレージ容量を有する５つのフラッシュ・デバイスで構成される。図１に示されるように、アレイ・コントローラ１０４は、ストレージ・システム１１０の一部であり、別の実施形態では、アレイ・コントローラ１０４は、ホスト・コンピュータ１０２の一部である。
【００２１】
図２は、ある実施形態による、図１のストレージ・システム１１０を示す。ストレージ・システム１１０は、当業者には周知のように、レシーバ、トランスミッタ、およびクロックなど他の数々のエレメントを含み得るが、これらは簡明化のため図示されていない。図２に示されるように、アレイ・コントローラ１０４は、エンコーダ２０２およびデコーダ２０４を含む。エンコーダ２０２は、書き込みプロセスの過程で、一つ以上の書き込みデータのビット群を（例えば、ホスト・コンピュータ１０２から）受信し、書き込みストライプを生成するために用いられ、書き込みストライプは、データ・エントリおよびパリティ・エントリの両方を含む。各エントリは、「ｂ」個のビットを含み、一つ以上のページ、一つ以上のセクタ、もしくは一つ以上のシンボルまたはこれらの組み合わせに相当し得る。ある実施形態において、書き込みストライプは、ストレージ・アレイ１０８中に書き込まれ、該ストレージ・アレイ１０８中の複数の行にまたがる。デコーダ２０４は、読み取りプロセスの過程で、ストレージ・アレイ１０８から一つ以上のデータ・エントリを読み取るために用いられる。あるエントリ中に一つ以上のＨＥが検出されると、デコーダは、ストレージ・アレイ１０８から、ＨＥ（群）が検出されたストライプ全体を読み取る。デコーダ２０４およびエンコーダ２０２の両方は、共用データ（例えば、エンコーダ２０２が、書き込みストライプを生成するために、書き込みエントリに適用した符号化の型を識別するためのデータ）へのアクセスを有する。読み取りストライプはパリティ・ビットを包含し、これは読み取りデータを生成するためにデコーダ２０４によって除去される。デコーダ２０４は、少なくとも一つのデータ・エントリの読み取り不良が発生したときに使われる、リコンストラクタ２０６を含む。読み取り不良は、例えば、あるエントリの内部ＥＣＣの誤り訂正能力が超過されたときに発生する。通常、エラーのあるエントリの場所は分かっており、しかして、エラーの場所（例えば、消失エラー・エントリの場所（群））および読み取りストライプがリコンストラクタ２０６に送信され、該リコンストラクタが消失エラー・エントリを回復しようと試みる。
【００２２】
図３は、複数のストレージ・デバイス１０６にまたがって格納されるデータ・アレイの内容を示す（本明細書では、このデータ・アレイを「ストライプ」とも言う）。データ・アレイは、エンコーダ２０２によってＰＭＤＳ符号を用いて一単位として符号化されている。本明細書で用いる用語「符号化ストライプ」とは、一緒に書き込みストライプを構成し、一ユニットとしてＰＭＤＳ符号を使って符号化されるエントリの一群を言う。本明細書で用いる用語「復号ストライプ」とは、一緒に読み取りストライプを構成し、一ユニットとしてＰＭＤＣ符号を使って復号されるエントリの一群を言う。
【００２３】
図３に示されたデータ・アレイは、ｍ行とｎ列とに配置されたエントリを含む。各エントリ・タイプに添えられている下付き記号は、データ・アレイ中のそのエントリの位置を表す（例えば「ａ００」はデータ・アレイ中の行０、列０にあるエントリである）。ある実施形態において、各列は、ストレージ・デバイスの一部分を表す。図３に示されたストライプにおいて、各エントリは、フラッシュ・メモリ・デバイス中のメモリ・セル内に格納された「ｂ」個のシンボルを表す。本明細書では、説明目的のためにｂのシンボルの各々が一ビットであると仮定しているが、実際上はもっと大きなシンボルにされることになろう。エントリ読み取り不良が生じたことを検出し、いずれかの消失エラー場所を識別するため、ＥＣＣ（例えばＢＣＨ）もしくはＣＲＣまたはその両方が用いられると仮定する。本明細書で説明する諸実施形態は、読み取り不良を識別するために使われた方法の如何にかかわらず、かかる読み取り不良がレポートされたことを仮定している。
【００２４】
ある実施形態において、デコーダ２０４は、図３に示された仕方で符号化されたストレージ・アレイ１０８から、一つ以上のエントリでＨＥを被った読み取りストライプを受信する。ある実施形態において、デコーダ２０４に配置されたリコンストラクタ２０６によって、ＨＥからの復元が行われる。
【００２５】
ある実施形態によれば、アレイ中の各行は、その行中のｒ個のどの消失エラーも復元されるようなやり方で、ｒ個のパリティ・エントリによって保護されている。すなわち、データ・アレイの各行は、［ｎ，ｎ−ｒ，ｒ＋１］ＭＤＳ符号を構成している。さらに、アレイには、「ｓ」個の全体用の追加パリティが加えられる。このｓ個の追加パリティは、データ・アレイ中に多様な方途で配置することができるが、説明の簡明化のため、本例ではこれらは最後の行に配置される。全体用ということは、これらのパリティが、データ・アレイ中の全「ｍｎ」エントリに影響を与えることを意味する。例えば、下記の４×５のデータ・アレイの事例では、ｒ＝１、ｓ＝２であり、最後の行に２つの追加の全体用パリティが配置されている。「Ｄ」はデータ・エントリを示し、「Ｐ」はパリティ・エントリを示す。
Ｄ  Ｄ  Ｄ  Ｄ  Ｐ
Ｄ  Ｄ  Ｄ  Ｄ  Ｐ
Ｄ  Ｄ  Ｄ  Ｄ  Ｐ
Ｄ  Ｄ  Ｐ  Ｐ  Ｐ
【００２６】
上記のデータ・アレイを参照し、一つの破局的な故障が発生し（すなわち、データ・アレイ中のある列全体が故障した）、それに加えてデータ・アレイ中のどこかに２以下のＨＥがある、と仮定しよう。本明細書で説明するＰＭＤＳが、これらの故障（本明細書では消失エラーとも言う）を訂正することになる。この状態を、下記のデータ・アレイで例示する。左側のアレイでは、相異なる行で２つのさらなるＨＥが生じている。右側のアレイでは、同じ行で２つのさらなるＨＥが生じている「Ｆ」は故障を示し、「Ｎ」故障のないことを示す。
Ｎ  Ｆ  Ｎ  Ｆ  Ｎ            Ｎ  Ｎ  Ｎ  Ｆ  Ｎ
Ｎ  Ｎ  Ｎ  Ｆ  Ｎ            Ｎ  Ｎ  Ｎ  Ｆ  Ｎ
Ｎ  Ｎ  Ｎ  Ｆ  Ｆ            Ｆ  Ｎ  Ｎ  Ｆ  Ｆ
Ｎ  Ｎ  Ｎ  Ｆ  Ｎ            Ｎ  Ｎ  Ｎ  Ｆ  Ｎ
【００２７】
この問題を解決する一つのアプローチは、ＭＤＳ符号を用いることである。この４×５のデータ・アレイの例では、合計６つのパリティ・エントリがある。したがって、６つのパリティ・エントリを備えた２０のエントリ（例えば、シンボル）に、ＭＤＳ符号を実装することが可能である。そこで、［２０，１４，７］ＭＤＳ符号（ＲＳ符号と同様）を実装することができる。このアプローチにおける問題は、その複雑さである。一実施形態において、このＭＤＳ符号は［２０，１４，７］ＲＳ符号である。データ・アレイ中の行の数であるｍが４であるこの事例は、例示目的のためだけに提示されている。アプリケーション中でもっと一般的なｍの値は１６または３２であり、これは１８または３４のパリティ・エントリをもたらすことになろう。かかる符号の実装は、実行可能ではあるが複雑である。符号ベースでは、通常のオペレーションにおいて、ＲＡＩＤ５の場合における単一パリティのように、その根底となる、行に基づくＲＡＩＤ構造を用いることが望ましい。追加のパリティが実際に使われるのは比較的まれである。本明細書で説明するＰＭＤＳ符号の諸実施形態は、根底にあるＲＡＩＤ構造を用いるために水平符号を有するという制約に適合する。ＲＡＩＤ５プラス２つの全体用パリティの例の場合において、あるＰＭＤＳ符号は、最大で、行あたり一つの消失エラーに加え、任意の場所における２つの消失エラーまでを訂正することができる。しかして、本ＰＭＤＳ符号は、前述のデータ・アレイ中に表された故障および無故障を示す状態のいずれをも訂正することが可能である。
【００２８】
ＰＭＤＳ符号のある実施形態は、定義１において以下のように定義される
定義１．
【００２９】
【数１】
2015508917.tif 000003
【００３０】
を、各行が［ｎ，ｎ−ｒ，ｒ＋１］ＭＤＳ符号に符号化された、ｍ×ｎのデータ・アレイとし、さらに、ｓ個のパリティ・シンボルがそのアレイに追加されているものとする。
【００３１】
【数２】
2015508917.tif 000004
【００３２】
が、行あたりｒ以下の消失エラーを訂正するのに加え、アレイ中の任意の場所のｓ個の消失エラーを訂正することができれば、
【００３３】
【数３】
2015508917.tif 000005
【００３４】
は、（ｒ，ｓ）ＰＭＤＳ符号である。
【００３５】
定義１に定義された符号
【００３６】
【数４】
2015508917.tif 000006
【００３７】
は二次元符号である。これらのエントリは、行単位で水平方向に読み取られ、この符号が［ｍｎ，ｍ（ｎ−ｒ）−ｓ］線形符号であると仮定されている。以下に、諸符号の実際の構築を、それらのパリティ検査マトリックスに基づいて説明するものとし、これらのマトリックスは（ｍｒ＋ｓ）×ｍｎのマトリックスである。
【００３８】
図４は、ある実施形態による、デコーダ２０４によって実行されるプロセス・フローを示す。ブロック４０２で、ＥＣＣもしくはＣＲＣまたはその両方が、あるエントリの読み取りが失敗したことを検出する。ブロック４０４で、読み取りに失敗したエントリを包含するストライプ中のエントリの全てを読み取る要求が送信される。ブロック４０６で、読み取りに失敗したエントリ（群）の場所（群）（すなわち、消失エラー・エントリの場所（群））と共に読み取られたストライプが、リコンストラクタ２０６に送信される。ブロック４０８で、読み取られたストライプ中の消失エラー・エントリの場所の数が、当該スキームの消失エラー訂正能力を上回っているかどうかが判定される。例えば、もし、各行で一つの消失エラーを復元でき２つの全体用パリティを有する符号が実装されており、ブロック４０８で、一つの列全体に併せ３つのさらなるエントリが消失していることが見出されれば、これはＰＭＤＳ符号の消失エラー訂正能力を超過している。ブロック４０８で、読み取られたストライプ中の消失エラー・エントリの場所の数がＰＭＤＳスキームの能力を上回ると判定された場合、ブロック４１４が実行され、デコーダ２０４にエラー状態が返される。ブロック４０８で、消失エラー・エントリの場所の数がＰＭＤＳスキームの能力内であると判定された場合、ブロック４１０が実行される。ブロック４１０で、読み取られたストライプが、本明細書で説明するＰＭＤＳ消失エラー訂正符号の実施形態を用いて再構築される。ブロック４１２で、リコンストラクタ２０６は、復元された読み取りエントリ（群）を含む復元済み読み取りストライプをデコーダ２０４に出力する。
【００３９】
図５および図６は、典型的な符号化理論によるエンコーダおよび消失エラー・デコーダを表す。消失エラー復号において、符号化は復号の特殊なケースであり、消失エラー解決には、シンドローム計算に続き、発生した消失エラーの数と等しいいくつかの方程式を用いて線形システムを解くことが必要となる。該シンドロームは、本明細書で後記するパリティ検査マトリックスから計算され、消失エラーが当該符号の消失エラー訂正能力内であれば、システムは常にある解を有する。
【００４０】
図５は、ある実施形態による、書き込みストライプを符号化するためのプロセス・フローである。ある実施形態において、図５に示されたプロセス・フローは、ｍ×ｎのデータ・アレイを、ｒ個の破局的エラーおよび「ｓ」のさらなるエラーから保護するために、エンコーダ２０２によって実施される。ブロック５０２で、「ｎ」の列（例えば、フラッシュ・デバイス）および「ｍ」の行があると仮定される。さらに、最初のｍ−１個の行中の最初のｎ−ｒ個の列中のエントリ、およびｍ番目の行の最初のｎ−ｒ−ｓ個のエントリが、データ・エントリ（または情報エントリ）を包含するように仮定される。残りのエントリは空白であり、本明細書において後で説明するようにＰＭＤＳ符号を使って符号化されることになる。ブロック５０４で、最初のｍ−１の行は、［ｎ，ｎ−ｒ］ＭＤＳ符号を使って符号化される。ある実施形態において、各行に対する結果が、対応する行の最後のｎ−ｒエントリ中に格納される。ブロック５０６で、最後の行が、本明細書において後で説明するように、パリティ検査マトリックスに基づく線形システムを解くことによって符号化される。ある実施形態において、これらの結果は、データ・アレイの最後の行、行ｍ−１中の最後のｎ−ｒ−ｓ個のエントリ中に格納される。
【００４１】
図６は、ある実施形態による、書き込みストライプを復号するためのプロセス・フローである。ある実施形態において、図６中に示されたプロセスは、ｍ×ｎのデータ・アレイに対してデコーダ２０４によって実施される。ブロック６０２で、各々が最大ｒ＋ｓｊ（１≦ｊ≦ｔ）までの消失エラーを有する「ｔ」個の行があり、残りの行中に最大ｒ個までの消失エラーがあると仮定される（ｓｊの総和がｓ）。ブロック６０４で、最大ｒ個までの消失エラーを有する行が、一つ以上の［ｎ，ｎ−ｒ］ＭＤＳ符号を使って訂正される。ブロック６０６で、本明細書において後で説明するように、各々が最大ｒ＋ｓｊまでの消失エラーを有する「ｔ」の行が、パリティ検査マトリックスに基づき、シンドロームを計算して線形システムを解くことによって訂正される。
【００４２】
以下は、ＰＭＤＳ符号の諸実施形態に対する符号構築の説明、および消失エラー訂正符号がＰＭＤＳ符号であるための一般条件の説明である。さらに、選択されたアプリケーションに対するＰＭＤＳ符号の具体的な実施形態も説明する。
【００４３】
符号構築
前述したように、各エントリはｂ個のビットで構築される。ある実施形態において、各エントリは環（ｒｉｎｇ）中にあると仮定される。この環は、次数ｂの多項式ｆ（ｘ）で定義される。すなわち、（次数ｂ−１以下の多項式群として取られた）環中の２つの要素の積は、ｆ（ｘ）による両要素の積の留数である（ｆ（ｘ）が既約（ｉｒｒｅｄｕｃｉｂｌｅ）の場合、環はガロワ体ＧＦ（２ｂ）となる）。ａをこの環を定義する多項式ｆ（ｘ）の根とする。ｆ（ｘ）の指数は（ｅ（ｆ（ｘ））と示され、これはａの指数である。すなわち、
【００４４】
【数５】
2015508917.tif 000007
【００４５】
ｆ（ｘ）が原始多項式（ｐｒｉｍｉｔｉｖｅ）の場合は、ｅ（ｆ（ｘ））＝２ｂ−１となる。
【００４６】
適用において重要となる特殊なケースは、ｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１（ｐは素数）である。この場合、ｅ（ｆ（ｘ））＝ｐ  であり、ｆ（ｘ）は既約でないことがある。事実上、ＧＦ（ｐ）中で２が原始元（ｐｒｉｍｉｔｉｖｅ）のとき且つそのときに限り、ｆ（ｘ）が既約であることを証明するのは難しくない。しかして、ｐ−２以下の次数の多項式モジュロ１＋ｘ＋・・・＋ｘｐ−１は環を構成し、一般には体（ｆｉｅｌｄ）ではない。この環はブルームロス（ＢＲ）符号の構築に使われており、本明細書の諸実施形態で説明するように、ｆ（ｘ）は既約であるか、もしくはｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１（ｐは素数）であると仮定される。一般的構築は以下のとおり定義される。
【００４７】
構築（Ｃｏｎｓｔｒｕｃｔｉｏｎ）１．
ｆ（ｘ）は既約であるか、もしくはｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１（ｐは素数）である場合の、二元多項式モジュロｆ（ｘ）を考察する。ｍｎ≦ｅ（ｆ（ｘ））とする（ここでｅ（ｆ（ｘ））はｆ（ｘ）の指数を表す）。
【００４８】
【数６】
2015508917.tif 000008
【００４９】
を、その（ｍｒ＋ｓ）×ｍｎパリティ検査マトリックスが、
【００５０】
【数７】
2015508917.tif 000009
【００５１】
である符号とする。式（２）で与えられたマトリックスＨ（ｎ，ｒ，ｉ，ｊ）中の各行は前の行の平方である。該マトリックスは、ランクにより距離（ｍｅｔｒｉｃ）が与えられた符号を構築し、列上で符号化でき行上で復号できる符号を構築し、微分ＭＤＳ符号を構築するために、当該技術分野で使われている。
【００５２】
以下の例１は構築１を例示するものである。
例１．
ｍ＝３およびｎ＝５とすると、次式のようになる
【００５３】
【数８】
2015508917.tif 000010
【００５４】
構築１は、環または体を定義する特定のパラメータおよび多項式関数（すなわち、ｆ（ｘ））に対するＰＭＤＳ符号を提供する。受信されたエントリは、
【００５５】
【数９】
2015508917.tif 000011
【００５６】
で表され、その消失エラー・エントリは０に等しい。最初のステップはｒｍ＋ｓ個のシンドロームの計算である。
【００５７】
【数１０】
2015508917.tif 000012
【００５８】
符号に対し、式（１）で与えられたパリティ検査マトリックス
【００５９】
【数１１】
2015508917.tif 000013
【００６０】
を用いて、以下の式のシンドロームが得られる。
【００６１】
【数１２】
2015508917.tif 000014
【００６２】
ｒ＝１の場合．
以下の式はｒ＝１の場合の表現式（ｄｅｓｃｒｉｐｔｉｏｎ）であり、復号のためどのようにシンドロームを用いるか、および、
【００６３】
【数１３】
2015508917.tif 000015
【００６４】
符号がＰＭＤＳであるかどうかを判定するための表現式である。式（１）で与えられた下記パリティ検査マトリックスは、
【００６５】
【数１４】
2015508917.tif 000016
【００６６】
【数１５】
2015508917.tif 000017
【００６７】
として表される。整数ｓｊ≧０に対し、
【００６８】
【数１６】
2015508917.tif 000018
【００６９】
と仮定する。
【００７０】
【数１７】
2015508917.tif 000019
【００７１】
は、行ｉｊ（０≦ｉ１＜ｉ２＜・・・＜ｉｔ≦ｍ−１）中に最大ｓｊ＋１までの消失エラーがある毎に（ｓ１＋１，ｓ２＋１，・・・，ｓｔ＋１）‐消失エラー訂正をしており、かかる消失エラーを訂正することが可能である。なお、定義１によれば、
【００７２】
【数１８】
2015508917.tif 000020
【００７３】
が、整数ｓｊ≧１の各選択に対し（ｓ１＋１，ｓ２＋１，・・・，ｓｔ＋１）−消失エラー訂正のとき且つそのときに限り、
【００７４】
【数１９】
2015508917.tif 000021
【００７５】
はＰＭＤＳであり、ｓは次式となる。
【００７６】
【数２０】
2015508917.tif 000022
【００７７】
以下の補助定理は、
【００７８】
【数２１】
2015508917.tif 000023
【００７９】
が（ｓ１＋１，ｓ２＋１，・・・，ｓｔ＋１）−消失エラー訂正として特性化される際に定義される。
【００８０】
【数２２】
2015508917.tif 000024
【００８１】
【数２３】
2015508917.tif 000025
【００８２】
補助定理１および補助定理２の組み合わせにより以下の定理が得られる。
【００８３】
【数２４】
2015508917.tif 000026
【００８４】
定理１は、構築１により与えられた下記符号
【００８５】
【数２５】
2015508917.tif 000027
【００８６】
がＰＭＤＳかどうかを判定するための検査の条件を提供するが、それ自体は、ＰＭＤＳ符号のいかなるファミリも提供しない。多項式モジュロｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１の環（ｐは素数であり、ｍｎ＜ｐ）を考察する。ｆ（ｘ）が既約であり、環が体となる（等価に、２がＧＦ（ｐ）中の原始元である）ケースがある。なお、定理１における多項式は、最大ｍｎ−１＜ｐ−１＝ｄｅｇ（ｆ（ｘ））までの次数を有する。したがって、ｆ（ｘ）が既約の場合、かかる全ての多項式はｆ（ｘ）に相対的に素（ｒｅｌａｔｉｖｅｌｙ  ｐｒｉｍｅ）であり当該符号はＰＭＤＳである。このことは下記定理２として述べられ、これはＰＭＤＳ符号のファミリを提供する（既約多項式ｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１の数が無限かそうでないかは分かっていない）。
【００８７】
定理２．
構築１で与えられた符号
【００８８】
【数２６】
2015508917.tif 000028
【００８９】
について、ｐが素数であり、ｆ（ｘ）が既約である（または、等価に２がＧＦ（ｐ）中の原始元である）、要素群モジュロｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１の体について考察する。このとき、下記の符号はＰＭＤＳである。
【００９０】
【数２７】
2015508917.tif 000029
【００９１】
ここまで、ｓ個の一般的な値を使って説明してきた。以下の記述では、適用のため重要となり得る特殊なケースについて説明する。
【００９２】
【数２８】
2015508917.tif 000030
【００９３】
【数２９】
2015508917.tif 000031
【００９４】
は、常にＰＭＤＳである。というのは、定理１によって、１≦ｊ≦ｎ−１に対する、型１＋ｘｊの２項式とｆ（ｘ）とは相対的に素だからである。このことは、ｆ（ｘ）が既約の場合確かであり、ｐが素数であるｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１且つｆ（ｘ）が既約である場合も真である。この結果は、定理３として述べられる。
【００９５】
定理３．
【００９６】
【数３０】
2015508917.tif 000032
【００９７】
は常にＰＭＤＳである。
【００９８】
【数３１】
2015508917.tif 000033
【００９９】
このケースは、特にＳＳＤのアレイに対する適用において重要である。
【０１００】
【数３２】
2015508917.tif 000034
【０１０１】
がＰＭＤＳなので、定理１によりｓ＝２の場合に対し次の定理が与えられる。
【０１０２】
【数３３】
2015508917.tif 000035
【０１０３】
このケースは適用において重要なので、この復号（符号化はその特殊なケースである）についてここである程度詳しく説明するが、他のケースも同様に処理できる。ＰＭＤＳ符号
【０１０４】
【数３４】
2015508917.tif 000036
【０１０５】
を考察すると、これは定理４の条件を満たしている。一般性を失うことなく、同一の行ｉ０中に３つの消失エラーがあるか、もしくは相異なる行ｉ０およびｉ１中に消失エラーの２つのペアがあると仮定する（ここで０≦ｉ０＜ｉ１≦ｍ−１）。最初に、同一の行ｉ０中に３つの消失エラー、すなわち行ｉ０のエントリｊ０、ｊ１、およびｊ２（０≦ｊ０＜ｊ１＜ｊ２）に消失エラーが発生した場合を考察する。最初に、式（３）および式（５）（式（４）はｒ＞１に対してだけ使われる）を用いて、
【０１０６】
【数３５】
2015508917.tif 000037
【０１０７】
を仮定すれば、以下のシンドロームが計算される。
【０１０８】
【数３６】
2015508917.tif 000038
【０１０９】
式（１）で与えられたパリティ検査マトリックス
【０１１０】
【数３７】
2015508917.tif 000039
【０１１１】
を使って、次の線形システムが解ける。
【０１１２】
【数３８】
2015508917.tif 000040
【０１１３】
【数３９】
2015508917.tif 000041
【０１１４】
【数４０】
2015508917.tif 000042
【０１１５】
【数４１】
2015508917.tif 000043
【０１１６】
当業者ならよく理解しているように、これら要素
【０１１７】
【数４２】
2015508917.tif 000044
【０１１８】
は、例えば、ＢｌａｕｍおよびＲｏｔｈの米国特許第５，３２１，２４６号、「Ｍｅｔｈｏｄ  ａｎｄ  Ｍｅａｎｓ  ｆｏｒ  Ｃｏｄｉｎｇ  ａｎｄ  Ｒｅｂｕｉｌｄｉｎｇ  ｔｈｅ  Ｄａｔａ  Ｃｏｎｔｅｎｔｓ  ｏｆ  Ｕｎａｖａｉｌａｂｌｅ  ＤＡＳＤｓ  ｏｒ  Ｒｅｂｕｉｌｄｉｎｇ  ｔｈｅ  Ｃｏｎｔｅｎｔｓ  ｏｆ  ａ  ＤＡＳＤ  ｉｎ  Ｅｒｒｏｒ  ｉｎ  ｔｈｅ  Ｐｒｅｓｅｎｃｅ  ｏｆ  ａ  Ｒｅｄｕｃｅｄ  Ｎｕｍｂｅｒ  ｏｆ  Ｕｎａｖａｉｌａｂｌｅ  ＤＡＳＤｓ  ｉｎ  ａ  ＤＡＳＤ  Ａｒｒａｙ」に記載された方法を使って、多項式モジュロ１＋ｘ＋・・・＋ｘｐ−１（ｐは素数）の環に、効率的に反転可能である。
【０１１９】
符号化は復号の特殊なケースである。例えば、２つの全体用パリティが、図３に示されたアレイ中の場所（ｍ−１，ｎ−３）および（ｍ−１，ｎ−２）に配置されていると仮定する。単一のパリティを使い０≦ｉ≦ｍ−２に対するパリティａｉ，ｎ−１を計算した後、上記の方法を用いてａｍ−１，ｎ−３、ａｍ−１，ｎ−２およびａｍ−１，ｎ−１が計算される。具体的には、このバンデルモンド行列式は、以下のとおりになる。
【０１２０】
【数４３】
2015508917.tif 000045
【０１２１】
したがって、符号化のため反転が必要なのは、
【０１２２】
【数４４】
2015508917.tif 000046
【０１２３】
のみであり、多くの演算は事前計算が可能であるので、符号化が非常に効率的になる。
【０１２４】
もう一つのケースは、行ｉ０およびｉ１（０≦ｉ０＜ｉ１≦ｍ−１）中に消失エラーの２つのペアがある場合である。この例において、消失エラーの生じたエントリは、
【０１２５】
【数４５】
2015508917.tif 000047
【０１２６】
であると仮定する。再度、パリティ検査マトリックス
【０１２７】
【数４６】
2015508917.tif 000048
【０１２８】
を使い、４つの未知値を持つ４つの方程式の線形システムが解かれる。
【０１２９】
【数４７】
2015508917.tif 000049
【０１３０】
この線形システムを解くために、次の行列式が反転される。
【０１３１】
【数４８】
2015508917.tif 000050
【０１３２】
行演算によって、この行列式が、以下の行列式にａの累乗を乗じたものに等しいことが分かる。
【０１３３】
【数４９】
2015508917.tif 000051
【０１３４】
なお、この行列式は２×２のバンデルモンド・マトリックスに相当し、これは次式と等価である。
【０１３５】
【数５０】
2015508917.tif 000052
【０１３６】
前述したように、この最後の式は、環モジュロｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１（ｐは素数）の場合、反転は容易である。但し、
【０１３７】
【数５１】
2015508917.tif 000053
【０１３８】
の反転は、上記の二項式
【０１３９】
【数５２】
2015508917.tif 000054
【０１４０】
を反転するようにきれいにはいかない。
【０１４１】
【数５３】
2015508917.tif 000055
【０１４２】
は、定理４によって相対的に素なので、
【０１４３】
【数５４】
2015508917.tif 000056
【０１４４】
は、ユークリッドの互除法を使って反転される。
【０１４５】
これは、いくらかの計算時間がかかるが、頻繁に行われる演算ではない。これが使われるときは、一般には、破局的故障によって既にパフォーマンスは落ち込んでいる。
【０１４６】
以下は、いくつかの具体的なＰＭＤＳ符号
【０１４７】
【数５５】
2015508917.tif 000057
【０１４８】
の解析である。最初に、有限体ＧＦ（２ｂ）を考察する。下記の表１は、値ｂと、既約多項式ｆ（ｘ）（８進法で）と、指数ｅ（ｆ（ｘ））と、値ｍおよびｎとを含み、これらに対し、符号
【０１４９】
【数５６】
2015508917.tif 000058
【０１５０】
は、定理４によりＰＭＤＳである。このリストは、符号がＰＭＤＳである場合の全ての可能な値を網羅することは意図されていない。
【０１５１】
【表１】
2015508917.tif 000059
【０１５２】
次に、多項式モジュロｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１の環（ｐは素数であり、ｍｎ＜ｅ（ｆ（ｘ））＝ｐ）を考察する。ｆ（ｘ）が既約である場合は定理２によって解けるので、この場合は、ｆ（ｘ）が既約でない、すなわち、環が体でないと仮定する。この環は、ＢＲ符号に対して考慮された。なぜなら、これは、有限体のケースの場合のようにルックアップ・テーブルを使わずに、大きなサイズのシンボルに対し、消失エラーの効率的な訂正を可能にするからである。ｍおよびｎ（ｍｎ＜ｐ）の色々な値に対し、定理４の全てのあり得るケースをチェックする必要がある。
【０１５３】
その結果を下記の表２に示している。この表は、ｆ（ｘ）が既約となる（したがって、２はＧＦ（ｐ）中の原始元ではない）１７から２５７までの素数のリストを、ｍおよびｎのいくつかの値と当該符号がＰＭＤＳかどうかの否応と共に提供するものである。かかる素数のほとんどに対し、その符号はＰＭＤＳである。例外は、３１、７３、および８９だけである。８９の場合は特に興味深い。というのは、ｍ＝８且つｎ＝１１、およびｍ＝ｎ＝９に対して符号がＰＭＤＳでないからである。しかしながら、ｍ＝１１且つｎ＝８に対して符号はＰＭＤＳであり、このことは、符号がＰＭＤＳであることは、選択された多項式ｆ（ｘ）だけでなく、ｍおよびｎにも依存するという事実を示している。
【０１５４】
【表２】
2015508917.tif 000060
【０１５５】
【数５７】
2015508917.tif 000061
【０１５６】
奇数の和としてｓ＝３を得るための２つのやり方がある。一つは３自体であり、他方は１＋１＋１である。次いで定理１に基づくと、定理５は以下のとおりである：
【０１５７】
【数５８】
2015508917.tif 000062
【０１５８】
しかして、符号
【０１５９】
【数５９】
2015508917.tif 000063
【０１６０】
がＰＭＤＳであるかどうかを検査するため、最初に、
【０１６１】
【数６０】
2015508917.tif 000064
【０１６２】
が、上記の表１および表２に示されたケースと同様に、ＰＭＤＳかどうかの判定が行われる。次いで、定理５の式（８）および（９）が満たされているかどうかを調べるための検査が行われる。例えば、表１中の符号は
【０１６３】
【数６１】
2015508917.tif 000065
【０１６４】
であるが、定理５の式（９）はかなり制限的でエントリのほとんどは
【０１６５】
【数６２】
2015508917.tif 000066
【０１６６】
に合致しない。しかしながら、表２では、
【０１６７】
【数６３】
2015508917.tif 000067
【０１６８】
である符号のいくつかが、
【０１６９】
【数６４】
2015508917.tif 000068
【０１７０】
でもある。これらの結果は、下記の表３に示されており、この表は、素数１７、４３、８９、１２７、１５１、２４１、および２５７、並びに（ｍ，ｎ）＝（１１，８）の８９に対して、符号が
【０１７１】
【数６５】
2015508917.tif 000069
【０１７２】
であったにもかかわらず、これらが
【０１７３】
【数６６】
2015508917.tif 000070
【０１７４】
ではないことを示している。
【０１７５】
表３は、ＧＦ（ｐ）中の２が原始元でないｐの値、および下記のいくつかの符号を示している。
【０１７６】
【数６７】
2015508917.tif 000071
【０１７７】
【表３】
2015508917.tif 000072
【０１７８】
【数６８】
2015508917.tif 000073
【０１７９】
前の解析と同様に、ｓ＝４は全てのあり得る奇数の和として表されている。これを行うやり方には、４＝１＋３、４＝３＋１、および４＝１＋１＋１＋１＋１の３つがある。次いで、定理１に基づくと、定理６は以下のとおりである：
【０１８０】
【数６９】
2015508917.tif 000074
【０１８１】
【数７０】
2015508917.tif 000075
【０１８２】
に対する制限条件を次に考察する。近年の符号は、消失した一つの列と、２つ以下のエラーを有する１つの行または各一つ以下のエラーを有する２つの異なる行と、を復元できるように構築されている。符号化の観点からは、５消失エラー訂正および（３，３）消失エラー訂正の両方を行う
【０１８３】
【数７１】
2015508917.tif 000076
【０１８４】
がこれを達成する（これらの条件は近年の符号よりも実際に強力である。というのは、これらは消失エラーのあった列の情報を必要とせず、消失エラーが行のどこにあってもよいからである）。なお、定理２によれば、
【０１８５】
【数７２】
2015508917.tif 000077
【０１８６】
は、任意の１≦ｌ１＜ｌ２＜ｌ３≦ｎ−１に対し、式（８）が成立するとき且つそのときに限り、５消失エラーを訂正する。また、定理２によって、
【０１８７】
【数７３】
2015508917.tif 000078
【０１８８】
は、任意の１≦ｉ≦ｍ−１および０≦ｌ１．０＜ｌ１．１≦ｎ−１、０≦ｌ２．０＜ｌ２．１≦ｎ−１に対し、式（７）が成立するとき且つそのときに限り、（３，３）消失エラーを訂正する。式（７）は、まさしく、
【０１８９】
【数７４】
2015508917.tif 000079
【０１９０】
が定理４によってＰＭＤＳになるための条件である。これは以下の補助定理をもたらす。
【０１９１】
【数７５】
2015508917.tif 000080
【０１９２】
表２に示されるように、
【０１９３】
【数７６】
2015508917.tif 000081
【０１９４】
がＰＭＤＳであるｍ、ｎおよびｐの値に対し、式（８）が成り立つ。したがって、補助定理３によって、かかる素数ｐに対し、
【０１９５】
【数７７】
2015508917.tif 000082
【０１９６】
は、５消失エラー訂正および（３，３）消失エラー訂正の両方を行う。
【０１９７】
【数７８】
2015508917.tif 000083
【０１９８】
これまで、ｒ＝１のケースを説明してきた。ｒ＝ｓ＝１であれば、前述したように符号はＰＭＤＳである。以下は、ｒ＞１の場合の検証である。しかして、行ｉ（０≦ｉ≦ｍ−１）は、場所０≦ｊ０＜ｊ１＜・・・＜ｊｒ≦ｎ−１にｒ＋１の消失エラーを有すると仮定する。以下の定理７は、符号がＰＭＤＳであるための条件を与える。
【０１９９】
【数７９】
2015508917.tif 000084
【０２００】
【数８０】
2015508917.tif 000085
【０２０１】
は、前述したようにＰＭＤＳである。しかして、定理７により、
【０２０２】
【数８１】
2015508917.tif 000086
【０２０３】
もＰＭＤＳである。式（１３）により、
【０２０４】
【数８２】
2015508917.tif 000087
【０２０５】
は、任意の１≦ｌ１＜ｌ２＜ｌ３≦ｎ−１且つｒ＝３に対し、式（８）が成立するとき且つそのときに限り、ＰＭＤＳである。
【０２０６】
【数８３】
2015508917.tif 000088
【０２０７】
【数８４】
2015508917.tif 000089
【０２０８】
がＰＭＤＳであるためには、該符号は４消失エラー訂正および（３，３）消失エラー訂正の両方を行う必要がある。前述したように、
【０２０９】
【数８５】
2015508917.tif 000090
【０２１０】
は、任意の１≦ｌ１＜ｌ２＜ｌ３≦ｎ−１に対し、式（８）が成立するとき且つそのときに限り、４消失エラー訂正を行う。また、前述したように、これは、
【０２１１】
【数８６】
2015508917.tif 000091
【０２１２】
がＰＭＤＳであるというのと等価である。
【０２１３】
【数８７】
2015508917.tif 000092
【０２１４】
が（３，３）消失エラー訂正を行うための条件を検証することによって、定理８が得られる。
【０２１５】
【数８８】
2015508917.tif 000093
【０２１６】
別の構築
以下は、前述した構築１とは別の、ＰＭＤＳ符号構築の実施形態の説明である。
【０２１７】
構築２．
二元多項式モジュロｆ（ｘ）を考察する。ここで、ｆ（ｘ）は既約であるかもしくはｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１であり、ｐは素数である。ｍｎ≦ｅ（ｆ（ｘ））とする。
【０２１８】
【数８９】
2015508917.tif 000094
【０２１９】
を、その（ｍｒ＋ｓ）×ｍｎのパリティ検査マトリックスが次式である符号とする。
【０２２０】
【数９０】
2015508917.tif 000095
【０２２１】
次いで、構築２をいくつかの例を用いて説明する。第一例ではｍ＝３且つｎ＝５である。このとき：
【０２２２】
【数９１】
2015508917.tif 000096
【０２２３】
【数９２】
2015508917.tif 000097
【０２２４】
の２つは一致することに留意されたい。以下はいくつかの特殊なケースの解析である。
【０２２５】
【数９３】
2015508917.tif 000098
【０２２６】
【数９４】
2015508917.tif 000099
【０２２７】
が（ｒ＋１）の消失エラー訂正を行う条件を、以下に検証する。式（１４）で定義された下記パリティ検査マトリックスを用いれば、
【０２２８】
【数９５】
2015508917.tif 000100
【０２２９】
【数９６】
2015508917.tif 000101
【０２３０】
は、任意の０≦ｉ≦ｍ−１および任意の１≦ｊ０＜ｊ１＜・・・＜ｊｒに対し、バンデルモンド行列式
【０２３１】
【数９７】
2015508917.tif 000102
【０２３２】
が反転可能であるとき且つそのときに限り、（ｒ＋１）消失エラー訂正を行う。ｆ（ｘ）が既約の場合、以下のようになるので、
【０２３３】
【数９８】
2015508917.tif 000103
【０２３４】
【数９９】
2015508917.tif 000104
【０２３５】
は反転可能である。ｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１（ｐは素数）且つｆ（ｘ）が既約の場合も、
【０２３６】
【数１００】
2015508917.tif 000105
【０２３７】
は反転可能である。これにより定理９が得られる。
【０２３８】
【数１０１】
2015508917.tif 000106
【０２３９】
【数１０２】
2015508917.tif 000107
【０２４０】
以下の定理が成立する。
【０２４１】
【数１０３】
2015508917.tif 000108
【０２４２】
ｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１（ｐは素数）を考察する。２がＧＦ（ｐ）の原始元である場合の全てのｐ（ｐ＝２２７まで）を検定した（すなわち、ｆ（ｘ）は既約である）中で、全てのインスタンスにおいて式（１６）および式（１７）により与えられるマトリックスは反転可能であった。これにより補助定理４が得られる。
【０２４３】
補助定理４．
構築２によって与えられる符号
【０２４４】
【数１０４】
2015508917.tif 000109
【０２４５】
について、要素群の体モジュロｆ（ｘ）＝１＋ｘ＋・・・＋ｘｐ−１（ｐは素数であり、ｆ（ｘ）が既約である（または、等価に２がＧＦ（ｐ）中の原始元である））を考察する。このとき、１９≦ｐ≦２２７に対し、下記の符号は、ＰＭＤＳである。
【０２４６】
【数１０５】
2015508917.tif 000110
【０２４７】
２がＧＦ（ｐ）中の原始元でないときのｐの値に対し、ｍおよびｎの色々な値に対するいくつかの結果を表４に示す。この表は、表３に非常に類似している。
【０２４８】
【表４】
2015508917.tif 000111
【０２４９】
【数１０６】
2015508917.tif 000112
【０２５０】
がＰＭＤＳであるｐ、ｍおよびｎの値に対し、
【０２５１】
【数１０７】
2015508917.tif 000113
【０２５２】
もまたＰＭＤＳであることが、実際に、表３と表４とを比べると分かる。
【０２５３】
【数１０８】
2015508917.tif 000114
【０２５４】
以下の記述は、さらなる符号構築、およびＰＭＤＳ符号の実施形態の説明を含む。
【０２５５】
技術的効果および利点には、フラッシュ・アレイ型のアーキテクチャに適したＰＭＤＳ符号が含まれ、これらアーキテクチャではハード・エラーが破局的デバイス故障と共存する。アプリケーションで有用な特定の符号、および最適性基準を満たす、ＰＭＤＳ符号に対する必要且つ十分な条件を本明細書で説明してきた。また、技術的効果および利点には、独立ディスクの冗長アレイがあるＲＡＩＤ６と同じ保護を提供するが、ＲＡＩＤ５に近いストレージ効率を有する能力が含まれる。しかして、ある実施形態を用いて、所与の冗長性の量に対し、ストライプ故障に対する保護を最大化することができる。
【０２５６】
本明細書で使用する用語は、単に特定の実施形態を説明する目的のためのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「ある（“ａ”、“ａｎ”）」、および「該（“ｔｈｅ”）」は、文脈上明確に別途に示されていなければ、複数形も同じように含むことが意図されている。さらに、当然のことながら本明細書で用いられる「含む（“ｃｏｍｐｒｉｓｅ”）」もしくは「含んでいる（“ｃｏｍｐｒｉｓｉｎｇ”）」またはその両方は、述べられた特徴、完全体（ｉｎｔｅｇｅｒ）、ステップ、オペレーション、エレメント、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の特徴、完全体、ステップ、オペレーション、エレメント、コンポーネント、もしくはこれらの群、または上記の組み合わせの存在または追加を排除するものではない。添付の請求項中のミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素全ての、対応する構造、材料、動作および均等物は、具体的に請求された他の請求要素と組み合わせてその機能を実施するための、一切の構造、材料または動作を包含することが意図されている。本発明の記述は、例示および説明の目的で提示されたもので、網羅的であることも、または本発明を開示した形態に限定することも意図されていない。当業者には、本発明の範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。本実施形態は、本発明の原理および実際的な応用を最善に説明し、他の当業者が、意図する特定の用途に適したさまざまな修改を加えたさまざまな実施形態に関して、本発明を理解できるように選択し説明されたものである。
【０２５７】
さらに、当業者には周知のように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。従って、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、一般に本明細書では全て「回路」、「モジュール」、または「システム」といわれることもある、ソフトウェアおよびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の態様は、コンピュータ可読プログラム・コードが中に具現化されている一つ以上のコンピュータ可読媒体（群）中に具体化されたコンピュータ・プログラム製品の形を取ることも可能である。
【０２５８】
一つ以上のコンピュータ可読媒体（群）の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいはこれらの任意の適切な組み合わせであり得る。コンピュータ可読ストレージ媒体のさらに具体的な例（非包括的リスト）には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であり得る。
【０２５９】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
【０２６０】
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
【０２６１】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うこともできる。
【０２６２】
本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を上記で説明してきた。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能群／動作群を実装するための手段を生成するようにすることができる。
【０２６３】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することができるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能／動作を実装する命令群を包含する製造品を作り出せるようにすることができる。
【０２６４】
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するためのプロセスを提供するようにすることも可能である。
【０２６５】
図面のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能（群）を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序を外れて行われ得ることに留意すべきである。例えば、連続して示された２つのブロックが、関与する機能によって、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
【図１】
2015508917.tif 000115
【図２】
2015508917.tif 000116
【図３】
2015508917.tif 000117
【図４】
2015508917.tif 000118
【図５】
2015508917.tif 000119
【図６】
2015508917.tif 000120
【手続補正書】
【提出日】平成26年8月15日(2014.8.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ｎ個のストレージ・デバイスのセットにデータを格納する方法であって、
書き込みデータを受信するステップと、
前記書き込みデータを、各エントリが少なくとも一つのセクタを含む、ｍ個の行とｎ個の列とのエントリ群を包含するアレイ中に配置するステップと、
各行に少なくともｒ個のパリティ・エントリがあるように、さらに前記パリティ・エントリが部分最大距離分離（ＰＭＤＳ）符号に対応するように、前記アレイ中のｍｒ＋ｓ個の場所を前記パリティ・エントリに割り当てるステップであって、かかる符号は、前記ｍの行のそれぞれにおける最大ｒ個までの消失エラー、並びに前記データ・アレイ中の任意の場所にあるｓ個（ｓはゼロより大きい整数）のさらなる消失エラーの復元を可能にする、前記割り当てるステップと、
前記書き込みデータおよび関連付けられたパリティ・エントリを前記ストレージ・デバイスのセットに書き込むステップと、
を含む方法。
【請求項２】
前記パリティ・エントリが、ｍｒ＋ｓが未知であるｍｒ＋ｓ個の方程式の線形システムを解くことによって計算され、前記線形システムは、前記書き込みデータおよび前記ＰＭＤＳ符号に対応するパリティ検査マトリックスに基づく、
請求項１に記載の方法。
【請求項３】
前記書き込みデータおよびパリティ・エントリが、ｂ個の要素を有する体または環の中にあり、前記体または環は、次数ｂの多項式ｆ（ｘ）によって生成され、ｍとｎとの積はｆ（ｘ）の指数より小さい、請求項１に記載の方法。
【請求項４】
ｆ（ｘ）が前記多項式Ｍｐ（ｘ）＝１＋ｘ＋ｘ２＋・・・＋ｘｐ−１であり、ｐは素数である、請求項３に記載の方法。
【請求項５】
ｒ＝１である、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記パリティ検査マトリックスが、（ｍ＋ｓ）×（ｍｎ）のマトリックスであって、
ｊ番目（ｊが最大でもｍ）の行が、（ｊ−１）ｍ個の０と、それに続くｍ個の１と、それに続く０群とを含み、
（ｍ＋１）番目の行は、１、その後にα、その後にα２と順々に続く前記行の最後のシンボルαｍｎ−１までを含み、αはｆ（ｘ）の根であり、
（ｍ＋ｉ）番目（ｉは２とｓとの間の数字）の行が、ｉ−１乗された前記（ｍ＋１）番目の行の前記エントリを含む、
請求項１に記載の方法。
【請求項７】
前記パリティ検査マトリックスが、（ｍ＋ｓ）×（ｍｎ）のマトリックスであって、
ｊ番目（ｊは最大でもｍ）の行が、（ｊ−１）ｍ個の０と、それに続くｍ個の１と、それに続く０群とを含み、
（ｍ＋１）番目の行は、１、その後にα、その後にα２と順々に続く前記行の最後のシンボルαｍｎ−１までを含み、αはｆ（ｘ）の根であり、
（ｍ＋ｉ）番目（ｉは２とｓとの間の数字）の行が、ｉ乗された前記（ｍ＋１）番目の行の前記エントリを含む、
請求項１に記載の方法。
【請求項８】
ｍ−１の行が、各々丁度ｒ個のパリティ・エントリを包含し、１つの行がｒ＋ｓ個のパリティ・エントリを包含する、請求項１に記載の方法。
【請求項９】
丁度ｒ個のパリティ・エントリを包含する前記ｍ−１の各行中の前記ｒ個のパリティ・エントリは、［ｎ，ｎ−ｒ］最大距離分離（ＭＤＳ）符号を用いて得られたものであり、残りの前記ｒ＋ｓ個のパリティ・エントリは、前記書き込みデータ、前に得られた前記パリティ・エントリ、および前記ＰＭＤＳ符号に対応する前記パリティ検査マトリックスに基づき、ｒ＋ｓが未知であるｒ＋ｓ個の方程式のシステムを解くことによって得られる、請求項８に記載の方法。
【請求項１０】
ストレージ・アレイ中にデータを格納するためのシステムであって、
複数のストレージ・デバイスを含むストレージ・アレイと、
書き込みデータを受信し、
前記書き込みデータを、各エントリが少なくとも一つのセクタを含む、ｍ個の行とｎ個の列とのエントリ群を包含するアレイ中に配置し、
各行に少なくともｒ個のパリティ・エントリがあるように、さらに前記パリティ・エントリが部分最大距離分離（ＰＭＤＳ）符号に対応するように、前記アレイ中のｍｒ＋ｓ個の場所を前記パリティ・エントリに割り当て、かかる符号は、前記ｍの行それぞれにおける最大ｒ個までの消失エラー並びに前記データ・アレイ中の任意の場所にあるｓ個（ｓはゼロより大きい整数）のさらなる消失エラーの復元を可能にし、
前記書き込みデータおよび関連付けられたパリティ・エントリを前記ストレージ・デバイスのセットに書き込む、
よう構成されたアレイ・コントローラと、
を含むシステム。
【請求項１１】
前記データおよびパリティ・エントリが、ｂ個の要素を有する体または環の中にあり、前記体または環は、次数ｂの多項式ｆ（ｘ）によって生成され、ｍとｎとの積はｆ（ｘ）の指数より小さい、請求項１０に記載のシステム。
【請求項１２】
ｒ＝１である、請求項１０に記載のシステム。
【請求項１３】
前記パリティ検査マトリックスが、（ｍ＋ｓ）×（ｍｎ）のマトリックスであって、
ｊ番目（ｊは最大でもｍ）の行が、（ｊ−１）ｍ個の０と、それに続くｍ個の１と、それに続く０群とを含み、
（ｍ＋１）番目の行は、１、その後にα、その後にα２と順々に続く前記行の最後のシンボルαｍｎ−１までを含み、αはｆ（ｘ）の根であり、
（ｍ＋ｉ）番目（ｉは２とｓとの間の数字）の行が、ｉ−１乗された前記（ｍ＋１）番目の行の前記エントリを含む、
請求項１０に記載のシステム。
【請求項１４】
前記パリティ検査マトリックスが、（ｍ＋ｓ）×（ｍｎ）のマトリックスであって、
ｊ番目（ｊは最大でもｍ）の行が、（ｊ−１）ｍ個の０と、それに続くｍ個の１と、それに続く０群とを含み、
（ｍ＋１）番目の行は、１、その後にα、その後にα２と順々に続く前記行の最後のシンボルαｍｎ−１までを含み、αはｆ（ｘ）の根であり、
（ｍ＋ｉ）番目（ｉは２とｓとの間の数字）の行が、ｉ乗された前記（ｍ＋１）番目の行の前記エントリを含む、
請求項１０に記載のシステム。
【請求項１５】
ｍ−１の行が、各々丁度ｒ個のパリティ・エントリを包含し、１つの行がｒ＋ｓ個のパリティ・エントリを包含する、請求項１０に記載のシステム。
【請求項１６】
丁度ｒ個のパリティ・エントリを包含する前記ｍ−１の各行中の前記ｒ個のパリティ・エントリは、［ｎ，ｎ−ｒ］最大距離分離（ＭＤＳ）符号を用いて得られたものであり、残りの前記ｒ＋ｓ個のパリティ・エントリは、前記書き込みデータ、前に得られた前記パリティ・エントリ、および前記ＰＭＤＳ符号に対応する前記パリティ検査マトリックスに基づき、ｒ＋ｓが未知であるｒ＋ｓ個の方程式のシステムを解くことによって得られる、請求項１５に記載のシステム。
【請求項１７】
ストレージ・アレイにデータを格納するためのコンピュータ・プログラムであって、
書き込みデータを受信し、
前記書き込みデータを、各エントリが少なくとも一つのセクタを含む、ｍ個の行とｎ個の列とのエントリ群を包含するアレイ中に配置し、
各行に少なくともｒ個のパリティ・エントリがあるように、さらに前記パリティ・エントリが部分最大距離分離（ＰＭＤＳ）符号に対応するように、前記アレイ中のｍｒ＋ｓ個の場所を前記パリティ・エントリに割り当て、かかる符号は、前記ｍの行のそれぞれにおける最大ｒ個までの消失エラー並びに前記データ・アレイ中の任意の場所にあるｓ個（ｓはゼロより大きい整数）のさらなる消失エラーの復元を可能にし、
前記書き込みデータおよび関連付けられたパリティ・エントリを前記ストレージ・デバイスのセットに書き込む、
ことをコンピュータに実行させるコンピュータ・プログラム。
【国際調査報告】
2015508917.tif 000121
2015508917.tif 000122