(57)【要約】【課題】データ・ストレージ・デバイス内のマップデータを管理する装置及び方法を提供する。【解決手段】プログラム可能なプロセッサは検索コマンドを発行し、マップ構造のリクエスト済みマップページを位置確認し、第一キャッシュに配置し、受け取ったホストコマンドにサービスを提供する。プログラム不可能なハードウェア回路は順テーブルを検索し、リクエスト済みマップページが第二キャッシュ内にあるかどうかを決定し、ある場合、マップページを第一キャッシュにロードする。ない場合、ハードウェア回路は、バック・エンド・プロセッサからリクエスト済みマップページをリクエストし、フラッシュメモリアレイ等の不揮発性メモリ（ＮＶＭ）からリクエスト済みマップページを取得する。ハードウェア回路は逆テーブルと第一キャッシュを検索し、ＮＶＭから取得したリクエスト済みマップページ用の第二キャッシュ内の候補位置を選択し、リクエスト済みマップページのコピーのストレージを候補位置に導く。【選択図】図１
2018163659.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
複数のマップページとして不揮発性メモリ（ＮＶＭ）に格納され、ユーザ・データ・ブロックの論理アドレスを、前記ユーザブロックが格納される前記ＮＶＭ内の物理アドレスと関連付けるマップ構造と、
前記ＮＶＭに格納された前記マップページの第一サブセットのコピーを格納する第一キャッシュと、
前記ＮＶＭに格納された前記マップページの第一サブセットのコピー、並びに前記マップページの第二サブセットのコピーを格納する第二キャッシュと、
関連のメモリに格納されたプログラミングを有し、実行されたとき、検索コマンドを発行し、受け取ったホストコマンドに関連してリクエスト済みマップページを位置確認し、前記第一キャッシュに配置するプログラム可能なプロセッサと、
プログラム不可能なハードウェア回路を備え、前記ハードウェア回路は、前記検索コマンドに応じて、前記ＮＶＭから前記リクエスト済みマップページの取得を導き、メモリ内の逆テーブルにアクセスし、前記第二キャッシュ内の所定の物理アドレスに格納された可能な置換マップページを識別し、前記可能な置換マップページは、前記第一キャッシュの前記マップページの第一サブセット内にはないという、前記ハードウェア回路による決定に応じて、前記第二キャッシュ内の前記所定の物理アドレスへの前記リクエスト済みマップページのコピーの書込みを導くように構成される、装置。
【請求項２】
メモリ内のデータ構造として前記第二キャッシュ内に物理アドレスの先入れ先出し（ＦＩＦＯ）リストを更に備え、前記プログラム不可能なハードウェア回路は、前記所定の物理アドレスとして前記ＦＩＦＯリストから第一物理アドレスを選択し、前記逆テーブルにインデックスを付け、前記第一物理アドレスに格納された第一マップページとして前記可能な置換マップページを識別し、前記第一キャッシュを検索し、前記第一マップページが前記第一キャッシュに格納されたマップページの前記第一サブセットのメンバではないことを決定するように更に構成される、請求項１に記載の装置。
【請求項３】
前記可能な置換マップページが、前記第一キャッシュに格納されたマップページの前記第一サブセットのメンバであるという前記プログラム不可能なハードウェア回路による決定に応じて、前記プログラム不可能なハードウェア回路は、前記所定の物理アドレスとして前記ＦＩＦＯリストから第二物理アドレスを選択し、前記逆テーブルにインデックスを付け、前記第二物理アドレスに格納された第二マップページとして前記可能な置換マップページを識別し、前記第一キャッシュを検索し、前記第二マップページが前記第一キャッシュに格納されたマップページの前記第一サブセットのメンバではないことを決定するように更に構成される、請求項２に記載の装置。
【請求項４】
前記プログラム不可能なハードウェア回路は、前記第二キャッシュ内の前記所定の物理アドレスへの前記リクエスト済みマップページのコピーの書込みを実行することによって、前記第二キャッシュ内の前記所定の物理アドレスへの前記リクエスト済みマップページのコピーの書込みを導く、請求項１に記載の装置。
【請求項５】
前記プログラム不可能なハードウェア回路は、前記プログラム可能なプロセッサに前記所定の物理アドレスの通知を提供し、続いて、前記プログラム可能なプロセッサによって前記所定の物理アドレスへの前記リクエスト済みマップページのコピーの書込みによって、前記第二キャッシュ内の前記所定の物理アドレスへの前記リクエスト済みマップページのコピーの書込みを導く、請求項１に記載の装置。
【請求項６】
前記逆テーブルは、前記第二キャッシュ内の物理アドレスによって論理アドレスを関係付ける変換テーブルであり、前記第二キャッシュの所定の物理アドレスを前記逆テーブルに入力することによって、前記逆テーブルは、その所定の物理アドレスに格納された対応する前記マップページを指示する、請求項１に記載の装置。
【請求項７】
前記プログラム不可能なハードウェア回路は、変換テーブルとして配置されたデータ構造として格納されたメモリ内の順テーブルを検索するように更に構成され、前記変換テーブルは、前記第二キャッシュ内の物理アドレスを前記マップページに関連した論理アドレスに関連付け、前記順テーブルに所定の論理アドレスを入力することによって、前記順テーブルは、前記所定の論理アドレスに関連した前記マップページが格納される前記第二キャッシュ内の対応する前記所定の物理アドレスを指示する、請求項１に記載の装置。
【請求項８】
前記プログラム不可能なハードウェア回路は、前記第一キャッシュを検索し、前記検索コマンドに応じて、及び前記第一キャッシュ上でのキャッシュヒットに応じて、前記リクエスト済みマップページが格納される前記第一キャッシュの物理アドレスを前記プログラム可能なプロセッサに通知するように更に構成される、請求項１に記載の装置。
【請求項９】
前記プログラム可能なプロセッサは、前記プログラム不可能なハードウェア回路に対して、前記検索コマンドと共に前記第一キャッシュ内の第二の可能な置換マップページを識別するように更に構成され、前記プログラム不可能なハードウェア回路は、前記第一キャッシュ内の前記第二の可能な置換マップページを前記リクエスト済みマップページで上書きするように更に構成される、請求項１に記載の装置。
【請求項１０】
前記プログラム可能なプロセッサは、データ・ストレージ・デバイス用の全体の処理制御を提供するプログラム可能なコアプロセッサであり、前記装置は、関連のメモリに格納されたプログラミングを有するプログラム可能なバック・エンド・プロセッサを更に備え、プログラミング及び読込み動作を導き、前記ＮＶＭとバッファメモリの間でデータを転送するように構成され、前記プログラム不可能なハードウェア回路は、前記リクエスト済みマップページ用の前記第二キャッシュ上でのキャッシュミスに応じて、前記プログラム可能なバック・エンド・プロセッサに読込みリクエストを発行し、前記ＮＶＭから前記リクエスト済みマップページを取得するように更に構成される、請求項１に記載の装置。
【請求項１１】
前記第二キャッシュ内の前記リクエスト済みマップページの位置において、前記リクエスト済みマップページが前記第二キャッシュ内にあることを示す順テーブルに応じて、前記プログラム不可能なハードウェア回路は、前記第二キャッシュから前記第一キャッシュへの前記リクエスト済みマップページのコピーの少なくとも所定の一つを実行するか、又は前記第二キャッシュ内の前記リクエスト済みマップページの物理的位置を識別するポインタを前記プログラム可能メモリに提供するように更に構成される、請求項１に記載の装置。
【請求項１２】
データ・ストレージ・デバイスであって、
マップページの総数として配置されるマップ構造を格納し、ユーザ・データ・ブロックの論理アドレスを、前記ユーザ・データ・ブロックが格納される前記ＮＶＭの物理アドレスに関連付ける不揮発性メモリ（ＮＶＭ）と、
前記総数より少ない第一の数の前記マップページを格納する第一キャッシュと、
前記総数より少ない第二の数のマップページを格納し、前記第二の数のマップページは前記第一の数のマップページの各々を含む、第二キャッシュと、
メモリ内のデータ構造として格納され、前記第二キャッシュに格納された前記第二の数のマップページの各々に関連した論理アドレスを識別する順テーブルと、
メモリ内のデータ構造として格納され、前記第二の数のマップページが各々格納される前記第二キャッシュメモリの物理アドレスを識別する逆テーブルと、
関連のメモリに格納されたプログラミングを有し、検索コマンドを発行し、ホストからのホスト・アクセス・コマンドの受取りに応じて、リクエスト済みマップページを検索するように構成されるプログラム可能なプロセッサと、
非プロセッサベースのマップハードウェア支援管理回路として特徴付けられ、次のように構成されるハードウェア回路を備え、
前記検索コマンドに応じて、前記第一キャッシュを検索し、前記リクエスト済みマップページが格納される前記第一キャッシュの物理アドレスを前記プログラム可能なプロセッサに通知し、
前記第一キャッシュ上でのキャッシュミスに応じて、前記順テーブルを検索し、前記順テーブルに応じて前記第二キャッシュから前記第一キャッシュに前記リクエスト済みマップページをコピーし、前記リクエスト済みマップページが前記第二キャッシュ内にあることを指示し、
前記第二キャッシュ上でのキャッシュミスに応じて、前記逆テーブルを検索し、前記所定の物理アドレスに格納された第二マップページを識別し、前記第一キャッシュを検索し、前記第二マップページが前記第一キャッシュに格納されていないことを決定し、前記プログラム可能なプロセッサに対して、前記第二キャッシュからの退避用の候補として前記可能な置換マップページを識別する、データ・ストレージ・デバイス。
【請求項１３】
前記プログラム可能なプロセッサは、前記プログラム不可能なハードウェア回路に対して、前記検索コマンドと共に前記第一キャッシュ内の可能な置換マップページを識別するように更に構成され、前記ハードウェア回路は、前記第一キャッシュ内の前記可能な置換マップページを前記リクエスト済みマップページで上書きするように更に構成される、請求項１２に記載のデータ・ストレージ・デバイス。
【請求項１４】
前記プログラム可能なプロセッサは、データ・ストレージ・デバイス用の全体の処理制御を提供するプログラム可能なコアプロセッサであり、前記データ・ストレージ・デバイスは、関連のメモリに格納されたプログラミングを有し、プログラミング及び読込み動作を導き、前記主メモリとバッファメモリの間でデータを転送するように構成されるプログラム可能なバック・エンド・プロセッサを更に備え、前記ハードウェア回路は、前記リクエスト済みマップページ用の前記第二キャッシュ上でのキャッシュミスに応じて、前記マップ構造にアクセスし、前記リクエスト済みマップページが配置される前記主メモリ内の主メモリ物理アドレスを識別し、前記プログラム可能なバック・エンド・プロセッサへの読込みリクエストと共に、前記バック・エンド・プロセッサに前記主メモリ物理アドレスを供給し、前記主メモリから前記リクエスト済みマップページを取得するように更に構成される、請求項１２に記載のデータ・ストレージ・デバイス。
【請求項１５】
前記ハードウェア回路によってアクセスされるローカルメモリ内のデータ構造として先入れ先出し（ＦＩＦＯ）リストを更に備え、前記逆テーブルへの入力として前記第二キャッシュ内の前記所定の物理アドレスを識別し、前記ＦＩＦＯリストは最長未使用時間（ＬＲＵ）ベースで前記第二キャッシュ内の位置を配置する、請求項１２に記載のデータ・ストレージ・デバイス。
【請求項１６】
前記マップ構造は、第一レベルマップと第二レベルマップを含むマルチレベルマップを備え、前記第二レベルマップは前記主メモリに格納され、前記リクエスト済みマップページを含む複数のマップページを備え、前記第一レベルマップは、前記複数のマップページが前記主メモリに格納される物理アドレスを識別するエントリを備え、前記第二レベルマップの第一の数のマップページは前記第一キャッシュに格納され、前記第二レベルの第二のより大きな数のマップページは前記第二キャッシュに格納され、前記第一キャッシュに格納される各マップページも、前記第二キャッシュに格納される、請求項１２に記載のデータ・ストレージ・デバイス。
【請求項１７】
ソリッド・ステート・ドライブ（ＳＳＤ）として特徴付けられ、前記主メモリはフラッシュメモリアレイを備える、請求項１２に記載のデータ・ストレージ・デバイス。
【請求項１８】
方法であって、
関連のメモリに格納されたプログラミングを有するプログラム可能なプロセッサによって検索コマンドを発行し、マップ構造のリクエスト済みマップページを位置確認し、第一キャッシュに配置し、受け取ったホストコマンドにサービスを提供し、前記リクエスト済みマップページは、ユーザ・データ・ブロックの論理アドレスを、前記ユーザ・データ・ブロックが格納される不揮発性メモリ（ＮＶＭ）内の物理アドレスと関連付けることと、
プログラム不可能なハードウェア回路を用いて、
順テーブルを検索し、前記順テーブルに応じて、第二キャッシュから前記第一キャッシュに前記リクエスト済みマップページをコピーし、前記リクエスト済みマップページは前記第二キャッシュ内にあることを示し、前記第一キャッシュ上でのキャッシュミスに応じて、前記順テーブルはメモリ内のデータ構造として格納され、前記第二キャッシュに格納された前記マップ構造の複数のマップページの各々に関連した論理アドレスを識別し、
前記第二キャッシュ内の所定の物理アドレスを識別し、逆テーブルを検索し、前記所定の物理アドレスに格納された可能な置換マップページを識別し、前記第一キャッシュを検索し、前記可能な置換マップページが前記第一キャッシュに格納されていないことを決定し、前記第二キャッシュ内の前記所定の物理アドレスへの前記リクエスト済みマップページの上書きを導くことを備える、方法。
【請求項１９】
前記プログラム不可能なハードウェア回路を用いて、前記第一キャッシュを検索し、検索コマンドに応じて及び前記第一キャッシュ上でのキャッシュヒットに応じて、前記リクエスト済みマップページが格納される前記第一キャッシュの物理アドレスを、前記プログラム可能なプロセッサに通知することを更に備える、請求項１８に記載の方法。
【請求項２０】
前記プログラム不可能なハードウェア回路を動作させ、前記リクエスト済みマップページ用の前記第二キャッシュ上でのキャッシュミスに応じて、前記マップ構造にアクセスし、前記リクエスト済みマップページが配置される前記ＮＶＭ内の物理アドレスを識別し、バック・エンド・プロセッサへの読込みリクエストと共に前記物理アドレスを供給し、前記ＮＶＭから前記リクエスト済みマップページを取得し、前記バック・エンド・プロセッサは、メモリに格納された関連のプログラミングを有するプログラム可能な第二プロセッサを備え、前記ＮＶＭとデータのプログラム及び書込みを行うことを更に備える、請求項１８に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
［関連出願］
本出願は、米国特許法第１１９条（ｅ）の定めにより、米国仮出願第６２／４７６，１７８号、出願日２０１７年３月２４日について国内優先権を主張し、その内容は参照によってここで組み込まれる。
【発明の概要】
【課題を解決するための手段】
【０００２】
本発明の様々な実施形態は、一般にデータ・ストレージ・デバイス内のデータ管理に関する。
【０００３】
いくつかの実施形態において、装置は、複数のマップページとして不揮発性メモリ（ＮＶＭ）に格納されたマップ構造を有し、ユーザ・データ・ブロックの論理アドレスを、ユーザブロックが格納されたＮＶＭ内の物理アドレスと関連付ける。第一キャッシュは、ＮＶＭに格納されたマップページの第一サブセットのコピーを格納し、第二キャッシュは、ＮＶＭに格納されたマップページの第一サブセットのコピー、並びにマップページの第二サブセットのコピーを格納する。
【０００４】
プログラム可能なプロセッサは、関連のメモリに格納されたプログラミングを有し、実行されると、検索コマンドを発行し、受け取ったホストコマンドに関連したリクエスト済みマップページを位置確認し、第一キャッシュ内に配置する。プログラム不可能なハードウェア回路は、検索コマンドに応じて、ＮＶＭからリクエスト済みマップページの取得を導き、メモリ内の逆テーブルにアクセスし、第二キャッシュ内の所定の物理アドレスに格納された可能な置換マップページを識別し、可能な置換マップページは第一キャッシュのマップページの第一サブセット内にはないという、プログラム不可能なハードウェア回路による決定に応じて、第二キャッシュ内の所定の物理アドレスへのリクエスト済みマップページのコピーの書込みを導くように構成される。
【０００５】
本開示内容の様々な実施形態を特徴付けるこれらの及び他の機能及び利点は、以降の詳細な説明及び添付の図面を考慮することで理解可能になる。
【図面の簡単な説明】
【０００６】
【図１】本開示内容の様々な実施形態による一例のデータ・ストレージ・デバイスの機能ブロック表現を提供する。
【図２】いくつかの実施形態によるソリッド・ステート・ドライブ（ＳＳＤ）として構成される図１のデータ・ストレージ・デバイスの形態を示す。
【図３】図２の一例のＳＳＤのコア制御部の機能ブロック表現である。
【図４】いくつかの実施形態におけるマルチレベルマップ構造の一例のフォーマットを示す。
【図５】マップ構造の第二レベルマップ（ＳＬＭ）の一例のフォーマットを示す。
【図６】マップ構造の第一レベルマップ（ＦＬＭ）の一例のフォーマットを示す。
【図７】いくつかの実施形態におけるＳＳＤのその様々なメモリ及びコンテンツを示す。
【図８】いくつかの実施形態の図３のコア制御部の非プロセッサベースのオフロード・マップ・ハードウェア支援（ＭＨＡ）管理部と、コア中央処理ユニット（ＣＰＵ）のプログラム可能なプロセッサとの間の通信の機能ブロック表現である。
【図９Ａ】本開示内容のいくつかの実施形態に従って実行されるステップを示すデータ処理ルーチンのフローチャートを提供する。
【図９Ｂ】本開示内容のいくつかの実施形態に従って実行されるステップを示すデータ処理ルーチンのフローチャートを提供する。
【発明を実施するための形態】
【０００７】
［詳細な説明］
本開示内容は、一般にデータストレージに関し、より詳細には、ハードウェア回路を用いてデータ・ストレージ・デバイス内のマップデータを管理し、プログラム可能なプロセッサからキャッシュ管理タスクをオフロードする方法及び装置に関する。
【０００８】
データ・ストレージ・デバイスを用いて、素早く効率的な形態でユーザデータの格納及び取得を行う。マップ構造をしばしば用いて、ストレージデバイスの主メモリに格納されたユーザデータの物理的位置を追跡し、デバイスが既に格納されたデータを位置確認し取得できるようにする。このようなマップ構造は、ホストから受け取ったデータブロックの論理アドレスと、媒体の物理的アドレス並びにデータに関連した他のステータス情報を関連付けることができる。
【０００９】
マップ構造の管理は、ホストデバイスからのアクセスコマンド（例えば、読込みコマンド、書込みコマンド、ステータスコマンド等）にサービスを提供する際に、ストレージデバイス制御部に著しい処理ボトルネックを提供する可能性がある。これは、フラッシュメモリ及び他の形態の消去可能な媒体の場合、特に当てはまる。ＳＳＤ等のフラッシュメモリベースのストレージデバイスでは、所定データブロックの順次受け取った各バージョンは、フラッシュメモリ内の異なる位置に格納できる。
【００１０】
本開示内容の様々な実施形態は、一般にデータ・ストレージ・デバイス内のデータ管理に関する。以降で説明するように、いくつかの実施形態において、データ・ストレージ・デバイスには、制御回路と、不揮発性メモリつまりＮＶＭとして特徴付けられる主メモリを設ける。ＮＶＭはフラッシュメモリアレイの形態をとることができる。
【００１１】
制御回路はトップレベル制御機能を提供し、ＮＶＭとホストデバイスの間のユーザ・データ・ブロックの転送を導く。ＮＶＭに格納されたユーザ・データ・ブロックは、複数のマップページを有するマップ構造によって記述され、ホストデバイスによって用いられる論理アドレスと、ＮＶＭの物理アドレスとの間の関係を記述する。マップ構造は、マルチレベルマップ構造であってもよく、他の形態をとることもできる。
【００１２】
制御回路はプログラム可能なプロセッサを含み、メモリ位置に格納されたプログラミング（例えば、ファームウェア）を用いて、ホスト・アクセス・コマンドを処理する。受け取った各アクセスコマンドに関連したデータ用のマップページを、コマンドがサービスを受取り可能になる前に、マルチキャッシュ構造の第一キャッシュにロードする必要がある。
【００１３】
マルチキャッシュ構造は、第一キャッシュと少なくとも第二キャッシュを含む。追加のキャッシュレベルを同様に用いることもできる。マップページの小さな（第一）サブセットは第一キャッシュに維持される。第二キャッシュは、マップページのより大きなサブセットを格納し、第一キャッシュ内の各マップページも第二キャッシュ内に維持される。これを確認する別の方法は、第二キャッシュがマップページの第一サブセットを格納し、第二キャッシュがマップページの第一サブセット並びに第二サブセットを格納することである。全てのマップページ（例えば、マップ構造全体）もＮＶＭ内に維持される。
【００１４】
プログラム可能なプロセッサは、所定の動作を非プロセッサベースのハードウェア回路にオフロードし、マップページを位置確認し、第一キャッシュにロードする。プロセッサからの検索コマンドに応じて、ハードウェア回路は検索（例えば、アクセス動作）をまず実行し、リクエスト済みの（第一）マップページが既に第一キャッシュ内にあるかどうかを決定する。ある場合、ハードウェア回路は第一キャッシュ内の関連のアドレス（キャッシュライン）をプロセッサに通知する。
【００１５】
第一キャッシュ上にキャッシュミスがある（例えば、リクエスト済みマップページが第一キャッシュに存在しない）場合、ハードウェア回路はメモリ内の順テーブルを検索し、第二キャッシュに格納された各マップページに関連した論理アドレスを識別する。リクエスト済みマップページが第二キャッシュにあることを順テーブルが示した場合、ハードウェア回路は、リクエスト済みマップページを第二キャッシュから第一キャッシュにコピーし、プロセッサに通知する。第一キャッシュは通常いっぱいであるので、少なくとも一つの既存のマップページは第一キャッシュから退避させ、リクエスト済みマップページ用の余裕を与える必要がある。プロセッサは、検索コマンドと共に、必要に応じて、リクエスト済みマップページによって置換される第一キャッシュ内の犠牲（置換）マップページを識別できる。
【００１６】
第二キャッシュ上にキャッシュミスがある（例えば、リクエスト済みマップページが第二キャッシュ内に配置されていない）場合、ハードウェア回路は、ＮＶＭ（例えば、フラッシュ）からのリクエスト済みマップページの取得と、リクエスト済みマップページによって置換される第二キャッシュ内の候補（第二）マップページの選択という二つの同時動作を導く。
【００１７】
リクエスト済みマップページをＮＶＭから取得するために、ハードウェア回路はマップ構造の第一レベルマップにアクセスし、リクエスト済みマップページのフラッシュアドレスを位置確認し、制御部のバック・エンド・プロセッサにリクエストを発行し、リクエスト済みマップページをＮＶＭからローカルメモリ内に取得する。
【００１８】
リクエスト済みマップページによって置換される第二キャッシュ内の可能な置換マップページを識別するために、ハードウェア回路は、第二キャッシュ内の所定の物理アドレスを識別し、ローカルメモリ内の逆テーブルを検索する。逆テーブルは、各マップページが第二キャッシュに格納される物理アドレスを指定する。従って、逆テーブルは、所定の物理アドレスに格納される可能な置換マップページを識別する。ハードウェア回路は第一キャッシュを検索し、可能な置換マップページが第一キャッシュ内にもあるかどうかを決定する。ある場合、第二キャッシュ内の新しい物理アドレスを選択し、可能な置換マップページが置換の候補として識別されるまで処理を繰り返す。先入れ先出し（ＦＩＦＯ）リスト又は同様の機構を用いて、第二キャッシュからそのコンテンツの退避用の候補物理アドレスを追跡し選択することができる（例えば、新しいページをその位置に上書きする）。可能な置換ページは、プログラム可能なプロセッサによって管理されるローカルメモリ内の先入れ先出し（ＦＩＦＯ）リストから供給できる。
【００１９】
ＦＩＦＯ機構は、様々な形態をとることができる。いくつかの場合、カウンタを用いて、第一位置０から最終位置Ｎ−１までラップをとり、その後、０に戻ることができる。カウンタ値は、システムが位置０、次に１、次に２等をＮ−１まで置換し、その後、カウンタが再び０に戻るように用いられる。第一キャッシュ内にあるように決定される任意の位置をスキップする。所定の動作が第一カウント値で終了した（例えば、位置３が更新される）場合、次の評価サイクルはそのシーケンス内の次のカウント値（例えば、位置４）で始まる。
【００２０】
上記の動作はブロッキング及びアトミックである。ハードウェア回路は、第一及び第二キャッシュの各々にマップページを物理的に書き込むことも、プログラム可能なプロセッサによって使用可能なポインタを確立し、リクエスト済みマップページを位置確認し使用することもできる。このように、様々なマップ位置確認機能を別個のハードウェアによって実行でき、プログラム可能なプロセッサを占有する必要はなく、プロセッサはより高い優先度のタスクを実行し、ストレージデバイスのデータ転送速度Ｉ／Ｏ性能を促進できる。
【００２１】
本開示内容の様々な実施形態のこれらの及び他の機能及び利点は、図１の検討を開始することで理解でき、図１はデータ・ストレージ・デバイス１００の簡略化された機能ブロック表現を提供する。
【００２２】
デバイス１００は制御部１０２とメモリモジュール１０４を含む。制御部１０２はデバイス１００用のトップレベル制御を提供し、複数の回路要素として構成でき、ローカルメモリ内の関連のプログラミングを備えたプログラム可能なプロセッサ、並びに一つ以上の非プロセッサベースのハードウェア回路を含む。
【００２３】
メモリモジュール１０４は、回転可能記録媒体（ディスク）及びソリッド・ステート・メモリ・アレイ等の一つ以上の不揮発性メモリ要素として配置できる。別個の制御部１０２が図１には示されているが、別の実施形態が、任意の必須の制御機能をメモリモジュールに直接組み込むことができる場合、このようものは不要である。
【００２４】
メモリモジュール１０４は、ホストデバイスからのユーザデータ用の主ストアとして機能する。ホストデバイスは、ストレージデバイス１００と通信する任意のデバイスであってもよい。例えば、限定的なものではなく、ストレージデバイスはホストデバイスに物理的に組み込んでもよく、又はストレージデバイスは、任意の適切なプロトコルを用いてネットワークを介してホストデバイスと通信してもよい。いくつかの実施形態において、ストレージデバイス１００は、分散オブジェクトストレージシステム、クラウドベースのコンピューティング環境、ＲＡＩＤ（独立ディスク冗長アレイ）システム等の、マスストレージ環境内のマルチデバイス・ストレージ・エンクロージャの一部を形成するように構成される。
【００２５】
図２は、いくつかの実施形態によるデータ・ストレージ・デバイス１１０の機能ブロック表現である。デバイス１１０は一般にデバイス１００に対応し、主メモリストアとして二次元（２Ｄ）又は三次元（３Ｄ）ＮＡＮＤフラッシュメモリを用いるソリッド・ステート・ドライブ（ＳＳＤ）として特徴付けられる。これは例示的な目的のためだけであって、限定的なものではない。他の回路及び部品を必要に応じてＳＳＤ１１０に組み込んでもよいが、このようなものは簡略化のために図２からは省略されている。図２の回路は、システムオンチップ（ＳＯＣ）デバイス等の単一の集積回路（ＩＣ）に組み込んでもよく、マルチ接続ＩＣデバイスを含んでいてもよい。
【００２６】
図１からの制御機能は、ホストインタフェース（Ｉ／Ｆ）制御回路１１２、コア制御回路１１４及びデバイスＩ／Ｆ制御回路１１６によって実行される。ホストＩ／Ｆ制御回路１１２はフロントエンド制御部又はプロセッサと呼ばれることもあり、デバイスＩ／Ｆ制御回路１１６はバックエンド制御部又はプロセッサと呼ばれることもある。各制御部１１２、１１４及び１１６は、適切なメモリ位置に関連のプログラミング（例えば、ファームウェアＦＷ）を備えた別個のプログラム可能なプロセッサ、並びに様々なハードウェア要素を含み、データ管理及び転送機能を実行する。これは一実施形態の例示的なものにすぎない。他の実施形態において、単一のプログラム可能なプロセッサ（又は三［3］つより少ないプログラム可能なプロセッサ）を構成し、適切なメモリ位置の関連のＦＷを用いて、フロントエンド、コア及びバックエンド処理を各々実行することもできる。
【００２７】
フロントエンド制御部１１２は、ホストデバイス（別個には図示せず）とのホスト通信を処理する。バックエンド制御部１１６は、フラッシュメモリ１１８とのデータの読み／書き／消去（Ｒ／Ｗ／Ｅ）を管理する。フラッシュメモリ１１８は、不揮発性メモリ（ＮＶＭ）又は主メモリとも呼ばれ、複数のフラッシュ基板から構成され、並列データ演算を促進できる。コア制御部１１４は、主制御部又は中間制御部とも呼ばれ、デバイス１１０用の主データ管理及び制御を実行する。
【００２８】
図３は、いくつかの実施形態において図２からのコア制御部１１４を示す。他の構成を用いることもできるので、これは例示的なものにすぎず、限定的なものではない。ＳＲＡＭメモリ１２０は、バッファメモリ空間専用の揮発性メモリであり、フラッシュ１１８とのデータ転送動作中にユーザデータを一時的に格納する。ＤＤＲ（ＤＲＡＭ／ＳＤＲＡＭ）メモリ１２２は揮発性メモリであり、バッファメモリとして用いることも、並びにシステムによって用いられる他のデータを格納こともできる。各メモリ１２０、１２２は単一の集積回路（ＩＣ）として実現してもよく、複数の物理メモリデバイス上に分散させ、組み合わせたとき、全体で利用可能なメモリ空間を提供してもよい。
【００２９】
コアプロセッサ（中央処理ユニットＣＰＵ）１２４はプログラム可能なプロセッサであり、コア制御部１１４用の主処理エンジンを提供する。マップハードウェア支援（ＭＨＡ）管理回路１２６は、非プロセッサベースのオフロードハードウェア回路であり、以降で説明するようにコアプロセッサ１２４によって導かれるオフロード機能を実行する。
【００３０】
ローカルメモリは一般に１２８に示される。このメモリは、一つ以上の別個のローカルメモリを備えるように想定され、コア制御部によって用いられる様々なデータ構造を格納するために使用でき、それらは、コアプロセッサ１２６によって用いられるファームウェア（ＦＷ）プログラミング１３０、システムマップ１３２及び様々なマップテーブル１３４を含む。
【００３１】
この点において、用語「プロセッサ」と、「非プロセッサベースの」、「プログラム不可能な」及び「ハードウェア」等の用語とを区別することは有用である。本明細書で用いられるように、用語のプロセッサは、様々な機能を実行するために命令（例えば、ＦＷ）を実行するＣＰＵ又は同様のプログラム可能デバイスを指す。用語の非プロセッサ、非プロセッサベースの、プログラム不可能な、ハードウェア等は、ＭＨＡ管理部１２６によって例示され、メモリに格納されたプログラミングを利用しないが、代わりに、動作するための様々なハードウェア回路要素（論理ゲート、ＦＰＧＡ等）によって構成される回路を指す。ＭＨＡ管理部１２６は、状態マシン又は他の有線デバイスとして機能する。管理部は、直接メモリアクセス（ＤＭＡ）、検索、ロード、比較等の様々な動作能力及び機能を有する。
【００３２】
マップ１３２は、第一レベルマップ１３８と第二レベルマップ１４０を備えたマルチレベルマップとして図４にはより完全に示されている。２レベルマップがＳＳＤ１１０によって用いられるが、単一レベルマップ、又は２レベルより多くを備えたマルチレベルマップを含む、他のマップ構造も容易に使用できる。
【００３３】
第二レベルマップ（ＳＬＭ）１４０の一例の構造は図５に示されている。ＳＬＭ１４０は、複数の第二レベルマップエントリ１４２（ＳＬＭＥ又はエントリ）からなり、フラッシュ１１８に存在するか、又はそこに書込み可能なユーザデータの別個のブロックを記述する。この例では、ブロックはマップユニット（ＭＵ）とも呼ばれ、長さ４ＫＢ（４０９６バイト）に設定されるが、他のサイズを用いることもできる。ＳＬＭ１４０は、所定の論理アドレスが用いられなかった、又は用いられない場合でさえ、ＳＳＤ１１０によって収容可能なブロックの論理アドレスの全体の可能な範囲を記述する。
【００３４】
各エントリ１４２は複数のフィールドを含み、それらは、論理ブロックアドレス（ＬＢＡ）フィールド１４４、物理ブロックアドレスフィールド１４６、オフセットフィールド１４８及びステータスフィールド１５０を含む。他のフォーマットを用いることもできる。ＬＢＡ値は、最小値から最大値までシーケンシャルである（例えば、ＬＢＡ−０からＬＢＡ−Ｎまであり、ＮはＳＳＤの全体のデータ容量によって決定される、ある大きな数である）。キー値、仮想ブロックアドレス等、他の論理アドレス指定方式を用いることもできる。ＬＢＡ値はエントリの一部を形成できるが、他の実施形態では、ＬＢＡは、関連のデータ構造内へのインデックスとして代わりに使用し、様々なエントリを位置確認できる。
【００３５】
典型的なフラッシュアレイにおいて、データブロックはページとして配置され、特定の消去ブロック内のフラッシュメモリセルの行に沿って書き込まれる。ＰＢＡは、アレイ、基板、ガベージコレクションユニット（ＧＣＵ）、消去ブロック、ページ等の用語で表現してもよい。オフセット値は、メモリの所定のページに沿ってのビットオフセットであってもよい。ステータス値は、関連のブロックのステータス（例えば、有効、無効、空等）を示すことができる。
【００３６】
エントリ１４２のグループは、本明細書ではマップページ１５２と呼ばれるデータのより大きなセット内に配置される。各マップページには、いくつかの所定数のエントリ（変数Ａによって表される）が提供される。この場合、各マップページ１４４は全部で１００個のエントリを有する。各ページには、２の累乗である数を含むエントリの他のグループを作成することもできる。
【００３７】
第二レベルマップ（ＳＬＭ）１４０は、システム内のマップページ１５２の全ての配置を構成する。ＳＳＤの全ストレージ容量を記述するために、いくつかの大きな総数のマップページＢが必要になることも想定される。各マップページは関連のマップＩＤ値を有し、それは０からＢまでの連続的な数であってもよい。ＳＬＭ１４０はＮＶＭ（フラッシュ１１８）に格納されるが、ＳＬＭはフラッシュ内の集中させた位置ではなく、様々な基板の異なるセットにわたって書き込まれる場合もある。
【００３８】
図４からの第一レベルマップ（ＦＬＭ）１３８の配置は図６に示される。ＦＬＭ１３８は、ＳＳＤ１１０がフラッシュに格納された様々なマップページ１５２を位置確認できる。このために、ＦＬＭ１３８は、第一レベルマップエントリ１６２（ＦＬＭＥ又はエントリ）から構成される。各ＦＬＭＥ１６２は、マップページＩＤフィールド１６４、ＰＢＡフィールド１６６、オフセットフィールド１６８及びステータスフィールド１７０を有する。マップＩＤは上で説明した。ＰＢＡフィールド１６６は、関連のマップページの位置を記述する。オフセット値は、前述のように、特定のページ又は他の位置に沿ってのビットオフセットとして動作する。ステータス値は、第二レベルマップ内と同じであってもよく、必要に応じて、マップページ自体のステータスに関係していてもよい。前述のように、図６内のフォーマットは第一レベルマップ内の各エントリの一部を形成するためのマップＩＤを示すが、他の実施形態では、データ構造内へのインデックスとしてマップＩＤを代わりに用いて、関連のエントリを位置確認できる。
【００３９】
第一レベルマップ（ＦＬＭ）１３８は、エントリ０からエントリＣまでのエントリ１６２の全ての配置を構成する。いくつかの場合、ＢはＣと等しいが、これらの値は異なっていてもよい。ＦＬＭ１３８へのアクセスは、マップＩＤによって、フラッシュメモリ１１８内の所望のマップページの位置の検索を可能にする。フラッシュからの所望のマップページの取得では、そのマップページ内の第二レベルマップエントリを提供し、次に、関連の第二レベルエントリ内のＰＢＡ情報に基づいて、別個のＬＢＡを識別し取得できる。
【００４０】
図７は、いくつかの実施形態のＳＳＤ１１０によって利用される様々なメモリ位置の配置を示す。これらは、図２〜図３において上で説明したフラッシュメモリ１１８とローカル・コア・メモリ１２８、並びに第一レベルキャッシュ（ＦＬＣ）１８０と第二レベルキャッシュ（ＳＬＣ）１８２を含む。
【００４１】
第一レベルキャッシュ１８０は、第一キャッシュ及び階層１キャッシュとも呼ばれ、コア制御部のオンボードメモリ等の別個のメモリ位置として想定される。上で説明したように、中断中のホスト・アクセス・コマンドにサービスを提供する際に動作させるマップページは、第一キャッシュにロードされる。図７は、総数Ｄのマップページが第一キャッシュ１８０に存在することを示す。ＤはＤ＝１２８等の比較的小さな数であることが想定されるが、他の数を用いることもできる。第一キャッシュのサイズは固定される。
【００４２】
第二レベルキャッシュ１８２は、第二キャッシュ及び階層２キャッシュとも呼ばれ、ＤＤＲメモリ１２２の少なくとも一部を構成すると想定される（図２参照）。他のメモリ位置を用いることもできる。第二キャッシュのサイズは変更可能であっても固定されていてもよい。第二キャッシュは、マップページの最大数Ｅまで格納し、ＥはＤより有意に大きなある数である（Ｅ＞Ｄ）。上記のように、第一キャッシュ内のＤ個の各マップページは第二キャッシュにも格納される。
【００４３】
フラッシュ１１８を主に用いて、マップ構造１３２によって記述されるユーザ・データ・ブロックを格納するが、このようなストレージは図７には示されていない。図７は、第一レベルマップ（ＦＬＭ）１３８の一つ以上のバックアップコピー、並びに第二レベルマップ（ＳＬＭ）１４０の全コピーがフラッシュメモリに格納されることを示す。ＳＬＭ１４０のバックアップコピーは、冗長性のためにフラッシュに格納してもよいが、このような冗長コピーに直接アクセス可能にする前に、ＦＬＭ１３８の再構成が必要とされる。上記のように、ＦＬＭ１３８は、フラッシュ内のＳＬＭ１４０のマップページの主コピーの位置を指示する。
【００４４】
ローカル・コア・メモリ１２８はＦＬＭ１３８のアクティブコピーを含み、それは必要に応じて、ＨＭＡ管理部（ハードウェア回路）１２６によってアクセスされ、以降で説明されるように、必要に応じてフラッシュからマップページを取得する。また、メモリ１２８は図３からマップテーブル１３４を格納し、順テーブル及び逆テーブルとして図７に配置される。
【００４５】
順テーブルは第一テーブルとも呼ばれ、第二キャッシュ１８２に格納された各マップページに関連した論理アドレスを識別するデータ構造である。逆テーブルは第二テーブルとも呼ばれ、第二キャッシュに各マップページを格納する物理アドレスを識別する。
【００４６】
順テーブルは、ＬＢＡからＤＤＲへの変換テーブルとして一般に確認できる。所定のＬＢＡ（又は所望の論理アドレスに関連した他の入力値）を入力することによって、そのエントリ用の第二キャッシュ（この場合はＤＤＲメモリ）内の関連の位置を位置確認できる。逆テーブルは、ＤＤＲからＬＢＡへの変換テーブルとして一般に確認できる。第二キャッシュ（ＤＤＲメモリ）に所定の物理アドレスを入力することによって、関連のＬＢＡ（又は所望の論理アドレスに関連した他の値）を位置確認できる。
【００４７】
図８は、図３からのコアＣＰＵ（プロセッサ）１２４とＭＨＡ管理部（ハードウェア回路）１２６の間の相互作用を示す機能表現である。図８の動作は、フラッシュメモリ１１８からＳＲＡＭバッファ１２２（図２）に所定のユーザ・データ・ブロック（例えば、ＬＢＡ）を取得する読込みコマンド等、所定のホスト・アクセス・コマンドの受取りに応じて実行され、ホストへの転送を中断することが想定される。
【００４８】
ホスト・アクセス・コマンドにサービスを提供するために、リクエストされたユーザ・データ・ブロック用のマップページは、第一キャッシュ１８０にロードする必要がある。この動作は、ハードウェア回路に検索コマンドを発行することによって、ハードウェア回路１２６にプロセッサ１２４によってオフロードされ、所定の（第一）マップページを検索し、リクエスト済みマップページが第一キャッシュにあることを保証する。
【００４９】
いくつかの場合、プロセッサ１２４は、第一キャッシュ内の置換マップページを識別でき、それはハードウェア回路１２６によって必要に応じて上書きされ、リクエスト済みマップページを第一キャッシュに取り込むことができる。プロセッサは第一キャッシュ内のマップページの退避上で最終制御を維持できるが、それは、マップページが汚れており、マップページを第一キャッシュから安全に解放可能にする前に洗浄が必要なためである（例えば、ユーザデータ位置等の変化に基づいてマップ構造を更新する）。
【００５０】
検索コマンドに応じて、ハードウェア回路１２６は、様々なメモリ位置、データ構造及びプロセッサにアクセスでき、それらは、第一レベルキャッシュ（ＦＬＣ）１８０、第二レベルキャッシュ（ＳＬＣ）１８２、第一レベルマップ（ＦＬＭ）１３８、フラッシュメモリ１１８、順テーブル（図８内の１８４で示される）、逆テーブル（１８６で示される）、先入れ先出し（ＦＩＦＯ）リスト１８８及びバック・エンド・プロセッサ１９０を含む。
【００５１】
ＦＩＦＯリスト１８８は、最長未使用時間（ＬＲＵ）方式等の使用量に基づく第二キャッシュアドレスのリストであってもよい。バック・エンド・プロセッサ１９０は、バックエンド制御部１１６内にプログラム可能なプロセッサを備え、関連のプログラミング（ＦＷ）を用いて、フラッシュとのプログラミング及び読込み動作を実行する。ハードウェア回路１２６は、バック・エンド・プロセッサ１９０への読込みリクエストを導き、プロセッサは必要なデータ調整（例えば、復号化、解凍、誤り訂正等）を実行し、リクエスト済みマップページ用に直接フラッシュにアクセスするのではなく、フラッシュからの所定のマップページにアクセスできる。
【００５２】
コアプロセッサ１２４は、第一レベルキャッシュ１８０のコンテンツのトップレベル制御を維持するが、それは、これらのエントリが、進行中及び中断中のデータ転送に関連した最も価値のあるマップページを表すためである。第一レベルキャッシュ内のどのマップページがキャッシュ内に留まり、どれが退避に利用可能であるかを決定することは、コアプロセッサ１２４次第である。このような退避は、コアプロセッサがマップページに関連した残りのタスクを全て完了するまで発生しない。コアプロセッサ１２４がハードウェア回路１２６に対して第一キャッシュ内の置換マップページを識別すれば、いくつかの場合、ハードウェア回路は第一キャッシュ内の新しくリクエストされたページで置換ページを上書きすることに進むことができ、プログラム可能なコアプロセッサはこの動作を実行する必要はない。
【００５３】
ハードウェア回路１２６は、このような性能がコアプロセッサによって委譲される範囲に依存して、第二レベルキャッシュ１８２のコンテンツ上での制御のいくつかの手段を有する。第一レベルキャッシュ１８０内の各マップページのコピーも、第二レベルキャッシュ１８２に格納されるが、逆はそうではないことが想記される。新しいマップページを（第二レベルキャッシュ又はフラッシュのいずれかから）第一レベルキャッシュに進めるには通常、第一レベルキャッシュ内の既存のマップページを置換する必要があるが、それは、効率性のために、第一レベルキャッシュが通常（又は常に）いっぱいになっているからである。第一レベルキャッシュへの新しいマップページこの上書きはコアプロセッサによって制御される。ハードウェア回路が第一レベルキャッシュに新しいマップページを実際に書き込むエンティティであっても、コアプロセッサは、第一レベルキャッシュ内のどこに新しいマップページを配置するかをハードウェア回路に伝える。
【００５４】
その結果、フラッシュから新しいマップページを取得するには、第一レベルキャッシュと第二レベルキャッシュの両方に新しいマップページを書き込む必要がある。第一レベルキャッシュに導かれるコピーは、コアプロセッサによって識別されたアドレスに提供される。第二レベルキャッシュに導かれるコピーは、図８のＦＩＦＯリスト１８８のコンテンツに基づいて、ハードウェア回路によって最終的に決定されるアドレスに書き込まれる。
【００５５】
ＦＩＦＯリスト１８８は、退避候補として利用可能な第二レベルキャッシュ１８２内の候補位置（アドレス）のコア制御部１２４によって維持されるデータ構造の一例である。リストは、最長未使用期間（ＬＲＵ）ベース等の任意の数の適切な方法で生成できる。ハードウェア回路１２６は、ＦＩＦＯリストから所定のアドレスを識別し、逆テーブル１８６を用いて所定のアドレスに格納されたマップページを識別し、第一レベルキャッシュ１８０を検索し、所定のアドレスにおけるマップページが第一レベルキャッシュに存在するかどうかを確認する。存在する場合、第二レベルキャッシュ内の異なる候補アドレスが識別され、処理を繰り返す。存在しない場合、ハードウェア回路は新しいマップページのストレージ用の位置として所定のアドレスを識別し、書き込まれる新しいマップページをこの位置に導き、それはハードウェア回路又はコア制御部のいずれかによって実行される。
【００５６】
図９Ａと図９Ｂは、いくつかの実施形態に従って、図８の配置によって実行されるステップを例示するデータ処理ルーチン２００を提供する。ルーチンは例示的なものにすぎず、限定的なものではなく、異なる順番又は他のモジュールによって等、様々なステップを付加、省略、実行することもできる。一般に、ルーチン内の各ステップには、「ＦＷ」又は「ＨＷ」識別子を設ける。ＦＷは、ファームウェアの実行を介してプログラム可能なプロセッサによって実行されるステップを指し、便宜上、ファームウェアによって実行されているとして説明する。ＨＷはハードウェア回路１２６によって実行されるステップを指し、従って、ハードウェアによって実行されているとして説明する。
【００５７】
ルーチンは、ファームウェアによるホスト・アクセス・コマンドの受取り時にステップ２０２において開始する。それに応じて、ステップ２０４でハードウェアに第一コマンドを発行し、コマンドに関連した所定のマップページ（「リクエスト済みマップページ」）を位置確認し、必要に応じて、第一キャッシュ１８０にロードする。第一キャッシュに現在存在する置換マップページは、必要に応じて退避／上書き用に識別することもできる。
【００５８】
ハードウェアはステップ２０６に進み、リクエスト済みマップページ用に第一レベルキャッシュ（ＦＬＣ又は第一キャッシュ）を検索する。決定ステップ２０８は、キャッシュヒットが得られた（例えば、リクエスト済みマップページが実際に第一キャッシュに存在する）か、どうかを決定する。得られた場合、フローはステップ２１０に移動し、ハードウェアは第一キャッシュ内の物理アドレスをファームウェアに通知する。その後、ファームウェアはマップページの使用に進み、ステップ２１２でコマンドにサービスを提供し、フローはステップ２１４で終了する。
【００５９】
キャッシュミスがステップ２０８で決定された（例えば、所定のマップページが第一キャッシュに存在しない）場合、ハードウェアはステップ２１６に続き、順テーブル１８４にアクセスし、所定のマップページが第二レベルキャッシュ（ＳＬＣ）に配置されているかどうかを決定する。決定ステップ２１８は、第二キャッシュでキャッシュヒットが得られたかどうかを決定する。得られた場合、フローはステップ２２０に移動し、ハードウェアは所定のマップページを第一レベルキャッシュ（ＦＬＣ）にコピーし、ファームウェアによって識別された置換マップページを上書きする。その後、ステップ２１０と２１２は前のように実行される。
【００６０】
第二キャッシュでキャッシュミスが決定された（例えば、所定のマップページが第二キャッシュに存在しない）場合、フローは図９Ｂまでマーカ「Ａ」に従い、二つの並列の経路がハードウェアによってとられる。
【００６１】
第一経路はステップ２２２で開始し、ハードウェアは第一レベルマップ（ＦＬＭ）１３８にアクセスし、所定のマップページのフラッシュアドレスを位置確認する（図６参照）。ハードウェアは、所定のマップページをフラッシュアドレス位置から取得することのリクエストと共に、ステップ２２４でバック・エンド・プロセッサ１９０にフラッシュアドレスを供給する。取得したマップページは、ステップ２２６で受け取る。
【００６２】
第二経路はステップ２２８で開始し、ハードウェアは第二レベルキャッシュ（ＳＬＣ）１８２内の可能な置換位置（物理アドレス）を選択し、フラッシュから取得したマップページを収容する。上記のように、これはＦＩＦＯリスト１８８又は同様のデータ構造を用いて実行できる。ハードウェアはステップ２３０で逆テーブル１８６を検索し、どのマップページが置換位置に配置されているかを識別し、第一レベルキャッシュ（ＦＬＣ）１８０を検索し、このマップページが第一キャッシュ内にあるかどうかを決定する。ある場合、決定ステップ２３４で、新しい可能な置換位置を選択し、適切な候補置換位置が見出されるまで処理を繰り返す。
【００６３】
その後、二つの経路はステップ２３６で集束し、ハードウェアはフラッシュメモリから取得した所定のマップページを可能な置換マップページ内の候補置換位置にコピーし、ルーチンはマーカ「Ｂ」に従い、図９Ａに戻り、ステップ２２０、２１０及び２１２を実行する。
【００６４】
当然のことながら、ハードウェアが第二キャッシュ内で実際に退避を実行するように構成される場合、第二キャッシュのコンテンツの管理は、ハードウェアの制御下にあるように確認できる。もしくは、第一キャッシュと第二キャッシュの両方の管理はプロセッサ（ファームウェア）によって維持でき、ファームウェアが最終的な決定を行う。両方の場合、ハードウェアによって、第二キャッシュ内の候補置換マップページについてファームウェアに通知する。
【００６５】
当然のことながら、第二キャッシュ内に部分的なマップを維持することは、第一キャッシュへのマップページのロードを著しく改善できるが、それは、フラッシュからのマップページの取得にバック・エンド・プロセッサを関係させる必要がないためである。どのマップページが第二キャッシュに留まっているかをファームウェアが最終的に決定しても、逆テーブルを用いたハードウェアテーブルによる評価は、この決定を行う際のファームウェアへの作業負荷を著しく低減できる。
【００６６】
上記の説明は、ハードウェア回路に検索コマンドを直接通信するプログラム可能なプロセッサを想定したが、このようなことは必須ではない。他の実施形態は、追加のプログラム不可能なハードウェアを用いたコマンド処理を想定し、より高レベルのファームウェアの制御下であっても、ハードウェアは処理中のハードウェアと通信を行う。
【００６７】
上で説明したように、ハードウェア回路は、バック・エンド・プロセッサ（コアプロセッサと同じプロセッサであってもよい）にリクエストを発行することなく、リクエスト済みマップページをフラッシュから直接取得するように構成できる。
【００６８】
検索コマンドの対象としてユーザデータを考えてきたが、システムの状態を記述するメタデータ等、他の形態のデータを同様に取得することもでき、それは、システム内のユーザデータに関する情報等であるが、それには限定されない。
【００６９】
ハードウェア回路の一形態は、第二キャッシュからエントリを選択する機能であり、それは第二キャッシュから自動的に退避するための適切な候補である。逆テーブルは、このような候補を識別する任意の適切なフォーマットをとることができ、必要な情報を提供できるリンクリスト又はいくつかの他の簡単な構造を含むことができる。
【００７０】
従って、逆テーブルへの参照は、実際のルックアップテーブルには必ずしも限定されず、むしろ、第二キャッシュ内のアドレスによって上記のようにマップページの指示を実行するのに適切な任意の形態のメタデータである。他の実施形態では、退避用の候補はハードウェア回路によって識別可能であり、ハードウェア回路は実際には自動的に退避を管理し、プログラム可能なプロセッサ等に必ずしも通知する必要はない。
【００７１】
ここで当然のことながら、本明細書で開示される様々な実施形態は複数の利点を提供できる。オフロードハードウェア回路を用いて、マルチレベルキャッシュ内のマップデータを管理することは、マップロード機能を著しく加速し、プロセッサ効率を増大できる。様々な実施形態は、フラッシュメモリ付きのソリッド・ステート・ドライブ（ＳＳＤ）の環境を想定しているが、異なる形態のストレージメモリ、異なる数のキャッシュ等を含む他の構成も容易に使用できる。
【００７２】
当然のことながら、本開示内容の様々な実施形態の多数の特徴及び利点が、本開示内容の様々な実施形態の構造及び機能の詳細と共に、上記の説明で述べられているとしても、この詳細な説明は例示的なものにすぎず、添付の請求項で表現される用語の広範囲の一般的な意味によって示される十分な範囲まで、本開示内容の原理内で、特に部品の構造及び配置の問題において、詳細に変更を行ってもよい。
【図１】
2018163659.tif 000003
【図２】
2018163659.tif 000004
【図３】
2018163659.tif 000005
【図４】
2018163659.tif 000006
【図５】
2018163659.tif 000007
【図６】
2018163659.tif 000008
【図７】
2018163659.tif 000009
【図８】
2018163659.tif 000010
【図９Ａ】
2018163659.tif 000011
【図９Ｂ】
2018163659.tif 000012
【外国語明細書】
2018163659000001.pdf