(57)【要約】      （修正有）【課題】ＮＶＭｅコントローラの名前空間を管理する装置及び方法を提供する。【解決手段】ＮＶＭ２０６は、１つ以上の名前空間内に、マップユニット（ＭＵ）をアドレス指定可能なデータブロックとして記憶するように配列されている。フォワードマップ２１４は、各ＭＵをＮＶＭ内の物理的位置と相関させるマップユニットアドレス（ＭＵＡ）エントリを設けている。ＭＵＡエントリは、各々の名前空間のための、隣同士に連続した範囲にグループ化される。ベースＭＵＡアレイは、フォワードマップ内における、各々の名前空間への最初のＭＵＡエントリのアドレスを識別する。新規の名前空間の追加は、ＭＵＡエントリの新規範囲をフォワードマップの、最後のＭＵＡエントリの直後に付加することと、新規の名前空間への最初のＭＵＡエントリの、フォワードマップ内でのアドレスを識別するために、ベースＭＵＡアレイに新規エントリを追加することによって為される。【選択図】図７
2018206384.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
所定のサイズのユーザデータのアドレス指定可能なブロックを備えたマップユニット（ＭＵ）を、不揮発性メモリ（ＮＶＭ）の少なくとも１つの名前空間内に記憶するように構成された不揮発性メモリ（ＮＶＭ）と、
ホストデバイスと前記ＮＶＭの間でＭＵを転送するために、少なくとも１つのペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）ポートを介して、前記ホストデバイスとインターフェース通信するように構成された不揮発性メモリエクスプレス（ＮＶＭｅ）コントローラ回路と、
前記ＭＵの各々を前記ＭＵが記憶されている前記ＮＶＭ内の物理的位置と相関させるマップユニットアドレス（ＭＵＡ）エントリを備えた、ローカルメモリ内にデータ構造として記憶されたフォワードマップであって、前記ＭＵＡエントリは、フォワードテーブル内で最下アドレスから最上アドレスまで連続的に配列され、又、前記ＮＶＭ内の前記少なくとも１つの名前空間の各々のための、すぐ隣どうしに連続した範囲にグループ化される、フォワードマップと、
前記ＮＶＭ内の前記少なくとも１つの名前空間の各々への最初のＭＵＡエントリの前記アドレスを前記フォワードマップ内で識別するように構成された、ローカルメモリ内にデータ構造として記憶されているベースＭＵＡアレイと、
メディア管理層（ＭＭＬ）コントローラ回路であって、前記フォワードマップ内で、過去の最も新しく追加された名前空間の前回のＭＵＡエントリのすぐ後に続けて、前記ＭＵＡエントリの新規範囲を前記フォワードマップに付加することにより、又、前記フォワードマップ内で、前記新規の名前空間の前記最初のＭＵＡエントリの前記アドレスを識別するために、新規エントリを前記ベースＭＵＡアレイに追加することにより、新規の名前空間を前記ＮＶＭに追加するように構成されている、メディア管理層（ＭＭＬ）コントローラ回路とを備える、装置。
【請求項２】
前記ＮＶＭ内の第一名前空間は、前記フォワードマップ内の前記最下アドレスに対応した最初のＭＵＡエントリと、前記フォワードマップ内の第一中間アドレスにある最後のＭＵＡエントリとを有し、前記ＮＶＭ内の第二名前空間は、前記フォワードマップ内の前記第一中間アドレスのすぐ隣の第二中間アドレスにある最初のＭＵＡエントリを有する、請求項１に記載の装置。
【請求項３】
前記ＭＭＬコントローラ回路は、次に、前記過去の最も新しく追加された名前空間を前記ＮＶＭから削除するように更に構成されており、前記削除は、前記フォワードマップ内の、前記過去の最も新しく追加された名前空間の前記最初のＭＵＡエントリの第一中間アドレスを識別した、前記ベースＭＵＡアレイ内の前記対応するエントリを除去することと、前記新規の名前空間の前記最初のＭＵＡエントリが前記フォワードマップ内の前記第一中間アドレスに対応するように、前記ＭＵＡエントリの前記関連範囲をシフトダウンすることと、前記新規の名前空間に関連した前記エントリが前記フォワードマップ内の前記第一中間アドレスを識別できるようにするべく、前記ベースＭＵＡアレイを修正することとによって為される、請求項１に記載の装置。
【請求項４】
前記ＭＭＬコントローラ回路は、前記ＮＶＭｅコントローラ回路から受信した保留中のホストコマンドを利用するように更に構成されており、前記保留中のホストコマンドの使用は、前記保留中のホストコマンドに関連した所定の名前空間を識別することと、前記所定の名前空間への前記最初のＭＵＡエントリの、前記フォワードマップ内での前記アドレスを検索するため、又、前記保留中のホストコマンドに関連した論理アドレスに応答する前記所定の名前空間への前記最初のＭＵＡエントリから多数のエントリを上方にインクリメントすることで、前記保留中のホストコマンドに関連した前記フォワードマップ内の前記関連するＭＵＡエントリを検索するために、前記ベースＭＵＡアレイにアクセスすることと、前記保留中のホストコマンドの前記使用を達成するべく、前記ＮＶＭ内の、データが書き込まれる、又はデータが取得される物理的位置を識別するために、前記関連するＭＵＡエントリを使用することとによって為される、請求項１に記載の装置。
【請求項５】
前記ローカルメモリにデータ構造として記憶された変換テーブルを更に備え、前記ＭＭＬコントローラ回路は、前記ＮＶＭｅコントローラから受信したＭＵを、前記ＭＵに関連した前記ＮＶＭ内の所定の名前空間の名前空間ＩＤ値に付加する、請求項１に記載の装置。
【請求項６】
前記ＭＭＬコントローラ回路は、前記ＭＵに関連する論理アドレスを備える前記ＮＶＭｅコントローラから受信した前記ＭＵを更に付加する、請求項５に記載の装置。
【請求項７】
前記ＭＭＬコントローラ回路は、前記変換テーブルからの前記名前空間ＩＤに応答する前記ベースＭＵＡアレイにアクセスし、これを、前記名前空間ＩＤに関連した前記ベースＭＵＡエントリから、前記変換テーブルからの前記論理アドレスに対応した距離だけインクリメントする、請求項６に記載の装置。
【請求項８】
前記ＮＶＭｅコントローラ回路と前記ＭＭＬコントローラ回路は、少なくとも１つのプログラム可能なプロセッサと、プロセッサメモリに記憶されている関連のプログラミングを用いて実現され、前記関連の少なくとも１つのプログラム可能なプロセッサによって実行される、請求項１に記載の装置。
【請求項９】
前記ＭＵの各々は、ホストデバイスからの４０９６バイト（Ｂ）のユーザデータを記憶するように構成されており、前記ＭＭＬコントローラ回路によって前記ＭＵに付加された別個の論理アドレスを各々有する、前記ホストデバイスからの複数のデータブロックで形成されている、請求項１に記載の装置。
【請求項１０】
ソリッド・ステート・ドライブ（ＳＳＤ）として特徴付けられ、前記ＮＶＭはＮＡＮＤフラッシュメモリを備える、請求項１に記載の装置。
【請求項１１】
方法であって、
不揮発性メモリ（ＮＶＭ）を、ホストデバイスからの所定サイズのユーザデータのアドレス指定可能なブロックを備えたマップユニット（ＭＵ）を記憶するための不揮発性メモリエクスプレス（ＮＶＭｅ）名前空間として各々構成された１つ以上の名前空間内に配列するステップと、
前記ＭＵの各々を前記ＭＵが記憶されている前記ＮＶＭ内の物理的位置と相関させるマップユニットアドレス（ＭＵＡ）エントリを備えた、ローカルメモリ内にデータ構造として記憶されたフォワードマップを記憶するステップであって、前記ＭＵＡエントリは、フォワードテーブル内で最下アドレスから最上アドレスまで連続的に配列され、又、前記ＮＶＭ内の前記少なくとも１つの名前空間の各々のための、すぐ隣どうしに連続した範囲にグループ化される、フォワードマップを記憶するステップと、
前記ＮＶＭ内の前記１つ以上の名前空間の各々への前記最初のＭＵＡエントリの、前記フォワードマップ内における前記アドレスを識別する前記ローカルメモリ内のデータ構造としてのベースＭＵＡアレイを生成するステップと、
前記ＭＵＡエントリの新規範囲を、前記フォワードマップの、前記フォワードマップ内で前記過去の最も新しく追加された名前空間の前記前回のＭＵＡエントリのすぐ後に付加することと、前記フォワードマップ内の、前記新規の名前空間への前記最初のＭＵＡエントリの前記アドレスを識別するために、前記ベースＭＵＡアレイに新規エントリを追加することとによって、新規の名前空間を前記ＮＶＭに追加するステップとを備える、方法。
【請求項１２】
前記フォワードマップ及び前記ベースＭＵＡアレイを使用して、前記ホストデバイスと前記新規の名前空間ＮＶＭとの間で所定のＭＵを転送する次のステップを更に備える、請求項１１に記載の方法。
【請求項１３】
前記追加するステップは、ＮＶＭｅコントローラ回路より受信したコマンドに応答する前記ＮＶＭによってデータ転送を指示するように構成されたメディア管理層（ＭＭＬ）コントローラ回路によって実行される、請求項１１に記載の方法。
【請求項１４】
前記ＮＶＭｅコントローラ回路と前記ＭＭＬコントローラ回路は、少なくとも１つのプログラム可能なプロセッサと、プロセッサメモリに記憶されている関連のプログラミングとを用いて実現され、前記関連の少なくとも１つのプログラム可能なプロセッサによって実行される、請求項１３に記載の方法。
【請求項１５】
前記ＮＶＭ内の第一名前空間は、前記フォワードマップ内の前記最下のアドレスに対応した最初のＭＵＡエントリと、前記フォワードマップ内の第一中間アドレスにおける最後のＭＵＡエントリとを有し、前記ＮＶＭ内の第二名前空間は、前記フォワードマップ内の前記第一中間アドレスのすぐ隣の第二の中間アドレスにおける最初のＭＵＡエントリを有する、請求項１１に記載の方法。
【請求項１６】
前記ＮＶＭから前記過去の最も新しく追加された名前空間を削除する後続のステップを更に備え、前記後続のステップは、
前記フォワードマップ内で、前記過去の最も新しく追加された名前空間の前記最初のＭＵＡエントリの第一中間アドレスを識別した、前記ベースＭＵＡアレイ内の前記対応するアレイを除去することと、
前記新規の名前空間への前記最初のＭＵＡエントリが前記フォワードマップ内の前記第一中間アドレスに対応するように、前記ＭＵＡエントリの前記関連の範囲をシフトダウンすることと、
前記新規の名前空間に関連した前記エントリが前記フォワードマップ内の前記第一中間アドレスを識別するように、前記ベースＭＵＡアレイを修正することとによって為される、請求項１１に記載の方法。
【請求項１７】
前記ホストデバイスから受信した保留中のホストコマンドを使用する後続のステップを更に備え、前記後続のステップは、
前記保留中のホストコマンドに関連した所定の名前空間を識別することと、
前記フォワードマップ内での、前記所定の名前空間への前記最初のＭＵＡエントリの前記アドレスを検索するために、前記ベースＭＵＡアレイにアクセスすることと、
多数のエントリを、前記保留中のホストコマンドに関連した論理アドレスに応答する前記所定の名前空間への前記最初のＭＵＡエントリから上方へインクリメントすることで、前記保留中のホストコマンドに関連した前記フォワードマップ内の前記関連するＭＵＡエントリを検索することと、
前記保留中のホストコマンドの前記使用を達成するために、データが書き込まれる、又は取得される前記ＮＶＭの内の物理的位置を識別するために、前記関連のＭＵＡエントリを使用することとによって為される、請求項１１に記載の方法。
【請求項１８】
記憶するべく受信した所定のＭＵを、前記ＭＵに関連した前記ＮＶＭ内の所定の名前空間のための名前空間ＩＤ値を持つ前記ＮＶＭに付加するために、前記ローカルメモリ内にデータ構造として記憶されている変換テーブルを使用することを更に備える、請求項１１に記載の方法。
【請求項１９】
前記ＭＵに関連する論理アドレスを備える前記所定のＭＵを付加するために、前記変換テーブルを使用することを更に備える、請求項１８に記載の方法。
【請求項２０】
前記フォワードマップ内の前記所定の名前空間への前記ベースＭＵＡエントリを検索するために、
前記変換テーブルからの前記名前空間ＩＤに応答する前記ベースＭＵＡアレイにアクセスすることと、
所定のマップの前記ベースＭＵＡエントリから、前記変換テーブルからの前記論理アドレスに対応した多数のＭＵＡエントリの分だけインクリメントすることとを更に備える、請求項１９に記載の方法。
【発明の詳細な説明】
【発明の概要】
【課題を解決するための手段】
【０００１】
本発明の様々な実施形態は、一般にデータ・ストレージ・デバイス内のデータ管理に関する。
【０００２】
いくつかの実施形態では、不揮発性メモリ（ＮＶＭ）は、マップユニット（ＭＵ）をアドレス指定可能なデータブロックとして１つ以上の名前空間内に記憶するようにアレンジされている。フォワードマップは、ＭＵの各々をＮＶＭ内の物理的位置と相関させる一連のマップユニットアドレス（ＭＵＡ）エントリを有する。ＭＵＡエントリは、各名前空間のための、すぐ隣どうしに連続した範囲内にグループ化される。ベースＭＵＡアレイは、フォワードマップ内の、各名前空間の最初のＭＵＡエントリのアドレスを識別する。新規の名前空間を追加することができる。これは、最後のＭＵＡエントリのすぐ後に、ＭＵＡエントリの新規範囲をフォワードマップに付加することによって、また、フォワードマップ内で新規の名前空間の最初のＭＵＡエントリのアドレスを識別するために、ベースＭＵＡアレイに新規エントリを追加することによって行う。
【０００３】
本開示内容の様々な実施形態を特徴付けるこれらの及び他の機能及び利点は、以降の詳細な説明及び添付の図面を考慮することで理解可能になる。
【図面の簡単な説明】
【０００４】
【図１】本開示内容の様々な実施形態による一例のデータ・ストレージ・デバイスの機能ブロック表現を提供する。
【図２】いくつかの実施形態によるソリッド・ステート・ドライブ（ＳＳＤ）として構成される図１のデータ・ストレージ・デバイスの形態を示す。
【図３】いくつかの実施形態における、図２のＳＳＤによってデータを記憶する一例の方式を示す。
【図４】いくつかの実施形態における、ＳＳＤで使用されるマルチレベルのマップ構造の一例のフォーマットを示す。
【図５】マップ構造の第二レベルマップ（ＳＬＭ）の一例のフォーマットを示す。
【図６】マップ構造の第一レベルマップ（ＦＬＭ）の一例のフォーマットを示す。
【図７】いくつかの実施形態における、ＳＳＤの名前空間を管理するように構成されたＮＶＭｅコントローラ及びメディア管理層（ＭＭＬ）コントローラを示す。
【図８】名前空間ＩＤと名前空間ＨＢＬＡデータを管理するように構成されたＨＢＬＡ領域の一例のフォーマットを示す。
【図９】図８のデータを符号化するために用いられる変換テーブルの一例のフォーマットを示す。
【図１０】いくつかの実施形態における、ＳＳＤのフォワードマップにアクセスするために用いられるデータ構造としてのマップユニットアドレス（ＭＵＡ）アレイを示す。
【図１１】フォワードマップへの新規の名前空間の追加を示す。
【図１２】フォワードマップからの名前空間の削除を示す。
【図１３】新規の名前空間ルーチンを作成するフローチャートである。
【図１４】既存の名前空間ルーチンを削除するフローチャートである。
【図１５】本開示の様々な実施形態に従って実施されるステップを示すデータ処理ルーチンのフローチャートである。
【発明を実施するための形態】
【０００５】
本開示は、概してデータ記憶に関し、具体的には、データ記憶デバイスにて名前空間を管理する方法及び装置に関する。
【０００６】
不揮発性メモリエクスプレス（ＮＶＭｅ）仕様は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）シリアルバス構成を利用するデータ記憶システムにおいて高速アクセスを管理するための、近年導入されたインターフェース規格である。ＮＶＭｅは、ローカルの不揮発性メモリ（ＮＶＭ）への直接入出力（Ｉ／Ｏ）アクセスを提供することにより、企業及びクライアントのソリッド・ステート・ドライブ（ＳＳＤ）環境向けに特に最適化される。ＮＶＭｅは、ディープ・コマンド・キュー、簡素化したコマンド復号化及び処理、頑強なエラー報告及び取り扱いをサポートすることにより、読み出し動作と書き込み動作の遅延を短縮する上で役立つ。
【０００７】
ＮＶＭｅ規格の１つの特徴は、ホストが記憶領域を別個の名前空間として指定する能力である。概して、名前空間は、所定数の、ブロックアクセス向けに初期化された記憶ブロックを有する、ＮＶＭ内のアドレス指定可能なドメインとして定義される。名前空間は、ＳＳＤの一部、ＳＳＤ全体を構成する、又は、複数のＳＳＤ若しくはその他のデータ記憶デバイスをスパンするマルチデバイスのメモリ空間を構成することができる。名前空間ＩＤ（ＮＳＩＤ）は、関連の名前空間（ＮＳ）のための、コントローラ毎の固有の識別子である。ホストは、名前空間、コントローラＩＤ、及び、ブロックの関連の論理アドレス（論理ブロックアドレス、ＬＢＡなど）を指定することにより、特定のＮＶＭにアクセスすることができる。
【０００８】
データ記憶デバイス（又は、こうしたデバイスのグループ）内の並列データ転送経路を拡張するように動作できる一方で、ＳＳＤ内又は他のデバイス内の利用可能なＮＶＭを複数の名前空間に細分化することは、コントローラがデータを検索するために用いる様々なマップ構造への更新を処理する上で多数の問題を呈する。これは、既存のデバイス構成に新規の名前空間を追加する場合、又は、既存のデバイス構成から既存の名前空間を削除する場合に、特に当てはまる。
【０００９】
したがって、本開示の様々な実施形態は、概して、ＮＶＭｅコントローラ環境においてマップデータを管理する装置及び方法に関する。以降で説明するように、いくつかの実施形態で、データは、所定サイズのアドレス指定可能なブロック又はマップユニット（ＭＵ）の形式で、不揮発性メモリ（ＮＶＭ）に記憶される。フォワードマップは、各ＭＵを、ＭＵが記憶されているＮＶＭ内の物理的位置と相関させるために、マップデータを提供する１つのデータ構造としてメモリ内に維持される。ＮＶＭは、ＮＶＭｅ仕様に従って、少なくとも１つの名前空間に分割される。
【００１０】
マップユニットアドレス（ＭＵＡ）アレイは、ＮＶＭ内の各名前空間について、フォワードマップ内の最初のブロックアドレスを識別するように構成されている。ＮＶＭに追加された新規の名前空間の各々について、新規エントリが、各々の新規名前空間が過去の最も新しく追加された名前空間の最後のエントリのすぐ後に続く形で、ＭＵＡアレイに供給される。
【００１１】
既存の名前空間を、ＭＵＡアレイからエントリを除去することによって削除し、更に、既存のポインタをフォワードマップに適宜シフトダウンする。こうすることで、フォワードマップが断片化することなく連続的に維持されるので、２次ルックアップテーブルが不要となり、その結果、名前空間をシステムに追加する、又はシステムから除去する場合のその他のシステム遅延が短縮される。
【００１２】
様々な実施形態のこれらの及びその他の特徴及び利点は、まず初めに、データ処理システム１００を提供する図１を再考することで理解できる。システム１００は、ホストデバイス１０２とデータ記憶デバイス１０４を含む。データ記憶デバイス１０４は、コントローラ１０６とメモリモジュール１０８を含む。コントローラは、メモリモジュール１０８内のＮＶＭストレージとの間における往復のデータ転送に、トップレベルの通信機能と制御機能を提供する。ホストデバイスとデータ記憶デバイスの間のデータ転送は、１つ以上のＰＣＩｅポートを介して提供される。
【００１３】
限定はされないが、この例では、データ記憶デバイス１０４は、図２で全体を説明するコントローラ構成１１０を設けたソリッド・ステート・ドライブ（ＳＳＤ）であると想定する。このコントローラ構成は、フロントエンドコントローラ１１２、コアコントローラ１１４、バックエンドコントローラ１１６を含む。フロントエンドコントローラ１１２はホストＩ／Ｆ機能を実行し、バックエンドコントローラ１１６はＮＶＭメモリとのデータ転送を指示し、コアコントローラ１１４はデバイスにトップレベルの制御を提供する。
【００１４】
各コントローラ１１２、１１４、１１６は、関連のプログラミング（例えば、ファームウェア「ＦＷ」）が適切なメモリ位置に実装された別々のプログラム可能なプロセッサ、並びに、データ管理及び転送機能を実行する様々なハードウェア素子を含んでいる。これは一実施形態の例示的なものにすぎない。他の実施形態において、単一のプログラム可能なプロセッサ（又は三［３］つより少ないプログラム可能なプロセッサ）を構成し、適切なメモリ位置の関連のＦＷを用いて、フロントエンド、コア及びバックエンド処理を各々実行することもできる。純粋にハードウェアベースのコントローラ構成を使用することも可能である。
【００１５】
メモリ１１８は、コントローラ１１０によりローカルメモリとして利用される様々な形式の揮発性及び不揮発性メモリ（例えば、ＳＲＡＭ、ＤＤＲ  ＤＲＡＭ、フラッシュなど）を表す。１つ以上のマップ構造１２０、マップデータ及び他の制御情報のための１つ以上のキャッシュ１２２、ホストデータのための１つ以上のデータバッファ１２４を含む、様々なデータ構成及びデータセットを、データ転送中にメモリによって記憶してよい。非プロセッサベースのハードウェア支援回路１２６は、必要に応じて、１つ以上のコントローラによって特定のメモリ管理タスクのオフローディングを可能にすることができる。
【００１６】
図３は、いくつかの実施形態で、ホストデータ（例えば、ユーザデータ）をＳＳＤ  ＮＶＭに記憶する一般的な方式の図式的概観を提供する。ホストデバイスが、セクタと呼ばれる固定サイズのデータブロック、又は論理ブロックアドレス（ＬＢＡ）１２８をＮＶＭに提供し、記憶させる。ＬＢＡ１２８は、５１２バイト（Ｂ）、１０２４Ｂ（１ＫＢ）、２０４８Ｂ（２ＫＢ）といった固定量のユーザデータ（セクタサイズ）を各々有する。
【００１７】
用語「ＬＢＡ」はいくらか不明瞭であることが理解される。即ち、用語「ＬＢＡ」は、異なる状況において、データブロック全体、ブロックのユーザデータ部分、及び／又はブロックの論理アドレスを意味するように用いられることが一般的である。説明を明瞭にする目的で、用語ＬＢＡはブロック（コンテンツ）を意味し、ＬＢＡ  ＩＤ、ＨＬＢＡ（ホストＬＢＡ）、又は名前空間ＨＬＢＡは、関連のブロックに関連付けされた論理アドレスを指すものとする。ＨＢＬＡ値は、データを転送するために、ホストによって様々なアクセスコマンドと共に供給される。典型的に、その範囲は最小値（例えば、ＨＢＬＡ  ０）から最大値（ＨＢＬＡ  Ｎ）である。
【００１８】
ＬＢＡ１２８は、時にアドレス指定可能なユニット（ＡＵ）とも呼ばれ、又、マップユニット（ＭＵ）１３０と呼ばれるより大型のデータブロックにグループ化され、ユーザデータの４０９６Ｂ（４ＫＢ）などのより大型の全体の固定セクタサイズを達成する。例えば、１ＫＢのＡＵサイズを用いることで、こうしたＡＵを４つ組み合わせて、４ＫＢのＭＵが形成される。いくつかの実施形態では、２つの５１２Ｂのセクタ（ＬＢＡ）を組み合わせて、１ＫＢの１つのＡＵにすることができ、次に、４つのＡＵを用いて４ＫＢのＭＵを形成することができる。ファクタは、ホストによって用いられる好適なブロックサイズと、ＳＳＤ１０４が維持する様々な制御情報の粒度レベルとを含む。所与のＭＵ内のＨＬＢＡは通常は継続的であるが、これは必須ではない。完全なＭＵが形成されるまで、ＬＢＡのデータコンテンツをローカルのデータバッファメモリ１２６内に累積させることができる。
【００１９】
ＭＵが形成されたら、転送操作を実行し、ＮＡＮＤフラッシュメモリの消去ブロック１３４内の所定のページ（行）１３２のようなＮＶＭにＭＵ１３０を転送する。ＭＵ１３０は、ＮＶＭ１０４に書き込まれる、又はＮＶＭ１０４から読み出されるメモリの最小単位を表す。所与のＭＵ１３０内の全てよりも少ないＬＢＡ／ＡＵに読み出し要求を提供する場合には、ＭＵが取得されて復号化され、ＳＳＤが、要求されたデータ部分をホストにフォワーディングする。
【００２０】
図３は、サイズが４ＫＢのＭＵの管理を示すが、これは一例にすぎず、限定ではない。これ以外のサイズを用いることもできる。更に大きいバイト数の制御データがＮＶＭ内のページ１３２に書き込まれたり、関連付けられる。１つの実施形態では、各ページは、ＬＤＰＣ（低密度パリティコード）値、論理値、名前空間情報などのような、４ＫＢのユーザデータに関連した様々なタイプの制御データを収容するための、１８７２Ｂのメモリグループを更に設けている。
【００２１】
図４は、ＮＶＭ内の様々なＭＵ１３０の位置を追跡するために使用できるマルチレベルマップ１４０を示す。マップ１４０は、第一レベルマップ１４２と第二レベルマップ１４４を設けたマルチレベルマップとして示されている。これは単に例証を目的としたものであって限定ではなく、シングルレベルマップ、又は２レベルよりも高いレベルのマルチレベルマップといった他のマップ構造も容易に使用できる。
【００２２】
図５に、第二レベルマップ（ＳＬＭ）１４４の配置の一例を示す。ＳＬＭ１４４は、ＮＶＭに常駐している、或いはＮＶＭに書き込むことができるユーザデータ（例えば、ＭＵ１３０）の個々のブロックを記述する多数の第二レベルマップエントリ１４５（ＳＬＭＥ又はエントリ）によって構成されている。特定の論理アドレスが使用されていない、又は使用しない場合でも、ＳＬＭ１４４は、ＮＶＭに収容できるブロックの論理アドレスの使用可能な範囲全体を記述する。
【００２３】
各エントリ１４５は、物理ブロックアドレスフィールド１４６、オフセットフィールド１４８、ステータスフィールド１５０を含む多数のフィールドを含んでいる。他のフォーマットを用いることもできる。関連のＨＢＬＡ値（又は、ＨＢＬＡ値から導出した値）は、エントリ１４５へのインデックスとして用いられる。
【００２４】
上で述べたように、典型的なフラッシュアレイは、特定の消去ブロック内のフラッシュメモリセルの行に沿って書き込まれたページとして配列されたＭＵを配列する。ＰＢＡは、アレイ、基板、ガベージコレクションユニット（ＧＣＵ）、消去ブロック、ページ等の用語で表現してもよい。オフセット値は、メモリの所定のページに沿っているビットオフセットであってもよい。ステータス値は、関連のブロックのステータス（例えば、有効、無効、空等）を示すことができる。
【００２５】
エントリ１４５の複数のグループを、ここでマップページ１５２と呼ぶより大型のデータセットに配列してもよい。各マップページには、いくつかの所定数のエントリ（変数Ａによって表される）が提供される。この場合、各マップページ１５２は合計１００個のエントリを有する。各ページには、２の累乗である数を含むエントリの他のグループを作成することもできる。
【００２６】
つまり、第二レベルマップ（ＳＬＭ）１４４が、システム内の全てのマップページ１５２の配列を構成するということである。ＳＳＤの全ストレージ容量を記述するために、いくつかの大きな総数のマップページＢが必要になることも想定される。各マップページは、関連のマップＩＤ値（ここではマップユニットアドレス（ＭＵＡ）とも呼ばれる）を有する。ＭＵＡの範囲は継続的に０〜Ｂである。ＳＬＭ１４４はＮＡＮＤフラッシュＮＶＭに記憶されるが、ＳＬＭは、フラッシュ内の集中した位置に属するのではなく、様々なダイの種々のセットにわたって書き込まれる傾向にあるようである。
【００２７】
図６に、図４の第一レベルマップ（ＦＬＭ）１４２の配列を示す。ＦＬＭ１４２によって、ＳＳＤはフラッシュに記憶された様々なマップページ１５２を検索することができる。この目的のため、ＦＬＭ１４２は第一レベルマップエントリ１６５（ＦＬＭＥ又はエントリ）によって構成されている。各ＦＬＭＥ１６５は、ＰＢＡフィールド１６６、オフセットフィールド１６８、ステータスフィールド１７０を有する。上で述べたマップページＩＤ（ＭＵＡ）は、関連のエントリを検索するために、ＦＬＭ１４０へのインデックスとして用いられる。
【００２８】
ＰＢＡフィールド１６６は、関連のマップページの位置を記述する。オフセット値は、前述のように、特定のページ又は他の位置に沿ってのビットオフセットとして動作する。ステータス値は、第二レベルマップ内と同じであってもよく、必要に応じて、マップページ自体のステータスに関係していてもよい。前述と同様、ＭＵＡは、関連のエントリを検索するために、データ構造へのインデックスとして用いられる。
【００２９】
第一レベルマップ（ＦＬＭ）１４２は、エントリ０からエントリＣまでの全てのエントリ１６２の配列を構成する。いくつかの場合、ＢはＣと等しいが、これらの値は異なっていてもよい。ＦＬＭ１４２にアクセスすることで、フラッシュメモリ１１８内の所望のマップページの位置のＭＵＡを検索できるようになる。フラッシュからの所望のマップページの取得では、そのマップページ内の第二レベルマップエントリを提供し、次に、関連の第二レベルエントリ内のＰＢＡ情報に基づいて、別個のＬＢＡを識別し取得できる。そのため、第一レベルマップ１４２を、所望のＭＵに関連付けられた関連のマップページの取得を可能にするフォワードマップとして考えることができる。
【００３０】
図７は、いくつかの実施形態によるＳＳＤ１０４の更なる態様を示す。ＮＶＭｅ（不揮発性メモリエクスプレス）コントローラ２０２は、メディア管理層（ＭＭＬ）コントローラ２０４と通信して、ＮＶＭ（この場合は、ＮＡＮＤフラッシュメモリ２０６と識別される）からデータを転送する。ＮＶＭｅコントローラ２０４は図２のコアコントローラ１１４の一部を形成し、ＭＭＬコントローラ２０４は図２のバックエンドコントローラ１１６の一部を形成するが、他の配列を用いることもできる。
【００３１】
ＮＶＭｅ規格に従い、ＮＡＮＤフラッシュ２０６のデータブロック（ＭＵ１３０）の記憶に利用できる部分は、多数の名前空間２０８に分割されている。このような２例の名前空間は、名前空間（ＮＳ）ＡとＮＳＢとして識別される。各々の名前空間はブロックストレージ容量の関連する総量を有する。ＰＣＩｅインターフェースプロトコルを介したデータ転送には、ＨＢＬＡ値を示すホストからの値、データの記憶先又は取得先である名前空間、ＮＶＭｅコントローラ２０２に関連した名前空間コントローラＩＤが含まれる。
【００３２】
名前空間２０８の効率的な管理を容易にするために、ＭＭＬコントローラ２０４は、ＨＢＬＡ−ＮＳ変換テーブル２１０、フォワードマップ２１２、及びＭＵＡアレイ２１４を含んだ、ローカルメモリ内の特定のデータ構造を利用する。次に、これらの各々について説明する。
【００３３】
名前空間管理スキームの一部として、ＮＡＮＤフラッシュ２０６に書き込まれた各ＡＵの制御データ部分を、このデータに関連した名前空間ＩＤ値を記憶するように修正する。この目的のため、図８に示すように、６４ビットのＨＢＬＡフィールド２２０を各ＡＵの１８７２Ｂのデータに組み込む。フィールド２２０は、０〜７の符号を付けた八（８）個の８ビット（１Ｂ）ブロック２２２で表されている。
【００３４】
６４ビットフィールドの下位の３２ビット（例えば、０〜３バイト）は、ホストより提供されたＨＬＢＡ値（名前空間ＨＢＬＡ）を構成している。上位の３２ビット（例えば、７バイト）のＭＳＢは、関連データの名前空間ＩＤに設定される。この実施形態では、残りの３バイト（例えば、４〜６バイト）が保留されているが、この３バイトは、システム内で、名前空間、ＨＬＢＡ、又は他の制御情報により多くのビット数が必要である等の場合に、適宜使用することができる。
【００３５】
ＨＢＬＡ−ＮＳ変換テーブル２１０を用い、ＭＭＬコントローラ２０４の指示によって、又は指示の下で、名前空間ＩＤを符号化してＨＢＬＡフィールド２２０にする。図８は、いくつかの実施形態におけるテーブル２１０の配列を示す。他の形式を適宜使用することもできる。
【００３６】
コントローラＨＬＢＡ値の名前空間ＩＤ及び名前空間ＨＬＢＡへの復号化は、ＭＭＬコントローラ２０４内で、又はＭＭＬコントローラ２０４によって、単独で実行される。これら２つの値は、以下で述べるように、所与のＭＵＡ（例えば、フォワードマップへのインデックス）を計算するために以降で使用される。この計算は、再割り当てのために有効なデータを再配置し、消去ブロックを消去するために、ホストの読み出し／書き込み動作の実行中、並びに、電源投入時のメタデータ回復中、ガベージコレクション動作中に実行される。
【００３７】
図１０は、図７のＭＵＡアレイ２１２とフォワードマップ２１４を、いくつかの実施形態に従ってより詳細に示す。同図では、図示のように三（３）つの名前空間にＮＳ１、ＮＳ２、及びＮＳ４を指定しているが、合計四（４）つの名前空間を収容することが可能である（ＮＳ１〜ＮＳ４）。フォワードマップ２１４はＭＵＡ０（最小ＭＵＡ値、又は一番下のアドレス）からＭＵＡＮ−１（最大ＭＵＡ値、又は一番上のアドレス）まで配列されている。ＮＳ１、ＮＳ２、及びＮＳ４のそれぞれの名前空間範囲は、各々２２４、２２６、２２８と識別される。ブロック２３０は、マップ内の未使用のＭＵＡ範囲を表す。名前空間範囲の各々は、名前空間の形成時に確立された異なるデータブロック（ＭＵ）総容量を有する。各々の名前空間のＨＬＢＡ値は、その名前空間のＨＢＬＡ０から最大ブロック値までであってよい。
【００３８】
図１０からわかるように、ＮＡＮＤフラッシュ内の名前空間は、フォワードマップ２１４内のＭＵＡの連続的且つ継続的な範囲によって記述されている。ＭＭＬコントローラ２０６は、ＭＵＡアレイ２１２を、対応する名前空間ＩＤ範囲のベースＭＵＡとして各々参照される名前空間ベースＭＵＡ値２３２のアレイとして定義する。各ベースＭＵＡはアレイ２１２へのインデックスであり、したがって、或る特定のＭＵＡを取得するためには、関連の名前空間についてベースＭＵＡを検索し、インクリメントするだけでよい。所与のＭＵが記憶されているＭＵＡは、名前空間ＨＬＢＡを、名前空間ＩＤに対応したベースＭＵＡアレイの要素内の値に追加することで取得される。例えば、ＮＳ４内の所定のＭＵＡを検索するためには、これを次式から求めることができる。
【００３９】
所定のＭＵＡ＝ＮＳ４第一ＭＵＡアドレス＋ＨＬＢＡ          （１）
名前空間を削除することで、フォワードマップ内でのＨＬＢＡの位置が変更し得るため、フッタエントリは絶対ＭＵＡ値を含まない。つまり、ＨＬＢＡ値とＭＵＡ値の間には、静的ではなく相対的な一致が維持される。そのため、関連のＭＵデータを参照するフォワードマップＭＵＡをシステムが常に確実に検索するためには、フッタエントリ（使用する場合）がフル６４ビットのＨＬＢＡフィールド２２０（図８）を含んでいる必要がある。
【００４０】
図１１は、図１０のＭＵＡアレイ２１２とフォワードマップ２１４に新規の名前空間２３４（ＮＳ３）を追加した状態を示す。新規の名前空間２３４が、次の利用可能なＭＵＡ（この場合は、第四名前空間２２８（ＮＳ４）内の最後のＭＵＡの次のＭＵＡ）の開始位置に追加されていることがわかる。次に、ＮＳ３のポインタが、第三名前空間２３４の第一ＭＵＡアドレスを識別する。
【００４１】
図１２は、図１２のＭＵＡアレイ２１２とフォワードマップ２１４で、第一名前空間２２４（ＮＳ１）が削除された状態を示す。第二名前空間２２６（ＮＳ２）は上述と同様であるが、マップ２１４内で連続性を維持し、断片化を防止するために、第四名前空間２２８（ＮＳ４）と第三名前空間２３４（ＮＳ３）がそれぞれシフトダウンされている。ＮＳ１のステータスは無効に設定されている。
【００４２】
こうすることで、ＮＳ４の最初のＭＵＡエントリが、（削除された）ＮＳ１の最初のＭＵＡエントリによって占有されていた中間アドレスと対応するようにシフトダウンされる。これで、ＮＳ４の対応するベースＭＵＡエントリ（ポインタ）２３２が、この中間アドレス（例えば、以前にＮＳ１の第一エントリによって占有されていたエントリ）を指すようになった。ポインタを、物理メモリ内のマップページの位置を指し続けるように調整する。
【００４３】
この方式で複数の名前空間をサポートするためには、表Ｉで例証されるように、ＮＶＭｅコマンドセットに変化する多数のインターフェースが必要な場合がある。
【００４４】
【表１】
2018206384.tif 000003
【００４５】
ＮＶＭｅコントローラ２０２は、アクティブでない又は付加されていない名前空間について、ＭＭＬコントローラ２０４への入出力コマンドをブロックする。ＮＶＭｅコントローラは、これらのコマンドに即座にエラーを戻すので、ＭＭＬコントローラがホストの要求を見ることはない。ＮＶＭｅコントローラ２０２は、名前空間のアタッチとデタッチの両方を実施する名前空間アタッチ（Namespace Attachment）コマンドのサポートも実施する。ＭＭＬコントローラは所与のポートから名前空間へのアクセスを可能にするだけなので、ＭＭＬコントローラ２０４がこれらのコマンドを見ることはない。
【００４６】
ＳＳＤ１０４の最初の初期化時には、第一名前空間（ＮＳ１）のみが定義され、この名前空間がＮＶＭ（ＮＡＮＤフラッシュ２０６）のデータ容量全体に拡張する。ＥＢファイル内でベースＭＵＡアレイ２１２が他のメジャーなＭＭＬテーブルと共に生成され、又、名前空間のあらゆる作成又は削除に伴って、ＥＢファイル保存操作がトリガされる。ＭＭＬコントローラ２０４は、後にＮＶＭｅコントローラ２０２から送られる名前空間作成コマンドと名前空間削除コマンドのためにハンドラが必要であることを理解されたい。
【００４７】
図１３は、新規の名前空間作成ルーチン３００のためのフローチャートを示す。このフローチャートは、既存のＮＶＭに新規の名前空間を追加するために実施されるステップの全体を例証する。新規の名前空間の要求はホストレベルで始まると想定されるが、これは必須ではない。
【００４８】
ステップ３０２で新規の名前空間の特性を定義する。この特性には、新規の名前空間に含めるブロックの総数（例えば、サイズ）が含まれる。ステップ３０４で、ベースＭＵＡアレイ２１２を、新規に追加された名前空間を反映するように、並びに、ポインタを、フォワードマップ２１４内の次の利用可能なＭＵＡを指すように更新する。ステップ３０６で、フォワードマップのフルコピーをＮＶＭに保存し、ステップ３０８でルーチンが終了する。
【００４９】
この方法では、新規の名前空間の作成に伴い、概して以下の操作を順番に行う必要がある。即ち、次の利用可能なＭＵＡがフォワードマップ上にある状態で、作成中の名前空間のためのベースＭＵＡアレイ２１２要素を更新し、次に、フォワードマップ／ＥＢファイルテーブルの保存をトリガする。
【００５０】
図１４は、既存の名前空間削除ルーチン３２０のフローチャートを示す。先行と同様に、名前空間削除の要求はホストレベルから始まるが、これは必須ではない。
【００５１】
ステップ３２２で、ローカルメモリに常駐する全ての既存のＬＢＡをトリムする、又は、名前空間を削除する前にＮＶＭに書き込まれるように処理する。次に、ステップ３２４で、削除した名前空間よりも上の全てのフォワード・マップ・エントリを、図１２に関連して先述したとおりにシフトダウンする。ステップ３２６で、使用されなくなった全てのエントリのフォワード・マップ・エントリ状態を非管理ステータスに設定する。
【００５２】
ステップ３２８で、ベースＭＵＡアレイ２１２を、削除された名前空間を無効として示すように更新する。又、適宜、新規のベース値を、フォワードマップ内の新規の開始位置を指すように更新する。最後に、ステップ３３０でマップのフルコピーを保存し、ステップ３３２でルーチンが終了する。
【００５３】
この方法では、既存の名前空間の削除に伴い、概して以下の操作を順番に行う必要がある。即ち、名前空間内の削除対象の全てのコントローラＬＢＡをトリムする、ＤＭＡ回路（図２のハードウェア支援マネージャ１２０など）を使用して、削除された名前空間よりも上の名前空間内の全てのフォワード・マップ・エントリを、削除された名前空間のベースＭＵＡにまでシフトダウンする、名前空間の削除により使用されなくなった全てのフォワード・マップ・エントリのフォワード・マップ・エントリ状態をアンマップ（マップされていない）に設定する、削除した名前空間のエントリを無効値に設定し、シフトさせた全ての名前空間のエントリをそれぞれの新規の位置に設定することにより、ベースＭＵＡアレイ２１２を更新する、及びフォワードマップ／ＥＢファイルテーブル全体の保存をトリガする。
【００５４】
名前空間ＨＬＢＡに作用する、又は名前空間ＨＬＢＡの範囲に作用するＮＶＭｅコマンドは、ＭＭＬコントローラ２０６によってＭＵＡ値に変換したＨＬＢＡを更に有する必要がある。このようなコマンドには、初期化、トリム、割り当て取り消し、ゼロ書き込み、データセット管理が含まれる。初期化コマンドの場合、ターゲットの名前空間内のＨＬＢＡのみが割り当て取り消しされる。ＮＶＭｅコントローラ２０２が全ての名前空間を初期化するように要求すると、ＭＭＬコントローラ２０６が、全ての定義された名前空間をループスルーすることによってこれを行う。
【００５５】
図１５は、データ処理ルーチン３５０のフローチャートであり、概して、図７、図１０〜図１２に関連して先述したように、ＮＶＭが複数の名前空間を有する状況で、ＮＶＭ２０６とホストデバイス１０２との間でデータ転送を行うために、ＳＳＤ１０４によって実行されるステップを示している。他のシーケンスを用いることもできる。
【００５６】
ステップ３５２で、ＰＣＩｅポートを介してホストデバイス１０２からホスト・アクセス・コマンドを受信する。ホスト・アクセス・コマンドは、非限定的にデータ読み出しコマンドなどである。ステップ３５４で、フロントエンドコントローラ１１２による最初の処理の後に、ＭＶＭｅコントローラ２０２は、関連するデータに関連した１つ以上の所定のマップページについての検索コマンドを発行するように動作できる。
【００５７】
ステップ３５６で、このコマンドが、名前空間ＩＤとＨＬＢＡ要素を識別するＭＭＬコントローラ２０６にフォワーディングされる。ステップ３５８で、これらの要素をベースＭＵＡアレイ２１２と共に使用して、フォワードマップ内の所定のＭＵＡを検索する。ステップ３６０で、取得したマップページは、物理メモリ（例えば、ページ１３２）内のデータを検索するために使用され、又、コマンドは、要求されたデータをリードバックする、処理する、ホストに戻すこと等によって利用され、その後、ステップ３６２でルーチンが終了する。
【００５８】
ここで述べた様々な実施形態の利点には、ＨＢＬＡ−ＮＳ名前空間テーブル２１０によって、メタデータをＮＶＭ内で、並びにそれぞれのコントローラによって取り扱われている最中に、一意化できることが含まれる。フォワードマップ２１４の連続性を維持することで、マップ内の断片化したセクションを捕えるための二次ルックアップ操作の必要性がなくなる。これは、フォワードマップが連続したＨＬＢＡ名前空間に分割されるためである。別の利点は、高速経路遅延の影響が大幅に回避されることである。遅延は、一般に、フォワードマップが除去された名前空間の分だけ圧縮される名前空間削除操作の最中にのみ生じる。いくつかのケースでは、この操作の最中にも、操作の影響を受けない名前空間（つまり、再計算されない図１２の第二名前空間（ＮＳ２）等）へのアクセスが許可される。
【００５９】
様々な実施形態にて、フラッシュメモリを実装したソリッドステートドライブ（ＳＳＤ）の環境を想定したが、種々のストレージメモリ形態や種々のデバイス数といった他の構成も簡単に使用することができる。
【００６０】
当然のことながら、本開示内容の様々な実施形態の多数の特徴及び利点が、本開示内容の様々な実施形態の構造及び機能の詳細と共に、上記の説明で述べられているとしても、この詳細な説明は例示的なものにすぎず、添付の請求項で表現される用語の広範囲の一般的な意味によって示される十分な範囲まで、本開示内容の原理内で、特に部品の構造及び配置の問題において、詳細に変更を行ってもよい。
【符号の説明】
【００６１】
１００  データ処理システム、１０２  ホストデバイス、１０４  データ記憶デバイス、１０６  コントローラ、１０８  メモリモジュール。
【図１】
2018206384.tif 000004
【図２】
2018206384.tif 000005
【図３】
2018206384.tif 000006
【図４】
2018206384.tif 000007
【図５】
2018206384.tif 000008
【図６】
2018206384.tif 000009
【図７】
2018206384.tif 000010
【図８】
2018206384.tif 000011
【図９】
2018206384.tif 000012
【図１０】
2018206384.tif 000013
【図１１】
2018206384.tif 000014
【図１２】
2018206384.tif 000015
【図１３】
2018206384.tif 000016
【図１４】
2018206384.tif 000017
【図１５】
2018206384.tif 000018
【外国語明細書】
2018206384000001.pdf