(57)【要約】  適応符号データの構成されるデータストレージシステムが開示され、一実施形態において、データストレージシステムコントローラは、不揮発性メモリアレイに対して、例えばＥページサイズなどの共通のメモリページサイズを決定する。共通のメモリページサイズに基づいて、コントローラは、低密度パリティチェック（ＬＤＰＣ）符号語長を、複数の定義済みＬＤＰＣ符号語長から選択する。コントローラは、選択されたＬＤＰＣ符号語長に基づいてメモリアレイに書き込まれるかまたはメモリアレイから読み込まれる符号化データ用のＬＤＰＣ符号化パラメータを決定する。複数の定義済みＬＤＰＣ符号語長を用いることにより、データストレージシステムは、共通のメモリページサイズが複数の定義済みＬＤＰＣ符号語長のいかなるＬＤＰＣ符号語長にも等しくないメモリページフォーマットを含む複数の不揮発性メモリページフォーマットをサポートすることができる。これにより、データ符号化の柔軟性および効率性が達成可能である。【選択図】図１
2015534409.tif 000002
【特許請求の範囲】
【請求項１】
共通のメモリページサイズを有する各メモリページからなる複数のメモリページを含む不揮発性メモリアレイと、
コントローラであって、
前記不揮発性メモリアレイに対して前記共通のメモリページサイズを決定し、
低密度パリティチェック（ＬＤＰＣ）符号語長を、前記不揮発性メモリアレイに対して前記共通のメモリページサイズ以上のサイズを有する複数の定義済みＬＤＰＣ符号語長から選択し、
少なくとも部分的に前記ＬＤＰＣ符号語長に基づいて前記不揮発性メモリアレイの一つ以上のメモリページに書き込まれる、または前記不揮発性メモリアレイの一つ以上のメモリページから読み込まれる符号化データ用のＬＤＰＣ符号化パラメータを決定するように構成され、前記複数の定義済みＬＤＰＣ符号語長を使用している前記複数の不揮発性メモリページフォーマットをサポートし、前記共通のメモリページサイズが前記複数の定義済みＬＤＰＣ符号語長のいかなるＬＤＰＣ符号語長にも等しくないメモリページフォーマットをサポートするように構成される、
コントローラと、
を含むソリッドステートストレージシステム。
【請求項２】
前記ＬＤＰＣ符号化パラメータは、Ｐマトリクスサイズ、カラムのウェイトおよびロウのウェイトを含み、さらに、符号レート、ユーザデータの量、およびパリティデータの量の少なくとも一つを含む、請求項１に記載のソリッドステートストレージシステム。
【請求項３】
前記コントローラは、前記不揮発性メモリアレイに対して前記共通のメモリページサイズ以上の最小限のサイズを有するＬＤＰＣ符号語長を選択するように構成される、請求項１に記載のソリッドステートストレージシステム。
【請求項４】
前記メモリページは、誤り訂正符号ページ（Ｅページ）を含む、請求項１に記載のソリッドステートストレージシステム。
【請求項５】
前記コントローラは、前記ＬＤＰＣ符号化パラメータを使用している、ユーザデータおよびパディングデータを含むパディングされたユーザデータに対してパリティデータを決定し、かつ、
前記ユーザデータおよび前記パリティデータを前記不揮発性メモリアレイのメモリページに保存するように、さらに構成される、請求項１に記載のソリッドステートストレージシステム。
【請求項６】
前記パディングされたユーザデータのパディングデータの量は、前記ＬＤＰＣ符号語長と前記不揮発性メモリアレイのための前記共通のメモリページサイズとの差に少なくとも部分的に依存する、請求項５に記載のソリッドステートストレージシステム。
【請求項７】
コントローラを含むデータストレージシステムにおける、データの符号化の方法であって、
各メモリページが共通のメモリページサイズを有する複数のメモリページを含む不揮発性メモリアレイに対して共通のメモリページサイズを決定するステップと、
低密度パリティチェック（ＬＤＰＣ）符号語長を、前記不揮発性メモリアレイに対して前記共通のメモリページサイズ以上のサイズを有する複数の定義済みＬＤＰＣ符号語長から選択するステップと、
少なくとも部分的に前記ＬＤＰＣ符号語長に基づいて前記不揮発性メモリアレイの一つ以上のメモリページに書き込まれる、または前記不揮発性メモリアレイの一つ以上のメモリページから読み込まれる符号化データ用のＬＤＰＣ符号化パラメータを決定するステップと、
を含む方法。
【請求項８】
前記ＬＤＰＣ符号化パラメータは、Ｐマトリクスサイズ、カラムのウェイトおよびロウのウェイトを含み、さらに、符号レート、ユーザデータの量、およびパリティデータの量の少なくとも一つを含む、請求項７に記載の方法。
【請求項９】
前記ＬＤＰＣ符号語長を選択するステップは、前記不揮発性メモリアレイに対して前記共通のメモリページサイズ以上の最小限のサイズを有するＬＤＰＣ符号語長を選択することを含む、請求項７に記載の方法。
【請求項１０】
前記メモリページは、誤り訂正符号ページ（Ｅページ）を含む請求項７に記載の方法。
【請求項１１】
前記ＬＤＰＣ符号化パラメータを使用している、ユーザデータおよびパディングデータを含むパディングされたユーザデータに対してパリティデータを決定するステップと、
前記ユーザデータおよび前記パリティデータを前記不揮発性メモリアレイのメモリページに保存するステップと、
をさらに含む請求項７に記載の方法。
【請求項１２】
前記パディングされたユーザデータのパディングデータの量は、前記ＬＤＰＣ符号語長と前記不揮発性メモリアレイのための前記共通のメモリページサイズとの差に少なくとも部分的に依存する、請求項１１に記載の方法。
【請求項１３】
共通のメモリページサイズを有する各メモリページからなる複数のメモリページを含む不揮発性メモリアレイと、
コントローラであって、
前記不揮発性メモリアレイに対して前記共通のメモリページサイズを決定し、
符号語長を、前記不揮発性メモリアレイに対して前記共通のメモリページサイズ以上のサイズを有する複数の定義済み符号語長から選択し、
少なくとも部分的に前記符号語長に基づいて前記不揮発性メモリアレイの一つ以上のメモリページに書き込まれる、または前記不揮発性メモリアレイの一つ以上のメモリページから読み込まれる符号化データ用の符号化パラメータを決定し、前記複数の定義済み符号語長を使用している前記複数の不揮発性メモリページフォーマットをサポートするように構成されるコントローラと、
を含むソリッドステートストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピュータシステム用のデータストレージシステム（例えばソリッドステートドライブ）に関する。より詳細には、データストレージシステムのための適応誤り訂正符号に関する。
【背景技術】
【０００２】
不揮発性メモリアレイは、限られた耐久性をしばしば有する。メモリアレイの耐久性は、典型的に使用パターンおよび損耗次第である。耐久性はさらに、特定のタイプの不揮発性メモリアレイに依存する。例えば、マルチレベルセル（ＭＬＣ）ＮＡＮＤ媒体を有するメモリアレイは、シングルレベルセル（ＳＬＣ）ＮＡＮＤ媒体を有するメモリアレイより低い耐久性を概して有する。
【０００３】
メモリアレイに保存されるユーザデータを破損（低下した耐久性によって生じる場合がある）から保護するため、パリティデータは、誤り検出および／または訂正を容易にするために、ユーザデータと共に決定され得、保存され得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特定の実施形態が記載されると共に、これらの実施形態はほんの一例として示され、保護の範囲を制限することを意図していない。実際、本書において記載されている新規な方法およびシステムは、様々な他の形で例示され得る。
【０００５】
さらにまた、本書において記載されている方法およびシステムの形のさまざまな省略、置き換えおよび変更は、保護の要旨を逸脱しない範囲で行われ得る。
【０００６】
一部の実施形態において本開示にて用いられている「符号化」または「符号化するための」データは、データを符号化する（符号化データの）プロセスおよび／またはデータを復号化する（復号化データの）プロセスに、言及する。
【０００７】
ソリッドステートドライブのようなストレージシステムは、不揮発性メモリアレイと一体になった一つ以上のコントローラを含み、この種のコントローラは一関係者によって設計／製造がなされ、不揮発性メモリアレイにあっては他の関係者によって設計／製造されることは通常である。加えて、異なる製造業者からのメモリアレイは異なるメモリページフォーマットを含む異なる内部フォーマッティングを有する傾向がある。ここで、各メモリページフォーマットは複数のメモリページサイズの一つに対応する。また、コストおよび様々な他の競争的理由のために、ストレージシステム製造業者は、異なる製造業者からのメモリアレイを概して使用する。例えば、ストレージシステム製造業者は、現在の生産サイクルにおけるメモリアレイの一つのブランドおよび次の生産サイクルの他のブランドを使用することができる。また、異なるレベルで価格を付けられる異なるストレージシステムモデル用に、異なるメモリアレイが用いられ得る。
【０００８】
従って、一つの一般的な設計手法は、組み立て時あるいは最終的な設計段階で、コントローラと組み合わされる実在のメモリアレイに応じて実際に用いられるこのようなハードウェア、ファームウェアおよび／またはソフトウェアのサブセットを伴う異なる製造業者製のメモリアレイから読み込まれる、あるいはそれに書き込まれるデータを符号化／復号化する専用ハードウェア、ファームウェアおよび／またはソフトウェア、を有する一つ以上のコントローラを含むストレージシステムを備えることである。その結果、最後に組立てられたストレージシステムに含まれない一つ以上のメモリアレイに対する複数のメモリページフォーマットをサポートするために、ストレージシステムは、複数のコントローラまたは追加の、未使用のハードウェア、ファームウェアおよび／またはソフトウェアを含むことができる。
【０００９】
ストレージシステムに含まれるハードウェア、ファームウェアおよび／またはソフトウェアの量を減らすための別の手段では、ストレージシステムおよびコントローラは、周知のメモリページサイズを有する一つの特定の周知のメモリページフォーマットだけをサポートするために構成され得、他のメモリページフォーマットをサポートすることができない。
【００１０】
しかしながら、このようなやり方はストレージシステムおよびコントローラの有用性を他のタイプのメモリアレイに制限してしまい、多数のタイプのメモリアレイをサポートするために多数の異なるストレージシステムおよびコントローラが構成されることを必要とする場合があり、加えて場合によっては、ストレージシステムおよびコントローラが設計／構成されるときに、メモリアレイのメモリページフォーマットは周知でなくてもよい。
【００１１】
したがって、複数の周知または未知のメモリストレージフォーマットのための適応符号化データに対して改良されたシステムと方法が要求される。
【課題を解決するための手段】
【００１２】
本発明の一部の実施形態において、ストレージシステムは、コントローラおよび共通のメモリページサイズで複数のメモリページを有する不揮発性メモリアレイを含む。コントローラは、不揮発性メモリアレイに対して共通のメモリページサイズを決定し、共通のメモリページサイズに基づいて、符号語長（例えば低密度パリティチェック（ＬＤＰＣ）符号語長）を複数の定義済み符号語長から選択する。適切な符号語長（複数の定義済み符号語長から選択される）および対応する符号化パラメータを選択的に使用することにより、コントローラは、複数の周知または未知のメモリページフォーマットをサポートする少なくとも一部の一般的なハードウェア、ファームウェアおよび／またはソフトウェアを使用する。このように、コントローラはその運用を選択的に適応させることができるので、異なる製造業者によって作られる異なるフォーマットのメモリアレイと組み合わせられ得る。
【００１３】
実施形態によっては、不揮発性メモリアレイのメモリページ、ブロックまたはダイが古くなりおよび／またはメモリアレイの使用も手伝って消耗するにつれて、ストレージシステムのコントローラは符号化ユーザデータに対して符号化パラメータを調整する。符号化パラメータ調整のメカニズムは、時間と共にユニットデータごとに付加的なパリティをサポートするコントローラを可能にする。それによって、メモリアレイの質（例えば、データ保持能力）が低下するにつれて、誤り訂正または検出能力を高める。さらに、符号化パラメータ調整のメカニズムは、誤り訂正を有するユニットデータごとの付加的なパリティのために符号化時間のバランスまたは付加的なパリティデータの検出利益を促進する。加えて、異なるメモリページ、ブロックまたはダイに対して異なる符号またはパリティレートを許容するために、コントローラは、メモリアレイのメモリページ、ブロックまたはダイのための調整された符号化パラメータを保存することができる。
【図面の簡単な説明】
【００１４】
これから以下の図面を参照して本発明の様々な特徴を実施するシステム及び方法が説明される。
【００１５】
【図１】本発明の一実施形態に従ってデータを適応的に符号化するストレージシステムを例示する図である。
【図２】本発明の一実施形態に従って符号化データ用の符号化パラメータを決定するプロセスを例示している流れ図である。
【図３】本発明の一実施形態に従って低密度パリティチェック（ＬＤＰＣ）符号化パラメータとバイナリ低密度パリティチェック（ＬＤＰＣ）符号語長の関係を例示しているテーブルである。
【図４Ａ】本発明の一実施形態例に従ってパディングされたユーザデータおよびパリティデータを例示している略図である。
【図４Ｂ】本発明の一実施形態例に従ってパディングされたユーザデータおよびパリティデータを例示している略図である。
【図４Ｃ】本発明の一実施形態例に従ってパディングされたユーザデータおよびパリティデータを例示している略図である。
【図５】本発明の一実施形態に従って適応符号短縮のプロセスを例示している流れ図である。
【図６】本発明の一実施形態に従って符号レートを調整するプロセスを例示している流れ図である。
【発明を実施するための形態】
【００１６】
（システム概要）
図１は、本発明の一実施形態に従ってデータを適応して符号化するストレージシステム１２０を例示している。図示されているように、ストレージシステム１２０（例えば、ハイブリッドハードディスク、ソリッドステートドライブなど）は、コントローラ１３０およびブロック「Ａ」１４２からブロック「Ｎ」までを含むストレージの一つ以上のブロックからなる不揮発性メモリアレイ１４０を含む。各ブロックは、複数のフラッシュページ（Ｆページ）を含む。例えば、図１のブロックＡ１４２は、ＦページＡ１４３、ＢからＮまでとされる複数のＦページを含む。一部の実施形態において、各「Ｆページ」は、単一の演算（運用）または一ユニットとしてプログラムされ得る不揮発性メモリアレイ１４０におけるメモリセルの最も小さいグループ化されたものである。さらに、各Ｆページは、複数の誤り訂正符号ページ（Ｅページ）を含む。例示の実施形態において、各Ｆページは、４つのボックスとして例示するＥページ１４４を含む４つのＥページを有する。他の実施形態としては、異なって定められる、あるいは４つのＥページよりも多くまたは少なく含むことができるＦページまたはＥページを使用する場合がある。
【００１７】
コントローラ１３０は、ホストシステム１１０におけるストレージインタフェースモジュール１１２（例えば、デバイスドライバ）から、データおよび／またはストレージアクセス命令を受け取ることができる。ストレージインタフェース１１２によって伝達されるストレージアクセス命令は、ホストシステム１１０が発する書き込みおよび読み込み命令を含むことができる。命令はストレージシステム１２０の論理ブロックアドレスを特定することができ、コントローラ１３０は、不揮発性メモリアレイ１４０の受け取った命令を実行することができる。ハイブリッドハードドライブにおいて、データは、不揮発性メモリアレイ１４０に加えて磁気媒体記憶コンポーネント（図１に図示せず）に保存され得る。
【００１８】
ストレージシステム１２０がホストシステム１１０に対してメモリストレージシステムとして作用することができるように、ストレージシステム１２０はホストシステム１１０から受け取られるデータを保存することができる。この機能を促進するために、コントローラ１３０は、論理インタフェースを実装することができる。論理インタフェースは、ストレージシステムメモリをデータが保存され得る一連の論理アドレス（例えば、隣接するアドレス）としてホストシステム１１０に提示することができる。内部的には、コントローラ１３０は、論理アドレスを不揮発性メモリアレイ１４０および／または他のメモリモジュールにおける様々な物理メモリアドレスにマップすることができる。
【００１９】
コントローラ１３０は、コーダーモジュール１３２を含む。一実施形態において、コーダーモジュール１３２は、不揮発性メモリアレイ１４０のメモリページ（例えばＥページ）から読み込まれるかまたはそれに書き込まれるデータ（例えば、ユーザデータ）を復号化／符号化するための符号化パラメータを決定する。符号化パラメータは、不揮発性メモリアレイ１４０から読み出されたユーザデータを復号化するために、不揮発性メモリアレイ１４０に保存するためのユーザデータを符号化するために、および誤り検出または訂正のような他の用途に使用され得る。符号化パラメータは、ＬＤＰＣ符号化パラメータ（例えばＧまたはＨ符号化マトリクスのカラムのウェイト、ＧまたはＨ符号化マトリクスのロウのウェイト、Ｐマトリクスサイズ（例えば、ＰマトリクスがＧまたはＨ符号化マトリクスのサブマトリクスである所での）などを、含むことができる。さらに、コーダーモジュール１３２は、対応するパリティデータおよびパディングを有するユーザデータを復号するのはもちろん、パディングされないまたはパディングされたユーザデータに対してパリティデータを決定することができる。加えて、コーダーモジュール１３２は、符号化パラメータを調整することによって、符号化データに対して符号またはパリティレートを調整することができる。コントローラ１３０および／またはコーダーモジュール１３２は、一つ以上の適切なメモリタイプの内部メモリ（図示せず）をさらに含むことができる。
【００２０】
不揮発性メモリアレイ１４０は、ＮＡＮＤフラッシュメモリデバイスを使用して実装され得る。フラッシュ集積回路のアレイ、カルコゲナイドＲＡＭ（Ｃ―ＲＡＭ）、相変化メモリ（ＰＣ―ＲＡＭまたはＰＲＡＭ）、プログラムメタライゼーションセルＲＡＭ（ＰＭＣ―ＲＡＭまたはＰＭＣｍ）、オボニックユニファイドメモリ（ＯＵＭ）、抵抗変化型ＲＡＭ（ＲＲＡＭ（登録商標））、ＮＯＲメモリ、ＥＥＰＲＯＭ、強誘電体メモリ（ＦｅＲＡＭ）、磁気抵抗メモリ（ＭＲＡＭ）、他のディスクリートＮＶＭ（不揮発性メモリ）チップまたはそれらのあらゆる組み合わせ等の、他のタイプのソリッドステートメモリデバイスが選択的に使用され得る。一実施形態において、不揮発性メモリアレイ１４０は、シングルビットの情報よりも多くの情報を記憶できるマルチレベルセル（ＭＬＣ）デバイスを含むことがより好ましい。とはいえ、シングルレベルセル（ＳＬＣ）メモリデバイスまたはＳＬＣとＭＬＣデバイスの組合せが使用される場合がある。一実施形態において、ストレージシステム１２０は、他のメモリモジュール（例えば一つ以上の磁気メモリモジュール）を含むことができる。ストレージシステム１２０は、磁気ストレージなど他のタイプの記憶媒体をさらに含むことができる。
【００２１】
（適応データ符号化）
図２は、本発明の一実施形態に従って符号化データ用の符号化パラメータを決定するプロセス２００を例示している流れ図である。プロセス２００は、コントローラ１３０および／またはコーダーモジュール１３２によって実行され得る。好都合に、プロセス２００は、複数の符号語長を使用している複数の不揮発性メモリページフォーマットをサポートするために、コントローラ１３０および／またはコーダーモジュール１３２を有効にすることができる。
【００２２】
ブロック２０５において、プロセス２００は、不揮発性メモリアレイ（例えば不揮発性メモリアレイ１４０）に対してメモリページサイズを決定する。メモリページサイズは、例えば、メモリアレイメーカー（販売業者）によって与えられるかまたは他の周知のメモリサイズに基づいて算出され得る。例えば、メモリページサイズは、不揮発性メモリアレイのＥページサイズに対応し、プロセス２００は、メーカー（販売業者）が提供するメモリアレイのＦページサイズを検索し、不揮発性メモリアレイに対して、例えば４または８の適切な定数によってＦページサイズを分割することによって、Ｅページサイズを算出することができる。他の実施形態では、メモリページサイズは、Ｆページサイズに対応することができる。
【００２３】
ブロック２１０において、プロセス２００は、複数の符号語長から、メモリページサイズに等しいかまたはメモリページサイズを超える符号語長を選択する。例えば、メモリページサイズは２１６４バイトまたはオクテットであり得、複数の定義済み符号語長は２１７６バイトおよび２３０４バイトの長さを含むことができる。一実施形態において、プロセス２００は、複数の定義済みＬＤＰＣ符号語長からメモリページサイズ以上のデータの最小限のサイズまたはバイト数を有するＬＤＰＣ符号語長を選択する。例えば、プロセス２００は、２１６４バイトのメモリページサイズを超えて、複数の定義済みＬＤＰＣ符号語長の最小限のサイズを有する２１７６バイトの符号語長を選択することができる。
【００２４】
ブロック２１５において、プロセス２００は、選択された符号語長に少なくとも部分的に基づいて符号化パラメータを決定する。データに対して符号レート（例えば、ユーザデータおよびパリティデータを含む、データユニットの全体のデータごとのユーザデータの量）を管理するために、符号化データが不揮発性メモリから読み込まれ、または不揮発性メモリに書き込まれ、プロセス２００を有効にする際に、符号化パラメータが使用され得る。一実施形態において、ＬＤＰＣ符号語長のための符号化パラメータは、カラムのウェイト、Ｐマトリクスサイズおよびロウのウェイトを含むとともに、符号レート、ユーザデータの量およびパリティデータの量の少なくとも一つをさらに含む。
【００２５】
ブロック２２０において、プロセス２００は、符号化パラメータを保存する。例えば、プロセス２００は、符号化パラメータを、不揮発性メモリアレイ１４０および／またはストレージシステム１２０の一つ以上の他の記憶媒体に保存することができる。プロセス２００は、符号化パラメータを、コントローラ１３０および／またはコーダーモジュール１３２の内部メモリに保存することができる。保存された符号化パラメータは、異なるページ、ブロックあるいは不揮発性メモリアレイ１４０の他の区分および／または再分割区分の符号化のために、そして、不揮発性メモリアレイの部分が古くなりおよび／または消耗するにつれて、時間とともに符号化パラメータをトラッキングおよび調整するために、異なる符号化パラメータを使用することを促進することができる。
【００２６】
図３は、本発明の一実施形態に従ってＬＤＰＣ符号化パラメータとＬＤＰＣ符号語長の関係を例示しているテーブル３００である。テーブル３００は、ＬＤＰＣ符号語長、および例えばコントローラ１３０および／またはコーダーモジュール１３２などのコントローラによってサポートされるＬＤＰＣ符号化パラメータを指定することができる。テーブル３００は、不揮発性メモリアレイ１４０、ストレージシステム１２０の一つ以上の他の記憶媒体、および／またはコントローラ１３０および／またはコーダーモジュール１３２の内部メモリ、に保存され得る。テーブル３００は、サポートする二つのＬＤＰＣ符号語長を指示している二つの符号長カラムを含む。一つのＬＤＰＣ符号語長は、２１７６バイトに等しく（２０４８＋１２８×１バイト）、他のＬＤＰＣ符号語長は、２３０４バイトに等しい（２０４８＋１２８×２バイト）。２キロバイト辺りの様々な符号レートが複雑さと実行（性能）の間に最適トレードオフを提供することができると発見された。
【００２７】
カラムのウェイト、ＰマトリクスサイズおよびロウのウェイトのＬＤＰＣ符号化パラメータは、テーブル３００にリストされるような異なる設計の符号レート（例えば、データユニット（全体のデータがユーザデータおよびパリティデータを含む）の全体のデータごとに異なる量のユーザデータ）を使用しているデータの符号化を可能にするために、変化することができる。例えば、ＬＤＰＣ符号語長が２１７６バイトに等しい場合、適用されるＬＤＰＣ符号化パラメータは丸で囲ったサークルＣ１、Ｃ２、Ｃ３またはＣ４のＬＤＰＣ符号化パラメータセットの一つであり得る。一例を挙げると、ＬＤＰＣ符号化パラメータは、サークルＣ３で選択され得、それはカラムのウェイトが４、Ｐマトリクスサイズが５１２、およびロウのウェイトが３４であり、さらに０．８８２の符号レート（２１７６バイトの総符号長に対して１９２０バイトのユーザデータ）に対応する。さらに、一実施形態において、２０４８＋１２８×Δと定義され得る符号長は、Δを１、２、その他として選択することに基づいて調整され得る。例示されるように、Δの値を選択することもまた、符号レートに影響を及ぼす。例えば、サークルＣ１で、Δに１を選択することは、結果として０．９４１の符号レートになり、カラムのウェイト、Ｐマトリクスサイズおよびロウのウェイトが不変のままである場合、Δに２を選択することは、結果として０．９４４の符号レートになる。さらに説明されるように、様々な定義済み符号レートは、異なるページサイズのメモリアレイを収容するために用いることができる。例えば、図示のように、２１７６および２３０４バイトの二つの符号長は２１７６および２３０４バイトのページサイズに適合することができる。実際には、定義済み符号長の数は、様々なページサイズに適合するために２よりはるかに高くなり得る点に留意する必要がある。
【００２８】
テーブル３００のＬＤＰＣ符号化パラメータをサポートしているコントローラは、有利に不揮発性メモリアレイに対して一つの符号長を選択することができ、異なる符号レートでＬＤＰＣ符号化パラメータを符号データに適合させることができる。例えば、２１７６バイトのＥページサイズを有するメモリアレイが比較的新規（例えば、あまり使われていない）で、および／またはほとんど符号化エラーを経験しないか提示しない場合に、サークルＣ１でのＬＤＰＣ符号化パラメータが符号化データのために選択され得る。サークルＣ１においてＬＤＰＣ符号化パラメータは、カラムのウェイトが４、Ｐマトリクスサイズが２５６、ロウのウェイトが６８、そして、さらに０．９４１の符号レートに対応する。サークルＣ１で２０４８バイトのデータを符号化するために、合計１２８バイトのパリティが、使用され得る。メモリアレイのメモリページ、ブロックまたはダイが古くなりおよび／または消耗するにつれて、サークルＣ２、Ｃ３およびＣ４のＬＤＰＣ符号化パラメータは、符号化データのためにその代わりに選択され得る。従って、コントローラは、不揮発性メモリアレイの質の変化（例えば、質の劣化）に応じて、それぞれ、サークルＣ２、Ｃ３およびＣ４でユニットデータにつき０．９４１の符号レートから０．９２６、０．８８２および０．８５３の符号レートまでパリティの量を段階的に増加させることができる。
【００２９】
（適応符号短縮）
本発明の一部の実施形態は、適応符号短縮を使って、必ずしも定義済み符号長とマッチしないページサイズを、メモリアレイに適応することができる。図４Ａ−４Ｃは、本発明の一実施形態例に従ってパディングされたユーザデータおよび短縮している適応符号で使用されるパリティデータを例示している略図である。図４Ａ−４Ｃは、特にメモリに不揮発性メモリアレイに対してメモリページサイズとマッチする符号語長を適応させるために、符号短縮がどのように使用され得るかについて、説明する。好都合に、符号短縮は、メモリページサイズが複数の定義済み符号語長のいかなる符号語長にも等しくないメモリページフォーマットをサポートするために、コントローラ１３０および／またはコーダーモジュール１３２を有効にすることができる。例えば、コントローラ１３０および／またはコーダーモジュール１３２が２１７６および２３０４バイトに等しい定義済みＬＤＰＣ符号語長をサポートする場合、コントローラ１３０および／またはコーダーモジュール１３２が、２１６４バイトのメモリページサイズをさらにサポートするように、符号短縮が用いられ得る。さらに、符号短縮は、多大なビット誤り率性能を犠牲にすることのない不揮発性メモリアレイフォーマットに合うような適応符号データにするコントローラ１３０および／またはコーダーモジュール１３２を可能にする。
【００３０】
一実施形態において、符号短縮は、３つの運用からなる。第一に、パディングデータは、符号化されるユーザデータに加えられる。一実施形態においてパディングデータは、定義済み符号長とメモリページサイズ間の差であるために、サイズ指定される。第２に、パディングおよびユーザデータに基づいてパリティデータが生成される。第３に、ユーザデータおよびパリティデータ（合計するとメモリページサイズ）は、メモリページに保存される。パディングデータは、保存されなくて、復号（例えば、ユーザデータおよびパリティデータがあとでメモリページから読み出されるとき）で、ユーザデータに追加される。
【００３１】
図４Ａは、データユニット４００ａのパディング４１０およびユーザデータ４２０を例示している。ユーザデータ４２０は、データユニット４００ａに対してユーザデータの量に対応し、パディング４１０は符号短縮を容易にするパディングに対応する。パディング４１０は、全てが０（ゼロ）、全てが１、等々、またはあらゆる周知または定義済みデータパターンのデータセットを含むことができる。前の段落の例に引き続き、不揮発性メモリアレイに対してメモリページサイズが２１６４バイトである場合、コントローラ１３０および／またはコーダーモジュール１３２は、例えば、２１６４バイト以上のサイズを有する最も短いＬＤＰＣ符号語長など様々な定義済み符号長から選択することができる。この場合、２１７６バイトの符号長が選択される。コントローラ１３０および／またはコーダーモジュール１３２は、パディング４１０が、符号語長（２１７６）と不揮発性メモリアレイのメモリページサイズ（２１６４）の差またはパディングデータの２１７６−２１６４＝１２バイトに等しい長さを有するデータセットを含まなければならないと、決定することができる。データユニット４００ａのためのＬＤＰＣ符号化パラメータに応じて、コントローラ１３０および／またはコーダーモジュール１３２は、ユーザデータ４２０およびパリティデータを決定および／または生成するための適切なＧ符号化マトリクスに確保されているバイトの量をさらに決定することができる。
【００３２】
図４Ｂは、一実施形態に従って符号化プロセスを例示しており、実際において、ユーザデータ４２０は、複合化ユーザデータおよびパディングが、選ばれた定義済み符号長のユーザデータのために確保されているバイトの量を満たすように、パディングされる。その後、データユニット４００ｂの複合化パディング４１０およびユーザデータ４２０用にパリティ４３０が生成される。前の段落の例に引き続き、適切なＧ符号化マトリクスは、パリティ４３０用のＬＤＰＣパリティデータを決定するために利用され得る。上記の通りに、パディング４１０、ユーザデータ４２０とパリティデータ４３０間の２１７６バイトの実際の配分が変わることがある点に注意する。以下のテーブルにおいて、可能な設定（バイトで表す全サイズ）の一部を例示する：
【表１】
2015534409.tif 000003
【００３３】
図４Ｃはデータユニット４００ｃを例示しており、パディング４１０の取り除かれたデータユニット４００ｂのユーザデータ４２０およびパリティ４３０を有する。ユーザデータ４２０およびパリティ４３０は、不揮発性メモリアレイ１４０のメモリページに書き込まれ得、その後、不揮発性メモリアレイ１４０のメモリページから読むことができる。上の表に示すように、ユーザデータ４２０およびパリティデータ４３０の量は不揮発性メモリアレイのメモリページサイズに等しくなり得、パディングデータはページに書き込まれない。ページが後で読み出されるときに、復号の一部として、ページから読まれるユーザデータに戻って、パディングが付加される。このように、任意のページサイズのための符号化は、符号化効率の小さい損失を犠牲にして複数の定義済み符号語長の一つを用いて行える。
【００３４】
図５は、本発明の一実施形態に従って適応符号短縮のプロセス５００を例示している流れ図である。プロセス５００は、コントローラ１３０および／またはコーダーモジュール１３２によって実行され得る。好都合に、プロセス５００は、コントローラ１３０および／またはコーダーモジュール１３２によってサポートされる複数の定義済み符号語長のいかなる符号語長にも等しくないメモリページサイズをサポートするために、コントローラ１３０および／またはコーダーモジュール１３２を有効にすることができる。プロセス５００は、図４Ａ−４Ｃに表されるデータユニット４００ａ、４００ｂおよび４００ｃを構成し、管理するために用いられ得る。ブロック５０５において、プロセス５００は、ユーザデータを受け取る。ユーザデータは、例えば不揮発性メモリアレイ１４０などの不揮発性メモリにユーザデータを書き込むための、書き込み命令と併せてストレージインタフェースモジュール１１２から受け取られ得る。
【００３５】
ブロック５１０において、プロセス５００は、パディングデータでユーザデータをパディングする。パディングデータは、全てが０（ゼロ）、全てが１、あるいは周知または定義済みデータパターンのデータセットを含むことができ、加えて、ブロック５１０において、プロセス５００は、対応する符号化パラメータに依存するデータユニットごとのユーザの量に等しいサイズを有するユニットにユーザデータをさらに分けることができる。例えば、不揮発性メモリアレイが２１６４バイトに等しいメモリページサイズを有し、ＬＤＰＣ符号化パラメータが図３のサークルＣ３でのパラメータに対応する場合、ユーザデータは１９０８バイトに等しいサイズを有するユニットに分割され得る。
【００３６】
ブロック５１５において、プロセス５００は、パディングされたユーザデータに対して符号化パラメータを用いて、パリティデータを決定する。前の段落の例に引き続き、ＬＤＰＣ符号化パラメータがサークルＣ３でのパラメータに対応する場合、パディングされたユーザデータに対してＬＤＰＣパリティデータを決定するために、適切なＧ符号化マトリクスが選択され使用され得る。
【００３７】
ブロック５２０において、プロセス５００は、ユーザデータおよびパリティデータを出力する。例えば、プロセス５００は、ストレージのためのユーザデータおよびパリティデータを、不揮発性メモリアレイ１４０のＦページ１４３のＥページ１４４に出力することができる。ブロック５１０および５１５について示されているパディングは、パディングそれ自体がメモリページに書き込まれ得ないことから、「仮想パディング」として特徴付けることができる。
【００３８】
（符号レート調整）
図６は、本発明の一実施形態に従って符号レートを調整するプロセス６００を例示している流れ図である。プロセス６００は、コントローラ１３０および／またはコーダーモジュール１３２によって実行され得る。好都合に、プロセス６００は、不揮発性メモリアレイのメモリページ、ブロックまたは他の区分が消耗および／または品質の低下を経験するので、不揮発性メモリアレイのメモリページ、ブロックまたは他の区分の符号レート（例えば、ユニットデータごとのパリティの量）を調整するために、コントローラ１３０および／またはコーダーモジュール１３２を有効にすることができる。
【００３９】
ブロック６０５において、プロセス６００は、メモリページに保存されたユーザデータおよびパリティデータを読み込む。例えば、プロセス６００は、ホストシステム１１０からの読取命令に応答してＦページ１４３の読み出しを実行することができる。
【００４０】
ブロック６１０において、パリティデータおよび符号化パラメータを用いてユーザデータを復号する際、プロセス６００はいくつかのビット誤りを検出する。例えば、プロセス６００は、メモリページに対応する保存されたパリティデータおよびＬＤＰＣ符号化パラメータを用いてユーザデータを復号する際、いくつかの検出ビット誤りを決定することができる。
【００４１】
ブロック６１５において、プロセス６００は、ビット誤りの数がビット誤り閾値を超えるかどうか、決定する。ビット誤り閾値は、メモリページへの符号化データ用の符号化パラメータに基づいて左右され、変化し得る。例えば、図３のサークルＣ１でのＬＤＰＣ符号化パラメータのためのビット誤り閾値は、サークルＣ２でのＬＤＰＣ符号化パラメータのためのビット誤り閾値より低くてもよい。プロセス６００が、ビット誤りの数がビット誤り閾値を超えないと確定すると、プロセス６００は終了する。一方、プロセス６００が、ビット誤りの数がビット誤り閾値を超えると確定する場合、プロセス６００はブロック６２０へと移動する。
【００４２】
ブロック６２０において、プロセス６００は、符号化パラメータが符号レートを低下させるように調整され得るかどうか、チェックする。換言すれば、プロセス６００は、符号化のためにより多くのパリティデータが使用され得るかどうか決定することができる。一実施形態において、プロセス６００は、ＬＤＰＣ符号語長を不変に保つと共に、ＬＤＰＣ符号化パラメータが調整され得るかどうか、決定することができる。例えば、Ｅページ１４４が図３のサークルＣ３でのＬＤＰＣ符号化パラメータを使用して現在符号化される場合、ＬＤＰＣ符号化パラメータはサークルＣ４でパラメータに適応させることができる。あるいは、Ｅページ１４４が現在サークルＣ４でのＬＤＰＣ符号化パラメータを用いて符号化され、テーブル３００が唯一の利用できるＬＤＰＣ符号化パラメータを含む場合、パラメータは低い符号レートにさらに適応させることができない。プロセス６００が、符号化パラメータが符号レートを低下させるように調整され得ないと確定する場合、プロセス６００は終了する。一方では、プロセス６００が、符号化パラメータが符号レートを低下させるように調整され得ると確定する場合、プロセス６００はブロック６２５へ移動する。一実施形態において、符号レートの変化は、ブロックにおけるページが同時に新しい符号レートに切り替えられるブロックレベルで、管理され得る。
【００４３】
ブロック６２５において、プロセス６００は、次の書込み操作に対して符号レートを低下させるために、符号化パラメータを調整し、調整された符号化パラメータを保存する。プロセス６００は、調整された符号化パラメータを、不揮発性メモリアレイ１４０、ストレージシステム１２０の他のメモリモジュールおよび／またはコントローラ１３０および／またはコーダーモジュール１３２の内部メモリに、保存することができる。プロセス６００は、不揮発性メモリアレイのメモリページ、ブロックまたは他のレベル区分上のＬＤＰＣ符号化パラメータの管理を容易にするために、符号レートまたは符号化データ用のＬＤＰＣ符号化パラメータの指標を保存することができる。調整された符号化パラメータは、さらに、ホストシステム１１０から受け取られる次の書き込み命令と関連付けられている符号化ユーザデータに対して使用され得る。
【００４４】
（他の変形例）
当業者は、実施形態によっては、他の手段および方法が用いられることができると、理解している。例えば、本書において開示される符号化技術は、ＬＤＰＣ符号の他、例えばターボ符号のような他の反復的な符号に適用することができる。加えて、図３のテーブル３００において開示される符号化パラメータおよび他の値が符号化パラメータと符号語長の関係の中でセットされる例示にもかかわらず、他のまたはさらなる符号化関係が使用され得る。テーブル３００は、４未満および５を超える値（例えば３または６）を有するカラムのウェイト、２５６ビット未満または５１２を超える値（例えば１２８または１０２４）を有するＰマトリクスサイズ、１未満または２を超える（例えば−１、０、３または４）のΔ値、１２８バイト以外（例えば６４バイト）の対応する粒度（精度）を有するΔ値、および２０４８より少ないまたは大きい（例えば２１７６のような）値を有するベース符号長、を含むことができる。さらに、各データユニットにおけるパリティデータの量は、異なる値に設定され得るかまたはストレージ媒体の質に応じて変化され得る。加えて、符号化データに対して符号化パラメータを調整するべきかどうか決定するために、ビット誤りとは異なる良質な評価基準が用いられ得る。そのうえ、実施形態に応じて、上述のステップが取り除かれ、他のものが加えられ得ることを確信している。したがって、現在の開示の範囲は、添付の請求の範囲の参照によってのみ定められることを意図する。
【００４５】
特定の実施形態が記載されると共に、これらの実施形態は、ほんの一例として示され、保護の範囲を制限することを意図しない。実際、本書において記載されている新規な方法およびシステムは、様々な他の形で具体化され得る。さらにまた、本書において記載されている方法およびシステムの形の様々な省略、置換えおよび変更は、保護の趣旨を逸脱しない範囲でなされることが可能である。添付の請求の範囲およびそれらの等価物は、保護の範囲および趣旨に入るような形または修正をカバーすることを意図する。例えば、本書において開示されるシステム及び方法は、ハードディスクドライブ、ハイブリッドハードドライブおよび同類のものに適用され得る。加えて、ストレージの他の形（例えば、ＤＲＡＭまたはＳＲＡＭ、バッテリバックアップされた揮発性のＤＲＡＭまたはＳＲＡＭデバイス、ＥＰＲＯＭ、ＥＥＰＲＯＭのメモリ等々）が、さらに、または、代わりに用いられ得る。別の例として、図に例示した各種コンポーネントは、プロセッサ、ＡＳＩＣ／ＦＰＧＡまたは専用ハードウェア上のソフトウェアおよび／またはファームウェアとして実施され得る。また、上記開示される特定の実施形態の特徴および属性は、付加的な実施形態を形成する異なる手段に組み込まれ得、その全ては現在の開示の範囲内になる。現在の開示が特定の好ましい実施形態および適用を提供するにもかかわらず、本書において記載される特徴および効果の全てを提供するというわけではない実施形態を含んで、当業者にとって明らかである他の実施形態はこの開示の範囲内でもある。したがって、現在の開示の範囲は、添付の請求の範囲を参照することでのみ定められることを意図する。
【図１】
2015534409.tif 000004
【図２】
2015534409.tif 000005
【図３】
2015534409.tif 000006
【図４Ａ】
2015534409.tif 000007
【図４Ｂ】
2015534409.tif 000008
【図４Ｃ】
2015534409.tif 000009
【図５】
2015534409.tif 000010
【図６】
2015534409.tif 000011
【国際調査報告】
2015534409.tif 000012
2015534409.tif 000013