(57)【要約】例示的な装置が、不揮発性メモリ（ＮＶＭ）デバイスに結合されたコントローラを備える。このコントローラは、論理ブロックアドレス（ＬＢＡ）をＮＶＭデバイスの第１の論理対物理（Ｌ２Ｐ）データ構造内に記憶させ、物理ブロックアドレス（ＰＢＡ）をＮＶＭデバイスの第２のＬ２Ｐデータ構造内に記憶させるように構成され得る。第１のＬ２Ｐデータ構造と第２のＬ２Ｐデータ構造とは、そのＬ２Ｐデータ構造と関連付けられた同じサイズを有し得る。
2021526260.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリ（ＮＶＭ）デバイスに結合されたコントローラであって、前記コントローラは、
前記ＮＶＭデバイスの第１の論理対物理（Ｌ２Ｐ）データ構造内に論理ブロックアドレス（ＬＢＡ）を記憶させることと、
前記ＮＶＭデバイスの第２のＬ２Ｐデータ構造内に物理ブロックアドレス（ＰＢＡ）を記憶させることであって、前記第１のＬ２Ｐデータ構造と前記第２のＬ２Ｐデータ構造とが、そのＬ２Ｐデータ構造と関連付けられた同じサイズを有する、前記ＰＢＡを記憶させることと
を行うように構成されている、前記コントローラを備える、装置。
【請求項２】
前記コントローラは更に、第１のハッシュ関数の実行に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造へ書き込むように構成されている、請求項１に記載の装置。
【請求項３】
前記コントローラは更に、
第１のハッシュ関数の実行に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の第１の位置へ書き込むことと、
前記第１のハッシュ関数の実行が衝突を発生させるとの判定に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の第２の位置へ書き込むことと
を行うように構成されている、請求項１に記載の装置。
【請求項４】
前記コントローラは更に、前記第１のＬ２Ｐデータ構造の前記第１の位置が、前記第１の位置に書き込まれる前記ＬＢＡとは異なるＬＢＡを含むとの判定に少なくとも部分的に基づいて、前記第１のハッシュ関数の実行が衝突を発生させるという判定をもたらすように構成されている、請求項３に記載の装置。
【請求項５】
前記コントローラは更に、第２のハッシュ関数の実行に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の前記第２の位置へ書き込むように構成されている、請求項３に記載の装置。
【請求項６】
前記コントローラは更に、
第１のハッシュ関数の実行に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の第１の位置から読み出すことと、
前記第１のハッシュ関数の実行が衝突を発生させるとの判定に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の第２の位置から読み出すことであって、前記第１のＬ２Ｐデータ構造の前記第２の位置が、第２のハッシュ関数の実行に少なくとも部分的に基づいて判定される、前記ＬＢＡを前記第２の位置から読み出すことと
を行うように構成されている、請求項１〜３のいずれか１項に記載の装置。
【請求項７】
前記第１のＬ２Ｐデータ構造の特定の位置が、前記第２のＬ２Ｐデータ構造の対応する特定の位置に対応する、請求項１〜３のいずれか１項に記載の装置。
【請求項８】
前記コントローラは更に、前記第１のＬ２Ｐデータ構造を半順序とするように構成されている、請求項１〜３のいずれか１項に記載の装置。
【請求項９】
第１のメモリ部分と第２のメモリ部分とを含む不揮発性メモリ（ＮＶＭ）デバイスと、
前記ＮＶＭデバイスに結合されたコントローラであって、前記コントローラは、
第１のハッシュ関数を実行させて、論理ブロックアドレス（ＬＢＡ）が格納される前記第１のメモリ部分における第１の論理対物理（Ｌ２Ｐ）アドレスデータ構造内の第１の場所を判定することと、
前記第１の場所が第２のＬＢＡを含むとの判定を行うことと、
第２のハッシュ関数を実行させて、前記ＬＢＡが格納される前記第１のメモリ部分における前記第１のＬ２Ｐアドレスデータ構造内の第２の場所を判定することと
を行うように構成されている、前記コントローラと
を備える、装置。
【請求項１０】
前記コントローラは更に、前記第１のＬＢＡに対応する物理ブロックアドレスが、前記第２のメモリ部分における第２のＬ２Ｐデータ構造内に格納されるように構成されている、請求項９に記載の装置。
【請求項１１】
前記第１のハッシュ関数が、ｈ（ｌ）＝６ｌ（ｍｏｄ  ｘ）で与えられる、請求項９〜１０のいずれか１項に記載の装置であって、ｌはＬＢＡであり、前記第２のハッシュ関数は、ｓ（ｌ）＝３（ｈ（ｌ）＋１）（ｍｏｄ  ｘ）で与えられ、式中のｘはゼロ以外の整数である、前記装置。
【請求項１２】
2021526260.tif 000012
であり、
ｓ（ｌ）がｍに対して互いに素であり、ｓ（ｌ）がｍに対して互いに素であることが、ｓ（ｌ）及びｍの両方を割り切る１よりも大きな整数を持たないｓ（ｌ）及びｍを構成する、請求項９〜１０のいずれか１項に記載の装置。
【請求項１３】
不揮発性メモリ（ＮＶＭ）デバイスと、
フラッシュメモリデバイスと、
前記ＮＶＭデバイス及び前記フラッシュメモリデバイスに結合されたコントローラであって、前記コントローラは、
第１のハッシュ関数を実行させて、論理ブロックアドレス（ＬＢＡ）が格納される前記ＮＶＭデバイスにおける第１のデータ構造内の第１の場所を判定することと、
前記ＬＢＡが前記第１のデータ構造内の前記第１の場所に格納されているとの前記判定に応答して、前記ＮＶＭデバイスにおける第２のデータ構造内の対応する第１の場所に物理ブロックアドレスを設定することと、
第２のハッシュ関数を実行させて、前記ＬＢＡが格納される前記第１のデータ構造内の第２の場所を判定することと、
前記ＬＢＡが前記第１のデータ構造内の前記第２の場所に格納されているとの前記判定に応答して、前記ＮＶＭデバイスにおける前記第２のデータ構造内の対応する第２の場所に前記物理ブロックアドレスを設定することと
を行うように構成されている、前記コントローラと
を備える、装置。
【請求項１４】
前記第２のデータ構造内に格納されている物理ブロックアドレスの数量が、前記第１のデータ構造内に格納されているＬＢＡの数量よりも多い、請求項１３に記載の装置。
【請求項１５】
前記第１のデータ構造は第１のａ×ｂテーブルを含み、ここでａ及びｂは非ゼロ整数であり、前記第２のデータ構造は第２のａ×ｂテーブルを含む、請求項１３〜１４のいずれか１項に記載の装置。
【請求項１６】
前記コントローラは、前記第１のハッシュ関数及び前記第２のハッシュ関数を実行するための処理の一部として、前記第１のハッシュ関数のモジュロと、前記第２のハッシュ関数のモジュロとを判定するように構成されている、請求項１３〜１４のいずれか１項に記載の装置。
【請求項１７】
第１の論理ブロックアドレス（ＬＢＡ）を書き込むために、不揮発性メモリ（ＮＶＭ）デバイスに格納された第１の論理対物理（Ｌ２Ｐ）データ構造内の第１の場所を判定することと、
前記第１の場所が第２のＬＢＡを含むことを判定することと、
前記第１の場所が前記第２のＬＢＡを含むとの前記判定に応答して、前記第１のＬ２Ｐデータ構造内の第２の場所に前記第１のＬＢＡを書き込むことと、
前記ＮＶＭデバイスに格納された第２のＬ２Ｐデータ構造内の場所に、前記第１のＬＢＡに対応する物理ブロックアドレス（ＰＢＡ）を書き込むことであって、前記第１のＬ２Ｐデータ構造内の前記第２の場所が、前記第２のＬ２Ｐデータ構造内の前記場所に対応する、前記ＰＢＡを書き込むことと
を含む、方法。
【請求項１８】
前記第１のＬ２Ｐデータ構造と前記第２のＬ２Ｐデータ構造とが、そのＬ２Ｐデータ構造と関連付けられた同じ数量の行及び同じ数量の列を有する、請求項１７に記載の方法。
【請求項１９】
前記第１のＬ２Ｐデータ構造内の前記第１の場所が、前記第１のＬＢＡに対応する第１のハッシュ関数を実行することによって判定され、前記第１のＬ２Ｐデータ構造内の前記第２の場所が、前記第１のＬＢＡに対応する第２のハッシュ関数を実行して、前記第１のＬ２Ｐデータ構造の前記第１の場所を、前記第１のＬ２Ｐデータ構造の前記第２の場所にインクリメントすることによって判定される、請求項１７〜１８のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、半導体メモリ及び方法に関し、より詳細には、論理対物理データ構造に関連する装置及び方法に関する。
【背景技術】
【０００２】
メモリデバイスは典型的には、コンピューティングシステム内で、内蔵の、半導体の、集積回路として設けられる。揮発性メモリ及び不揮発性メモリを含む多くの異なるタイプのメモリが存在する。揮発性メモリは、データ（例えば、ホストデータ、エラーデータなど）を保持するために電力を必要とし得る。揮発性メモリには、特に、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、及びサイリスタランダムアクセスメモリ（ＴＲＡＭ）などが含まれる。不揮発性メモリは、非通電時に、格納されたデータを保持することで、永続的なデータを提供することができ、不揮発性メモリには、ＮＡＮＤフラッシュメモリ、及びＮＯＲフラッシュメモリなどが含まれ得る。
【０００３】
データは、論理ブロックアドレス（ＬＢＡ）及び物理ブロックアドレス（ＰＢＡ）に従って格納され得る。ＬＢＡとＰＢＡとの間のマッピングは、論理対物理（Ｌ２Ｐ）マッピングと呼ばれることがある。ＬＢＡとＰＢＡとの間のマッピングは、ツリー構造内に格納され得る。Ｌ２Ｐデータを格納するためのツリー構造には、ＰレベルのＬ２Ｐテーブルが含まれ得る。ただし、Ｐはゼロ以外の整数である。一部のアプローチによる簡単な例には、２レベルのＬ２Ｐテーブルが含まれ得る。第１のレベルのテーブルは、「セグメント」と称し得る第２のレベルのテーブルのアドレスを含み得る。一部のアプローチでは、各セグメントは、小範囲の連続したＬＢＡ（例えば、１０２４のＬＢＡ）に対するＬ２Ｐテーブルを含み得る。
【図面の簡単な説明】
【０００４】
【図１】本開示のいくつかの実施形態によるメモリシステムを備えたコンピューティングシステムの形態の装置の機能ブロック図である。
【図２】本開示のいくつかの実施形態によるメモリシステムの形態の装置のブロック図である。
【図３Ａ】本開示のいくつかの実施形態によるフラッシュデータ構造のブロック図である。
【図３Ｂ】本開示のいくつかの実施形態による例示的な論理対物理データ構造のブロック図である。
【図３Ｃ】本開示のいくつかの実施形態による例示的な論理対物理データ構造の別のブロック図である。
【図４】本開示のいくつかの実施形態による論理対物理データ構造のための例示的な流れ図を示す。
【発明を実施するための形態】
【０００５】
本開示は、論理対物理データ構造に関連する装置及び方法を含む。例示的な装置が、不揮発性メモリ（ＮＶＭ）デバイスに結合されたコントローラを備える。このコントローラは、論理ブロックアドレス（ＬＢＡ）をＮＶＭデバイスの第１の論理対物理（Ｌ２Ｐ）データ構造内に記憶させ、物理ブロックアドレス（ＰＢＡ）をＮＶＭデバイスの第２のＬ２Ｐデータ構造内に記憶させるように構成され得る。第１のＬ２Ｐデータ構造と第２のＬ２Ｐデータ構造とは、そのＬ２Ｐデータ構造と関連付けられた同じサイズを有し得る。
【０００６】
パーソナルコンピュータ、ラップトップ、タブレット、ファブレット、スマートフォン、モノのインターネット（ＩｏＴ）対応デバイスなどのコンピューティングシステムは、コンピューティングシステムに関連するデータ及び／または命令を格納するために、もう１つのメモリデバイス（例えば、メモリリソース）を含み得る。本明細書で使用するとき、「ＩｏＴ対応デバイス」には、物理的デバイス、乗り物、家庭用電気製品、及びその他のデバイスであって、電子機器、ソフトウェア、センサ、アクチュエータ、及び／または上記の種類の物が接続してデータをやり取りすることを可能にするネットワーク接続性が組み込まれた物理的デバイス、乗り物、家庭用電気製品、及びその他のデバイスが含まれる。ＩｏＴ対応デバイスの例には、いくつかあるサイバー物理システムのなかでも特に、ウェアラブルテクノロジ、スマートホームデバイス、インテリジェントショッピングシステム、及び監視デバイスが含まれる。更に、コンピューティングシステムは、オペレーティングシステムなどのシステムソフトウェアを実行して、コンピューティングシステムで動作するアプリケーションに共通のサービスを提供するための１つ以上の処理リソースを含み得る。オペレーティングシステムの例には、ＬＩＮＵＸ（登録商標）、ＵＮＩＸ（登録商標）、ＷＩＮＤＯＷＳ（登録商標）などが含まれる。
【０００７】
動作中、コンピューティングシステムは、データ（例えば、コマンド、ファームウェア、ソフトウェア、コンピュータコード、メタコード、フレームワークファイルなど）を１つ以上のメモリデバイスに格納することができる。そのようなメモリデバイスは、揮発性または不揮発性（例えば、持続性）であり得る。不揮発性メモリ（ＮＶＭ）デバイスの例には、ＮＡＮＤフラッシュ、ＮＯＲフラッシュなどの持続性フラッシュメモリリソース、及び新興メモリデバイスが含まれ得る。新興メモリ（ＥＭ）テクノロジには、相変化メモリ（ＰＣＭ）、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）、抵抗変化型メモリ（ＲｅＲＡＭ）、強誘電性ＲＡＭ（ＦｅＲＡＭ）、及び／または３Ｄ  ＸＰｏｉｎｔメモリなどが含まれ得、これらは他のメモリテクノロジよりもメモリ関連の待ち時間を改善する可能性がある。揮発性メモリデバイスには、記憶された情報を保持するために電力を必要とするメモリデバイスが含まれ得る。揮発性メモリデバイスの例には、特に、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）及びスタティックランダムアクセスメモリ（ＳＲＡＭ）などが含まれる。
【０００８】
メモリデバイス（複数可）によって記憶されたデータは、メモリデバイス（複数可）の物理的な場所に存在し得る。データが格納された物理的な場所（例えば、物理ブロックアドレス）は、論理ブロックアドレス（ＬＢＡ）にマッピングされ得る。論理ブロックアドレスは、データ構造内に格納され得、データが格納された物理ブロックアドレス（ＰＢＡ）にアクセスするために呼び出され得る。例えば、データにアクセスする（例えば、データを読み出す、書き込む、消去するなど）ために、ＬＢＡが呼び出され得、コンピューティングシステムはＬＢＡからＰＢＡに導かれる。本明細書で使用するとき、「データ構造」は、データを編成する、及び／またはデータを格納するための特殊化された形式のことをいい、行及び列に編成される場合があり、または行及び列に編成されない場合がある。データ構造の例には、配列、ファイル、レコード、テーブル、ツリー、リンクリスト、ハッシュテーブルなどが含まれる。
【０００９】
論理ブロックアドレス指定は、ホストがデータの論理セクタを識別するために使用し得るスキームである。例えば、各論理セクタは、一意の論理ブロックアドレス（ＬＢＡ）に対応し得る。更に、ＬＢＡはまた、物理アドレスに対応し得る。データの論理セクタは、いくらかのバイト（例えば、２５６バイト、５１２バイト、または１，０２４バイト）のデータであり得る。しかし、実施形態は、これらの例に限定されるものではない。
【００１０】
ＬＢＡとＰＢＡとの間のマッピングは、論理対物理（Ｌ２Ｐ）データ構造（例えば、Ｌ２Ｐアドレスデータ構造）内に格納され得る。一部のアプローチでは、Ｌ２Ｐデータ構造はツリー構造に配列される。一部のアプローチによる、Ｌ２Ｐデータ構造を格納するための例示的なツリー構造には、ＰレベルのＬ２Ｐテーブルが含まれ得る。ただし、Ｐはゼロ以外の整数である。一部のアプローチによる簡単な例には、２レベルのＬ２Ｐテーブルが含まれ得る。第１のレベルのテーブルは、「セグメント」と称し得る第２のレベルのテーブルのアドレスを含み得る。一部のアプローチでは、各セグメントは、小範囲の連続したＬＢＡ（例えば、１０２４のＬＢＡ）に対するＬ２Ｐテーブルを含み得る。
【００１１】
一部のアプローチでは、上記のツリー構造のＬ２Ｐデータ構造を利用して、コンピューティングデバイスの稼働時に所与のＬＢＡの検索を単純化する。更に、一部のアプローチでは、上記のツリー構造のＬ２Ｐデータ構造を利用して、第１のレベルのテーブルに関連するサイズを最小化する。例えば、第１のレベルのテーブルに関連するサイズが特定のサイズ閾値内に保たれる場合、第１のレベルのテーブルを、コンピューティングシステムのストレージコントローラのＳＲＡＭ及び／またはＤＲＡＭ部分に格納することが可能であり得る。
【００１２】
ただし、ツリー構造のＬ２Ｐデータ構造が使用されるアプローチは、様々な欠点を抱えている可能性がある。例えば、ツリー構造のＬ２Ｐデータ構造を使用するアプローチでは、メモリデバイスの記憶密度が高くなるときに、ツリー内の付加的レベルを利用する。例えば、メモリデバイスの記憶密度が増加するにつれて、ツリー構造のＬ２Ｐデータ構造のレベル数もそれに応じて増加し得る。一部のアプローチでは、これにより、Ｌ２Ｐのルックアップ及び／または変換における遅延が長くなる可能性がある。更に、ツリーのレベル数が増えるにつれて、管理の複雑さ（例えば、メモリ管理スキームの複雑さ）も増加する。遅延時間の増加及び／または管理の複雑さの増加は、ツリーの各レベルにわたって伝播したＬ２Ｐテーブルの変更に対応し得る。
【００１３】
対照的に、本明細書の実施形態は、不揮発性メモリデバイス（例えば、新興ＮＶＭデバイス）及びフラッシュメモリデバイス（例えば、ＮＡＮＤメモリデバイス）がメモリデバイスの一部として提供されるアプリケーションで使用され得るＬ２Ｐテーブル構造を説明する。一部の実施形態では、本明細書に記載のＬ２Ｐデータ構造は、Ｌ２Ｐマッピングテーブルを含み得る。第１のＬ２Ｐマッピングテーブルは論理ブロックアドレスを含み得、第２のＬ２Ｐマッピングテーブルは物理ブロックアドレスを含み得る。一部の実施形態では、第１のＬ２Ｐマッピングテーブル（例えば、論理ブロックアドレスを含むＬ２Ｐマッピングテーブル）と第２のＬ２Ｐマッピングテーブル（例えば、物理ブロックアドレスを含むＬ２Ｐマッピングテーブル）とは、同じサイズであり得る（例えば、それらのテーブルは同じ数の行と同じ数の列とを含み得る）。
【００１４】
一部の実施形態では、第１のＬ２Ｐマッピングテーブルは、複数のハッシュ関数（例えば、２つのハッシュ関数）を用いてアクセスされ得る。次に、ハッシュ関数を用いる第１のＬ２Ｐマッピングテーブルにあるインデックスを使用して、第２のＬ２Ｐマッピングテーブル内の対応する物理ブロックアドレスの物理的な場所を特定し得る。一部の実施形態では、第２のＬ２Ｐマッピングテーブル内の対応する物理ブロックアドレスの物理的な場所を特定した後で、物理ブロックアドレスを、第２のＬ２Ｐマッピングテーブル内のその物理的場所に書き込むか、またはそこから読み出し得る。
【００１５】
本開示の以下の詳細な説明では、本明細書の一部を形成するとともに、本開示の１つ以上の実施形態をどのように実施し得るかを例示として示す添付の図面を参照する。それらの実施形態は、当業者が本開示の実施形態を実施することを可能にするよう十分に詳細に説明され、本開示の範囲から逸脱することなく、他の実施形態が利用されてもよいこと、並びに処理変更、電気的変更、及び／または構造的変更が行われてもよいことが理解されよう。本明細書で使用されるように、特に、図面における参照符号に関する「Ｎ」などの指定子は、そのように指定されたいくつかの特定の特徴が含まれてもよいことを示す。本明細書で使用されるように、「いくつかの（ａ  ｎｕｍｂｅｒ  ｏｆ）」特定の事項は、そのような事項のうちの１つ以上を指す（例えば、いくつかのメモリアレイは、１つ以上のメモリアレイを指すことができる）。「複数の（ｐｌｕｒａｌｉｔｙ  ｏｆ）」は、１つよりも多いそのような事項を指すことを意図している。
【００１６】
本明細書における図は、最初の１桁または複数桁が図面の図番に対応し、残りの桁が図面における要素または構成要素を識別する番号付け慣習に従う。異なる図の間の類似した要素または構成要素は、同じような数字を用いて識別され得る。例えば、図１では要素「１０」を１１０が参照し得、図２では類似の要素が要素「２１０」として参照され得る。明らかなように、本明細書の様々な実施形態に示す要素は、本開示のいくつかの追加の実施形態を提供するように、追加され、交換され、及び／または削除されてもよい。更に、明らかなように、図に提供される要素の比率及び相対的な大きさは、本発明の特定の実施形態を示すことを意図しており、限定的な意味で取られるべきではない。
【００１７】
図１は、本開示のいくつかの実施形態によるメモリシステム１０４を備えたコンピューティングシステム１００の形態の装置の機能ブロック図である。本明細書で使用するとき、「装置」とは、例えば、回路もしくは回路構成、１つもしくは複数のダイ、１つもしくは複数のモジュール、１つもしくは複数のデバイス、または１つもしくは複数のシステムなど、様々な構造のいずれかまたは構造の組み合わせを指し得るが、これらに限定されない。
【００１８】
メモリシステム１０４は、例えば、ソリッドステートドライブ（ＳＳＤ）であってもよい。図１に示される実施形態では、メモリシステム１０４は、ホストインタフェース１０６と、メモリ（例えば、いくつかのメモリデバイス１１０−１、１１０−２、・・・、１１０−Ｎ）（例えば、ソリッドステートメモリデバイス）と、物理的なホストインタフェース１０６及びメモリデバイス１１０−１、１１０−２、・・・、１１０−Ｎに結合されたコントローラ１０８（例えば、ＳＳＤコントローラ）とを含む。
【００１９】
メモリデバイス１１０−１、１１０−２、・・・、１１０−Ｎは、例えば、いくつかの不揮発性メモリアレイ（例えば、不揮発性メモリセルのアレイ）を含み得る。例えば、メモリデバイス１１０−１、１１０−２、・・・、１１０−Ｎは、図２に関連して本明細書で更に詳細に説明するように、新興メモリアレイ及び／またはフラッシュメモリアレイなどのいくつかの不揮発性メモリアレイを含み得る。
【００２０】
一部の実施形態では、メモリデバイス１１０−１、・・・、１１０−Ｎは、メモリセル（例えば、不揮発性メモリセル）のいくつかのアレイを含み得る。アレイは、例えば、ＮＡＮＤアーキテクチャを備えたフラッシュアレイであってもよい。しかし、実施形態は、特定のタイプのメモリアレイまたはアレイアーキテクチャに限定されるものではない。メモリセルは、例えば、メモリセルのいくつかの物理ページを含むいくつかのブロックにグループ分けされ得る。いくつかの実施形態では、ブロックは、ユニットとして共に消去されるメモリセルのグループを指す。メモリセルの平面にいくつかのブロックを含めることができ、アレイはいくつかの平面を含み得る。一例として、メモリデバイスは、ページ当たり８ＫＢ（キロバイト）のユーザデータ、ブロック当たり１２８ページのユーザデータ、平面当たり２０４８ブロック、及びデバイス当たり１６平面を格納するように構成され得る。
【００２１】
動作中、データは、例えば、データのページとして、メモリシステムのメモリデバイス（例えば、メモリシステム１０４のメモリデバイス１１０−１、・・・、１１０−Ｎ）に書き込まれ、及び／またはそこから読み出され得る。そのため、データのページは、メモリシステムのデータ転送サイズと称され得る。データは、セクタ（例えば、ホストセクタ）と呼ばれるデータセグメント単位でホスト１０２との間を転送され得る。そのため、データのセクタは、ホストのデータ転送サイズと称され得る。一部の実施形態では、ＮＡＮＤブロックは消去ブロックと称され得、ブロックは消去の単位であり、ページは読み出し及び／または書き込みの尺度である。
【００２２】
ホストインタフェース１０６は、メモリシステム１０４とホスト１０２などの別のデバイスとの間で情報を通信するために使用され得る。ホスト１０２は、メモリアクセスデバイス（例えば、プロセッサ）を含み得る。本明細書で使用するとき、「プロセッサ」は、並列処理システム、いくつかのコプロセッサなど、いくつかのプロセッサを意図し得る。例示的なホストには、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、デジタル記録再生デバイス、携帯電話（例えば、スマートフォン）、ＰＤＡ、メモリカードリーダ、インタフェースハブ、ＩｏＴ対応デバイスなどが含まれ得る。ホスト１０２は、システムマザーボード及び／またはバックプレーンを含み得、いくつかの処理リソース（例えば、１つ以上のプロセッサ、マイクロプロセッサなど）を含み得る。システム１００は、別個の集積回路を含むものであってもよく、またはホスト１０２及びメモリシステム１０４の双方が同じ集積回路上にあってもよい。システム１００は、例えば、サーバシステム及び／もしくは高性能コンピューティング（ＨＰＣ）システム、並びに／またはそれらの部分であってもよい。
【００２３】
明確にするために、システム１００は、本開示への特定の関連性を有する特徴に焦点を当てて簡略化されている。メモリシステム１０４は、ＤＲＡＭアレイ（例えば、２Ｔ２Ｃ  ＤＲＡＭアレイ、３Ｔ  ＤＲＡＭアレイなど）、ＦｅＲＡＭ、ＳＲＡＭアレイ、ＳＴＴ  ＲＡＭアレイ、ＰＣＲＡＭアレイ、ＴＲＡＭアレイ、ＲＲＡＭアレイ、ＮＡＮＤフラッシュアレイ、３Ｄ  Ｘｐｏｉｎｔメモリ、ＮＯＲフラッシュアレイ、及び／または例えば、コントローラ、３Ｄ  Ｘｐｏｉｎｔメモリ部分及びＮＡＮＤフラッシュ部分を含むストレージサブシステムなどの１つ以上のメモリリソースを含み得る。
【００２４】
ホストインタフェース１０６は、標準化された物理インタフェースの形態をとり得る。例えば、メモリシステム１０４がコンピューティングシステム１００の情報ストレージに使用される場合、ホストインタフェース１０６は、いくつかある物理コネクタ及び／またはインタフェースのなかでも特に、シリアルアドバンスドテクノロジアタッチメント（ＳＡＴＡ）物理インタフェース、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）物理インタフェース、またはユニバーサルシリアルバス（ＵＳＢ）物理インタフェースであり得る。また一方、一般に、ホストインタフェース１０６は、メモリシステム１０４と、ホストインタフェース１０６に適合した受容器を有するホスト（例えば、ホスト１０２）との間で、制御、アドレス、情報（例えば、データ）、及びその他の信号を受け渡しするためのインタフェースを提供し得る。
【００２５】
コントローラ１０８は、例えば、制御回路及び／または制御論理（例えば、ハードウェア及びファームウェア）を含み得る。コントローラ１０８は、メモリ１１０−１、１１０−２、・・・、１１０−Ｎと同じ物理デバイス（例えば、同じダイ）に含まれ得る。例えば、コントローラ１０８は、物理ホストインタフェース１０６及びメモリ１１０−１、１１０−２、・・・、１１０−Ｎを含む印刷回路基板に結合された特定用途向け集積回路（ＡＳＩＣ）であり得る。あるいは、コントローラ１０８は、メモリ１１０−１、１１０−２、・・・、１１０−Ｎを含む物理的デバイスに通信可能に結合された別個の物理的デバイスに含まれ得る。いくつかの実施形態では、コントローラ１０８の構成要素は、分散型コントローラとして、複数の物理的デバイス（例えば、メモリと同じダイ上の一部の構成要素、及び異なるダイ、モジュール、またはボード上の一部の構成要素）に散在させてもよい。
【００２６】
コントローラ１０８は、いくつかある動作のなかでも特に、情報の感知（例えば、読み出し）、プログラム（例えば、書き込み）、及び／または消去のために、メモリデバイス１１０−１、１１０−２、・・・、１１０−Ｎと通信することができる。コントローラ１０８は、いくつかの集積回路及び／または別個の構成要素であってもよい回路構成を有し得る。いくつかの実施形態では、コントローラ１０８内の回路構成は、メモリデバイス１１０−１、１１０−２、・・・、１１０−Ｎにわたるアクセスを制御するための制御回路構成、及び／またはホスト１０２とメモリシステム１０４との間に変換レイヤ（例えば、フラッシュ変換レイヤ）を提供するための回路構成を含み得る。
【００２７】
コントローラ１０８は、Ｌ２Ｐデータ構造として、それぞれの個別のメモリデバイス１１０−１、１１０−２、・・・、１１０−Ｎの、ブロックアドレス指定部分などの専用領域の動作を制御することができる（例えば、本明細書の図２に関連して更に詳細に説明するように、１つ以上のＬ２Ｐデータ構造を格納するように、それぞれの個別のメモリデバイス１１０−１、・・・、１１０−Ｎの一部分を構成することができる）。例えば、それぞれの個別のメモリデバイス１１０−１、１１０−２、・・・、１１０−Ｎの第１の部分が、第１のＬ２Ｐデータ構造を格納するように構成され得、それぞれの個別のメモリデバイス１１０−１、１１０−２、・・・、１１０−Ｎの第２の部分が、第２のＬ２Ｐデータ構造を格納するように構成され得る。
【００２８】
それぞれの個別のメモリデバイス１１０−１、１１０−２、・・・、１１０−Ｎの第１の部分は、例えば、本明細書で（例えば、図１に関連して）更に説明するように、それぞれの個別のメモリ内のメモリセルの第１の複数ブロック（例えば、物理ブロック）としてもよく、本明細書では、メモリの第１の部分と呼ばれ得る。更に、それぞれの個別のメモリデバイス１１０−１、１１０−２、・・・、１１０−Ｎの部分が、第２の複数ブロック、第３の複数ブロックなどを含む場合がある。
【００２９】
それぞれの個別のメモリ１１０−１、１１０−２、・・・、１１０−Ｎの第２の部分は、例えば、本明細書で（例えば、図２に関連して）更に説明するように、それぞれの個別のメモリ内のメモリセルの第２の複数ブロック（例えば、物理ブロック）としてもよい。コントローラ１０８は、１つ以上のＬ２Ｐデータ構造（例えば、図２に示すＬ２Ｐデータ構造２１６−１、・・・、２１６−Ｎ）が、それぞれのメモリデバイス１１０−１、・・・、１１０−Ｎに格納されるようにしてもよい。
【００３０】
図１に示された実施形態は、本開示の実施形態を不明瞭にしないために図示されない追加の回路構成、論理、及び／または構成要素を含み得る。例えば、メモリデバイス１０４は、Ｉ／Ｏ回路構成を介してＩ／Ｏコネクタ上に供給されるアドレス信号をラッチするためのアドレス回路構成を含み得る。アドレス信号は、メモリ１１０−１、１１０−２、・・・、１１０−Ｎにアクセスするために、行デコーダ及び列デコーダによって受け取られて、デコードされ得る。
【００３１】
図２は、本開示のいくつかの実施形態によるメモリシステムの形態の装置のブロック図である。図２に示されるように、コントローラ２０８は、メモリデバイス２１０に結合され得る。コントローラ２０８は、図１に示されたコントローラ１０８に相当し得、メモリデバイス２１０は、図１に示されたメモリデバイス１１０−１、・・・、１１０−Ｎのうちの少なくとも１つに相当し得る。メモリデバイス２１０は、ＮＶＭデバイス２１２及びフラッシュメモリデバイス２１４を含み得る。コントローラ２０８、メモリデバイス２１０、ＮＶＭデバイス２１２、及び／またはフラッシュメモリデバイス２１４は、別個に「装置」と見なされ得る。
【００３２】
ＮＶＭデバイス２１２は、複数のＬ２Ｐデータ構造２１６−１、・・・、２１６−Ｎを含み得る。図２には複数のＬ２Ｐデータ構造２１６−１、・・・、２１６−Ｎとして示されているが、少なくとも１つの実施形態では、ＮＶＭデバイス２１２は、２つの別個のＬ２Ｐデータ構造２１６−１、・・・、２１６−Ｎを含み得る。しかし、実施形態は、２つの別個のＬ２Ｐデータ構造２１６−１、・・・、２１６−Ｎに限定されない。例えば、少なくとも１つの実施形態では、ＮＶＭデバイス２１２は、第１のＬ２Ｐデータ構造（例えば、Ｌ２Ｐデータ構造２１６−１）と、第２のＬ２Ｐデータ構造（例えば、Ｌ２Ｐデータ構造２１６−Ｎ）とを含み得る。ただし、実施形態はそのようには限定されず、ＮＶＭデバイス２１２は、２つより多い別個のＬ２Ｐデータ構造２１６−１、・・・、２１６−Ｎ（例えば、３つ以上の別個のＬ２Ｐデータ構造）を含んでもよい。
【００３３】
Ｌ２Ｐデータ構造２１６−１、・・・、２１６−Ｎは、Ｌ２Ｐアドレス指定スキームに対応するデータを格納するように構成可能であってもよい。例えば、Ｌ２Ｐデータ構造２１６−１、・・・、２１６−Ｎは、Ｌ２Ｐアドレス指定テーブルを格納するように構成可能であってもよい。一部の実施形態では、Ｌ２Ｐデータ構造２１６−１は、ａ×ｂテーブル（例えば、ａ×ｂのテンソルまたは多次元配列）であり得、Ｌ２Ｐデータ構造２１６−Ｎは、ａ×ｂテーブルであり得る。ここで、ａ及びｂはゼロ以外の整数である。別の言い方をするならば、一部の実施形態では、Ｌ２Ｐデータ構造２１６−１とＬ２Ｐデータ構造２１６−Ｎとは、同じ数量の列と同じ数量の行とを含み得る（例えば、Ｌ２Ｐデータ構造２１６−１とＬ２Ｐデータ構造２１６−Ｎとは同じサイズであり得る）。一部の実施形態では、コントローラ２０８は、Ｌ２Ｐデータ構造２１６−１、・・・、２１６−Ｎへの格納を制御するように構成され得る。
【００３４】
Ｌ２Ｐデータ構造２１６−１は、本明細書において、図３Ｂに関連して更に詳細に図示及び説明が行われるデータ構造Λに相当し得、Ｌ２Ｐデータ構造２１６−Ｎは、本明細書の図３Ｃに関連して更に詳細に図示及び説明が行われるデータ構造Πに相当し得る。例えば、Ｌ２Ｐデータ構造２１６−１は、論理ブロックアドレス（ＬＢＡ）を含み得、一方、Ｌ２Ｐデータ構造２１６−Ｎは、物理ブロックアドレス（ＰＢＡ）を含み得る。図２に示されている２つのＬ２Ｐデータ構造２１６−１及び２１６−Ｎは、次のようにして関連付けられ得る。すなわち、ＬＢＡがＬ２Ｐデータ構造２１６−１のｉ番目の位置（例えば、場所）に格納されている場合、対応するＰＢＡが、Ｌ２Ｐデータ構造２１６−Ｎのｉ番目の位置に格納され得る。一部の実施形態では、複数のハッシュ関数を実行することにより、Ｌ２Ｐテーブル２１６−１に格納されたＬＢＡの検索、書き込み、及び／または読み出しが可能であり得る。非限定的な実施例では、本明細書でｈ及びｓと呼ばれる２つのハッシュ関数を実行することにより、Ｌ２Ｐテーブル２１６−１に格納されたＬＢＡの検索、書き込み、及び／または読み出しが可能であり得る。
【００３５】
ハッシュ関数ｈ及びｓは、ＬＢＡの関数であり得る。簡単にするために、本明細書では、ＬＢＡをｌと称することがある。別の言い方をすれば、第１のハッシュ関数ｈはｈ（ｌ）と称され得、第２のハッシュ関数はｓ（ｌ）と称され得る。一部の実施形態では、式１〜７並びに表１及び表２に関連して本明細書で更に詳細に説明するように、第１のハッシュ関数ｈ（ｌ）はＬＢＡ、ｌのハッシュアドレスに対応してもよく、第２のハッシュ関数ｓ（ｌ）はＬＢＡ、ｌのハッシュインクリメントに対応してもよい。
【００３６】
一部の実施形態では、ハッシュ関数ｈ及びｓは、それらが効率的に計算可能であるように選択され得る。本明細書で使用するとき、用語「効率的に計算可能」とは、ハードウェアに容易に実装できる関数のことを意味する。更に、ハッシュ関数ｈ及びｓは、衝突確率が低くなるように選択され得る。ここでの「低衝突確率」という用語は、異なる入力値を受け取ると、異なるハッシュ値を出力する可能性が高い関数のことを意味する。例えば、ｈ及びｓの「衝突確率が低い」場合、表１に関連して本明細書で更に詳細に説明するように、ハッシュ関数への入力として異なるＬＢＡ（例えば、ｌの値が異なる）が使用されるとき、各ハッシュ関数ｈ（ｌ）及びｓ（ｌ）は実行時に異なるハッシュ値を出力する。
【００３７】
Ｌ２Ｐデータがマルチレベルツリー構造内に格納される一部のアプローチとは対照的に、２つのＬ２Ｐアドレステーブル（例えば、Ｌ２Ｐデータ構造２１６−１及びＬ２Ｐデータ構造２１６−Ｎ）を使用することにより、メモリデバイス２１０の記憶密度が増加するにもかかわらず、データ構造の数（例えば、以前のあるアプローチで使用されたツリーのレベル）を最小限に抑え得る。例えば、２つの別個のＬ２Ｐアドレステーブル（例えば、第１のＬ２Ｐデータ構造２１６−１及び第２のＬ２Ｐデータ構造２１６−Ｎ）が利用される本明細書に記載の実施形態では、メモリデバイス２１０の記憶密度が増加するにつれて、一部のアプローチで使用されるデータ構造（例えば、ツリー）の数を減らすことができる。ただし、上記のように、実施形態は、２つの別個のＬ２Ｐアドレステーブルに限定されず、本開示は、２つを超える別個のＬ２Ｐアドレステーブルが、論理ブロックアドレス及び物理ブロックアドレスの格納及び検索に関連して使用され得る実施例を対象として含むことが意図されている。
【００３８】
２つの別個のＬ２Ｐアドレステーブル（例えば、Ｌ２Ｐデータ構造２１６−１及びＬ２Ｐデータ構造２１６−Ｎ）を使用することにより、２回の処理のみを使用してＬＢＡの書き込み及び／または読み出しが可能であり得る。例えば、一部の実施形態では、ハッシュ関数ｈ（ｌ）及びｓ（ｌ）を利用することにより、２回の書き込み処理のみを使用してＬＢＡを書き込むことが可能であり得る。一実施例として、フラッシュメモリデバイス２１４が閾値量未満のエントリを収容している場合（例えば、フラッシュメモリデバイス２１４が部分的に満たされている場合）、本明細書の実施形態は、２回の書き込み処理のみを使用して、ＬＢＡがＬ２Ｐデータ構造２１６−１に書き込まれることを可能にする。フラッシュメモリデバイス２１４が閾値量を超えるエントリを収容している実施形態では、本明細書の実施形態は、３回の書き込み処理のみを使用して、ＬＢＡがＬ２Ｐデータ構造２１６−１に書き込まれることを可能にし得る。しかし、実施形態はそのように限定されず、一部の実施形態では、ＬＢＡは、フラッシュメモリデバイス２１４に収容されているエントリの量に基づき、３回を超える書き込み処理を使用して、Ｌ２Ｐデータ構造２１６−１に書き込まれ得る。
【００３９】
いくつかの実施形態では、Ｌ２Ｐデータ構造２１６−１は、図３Ａ〜図３Ｃに関連して本明細書で更に詳細に説明するように、半順序であるように構成され得る。本明細書で使用するとき、「半順序」は、Ｌ２Ｐデータ構造２１６−１が、Ｌ２Ｐデータ構造２１６−１内の特定の要素間の二項関係を反映した状態を指す。例えば、Ｌ２Ｐデータ構造２１６−１内のある特定の要素は、２１６−１の順序付けの観点から、Ｌ２Ｐデータ構造内の別の要素に優先する要素を含み得る。ただし、Ｌ２Ｐデータ構造２１６−１内の全ての要素が、順序付けの点で、ある要素が別の要素に優先するという特性を示す必要はなく、Ｌ２Ｐデータ構造２１６−１は、順序付けの点で、ペア内のいずれの要素もペア内の他の要素に優先しない要素のペアを含み得る。一部の実施形態では、コントローラ２０８は、Ｌ２Ｐデータ構造２１６−１が半順序であるようにＬ２Ｐデータ構造２１６−１を維持するように構成され得る。Ｌ２Ｐデータ構造２１６−１が半順序であるという条件は、本明細書において、図３Ａ〜図３Ｃに関連して更に詳細に論じられる。
【００４０】
フラッシュメモリデバイス２１４は、フラッシュデータ構造２１８を含み得る。フラッシュデータ構造２１８は、図３Ａに関連して本明細書で更に詳細に説明するように、Ｌ２Ｐデータ構造２１６−１、・・・、２１６−Ｎ内に格納されたＰＢＡ及び／またはＬＢＡの場所に対応するデータを格納するように構成可能であり得る。一部の実施形態では、コントローラ２０８は、フラッシュデータ構造２１８内のＰＢＡ及び／またはＬＢＡの場所に対応するデータの格納を制御するように構成され得る。
【００４１】
上記のように、フラッシュメモリデバイス２１４は、電子的な（例えば、ソリッドステートの）不揮発性メモリストレージの１つ以上の部分を含み得る。例えば、フラッシュメモリデバイス２１４は、ＮＡＮＤ型フラッシュメモリ、ＮＯＲ型フラッシュメモリ、ＮＶＲＡＭ型フラッシュメモリなどの１つ以上の部分を含み得る。フラッシュメモリデバイス２１４は、ブロック（またはページ）単位で書き込まれる（または読み出される）ように構成され得、このブロック（またはページ）は、フラッシュメモリデバイス２１４全体が利用可能な格納スペースよりも小さい容量であり得る。しかしながら、一部の実施形態では、フラッシュメモリデバイス２１４は、バイトごとに書き込まれ、または読み出され得る（例えば、フラッシュメモリデバイス２１４の場所が、別々に書き込まれ、または読み出され得る）。
【００４２】
一部の実施形態では、式１に示すように、ハッシュ関数ｈ（ｌ）及びｓ（ｌ）は、ＬＢＡの量ｎ（ただし、０≦ｎ≦ｎ−１）に対して、及びＰＢＡの量ｍ（ただし、ｍ＞ｎ）に対して、以下のように定義され得る。
2021526260.tif 000003
【００４３】
式１では、ハッシュ関数ｓ（ｌ）は、ｓ（ｌ）がｍに対して互いに素になるように選択され得る。本明細書で使用するとき、用語「互いに素（ｒｅｌａｔｉｖｅｌｙ  ｐｒｉｍｅ）」（または「互いに素（ｃｏｐｒｉｍｅ）」）は、両方の整数を割り切る１よりも大きな整数が存在しないような２つの整数を表す。例えば、整数１２と１３とは、１２及び１３の両方を割り切る１よりも大きな整数が存在しないので、互いに素である。対照的に、整数１２と１４とは、１２及び１４の両方を割り切る１よりも大きな整数（例えば、２）が存在するので、互いに素ではない。
【００４４】
一部の実施形態では、ｍに対して互いに素であるようなｓ（ｌ）を選択することにより、ＬＢＡ構造Λ（例えば、本明細書において図３Ｂに示されるＬＢＡデータテーブルΛ３１６−１）内の別個の位置を一つ一つ残らず調べることが可能であり得る。
【００４５】
式２に示すように、Ｌ２Ｐデータ構造２１６−１（例えば、図３Ｂに示されているＬＢＡデータテーブルΛ３１６−１）及びＬ２Ｐデータ構造２１６−Ｎ（例えば、図３Ｂに示されているＰＢＡデータテーブルΠ３１６−１）は、ｍ個の要素を含み得る。例えば、Ｌ２Ｐデータ構造２１６−１及びＬ２Ｐデータ構造２１６−Ｎは、各ＰＢＡに対して１つの要素ｍが存在するように構成され得る。
2021526260.tif 000004
【００４６】
一部の実施形態では、Ｌ２Ｐデータ構造２１６−１及びＬ２Ｐデータ構造２１６−Ｎは空であり得る。例えば、ある期間において、式３によって示すように、Ｌ２Ｐデータ構造２１６−１及びＬ２Ｐデータ構造２１６−Ｎは、データを含まない場合がある（例えば、Ｌ２Ｐデータ構造２１６−１がＬＢＡを含まない場合があり、Ｌ２Ｐデータ構造２１６−ＮがＰＢＡを含まない場合がある）。
2021526260.tif 000005
【００４７】
ホスト（例えば、本明細書で図１に示されるホスト１０２）は、ＬＢＡ（ｌ）をＬ２Ｐデータ構造２１６−１内の場所に書き込み得る。一部の実施形態では、ＰＢＡ（ｐ）が書き込まれ得るＬ２Ｐデータ構造２１６−Ｎ内に対応する空の場所が存在し得る。ＬＢＡを書き込むためのＬ２Ｐデータ構造２１６−１内の場所は、式４を使用して判定され得る。
2021526260.tif 000006
【００４８】
一部の実施形態では、式３に示すように、Λｉ＝−１である場合、Ｌ２Ｐデータ構造２１６−１内のｉ番目の場所は空であり、Ｌ２Ｐデータ構造２１６−１及びＬ２Ｐデータ構造２１６−Ｎの値は、式５に示すように設定され得る。
2021526260.tif 000007
【００４９】
対照的に、式６に示すように、Ｌ２Ｐのｉ番目の場所が占有されている場合には、衝突が発生する可能性がある。本明細書で使用するとき、「衝突」とは、ハッシュ関数ｈ（ｌ）によって判定されるＬ２Ｐデータ構造２１６−１内の場所が、ｌとは異なるＬＢＡを既に含んでいる状況をいう。衝突が検出された場合は、Ｌ２Ｐデータ構造２１６−１内の既存のＬＢＡに、新たなＬＢＡを上書きすることはできない。その代わりに、衝突が検出された場合は、第２のハッシュ関数ｓ（ｌ）を使用して、ＬＢＡを書き込むために、Ｌ２Ｐデータ構造２１６−１内の別の場所が判定され得る。
2021526260.tif 000008
【００５０】
Ｌ２Ｐデータ構造２１６−１へのＬＢＡの書き込み、及びＬ２Ｐデータ構造２１６−ＮへのＰＢＡの書き込みは、図３Ａ〜図３Ｃに関連して以下に詳述する。
【００５１】
図３Ａは、本開示のいくつかの実施形態によるフラッシュデータ構造２１８のブロック図である。フラッシュメモリデバイスは、図２に示されるフラッシュメモリデバイス２１４に相当し得る。図３Ａに示すように、フラッシュデータ構造３１８は、複数の場所（例えば、図２に示されるフラッシュメモリデバイス２１４などのフラッシュメモリデバイスの記憶場所）を含み得る。更に、図３Ａに示すように、フラッシュデータ構造３１８は、複数のステップ（例えば、ステップ０、・・・、ステップ４）を示しており、以下では、これらのステップを実施例として説明する。例えば、図３Ａは、複数のステップにおけるフラッシュメモリデバイスの状態を示す。
【００５２】
図３Ａでは、一部の場所が、空き、有効、または無効であり得る。これらのステータスは、時間が経過して、データがフラッシュメモリデバイスに書き込まれると（例えば、データがフラッシュメモリデータ構造３１８に書き込まれると）変化し得る。図３Ａに示すように、空いている場所（例えば、対応するデータが格納されていない場所）は白い箱として示される。有効なデータ（例えば、所与のＬＢＡに関連付けられたコンテンツの最新バージョン）を含む場所は単一のハッチング線のパターンで示され、無効な場所（例えば、ホストにとってはもはや有効ではないデータを含む場所）はクロスハッチングで示される。例えば、ステップ０では、インデックス０に対応する場所は、ＬＢＡ  ２に関連付けられたデータの最新バージョンを含むため、有効である。これに対し、ステップ３では、ホストによってＬＢＡ  ２が更新され、このとき最新のコンテンツが場所３にあるため、インデックス０に対応する場所は無効である。
【００５３】
図３Ｂは、本開示のいくつかの実施形態による例示的なＬ２Ｐデータ構造のブロック図である。図３Ｂに示されているＬ２Ｐデータ構造３１６−１は、図２に示されているＬ２Ｐデータ構造２１６−１に相当し得る。図３Ｂに示すように、Ｌ２Ｐデータ構造３１６−１は、複数の場所（例えば、図２に示されるＬ２Ｐデータ構造２１６−１などのＬＢＡテーブル内の場所）を含み得る。更に、図３Ｂに示すように、Ｌ２Ｐデータ構造３１６−１は、複数のステップ（例えば、ステップ０、・・・、ステップ４）を示しており、以下では、これらのステップを実施例として説明する。例えば、図３Ｂは、複数のステップにわたるＬ２Ｐデータ構造３１６−１の漸進的な変化を示す。
【００５４】
図３Ｃは、本開示のいくつかの実施形態による例示的なＬ２Ｐデータ構造の別のブロック図である。図３Ｃに示されているＬ２Ｐデータ構造３１６−Ｎは、図２に示されているＬ２Ｐデータ構造２１６−Ｎに相当し得る。図３Ｃに示すように、Ｌ２Ｐデータ構造３１６−Ｎは、複数の場所（例えば、図２に示されるＬ２Ｐデータ構造２１６−ＮなどのＬＢＡテーブル内の場所）を含み得る。更に、図３Ｃに示すように、Ｌ２Ｐデータ構造３１６−Ｎは、複数のステップ（例えば、ステップ０、・・・、ステップ４）を示しており、以下では、これらのステップを実施例として説明する。例えば、図３Ｃは、複数のステップにわたるＬ２Ｐデータ構造３１６−Ｎの漸進的な変化を示す。
【００５５】
以下の非限定的な実施例では、本発明者らは、８つのＰＢＡ（例えば、ｍ＝８）と６つのＬＢＡ（例えば、ｎ＝６）とが存在することを想定している。本実施例に係る２つのハッシュ関数ｈ（ｌ）及びｓ（ｌ）の例を式７に示す。
2021526260.tif 000009
【００５６】
式７に示すモジュロ演算は８の除数を示すが、実施形態はそのように限定されず、式７に示すｈ（ｌ）及びｓ（ｌ）は８とは異なる除数を有し得る。例えば、式７の８の代わりにｘの除数（ただし、ｘは整数）を使用してもよい。ｍ＝８及びｎ＝６の例について、２つのハッシュ関数ｈ（ｌ）及びｓ（ｌ）によって生成された値を表１に示す。
2021526260.tif 000010
【００５７】
本実施例を続けると、ホスト（例えば、本明細書で図１に示されるホスト１０２）は、一連のＬＢＡをメモリデバイス（例えば、本明細書で図２に示されるメモリデバイス２１０）に書き込み得る。一部の実施形態では、一連のＬＢＡは、一連のステップ（例えば、図３Ａ〜図３Ｃに示すステップ０、・・・、ステップ４）で書き込まれ得る。例示的な一連のＬＢＡは、表２に示す以下の一連のＬＢＡであり得る。
2021526260.tif 000011
【００５８】
図３Ａ〜図３Ｃに示すステップ０において、ホストは、対応する（表２に示す）２の値でＬＢＡを書き込みしようと試み得る。これは、ホストがメモリデバイスにＬＢＡを書き込もうとする最初の試みであるため、Ｌ２Ｐデータ構造３１８−Ｎ内には、０における空きＰＢＡブロックに対応する空きブロックが存在する。式４を使用すると、ｉ＝ｈ（２）＝４である。Λ４は空である（例えば、Λ４に対応する場所に予め格納されたＬＢＡが存在しない）ので、コントローラによって、図３Ｂ及び図３Ｃに示すように、Λ４＝２及びΠ４＝０が設定され得る。更に、フラッシュデータ構造３１８は、ステップ０ではエントリを含まないので、図３Ａに示すように、ステップ０でのインデックス０に対応するフラッシュデータ構造３１８内の位置に、ＬＢＡ値２が書き込まれる。
【００５９】
図３Ａ〜図３Ｃに示すステップ１において、ホストは、対応する（表２に示す）４の値でＬＢＡを書き込みしようと試み得る。図３Ｃに示すように、Ｌ２Ｐデータ構造３１８−Ｎには、１における空きＰＢＡブロックに対応する空きブロックが存在する。式４を使用すると、ｉ＝ｈ（４）＝０である。Λ０は空である（例えば、Λ０に対応する場所に予め格納されたＬＢＡが存在しない）ので、コントローラによって、図３Ｂ及び図３Ｃに示すように、Λ０＝４及びΠ０＝１が設定され得る。更に、フラッシュデータ構造３１８は、ステップ１ではエントリを含まないので、図３Ａに示すように、ステップ１でのインデックス１に対応するフラッシュデータ構造３１８内の位置に、ＬＢＡ値４が書き込まれる。
【００６０】
図３Ａ〜図３Ｃに示すステップ２において、ホストは、対応する（表２に示す）５の値でＬＢＡを書き込みしようと試み得る。図３Ｃに示すように、Ｌ２Ｐデータ構造３１８−Ｎには、２における空きＰＢＡブロックに対応する空きブロックが存在する。式４を使用すると、ｉ＝ｈ（５）＝６である。Λ６は空である（例えば、Λ６に対応する場所に予め格納されたＬＢＡが存在しない）ので、コントローラによって、図３Ｂ及び図３Ｃに示すように、Λ６＝６及びΠ６＝２が設定され得る。更に、フラッシュデータ構造３１８は、ステップ２ではエントリを含まないので、図３Ａに示すように、ステップ２でのインデックス２に対応するフラッシュデータ構造３１８内の位置に、ＬＢＡ値５が書き込まれる。
【００６１】
図３Ａ〜図３Ｃに示すステップ３において、ホストは、ＬＢＡのコンテンツを、対応する（表２に示す）２の値で更新しようと試み得る。図３Ｃに示すように、Ｌ２Ｐデータ構造３１８−Ｎには、３における空きＰＢＡブロックに対応する空きブロックが存在する。式４を使用すると、ｉ＝ｈ（２）＝４である。Λ４＝２であるため、Λ４＝２に対応する場所に正しいＬＢＡ値（例えば、値２）が格納される。この場合は、図３Ｃのインデックス４の空きブロックに対応するようにＰＢＡを更新することが可能であり得る。例えば、いくつかの実施形態では、コントローラによって、図３Ｂ及び図３Ｃに示すように、Λ４＝２及びΠ４＝３が設定され得る。本実施例では、このとき、ＰＢＡブロック３に対応するＰＢＡのコンテンツが有効になる。更に、フラッシュデータ構造３１８は、ステップ３ではエントリを含まないので、図３Ａに示すように、ステップ３でのインデックス３に対応するフラッシュデータ構造３１８内の位置に、ＬＢＡ値２が書き込まれる。
【００６２】
図３Ａ〜図３Ｃに示すステップ４において、ホストは、ＬＢＡのコンテンツを、対応する（表２に示す）０の値で書き込みしようと試み得る。図３Ｃに示すように、Ｌ２Ｐデータ構造３１８−Ｎには、４における空きＰＢＡブロックに対応する空きブロックが存在する。式４を使用すると、ｉ＝ｈ（０）＝０である。Λ０＝４なので、衝突が発生する可能性がある。一部の実施形態では、衝突が発生すると、コントローラは、競合するＬＢＡを特定の順序で維持するように構成され得る（例えば、コントローラは、半順序であるようにＬ２Ｐデータ構造３１８−１を維持するように構成され得る）。例えば、衝突が発生すると、コントローラは、Ｌ２Ｐデータ構造３１８−１内の競合するＬＢＡを昇順に維持するように構成され得る。
【００６３】
本実施例に従うと、Λ０＝４に格納されるＬＢＡは、（ステップ４の表２から）新たなＬＢＡ  ０よりも大きな値である。その結果、コントローラによって、Λ０が０に設定され、ＰＢＡが１に設定され得る。その結果、コントローラによって、Λ０＝０及びΠ０＝０が設定され、ＬＢＡ  ４及びＰＢＡ  １の新たな場所が決められ得る。一部の実施形態では、新たな場所は、第２のハッシュ関数ｓ（ｌ）を使用して判定され得る。式７のｓ（ｌ）を用いると、ｓ（４）＝３となるので、ｉ＋ｓ（４）＝０＋３＝０となる。その結果、図３Ｂ及び図３Ｃに示すように、コントローラは、Λ３＝４及びΠ３＝１をもたらすように構成され得る。
【００６４】
図３Ａ〜図３Ｃに関連して上記で説明した例を、以下では、次の擬似コードの実施例を用いて、更に一般的に概括する。次の擬似コードの実施例では、最初に、Ｌ２Ｐデータ構造３１８−１及び３１８−Ｎは空であり、式３に示すように、全てのｉ∈｛０，．．．，ｍ−１｝について、Λｉ＝Πｉ＝−１を設定することによって初期化される。第１の例示的な擬似コードは、本開示のいくつかの実施形態によるＬＢＡ  ｌの書き込み及び／または更新の実施例を示す。
１：    ｐｒｏｃｅｄｕｒｅ  挿入（ＬＢＡ  ｌ，空きＰＢＡ  ｐ）
２：      設定  ｉ←ｈ（ｌ）
３：      設定  完了した←偽
４：      ｗｈｉｌｅ  完了していない  ｄｏ
５：        ｉｆ  Λｉ＝−１  ｔｈｅｎ
６：          設定  Λｉ←ｌ
７：          設定  Πｉ←ｐ
８：          設定  完了した←真
９：        ｅｌｓｅ  ｉｆ  Λｉ＝ｌ  ｔｈｅｎ
１０：        設定  Πｉ←ｐ
１１：        設定  完了した←真
１２：      ｅｌｓｅ  ｉｆ  Λｉ＞ｌ  ｔｈｅｎ
１３：        設定  ｌ’←Λｉ
１４：        設定  ｐ’←Πｉ
１５：        設定  Λｉ←ｌ
１６：        設定  Πｉ←ｐ
１７：        設定  ｌ←ｌ’
１８：        設定  ｐ←ｐ’
１９：      ｅｎｄ  ｉｆ
２０：      設定  ｉ←Ｉ＋ｓ（ｌ）（ｍｏｄ  ｍ）
２１：    ｅｎｄ  ｗｈｉｌｅ
２２：  ｅｎｄ  ｐｒｏｃｅｄｕｒｅ
【００６５】
第１の例示的な擬似コードの第１の処理では、対応するＰＢＡ  ｐを有するＬＢＡ  ｌを書き込む（例えば、挿入する）プロシージャが初期化され得る。一部の実施形態では、第２の処理は、式４に関連して説明したように、第１のハッシュ関数ｈ（ｌ）をｉに設定することを含み得る。第３の処理は、設定が完了していないことを示す表示を偽に設定し、それによってプロシージャが第４の処理で継続されるべきであることを示すことを含み得る。
【００６６】
第４の処理は、第５の処理から第２１の処理にかけて説明するように、設定が完了していないときにｗｈｉｌｅループを実行することを含み得る。一部の実施形態では、第５の処理は、式３に示すように、Λｉが−１に等しいことを判定することを含み得る。Λｉが−１に等しい場合、このプロシージャは、式５に示すように、Λｉがｌに設定される第６の処理を続け得る。第７の処理では、式５に示すように、Πｉがｐに設定され得る。Λｉがｌに設定され、Πｉがｐに設定され得る場合、第８の処理に示すように、第５の処理で開始されたｉｆループが完了する。
【００６７】
第９の処理では、式５に示すように、Λｉがｌに等しいとの判定に応答して、ｅｌｓｅ  ｉｆ  ｔｈｅｎループが開始され得る。Λｉがｌに等しい場合、式５に示すように、第１０の処理においてΠｉがｐに設定され得る。一部の実施形態では、Λｉがｌに等しく、Πｉがｐに設定されていることが判定されると、第１１の処理で設定を完了し得る。一部の実施形態では、第９の処理から第１１の処理にかけては、図３Ａ〜図３Ｃのステップ３に関連して上記で説明したように、Ｌ２Ｐデータ構造３１８−１及び３１８−Ｎへの更新に対応し得る。
【００６８】
第１２の処理では、Λｉ＞ｌとの判定に応答して、第２のｅｌｓｅ  ｉｆ  ｔｈｅｎループが開始され得る。式６に示すように、Λｉ＞ｌとの判定に応答して、第１３の処理では、コントローラによって、Λｉがｌ’に設定され得る。一部の実施形態では、ｌ’は、Ｌ２Ｐデータ構造３１８−１内の第２の場所に対応し得る。第１４の処理において、Πｉがｐ’に設定され得る。ｐ’は、Ｌ２Ｐデータ構造３１８−Ｎ内の第２の場所に対応し得る。
【００６９】
ＬＢＡ  ｌは、Ｌ２Ｐデータ構造３１８−１の第１の場所に予め格納されているＬＢＡよりも大きな値を有するので、第１５の処理では、Λｉがｌに設定され得る。同様に、第１６の処理では、Πｉがｐに設定され得る。第１７の処理では、ｌ’がｌに設定され得、第１８の処理では、ｐ’がｐに設定され得る。最後に、第１９の処理において、ｉｆループを終了させ得る。一部の実施形態では、第１１の処理から第１９の処理にかけては、図３Ａ〜図３Ｃのステップ４に関連して上記で説明したように、Ｌ２Ｐデータ構造３１８−１及び３１８−Ｎで発生する衝突の検出に対応し得る。
【００７０】
第１９の処理の完了に応答して、上記の図３Ａ〜図３Ｃに関連して説明したように、第２のハッシュ関数を使用することにより、ｉがｉ＋ｓ（ｌ）（ｍｏｄ  ｍ）に設定されて、第１のハッシュ関数をインクリメントし得る。続いて、ｗｈｉｌｅループが第２０の処理で終了され得、プロシージャを第２１の処理で終了させ得る。
【００７１】
第２の例示的な擬似コードは、本開示のいくつかの実施形態による、ＬＢＡ  ｌに対応するＰＢＡ  ｐを読み出す実施例を示す。第２の例示的な擬似コードでは、Ｌ２Ｐデータ構造３１８−１にＬＢＡが書き込まれた（例えば、格納された）場合に、−１のＰＢＡ値が返される。
１：    ｐｒｏｃｅｄｕｒｅ  検索（ＬＢＡ  ｌ）
２：      設定  ｉ←ｈ（ｌ）
３：      設定  完了した←偽
４：      ｗｈｉｌｅ  完了していない  ｄｏ
５：        ｉｆ  Λｉ＝ｌ  ｔｈｅｎ
６：          設定  ｐ←Πｉ
７：          設定  完了した←真
８：        ｅｌｓｅ  ｉｆ  Λｉ＝−１またはΛｉ＞ｌ  ｔｈｅｎ
９：          設定  ｐ←Πｉ
１０：        設定  完了した←真
１１：      ｅｎｄ  ｉｆ
１２：      設定  ｉ←ｉ＋ｓ（ｌ）（ｍｏｄ  ｍ）
１３：    ｅｎｄ  ｗｈｉｌｅ
１４：    ｒｅｔｕｒｎ  ｐ
１５：  ｅｎｄ  ｐｒｏｃｅｄｕｒｅ
【００７２】
第２の例示的な擬似コードの第１の処理では、対応するＬＢＡ  ｌに関連付けられたＰＢＡ  ｐを読み出す（例えば、検索する）プロシージャが初期化され得る。一部の実施形態では、第２の処理は、式４に示すように、ｈ（ｌ）をｉに設定することを含み得る。第３の処理で設定が完了しない場合、第４の処理でｗｈｉｌｅループが実行され得る。
【００７３】
このｗｈｉｌｅループは、第５の処理にｉｆ  ｔｈｅｎループを含み得る。例えば、第５の処理においてΛｉ＝ｌであれば、第６の処理ではΠｉがｐに設定され得る。これは、Ｌ２Ｐデータ構造３１８−Ｎ内の対応するエントリを含むＬ２Ｐデータ構造３１８−１内の場所に対応する。第７の処理で設定が完了され得、第５の処理で実行したｉｆ  ｔｈｅｎループを終了させ得る。
【００７４】
第５の処理で実行されたｉｆ  ｔｈｅｎループが完了しない場合、第８の処理では、Λｉが−１であるか、またはΛｉ＞ｌであるとの判定に応答して、ｅｌｓｅ  ｉｆ  ｔｈｅｎループが実行され得る。この場合、第９の処理でｐが−１に設定され得、第８の処理で実行されたｅｌｓｅ  ｉｆ  ｔｈｅｎループを第１０の処理で終了させ得る。
【００７５】
第１１の処理において、第５の処理で実行されたｉｆループを終了させ得、第１２の処理において、上記の図３Ａ〜図３Ｃに関連して説明したように、第２のハッシュ関数を使用することにより、ｉがｉ＋ｓ（ｌ）（ｍｏｄ  ｍ）に設定されて、第１のハッシュ関数をインクリメントし得る。第１３の処理では、第４の処理で実行されたｗｈｉｌｅループを終了させ得、第１４の処理でＰＢＡ  ｐが返され得る。最後に、第１５の処理で、プロシージャを終了させ得る。
【００７６】
図４は、本開示のいくつかの実施形態による論理対物理データ構造のための例示的な流れ図を示す。ブロック４２２において、方法４２０は、第１の論理ブロックアドレス（ＬＢＡ）を書き込むために、不揮発性メモリデバイスに格納された第１の論理対物理（Ｌ２Ｐ）データ構造（例えば、本明細書で図２に示されるＬ２Ｐデータ構造２１６−１）内の第１の場所を判定することを含み得る。一部の実施形態では、方法４２０は、図３Ａ〜図３Ｃに関連して本明細書で説明したように、第１のハッシュ関数ｈ（ｌ）を実行することによって、第１のＬＢＡを書き込むために、第１のＬ２Ｐデータ構造内の第１の場所を判定することを含み得る。
【００７７】
ブロック４２４において、方法４２０は、第１の場所が第２のＬＢＡを含むことを判定することを含み得る。一部の実施形態では、第１の場所が第２のＬＢＡを含むことを判定することは、第１の場所で衝突が発生していることを判定することを含み得る。第２のＬＢＡは、予め第１の場所に格納されている可能性がある（例えば、第２のＬＢＡは、第１の場所に第１のＬＢＡを格納しようと試みるより前に、第１の場所に格納されている可能性がある）。一部の実施形態では、方法４２０は、図３Ａ〜図３Ｃに関連して本明細書で説明したように、第２のハッシュ関数ｓ（ｌ）を実行することによって、第１のＬＢＡを書き込むために、第１のＬ２Ｐデータ構造内の第１の場所を判定することを含み得る。
【００７８】
ブロック４２６において、方法４２０は、第１の場所が第２のＬＢＡを含むとの判定に応答して、第１のＬ２Ｐデータ構造内の第２の場所に第１のＬＢＡを書き込むことを含み得る。例えば、方法４２０は、衝突が発生しているとの判定に応答して、第１のＬ２Ｐデータ構造内の第２の場所に第１のＬＢＡを書き込むことを含み得る。
【００７９】
ブロック４２８において、方法４２０は、ＮＶＭデバイスに格納された第２のＬ２Ｐデータ構造（例えば、本明細書で図２に示されるＬ２Ｐデータ構造２１６−Ｎ）内の第１の場所に、第１のＬＢＡに対応する物理ブロックアドレス（ＰＢＡ）を書き込むことを含み得る。一部の実施形態では、第１のＬ２Ｐデータ構造内の第２の場所が、第２のＬ２Ｐデータ構造内の第１の場所に対応し得る。
【００８０】
上記のように、第１のＬ２Ｐデータ構造と第２のＬ２Ｐデータ構造とは、同じ数量の行と同じ数量の列とを含み得る（例えば、第１のＬ２Ｐデータ構造はａ×ｂテーブルであり得、第２のＬ２Ｐデータ構造はａ×ｂテーブルであり得、ａとｂとはゼロ以外の整数である）。例えば、一部の実施形態では、第１のＬ２Ｐデータ構造と第２のＬ２Ｐデータ構造とは、同じサイズであり得る。
【００８１】
一部の実施形態では、方法４２０は、第１のＬ２Ｐデータ構造内の第２の場所から第１のＬＢＡを読み出すことを更に含み得る。ただし、実施形態はそのように限定されるものではなく、衝突が検出されず、第１のＬＢＡがＬ２Ｐデータ構造内の第１の場所に書き込まれる実施形態などの一部の実施形態では、本方法は、第１のＬ２Ｐデータ構造内の第１の場所からＬＢＡを読み出すことを更に含んでもよい。
【００８２】
一部の実施形態では、方法４２０は、第２のＬ２Ｐデータ構造内の第２の場所からＰＢＡを読み出すことを更に含み得る。例えば、衝突が検出され、ＰＢＡが第２のＬ２Ｐデータ構造内の第２の場所に書き込まれる場合、方法４２０は、第２のＬ２Ｐデータ構造内の第２の場所からＰＢＡを読み出すことを含み得る。ただし、実施形態はそのように限定されるものではなく、衝突が検出されず、ＰＢＡが第２のＬ２Ｐデータ構造内の第１の場所に書き込まれる実施形態などの一部の実施形態では、本方法は、第２のＬ２Ｐデータ構造内の第１の場所からＰＢＡを読み出すことを更に含んでもよい。
【００８３】
本明細書では特定の実施形態を例示し説明してきたが、当業者は、同じ結果を達成するように計算された構成が、示された特定の実施形態に置き換えられ得ることを理解するであろう。この開示は、本開示の１つ以上の実施形態の適合または変形を網羅することを意図している。上記説明は、限定的でなく例示的な方式において行われたことが理解されよう。上記実施形態の組み合わせ、及び本明細書で特に説明されていない他の実施形態は、上記説明をレビューした当業者にとって明らかであろう。本開示の１つ以上の実施形態の範囲は、上記構造及び方法が使用される他の用途を含む。したがって、本開示の１つ以上の実施形態の範囲は、添付の特許請求の範囲の権利が与えられる均等物の全範囲とともに、添付の特許請求の範囲を参照して判定されるべきである。
【００８４】
前述の発明を実施するための形態では、開示を合理化する目的でいくつかの特徴が単一の実施形態において共にグループ化される。この開示の方法は、本開示の開示された実施形態が各請求項に明確に列挙されたものより多くの特徴を使用する必要があるという意図を反映するものとして解釈されるものではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示された実施形態の全ての特徴に満たないものに存在する。したがって、以下の特許請求の範囲は、本明細書により、発明を実施するための形態に取り入れられ、各請求の範囲が別個の実施形態として自立する。
【図１】
2021526260.tif 000013
【図２】
2021526260.tif 000014
【図３Ａ】
2021526260.tif 000015
【図３Ｂ】
2021526260.tif 000016
【図３Ｃ】
2021526260.tif 000017
【図４】
2021526260.tif 000018
【手続補正書】
【提出日】令和3年1月13日(2021.1.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性メモリ（ＮＶＭ）デバイスに結合されたコントローラであって、前記コントローラは、
前記ＮＶＭデバイスの第１の論理対物理（Ｌ２Ｐ）データ構造内に論理ブロックアドレス（ＬＢＡ）を記憶させることと、
前記ＮＶＭデバイスの第２のＬ２Ｐデータ構造内に物理ブロックアドレス（ＰＢＡ）を記憶させることであって、前記第１のＬ２Ｐデータ構造と前記第２のＬ２Ｐデータ構造とが、そのＬ２Ｐデータ構造と関連付けられた同じサイズを有する、前記ＰＢＡを記憶させることと
を行うように構成されている、前記コントローラを備える、装置。
【請求項２】
前記コントローラは更に、第１のハッシュ関数の実行に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造へ書き込むように構成されている、請求項１に記載の装置。
【請求項３】
前記コントローラは更に、
第１のハッシュ関数の実行に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の第１の位置へ書き込むことと、
前記第１のハッシュ関数の実行が衝突を発生させるとの判定に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の第２の位置へ書き込むことと
を行うように構成されており、前記コントローラは更に、
前記第１のＬ２Ｐデータ構造の前記第１の位置が、前記第１の位置に書き込まれる前記ＬＢＡとは異なるＬＢＡを含むとの判定に少なくとも部分的に基づいて、前記第１のハッシュ関数の実行が衝突を発生させるという判定をもたらすように構成されている、請求項１に記載の装置。
【請求項４】
前記コントローラは更に、
第１のハッシュ関数の実行に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の第１の位置へ書き込むことと、
前記第１のハッシュ関数の実行が衝突を発生させるとの判定に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の第２の位置へ書き込むことと
を行うように構成されており、前記コントローラは更に、
第２のハッシュ関数の実行に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の前記第２の位置へ書き込むように構成されている、請求項１に記載の装置。
【請求項５】
前記コントローラは更に、
第１のハッシュ関数の実行に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の第１の位置から読み出すことと、
前記第１のハッシュ関数の実行が衝突を発生させるとの判定に少なくとも部分的に基づいて、前記ＬＢＡを前記第１のＬ２Ｐデータ構造の第２の位置から読み出すことであって、前記第１のＬ２Ｐデータ構造の前記第２の位置が、第２のハッシュ関数の実行に少なくとも部分的に基づいて判定される、前記ＬＢＡを前記第２の位置から読み出すことと
を行うように構成されている、請求項１〜２のいずれか１項に記載の装置。
【請求項６】
前記第１のＬ２Ｐデータ構造の特定の位置が、前記第２のＬ２Ｐデータ構造の対応する特定の位置に対応する、請求項１〜２のいずれか１項に記載の装置。
【請求項７】
前記コントローラは更に、前記第１のＬ２Ｐデータ構造を半順序とするように構成されている、請求項１〜２のいずれか１項に記載の装置。
【請求項８】
第１のメモリ部分と第２のメモリ部分とを含む不揮発性メモリ（ＮＶＭ）デバイスと、
前記ＮＶＭデバイスに結合されたコントローラであって、前記コントローラは、
第１のハッシュ関数を実行させて、論理ブロックアドレス（ＬＢＡ）が格納される前記第１のメモリ部分における第１の論理対物理（Ｌ２Ｐ）アドレスデータ構造内の第１の場所を判定することと、
前記第１の場所が第２のＬＢＡを含むとの判定を行うことと、
第２のハッシュ関数を実行させて、前記ＬＢＡが格納される前記第１のメモリ部分における前記第１のＬ２Ｐアドレスデータ構造内の第２の場所を判定することと
を行うように構成されている、前記コントローラと
を備える、装置。
【請求項９】
前記コントローラは更に、前記第１のＬＢＡに対応する物理ブロックアドレスが、前記第２のメモリ部分における第２のＬ２Ｐデータ構造内に格納されるように構成されており、前記第１のハッシュ関数が、ｈ（ｌ）＝６ｌ（ｍｏｄ  ｘ）で与えられる、請求項８に記載の装置であって、ｌはＬＢＡであり、前記第２のハッシュ関数は、ｓ（ｌ）＝３（ｈ（ｌ）＋１）（ｍｏｄ  ｘ）で与えられ、式中のｘはゼロ以外の整数である、前記装置。
【請求項１０】
2021526260.tif 000019
であり、
ｓ（ｌ）がｍに対して互いに素であり、ｓ（ｌ）がｍに対して互いに素であることが、ｓ（ｌ）及びｍの両方を割り切る１よりも大きな整数を持たないｓ（ｌ）及びｍを構成する、請求項８に記載の装置。
【請求項１１】
不揮発性メモリ（ＮＶＭ）デバイスと、
フラッシュメモリデバイスと、
前記ＮＶＭデバイス及び前記フラッシュメモリデバイスに結合されたコントローラであって、前記コントローラは、
第１のハッシュ関数を実行させて、論理ブロックアドレス（ＬＢＡ）が格納される前記ＮＶＭデバイスにおける第１のデータ構造内の第１の場所を判定することと、
前記ＬＢＡが前記第１のデータ構造内の前記第１の場所に格納されているとの前記判定に応答して、前記ＮＶＭデバイスにおける第２のデータ構造内の対応する第１の場所に物理ブロックアドレスを設定することと、
第２のハッシュ関数を実行させて、前記ＬＢＡが格納される前記第１のデータ構造内の第２の場所を判定することと、
前記ＬＢＡが前記第１のデータ構造内の前記第２の場所に格納されているとの前記判定に応答して、前記ＮＶＭデバイスにおける前記第２のデータ構造内の対応する第２の場所に前記物理ブロックアドレスを設定することと
を行うように構成されている、前記コントローラと
を備える、装置。
【請求項１２】
前記第２のデータ構造内に格納されている物理ブロックアドレスの数量が、前記第１のデータ構造内に格納されているＬＢＡの数量よりも多い、請求項１１に記載の装置。
【請求項１３】
前記コントローラは、前記第１のハッシュ関数及び前記第２のハッシュ関数を実行するための処理の一部として、前記第１のハッシュ関数のモジュロと、前記第２のハッシュ関数のモジュロとを判定するように構成されている、請求項１１〜１２のいずれか１項に記載の装置。
【請求項１４】
第１の論理ブロックアドレス（ＬＢＡ）を書き込むために、不揮発性メモリ（ＮＶＭ）デバイスに格納された第１の論理対物理（Ｌ２Ｐ）データ構造内の第１の場所を判定することと、
前記第１の場所が第２のＬＢＡを含むことを判定することと、
前記第１の場所が前記第２のＬＢＡを含むとの前記判定に応答して、前記第１のＬ２Ｐデータ構造内の第２の場所に前記第１のＬＢＡを書き込むことと、
前記ＮＶＭデバイスに格納された第２のＬ２Ｐデータ構造内の場所に、前記第１のＬＢＡに対応する物理ブロックアドレス（ＰＢＡ）を書き込むことであって、前記第１のＬ２Ｐデータ構造内の前記第２の場所が、前記第２のＬ２Ｐデータ構造内の前記場所に対応する、前記ＰＢＡを書き込むことと
を含む、方法。
【請求項１５】
前記第１のＬ２Ｐデータ構造と前記第２のＬ２Ｐデータ構造とが、そのＬ２Ｐデータ構造と関連付けられた同じ数量の行及び同じ数量の列を有する、請求項１４に記載の方法。
【請求項１６】
前記第１のＬ２Ｐデータ構造内の前記第１の場所が、前記第１のＬＢＡに対応する第１のハッシュ関数を実行することによって判定され、前記第１のＬ２Ｐデータ構造内の前記第２の場所が、前記第１のＬＢＡに対応する第２のハッシュ関数を実行して、前記第１のＬ２Ｐデータ構造の前記第１の場所を、前記第１のＬ２Ｐデータ構造の前記第２の場所にインクリメントすることによって判定される、請求項１４〜１５のいずれか１項に記載の方法。
【国際調査報告】
2021526260.tif 000020
2021526260.tif 000021