(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-25
(45)【発行日】2022-04-04
(54)【発明の名称】逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション
(51)【国際特許分類】
G06F 12/1027 20160101AFI20220328BHJP
【FI】
G06F12/1027 105
G06F12/1027 120
【外国語出願】
(21)【出願番号】P 2018056219
(22)【出願日】2018-03-23
【審査請求日】2020-12-08
(32)【優先日】2017-03-24
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-05-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500373758
【氏名又は名称】シーゲイト テクノロジー エルエルシー
【氏名又は名称原語表記】Seagate Technology LLC
【住所又は居所原語表記】47488 Kato Road, Fremont, CA 94538, United States of America
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ジェフリー・ムンシル
(72)【発明者】
【氏名】ジャクソン・エリス
(72)【発明者】
【氏名】リャン・ジェイ・ゴス
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2012-174086(JP,A)
【文献】特開平03-142644(JP,A)
【文献】米国特許出願公開第2017/0068621(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/1027
(57)【特許請求の範囲】
【請求項1】
装置であって、
複数のマップページとして不揮発性メモリ(NVM)に格納され、ユーザ・データ・ブロックの論理アドレスを、前記ユーザ・データ・ブロックが格納される前記NVM内の物理アドレスと関連付けるマップ構造と、
前記NVMに格納された前記複数のマップページの第一サブセットのコピーを格納する第一キャッシュと、
前記NVMに格納された前記複数のマップページの第一サブセットのコピー、並びに前記複数のマップページの第二サブセットのコピーを格納する第二キャッシュと、
関連のメモリに格納されたプログラミングを有し、実行されたとき
、受け取ったホストコマンドに関連してリクエスト
されたマップページ
の位置
を確認し、前記第一キャッシュに配置
するための検索コマンドを発行する、プログラム可能なプロセッサと、
プログラム不可能なハードウェア回路を備え、前記ハードウェア回路は、前記検索コマンドに応じて、前記NVMから前記リクエスト
されたマップページの取得を導き、メモリ内の逆テーブルにアクセスし、前記第二キャッシュ内の所定の物理アドレスに格納された可能な置換マップページを識別し、前記可能な置換マップページは、前記第一キャッシュの前記マップページの第一サブセット内にはないという、前記ハードウェア回路による決定に応じて、前記第二キャッシュ内の前記所定の物理アドレスへの前記リクエスト
されたマップページのコピーの書込みを導くように構成される、装置。
【請求項2】
メモリ内のデータ構造として前記第二キャッシュ内に物理アドレスの先入れ先出し(FIFO)リストを更に備え、前記プログラム不可能なハードウェア回路は、前記所定の物理アドレスとして前記FIFOリストから第一物理アドレスを選択し、前記逆テーブルにインデックスを付け、前記第一物理アドレスに格納された第一マップページとして前記可能な置換マップページを識別し、前記第一キャッシュを検索し、前記第一マップページが前記第一キャッシュに格納されたマップページの前記第一サブセットのメンバではないことを決定するように更に構成される、請求項1に記載の装置。
【請求項3】
前記可能な置換マップページが、前記第一キャッシュに格納されたマップページの前記第一サブセットのメンバであるという前記プログラム不可能なハードウェア回路による決定に応じて、前記プログラム不可能なハードウェア回路は、前記所定の物理アドレスとして前記FIFOリストから第二物理アドレスを選択し、前記逆テーブルにインデックスを付け、前記第二物理アドレスに格納された第二マップページとして前記可能な置換マップページを識別し、前記第一キャッシュを検索し、前記第二マップページが前記第一キャッシュに格納されたマップページの前記第一サブセットのメンバではないことを決定するように更に構成される、請求項2に記載の装置。
【請求項4】
前記プログラム不可能なハードウェア回路は、前記第二キャッシュ内の前記所定の物理アドレスへの前記リクエスト
されたマップページのコピーの書込みを実行することによって、前記第二キャッシュ内の前記所定の物理アドレスへの前記リクエスト
されたマップページのコピーの書込みを導く、請求項1に記載の装置。
【請求項5】
前記プログラム不可能なハードウェア回路は、前記プログラム可能なプロセッサに前記所定の物理アドレスの通知を提供し、続いて、前記プログラム可能なプロセッサによって前記所定の物理アドレスへの前記リクエスト
されたマップページのコピーの書込みによって、前記第二キャッシュ内の前記所定の物理アドレスへの前記リクエスト
されたマップページのコピーの書込みを導く、請求項1に記載の装置。
【請求項6】
前記逆テーブルは、前記第二キャッシュ内の物理アドレスによって論理アドレスを関係付ける変換テーブルであり、前記第二キャッシュの所定の物理アドレスを前記逆テーブルに入力することによって、前記逆テーブルは、前記所定の物理アドレスに格納された対応する前記マップページを指示する、請求項1に記載の装置。
【請求項7】
前記プログラム不可能なハードウェア回路は、変換テーブルとして配置されたデータ構造として格納されたメモリ内の順テーブルを検索するように更に構成され、前記変換テーブルは、前記第二キャッシュ内の物理アドレスを前記マップページに関連した論理アドレスに関連付け、前記順テーブルに所定の論理アドレスを入力することによって、前記順テーブルは、前記所定の論理アドレスに関連した前記マップページが格納される前記第二キャッシュ内の対応する前記所定の物理アドレスを指示する、請求項1に記載の装置。
【請求項8】
前記プログラム不可能なハードウェア回路は、前記第一キャッシュを検索し、前記検索コマンドに応じて、及び前記第一キャッシュ上でのキャッシュヒットに応じて、前記リクエスト
されたマップページが格納される前記第一キャッシュの物理アドレスを前記プログラム可能なプロセッサに通知するように更に構成される、請求項1に記載の装置。
【請求項9】
前記プログラム可能なプロセッサは、前記プログラム不可能なハードウェア回路に対して、前記検索コマンドと共に前記第一キャッシュ内の第二の可能な置換マップページを識別するように更に構成され、前記プログラム不可能なハードウェア回路は、前記第一キャッシュ内の前記第二の可能な置換マップページを前記リクエスト
されたマップページで上書きするように更に構成される、請求項1に記載の装置。
【請求項10】
前記プログラム可能なプロセッサは、データ・ストレージ・デバイス用の全体の処理制御を提供するプログラム可能なコアプロセッサであり、前記装置は、関連のメモリに格納されたプログラミングを有するプログラム可能なバック・エンド・プロセッサを更に備え、プログラミング及び読込み動作を導き、前記NVMとバッファメモリの間でデータを転送するように構成され、前記プログラム不可能なハードウェア回路は、前記リクエスト
されたマップページ用の前記第二キャッシュ上でのキャッシュミスに応じて、前記プログラム可能なバック・エンド・プロセッサに読込みリクエストを発行し、前記NVMから前記リクエスト
されたマップページを取得するように更に構成される、請求項1に記載の装置。
【請求項11】
前記第二キャッシュ内の前記リクエスト
されたマップページの位置において、前記リクエスト
されたマップページが前記第二キャッシュ内にあることを示す順テーブルに応じて、前記プログラム不可能なハードウェア回路は、前記第二キャッシュから前記第一キャッシュへの前記リクエスト
されたマップページのコピーの少なくとも所定の一つを実行するか、又は前記第二キャッシュ内の前記リクエスト
されたマップページの物理的位置を識別するポインタをプログラム可能メモリに提供するように更に構成される、請求項1に記載の装置。
【請求項12】
データ・ストレージ・デバイスであって、
マップページの総数として配置されるマップ構造を格納し、ユーザ・データ・ブロックの論理アドレスを、前記ユーザ・データ・ブロックが格納される前記NVMの物理アドレスに関連付ける不揮発性メモリ(NVM)と、
前記総数より少ない第一の数の前記マップページを格納する第一キャッシュと、
前記総数より少ない第二の数のマップページを格納し、前記第二の数のマップページは前記第一の数のマップページの各々を含む、第二キャッシュと、
メモリ内のデータ構造として格納され、前記第二キャッシュに格納された前記第二の数のマップページの各々に関連した論理アドレスを識別する順テーブルと、
メモリ内のデータ構造として格納され、前記第二の数のマップページが各々格納される前記第二キャッシュメモリの物理アドレスを識別する逆テーブルと、
関連のメモリに格納されたプログラミングを有し
、ホストからのホスト・アクセス・コマンドの受取りに応じて、リクエスト
されたマップページを検索する
ための検索コマンドを発行するように構成されるプログラム可能なプロセッサと、
非プロセッサベースのマップハードウェア支援管理回路として特徴付けられ、次のように構成されるハードウェア回路を備え、
前記検索コマンドに応じて、前記第一キャッシュを検索し、前記リクエスト
されたマップページが格納される前記第一キャッシュの物理アドレスを前記プログラム可能なプロセッサに通知し、
前記第一キャッシュ上でのキャッシュミスに応じて、前記順テーブルを検索し
、前記リクエスト
されたマップページが前記第二キャッシュ内にあること
を示す
前記順テーブルに応じて、前記第二キャッシュから前記第一キャッシュに前記リクエストされたマップページをコピーし、
前記第二キャッシュ上でのキャッシュミスに応じて、前記逆テーブルを検索し、前記所定の物理アドレスに格納された第二マップページを識別し、前記第一キャッシュを検索し、前記第二マップページが前記第一キャッシュに格納されていないことを決定し、前記プログラム可能なプロセッサに対して、前記第二キャッシュからの退避用の候補として可能な置換マップページを識別する、データ・ストレージ・デバイス。
【請求項13】
前記プログラム可能なプロセッサは、前記ハードウェア回路に対して、前記検索コマンドと共に前記第一キャッシュ内の可能な置換マップページを識別するように更に構成され、前記ハードウェア回路は、前記第一キャッシュ内の前記可能な置換マップページを前記リクエスト
されたマップページで上書きするように更に構成される、請求項12に記載のデータ・ストレージ・デバイス。
【請求項14】
前記プログラム可能なプロセッサは、データ・ストレージ・デバイス用の全体の処理制御を提供するプログラム可能なコアプロセッサであり、前記データ・ストレージ・デバイスは、関連のメモリに格納されたプログラミングを有し、プログラミング及び読込み動作を導き、主メモリとバッファメモリの間でデータを転送するように構成されるプログラム可能なバック・エンド・プロセッサを更に備え、前記ハードウェア回路は、前記リクエスト
されたマップページ用の前記第二キャッシュ上でのキャッシュミスに応じて、前記マップ構造にアクセスし、前記リクエスト
されたマップページが配置される前記主メモリ内の主メモリ物理アドレスを識別し、前記プログラム可能なバック・エンド・プロセッサへの読込みリクエストと共に、前記バック・エンド・プロセッサに前記主メモリ物理アドレスを供給し、前記主メモリから前記リクエスト
されたマップページを取得するように更に構成される、請求項12に記載のデータ・ストレージ・デバイス。
【請求項15】
前記ハードウェア回路によってアクセスされるローカルメモリ内のデータ構造として先入れ先出し(FIFO)リストを更に備え、前記逆テーブルへの入力として前記第二キャッシュ内の前記所定の物理アドレスを識別し、前記FIFOリストは最長未使用時間(LRU)ベースで前記第二キャッシュ内の位置を配置する、請求項12に記載のデータ・ストレージ・デバイス。
【請求項16】
前記マップ構造は、第一レベルマップと第二レベルマップを含むマルチレベルマップを備え、前記第二レベルマップ
は主メモリに格納され、前記リクエスト
されたマップページを含む複数のマップページを備え、前記第一レベルマップは、前記複数のマップページが前記主メモリに格納される物理アドレスを識別するエントリを備え、前記第二レベルマップの第一の数のマップページは前記第一キャッシュに格納され、前記第二レベルの第二のより大きな数のマップページは前記第二キャッシュに格納され、前記第一キャッシュに格納される各マップページも、前記第二キャッシュに格納される、請求項12に記載のデータ・ストレージ・デバイス。
【請求項17】
ソリッド・ステート・ドライブ(SSD)として特徴付けられ
、主メモリはフラッシュメモリアレイを備える、請求項12に記載のデータ・ストレージ・デバイス。
【請求項18】
方法であって、
関連のメモリに格納されたプログラミングを有するプログラム可能なプロセッサによって検索コマンドを発行し、マップ構造のリクエスト
されたマップページ
の位置
を確認し、第一キャッシュに配置し、受け取ったホストコマンドにサービスを提供し、前記リクエスト
されたマップページは、ユーザ・データ・ブロックの論理アドレスを、前記ユーザ・データ・ブロックが格納される不揮発性メモリ(NVM)内の物理アドレスと関連付けることと、
プログラム不可能なハードウェア回路を用いて、
順テーブルを検索し、
前記リクエストされたマップページが前記第二キャッシュ内にあることを示す前記順テーブル
、および前記第一キャッシュ上でのキャッシュミスに応じて、
第二キャッシュから前記第一キャッシュに前記リクエストされたマップページをコピーし、ここで、前記順テーブルはメモリ内のデータ構造として格納され、前記第二キャッシュに格納された前記マップ構造の複数のマップページの各々に関連した論理アドレスを識別
するものであり、
前記第二キャッシュ内の所定の物理アドレスを識別し、逆テーブルを検索し、前記所定の物理アドレスに格納された可能な置換マップページを識別し、前記第一キャッシュを検索し、前記可能な置換マップページが前記第一キャッシュに格納されていないことを決定し、前記第二キャッシュ内の前記所定の物理アドレスへの前記リクエスト
されたマップページの上書きを導くことを備える、方法。
【請求項19】
前記プログラム不可能なハードウェア回路を用いて、前記第一キャッシュを検索し、検索コマンドに応じて及び前記第一キャッシュ上でのキャッシュヒットに応じて、前記リクエスト
されたマップページが格納される前記第一キャッシュの物理アドレスを、前記プログラム可能なプロセッサに通知することを更に備える、請求項18に記載の方法。
【請求項20】
前記プログラム不可能なハードウェア回路を動作させ、前記リクエスト
されたマップページ用の前記第二キャッシュ上でのキャッシュミスに応じて、前記マップ構造にアクセスし、前記リクエスト
されたマップページが配置される前記NVM内の物理アドレスを識別し、バック・エンド・プロセッサへの読込みリクエストと共に前記物理アドレスを供給し、前記NVMから前記リクエスト
されたマップページを取得し、前記バック・エンド・プロセッサは、メモリに格納された関連のプログラミングを有するプログラム可能な第二プロセッサを備え、前記NVMとデータのプログラム及び書込みを行うことを更に備える、請求項18に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
[関連出願]
本出願は、米国特許法第119条(e)の定めにより、米国仮出願第62/476,178号、出願日2017年3月24日について国内優先権を主張し、その内容は参照によってここで組み込まれる。
【発明の概要】
【課題を解決するための手段】
【0002】
本発明の様々な実施形態は、一般にデータ・ストレージ・デバイス内のデータ管理に関する。
【0003】
いくつかの実施形態において、装置は、複数のマップページとして不揮発性メモリ(NVM)に格納されたマップ構造を有し、ユーザ・データ・ブロックの論理アドレスを、ユーザブロックが格納されたNVM内の物理アドレスと関連付ける。第一キャッシュは、NVMに格納されたマップページの第一サブセットのコピーを格納し、第二キャッシュは、NVMに格納されたマップページの第一サブセットのコピー、並びにマップページの第二サブセットのコピーを格納する。
【0004】
プログラム可能なプロセッサは、関連のメモリに格納されたプログラミングを有し、実行されると、検索コマンドを発行し、受け取ったホストコマンドに関連したリクエスト済みマップページを位置確認し、第一キャッシュ内に配置する。プログラム不可能なハードウェア回路は、検索コマンドに応じて、NVMからリクエスト済みマップページの取得を導き、メモリ内の逆テーブルにアクセスし、第二キャッシュ内の所定の物理アドレスに格納された可能な置換マップページを識別し、可能な置換マップページは第一キャッシュのマップページの第一サブセット内にはないという、プログラム不可能なハードウェア回路による決定に応じて、第二キャッシュ内の所定の物理アドレスへのリクエスト済みマップページのコピーの書込みを導くように構成される。
【0005】
本開示内容の様々な実施形態を特徴付けるこれらの及び他の機能及び利点は、以降の詳細な説明及び添付の図面を考慮することで理解可能になる。
【図面の簡単な説明】
【0006】
【
図1】本開示内容の様々な実施形態による一例のデータ・ストレージ・デバイスの機能ブロック表現を提供する。
【
図2】いくつかの実施形態によるソリッド・ステート・ドライブ(SSD)として構成される
図1のデータ・ストレージ・デバイスの形態を示す。
【
図3】
図2の一例のSSDのコア制御部の機能ブロック表現である。
【
図4】いくつかの実施形態におけるマルチレベルマップ構造の一例のフォーマットを示す。
【
図5】マップ構造の第二レベルマップ(SLM)の一例のフォーマットを示す。
【
図6】マップ構造の第一レベルマップ(FLM)の一例のフォーマットを示す。
【
図7】いくつかの実施形態におけるSSDのその様々なメモリ及びコンテンツを示す。
【
図8】いくつかの実施形態の
図3のコア制御部の非プロセッサベースのオフロード・マップ・ハードウェア支援(MHA)管理部と、コア中央処理ユニット(CPU)のプログラム可能なプロセッサとの間の通信の機能ブロック表現である。
【
図9A】本開示内容のいくつかの実施形態に従って実行されるステップを示すデータ処理ルーチンのフローチャートを提供する。
【
図9B】本開示内容のいくつかの実施形態に従って実行されるステップを示すデータ処理ルーチンのフローチャートを提供する。
【発明を実施するための形態】
【0007】
[詳細な説明]
本開示内容は、一般にデータストレージに関し、より詳細には、ハードウェア回路を用いてデータ・ストレージ・デバイス内のマップデータを管理し、プログラム可能なプロセッサからキャッシュ管理タスクをオフロードする方法及び装置に関する。
【0008】
データ・ストレージ・デバイスを用いて、素早く効率的な形態でユーザデータの格納及び取得を行う。マップ構造をしばしば用いて、ストレージデバイスの主メモリに格納されたユーザデータの物理的位置を追跡し、デバイスが既に格納されたデータを位置確認し取得できるようにする。このようなマップ構造は、ホストから受け取ったデータブロックの論理アドレスと、媒体の物理的アドレス並びにデータに関連した他のステータス情報を関連付けることができる。
【0009】
マップ構造の管理は、ホストデバイスからのアクセスコマンド(例えば、読込みコマンド、書込みコマンド、ステータスコマンド等)にサービスを提供する際に、ストレージデバイス制御部に著しい処理ボトルネックを提供する可能性がある。これは、フラッシュメモリ及び他の形態の消去可能な媒体の場合、特に当てはまる。SSD等のフラッシュメモリベースのストレージデバイスでは、所定データブロックの順次受け取った各バージョンは、フラッシュメモリ内の異なる位置に格納できる。
【0010】
本開示内容の様々な実施形態は、一般にデータ・ストレージ・デバイス内のデータ管理に関する。以降で説明するように、いくつかの実施形態において、データ・ストレージ・デバイスには、制御回路と、不揮発性メモリつまりNVMとして特徴付けられる主メモリを設ける。NVMはフラッシュメモリアレイの形態をとることができる。
【0011】
制御回路はトップレベル制御機能を提供し、NVMとホストデバイスの間のユーザ・データ・ブロックの転送を導く。NVMに格納されたユーザ・データ・ブロックは、複数のマップページを有するマップ構造によって記述され、ホストデバイスによって用いられる論理アドレスと、NVMの物理アドレスとの間の関係を記述する。マップ構造は、マルチレベルマップ構造であってもよく、他の形態をとることもできる。
【0012】
制御回路はプログラム可能なプロセッサを含み、メモリ位置に格納されたプログラミング(例えば、ファームウェア)を用いて、ホスト・アクセス・コマンドを処理する。受け取った各アクセスコマンドに関連したデータ用のマップページを、コマンドがサービスを受取り可能になる前に、マルチキャッシュ構造の第一キャッシュにロードする必要がある。
【0013】
マルチキャッシュ構造は、第一キャッシュと少なくとも第二キャッシュを含む。追加のキャッシュレベルを同様に用いることもできる。マップページの小さな(第一)サブセットは第一キャッシュに維持される。第二キャッシュは、マップページのより大きなサブセットを格納し、第一キャッシュ内の各マップページも第二キャッシュ内に維持される。これを確認する別の方法は、第二キャッシュがマップページの第一サブセットを格納し、第二キャッシュがマップページの第一サブセット並びに第二サブセットを格納することである。全てのマップページ(例えば、マップ構造全体)もNVM内に維持される。
【0014】
プログラム可能なプロセッサは、所定の動作を非プロセッサベースのハードウェア回路にオフロードし、マップページを位置確認し、第一キャッシュにロードする。プロセッサからの検索コマンドに応じて、ハードウェア回路は検索(例えば、アクセス動作)をまず実行し、リクエスト済みの(第一)マップページが既に第一キャッシュ内にあるかどうかを決定する。ある場合、ハードウェア回路は第一キャッシュ内の関連のアドレス(キャッシュライン)をプロセッサに通知する。
【0015】
第一キャッシュ上にキャッシュミスがある(例えば、リクエスト済みマップページが第一キャッシュに存在しない)場合、ハードウェア回路はメモリ内の順テーブルを検索し、第二キャッシュに格納された各マップページに関連した論理アドレスを識別する。リクエスト済みマップページが第二キャッシュにあることを順テーブルが示した場合、ハードウェア回路は、リクエスト済みマップページを第二キャッシュから第一キャッシュにコピーし、プロセッサに通知する。第一キャッシュは通常いっぱいであるので、少なくとも一つの既存のマップページは第一キャッシュから退避させ、リクエスト済みマップページ用の余裕を与える必要がある。プロセッサは、検索コマンドと共に、必要に応じて、リクエスト済みマップページによって置換される第一キャッシュ内の犠牲(置換)マップページを識別できる。
【0016】
第二キャッシュ上にキャッシュミスがある(例えば、リクエスト済みマップページが第二キャッシュ内に配置されていない)場合、ハードウェア回路は、NVM(例えば、フラッシュ)からのリクエスト済みマップページの取得と、リクエスト済みマップページによって置換される第二キャッシュ内の候補(第二)マップページの選択という二つの同時動作を導く。
【0017】
リクエスト済みマップページをNVMから取得するために、ハードウェア回路はマップ構造の第一レベルマップにアクセスし、リクエスト済みマップページのフラッシュアドレスを位置確認し、制御部のバック・エンド・プロセッサにリクエストを発行し、リクエスト済みマップページをNVMからローカルメモリ内に取得する。
【0018】
リクエスト済みマップページによって置換される第二キャッシュ内の可能な置換マップページを識別するために、ハードウェア回路は、第二キャッシュ内の所定の物理アドレスを識別し、ローカルメモリ内の逆テーブルを検索する。逆テーブルは、各マップページが第二キャッシュに格納される物理アドレスを指定する。従って、逆テーブルは、所定の物理アドレスに格納される可能な置換マップページを識別する。ハードウェア回路は第一キャッシュを検索し、可能な置換マップページが第一キャッシュ内にもあるかどうかを決定する。ある場合、第二キャッシュ内の新しい物理アドレスを選択し、可能な置換マップページが置換の候補として識別されるまで処理を繰り返す。先入れ先出し(FIFO)リスト又は同様の機構を用いて、第二キャッシュからそのコンテンツの退避用の候補物理アドレスを追跡し選択することができる(例えば、新しいページをその位置に上書きする)。可能な置換ページは、プログラム可能なプロセッサによって管理されるローカルメモリ内の先入れ先出し(FIFO)リストから供給できる。
【0019】
FIFO機構は、様々な形態をとることができる。いくつかの場合、カウンタを用いて、第一位置0から最終位置N-1までラップをとり、その後、0に戻ることができる。カウンタ値は、システムが位置0、次に1、次に2等をN-1まで置換し、その後、カウンタが再び0に戻るように用いられる。第一キャッシュ内にあるように決定される任意の位置をスキップする。所定の動作が第一カウント値で終了した(例えば、位置3が更新される)場合、次の評価サイクルはそのシーケンス内の次のカウント値(例えば、位置4)で始まる。
【0020】
上記の動作はブロッキング及びアトミックである。ハードウェア回路は、第一及び第二キャッシュの各々にマップページを物理的に書き込むことも、プログラム可能なプロセッサによって使用可能なポインタを確立し、リクエスト済みマップページを位置確認し使用することもできる。このように、様々なマップ位置確認機能を別個のハードウェアによって実行でき、プログラム可能なプロセッサを占有する必要はなく、プロセッサはより高い優先度のタスクを実行し、ストレージデバイスのデータ転送速度I/O性能を促進できる。
【0021】
本開示内容の様々な実施形態のこれらの及び他の機能及び利点は、
図1の検討を開始することで理解でき、
図1はデータ・ストレージ・デバイス100の簡略化された機能ブロック表現を提供する。
【0022】
デバイス100は制御部102とメモリモジュール104を含む。制御部102はデバイス100用のトップレベル制御を提供し、複数の回路要素として構成でき、ローカルメモリ内の関連のプログラミングを備えたプログラム可能なプロセッサ、並びに一つ以上の非プロセッサベースのハードウェア回路を含む。
【0023】
メモリモジュール104は、回転可能記録媒体(ディスク)及びソリッド・ステート・メモリ・アレイ等の一つ以上の不揮発性メモリ要素として配置できる。別個の制御部102が
図1には示されているが、別の実施形態が、任意の必須の制御機能をメモリモジュールに直接組み込むことができる場合、このようものは不要である。
【0024】
メモリモジュール104は、ホストデバイスからのユーザデータ用の主ストアとして機能する。ホストデバイスは、ストレージデバイス100と通信する任意のデバイスであってもよい。例えば、限定的なものではなく、ストレージデバイスはホストデバイスに物理的に組み込んでもよく、又はストレージデバイスは、任意の適切なプロトコルを用いてネットワークを介してホストデバイスと通信してもよい。いくつかの実施形態において、ストレージデバイス100は、分散オブジェクトストレージシステム、クラウドベースのコンピューティング環境、RAID(独立ディスク冗長アレイ)システム等の、マスストレージ環境内のマルチデバイス・ストレージ・エンクロージャの一部を形成するように構成される。
【0025】
図2は、いくつかの実施形態によるデータ・ストレージ・デバイス110の機能ブロック表現である。デバイス110は一般にデバイス100に対応し、主メモリストアとして二次元(2D)又は三次元(3D)NANDフラッシュメモリを用いるソリッド・ステート・ドライブ(SSD)として特徴付けられる。これは例示的な目的のためだけであって、限定的なものではない。他の回路及び部品を必要に応じてSSD110に組み込んでもよいが、このようなものは簡略化のために
図2からは省略されている。
図2の回路は、システムオンチップ(SOC)デバイス等の単一の集積回路(IC)に組み込んでもよく、マルチ接続ICデバイスを含んでいてもよい。
【0026】
図1からの制御機能は、ホストインタフェース(I/F)制御回路112、コア制御回路114及びデバイスI/F制御回路116によって実行される。ホストI/F制御回路112はフロントエンド制御部又はプロセッサと呼ばれることもあり、デバイスI/F制御回路116はバックエンド制御部又はプロセッサと呼ばれることもある。各制御部112、114及び116は、適切なメモリ位置に関連のプログラミング(例えば、ファームウェアFW)を備えた別個のプログラム可能なプロセッサ、並びに様々なハードウェア要素を含み、データ管理及び転送機能を実行する。これは一実施形態の例示的なものにすぎない。他の実施形態において、単一のプログラム可能なプロセッサ(又は三[3]つより少ないプログラム可能なプロセッサ)を構成し、適切なメモリ位置の関連のFWを用いて、フロントエンド、コア及びバックエンド処理を各々実行することもできる。
【0027】
フロントエンド制御部112は、ホストデバイス(別個には図示せず)とのホスト通信を処理する。バックエンド制御部116は、フラッシュメモリ118とのデータの読み/書き/消去(R/W/E)を管理する。フラッシュメモリ118は、不揮発性メモリ(NVM)又は主メモリとも呼ばれ、複数のフラッシュ基板から構成され、並列データ演算を促進できる。コア制御部114は、主制御部又は中間制御部とも呼ばれ、デバイス110用の主データ管理及び制御を実行する。
【0028】
図3は、いくつかの実施形態において
図2からのコア制御部114を示す。他の構成を用いることもできるので、これは例示的なものにすぎず、限定的なものではない。SRAMメモリ120は、バッファメモリ空間専用の揮発性メモリであり、フラッシュ118とのデータ転送動作中にユーザデータを一時的に格納する。DDR(DRAM/SDRAM)メモリ122は揮発性メモリであり、バッファメモリとして用いることも、並びにシステムによって用いられる他のデータを格納こともできる。各メモリ120、122は単一の集積回路(IC)として実現してもよく、複数の物理メモリデバイス上に分散させ、組み合わせたとき、全体で利用可能なメモリ空間を提供してもよい。
【0029】
コアプロセッサ(中央処理ユニットCPU)124はプログラム可能なプロセッサであり、コア制御部114用の主処理エンジンを提供する。マップハードウェア支援(MHA)管理回路126は、非プロセッサベースのオフロードハードウェア回路であり、以降で説明するようにコアプロセッサ124によって導かれるオフロード機能を実行する。
【0030】
ローカルメモリは一般に128に示される。このメモリは、一つ以上の別個のローカルメモリを備えるように想定され、コア制御部によって用いられる様々なデータ構造を格納するために使用でき、それらは、コアプロセッサ126によって用いられるファームウェア(FW)プログラミング130、システムマップ132及び様々なマップテーブル134を含む。
【0031】
この点において、用語「プロセッサ」と、「非プロセッサベースの」、「プログラム不可能な」及び「ハードウェア」等の用語とを区別することは有用である。本明細書で用いられるように、用語のプロセッサは、様々な機能を実行するために命令(例えば、FW)を実行するCPU又は同様のプログラム可能デバイスを指す。用語の非プロセッサ、非プロセッサベースの、プログラム不可能な、ハードウェア等は、MHA管理部126によって例示され、メモリに格納されたプログラミングを利用しないが、代わりに、動作するための様々なハードウェア回路要素(論理ゲート、FPGA等)によって構成される回路を指す。MHA管理部126は、状態マシン又は他の有線デバイスとして機能する。管理部は、直接メモリアクセス(DMA)、検索、ロード、比較等の様々な動作能力及び機能を有する。
【0032】
マップ132は、第一レベルマップ138と第二レベルマップ140を備えたマルチレベルマップとして
図4にはより完全に示されている。2レベルマップがSSD110によって用いられるが、単一レベルマップ、又は2レベルより多くを備えたマルチレベルマップを含む、他のマップ構造も容易に使用できる。
【0033】
第二レベルマップ(SLM)140の一例の構造は
図5に示されている。SLM140は、複数の第二レベルマップエントリ142(SLME又はエントリ)からなり、フラッシュ118に存在するか、又はそこに書込み可能なユーザデータの別個のブロックを記述する。この例では、ブロックはマップユニット(MU)とも呼ばれ、長さ4KB(4096バイト)に設定されるが、他のサイズを用いることもできる。SLM140は、所定の論理アドレスが用いられなかった、又は用いられない場合でさえ、SSD110によって収容可能なブロックの論理アドレスの全体の可能な範囲を記述する。
【0034】
各エントリ142は複数のフィールドを含み、それらは、論理ブロックアドレス(LBA)フィールド144、物理ブロックアドレスフィールド146、オフセットフィールド148及びステータスフィールド150を含む。他のフォーマットを用いることもできる。LBA値は、最小値から最大値までシーケンシャルである(例えば、LBA-0からLBA-Nまであり、NはSSDの全体のデータ容量によって決定される、ある大きな数である)。キー値、仮想ブロックアドレス等、他の論理アドレス指定方式を用いることもできる。LBA値はエントリの一部を形成できるが、他の実施形態では、LBAは、関連のデータ構造内へのインデックスとして代わりに使用し、様々なエントリを位置確認できる。
【0035】
典型的なフラッシュアレイにおいて、データブロックはページとして配置され、特定の消去ブロック内のフラッシュメモリセルの行に沿って書き込まれる。PBAは、アレイ、基板、ガベージコレクションユニット(GCU)、消去ブロック、ページ等の用語で表現してもよい。オフセット値は、メモリの所定のページに沿ってのビットオフセットであってもよい。ステータス値は、関連のブロックのステータス(例えば、有効、無効、空等)を示すことができる。
【0036】
エントリ142のグループは、本明細書ではマップページ152と呼ばれるデータのより大きなセット内に配置される。各マップページには、いくつかの所定数のエントリ(変数Aによって表される)が提供される。この場合、各マップページ144は全部で100個のエントリを有する。各ページには、2の累乗である数を含むエントリの他のグループを作成することもできる。
【0037】
第二レベルマップ(SLM)140は、システム内のマップページ152の全ての配置を構成する。SSDの全ストレージ容量を記述するために、いくつかの大きな総数のマップページBが必要になることも想定される。各マップページは関連のマップID値を有し、それは0からBまでの連続的な数であってもよい。SLM140はNVM(フラッシュ118)に格納されるが、SLMはフラッシュ内の集中させた位置ではなく、様々な基板の異なるセットにわたって書き込まれる場合もある。
【0038】
図4からの第一レベルマップ(FLM)138の配置は
図6に示される。FLM138は、SSD110がフラッシュに格納された様々なマップページ152を位置確認できる。このために、FLM138は、第一レベルマップエントリ162(FLME又はエントリ)から構成される。各FLME162は、マップページIDフィールド164、PBAフィールド166、オフセットフィールド168及びステータスフィールド170を有する。マップIDは上で説明した。PBAフィールド166は、関連のマップページの位置を記述する。オフセット値は、前述のように、特定のページ又は他の位置に沿ってのビットオフセットとして動作する。ステータス値は、第二レベルマップ内と同じであってもよく、必要に応じて、マップページ自体のステータスに関係していてもよい。前述のように、
図6内のフォーマットは第一レベルマップ内の各エントリの一部を形成するためのマップIDを示すが、他の実施形態では、データ構造内へのインデックスとしてマップIDを代わりに用いて、関連のエントリを位置確認できる。
【0039】
第一レベルマップ(FLM)138は、エントリ0からエントリCまでのエントリ162の全ての配置を構成する。いくつかの場合、BはCと等しいが、これらの値は異なっていてもよい。FLM138へのアクセスは、マップIDによって、フラッシュメモリ118内の所望のマップページの位置の検索を可能にする。フラッシュからの所望のマップページの取得では、そのマップページ内の第二レベルマップエントリを提供し、次に、関連の第二レベルエントリ内のPBA情報に基づいて、別個のLBAを識別し取得できる。
【0040】
図7は、いくつかの実施形態のSSD110によって利用される様々なメモリ位置の配置を示す。これらは、
図2~
図3において上で説明したフラッシュメモリ118とローカル・コア・メモリ128、並びに第一レベルキャッシュ(FLC)180と第二レベルキャッシュ(SLC)182を含む。
【0041】
第一レベルキャッシュ180は、第一キャッシュ及び階層1キャッシュとも呼ばれ、コア制御部のオンボードメモリ等の別個のメモリ位置として想定される。上で説明したように、中断中のホスト・アクセス・コマンドにサービスを提供する際に動作させるマップページは、第一キャッシュにロードされる。
図7は、総数Dのマップページが第一キャッシュ180に存在することを示す。DはD=128等の比較的小さな数であることが想定されるが、他の数を用いることもできる。第一キャッシュのサイズは固定される。
【0042】
第二レベルキャッシュ182は、第二キャッシュ及び階層2キャッシュとも呼ばれ、DDRメモリ122の少なくとも一部を構成すると想定される(
図2参照)。他のメモリ位置を用いることもできる。第二キャッシュのサイズは変更可能であっても固定されていてもよい。第二キャッシュは、マップページの最大数Eまで格納し、EはDより有意に大きなある数である(E>D)。上記のように、第一キャッシュ内のD個の各マップページは第二キャッシュにも格納される。
【0043】
フラッシュ118を主に用いて、マップ構造132によって記述されるユーザ・データ・ブロックを格納するが、このようなストレージは
図7には示されていない。
図7は、第一レベルマップ(FLM)138の一つ以上のバックアップコピー、並びに第二レベルマップ(SLM)140の全コピーがフラッシュメモリに格納されることを示す。SLM140のバックアップコピーは、冗長性のためにフラッシュに格納してもよいが、このような冗長コピーに直接アクセス可能にする前に、FLM138の再構成が必要とされる。上記のように、FLM138は、フラッシュ内のSLM140のマップページの主コピーの位置を指示する。
【0044】
ローカル・コア・メモリ128はFLM138のアクティブコピーを含み、それは必要に応じて、HMA管理部(ハードウェア回路)126によってアクセスされ、以降で説明されるように、必要に応じてフラッシュからマップページを取得する。また、メモリ128は
図3からマップテーブル134を格納し、順テーブル及び逆テーブルとして
図7に配置される。
【0045】
順テーブルは第一テーブルとも呼ばれ、第二キャッシュ182に格納された各マップページに関連した論理アドレスを識別するデータ構造である。逆テーブルは第二テーブルとも呼ばれ、第二キャッシュに各マップページを格納する物理アドレスを識別する。
【0046】
順テーブルは、LBAからDDRへの変換テーブルとして一般に確認できる。所定のLBA(又は所望の論理アドレスに関連した他の入力値)を入力することによって、そのエントリ用の第二キャッシュ(この場合はDDRメモリ)内の関連の位置を位置確認できる。逆テーブルは、DDRからLBAへの変換テーブルとして一般に確認できる。第二キャッシュ(DDRメモリ)に所定の物理アドレスを入力することによって、関連のLBA(又は所望の論理アドレスに関連した他の値)を位置確認できる。
【0047】
図8は、
図3からのコアCPU(プロセッサ)124とMHA管理部(ハードウェア回路)126の間の相互作用を示す機能表現である。
図8の動作は、フラッシュメモリ118からSRAMバッファ122(
図2)に所定のユーザ・データ・ブロック(例えば、LBA)を取得する読込みコマンド等、所定のホスト・アクセス・コマンドの受取りに応じて実行され、ホストへの転送を中断することが想定される。
【0048】
ホスト・アクセス・コマンドにサービスを提供するために、リクエストされたユーザ・データ・ブロック用のマップページは、第一キャッシュ180にロードする必要がある。この動作は、ハードウェア回路に検索コマンドを発行することによって、ハードウェア回路126にプロセッサ124によってオフロードされ、所定の(第一)マップページを検索し、リクエスト済みマップページが第一キャッシュにあることを保証する。
【0049】
いくつかの場合、プロセッサ124は、第一キャッシュ内の置換マップページを識別でき、それはハードウェア回路126によって必要に応じて上書きされ、リクエスト済みマップページを第一キャッシュに取り込むことができる。プロセッサは第一キャッシュ内のマップページの退避上で最終制御を維持できるが、それは、マップページが汚れており、マップページを第一キャッシュから安全に解放可能にする前に洗浄が必要なためである(例えば、ユーザデータ位置等の変化に基づいてマップ構造を更新する)。
【0050】
検索コマンドに応じて、ハードウェア回路126は、様々なメモリ位置、データ構造及びプロセッサにアクセスでき、それらは、第一レベルキャッシュ(FLC)180、第二レベルキャッシュ(SLC)182、第一レベルマップ(FLM)138、フラッシュメモリ118、順テーブル(
図8内の184で示される)、逆テーブル(186で示される)、先入れ先出し(FIFO)リスト188及びバック・エンド・プロセッサ190を含む。
【0051】
FIFOリスト188は、最長未使用時間(LRU)方式等の使用量に基づく第二キャッシュアドレスのリストであってもよい。バック・エンド・プロセッサ190は、バックエンド制御部116内にプログラム可能なプロセッサを備え、関連のプログラミング(FW)を用いて、フラッシュとのプログラミング及び読込み動作を実行する。ハードウェア回路126は、バック・エンド・プロセッサ190への読込みリクエストを導き、プロセッサは必要なデータ調整(例えば、復号化、解凍、誤り訂正等)を実行し、リクエスト済みマップページ用に直接フラッシュにアクセスするのではなく、フラッシュからの所定のマップページにアクセスできる。
【0052】
コアプロセッサ124は、第一レベルキャッシュ180のコンテンツのトップレベル制御を維持するが、それは、これらのエントリが、進行中及び中断中のデータ転送に関連した最も価値のあるマップページを表すためである。第一レベルキャッシュ内のどのマップページがキャッシュ内に留まり、どれが退避に利用可能であるかを決定することは、コアプロセッサ124次第である。このような退避は、コアプロセッサがマップページに関連した残りのタスクを全て完了するまで発生しない。コアプロセッサ124がハードウェア回路126に対して第一キャッシュ内の置換マップページを識別すれば、いくつかの場合、ハードウェア回路は第一キャッシュ内の新しくリクエストされたページで置換ページを上書きすることに進むことができ、プログラム可能なコアプロセッサはこの動作を実行する必要はない。
【0053】
ハードウェア回路126は、このような性能がコアプロセッサによって委譲される範囲に依存して、第二レベルキャッシュ182のコンテンツ上での制御のいくつかの手段を有する。第一レベルキャッシュ180内の各マップページのコピーも、第二レベルキャッシュ182に格納されるが、逆はそうではないことが想記される。新しいマップページを(第二レベルキャッシュ又はフラッシュのいずれかから)第一レベルキャッシュに進めるには通常、第一レベルキャッシュ内の既存のマップページを置換する必要があるが、それは、効率性のために、第一レベルキャッシュが通常(又は常に)いっぱいになっているからである。第一レベルキャッシュへの新しいマップページこの上書きはコアプロセッサによって制御される。ハードウェア回路が第一レベルキャッシュに新しいマップページを実際に書き込むエンティティであっても、コアプロセッサは、第一レベルキャッシュ内のどこに新しいマップページを配置するかをハードウェア回路に伝える。
【0054】
その結果、フラッシュから新しいマップページを取得するには、第一レベルキャッシュと第二レベルキャッシュの両方に新しいマップページを書き込む必要がある。第一レベルキャッシュに導かれるコピーは、コアプロセッサによって識別されたアドレスに提供される。第二レベルキャッシュに導かれるコピーは、
図8のFIFOリスト188のコンテンツに基づいて、ハードウェア回路によって最終的に決定されるアドレスに書き込まれる。
【0055】
FIFOリスト188は、退避候補として利用可能な第二レベルキャッシュ182内の候補位置(アドレス)のコア制御部124によって維持されるデータ構造の一例である。リストは、最長未使用期間(LRU)ベース等の任意の数の適切な方法で生成できる。ハードウェア回路126は、FIFOリストから所定のアドレスを識別し、逆テーブル186を用いて所定のアドレスに格納されたマップページを識別し、第一レベルキャッシュ180を検索し、所定のアドレスにおけるマップページが第一レベルキャッシュに存在するかどうかを確認する。存在する場合、第二レベルキャッシュ内の異なる候補アドレスが識別され、処理を繰り返す。存在しない場合、ハードウェア回路は新しいマップページのストレージ用の位置として所定のアドレスを識別し、書き込まれる新しいマップページをこの位置に導き、それはハードウェア回路又はコア制御部のいずれかによって実行される。
【0056】
図9Aと
図9Bは、いくつかの実施形態に従って、
図8の配置によって実行されるステップを例示するデータ処理ルーチン200を提供する。ルーチンは例示的なものにすぎず、限定的なものではなく、異なる順番又は他のモジュールによって等、様々なステップを付加、省略、実行することもできる。一般に、ルーチン内の各ステップには、「FW」又は「HW」識別子を設ける。FWは、ファームウェアの実行を介してプログラム可能なプロセッサによって実行されるステップを指し、便宜上、ファームウェアによって実行されているとして説明する。HWはハードウェア回路126によって実行されるステップを指し、従って、ハードウェアによって実行されているとして説明する。
【0057】
ルーチンは、ファームウェアによるホスト・アクセス・コマンドの受取り時にステップ202において開始する。それに応じて、ステップ204でハードウェアに第一コマンドを発行し、コマンドに関連した所定のマップページ(「リクエスト済みマップページ」)を位置確認し、必要に応じて、第一キャッシュ180にロードする。第一キャッシュに現在存在する置換マップページは、必要に応じて退避/上書き用に識別することもできる。
【0058】
ハードウェアはステップ206に進み、リクエスト済みマップページ用に第一レベルキャッシュ(FLC又は第一キャッシュ)を検索する。決定ステップ208は、キャッシュヒットが得られた(例えば、リクエスト済みマップページが実際に第一キャッシュに存在する)か、どうかを決定する。得られた場合、フローはステップ210に移動し、ハードウェアは第一キャッシュ内の物理アドレスをファームウェアに通知する。その後、ファームウェアはマップページの使用に進み、ステップ212でコマンドにサービスを提供し、フローはステップ214で終了する。
【0059】
キャッシュミスがステップ208で決定された(例えば、所定のマップページが第一キャッシュに存在しない)場合、ハードウェアはステップ216に続き、順テーブル184にアクセスし、所定のマップページが第二レベルキャッシュ(SLC)に配置されているかどうかを決定する。決定ステップ218は、第二キャッシュでキャッシュヒットが得られたかどうかを決定する。得られた場合、フローはステップ220に移動し、ハードウェアは所定のマップページを第一レベルキャッシュ(FLC)にコピーし、ファームウェアによって識別された置換マップページを上書きする。その後、ステップ210と212は前のように実行される。
【0060】
第二キャッシュでキャッシュミスが決定された(例えば、所定のマップページが第二キャッシュに存在しない)場合、フローは
図9Bまでマーカ「A」に従い、二つの並列の経路がハードウェアによってとられる。
【0061】
第一経路はステップ222で開始し、ハードウェアは第一レベルマップ(FLM)138にアクセスし、所定のマップページのフラッシュアドレスを位置確認する(
図6参照)。ハードウェアは、所定のマップページをフラッシュアドレス位置から取得することのリクエストと共に、ステップ224でバック・エンド・プロセッサ190にフラッシュアドレスを供給する。取得したマップページは、ステップ226で受け取る。
【0062】
第二経路はステップ228で開始し、ハードウェアは第二レベルキャッシュ(SLC)182内の可能な置換位置(物理アドレス)を選択し、フラッシュから取得したマップページを収容する。上記のように、これはFIFOリスト188又は同様のデータ構造を用いて実行できる。ハードウェアはステップ230で逆テーブル186を検索し、どのマップページが置換位置に配置されているかを識別し、第一レベルキャッシュ(FLC)180を検索し、このマップページが第一キャッシュ内にあるかどうかを決定する。ある場合、決定ステップ234で、新しい可能な置換位置を選択し、適切な候補置換位置が見出されるまで処理を繰り返す。
【0063】
その後、二つの経路はステップ236で集束し、ハードウェアはフラッシュメモリから取得した所定のマップページを可能な置換マップページ内の候補置換位置にコピーし、ルーチンはマーカ「B」に従い、
図9Aに戻り、ステップ220、210及び212を実行する。
【0064】
当然のことながら、ハードウェアが第二キャッシュ内で実際に退避を実行するように構成される場合、第二キャッシュのコンテンツの管理は、ハードウェアの制御下にあるように確認できる。もしくは、第一キャッシュと第二キャッシュの両方の管理はプロセッサ(ファームウェア)によって維持でき、ファームウェアが最終的な決定を行う。両方の場合、ハードウェアによって、第二キャッシュ内の候補置換マップページについてファームウェアに通知する。
【0065】
当然のことながら、第二キャッシュ内に部分的なマップを維持することは、第一キャッシュへのマップページのロードを著しく改善できるが、それは、フラッシュからのマップページの取得にバック・エンド・プロセッサを関係させる必要がないためである。どのマップページが第二キャッシュに留まっているかをファームウェアが最終的に決定しても、逆テーブルを用いたハードウェアテーブルによる評価は、この決定を行う際のファームウェアへの作業負荷を著しく低減できる。
【0066】
上記の説明は、ハードウェア回路に検索コマンドを直接通信するプログラム可能なプロセッサを想定したが、このようなことは必須ではない。他の実施形態は、追加のプログラム不可能なハードウェアを用いたコマンド処理を想定し、より高レベルのファームウェアの制御下であっても、ハードウェアは処理中のハードウェアと通信を行う。
【0067】
上で説明したように、ハードウェア回路は、バック・エンド・プロセッサ(コアプロセッサと同じプロセッサであってもよい)にリクエストを発行することなく、リクエスト済みマップページをフラッシュから直接取得するように構成できる。
【0068】
検索コマンドの対象としてユーザデータを考えてきたが、システムの状態を記述するメタデータ等、他の形態のデータを同様に取得することもでき、それは、システム内のユーザデータに関する情報等であるが、それには限定されない。
【0069】
ハードウェア回路の一形態は、第二キャッシュからエントリを選択する機能であり、それは第二キャッシュから自動的に退避するための適切な候補である。逆テーブルは、このような候補を識別する任意の適切なフォーマットをとることができ、必要な情報を提供できるリンクリスト又はいくつかの他の簡単な構造を含むことができる。
【0070】
従って、逆テーブルへの参照は、実際のルックアップテーブルには必ずしも限定されず、むしろ、第二キャッシュ内のアドレスによって上記のようにマップページの指示を実行するのに適切な任意の形態のメタデータである。他の実施形態では、退避用の候補はハードウェア回路によって識別可能であり、ハードウェア回路は実際には自動的に退避を管理し、プログラム可能なプロセッサ等に必ずしも通知する必要はない。
【0071】
ここで当然のことながら、本明細書で開示される様々な実施形態は複数の利点を提供できる。オフロードハードウェア回路を用いて、マルチレベルキャッシュ内のマップデータを管理することは、マップロード機能を著しく加速し、プロセッサ効率を増大できる。様々な実施形態は、フラッシュメモリ付きのソリッド・ステート・ドライブ(SSD)の環境を想定しているが、異なる形態のストレージメモリ、異なる数のキャッシュ等を含む他の構成も容易に使用できる。
【0072】
当然のことながら、本開示内容の様々な実施形態の多数の特徴及び利点が、本開示内容の様々な実施形態の構造及び機能の詳細と共に、上記の説明で述べられているとしても、この詳細な説明は例示的なものにすぎず、添付の請求項で表現される用語の広範囲の一般的な意味によって示される十分な範囲まで、本開示内容の原理内で、特に部品の構造及び配置の問題において、詳細に変更を行ってもよい。