(57)【要約】  記憶媒体からのデータを処理するためにシステム、方法、装置及び技術が提供される。記憶媒体に記憶されているデータのストライプが読出される。ストライプが複数のデータアロケーションユニット（複数のデータＡＵ）及びパリティＡＵを備える。複数のデータＡＵのそれぞれにエラー訂正デコーディングが適用され、複数のデコードされたデータＡＵを生成する。パリティＡＵの値が、複数のデコードされたデータＡＵ内の複数のバイトの複数の値によって満たされるかが、判断される。パリティＡＵの値が複数のデコードされたデータＡＵ内の複数のバイトの複数の値によって満たされるとの判断に応じて、複数のデコードされたデータＡＵが出力される。
2015512110.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体からのデータを処理するためのシステムであって、
前記記憶媒体に記憶されているデータのストライプを読出す読出し回路であって、前記ストライプが複数のデータアロケーションユニット（複数のデータＡＵ）及びパリティＡＵを備える、読出し回路と、
前記複数のデータＡＵのそれぞれにエラー訂正デコーディングを適用して、複数のデコードされたデータＡＵを生成するデコード回路と、
前記パリティＡＵの値が、前記複数のデコードされたデータＡＵ内の複数のバイトの複数の値によって満たされるかを判断するパリティチェック回路と、
前記パリティＡＵの前記値が前記複数のデコードされたデータＡＵ内の複数のバイトの前記複数の値によって満たされるとの判断に応じて、前記複数のデコードされたデータＡＵを出力するデータ転送回路と
を備えるシステム。
【請求項２】
前記複数のデータＡＵ内のデータＡＵが読出し不可能であるか判断するデータチェック回路
を備える請求項１に記載のシステム。
【請求項３】
前記読出し回路は、複数のデータ転送チャネルを備え、
前記読出し回路は、前記複数のデータ転送チャネルのうちの第１のデータ転送チャネルを用いて、データの前記ストライプの第１の部分を読出し、前記複数のデータ転送チャネルのうちの第２のデータ転送チャネルを用いて、データの前記ストライプの第２の部分を読出す
請求項１又は２に記載のシステム。
【請求項４】
前記複数のデータＡＵ内のデータＡＵは、前記記憶媒体の第１のページ及び第２のページのそれぞれに部分的に記憶される
請求項１から３のいずれか１項に記載のシステム。
【請求項５】
前記複数のデータＡＵ内の前記データＡＵは、前記記憶媒体の第１のデータ転送チャネル及び第２のデータ転送チャネルのそれぞれに部分的に記憶される
請求項４に記載のシステム。
【請求項６】
前記複数のデータＡＵ内の前記データＡＵは、前記記憶媒体の第１のプレーン及び第２のプレーンのそれぞれに部分的に記憶される
請求項５に記載のシステム。
【請求項７】
書込み回路
を備え、
前記書込み回路は、データの前記ストライプの複数のＡＵを、複数のページに渡って書込み、その後に前記記憶媒体の複数のプレーンに渡って書込むことによって、データの前記ストライプを前記記憶媒体に書込む
請求項１から６のいずれか１項に記載のシステム。
【請求項８】
書込み回路
を備え、
前記書込み回路は、データの前記ストライプの複数のＡＵを、複数のプレーンに渡って書込み、その後に前記記憶媒体の複数のページに渡って書込むことによって、データの前記ストライプを前記記憶媒体に書込む
請求項１から６のいずれか１項に記載のシステム。
【請求項９】
エンコード回路
を備え、
前記エンコード回路は、前記パリティＡＵの既定のバイト位置のバイトの値を、前記複数のデータＡＵ内の各データＡＵの前記既定のバイト位置のバイトの値の排他的論理和によって生成する
請求項１から８のいずれか１項に記載のシステム。
【請求項１０】
ストライプに含まれる複数のＡＵの総数は、３０より少ない
請求項１から９のいずれか１項に記載のシステム。
【請求項１１】
記憶媒体からのデータを処理するための方法であって、
前記記憶媒体に記憶されているデータのストライプを読出す段階であって、前記ストライプが複数のデータアロケーションユニット（複数のデータＡＵ）及びパリティＡＵを備える、段階と、
前記複数のデータＡＵのそれぞれにエラー訂正デコーディングを適用して、複数のデコードされたデータＡＵを生成する段階と、
前記パリティＡＵの値が、前記複数のデコードされたデータＡＵ内の複数のバイトの複数の値によって満たされるかを判断する段階と、
前記パリティＡＵの前記値が前記複数のデコードされたデータＡＵ内の複数のバイトの前記複数の値によって満たされるとの判断に応じて、前記複数のデコードされたデータＡＵを出力する段階と
を備える方法。
【請求項１２】
前記複数のデータＡＵ内のデータＡＵが読出し不可能であるか判断する段階
を備える請求項１１に記載の方法。
【請求項１３】
複数のデータ転送チャネルのうちの第１のデータ転送チャネルを用いて、データの前記ストライプの第１の部分を読出し、前記複数のデータ転送チャネルのうちの第２のデータ転送チャネルを用いて、データの前記ストライプの第２の部分を読出す段階
を備える請求項１１又は１２に記載の方法。
【請求項１４】
前記複数のデータＡＵ内のデータＡＵを、前記記憶媒体の第１のページ及び第２のページのそれぞれに部分的に記憶する段階
を備える請求項１１から１３のいずれか１項に記載の方法。
【請求項１５】
前記複数のデータＡＵ内の前記データＡＵを、前記記憶媒体の第１のデータ転送チャネル及び第２のデータ転送チャネルのそれぞれに部分的に記憶する段階
を備える請求項１４に記載の方法。
【請求項１６】
前記複数のデータＡＵ内の前記データＡＵを、前記記憶媒体の第１のプレーン及び第２のプレーンのそれぞれに部分的に記憶する段階
を備える請求項１５に記載の方法。
【請求項１７】
データの前記ストライプの複数のＡＵを、複数のページに渡って書込み、その後に前記記憶媒体の複数のプレーンに渡って書込むことによって、データの前記ストライプを前記記憶媒体に書込む段階
を備える請求項１１から１６のいずれか１項に記載の方法。
【請求項１８】
データの前記ストライプの複数のＡＵを、複数のプレーンに渡って書込み、その後に前記記憶媒体の複数のページに渡って書込むことによって、データの前記ストライプを前記記憶媒体に書込む段階
を備える請求項１１から１６のいずれか１項に記載の方法。
【請求項１９】
前記パリティＡＵの既定のバイト位置のバイトの値を、前記複数のデータＡＵ内の各データＡＵの前記既定のバイト位置のバイトの値の排他的論理和によって生成する段階
を備える請求項１１から１８のいずれか１項に記載の方法。
【請求項２０】
ストライプに含まれる複数のＡＵの総数は、３０より少ない
請求項１１から１９のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
＜関連出願の相互参照＞
本特許文書は、２０１２年３月１６日に出願された米国仮出願第６１／６１２，１４０の利益及び優先権を主張し、その開示は全体が本明細書に参照としてここに組み込まれる。
【０００２】
本開示は、独立ディスク冗長アレイ（ＲＡＩＤ）のＮＡＮＤフラッシュ記憶媒体を含む記憶媒体にデータを効率的に書込むための技術に関する。
【背景技術】
【０００３】
ここに提供される背景説明は、開示の背景を一般的に提示することを目的とする。本明細書の発明者の成果は、出願時の従来技術として特にみなし得ない説明の態様だけでなく、この背景技術のセクション内に成果が記述されている範囲で、本開示に対する従来技術として明示的にも暗示的にも認められない。
【０００４】
ソリッドステートドライブ（ＳＳＤ）は、例えばＮＡＮＤフラッシュメモリデバイス又はダイナミック・ランダムアクセスメモリ（ＤＲＡＭ）デバイス等の、ＲＡＩＤアーキテクチャを用いて実装され得るデバイスから、データを読み書きする。ＳＳＤは、典型的には、ＮＡＮＤフラッシュメモリから及びＮＡＮＤフラッシュメモリにデータを転送するためのいくつかのデータチャネルを持つＳＳＤコントローラを含む。更に、ＳＳＤコントローラは、典型的には、複数のアロケーションユニット（複数のＡＵ）として知られる固定バイトサイズ単位でデータを管理するファームウェアを実行する。伝統的に、データはＮＡＮＤフラッシュメモリの所与のページに単一のオペレーションで書込まれ、書込みオペレーションは、ＡＵのバイトサイズの整数倍のバイト数を含む。したがって、ＮＡＮＤフラッシュのページサイズがＡＵサイズの整数倍でない場合、ＮＡＮＤフラッシュのメモリは、十分に利用されていないかもしれない。
【発明の開示】
【０００５】
システム、方法、装置及び技術が、記憶媒体からのデータを処理するために提供される。記憶媒体に記憶されているデータのストライプが読出される。ストライプが複数のデータアロケーションユニット（複数のデータＡＵ）及びパリティＡＵを備える。複数のデータＡＵのそれぞれにエラー訂正デコーディングが適用され、複数のデコードされたデータＡＵを生成する。パリティＡＵの値が、複数のデコードされたデータＡＵ内の複数のバイトの複数の値によって満たされるかが、判断される。パリティＡＵの値が複数のデコードされたデータＡＵ内の複数のバイトの複数の値によって満たされるとの判断に応じて、複数のデコードされたデータＡＵが出力される。
【０００６】
いくつかの実施形態において、複数のデータＡＵ内のデータＡＵが読出し不可能であるが判断される。いくつかの実施形態において、複数のデータ転送チャネルのうちの第１のデータ転送チャネルを用いて、データのストライプの第１の部分が読出され、複数のデータ転送チャネルのうちの第２のデータ転送チャネルを用いて、データのストライプの第２の部分が読出される。いくつかの実施形態において、複数のデータＡＵ内のデータＡＵが、記憶媒体の第１のページ及び第２のページのそれぞれに部分的に記憶される。いくつかの実施形態において、複数のデータＡＵ内のデータＡＵが、記憶媒体の第１のデータ転送チャネル及び第２のデータ転送チャネルのそれぞれに部分的に記憶される。いくつかの実施形態において、パリティＡＵの既定のバイト位置のバイトの値が、複数のデータＡＵ内の各データＡＵの既定のバイト位置のバイトの値の排他的論理和によって生成される。
【図面の簡単な説明】
【０００７】
上記及び他の態様並びにこの発明の利点は、同様の参照文字が全体を通して同様の部分を参照する下記の添付の図面と併せて、以下の詳細な説明を考慮することにより、明らかになるであろう。
【０００８】
【図１】いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体の例示的なＮＡＮＤページアレイを表す。
【０００９】
【図２】いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体のＮＡＮＤページに複数のＡＵのシーケンスを書込むための例示的な技術を表す。
【００１０】
【図３】いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体のＮＡＮＤページに複数のＡＵのシーケンスを書込むための例示的なストライプベースの技術を表す。
【００１１】
【図４】いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体のＮＡＮＤページに複数のＡＵのシーケンスを書込むための他の例示的なストライプベースの技術を表す。
【００１２】
【図５】いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体のＮＡＮＤページに複数のＡＵのシーケンスを書込むための更なる他の例示的なストライプベースの技術を表す。
【００１３】
【図６】いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体のＮＡＮＤページに複数のＡＵのシーケンスを書込むための追加の例示的なストライプベースの技術を表す。
【００１４】
【図７】いくつかの実施形態に従う、記憶媒体の１つ又は複数のストライプからデータを読出すための例示的な処理を表す。
【発明を実施するための形態】
【００１５】
本明細書に開示されたものは、ストライプベースの論理構造に基づいて、ＲＡＩＤベースのＮＡＮＤフラッシュ記憶媒体を含む記憶媒体の利用を向上させる技術である。本明細書に開示されるように、ストライプは、記憶媒体上に記憶される複数のＡＵの集合として規定される。ストライプベースのアプローチは、複数のＡＵがページ境界に渡って書込まれることを可能にし、これにより記憶媒体の利用が向上する。更に、本明細書に開示されるように、ストライプベースの論理アーキテクチャは、ＲＡＩＤベースの実装に有利である。なぜなら、１つのＲＡＩＤディスク（又はデバイス）に生じた障害は一般的に、他のＲＡＩＤディスク（又はデバイス）上に記憶される関連データを回復不能にしないからである。
【００１６】
図１は、いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体の例示的なＮＡＮＤページアレイを表す。ＳＳＤコントローラのファームウェアは、チャネル、ページ、論理ユニット番号（ＬＵＮ）及び物理デバイス（例えば、シリコン片）によるメモリロケーションのパラメータ化に基づいて、ＲＡＩＤ実装された記憶媒体のメモリロケーションにアクセスし得る。特に、イラスト１００は、ＮＡＮＤページのアレイが、それぞれＣＨ０  １０２からＣＨｘ  １０４でラベル付けされたｘ＋１個のデータ転送チャネルを用いてアドレッシング可能であることを示す。イラスト１００は、特にデータ転送チャネルＣＨ０  １０２及びＣＨｘ１０４の構造を表す。
【００１７】
イラスト１００に表されたデータ転送チャネルのそれぞれは、例えばハードディスクドライブである複数の物理デバイス（又は「ターゲット」）にアクセスするために用いられ得る。例えば、データ転送チャネルＣＨ０  １０２は、ターゲット０  １０６及びターゲット１  １０８とインタフェースするために用いられ得る。更に、イラスト１００のターゲットのそれぞれは、複数のＬＵＮを含む。例えば、ターゲット１  １０８は、ＬＵＮ０  １１０及びＬＵＮ１  １１２を含む。各ＬＵＮは、例えば仮想ハードディスクドライブのパーティションに対応してよい。各ＬＵＮは、複数のプレーンを含み得る。各プレーンは、電源リソースの異なるセットによって電力供給される。例えば、ＬＵＮ０  １１０は、プレーン０  １１４及びプレーン１  １１６を含む。最後に、ＮＡＮＤページのアレイは、任意の数のページ１１８を含み得る。
【００１８】
当業者によって理解され得るように、本明細書の開示及び教示に基づいて、図１に表されているＲＡＩＤ実装された記憶媒体のＮＡＮＤページアレイは例示に過ぎず、本明細書に開示された技術は任意の適切なＮＡＮＤアレイに適用し得る。例えば、本明細書に開示された技術は、データ転送チャネル及びページ当たり２つより多いターゲットを含むＮＡＮＤアレイ及び／又は２つより多いプレーンを含む複数のＬＵＮに適用し得る。
【００１９】
図２は、いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体のＮＡＮＤページに複数のＡＵのシーケンスを書込むための例示的な技術を表す。特に、イラスト２００は、３２個の連続するＡＵが記憶媒体の様々なチャネル及びプレーンに渡ってページにどのように書込まれるかを表す。イラスト２００に表されるように、ＳＳＤコントローラのファームウェアは、３２個のＡＵのシーケンス内の第１及び第２のＡＵを、ＲＡＩＤ実装された記憶媒体の、チャネル０、プレーン０、ページ０に書込むようにプログラムされている。同様に、ＳＳＤコントローラのファームウェアは、３２個のＡＵのシーケンス内の１７番目及び１８番目のＡＵを、ＲＡＩＤ実装された記憶媒体の、チャネル０、プレーン１、ページ０に書込むようにプログラムされている。同様に、３２個のＡＵのシーケンス内の残りのＡＵのそれぞれの正確なロケーション（チャネル、プレーン及びページ番号の観点で）は、図２のボックスの１つの中に示された対応する数値によって表されている。
【００２０】
図２に表された各ＡＵは、エラー訂正コード（ＥＣＣ）で個々にコード化される。すなわち、ＡＵの複数のバイトの一部は、複数のＥＣＣエンコーディングバイトである。それにもかかわらず、典型的なＥＣＣコードは、ごく少数のバイトが破壊されているコードワードを完全に訂正することしかし得ず、コードワードのバイトの大きな割合が破壊又は失われたコードワードを完全に訂正することができないだろう。したがって、図２に表された書込みパターンを生成するために用いられるＳＳＤコントローラは、所与のＡＵが記憶デバイスの単一ページに完全に書込まれることを要求する。この要求は、図２に示され、各ＡＵが単一ページ（すなわち単一の矩形ボックス）内に完全に含まれていることを示す。
【００２１】
各ＡＵが単一ページ内に完全に含まれることをシステムが要求する場合がある１つの理由は、カスケードエラーを防ぐためである。特に、単一のページが１つ又は複数のＡＵの一部しか含まない（したがって、これらのＡＵのそれぞれが、他の複数のページに散在する残りの内容を持つ）システムを考える。もし単一のページが破壊又は失われた場合、失われるのはその単一のページのバイトだけではなく、単一のページに部分的に含まれていたとしても全てのＡＵの全てのバイトも失われる。したがって、単一のページの障害は、複数のページに散在するバイトに影響して大規模なデータロスをもたらす場合がある。
【００２２】
しかし、各ＡＵが単一のページ内に完全に含まれることを要求することがカスケードエラーを防ぐために有利であるが、それは潜在的に記憶媒体の不十分な利用をもたらす。例えば、図２に関連するＲＡＩＤ実装された記憶媒体のＮＡＮＤページの各ページが２，０４８バイトのサイズを持ち、各ＡＵが７４８バイトのサイズを持つと仮定する。所与のＡＵが記憶デバイスのページを超えることができず、代わりに単一のページに完全に書込まれる必要がある場合、最大でも２個のＡＵが各ページに書込まれるだろう。これは、２個のＡＵがページサイズより小さい７４８×２＝１，４９６バイトとなり、３個のＡＵがページサイズより大きい７４８×３＝２，２４４バイトとなるからである。したがって、図２に表されるように、１６ページのそれぞれは、正確に２個のＡＵのデータを記憶する。特に、各ページは全部で２，０４８バイトのうちの１，４９６バイトしか用いず、したがって各ページはおよそ２７パーセントの未活用となる。
【００２３】
このように、記憶媒体のページサイズがＡＵサイズの整数倍でない用途において、ＡＵの倍数のどれも正確に記憶媒体のページの全バイトを占有せず、したがって、図２に関して説明した技術に基づいて、記憶媒体が十分に利用されていないことになるだろう。したがって、本明細書の開示で説明されるようなストライプベースの技術は、そのような短所に対処し、ＲＡＩＤ実装されたＮＡＮＤフラッシュ記憶媒体を含む記憶媒体の利用を増大するために、提示される。
【００２４】
図３は、いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体のＮＡＮＤページに複数のＡＵのシーケンスを書込むための例示的なストライプベースの技術を表す。図３に示される書込み技術は、図２に示されるものとは異なる。複数のＡＵが複数のページに渡り突破することが可能であるからである。例えば、２番目のＡＵがページ３１０及び３１２に渡り突破しており、４番目のＡＵはページ３１２及び３１４に渡り突破しており、１３番目のＡＵがページ３１６及び３１８に渡り突破している。
【００２５】
上記で説明されたように、単一のＡＵが複数のページにわたり突破し得る図３のシステムの１つの問題は、複数のページにわたるカスケードエラーの可能性である。カスケードエラーに対してある程度の保護を提供するために、図３のシステムは、ストライプ毎ベースの複数のパリティチェックＡＵを含む。特に、行３２０の全てのＡＵは、パリティＡＵ、すなわち、ページ３２２及び３２４に渡って突破する２０番目のＡＵ、の支配下にある。ストライプは一般的に、パリティＡＵを適用するドメインにおける複数のＡＵを特定する。このように、ストライプは、図３の行３２０の全てのＡＵを含むように規定されるので、パリティＡＵ２０は、行３２０の他の全てのＡＵに含まれるデータに基づく。例えば、いくつかの実装において、パリティＡＵのバイト長は、ページのバイト長に等しい。パリティＡＵの各バイトは、行３２０内に渡って広がる残りのＡＵ（すなわち、ＡＵ１、２、１５、１６、３、４、１７、１８、１９、７及び２１）のバイトのいくつかのセットの排他的論理和によって決定される。同様に、行３２２の全てのＡＵは、パリティＡＵ、すなわち、ページ３３０及び３３２に渡って突破する２７番目のＡＵ、の支配下にある。
【００２６】
図２の書込み技術に比べて、図３の書込み技術は、記憶媒体をより効率的に利用するという利点を持つ。典型的な実装では、複数のページに渡ってバイトが書込まれることを可能にすることによって得られる追加の効率性は、パリティチェックバイトとして機能するいくつかのバイトの損失より遙かに勝るだろう。図３に表された実装の１つの潜在的な欠点は、失われたデータのページ（又はページの一部）を完全に回復する能力が、単一の追加のエラー（つまり、失われたページ又はページの一部によるエラーに加えて）がストライプ内のどこかに存在するか否かに依存するであろうことである。
【００２７】
この点を説明するために、所与のストライプのパリティチェックＡＵのｎ番目のバイトの値（すなわち、行３２０のストライプの２０番目のＡＵ及び行３３２のストライプの２７番目のＡＵ）が、ストライプ内の各ＡＵ（すなわち、パリティＡＵ自身は含まない）のｎ番目の位置の排他的論理和によって決定される場合を考える。例えば、２０でラベル付けされたパリティチェックＡＵの第１バイトの値が、１、２、１５、１６、３、４、１７、１８、５、６、１９、７及び２１でラベル付けされたＡＵの先頭位置の排他的論理和によって決定される。次に、ページ３１４が故障して、ページ３１４のどのデータも読出し可能でない場合を考える。この場合、（バイトに対してＥＣＣデコーディングが実行された後）行３２０の他のどのページから読出されたデータのどのバイトにもエラーがないならば、ページ３１４の内容は完全に回復可能である。反対に、ＥＣＣデコーディングの後、１、２、１５、１６、３、４、１７、１８、１９、７及び２１でラベル付けされたもののいずれかに１つ又は複数のエラーが残っている場合、排他的論理和は２０番目のＡＵの全てのバイトを正しく回復させないだろう。
【００２８】
図４は、いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体のＮＡＮＤページに複数のＡＵのシーケンスを書込むための他の例示的なストライプベースの技術を表す。図４の技術において、複数のＡＵは複数のページに渡って突破することが可能である。しかしながら、図４に示される書込み技術は、図３に示されるものとは異なる。ストライプが、行の全てのＡＵとしてでなく、図の行（例えば、行４２０）内の全てのＡＵのサブセットとして規定されるからである。図４の書込み技術において、複数のＡＵは１から２８の値をとる。これらの値は、これらのＡＵが記憶媒体に書込まれた順序シーケンス（ＡＵ１が最初に書込まれ、ＡＵ２８が最後に書込まれている）を表す。具体的には、ＡＵ１から７はページ０のプレーン０に書込まれ、ＡＵ８から１４はページ１のプレーン０に書込まれ、ＡＵ１５から２１はページ０のプレーン１に書込まれ、ＡＵ２２から２８はページ１のプレーン１に書込まれている（全てのＡＵは、図３に表された特定のページに書込まれている）。
【００２９】
テーブル４１０に表されるように、ストライプ１、２及び３はそれぞれ、行４２０に存在する複数のＡＵのサブセットを含み、ストライプ４、５及び６はそれぞれ、行４２２に存在する複数のＡＵのサブセットを含む。例えば、ストライプ１は、行４２０の全部で１４個のＡＵのうちの６個（すなわち、１、１５、４、１８、７及び２１でラベル付けされたＡＵ）を含み、ストライプ２は、行４２０の全部で１４個のＡＵのうちの４個（すなわち、２、１６、５及び１９でラベル付けされたＡＵ）を含み、ストライプ３は、行４２０の全部で１４個のＡＵのうちの４個（すなわち、３、１７、６及び２０でラベル付けされたＡＵ）を含む。１９、２０、２１、２６、２７及び２８でラベル付けされたＡＵは、パリティＡＵであり、図４において丸で囲まれている。テーブル４１０から明らかなように、ストライプ１から６のそれぞれは、正確に１個のパリティＡＵを含む。
【００３０】
図４の各パリティＡＵのｎ番目のバイトの値が、当該ＡＵを含むストライプに属する各非パリティＡＵのｎ番目の位置の排他的論理和によって決定される場合を考える。例えば、２１でラベル付けされたパリティチェックＡＵの第１バイトの値は、１、１５、４、１８及び７でラベル付けされたＡＵの先頭位置の排他的論理和によって決定される。この場合、図４の書込み技術は有利なことに、図３の書込み技術より、ページの障害に対してよりロバストになり得る。特に、ページ４１４のデータが読出し不可能になったと仮定する。テーブル４１０のストライプ１の内容の一覧を参照して、４でラベル付けされたＡＵの内容は、（ＥＣＣデコーディングがバイトに対して実行された後）ＡＵ１、１５、１８及び７のいずれから読出されたデータのいずれのバイトにもエラーが存在しない場合、完全に回復可能である。同様に、テーブル４１０のストライプ２の内容の一覧を参照して、５でラベル付けされたＡＵの内容は、（ＥＣＣデコーディングがバイトに対して実行された後）ＡＵ２及び１６のいずれから読出されたデータのいずれのバイトにもエラーが存在しない場合、完全に回復可能である。最後に、テーブル４１０のストライプ３の内容の一覧を参照して、６でラベル付けされたＡＵの内容は、（ＥＣＣデコーディングがバイトに対して実行された後）ＡＵ３及び１７のいずれから読出されたデータのいずれのバイトにもエラーが存在しない場合、完全に回復可能である。
【００３１】
このように、ページが読出し不可能になった場合であっても、他の２個のＡＵ（ストライプ２及び３の場合）又は他の４個のＡＵ（ストライプ１の場合）のデコードされた値の中にエラーが存在しないならば、データは可能である。したがって、図３の技術と比較して、図４の技術は、エラーが残っているＡＵが比較的に小数である（すなわち、ストライプ１の場合、２個又は４個のＡＵ）ことを条件として、データの任意のストライプのいずれをも回復することができる。そのため、平均的には、図４の書込み技術は、図３のシステムより、ページ障害の存在下でより多くのデータを正確に読出すことができる。しかし、図４の書込み技術は、図３の書込み技術より、バイトのより大きい部分がパリティに供されることを要する。特に、図３は、全１６ページに渡って全部で４個のパリティＡＵを要するが、図４は、全１６ページに渡ってより大きい全部で８個のパリティＡＵを要する。
【００３２】
図５は、いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体のＮＡＮＤページに複数のＡＵのシーケンスを書込むための更なる他の例示的なストライプベースの技術を表す。図５の書込み技術は、図４の書込み技術と同様であるが、図３とは異なる順序で複数のＡＵを媒体に書込む。より詳細には、図４の書込み技術では、複数のＡＵは１から３０の値をとる。これらの値は、複数のＡＵが記憶媒体に書込まれた順序シーケンス（ＡＵ１が最初に書込まれ、ＡＵ３０が最後に書込まれている）表す。具体的には、ＡＵ１から８（の一部）はページ０のプレーン０に書込まれ、ＡＵ８（ＡＵ８の残りの部分）から１５はページ０のプレーン１に書込まれ、ＡＵ１６から２３（の一部）はページ１のプレーン０に書込まれ、ＡＵ２３（ＡＵ２３の残りの部分）から３０はページ１のプレーン１に書込まれている（全てのＡＵは、図４に表された特定のページに書込まれている）。このように、図５の書込み技術は、複数のＡＵを、複数のページに渡って書込む前に、複数のプレーンに渡って書込む。これに対し、図４の書込み技術は、複数のＡＵを、プレーンに渡って書込む前に、複数のページに渡って書込む。図４及び５の書込み技術は、しかしながら、両方とも同一の量のオーバーヘッドのパリティバイトを用いる。
【００３３】
図６は、いくつかの実施形態に従う、ＲＡＩＤ実装された記憶媒体のＮＡＮＤページに複数のＡＵのシーケンスを書込むための追加の例示的なストライプベースの技術を表す。図６の書込み技術は、図４及び５の書込み技術と同様であるが、複数のＡＵが特定の複数のページに渡って広がるストライプを含む。特に、テーブル６１０は、図６の書込み技術によって用いられる４個のストライプを列挙する。このテーブルに示されるように、ストライプ２及び４はそれぞれページ０及び１に広がる。例えば、ストライプ２は、ページ０上の２、１８、６、２２、１０、２６、１４及び３０でラベル付けされたＡＵの全ての部分と、ページ１上の２、１８、６、２２、１０、２６、１４及び３０でラベル付けされたＡＵの全ての部分又は一部を含む。図４及び５の書込み技術と比較して、図６の書込み技術は、複数のページにわたる複数のストライプを用いるので、より長いストライプ（及びより小さい総数のストライプ）を利用することができる。更に、図６の書込み技術は、図４又は５の書込み技術より、少ないストライプを用いるので、図６の書込み技術は、図４又は５のいずれの書込み技術より、小さいパリティオーバーヘッドを要する。
【００３４】
図７は、いくつかの実施形態に従う、記憶媒体の１つ又は複数のストライプからデータを読出すための例示的な処理を表す。処理８００で説明される複数の処理は、ＳＳＤコントローラを制御し、コンピュータシステムにインストールされるファームウェアによって実行され得る。処理８００は、８０５において、記憶媒体上に記憶されたデータの１つ又は複数のストライプに対する読出し動作を開始する。８１０において、ｓｔｒｉｐｅ＿ｃｏｕｎｔｅｒとして参照されるストライプカウンタが、１の値に等しくセットされる。８１５において、ｓｔｒｉｐｅ＿ｃｏｕｎｔｅｒでラベル付けされたストライプに属する各ＡＵに対応する複数のメモリロケーションのマッピングが、記憶媒体のために取得される。例えば、マッピングは、ルックアップテーブルのデータから取得されてよい。
【００３５】
８２０において、ｓｔｒｉｐｅ＿ｃｏｕｎｔｅｒでラベル付けされたストライプに属する複数のＡＵが、８１５で取得されたメモリロケーションに基づき、記憶媒体から読出される。読出された複数のＡＵは、ｓｔｒｉｐｅ＿ｃｏｕｎｔｅｒでラベル付けされたストライプに属する他の全てのＡＵについてのパリティ情報を含むＡＵを含む。例えば、いくつかの実装において、所与のストライプに属するパリティＡＵのｎ番目の位置は、ストライプ内の各ＡＵ（パリティＡＵ自身以外）のｎ番目の位置の排他的論理和によって決定される。８２５において、エラー訂正デコーディングが、読出された複数のＡＵに対して実行される。特に、ストライプ内の各ＡＵは、記憶媒体に書込まれる前にＥＣＣエンコードされる。そのためＥＣＣデコーディングは、８２５にてＡＵ毎ベースで実行される。
【００３６】
８３０において、８２０で読出された複数のＡＵ内に読出し不可能なＡＵがあるかを判断する。例えば、記憶媒体の所与のページに障害が生じた場合、又は、その他に、ページに記憶されたデータが読出し不可能になった場合、１つ又は複数の読出し不可能なＡＵが存在し得る。８３０において少なくとも１つの読出し不可能なＡＵがあると判断された場合、処理８００は８３５に進む。反対に、８３０において読出し不可能なＡＵがないと判断された場合、処理８００は８５０に進む。
【００３７】
８３５において、読出し不可能な複数のＡＵのデータの回復が、パリティチェックＡＵを用いて試みられる。いくつかの実装において、読出された複数のＡＵ内に存在する読出し不可能なＡＵが正確に１つであり、８２５でエラー訂正デコーディングが実行された後、ストライプの読出し可能なＡＵのいずれにもバイトエラーがない場合、回復は成功するだろう。８４０において、読出し不可能なＡＵの全ての回復が成功であったかが判断される。そうである場合、処理８００は８５０に進む。反対に、８４０で回復が成功でなかったと判断された場合、処理８００は８４５に進み、デコーディング読出し失敗が宣言され、処理８００が終了する。
【００３８】
８５０において、（８２５でエラー訂正デコーディングが実行されて、８３５で任意の複数の非パリティＡＵの回復が試みられた後）読出された複数のＡＵ内に、読出されたパリティＡＵを満たさないいずれかのバイトが存在するかが判断される。パリティＡＵを満たさない少なくとも１つのバイトが存在すると判断された場合、処理８００は８４５に進み、デコーディング読出し失敗が宣言されて、処理８００が終了する。反対に、全ての読出されたＡＵのバイトがパリティＡＵを満たす場合、処理８００は８５５に進み、読出された複数のＡＵに対応する現在のＡＵのデータが出力され（すなわち、８２５で実行されるエラー訂正デコーディング及び８３５で試みられる任意の複数の非パリティＡＵの回復の後）、処理８００は８６０に進む。
【００３９】
８６０において、ストライプカウンタであるｓｔｒｉｐｅ＿ｃｏｕｎｔｅｒの現在の値が、（例えば、８０５での）読出し動作に対して指定されたストライプの総数ｓｔｒｉｐｅ＿ＭＡＸに等しいかが判断される。そうであれば、処理８００は８６５に進み、処理８００が終了する。反対に、ストライプカウンタであるｓｔｒｉｐｅ＿ｃｏｕｎｔｅｒの現在の値が、読出し動作に対して指定されたストライプの総数ｓｔｒｉｐｅ＿ＭＡＸに等しくない場合、処理８００は８７０に進む。８７０で、ストライプカウンタであるｓｔｒｉｐｅ＿ｃｏｕｎｔｅｒの現在の値がインクリメントされて、処理８００は続けて８１５に戻る。
【００４０】
本開示の様々な実施形態を本明細書で提示及び説明されたが、このような実施形態は例示としてのみ提供されることが当業者には明らかであろう。ここで多数の変形、変更及び置換が、本開示から逸脱することなく当業者に見い出し得るだろう。本明細書で説明された開示の実施形態に対する様々な代替物が、本開示を実施する際に用いられ得ることが理解されるべきである。以下の特許請求の範囲が本開示の範囲を定め、これらの特許請求の範囲及びそれらの同等の範囲内の方法及び構造がそれによりカバーされることを意図している。
【図１】
2015512110.tif 000003
【図２】
2015512110.tif 000004
【図３】
2015512110.tif 000005
【図４】
2015512110.tif 000006
【図５】
2015512110.tif 000007
【図６】
2015512110.tif 000008
【図７】
2015512110.tif 000009
【国際調査報告】
2015512110.tif 000010
2015512110.tif 000011
2015512110.tif 000012