[go: up one dir, main page]

JP2018163659A - 逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション - Google Patents

逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション Download PDF

Info

Publication number
JP2018163659A
JP2018163659A JP2018056219A JP2018056219A JP2018163659A JP 2018163659 A JP2018163659 A JP 2018163659A JP 2018056219 A JP2018056219 A JP 2018056219A JP 2018056219 A JP2018056219 A JP 2018056219A JP 2018163659 A JP2018163659 A JP 2018163659A
Authority
JP
Japan
Prior art keywords
cache
map
map page
stored
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018056219A
Other languages
English (en)
Other versions
JP7046669B2 (ja
JP2018163659A5 (ja
Inventor
ジェフリー・ムンシル
Munsil Jeffrey
ジャクソン・エリス
ellis Jackson
リャン・ジェイ・ゴス
J Goss Ryan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seagate Technology LLC filed Critical Seagate Technology LLC
Publication of JP2018163659A publication Critical patent/JP2018163659A/ja
Publication of JP2018163659A5 publication Critical patent/JP2018163659A5/ja
Application granted granted Critical
Publication of JP7046669B2 publication Critical patent/JP7046669B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

【課題】データ・ストレージ・デバイス内のマップデータを管理する装置及び方法を提供する。【解決手段】プログラム可能なプロセッサは検索コマンドを発行し、マップ構造のリクエスト済みマップページを位置確認し、第一キャッシュに配置し、受け取ったホストコマンドにサービスを提供する。プログラム不可能なハードウェア回路は順テーブルを検索し、リクエスト済みマップページが第二キャッシュ内にあるかどうかを決定し、ある場合、マップページを第一キャッシュにロードする。ない場合、ハードウェア回路は、バック・エンド・プロセッサからリクエスト済みマップページをリクエストし、フラッシュメモリアレイ等の不揮発性メモリ(NVM)からリクエスト済みマップページを取得する。ハードウェア回路は逆テーブルと第一キャッシュを検索し、NVMから取得したリクエスト済みマップページ用の第二キャッシュ内の候補位置を選択し、リクエスト済みマップページのコピーのストレージを候補位置に導く。【選択図】図1

Description

[関連出願]
本出願は、米国特許法第119条(e)の定めにより、米国仮出願第62/476,178号、出願日2017年3月24日について国内優先権を主張し、その内容は参照によってここで組み込まれる。
本発明の様々な実施形態は、一般にデータ・ストレージ・デバイス内のデータ管理に関する。
いくつかの実施形態において、装置は、複数のマップページとして不揮発性メモリ(NVM)に格納されたマップ構造を有し、ユーザ・データ・ブロックの論理アドレスを、ユーザブロックが格納されたNVM内の物理アドレスと関連付ける。第一キャッシュは、NVMに格納されたマップページの第一サブセットのコピーを格納し、第二キャッシュは、NVMに格納されたマップページの第一サブセットのコピー、並びにマップページの第二サブセットのコピーを格納する。
プログラム可能なプロセッサは、関連のメモリに格納されたプログラミングを有し、実行されると、検索コマンドを発行し、受け取ったホストコマンドに関連したリクエスト済みマップページを位置確認し、第一キャッシュ内に配置する。プログラム不可能なハードウェア回路は、検索コマンドに応じて、NVMからリクエスト済みマップページの取得を導き、メモリ内の逆テーブルにアクセスし、第二キャッシュ内の所定の物理アドレスに格納された可能な置換マップページを識別し、可能な置換マップページは第一キャッシュのマップページの第一サブセット内にはないという、プログラム不可能なハードウェア回路による決定に応じて、第二キャッシュ内の所定の物理アドレスへのリクエスト済みマップページのコピーの書込みを導くように構成される。
本開示内容の様々な実施形態を特徴付けるこれらの及び他の機能及び利点は、以降の詳細な説明及び添付の図面を考慮することで理解可能になる。
本開示内容の様々な実施形態による一例のデータ・ストレージ・デバイスの機能ブロック表現を提供する。 いくつかの実施形態によるソリッド・ステート・ドライブ(SSD)として構成される図1のデータ・ストレージ・デバイスの形態を示す。 図2の一例のSSDのコア制御部の機能ブロック表現である。 いくつかの実施形態におけるマルチレベルマップ構造の一例のフォーマットを示す。 マップ構造の第二レベルマップ(SLM)の一例のフォーマットを示す。 マップ構造の第一レベルマップ(FLM)の一例のフォーマットを示す。 いくつかの実施形態におけるSSDのその様々なメモリ及びコンテンツを示す。 いくつかの実施形態の図3のコア制御部の非プロセッサベースのオフロード・マップ・ハードウェア支援(MHA)管理部と、コア中央処理ユニット(CPU)のプログラム可能なプロセッサとの間の通信の機能ブロック表現である。 本開示内容のいくつかの実施形態に従って実行されるステップを示すデータ処理ルーチンのフローチャートを提供する。 本開示内容のいくつかの実施形態に従って実行されるステップを示すデータ処理ルーチンのフローチャートを提供する。
[詳細な説明]
本開示内容は、一般にデータストレージに関し、より詳細には、ハードウェア回路を用いてデータ・ストレージ・デバイス内のマップデータを管理し、プログラム可能なプロセッサからキャッシュ管理タスクをオフロードする方法及び装置に関する。
データ・ストレージ・デバイスを用いて、素早く効率的な形態でユーザデータの格納及び取得を行う。マップ構造をしばしば用いて、ストレージデバイスの主メモリに格納されたユーザデータの物理的位置を追跡し、デバイスが既に格納されたデータを位置確認し取得できるようにする。このようなマップ構造は、ホストから受け取ったデータブロックの論理アドレスと、媒体の物理的アドレス並びにデータに関連した他のステータス情報を関連付けることができる。
マップ構造の管理は、ホストデバイスからのアクセスコマンド(例えば、読込みコマンド、書込みコマンド、ステータスコマンド等)にサービスを提供する際に、ストレージデバイス制御部に著しい処理ボトルネックを提供する可能性がある。これは、フラッシュメモリ及び他の形態の消去可能な媒体の場合、特に当てはまる。SSD等のフラッシュメモリベースのストレージデバイスでは、所定データブロックの順次受け取った各バージョンは、フラッシュメモリ内の異なる位置に格納できる。
本開示内容の様々な実施形態は、一般にデータ・ストレージ・デバイス内のデータ管理に関する。以降で説明するように、いくつかの実施形態において、データ・ストレージ・デバイスには、制御回路と、不揮発性メモリつまりNVMとして特徴付けられる主メモリを設ける。NVMはフラッシュメモリアレイの形態をとることができる。
制御回路はトップレベル制御機能を提供し、NVMとホストデバイスの間のユーザ・データ・ブロックの転送を導く。NVMに格納されたユーザ・データ・ブロックは、複数のマップページを有するマップ構造によって記述され、ホストデバイスによって用いられる論理アドレスと、NVMの物理アドレスとの間の関係を記述する。マップ構造は、マルチレベルマップ構造であってもよく、他の形態をとることもできる。
制御回路はプログラム可能なプロセッサを含み、メモリ位置に格納されたプログラミング(例えば、ファームウェア)を用いて、ホスト・アクセス・コマンドを処理する。受け取った各アクセスコマンドに関連したデータ用のマップページを、コマンドがサービスを受取り可能になる前に、マルチキャッシュ構造の第一キャッシュにロードする必要がある。
マルチキャッシュ構造は、第一キャッシュと少なくとも第二キャッシュを含む。追加のキャッシュレベルを同様に用いることもできる。マップページの小さな(第一)サブセットは第一キャッシュに維持される。第二キャッシュは、マップページのより大きなサブセットを格納し、第一キャッシュ内の各マップページも第二キャッシュ内に維持される。これを確認する別の方法は、第二キャッシュがマップページの第一サブセットを格納し、第二キャッシュがマップページの第一サブセット並びに第二サブセットを格納することである。全てのマップページ(例えば、マップ構造全体)もNVM内に維持される。
プログラム可能なプロセッサは、所定の動作を非プロセッサベースのハードウェア回路にオフロードし、マップページを位置確認し、第一キャッシュにロードする。プロセッサからの検索コマンドに応じて、ハードウェア回路は検索(例えば、アクセス動作)をまず実行し、リクエスト済みの(第一)マップページが既に第一キャッシュ内にあるかどうかを決定する。ある場合、ハードウェア回路は第一キャッシュ内の関連のアドレス(キャッシュライン)をプロセッサに通知する。
第一キャッシュ上にキャッシュミスがある(例えば、リクエスト済みマップページが第一キャッシュに存在しない)場合、ハードウェア回路はメモリ内の順テーブルを検索し、第二キャッシュに格納された各マップページに関連した論理アドレスを識別する。リクエスト済みマップページが第二キャッシュにあることを順テーブルが示した場合、ハードウェア回路は、リクエスト済みマップページを第二キャッシュから第一キャッシュにコピーし、プロセッサに通知する。第一キャッシュは通常いっぱいであるので、少なくとも一つの既存のマップページは第一キャッシュから退避させ、リクエスト済みマップページ用の余裕を与える必要がある。プロセッサは、検索コマンドと共に、必要に応じて、リクエスト済みマップページによって置換される第一キャッシュ内の犠牲(置換)マップページを識別できる。
第二キャッシュ上にキャッシュミスがある(例えば、リクエスト済みマップページが第二キャッシュ内に配置されていない)場合、ハードウェア回路は、NVM(例えば、フラッシュ)からのリクエスト済みマップページの取得と、リクエスト済みマップページによって置換される第二キャッシュ内の候補(第二)マップページの選択という二つの同時動作を導く。
リクエスト済みマップページをNVMから取得するために、ハードウェア回路はマップ構造の第一レベルマップにアクセスし、リクエスト済みマップページのフラッシュアドレスを位置確認し、制御部のバック・エンド・プロセッサにリクエストを発行し、リクエスト済みマップページをNVMからローカルメモリ内に取得する。
リクエスト済みマップページによって置換される第二キャッシュ内の可能な置換マップページを識別するために、ハードウェア回路は、第二キャッシュ内の所定の物理アドレスを識別し、ローカルメモリ内の逆テーブルを検索する。逆テーブルは、各マップページが第二キャッシュに格納される物理アドレスを指定する。従って、逆テーブルは、所定の物理アドレスに格納される可能な置換マップページを識別する。ハードウェア回路は第一キャッシュを検索し、可能な置換マップページが第一キャッシュ内にもあるかどうかを決定する。ある場合、第二キャッシュ内の新しい物理アドレスを選択し、可能な置換マップページが置換の候補として識別されるまで処理を繰り返す。先入れ先出し(FIFO)リスト又は同様の機構を用いて、第二キャッシュからそのコンテンツの退避用の候補物理アドレスを追跡し選択することができる(例えば、新しいページをその位置に上書きする)。可能な置換ページは、プログラム可能なプロセッサによって管理されるローカルメモリ内の先入れ先出し(FIFO)リストから供給できる。
FIFO機構は、様々な形態をとることができる。いくつかの場合、カウンタを用いて、第一位置0から最終位置N−1までラップをとり、その後、0に戻ることができる。カウンタ値は、システムが位置0、次に1、次に2等をN−1まで置換し、その後、カウンタが再び0に戻るように用いられる。第一キャッシュ内にあるように決定される任意の位置をスキップする。所定の動作が第一カウント値で終了した(例えば、位置3が更新される)場合、次の評価サイクルはそのシーケンス内の次のカウント値(例えば、位置4)で始まる。
上記の動作はブロッキング及びアトミックである。ハードウェア回路は、第一及び第二キャッシュの各々にマップページを物理的に書き込むことも、プログラム可能なプロセッサによって使用可能なポインタを確立し、リクエスト済みマップページを位置確認し使用することもできる。このように、様々なマップ位置確認機能を別個のハードウェアによって実行でき、プログラム可能なプロセッサを占有する必要はなく、プロセッサはより高い優先度のタスクを実行し、ストレージデバイスのデータ転送速度I/O性能を促進できる。
本開示内容の様々な実施形態のこれらの及び他の機能及び利点は、図1の検討を開始することで理解でき、図1はデータ・ストレージ・デバイス100の簡略化された機能ブロック表現を提供する。
デバイス100は制御部102とメモリモジュール104を含む。制御部102はデバイス100用のトップレベル制御を提供し、複数の回路要素として構成でき、ローカルメモリ内の関連のプログラミングを備えたプログラム可能なプロセッサ、並びに一つ以上の非プロセッサベースのハードウェア回路を含む。
メモリモジュール104は、回転可能記録媒体(ディスク)及びソリッド・ステート・メモリ・アレイ等の一つ以上の不揮発性メモリ要素として配置できる。別個の制御部102が図1には示されているが、別の実施形態が、任意の必須の制御機能をメモリモジュールに直接組み込むことができる場合、このようものは不要である。
メモリモジュール104は、ホストデバイスからのユーザデータ用の主ストアとして機能する。ホストデバイスは、ストレージデバイス100と通信する任意のデバイスであってもよい。例えば、限定的なものではなく、ストレージデバイスはホストデバイスに物理的に組み込んでもよく、又はストレージデバイスは、任意の適切なプロトコルを用いてネットワークを介してホストデバイスと通信してもよい。いくつかの実施形態において、ストレージデバイス100は、分散オブジェクトストレージシステム、クラウドベースのコンピューティング環境、RAID(独立ディスク冗長アレイ)システム等の、マスストレージ環境内のマルチデバイス・ストレージ・エンクロージャの一部を形成するように構成される。
図2は、いくつかの実施形態によるデータ・ストレージ・デバイス110の機能ブロック表現である。デバイス110は一般にデバイス100に対応し、主メモリストアとして二次元(2D)又は三次元(3D)NANDフラッシュメモリを用いるソリッド・ステート・ドライブ(SSD)として特徴付けられる。これは例示的な目的のためだけであって、限定的なものではない。他の回路及び部品を必要に応じてSSD110に組み込んでもよいが、このようなものは簡略化のために図2からは省略されている。図2の回路は、システムオンチップ(SOC)デバイス等の単一の集積回路(IC)に組み込んでもよく、マルチ接続ICデバイスを含んでいてもよい。
図1からの制御機能は、ホストインタフェース(I/F)制御回路112、コア制御回路114及びデバイスI/F制御回路116によって実行される。ホストI/F制御回路112はフロントエンド制御部又はプロセッサと呼ばれることもあり、デバイスI/F制御回路116はバックエンド制御部又はプロセッサと呼ばれることもある。各制御部112、114及び116は、適切なメモリ位置に関連のプログラミング(例えば、ファームウェアFW)を備えた別個のプログラム可能なプロセッサ、並びに様々なハードウェア要素を含み、データ管理及び転送機能を実行する。これは一実施形態の例示的なものにすぎない。他の実施形態において、単一のプログラム可能なプロセッサ(又は三[3]つより少ないプログラム可能なプロセッサ)を構成し、適切なメモリ位置の関連のFWを用いて、フロントエンド、コア及びバックエンド処理を各々実行することもできる。
フロントエンド制御部112は、ホストデバイス(別個には図示せず)とのホスト通信を処理する。バックエンド制御部116は、フラッシュメモリ118とのデータの読み/書き/消去(R/W/E)を管理する。フラッシュメモリ118は、不揮発性メモリ(NVM)又は主メモリとも呼ばれ、複数のフラッシュ基板から構成され、並列データ演算を促進できる。コア制御部114は、主制御部又は中間制御部とも呼ばれ、デバイス110用の主データ管理及び制御を実行する。
図3は、いくつかの実施形態において図2からのコア制御部114を示す。他の構成を用いることもできるので、これは例示的なものにすぎず、限定的なものではない。SRAMメモリ120は、バッファメモリ空間専用の揮発性メモリであり、フラッシュ118とのデータ転送動作中にユーザデータを一時的に格納する。DDR(DRAM/SDRAM)メモリ122は揮発性メモリであり、バッファメモリとして用いることも、並びにシステムによって用いられる他のデータを格納こともできる。各メモリ120、122は単一の集積回路(IC)として実現してもよく、複数の物理メモリデバイス上に分散させ、組み合わせたとき、全体で利用可能なメモリ空間を提供してもよい。
コアプロセッサ(中央処理ユニットCPU)124はプログラム可能なプロセッサであり、コア制御部114用の主処理エンジンを提供する。マップハードウェア支援(MHA)管理回路126は、非プロセッサベースのオフロードハードウェア回路であり、以降で説明するようにコアプロセッサ124によって導かれるオフロード機能を実行する。
ローカルメモリは一般に128に示される。このメモリは、一つ以上の別個のローカルメモリを備えるように想定され、コア制御部によって用いられる様々なデータ構造を格納するために使用でき、それらは、コアプロセッサ126によって用いられるファームウェア(FW)プログラミング130、システムマップ132及び様々なマップテーブル134を含む。
この点において、用語「プロセッサ」と、「非プロセッサベースの」、「プログラム不可能な」及び「ハードウェア」等の用語とを区別することは有用である。本明細書で用いられるように、用語のプロセッサは、様々な機能を実行するために命令(例えば、FW)を実行するCPU又は同様のプログラム可能デバイスを指す。用語の非プロセッサ、非プロセッサベースの、プログラム不可能な、ハードウェア等は、MHA管理部126によって例示され、メモリに格納されたプログラミングを利用しないが、代わりに、動作するための様々なハードウェア回路要素(論理ゲート、FPGA等)によって構成される回路を指す。MHA管理部126は、状態マシン又は他の有線デバイスとして機能する。管理部は、直接メモリアクセス(DMA)、検索、ロード、比較等の様々な動作能力及び機能を有する。
マップ132は、第一レベルマップ138と第二レベルマップ140を備えたマルチレベルマップとして図4にはより完全に示されている。2レベルマップがSSD110によって用いられるが、単一レベルマップ、又は2レベルより多くを備えたマルチレベルマップを含む、他のマップ構造も容易に使用できる。
第二レベルマップ(SLM)140の一例の構造は図5に示されている。SLM140は、複数の第二レベルマップエントリ142(SLME又はエントリ)からなり、フラッシュ118に存在するか、又はそこに書込み可能なユーザデータの別個のブロックを記述する。この例では、ブロックはマップユニット(MU)とも呼ばれ、長さ4KB(4096バイト)に設定されるが、他のサイズを用いることもできる。SLM140は、所定の論理アドレスが用いられなかった、又は用いられない場合でさえ、SSD110によって収容可能なブロックの論理アドレスの全体の可能な範囲を記述する。
各エントリ142は複数のフィールドを含み、それらは、論理ブロックアドレス(LBA)フィールド144、物理ブロックアドレスフィールド146、オフセットフィールド148及びステータスフィールド150を含む。他のフォーマットを用いることもできる。LBA値は、最小値から最大値までシーケンシャルである(例えば、LBA−0からLBA−Nまであり、NはSSDの全体のデータ容量によって決定される、ある大きな数である)。キー値、仮想ブロックアドレス等、他の論理アドレス指定方式を用いることもできる。LBA値はエントリの一部を形成できるが、他の実施形態では、LBAは、関連のデータ構造内へのインデックスとして代わりに使用し、様々なエントリを位置確認できる。
典型的なフラッシュアレイにおいて、データブロックはページとして配置され、特定の消去ブロック内のフラッシュメモリセルの行に沿って書き込まれる。PBAは、アレイ、基板、ガベージコレクションユニット(GCU)、消去ブロック、ページ等の用語で表現してもよい。オフセット値は、メモリの所定のページに沿ってのビットオフセットであってもよい。ステータス値は、関連のブロックのステータス(例えば、有効、無効、空等)を示すことができる。
エントリ142のグループは、本明細書ではマップページ152と呼ばれるデータのより大きなセット内に配置される。各マップページには、いくつかの所定数のエントリ(変数Aによって表される)が提供される。この場合、各マップページ144は全部で100個のエントリを有する。各ページには、2の累乗である数を含むエントリの他のグループを作成することもできる。
第二レベルマップ(SLM)140は、システム内のマップページ152の全ての配置を構成する。SSDの全ストレージ容量を記述するために、いくつかの大きな総数のマップページBが必要になることも想定される。各マップページは関連のマップID値を有し、それは0からBまでの連続的な数であってもよい。SLM140はNVM(フラッシュ118)に格納されるが、SLMはフラッシュ内の集中させた位置ではなく、様々な基板の異なるセットにわたって書き込まれる場合もある。
図4からの第一レベルマップ(FLM)138の配置は図6に示される。FLM138は、SSD110がフラッシュに格納された様々なマップページ152を位置確認できる。このために、FLM138は、第一レベルマップエントリ162(FLME又はエントリ)から構成される。各FLME162は、マップページIDフィールド164、PBAフィールド166、オフセットフィールド168及びステータスフィールド170を有する。マップIDは上で説明した。PBAフィールド166は、関連のマップページの位置を記述する。オフセット値は、前述のように、特定のページ又は他の位置に沿ってのビットオフセットとして動作する。ステータス値は、第二レベルマップ内と同じであってもよく、必要に応じて、マップページ自体のステータスに関係していてもよい。前述のように、図6内のフォーマットは第一レベルマップ内の各エントリの一部を形成するためのマップIDを示すが、他の実施形態では、データ構造内へのインデックスとしてマップIDを代わりに用いて、関連のエントリを位置確認できる。
第一レベルマップ(FLM)138は、エントリ0からエントリCまでのエントリ162の全ての配置を構成する。いくつかの場合、BはCと等しいが、これらの値は異なっていてもよい。FLM138へのアクセスは、マップIDによって、フラッシュメモリ118内の所望のマップページの位置の検索を可能にする。フラッシュからの所望のマップページの取得では、そのマップページ内の第二レベルマップエントリを提供し、次に、関連の第二レベルエントリ内のPBA情報に基づいて、別個のLBAを識別し取得できる。
図7は、いくつかの実施形態のSSD110によって利用される様々なメモリ位置の配置を示す。これらは、図2〜図3において上で説明したフラッシュメモリ118とローカル・コア・メモリ128、並びに第一レベルキャッシュ(FLC)180と第二レベルキャッシュ(SLC)182を含む。
第一レベルキャッシュ180は、第一キャッシュ及び階層1キャッシュとも呼ばれ、コア制御部のオンボードメモリ等の別個のメモリ位置として想定される。上で説明したように、中断中のホスト・アクセス・コマンドにサービスを提供する際に動作させるマップページは、第一キャッシュにロードされる。図7は、総数Dのマップページが第一キャッシュ180に存在することを示す。DはD=128等の比較的小さな数であることが想定されるが、他の数を用いることもできる。第一キャッシュのサイズは固定される。
第二レベルキャッシュ182は、第二キャッシュ及び階層2キャッシュとも呼ばれ、DDRメモリ122の少なくとも一部を構成すると想定される(図2参照)。他のメモリ位置を用いることもできる。第二キャッシュのサイズは変更可能であっても固定されていてもよい。第二キャッシュは、マップページの最大数Eまで格納し、EはDより有意に大きなある数である(E>D)。上記のように、第一キャッシュ内のD個の各マップページは第二キャッシュにも格納される。
フラッシュ118を主に用いて、マップ構造132によって記述されるユーザ・データ・ブロックを格納するが、このようなストレージは図7には示されていない。図7は、第一レベルマップ(FLM)138の一つ以上のバックアップコピー、並びに第二レベルマップ(SLM)140の全コピーがフラッシュメモリに格納されることを示す。SLM140のバックアップコピーは、冗長性のためにフラッシュに格納してもよいが、このような冗長コピーに直接アクセス可能にする前に、FLM138の再構成が必要とされる。上記のように、FLM138は、フラッシュ内のSLM140のマップページの主コピーの位置を指示する。
ローカル・コア・メモリ128はFLM138のアクティブコピーを含み、それは必要に応じて、HMA管理部(ハードウェア回路)126によってアクセスされ、以降で説明されるように、必要に応じてフラッシュからマップページを取得する。また、メモリ128は図3からマップテーブル134を格納し、順テーブル及び逆テーブルとして図7に配置される。
順テーブルは第一テーブルとも呼ばれ、第二キャッシュ182に格納された各マップページに関連した論理アドレスを識別するデータ構造である。逆テーブルは第二テーブルとも呼ばれ、第二キャッシュに各マップページを格納する物理アドレスを識別する。
順テーブルは、LBAからDDRへの変換テーブルとして一般に確認できる。所定のLBA(又は所望の論理アドレスに関連した他の入力値)を入力することによって、そのエントリ用の第二キャッシュ(この場合はDDRメモリ)内の関連の位置を位置確認できる。逆テーブルは、DDRからLBAへの変換テーブルとして一般に確認できる。第二キャッシュ(DDRメモリ)に所定の物理アドレスを入力することによって、関連のLBA(又は所望の論理アドレスに関連した他の値)を位置確認できる。
図8は、図3からのコアCPU(プロセッサ)124とMHA管理部(ハードウェア回路)126の間の相互作用を示す機能表現である。図8の動作は、フラッシュメモリ118からSRAMバッファ122(図2)に所定のユーザ・データ・ブロック(例えば、LBA)を取得する読込みコマンド等、所定のホスト・アクセス・コマンドの受取りに応じて実行され、ホストへの転送を中断することが想定される。
ホスト・アクセス・コマンドにサービスを提供するために、リクエストされたユーザ・データ・ブロック用のマップページは、第一キャッシュ180にロードする必要がある。この動作は、ハードウェア回路に検索コマンドを発行することによって、ハードウェア回路126にプロセッサ124によってオフロードされ、所定の(第一)マップページを検索し、リクエスト済みマップページが第一キャッシュにあることを保証する。
いくつかの場合、プロセッサ124は、第一キャッシュ内の置換マップページを識別でき、それはハードウェア回路126によって必要に応じて上書きされ、リクエスト済みマップページを第一キャッシュに取り込むことができる。プロセッサは第一キャッシュ内のマップページの退避上で最終制御を維持できるが、それは、マップページが汚れており、マップページを第一キャッシュから安全に解放可能にする前に洗浄が必要なためである(例えば、ユーザデータ位置等の変化に基づいてマップ構造を更新する)。
検索コマンドに応じて、ハードウェア回路126は、様々なメモリ位置、データ構造及びプロセッサにアクセスでき、それらは、第一レベルキャッシュ(FLC)180、第二レベルキャッシュ(SLC)182、第一レベルマップ(FLM)138、フラッシュメモリ118、順テーブル(図8内の184で示される)、逆テーブル(186で示される)、先入れ先出し(FIFO)リスト188及びバック・エンド・プロセッサ190を含む。
FIFOリスト188は、最長未使用時間(LRU)方式等の使用量に基づく第二キャッシュアドレスのリストであってもよい。バック・エンド・プロセッサ190は、バックエンド制御部116内にプログラム可能なプロセッサを備え、関連のプログラミング(FW)を用いて、フラッシュとのプログラミング及び読込み動作を実行する。ハードウェア回路126は、バック・エンド・プロセッサ190への読込みリクエストを導き、プロセッサは必要なデータ調整(例えば、復号化、解凍、誤り訂正等)を実行し、リクエスト済みマップページ用に直接フラッシュにアクセスするのではなく、フラッシュからの所定のマップページにアクセスできる。
コアプロセッサ124は、第一レベルキャッシュ180のコンテンツのトップレベル制御を維持するが、それは、これらのエントリが、進行中及び中断中のデータ転送に関連した最も価値のあるマップページを表すためである。第一レベルキャッシュ内のどのマップページがキャッシュ内に留まり、どれが退避に利用可能であるかを決定することは、コアプロセッサ124次第である。このような退避は、コアプロセッサがマップページに関連した残りのタスクを全て完了するまで発生しない。コアプロセッサ124がハードウェア回路126に対して第一キャッシュ内の置換マップページを識別すれば、いくつかの場合、ハードウェア回路は第一キャッシュ内の新しくリクエストされたページで置換ページを上書きすることに進むことができ、プログラム可能なコアプロセッサはこの動作を実行する必要はない。
ハードウェア回路126は、このような性能がコアプロセッサによって委譲される範囲に依存して、第二レベルキャッシュ182のコンテンツ上での制御のいくつかの手段を有する。第一レベルキャッシュ180内の各マップページのコピーも、第二レベルキャッシュ182に格納されるが、逆はそうではないことが想記される。新しいマップページを(第二レベルキャッシュ又はフラッシュのいずれかから)第一レベルキャッシュに進めるには通常、第一レベルキャッシュ内の既存のマップページを置換する必要があるが、それは、効率性のために、第一レベルキャッシュが通常(又は常に)いっぱいになっているからである。第一レベルキャッシュへの新しいマップページこの上書きはコアプロセッサによって制御される。ハードウェア回路が第一レベルキャッシュに新しいマップページを実際に書き込むエンティティであっても、コアプロセッサは、第一レベルキャッシュ内のどこに新しいマップページを配置するかをハードウェア回路に伝える。
その結果、フラッシュから新しいマップページを取得するには、第一レベルキャッシュと第二レベルキャッシュの両方に新しいマップページを書き込む必要がある。第一レベルキャッシュに導かれるコピーは、コアプロセッサによって識別されたアドレスに提供される。第二レベルキャッシュに導かれるコピーは、図8のFIFOリスト188のコンテンツに基づいて、ハードウェア回路によって最終的に決定されるアドレスに書き込まれる。
FIFOリスト188は、退避候補として利用可能な第二レベルキャッシュ182内の候補位置(アドレス)のコア制御部124によって維持されるデータ構造の一例である。リストは、最長未使用期間(LRU)ベース等の任意の数の適切な方法で生成できる。ハードウェア回路126は、FIFOリストから所定のアドレスを識別し、逆テーブル186を用いて所定のアドレスに格納されたマップページを識別し、第一レベルキャッシュ180を検索し、所定のアドレスにおけるマップページが第一レベルキャッシュに存在するかどうかを確認する。存在する場合、第二レベルキャッシュ内の異なる候補アドレスが識別され、処理を繰り返す。存在しない場合、ハードウェア回路は新しいマップページのストレージ用の位置として所定のアドレスを識別し、書き込まれる新しいマップページをこの位置に導き、それはハードウェア回路又はコア制御部のいずれかによって実行される。
図9Aと図9Bは、いくつかの実施形態に従って、図8の配置によって実行されるステップを例示するデータ処理ルーチン200を提供する。ルーチンは例示的なものにすぎず、限定的なものではなく、異なる順番又は他のモジュールによって等、様々なステップを付加、省略、実行することもできる。一般に、ルーチン内の各ステップには、「FW」又は「HW」識別子を設ける。FWは、ファームウェアの実行を介してプログラム可能なプロセッサによって実行されるステップを指し、便宜上、ファームウェアによって実行されているとして説明する。HWはハードウェア回路126によって実行されるステップを指し、従って、ハードウェアによって実行されているとして説明する。
ルーチンは、ファームウェアによるホスト・アクセス・コマンドの受取り時にステップ202において開始する。それに応じて、ステップ204でハードウェアに第一コマンドを発行し、コマンドに関連した所定のマップページ(「リクエスト済みマップページ」)を位置確認し、必要に応じて、第一キャッシュ180にロードする。第一キャッシュに現在存在する置換マップページは、必要に応じて退避/上書き用に識別することもできる。
ハードウェアはステップ206に進み、リクエスト済みマップページ用に第一レベルキャッシュ(FLC又は第一キャッシュ)を検索する。決定ステップ208は、キャッシュヒットが得られた(例えば、リクエスト済みマップページが実際に第一キャッシュに存在する)か、どうかを決定する。得られた場合、フローはステップ210に移動し、ハードウェアは第一キャッシュ内の物理アドレスをファームウェアに通知する。その後、ファームウェアはマップページの使用に進み、ステップ212でコマンドにサービスを提供し、フローはステップ214で終了する。
キャッシュミスがステップ208で決定された(例えば、所定のマップページが第一キャッシュに存在しない)場合、ハードウェアはステップ216に続き、順テーブル184にアクセスし、所定のマップページが第二レベルキャッシュ(SLC)に配置されているかどうかを決定する。決定ステップ218は、第二キャッシュでキャッシュヒットが得られたかどうかを決定する。得られた場合、フローはステップ220に移動し、ハードウェアは所定のマップページを第一レベルキャッシュ(FLC)にコピーし、ファームウェアによって識別された置換マップページを上書きする。その後、ステップ210と212は前のように実行される。
第二キャッシュでキャッシュミスが決定された(例えば、所定のマップページが第二キャッシュに存在しない)場合、フローは図9Bまでマーカ「A」に従い、二つの並列の経路がハードウェアによってとられる。
第一経路はステップ222で開始し、ハードウェアは第一レベルマップ(FLM)138にアクセスし、所定のマップページのフラッシュアドレスを位置確認する(図6参照)。ハードウェアは、所定のマップページをフラッシュアドレス位置から取得することのリクエストと共に、ステップ224でバック・エンド・プロセッサ190にフラッシュアドレスを供給する。取得したマップページは、ステップ226で受け取る。
第二経路はステップ228で開始し、ハードウェアは第二レベルキャッシュ(SLC)182内の可能な置換位置(物理アドレス)を選択し、フラッシュから取得したマップページを収容する。上記のように、これはFIFOリスト188又は同様のデータ構造を用いて実行できる。ハードウェアはステップ230で逆テーブル186を検索し、どのマップページが置換位置に配置されているかを識別し、第一レベルキャッシュ(FLC)180を検索し、このマップページが第一キャッシュ内にあるかどうかを決定する。ある場合、決定ステップ234で、新しい可能な置換位置を選択し、適切な候補置換位置が見出されるまで処理を繰り返す。
その後、二つの経路はステップ236で集束し、ハードウェアはフラッシュメモリから取得した所定のマップページを可能な置換マップページ内の候補置換位置にコピーし、ルーチンはマーカ「B」に従い、図9Aに戻り、ステップ220、210及び212を実行する。
当然のことながら、ハードウェアが第二キャッシュ内で実際に退避を実行するように構成される場合、第二キャッシュのコンテンツの管理は、ハードウェアの制御下にあるように確認できる。もしくは、第一キャッシュと第二キャッシュの両方の管理はプロセッサ(ファームウェア)によって維持でき、ファームウェアが最終的な決定を行う。両方の場合、ハードウェアによって、第二キャッシュ内の候補置換マップページについてファームウェアに通知する。
当然のことながら、第二キャッシュ内に部分的なマップを維持することは、第一キャッシュへのマップページのロードを著しく改善できるが、それは、フラッシュからのマップページの取得にバック・エンド・プロセッサを関係させる必要がないためである。どのマップページが第二キャッシュに留まっているかをファームウェアが最終的に決定しても、逆テーブルを用いたハードウェアテーブルによる評価は、この決定を行う際のファームウェアへの作業負荷を著しく低減できる。
上記の説明は、ハードウェア回路に検索コマンドを直接通信するプログラム可能なプロセッサを想定したが、このようなことは必須ではない。他の実施形態は、追加のプログラム不可能なハードウェアを用いたコマンド処理を想定し、より高レベルのファームウェアの制御下であっても、ハードウェアは処理中のハードウェアと通信を行う。
上で説明したように、ハードウェア回路は、バック・エンド・プロセッサ(コアプロセッサと同じプロセッサであってもよい)にリクエストを発行することなく、リクエスト済みマップページをフラッシュから直接取得するように構成できる。
検索コマンドの対象としてユーザデータを考えてきたが、システムの状態を記述するメタデータ等、他の形態のデータを同様に取得することもでき、それは、システム内のユーザデータに関する情報等であるが、それには限定されない。
ハードウェア回路の一形態は、第二キャッシュからエントリを選択する機能であり、それは第二キャッシュから自動的に退避するための適切な候補である。逆テーブルは、このような候補を識別する任意の適切なフォーマットをとることができ、必要な情報を提供できるリンクリスト又はいくつかの他の簡単な構造を含むことができる。
従って、逆テーブルへの参照は、実際のルックアップテーブルには必ずしも限定されず、むしろ、第二キャッシュ内のアドレスによって上記のようにマップページの指示を実行するのに適切な任意の形態のメタデータである。他の実施形態では、退避用の候補はハードウェア回路によって識別可能であり、ハードウェア回路は実際には自動的に退避を管理し、プログラム可能なプロセッサ等に必ずしも通知する必要はない。
ここで当然のことながら、本明細書で開示される様々な実施形態は複数の利点を提供できる。オフロードハードウェア回路を用いて、マルチレベルキャッシュ内のマップデータを管理することは、マップロード機能を著しく加速し、プロセッサ効率を増大できる。様々な実施形態は、フラッシュメモリ付きのソリッド・ステート・ドライブ(SSD)の環境を想定しているが、異なる形態のストレージメモリ、異なる数のキャッシュ等を含む他の構成も容易に使用できる。
当然のことながら、本開示内容の様々な実施形態の多数の特徴及び利点が、本開示内容の様々な実施形態の構造及び機能の詳細と共に、上記の説明で述べられているとしても、この詳細な説明は例示的なものにすぎず、添付の請求項で表現される用語の広範囲の一般的な意味によって示される十分な範囲まで、本開示内容の原理内で、特に部品の構造及び配置の問題において、詳細に変更を行ってもよい。

Claims (20)

  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に記載の方法。
JP2018056219A 2017-03-24 2018-03-23 逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション Active JP7046669B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762476178P 2017-03-24 2017-03-24
US62/476,178 2017-03-24
US15/605,442 US10126964B2 (en) 2017-03-24 2017-05-25 Hardware based map acceleration using forward and reverse cache tables
US15/605,442 2017-05-25

Publications (3)

Publication Number Publication Date
JP2018163659A true JP2018163659A (ja) 2018-10-18
JP2018163659A5 JP2018163659A5 (ja) 2021-01-28
JP7046669B2 JP7046669B2 (ja) 2022-04-04

Family

ID=63581054

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018056219A Active JP7046669B2 (ja) 2017-03-24 2018-03-23 逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション

Country Status (5)

Country Link
US (1) US10126964B2 (ja)
JP (1) JP7046669B2 (ja)
KR (1) KR20180108513A (ja)
CN (1) CN108628772A (ja)
TW (1) TWI673608B (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10229052B2 (en) * 2017-05-31 2019-03-12 Seagate Technology Llc Reverse map logging in physical media
US11138069B2 (en) 2018-06-11 2021-10-05 Seagate Technology, Llc Providing additional parity for non-standard sized parity data sets
US10896002B2 (en) 2018-06-29 2021-01-19 Seagate Technology Llc Reverse directory structure in a garbage collection unit (GCU)
KR102686749B1 (ko) * 2018-11-14 2024-07-22 삼성전자주식회사 맵 스케줄링을 수행하기 위한 스토리지 장치 및 그것을 포함하는 전자 장치
CN109684238A (zh) * 2018-12-19 2019-04-26 湖南国科微电子股份有限公司 一种固态硬盘映射关系的存储方法、读取方法及固态硬盘
CN111475429B (zh) * 2019-01-24 2023-08-29 爱思开海力士有限公司 存储器访问方法
KR102818164B1 (ko) * 2019-04-01 2025-06-10 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
CN112835820B (zh) * 2019-11-22 2025-09-30 北京忆芯科技有限公司 快速访问hmb的方法与存储设备
US11016889B1 (en) 2019-12-13 2021-05-25 Seagate Technology Llc Storage device with enhanced time to ready performance
CN111190835B (zh) * 2019-12-29 2022-06-10 北京浪潮数据技术有限公司 一种数据写入方法、装置、设备及介质
KR102901778B1 (ko) 2020-03-25 2025-12-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11726921B2 (en) 2020-05-21 2023-08-15 Seagate Technology Llc Combined page footer for parallel metadata storage
US11392304B2 (en) 2020-05-29 2022-07-19 Seagate Technology Llc Data storage device with adaptive object storage capabilities
CN111966298B (zh) * 2020-08-24 2021-07-27 深圳三地一芯电子有限责任公司 一种基于Flash存储器的倒序编程实现方法及装置
US11392499B2 (en) 2020-09-18 2022-07-19 Kioxia Corporation Dynamic buffer caching of storage devices
KR20220082509A (ko) * 2020-12-10 2022-06-17 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
JP2022144314A (ja) * 2021-03-18 2022-10-03 キオクシア株式会社 メモリシステム及びストレージ装置
TWI771079B (zh) * 2021-06-24 2022-07-11 群聯電子股份有限公司 記憶體存取方法、記憶體儲存裝置及記憶體控制電路單元
US11966336B2 (en) * 2021-11-08 2024-04-23 Sap Se Caching data based on greenhouse gas data
US11669449B1 (en) 2021-11-30 2023-06-06 Dell Products L.P. Ghost list cache eviction
CN114415966B (zh) * 2022-01-25 2022-08-12 武汉麓谷科技有限公司 一种kv ssd存储引擎的构建方法
US12105626B2 (en) 2022-02-09 2024-10-01 Dell Products L.P. Method for optimized cache insertion
US12105627B2 (en) 2022-02-09 2024-10-01 Dell Products L.P. Methods for cache insertion using ghost lists
US12169456B2 (en) 2022-04-13 2024-12-17 Dell Products L.P. Methods for cache insertion and cache eviction using ghost list in a cache system that includes a reverse cache and a main cache
US12105639B2 (en) 2022-05-17 2024-10-01 Dell Products L.P. Methods for cache insertion and cache eviction in a cache system that includes a reverse cache and a main cache

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03142644A (ja) * 1989-10-30 1991-06-18 Hitachi Ltd キャッシュメモリ制御方法とこのキャッシュメモリ制御方法を用いたプロセッサおよび情報処理装置
JP2012174086A (ja) * 2011-02-23 2012-09-10 Hitachi Ltd 記憶装置およびそれを搭載した計算機
US20170068621A1 (en) * 2015-09-04 2017-03-09 Kabushiki Kaisha Toshiba Memory system and information processing system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933857A (en) * 1997-04-25 1999-08-03 Hewlett-Packard Co. Accessing multiple independent microkernels existing in a globally shared memory system
US6804741B2 (en) 2002-01-16 2004-10-12 Hewlett-Packard Development Company, L.P. Coherent memory mapping tables for host I/O bridge
US7010645B2 (en) * 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
US8533401B2 (en) 2002-12-30 2013-09-10 Intel Corporation Implementing direct access caches in coherent multiprocessors
US7613876B2 (en) * 2006-06-08 2009-11-03 Bitmicro Networks, Inc. Hybrid multi-tiered caching storage system
US7844778B2 (en) 2006-07-11 2010-11-30 International Business Machines Corporation Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements
US8799586B2 (en) * 2009-09-30 2014-08-05 Intel Corporation Memory mirroring and migration at home agent
WO2011044154A1 (en) * 2009-10-05 2011-04-14 Marvell Semiconductor, Inc. Data caching in non-volatile memory
US8495299B2 (en) 2009-11-16 2013-07-23 Microsoft Corporation Non-blocking data transfer via memory cache manipulation
JP2012141946A (ja) * 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
US9218281B2 (en) 2012-05-04 2015-12-22 Seagate Technology Llc Maintaining ordering via a multi-level map of a solid-state media
US9250901B2 (en) 2013-03-12 2016-02-02 Intel Corporation Execution context swap between heterogeneous functional hardware units
WO2014209984A1 (en) * 2013-06-25 2014-12-31 Marvell World Trade Ltd. Adaptive cache memory controller
US9405672B2 (en) 2013-06-25 2016-08-02 Seagate Technology Llc Map recycling acceleration
US10282138B2 (en) * 2016-09-27 2019-05-07 International Business Machines Corporation Secondary read cache optimization in data replication environments

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03142644A (ja) * 1989-10-30 1991-06-18 Hitachi Ltd キャッシュメモリ制御方法とこのキャッシュメモリ制御方法を用いたプロセッサおよび情報処理装置
JP2012174086A (ja) * 2011-02-23 2012-09-10 Hitachi Ltd 記憶装置およびそれを搭載した計算機
US20170068621A1 (en) * 2015-09-04 2017-03-09 Kabushiki Kaisha Toshiba Memory system and information processing system

Also Published As

Publication number Publication date
JP7046669B2 (ja) 2022-04-04
TWI673608B (zh) 2019-10-01
KR20180108513A (ko) 2018-10-04
CN108628772A (zh) 2018-10-09
TW201903614A (zh) 2019-01-16
US10126964B2 (en) 2018-11-13
US20180275899A1 (en) 2018-09-27

Similar Documents

Publication Publication Date Title
JP7046669B2 (ja) 逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション
US10922235B2 (en) Method and system for address table eviction management
US20230409473A1 (en) Namespace change propagation in non-volatile memory devices
US11347428B2 (en) Solid state tier optimization using a content addressable caching layer
US9256527B2 (en) Logical to physical address mapping in storage systems comprising solid state memory devices
US9104327B2 (en) Fast translation indicator to reduce secondary address table checks in a memory device
US8966155B1 (en) System and method for implementing a high performance data storage system
US10152428B1 (en) Virtual memory service levels
US9280478B2 (en) Cache rebuilds based on tracking data for cache entries
US9489239B2 (en) Systems and methods to manage tiered cache data storage
US9063862B2 (en) Expandable data cache
US9639481B2 (en) Systems and methods to manage cache data storage in working memory of computing system
US20190087323A1 (en) Memory system and method for controlling nonvolatile memory
KR20120120186A (ko) 캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용
CN117369715B (zh) 基于存储设备中的引用更新使用回收单元的系统、方法和设备
CN113254363B (zh) 具有部分逻辑到物理地址转换表的非易失性存储控制器
US10152236B2 (en) Hybrid data storage device with partitioned local memory
US7877547B2 (en) Method, system and circuit for efficiently managing a cache storage device
US9454488B2 (en) Systems and methods to manage cache data storage
KR20240173164A (ko) 스토리지 장치에서 캐시 동작을 위한 시스템, 방법 및 장치
JP6640940B2 (ja) メモリシステムの制御方法
US20240402924A1 (en) Systems, methods, and apparatus for cache configuration based on storage placement
CN117369718A (zh) 在存储装置中形成和选择回收单元的系统、方法和装置
JP2022143762A (ja) メモリシステム、制御方法およびメモリコントローラ
JP2014170325A (ja) ストレージ装置と方法並びにプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201208

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220301

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220323

R150 Certificate of patent or registration of utility model

Ref document number: 7046669

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250