(57)【要約】【課題】ＮＡＮＤコントローラの回路規模を削減できる情報処理装置、制御回路、制御プログラム、および制御方法を提供する。【解決手段】ＮＡＮＤコントローラ６ａは、論理アドレスを選択する。また、ＮＡＮＤコントローラ６ａは、アドレス変換テーブル１９から、選択した論理アドレスに対応付けられた物理アドレスを取得する。また、ＮＡＮＤコントローラ６ａは、所定の条件を用いて、取得した物理アドレスが示す物理ページに格納されたデータを移動させるか否かを判定する。そして、ＮＡＮＤコントローラ６ａは、データを移動させると判定した場合は、取得した物理アドレスが示す物理ページに格納されたデータを、予備ページに移動させる。その後、ＮＡＮＤコントローラ６ａは、アドレス変換テーブル１９に格納された物理アドレスのうち、選択した論理アドレスに対応付けられた物理アドレスを、予備ページを示す物理アドレスに更新する。【選択図】図６
2015001908.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶領域を有する記憶装置と、
前記記憶装置に格納されるデータを識別する論理アドレスの中から、いずれかの論理アドレスを選択する選択部と、
前記記憶装置に格納されるデータを識別する論理アドレスと前記データが格納された記憶領域を識別する物理アドレスとが対応付けて格納された変換テーブルから、前記選択部が選択した論理アドレスに対応付けられた物理アドレスを取得する取得部と、
所定の条件を用いて、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する判定部と、
前記判定部が、前記データを移動させると判定した場合は、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる移動部と、
前記変換テーブルに格納された物理アドレスのうち、前記選択部が選択した論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する更新部と
を有することを特徴とする情報処理装置。
【請求項２】
前記選択部は、前記記憶装置に格納された全てのデータの論理アドレスを番号順に選択することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記選択部は、論理アドレスを番号順に選択する処理を開始してから所定の時間が経過した場合は、最後に選択した論理アドレスを保持して前記処理を中断し、前記処理を再開する場合は、保持した論理アドレスの次番の論理アドレスから番号順に論理アドレスを選択することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記選択部は、前記記憶装置に格納されたデータの論理アドレスを複数のグループに分割し、前記グループごとに、当該グループに含まれる論理アドレスを番号順に選択する処理を実行することを特徴とする請求項１〜３のいずれか１つに記載の情報処理装置。
【請求項５】
前記判定部は、複数の記憶領域を含むブロックごとに、前記ブロックに含まれる全ての記憶領域にデータが書込まれたか否かを示す状態情報を記憶する状態管理テーブルから、前記取得部が取得した物理アドレスが示す記憶領域を含むブロックの状態情報を参照し、参照した状態情報が前記ブロックに含まれる全ての記憶領域にデータが書込まれた旨を示す場合は、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを他の記憶領域に移動させると判定することを特徴とする請求項１〜４のいずれか１つに記載の情報処理装置。
【請求項６】
前記判定部は、複数の記憶領域を含むブロックごとにデータが書込まれた時刻を示す時刻情報が格納された時刻管理テーブルから、前記取得部が取得した物理アドレスが示す記憶領域を含むブロックの時刻情報を参照し、参照した時刻情報が示す時刻と現在の時刻との差が所定の閾値よりも大きい場合は、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを他の記憶領域に移動させると判定することを特徴とする請求項１〜５のいずれか１つに記載の情報処理装置。
【請求項７】
前記判定部は、複数の記憶領域を含むブロックごとに有効なデータの数を示す有効情報が格納された有効管理テーブルから、前記取得部が取得した物理アドレスが示す記憶領域を含むブロックの有効情報を参照し、参照した有効情報が示す有効なデータの数が所定の閾値よりも多い場合は、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを他の記憶領域に移動させると判定することを特徴とする請求項１〜６のいずれか１つに記載の情報処理装置。
【請求項８】
複数の記憶領域を有する記憶装置に格納されるデータを識別する論理アドレスの中から、いずれかの論理アドレスを選択する選択部と、
前記記憶装置に格納されるデータを識別する論理アドレスと前記データが格納された記憶領域を識別する物理アドレスとが対応付けて格納された変換テーブルから、前記選択部が選択した論理アドレスに対応付けられた物理アドレスを取得する取得部と、
所定の条件を用いて、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する判定部と、
前記判定部が、前記データを移動させると判定した場合は、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる移動部と、
前記変換テーブルに格納された物理アドレスのうち、前記選択部が選択した論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する更新部と
を有することを特徴とする制御回路。
【請求項９】
コンピュータに、
複数の記憶領域を有する記憶装置に格納されるデータを識別する論理アドレスの中から、いずれかの論理アドレスを選択し、
前記記憶装置に格納されるデータを識別する論理アドレスと前記データが格納された記憶領域を識別する物理アドレスとが対応付けて格納された変換テーブルから、選択した前記論理アドレスに対応付けられた物理アドレスを取得し、
所定の条件を用いて、取得した前記物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定し、
前記データを移動させると判定した場合は、取得した前記物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させ、
前記変換テーブルに格納された物理アドレスのうち、選択した前記論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する
処理を実行させることを特徴とする制御プログラム。
【請求項１０】
情報処理装置が、
複数の記憶領域を有する記憶装置に格納されるデータを識別する論理アドレスの中から、いずれかの論理アドレスを選択し、
前記記憶装置に格納されるデータを識別する論理アドレスと前記データが格納された記憶領域を識別する物理アドレスとが対応付けて格納された変換テーブルから、選択した前記論理アドレスに対応付けられた物理アドレスを取得し、
所定の条件を用いて、取得した前記物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定し、
前記データを移動させると判定した場合は、取得した前記物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させ、
前記変換テーブルに格納された物理アドレスのうち、選択した前記論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する
処理を実行することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御回路、制御プログラム、および制御方法に関する。
【背景技術】
【０００２】
従来、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理装置が知られている。このような情報処理システムの一例として、ＮＡＮＤフラッシュメモリデバイスをストレージ等の記憶装置として使用する情報処理装置が知られている。なお、以下の説明では、ＮＡＮＤフラッシュメモリデバイスをＮＡＮＤデバイスと記載する。
【０００３】
ここで、ＮＡＮＤデバイスは、データの記憶領域である物理ページ単位でデータの書込み、読出し、データの更新に係る移動を行い、複数の物理ページを含む物理ブロック単位でデータの消去を行う。このため、ＮＡＮＤデバイスは、有効なデータと無効なデータとが混在した物理ブロックを有する場合がある。また、ＮＡＮＤデバイスは、データを消去する際に素子が劣化するので、頻繁に更新されるデータが書込まれた物理ページと、あまり更新されないデータが書込まれた物理ページとでは、素子が劣化する速度にばらつきが発生する。
【０００４】
このため、各物理ブロックに対するデータの書込み状況やデータの書込時刻に応じて、各物理ブロックに書込まれたデータの移動を実行し、データの整理や劣化の平準化を行うＮＡＮＤコントローラが知られている。例えば、ＮＡＮＤコントローラは、物理ブロックごとに、各物理ページのデータが有効であるか否かを示す情報と、最後にデータが書込まれた時刻を示す情報とが格納された管理情報テーブルを有する。
【０００５】
そして、ＮＡＮＤコントローラは、管理情報テーブルを参照し、物理ブロックごとに、有効なデータの数やデータが書込まれてから経過した時間に応じて、データを移動させるか否かを判定する。その後、ＮＡＮＤコントローラは、データを移動させると判定した場合は、物理ブロックに書込まれた有効なデータを、予備ブロックの物理ページに移動し、選択した物理ブロックのデータを消去することで、新たな予備ブロックの確保や、劣化の平準化を行う。
【０００６】
また、ＮＡＮＤコントローラは、情報処理装置が実行するシステムがデータの指定に用いる論理アドレスを、データが格納された物理ページを示す物理アドレスに変換するアドレス変換テーブルを有する。そして、ＮＡＮＤコントローラは、データの移動を行った場合は、データの移動元、および、データの移動先を示す物理アドレスを用いて、アドレス変換テーブルの更新を行う。
【０００７】
例えば、ＮＡＮＤコントローラは、物理アドレスを論理アドレスに逆変換するアドレス逆変換テーブルを用いて、データの移動元を示す物理アドレスを論理アドレスに逆変換する。そして、ＮＡＮＤコントローラは、アドレス変換テーブルに格納された物理アドレスのうち、逆変換された論理アドレスをインデックスとする物理アドレスを、データの移動先を示す物理アドレスに書き換える。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−００３７８４号公報
【特許文献２】特開２０１０−１５７１４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した物理ブロックごとにデータを移動させるか否かを判定する技術では、データの移動元、および、データの移動先を示す物理アドレスを用いて、アドレス変換テーブルの更新を行う。かかる処理を行うため、例えば、ＮＡＮＤコントローラは、データの移動元を示す物理アドレスから論理アドレスに逆変換するアドレス逆変換テーブルを有するので、回路規模が増大するという問題がある。
【００１０】
１つの側面では、ＮＡＮＤコントローラの回路規模を削減できる情報処理装置、制御回路、制御プログラム、および制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
一態様の情報処理装置は、複数の記憶領域を有する記憶装置を有する。また、情報処理装置は、複数の記憶領域を有する記憶装置に格納されるデータを識別する論理アドレスの中から、いずれかの論理アドレスを選択する。また、情報処理装置は、記憶装置に格納されるデータを識別する論理アドレスとデータが格納された記憶領域を識別する物理アドレスとが対応付けて格納された変換テーブルから、選択した論理アドレスに対応付けられた物理アドレスを取得する。また、情報処理装置は、所定の条件を用いて、取得した前記物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する。また、情報処理装置は、データを移動させると判定した場合は、取得した物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる。また、情報処理装置は、変換テーブルに格納された物理アドレスのうち、選択した論理アドレスに対応付けられた物理アドレスを、他の記憶領域を示す物理アドレスに更新する。
【発明の効果】
【００１２】
一実施形態によれば、ＮＡＮＤコントローラの回路規模を削減できる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係る情報処理装置を説明する図である。
【図２】図２は、メモリアクセスの一例を説明する図である。
【図３】図３は、従来のＮＡＮＤコントローラが実行する処理の一例を説明する図である。
【図４】図４は、従来のＮＡＮＤコントローラが有する管理情報テーブルの一例を説明する図である。
【図５】図５は、実施例１に係るＮＡＮＤコントローラが実行する処理の一例を説明する図である。
【図６】図６は、実施例１に係るＮＡＮＤコントローラの機能構成を説明する図である。
【図７】図７は、実施例１に係るアドレス変換テーブルの一例を説明する図である。
【図８】図８は、実施例１に係る管理情報テーブルの一例を説明する図である。
【図９】図９は、実施例１に係るＮＡＮＤコントローラが実行する処理の一例を説明する図である。
【図１０】図１０は、実施例１に係るＮＡＮＤコントローラが実行する処理の概要を説明するフローチャートである。
【図１１】図１１は、実施例１に係るＮＡＮＤコントローラが実行する巡回参照制御の流れを説明するフローチャートである。
【図１２】図１２は、実施例２に係るＮＡＮＤコントローラの機能構成を説明する図である。
【図１３】図１３は、実施例２に係るＮＡＮＤコントローラが実行する処理の流れを説明する第１のフローチャートである。
【図１４】図１４は、実施例２に係るＮＡＮＤコントローラが実行する処理の流れを説明する第２のフローチャートである。
【図１５】図１５は、実施例３に係るＮＡＮＤコントローラの機能構成を説明する図である。
【図１６】図１６は、実施例３に係る管理情報テーブルの一例を説明する図である。
【図１７】図１７は、実施例３に係るＮＡＮＤコントローラが実行する処理と物理ブロックの状態遷移とを説明する図である。
【図１８】図１８は、実施例３に係る管理情報テーブルのバリエーションを説明する図である。
【図１９】図１９は、実施例３に係るＮＡＮＤコントローラが実行する処理の流れを説明するフローチャートである。
【図２０】図２０は、制御プログラムを実行するＮＡＮＤコントローラの一例を説明する図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して本願に係る情報処理装置、制御回路、制御プログラム、および制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により開示技術が限定されるものではない。また、各実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例１】
【００１５】
以下の実施例１では、図１を用いて、本願に係る情報処理装置の一例を説明する。図１は、実施例１に係る情報処理装置を説明する図である。図１に示す例では、情報処理装置１は、複数のメモリ２ａ、２ｂ、複数のＣＰＵ（Central  Processing  Unit）３ａ、３ｂ、Ｉ／Ｏ（Input  Output）ハブ４、複数のＳＳＤ（Solid  State  Drive）５ａ、５ｂを有する。また、ＳＳＤ５ａは、ＮＡＮＤコントローラ６ａ、および複数のＮＡＮＤデバイス７ａ〜１０ａを有する。
【００１６】
また、ＳＳＤ５ｂは、ＮＡＮＤコントローラ６ｂ、および複数のＮＡＮＤデバイス７ｂ〜１０ｂを有する。なお、以下の説明では、ＮＡＮＤコントローラ６ｂ、および複数のＮＡＮＤデバイス７ｂ〜１０ｂは、ＮＡＮＤコントローラ６ａ、および複数のＮＡＮＤデバイス７ａ〜１０ａと同様の機能を発揮するものとして、説明を省略する。
【００１７】
各メモリ２ａ、２ｂは、各ＣＰＵ３ａ、３ｂが演算処理に用いるデータを記憶する記憶装置である。また、各ＣＰＵ３ａ、３ｂは、メモリ２ａ、２ｂが記憶するデータを用いて、各種演算処理を行う演算処理装置である。例えば、ＣＰＵ３ａ、３ｂは、ＮＵＭＡ（Non-Uniform  Memory  Access）の技術を用いて、メモリ２ａ、２ｂが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。
【００１８】
また、ＣＰＵ３ａ、３ｂは、Ｉ／Ｏハブ４を介して、各ＳＳＤ５ａ、５ｂが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。詳細には、ＣＰＵ３ａは、ＳＳＤ５ａに対し、データの読出し要求や書込み要求を発行し、各ＮＡＮＤデバイス７ａ〜１０ａからデータの読出しや書込みを行う。例えば、ＣＰＵ３ａは、ＳＳＤ５ａに対し、読出し対象となるデータを指定する論理アドレスが格納された読出し要求を発行する。また、ＣＰＵ３ａは、データの書込み先を指定する論理アドレスと、書込み対象となるデータとが格納された書込み要求を発行する。
【００１９】
ＮＡＮＤデバイス７ａは、各種データを記憶する不揮発性メモリである。詳細には、ＮＡＮＤデバイス７ａは、データの記憶領域である物理ページを複数有し、物理ページ単位でデータの書込みを行う。また、ＮＡＮＤデバイス７ａは、複数の物理ページを有する物理ブロックを複数有し、ブロック単位でデータの消去を行う。ここで、１つの物理ページは、例えば、８キロバイトの記憶容量を有し、１つの物理ブロックは、例えば、１２８の物理ページを有する。
【００２０】
ＮＡＮＤコントローラ６ａは、各ＮＡＮＤデバイス７ａ〜１０ａに対してアクセスし、データの読出しや書込みを行う。例えば、ＮＡＮＤコントローラ６ａは、各ＣＰＵ３ａ、３ｂがデータが記憶された記憶領域を指定する際に用いる論理アドレスと、データが格納されたＮＡＮＤデバイス７ａ〜１０ａの記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。
【００２１】
そして、ＮＡＮＤコントローラ６ａは、読出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読出しを行う。その後、ＮＡＮＤコントローラ６ａは、Ｉ／Ｏハブ４を介して、読出したデータをＣＰＵ３ａに送信する。
【００２２】
なお、以下の説明では、理解を容易にするため、各物理ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各物理ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、情報処理装置１が実行するシステムは、各物理ページの先頭アドレスとなる論理アドレスに対する読出し要求や書込み要求を発行するものとする。
【００２３】
例えば、ＮＡＮＤコントローラ６ａは、ＮＡＮＤデバイス７ａ〜１０ａが、複数のブロックを有し、各ブロックに２ｑ個の物理ページが含まれている場合は、以下の処理を行う。まず、ＮＡＮＤコントローラ６ａは、論理アドレスの下位ｑビットを論理的な１つのブロック内において、物理ページを識別するための論理ページ番号とし、残りの論理アドレスの上位ｐビットを論理的な１つのブロックを示す論理ブロックアドレスとする。
【００２４】
また、ＮＡＮＤコントローラ６ａは、物理アドレスの上位ｐビットを物理的な１つのブロックを示す物理ブロックアドレスとし、物理アドレスの下位ｑビットを物理的な１つのブロック内において、各物理ページを識別するための物理ページ番号とする。つまり、ＮＡＮＤコントローラ６ａは、論理アドレスを、論理ブロックを示す論理ブロックアドレスと、論理ページを論理ブロックごとに示す論理ページ番号とに分割する。また、ＮＡＮＤコントローラ６ａは、物理アドレスを、物理ブロックを示す物理ブロックアドレスと、物理ページを物理ブロックごとに示す物理ページ番号とに分割する。
【００２５】
以下、図２を用いて、ＮＡＮＤコントローラ６ａが実行するメモリアクセスの一例について説明する。図２は、メモリアクセスの一例を説明する図である。なお、図２に示す例では、理解を容易にするため、ブロック数を「９」とし、各ブロック内の物理ページ数が「４」のＮＡＮＤデバイス７ａについて記載した。また、図２に示す例では、ＮＡＮＤコントローラ６ａが、論理ブロックアドレスと物理ブロックアドレスとを対応付けたアドレス変換テーブルを用いて、ＮＡＮＤデバイス７ａ〜１０ａが有する物理ページ単位でデータの書込みを行う処理について記載した。
【００２６】
例えば、ＮＡＮＤコントローラ６ａは、図２中（ａ）に示すように、ＣＰＵ３ａが実行するファイルシステムから、論理ブロックアドレス「Ｌ０」の論理ページ番号「３」、すなわち論理アドレス「Ｌ０−３」に書込み要求を発行する。すると、ＮＡＮＤコントローラ６ａは、アドレス変換テーブルを用いて、論理アドレス「Ｌ０−３」に対応付けられた物理アドレス「Ｐ４−３」を取得し、図２中（ｂ）に示すように、更新前のデータが格納されている物理ページを識別する。
【００２７】
続いて、ＮＡＮＤコントローラ６ａは、図２中（ｃ）に示すように、物理アドレス「Ｐ４−３」が示す物理ページのデータを読出し、読み出したデータを書込み対象のデータに更新し、更新後のデータを予備ブロックの空き物理ページに格納する。詳細な例を挙げると、ＮＡＮＤコントローラ６ａは、図２中（ｄ）に示すように、物理アドレス「Ｐ８−０」が示す物理ページに更新後のデータを格納する。その後、ＮＡＮＤコントローラ６ａは、図２中（ｅ）に示すように、論理アドレス「Ｌ０−３」と対応付けられていた物理アドレス「Ｐ４−３」を移動先の物理ページを示す「Ｐ８−０」に更新し、処理を終了する。
【００２８】
ここで、ＮＡＮＤデバイス７ａ〜１０ａに格納されたデータに対し、物理ページ単位で書込みや移動を行う場合は、１つの物理ブロック内に有効なデータと無効なデータとが混在する場合がある。例えば、図２に示す例では、ＮＡＮＤコントローラ６ａは、論理アドレス「Ｌ０−３」が示すデータを更新する際、物理ブロックアドレス「Ｐ４」が示す物理ブロック内のデータを無効化する。そして、ＮＡＮＤコントローラ６ａは、更新後のデータを物理ブロックアドレス「Ｐ８」が示す物理ブロックに格納する。このため、物理ブロックアドレス「Ｐ４」が示す物理ブロックには、有効なデータと無効なデータとが混在する。
【００２９】
ここで、ＮＡＮＤデバイス７ａ〜１０ａは、無効なデータが格納された物理ページに対してデータの上書きを行うことができず、あらかじめデータを消去した予備ブロックにデータの書込みを行う。しかしながら、有効なデータと無効なデータとが混在する物理ブロックが増えると、新たにデータを書込む予備ブロックを確保できなくなる。また、ＮＡＮＤデバイス７ａ〜１０ａは、データを保持するための素子を有する。かかる素子は、データの消去を行う際に劣化が進行し、劣化が進むと、電荷を適切に保持することができなくなる。
【００３０】
そこで、従来のＮＡＮＤコントローラは、有効なデータを整理して新たな予備ブロックを確保するデータ移動制御を実行する。以下、図３を用いて、従来のＮＡＮＤコントローラが実行するデータ移動制御の一例を説明する。また、以下の説明では、従来のＮＡＮＤコントローラをＮＡＮＤコントローラ５０と記載する。
【００３１】
図３は、従来のＮＡＮＤコントローラが実行する処理の一例を説明する図である。例えば、ＮＡＮＤコントローラ５０は、システムがデータを指定する際に使用する論理アドレスと、対応付けられた論理アドレスが示すデータが格納された物理アドレスとを対応付けたアドレス変換テーブルを有する。また、ＮＡＮＤコントローラ５０は、物理ブロックごとに、データの格納状況と、データが格納された時刻とが対応付けて格納された管理情報テーブルを有する。
【００３２】
ここで、図４は、従来のＮＡＮＤコントローラが有する管理情報テーブルの一例を説明する図である。図４に示すように、ＮＡＮＤコントローラ５０は、それぞれ異なる物理ブロックと対応付けられたエントリを有し、各エントリにページバリッドとタイムスタンプとを対応付けて記憶する。ここで、ページバリッドとは、対応付けられた物理ブロックの各物理ページに格納されたデータが有効であるか否かを示す情報である。また、タイムスタンプとは、対応付けられた物理ブロックにデータが格納された時刻を示す情報である。
【００３３】
図３に戻り、まず、ＮＡＮＤコントローラ５０が実行する読出し・書込み制御について説明する。例えば、ＮＡＮＤコントローラ５０は、図３中（ｆ）に示すように、Ｉ／Ｏハブ４から読出し要求を受信する。すると、ＮＡＮＤコントローラ５０は、読出し制御を実行する。例えば、ＮＡＮＤコントローラ５０は、図３中（ｇ）に示すように、アドレス変換テーブルを用いて論理アドレスを物理アドレスに変換する。
【００３４】
そして、ＮＡＮＤコントローラ５０は、図３中（ｈ）に示すように、変換後の物理アドレスを用いて、デバイスアクセス制御を実行する。詳細には、ＮＡＮＤコントローラ５０は、図３中（ｉ）に示すように、変換後の物理アドレスが示す記憶領域からデータの読出しを行う。この結果、ＮＡＮＤコントローラ５０は、図３中（ｊ）に示すように、読出し対象のデータを取得する。その後、ＮＡＮＤコントローラ５０は、図３中（ｋ）に示すように、読出したデータを取得すると、取得したデータを読出し要求元のＣＰＵへ出力する。
【００３５】
一方、ＮＡＮＤコントローラ５０は、データの更新に係る書込み要求を受信すると、図３中（ｇ）に示すように、アドレス変換テーブルを用いて、論理アドレスを物理アドレスに変換し、更新前のデータが格納された移動元物理アドレスを取得する。また、ＮＡＮＤコントローラ５０は、図３中（ｌ）に示すように、管理情報テーブルを閲覧し、データが格納されていない予備ブロックの物理アドレスを移動先物理アドレスとして取得する。
【００３６】
そして、ＮＡＮＤコントローラ５０は、図３中（ｈ）、（ｉ）に示すように、移動元物理アドレスが示す物理ページからデータを読出し、データの更新を行った後に、移動先物理アドレスが示す物理ページにデータを格納するようデバイスアクセス制御を実行する。この結果、ＮＡＮＤコントローラ５０は、図３中（ｊ）、（ｋ）に示すように、データの書込み要求に対する応答を取得する。すると、ＮＡＮＤコントローラ５０は、図３中（ｍ）に示すように、データの移動に応じて管理情報テーブルの更新を行う。
【００３７】
次に、ＮＡＮＤコントローラ５０が実行するデータ移動制御の一例を説明する。例えば、ＮＡＮＤコントローラ５０は、図３中（ｎ）に示すように、管理情報テーブルに格納されたページバリッド、または、タイムスタンプを用いて、データの移動対象とする物理ブロックを検索する。そして、ＮＡＮＤコントローラ５０は、図３中（ｏ）に示すように、データ移動制御を開始し、データの移動対象となる物理ブロックに格納された有効なデータを予備ブロックに移動させ、移動元の物理ブロックのデータを消去し、新たな予備ブロックとする。
【００３８】
例えば、ＮＡＮＤコントローラ５０は、有効なデータを整理することで、新たな予備ブロックを確保するガベージコレクション処理を実行する場合は、管理情報テーブルの各ページバリッドを参照する。そして、ＮＡＮＤコントローラ５０は、物理ブロックごとに、有効なデータが所定の数よりも少ないか否かを判定する。そして、ＮＡＮＤコントローラ５０は、有効なデータが所定の数よりも少ないと判定した物理ブロックをデータの移動対象とし、移動対象とした物理ブロックから有効なデータを予備ブロックに移動させる。
【００３９】
また、例えば、ＮＡＮＤコントローラ５０は、書込まれてから所定の時間が経過したデータを移動することで、素子の劣化を平準化するウェアレベリング処理を実行する場合は、管理情報テーブルの各タイムスタンプを参照する。そして、ＮＡＮＤコントローラ５０は、物理ブロックごとに、参照したタイムスタンプと現在の時刻を示すタイムスタンプとを比較し、データが書込まれてから所定の時間が経過したか否かを判定する。そして、ＮＡＮＤコントローラ５０は、データが書込まれてから所定の時間が経過したと判定した物理ブロックをデータの移動対象とし、移動対象とした物理ブロックから有効なデータを予備ブロックに移動させる。
【００４０】
ここで、ＮＡＮＤコントローラ５０は、ガベージコレクション処理やウェアレベリング処理等のデータ移動制御を実行した場合は、データの移動に応じて、アドレス変換テーブルの更新を行う。しかしながら、ＮＡＮＤコントローラ５０は、物理ブロックごとにページバリッド、または、タイムスタンプを管理する管理情報テーブルを用いて、データを移動させるか否かを判定する。このため、ＮＡＮＤコントローラ５０は、データ移動制御を行った後、移動させたデータの移動元物理アドレスを識別できるが、データの論理アドレスを識別できない。
【００４１】
また、例えば、ＮＡＮＤコントローラ５０は、集積回路等のハードウェアで構成される場合、論理アドレスをインデックスとしてアドレス変換テーブルから物理アドレスを取得する。しかしながら、物理アドレスをインデックスとしてアドレス変換テーブルから論理アドレスを特定し、特定した論理アドレスと対応付けられた物理アドレスを更新できるようＮＡＮＤコントローラ５０を構成するのは、困難である。
【００４２】
そこで、ＮＡＮＤコントローラ５０は、データの移動元物理アドレスを対応する論理アドレスに逆変換する手段を備える。例えば、ＮＡＮＤコントローラ５０は、物理アドレスをインデックスとし、物理アドレスを論理アドレスに逆変換するアドレス逆変換テーブルを有する。また、ＮＡＮＤコントローラ５０は、アドレス逆変換テーブルを用いて、データの移動元物理アドレスに対応する論理アドレスを特定する。そして、ＮＡＮＤコントローラ５０は、アドレス変換テーブルに格納された物理アドレスのうち、特定した論理アドレスと対応付けられた物理アドレスを移動先物理アドレスに更新する。
【００４３】
しかしながら、ＮＡＮＤコントローラ５０は、アドレス逆変換テーブル等、データの移動元物理アドレスを対応する論理アドレスに逆変換する手段を備えた場合は、回路規模が増大してしまう。また、ＮＡＮＤコントローラ５０は、データ移動制御を行うたびにアドレス変換テーブルとアドレス逆変換テーブルとの参照や更新を行うので、データの移動に係る処理時間が増大し、システムの性能を低下させてしまう。
【００４４】
そこで、実施例１に係るＮＡＮＤコントローラ６ａは、以下の処理を実行する。まず、ＮＡＮＤコントローラ６ａは、任意の手法で論理アドレスを１つ選択する。次に、ＮＡＮＤコントローラ６ａは、選択した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルから取得する。そして、ＮＡＮＤコントローラ６ａは、管理情報テーブルを用いて、取得した物理アドレスが示す物理ページを含む物理ブロックについて、データの移動を行うか否かを判定する。その後、ＮＡＮＤコントローラ６ａは、データの移動を行った場合は、アドレス変換テーブルに格納された物理アドレスのうち、選択した論理アドレスと対応付けられた物理アドレスを、移動先物理アドレスに更新する。
【００４５】
以下、図５を用いて、ＮＡＮＤコントローラ６ａが実行する処理の一例を説明する。図５は、実施例１に係るＮＡＮＤコントローラが実行する処理の一例を説明する図である。なお、図５に示す例では、ＮＡＮＤコントローラ６ａは、従来のＮＡＮＤコントローラ５０と同様のアドレス変換テーブル、および、管理情報テーブルを有するものとする。また、以下の説明では、ＮＡＮＤコントローラ６ａが実行する読出し・書込み制御については、従来のＮＡＮＤコントローラ５０と同様の制御を実行するものとして、説明を省略する。また、以下の説明では、ガベージコレクションでデータの移動を行うＮＡＮＤコントローラ６ａについて説明する。
【００４６】
例えば、ＮＡＮＤコントローラ６ａは、図５中（Ａ）に示すように、アドレス変換テーブルを参照し、先頭の論理アドレスを選択する。そして、ＮＡＮＤコントローラ６ａは、選択した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルから取得し、取得した物理アドレスの上位ビットから物理ブロックアドレスを特定する。また、ＮＡＮＤコントローラ６ａは、図５中（Ｂ）に示すように、管理情報テーブルを参照し、特定した物理ブロックアドレスと対応付けられたページバリッド、および、タイムスタンプに基づいて、物理ブロックのデータを移動させるか否かを判定する。
【００４７】
そして、ＮＡＮＤコントローラ６ａは、物理ブロックのデータを移動させると判定した場合は、図５中（Ｃ）に示すように、最初に選択した論理アドレスに対してデータ移動制御を実行する。具体的には、ＮＡＮＤコントローラ６ａは、アドレス変換テーブルから取得した、その論理アドレスに対応付けられた物理アドレスを移動元物理アドレスとする。また、ＮＡＮＤコントローラ６ａは、管理情報テーブルから予備ブロックの物理アドレスを移動先物理アドレスとして取得する。そして、ＮＡＮＤコントローラ６ａは、選択した論理アドレス、移動元物理アドレス、および、移動先物理アドレスを用いて、データ移動制御を実行する。
【００４８】
詳細には、ＮＡＮＤコントローラ６ａは、図５中（Ｄ）に示すように、移動元物理アドレスと移動先物理アドレスとを用いて、データの移動に係るデバイスアクセス制御を実行する。この結果、ＮＡＮＤコントローラ６ａは、図５中（Ｅ）に示すように、移動元物理アドレスが示す物理ページに格納されたデータを、移動先物理アドレスが示す物理ページに移動させる。そして、ＮＡＮＤコントローラ６ａは、図５中（Ｆ）、（Ｇ）に示すように、データの移動に係る応答を受信する。
【００４９】
すると、ＮＡＮＤコントローラ６ａは、図５中（Ｈ）に示すように、データの移動に応じて、管理情報テーブルの更新を行う。また、ＮＡＮＤコントローラ６ａは、図５中（Ｉ）に示すように、アドレス変換テーブルが記憶する物理アドレスのうち、選択した論理アドレスと対応付けられた物理アドレスを移動先物理アドレスに更新する。
【００５０】
すなわち、ＮＡＮＤコントローラ６ａは、物理ブロックごとにデータを移動させるか判定するのではなく、論理アドレスごとにデータを移動させるか否かを判定する。このため、ＮＡＮＤコントローラ６ａは、移動元物理アドレスを論理アドレスに変換するアドレス逆変換テーブルを有さずとも、アドレス変換テーブルの更新を行うことができる。この結果、ＮＡＮＤコントローラ６ａは、回路規模を縮小することができる。
【００５１】
次に、図６を用いて、ＮＡＮＤコントローラ６ａが有する機能構成の一例について説明する。図６は、実施例１に係るＮＡＮＤコントローラの機能構成を説明する図である。図６に示す例では、ＮＡＮＤコントローラ６ａは、テーブル記憶部１１、リクエスタインターフェース部１２、リクエスト調停部１３、テーブル制御部１４、デバイスアクセス制御部１５を有する。また、ＮＡＮＤコントローラ６ａは、タイマ１６、巡回参照制御部１７、データ移動制御部１８を有する。また、テーブル記憶部１１は、アドレス変換テーブル１９、管理情報テーブル２０を記憶する。
【００５２】
まず、図７、図８を用いて、テーブル記憶部１１が記憶するアドレス変換テーブル１９と、管理情報テーブル２０に格納された情報について説明する。図７は、実施例１に係るアドレス変換テーブルの一例を説明する図である。図７に示すように、アドレス変換テーブル１９には、論理アドレスごとに、有効フラグと、各論理アドレスが示すデータが格納された物理アドレスとが対応付けて格納されたエントリを有する。ここで、有効フラグとは、対応付けられた物理アドレスが示す物理ページに格納されたデータが有効なデータであるか否かを示すバリッドビットである。
【００５３】
例えば、図７に示す例では、アドレス変換テーブル１９には、論理アドレス「Ｌ０−０」と対応付けられたエントリに、有効フラグ「１」と、物理アドレス「Ｐ４−０」とが対応付けて格納されている。すなわち、アドレス変換テーブル１９は、物理アドレス「Ｐ４−０」が示すブロックに論理アドレス「Ｌ０−０」が指定する有効なデータが格納されている旨を示す。
【００５４】
同様に、図７に示す例では、アドレス変換テーブル１９には、論理アドレス「Ｌ０−１」と対応付けられたエントリに、有効フラグ「１」と、物理アドレス「Ｐ３−３」とが対応付けて格納されている。また、アドレス変換テーブル１９には、論理アドレス「Ｌ０−２」と対応付けられたエントリに、有効フラグ「１」と、物理アドレス「Ｐ２−２」とが対応付けて格納されている。また、アドレス変換テーブル１９には、論理アドレス「Ｌ１−０」と対応付けられたエントリに、有効フラグ「１」と、物理アドレス「Ｐ２−０」とが対応付けて格納されている。また、アドレス変換テーブル１９には、論理アドレス「Ｌ１−１」と対応付けられたエントリに、有効フラグ「１」と、物理アドレス「Ｐ１−２」とが対応付けて格納されている。
【００５５】
またアドレス変換テーブル１９には、論理アドレス「Ｌ０−３」と対応付けられたエントリに、有効フラグ「０」と、物理アドレス「Ｐ４−３」とが対応付けて格納されている。また、アドレス変換テーブル１９には、論理アドレス「Ｌ１−２」と対応付けられたエントリに、有効フラグ「０」と、物理アドレス「Ｐ３−２」が対応付けて格納されている。すなわち、アドレス変換テーブル１９は、物理アドレス「Ｐ４−３」、「Ｐ３−２」に格納されたデータが有効なデータではない旨を示す。
【００５６】
次に、図８を用いて、管理情報テーブル２０に格納される情報について説明する。図８は、実施例１に係る管理情報テーブルの一例を説明する図である。図８に示すように、管理情報テーブル２０には、物理ブロックアドレスと対応付けられたエントリに、ページバリッドと、タイムスタンプとが対応付けて格納される。
【００５７】
ここで、ページバリッドとは、対応付けられた物理ブロックアドレスが示す物理ブロックの各物理ページに格納されたデータが、有効なデータであるか否かを示すビット列である。例えば、管理情報テーブル２０は、１つの物理ブロックに、ｎ個の物理ページが含まれる場合は、ｎビットのビット列をページバリッドとする。また、管理情報テーブル２０は、物理ブロックに含まれる各物理ページとページバリッドの各ビットとを対応付け、有効なデータが格納された物理ページと対応付けたビットを「１」とする。また、管理情報テーブル２０は、有効なデータが格納されていない物理ページと対応付けたビットを「０」とする。なお、図８に示す例では、１つの物理ブロックに４つの物理ページが含まれる例について記載した。
【００５８】
また、タイムスタンプとは、対応付けられた物理ブロックアドレスが示す物理ブロックにデータが格納された際、タイマ１６がカウントしていたカウント値である。例えば、図８に示す例では、管理情報テーブル２０には、物理ブロックアドレス「Ｐ０」と対応付けられたエントリに、ページバリッド「１１０１」と、タイムスタンプ「１０５１６」とが対応付けて格納される。すなわち、管理情報テーブル２０は、物理ブロックアドレス「Ｐ０」が示す物理ブロックに含まれる物理ページのうち、物理ページ番号が「０」、「１」、「３」等の物理ページに格納されたデータが有効データである旨を示す。また、管理情報テーブル２０は、物理ブロックアドレス「Ｐ０」が示す物理ブロックに対して、タイマ１６のカウント値が「１０５１６」である際に、データの書込みが行われた旨を示す。
【００５９】
同様に、図８に示す例では、管理情報テーブル２０には、物理ブロックアドレス「Ｐ１」と対応付けられたエントリに、ページバリッド「１０１０」と、タイムスタンプ「９１２」とが対応付けて格納される。また、管理情報テーブル２０には、物理ブロックアドレス「Ｐ２」と対応付けられたエントリに、ページバリッド「０００１」と、タイムスタンプ「１２２９」とが対応付けて格納される。
【００６０】
なお、アドレス変換テーブル１９は、特許請求の範囲に記載された変換テーブルの一例である。また、管理情報テーブル２０は、特許請求の範囲に記載された時刻管理テーブル、有効管理テーブルの一例である。
【００６１】
図６に戻り、リクエスタインターフェース部１２は、ＣＰＵ３ａ、３ｂからＮＡＮＤデバイス７ａ〜１０ａに対するリクエストのインターフェースである。例えば、リクエスタインターフェース部１２は、ＣＰＵ３ａ、３ｂからＩ／Ｏハブ４を介して、論理アドレスを含む読出し要求を受信する。かかる場合は、リクエスタインターフェース部１２は、読出し要求をリクエスト調停部１３に出力する。また、リクエスタインターフェース部１２は、ＮＡＮＤデバイス７ａ〜１０ａから読出したデータをリクエスト調停部１３から受信すると、読出し要求の発行元となるＣＰＵ３ａ、３ｂに対して、データを送信する。
【００６２】
また、リクエスタインターフェース部１２は、ＣＰＵ３ａ、３ｂから、ＮＡＮＤデバイス７ａ〜１０ａに対して書込むデータと、書込み対象となるデータの論理アドレスとを含む書込み要求を受信する。かかる場合は、リクエスタインターフェース部１２は、受信した書込み要求をリクエスト調停部１３に出力する。また、リクエスタインターフェース部１２は、リクエスト調停部１３から、データ書込みが完了した旨の応答を受信すると、受信した応答を、書込み要求の発行元となるＣＰＵ３ａ、３ｂに対して、応答を送信する。
【００６３】
リクエスト調停部１３は、リクエスタインターフェース部１２、データ移動制御部１８、巡回参照制御部１７が発行する各種リクエストの調停を行う。詳細には、リクエスト調停部１３は、リクエスタインターフェース部１２から受信する読出し要求、又は、書込み要求を受信する。また、リクエスト調停部１３は、データ移動制御部１８から、ＮＡＮＤデバイス７ａ〜１０ａが記憶するデータを、現在記憶するブロックから他のブロックに移動するよう要求する移動要求を受信する。また、リクエスト調停部１３は、データ移動制御部１８から、物理ブロック内のデータを消去するよう要求する消去要求を受信する。また、リクエスト調停部１３は、巡回参照制御部１７から、アドレス変換テーブル１９または管理情報テーブル２０の参照を要求するテーブル参照要求を受信する。
【００６４】
そして、リクエスト調停部１３は、リクエスタインターフェース部１２、データ移動制御部１８、巡回参照制御部１７から受信する読出し要求、書込み要求、移動要求、消去要求、テーブル参照要求の調停を行う。例えば、リクエスト調停部１３は、ＣＰＵ３ａ、３ｂからＮＡＮＤデバイス７ａ〜１０ａに対するデータの読出しや書込みが阻害されないよう、リクエスタインターフェース部１２が発行する読出し要求、および、書込み要求を最優先で実行する。また、例えば、リクエスト調停部１３は、移動要求を消去要求、および、テーブル参照要求よりも優先して実行し、消去要求をテーブル参照要求よりも優先して実行する。
【００６５】
なお、リクエスト調停部１３が各要求を調停するルールについては、上述した処理に限定されるものではなく、任意のルールを適用してよい。例えば、リクエスト調停部１３は、管理情報テーブル２０に格納された情報を用いて、ＮＡＮＤデバイス７ａ〜１０ａの空き容量を算出し、算出した空き容量が所定の閾値よりも少ない場合は、消去要求を他の要求よりも優先して実行してもよい。
【００６６】
以下、リクエスト調停部１３が読出し要求、書込み要求、移動要求、消去要求、テーブル参照要求を受信した際に実行する処理の一例を説明する。例えば、リクエスト調停部１３は、読出し要求を受信すると、読出し要求に含まれる論理アドレスをテーブル制御部１４に出力する。そして、リクエスト調停部１３は、テーブル制御部１４から、読出し対象となる物理アドレスを受信すると、受信した物理アドレスを格納した読出し要求をデバイスアクセス制御部１５に発行する。その後、リクエスト調停部１３は、読出し対象となるデータをデバイスアクセス制御部１５から受信すると、受信したデータをリクエスタインターフェース部１２に出力する。
【００６７】
また、リクエスト調停部１３は、書込み要求を受信すると、書込み要求に含まれる論理アドレスをテーブル制御部１４に出力する。この結果、リクエスト調停部１３は、書込み対象のデータが新たなデータである場合は、データが格納されていない予備ブロックのうち、データの書込み先となるページの物理アドレスをテーブル制御部１４から受信する。
【００６８】
その後、リクエスト調停部１３は、テーブル制御部１４から受信した物理アドレスと、書込み対象のデータとを含む書込み要求をデバイスアクセス制御部１５に発行する。また、リクエスト調停部１３は、デバイスアクセス制御部１５からデータの書込みが完了した旨の応答を受信すると、データの書込み先となるページの物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求をテーブル制御部１４に出力する。そして、リクエスト調停部１３は、テーブル制御部１４から、テーブルの更新が終了した旨の応答を受信した場合は、リクエスタインターフェース部１２に、書込み要求に対する応答を出力する。
【００６９】
また、リクエスト調停部１３は、書込みがデータの更新を目的とする場合は、更新元のデータが格納されたページの物理アドレスを更新元物理アドレスとしてテーブル制御部１４から受信する。また、リクエスト調停部１３は、テーブル制御部１４から、予備ブロックに含まれるページの物理アドレス、すなわちデータの書込み先となるページの物理アドレスを更新先物理アドレスとして受信する。
【００７０】
そして、リクエスト調停部１３は、更新元物理アドレスと、更新先物理アドレスとをテーブル制御部１４から受信した場合は、データの更新を要求する更新要求をデバイスアクセス制御部１５に発行する。詳細には、リクエスト調停部１３は、更新元物理アドレスと、更新先物理アドレスと、書込むデータとを含む更新要求をデバイスアクセス制御部１５に発行する。
【００７１】
また、リクエスト調停部１３は、デバイスアクセス制御部１５からデータの書込みが完了した旨の応答を受信すると、以下の処理を実行する。まず、リクエスト調停部１３は、更新元物理アドレスと、更新先物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求をテーブル制御部１４に出力する。その後、リクエスト調停部１３は、テーブル制御部１４からテーブル更新要求に対する応答を受信すると、データの書込みが完了した旨の応答をリクエスタインターフェース部１２に出力する。
【００７２】
また、リクエスト調停部１３は、移動させるデータが格納された物理ページの物理アドレスである移動元物理アドレスと、移動させるデータを指定するための論理アドレスとを含む移動要求を受信する。また、リクエスト調停部１３は、テーブル制御部１４に問い合わせる等して、データの移動先となる物理ページの物理アドレスを移動先物理アドレスとして取得する。
【００７３】
そして、リクエスト調停部１３は、移動元物理アドレスと、移動先物理アドレスとを含む移動要求をデバイスアクセス制御部１５に発行する。また、リクエスト調停部１３は、デバイスアクセス制御部１５からデータの移動が完了した旨の応答を受信すると、以下の処理を実行する。すなわち、リクエスト調停部１３は、データ移動制御部１８から受信した移動対象のデータを指定する論理アドレスと、移動先物理アドレスと、移動元物理アドレスとを含むテーブル更新要求をテーブル制御部１４に出力する。そして、リクエスト調停部１３は、テーブル制御部１４からテーブル更新要求に対する応答を受信した場合は、データ移動制御部１８に対して、データの移動が完了した旨の応答を出力する。
【００７４】
また、リクエスト調停部１３は、データの消去対象となる物理ブロックを示す物理ブロックアドレスを含む消去要求を受信する。また、リクエスト調停部１３は、消去要求を受信すると、受信した消去要求をデバイスアクセス制御部１５に発行する。そして、リクエスト調停部１３は、デバイスアクセス制御部１５からデータの消去が完了した旨の応答を受信すると、データ移動制御部１８に対して、データの消去が完了した旨の応答を出力する。
【００７５】
また、リクエスト調停部１３は、テーブル参照要求を受信した場合は、テーブル制御部１４に対し、アドレス変換テーブル１９と管理情報テーブル２０の参照要求を送信する。そして、リクエスト調停部１３は、テーブル制御部１４からアドレス変換テーブル１９と管理情報テーブル２０とを受信すると、受信したアドレス変換テーブル１９と管理情報テーブル２０とを巡回参照制御部１７に出力する。
【００７６】
テーブル制御部１４は、論理アドレスに対応付けられた物理アドレスを取得する。また、テーブル制御部１４は、アドレス変換テーブル１９と管理情報テーブル２０との更新を行う。なお、テーブル制御部１４は、特許請求の範囲に記載の取得部、および、更新部の一例である。例えば、テーブル制御部１４は、リクエスト調停部１３から読出し要求に格納された論理アドレスを受信すると、アドレス変換テーブル１９を参照し、受信した論理アドレスと対応付けられた物理アドレスを取得する。そして、テーブル制御部１４は、取得した物理アドレスをリクエスト調停部１３に出力する。
【００７７】
また、テーブル制御部１４は、リクエスト調停部１３から書込み要求に格納された論理アドレスを受信すると、アドレス変換テーブル１９を参照し、受信した論理アドレスに、有効フラグ「１」が対応付けられているか判定する。そして、テーブル制御部１４は、受信した論理アドレスに有効フラグ「０」が対応付けられている場合、すなわち、書込み対象のデータが新たなデータである場合は、以下の処理を実行する。
【００７８】
まず、テーブル制御部１４は、管理情報テーブル２０を参照し、データが格納されていない物理ブロック、すなわち、予備ブロックを識別する。例えば、テーブル制御部１４は、管理情報テーブル２０を参照し、対応付けられたページバリッドがすべて「０」である物理ブロックを検索し、検出した物理ブロックを予備ブロックとする。そして、テーブル制御部１４は、予備ブロックに含まれる物理ページの物理アドレスをリクエスト調停部１３に出力する。
【００７９】
なお、テーブル制御部１４は、一度予備ブロックを識別すると、識別した予備ブロックに含まれる物理ページの全ての物理ページにデータが書込まれるまで、同一の予備ブロックに含まれる物理ページの物理アドレスを出力する。詳細には、テーブル制御部１４は、予備ブロックに含まれる物理ページのうち、データが書込まれていない物理ページの物理アドレスを、物理ページ番号の順に出力する。そして、テーブル制御部１４は、予備ブロックに含まれる全ての物理ページにデータが書込まれた場合は、管理情報テーブル２０を参照して、新たな予備ブロックを識別する。
【００８０】
一方、テーブル制御部１４は、受信した論理アドレスに有効フラグ「１」が対応付けられている場合、すなわち、書込みがデータの更新を目的とする場合は、以下の処理を実行する。まず、テーブル制御部１４は、受信した論理アドレスと対応付けられた物理アドレスを更新元物理アドレスとしてリクエスト調停部１３に出力する。また、テーブル制御部１４は、予備ブロックを識別し、識別した予備ブロックに含まれる物理ページのうち、データが格納されていない物理ページの物理アドレスを更新先物理アドレスとしてリクエスト調停部１３に出力する。
【００８１】
また、テーブル制御部１４は、リクエスト調停部１３が移動要求を受信した際には、リクエスト調停部１３から移動先物理アドレスの問い合わせを受ける。かかる場合は、テーブル制御部１４は、予備ブロックを識別し、識別した予備ブロックに含まれる物理ページのうち、データが格納されていない物理ページの物理アドレスを移動先物理アドレスとしてリクエスト調停部１３に出力する。
【００８２】
また、テーブル制御部１４は、データの書込み、移動、消去に応じて、アドレス変換テーブル１９、および、管理情報テーブル２０の更新を行う。例えば、テーブル制御部１４は、リクエスト調停部１３が新たなデータの書込みを行う場合は、データの書込み先となる物理ページの物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求を受信する。
【００８３】
かかる場合は、テーブル制御部１４は、テーブル更新要求から、データの書込み先となる物理ページの物理アドレスと、論理アドレスとを抽出する。そして、テーブル制御部１４は、アドレス変換テーブル１９を参照し、抽出した論理アドレスと対応付けられた有効フラグを「１」に更新する。また、テーブル制御部１４は、抽出した論理アドレスに対応付けて、抽出した物理アドレスをアドレス変換テーブル１９に格納する。
【００８４】
また、テーブル制御部１４は、抽出した物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたエントリを管理情報テーブル２０から抽出する。そして、テーブル制御部１４は、抽出したエントリのページバリッドのうち、抽出した物理アドレスの下位ビットである物理ページ番号と対応するビットを「１」に更新する。また、テーブル制御部１４は、タイマ１６の値を取得し、取得した値をタイムスタンプとして、抽出したエントリに格納する。その後、テーブル制御部１４は、テーブル更新要求に対する応答をリクエスト調停部１３に出力する。
【００８５】
また、テーブル制御部１４は、リクエスト調停部１３がデータの更新を行う場合は、更新元物理アドレスと、更新先物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求を受信する。かかる場合は、テーブル制御部１４は、テーブル更新要求から更新元物理アドレスと、更新先物理アドレスと、論理アドレスとを抽出する。そして、テーブル制御部１４は、アドレス変換テーブル１９を参照し、抽出した論理アドレスと対応付けられた物理アドレスを抽出した更新先物理アドレスに更新する。
【００８６】
また、テーブル制御部１４は、管理情報テーブル２０から、更新元物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたエントリを管理情報テーブル２０から抽出する。そして、テーブル制御部１４は、抽出したエントリのページバリッドのうち、抽出した更新元物理アドレスの下位ビットである物理ページ番号と対応するビットを「０」に更新する。
【００８７】
次に、テーブル制御部１４は、管理情報テーブル２０から、更新先物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたエントリを管理情報テーブル２０から抽出する。そして、テーブル制御部１４は、抽出したエントリのページバリッドのうち、抽出した更新先物理アドレスの下位ビットである物理ページ番号と対応するビットを「１」に更新する。また、テーブル制御部１４は、タイマ１６の値を取得し、取得した値をタイムスタンプとして、抽出したエントリに格納する。その後、テーブル制御部１４は、テーブル更新要求に対する応答をリクエスト調停部１３に出力する。
【００８８】
また、テーブル制御部１４は、リクエスト調停部１３がデータの移動を行う場合は、移動元物理アドレスと、移動先物理アドレスと、移動対象のデータを指定する論理アドレスとを含むテーブル更新要求を受信する。かかる場合は、テーブル制御部１４は、テーブル更新要求から移動元物理アドレスと、移動先物理アドレスと、論理アドレスとを抽出する。そして、テーブル制御部１４は、アドレス変換テーブル１９を参照し、抽出した論理アドレスと対応付けられた物理アドレスを抽出した移動先物理アドレスに更新する。
【００８９】
また、テーブル制御部１４は、管理情報テーブル２０から、移動元物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたエントリを管理情報テーブル２０から抽出する。そして、テーブル制御部１４は、抽出したエントリのページバリッドのうち、抽出した移動元物理アドレスの下位ビットである物理ページ番号と対応するビットを「０」に更新する。
【００９０】
次に、テーブル制御部１４は、管理情報テーブル２０から、移動先物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたエントリを管理情報テーブル２０から抽出する。そして、テーブル制御部１４は、抽出したエントリのページバリッドのうち、抽出した移動先物理アドレスの下位ビットである物理ページ番号と対応するビットを「１」に更新する。また、テーブル制御部１４は、タイマ１６の値を取得し、取得した値をタイムスタンプとして、抽出したエントリに格納する。その後、テーブル制御部１４は、テーブル更新要求に対する応答をリクエスト調停部１３に出力する。
【００９１】
また、テーブル制御部１４は、テーブル参照要求を受信した場合は、テーブル記憶部１１からアドレス変換テーブル１９と管理情報テーブル２０とを取得する。そして、テーブル制御部１４は、取得した管理情報テーブル２０をリクエスト調停部１３に出力する。なお、テーブル制御部１４は、例えば、情報処理装置１が実行するシステムから論理アドレスとデータとを対応付けを解消する旨の指示を受けると、アドレス変換テーブル１９を参照し、対象となる論理アドレスと対応付けられた有効フラグを「０」に更新する。
【００９２】
デバイスアクセス制御部１５は、リクエスト調停部１３からの各種リクエストに従って、ＮＡＮＤデバイス７ａ〜１０ａに対するデバイスアクセスを実行する。例えば、デバイスアクセス制御部１５は、リクエスト調停部１３から、物理アドレスを含む読出し要求を受信する。かかる場合は、デバイスアクセス制御部１５は、ＮＡＮＤデバイス７ａ〜１０ａが有するページのうち、読出し要求に格納されていた物理アドレスが示すページに格納されたデータの読み出しを実行する。そして、デバイスアクセス制御部１５は、読み出したデータをリクエスト調停部１３に出力する。
【００９３】
また、例えば、デバイスアクセス制御部１５は、リクエスト調停部１３から、物理アドレスと、書込み対象のデータとを含む書込み要求を受信する。かかる場合は、デバイスアクセス制御部１５は、書込み要求に含まれる物理アドレスが示す物理ページに書込み対象のデータを格納する。その後、デバイスアクセス制御部１５は、データの書込みを終了した旨の応答をリクエスト調停部１３に出力する。
【００９４】
また、例えば、デバイスアクセス制御部１５は、更新元物理アドレスと、更新先物理アドレスと、書込むデータとを含む更新要求をリクエスト調停部１３から受信する。かかる場合は、デバイスアクセス制御部１５は、更新元物理アドレスが示す物理ページのデータを読み出す。続いて、デバイスアクセス制御部１５は、読み出したデータを更新要求に含まれるデータに更新する。そして、デバイスアクセス制御部１５は、更新したデータを更新先物理アドレスが示す物理ページに格納する。その後、デバイスアクセス制御部１５は、データの書込みを終了した旨の応答をリクエスト調停部１３に出力する。
【００９５】
また、デバイスアクセス制御部１５は、移動元物理アドレスと、移動先物理アドレスとを含む移動要求をリクエスト調停部１３から受信する。かかる場合は、デバイスアクセス制御部１５は、移動元物理アドレスが示す物理ページからデータを読出し、読出したデータを移動先物理アドレスが示す物理ページに格納する。その後、デバイスアクセス制御部１５は、データの移動を終了した旨の応答をリクエスト調停部１３に出力する。
【００９６】
また、デバイスアクセス制御部１５は、データの消去対象となる物理ブロックを示す物理ブロックアドレス含む消去要求をリクエスト調停部１３から受信する。かかる場合は、デバイスアクセス制御部１５は、消去要求に含まれる物理ブロックアドレスが示す物理ブロックに格納されたデータを消去し、データの消去が完了した旨の応答をリクエスト調停部１３に出力する。
【００９７】
タイマ１６は、現在の時刻を示す値を計数するカウンタである。例えば、タイマ１６は、情報処理装置１の動作クロックやＮＡＮＤコントローラ６ａの動作クロックを用いて、所定の時間間隔でカウントを行う。また、タイマ１６は、所定の桁数のカウンタであり、桁あふれが発生した場合には、カウント値が初期値「０」に戻るカウンタである。
【００９８】
巡回参照制御部１７は、所定の時間が経過した場合やソフトウェアからの指示を受けた場合は、ウェアレベリングのための巡回参照制御を開始する。また、巡回参照制御部１７は、所定のタイミングで、ガベージコレクションに係る巡回参照制御を実行する。例えば、巡回参照制御部１７は、所定の時間間隔、所定の時刻、情報処理装置１が実行するアプリケーションプログラムの指示等を契機として、巡回参照制御を実行する。なお、巡回参照制御部１７は、特許請求の範囲に記載された選択部、判定部の一例である。
【００９９】
以下、巡回参照制御部１７が実行する巡回参照制御の処理内容について説明する。例えば、巡回参照制御部１７は、アドレス変換テーブル１９と管理情報テーブル２０との参照要求をリクエスト調停部１３に出力する。また、巡回参照制御部１７は、タイマ１６のカウント値を取得する。また、巡回参照制御部１７は、リクエスト調停部１３からアドレス変換テーブル１９と、管理情報テーブル２０とを受信する。
【０１００】
そして、巡回参照制御部１７は、移動判定処理の対象となる論理アドレスを１つ選択し、選択した論理アドレスについて、以下の移動判定処理を実行する。まず、巡回参照制御部１７は、アドレス変換テーブル１９を参照し、選択した論理アドレスと対応付けられた有効フラグの値が「１」であるか否かを判定する。そして、巡回参照制御部１７は、有効フラグの値が「０」である場合は、新たな移動判定処理の対象となる論理アドレス、例えば、次番の論理アドレスを新たに選択し、アドレス変換テーブル１９を参照し、有効フラグの値が「１」であるか否かを判定する。
【０１０１】
また、巡回参照制御部１７は、有効フラグの値が「１」である場合は、選択した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル１９から取得する。そして、巡回参照制御部１７は、管理情報テーブル２０を参照し、取得した物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたページバリッドとタイムスタンプとを確認する。
【０１０２】
そして、巡回参照制御部１７は、ウェアレベリングのための巡回参照制御を行っている場合は、確認したタイムスタンプの値と、タイマ１６のカウント値との差分が所定の閾値よりも大きいか否かを判定する。すなわち、巡回参照制御部１７は、タイムスタンプの値が所定の閾値よりも古いか否かを判定する。そして、巡回参照制御部１７は、確認したタイムスタンプの値が所定の閾値よりも古いと判定した場合は、取得した物理アドレスが示す物理ページを移動処理の対象とする。一方、巡回参照制御部１７は、タイムスタンプの値がが所定の閾値よりも新しいと判定した場合は、移動判定処理の対象となる論理アドレスを新たに１つ選択する。
【０１０３】
また、巡回参照制御部１７は、ガベージコレクションのための巡回参照制御を行っている場合は、確認したページバリッドの各ビットのうち、値が「１」となるビットの数を計数する。すなわち、巡回参照制御部１７は、取得した物理アドレスが示す物理ページと同じ物理ブロック内に格納された有効データの数を計数する。そして、巡回参照制御部１７は、計数した数が所定の閾値以下となる場合は、取得した物理アドレスが示す物理ページを移動処理の対象とする。一方、巡回参照制御部１７は、計数した数が所定の閾値よりも多い場合は、移動判定処理の対象となる論理アドレスを新たに１つ選択する。
【０１０４】
また、巡回参照制御部１７は、取得した物理アドレスが示す物理ページを移動処理の対象とした場合は、以下の処理を実行する。まず、巡回参照制御部１７は、取得したページバリッドの各ビットのうち、値が「１」となるビットの数が「１」であるか否かを判定する。そして、巡回参照制御部１７は、取得したページバリッドの各ビットのうち、値が「１」となるビットの数が「１」であると判定した場合、すなわち、データの移動により物理ブロックが空になると判定した場合は、以下の処理を実行する。すなわち、巡回参照制御部１７は、取得した物理アドレスと、選択した論理アドレスと、ブロックが空になる旨を示すラストフラグとの組をデータ移動制御部１８に出力する。その後、巡回参照制御部１７は、新たな移動判定処理の対象となる論理アドレスを選択する。
【０１０５】
一方、巡回参照制御部１７は、取得したページバリッドの各ビットのうち、値が「１」となるビットの数が「１」ではないと判定した場合は、取得した物理アドレスと、選択した論理アドレスとの組をデータ移動制御部１８に出力する。その後、巡回参照制御部１７は、新たな移動判定処理の対象となる論理アドレスを選択する。そして、巡回参照制御部１７は、全ての論理アドレスについて移動判定処理を実行した場合は、処理を終了する。
【０１０６】
以下、巡回参照制御部１７が実行する処理の一例を説明する。なお、以下の説明では、タイマ１６のカウント値が「１１２３０」であり、カウント値からタイムスタンプの値を減算した値が「１００００」以上の際に、移動制御を行うものとする。例えば、巡回参照制御部１７は、論理アドレス「Ｌ０−２」を選択する。
【０１０７】
かかる場合は、巡回参照制御部１７は、図７に示すアドレス変換テーブル１９から物理アドレス「Ｐ２−２」を取得する。続いて、巡回参照制御部１７は、物理アドレス「Ｐ２−２」から物理ブロックアドレス「Ｐ２」を識別する。そして、巡回参照制御部１７は、図８に示す管理情報テーブル２０から、物理ブロックアドレス「Ｐ２」と対応付けられたページバリッド「０００１」とタイムスタンプ「１２２９」を取得する。
【０１０８】
ここで、巡回参照制御部１７は、ウェアレベリングのための処理を行う場合は、タイマ１６のカウント値「１１２３０」からタイムスタンプ「１２２９」の値を減算した値が「１０００１」となるので、物理アドレス「Ｐ２−２」が示す物理ページを移動処理の対象とする。また、巡回参照制御部１７は、ガベージコレクションのための処理を行う場合は、ページバリッド「０００１」の各ビットのうち、値が「１」となるビットの数が「１」つであると判定する。この結果、巡回参照制御部１７は、処理を行う場合は、選択した論理アドレス「Ｌ０−２」と、物理アドレス「Ｐ２−２」と、ラストフラグとの組をデータ移動制御部１８に出力する。
【０１０９】
データ移動制御部１８は、データの移動を行う。具体的には、データ移動制御部１８は、巡回参照制御部１７から、論理アドレスと物理アドレスとの組、または、論理アドレスと物理アドレスとラストフラグとの組を受信する。ここで、データ移動制御部１８は、論理アドレスと物理アドレスとの組を受信した場合は、以下の処理を実行する。
【０１１０】
すなわち、データ移動制御部１８は、受信した組に含まれる物理アドレスを移動元物理アドレスとし、移動元物理アドレスと、受信した組に含まれる論理アドレスとを含む移動要求をリクエスト調停部１３に出力する。そして、データ移動制御部１８は、リクエスト調停部１３からデータの移動が完了した旨の応答を受信した場合は、受信した組に含まれる物理アドレスが示す物理ページのデータ移動処理を終了する。
【０１１１】
一方、データ移動制御部１８は、論理アドレスと物理アドレスとラストフラグとの組を巡回参照制御部１７から受信した場合は、以下の処理を実行する。まず、データ移動制御部１８は、受信した組に含まれる物理アドレスを移動元物理アドレスとし、移動元物理アドレスと、受信した組に含まれる論理アドレスとを含む移動要求をリクエスト調停部１３に出力する。
【０１１２】
そして、データ移動制御部１８は、データの移動が完了した旨の応答を受信した場合は、受信した組に含まれる物理アドレスの上位ビットである物理ブロックアドレスを含む消去要求をリクエスト調停部１３に出力する。その後、データ移動制御部１８は、リクエスト調停部１３からデータの消去が完了した旨の応答を受信した場合は、受信した組に含まれる物理アドレスが示す物理ページのデータ移動処理を終了する。なお、データ移動制御部１８は、特許請求の範囲に記載された移動部の一例である。
【０１１３】
例えば、データ移動制御部１８は、巡回参照制御部１７から、論理アドレス「Ｌ０−２」と、物理アドレス「Ｐ２−２」と、ラストフラグとの組を受信する。かかる場合は、データ移動制御部１８は、移動元物理アドレス「Ｐ２−２」と、論理アドレス「Ｌ０−２」とを含む移動要求をリクエスト調停部１３に出力する。そして、データ移動制御部１８は、データの移動が完了した旨の応答を受信した場合は、物理ブロックアドレス「Ｐ２」を含む消去要求をリクエスト調停部１３に出力する。この結果、ＮＡＮＤコントローラ６ａは、物理ブロックアドレス「Ｐ２」が示す物理ブロックのデータを消去し、新たな予備ブロックとする。
【０１１４】
なお、例えば、リクエスタインターフェース部１２、リクエスト調停部１３、テーブル制御部１４、デバイスアクセス制御部１５、タイマ１６、巡回参照制御部１７、データ移動制御部１８とは、電子回路である。ここで、電子回路の例として、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などを適用する。
【０１１５】
また、テーブル記憶部１１とは、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（flash  memory）などの半導体メモリ素子などの記憶装置である。
【０１１６】
次に、図９を用いて、ＮＡＮＤコントローラ６ａが実行する処理の一例について説明する。図９は、実施例１に係るＮＡＮＤコントローラが実行する処理の一例を説明する図である。なお、図９に示す例では、理解を容易にするため、アドレス変換テーブル１９の有効フラグの記載を省略した。また、図９に記載したＮＡＮＤデバイス７ａの物理ページのうち、斜線が引かれた物理ページについては、有効ではないデータが格納された物理ページであるものとする。
【０１１７】
例えば、ＮＡＮＤコントローラ６ａは、論理アドレス「Ｌ０−２」を選択する。また、ＮＡＮＤコントローラ６ａは、アドレス変換テーブル１９から、論理アドレス「Ｌ０−２」と対応付けられた物理アドレス「Ｐ２−２」を取得する。かかる場合、ＮＡＮＤコントローラ６ａは、図９中（Ｉ）に示す物理ページに格納されたデータを移動するか否か判定する。詳細には、ＮＡＮＤコントローラ６ａは、図９中（Ｊ）に示すように、管理情報テーブル２０を参照し、図９中（Ｋ）に示すように、物理アドレス「Ｐ２−２」の物理ブロックアドレス「Ｐ２」と対応付けられたエントリを抽出する。そして、ＮＡＮＤコントローラ６ａは、図９中（Ｌ）に示すように、ガベージコレクションに係る処理を行う場合は、抽出したエントリに格納されたページバリッド「１１１０」に応じて、データの移動を行うか否かを判定する。
【０１１８】
また、ＮＡＮＤコントローラ６ａは、データの移動を行うと判定した場合は、以下の処理を実行する。例えば、ＮＡＮＤコントローラ６ａは、図９中（Ｍ）に示すように、物理アドレス「Ｐ２−２」が示す物理ページに格納されたデータを、予備ブロックに含まれる物理ページ「Ｐ８−０」に格納する。ここで、ＮＡＮＤコントローラ６ａは、移動対象のデータを示す論理アドレス「Ｌ０−２」を識別済みであるので、物理アドレス「Ｐ２−２」を論理アドレス「Ｌ０−２」に逆変換せずとも、アドレス変換テーブル１９を更新することができる。すなわち、ＮＡＮＤコントローラ６ａは、図９中（Ｎ）に示すように、選択した論理アドレス「Ｌ０−２」と対応付けられた物理アドレスを「Ｐ８−０」に更新すればよい。
【０１１９】
また、ＮＡＮＤコントローラ６ａは、図９中（Ｏ）に示すように、管理情報テーブル２０を参照し、物理ブロックアドレス「Ｐ２」と対応付けられたページバリッドを「１１００」に更新する。つまり、ＮＡＮＤコントローラ６ａは、ページバリッドのうち、移動元の物理ページを示す物理アドレス「Ｐ２−２」と対応するビットを「０」に更新する。また、ＮＡＮＤコントローラ６ａは、図９中（Ｐ）に示すように、管理情報テーブル２０を参照し、物理ブロックアドレス「Ｐ８」と対応付けられたページバリッドを「１０００」に更新する。つまり、ＮＡＮＤコントローラ６ａは、ページバリッドのうち、移動先の物理ページを示す物理アドレス「Ｐ８−０」と対応するビットを「１」に更新する。
【０１２０】
次に、図１０を用いて、ＮＡＮＤコントローラ６ａが実行する処理の流れについて説明する。図１０は、実施例１に係るＮＡＮＤコントローラが実行する処理の概要を説明するフローチャートである。例えば、ＮＡＮＤコントローラ６ａは、所定の時間が経過した場合や、ソフトウェアからの指示を受けた場合は、図１０に示すガベージコレクションのためのデータ移動制御を実行する。詳細には、ＮＡＮＤコントローラ６ａは、ガベージコレクションのための移動判定処理の対象となる論理アドレスを選択する（ステップＳ１０１）。
【０１２１】
次に、ＮＡＮＤコントローラ６ａは、アドレス変換テーブル１９を参照し（ステップＳ１０２）、選択した論理アドレスと対応する物理アドレスを取得する（ステップＳ１０３）。そして、ＮＡＮＤコントローラ６ａは、管理情報テーブル２０を参照し（ステップＳ１０４）、取得した物理アドレスと対応する管理情報を確認する（ステップＳ１０５）。すなわち、ＮＡＮＤコントローラ６ａは、取得した物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたページバリッドを確認する（ステップＳ１０５）。
【０１２２】
そして、ＮＡＮＤコントローラ６ａは、確認した管理情報を用いて、データの移動を行うか否かを判定する（ステップＳ１０６）。また、ＮＡＮＤコントローラ６ａは、データの移動を行うと判定した場合は（ステップＳ１０６肯定）、データの移動を実行する（ステップＳ１０７）。詳細には、ＮＡＮＤコントローラ６ａは、ステップＳ１０３にて取得した物理アドレスが示す物理ページに格納されていたデータを、予備ブロックの物理ページに移動する。
【０１２３】
そして、ＮＡＮＤコントローラ６ａは、データの移動に応じて、アドレス変換テーブル１９と管理情報テーブル２０とを更新する（ステップＳ１０８）。続いて、ＮＡＮＤコントローラ６ａは、全ての論理アドレスを移動判定処理の対象としたか否かを判定する（ステップＳ１０９）。そして、ＮＡＮＤコントローラ６ａは、全ての論理アドレスを移動判定処理の対象とした場合は（ステップＳ１０９肯定）、処理を終了する。
【０１２４】
一方、ＮＡＮＤコントローラ６ａは、全ての論理アドレスを移動判定処理の対象としていない場合は（ステップＳ１０９否定）、ステップＳ１０１を実行する。また、ＮＡＮＤコントローラ６ａは、データの移動を行なわないと判定した場合は（ステップＳ１０６否定）、ステップＳ１０７、Ｓ１０８の処理をスキップする。
【０１２５】
次に、図１１を用いて、ＮＡＮＤコントローラ６ａがガベージコレクションおよびウェアレベリングのためのデータの移動を行うか否かを判定する処理、すなわちＮＡＮＤコントローラ６ａが実行する巡回参照制御の詳細を説明する。図１１は、実施例１に係るＮＡＮＤコントローラが実行する巡回参照制御の流れを説明するフローチャートである。なお、図１１に示すフローチャートは、図１０に示す処理を詳細にしたフローチャートである。また、図１１に示す処理のうち、図１０に示す処理と同様の処理については、図１０と同一のステップ番号を付し、説明を省略する。
【０１２６】
例えば、ＮＡＮＤコントローラ６ａは、アドレス変換テーブル１９を参照し（ステップＳ２０１）、選択した論理アドレスと対応付けられた有効フラグが「１」であるか否かを判定する（ステップＳ２０２）。そして、ＮＡＮＤコントローラ６ａは、有効フラグが「１」である場合は（ステップＳ２０２肯定）、アドレス変換テーブル１９から対応する物理アドレスを取得する（ステップＳ２０３）。また、ＮＡＮＤコントローラ６ａは、管理情報テーブル２０を参照し（ステップＳ２０４）、取得した物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたページバリッドとタイムスタンプとを確認する（ステップＳ２０５）。
【０１２７】
そして、ＮＡＮＤコントローラ６ａは、確認したタイムスタンプが所定の時間よりも古い値であるか否かを判定し（ステップＳ２０６）、所定の時間よりも古い値である場合は（ステップＳ２０６肯定）、データの移動を実行する（ステップＳ２０７）。また、ＮＡＮＤコントローラ６ａは、データの移動により、物理ブロックが空になかったか否かを判定する（ステップＳ２０８）。そして、ＮＡＮＤコントローラ６ａは、物理ブロックが空になったと判定した場合は（ステップＳ２０８肯定）、空になった物理ブロックのデータを消去する（ステップＳ２０９）。
【０１２８】
一方、ＮＡＮＤコントローラ６ａは、物理ブロックが空ではないと判定した場合は（ステップＳ２０８否定）、ステップＳ２０９をスキップする。そして、ＮＡＮＤコントローラ６ａは、データの移動、および、物理ブロックのデータの消去に応じて、アドレス変換テーブル１９、および、管理情報テーブル２０を更新する（ステップＳ２１０）。そして、ＮＡＮＤコントローラ６ａは、ステップＳ１０９を実行する。
【０１２９】
一方、ＮＡＮＤコントローラ６ａは、確認したタイムスタンプが所定の時間よりも新しい値である場合は（ステップＳ２０６否定）、ページバリッドに含まれる各ビットのうち、値が「１」であるビットの数が閾値以下であるか否かを判定する（ステップＳ２１１）。そして、ＮＡＮＤコントローラ６ａは、ページバリッドに含まれる各ビットのうち、値が「１」であるビットの数が閾値以下であると判定した場合は（ステップＳ２１１肯定）、ステップＳ２０７を実行する。
【０１３０】
また、ＮＡＮＤコントローラ６ａは、ページバリッドに含まれる各ビットのうち、値が「１」であるビットの数が閾値より多いと判定した場合は（ステップＳ２１１否定）、ステップＳ１０９を実行する。また、ＮＡＮＤコントローラ６ａは、選択した論理アドレスと対応付けられた有効フラグが「０」である場合は（ステップＳ２０２否定）、ステップＳ１０９を実行する。
【０１３１】
［ＮＡＮＤコントローラ６ａの効果］
上述したように、ＮＡＮＤコントローラ６ａは、複数の物理ページを有するＮＡＮＤデバイス７ａ〜１０ａと、ＮＡＮＤデバイス７ａ〜１０ａを制御するＮＡＮＤコントローラ６ａを有する。ここで、ＮＡＮＤコントローラ６ａは、論理アドレスを選択し、論理アドレスと物理アドレスとが対応付けられたアドレス変換テーブル１９から、選択した論理アドレスと対応付けられた物理アドレスを取得する。
【０１３２】
そして、ＮＡＮＤコントローラ６ａは、取得した物理アドレスが示す物理ページに格納されたデータを移動させるか否かを判定する。また、ＮＡＮＤコントローラ６ａは、取得した物理アドレスが示す物理ページに格納されたデータを移動させると判定した場合は、取得した物理アドレスが示す物理ページのデータを予備ブロックの物理ページに移動させる。そして、ＮＡＮＤコントローラ６ａは、アドレス変換テーブル１９が記憶する各物理アドレスのうち、選択した論理アドレスと対応付けられた物理アドレスを、データの移動先となる物理ページの物理アドレスに更新する。
【０１３３】
すなわち、ＮＡＮＤコントローラ６ａは、物理ブロック単位ではなく、論理アドレス単位で、データを移動させるか否かを判定する。このため、ＮＡＮＤコントローラ６ａは、移動元の物理ページを示す物理アドレスを、移動させるデータの論理アドレスに逆変換する手段を有さずとも、アドレス変換テーブル１９を更新することができる。この結果、ＮＡＮＤコントローラ６ａは、回路規模を縮小することができる。
【０１３４】
また、ＮＡＮＤコントローラ６ａは、物理アドレスから論理アドレスへの逆変換を行わないで、データの移動を完了することができる。このため、例えば、ＮＡＮＤコントローラ６ａは、ＮＡＮＤデバイス７ａ〜１０ａの記憶容量が増大し、アドレス変換テーブル１９が大規模化した場合にも、高速にデータの移動を完了することができる。
【０１３５】
また、ＮＡＮＤコントローラ６ａは、アドレス変換テーブル１９から、全ての論理アドレスを番号順に選択する。このため、ＮＡＮＤコントローラ６ａは、論理アドレス単位でデータの移動制御を実行した場合にも、全てのデータについて移動を行うか否かを判定するので、予備ブロックの確保や劣化の平準化を確実に行うことができる。
【０１３６】
また、ＮＡＮＤコントローラ６ａは、物理ブロックごとにタイムスタンプを記憶する管理情報テーブル２０から、アドレス変換テーブル１９から取得された物理アドレスを含む物理ブロックのタイムスタンプを参照する。そして、ＮＡＮＤコントローラ６ａは、参照したタイムスタンプの値とタイマ１６のカウント値との差が所定の閾値よりも大きい場合は、アドレス変換テーブル１９から取得された物理アドレスが示す物理ページに格納されたデータを移動させる。このため、ＮＡＮＤコントローラ６ａは、格納されてから所定の時間が経過したデータを移動させるので、素子の劣化を平準化することができる。
【０１３７】
また、ＮＡＮＤコントローラ６ａは、物理ブロックごとにページバリッドを記憶する管理情報テーブル２０から、アドレス変換テーブル１９から取得された物理アドレスを含む物理ブロックのページバリッドを参照する。そして、ＮＡＮＤコントローラ６ａは、参照したページバリッドに含まれるビットのうち、値が「１」となるビットの数が所定の閾値よりも多い場合は、アドレス変換テーブル１９から取得された物理アドレスが示す物理ページに格納されたデータを移動させる。このため、ＮＡＮＤコントローラ６ａは、有効なデータが少ない物理ブロックから、データを予備ブロックに移動させ、移動元の物理ブロックを新たな予備ブロックとすることができる。この結果、ＮＡＮＤコントローラ６ａは、ＮＡＮＤデバイス７ａ〜１０ａが有する記憶容量を効率的に用いることができる。
【実施例２】
【０１３８】
上述したＮＡＮＤコントローラ６ａは、ガベージコレクションのための巡回参照制御を開始すると、アドレス変換テーブル１９の全ての論理アドレスを順次選択し、選択した論理アドレスが示すデータを移動させるか否か判定した。しかし、実施例はこれに限定されるものではない。例えば、実施例２に係るＮＡＮＤコントローラ６ｃは、ガベージコレクションのための巡回参照制御を１回実行する際に、アドレス変換テーブル１９の全ての論理アドレスのうち、一部の論理アドレスのみを選択してもよい。
【０１３９】
以下、ＮＡＮＤコントローラ６ｃが実行する処理について説明する。まず、図１２を用いて、ＮＡＮＤコントローラ６ｃの機能構成について説明する。図１２は、実施例２に係るＮＡＮＤコントローラの機能構成を説明する図である。なお、図１２に示すＮＡＮＤコントローラ６ｃの機能構成のうち、図６に示すＮＡＮＤコントローラ６ａの機能構成と同様の機能構成については、同一の符号を付し、説明を省略する。
【０１４０】
図１２に示す例では、ＮＡＮＤコントローラ６ｃは、巡回参照制御部１７ａと巡回済対象記憶部２１とを有する。巡回済対象記憶部２１は、巡回参照制御部１７ａが判定処理を行った対象を記憶するためのメモリである。巡回参照制御部１７ａは、図６に示す巡回参照制御部１７と同様の機能を有し、所定の時間間隔でガベージコレクションのための巡回参照制御を実行する。
【０１４１】
ここで、巡回参照制御部１７ａは、アドレス変換テーブル１９に格納された各論理アドレスを、若番順に選択する。例えば、巡回参照制御部１７ａは、論理アドレス「Ｌ０−０」を選択し、選択した論理アドレス「Ｌ０−０」を移動判定処理の対象とする。次に、巡回参照制御部１７ａは、論理アドレス「Ｌ０−１」を選択し、選択した論理アドレス「Ｌ０−１」を移動判定処理の対象とする。その後も、巡回参照制御部１７ａは、論理アドレスを若番順に選択し、選択した論理アドレスを移動判定処理の対象とする。
【０１４２】
ここで、巡回参照制御部１７ａは、ガベージコレクションのための巡回参照制御を開始してから所定の時間が経過した場合は、最後に移動判定処理の対象とした論理アドレス、つまり、最後に選択した論理アドレスを巡回済対象記憶部２１に格納する。その後、巡回参照制御部１７ａは、巡回参照制御を再開した場合は、巡回済対象記憶部２１に格納した論理アドレスを取得し、取得した論理アドレスの次番の論理アドレスを選択する。そして、巡回参照制御部１７ａは、選択した論理アドレスを移動判定処理の対象とする。
【０１４３】
例えば、巡回参照制御部１７ａは、論理アドレス「Ｌ３−２」を移動判定処理の対象とした際に、巡回参照制御を開始してから所定の時間が経過した場合は、以下の処理を実行する。まず、巡回参照制御部１７ａは、論理アドレス「Ｌ３−２」が示すデータの移動判定を行い、移動判定処理が終了した後に、論理アドレス「Ｌ３−２」を巡回済対象記憶部２１に格納する。かかる場合、巡回参照制御部１７ａは、巡回参照制御を再開すると、巡回済対象記憶部２１から論理アドレス「Ｌ３−２」を取得する。このため、巡回参照制御部１７ａは、論理アドレス「Ｌ３−２」の次番の論理アドレス「Ｌ３−３」を選択し、選択した論理アドレス「Ｌ３−３」を移動判定処理の対象とする。
【０１４４】
なお、巡回参照制御部１７ａは、所定の時間内で判別対象を区切るのではなく、他の方法で判別対象を区切ってもよい。例えば、巡回参照制御部１７ａは、論理アドレスを所定の数ごとにグループ分けする。そして、巡回参照制御部１７ａは、一回の巡回参照制御で、１つのグループに含まれる論理アドレスに対して移動判定処理を実行してもよい。
【０１４５】
例えば、巡回参照制御部１７ａは、論理アドレス「Ｌ０−０」〜「Ｌ３−３」をグループ「Ｎｏ１」とし、物理ブロックアドレス「Ｌ４−０」〜「Ｌ７−３」をグループ「Ｎｏ２」とする。すなわち、巡回参照制御部１７ａは、連続する１６個の論理アドレスを１つのグループとする。そして、巡回参照制御部１７ａは、グループ「Ｎｏ１」に含まれる各論理アドレスについて、移動判定処理を実行する。
【０１４６】
また、巡回参照制御部１７ａは、グループ「Ｎｏ１」に含まれる各論理アドレスについて移動判定処理を実行した場合は、移動判定処理を実行済のグループを示す情報として、「Ｎｏ１」を巡回済対象記憶部２１に格納する。そして、巡回参照制御部１７ａは、巡回参照制御の再開時には、巡回済対象記憶部２１から移動判定処理を実行したグループを示す情報「Ｎｏ１」を取得する。かかる場合は、巡回参照制御部１７ａは、グループ「Ｎｏ１」の次のグループ「Ｎｏ２」に含まれる各論理アドレスについて、移動判定処理を実行する。
【０１４７】
なお、巡回参照制御部１７ａは、グループを示す情報として、任意の情報を用いることができる。例えば、巡回参照制御部１７ａは、論理アドレスの上位ビット、例えば、論理ブロックアドレスごとにグループ分けを行う場合は、移動判定処理を終了した論理アドレスの論理ブロックアドレスを巡回済対象記憶部２１に格納してもよい。
【０１４８】
次に、図１３を用いて、ＮＡＮＤコントローラ６ｃが実行する処理の流れについて説明する。図１３は、実施例２に係るＮＡＮＤコントローラが実行する処理の流れを説明する第１のフローチャートである。なお、図１３に示す例では、ＮＡＮＤコントローラ６ｃが、所定の時間内で移動判定処理の対象を区切る例について記載した。また、図１３に示す処理のうち、図１１に示す処理と同様の処理については、図１１と同一のステップ番号を付し、説明を省略する。
【０１４９】
例えば、ＮＡＮＤコントローラ６ｃは、巡回参照制御を実行する場合は、巡回済対象記憶部２１から、前回、移動判定処理が終了した論理アドレスを読出す（ステップＳ３０１）。次に、ＮＡＮＤコントローラ６ｃは、読出した論理アドレスの次番の論理アドレスを選択し、移動判定処理の対象とする（ステップＳ３０２）。そして、ＮＡＮＤコントローラ６ｃは、ステップＳ２０１〜ステップＳ２１１の処理を実行する。
【０１５０】
また、ＮＡＮＤコントローラ６ｃは、ステップＳ２０１〜ステップＳ２１１の処理を実行した場合は、巡回参照制御を開始してから所定の時間が経過したか否かを判定する（ステップＳ３０３）。そして、ＮＡＮＤコントローラ６ｃは、巡回参照制御を開始してから所定の時間が経過したと判定した場合は（ステップＳ３０３肯定）、移動判定処理済みの論理アドレスを巡回済対象記憶部２１に保存し（ステップＳ３０４）、処理を終了する。一方、ＮＡＮＤコントローラ６ｃは、巡回参照制御を開始してから所定の時間が経過していない場合は（ステップＳ３０３否定）、ステップＳ３０２の処理を実行する。
【０１５１】
次に、図１４を用いて、ＮＡＮＤコントローラ６ｃが実行する処理の他の例について説明する。図１４は、実施例２に係るＮＡＮＤコントローラが実行する処理の流れを説明する第２のフローチャートである。なお、図１４に示す例では、ＮＡＮＤコントローラ６ｃが、論理アドレスを所定の数ごとにグループ分けし、１回のガベージコレクションのための巡回参照制御で１つのグループに含まれる論理アドレスを移動判定処理の対象となる例について記載した。また、図１４に示す処理のうち、図１１に示す処理と同様の処理については、図１１と同一のステップ番号を付し、説明を省略する。
【０１５２】
まず、ＮＡＮＤコントローラ６ｃは、巡回参照制御を実行する場合は、巡回済対象記憶部２１から、前回、判定処理が終了したグループのグループＮｏを読み出す（ステップＳ４０１）。次に、ＮＡＮＤコントローラ６ｃは、読み出したグループＮｏの次のグループＮｏが示すグループを巡回参照制御の対象に設定する（ステップＳ４０２）。そして、ＮＡＮＤコントローラ６ｃは、巡回参照制御の対象となるグループに含まれる各論理アドレスから、移動判定処理の対象となる論理アドレスを選択し（ステップＳ４０３）、ステップＳ２０１〜ステップＳ２１１の処理を実行する。
【０１５３】
また、ＮＡＮＤコントローラ６ｃは、ステップＳ２０１〜ステップＳ２１１を実行すると、巡回参照制御の対象となるグループに含まれる全ての論理アドレスについて、移動判定処理が完了したか判定する（ステップＳ４０４）。そして、ＮＡＮＤコントローラ６ｃは、巡回参照制御の対象となるグループに含まれる全ての論理アドレスについて、移動判定処理を行ったと判定した場合は（ステップＳ４０４肯定）、以下の処理を実行する。すなわち、ＮＡＮＤコントローラ６ｃは、巡回参照制御の対象となったグループのグループＮｏを巡回済対象記憶部２１に格納し（ステップＳ４０５）、処理を終了する。一方、ＮＡＮＤコントローラ６ｃは、巡回参照制御の対象となるグループに含まれる全ての論理アドレスについて、移動判定処理を行っていないと判定した場合は（ステップＳ４０４否定）、ステップＳ４０３を実行する。
【０１５４】
［ＮＡＮＤコントローラ６ｃの効果］
上述したように、ＮＡＮＤコントローラ６ｃは、巡回参照制御を開始してから所定の時間が経過した場合は、最後に移動判定処理の対象となった論理アドレスを記憶する。その後、ＮＡＮＤコントローラ６ｃは、巡回参照制御の再開時には、記憶した論理アドレスの次番の論理アドレスから順番に、巡回参照制御を再開する。
【０１５５】
このため、ＮＡＮＤコントローラ６ｃは、巡回参照制御を１回実行する際の処理時間を短縮することができる。この結果、ＮＡＮＤコントローラ６ｃは、例えば、情報処理装置１が処理を実行していない夜間等に、巡回参照制御を実行する等、柔軟なスケジューリングを実現することができる。また、ＮＡＮＤコントローラ６ｃは、巡回参照制御によってＮＡＮＤデバイス７ａ〜１０ａにアクセスできない時間を短縮化するので、ＮＡＮＤデバイス７ａ〜１０ａに対するアクセス性能を向上させることができる。
【０１５６】
また、ＮＡＮＤコントローラ６ｃは、論理アドレスを複数のグループに分割し、グループごとに、巡回参照制御を実行する。このため、ＮＡＮＤコントローラ６ｃは、巡回参照制御を１回実行する際の処理時間を短縮し、柔軟なスケジューリングを実現できる。また、ＮＡＮＤコントローラ６ｃは、ＮＡＮＤデバイス７ａ〜１０ａに対するアクセス性能を向上させることができる。
【実施例３】
【０１５７】
上述したＮＡＮＤコントローラ６ａ〜６ｃは、移動判定処理を実行する際に、管理情報テーブル２０に格納されたページバリッド、および、タイムスタンプを用いて、データを移動させるか否かを判定した。しかしながら、実施例は、これに限定されるものではない。
【０１５８】
例えば、ＮＡＮＤコントローラ６ａ〜６ｃは、ＮＡＮＤコントローラ６ａ〜６ｃの記憶容量を効果的に使用する観点から、無効となったデータを含む物理ページが存在する物理ブロックのデータのみを移動させた方がよい。しかしながら、ＮＡＮＤコントローラ６ａ〜６ｃは、確認したページバリッドのビットのうち、値が「１」であるビットの数が少ない場合、ガベージコレクションの際にデータを移動すべきか否か適切に判定できない場合がある。
【０１５９】
詳細には、ＮＡＮＤコントローラ６ａ〜６ｃは、確認したページバリッドと対応付けられた物理ブロックに、データが書込まれていない物理ページが存在するのか、無効となったデータを含む物理ページが存在するのか判別できない。このため、ＮＡＮＤコントローラ６ａ〜６ｃは、本来移動の対象とすべきではないデータ、すなわち、データが書込まれていない物理ページが存在する物理ブロックに格納されたデータを移動してしまう場合がある。
【０１６０】
そこで、実施例３に係るＮＡＮＤコントローラ６ｄは、各物理ブロックごとに、全ての物理ページにデータが書込まれたか否かを示すステータス情報を記憶する。そして、ＮＡＮＤコントローラ６ｄは、移動判定処理の対象として選択した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル１９から取得し、取得した物理アドレスが示す物理ブロックと対応付けられたステータス情報を参照する。そして、ＮＡＮＤコントローラ６ｄは、参照したステータス情報が、全ての物理ページにデータが書込まれた旨を示す場合には、選択した論理アドレスが示すデータの移動を実行する。
【０１６１】
以下、実施例３に係るＮＡＮＤコントローラ６ｄについて説明する。まず、図１５を用いて、ＮＡＮＤコントローラ６ｄの機能構成について説明する。図１５は、実施例３に係るＮＡＮＤコントローラの機能構成を説明する図である。なお、図１５に示すＮＡＮＤコントローラ６ｄの機能構成のうち、図６に示すＮＡＮＤコントローラ６ａの機能構成と同様の機能構成については、同一の符号を付し、説明を省略する。
【０１６２】
例えば、ＮＡＮＤコントローラ６ｄは、テーブル制御部１４ａ、巡回参照制御部１７ｂを有する。また、テーブル記憶部１１は、管理情報テーブル２０ａを有する。まず、図１６を用いて、管理情報テーブル２０ａの一例について説明する。図１６は、実施例３に係る管理情報テーブルの一例を説明する図である。
【０１６３】
管理情報テーブル２０ａには、図８に示す管理情報テーブル２０と同様に、物理ブロックアドレスごとに、ページバリッドとタイムスタンプとが対応付けて格納されている。また、管理情報テーブル２０ａには、各物理ブロックアドレスごとに、ステータス情報が格納されている。
【０１６４】
例えば、ステータス情報「Ｗｒ完了」とは、対応付けられた物理ブロックアドレスが示す物理ブロックの全物理ページに、データの書込みが行われた旨を示す。また、ステータス情報「予備」とは、対応付けられた物理ブロックアドレスが示す物理ブロックの全物理ページからデータが消去され、データの書込みが行われていない旨を示す。すなわち、ステータス情報「予備」とは、対応付けられた物理ブロックアドレスが示す物理ブロックが予備ブロックである旨を示す。
【０１６５】
また、ステータス情報「Ｗｒ中」とは、対応付けられた物理ブロックアドレスが示す物理ブロックの物理ページのうち、一部の物理ページに対してデータが書込まれたが、他の物理ページにはデータが書込まれていない旨を示す。すなわち、ステータス情報「Ｗｒ中」とは、対応付けられた物理ブロックアドレスが示す物理ブロックにデータを書込むことができる予備ページが存在する旨を示す。
【０１６６】
テーブル制御部１４ａは、図６に示すテーブル制御部１４と同様の処理を実行する。ここで、テーブル制御部１４ａは、管理情報テーブル２０ａの更新を行う場合は、テーブル制御部１４と同様の更新を行うとともに、図１７に示す状態遷移図に従って、管理情報テーブル２０ａに格納されたステータス情報の更新を行う。
【０１６７】
図１７は、実施例３に係るＮＡＮＤコントローラが実行する処理と物理ブロックの状態遷移とを説明する図である。例えば、テーブル制御部１４ａは、データの書込みが行われた場合は、データの書込み先となる物理アドレスを取得する。また、テーブル制御部１４ａは、データの更新が行われた場合は、データの更新先物理アドレスを取得する。また、テーブル制御部１４ａは、データの移動が行われた場合は、データの移動先となる移動先物理アドレスを取得する。
【０１６８】
そして、テーブル制御部１４ａは、取得した物理アドレス、更新先物理アドレス、または、移動先物理アドレスから物理ブロックアドレスを抽出し、抽出した物理ブロックアドレスと対応付けられたステータス情報を参照する。ここで、テーブル制御部１４ａは、参照したステータス情報が「予備」である場合は、図１７中（Ｑ）に示すように、参照したステータス情報を「Ｗｒ中」に更新する。
【０１６９】
また、テーブル制御部１４ａは、参照したステータス情報が「Ｗｒ中」である場合は、アドレス変換テーブルを参照して取得した物理アドレス、更新先物理アドレス、または、移動先物理アドレスから下位ビットである物理ページ番号を抽出し、抽出した物理ページ番号がブロック内の最終ページ以外を指す場合は、ステータス情報の更新を行わない。一方、テーブル制御部１４ａは、抽出した物理ページ番号がブロック内の最終ページを指す場合は、図１７中（Ｒ）に示すように、ステータス情報「Ｗｒ中」を「Ｗｒ完了」に更新する。
【０１７０】
また、テーブル制御部１４ａは、データの消去が行われた場合は、データの消去が行われた物理ブロックの物理ブロックアドレスを取得する。かかる場合は、テーブル制御部１４ａは、図１７中（Ｓ）に示すように、取得した物理ブロックアドレスと対応付けられたステータス情報を「予備」に更新する。
【０１７１】
図１５に戻り、巡回参照制御部１７ｂは、図６に示す巡回参照制御部１７と同様の機能を発揮する。ここで、巡回参照制御部１７ｂは、ガベージコレクションのための巡回参照制御を実行する際に、アドレス変換テーブル１９から物理アドレスを取得すると、取得した物理アドレスから物理ブロックアドレスを抽出する。そして、巡回参照制御部１７ｂは、抽出した物理ブロックアドレスと対応付けられたステータス情報を管理情報テーブル２０ａから参照する。そして、巡回参照制御部１７ｂは、参照したステータス情報が「Ｗｒ完了」である場合は、巡回参照制御部１７と同様に、タイムスタンプの値、および、ページバリッドを用いて、データの移動を行うか否かを判定する。
【０１７２】
この結果、ＮＡＮＤコントローラ６ｄは、ガベージコレクションの際に、予備ページが存在する物理ブロックに格納されたデータを移動せず、無効となったデータが存在する物理ブロックからデータの移動を行う。このため、ＮＡＮＤコントローラ６ｄは、適切なガベージコレクションを実現できるので、ＮＡＮＤデバイス７ａ〜１０ａの記憶領域を効率的に用いることができる。
【０１７３】
なお、テーブル制御部１４ａは、任意のタイミングで管理情報テーブル２０ａに格納されたステータス情報およびページバリッドを参照し、ステータス情報「Ｗｒ完了」と対応付けられ、かつページバリッドが全て０となった物理ブロックアドレスを含む消去要求をリクエスト調停部１３に出力してもよい。また、ＮＡＮＤコントローラ６ｄは、ステータス情報を管理する場合は、ページバリッドを管理せずとも、例えば、有効なデータが格納された物理ページの数をページカウントとして管理し、ページカウントを用いて巡回参照制御を実行できる。
【０１７４】
図１８は、実施例３に係る管理情報テーブルのバリエーションを説明する図である。図１８に示す例では、管理情報テーブル２０ａには、ページバリッドに変えて、対応付けられた物理ブロックアドレスが示す物理ブロックに格納された有効なデータの数を示すページカウントが格納されている。なお、管理情報テーブル２０ａは、特許請求の範囲に記載された状態管理テーブル、時刻管理テーブル、有効管理テーブルの一例である。
【０１７５】
かかるページカウントが管理情報テーブル２０ａに格納されている場合は、テーブル制御部１４ａは、以下の処理を実行する。例えば、テーブル制御部１４ａは、データの書込みが行われる度に、データの書込み先、または、データの移動先となる物理ページを含む物理ブロックの物理ブロックアドレスと対応付けられたページカウントを１インクリメントする。また、テーブル制御部１４ａは、データの移動が行われる度に、データの移動元となる物理ページを含む物理ブロックの物理ブロックアドレスと対応付けられたページカウントを１デクリメントする。
【０１７６】
そして、テーブル制御部１４ａは、書き込み先物理ページの物理ページ番号がブロック内の最終ページを指す場合は、ステータス情報を「Ｗｒ完了」に更新する。また、テーブル制御部１４ａは、データが消去された場合は、データが消去された物理ブロックの物理ブロックアドレスと対応付けられたステータス情報を「予備」に更新する。
【０１７７】
また、巡回参照制御部１７ｂは、ガベージコレクションのための処理を実行する際に、ステータス情報とページカウントとを参照し、参照したステータス情報が「Ｗｒ完了」である場合は、参照したページカウントの値が所定の閾値よりも少ないか否かを判定する。そして、巡回参照制御部１７ｂは、参照したページカウントの値が所定の閾値よりも少ないと判定した場合は、データを移動させる。
【０１７８】
このように、ＮＡＮＤコントローラ６ｄは、ページカウントを用いて、有効なデータを管理した場合は、管理情報テーブル２０ａのサイズを縮小させることができる。例えば、１つの物理ブロックに１２８個の物理ページが含まれる場合、ページバリッドの大きさは、１つの物理ブロックあたり１２８ビットとなるが、ページカウントの大きさは、９ビットでよい。このため、ＮＡＮＤコントローラ６ｄは、管理情報テーブル２０ａのサイズを縮小させることができる。
【０１７９】
次に、図１９を用いて、ＮＡＮＤコントローラ６ｄが実行する処理の流れについて説明する。図１９は、実施例３に係るＮＡＮＤコントローラが実行する処理の流れを説明するフローチャートである。なお、図１９に示す例では、ＮＡＮＤコントローラ６ｄは、ページカウントを用いて、巡回参照制御を実行する際の処理の流れについて記載した。また、図１９に示す処理のうち、図１１に示す処理と同様の処理については、図１１と同一のステップ番号を付し、説明を省略する。
【０１８０】
例えば、ＮＡＮＤコントローラ６ｄは、管理参照テーブルを参照し（ステップＳ２０４）、取得した物理ページの物理ブロックアドレスと対応付けられたステータス情報、ページカウント、タイムスタンプを確認する（ステップＳ５０１）。そして、ＮＡＮＤコントローラ６ｄは、確認したステータス情報が「Ｗｒ完了」であるか否かを判定する（ステップＳ５０２）。
【０１８１】
ここで、ＮＡＮＤコントローラ６ｄは、ステータス情報が「Ｗｒ完了」である場合は（ステップＳ５０２肯定）、確認したタイムスタンプが所定の時間よりも古い値であるか否かを判定する（ステップＳ２０６）。また、ＮＡＮＤコントローラ６ｄは、確認したタイムスタンプが所定の時間よりも新しいと判定した場合は（ステップＳ２０６否定）、ページカウントの値が所定の閾値よりも少ないか否かを判定する（ステップＳ５０３）。そして、ＮＡＮＤコントローラ６ｄは、ページカウントの値が所定の閾値よりも少ない場合は（ステップＳ５０３肯定）、データの移動を実行する（ステップＳ２０７）。
【０１８２】
なお、ＮＡＮＤコントローラ６ｄは、確認したステータス情報が「Ｗｒ完了」ではない場合は（ステップＳ５０２否定）、ステップＳ１０９を実行する。また、ＮＡＮＤコントローラ６ｄは、ページカウントの値が所定の閾値よりも多い場合は（ステップＳ５０３否定）、ステップＳ１０９を実行する。
【０１８３】
［ＮＡＮＤコントローラ６ｄの効果］
上述したように、ＮＡＮＤコントローラ６ｄは、物理ブロックごとに、物理ブロックに含まれる全ての物理ページにデータが書込まれたか否かを示すステータス情報が格納された管理情報テーブル２０ａを有する。また、ＮＡＮＤコントローラ６ｄは、選択した論理アドレスと対応付けられた物理アドレスの物理ブロックアドレスと対応するステータス情報を確認する。そして、ＮＡＮＤコントローラ６ｄは、確認したステータス情報が、物理ブロックに含まれる全ての物理ページにデータが書込まれた旨を示す場合は、選択した論理アドレスが示すデータの移動判定処理を実行する。ＮＡＮＤコントローラ６ｄは、適切なガベージコレクションを実現できるので、ＮＡＮＤデバイス７ａ〜１０ａの記憶領域を効率的に用いることができる。
【０１８４】
また、ＮＡＮＤコントローラ６ｄは、物理ブロックごとに、有効なデータの数を示すぺページカウントが格納された管理情報テーブル２０ａを有する。また、ＮＡＮＤコントローラ６ｄは、選択した論理アドレスと対応付けられた物理アドレスの物理ブロックアドレスと対応するステータス情報と、ページカウントとを確認する。そして、ＮＡＮＤコントローラ６ｄは、確認したステータス情報が、物理ブロックに含まれる全ての物理ページにデータが書込まれた旨を示し、かつ確認したページカウントの値が所定の閾値よりも少ない場合は、選択した論理アドレスが示すデータを移動させる。このため、ＮＡＮＤコントローラ６ｄは、管理情報テーブル２０ａの容量を縮小させることができる。
【実施例４】
【０１８５】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例４として本発明に含まれる他の実施例を説明する。
【０１８６】
（１）データ移動の粒度について
上述したＮＡＮＤコントローラ６ａ〜６ｄは、ＮＡＮＤデバイス７ａ〜１０ａが有する論理アドレスごとに、データを移動させるか否かを判定した。しかしながら、実施例はこれに限定されるものではない。すなわち、ＮＡＮＤコントローラ６ａ〜６ｄは、論理アドレスを起点としてデータの移動を行うか否かを判定するのであれば、任意の単位でデータの移動を行うか否かを判定することができる。例えば、ＮＡＮＤコントローラ６ａ〜６ｄは、複数の論理アドレスが示すデータをひとまとめにして、巡回参照制御や移動制御を行ってもよい。
【０１８７】
（２）アドレス変換テーブルと管理情報テーブルとの読出しについて
上述した巡回参照制御部１７は、アドレス変換テーブル１９と管理情報テーブル２０との全エントリの読出しを行った。しかし、実施例はこれに限定されるものではない。例えば、巡回参照制御部１７は、論理アドレスを１つ生成し、リクエスト調停部１３、テーブル制御部１４を介して、生成した論理アドレスと対応付けられた物理アドレスを取得する。そして、巡回参照制御部１７は、取得した物理アドレスから物理ブロックアドレスを抽出し、リクエスト調停部１３、テーブル制御部１４を介して、抽出した物理ブロックアドレスと対応付けられたタイムスタンプとページバリッドとを取得する。その後、巡回参照制御部１７は、取得したタイムスタンプとページバリッドとを用いて、データの移動を判定する。
【０１８８】
このように、巡回参照制御部１７は、アドレス変換テーブル１９や管理情報テーブル２０に格納された情報を１エントリずつ参照してもよい。また、巡回参照制御部１７は、リクエスト調停部１３、テーブル制御部１４を介さず、テーブル記憶部１１に格納されたアドレス変換テーブル１９と管理情報テーブル２０とに直接アクセスしてもよい。
【０１８９】
（３）ＮＡＮＤコントローラ６ａ〜６ｄの機能構成について
上述したＮＡＮＤコントローラ６ａ〜６ｄの機能構成は、あくまで一例であり、ＮＡＮＤコントローラ６ａ〜６ｄとして同様の処理を実行できるのであれば、任意の構成を採用することができる。例えば、ＮＡＮＤコントローラ６ａは、巡回参照制御部１７とデータ移動制御部１８との機能を有する移動制御部を有してもよい。
【０１９０】
なお、上述した例では、ＮＡＮＤコントローラ６ａ〜６ｄがＮＡＮＤデバイス７ａ〜１０ａに格納されたデータの移動を判定する処理について記載した。しかしながら、実施例はこれに限定されるものではない。すなわち、ＮＡＮＤコントローラ６ａ〜６ｄは、データの移動を行うのであれば、任意の技術が適用された記憶媒体、例えばメモリ等のメモリコントローラとして動作してもよい。
【０１９１】
（４）リクエストの調停について
上述したＮＡＮＤコントローラ６ａ〜６ｄは、リクエスタインターフェース部１２から受信する読出し要求や書込み要求を優先して実行した。しかし、実施例はこれに限定されるものではなく、ＮＡＮＤコントローラ６ａ〜６ｄは、ＮＡＮＤデバイス７ａ〜１０ａの各セルの寿命が平準化するように、各リクエストの調停を行ってもよい。
【０１９２】
（５）予備ブロックについて
上述したテーブル制御部１４は、データが格納されていない予備ブロックをデータの移動先とした。しかしながら、実施例はこれに限定されるものではない。例えば、テーブル制御部１４は、データが格納されていないブロックのうち、最も余命が長いブロックを識別する。そして、テーブル制御部１４は、識別したブロックを示す物理ブロックアドレスをリクエスト調停部１３に通知してもよい。かかる処理を実行した場合は、ＮＡＮＤコントローラ６ａ〜６ｄは、ＮＡＮＤデバイス７ａ〜１０ａが有する各ブロックのセルの劣化を平準化し、寿命を使いきることができる。
【０１９３】
（６）移動対象となるデータについて
上述したＮＡＮＤコントローラ６ａ〜６ｄは、移動判定の対象となるデータが格納された物理ブロックのタイムスタンプが所定の閾値よりも古い場合、または、物理ブロック内の有効データの数が所定の閾値よりも少ない場合は、データの移動を行った。しかしながら、実施例はこれに限定されるものではない。すなわち、ＮＡＮＤコントローラ６ａ〜６ｄは、任意の情報、または、任意の条件を用いて、データの移動を判定してよい。例えば、ＮＡＮＤコントローラ６ａ〜６ｄは、ＮＡＮＤでバス７ａ〜１０ａの空き容量が少なく、かつ、物理ブロック内の有効データの数が所定の閾値よりも少ない場合は、データの移動を行ってもよい。
【０１９４】
（７）巡回参照制御時のガベージコレクションとウェアレベリングの区別について
上述したＮＡＮＤコントローラ６ａ〜６ｄは、ガベージコレクションを目的とする巡回参照制御とウェアレベリングを目的とする巡回参照制御を区別し、それぞれの条件で物理ページを移動処理の対象とするかを判定した。しかしながら、実施例はこれに限定されるものではない。例えば、上述したＮＡＮＤコントローラ６ａ〜６ｄは、所定の時間が経過した場合やソフトウェアからの指示を受けた場合にガベージコレクションとウェアレベリングを同時に実行する巡回参照制御を行い、任意のタイミングで、ガベージコレクションのみを目的とする巡回参照制御を行ってもよい。また、ガベージコレクションとウェアレベリングを同時に実行する巡回参照制御を行っている最中に、任意の制御手段から、巡回参照制御の実行を指示された場合に、ガベージコレクションのみを目的とする巡回参照制御に切り替える制御を行ってもよい。
【０１９５】
（８）プログラム
上記の実施例で説明したＮＡＮＤコントローラ６ａ〜６ｄが発揮する機能は、予め用意された制御プログラムをＮＡＮＤコントローラ内の演算処理装置が実行することで実現してもよい。そこで、以下では、図２０を用いて、上記のＮＡＮＤコントローラ６ａと同様の機能を有する制御プログラムを実行するコンピュータの一例について説明する。
【０１９６】
図２０は、制御プログラムを実行するＮＡＮＤコントローラの一例を説明する図である。図２０に示すように、ＮＡＮＤコントローラ６ｅは、ＣＰＵ４０、デバイスアクセス制御部１５を有する。また、ＣＰＵ４０は、メモリデバイス１１ａと接続される。なお、メモリデバイス１１ａは、ＮＡＮＤコントローラ６ｅに内蔵されるメモリであってもよい。
【０１９７】
メモリデバイス１１ａには、アドレス変換テーブル１９、管理情報テーブル２０があらかじめ記憶される。ここで、ＣＰＵ４０が制御プログラム３０を読出して展開して実行することにより、制御プログラム３０は、以下の様に機能する。すなわち、制御プログラム３０は、ＣＰＵ４０をテーブル制御部３１、リクエスト調停部３２、巡回参照制御部３３、データ移動制御部３４として動作させる。ここで、テーブル制御部３１、リクエスト調停部３２、巡回参照制御部３３、データ移動制御部３４は、図６に示すテーブル制御部１４、リクエスト調停部１３、巡回参照制御部１７、データ移動制御部１８と同様の機能を発揮する。
【０１９８】
なお、ＮＡＮＤコントローラ６ｅは、ＣＰＵではなく、例えばＭＰＵやＦＰＧＡ等の演算装置を用いて制御プログラム３０を実行してもよい。また、上記の制御プログラム３０については、例えば、メモリデバイス１１ａや、ＮＡＮＤデバイス７ａ〜１０ａに記憶させてもよいし、他の方法でＣＰＵ４０に実行させてもよい。例えば、フレキシブルディスク、いわゆるＦＤ（Flexible  Disk）、ＣＤ（Compact  Disk）−ＲＯＭ、ＤＶＤ（Digital  Versatile  Disk）、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。
【０１９９】
そして、ＮＡＮＤコントローラ６ｅが各ＣＰＵ３ａ、３ｂを介して、これらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮ（Wide  Area  Network）などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【０２００】
１  情報処理装置
２ａ、２ｂ  メモリ
３ａ、３ｂ、４０  ＣＰＵ
４  Ｉ／Ｏハブ
５ａ、５ｂ  ＳＳＤ
６ａ〜６ｅ  ＮＡＮＤコントローラ
７ａ〜１０ａ、７ｂ〜１０ｂ  ＮＡＮＤデバイス
１１  テーブル記憶部
１２  リクエスタインターフェース部
１３、３２  リクエスト調停部
１４、３１  テーブル制御部
１５  デバイスアクセス制御部
１６  タイマ
１７、３３  巡回参照制御部
１８、３４  データ移動制御部
１９  アドレス変換テーブル
２０  管理情報テーブル
２１  巡回済対象記憶部
３０  制御プログラム
【図１】
2015001908.tif 000003
【図２】
2015001908.tif 000004
【図３】
2015001908.tif 000005
【図４】
2015001908.tif 000006
【図５】
2015001908.tif 000007
【図６】
2015001908.tif 000008
【図７】
2015001908.tif 000009
【図８】
2015001908.tif 000010
【図９】
2015001908.tif 000011
【図１０】
2015001908.tif 000012
【図１１】
2015001908.tif 000013
【図１２】
2015001908.tif 000014
【図１３】
2015001908.tif 000015
【図１４】
2015001908.tif 000016
【図１５】
2015001908.tif 000017
【図１６】
2015001908.tif 000018
【図１７】
2015001908.tif 000019
【図１８】
2015001908.tif 000020
【図１９】
2015001908.tif 000021
【図２０】
2015001908.tif 000022