(57)【特許請求の範囲】
【請求項１】
メモリを動作させるための方法であって、
複数の論理ページのデータを複数のコードワードとしてエラーコーディングすることと、
前記複数のコードワードを複数の物理ページのメモリに書き込むことであって、前記複数の論理ページの個数は前記複数の物理ページの個数と異なる、ことと、を含み、
前記複数の論理ページのデータを前記複数のコードワードとしてエラーコーディングすることは、非整数個の論理ページのデータを整数個のコードワードとしてエラーコーディングすることを含む、方法。
【請求項２】
前記複数のコードワードの個数は、前記複数の論理ページの個数および前記複数の物理ページの個数と異なる、請求項１に記載の方法。
【請求項３】
前記複数のコードワードを前記複数の物理ページのメモリに書き込むことは、
前記整数個のコードワードを整数個の物理ページのメモリに書き込むことを含む、請求項１に記載の方法。
【請求項４】
前記複数の論理ページのデータをエラーコーディングすることは、
物理ページメタデータと第１論理ページのデータの第１部分とを第１コードワードとしてエラーコーディングすることと、
前記第１論理ページのデータの第２部分を第２コードワードとしてエラーコーディングすることと、
をさらに含み、
前記複数のコードワードを書き込むことは、前記第１コードワードおよび前記第２コードワードを第１物理ページのメモリに書き込むことをさらに含む、
請求項１〜請求項３のうちのいずれか１つに記載の方法。
【請求項５】
前記複数の論理ページのデータをエラーコーディングすることは、
前記第１論理ページのデータの第３部分と第２論理ページのデータの第１部分とを第３コードワードとしてエラーコーディングすることと、
前記第２論理ページのデータの第２部分を第４コードワードとしてエラーコーディングすることと、をさらに含み、
前記複数のコードワードを書き込むことは、前記第３コードワードおよび前記第４コードワードを前記第１物理ページのメモリに書き込むことをさらに含む、
請求項４に記載の方法。
【請求項６】
前記複数の論理ページのデータをエラーコーディングすることは、
前記物理ページメタデータと、前記第２論理ページのデータの第３部分と、第３論理ページのデータの第１部分と、を第５コードワードとしてエラーコーディングすることと、
前記第５コードワードを第２物理ページのメモリに書き込むことと、
をさらに含む、請求項５に記載の方法。
【請求項７】
エラーコーディングすることは、前記複数の論理ページのデータを前記複数のコードワードとしてエラーコーディングするために、メモリ装置のコントローラを用いることを含む、請求項１〜請求項３のうちのいずれか１つに記載の方法。
【請求項８】
複数のメモリデバイスと、
前記複数のメモリデバイスに連結され且つ、複数の論理ページのデータを複数のコードワードへとエラーコーディングすること、および
前記複数のコードワードを複数の物理ページのメモリに書き込むことであって、前記複数の論理ページの個数は前記複数の物理ページの個数と異なる、こと、
を行うよう構成されたコントローラと、を含み、
前記コントローラが、前記複数の論理ページのデータを前記複数のコードワードへとエラーコーディングするよう構成されることは、前記コントローラが、非整数個の論理ページのデータを整数個のコードワードとしてエラーコーディングするよう構成されることを
さらに含む、装置。
【請求項９】
前記複数のコードワードの個数は、前記複数の論理ページの個数および前記複数の物理ページの個数と異なる、請求項８に記載の装置。
【請求項１０】
前記コントローラが、前記複数のコードワードを前記複数の物理ページのメモリに書き込むよう構成されることは、前記コントローラが、前記整数個のコードワードを整数個の物理ページのメモリに書き込むよう構成されることをさらに含む、請求項８に記載の装置。
【請求項１１】
前記コントローラが、前記複数の論理ページのデータをエラーコーディングするよう構成されることは、
前記コントローラが、
物理ページメタデータと第１論理ページのデータの第１部分とを第１コードワードへとエラーコーディングすることと、
前記第１論理ページのデータの第２部分を第２コードワードへとエラーコーディングすることと、
を行うよう構成されることをさらに含み、
前記コントローラが前記複数のコードワードを書き込むよう構成されることは、前記コントローラが前記第１コードワードおよび前記第２コードワードを第１物理ページのメモリに書き込むよう構成されることをさらに含む、
請求項８に記載の装置。
【請求項１２】
前記コントローラが、前記複数の論理ページのデータをエラーコーディングするよう構成されることは、
前記コントローラが、
前記第１論理ページのデータの第３部分と第２論理ページのデータの第１部分とを第３コードワードへとエラーコーディングすることと、
前記第２論理ページのデータの第２部分を第４コードワードへとエラーコーディングすることと、
を行うよう構成されることをさらに含み、
前記コントローラが前記複数のコードワードを書き込むよう構成されることは、前記コントローラが前記第３コードワードおよび前記第４コードワードを前記第１物理ページのメモリに書き込むよう構成されることをさらに含む、
請求項１１に記載の装置。
【請求項１３】
前記コントローラが、前記複数の論理ページのデータをエラーコーディングするよう構成されることは、
前記コントローラが、
前記物理ページメタデータと、前記第２論理ページのデータの第３部分と、第３論理ページのデータの第１部分と、を第５コードワードへとエラーコーディングすることと、
前記第５コードワードを第２物理ページのメモリに書き込むことと、
を行うよう構成されることをさらに含む、請求項１２に記載の装置。
【請求項１４】
メモリを動作させるための方法であって、
互いに異なるデータを含む複数の論理ページのデータを複数のコードワードとしてエラーコーディングすることと、
前記複数のコードワードを複数の物理ページのメモリに書き込むことであって、前記複数の論理ページの個数は前記複数の物理ページの個数と異なる、ことと、を含み、
前記複数のコードワードの個数は、前記複数の論理ページの個数及び前記複数の物理ページの個数と異なる、方法。
【請求項１５】
前記複数の論理ページの個数が、前記複数の物理ページの個数よりも多く、前記複数のコードワードの個数よりも少ない、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、全般的には、半導体メモリおよび方法に関し、さらに詳細には、物理ページ、論理ページ、およびコードワードの対応のための装置および方法に関する。
【背景技術】
【０００２】
メモリデバイスは、通常、コンピュータまたは他の電子デバイスにおける内蔵型の半導体、集積回路として提供される。揮発性メモリおよび不揮発性メモリを含む多数の異なる種類のメモリが存在する。揮発性メモリはその情報（例えばデータ、エラー情報、その他）を保持するにあたり電力を必要とし、中でもとりわけランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、および同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）を含む。不揮発性メモリは、格納されたデータを電力非供給時に保持することにより永続的なデータを提供し得、中でもとりわけＮＡＮＤ型フラッシュメモリ、ＮＯＲ型フラッシュメモリ、リードオンリーメモリ（ＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、および可変抵抗メモリ（例えば相変化ランダムアクセスメモリ（ＰＣＲＡＭ）、抵抗変化型メモリ（ＲＲＡＭ（登録商標））、および磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）など）を含み得る。
【０００３】
メモリデバイスをともに組み合わせることにより、メモリシステムのストレージボリューム（ソリッドステートドライブ（ＳＳＤ）など）が形成され得る。ソリッドステートドライブは、様々なその他の種類の不揮発性メモリおよび揮発性メモリの中でもとりわけ、不揮発性メモリ（例えばＮＡＮＤ型フラッシュメモリおよび／またはＮＯＲ型フラッシュメモリ）を含み得、および／または揮発性メモリ（例えばＤＲＡＭおよびＳＲＡＭ）を含み得る。
【０００４】
ＳＳＤはコンピュータのための主要なストレージボリュームとしてハードディスク装置に取って代わるために用いられ得る。なぜならソリッドステートドライブは、性能、サイズ、重量、堅牢性、作動温度範囲、および電力消費に関してハードドライブに優れ得るためである。例えばＳＳＤは、可動パーツを有さないため、磁気ディスク装置と比較してより優れた性能を有し得る。可動パーツが存在しないことにより、シークタイムの遅延、レイテンシの遅延、および磁気ディスク装置に関連付けられた他の電気機械的な遅延が回避され得る。ＳＳＤ製造業者は不揮発性フラッシュメモリを用いることにより、内部バッテリ供給を使用しないフラッシュＳＳＤを作製し得る。それにより、ＳＳＤはより多くの用途に適したものとなり、よりコンパクトなものとなる。
【０００５】
ＳＳＤは、例えばデータを（例えばメモリデバイスとホストとの間で）転送するための読み出し動作および書き込み動作などのメモリ動作に関連するコマンドをホストから受け取り得る。例えばＳＳＤに関連する処理能力を増強すること、および／またはＳＳＤの格納容量を増加すること、は有益であり得る。
【図面の簡単な説明】
【０００６】
【図１】本開示のいくつかの実施形態に係る少なくとも１つのメモリシステムを含むコンピューティングシステムの形態における装置のブロック図である。
【図２】本開示のいくつかの実施形態に係るページストライプレイアウトのブロック図である。
【図３】本開示のいくつかの実施形態に係る既知の不良部分を含むページストライプレイアウトのブロック図である。
【図４】本開示のいくつかの実施形態に係る強制ユニットアクセスを含む、または追加的な書き込みデータを含まない、ページストライプレイアウトのブロック図である。
【図５】本開示のいくつかの実施形態に係る論理ページを書き込むためのバッファアロケーションのブロック図である。
【図６】本開示のいくつかの実施形態に係るウェアレベリングのためのバッファアロケーションのブロック図である。
【発明を実施するための形態】
【０００７】
本開示は、物理ページ、論理ページ、およびコードワードの対応のための装置および方法に関する。いくつかの方法は、いくつかの論理ページのデータをいくつかのコードワードとしてエラーコーディングすることと、いくつかのコードワードをいくつかの物理ページのメモリに書き込むことと、を含む。データの論理ページの個数はメモリの物理ページの個数と異なり得る。
【０００８】
ページマッピングに対する先行技術に係るいくつかのアプローチは論理ページのデータと物理ページのメモリとの間の１対１対応を含むものであった。すなわち、１つの論理ページのデータ内のデータ量は１つの物理ページのメモリ内に格納されるデータ量に等しいものであった。対照的に本開示のいくつかの実施形態では、１つの論理ページのデータのサイズ（例えばホスト論理ページサイズ）は、１つの物理ページのメモリのサイズ（例えばＮＡＮＤページサイズ）から分離される。本開示のいくつかの実施形態では、コードワード（例えば誤り訂正符号（ＥＣＣ）コードワード）は１つの物理ページのメモリのサイズには依存し得るが、１つの論理ページのデータのサイズからは独立し得る。したがって異なるホストセクタサイズが任意のページのメモリにマッピングされ得るよう、柔軟なサイズの論理ページのデータが任意のコードワードサイズにわたって提供され得る。
【０００９】
本開示のいくつかの実施形態は、一定のコードワードサイズを保持しつつ、ＥＣＣコードワードに対する可変コードレートを含み得る。したがって本開示のいくつかの実施形態は、（例えば物理ページペイロードサイズにおけるよりもむしろ）コードワードペイロードサイズにおいてバッファメモリを管理し得る。ＲＡＩＮストライプ（例えば柔軟なストライプ長さを含む）の使用可能性は欠陥保護を提供するために保持され得る。ファームウェアは速度を改善するために実行経路から除外され得る。
【００１０】
本開示の以下の詳細な説明において、添付の図面が参照される。なお、添付の図面は本開示の一部を形成するものであり、添付の図面においては１つまたは複数の実施形態が実施され得る１つまたは複数の方法が例示により示される。これらの実施形態は、当業者が本開示の実施形態を実施することが可能となるよう十分詳細に説明される。他の実施形態も利用され得ること、およびプロセス的変更例、電気的変更例、および／または構造的変更例が本開示の範囲から逸脱することなく可能であることが理解されるべきである。特に図面における参照番号に関して本明細書において用いられる「Ｎ」という識別子は、そのように指定された特定の特徴物がいくつか含まれ得ることを示す。本明細書で用いられる「いくつかの」特定物は、１つまたは複数の係る特定物を指し得る（例えばいくつかのメモリデバイスは１つまたは複数のメモリデバイスを指し得る）。
【００１１】
本明細書における図面は、番号付与の習慣にしたがって、最初の桁（単数または複数）は図面番号に対応し、残余の桁は図面における構成要素または構成品を指す。異なる図面の間での同様の構成要素または構成品は同一の桁を使用することにより指定され得る。例えば２２２は図２における要素「２２」を参照し、同様の構成要素が図３では３２２として参照され得る。理解され得るように、本明細書における様々な実施形態において示される構成要素は、本開示のいくつかの追加的な実施形態を提供するために、追加、交換、および／または排除され得る。加えて、理解されるように、これらの図面において提供される構成要素の比率および相対的尺度は本発明の特定の実施形態を示すために用いられたものであり、制限的な意味で解釈されるべきではない。
【００１２】
図１は本開示のいくつかの実施形態に係る少なくとも１つのメモリシステム１０４を含むコンピューティングシステム１００の形態における装置のブロック図である。本明細書で用いるメモリシステム１０４、コントローラ１０８、またはメモリデバイス１１０も、それぞれ「装置」として別個に考えられ得る。メモリシステム１０４は例えばソリッドステートドライブ（ＳＳＤ）であり得、ホストインターフェース１０６、コントローラ１０８（例えばプロセッサおよび／または他の制御回路）、いくつかのメモリデバイス１１０−１、……、１１０−Ｎ（例えばＮＡＮＤ型フラッシュデバイスなどのソリッドステートメモリデバイス）を含み得、係るメモリデバイスはメモリシステム１０４のためのストレージボリュームを提供する。
【００１３】
図１において示すように、コントローラ１０８は複数のチャネルを介してホストインターフェース１０６およびメモリデバイス１１０−１、……、１１０−Ｎに連結され得、メモリシステム１０４とホスト１０２との間でデータを転送するために用いられ得る。インターフェース１０６は標準インターフェースの形態であり得る。例えばメモリシステム１０４がコンピューティングシステム１００内のデータストレージのために用いられる場合、インターフェース１０６は、他のコネクタおよびインターフェースの中でもとりわけ、シリアル・アドバンスド・テクノロジー・アタッチメント（ＳＡＴＡ）、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）、または汎用シリアルバス（ＵＳＢ）であり得る。一方、全般に、インターフェース１０６は、制御信号、アドレス信号、データ信号、および他の信号を、メモリシステム１０４と、インターフェース１０６に対する互換性を有するレセプタを有するホスト１０２と、の間で渡すためのインターフェースを提供し得る。
【００１４】
ホスト１０２は他種類のホストの中でもとりわけパーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、モバイル電話、またはメモリカードリーダなどのホストシステムであり得る。ホスト１０２はシステムマザーボードおよび／またはバックプレーンを含み得、いくつかのメモリアクセスデバイス（例えばいくつかのプロセッサ）を含み得る。
【００１５】
コントローラ１０８は他の動作の中でも、データ読み出し、書き込み、および消去の動作を制御するためにメモリデバイス１１０−１、……、１１０−Ｎと通信し得る。特定的に図示はしないがいくつかの実施形態ではコントローラ１０８は、コントローラ１０８をメモリデバイス１１０−１、……、１１０−Ｎに連結する各チャネルに対して個別的なメモリチャネルコントローラを含み得る。コントローラ１０８は例えば、いくつかのメモリデバイス１１０−１、……、１１０−Ｎへのアクセスを制御するための、および／またはホスト１０２とメモリデバイス１１０−１、……、１１０−Ｎとの間のデータ転送を支援するための、ハードウェアおよび／もしくはファームウェア（例えば１つまたは複数の集積回路など）の形態におけるいくつかの構成品、ならびに／またはソフトウェアを含み得る。
【００１６】
いくつかの実施形態では図１に示すように、コントローラ１０８は、エラーコーディングコンポーネント１１２（例えば誤り訂正符号（ＥＣＣ）エンジンなどのエラー符号器）、バッファリングコンポーネント１１４、マッピングコンポーネント１１６、独立ＮＡＮＤ冗長アレイ（ＲＡＩＮ：ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ＮＡＮＤ）コンポーネント１１８を含み得る。エラーコーディングコンポーネント１１２、バッファリングコンポーネント１１４、マッピングコンポーネント１１６、およびＲＡＩＮコンポーネント１１８のうちのそれぞれは、別個のコンポーネント（例えば特定用途集積回路（ＡＳＩＣ））であってもよく、またはコントローラ１０８内の回路により提供される機能を反映するものであり、必ずしもコントローラ１０８の他の部分から分離した別個の物理的形態を有さなくてもよい。図１ではコントローラ１０８内のコンポーネントとして図示されているが、エラーコーディングコンポーネント１１２、バッファリングコンポーネント１１４、マッピングコンポーネント１１６、およびＲＡＩＮコンポーネント１１８のうちのそれぞれはコントローラ１０８の外部にあってもよく、またはコントローラ１０８の内部に配置されたいくつかのコンポーネントと、コントローラ１０８に外部に配置されたいくつかのコンポーネントと、を有してもよい。例えばバッファリングコンポーネントは、コントローラ１０８上に配置されたいくつかのバッファと、コントローラ１０８の外部に配置されたいくつかのバッファと、を含み得る。
【００１７】
エラーコーディングコンポーネント１１２は、いくつかの論理ページのデータをいくつかのコードワードとしてエラーコーディングするよう構成され得る。例えばエラーコーディングコンポーネント１１２は、本明細書でさらに詳細に説明するように非整数個の論理ページのデータを整数個のコードワードとしてエラーコーディングするよう構成され得る。エラーコーディングコンポーネント１１２は、１つの論理ページのデータおよび非整数個の追加的な論理ページのデータを整数個のコードワードとしてエラーコーディングするよう構成され得る。
【００１８】
コードワードは、ラッパーおよびペイロードを含む合計サイズを有し得る。コードワードペイロードはコードワード内にエンコードされたデータ（例えばユーザデータ）を指し得る。コードワードラッパーは、ユーザデータとともにコードワード内にエンコードされたエラー情報を指し得る。エラーコーディングコンポーネント１１２は、可変コードワードラッパーサイズおよび可変コードワードペイロードサイズをプログラム可能に使用し得る。可変コードワードラッパーおよびペイロードサイズは、ユーザ機能としてプログラム可能（例えばホストインターフェース１０６を介してプログラム可能）であってもよく、または特定用途のために製造後にプログラムされてもよい。例えばコードワードラッパーサイズは、コードワードペイロードに対する誤り訂正の所望量に応じてプログラムされ得る。いくつかの実施形態ではコードワードペイロードサイズは、特定のコードワードラッパーサイズに基づいてプログラムされ得る（例えば、固定のおよび／または整数個のコードワードは、コードワードの合計サイズが固定される一方で、ラッパーおよび／またはペイロードのサイズが可変となるよう、物理ページ内に適合するよう設計される）。合計コードワードサイズのうちでコードワードラッパーが大きいほど、コードワードペイロードに対するエラー保護は大きくなるが、その結果としてコードワードペイロードは小さくなり、したがって、ユーザデータに関するメモリ密度は小さくなる。なぜなら、ユーザデータがより小さい部分に分割され、それぞれの部分には、ユーザデータとともに、より大きいコードワードラッパーが格納されるためである。特定のコードワードラッパーサイズおよび／またはコードワードペイロードサイズがプログラムされると、データは、プログラムされたペイロードサイズを有するコードワードとしてエラーコーディングされ得る。
【００１９】
合計コードワードサイズに対するコードワードペイロードサイズの比率は本明細書ではコードレートとして呼称される。本開示のいくつかの実施形態では、第１論理ページのデータの１部分は第１コードレートを用いて第１コードワードとしてエラーコーディングされ、第２論理ページのデータの１部分は第２コードレートを用いて第２コードワードとしてエラーコーディングされ得る。第１コードワードおよび第２コードワードのサイズは等しくてもよい。したがって第１コードワードのコードワードペイロードサイズは、第２コードワードのコードワードペイロードサイズと異なり得る。いくつかの実施形態ではコードレートはプログラム可能なオプションとして設定され得る。
【００２０】
バッファリングコンポーネント１１４は、（例えば特定の物理バッファが２つ以上の論理バッファセグメントにセグメント化されるよう、）複数の論理バッファセグメントにセグメント化された複数の物理バッファを含み得る。各論理バッファセグメントはコードワードペイロードサイズに対応し得る（例えば各論理バッファセグメントはコードワードペイロードに格納可能な情報量と同一の情報量を格納可能である）。各物理バッファは物理ページサイズに対応し得る（例えば各物理バッファは各物理ページに格納可能な情報量と同一の情報量を格納可能である）。複数の物理バッファのうちのいくつかはコントローラ１０８の外部および／または内部に配置され得る。コントローラ１０８は、論理ページサイズに基づいてホスト１０２と通信するよう、且つ合計コードワードサイズに基づいてメモリデバイス１１０−１、……、１１０−Ｎをバッファ管理するよう、構成され得る。
【００２１】
いくつかの実施形態では、コントローラ１０８は、いくつかの論理ページのデータの１部分を、それぞれがいくつかの論理バッファセグメントのうちのそれぞれのサイズに等しいペイロードサイズを有する、いくつかのコードワードとしてエラーコーディングすることにより、いくつかの論理ページのデータの当該部分をいくつかのコードワードとしてエラーコーディングするよう構成され得る。いくつかのコードワードのペイロードは、物理ページのメモリに書き込まれる前に、いくつかの論理バッファセグメントにバッファされ得る。
【００２２】
いくつかの実施形態では、コントローラ１０８はマッピングコンポーネント１１６を含み得、複数の論理ページのデータを複数の対応する物理ページのメモリにマッピングするよう構成され得る。複数の論理ページのデータのうちの非整数個は、複数の物理ページのメモリのうちのそれぞれにマッピングされ得る。マッピングコンポーネント１１６に関連する追加的な機能については、特に図５を参照して本明細書でより詳細に説明する。
【００２３】
ＲＡＩＮコンポーネント１１８はメモリデバイス１１０、……、１１０−Ｎに格納されたデータを保護することを支援し得る。ＲＡＩＮは、例えば複数のメモリデバイスの間で情報を分割および／または複製するコンピュータ情報格納方式に対する包括的用語である。ＲＡＩＮアレイ内の複数のメモリデバイスは、ユーザおよびコンピュータのオペレーティングシステムに対しては、単一のメモリデバイス（例えばディスク）であるかのように見え得る。ＲＡＩＮは、情報の異なる部分が異なるメモリデバイス（例えばメモリデバイス１１０、……、１１０−Ｎ）上に格納されるよう、ストライプ化（例えば分割化）情報を含み得る。分割データを格納する２つ以上のデバイスの部分はストライプと総称される。対照的にＲＡＩＮはミラーリングも含み得、ミラーリングはデータの重複コピーを２つ以上のデバイス上に格納することを含み得る。例えば、書き込みデータはＮ個のメモリデバイスのうちのＮ−１個にわたりストライプ化され、エラー情報は第Ｎ番目のメモリデバイスに格納され得る。エラー情報（例えばパリティデータ）はＲＡＩＮコンポーネント１１８により（例えばＸＯＲ回路により）計算され、第Ｎ番目のメモリデバイスに書き込まれ得る。ＲＡＩＮコンポーネント１１８は柔軟なストライプ長さを使用し得る。ＲＡＩＮコンポーネント１１８は、複数のメモリデバイス１１０−１、……、１１０−Ｎにわたるストライプ状のデータの書き込みおよび／または読み出しを行うよう構成され得る。例えばコントローラ１０８は複数物理ページのメモリから１つのストライプのデータを読み出すよう構成され得る。ここで複数物理ページのメモリのうちのそれぞれは、それぞれの複数のコードワードを格納する。コントローラ１０８は、複数物理ページのメモリのうちの１つからのそれぞれの複数のコードワードのうちの２つ以上のペイロード部分を組み合わせることにより、１つの論理ページのデータを形成するよう構成され得る。次に論理ページのデータはホストに（例えばいくつかのセクタとして）転送され得る。ＲＡＩＮ動作に関する追加的な詳細については本明細書で特に図２を参照してより詳細に説明する。
【００２４】
メモリデバイス１１０−１、……、１１０−Ｎはいくつかのアレイのメモリセル（例えば不揮発性メモリセル）を含み得る。係るアレイは例えばＮＡＮＤアーキテクチャを有するフラッシュアレイであり得る。しかし実施形態は必ずしも特定種類のメモリアレイまたはアレイアーキテクチャに限定されるわけではない。メモリセルは例えばいくつかの物理ページを含むいくつかのブロックへとグループ化され得る。いくつかのブロックが１つのプレーンのメモリセルに含まれ得、アレイはいくつかのプレーンを含み得る。１例として、メモリデバイスは単位ページあたり８ＫＢ（キロバイト）のユーザデータ、単位ブロックあたり１２８ページのユーザデータ、単位プレーンあたり２０４８ブロック、および単位デバイスあたり１６プレーンを格納するよう構成され得る。
【００２５】
動作中、データは例えば１つの物理ページのデータとして、メモリシステム（例えばシステム１０４のメモリデバイス１１０−１、……、１１０−Ｎ）のメモリデバイスに書き込まれ得、および／または係るメモリデバイスから読み出され得る。そのため、１つの物理ページのデータはメモリシステムのデータ転送サイズとして呼称され得る。データはホスト（例えばホスト１０２など）へと、および／またはホストから、セクタ（例えばホストセクタ）と呼称されるデータセグメントにおいて転送され得る。そのため、１つのセクタのデータはホストのデータ転送サイズと呼称され得る。複数のセクタが１つの論理ページのデータを構成し得る。
【００２６】
１つの物理ページのデータのサイズはしばしばいくつかのバイトのユーザデータのみを指し得るが、１つの物理ページのデータはいくつかのバイトのユーザデータ（例えばいくつかのセクタのデータを含むデータペイロード）ならびにそのユーザデータに対応するメタデータを含み得る。例えば４ＫＢのページサイズを有する１つの物理ページのデータは、４ＫＢのユーザデータ（例えば４ＫＢ論理ページのデータ）ならびに当該ユーザデータに対応するいくつかのバイト（例えば３２Ｂ、５４Ｂ、２２４Ｂ、その他）のメタデータを含み得る。メタデータはユーザデータに対応する他のメタデータの中でもとりわけ、エラーデータ（例えばエラー検出および／または訂正コードデータ）などの整合性データを、および／またはアドレスデータ（例えば論理アドレスデータ）を、含み得る。
【００２７】
図２は、本開示のいくつかの実施形態に係るページストライプレイアウト２２０のブロック図である。ページストライプレイアウトは、本開示のいくつかの実施形態に係る、いくつかの論理ページ２２２、いくつかのコードワード２２４、およびいくつかの物理ページ２２６間の対応関係を示す。いくつかの論理ページのデータ２２２はいくつかのコードワード２２４としてエラーコーディングされ得る。例えば物理ページメタデータ２２８、論理ページＬＰ０、および論理ページＬＰ１の１部分がコードワードＣＷ０、ＣＷ１、ＣＷ２、およびＣＷ３としてエラーコーディングされ得る。いくつかのコードワード２２４はいくつかの物理ページのメモリ２２６に書き込まれ得る。なおここで、データの論理ページ２２２の個数はメモリの物理ページ２２６の個数と異なり得る。例えばコードワードＣＷ０、ＣＷ１、ＣＷ２、およびＣＷ３は物理ページＤ０Ｐ０（例えばダイ０、プレーン０に関連付けられた物理ページ）に書き込まれ得る。いくつかの実施形態では物理ページメタデータ２２８は、ストライプの定義（例えばストライプ長さ）、タイムスタンプ、消去カウント、ブロックタイプ、および／または、より多くのもしくはより少ない情報を含み得る。図２に示すように、物理ページメタデータ２２８は専用のコードワードを有さないが、その代わり論理ページの１部分とともにエンコードされる（例えばＣＷ０は物理ページメタデータ２２８およびＬＰ０の１部分を含む）。
【００２８】
いくつかの実施形態では、いくつかの論理ページのデータ２２２の１部分（例えばＬＰ０およびＬＰ１の１部分）はいくつかのコードワード２２４（例えばＣＷ０、ＣＷ１、ＣＷ２、およびＣＷ３）としてエンコードされ得る。いくつかのコードワード２２４（例えばＣＷ０、ＣＷ１、ＣＷ２、およびＣＷ３）は１つの物理ページのメモリ（例えばＤ０Ｐ０）に書き込まれ得る。いくつかの論理ページのデータの部分は、特定の論理ページのデータ（例えばＬＰ０）を、第１コードワード（例えばＣＷ０）の第１ペイロード部分として、および第２コードワード（例えばＣＷ１）の第２ペイロード部分として、エラーコーディングすることにより、エラーコーディングされ得る。第１コードワード（例えばＣＷ０）のサイズは第２コードワード（例えばＣＷ１）のサイズに等しくなり得る。物理ページのメモリのサイズは、いくつかの論理ページのデータ２２２のうちのいずれかのサイズに依存し得ない。
【００２９】
図２に示すように論理ページＬＰ１の残余部分は、異なるコードワードＣＷ０として（例えば物理ページメタデータおよび論理ページＬＰ２の１部分とともに）エラーコーディングされ得る。なおこの異なるコードワードＣＷ０は、（例えば物理ページメタデータ、論理ページＬＰ２、および論理ページＬＰ３の１部分とともに）物理ページＤ０Ｐ１に関連付けられ、物理ページＤ０Ｐ１に書き込まれる。したがっていくつかの論理ページのデータをエラーコーディングすることは、非整数個の論理ページのデータを整数個のコードワードとしてエラーコーディングすることを含み得る。図２に示すようにいくつかの実施形態では、各物理ページのメモリは整数個のコードワードに関連付けられ得る（例えば、実施形態はページあたり特定個数のコードワードに必ずしも限定されるわけではないが、物理ページあたり４コードワード）。整数個のコードワードは整数個の物理ページのメモリに書き込まれ得る。所与のストライプに対して、コードワード２２２の個数は、データの論理ページ２２４の個数および当該コードワードに関連付けられるメモリの物理ページ２２６の個数と異なり得る。
【００３０】
特に図２に示す実施形態に対しては、いくつかの論理ページのデータ２２２をエラーコーディングすることは、物理ページメタデータ２２８と第１論理ページのデータ（例えばＬＰ０）の第１部分とを第１コードワード（例えばＣＷ０）としてエラーコーディングすることと、第１論理ページのデータ（例えばＬＰ０）の第２部分を第２コードワード（例えばＣＷ１）としてエラーコーディングすることと、第１論理ページのデータ（例えばＬＰ０）の第３部分と第２論理ページのデータ（例えばＬＰ１）の第１部分とを第３コードワード（例えばＣＷ２）としてエラーコーディングすることと、第２論理ページのデータ（例えばＬＰ１）の第２部分を第４コードワード（例えばＣＷ３）としてエラーコーディングすることと、を含み得る。いくつかのコードワード２２４をいくつかの物理ページのメモリ２２６に書き込むことは、第１コードワード（例えばＣＷ０）、第２コードワード（例えばＣＷ１）、第３コードワード（例えばＣＷ２）、および第４コードワード（例えばＣＷ３）を第１物理ページのメモリ（例えばＤ０Ｐ０）に書き込むことを含み得る。いくつかの論理ページのデータ２２２をエラーコーディングすることは、第２物理ページに対する物理ページメタデータと、第２論理ページのデータ（例えばＬＰ１）の第３部分と、第３論理ページのデータ（例えばＬＰ２）の第１部分とを第５コードワード（例えばＤ０Ｐ１におけるＣＷ０）としてエラーコーディングすることをさらに含み得る。他の情報の中で、第５コードワード（例えばＤ０Ｐ１におけるＣＷ０）は第２物理ページのメモリ（例えばＤ０Ｐ１）に書き込まれ得る。
【００３１】
図２にも示すように、ページストライプレイアウト２２０はストライプに対していくつかのページのパリティデータ（実施形態は特定個数のページのパリティデータには必ずしも限定されないが、例えば「ＤｎＰ０−プレーン０パリティ」および「ＤｎＰ１−プレーン１パリティ」）を含み得る。パリティデータの前に、図２は、最終論理ページのデータ（例えばＬＰｘ）の末尾に「廃棄」データも示す。本明細書で説明するように非整数個の論理ページのデータが整数個のコードワードとしてエンコードされ得る。したがって本開示のいくつかの実施形態によればいくつかの論理ページのデータにおいて利用可能なデータ量がストライプに対するコードワード境界で終了しない。それ故、「廃棄」データは最終コードワードを充填するために用いられ得る。いくつかの実施形態では、単位物理ページのメモリあたりの整数個のコードワードは、整数個のコードワードのうちのいずれかに対するコードレートに関わらず、一定であり得る。
【００３２】
読み出し動作に関して、１つのストライプのデータは複数の物理ページのメモリ２２６から読み出され得る。ここで物理ページのメモリ２２６のうちのそれぞれは、それぞれの複数のコードワード２２４を格納し、物理ページのメモリのうちの１つからのそれぞれの複数のコードワード２２４のうちの２つ以上のペイロード部分を組み合わせると、１つの論理ページのデータ２２２が形成され得る。例えば第１コードワード（例えばＣＷ０）の１部分と第３コードワード（例えばＣＷ２）の１部分とを第２コードワード（例えばＣＷ１）（なお各コードワードは第１物理ページ（例えばＤ０Ｐ０）から読み出されたものである）と組み合わせると、第１論理ページのデータ（例えばＬＰ０）が形成され得る。複数の物理ページのメモリ２２６のうちの２つ以上からのそれぞれの複数のコードワード２２４のうちの２つ以上のペイロード部分を組み合わせると、１つの論理ページのデータ２２２が形成され得る。例えば第１物理ページのメモリ（例えばＤ０Ｐ０）からの第３コードワード（例えばＣＷ２）の１部分と第４コードワード（例えばＣＷ３）とを第２物理ページのメモリ（例えばＤ０Ｐ１）からの第１コードワード（例えばＣＷ０）の１部分と組み合わせると、第２論理ページのデータ（例えばＬＰ１）が形成され得る。
【００３３】
１つのストライプのデータを読み出すことは、整数個のコードワード２２４を読み出すことを含み得る。例えば、整数個のコードワード２２４はとりわけ、物理ページのメモリ２２６ごとに、ダイ（例えば、Ｄ０、Ｄ１、……、Ｄｎ）ごとに、ストライプごとに、読み出され得る。複数の物理ページ２２６からのそれぞれの複数のコードワード２２４のペイロード部分を組み合わせると、複数の論理ページのデータ２２２が形成され得る。それぞれの複数のコードワード２２２のペイロード部分を組み合わせることは、それぞれの複数のコードワードのうちの第１のコードワード（例えばＣＷ３）のペイロード部分全体と、それぞれの複数のコードワードのうちの第２のコードワード（例えばＣＷ２）のペイロード部分の全体に満たない部分とを組み合わせて、論理ページのデータ（例えばＤ０Ｐ０に関連付けられたＬＰ１）を形成することを含み得る。
【００３４】
論理ページフォーマット例２３０（例えばＬＰ４のフォーマット）も図２に示される。論理ページフォーマット２３０は、論理ページメタデータ２３２と、いくつかのホストセクタ２３４（例えば単位論理ページあたり８セクタ。しかし実施形態は必ずしもそのように限定されるわけではない）と、を含み得る。論理ページメタデータ２３２は、より多い情報またはより少ない情報の中で、論理ブロックアドレス（ＬＢＡ）番号、有効セクタビットマップ、論理ページタイプを含み得る。ホストセクタ２３４は、より多い情報またはより少ない情報の中で、ペイロード（例えば５１２〜５２８バイト。ただし実施形態は必ずしも係るバイト数に限定されるわけではない）およびデータパス保護（ＤＰＰ）情報を含み得る。いくつかの実施形態ではエラー情報（例えば巡回符号冗長検査（ＣＲＣ）情報）も論理ページフォーマットとともに含まれ得る。
【００３５】
本開示の他の利益の中で、本明細書で説明するページストライプレイアウトは、可変圧縮率のための他の基準の中でもページ毎の基準における様々な圧縮率を可能にするユーザデータ圧縮方式を可能にする。係る可変圧縮方式の詳細は本開示の範囲を越えるものである。
【００３６】
図３は本開示のいくつかの実施形態に係る既知の不良部分３３６を含むページストライプレイアウト３２０のブロック図である。既知の不良部分３３６を除くと、ページストライプレイアウト３２０は図２に示すページストライプレイアウト２２０に類似し得る。すなわちページストライプレイアウト３２０は論理ページのデータ３２２、コードワード３２４、および物理ページのデータ３２６を含み得る。複数の論理ページのデータ３２２は複数の対応する物理ページのメモリ３２６にマッピングされ得る。ここでは複数の論理ページ３２２のうちの非整数個が複数の物理ページのメモリ３２６のうちのそれぞれにマッピングされ得る。
【００３７】
例えば図３において、既知の不良部分３３６は、（Ｄ１Ｐ１に関連付けられた物理ページもしたがって不良であると知られるよう、例えばＤ１Ｐ１に関連付けられた）不良物理メモリセルブロックであり得る。ストライプレイアウト３２０が既知の不良部分３３６を含むこれらの事例に対して、コントローラは、複数の論理ページ３２２のうちの特定の１つの特定部分３３６が既知の不良物理ページのメモリ（例えばＤ１Ｐ１）にマッピングされることに少なくとも部分的に応答して、複数の論理ページ３２２のうちの特定の１つをホストデータでポピュレートすることを省略するよう構成され得る。ポピュレートを省略することは、コントローラが、不良物理ページ（例えばＤ１Ｐ１）に対応する論理ページのデータ３２２をホストデータでポピュレートすることを回避し得ることを意味する。これらの論理ページのデータ３２２に普通ならばポピュレートされたはずのデータは、ページストライプレイアウト３２０における後続の論理ページのデータ３２２（例えば少なくとも１つの後続の論理ページのデータ）にポピュレートされ得る。
【００３８】
コントローラは、複数の論理ページのデータ３２２のうちの特定の１つの第２部分をエラーデータでポピュレートするようさらに構成され得る。ここでは、複数の論理ページのデータ３２２のうちの特定の１つの第２部分は、既知の良好な物理ページのメモリにマッピングされる。コントローラは複数の論理ページのデータ３２２をＲＡＩＮストライプにおいて複数の物理ページのメモリ３２６にマッピングするよう構成され得る。
【００３９】
例えばＤ１Ｐ１に関連付けられた物理ページのメモリが不良であることが知られる。Ｄ１Ｐ１に関連付けられた物理ページのメモリは、元のページストライプレイアウト３２０において少なくとも論理ページＬＰ５、ＬＰ６、およびＬＰ７の部分に対応する。したがってＬＰ５の１部分およびＬＰ７の１部分のみがＤ１Ｐ１に関連付けられた物理ページのメモリに対応するとしても、論理ページＬＰ５、ＬＰ６、およびＬＰ７はコントローラによるポピュレートが省略され得る（例えばホストデータでポピュレートされない）。普通ならばＬＰ５、ＬＰ６、およびＬＰ７にポピュレートされたはずのデータは、後続の論理ページ（例えばＬＰ８、ＬＰ９、およびＬＰ１０）にポピュレートされ得る。図３に示すように、ＬＰ５の１部分およびＬＰ７の１部分は良好な物理ページのメモリ（例えばＤ１Ｐ０およびＤ２Ｐ０）に対応する。したがって、ＬＰ５およびＬＰ７、または少なくとも良好な物理ページのメモリに対応するＬＰ５およびＬＰ７のこれらの部分は、（例えばパリティデータが計算され、ＲＡＩＮストライプに対して有効となるよう）ＲＡＩＮストライプを保持するために用いられ得るエラーデータでポピュレートされ得る。いくつかの実施形態では、ポピュレートが省略された論理ページに、または良好な物理ページのメモリに対応する当該論理ページに、ポピュレートされたエラーデータはランダムに生成されたデータであり得る。
【００４０】
図４は、本開示のいくつかの実施形態に係る強制ユニットアクセス（ＦＵＡ）を含む、または追加的な書き込みデータを含まない、ページストライプレイアウト４２０のブロック図である。ＦＵＡは、直ちに（例えば追加的な物理ページのメモリが同時にプログラムされ得るようポピュレートされるべき後続のデータ量を待機することなく）物理メモリに書き込まれるべき論理ページのデータに対して指示され得る。ＦＵＡに関するメモリ動作はいくつかの実施形態では追加的な書き込みデータが利用可能でないときのメモリ動作に類似し得る。
【００４１】
例えば図４に関してＦＵＡは、任意のデータが追加的な論理ページのメモリ（例えばＬＰ５）に対してポピュレートされる前にＬＰ４内のデータが対応する物理ページのメモリ（例えばＤ１Ｐ０）に書き込まれるよう、ＬＰ４に対して指示され得る。ＲＡＩＮストライプレイアウト４２０は保持され得るが、一方、物理ページＤ１Ｐ０およびＤ１Ｐ１は、ＦＵＡのために異なる書き込み動作の間（例えば同時にではなく）書き込まれ得る。
【００４２】
同様に、論理ページのデータＬＰ４の後に追加的な書き込みデータが利用可能でない場合、ＬＰ４内のデータは、任意のデータが追加的な論理ページのメモリ（例えばＬＰ５）に対してポピュレートされる前に、対応する物理ページのメモリ（例えばＤ１Ｐ０）に書き込まれる。ＲＡＩＮストライプレイアウト４２０は保持され得るが、一方、物理ページＤ１Ｐ０およびＤ１Ｐ１は、例えば追加的な書き込みデータが一時的に欠落しているために、異なる書き込み動作の間（例えば同時にではなく）書き込まれ得る。
【００４３】
したがっていくつかの実施形態では、コントローラは、複数の論理ページのデータ４２２の以前の１つに関連付けられたＦＵＡに、および／または書き込みのために現時点で利用可能な追加的な書き込みデータが存在しないことに、少なくとも部分的に応答して、複数の論理ページ４２２のうちの特定の１つ（例えばＬＰ５）をホストデータでポピュレートすることを省略するよう構成され得る。コントローラは、ＬＰ４がホストデータでポピュレートされた後であって、しかも複数の論理ページのデータ４２２のうちの以前の１つ（例えばＬＰ４）に関連付けられたデータを複数の物理ページのメモリ４２６のうちのいくつか（例えば物理ページＤ１Ｐ０）に書き込む前に、複数の論理ページ４２２のうちの特定の１つの第１部分４４０（例えばＬＰ５）をエラーデータ（例えば本明細書で説明したＲＡＩＮストライプに対するパリティデータなど。いくつかの事例では、これはランダムデータまたは他の非ホストデータであり得る）でポピュレートするよう構成され得る。本明細書で説明するように、係るエラーデータはＲＡＩＮストライプ（例えばＲＡＩＮストライプに対するパリティデータ）を保持することを支援し得、係るエラーデータは例えばランダムに生成されたデータを含み得る。エラーデータの他の例は、全部０、全部１、その他を含み得る。
【００４４】
コントローラは、ＦＵＡの後に、および／または、追加的な書き込みデータが利用可能となった後に、複数の論理ページのデータ４２２のうちの特定の１つの第２部分４４２（例えばＬＰ５）をエラーデータでポピュレートするよう構成され得る。例えばコントローラは、ＦＵＡの後に、および／または、追加的な書き込みデータが利用可能となった後に、次の論理ページのデータ（例えばＬＰ６）に有効なホストデータをポピュレートすることを再開するよう構成され得る。
【００４５】
図５は本開示のいくつかの実施形態に係る論理ページを書き込むためのバッファアロケーションのブロック図である。本明細書で説明するように、物理バッファはいくつかの論理バッファセグメントに分離され得る。例えば物理バッファ５４６−０は第１個数の論理バッファセグメント５４８−０（例えば「バッファ０」、「バッファ１」、「バッファ２」、および「バッファ３」）に分離され得、物理バッファ５４６−１は第２個数の論理バッファセグメント５４８−１（例えば「バッファ４」、「バッファ５」、「バッファ６」、および「バッファ７」）に分離され得、物理バッファ５４６−２は第３個数の論理バッファセグメント５４８−２（例えば「バッファ８」）に分離され得る。物理バッファは任意個数の論理バッファセグメントに分離され得るものであり、実施形態は必ずしも図５に示す例に限定されるわけではない。１つの物理バッファは１つの物理ページのメモリに等しいサイズを有し得る（例えば物理バッファ５４６−０は物理ページのメモリ５２６−０に等しいサイズを有し得る）。いくつかの実施形態では論理バッファセグメントはコードワードペイロードサイズに等しいサイズを有し得る。例えば第１論理バッファセグメント（例えば「バッファ０」）内にバッファ可能な情報量はＥＣＣコードワードのペイロードに等しい量であり得る。論理バッファセグメントは、１つの物理ページのメモリに格納するためにデータをエラーコーディングする前にデータをバッファし得る。したがってコードワードペイロードに等しいサイズを論理バッファセグメントに提供することは、バッファリングコンポーネント（例えば図１に示すバッファリングコンポーネント１１４）とエラーコーディングコンポーネント（例えば図１に示すエラーコーディングコンポーネント１１２）との間の高速且つ効果的なデータの転送を提供することを支援し得る。
【００４６】
書き込み動作（例えばストライプ書き込み動作）は第１論理ページのデータに対する書き込み要求により始まり得る。論理ページのデータを格納するために十分ないくつかの論理バッファセグメント（例えばこの事例では３つの論理バッファセグメント「バッファ０」、「バッファ１」、「バッファ２」、および「バッファ３」）がアロケートされ得る。第１論理バッファセグメント（例えば「バッファ０」）の１部分は、物理ページのメモリメタデータ５２８および論理ページのデータのメタデータ５３２−０をバッファし得る。第１論理バッファセグメント（例えば「バッファ０」）内の開始部分の位置は、物理ページのメモリメタデータ５２８（例えば位置０）および論理ページのデータメタデータ（例えば位置２７）のそれぞれに対してマッピングされ得る。論理ページのデータの開始部分の位置（例えば位置２８）はマッピングされ得る（例えばストライプにマッピングされる）。論理ページのデータの開始部分の位置は、いくつかのコードワードとしてエラーコーディングされるいくつかの論理ページのデータの部分に対応し得る。様々なマッピングが、ストライプから様々な部分を読み出すために有益であり得る。例えばマッピングすることは論理ページのデータの開始部分を含むストライプを特定するために用いられ得、オフセットは、複数の物理ページのメモリのうちの１つと論理ページのデータの開始部分を含む特定のコードワードとを特定するために、ストライプへと計算され得る。いくつかの実施形態では、論理ページのデータに対するアドレスは１組のパラメータ（例えば物理ページのメモリの合計サイズ、物理ページのメモリのメタデータサイズ、コードワード合計サイズ、コードワードペイロードサイズ、ホストセクタサイズ、および論理ページメタデータサイズを含む）に基づいて判定され得る。
【００４７】
ホストセクタは論理ページのデータ（例えば書き込み要求に関連付けられた論理ページのデータ）にポピュレートされ得る。アロケートされた論理バッファセグメント（例えば「バッファ０」、「バッファ１」、「バッファ２」、および「バッファ３」）は少なくとも部分的に論理ページのデータをバッファし得る。いくつかの実施形態ではコントローラは、ホストセクタ基準により、ホストセクタ上のアロケートされた論理バッファセグメント内に情報を少なくとも部分的にバッファするよう構成され得る。例えば第１ホストセクタ「０」、第２ホストセクタ「１」、および第３ホストセクタ「２」は第１論理バッファセグメント（例えば「バッファ０」）内にバッファされ得る。第４ホストセクタ「３」の１部分は、第１論理バッファセグメント（例えば「バッファ０」）を完全に充填するために、第１論理バッファセグメント内にバッファされ得る。第４ホストセクタ「３」の残余部分は第２論理バッファセグメント（例えば「バッファ１」）内にバッファされ得る。いくつかの実施形態では１つの論理ページのデータは８つのホストセクタ（例えばホストセクタ０〜７）を含み得るが、実施形態は単位論理ページのデータあたり特定個数のホストセクタに必ずしも限定されるわけではない。図５に示すように、ホストセクタ４〜７は第２論理バッファセグメント（例えば「バッファ１」）および第３論理バッファセグメント（例えば「バッファ２」）の１部分にバッファされ得る。論理ページのデータが、アロケートされた論理バッファセグメントのうちの１つを除いて全部を充填（例えば完全に充填）する（例えば論理ページのデータが論理バッファセグメント「バッファ０」および論理バッファセグメント「バッファ１」を完全に充填し、論理バッファセグメント「バッファ２」を部分的に充填する等）よう、コントローラは、論理ページのデータをアロケートされた論理バッファセグメント内に少なくとも部分的にバッファするよう構成され得る。
【００４８】
後続の論理ページのデータは、第１論理ページのデータと同一の書き込み要求の部分であったとしても、または後続の書き込み要求であったとしても、そこにアロケートされた論理バッファセグメントを有し得る。例えば第３論理バッファセグメント（例えば「バッファ２」）の残余部分は、第４論理バッファセグメント（例えば「バッファ３」）および第５論理バッファセグメント（例えば「バッファ４」）とともに、そこにアロケートされ得る。後続のアロケートされた論理バッファセグメントは、第３論理バッファセグメント（例えば「バッファ２」）において第１論理ページのデータが中断された位置から開始して（例えば論理ページメタデータ５３２−１をバッファした後）、充填され得る。図５に示すように後続の論理ページのデータ（例えば後続のホストセクタ０〜７を含む）は、第３論理バッファセグメント（例えば「バッファ２」）および第４論理バッファセグメント（例えば「バッファ３」）にバッファされ、第５論理バッファセグメント（例えば「バッファ４」）に部分的にバッファされ得る。図５は、論理バッファセグメント（例えば「バッファ４」、「バッファ５」、および「バッファ６」）にバッファされた第３論理ページのデータ（例えば第３ホストセクタ０〜７を含む）も示す。図５は、論理バッファセグメント（例えば「バッファ６」、「バッファ７」、および「バッファ８」）にバッファされた第４論理ページのデータ（例えば第３ホストセクタ０〜７を含む）も示す。
【００４９】
論理ページのデータ(および少なくとも１つのホストセクタ)は論理バッファ境界（例えば第１アロケートされた論理バッファセグメント「バッファ０」と第２アロケートされた論理バッファセグメント「バッファ１」との間の境界）を横断し得る。リンクは、アロケートされた論理バッファセグメントのうちの第１（例えば「バッファ０」）からアロケートされた論理バッファセグメントのうちの第２（例えば「バッファ１」）へ、マッピングされ得る。リンクは、第１論理バッファセグメント（例えば「バッファ０」）と第２論理バッファセグメント（例えば「バッファ１」）との間の論理バッファ境界を横断する特定のホストセクタと組み合わせて用いられ得る。さらにリンクは後続の論理バッファセグメント間（例えば論理バッファセグメント「バッファ１」と論理バッファセグメント「バッファ２」との間、その他）でマッピングされ得る。
【００５０】
物理バッファ（例えば当該物理バッファに含まれる論理バッファセグメントを含む）は、充填された後、エラーコーディングされ、１つの物理ページのメモリに書き込まれ得る。例えば物理バッファ５４６−０はエラーコーディングされ、物理ページのメモリ５２６−０に書き込まれ得、物理バッファ５４６−１はエラーコーディングされ、物理ページのメモリ５２６−１に書き込まれ得る。いくつかの実施形態では複数の物理バッファは複数の物理ページのメモリに一緒に書き込まれ得る（例えばマルチプレーン書き込み動作、およびＲＡＩＮストライプ書き込み動作、その他において）。
【００５１】
本明細書で説明するようにメモリは、それぞれのコードワードのペイロードを複数の論理バッファセグメントのうちのそれぞれにバッファすることにより合計コードワードサイズに基づいてバッファ管理され得る。ホストとの通信は、１つの論理ページのデータをホストと通信することにより、論理ページサイズに基づき得る。ここで論理ページのデータは複数の論理バッファセグメントのうちのそれぞれからのそれぞれのコードワードペイロードを含む。
【００５２】
図６は、本開示のいくつかの実施形態に係るウェアレベリング動作のためのバッファアロケーションのブロック図である。ウェアレベリング動作の１例はガベージコレクションとして知られる。ガベージコレクションは最も多い無効ページを有する（例えば「グリーディ算法」にしたがって）ブロックを回収する（例えば消去し、書き込みのため利用可能となるようにする）ことを含み得る。代替的にガベージコレクションは閾値量を越える無効ページを有するブロックを回収することを含み得る。無効ページは、例えば、異なるページへと更新された１ページのデータであり得る。
【００５３】
例えば２つの論理ページのデータ（例えば第１論理ページのデータ６２２−０および第２論理ページのデータ６２２−１）がウェアレベリングのために指定され得る。この事例では、第１論理ページのデータ６２２−０はホストセクタ０〜７を含み得、第２論理ページのデータ６２２−１はホストセクタ８〜１５を含み得る。整数個のコードワードが非整数個の論理ページのデータに対応し得るが、各論理ページのデータは対応する個数のコードワードを有し得る（例えば３つのコードワードがそれぞれ各論理ページに対応し得る）。すなわち例えば、各論理ページのデータは３つの対応するコードワードを有し得るが、特定の論理ページのデータは情報の全部を必ずしも全部の３つのコードワードに格納するとは限らない。ウェアレベリングのために指定された論理ページに対する対応する個数のコードワードが読み出され得、コードワードペイロードがウェアレベリング動作のためにアロケートされたいくつかの論理バッファセグメント内にバッファされ得る（例えば第１論理ページ６２２−０に対するコードワードペイロードは第１個数の論理バッファセグメント６４８−０にバッファされ得、第２論理ページ６２２−１に対するコードワードペイロードは第２個数の論理バッファセグメント６４８−１内にバッファされ得る）。
【００５４】
２つの論理ページのデータのうちのそれぞれの開始部分の位置（例えば特定論理バッファセグメント内の位置）は本明細書で説明するように既知であり得る（例えば論理ページのデータ６２２−０は古い物理ページメタデータ６２８−Ｘの後であるが古い第１論理ページメタデータ６３２−Ｘ０を含む１９に開始部分の位置を有し得、論理ページのデータ６２２−１は、古い第２論理ページのデータメタデータ６３２−Ｘ１を含む２３１に開始部分の位置を有し得る。物理バッファからセグメント化された第３個数の論理バッファセグメント６４８−２（例えば「バッファ９」、「バッファ１０」、「バッファ１１」、および「バッファ１２」）はウェアレベリング動作のためにアロケートされ得る。ウェアレベリング動作の一部として書き込まれる新しい物理ページに対する物理ページメタデータ６２８−Ｙは生成され、新しくアロケートされたバッファセグメントのうちの第１（例えば「バッファ９」）にバッファされ得る。
【００５５】
リンクされたリストは、ウェアレベリング動作の一部として単一ページ書き込みのためにポピュレートされ得る。リンクされたリストは、ウェアレベリング動作のためにアロケートされた第１論理バッファセグメント（例えばいくつかの論理バッファセグメント６４８−２のうちの「バッファ９」）の位置の特定と、物理ページメタデータ６２８−Ｙに対するカウントと、第１論理ページのデータ６２２−０および第２論理ページのデータ６２２−１を格納する各バッファに対するリンクおよびカウントと、を含み得る。リンクされたリストにおけるエントリーは、各エントリーに対するカウント、および次のエントリーに対する（例えば次の論理バッファセグメントへの（例えば「バッファ０」から「バッファ１」へ等）リンクとともに、論理バッファセグメントによりポピュレートされ得る。カウントは各エントリーに関連付けられた情報の量を指定し得る。リンクされたリストは、リスト全体に対する合計カウントも含み得る。したがって第１論理ページのデータ６２２−０および第２論理ページのデータ６２２−１からのデータは、論理バッファセグメント６４８−２（例えばバッファ９〜１２）に移動され得る。したがって論理バッファセグメント６４８−２（例えばバッファ９〜１２）は物理ページのメモリ６２６に書き込まれ得る。
【００５６】
第１論理ページのデータ６２２−０および第２論理ページのデータ６２２−１が論理バッファセグメント６４８−２にバッファされた後、第１論理ページのデータ６２２−０および第２論理ページのデータ６２２−１の１部分は物理ページのメモリ６２６に書き込まれ得る。例えば物理ページのメモリ６２６に書き込まれた第１論理ページのデータ６２２−０および第２論理ページのデータ６２２−１の部分は、第１論理ページメタデータ６３２−Ｙ０、第２論理ページメタデータ６３２−Ｙ１、ホストセクタ０〜１４の全部、およびホストセクタ１５の１部分を含み得る。ホストセクタ１５の残余部分は、第２論理ページのデータ６２２−１に対する論理−物理アドレスの表（例えばＬＢＡテーブル）内のエントリーを更新する前に、新しい物理ページのメモリに書き込まれ得る。
【００５７】
＜結論＞
本開示は、物理ページ、論理ページ、およびコードワードの対応のための装置および方法に関する。いくつかの方法は、いくつかの論理ページのデータをいくつかのコードワードとしてエラーコーディングすることと、いくつかのコードワードをいくつかの物理ページのメモリに書き込むことと、を含む。データの論理ページの個数はメモリの物理ページの個数と異なり得る。
【００５８】
本明細書では特定の実施形態について例示および説明してきたが、当業者は、同一結果を達成するよう計算された構成が、示された特定的な実施形態の代替となり得ることを理解するであろう。本開示は本開示の１つまたは複数の実施形態の適応例または変化例を含むことを意図するものである。上記の説明が例示としてなされており限定的なものではないことを理解すべきである。上述の実施形態の組み合わせ、および本明細書において特に説明されない他の実施形態は、上記の説明を綿密に調べると、当業者に明らかとなることであろう。本開示の１つまたは複数の実施形態の範囲は上述の構造および方法が用いられる他の応用を含む。したがって、本開示の１つまたは複数の実施形態の範囲は、添付の請求項が権利を有する均等物の全範囲とともに、これらの請求項を参照して決定されるべきである。
【００５９】
前述の詳細な説明では、いくつかの特徴は、本開示を簡素化する目的で、単一の実施形態にまとめられる。この開示の方法は、本開示の開示された実施形態が、各請求項において明示的に記載されるよりも多くの特徴を用いなければならないという意図を反映するものとして解釈されるべきではない。むしろ以下の請求項が反映するように、発明主題は単一の開示された実施形態の全部の特徴よりも少ない特徴の中にある。したがって以下の請求項は、各請求項が本発明の分離された実施形態としてそれ自身存在する状態で、発明を実施するための形態に組み込まれる。
【図１】
0006053078.tif 000002
【図２】
0006053078.tif 000003
【図３】
0006053078.tif 000004
【図４】
0006053078.tif 000005
【図５】
0006053078.tif 000006
【図６】
0006053078.tif 000007