(57)【要約】【課題】性能や資源使用効率を維持しつつ、システムの信頼性を確保する情報処理装置、データ転送制御方法及びデータ転送制御プログラムを提供する。【解決手段】アドレス変換テーブル１８は、論理アドレスと物理アドレスとの対応関係、並びに、各論理アドレスに対応する物理アドレスが他の論理アドレスに対応するように対応関係が変更された場合の対応関係の変更を示す変更情報及び他の論理アドレスを記憶する。テーブル制御部１４は、ＣＰＵから論理アドレス間のデータの移動命令を受信した場合、アドレス変換テーブル１８において、当該データが格納されている物理アドレスに移動先の論理アドレスが対応するように対応関係を変更し、移動元の論理アドレスに変更情報を設定し、移動元の論理アドレスに対応する他の論理アドレスとして移動先の論理アドレスを記憶させる。【選択図】図４
2015088069.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）、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。
【０１６５】
そして、ＮＡＮＤコントローラ６ａが各ＣＰＵ９０２を介して、これらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【０１６６】
１  情報処理装置
２ａ，２ｂ  メモリ
３ａ，３ｂ  ＣＰＵ
４  Ｉ／Ｏハブ
５ａ，５ｂ  ＳＳＤ
６ａ，６ｂ  ＮＡＮＤコントローラ
７ａ〜１０ａ，７ｂ〜１０ｂ  ＮＡＮＤデバイス
１１  テーブル記憶部
１２  リクエスタインターフェース部
１３  リクエスト調停部
１４  テーブル制御部
１５  デバイスアクセス制御部
１６  移動対象検索部
１７  データ移動制御部
１８  アドレス変換テーブル
１９  管理情報テーブル
９０１  メモリデバイス
９０２  ＣＰＵ
９０３  制御プログラム
【図１】
2015088069.tif 000003
【図２】
2015088069.tif 000004
【図３】
2015088069.tif 000005
【図４】
2015088069.tif 000006
【図５】
2015088069.tif 000007
【図６】
2015088069.tif 000008
【図７】
2015088069.tif 000009
【図８】
2015088069.tif 000010
【図９】
2015088069.tif 000011
【図１０】
2015088069.tif 000012
【図１１】
2015088069.tif 000013
【図１２】
2015088069.tif 000014
【図１３】
2015088069.tif 000015