(57)【特許請求の範囲】
【請求項１】
複数の記憶領域を有する記憶装置と、
前記記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していく選択部と、
前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得する取得部と、
所定の条件を用いて、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する判定部と、
前記判定部が前記データを移動させると判定した場合、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる移動部と、
前記変換テーブルに格納された物理アドレスのうち、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する更新部と
を有することを特徴とする情報処理装置。
【請求項２】
前記選択部は、有効なデータを格納している記憶領域が閾値以下のブロックを前記所定のブロックとして選択し、前記グループの中で、前記所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していくことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
各前記グループに対して、複数のブロックのそれぞれに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスを含むか否かを表すフラグを、前記ブロック毎に立てるフラグ設定部をさらに備え、
前記選択部は、前記フラグ設定部によって設定されたフラグを基に、前記所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記グループは、各前記記憶領域を示す論理アドレスの集合を、前記選択部が一度に読み込める前記フラグの数で分割して生成されていることを特徴とする請求項１に記載の情報処理装置。
【請求項５】
記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していく選択部と、
前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得する取得部と、
所定の条件を用いて、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する判定部と、
前記判定部が前記データを移動させると判定した場合、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる移動部と、
前記変換テーブルに格納された物理アドレスのうち、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する更新部と
を有することを特徴とする制御回路。
【請求項６】
各記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、
特定したグループに含まれる論理アドレスを順に選択していき、
選択した論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得し、
所定の条件を用いて、取得した物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定し、
前記データを移動させると判定した場合は、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動し、
前記変換テーブルに格納された物理アドレスのうち、選択した論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する
処理をコンピュータに実行させることを特徴とする制御プログラム。
【請求項７】
各記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、
特定したグループに含まれる論理アドレスを順に選択していき、
選択した論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得し、
所定の条件を用いて、取得した物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定し、
前記データを移動させると判定した場合は、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動し、
前記変換テーブルに格納された物理アドレスのうち、選択した論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御回路、制御プログラム、及び制御方法に関する。
【背景技術】
【０００２】
従来、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理装置が知られている。このような情報処理システムの一例として、ＮＡＮＤフラッシュメモリデバイスをストレージ等の記憶装置として使用する情報処理装置が知られている。なお、以下の説明では、ＮＡＮＤフラッシュメモリデバイスをＮＡＮＤデバイスと記載する。【０００３】
ここで、ＮＡＮＤデバイスは、データの記憶領域である物理ページ単位でデータの書込み、読出し、データの更新に係る移動を行い、複数の物理ページを含む物理ブロック単位でデータの消去を行う。このため、ＮＡＮＤデバイスは、有効なデータと無効なデータとが混在した物理ブロックを有する場合がある。また、ＮＡＮＤデバイスは、データを消去する際に素子が劣化するので、頻繁に更新されるデータが書込まれた物理ページと、あまり更新されないデータが書込まれた物理ページとでは、素子が劣化する速度にばらつきが発生する。【０００４】
このため、各物理ブロックに対するデータの書込み状況やデータの書込時刻に応じて、各物理ブロックに書込まれたデータの移動を実行し、データの整理や劣化の平準化を行うＮＡＮＤコントローラが知られている。例えば、ＮＡＮＤコントローラは、物理ブロックごとに、各物理ページのデータが有効であるか否かを示す情報と、最後にデータが書込まれた時刻を示す情報とが格納された管理情報テーブルを有する。【０００５】
そして、ＮＡＮＤコントローラは、管理情報テーブルを参照し、物理ブロックごとに、有効なデータの数やデータが書込まれてから経過した時間に応じて、データを移動させるか否かを判定する。その後、ＮＡＮＤコントローラは、データを移動させると判定した場合は、物理ブロックに書込まれた有効なデータを、予備ブロックの物理ページに移動し、選択した物理ブロックのデータを消去することで、新たな予備ブロックの確保や、劣化の平準化を行う。【０００６】
また、ＮＡＮＤコントローラは、情報処理装置が実行するシステムがデータの指定に用いる論理アドレスを、データが格納された物理ページを示す物理アドレスに変換するアドレス変換テーブルを有する。そして、ＮＡＮＤコントローラは、データの移動を行った場合は、データの移動元、および、データの移動先を示す物理アドレスを用いて、アドレス変換テーブルの更新を行う。【０００７】
例えば、従来技術として、以下のような技術がある。ＮＡＮＤコントローラは、物理アドレスを論理アドレスに逆変換するアドレス逆変換テーブルを用いて、データの移動元を示す物理アドレスを論理アドレスに逆変換する。そして、ＮＡＮＤコントローラは、アドレス変換テーブルに格納された物理アドレスのうち、逆変換された論理アドレスをインデックスとする物理アドレスを、データの移動先を示す物理アドレスに書き換える。【０００８】
また、空き容量を確保するためのデータ移動の技術として、無効セクタ数が所定の閾値を超えているデータユニットの有効セクタのみをコピーして、コピー元のデータユニットを消去する従来技術がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−００３７８４号公報
【特許文献２】特開２００５−２７５７２２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した物理ブロックごとにデータを移動させるか否かを判定する技術では、データの移動元、および、データの移動先を示す物理アドレスを用いて、アドレス変換テーブルの更新を行う。かかる処理を行うため、例えば、ＮＡＮＤコントローラは、データの移動元を示す物理アドレスから論理アドレスに逆変換するアドレス逆変換テーブルを有するので、回路規模が増大するという問題がある。また、複数のデータを分散して書き込む従来技術を用いても、物理アドレスから論理アドレスへの変換については考慮されておらず、アドレス逆変換テーブルの使用を回避することは困難である。【００１１】
開示の技術は、上記に鑑みてなされたものであって、ＮＡＮＤコントローラの回路規模を抑えつつアクセス性能を向上させる情報処理装置、制御回路、制御プログラム、及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法は、一つの態様において、選択部は、前記記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していく。取得部は、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得する。判定部は、所定の条件を用いて、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する。移動部は、前記判定部が前記データを移動させると判定した場合、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる。更新部は、前記変換テーブルに格納された物理アドレスのうち、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する。
【発明の効果】
【００１３】
本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法の一つの態様によれば、ＮＡＮＤコントローラの回路規模を抑えつつアクセス性能を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例１に係る情報処理装置の概略構成図である。
【図２】図２は、メモリアクセスの一例を説明するための図である。
【図３】図３は、実施例１に係るＮＡＮＤコントローラのブロック図である。
【図４】図４は、実施例１に係るアドレス変換テーブルの一例の図である。
【図５】図５は、実施例１に係る管理情報テーブルの一例の図である。
【図６】図６は、実施例１に係るＮＡＮＤコントローラが実行する処理の一例を説明するための図である。
【図７】図７は、実施例１に係るＮＡＮＤコントローラが実行する処理のフローチャートである。
【図８】図８は、実施例１に係る管理情報テーブルにおけるフラグの設定処理のフローチャートである。
【図９】図９は、制御プログラムを実行するＮＡＮＤコントローラの一例の図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法が限定されるものではない。
【実施例１】
【００１６】
図１は、実施例１に係る情報処理装置の概略構成図である。情報処理装置１は、複数のメモリ２ａ及び２ｂ、複数のＣＰＵ（Central  Processing  Unit）３ａ及び３ｂ、Ｉ／Ｏ（Input  Output）ハブ４、並びに、複数のＳＳＤ（Solid  State  Drive）５ａ及び５ｂを有する。また、ＳＳＤ５ａは、ＮＡＮＤコントローラ６ａ及び複数のＮＡＮＤデバイス７ａ〜１０ａを有する。【００１７】
また、ＳＳＤ５ｂは、ＮＡＮＤコントローラ６ｂ及び複数のＮＡＮＤデバイス７ｂ〜１０ｂを有する。なお、以下の説明では、ＳＳＤ５ｂ、ＮＡＮＤコントローラ６ｂ、及び複数のＮＡＮＤデバイス７ｂ〜１０ｂは、ＳＳＤ５ａ、ＮＡＮＤコントローラ６ａ、及び複数のＮＡＮＤデバイス７ａ〜１０ａと同様の機能を発揮するものとして、説明を省略する。【００１８】
各メモリ２ａ及び２ｂは、各ＣＰＵ３ａ及び３ｂが演算処理に用いるデータを記憶する記憶装置である。また、各ＣＰＵ３ａ及び３ｂは、メモリ２ａ及び２ｂが記憶するデータを用いて、各種演算処理を行う演算処理装置である。例えば、ＣＰＵ３ａ及び３ｂは、ＮＵＭＡ（Non-Uniform  Memory  Access）の技術を用いて、メモリ２ａ及び２ｂが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。【００１９】
また、ＣＰＵ３ａ及び３ｂは、Ｉ／Ｏハブ４を介して、各ＳＳＤ５ａ及び５ｂが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。詳細には、ＣＰＵ３ａは、ＳＳＤ５ａに対し、データの読出し要求や書込み要求を発行し、各ＮＡＮＤデバイス７ａ〜１０ａからデータの読出しや書込みを行う。例えば、ＣＰＵ３ａは、ＳＳＤ５ａに対し、読出し対象となるデータを指定する論理アドレスが格納された読出し要求を発行する。また、ＣＰＵ３ａは、データの書込み先を指定する論理アドレスと、書込み対象となるデータとが格納された書込み要求を発行する。【００２０】
ＮＡＮＤデバイス７ａは、各種データを記憶する不揮発性メモリである。詳細には、ＮＡＮＤデバイス７ａは、データの記憶領域である物理ページを複数有し、物理ページ単位でデータの書込みを行う。また、ＮＡＮＤデバイス７ａは、複数の物理ページを有する物理ブロックを複数有し、ブロック単位でデータの消去を行う。ここで、１つの物理ページは、例えば、８キロバイトの記憶容量を有し、１つの物理ブロックは、例えば、１２８の物理ページを有する。【００２１】
ＮＡＮＤコントローラ６ａは、各ＮＡＮＤデバイス７ａ〜１０ａに対してアクセスし、データの読出しや書込みを行う。例えば、ＮＡＮＤコントローラ６ａは、データが記憶された記憶領域を各ＣＰＵ３ａ及び３ｂが指定する際に用いる論理アドレスと、データが格納されたＮＡＮＤデバイス７ａ〜１０ａの記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。【００２２】
そして、ＮＡＮＤコントローラ６ａは、読出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読出しを行う。その後、ＮＡＮＤコントローラ６ａは、Ｉ／Ｏハブ４を介して、読出したデータをＣＰＵ３ａに送信する。【００２３】
なお、以下の説明では、理解を容易にするため、各物理ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各物理ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、情報処理装置１が実行するシステムは、各物理ページの先頭アドレスとなる論理アドレスに対する読出し要求や書込み要求を発行するものとする。【００２４】
例えば、ＮＡＮＤコントローラ６ａは、ＮＡＮＤデバイス７ａ〜１０ａが、複数のブロックを有し、各ブロックに２ｑ個の物理ページが含まれている場合は、以下の処理を行う。まず、ＮＡＮＤコントローラ６ａは、論理アドレスの下位ｑビットを論理的な１つのブロック内において、物理ページを識別するための論理ページ番号とし、残りの論理アドレスの上位ｐビットを論理的な１つのブロックを示す論理ブロックアドレスとする。【００２５】
また、ＮＡＮＤコントローラ６ａは、物理アドレスの上位ｐビットを物理的な１つのブロックを示す物理ブロックアドレスとし、物理アドレスの下位ｑビットを物理的な１つのブロック内において、各物理ページを識別するための物理ページ番号とする。つまり、ＮＡＮＤコントローラ６ａは、論理アドレスを、論理ブロックを示す論理ブロックアドレスと、論理ページを論理ブロックごとに示す論理ページ番号とに分割する。また、ＮＡＮＤコントローラ６ａは、物理アドレスを、物理ブロックを示す物理ブロックアドレスと、物理ページを物理ブロックごとに示す物理ページ番号とに分割する。【００２６】
以下、図２を用いて、ＮＡＮＤコントローラ６ａが実行するメモリアクセスの一例について説明する。図２は、メモリアクセスの一例を説明するための図である。なお、図２に示す例では、理解を容易にするため、ブロック数を「８」とし、各ブロック内の物理ページ数が「４」のＮＡＮＤデバイス７ａについて記載した。また、図２に示す例では、ＮＡＮＤコントローラ６ａが、論理ブロックアドレスと物理ブロックアドレスとを対応付けたアドレス変換テーブルを用いて、ＮＡＮＤデバイス７ａ〜１０ａが有する物理ページ単位でデータの書込みを行う処理について記載した。【００２７】
例えば、ＮＡＮＤコントローラ６ａは、図２中（ａ）に示すように、ＣＰＵ３ａが実行するファイルシステムから、論理ブロックアドレス「ＬＢ００」の論理ページ番号「３」、すなわち論理アドレス「Ｌ０００３」に書き込み要求を発行する。すると、ＮＡＮＤコントローラ６ａは、アドレス変換テーブルを用いて、論理アドレス「Ｌ０００３」に対応付けられた物理アドレス「Ｐ０４０３」を取得し、図２中（ｂ）に示すように、更新前のデータが格納されている物理ページを識別する。【００２８】
続いて、ＮＡＮＤコントローラ６ａは、図２中（ｃ）に示すように、物理アドレス「Ｐ０４０３」が示す物理ページのデータを読出し、読み出したデータを書込み対象のデータに更新し、更新後のデータを予備ブロックの空き物理ページに格納する。詳細な例を挙げると、ＮＡＮＤコントローラ６ａは、図２中（ｄ）に示すように、物理アドレス「Ｐ０８００」が示す物理ページに更新後のデータを格納する。その後、ＮＡＮＤコントローラ６ａは、図２中（ｅ）に示すように、論理アドレス「Ｌ０００３」と対応付けられていた物理アドレス「Ｐ０４０３」を「Ｐ０８００」に更新し、処理を終了する。【００２９】
ここで、ＮＡＮＤデバイス７ａ〜１０ａに格納されたデータに対し、物理ページ単位で書込みや移動を行う場合は、１つの物理ブロック内に有効なデータと無効なデータとが混在する場合がある。例えば、図２に示す例では、ＮＡＮＤコントローラ６ａは、論理アドレス「Ｌ０００３」が示すデータを更新する際、物理ブロックアドレス「Ｂ０４」が示す物理ブロック内のデータを無効化する。そして、ＮＡＮＤコントローラ６ａは、更新後のデータを物理ブロックアドレス「Ｂ０８」が示す物理ブロックに格納する。このため、物理ブロックアドレス「Ｂ０４」が示す物理ブロックには、有効なデータと無効なデータとが混在する。【００３０】
ここで、ＮＡＮＤデバイス７ａ〜１０ａは、無効なデータが格納された物理ページに対してデータの上書きを行うことができず、あらかじめデータを消去した予備ブロックにデータの書込みを行う。しかしながら、有効なデータと無効なデータとが混在する物理ブロックが増えると、新たにデータを書込む予備ブロックを確保できなくなる。また、ＮＡＮＤデバイス７ａ〜１０ａは、データを保持するための素子を有する。かかる素子は、データの消去を行う際に劣化が進行し、劣化が進むと、電荷を適切に保持することができなくなる。【００３１】
そこで、従来のＮＡＮＤコントローラは、有効なデータを整理して新たな予備ブロックを確保するデータ移動制御を実行する。【００３２】
ここで、ＮＡＮＤコントローラ６ａは、ガベージコレクション処理などのデータ移動制御を実行した場合は、データの移動に応じて、アドレス変換テーブルの更新を行う。しかしながら、ＮＡＮＤコントローラ６ａは、管理情報テーブルのページバリッドなどを用いて、物理ブロック毎に、データを移動させるか否かを判定する。このため、ＮＡＮＤコントローラ６ａは、データ移動制御を行った後、データの移動元物理アドレスを識別できるが、データの移動元物理アドレスに対応する論理アドレスを識別できない。【００３３】
そこで、ＮＡＮＤコントローラ６ａに以下の処理を行わせることが考えられる。まず、ＮＡＮＤコントローラ６ａは、データの移動を行うブロックを特定する。そして、ＮＡＮＤコントローラ６ａは、アドレス変換テーブルを参照し、論理アドレスを１つ選択する。次に、ＮＡＮＤコントローラ６ａは、選択した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルから取得する。そして、ＮＡＮＤコントローラ６ａは、管理情報テーブルを用いて、取得した物理アドレスが示す物理ページを含む物理ブロックがデータの移動を行うブロックか否かを判定する。その後、ＮＡＮＤコントローラ６ａは、データの移動を行った場合は、アドレス変換テーブルに格納された物理アドレスのうち、選択した論理アドレスと対応付けられた物理アドレスを、移動先物理アドレスに更新する。ＮＡＮＤコントローラ６ａは、以上の処理を、アドレス変換テーブルの最初の論理アドレスから順に繰り返し行っていくことで、データの移動を行うブロックの全てのページのデータ移動を完了することができる。しかし、アドレス変換テーブルの最初の論理アドレスから順番にデータの移動判定を行う場合、最大で全ての論理アドレスに対して処理を行うことになり、データの移動処理に多大な時間が掛かってしまう。【００３４】
そこで、本実施例に係る情報処理装置は、論理アドレスをいくつかの論理アドレスブロックに分け、各論理アドレスブロック内に、データの移動の対象とする物理ブロックに含まれるページの物理アドレスに対応する論理アドレスがあるかを判定する。以下では、ある物理ブロックに含まれるページの物理アドレスに対応する論理アドレスを、単に、「物理ブロックに対応する論理アドレス」という場合がある。本実施例に係る情報処理装置は、移動対象の物理ブロックに対応する論理アドレスを含む論理アドレスブロックに含まれる各論理アドレスに対してデータの移動を行うか否かを判定する。これにより、本実施例に係る情報処理装置は、データ移動の判定の処理数を減らしてデータ移動処理に係る時間を短縮し、アクセス性能の低下を防ぐ。【００３５】
以下、図３を用いて、ＮＡＮＤコントローラ６ａについて説明する。図３は、実施例１に係るＮＡＮＤコントローラのブロック図である。図３に示す例では、ＮＡＮＤコントローラ６ａは、テーブル記憶部１１、リクエスタインターフェース部１２、リクエスト調停部１３、及びテーブル制御部１４を有する。また、ＮＡＮＤコントローラ６ａは、デバイスアクセス制御部１５、巡回参照制御部１６、及びデータ移動制御部１７を有する。また、テーブル記憶部１１は、アドレス変換テーブル１８及び管理情報テーブル１９を記憶する。【００３６】
まず、図４、図５を参照して、テーブル記憶部１１が記憶するアドレス変換テーブル１８と、管理情報テーブル１９に格納された情報について説明する。図４は、実施例１に係るアドレス変換テーブルの一例の図である。図４に示すように、アドレス変換テーブル１８には、論理アドレスと有効フラグと物理アドレスとが対応付けて格納されている。ここで、有効フラグとは、対応付けられた物理アドレスが示す物理ページに格納されたデータが有効なデータであるか否かを示すバリッドビットである。【００３７】
例えば、図４に示す例では、アドレス変換テーブル１８には、論理アドレス「Ｌ００００」と、有効フラグ「０」と、物理アドレス「Ｐ００１１」とが対応付けて格納されている。すなわち、アドレス変換テーブル１８は、物理アドレス「Ｐ００１１」が示すブロックに論理アドレス「Ｌ００００」が指定する有効なデータが格納されていない旨を示す。【００３８】
同様に、図４に示す例では、アドレス変換テーブル１８には、論理アドレス「Ｌ０００２」と、有効フラグ「１」と、物理アドレス「Ｐ０００３」とが対応付けて格納されている。すなわち、アドレス変換テーブル１８は、物理アドレス「Ｐ０００３」が示すブロックに論理アドレス「Ｌ０００２」が指定する有効なデータが格納されている旨を示す。【００３９】
さらに、アドレス変換テーブル１８における論理アドレスは、複数のグループに分けられている。以下、このグループを「論理アドレスブロック」と言う。本実施例では、図４に示すように、論理アドレスブロック＃０は、論理アドレスＬ００００〜Ｌ００３Ｆを含む。また、論理アドレスブロック＃１は、論理アドレスＬ００４０〜Ｌ００７Ｆを含む。また、論理アドレスブロック＃２は、論理アドレスＬ００８０〜Ｌ００ＢＦを含む。また、論理アドレスブロック＃３は、論理アドレスＬ００Ｃ０〜Ｌ００ＦＦを含む。図４では、論理アドレスブロック＃０〜＃３しか示していないが、実際には、アドレス変換テーブル１８上の全ての論理アドレスがグループ化され論理アドレスブロックを形成している。そして、後述する巡回参照制御部１６は、各論理アドレスブロックと論理アドレスとの対応を記憶している。【００４０】
次に、図５を用いて、管理情報テーブル１９に格納される情報について説明する。図５は、実施例１に係る管理情報テーブルの一例の図である。図５に示すように、管理情報テーブル１９には、物理ブロックアドレス及び有効ページ数が対応付けて格納されている。ここで、有効ページ数とは、対応付けられた物理ブロックアドレスが示す物理ブロックに含まれる有効なデータを有するページの数である。例えば、管理情報テーブル１９は、１つの物理ブロックに、ｎ個の有効ページが含まれる場合は、有効ページ数はｎとなる。【００４１】
管理情報テーブル１９には、物理ブロックアドレスに対応させて、対応する物理ブロックに含まれる有効ページを示す物理アドレスに対応する論理アドレスが各論理アドレスブロックに含まれるか否かを示すフラグが、論理アドレスブロック毎に付加されている。具体的には、論理アドレスブロックを先頭とする列である欄に「１」が記載されている場合、その欄の行の先頭の物理ブロックアドレスに対応する物理ブロックに含まれる有効ページを示す論理アドレスをその論理アドレスブロックが有していることを表している。また、論理アドレスブロックを先頭とする列である欄に「０」が記載されている場合、その欄の行の先頭の物理ブロックアドレスに対応する物理ブロックに含まれる有効ページを示す論理アドレスをその論理アドレスブロックが有していないことを表している。【００４２】
例えば、図５に示す例では、管理情報テーブル１９には、物理ブロックアドレス「Ｂ００」と有効ページ数「１１」とが対応付けて格納される。すなわち、管理情報テーブル１９は、物理ブロックアドレス「Ｂ００」が示す物理ブロックに含まれる物理ページのうち、１１個のページが有効であることを示す。また、管理情報テーブル１９は、物理ブロックアドレス「Ｂ００」の行において、論理アドレスブロックが「＃０」、「＃２」、「＃３」、「＃５」、及び「＃ｍ」に対応する欄のフラグとして「１」が設定されている。すなわち、論理アドレスブロック＃０，＃２，＃３，＃５，及び＃ｍに、物理ブロックアドレス「Ｂ００」に対応する物理ブロックに含まれる有効ページを示す論理ブロックが含まれている。【００４３】
さらに、図５に示す例では、管理情報テーブル１９には、物理ブロックアドレス「Ｂ０１」には、有効ページがなく、また、いずれの論理アドレスブロックにも有効ページを含むフラグは付加されていない。ここで、物理ブロックに有効ページがない場合、すなわち、その物理ブロックが使用されていない場合、その物理ブロックを表す行の全ての論理アドレスブロックに対応する欄にフラグとして「０」を設定する。【００４４】
ここで、論理アドレスブロックは、実際にはどのようなブロックに分割することもできる。ただし、ある物理ブロックの有効ページが各論理アドレスブロックに含まれているか否かを判定するために、後述する巡回参照制御部１６は、管理情報テーブル１９のフラグを全て読み出す。そこで、例えば、論理アドレスブロックを細かく分けた場合、管理情報テーブル１９の１つのエントリに含まれるフラグの数が増えてしまう。この場合、巡回参照制御部１６は、フラグを全て読み出すために何度も管理情報テーブル１９から読み出しを行うことになる。管理情報テーブル１９は、サイズが大きいためＤＩＭＭ（Dual  Inline  Memory  Module）などに記憶されており、読み出しに時間が掛かる。そのため、管理情報テーブル１９からの読み出しを複数回行った場合、読み出し処理に多くの時間が掛かってしまう。また、論理アドレスブロックを大きく分けた場合、１つの論理アドレスブロックに含まれる論理アドレスが増えてしまう。後述するデータの移動判定において、論理アドレスブロックのサイズが大きくなるとデータの移動判定における検索範囲が広くなってしまい、後述するデータの移動判定の処理が増えてしまう。【００４５】
そこで、論理アドレスブロックは、エントリの読み出し処理の時間と、データの移動判定の処理の時間とを考慮して決定することが好ましい。例えば、ＮＡＮＤデバイス７ａ，８ａ，９ａ，１０ａに対する１回の読み出しで読み出せる数のアドレスを１つの論理アドレスブロックとすることが好ましい。【００４６】
ここで、論理アドレスブロックの決定の一例についてＮＡＮＤデバイス７ａを例に説明する。例えば、ＮＡＮＤデバイス７ａが１ＫＢｙｔｅ／ｐａｇｅ，６４ｐａｇｅ／Ｂｌｏｃｋで１ＴＢｙｔｅの物理アドレス領域を持っている場合で説明する。また、ＮＡＮＤデバイス７ａは、システムに見せる論理アドレス領域より大きな物理アドレス領域を持つが、簡略化のため、論理アドレス領域も物理アドレス領域と同じ１ＴＢｙｔｅとする。このようなＮＡＮＤデバイス７ａは、物理ブロックが１６ＭＢｌｏｃｋに分割されている。そこで、管理情報テーブル１９におけるエントリも１６ＭＢｌｏｃｋとなる。このように、管理情報テーブル１９のサイズが大きくなる。そこで、なるべく読み出しの時間を短縮するため、１エントリ分のサイズを、ＤＩＭＭの１回の読み出し量に相当する６４Ｂｙｔｅとする。論理アドレスブロックのサイズは小さいほどデータの移動判定における検索範囲が細分化でき効率が良い。そこで、論理アドレス領域を５１２個に分割する。この場合、１論理アドレスのサイズは２Ｍｐａｇｅとなる。【００４７】
図３に戻り、リクエスタインターフェース部１２は、ＣＰＵ３ａ及び３ｂからＮＡＮＤデバイス７ａ〜１０ａに対するリクエストのインターフェースである。例えば、リクエスタインターフェース部１２は、論理アドレスを含む読出し要求をＣＰＵ３ａ又は３ｂからＩ／Ｏハブ４を介して受信する。その場合、リクエスタインターフェース部１２は、読出し要求をリクエスト調停部１３に出力する。また、リクエスタインターフェース部１２は、ＮＡＮＤデバイス７ａ〜１０ａから読出したデータをリクエスト調停部１３から受信すると、読出し要求の発行元となるＣＰＵ３ａ又は３ｂに対してデータを送信する。【００４８】
また、リクエスタインターフェース部１２は、ＮＡＮＤデバイス７ａ〜１０ａに対して書込むデータ及び書込み対象となるデータの論理アドレスとを含む書込み要求をＣＰＵ３ａ及び３ｂから受信する。この場合、リクエスタインターフェース部１２は、受信した書込み要求をリクエスト調停部１３に出力する。また、リクエスタインターフェース部１２は、リクエスト調停部１３から、データ書込みが完了した旨の応答を受信すると、受信した応答を、書込み要求の発行元となるＣＰＵ３ａ又は３ｂに対して、応答を送信する。【００４９】
リクエスト調停部１３は、リクエスタインターフェース部１２、データ移動制御部１７、巡回参照制御部１６が発行する各種リクエストの調停を行う。詳細には、リクエスト調停部１３は、読出し要求又は書込み要求をリクエスタインターフェース部１２から受信する。また、リクエスト調停部１３は、ＮＡＮＤデバイス７ａ〜１０ａが記憶するデータを、現在記憶するブロックから他のブロックに移動するよう要求する移動要求をデータ移動制御部１７から受信する。また、リクエスト調停部１３は、物理ブロック内のデータを消去するよう要求する消去要求をデータ移動制御部１７から受信する。また、リクエスト調停部１３は、管理情報テーブル１９の参照を要求するテーブル参照要求を巡回参照制御部１６から受信する。【００５０】
そして、リクエスト調停部１３は、リクエスタインターフェース部１２、データ移動制御部１７及び巡回参照制御部１６から受信する読出し要求、書込み要求、移動要求、消去要求及びテーブル参照要求の調停を行う。例えば、リクエスト調停部１３は、ＣＰＵ３ａ及び３ｂからＮＡＮＤデバイス７ａ〜１０ａに対するデータの読出しや書込みが阻害されないよう、リクエスタインターフェース部１２が発行する読出し要求及び書込み要求を最優先で実行する。また、例えば、リクエスト調停部１３は、移動要求を消去要求及びテーブル参照要求よりも優先して実行し、消去要求をテーブル参照要求よりも優先して実行する。なお、リクエスト調停部１３が各要求を調停するルールについては、上述した処理に限定されるものではなく、任意のルールを適用してよい。【００５１】
以下、リクエスト調停部１３が読出し要求、書込み要求、移動要求、消去要求及びテーブル参照要求を受信した際に実行する処理の一例を説明する。例えば、リクエスト調停部１３は、読出し要求を受信すると、読出し要求に含まれる論理アドレスをテーブル制御部１４に出力する。そして、リクエスト調停部１３は、読出し対象となる物理アドレスをテーブル制御部１４から受信すると、受信した物理アドレスを格納した読出し要求をデバイスアクセス制御部１５へ発行する。その後、リクエスト調停部１３は、読出し対象となるデータをデバイスアクセス制御部１５から受信すると、受信したデータをリクエスタインターフェース部１２へ出力する。【００５２】
また、リクエスト調停部１３は、書込み要求を受信すると、書込み要求に含まれる論理アドレスをテーブル制御部１４に出力する。この結果、リクエスト調停部１３は、書込み対象のデータが新たなデータである場合は、データが格納されていない予備ブロックのうち、データの書込み先となるページの物理アドレスをテーブル制御部１４から受信する。【００５３】
その後、リクエスト調停部１３は、テーブル制御部１４から受信した物理アドレスと、書込み対象のデータとを含む書込み要求とをデバイスアクセス制御部１５へ発行する。また、リクエスト調停部１３は、デバイスアクセス制御部１５からデータの書込みが完了した旨の応答を受信すると、データの書込み先となるページの物理アドレス及び書込み要求に含まれる論理アドレスを含むテーブル更新要求をテーブル制御部１４へ出力する。そして、リクエスト調停部１３は、テーブルの更新が終了した旨の応答をテーブル制御部１４から受信した場合は、書込み要求に対する応答をリクエスタインターフェース部１２へ出力する。【００５４】
また、リクエスト調停部１３は、書込みがデータの更新を目的とする場合は、更新元のデータが格納されたページの物理アドレスを更新元物理アドレスとしてテーブル制御部１４から受信する。また、リクエスト調停部１３は、予備ブロックに含まれるページの物理アドレス、すなわちデータの書込み先となるページの物理アドレスを更新先物理アドレスとしてテーブル制御部１４から受信する。【００５５】
そして、リクエスト調停部１３は、更新元物理アドレス及び更新先物理アドレスをテーブル制御部１４から受信した場合は、データの更新を要求する更新要求をデバイスアクセス制御部１５へ発行する。詳細には、リクエスト調停部１３は、更新元物理アドレス、更新先物理アドレス、及び書込むデータを含む更新要求をデバイスアクセス制御部１５へ発行する。【００５６】
また、リクエスト調停部１３は、データの書込みが完了した旨の応答をデバイスアクセス制御部１５から受信すると、更新元物理アドレス、更新先物理アドレス、及び書込み要求に含まれる論理アドレスを含むテーブル更新要求をテーブル制御部１４へ出力する。その後、リクエスト調停部１３は、テーブル更新要求に対する応答をテーブル制御部１４から受信すると、データの書込みが完了した旨の応答をリクエスタインターフェース部１２へ出力する。【００５７】
また、リクエスト調停部１３は、移動させるデータが格納された物理ページの物理アドレスである移動元物理アドレス及び移動させるデータを指定するための論理アドレスを含む移動要求をデータ移動制御部１７などから受信する。また、リクエスト調停部１３は、テーブル制御部１４への問い合わせなどを行い、データの移動先となる物理ページの物理アドレスを移動先物理アドレスとして取得する。【００５８】
そして、リクエスト調停部１３は、移動元物理アドレス及び移動先物理アドレスを含む移動要求をデバイスアクセス制御部１５に発行する。また、リクエスト調停部１３は、データの移動が完了した旨の応答をデバイスアクセス制御部１５から受信する。そして、リクエスト調停部１３は、データ移動制御部１７から受信した移動対象のデータを指定する論理アドレス、移動先物理アドレス、及び移動元物理アドレスを含むテーブル更新要求をテーブル制御部１４へ出力する。その後、リクエスト調停部１３は、テーブル更新要求に対する応答をテーブル制御部１４から受信した場合は、データの移動が完了した旨の応答をデータ移動制御部１７へ出力する。【００５９】
また、リクエスト調停部１３は、データの消去対象となる物理ブロックを示す物理ブロックアドレスを含む消去要求をデータ移動制御部１７などから受信する。リクエスト調停部１３は、消去要求を受信すると、受信した消去要求をデバイスアクセス制御部１５へ発行する。そして、リクエスト調停部１３は、データの消去が完了した旨の応答をデバイスアクセス制御部１５から受信すると、消去要求に格納された物理ブロックアドレスを含むテーブル更新要求をテーブル制御部１４へ出力する。そして、リクエスト調停部１３は、データの更新が終了した旨の応答をテーブル制御部１４から受信した場合は、データの消去が完了した旨の応答をデータ移動制御部１７へ出力する。【００６０】
また、リクエスト調停部１３は、テーブル参照要求を巡回参照制御部１６から受信した場合は、アドレス変換テーブル１８と管理情報テーブル１９の参照要求をテーブル制御部１４へ送信する。そして、リクエスト調停部１３は、アドレス変換テーブル１８及び管理情報テーブル１９をテーブル制御部１４から受信すると、受信したアドレス変換テーブル１８及び管理情報テーブル１９を巡回参照制御部１６に出力する。【００６１】
テーブル制御部１４は、論理アドレスを物理アドレスに変換する。例えば、テーブル制御部１４は、読出し要求に格納された論理アドレスをリクエスト調停部１３から受信すると、受信した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル１８から取得する。そして、テーブル制御部１４は、取得した物理アドレスをリクエスト調停部１３へ出力する。【００６２】
また、テーブル制御部１４は、書込み要求に格納された論理アドレスをリクエスト調停部１３から受信すると、アドレス変換テーブル１８を参照し、受信した論理アドレスに有効フラグ「１」が対応付けられているか判定する。そして、テーブル制御部１４は、受信した論理アドレスに有効フラグ「０」が対応付けられている場合、すなわち、書込み対象のデータが新たなデータである場合は、以下の処理を実行する。【００６３】
まず、テーブル制御部１４は、管理情報テーブル１９を参照し、データが格納されていない物理ブロック、すなわち、予備ブロックを識別する。例えば、テーブル制御部１４は、管理情報テーブル１９を参照し、対応付けられた有効ページ数がすべて「０」である物理ブロックを検索し、検出した物理ブロックを予備ブロックとする。そして、テーブル制御部１４は、予備ブロックに含まれる物理ページの物理アドレスをリクエスト調停部１３へ出力する。【００６４】
なお、テーブル制御部１４は、一度予備ブロックを識別すると、識別した予備ブロックに含まれる物理ページの全ての物理ページにデータが書込まれるまで、同一の予備ブロックに含まれる物理ページの物理アドレスを出力する。詳細には、テーブル制御部１４は、予備ブロックに含まれる物理ページのうち、データが書込まれていない物理ページの物理アドレスを、物理ページ番号の順に出力する。そして、テーブル制御部１４は、予備ブロックに含まれる全ての物理ページにデータが書込まれた場合は、管理情報テーブル１９を参照して、新たな予備ブロックを識別する。【００６５】
一方、テーブル制御部１４は、受信した論理アドレスに有効フラグ「１」が対応付けられている場合、すなわち、書込みがデータの更新を目的とする場合は、以下の処理を実行する。まず、テーブル制御部１４は、受信した論理アドレスと対応付けられた物理アドレスを更新元物理アドレスとしてリクエスト調停部１３へ出力する。また、テーブル制御部１４は、予備ブロックを識別し、識別した予備ブロックに含まれる物理ページのうち、データが格納されていない物理ページの物理アドレスを更新先物理アドレスとしてリクエスト調停部１３へ出力する。【００６６】
また、テーブル制御部１４は、リクエスト調停部１３が移動要求を受信した際には、移動先物理アドレスの問い合わせをリクエスト調停部１３から受ける。この場合、テーブル制御部１４は、予備ブロックを識別し、識別した予備ブロックに含まれる物理ページのうち、データが格納されていない物理ページの物理アドレスを移動先物理アドレスとしてリクエスト調停部１３へ出力する。【００６７】
また、テーブル制御部１４は、データの書込み、移動、又は消去に応じて、アドレス変換テーブル１８及び管理情報テーブル１９の更新を行う。例えば、テーブル制御部１４は、リクエスト調停部１３が新たなデータの書込みを行う場合は、データの書込み先となる物理ページの物理アドレス及び書込み要求に含まれる論理アドレスを含むテーブル更新要求を受信する。【００６８】
この場合、テーブル制御部１４は、データの書込み先となる物理ページの物理アドレス及び論理アドレスをテーブル更新要求から抽出する。そして、テーブル制御部１４は、アドレス変換テーブル１８における抽出した論理アドレスと対応付けられた有効フラグを「１」に更新する。また、テーブル制御部１４は、抽出した論理アドレスに対応付けて、抽出した物理アドレスをアドレス変換テーブル１８に格納する。【００６９】
さらに、テーブル制御部１４は、管理情報テーブル１９において、抽出した物理ブロックに対応する、抽出した論理アドレスを含む論理アドレスブロックの欄を「１」とする。【００７０】
また、テーブル制御部１４は、抽出した物理アドレスが示す物理ブロックアドレスに対応付けられたエントリを管理情報テーブル１９から抽出する。そして、テーブル制御部１４は、抽出したエントリの有効ページ数を１つ増やす。また、テーブル制御部１４は、抽出したエントリにおける抽出した論理アドレスを含む論理アドレスブロックの欄を「１」とする。ここで、テーブル制御部１４は、既に「１」が記載されている欄に対しては、フラグを付加する処理は行わない。その後、テーブル制御部１４は、テーブル更新要求に対する応答をリクエスト調停部１３に出力する。【００７１】
また、テーブル制御部１４は、リクエスト調停部１３がデータの更新を行う場合は、更新元物理アドレス、更新先物理アドレス及び書込み要求に含まれる論理アドレスを含むテーブル更新要求をリクエスト調停部１３から受信する。この場合、テーブル制御部１４は、テーブル更新要求から更新元物理アドレス、更新先物理アドレス、及び論理アドレスを抽出する。そして、テーブル制御部１４は、アドレス変換テーブル１８における抽出した論理アドレスと対応付けられた物理アドレスを抽出した更新先物理アドレスに更新する。【００７２】
また、テーブル制御部１４は、更新元物理アドレスに対応する物理ブロックアドレスと対応付けられたエントリを管理情報テーブル１９から抽出する。そして、テーブル制御部１４は、抽出したエントリの有効ページ数を１つ減らす。【００７３】
次に、テーブル制御部１４は、更新先物理ブロックアドレスと対応付けられたエントリを管理情報テーブル１９から抽出する。そして、テーブル制御部１４は、抽出したエントリの有効ページ数を１つ増やす。また、テーブル制御部１４は、抽出したエントリにおける抽出した論理アドレスを含む論理アドレスブロックの欄を「１」とする。その後、テーブル制御部１４は、テーブル更新要求に対する応答をリクエスト調停部１３に出力する。【００７４】
また、テーブル制御部１４は、リクエスト調停部１３がデータの移動を行う場合は、移動元物理アドレス、移動先物理アドレス、及び移動対象のデータを指定する論理アドレスを含むテーブル更新要求を受信する。この場合、テーブル制御部１４は、テーブル更新要求から移動元物理アドレス、移動先物理アドレス、及び論理アドレスを抽出する。そして、テーブル制御部１４は、アドレス変換テーブル１８を参照し、抽出した論理アドレスと対応付けられた物理アドレスを抽出した移動先物理アドレスに更新する。【００７５】
また、テーブル制御部１４は、移動元物理アドレスに対応する物理ブロックアドレスと対応付けられたエントリを管理情報テーブル１９から抽出する。そして、テーブル制御部１４は、抽出したエントリの有効ページ数を１つ減らす。【００７６】
次に、テーブル制御部１４は、移動先物理ブロックアドレスと対応付けられたエントリを管理情報テーブル１９から抽出する。そして、テーブル制御部１４は、抽出したエントリの有効ページ数を１つ増やす。また、テーブル制御部１４は、抽出したエントリにおける抽出した論理アドレスを含む論理アドレスブロックの欄を「１」とする。その後、テーブル制御部１４は、テーブル更新要求に対する応答をリクエスト調停部１３に出力する。【００７７】
また、テーブル制御部１４は、リクエスト調停部１３がデータの消去を行う場合は、消去要求に格納された物理ブロックアドレスを含むテーブル更新要求をリクエスト調停部１３から受信する。そして、テーブル制御部１４は、指定された物理ブロックアドレスに対応するエントリにおける全ての論理アドレスブロックに対応する欄に「０」を設定する。その後、テーブル制御部１４は、テーブル更新要求に対する応答をリクエスト調停部１３へ出力する。【００７８】
また、テーブル制御部１４は、テーブル参照要求を受信した場合は、テーブル記憶部１１からアドレス変換テーブル１８と管理情報テーブル１９とを取得する。そして、テーブル制御部１４は、取得した管理情報テーブル１９をリクエスト調停部１３に出力する。なお、テーブル制御部１４は、例えば、情報処理装置１が実行するシステムから、論理アドレスとデータとの対応付けを解消する旨の指示を受けると、アドレス変換テーブル１８における対象となる論理アドレスと対応付けられた有効フラグを「０」に更新する。【００７９】
デバイスアクセス制御部１５は、リクエスト調停部１３からの各種リクエストに従って、ＮＡＮＤデバイス７ａ〜１０ａに対するデバイスアクセスを実行する。例えば、デバイスアクセス制御部１５は、物理アドレスを含む読出し要求をリクエスト調停部１３から受信する。この場合、デバイスアクセス制御部１５は、ＮＡＮＤデバイス７ａ〜１０ａが有するページのうち、読出し要求に格納されていた物理アドレスが示すページに格納されたデータの読み出しを実行する。そして、デバイスアクセス制御部１５は、読み出したデータをリクエスト調停部１３へ出力する。【００８０】
また、例えば、デバイスアクセス制御部１５は、物理アドレス及び書込み対象のデータを含む書込み要求をリクエスト調停部１３から受信する。この場合、デバイスアクセス制御部１５は、書込み要求に含まれる物理アドレスが示す物理ページに書込み対象のデータを格納する。その後、デバイスアクセス制御部１５は、データの書込みを終了した旨の応答をリクエスト調停部１３へ出力する。【００８１】
また、例えば、デバイスアクセス制御部１５は、更新元物理アドレス、更新先物理アドレス、及び書込むデータを含む更新要求をリクエスト調停部１３から受信する。この場合、デバイスアクセス制御部１５は、更新元物理アドレスが示す物理ページのデータを読み出す。続いて、デバイスアクセス制御部１５は、読み出したデータを更新要求に含まれるデータに更新する。そして、デバイスアクセス制御部１５は、更新したデータを更新先物理アドレスが示す物理ページに格納する。その後、デバイスアクセス制御部１５は、データの書込みを終了した旨の応答をリクエスト調停部１３へ出力する。【００８２】
また、デバイスアクセス制御部１５は、移動元物理アドレス及び移動先物理アドレスを含む移動要求をリクエスト調停部１３から受信する。この場合、デバイスアクセス制御部１５は、移動元物理アドレスが示す物理ページからデータを読出し、読出したデータを移動先物理アドレスが示す物理ページに格納する。その後、デバイスアクセス制御部１５は、データの移動を終了した旨の応答をリクエスト調停部１３へ出力する。【００８３】
また、デバイスアクセス制御部１５は、データの消去対象となる物理ブロックを示す物理ブロックアドレスを含む消去要求をリクエスト調停部１３から受信する。この場合、デバイスアクセス制御部１５は、消去要求に含まれる物理ブロックアドレスが示す物理ブロックに格納されたデータを消去し、データの消去が完了した旨の応答をリクエスト調停部１３へ出力する。【００８４】
巡回参照制御部１６は、所定のタイミングで、巡回参照制御を実行する。例えば、巡回参照制御部１６は、所定の時間間隔、所定の時刻、又は情報処理装置１が実行するアプリケーションプログラムの指示などを契機として、巡回参照制御を実行する。【００８５】
以下、巡回参照制御部１６が実行する巡回参照制御の処理内容について説明する。巡回参照制御部１６は、論理アドレス選択部１６１、物理アドレス取得部１６２、及び判定部１６３を有している。【００８６】
論理アドレス選択部１６１は、アドレス変換テーブル１８及び管理情報テーブル１９の参照要求をリクエスト調停部１３へ出力する。そして、論理アドレス選択部１６１は、リクエスト調停部１３からアドレス変換テーブル１８及び管理情報テーブル１９を受信する。【００８７】
そして、論理アドレス選択部１６１は、管理情報テーブル１９から有効ページ数が閾値よりも小さい物理ブロックを１つ特定する。次に、論理アドレス選択部１６１は、特定した物理ブロックに含まれる有効ページに対応する論理アドレスを含む論理アドレスブロックを選択する。そして、論理アドレス選択部１６１は、選択した論理アドレスブロックの先頭の論理アドレスに検索ポインタを設定する。その後、論理アドレス選択部１６１は、選択した論理アドレスブロックの先頭の論理アドレスを物理アドレス取得部１６２へ出力する。【００８８】
その後、論理アドレス選択部１６１は、判定部１６３から次の論理アドレスの選択の指示を受けると、検索ポインタを１つ増加させて、次に大きいアドレスを有する論理アドレスを移動判定処理の対象として新たに選択する。そして、論理アドレス選択部１６１は、選択した論理アドレスを物理アドレス取得部１６２へ出力する。すなわち、論理アドレス選択部１６１は、最小論理アドレスを検索開始アドレスとしてアドレスが大きくなる順に論理アドレスを１つずつ選択していく。【００８９】
さらに、論理アドレス選択部１６１は、次の論理アドレスブロックへの移行の指示を判定部１６３から受けると、特定した物理ブロックに含まれる有効ページに対応する論理アドレスを含み、且つ、データの移動判定を行っていない論理アドレスブロックを選択する。そして、論理アドレス選択部１６１は、選択した論理アドレスブロックの中からの論理アドレスの選択を行う。【００９０】
物理アドレス取得部１６２は、論理アドレスを論理アドレス選択部１６１から取得する。次に、物理アドレス取得部１６２は、取得した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル１８から取得する。そして、物理アドレス取得部１６２は、取得した物理アドレスを判定部１６３へ出力する。【００９１】
判定部１６３は、物理アドレスを物理アドレス取得部１６２から取得する。そして、判定部１６３は、取得した物理アドレスを有するページが、論理アドレス選択部１６１により特定された物理ブロックに含まれているか否かを判定する。【００９２】
取得した物理アドレスが特定された物理ブロックの物理ブロックアドレスに含まれていない場合、判定部１６３は、次の論理アドレスの選択を論理アドレス選択部１６１へ指示する。【００９３】
これに対して、取得した物理アドレスを有するページが特定した物理ブロックに含まれている場合、判定部１６３は、取得した物理アドレスに対応するアドレス変換テーブル１８の有効フラグが「１」であるか否かを確認する。判定部１６３は、有効フラグが「０」の場合、次の論理アドレスの選択を論理アドレス選択部１６１へ指示する。【００９４】
これに対して、判定部１６３は、有効フラグが「１」の場合、取得した物理アドレス及び選択した論理アドレスの組をデータ移動制御部１７へ出力する。そして、判定部１６３は、データ移動が完了すると、論理アドレス選択部１６１により選択された論理アドレスブロック内の全ての論理アドレスについてデータの移動判定を行ったか否かを判定する。判定部１６３は、選択された論理アドレスブロック内の論理アドレスにおいてデータの移動判定が完了していない論理アドレスがある場合、次の論理アドレスの選択を論理アドレス選択部１６１へ指示する。【００９５】
一方、選択された論理アドレスブロック内の全ての論理アドレスにおいてデータの移動判定を行った場合、判定部１６３は、取得した物理ブロックに未だ有効ページがあるか否かを判定する。例えば、判定部１６３は、データの移動を行った際に、管理情報テーブル１９における取得した物理ブロックの有効ページ数から１をデクリメントしていき、有効ページ数が０になった場合に、有効ページがなくなったと判定する。【００９６】
有効ページが未だある場合、判定部１６３は、次の論理アドレスブロックへの移行の指示を論理アドレス選択部１６１へ通知する。【００９７】
一方、有効ページがなくなった、すなわち、データの移動により物理ブロックが空になったと判定した場合、判定部１６３は、取得した物理アドレス、選択した論理アドレス、及びブロックが空になる旨を示すラストフラグの組をデータ移動制御部１７に出力する。【００９８】
巡回参照制御部１６は、選択した物理ブロックにおけるデータの移動及びブロックの消去を行い空き容量を作成した後、予め決められた閾値以上の空き容量が確保できたか否かを判定する。閾値以上の空き容量が確保できていない場合、巡回参照制御部１６は、新たに物理ブロックを選択して以上の処理を繰り返す。予め決められた閾値以上の空き容量が確保できた場合、巡回参照制御部１６は、ガベージコレクションの処理を終了する。【００９９】
データ移動制御部１７は、データの移動を行う。具体的には、データ移動制御部１７は、巡回参照制御部１６から、論理アドレス及び物理アドレスの組、又は、論理アドレス、物理アドレス、及びラストフラグとの組を受信する。【０１００】
データ移動制御部１７は、論理アドレス及び物理アドレスの組を受信した場合、受信した組に含まれる物理アドレスを移動元物理アドレスとする。そして、データ移動制御部１７は、移動元物理アドレスと、受信した組に含まれる論理アドレスとを含む移動要求をリクエスト調停部１３へ出力する。その後、データ移動制御部１７は、データの移動が完了した旨の応答をリクエスト調停部１３から受信すると、受信した組に含まれる物理アドレスが示す物理ページのデータ移動処理を終了する。【０１０１】
一方、データ移動制御部１７は、論理アドレス、物理アドレス、及びラストフラグの組を巡回参照制御部１６から受信した場合、受信した組に含まれる物理アドレスを移動元物理アドレスとする。そして、データ移動制御部１７は、移動元物理アドレス及び受信した組に含まれる論理アドレスを含む移動要求をリクエスト調停部１３へ出力する。その後、データ移動制御部１７は、データの移動が完了した旨の応答を受信すると、受信した組に含まれる物理ブロックアドレスを含む消去要求をリクエスト調停部１３へ出力する。そして、データ移動制御部１７は、データの消去が完了した旨の応答をリクエスト調停部１３から受信すると、受信した組に含まれる物理アドレスが示す物理ページのデータ移動処理を終了する。【０１０２】
例えば、データ移動制御部１７は、巡回参照制御部１６から、論理アドレス「Ｌ０００１」と、物理アドレス「Ｐ００３２」と、ラストフラグとの組を受信する。かかる場合は、データ移動制御部１７は、移動元物理アドレス「Ｐ００３２」と、論理アドレス「Ｌ０００１」とを含む移動要求をリクエスト調停部１３に出力する。そして、データ移動制御部１７は、データの移動が完了した旨の応答を受信した場合は、物理アドレス「Ｐ００３２」を含む物理ブロックアドレスの消去要求をリクエスト調停部１３に出力する。この結果、ＮＡＮＤコントローラ６ａは、物理アドレス「Ｐ００３２」を含む物理ブロックアドレスが示す物理ブロックのデータを消去し、新たな予備ブロックとする。【０１０３】
なお、例えば、リクエスタインターフェース部１２、リクエスト調停部１３、テーブル制御部１４、デバイスアクセス制御部１５、巡回参照制御部１６、データ移動制御部１７とは、電子回路である。ここで、電子回路の例として、ＡＳＩＣ（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）、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。【０１３８】
そして、ＮＡＮＤコントローラ６ｅが各ＣＰＵ４０を介して、これらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【０１３９】
１  情報処理装置
２ａ，２ｂ  メモリ
３ａ，３ｂ，４０  ＣＰＵ
４  Ｉ／Ｏハブ
５ａ，５ｂ  ＳＳＤ
６ａ，６ｂ，６ｅ  ＮＡＮＤコントローラ
７ａ〜１０ａ，７ｂ〜１０ｂ  ＮＡＮＤデバイス
１１  テーブル記憶部
１２  リクエスタインターフェース部
１３，３２  リクエスト調停部
１４，３１  テーブル制御部
１５  デバイスアクセス制御部
１６，３３  巡回参照制御部
１７，３４  データ移動制御部
１８  アドレス変換テーブル
１９  管理情報テーブル
３０  制御プログラム
１６１  論理アドレス選択部
１６２  物理アドレス取得部
１６３  判定部
【図１】
0005967308.tif 000002
【図２】
0005967308.tif 000003
【図３】
0005967308.tif 000004
【図４】
0005967308.tif 000005
【図５】
0005967308.tif 000006
【図６】
0005967308.tif 000007
【図７】
0005967308.tif 000008
【図８】
0005967308.tif 000009
【図９】
0005967308.tif 000010