(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-03
(45)【発行日】2023-03-13
(54)【発明の名称】メモリ装置及びメモリ装置を制御する方法
(51)【国際特許分類】
G06F 12/02 20060101AFI20230306BHJP
G06F 12/00 20060101ALI20230306BHJP
G06F 12/10 20160101ALI20230306BHJP
【FI】
G06F12/02 570A
G06F12/00 597U
G06F12/10
(21)【出願番号】P 2022017352
(22)【出願日】2022-02-07
(62)【分割の表示】P 2020017134の分割
【原出願日】2016-09-06
【審査請求日】2022-02-07
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】菅野 伸一
【審査官】北村 学
(56)【参考文献】
【文献】特開平01-125640(JP,A)
【文献】特開平05-241965(JP,A)
【文献】特開2004-151939(JP,A)
【文献】特開2013-152676(JP,A)
【文献】特表2011-509470(JP,A)
【文献】米国特許出願公開第2007/0106875(US,A1)
【文献】米国特許出願公開第2008/0001958(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/00 - 12/06
G06F 12/08 - 12/128
(57)【特許請求の範囲】
【請求項1】
不揮発性メモリと、
キャッシュメモリと、
プロセッサと、
を具備し、
前記プロセッサは、
前記不揮発性メモリから前記キャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、前記対象論理アドレスに対応するデータマッピングのフラグメントの一部をキャッシュラインとして、ロードするように構成され、
前記キャッシュメモリに前記キャッシュラインとしてロードされた前記アドレスマッピングの前記複数のレイヤの前記フラグメントを参照して、前記不揮発性メモリに対して前記対象論理アドレスからマップされる物理アドレスへアクセスするように構成され、
前記データマッピングの各ビットは、前記不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示し、
前記複数のレイヤは、前記複数のレイヤのそれぞれが複数のフラグメントを有しており、上位レイヤに属するフラグメントの一部であるエレメントが下位レイヤに属するフラグメントに対応する階層構造を有し、
前記複数のレイヤのうちの最下レイヤを除く各レイヤに属する複数のフラグメントのそれぞれは、直下のレイヤに属する複数のフラグメントに対応して複数のエレメントに区分けされ、前記直下のレイヤに属する複数のフラグメントを示す複数の参照先情報を含み、
前記複数のレイヤのうちの前記最下レイヤに属する複数のフラグメントは、前記最下レイヤにマップされた各論理アドレスと、前記各論理アドレスに関する前記不揮発性メモリの物理アドレスと、の対応を示し、
前記データマッピングの前記フラグメントは、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントのそれぞれと同じサイズを有し、
前記アドレスマッピングは、複数のネームスペースに対応するマッピングを含み、
前記アドレスマッピングにおける前記複数のネームスペースごとの階層数は、前記複数のネームスペースごとのサイズに応じて決定される、
メモリ装置。
【請求項2】
前記プロセッサは、前記対象論理アドレスに関するデータを前記対象論理アドレスからマップされる前記物理アドレスへ書き込む際に、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントを更新し、前記不揮発性メモリに記憶されている前記アドレスマッピングを前記更新されたフラグメントへ書き換えるようにさらに構成される、請求項1のメモリ装置。
【請求項3】
前記プロセッサは、前記更新されたフラグメントのリストのサイズがしきい値を超えると、前記更新されたフラグメントを前記キャッシュメモリから前記不揮発性メモリへ書き戻すようにさらに構成される、請求項2のメモリ装置。
【請求項4】
前記プロセッサは、前記対象論理アドレスからマップされる前記物理アドレスから前記対象論理アドレスに関するデータを読み出した後、前記キャッシュメモリに前記ロードされたフラグメントを維持するようにさらに構成される、請求項1のメモリ装置。
【請求項5】
前記アドレスマッピングの前記各レイヤは、複数のフラグメントを含み、前記各レイヤにおける前記複数のフラグメントのそれぞれは、異なる論理アドレス範囲に対応し、前記アドレスマッピングの異なる複数のレイヤにおける複数のフラグメントは、同じサイズを有する、請求項1のメモリ装置。
【請求項6】
ロードされた前記アドレスマッピングの前記複数のレイヤのそれぞれの前記フラグメントの前記キャッシュライン、又は、ロードされた前記データマッピングの前記フラグメントの前記キャッシュラインは、その前後で参照されるキャッシュラインを示すポインタをさらに含む、請求項1のメモリ装置。
【請求項7】
前記プロセッサは、前記対象論理アドレスに関するデータを前記対象論理アドレスからマップされる前記物理アドレスへ書き込む際に、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントと、前記データマッピングの前記ロードされたフラグメントとを、更新し、前記不揮発性メモリに記憶されている前記アドレスマッピングと前記データマッピングとに対し、前記アドレスマッピングの前記更新されたフラグメントと前記データマッピングの前記更新されたフラグメントとをまとめて書き換えるようにさらに構成される、請求項1のメモリ装置。
【請求項8】
前記プロセッサは、前記キャッシュメモリに格納されている前記キャッシュラインが、クリーンリスト、ダーティリスト、及び、フリーリストのいずれに属するかを管理し、
前記クリーンリストは、前記キャッシュメモリで書き換えられ、書き換えられた内容が前記不揮発性メモリに反映されたキャッシュラインを含み、
前記ダーティリストは、前記キャッシュメモリで書き換えられたが、書き換えられた内容が前記不揮発性メモリに反映されていないキャッシュラインを含み、
前記フリーリストは、前記クリーンリストにも前記ダーティリストにも属さないキャッシュラインを含む、
請求項1のメモリ装置。
【請求項9】
不揮発性メモリとキャッシュメモリとを含むメモリ装置を制御する方法において、
前記不揮発性メモリから前記キャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、前記対象論理アドレスに対応するデータマッピングのフラグメントの一部をキャッシュラインとして、ロードすることと、
前記キャッシュメモリに前記キャッシュラインとしてロードされた前記アドレスマッピングの前記複数のレイヤの前記フラグメントを参照して、前記不揮発性メモリに対して前記対象論理アドレスからマップされる物理アドレスへアクセスすることと、
を具備し、
前記データマッピングの各ビットは、前記不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示し、
前記複数のレイヤは、前記複数のレイヤのそれぞれが複数のフラグメントを有しており、上位レイヤに属するフラグメントの一部であるエレメントが下位レイヤに属するフラグメントに対応する階層構造を有し、
前記複数のレイヤのうちの最下レイヤを除く各レイヤに属する複数のフラグメントのそれぞれは、直下のレイヤに属する複数のフラグメントに対応して複数のエレメントに区分けされ、前記直下のレイヤに属する複数のフラグメントを示す複数の参照先情報を含み、
前記複数のレイヤのうちの前記最下レイヤに属する複数のフラグメントは、前記最下レイヤにマップされた各論理アドレスと、前記各論理アドレスに関する前記不揮発性メモリの物理アドレスと、の対応を示し、
前記データマッピングの前記フラグメントは、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントのそれぞれと同じサイズを有し、
前記アドレスマッピングは、複数のネームスペースに対応するマッピングを含み、
前記アドレスマッピングにおける前記複数のネームスペースごとの階層数は、前記複数のネームスペースごとのサイズに応じて決定される、
方法。
【請求項10】
前記キャッシュメモリに格納されている前記キャッシュラインが、クリーンリスト、ダーティリスト、及び、フリーリストのいずれに属するかを管理することをさらに具備し、
前記クリーンリストは、前記キャッシュメモリで書き換えられ、書き換えられた内容が前記不揮発性メモリに反映されたキャッシュラインを含み、
前記ダーティリストは、前記キャッシュメモリで書き換えられたが、書き換えられた内容が前記不揮発性メモリに反映されていないキャッシュラインを含み、
前記フリーリストは、前記クリーンリストにも前記ダーティリストにも属さないキャッシュラインを含む、
請求項9の方法。
【請求項11】
不揮発性メモリを制御する方法において、
前記不揮発性メモリからキャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、前記対象論理アドレスに対応するデータマッピングのフラグメントの一部をキャッシュラインとして、ロードすることと、
前記キャッシュメモリに前記キャッシュラインとしてロードされた前記アドレスマッピングの前記複数のレイヤの前記フラグメントを参照して、前記不揮発性メモリに対して前記対象論理アドレスからマップされる物理アドレスへアクセスすることと、
を具備し、
前記データマッピングの各ビットは、前記不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示し、
前記複数のレイヤは、前記複数のレイヤのそれぞれが複数のフラグメントを有しており、上位レイヤに属するフラグメントの一部であるエレメントが下位レイヤに属するフラグメントに対応する階層構造を有し、
前記複数のレイヤのうちの最下レイヤを除く各レイヤに属する複数のフラグメントのそれぞれは、直下のレイヤに属する複数のフラグメントに対応して複数のエレメントに区分けされ、前記直下のレイヤに属する複数のフラグメントを示す複数の参照先情報を含み、
前記複数のレイヤのうちの前記最下レイヤに属する複数のフラグメントは、前記最下レイヤにマップされた各論理アドレスと、前記各論理アドレスに関する前記不揮発性メモリの物理アドレスと、の対応を示し、
前記データマッピングの前記フラグメントは、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントのそれぞれと同じサイズを有し、
前記アドレスマッピングは、複数のネームスペースに対応するマッピングを含み、
前記アドレスマッピングにおける前記複数のネームスペースごとの階層数は、前記複数のネームスペースごとのサイズに応じて決定される、
方法。
【請求項12】
前記キャッシュメモリに格納されている前記キャッシュラインが、クリーンリスト、ダーティリスト、及び、フリーリストのいずれに属するかを管理することをさらに具備し、
前記クリーンリストは、前記キャッシュメモリで書き換えられ、書き換えられた内容が前記不揮発性メモリに反映されたキャッシュラインを含み、
前記ダーティリストは、前記キャッシュメモリで書き換えられたが、書き換えられた内容が前記不揮発性メモリに反映されていないキャッシュラインを含み、
前記フリーリストは、前記クリーンリストにも前記ダーティリストにも属さないキャッシュラインを含む、
請求項11の方法。
【請求項13】
不揮発性メモリと、
キャッシュメモリと、
プロセッサと、
を具備し、
前記不揮発性メモリは、アクセス対象データの物理アドレスとこの物理アドレスに対応する論理アドレスとのアドレスマッピングに関する複数のレイヤと、前記物理アドレスに記憶されたデータが有効か無効かを示すデータマッピングを
管理するためのデータマップを記憶
し、
前記複数のレイヤは、それぞれが複数のフラグメントを有しており、上位レイヤに属するフラグメントの一部であるエレメントが下位レイヤに属するフラグメントに対応する階層構造を有し、
前記データ
マップは、
前記データマップの複数のフラグメントに前記データマッピングを格納するマップ格納部を含
み、
前記プロセッサは、前記アドレスマッピングの複数のレイヤそれぞれのフラグメント、及び、前記データ
マップの
複数のフラグメントの一部をキャッシュラインとしてロードし、前記キャッシュメモリにロードされた前記アドレスマッピングの前記複数のレイヤのフラグメントを参照することにより、前記論理アドレスからマップされる物理アドレスのアクセス対象データへアクセスするように構成され、
前記複数のレイヤのうちの最下レイヤを除く各レイヤに属する複数のフラグメントのそれぞれは、直下のレイヤに属する複数のフラグメントに対応して複数のエレメントに区分けされ、前記直下のレイヤに属する複数のフラグメントを示す複数の参照先情報を含み、
前記複数のレイヤのうちの前記最下レイヤに属する複数のフラグメントは、前記最下レイヤにマップされた各論理アドレスと前記各論理アドレスに関する前記不揮発性メモリの物理アドレスとの対応を示し、
前記アドレスマッピングは、複数のネームスペースに対応するマッピングを含み、
前記アドレスマッピングにおける前記複数のネームスペースごとの階層数は、前記複数のネームスペースごとのサイズに応じて決定される、
メモリ装置。
【請求項14】
前記データ
マップの
複数のフラグメント
のそれぞれは、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントのそれぞれと同じサイズを有する、請求項13のメモリ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリ装置及びメモリ装置を制御する方法に関する。
【背景技術】
【0002】
ソリッドステートドライブ(SSD)は、例えば、NAND型フラッシュメモリなどのような不揮発性メモリを備える。NAND型フラッシュメモリは、複数のブロック(物理ブロック)を備える。複数のブロックは、ワード線とビット線との交点に配置される複数のメモリセルを含む。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本実施形態は、アドレス変換データを効率的に管理するメモリ装置及びメモリ装置を制御する方法を提供する。
【課題を解決するための手段】
【0005】
本実施形態によれば、メモリ装置は、不揮発性メモリと、キャッシュメモリと、プロセッサとを備える。プロセッサは、不揮発性メモリからキャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、対象論理アドレスに対応するデータマッピングのフラグメントの一部をキャッシュラインとして、ロードするように構成され、キャッシュメモリにキャッシュラインとしてロードされたアドレスマッピングの複数のレイヤのフラグメントを参照して、不揮発性メモリに対して対象論理アドレスからマップされる物理アドレスへアクセスするように構成される。データマッピングの各ビットは、不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示す。複数のレイヤは、複数のレイヤのそれぞれが複数のフラグメントを有しており、上位レイヤに属するフラグメントの一部であるエレメントが下位レイヤに属するフラグメントに対応する階層構造を有する。複数のレイヤのうちの最下レイヤを除く各レイヤに属する複数のフラグメントのそれぞれは、直下のレイヤに属する複数のフラグメントに対応して複数のエレメントに区分けされ、直下のレイヤに属する複数のフラグメントを示す複数の参照先情報を含む。複数のレイヤのうちの最下レイヤに属する複数のフラグメントは、前記最下レイヤにマップされた各論理アドレスと、前記各論理アドレスに関する前記不揮発性メモリの物理アドレスと、の対応を示す。データマッピングの前記フラグメントは、アドレスマッピングの複数のレイヤのロードされたフラグメントのそれぞれと同じサイズを有する。アドレスマッピングは、複数のネームスペースに対応するマッピングを含む。アドレスマッピングにおける複数のネームスペースごとの階層数は、複数のネームスペースごとのサイズに応じて決定される。
【図面の簡単な説明】
【0006】
【
図1】第1の実施形態に係る情報処理システムの構成の一例を示すブロック図。
【
図2】一般的なルックアップテーブルとアクティブデータマップとを例示する概念図。
【
図3】第1の実施形態に係る階層的ルックアップテーブルの構成を例示する概念図。
【
図4】第1の実施形態に係る階層的ルックアップテーブルのフラグメントのデータフォーマットを例示するデータ構造図。
【
図5】第1の実施形態に係るアクティブデータマップのフラグメントのデータフォーマットを例示するデータ構造図。
【
図6】第1の実施形態に係るキャッシュメモリから不揮発性メモリへの書き戻し時に使用されるデータフォーマットを例示するデータ構造図。
【
図7】第1の実施形態に係る物理アドレスの探索処理を例示するフローチャート。
【
図8】第1の実施形態に係る物理アドレスの探索処理におけるキャッシュラインの関係を例示するブロック図。
【
図9】第1の実施形態に係るキャッシュメモリのリスト構造を例示するデータ構造図。
【
図10】第1の実施形態に係るキャッシュメモリにおけるキャッシュラインの状態変化を例示するフローチャート。
【
図11】第1の実施形態に係るキャッシュメモリにおけるキャッシュラインの状態変化を例示するブロック図。
【
図12】第1の実施形態に係る階層的ルックアップテーブルのフラグメントと不揮発性メモリのページとの関係を例示するブロック図。
【発明を実施するための形態】
【0007】
以下、図面を参照しながら各実施形態について説明する。以下の説明において、略同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【0008】
[第1の実施形態]
本実施形態は、階層的なルックアップテーブル(Look Up Table。以下、LUTとする)を備えるメモリ装置について説明する。LUTは、物理アドレスから論理アドレスへの変換に用いられるアドレス変換データの一種である。
【0009】
本実施形態において、メモリ装置は、例えばSSDであるとするが、メモリカード、ハードディスクドライブ(HDD)、HDDとSSDとを含むハイブリッド型メモリ装置、光ディスク、ストレージ装置、メモリサーバなど様々な種別のメモリ装置でもよい。メモリ装置がSSDの場合には、当該メモリ装置はHDDと同じ通信インタフェースを持つ。
【0010】
SSDであるメモリ装置は、不揮発性メモリを含む。本実施形態では、不揮発性メモリがNAND型フラッシュメモリを含む場合について説明する。しかしながら、不揮発性メモリは、例えば、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)などNAND型フラッシュメモリではない他の種別のメモリを含むとしてもよい。また、不揮発性メモリは、3次元構造のフラッシュメモリを含むとしてもよい。
【0011】
不揮発性メモリでは、消去単位エリアごとに、データが一括して消去される。消去単位エリアは、複数の書き込み単位エリア及び複数の読み出し単位エリアを含む。不揮発性メモリがNAND型フラッシュメモリの場合、消去単位エリアはブロックに相当する。書き込み単位エリア及び読み出し単位エリアはページに相当する。
【0012】
本実施形態において、アクセスとは、メモリへデータを書き込む又は格納すること、及び、メモリからデータを読み出すことの双方を意味する。
【0013】
本実施形態において、プログラムは、コンピュータプログラムとする。コンピュータプログラムでは、コンピュータが行うべき処理が順序付けて記述されている。プログラムは、コンピュータで実行されることにより、コマンド、データ、及び、情報の発行及び受付、データ処理及び演算などの各種機能を実現可能である。
【0014】
本実施形態において、コンピュータとは、例えば、命令にしたがって演算又は処理を実行する機械である。例えば、コンピュータは、メモリとプロセッサとを含む。メモリは、プログラムを記憶する。プロセッサは、メモリに記憶されているプログラムに記述された命令セット(例えば、データの転送、計算、加工、制御、管理)を実行するためのハードウェアである。本実施形態において、コンピュータは、広義に解釈されるべきであり、例えば、情報処理装置、メモリ装置のコントローラ、パーソナルコンピュータ、大型コンピュータ、マイクロコンピュータ、サーバ装置などを含む。本実施形態においては、コンピュータに代えて、複数のコンピュータが連携して動作するコンピュータシステムが用いられてもよい。
【0015】
本実施形態において、ソフトウェアインタフェースとは、例えば、一方のプログラムが他方のプログラムを利用するために定義されている規約及び手順である。より具体的には、ソフトウェアインタフェースは、例えば、あるプログラムの機能及び管理するデータなどを、他のプログラムから呼び出し、呼び出された機能及び管理するデータなどを利用するための手順及びデータ形式などを定めた規約である。ソフトウェアインタフェースの一例として、API(Application Programming Interface)がある。
【0016】
本実施形態において、識別情報はIDと表記する。
【0017】
図1は、本実施形態に係る情報処理システムの一例を示すブロック図である。
【0018】
情報処理システム1は、情報処理装置2とメモリ装置3とを含む。情報処理装置2は、メモリ装置3に対応するホスト装置として動作可能である。
【0019】
メモリ装置3は、情報処理装置2に内蔵されてもよく、情報処理装置2とメモリ装置3とは、ネットワークなどによりデータを送受信可能に接続されるとしてもよい。メモリ装置3は、複数の情報処理装置2と通信可能に接続されてもよい。また、複数のメモリ装置3が、1以上の情報処理装置2と通信可能に接続されてもよい。
【0020】
メモリ装置3は、制御回路の一例としてのコントローラ4と、不揮発性メモリ5とを含む。コントローラ4と不揮発性メモリ5とは、着脱可能とし、メモリ装置3のメモリ容量は自由に拡張できるとしてもよい。ここで、メモリ容量とは、メモリに書き込み可能な最大のデータ量とする。
【0021】
コントローラ4は、通信インタフェース制御部41、書き込みバッファメモリ42、読み出しバッファメモリ43、プロセッサ44、メモリ45A,45B、不揮発性メモリコントローラ46を含む。これらは、内部バスIBにより電気的に接続される。また、コントローラ4は、不揮発性メモリ5と電気的に接続される。
【0022】
通信インタフェース制御部41は、例えば、送受信制御部411と、コマンド制御部412を含む。通信インタフェース制御部41は、外部装置とメモリ装置3との間で通信インタフェースにしたがって通信を行う。
【0023】
送受信制御部411は、例えば、情報処理装置2などのような外部装置からのデータ、情報、信号、コマンド、リクエスト、メッセージ、指定などの受信を制御し、外部装置へのデータ、情報、信号、コマンド、リクエスト、メッセージ、指定などの送信を制御する。
【0024】
送受信制御部411は、例えば、情報処理装置2との間で、データを送受信する。送受信制御部411は、情報処理装置2から受信したデータを書き込みバッファメモリ42へ格納する。送受信制御部411は、不揮発性メモリ5から読み出されたデータを読み出しバッファメモリ43から読み出し、情報処理装置2へ送信する。
【0025】
より具体的には、送受信制御部411は、情報処理装置2との間で、データを送受信する。送受信制御部411は、情報処理装置2から受信したデータを書き込みバッファメモリ42へ格納する。送受信制御部411は、不揮発性メモリ5から読み出されたデータを読み出しバッファメモリ43から読み出し、情報処理装置2へ送信する。
【0026】
コマンド制御部412は、例えば、外部装置からのコマンド、メッセージ、リクエスト、指令などの受信を制御し、外部装置へのコマンド、メッセージ、リクエスト、指令などの送信を制御する。
【0027】
より具体的には、コマンド制御部412は、情報処理装置2との間で、コマンドを送受信する。コマンド制御部412は、情報処理装置2から受信したコマンドが書き込みコマンドである場合は、書き込み制御部441へ書き込みコマンドを送る。また、コマンド制御部412は、情報処理装置2から受信したコマンドが読み出しコマンドである場合は、読み出し制御部442へ読み出しコマンドを送る。
【0028】
情報処理装置2とコマンド制御部412との間で送受信されるコマンドと、メモリ装置3内部で送受信されるコマンドとが同じ名称の場合でも、コマンド形式はそれぞれ異なっていてもよい。
【0029】
なお、通信インタフェース制御部41の全部又は一部の機能は、プロセッサ44によって実現されてもよく、プロセッサ44とは別のプロセッサ内によって実現されてもよい。
【0030】
書き込みバッファメモリ42は、情報処理装置2から送信された書き込みデータを一時的に格納する。具体的には、書き込みバッファメモリ42は、当該書き込みデータが不揮発性メモリ5に適した所定のデータサイズになるまで、一時的にデータを格納する。
【0031】
読み出しバッファメモリ43は、不揮発性メモリ5から読み出された読み出しデータを一時的に格納する。具体的には、読み出しバッファメモリ43において、読み出しデータは、情報処理装置2に適した順序(情報処理装置2が指定した論理アドレスの順序)になるように並び替えられる。
【0032】
プロセッサ44は、内部バスIBを経由して、コントローラ4全体の動作を制御する。
【0033】
プロセッサ44は、例えば、メモリ45Bに格納されている制御プログラムPを一時的にメモリ45Aに格納し、このメモリ45Aに格納されている制御プログラムPを実行する。これにより、例えば、プロセッサ44は、書き込み制御部441、読み出し制御部442、ガーベージコレクション制御部443、初期化部444、アドレス変換部445としての機能を実現する。なお、上記の書き込み制御部441、読み出し制御部442、ガーベージコレクション制御部443、初期化部444、アドレス変換部445は、自由に組み合わせてもよく、分離してもよい。例えば、初期化部444とアドレス変換部445とは組み合わせてもよい。書き込み制御部441、読み出し制御部442、ガーベージコレクション制御部443、初期化部444、アドレス変換部445は、ハードウェアによって実現されてもよい。
【0034】
プロセッサ44は、例えば、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)、又は、DSP(Digital Signal Processor)などであってもよい。
【0035】
書き込み制御部441は、例えば、通信インタフェース制御部41から書き込みバッファメモリ42を経由して不揮発性メモリコントローラ46までデータなどを送るための制御を行う。
【0036】
より具体的には、書き込み制御部441は、コマンド制御部412からの書き込みコマンドにしたがって、アドレス変換部445を用いて論理アドレスを物理アドレスに変換し、書き込みコマンドと書き込みデータと物理アドレスとを不揮発性メモリコントローラ46に送る。
【0037】
読み出し制御部442は、例えば、不揮発性メモリコントローラ46から読み出しバッファメモリ43を経由して通信インタフェース制御部41までデータなどを送るための制御を行う。
【0038】
より具体的には、読み出し制御部442は、コマンド制御部412からの読み出しコマンドにしたがって、アドレス変換部445を用いて論理アドレスを物理アドレスに変換し、読み出しコマンドと物理アドレスとを不揮発性メモリコントローラ46に送り、不揮発性メモリコントローラ46から物理アドレスに対応する読み出しデータを受け、読み出しデータを読み出しバッファメモリ43、通信インタフェース制御部41経由で情報処理装置2へ送信する。
【0039】
ガーベージコレクション制御部443は、不揮発性メモリ5のガーベージコレクションを行う。例えば、ガーベージコレクション制御部443は、書き込み制御部441、読み出し制御部442、不揮発性メモリコントローラ46と協働することにより、不揮発性メモリ5のガーベージコレクションを行うとしてもよい。本実施形態において、ガーベージコレクションとは、メモリの不要な領域を解放する処理とする。ここで、不揮発性メモリ5がNAND型フラッシュメモリの場合には、メモリの不要な領域を解放するためにブロックの消去を行う必要がある。そのため、ガーベージコレクション対象のブロックにおける利用可能性のある有効データは、他のブロックに移動される。したがって、不揮発性メモリ5がNAND型フラッシュメモリの場合には、ガーベージコレクションとともにコンパクションが実行される傾向にある。
【0040】
メモリ45Aは、例えば、プロセッサ44の作業用メモリとして使用される主記憶装置を含み、プロセッサ44からの制御に従う。メモリ45Aは、例えばプロセッサ44による処理対象のプログラム、データ、情報などを格納する。本実施形態では、メモリ45AがDRAM(Dynamic Random Access Memory)である場合について説明するが、例えばその他の揮発性メモリであってもよく、又は、SRAM(Static Random Access Memory)などのような不揮発性メモリであってもよい。
【0041】
初期化部444は、初期状態の階層的LUT51を生成する。例えば、初期化部444は、不揮発性メモリ5の容量、ネームスペースの容量などのメモリ装置3の設定情報に基づいて、階層的LUT51のネームスペースごとの階層の数、各階層に対応するデータ容量、階層間のリンク関係を決定し、初期状態の階層的LUT51のデータ構造を決定する。例えば、初期化部444は、初期状態の階層的LUT51を不揮発性メモリ5に書き込む。
【0042】
初期化部444は、初期状態のアクティブデータマップ52(Active Data Map。以下、ADMという)を生成する。ADMとは、不揮発性メモリ5に格納されているデータが有効であるか無効であるかを管理するデータである。例えば、ADM52は、不揮発性メモリ5に書き込まれているデータの最小単位ごとに、この最小単位のデータが有効である場合を“1”とし、無効である場合を“0”とし、初期状態のADM52を不揮発性メモリ5に書き込む。ADM52の詳細は後で説明する。
【0043】
キャッシュメモリ制御部447は、例えば、読み出し制御部を用いて、不揮発性メモリ5から階層的LUT51の一部又はADM52の一部を読み出し、読み出した階層的LUT51の一部又はADM52の一部をキャッシュメモリ451へ格納する。また、キャッシュメモリ制御部447は、例えば、書き込み制御部441を用いて、キャッシュメモリ451に格納されている階層的LUT51の一部又はADM52の一部を不揮発性メモリ5の階層的LUT51又はADM52へ書き戻す制御を行う。
【0044】
なお、キャッシュメモリ制御部447の処理は、アドレス変換部445及びデータマップ管理部446が協働することにより実現されるとしてもよい。この場合、キャッシュメモリ制御部447は省略されてもよい。
【0045】
さらに、キャッシュメモリ制御部447は、キャッシュメモリ451に格納されているキャッシュラインを、フリーリスト、クリーンリスト、及び、ダーティリストのいずれに属するかを管理する。本実施形態において、キャッシュラインとは、例えば、キャッシュメモリ451に格納する単位サイズのデータである。フリーリスト、クリーンリスト、及び、ダーティリストの説明は、後述する。
【0046】
アドレス変換部445は、データが書き込まれるごとに、階層的LUT51に対して論理アドレスから物理アドレスまでの変換を階層的に記述する。また、アドレス変換部445は、階層的LUT51を用いて、論理アドレスを物理アドレスに変換する。より具体的には、アドレス変換部445は、階層的LUT51の階層構造にしたがって、キャッシュメモリ451に格納すべき階層的LUT51のうちの一部である部分データを探索し、部分データをキャッシュメモリ451に格納し、キャッシュメモリ451を参照することにより、論理アドレスを物理アドレスに変換する。階層的LUT51の詳細は後で説明する。
【0047】
データマップ管理部446は、データが書き込まれるごとに、ADM52を更新する。より具体的には、データマップ管理部446は、キャッシュメモリ451に格納されているADM52の一部に対する書き込み及び読み出しを行う。その後、キャッシュメモリ451に格納されているADM52の一部は、不揮発性メモリ5に書き戻される。
【0048】
メモリ45Bは、例えば制御プログラムPなどコントローラ4で用いられるプログラム及びデータを格納する不揮発性の記憶装置を含む。
【0049】
不揮発性メモリコントローラ46は、不揮発性メモリ5へのデータなどの書き込み、及び、不揮発性メモリ5からのデータの読み出しを制御する。
【0050】
なお、不揮発性メモリコントローラ46は、DMAC(Direct Memory Access Controller)、誤り訂正部、ランダマイザ(又はScrambler)などを含んでいることが望ましい。しかしながら、不揮発性メモリコントローラ46は、これらの機能を含んでいなくてもよい。
【0051】
DMACは、内部バスIBを介して、書き込みデータ及び読み出しデータなどを転送する。DMACは、必要に応じて、コントローラ4内の様々な位置に複数設定されてもよい。
【0052】
誤り訂正部は、書き込みバッファメモリ42から送信される書き込みデータに誤り訂正符号(例えばError Correcting Code(ECC))を付加する。誤り訂正部は、ECCを用い、必要に応じて不揮発性メモリ5から読み出した読み出しデータを訂正する。
【0053】
ランダマイザは、不揮発性メモリ5へデータを書き込む際に、書き込みデータが不揮発性メモリ5の特定のページ又はワード線方向などに偏らないように、書き込みデータを分散させる(ランダマイズ処理と呼ぶ)。これにより、書き込み回数を平準化でき、不揮発性メモリ5のメモリセルの寿命を長期化できる。そのため、不揮発性メモリ5の信頼性を向上できる。また、ランダマイザは、データ読み出し動作の際に、書き込み時のランダマイズ処理の逆処理を実行し、元のデータを復元する。
【0054】
メモリ45Aに含まれるキャッシュメモリ451は、不揮発性メモリ5に格納されている階層的LUT51及びADM52のキャッシュデータを格納する。より具体的には、キャッシュメモリ451は、不揮発性メモリ5よりも高速に読み出し及び書き込み可能であり、階層的LUT51のうちの一部である部分データを格納し、ADM52のうちの一部であるマップ部分データを格納する。本実施形態では、階層的LUT51とADM52とは不揮発性メモリ5に書き込まれている。しかしながら、階層的LUT51とADM52とのうちの少なくとも一方は、例えばメモリ45Bなどメモリ装置3に備えられる他の不揮発性メモリに格納されてもよい。また、不揮発性メモリ5は、ユーザデータを格納するメモリ(又はメモリ領域)と、階層的LUT51を格納するメモリ(又はメモリ領域)と、ADM52を格納するメモリ(又はメモリ領域)に区分けされていてもよい。
【0055】
階層的LUT51が不揮発性メモリ5に格納されている場合、キャッシュメモリ制御部447は、不揮発性メモリ5より階層的LUT51の内容の一部(部分データ)又は全部をキャッシュメモリ451に読み出す。また、キャッシュメモリ制御部447は、書き換えられたキャッシュメモリ451の内容を任意のタイミングで不揮発性メモリ5の階層的LUT51に反映する。
【0056】
同様に、ADM52が不揮発性メモリ5に格納されている場合、キャッシュメモリ制御部447は、不揮発性メモリ5よりADM52の内容の一部(マップ部分データ)又は全部をキャッシュメモリ451に読み出す。また、キャッシュメモリ制御部447は、書き換えられたキャッシュメモリ451の内容を任意のタイミングで不揮発性メモリ5のADM52に反映する。
【0057】
不揮発性メモリがNAND型フラッシュメモリの場合、LUTは、書き込みデータ又は読み出しデータの論理アドレス(以下、Logical Block Addressing(LBA)とする)と物理アドレス(以下、Physical Block Addressing(PBA)とする)とを関係付けたデータである。
【0058】
階層的LUT51は、LUTを階層的に構成したデータである。より具体的には、階層的LUT51は、複数のレイヤを持つ階層構造により、書き込み先又は読み出し先として指定されたLBAと、不揮発性メモリ5の位置を示すPBAとを関連付けている。プロセッサ44は、階層的LUT51を用いることにより、LBAに対応するPBA、又はPBAに対応するLBAを効率よく探索できる。
【0059】
階層的LUT51は、テーブル形式のデータ構造を持つとしてもよく、例えばリスト形式などのような他のデータ構造を持つとしてもよい。階層的LUT51は、複数の部分データ(例えばテーブル)を含む。以下において、部分データをフラグメントという。フラグメントとは、断片化したデータとする。複数のフラグメントは、例えば、所定サイズ、すなわち同じサイズである。複数のフラグメントは、複数のレイヤに所属する。複数のレイヤのうちの第1のレイヤに属する第1のフラグメントは、論理アドレスと、第1のレイヤの下位である第2のレイヤに属する複数の第2のフラグメントを参照するための複数の参照先情報(以下、ポインタという)を含む。階層構造における最下位のフラグメントは、論理アドレスと物理アドレスとを含む。最上位レイヤに所属する複数の最上位フラグメントのそれぞれは、複数のネームスペースのそれぞれに対応する。階層的LUT51は、複数のネームスペースの記憶容量に応じて複数のネームスペースの階層数が異なる。例えば、記憶容量の少ないネームスペースの階層数は少なく、記憶容量の多いネームスペースの階層数は多くなる。複数のフラグメントのそれぞれの所定のサイズは、例えば、キャッシュメモリに含まれるキャッシュラインの単位サイズに対応する。階層的LUT51の詳細については、後述する。
【0060】
なお、本実施形態において、
図1に示したコントローラ4の構成は例示であり、コントローラ4は
図1の構成に限定されない。
【0061】
キャッシュメモリ451は、階層的LUT51及びADM52へのアクセスを高速化するためのキャッシュメモリであり、階層的LUT51及びADM52のうちの一部を格納する。また、キャッシュメモリ451は、書き込み制御部441より書き込みバッファメモリ42を経由して書き換えられてもよく、読み出し制御部442より読み出しバッファメモリ43を経由して読み出されてもよい。
【0062】
図2は、一般的なLUTとADMを例示する概念図である。この
図2及び後述の
図3、
図8において、キロバイトはKBと表記する。
【0063】
LUT Lは、NAND型フラッシュメモリMのデータのLBAとPBAとを関係付ける。この
図2のLUT Lにおいて、LBA Yは、PBA Xに対応する。PBA Xで示されるNAND型フラッシュメモリMの領域には、4KBのデータDが書き込まれる。なお、PBAに書き込み可能なデータの量は、任意に変更可能である。
【0064】
ここで、例えば、LUT Lの各LBAに格納されるPBAのサイズを32ビット(4バイト)とすると、4KBのデータDに対応するPBA Xを格納するために、LUT Lは4バイトのデータ量を必要とする。すなわち、NAND型フラッシュメモリMのサイズの1/1000のサイズのLUTが必要となる。
【0065】
LUT Lは、NAND型フラッシュメモリMの使用開始時(通電時)に、NAND型フラッシュメモリMからDRAM上にキャッシュされる必要がある。このため、NAND型フラッシュメモリMの容量に比例してLUT Lのサイズが大きくなると、キャッシュに要する時間も増大する。例えば1TB程度のNAND型フラッシュメモリMを搭載したメモリ装置では、LUT Lのサイズは1キガバイト(GB)程度となり、メモリ装置3の電源ON時にDRAM上にLUT Lが読み出されるまで数十秒程度要する。
【0066】
本実施形態では、LUTを階層化し、DRAM上に一度に読み出されるLUTのサイズを小さくする。これにより、LUTの読み出しに要する時間を短縮する。また、LUTの探索を効率化することで、アクセス速度の高速化を行う。
【0067】
ADM Aは、NAND型フラッシュメモリMに格納されているデータが有効であるか無効であるかを管理するデータである。この
図2の例において、ADM Aは、NAND型フラッシュメモリMに格納されている4KBのデータごとに、1ビットのフラグ情報を用いて、有効であるか無効であるかを管理する。例えば、NAND型フラッシュメモリMに格納されているデータDと、ADM Aのフラグ情報Bとが対応し、フラグ情報Bは有効であることを示す“1”であるため、データDは有効データである。
【0068】
図3は、本実施形態に係る階層的LUT51の構成を例示する概念図である。この
図3及び
図8において、メガバイトはMBと表記する。
【0069】
ネームスペースとは、不揮発性メモリ5に含まれる複数のブロックを区分けすることによって得られるメモリのスペースである。ある範囲のメモリ領域ごとにネームスペースを割り当てることにより、少なくとも2つのメモリ領域で論理アドレスが重複する場合であっても、ネームスペースIDと論理アドレスとを用いて適切なメモリ領域の適切なデータをアクセスすることができる。ネームスペースを識別可能とすることで、ネームスペースごとに独立してLBAを割り当て可能であり、複数のネームスペースでLBAが重複した場合であっても適切にアクセス可能である。したがって、情報処理システム1では、異なるネームスペースへのアクセスは、例えば異なるデバイスへのアクセスと同様に扱われる。
【0070】
本実施形態において、階層的LUT51は、例えば、LUTを複数のレイヤを持つ階層構造で記述する。本実施形態では、階層的LUT51は、ネームスペースNS1~NSn(nは2以上の自然数)に分かれている。階層的LUT51におけるネームスペースNS1~NSnごとの階層の深さは、ネームスペースNS1~NSnのサイズに応じて決定される。
【0071】
階層的LUT51の第1の(最上位の)レイヤL1は、不揮発性メモリ5のPBAの範囲を、ネームスペースNS1~NSnのサイズに応じてネームスペースNS1~NSnに対応するn個のフラグメント(エレメントグループ)Li1に割り当てる。第1のレイヤL1のn個のフラグメントLi1のそれぞれは、さらに複数のエレメントC1を含む。
【0072】
第2のレイヤL2は、第1のレイヤL1でn個に区分けされたPBAの範囲のそれぞれを、さらにm個のフラグメントLi2に区分けする。m個は、例えば、第1のレイヤL1のフラグメントLi1に含まれる複数のエレメントC1の数としてもよい。第2のレイヤL2のフラグメントLi2のそれぞれは、さらに複数のエレメントC2を含む。第1のレイヤL1のフラグメントLi1に含まれる複数のエレメントC1のそれぞれは、第2のレイヤL2のフラグメントLi2に対応付けられており、例えば、対応す下位のフラグメントLi2を示すポインタを含む。
【0073】
第3のレイヤL3は、第2のレイヤL2でm個に区分けされたPBAの範囲のそれぞれを、さらにl個のフラグメントLi3に区分けする。l個は、例えば、第2のレイヤL2のフラグメントLi2に含まれる複数のエレメントC2の数としてもよい。第3のレイヤL3のフラグメントLi3のそれぞれは、さらに複数のエレメントC3を含む。第2のレイヤL2のフラグメントLi2に含まれる複数のエレメントC2のそれぞれは、第3のレイヤL3のフラグメントLi3に対応付けられており、例えば、対応する下位のフラグメントLi3を示すポインタを含む。
【0074】
第4のレイヤL4は、第3のレイヤL3でl個に区分けされたPBAの範囲のそれぞれを、さらにk個のフラグメントLi4に区分けする。k個は、例えば、第3のレイヤL3のフラグメントLi3に含まれる複数のエレメントC3の数としてもよい。第4のレイヤL4のフラグメントLi4のそれぞれは、さらに複数のエレメントC4を含む。第3のレイヤL3のフラグメントLi3に含まれる複数のエレメントC3のそれぞれは、第4のレイヤL4のフラグメントLi4に対応付けられており、例えば、対応する下位のフラグメントLi4を示すポインタを含む。
【0075】
階層的LUT51は、最下位の第4のレイヤL4において区分けされたPBAにより、LBAに対応するPBAを特定する。
【0076】
このように、第1のレイヤL1におけるエレメントC1が第2のレイヤL2におけるフラグメントLi2を示し、第2のレイヤL2におけるエレメントC2が第3のレイヤL3におけるフラグメントLi3を示し、第3のレイヤL3におけるエレメントC3が第4のレイヤL4におけるフラグメントLi4を示すことで、階層的LUT51が形成される。
【0077】
第1乃至第4のレイヤL1~L4に所属する1つのフラグメントに含まれるエレメントの数は、同じでもよく、例えば、32個としてもよい。
【0078】
この
図3では、レイヤの数が4つの場合を図示している。しかしながら、レイヤの数は2以上であればよい。
【0079】
階層的LUT51で用いられるPBAのサイズは、上記
図2の例と同様に、32ビットとしてもよい。また、階層的LUT51で用いられるPBAのサイズは、例えばメモリ装置3のアドレスバスの幅と等しくてもよい。
【0080】
例えば、各フラグメントLi1~Li4は、対応する下位レイヤのフラグメントに対応するPBA(先頭の物理アドレス)又は対応するアクセス対象データのPBA、及び、対応するネームスペースID(ネームスペース名)、対応する論理アドレス、管理するPBAの範囲(グレイン:Grain)を含む。
【0081】
例えば、各フラグメントLi1~Li4のエレメントC1~C4が管理するPBAの範囲が、NAND型フラッシュメモリにおいて扱われるページ単位(例えば4KB)と一致している場合は、各エレメントC1~C4にはアクセス対象データのPBAが格納される。例えば、下位のレイヤが存在する場合は、各エレメントC1~C4には下位のレイヤのフラグメントに対応するPBA(例えば先頭の物理アドレス)が格納される。なお、下位のレイヤのフラグメントに対応するPBAは、他の形式のアドレスで表記されてもよい。
【0082】
階層的LUT51において、上位のレイヤのフラグメントは複数のエレメントを含む。上位のレイヤのフラグメントに含まれる各エレメントによって管理されるPBAの範囲は、下位のレイヤのフラグメントによって管理されるPBAの範囲に対応しており、この下位のレイヤのフラグメントはさらに複数のエレメントを含む。例えば、上位のレイヤのフラグメントに含まれる各エレメントには、下位のレイヤのフラグメントに対応するPBAが格納される。これにより、上位のレイヤと下位のレイヤとが関連付けられる。
【0083】
さらに下位のレイヤにおいても、同様に、例えば、下位のレイヤの各フラグメントに含まれる各エレメントには、さらに下位のレイヤのフラグメントに対応するPBAが格納される。
【0084】
そして、1個のエレメントで管理するPBAの範囲が4KBとなった場合に、当該エレメントには、不揮発性メモリ5に書き込まれているデータに対応するPBAが格納される。
【0085】
なお、階層的LUT51に含まれるフラグメントLi1~Li4のそれぞれは、複数の参照先のデータが不揮発性メモリ5に連続して配置されている場合に、複数の参照先のデータのうちの先頭を示す先頭ポインタを含み、この複数の参照先のデータのうち先頭ではない他のポインタを省略してもよい。これにより、階層的LUT51のサイズを削減可能であり、キャッシュメモリ451の使用量を削減可能である。例えば、第1のレイヤに所属する第1のフラグメントに含まれる複数のエレメントによって参照される複数のPBAが連続する場合、第1のフラグメントに含まれる第1のエレメントは、複数のPBAのうちの先頭のPBAを含む。第1のフラグメントに含まれる他のエレメント、及び、第1のフラグメントの下位である第2のレイヤに所属する第2のフラグメントは、省略可能である。これにより、階層的LUT51における第1のレイヤ及び第2のレイヤで必要とされるデータ量を削減することができる。書き込み制御部441又は読み出し制御部442は、例えば、第2のレイヤに所属する第2のフラグメントが省略されている場合に、この第1のレイヤに所属する第1のフラグメントに含まれる第1のエレメントが連続する複数のPBAを参照していると判断する。これにより、書き込み制御部441又は読み出し制御部442は、例えば、バースト転送などを用いて、不揮発性メモリ5に格納されている連続するデータに対するアクセス速度を向上することができる。
【0086】
図3の例をより詳しく説明する。第1のレイヤL1は、n個のネームスペースNS1~NSnのそれぞれに対応するn個のフラグメントLi1に区分けされる。1つのフラグメントLi1は、4GB分のPBAに対応する。1つのフラグメントLi1は、さらに32個のエレメントC1を含む。1つのエレメントC1は、128MB分のPBAに対応する。すなわち、フラグメントLi1のエレメントC1に対応するPBAの範囲は、128MBである。エレメントC1によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるデータの最小単位、例えばページ単位(例えば4KB)よりも大きい。このため、各エレメントC1に対して第2のレイヤL2のフラグメントLi2が生成され、各エレメントC1には第2のレイヤL2の対応するフラグメントLi2の先頭を示
すアドレスが格納される。
【0087】
第2のレイヤL2は、第1のレイヤL1のエレメントC1に対応するフラグメントLi2に区分けされる。1つのフラグメントLi2は、128MB分のPBAに対応する。1つのフラグメントLi2は、さらに32個のエレメントC2を含む。1つのエレメントC2は、4MB分のPBAに対応する。すなわち、フラグメントLi2のエレメントC2に対応するPBAの範囲は、4MBである。エレメントC2によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるページ単位4KBよりも大きい。このため、各エレメントC2に対して第3のレイヤL3のフラグメントLi3が生成され、各エレメントC2には第3のレイヤL3の対応するフラグメントLi3の先頭を示すアドレスが格納される。
【0088】
第3のレイヤL3は、第2のレイヤL2のエレメントC2に対応するフラグメントLi3に区分けされる。1つのフラグメントLi3は、4MB分のPBAに対応する。1つのフラグメントLi3は、さらに32個のエレメントC3を含む。1つのエレメントC3は、128KB分のPBAに対応する。すなわち、フラグメントLi3のエレメントC3に対応するPBAの範囲は、128KBである。エレメントC3によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるページ単位4KBよりも大きい。このため、各エレメントC3に対して第4のレイヤL4のフラグメントLi4が生成され、各エレメントC3には第4のレイヤL4の対応するフラグメントLi4の先頭を示すアドレスが格納される。
【0089】
第4のレイヤL4は、第3のレイヤL3のエレメントC3に対応するフラグメントLi4に区分けされる。1つのフラグメントLi4は、128KB分のPBAに対応する。1つのフラグメントLi4は、さらに32個のエレメントC4を含む。1つのエレメントC4は、4KB分のPBAに対応する。すなわち、フラグメントLi4のエレメントC4に対応するPBAの範囲は、4KBである。エレメントC4によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるページ単位4KBと同等である。このため、各エレメントC4には、データを示すPBAが格納される。
【0090】
例えば、1つのフラグメントLi4に格納される複数のPBAが連続する場合には、フラグメントLi4は省略されてもよい。フラグメントLi4の参照元のエレメントC3は、エレメントC3に対応するPBAの範囲である128KB分のデータの先頭のPBAを含む。すなわち、あるフラグメントに含まれる複数のエレメントに対応するPBAの範囲と同じサイズのデータが連続するPBAに対応づけられている場合、このあるフラグメントの下位のフラグメントは省略可能であり、あるフラグメントに含まれるエレメントは、このあるデータの先頭のPBAを含む。
【0091】
なお、ネームスペースNS1~NSnごとに、対応するPBAの範囲の大きさ(対応するメモリ領域のサイズ)が異なり、例えば階層的LUT51で管理されるネームスペースNS1~NSnごとのPBAの数は異なるとしてもよい。この場合、ネームスペースNS1~NSnごとに、例えばネームスペースNS1~NSnのサイズに応じて、レイヤの数が異なるとしてもよい。例えば、ネームスペースNS1では128GBに相当するPBAをレイヤ数5で管理し、ネームスペースNS2では64GBに相当するPBAをレイヤ数6で管理してもよい。
【0092】
本実施形態では、1つのネームスペース内においては、フラグメントに含まれるエレメントの数は同じであることが望ましいが、フラグメントに含まれるエレメントの数はレイヤごとに異なってもよい。
【0093】
図4は、本実施形態に係る階層的LUT51のフラグメントのデータフォーマットを例示するデータ構造図である。具体的には、
図4は、
図3に示すような、上位のレイヤの1フラグメントが下位のレイヤの32個のフラグメントに対応する階層的LUT51の1つのフラグメントを例示している。
【0094】
キャッシュメモリ451は、階層的LUT51の一部を、キャッシュライン単位で格納する。以下では、階層的LUT51のフラグメントをLUTフラグメントとする。LUTフラグメントに対応するキャッシュラインをLUTキャッシュラインとする。
【0095】
キャッシュメモリ451で更新されたデータは、キャッシュライン単位で、不揮発性メモリ5に書き戻される。
【0096】
LUTフラグメント及びLUTキャッシュラインは、各レイヤL1~L4におけるLUTフラグメントLi1~Li4のいずれかに対応する。LUTフラグメント及びLUTキャッシュラインは、例えば、PBA格納部C_1~C_32とLBA格納部C_33と管理データ格納部C_34とを含む。
【0097】
PBA格納部C_1~C_32は、エレメントに対応する。PBA格納部C_1~C_32は、下位のレイヤのLUTフラグメントに対応するPBA又はデータの格納位置を示すPBAを格納する。上記
図2で説明したように、1つのPBAは例えば32ビットで表される。なお、各PBAには、例えば8ビットの管理データMD1が付されてもよい。各管理データMD1は、例えば、PBA格納部C_1~C_32のそれぞれに格納されているPBAが、下位のレイヤのLUTフラグメントに対応するPBAであるか(この場合、さらに不揮発性メモリ5上のPBAであるか、又は、キャッシュメモリ451上のPBAであるか)、又は、データの格納位置を示すPBAであるかを管理してもよい。PBA格納部C_1~C_32のそれぞれのサイズは、それぞれPBAのサイズと管理データMD1のサイズとを足した40ビットとしてもよく、PBA格納部C_1~C_32の合計サイズは160バイトとしてもよい。
【0098】
LBA格納部C_33は、PBA格納部C_1(すなわち、LUTフラグメントで管理する先頭のPBA)に対応するLBAを格納する。
【0099】
管理データ格納部C_34は、当該LUTフラグメントが属するネームスペースID、及び、当該LUTフラグメントの管理するPBAの範囲を格納する。
【0100】
なお、管理データ格納部C_34は、他の情報を格納してもよい。例えば、管理データ格納部C_34は、当該LUTフラグメントが属するレイヤのIDを格納してもよい。
【0101】
各LUTフラグメントが例えばメモリ45Aのキャッシュメモリ451上に格納される場合、各LUTキャッシュラインは、LUTフラグメントに加えて、キャッシュメモリ451において互いに関連付けるべきLUTキャッシュラインを示すポインタをさらに含むとしてもよい。より具体的には、LUTキャッシュラインは、このLUTキャッシュラインの前に参照されるキャッシュラインを示す前ポインタ格納部C_N-1と、当該LUTキャッシュラインの次に参照されるキャッシュラインを示す次ポインタ格納部C_Nとを含むとしてもよい。このように、キャッシュメモリ451上に格納されているLUTキャッシュラインが参照すべき前後のキャッシュラインへのポインタを含むことにより、キャッシュメモリ451に対するアクセスを高速化することができ、連続的なアクセスを実現することができる。なお、LUTキャッシュラインは、他の管理データを含むとしてもよい。
【0102】
例えば、あるキャッシュラインが後述のフリーリストFLに含まれる場合、このキャッシュラインの次アドレス格納部C_Nは、同じフリーリストFLに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。あるキャッシュラインが後述のダーティリストDLに含まれる場合、このキャッシュラインの次アドレス格納部C_Nは、同じダーティリストDLに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。あるキャッシュラインが後述のクリーンリストCLに含まれる場合、このキャッシュラインの次アドレス格納部C_Nは、同じクリーンリストCLに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。
【0103】
本実施形態においては、次に参照すべきキャッシュラインのアドレスはPBAで表されるとして説明するが、他の形式のアドレスで表されてもよい。また、本実施形態において、前ポインタ格納部C_N-1と、次ポインタ格納部C_Nとは、PBAを格納するとして説明するが、他の形式のアドレスを格納してもよい。
【0104】
LUTフラグメント及びLUTキャッシュラインは、全て
図4に示すフォーマットに従って構成されるのが望ましい。この場合、各LUTフラグメントのサイズは固定長(例えば、168バイト)とすることができる。各LUTキャッシュラインのサイズは固定長(例えば、188バイト)とすることができる。しかしながら、各LUTフラグメント及び各LUTキャッシュラインは、レイヤごとに異なるフォーマットに従って構成されてもよい。
【0105】
図5は、本実施形態に係るADM52のフラグメントのデータフォーマットを例示するデータ構造図である。
【0106】
キャッシュメモリ451は、ADM52の一部を、キャッシュライン単位で格納する。以下では、ADM52のフラグメントを、ADMフラグメントとする。ADMフラグメントに対応するキャッシュラインをADMキャッシュラインとする。
【0107】
ADMフラグメント及びADMキャッシュラインは、例えば、マップ格納部D_1~D_40とPBA格納部D_42とを含む。
【0108】
マップ格納部D_1~D_40は、不揮発性メモリ5に格納される4KBのデータごとに、各データの有効又は無効を管理するビットを格納する。例えば、マップ格納部D_1~D_40の合計サイズが160バイト(=1280ビット)とすると、1つのADMフラグメント及びADMキャッシュラインで不揮発性メモリ5に格納される1280個分の4KBのデータの有効又は無効を管理可能である。
【0109】
PBA格納部D_42は、マップ格納部D_1のPBA(すなわち、このADMフラグメントで管理する先頭のPBA)を格納する。
【0110】
ADMキャッシュラインは、前述のLUTキャッシュラインと同様に、キャッシュメモリ451において互いに関連付けるべきキャッシュラインを示すポインタをさらに含むとしてもよい。より具体的には、ADMキャッシュラインは、当該ADMキャッシュラインの前に参照されるキャッシュラインを示す前ポインタ格納部D_N-1と、当該ADMキャッシュラインの次に参照されるキャッシュラインを示す次ポインタ格納部D_Nとを含む。なお、ADMキャッシュラインは、他の管理データを含んでもよい。
【0111】
また、ADMフラグメント及びADMキャッシュラインは、全て
図5に示すフォーマットに従って構成され、LUTフラグメント及びLUTキャッシュラインと同じサイズの固定長とされるのが望ましい。すなわち、ADMフラグメントのサイズはLUTフラグメントと同じ168バイト、ADMキャッシュラインのサイズはLUTキャッシュラインのサイズと同じ188バイトとすることが好ましい。
【0112】
図6は、本実施形態に係るキャッシュメモリ451から不揮発性メモリ5への書き戻し時に使用されるデータフォーマットを例示するデータ構造図である。
【0113】
上述のように、キャッシュメモリ451でLUTキャッシュライン又はADMキャッシュラインが更新されると、更新されたLUTキャッシュラインに含まれるLUTフラグメント又は更新されたADMキャッシュラインに含まれるADMフラグメントが、不揮発性メモリ5に書き戻される。
【0114】
本実施形態では、LUTフラグメント及びADMフラグメントのサイズは全て同じであるため、書き込み制御部441は、LUTフラグメント及びADMフラグメントを効率的に不揮発性メモリ5へ書き戻すことができる。
【0115】
具体的には、例えば、上記
図4及び
図5に示すように、不揮発性メモリ5上へ書き戻されるLUTフラグメントのサイズは、レイヤに依存することなく、全て168バイトである。また、ADMフラグメントのサイズはLUTフラグメントのサイズと同じ168バイトである。ここで、例えば、
図6に示すようにキャッシュメモリ451から不揮発性メモリ5へ書き戻しを行うデータ単位(以下、書き戻し単位とする)を512バイトとすると、1つの書き戻し単位は、キャッシュメモリ451に格納されているLUTフラグメントとADMフラグメントのうちから選択された任意の3つのフラグメントFG_1~FG_3を含むことができる。書き戻し単位からフラグメントFG_1~FG_3を除いた余りサイズは8バイトとなる。8バイトは、書き戻し単位(512バイト)に対して十分小さい値である。さらに、例えばNAND型フラッシュメモリのページサイズは512バイトの整数倍が一般的であるため、ページサイズに対しても余りサイズは十分小さい値となる。したがって、
図6のデータフォーマットを用いることにより、書き戻し時に不揮発性メモリ5に書き込まれるページの容量の無駄を抑え、効率的なキャッシュラインの書き戻しを行うことができる。
【0116】
なお、1つの書き戻し単位は、書き戻し単位の余りサイズ(8バイト)を用いた管理データMD2を含むとしてもよい。例えば、管理データMD2は、1つの書き戻し単位に格納される3つのフラグメントの種類を表してもよい。
【0117】
また、書き戻し単位は、512バイトに限られない。書き戻し単位は、例えば、1KBであってもよく、2KBであってもよい。しかしながら、書き戻し単位は、512バイトの倍数であることが望ましい。
【0118】
また、不揮発性メモリコントローラ46と不揮発性メモリ5との間で、LUTフラグメントとADMフラグメントとのうちのいずれかであるフラグメントの送受信を行う場合、ECC(Error-Correcting Code)を含むフラグメントを送受信してもよい。この場合、例えば、1つの書き戻し単位に含まれるフラグメントの数と、フラグメントのサイズとを調整することにより、複数個のフラグメントに対して無駄なくECCを付することができ、フラグメントの送受信を効率的に行うことができる。
【0119】
図7は、本実施形態に係るPBAの探索処理を例示するフローチャートである。
【0120】
PBA探索処理とは、具体的には、プロセッサ44のアドレス変換部445が、階層的LUT51を用いて指定されたLBAをPBAに変換する処理である。
【0121】
なお、階層的LUT51は、あらかじめプロセッサ44の初期化部444及び書き込み処理におけるアドレス変換部445などにより生成され、不揮発性メモリ5に格納されている。
【0122】
ステップS701において、キャッシュメモリ制御部447は、不揮発性メモリコントローラ46を経由し、不揮発性メモリ5に格納されている階層的LUT51の第1のレイヤL1のLUTフラグメントLi1を読み出し、LUTフラグメントLi1をメモリ45A内のキャッシュメモリ451へ格納する。LUTフラグメントLi1の読み出しは、例えばメモリ装置3の起動時に行われてもよい。また、LUTフラグメントLi1の読み出しは、情報処理装置2によって指定されたネームスペースIDに基づいて行われるとしてもよい。
【0123】
ステップS702において、アドレス変換部445は、読み出されたLUTフラグメントLi1に対して、指定されたLBAに対応するPBA格納部を探索し、該当するPBA格納部に格納されているPBAを読み出す。
【0124】
ステップS703において、アドレス変換部445は、ステップS702で読み出したPBAが下位のレイヤのLUTフラグメントを示すPBAであるか否かを判断する。
【0125】
読み出したPBAが下位のレイヤのLUTフラグメントを示すPBAでない場合は、アドレス変換部445は、ステップS705において、読み出したPBAが指定されたLBAに対応するアドレスであるとし、探索処理を終了する。
【0126】
読み出したPBAが下位のレイヤのLUTフラグメントを示すPBAである場合は、キャッシュメモリ制御部447は、ステップS704において、読み出したPBAに対応する下位のレイヤのLUTフラグメントを読み出す。キャッシュメモリ制御部447は、クリーンリストCLに所属するいずれかのキャッシュラインの次ポインタ格納部C_Nに、キャッシュメモリ451へ格納される下位のレイヤのLUTフラグメントに対応するLUTキャッシュラインを示すポインタを格納することで、下位のレイヤのLUTフラグメントに対応するLUTキャッシュラインがクリーンリストCLに所属することを表す。キャッシュメモリ制御部447は、下位のレイヤのLUTフラグメントに対応するLUTキャッシュラインの前ポインタ格納部C_N-1に、クリーンリストCLに所属するキャッシュラインを示すポインタを格納する。その後、処理はステップS702に戻る。
【0127】
なお、ステップS704において、ステップS703で読み出された下位のレイヤのフラグメントの参照先が不揮発性メモリ5内のPBAを指す場合は、キャッシュメモリ制御部447は、不揮発性メモリ5の階層的LUT51より当該下位のフラグメントを読み出し、読み出した下位のフラグメントをメモリ45A内のキャッシュメモリ451へ格納する。ステップS703で読み出された下位のレイヤのフラグメントの参照先がキャッシュメモリ451内のPBAを指す場合は、キャッシュメモリ制御部447による不揮発性メモリ5の階層的LUT51からメモリ45A内のキャッシュメモリ451への読み出し処理は不要である。
【0128】
図8は、本実施形態に係るPBAの探索処理におけるキャッシュラインの関係を例示するブロック図である。
図8の階層的LUT51の構成は、
図3に示す階層的LUT51の構成と同じである。
【0129】
この
図8では、第1のレイヤL1から第4のレイヤL4へ向けて、LUTキャッシュラインCLi1,CLi2(1),CLi3(2),CLi4(20)と読み出す状態を例示している。
【0130】
第1のレイヤL1において、LUTフラグメントLi1に対応するLUTキャッシュラインCLi1は、PBA格納部C1_1~C1_32を含む。PBA格納部C1_1~C1_32は、それぞれ、128MBのPBAの範囲に対応する。PBA格納部C1_1~C1_32は、それぞれ、第2のレイヤL2の32個のLUTフラグメントLi2に対応するPBAを格納する。この
図8において、PBA格納部C1_1~C1_32は、それぞれ、第2のレイヤL2におけるLUTキャッシュラインCLi2(1)~CLi2(32)に対応するPBAを含む。
【0131】
第2のレイヤL2において、LUTフラグメントLi2に対応するLUTキャッシュラインCLi2(1)は、PBA格納部C2(1)_1~C2(1)_32を含む。PBA格納部C2(1)_1~C2(1)_32は、それぞれ、4MBのPBAの範囲に対応する。PBA格納部C2(1)_1~C2(1)_32は、それぞれ、第3のレイヤL3の32個のLUTフラグメントLi3に対応するPBAを格納する。この
図8において、PBA格納部C2(1)_1~C2(1)_32は、それぞれ、第3のレイヤL3におけるLUTキャッシュラインCLi3(1)~CLi3(32)に対応するPBAを含む。
【0132】
第3のレイヤL3において、LUTフラグメントLi3に対応するLUTキャッシュラインCLi3(2)は、PBA格納部C3(2)_1~C3(2)_32を含む。PBA格納部C3(2)_1~C3(2)_32は、それぞれ、128KBのPBAの範囲に対応する。PBA格納部C3(2)_1~C3(2)_32は、それぞれ、第4のレイヤL4の32個のLUTフラグメントLi4に対応するPBAを格納する。この
図8において、PBA格納部C3(2)_1~C3(2)_32は、それぞれ、第4のレイヤL4におけるLUTキャッシュラインCLi4(1)~CLi4(32)に対応するPBAを含む。
【0133】
第4のレイヤL4において、LUTフラグメントLi4に対応するLUTキャッシュラインCLi4(20)は、PBA格納部C4(20)_1~C4(20)_32を含む。PBA格納部C4(20)_1~C4(20)_32は、それぞれ、4KBのPBAの範囲に対応する。PBA格納部C4(20)_1~C4(20)_32は、それぞれ、データに対応するPBAを格納する。
【0134】
まず、キャッシュメモリ制御部447は、例えば、ネームスペースID、LBA Y、先頭アドレス及びオフセット値に基づいて、第1のレイヤL1のLUTフラグメントLi1を不揮発性メモリ5から読み出し、LUTフラグメントLi1に対応するLUTキャッシュラインCLi1をキャッシュメモリ451に格納する。
【0135】
アドレス変換部445は、例えば、LBA Y、先頭アドレス及びオフセット値に基づいて、LUTフラグメントLi1に対応するLUTキャッシュラインCLi1の中から、対応するPBA格納部C1_1に格納されているPBAを読み出す。
【0136】
キャッシュメモリ制御部447は、PBA格納部C1_1に格納されている値が第2のレイヤL2のLUTフラグメントLi2を示すPBAであるので、LUTフラグメントLi2を不揮発性メモリ5から読み出し、LUTフラグメントLi2に対応するLUTキャッシュラインCLi2(1)をキャッシュメモリ451に格納する。
【0137】
アドレス変換部445は、LBA Yを含むLBAの範囲が割り当てられるPBA格納部C2(1)_2を探索し、PBA格納部C2(1)_2に格納されているPBAを読み出す。
【0138】
キャッシュメモリ制御部447は、PBA格納部C2(1)_2に格納されている値が第3のレイヤL3のLUTフラグメントLi3を示すPBAであるので、LUTフラグメントLi3を不揮発性メモリ5から読み出し、LUTフラグメントLi3に対応するLUTキャッシュラインCLi3(2)をキャッシュメモリ451に格納する。
【0139】
アドレス変換部445は、LUTキャッシュラインCLi3(2)から、LBA Yを含むLBAの範囲が割り当てられるPBA格納部C3(2)_20を探索し、PBA格納部C3(2)_20に格納されているPBAを読み出す。
【0140】
キャッシュメモリ制御部447は、PBA格納部C3(2)_20に格納されている値が第4のレイヤL4のLUTフラグメントLi4を示すPBAであるので、LUTフラグメントLi4を不揮発性メモリ5から読み出し、LUTフラグメントLi4に対応するLUTキャッシュラインCLi4(20)をキャッシュメモリ451に格納する。
【0141】
アドレス変換部445は、LUTキャッシュラインCLi4(20)から、LBA Yを含むLBAの範囲が割り当てられるPBA格納部C4(20)_31を探索し、PBA格納部C4(20)_31に格納されているPBA Xを読み出す。PBA格納部C4(20)_31に格納されているPBA Xは、LUTキャッシュラインではなく、データを示す。このため、アドレス変換部445は、LBA Yに対応するPBA Xを特定することができる。
【0142】
図9は、本実施形態に係るキャッシュメモリ451のリスト構造を例示するデータ構造図である。
【0143】
本実施形態において、キャッシュラインは、LUTキャッシュラインでもよく、ADMキャッシュラインでもよい。
【0144】
キャッシュメモリ制御部447は、階層的LUT51のLUTフラグメントをLUTキャッシュラインとしてキャッシュメモリ451上に格納する場合、又は、ADM52のADMフラグメントをADMキャッシュラインとしてキャッシュメモリ451上に格納する場合、上記
図4及び
図5で説明したように、キャッシュメモリ451上に格納されたキャッシュラインを連結してリスト構造を生成する。
【0145】
本実施形態において、キャッシュメモリ451は、フリーリストFL、ダーティリストDL、クリーンリストCLを含む。なお、LUTキャッシュラインとADMキャッシュラインとが異なるリストで管理されることが望ましい。この場合、LUTキャッシュラインを管理するリストとADMキャッシュラインを管理するリストとは、同じフォーマットであることが望ましい。
【0146】
図9において、フリーリストFL、ダーティリストDL、クリーンリストCLに属するキャッシュラインの次ポインタ格納部C_Nは、同じリストに属し次に連結されるキャッシュラインのアドレスを格納する。次に連結されるキャッシュラインがない場合、次ポインタ格納部C_Nは省略されてもよい。キャッシュラインの前ポインタ格納部C_N-1は。同じリストに属し前に連結されるキャッシュラインのアドレスを格納する。前に連結されるキャッシュラインがない場合、前ポインタ格納部C_Nは省略されてもよい。
【0147】
フリーリストFLは、クリーンリストCLにもダーティリストDLにも属さない例えば書き換え候補のキャッシュラインFL1~FL3を含む。階層的LUT51又はADM52からキャッシュメモリ451へ格納された直後のキャッシュラインは、フリーリストFLに属する。フリーリストFLに属するキャッシュラインFL1~FL3の並び順は、ランダムでもよい。キャッシュラインFL1の次ポインタ格納部C_N及びキャッシュラインFL3の前ポインタ格納部C_N-1は、キャッシュラインFL2のPBAを格納している。キャッシュラインFL2の次ポインタ格納部C_Nは、キャッシュラインFL3のPBAを格納している。キャッシュラインFL2の前ポインタ格納部C_N-1は、キャッシュラインFL1のPBAを格納している。
【0148】
ダーティリストDLは、例えばキャッシュメモリ451でキャッシュラインが書き換えられたが、書き換えられたキャッシュラインの内容が不揮発性メモリ5の階層的LUT51に反映されていないキャッシュラインDL1,DL2を含む。ダーティリストDLに属するキャッシュラインDL1,DL2の並び順は、ランダムでもよい。キャッシュラインDL1の次ポインタ格納部C_Nは、キャッシュラインDL2のPBAを格納している。キャッシュラインDL2の前ポインタC_N-1は、キャッシュラインDL1のPBAを格納している。
【0149】
例えば、キャッシュメモリ制御部447は、通信インタフェース制御部41が情報処理装置2などより書き込みコマンドを受信すると、書き込み先のLBAに該当するLUTキャッシュラインをフリーリストFLからダーティリストDLへ切り替える。
【0150】
ダーティリストDLに属するキャッシュラインDL1,DL2の内容は、不揮発性メモリ5の階層的LUT51又はADM52に反映される(書き込まれる)必要がある。キャッシュメモリ制御部447は、ダーティリストDL内のキャッシュラインDL1,DL2が不揮発性メモリ5へ書き込まれた後は、キャッシュラインDL1,DL2をダーティリストDLで管理する必要がないため、キャッシュラインDL1,DL2をダーティリストDLからクリーンリストCLへ繋ぎ替える。このため、ダーティリストDLに属するキャッシュラインDL1,DL2は、先入れ先出し(Fast In Fast Out:FIFO)方式で、不揮発性メモリ5へ書き込まれ、クリーンリストCLに属するキャッシュラインに変換されることが望ましい。
【0151】
例えば、ダーティリストDLは、不揮発性メモリ5への書き込み処理を高速化するために用いられる。
【0152】
クリーンリストCLは、キャッシュメモリ451と不揮発性メモリ5の階層的LUT51又はADM52とで内容が同じキャッシュラインCL1~CL4を含む。キャッシュラインCL1~CL4は、例えば、キャッシュメモリ451において書き換えられ、不揮発性メモリ5の階層的LUT51に対して反映されたキャッシュラインである。クリーンリストCLに属するキャッシュラインCL1~CL4の並び順は、ランダムでもよい。キャッシュラインCL1の次ポインタ格納部C_N及びキャッシュラインCL3の前ポインタ格納部C_N-1は、キャッシュラインCL2のPBAを格納している。キャッシュラインCL2の次ポインタ格納部C_N及びキャッシュラインCL4の前ポインタ格納部C_N-1は、キャッシュラインCL3のPBAを格納している。キャッシュラインCL2の前ポインタ格納部C_N-1は、キャッシュラインCL1のPBAを格納している。キャッシュラインCL3の次ポインタ格納部C_Nは、キャッシュラインCL4のPBAを格納している。
【0153】
例えば、キャッシュメモリ制御部447は、通信インタフェース制御部41が情報処理装置2などより読み出しコマンドを受信すると、読み出し先のLBAに該当するキャッシュラインをフリーリストFLからクリーンリストCLへ切り替える。
【0154】
クリーンリストCLに属するキャッシュラインCL1~CL4は、不揮発性メモリ5の階層的LUT51の一部と同じ内容であるため、クリーンリストCLに属するキャッシュラインCL1~CL4が失われた場合であっても、キャッシュメモリ451のキャッシュラインCL1~CL4と不揮発性メモリ5に格納されている階層的LUT51又はADM52のデータとの間で不整合は発生しない。このため、例えば、キャッシュメモリ制御部447は、フリーリストFLの合計サイズが一定のしきい値以下に減少した場合、クリーンリストCLのキャッシュラインをフリーリストFLへ移動してもよい。なお、クリーンリストCLは先入れ先出し方式で管理されてもよい。クリーンリストCLの増加又は減少は管理されていなくてもよい。すなわち、リスト数の増加又は減少はランダムに行われてもよい。
【0155】
以下では、メモリ装置3が読み出しコマンド及び書き込みコマンドを受信した際のキャッシュメモリ451の状態変化の詳細について説明する。
【0156】
図10は、本実施形態に係るキャッシュメモリ451におけるキャッシュラインの状態変化を例示するフローチャートである。
【0157】
図11は、本実施形態に係るキャッシュメモリ451におけるキャッシュラインの状態変化を例示するブロック図である。
図11は、
図10のフローチャートで示される処理を図示する。
【0158】
ステップS1001において、キャッシュメモリ制御部447は、不揮発性メモリ5から階層的LUT51の一部を読み出し、キャッシュメモリ451にフリーリストFLに属するキャッシュラインFL1~FLxとして格納する。例えば、ステップS1001では、上記
図7のステップS701と同様に、階層的LUT51の最上位の第1のレイヤL1のフラグメントLi1に対応するキャッシュラインCLi1がキャッシュメモリ451へ格納される。
【0159】
ステップS1002において、キャッシュメモリ制御部447は、情報処理装置2から通信インタフェース制御部41経由で不揮発性メモリ5に対するアクセスコマンドを受信したか否か判断する。書き込みコマンドを受信した場合、処理はステップS1003に進み、読み出しコマンドを受信した場合、処理はステップS1007へ進み、アクセスコマンドを受信しない場合は、処理はステップS1008へ進む。
【0160】
ステップS1003において、アドレス変換部445は、フリーリストFLのキャッシュラインFL1~FLxに対して書き込み先のLBAに対応するPBAを探索する。ここで、階層的LUT51又はキャッシュメモリ451に対する探索処理は、上記
図7及び
図8で説明した探索処理と同様である。
【0161】
キャッシュメモリ制御部447は、アドレス変換部445によって探索された階層的LUT51のうちキャッシュメモリ451に格納されていないLUTフラグメントを読み出し、読み出したLUTフラグメントをフリーリストFLに属するキャッシュラインFL1~FLxのいずれかとしてキャッシュメモリ451へ格納する。また、キャッシュメモリ制御部447は、ADM52のうち書き込み先のPBAに対応するADMを含むADMフラグメントを読み出し、読み出したADMフラグメントをフリーリストFLに属するキャッシュラインFL1~FLxのいずれかとしてキャッシュメモリ451へ格納する。さらに、キャッシュメモリ制御部447は、アドレス変換部445によりフリーリストFLのキャッシュラインFL1~FLxのうちLUTキャッシュラインが書き換えられた場合は、書き換えられたLUTキャッシュラインを、階層的LUT51に対応するダーティリストLDLへ移動する。同様に、キャッシュメモリ制御部447は、データマップ管理部446によりフリーリストFLのキャッシュラインFL1~FLxのうちADMキャッシュラインが書き換えられた場合は、書き換えられたADMキャッシュラインを、ADM52に対応するダーティリストADLへ移動する。
【0162】
ステップS1004において、キャッシュメモリ制御部447は、ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxを不揮発性メモリ5の階層的LUT51及びADL52へ反映させるための一定条件が満たされているか否か判断する。条件は、例えばダーティリストLDL,ADLのサイズが一定のしきい値を超えた場合に満たされてもよい。条件が満たされない場合は、ステップS1002に戻る。条件が満たされた場合は、ステップS1005において、キャッシュメモリ制御部447は、ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxを、不揮発性メモリ5の階層的LUT51及びADM52へ反映させる(書き込む)。
【0163】
なお、ステップS1004の判断は、ステップS1002で書き込みコマンドがない場合でも、キャッシュメモリ制御部447により定期的に行われてもよい。
【0164】
ステップS1006において、キャッシュメモリ制御部447は、階層的LUT51への反映が完了したダーティリストLDLのキャッシュラインを、階層的LUT51に対応するクリーンリストLCLへ移動する。キャッシュメモリ制御部447は、ADM52への反映が完了したダーティリストADLのキャッシュラインを、ADM52に対応するクリーンリストACLへ移動する。その後、処理はステップS1002に戻る。
【0165】
ステップS1007において、アドレス変換部445は、フリーリストFLのキャッシュラインFL1~FLxに対して読み出し先のLBAに対応するPBAを探索する。キャッシュメモリ制御部447は、この探索処理において探索した階層的LUT51のうち、キャッシュメモリ451に格納されていないLUTフラグメントを、キャッシュメモリ451にフリーリストFLに属するキャッシュラインFL1~FLxのいずれかとして格納し、その後クリーンリストLCLへ移動する。また、キャッシュメモリ制御部447は、ADM52から読み出し先のPBAに対応するADMを含むADMフラグメントを読み出し、読み出したADMフラグメントをフリーリストFLに属するキャッシュラインFL1~FLxのいずれかとしてキャッシュメモリ451に格納し、その後クリーンリストACLへ移動する。その後、処理はステップS1002に戻る。
【0166】
ステップS1008において、キャッシュメモリ制御部447は、フリーリストFLのサイズをチェックする。フリーリストが不足していない場合、処理はステップS1002に戻る。フリーリストFLが不足している場合、ステップS1009において、キャッシュメモリ制御部447は、クリーンリストLCL,ACLのキャッシュラインをフリーリストFLへ移動する。その後、処理はステップS1002に戻る。
【0167】
なお、上記の
図10の説明では、キャッシュラインがフリーリストFLよりダーティリストLDL,ADLへ移動する例について説明したが、クリーンリストLCL,ACLにおいて書き換えられたキャッシュラインもダーティリストLDL,ADLへ移動可能としてもよい。また、上述の例では、不揮発性メモリ51の階層的LUT51又はADM52から読み出されたLUTフラグメント又はADMフラグメントは、フリーリストFLに属するとしてキャッシュメモリ451に格納されるが、これに代えて、クリーンリストLCL、ACLに属するとしてキャッシュメモリ451に格納されてもよい。
【0168】
ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxは、上述のステップS1004の判断とは関係なく、特定のタイミングで、不揮発性メモリ5内の階層的LUT51又はADM52に反映されてもよい。例えば、メモリ装置3は、メモリ装置3の電源が失われる場合に、ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxを階層的LUT51又はADM52へ書き込む時間分の電力を供給する別電源を確保していてもよい。この場合、メモリ装置3の電源が失われるタイミングで当該別電源からメモリ装置3へ電力が供給され、ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxは、不揮発性メモリ5の階層的LUT51又はADM52へ書き込まれる。この場合、ダーティリストLDL,ADLのサイズを小さくすることで、確保する別電源の容量を小さくすることができ、メモリ装置3に要するコストを抑えることができる。また、ダーティリストLDL,ADLのサイズを小さくすることにより、別電源からの電源供給時にダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxを階層的LUT51又はADM52へ反映する時間を短くすることができ、安全性を高めることができる。
【0169】
ダーティリストLDL,ADLのサイズはしきい値などにより調整可能であるため、ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxを階層的LUT51及びADM52へ反映する頻度を調整することができる。これにより、不揮発性メモリ5へのアクセス頻度、メモリ装置3の処理速度、不揮発性メモリ5の寿命を調整することができる。メモリ装置3は、ダーティリストLDL,ADLのサイズを管理し、情報処理装置2などからのコマンドによりダーティリストLDL,ADLのサイズを変化可能であるため、メモリ装置3のコスト、安全性、性能、寿命のバランスを保つことができる。
【0170】
図12は、本実施形態に係るLUTフラグメントと不揮発性メモリ5のページとの関係を例示するブロック図である。以下では、LUTフラグメント及びLUTキャッシュラインについて説明するが、ADMフラグメント及びADMキャッシュラインについても同様である。この
図12では、ページに含まれるフラグメントの全てがLUTフラグメントの場合を例示している。しかしながら、ページに含まれるフラグメントはADMフラグメントでもよい。ページには、LUTフラグメントとADMフラグメントとが混在してもよい。
【0171】
本実施形態では、階層的LUT51を生成する際に、上述のように全てのレイヤにおいて、LUTフラグメントが同じ数のエレメントを含む。この場合、各LUTフラグメントのサイズは全て同じとなり、各LUTキャッシュラインのサイズは全て同じとなる。LUTフラグメントのサイズを同じとし、LUTキャッシュラインのサイズを同じとすることで、不揮発性メモリ5上で階層的LUT51を効率的に格納することができる。
【0172】
具体的には、例えば、上記
図4に示すLUTフラグメント及びLUTキャッシュラインのフォーマットを用いた場合、不揮発性メモリ5上に配置される階層的LUT51の各LUTフラグメントのサイズは、レイヤに依存することなく、全て168バイトとなる。
【0173】
ここで、例えば、
図12に示すように不揮発性メモリ5のページサイズを1024バイトとすると、1つのページには6つのLUTフラグメントLiA~LiFが含まれる。この場合、当該ページの余りサイズは16バイトとなり、これは1ページの容量(1024バイト)に対して十分小さい値である。したがって、ページの容量の無駄を抑えつつ、効率的にLUTフラグメントを管理することができる。
【0174】
なお、不揮発性メモリコントローラ46と不揮発性メモリ5との間でLUTフラグメントの送受信を行う場合、ECC(Error-Correcting Code)を含むLUTフラグメントを送受信してもよい。この場合、例えば、1つのページに含まれるLUTフラグメントの数と、LUTフラグメントのサイズとを調整することにより、複数個のLUTフラグメントに対して無駄なくECCを付することができ、LUTフラグメントの送受信を効率的に行うことができる。
【0175】
以上説明した本実施形態においては、論理アドレスを物理アドレスへ変換するアドレス変換データを階層的に記述することで、階層的LUT51のうちの一部のデータを効率的にキャッシュメモリ451に格納し、管理することができる。
【0176】
本実施形態において、階層的LUT51に含まれる複数のフラグメントは同じサイズである。したがって、不揮発性メモリ5からフラグメントを読み出してキャッシュメモリ451へ格納する処理と、キャッシュメモリ451からフラグメントを読み出して不揮発性メモリ5へ格納する処理を効率的に行うことができる。
【0177】
本実施形態においては、階層的LUT51が、ネームスペースごとに、論理アドレスを物理アドレスへ変換するための階層構造を持つ。このため、同じネームスペースのアドレス変換が連続する場合に、アドレス変換に必要なフラグメントがキャッシュメモリ451に格納されている可能性を高くすることができ、アドレス変換の速度を向上させることができ、キャッシュイン及びキャッシュアウトなどの処理量を少なくすることができる。
【0178】
本実施形態に係る階層的LUT51において、記憶容量の少ないネームスペースの階層数は少なくすることができ、記憶容量の多いネームスペースの階層数は多くすることができ、ネームスペースの記憶容量に応じて無駄の少ないデータ構造を実現することができる。
【0179】
本実施形態において、階層的LUT51に含まれる各フラグメントのサイズを、キャッシュメモリ451に含まれるキャッシュラインの単位サイズとほぼ同じにすることにより、例えばフラグメント単位又はフラグメントの整数倍でキャッシュイン及びキャッシュアウトを行うことができ、キャッシュメモリ451の管理を効率的に行うことができる。
【0180】
本実施形態においては、キャッシュメモリ451に格納されているキャッシュラインを、ダーティリストDL、クリーンリストCL、フリーリストFLのいずれかに所属させるため、キャッシュラインに対応するフラグメントの状態を容易に把握することができる。
【0181】
本実施形態においては、初期化部444及びアドレス変換部445によって階層的LUT51を生成することで、メモリ45Aのキャッシュメモリ451に一度に読み出されるLUTのサイズを小さくすることができる。これにより、LUTの読み出しに要する時間を短縮できる。また、メモリ装置3の起動時に第1のレイヤL1のキャッシュラインのみが読み出されるため、メモリ装置3の起動を高速化できる。ゆえに、メモリ装置3の利便性を高めることができる。
【0182】
本実施形態において、メモリ装置3は、キャッシュメモリ451に含まれるダーティリストDLのサイズを管理し、情報処理装置2などからのコマンドによりダーティリストDLのサイズを変化させるとしてもよい。これにより、キャッシュメモリ451から階層的LUT51にキャッシュラインを書き戻す処理の発生頻度を制御することができ、メモリ装置3のコスト、安全性、性能、寿命のバランスを保つことができる。
【0183】
本実施形態においては、階層的LUT51の1つのネームスペース内において、フラグメントに含まれるエレメントの数を例えばレイヤ間で一定とすることにより、不揮発性メモリ5上で階層的LUT51を効率的に格納することができる。また、不揮発性メモリコントローラ46と不揮発性メモリ5との間におけるキャッシュラインの送受信を効率的に行うことができる。
【0184】
本実施形態において、ADMフラグメント及びLUTフラグメントのサイズは同じサイズとし、さらに、ADMキャッシュライン及びLUTキャッシュラインのサイズは同じサイズとした。これにより、キャッシュメモリ制御部447は、ADMキャッシュラインとLUTキャッシュラインとを同じフォーマットのフリーリストFL、クリーンリストCL、及び、ダーティリストDLで効率的に管理可能である。例えば、ADMキャッシュライン及びLUTキャッシュラインのフリーリストを共通とすることにより、キャッシュメモリ451の容量を効率的に使用することができる。また、書き込み制御部441は、ADMフラグメントであるか、又は、LUTフラグメントであるかを区別することなく、ADMフラグメントとLUTフラグメントとを1つの書き戻し単位及びページに混在させて不揮発性メモリ5へ書き戻すことができる。これにより、ページの容量に無駄が生じることを抑えつつ、効率的にキャッシュラインを書き戻すことができる。
【0185】
本発明の実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。本実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。本実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0186】
1…情報処理システム、2…情報処理装置、3…メモリ装置、4…コントローラ、5…不揮発性メモリ、41…通信インタフェース制御部、42…書き込みバッファメモリ、43…読み出しバッファメモリ、44…プロセッサ、45A,45B…メモリ、46…不揮発性メモリコントローラ、51…階層的LUT、411…送受信制御部、412…コマンド制御部、441…書き込み制御部、442…読み出し制御部、443…ガーベージコレクション制御部、444…初期化部、445…アドレス変換部、446…データマップ管理部、447…キャッシュメモリ制御部、451…キャッシュメモリ、P…制御プログラム。