(57)【要約】      （修正有）【課題】アドレス変換データを効率的に管理するメモリ装置を提供する。【解決手段】情報処理システムにおいて、メモリ装置は、不揮発性メモリ、キャッシュメモリ、アドレス変換部、書き込み制御部及び読み出し制御部を含む。不揮発性メモリは、複数のレイヤを持つ階層構造により、書き込み先又は読み出し先として指定された論理アドレスと、不揮発性メモリの位置を示す物理アドレスとを関連付けているアドレス変換データを格納する。キャッシュメモリは、アドレス変換データの一部を格納する。アドレス変換部は、アドレス変換データの階層構造に従って、キャッシュメモリに格納すべきアドレス変換データの一部を探索し、キャッシュメモリに格納し、キャッシュメモリを参照して論理アドレスを物理アドレスに変換する。書き込み制御部及び読み出し制御部は、其々アドレス変換部によって取得した物理アドレスに対して、対象データの書き込み又は読み出しを行う。【選択図】図１
2020074222.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリに格納されており、複数のレイヤを持つ階層構造により、書き込み先又は読み出し先として指定された論理アドレスと、前記不揮発性メモリにおける位置を示す物理アドレスとを関連付けているアドレス変換データと、
前記不揮発性メモリよりも高速に読み出し及び書き込み可能であり、前記アドレス変換データの一部を格納するキャッシュメモリと、
前記アドレス変換データの階層構造にしたがって、前記キャッシュメモリに格納すべき前記アドレス変換データの一部を探索し、前記アドレス変換データの一部を前記キャッシュメモリに格納し、前記キャッシュメモリを参照することにより、前記論理アドレスを前記物理アドレスに変換するアドレス変換部と、
書き込みコマンドを受信した場合に、前記アドレス変換部によって取得された前記物理アドレスの示す位置に、書き込み対象データを書き込む書き込み制御部と、
読み出しコマンドを受信した場合に、前記アドレス変換部によって取得された前記物理アドレスの示す位置から、読み出し対象データを読み出す読み出し制御部と、
を具備し、
前記アドレス変換データに含まれる複数の所定サイズの部分データは、複数のレイヤに所属し、
前記複数のレイヤのうちの第１のレイヤに属する第１の部分データは、前記論理アドレスと、前記複数のレイヤのうちの第１のレイヤの下位である第２のレイヤに属する複数の第２の部分データを参照するための複数の参照先情報を含み、
前記複数の部分データのうち前記階層構造における最下位の部分データは、前記論理アドレスと前記物理アドレスとを含む、
メモリ装置。
【請求項２】
前記複数の部分データのそれぞれは、複数の参照先のデータが前記不揮発性メモリに連続して配置されている場合に、前記複数の参照先のデータのうちの先頭を示す先頭参照先情報を含み、前記複数の参照先のデータのうち先頭ではない他の参照先情報を省略する、請求項１に記載のメモリ装置。
【請求項３】
前記アドレス変換データに含まれる最上位レイヤに所属する複数の最上位部分データのそれぞれは、複数のネームスペースのそれぞれに対応する、請求項１又は請求項２に記載のメモリ装置。
【請求項４】
前記アドレス変換データは、前記複数のネームスペースの記憶容量に応じて前記複数のネームスペースの階層数が決定され、
記憶容量の少ないネームスペースの階層数は少なく、記憶容量の多いネームスペースの階層数は多い、請求項３に記載のメモリ装置。
【請求項５】
前記複数の部分データのそれぞれの前記所定のサイズは、前記キャッシュメモリに含まれるキャッシュラインの単位サイズに対応する、請求項１乃至請求項４のいずれか１項に記載のメモリ装置。
【請求項６】
前記不揮発性メモリは、前記不揮発性メモリに格納されている各データが有効であるか無効であるかを示すデータマップをさらに格納し、
前記データマップのうちの一部であるマップ部分データが前記キャッシュメモリに格納される場合、前記マップ部分データは、前記所定のサイズで前記キャッシュメモリに格納される、請求項５に記載のメモリ装置。
【請求項７】
前記キャッシュメモリは、複数のキャッシュラインを含み、
前記複数のキャッシュラインのそれぞれは、
前記キャッシュメモリにおいて書き換えられたが前記不揮発性メモリに格納されている前記アドレス変換データに対しては反映されていない第１のリストと、
前記キャッシュメモリにおいて書き換えられ、前記不揮発性メモリに格納されている前記アドレス変換データに対して反映された第２のリストと、
書き換え候補である第３のリストと、
のいずれかに属しており、
前記アドレス変換部は、前記複数のキャッシュラインのそれぞれが前記第１乃至前記第３のリストのうちのいずれに属するかを切り替える、
請求項５又は請求項６に記載のメモリ装置。
【請求項８】
情報処理装置と、
前記情報処理装置と通信可能に接続されているメモリ装置と、
を具備し、
前記メモリ装置は、
不揮発性メモリと、
前記不揮発性メモリに格納されており、複数のレイヤを持つ階層構造により、前記情報処理装置から書き込み先又は読み出し先として指定された論理アドレスと、前記不揮発性メモリの位置を示す物理アドレスとを関連付けているアドレス変換データと、
前記不揮発性メモリよりも高速に読み出し及び書き込み可能であり、前記アドレス変換データの一部を格納するキャッシュメモリと、
前記アドレス変換データの階層構造にしたがって、前記キャッシュメモリに格納すべき前記アドレス変換データの一部を探索し、前記アドレス変換データの一部を前記キャッシュメモリに格納し、前記キャッシュメモリを参照することにより、前記論理アドレスを前記物理アドレスに変換するアドレス変換部と、
前記情報処理装置から書き込みコマンドを受信した場合に、前記アドレス変換部によって取得された前記物理アドレスの示す位置に、前記情報処理装置から受信した書き込み対象データを書き込む書き込み制御部と、
前記情報処理装置から読み出しコマンドを受信した場合に、前記アドレス変換部によって取得された前記物理アドレスの示す位置から、読み出し対象データを読み出し、前記読み出し対象データを前記情報処理装置へ送信する読み出し制御部と、
を具備し、
前記アドレス変換データに含まれる複数の所定サイズの部分データは、複数のレイヤに所属し、
前記複数のレイヤのうちの第１のレイヤに属する第１の部分データは、前記論理アドレスと、前記複数のレイヤのうちの第１のレイヤの下位である第２のレイヤに属する複数の第２の部分データを参照するための複数の参照先情報を含み、
前記複数の部分データのうち前記階層構造における最下位の部分データは、前記論理アドレスと前記物理アドレスとを含む、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリ装置及び情報処理システムに関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）は、例えば、ＮＡＮＤ型フラッシュメモリなどのような不揮発性メモリを備える。ＮＡＮＤ型フラッシュメモリは、複数のブロック（物理ブロック）を備える。複数のブロックは、ワード線とビット線との交点に配置される複数のメモリセルを含む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１４１９４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、アドレス変換データを効率的に管理するメモリ装置及び情報処理システムを提供する。
【課題を解決するための手段】
【０００５】
本実施形態によれば、メモリ装置は、不揮発性メモリと、キャッシュメモリと、アドレス変換部と、書き込み制御部と、読み出し制御部とを含む。不揮発性メモリは、アドレス変換データを格納する。アドレス変換データは、複数のレイヤを持つ階層構造により、書き込み先又は読み出し先として指定された論理アドレスと、不揮発性メモリの位置を示す物理アドレスとを関連付けている。キャッシュメモリは、不揮発性メモリよりも高速に読み出し及び書き込み可能であり、アドレス変換データの一部を格納する。アドレス変換部は、アドレス変換データの階層構造にしたがって、キャッシュメモリに格納すべきアドレス変換データの一部を探索し、アドレス変換データの一部をキャッシュメモリに格納し、キャッシュメモリを参照することにより、論理アドレスを物理アドレスに変換する。書き込み制御部は、書き込みコマンドを受信した場合に、アドレス変換部によって取得された物理アドレスの示す位置に、書き込み対象データを書き込む。読み出し制御部は、読み出しコマンドを受信した場合に、アドレス変換部によって取得された物理アドレスの示す位置から、読み出し対象データを読み出す。アドレス変換データに含まれる複数の所定サイズの部分データは、複数のレイヤに所属する。複数のレイヤのうちの第１のレイヤに属する第１の部分データは、論理アドレスと、複数のレイヤのうちの第１のレイヤの下位である第２のレイヤに属する複数の第２の部分データを参照するための複数の参照先情報を含む。複数の部分データのうち階層構造における最下位の部分データは、論理アドレスと物理アドレスとを含む。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係る情報処理システムの構成の一例を示すブロック図。
【図２】一般的なルックアップテーブルとアクティブデータマップとを例示する概念図。
【図３】第１の実施形態に係る階層的ルックアップテーブルの構成を例示する概念図。
【図４】第１の実施形態に係る階層的ルックアップテーブルのフラグメントのデータフォーマットを例示するデータ構造図。
【図５】第１の実施形態に係るアクティブデータマップのフラグメントのデータフォーマットを例示するデータ構造図。
【図６】第１の実施形態に係るキャッシュメモリから不揮発性メモリへの書き戻し時に使用されるデータフォーマットを例示するデータ構造図。
【図７】第１の実施形態に係る物理アドレスの探索処理を例示するフローチャート。
【図８】第１の実施形態に係る物理アドレスの探索処理におけるキャッシュラインの関係を例示するブロック図。
【図９】第１の実施形態に係るキャッシュメモリのリスト構造を例示するデータ構造図。
【図１０】第１の実施形態に係るキャッシュメモリにおけるキャッシュラインの状態変化を例示するフローチャート。
【図１１】第１の実施形態に係るキャッシュメモリにおけるキャッシュラインの状態変化を例示するブロック図。
【図１２】第１の実施形態に係る階層的ルックアップテーブルのフラグメントと不揮発性メモリのページとの関係を例示するブロック図。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら各実施形態について説明する。以下の説明において、略同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【０００８】
［第１の実施形態］
本実施形態は、階層的なルックアップテーブル（Look Up Table。以下、ＬＵＴとする）を備えるメモリ装置について説明する。ＬＵＴは、物理アドレスから論理アドレスへの変換に用いられるアドレス変換データの一種である。
【０００９】
本実施形態において、メモリ装置は、例えばＳＳＤであるとするが、メモリカード、ハードディスクドライブ（ＨＤＤ）、ＨＤＤとＳＳＤとを含むハイブリッド型メモリ装置、光ディスク、ストレージ装置、メモリサーバなど様々な種別のメモリ装置でもよい。メモリ装置がＳＳＤの場合には、当該メモリ装置はＨＤＤと同じ通信インタフェースを持つ。
【００１０】
ＳＳＤであるメモリ装置は、不揮発性メモリを含む。本実施形態では、不揮発性メモリがＮＡＮＤ型フラッシュメモリを含む場合について説明する。しかしながら、不揮発性メモリは、例えば、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＰＲＡＭ（Phase change Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）、又は、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などＮＡＮＤ型フラッシュメモリではない他の種別のメモリを含むとしてもよい。また、不揮発性メモリは、３次元構造のフラッシュメモリを含むとしてもよい。
【００１１】
不揮発性メモリでは、消去単位エリアごとに、データが一括して消去される。消去単位エリアは、複数の書き込み単位エリア及び複数の読み出し単位エリアを含む。不揮発性メモリがＮＡＮＤ型フラッシュメモリの場合、消去単位エリアはブロックに相当する。書き込み単位エリア及び読み出し単位エリアはページに相当する。
【００１２】
本実施形態において、アクセスとは、メモリへデータを書き込む又は格納すること、及び、メモリからデータを読み出すことの双方を意味する。
【００１３】
本実施形態において、プログラムは、コンピュータプログラムとする。コンピュータプログラムでは、コンピュータが行うべき処理が順序付けて記述されている。プログラムは、コンピュータで実行されることにより、コマンド、データ、及び、情報の発行及び受付、データ処理及び演算などの各種機能を実現可能である。
【００１４】
本実施形態において、コンピュータとは、例えば、命令にしたがって演算又は処理を実行する機械である。例えば、コンピュータは、メモリとプロセッサとを含む。メモリは、プログラムを記憶する。プロセッサは、メモリに記憶されているプログラムに記述された命令セット（例えば、データの転送、計算、加工、制御、管理）を実行するためのハードウェアである。本実施形態において、コンピュータは、広義に解釈されるべきであり、例えば、情報処理装置、メモリ装置のコントローラ、パーソナルコンピュータ、大型コンピュータ、マイクロコンピュータ、サーバ装置などを含む。本実施形態においては、コンピュータに代えて、複数のコンピュータが連携して動作するコンピュータシステムが用いられてもよい。
【００１５】
本実施形態において、ソフトウェアインタフェースとは、例えば、一方のプログラムが他方のプログラムを利用するために定義されている規約及び手順である。より具体的には、ソフトウェアインタフェースは、例えば、あるプログラムの機能及び管理するデータなどを、他のプログラムから呼び出し、呼び出された機能及び管理するデータなどを利用するための手順及びデータ形式などを定めた規約である。ソフトウェアインタフェースの一例として、ＡＰＩ（Application Programming Interface）がある。
【００１６】
本実施形態において、識別情報はＩＤと表記する。
【００１７】
図１は、本実施形態に係る情報処理システムの一例を示すブロック図である。
【００１８】
情報処理システム１は、情報処理装置２とメモリ装置３とを含む。情報処理装置２は、メモリ装置３に対応するホスト装置として動作可能である。
【００１９】
メモリ装置３は、情報処理装置２に内蔵されてもよく、情報処理装置２とメモリ装置３とは、ネットワークなどによりデータを送受信可能に接続されるとしてもよい。メモリ装置３は、複数の情報処理装置２と通信可能に接続されてもよい。また、複数のメモリ装置３が、１以上の情報処理装置２と通信可能に接続されてもよい。
【００２０】
メモリ装置３は、制御回路の一例としてのコントローラ４と、不揮発性メモリ５とを含む。コントローラ４と不揮発性メモリ５とは、着脱可能とし、メモリ装置３のメモリ容量は自由に拡張できるとしてもよい。ここで、メモリ容量とは、メモリに書き込み可能な最大のデータ量とする。
【００２１】
コントローラ４は、通信インタフェース制御部４１、書き込みバッファメモリ４２、読み出しバッファメモリ４３、プロセッサ４４、メモリ４５Ａ，４５Ｂ、不揮発性メモリコントローラ４６を含む。これらは、内部バスＩＢにより電気的に接続される。また、コントローラ４は、不揮発性メモリ５と電気的に接続される。
【００２２】
通信インタフェース制御部４１は、例えば、送受信制御部４１１と、コマンド制御部４１２を含む。通信インタフェース制御部４１は、外部装置とメモリ装置３との間で通信インタフェースにしたがって通信を行う。
【００２３】
送受信制御部４１１は、例えば、情報処理装置２などのような外部装置からのデータ、情報、信号、コマンド、リクエスト、メッセージ、指定などの受信を制御し、外部装置へのデータ、情報、信号、コマンド、リクエスト、メッセージ、指定などの送信を制御する。
【００２４】
送受信制御部４１１は、例えば、情報処理装置２との間で、データを送受信する。送受信制御部４１１は、情報処理装置２から受信したデータを書き込みバッファメモリ４２へ格納する。送受信制御部４１１は、不揮発性メモリ５から読み出されたデータを読み出しバッファメモリ４３から読み出し、情報処理装置２へ送信する。
【００２５】
より具体的には、送受信制御部４１１は、情報処理装置２との間で、データを送受信する。送受信制御部４１１は、情報処理装置２から受信したデータを書き込みバッファメモリ４２へ格納する。送受信制御部４１１は、不揮発性メモリ５から読み出されたデータを読み出しバッファメモリ４３から読み出し、情報処理装置２へ送信する。
【００２６】
コマンド制御部４１２は、例えば、外部装置からのコマンド、メッセージ、リクエスト、指令などの受信を制御し、外部装置へのコマンド、メッセージ、リクエスト、指令などの送信を制御する。
【００２７】
より具体的には、コマンド制御部４１２は、情報処理装置２との間で、コマンドを送受信する。コマンド制御部４１２は、情報処理装置２から受信したコマンドが書き込みコマンドである場合は、書き込み制御部４４１へ書き込みコマンドを送る。また、コマンド制御部４１２は、情報処理装置２から受信したコマンドが読み出しコマンドである場合は、読み出し制御部４４２へ読み出しコマンドを送る。
【００２８】
情報処理装置２とコマンド制御部４１２との間で送受信されるコマンドと、メモリ装置３内部で送受信されるコマンドとが同じ名称の場合でも、コマンド形式はそれぞれ異なっていてもよい。
【００２９】
なお、通信インタフェース制御部４１の全部又は一部の機能は、プロセッサ４４によって実現されてもよく、プロセッサ４４とは別のプロセッサ内によって実現されてもよい。
【００３０】
書き込みバッファメモリ４２は、情報処理装置２から送信された書き込みデータを一時的に格納する。具体的には、書き込みバッファメモリ４２は、当該書き込みデータが不揮発性メモリ５に適した所定のデータサイズになるまで、一時的にデータを格納する。
【００３１】
読み出しバッファメモリ４３は、不揮発性メモリ５から読み出された読み出しデータを一時的に格納する。具体的には、読み出しバッファメモリ４３において、読み出しデータは、情報処理装置２に適した順序（情報処理装置２が指定した論理アドレスの順序）になるように並び替えられる。
【００３２】
プロセッサ４４は、内部バスＩＢを経由して、コントローラ４全体の動作を制御する。
【００３３】
プロセッサ４４は、例えば、メモリ４５Ｂに格納されている制御プログラムＰを一時的にメモリ４５Ａに格納し、このメモリ４５Ａに格納されている制御プログラムＰを実行する。これにより、例えば、プロセッサ４４は、書き込み制御部４４１、読み出し制御部４４２、ガーベージコレクション制御部４４３、初期化部４４４、アドレス変換部４４５としての機能を実現する。なお、上記の書き込み制御部４４１、読み出し制御部４４２、ガーベージコレクション制御部４４３、初期化部４４４、アドレス変換部４４５は、自由に組み合わせてもよく、分離してもよい。例えば、初期化部４４４とアドレス変換部４４５とは組み合わせてもよい。書き込み制御部４４１、読み出し制御部４４２、ガーベージコレクション制御部４４３、初期化部４４４、アドレス変換部４４５は、ハードウェアによって実現されてもよい。
【００３４】
プロセッサ４４は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro-Processing Unit）、又は、ＤＳＰ（Digital Signal Processor）などであってもよい。
【００３５】
書き込み制御部４４１は、例えば、通信インタフェース制御部４１から書き込みバッファメモリ４２を経由して不揮発性メモリコントローラ４６までデータなどを送るための制御を行う。
【００３６】
より具体的には、書き込み制御部４４１は、コマンド制御部４１２からの書き込みコマンドにしたがって、アドレス変換部４４５を用いて論理アドレスを物理アドレスに変換し、書き込みコマンドと書き込みデータと物理アドレスとを不揮発性メモリコントローラ４６に送る。
【００３７】
読み出し制御部４４２は、例えば、不揮発性メモリコントローラ４６から読み出しバッファメモリ４３を経由して通信インタフェース制御部４１までデータなどを送るための制御を行う。
【００３８】
より具体的には、読み出し制御部４４２は、コマンド制御部４１２からの読み出しコマンドにしたがって、アドレス変換部４４５を用いて論理アドレスを物理アドレスに変換し、読み出しコマンドと物理アドレスとを不揮発性メモリコントローラ４６に送り、不揮発性メモリコントローラ４６から物理アドレスに対応する読み出しデータを受け、読み出しデータを読み出しバッファメモリ４３、通信インタフェース制御部４１経由で情報処理装置２へ送信する。
【００３９】
ガーベージコレクション制御部４４３は、不揮発性メモリ５のガーベージコレクションを行う。例えば、ガーベージコレクション制御部４４３は、書き込み制御部４４１、読み出し制御部４４２、不揮発性メモリコントローラ４６と協働することにより、不揮発性メモリ５のガーベージコレクションを行うとしてもよい。本実施形態において、ガーベージコレクションとは、メモリの不要な領域を解放する処理とする。ここで、不揮発性メモリ５がＮＡＮＤ型フラッシュメモリの場合には、メモリの不要な領域を解放するためにブロックの消去を行う必要がある。そのため、ガーベージコレクション対象のブロックにおける利用可能性のある有効データは、他のブロックに移動される。したがって、不揮発性メモリ５がＮＡＮＤ型フラッシュメモリの場合には、ガーベージコレクションとともにコンパクションが実行される傾向にある。
【００４０】
メモリ４５Ａは、例えば、プロセッサ４４の作業用メモリとして使用される主記憶装置を含み、プロセッサ４４からの制御に従う。メモリ４５Ａは、例えばプロセッサ４４による処理対象のプログラム、データ、情報などを格納する。本実施形態では、メモリ４５ＡがＤＲＡＭ（Dynamic Random Access Memory）である場合について説明するが、例えばその他の揮発性メモリであってもよく、又は、ＳＲＡＭ（Static Random Access Memory）などのような不揮発性メモリであってもよい。
【００４１】
初期化部４４４は、初期状態の階層的ＬＵＴ５１を生成する。例えば、初期化部４４４は、不揮発性メモリ５の容量、ネームスペースの容量などのメモリ装置３の設定情報に基づいて、階層的ＬＵＴ５１のネームスペースごとの階層の数、各階層に対応するデータ容量、階層間のリンク関係を決定し、初期状態の階層的ＬＵＴ５１のデータ構造を決定する。例えば、初期化部４４４は、初期状態の階層的ＬＵＴ５１を不揮発性メモリ５に書き込む。
【００４２】
初期化部４４４は、初期状態のアクティブデータマップ５２（Active Data Map。以下、ＡＤＭという）を生成する。ＡＤＭとは、不揮発性メモリ５に格納されているデータが有効であるか無効であるかを管理するデータである。例えば、ＡＤＭ５２は、不揮発性メモリ５に書き込まれているデータの最小単位ごとに、この最小単位のデータが有効である場合を“１”とし、無効である場合を“０”とし、初期状態のＡＤＭ５２を不揮発性メモリ５に書き込む。ＡＤＭ５２の詳細は後で説明する。
【００４３】
キャッシュメモリ制御部４４７は、例えば、読み出し制御部を用いて、不揮発性メモリ５から階層的ＬＵＴ５１の一部又はＡＤＭ５２の一部を読み出し、読み出した階層的ＬＵＴ５１の一部又はＡＤＭ５２の一部をキャッシュメモリ４５１へ格納する。また、キャッシュメモリ制御部４４７は、例えば、書き込み制御部４４１を用いて、キャッシュメモリ４５１に格納されている階層的ＬＵＴ５１の一部又はＡＤＭ５２の一部を不揮発性メモリ５の階層的ＬＵＴ５１又はＡＤＭ５２へ書き戻す制御を行う。
【００４４】
なお、キャッシュメモリ制御部４４７の処理は、アドレス変換部４４５及びデータマップ管理部４４６が協働することにより実現されるとしてもよい。この場合、キャッシュメモリ制御部４４７は省略されてもよい。
【００４５】
さらに、キャッシュメモリ制御部４４７は、キャッシュメモリ４５１に格納されているキャッシュラインを、フリーリスト、クリーンリスト、及び、ダーティリストのいずれに属するかを管理する。本実施形態において、キャッシュラインとは、例えば、キャッシュメモリ４５１に格納する単位サイズのデータである。フリーリスト、クリーンリスト、及び、ダーティリストの説明は、後述する。
【００４６】
アドレス変換部４４５は、データが書き込まれるごとに、階層的ＬＵＴ５１に対して論理アドレスから物理アドレスまでの変換を階層的に記述する。また、アドレス変換部４４５は、階層的ＬＵＴ５１を用いて、論理アドレスを物理アドレスに変換する。より具体的には、アドレス変換部４４５は、階層的ＬＵＴ５１の階層構造にしたがって、キャッシュメモリ４５１に格納すべき階層的ＬＵＴ５１のうちの一部である部分データを探索し、部分データをキャッシュメモリ４５１に格納し、キャッシュメモリ４５１を参照することにより、論理アドレスを物理アドレスに変換する。階層的ＬＵＴ５１の詳細は後で説明する。
【００４７】
データマップ管理部４４６は、データが書き込まれるごとに、ＡＤＭ５２を更新する。より具体的には、データマップ管理部４４６は、キャッシュメモリ４５１に格納されているＡＤＭ５２の一部に対する書き込み及び読み出しを行う。その後、キャッシュメモリ４５１に格納されているＡＤＭ５２の一部は、不揮発性メモリ５に書き戻される。
【００４８】
メモリ４５Ｂは、例えば制御プログラムＰなどコントローラ４で用いられるプログラム及びデータを格納する不揮発性の記憶装置を含む。
【００４９】
不揮発性メモリコントローラ４６は、不揮発性メモリ５へのデータなどの書き込み、及び、不揮発性メモリ５からのデータの読み出しを制御する。
【００５０】
なお、不揮発性メモリコントローラ４６は、ＤＭＡＣ（Direct Memory Access Controller）、誤り訂正部、ランダマイザ（又はScrambler）などを含んでいることが望ましい。しかしながら、不揮発性メモリコントローラ４６は、これらの機能を含んでいなくてもよい。
【００５１】
ＤＭＡＣは、内部バスＩＢを介して、書き込みデータ及び読み出しデータなどを転送する。ＤＭＡＣは、必要に応じて、コントローラ４内の様々な位置に複数設定されてもよい。
【００５２】
誤り訂正部は、書き込みバッファメモリ４２から送信される書き込みデータに誤り訂正符号（例えばError Correcting Code（ＥＣＣ））を付加する。誤り訂正部は、ＥＣＣを用い、必要に応じて不揮発性メモリ５から読み出した読み出しデータを訂正する。
【００５３】
ランダマイザは、不揮発性メモリ５へデータを書き込む際に、書き込みデータが不揮発性メモリ５の特定のページ又はワード線方向などに偏らないように、書き込みデータを分散させる（ランダマイズ処理と呼ぶ）。これにより、書き込み回数を平準化でき、不揮発性メモリ５のメモリセルの寿命を長期化できる。そのため、不揮発性メモリ５の信頼性を向上できる。また、ランダマイザは、データ読み出し動作の際に、書き込み時のランダマイズ処理の逆処理を実行し、元のデータを復元する。
【００５４】
メモリ４５Ａに含まれるキャッシュメモリ４５１は、不揮発性メモリ５に格納されている階層的ＬＵＴ５１及びＡＤＭ５２のキャッシュデータを格納する。より具体的には、キャッシュメモリ４５１は、不揮発性メモリ５よりも高速に読み出し及び書き込み可能であり、階層的ＬＵＴ５１のうちの一部である部分データを格納し、ＡＤＭ５２のうちの一部であるマップ部分データを格納する。本実施形態では、階層的ＬＵＴ５１とＡＤＭ５２とは不揮発性メモリ５に書き込まれている。しかしながら、階層的ＬＵＴ５１とＡＤＭ５２とのうちの少なくとも一方は、例えばメモリ４５Ｂなどメモリ装置３に備えられる他の不揮発性メモリに格納されてもよい。また、不揮発性メモリ５は、ユーザデータを格納するメモリ（又はメモリ領域）と、階層的ＬＵＴ５１を格納するメモリ（又はメモリ領域）と、ＡＤＭ５２を格納するメモリ（又はメモリ領域）に区分けされていてもよい。
【００５５】
階層的ＬＵＴ５１が不揮発性メモリ５に格納されている場合、キャッシュメモリ制御部４４７は、不揮発性メモリ５より階層的ＬＵＴ５１の内容の一部（部分データ）又は全部をキャッシュメモリ４５１に読み出す。また、キャッシュメモリ制御部４４７は、書き換えられたキャッシュメモリ４５１の内容を任意のタイミングで不揮発性メモリ５の階層的ＬＵＴ５１に反映する。
【００５６】
同様に、ＡＤＭ５２が不揮発性メモリ５に格納されている場合、キャッシュメモリ制御部４４７は、不揮発性メモリ５よりＡＤＭ５２の内容の一部（マップ部分データ）又は全部をキャッシュメモリ４５１に読み出す。また、キャッシュメモリ制御部４４７は、書き換えられたキャッシュメモリ４５１の内容を任意のタイミングで不揮発性メモリ５のＡＤＭ５２に反映する。
【００５７】
不揮発性メモリがＮＡＮＤ型フラッシュメモリの場合、ＬＵＴは、書き込みデータ又は読み出しデータの論理アドレス（以下、Logical Block Addressing（ＬＢＡ）とする）と物理アドレス（以下、Physical Block Addressing（ＰＢＡ）とする）とを関係付けたデータである。
【００５８】
階層的ＬＵＴ５１は、ＬＵＴを階層的に構成したデータである。より具体的には、階層的ＬＵＴ５１は、複数のレイヤを持つ階層構造により、書き込み先又は読み出し先として指定されたＬＢＡと、不揮発性メモリ５の位置を示すＰＢＡとを関連付けている。プロセッサ４４は、階層的ＬＵＴ５１を用いることにより、ＬＢＡに対応するＰＢＡ、又はＰＢＡに対応するＬＢＡを効率よく探索できる。
【００５９】
階層的ＬＵＴ５１は、テーブル形式のデータ構造を持つとしてもよく、例えばリスト形式などのような他のデータ構造を持つとしてもよい。階層的ＬＵＴ５１は、複数の部分データ（例えばテーブル）を含む。以下において、部分データをフラグメントという。フラグメントとは、断片化したデータとする。複数のフラグメントは、例えば、所定サイズ、すなわち同じサイズである。複数のフラグメントは、複数のレイヤに所属する。複数のレイヤのうちの第１のレイヤに属する第１のフラグメントは、論理アドレスと、第１のレイヤの下位である第２のレイヤに属する複数の第２のフラグメントを参照するための複数の参照先情報（以下、ポインタという）を含む。階層構造における最下位のフラグメントは、論理アドレスと物理アドレスとを含む。最上位レイヤに所属する複数の最上位フラグメントのそれぞれは、複数のネームスペースのそれぞれに対応する。階層的ＬＵＴ５１は、複数のネームスペースの記憶容量に応じて複数のネームスペースの階層数が異なる。例えば、記憶容量の少ないネームスペースの階層数は少なく、記憶容量の多いネームスペースの階層数は多くなる。複数のフラグメントのそれぞれの所定のサイズは、例えば、キャッシュメモリに含まれるキャッシュラインの単位サイズに対応する。階層的ＬＵＴ５１の詳細については、後述する。
【００６０】
なお、本実施形態において、図１に示したコントローラ４の構成は例示であり、コントローラ４は図１の構成に限定されない。
【００６１】
キャッシュメモリ４５１は、階層的ＬＵＴ５１及びＡＤＭ５２へのアクセスを高速化するためのキャッシュメモリであり、階層的ＬＵＴ５１及びＡＤＭ５２のうちの一部を格納する。また、キャッシュメモリ４５１は、書き込み制御部４４１より書き込みバッファメモリ４２を経由して書き換えられてもよく、読み出し制御部４４２より読み出しバッファメモリ４３を経由して読み出されてもよい。
【００６２】
図２は、一般的なＬＵＴとＡＤＭを例示する概念図である。この図２及び後述の図３、図８において、キロバイトはＫＢと表記する。
【００６３】
ＬＵＴ Ｌは、ＮＡＮＤ型フラッシュメモリＭのデータのＬＢＡとＰＢＡとを関係付ける。この図２のＬＵＴ Ｌにおいて、ＬＢＡ Ｙは、ＰＢＡ Ｘに対応する。ＰＢＡ Ｘで示されるＮＡＮＤ型フラッシュメモリＭの領域には、４ＫＢのデータＤが書き込まれる。なお、ＰＢＡに書き込み可能なデータの量は、任意に変更可能である。
【００６４】
ここで、例えば、ＬＵＴ Ｌの各ＬＢＡに格納されるＰＢＡのサイズを３２ビット（４バイト）とすると、４ＫＢのデータＤに対応するＰＢＡ Ｘを格納するために、ＬＵＴ Ｌは４バイトのデータ量を必要とする。すなわち、ＮＡＮＤ型フラッシュメモリＭのサイズの１／１０００のサイズのＬＵＴが必要となる。
【００６５】
ＬＵＴ Ｌは、ＮＡＮＤ型フラッシュメモリＭの使用開始時（通電時）に、ＮＡＮＤ型フラッシュメモリＭからＤＲＡＭ上にキャッシュされる必要がある。このため、ＮＡＮＤ型フラッシュメモリＭの容量に比例してＬＵＴ Ｌのサイズが大きくなると、キャッシュに要する時間も増大する。例えば１ＴＢ程度のＮＡＮＤ型フラッシュメモリＭを搭載したメモリ装置では、ＬＵＴ Ｌのサイズは１キガバイト（ＧＢ）程度となり、メモリ装置３の電源ＯＮ時にＤＲＡＭ上にＬＵＴ Ｌが読み出されるまで数十秒程度要する。
【００６６】
本実施形態では、ＬＵＴを階層化し、ＤＲＡＭ上に一度に読み出されるＬＵＴのサイズを小さくする。これにより、ＬＵＴの読み出しに要する時間を短縮する。また、ＬＵＴの探索を効率化することで、アクセス速度の高速化を行う。
【００６７】
ＡＤＭ Ａは、ＮＡＮＤ型フラッシュメモリＭに格納されているデータが有効であるか無効であるかを管理するデータである。この図２の例において、ＡＤＭ Ａは、ＮＡＮＤ型フラッシュメモリＭに格納されている４ＫＢのデータごとに、１ビットのフラグ情報を用いて、有効であるか無効であるかを管理する。例えば、ＮＡＮＤ型フラッシュメモリＭに格納されているデータＤと、ＡＤＭ Ａのフラグ情報Ｂとが対応し、フラグ情報Ｂは有効であることを示す“１”であるため、データＤは有効データである。
【００６８】
図３は、本実施形態に係る階層的ＬＵＴ５１の構成を例示する概念図である。この図３及び図８において、メガバイトはＭＢと表記する。
【００６９】
ネームスペースとは、不揮発性メモリ５に含まれる複数のブロックを区分けすることによって得られるメモリのスペースである。ある範囲のメモリ領域ごとにネームスペースを割り当てることにより、少なくとも２つのメモリ領域で論理アドレスが重複する場合であっても、ネームスペースＩＤと論理アドレスとを用いて適切なメモリ領域の適切なデータをアクセスすることができる。ネームスペースを識別可能とすることで、ネームスペースごとに独立してＬＢＡを割り当て可能であり、複数のネームスペースでＬＢＡが重複した場合であっても適切にアクセス可能である。したがって、情報処理システム１では、異なるネームスペースへのアクセスは、例えば異なるデバイスへのアクセスと同様に扱われる。
【００７０】
本実施形態において、階層的ＬＵＴ５１は、例えば、ＬＵＴを複数のレイヤを持つ階層構造で記述する。本実施形態では、階層的ＬＵＴ５１は、ネームスペースＮＳ１〜ＮＳｎ（ｎは２以上の自然数）に分かれている。階層的ＬＵＴ５１におけるネームスペースＮＳ１〜ＮＳｎごとの階層の深さは、ネームスペースＮＳ１〜ＮＳｎのサイズに応じて決定される。
【００７１】
階層的ＬＵＴ５１の第１の（最上位の）レイヤＬ１は、不揮発性メモリ５のＰＢＡの範囲を、ネームスペースＮＳ１〜ＮＳｎのサイズに応じてネームスペースＮＳ１〜ＮＳｎに対応するｎ個のフラグメント（エレメントグループ）Ｌｉ１に割り当てる。第１のレイヤＬ１のｎ個のフラグメントＬｉ１のそれぞれは、さらに複数のエレメントＣ１を含む。
【００７２】
第２のレイヤＬ２は、第１のレイヤＬ１でｎ個に区分けされたＰＢＡの範囲のそれぞれを、さらにｍ個のフラグメントＬｉ２に区分けする。ｍ個は、例えば、第１のレイヤＬ１のフラグメントＬｉ１に含まれる複数のエレメントＣ１の数としてもよい。第２のレイヤＬ２のフラグメントＬｉ２のそれぞれは、さらに複数のエレメントＣ２を含む。第１のレイヤＬ１のフラグメントＬｉ１に含まれる複数のエレメントＣ１のそれぞれは、第２のレイヤＬ２のフラグメントＬｉ２に対応付けられており、例えば、対応す下位のフラグメントＬｉ２を示すポインタを含む。
【００７３】
第３のレイヤＬ３は、第２のレイヤＬ２でｍ個に区分けされたＰＢＡの範囲のそれぞれを、さらにｌ個のフラグメントＬｉ３に区分けする。ｌ個は、例えば、第２のレイヤＬ２のフラグメントＬｉ２に含まれる複数のエレメントＣ２の数としてもよい。第３のレイヤＬ３のフラグメントＬｉ３のそれぞれは、さらに複数のエレメントＣ３を含む。第２のレイヤＬ２のフラグメントＬｉ２に含まれる複数のエレメントＣ２のそれぞれは、第３のレイヤＬ３のフラグメントＬｉ３に対応付けられており、例えば、対応する下位のフラグメントＬｉ３を示すポインタを含む。
【００７４】
第４のレイヤＬ４は、第３のレイヤＬ３でｌ個に区分けされたＰＢＡの範囲のそれぞれを、さらにｋ個のフラグメントＬｉ４に区分けする。ｋ個は、例えば、第３のレイヤＬ３のフラグメントＬｉ３に含まれる複数のエレメントＣ３の数としてもよい。第４のレイヤＬ４のフラグメントＬｉ４のそれぞれは、さらに複数のエレメントＣ４を含む。第３のレイヤＬ３のフラグメントＬｉ３に含まれる複数のエレメントＣ３のそれぞれは、第４のレイヤＬ４のフラグメントＬｉ４に対応付けられており、例えば、対応する下位のフラグメントＬｉ４を示すポインタを含む。
【００７５】
階層的ＬＵＴ５１は、最下位の第４のレイヤＬ４において区分けされたＰＢＡにより、ＬＢＡに対応するＰＢＡを特定する。
【００７６】
このように、第１のレイヤＬ１におけるエレメントＣ１が第２のレイヤＬ２におけるフラグメントＬｉ２を示し、第２のレイヤＬ２におけるエレメントＣ２が第３のレイヤＬ３におけるフラグメントＬｉ３を示し、第３のレイヤＬ３におけるエレメントＣ３が第４のレイヤＬ４におけるフラグメントＬｉ４を示すことで、階層的ＬＵＴ５１が形成される。
【００７７】
第１乃至第４のレイヤＬ１〜Ｌ４に所属する１つのフラグメントに含まれるエレメントの数は、同じでもよく、例えば、３２個としてもよい。
【００７８】
この図３では、レイヤの数が４つの場合を図示している。しかしながら、レイヤの数は２以上であればよい。
【００７９】
階層的ＬＵＴ５１で用いられるＰＢＡのサイズは、上記図２の例と同様に、３２ビットとしてもよい。また、階層的ＬＵＴ５１で用いられるＰＢＡのサイズは、例えばメモリ装置３のアドレスバスの幅と等しくてもよい。
【００８０】
例えば、各フラグメントＬｉ１〜Ｌｉ４は、対応する下位レイヤのフラグメントに対応するＰＢＡ（先頭の物理アドレス）又は対応するアクセス対象データのＰＢＡ、及び、対応するネームスペースＩＤ（ネームスペース名）、対応する論理アドレス、管理するＰＢＡの範囲（グレイン：Grain）を含む。
【００８１】
例えば、各フラグメントＬｉ１〜Ｌｉ４のエレメントＣ１〜Ｃ４が管理するＰＢＡの範囲が、ＮＡＮＤ型フラッシュメモリにおいて扱われるページ単位（例えば４ＫＢ）と一致している場合は、各エレメントＣ１〜Ｃ４にはアクセス対象データのＰＢＡが格納される。例えば、下位のレイヤが存在する場合は、各エレメントＣ１〜Ｃ４には下位のレイヤのフラグメントに対応するＰＢＡ（例えば先頭の物理アドレス）が格納される。なお、下位のレイヤのフラグメントに対応するＰＢＡは、他の形式のアドレスで表記されてもよい。
【００８２】
階層的ＬＵＴ５１において、上位のレイヤのフラグメントは複数のエレメントを含む。上位のレイヤのフラグメントに含まれる各エレメントによって管理されるＰＢＡの範囲は、下位のレイヤのフラグメントによって管理されるＰＢＡの範囲に対応しており、この下位のレイヤのフラグメントはさらに複数のエレメントを含む。例えば、上位のレイヤのフラグメントに含まれる各エレメントには、下位のレイヤのフラグメントに対応するＰＢＡが格納される。これにより、上位のレイヤと下位のレイヤとが関連付けられる。
【００８３】
さらに下位のレイヤにおいても、同様に、例えば、下位のレイヤの各フラグメントに含まれる各エレメントには、さらに下位のレイヤのフラグメントに対応するＰＢＡが格納される。
【００８４】
そして、１個のエレメントで管理するＰＢＡの範囲が４ＫＢとなった場合に、当該エレメントには、不揮発性メモリ５に書き込まれているデータに対応するＰＢＡが格納される。
【００８５】
なお、階層的ＬＵＴ５１に含まれるフラグメントＬｉ１〜Ｌｉ４のそれぞれは、複数の参照先のデータが不揮発性メモリ５に連続して配置されている場合に、複数の参照先のデータのうちの先頭を示す先頭ポインタを含み、この複数の参照先のデータのうち先頭ではない他のポインタを省略してもよい。これにより、階層的ＬＵＴ５１のサイズを削減可能であり、キャッシュメモリ４５１の使用量を削減可能である。例えば、第１のレイヤに所属する第１のフラグメントに含まれる複数のエレメントによって参照される複数のＰＢＡが連続する場合、第１のフラグメントに含まれる第１のエレメントは、複数のＰＢＡのうちの先頭のＰＢＡを含む。第１のフラグメントに含まれる他のエレメント、及び、第１のフラグメントの下位である第２のレイヤに所属する第２のフラグメントは、省略可能である。これにより、階層的ＬＵＴ５１における第１のレイヤ及び第２のレイヤで必要とされるデータ量を削減することができる。書き込み制御部４４１又は読み出し制御部４４２は、例えば、第２のレイヤに所属する第２のフラグメントが省略されている場合に、この第１のレイヤに所属する第１のフラグメントに含まれる第１のエレメントが連続する複数のＰＢＡを参照していると判断する。これにより、書き込み制御部４４１又は読み出し制御部４４２は、例えば、バースト転送などを用いて、不揮発性メモリ５に格納されている連続するデータに対するアクセス速度を向上することができる。
【００８６】
図３の例をより詳しく説明する。第１のレイヤＬ１は、ｎ個のネームスペースＮＳ１〜ＮＳｎのそれぞれに対応するｎ個のフラグメントＬｉ１に区分けされる。１つのフラグメントＬｉ１は、４ＧＢ分のＰＢＡに対応する。１つのフラグメントＬｉ１は、さらに３２個のエレメントＣ１を含む。１つのエレメントＣ１は、１２８ＭＢ分のＰＢＡに対応する。すなわち、フラグメントＬｉ１のエレメントＣ１に対応するＰＢＡの範囲は、１２８ＭＢである。エレメントＣ１によって管理されるＰＢＡの範囲は、ＮＡＮＤ型フラッシュメモリにおいて扱われるデータの最小単位、例えばページ単位（例えば４ＫＢ）よりも大きい。このため、各エレメントＣ１に対して第２のレイヤＬ２のフラグメントＬｉ２が生成され、各エレメントＣ１には第２のレイヤＬ２の対応するフラグメントＬｉ２の先頭を示
すアドレスが格納される。
【００８７】
第２のレイヤＬ２は、第１のレイヤＬ１のエレメントＣ１に対応するフラグメントＬｉ２に区分けされる。１つのフラグメントＬｉ２は、１２８ＭＢ分のＰＢＡに対応する。１つのフラグメントＬｉ２は、さらに３２個のエレメントＣ２を含む。１つのエレメントＣ２は、４ＭＢ分のＰＢＡに対応する。すなわち、フラグメントＬｉ２のエレメントＣ２に対応するＰＢＡの範囲は、４ＭＢである。エレメントＣ２によって管理されるＰＢＡの範囲は、ＮＡＮＤ型フラッシュメモリにおいて扱われるページ単位４ＫＢよりも大きい。このため、各エレメントＣ２に対して第３のレイヤＬ３のフラグメントＬｉ３が生成され、各エレメントＣ２には第３のレイヤＬ３の対応するフラグメントＬｉ３の先頭を示すアドレスが格納される。
【００８８】
第３のレイヤＬ３は、第２のレイヤＬ２のエレメントＣ２に対応するフラグメントＬｉ３に区分けされる。１つのフラグメントＬｉ３は、４ＭＢ分のＰＢＡに対応する。１つのフラグメントＬｉ３は、さらに３２個のエレメントＣ３を含む。１つのエレメントＣ３は、１２８ＫＢ分のＰＢＡに対応する。すなわち、フラグメントＬｉ３のエレメントＣ３に対応するＰＢＡの範囲は、１２８ＫＢである。エレメントＣ３によって管理されるＰＢＡの範囲は、ＮＡＮＤ型フラッシュメモリにおいて扱われるページ単位４ＫＢよりも大きい。このため、各エレメントＣ３に対して第４のレイヤＬ４のフラグメントＬｉ４が生成され、各エレメントＣ３には第４のレイヤＬ４の対応するフラグメントＬｉ４の先頭を示すアドレスが格納される。
【００８９】
第４のレイヤＬ４は、第３のレイヤＬ３のエレメントＣ３に対応するフラグメントＬｉ４に区分けされる。１つのフラグメントＬｉ４は、１２８ＫＢ分のＰＢＡに対応する。１つのフラグメントＬｉ４は、さらに３２個のエレメントＣ４を含む。１つのエレメントＣ４は、４ＫＢ分のＰＢＡに対応する。すなわち、フラグメントＬｉ４のエレメントＣ４に対応するＰＢＡの範囲は、４ＫＢである。エレメントＣ４によって管理されるＰＢＡの範囲は、ＮＡＮＤ型フラッシュメモリにおいて扱われるページ単位４ＫＢと同等である。このため、各エレメントＣ４には、データを示すＰＢＡが格納される。
【００９０】
例えば、１つのフラグメントＬｉ４に格納される複数のＰＢＡが連続する場合には、フラグメントＬｉ４は省略されてもよい。フラグメントＬｉ４の参照元のエレメントＣ３は、エレメントＣ３に対応するＰＢＡの範囲である１２８ＫＢ分のデータの先頭のＰＢＡを含む。すなわち、あるフラグメントに含まれる複数のエレメントに対応するＰＢＡの範囲と同じサイズのデータが連続するＰＢＡに対応づけられている場合、このあるフラグメントの下位のフラグメントは省略可能であり、あるフラグメントに含まれるエレメントは、このあるデータの先頭のＰＢＡを含む。
【００９１】
なお、ネームスペースＮＳ１〜ＮＳｎごとに、対応するＰＢＡの範囲の大きさ（対応するメモリ領域のサイズ）が異なり、例えば階層的ＬＵＴ５１で管理されるネームスペースＮＳ１〜ＮＳｎごとのＰＢＡの数は異なるとしてもよい。この場合、ネームスペースＮＳ１〜ＮＳｎごとに、例えばネームスペースＮＳ１〜ＮＳｎのサイズに応じて、レイヤの数が異なるとしてもよい。例えば、ネームスペースＮＳ１では１２８ＧＢに相当するＰＢＡをレイヤ数５で管理し、ネームスペースＮＳ２では６４ＧＢに相当するＰＢＡをレイヤ数６で管理してもよい。
【００９２】
本実施形態では、１つのネームスペース内においては、フラグメントに含まれるエレメントの数は同じであることが望ましいが、フラグメントに含まれるエレメントの数はレイヤごとに異なってもよい。
【００９３】
図４は、本実施形態に係る階層的ＬＵＴ５１のフラグメントのデータフォーマットを例示するデータ構造図である。具体的には、図４は、図３に示すような、上位のレイヤの１フラグメントが下位のレイヤの３２個のフラグメントに対応する階層的ＬＵＴ５１の１つのフラグメントを例示している。
【００９４】
キャッシュメモリ４５１は、階層的ＬＵＴ５１の一部を、キャッシュライン単位で格納する。以下では、階層的ＬＵＴ５１のフラグメントをＬＵＴフラグメントとする。ＬＵＴフラグメントに対応するキャッシュラインをＬＵＴキャッシュラインとする。
【００９５】
キャッシュメモリ４５１で更新されたデータは、キャッシュライン単位で、不揮発性メモリ５に書き戻される。
【００９６】
ＬＵＴフラグメント及びＬＵＴキャッシュラインは、各レイヤＬ１〜Ｌ４におけるＬＵＴフラグメントＬｉ１〜Ｌｉ４のいずれかに対応する。ＬＵＴフラグメント及びＬＵＴキャッシュラインは、例えば、ＰＢＡ格納部Ｃ＿１〜Ｃ＿３２とＬＢＡ格納部Ｃ＿３３と管理データ格納部Ｃ＿３４とを含む。
【００９７】
ＰＢＡ格納部Ｃ＿１〜Ｃ＿３２は、エレメントに対応する。ＰＢＡ格納部Ｃ＿１〜Ｃ＿３２は、下位のレイヤのＬＵＴフラグメントに対応するＰＢＡ又はデータの格納位置を示すＰＢＡを格納する。上記図２で説明したように、１つのＰＢＡは例えば３２ビットで表される。なお、各ＰＢＡには、例えば８ビットの管理データＭＤ１が付されてもよい。各管理データＭＤ１は、例えば、ＰＢＡ格納部Ｃ＿１〜Ｃ＿３２のそれぞれに格納されているＰＢＡが、下位のレイヤのＬＵＴフラグメントに対応するＰＢＡであるか（この場合、さらに不揮発性メモリ５上のＰＢＡであるか、又は、キャッシュメモリ４５１上のＰＢＡであるか）、又は、データの格納位置を示すＰＢＡであるかを管理してもよい。ＰＢＡ格納部Ｃ＿１〜Ｃ＿３２のそれぞれのサイズは、それぞれＰＢＡのサイズと管理データＭＤ１のサイズとを足した４０ビットとしてもよく、ＰＢＡ格納部Ｃ＿１〜Ｃ＿３２の合計サイズは１６０バイトとしてもよい。
【００９８】
ＬＢＡ格納部Ｃ＿３３は、ＰＢＡ格納部Ｃ＿１（すなわち、ＬＵＴフラグメントで管理する先頭のＰＢＡ）に対応するＬＢＡを格納する。
【００９９】
管理データ格納部Ｃ＿３４は、当該ＬＵＴフラグメントが属するネームスペースＩＤ、及び、当該ＬＵＴフラグメントの管理するＰＢＡの範囲を格納する。
【０１００】
なお、管理データ格納部Ｃ＿３４は、他の情報を格納してもよい。例えば、管理データ格納部Ｃ＿３４は、当該ＬＵＴフラグメントが属するレイヤのＩＤを格納してもよい。
【０１０１】
各ＬＵＴフラグメントが例えばメモリ４５Ａのキャッシュメモリ４５１上に格納される場合、各ＬＵＴキャッシュラインは、ＬＵＴフラグメントに加えて、キャッシュメモリ４５１において互いに関連付けるべきＬＵＴキャッシュラインを示すポインタをさらに含むとしてもよい。より具体的には、ＬＵＴキャッシュラインは、このＬＵＴキャッシュラインの前に参照されるキャッシュラインを示す前ポインタ格納部Ｃ＿Ｎ−１と、当該ＬＵＴキャッシュラインの次に参照されるキャッシュラインを示す次ポインタ格納部Ｃ＿Ｎとを含むとしてもよい。このように、キャッシュメモリ４５１上に格納されているＬＵＴキャッシュラインが参照すべき前後のキャッシュラインへのポインタを含むことにより、キャッシュメモリ４５１に対するアクセスを高速化することができ、連続的なアクセスを実現することができる。なお、ＬＵＴキャッシュラインは、他の管理データを含むとしてもよい。
【０１０２】
例えば、あるキャッシュラインが後述のフリーリストＦＬに含まれる場合、このキャッシュラインの次アドレス格納部Ｃ＿Ｎは、同じフリーリストＦＬに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。あるキャッシュラインが後述のダーティリストＤＬに含まれる場合、このキャッシュラインの次アドレス格納部Ｃ＿Ｎは、同じダーティリストＤＬに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。あるキャッシュラインが後述のクリーンリストＣＬに含まれる場合、このキャッシュラインの次アドレス格納部Ｃ＿Ｎは、同じクリーンリストＣＬに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。
【０１０３】
本実施形態においては、次に参照すべきキャッシュラインのアドレスはＰＢＡで表されるとして説明するが、他の形式のアドレスで表されてもよい。また、本実施形態において、前ポインタ格納部Ｃ＿Ｎ−１と、次ポインタ格納部Ｃ＿Ｎとは、ＰＢＡを格納するとして説明するが、他の形式のアドレスを格納してもよい。
【０１０４】
ＬＵＴフラグメント及びＬＵＴキャッシュラインは、全て図４に示すフォーマットに従って構成されるのが望ましい。この場合、各ＬＵＴフラグメントのサイズは固定長（例えば、１６８バイト）とすることができる。各ＬＵＴキャッシュラインのサイズは固定長（例えば、１８８バイト）とすることができる。しかしながら、各ＬＵＴフラグメント及び各ＬＵＴキャッシュラインは、レイヤごとに異なるフォーマットに従って構成されてもよい。
【０１０５】
図５は、本実施形態に係るＡＤＭ５２のフラグメントのデータフォーマットを例示するデータ構造図である。
【０１０６】
キャッシュメモリ４５１は、ＡＤＭ５２の一部を、キャッシュライン単位で格納する。以下では、ＡＤＭ５２のフラグメントを、ＡＤＭフラグメントとする。ＡＤＭフラグメントに対応するキャッシュラインをＡＤＭキャッシュラインとする。
【０１０７】
ＡＤＭフラグメント及びＡＤＭキャッシュラインは、例えば、マップ格納部Ｄ＿１〜Ｄ＿４０とＰＢＡ格納部Ｄ＿４２とを含む。
【０１０８】
マップ格納部Ｄ＿１〜Ｄ＿４０は、不揮発性メモリ５に格納される４ＫＢのデータごとに、各データの有効又は無効を管理するビットを格納する。例えば、マップ格納部Ｄ＿１〜Ｄ＿４０の合計サイズが１６０バイト（＝１２８０ビット）とすると、１つのＡＤＭフラグメント及びＡＤＭキャッシュラインで不揮発性メモリ５に格納される１２８０個分の４ＫＢのデータの有効又は無効を管理可能である。
【０１０９】
ＰＢＡ格納部Ｄ＿４２は、マップ格納部Ｄ＿１のＰＢＡ（すなわち、このＡＤＭフラグメントで管理する先頭のＰＢＡ）を格納する。
【０１１０】
ＡＤＭキャッシュラインは、前述のＬＵＴキャッシュラインと同様に、キャッシュメモリ４５１において互いに関連付けるべきキャッシュラインを示すポインタをさらに含むとしてもよい。より具体的には、ＡＤＭキャッシュラインは、当該ＡＤＭキャッシュラインの前に参照されるキャッシュラインを示す前ポインタ格納部Ｄ＿Ｎ−１と、当該ＡＤＭキャッシュラインの次に参照されるキャッシュラインを示す次ポインタ格納部Ｄ＿Ｎとを含む。なお、ＡＤＭキャッシュラインは、他の管理データを含んでもよい。
【０１１１】
また、ＡＤＭフラグメント及びＡＤＭキャッシュラインは、全て図５に示すフォーマットに従って構成され、ＬＵＴフラグメント及びＬＵＴキャッシュラインと同じサイズの固定長とされるのが望ましい。すなわち、ＡＤＭフラグメントのサイズはＬＵＴフラグメントと同じ１６８バイト、ＡＤＭキャッシュラインのサイズはＬＵＴキャッシュラインのサイズと同じ１８８バイトとすることが好ましい。
【０１１２】
図６は、本実施形態に係るキャッシュメモリ４５１から不揮発性メモリ５への書き戻し時に使用されるデータフォーマットを例示するデータ構造図である。
【０１１３】
上述のように、キャッシュメモリ４５１でＬＵＴキャッシュライン又はＡＤＭキャッシュラインが更新されると、更新されたＬＵＴキャッシュラインに含まれるＬＵＴフラグメント又は更新されたＡＤＭキャッシュラインに含まれるＡＤＭフラグメントが、不揮発性メモリ５に書き戻される。
【０１１４】
本実施形態では、ＬＵＴフラグメント及びＡＤＭフラグメントのサイズは全て同じであるため、書き込み制御部４４１は、ＬＵＴフラグメント及びＡＤＭフラグメントを効率的に不揮発性メモリ５へ書き戻すことができる。
【０１１５】
具体的には、例えば、上記図４及び図５に示すように、不揮発性メモリ５上へ書き戻されるＬＵＴフラグメントのサイズは、レイヤに依存することなく、全て１６８バイトである。また、ＡＤＭフラグメントのサイズはＬＵＴフラグメントのサイズと同じ１６８バイトである。ここで、例えば、図６に示すようにキャッシュメモリ４５１から不揮発性メモリ５へ書き戻しを行うデータ単位（以下、書き戻し単位とする）を５１２バイトとすると、１つの書き戻し単位は、キャッシュメモリ４５１に格納されているＬＵＴフラグメントとＡＤＭフラグメントのうちから選択された任意の３つのフラグメントＦＧ＿１〜ＦＧ＿３を含むことができる。書き戻し単位からフラグメントＦＧ＿１〜ＦＧ＿３を除いた余りサイズは８バイトとなる。８バイトは、書き戻し単位（５１２バイト）に対して十分小さい値である。さらに、例えばＮＡＮＤ型フラッシュメモリのページサイズは５１２バイトの整数倍が一般的であるため、ページサイズに対しても余りサイズは十分小さい値となる。したがって、図６のデータフォーマットを用いることにより、書き戻し時に不揮発性メモリ５に書き込まれるページの容量の無駄を抑え、効率的なキャッシュラインの書き戻しを行うことができる。
【０１１６】
なお、１つの書き戻し単位は、書き戻し単位の余りサイズ（８バイト）を用いた管理データＭＤ２を含むとしてもよい。例えば、管理データＭＤ２は、１つの書き戻し単位に格納される３つのフラグメントの種類を表してもよい。
【０１１７】
また、書き戻し単位は、５１２バイトに限られない。書き戻し単位は、例えば、１ＫＢであってもよく、２ＫＢであってもよい。しかしながら、書き戻し単位は、５１２バイトの倍数であることが望ましい。
【０１１８】
また、不揮発性メモリコントローラ４６と不揮発性メモリ５との間で、ＬＵＴフラグメントとＡＤＭフラグメントとのうちのいずれかであるフラグメントの送受信を行う場合、ＥＣＣ（Error-Correcting Code）を含むフラグメントを送受信してもよい。この場合、例えば、１つの書き戻し単位に含まれるフラグメントの数と、フラグメントのサイズとを調整することにより、複数個のフラグメントに対して無駄なくＥＣＣを付することができ、フラグメントの送受信を効率的に行うことができる。
【０１１９】
図７は、本実施形態に係るＰＢＡの探索処理を例示するフローチャートである。
【０１２０】
ＰＢＡ探索処理とは、具体的には、プロセッサ４４のアドレス変換部４４５が、階層的ＬＵＴ５１を用いて指定されたＬＢＡをＰＢＡに変換する処理である。
【０１２１】
なお、階層的ＬＵＴ５１は、あらかじめプロセッサ４４の初期化部４４４及び書き込み処理におけるアドレス変換部４４５などにより生成され、不揮発性メモリ５に格納されている。
【０１２２】
ステップＳ７０１において、キャッシュメモリ制御部４４７は、不揮発性メモリコントローラ４６を経由し、不揮発性メモリ５に格納されている階層的ＬＵＴ５１の第１のレイヤＬ１のＬＵＴフラグメントＬｉ１を読み出し、ＬＵＴフラグメントＬｉ１をメモリ４５Ａ内のキャッシュメモリ４５１へ格納する。ＬＵＴフラグメントＬｉ１の読み出しは、例えばメモリ装置３の起動時に行われてもよい。また、ＬＵＴフラグメントＬｉ１の読み出しは、情報処理装置２によって指定されたネームスペースＩＤに基づいて行われるとしてもよい。
【０１２３】
ステップＳ７０２において、アドレス変換部４４５は、読み出されたＬＵＴフラグメントＬｉ１に対して、指定されたＬＢＡに対応するＰＢＡ格納部を探索し、該当するＰＢＡ格納部に格納されているＰＢＡを読み出す。
【０１２４】
ステップＳ７０３において、アドレス変換部４４５は、ステップＳ７０２で読み出したＰＢＡが下位のレイヤのＬＵＴフラグメントを示すＰＢＡであるか否かを判断する。
【０１２５】
読み出したＰＢＡが下位のレイヤのＬＵＴフラグメントを示すＰＢＡでない場合は、アドレス変換部４４５は、ステップＳ７０５において、読み出したＰＢＡが指定されたＬＢＡに対応するアドレスであるとし、探索処理を終了する。
【０１２６】
読み出したＰＢＡが下位のレイヤのＬＵＴフラグメントを示すＰＢＡである場合は、キャッシュメモリ制御部４４７は、ステップＳ７０４において、読み出したＰＢＡに対応する下位のレイヤのＬＵＴフラグメントを読み出す。キャッシュメモリ制御部４４７は、クリーンリストＣＬに所属するいずれかのキャッシュラインの次ポインタ格納部Ｃ＿Ｎに、キャッシュメモリ４５１へ格納される下位のレイヤのＬＵＴフラグメントに対応するＬＵＴキャッシュラインを示すポインタを格納することで、下位のレイヤのＬＵＴフラグメントに対応するＬＵＴキャッシュラインがクリーンリストＣＬに所属することを表す。キャッシュメモリ制御部４４７は、下位のレイヤのＬＵＴフラグメントに対応するＬＵＴキャッシュラインの前ポインタ格納部Ｃ＿Ｎ−１に、クリーンリストＣＬに所属するキャッシュラインを示すポインタを格納する。その後、処理はステップＳ７０２に戻る。
【０１２７】
なお、ステップＳ７０４において、ステップＳ７０３で読み出された下位のレイヤのフラグメントの参照先が不揮発性メモリ５内のＰＢＡを指す場合は、キャッシュメモリ制御部４４７は、不揮発性メモリ５の階層的ＬＵＴ５１より当該下位のフラグメントを読み出し、読み出した下位のフラグメントをメモリ４５Ａ内のキャッシュメモリ４５１へ格納する。ステップＳ７０３で読み出された下位のレイヤのフラグメントの参照先がキャッシュメモリ４５１内のＰＢＡを指す場合は、キャッシュメモリ制御部４４７による不揮発性メモリ５の階層的ＬＵＴ５１からメモリ４５Ａ内のキャッシュメモリ４５１への読み出し処理は不要である。
【０１２８】
図８は、本実施形態に係るＰＢＡの探索処理におけるキャッシュラインの関係を例示するブロック図である。図８の階層的ＬＵＴ５１の構成は、図３に示す階層的ＬＵＴ５１の構成と同じである。
【０１２９】
この図８では、第１のレイヤＬ１から第４のレイヤＬ４へ向けて、ＬＵＴキャッシュラインＣＬｉ１，ＣＬｉ２（１），ＣＬｉ３（２），ＣＬｉ４（２０）と読み出す状態を例示している。
【０１３０】
第１のレイヤＬ１において、ＬＵＴフラグメントＬｉ１に対応するＬＵＴキャッシュラインＣＬｉ１は、ＰＢＡ格納部Ｃ１＿１〜Ｃ１＿３２を含む。ＰＢＡ格納部Ｃ１＿１〜Ｃ１＿３２は、それぞれ、１２８ＭＢのＰＢＡの範囲に対応する。ＰＢＡ格納部Ｃ１＿１〜Ｃ１＿３２は、それぞれ、第２のレイヤＬ２の３２個のＬＵＴフラグメントＬｉ２に対応するＰＢＡを格納する。この図８において、ＰＢＡ格納部Ｃ１＿１〜Ｃ１＿３２は、それぞれ、第２のレイヤＬ２におけるＬＵＴキャッシュラインＣＬｉ２（１）〜ＣＬｉ２（３２）に対応するＰＢＡを含む。
【０１３１】
第２のレイヤＬ２において、ＬＵＴフラグメントＬｉ２に対応するＬＵＴキャッシュラインＣＬｉ２（１）は、ＰＢＡ格納部Ｃ２（１）＿１〜Ｃ２（１）＿３２を含む。ＰＢＡ格納部Ｃ２（１）＿１〜Ｃ２（１）＿３２は、それぞれ、４ＭＢのＰＢＡの範囲に対応する。ＰＢＡ格納部Ｃ２（１）＿１〜Ｃ２（１）＿３２は、それぞれ、第３のレイヤＬ３の３２個のＬＵＴフラグメントＬｉ３に対応するＰＢＡを格納する。この図８において、ＰＢＡ格納部Ｃ２（１）＿１〜Ｃ２（１）＿３２は、それぞれ、第３のレイヤＬ３におけるＬＵＴキャッシュラインＣＬｉ３（１）〜ＣＬｉ３（３２）に対応するＰＢＡを含む。
【０１３２】
第３のレイヤＬ３において、ＬＵＴフラグメントＬｉ３に対応するＬＵＴキャッシュラインＣＬｉ３（２）は、ＰＢＡ格納部Ｃ３（２）＿１〜Ｃ３（２）＿３２を含む。ＰＢＡ格納部Ｃ３（２）＿１〜Ｃ３（２）＿３２は、それぞれ、１２８ＫＢのＰＢＡの範囲に対応する。ＰＢＡ格納部Ｃ３（２）＿１〜Ｃ３（２）＿３２は、それぞれ、第４のレイヤＬ４の３２個のＬＵＴフラグメントＬｉ４に対応するＰＢＡを格納する。この図８において、ＰＢＡ格納部Ｃ３（２）＿１〜Ｃ３（２）＿３２は、それぞれ、第４のレイヤＬ４におけるＬＵＴキャッシュラインＣＬｉ４（１）〜ＣＬｉ４（３２）に対応するＰＢＡを含む。
【０１３３】
第４のレイヤＬ４において、ＬＵＴフラグメントＬｉ４に対応するＬＵＴキャッシュラインＣＬｉ４（２０）は、ＰＢＡ格納部Ｃ４（２０）＿１〜Ｃ４（２０）＿３２を含む。ＰＢＡ格納部Ｃ４（２０）＿１〜Ｃ４（２０）＿３２は、それぞれ、４ＫＢのＰＢＡの範囲に対応する。ＰＢＡ格納部Ｃ４（２０）＿１〜Ｃ４（２０）＿３２は、それぞれ、データに対応するＰＢＡを格納する。
【０１３４】
まず、キャッシュメモリ制御部４４７は、例えば、ネームスペースＩＤ、ＬＢＡ Ｙ、先頭アドレス及びオフセット値に基づいて、第１のレイヤＬ１のＬＵＴフラグメントＬｉ１を不揮発性メモリ５から読み出し、ＬＵＴフラグメントＬｉ１に対応するＬＵＴキャッシュラインＣＬｉ１をキャッシュメモリ４５１に格納する。
【０１３５】
アドレス変換部４４５は、例えば、ＬＢＡ Ｙ、先頭アドレス及びオフセット値に基づいて、ＬＵＴフラグメントＬｉ１に対応するＬＵＴキャッシュラインＣＬｉ１の中から、対応するＰＢＡ格納部Ｃ１＿１に格納されているＰＢＡを読み出す。
【０１３６】
キャッシュメモリ制御部４４７は、ＰＢＡ格納部Ｃ１＿１に格納されている値が第２のレイヤＬ２のＬＵＴフラグメントＬｉ２を示すＰＢＡであるので、ＬＵＴフラグメントＬｉ２を不揮発性メモリ５から読み出し、ＬＵＴフラグメントＬｉ２に対応するＬＵＴキャッシュラインＣＬｉ２（１）をキャッシュメモリ４５１に格納する。
【０１３７】
アドレス変換部４４５は、ＬＢＡ Ｙを含むＬＢＡの範囲が割り当てられるＰＢＡ格納部Ｃ２（１）＿２を探索し、ＰＢＡ格納部Ｃ２（１）＿２に格納されているＰＢＡを読み出す。
【０１３８】
キャッシュメモリ制御部４４７は、ＰＢＡ格納部Ｃ２（１）＿２に格納されている値が第３のレイヤＬ３のＬＵＴフラグメントＬｉ３を示すＰＢＡであるので、ＬＵＴフラグメントＬｉ３を不揮発性メモリ５から読み出し、ＬＵＴフラグメントＬｉ３に対応するＬＵＴキャッシュラインＣＬｉ３（２）をキャッシュメモリ４５１に格納する。
【０１３９】
アドレス変換部４４５は、ＬＵＴキャッシュラインＣＬｉ３（２）から、ＬＢＡ Ｙを含むＬＢＡの範囲が割り当てられるＰＢＡ格納部Ｃ３（２）＿２０を探索し、ＰＢＡ格納部Ｃ３（２）＿２０に格納されているＰＢＡを読み出す。
【０１４０】
キャッシュメモリ制御部４４７は、ＰＢＡ格納部Ｃ３（２）＿２０に格納されている値が第４のレイヤＬ４のＬＵＴフラグメントＬｉ４を示すＰＢＡであるので、ＬＵＴフラグメントＬｉ４を不揮発性メモリ５から読み出し、ＬＵＴフラグメントＬｉ４に対応するＬＵＴキャッシュラインＣＬｉ４（２０）をキャッシュメモリ４５１に格納する。
【０１４１】
アドレス変換部４４５は、ＬＵＴキャッシュラインＣＬｉ４（２０）から、ＬＢＡ Ｙを含むＬＢＡの範囲が割り当てられるＰＢＡ格納部Ｃ４（２０）＿３１を探索し、ＰＢＡ格納部Ｃ４（２０）＿３１に格納されているＰＢＡ Ｘを読み出す。ＰＢＡ格納部Ｃ４（２０）＿３１に格納されているＰＢＡ Ｘは、ＬＵＴキャッシュラインではなく、データを示す。このため、アドレス変換部４４５は、ＬＢＡ Ｙに対応するＰＢＡ Ｘを特定することができる。
【０１４２】
図９は、本実施形態に係るキャッシュメモリ４５１のリスト構造を例示するデータ構造図である。
【０１４３】
本実施形態において、キャッシュラインは、ＬＵＴキャッシュラインでもよく、ＡＤＭキャッシュラインでもよい。
【０１４４】
キャッシュメモリ制御部４４７は、階層的ＬＵＴ５１のＬＵＴフラグメントをＬＵＴキャッシュラインとしてキャッシュメモリ４５１上に格納する場合、又は、ＡＤＭ５２のＡＤＭフラグメントをＡＤＭキャッシュラインとしてキャッシュメモリ４５１上に格納する場合、上記図４及び図５で説明したように、キャッシュメモリ４５１上に格納されたキャッシュラインを連結してリスト構造を生成する。
【０１４５】
本実施形態において、キャッシュメモリ４５１は、フリーリストＦＬ、ダーティリストＤＬ、クリーンリストＣＬを含む。なお、ＬＵＴキャッシュラインとＡＤＭキャッシュラインとが異なるリストで管理されることが望ましい。この場合、ＬＵＴキャッシュラインを管理するリストとＡＤＭキャッシュラインを管理するリストとは、同じフォーマットであることが望ましい。
【０１４６】
図９において、フリーリストＦＬ、ダーティリストＤＬ、クリーンリストＣＬに属するキャッシュラインの次ポインタ格納部Ｃ＿Ｎは、同じリストに属し次に連結されるキャッシュラインのアドレスを格納する。次に連結されるキャッシュラインがない場合、次ポインタ格納部Ｃ＿Ｎは省略されてもよい。キャッシュラインの前ポインタ格納部Ｃ＿Ｎ−１は。同じリストに属し前に連結されるキャッシュラインのアドレスを格納する。前に連結されるキャッシュラインがない場合、前ポインタ格納部Ｃ＿Ｎは省略されてもよい。
【０１４７】
フリーリストＦＬは、クリーンリストＣＬにもダーティリストＤＬにも属さない例えば書き換え候補のキャッシュラインＦＬ１〜ＦＬ３を含む。階層的ＬＵＴ５１又はＡＤＭ５２からキャッシュメモリ４５１へ格納された直後のキャッシュラインは、フリーリストＦＬに属する。フリーリストＦＬに属するキャッシュラインＦＬ１〜ＦＬ３の並び順は、ランダムでもよい。キャッシュラインＦＬ１の次ポインタ格納部Ｃ＿Ｎ及びキャッシュラインＦＬ３の前ポインタ格納部Ｃ＿Ｎ−１は、キャッシュラインＦＬ２のＰＢＡを格納している。キャッシュラインＦＬ２の次ポインタ格納部Ｃ＿Ｎは、キャッシュラインＦＬ３のＰＢＡを格納している。キャッシュラインＦＬ２の前ポインタ格納部Ｃ＿Ｎ−１は、キャッシュラインＦＬ１のＰＢＡを格納している。
【０１４８】
ダーティリストＤＬは、例えばキャッシュメモリ４５１でキャッシュラインが書き換えられたが、書き換えられたキャッシュラインの内容が不揮発性メモリ５の階層的ＬＵＴ５１に反映されていないキャッシュラインＤＬ１，ＤＬ２を含む。ダーティリストＤＬに属するキャッシュラインＤＬ１，ＤＬ２の並び順は、ランダムでもよい。キャッシュラインＤＬ１の次ポインタ格納部Ｃ＿Ｎは、キャッシュラインＤＬ２のＰＢＡを格納している。キャッシュラインＤＬ２の前ポインタＣ＿Ｎ−１は、キャッシュラインＤＬ１のＰＢＡを格納している。
【０１４９】
例えば、キャッシュメモリ制御部４４７は、通信インタフェース制御部４１が情報処理装置２などより書き込みコマンドを受信すると、書き込み先のＬＢＡに該当するＬＵＴキャッシュラインをフリーリストＦＬからダーティリストＤＬへ切り替える。
【０１５０】
ダーティリストＤＬに属するキャッシュラインＤＬ１，ＤＬ２の内容は、不揮発性メモリ５の階層的ＬＵＴ５１又はＡＤＭ５２に反映される（書き込まれる）必要がある。キャッシュメモリ制御部４４７は、ダーティリストＤＬ内のキャッシュラインＤＬ１，ＤＬ２が不揮発性メモリ５へ書き込まれた後は、キャッシュラインＤＬ１，ＤＬ２をダーティリストＤＬで管理する必要がないため、キャッシュラインＤＬ１，ＤＬ２をダーティリストＤＬからクリーンリストＣＬへ繋ぎ替える。このため、ダーティリストＤＬに属するキャッシュラインＤＬ１，ＤＬ２は、先入れ先出し（Fast In Fast Out：ＦＩＦＯ）方式で、不揮発性メモリ５へ書き込まれ、クリーンリストＣＬに属するキャッシュラインに変換されることが望ましい。
【０１５１】
例えば、ダーティリストＤＬは、不揮発性メモリ５への書き込み処理を高速化するために用いられる。
【０１５２】
クリーンリストＣＬは、キャッシュメモリ４５１と不揮発性メモリ５の階層的ＬＵＴ５１又はＡＤＭ５２とで内容が同じキャッシュラインＣＬ１〜ＣＬ４を含む。キャッシュラインＣＬ１〜ＣＬ４は、例えば、キャッシュメモリ４５１において書き換えられ、不揮発性メモリ５の階層的ＬＵＴ５１に対して反映されたキャッシュラインである。クリーンリストＣＬに属するキャッシュラインＣＬ１〜ＣＬ４の並び順は、ランダムでもよい。キャッシュラインＣＬ１の次ポインタ格納部Ｃ＿Ｎ及びキャッシュラインＣＬ３の前ポインタ格納部Ｃ＿Ｎ−１は、キャッシュラインＣＬ２のＰＢＡを格納している。キャッシュラインＣＬ２の次ポインタ格納部Ｃ＿Ｎ及びキャッシュラインＣＬ４の前ポインタ格納部Ｃ＿Ｎ−１は、キャッシュラインＣＬ３のＰＢＡを格納している。キャッシュラインＣＬ２の前ポインタ格納部Ｃ＿Ｎ−１は、キャッシュラインＣＬ１のＰＢＡを格納している。キャッシュラインＣＬ３の次ポインタ格納部Ｃ＿Ｎは、キャッシュラインＣＬ４のＰＢＡを格納している。
【０１５３】
例えば、キャッシュメモリ制御部４４７は、通信インタフェース制御部４１が情報処理装置２などより読み出しコマンドを受信すると、読み出し先のＬＢＡに該当するキャッシュラインをフリーリストＦＬからクリーンリストＣＬへ切り替える。
【０１５４】
クリーンリストＣＬに属するキャッシュラインＣＬ１〜ＣＬ４は、不揮発性メモリ５の階層的ＬＵＴ５１の一部と同じ内容であるため、クリーンリストＣＬに属するキャッシュラインＣＬ１〜ＣＬ４が失われた場合であっても、キャッシュメモリ４５１のキャッシュラインＣＬ１〜ＣＬ４と不揮発性メモリ５に格納されている階層的ＬＵＴ５１又はＡＤＭ５２のデータとの間で不整合は発生しない。このため、例えば、キャッシュメモリ制御部４４７は、フリーリストＦＬの合計サイズが一定のしきい値以下に減少した場合、クリーンリストＣＬのキャッシュラインをフリーリストＦＬへ移動してもよい。なお、クリーンリストＣＬは先入れ先出し方式で管理されてもよい。クリーンリストＣＬの増加又は減少は管理されていなくてもよい。すなわち、リスト数の増加又は減少はランダムに行われてもよい。
【０１５５】
以下では、メモリ装置３が読み出しコマンド及び書き込みコマンドを受信した際のキャッシュメモリ４５１の状態変化の詳細について説明する。
【０１５６】
図１０は、本実施形態に係るキャッシュメモリ４５１におけるキャッシュラインの状態変化を例示するフローチャートである。
【０１５７】
図１１は、本実施形態に係るキャッシュメモリ４５１におけるキャッシュラインの状態変化を例示するブロック図である。図１１は、図１０のフローチャートで示される処理を図示する。
【０１５８】
ステップＳ１００１において、キャッシュメモリ制御部４４７は、不揮発性メモリ５から階層的ＬＵＴ５１の一部を読み出し、キャッシュメモリ４５１にフリーリストＦＬに属するキャッシュラインＦＬ１〜ＦＬｘとして格納する。例えば、ステップＳ１００１では、上記図７のステップＳ７０１と同様に、階層的ＬＵＴ５１の最上位の第１のレイヤＬ１のフラグメントＬｉ１に対応するキャッシュラインＣＬｉ１がキャッシュメモリ４５１へ格納される。
【０１５９】
ステップＳ１００２において、キャッシュメモリ制御部４４７は、情報処理装置２から通信インタフェース制御部４１経由で不揮発性メモリ５に対するアクセスコマンドを受信したか否か判断する。書き込みコマンドを受信した場合、処理はステップＳ１００３に進み、読み出しコマンドを受信した場合、処理はステップＳ１００７へ進み、アクセスコマンドを受信しない場合は、処理はステップＳ１００８へ進む。
【０１６０】
ステップＳ１００３において、アドレス変換部４４５は、フリーリストＦＬのキャッシュラインＦＬ１〜ＦＬｘに対して書き込み先のＬＢＡに対応するＰＢＡを探索する。ここで、階層的ＬＵＴ５１又はキャッシュメモリ４５１に対する探索処理は、上記図７及び図８で説明した探索処理と同様である。
【０１６１】
キャッシュメモリ制御部４４７は、アドレス変換部４４５によって探索された階層的ＬＵＴ５１のうちキャッシュメモリ４５１に格納されていないＬＵＴフラグメントを読み出し、読み出したＬＵＴフラグメントをフリーリストＦＬに属するキャッシュラインＦＬ１〜ＦＬｘのいずれかとしてキャッシュメモリ４５１へ格納する。また、キャッシュメモリ制御部４４７は、ＡＤＭ５２のうち書き込み先のＰＢＡに対応するＡＤＭを含むＡＤＭフラグメントを読み出し、読み出したＡＤＭフラグメントをフリーリストＦＬに属するキャッシュラインＦＬ１〜ＦＬｘのいずれかとしてキャッシュメモリ４５１へ格納する。さらに、キャッシュメモリ制御部４４７は、アドレス変換部４４５によりフリーリストＦＬのキャッシュラインＦＬ１〜ＦＬｘのうちＬＵＴキャッシュラインが書き換えられた場合は、書き換えられたＬＵＴキャッシュラインを、階層的ＬＵＴ５１に対応するダーティリストＬＤＬへ移動する。同様に、キャッシュメモリ制御部４４７は、データマップ管理部４４６によりフリーリストＦＬのキャッシュラインＦＬ１〜ＦＬｘのうちＡＤＭキャッシュラインが書き換えられた場合は、書き換えられたＡＤＭキャッシュラインを、ＡＤＭ５２に対応するダーティリストＡＤＬへ移動する。
【０１６２】
ステップＳ１００４において、キャッシュメモリ制御部４４７は、ダーティリストＬＤＬ，ＡＤＬのキャッシュラインＤＬ１〜ＤＬｙ−１，ＤＬｙ〜ＤＬｘを不揮発性メモリ５の階層的ＬＵＴ５１及びＡＤＬ５２へ反映させるための一定条件が満たされているか否か判断する。条件は、例えばダーティリストＬＤＬ，ＡＤＬのサイズが一定のしきい値を超えた場合に満たされてもよい。条件が満たされない場合は、ステップＳ１００２に戻る。条件が満たされた場合は、ステップＳ１００５において、キャッシュメモリ制御部４４７は、ダーティリストＬＤＬ，ＡＤＬのキャッシュラインＤＬ１〜ＤＬｙ−１，ＤＬｙ〜ＤＬｘを、不揮発性メモリ５の階層的ＬＵＴ５１及びＡＤＭ５２へ反映させる（書き込む）。
【０１６３】
なお、ステップＳ１００４の判断は、ステップＳ１００２で書き込みコマンドがない場合でも、キャッシュメモリ制御部４４７により定期的に行われてもよい。
【０１６４】
ステップＳ１００６において、キャッシュメモリ制御部４４７は、階層的ＬＵＴ５１への反映が完了したダーティリストＬＤＬのキャッシュラインを、階層的ＬＵＴ５１に対応するクリーンリストＬＣＬへ移動する。キャッシュメモリ制御部４４７は、ＡＤＭ５２への反映が完了したダーティリストＡＤＬのキャッシュラインを、ＡＤＭ５２に対応するクリーンリストＡＣＬへ移動する。その後、処理はステップＳ１００２に戻る。
【０１６５】
ステップＳ１００７において、アドレス変換部４４５は、フリーリストＦＬのキャッシュラインＦＬ１〜ＦＬｘに対して読み出し先のＬＢＡに対応するＰＢＡを探索する。キャッシュメモリ制御部４４７は、この探索処理において探索した階層的ＬＵＴ５１のうち、キャッシュメモリ４５１に格納されていないＬＵＴフラグメントを、キャッシュメモリ４５１にフリーリストＦＬに属するキャッシュラインＦＬ１〜ＦＬｘのいずれかとして格納し、その後クリーンリストＬＣＬへ移動する。また、キャッシュメモリ制御部４４７は、ＡＤＭ５２から読み出し先のＰＢＡに対応するＡＤＭを含むＡＤＭフラグメントを読み出し、読み出したＡＤＭフラグメントをフリーリストＦＬに属するキャッシュラインＦＬ１〜ＦＬｘのいずれかとしてキャッシュメモリ４５１に格納し、その後クリーンリストＡＣＬへ移動する。その後、処理はステップＳ１００２に戻る。
【０１６６】
ステップＳ１００８において、キャッシュメモリ制御部４４７は、フリーリストＦＬのサイズをチェックする。フリーリストが不足していない場合、処理はステップＳ１００２に戻る。フリーリストＦＬが不足している場合、ステップＳ１００９において、キャッシュメモリ制御部４４７は、クリーンリストＬＣＬ，ＡＣＬのキャッシュラインをフリーリストＦＬへ移動する。その後、処理はステップＳ１００２に戻る。
【０１６７】
なお、上記の図１０の説明では、キャッシュラインがフリーリストＦＬよりダーティリストＬＤＬ，ＡＤＬへ移動する例について説明したが、クリーンリストＬＣＬ，ＡＣＬにおいて書き換えられたキャッシュラインもダーティリストＬＤＬ，ＡＤＬへ移動可能としてもよい。また、上述の例では、不揮発性メモリ５１の階層的ＬＵＴ５１又はＡＤＭ５２から読み出されたＬＵＴフラグメント又はＡＤＭフラグメントは、フリーリストＦＬに属するとしてキャッシュメモリ４５１に格納されるが、これに代えて、クリーンリストＬＣＬ、ＡＣＬに属するとしてキャッシュメモリ４５１に格納されてもよい。
【０１６８】
ダーティリストＬＤＬ，ＡＤＬのキャッシュラインＤＬ１〜ＤＬｙ−１，ＤＬｙ〜ＤＬｘは、上述のステップＳ１００４の判断とは関係なく、特定のタイミングで、不揮発性メモリ５内の階層的ＬＵＴ５１又はＡＤＭ５２に反映されてもよい。例えば、メモリ装置３は、メモリ装置３の電源が失われる場合に、ダーティリストＬＤＬ，ＡＤＬのキャッシュラインＤＬ１〜ＤＬｙ−１，ＤＬｙ〜ＤＬｘを階層的ＬＵＴ５１又はＡＤＭ５２へ書き込む時間分の電力を供給する別電源を確保していてもよい。この場合、メモリ装置３の電源が失われるタイミングで当該別電源からメモリ装置３へ電力が供給され、ダーティリストＬＤＬ，ＡＤＬのキャッシュラインＤＬ１〜ＤＬｙ−１，ＤＬｙ〜ＤＬｘは、不揮発性メモリ５の階層的ＬＵＴ５１又はＡＤＭ５２へ書き込まれる。この場合、ダーティリストＬＤＬ，ＡＤＬのサイズを小さくすることで、確保する別電源の容量を小さくすることができ、メモリ装置３に要するコストを抑えることができる。また、ダーティリストＬＤＬ，ＡＤＬのサイズを小さくすることにより、別電源からの電源供給時にダーティリストＬＤＬ，ＡＤＬのキャッシュラインＤＬ１〜ＤＬｙ−１，ＤＬｙ〜ＤＬｘを階層的ＬＵＴ５１又はＡＤＭ５２へ反映する時間を短くすることができ、安全性を高めることができる。
【０１６９】
ダーティリストＬＤＬ，ＡＤＬのサイズはしきい値などにより調整可能であるため、ダーティリストＬＤＬ，ＡＤＬのキャッシュラインＤＬ１〜ＤＬｙ−１，ＤＬｙ〜ＤＬｘを階層的ＬＵＴ５１及びＡＤＭ５２へ反映する頻度を調整することができる。これにより、不揮発性メモリ５へのアクセス頻度、メモリ装置３の処理速度、不揮発性メモリ５の寿命を調整することができる。メモリ装置３は、ダーティリストＬＤＬ，ＡＤＬのサイズを管理し、情報処理装置２などからのコマンドによりダーティリストＬＤＬ，ＡＤＬのサイズを変化可能であるため、メモリ装置３のコスト、安全性、性能、寿命のバランスを保つことができる。
【０１７０】
図１２は、本実施形態に係るＬＵＴフラグメントと不揮発性メモリ５のページとの関係を例示するブロック図である。以下では、ＬＵＴフラグメント及びＬＵＴキャッシュラインについて説明するが、ＡＤＭフラグメント及びＡＤＭキャッシュラインについても同様である。この図１２では、ページに含まれるフラグメントの全てがＬＵＴフラグメントの場合を例示している。しかしながら、ページに含まれるフラグメントはＡＤＭフラグメントでもよい。ページには、ＬＵＴフラグメントとＡＤＭフラグメントとが混在してもよい。
【０１７１】
本実施形態では、階層的ＬＵＴ５１を生成する際に、上述のように全てのレイヤにおいて、ＬＵＴフラグメントが同じ数のエレメントを含む。この場合、各ＬＵＴフラグメントのサイズは全て同じとなり、各ＬＵＴキャッシュラインのサイズは全て同じとなる。ＬＵＴフラグメントのサイズを同じとし、ＬＵＴキャッシュラインのサイズを同じとすることで、不揮発性メモリ５上で階層的ＬＵＴ５１を効率的に格納することができる。
【０１７２】
具体的には、例えば、上記図４に示すＬＵＴフラグメント及びＬＵＴキャッシュラインのフォーマットを用いた場合、不揮発性メモリ５上に配置される階層的ＬＵＴ５１の各ＬＵＴフラグメントのサイズは、レイヤに依存することなく、全て１６８バイトとなる。
【０１７３】
ここで、例えば、図１２に示すように不揮発性メモリ５のページサイズを１０２４バイトとすると、１つのページには６つのＬＵＴフラグメントＬｉＡ〜ＬｉＦが含まれる。この場合、当該ページの余りサイズは１６バイトとなり、これは１ページの容量（１０２４バイト）に対して十分小さい値である。したがって、ページの容量の無駄を抑えつつ、効率的にＬＵＴフラグメントを管理することができる。
【０１７４】
なお、不揮発性メモリコントローラ４６と不揮発性メモリ５との間でＬＵＴフラグメントの送受信を行う場合、ＥＣＣ（Error-Correcting Code）を含むＬＵＴフラグメントを送受信してもよい。この場合、例えば、１つのページに含まれるＬＵＴフラグメントの数と、ＬＵＴフラグメントのサイズとを調整することにより、複数個のＬＵＴフラグメントに対して無駄なくＥＣＣを付することができ、ＬＵＴフラグメントの送受信を効率的に行うことができる。
【０１７５】
以上説明した本実施形態においては、論理アドレスを物理アドレスへ変換するアドレス変換データを階層的に記述することで、階層的ＬＵＴ５１のうちの一部のデータを効率的にキャッシュメモリ４５１に格納し、管理することができる。
【０１７６】
本実施形態において、階層的ＬＵＴ５１に含まれる複数のフラグメントは同じサイズである。したがって、不揮発性メモリ５からフラグメントを読み出してキャッシュメモリ４５１へ格納する処理と、キャッシュメモリ４５１からフラグメントを読み出して不揮発性メモリ５へ格納する処理を効率的に行うことができる。
【０１７７】
本実施形態においては、階層的ＬＵＴ５１が、ネームスペースごとに、論理アドレスを物理アドレスへ変換するための階層構造を持つ。このため、同じネームスペースのアドレス変換が連続する場合に、アドレス変換に必要なフラグメントがキャッシュメモリ４５１に格納されている可能性を高くすることができ、アドレス変換の速度を向上させることができ、キャッシュイン及びキャッシュアウトなどの処理量を少なくすることができる。
【０１７８】
本実施形態に係る階層的ＬＵＴ５１において、記憶容量の少ないネームスペースの階層数は少なくすることができ、記憶容量の多いネームスペースの階層数は多くすることができ、ネームスペースの記憶容量に応じて無駄の少ないデータ構造を実現することができる。
【０１７９】
本実施形態において、階層的ＬＵＴ５１に含まれる各フラグメントのサイズを、キャッシュメモリ４５１に含まれるキャッシュラインの単位サイズとほぼ同じにすることにより、例えばフラグメント単位又はフラグメントの整数倍でキャッシュイン及びキャッシュアウトを行うことができ、キャッシュメモリ４５１の管理を効率的に行うことができる。
【０１８０】
本実施形態においては、キャッシュメモリ４５１に格納されているキャッシュラインを、ダーティリストＤＬ、クリーンリストＣＬ、フリーリストＦＬのいずれかに所属させるため、キャッシュラインに対応するフラグメントの状態を容易に把握することができる。
【０１８１】
本実施形態においては、初期化部４４４及びアドレス変換部４４５によって階層的ＬＵＴ５１を生成することで、メモリ４５Ａのキャッシュメモリ４５１に一度に読み出されるＬＵＴのサイズを小さくすることができる。これにより、ＬＵＴの読み出しに要する時間を短縮できる。また、メモリ装置３の起動時に第１のレイヤＬ１のキャッシュラインのみが読み出されるため、メモリ装置３の起動を高速化できる。ゆえに、メモリ装置３の利便性を高めることができる。
【０１８２】
本実施形態において、メモリ装置３は、キャッシュメモリ４５１に含まれるダーティリストＤＬのサイズを管理し、情報処理装置２などからのコマンドによりダーティリストＤＬのサイズを変化させるとしてもよい。これにより、キャッシュメモリ４５１から階層的ＬＵＴ５１にキャッシュラインを書き戻す処理の発生頻度を制御することができ、メモリ装置３のコスト、安全性、性能、寿命のバランスを保つことができる。
【０１８３】
本実施形態においては、階層的ＬＵＴ５１の１つのネームスペース内において、フラグメントに含まれるエレメントの数を例えばレイヤ間で一定とすることにより、不揮発性メモリ５上で階層的ＬＵＴ５１を効率的に格納することができる。また、不揮発性メモリコントローラ４６と不揮発性メモリ５との間におけるキャッシュラインの送受信を効率的に行うことができる。
【０１８４】
本実施形態において、ＡＤＭフラグメント及びＬＵＴフラグメントのサイズは同じサイズとし、さらに、ＡＤＭキャッシュライン及びＬＵＴキャッシュラインのサイズは同じサイズとした。これにより、キャッシュメモリ制御部４４７は、ＡＤＭキャッシュラインとＬＵＴキャッシュラインとを同じフォーマットのフリーリストＦＬ、クリーンリストＣＬ、及び、ダーティリストＤＬで効率的に管理可能である。例えば、ＡＤＭキャッシュライン及びＬＵＴキャッシュラインのフリーリストを共通とすることにより、キャッシュメモリ４５１の容量を効率的に使用することができる。また、書き込み制御部４４１は、ＡＤＭフラグメントであるか、又は、ＬＵＴフラグメントであるかを区別することなく、ＡＤＭフラグメントとＬＵＴフラグメントとを１つの書き戻し単位及びページに混在させて不揮発性メモリ５へ書き戻すことができる。これにより、ページの容量に無駄が生じることを抑えつつ、効率的にキャッシュラインを書き戻すことができる。
【０１８５】
本発明の実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。本実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。本実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８６】
１…情報処理システム、２…情報処理装置、３…メモリ装置、４…コントローラ、５…不揮発性メモリ、４１…通信インタフェース制御部、４２…書き込みバッファメモリ、４３…読み出しバッファメモリ、４４…プロセッサ、４５Ａ，４５Ｂ…メモリ、４６…不揮発性メモリコントローラ、５１…階層的ＬＵＴ、４１１…送受信制御部、４１２…コマンド制御部、４４１…書き込み制御部、４４２…読み出し制御部、４４３…ガーベージコレクション制御部、４４４…初期化部、４４５…アドレス変換部、４４６…データマップ管理部、４４７…キャッシュメモリ制御部、４５１…キャッシュメモリ、Ｐ…制御プログラム。
【図１】
2020074222.tif 000003
【図２】
2020074222.tif 000004
【図３】
2020074222.tif 000005
【図４】
2020074222.tif 000006
【図５】
2020074222.tif 000007
【図６】
2020074222.tif 000008
【図７】
2020074222.tif 000009
【図８】
2020074222.tif 000010
【図９】
2020074222.tif 000011
【図１０】
2020074222.tif 000012
【図１１】
2020074222.tif 000013
【図１２】
2020074222.tif 000014
【手続補正書】
【提出日】令和2年3月2日(2020.3.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
キャッシュメモリと、
プロセッサと、
を具備し、
前記プロセッサは、
前記不揮発性メモリから前記キャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、前記対象論理アドレスに対応するデータマッピングのフラグメント、をロードするように構成され、
前記キャッシュメモリにロードされた前記アドレスマッピングの前記複数のレイヤの前記フラグメントを参照して、前記不揮発性メモリに対して前記対象論理アドレスからマップされる物理アドレスへアクセスするように構成され、
前記データマッピングの各ビットは、前記不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示し、前記複数のレイヤは、階層構造を有し、前記アドレスマッピングの最下レイヤを除く各レイヤは、前記レイヤにマップされた各セグメント論理アドレス範囲と、前記各セグメント論理アドレス範囲が前記各レイヤより狭い範囲にさらにマップされている直下レイヤの物理位置と、の対応を示し、前記最下レイヤは、前記最下レイヤにマップされた各論理アドレスと、前記各論理アドレスに関する前記不揮発性メモリの物理アドレスと、の対応を示し、前記データマッピングの前記フラグメントは、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントのそれぞれと同じサイズを有する、
メモリ装置。
【請求項２】
前記プロセッサは、前記対象論理アドレスに関するデータを前記対象論理アドレスからマップされる前記物理アドレスへ書き込む際に、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントを更新し、前記不揮発性メモリに記憶されている前記アドレスマッピングを前記更新されたフラグメントへ書き換えるようにさらに構成される、請求項１のメモリ装置。
【請求項３】
前記プロセッサは、前記更新されたフラグメントのリストのサイズがしきい値を超えると、前記更新されたフラグメントを前記キャッシュメモリから前記不揮発性メモリへ書き戻すようにさらに構成される、請求項２のメモリ装置。
【請求項４】
前記プロセッサは、前記対象論理アドレスからマップされる前記物理アドレスから前記対象論理アドレスに関するデータを読み出した後、前記キャッシュメモリに前記ロードされたフラグメントを維持するようにさらに構成される、請求項１のメモリ装置。
【請求項５】
前記アドレスマッピングの前記各レイヤは、複数のフラグメントを含み、前記複数のフラグメントのそれぞれは、異なる論理アドレス範囲に対応し、前記アドレスマッピングの異なる複数のレイヤにおける複数のフラグメントは、同じサイズを有する、請求項１のメモリ装置。
【請求項６】
前記プロセッサは、前記ロードされたフラグメントのそれぞれに対して、直上レイヤのフラグメントが存在する場合に前記直上レイヤのフラグメントがロードされている前記キャッシュメモリにおける位置を示す第１のポインタと、直下レイヤのフラグメントが存在する場合に前記直下レイヤのフラグメントがロードされている前記キャッシュメモリにおける位置を示す第２のポインタと、を付与する、請求項１のメモリ装置。
【請求項７】
前記プロセッサは、前記対象論理アドレスに関するデータを前記対象論理アドレスからマップされる前記物理アドレスへ書き込む際に、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントと、前記データマッピングの前記ロードされたフラグメントとを、更新し、前記不揮発性メモリに記憶されている前記アドレスマッピングと前記データマッピングとに対し、前記アドレスマッピングの前記更新されたフラグメントと前記データマッピングの前記更新されたフラグメントとをまとめて書き換えるようにさらに構成される、請求項１のメモリ装置。
【請求項８】
不揮発性メモリとキャッシュメモリとを含むメモリ装置を制御する方法において、
前記不揮発性メモリから前記キャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、前記対象論理アドレスに対応するデータマッピングのフラグメント、をロードすることと、
前記キャッシュメモリにロードされた前記アドレスマッピングの前記複数のレイヤの前記フラグメントを参照して、前記不揮発性メモリに対して前記対象論理アドレスからマップされる物理アドレスへアクセスすることと、
を具備し、
前記データマッピングの各ビットは、前記不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示し、前記複数のレイヤは、階層構造を有し、前記アドレスマッピングの最下レイヤを除く各レイヤは、前記レイヤにマップされた各セグメント論理アドレス範囲と、前記各セグメント論理アドレス範囲が前記各レイヤより狭い範囲にさらにマップされている直下レイヤの物理位置と、の対応を示し、前記最下レイヤは、前記最下レイヤにマップされた各論理アドレスと、前記各論理アドレスに関する前記不揮発性メモリの物理アドレスと、の対応を示し、前記データマッピングの前記フラグメントは、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントのそれぞれと同じサイズを有する、方法。
【請求項９】
不揮発性メモリを制御する方法において、
前記不揮発性メモリからキャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、前記対象論理アドレスに対応するデータマッピングのフラグメント、をロードすることと、
前記キャッシュメモリにロードされた前記アドレスマッピングの前記複数のレイヤの前記フラグメントを参照して、前記不揮発性メモリに対して前記対象論理アドレスからマップされる物理アドレスへアクセスすることと、
を具備し、
前記データマッピングの各ビットは、前記不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示し、前記複数のレイヤは、階層構造を有し、前記アドレスマッピングの最下レイヤを除く各レイヤは、前記レイヤにマップされた各セグメント論理アドレス範囲と、前記各セグメント論理アドレス範囲が前記各レイヤより狭い範囲にさらにマップされている直下レイヤの物理位置と、の対応を示し、前記最下レイヤは、前記最下レイヤにマップされた各論理アドレスと、前記各論理アドレスに関する前記不揮発性メモリの物理アドレスと、の対応を示し、前記データマッピングの前記フラグメントは、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントのそれぞれと同じサイズを有する、方法。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本実施形態は、メモリ装置及び方法に関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
本実施形態は、アドレス変換データを効率的に管理するメモリ装置及び方法を提供する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
本実施形態によれば、メモリ装置は、不揮発性メモリと、キャッシュメモリと、プロセッサとを含む。プロセッサは、不揮発性メモリからキャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、対象論理アドレスに対応するデータマッピングのフラグメント、をロードし、キャッシュメモリにロードされたアドレスマッピングの複数のレイヤのフラグメントを参照して、不揮発性メモリに対して対象論理アドレスからマップされる物理アドレスへアクセスするように構成される。データマッピングの各ビットは、不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示す。複数のレイヤは、階層構造を有する。アドレスマッピングの最下レイヤを除く各レイヤは、レイヤにマップされた各セグメント論理アドレス範囲と、各セグメント論理アドレス範囲が各レイヤより狭い範囲にさらにマップされている直下レイヤの物理位置と、の対応を示す。最下レイヤは、最下レイヤにマップされた各論理アドレスと、各論理アドレスに関する不揮発性メモリの物理アドレスと、の対応を示す。データマッピングのフラグメントは、アドレスマッピングの複数のレイヤのロードされたフラグメントのそれぞれと同じサイズを有する。