(57)【特許請求の範囲】
【請求項１】
ソリッドステートドライブのブロックを選択することであって、前記ブロックは第１の状態で構成されることと、
前記ブロックに対応するマッピング規則を受信することと、
制約を受信することと、
メッセージを受信することと、
前記マッピング規則に従って前記メッセージにマッピングする１つまたは複数のコードワードを識別することと、
前記第１の状態で構成された前記ブロックに適用される際に前記制約に従って前記コードワード内の適用可能なコードワードを識別することと、
前記ソリッドステートドライブ内の前記ブロックに前記適用可能なコードワードの書き込み操作を実行し、それにより前記ブロックを前記第１の状態から第２の状態に変化させることとを備える、メッセージを符号化するための方法。
【請求項２】
前記マッピング規則に従って前記メッセージにマッピングする１つまたは複数のコードワードを識別することは、シンドロームコーディングベースのマッピング規則に従って前記メッセージにマッピングする前記コードワードを識別することを備える請求項１に記載の方法。
【請求項３】
前記マッピング規則に従って前記メッセージにマッピングする１つまたは複数のコードワードを識別することは、誤り訂正ベースのマッピング規則に従って前記メッセージにマッピングする前記コードワードを識別することを備える請求項１に記載の方法。
【請求項４】
前記制約はフリップダウンの制約を備え、前記第１の状態で構成された前記ブロックに適用される際に前記制約に従って前記コードワード内の適用可能なコードワードを識別することは、前記フリップダウンの制約を満たすと同時に前記第１の状態の前記ブロックに書き込みされうる前記適用可能なコードワードを識別することを備える請求項１に記載の方法。
【請求項５】
前記フリップダウンの制約は、前記書き込み操作が前記ブロック内のセルの電力レベルを維持または低下させることを指定し、複数のビット値は各々前記電圧レベルの１つに対応する請求項４に記載の方法。
【請求項６】
セルのより高い電圧レベルはより高いビット値を表し、前記セルのより低い電圧レベルはより低いビット値を表す請求項４に記載の方法。
【請求項７】
前記コードワードは、前記ブロック内のセルの電圧レベルの比率を表す実数を備え、複数のビット値は各々前記電圧レベルの前記比率の１つに対応する請求項１に記載の方法。
【請求項８】
前記制約は低電圧レベルコストの制約を備え、前記低電圧レベルコストの制約は、前記書き込み操作が前記ブロック内の合計電圧レベル低下を最小化することを指定し、複数のビット値は各々前記電圧レベルの１つに対応する請求項１に記載の方法。
【請求項９】
前記ブロックに対応する第２のマッピング規則を受信することと、
第２のメッセージを受信することと、
前記第２のマッピング規則に従って、前記第２のメッセージにマッピングする１つまたは複数の第２のコードワードを識別することと、
前記第２の状態で構成された前記ブロックに適用される際に前記制約に従って前記第２のコードワード内の第２の適用可能なコードワードを識別することと、
前記ソリッドステートドライブ内の前記ブロックに前記第２の適用可能なコードワードの前記書き込み操作を実行し、それにより前記ブロックを前記第２の状態から第３の状態に変化させることとをさらに備える請求項１に記載の方法。
【請求項１０】
第２のメッセージを受信することと、
前記マッピング規則に従って前記第２のメッセージにマッピングする１つまたは複数の第２のコードワードを識別することと、
前記第２の状態で構成された前記ブロックに適用される際に前記制約に従って前記第２コードワード内の第２の適用可能なコードワードを識別することと、
前記ソリッドステートドライブ内の前記ブロックに前記第２の適用可能なコードワードの前記書き込み操作を実行し、それにより前記ブロックを前記第２の状態から第３の状態に変化させることとをさらに備える請求項１に記載の方法。
【請求項１１】
前記ソリッドステートドライブ内の前記ブロックから前記適用可能なコードワードを読み取ることと、
前記ブロックに対応する前記マッピング規則を取り出すことと、
前記マッピング規則に従って前記コードワードにマッピングするメッセージを識別することとをさらに備える請求項１に記載の方法。
【請求項１２】
前記マッピング規則に従って前記コードワードにマッピングするメッセージを識別することは、シンドロームコーディングベースのマッピング規則に従って前記メッセージを識別することを備える請求項１１に記載の方法。
【請求項１３】
前記シンドロームコーディングベースのマッピング規則は行列を備える請求項１２に記載の方法。
【請求項１４】
前記ソリッドステートドライブ内の前記ブロックに前記適用可能なコードワードの書き込み操作を実行することは、
前記適用可能なコードワードが第２のビット値よりも多数の第１のビット値を含むかどうかを決定することと、
前記適用可能なコードワードが第２のビット値よりも多数の第１のビット値を含むと決定することに応答して、反転された適用可能なコードワードを生成するために前記適用可能なコードワードのビット値を反転させることと、
前記反転された適用可能なコードワードを生成するために前記適用可能なコードワードの前記ビット値を反転させると、前記ソリッドステートドライブ内の前記ブロックに前記反転された適用可能なコードワードの前記書き込み操作を実行することと、
前記適用可能なコードワードが第２のビット値よりも多数の第１のビット値を含まないと決定することに応答して、前記ソリッドステートドライブ内の前記ブロックに前記適用可能なコードワードの前記書き込み操作を実行することとを備える請求項１に記載の方法。
【請求項１５】
コンピュータによって実行されるときに前記コンピュータに、
ソリッドステートドライブ内のブロックから適用可能なコードワードを読み取ることと、
前記ブロックの状態を取り出すことと、
複数のマッピング規則から前記ブロックの前記状態に対応するマッピング規則を取り出すことと、
前記マッピング規則に従って前記コードワードにマッピングするメッセージを識別することと、
前記ソリッドステートドライブ内の前記ブロックを選択することであって、前記ブロックは第１の状態で構成されることと、
前記ブロックに対応するマッピング規則を受信することと、
制約を受信することと、
前記メッセージを受信することと、
前記マッピング規則に従って前記メッセージにマッピングする１つまたは複数のコードワードを識別することと、
前記第１の状態で構成された前記ブロックに適用される際に前記制約に従って前記コードワード内の適用可能なコードワードを識別することと、
前記ソリッドステートドライブ内の前記ブロックに前記適用可能なコードワードの書き込み操作を実行し、それにより前記ブロックを前記第１の状態から第２の状態に変化させることとを行うことを行うことによって前記メッセージを符号化させる、コンピュータ実行可能命令をそれ自体に格納したコンピュータ可読ストレージ媒体。
【請求項１６】
前記マッピング規則に従って前記コードワードにマッピングするメッセージを識別することは、シンドロームコーディングベースのマッピング規則に従って前記コードワードにマッピングする前記メッセージを識別することを備える請求項１５に記載のコンピュータ可読ストレージ媒体。
【請求項１７】
前記マッピング規則に従って前記コードワードにマッピングするメッセージを識別することは、誤り訂正ベースのマッピング規則に従って前記コードワードにマッピングする前記メッセージを識別することを備える請求項１５に記載のコンピュータ可読ストレージ媒体。
【請求項１８】
プロセッサと、
前記プロセッサに結合されたメモリと、
ソリッドステートドライブと、
前記メモリから前記プロセッサ内で実行される符号化ユニットであって、前記プロセッサによって実行されるとき、前記コンピュータシステムに、
前記ソリッドステートドライブのブロックを選択することであって、前記ブロックは第１の状態で構成されることと、
前記ブロックに対応する第１のマッピング規則を受信することと、
制約を受信することと、
第１のメッセージを受信することと、
前記第１のマッピング規則に従って前記第１のメッセージにマッピングする１つまたは複数の第１のコードワードを識別することと、
前記第１の状態で構成された前記ブロックに適用される際に前記制約に従って、前記第１のコードワード内の第１の適用可能なコードワードを識別することと、
前記ソリッドステートドライブ内の前記ブロックに前記第１の適用可能なコードワードの書き込み操作を実行し、それにより前記ブロックを前記第１の状態から第２の状態に変化させることと、
前記ブロックに対応する第２のマッピング規則を受信することと、
第２のメッセージを受信することと、
前記第２のマッピング規則に従って前記第２のメッセージにマッピングする１つまたは複数の第２のコードワードを識別することと、
前記第２の状態で構成された前記ブロックに適用される際に前記制約に従って、前記第２のコードワード内の第２の適用可能なコードワードを識別することと、
前記ソリッドステートドライブ内の前記ブロックに前記第２の適用可能なコードワードの前記書き込み操作を実行し、それにより前記ブロックを前記第２の状態から第３の状態に変化させることとを行うことによって前記メッセージを符号化させる、符号化ユニットとを備えるコンピュータシステム。
【請求項１９】
前記第１の状態は、前記ブロックに消去操作を実行した後の消去済みの状態を含む請求項１８に記載のコンピュータシステム。
【請求項２０】
前記符号化ユニットは、前記メモリから前記プロセッサ内で実行され、前記プロセッサによって実行されるとき、さらに前記コンピュータシステムに、
第３のメッセージを受信することと、
第３のマッピング規則を受信することと、
前記第３のマッピング規則に従って前記第３のメッセージにマッピングする１つまたは複数の第３のコードワードを識別することと、
前記制約に従って前記第３のコードワードが第３の適用可能なコードワードを含むかどうかを決定することと、
前記制約に従って前記第３のコードワードが前記第３の適用可能なコードワードを含むと決定することに応答して、前記ソリッドステートドライブ内の前記ブロックに前記第３の適用可能なコードワードの前記書き込み操作を実行し、それにより前記ブロックを前記第３の状態から第４の状態に変化させることとを行うことによって前記メッセージを符号化させる請求項１８に記載のコンピュータシステム。
【請求項２１】
前記制約に従って前記第３のコードワードが前記第３の適用可能なコードワードを含まないと決定することに応答して、誤り回復プロセスを実行する請求項２０に記載のコンピュータシステム。
【請求項２２】
誤り回復プロセスを実行することは、前記ソリッドステートドライブ内の別のブロックを選択することを備える請求項２１に記載のコンピュータシステム。
【請求項２３】
誤り回復プロセスを実行することは、前記ソリッドステートドライブ内の前記ブロックに消去操作を実行し、それにより前記ブロックを前記第３の状態から前記第１の状態に変化させることを備える請求項２１に記載のコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
本明細書において特に指示のない限り、このセクションにおいて説明される題材は、本明細書の特許請求の範囲の先行技術ではなく、このセクションに含めることにより先行技術であると認めるものではない。
【０００２】
ソリッドステートドライブの新たに消去されたブロック内の各セルは、最高電圧状態で開始することがある。従来、ブロックへの連続する書き込み操作の各々は、セルの電圧状態を低減することができるが、セルの電圧状態を増大させることはできない。セルの電圧状態を増大させるために、消去操作は、ブロック内のセルがもとの最高電圧状態に変更されるようなブロックで実行されてもよい。しかし、ソリッドステートドライブは、ドライブの存続期間中に限られた数の消去操作しか処理することができないので、頻繁な消去操作が予想されうる実施態様においてソリッドステートドライブの適用可能性を低下させることになる。
【発明の概要】
【０００３】
本開示は概して、メッセージを符号化するためのいくつかの方法を説明する。いくつかの例示的な方法によれば、ブロックは、ソリッドステートディスク内で選択されてもよい。ブロックは、第１の状態で構成されてもよい。ブロックに対応するマッピング規則、制約、およびメッセージが受信されてもよい。メッセージにマッピングする１つまたは複数のコードワードは、マッピング規則に従って識別されてもよい。コードワード内の適用可能なコードワードは、第１の状態で構成されたブロックに適用される際に制約に従って識別されてもよい。ソリッドステートドライブ内のブロックに適用可能なコードワードの書き込み操作が実行されてもよく、それによりブロックを第１の状態から第２の状態に変化させる。
【０００４】
本開示は概して、いくつかのコンピュータストレージ媒体を説明する。いくつかの例示的なコンピュータストレージ媒体は、コンピュータによって実行されるとき、メッセージを符号化するようコンピュータを適合させる、いくつかの方法のためにそこに格納されているコンピュータ実行可能命令を含むことができる。いくつかの例示的な方法によれば、適合されたコンピュータは、以下の操作のうちの１つまたは複数を実行するように構成されてもよい。コンピュータは、ソリッドステートドライブ内のブロックから適用可能なコードワードを読み取ることができる。コンピュータは、ブロックに対応するマッピング規則を取り出すことができる。コンピュータは、マッピング規則に従って、コードワードにマッピングするメッセージを識別することができる。
【０００５】
本開示は概して、メッセージを符号化するように構成されたいくつかのコンピュータシステムを説明する。いくつかの例示的なコンピュータシステムは、プロセッサと、プロセッサに結合されたメモリと、符号化ユニットとを含むように構成されてもよい。符号化ユニットは、メモリからプロセッサ内で実行するように適合され、プロセッサによって実行されるとき、コンピュータシステムに以下の操作のうちの１つまたは複数を実行することによりメッセージを符号化させるように適合されてもよい。コンピュータシステムは、ソリッドステートドライブ内のブロックを選択することができる。ブロックは、第１の状態で構成されてもよい。コンピュータシステムは、ブロックに対応する第１のマッピング規則、制約、およびメッセージを受信することができる。コンピュータシステムは、第１のマッピング規則に従って第１のメッセージにマッピングする１つまたは複数の第１のコードワードを識別することができる。コンピュータシステムは、第１の状態で構成されたブロックに適用される際に制約に従って第１のコードワード内の第１の適用可能なコードワードを識別することができる。コンピュータシステムは、ソリッドステートドライブ内のブロックに第１の適用可能なコードワードの書き込み操作を実行することができ、それによりブロックを第１の状態から第２の状態に変化させる。コンピュータシステムは、ブロックに対応する第２のマッピング規則、および第２のメッセージを受信することができる。コンピュータシステムは、第２のマッピング規則に従って第２のメッセージにマッピングする１つまたは複数の第２のコードワードを識別することができる。コンピュータシステムは、第２の状態で構成されたブロックに適用される際に制約に従って第２のコードワード内の第２の適用可能なコードワードを識別することができる。コンピュータシステムは、ソリッドステートドライブ内のブロックに第２の適用可能なコードワードの書き込み操作を実行することができ、それによりブロックを第２の状態から第３の状態に変化させる。
【０００６】
前述の課題を解決するための手段は、例示的なものに過ぎず、限定的であることは全く意図されていない。上記で説明される例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴は、図面および後段の詳細な説明を参照することにより明らかとなろう。
【０００７】
本開示の前述およびその他の特徴は、付属の図面と併せて以下の説明と添付の特許請求の範囲を読めばさらに十分に明らかとなろう。それらの図面が本開示によるいくつかの実施形態を示すに過ぎず、その範囲を限定するものと見なされるべきではないことを理解し、本開示は以下の添付の図面を使用することでさらに具体的かつ詳細に説明されるであろう。
【図面の簡単な説明】
【０００８】
【図１】提示される少なくとも一部の実施形態により配置された、メッセージを符号化するための例示的な操作環境を示す機能ブロック図である。
【図２Ａ】提示される少なくとも一部の実施形態により配置された、メッセージを符号化するための例示のプロセスを示す流れ図である。
【図２Ｂ】提示される少なくとも一部の実施形態により配置された、符号化されたメッセージを復号するための例示のプロセスを示す流れ図である。
【図３Ａ】提示される少なくとも一部の実施形態により配置された、マッピング規則への入力として適合された行列の具体的な例を示す図である。
【図３Ｂ】提示される少なくとも一部の実施形態により配置された、マッピング規則への入力として適合された行列の具体的な例を示す図である。
【図３Ｃ】提示される少なくとも一部の実施形態により配置された、マッピング規則への入力として適合された行列の具体的な例を示す図である。
【図４Ａ】提示される少なくとも一部の実施形態により配置された、ソリッドステートドライブに書き込みされうるメッセージの具体的な例を示す図である。
【図４Ｂ】提示される少なくとも一部の実施形態により配置された、ソリッドステートドライブに書き込みされうるメッセージの具体的な例を示す図である。
【図４Ｃ】提示される少なくとも一部の実施形態により配置された、ソリッドステートドライブに書き込みされうるメッセージの具体的な例を示す図である。
【図５Ａ】提示される少なくとも一部の実施形態により配置された、行列およびメッセージに従ってマッピング規則を満たすように適合されたコードワードの具体的な例を示す図である。
【図５Ｂ】提示される少なくとも一部の実施形態により配置された、行列およびメッセージに従ってマッピング規則を満たすように適合されたコードワードの具体的な例を示す図である。
【図５Ｃ】提示される少なくとも一部の実施形態により配置された、行列およびメッセージに従ってマッピング規則を満たすように適合されたコードワードの具体的な例を示す図である。
【図６Ａ】提示される少なくとも一部の実施形態により配置された、メッセージを符号化するための例示的な操作環境を示す機能ブロック図である。
【図６Ｂ】提示される少なくとも一部の実施形態により配置された、コードワードを復号するための例示的な操作環境を示す機能ブロック図である。
【図７】提示される少なくとも一部の実施形態により配置された、例示的なコンピューティングシステムを示すブロック図である。
【図８Ａ】提示される少なくとも一部の実施形態により配置された、提示される少なくとも一部の実施形態により配置された、コンピュータプログラム製品を示す概略図である。
【図８Ｂ】提示される少なくとも一部の実施形態により配置された、提示される少なくとも一部の実施形態により配置された、コンピュータプログラム製品を示す概略図である。
【図８Ｃ】提示される少なくとも一部の実施形態により配置された、提示される少なくとも一部の実施形態により配置された、コンピュータプログラム製品を示す概略図である。
【発明を実施するための形態】
【０００９】
以下の詳細な説明において、本明細書の一部を形成する付属の図面が参照される。図面において、文脈に別段の指示がない限り、類似する符号は概して、類似するコンポーネントを識別する。発明を実施するための形態、図面、および特許請求の範囲において説明される例示的な実施形態は、限定的であることを意図されていない。本明細書において提示される主題の精神および範囲を逸脱することなく、その他の実施形態が使用されてもよく、その他の変更が行われてもよい。本明細書において概ね説明され、図面に示される本開示の態様が、多岐にわたるさまざまな構成において配置され、代替され、組み合わされ、分離され、設計されてもよく、それらすべてが本明細書において明示的に検討されることは容易に理解されよう。
【００１０】
本開示は概して、とりわけメッセージを符号化するように構成された技術を対象としている。さまざまな実施形態において、新しい情報は、以前書き込まれたブロックに、消去操作をブロックで実行することなく、書き込まれる場合がある。例示的な実施形態において、ユーザは、第１のメッセージを、新たに消去されたブロックに書き込むことを望むことができる。第１のマッピング規則は、第１のメッセージを、１つまたは複数のコードワードの第１のセットにマッピングするように適合されてもよい。コントローラは、コードワードの第１のセットから、フリップダウンの制約および低電圧レベルコストの制約のような、制約を満たす第１の適用可能なコードワードを識別することができる。コントローラは、第１のメッセージをブロックに書き込むのではなく、第１の適用可能なコードワードをブロックに書き込むことができる。第１の適用可能なコードワードがブロックから読み取られると、コントローラはまた、第１のマッピング規則を介して、第１の適用可能なコードワードを第１のメッセージに復号することができる。
【００１１】
第１のメッセージが古くなった場合、ユーザは第２のメッセージをブロックに書き込むことを望むことができる。第２のマッピング規則は、第２のメッセージを、１つまたは複数のコードワードの第２のセットにマッピングするように適合されてもよい。コントローラは、コードワードの第２のセットから、制約を満たす第２の適用可能なコードワードを識別することができる。従来の実施態様とは対称的に、コントローラは、ブロックに消去操作を実行することなく、第２の適用可能なコードワードをブロックに書き込むことができる。第２の適用可能なコードワードがブロックから読み取られると、コントローラはまた、第２のマッピング規則を介して、第２の適用可能なコードワードを第２のメッセージに復号することができる。
【００１２】
ここで図１を参照すると、機能ブロック図は、本明細書において提示される少なくとも一部の実施形態による、メッセージを符号化するための例示的な操作環境１００を示す。操作環境１００は、ソリッドステートドライブ１０４に結合されたコンピュータ１０２を含むことができる。コンピュータ１０２は、コントローラ１０６を含むことができる。コントローラ１０６は、ソリッドステートドライブ１０４にメッセージを書き込み、かつソリッドステートドライブ１０４からメッセージを読み取るように構成されてもよい。本明細書では、メッセージは、ソリッドステートドライブ１０４に書き込まれかつソリッドステートドライブ１０４から読み取られうるデータの任意の適切な集合体を示すことができる。
【００１３】
ソリッドステートドライブ１０４は、第１のブロック１０８Ａ、第２のブロック１０８Ｂ、およびＮ番目のブロック１０８Ｎを含む複数のブロックを含むことができる。ブロック１０８Ａ〜１０８Ｎは、集合的にブロック１０８と称されてもよい。各ブロック１０８は、複数のセルを含むことができる。たとえば、第１のブロック１０８Ａは第１のセル１１０Ａ、第２のセル１１０Ｂ、およびＮ番目のセル１１０Ｎを含むことができる。セル１１０Ａ〜１１０Ｎは、集合的にセル１１０と称されてもよい。各セル１１０は、電圧レベルのような、複数の状態をとるように構成されてもよい。一部の実施形態において、各セル１１０は、高電圧レベルおよび低電圧レベルという、２つの電圧レベルを格納するように構成されてもよい。一部のその他の実施形態において、各セル１１０は、２つ以上の電圧レベルを格納するように構成されてもよい。各電圧レベルは、ビット値を表すことができる。たとえば、２状態の実施態様において、高電圧レベルは２進数１を表すことができ、低電圧レベルは２進数ゼロを表すことができる。一部の実施形態において、電圧レベルは、ブロック内のセルの電圧レベルの比率を表す実数に対応することができる。たとえば、コードワードは、０．９２、０．８３、０．７５１０３３３、および０．６３であってもよい。この場合、第１のセルの電圧レベルは０．９２ｖに設定されてもよく、第２のセルの電圧レベルは０．８３ｖに設定されてもよく、第３のセルの電圧レベルは０．７５１０３３３ｖに設定されてもよく、第４のセルの電圧レベルは０．６３ｖに設定されてもよく、ただしｖは所定の電圧レベルを表すことができる。
【００１４】
コントローラ１０６は、第１のマッピング規則１１２Ａ、第２のマッピング規則１１２Ｂ、およびＮ番目のマッピング規則１１２Ｎを含む複数のマッピング規則を含むことができる。マッピング規則１１２Ａ〜１１２Ｎは、集合的にマッピング規則１１２と称されてもよい。コントローラ１０６は、メッセージを１つまたは複数の対応するコードワードに符号化するために、適切なマッピング規則１１２を適用するように構成されてもよい。コントローラ１０６はまた、コードワードを対応するメッセージに復号するために、適切なマッピング規則１１２を適用するように構成されてもよい。たとえば、第１のメッセージ１１４Ａは、第１のマッピング規則１１２Ａを介して、１つまたは複数のコードワード１１６Ａの第１のセットにマッピングすることができる。第２のメッセージ１１４Ｂは、第２のマッピング規則１１２Ｂを介して、１つまたは複数のコードワード１１６Ｂの第２のセットにマッピングすることができる。Ｎ番目のメッセージ１１４Ｎは、１つまたは複数のコードワード１１６ＮのＮ番目のセットにマッピングすることができる。メッセージ１１４Ａ〜１１４Ｎは、集合的にメッセージ１１４と称されてもよい。コードワード１１６Ａ〜１１６Ｎのセットは、集合的にコードワード１１６と称されてもよい。
【００１５】
コントローラ１０６はさらに、コードワード１１６から、フリップダウンの制約（down-flipping constraint）および低電圧レベルコストの制約のような、制約を満たす適用可能なコードワードを識別するように構成されてもよい。たとえば、コードワード１１６Ａの第１のセットは、制約を満たす第１の適用可能なコードワード１１８Ａを含むことができる。コードワード１１６Ｂの第２のセットは、制約を満たす第２の適用可能なコードワード１１８Ｂを含むことができる。コードワード１１６ＮのＮ番目のセットは、制約を満たすＮ番目の適用可能なコードワード１１８Ｎを含むことができる。適用可能なコードワード１１８Ａ〜１１８Ｎは、集合的に適用可能なコードワード１１８と称されてもよい。フリップダウンの制約は、書き込み操作がセル１１０の電圧レベルを維持するかまたは下げることができるが、セル１１０の電圧レベルを高めることはできないことを指定することができる。適用可能なコードワード１１８は、コントローラ１０６が、消去操作の間にソリッドステートドライブ１０４のブロック１０８に複数のメッセージを書き込むことができるようにする。
【００１６】
これ以降、図２を参照すると、流れ図は、本明細書において説明される少なくとも一部の実施形態による、メッセージを符号化するための例示的なプロセス２００を示す。プロセス２００Ａは、ブロック２０２〜２１６の１つまたは複数により示されるさまざまな操作、機能、またはアクションを含むことができる。プロセス２００Ａは、ブロック２０２（命令を受信する）において開始することができ、ここでコントローラ１０６は、メッセージ１１４の１つのようなメッセージをソリッドステートドライブ１０４に書き込む命令を受信するように構成されてもよい。メッセージは、ソリッドステートドライブ１０４に格納されうるデータの任意の適切な集合体を含むことができる。一部の実施形態において、メッセージは、２進値の列ベクトルであってもよい。サーバコンピュータ１０２のようなコンピュータは、コントローラ１０６に命令を提供することができる。ブロック２０２の後には、ブロック２０４が続いてもよい。
【００１７】
ブロック２０４（ソリッドステートドライブのブロックを選択する）において、コントローラ１０６は、ブロック１０８の１つのようなブロックを、ソリッドステートドライブ１０４から選択するように構成されてもよい。ブロックは、任意の適切な方策に従って選択されてもよい。１つの例において、ブロックは、事前定義の順序に従って選択されてもよい。もう１つの例において、ブロックは、事前定義のパターンに従って選択されてもよい。さらにもう１つの例において、ブロックは、ランダムに、または疑似ランダムに選択されてもよい。ブロック２０４の後には、ブロック２０６が続いてもよい。
【００１８】
ブロック２０６（マッピング規則を取り出す）において、コントローラ１０６は、マッピング規則１１２の１つのようなマッピング規則を取り出すように構成されてもよい。マッピング規則は、選択されたブロックの状態に基づいて選択されてもよい。一部の実施形態において、選択されたブロックへの情報記録の各ラウンドは、異なるマッピング規則１１２に対応することができる（たとえば、Ｎ個のマッピング規則が情報記録のＮ個のラウンドに対応することができる）。いくつかのその他の実施形態において、選択されたブロックへの情報記録の各ラウンドは、１つまたは複数のマッピング規則１１２に対応することができる（たとえば、単一のマッピング規則が情報記録のＮ個のラウンドに対応することができる）。情報記録の各ラウンドは、消去操作を伴わない連続する書き込み操作を表すことができる。たとえば、第１のマッピング規則１１２Ａは、選択されたブロックが情報記録の第１のラウンド中に新たに消去される場合に、選択されてもよい。第２のマッピング規則１１２Ｂは、選択されたブロックが情報記録の第２のラウンド中に１回書き込まれた後に、選択されてもよい。Ｎ番目のマッピング規則１１２Ｎは、選択されたブロックが情報記録のＮ番目のラウンド中にＮ−１回書き込まれた後に、選択されてもよい。
【００１９】
いくつかの実施形態において、各マッピング規則１１２は、次のシンドロームコーディング式
【００２０】
【数１】
0005468184.tif 000002
を満たすように適合された行列Ηを定義することができる。ただし
【００２１】
【数２】
0005468184.tif 000003
はコードワードを表し、
【００２２】
【数３】
0005468184.tif 000004
はメッセージを表し、「ｍｏｄ」はモジュロ演算を表す。一部の実施形態において、各マッピング規則１１２は、異なる行列を定義することができる。たとえば、第１のマッピング規則１１２Ａは第１の行列を使用することができ、第２マッピング規則１１２Ｂは第２の行列を使用することができ、Ｎ番目のマッピング規則１１２ＮはＮ番目の行列を使用することができる。一部の実施態様において、マッピング規則１１２は、１つまたは複数の行列を共有することができる。コードワード
【００２３】
【数４】
0005468184.tif 000005
は、２進ストリングを表すことができる。１つまたは複数のコードワードは、任意の所与のメッセージについてシンドロームコーディング式を満たすことができる。 
【００２４】
いくつかの実施形態において、単一のマッピング規則１１２は、誤り訂正ベースのマッピング規則に対応することができる。誤り訂正ベースのマッピング規則は、さまざまな低密度パリティチェックコード、および低密度生成行列コードの符号化および復号化プロセスを使用することができる。誤り訂正ベースのマッピング規則はまた、結合低密度パリティチェックコードおよび低密度生成行列コードの符号化および復号プロセスを使用することができる。単一のマッピング規則１１２は、情報記録の複数のラウンドに使用されてもよい。単一のマッピング規則１１２は、複数のコードワードに対応することができる。この場合、適用可能なコードワードは、低電圧レベルコストの制約に従って、複数のコードワードから選択されてもよい。ブロック２０６の後には、ブロック２０８が続いてもよい。
【００２５】
ブロック２０８（１つまたは複数のコードワードを識別する）において、コントローラ１０６は、メッセージにマッピングする１つまたは複数のコードワードを識別するように構成されてもよい。コードワードは、メッセージの符号化を表すことができる。いくつかの実施形態において、コントローラ１０６は、上記で説明されているシンドロームコーディング式を適用することによってコードワードを決定することができる。ブロック２０８の後には、ブロック２１０が続いてもよい。
【００２６】
ブロック２１０（適用可能なコードワードが存在するかどうか決定する）において、コントローラ１０６は、識別されたコードワードが、選択されたブロックに関して制約を満たす適用可能なコードワードを含むかどうかを決定するように構成されてもよい。いくつかの実施形態において、制約は、低電圧レベルコストの制約であってもよい。低電圧レベルコストの制約は、書き込み操作がブロック内の合計電圧レベル低下を最小化することを指定することができる。すなわち、低電圧レベルコストの制約は、書き込み操作前の以前の合計電圧レベルと、書き込み操作後の現在の合計電圧レベルとの最小差に対応することができる。いくつかのその他の実施形態において、制約は、フリップダウンの制約であってもよい。フリップダウンの制約は、書き込み操作が選択されたブロック内のセルの電力レベルを維持または低下させることを指定することができる。
【００２７】
たとえば、選択されたブロックは、［１、１、０、０］と構成されてもよい。すなわち、選択されたブロックは４つのセルを含むことができる。第１および第２のセルは、２進数１を表す高電圧レベルで構成されてもよい。第３および第４のセルは、２進数ゼロを表す低電圧レベルで構成されてもよい。所与のメッセージに対応するいくつかの識別されたコードワードは、［１、０、１、０］ｔ、［１、１、１、１］ｔ、および［１、０、０、０］ｔを含むことができる。上付き文字ｔは、転置行列を表すことができる。この例において、第１のコードワード［１、０、１、０］ｔは、選択されたブロック内の第３のセルが現在低電圧レベルであり、第１のコードワードを格納するために高電圧レベルに「フリップアップ」することができないので、フリップダウンの制約を満たすことができない場合がある。同様に、第２のコードワード［１、１、１、１］ｔは、選択されたブロック内の第３および第４のセルが現在低電圧レベルであり、第２のコードワードを格納するために高電圧レベルに「フリップアップ」することができないので、フリップダウンの制約を満たすことができない場合がある。第１のコードワードおよび第２のコードワードとは対称的に、第３のコードワード［１、０、０、０］ｔは、選択されたブロック内の各セルが、第３のコードワードを格納するためにその電圧レベルを維持するかまたは低下させるので、フリップダウンの制約を満たすことができる。
【００２８】
コントローラ１０６が、適用可能なコードワードは識別されたコードワード内に存在しないと決定する場合、ブロック２１０の後にはブロック２１６が続いてもよい。コントローラ１０６が、適用可能なコードワードが識別されたコードワード内に存在すると決定する場合、ブロック２１０の後にはブロック２１２が続いてもよい。
【００２９】
ブロック２１２（適用可能なコードワードを選択する）において、コントローラ１０６は、制約を満たす適用可能なコードワードを選択するように構成されてもよい。前の例において、第３のコードワードが選択されたブロックの現在の構成［１、１、０、０］に関してフリップダウンの制約を満たすので、コントローラ１０６は第３のコードワード［１、０、０、０］ｔを選択することができる。 
【００３０】
いくつかの実施形態において、コントローラ１０６は、必要に応じて、低電圧レベルコストの制約を満たすために、適用可能なコードワードを反転させるように構成されてもよい。低電圧レベルコストの制約は、適用可能なコードワードが可能な限り少ない数のセルの電圧レベルを低下させるべきであると指定することができる。たとえば、選択されたブロックは、［１、１、１、１］と構成されてもよい。所与のメッセージに対応する適用可能なコードワードは、［１、０、０、０］ｔであってもよい。コントローラ１０６が、適用可能なコードワードを選択されたブロックにそのまま書き込む場合、選択されたブロックの４つのセルのうちの３つの電圧レベルは低下してもよい。
【００３１】
この場合、コントローラ１０６は、適用可能なコードワードを、［１、０、０、０］ｔから［０、１、１、１］ｔに反転させるように構成されてもよい。このようにして、コントローラ１０６が、反転された適用可能なコードワードを選択されたブロックに書き込む場合、選択されたブロックの４つのセルのうちの１つだけの電圧レベルが低下してもよい。コントローラ１０６が、反転された適用可能なコードワードを選択されたブロックから読み取る場合、コントローラ１０６は、復号化に先立って、反転された適用可能なコードワードを適用可能なコードワードに変換して戻すように構成されてもよい。ブロック２１２の後には、ブロック２１４が続いてもよい。
【００３２】
ブロック２１４（適用可能なコードワードを書き込む）において、コントローラ１０６は、選択された適用可能なコードワードを、ソリッドステートドライブ１０４の選択されたブロックに書き込むように構成されてもよい。選択された適用可能なコードワードをソリッドステートドライブ１０４の選択されたブロックに書き込むことにより、コントローラ１０６は、選択されたブロックを１つの状態から別の状態に変化させることができる。前の例において、選択されたブロックは最初に、［１、１、０、０］と構成されてもよい。コントローラ１０６が、第３のコードワード［１、０、０、０］ｔを選択されたブロックに書き込む場合、コントローラ１０６は、選択されたブロックを［１、１、０、０］という現在の構成から［１、０、０、０］という新しい構成に変化させることができる。ブロック２１４の後、プロセス２００Ａは、（たとえば、定期的に、継続的に、または随時要求に応じて）繰り返すか、または終了することができる。
【００３３】
ブロック２１６（誤り回復手順を実行する）において、コントローラ１０６が適用可能なコードワードはブロック２１０に存在しないと決定する場合、コントローラ１０６は、誤り回復手順を実行するように構成されてもよい。誤り回復手順のいくつかの実施形態において、コントローラ１０６は、選択されたブロックに消去操作を実行するように構成されてもよい。選択されたブロックに消去操作を実行することにより、コントローラ１０６は、選択されたブロック内の各セルを最高電圧レベルに戻すように構成されてもよい。誤り回復手順のいくつかのその他の実施形態において、コントローラ１０６は、ソリッドステートドライブ１０４内の別のブロックを選択することができる。コントローラ１０６が誤り回復手順を実行する場合、ブロック２１６の後には、ブロック２０６が続いてもよい。
【００３４】
これ以降、図２Ｂを参照すると、流れ図は、本明細書において説明される少なくともいくつかの実施形態による、符号化されたメッセージを復号するための例示的なプロセス２００を示す。プロセス２００Ｂは、ブロック２２２〜２２６の１つまたは複数により示されるさまざまな操作、機能、またはアクションを含むことができる。プロセス２００Ｂは、ブロック２２２（コードワードを読み取る）において開始することができ、ここでコントローラ１０６は、ブロック１０８の１つのようなブロックからコードワードを読み取るように構成されてもよい。ブロック２２２の後には、ブロック２２４が続いてもよい。
【００３５】
ブロック２２４（現在のマッピング規則を取り出す）において、コントローラ１０６は、読み取られたブロックに関連付けられている現在のマッピング規則を取り出すように構成されてもよい。上記で説明されているように、読み取られたブロックに関連付けられている現在のマッピング規則は、ブロックの現在の状態によって異なっていてもよい。いくつかの実施形態において、読み取られたブロックに関連付けられている現在のマッピング規則は、情報記録の現在のラウンドに対応することができる。ブロック２２４の後には、ブロック２２６が続いてもよい。
【００３６】
ブロック２２６（メッセージを識別する）において、コントローラ１０６は、現在のマッピング規則に従って、取り出されたコードワードに対応するメッセージを識別するように構成されてもよい。ブロック２２６の後、プロセス２００Ｂは、（たとえば、定期的に、継続的に、または随時要求に応じて）繰り返すか、または終了することができる。
【００３７】
これ以降、図３Ａ〜３Ｃ、図４Ａ〜４Ｃ、および図５Ａ〜５Ｃを参照すると、マッピング規則の例示的な実施態様は、本明細書において説明される少なくともいくつかの実施形態によるいくつかの実施例として示される。図３Ａ〜３Ｃ、図４Ａ〜４Ｃ、および図５Ａ〜５Ｃに示される例において、例示的なマッピング規則は、上記で説明されているように、シンドロームコーディング式
【００３８】
【数５】
0005468184.tif 000006
に対応することができる。図３Ａ〜３Ｃは、マッピング規則への入力として適合された行列Η１、Η２、Η３のいくつかの具体的な例を示す。図４Ａ〜４Ｃは、ソリッドステートドライブ１０４に書き込まれうるメッセージ
【００３９】
【数６】
0005468184.tif 000007
のいくつかの具体的な例を示す。図５Ａ〜５Ｃは、それぞれ行列Η１、Η２、Η３およびメッセージ
【００４０】
【数７】
0005468184.tif 000008
に従ってマッピング規則を満たすように適合されたコードワード
【００４１】
【数８】
0005468184.tif 000009
のいくつかの具体的な例を示す。
【００４２】
図３Ａは、情報記録の第１のラウンドに使用されうる第１の行列３０２を示す。図４Ａは、第１のメッセージ４０２を示す。図５Ａは、コードワード５０２を示す。具体的な例において、コントローラ１０６は、第１のメッセージ４０２を、ソリッドステートドライブ１０４内の、第１のブロック１０８Ａのようなブロックに書き込むよう指示する命令を受信することができる。情報記録の第１のラウンドに先立って、第１のブロック１０８Ａは、新たに消去されたブロックとして開始することができる。たとえば、第１のブロック１０８Ａ内の各セル１１０は、２進数１を表す最高電圧レベルに構成されてもよい。第１のブロック１０８Ａは、情報記録の第１のラウンドに先立って、［１、１、１、１］と構成されてもよい。
【００４３】
コントローラ１０６から第１のメッセージ４０２を第１のブロック１０８Ａに書き込むよう指示する命令を受信すると、コントローラ１０６は、式
【００４４】
【数９】
0005468184.tif 000010
に対応する第１のマッピング規則を取り出すことができる。コントローラ１０６は、式を満たすコードワード
【００４５】
【数１０】
0005468184.tif 000011
の値を識別するように構成されてもよい。この例において、単一のコードワード５０２は、第１の行列３０２および第１のメッセージ４０２を所与として式を満たすことができる。第１のブロック１０８Ａは新たに消去されるので、コードワード５０２を含む任意の２進ストリングは、フリップダウンの制約を満たすことができる。その結果、コントローラ１０６は、コードワード５０２を第１のブロック１０８Ａに記録するための書き込み操作を実行するように構成されてもよい。この書き込み操作を考慮に入れて、第１のブロック１０８Ａは、［１、１、１、１］という現在の構成から［１、１、０、０］という新しい構成に変えられてもよい。
【００４６】
コントローラ１０６が第１のブロック１０８Ａを読み取るよう指示する命令を受信すると、コントローラ１０６は、符号化されたメッセージ［１、１、０、０］を第１のブロック１０８から読み取ることができる。符号化されたメッセージ［１、１、０、０］を第１のブロック１０８から読み取ると、コントローラ１０６は、現在のマッピング規則を取り出すことができる。この場合、現在のマッピング規則は、式
【００４７】
【数１１】
0005468184.tif 000012
に対応する第１のマッピング規則であってもよい。コントローラ１０６は、符号化されたメッセージ［１、１、０、０］を、第１のマッピング規則に従って第１のメッセージ４０２に復号して戻すことができる。
【００４８】
図３Ｂは、情報記録の第２のラウンドに使用されうる第２の行列３０４を示す。図４Ｂは、第２のメッセージ４０４を示す。図５Ｂは、複数のコードワード５０４〜５１０を示す。具体的な例において、第１のメッセージ４０２が古くなることもあり、コントローラ１０６は第２のメッセージ４０４を第１のブロック１０８Ａに書き込むよう指示する後続の命令を受信することができる。情報記録の第１のラウンドの結果の時点において、第１のブロック１０８Ａは、情報記録の第２のラウンドに先立って［１、１、０、０］と構成されてもよい。
【００４９】
コントローラ１０６から第２のメッセージ４０４を第１のブロック１０８Ａに書き込むよう指示する命令を受信すると、コントローラ１０６は、式
【００５０】
【数１２】
0005468184.tif 000013
に対応する第２の規則を取り出すことができる。コントローラ１０６は、式を満たすコードワード
【００５１】
【数１３】
0005468184.tif 000014
の値を識別するように構成されてもよい。この例において、複数のコードワード５０４〜５１０は、第２の行列３０４および第２のメッセージ４０４を所与として式を満たすことができる。しかし、コードワード５０４、５０６、５１０は、第１のブロック１０８Ａの現在の構成を所与としてフリップダウンの制約を満足しないこともある。すなわち、コードワード５０４、５０６、５１０の各々は、セル１１０のうちの少なくとも１つの電圧レベルを不適切に増大させることに関与する場合がある。コードワード５０８は、フリップダウンの制約を満たすことができる。その結果、コントローラ１０６は、コードワード５０８を第１のブロック１０８Ａに記録するための書き込み操作を実行するように構成されてもよい。この書き込み操作を考慮に入れて、第１のブロック１０８Ａは、［１、１、０、０］という現在の構成から［１、０、０、０］という新しい構成に変えられてもよい。
【００５２】
コントローラ１０６が第１のブロック１０８Ａを読み取るよう指示する命令を受信すると、コントローラ１０６は、符号化されたメッセージ［１、０、０、０］を第１のブロック１０８から読み取ることができる。符号化されたメッセージ［１、１、０、０］を第１のブロック１０８から読み取ると、コントローラ１０６は、現在のマッピング規則を取り出すことができる。この場合、現在のマッピング規則は、式
【００５３】
【数１４】
0005468184.tif 000015
に対応する第２のマッピング規則であってもよい。コントローラ１０６は、符号化されたメッセージ［１、０、０、０］を、第２のマッピング規則に従って第２のメッセージ４０４に復号して戻すことができる。
【００５４】
図３Ｃは、情報記録の第３のラウンドに使用されうる第３の行列３０６を示す。図４Ｃは、第３のメッセージ４０６を示す。図５Ｃは、複数のコードワード５１２〜５２６を示す。具体的な例において、第２のメッセージ４０４が古くなることもあり、コントローラ１０６は第３のメッセージ４０６を第１のブロック１０８Ａに書き込むよう指示する後続の命令を受信することができる。情報記録の第２のラウンドの結果の時点において、第１のブロック１０８Ａは、情報記録の第３のラウンドに先立って［１、０、０、０］と構成されてもよい。
【００５５】
コントローラ１０６から第３のメッセージ４０６を第１のブロック１０８Ａに書き込むよう指示する命令を受信すると、コントローラ１０６は、式
【００５６】
【数１５】
0005468184.tif 000016
に対応する第３の規則を取り出すことができる。コントローラ１０６は、式を満たすコードワード
【００５７】
【数１６】
0005468184.tif 000017
の値を識別するように構成されてもよい。この例において、複数のコードワード５１２〜５２６は、第３の行列３０６および第３のメッセージ４０６を所与として式を満たすことができる。しかし、コードワード５１２〜５１８および５２２〜５２６は、第１のブロック１０８Ａの現在の構成を所与としてフリップダウンの制約を満足しないこともある。すなわち、コードワード５１２〜５１８および５２２〜５２６の各々は、セル１１０のうちの少なくとも１つの電圧レベルを不適切に増大させることに関与する場合がある。コードワード５２０は、フリップダウンの制約を満たすことができる。その結果、コントローラ１０６は、コードワード５０８を第１のブロック１０８Ａに記録するための書き込み操作を実行するように構成されてもよい。この書き込み操作を考慮に入れて、第１のブロック１０８Ａは、引き続き［１、０、０、０］と構成されたままであってもよい。
【００５８】
コントローラ１０６が第１のブロック１０８Ａを読み取るよう指示する命令を受信すると、コントローラ１０６は、符号化されたメッセージ［１、０、０、０］を第１のブロック１０８から読み取ることができる。符号化されたメッセージ［１、１、０、０］を第１のブロック１０８から読み取ると、コントローラ１０６は、現在のマッピング規則を取り出すことができる。この場合、現在のマッピング規則は、式
【００５９】
【数１７】
0005468184.tif 000018
に対応する第３のマッピング規則であってもよい。コントローラ１０６は、符号化されたメッセージ［１、０、０、０］を、第３のマッピング規則に従って第３のメッセージ４０６に復号して戻すことができる。
【００６０】
これ以降、図６Ａを参照すると、機能ブロック図は、本明細書において説明される少なくともいくつかの実施形態による、メッセージを符号化するための例示的な操作環境６００Ａを示す。操作環境６００Ａは、位数４のガロア体（Galois field）（「ＧＦ（４）」）６０２における低密度パリティチェック（「ＬＤＰＣ：ｌｏｗ−ｄｅｎｓｉｔｙ  ｐａｒｉｔｙ−ｃｈｅｃｋ」）コード６０２、疎マッピングモジュール６０４、ＧＦ（４）における低密度生成行列（「ＬＤＧＭ：ｌｏｗ−ｄｅｎｓｉｔｙ  ｇｅｎｅｒａｔｏｒ−ｍａｔｒｉｘ」）コード６０６、マッピングモジュール６０８、およびコードワード生成モジュール６１０を含むことができる。
【００６１】
ＬＤＰＣコード６０２は、メッセージ６１２を１つまたは複数のＬＤＰＣコードワード６１４に符号化することができる。ＬＤＰＣコードワード６１４は、有限体ＧＦ（４）の記号のストリングとして表されてもよい。ＬＤＰＣコード６０２は、行列式
【００６２】
【数１８】
0005468184.tif 000019
によって定義されてもよい。ＬＤＰＣコード６０２によって符号化されたコードワードは、上記の行列式を満たすベクトル
【００６３】
【数１９】
0005468184.tif 000020
であってもよく、ここでΗは固定疎行列であってもよく、Ηおよび
【００６４】
【数２０】
0005468184.tif 000021
の要素はＧＦ（４）の記号であってもよく、乗算および加算はＧＦ（４）における有限体乗算および加算であってもよい。
【００６５】
疎マッピングモジュール６０４は、ＬＤＰＣコード６０２によって符号化された各ＬＤＰＣコードワード６１４を疎２進ストリング６１６にマッピングすることができる。疎２進ストリング６１６は、ゼロ（複数可）および１（複数可）のストリングであってもよく、ゼロの数は１よりも多い。たとえば、疎マッピングモジュール６０４は、有限体ＧＦ（４）の４つの記号を、それぞれ、疎ビットストリング１０００、０１００、００１０、および０００１にマッピングすることができる。疎マッピングモジュール６０４は、ＧＦ（４）の記号のストリングを、個々の各記号に対応する疎ストリングの連結にマッピングすることができる。
【００６６】
ＬＤＧＭコード６０６は、疎２進ストリング６１６およびソリッドステートドライブのブロックの現在の状態６２０に基づいて１つまたは複数のＬＤＧＭコードワード６１８を生成することができる。各ＬＤＰＣコードワード６１８は、ＧＦ（４）記号のストリングとして表されてもよい。ＬＤＧＭコード６０６は、行列式
【００６７】
【数２１】
0005468184.tif 000022
によって定義されてもよい。ＬＤＧＭコード６０６によって符号化されたＬＤＧＭコードワードはベクトル
【００６８】
【数２２】
0005468184.tif 000023
であってもよく、ここで
【００６９】
【数２３】
0005468184.tif 000024
および
【００７０】
【数２４】
0005468184.tif 000025
は上記の行列式を満たす２つのベクトルであってもよく、Ｇは固定疎行列であってもよく、要素
【００７１】
【数２５】
0005468184.tif 000026
は有限体ＧＦ（４）の記号であってもよく、乗算および加算はＧＦ（４）における有限体乗算であってもよい。２つ以上のＬＤＧＭコードワード６１８が生成される場合、適用可能なＬＤＧＭコードワード６１８が低電圧レベルコストの制約に従って選択されてもよい。
【００７２】
マッピングモジュール６０８は、ＬＤＧＭコードワード６１８を、状態適応ストリング６２２として具現された整数のストリングにマッピングすることができる。各整数は、各々が異なる電圧レベルに対応するビット値に対応することができる。たとえば、ソリッドステートドライブ内の各セルが４つの電圧の１つで構成されうる場合、整数０、１、２、３はそれぞれ、第１、第２、第３、および第４の電圧レベルに対応することができる。コードワード生成モジュール６１０は、状態適応ストリング６２２および疎２進ストリング６１６を合計することによってコードワード６２４を生成することができる。
【００７３】
メッセージを符号化するための例示のプロセスフローは、以下のように説明されてもよい。ＬＤＰＣコード６０２は、メッセージ６１２を受信することができる。ＬＤＰＣコード６０２は、メッセージ６１２をＬＤＰＣコードワード６１４に符号化することができる。疎マッピングモジュール６０４は、ＬＰＤＣコードワード６１４を、１を２５％、およびゼロを７５％含む、疎２進ストリング６１６にマッピングすることができる。ＬＤＧＭコード６０６は、ソリッドステートドライブ内のブロックの現在の状態（すなわち、構成）６２０を観察して、疎２進ストリング６１６および現在の状態６２０に基づいてＬＤＧＭコードワード６１８を生成することができる。マッピングモジュール６０８は、ＬＤＧＭコードワード６１８を、状態適応ストリング６２２にマッピングすることができる。コードワード生成モジュール６１０によって生成された結果のコードワード６２４は、４を法として、疎２進ストリング６１６と状態適応ストリング６２２との和と等しくてもよい。
【００７４】
これ以降、図６Ｂを参照すると、機能ブロック図は、本明細書において説明される少なくともいくつかの実施形態による、コードワードを復号するための例示的な操作環境６００Ｂを示す。操作環境６００Ｂは、図６Ａに関して上記で説明されているように、位数４のガロア体（「ＧＦ（４）」）６０２における低密度パリティチェック（「ＬＤＰＣ」）コード６０２、疎マッピングモジュール６０４、ＧＦ（４）における低密度生成行列（「ＬＤＧＭ」）コード６０６、マッピングモジュール６０８、およびコードワード生成モジュール６１０を含むことができる。操作環境６００Ｂは、メッセージ復号モジュール６２６をさらに含むことができる。
【００７５】
コードワードを復号するための例示のプロセスフローは、以下のように説明されてもよい。ＬＤＧＭコード６０６および／またはマッピングモジュール６０８は、ソリッドステートドライブのブロックからコードワード６２４を取り出すことができる。コードワード６２４は、４を法として、疎２進ストリング６１６と状態適応ストリング６２２との和と等しくてもよく、コードワード６２４は、２５％の記号がフリップされた状態適応ストリング６２２の雑音破損バージョンとみなされてもよい。マッピングモジュール６０８およびＬＤＧＭコード６０６は、さまざまな誤り訂正技術を使用して、それぞれ、状態適応ストリング６２２およびＬＤＧＭコードワード６１８を回復することができる。メッセージ復号モジュール６２６は、ＬＤＧＭコードワード６１８から状態適応ストリング６２２を減算して、疎２進ストリング６１６を得ることができる。次いで、疎マッピングモジュール６０４は、疎２進ストリング６１６をＬＤＰＣコードワード６１４にマッピングすることができる。ＬＤＰＣコード６０２は、ＬＤＰＣコードワード６１４からメッセージ６１２を復号することができる。
【００７６】
図７は、本明細書において提示される少なくともいくつかの実施形態を実施することができる例示のコンピューティングシステムの例示的なコンピュータハードウェアアーキテクチャを示すコンピュータアーキテクチャ図である。図７は、プロセッサ７１０、メモリ７２０、および１つまたは複数のドライブ７３０を含むコンピュータ７００を含む。コンピュータ７００は、標準的なコンピュータシステム、組み込み型制御コンピュータ、ラップトップコンピュータまたはサーバコンピュータ、モバイルデバイス、セットトップボックス、キオスク、車両情報システム、携帯電話、カスタマイズマシン、またはその他のハードウェアプラットフォームとして実施されてもよい。
【００７７】
ドライブ７３０およびその関連するコンピュータストレージ媒体は、コンピュータ７００に、コンピュータ可読命令、データ構造体、プログラムモジュール、およびその他のデータのストレージを提供する。ドライブ７３０は、オペレーティングシステム７４０、アプリケーションプログラム７５０、プログラムモジュール７６０、およびデータベース７８０を含むことができる。プログラムモジュール７６０は、コントローラ１０６を含むことができる。コントローラ１０６は、図２Ａおよび図２Ｂを参照して上記でさらに詳細に説明されているように、メッセージを符号化するためのプロセス２００Ａおよび／または符号化されたメッセージを復号するためのプロセス２００Ｂを実行するように適合されてもよい。コンピュータ７００は、ユーザがコマンドおよびデータを入力することができるユーザ入力デバイス７９０をさらに含む。入力デバイスは、電子デジタイザ、マイクロフォン、キーボード、および一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイスを含むことができる。その他の入力デバイスは、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナなどを含むことができる。
【００７８】
上記およびその他の入力デバイスは、システムバスに接続されるユーザ入力インターフェースを通じてプロセッサ７１０に接続されてもよいが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（「ＵＳＢ」）のようなその他のインターフェースおよびバス構造によって接続されてもよい。コンピュータ７００のようなコンピュータはまた、出力周辺インターフェース７９４などを通じて接続されうるスピーカのようなその他の周辺出力デバイスを含むこともできる。 
【００７９】
コンピュータ７００は、ネットワークインターフェース７９６に接続されたリモートコンピュータのような、１つまたは複数のコンピュータへの論理接続を使用するネットワーク化された環境において動作することができる。リモートコンピュータは、パーソナルコンピュータ、サーバー、ルーター、ネットワークＰＣ、ピアデバイス、またはその他の共通ネットワークノードであってもよく、上記でコンピュータ７００に関連して説明される要素の多くまたはすべてを含むことができる。ネットワーク環境は、オフィス、企業ワイドエリアネットワーク（「ＷＡＮ」）、ローカルエリアネットワーク（「ＬＡＮ」）、イントラネット、およびインターネットで一般化している。 
【００８０】
ＬＡＮまたはＷＬＡＮネットワーク環境に使用される場合、コンピュータ７００は、ネットワークインターフェース７９６またはアダプタを通じてＬＡＮに接続されてもよい。ＷＡＮネットワーク環境に使用される場合、コンピュータ７００は通常、モデム、もしくはインターネットまたはネットワーク７０８のようなＷＡＮを介して通信を確立するためのその他の手段を含む。ＷＡＮは、インターネット、例示されているネットワーク７０８、さまざまなそれらの他のネットワーク、またはその任意の組み合わせを含むことができる。コンピュータ間の通信リンク、リング、メッシュ、バス、クラウド、またはネットワークを確立するその他の手段が使用されてもよいことが理解されるであろう。 
【００８１】
いくつかの実施形態において、コンピュータ７００は、ネットワーク環境に接続されてもよい。コンピュータ７００は、ドライブ７３０に関連付けられている物理コンピュータ可読ストレージ媒体（複数可）またはその他のストレージデバイスの１つまたは複数の例を含むことができる。システムバスは、プロセッサ７１０が、コンピュータ可読ストレージ媒体との間でコードおよび／またはデータを読み取ることができるようにする。媒体は、半導体、磁性材料、光媒体、電気ストレージ、電気化学ストレージまたは任意の他のそのようなストレージ技術を非限定的に含む任意の適切な技術を使用して実施されるストレージ要素の形態の装置を表すことができる。媒体は、ＲＡＭ、ＲＯＭ、フラッシュ、あるいは揮発性または不揮発性メモリ技術の任意のタイプとして特徴付けられるメモリ７２０に関連付けられているコンポーネントを表すことができる。媒体はまた、ストレージドライブ７３０またはそれ以外として実施される、第２のストレージを表すことができる。ハードドライブの実施態様は、ソリッドステートとして特徴付けられてもよいか、または磁気符号化された情報を格納する回転媒体を含むことができる。
【００８２】
ストレージ媒体は、１つまたは複数のプログラムモジュール７６０を含むことができる。プログラムモジュール７６０は、プロセッサ７１０にロードされ実行されるとき、汎用コンピューティングシステムを特殊用途コンピューティングシステムに変えるソフトウェア命令を含むことができる。この説明全体を通じて詳述されているように、プログラムモジュール７６０は、コンピュータ７００が、本明細書において説明されるコンポーネント、論理フロー、および／またはデータ構造体を使用して全システムまたは操作環境内に関与することができるさまざまなツールまたは技法を提供することができる。 
【００８３】
プロセッサ７１０は、任意の数のトランジスタまたはその他の回路素子で構成されてもよく、これらは個別にまたは集合的に任意の数の状態を呈することができる。さらに具体的には、プロセッサ７１０は、状態機械または有限状態機械として動作することができる。そのような機械は、プログラムモジュール７６０内に含まれる実行可能命令をロードすることにより、第２の機械、または特定の機械に変換されてもよい。これらのコンピュータ実行可能命令は、プロセッサ７１０が状態間をどのように遷移するかを指定し、それによりプロセッサ７１０を構成するトランジスタまたはその他の回路素子を第１の機械から第２の機械に変換することによって、プロセッサ７１０を変換することができる。いずれかの機械の状態はまた、１つまたは複数のユーザ入力デバイス７９０、ネットワークインターフェース７９６、その他の周辺機器、その他のインターフェース、あるいは１人または複数のユーザまたはその他のアクターからの入力を受信することにより変換されてもよい。いずれかの機械はまた、プリンタ、スピーカ、ビデオディスプレイもしくはそれ以外のようなさまざまな出力デバイスのさまざまな状態、または物理的特性を変換することもできる。
【００８４】
プログラムモジュール７６０をエンコードすることはまた、ストレージ媒体の物理的構造を変換することができる。物理的構造の特定の変換は、この説明のさまざまな実施態様において、さまざまな要因に依存する場合がある。そのような要因の例は、ストレージ媒体が１次ストレージまたは２次ストレージとして特徴付けられるかどうかにかかわらず、ストレージ媒体を実施するために使用される技術を含むことができるが、これらに限定されることはない。たとえば、ストレージ媒体が半導体ベースのメモリとして実施される場合、プログラムモジュール７６０は、ソフトウェアがその中でエンコードされると半導体メモリ７２０の物理的状態を変換することができる。たとえば、ソフトウェアは、トランジスタ、コンデンサ、または半導体メモリ７２０を構成するその他の個別回路素子の状態を変換することができる。 
【００８５】
もう１つの例として、ストレージ媒体は、ドライブ７３０のような磁気または光技術を使用して実施されてもよい。そのような実施態様において、プログラムモジュール７６０は、ソフトウェアがその中でエンコードされるとき、磁気または光媒体の物理的状態を変換することができる。これらの変換は、所与の磁気媒体内の特定の場所の磁気特性を変更することを含むことができる。これらの変換はまた、所与の磁気媒体内の特定の場所の物理的特徴または特性を変更して、それらの場所の光学特性を変更することを含むことができる。本発明の説明の範囲および精神を逸脱することなく、物理媒体のさまざまな他の変換が可能であることが理解されよう。
【００８６】
これ以降、図８Ａ〜図８Ｃを参照すると、概略図は、本明細書において構成される少なくともいくつかの実施形態による、コンピューティングデバイス上でコンピュータプロセスを実行するためのコンピュータプログラムを含むコンピュータプログラム製品８００の部分図を示す。例示のコンピュータプログラム製品８００の例示的な実施形態は、８０４Ａの少なくとも１つの命令および／または８０４Ｂの少なくとも１つの命令を含むことができる信号搬送媒体８０２を使用して提供される。図８Ｂに示される命令８０４Ａは、ソリッドステートドライブのブロックを選択するための１つまたは複数の命令であって、ブロックは第１の状態で構成される、命令、ブロックに対応するマッピング規則を受信するための１つまたは複数の命令、制約を受信するための１つまたは複数の命令、メッセージを受信するための１つまたは複数の命令、マッピング規則に従ってメッセージにマッピングする１つまたは複数のコードワードを識別するための１つまたは複数の命令、第１の状態で構成されたブロックに適用される際に制約に従ってコードワード内の適用可能なコードワードを識別するための１つまたは複数の命令、あるいはソリッドステートドライブのブロックに適用可能なコードワードの書き込み操作を実行し、それによりブロックを第１の状態から第２の状態に変化させるための１つまたは複数の命令を含むことができる。
【００８７】
図８Ｃに示される命令８０４Ｂは、ソリッドステートドライブのブロックから適用可能なコードワードを読み取るための１つまたは複数の命令、ブロックに対応するマッピング規則を取り出すための１つまたは複数の命令、あるいはマッピング規則に従ってコードワードにマッピングするメッセージを識別するための命令を含むことができる。１つまたは複数の命令は、たとえば、コンピュータ実行可能および／または論理実施の命令であってもよい。一部の実施形態において、１つまたは複数のコンピュータプログラム製品８００の信号搬送媒体８０２は、コンピュータ可読媒体８０６、記録可能媒体８０８、および／または通信媒体８１０を含むことができる。
【００８８】
本明細書において説明される主題は、コンピュータシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行と併せて実行するプログラムモジュールの一般的コンテキストにおいて提示されているが、当業者であれば、その他の実施態様がその他のタイプのプログラムモジュールと組み合わせて実行されうることを理解するであろう。一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造体、および特定のタスクを実行するかまたは特定の抽象データタイプを実施するその他のタイプの構造体を含む。さらに、当業者であれば、本明細書において説明される主題が、ハンドヘルドデバイス、マルチコアプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家庭用電化製品、マイクロコンピュータ、メインフレームコンピュータなどを含むその他のコンピュータシステム構成で実施されてもよいことを理解するであろう。
【００８９】
本開示は、本出願において説明される特定の実施形態に関して限定されるべきではなく、実施形態はさまざまな態様を例示することを目的としている。当業者には明らかであるように、その精神および範囲を逸脱することなく多くの変更および変形が行われてもよい。本明細書において列挙される方法および装置に加えて、本開示の範囲内の機能的に等価の方法および装置は、上記の説明から当業者には明らかとなるであろう。そのような変更および変形は、添付の特許請求の範囲内に含まれることが意図される。本開示は、添付の特許請求の範囲の条項、ならびにそのような特許請求の範囲が権利を有する等価物の全範囲によってのみ限定されるものとする。本開示は、当然変化することもある特定の方法、試薬、化合物の組成、または生物系に限定されないことを理解されたい。さらに、本明細書において使用される用語は、特定の実施形態を説明することのみを目的としており、限定的であることを意図していないことも理解されたい。
【００９０】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。さまざまな単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００９１】
通常、本明細書において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（たとえば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない（たとえば、「ａ」および／または「ａｎ」は、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（たとえば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、少なくとも２つの記載、または２つ以上の記載を意味する）。さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステ���を含むが、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００９２】
加えて、本開示の特徴または態様がマーカッシュグループに関して説明される場合、それにより本開示はまた、マーカッシュグループの構成要素の任意の個々の構成要素または構成要素のサブグループに関しても説明されることを、当業者であれば理解するであろう。
【００９３】
書面による説明を行うことに関してなど、任意およびすべての目的のため、当業者によって理解されるであろうように、本明細書において開示されるあらゆる範囲はまた、任意およびすべての可能な下位範囲およびその下位範囲の組み合わせを網羅する。任意の一覧される範囲は、同範囲が少なくとも等価の２分の１、３分の１、４分の１、５分の１、１０分の１などに分割されることを十分に説明および可能にするものと容易に理解されてもよい。非限定的な例として、本明細書において説明される各範囲は、下３分の１、中３分の１、および上３分の１などに容易に分解されてもよい。当業者によって理解されるであろうように、「最大（ｕｐ  ｔｏ）」、「少なくとも（ａｔ  ｌｅａｓｔ）」、「よりも大きい（ｇｒｅａｔｅｒ  ｔｈａｎ）」、「よりも小さい（ｌｅｓｓ  ｔｈａｎ）」などのようなすべての表現は、列挙される数を含み、引き続き上記で説明されているような下位範囲に分解されてもよい範囲を示す。最後に、当業者に理解されるであろうように、範囲は個々の構成要素を含む。したがって、たとえば、１個〜３個の要素を有するグループは、１個、２個、または３個の要素を有するグループと称される。同様に、１個〜５個の要素を有するグループは、１個、２個、３個、４個、または５個の要素を有するグループと称される、というようになる。
【００９４】
本明細書においてさまざまな態様および実施形態が開示されたが、当業者にはその他の態様および実施形態が明らかとなろう。本明細書において開示されるさまざまな態様および実施形態は、説明のためのものであって、限定的であることを意図しておらず、真の範囲および精神は後段の特許請求の範囲により示される。
【図１】
0005468184.tif 000027
【図２Ａ】
0005468184.tif 000028
【図２Ｂ】
0005468184.tif 000029
【図３Ａ】
0005468184.tif 000030
【図３Ｂ】
0005468184.tif 000031
【図３Ｃ】
0005468184.tif 000032
【図４Ａ】
0005468184.tif 000033
【図４Ｂ】
0005468184.tif 000034
【図４Ｃ】
0005468184.tif 000035
【図５Ａ】
0005468184.tif 000036
【図５Ｂ】
0005468184.tif 000037
【図５Ｃ】
0005468184.tif 000038
【図６Ａ】
0005468184.tif 000039
【図６Ｂ】
0005468184.tif 000040
【図７】
0005468184.tif 000041
【図８Ａ】
0005468184.tif 000042
【図８Ｂ】
0005468184.tif 000043
【図８Ｃ】
0005468184.tif 000044