(57)【要約】  データの物理ストレージアドレスが、ファイルシステムのようなユーザアプリケーションに対して利用可能にされ、かつ物理又は論理ベースでユーザに割り当てることができるメモリシステムの特性が、性能、サイズ、又は冗長性などに関して別々に特徴付けられる半導体タイプの不揮発性メモリにデータを格納するシステム及び方法を説明する。メモリシステムへの読取要求は、メモリシステム内の論理−物理アドレスルックアップを使用するのではなく、読取要求に含められた物理アドレスにアクセスすることによってサービス対応することができる。ガーベージコレクション動作は、ユーザが既知である物理アドレスとデータの実際の物理ロケーションとの間の関係を維持するために仮想−物理−ブロックベースで実行することができる。【選択図】      図２
2016506585.tif 000002
【特許請求の範囲】
【請求項１】
データのストレージを管理する方法であって、
プロセッサと揮発性メモリと不揮発性メモリとを有するデータを格納するための不揮発性メモリデバイスを与える段階と、
ユーザからのデータ読取指令を該データ読取指令が第１のタイプのデータ読取指令又は第２のタイプのデータ読取指令であるか否かを決定するために解釈し、
前記データ読取指令は、該指令が、論理アドレスを含み、かつ前記データが格納される前記不揮発性メモリに物理アドレスを含まない時に前記第１のタイプのものであり、
前記データ読取指令は、該データ読取指令が、前記データがメモリに格納される前記不揮発性メモリに少なくとも前記物理アドレスを含む時に前記第２のタイプのものであり、
前記第１のタイプのデータ読取指令に応答して、前記データの前記物理アドレスを決定し、前記不揮発性メモリ内の前記物理アドレスからデータを検索し、かつ該データを前記ユーザに戻し、又は
前記第２のタイプの読取指令に応答して、前記不揮発性メモリ内の前記物理アドレスからデータを検索し、かつ該データを前記ユーザに戻し、
前記論理アドレスと前記物理アドレスの間の関係が、前記不揮発性メモリデバイス内の間接性テーブルに維持される、
ように前記プロセッサを構成する段階と、
を含むことを特徴とする方法。
【請求項２】
検索されたデータのためのメタデータを読み取る段階と、
前記検索されたデータのためのメタデータの少なくとも一部分を前記第１又は前記第２のタイプの読取指令内のメタデータの少なくとも一部分と比較する段階と、
前記検索されたデータのメタデータ及び前記第１又は前記第２のタイプの読取指令の前記メタデータの前記部分が整合する場合に該検索されたデータを前記ユーザに戻す段階、又は
前記検索されたデータのメタデータ及び前記第１又は前記第２のタイプの読取指令の前記メタデータの前記部分が整合しない場合にエラーメッセージを前記ユーザに戻す段階、
のいずれかと、
を更に含むことを特徴とする請求項１に記載の方法。
【請求項３】
メモリ内のデータストレージを管理する方法であって、
プロセッサと揮発性メモリと不揮発性メモリとを有するデータを格納するための不揮発性メモリデバイスを与える段階と
ユーザからの書込指令を該書込指令が第１のタイプ又は第２のタイプであるか否かを決定するために解釈し、
前記書込指令は、該指令が、論理アドレスを含み、かつ前記データが格納されることになる物理アドレスを含まない時に前記第１のタイプのものであり、
前記書込指令は、該書込指令が、前記データが前記不揮発性メモリに格納される少なくとも物理アドレスを含む時に前記第２のタイプのものであり、
前記第１のタイプの前記書込指令に応答して、プロトコルに従って該第１のタイプの該書込指令に関連付けられたデータが前記不揮発性メモリに格納されることになる該不揮発性メモリ内の前記物理アドレスを決定し、かつ該物理アドレスを間接性テーブル内の前記論理アドレスに関連付け、
第２のタイプの前記書込指令に応答して、プロトコルに従って該第２のタイプの該書込指令に関連付けられたデータが格納されることになる前記不揮発性メモリ内の物理アドレスを決定し、かつ該物理アドレスを前記ユーザへの応答メッセージに含め、
前記間接性テーブルが、前記不揮発性メモリデバイスに維持される、
ように前記プロセッサを構成する段階と、
を含むことを特徴とする方法。
【請求項４】
前記第１又は前記第２のタイプの書込指令に関連付けられたデータを前記不揮発性メモリに書き込む段階と、
前記第１又は前記第２のタイプの書込指令に関連付けられたメタデータを前記不揮発性メモリデバイスに書き込む段階と、
を更に含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記第２のタイプの書込指令のメタデータを使用する段階と、
前記第２のタイプの書込指令の前記メタデータの一部分を該第２のタイプの書込指令に与えられた前記不揮発性メモリ内の前記物理アドレスに格納された前記データに関連付けられた前記メタデータの一部分と比較する段階と、
前記第２のタイプの書込指令に応答して物理アドレスを該第２のタイプの書込指令の前記メタデータの前記部分が該第２のタイプの書込指令によって指定された前記不揮発性メモリ内の該物理アドレスに格納された前記メタデータの前記部分と整合する場合に決定する段階を実行する段階、又は
前記第２のタイプ書込指令の前記メタデータの前記部分が、該第２のタイプの書込指令によって指定された前記物理アドレスに格納された前記メタデータの前記部分と整合しない場合にエラーメッセージを前記ユーザに戻す段階、
とを更に含むことを特徴とする請求項３に記載の方法。
【請求項６】
第２のタイプの書込指令が論理アドレスを含むかを決定し、該論理アドレスを前記決定された物理アドレスに対して格納された前記メタデータの一部分として使用する段階か、又は
前記第２のタイプの書込指令が前記論理アドレスを含まないかを決定し、決定された物理アドレスに関連付けて該論理アドレスをユーザへの応答メッセージに与える段階と、
前記与えられた論理アドレスをメタデータとして格納する段階と、
を更に含むことを特徴とする請求項に３記載の方法。
【請求項７】
前記メタデータは、前記論理アドレス、該論理アドレスに格納された前記データのハッシュ、シーケンス番号、又は時間値のうちの少なくとも１つを含むことを特徴とする請求項３に記載の方法。
【請求項８】
前記不揮発性メモリは、物理アドレスと、該不揮発性メモリの複数のブロックのメモリの内のあるブロックのメモリを含み、該ブロックのメモリを完全に消去される前に一度書き込むことができる特性を有するストレージアドレスの群とを有するストレージロケーションで構成されることを特徴とする請求項３に記載の方法。
【請求項９】
複数のブロックが、ブロックの群を形成し、該ブロックの群は、論理アドレス範囲又は物理アドレス範囲のうちの一方に関連付けられることを特徴とする請求項８に記載の方法。
【請求項１０】
メモリシステム内のガーベージコレクションの方法であって、
不揮発性メモリと揮発性メモリとプロセッサとを含むメモリシステムを与える段階と、
論理アドレスを物理アドレスに関連付ける第１の間接性テーブルを維持する段階であって、前記メモリが、複数の物理アドレスを有する複数のブロックとして編成される前記維持する段階と、
各物理アドレスを有効、廃用、又はフリーのうちの１つであるとして特徴付ける段階と、
プロトコルに従って前記複数のブロックのうちのブロックを選択する段階と、
前記データを前記選択されたブロックの有効ストレージロケーションから前記揮発性メモリ内のバッファに読み取り、同時に有効データのそれが読み取られた前記物理アドレスとの関連付けを維持する段階と、
前記不揮発性メモリに書き込まれることになるデータのキャッシュを維持する段階と、
前記複数のブロックのうちの前記選択したブロックを消去する段階と、
プロトコルに従って前記間接性テーブルから前記キャッシュ内の前記データのための物理アドレスを選択する段階と、
前記バッファからのデータ及び前記キャッシュ内の前記データをフリー物理ストレージロケーションを与えるために消去されたブロックのプールから選択されたブロックに書き込む段階と、
を含むことを特徴とする方法。
【請求項１１】
ブロックを選択するための前記プロトコルは、ウェアレベリングに備えるものであることを特徴とする請求項１０に記載の方法。
【請求項１２】
メタデータを含む前記データは、前記選択されたブロックが以前に消去された回数に応じてビット反転フォーマットで各物理アドレスに書き込まれることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記物理アドレスは、ページを含む範囲を表すことを特徴とする請求項１２に記載の方法。
【請求項１４】
消去される前記ブロックを選択するための前記プロトコルは、消去されたブロックのプールの保守に備えるものであることを特徴とする請求項１０に記載の方法。
【請求項１５】
前記選択したブロックは、消去され、有効データ及び前記データを書き込む前記段階は、該選択したブロックに対するものであることを特徴とする請求項１０に記載の方法。
【請求項１６】
フリー物理アドレスを決定するための前記プロトコルは、前記選択されたブロックの有効データの物理アドレス間の関係を維持し、かつ前記キャッシュ内のデータを該選択されたブロック内の廃用又はフリーのいずれかとして以前に指定されたストレージロケーションに関連付けることを特徴とする請求項１０に記載の方法。
【請求項１７】
前記物理アドレスが各ブロック内のブロックアドレス及び相対物理アドレスに関連付けられるように第２の間接性テーブルを維持する段階と、
前記選択されたブロックのブロックアドレスをフリーブロックのプールから選択された前記ブロックのブロックアドレスと交換する段階と、
を更に含むことを特徴とする請求項１０に記載の方法。
【請求項１８】
前記第１の間接性テーブル及び前記第２の間接性テーブルは、単一テーブルとして維持されることを特徴とする請求項１７に記載の方法。
【請求項１９】
データを格納するためのデバイスであって、
データが格納可能である複数の物理ロケーションを各ブロックが含むブロックとして編成された不揮発性半導体メモリと、
関連のバッファメモリを有し、かつデータインタフェース及び前記不揮発性半導体メモリと通信するプロセッサと、
を含み、
前記プロセッサは、
前記データインタフェースを通して指令を受信し、かつ前記不揮発性半導体メモリ内のデータのストレージを管理し、
ユーザからのデータ読取指令を解釈して該データ読取指令が第１のタイプのデータ読取指令又は第２のタイプのデータ読取指令であるか否かを決定し、
前記データ読取指令は、該指令が、論理アドレスを含み、かつ物理アドレスを含まない時に前記第１のタイプのものであり、
前記データ読取指令は、該指令が、前記データがメモリに格納される少なくとも物理アドレスを含む時に前記第２のタイプのものであり、
前記第１のタイプのデータ読取指令に応答して、前記データの前記物理アドレスを決定し、データを前記不揮発性メモリ内の前記物理アドレスから検索し、かつ該データを前記ユーザに戻し、又は
前記第２のタイプの読取指令に応答して、データを前記不揮発性メモリ内の前記物理アドレスから検索し、かつ該データを前記ユーザに戻し、
前記論理アドレスと前記物理アドレスの間の関係が、間接性テーブルに維持される、
ように構成される、
ことを特徴とするデバイス。
【請求項２０】
前記プロセッサは、
検索されたデータのためのメタデータを読み取り、
検索されたデータの前記メタデータの少なくとも一部分を前記第１又は前記第２のタイプの読取指令内のメタデータの少なくとも一部分と比較し、かつ
前記検索されたデータのメタデータ及び前記第１又は前記第２のタイプの読取指令の前記メタデータの前記部分が整合する場合に該検索されたデータを前記ユーザに戻すか、又は
前記検索されたデータのメタデータ及び前記第１又は前記第２のタイプの読取指令の前記メタデータの前記部分が整合しない場合にエラーメッセージを前記ユーザに戻すかのいずれかを行う、
ように構成される、
ことを更に含むことを特徴とする請求項１９に記載のデバイス。
【請求項２１】
前記プロセッサは、
前記ユーザからの書込データ指令を解釈して該書込データ指令が前記第１のタイプ又は前記第２のタイプのものであるか否かを決定し、
前記書込データ指令は、該指令が、前記論理アドレスを含み、かつ前記データが格納されることになる物理アドレスを含まない時に前記第１のタイプのものであり、
前記書込データ指令は、該指令が、前記データがメモリに格納される少なくとも物理アドレスを含む時に前記第２のタイプのものであり
前記第１のタイプの前記指令に応答して、プロトコルに従って前記第１のタイプの書込データ指令に関連付けられたデータが格納されることになる前記不揮発性半導体メモリ内の前記物理アドレスを決定し、かつ該物理アドレスを間接性テーブル内の前記論理アドレスに関連付けるか、又は
前記第２のタイプの前記指令に応答して、プロトコルに従って該第２のタイプの書込データ指令に関連付けられたデータが格納されることになる前記不揮発性メモリ内の物理アドレスを決定し、かつ該物理アドレスを前記ユーザへの応答メッセージに含める、
ように構成される、
ことを更に含むことを特徴とする請求項２０に記載のデバイス。
【請求項２２】
前記プロセッサは、
前記第１又は前記第２のタイプの前記指令に関連付けられたデータを前記不揮発性半導体メモリに書き込み、かつ
前記第１又は前記第２の前記指令に関連付けられたメタデータを前記不揮発性半導体メモリデバイスに書き込む、
ように構成される、
ことを更に含むことを特徴とする請求項２１に記載のデバイス。
【請求項２３】
前記プロセッサは、
前記第２のタイプの前記指令の前記メタデータの一部分を該第２のタイプの書込データ指令に与えられた前記物理アドレスに格納された前記データに関連付けられた前記メタデータの一部分と比較し、かつ
前記第２のタイプの前記指令に応答して物理アドレスを該第２のタイプの該指令の前記メタデータの前記部分が該第２のタイプの該指令の該物理アドレスに格納された前記メタデータの前記部分に整合する場合に決定する段階を実行するか、又は
前記第２のタイプの前記指令の前記メタデータの前記部分が該第２のタイプの該指令の前記物理アドレスに格納された前記メタデータの前記部分に整合しない場合に前記エラーメッセージを前記ユーザに戻す、
ように構成される、
ことを更に含むことを特徴とする請求項２０に記載のデバイス。
【請求項２４】
前記プロセッサは、
第２のタイプの書込データ指令が第１の論理アドレスを含むかを決定し、かつ該第１の論理アドレスを前記メタデータの一部分として使用するか、又は
前記第２のタイプの書込データ指令が第１の論理アドレスを含まないかを決定し、かつ前記決定された物理アドレスに関連付けて第２の論理アドレスを前記ユーザへの応答メッセージに与え、かつ
前記第２の論理アドレスを前記データのためのメタデータとして格納する、
ように構成される、
ことを更に含むことを特徴とする請求項２０に記載のデバイス。
【請求項２５】
前記メタデータは、前記論理アドレス、該論理アドレスのうちの前記１つに格納された前記データのハッシュ、シーケンス番号、又は時間値のうちの少なくとも１つを含むことを特徴とする請求項２０に記載のデバイス。
【請求項２６】
前記不揮発性半導体メモリは、物理アドレスと、メモリのブロックを含み、かつメモリのブロックを完全に消去される前に一度書き込むことができる特性を有するストレージアドレスの群とを有するストレージロケーションで構成されることを特徴とする請求項２０に記載のデバイス。
【請求項２７】
複数のブロックが、ブロックの群を形成し、該ブロックの群は、論理アドレス範囲又は物理アドレス範囲のうちの一方に関連付けられることを特徴とする請求項２６に記載のデバイス。
【請求項２８】
前記プロセッサは、
前記間接性テーブル内の対応する論理アドレスから切り離されることになる少なくとも１つの物理アドレスを識別するＴＲＩＭ指令を前記ユーザから受信し、
前記間接性テーブル内の前記論理アドレスに関連付けられた前記物理アドレスのステータスを無効に設定し、
前記物理アドレスを前記論理アドレスから切り離す、
ように構成される、
ことを更に含むことを特徴とする請求項２０に記載のデバイス。
【請求項２９】
前記ＴＲＩＭ指令は、基本論理ブロックアドレス及び範囲を含むことを特徴とする請求項２８に記載のデバイス。
【請求項３０】
前記ＴＲＩＭ指令に含まれる前記範囲のメタデータが、該範囲の前記少なくとも１つの物理アドレスの前記メタデータと比較され、該物理アドレスのステータスが、無効に設定され、該物理アドレスは、該メタデータが整合した時に前記論理アドレスから切り離されることを特徴とする請求項２９に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、引用によって本明細書に組み込まれる２０１３年１月８日出願の「データストレージのための方法及びシステム」という名称の米国特許仮出願第６１／７５０，１３３号に対する優先権の利益を主張するものである。
【背景技術】
【０００２】
用語「メモリシステム」及び「ストレージシステム」は、一般的に本明細書では交換可能に使用される。既存の用語は、大きいシステムのオンライン及びニアラインデータのより多くが回転式ディスクドライブよりもＦＬＡＳＨメモリアレイ又は固体ディスク（ＳＳＤ）のような固体デバイスに格納されているので変化している。ストレージシステムは、主としてディスクベースのものであり、かつディスクドライブの機械的性能によって支配されるデータ検索及び書込待ち時間を有すると考えられていた。多くの場合に、ディスクは、ネットワーク接続を通してプロセッサに接続されていた。メモリシステムは、データを要求するプロセッサに直接に取り付けられるか、又は処理速度においてほとんど障害を引き起こさないほど十分に低い待ち時間を有すると考えられていた。
【０００３】
ＦＬＡＳＨメモリアレイの待ち時間がディスクをかなり下回る場合があり、一方、このようなアレイのストレージ容量及び経済性がディスクベースのシステムと直接に競合し始めているので、「メモリシステム」と「ストレージシステム」の区別は、いくらか曖昧である。ここでは、これらの用語は、使用サーバと直接に又は何らかのネットワーク接続を通じて接続されるかに関わらず、固体メモリシステムを説明するために使用される。
【０００４】
用語ＳＳＤは、形状因子と業界規格に適合するインタフェースプロトコルとを有する差込可能モジュールを意味する場合がある。このような業界規格は随時変化するので、ＳＳＤの特性が、物理的又は電気的意味のいずれにおいても製造業者によって同様に変更されないであろうということは本明細書では示唆しない。用語ＳＳＤはまた、そのようなデバイスが業界規格又はストレージ技術の進化の段階を表す場合があるので、メモリ技術、形状因子、又はインタフェースプロトコルと無関係に持続性ストレージ特性を有するあらゆる半導体メモリシステムを説明するのに使用する場合がある。
【０００５】
例えば論理ブロックアドレス（ＬＢＡ）として使用される時の用語「論理アドレス」は、メモリシステムに格納されたデータを表すためにユーザプログラム、サーバ、又はファイルシステムなどに提示されるか又はそれらによって使用されるアドレス空間として理解しなければならない。例えば物理ブロックアドレス（ＰＢＡ）として使用される時の用語「物理アドレス」は、メモリシステムに格納されたデータを位置付けるようにメモリシステムに提示されるか又はそれによって使用されるアドレス空間として理解しなければならない。用語ＬＢＡ及びＰＢＡは、ＬＢＡとＰＢＡに格納された情報とがそれによって一意的に関連付けられるように複数のレベルの間接性を有する処理の終点を表すことができる。
【０００６】
不揮発性ストレージ上の持続性ストレージとしてＦＬＡＳＨメモリを有するＳＳＤでは、ユーザによってＳＳＤに提供されるような論理ブロックアドレス（ＬＢＡ）と情報がＳＳＤに格納された物理ブロックアドレス（ＰＢＡ）との関係は、フラッシュ変換層（ＦＴＬ）として公知の機能によって維持することができる。Ｌ２Ｐテーブルのような間接性テーブルは、ＳＳＤで格納してこの関係を提供することができ、それは、当業技術で公知のように、ＦＴＬがガーベージコレクション（garbage collection）及びウェアレベリング（wear leveling）のようなオーバーヘッド機能を実行する時に自律的に変わる場合がある。従って、物理アドレス空間は、ユーザには露出されない。
【０００７】
用語ＰＢＡは、ＬＢＡによって参照されたデータが格納されたメモリシステム内の物理（ブロック）アドレスに対する頭字語として使用される場合がある。典型的には、ＬＢＡを有するデータのページは、ＬＢＡデータサイズ及び関連付けられたメタデータと同じデータサイズを有する物理ページに関連付けられる。ＬＢＡに関連付けられたメタデータ及びＰＢＡは、一部の共通の属性を共有することができるが、データの論理的又は格納された態様に関連付けられた機能を提供する場合があり、かつ従って異なるサイズ及びフィールドを有することができる。データの論理的及び物理的表現のメタデータは、データへのアクセスを検証するか又はデータの有効性を保証するなどのために格納又は計算される一部の共通の属性を有することができる。
【０００８】
ＦＬＡＳＨメモリシステムの作動を説明する際に用語「ブロック」の追加の用法があるので混乱が生じる場合がある。アーキテクチャ的には、ＦＬＡＳＨメモリ回路は、ＬＢＡによって参照されて「ブロック」として編成されたデータの対応する量を各々が格納するあるサイズ（例えば、２ＫＢ）の複数の物理ページで構成することができる。ブロックは、例えば、２５６ページを含むことができる。現在利用可能であるＮＡＮＤ  ＦＬＡＳＨメモリ回路は、ブロックの個々のページを消去することができない特性を有し、ブロックのページのいずれかが消去されることになる場合に全体のブロックが消去される。更に、各ブロックのページは、単調な順序で書き込まれ、あるページが飛び越された場合に、そのページは、ブロック全体の消去前には続けて書き込むことができない。複数のページを含むブロックが本明細書で説明される時に、当業者は、固定された複数のページを含むこのようなブロックとブロック内の特定のページを表すＰＢＡとの区別を理解するであろう。一部の文脈では、用語「物理アドレス」が使用され、この用語は、ブロック又はＰＢＡを指すことができる。物理アドレスのページを含むブロックは、ブロックアドレス又はブロック番号を有するとしてマーク付けすることができ、このようなアドレスは、予め割り当てるか又は仮想化することができる。一部の状況では、物理アドレスは、例えば、ブロック番号とブロック内の物理ページアドレスとを含むことができる。
【０００９】
必然的に、レガシーディスク技術の用語及びＦＬＡＳＨメモリアレイのような固体メモリシステムの用語は、特に、セクター、ページ、及びブロックなどの定義において矛盾する。従って、セクターは、殆どの既存の仮想化手法の典型であるように、ストレージがレガシーの観点から視覚化される時に論理ブロックアドレス（ＬＢＡ）を有し、一方、固体メモリシステムの内部作動は、あるサイズ（例えば、５１２ｂ）を有するいくつか（例えば、４）のセクターを各ページが含む多数のページ（例えば、１２８ＬＢＡ）としてブロックを処理することができる。ちょうどメモリシステムのファームウェア又はソフトウエアがこれらの構成を受信する必要があるのと同じように、当業者は、現在の従来技術での用語の意味及び使用を認めるであろうし、概念を相応に適応させるであろう。
【００１０】
ＦＬＡＳＨメモリデバイスは、例えば、メモリデバイスの各セル内のデータの１ビット、２ビット、又は３又はそれよりも多くのビットのストレージを表す単一レベルセル（ＳＬＣ）、多重レベルセル（ＭＬＣ）、又は三重レベルセル（ＴＬＣ）として特徴付けることができる。デバイスの速度、ストレージ容量、及び耐久性は異なるが、本明細書の開示は、これらのタイプのメモリ、並びに存在するか又は今後に開発される場合がある他の固体メモリ技術のいずれにも適用可能である。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】ＵＳ  １２／７９６，８３６
【特許文献２】ＵＳ  ８，２００，８８７
【特許文献３】ＵＳ  １２２／９０１，２２４
【発明の概要】
【課題を解決するための手段】
【００１２】
デジタルデータを格納するためのデバイス及び方法を開示し、デバイスは、ブロックとして編成された不揮発性半導体メモリを有するプロセッサを有し、各ブロックは、データを格納可能である複数の物理ロケーションを有する。デバイスは、バッファ又はキャッシュとして使用される揮発性メモリと、ユーザ又はホストと通信するためのデータインタフェースとを有することができる。
【００１３】
態様において、プロセッサは、データインタフェースを通して指令及びデータを受信し、かつ不揮発性半導体メモリ内のデータのストレージを管理するように構成することができる。ユーザから受信したデータを読み取る指令は、データの読取又は書込指令のタイプとデータの関連パラメータとを決定するために評価することができる。
【００１４】
読取指令に関して、指令は、例えば、第１のタイプのデータ読取指令又は第２のタイプのデータ読取指令とすることができる。指令は、指令識別子に基づいて又は指令に関連付けられた引数によって区別することができる。
【００１５】
態様において、データ読取指令は、指令が論理アドレスを含み、かつ物理アドレスを含まない時に第１のタイプのものであり、データ読取指令は、データがメモリに格納された少なくとも物理アドレスを指令が含む時に第２のタイプのものである。
【００１６】
第１のタイプのデータ読取指令に応答して、データの物理アドレスは、例えば、論理−物理関連付けテーブル（Ｌ２Ｐ）の１形態とすることができるフラッシュ変換層（ＦＴＬ）に関連付けることができるような間接性テーブルを使用することによって決定される。日付は、不揮発性メモリ内の物理アドレスから検索されてユーザに戻されると考えられる。
【００１７】
第２のタイプの読取指令に応答して、データは、不揮発性メモリ内の物理アドレスから検索されてユーザに戻すことができる。Ｌ２Ｐテーブルは、例えば、検討する必要がない場合があるが、例えば、ガーベージコレクションを容易にするためにアドレス指定の間接性が更にある場合に、物理仮想化テーブルが存在することができる。このテーブルは、同じくＬ２Ｐテーブルによって使用することができる。テーブルは、一般的に、アクセス速度のために不揮発性メモリデバイスのバッファメモリのような揮発性メモリ内に維持されるが、それらは、典型的には、停止中にデータを保存するように検閲され、又はそうでなければシステム起動時に再構成される。
【００１８】
データ整合性を維持するために、ユーザは、読取指令に関連してメタデータを供給することができ、プロセッサは、受信したメタデータの少なくとも一部分を不揮発性メモリから読み取られたデータに関連付けられたメタデータと比較する。そのようなデータは、明示的である場合があり、又は格納データから導出されたメタデータである場合があり、かつデータが格納されたメモリシステムの部分の属性を識別することもできる。供給メタデータ及び読取メタデータが整合する場合に、読取データは、ユーザに戻される。そうではない場合は、エラー事例が処理される。
【００１９】
更に別の態様において、プロセッサは、書込指令が、例えば、第１のタイプ又は第２のタイプであるか否かを決定するために、ユーザからのデータ書込指令を解釈するようにプログラムされる。書込指令は、指令が、論理アドレスを含むが、データが格納されることになる物理アドレスを含まない時に第１のタイプのものである場合があり、書込指令は、指令が、データが不揮発性メモリに格納された少なくとも物理アドレスを含む時に第２のタイプのものである。
【００２０】
第１のタイプの書込指令の受信に応答して、第１のタイプの書込指令に関連付けられたデータが格納されることになる不揮発性メモリ内の物理アドレスは、プロトコルに従って決定され、物理アドレスは、間接性テーブル内の論理アドレスに関連付けることができる。
【００２１】
第２のタイプの書込指令に応答して、第２のタイプの書込指令に関連付けられたデータが格納されることになる不揮発性メモリ内の物理アドレスをプロトコルに従って決定し、かつ物理アドレスをユーザへの応答メッセージに含める。
【００２２】
第２の書込指令のメタデータの一部分は、指令のアクションによって修正又は廃物にされているデータが実際に正しいデータであることを検証するために、第２の書込指令に与えられた物理ロケーションで以前に格納されたメタデータの関連部分と比較することができる。メタデータが整合する場合に、入れ替えられているデータの正しい物理ロケーションがアクセスされており、処理は、先に進むことができる。そうでなければ、エラー事例が存在する。
【００２３】
第２のタイプの書込指令が論理アドレスを含む場合に、論理アドレスは、書込指令を用いて供給されたデータの新しいロケーションに対して格納されることになるメタデータに含めることができる。しかし、そのような論理アドレスが与えられない場合に、論理アドレスは、プロセッサによって与えられ、ユーザへの応答メッセージの一部として戻すことができ、この論理アドレスは、新たに格納されたデータのためのメタデータの一部として格納することができる。メタデータは、例えば、論理アドレス、対応する物理アドレスに格納されたデータのハッシュ、シーケンス番号、又は時間値のうちの少なくとも１つを含むことができる。
【００２４】
不揮発性メモリが、そこにストレージロケーションを有する複数のブロックから構成される場合に、ブロックの群は、ＲＡＩＤタイプ又はガーベージコレクションプロトコルなどのような共通属性を共有するために論理アドレス範囲又は物理アドレス範囲のうちの一方に関連付けることができる。
【００２５】
メモリシステム内のメモリの物理又は論理範囲を脱アロケートするように作動することができるタイプのＴＲＩＭ指令を含む他のタイプの指令は、メモリデバイスによって受信して処理することができる。これは、識別されたストレージロケーションを廃物として指定し、エントリをＬ２Ｐ又は他の間接性テーブルから除去する段階を含むと考えられる。ＴＲＩＭ指令は、ファイルシステムがストレージ処理のこの態様を管理することを許可するようにデータをメモリ範囲から削除するように作動することができる。従って、ＴＲＩＭ指令は、基本論理ブロックアドレス及び範囲、基本論理ブロックアドレス及びいくつかのストレージロケーション、又は基本アドレス及びビットマップなどを含むことができる。同じ手法は、物理ロケーションベースでメモリストレージロケーションを廃用（obsolete）とする時に使用することができる。これらの状況において、データは、事実上廃棄され、かつガーベージコレクション動作中に消去を受ける。この作動は、無効にされることになるデータロケーションの適正な識別に依存するので、メタデータの比較は、少なくともブロックベースで行うことができる。
【００２６】
データのストレージを管理する方法は、プロセッサと、揮発性メモリと、不揮発性メモリとを有するデータを格納するための不揮発性メモリデバイスを与える段階を含む。態様において、プロセッサは、データ読取指令が第１のタイプのデータ読取指令又は第２のタイプのデータ読取指令であるか否かを決定するためにユーザから受信したデータ読取指令を解釈するように構成される。データ読取指令は、指令が論理アドレスを含み、かつ物理アドレスを含まない時に第１のタイプのものであり、データ読取指令は、データがメモリに格納された少なくとも物理アドレスを指令が含む時に第２のタイプのものである。
【００２７】
第１のタイプのデータ読取指令に応答して、プロセッサは、データの物理アドレスを決定する段階と、データを不揮発性メモリ内の物理アドレスから検索する段階と、データをユーザに戻す段階とを実行し、又は第２のタイプの読取指令に応答して、プロセッサは、データを不揮発性メモリ内の物理アドレスから検索する段階と、データをユーザに戻す段階とを実行する。論理アドレスと物理アドレスの関係は、不揮発性メモリデバイ内の間接性テーブルに維持される。
【００２８】
態様において、データを検索する段階は、検索されたデータのためのメタデータを検索し、検索されたデータのメタデータの少なくとも一部分を読取指令の第１又は第２のタイプ内のメタデータの少なくとも一部分と比較する段階を含むことができる。
【００２９】
態様において、本方法は、書込指令が第１のタイプ又は第２のタイプであるか否かを決定するためにユーザからのデータ書込指令を解釈する段階を更に含むことができる。書込指令は、指令が論理アドレスを含み、かつ指令がデータが格納されることになる物理アドレスを含まない時に第１のタイプのものとすることができ、指令がデータがメモリに格納された少なくとも物理アドレスを含む時に第２のタイプのものとすることができる。
【００３０】
第１のタイプの書込指令に応答して、プロセッサは、第１のタイプの書込指令に関連付けられたデータが格納されることになる不揮発性メモリ内の物理アドレスをプロトコルに従って決定する段階と、物理アドレスを間接性テーブル内の論理アドレスに関連付ける段階とを実行することができる。
【００３１】
第２のタイプの書込指令に応答して、プロセッサは、第２のタイプの書込指令に関連付けられたデータが格納されることになる不揮発性メモリ内の物理アドレスをプロトコルに従って決定する段階と、物理アドレスをユーザへの応答メッセージ内に及び間接性テーブル内に含める段階とを実行することができる。
【００３２】
プロセッサは、書込指令の第１又は第２のタイプに関連付けられたデータを不揮発性メモリに書き込む段階と、書込指令の第１又は第２のタイプに関連付けられたメタデータを不揮発性メモリデバイスに書き込む段階とを実行する。
【００３３】
態様において、本方法は、第２のタイプ書込指令のメタデータの一部分が第２のタイプの書込指令の物理アドレスに格納されたメタデータの一部分に整合する場合に、第２のタイプの書込指令に応答して物理アドレスを決定する段階を実行する段階を含む。第２のタイプの書込指令が第１の論理アドレスを含む場合に、決定された物理アドレスに対して格納されたメタデータの一部分として第１の論理アドレスを使用する段階、又は第２のタイプの書込指令が第１の論理アドレスを含まない場合に、決定された物理アドレスに関連付けられた第２の論理アドレスをユーザへの応答メッセージに与える段階と、決定された物理アドレスに格納されたデータのためのメタデータとして第２の論理アドレスを格納する段階とがある。
【００３４】
態様において、メタデータは、論理アドレス、論理アドレスに格納されたデータのハッシュ、シーケンス番号、又は時間値などを含むことができる。
【００３５】
不揮発性メモリは、物理アドレスを有するストレージロケーションと、メモリのブロックを含み、メモリのブロックが完全に消去される前に一度書き込むことができる特性を有するストレージアドレスの群とで構成することができる。複数のブロックは、ブロックの群を形成することができ、ブロックの群は、アドレス範囲からアドレス範囲で異なる場合があるメモリ作動特性をユーザに提供するように論理アドレス範囲又は物理アドレス範囲のうちの一方に関連付けられる。
【００３６】
不揮発性メモリと、揮発性メモリと、プロセッサとを含むメモリシステムを与える段階を含むメモリシステム内のガーベージコレクションの方法を開示する。プロセッサは、論理アドレスを物理アドレスに関連付ける第１の間接性テーブルを維持すように作動し、メモリは、複数の物理アドレスを有するブロックとして編成され、各物理アドレスは、有効、廃用、又はフリー（free）のうちの１つであるとして特徴付けられる。
【００３７】
プロトコルに従って複数のブロックのブロックを選択する段階と、選択されたブロックの有効ストレージロケーションからデータを揮発性メモリ内のバッファに読み取り、一方、有効データのそれが読み取られたブロック内の物理アドレスとの関連付けを維持する段階とがある。不揮発性メモリに書き込まれることになるデータは、キャッシュに一時的に格納され、ブロックは消去される。
【００３８】
選択されたブロックの有効ストレージロケーションから読み取られたデータの相対物理アドレスではない物理アドレスがキャッシュ内のデータに割り当てられるように、プロトコルに従って、キャッシュ内のデータのための物理アドレスを間接性テーブルから選択する段階を実行する段階がある。
【００３９】
物理アドレスが割り当てられたバッファ内のデータ及びキャッシュ内のデータは、フリー物理ストレージロケーションを与えるために消去されたブロックのプールから選択されたブロックに書き込まれる。態様において、バッファ内のデータ及びキャッシュ内のデータは、ブロックが消去された後に有効データを保持していたブロックに書き戻すことができる。
【００４０】
物理アドレスは、ブロックのプールから消去ブロックを選択する段階が、有効データが読み取られたブロックのブロックアドレスをフリーブロックのプールから選択されたブロックのブロックアドレスと交換することによって実行することができるように、ブロックアドレスとブロック内の相対物理ロケーションとの組合せによって形成することができる。このようにして、データの最終物理アドレスは、ユーザに露出する必要がない。
【図面の簡単な説明】
【００４１】
【図１】開示する実施形態によって作動するように構成することができるユーザコンピュータと通信するメモリシステムのブロック図である。
【図２】作動を達成するために従来の指令及び応答が再利用されたか又は新しい指令及び応答が使用されたユーザからの指令及びメモリシステムからの応答の例を示す図である。
【図３Ａ】メモリの論理ブロックの物理ブロックとの初期の関連付けを示す図である（ブロックは、各々が複数のストレージロケーションから構成される）。
【図３Ｂ】期間にわたるメモリの作動後の関連付け表の状態の例を示す図である。
【図４】書込指令のタイプを出す判断がメモリシステム内のデータロケーションの知識に関してユーザによって与えられた情報に依存するユーザコンピュータ内のユーザ処理又はデバイスドライバの例を示す図である。
【図５】論理アドレスを調べるために既知の物理アドレスが使用されるユーザコンピュータによる読取指令の例を示す図である。
【図６】供給された論理アドレスを使用するアクセスの検証を含む物理アドレスが読取指令の引数として供給されたメモリでの読取指令の処理の例を示す図である。
【図７】書込指令が物理アドレスを引数として含まない時にデータをメモリに書き込む例を示す図である。
【図８】修正されるデータが格納された物理アドレスを書込指令が含むメモリへのデータの書込と修正済みデータが格納される新しい物理アドレスをユーザに通知する処理との例を示す図である。
【図９】フリーブロックが消去ブロックプールから選択される時に仮想物理アドレスへの物理ブロックのアロケーションを管理するためのガーベージコレクション処理の一部分を示す図である。
【図１０】有効データをブロック内の同じ相対物理ロケーションに維持し、他のデータを廃用又はフリーであったロケーションに散在させることができる例におけるガーベージコレクション処理の一部分を示す図である。
【図１１】ブロック内のメモリロケーションのガーベージコレクションの管理の一部としてビットマップを使用する例を示す図である。
【発明を実施するための形態】
【００４２】
例示的な実施形態は、図面を参照することにより深く理解することができるが、これらの実施形態は、制限的性質のものとは意図していない。同じか又は異なる図面中の同様に付番された要素は、同等の機能を実行する。要素は、付番され、又は頭字語によって指定され、又はその両方とすることができ、表現間の選択は、単に明瞭さのために行われ、従って、数字によって指定された要素及び頭字語又は英数字インジケータによって指定された同じ要素は、そのベースでは区別されない。
【００４３】
説明する方法及び図に示す装置は、機械実行可能命令、例えば、ソフトウエアに又はハードウエアに又は両方の組合せに構成又は具現化することができることは認められるであろう。機械実行可能命令は、命令に作用する汎用コンピュータ、ＤＳＰ、又はアレイプロセッサのような専用プロセッサなどに本明細書に説明する機能を実行させるために使用することができる。これに代えて、作動は、説明する作動を実行する結線論理又はファームウエア命令を有することができる特定のハードウエア構成要素により、又はアナログ回路を含むことができるプログラムされたコンピュータ構成要素及び特殊ハードウエア構成要素のあらゆる組合せによって実行することができる。
【００４４】
本方法は、少なくとも部分的に、本明細書に開示する方法を実行するようにコンピュータ（又は他の電子デバイス）をプログラムするのに使用することができる命令が格納された有形機械可読媒体を含むことができるコンピュータプログラム製品として提供することができる。本明細書の目的上、用語「機械可読媒体」は、コンピュータ機械、又は専用ハードウエアによる実行のために一連の命令又はデータを格納又は符号化することができ、かつ機械又は専用ハードウエアに本発明の方法又は機能のいずれか１つを実行させることができるあらゆる物理媒体を含むように取るものとする。従って、用語「機械可読媒体」は、そのような目的のために開発することができる固体メモリ、光ディスク、及び磁気ディスク、磁気メモリ、及び光メモリ、並びにあらゆる同等のデバイスを含むがこれらに限定されないように取るものとする。
【００４５】
例えば、制限を目的とするのではなく、機械可読媒体は、読取専用メモリ（ＲＯＭ）、全てのタイプのランダムアクセスメモリ（ＲＡＭ）（例えば、ＳＲＡＭ、ＤＲＡＭ、ＰＲＡＭ）、プログラマブル読取専用メモリ（ＰＲＯＭ）、電子的変更可能読取専用メモリ（ＥＰＲＯＭ）、磁気ランダムアクセスメモリ、磁気ディスクストレージ媒体、ＮＡＮＤ又はＮＯＲ構成とすることができるＦＬＡＳＨメモリ、メモリ抵抗器、又は電気データストレージ媒体、光学データストレージ媒体、音響データストレージ媒体などを含むことができる。ＤＲＡＭのような揮発性メモリデバイスは、コンピュータプログラム製品を格納するのに使用することができるが、揮発性メモリデバイスは、電源を有するシステムの一部であり、電源又はバッテリが、コンピュータプログラム製品が揮発性メモリデバイス上に格納されるか又は使用デバイスによって使用される期間にわたって電力を回路に供給することを条件とする。
【００４６】
更に、１つ又は別の形態（例えば、プログラム、手順、処理、アプリケーション、モジュール、アルゴリズム、又は論理）にあるソフトウエアに関して、アクションを起こすか又は結果を引き起こすように言われるのが当業技術において一般的である。そのような表現は、当業者によって公知のように、コンピュータ又は同等のデバイスによるソフトウエアの命令の実行が、コンピュータ又は同等のデバイスのプロセッサにアクションを実行させるか又は結果を出させるという単に便宜的な言い方である。
【００４７】
図１は、コンピュータシステム１の代表的なシステムアーキテクチャである。ホストコンピュータ５は、プロセッサ１０とローカルキャッシュメモリ２０とを有する。ローカルキャッシュメモリ２０は、典型的には、ＤＲＡＭ又はＳＲＡＭのようなランダムアクセス特性と実質的に一定の時間応答とを有する揮発性メモリである。しかし、ローカルキャッシュメモリ２０はまた、頻繁に使用されるデータ及びプログラムへの高速アクセスをもたらし、かつ冗長データ又はデータ圧縮などを格納する必要性を低減するように複製解除のような他の機能をもたらすＦＬＡＳＨメモリ構成要素を含むことができる。ＦＬＡＳＨメモリは、ホストコンピュータ５のマザーボード上である場合があり、又はＰＣＩｅのような高速インタフェースを使用する接続モジュールとすることができる。
【００４８】
ＦＬＡＳＨメモリは、従来の回転媒体ディスクをエミュレートする従来のＦＬＡＳＨディスクに対応する形状因子、又は他の形状因子、又は接続性を有することができる。ホストコンピュータ５及びＦＬＡＳＨメモリは、本明細書に説明する概念から逸脱することなく、異なるエンクロージャ又は同じエンクロージャ内とすることができる。用語ＳＳＤを使用する場合に、形状因子、インタフェースプロトコルなどを指定する意図はない。むしろ、この用語は、コンピュータ関連のシステム内にプラグ接続可能か又は埋め込まれる固体（典型的には、ＦＬＡＳＨ）デバイスを表す現在使用されている用語である。
【００４９】
追加のストレージは、メモリシステム１００によって与えることができ、これは、ＰＣｌｅファブリック、ＬＡＮ、ＷＡＮ、インターネットのようなあらゆる様々な搬送機構５０によってホストコンピュータ５に接続される。ｉＳＣＳＩ、ＦＣｏＥ、ＴＣＩ／ＩＰのような特定のプロトコルは、データを搬送してデータの格納及び検索を管理するのに使用することができる。これらは、例えば、ストレージエリアネットワーク（ＳＡＮ）、ネットワーク接続ストレージ（ＮＡＳ）などとして特徴付けることができる。しかし、データ及び指令搬送及びこれらの機能の特定のプロトコルの特定の機構は、本明細書に説明するシステム及び方法に関する制限であるとは意図していない。この点を強調するために、ホストコンピュータ５とメモリシステム１００の間の搬送は、汎用クラウド５０として示されている。
【００５０】
本明細書に説明する指令及び機能は、汎用フォーマットで与えられることが多く、当業者は、既存のプロトコルを使用又は修正するように一般的な説明を適応させるか、又は本明細書に説明する方法及びシステムをもたらすように新しいプロトコルを考案することができるであろう。例えば、いくつかのタイプの読取指令、書込指令、ＴＲＩＭ指令があり、そのような指令は、説明のために名称が与えられる必要があり、かつ指令間で区別するように第１のタイプ、第２のタイプのように一般的に説明することができる。
【００５１】
メモリシステム１００は、１つ又はそれよりも多くのメモリモジュール１５０で構成することができ、各メモリモジュールは、複数のメモリ回路２００で構成することができる。メモリモジュール１５０は、メモリコントローラ又はプロセッサ１６０と、揮発性ランダムアクセスメモリ１７０とを有することができる。搬送機構との及び内部構成要素間のインタフェースのようなメモリモジュールの他の詳細は、当業者によって認められるであろう。メモリシステムはまた、指令をメモリモジュールに分散するメモリコントローラ又はプロセッサ１４０を有することができる。論理−物理メモリロケーション関連付け、ガーベージコレクション、ウェアレベリングのような機能及び他の関連のデータ及び信号処理機能は、特定のシステム設計要件に応じて、例えば、メモリコントローラ１４０又はプロセッサ１６０によって実行することができる。
【００５２】
メモリ回路２００が例えばＦＬＡＳＨメモリである場合に、そのようなメモリの特性は、一度書き込まれた後に、メモリのブロックは、メモリのブロックのページに再び書き込む前に消去しなければならないということである。この特性により、ブロックを消去することができるように、あらゆる残りの有効データのブロック全体のクリアを含め、ページ及びブロックの再アロケーション及び早期の消耗を回避するために、メモリのブロック上の消耗を均一化するように書き込まれる消去された（フリー）ブロックのプールからの消去されたブロックの選択を管理する通常のフラッシュ変換層（ＦＴＬ）又は類似のスキーマが生じる。インプレースで又はリロケーションにより、データの定期的リフレッシュのような他の通常業務機能も実行することができる。
【００５３】
多くの場合に、メモリモジュールは、どのバージョンが現在使用されていようとも（頭字語及び参照番号）、回転式媒体を有し、かつＳＣＳＩのような業界規格に準拠するハードディスクドライブ（ＨＤＤ）をエミュレートするように意図される。従って、ＲＥＡＤ及びＷＲＩＴＥのような指令は、標準フォーマットで又は専用フォーマットで出すことができ、かつＬＵＮの供給を含むことができるが、ホストによるデータのアドレス指定は、論理アドレス空間に実施される。ファイルシステム及び複製解除機能などは、ホスト又はユーザとの関連がある論理アドレス空間において作動することができる。指令は、搬送機構上でコンピュータ１からメモリ１００に送られ、ユーザデータが格納された物理メモリロケーションを位置付けるようにＦＴＬによってマップされる。ユーザデータは、ユーザＬＵＮ／ＬＢＡに従って検索されて要求側アプリケーションに戻すことができる。
【００５４】
ユーザ側でもメモリ側でも、アドレス空間は、アドレス指定において更に別の間接性を受ける場合があり、ユーザは、メモリシステムを各々が別々のアドレス空間を有する論理ユニット番号（ＬＵＮ）から構成されたと見ることができ、ＬＵＮをユーザ又はユーザアプリケーションに割り当てることができるようになっている。ＬＵＮ／ＬＢＡは、次に、メモリシステムのＬＢＡに、その後に、ＰＢＡに分解することができる。ＰＢＡは、データが格納された物理ロケーションを直接的又は間接的に関わらず指示することができる。従って、ユーザ側では論理空間において間接性があり、メモリ側では物理空間において間接性がある場合がある。更に、アドレス指定は、例えば、同様に処理される特定のサイズのデータのページ、ページの基本アドレス、ページの基本アドレス及び範囲、ページの基本アドレス及びビットマップなどを指定する物理又は論理アドレスとすることができる。
【００５５】
用語ＬＵＮは、範囲、ＲＡＩＤタイプ、ページサイズ、ファイルのタイプ特性のような公知の特性を有するようにユーザに割り当てることができ、かつ対応するストレージロケーションを物理メモリに有するあらゆる論理的メモリ空間を表すことができる。これは、複数のユーザの共存を可能にすることができ、各ユーザは、ユーザアプリケーションに特化されたストレージ特性を有する。例えば、ストレージ特性は、ログ構造化ファイル、映像のようなバルクデータ、又はテーブルデータなどのストレージを容易にするように選択することができる。各ＬＵＮの範囲は、異なる場合があるが、それは、各ユーザ又はユーザアプリケーションのストレージ要件が異なる場合があるからである。
【００５６】
例えば、仮想化することができる複数のユーザアプリケーションは、スレッドと同様に、アプリケーション又はユーザの各々に対して選択される特性を維持しながらメモリシステムに同時点にアクセスすることができる。
【００５７】
確立することができる複数のＬＵＮのうちの１つのＬＵＮに着目するために以下に説明する内容を考察することができる。メモリシステムにマップする複数のＬＵＮのうちの各ＬＵＮに対して構成された時のメモリシステムの特性は、メモリの物理リソースによって抑制されるので異なる場合がある。メモリシステム内では、ＬＵＮの各々は、各ＬＵＮに割り当てられる特性をもたらすためにハードウエア全体の部分集合に対して分解することができる。すなわち、論理ＬＵＮに対応して、メモリのブロックのマッピングは、論理ＬＵＮが物理メモリのブロックの群への排他的アクセスを有することができるように実行することができ、割り当てられた物理メモリのブロックの管理は、関連の論理ＬＵＮ特性及び要件に従う。
【００５８】
ガーベージコレクションパラメータは、ＬＵＮ独特とすることができる。例えば、データが、論理的順番でＦＬＡＳＨに最も効率的に書き込まれ、かつメモリリソースをＬＵＮに基づいて割り当てることにより、ガーベージコレクション動作をトリガするのに必要である場合があるデッドブロックの百分率のようなガーベージコレクション判断基準が各ＬＵＮに対して異なる場合がある使用事例が存在する場合がある。
【００５９】
ウェアレベリングは、ＬＵＮに基づいて管理することができるが、同じくメモリシステムに対して全体的に管理することができ、それは、ウェアレベリング処理の目的が、メモリ回路の予想作動寿命にわたるメモリ回路のブロックの使用量を均一化することであるからである。データをメモリに書き込んでデータのブロックを消去する頻度は、データのタイプ及びユーザ必要性で変わるので、ブロックの消耗の割合は、サービスを受けている特定のＬＵＮに依存すると考えられる。
【００６０】
態様において、消去されたブロックは、フリー（消去済み）ブロックが特定のＬＵＮによって必要とする場合がある時に、共用プール内に置かれ、ポリシーに従ってメモリコントローラによって選択することができる。メモリ側作動を説明するのに使用される時の用語「ＬＵＮ」は、従って、メモリシステムの特定の部分集合を表すとして理解することができ、特定の部分集合は、ＬＵＮを割り当てられたユーザ又はユーザアプリケーションの排他的使用に対して管理される個々のブロック、ブロックの群で形成されたＲＡＩＤ群、ファイルシステムなどに関連付けることができる。従って、ユーザが、ユーザとメモリデバイスの間に配置された処理によって仮想化され、メモリコントローラ又はプロセッサ１４０によって受信された書込作動の時間シーケンスが、複数の仮想化されたユーザによって開始された書み込み作動の多少ランダム混合物になることができる時でさえも、ＬＵＮに現在割り当てられた不揮発性メモリブロックのメモリブロックへの書込作動は、個々にＬＵＮの各々のメモリブロックに対して順番に処理することができる。これは、各々が使用アプリケーション独特である複数のメモリシステム特性の保守に寄与する。
【００６１】
ウェアレベリングに関して、例えば、ＬＵＮは、ブロックのストレージロケーションの特定の百分率が廃用であるか又は特定の百分率が廃用又はフリーであるなどのガーベージコレクションをトリガする処理によって特徴付けることができる。更に、この百分率は、消去されるブロックプールの最小寸法の維持に関連して考慮することができる。
【００６２】
別の態様において、判断基準は、ブロックがガーベージコレクションに選択される前はブロックのストレージロケーションの全てが廃用であるべきであることとすることができる。本明細書に説明するように、ユーザは、書込作動を通して物理ストレージ空間におけるデータのロケーションに関する知識を取得することができ、かつ例えばログファイルを管理して、その後にブロック全体を廃用とするように具体的にブロックのデータをリロケートすることができ、ブロックのデータは、ガーベージコレクションに向けて利用可能にされるようになっている。
【００６３】
ＦＬＡＳＨタイプのメモリシステム内のストレージの管理がより高度になり、使用されるメモリのサイズが増大する時に、アプリケーションのダイバーシティは、各々ユーザの必要性に最良に適合することができ、メモリシステム機能も増大することができる。一部の状況では、メモリシステム内のＦＴＬテーブル及びＬ２Ｐテーブルでは、データマッピング及びガーベージコレクションに関連するローカル作動を管理することができ、一方、他の場合では、ガーベージコレクションに関連付けられたデータ管理は、本明細書に説明する書込作動を使用して管理することができ、より低いレベルのウェアレベリング及びブロック消去及びリフレッシュ機能のみが、例えば、メモリシステム１００によって独立して実行される。
【００６４】
データがメモリシステム１００に最初に書き込まれる時に、データは、ホスト論理アドレスに対応するＦＬＡＳＨメモリのブロックの順次物理アドレスに書き込むことができる。何らかの時間の後に、以前に書き込まれたメモリロケーションは、変更されたデータを対応する論理アドレスに書き込むことによってホストアプリケーションによって修正することができる。しかし、ＦＬＡＳＨメモリロケーションには以前に消去が行われていない限り書き込むことができないので、新しいデータは、他の判断基準を満足する利用可能な（フリー）メモリロケーションに書き込まれ、この判断基準の１つは、ＦＬＡＳＨメモリのブロックの物理メモリロケーションに単調に増加するページの順で書き込まれる必要があるということである。（ページは、様々なサイズのものであり、すなわち、「スーパー」ページなどとして合併することができる。）単調に増加するページの順でのデータの書込は、格納データの整合性に及ぼす「書込妨害」の影響を低減するようにメモリデバイス製造業者によって必要とする場合がある。他の追加の判断基準も、消耗を最小にするために課することができる。いずれにしても、変更されたデータは、変更前のデータと同じ場合には書き換えられない。（この規則の例外は、単一ページが変更されることになる時にページのブロック全体が書き換えられる場合である。）
【００６５】
従って、書込指令がメモリシステムによって受信された時に、コントローラは、例えば、ＦＴＬ処理を実行し、データが書き込まれるべき次の物理アドレスを選択し、このアドレスをＦＴＬのＬ２Ｐテーブルにマップし、データを物理アドレスに格納する。一般的に、データは、既存の論理空間管理プロトコルとの整合性が得られるようにセクター（５１２バイト）又はページ（２キロバイト又はそれよりも多く）にグループ分けされる。セクター、ページ、及びブロックの他のサイズは、チップのストレージ容量及び製造に応じて使用することができ、複数のページ増分（「スーパーページ」）などで書き込むシステムがある。物理アドレスをデータストレージのために割り当てる処理は、ウェアレベリング判断基準に基づいて消去作動、ガーベージコレクションを使用するデータのリロケーション、及び書き込まれるべきブロックの選択を予定又は実行する段階を伴う場合がある。ユーザ書込作動では、Ｌ２Ｐテーブルを修正し、論理アドレス指定を使用するユーザ読取作動では、メモリシステム１００内のＬ２Ｐテーブルにアクセスする。
【００６６】
態様において、コンピュータシステム１とメモリシステム１００とを含むコンピュータシステムは、コンピュータシステム１が実質的に論理アドレス空間において作動し、メモリシステムが実質的に物理メモリ空間において作動するように編成することができる。各ユーザ又は使用アプリケーションは、異なるスキーマ又はプロトコルを使用して対応する割り当てられたＬＵＮを管理することができる。
【００６７】
そのような作動を達成するのに使用することができる汎用指令の例を図２に示している。２つのタイプの書込指令は、ＷＲＩＴＥ（新しいデータ、以下、ＷＲＩＴＥ１）及びＷＲＩＴＥ（修正済みデータ、以下、ＷＲＩＴＥ２）である。
【００６８】
ＷＲＩＴＥ１作動は、以前に書き込まれなかったか、又はユーザによって（例えば、「ＴＲＩＭ」作動によって）フリーにされた論理アドレスを表すことができる。本明細書では、要求側エンティティに割り当てられたＬＢのＬ２Ｐテーブルは、メモリシステム１００ではなくコンピュータ５に維持される。要求側エンティティに割り当てられたＬＢＡの範囲は、アプリケーションをコンピュータ５又はコンピュータ上で実行する１人又はそれよりも多くのユーザへのリソース割り当てを可能にするようにＬＵＮ、コンテナとして又は何らかの他の構成物によって定めることができる。
【００６９】
一例では、書込指令をコンピュータ５からメモリシステム１００に送る前に、コンピュータ５のアプリケーションを検査して、対応する入力がメモリシステム１００のＰＢＡに対してあるか否かを決定することができる。ＬＢＡが以前に書き込まれていないか、又は例えばＴＲＩＭ指令によってフリーにされていない場合は何もないはずである。
【００７０】
ＷＲＩＴＥ１指令がメモリシステム１００によって受信された時に、メモリシステム１００は、ポリシーに従ってＰＢＡを指令に割り当てることができ、データは、割り当てられたＰＢＡに書き込まれる。データが不揮発性メモリ２００において割り当てられたＰＢＡにコミットされた時に、書込作動の肯定応答が生成されて要求側エンティティに戻され、この要求側エンティティは、コンピュータ５とすることができる。肯定応答は、コンピュータ５内の要求側アプリケーションによって最初に供給されたＬＵＮ／ＬＢＡ又は他の類似の参照インジケータと、データがメモリシステム１００に格納された物理アドレスとの両方を含む。ホストコンピュータ５又はメモリシステム１００の外側とすることができる他のロケーションに位置する関連のＬ２Ｐテーブルは更新することができる。ファイルシステムのようなレーザレベルでストレージを管理する他の方法を使用することができる。新しい格納データのＰＢＡロケーションに対応するメモリシステム１００内のビットマップは、有効状態に設定される。肯定応答ＬＢＡ、ＰＢＡタプルは、回復のためにメモリシステム１００に格納することができる。これは、ログの形態とすることができる。
【００７１】
当業者は、メタデータの一部は、いくつかの場所又は形態で格納することができ、かつ明示的システム要件に向けて十分すぎるほどである場合があることを認識するであろう。しかし、ハードウエア故障又はメタデータテーブルの他の不慮の破損に対する予防措置として、作動中の何らかの冗長なメタデータ及びメタデータ検証を使用することに設計における熟慮が与えられるべきである。これに加えて、メタデータは、それを異なる処理によって最も効率的に使用することができるシステム内の場所に位置付けることができる。
【００７２】
ＷＲＩＴＥ２指令は、ユーザに割り当てられた論理アドレス内のデータが修正されることになる場合に使用することができる。すなわち、ＬＢＡに対応するデータは、以前に格納されており、かつ特に無効にされてはいない（例えば、ＴＲＩＭ作動により、又は前回のＷＲＩＴＥ２指令により）。ＷＲＩＴＥ２指令のＬＢＡパラメータは、ホスト５内の関連の物理アドレスを調べるために使用することができ、データに関連付けられたＰＢＡは、書込要求内に含められる。ＷＲＩＴＥ２指令は、修正されるデータが現在格納されているＰＢＡの値を含むので、ＰＢＡ内のこのデータは、ここで、書込指令に応答して書き込まれた新しいか又は修正済みデータによってもう使用されないものになる。これは、関連のブロックが先に消去されないとＦＬＡＳＨメモリ内のページを書き換えることができないことで生じる。ＷＲＩＴＥ２指令のペイロードである修正済みデータは、ＷＲＩＴＥ１指令と同じ方法で割り当てられた新しく割り当てられたＰＢＡに書き込むことができる。データが不揮発性メモリ２００にコミットされた時に、ブロックのＰＢＡのステータスを表すビットマップは、データが以前に格納されたＰＢＡの廃用ステータスを反映するように変更することができ、修正済みデータが格納されたＰＢＡに対応するブロックのページのビットマップは、有効状態に設定される。肯定応答メッセージは、そのようなものがＷＲＩＴＥ２指令のパラメータとして含まれ、新しいＰＢＡがメモリシステム１００によって割り当てられる場合に、受信されたＬＢＡを含む。このタプルはまた、メモリシステムの目的のためにメモリモジュール１５０に格納することができる。コンピュータ５では、アプリケーションは、修正済みデータがこの時点で格納されたＰＢＡを格納するためにこの時点で更新することができる。
【００７３】
別の態様において、ＷＲＩＴＥ２指令の一形態は、データを含まない場合がある。むしろ、例えば、ブロックの範囲を有する様々な物理アドレスが、データを物理ブロック間に転送するのに使用することができる。廃用である物理アドレス範囲のデータは、転送することができない。従って、ＴＲＩＭ作動を物理ブロックに対して実行することができ、有効データの新しい物理ロケーションを使用アプリケーションに報告することができる。ロケーション及び参照データは、物理メモリのテーブルによって部分的にミラーリングすることができ、又はデータと共にメタデータとして格納することができる。
【００７４】
大雑把には、ＷＲＩＴＥ、ＲＥＡＤ、ＴＲＩＭのような指令は、定義された応答を有し、かつ様々な方法をパラメータのユーザ供給の引数に応答して実行させるようにパラメータ化することができるアプリケーションプログラミングインタフェース（ＡＰＩ）、又はアプリケーションバイナリインタフェース（ＡＢＩ）と見なすことができる。時には、これらのＡＰＩ又はＡＢＩは、広義にはＰＯＳＩＸにおけるように又は狭義にはＳＣＳＩにおけるように業界規格によって符号化され、一方、他の例は、企業によって公開されるガイドによって支配される場合がある。ＡＰＩの形態は、関数呼出し、指令、又はメッセージなどとすることができる。従って、本明細書に示す特定のフォーマットは、単に例にすぎず、かつ特定の実施形態に限定するように理解すべきではない。態様において、新しいか又は修正済みデータのストレージのためのＰＢＡの割り当てポリシーは、データが、データを現在書込中であるブロックの次の最高ページＰＢＡに格納され、書込ポインタが、ブロックの次のページに進められるということとすることができる。現在のブロックが埋められた時に次のブロックをブロックのプールから選択するか、複数の部分的に埋められたブロックを維持するか又は並列性又は冗長増大のためにデータを複数のメモリ回路２００全体を通して分散化するポリシーに対しては後述する。
【００７５】
ＷＲＩＴＥ１及びＷＲＩＴＥ２指令の効果は、データの物理ロケーションの知識をコンピュータ５内のメモリ１００に又は他のデータ管理方法で維持することである。ロケーション関連付けもメモリモジュール１００に格納された場合に、バックアップが従って供給される。このバックアップは、回復以外の作動中には必要とされない場合があるので、必要に応じて処理されるログファイルとしてメモリシステム１００内に維持することができる。バックアップを不揮発性メモリに維持すると、メモリモジュール１００の揮発性メモリにおけるＬ２Ｐルックアップテーブルの必要性を取り除くことができる。態様において、ホストコンピュータ５が関連の不揮発性キャッシュメモリを有する場合に、Ｌ２Ｐテーブルのバックアップをキャッシュに格納することができる。そのようなキャッシュメモリは、当業技術で公知のように、例えば、頻繁にアクセスされるデータの格納又はデータ複製解除に使用することができる。
【００７６】
ＷＲＩＴＥ２指令は、パラメータとして修正中のデータのＰＢＡを有することができる。これは、基本アドレス及び範囲として表すことができる。ここに説明する内容の明瞭性のために、修正中の（廃用とされた）データは、ＰＢＡ１で格納されたと見なされ、修正済みデータ（新しいデータ）であるデータは、ＰＢＡ２で格納される。新しいデータ及び古いデータは、同じか又は異なる値を有することができる。ＷＲＩＴＥ２作動を完了する前に、ＰＢＡ１で格納されたメタデータを読み取ることができ、メタデータの態様は、書込指令に含まれている同等のメタデータ値と比較することができる。この２つのメタデータ値は、適切なデータ（ＰＢＡ１）がＰＢＡ２で格納されるように修正されてる場合は整合する。そのような有効性検査を使用すると、メタデータの態様及びＷＲＩＴＥ２指令によって修正中のデータのＰＢＡが書込指令に指定されることになるので共有メモリシステムのセキュリティを増大させることができる。この目的に使用されるメタデータは、例えば、ホスト５内のデータのＬＢＡ、又はＬＢＡに又はデータに計算されるハッシュとすることができる。メタデータがデータ自体のハッシュである場合に、ハッシュは、データと共にメタデータとしてメモリシステム１００に格納することができないが、これに代えて、修正されるＰＢＡでの格納データに基づいて計算することができる。書込作動及び読取作動のシーケンスは、不整合は適正に作動するシステムではありそうもないので重ね合わせることができる。不整合が発生して修正済みデータが新しいＰＢＡに書き込まれた場合に、データは、廃用としてマーク付けすることができ、エラーメッセージを生成することができる。しかし、メモリへの攻撃が不整合（誤ったメタデータ又はＰＢＡ）指令の流れを送ることによって行われる可能性を考慮しなければならず、メタデータの検査は、修正済みデータをメモリにコミットする前に望ましいであろう。
【００７７】
２つのタイプの読取指令は、ＲＥＡＤ（論理アドレス）、以下ＲＥＡＤ１と、ＲＥＡＤ（物理アドレス）、以下ＲＥＡＤ２とすることができる。ＲＥＡＤ１は、例えば、ＳＳＤ又はメモリシステム１００内のＬ２ＰテーブルがＦＴＬによって維持され、論理−物理アドレスの変換がＳＳＤ又はメモリシステム１００で実行される場合にＳＳＤが現在従来通りのままで構成される時に使用することができる。ＲＥＡＤ１指令がホスト５内に維持されるＬ２Ｐテーブルに従ってホスト５のデバイスドライバ又はオペレーティングシステムによって解釈される場合に、ＲＥＡＤ１指令は、ホストコンピュータＬ２Ｐテーブル内の論理アドレスと物理アドレス間の関連の知識を使用してＲＥＡＤ２指令に変更することができる。
【００７８】
ＳＳＤが従来通りに構成された場合に、ＲＥＡＤ１指令は、例えば、ＳＳＤ内に維持されたＬ２Ｐテーブルを使用してＳＳＤで解釈され、データは、ホストコンピュータ５でユーザに戻されることになる。しかし、この指令は、ＳＳＤがＲＥＡＤ２指令を受諾するように構成された時に存在すると考えることができる。
【００７９】
ＲＥＡＤ２指令及びＷＲＩＴＥ２指令はまた、ローカルＬ２Ｐデータ構造を維持するＳＳＤに使用することができる。例えば、標準的なＲＥＡＤ１及びＷＲＩＴＥ１指令をサポートすることができると思われるそのようなＳＳＤでは、ＲＥＡＤ２指令及びＷＲＩＴＥ２指令の使用は、指令の実行における待ち時間を低減することができる。典型的には、ＲＥＡＤ１のデータを戻すために、典型的なＦＴＬは、Ｌ２Ｐデータ構造を使用して要求されたＬＢＡをデータを保持するＰＢＡにマッピングすることができる。ＳＳＤにおけるＬ２Ｐデータ構造のこの使用は、ＰＢＡを調べるためにＦＬＡＳＨメモリへの１つ又はそれよりも多くのアクセスを伴う場合があり、これは、時間を消費し、バス帯域幅を消費し、他の同時性の作動に必要とする場合があるダイにアクセスし、ＥＣＣ復号器リソース及び他のリソース及び制御論理を使用し、これらの全ては、そうではない場合は他の作動に利用可能になる計算タイムライン及びバス帯域幅リソースを低減する。ＲＥＡＤ２指令によって供給されるＰＢＡを使用することにより、ＦＬＡＳＨメモリは、ＳＳＤでＬ２Ｐテーブルを検討することなくユーザデータを戻すために読み取ることができる。ＰＢＡ（例えば、メタデータとしてのＬＢＡ）で格納されたメタデータが、望ましいＬＢＡがもはやＰＢＡに位置しないことを示す場合に、ＦＴＬ  Ｌ２ＰルックアップがＳＳＤで実行される。ＰＢＡがＬＢＡデータの最新バージョンを含むことを検証するために供給される追加のメタデータがない状況では、局所的なＬ２Ｐデータ構造内のＦＴＬルックアップは、ＰＢＡからのデータ読取と並行して実行することができ、ＦＴＬルックアップによってＰＢＡがＬＢＡデータの現在のコピーを保持することが検証されると直ちに要求されたデータの戻しが可能である。
【００８０】
殆どのオーバーヘッドタイプデータリロケーション（例えば、ガーベージコレクション、ウェアレベリング）がＳＳＤへのユーザ書込作動の頻度によって事実上駆動されるので、読取作動においてリロケートされたデータに遭遇する確率は、データに書き込む速度に大まかに比例することができる。
【００８１】
上述したようなＲＥＡＤ２指令の実行の処理が、要求されたＬＢＡがＲＥＡＤ２要求内に設けられたＰＢＡになかったと決定した状況では、次に、その後に要求側に送られた指令に対応する応答メッセージは、ＷＲＩＴＥ１／２指令と同様に、ＬＢＡが現在位置付けられたＰＢＡを含むことができる。これは、ユーザコンピュータ５内に維持されたＬ２Ｐテーブルの更新をもたらすことができる。あるいは、ＬＢＡデータが要求によって示されたそのＰＢＡにもはやないことを示すステータスメッセージを戻すことができる。
【００８２】
これに加えて、引数としてＬＢＡ／ＰＢＡ対又はＬＢＡのみを取って指示ＬＢＡの現在のＰＢＡを戻すＶＥＲＩＦＩＹ又はＬＯＣＡＴＥのような指令を使用することができる。そのような指令は、整合性のために又はＲＥＡＤ２に提示されるＰＢＡが有効でなかったことを示すステータス返答に応答して、ＬＢＡのロケーションを検証するのに使用することができる。これに代えて、ＰＢＡが有効でなかった場合に供給される応答は、データの固定パターンが戻される場合はＴＲＩＭ指令のタイプの場合と同じとすることができる。このようにして、無効ＰＢＡは、読み取られることから保護することができる。
【００８３】
ＶＥＲＩＦＩＹ指令及びＬＯＣＡＴＥ指令は、例えば、単一アドレスよりもむしろアドレス範囲を引数として取ることができる。返答結果はまた、ビットマップ又は個別アドレス要求を要求するという表示とすることができる要求されたアドレスが順番に格納された範囲、アドレスのリスト、例外リストを有する範囲とすることができる。
【００８４】
ＷＲＩＴＥ２指令に関して、ユーザコンピュータ５でのローカルＬ２Ｐマップは更新されることになるが、ＲＥＡＤ２指令と同じ待ち時間短縮は、ＷＲＩＴＥ２指令が基本的なストレージ（例えば、「ページ」）として格納されたデータのサイズよりも小さいデータを更新することになる場合に達成することができる。例えば、ＳＳＤがローカルＬ２Ｐテーブルを４ＫＢのページで格納データとして維持した場合に、５１２バイトのデータのみを定められた４ＫＢのＬＢＡの内側のアドレスに書き込むＷＲＩＴＥ２指令は、まず現在格納された４ＫＢのデータをそのＬＢＡのために読み取り、指定の５１２バイトの範囲を新たに供給されたデータと入れ替えて、その後に、４ＫＢ全体をＦＬＡＳＨに書き込む必要がある場合がある。ＰＢＡをＷＲＩＴＥ２指令の一部として供給することにより、４Ｋの読取修正は、Ｌ２Ｐ更新と並行して実行することができる。
【００８５】
ＲＥＡＤ２指令は、ＬＢＡ、又はＬＢＡのハッシュ、又は以前にメタデータのように計算された格納データのようなＬＢＡの何らかの表現を有することができる。ＳＳＤは、データをＰＢＡによって指示された物理ロケーションから検索するようにＰＢＡで作動し、格納されたメタデータをＬＢＡ又はハッシュがないかに関して検査する段階又はデータのハッシュなどを計算する段階などを含むことができるデータ有効性のあらゆる検査をし、データをホスト５及びユーザに戻す。戻されたデータは、ＲＥＡＤ２指令のＬＢＡによって識別することができる。
【００８６】
ＲＥＡＤ２指令は、ＬＢＡと、一部がデータの有効なバージョンが読み取られたことを検証するのに使用することができる何らかのハッシュ値、シーケンス番号、ナンス、又は他のメタデータとを有することができる。ＬＢＡの一部又は指令に提示されたＰＢＡに位置するデータの他のメタデータが、指令に提示された対応する予想されたメタデータと整合しない場合に、これは、ＳＳＤによって実行されたオーバーヘッド作動により、例えば、要求されたデータがリロケートされたことを示すことができる。ＳＳＤは、ローカルＬ２Ｐテーブルを使用してＬＢＡのリロケートされたデータの位置を識別することができる。これに代えて、要求されたＬＢＡが、ＲＥＡＤ２指令に提示されたＰＢＡに位置しない場合に、ＳＳＤは、エラー又は要求されたデータの位置を識別することができないＴＲＩＭタイプの応答を戻すことができる。ＦＬＡＳＨデバイスがローカルＬ２Ｐテーブルを持たない場合に、現在のＰＢＡは、要求されたデータと共に、使用されるコンピュータ５がＬ２Ｐ情報を更新することができるように戻すことができる。ＳＳＤのオーバーヘッド作動に対処するためのホストコンピュータＬ２Ｐテーブルの更新は、後述するように背景作動として実施することができる。
【００８７】
ある期間の後に、ユーザデータストレージのために割り当てられたメモリシステムのメモリのブロック又はメモリシステムの個々のＳＳＤの百分率は、１００％又はほぼ１００％になることができる。ＦＬＡＳＨメモリを使用するようなメモリシステムは、典型的には、過剰供給される。すなわち、ユーザに又はオーバーヘッド作動の必要性のために提供されるよりも多い物理メモリがある。ディスクシステムさえも、臨時のセクター故障に対処するように少量の過剰供給を有する。（慣例により、ハードディスクドライブ（ＨＤＤ）及びＳＳＤの容量は、十進フォーマットで説明され、一方、実容量は２進数であり、約７パーセントの過剰供給が得られる。）ＦＬＡＳＨでは、より大量の過剰供給が典型的に行われる。これは、ＳＳＤの性能属性及び価格帯に応じて追加の１０パーセント又はそれ未満〜５０パーセント又はそれよりも大きい範囲とすることができる。
【００８８】
少なくとも、ユーザが利用可能な空間が満たされるまで「ガーベージコレクション」と呼ばれる動作が実行され、修正済みデータの空間が利用可能であるようになっている。（メモリの視点から、ＰＢＡに書き込まれたあらゆるデータは、データが書き込まれるページが使用されなかったページ、又は消去されたページであるという意味で新しいデータである。新しいか又は修正済みとしてのデータの特性解析は、一般的にユーザに関連付けられた構成物として見られるべきであるが、データステータスの一部の態様は、データと共に又はＬ２Ｐテーブルに格納されたメタデータにおいて表すことができる。）
【００８９】
上述したように、データが修正された時に、修正済みデータは、修正中のデータを保持するＰＢＡに書き込むことができないので、追加のストレージ空間が必要である。ガーベージコレクション処理は、一般的に、まだ有効であるブロックのページを識別し、有効なページをフリーページを有するブロックに転送し、ガーベージコレクション中のブロックを消去すると考えることができる。リロケートされたページのロケーションは、通常はＳＳＤ内に維持されたＬ２Ｐテーブルを修正することによって対処される。態様ではまた、ユーザコンピュータ５を更新することができる。
【００９０】
ガーベージコレクションに選択される複数のブロックのうちの廃用データの特定の百分率を有するブロックの選択は、「ウェアレベリング」として公知である処理によって決定することができる。この百分率は、例えば、閾値、様々な値として、又は値及びブロックが消去された回数の組合せによって確立することができる。この処理の目的は、物理ブロックがＳＳＤデバイスの寿命にわたって消去された回数を均一化することである。ＦＬＡＳＨメモリが格納データの誤差率、又はブロック内のデータ保持時間が許容不能になる前に持続することができる個々のブロックのブロック消去サイクルの数がＦＬＡＳＨメモリのタイプに応じて約１０００〜約１，０００，０００に限定される消耗によって特徴付けられるので、単一ブロックの反復的な消去は、デバイスの早期の消耗になると考えられる。
【００９１】
ガーベージコレクション、ウェアレベリング、及びＳＳＤのＬ２Ｐテーブルの更新の活動は、一般的に、ＳＳＤのフラッシュ変換層（ＦＴＬ）において実施されると考えられる。しかし、ＷＲＩＴＥ２指令及びＲＥＡＤ２指令が使用された時に、アクティブＬ２Ｐテーブルは、ホストコンピュータ５に位置付けることができ、情報は、特定のＬＢＡがガーベージコレクション及びウェアレベリングの結果として格納されたＰＢＡのリロケーションを追跡するためにＳＳＤとホストコンピュータ５との間で交換されることが必要になるが、それは、これらの処理が、ホストコンピュータ５及びユーザの必要性とは独立して発生することができるからである。
【００９２】
例えば、リロケーションを追跡するために交換される情報量は、新しいブロック又はアドレスの新しい範囲に転送したＬＢＡを定められたブロック又は物理アドレスの定められた範囲で識別することによって緩和することができる。ブロック又は範囲の全てのアドレスが転送するわけではない状況は、基本的なインジケータ上でのビットマップ、例外リスト、又は他の注釈表示で処理することができる。これは、ユーザコンピュータ５でのＬ２Ｐファイル管理システムなどが、ＳＳＤでの対応するＬ２Ｐに対する修正が追跡される時のより小さいサイズの通知を受信し、かつ変更を直ちに処理しなければならないことよりはむしろユーザコンピュータで背景作動として修正を実行することを可能にすることができる。定められたＬＢＡ上で作動を実行する指令がＳＳＤに送られることになる時に未処理の通知がある場合に、ＰＢＡのブロック又はアドレス範囲との照合により、要求されたデータのＰＢＡが変わることになり、その後に、新しい正しいＰＢＡがＳＳＤでＬ２Ｐを使用して送られたか否かを決定することになる。
【００９３】
態様において、個々にホストコンピュータ５にデータのリロケーションを通知する必要性は、１つの形態の「インプレース」ガーベージコレクションを使用することによって回避するか又は最小にすることができる。簡単な形態では、メモリのブロックをガーベージコレクションに選択することができる。有効なデータページは、メモリから揮発性メモリ１７０に一時的に読み取られ、揮発性メモリ１７０では、廃用（修正済み、削除済み、又はそうでなければ転送した）ページが識別され、廃用ページのＰＢＡが、一時的なアロケーションテーブルに格納される。ブロックは、ブロック内のアドレスの全てが現在フリーであるよう消去することができ、一時的に揮発性メモリ１７０に格納されたデータが、ブロックに書き換えられる。処理中に、ＰＢＡがブロックにおいて単調な昇順で書き込まれることになる場合に、一時的なアロケーションテーブルでは、（以前は廃用データ値によって占有された）フリーＰＢＡを、不揮発性メモリに書き込まれることになる揮発性メモリ内のガーベージコレクション後のデータの待ち行列において一時的なアロケーションテーブルからデータのページに関連付ける。従って、ストレージを待つガーベージコレクション後のデータは、廃用データを以前に保持していたＰＢＡに格納される。Ｌ２Ｐテーブルは、ブロック内の変更されたデータを記録するために更新される。日付がないＬ２Ｐテーブル内の記録の数は、書き込まれるべきデータの全てに新しいＰＢＡが割り当てられる状況から低減される。選択されたブロックの一部のみを廃用データで構成することができるので、ガーベージコレクション後のデータとの廃用データの交換に関連付けられたＬ２Ｐテーブル記録のみが変更される。
【００９４】
同じブロックにデータに繰り返し書き込む時に、かつデータ相対ロケーションが変わらない場合に、過度の消耗は、繰り返し書き込まれている個々のビットと共に発生する場合がある。ブロックのデータ全体は、例えば、ブロックの以前の消去の回数に基づいて反転ビットフォーマットで定期的に書き込むことができる。
【００９５】
フリーブロックへのデータ書込が完了した時に、廃用データによって以前占有されていたページロケーションは、ここで、修正済みデータ及びストレージを待つデータのキャッシュにあった可能性があるあらゆる新しいデータが書き込まれる。キャッシュは、揮発性メモリとすることができる。修正済みデータページの各々のＰＢＡは、更新データ管理アプリケーションを更新するようにホストコンピュータ５に戻される。すなわち、サービスメッセージは、例えば、ユーザコンピュータを更新するためにブロックで送ることができる。望ましくは、廃用データによって以前占有されていたメモリロケーションの全ては、この作動中に修正済みデータ又は新しいデータで満たされることになる。しかし、不揮発性メモリ２００へのデータの付託を直ちに行う必要がある場合がある（電力損失中のような）状況がある場合があり、利用可能である修正済みデータがないページは、揮発性メモリ１７０内のデータの全てを格納することができるようにフラグが書き込まれる。
【００９６】
ＰＢＡに格納されたデータがガーベージコレクションのためにリロケートされ、データの新しいロケーションがＬ２Ｐテーブルにおいてまだ更新されていない状況が存在する。データは値が変更されていないので、既知のロケーションでのデータ及び新しいがまだ参照されなかったロケーションでのデータは、ガーベージコレクション後のブロックがＬ２Ｐテーブルが更新されるまで消去されないことを条件として同じである。メタデータは、両方のロケーションにおいて正しいものになり、正しいデータが、既知のロケーションから戻されることになる。介在する書込作動があれぱ、書込作動の引数としてメタデータの変化を引き起こしたと考えられ、不整合か発生したと考えられる。従って、この不整合のために、例えば、正しいＰＢＡを識別するためにローカルＳＳＤ  Ｌ２Ｐテーブルが使用される。
【００９７】
「インプレース」ガーベージコレクションだけでは、処理のウェアレベリング態様を満たすことができず、それは、ブロックが「アクティブ」データを格納することができるからである。この用語は、「アクティブ」として頻繁に修正されるデータと「スタティック」としてまれに修正されるデータとを区別するのに使用する。アクティブデータもスタティックデータも、当業者によって理解されるように「有効」データである。アクティブデータを有するブロック（少なくとも、活動が書込作動である場合）は、頻繁にガーベージコレクションが行われることが必要になり、従って、スタティックデータを有するブロックよりも早期に消耗が発生する場合がある。ＳＳＤは、ＬＢＡ又は関連のＰＢＡのどの群がアクティブ又はスタティックかを決定することができず、活動は、ホスト５及び利用者の必要性によって抑制される。
【００９８】
ブロックが定められた位置で書き換えられる場合の消耗緩和の１つの形態は、データの補完物をブロックに書き込むことである。データの２つの状態うちのどちらが存在するかは、例えば、ブロック消去カウントによって決定することができる。少なくとも、それによって実質的に等しい数の「０」ビット及び「１」ビットが時間と共にページに書き込まれる。
【００９９】
しかし、必然的に、そのような対策では、結果としてブロック上の不均一な消耗が発生することになる。従って、ガーベージコレクション中のブロック内のデータは、定められた数の「インプレース」ガーベージコレクション動作後に別のブロックにリロケートする必要がある。それにもかかわらず、ホスト計算機５にこの処理を通知する必要性を排除することができる。図３は、ホストコンピュータが遭遇するような物理メモリアドレス（ＰＢＡ）を更新することなくメモリブロックのリロケーションをサポートするデータ構造を示している。図３Ａは、ＦＬＡＳＨメモリデバイスのブロックの全てが書き込まれておらず、Ｋ個のブロックがＦＬＡＳＨデバイスの合計Ｎ個メモリブロックのユーザに提供されるシステムの初期化時のデータ構造の例である。メモリチップの単一平面は、Ｎ個のメモリブロックで構成することができ、各ブロックは、１２８ページで構成することができ、各ページは、２キロバイトで構成することができる。数値は、作動の説明を容易にするように与えられ、デバイスアーキテクチャに基づいて他の値を使用することができる。メモリ技術の更なる進化のために、結果として異なる相対値が生じる可能性があるので、本明細書のいずれのものも本明細書に開示する概念の範囲を制限すると解釈すべきではない。
【０１００】
各ブロックは、ブロック番号（ＢＮ）を有することができ、かつ物理ブロック（ＰＢ）と対にすることができる。ＰＢは、消去カウントＥと空間カウントＣとを有するとして特徴付けることができる。消去カウントＥは、ＰＢが消去された回数であり、空間カウントＣは、最終ブロック消去作動後にもう使用されてなくなったページ数である。この簡単な例では、ブロックの各ページが書き込まれ、かつページ数Ｃが別の物理アドレスに修正されてリロケートされたと仮定した。メモリシステムの作動が、一部のブロックを部分的にのみ書き込まれた状態にしておくように構成された場合に、ブロック内に残存するフリーページ数を表すことができる別のパラメータを維持することができる。
【０１０１】
修正済みデータがＦＬＡＳＨメモリに書き込まれることになる時に、物理ロケーションは、ポリシーに従って選択される。例えば、ユーザ割り当て可能なメモリのブロックは、ガーベージコレクション及びウェアレベリング判断基準に基づいて選択される。このブロックは、ブロックの消耗の状態及びシステムの残りの状態に基づいて、定められた位置でガーベージコレクションが行われるか又はリロケートすることができる。ブロックがガーベージコレクションが行われてリロケートされる場合に、フリーブロック（書き込まれたことがないか又は消去されたもの）がそのようなブロックのプールから選択されるので、選択されたブロックのＰＢ値をガーベージコレクションが行われるブロックのＢＮに関連付けることができる。選択されるＰＢは、最低消去カウントＥを有するＰＢのようなポリシーに従うことができる。ブロックの２つの表現間の関連付けは、一体ブロックである１２８ページ（２５６キロバイト）の増分でのＢＮとＰＢ間のアドレスオフセットを表している。図３Ａは、ＢＮとＰＢ間の関連付けが初期化時の１対１の関係であることを示し、ＢＮ＝ＰＢであり、ＢＮの値は、単調に増加する整数であり、一方、図３Ｂは、何らかの時間の後に、２つの表現間の関連付けがデータ構造によって与えられ、１対１の関係の時間的進化が、例えば、ユーザの要求を満すためにホストコンピュータ５により、かつガーベージコレクション及びウェアレベリングをもたらすためにＳＳＤによって行われたデータの修正によって駆動されることを示している。
【０１０２】
図３に示すようなデータ構造を使用してホストコンピュータ５によって理解されるように物理ブロックアドレス（ＰＢＡ）を割り出すことにより、データの効率的なリロケーションは、ホストコンピュータにリロケーションを報告することなく実行することができる。この追加のレベルの間接性は、リロケートされた物理ブロックにおけるデータの内部順序付けを維持しながらホストＰＢＡをリロケートされた物理ブロックに効率的に関連させる。
【０１０３】
ＦＬＡＳＨメモリデバイスは、実質的に不揮発性である。すなわち、電力オフ／電力オンサイクルを通してデータを保持し、電力オフ時間は長い場合がある。メモリのタイプ、作動条件、及び消耗の状態に基づいて、この「長い」時間は、一部の場合に１日〜数年の範囲とすることができる。データ損失を回避するために、データを定期的に読み取り、必要であればエラーを訂正し、かつ定められた位置で書き換えるか又はリロケートすることができる。この作動は、別のシステム保守（オーバーヘッド）機能であり、データリフレッシュと呼ばわれることが多い。ガーベージコレクションも、新しく修正又はリフレッシュされたデータを格納するために廃用ページを使用することができるように実行することができる。
【０１０４】
定められた位置でのガーベージコレクションは、ブロックの有効データの全てを揮発性メモリに読み取り、ブロックを消去し、新たに修正されたデータを含め有効データを廃用ページアドレスに書き換えることによって作動する。不揮発性メモリの量は、少なくともブロックのサイズに等しい。ガーベージコレクションがリロケーションで実行される場合に、ガーベージコレクションが行われるブロックから読み取られる有効データは、ストレージを待つ修正済みデータで統合され、選択したフリーブロックに直ちに書き込むことができる。不揮発性メモリバッファのサイズは、リロケートされるデータの一部分をバッファに入れるのに要求されるサイズまで低減することができる。
【０１０５】
態様において、ガーベージコレクションの判断基準を満たすいくつかのブロックを選択して再割り当ての待ち行列に入れることができる。選択したブロックの各々に関して、廃用データを有するページのアドレスを識別し、新たに修正されたデータのＰＢＡとして再割り当ての待ち行列に入れることができる。従って、ＷＲＩＴＥ２指令が受信された時に割り当てに直ちに利用可能なそのようなＰＢＡを有するデータ構造がある場合がある。ハードウエア及び作動ソフトウエアの設計が、未処理要求が電力損失、無秩序な停止、又は整然とした停止の場合に損失なしに不揮発性メモリに付託することができるようなものであることを条件として、ＷＲＩＴＥ２指令は、対応するＰＢＡで滞りなく肯定応答することができる。
【０１０６】
ホストコンピュータ５内のＬ２Ｐデータ構造は、上述した通りである。そのようなデータ構造は、応答速度のために揮発性メモリ内に維持することができるが、これは、データが停止、電力損失のような場合に回復可能である必要があることになることを意味する。これを行う１つの方法は、ＳＳＤ自体、不揮発性キャッシュなどとすることができる不揮発性ストレージ媒体内に一部又は全体に関わらずホストＬ２Ｐデータ構造を定期的に検閲することである。すなわち、ＳＳＤに関連付けられたＬＢＡ範囲、メタデータなどは、回復を目的としてＳＳＤに格納することができる。簡潔さのために、検閲されたＬ２Ｐテーブルは、ホストコンピュータに既知であるＢＮの定められた組に割り当てることができ、これらのＢＮは、ユーザデータ空間内、又は留保された論理空間内とすることができる。すなわち、物理ブロックのいずれも、検閲されたログに使用することができる。典型的には、ブロックは、データが１００％書き込まれることになるが、これは、検閲されたデータはスタティックであるからである。検閲が一巡してブロックが消去されることになる時に、次にこの目的に使用されることになるＰＢの選択は、ガーベージコレクション及びウェアレベリングポリシーに従うことができる。トランザクションログが、検閲されたログを必要であれば迅速に回復することができるようにＳＳＤ内に維持することもできる。整然とした停止があれば、結果として、現在のホストＬ２Ｐテーブル全体は、ＳＳＤに格納されることになる。ホストＬ２Ｐテーブルは、ＳＳＤ  Ｌ２Ｐ内に維持されていない情報を含むことができ、この追加の情報は、ユーザアプリケーションによって維持される。しかし、ＳＳＤ  Ｌ２Ｐテーブルは、ホストＬ２Ｐテーブルの部分集合である。
【０１０７】
態様において、メモリを管理する方法は、ファイルシステム又は他の使用アプリケーションとすることができるユーザ間を仲介するホストコンピュータ５内にインストールされたデバイスドライバを使用することができ、メモリは、例えば、１つ又はそれよりも多くのＳＳＤによって表される。デバイスドライバであるとして図４に示す処理６００の特徴付けは、例えば、機能がファイルシステム又は仮想化システムなどの一部として実施されるアプリケーションを排除するように意図していない。システム内のより高いレベルでは、格納データのページの論理アドレスは、例えば、論理ユニット番号（ＬＵＮ）及びＬＵＮ内の論理ブロックアドレス（ＬＢＡ）として特徴付けることができる。しかし、最終的には、論理アドレスは、Ｌ２Ｐテーブルによるか又はホストコンピュータ５のデバイスドライバ６００による使用のためにメモリシステム１００によってホストコンピュータ５にエクスポートされるＬＢＡの範囲でアドレス値に分解することができる。
【０１０８】
ユーザ指令６１０がデバイスドライバ６００によって受信された時に、この指令は、以前に使用されていなかったと考えられるＬＢＡへの書込のためか（ＷＲＩＴＥ１）、又は修正済みデータをＬＢＡに書き込むために関連付けられたＰＢＡを有するＬＢＡへの書込のため（ＷＲＩＴＥ２）とすることができる。別の態様において、ＬＢＡは、過去のある時に書き込まれたと考えられ、その中のデータは、例えば、ＴＲＩＭ指令によって廃用とされたと考えられる。実質的に、ＬＢＡは、ＰＢＡから分離され、ＬＢＡが再び割り当てられた時に、状況は、ＬＢＡが書き込まれたことがないのと同等である。従って、ＷＲＩＴＥ１指令が適切であると考えられる。
【０１０９】
従って、適切な書込指令の選択は、ＬＢＡに対応するＰＢＡの検索６２０が成功するか否かを決定する６３０ことによって達成することができる。ルックアップが不成功であった場合に（６３０−ノー）、データは、以前ＬＢＡに格納されなかったわけであり、ＷＲＩＴＥ１を形成し６９０、搬送サブシステム５０でＳＳＤに送る７００。ルックアップが成功した場合に（６３０−イエス）、データは、以前に格納されていたわけであり、書込作動によって修正されることになる。これは、ＷＲＩＴＥ２指令であり、ＷＲＩＴＥ２指令は、Ｌ２Ｐテーブルから戻されたＰＢＡと、修正されるアドレスの検証に使用されることになるあらゆるメタデータとを使用して構成される。データを搬送サブシステム５０でＳＳＤに送る６５０。
【０１１０】
本明細書では、成功した応答及びそのような応答に関連するアクションに対して説明する。エラー事例が予想されるので対処する必要があるが、本明細書ではいくつかのみを例に説明する。
【０１１１】
ＷＲＩＴＥ１指令が出されて、ＳＳＤが失敗せずにデータペイロードを格納した場合に、肯定応答は、新しく割り当てられたＰＢＡを含む。この肯定応答を受信し７１０、書込に使用されたＬＢＡを参照してホストコンピュータ５においてＬ２Ｐテーブルをポピュレートするのに使用する７２０。ＷＲＩＴＥ２指令が出されて、ＳＳＤが修正済みデータ値ペイロードを格納した場合に、ＳＳＤ６６０からの応答は、新しいＰＢＡを含み、この新たなＰＢＡは、Ｌ２Ｐテーブル７２０を更新するのに使用される。
【０１１２】
図５は、データをＳＳＤから読み取る処理を示している。使用アプリケーションは、論理ブロックアドレス（ＬＢＡ）を使用してデータ８１０を要求する。この手法により、ＳＳＤストレージの詳細からの使用アプリケーションの独立性が維持される。ＬＢＡは、データが格納されたＰＢＡをホストコンピュータ５内のＬ２Ｐテーブルから取得する８２０ために使用される。対応するＰＢＡがない場合に、既存の格納データはなく８３０−ノー、これは、エラー条件８９０とすることができる。
【０１１３】
ＰＢＡが要求されたＬＢＡに関連付けられる場合に、ＲＥＡＤ２メッセージを構成し８４０、メモリシステムＳＳＤに送る８５０。ＲＥＡＤ２指令は、要求されたデータが格納されたＰＢＡを含むので、データを直接にアドレス可能である。ブロック−リロケーションガーベージコレクションが実行された場合に、ブロックルックアップインデックスが、物理アドレス解決を完了するようにデータ構造から取得される。データがメモリシステムによって戻された時に、指令は、条件が満たされたわけである。
【０１１４】
図６に示すように、ＲＥＡＤ２指令がメモリシステム１００によって受信された時に９１０、処理９００は、データの読取を読取指令によって指示されたＰＢＡから実行する。ガーベージコレクション及びウェアレベリングがブロックレベルのリロケーションによって達成された場合に、ＰＢＡは、上述したように、データ構造から得られたブロックオフセット値によって修正することができる。データ及びメタデータを読み取り９２０、読取指令が正しいデータのためのものであることを検証するために検査をメタデータに実行することができる９３０。メタデータは、データ書込時に格納されたデータのＬＢＡ、データ又はＬＢＡのハッシュ、インデックス、時間値などとすることができる。要求側アプリケーションは、ＰＢＡを取得するためにホストコンピュータ５内のＬ２Ｐテーブルにアクセスする許可を有する必要があるので、この検査の実行は、セキュリティ対策として有用であると考えられる。疑似指令は、要求されたＬＢＡにアクセスすることはできず、結果として、メタデータの不整合が発生することになる。アクセス指令が検証された時に、要求されたデータがホストに戻される９４０。
【０１１５】
図７に示すように、書込がホストコンピュータ５で要求され、かつ対応する以前に格納されたデータがない時に、関連付けられたデータペイロードを有するＷＲＩＴＥ１指令が出される。処理１０００は、指令１０１０をメモリ又はＳＳＤに受信し、テーブル１０２０からフリーＰＢＡを脱待ち行列にする段階を含む。割り当てられたＰＢＡは、データを書き込むことができる次の利用可能なフリーページを指示する。定められた位置でのガーベージコレクションが使用される場合に（ブロックレベルの間接性の有無に関わらず）、書き込まれることになるデータは、ガーベージコレクション動作が実行される時のブロック又はフリーページを有する次のブロックに書き込まれるデータフローに挿入することができるようにバッファ１０３０に入れられる。データは、ブロックへの書込の単調な態様を保存するように適切なＰＢＡが利用可能である時にブロックに書き込まれ、これは、データ書込時のストレージ空間の利用可能性に応じて適切なガーベージコレクションバッファ、又は新しいブロック又は部分的に埋められたブロックに書き込まれることになるバッファ内への挿入によるものとすることができる。各ページのステータスを表すビットマップは、ブロックがフリーブロック待ち行列に入れられるように消去され、ＰＢＡに関連付けられたビットがこの時点で実質的に設定された時に、フリーにリセットされたと考えられる。ブロックが書き込まれて、ＰＢＡが飛び越された時に（データ利用可能性の欠如のために）、ビットは、もう使用されていないとして設定されるが、これは、データをその後にＰＢＡに書き込むことができないからである。すなわち、停止のような状況では、データのブロックは、ブロックビットマップの残りのビットがもう使用されていないとして設定することによって事実上埋めることができる。それによって迅速な回復を容易にすることができる。
【０１１６】
故障からの回復をもたらすために、メモリシステム１００に格納されるようにログエントリを生成する１０６０。このログエントリは、メモリシステム１００内のバックアップＬ２Ｐテーブルを更新するのに使用することができ、又はメモリ又はホストに更に別の処理なしに格納することができ、Ｌ２Ｐテーブルの更新は、ホストコンピュータ５内で実行される。割り当てられたＰＢＡ値１０７０をホストに戻し、ホストＬ２Ｐテーブルは、上述したように更新される。応答がホストに供給される特定の時間は、ハードウエア設計に依存し、かつデータ及びログエントリが何時不揮発性メモリに確実に付託されたと見なされるかに依存する。
【０１１７】
図８に示すように、関連のデータペイロードを有するＷＲＩＴＥ２指令は、書込が、ホストコンピュータ５で要求され、かつデータが、対にされたＰＢＡを有するＬＢＡに以前に格納されていた時に出される。指令を受信し１１１０、データ及びメタデータをＰＢＡから読み取る。指令の有効性が、ＲＥＡＤ２指令の有効性と同様に検査され、データは、ＷＲＩＴＥ１指令と同様にメモリに書き込まれ、その結果は、格納された時のデータへの新しいＰＢＡの割り当てであるようになっている。これは、ログに格納されたＰＢＡ値であり、指令の成功表示としてホストコンピュータに戻される。
【０１１８】
データが書き込まれることになるブロックの選択の例を図９に示している。各ブロックをブロックが以前消去された回数及びブロック内の有効なページ数によって特徴付けることができるように、各ブロックのステータスは、例えば、図３に示すようなデータ構造内に維持される１２１０。最終消去からの時間も維持することができる。ブロックは、ポリシーに従ってガーベージコレクション／ウェアレベリングに対して選択される。例えば、ブロックは、ブロックが消去された回数、最終消去以来の時間、及びＴ（１−ｕ）／（ｕＮ）のような有効なブロックの割合の機能を使用してランク付けすることができ、ｕは、有効であるブロックの割合（ｕ＞０）である。最高ランクを有するブロックは、例えば、次のブロックとして選択することができる。書込指令への割り当ての待ち行列においてフリーＰＢＡの十分な利用可能性を保証するように１つよりも多いブロックを選択することができる。
【０１１９】
候補ブロックを選択し、かつ消去する１２２０か、又は消去されることになるブロックの待ち行列に入れる。この作動は、ブロックを使用ために割り当てる際に遅延がないように、ブロックが必要になる前に実行することができる。これが行われるか否かは、実際のワークロード下でのシステム動的性能に依存する。
【０１２０】
選択されたブロックインデックス値を決定し１２３０、現在の新しいＰＢＡに書き込むために使用されるフリーブロックのブロックインデックスと交換する１２４０。この作動は、典型的には、データの廃用ページを以前に表したＰＢＡが占有するようにデータが再利用されるブロックから移動されることと交互配置することができる。ブロックインデックステーブルを更新し１２５０、その後の読取が適切な物理ロケーションに向けられるようにする。
【０１２１】
態様において、ＷＲＩＴＥ２指令は、例えば、段階１１２０及び１１３０の一部又は全部を省略するようにパラメータ化することができる。例えば、Ｌ２Ｐテーブルがメモリシステム１００に対して検閲される場合に、連続ＬＢＡは、使用されているブロックにパターンを書き込むことにより又は割り当て機構により、システム初期化中に連続ＰＢＡに以前に格納されていたわけである。検閲処理は、修正された組のデータをページ又は複数ページベースで書き込むことと見なすことができ、以前にＬＢＡ／ＰＢＡの連続ブロックに格納されたデータの全ては、修正済みである。これに代えて、従来の処理に従うことができ、Ｌ２Ｐテーブルが検閲される時に、修正されたＰＢＡを有したＬＢＡを有するページのみが検閲される。すなわち、事実上「読取専用」であるデータは、Ｌ２ＰテーブルにおけるＬＢＡ／ＰＢＡ関連においてほとんど変更を体験しないことになる。
【０１２２】
ブロックは、再利用ために及び図１０に示すようにリロケートされた有効データ（もしあれば）及び修正済みデータを格納するために準備される。各ブロックに関して、各ページのステータスのビットマップは、ステータスが有効、廃用、フリー（及び一部の場合に、不良箇所がページレベルで管理された場合は使用不能）の１つであるように維持することができる。ブロックが図９の処理に従って選択された後の消去のために準備される時に、ブロックビットマップを走査して新しいデータを書き込むことができるページを決定する１３１０。利用可能なＰＢＡを書込データバッファ内のデータに割り当てる１３４０。有効データが再利用されるブロックから読み取られるので、データに新しいブロックに書き込む前に、新しく割り当てられたＰＢＡを有するデータに有効データをＰＢＡシーケンスで点在させる１３５０。このようにして、新しいブロックのフリーメモリロケーションの全ては、有効データで満たされる。テーブルを管理する他の方法が公知であり、当業者には明らかであろう。
【０１２３】
図１１は、ビットマップをデータの各ブロックに対して維持する処理１４００の例を示している。メモリシステム１００が使用中となった時に、ビットマップは、各ページがフリーであり、消去カウントＮが０であるように初期化される１４１０。データがブロックのページに書き込まれる時に、対応するビットは、有効に設定される。ブロックは、単調に増加するページ順に書き込まれるが、ブロックは、完全に満たす必要はない（例えば、２０１０年６月９日出願の「持続的なガーベージコレクションの方法及びシステム」という名称のＵＳ  １２／７９６，８３６を参照されたく、この特許は、本出願と同一の本出願人に譲渡され、引用によって本明細書に組み込まれている。）ブロックへの書込は、その後に再開することができる。しかし、説明の簡潔さのために、ブロックの各ページはデータが書き込まれると推定する。特定のＰＢＡでのデータが書込のためにアクセスされた時に、修正済みデータに対応するデータは、別のＰＢＡで格納されたことになり、従って、データによって以前占有されていたページは、もう使用されておらず、このステータスを反映するためにビットマップを更新する１４２０。有効ブロックカウントは、その値をブロック管理のために選択処理に使用することができるように更新される。
【０１２４】
本明細書に説明する方法は、メモリシステム１００内で実行される有限量の間接性及びメモリシステム１００内のデータ構造のサイズ及び複雑性が低減されるようにメモリシステム１００を管理する簡素化された手法を表している。更に、ホストコンピュータ５内のＬ２Ｐ機能のロケーションは、より高レベルのファイルシステム又はアプリケーションがメモリシステム１００におけるデータの配置に対して何らかの制御を行う機会を与えることができる。
【０１２５】
メモリシステム１００に格納されたデータの管理における何らかのレベルでは、データが格納されることになる実際の物理ロケーションは、何らかのアルゴリズミック関係に基づいている。これは、複数のＦＬＡＳＨメモリチップの作動内の並列性、ローカルバス上の輻輳の回避、ＲＡＩＤのような誤差訂正技術の利点をより良好に利用することである。そのような作動に関して、ファイル管理のようなシステム１のより高位の作動の必要性は、メモリシステム１００の設計固有のものであり、かつ説明したもののような外部指令によって修正可能であることができない。
【０１２６】
しかし、メモリシステム１００の活動の一部は、データのストレージを例えばファイルシステムの開発者の必要性によって良好に適応させるようにより、高位の指令によって誘導することができる。
【０１２７】
態様において、連続ＬＢＡによって表されるデータが連続ＰＢＡで格納されることが望ましいと考えることができる（ＰＢＡは、Ｌ２Ｐテーブル内のＬＢＡに関連付けられた物理アドレスである）。明らかに、これは、新しく初期化されたメモリシステム１００に書き込まれる時に発生する場合があるが、それは、ＰＢＡは、書き込まれる時にデータに順番に割り当てることができるからである。しかし、何らかの時間の後に、データの個々のページが修正された時に、ＬＢＡの連続ブロックのロケーションは、ＰＢＡの連続ブロックによって表すことはもはやできない。
【０１２８】
格納データの圧縮は、データをＬＢＡの連続範囲から読み取ることにより、かつ他の散在指令なしでデータを一連の書込指令で書き換える（事実上、既存の値と同じ値を有する修正済みデータを書き込む）ことによって行うことができる。ＰＢＡの連続範囲は、消去されたブロックプールからの消去されたページでそのような一連の書込を開始することによって取得することができる。書込指令は、この作動を達成するためにパラメータ化することができる。更に、データは、この並べ替え中に修正されないので、データ自体は、搬送機構５０で転送する必要はない。すなわち、一連のＬＢＡ／ＰＢＡ対をメモリシステム１００内のＰＢＡの連続範囲に転送することができ、得られるＬＢＡ／ＰＢＡ対は、Ｌ２Ｐテーブルを更新するようにホストコンピュータ５に戻すことができる。
【０１２９】
ファイルシステム組織が、データがブロックに格納された状態で、すなわち、ブロック内のページ数に等しく、かつ同じ物理ブロックに該当するＰＢＡを有するページ数を仮定して最適化される場合に、有効であるページの全てを有するブロックを消去されたブロックプールから選択することができ、又はサービスメッセージをファイルシステムに戻すことができる。書込指令は、ＷＲＩＴＥ３として特徴付けることができ、ＷＲＩＴＥ３では、データペイロードは、ＬＢＡ範囲であり、関連のＰＢＡの対応するリストは、Ｌ２Ｐテーブルから決定される。作動が失敗せずに完了した時に、肯定応答メッセージは、データがリロケートされたＰＢＡの対応する新しいリストを含むことができる。
【０１３０】
ＷＲＩＴＥ３指令の有効性は、例えば、第１のＬＢＡ／ＰＢＡ対のメタデータをホストから受信したメタデータ（格納されたＬＢＡ、又はＬＢＡ又はデータのハッシュであると考えられる）と比較することによって決定することができる。
【０１３１】
別の態様において、ＴＲＩＭ（ウインドウズ及びＴ１３委員会によって意味されるような）、ｕｎｍａｐ（ＳＣＳＩ  Ｔ１０委員会によって説明されているような）、又は将来は使用することができる類似の影響を有する指令のような脱アロケーション指令を使用して、使用ファイルシステムによってもはや必要とすることができない以前に格納された格納データを有するページを指定することができる。しかし、従来のＴＲＩＭ指令は「ヒント」と見なされ、かつここで使用されたように受信側デバイスによって作用する必要はないが、そのような指令は、以下に説明されるアクションを引き起こすように解釈することができる。
【０１３２】
使用アプリケーションによってもはや参照されないページに格納されたデータは、もはや価値がなく、かつブロックがガーベージコレクション又はウェアレベリング動作によって再利用される時にリロケーションなしで消去することができる。ホストコンピュータ５では、ＬＢＡへのＴＲＩＭ指令は、Ｌ２Ｐテーブルにおける対応するＰＢＡを調べるために使用される。廃棄されたＬＢＡとＰＢＡ間の関連付けは、メモリシステム１００に送られるようにＴＲＩＭ指令を策定するのに使用される。これが行われている時に、廃棄されたＰＢＡは、Ｌ２Ｐテーブルから削除される（又は、廃用とマーク付けされる）。ＬＢＡへのデータのその後の書込は、ＷＲＩＴＥ１で行われることになるが、それは、Ｌ２Ｐテーブルが、以前に割り当てられたＰＢＡを有していないからである。ＬＢＡへの読取指令は、従って、段階８９０でエラーとして本明細書に説明するものになる。この応答はまた、特定のシステム設計及びプロトコルに基づいて、一定のデータパターン（全て「０」又は全て「１」）とすることができる。従って、割り当てられたＰＢＡを有していないＬＢＡへの読取指令は、結果的には、メモリシステムとの相互作用は発生することができない。
【０１３３】
ＴＲＩＭ指令がメモリシステム１００に送られた時に、廃棄されたＬＢＡに対応するＰＢＡは、ビットマップを各ブロック１４００に対して維持するのに使用される。ここでは、ページは、廃用としてマーク付けすることができ、かつメモリにおいてもはや必要とされないと考えられる。これを行うことにより、使用アプリケーションによってもはや必要さないと考えられるデータを有するページは、データを別のページにリロケートする必要性がなくガーベージコレクション又はウェアレベリング動作中に廃棄することができる。それによって通常業務作動に関連付けられた書込増幅が低減する。
【０１３４】
論理アドレス範囲で作動するＴ１３「ＴＲＩＭ」、又はＴ１０「ｕｎｍａｐ」指令とは異なり、本明細書に説明するｕｎｍａｐは、ＴＲＩＭｅｄ  ＬＢＡに関連付けられた物理アドレス範囲で作動させることができる。
【０１３５】
別の態様において、複数のメモリ回路２００又は複数のメモリモジュール１５０は、２０１２年５月２３日に付与された「メモリ管理システム及び方法」という名称のＵＳ  ８，２００，８８７に説明されているように、消去隠し又はＲＡＩＤのうちの少なくとも一方をもたらすように作動することができ、この特許は、本出願人所有であり、かつ引用によって本明細書に組み込まれている。複数の異なるメモリ回路又はメモリモジュールは、システムの帯域幅を改善し、待ち時間を低減し、冗長性をもたらすようにいくつかのデータバス、プロセッサ、及びメモリ上でデータ及び指令を散在するように作動することができる。
【０１３６】
態様において、複数のメモリ回路２００は、ＲＡＩＤ構成で作動させることができる。例えば、５つのメモリ回路２００がメモリモジュールにある簡単な構成では、データは、データの４つのストライプ及び１つのストライプのパリティデータとして格納される。
【０１３７】
最初に、簡潔さのために、エラー処理を無視することにする。メモリ回路２００の各々は、数Ｎ個のメモリブロックを有することができ、そのうちの予め決められた一部分ｋが、ユーザに割り当てられる。各ブロックは、いくつかのメモリページＭを有する。各メモリ回路に関して、図３に示すようなブロックアロケーションテーブルがある場合がある。最初に、ブロックアロケーションテーブルの全ては同一であり、メモリは、全てがフリーブロック又は消去されたブロックを有する。従って、１つブロックアロケーションテーブルのみが、Ｎページを有するメモリブロックの論理表現をメモリブロックの物理ロケーションに関連させるのに必要であろう。ここでもまた、簡潔さのために、メモリブロックの論理表現及びメモリブロックの物理表現が１対１に関係があると見なすことができる。
【０１３８】
ＷＲＩＴＥ１要求に伴うデータがメモリモジュール１５０のコントローラ１６０によって受信された時に、例えば、データの一部分は、別々のメモリ回路２００内の４ページの各々に割り当てられ、４枚のデータページ上で計算されるパリティは、計算されて第５のページに格納される。２つのデータブロック及び１つのパリティブロックから多くのデータブロック及び１つ又はそれよりも多くのパリティブロックまで、データ及びデータのパリティを格納するブロックの他の組合せを使用することができる。構成の選択は、異なるユーザの要求を満たすことができるように構成可能とすることができる。一般的に、ＲＡＩＤ処理はメモリシステム内のより低いレベル処理であるので、単一ＬＢＡは、複数のＰＢＡにマップすることができ、複数のＰＢＡにおいて、データ及びパリティデータは格納され、ユーザに面するＬ２Ｐテーブルは、マッピングユーザに露出する必要はない。
【０１３９】
各ページは、別々のメモリ回路２００に書き込むことができ、上述のシステム及び方法に従って５つのメモリ回路２００の各々内の順次メモリロケーションがデータに割り当てられる。このインスタンスでは、５つのメモリ回路のメモリ回路の各々の第１のページが選択される。これに代えて、ユーザデータの各ページをセクターに分割して、ＲＡＩＤ群のストライプに関連付けられたメモリブロックの全てに書き込むことができる。
【０１４０】
ここでもまた、説明の簡潔さのために、ＷＲＩＴＥ１指令によって書き込まれるデータの論理ブロックのサイズは８ＫＢであり、メモリ物理ブロックを構成するＭページの各々のサイズは２ＫＢであると仮定する。従って、データは、４つのメモリ回路２００の各々の第１のブロックの第１のページに２ＫＢのデータが書き込まれ、第５のメモリ回路の第１のブロックがデータページ上にパリティデータコンピュータで書き込まれるように割り当てることができる。
【０１４１】
ＷＲＩＴＥ１指令は、実行された時に、データが格納された「物理アドレス」を戻す。この例では、この物理アドレスは、メモリ回路の第１のブロック内の第１の物理ブロックアドレスになる。この関係はメモリ回路の全てに対して同じであるので、２ＫＢページ群の第１のページは、アドレス物理ブロックアドレスモジュール８ＫＢを代表すると見なすことができる。
【０１４２】
書込処理は、必要に応じて続行することができ、ホストコンピュータ５内のＬＢＡ／ＰＢＡテーブルが構成される。エラー条件がない限り、５つのメモリ回路２００内の５つのページとのＬＢＡの関連付けは、同じテーブルによって表されるが、それは、ＬＢＡ空間の第１の２ＫＢの増分に対して取られるあらゆるアクションは、ＬＢＡ空間の２ＫＢの増分の残りに対して取られるアクションと同じであるからである。２ＫＢのパリティデータは、ユーザに直接に提供することができないが、消去隠し及びＲＡＩＤのためにシステムによって使用される。
【０１４３】
当業者は、ＷＲＩＴＥ２指令が、メモリ回路２００内の対応する物理ロケーションがガーベージコレクション処理において再利用される空間を埋めるために書き込まれるように類似した処理を有することを認識するであろう。図３内のテーブルと類似のテーブルは、必要とする場合がある簡単な間接性を処理することになる。
【０１４４】
当業者は、上述したように、ガーベージコレクションが実行される時に、メモリ回路内の特定のページが廃用又はそうでなければ利用不能であると見なされる時に、メモリ回路の群の他の群内の対応するページは同様に処理されることになることを認識するであろう。これは制限ではないが、図３のテーブルの機能は、ブロックレベルの間接性及び一部の場合にページレベルの間接性を管理することができるように変更することができる。
【０１４５】
書込作動が失敗するか、又は読取エラーがページ又はブロックが使えなくなるレベルまで増加する場合が生じる。例えば、５つのメモリ回路のメモリ回路のページ１つへ書込作動は失敗する。しかし、データはページのうちの４枚のページには失敗せずに書き込まれる。ＷＲＩＴＥ指令に対する応答は、生成されてホスト５に送られている場合がある。データは、回復可能であり、それは、全てのデータが失敗せずに書き込まれたか、又は失敗せずに書き込まれたデータが、全くというわけではないが、パリティデータは失敗せずに書き込まれたからである。これに代えて、データは、依然として揮発性メモリ１７０において又は他の位置でキャッシュに入れることができる。
【０１４６】
データのブロック全体は、予備の又はそうでなければフリーのブロックにリロケートすることができ、物理ブロックの論理表現は、データがリロケートされた場合に同じＰＢＡがこの時点で物理アドレスを指示するように更新することができる。これは、ＬＢＡ／ＰＢＡ関連付けが有効なままであるのでホスト内のＬ２Ｐテーブルを更新する必要がないことを意味する。リロケーションは、図３Ａ、図３Ｂに示すブロック間接性テーブルによって管理することができる。
【０１４７】
メモリモジュールがこのように作動される時に、消去隠し技術は、データブロックの格納先である５つのチップのうちの１つのみがあらゆるある時に確実に書込作動又は消去を実行に適応させることにより、メモリモジュールレベルで使用することができる。従って、読取作動は、例えば、同じチップ平面上に位置する論理ブロックアドレス（ＬＢＡ）へのそれぞれ同時の書込又は消去作動により遅延なく実行することができる。
【０１４８】
この手法はまた、システムにおけるより高いレベルで使用することができ、このレベルでは、メモリコントローラ１３０は、書込作動において、ＲＡＩＤ又は消去隠し構成をメモリモジュールレベルを使用して達成するように複数のメモリモジュール１５０へのデータの割り当てを実行するのに使用することができる。機能性の一部又は全部は、メモリモジュール内で同じか又は類似の目的に対して機能性の一部又は全部を実行中とすることができるメモリモジュール１５０上で重ね合わせることができる。
【０１４９】
メモリコントローラ１５０のレベルでは、異なる論理的手法は、処理及びバス負荷を更に均一化するように、例えば、データをメモリモジュールにわたって大雑把に分散化するように使用することができる。これを行うシステム及び方法は、２０１０年１０月８日出願の「複数の分散化を伴うメモリシステム」という名称のＵＳ  １２２／９０１，２２４に説明されており、この特許は、本出願人所有であり、かつ引用によって本明細書に組み込まれている。いずれのレベルでも、書込作動は、完全な２ＫＢのページを形成するように組み合わせることができ、例えば、８ＫＢ未満の粒度を有するアドレスは、８ＫＢのページを読み取って、オフセットアドレスによって要求されたデータを抽出することによって提供される。メタデータは、上述したように、正しいデータが確実に読み取られるようにするのに使用することができる。
【０１５０】
この説明では、データはテーブルに格納されると説明することが多い。しかし、この用語は、データをシステム設計に適切である連結リスト又は他のデータ構造に格納又は管理することができるので、比喩的な感覚で理解しなければならず、それは、ＬＢＡ空間は、まばらに割り当てることができ、又は論理ユニット番号（ＬＵＮ）及びＬＢＡの組合せによって表すことができるなどであるからである。
【０１５１】
ＳＳＤが、固有の論理−物理マッピングを維持し、より高位の管理では、ガーベージコレクションの一部又は全部を実行するために論理アドレス空間を管理する場合に、より高レベルの機能は、特定の物理アドレスを認識する必要がない場合があるが、どの論理アドレスが同じＦＬＡＳＨ消去ブロック内にあるかの記録を維持することができる。これは、例えば、書込指令に応答してブロックアドレスを戻すことによって達成することができるが、古いか又は新しいブロックにおいて何時書込が最後又は最初のものであったかを示すことによっても同じく達成することができる。
【０１５２】
より高レベルの管理機能はまた、ＳＳＤに新しいブロックに書き込み始めるように指示する指令又は書込指令に対するオプションを有することにより、アドレスが同じブロックにあることを保証するように構成することができる。
【０１５３】
ＳＳＤは、より高レベルの管理機能が、ある一定のデータ構造又はアルゴリズムパラメータに整合することを可能にするように、ブロックを満たすのに必要とする場合がある書込の回数を質問するか又はこの回数を設定する指令を受諾することができる。
【０１５４】
並行して書き込まれるブロックの数は、ＳＳＤ又はメモリの性能特性、並びに群として移動するアドレスの群のサイズ、又は群としてアドレスを移動しないのに必要とする場合がある関連の追跡に影響を与える。ＳＳＤは、このパラメータを設定又は質問することを可能にすることができる。
【０１５５】
並行して書き込まれるブロックの数は、ＳＳＤの性能特性、並びに群として移動するアドレスの群のサイズ、又は群としてアドレスを移動しないのに必要とする場合がある関連の追跡に影響を与える。ＳＳＤは、このパラメータを設定又は質問することを可能にすることができる。
【０１５６】
ＳＳＤは、単一コントローラから来るがごとく全ての入来の書込を受諾することができるが、２つ又はそれよりも多い別々のより高レベルの管理機能が、どの論理アドレスがガーベージコレクションを管理するために同じブロック内にあるかを追跡しながらＳＳＤを同時に使用するために、ＳＳＤは、ブロックの複数のプール、又は複数の書込ストリーム、又は異なる制御関数からの書込を異なるＦＬＡＳＨメモリブロックに書き込むことを可能にする他の手段を作動させることができる。これらのプール／ストリームの各々又は異なる制御関数を追跡する他の手段は、固有の設定パラメータ及び制御を有することができる。態様において、異なるブロックプールは、共通の消去済みブロックプールを共有することができる。
【０１５７】
別の態様において、上述のアーキテクチャとの指令インタフェースは、望ましいアプリケーション又は機能性に応じて１つ又はそれよりも多くのレベルで確立することができる。インタフェースは、アプリケーションプログラミングインタフェース（ＡＰＩ）又はＳＣＳＩのような業界標準プロトコルの拡張又は修正又は適応などの形態とすることができる。一部の実施形態において、ユーザは、物理メモリロケーションデータへのアクセスを許可又は拒否することができる。
【０１５８】
本明細書に開示する方法を特定の順番で実行される特定の段階を参照して説明かつ図示したが、これらの段階は、本発明の教示から逸脱することなく同等の方法を形成するために組み合わせるか、再分割するか、又は並べ替えることができることは理解されるであろう。従って、明示的に説明されない限り、段階の順序及びグループ分けは、本発明を制限しない。
【０１５９】
主張する本発明のある一定の態様、利点、及び新しい特徴を本明細書に説明した。特定の実施形態を実施する際に全ての利点を達成することができるというわけではないことは当業者によって理解されるであろう。主張する本発明は、教示又は示唆したと考えられる他の利点を必ずしも達成することなく、本明細書で教示する利点又は利点の群を達成又は最適化するように実施又は具現化することができる。
【０１６０】
従って、以上の詳細説明は、制限ではなく例示と見なされ、かつ本発明の精神及び範囲を定めるように意図されるものが全ての均等物を含む以下の特許請求の範囲であると理解されるものとすることを意図している。
【符号の説明】
【０１６１】
ＬＢＡ  論理ブロックアドレス
ＰＢＡ  物理ブロックアドレス
ＳＣＳＩ  業界規格
【図１】
2016506585.tif 000003
【図２】
2016506585.tif 000004
【図３Ａ】
2016506585.tif 000005
【図３Ｂ】
2016506585.tif 000006
【図４】
2016506585.tif 000007
【図５】
2016506585.tif 000008
【図６】
2016506585.tif 000009
【図７】
2016506585.tif 000010
【図８】
2016506585.tif 000011
【図９】
2016506585.tif 000012
【図１０】
2016506585.tif 000013
【図１１】
2016506585.tif 000014
【国際調査報告】
2016506585.tif 000015
2016506585.tif 000016
2016506585.tif 000017
2016506585.tif 000018
2016506585.tif 000019
2016506585.tif 000020
2016506585.tif 000021