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