(57)【要約】【課題】利便性の高いメモリシステムを提供すること。【解決手段】メモリシステムは、ホストに接続可能である。前記メモリシステムは、不揮発性の第１メモリと、制御部とを備える。前記制御部は、前記ホストと前記第１メモリとの間のデータ転送を実行し、論理位置情報と物理位置情報との対応関係を示す翻訳情報を管理する。前記論理位置情報は前記ホストから指定される位置情報である。前記物理位置情報は前記第１メモリ内の位置を物理的に示す位置情報である。前記翻訳情報は、複数の階層に階層化され、第１の階層に属する第１翻訳情報と第２の階層に属する第２翻訳情報とを含む。前記第１翻訳情報のサイズと前記第２翻訳情報のサイズとは等しい。【選択図】図７
2020091911.tif 000002
【特許請求の範囲】
【請求項１】
論理位置情報と物理位置情報との対応関係を示す翻訳情報を管理することと、前記論理位置情報はデータに関連付けられる論理的な位置情報であり、前記物理位置情報は前記データが格納された不揮発性の第１メモリ内の位置を示す物理的な位置情報であり、前記翻訳情報は、複数の階層に階層化され、第１の階層に属する第１翻訳情報と第２の階層に属する第２翻訳情報とを含み、前記第１翻訳情報のサイズと前記第２翻訳情報のサイズとは等しく、
前記第１翻訳情報および前記第２翻訳情報を前記第１メモリが備える第１領域に格納することであって、前記第１領域は複数のページを備え、各ページは前記第１メモリへの書き込み単位であり、前記第１翻訳情報および前記第２翻訳情報を同じページに格納することと、
を含むメモリシステムの制御方法。
【請求項２】
前記第１翻訳情報および前記第２翻訳情報を前記第１領域から第２メモリに読み出すことと、
前記第２メモリに格納された前記第１翻訳情報および前記第２翻訳情報を使用することと、
使用後の前記第１翻訳情報および前記第２翻訳情報を前記第１領域に格納することと、
をさらに含む請求項１に記載のメモリシステムの制御方法。
【請求項３】
前記データを前記第１メモリが備える第２領域に書き込むことと、
前記第２領域内のデータが第１状態であるか第２状態であるかを記録した状態管理情報を管理することと、前記第１翻訳情報のサイズと前記第２翻訳情報のサイズと前記状態管理情報のサイズとは等しい、
をさらに含む請求項１に記載のメモリシステムの制御方法。
【請求項４】
前記第１翻訳情報、前記第２翻訳情報および前記状態管理情報を前記第１領域に記憶すること、
をさらに含む請求項３に記載のメモリシステムの制御方法。
【請求項５】
前記第１翻訳情報、前記第２翻訳情報および前記状態管理情報を同じページに格納すること、
を含む請求項４に記載のメモリシステムの制御方法。
【請求項６】
前記第１翻訳情報、前記第２翻訳情報および前記状態管理情報を前記第１領域から第２メモリに読み出すことと、
前記第２メモリに格納された前記第１翻訳情報、前記第２翻訳情報および前記状態管理情報を使用することと、
使用後の前記第１翻訳情報、前記第２翻訳情報および前記状態管理情報を前記第１領域に格納することと、
をさらに含む請求項５に記載のメモリシステムの制御方法。
【請求項７】
第１のデータを前記第２領域内の第１の位置に格納することと、
前記第１のデータと同一の論理位置情報が指定されたデータのうちの最新のデータである第２のデータを第２の位置に格納することと、
前記第１のデータの状態を前記第１状態として管理することと、
前記第２のデータの状態を前記第２状態として管理することと、
をさらに含む請求項３に記載のメモリシステムの制御方法。
【請求項８】
論理位置情報と物理位置情報との対応関係を示す翻訳情報を管理することと、前記論理位置情報はデータに関連付けられる論理的な位置情報であり、前記物理位置情報は前記データが格納された不揮発性の第１メモリ内の位置を示す物理的な位置情報であり、前記翻訳情報は、第１翻訳情報を含み、
前記データを前記第１メモリが備える第１領域に書き込むことと、
前記第１領域内のデータが第１状態であるか第２状態であるかを記録した状態管理情報を管理することと、前記状態管理情報は、第１状態管理情報を含み、前記第１翻訳情報のサイズと前記第１状態管理情報のサイズとは等しく、
前記第１翻訳情報および前記第１状態管理情報を前記第１メモリが備える第２領域に書き込むことであって、前記第２領域は複数のページを備え、各ページは前記第１メモリへの書き込み単位であり、前記第１翻訳情報および前記第１状態管理情報を同じページに格納することと、
を含むメモリシステムの制御方法。
【請求項９】
前記第１翻訳情報および前記第１状態管理情報を前記第２領域から第２メモリに読み出すことと、
前記第２メモリに格納された前記第１翻訳情報および前記第１状態管理情報を使用することと、
使用後の前記第１翻訳情報および前記第１状態管理情報を前記第２領域に格納することと、
をさらに含む請求項８に記載のメモリシステムの制御方法。
【請求項１０】
第１のデータを前記第１領域内の第１の位置に格納することと、
前記第１のデータと同一の論理位置情報が指定されたデータのうちの最新のデータである第２のデータを前記第１領域内の第２の位置に格納することと、
前記第１のデータの状態を前記第１状態として管理することと、
前記第２のデータの状態を前記第２状態として管理することと、
をさらに含む請求項８に記載のメモリシステムの制御方法。
【請求項１１】
前記翻訳情報は、複数の階層に階層化され、前記第１翻訳情報は、第１の階層に属する第２翻訳情報と第２の階層に属する第３翻訳情報とを含む、
請求項８に記載のメモリシステムの制御方法。
【請求項１２】
論理位置情報と物理位置情報との対応関係を示す翻訳情報を管理することと、前記論理位置情報はデータに関連付けられる論理的な位置情報であり、前記物理位置情報は前記データが格納された不揮発性の第１メモリ内の位置を示す物理的な位置情報であり、前記翻訳情報は、第１翻訳情報を含み、
前記データを前記第１メモリが備える第１領域に書き込むことと、
前記第１領域内のデータが第１状態であるか第２状態であるかを記録した状態管理情報を管理することと、前記状態管理情報は、第１状態管理情報を含み、前記翻訳情報は、複数の階層に階層化され、前記第１翻訳情報は、第１の階層に属する第２翻訳情報と第２の階層に属する第３翻訳情報とを含み、前記第２翻訳情報のサイズと前記第３翻訳情報のサイズと前記第１状態管理情報のサイズとは等しい、
を含むメモリシステムの制御方法。
【請求項１３】
前記第１翻訳情報および前記第１状態管理情報を前記第１メモリが備える第２領域に記憶すること、
をさらに含む請求項１２に記載のメモリシステムの制御方法。
【請求項１４】
前記第２領域は複数のページを備え、各ページは前記第１メモリへの書き込み単位であり、
前記第１翻訳情報および前記第１状態管理情報を同じページに格納すること、
を含む請求項１３に記載のメモリシステムの制御方法。
【請求項１５】
前記第１翻訳情報および前記第１状態管理情報を前記第２領域から第２メモリに読み出すことと、
前記第２メモリに格納された前記第１翻訳情報および前記第１状態管理情報を使用することと、
使用後の前記第１翻訳情報および前記第１状態管理情報を前記第２領域に格納することと、
をさらに含む請求項１４に記載のメモリシステムの制御方法。
【請求項１６】
第１のデータを前記第１領域内の第１の位置に格納することと、
前記第１のデータと同一の論理位置情報が指定されたデータのうちの最新のデータである第２のデータを前記第１領域内の第２の位置に格納することと、
前記第１のデータの状態を前記第１状態として管理することと、
前記第２のデータの状態を前記第２状態として管理することと、
をさらに含む請求項１２に記載のメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムの制御方法に関する。
【背景技術】
【０００２】
従来、NAND型のフラッシュメモリを記憶媒体に用いたメモリシステムが知られている。メモリシステムに搭載される記憶媒体の容量は、増大する傾向にある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２１１２１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、利便性の高いメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、メモリシステムの制御方法は、論理位置情報と物理位置情報との対応関係を示す翻訳情報を管理することと、第１翻訳情報および第２翻訳情報を第１メモリが備える複数のページを備える第１領域に格納することであって、第１翻訳情報および第２翻訳情報を同じページに格納することと、を含む。論理位置情報はデータに関連付けられる論理的な位置情報である。物理位置情報はデータが格納された第１メモリ内の位置を示す物理的な位置情報である。翻訳情報は、複数の階層に階層化され、第１の階層に属する第１翻訳情報と第２の階層に属する第２翻訳情報とを含む。第１翻訳情報のサイズと第２翻訳情報のサイズとは等しい。各ページは前記第１メモリへの書き込み単位である。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態によるメモリシステムの構成の一例を示す図である。
【図２】図２は、第１の実施形態におけるNANDメモリでのデータの処理単位と位置の最小の管理単位とを模式的に示す図である。
【図３】図３は、メモリシステムに保持される各種情報を示す図である。
【図４】図４は、各種テーブルの構成の一例を説明する図である。
【図５】図５は、有効ビットマップを説明する図である。
【図６】図６は、ブロック管理情報を説明する図である。
【図７】図７は、第２テーブル、第３テーブル、および有効ビットマップの格納の様態の一例を示す図である。
【図８】図８は、キャッシュ管理情報の構成を示す図である。
【図９】図９は、第２の実施形態の制御部の構成を示す図である。
【図１０】図１０は、第２の実施形態のRAMの構成を示す図である。
【図１１】図１１は、第３の実施形態のRAMの構成を示す図である。
【図１２】図１２は、第４の実施形態のRAMの構成を示す図である。
【図１３】図１３は、各第１テーブルの格納の様態の変化を説明する図である。
【図１４】図１４は、各第１テーブルの格納の様態の変化を説明する図である。
【図１５】図１５は、各第１テーブルの格納の様態の変化を説明する図である。
【図１６】図１６は、各第１テーブルの格納の様態の変化を説明する図である。
【図１７】図１７は、各第１テーブルの格納の様態の変化を説明する図である。
【図１８】図１８は、各第１テーブルの格納の様態の変化を説明する図である。
【図１９】図１９は、各第１テーブルの格納の様態の変化を説明する図である。
【図２０】図２０は、第５の実施形態のログストレージ領域を示す図である。
【図２１】図２１は、メモリシステムの実装例を示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
図１は、第１の実施形態によるメモリシステムの構成の一例を示す図である。このメモリシステム１は、例えば、ＳＳＤ（Solid  State  Drive）である。以下では、不揮発性メモリとしてNAND型のフラッシュメモリ（以下、NANDメモリという）を用いる場合を例に挙げる。
【０００９】
メモリシステム１は、ホスト２と接続可能に構成されている。例えばCPU（Central  Processing  Unit）、パーソナルコンピュータ、携帯用情報機器、サーバ、等がホスト２に該当する。メモリシステム１とホスト２との間の通信のインタフェース規格としては、任意のインタフェース規格が採用可能である。２以上のホスト２がメモリシステム１に同時に接続されてもよい。ホスト２とメモリシステム１とは、ネットワークを介して接続されてもよい。
【００１０】
メモリシステム１は、ホスト２からのアクセスコマンドに応じてホスト２との間でデータの送受信を実行する。アクセスコマンドは、ライトコマンドおよびリードコマンドを含む。アクセスコマンドは、アクセス位置を論理的に示す位置情報を含む。論理的な位置情報としては、例えばＬＢＡ（Logical  Block  Address）が採用可能である。また、例えばメモリシステム１とホスト２との間の通信のインタフェース規格としてNVMeが採用される場合には、論理的な位置情報は、ネームスペースの識別情報とネームスペース内の位置を論理的に示すアドレス（例えばＬＢＡ）とが含まれていてもよい。ネームスペースとは、ネームスペースの識別情報によって特定される論理アドレス空間である。即ち、NVMeが採用される場合には、メモリシステム１は、複数の論理アドレス空間を管理することが可能である。以降、アクセスコマンドに含まれる論理的な位置情報を、論理アドレスと表記する。
【００１１】
メモリシステム１は、ホストインタフェース部１１、NANDメモリ１２、NANDコントローラ１３、RAM（Random  Access  Memory）１４、および制御部１５を備える。
【００１２】
制御部１５は、例えば、１以上のプロセッサを含んで構成される。制御部１５は、予めメモリシステム１内の所定の位置に格納されているプログラムを実行することによって、メモリシステム１の制御を実行する。プログラムの格納位置は任意に設計される。例えば、プログラムは、予めNANDメモリ１２に格納され、起動時にRAM１４にロードされる。制御部１５は、RAM１４にロードされたプログラムを実行する。メモリシステム１の制御は、複数の処理によって構成される。制御部１５が実行する複数の処理のうちの一部または全部はハードウェア回路によって実現されてもよい。また、制御部１５を、ハードウェア回路である制御回路（Control  Circuit）によって構成してもよい。制御部１５が実行する各処理については後述する。
【００１３】
ホストインタフェース部１１は、メモリシステム１がホスト２と通信を行うためのインタフェース装置である。例えばホストインタフェース部１１は、制御部１５の制御下で、ホスト２とRAM14との間のユーザデータの転送を実行する。
【００１４】
NANDコントローラ１３は、NANDメモリ１２に対するアクセスのためのインタフェース装置である。NANDコントローラ１３は、制御部１５による制御下で、RAM14とNANDメモリ１２との間のユーザデータまたは管理情報の転送を実行する。詳細を省略するが、NANDコントローラ１３は、誤り訂正処理行うことができる。
【００１５】
NANDメモリ１２は、ストレージとして機能する不揮発性の記憶媒体である。NANDメモリ１２は、１以上のチップによって構成される。
【００１６】
図２は、第１の実施形態におけるNANDメモリ１２でのデータの処理単位と位置の最小の管理単位とを模式的に示す図である。NANDメモリ１２を構成するチップの内部において、データの記憶領域は、複数のブロックによって構成される。各ブロックは、複数のページによって構成される。ページは、ライトおよびリードのアクセスが可能な単位である。ブロックは、一括してデータの消去が可能な最小単位である。図２の例では、１ブロックは、n（nは自然数）個のページで構成されるものとされている。
【００１７】
１ページより小さい単位に対して物理的な位置情報（物理アドレス）が割り当てられる。ここでは、物理アドレスが割り当てられる単位を、クラスタ、と表記する。１クラスタのサイズは、ホスト２からの最小のアクセス単位と等しくてもよいし異なっていてもよい。
【００１８】
RAM１４は、データを一時的に記憶するための記憶媒体である。RAM１４としては、例えば、NANDメモリ１２よりも高速な種類の記憶媒体が採用可能である。RAM１４としては、例えば、揮発性または不揮発性の記憶媒体が採用可能である。RAM１４としては、例えば、DRAM（Dynamic  RAM）、SRAM（Static  RAM）、FeRAM（Ferroelectric  RAM）、MRAM（Magnetoresistive  RAM）、PRAM（Phase  change  RAM）などが採用可能である。
【００１９】
図３は、メモリシステム１に保持される各種情報を示す図である。NANDメモリ１２には、緊急退避領域１２１、管理情報領域１２２、およびユーザデータ領域１２３が確保されている。管理情報領域１２２には、ログストレージ領域１２４が確保されている。
【００２０】
ユーザデータ領域１２３には、１以上のユーザデータ３０１が格納される。各ユーザデータ３０１は、ホスト２から書き込み要求されたデータである。各ユーザデータ３０１は、１クラスタのサイズと同じサイズを有することとする。
【００２１】
RAM１４には、ライトバッファ１４１、リードバッファ１４２、およびキャッシュ領域１４３が確保されている。
【００２２】
ライトバッファ１４１およびリードバッファ１４２は、ホスト２とNANDメモリ１２との間のデータ転送のためのバッファである。具体的には、ライトバッファ１４１は、ホストインタフェース部１１がホスト２から受信したユーザデータが格納される。ライトバッファ１４１に格納されたユーザデータは、NANDコントローラ１３によってユーザデータ領域１２３に書き込まれる。リードバッファ１４２は、NANDコントローラ１３によって、ユーザデータ領域１２３から読み出されたユーザデータ３０１が格納される。リードバッファ１４２に格納されたユーザデータ３０１は、ホストインタフェース部１１によってホスト２に転送される。
【００２３】
管理情報領域１２２は、メモリシステム１の管理のための情報（管理情報）を不揮発状態で記憶するための領域である。管理情報は、翻訳情報、有効情報、および統計情報２２５を含む。
【００２４】
翻訳情報は、論理アドレスと物理アドレスとを対応付けるための情報である。論理アドレスが翻訳情報によって物理アドレスに対応付けられているため、ホスト２は論理アドレスを用いることによって当該論理アドレスに対応する物理アドレスが示す位置に格納されているユーザデータ３０１を読み出すことができる。ユーザデータ領域１２３に格納されている複数のユーザデータ３０１の格納位置は、翻訳情報によって論理アドレスに対応付けられている何れかの物理アドレスによって示されるか、または翻訳情報によって論理アドレスに対応付けられている何れの物理アドレスによっても示されない。前者の物理アドレスによって示される位置に格納されているユーザデータ３０１は、ホスト２が読み出すことができる。後者の物理アドレスによって示される位置に格納されているユーザデータ３０１は、ホスト２が読み出すことができない。
【００２５】
制御部１５は、第１のユーザデータ３０１をユーザデータ領域１２３内の第１の位置に格納する。その後、当該第１のユーザデータ３０１の書き込みの際に指定された論理アドレスと同一の論理アドレスの指定とともに書き込み要求されたユーザデータ３０１がホスト２から書き込み要求されると、制御部１５は、当該書き込み要求されたユーザデータ３０１をユーザデータ領域１２３内における前記第１の位置と異なる位置に格納する。制御部１５は、第１のユーザデータ３０１の書き込みの際に指定された論理アドレスと同一の論理アドレスの指定とともに書き込み要求されたユーザデータ３０１のうちの最新のユーザデータ３０１である第２のユーザデータ３０１の状態を、有効な状態として管理する。また、制御部１５は、前記第１のユーザデータ３０１および当該第１のユーザデータ３０１の書き込みの際に指定された論理アドレスと同一の論理アドレスの指定とともに書き込み要求されたユーザデータ３０１のうちの、第２のユーザデータ３０１以外のユーザデータ３０１の状態を、無効な状態として管理する。なお、最新とは、同一の論理アドレスを指定した書き込み要求のうちの、最後の書き込み要求（但し後述するアトミックライトの書き込み要求を除く）によってホスト２から受信したことをいう。制御部１５は、論理アドレスを、第１のユーザデータ３０１ではなく第２のユーザデータ３０１の格納位置を示す物理アドレスに対応付ける。言い換えると、有効なユーザデータ３０１の格納位置を示す物理アドレスは、翻訳情報によって、ある論理アドレスに対応付けられている。また、無効なユーザデータ３０１の格納位置を示す物理アドレスは、翻訳情報によって何れの論理アドレスにも対応付けられていない。
【００２６】
近年、メモリシステム１の表記容量が増大するに応じて、翻訳情報のサイズが大きくなる傾向がある。表記容量とは、メモリシステム１が外部に提供する論理アドレス空間の合計サイズをいう。巨大なサイズの翻訳情報を管理するために、翻訳情報は、複数の階層に階層化される。複数の階層の翻訳情報の夫々は、記録された対応関係がカバーする論理アドレスの範囲のサイズが夫々異なる。上位の階層に属する翻訳情報に記録された対応関係がカバーする論理アドレスの範囲のサイズは、下位の階層に属する翻訳情報に記録された対応関係がカバーする論理アドレスの範囲のサイズよりも大きい。言い換えると、上位の階層に属する翻訳情報よりも下位の階層に属する翻訳情報の方が、記録されている対応関係の粒度が細かい。上位の階層に属する翻訳情報よりも下位の階層に属する翻訳情報の方がレコード数が大きくなるので、下位の階層に属する翻訳情報は、上位の階層に属する翻訳情報よりも細かく分割される。同一の階層に属する複数の翻訳情報は、記録されている対応関係がカバーする論理アドレスの範囲のサイズが等しい。
【００２７】
１つの階層に属する翻訳情報の格納位置は、前記１つの階層に属する翻訳情報よりも１つ上位の階層に属する翻訳情報によって示される。示されるとは、例えばポインタなどによってリンクされていることをいう。例えば、最も上位の階層に属する翻訳情報は、RAM１４に読み出され、RAM１４上で使用される。使用とは、参照または変更である。最も上位の階層を除く階層に属する翻訳情報は、適宜、NANDメモリ１２からRAM１４に読み出され、RAM１４上で使用される。NANDメモリ１２への書き込みの効率を良くするために、RAM１４に読み出す単位のサイズを小さくしたいという要望がある。また、最も上位の階層に属する翻訳情報を記憶するRAM１４内の領域のサイズを小さくしたいという要望がある。これらの要望に応えるために、翻訳情報は、３以上の階層に階層化される。第１の実施形態においては、一例として、翻訳情報は、３つの階層に階層化される。
【００２８】
管理情報領域１２２には、最も上位の階層に属する翻訳情報である第１テーブル２０１ａが格納される。管理情報領域１２２内のログストレージ領域１２４には、第２階層に属する翻訳情報である第２テーブル２０２ａおよび第３階層に属する翻訳情報である第３テーブル２０３ａが格納される。
【００２９】
図４は、各種テーブルの構成の一例を説明する図である。メモリシステム１の論理アドレス空間は、複数の部分空間（第１空間）に分割される。さらに、各第１空間は、複数の部分空間（第２空間）に分割される。各第２空間は、複数の第３空間に分割される。各第３空間のサイズは１クラスタのサイズと等しい。
【００３０】
１つの第３テーブル２０３ａは、１つの第２空間に含まれる第３空間毎にレコードを備える。１つの第２テーブル２０２ａを構成する各レコードは、論理アドレスと、その論理アドレスによって示されるユーザデータ３０１、が格納されている位置を示すアドレス情報（データアドレス）と、を対応付ける。データアドレスは、例えば、物理アドレスによって表記される。ある第３空間に対応するユーザデータ３０１がメモリシステム１内に格納されていない場合には、当該第３空間に対応するレコードには、例えば、ヌル値が記録される。
【００３１】
第１テーブル２０１ａは、第１空間毎にレコードを備える。第１テーブル２０１ａの各レコードは、第２テーブル２０２ａが格納されている位置を示す。第１テーブル２０１ａの各レコードにおいては、第２テーブル２０２ａが格納されている位置は、例えば、物理アドレスの形式で示される。
【００３２】
第２テーブル２０２ａは、第２空間毎にレコードを備える。第２テーブル２０２ａの各レコードは、第３テーブル２０３ａが格納されている位置を示す。第２テーブル２０２ａの各レコードにおいては、第３テーブル２０３ａが格納されている位置は、例えば、物理アドレスの形式で示される。
【００３３】
有効情報は、各ユーザデータ３０１が有効であるか無効であるかを記録した情報である。有効情報は、ここでは一例として、第１階層に属する有効情報であるブロック管理情報２１１ａと、第２階層に属する有効情報である有効ビットマップ２１２ａと、の２つの階層に階層化される。
【００３４】
図５は、有効ビットマップ２１２ａを説明する図である。有効ビットマップ２１２ａは、ユーザデータ３０１が有効であるか無効であるかを記述したフラグを集めたビットマップ情報である。１つのフラグに対応する範囲は任意に設計される。図５の例によれば、各有効ビットマップ２１２ａには、有効であるか無効であるかを示す１ビットのフラグがページ毎に記録される。各有効ビットマップ２１２ａは、物理アドレスが連続する複数のページの分のフラグが記録される。有効ビットマップ２１２ａは、ログストレージ領域１２４に格納される。
【００３５】
図６は、ブロック管理情報２１１ａを説明する図である。各有効ビットマップ２１２ａに記録される各フラグは、物理アドレスに対応付けられている。具体的には、ブロック管理情報２１１ａは、１つの有効ビットマップ２１２ａに記録されるフラグの数のページによって構成される物理アドレス空間ごとに、対応するブロック管理情報２１１ａが格納されている位置を示す。ブロック管理情報２１１ａは、管理情報領域１２２に格納される。
【００３６】
図７は、第２テーブル２０２ａ、第３テーブル２０３ａ、および有効ビットマップ２１２ａの格納の様態の一例を示す図である。第１の実施形態においては、１つの第２テーブル２０２ａのサイズと、１つの第３テーブル２０３ａのサイズと、が等しくなるように、第１空間のサイズおよび第２空間のサイズが決められている。また、第１の実施形態においては、１つの第２テーブル２０２ａのサイズと、１つの第３テーブル２０３ａのサイズと、１つの有効ビットマップ２１２ａのサイズと、が等しくなるように、１つの有効ビットマップ２１２ａに記録されるフラグの数が決められている。なお、１つの第２テーブル２０２ａのサイズとは、当該１つの第２テーブル２０２ａ自体のデータとしての大きさをいう。１つの第３テーブル２０３ａのサイズとは、当該１つの第３テーブル２０３ａ自体のデータとしての大きさをいう。１つの有効ビットマップ２１２ａのサイズとは、当該１つの有効ビットマップ２１２ａ自体のデータとしての大きさをいう。これにより、ログストレージ領域１２４は、第２テーブル２０２ａ、第３テーブル２０３ａ、および有効ビットマップ２１２ａを混ぜて格納することが可能である。
【００３７】
具体的には、１つのページに異なる複数の単位情報を格納することが可能である。単位情報とは、第２テーブル２０２ａ、第３テーブル２０３ａ、または有効ビットマップ２１２ａである。また、ページ当たりに記録される単位情報の数を常に一定にすることができる。また、各単位情報のサイズが等しいので、単位情報間の境界の位置の管理が容易である。単位情報の特定のために当該単位情報のサイズ情報を不要とすることができる。図７の例においては、１つのページに６つの単位情報が格納されている。
【００３８】
各単位情報は、使用時には、キャッシュ領域１４３に読み出される。言い換えると、各単位情報は、キャッシュ領域１４３にキャッシュされる。使用とは、参照または変更である。キャッシュ領域１４３に存在する第２テーブル２０２ａを、第２テーブル２０２ｂと表記する。キャッシュ領域１４３に存在する第３テーブル２０３ａを、第３テーブル２０３ｂと表記する。キャッシュ領域１４３に存在する有効ビットマップ２１２ａを、有効ビットマップ２１２ｂと表記する。
【００３９】
キャッシュ領域１４３にキャッシュされている単位情報は、制御部１５による変更によって、ログストレージ領域１２４に格納されている単位情報と異なる状態になる。ログストレージ領域１２４に格納されている単位情報と異なる、キャッシュ領域１４３にキャッシュされている単位情報の状態を、ダーティと表記する。ダーティな単位情報は、所定のタイミングでログストレージ領域１２４に書き戻される。ダーティな単位情報は、ログストレージ領域１２４に書き込まれることによって、非ダーティな状態に遷移する。
【００４０】
第１テーブル２０１ａは、RAM１４に読み出され、RAM１４上において使用される。RAM１４に読み出された第１テーブル２０１ａを、第１テーブル２０１ｂと表記する。ブロック管理情報２１１ａは、RAM１４に読み出され、RAM１４上において使用される。RAM１４に読み出されたブロック管理情報２１１ａを、ブロック管理情報２１１ｂと表記する。RAM１４に格納された第１テーブル２０１ｂおよびブロック管理情報２１１ｂは、夫々、制御部１５によって使用され、メモリシステム１の所定のタイミングで管理情報領域１２２にコピーされる。
【００４１】
RAM１４に格納されている第１テーブル２０１ｂの各レコードは、対応する第２テーブル２０２ｂがキャッシュ領域１４３にキャッシュされている場合には、当該対応する第２テーブル２０２ｂがキャッシュされている位置をさらに示す。また、キャッシュ領域１４３にキャッシュされている第２テーブル２０２ｂの各レコードは、対応する第３テーブル２０３ｂがキャッシュ領域１４３にキャッシュされている場合には、当該対応する第３テーブル２０３ｂがキャッシュされている位置をさらに示す。また、キャッシュ領域１４３にキャッシュされている第３テーブル２０３ｂの各レコードは、対応するユーザデータがライトバッファ１４１に格納されている場合には、ライトバッファ１４１において当該対応するユーザデータが格納されている位置を示す。
【００４２】
RAM１４内に格納されるブロック管理情報２１１ｂの各レコードは、対応する有効ビットマップ２１２ｂがキャッシュ領域１４３にキャッシュされている場合には、当該対応する有効ビットマップ２１２ｂがキャッシュされている位置をさらに示す。
【００４３】
ダーティな単位情報は、キャッシュ管理情報２２１によって管理される。
【００４４】
図８は、キャッシュ管理情報２２１の構成を示す図である。キャッシュ管理情報２２１は、キャッシュ領域１４３の管理のための情報である。キャッシュ管理情報２２１は例えばRAM１４に格納され、RAM１４上で使用される。キャッシュ管理情報２２１は、ユーザダーティ情報２２２、GCダーティ情報２２３、およびフリー情報２２４を備える。ユーザダーティ情報２２２は、ライトバッファ１４１からユーザデータ領域１２３へのユーザデータ３０１の書き込みに応じてダーティとなった第２テーブル２０２ｂおよび第３テーブル２０３ｂを示す情報である。ユーザダーティ情報２２２は、ライトバッファ１４１からユーザデータ領域１２３へのユーザデータ３０１の書き込みに応じてダーティとなった有効ビットマップ２１２ｂをさらに示すように構成されてもよい。GCダーティ情報２２３は、ガベージコレクションによってダーティとなった第２テーブル２０２ｂおよび第３テーブル２０３ｂを示す情報である。GCダーティ情報２２３は、ガベージコレクションによってダーティとなった有効ビットマップ２１２ｂをさらに示すように構成されてもよい。フリー情報２２４は、使用されていないキャッシュラインを示す情報である。なお、例えば１つのキャッシュラインには１つの単位情報がキャッシュされる。ユーザダーティ情報２２２およびGCダーティ情報２２３は、ダーティとなった順番が認識可能な状態でダーティな単位情報を示す。例えば、ユーザダーティ情報２２２およびGCダーティ情報２２３は、リンクトリストのデータ構造を備える。フリー情報２２４は、使用されていないキャッシュラインを使用されていない状態となった順番が認識可能な状態で示す。例えば、フリー情報２２４は、リンクトリストのデータ構造を備える。
【００４５】
なお、第１テーブル２０１ｂおよびブロック管理情報２１１ｂについても、ダーティ／非ダーティの管理が実行される。例えば、第１テーブル２０１ｂは、第１テーブル２０１ａと異なった場合にダーティとして扱われる。例えば、第１テーブル２０１ｂを構成する複数のレコードのうちの、第１テーブル２０１ａを構成する複数のレコードのうちの対応するレコード、と異なったレコード、がダーティとして管理されてもよい。また、例えば、ブロック管理情報２１１ｂは、ブロック管理情報２１１ａと異なった場合にダーティとして管理されてもよい。また、例えば、ブロック管理情報２１１ｂを構成する複数のレコードのうちのブロック管理情報２１１ａを構成する複数のレコードのうちの対応するレコードと異なったレコードのみがダーティとして管理されてもよい。第１テーブル２０１ｂは、例えば、ダーティとなったレコード数が所定数を超えた場合に、その時点の第１テーブル２０１ｂが管理情報領域１２２に第１テーブル２０１ａとして書き込まれる。ブロック管理情報２１１ｂは、例えば、ダーティとなったレコード数が所定数を超えた場合に、その時点のブロック管理情報２１１ｂが管理情報領域１２２にブロック管理情報２１１ａとして書き込まれる。第１テーブル２０１ｂおよびブロック管理情報２１１ｂの各レコードの状態は、管理情報領域１２２への書き込みに応じて、非ダーティに遷移する。
【００４６】
統計情報２２５は、動作状態を示す各種情報である。例えば、統計情報２２５は、NANDメモリ１２の使用状況、メモリシステム１の使用状況、パワーオン時間、電源断によるダーティな情報の喪失の発生回数、パワーロスプロテクション（PLP）の動作回数、正常な電源断の発生回数、などを含む。正常な電源断とは、ここでは、ダーティな情報の喪失が起こらなかった電源断をいう。PLPとは、外部からの電源供給が突然停止した場合に、制御部１５が、RAM１４内の少なくともダーティな翻訳情報を緊急退避領域１２１に格納する処理をいう。PLPにおいては、ライトバッファ１４１内のユーザデータも格納の対象である。PLPにおいては、制御部１５は、RAM１４内のメモリイメージを緊急退避領域１２１にそのままダンプしてもよい。PLPは、メモリシステム１に内蔵されるバッテリ（図示せず）に蓄えられた電力を用いて実行される。制御部１５は、統計情報２２５をRAM１４内に生成し、生成した統計情報２２５を定期的に管理情報領域１２２にダンプする。
【００４７】
ユーザデータ領域１２３には、制御部１５によって、ユーザデータ３０１の他に１以上のログ情報２３１が格納される。ログ情報２３１は、ユーザデータ３０１がユーザデータ領域１２３に書き込まれる際に当該ユーザデータ３０１と対応して記録される情報である。ログ情報２３１は、対応するユーザデータ３０１の位置を示す論理アドレスと、当該論理アドレスに当該対応するユーザデータ３０１の書き込みの前に対応づけられていた物理アドレス（旧物理アドレス）と、当該対応するユーザデータ３０１の書き込み先の位置を示す物理アドレス（新物理アドレス）と、が少なくとも記録されている。
【００４８】
次に、制御部１５が実行する各処理を説明する。
【００４９】
（１）基本動作
制御部１５が実行する処理は、大きく、起動時の処理、コマンド待機の処理、コマンド実行の処理、再起動待機の処理、に分類される。
【００５０】
（１−１）起動時の処理
制御部１５は、起動時においては、スケジューラとしての初期化操作を実行する。その後、制御部１５は、スケジューラに以下の処理（第１〜第３のスタートアップ処理）の何れかを登録する。制御部１５は、登録されたスタートアップ処理を、スケジューラの指示によって実行する。
【００５１】
（１−１−１）第１のスタートアップ処理
電源断によってダーティな単位情報が喪失された場合には、第１のスタートアップ処理が実行される。第１のスタートアップ処理は、翻訳情報を再構築する処理である。再構築とは、喪失されたダーティな単位情報を回復することを含む。再構築は、ログ情報２３１を書き込み順または書き込み順とは逆順に参照することによって実行可能である。
【００５２】
（１−１−２）第２のスタートアップ処理
直前の電源断においてPLPなどによって緊急退避領域１２１に各種情報が格納された場合には、第２のスタートアップ処理が実行される。第２のスタートアップ処理は、緊急退避領域１２１に格納された各種情報を用いて、RAM１４のメモリイメージを復元する処理である。
【００５３】
（１−１−３）第３のスタートアップ処理
全てのダーティな単位情報が管理情報領域１２２に正常に書き込み完了することによって非ダーティな状態に電源断時において遷移した場合には、第３のスタートアップ処理が実行される。第３のスタートアップ処理は、第１テーブル２０１ａをRAM１４に第１テーブル２０１ｂとして読み出す処理である。
【００５４】
（１−２）コマンド待機の処理
制御部１５は、割り込みハンドラとしての処理を実行する。ホスト２からのコマンドに応じて割り込みハンドラは対応する処理をスケジューラに登録する。コマンドは、対応する処理をスケジューラが実行することによって伝達される。また、メモリシステム１内部の割り込みハンドラが、対応する処理をスケジューラに登録することによってもコマンド実行が開始される。実行可能なコマンドがなければ、制御部１５は、メモリシステム１の状態をスリープの状態に移行せしめてもよい。なお、メモリシステム１がスリープの状態であっても、制御部１５は、タイマ割り込みの実行を行ってもよい。制御部１５は、タイマ割り込みによって、メモリシステム１の状態をスリープの状態から通常の状態に遷移せしめる。
【００５５】
（１−３）コマンド実行の処理
（１−３−１）ホストコマンドキュー処理
ホストコマンドキュー処理は、例えば、割り込みハンドラとして制御部１５に実装される。ホスト２からのコマンドは、割り込みによって通知される。ホストコマンドキュー処理は、ホスト２からのコマンドを解析する処理と、当該コマンドを発行待ちコマンドキュー（図示せず）に登録する処理を含む。発行待ちコマンドキューは、例えばリング型のキューである。ホストコマンドキュー処理においては、制御部１５は、発行待ちコマンドキューに対しては、登録のみを実行することができる。発行待ちコマンドキュー内の発行待ち状態のコマンドの数は、登録側の位置情報と発行側の位置情報との比較によって算出可能である。ホストコマンドキュー処理においては、発行待ち状態のコマンドの数が所定のしきい値を超えている場合には、制御部１５は、ホスト２からのコマンドの受け付けを停止する。ホストコマンドキュー処理においては、ホスト２からのコマンドの受け付けの停止中にホスト２からコマンドの登録が要求された場合には、制御部１５は、ホスト２に対して受け付け拒絶を通知する。ホスト２は、受け付け拒絶の通知を受信した場合には、所定時間の経過後、コマンドの登録を再要求する。制御部１５は、再要求時においてコマンドの受け付けの停止中でない場合には、ホストコマンドキュー処理において当該コマンドを受け付ける。発行待ちコマンドキュー内の発行待ち状態のコマンドの数と前記所定のしきい値との差分は、受け付け可能なコマンドの数を示す。制御部１５は、ホストコマンドキュー処理において、受け付け可能なコマンドの数をステータス情報としてホスト２に送信してもよい。受け付け拒絶の通知および受け付け可能なコマンド数の通知の何れを使用するかは、ホスト２との取り決めによって設定される。ホストコマンドキュー処理において、制御部１５は、ホストコマンド発行処理をスケジューラの実行待ちキュー（図示せず）に登録し、ホストコマンドキュー処理を終了する。登録されたコマンドは、夫々、実行状態（未実行状態、実行中状態、終了待機状態）を示す情報とともに管理される。
【００５６】
（１−３−２）ホストコマンド発行処理
ホスト２からのコマンドの受け付け後、コマンドの終了時またはタイマ割り込みなどによってホストコマンド発行処理の実行要求がスケジューラに登録される。ホストコマンド発行処理においては、制御部１５は、スケジューラに実行要求が登録されたコマンドの状態を実行中状態に遷移させる。また、例えばデータの転送が終了した場合などコマンドの実行が終了すると、制御部１５は、コマンドの状態を終了待機状態に遷移させる。その後、ホスト２からの実行終了確認の受領に応じて、制御部１５は、コマンドを発行待ちコマンドキューから削除する。制御部１５は、未実行状態のコマンドの実行を開始する。
【００５７】
（１−３−３）リード処理
リード処理は、コマンドを解析する処理、翻訳情報にアクセスする処理、NANDメモリ１２からユーザデータ３０１を読み出す処理、NANDメモリ１２から読み出されたユーザデータ３０１をリードバッファ１４２に格納する処理、リードバッファ１４２に格納されたユーザデータ３０１をホスト２に送信する処理、およびコマンド実行終了をホスト２に通知する処理、を含む。リード処理においては、制御部１５は、ホスト２がコマンド実行終了を確認した後、ホストコマンド発行処理にコマンドの終了を通知する。
【００５８】
（１−３−４）ライト処理
ライト処理は、コマンドを解析する処理、コマンド実行をホスト２に通知する処理、ライトバッファ１４１にホスト２からのユーザデータを格納する処理、ライトバッファ１４１へのユーザデータの格納に応じて翻訳情報を更新する処理、およびコマンド実行終了をホスト２に通知する処理、を含む。ライトコマンドにFUAモードの指定が含まれている場合には、ライト処理において、制御部１５は、ライトバッファ１４１に格納されたユーザデータをNANDメモリ１２に格納する処理と、NANDメモリ１２へのユーザデータの格納に応じて翻訳情報を更新する処理とをさらに実行する。ライト処理においては、制御部１５は、ホスト２がコマンド実行終了を確認した後、ホストコマンド発行処理にコマンドの終了を通知する。
【００５９】
（１−３−５）キャッシュフラッシュ（Cache  Flush）処理
キャッシュフラッシュ処理は、ライトバッファ１４１のフラッシュと、翻訳情報のダーティな部分のフラッシュとを実行する処理である。キャッシュフラッシュが通知されると、キャッシュフラッシュ処理において、制御部１５は、次のライトコマンドの発行を、ライトバッファ１４１への書き込み実行フラグを立て終わるまで停止する。書き込み実行フラグは、ライトバッファ１４１に格納されているユーザデータがNANDメモリ１２に書き込まれたか否かを示すフラグ情報である。書き込み実行フラグが立てられた状態は、対応するユーザデータがNANDメモリ１２に書き込み済みであることを示す。なお、NVMeが採用される場合には、制御部１５は、キャッシュフラッシュ処理をネームスペース毎に独立に実行してもよい。
【００６０】
（１−３−６）トリム（Trim）処理
トリム処理は、指定された論理アドレスについて、当該論理アドレスと物理アドレスとの対応関係を解消する処理である。トリム処理において、制御部１５は、新規のライトコマンドおよび新規のリードコマンドの発行を停止し、翻訳情報に含まれる対応するレコードを無効化する。NVMeが採用される場合には、トリムコマンドは、たとえばネームスペースを指定可能に構成されてもよい。制御部１５は、トリム処理において、指定されたネームスペースに対するライトコマンドおよびリードコマンドの発行を停止する。
【００６１】
（１−３−７）緊急退避（Evacuate）処理
緊急退避処理は、発行待ちのコマンドおよび実行中の全てのアクセスコマンドを破棄する処理と、ライトバッファ１４１内のユーザデータおよび翻訳情報のうちの全てのダーティな部分を緊急退避領域１２１に格納する処理とを含む。緊急退避処理において上記情報の格納に成功した場合には、制御部１５は、Unexpected  Shutdownフラグを下ろす。緊急退避処理において上記情報の格納に失敗した場合には、制御部１５は、Unexpected  Shutdownフラグを下ろさない。Unexpected  Shutdownフラグは、例えば、NANDメモリ１２の管理情報領域１２２に記録される。次回の起動時においては、第１のスタートアップ処理を実行するか否かが、Unexpected  Shutdownフラグに基づいて判定される。緊急退避が通知されると、再起動以外の全てのコマンドの新規受付が停止される。緊急退避は、電源から通知される。
【００６２】
（１−３−８）スリープ処理
スリープ処理は、発行待ちの全てのコマンドと実行中のアクセスコマンドの実行終了後、ライトバッファ１４１内のユーザデータおよび翻訳情報のうちの全てのダーティな部分を緊急退避領域１２１に格納する処理である。スリープ処理において上記情報の格納に成功した場合には、制御部１５は、Unexpected  Shutdownフラグを下ろす。スリープ処理において上記情報の格納に失敗した場合には、制御部１５は、Unexpected  Shutdownフラグを下ろさない。スリープが通知されると、復帰コマンド以外の全てのコマンドの新規受付が停止される。スリープは、ホスト２から通知される。
【００６３】
（１−３−９）シャットダウン処理
シャットダウン処理は、発行待ちの全てのコマンドの実行が終了後、キャッシュフラッシュ処理を実行する処理である。シャットダウンが通知されると、再起動以外の全てのコマンドの新規受付が停止される。シャットダウンは、ホスト２から通知される。フラッシュに成功した場合には、制御部１５は、Unexpected  Shutdownフラグを下ろす。フラッシュに失敗した場合には、制御部１５は、Unexpected  Shutdownフラグを下ろさない。
【００６４】
（１−４）再起動待機の処理
再起動待機の処理とは、緊急退避処理またはシャットダウン処理が終了した後の状態をいう。再起動待機処理においては、制御部１５は、再起動コマンドのみを受け付ける。
【００６５】
（２）翻訳情報の復元処理
翻訳情報の復元処理は、第１テーブル２０１ｂを復元する処理である。翻訳情報の復元処理の実行中においては、制御部１５は、アクセスコマンドを受け付けない。Signature応答およびIdentifyに対する応答は、許可される。翻訳情報の復元処理においては、「時刻」とは、システムトータルの書き換え回数で代用される。書き換え回数とは、ブロック毎の書き込みおよび消去の回数である。翻訳情報の復元処理においては、制御部１５は、第１テーブル２０１ｂのレコードのうちの最新のレコードを復元する。制御部１５は、ログストレージ領域１２４に記録されている単位情報のうち、対応する第１テーブル２０１ａのレコードよりも時刻が新しいものを復元する。第１のスタートアップ処理内において翻訳情報の復元処理が実行される場合には、次の処理が実行される。
【００６６】
即ち、制御部１５は、ユーザデータ３０１が格納されているブロックのうちの、復元された翻訳情報よりも時刻が新しいブロックについて、翻訳情報の対応するレコードを復元する。制御部１５は、ログ情報２３１に基づいて翻訳情報の対応するレコードを復元する。復元された翻訳情報よりも時刻が古いブロックについては、制御部１５は、翻訳情報の対応するレコードを復元しない。復元されたレコードは、ダーティとして管理される。
【００６７】
翻訳情報の復元後、翻訳情報のダーティな部分はフラッシュされてもよいし、フラッシュされなくてもよい。翻訳情報の復元後に、翻訳情報のダーティな部分はフラッシュされるか否かは、外部から設定可能であってもよい。
【００６８】
（３）電源遮断処理
電源遮断処理には、正常処理とPLPとが存在する。
【００６９】
（３−１）正常処理
正常処理は、ライトバッファ１４１内のユーザデータのフラッシュ、各種ダーティな情報のフラッシュ、および統計情報２２５のフラッシュを含む。制御部１５は、正常処理の終了後、Unexpected  Shutdownフラグを下ろす。
【００７０】
（３−２）PLP
PLPは、ライトバッファ１４１内のユーザデータおよび各種ダーティな情報を緊急退避領域１２１に格納する処理を含む。制御部１５は、PLPの終了後、Unexpected  Shutdownフラグを下ろし、PLPフラグを立てる。PLPフラグは、PLPによってメモリシステム１が終了されたことを示すフラグであり、例えば管理情報領域１２２に記録される。統計情報２２５は、上記の情報の格納が完了した後に緊急退避領域１２１に格納される。PLPにおいては、統計情報２２５の保持は保証されなくてもよい。
【００７１】
（４）ライト処理の動作
ライト処理とは、ホスト２からのコマンドに応じた書き込みをいう。ライト処理としては、キャッシュを用いたライト、FUAライト、アトミックライト、トリム処理、の４種類の種類がある。キャッシュを用いたライトは、４種類のライト処理の中で最も処理が早く終了する。キャッシュを用いたライトとは、ライトバッファ１４１にユーザデータが格納された時点で終了するライト処理である。FUAライトとは、NANDメモリ１２へのユーザデータの書き込みまで終えた時点で終了するライト処理である。FUAライトの実行中においては、翻訳情報の更新が完了するまで、NANDメモリ１２に書き込まれたユーザデータ３０１を読み出すことができない。FUAライトの実行中において翻訳情報の更新が完了するまでの間、該当のユーザデータ３０１の読み出しを要する場合には、制御部１５は、ライトバッファ１４１からユーザデータを読み出す。アトミックライトは、複数のライトコマンドによって書き込み要求された全てのユーザデータの書き込みが完了した後に、翻訳情報の更新を行う書き込みである。アトミックライトによれば、複数のライトコマンドによって書き込み要求された全てのユーザデータの書き込みが完了するまで、各ユーザデータの読み出しはできない。トリム処理は、ライト処理のうちの１つとして扱われる。
【００７２】
ライト処理に付帯するコマンドとして、キャッシュフラッシュコマンドが存在する。キャッシュフラッシュコマンドは、キャッシュフラッシュ処理を実行させるためのコマンドである。キャッシュフラッシュ処理においては、制御部１５は、ライトバッファ１４１内のユーザデータをNANDメモリ１２に書き込み、翻訳情報の更新を行う。キャッシュフラッシュ処理は、メモリシステム１全体を対象として実行されることが可能である。また、キャッシュフラッシュ処理は、ネームスペースまたはストリームを限定して実行されるように、メモリシステム１が構成されてもよい。PLPが実行可能なメモリシステム１においては、キャッシュフラッシュコマンドを無視することができるように設定可能にメモリシステム１が構成されてもよい。
【００７３】
（４−１）ライトバッファ処理
ライトバッファ１４１は、ダブルバッファの構成を備えた、FIFOのルールでデータの入出力がなされるバッファである。ライトバッファ１４１は、所定のサイズの領域毎に書き込み実行フラグを備える。
【００７４】
制御部１５は、キャッシュを用いたライトまたはアトミックライトの場合、所定の量だけライトバッファ１４１に蓄積されるに応じてライトバッファ１４１内のユーザデータをNANDメモリ１２にページ単位でコピーする。FUAライトの場合、制御部１５は、ライトバッファ１４１にユーザデータが書き込まれた後にすぐに当該ユーザデータをNANDメモリ１２にページ単位でコピーする。トリム処理の場合は、制御部１５は、トリムの通知そのものをライトバッファ１４１に書き込み、当該トリムの通知をライトバッファ１４１からNANDメモリ１２（NANDメモリ１２のユーザデータ領域１２３）にコピーする。コピーの後、制御部１５は、コピー元の領域に書き込み実行フラグを立てる。制御部１５は、書き込み実行フラグが立てられた領域を、空き領域として扱うことができる。
【００７５】
NANDメモリ１２へのコピーの間、ライトバッファ処理は、コピー元の領域の管理権を有さない。即ち、ライトバッファ処理において、制御部１５はコピー元の領域に対する書き込みはできない。コピー元の領域以外の領域については、既にライトバッファ１４１に格納されているユーザデータと同じ論理アドレスを指定して別のユーザデータが送られてきた場合（再書き込み）、ライトバッファ処理において、制御部１５は当該別のユーザデータを既にライトバッファ１４１に格納されているユーザデータに上書きする。
【００７６】
ライトバッファ処理において、制御部１５は、ライトバッファ１４１に空き領域があるかぎり、ホスト２から送られてきたユーザデータを任意のタイミングでライトバッファ１４１に格納することができる。再書き込みの場合を除き、制御部１５は、ライトバッファ１４１にユーザデータを格納するに応じて翻訳情報を更新する。具体的には、ライトバッファ１４１内の格納位置の物理アドレスを、ユーザデータの位置を示す論理アドレスに対応付ける。制御部１５は、翻訳情報の更新を、RAM１４上で実行する。対応する単位情報がキャッシュ領域１４３に存在しない場合には、制御部１５は、対応する単位情報をログストレージ領域１２４からキャッシュ領域１４３に読み出した後、当該単位情報を更新する。単位情報の更新後、制御部１５は、更新された単位情報および更新された単位情報を指す上位層の単位情報をダーティに設定する。
【００７７】
キャッシュフラッシュコマンドの受信時、FUAライトの実行時、FUAリードにおいて対象の翻訳情報が未書き込み状態でかつライトバッファ１４１にデータが存在する時、および予め設定された時間以上の時間のアイドル時間が検出された時、制御部１５は、ライトバッファ１４１からNANDメモリ１２へのコピーを実行する。FUAライトの場合、例えば制御部１５は、FUAライトのライトコマンドによって書き込まれたユーザデータのみをライトバッファ１４１からNANDメモリ１２にコピーする。制御部１５は、NANDメモリ１２への書き込みの対象のユーザデータをNANDメモリ１２にコピーする際に書き込み先のページに空き領域がある場合には、書き込みの対象のユーザデータとともにNANDメモリ１２への書き込みの対象にまだ設定されていないユーザデータをコピーしてもよい。
【００７８】
（４−２）書き込み先のブロックを選択する処理
制御部１５は、１以上のフリーブロックのうちから、書き換え回数が出来るだけ少ないフリーブロックを、書き込み先のブロックとして選択する。フリーブロックとは、有効なユーザデータ３０１が格納されていないブロックをいう。フリーブロックは、ガベージコレクションにより生成される。制御部１５は、２以上のフリーブロックから所定数のフリーブロックを候補としてランダムに選択し、選択された候補のうちの書き換え回数が最も少ないフリーブロックを書き込み先のブロックとして選択してもよい。フリーブロックは、例えば、生成された順番がわかるようにリスト形式（フリーブロックリスト）で管理される。制御部１５は、最も古く生成された所定数のフリーブロックまたは最も新しく生成された所定数のフリーブロックを候補として選択してもよい。書き込み先のブロックとして選択されたフリーブロックは、消去後、書き込み先に設定される。消去に際しては、制御部１５は、メモリシステム１内においてユニークなシーケンス番号をブロックに割り当てる。シーケンス番号は、消去が実行された順番を示す番号である。制御部１５は、１つのブロックの最後のページに情報を書き込む際に、そのブロックのシーケンス番号を記録する。
【００７９】
（４−３）NANDメモリ１２への書き込み
ユーザデータをライトバッファ１４１からNANDメモリ１２に書き込む際、制御部１５は、コピー元の領域をロックする。また、コピー先のページに空き領域がある場合には、制御部１５は、例えば、リードモディファイライトの要領で、NANDメモリ１２からデータを読み出して当該読み出したデータを書き込み対象のユーザデータと結合してコピー先のページに書き込む。NANDメモリ１２へのユーザデータの書き込みの終了後、その書き込みがキャッシュを用いたライトまたはFUAライトに伴う処理である場合には、制御部１５は、翻訳情報の更新要求（以降、単に更新要求）を発行する。更新要求は、論理アドレス、ライトバッファ１４１内のコピー元を示すアドレス、旧物理アドレス、新物理アドレス、およびデータのサイズを含む。トリム処理に関しては、制御部１５は、トリムコマンドに基づき、無効化の対象の論理アドレス範囲を含む更新要求を発行する。
【００８０】
（４−４）アトミックライト
アトミックライトにおいては、制御部１５は、アトミックライトの開始と終了とをユーザデータ領域１２３に書き込む。アトミックライトの動作としては２通りの動作が考えられる。
【００８１】
（４−４−１）第１のアトミックライト
制御部１５は、アトミックライトの最後の書き込みを確認するまで更新要求をキューイングする。アトミックライトの最後の書き込みを確認した後、制御部１５は、キューイングしておいた更新要求を発行する。アトミックライトに応じた翻訳情報の更新中には、制御部１５は、アトミックライトの対象となった論理アドレス範囲に対する読み出しを停止する。アトミックライトに対応できる領域の大きさは、メモリシステム１の余裕容量と更新要求をキューイングできる量とで決定される。第１のアトミックライトによれば、ネストが可能である。
【００８２】
（４−４−２）第２のアトミックライト
制御部１５は、更新要求を発行する。制御部１５は、更新要求がなされた単位情報をキャッシュ領域１４３において複製する。制御部１５は、アトミックライトの実行中には、単位情報の複製を更新する。アトミックライトの最後の書き込みを確認した後、制御部１５は、単位情報の複製を複製元の単位情報に反映させる。読み出し動作またはアトミックライトでない書き込み動作の際には、制御部１５は、複製元の単位情報を使用する。反映は、次のように実行される。即ち、制御部１５は、単位情報の複製のうちの非ダーティの部分について、複製元の単位情報から単位情報の複製に上書きする。そして、制御部１５は、単位情報の複製を示すように、上位の翻訳情報に記録されたテーブルアドレスを更新する。第２のアトミックライトに対応できる領域の大きさは、キャッシュ領域１４３において単位情報の複製を格納可能な量とメモリシステム１の余裕容量とで決定される。第２のアトミックライトによれば、複数の更新要求を逐次実行する必要がある第１のアトミックライトに比べ、翻訳情報の更新を早く完了することができる。即ち、読み出しを停止する期間を短くすることができる。なお、複数のアトミックライトが実行される場合には、制御部１５は、アトミックライト毎に単位情報の複製を生成する。
【００８３】
（４−５）翻訳情報の更新処理
制御部１５は、更新要求を受け付けると、翻訳情報の更新のタイミングを調べる。制御部１５は、翻訳情報を更新できるタイミングに至るまで、更新要求をキューイングする。制御部１５は、例えば、更新要求をストリーム毎にキューイングしてもよい。翻訳情報の更新の後、制御部１５は、ライトバッファ１４１の解放を行う。
【００８４】
（４−６）トリム処理
トリム処理においては、制御部１５は、受信したトリムコマンドをユーザデータ領域１２３に記録する。ユーザデータ領域１２３に書き込まれる最小の単位は、複数のトリムコマンドを収容可能である。制御部１５は、トリムコマンドの記録の後、翻訳情報を更新し、対応する有効情報を更新する。単位情報のうちの全てのレコードが無効化される場合には、制御部１５は、当該全てのレコードが無効化される単位情報を示す上位の翻訳情報のレコードを無効化する。
【００８５】
（５）ガベージコレクション
ガベージコレクションは、１つのブロックに含まれる有効なユーザデータ３０１を他のブロックにコピーし、その後、前記１つのブロックに格納された全ユーザデータ３０１を無効化する処理をいう。内部に記憶する全てのユーザデータ３０１がガベージコレクションによって無効化されたブロックは、フリーブロックとして管理される。
【００８６】
（５−１）ガベージコレクションの対象のブロックの選択
制御部１５は、有効なユーザデータ３０１を記憶する１以上のブロックからガベージコレクションの対象のブロックを選択する。ガベージコレクションの対象のブロックを、GCブロックと表記する。GCブロックの選択方法は、遅延時間および書き込み倍率（Write  Amplification）に影響する。制御部１５は、例えば次の方法でGCブロックを選択する。
【００８７】
例えば、制御部１５は、記憶している無効なユーザデータ３０１の数が最も大きいブロックをGCブロックとして選択する。この選択方法によれば、書き込み倍率を低減することができる。制御部１５は、フリーブロックの枯渇が近くなった時に本選択方法でGCブロックを選択するように構成されてもよい。
【００８８】
例えば、制御部１５は、記憶している無効なユーザデータ３０１の数が所定のしきい値を超えているブロックのうちからGCブロックを選択する。制御部１５は、フリーブロックの枯渇が近くなった時に本選択方法でGCブロックを選択するように構成されてもよい。制御部１５は、フリーブロックの数に応じてしきい値を変更してもよい。
【００８９】
例えば、制御部１５は、書き換えられてからの経過時間が大きいブロックと書き換えられてからの経過時間が小さいブロックとを分類し、書き換えられてからの経過時間が大きいブロックのうち、無効なユーザデータ３０１が格納されているブロックをGCブロックとして選択する。制御部１５は、アイドル時間中に本選択方法でGCブロックを選択するように構成されてもよい。
【００９０】
（５−２）GC比の決定
制御部１５は、GCブロックを選択した後、GC比を更新する。GC比は、ユーザデータのNANDメモリ１２への書き込み量に対するガベージコレクションによるコピー量の比の設定値である。制御部１５は、ブロック内の有効なユーザデータ３０１の数をブロック内の無効なユーザデータ３０１の数で除算して得られる数値を、GC比に設定する。以降、制御部１５は、ユーザデータのNANDメモリ１２への書き込みとガベージコレクションによるコピーとの進行に応じて、GC比を随時更新する。
【００９１】
（５−３）コピー先のブロックの確保
制御部１５は、フリーブロックのうち書き換え回数ができるだけ少ないブロックをコピー先のブロックとして選択する。例えば、制御部１５は、２以上のフリーブロックから所定数のフリーブロックを候補としてランダムに選択し、選択された候補のうちの書き換え回数が最も少ないフリーブロックをコピー先のブロックとして選択してもよい。フリーブロックは、例えば、生成された順番がわかるようにリスト形式で管理される。制御部１５は、最も古く生成された所定数のフリーブロックまたは最も新しく生成された所定数のフリーブロックを候補として選択してもよい。制御部１５は、選択されたコピー先のブロックに、シーケンス番号をブロックに割り当てる。
【００９２】
（５−４）有効なユーザデータ３０１のコピー
制御部１５は、有効情報に基づいて有効なユーザデータ３０１を特定する。制御部１５は、特定された有効なユーザデータ３０１をコピー先のブロックにコピーするためのコピーコマンドを生成する。コピーコマンドは、論理アドレスとコピー元のユーザデータ３０１の位置を示す物理アドレスとを含む。制御部１５は、コピーコマンドの実行の前に、コピー先の位置を示す物理アドレスを演算する。制御部１５は、コピー先のブロックの先頭から順番にコピーによってユーザデータが格納されるように、コピー先の位置を示す物理アドレスを演算する。制御部１５は、GC比に基づいてコピーコマンドの実行タイミングを調整する。制御部１５は、コピーコマンドの実行を、コピーコマンドの生成よりも優先して実行する。制御部１５は、コピーの後、GC比を更新する。制御部１５は、当初の有効なユーザデータ３０１の数からコピー済みのユーザデータ３０１の数を減算して得られる値を、当初の無効なユーザデータ３０１の数からユーザデータの書き込み数を減算して得られる値で除算することによって、新しいGC比を演算する。
【００９３】
（５−５）翻訳情報および有効情報の更新
コピー後に、制御部１５は、翻訳情報および有効情報を更新する。制御部１５は、例えば、GCブロックに格納された全ての有効なユーザデータ３０１のコピーが完了した後に、翻訳情報および有効情報の更新を開始する。ガベージコレクションに伴う翻訳情報および有効情報の実行の優先度は、NANDメモリ１２に対するアクセスを行う処理の実行の優先度よりも低く設定される。
【００９４】
例えば、コピー後、制御部１５は、まず、コピー先のブロックにかかる有効情報を更新する。具体的には、制御部１５は、コピー先のブロックにコピーされた全てのユーザデータ３０１が有効であるとして有効情報を更新する。続いて、制御部１５は、翻訳情報がユーザデータ３０１のコピー元の位置を示していることを確認する。コピーが完了するまでの間に、ライトコマンドによるユーザデータの書き込みによって翻訳情報が更新される場合があるからである。翻訳情報がユーザデータ３０１のコピー元の位置を示している場合、制御部１５は、ユーザデータ３０１のコピー元の位置をコピー先の位置を示すように翻訳情報を更新する。制御部１５は、翻訳情報の更新よって単位情報の状態が非ダーティからダーティに遷移した場合、GCダーティ情報２２３を更新する。翻訳情報がユーザデータ３０１のコピー元の位置を示していない場合、制御部１５は、翻訳情報の更新を行わず、該当するユーザデータ３０１を無効としてコピー先のブロックにかかる有効情報を更新する。制御部１５は、コピーされた全てのユーザデータ３０１について翻訳情報および有効情報の更新を行った後、コピー元のブロックの有効情報を、全てのユーザデータ３０１が無効であるとして更新する。
【００９５】
制御部１５は、有効情報を監視する。制御部１５は、全てのユーザデータ３０１が無効として記録されたブロックがある場合には、そのブロックをフリーブロックとして管理する。具体的には、制御部１５は、全てのユーザデータ３０１が無効として記録されたブロックを、フリーブロックリストに追加する。ブロックが追加される位置は、フリーブロックリストの末尾でなくてもよい。例えば、制御部１５は、フリーブロックリストの末尾に記録されたブロックと追加対象のブロックとの間で書き換え回数を比較する。フリーブロックリストの末尾に記録されたブロックの書き換え回数が追加対象のブロックの書き換え回数よりも多い場合、制御部１５は、追加対象のブロックをフリーブロックリストの末尾に記録されたブロックの１つ前の位置に追加する。フリーブロックリストの末尾に記録されたブロックの書き換え回数が追加対象のブロックの書き換え回数よりも少ない場合、制御部１５は、追加対象のブロックをフリーブロックリストの末尾に記録されたブロックの後の位置に追加する。書き換え回数に基づく完全なソートをおこなわないのは、消去の実行間隔を延ばすことによってNANDメモリ１２の寿命を延命するためである。
【００９６】
（６）リード処理
リード処理には、キャッシュを用いたリードと、FUAリードとがある。リードの種類は、リードコマンドによって指定可能である。FUAリードは、リードコマンドによって指定された範囲の論理アドレスがキャッシュに残っている場合にはフラッシュし、その後、NANDメモリ１２のページバッファキャッシュの無効化要求を発行し、その後、キャッシュを用いたリードを実行する読み出しである。フラッシュの際にライトバッファ１４１にデータが存在する場合には、制御部１５は、ライトバッファ１４１のフラッシュを実行する。キャッシュを用いたリードは、ライトコマンドによって指定された範囲の論理アドレスの翻訳と、NANDコントローラ１３への読み出し要求の送信と、NANDコントローラ１３から送られてきたユーザデータ３０１のリードバッファ１４２への格納と、リードバッファ１４２に格納されたユーザデータ３０１のホストへの送信と、を含む。
【００９７】
（６−１）リードキャッシュ
リードキャッシュとしては、ページバッファキャッシュと、リードバッファ１４２と、の２種類が存在する。ページバッファキャッシュは、NANDメモリ１２を構成するチップの内部に具備される。NANDコントローラ１３は、連続して同じ物理アドレスからユーザデータ３０１を読み出す際には、NANDメモリ１２にリードコマンドを送信せず、ページバッファキャッシュに格納されているユーザデータ３０１を読み出す。リードバッファ１４２は、FIFOのルールに従ってデータが入出力される。
【００９８】
（７）キャッシュ領域１４３内のキャッシュラインの置換
（７−１）第１の置換
制御部１５は、ライト処理またはリード処理の際にキャッシュラインを空ける場合、ガベージコレクションによってダーティとなったキャッシュラインを優先的に空ける。具体的には、制御部１５は、まず、GCダーティ情報２２３を参照する。そして、制御部１５は、GCダーティ情報２２３が示す単位情報のうちの最も古い単位情報を、ログストレージ領域１２４に書き戻し、キャッシュ領域１４３から削除する。ガベージコレクションによってダーティとなった単位情報が存在しない場合には、制御部１５は、キャッシュ領域１４３にキャッシュされている単位情報をランダムに選択する。制御部１５は、乱数を発生させ、発生させた乱数を用いることによって単位情報を選択する。制御部１５は、選択された単位情報がダーティであるか否かを、ユーザダーティ情報２２２を参照することによって判定する。選択された単位情報がダーティでない場合、制御部１５は、選択された単位情報をキャッシュ領域１４３から削除する。選択された単位情報がダーティである場合、制御部１５は、ユーザダーティ情報２２２が示す単位情報のうちの最も古い単位情報を、ログストレージ領域１２４に書き戻し、キャッシュ領域１４３から削除する。
【００９９】
（７−２）第２の置換
ガベージコレクションを行うためにキャッシュラインを空ける場合、制御部１５は、次のようにキャッシュラインを置換する。即ち、制御部１５は、GCダーティ情報２２３が示す単位情報の数に上限値を設定する。GCダーティ情報２２３が示す単位情報の数が上限値に達している場合には、制御部１５は、GCダーティ情報２２３が示す単位情報のうちの最も古い単位情報を、ログストレージ領域１２４に書き戻し、キャッシュ領域１４３から削除する。GCダーティ情報２２３が示す単位情報の数が上限値に達していない場合には、制御部１５は、キャッシュ領域１４３にキャッシュされている単位情報をランダムに選択する。選択された単位情報がダーティでない場合、制御部１５は、選択された単位情報をキャッシュ領域１４３から削除する。選択された単位情報がダーティである場合、制御部１５は、ユーザダーティ情報２２２が示す単位情報のうちの最も古い単位情報を、ログストレージ領域１２４に書き戻し、キャッシュ領域１４３から削除する。
【０１００】
以上述べたように、第１の実施形態においては、翻訳情報は、複数の階層に階層化されて管理される。そして、第２階層に属する翻訳情報である第２テーブル２０２ａのサイズと、第２階層に属する翻訳情報である第３テーブル２０３ａのサイズとが等しい。これにより、各テーブル２０２ａ、２０３ａのサイズの管理が簡単になる。また、第２テーブル２０２ａおよび第３テーブル２０３ａを、ログストレージ領域１２４に混ぜて格納することが可能である。即ち、第２テーブル２０２ａを格納する領域と第３テーブル２０３ａを格納する領域とを分けて管理する必要がない。また、第２テーブル２０２ａおよび第３テーブル２０３ａを１つのページに混ぜて格納することが可能である。また、各ページに格納可能なテーブルの数を一定に維持することが可能である。このように、第１の実施形態によれば、翻訳情報の管理が簡単であるため、翻訳情報の管理コストが安く、利便性が高い。
【０１０１】
なお、以上の説明においては、第２階層に属する翻訳情報である第２テーブル２０２ａのサイズと第３階層に属する翻訳情報である第３テーブル２０３ａのサイズとが等しい、として説明した。翻訳情報は、４以上の階層に階層化され、任意の２つの階層の夫々に属する翻訳情報のサイズが互いに等しくなるように構成されてもよい。例えば、第ｉ階層に属する翻訳情報のサイズと、第ｊ階層に属する翻訳情報のサイズとが等しくなるように構成された場合、第ｉ階層に属する翻訳情報と第ｊ階層に属する翻訳情報とを同じ領域に混ぜて格納することが可能である。
【０１０２】
また、各有効ビットマップ２１２ａのサイズは、第２テーブル２０２ａおよび第３テーブル２０３ａのサイズと等しい。これにより、有効ビットマップ２１２ａ、第２テーブル２０２ａおよび第３テーブル２０３ａを、ログストレージ領域１２４に混ぜて格納することが可能である。また、有効ビットマップ２１２ａ、第２テーブル２０２ａおよび第３テーブル２０３ａを、１つのページに混ぜて格納することが可能である。各ページに格納可能な単位情報の数を一定に維持することが可能である。
【０１０３】
（第２の実施形態）
第２の実施形態は、第１の実施形態のメモリシステム１に適用することが可能である。第２の実施形態によれば、制御部１５は、２以上のプロセッサを備えて構成される。
【０１０４】
図９は、第２の実施形態の制御部１５の構成を示す図である。本図の例によれば、制御部１５は、複数（ここでは３つ）のプロセッサ１５１を備える。３つのプロセッサ１５１のうちの１つは、他の２つのプロセッサ１５１に対して動的にタスクを分配する、ダイナミックタスクスケジューラとして機能する。ダイナミックタスクスケジューラとしてのプロセッサ１５１を、マスタプロセッサ１５１ａと表記する。マスタプロセッサ１５１ａからタスクを分配される２つのプロセッサ１５１を、スレーブプロセッサ１５１ｂと表記する。なお、タスクは、メモリシステム１の制御を構成する。メモリシステム１の制御は、複数のタスクによって構成される。１つの処理は、１つのタスクによって構成されてもよい。１つの処理は、複数のタスクによって構成されてもよい。複数の処理は１つのタスクによって構成されてもよい。
【０１０５】
図１０は、第２の実施形態のRAM１４の構成を示す図である。図３において説明した構成についてはここでは省略する。第２の実施形態によれば、RAM１４は、プログラムロード領域１４４およびワークエリア１４５を備える。プログラムロード領域１４４には、１以上のタスクプログラム２４１がロードされる。タスクプログラム２４１は、１つのタスクを実現するためのプログラムコードの集合である。
【０１０６】
１つのタスクプログラム２４１は、複数のプロセッサ１５１によって同時に実行されてもよい。ワークエリア１４５は、実行毎に確保されたり解放されたりするデータエリア２４２を備える。各データエリア２４２には、タスクの実行のために使用される値が格納される。
【０１０７】
例えば、翻訳情報を更新するタスクは、１つのタスクプログラム２４１によって実現する。翻訳情報の更新のための１つのタスクプログラム２４１に対し、更新要求毎に、異なるデータエリア２４２が確保される。各データエリア２４２には、更新要求に含まれる論理アドレス、旧物理アドレス、および新物理アドレスなどが、タスクの実行のために使用される値として格納される。翻訳情報を更新するタスクのための１つのタスクプログラム２４１は、複数のプロセッサ１５１によって同時に実行され、当該翻訳情報を更新するタスクのための１つのタスクプログラム２４１を同時に実行する複数のプロセッサ１５１は、互いに異なるデータエリア２４２を使用するように構成される。これにより、制御部１５は、互いに異なる複数の更新要求を並行して処理することが可能である。
【０１０８】
例えば、コマンドを解析するタスクは、１つのタスクプログラム２４１によって実現する。コマンドの解析のための１つのタスクプログラム２４１に対し、コマンド毎に異なるデータエリア２４２が確保される。各データエリア２４２には、コマンドの識別情報およびコマンドに含まれるパラメータなどが、タスクの実行のために使用される値として格納される。コマンドを解析するタスクのための１つのタスクプログラム２４１は、複数のプロセッサ１５１によって同時に実行され、当該コマンドを解析するタスクのための１つのタスクプログラム２４１を同時に実行する複数のプロセッサ１５１は、互いに異なるデータエリア２４２を使用する。これにより、制御部１５は、互いに異なる複数のコマンドを並行して解析することが可能である。
【０１０９】
１つのタスクプログラム２４１に対して実行毎に異なる複数のデータエリア２４２が割り当て可能にメモリシステム１が構成されているので、実行毎にタスクプログラム２４１をプログラムロード領域１４４にロードする必要がない。制御部１５は、スタートアップ処理において、全てのタスクプログラム２４１をプログラムロード領域１４４にロードする。制御部１５は、複数のタスク間でのデータの授受を、データエリア２４２を用いて実行することができる。
【０１１０】
マスタプロセッサ１５１ａは、マスタキュー１５２ａを備える。各スレーブプロセッサ１５１ｂは、スレーブキュー１５２ｂを備える。マスタキュー１５２ａには、実行待ちのタスクが登録される。具体的には、マスタキュー１５２ａには、実行待ちのタスクを実現するタスクプログラム２４１を示す識別情報が、当該タスクの実行のために使用されるデータエリア２４２を指定する情報と対応付けられて登録される。マスタプロセッサ１５１ａは、マスタキュー１５２ａに登録された１以上のタスクを、２つのスレーブプロセッサ１５１ｂに分配する。マスタプロセッサ１５１ａは、マスタキュー１５２ａに登録されたタスクを、いずれかのスレーブプロセッサ１５１ｂに具備されるスレーブキュー１５２ｂに登録する。各スレーブプロセッサ１５１ｂは、自身に具備されるスレーブキュー１５２ｂに登録されたタスクを実行する。言い換えると、各スレーブプロセッサ１５１ｂは、自身に具備されるスレーブキュー１５２ｂに登録されている識別情報が示すタスクプログラム２４１を、当該識別情報に対応付けられている情報が指定するデータエリア２４２を使用しながら実行する。
【０１１１】
タスクを分配する手法は任意に設計される。例えば、各スレーブキュー１５２ｂには、登録可能なタスクの数に上限値が設定される。マスタプロセッサ１５１ａは、上限値に達するまで、各スレーブキュー１５２ｂにタスクを登録する。各スレーブプロセッサ１５１ｂは、自身に具備されるスレーブキュー１５２ｂに登録されたタスクを実行完了する毎に、マスタプロセッサ１５１ａに完了通知を送信する。完了通知を受信したマスタプロセッサ１５１ａは、完了通知を送信したスレーブプロセッサ１５１ｂに具備されるスレーブキュー１５２ｂに、新たなタスクを登録する。
【０１１２】
なお、１つのタスクは、別のタスクを生成してもよい。当該別のタスクは、マスタキュー１５２ａに登録されたのち、何れかのスレーブキュー１５２ｂに分配される。１つのタスクは、別のタスクを実行させるスレーブプロセッサ１５１ｂを指定可能に構成されてもよい。その場合には、当該別のタスクは、マスタキュー１５２ａを経ることなく、指定されたスレーブプロセッサ１５１ｂに具備されるスレーブキュー１５２ｂに直接に登録されてもよい。また、別のタスクを実行させるスレーブプロセッサ１５１ｂが指定された場合には、指定されたスレーブプロセッサ１５１ｂに具備されるスレーブキュー１５２ｂに登録されているタスクの数が上限値に達しているか否かにかかわらず、当該別のタスクが指定されたスレーブプロセッサ１５１ｂに具備されるスレーブキュー１５２ｂに登録されてもよい。
【０１１３】
このように、マスタプロセッサ１５１ａは、複数のスレーブプロセッサ１５１ｂにタスクを動的に分散させることができる。
【０１１４】
複数のスレーブプロセッサ１５１ｂの夫々に対し、個別に電源を供給したり電源の供給を停止したりすることが可能に構成されてもよい。例えば、メモリシステム１は、通常モードと、当該通常モードよりも電力消費が低い低消費電力モードと、の２つのモードで動作が可能に構成される。電源制御部は、通常モードにおいては、２つのスレーブプロセッサ１５１ｂに電源を供給する。電源制御部は、２つのスレーブプロセッサ１５１ｂのうちの１つのみに電源を供給する。電源制御部は、ハードウェア、ソフトウェア、または両者の組み合わせによって構成される。例えば、マスタプロセッサ１５１ａは、電源制御部として機能する。マスタプロセッサ１５１ａは、通常モードにおいては２つのスレーブプロセッサ１５１ｂにタスクを分配する。マスタプロセッサ１５１ａは、低消費電力モードにおいては、２つのスレーブプロセッサ１５１ｂのうちの電源が供給されているスレーブプロセッサ１５１ｂのみにタスクを供給する。このように、マスタプロセッサ１５１ａはタスクの登録先を動的に決定するので、制御部１５は、電源が供給されているスレーブプロセッサ１５１ｂの数が変化しても、メモリシステム１の制御を継続することができる。
【０１１５】
なお、マスタプロセッサ１５１ａは、マスタキュー１５２ａのほかにスレーブキュー１５２ｂを具備してもよい。マスタプロセッサ１５１ａは、自身が備えるスレーブキュー１５２ｂにタスクを分配してもよい。
【０１１６】
第２の実施形態においては、翻訳情報および有効情報の一貫性を維持するために、翻訳情報を更新するタスクおよび有効情報を更新するタスクは、予め決められたスレーブプロセッサ１５１ｂにおいて実行される。
【０１１７】
例えば、翻訳情報の場合、メモリシステム１の論理アドレス空間が２つの論理アドレス範囲に分割される。翻訳情報を更新するタスクを登録するタスクが、何れかのプロセッサ１５１において実行される。翻訳情報を更新するタスクを登録するタスクは、２つの論理アドレス範囲のうちの第１の論理アドレス範囲に含まれる論理アドレスについての更新要求を、２つのスレーブプロセッサ１５１ｂのうちの予め決められた一のスレーブプロセッサ１５１ｂに実行させる。また、翻訳情報を更新するタスクを登録するタスクは、２つの論理アドレス範囲のうちの第２の論理アドレス範囲に含まれる論理アドレスについての更新要求を、２つのスレーブプロセッサ１５１ｂのうちの他のスレーブプロセッサ１５１ｂに実行させる。翻訳情報を更新するタスクが複数、１つのスレーブキュー１５２ｂに登録されている場合には、そのスレーブキュー１５２ｂを備えるスレーブプロセッサ１５１ｂは、翻訳情報を更新する各タスクを、スレーブキュー１５２ｂに登録された順番で実行することとする。このように、翻訳情報の更新に関し、担当の論理アドレス範囲がスレーブプロセッサ１５１ｂ毎に予め設定されていることによって、翻訳情報の一貫性が維持される。
【０１１８】
例えば、有効情報の場合、メモリシステム１の物理アドレス空間が２つの部分空間に分割される。有効情報を更新するタスクを登録するタスクが、何れかのプロセッサ１５１において実行される。有効情報を更新するタスクを登録するタスクは、２つの物理アドレス範囲のうちの第１の物理アドレス範囲に含まれる論理アドレスについての更新要求を、２つのスレーブプロセッサ１５１ｂのうちの予め決められた一のスレーブプロセッサ１５１ｂに実行させる。また、有効情報を更新するタスクを登録するタスクは、２つの物理アドレス範囲のうちの第２の物理アドレス範囲に含まれる論理アドレスについての更新要求を、２つのスレーブプロセッサ１５１ｂのうちの他のスレーブプロセッサ１５１ｂに実行させる。有効情報を更新するタスクが複数、１つのスレーブキュー１５２ｂに登録されている場合には、そのスレーブキュー１５２ｂを備えるスレーブプロセッサ１５１ｂは、有効情報を更新する各タスクを、そのスレーブキュー１５２ｂに登録された順番で実行することとする。このように、有効情報の更新に関し、担当の物理アドレス範囲がスレーブプロセッサ１５１ｂ毎に予め設定されていることによって、有効情報の一貫性が維持される。
【０１１９】
例えば、ガベージコレクションにおいては、コピーコマンドを生成するタスクを登録するタスクが実行される。コピーコマンドを生成するタスクを登録するタスクは、GCブロックの物理アドレス範囲を、２つの物理アドレス範囲に分割する。コピーコマンドを生成するタスクを登録するタスクは、２つの物理アドレス範囲のうちの第１の物理アドレス範囲の有効ビットマップ２１２ｂを、２つのスレーブプロセッサ１５１ｂのうちの予め決められた一のスレーブプロセッサ１５１ｂに渡し、当該一のスレーブプロセッサ１５１ｂにコピーコマンドを生成するタスクを登録する。当該一のスレーブプロセッサ１５１ｂは、登録されたタスクに基づいてコピーコマンドを生成する際には、第１の物理アドレス範囲の有効ビットマップ２１２ｂに基づいてコピー対象の有効なユーザデータ３０１を特定する。また、コピーコマンドを生成するタスクを登録するタスクは、２つの物理アドレス範囲のうちの第２の物理アドレス範囲の有効ビットマップ２１２ｂを、２つのスレーブプロセッサ１５１ｂのうちの他のスレーブプロセッサ１５１ｂに渡し、当該他のスレーブプロセッサ１５１ｂにコピーコマンドを生成するタスクを登録する。当該他のスレーブプロセッサ１５１ｂは、登録されたタスクに基づいてコピーコマンドを生成する際には、第２の物理アドレス範囲の有効ビットマップ２１２ｂに基づいてコピー対象の有効なユーザデータ３０１を特定する。
【０１２０】
このように、第２の実施形態においては、メモリシステム１は、複数のプロセッサ１５１を備える。各プロセッサ１５１は、論理アドレスの範囲が夫々設定される。各プロセッサ１５１は、翻訳情報のうちの、自身に設定された論理アドレスの範囲に含まれる論理アドレスにかかるレコードの更新を実行する。これにより、翻訳情報の更新を複数のプロセッサ１５１で並行して実行することが可能となるので、翻訳情報の更新を１つのプロセッサ１５１のみで実行する場合に比べ、翻訳情報を高速に更新することができる。また、翻訳情報の一貫性を損なうことなく翻訳情報を高速に更新することができる。
【０１２１】
また、各プロセッサ１５１は、物理アドレスの範囲が夫々設定される。各プロセッサ１５１は、自身に設定された物理アドレスの範囲の有効情報のレコードの更新を実行する。これにより、有効情報の更新を複数のプロセッサ１５１で並行して実行することが可能となるので、有効情報の更新を１つのプロセッサ１５１のみで実行する場合に比べ、有効情報を高速に更新することができる。また、有効情報の一貫性を損なうことなく有効情報を高速に更新することができる。
【０１２２】
また、１つのプロセッサ１５１は、ガベージコレクションの際に、複数のプロセッサ１５１にコピーコマンドを生成する処理を分担させる。具体的には、１つのプロセッサ１５１は、GCブロックを複数の領域に分割する。各プロセッサ１５１は、分割された領域の１つに格納されている有効なユーザデータ３０１を特定し、特定した有効なユーザデータ３０１をコピーするためのコピーコマンドを生成する。これにより、GCブロックに格納されている有効なユーザデータ３０１が多くても、高速にコピーコマンドを作成することができる。
【０１２３】
（第３の実施形態）
第３の実施形態は、第１の実施形態および第２の実施形態の何れのメモリシステム１に適用することが可能である。第３の実施形態によれば、メモリシステム１は、ソフトウェア定義型（Software  Defined）プラットフォームを備える。ソフトウェア定義型プラットフォームは、例えば、メモリシステム１の機能をハードウェアの制御から切り離し、ソフトウェアにより制御を実行する。
【０１２４】
第３の実施形態においては、第２の実施形態と同様に、制御部１５は、複数（ここでは３つ）のプロセッサ１５１を備える。３つのプロセッサ１５１は、１つのマスタプロセッサ１５１ａおよび２つのスレーブプロセッサ１５１ｂを含む。
【０１２５】
メモリシステム１の構成のうち、ホストインタフェース部１１、NANDコントローラ１３、RAM１４、および３つのプロセッサ１５１は、ハードウェアに含まれる。
【０１２６】
図１１は、第３の実施形態のRAM１４の構成を示す図である。図３において説明した構成についてはここでは省略する。第３の実施形態によれば、RAM１４は、プログラムロード領域１４４およびワークエリア１４５を備える。プログラムロード領域１４４には、２以上のアプリケーションプログラム２５１と、制御プログラム２５２とがロードされる。各アプリケーションプログラム２５１は、１以上のタスクプログラム２４１によって構成される。ワークエリア１４５は、実行毎に確保されたり解放されたりするデータエリア２４２を備える。
【０１２７】
第３の実施形態のソフトウェア定義型プラットフォームは、制御プログラム２５２、ハードウェア、およびNANDメモリ１２を含む。ソフトウェア定義型のＳＳＤプラットフォームを用いることで、ＳＳＤの機能をハードウェアの制御から切り離して、ソフトウェアの制御が可能である。第３の実施形態において、プラットフォームとは、ハードウェア又はソフトウェアを動作させるために必要な基盤となるハードウェア、オペレーティングシステム（ＯＳ）、ミドルウェア、それらの組み合わせ、設定、環境などの総体を意味する。
【０１２８】
各プロセッサ１５１は、制御プログラム２５２を実行する。マスタプロセッサ１５１ａは、マスタキュー１５２ａを備える。スレーブプロセッサ１５１ｂは、スレーブキュー１５２ｂを備える。
【０１２９】
制御プログラム２５２は、ハードウェアの違いを吸収する共通モジュールである。具体的には、制御プログラム２５２は、各アプリケーションプログラム２５１がハードウェアに非依存となるように、各アプリケーションプログラム２５１とハードウェアとの間で基本動作を実現する。非依存とは、少なくとも、協働する他方のソフトウェア又はハードウェアが取り替えられたとしても、引き続き利用可能な性質をいう。そのため、制御プログラム２５２は、ＡＰＩ（Application  Program  Interface）に準拠している。
【０１３０】
例えば、制御プログラム２５２は、アプリケーションプログラム２５１によって特定のインタフェースにしたがって発行されたコマンドを受け、コマンドに基づいてハードウェアおよびNANDメモリ１２に対する制御を実行する。制御プログラム２５２は、タスクのスケジューリングを行う。マスタプロセッサ１５１ａは、２つのスレーブキュー１５２ｂの状態を監視し、マスタキュー１５２ａに登録されているタスクを、２つのスレーブキュー１５２ｂに分配する。各スレーブプロセッサ１５１ｂは、夫々のスレーブキュー１５２ｂに登録されているタスクを実行する。
【０１３１】
RAM１４内における、制御プログラム２５２の格納位置および各アプリケーションプログラム２５１の格納位置は、メモリシステム１の起動時に決定され、その後起動中は再配置されない。
【０１３２】
各アプリケーションプログラム２５１は、例えば、ファームウェアのような各種のソフトウェアである。各アプリケーションプログラム２５１は、ファームウェア以外のソフトウェアを含んで構成されてもよい。
【０１３３】
第３の実施形態においては、各アプリケーションプログラム２５１は、単独でＳＳＤの機能を実現することができる。２以上のアプリケーションプログラム２５１の夫々は、コマンドを解析するタスクを実現するタスクプログラム２４１、翻訳情報を更新するタスクを実現するタスクプログラム２４１、有効情報を更新するタスクを実現するタスクプログラム２４１、などを備えているため、２以上のアプリケーションプログラム２５１の何れを用いても、ＳＳＤの機能を実現することができる。
【０１３４】
同一種のタスクを実現するタスクプログラム２４１は、アプリケーションプログラム２５１毎に異なっていてもよい。例えば、第１のアプリケーションプログラム２５１に含まれる、リード処理を実現するタスクプログラム２４１は、ＬＢＡを用いた位置指定に対応することができ、第２のアプリケーションプログラム２５１に含まれる、リード処理を実現するタスクプログラム２４１は、ＫＶＳ(Key-Value  Store)を用いた位置指定に対応することができる。また、例えば、第１のアプリケーションプログラム２５１に含まれる、翻訳情報の管理を実現するタスクプログラム２４１と、第２のアプリケーションプログラム２５１に含まれる、翻訳情報の管理を実現するタスクプログラム２４１と、では、翻訳情報の管理単位が異なる。また、例えば、プロセッサ１５１からRAM１４へのアクセスは、暗号化される。例えば、第１のアプリケーションプログラム２５１の制御の下でプロセッサ１５１がRAM１４にアクセスする際の暗号化キーと、第２のアプリケーションプログラム２５１の制御の下でプロセッサ１５１がRAM１４にアクセスする際の暗号化キーと、が異なる。なお、暗号化キーは、アプリケーションプログラム２５１毎に異なる。暗号化キーは、タスクプログラム２４１毎に異なっていてもよい。
【０１３５】
なお、例えば、制御プログラム２５２は、メモリシステム１のメーカによって作成され、初期的にメモリシステム１に格納される。各アプリケーションプログラム２５１は、初期的にメモリシステム１に格納されなくてもよい。２以上のアプリケーションプログラム２５１のうちの一部または全部は、顧客、メモリシステム１の購入者、またはソフトウェア開発者など、メーカとは異なる者によって作成されてもよいし格納されてもよい。
【０１３６】
ホスト２は、２以上のアプリケーションプログラム２５１のうちの、使用するアプリケーションプログラム２５１を選択することができる。
【０１３７】
例えば、メモリシステム１とホスト２との間の通信のインタフェース規格としてNVMeが採用される場合において、ホスト２がメモリシステム１内にネームスペースを生成する際に、ホスト２は、２以上のアプリケーションプログラム２５１のうちの、使用するアプリケーションプログラム２５１を指定する。制御部１５は、ホスト２とネームスペースとの対応関係を記憶し、ホスト２からコマンドを受信した際、コマンドの送信元のホスト２またはアクセス先のネームスペースに応じて、対応するアプリケーションプログラム２５１を特定する。
【０１３８】
このように、第３の実施形態によれば、メモリシステム１は、複数のアプリケーションプログラム２５１をRAM１４にロードする。メモリシステム１は、複数のアプリケーションプログラム２５１のうちから、使用されるアプリケーションプログラム２５１が選択可能に構成される。これにより、例えばメモリシステム１に複数のホスト２が接続される場合、メモリシステム１は、ホスト２毎に異なる動作を行うことが可能となる。
【０１３９】
また、メモリシステム１は、ネームスペースの作成時にアプリケーションプログラム２５１を選択可能に構成される。これにより、メモリシステム１は、ネームスペース毎に異なる動作を行うことが可能となる。
【０１４０】
（第４の実施形態）
第４の実施形態は、第１〜第３の実施形態の何れのメモリシステム１に適用することが可能である。第４の実施形態によれば、メモリシステム１は、互いに独立した複数の論理アドレス空間が構築可能に構成される。互いに独立した複数の論理アドレス空間の夫々は、例えばネームスペースである。
【０１４１】
制御部１５は、ホスト２からの生成要求に応じて新規のネームスペースを追加する。また、制御部１５は、ホスト２からの削除要求に応じて既存のネームスペースを削除する。制御部１５は、全ネームスペースの合計サイズがメモリシステム１の表記容量に至るまで、新規のネームスペースを追加することができる。
【０１４２】
図１２は、第４の実施形態のRAM１４の構成を示す図である。第４の実施形態においては、RAM１４には第１テーブル記憶領域１４６が確保される。制御部１５は、ネームスペース毎に第１テーブル２０１ｂを管理する。第１テーブル記憶領域１４６は、ネームスペース毎の第１テーブル２０１ｂを記憶する。
【０１４３】
制御部１５は、ホスト２からの生成要求に応じて新規の第１テーブル２０１ｂを生成する。また、制御部１５は、ホスト２からの削除要求に応じて、削除要求によって指定されたネームスペースに対応する第１テーブル２０１ｂを削除する。ネームスペースの削除は、トリムの場合と同様に、有効情報の更新を伴う。制御部１５は、各第１テーブル２０１ｂを連続した領域に格納する。制御部１５は、各第１テーブル２０１ｂの格納位置をネームスペースと対応付けて管理する。
【０１４４】
各第１テーブル２０１ｂの管理単位は、ネームスペース間で同一であってもよいし、ネームスペース毎に異なっていてもよい。ここでは一例として、各第１テーブル２０１ｂの管理単位は、ネームスペース間で同一であることとする。第１テーブル記憶領域１４６のサイズは、全ネームスペースの合計サイズが上限に至った場合における全ての第１テーブル２０１ｂの合計サイズの、少なくとも２倍のサイズである。
【０１４５】
図１３〜図１９は、各第１テーブル２０１ｂの格納の様態の変化を説明する図である。メモリシステム１が３つのネームスペース（NS#0、NS#1、およびNS#2）を有する場合、例えば図１３に示すように、各第１テーブル２０１ｂは、第１テーブル記憶領域１４６の先頭から順番に配置される。各第１テーブル２０１ｂは、各第１テーブル２０１ｂの間にスペースを空けずに配置される。
【０１４６】
制御部１５は、図１３の状態においてNS#1の削除要求を受信した場合、図１４に示すように、NS#1の第１テーブル２０１ｂを削除する。なお、制御部１５は、NS#1の第１テーブル２０１ｂの削除の前に、有効情報を更新する。具体的には、制御部１５は、NS#1を指定して書き込まれたユーザデータ３０１を全て無効化する。また、制御部１５は、NS#1の第１テーブル２０１ｂの削除の前に、NS#1の翻訳情報のうちの下位の階層に属する翻訳情報を全て無効化する。
【０１４７】
続いて、制御部１５は、第１テーブル２０１ｂの削除によって生じたスペースを詰める作業を行う。例えば、図１４の状態においては、制御部１５は、NS#2の第１テーブル２０１ｂを再配置する。再配置は、次のようにして実行される。制御部１５は、図１５に示すように、再配置対象の第１テーブル２０１ｂであるNS#2の第１テーブル２０１ｂを、第１テーブル記憶領域１４６の空き領域に複製する。複製された第１テーブル２０１ｂを、第１テーブル２０１ｃと表記する。第１テーブル記憶領域１４６は、各第１テーブル２０１ｂの合計サイズの最大値の２倍以上のサイズを有するので、第１テーブル記憶領域１４６においては、第１テーブル２０１ｂのサイズの大きさに関係なく当該第１テーブル２０１ｂを複製することが可能である。また、各第１テーブル２０１ｂは、第１テーブル記憶領域１４６の先頭から詰めて配置されるので、第１テーブル記憶領域１４６の中央から末尾までの領域が第１テーブル２０１ｂの複製が格納される領域として使用可能である。
【０１４８】
続いて、制御部１５は、図１６に示すように、NS#2の第１テーブル２０１ｂを第１テーブル記憶領域１４６から削除する。そして、制御部１５は、図１７に示すように、NS#2の第１テーブル２０１ｃを、NS#0の第１テーブル２０１ｂの末尾に連続する位置に、NS#2の第１テーブル２０１ｂとして複製する。そして、制御部１５は、図１８に示すように、NS#2の第１テーブル２０１ｃを第１テーブル記憶領域１４６から削除し、NS#2の第１テーブル２０１ｂの再配置を完了する。
【０１４９】
なお、第１テーブル２０１ｂの削除によって生じたスペースを詰めるために再配置するべき第１テーブル２０１ｂが複数存在する場合には、制御部１５は、当該複数の第１テーブル２０１ｂの夫々を順次再配置する。制御部１５は、再配置するべき複数の第１テーブル２０１ｂを、スペースに近い第１テーブル２０１ｂから順番に再配置する。
【０１５０】
制御部１５は、図１８の状態においてNS#3の追加要求を受信した場合、NS#3の第１テーブル２０１ｂを、図１９に示すように、NS#2の第１テーブル２０１ｂの末尾に連続する位置に生成する。
【０１５１】
なお、制御部１５は、スペースを詰める作業を完了するまで、新規のネームスペースの追加を禁止する。また、再配置対象の第１テーブル２０１ｂは、再配置が完了するまで、二重化されている。制御部１５は、二重化された第１テーブル２０１ｂにかかるネームスペースに対するアクセスを実行する場合において、翻訳情報を更新する際、第１テーブル２０１ｂおよび第１テーブル２０１ｃの両方を更新する。
【０１５２】
このように、第４の実施形態によれば、メモリシステム１は、複数の論理アドレス空間を外部に提供する。RAM１４は、第１テーブル記憶領域１４６が確保される。制御部１５は、論理アドレス毎の第１テーブル２０１ｂを第１テーブル記憶領域１４６に格納する。制御部１５は、ホスト２からの削除要求に応じて第１テーブル２０１ｂを削除する。制御部１５は、削除によって２つの第１テーブル２０１ｂの間に生じた空き領域を詰める。第１の論理アドレス空間のための第１テーブル２０１ｂと、第２の論理アドレス空間のための第１テーブル２０１ｂと、の間に第１の空き領域がある場合、制御部１５は、第１の空き領域をなくすために、第２の論理アドレス空間のための第１テーブル２０１ｂを再配置する。具体的には、制御部１５は、第２の論理アドレス空間のための第１テーブル２０１ｂを、第２の空き領域に複製する。そして、制御部１５は、複製元の第１テーブル２０１ｂを削除する。そして、制御部１５は、第２の論理アドレス空間のための第１テーブル２０１ｃを、第１の空き領域の第１の論理アドレス空間のための第１テーブル２０１ｂに連続する位置に、さらに複製する。そして、制御部１５は、第２の論理アドレス空間のための第１テーブル２０１ｃを削除する。これにより、制御部１５は、論理アドレス毎の第１テーブル２０１ｂを、間に空き領域を発生させることなく第１テーブル記憶領域１４６に格納することができる。したがって、第１テーブル記憶領域１４６を効率的に使用することが可能となる。
【０１５３】
また、第１テーブル記憶領域１４６は、第１テーブル２０１ｂの合計サイズの最大値の少なくとも２倍のサイズを有する。これにより、前述した再配置が可能となる。
【０１５４】
また、制御部１５は、第１テーブル２０１ｂの再配置中に当該第１テーブル２０１ｂを更新する場合には、当該第１テーブル２０１ｂおよび第１テーブル２０１ｃの両方を更新する。これにより、翻訳情報の一貫性が維持される。
【０１５５】
（第５の実施形態）
第５の実施形態は、第１〜第４の実施形態の何れのメモリシステム１に適用することが可能である。
【０１５６】
図２０は、第５の実施形態のログストレージ領域１２４を示す図である。図示するように、ログストレージ領域１２４には、ホットストレージ１２４ａおよびコールドストレージ１２４ｂが確保されている。
【０１５７】
ホットストレージ１２４ａは、FIFOのルールに従って単位情報が入出力される。制御部１５は、ダーティな単位情報をホットストレージ１２４ａに書き込む。制御部１５は、ホットストレージ１２４ａから単位情報をFIFOのルールに従って取り出し、取り出した単位情報のうちの有効な単位情報をコールドストレージ１２４ｂに書き込む。有効な単位情報とは、第１テーブル２０１ｂまたはブロック管理情報２１１ｂによって直接に示されている単位情報か、または第１テーブル２０１ｂによって示されている第２テーブル２０２ａによって示されている単位情報である。
【０１５８】
なお、ホットストレージ１２４ａおよびコールドストレージ１２４ｂのサイズは可変に構成されてもよい。例えば制御部１５は、ローカリティが高いときにはホットストレージ１２４ａのサイズを小さくし、コールドストレージ１２４ｂのサイズを大きくする。そして、制御部１５は、ローカリティが低いときにはコールドストレージ１２４ｂのサイズを小さくし、ホットストレージ１２４ａのサイズを大きくする。なお、例えば、制御部１５は、出力される単位情報のうちの有効な単位情報の割合を測定する。制御部１５は、測定された割合を、ローカリティの測定値として使用することができる。
【０１５９】
このように、第５の実施形態によれば、ログストレージ領域１２４は、ホットストレージ１２４ａとコールドストレージ１２４ｂとを備え、制御部１５は、更新されてからの経過時間に応じて単位情報をホットストレージ１２４ａとコールドストレージ１２４ｂとの何れかに格納する。なお、ログストレージ領域１２４は、３つ以上の領域を備え、制御部１５は、更新されてからの経過時間に応じて単位情報を３つ以上の領域の何れかに格納してもよい。
【０１６０】
（第６の実施形態）
図２１は、メモリシステム１の実装例を示す図である。メモリシステム１は、例えばサーバシステム１０００に実装される。サーバシステム１０００は、ディスクアレイ２０００とラックマウントサーバ３０００とが通信インタフェース４０００によって接続されて構成される。通信インタフェース４０００の規格としては任意の規格が採用可能である。ラックマウントサーバ３０００は、サーバラックに１以上のホスト２がマウントされて構成される。複数のホスト２は、通信インタフェース４０００を介してディスクアレイ２０００にアクセスすることができる。
【０１６１】
また、ディスクアレイ２０００は、サーバラックに１以上のメモリシステム１がマウントされて構成される。ディスクアレイ２０００は、メモリシステム１の他に、１以上のハードディスクユニットがマウントされてもよい。各メモリシステム１は、各ホスト２からのコマンドを実行することができる。また、各メモリシステム１は、第１または第２の実施形態が採用された構成を有している。これにより、各メモリシステム１は、簡単にアトミックライトを実行することができる。
【０１６２】
なお、ディスクアレイ２０００においては、例えば、各メモリシステム１は、１以上のハードディスクユニットのキャッシュとして使用されてもよい。ディスクアレイ２０００は、１以上のメモリシステム１を利用してＲＡＩＤを構築するストレージコントローラユニットがマウントされてもよい。
【０１６３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１６４】
１  メモリシステム、２  ホスト、１１  ホストインタフェース部、１２  NANDメモリ、１３  NANDコントローラ、１４  RAM、１５  制御部、１２１  緊急退避領域、１２２  管理情報領域、１２３  ユーザデータ領域、１２４  ログストレージ領域、１２４ａ  ホットストレージ、１２４ｂ  コールドストレージ、１４１  ライトバッファ、１４２  リードバッファ、１４３  キャッシュ領域、１４４  プログラムロード領域、１４５  ワークエリア、１４６  第１テーブル記憶領域、１５１  プロセッサ、１５１ａ  マスタプロセッサ、１５１ｂ  スレーブプロセッサ、１５２ａ  マスタキュー、１５２ｂ  スレーブキュー、２０１ａ，２０１ｂ，２０１ｃ  第１テーブル、２０２ａ，２０２ｂ  第２テーブル、２０３ａ，２０３ｂ  第３テーブル、２１１ａ，２１１ｂ  ブロック管理情報、２１２ａ，２１２ｂ  有効ビットマップ、２２１  キャッシュ管理情報、２２５  統計情報、２３１  ログ情報、２４１  タスクプログラム、２４２  データエリア、２５１  アプリケーションプログラム、２５２  制御プログラム、３０１  ユーザデータ、１０００  サーバシステム、２０００  ディスクアレイ、３０００  ラックマウントサーバ。
【図１】
2020091911.tif 000003
【図２】
2020091911.tif 000004
【図３】
2020091911.tif 000005
【図４】
2020091911.tif 000006
【図５】
2020091911.tif 000007
【図６】
2020091911.tif 000008
【図７】
2020091911.tif 000009
【図８】
2020091911.tif 000010
【図９】
2020091911.tif 000011
【図１０】
2020091911.tif 000012
【図１１】
2020091911.tif 000013
【図１２】
2020091911.tif 000014
【図１３】
2020091911.tif 000015
【図１４】
2020091911.tif 000016
【図１５】
2020091911.tif 000017
【図１６】
2020091911.tif 000018
【図１７】
2020091911.tif 000019
【図１８】
2020091911.tif 000020
【図１９】
2020091911.tif 000021
【図２０】
2020091911.tif 000022
【図２１】
2020091911.tif 000023