(57)【特許請求の範囲】
【請求項１】
アクセスする経路が異なるグループに分けられた複数の記憶部と、
複数の前記記憶部のうちの第１記憶部へ接続する第１経路を経由して前記第１記憶部から格納データを読み出し、複数の前記記憶部のうちの第２記憶部へ接続する第２経路を経由して前記第２記憶部へ読み出した前記格納データを書き込むデータ移動部と、
データの書込命令を受けて、複数の前記記憶部のうちの第３記憶部に接続する第３経路を経由して前記第３記憶部に前記書込命令で指定されたデータを書き込む書込実行部と、
前記第１経路及び前記第２経路と、前記第３経路とが異なるように前記第３記憶部を選択する選択部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記選択部は、前記第２経路が前記第１経路と一致するように、前記第２記憶部を選択し、前記第３経路が前記第２経路と異なるように、前記第３記憶部を選択することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記記憶部は、格納データが移動されると無効となる複数の記憶領域に分割されており、前記記憶部内の全ての記憶領域が無効又は未使用となるとデータの消去が行われ未使用の状態となり、
前記データ移動部は、前記第１記憶部の前記記憶領域の有効な格納データを、前記第２記憶部の前記記憶領域に移動し、前記第１記憶部内の全ての前記記憶領域を無効としてデータの消去可能状態とする
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記記憶部は、不揮発性メモリであることを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記データ移動部は、前記第１記憶部から前記第１経路を経由して格納データを読み出し、読み出した前記格納データのエラー検出を行い、エラーを検出した場合、読み出したデータのエラー訂正を行い、エラー訂正したデータを前記第２記憶部へ前記第２経路を経由して書き込み、
前記選択部は、前記第１経路と前記第２経路とが異なるように前記データ移動部に第１記憶部及び前記第２記憶部を選択させる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
アクセス経路が異なるグループに分けられた複数のメモリの中の第１メモリにアクセスする第１アクセス経路を経由して前記第１メモリから格納データを読み出し、読み出した前記格納データを複数の前記メモリの中の第２メモリにアクセスする第２経路を経由して前記第２メモリに書き込むデータ移動部と、
データ書込命令を受けて、前記データ書込命令で指定されたデータを複数の前記メモリの中の第３メモリにアクセスする第３経路を経由して前記第３メモリに書き込む書込実行部と、
前記第１経路及び前記第２経路と、前記第３経路とが異なるように前記第３メモリを選択する選択部と
を備えたことを特徴とするメモリコントローラ。
【請求項７】
アクセス経路が異なるグループに分けられた複数の記憶部を有する記憶装置の制御プログラムであって、
複数の前記記憶部のうちの第１記憶部に接続する第１経路及び複数の前記記憶部のうちの第２記憶部に接続する第２経路と、複数の前記記憶部のうちの第３記憶部に接続する第３経路とが異なるように前記第３記憶部を選択し、
前記第１経路を経由して前記第１記憶部から格納データを読み出し、
読み出した前記格納データを、前記第２経路を経由して前記第２記憶部へ書き込み、
データ書込命令を受けて、前記第３経路を経由して前記第３記憶部に前記書込命令で指定されたデータを書き込む
処理をコンピュータに実行させることを特徴とする記憶装置の制御プログラム。
【請求項８】
アクセス経路が異なるグループに分けられた複数の記憶部を有する記憶装置の制御方法であって、
複数の前記記憶部のうちの第１記憶部に接続する第１経路及び複数の前記記憶部のうちの第２記憶部に接続する第２経路と、複数の前記記憶部のうちの第３記憶部に接続する第３経路とが異なるように前記第３記憶部を選択し、
前記第１経路を経由して前記第１記憶部から格納データを読み出し、
読み出した前記格納データを、前記第２経路を経由して前記第２記憶部へ書き込み、
データ書込命令を受けて、前記第３経路を経由して前記第３記憶部に前記書込命令で指定されたデータを書き込む
ことを特徴とする記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法に関する。
【背景技術】
【０００２】
近年、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理装置が知られている。このような情報処理システムの一例として、不揮発性メモリの一種であるＮＡＮＤフラッシュメモリデバイスがメモリシステムやストレージシステムとして様々な分野で利用されている。ＮＡＮＤフラッシュメモリデバイスは従来の磁気ディスクに比べて動作速度が高速で、かつ他の不揮発性メモリよりも大容量化が容易である。以下の説明では、ＮＡＮＤフラッシュメモリデバイスをＮＡＮＤデバイスと記載する。さらに、ＮＡＮＤデバイスを用いたストレージとしては、複数のＮＡＮＤデバイスを有するＳＳＤ（Solid  State  Drive）といったものがある。【０００３】
ここで、ＮＡＮＤデバイスは、データの記憶領域である物理ページ単位でデータの書込み、読出し、データの更新に係る移動を行い、複数の物理ページを含む物理ブロック単位でデータの消去を行う。このため、ＮＡＮＤデバイスは、有効なデータを格納するページと無効なデータを格納するページとが混在した物理ブロックを有する場合がある。また、ＮＡＮＤデバイスは、データを消去する際に素子が劣化するので、頻繁に更新されるデータが書込まれた物理ページと、あまり更新されないデータが書込まれた物理ページとでは素子が劣化する期間にばらつきが発生する。【０００４】
このため、各物理ブロックに対するデータの書込み状況やデータの書込時刻に応じて、各物理ブロックに書込まれたデータの移動を実行し、データの整理や劣化の平準化を行うＮＡＮＤコントローラが知られている。ある物理ブロック内の有効ページが少なくなったときに、残っている有効ページを他のブロックに移動してブロックを消去できるように整理する処理は、「ガベージコレクション」と呼ばれる。また、ブロック毎の劣化速度のばらつきを抑えるために、書き込まれてから長時間更新のないデータを別のブロックに移動して消去回数を平準化する処理は、「ウェアレベリング」と呼ばれる。さらに、データが正常に保管されていることを確認するために、データを読み出し、エラー検出を行い、エラーを検出した場合、他のアドレスにデータを訂正して書き込む処理は、「スクラブ」と呼ばれる。【０００５】
ＮＡＮＤコントローラは、物理ブロック毎に、各物理ページのデータが有効であるか否かを示す情報と、最後にデータが書き込まれた時刻を示す情報とが格納された管理情報テーブルを有する。そして、ＮＡＮＤコントローラは、仮情報テーブルを用いてガベージコレクション、ウェアレベリング及びスクラブを行う。【０００６】
例えば、ＮＡＮＤコントローラは、管理情報テーブルを参照し、物理ブロック毎に、有効なデータの数やデータが書込まれてから経過した時間に応じて、データを移動させるか否かを判定する。その後、ＮＡＮＤコントローラは、データを移動させると判定した場合は、物理ブロックに書込まれた有効なデータを、予備ブロックの物理ページに移動し、選択した物理ブロックのデータを消去することで、新たな予備ブロックの確保や、劣化の平準化を行う。【０００７】
また、ＮＡＮＤコントローラは、情報処理装置が実行するシステムがデータの指定に用いる論理アドレスを、データが格納された物理ページを示す物理アドレスに変換するアドレス変換テーブルを有する。そして、ＮＡＮＤコントローラは、データの移動を行った場合は、データの移動元、および、データの移動先を示す物理アドレスを用いて、アドレス変換テーブルの更新を行う。【０００８】
例えば、ＮＡＮＤデバイスの技術として、複数のストライプの各々が異なる処理状態となるようにスケジューリングし、各処理の競合を分散する従来技術が有る。また、ＮＡＮＤコントローラからデータの読み出しと移動先への書き込みを同時に行い、データをＮＡＮＤコントローラに一時保管せずに、直接ＮＡＮＤデバイスから他のＮＡＮＤデバイスへ移動させる従来技術がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特表２０１３−５１３８８１号公報
【特許文献２】特開２０１２−２３０６２１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、ガベージコレクションにおいて、ＮＡＮＤデバイスから読み出した移動対象のデータを、ＮＡＮＤデバイスに書き込む場合、書き込みを行っているチャネルに対するＣＰＵによるデータの読み出しや書き込みが妨げられてしまう。これにより処理効率が低下してしまう。これは、ウェアレベリングの場合も同じである。【００１１】
また、ストライプ毎に状態を異ならせる従来技術を用いた場合、複数のチャネルをまたぐデータ移動が多くなり、処理能力が低下するおそれがある。また、データのＮＡＮＤデバイスへの一時保管を行わずにＮＡＮＤデバイス間でデータの移動を行う従来技術を用いても、ＣＰＵからの命令とガベージコレクションなどの処理との競合を取り除くことは困難である。【００１２】
開示の技術は、上記に鑑みてなされたものであって、処理効率を向上させた情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本願の開示する情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法は、一つの態様において、複数の記憶部は、アクセスする経路が異なるグループに分けられる。データ移動部は、複数の前記記憶部のうちの第１記憶部へ接続する第１経路を経由して前記第１記憶部から格納データを読み出し、複数の前記記憶部のうちの第２記憶部へ接続する第２経路を経由して前記第２記憶部へ読み出した前記格納データを書き込む。書込実行部は、データの書込命令を受けて、複数の前記記憶部のうちの第３記憶部に接続する第３経路を経由して前記第３記憶部に前記書込命令で指定されたデータを書き込む。選択部は、前記第１経路及び前記第２経路と、前記第３経路とが異なるように前記第３記憶部を選択する。
【発明の効果】
【００１４】
本願の開示する情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法の一つの態様によれば、処理効率が向上するという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、情報処理装置の概略構成図である。
【図２】図２は、実施例１に係るＮＡＮＤコントローラのブロック図である。
【図３】図３は、管理テーブルの一例を表す図である。
【図４】図４は、調停部へ入力される信号のフォーマットの一例の図である。
【図５】図５は、ガベージコレクション実行前の管理テーブル及びアドレス変換テーブルの状態を表す図である。
【図６】図６は、ガベージコレクション実行後の管理テーブル及びアドレス変換テーブルの状態を表す図である。
【図７】図７は、調停部及びチャネル切替部のデータの書き込みに関する詳細なブロック図である。
【図８】図８は、ＮＡＮＤコントローラの各部からの出力を表すタイムチャートである。
【図９】図９は、データ移動処理及びＣＰＵからの書込命令の処理のフローチャートである。
【図１０】図１０は、実施例２に係るＮＡＮＤコントローラによるスクラブの処理のフローチャートである。
【図１１】図１１は、実施例３に係るＮＡＮＤコントローラのブロック図である。
【発明を実施するための形態】
【００１６】
以下に、本願の開示する情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法が限定されるものではない。
【実施例１】
【００１７】
図１は、情報処理装置の概略構成図である。情報処理装置１は、複数のメモリ２ａ及び２ｂ、複数のＣＰＵ（Central  Processing  Unit）３ａ及び３ｂ、Ｉ／Ｏ（Input  Output）ハブ４、並びに、複数のＳＳＤ（Solid  State  Drive）５ａ及び５ｂを有する。また、ＳＳＤ５ａは、ＮＡＮＤコントローラ６ａ及び複数のＮＡＮＤデバイス７１ａ〜７８ａを有する。【００１８】
また、ＳＳＤ５ｂは、ＮＡＮＤコントローラ６ｂ及び複数のＮＡＮＤデバイス７１ｂ〜７８ｂを有する。なお、以下の説明では、ＳＳＤ５ｂ、ＮＡＮＤコントローラ６ｂ、及び複数のＮＡＮＤデバイス７１ｂ〜７８ｂは、ＳＳＤ５ａ、ＮＡＮＤコントローラ６ａ、及び複数のＮＡＮＤデバイス７１ａ〜７８ａと同様の機能を発揮するものとして、説明を省略する。【００１９】
各メモリ２ａ及び２ｂは、各ＣＰＵ３ａ及び３ｂが演算処理に用いるデータを記憶する記憶装置である。また、各ＣＰＵ３ａ及び３ｂは、メモリ２ａ及び２ｂが記憶するデータを用いて、各種演算処理を行う演算処理装置である。例えば、ＣＰＵ３ａ及び３ｂは、ＮＵＭＡ（Non-Uniform  Memory  Access）の技術を用いて、メモリ２ａ及び２ｂが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。【００２０】
また、ＣＰＵ３ａ及び３ｂは、Ｉ／Ｏハブ４を介して、各ＳＳＤ５ａ及び５ｂが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。詳細には、ＣＰＵ３ａは、ＳＳＤ５ａに対し、データの読出し要求や書込み要求を発行し、各ＮＡＮＤデバイス７１ａ〜７８ａからデータの読出しや書込みを行う。例えば、ＣＰＵ３ａは、ＳＳＤ５ａに対し、読出し対象となるデータを指定する論理アドレスが格納された読出し要求を発行する。また、ＣＰＵ３ａは、データの書込み先を指定する論理アドレスと、書込み対象となるデータとが格納された書込み要求を発行する。【００２１】
ＮＡＮＤデバイス７１ａは、各種データを記憶する不揮発性メモリである。詳細には、ＮＡＮＤデバイス７１ａは、データの記憶領域である物理ページを複数有し、物理ページ単位でデータの書込みを行う。また、ＮＡＮＤデバイス７１ａは、複数の物理ページを有する物理ブロックを複数有し、ブロック単位でデータの消去を行う。ここで、１つの物理ページは、例えば、８キロバイトの記憶容量を有し、１つの物理ブロックは、例えば、１２８の物理ページを有する。【００２２】
また、ＮＡＮＤデバイス７１ａは、ＮＡＮＤコントローラ６ａと伝送路８１ａで接続されている。このＮＡＮＤデバイス７１ａとＮＡＮＤコントローラ６ａとを結ぶ伝送路８１ａは、チャネルと呼ばれる。以下では、伝送路８１ａを、チャネル８１ａと呼ぶ。同様に、ＮＡＮＤデバイス７２ａも、ＮＡＮＤデバイス７１ａと同様のチャネル８１ａによりＮＡＮＤコントローラ６ａに接続される。このように、１つのチャネル８１ａは、ＮＡＮＤデバイス７１ａ及び７２ａにより共有される。ここで、１つのチャネルを共有するＮＡＮＤデバイスの数は１つでも又３以上であってもよい。【００２３】
同様に、図１では、チャネル８２ａは、ＮＡＮＤデバイス７３ａ及びＮＡＮＤデバイス７４ａにより共有される。また、チャネル８３ａは、ＮＡＮＤデバイス７５ａ及びＮＡＮＤデバイス７６ａにより共有される。チャネル８４ａは、ＮＡＮＤデバイス７７ａ及びＮＡＮＤデバイス７８ａにより共有される。このＮＡＮＤデバイス７１ａ〜７８ａが、「記憶部」の一例にあたる。【００２４】
ＮＡＮＤコントローラ６ａは、各ＮＡＮＤデバイス７１ａ〜７８ａに対してアクセスし、データの読出しや書込みを行う。例えば、ＮＡＮＤコントローラ６ａは、データが記憶された記憶領域を各ＣＰＵ３ａ及び３ｂが指定する際に用いる論理アドレスと、データが格納されたＮＡＮＤデバイス７１ａ〜７８ａの記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。【００２５】
そして、ＮＡＮＤコントローラ６ａは、読出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読出しを行う。その後、ＮＡＮＤコントローラ６ａは、Ｉ／Ｏハブ４を介して、読出したデータをＣＰＵ３ａに送信する。【００２６】
なお、以下の説明では、理解を容易にするため、各物理ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各物理ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、ＣＰＵ３ａ又は３ｂは、各物理ページの先頭アドレスとなる論理アドレスに対する読出し要求や書込み要求を発行するものとする。【００２７】
また、以下では、ＮＡＮＤコントローラ６ａ及び６ｂを区別しない場合、単に「ＮＡＮＤコントローラ６」という。また、ＮＡＮＤデバイス７１ａ〜７８ａ及び７１ｂ〜７８ｂを区別しない場合、単に「ＮＡＮＤデバイス７０」という。また、ＣＰＵ３ａ及び３ｂを区別しない場合、単に「ＣＰＵ３」という。さらに、チャネル８１ａ〜８４ａ及び８１ｂ〜８４ｂを区別しない場合、単に「チャネル８０」という。【００２８】
図２を参照して、ＮＡＮＤコントローラ６について説明する。図２は、実施例１に係るＮＡＮＤコントローラのブロック図である。図２に示すように、ＮＡＮＤコントローラ６は、移動対象検出部６１、データ移動制御部６２、リードライト制御部６３、調停部６４、管理テーブル制御部６５、チャネル切替部６６及びＮＡＮＤ−ＩＦ（Interface）６７ａ〜６７ｄを有している。以下では、ＮＡＮＤ−ＩＦ６７ａ〜６７ｄを区別しない場合、単に「ＮＡＮＤ−ＩＦ６７」という。また、本実施例に係るＮＡＮＤコントローラ６は、管理テーブル６８及びアドレス変換テーブル６９を有している。【００２９】
本実施例に係る管理テーブル６８は、図３に示すフォーマットを有している。図３は、管理テーブルの一例を表す図である。図３に示すように、管理テーブル６８は、各チャネルのブロック毎に、そのブロックが有する各ページが有効であるか無効であるかの情報及び最終の更新時刻を保持している。【００３０】
管理テーブル６８における「ＰａｇｅＶａｌｉｄ」は、ブロックが有する各ページが有効であるか無効であるかの情報である。図３では、１つのブロックに４つのページが有る場合であり、各ページを４つのビットで表している。そして、あるページに対応するビットが０であれば、そのページが無効ページであることを表す。また、あるページに対応するビットが１であれば、そのページが有効ページであることを表している。また、「ＴｉｍｅＳｔａｍｐ」は、各ページの最終の更新時刻を表している。【００３１】
管理テーブル６８は、例えば、ガベージコレクションやウェアレベリング、又はＣＰＵからのデータの書込命令における書き込み先の検出に用いられる。【００３２】
アドレス変換テーブル６９は、ＣＰＵ３によって指定される論理アドレスと、ＮＡＮＤデバイス７１における物理アドレスとの対応関係が登録されている。アドレス変換テーブル６９は、物理アドレスの情報として、その物理アドレスを有するページの情報とそのページを含むブロックの情報との組み合わせを保持している。さらに、アドレス変換テーブル６９は、物理アドレスの情報として、その物理アドレスを有するページを含むＮＡＮＤデバイス７０にアクセスするためのチャネル８０の情報を保持している。【００３３】
例えば、アドレス変換テーブル６９は、リードライト制御部６３がＣＰＵ３により指定された論理アドレスに対応する物理アドレスを取得する場合に用いられる。【００３４】
さらに、アドレス変換テーブル６９は、ＮＡＮＤデバイス７０に対してデータの書き込みが行われた場合、管理テーブル制御部６５により、書き込むデータの格納場所として指定された論理アドレスと書き込み先の物理アドレスとが対応するように更新される。また、その場合、アドレス変換テーブル６９は、管理データ制御部６５により、書き込むデータの読み出し元のデータが格納されていた物理アドレスと論理アドレスとの対応が削除される。【００３５】
移動対象検出部６１は、ソフトウェアからの指示や内部タイマーを契機として、管理テーブル６８の検索リクエストを管理テーブル制御部６５へ送信する。その後、移動対象検出部６１は、ガベージコレクション又はウェアレベリングを実行する場合、実行対象のページの情報の入力をリクエスト応答として管理テーブル制御部６５から受ける。ここで、移動対象検出部６１は、実行対象のページの情報として、例えば、そのページが存在する物理ブロックの情報、そのページの物理アドレス及びそのページにアクセスするためのチャネル８０の情報を取得する。【００３６】
そして、移動対象検出部６１は、実行対象のページの情報をデータ移動制御部６２に通知する。さらに、移動対象検出部６１は、実行する処理の種類、すなわち、ガベージコレクション又はウェアレベリングのいずれの処理を実行するかを表す情報をデータ移動制御部６２に通知する。これにより、移動対象検出部６１は、実行対象のページのデータを新たな物理ブロックに順次移動することをデータ移動制御部６２に指示する。その後、移動対象検出部６１は、ガベージコレクション又はウェアレベリングの処理完了の応答をデータ移動制御部６２から受信して、ガベージコレクション又はウェアレベリングの処理を終了する。【００３７】
データ移動制御部６２は、実行対象のページの情報、及びガベージコレクション又はウェアレベリングのいずれの処理を実行するかを表す情報を移動対象検出部６１から受信する。【００３８】
そして、データ移動制御部６２は、移動対象検出部６１により通知された各実行対象のページからのデータの読出命令を調停部６４へ順次出力する。その後、データ移動制御部６２は、指定したページから読み出したデータの入力を調停部６４から受ける。そして、データ移動制御部６２は、受信したデータを読み出し元である移動対象のページの情報と対応させて一時保管する。【００３９】
次に、データ移動制御部６２は、一次保管したデータを、読み出しに使用したチャネル８０の情報及び書込命令とともに調停部６４へ出力する。ここで、読み出しに使用したチャネル８０とは、データの読み出し元である移動対象のページを有するＮＡＮＤデバイス７０へアクセスするためのチャネル８０である。【００４０】
その後、データ移動制御部６２は、ガベージコレクション又はウェアレベリングの処理完了の応答を調停部６４から受信する。そして、データ移動制御部６２は、ガベージコレクション又はウェアレベリングの処理完了の応答を移動対象検出部６１へ送信する。【００４１】
ここで、図４を参照して、データ移動制御部６２から調停部６４へ入力される信号について説明する。図４は、調停部へ入力される信号のフォーマットの一例の図である。ただし、データ移動制御部６２からの信号だけでではなく、リードライト制御部６３から調停部６４に入力される信号も、図４に示すフォーマットを有する。【００４２】
図４に示すように、データ移動制御部６２から調停部６４へ入力される信号は、ヘッダ部に命令種１０１、論理アドレス１０２、物理アドレス１０３、データ移動制御の命令の番号１０４及び管理テーブルの検索チャネル１０５が格納される。また、データ移動制御部６２から調停部６４へ入力される信号は、データ部にデータ１０６及びデータのエラー訂正ビット１０７が格納される。【００４３】
命令種１０１には、ＣＰＵ３から指示された書き込み又は読み出し、ガベージコレクション又はウェアレベリングの書き込み又は読み出しのいずれかを示す情報が格納される。論理アドレス１０２には、ＣＰＵ３からの書き込み又は読み出し命令の場合に処理の対象とする論理アドレスが格納される。物理アドレス１０３には、調停部６４へ入力される時点では空である。データ移動制御の命令の番号は、ガベージコレクション、ウェアレベリング又はスクラブのいずれかを表す番号が格納される。管理テーブルの検索チャネル１０５には、処理対象とするページを検索する場合に用いるチャネル８０の番号が格納される。【００４４】
また、データ１０６には、書き込み対象のデータが格納される。また、データのエラー訂正ビット１０７には、書き込み対象のデータの誤り訂正用の情報が格納される。誤り訂正用の情報は、例えばＥＣＣ（Error  Check  and  Correct）の誤り検出符号である。【００４５】
読出命令の場合、データ移動制御部６２は、ガベージコレクション又はウェアレベリングのいずれかを示す情報を命令種１０１に格納する。また、データ移動制御部６２は、移動対象のページの物理アドレスを物理アドレス１０３に格納する。また、データ移動制御部６２は、ガベージコレクション又はウェアレベリングのいずれかを示す番号をデータ移動制御の命令の番号１０４に格納する。さらに、データ移動制御部６２は、移動対象のページを有するＮＡＮＤデバイス７０にアクセスするためのチャネル８０の情報を管理テーブルの検索チャネル１０５に格納する。この場合、データ移動制御部６２は、論理アドレス１０２、データ１０６及びデータのエラー訂正ビット１０７には何も格納しない。【００４６】
書込命令の場合、データ移動制御部６２は、ガベージコレクション又はウェアレベリングのいずれかを示す情報を命令種１０１に格納する。この場合、データ移動制御部６２は、論理アドレス１０２を空のままとする。また、この時点では書き込み先のページは決まっていないので、データ移動制御部６２は、物理アドレス１０３を空のままとする。また、データ移動制御部６２は、ガベージコレクション又はウェアレベリングのいずれかを示す番号をデータ移動制御の命令の番号１０４に格納する。さらに、データ移動制御部６２は、読み出しに使用したチャネル８０の情報を管理テーブルの検索チャネル１０５に格納する。また、データ移動制御部６２は、書き込み対象のデータをデータ１０６に格納する。さらに、データ移動制御部６２は、書き込み対象のデータのエラー訂正用の情報を算出し、算出したエラー訂正用の情報をデータのエラー訂正ビット１０７に格納する。このデータ移動制御部６２が、「データ移動部」の一例にあたる。【００４７】
リードライト制御部６３は、ＮＡＮＤデバイス７０に対するデータの書込命令の入力をＣＰＵ３から受ける。そして、リードライト制御部６３は、書込命令で指示された論理アドレスに対応する物理アドレスをアドレス変換テーブル６９から取得する。そして、リードライト部６３は、取得した物理アドレスを読出アドレスとする書込命令を調停部６４へ出力する。【００４８】
ただし、書き込むデータが初めてＮＡＮＤデバイス７０に格納される場合、そのデータの格納場所として指定された論理アドレスに物理アドレスは割り当てられていない。その場合、リードライト制御部６３は、読出アドレスを指定せずに書込命令を調停部６４へ出力する。【００４９】
その後、データの書き込みが完了すると、リードライト制御部６３は、書き込み完了の応答を調停部６４から受信する。そして、リードライト制御部６３は、書き込み完了の応答をＣＰＵ３へ返す。【００５０】
また、リードライト制御部６３は、ＮＡＮＤデバイス７０に対する読出命令の入力をＣＰＵ３から受ける。そして、リードライト制御部６３は、読出命令で指示された論理アドレスに対応する物理アドレスをアドレス変換テーブル６９から取得する。そして、リードライト制御部６３は、取得した物理アドレスを読出アドレスとする読出命令を調停部６４へ出力する。【００５１】
その後、リードライト制御部６３は、読み出されたデータの入力を調停部６４から受ける。そして、リードライト制御部６３は、受信した応答を読出命令の応答としてＣＰＵ３へ返す。【００５２】
リードライト制御部６３も、図４に示すフォーマットを有する信号を用いて、調停部６４に対して書込命令又は読出命令を送る。【００５３】
書込命令の場合、リードライト制御部６３は、ＣＰＵ３からの書込命令であることを表す情報を命令種１０１に格納する。さらに、リードライト制御部６３は、書込命令で指示された論理アドレスを論理アドレス１０２に格納する。また、リードライト制御部６３は、書込命令がデータの更新の場合、データの読み出し元となるページの物理アドレスを物理アドレス１０３に格納する。これに対して、書込命令がデータの更新でなく初めての書き込みの場合、リードライト制御部６３は、物理アドレス１０３を空のままとする。さらに、リードライト制御部６３は、データ移動制御の命令番号を空のままとする。また、書き込み先のページを検索するチャネル８０も決まっていないので、リードライト制御部６３は、管理テーブルの検索チャネル１０５を空のままとする。また、リードライト制御部６３は、書き込むデータをデータ１０６に格納する。さらに、リードライト制御部６３は、データから誤り訂正用の情報を算出し、算出した誤り訂正用の情報をデータのエラー訂正ビット１０７に格納する。【００５４】
読出命令の場合、リードライト制御部６３は、ＣＰＵ３からの読出命令であることを表す情報を命令種１０１に格納する。さらに、リードライト制御部６３は、読出命令で指示された論理アドレスを論理アドレス１０２に格納する。また、リードライト制御部６３は、データの読み出し元となるページの物理アドレスを物理アドレス１０３に格納する。この場合、リードライト制御部６３は、データ移動制御の命令番号は空のままとする。また、リードライト制御部６３は、読み出しに使用するチャネル８０を管理テーブルの検索チャネル１０５に格納する。また、読出命令の場合、リードライト制御部６３は、データ１０６及びデータのエラー訂正ビット１０７には何も格納しない。このリードライト制御部６３が、「書込実行部」の一例にあたる。【００５５】
調停部６４は、データ移動制御部６２及びリードライト制御部６３からの読出命令及び書込命令の調停を行い、管理テーブル制御部及びスイッチ素子６６２に出力する。【００５６】
調停部６４は、ガベージコレクション又はウェアレベリングを実施する場合、図４のフォーマットを有する信号を用いたページの読出命令をデータ移動制御部６２から順次受信する。そして、調停部６４は、読出命令で指定されたページからのデータの読み出しをチャネル切替部６６に指示する。その後、調停部６４は、読み出されたデータをチャネル切替部６６から受信する。次に、調停部６４は、読み出したデータをデータ移動制御部６２へ出力する。【００５７】
その後、調停部６４は、図４のフォーマットを有する信号を用いた書込命令をデータ制御部６２から受信する。これにより、調停部６４は、書き込み指示とともに、読み出しに使用したチャネル８０の情報及び書き込むデータを取得する。【００５８】
次に、調停部６４は、読み出しに使用したチャネル８０に接続されているＮＡＮＤデバイス７０に存在する、予備ブロックを有するブロックの特定を管理テーブル制御部６５に指示する。さらに、調停部６４は、書き込み対象のデータをチャネル切替部６６へ出力する。その後、調停部６４は、データの書き込み完了の応答をチャネル切替部６６から受信する。【００５９】
調停部６４は、以上の処理を、データ移動制御部６２により読み出した指示された全てのページに対して実施する。その後、調停部６４は、ガベージコレクション又はウェアレベリングの処理完了の応答をデータ移動制御部６２に通知する。【００６０】
一方、ＣＰＵ３からデータの書き込み又は読み出しの指示があった場合、調停部６４は、図４に示すフォーマットを有する信号を用いたデータの書込命令又は読出命令をリードライト制御部６３から受ける。【００６１】
書込命令の場合、調停部６４は、書込命令で指定された物理アドレスからのデータの読み出しをチャネル切替部６６に指示する。その後、調停部６４は、読み出されたデータをチャネル切替部６６から取得する。そして、調停部６４は、読み出したデータとリードライト制御部６３から受信したデータとをマージして、データを更新する。【００６２】
次に、調停部６４は、ガベージコレクション又はウェアレベリングの実行命令を受けているか否かを判定する。以下では、ガベージコレクションとウェアレベリングとを区別しない場合、「データ移動処理」という。【００６３】
データ移動処理の実行命令を受けている場合、調停部６４は、データ移動処理の命令において、移動対象のページを有するＮＡＮＤデバイス７０にアクセスするためのチャネル８０を書込み命令から取得する。そして、調停部６４は、取得したチャネル８０以外のチャネル８０から空きページを選択する指示を管理テーブル制御部６５に通知する。さらに、調停部６４は、データをチャネル切替部６６へ出力する。その後、調停部６４は、データの書き込み完了の応答をチャネル切替部６６から受信する。そして、調停部６４は、データの書き込み完了の応答をリードライト制御部６３へ送信する。【００６４】
一方、データ移動処理の実行命令を受けていない場合、調停部６４は、全てのチャネル８０から空きページを選択する指示を管理テーブル制御部６５に通知する。さらに、調停部６４は、データをチャネル切替部６６へ出力する。その後、調停部６４は、リードライト制御部６３に書き込み完了の応答を送信する。その後、調停部６４は、データの書き込み完了の応答をチャネル切替部６６から受信する。そして、調停部６４は、データの書き込み完了の応答をリードライト制御部６３へ送信する。【００６５】
読出命令の場合、調停部６４は、読出命令で指定された物理アドレスからのデータの読み出しをチャネル切替部６６に指示する。その後、調停部６４は、読み出されたデータをチャネル切替部６６から取得する。そして、調停部６４は、読み出したデータを応答としてリードライト制御部６３へ送信する。【００６６】
管理テーブル制御部６５は、データ移動処理の場合、データの書き込み時に、読み出しに使用したチャネル８０に接続されているＮＡＮＤデバイス７０に存在する、予備ブロックを有するブロックの特定の指示を調停部６４から受ける。そして、管理テーブル制御部６５は、管理テーブル６８を検索して、読み出しに使用したチャネル８０に接続されているＮＡＮＤデバイス７０から、予備ブロックを有するブロックを特定する。さらに、管理テーブル制御部６５は、特定した物理ブロックにおけるデータの書き込み先とするページの物理アドレスを管理テーブル６８から取得する。そして、管理テーブル制御部６５は、読み出しに使用したチャネル８０の情報及び取得した物理アドレスをチャネル切替部６６へ出力する。【００６７】
例えば、管理テーブル６８が図３に示す状態の場合に、読み出しに使用したチャネル８０の識別番号が１であったとする。この場合、管理テーブル制御部６５は、識別番号が１であるチャネル８０に含まれるブロックの中から予備ブロックを有するブロックを特定する。すなわち、管理テーブル制御部６５は、範囲Ｐを検索して予備ブロックを有するブロックを特定する。【００６８】
その後、管理テーブル制御部６５は、移動対象のページの論理アドレスが、移動先のページの物理アドレスに対応するようにアドレス変換テーブル６９を更新する。【００６９】
また、データ移動処理命令を受けている際のＣＰＵからの書込命令の場合、管理テーブル制御部６５は、データの書き込み時に、データ移動処理で使用するチャネル８０以外のチャネル８０から空きページを選択する指示を調停部６４から受ける。そして、管理テーブル制御部６５は、管理テーブル６８を用いて、データ移動処理で使用するチャネル８０以外のチャネル８０に接続するＮＡＮＤデバイス７０の中から空きページを管理テーブル６８から選択する。【００７０】
例えば、管理テーブル６８が図３に示す状態の場合に、データ移動処理で使用するチャネル８０の識別番号が１であったとする。この場合、管理テーブル制御部６５は、識別番号が１であるチャネル８０以外のチャネル８０に含まれるブロックの中から空きページを選択する。すなわち、管理テーブル制御部６５は、範囲Ｐ以外を検索して空きページを選択する。【００７１】
その後、管理テーブル制御部６５は、データ移動処理で使用するチャネル８０以外のチャネル８０であって、書き込みに使用するチャネル８０の情報及び書き込み先のページの物理アドレスをチャネル切替部６６へ出力する。【００７２】
さらに、管理テーブル制御部６５は、書き込んだデータが格納されているページを示す論理アドレスが、書き込み先のページの物理アドレスに対応するようにアドレス変換テーブル６９を更新する。【００７３】
ここで、図５及び６を参照して、ガベージコレクション実行時の管理テーブル６８及びアドレス変換テーブル６９の遷移について説明する。図５は、ガベージコレクション実行前の管理テーブル及びアドレス変換テーブルの状態を表す図である。また、図６は、ガベージコレクション実行後の管理テーブル及びアドレス変換テーブルの状態を表す図である。【００７４】
図５における管理テーブル６８及びアドレス変換テーブル６９は、ガベージコレクション実行前の状態を表している。また、表７０１は、チャネル＃０及び＃１に接続されたＮＡＮＤデバイス７０が有するページの状態を表している。そして、表７０１におけるバツがついたページは、無効ページを表している。ここでは、チャネル＃０及び＃１という少なくとも２つのチャネル８０がある場合で説明する。【００７５】
管理テーブル制御部６５は、移動対象検出部６１から管理テーブル６８の検索リクエストを受けて、管理テーブル６８の各チャネル毎の先頭のブロックから末尾のブロックまで無効ページの状態を検出する。そして、管理テーブル制御部６５は、所定の条件を満たすブロックをガベージコレクションの対象のブロックとして選択する。図５では、管理テーブル制御部６５は、行６８１で表されるチャネル＃０のブロックＰ２をガベージコレクションの対象のブロックとして選択する。【００７６】
そして、管理テーブル制御部６５は、データの書き込み時に、読み出しに用いたチャネル８０と同じチャネル８０であるチャネル＃０から予備ブロックを有するブロックを書き込み先のブロックとして選択する。すなわち、管理テーブル制御部６５は、管理テーブル６８の範囲Ｑに含まれるブロックを検索し、予備ブロックを有するブロックを選択する。本実施例では、管理テーブル制御部６５は、チャネル＃０のブロックＰ８を選択する。このように、本実施例では、書き込み先のブロックを検索する場合に、１つのチャネル８０の範囲のみを検索対象とする。【００７７】
次に、管理テーブル制御部６５は、表７０１に示すように、チャネル＃０のブロックＰ２のページ７１１を移動対象として選択する。ここでは、各ページの物理アドレスは、ブロック番号とページ番号との組み合わせで表す。例えば、ページ７１１の物理アドレスは、Ｐ２−３である。また、ページ７１１は、論理アドレスＬ３に対応している。【００７８】
そして、管理テーブル制御部６５は、図６の表７０２に示すように、ページ７１１のデータを選択したブロックＰ８のページ７１２に移動する。ページ７１２の物理アドレスは、Ｐ８−０である。【００７９】
次に、管理テーブル制御部６５は、管理テーブル６８の行６８１におけるブロックＰ２のページ７１１を無効にする。さらに、管理テーブル制御部６５は、管理テーブル６８の行６８１におけるブロックＰ２の更新日時を更新する。【００８０】
さらに、ページ７１１のデータをページ７１２に移動したので、論理アドレスＬ３は、ページ７１２に対応することになる。そこで、管理テーブル制御部６５は、アドレス変換テーブル６９の論理アドレスＬ３に対応する物理アドレス６９１の情報を書き込み先のページ７１２の情報に変更する。具体的には、管理テーブル制御部６５は、論理アドレスＬ３に対応するチャネル８０をチャネル＃０とし、物理アドレスを表すブロックとページの情報をＰ８−０とする。以上により、データ移動処理における書き込み時の管理テーブル６８及びアドレス変換テーブル６９の更新が完了する。【００８１】
また、データ移動処理命令を受けていない場合のＣＰＵ３からの書込命令の場合、管理テーブル制御部６５は、データの書き込み時に、全てのチャネル８０から空きページを選択する指示を調停部６４から受ける。そして、管理テーブル制御部６５は、管理テーブル６８を用いて、全てのチャネル８０に接続するＮＡＮＤデバイス７０の中から空きページを選択する。その後、管理テーブル制御部６５は、書き込みに使用するチャネル８０の情報及び書き込み先のページの物理アドレスをチャネル切替部６６へ出力する。【００８２】
さらに、管理テーブル制御部６５は、書き込んだデータが格納されているページを示す論理アドレスが、書き込み先のページの物理アドレスに対応するようにアドレス変換テーブル６９を更新する。この管理テーブル制御部６５が、「選択部」の一例にあたる。【００８３】
チャネル切替部６６は、データ移動処理の場合、まずデータの読出命令を調停部６４から受ける。次に、チャネル切替部６６は、読み出し命令で指定されたページを有するＮＡＮＤデバイス７０にアクセスするためのチャネル８０に接続するＮＡＮＤ−ＩＦ６７に経路を切り替える。そして、チャネル切替部６６は、調停部６４から受信したデータ及び移動対象のページの情報を含む読出命令をＮＡＮＤ―ＩＦ６７へ出力する。【００８４】
その後、チャネル切替部６６は、読み出したデータの入力をＮＡＮＤ−ＩＦ６７から受ける。そして、チャネル切替部６６は、受信したデータを調停部６４へ送信する。【００８５】
次に、チャネル切替部６６は、書き込み対象のデータの入力を調停部６４から受ける。さらに、チャネル切替部６６は、読み出しに使用したチャネル８０の情報及び書き込み先のページの物理アドレスの入力を管理テーブル制御部６５から受ける。そして、チャネル切替部６６は、読み出しに使用したチャネル８０に接続するＮＡＮＤ−ＩＦ６７に経路を切り替える。そして、チャネル切替部６６は、調停部６４から受信したデータ及び書き込み先のページの情報を含む書込命令をＮＡＮＤ―ＩＦ６７へ出力する。【００８６】
その後、チャネル切替部６６は、データの書き込み完了の応答をＮＡＮＤ−ＩＦ６７から受信する。そして、チャネル切替部６６は、データの書き込み完了の応答を調停部６４へ送信する。【００８７】
また、ＣＰＵからの書込命令の場合、チャネル切替部６６は、書き込み対象のデータの入力を調停部６４から受ける。さらに、チャネル切替部６６は、書き込みに使用するチャネル８０の情報及び書き込み先のページの物理アドレスの入力を管理テーブル制御部６５から受ける。ここで、データ移動処理命令を受けている場合であれば、チャネル切替部６６は、書き込みに使用するチャネル８０の情報として、データ移動処理に使用するチャネル８０以外のチャネル８０の情報を取得する。そして、チャネル切替部６６は、書き込みに使用するチャネル８０に接続するＮＡＮＤ−ＩＦ６７に経路を切り替える。その後、チャネル切替部６６は、調停部６４から受信したデータ及び書き込み先のページの情報を含む書込命令をＮＡＮＤ―ＩＦ６７へ出力する。【００８８】
その後、チャネル切替部６６は、データの書き込み完了の応答をＮＡＮＤ−ＩＦ６７から受信する。そして、チャネル切替部６６は、データの書き込み完了の応答を調停部６４へ送信する。【００８９】
また、ＣＰＵからの読出命令の場合、チャネル切替部６６は、読み出し対象のデータの入力を調停部６４から受ける。さらに、チャネル切替部６６は、読み出しに使用するチャネル８０の情報及び読み出し先のページの物理アドレスの入力を管理テーブル制御部６５から受ける。そして、チャネル切替部６６は、読み出し使用するチャネル８０に接続するＮＡＮＤ−ＩＦ６７に経路を切り替える。その後、チャネル切替部６６は、読み出し先のページの情報を含む読出命令をＮＡＮＤ―ＩＦ６７へ出力する。【００９０】
その後、チャネル切替部６６は、読み出したデータをＮＡＮＤ−ＩＦ６７から受信する。そして、チャネル切替部６６は、読み出したデータを調停部６４へ出力する。【００９１】
ＮＡＮＤ−ＩＦ６７は、それぞれ異なるチャネル８０に接続している。すなわち、ＮＡＮＤ−ＩＦ６７は、異なるＮＡＮＤデバイス７０に対して書き込み及び読み出しを行う。【００９２】
ＮＡＮＤ−ＩＦ６７は、読み出し先のページの物理アドレスを含むデータの読出命令の入力をチャネル切替部６６から受ける。次に、ＮＡＮＤ−ＩＦ６７は、読み出し命令で指定された物理アドレスのページからデータを読み出す。そして、ＮＡＮＤ−ＩＦ６７は、読み出したデータを調停部６４へ出力する。【００９３】
また、ＮＡＮＤ−ＩＦ６７は、書き込み対象のデータ及び書き込み先のページの物理アドレスを含むデータの書込命令の入力をチャネル切替部６６から受ける。次に、ＮＡＮＤ−ＩＦ６７は、書込命令で指定された物理アドレスのページに受信したデータを書き込む。そして、ＮＡＮＤ−ＩＦ６７は、書き込み完了の応答を調停部６４へ出力する。【００９４】
ここで、ＮＡＮＤ−ＩＦ６７は、データ移動処理では、移動対象のページを有するＮＡＮＤデバイス７０に接続するチャネル８０を用いてデータを書き込む。つまり、ガベージコレクション又はウェアレベリングにおいて、読み出されたデータは、読み出しに使用されたチャネル８０と同じチャネル８０を用いて他のブロックに書き込まれる。すなわち、本実施例では、ガベージコレクション又はウェアレベリングにおいて、読み出しに使用するチャネル８０と書き込みに使用するチャネル８０が一致する。【００９５】
また、ＮＡＮＤ−ＩＦ６７は、データ移動処理の実行命令を受けている状態で、ＣＰＵ３からの書込命令を受けた場合、データ移動処理に使用しているチャネル８０以外のチャネル８０を用いてデータの書き込みを行う。また、データ移動処理の実行命令を受けていない状態で、ＣＰＵ３からの書込命令を受けた場合、ＮＡＮＤ−ＩＦ６７は、チャネル８０の制限なく空きページを選択してデータの書き込みを行う。【００９６】
いずれにせよ、ＮＡＮＤ−ＩＦ６７は、データ移動処理に使用するチャネル８０以外のチャネル８０を用いて、ＣＰＵ３から書き込みを指示されたデータの書き込みを行う。すなわち、ＣＰＵ３から書き込みを指示されたデータの書き込みに用いるチャネル８０は、データ移動処理に使用するチャネル８０と競合しない。【００９７】
さらに、図７を参照して、データ書き込み時のチャネル８０の選択について詳細に説明する。図７は、調停部及びチャネル切替部のデータの書き込みに関する詳細なブロック図である。【００９８】
調停部６４は、出力元選択部６４１、検索チャネル選択部６４２、ＦＩＦＯ（Fast  In  Fast  Out）バッファ６４３及び６４４、並びに、スイッチ素子６４５を有している。また、チャネル切替部６６は、切替制御部６６１、スイッチ素子６６２、並びに、ＦＩＦＯバッファ６６３ａ〜６６３ｄを有している。【００９９】
ＦＩＦＯバッファ６４３は、ＦＩＦＯキューを有している。ＦＩＦＯバッファ６４３は、データ移動処理におけるデータの書込命令の入力をデータ移動制御部６２から受ける。この書き込み命令には、読み出しに使用したチャネル８０の情報が書き込みに用いるチャネルの情報として格納されている。【０１００】
そして、ＦＩＦＯバッファ６４３は、入力が古い書込命令から順に、スイッチ素子６４５を経由させて管理テーブル制御部６５に書き込み先のページの選択指示を、読み出しに使用したチャネル８０の情報とともに出力する。同時に、ＦＩＦＯバッファ６４３は、スイッチ素子６４５を経由させてチャネル切替部６６に書き込み対象のデータを出力する。【０１０１】
ＦＩＦＯバッファ６４４は、ＦＩＦＯキューを有している。ＦＩＦＯバッファ６４４は、ＣＰＵ３からのデータの書込命令の入力をリードライト制御部６３から受ける。さらに、ＦＩＦＯバッファ６４４は、書き込み先のページの検索対象とする検索チャネルの情報の入力を検索チャネル選択部６４２から受ける。この検索チャネルの情報は、並行して行われるデータ移動処理における書き込みに用いるチャネル８０以外のチャネル８０を示す情報である。【０１０２】
そして、ＦＩＦＯバッファ６４４は、入力が古い書込命令から順に、スイッチ素子６４５を経由させて管理テーブル制御部６５に書き込み先のページの選択指示を、検索チャネルの情報とともに出力する。同時に、ＦＩＦＯバッファ６４４は、スイッチ素子６４５を経由させてチャネル切替部６６に書き込み対象のデータを出力する。【０１０３】
検索チャネル選択部６４２は、ＦＩＦＯバッファ６４３に格納されている先頭のデータ移動処理におけるデータの書込命令から書き込みに用いるチャネル８０の情報、すなわち、読み出しに使用したチャネル８０の情報を取得する。そして、検索チャネル選択部６４２は、移動処理におけるデータの書き込みに用いるチャネル８０の情報を、書き込み先のページの検索対象とする検索チャネルの情報としてＦＩＦＯバッファ６４４へ出力する。【０１０４】
出力元選択部６４１は、データ移動制御部６２からの出力とリードライト制御部６３からの出力が均等にスイッチ素子６４５から出力されるように、予め決められた順番でスイッチ素子６４５を切り替える。例えば、出力元選択部６４１は、ＦＩＦＯバッファ６４３の出力とＦＩＦＯバッファ６４４の出力とを交互に選択してスイッチ素子６４５から出力されるように順番に切り替える。【０１０５】
スイッチ素子６４５は、切替制御部６６１からの切替制御を受けて、ＦＩＦＯバッファ６４３及び６４４からの出力のいずれかが管理テーブル制御部６５及びスイッチ素子６６２から出力されるように経路を切り替える。【０１０６】
管理テーブル制御部６５は、読み出しに使用したチャネル８０の情報とともに書き込み先のページの選択指示の入力を、スイッチ素子６４５を介してＦＩＦＯバッファ６４３から受ける。次に、管理テーブル制御部６５は、読み出しに使用したチャネル８０に接続されたＮＡＮＤデバイス７０の中から予備ブロックを抽出し、抽出した予備ブロックの空きページを書き込み先のページとして選択する。そして、管理テーブル制御部６５は、選択した書き込み先のページの情報を切替制御部６６１へ出力する。さらに、管理テーブル制御部６５は、選択した書き込み先のページの情報をスイッチ素子６４５へ出力する。【０１０７】
また、管理テーブル制御部６５は、検索チャネルの情報とともに書き込み先のページの選択指示の入力を、スイッチ素子６４５を介してＦＩＦＯバッファ６４４から受ける。具体的には、管理テーブル制御部６５は、並行して行われるデータ移動処理における書き込みに用いるチャネル８０以外のチャネル８０の情報を検索チャネルの情報として取得する。【０１０８】
次に、管理テーブル制御部６５は、並行して行われるデータ移動処理における書き込みに用いるチャネル８０以外のチャネル８０に接続されたＮＡＮＤデバイス７０の中から空きページを書き込み先のページとして選択する。そして、管理テーブル制御部６５は、選択した書き込み先のページの情報を切替制御部６６１へ出力する。さらに、管理テーブル制御部６５は、選択した書き込み先のページの情報をスイッチ素子６４５へ出力する。【０１０９】
切替制御部６６１は、データ移動処理における書き込み先のページの情報の入力を管理テーブル制御部６５から受ける。そして、切替制御部６６１は、受信した書き込み先のページを有するＮＡＮＤデバイス７０に接続するチャネル８０に、管理テーブル制御部６５及びスイッチ素子６４５からの出力が送られるようにスイッチ素子６４３を切り替える。【０１１０】
また、切替制御部６６１は、ＣＰＵ３からの書込命令における書き込み先のページの情報の入力を管理テーブル制御部６５から受ける。そして、切替制御部６６１は、受信した書き込み先のページを有するＮＡＮＤデバイス７０に接続するチャネル８０に、管理テーブル制御部６５及びスイッチ素子６４５からの出力が送られるようにスイッチ素子６６２を切り替える。【０１１１】
スイッチ素子６４５は、切替制御部６６１からの切替制御を受けて、管理テーブル制御部６５及びスイッチ素子６４５からの出力がＦＩＦＯバッファ６６３ａ〜６６３ｄのいずれかに入力されるように経路を切り替える。【０１１２】
ＦＩＦＯバッファ６６３ａ〜６６３ｄは、ＦＩＦＯキューを有している。そして、ＦＩＦＯバッファ６６３ａ〜６６３ｄは、それぞれＮＡＮＤ−ＩＦ６７ａ〜６７ｄに接続する。ＦＩＦＯバッファ６６３ａ〜６６３ｄのいずれも同様の機能を有しているので、以下では、ＦＩＦＯバッファ６６３ａ〜６６３ｄを区別せずに「ＦＩＦＯバッファ６６３」という。【０１１３】
ＦＩＦＯバッファ６６３は、スイッチ素子６６２により経路が自己に接続するように切り替えられた場合、スイッチ素子６６２を介して、書き込み先のページの情報及びデータの入力を受ける。具体的には、ＦＩＦＯバッファ６６３は、書き込み先のページの情報の入力を管理テーブル制御部６５から受ける。また、データ移動処理の場合、ＦＩＦＯバッファ６６３は、データ移動制御部６２から送られたデータの入力を受ける。また、ＣＰＵ３からの書込み命令の場合、ＦＩＦＯバッファ６６３は、リードライト制御部６３から送られたデータの入力を受ける。【０１１４】
そして、ＦＩＦＯバッファ６６３は、受信した書き込み先のページの情報及び書き込み対象のデータを接続先のＮＡＮＤ−ＩＦ６７へ出力する。【０１１５】
次に、図８を参照して、本実施例に係る情報処理装置１によるデータ移動処理及びＣＰＵ３からの書込命令に対する処理におけるデータの書き込み先の決定についてまとめて説明する。図８は、ＮＡＮＤコントローラの各部からの出力を表すタイムチャートである。ここでは、チャネル８０として、チャネル＃０〜＃３の４つのチャネルがある場合で説明する。そして、データ移動処理として、チャネル＃０に接続するＮＡＮＤデバイス７０が有するページに格納されたデータを移動対象のデータとする場合で説明する。【０１１６】
また、図８のチャート２０１は、データ移動制御部６２から調停部６４への出力を表している。チャート２０２は、リードライト制御部６３から調停部６４への出力を表している。チャート２０３は、調停部６４から管理テーブル制御部６５への出力を表している。チャート２０４は、管理テーブル制御部６５からチャネル切替部６６への出力を表している。チャート２０５は、チャネル切替部６６からチャネル＃０へ接続するＮＡＮＤ−ＩＦ６７への出力を表している。チャート２０６は、チャネル切替部６６からチャネル＃１へ接続するＮＡＮＤ−ＩＦ６７への出力を表している。チャート２０７は、チャネル切替部６６からチャネル＃２へ接続するＮＡＮＤ−ＩＦ６７への出力を表している。チャート２０８は、チャネル切替部６６からチャネル＃３へ接続するＮＡＮＤ−ＩＦ６７への出力を表している。そして、図８の横軸は時間の経過を表している。【０１１７】
そして、各チャート２０１〜２０８に記載した各四角が出力信号を表しており、出力信号中の上段に、信号の発生源が記載される。ここでの発生源としては、ガベージコレクション（ＧＣ：gavage  Collection）又はＣＰＵ３がある。また、出力信号中の中段に、処理の内容及び処理の順番が記載されている。処理の内容としては、読出処理（Read）及び書込処理（Write）がある。また、処理の順番は、処理の内容に続く括弧の中の数字の順番で表す。さらに、出力信号中の下段に、処理対象とするチャネル８０の番号が記載されている。例えば、「ｃｈ０」であれば、チャネル＃０を表している。【０１１８】
チャート２０１に示すように、データ移動制御部６２は、ガベージコレクションの０番目の読出命令で処理対象のチャネル８０がチャネル＃０である信号２１１を調停部６４へ出力する。次に、データ移動制御部６２は、ガベージコレクションの１番目の読出命令で処理対象のチャネル８０がチャネル＃０である信号２１２を調停部６４へ出力する。その後、データ移動制御部６２は、ガベージコレクションの０番目の書込命令である信号２１３を調停部６４へ出力する。ここで、本実施例に係るデータ移動制御部６２は、ガベージコレクションの書き込みにおける処理対象のチャネル８０を、読み出しに用いたチャネル８０と同じとする。そこで、信号２１１における、処理対象のチャネル８０はチャネル＃０となる。次に、データ移動制御部６２は、ガベージコレクションの１番目の書込命令で、且つ処理対象のチャネル８０がチャネル＃０である信号２１４を調停部６４へ出力する。【０１１９】
チャート２０３に示すように、調停部６４は、データ移動制御部６２から受信した信号２１１を管理テーブル制御部６５へ出力する。次に、調停部６４は、データ移動制御部６２から受信した信号２１２を管理テーブル制御部６５へ出力する。【０１２０】
チャート２０４に示すように、管理テーブル制御部６５は、調停部６４から受信した信号２１１をチャネル切替部６６へ出力する。次に、管理テーブル制御部６５は、調停部６４から受信した信号２１２をチャネル切替部６６へ出力する。【０１２１】
チャート２０５に示すように、チャネル切替部６６は、管理テーブル制御部６５から受信した信号２１１が示す処理対象のチャネル８０であるチャネル＃０に接続するＮＡＮＤ−ＩＦ６７へ出力する。その後、ＮＡＮＤ−ＩＦ６７は、信号２１１に対応するデータをチャネル＃０を介してＮＡＮＤデバイス７０へ書き込む。また、チャネル切替部６６は、管理テーブル制御部６５から受信した信号２１２が示す処理対象のチャネル８０であるチャネル＃０に接続するＮＡＮＤ−ＩＦ６７へ出力する。その後、ＮＡＮＤ−ＩＦ６７は、信号２１２に対応するデータをチャネル＃０を介してＮＡＮＤデバイス７０へ書き込む。
【０１２２】
次に、チャート２０２に示すように、リードライト制御部６３は、ＣＰＵ３からの０番目の読出命令で処理対象のチャネル８０がチャネル＃０である信号２２１を調停部６４へ出力する。次に、リードライト制御部６３は、ＣＰＵ３からの１番目の読出命令で処理対象のチャネル８０がチャネル＃１である信号２１２を調停部６４へ出力する。【０１２３】
次に、チャート２０１に示すように、データ移動制御部６２は、ガベージコレクションの０番目の書込命令で処理対象のチャネル８０がチャネル＃０である信号２１３を調停部６４へ出力する。【０１２４】
次に、チャート２０２に示すように、リードライト制御部６３は、ＣＰＵ３からの０番目の書込命令で処理対象のチャネル８０が未決定である信号２２３を調停部６４へ出力する。【０１２５】
次に、データ移動制御部６２は、ガベージコレクションの１番目の書込命令で処理対象のチャネル８０がチャネル＃０である信号２１４を調停部６４へ出力する。これに並行して、チャート２０２に示すように、リードライト制御部６３は、ＣＰＵ３からの１番目の書込命令で処理対象のチャネル８０が未決定である信号２２４を調停部６４へ出力する。【０１２６】
次に、チャート２０２に示すように、リードライト制御部６３は、ＣＰＵ３からの２番目の書込命令で処理対象のチャネル８０がチャネル＃１である信号２２５を調停部６４へ出力する。【０１２７】
調停部６４は、チャート２０３に示すように、リードライト制御部６３から受信した信号２２１を管理テーブル制御部６５及びチャネル切替部６６へ出力する。その後、調停部６４は、リードライト制御部６３からの出力である信号２２２〜２２５とデータ移動制御部６２の出力である信号２１３〜２１４とを交互に管理テーブル制御部６５へ出力する。【０１２８】
ここで、調停部６４は、１つ前に出力した信号２１３の処理対象のチャネル８０であるチャネル＃０以外のチャネル８０の中から信号２２３の書き込み先のページを検索するチャネル８０を選択する。ここでは、調停部６４は、信号２２３の処理対象のチャネル８０としてチャネル＃１を選択する。さらに、調停部６４は、１つ前に出力した信号２１４の処理対象のチャネル８０であるチャネル＃０以外のチャネル８０の中から信号２２４の書き込み先のページを検索するチャネル８０を選択する。ここでは、調停部６４は、信号２２４の処理対象のチャネル８０としてチャネル＃１を選択する。【０１２９】
管理テーブル制御部６８は、チャート２０４に示すように、信号２２２〜２２５及び２１３〜２１４の入力を調停部６４から受ける。そして、管理テーブル制御部６８は、各信号で示される処理対象のチャネル８０に接続するＮＡＮＤデバイス７０の中から空のページを選択する。そして、管理テーブル制御部６８は、選択した空のページの情報とともに信号２２２〜２２５及び２１３〜２１４をチャネル切替部６６へ出力する。【０１３０】
チャネル切替部６６は、管理テーブル制御部６５から受信した信号を、その信号の処理対象のチャネル８０に繋がるＮＡＮＤ−ＩＦ６７へ出力する。具体的には、チャネル切替部６６は、チャート２０５に示すように、信号２１１，２１３及び２１４を、チャネル＃０に接続するＮＡＮＤ−ＩＦ６７へ出力する。また、チャネル切替部６６は、チャート２０６に示すように、信号２２２〜２２５を、チャネル＃１に接続するＮＡＮＤ−ＩＦ６７へ出力する。【０１３１】
この場合、チャネル切替部６６は、チャート２０７及び２０８に示すように、チャネル＃２及び＃３に接続するＮＡＮＤ−ＩＦ６７には信号の出力は行わない。【０１３２】
そして、チャート２０５の信号２２１，２１３及び２１４とチャート２０６の信号２２２〜２２５に示すように、データ移動処理とＣＰＵ３からの書込命令に対する処理とで使用するチャネル８０の競合が発生しない。すなわち、本実施例に係る情報処理装置１は、データ移動処理及びＣＰＵ３からの書込命令に対する処理の待機時間を軽減させることができ、処理効率を向上させることができる。【０１３３】
次に、図９を参照して、データ移動処理及びＣＰＵ３からの書込命令の処理の流れを説明する。図９は、データ移動処理及びＣＰＵからの書込命令の処理のフローチャートである。ここでは、データ移動処理と並行してＣＰＵ３から書込命令が入力された場合で説明する。【０１３４】
管理テーブル制御部６５は、移動対象検出部６１からのリクエストを受けて、管理テーブル６８を検索し、移動対象のページの物理アドレスを選択する。そして、データ移動制御部６２は、管理テーブル制御部６５が選択した移動対象のページの物理アドレスを取得する（ステップＳ１）。【０１３５】
次に、データ移動制御部６２は、移動対象のページからのデータの読出命令を調停部６４へ出力する。調停部６４は、移動対象の物理アドレスを基にＮＡＮＤデバイス７０からデータを読み出し、データ移動制御部６２へ出力する。データ移動制御部６２は、読み出したデータを一次保管する（ステップＳ２）。【０１３６】
次に、データ移動制御部６２は、読み出したデータの書き込みを調停部６４に指示する。調停部６４は、データを読み出したチャネル８０を書込み先のページの検索に用いる検索チャネルとして、管理テーブル制御部６５に通知する（ステップＳ３）。【０１３７】
調停部６４は、ＣＰＵ３からの書込命令の入力をリードライト制御部６３から受ける。そして、調停部６４は、データ移動処理の書き込みに用いるチャネル８０以外のチャネル８０をＣＰＵ３から指定されたデータの書き込みに用いるチャネル８０として管理テーブル制御部６５に通知する（ステップＳ４）。【０１３８】
管理テーブル制御部６５は、調停部６４から通知されたチャネル８０を検索チャネルとして予備ブロックを管理テーブル６８から検索し、検索結果の予備ブロックを書き込み先のページとする（ステップＳ５）。【０１３９】
そして、チャネル切替部６６は、調停部６４により選択されたページに接続するＮＡＮＤ−ＩＦ６７にデータ移動制御部６２が一次保管していたデータを送信する。ＮＡＮＤ−ＩＦ６７は、読み出しに使用されたチャネル８０を用いてＮＡＮＤデバイス７０の検索結果の予備ブロックにデータを書き込む（ステップＳ６）。【０１４０】
管理テーブル制御部６５は、管理テーブル６８及びアドレス変換テーブル６９を更新する（ステップＳ７）。【０１４１】
次に、管理テーブル制御部６５は、ＣＰＵ３からの書込命令に対するデータの書き込み先のページを、データ移動処理の書き込みに用いるチャネル８０以外のチャネル８０を検索チャネルとして検索する。そして、チャネル切替部６６は、管理テーブル制御部６５により選択された書き込み先のページに接続するＮＡＮＤ−ＩＦ６７にデータを送信する。ＮＡＮＤ−ＩＦ６７は、データ移動処理の書き込みに用いるチャネル８０以外のチャネル８０を用いてＮＡＮＤデバイス７０の検索結果のページにデータを書き込む（ステップＳ８）。【０１４２】
移動対象検出部６１は、データ移動処理を管理テーブル６８の全てのブロックに対して実行したか否かを判定する（ステップＳ９）。データ移動処理が終わっていないブロックがある場合（ステップＳ９：否定）、移動対象検出部６１は、ステップＳ１に戻る。【０１４３】
これに対して、データ移動処理を全てのブロックに対して実行した場合（ステップＳ９：肯定）、ＮＡＮＤコントローラ６は、データの移動処理を終了する。【０１４４】
ここで、図９では、データ移動処理と並行してＣＰＵ３からの書込命令を処理する場合で説明したが、ＣＰＵ３からの書込命令が無い場合は、ＮＡＮＤコントローラ６は、読み出しと書き込みで同じチャネル８０を用いたデータ移動処理を単に実行する。【０１４５】
以上に説明したように、本実施例に係るＮＡＮＤコントローラは、データ移動処理において用いるチャネルとは異なるチャネルをＣＰＵからの書込命令の処理に用いる。これにより、データ移動処理で使用するチャネルとＣＰＵからの書込命令に使用するチャネルとの競合を抑えることができ、処理効率を向上させることができる。【０１４６】
ここで、本実施例では、制御の容易さや理解のし易さから、データ移動処理において読み出しに用いるチャネルと書き込みに用いるチャネルとを一致させ、それ以外のチャネルをＣＰＵの書込命令の処理に用いた。しかし、データ移動処理に用いるチャネルとＣＰＵの書込命令の処理に用いるチャネルとが異なるチャネルであれば、チャネルの選択方法はこれに限らない。例えば、チャネル数が十分にあれば、データ移動処理の書き込みに用いるチャネルは適当に選択し、データの移動処理に用いられるチャネル以外のチャネルをＣＰＵの書込命令の処理に用いてもよい。
【実施例２】
【０１４７】
次に、実施例２について説明する。本実施例に係るＮＡＮＤコントローラは、エラー検出訂正を行うスクラブの実行において、データの読み出しに用いるチャネルと書き込みに用いるチャネルとを異ならせる。そこで、以下では、スクラブにおける各部の機能について主に説明する。本実施例に係る情報処理装置及びＮＡＮＤコントローラも、図１及び２で表される。以下では、実施例１と同じ各部の機能については説明を省略する。【０１４８】
移動対象検出部６１は、ソフトウェアからの指示や内部タイマーを契機として、管理テーブル６８の検索リクエストを管理テーブル制御部６５へ送信する。その後、移動対象検出部６１は、スクラブを実行する場合、実行対象のページの情報の入力をリクエスト応答として管理テーブル制御部６５から受ける。そして、移動対象検出部６１は、スクラブの実行対象のページの物理アドレスをデータ移動制御部６２に通知する。さらに、移動対象検出部６１は、スクラブの実行の指示をデータ移動制御部６２に通知する。【０１４９】
データ移動制御部６２は、スクラブを実行するページの物理アドレスの入力を移動対象検出部６１から受ける。そして、データ移動制御部６２は、物理アドレスとともにデータの読出命令を調停部６４へ出力する。その後、データ移動制御部６２は読み出されたデータを調停部６４から受信する。そして、データ移動制御部６２は、読み出しされたデータを一時保管する。【０１５０】
次に、データ移動制御部６２は、保管したデータのエラー検出を行う。エラーを検出しない場合、データ移動制御部６２は、読み出したデータを破棄し、次の物理アドレスからのデータの読み出しを行う。【０１５１】
これに対して、エラーを検出した場合、データ移動制御部６２は、エラーが検出されたデータに対してエラー訂正を行う。次に、データ移動制御部６２は、読み出しに用いたチャネル８０以外のチャネル８０を管理テーブル６８から選択する。そして、データ移動制御部６２は、選択したチャネル８０へのエラー訂正後のデータの書込命令を調停部６４へ出力する。【０１５２】
調停部６４は、データ移動制御部６２から受信した物理アドレス及びデータの読出命令をチャネル切替部６６へ出力する。その後、調停部６４は、読み出されたデータをチャネル切替部６６から受信する。そして、調停部６４は、読み出されたデータをデータ移動制御部６２へ出力する。【０１５３】
その後、調停部６４は、読み出したデータにエラーが検出された場合、データ移動制御部６２により選択されたチャネル８０へのエラー訂正後のデータの書込命令の入力を受ける。そして、調停部６４は、データ移動制御部６２により選択されたチャネル８０へのエラー訂正後のデータの書込命令を管理テーブル制御部６５へ出力する。また、調停部６４は、エラー訂正後のデータをチャネル切替部６６へ出力する。【０１５４】
管理テーブル制御部６５は、データ移動制御部６２により選択されたチャネル８０へのエラー訂正後のデータの書込命令の入力を調停部６４から受ける。そして、管理テーブル制御部６５は、指定されたチャネル８０に接続されているＮＡＮＤデバイス７０のページの中から書き込み先のページを選択する。次に、管理テーブル制御部６５は、選択したページの物理アドレスをチャネル切替部６６へ通知する。その後、管理テーブル制御部６５は、管理テーブル６８及びアドレス変換テーブル６９を更新する。【０１５５】
チャネル切替部６６は、調停部６４から指定された物理アドレスに接続するＮＡＮＤ−ＩＦ６７に物理アドレス及びデータの読出命令を出力する。その後、チャネル切替部６６は、読み出されたデータをＮＡＮＤ−ＩＦ６７から受信する。そして、チャネル切替部６６は、読み出されたデータを調停部６４へ出力する。【０１５６】
その後、読み出したデータにエラーが検出された場合、チャネル切替部６６は、エラー訂正後のデータを書き込むページの物理アドレスの入力を管理テーブル制御部６５から受ける。また、チャネル切替部６６は、エラー訂正後のデータの入力を調停部６４から受ける。そして、チャネル切替部６６は、エラー訂正後のデータの管理テーブル制御部６５から受信した物理アドレスへの書込命令を、その物理アドレスを有するページに接続するＮＡＮＤデバイス７０に書き込む。【０１５７】
ＮＡＮＤ−ＩＦ６７は、チャネル切替部６６から読出命令を受けて、ＮＡＮＤデバイス７０の指定された物理アドレスからデータを読み出し、チャネル切替部６６へ出力する。【０１５８】
また、ＮＡＮＤ−ＩＦ６７は、チャネル切替部６６から書込命令を受けて、ＮＡＮＤデバイス７０の指定された物理アドレスへデータを書き込む。ここで、データを書き込むＮＡＮＤ−ＩＦ６７は、読み出しに用いたチャネル８０とは異なるチャネル８０に接続している。そのため、データの書き込みは、データの読み出しとは異なるチャネル８０を用いて行われる。【０１５９】
次に、図１０を参照して、本実施例に係るＮＡＮＤコントローラによるスクラブの処理の流れについて説明する。図１０は、実施例２に係るＮＡＮＤコントローラによるスクラブの処理のフローチャートである。【０１６０】
管理テーブル制御部６５は、移動対象検出部６１からのリクエストを受けて、管理テーブル６８を検索し、スクラブの実行対象のページの物理アドレスを選択する。そして、データ移動制御部６２は、管理テーブル制御部６５が選択した実行対象のページの物理アドレスを取得する（ステップＳ１１）。【０１６１】
データ移動制御部６２は、調停部６４、チャネル切替部６６及びＮＡＮＤ−ＩＦ６７を介してＮＡＮＤデバイス７０における指定された物理アドレスからデータを読み出し一時保管する（ステップＳ１２）。【０１６２】
データ移動制御部６２は、保管したデータに対してエラー検出を実行する（ステップＳ１３）。【０１６３】
そして、データ移動制御部６２は、読み出されたデータにおいてエラーが発生したか否かを判定する（ステップＳ１４）。エラーが発生していない場合（ステップＳ１４：否定）、ＮＡＮＤコントローラ６は、ステップＳ１９へ進む。【０１６４】
これに対して、エラーが発生した場合（ステップＳ１４：肯定）、データ移動制御部６２は、データを読み出したチャネル８０とは異なるチャネル８０を検索チャネルとして管理テーブル６８から選択する（ステップＳ１５）。そして、データ移動制御部６２は、エラー訂正を行い、検索チャネル８０を用いたエラー訂正後のデータの書込命令を調停部６４へ通知する。【０１６５】
調停部６４は、検索チャネルからの予備ブロックの選択を管理テーブル制御部６５へ指示する。管理テーブル制御部６５は、検索チャネルにおける予備ブロックを管理テーブル６８から検索し、書き込み先のページの物理アドレスを取得する（ステップＳ１６）。そして、管理テーブル制御部６５は、取得した物理アドレスをチャネル切替部６６へ通知する。【０１６６】
チャネル切替部６６は、調停部６４から受信したエラー訂正後のデータの書き込み命令を、管理テーブル制御部６５から指定された物理アドレスを有するページに接続するＮＡＮＤ−ＩＦ６７へ出力する。ＮＡＮＤ−ＩＦ６７は、検索結果の予備ブロックの物理アドレスにエラー訂正後のデータを書き込む（ステップＳ１７）。【０１６７】
管理テーブル制御部６５は、管理テーブル６８及びアドレス変換テーブル６９を更新する（ステップＳ１８）。【０１６８】
移動対象検出部６１は、管理テーブル６８における最終アドレスまでスクラブを実行したか否かを判定する（ステップＳ１９）。最終アドレスまでスクラブの実行が終わっていない場合（ステップＳ１９：否定）、移動対象検出部６１は、ステップＳ１１に戻る。【０１６９】
これに対して、最終アドレスまでスクラブの実行が終わった場合（ステップＳ１９：肯定）、移動対象検出部６１は、スクラブ処理を終了する。【０１７０】
以上に説明したように、本実施例に係るＮＡＮＤコントローラは、スクラブにおいてデータの読み出しとエラー訂正後のデータの書き込みとで異なるチャネルを用いる。これにより、エラーが発生したページに接続するチャネルとは異なるチャネルにエラー訂正後のデータを格納でき、データの安全な保管及び信頼性の向上を図ることができる。
【実施例３】
【０１７１】
図１１は、実施例３に係るＮＡＮＤコントローラのブロック図である。本実施例に係るＮＡＮＤコントローラ６は、ＣＰＵ６０１によるソフトウェアの実行により各機能を実現する。図１１において、図２と同じ符号を有する各部は、特に説明のない限り同じ機能を有するものとする。【０１７２】
ＮＡＮＤコントローラ６は、ＣＰＵ６０１及びデバイスアクセス制御部６０２を有する。ＣＰＵ６０１とデバイスアクセス制御部６０２は、バスで接続される。また、ＣＰＵ６０１は、情報処理装置１のＣＰＵ３と接続される。また、ＣＰＵ６０１は、メモリデバイス８と接続される。さらに、デバイスアクセス制御部６０２は、ＮＡＮＤデバイス７０に接続される。【０１７３】
メモリデバイス８には、移動対象検出部６１、データ移動制御部６２、調停部６４、管理テーブル制御部６５及びリードライト制御部６３の機能を実現するプログラムを含む各種プログラムが格納されている。また、メモリデバイス８には、アドレス変換テーブル６９及び管理テーブル６８が格納されている。【０１７４】
ＣＰＵ６０１は、メモリデバイス８に格納されている各種プログラムを読み出し、移動対象検出部６１、データ移動制御部６２、調停部６４、管理テーブル制御部６５及びリードライト制御部６３の機能を実現するプロセスを展開する。そして、ＣＰＵ６０１は、展開した各プロセスをアドレス変換テーブル６９及び管理テーブル６８を用いて実行することで、移動対象検出部６１、データ移動制御部６２、調停部６４、管理テーブル制御部６５及びリードライト制御部６３の各機能を実現する。【０１７５】
デバイスアクセス制御部６０２は、ＣＰＵ６０１とＮＡＮＤデバイス７０とのデータの授受を仲介する。デバイスアクセス制御部６０２は、図２に例示したチャネル切替部６６及びＮＡＮＤ−ＩＦ６７Ａ〜６７Ｄの機能を実現する。【０１７６】
以上に説明したように、ＣＰＵによりソフトウェアを実行することで各機能を実現する構成であっても、実施例１と同様に制御を行うことができ、データ移動処理で使用するチャネルとＣＰＵからの書込命令に使用するチャネルとの競合を抑えることができ、処理効率を向上させることができる。
【符号の説明】
【０１７７】
１  情報処理装置
２ａ，２ｂ  メモリ
３ａ，３ｂ  ＣＰＵ
４  Ｉ／Ｏハブ
５ａ，５ｂ  ＳＳＤ
６ａ，６ｂ  ＮＡＮＤコントローラ
６１  移動対象検出部
６２  データ移動制御部
６３  リードライト制御部
６４  調停部
６５  管理テーブル制御部
６６  チャネル切替部
６７Ａ〜６７Ｄ  ＮＡＮＤ−ＩＦ
６８  管理テーブル
６９  アドレス変換テーブル
８１ａ〜８１ｄ，８２ａ〜８２ｄ  チャネル
７１ａ〜７８ａ，７１ｂ〜７８ｂ  ＮＡＮＤデバイス
６４１  出力元選択部
６４２  検索チャネル選択部
６４３，６４４  ＦＩＦＯバッファ
６４５  スイッチ素子
６６１  切替制御部
６６２  スイッチ素子
６６３ａ〜６６３ｄ  ＦＩＦＯバッファ
【図１】
0005971423.tif 000002
【図２】
0005971423.tif 000003
【図３】
0005971423.tif 000004
【図４】
0005971423.tif 000005
【図５】
0005971423.tif 000006
【図６】
0005971423.tif 000007
【図７】
0005971423.tif 000008
【図８】
0005971423.tif 000009
【図９】
0005971423.tif 000010
【図１０】
0005971423.tif 000011
【図１１】
0005971423.tif 000012