(57)【要約】      （修正有）【課題】保護されたデータとは別個のパリティデータの記憶を提供する。【解決手段】記憶環境２において、記憶デバイスは、複数のメモリデバイスを含む主記憶アレイと、１つまたは複数のパリティメモリデバイスと、データのブロックを記憶するように構成されたコントローラと、を含む。コントローラは、少なくとも、データのブロックを主記憶アレイに書き込み、データのブロックに対するパリティデータを判定し、判定されたパリティデータの少なくとも一部を１つまたは複数のパリティメモリデバイスに書き込むことによって、データのブロックを記憶するように構成される。【選択図】図１
2017079050.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリデバイスを含む主記憶アレイと、
１つまたは複数のパリティメモリデバイスと、
少なくとも、
データのブロックを前記主記憶アレイに書き込み、
前記データのブロックに対するパリティデータを判定し、および
前記判定されたパリティデータの少なくとも一部を前記１つまたは複数のパリティメモリデバイスに書き込む
ことによって、前記データのブロックを記憶するように構成されたコントローラと
を備える、記憶デバイス。
【請求項２】
前記コントローラは、
前記データのブロックに対して判定するためにパリティデータのサイズを選択し、および
前記判定されたパリティデータの前記少なくとも一部を前記１つまたは複数のパリティメモリデバイスに書き込むようにさらに構成され、
前記選択されたパリティデータのサイズおよび前記データのブロックの組み合わされたサイズは、前記主記憶アレイのページのサイズよりも大きい
請求項１に記載の記憶デバイス。
【請求項３】
前記パリティデータを判定するために、前記コントローラは、前記データのブロックに対する第１のパリティデータおよび第２のパリティデータを判定するように構成され、
前記データのブロックを前記主記憶アレイに書き込むために、前記コントローラは、前記データのブロックおよび前記第１のパリティデータを前記主記憶アレイのページに書き込むように構成され、ならびに
前記パリティデータの前記一部を前記１つまたは複数のパリティメモリデバイスに書き込むために、前記コントローラは、前記第２のパリティデータを前記１つまたは複数のパリティメモリデバイスに書き込むように構成される
請求項２に記載の記憶デバイス。
【請求項４】
前記コントローラは、少なくとも、
前記データのブロックを前記主記憶アレイから読み込み、
前記パリティデータを前記１つまたは複数のパリティメモリデバイスから読み込み、および
前記パリティデータに基づいて前記データのブロックを検証する
ことによって、前記データのブロックを読み出すようにさらに構成される
請求項１に記載の記憶デバイス。
【請求項５】
前記１つまたは複数のパリティメモリデバイスは、前記主記憶アレイの前記複数のメモリデバイスとは異なるタイプのメモリデバイスである、請求項１に記載の記憶デバイス。
【請求項６】
前記主記憶アレイの前記複数のメモリデバイスは、複数のフラッシュメモリデバイスを含み、および前記１つまたは複数のパリティメモリデバイスは、１つまたは複数の磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）、相変化ランダムアクセスメモリ（ＰＲＡＭ）、または抵抗ランダムアクセスメモリ（ＲｅＲＡＭ）デバイスを含む、請求項５に記載の記憶デバイス。
【請求項７】
記憶デバイスのコントローラによって、データのブロックを、複数のメモリデバイスを含む主記憶アレイに書き込むステップと、
前記コントローラによって、前記データのブロックに対するパリティデータを判定するステップと、
前記コントローラによって、前記判定されたパリティデータの少なくとも一部を１つまたは複数のパリティメモリデバイスに書き込むステップと
を備える、方法。
【請求項８】
前記データのブロックに対して判定するためにパリティデータのサイズを選択するステップと、
前記判定されたパリティデータの前記少なくとも一部を前記１つまたは複数のパリティメモリデバイスに書き込むステップと
をさらに備え、
前記選択されたパリティデータのサイズおよび前記データのブロックの組み合わされたサイズは、前記主記憶アレイのページのサイズよりも大きい
請求項７に記載の方法。
【請求項９】
前記パリティデータを判定するステップは、前記データのブロックに対する第１のパリティデータおよび第２のパリティデータを判定するステップを含み、
前記データのブロックを前記主記憶アレイに書き込むステップは、前記データのブロックおよび前記第１のパリティデータを前記主記憶アレイのページに書き込むステップを含み、ならびに
前記パリティデータの前記一部を前記１つまたは複数のパリティメモリデバイスに書き込むステップは、前記第２のパリティデータを前記１つまたは複数のパリティメモリデバイスに書き込むステップを含む
請求項８に記載の方法。
【請求項１０】
少なくとも、
前記データのブロックを前記主記憶アレイから読み込み、
前記パリティデータを前記１つまたは複数のパリティメモリデバイスから読み込み、および
前記パリティデータに基づいて前記データのブロックを検証する
ことによって、前記データのブロックを読み出すステップをさらに備える
請求項７に記載の方法。
【請求項１１】
前記１つまたは複数のパリティメモリデバイスは、前記主記憶アレイの前記複数のメモリデバイスとは異なるタイプのメモリデバイスである、請求項７に記載の方法。
【請求項１２】
前記主記憶アレイの前記複数のメモリデバイスは、複数のフラッシュメモリデバイスを含み、および前記１つまたは複数のパリティメモリデバイスは、１つまたは複数の磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）、相変化ランダムアクセスメモリ（ＰＲＡＭ）、または抵抗ランダムアクセスメモリ（ＲｅＲＡＭ）メモリデバイスを含む、請求項１１に記載の方法。
【請求項１３】
実行されるときに、記憶デバイスの１つまたは複数のプロセッサに、
データのブロックを、複数のメモリデバイスを含む主記憶アレイに書き込ませ、
前記データのブロックに対するパリティデータを判定させ、および
前記判定されたパリティデータの少なくとも一部を１つまたは複数のパリティメモリデバイスに書き込ませる、
命令を記憶したコンピュータ可読記憶媒体。
【請求項１４】
前記１つまたは複数のプロセッサに、
前記データのブロックに対して判定するためにパリティデータのサイズを選択させ、および
前記判定されたパリティデータの前記少なくとも一部を前記１つまたは複数のパリティメモリデバイスに書き込ませる
命令をさらに記憶し、
前記選択されたパリティデータのサイズおよび前記データのブロックの組み合わされたサイズは、前記主記憶アレイのページのサイズよりも大きい
請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記１つまたは複数のプロセッサに、前記パリティデータを判定させる前記命令は、前記１つまたは複数のプロセッサに、前記データのブロックに対する第１のパリティデータおよび第２のパリティデータを判定させる命令を含み、
前記１つまたは複数のプロセッサに、前記データのブロックを前記主記憶アレイに書き込ませる前記命令は、前記１つまたは複数のプロセッサに、前記データのブロックおよび前記第１のパリティデータを前記主記憶アレイのページに書き込ませる命令を含み、および
前記１つまたは複数のプロセッサに、前記パリティデータの前記一部を前記１つまたは複数のパリティメモリデバイスに書き込ませる前記命令は、前記１つまたは複数のプロセッサに、前記第２のパリティデータを前記１つまたは複数のパリティメモリデバイスに書き込ませる命令を含む
請求項１４に記載のコンピュータ可読記憶媒体。
【請求項１６】
前記１つまたは複数のパリティメモリデバイスは、前記主記憶アレイの前記複数のメモリデバイスとは異なるタイプのメモリデバイスである、請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１７】
複数のメモリデバイスを含む主記憶アレイと、
１つまたは複数のパリティメモリデバイスと、
データのブロックを前記主記憶アレイに書き込む手段と、
前記データのブロックに対するパリティデータを判定する手段と、
前記判定されたパリティデータの少なくとも一部を１つまたは複数のパリティメモリデバイスに書き込む手段と
を備える、システム。
【請求項１８】
前記データのブロックに対して判定するためにパリティデータのサイズを選択する手段と、
前記判定されたパリティデータの前記少なくとも一部を前記１つまたは複数のパリティメモリデバイスに書き込む手段と
をさらに備え、
前記選択されたパリティデータのサイズおよび前記データのブロックの組み合わされたサイズは、前記主記憶アレイのページのサイズよりも大きい
請求項１７に記載のシステム。
【請求項１９】
前記パリティデータを判定する前記手段は、前記データのブロックに対する第１のパリティデータおよび第２のパリティデータを判定する手段を含み、
前記データのブロックを前記主記憶アレイに書き込む前記手段は、前記データのブロックおよび前記第１のパリティデータを前記主記憶アレイのページに書き込む手段を含み、ならびに
前記パリティデータの前記一部を前記１つまたは複数のパリティメモリデバイスに書き込む前記手段は、前記第２のパリティデータを前記１つまたは複数のパリティメモリデバイスに書き込む手段を含む
請求項１８に記載のシステム。
【請求項２０】
前記１つまたは複数のパリティメモリデバイスは、前記主記憶アレイの前記複数のメモリデバイスとは異なるタイプのメモリデバイスである、請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、メモリ管理、特に、記憶デバイスにおいてパリティデータを割り当てることに関する。
【背景技術】
【０００２】
コンピュータで使用されるメモリデバイスまたは他の電子デバイスは、不揮発性メモリまたは揮発性メモリであることがある。不揮発性メモリと揮発性メモリとの間の主な差異は、不揮発性メモリは、持続的な電力供給を必要とすることなくデータを記憶し続けることができることである。結果として、不揮発性メモリデバイスは、広範囲な電子用途のために一般的なタイプのメモリに発展してきた。例えば、フラッシュメモリデバイスを含む不揮発性メモリデバイスは、通常、ソリッドステートドライブ（ＳＳＤ）などのソリッドステート記憶デバイスに組み込まれる。
【０００３】
いくつかの例では、データを不揮発性メモリデバイスに書き込むとき、コントローラは、データをメモリ誤りから保護するための１つまたは複数の動作を実行することができる。例えば、データを不揮発性メモリデバイスに書き込むことに加え、コントローラは、メモリ誤りの場合など、データを復元するために使用することができるパリティデータを生成し、およびメモリデバイスに書き込むことができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
１つの例では、記憶デバイスは、複数のメモリデバイスを含む主記憶アレイと、１つまたは複数のパリティメモリデバイスと、データのブロックを記憶するように構成されたコントローラと、を含む。この例では、コントローラは、少なくとも、データのブロックを主記憶アレイに書き込み、データのブロックに対するパリティデータを判定し、および判定されたパリティデータの少なくとも一部を１つまたは複数のパリティメモリデバイスに書き込むことによって、データのブロックを記憶するように構成される。
【０００５】
別の例では、方法は、記憶デバイスのコントローラによって、データのブロックを、複数のメモリデバイスを含む主記憶アレイに書き込むステップと、コントローラによって、データのブロックに対するパリティデータを判定するステップと、コントローラによって、判定されたパリティデータを１つまたは複数のパリティメモリデバイスに書き込むステップと、を含む。
【０００６】
別の例では、コンピュータ可読記憶媒体は、実行されるときに、記憶デバイスの１つまたは複数のプロセッサに、データのブロックを、複数のメモリデバイスを含む主記憶アレイに書き込ませ、データのブロックに対するパリティデータを判定させ、および判定されたパリティデータを１つまたは複数のパリティメモリデバイスに書き込ませる、命令を記憶する。
【０００７】
別の例では、システムは、複数のメモリデバイスを含む主記憶アレイと、１つまたは複数のパリティメモリデバイスと、データのブロックを主記憶アレイに書き込む手段と、データのブロックに対するパリティデータを判定する手段と、判定されたパリティデータを１つまたは複数のパリティメモリデバイスに書き込む手段と、を含む。
【０００８】
１つまたは複数の例の詳細が、添付図面および以下の詳細な説明で示される。他の特徴、目的、および利点は、詳細な説明および図面から、ならびに特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【０００９】
【図１】本開示の１つまたは複数の技術に従った、記憶デバイスがホストデバイスに対する記憶デバイスとして機能することができる例示的な記憶環境を示す概念的かつ概略的なブロック図である。
【図２】本開示の１つまたは複数の技術に従った、複数のブロックを含み、各ブロックが複数のページを含む例示的なメモリデバイスを示す概念的なブロック図である。
【図３】本開示の１つまたは複数の技術に従った、コントローラの例示的な詳細を示す概念的かつ概略的なブロック図である。
【図４】本開示の１つまたは複数の技術に従った、メモリデバイスの同一のページに記憶されたユーザデータおよび対応するパリティデータの例示的な論理的構成を示す概念的なブロック図である。
【図５】本開示の１つまたは複数の技術に従った、メモリデバイスの同一のページに記憶されたユーザデータおよび対応するパリティデータの例示的な物理的構成を示す概念的なブロック図である。
【図６】本開示の１つまたは複数の技術に従った、メモリデバイスの異なるページに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な論理的構成を示す概念的なブロック図である。
【図７】本開示の１つまたは複数の技術に従った、メモリデバイスの異なるページに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な物理的構成を示す概念的なブロック図である。
【図８】本開示の１つまたは複数の技術に従った、異なるメモリデバイスに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な論理的構成を示す概念的なブロック図である。
【図９】本開示の１つまたは複数の技術に従った、異なるメモリデバイスに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な物理的構成を示す概念的なブロック図である。
【図１０】本開示の１つまたは複数の技術に従った、少なくともいくつかのパリティデータを、関連付けられたユーザデータとは異なるメモリデバイスに記憶する例示的な技術を示すフローチャートである。
【発明を実施するための形態】
【００１０】
本開示は、ユーザデータを主メモリデバイスに記憶し、およびユーザデータと関連付けられた少なくともいくつかの誤り訂正コード（ＥＣＣ）パリティデータをパリティメモリデバイスに記憶するように構成されたコントローラを含む記憶デバイスを説明する。少なくともいくつかのＥＣＣパリティデータをパリティメモリデバイスに記憶することによって、ＥＣＣパリティデータによってより大きな量の記憶を使用することができ、それは、より強度のあるＥＣＣパリティ技術を可能にし、ユーザデータの完全性をより良好に保護することができる。相対的に、いくつかの記憶デバイスでは、ＥＣＣパリティデータのサイズは、ユーザデータのブロックのサイズとメモリデバイスの物理的ページのサイズとの間の差に制限されることがある。例えば、メモリデバイスにおける物理的ページが８３２０バイトを含み、およびユーザデータのブロックのサイズが８１９２バイトである場合、パリティデータのサイズは、１２８バイトに制限されることがある。少なくともいくつかのＥＣＣパリティデータをパリティメモリデバイスに記憶することはまた、柔軟性のあるＥＣＣ強度を促進することができ、例えば、記憶デバイスの年月が増加するにつれて、ＥＣＣパリティデータの量が増加する。
【００１１】
さらに、少なくともいくつかのＥＣＣパリティデータをパリティメモリデバイスに記憶することは、ＥＣＣパリティ情報を記憶するために主メモリデバイス内でデータの複数のページを利用することと比較して、主メモリデバイスの読み込みアクセスを低減させることができる。いくつかの例では、進化した論理−物理アドレスマッピングスキームをコントローラが使用する場合など、コントローラによって使用されるパリティデータのサイズは、メモリデバイスの物理的ページのサイズと独立してもよい。特に、コントローラは、パリティデータを記憶するために複数の物理的ページアドレスを割り当ててもよい。このようにして、コントローラは、より高いＥＣＣ強度を使用することができる。しかしながら、パリティデータの一部がユーザデータとは別個のメモリデバイスのページに記憶されるので、コントローラは、ユーザデータを読み出すために、第１の物理的ページおよび第２の物理的ページの両方を読み込む必要があることがある。同様に、ユーザデータを記憶するとき、コントローラは、メモリデバイスにおける２つの異なる物理アドレスに書き込む必要があることがあり、これは、望ましくないことがある（例えば、サイクルカウントが増加し、性能が低減し、信頼性が低減し、および読み込み障害が増加することに起因して）。主メモリデバイスの読み込みおよび書き込みアクセスを低減させることが、主メモリデバイスの摩耗を低減させることができ、および主メモリデバイスの寿命を延ばすことができる。
【００１２】
本開示の１つまたは複数の技術に従って、コントローラは、ＥＣＣパリティデータの少なくとも一部を別個のパリティメモリデバイスに記憶してもよい。例えば、コントローラは、ユーザデータのブロックと関連付けられたパリティデータを判定し、ユーザデータのブロックを主メモリデバイスに記憶し、およびパリティデータの少なくとも一部を、主メモリデバイスとは別個であるパリティメモリデバイスに記憶してもよい。いくつかの例では、コントローラは、パリティデータの少なくとも一部をパリティメモリデバイスに書き込むのと並列して、ユーザデータのブロックを主メモリデバイスに書き込んでもよい。同様に、いくつかの例では、コントローラは、パリティデータの少なくとも一部をパリティメモリデバイスから読み込むのと並列して、ユーザデータのブロックを主メモリデバイスから読み込んでもよい。このようにして、コントローラは、性能を著しく低減させることなく、より大きなサイズのパリティデータを使用することができる。
【００１３】
いくつかの例では、パリティメモリデバイスは、主メモリデバイスと同一のタイプのメモリデバイスであってもよい。例えば、いくつかの例では、パリティメモリデバイスおよび主メモリデバイスの両方は、ＮＡＮＤフラッシュメモリデバイスであってもよいが、コントローラによって別個にアドレス可能であってもよい。しかしながら、パリティデータのサイズは、ユーザデータのサイズよりも著しく小さくてもよく、したがって、パリティメモリデバイスのサイズは、主メモリデバイスのサイズよりも著しく小さくてもよい。例えば、パリティメモリデバイスに記憶されたパリティデータのサイズは、主メモリデバイスに記憶されたユーザデータのサイズの１０分の１よりも小さくてもよい。
【００１４】
本開示の１つまたは複数の技術に従って、記憶デバイスは、主メモリデバイスと、主メモリデバイスとは異なるタイプのメモリデバイスであるパリティメモリデバイスとを含んでもよい。いくつかの例では、主記憶デバイスは、ＮＡＮＤフラッシュメモリデバイスであってもよく、およびパリティメモリデバイスは、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）デバイス、相変化ランダムアクセスメモリ（ＰＲＡＭ）デバイス、または抵抗ランダムアクセスメモリ（ＲｅＲＡＭ）デバイスなど、ストレージクラスタイプのメモリデバイスであってもよい。いくつかのフラッシュメモリデバイス（例えば、ＮＡＮＤフラッシュメモリデバイス）と比較して、そのようなストレージクラスメモリデバイスは、増加したビットあたりのコスト、および低減した待ち時間（例えば、マイクロ秒に対してナノ秒）を有することができる。上記議論されたように、パリティデータのサイズは、ユーザデータのサイズよりも著しく小さくてもよい。したがって、パリティメモリデバイスのサイズは、主メモリデバイスのサイズよりも著しく小さくすることができ、これは、パリティメモリデバイスのコストを著しく少なくすることができる。加えて、パリティメモリデバイスが、主メモリデバイスよりも短い待ち時間を有することができるので、パリティメモリデバイスに対するパリティデータの書き込みおよび読み込みは、主メモリデバイスに対するユーザデータの書き込みおよび読み込みに要する時間よりも少なくすることができる。このようにして、コントローラは、性能を著しく低減させることなく、より大きなサイズのパリティデータを使用することができる。
【００１５】
図１は、本開示の１つまたは複数の技術に従った、記憶デバイス６がホストデバイス４に対する記憶デバイスとして機能することができる例示的な記憶環境２を示す概念的かつ簡略的なブロック図である。例えば、ホストデバイス４は、データを記憶および読み出すために記憶デバイス６に含まれる不揮発性メモリデバイスを利用してもよい。いくつかの例では、記憶環境２は、記憶アレイとして動作することができる、記憶デバイス６などの複数の記憶デバイスを含んでもよい。例えば、記憶環境２は、総合的にホストデバイス４に対する大容量記憶デバイスとして機能するリダンダント・アレイ・オブ・インエクスペンシブ／インディペンデント・ディスクズ（ＲＡＩＤ）として構成された複数の記憶デバイス６を含んでもよい。
【００１６】
記憶環境２は、記憶デバイス６などの１つまたは複数の記憶デバイスに、および／または１つまたは複数の記憶デバイスから、データを記憶および／または読み出すことができるホストデバイス４を含んでもよい。図１に示されるように、ホストデバイス４は、インタフェース１４を介して記憶デバイス６と通信してもよい。ホストデバイス４は、コンピュータサーバ、ネットワークアタッチトストレージ（ＮＡＳ）ユニット、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどの電話ハンドセット、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレイヤ、ビデオゲームコンソール、およびビデオストリーミングデバイスなどを含む広範囲なデバイスを含んでもよい。
【００１７】
図１に示されるように、記憶デバイス６は、コントローラ８、不揮発性メモリアレイ１０（ＮＶＭＡ１０）、揮発性メモリ１２、インタフェース１４、およびパリティメモリデバイス２０を含んでもよい。いくつかの例では、記憶デバイス６は、明確にするために図１には示されていない追加の構成要素を含んでもよい。例えば、記憶デバイス６は、記憶デバイス６の構成要素が機械的に取り付けられ、および記憶デバイス６の構成要素を電子的に相互接続する導電性トレースを含むなどのプリントボード（ＰＢ）を含んでもよい。いくつかの例では、記憶デバイス６の物理的寸法およびコネクタ構成は、１つまたは複数の標準フォームファクタに従ってもよい。いくつかの例示的な標準フォームファクタは、３．５  ハードディスクドライブ（ＨＤＤ）、２．５  ＨＤＤ、１．８  ＨＤＤ、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）、ＰＣＩ−エクステンデッド（ＰＣＩ−Ｘ）、ＰＣＩエクスプレス（ＰＣＩｅ）（例えば、ＰＣＩｅ  ｘ１、ｘ４、ｘ８、ｘ１６、ＰＣＩｅミニカード、ミニＰＣＩなど）を含むが、それらに限定されない。いくつかの例では、記憶デバイス６は、ホストデバイス４のマザーボードに直接結合されてもよい（例えば、直接半田付けされる）。
【００１８】
記憶デバイス６は、ホストデバイス４とインタフェースするためのインタフェース１４を含んでもよい。インタフェース１４は、ホストデバイス４とデータを交換するためのデータバス、およびホストデバイス４とコマンドを交換するための制御バスのうちの１つまたは両方を含んでもよい。インタフェース１４は、任意の適切なプロトコルに従って動作してもよい。例えば、インタフェース１４は、以下のプロトコル、アドバンスドテクノロジーアタッチメント（ＡＴＡ）（例えば、シリアルＡＴＡ（ＳＡＴＡ）、およびパラレルＡＴＡ（ＰＡＴＡ））、ファイバーチャネル、スモールコンピュータシステムインタフェース（ＳＣＳＩ）、シリアル・アッタチドＳＣＳＩ（ＳＡＳ）、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）、ＰＣＩ−エクスプレス、またはノンボラタイル・メモリ・エクスプレス（ＮＶＭｅ）、のうちの１つまたは複数に従って動作してもよい。インタフェース１４の電子的接続（例えば、データバス、制御バス、またはその両方）は、コントローラ８に電子的に接続され、ホストデバイス４とコントローラ８との間の電子的接続をもたらし、およびホストデバイス４とコントローラ８との間でデータが交換されることを可能にする。いくつかの例では、インタフェース１４の電子的接続はまた、記憶デバイス６が電力をホストデバイス４から受信することを可能にすることができる。
【００１９】
記憶デバイス６は、複数のメモリデバイス１６Ａａ〜１６Ｎｎ（総合的に、「メモリデバイス１６」）を含むことができる、ＮＶＭＡ１０を含んでもよい。メモリデバイス１６の各々は、データを記憶および／または読み出すように構成されてもよい。例えば、メモリデバイス１６のメモリデバイスは、データおよびメッセージを、データを記憶するようにメモリデバイスに指示するコントローラ８から受信してもよい。同様に、メモリデバイス１６のメモリデバイスは、メッセージを、データを読み出すようにメモリデバイスに指示するコントローラ８から受信してもよい。いくつかの例では、メモリデバイス１６の各々は、ダイと称されてもよい。いくつかの例では、単一の物理的チップは、複数のダイ（すなわち、複数のメモリデバイス１６）を含んでもよい。いくつかの例では、メモリデバイス１６の各々は、比較的大容量のデータ（例えば、１２８ＭＢ、２５６ＭＢ、５１２ＭＢ、１ＧＢ、２ＧＢ、４ＧＢ、８ＧＢ、１６ＧＢ、３２ＧＢ、６４ＧＢ、１２８ＧＢ、２５６ＧＢ、５１２ＧＢ、１ＴＢなど）を記憶するように構成されてもよい。
【００２０】
いくつかの例では、メモリデバイス１６は、フラッシュメモリデバイスを含んでもよい。フラッシュメモリデバイスは、ＮＡＮＤまたはＮＯＲベースのフラッシュメモリデバイスを含んでもよく、およびフラッシュメモリセルごとにトランジスタのフローティングゲートに含まれる電荷に基づいてデータを記憶してもよい。ＮＡＮＤフラッシュメモリデバイスでは、フラッシュメモリデバイスは、複数のブロックに分割されてもよい。図２は、複数のブロック１７Ａ〜１７Ｎ（総合的に、「ブロック１７」）を含み、各ブロックは、複数のページ１９Ａａ〜１９Ｎｍ（総合的に、「ページ１９」）を含む例示的なメモリデバイス１６Ａａを示す概念的なブロック図である。ブロック１７の各ブロックは、複数のＮＡＮＤセルを含んでもよい。ＮＡＮＤセルの行は、ページ（ページ１９の１つのページ）を定義するためにワードラインを使用して連続して電子的に接続されてもよい。複数のページ１９の各々におけるそれぞれのセルは、それぞれのビットラインに電子的に接続されてもよい。コントローラ８は、ページレベルにおいてデータをＮＡＮＤフラッシュメモリデバイスに書き込み、およびデータをＮＡＮＤフラッシュメモリデバイスから読み込んでもよく、ならびにブロックレベルにおいてデータをＮＡＮＤフラッシュメモリデバイスから消去してもよい。
【００２１】
いくつかの例では、メモリデバイス１６は、任意のタイプの不揮発性メモリデバイスを含んでもよい。メモリデバイス１６のいくつかの例は、フラッシュメモリデバイス（例えば、ＮＡＮＤまたはＮＯＲ）、相変化メモリ（ＰＣＭ）デバイス、抵抗ランダムアクセスメモリ（ＲｅＲＡＭ）デバイス、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）デバイス、強誘電体ランダムアクセスメモリ（Ｆ−ＲＡＭ）、ホログラフィックメモリデバイス、および任意の他のタイプの不揮発性メモリデバイスを含むが、それらに限定されない。
【００２２】
いくつかの例では、コントローラ８がメモリデバイス１６の各メモリデバイスに別個に接続されることは実用的でないことがある。このように、メモリデバイス１６とコントローラ８との間の接続が多重化されてもよい。例として、メモリデバイス１６は、チャネル１８Ａ〜１８Ｎ（総合的に、「チャネル１８」）にグループ化されてもよい。例えば、図１に示されるように、メモリデバイス１６Ａａ〜１６Ａｎは、第１のチャネル１８Ａにグループ化されてもよく、およびメモリデバイス１６Ｎａ〜１６Ｎｎは、第Ｎのチャネル１８Ｎにグループ化されてもよい。チャネル１８の各々にグループ化されたメモリデバイス１６は、コントローラ８への１つまたは複数の接続を共有してもよい。例えば、第１のチャネル１８Ａにグループ化されたメモリデバイス１６は、共通Ｉ／Ｏバスおよび共通制御バスに取り付けられてもよい。記憶デバイス６は、チャネル１８の各々のそれぞれのチャネルに対する共通Ｉ／Ｏバスおよび共通制御バスを含んでもよい。いくつかの例では、チャネル１８の各チャネルは、各チャネル上でメモリデバイスを多重化するために使用することができるチップ対応（ＣＥ）ラインの組を含んでもよい。例えば、各ＣＥラインは、メモリデバイス１６のそれぞれのメモリデバイスに接続されてもよい。このようにして、コントローラ８とメモリデバイス１６との間のいくつかの別個の接続を低減させることができる。加えて、各チャネルがコントローラ８への独立した組の接続を有するので、コントローラ８が異なるコマンドを各チャネルに対して同時に発行するにつれて、接続の低減がデータスループット率に著しく影響を与えないことがある。
【００２３】
記憶デバイス６は、記憶デバイス６の１つまたは複数の構成要素に電力を供給することができる電力供給装置１１を含んでもよい。標準モードで動作するとき、電力供給装置１１は、ホストデバイス４などの外部デバイスによって供給される電力を使用して、電力を１つまたは複数の構成要素に供給してもよい。例えば、電力供給装置１１は、インタフェース１４を介してホストデバイス４から受信された電力を使用して、電力を１つまたは複数の構成要素に供給してもよい。いくつかの例では、電力供給装置１１は、電力が外部デバイスから受信されるのを停止する場合など、シャットダウンモードで動作するときに電力を１つまたは複数の構成要素に供給するように構成された１つまたは複数の蓄電構成要素を含んでもよい。このようにして、電力供給装置１１は、オンボードのバックアップ電源として機能することができる。１つまたは複数の蓄電構成要素のいくつかの例は、コンデンサ、超コンデンサ、およびバッテリなどを含むが、それらに限定されない。
【００２４】
記憶デバイス６はまた、情報を記憶するためにコントローラ８によって使用することができる揮発性メモリ１２を含んでもよい。いくつかの例では、コントローラ８は、揮発性メモリ１２をキャッシュとして使用してもよい。例えば、コントローラ８は、キャッシュされた情報１３がメモリデバイス１６に書き込まれるまで、キャッシュされた情報１３を揮発性メモリ１２に記憶してもよい。図１に示されるように、揮発性メモリ１２は、電力供給装置１１から受信された電力を消費してもよい。揮発性メモリ１２の例は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ならびに同時性ダイナミックＲＡＭ（ＳＤＲＡＭ（例えば、ＤＤＲ１、ＤＤＲ２、ＤＤＲ３、ＤＤＲ３Ｌ、ＬＰＤＤＲ３、およびＤＤＲ４など））を含むが、それらに限定されない。
【００２５】
記憶デバイス６は、記憶デバイス６の１つまたは複数の動作を管理することができるコントローラ８を含む。例えば、コントローラ８は、メモリデバイス１６からのデータの読み込み、および／またはメモリデバイス１６へのデータの書き込みを管理してもよい。いくつかの例では、コントローラ８は、メモリデバイス１６によって記憶されたデータを管理するための１つまたは複数の動作を実行してもよい。例えば、コントローラ８は、メモリデバイス１６によって記憶されたユーザデータに対するパリティデータを記憶することなど、メモリデバイス１６によって記憶されたデータの完全性を保証するための１つまたは複数の動作を実行してもよい。コントローラ８の追加的な詳細は、図３を参照して以下で議論される。
【００２６】
本開示の１つまたは複数の技術に従って、記憶デバイス６は、少なくともいくつかのパリティ情報を記憶するためにコントローラ８によって使用することができる１つまたは複数のパリティメモリデバイス２０を含んでもよい。いくつかの例では、パリティメモリデバイス２０は、任意のタイプの不揮発性メモリデバイスを含んでもよい。パリティメモリデバイス２０のいくつかの例は、ＮＡＮＤフラッシュメモリデバイスおよび／またはＮＯＲフラッシュメモリデバイスなどのフラッシュメモリデバイス、ストレージクラスメモリデバイス、ホログラフィックメモリデバイス、ならびに任意の他のタイプの不揮発性メモリデバイスを含むが、それらに限定されない。ストレージクラスメモリデバイスのいくつかの例は、相変化メモリ（ＰＣＭ）デバイス、抵抗ランダムアクセスメモリ（ＲｅＲＡＭ）デバイス、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）デバイス、および強誘電体ランダムアクセスメモリ（Ｆ−ＲＡＭ）を含むが、それらに限定されない。いくつかの例では、ストレージクラスメモリデバイスは、バイトアクセス可能であることができ、比較的高い持続性を有することができ（フラッシュメモリと比較して、またはフラッシュメモリよりも高い）、比較的低い書き込みおよび書き込み待ち時間を有することができる（例えば、フラッシュメモリよりも低く、いくつかの例では、ＤＲＡＭと比較して）。
【００２７】
上記議論されたように、コントローラ８は、メモリデバイス１６、パリティメモリデバイス２０、またはその両方に、メモリデバイス１６によって記憶されたユーザデータと関連付けられたパリティデータを記憶させてもよい。例えば、ユーザデータのブロックを記憶するとき、コントローラ８は、ユーザデータのブロックの排他的−ＯＲ（ＸＯＲ）を判定し、およびユーザデータとともに記憶してもよい。ユーザデータのブロックを読み出すとき、コントローラ８は、ユーザデータの記憶されたブロックおよびユーザデータのブロックと関連付けられた記憶されたパリティデータの両方を読み込んでもよく、ならびにユーザデータのブロックを検証するために記憶されたパリティデータを使用してもよい。いくつかの例では、コントローラ８は、パリティデータをユーザデータとともにメモリデバイスの同一の物理的ページに記憶してもよい。例えば、コントローラ８は、パリティデータをユーザデータとともに図２のメモリデバイス１６Ａａのブロック１７Ａのページ１９Ａａに記憶してもよい。
【００２８】
コントローラ８によって使用されるパリティデータのサイズは、ＥＣＣ強度と称されてもよい。いくつかの例では、より大きいサイズのパリティデータは、データ破損誤りに対するより良好な保護をもたらすことができる。しかしながら、パリティデータのサイズが増加するにつれて、パリティデータによって消費されるメモリの量も増加する。いくつかの例では、コントローラ８がパリティデータをユーザデータとともにメモリデバイスの同一の物理的ページに記憶する場合など、パリティデータのサイズは、ユーザデータのブロックのサイズとメモリデバイスの物理的ページのサイズとの間の差に制限されることがある。例えば、物理的ページ１９Ａａのサイズが８３２０バイトであり、およびユーザデータのブロックのサイズが８１９２バイトである場合、コントローラ８がユーザデータとして同一のページに記憶することができるパリティデータのサイズが１２８バイトに制限されることがある。しかしながら、いくつかの例では、例えば、データ破損誤りに対するより強度のある保護をもたらすために、ユーザデータのブロックのサイズとメモリデバイスの物理的ページのサイズとの間の制限されたサイズ差よりも大きいパリティデータをコントローラ８が記憶することが望ましいことがある。
【００２９】
いくつかの例では、コントローラ８は、パリティデータのサイズをメモリデバイス１６の物理的ページのサイズ、メモリデバイス１６の物理的ページのサイズとユーザデータのブロックのサイズとの間の差、またはその両方から独立させてもよい。例えば、コントローラ８は、ユーザデータおよびパリティデータの少なくともいくつかを、メモリデバイス１６内の異なる物理的ページに記憶してもよい。１つの例として、コントローラ８は、パリティデータの第１の部分をユーザデータとともにメモリデバイス１６Ａａのページ１９Ａａに記憶してもよく、およびパリティデータの第２の部分をメモリデバイス１６Ａａのページ１９Ａｂに記憶してもよい。しかしながら、パリティデータの第２の部分がユーザデータとは別個のメモリデバイス１６のページに記憶されるので、コントローラ８は、ユーザデータを読み出しおよび復号化するために、両方のページ（例えば、ページ１９Ａａおよびページ１９Ａｂ）を読み込む必要があることがある。同様に、ユーザデータを記憶するとき、コントローラ８は、メモリデバイス１６における２つの異なる物理的ページに書き込む必要があることがあり、これは望ましくないことがある（例えば、サイクルカウントが増加し、性能が低減し、信頼性が低減し、および読み込み障害が増加することに起因して）。別の例として、パリティデータを、メモリデバイス１６のメモリデバイス内の対応するユーザデータとは異なる物理的ページに記憶することとは反対に、コントローラ８は、パリティデータの少なくとも一部をパリティメモリデバイス２０に記憶してもよい。例えば、コントローラ８は、ユーザデータのブロックに対するパリティデータを判定し、ユーザデータのブロックをメモリデバイス１６に記憶し、およびパリティデータの少なくとも一部をパリティメモリデバイス２０に記憶してもよい。いくつかの例では、コントローラ８は、パリティデータの少なくとも一部をパリティメモリデバイス２０に書き込むのと並列して、ユーザデータのブロックをメモリデバイス１６に書き込んでもよい。同様に、いくつかの例では、コントローラ８は、パリティデータの少なくとも一部をパリティメモリデバイス２０から読み込むのと並列して、ユーザデータのブロックをメモリデバイス１６から読み込んでもよい。このようにして、コントローラ８は、望ましくない影響（サイクルカウントが増加し、性能が低減し、信頼性が低減し、および読み込み障害が増加することに起因すること）なしに、またはその影響を低減させて、より大きなサイズのパリティデータを使用することができる。
【００３０】
図３は、コントローラ８の例示的な詳細を示す概念的かつ簡略的なブロック図である。いくつかの例では、コントローラ８は、アドレス変換モジュール２２、書き込みモジュール２４、維持モジュール２６、読み込みモジュール２８、スケジューリングモジュール３０、および複数のチャネルコントローラ３２Ａ〜３２Ｎ（総合的に、「チャネルコントローラ３２」）を含んでもよい。他の例では、コントローラ８は、追加のモジュールもしくはハードウェアユニットを含んでもよく、またはより少ないモジュールもしくはハードウェアユニットを含んでもよい。コントローラ８は、マイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または他のデジタル論理回路を含んでもよい。
【００３１】
コントローラ８は、インタフェース１４を介してホストデバイス４とインタフェースしてもよく、ならびにメモリデバイス１６へのデータの記憶およびメモリデバイス１６からのデータの読み出しを管理してもよい。例えば、コントローラ８の書き込みモジュール２４は、メモリデバイス１６への書き込みを管理してもよい。例えば、書き込みモジュール２４は、インタフェース１４を介して、論理アドレスと関連付けられたデータ、およびユーザデータと称されてもよいデータを記憶するよう記憶デバイス６に指示するメッセージをホストデバイス４から受信してもよい。書き込みモジュール２４は、メモリデバイス１６へのユーザデータの書き込みを管理してもよい。
【００３２】
例えば、書き込みモジュール２４は、データの記憶位置を管理するためにホストデバイス４によって使用される論理アドレスとメモリデバイスへのデータの書き込みを命令するために書き込みモジュール２４によって使用される物理ブロックアドレスとの間の変換を管理するアドレス変換モジュール２２と通信してもよい。コントローラ８のアドレス変換モジュール２２は、メモリデバイス１６によって記憶されたデータの論理アドレス（または論理ブロックアドレス）を、メモリデバイス１６によって記憶されたデータの物理ブロックアドレスに変換するフラッシュ変換レイヤまたはテーブルを利用してもよい。例えば、ホストデバイス４は、記憶デバイス６への命令またはメッセージにおいてメモリデバイス１６によって記憶されたデータの論理ブロックアドレスを利用してもよく、書き込みモジュール２４は、メモリデバイス１６へのデータの書き込みを制御するためにデータの物理ブロックアドレスを利用する。（同様に、読み込みモジュール２８は、メモリデバイス１６からのデータの読み込みを制御するために物理ブロックアドレスを利用してもよい。）物理ブロックアドレスは、メモリデバイス１６の実際の、物理ブロックに対応する。いくつかの例では、アドレス変換モジュール２２は、フラッシュ変換レイヤまたはテーブルを、キャッシュされた情報１３内など、揮発性メモリ１２に記憶してもよい。
【００３３】
このようにして、ホストデバイス４は、ある組のデータに対する静的論理ブロックアドレスを使用することを許可されることができ、データが実際に記憶される物理ブロックアドレスが変化することができる。アドレス変換モジュール２２は、論理ブロックアドレスを物理ブロックアドレスにマッピングして、例えば、ウェアレベリング、またはガーベッジコレクションなどに起因してデータの物理ブロックアドレスが変化することができる間、ホストデバイス４による静的論理ブロックアドレスの使用を許可するためにフラッシュ変換レイヤまたはテーブルを維持してもよい。
【００３４】
上記議論されたように、コントローラ８の書き込みモジュール２４は、メモリデバイス１６へのデータの書き込みを管理するための１つまたは複数の動作を実行してもよい。例えば、書き込みモジュール２４は、データを記憶するためにメモリデバイス１６内の１つまたは複数のブロックを選択し、および選択されたブロックを含むメモリデバイス１６のメモリデバイスに実際にデータを記憶させることによって、メモリデバイス１６へのデータの書き込みを管理してもよい。上記議論されたように、書き込みモジュール２４は、アドレス変換モジュール２２に、選択されたブロックに基づいてフラッシュ変換レイヤまたはテーブルを更新させてもよい。例えば、書き込みモジュール２４は、データおよび論理ブロックアドレスの一式を含むメッセージをホストデバイス４から受信し、データを記憶するためにメモリデバイス１６の特定のメモリデバイス内のブロックを選択し、メモリデバイス１６の特定のメモリデバイスに実際にデータを記憶させ（例えば、特定のメモリデバイスに対応するチャネルコントローラ３２のチャネルコントローラを介して）、ならびにアドレス変換モジュール２２に、論理ブロックアドレスが特定のメモリデバイス内の選択されたブロックに対応することを示すようにフラッシュ変換レイヤまたはテーブルを更新させてもよい。
【００３５】
読み込みモジュール２８は同様に、メモリデバイス１６からのデータの読み込みを制御してもよい。例えば、読み込みモジュール２８は、関連付けられた論理ブロックアドレスを有するデータを要求するメッセージをホストデバイス４から受信してもよい。アドレス変換モジュール２２は、フラッシュ変換レイヤまたはテーブルを使用して、論理ブロックアドレスを物理ブロックアドレスに変換してもよい。次いで、読み込みモジュール２８は、データを物理ブロックアドレスから読み出すようにチャネルコントローラ３２のうちの１つまたは複数を制御してもよい。書き込みモジュール２４と同様に、読み込みモジュール２８は、１つまたは複数のブロックを選択し、およびチャネルコントローラ３２に、データを選択されたブロックから読み込ませることができるメッセージをチャネルコントローラ３２に通信してもよい。
【００３６】
０の論理値（荷電した）を有するビットを１の前の論理値（荷電していない）を有するビットに書き込むために、大電流が使用される。この電流は、隣接フラッシュメモリセルの荷電に対する意図しない変化を生じさせることがあるのに十分に大きいことがある。意図しない変化から保護するために、任意のデータをブロック内のセルに書き込む前に、フラッシュメモリセルのブロック全体が１の論理値（荷電していない）に消去されてもよい。これを理由に、フラッシュメモリセルは、ブロックレベルにおいて消去され、およびページレベルにおいて書き込まれてもよい。
【００３７】
よって、１つのページさえも消費しない量のデータを書き込むために、コントローラ８は、ブロック全体を消去させてもよい。これは、メモリデバイス１６に書き込まれることになるホストデバイス４から受信されたデータの量と、メモリデバイス１６に実際に書き込まれたデータの量との間の比率を指す、ライトアンプリフィケーションにつながることがある。ライトアンプリフィケーションは、ライトアンプリフィケーションとともに発生しないフラッシュメモリセルのより早い摩耗の一因となる。フラッシュメモリセルに対する摩耗は、フラッシュメモリセルを消去するために使用される比較的高い電圧に起因してフラッシュメモリセルが消去されるときに発生することがある。複数の消去サイクルを通じて、比較的高い電圧によって、フラッシュメモリセルへの変化をもたらすことがある。最終的に、フラッシュメモリセルが使い古され、それによって、データがこれ以上セルに書き込まれないことがある。
【００３８】
コントローラ８がライトアンプリフィケーションおよびフラッシュメモリセルの磨耗を低減させるために実装することができる１つの技術は、ホストデバイス４から受信されたデータを、未使用ブロック（例えば、図２のブロック１７）または部分的に使用されているブロックに書き込むことを含む。例えば、ホストデバイス４がデータを記憶デバイス６に送信する場合、それは、記憶デバイス６によって既に記憶されているデータからのわずかな変更のみを含む。次いで、コントローラは、旧データを古いまたはもはや有効でないものとしてマーク付けしてもよい。時間とともに、これは、旧データを保持するブロックを消去し、および更新されたデータを同一のブロックに書き込むことと比較して、露呈されるブロックの消去動作の数を低減させることができる。
【００３９】
書き込みコマンドをホストデバイス４から受信したことに応じて、書き込みモジュール２４は、データを書き込むためのメモリデバイス１６の物理的位置（ブロック１７）を判定してもよい。例えば、書き込みモジュール２４は、アドレス変換モジュール２２または維持モジュール２６から、空であり（例えば、データを記憶していない）、部分的に空であり（例えば、ブロックのいくつかのページのみがデータを記憶している）、または少なくともいくつかの有効でない（もしくは古い）データを記憶している１つまたは複数の物理ブロックアドレスを要求してもよい。１つまたは複数の物理ブロックアドレスを受信すると、書き込みモジュール２４は、１つまたは複数のブロックを定義および／または選択し、ならびにチャネルコントローラ３２にデータをブロックに書き込ませるメッセージをチャネルコントローラ３２Ａ〜３２Ｎ（総合的に、「チャネルコントローラ３２」）に通信してもよい。
【００４０】
チャネルコントローラ３２の各チャネルコントローラは、チャネル１８のそれぞれのチャネルに接続されてもよい。いくつかの例では、コントローラ８は、記憶デバイス６のチャネル１８の数と同一の数のチャネルコントローラ３２を含んでもよい。チャネルコントローラ３２は、例えば、書き込みモジュール２４、読み込みモジュール２８、および／または維持モジュール２６の制御の下、それぞれのチャネルに接続されたメモリデバイス１６のアドレス指定、プログラミング、消去、および読み込みの詳細な制御を実行してもよい。
【００４１】
維持モジュール２６は、記憶デバイス６（例えば、メモリデバイス１６）の性能を維持し、および有効寿命を延ばすことに関連する動作を実行してもよい。例えば、維持モジュール２６は、ウェアレベリングまたはガーベッジコレクションのうちの少なくとも１つを実装してもよい。
【００４２】
コントローラ８のスケジューリングモジュール３０は、メモリデバイス１６によって実行されることになる活動をスケジュールするための１つまたは複数の動作を実行してもよい。例えば、スケジューリングモジュール３０は、メモリデバイス１６のうちの１つまたは複数に、実行時間の間に１つまたは複数の活動を実行するよう命令するためにコントローラ８の他の構成要素から受信される要求をスケジュールしてもよい。いくつかの例では、スケジューリングモジュール３０は、それらが受信された順序（例えば、ファーストイン・ファーストアウト、すなわちＦＩＦＯ）で実行されることになる要求をスケジュールしてもよい。いくつかの例では、スケジューリングモジュール３０は、要求のタイプ（例えば、読み込み要求、書き込み要求、消去要求、ガーベッジコレクション要求など）、要求が受信されてからの経過時間の量、要求の実行によって消費される電力の量、および帯域幅の考慮などを含むことができるが、それらに限定されない１つまたは複数のファクタに基づいて要求をスケジュールしてもよい。
【００４３】
いくつかの例では、ユーザデータの一式をメモリデバイス１６によって記憶させることに加え、書き込みモジュール２４は、メモリデバイス１６に、データの一式を回復させ、および／またはデータの一式が損失もしくは破損したはずであるブロックのうちの１つもしくは複数であることを確認するために使用することができる情報（パリティデータ）を記憶させてもよい。いくつかの例では、書き込みモジュール２４は、パリティデータをユーザデータとともにメモリデバイス１６のメモリデバイスの同一の物理的ページに記憶させてもよい。例えば、アドレス変換モジュール２２は、単一の物理的ページアドレスを単一の論理的ページアドレスにマッピングすることができる単純な論理−物理アドレスマッピングスキームを実装してもよい。そのようなスキームの例は、図４および５を参照して以下で説明される。
【００４４】
いくつかの例では、書き込みモジュール２４がさらなるパリティデータをユーザデータのブロックに対して記憶させることが望ましいことがある。例えば、メモリデバイス１６が使用され、および古くなるにつれて、メモリデバイス１６のメモリセルの信頼性が低下することがある。いくつかの例では、メモリデバイス１６のメモリセルの信頼性は、ビット誤り率（ＢＥＲ）として定量化されてもよい。そのようにして、読み込みモジュール２８がユーザデータのブロックを読み出すことに成功する確率を改善するために、書き込みモジュール２４は、ＢＥＲが増加するにつれてさらなる大きなサイズのパリティデータを記憶してもよい。１つの例として、ＢＥＲが閾値未満である場合、書き込みモジュール２４は、ＢＥＲが閾値を上回るときよりも少ないパリティデータをユーザデータのブロックごとに記憶してもよい。
【００４５】
しかしながら、いくつかの例では、書き込みモジュール２４は、記憶されるパリティデータの量をさらに大きくさせることが容易に可能でないことがある。例えば、書き込みモジュール２４がユーザデータのブロックに対するパリティデータをユーザデータとともにメモリデバイス１６のメモリデバイスの同一の物理的ページに記憶させる例では、パリティデータのサイズが、ユーザデータのブロックのサイズとメモリデバイスの物理的ページのサイズとの間の差に制限されることがある。例えば、メモリデバイスにおける物理的ページが８３２０バイトを記憶することができ、およびユーザデータのブロックのサイズが８１９２バイトである場合、パリティデータのサイズが１２８バイトに制限されることがある。このサイズ制限は、書き込みモジュール２４が、記憶されるパリティデータの量を容易に増加させることを阻害することがあり、それは望ましくないことがある。
【００４６】
図４は、メモリデバイスの同一のページに記憶されたユーザデータおよび対応するパリティデータの例示的な論理的構成を示す概念的な図である。図４に示されるように、ユーザデータ４０Ａおよび対応するパリティデータ４２Ａは、論理的ページアドレス４４Ａと関連付けられてもよく、ならびにユーザデータ４０Ｂおよび対応するパリティデータ４２Ｂは、論理的ページアドレス４４Ｂと関連付けられてもよい。長さ４６は、各論理的ページアドレスにおけるユーザデータおよびパリティデータの組み合わされた長さを表してもよい。いくつかの例では、ユーザデータ４０Ａおよびユーザデータ４０Ｂは各々、８１９２バイト長であってもよく、ならびにパリティデータ４２Ａおよびパリティデータ４２Ｂは各々、１２８バイト長であってもよく、それによって、各論理的ページアドレスに記憶されることになるデータの組み合わされた長さは、８３２０バイトとすることができる。図５は、メモリデバイスの同一のページに記憶されたユーザデータおよび対応するパリティデータの例示的な物理的構成を示す概念的な図である。いくつかの例では、物理的ページアドレス５０Ａおよび物理的ページアドレス５０Ｂはそれぞれ、図２のページ１９Ａａおよびページ１９Ａｂに対応してもよい。長さ４８は、書き込みモジュール２４が各物理的ページアドレスに記憶させることができるデータの最大サイズを表してもよい。いくつかの例では、長さ４８は、８３２０バイトであってもよい。
【００４７】
論理的ページアドレスにおけるデータのブロックの組み合わされたサイズが、各物理的ページアドレスに記憶することができるデータの最大サイズ以下である場合、書き込みモジュール２４は、各物理的ページアドレスにおけるデータのブロックを、再配置なしで物理的ページアドレスに書き込ませてもよい。図４および５の例では、論理的ページアドレス４４Ａにおけるデータ（すなわち、ユーザデータ４０Ａおよびパリティデータ４２Ａ）のブロックの組み合わされた長さが長さ４８以下であるので、書き込みモジュール２４は、論理的ページアドレス４４Ａにおけるデータのブロックを、再配置なしで物理的ページアドレス５０Ａに書き込ませてもよい。しかしながら、この例では、書き込みモジュール２４が、ユーザデータ４０Ａおよびパリティデータ４２Ａの組み合わされたサイズが長さ４８よりも大きくなることなく、パリティデータ４２Ａのサイズを増加させることは可能でない。上記議論されたように、この制限は望ましくないことがある。
【００４８】
いくつかの例では、書き込みモジュール２４は、パリティデータのサイズをメモリデバイス１６の物理的ページのサイズと独立させてもよい。例えば、書き込みモジュール２４は、ユーザデータおよびパリティデータの少なくともいくつかを、メモリデバイス１６内の異なる物理的ページに記憶してもよい。１つの例として、コントローラ８は、パリティデータの第１の部分をユーザデータとともに、メモリデバイス１６Ａａのページ１９Ａａに記憶し、およびパリティデータの第２の部分をメモリデバイス１６Ａａのページ１９Ａｂに記憶してもよい。パリティデータの第２の部分がユーザデータとは別個のメモリデバイス１６のページに記憶されるので、読み込みモジュール２８は、ユーザデータを読み出すために、両方のページ（例えば、ページ１９Ａａおよびページ１９Ａｂ）を読み込んでもよい。同様に、ユーザデータを記憶するとき、書き込みモジュール２４はメモリデバイス１６における２つの異なる物理的ページに書き込んでもよい。
【００４９】
いくつかの例では、書き込みモジュール２４によって記憶されたパリティデータのサイズは、メモリデバイスの物理的ページのサイズと独立してもよい。例えば、アドレス変換モジュール２２は、論理的ページアドレスを複数の物理的ページアドレスにマッピングすることができる進化した論理−物理アドレスマッピングスキームを実装してもよい。そのようなスキームの例は、図６および７を参照して以下で説明される。
【００５０】
図６は、メモリデバイスの異なるページに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な論理的構成を示す概念的な図である。図６に示されるように、ユーザデータ４０Ａと対応するパリティデータ４２Ａ１およびパリティデータ４２Ａ２とは、論理的ページアドレス４４Ａと関連付けられてもよく、ならびにユーザデータ４０Ｂと対応するパリティデータ４２Ｂ１およびパリティデータ４２Ｂ２とは、論理的ページアドレス４４Ｂと関連付けられてもよい。長さ４６は、各論理的ページアドレスにおけるユーザデータおよびパリティデータの組み合わされた長さを表してもよい。図６の例では、ユーザデータ４０Ａおよびユーザデータ４０Ｂは各々、８１９２バイト長であってもよく、ならびにパリティデータ４２Ａ１、パリティデータ４２Ａ２、パリティデータ４２Ｂ１、およびパリティデータ４２Ｂ２は各々、１２８バイト長であってもよく、それによって、各論理的ページアドレスに記憶されることになるデータの組み合わされた長さは、８４４８バイトとすることができる。図７は、メモリデバイスの異なるページに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な物理的構成を示す概念的な図である。いくつかの例では、物理的ページアドレス５０Ａ、物理的ページアドレス５０Ｂ、および物理的ページアドレス５０Ｃはそれぞれ、図２のページ１９Ａａ、１９Ａｂ、およびページ１９Ａｃに対応してもよい。長さ４８は、書き込みモジュール２４が各物理的ページアドレスに記憶させることができるデータの最大サイズを表してもよい。図７の例では、長さ４８は、８３２０バイトであってもよい。
【００５１】
上記議論されたように、論理的ページアドレスにおけるデータのブロックの組み合わされたサイズが、各物理的ページアドレスに記憶することができるデータの最大サイズ以下である場合、書き込みモジュール２４は、各物理的ページアドレスにおけるデータのブロックを、再配置なしで物理的ページアドレスに書き込ませてもよい。しかしながら、図６および７の例では、論理的ページアドレス４４Ａにおけるデータ（すなわち、ユーザデータ４０Ａ、パリティデータ４２Ａ１、およびパリティデータ４２Ａ２）のブロックの組み合わされた長さが長さ４８よりも大きいので、書き込みモジュール２４は、論理的ページアドレス４４Ａにおけるデータのブロックを、複数の物理的ページアドレスに書き込ませてもよい。例えば、書き込みモジュール２４がデータのブロックを論理的ページアドレス４４Ａに記憶することを可能にするために、アドレス変換モジュール２２は、論理的ページアドレス４４Ａを、物理的ページアドレス５０Ａの全て、および物理的ページアドレス５０Ｂの第１の部分にマッピングしてもよい。同様に、書き込みモジュール２４がデータのブロックを論理的ページアドレス４４Ｂに記憶することを可能にするために、アドレス変換モジュール２２は、論理的ページアドレス４４Ｂを物理的ページアドレス５０Ｂの第２の部分、および物理的ページアドレス５０Ｃの第１の部分にマッピングしてもよい。マッピングに基づいて、書き込みモジュール２４は、ユーザデータ４０Ａおよびパリティデータ４２Ａ１を物理的ページアドレス５０Ａに記憶し、パリティデータ４２Ａ２およびユーザデータ４０Ｂを物理的ページアドレス５０Ｂに記憶し、ならびにパリティデータ４２Ｂ１およびパリティデータ４２Ｂ２を物理的ページアドレス５０Ｃに記憶してもよい。このようにして、書き込みモジュール２４は、より大きいサイズのパリティデータを記憶することができる。
【００５２】
パリティデータの一部がユーザデータとは別個のページに記憶されてもよいので、書き込みモジュール２４は、ユーザデータのブロックを記憶するために、２つの書き込み動作を実行してもよい。同様に、読み込みモジュール２８は、ユーザデータのブロックを読み出すために、２つの読み込み動作を実行してもよい。いくつかの例では、ユーザデータの単一のブロックを読み出しまたは記憶するための複数の読み込みまたは書き込み動作が望ましくないことがある（例えば、サイクルカウントが増加し、性能が低減し、信頼性が低減し、および読み込み障害が増加することに起因して）。
【００５３】
よって、いくつかの例では、パリティデータの少なくとも一部を、単一のメモリデバイス（例えば、メモリデバイス１６のメモリデバイス）内の対応するユーザデータとは異なる物理的ページに記憶する代わりに、書き込みモジュール２４は、パリティデータの少なくとも一部をパリティメモリデバイス２０に記憶してもよい。例えば、書き込みモジュール２４は、ユーザデータのブロックに対するパリティデータを判定し、ユーザデータのブロックをメモリデバイス１６に記憶し、およびパリティデータの少なくとも一部をパリティメモリデバイス２０に記憶してもよい。そのようなスキームの例は、図８および９を参照して以下で説明される。いくつかの例では、書き込みモジュール２４は、パリティデータの一部をパリティメモリデバイス２０に書き込むのと並列して、ユーザデータのブロックをメモリデバイス１６に書き込んでもよい。同様に、いくつかの例では、読み込みモジュール２８は、パリティデータの一部をパリティメモリデバイス２０から読み込むのと並列して、ユーザデータのブロックをメモリデバイス１６から読み込んでもよい。このようにして、書き込みモジュール２４は、望ましくない影響（例えば、サイクルカウントが増加し、性能が低減し、信頼性が低減し、および読み込み障害が増加すること）なしに、またはその影響を低減させて、より大きなサイズのパリティデータを使用することができる。
【００５４】
図８は、異なるメモリデバイスに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な論理的構成を示す概念的な図である。図８に示されるように、ユーザデータ４０Ａと対応するパリティデータ４２Ａ１およびパリティデータ４２Ａ２とは、論理的ページアドレス４４Ａと関連付けられてもよく、ならびにユーザデータ４０Ｂと対応するパリティデータ４２Ｂ１およびパリティデータ４２Ｂ２とは、論理的ページアドレス４４Ｂと関連付けられてもよい。長さ４６は、各論理的ページアドレスにおけるユーザデータおよびパリティデータの組み合わされた長さを表してもよい。図８の例では、ユーザデータ４０Ａおよびユーザデータ４０Ｂは各々、８１９２バイト長であってもよく、ならびにパリティデータ４２Ａ１、パリティデータ４２Ａ２、パリティデータ４２Ｂ１、およびパリティデータ４２Ｂ２は各々、１２８バイト長であってもよく、それによって、各論理的ページアドレスに記憶されることになるデータの組み合わされた長さは、８４４８バイトとすることができる。
【００５５】
図９は、異なるメモリデバイスに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な物理的構成を示す概念的な図である。いくつかの例では、物理的ページアドレス５０Ａ、および物理的ページアドレス５０Ｂはそれぞれ、図２のページ１９Ａａおよびページ１９Ａｂに対応してもよい。長さ４８は、書き込みモジュール２４がメモリデバイス１６の各物理的ページアドレスに記憶させることができるデータの最大サイズを表してもよい。図９の例では、長さ４８は、８３２０バイトであってもよい。長さ５２は、パリティメモリデバイス２０のパリティメモリデバイスに書き込まれるパリティデータのサイズを表してもよい。
【００５６】
図９に示されるように、書き込みモジュール２４は、パリティデータの少なくとも一部をパリティメモリデバイス２０に記憶してもよい。例えば、書き込みモジュール２４は、ユーザデータ４０Ａに対する第１のパリティデータ４２Ａ１および第２のパリティデータ４２Ａ２を判定してもよい。図８に示されるように、ユーザデータ４０Ａ、第１のパリティデータ４２Ａ１、および第２のパリティデータ４２Ａ２は全て、論理的ページアドレス４４Ａと関連付けられてもよい。アドレス変換モジュール２２は、ユーザデータ４０Ａおよび第１のパリティデータ４２Ａ１を、図２のページ１９Ａａに対応することができるメモリデバイス１６の物理的ページアドレス５０Ａにマッピングし、ならびに第２のパリティデータ４２Ａ２をパリティメモリデバイス２０にマッピングするマッピングを提供してもよい。マッピングに基づいて、書き込みモジュール２４は、ユーザデータ４０Ａおよび第１のパリティデータ４２Ａ１を、図２のメモリデバイス１６Ａａのページ１９Ａａに書き込ませてもよく、ならびに第２のパリティデータ４２Ａ２をパリティメモリデバイス２０に書き込ませてもよい。
【００５７】
図１０は、本開示の１つまたは複数の技術に従った、パリティデータを、対応するユーザデータとは異なるメモリデバイスに記憶するための例示的な技術を示すフローチャートである。図１０の技術は、説明を容易にするために、図１および３の記憶デバイス６およびコントローラ８を同時に参照して説明されるが、記憶デバイス６およびコントローラ８とは異なる構成を有するコンピューティングデバイスが、図１０の技術を実行してもよい。
【００５８】
図１０に示されるように、コントローラ８は、記憶されることになるデータのブロックを受信してもよい（１００２）。例えば、コントローラ８の書き込みモジュール２４は、記憶されることになるユーザデータのブロックを、図１のホスト４から受信してもよい。コントローラ８は、データのブロックに対するパリティデータを判定してもよい（１００４）。例えば、書き込みモジュール２４は、ホストデバイス４によって受信されたユーザデータのブロックに対するＸＯＲパリティデータを判定してもよい。いくつかの例では、書き込みモジュール２４は、データのブロックに対して判定するためにパリティデータのサイズを選択してもよい。例えば、書き込みモジュール２４は、ビット誤り率（ＢＥＲ）など、メモリデバイス１６の１つまたは複数のヘルス統計に基づいてパリティデータのサイズを選択してもよい。１つの例として、ＢＥＲが閾値未満である場合、書き込みモジュール２４は、次いで、ＢＥＲが閾値を上回るときに（例えば、データのブロックのサイズが８１９２バイトである場合、２５６バイト）データのブロックに対して判定するために、より小さなサイズのパリティデータ（例えば、データのブロックのサイズが８１９２バイトの場合、１２８バイト）を選択してもよい。
【００５９】
コントローラ８は、パリティデータおよびデータのブロックの組み合わされたサイズが主記憶アレイのページのサイズよりも大きいか否かを判定してもよい（１００６）。例えば、書き込みモジュール２４は、パリティデータおよびデータのブロックの組み合わされたサイズが、不揮発性メモリアレイ１０のメモリデバイス１６のメモリデバイスのページのサイズよりも大きいか否かを判定してもよい。
【００６０】
パリティデータおよびデータのブロックの組み合わされたサイズが主記憶アレイのページのサイズ以下である場合（１００６の分岐で「Ｎｏ」）、コントローラ８は、データのブロックおよびパリティデータを主記憶アレイのページに書き込んでもよい（１００８）。例えば、書き込みモジュール２４は、チャネルコントローラ３２Ａに、データのブロックおよびパリティデータを、図２のメモリデバイス１６Ａａのブロック１７Ａのページ１９Ａａに書き込ませてもよい。
【００６１】
パリティデータおよびデータのブロックの組み合わされたサイズが主記憶アレイのページのサイズよりも大きい場合（１００６の分岐で「Ｙｅｓ」）、コントローラ８は、データのブロックおよびパリティデータの第１の部分を主記憶アレイのページに書き込み、ならびにパリティデータの第２の部分をパリティメモリデバイスに書き込んでもよい（１０１０）。例えば、書き込みモジュール２４は、チャネルコントローラ３２Ａに、データのブロックおよびパリティデータの第１の部分をページ１９Ａａに書き込ませ、ならびにパリティメモリデバイス２０のパリティメモリデバイスに、パリティデータの第２の部分を記憶させてもよい。このようにして、コントローラ８は、パリティデータの少なくとも一部を、データの対応するブロックとは別個のメモリデバイスに記憶することができる。
【００６２】
上記動作は１つの例にすぎず、および他の変形例が考えられてもよい。例えば、いくつかの例では、コントローラ８は、パリティデータのサイズに関わらず、パリティデータのいずれも主記憶アレイに記憶しなくてもよく、およびパリティデータをパリティメモリデバイスに常に記憶してもよい。
【００６３】
本開示で説明された技術は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてもよい。例えば、説明された技術の種々の態様は、そのような構成要素の任意の組み合わせとともに、１つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または任意の他の同等な集積もしくは個別論理回路を含む、１つまたは複数のプロセッサ内で実装されてもよい。用語「プロセッサ」または「処理回路」は概して、上述した論理回路の単独、または他の論理回路もしくは任意の他の同等な回路との組み合わせのうちのいずれかを指してもよい。ハードウェアを含む制御ユニットはまた、本開示の技術のうちの１つまたは複数を実行してもよい。
【００６４】
そのようなハードウェア、ソフトウェア、およびファームウェアは、本開示で説明された種々の技術をサポートするために、同一のデバイス内で、または別個のデバイス内で実装されてもよい。加えて、説明されたユニット、モジュールまたは構成要素のうちのいずれかは、ともに、または個別であるが、相互動作可能論理デバイスとして別個に実装されてもよい。モジュールまたはユニットとしての異なる特徴の説明は、異なる機能的態様を強調することが意図され、およびそのようなモジュールまたはユニットが、別個のハードウェア、ファームウェア、またはソフトウェア構成要素によって実現されるべきであることを必ずしも意味していない。むしろ、１つまたは複数のモジュールまたはユニットと関連付けられた機能は、別個のハードウェア、ファームウェア、もしくはソフトウェア構成要素によって実行されてもよく、または共通もしくは別個のハードウェア、ファームウェア、もしくはソフトウェア構成要素内で統合されてもよい。
【００６５】
本開示で説明された技術はまた、命令で符号化されたコンピュータ可読記憶媒体を含む製品で具体化または符号化されてもよい。符号化されたコンピュータ可読記憶媒体を含む製品に組み込まれ、または符号化された命令は、１つまたは複数のプログラマブルプロセッサ、または他のプロセッサに、コンピュータ可読記憶媒体に含まれ、または符号化された命令が１つまたは複数のプロセッサによって実行されるときなど、本明細書で説明された技術のうちの１つまたは複数を実装させてもよい。コンピュータ可読記憶媒体は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、プログラマブルリードオンリメモリ（ＰＲＯＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電子的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、ハードディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、フロッピーディスク、カセット、磁気媒体、光学媒体、または他のコンピュータ可読媒体を含んでもよい。いくつかの例では、製品は、１つまたは複数のコンピュータ可読記憶媒体を含んでもよい。
【００６６】
いくつかの例では、コンピュータ可読記憶媒体は、非一時的媒体を含んでもよい。用語「非一時的」は、記憶媒体が搬送波または伝播信号で具体化されないことを示す。ある例では、非一時的記憶媒体は、時間とともに変化することがあるデータを記憶してもよい（例えば、ＲＡＭまたはキャッシュに）。
【００６７】
種々の例が説明されてきた。それらのおよび他の例は、以下の特許請求の範囲の中にある。
【符号の説明】
【００６８】
２  記憶環境
４  ホストデバイス
６  記憶デバイス
８  コントローラ
１０  不揮発性メモリアレイ
１１  電力供給装置
１２  揮発性メモリ
１３  情報
１４  インタフェース
１６  メモリデバイス
１６Ａａ  メモリデバイス
１６Ａｎ  メモリデバイス
１６Ｎａ  メモリデバイス
１６Ｎｎ  メモリデバイス
１７  ブロック
１７Ａ  ブロック
１７Ｎ  ブロック
１８  チャネル
１８Ａ  チャネル
１８Ｎ  チャネル
１９Ａａ  物理的ページ
２０  パリティメモリデバイス
２２  アドレス変換モジュール
２４  書き込みモジュール
２６  維持モジュール
２８  読み込みモジュール
３０  スケジューリングモジュール
３２  チャネルコントローラ
３２Ａ  チャネルコントローラ
４０Ａ  ユーザデータ
４０Ｂ  ユーザデータ
４２Ａ  パリティデータ
４２Ａ１  パリティデータ
４２Ａ２  パリティデータ
４２Ｂ  パリティデータ
４２Ｂ１  パリティデータ
４２Ｂ２  パリティデータ
４４Ａ  論理的ページアドレス
４４Ｂ  論理的ページアドレス
５０Ａ  物理的ページアドレス
５０Ｂ  物理的ページアドレス
５０Ｃ  物理的ページアドレス
【図１】
2017079050.tif 000003
【図２】
2017079050.tif 000004
【図３】
2017079050.tif 000005
【図４】
2017079050.tif 000006
【図５】
2017079050.tif 000007
【図６】
2017079050.tif 000008
【図７】
2017079050.tif 000009
【図８】
2017079050.tif 000010
【図９】
2017079050.tif 000011
【図１０】
2017079050.tif 000012
【外国語明細書】
2017079050000001.pdf