(57)【要約】【課題】  固体記憶装置の利用を向上させる。【解決手段】  持続性記憶装置を管理する方法は、事前読み取り要求のためのページを選択するステップを含み、ページは持続性記憶装置内に位置する。方法は、事前読み取り要求をページに対して発するステップと、事前読み取り要求に応答し、ページ上に記憶されたデータについてのビットエラー値（ＢＥＶ）を受け取るステップと、ページについてのＢＥＶ閾値（Ｔ）を取得するステップとをさらに含み、Ｔは、ページに関連付けられたプログラム／消去サイクル値とページ上に記憶されたデータの保持時間とを使用して判定され、方法はさらに、ＢＥＶがＴよりも大きいという第１の判定を行なうステップと、第１の判定に基づきｍページを識別するステップとを含み、ｍページはページの集合であり、ページはページの集合内にあり、方法はさらに、ｍページを将来の動作で割当不可能と設定するステップを含む。【選択図】図４
2018085122.tif 000002
【特許請求の範囲】
【請求項１】
持続性記憶装置を管理する方法であって、方法は、
事前読み取り要求のためのページを選択するステップを備え、前記ページは前記持続性記憶装置内に位置し、方法はさらに、
前記事前読み取り要求を前記ページに対して発するステップと、
前記事前読み取り要求に応答し、前記ページ上に記憶されたデータについてのビットエラー値（ＢＥＶ）を受け取るステップと、
前記ページについてのＢＥＶ閾値（Ｔ）を取得するステップとを備え、Ｔは、前記ページに関連付けられたプログラム／消去サイクル値と前記ページ上に記憶された前記データの保持時間とを使用して判定され、方法はさらに、
前記ＢＥＶがＴよりも大きいという第１の判定を行なうステップを備え、
方法はさらに、前記第１の判定に基づき、
ｍページを識別するステップを備え、前記ｍページはページの集合であり、前記ページは前記ページの集合内にあり、方法はさらに、
前記ｍページを将来の動作において割り当て不可能として設定するステップを備える、方法。
【請求項２】
前記ページ上の前記データはエラー修正コードを使用して修正可能であるという第２の判定を行なうステップをさらに備え、方法はさらに、
前記第２の判定に基づき、
前記ページ上の前記データが新しい割り当て可能な持続性記憶装置内のページに書き込まれるようにスケジューリングするステップを備える、請求項１に記載の方法。
【請求項３】
前記スケジューリングするステップの後に、
ガーベジコレクション動作の一部として、前記ページ上の前記データを前記新しい割り当て可能なページに対して書き込むステップをさらに備える、請求項２に記載の方法。
【請求項４】
前記ページ上の前記データはエラー修正コードを使用して修正可能でないという第２の判定を行なうステップをさらに備え、方法はさらに、
前記第２の判定に基づき、ＲＡＩＤ修正機構を使用して前記ページ上の前記データを事前に修正する第３の判定を行なうステップを備える、請求項１に記載の方法。
【請求項５】
前記第３の判定では、前記持続性記憶装置内の少なくとも１つの他のページのＢＥＶが考慮され、前記ページおよび前記少なくとも１つの他のページは、ＲＡＩＤストライプの一部である、請求項４に記載の方法。
【請求項６】
将来の動作は、書き込み動作とガーベジコレクション動作とからなるグループから選択される少なくとも１つを含む、請求項１に記載の方法。
【請求項７】
前記ＢＥＶは、前記ページ内の誤ったビットの割合を指定する、請求項１に記載の方法。
【請求項８】
前記ＢＥＶは、前記ページ内の誤ったビットの数を指定する、請求項１に記載の方法。
【請求項９】
前記ＢＥＶは、エラー修正コードを使用して判定される、請求項１に記載の方法。
【請求項１０】
前記ページは、前記持続性記憶装置内の固体メモリモジュール上に位置し、前記固体メモリモジュールはマルチレベルセル（ＭＬＣ）を含む、請求項１に記載の方法。
【請求項１１】
前記保持時間は、前記データが前記ページに書き込まれた第１の時間、および前記事前読み取り要求に関連付けられた第２の時間を使用して判定される、請求項１に記載の方法。
【請求項１２】
前記第１の時間は、メモリ内のインメモリデータ構造から取得され、前記メモリは制御モジュール内に置かれる、請求項１１に記載の方法。
【請求項１３】
前記Ｐ／Ｅサイクル値は、Ｐ／Ｅサイクル値範囲である、請求項１に記載の方法。
【請求項１４】
システムであって、
記憶モジュール制御部と持続性記憶装置とを含む記憶モジュールと、
前記記憶モジュールおよびクライアントに対して動作的に接続される制御モジュールとを備え、
前記制御モジュールは、
事前読み取り要求のためのページを選択するステップを行ない、前記ページは前記持続性記憶装置内に位置し、前記制御モジュールはさらに、
前記事前読み取り要求を前記ページに対して発するステップと、
前記事前読み取り要求に応答し、前記ページ上に記憶されたデータについてのビットエラー値（ＢＥＶ）を受け取るステップと、
前記ページについてのＢＥＶ閾値（Ｔ）を取得するステップとを行ない、Ｔは、前記ページに関連付けられたプログラム／消去サイクル値と前記ページ上に記憶された前記データの保持時間とを使用して判定され、前記制御モジュールはさらに、
前記ＢＥＶがＴよりも大きいという第１の判定を行なうステップを行ない、前記制御モジュールはさらに、
前記第１の判定に基づき、
ｍページを識別するステップを行ない、前記ｍページはページの集合であり、前記ページは前記ページの集合内にあり、前記制御モジュールはさらに、
前記ｍページを将来の動作において割り当て不可能として設定するステップを行なう、システム。
【請求項１５】
前記持続性記憶装置はフラッシュメモリを含み、前記ページは前記フラッシュメモリ内に位置する、請求項１４に記載のシステム。
【請求項１６】
前記制御モジュールはメモリを含み、前記メモリは、前記持続性記憶装置内に記憶されたすべてのデータについての発生時間と複数のエントリーとを含むインメモリデータ構造を含み、前記複数のエントリーの各々は、複数のＢＥＶ閾値のうちの１つ、複数のＰ／Ｅサイクル値のうちの１つ、および複数の保持時間のうちの１つを含み、
前記ＢＥＶ値を取得するステップは、前記インメモリデータ構造において参照を行なうステップを含み、
前記ページ上に記憶された前記データについての前記保持時間は、前記ページ上に記憶された前記データについての発生時間を使用して、前記メモリから判定される、請求項１４に記載のシステム。
【請求項１７】
前記制御モジュールはさらに、
前記ページ上の前記データはエラー修正コードを使用して修正可能であるという第２の判定を行なうステップをさらに行ない、前記制御モジュールはさらに、
前記第２の判定に基づき、
前記ページ上の前記データが新しい割り当て可能な持続性記憶装置内のページに書き込まれるようにスケジューリングするステップを行ない、
前記スケジューリングするステップの後に、ガーベジコレクション動作の一部として、
前記ページ上の前記データを前記新しい割り当て可能なページに対して書き込むステップを行なう、請求項１４に記載のシステム。
【請求項１８】
前記制御モジュールはさらに、
前記ページ上の前記データはエラー修正コードを使用して修正可能でないという第２の判定を行なうステップを行ない、
前記第２の判定に基づき、ＲＡＩＤ修正機構を使用して前記ページ上の前記データを事前に修正する第３の判定を行なうステップを行なう、請求項１４に記載のシステム。
【請求項１９】
前記第３の判定では、前記持続性記憶装置内の少なくとも１つの他のページのＢＥＶが考慮され、前記ページおよび前記少なくとも１つの他のページは、ＲＡＩＤストライプの一部である、請求項１８に記載のシステム。
【請求項２０】
コンピュータ読み取り可能プログラムコードを備える非一時的コンピュータ読み取り可能媒体であって、前記コンピュータ読み取り可能プログラムコードがコンピュータプロセッサによって実行されると、前記コンピュータプロセッサは、
事前読み取り要求のためのページを選択し、前記ページは前記持続性記憶装置内に位置し、前記コンピュータプロセッサはさらに、
前記事前読み取り要求を前記ページに対して発し、
前記事前読み取り要求に応答し、前記ページ上に記憶されたデータについてのビットエラー値（ＢＥＶ）を受け取り、
前記ページについてのＢＥＶ閾値（Ｔ）を取得し、Ｔは、前記ページに関連付けられたプログラム／消去サイクル値と前記ページ上に記憶された前記データの保持時間とを使用して判定され、前記コンピュータプロセッサはさらに、
前記ＢＥＶがＴよりも大きいという第１の判定を行ない、
前記第１の判定に基づき、
ｍページを識別し、前記ｍページはページの集合であり、前記ページは前記ページの集合内にあり、前記コンピュータプロセッサはさらに、
前記ｍページを将来の動作において割り当て不可能として設定する、非一時的コンピュータ読み取り可能媒体。                
【発明の詳細な説明】
【背景技術】
【０００１】
背景
記憶システムについての１つの重要な性能測定基準は、記憶システムに記憶されるデータの取り出しに関連するレイテンシーである。記憶システムの性能は、読み取りレイテンシーを低下させることによって向上する。記憶システムについての読み取りレイテンシーは、記憶システムが記憶媒体からエラーのないデータを確実に取り出すことが出来る場合に低下し得る。エラーのないデータが取り出されない場合、記憶システムは、取り出されたデータからエラーを取り除くために、付加的な動作を行ない得る。たとえば、記憶システムは、エラー修正コード（ＥＣＣ）および／またはＲＡＩＤなどのエラー修正機構を使用し、取り出されたデータからエラーを取り除き得る、または他の方法としてエラーのないデータを生成し得る。エラー修正機構を使用すると、読み取りレイテンシーが上昇することとなり、これに対応して性能の低下が起こる。
【発明の概要】
【課題を解決するための手段】
【０００２】
概要
概して、１つの局面において、本発明は、持続性記憶装置を管理する方法に関し、方法は、事前読み取り要求のためのページを選択するステップを含み、ページは持続性記憶装置内に位置し、方法はさらに、事前読み取り要求をページに対して発するステップと、事前読み取り要求に応答し、ページ上に記憶されたデータについてのビットエラー値（ＢＥＶ）を受け取るステップと、ページについてのＢＥＶ閾値（Ｔ）を取得するステップとを含み、Ｔは、ページに関連付けられたプログラム／消去サイクル値とページ上に記憶されたデータの保持時間とを使用して判定され、方法はさらに、ＢＥＶがＴよりも大きいという第１の判定を行なうステップを含み、方法はさらに、第１の判定に基づき、ｍページを識別するステップを備え、ｍページはページの集合であり、ページはページの集合内にあり、方法はさらに、ｍページを将来の動作において割り当て不可能として設定するステップを含む。
【０００３】
概して、１つの局面において、システムは、記憶モジュール制御部と持続性記憶装置とを含む記憶モジュールと、記憶モジュールおよびクライアントに対して動作的に接続される制御モジュールとを含み、制御モジュールは、少なくとも、事前読み取り要求のためのページを選択するステップを行ない、ページは持続性記憶装置内に位置し、制御モジュールはさらに、事前読み取り要求をページに対して発するステップと、事前読み取り要求に応答し、ページ上に記憶されたデータについてのビットエラー値（ＢＥＶ）を受け取るステップと、ページについてのＢＥＶ閾値（Ｔ）を取得するステップとを行ない、Ｔは、ページに関連付けられたプログラム／消去サイクル値とページ上に記憶されたデータの保持時間とを使用して判定され、制御モジュールはさらに、ＢＥＶがＴよりも大きいという第１の判定を行なうステップを行ない、制御モジュールはさらに、第１の判定に基づき、ｍページを識別するステップを行ない、ｍページはページの集合であり、ページはページの集合内にあり、制御モジュールはさらに、ｍページを将来の動作において割り当て不可能として設定するステップを行なう。
【０００４】
概して、１つの局面において、本発明は、コンピュータ読み取り可能プログラムコードを含む非一時的コンピュータ読み取り可能媒体に関し、コンピュータ読み取り可能プログラムコードがコンピュータプロセッサによって実行されると、コンピュータプロセッサは、事前読み取り要求のためのページを選択し、ページは持続性記憶装置内に位置し、コン
ピュータプロセッサはさらに、事前読み取り要求をページに対して発し、事前読み取り要求に応答し、ページ上に記憶されたデータについてのビットエラー値（ＢＥＶ）を受け取り、ページについてのＢＥＶ閾値（Ｔ）を取得し、Ｔは、ページに関連付けられたプログラム／消去サイクル値とページ上に記憶されたデータの保持時間とを使用して判定され、コンピュータプロセッサはさらに、ＢＥＶがＴよりも大きいという第１の判定を行ない、コンピュータプロセッサはさらに、第１の決定に基づき、ｍページを識別し、ｍページはページの集合であり、ページはページの集合内にあり、コンピュータプロセッサはさらに、ｍページを将来の動作において割り当て不可能として設定する。
【０００５】
本発明の他の局面は、以下の記載および添付の請求項から明らかとなるであろう。
【図面の簡単な説明】
【０００６】
【図１Ａ】本発明の１つ以上の実施形態に従うシステムを示す図である。
【図１Ｂ】本発明の１つ以上の実施形態に従うシステムを示す図である。
【図１Ｃ】本発明の１つ以上の実施形態に従うシステムを示す図である。
【図２】本発明の１つ以上の実施形態に従う記憶機器を示す図である。
【図３】本発明の１つ以上の実施形態に従う記憶モジュールを示す図である。
【図４】本発明の１つ以上の実施形態に従う様々な構成部分間の関係を示す図である。
【図５】本発明の１つ以上の実施形態に従う事前読み取り要求を処理する方法を示す図である。
【図６】本発明の１つ以上の実施形態に従う読み取り要求を処理する方法を示す図である。
【図７Ａ】本発明の１つ以上の実施形態に従う例を示す図である。
【図７Ｂ】本発明の１つ以上の実施形態に従う例を示す図である。
【図７Ｃ】本発明の１つ以上の実施形態に従う例を示す図である。
【図７Ｄ】本発明の１つ以上の実施形態に従う例を示す図である。
【発明を実施するための形態】
【０００７】
詳細な記載
本発明の具体的な実施形態は、添付の図面を参照してここで詳細に記載される。本発明の実施形態についての以下の詳細な記載においては、本発明についてのより十分な理解を提供するために、多くの具体的な詳細が述べられる。しかしながら、本発明がこれらの具体的な詳細が無くとも実施され得ることは当業者にとって明白である。他の場合において、記載が不必要に複雑化することを避けるべく、周知の特徴については詳細に記載されていない。
【０００８】
図１から図７Ｄについての以下の記載において、本発明の様々な実施形態で図面に関連して記載される構成部分は、他の図面に関連して記載される１つ以上の同様の名称が付された構成部分と等しいものであり得る。簡潔化のために、これらの構成部分についての記載は各図面に関して繰り返されない。したがって、各図面の構成部分の各々およびすべての実施形態は、引用により援用され、１つ以上の同様の名称が付された構成部品を有するその他すべての図面内において任意で存在するものと仮定される。加えて、本発明の様々な実施形態に従い、図面の構成部分についての記載は、他の図面において対応する同様の名称が付された構成部分に関連して記載される実施形態に加えて、またはそれに関連して、またはそれに代えて実施され得る任意の実施形態として解釈される。
【０００９】
概して、本発明の実施形態は、以前に記憶されたデータが後に要求された時に取り出すことができなくなる可能性の高い固体記憶装置内のページを事前に識別することによって固体記憶装置の利用を向上させることに関する。言い換えると、本発明の実施形態は、将
来障害を起こし得るページを事前に識別する。このような障害は、ＲＡＩＤ（Redundant Array of Inexpensive Disks）スキームなどのエラー修正機構の実行を誘因する可能性が高い。本発明の実施形態は、事前に読み取られたページ上のデータについてのビットエラー値（ＢＥＶ）が閾値（Ｔ）よりも大きいかどうかに基づいて、障害を起こす可能性の高いページを事前に識別する。ここで、Ｔは、ページのＰ／Ｅサイクル値（ｐ）、および事前に読み取られたページ上のデータの保持時間（ｔ）に依存する。将来に障害を起こす可能性の高いページを事前に識別する能力により、このようなページがデータを記憶することが制限され、結果として、記憶されたデータを読み取るためにエラー修正機構を呼び出す必要性が制限される。ＲＡＩＤ（または他のエラー修正機構）が呼び出される可能性が低いことから、システムの性能が向上する（すなわち、読み取り要求を処理する際の読み取りレイテンシーが低下する）。
【００１０】
以下の記載では、本発明の１つ以上の実施形態を実施するための１つ以上のシステムおよび方法が記載される。
【００１１】
図１Ａから図１Ｃは、本発明の１つ以上の実施形態に従うシステムを示す。図１Ａを参照すると、システムは、記憶機器（１０２）に動作的に接続される１つ以上のクライアント（クライアントＡ（１００Ａ）、クライアントＭ（１００Ｍ））を含む。
【００１２】
本発明の一実施形態において、クライアント（１００Ａ，１００Ｍ）は、読み取り要求を記憶機器（１０２）に対して発する機能、および／または書き込み要求を記憶機器（１０２）に対して発する機能を含む任意の物理システムに対応する。図１Ａには示されていないが、クライアント（１００Ａ，１００Ｍ）の各々は、クライアントプロセッサ（図示せず）、クライアントメモリ（図示せず）、ならびに本発明の１つ以上の実施形態を実施するために必要な任意の他のソフトウェアおよび／またはハードウェアを含み得る。
【００１３】
本発明の一実施形態において、クライアント（１００Ａ〜１００Ｍ）は、ファイルシステムを含むオペレーティングシステム（ＯＳ）を実行するように構成される。ファイルシステムは、記憶機器（１０２）に対するファイルの記憶および取り出しのための機構を提供する。より具体的には、ファイルシステムは、読み取り要求および書き込み要求を記憶機器に対して発するために必要な動作を行なう機能を含む。また、ファイルシステムは、ファイルの作成および削除、ファイルの読み取りおよび書き込み、ファイル内のシーク、ディレクトリの作成および削除、ディレクトリ内容の管理などを可能にするプログラミングインターフェイスを提供する。加えて、ファイルシステムはまた、ファイルシステムを作成および削除する管理インターフェイスを提供する。本発明の一実施形態において、ファイルにアクセスするために、オペレーティングシステムは（ファイルシステムを介して）通常、各ファイル内のデータを開く、閉じる、読み取る、および書き込むための、および／または対応するメタデータを操作するためのファイル操作インターフェイスを提供する。
【００１４】
図１Ａについての説明を続けると、本発明の一実施形態において、クライアント（１００Ａ，１００Ｍ）は、周辺構成要素相互接続（Peripheral Component Interconnect）（ＰＣＩ）、ＰＣＩ−Ｅｘｐｒｅｓｓ（ＰＣＩｅ）、ＰＣＩ−ｅＸｔｅｎｄｅｄ（ＰＣＩ−Ｘ）、不揮発性メモリＥｘｐｒｅｓｓ（ＮＶＭｅ）、ＰＣＩ−Ｅｘｐｒｅｓｓファブリックにわたる不揮発性メモリＥｘｐｒｅｓｓ（ＮＶＭｅ）、イーサネット（登録商標）ファブリックにわたる不揮発性メモリＥｘｐｒｅｓｓ（ＮＶＭｅ）、およびＩｎｆｉｎｉｂａｎｄファブリックにわたる不揮発性メモリＥｘｐｒｅｓｓ（ＮＶＭｅ）のうちの１つ以上のプロトコルを使用して記憶機器（１０２）と通信するように構成される。当業者は、本発明が上記のプロトコルに限定されないことを理解するであろう。
【００１５】
本発明の１つの実施形態において、記憶機器（１０２）は、揮発性および持続性の記憶装置を含むシステムであり、１つ以上のクライアント（１００Ａ，１００Ｍ）からの読み取り要求および／書き込み要求の処理を行なうように構成される。記憶機器（１０２）の様々な実施形態は、図２において以下に記載される。
【００１６】
図１Ｂを参照すると、図１Ｂは、メッシュ構成で配置される複数の記憶機器（１０４Ａ，１０４Ｂ，１０４Ｃ，１０４Ｄ）（記憶機器メッシュ（１０４）として図１Ｂに示される）にクライアント（１００Ａ，１００Ｍ）が接続されるシステムを示す。図１Ｂに示されるように、記憶機器メッシュ（１０４）は、完全接続メッシュ構成で示される。すなわち、記憶機器メッシュ（１０４）におけるすべての記憶機器（１０４Ａ，１０４Ｂ，１０４Ｃ，１０４Ｄ）が記憶機器メッシュ（１０４）におけるすべての他の記憶機器（１０４Ａ，１０４Ｂ，１０４Ｃ，１０４Ｄ）に直接的に接続される。本発明の一実施形態において、クライアント（１００Ａ，１００Ｍ）の各々は、記憶機器メッシュ（１０４）における１つ以上の記憶機器（１０４Ａ，１０４Ｂ，１０４Ｃ，１０４Ｄ）に直接的に接続され得る。当業者は、本発明から逸脱することなく他のメッシュ構成（たとえば、部分的に接続するメッシュ）を使用して記憶機器メッシュが実施され得ることを理解するであろう。
【００１７】
図１Ｃを参照すると、図１Ｃは、ファンアウト（fan-out）構成で配置された複数の記
憶機器（１０４Ａ，１０４Ｂ，１０４Ｃ，１０４Ｄ）にクライアント（１００Ａ，１００Ｍ）が接続されるシステムを示す。この構成において、各クライアント（１００Ａ，１００Ｍ）は記憶機器（１０４Ａ，１０４Ｂ，１０４Ｃ，１０４Ｄ）のうちの１つ以上に接続されるが、個々の記憶機器（１０４Ａ，１０４Ｂ，１０４Ｃ，１０４Ｄ）間の通信は無い。
【００１８】
図１Ａから図１Ｃは、限られた数のクライアントに接続される記憶機器を示しているが、記憶機器は本発明から逸脱することなく任意の数のクライアントに接続され得ることを当業者は理解するであろう。図１Ａから図１Ｃは様々なシステム構成を示しているが、本発明は上記のシステム構成に限定されないことを当業者は理解するであろう。さらに、本発明から逸脱することなく任意の他の物理的接続を使用してクライアントが（システムの配置に関係なく）記憶機器に接続され得ることを当業者は理解するであろう。
【００１９】
図２は、本発明の１つ以上の実施形態に従う記憶機器の実施形態を示す。記憶機器は、制御モジュール（２００）と記憶モジュールグループ（２０２）とを含む。これらの構成部分の各々は以下に記載される。概して、制御モジュール（２００）は、１つ以上のクライアントからの読み取り要求および書き込み要求の処理を管理するように構成される。特に、制御モジュールは、ＩＯＭ（以下に記載）を介して１つ以上のクライアントから要求を受け取り、要求を処理し（記憶モジュールへ要求を送ることも含み得る）、要求が処理された後のクライアントへの応答を提供するように構成される。加えて、制御モジュール（２００）は、事前読み取り要求を生成して発するとともに、様々なガーベジコレクション動作を行なう機能を含む。読み取り要求の処理に対する制御モジュールの動作は、図５および図６を参照して以下に記載される。制御モジュールにおける構成部分についての追加の詳細は以下に含まれる。
【００２０】
図２についての説明を続けると、本発明の一実施形態において、制御モジュール（２００）は、入出力モジュール（ＩＯＭ）（２０４）と、プロセッサ（２０８）と、メモリ（２１０）と、任意のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）（２１２）とを含む。本発明の一実施形態において、ＩＯＭ（２０４）は、クライアント（たとえば、図１Ａから図１Ｃにおける１００Ａ、１００Ｍ）と記憶機器における他の構成部分との間の物理インターフェイスである。ＩＯＭは、ＰＣＩ、ＰＣＩｅ、ＰＣＩ−Ｘ、イーサネット（登録商標）（ＩＥＥＥ８０２．３ａ〜８０２．３ｂｊで規定された様々な規格を含むが、これらに限定されない）、Ｉｎｆｉｎｉｂａｎｄ、およびコンバージドイーサネット（登録商標）（ＲｏＣＥ）にわたるリモートダイレクトメモリアクセス（ＲＤＭＡ）のプロトコルのうちの１つ以上を支持する。本発明から逸脱することなく上記のプロトコル以外のプロトコルを使用してＩＯＭが実施され得ることを当業者は理解するであろう。
【００２１】
図２について続けると、プロセッサ（２０８）は、命令を実行するように構成された、シングルコアもしくはマルチコアの電子回路のグループである。本発明の一実施形態において、プロセッサ（２０８）は、複雑命令セット（ＣＩＳＣ）アーキテクチャまたは縮小命令セット（ＲＩＳＣ）アーキテクチャを使用して実施され得る。本発明の１つ以上の実施形態において、プロセッサ（２０８）は、ルートコンプレックス（ＰＣＩｅプロトコルによって定義される）を含む。本発明の一実施形態において、制御モジュール（２００）がルートコンプレックス（これはプロセッサ（２０８）に統合され得る）を含む場合、メモリ（２１０）はルートコンプレックスを介してプロセッサ（２０８）に接続される。代替的に、メモリ（２１０）は、他の二地点間接続機構を使用してプロセッサ（２０８）に直接的に接続される。本発明の一実施形態において、メモリ（２１０）は、動的ランダムアクセスメモリ（ＤＲＡＭ）、シンクロナスＤＲＡＭ、ＳＤＲ ＳＤＲＡＭ、およびＤＤ
Ｒ ＳＤＲＡＭを含むがこれらに限定されない任意の揮発性メモリに対応する。
【００２２】
本発明の一実施形態において、プロセッサ（２０８）は、インメモリデータ構造（図示せず）を作成および更新するように構成され、インメモリデータ構造はメモリ（２１０）に記憶される。本発明の一実施形態において、インメモリデータ構造は、図４に記載される情報を含む。
【００２３】
本発明の一実施形態において、プロセッサは、様々なタイプの処理をＦＰＧＡ（２１２）に任せるように構成される。本発明の一実施形態において、ＦＰＧＡ（２１２）は、記憶モジュールに書き込まれたデータおよび／または記憶モジュールから読み出されたデータについてのチェックサムを計算する機能を含む。さらに、ＦＰＧＡ（２１２）は、ＲＡＩＤスキーム（たとえば、ＲＡＩＤ２〜ＲＡＩＤ６）を使用し、記憶モジュールにデータを記憶する目的でＰおよび／またはＱパリティ情報を計算する機能、および／またはＲＡＩＤスキーム（たとえば、ＲＡＩＤ２〜ＲＡＩＤ６）を使用し、記憶された破損データを回復するのに必要な様々な計算を行なう機能を含み得る。本発明の一実施形態において、記憶モジュールグループ（２０２）は、各々がデータを記憶するように構成された１つ以上の記憶モジュール（２１４Ａ，２１４Ｎ）を含む。記憶モジュールの一実施形態は、図３において以下に記載される。
【００２４】
図３は、本発明の１つ以上の実施形態に従う記憶モジュールを示す。記憶モジュール（３００）は、記憶モジュール制御部（３０２）と、メモリ（図示せず）と、１つ以上の固体メモリモジュール（３０４Ａ，３０４Ｎ）とを含む。これらの構成部分の各々は、以下に記載される。
【００２５】
本発明の一実施形態において、記憶モジュール制御部（３００）は、１つ以上の制御モジュールに対するデータの読み取りおよび／または書き込みの要求を受け取るように構成される。さらに、記憶モジュール制御部（３００）は、メモリ（図示せず）および／または固体メモリモジュール（３０４Ａ，３０４Ｎ）を使用して読み取り要求および書き込み要求を処理するように構成される。
【００２６】
本発明の一実施形態において、メモリ（図示せず）は、動的ランダムアクセスメモリ（ＤＲＡＭ）、シンクロナスＤＲＡＭ、ＳＤＲ ＳＤＲＡＭ、およびＤＤＲ ＳＤＲＡＭを含むがこれらに限定されない任意の揮発性メモリに対応する。
【００２７】
本発明の一実施形態において、固体メモリモジュールは、固体メモリを使用して持続性データを記憶するデータ記憶装置に対応する。本発明の一実施形態において、固体メモリは、ＮＡＮＤフラッシュメモリおよびＮＯＲフラッシュメモリを含み得るが、これらに限定されない。さらに、ＮＡＮＤフラッシュメモリおよびＮＯＲフラッシュメモリは、シングルレベルセル（ＳＬＣ）、マルチレベルセル（ＭＬＣ）、またはトリプルレベルセル（ＴＬＣ）を含み得る。当業者は、本発明の実施形態が記憶クラスメモリに限定されないことを理解するであろう。
【００２８】
図４は、本発明の１つ以上の実施形態に従う、様々な構成部分間の関係を示す。より具体的に、図４は、制御モジュールのメモリに記憶される様々なタイプの情報を示す。さらに、制御モジュールは、制御モジュールのメモリに記憶された情報を更新する機能を含む。以下に記載される情報は、１つ以上のインメモリデータ構造に記憶され得る。さらに、インメモリデータ構造内の以下の情報を体系化するために任意のデータ構造タイプ（たとえば、アレイ、リンクリスト、ハッシュ表など）が使用され得る。但し、データ構造タイプは情報間の関係（以下に記載）を維持する。
【００２９】
メモリは、物理アドレス（４０２）に対する論理アドレス（４００）のマッピングを含む。本発明の一実施形態において、論理アドレス（４００）は、クライアント（たとえば、図１Ａにおける１００Ａ、１００Ｍ）の視点からデータが常駐しているように見えるアドレスである。言い換えると、論理アドレス（４００）は、記憶機器に対して読み取り要求を発する時にクライアント上のファイルシステムによって使用されるアドレスに対応する。
【００３０】
本発明の一実施形態において、論理アドレスは、ハッシュ関数（たとえば、ＳＨＡ−１，ＭＤ−５など）をｎ組に対して適用することによって生成されるハッシュ値である（またはこれを含む）。ここでｎ組は＜オブジェクトＩＤ，オフセットＩＤ＞である。本発明の一実施形態において、オブジェクトＩＤはファイルを定義し、オフセットＩＤはファイルの開始アドレスに対する位置を定義する。本発明の他の実施形態において、ｎ組は＜オブジェクトＩＤ，オフセットＩＤ，発生時間＞であり、ここで発生時間はファイル（オブジェクトＩＤを使用して識別される）が作成された時間に対応する。代替的に、論理アドレスは、論理オブジェクトＩＤおよび論理バイトアドレス、または論理オブジェクトＩＤおよび論理アドレスオフセットを含み得る。本発明の他の実施形態において、論理アドレスは、オブジェクトＩＤおよびオフセットＩＤを含む。当業者は、複数の論理アドレスが単一の物理アドレスに対してマッピングされ得ること、ならびに論理アドレスの内容および／またはフォーマットが上記の実施形態に限定されないことを理解するであろう。
【００３１】
本発明の一実施形態において、物理アドレス（４０２）は、図３の固体メモリモジュール（３０４Ａ，３０４Ｎ）における物理的位置に対応する。本発明の一実施形態において、物理アドレスは、＜記憶モジュール，チャネル，チップイネーブル，ＬＵＮ，面，ブロック，ページ番号，バイト＞のｎ組として定義される。
【００３２】
本発明の一実施形態において、各物理アドレス（４０２）は、プログラム／消去（Ｐ／Ｅ）サイクル値（４０４）に関連付けられる。Ｐ／Ｅサイクル値は、（ｉ）物理アドレスによって定義される物理的位置上で行われたＰ／Ｅサイクルの数、または（ｉｉ）Ｐ／Ｅサイクル範囲（たとえば、５，０００〜９，９９９Ｐ／Ｅサイクル）を表わし得て、ここで、物理アドレスによって定義される物理的位置上で行われたＰ／Ｅサイクルの数は、Ｐ／Ｅサイクル範囲内である。本発明の一実施形態において、Ｐ／Ｅサイクルは、消去ブロックにおける１つ以上のページ（すなわち、消去動作のための最小のアドレス可能単位であり、通常は複数ページの集合である）に対するデータの書き込み、およびそのブロックの消去であり、順番はいずれでもよい。
【００３３】
Ｐ／Ｅサイクル値は、ページごと、ブロックごと、ブロックの集合ごと、および／または任意の他の細分性のレベルで記憶され得る。制御モジュールは、データが固体記憶モジュールに書き込まれた（および／または消去された）時に適切な方法でＰ／Ｅサイクル値（４０２）を更新する機能を含む。
【００３４】
本発明の一実施形態において、すべてのデータ（すなわち、クライアント上のファイルシステムが固体記憶モジュールに書き込むように要求したデータ）（４０６）は、発生時間（４０８）に対応付けられる。発生時間（４０８）は、（ｉ）固体記憶モジュールにおける物理的位置にデータが書き込まれた時間、（ｉｉ）固体記憶モジュールに対してデータを書き込む書き込み要求をクライアントが発した時間、または（ｉｉｉ）上記（ｉ）または（ｉｉ）における書き込み事象に対応する無単位値（たとえば、シーケンス番号）に対応し得る。
【００３５】
本発明の一実施形態において、インメモリデータ構造は、読み取り要求の一部として、または事前読み取り要求の一部として読み取られた任意のページについての少なくとも１つのビットエラー値（ＢＥＶ）を含む。ＢＥＶは、誤っている取り出されたデータ（すなわち、読み取り要求または事前読み取り要求への応答としてページから読み取られたデータ）におけるビット数を指定する。ＢＥＶは、代替的に、誤っている所与のページにおけるビットの割合として表現され得る。所与のページについてのＢＥＶは、エラー修正コード（ＥＣＣ）を使用して判定され得て、所与のページ上に記憶されたデータについてのＥＣＣもページ上に記憶される。言い換えると、ページは、データとデータについてのＥＣＣとを含み得る。ページについてのＢＥＶは、記憶モジュール制御部（たとえば、図３、３０２）によって判定され得る。制御モジュールにおけるメモリ（図２、２１０）は、所与のページから取得された最後のＢＥＶを記憶し得る、および／または所与のページについての複数のＢＥＶを記憶し得る。
【００３６】
記憶されたＢＥＶ値は、図５のステップ５１２および図６のステップ６１８における判定の一部として使用され得る。記憶されたＢＥＶの使用に関する追加の詳細は、図５および図６において以下に記載される。
【００３７】
本発明の一実施形態において、インメモリデータ構造は、ＢＥＶ閾値（４１６）に対する＜保持時間，Ｐ／Ｅサイクル値＞のマッピングを含む。本発明の一実施形態において、保持時間は、固体記憶モジュールに対するデータの書き込みの間で経過した時間、および固体記憶モジュールからデータが読み取られる時間に対応する。保持時間は、時間の単位（秒、日、月など）で表わされ得る、または無単位値で表わされ得る（たとえば、発生時間が無単位値で表わされる場合）。本発明の一実施形態において、＜保持時間，Ｐ／Ｅサイクル値＞におけるＰ／Ｅサイクル値は、Ｐ／Ｅサイクル、またはＰ／Ｅサイクル範囲として表わされ得る。
【００３８】
本発明の一実施形態において、ＢＥＶ閾値（４１６）は、保持時間とＰ／Ｅサイクル値との所与の組み合わせについて、時間ｔ＋１におけるページの障害を予測する時間ｔでのＢＥＶを判定するための実験を行なうことによって確かめられる。ＢＥＶ閾値（４１６）は、固体メモリモジュールから上手くデータを読み取ることができるように最適化される一方、持続性記憶装置におけるｍページは割り当て不可能として不必要にマーキングされることはない。
【００３９】
保持時間およびＰ／Ｅサイクル値に基づいてＢＥＶ閾値を修正することにより、記憶機器は、所与の保持時間およびＰ／Ｅサイクル値における所与のページの障害の可能性を変化させ得る様々な変数を考慮に入れる。上記の変数に基づいて時間経過に伴ってどのよう
にページに障害が起こるかを理解することにより、所与のページが将来障害を起こし得るかを事前に判定するために適切なＢＥＶ閾値が使用され得る。
【００４０】
本発明の一実施形態において、所与の＜保持時間（ｔ），Ｐ／Ｅサイクル値（ｐ）＞についてのＢＥＶ閾値（４１６）は、実験的に以下のように判定され得る。（ｉ）Ｐ／Ｅサイクル値（ｐ）について時間ｔ＋１（たとえば、２ヶ月の保持時間）におけるページの集合のＢＥＶを判定する。（ｉｉ）ＲＡＩＤ（または他のエラー修正機構）の使用を誘因し得るすべてのページを識別する（すなわち、取り出されたデータにおけるエラーを修正するためにＥＣＣが使用され得ないすべてのページ）。（ｉｉｉ）Ｐ／Ｅサイクル値（ｐ）（すなわち、（ｉ）で使用されたものと同じＰ／Ｅサイクル値）について時間ｔ（たとえば、１ヶ月の保持時間）における（ｉｉ）で識別されたすべてのページについてのＢＥＶを判定する。（ｉｖ）エラー修正機構起動リミット（たとえば、読み取りのうちの１％のみがｔ＋１でエラー修正機構の使用を誘因する）に時間ｔ+１で到達するまで（ｉｉ）に
おいて識別されたページの数を減少させることにより、ＢＥＶ閾値（Ｔ（ｐ，ｔ））を識別する。
【００４１】
より具体的には、（ｉｖ）において、（ｉｉ）で識別されたページが、最も高いＢＥＶを有する（ｉｉ）のページから始まり、（ｉｉ）において識別されたページの集合から順次取り除かれる。（ｉｉ）から取り除かれる各ページについては、取り除かれるページが一部を構成するｍページ内の他のページも取り除かれる（たとえば、ページＡが（ｉｉ）から取り除かれ、ｍページが４つのページを有する場合、ページＡが属するｍページの一部である他の３つのページも取り除かれる）。時間ｔで上述のページが取り除かれる結果、これらのページは時間ｔ＋１においてデータを記憶しないこととなり、これらのページはｔ＋１においてエラー修正機構の軌道を誘因することができない。ＢＥＶ閾値の判定の例は、図７Ａ〜図７Ｃに記載される。
【００４２】
本発明の一実施形態において、制御モジュール（図２、２００）は、上記の情報（図４を参照）を使用し、（ｉ）クライアント読み取り要求の処理、（ｉｉ）書き込み要求の処理、（ｉｉｉ）事前読み取り要求の処理、および（ｉｖ）ガーベジコレクション動作のうちの１つ以上を行なう。制御モジュールは、以下の要求および／または動作のうちの１つ以上を平行して行ない得る。
【００４３】
本発明の一実施形態において、クライアント読み取り要求がクライアント（たとえば、図１Ａ、１００Ａ）によって発せられ、読み取り要求は論理アドレスを含む。読み取り要求に対する応答は、（ｉ）持続性記憶装置から取り出されたデータ、および任意の持続性記憶装置から取り出されたデータについてのＢＥＶ、または（ｉｉ）データが破損したこと（すなわち、データを持続性記憶装置から取り出すことができないこと、ならびに／または記憶モジュール制御部および／もしくは制御モジュールによって実施されるエラー修正機構を使用してデータを修正もしくは再構築することができないこと）を示す通知である。読み取り要求の処理に関する追加の詳細は、以下の図６に含まれる。
【００４４】
本発明の一実施形態において、事前読み取り要求は制御モジュール（たとえば、図２、２００）によって発せられ、事前読み取り要求は物理アドレスを含む。事前読み取り要求に対する応答は、持続性記憶装置から取り出されたデータについてのＢＥＶ、および任意の持続性記憶装置から取り出されたデータである。読み取り要求の処理に関する追加の詳細は、以下の図５に含まれる。
【００４５】
本発明の一実施形態において、書き込み要求はクライアント（たとえば、図１Ａ、１００Ａ）によって発せられ、書き込み要求は、持続性記憶装置に記憶されるデータまたはデータへの参照を含む。書き込み要求を受け取ると、制御モジュールは、データを持続性記
憶装置に記憶するために使用される１つ以上のページを判定する。データを記憶するために選択されたページは、持続性記憶装置における割り当て可能なページの集合から識別され、ここで制御モジュールは割り当て可能なページのリストを保持する。ページは、データが書き込み要求の一部として、またはガーベジコレクション動作（以下に記載）の一部として書き込まれ得る場合には割り当て可能なページ（以下の図５および図６で説明される）とみなされる。
【００４６】
本発明の一実施形態において、ガーベジコレクション動作は、制御モジュールによって実施されるガーベジコレクション処理の一部として行われる。ガーベジコレクション処理の目的は、デッドページ（すなわち、ライブデータ（すなわち、制御モジュールおよび／またはクライアント上で実行される１つ以上のアプリケーションによって使用されるデータ）をもはや含まないページ）を再生することにある。これは、（ｉ）ライブページとデッドページとの組み合わせを含む、持続性記憶装置内のブロックを識別すること、および（ｉｉ）ライブページのみを含む持続性記憶装置内の他のブロックにおける１つ以上のページへライブデータを移動させることによって実現され得る。ガーベジコレクション動作の一部として新しいページに再び書き込まれるデータは、割り当て可能なページであるページのみに書き込まれ得る（以下の図５および図６で説明）。
【００４７】
フローチャートを見ると、フローチャートには様々なステップが連続的に示されるとともに記載されるが、当業者は、一部またはすべてのステップが異なる順序で実行されてもよく、結合または省略されてもよく、一部またはすべてのステップが並行して実行されてもよいことを理解するであろう。   図５Ａは、本発明の１つ以上の実施形態に係る、記
憶機器によってクライアント読み取り要求を処理する方法を示す。
【００４８】
図５は、本発明の１つ以上の実施形態に係る、記憶機器によってクライアント読み取り要求を処理する方法を示す。
【００４９】
ステップ５００において、持続性記憶装置内のページが事前読み取り要求のために選択される。ページは、持続性記憶装置内の任意のライブページ（すなわち、ライブデータを含む任意のページ）であり得る。ライブページのリストは、制御モジュールによって維持／管理され得て、制御モジュール内のメモリに記憶され得る。
【００５０】
ステップ５０２において、事前読み取り要求が制御モジュールによって記憶モジュールに対して発せられ、ここで記憶モジュールは、ページ（ステップ５００において選択された）が位置する固体メモリモジュールを含む記憶モジュールである。読み取り要求のフォーマットは、記憶モジュール制御部によって支持される任意のフォーマットであり得る。事前読み取り要求は、要求がたとえばクライアント読み取り要求に対する事前読み取り要求であることを示すフラグ（または他の内容）とともにページ（ステップ５００において選択された）の物理アドレスを含み得る。
【００５１】
ステップ５０４において、ページ（すなわち、ステップ５００において選択されたページ）から読み取られたデータについてのＢＥＶを少なくとも含む応答が記憶モジュールから受け取られる。
【００５２】
ステップ５０６において、所与の保持時間およびＰ／Ｅサイクル値についてＢＥＶがＢＥＶ閾値（Ｔ（ｔ，ｐ））よりも大きいかどうかについての判定が行われる。本発明の一実施形態において、保持時間（ｔ）は、物理アドレスに記憶されたデータについて判定される。保持時間は、データの発生時間（図４、４０８を参照）、および事前読み取り要求の時間（たとえば、制御モジュールが事前読み取り要求を発する時間）を使用して判定され得る。データの発生時間は、制御モジュールのメモリ（たとえば、図２、２１０）から
取得される。保持時間は、事前読み取り要求の時間と発生時間との間の差を判定することによって計算され得る。本発明の一実施形態において、Ｐ／Ｅサイクルは、ページの物理アドレスをキーとして使用してインメモリデータ構造（制御モジュールのメモリ内に位置する）において参照を行なうことによって判定され得る。クエリの結果は、物理アドレスに関連付けられた実際のＰ／Ｅサイクル値（たとえば、物理アドレスに対応する物理的位置が位置するブロックに関連付けられたＰ／Ｅサイクル値）であり得る、またはＰ／Ｅサイクル値範囲（たとえば、５，０００〜９，９９９Ｐ／Ｅサイクル）であり得て、ここで物理アドレスに関連付けられた実際のＰ／Ｅサイクル値は、Ｐ／Ｅサイクル値範囲内にある。ＢＥＶ閾値（Ｔ（ｔ，ｐ））は、キー＜保持時間，Ｐ／Ｅサイクル値＞を使用してインメモリデータ構造（図４を参照）から取得される。
【００５３】
所与の保持時間およびＰ／Ｅサイクル値について、ＢＥＶがＢＥＶ閾値（Ｔ（ｔ，ｐ））よりも小さい場合、処理が終了する。そうでなければ、処理はステップ５０８に進む。
【００５４】
ステップ５０８において、ページ（ステップ５００において選択された）を含むｍページは、割り当て不可能としてマークされる。より具体的には、ページ（ステップ５００において選択された）と同じｍページの一部である各ページは、割り当て不可能としてマークされる。ひとたびページが割り当て不可能としてマークされると、そのページは、書き込み動作またはガーベジコレクション動作の一部として将来のライブデータを記憶するために使用されない。本発明の一実施形態において、ｍページは１つ以上のページである。ｍページ内のページは、単一のアトミックトランザクションにおいて持続性記憶装置に書き込まれ得る。たとえば、ｍページは、単一のアトミックトランザクションで持続性記憶装置に書き込まれる４つのページであり得る。ｍページの単一のページに対するデータの書き込みが失敗すると、トランザクション全体（すなわち、ｍページを構成する４つのページへのデータの書き込み）が失敗する。
【００５５】
図５についての説明を続けると、ステップ５１０において、ページ（ステップ５００において選択された）内のデータが修正可能であるか（すなわち、記憶モジュール制御部がページのＥＣＣのみを使用してデータ中のエラーを修正できるか）についての判定が行なわれる。ページ内のデータがＥＣＣで修正できない場合、処理はステップ５１４へ進む。そうでなければ、処理はステップ５１２へ進む。
【００５６】
ステップ５１２において、ガーベジコレクション処理の一部としてＲＡＩＤスキームまたは他のエラー修正機構を呼び出してページ（ステップ５００において選択された）内の破損データを再構築するかどうかについての判定が行なわれる。ＲＡＩＤスキームまたは他のエラー修正機構を呼び出して破損データを再構築するかどうかについての判定は、ＲＡＩＤストライプ内の他のページ（ページはその一部である）の状態に基づき得る。
【００５７】
たとえば、ＲＡＩＤストライプ内に６つのページがあり（４つのデータページ、１つのＰパリティページ、１つのＱパリティページ）、１つのページのみが破損している場合、上記のＲＡＩＤストライプはＲＡＩＤストライプ内の全てのデータを再構築するのに十分な非破損ページを依然として有し得ることから、ＲＡＩＤスキームまたは他のエラー修正機構を呼び出さない判定が行なわれ得る。言い換えると、上記のＲＡＩＤストライプは、ＲＡＩＤストライプ内に少なくとも４つの非破損ページがある場合にはＲＡＩＤストライプ内の全てのデータを再構築することが可能であり得る。ここでＲＡＩＤストライプ内には５つの非破損ページがあることから、データを回復する能力に影響を与えることなく、ＲＡＩＤストライプ内の１つの付加的なページが破損してもよい。しかしながら、上記のＲＡＩＤストライプが２つの破損ページ（すなわち、ＥＣＣで修正可能でなかったページ）を含む場合、ＲＡＩＤストライプ内の１つの付加的な破損ページ（すなわち、３つの破損ページ）により、ＲＡＩＤストライプ内の破損データを再構築する能力が無くなること
から、ページ（ステップ５００において選択された）上のデータおよび他の破損ページ内のデータを再構築する判定が行なわれる。
【００５８】
本発明の一実施形態において、制御モジュールは、ＲＡＩＤストライプの構成（すなわち、どのページがＲＡＩＤストライプの一部か）、およびＲＡＩＤストライプの配置（すなわち、パリティページの数、各パリティページにおけるパリティ値のタイプ（たとえば、Ｐパリティ値、Ｑパリティ値など））を追跡する。制御モジュールは、所与のＲＡＩＤストライプ内のどのページがＥＣＣにより修正可能か、およびＥＣＣにより修正不可能かを判定するためにＢＥＶ（４１２）を使用し得る。
【００５９】
当業者は、本発明から逸脱することなく他の方法を使用してＲＡＩＤスキームまたは他のエラー修正機構を呼び出すかどうかについて判定し得ることを理解するであろう。
【００６０】
図５についての説明を続けると、ステップ５１４において、ページ内のデータがＥＣＣにより修正可能である場合、ページに対するガーベジコレクションがスケジューリングされる。ページ（またはページが位置するブロック）に対してガーベジコレクションをスケジューリングすることは、ガーベジコレクション動作の一部として処理される次のページとしてページをスケジューリングすることを含み得る（すなわち、ライブデータがページから読み取られ、新しい割り当て可能な持続性記憶装置内のページに書き込まれる（ひとたびＥＣＣによって修正される））。
【００６１】
ステップ５１４について続けると、ページ上のデータがＥＣＣによって修正可能でない場合、ページ上のデータはＲＡＩＤスキームを使用して再構築されなければならない。より具体的には、ページに対してガーベジコレクションがスケジューリングされる。ページ（またはページが位置するブロック）に対してガーベジコレクションをスケジューリングすることは、ガーベジコレクション動作の一部として処理される次のページとしてページをスケジューリングすることを含み得る（すなわち、ページについてのデータが再構築され、再構築されたデータが新しい割り当て可能な持続性記憶装置内のページに書き込まれる）。ページ上のデータの再構築は、ＲＡＩＤストライプ内の複数の他のページからデータを読み取り、ページ上のデータを再構築するために制御モジュールによって１つ以上の動作を行なうことを含み得る。そして、処理が終了する。
【００６２】
本発明の一実施形態において、図５に示される処理は、持続性記憶装置内のすべてのライブページに対して周期的に行なわれる。図５に示される処理は、制御モジュール内で実行される低優先度スレッドを使用して実施され得る。
【００６３】
図６は、本発明の１つ以上の実施形態に従う、記憶機器によってクライアント読み取り要求を処理する方法を示す。
【００６４】
ステップ６００において、クライアントから制御モジュールによってクライアント読み取り要求が受け取られ、ここでクライアント読み取り要求は論理アドレスを含む。ステップ６０２において、物理アドレス（ページ番号を含む）が論理アドレスから判定される。上述のように、制御モジュール内のメモリは、物理アドレスに対する論理アドレスのマッピングを含む（図４の説明、４００、４０２を参照）。本発明の一実施形態において、物理アドレスは、ステップ６００においてクライアント要求から取得された論理アドレスとともに物理アドレスに対する論理アドレスのマッピングを使用して参照（またはクエリ）を行なうことによって判定される。
【００６５】
ステップ６０４において、制御モジュール読み取り要求は、物理アドレスを使用して生成される。制御モジュール読み取り要求のフォーマットは、記憶モジュール制御部によっ
て支持される任意のフォーマットであり得る。
【００６６】
ステップ６０６において、記憶モジュールから応答が受け取られ、応答は、ページ（すなわち、ステップ５００において選択されたページ）から読み取られたデータについてのＢＥＶ、および（ｉ）ページからのデータまたは（ｉｉ）データが破損している（すなわち、ページ上のデータがＥＣＣによって修正可能でない）という表示のいずれかを含む。
【００６７】
ステップ６０８において、ステップ６０６において受け取られた応答がデータを含むかどうかについての判定が行なわれる。ステップ６０６において受け取られた応答がデータを含む場合、処理はステップ６１２に進む。そうでなければ、処理はステップ６１０に進む。
【００６８】
ステップ６１０において、ステップ６０６において受け取られた応答がデータを含まない場合、制御モジュールは、たとえばＲＡＩＤスキームまたは他のエラー修正機構を使用したページ上のデータの再構築へ進む。
【００６９】
ステップ６１２において、データ（または再構築されたデータ）がクライアントへ提供される。ステップ６１４において、ＢＥＶが所与の保持時間およびＰ／Ｅサイクル値についてのＢＥＶ閾値（Ｔ（ｔ，ｐ））よりも大きいかどうかについての判定が行なわれる。本発明の一実施形態において、保持時間（ｔ）は物理アドレスに格納されたデータについて判定される。ＢＥＶが所与の保持時間およびＰ／Ｅサイクル値についてのＢＥＶ閾値（Ｔ（ｔ，ｐ））よりも大きい場合、処理は終了する。そうでない場合には、処理はステップ６１６に進む。
【００７０】
ステップ６１６において、ページ（ステップ５００において選択された）を含むｍページは、割り当て不可能としてマークされる。より具体的には、ページ（６０２で物理アドレスにおいて指定される）と同じｍページの一部である各ページは、割り当て不可能としてマークされる。
【００７１】
ステップ６１８において、データを事前に修正するかどうかについての判定が行なわれる。データがＥＣＣによって修正可能である場合、上記のステップ５１０に従って判定が行なわれ得る。データがＥＣＣによって修正可能でない場合、ステップ５１２に従って事前に修正するかどうかについての判定が行なわれ得る。データを事前に修正すると判定された場合、処理はステップ６２０に進む。そうでない場合、処理は終了する。ステップ６２０において、ステップ５１４における上記の説明に従い、ページに対してガーベジコレクションがスケジューリングされる。
【００７２】
図７Ａ〜図７Ｄは、本発明の１つ以上の実施形態に従う例を示す。以下の例は、本発明の範囲を限定することを意図していない。
【００７３】
図７Ａ〜図７Ｃに関し、図７Ａ〜図７Ｃは、ｐのＰ／Ｅサイクル値を伴う保持時間ｔ−１ についてのＢＥＶ閾値を判定するための一実施形態を示し、その目的は、保持時間ｔ
において読み取られたデータの１％未満に破損データを修正するためのＲＡＩＤの使用を制限することにある。図７Ａは、保持時間ｔにおけるページについてのＢＥＶの分布を示す。本発明の実施形態を実施しない場合、読み取り要求の３．２５％が、破損データを再構築するためのＲＡＩＤスキームの使用を必要する（すなわち、ページの３．２５％が５０ビットエラーよりも大きいＢＥＶを有し、これはこの例においてＥＣＣを使用して修正され得るビットエラーの最大数である）。
【００７４】
図７Ｂは、保持時間ｔ−１における同じページについてのＢＥＶの分布を示す。図７Ｃ
は、保持時間ｔにおいて破損したページについての保持時間ｔ−１におけるＢＥＶの分布を示す（すなわち、保持時間ｔにおいて５０よりも大きいＢＥＶを有していたページ）。図７Ｃに示されるページは、保持時間ｔにおいて５０よりも大きいＢＥＶを有するページの数がページ全体の１％未満となるまで順次取り除かれる（対応するｍページの一部である関連ページとともに高いＢＥＶから始まる）。この例において、取り除かれるページの数は、保持時間ｔ−１において４３よりも大きいＢＥＶを有するページに対応する。この例において、時間ｔにおいて取り除かれたページの割合は７．６９％である（すなわち持続性記憶装置内のページの７．６９％が割り当て不可能である）。
【００７５】
図７Ｄを参照すると、図７Ｄは、本発明の１つ以上の実施形態を実施した場合の仮想的な性能の利益を示す。具体的には、ｐのＰ／Ｅサイクル値、および読み取り要求の１％以下でＲＡＩＤを呼び出すという条件において、本発明の実施形態は、読み取り要求の１％以下についてＲＡＩＤを呼出し、本発明の実施形態を実施しない記憶機器は、保持時間を５にインクリメントした時に読み取り要求の１０％以下でＲＡＩＤを呼び出す。言い換えると、本発明の実施形態を実施しない記憶機器においては、本発明の１つ以上の実施形態を実施する記憶機器と比較して、ＲＡＩＤが１０倍の頻度で呼び出され、このような記憶機器についての読み取りレイテンシーが高まることとなる。
【００７６】
本発明の１つ以上の実施形態は、システムにおける１つ以上のプロセッサによって実行される命令を使用して実施され得る。さらに、このような命令は、１つ以上の非一時的コンピュータ読み取り可能媒体上に記憶されるコンピュータ読み取り可能命令に対応し得る。
【００７７】
限られた数の実施形態に関して本発明が記載されたが、当業者は、本開示の恩恵を受け、ここに開示される本発明の範囲から逸脱しない他の実施形態を考案することができることを理解するであろう。このため、本発明の範囲は、添付の請求項のみによって限定されるべきである。
【図１Ａ】
2018085122.tif 000003
【図１Ｂ】
2018085122.tif 000004
【図１Ｃ】
2018085122.tif 000005
【図２】
2018085122.tif 000006
【図３】
2018085122.tif 000007
【図４】
2018085122.tif 000008
【図５】
2018085122.tif 000009
【図６】
2018085122.tif 000010
【図７Ａ】
2018085122.tif 000011
【図７Ｂ】
2018085122.tif 000012
【図７Ｃ】
2018085122.tif 000013
【図７Ｄ】
2018085122.tif 000014