(57)【要約】  ＮＡＮＤコントローラ（６ａ）は、論理ブロック番号を１つ選択し、選択した論理ブロック番号を含む論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルキャッシュ（１２）から識別する。また、ＮＡＮＤコントローラ（６ａ）は、識別した物理アドレスが示すページに格納された各データを、１つの物理ブロックに含まれる物理ページであって、物理ページ番号が、各データの論理ページ番号と同一のページに移動させる。また、ＮＡＮＤコントローラ（６ａ）は、選択した物理ブロック番号と、データを移動させた物理ブロックの物理ブロック番号とを対応付けて早引きテーブル（１３）に格納する。
2014147768.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域を複数有するブロックを論理的に示す論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第１の記憶部と、
１つの論理ブロック番号を選択する選択部と、
前記選択部が選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を前記第１の記憶部が記憶する変換テーブルから識別する識別部と、
前記識別部が識別した物理番号が示す記憶領域のデータを、１つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させる移動部と、
前記移動部が前記データを移動させたブロックの物理ブロック番号と、前記選択部が選択した論理ブロック番号とを対応付けた早引きテーブルを記憶する第２の記憶部と、
読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第２の記憶部が記憶する早引きテーブルから取得する取得部と、
前記取得部が取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す読み出し部と
を有することを特徴とする制御装置。
【請求項２】
前記記憶領域を論理的に示す論理アドレスの上位ビットを前記論理ブロック番号とし、前記論理アドレスの下位ビットを前記論理ページ番号とし、前記記憶領域を物理的に示す物理アドレスの上位ビットを前記物理ブロック番号とし、前記物理アドレスの下位ビットを前記物理ページ番号とすることを特徴とする請求項１に記載の制御装置。
【請求項３】
使用されていない記憶領域を含むブロックに格納されたデータを他のブロックに複製して、前記ブロック内のデータを消去する消去部を有し、
前記移動部は、前記消去部がデータを消去したブロックに対し、前記データを移動させることを特徴とする請求項１または２に記載の制御装置。
【請求項４】
複数の論理ブロック番号を含むグループごとに、前記データの読み出し要求の数と、前記データの書き込み要求の数とを計数する計数部を有し、
前記選択部は、前記計数部が計数した前記読み出し要求の数から前記書き込み要求の数を減算した数が最も多いグループに含まれる論理ブロック番号を選択することを特徴とする請求項１または２に記載の制御装置。
【請求項５】
前記第１の記憶部は、記憶装置が記憶する前記変換テーブルの一部を記憶し、
前記第２の記憶部は、前記移動部が前記データを移動させたブロックの物理ブロック番号と、当該ブロックに前記移動部がデータを移動させたか否かを示すフラグと、前記選択部が選択した論理ブロック番号と、当該論理ブロック番号を含む論理番号を物理番号に変換する変換テーブルが記憶された領域を示す物理番号とを対応付けた早引きテーブルを記憶し
前記移動部は、前記データを移動させると、当該データを移動させたブロックの物理ブロック番号と対応付けて前記データを移動させた旨を示すフラグを前記早引きテーブルに格納し、
前記取得部は、読み出し対象の論理番号に含まれる論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられている場合は、当該論理ブロック番号と対応付けられた物理ブロック番号を取得し、該論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられていない場合は、当該論理ブロック番号に対応付けられた物理番号が示す記憶領域に格納された変換テーブルを前記第１の記憶部に格納し、
前記読み出し部は、前記読み出し対象の論理番号に含まれる論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられていない場合は、前記第１の記憶部に格納された変換テーブルを用いて、読み出し対象の論理番号に対応付けられた物理番号を取得し、当該取得した物理番号が示す記憶領域からデータの読み出しを行うことを特徴とする請求項１または２に記載の制御装置。
【請求項６】
前記早引きテーブルが記憶された記憶領域を示す物理アドレスと、当該物理アドレスが示す記憶領域に格納された早引きテーブルに格納されている論理アドレスの上位ビットであるインデックスとを対応付けて記憶する第３の記憶部を有し、
前記第２の記憶部は、前記記憶装置が記憶する前記早引きテーブルの一部を記憶し、
前記取得部が、読み出し対象の論理アドレスの上位ビットのインデックスと対応付けられた物理アドレスを前記第３の記憶部から取得し、当該取得した物理アドレスが示す記憶領域から読み出した早引きテーブルを前記第２の記憶部に格納し、当該第２の記憶部に格納した早引きテーブルから、前記読み出し対象の論理アドレスの上位ビットと対応付けられた物理アドレスの上位ビットを前記第２の記憶部が記憶する早引きテーブルから取得することを特徴とする請求項２に記載の制御装置。
【請求項７】
記憶装置からデータを読み出す制御装置が有するコンピュータに、
記憶領域を複数有するブロックを論理的に示す論理ブロック番号を１つ選択し、
論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第１の記憶部から、前記選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を識別し、
前記識別した物理番号が示す記憶領域のデータを、１つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させ、
前記データを移動させたブロックの物理ブロック番号と、前記選択部が選択した論理ブロック番号とを対応付けて第２の記憶部に記憶させ、
読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第２の記憶部から取得し、
前記取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す
処理を実行させることを特徴とする制御プログラム。
【請求項８】
記憶装置からデータを読み出す制御装置が、
記憶領域を複数有するブロックを論理的に示す論理ブロック番号を１つ選択し、
論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第１の記憶部から、前記選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を識別し、
前記識別した物理番号が示す記憶領域のデータを、１つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させ、
前記データを移動させたブロックの物理ブロック番号と、前記選択部が選択した論理ブロック番号とを対応付けて第２の記憶部に記憶させ、
読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第２の記憶部から取得し、
前記取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す
処理を実行することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、制御プログラム、および制御方法に関する。
【背景技術】
【０００２】
従来、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理システムが知られている。このような情報処理システムの一例として、複数のＮＡＮＤフラッシュメモリデバイスをストレージとして使用する情報処理システムが知られている。なお、以下の説明では、ＮＡＮＤフラッシュメモリデバイスをＮＡＮＤデバイスと記載する。【０００３】
例えば、ＮＡＮＤデバイスからデータを読み出すコントローラは、情報処理システムがデータの指定に用いる論理アドレスと、読み出し対象となるデータが格納されたＮＡＮＤデバイスの領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。また、コントローラは、データの読み出し要求と読み出し対象の論理アドレスとを受信すると、受信した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルから取得する。そして、コントローラは、取得した物理アドレスが示す領域にアクセスして、ＮＡＮＤデバイスからデータの読み出しを行う。【０００４】
ここで、アドレス変換テーブルのサイズは、ＮＡＮＤデバイスの総容量に比例するので、大容量のストレージについて、アドレス変換テーブルの全てをコントローラに記憶させるのは、現実的ではない。このため、アドレス変換テーブルをＮＡＮＤデバイス上に格納し、コントローラがアドレス変換テーブルの一部を保持する技術が知られている。【０００５】
例えば、コントローラは、アドレス変換テーブルの一部と、アドレス変換テーブルが格納された物理アドレスを示す変換テーブルタグとを保持する。そして、コントローラは、読み出し要求と論理アドレスとを受信すると、保持するアドレス変換テーブルに受信した論理アドレスが含まれるか否かを判定する。そして、コントローラは、保持するアドレス変換テーブルに受信した論理アドレスが含まれている場合は、論理アドレスに対応付けられた物理アドレスを用いて、ＮＡＮＤデバイスからデータの読み出しを行う。【０００６】
一方、コントローラは、保持するアドレス変換テーブルに受信した論理アドレスが含まれていない場合は、変換テーブルタグを用いて、受信した論理アドレスを含むアドレス変換テーブルが記憶された物理アドレスを識別する。また、コントローラは、識別した物理アドレスを用いて、ＮＡＮＤデバイスからアドレス変換テーブルの一部を読み出す。そして、コントローラは、読み出したアドレス変換テーブルから、論理アドレスに対応付けられた物理アドレスを取得し、取得した物理アドレスを用いて、ＮＡＮＤデバイスからデータの読み出しを行う。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−１７４０８６号公報
【特許文献２】特許第３２５１９６８号公報
【特許文献３】特許第４６４３３１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述したアドレス変換テーブルの一部をコントローラが保持する技術では、保持するアドレス変換テーブルに読み出し対象の論理アドレスが含まれていないと、アドレス変換テーブルをＮＡＮＤデバイスから読み出す。その後、読み出したアドレス変換テーブルに従って、ＮＡＮＤデバイスからデータの読み出しを行うので、ＮＡＮＤデバイスからデータを読み出す際のレイテンシが増加するという問題がある。【０００９】
また、ＮＡＮＤデバイスの容量が増大すると、アドレス変換テーブル全体の大きさも増大する。この結果、コントローラが保持するアドレス変換テーブルに読み出し対象の論理アドレスが含まれる確率が低くなるので、レイテンシが増加してしまう。【００１０】
１つの側面では、本願は、不揮発性メモリに対するアクセスにおいて、アドレス変換に要する時間の短縮を目的とする。
【課題を解決するための手段】
【００１１】
１つの側面では、記憶装置からデータを読み出す制御装置である。また、制御装置は、論理ブロック番号と論理ページ番号とを組み合わせた論理番号に、物理ブロック番号と物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する。また、制御装置は、論理ブロック番号を１つ選択し、選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を変換テーブルから識別する。また、制御装置は、識別した物理番号が示す記憶領域のデータを、１つのブロックに含まれる記憶領域であって、データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させる。また、制御装置は、データを移動させたブロックの物理ブロック番号と、選択部が選択した論理ブロック番号とを対応付けた早引きテーブルを記憶する。そして、制御装置は、読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を早引きテーブルから取得する。その後、制御装置は、取得した物理ブロック番号が示すブロックに格納されたデータのうち、受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す。
【発明の効果】
【００１２】
１つの側面では、不揮発性メモリに対するアクセスにおいて、アドレス変換に要する時間を短縮できる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係る情報処理装置を説明する図である。
【図２】図２は、従来の書き込み処理を説明するための第１の図である。
【図３】図３は、従来の書き込み処理を説明するための第２の図である。
【図４】図４は、整列処理の流れを説明する図である。
【図５】図５は、読み出し処理の流れを説明する図である。
【図６】図６は、実施例１に係るＮＡＮＤコントローラの機能構成を説明する図である。
【図７】図７は、変換テーブルタグを説明する図である。
【図８】図８は、ＮＡＮＤコントローラが保持するアドレス変換テーブルの一例を説明する図である。
【図９】図９は、早引きテーブルの一例を説明する図である。
【図１０】図１０は、アドレス変換テーブルの全体を説明する図である。
【図１１】図１１は、アドレス変換テーブルを用いたアドレス変換の流れを説明する図である。
【図１２】図１２は、早引きテーブルを用いたアドレス変換の流れを説明する図である。
【図１３】図１３は、データの読み出し処理の流れを説明するためのフローチャートである。
【図１４】図１４は、データの書き込み処理の流れを説明するためのフローチャートである。
【図１５】図１５は、整列処理の流れを説明するためのフローチャートである。
【図１６】図１６は、整列処理の第１のバリエーションを説明するためのフローチャートである。
【図１７】図１７は、整列処理の第２のバリエーションを説明するためのフローチャートである。
【図１８】図１８は、読み出し要求と書き込み要求との発生頻度に応じて整列処理を実行するＮＡＮＤコントローラの機能構成を説明する図である。
【図１９】図１９は、整列処理の第３のバリエーションを説明するためのフローチャートである。
【図２０】図２０は、変換テーブルタグと早引きテーブルとを共通化したＮＡＮＤコントローラの機能構成を説明する図である。
【図２１】図２１は、変換テーブルタグと早引きテーブルとを共通化した際のアドレス変換処理の流れを説明する図である。
【図２２】図２２は、早引きテーブルの一部を保持するＮＡＮＤコントローラの機能構成を説明する図である。
【図２３】図２３は、早引きテーブルタグを用いて実行するアドレス変換処理の流れを説明する図である。
【図２４】図２４は、制御プログラムを実行するＮＡＮＤコントローラの一例について説明する図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して本願に係る制御装置、制御プログラムおよび制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により開示技術が限定されるものではない。また、各実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例１】
【００１５】
以下の実施例１では、図１を用いて、本願に係る制御装置を含む情報処理装置の一例を説明する。図１は、実施例１に係る情報処理装置を説明する図である。図１に示す例では、情報処理装置１は、複数のメモリ２ａ、２ｂ、複数のＣＰＵ（Central  Processing  Unit）３ａ、３ｂ、Ｉ／Ｏ（Input  Output）ハブ４、複数のＳＳＤ（Solid  State  Drive）５ａ、５ｂを有する。また、ＳＳＤ５ａは、ＮＡＮＤコントローラ６ａ、および複数の記憶デバイス７ａ〜１０ａを有する。【００１６】
また、ＳＳＤ５ｂは、ＮＡＮＤコントローラ６ｂ、および複数の記憶デバイス７ｂ〜１０ｂを有する。なお、以下の説明では、ＮＡＮＤコントローラ６ｂ、および複数の記憶デバイス７ｂ〜１０ｂは、ＮＡＮＤコントローラ６ａ、および複数の記憶デバイス７ａ〜１０ａと同様の機能を発揮するものとして、説明を省略する。【００１７】
各メモリ２ａ、２ｂは、各ＣＰＵ３ａ、３ｂが演算処理に用いるデータを記憶する記憶装置である。また、各ＣＰＵ３ａ、３ｂは、メモリ２ａ、２ｂが記憶するデータを用いて、各種演算処理を行う演算処理装置である。例えば、ＣＰＵ３ａ、３ｂは、ＮＵＭＡ（Non-Uniform  Memory  Access）の技術を用いて、メモリ２ａ、２ｂが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。【００１８】
また、ＣＰＵ３ａ、３ｂは、Ｉ／Ｏハブ４を介して、各ＳＳＤ５ａ、５ｂが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。詳細には、ＣＰＵ３ａは、ＳＳＤ５ａに対し、データの読み出し要求や書き込み要求を発行し、各記憶デバイス７ａ〜１０ａからデータの読み出しや書き込みを行う。例えば、ＣＰＵ３ａは、ＳＳＤ５ａに対し、データを指定する論理アドレスが格納された読み出し要求を発行する。また、ＣＰＵ３ａは、データの書き込み先を指定する論理アドレスと、書き込み対象となるデータとが格納された書き込み要求を発行する。【００１９】
記憶デバイス７ａは、各種データを記憶する不揮発性メモリである。詳細には、記憶デバイス７ａは、データの記憶領域であるページを複数有し、ページ単位でデータの書き込みを行う。また、記憶デバイス７ａは、複数のページを有するブロックを複数有し、ブロック単位でデータの消去を行う。【００２０】
ＮＡＮＤコントローラ６ａは、各記憶デバイス７ａ〜１０ａに対してアクセスし、データの読み出しや書き込みを行う。例えば、ＮＡＮＤコントローラ６ａは、各ＣＰＵ３ａ、３ｂがデータが記憶された記憶領域を指定する際に用いる論理アドレスと、データが格納された記憶デバイス７ａ〜１０ａの記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。【００２１】
そして、ＮＡＮＤコントローラ６ａは、読み出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読み出しを行う。その後、ＮＡＮＤコントローラ６ａは、Ｉ／Ｏハブ４を介して、読み出したデータをＣＰＵ３ａに送信する。【００２２】
なお、以下の説明では、理解を容易にするため、各ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、情報処理装置１が実行するシステムは、各ページの先頭アドレスとなる論理アドレスに対する読み出し要求や書き込み要求を発行するものとする。【００２３】
また、ＮＡＮＤコントローラ６ａは、記憶デバイス７ａ〜１０ａが、複数のブロックを有し、各ブロックに２ｑ個のページが含まれている場合は、以下の処理を行う。まず、ＮＡＮＤコントローラ６ａは、論理アドレスの下位ｑビットを論理的な１つのブロック内において、ページを識別するための論理ページ番号とし、残りの論理アドレスの上位ｐビットを論理的な１つのブロックを示す論理ブロックアドレスとする。【００２４】
また、ＮＡＮＤコントローラ６ａは、物理アドレスの上位ｐビットを物理的な１つのブロックを示す物理ブロックアドレスとし、物理アドレスの下位ｑビットを物理的な１つのブロック内において、各ページを識別するための物理ページ番号とする。つまり、ＮＡＮＤコントローラ６ａは、論理アドレスを、論理ブロックを示す論理ブロックアドレスと、論理ページを論理ブロックごとに示す論理ページ番号とに分割する。また、ＮＡＮＤコントローラ６ａは、物理アドレスを、物理ブロックを示す物理ブロックアドレスと、物理ページを物理ブロックごとに示す物理ブロック番号とに分割する。【００２５】
ここで、アドレス変換テーブルを用いて論理アドレスを物理アドレスに変換する技術では、記憶デバイスの容量が増大すると、アドレス変換テーブルのエントリ数も増大してしまい、ＮＡＮＤコントローラの回路規模が増大してしまう。例えば、図２は、従来の書き込み処理を説明するための第１の図である。なお、図２に示す例では、理解を容易にするため、ブロック数を「８」とし、各ブロック内のページ数が「４」の記憶デバイスについて記載した。また、図２に示す例では、論理ブロックアドレスと物理ブロックアドレスとを対応付けたアドレス変換テーブルを有するＮＡＮＤコントローラが実行する処理について記載した。【００２６】
例えば、ファイルシステムは、図２中（Ａ）に示すように、論理ブロックアドレス「Ｌ４」に含まれる論理ページのうち、論理ページ番号「１」が示す論理ページに対する書き込み要求を発行する。すなわち、ファイルシステムは、論理アドレス「Ｌ４−１」に対する書き込み要求を発行する。すると、ＮＡＮＤコントローラは、図２中（Ｂ）に示すように、論理ブロックアドレス「Ｌ４」に対応付けられた物理ブロックアドレス「Ｐ７」を取得し、図２中（Ｃ）に示すように、書き込み対象となるページを含むブロックを識別する。【００２７】
続いて、ＮＡＮＤコントローラは、図２中（Ｄ）に示すように、物理ブロックアドレス「Ｐ７」が示す物理ブロックの全データを予備ブロックにコピーする。この際、ＮＡＮＤコントローラは、書き込み要求の対象となる論理ページ番号「１」と同じ物理ページ番号「１」のデータを書き込み対象となるデータで更新する。その後、ＮＡＮＤコントローラは、図２中（Ｅ）に示すように、論理ブロックアドレス「Ｌ４」と対応付けられていた物理ブロックアドレス「Ｐ７」を予備ブロックの物理ブロックアドレス「Ｐ８」に更新する。そして、ＮＡＮＤコントローラは、物理ブロックアドレス「Ｐ７」が示すブロックのデータを消去する。【００２８】
また、別の従来例として、アドレス変換テーブルをページごとに管理する場合がある。例えば、図３は、従来の書き込み処理を説明するための第２の図である。なお、図３に示す例では、理解を容易にするため、図２と同様に、ブロック数を「８」とし、各ブロック内のページ数を「４」の記憶デバイスについて記載した。また、図３に示す例では、論理アドレスと物理アドレスとを対応付けたアドレス変換テーブルを有するＮＡＮＤコントローラが実行する処理について記載した。【００２９】
例えば、図３中（Ｆ）に示すように、ファイルシステムは、論理ブロックアドレス「Ｌ０」の論理ページ番号「３」、すなわち論理アドレス「Ｌ０−３」に書き込み要求を発行する。すると、ＮＡＮＤコントローラは、図３中（Ｇ）に示すように、論理アドレス「Ｌ０−３」に対応付けられた物理アドレス「Ｐ４−３」を取得し、図３中（Ｈ）に示すように、更新前のデータが格納されているページを識別する。続いて、ＮＡＮＤコントローラは、図３中（Ｉ）に示すように、物理アドレス「Ｐ４−３」が示すページのデータを更新して予備ブロックにコピーする。その後、ＮＡＮＤコントローラは、図３中（Ｊ）に示すように、論理アドレス「Ｌ０−３」と対応付けられていた物理アドレス「Ｐ４−３」を「Ｐ８−０」に更新し、処理を終了する。【００３０】
しかしながら、従来のＮＡＮＤシステムでは、アドレス変換テーブルをブロックごとに記憶する場合であっても、ページ単位で記憶する場合であっても、アドレス変換テーブルの大きさは、ＮＡＮＤデバイスの総容量に比例して増大してしまう。【００３１】
そこで、ＮＡＮＤコントローラ６ａは、アドレス変換テーブルを記憶デバイス７ａ〜１０ａに格納しており、アドレス変換テーブルの一部を保持する。例えば、アドレス変換テーブルには、各論理アドレスと対応付けられたエントリに、論理アドレスが示す記憶領域を物理的に示す物理アドレスが格納されている。また、ＮＡＮＤコントローラ６ａは、論理アドレスの上位ｉビットが共通する論理アドレスを物理アドレスに変換するアドレス変換テーブルが格納された物理アドレスと、論理アドレスの上位ｉビットとを対応付けた変換テーブルタグを保持する。【００３２】
そして、ＮＡＮＤコントローラ６ａは、読み出し対象、または書き込み対象となる論理アドレスの上位ｉビットと対応付けられた物理アドレスを変換テーブルタグから取得し、取得した物理アドレスが示す記憶領域から、アドレス変換テーブルの一部を読み出す。ここで、１つの物理アドレスが示す記憶領域には、論理アドレスの下位ｊビットと対応付けられた複数のエントリに変換先の物理アドレスが格納されたアドレス変換テーブルが格納されている。このため、ＮＡＮＤコントローラ６ａは、読み出したアドレス変換テーブルのうち、読み出し対象、または書き込み対象となる論理アドレスの下位ｊビットと対応付けられたエントリの物理アドレスを読み出すことができる。なお、以下の説明では、論理アドレスの上位ｉビットを単に上位アドレスと記載し、下位ｊビットを下位アドレスと記載する。【００３３】
ここで、アドレス変換テーブルの一部をＮＡＮＤコントローラが保持する技術では、処理対象の論理アドレスが保持するアドレス変換テーブルに含まれていない場合は、処理対象の論理アドレスを含むアドレス変換テーブルをＮＡＮＤコントローラから取得する。そして、ＮＡＮＤコントローラから取得したアドレス変換テーブルを用いて論理アドレスを物理アドレスに変換し、変換後の物理アドレスを用いてメモリアクセスを行う。この結果、アドレス変換テーブルの一部をＮＡＮＤコントローラが保持する技術では、アドレス変換に時間がかかり、メモリアクセスのレイテンシが増大してしまう。【００３４】
そこで、ＮＡＮＤコントローラ６ａは、所定の条件がそろうと、以下の整列処理を実行する。すなわち、ＮＡＮＤコントローラ６ａは、論理ブロックアドレスが共通する複数の論理アドレスを選択し、アドレス変換テーブルを用いて、選択した論理アドレスと対応付けられた物理アドレスを識別する。【００３５】
そして、ＮＡＮＤコントローラ６ａは、識別した物理アドレスに格納されているデータを、論理ページ番号の順で、予備のブロックに含まれる先頭のページから各ページへと移動させる。すなわち、ＮＡＮＤコントローラ６ａは、各データの論理ページ番号と、移動先の物理ページ番号が同じ値になるように、各データを整列移動させる。そして、ＮＡＮＤコントローラ６ａは、整列移動させたデータの論理ブロックアドレスと、データを移動させたブロックの物理ブロックアドレスとを対応付けて記憶する。【００３６】
また、ＮＡＮＤコントローラ６ａは、読み出し要求とともに論理アドレスを受信すると、受信した論理アドレスの上位ビット、すなわち読み出し対象となるデータの論理ブロックアドレスと対応付けて記憶する物理ブロックアドレスを取得する。ここで、整列移動させたブロック内では、各データの論理ページ番号と物理ページ番号とが同一の値となっている。そこで、ＮＡＮＤコントローラ６ａは、取得した物理ブロックアドレスに受信した論理アドレスの論理ページ番号を付加することで、読み出し対象となるデータが格納された物理アドレスを取得する。その後、ＮＡＮＤコントローラ６は、取得した物理アドレスを用いて、読み出し対象となるデータを取得する。【００３７】
このように、ＮＡＮＤコントローラ６ａは、論理ブロックアドレスが共通する論理アドレスによって指定されるページの各データを、１つの物理ブロックに移動させる。この際、ＮＡＮＤコントローラ６ａは、各データの論理ページ番号と同一の物理ページ番号が示すページに各データを移動させる。そして、ＮＡＮＤコントローラ６ａは、各データの移動先となる物理ブロックを示す物理ブロックアドレスと、移動させたデータの論理ブロックアドレスとを対応付けた早引きテーブル１３を記憶する。【００３８】
その後、ＮＡＮＤコントローラ６ａは、読み出し対象の論理アドレスを受信すると、論理アドレスに含まれる論理ブロックアドレスと対応付けられた物理ブロックアドレスを早引きテーブル１３から取得する。そして、ＮＡＮＤコントローラ６ａは、取得した物理ブロックアドレスに、受信した論理アドレスの論理ページ番号を付加することで、読み出し対象となるデータが格納された記憶領域を示す物理アドレスを取得する。【００３９】
この結果、ＮＡＮＤコントローラ６ａは、アドレス変換テーブルキャッシュ１２に、読み出し対象となる論理アドレスと対応する物理アドレスが格納されていない場合にも、アドレス変換テーブル２０の読み出し処理を行わなずともアドレス変換を実現できる。このため、ＮＡＮＤコントローラ６ａは、アドレス変換処理のレイテンシを短縮することができる。【００４０】
ここで、図４、図５を用いてＮＡＮＤコントローラ６ａが実行する処理の一例について説明する。まず、図４を用いて、ＮＡＮＤコントローラ６ａが実行する整列処理について説明する。図４は、整列処理の流れを説明する図である。なお、図４に示す例では、理解を容易にするため、図２と同様に、ブロック数を「８」とし、各ブロック内のページ数を「４」の記憶デバイス７ａ〜１０ａについて記載した。【００４１】
例えば、ＮＡＮＤコントローラ６ａは、早引きテーブルを確認し、図４中（Ｋ）に示すように、論理ブロックアドレス「Ｌ０」に物理ブロックアドレスが対応付けられておらず、未登録、もしくは有効な物理ブロックアドレスが対応付けられていないと判定する。このような場合には、ＮＡＮＤコントローラ６ａは、図４中（Ｌ）に示すように、論理ブロックアドレス「Ｌ０」を含む論理アドレス「Ｌ０−０」〜「Ｌ０−３」を選択する。また、ＮＡＮＤコントローラ６ａは、アドレス変換テーブルを用いて、論理アドレス「Ｌ０−０」〜「Ｌ０−３」を物理アドレス「Ｐ０−０」、「Ｐ７−０」、「Ｐ２−２」、「Ｐ４−３」に変換する。そして、図４中（Ｍ）に示すように、各物理アドレスが示すページを識別する。【００４２】
次に、ＮＡＮＤコントローラ６ａは、識別した各ページのデータを予備ブロックに移動させる。この際、ＮＡＮＤコントローラ６ａは、図４中（Ｎ）に示すように、各データを指定する際に用いる論理アドレスの論理ページ番号と、データの移動先となるページの物理ページ番号とが同一となるように、各データを移動させる。【００４３】
詳細には、ＮＡＮＤコントローラ６ａは、物理アドレス「Ｐ４−０」に格納されていた論理アドレス「Ｌ０−０」のデータを物理アドレス「Ｐ８−０」に移動させる。また、ＮＡＮＤコントローラ６ａは、物理アドレス「Ｐ７−０」に格納されていた論理アドレス「Ｌ０−１」のデータを物理アドレス「Ｐ８−１」に移動させる。また、ＮＡＮＤコントローラ６ａは、物理アドレス「Ｐ２−２」に格納されていた論理アドレス「Ｌ０−２」のデータを物理アドレス「Ｐ８−２」に移動させる。また、ＮＡＮＤコントローラ６ａは、物理アドレス「Ｐ４−３」に格納されていた論理アドレス「Ｌ０−３」のデータを物理アドレス「Ｐ８−３」に移動させる。【００４４】
そして、ＮＡＮＤコントローラ６ａは、図４中（Ｏ）に示すように、アドレス変換テーブルを更新するとともに、図４中（Ｐ）に示すように、早引きテーブルに、論理ブロックアドレス「Ｌ０」と物理ブロックアドレス「Ｐ８」とを対応付けて記憶する。【００４５】
次に、図５を用いてＮＡＮＤコントローラ６ａがデータの読み出し時に早引きテーブルを用いて実行する処理の一例について説明する。図５は、読み出し処理の流れを説明する図である。なお、図５に示す例では、理解を容易にするため、図２と同様に、ブロック数を「８」とし、各ブロック内のページ数を「４」の記憶デバイス７ａ〜１０ａについて記載した。【００４６】
例えば、図５に示す例では、図５中（Ｑ）に示すように、ファイルシステムが論理アドレス「Ｌ０−３」への読み出し要求を発行する。このような場合には、ＮＡＮＤコントローラ６ａは、図５中（Ｒ）に示すように、論理アドレス「Ｌ０−３」の論理ブロックアドレス「Ｌ０」と対応付けられた物理ブロックアドレス「Ｐ８」を早引きテーブルから取得する。ここで、物理ブロックアドレス「Ｐ８」が示すブロック中では、各データが、各データの論理ページ番号と同一の物理ページ番号に格納されている。【００４７】
このため、ＮＡＮＤコントローラ６ａは、図５中（Ｓ）に示すように、物理ブロックアドレス「Ｐ８」のブロックに含まれるページのうち、論理アドレス「Ｌ０−３」の論理ページ番号「３」と同じ物理ページ番号「３」が示すページからデータの読み出しを行う。この結果、ＮＡＮＤコントローラ６ａは、保持するアドレス変換テーブルに、論理アドレス「Ｌ０−３」が含まれていない場合にも、記憶デバイス７ａ〜１０ａからアドレス変換テーブルを読み出すことなく、アドレス変換を行うことができる。【００４８】
次に、図６を用いて、ＮＡＮＤコントローラ６ａの機能構成について説明する。図６は、実施例１に係るＮＡＮＤコントローラの機能構成を説明する図である。図６に示す例では、ＮＡＮＤコントローラ６ａは、変換テーブルタグ１１、アドレス変換テーブルキャッシュ１２、早引きテーブル１３、リクエスタインタフェース部１４、リクエスト調停部１５を有する。また、ＮＡＮＤコントローラ６ａは、アドレス変換制御部１６、デバイスアクセス制御部１７、データ整列制御部１８、ガベージコレクション制御部１９を有する。また、記憶デバイス７ａ〜１０ａは、アドレス変換テーブル２０とユーザデータ２１とを記憶する。【００４９】
変換テーブルタグ１１は、上位アドレスと、上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレスとを対応付けたテーブルである。例えば、図７は、変換テーブルタグを説明する図である。図７に示す例では、変換テーブルタグ１１は、論理アドレスの上位アドレス「０」〜「２ｉ−１」とそれぞれ対応付けられた複数のエントリを有する。【００５０】
また、変換テーブルタグ１１の各エントリには、対応付けられた上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレス（テーブルＰＡ：Physical  Address）「ａ」〜「ｍ」が格納されている。なお、物理アドレス「ａ」〜「ｍ」の値は、ＮＡＮＤコントローラ６ａが保持するアドレス変換テーブルの一部を変更する度に、異なる値に変化することとなる。【００５１】
図６に戻って、アドレス変換テーブルキャッシュ１２は、記憶デバイス７ａ〜１０ａ上に格納されたアドレス変換テーブル２０の一部である。例えば、図８は、ＮＡＮＤコントローラが保持するアドレス変換テーブルの一例を説明する図である。図８に示す例では、アドレス変換テーブルキャッシュ１２は、下位アドレス「０」〜「２ｊ−１」と対応付けられたエントリを有する。また、アドレス変換テーブルキャッシュ１２は、各エントリにバリッドビット（Valid）とデータが格納された物理アドレスであるデータＰＡ「ＢＡ」〜「ＢＮ」を対応付けて格納している。【００５２】
ここで、バリッドビットは、対応付けられた物理アドレスが有効な物理アドレスであるか否かを示すビットである。例えば、図８に示す例では、下位アドレス「２」と対応付けられたエントリの物理アドレス「ＢＣ」は、有効な物理アドレスであるが、下位アドレス「１」と対応付けられたエントリの物理アドレス「ＢＢ」は、有効な物理アドレスではない。【００５３】
なお、ＮＡＮＤコントローラ６ａは、アドレス変換テーブル２０のうち、変換テーブルタグによって示された物理アドレスで指定される範囲をアドレス変換テーブルキャッシュ１２として保持する。例えば、図８、１０に示す例では、ＮＡＮＤコントローラ６ａは、物理アドレスが「ｂ」となる物理ページに格納されたアドレス変換テーブルキャッシュ１２を保持する。【００５４】
図６に戻って、早引きテーブル１３は、論理ブロックアドレスと物理ブロックアドレスとを対応付けて記憶する。例えば、図９は、早引きテーブルの一例を説明する図である。例えば、図９に示す例では、早引きテーブルは、論理ブロックアドレス「０」〜「２ｐ−１」と対応付けたエントリを有する。また、早引きテーブル１３は、各エントリに登録フラグと、物理ブロックアドレスとを対応付けて格納している。ここで、登録フラグとは、対応付けられた物理ブロックアドレスが示すブロックにデータを整列移動させたか否かを示すフラグであり、データを整列移動させた場合は、「１」となり、データを整列移動させていない場合は、「０」となる。【００５５】
図６に戻って、アドレス変換テーブル２０は、物理アドレスを論理アドレスに変換する際に用いるアドレス変換テーブルである。例えば、図１０は、アドレス変換テーブルの全体を説明する図である。例えば、図１０に示すように、アドレス変換テーブル２０は、記憶デバイス７ａ〜１０ａが有する記憶領域のうち、物理アドレス「ａ」〜「ｍ」の範囲に格納されたテーブルである。また、アドレス変換テーブル２０は、１つのページ内に、論理ページ番号「０」〜「２ｊ−１」と対応付けられたエントリを有し、各エントリ内に、バリッドビットと各論理ページ番号が示すデータが格納された物理アドレスが格納されている。【００５６】
例えば、物理アドレス「ａ」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「０」で下位アドレスが「０」〜「２ｊ−１」である論理アドレスに対応する物理アドレス「ＡＡ」〜「ＡＮ」が格納されている。また、物理アドレス「ｂ」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「１」で下位アドレスが「０」〜「２ｊ−１」である論理アドレスに対応する物理アドレス「ＢＡ」〜「ＢＮ」が格納されている。また、物理アドレス「ｍ」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「２ｉ−１」で下位アドレスが「０」〜「２ｊ−１」である論理アドレスに対応する物理アドレス「ＭＡ」〜「ＭＮ」が格納されている。ここで、アドレス変換テーブルに格納された物理アドレス「ａ」〜「ｍ」と論理アドレスの上位アドレス「０」〜「２ｉ−１」との対応は、変換テーブルタグ１１によって管理されている。【００５７】
図６に戻り、リクエスタインタフェース部１４は、Ｉ／Ｏハブを介して、読み出し要求、または書き込み要求を受信する。リクエスタインタフェース部１４は、読み出し要求を受信すると、受信した読み出し要求をリクエスト調停部１５に出力する。また、リクエスタインタフェース部１４は、デバイスアクセス制御部１７から読み出し要求の対象となるデータを受信すると、受信したデータを読み出し要求の発行元となるＣＰＵ３ａ、３ｂに出力する。【００５８】
また、リクエスタインタフェース部１４は、書き込み要求を受信すると、以下の書き込み処理を実行する。例えば、リクエスタインタフェース部１４は、受信した書き込み要求に格納された論理アドレスを含む読み出し要求をリクエスト調停部１５に出力する。そして、リクエスタインタフェース部１４は、読み出し対象のデータを受信すると、受信したデータを書き込み対象のデータで更新する。そして、リクエスタインタフェース部１４は、受信した書き込み要求に格納された論理アドレスと、更新後のデータとを含む書き込み要求をリクエスト調停部１５に出力する。【００５９】
リクエスト調停部１５は、リクエスタインタフェース部１４、データ整列制御部１８、およびガベージコレクション制御部１９からの読み出し要求および書き込み要求を調停し、調停結果に応じた順序で実行する。例えば、リクエスト調停部１５は、読み出し要求を受信すると、読み出し対象となる論理アドレスをアドレス変換制御部１６に出力する。そして、リクエスト調停部１５は、アドレス変換制御部１６から、読み出し対象となる物理アドレスを受信すると、受信した物理アドレスに対する読み出し要求をデバイスアクセス制御部１７に発行する。【００６０】
また、リクエスト調停部１５は、書き込み要求を受信すると、アドレス変換制御部１６に問い合わせる等して、各ページにデータが格納されていない予備ブロックの物理アドレスを取得する。その後、リクエスト調停部１５は、取得した物理アドレスに対して、更新したデータの書き込みを要求する書き込み要求をデバイスアクセス制御部１７に出力する。また、リクエスト調停部１５は、書き込み要求に格納されていた論理アドレスとデータを格納した物理アドレスとをアドレス変換制御部１６に出力する。【００６１】
アドレス変換制御部１６は、論理アドレスを物理アドレスに変換する。例えば、アドレス変換制御部１６は、論理アドレスを受信すると、早引きテーブル１３を参照し、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリを識別する。また、アドレス変換制御部１６は、識別したエントリの登録フラグが「１」であるか否かを判定する。【００６２】
そして、アドレス変換制御部１６は、識別したエントリの登録フラグが「１」である場合は、識別したエントリに格納された物理ブロックアドレスを取得する。また、アドレス変換制御部１６は、取得した物理ブロックアドレスに対し、受信した論理アドレスの下位ｑビット、すなわち論理ページ番号を付加することで、物理アドレスを生成する。【００６３】
一方、アドレス変換制御部１６は、識別したエントリの登録フラグが「０」である場合、すなわち、受信した論理アドレスが整列移動されていない場合は、アドレス変換テーブルを用いたアドレス変換処理を実行する。例えば、アドレス変換制御部１６は、変換テーブルタグ１１の各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリに格納されている物理アドレスを取得する。【００６４】
そして、アドレス変換制御部１６は、取得した物理アドレスをデバイスアクセス制御部１７に出力することで、アドレス変換テーブル２０の一部を取得する。すると、アドレス変換制御部１６は、受信したアドレス変換テーブル２０の一部をアドレス変換テーブルキャッシュ１２とする。そして、アドレス変換制御部１６は、アドレス変換テーブルキャッシュ１２の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリに格納されている物理アドレスを取得する。その後、アドレス変換制御部１６は、取得した物理アドレスをリクエスト調停部１５に出力する。【００６５】
また、アドレス変換制御部１６は、リクエスト調停部１５から、書き込み要求に格納されていた論理アドレスとデータを格納した物理アドレスとを受信する。すると、アドレス変換制御部１６は、受信した論理アドレスの上位アドレスを用いてアドレス変換テーブル２０の一部をアドレス変換テーブルキャッシュ１２として取得する。そして、アドレス変換制御部１６は、取得したアドレス変換テーブルキャッシュ１２のうち、論理アドレスの下位アドレスと対応付けられたエントリの物理アドレスを、リクエスト調停部１５から受信した物理アドレスで書き換える。【００６６】
その後、アドレス変換制御部１６は、アドレス変換テーブルキャッシュ１２をデバイスアクセス制御部１７に出力し、記憶デバイス７ａ〜１０ａが記憶するアドレス変換テーブル２０の書き換えを指示する。ここで、アドレス変換テーブルキャッシュ１２を記憶デバイス７ａ〜１０ａに書き戻す際は、キャッシュ元のページに書き戻されるわけではない。このため、アドレス変換制御部１６は、アドレス変換テーブルキャッシュ１２を書き戻した物理アドレスと、書き戻したアドレス変換テーブルキャッシュ１２に対応する論理アドレスの上位ビットとを対応付けるよう変換テーブルタグ１１を更新する。【００６７】
また、アドレス変換制御部１６は、早引きテーブル１３の各エントリのうち、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリの登録フラグを「０」にする。つまり、アドレス変換制御部１６は、データの書き込みにより、整列されたデータが他の物理ブロックに移動した場合には、早引きテーブル１３の各エントリのうち、対応するエントリを無効にする。【００６８】
次に、図１１、１２を用いて、アドレス変換制御部１６が実行するアドレス変換の一例を説明する。まず、図１１を用いて、アドレス変換制御部１６がアドレス変換テーブルを用いて実行するアドレス変換の流れについて説明する。図１１は、アドレス変換テーブルを用いたアドレス変換の流れを説明する図である。【００６９】
まず、アドレス変換制御部１６は、論理アドレスを受信すると、図１１中（Ｓ）に示すように、変換テーブルタグ１１の各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリの物理アドレスを取得する。すると、アドレス変換制御部１６は、物理アドレス「ｂ」を取得するので、図１１中（Ｔ）に示すように、物理アドレス「ｂ」に格納されたアドレス変換テーブルをアドレス変換テーブルキャッシュ１２として取得する。【００７０】
次に、アドレス変換制御部１６は、図１１中（Ｕ）に示すように、アドレス変換テーブルキャッシュ１２の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリに格納された物理アドレス「ＢＣ」を取得する。そして、アドレス変換制御部１６は、図１１中（Ｖ）に示すように、取得した物理アドレス「ＢＣ」を変換結果としてリクエスト調停部１５に出力する。【００７１】
次に、図１２を用いて、アドレス変換制御部１６が早引きテーブル１３を用いて実行するアドレス変換について説明する。図１２は、早引きテーブルを用いたアドレス変換の流れを説明する図である。例えば、アドレス変換制御部１６は、図１２中（Ｗ）に示すように、早引きテーブル１３の各エントリのうち、受信した論理アドレスの上位ｐビットである論理ブロックアドレスと対応付けられたエントリを識別する。ここで、識別したエントリの登録フラグが「１」であるので、アドレス変換制御部１６は、識別したエントリに格納されている物理ブロックアドレス「Ｂ」を取得する。【００７２】
また、アドレス変換制御部１６は、図１２中（Ｘ）に示すように、受信した論理アドレスの下位ｑビットである論理ページ番号を物理ページ番号として、早引きテーブル１３から取得した物理ブロックアドレス「Ｂ」の下位に付加する。この結果、アドレス変換制御部１６は、受信した論理アドレスを物理アドレスに変換するアドレス変換テーブルを保持していない場合にも、記憶デバイス７ａ〜１０ａからアドレス変換テーブルを読み出すことなく、アドレス変換を行うことができる。【００７３】
図６に戻って、デバイスアクセス制御部１７は、記憶デバイス７ａ〜１０ａに対するデータの書き込み、読み出し処理を実行する。例えば、デバイスアクセス制御部１７は、リクエスト調停部１５、またはアドレス変換制御部１６からデータの書き込み要求を受信する。このような場合には、デバイスアクセス制御部１７は、受信した書き込み要求に格納されている物理アドレスが示すページに対して、書き込み要求に格納されているデータの書き込みを行う。そして、デバイスアクセス制御部１７は、書き込み要求の発行元に対して、書き込み完了通知を送信する。【００７４】
また、デバイスアクセス制御部１７は、リクエスト調停部１５、またはアドレス変換制御部１６からデータの読み出し要求を受信すると、受信した読み出し要求に格納されている物理アドレスが示すページからデータの読み出しを行う。そして、デバイスアクセス制御部１７は、読み出したデータを読み出し要求の発行元に送信する。【００７５】
データ整列制御部１８は、所定のタイミングでデータの整列処理を実行する。例えば、データ整列制御部１８は、各論理ブロックアドレス「０」〜「２ｐ−１」について、以下の処理を実行する。まず、データ整列制御部１８は、直接、もしくはリクエスト調停部１５、およびアドレス変換制御部１６を介して、早引きテーブル１３の各エントリのうち、整列処理の対象となる論理ブロックアドレスと対応付けられたエントリの登録フラグを確認する。そして、データ整列制御部１８は、登録フラグが「１」である場合は、次の論理ブロックアドレスと対応付けられたエントリの登録フラグを確認する。【００７６】
そして、データ整列制御部１８は、整列処理の対象となる論理ブロックアドレスと対応付けられたエントリの登録フラグが「０」である場合は、以下の処理を実行する。まず、データ整列制御部１８は、データの整列先となる予備物理ブロックを確保する。例えば、データ整列制御部１８は、ガベージコレクション制御部１９にガベージコレクションを実行させ、予備物理ブロックを確保する。そして、データ整列制御部１８は、各論理ページ番号「０」〜「２ｑ−１」が示すページのデータを、予備物理ブロックの各物理ページ番号「０」〜「２ｑ−１」が示すページに移動させる。【００７７】
詳細な例を説明する。例えば、データ整列制御部１８は、ある論理ブロックアドレス「ｘ」について整列処理を行うため、物理ブロックアドレス「Ｘ」の予備物理ブロックを確保する。すると、データ整列制御部１８は、論理ブロックアドレス「ｘ」、論理ページ番号「０」が示すページのデータを読み出すよう読み出し要求を発行する。そして、データ整列制御部１８は、読み出したデータを物理ブロックアドレス「Ｘ」、論理ページ番号「０」が示すページに書き込むよう書き込み要求を発行する。【００７８】
次に、データ整列制御部１８は、論理ブロックアドレス「ｘ」、論理ページ番号「１」が示すページのデータを読み出すよう読み出し要求を発行する。そして、データ整列制御部１８は、読み出したデータを物理ブロックアドレス「Ｘ」、論理ページ番号「１」が示すページに書き込むよう書き込み要求を発行する。このような処理を論理ページ番号「２ｑ−１」まで繰り返し実行することで、データ整列制御部１８は、論理ブロックアドレスが「ｘ」となるデータについての整列を行う。【００７９】
また、データ整列制御部１８は、１つの論理ブロックアドレスについて整列処理が終了すると、早引きテーブル１３の更新を行うよう、リクエスト調停部１５を介して、デバイスアクセス制御部１７に指示する。詳細には、データ整列制御部１８は、整列処理を行った論理ブロックアドレスと対応付けられたエントリに、データの移動先となる物理ブロックを示す物理ブロックを格納するよう指示する。この結果、デバイスアクセス制御部１７は、整列処理を行った論理ブロックアドレスと対応付けられたエントリに、データの移動先となる物理ブロックアドレスを格納し、登録フラグを「１」に変更する。【００８０】
また、データ整列制御部１８は、１つの論理ブロックアドレスについて整列処理が終了すると、次の論理ブロックアドレスと対応付けられた早引きテーブル１３のエントリの登録フラグが「０」であるか否かを判別する。このような処理を全ての論理ブロックアドレスについて実行することで、データ整列制御部１８は、全てのデータを整列させることができる。【００８１】
ガベージコレクション制御部１９は、一部のページに有効なデータが格納されている物理ブロックを予備ブロックとするガベージコレクションを実行する。例えば、ガベージコレクション制御部１９は、アドレス変換テーブル２０の読み出し等を行い、一部のページに有効なデータが格納されている物理ブロックを消去対象ブロックとして識別する。そして、ガベージコレクション制御部１９は、消去対象ブロック内の有効なデータが格納されているページを指定して読み出し要求を発行し、データの読み出しを行う。【００８２】
次に、ガベージコレクション制御部１９は、消去対象ブロック以外の物理ブロックのうち、有効なデータが格納されていないページを指定して、読み出したデータの書き込みを行う。そして、ガベージコレクション制御部１９は、消去対象ブロックのデータの消去を指示する消去要求をリクエスト調停部１５に出力する。このような場合にはリクエスト調停部１５はデバイスアクセス制御部１７に消去要求を転送する。すると、デバイスアクセス制御部１７は、消去対象となるブロックのデータを消去する。【００８３】
例えば、リクエスタインタフェース部１４、リクエスト調停部１５、アドレス変換制御部１６、デバイスアクセス制御部１７、データ整列制御部１８、ガベージコレクション制御部１９とは、電子回路である。ここで、電子回路の例として、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などを適用する。【００８４】
また、変換テーブルタグ１１、アドレス変換テーブルキャッシュ１２、早引きテーブル１３とは、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（flash  memory）などの半導体メモリ素子などの記憶装置に格納された情報である。【００８５】
次に、図１３を用いて、ＮＡＮＤコントローラ６ａがデータの読み出しを行う際に実行する処理の流れについて説明する。図１３は、データの読み出し処理の流れを説明するためのフローチャートである。例えば、ＮＡＮＤコントローラ６ａは、各ＣＰＵ３ａ、３ｂが実行するプログラム等により実現されるシステムから論理アドレスを含む読み出し要求を受信する（ステップＳ１０１）。すると、ＮＡＮＤコントローラ６ａは、早引きテーブル１３の各エントリのうち、受信した論理アドレスの上位ビットである論理ブロックアドレスと対応付けられたエントリを検索する（ステップＳ１０２）。そして、ＮＡＮＤコントローラ６ａは、検索したエントリの登録フラグが「１」であるか否かを判定する（ステップＳ１０３）。【００８６】
ここで、ＮＡＮＤコントローラ６ａは、検索したエントリの登録フラグが「１」ではない場合は（ステップＳ１０３否定）、変換テーブルタグ１１の各エントリのうち受信した論理アドレスの上位アドレスと対応付けられたエントリを検索する（ステップＳ１０４）。また、ＮＡＮＤコントローラ６ａは、検索したエントリに格納されている物理アドレスを用いて、アドレス変換テーブル２０の一部をアドレス変換テーブルキャッシュ１２として取得する。そして、ＮＡＮＤコントローラ６ａは、取得したアドレス変換テーブルキャッシュ１２の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを検索する（ステップＳ１０５）。【００８７】
ここで、ＮＡＮＤコントローラ６ａは、検索したエントリのバリッドビットが「１」であるか否かを判定する（ステップＳ１０６）。そして、ＮＡＮＤコントローラ６ａは、検索したエントリのバリッドビットが「１」ではない場合は（ステップＳ１０６否定）、アドレス例外エラー通知をシステムに通知し（ステップＳ１０７）、処理を異常終了する。一方、ＮＡＮＤコントローラ６ａは、検索したエントリのバリッドビットが「１」である場合は（ステップＳ１０６肯定）、受信した論理アドレスを検索したエントリに格納された物理アドレスにアドレス変換する（ステップＳ１０８）。【００８８】
そして、ＮＡＮＤコントローラ６ａは、取得した物理アドレスを含む読み出し要求（Ｒｅａｄ）を発行し（ステップＳ１０９）。読み出したデータをシステムに返送し（ステップＳ１１０）、処理を終了する。一方、ＮＡＮＤコントローラ６ａは、検索したエントリの登録フラグが「１」である場合は（ステップＳ１０３肯定）、ステップＳ１０４〜Ｓ１０６の処理をスキップする。そして、ＮＡＮＤコントローラ６ａは、検索したエントリに格納されている物理ブロックアドレスと受信した論理アドレスの論理ページ番号とを組み合わせた物理アドレスに論理アドレスを変換する（ステップＳ１０８）。【００８９】
次に、図１４を用いて、ＮＡＮＤコントローラ６ａがデータの書き込みを行う際に実行する処理の流れについて説明する。図１４は、データの書き込み処理の流れを説明するためのフローチャートである。例えば、ＮＡＮＤコントローラ６ａは、システムから論理アドレスを含む書き込み要求を受信する（ステップＳ２００）。すると、ＮＡＮＤコントローラ６ａは、早引きテーブル１３の各エントリのうち、受信した論理アドレスの上位ビットである論理ブロックアドレスと対応付けられたエントリを検索する（ステップＳ２０１）。そして、ＮＡＮＤコントローラ６ａは、検索したエントリの登録フラグが「１」であるか否かを判定する（ステップＳ２０２）。【００９０】
ここで、ＮＡＮＤコントローラ６ａは、検索したエントリの登録フラグが「１」ではない場合は（ステップＳ２０２否定）、変換テーブルタグ１１の各エントリのうち受信した論理アドレスの上位アドレスと対応付けられたエントリを検索する（ステップＳ２０３）。また、ＮＡＮＤコントローラ６ａは、検索したエントリに格納されている物理アドレスを用いて、アドレス変換テーブル２０の一部をアドレス変換テーブルキャッシュ１２として取得する。そして、ＮＡＮＤコントローラ６ａは、取得したアドレス変換テーブルキャッシュ１２の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを検索する（ステップＳ２０４）。【００９１】
ここで、ＮＡＮＤコントローラ６ａは、検索したエントリのバリッドビットが「１」であるか否かを判定する（ステップＳ２０５）。そして、ＮＡＮＤコントローラ６ａは、バリッドビットが「１」である場合は（ステップＳ２０５肯定）、受信した論理アドレスを検索したエントリに格納された物理アドレスにアドレス変換する（ステップＳ２０６）。一方、ＮＡＮＤコントローラ６ａは、検索したエントリの登録フラグが「１」である場合は（ステップＳ２０２肯定）、ステップＳ２０３〜Ｓ２０５の処理をスキップする。そして、ＮＡＮＤコントローラ６ａは、検索したエントリに格納されている物理ブロックアドレスと受信した論理アドレスの論理ページ番号とを組み合わせた物理アドレスに論理アドレスを変換する（ステップＳ２０６）。【００９２】
続いて、ＮＡＮＤコントローラ６ａは、取得した物理アドレスが示す物理ページに読み出し要求を発行し（ステップＳ２０７）、読み出したデータを書き込みデータで更新する（ステップＳ２０８）。そして、ＮＡＮＤコントローラ６ａは、新たな物理ページに対して、更新したデータの書き込み要求（Ｗｒｉｔｅ）を発行する（ステップＳ２０９）。【００９３】
また、ＮＡＮＤコントローラ６ａは、アドレス変換テーブルキャッシュ１２のうち、システムから受信した書き込み要求の論理アドレスに対応付けられた物理アドレスを、新たにデータを書き込んだ物理ページを示す物理アドレスに更新する。そして、ＮＡＮＤコントローラ６ａは、アドレス変換テーブルキャッシュ１２を記憶デバイス７ａ〜１０ａに書き戻し、アドレス変換テーブル２０を更新する（ステップＳ２１０）。【００９４】
また、ＮＡＮＤコントローラ６ａは、変換テーブルタグ１１を更新する（ステップＳ２１１）。詳細には、ＮＡＮＤコントローラ６ａは、アドレスシステムから受信した論理アドレスの上位ビットと対応付けられたエントリの物理アドレスを、アドレス変換テーブルキャッシュ１２を書き戻した物理アドレスに更新する。次に、ＮＡＮＤコントローラ６ａは、早引きテーブル１３の各エントリのうち、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリの登録フラグを「０」にすることで無効化する（ステップＳ２１２）。その後、ＮＡＮＤコントローラ６ａは、完了通知をシステムに返送し（ステップＳ２１３）、処理を終了する。【００９５】
なお、ＮＡＮＤコントローラ６ａは、検索したエントリのバリッドビットが「０」である場合は、検索したエントリに格納されている物理アドレスが示す物理ページにデータが格納されていないので、ステップＳ２０６〜Ｓ２０８の処理をスキップする。【００９６】
次に、図１５を用いて、ＮＡＮＤコントローラ６ａが実行する整列処理の流れについて説明する。図１５は、整列処理の流れを説明するためのフローチャートである。例えば、ＮＡＮＤコントローラ６ａは、所定の時間間隔、もしくはシステムからの実行指示を契機として、図１５に示す整列処理を実行する。【００９７】
まず、ＮＡＮＤコントローラ６ａは、早引きテーブル１３の各エントリのうち、論理ブロックアドレス「０」と対応付けられたエントリを検索する（ステップＳ３０１）。そして、ＮＡＮＤコントローラ６ａは、検索したエントリの登録フラグが「０」であるか否かを判定する（ステップＳ３０２）。【００９８】
ここで、ＮＡＮＤコントローラ６ａは、登録フラグが「０」である場合は（ステップＳ３０２肯定）、続くステップＳ３０３〜Ｓ３０７の整列処理を実行する。まず、ＮＡＮＤコントローラ６ａは、整列用の予備物理ブロックを確保する（ステップＳ３０３）。次に、ＮＡＮＤコントローラ６ａは、論理ブロックアドレスが「０」で論理ページ番号が「０」のページに対して、読み出し要求を発行する（ステップＳ３０４）。続いてＮＡＮＤコントローラ６ａは、読み出したデータを、予備物理ブロックの物理ページのうち、論理ページ番号「０」と同じ物理ページ番号が示す物理ページに書き込む（ステップＳ３０５）。【００９９】
また、ＮＡＮＤコントローラ６ａは、論理ブロックアドレスが「０」の全ての論理ページ番号について、データを整列させたか否かを判定する（ステップＳ３０６）。そして、ＮＡＮＤコントローラ６ａは、論理ブロックアドレスが「０」の全ての論理ページ番号についてデータを整列させていない場合は（ステップＳ３０６否定）、他の論理ページ番号（例えば論理ページ番号「１」）について、ステップＳ３０４の処理を行う。【０１００】
また、ＮＡＮＤコントローラ６ａは、論理ブロックアドレスが「０」の全ての論理ページ番号について、データを整列させた場合は（ステップＳ３０６肯定）、早引きテーブル１３を更新する（ステップＳ３０７）。詳細には、ＮＡＮＤコントローラ６ａは、早引きテーブル１３の各エントリのうち、論理ブロックアドレス「０」と対応付けられたエントリに予備物理ブロックの物理ブロックアドレスを格納し、登録フラグを「１」にする。【０１０１】
その後、ＮＡＮＤコントローラ６ａは、整列処理を全ての論理ブロックアドレスについて実行したか否かを判定する（ステップＳ３０８）。そして、ＮＡＮＤコントローラ６ａは、整列処理を全ての論理ブロックアドレスについて実行していない場合は（ステップＳ３０８否定）、次の論理ブロックアドレス（例えば論理ブロックアドレス「１」）について、ステップＳ３０１の処理を実行する。また、ＮＡＮＤコントローラ６ａは、検索したエントリの登録フラグが「０」ではない場合は（ステップＳ３０２否定）、すでに整列処理が行われているので、整列処理をスキップし、ステップＳ３０８の処理を実行する。【０１０２】
［ＮＡＮＤコントローラ６ａの効果］
上述したように、ＮＡＮＤコントローラ６ａは、論理ブロックアドレスと論理ページ番号とを含む論理アドレスに、物理ブロックアドレスと物理ページ番号とを対応付けたアドレス変換テーブルキャッシュ１２を記憶する。また、ＮＡＮＤコントローラ６ａは、１つの論理ブロック番号を選択し、選択した論理ブロック番号を含む論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルキャッシュ１２から取得する。そして、ＮＡＮＤコントローラ６ａは、取得した物理アドレスが示す物理ページのデータを、１つの物理ブロックに含まれる物理ページであって、各データの論理アドレスに含まれる論理ページ番号と同一の物理ページ番号が示す物理ページに移動させる。その後、ＮＡＮＤコントローラ６ａは、データを移動させた物理ブロックの物理ブロックアドレスと、選択した論理ブロック番号とを対応付けて早引きテーブル１３に格納する。【０１０３】
また、ＮＡＮＤコントローラ６ａは、読み出し対象のデータが格納された論理ページを示す論理アドレスを受信すると、論理アドレスに含まれる論理ブロックアドレスと対応付けられた物理ブロックアドレスを早引きテーブル１３から取得する。そして、ＮＡＮＤコントローラ６ａは、早引きテーブル１３から取得した物理ブロックアドレスが示す物理ブロックに含まれた各物理ページのうち、受信した論理アドレスに含まれる論理ページ番号と同一の物理ページ番号が示す物理ページからデータを読み出す。【０１０４】
このため、ＮＡＮＤコントローラ６ａは、読み出し対象のデータが格納された論理ページを示す論理アドレスを物理アドレスに変換するアドレス変換テーブル２０を保持していない場合にも、アドレス変換に要する時間を短縮することができる。この結果、ＮＡＮＤコントローラ６ａは、記憶デバイス７ａ〜１０ａに対するアクセスのレイテンシを改善することができる。【０１０５】
また、例えば、アドレス変換テーブルの一部を保持する技術では、アドレス変換テーブルのサイズが大きくなると、保持する割合が相対的に小さくなるので、論理アドレスがキャッシュヒットする確率が悪化し、アドレス変換に要する時間が増大してしまう。また、アドレス変換テーブルのサイズが増大すると、変換テーブルタグの大きさも増大するので、変換テーブルタグの一部をキャッシュすることで、回路規模の増大を防ぐ手法が考えられる。しかしながら、このような手法では、記憶デバイスからデータの読み出しや書き込みを行う際に、複数回のアクセスが行われることとなる。この結果、記憶デバイスにアクセスする際のレイテンシが増大してしまう。【０１０６】
しかし、ＮＡＮＤコントローラ６ａは、アドレス変換テーブル２０の大きさによらず、整列処理を行った論理アドレスについては、必ずアドレス変換を行うことができる。この結果、ＮＡＮＤコントローラ６ａは、記憶デバイス７ａ〜１０ａに対する読み出し性能、および書き込み性能を向上させることができる。【０１０７】
また、早引きテーブル１３は、記憶デバイス７ａ〜１０ａが有する物理ブロックの数と同数のエントリで実現可能である。この結果、早引きテーブル１３のサイズは、アドレス変換テーブル２０に記憶デバイス７ａ〜１０ａが有する物理ページの数と同数のエントリを設定する場合よりも、非常に小さくなる。このため、ＮＡＮＤコントローラ６ａは、回路規模を増大させることなく、記憶デバイス７ａ〜１０ａに対する読み出し性能、および書き込み性能を向上させることができる。【０１０８】
また、ＮＡＮＤコントローラ６ａは、論理アドレスの上位ビットを論理ブロックアドレスとし、論理アドレスの下位ビットを論理ページ番号とする。また、ＮＡＮＤコントローラ６ａは、物理アドレスの上位ビットを物理ブロックアドレスとし、物理アドレスの下位ビットを物理ページ番号とする。このため、ＮＡＮＤコントローラ６ａは、任意の数の論理ページを早引きテーブルの構成単位とすることができる。また、ＮＡＮＤコントローラ６ａは、複雑な処理を行うことなく、容易にアドレス変換を行うことができる。【０１０９】
また、ＮＡＮＤコントローラ６ａは、使用されていない物理ページを含む物理ブロックに格納されたデータを他のブロックに複製し、使用されていない物理ページを含む物理ブロック内のデータを消去するガベージコレクション制御部１９を有する。そして、ＮＡＮＤコントローラ６ａは、ガベージコレクション制御部１９がデータを消去した物理ブロックを予備ブロックとして利用するので、記憶デバイス７ａ〜１０ａの空き容量が少ない場合にも、効率的にデータの整列処理を行うことができる。
【実施例２】
【０１１０】
上述したＮＡＮＤコントローラ６ａは、データ整列処理を実行する際に、早引きテーブル１３の全エントリを対象としていた。しかし、実施例はこれに限定されるものではない。例えば、ＮＡＮＤコントローラ６ａは、１回の整列処理で、全論理ブロックアドレスのうち、一部の論理ブロックアドレスのみについて整列制御を行っても良い。【０１１１】
例えば、ＮＡＮＤコントローラ６ａは、早引きテーブル１３の各エントリについて整列処理を実行し、所定の時間が経過した場合には、整列処理を行った最後の論理ブロックアドレスを記憶する。そして、ＮＡＮＤコントローラ６ａは、次回の整列処理を行う際に、記憶した論理ブロックアドレスの次の論理ブロックアドレスから整列処理を再開してもよい。【０１１２】
以下、図１６を用いて、ＮＡＮＤコントローラ６ａが実行する処理の流れについて説明する。図１６は、整列処理の第１のバリエーションを説明するためのフローチャートである。なお、図１６に示す処理のうち、ステップＳ４０３〜ステップＳ４０９は、図１５に示すステップＳ３０１〜Ｓ３０７と同様の処理を実行するものとして、説明を省略する。【０１１３】
例えば、ＮＡＮＤコントローラ６ａは、前回の整列処理において最後に整列処理を行った論理ブロックアドレスである終了アドレスをロードする（ステップＳ４０１）。次に、ＮＡＮＤコントローラ６ａは、ロードした終了アドレスに１を加算した値を整列処理の開始アドレスとする（ステップＳ４０２）。そして、ＮＡＮＤコントローラ６ａは、開始アドレスからステップＳ４０３の処理を実行する。【０１１４】
また、ＮＡＮＤコントローラ６ａは、ステップＳ４０９の処理を実行すると、整列処理を開始してから一定時間が経過したか否かを判定する（ステップＳ４１０）。そして、ＮＡＮＤコントローラ６ａは、一定時間が経過している場合は（ステップＳ４１０肯定）、整列処理を実行した最後の論理ブロックアドレスを終了アドレスとして保存し（ステップＳ４１１）、処理を終了する。一方、ＮＡＮＤコントローラ６ａは、整列処理を開始してから一定時間が経過していない場合は（ステップＳ４１０否定）、次の論理ブロックアドレスについて、ステップＳ４０３の処理を実行する。【０１１５】
また、ＮＡＮＤコントローラ６ａは、早引きテーブル１３の各エントリを複数のグループに分割し、各グループにグループ番号（グループＮｏ）を付与する。そして、ＮＡＮＤコントローラ６ａは、１回の整列処理で１つのグループについてのみ整列処理を行っても良い。【０１１６】
例えば、図１７は、整列処理の第２のバリエーションを説明するためのフローチャートである。なお、図１７に示す処理のうち、ステップＳ５０３〜ステップＳ５０９は、図１５に示すステップＳ３０１〜Ｓ３０７と同様の処理を実行するものとして、説明を省略する。【０１１７】
例えば、ＮＡＮＤコントローラ６ａは、前回の整列処理において最後に整列処理を行ったグループ番号をロードする（ステップＳ５０１）。次に、ＮＡＮＤコントローラ６ａは、ロードしたグループ番号の次のグループ番号を整列処理の対象とする（ステップＳ５０２）。そして、ＮＡＮＤコントローラ６ａは、整列処理の対象とするグループ番号が付与された最初のエントリについて、ステップＳ５０３の処理を実行する。【０１１８】
また、ＮＡＮＤコントローラ６ａは、ステップＳ５０９の処理を実行すると、早引きテーブル１３の各エントリのうち、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行ったか否か判定する（ステップＳ５１０）。そして、ＮＡＮＤコントローラ６ａは、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行った場合は（ステップＳ５１０肯定）、整列処理を実行したグループ番号を保存し（ステップＳ５１１）、処理を終了する。一方、ＮＡＮＤコントローラ６ａは、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行っていない場合は（ステップＳ５１０否定）、次の論理ブロックアドレスについて、ステップＳ５０３の処理を実行する。【０１１９】
ＮＡＮＤコントローラ６ａは、論理ブロックアドレスの一部ずつについて整列処理を実行した場合は、１回の整列処理に要する処理時間を短縮することができる。この結果、ＮＡＮＤコントローラ６ａは、整列処理のスケジューリングを柔軟にすることができる。【０１２０】
また、ＮＡＮＤコントローラ６ａは、読み出し要求、または書き込み要求の発生頻度を論理ブロックアドレスごとに計数し、読み出し要求の発生頻度が多く、書き込み要求の発生頻度が少ない論理ブロックアドレスについて、整列処理を実行しても良い。以下、読み出し要求の発生頻度が多く、書き込み要求の発生頻度が少ない論理ブロックアドレスのグループについて、整列処理を実行するＮＡＮＤコントローラ６ｃについて説明する。【０１２１】
図１８は、読み出し要求と書き込み要求との発生頻度に応じて整列処理を実行するＮＡＮＤコントローラの機能構成を説明する図である。なお、図１８に示すＮＡＮＤコントローラ６ｃの機能構成のうち、図６に示すＮＡＮＤコントローラ６ａと同様の機能構成については、同一の符号を付し、説明を省略する。【０１２２】
例えば、ＮＡＮＤコントローラ６ｃは、データ整列制御部１８ａ、リクエストカウンタ２２を有する。リクエストカウンタ２２は、リクエスタインタフェース部１４がＩ／Ｏハブ４を介して受信した読み出し要求、および書き込み要求の内容を取得する。そして、リクエストカウンタ２２は、複数の論理ブロックアドレスを含むグループごとに、リクエスタインタフェース部１４が受信した読み出し要求の数、および書き込み要求の数を計数する。【０１２３】
また、リクエストカウンタ２２は、データ整列制御部１８ａから整列処理の実行通知を受信すると、グループごとに、計数した読み出し要求の数から書き込み要求の数を減算した値を算出する。そして、リクエストカウンタ２２は、算出した値が最も大きいグループに含まれる論理ブロックアドレスをデータ整列制御部１８ａに通知する。すなわち、リクエストカウンタ２２は、読み出し要求の数が大きく、書き込み要求の数が少ないグループに含まれる論理ブロックアドレスをデータ整列制御部１８ａに通知する。【０１２４】
データ整列制御部１８ａは、所定の時間間隔、もしくはシステムからの整列処理実行要求に応じて、整列処理を実行する場合は、整列処理の実行通知をリクエストカウンタ２２に通知する。そして、データ整列制御部１８ａは、リクエストカウンタ２２から論理ブロックアドレスを受信すると、データ整列制御部１８と同様に、受信した論理ブロックアドレスについて整列処理を実行する。【０１２５】
例えば、データ整列制御部１８ａ、リクエストカウンタ２２とは、電子回路である。ここで、電子回路の例として、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などを適用する。【０１２６】
次に、図１９を用いて、ＮＡＮＤコントローラ６ｃが実行する整列処理の流れを説明する。図１９は、整列処理の第３のバリエーションを説明するためのフローチャートである。なお、図１９に示す処理のうち、ステップＳ６０３〜ステップＳ６０９は、図１５に示すステップＳ３０１〜Ｓ３０７と同様の処理を実行するものとして、説明を省略する。【０１２７】
例えば、ＮＡＮＤコントローラ６ｃは、各グループの読み出し要求の数から書き込み要求の数を減算する（ステップＳ６０１）。次に、ＮＡＮＤコントローラ６ｃは、減算結果の値が最も大きいグループを今回の整列処理の対象に設定する（ステップＳ６０２）。そして、ＮＡＮＤコントローラ６ｃは、整列処理の対象となったグループに含まれる論理アドレスについて、ステップＳ６０３の処理を実行する。また、ＮＡＮＤコントローラ６ｃは、ステップＳ６０９の処理を実行すると、グループ内の全ての論理ブロックアドレスについて整列処理を実行したか否かを判定する（ステップＳ６１０）。【０１２８】
そして、ＮＡＮＤコントローラ６ｃは、グループ内の全ての論理ブロックアドレスについて整列処理を行った場合は（ステップＳ６１０肯定）、処理を終了する。一方、ＮＡＮＤコントローラ６ｃは、グループ内全ての論理ブロックアドレスについて整列処理を行っていない場合は（ステップＳ６１０否定）、グループ内の次の論理ブロックアドレスについて、ステップＳ６０３の処理を実行する。【０１２９】
［ＮＡＮＤコントローラ６ｃの効果］
上述したように、ＮＡＮＤコントローラ６ｃは、論理ブロックアドレスごとに、読み出し要求の数と書き込み要求の数とを計数する。そして、ＮＡＮＤコントローラ６ｃは、読み出し要求の数から書き込み要求の数を減算した数が最も多い論理ブロックアドレスについて、整列処理を実行する。このため、ＮＡＮＤコントローラ６ｃは、効果的な整列処理を実行することができる。【０１３０】
すなわち、読み出し要求の数が多く、書き込み要求の数が少ない論理ブロックアドレスの各論理ページを物理ブロック上で整列させた場合は、無効になる確率が少なく、早引きテーブル１３を用いたアドレス変換が多く実行されると考えられる。このため、ＮＡＮＤコントローラ６ｃは、読み出し要求の数が多く、書き込み要求の数が少ない論理ブロックアドレスを優先的に整列させるので、効率的な整列処理を実行することができる。
【実施例３】
【０１３１】
実施例１、２では、論理ブロック、および物理ブロックを早引きテーブル１３に登録したデータ単位としたが、実施例はこれに限定されるものではない。すなわち、ＮＡＮＤコントローラ６ａ〜６ｃは、任意のデータ単位で、論理アドレス、および物理アドレスを分割し、早引きテーブル１３に登録してもよい。【０１３２】
例えば、ＮＡＮＤコントローラ６ａ〜６ｃは、論理アドレスの上位ｉビットと、物理アドレスの上位ｉビットとを対応付けて早引きテーブル１３としてもよい。また、このような分割を行う場合は、変換テーブルタグ１１と早引きテーブル１３とを共通化してもよい。【０１３３】
以下、図２０を用いて、変換テーブルタグ１１と早引きテーブル１３とを共通化したＮＡＮＤコントローラ６ｄについて説明する。図２０は、変換テーブルタグと早引きテーブルとを共通化したＮＡＮＤコントローラの機能構成を説明する図である。なお、図２０に示すＮＡＮＤコントローラ６ｄの機能構成のうち、図６に示すＮＡＮＤコントローラ６ａと同様の機能構成については、同一の符号を付し、説明を省略する。【０１３４】
例えば、ＮＡＮＤコントローラ６ｄは、早引きテーブル１３ａ、およびアドレス変換制御部１６ａを有する。早引きテーブル１３ａは、論理アドレスのうち上位ｉビットと対応付けられた複数のエントリを有する。そして、早引きテーブル１３ａは、早引きテーブル１３と同様に、各エントリに登録フラグと、物理アドレスの上位ｉビットとを対応付けて記憶する。また、早引きテーブル１３ａは、変換テーブルタグ１１と同様に、各エントリに、各エントリと対応付けられた上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレスをさらに格納する。【０１３５】
アドレス変換制御部１６ａは、アドレス変換制御部１６と同様の処理を行う。この際、アドレス変換制御部１６ａは、早引きテーブル１３ａを変換テーブルタグ１１、および早引きテーブル１３として利用する。以下、図２１を用いて、アドレス変換制御部１６ａが実行するアドレス変換処理の流れを説明する。【０１３６】
図２１は、変換テーブルタグと早引きテーブルとを共通化した際のアドレス変換処理の流れを説明する図である。図２１に示すように早引きテーブル１３ａの各エントリには、論理アドレスの上位ｉビットである上位アドレス「０」〜「２ｉ−１」が対応付けられている。また、早引きテーブル１３ａの各エントリには、物理アドレスの上位ｉビットである「Ａ」〜「Ｍ」が格納されている。また、早引きテーブル１３ａの各エントリには、対応する上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレス「ａ」〜「ｍ」が格納されている。【０１３７】
例えば、アドレス変換制御部１６ａは、論理アドレスを受信すると、図２１中（ａ）に示すように、早引きテーブル１３ａの各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリを識別する。例えば、アドレス変換制御部１６ａは、図２１に示す例では、上位アドレス「１」と対応付けられたエントリを識別する。【０１３８】
そして、アドレス変換制御部１６ａは、識別したエントリの登録フラグが「０」である場合は、以下の処理を実行する。まず、アドレス変換制御部１６ａは、識別したエントリに格納された物理アドレス「ｂ」を取得し、図２１中（ｂ）に示すように、物理アドレス「ｂ」に格納されているアドレス変換テーブル２０の一部を取得する。そして、アドレス変換制御部１６ａは、図２１中（ｃ）に示すように、取得したアドレス変換テーブル２０の一部をアドレス変換テーブルキャッシュ１２とする。【０１３９】
また、アドレス変換制御部１６ａは、図２１中（ｄ）に示すように、アドレス変換テーブルキャッシュ１２の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを識別する。そして、アドレス変換制御部１６ａは、識別したエントリに格納されている物理アドレス「ＢＣ」を変換後の物理アドレスとして、リクエスト調停部１５に出力する。【０１４０】
なお、アドレス変換制御部１６ａは、例えば、受信した論理アドレスの上位アドレスが「２ｉ−１」であった場合は、早引きテーブル１３ａの各エントリのうち、上位アドレス「２ｉ−１」と対応付けられたエントリを識別する。そして、アドレス変換制御部１６ａは、識別したエントリの登録フラグが「１」であるので、識別したエントリに格納されている物理アドレスの上位ｉビット「Ｍ」を取得する。そして、アドレス変換制御部１６ａは、取得した「Ｍ」を上位ｉビットとし、受信した論理アドレスの下位アドレスを下位ｊビットとする物理アドレスを変換後の物理アドレスとして、リクエスト調停部１５に出力する。【０１４１】
例えば、アドレス変換制御部１６ａは、電子回路である。ここで、電子回路の例として、ＡＳＩＣやＦＰＧＡなどの集積回路、またはＣＰＵやＭＰＵなどを適用する。また、早引きテーブル１３ａとは、半導体メモリ等の記憶装置に記憶される情報である。【０１４２】
［ＮＡＮＤコントローラ６ｄの効果］
このように、ＮＡＮＤコントローラ６ｄは、アドレス変換テーブルキャッシュ１２を記憶する。また、ＮＡＮＤコントローラ６ｄは、論理アドレスの上位ビットと、登録フラグと、データの整理先となる物理記憶領域を示す物理アドレスの上位ビットとを対応付けたエントリを有する早引きテーブル１３ａを有する。また、ＮＡＮＤコントローラ６ｄは、早引きテーブル１３ａに、同一エントリの論理アドレスの上位ビットを含む論理アドレスを物理アドレスに変換する変換テーブルが格納された物理アドレスを各エントリに格納する。【０１４３】
そして、ＮＡＮＤコントローラ６ｄは、読み出し対象の論理アドレスから上位ビットを取得し、取得した上位ビットと対応付けられた登録フラグが「０」である場合は、取得した上位ビットと対応付けられた物理アドレスを用いて、アドレス変換テーブルを取得する。また、ＮＡＮＤコントローラ６ｄは、取得した上位ビットと対応付けられた登録フラグが「１」である場合は、取得した上位ビットと対応付けられた物理アドレスの上位ビットを取得する。そして、ＮＡＮＤコントローラ６ｄは、取得した上位ビットに読み出し対象の論理アドレスの下位ビットを付加した物理アドレスが示すページからデータの読み出しを行う。【０１４４】
このように、ＮＡＮＤコントローラ６ｄは、変換テーブルタグ１１と早引きテーブル１３ａとを１つのテーブルに統合する。この結果、ＮＡＮＤコントローラ６ｄは、テーブルの検索や更新に要するレイテンシを削減し、記憶デバイス７ａ〜１０ａに対するアクセス性能を向上させることができる。また、ＮＡＮＤコントローラ６ｄは、変換テーブルタグ１１と早引きテーブル１３ａとを記憶するための記憶容量を削減するので、回路規模を縮小することができる。
【実施例４】
【０１４５】
実施例１〜３では、早引きテーブルをＮＡＮＤコントローラ６ａ〜６ｄ上に設置する例について記載したが、実施例はこれに限定されるものではない。そこで、以下の実施例４では、早引きテーブル１３ａを記憶デバイス７ａ〜１０ａ上に設置し、早引きテーブル１３ａの一部を早引きテーブルキャッシュ１３ｂとして保持するＮＡＮＤコントローラ６ｅについて説明する。【０１４６】
図２２は、早引きテーブルの一部を保持するＮＡＮＤコントローラの機能構成を説明する図である。なお、図２２に示すＮＡＮＤコントローラ６ｅの機能構成のうち、図６に示すＮＡＮＤコントローラ６ａと同様の機能構成については、同一の符号を付し、説明を省略する。例えば、ＮＡＮＤコントローラ６ｅは、早引きテーブルタグ１１ａ、アドレス変換制御部１６ｂ、および早引きテーブルキャッシュ１３ｂを有する。また記憶デバイス７ａ〜１０ａは、早引きテーブル１３ａを記憶する。【０１４７】
早引きテーブルタグ１１ａは、論理アドレスの上位アドレスのうちの上位ｋビットであるインデックスと、対応するインデックスを含んだ上位アドレスを含む各論理アドレスの早引きテーブルを記憶する物理アドレスとを対応付けて記憶する。また、早引きテーブルキャッシュ１３ｂは、記憶デバイス７ａ〜１０ａが記憶する早引きテーブル１３ａの一部である。【０１４８】
以下、図２３を用いて、アドレス変換制御部１６ｂが実行する処理の流れについて説明する。図２３は、早引きテーブルタグを用いて実行するアドレス変換処理の流れを説明する図である。例えばアドレス変換制御部１６ｂは、読み出し要求の対象となる論理アドレスを受信すると、図２３中（ｆ）に示すように、受信した論理アドレスの上位ｋビットであるインデックスを用いて早引きテーブルタグ１１ａを検索する。そして、アドレス変換制御部１６ｂは、受信した論理アドレスに含まれる上位アドレスの早引きを行うための早引きテーブルが格納された物理アドレス「ｚ」を早引きテーブルタグ１１ａから取得する。【０１４９】
次に、アドレス変換制御部１６ｂは、図２３中（ｇ）に示すように、取得した物理アドレス「ｚ」が示すページに格納されている早引きテーブル１３ａの一部を取得し、図２３中（ｈ）に示すように、早引きテーブルキャッシュ１３ｂとする。次に、アドレス変換制御部１６ｂは、図２３中（ｉ）に示すように、早引きテーブルキャッシュ１３ｂの各エントリのうち、読み出し要求の対象となる論理アドレスの上位アドレスと対応付けられたエントリを識別する。【０１５０】
ここで、アドレス変換制御部１６ｂは、識別したエントリの登録フラグが「０」であるので、識別したエントリに格納された物理アドレス「ｆ」を取得する。また、アドレス変換制御部１６ｂは、図２３中（ｊ）に示すように、物理アドレス「ｆ」に格納されているアドレス変換テーブル２０の一部を取得する。そして、アドレス変換制御部１６ｂは、図２３中（ｋ）に示すように、取得したアドレス変換テーブル２０の一部をアドレス変換テーブルキャッシュ１２とする。【０１５１】
また、アドレス変換制御部１６ｂは、図２３中（ｌ）に示すように、アドレス変換テーブルキャッシュ１２の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを識別する。そして、アドレス変換制御部１６ｂは、図２３中（ｍ）に示すように、識別したエントリに格納されている物理アドレス「ＢＣ」を変換後の物理アドレスとして、リクエスト調停部１５に出力する。【０１５２】
例えば、アドレス変換制御部１６ｂは、電子回路である。ここで、電子回路の例として、ＡＳＩＣやＦＰＧＡなどの集積回路、またはＣＰＵやＭＰＵなどを適用する。また、早引きテーブルタグ１１ａ、早引きテーブルキャッシュ１３ｂとは、半導体メモリ等の記憶装置に記憶される情報である。【０１５３】
［ＮＡＮＤコントローラ６ｅの効果］
このように、ＮＡＮＤコントローラ６ｅは、インデックスと、インデックスを含む上位アドレスを含む論理アドレスについての早引きテーブルを記憶するページを示す物理アドレスとを対応付けた早引きテーブルタグ１１ａを有する。また、ＮＡＮＤコントローラ６ｅは、早引きテーブル１３ａの一部を早引きテーブルキャッシュ１３ｂとして記憶する。【０１５４】
そして、ＮＡＮＤコントローラ６ｅは、読み出し対象の論理アドレスのインデックスと対応付けられた物理アドレスを早引きテーブルタグ１１ａから取得する。その後、ＮＡＮＤコントローラ６ｅは、取得した物理アドレスを用いて、早引きテーブル１３ａの一部を早引きテーブルキャッシュ１３ｂとして保持する。また、ＮＡＮＤコントローラ６ｅは、保持した早引きテーブルキャッシュ１３ｂから、読み出し対象の論理アドレスの上位ビットと対応付けられた物理アドレスの上位ビットを取得する。【０１５５】
このように、ＮＡＮＤコントローラ６ｅは、早引きテーブル１３ａを記憶デバイス７ａ〜１０ａ上に保持し、早引きテーブル１３ａの一部を保持する。このため、ＮＡＮＤコントローラ６ｅは、記憶デバイス７ａ〜１０ａの容量が増大し、アドレス変換テーブルの容量が増大する結果、早引きテーブル１３ａの容量が増大した場合であっても、早引きテーブルを用いたアドレス変換を行える。【０１５６】
また、早引きテーブル１３ａの大きさは、アドレス変換テーブル２０のサイズの例えば１００分の１から１０００分の１程度に収めることができる。この結果、ＮＡＮＤコントローラ６ｅは、早引きテーブル１３ａの一部を早引きテーブルキャッシュ１３ｂとして保持した場合であっても早引きテーブルのキャッシュヒット率をあまり下げない。このため、ＮＡＮＤコントローラ６ｅは、アドレス変換に要する時間が増大するのを防ぐことができる。
【実施例５】
【０１５７】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例５として本発明に含まれる他の実施例を説明する。【０１５８】
（１）整列処理の単位について
上述したＮＡＮＤコントローラ６ａは、記憶デバイス７ａ〜１０ａの物理ブロックにあわせた論理ブロックごとにデータの整列処理を行った。しかし、実施例はこれに限定されるものではない。すなわち、ＮＡＮＤコントローラ６ａは、論理ブロックの大きさを記憶デバイス７ａ〜１０ａの物理ブロックにあわせる必要はなく、任意の大きさの論理ブロックについて、データの整列処理を実行することができる。【０１５９】
例えば、ＮＡＮＤコントローラ６ａは、数ページ程度の物理ブロックよりも小さな連続する論理ページを整列処理の単位としてもよい。また、ＮＡＮＤコントローラ６ａは、複数の物理ブロックほどの大きさを持つ論理ブロック単位でデータの整列処理を実行することもできる。すなわち、ＮＡＮＤコントローラ６ａは、論理アドレスを論理ブロックアドレスと論理ページアドレスとに分割する際に、任意のビット数で分割を行うことができる。【０１６０】
（２）記憶デバイスの寿命について
上述したＮＡＮＤコントローラ６ａ〜６ｅは、整列処理を実行するにあたり、データの移動にともなうデータの書き込み処理を実行する。ここで、記憶デバイス７ａ〜１０ａの寿命を考慮した場合は、書き込み処理の回数を削減するため、過剰な整列を行わないようにするのが望ましい。特に、ファイルシステムが実際には使用していないデータに対する整列処理を行わないようにするのが望ましい。【０１６１】
そこで、ＮＡＮＤコントローラ６ａ〜６ｅは、Ｔｒｉｍと呼ばれるデータ無効通知コマンドを考慮した整列処理を行っても良い。例えば、ＮＡＮＤコントローラ６ａ〜６ｅは、Ｔｒｉｍの対象となったページを管理対象から除外することで、実際には使用していないデータに対する整列処理を回避するようにしてもよい。【０１６２】
（３）早引きテーブルとアドレス変換テーブルとについて
上述したＮＡＮＤコントローラ６ａは、論理アドレスを受信すると、早引きテーブル１３を確認し、論理アドレスに含まれる論理ブロックアドレスに対応するエントリの登録フラグが「１」である場合には、早引きテーブル１３を用いたアドレス変換を行った。また、ＮＡＮＤコントローラ６ａは、対応するエントリの登録フラグが「０」である場合は、アドレス変換テーブルを用いたアドレス変換処理を実行した。【０１６３】
しかし、実施例はこれに限定されるものではない。例えば、ＮＡＮＤコントローラ６ａは、早引きテーブル１３を用いたアドレス変換処理とアドレス変換テーブルを用いたアドレス変換処理とを平行して実行し、いずれかの処理においてアドレス変換が完了した場合には、他方の処理を中止してもよい。【０１６４】
（４）プログラム
上記の実施例で説明した各種の処理は、予め用意された制御プログラムをＮＡＮＤコントローラ内の演算処理装置が実行することで実現してもよい。そこで、以下では、図２４を用いて、上記のＮＡＮＤコントローラ６ａと同様の機能を有する制御プログラムを実行するコンピュータの一例について説明する。【０１６５】
図２４は、制御プログラムを実行するＮＡＮＤコントローラの一例について説明する図である。図２４に示すように、ＮＡＮＤコントローラ６ｆは、ＣＰＵ（Central  Processing  Unit）３０、デバイスアクセス制御部３５を有する。また、ＣＰＵ３０は、メモリデバイス６ｇと接続される。【０１６６】
メモリデバイス６ｇには、変換テーブルタグ１１、アドレス変換テーブルキャッシュ１２、早引きテーブル１３、制御プログラム３６があらかじめ記憶される。また、記憶デバイス７ａ〜１０ａには、アドレス変換テーブル２０、およびユーザデータ２１があらかじめ格納されている。【０１６７】
ここで、ＣＰＵ３０がメモリデバイス６ｇから制御プログラム３６を読み出して展開して実行することにより、制御プログラム３６は、以下の様に機能する。すなわち、制御プログラム３６は、アドレス変換制御プロセス３１、リクエスト調停プロセス３２、データ整列制御プロセス３３、ガベージコレクション制御プロセス３４として機能する。ここで、アドレス変換制御プロセス３１、リクエスト調停プロセス３２、データ整列制御プロセス３３は、図６に示すアドレス変換制御部１６、リクエスト調停部１５、データ整列制御部１８と同様の機能を発揮する。また、ガベージコレクション制御プロセス３４は、図６に示すガベージコレクション制御部１９と同様の機能を発揮する。【０１６８】
なお、上記の制御プログラム３６については、必ずしも最初からメモリデバイス６ｇに記憶させておく必要はない。例えば、フレキシブルディスク、いわゆるＦＤ（Flexible  Disk）、ＣＤ（Compact  Disk）−ＲＯＭ、ＤＶＤ（Digital  Versatile  Disk）、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。【０１６９】
そして、ＮＡＮＤコントローラ６ｆが各ＣＰＵ３ａ、３ｂを解して、これらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮ（Wide  Area  Network）などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【０１７０】
１  情報処理装置
２ａ、２ｂ  メモリ
３ａ、３ｂ  ＣＰＵ
４  Ｉ／Ｏハブ
５ａ、５ｂ  ＳＳＤ
６ａ〜６ｆ  ＮＡＮＤコントローラ
６ｇ  メモリデバイス
７ａ〜１０ａ、７ｂ〜１０ｂ  記憶デバイス
１１  変換テーブルタグ
１１ａ  早引きテーブルタグ
１２  アドレス変換テーブルキャッシュ
１３、１３ａ  早引きテーブル
１３ｂ  早引きテーブルキャッシュ
１４  リクエスタインタフェース部
１５  リクエスト調停部
１６、１６ａ、１６ｂ  アドレス変換制御部
１７  デバイスアクセス制御部
１８、１８ａ  データ整列制御部
１９  ガベージコレクション制御部
２０  アドレス変換テーブル
２１  ユーザデータ
３０  ＣＰＵ
３１  アドレス変換制御プロセス
３２  リクエスト調停プロセス
３３  データ整列制御プロセス
３４  ガベージコレクション制御プロセス
【図１】
2014147768.tif 000003
【図２】
2014147768.tif 000004
【図３】
2014147768.tif 000005
【図４】
2014147768.tif 000006
【図５】
2014147768.tif 000007
【図６】
2014147768.tif 000008
【図７】
2014147768.tif 000009
【図８】
2014147768.tif 000010
【図９】
2014147768.tif 000011
【図１０】
2014147768.tif 000012
【図１１】
2014147768.tif 000013
【図１２】
2014147768.tif 000014
【図１３】
2014147768.tif 000015
【図１４】
2014147768.tif 000016
【図１５】
2014147768.tif 000017
【図１６】
2014147768.tif 000018
【図１７】
2014147768.tif 000019
【図１８】
2014147768.tif 000020
【図１９】
2014147768.tif 000021
【図２０】
2014147768.tif 000022
【図２１】
2014147768.tif 000023
【図２２】
2014147768.tif 000024
【図２３】
2014147768.tif 000025
【図２４】
2014147768.tif 000026
【手続補正書】
【提出日】平成28年9月7日(2016.9.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
記憶領域を複数有するブロックを論理的に示す論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第１の記憶部と、
１つの論理ブロック番号を選択する選択部と、
前記選択部が選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を前記第１の記憶部が記憶する変換テーブルから識別する識別部と、
前記識別部が識別した物理番号が示す記憶領域のデータを、１つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させる移動部と、
前記移動部が前記データを移動させたブロックの物理ブロック番号と、前記選択部が選択した論理ブロック番号とを対応付けた早引きテーブルを記憶する第２の記憶部と、
読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第２の記憶部が記憶する早引きテーブルから取得する取得部と、
前記取得部が取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す読み出し部と
を有することを特徴とする制御装置。
【請求項２】
前記記憶領域を論理的に示す論理アドレスの上位ビットを前記論理ブロック番号とし、前記論理アドレスの下位ビットを前記論理ページ番号とし、前記記憶領域を物理的に示す物理アドレスの上位ビットを前記物理ブロック番号とし、前記物理アドレスの下位ビットを前記物理ページ番号とすることを特徴とする請求項１に記載の制御装置。
【請求項３】
使用されていない記憶領域を含むブロックに格納されたデータを他のブロックに複製して、前記ブロック内のデータを消去する消去部を有し、
前記移動部は、前記消去部がデータを消去したブロックに対し、前記データを移動させることを特徴とする請求項１または２に記載の制御装置。
【請求項４】
複数の論理ブロック番号を含むグループごとに、前記データの読み出し要求の数と、前記データの書き込み要求の数とを計数する計数部を有し、
前記選択部は、前記計数部が計数した前記読み出し要求の数から前記書き込み要求の数を減算した数が最も多いグループに含まれる論理ブロック番号を選択することを特徴とする請求項１または２に記載の制御装置。
【請求項５】
前記第１の記憶部は、記憶装置が記憶する前記変換テーブルの一部を記憶し、
前記第２の記憶部は、前記移動部が前記データを移動させたブロックの物理ブロック番号と、当該ブロックに前記移動部がデータを移動させたか否かを示すフラグと、前記選択部が選択した論理ブロック番号とを対応付けた早引きテーブル、および、当該論理ブロック番号を含む論理番号を物理番号に変換する変換テーブルが記憶された領域を示す物理番号とを対応付けた変換テーブルタグを記憶し
前記移動部は、前記データを移動させると、当該データを移動させたブロックの物理ブロック番号と対応付けて前記データを移動させた旨を示すフラグを前記早引きテーブルに格納し、
前記取得部は、読み出し対象の論理番号に含まれる論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられている場合は、当該論理ブロック番号と対応付けられた物理ブロック番号を取得し、該論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられていない場合は、当該論理ブロック番号に対応付けられた物理番号が示す記憶領域に格納された変換テーブルを前記第１の記憶部に格納し、
前記読み出し部は、前記読み出し対象の論理番号に含まれる論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられていない場合は、前記第１の記憶部に格納された変換テーブルを用いて、読み出し対象の論理番号に対応付けられた物理番号を取得し、当該取得した物理番号が示す記憶領域からデータの読み出しを行うことを特徴とする請求項１または２に記載の制御装置。
【請求項６】
前記早引きテーブルが記憶された記憶領域を示す物理アドレスと、当該物理アドレスが示す記憶領域に格納された早引きテーブルに格納されている論理アドレスの上位ビットであるインデックスとを対応付けて記憶する第３の記憶部を有し、
前記第２の記憶部は、記憶装置が記憶する前記早引きテーブルの一部を記憶し、
前記取得部が、読み出し対象の論理アドレスの上位ビットのインデックスと対応付けられた物理アドレスを前記第３の記憶部から取得し、当該取得した物理アドレスが示す記憶領域から読み出した早引きテーブルを前記第２の記憶部に格納し、当該第２の記憶部に格納した早引きテーブルから、前記読み出し対象の論理アドレスの上位ビットと対応付けられた物理アドレスの上位ビットを取得することを特徴とする請求項２に記載の制御装置。
【請求項７】
記憶装置からデータを読み出す制御装置が有するコンピュータに、
記憶領域を複数有するブロックを論理的に示す論理ブロック番号を１つ選択し、
論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第１の記憶部から、前記選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を識別し、
前記識別した物理番号が示す記憶領域のデータを、１つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させ、
前記データを移動させたブロックの物理ブロック番号と、前記選択した論理ブロック番号とを対応付けて第２の記憶部に記憶させ、
読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第２の記憶部から取得し、
前記取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す
処理を実行させることを特徴とする制御プログラム。
【請求項８】
記憶装置からデータを読み出す制御装置が、
記憶領域を複数有するブロックを論理的に示す論理ブロック番号を１つ選択し、
論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第１の記憶部から、前記選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を識別し、
前記識別した物理番号が示す記憶領域のデータを、１つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させ、
前記データを移動させたブロックの物理ブロック番号と、前記選択した論理ブロック番号とを対応付けて第２の記憶部に記憶させ、
読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第２の記憶部から取得し、
前記取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す
処理を実行することを特徴とする制御方法。
【国際調査報告】
2014147768.tif 000027
2014147768.tif 000028