(57)【要約】【課題】処理性能及び資源効率を向上させた情報処理装置、記憶装置制御回路及び記憶装置の制御方法を提供する。【解決手段】チャネル８ａ〜８ｆは、ＮＡＮＤフラッシュメモリ７ａ〜７ｆを搭載する。データ処理部１４ａ〜１４ｃは、ＣＰＵ４からのデータの処理命令に応じて、チャネル８ａ〜８ｆを用いてＮＡＮＤフラッシュメモリ７ａ〜７ｆに対してデータ処理を行う。構成レジスタ１１は、チャネル８ａ〜８ｆの処理性能を基に分けられたグループ構成及び各グループに含まれるチャネル８ａ〜８ｆを用いてデータ処理を行うデータ処理部１４ａ〜１４ｃの割り当てを記憶する。グループ識別部１３は、ＣＰＵ４からのデータの処理命令を基に、構成レジスタ１１が記憶するグループの中からデータ処理を実行させるグループを選択し、選択したグループに割り当てられたデータ処理部１４ａ〜１４ｃに対してデータ処理を行わせる。【選択図】図２
2015088071.tif 000002
【特許請求の範囲】
【請求項１】
演算処理部と、
記憶装置を搭載した複数のチャネルと、
前記演算処理部からのデータの処理命令に応じて、前記チャネルを用いて前記記憶装置に対してデータ処理を行う複数のデータ処理部と、
前記チャネルの処理性能を基に分けられた前記チャネルのグループ構成及び各前記グループに含まれる前記チャネルを用いてデータ処理を行う前記データ処理部の割り当てを記憶するグループ管理部と、
前記演算処理部からのデータの処理命令を基に、前記グループ管理部が記憶するグループの中からデータ処理を実行させるグループを選択し、選択したグループに割り当てられた前記データ処理部に対してデータ処理を行わせる制御部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記演算処理部は、前記グループ管理部が記憶するグループの中からデータ処理の対象とするグループを決定し、決定したグループを指定する前記処理命令を生成し、
前記制御部は、前記演算処理部から前記処理命令を受信し、受信した処理命令により指定されたグループをデータ処理を実行させるグループとする
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記演算処理部は、データ処理の優先度を決定し、前記優先度を示す情報を含む前記処理命令を生成し、
前記グループ管理部は、各前記グループに属する前記チャネルの性能情報を記憶し、
前記制御部は、前記演算処理部から前記処理命令を受信し、前記グループ管理部が記憶する性能情報及び前記処理命令で示される前記優先度を基に、データ処理を実行させるグループを選択する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記演算処理部は、付随情報を含む前記処理命令を生成し、
前記制御部は、前記付随情報を基にデータ処理を実行させるグループを選択する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記記憶装置の性能を基に前記チャネルの処理性能を決定し、前記チャネルを複数のグループに分け前記グループ管理部に記憶させるグループ構成部をさらに有することを特徴とする請求項１〜４のいずれか一つに記載の情報処理装置。
【請求項６】
前記記憶装置は、自己の性能情報を格納しており、
前記グループ構成部は、各前記記憶装置が記憶する性能情報を取得する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記グループ管理部は、重複を許して前記チャネルを複数のグループに分けたグループ構成を記憶することを特徴とする請求項１〜６のいずれか一つに記載の情報処理装置。
【請求項８】
記憶装置を搭載した複数のチャネルと、
前記チャネルを用いて前記記憶装置に対してデータ処理を行う複数のデータ処理部と、
前記チャネルの処理性能を基に分けられた前記チャネルのグループ構成及び各前記グループに含まれる前記チャネルを用いてデータ処理を行う前記データ処理部の割り当てを記憶するグループ管理部と、
データの処理命令を基に、前記グループ管理部が記憶するグループの中からデータ処理を実行させるグループを選択し、選択したグループに割り当てられた前記データ処理部に対してデータ処理を行わせる制御部と
を備えたことを特徴とする記憶装置制御回路。
【請求項９】
記憶装置を搭載した複数のチャネルの処理性能を基に前記チャネルを複数のグループに分け、
前記チャネルを用いて前記記憶装置に対するデータ処理を行う複数のデータ処理回路の中から、各グループに含まれる前記チャネルを用いてデータ処理を行うデータ処理回路を割り当て、
データの処理命令を基に、前記グループの中からデータ処理を実行させるグループを選択し、
選択したグループに割り当てられた前記データ処理回路に対してデータ処理を行わせる
ことを特徴とする記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、記憶装置制御回路及び記憶装置の制御方法に関する。
【背景技術】
【０００２】
現在の情報処理装置では、外部記憶装置としてDynamic  Random  Access  Memory（ＤＲＡＭ）やＮＡＮＤフラッシュメモリなどのメモリデバイスを用いたシステムが広く見られる。例えば、複数のＤＲＡＭで構成されたDual  Inline  Memory  Module（ＤＩＭＭ）をメモリに使用し、複数のＮＡＮＤデバイスで構成されたSolid  State  Drive（ＳＳＤ）をストレージに使用した情報処理装置等がある。
【０００３】
このようなメモリデバイスを制御するメモリコントローラは、いくつかのメモリデバイスが直列に接続されたチャネルを複数持つ。情報処理装置は、チャネルに並列的にアクセスすることでメモリデバイスに対する読み込みや書き込みの処理の性能を向上させている。
【０００４】
また、不揮発性メモリをストレージとして使用する場合、耐障害性を向上させるためRedundant  Arrays  of  Inexpensive  Disks（ＲＡＩＤ）と呼ばれるデータ保護技術が使用されることがある。
【０００５】
メモリコントローラは、Central  Processing  Unit（ＣＰＵ）などから書き込み要求を受信すると、アドレス変換やＲＡＩＤのパリティ演算などの処理を行う。その後、メモリコントローラは、データ及びパリティ書き込み対象のメモリデバイスを持つチャネルに書き込み要求とデータとを転送する。
【０００６】
一方、メモリコントローラは、ＣＰＵなどから読み出し要求を受信すると、アドレス変換等の処理を行う。その後、メモリコントローラは、データが格納されているメモリデバイスを有するチャネルに読み出し要求を転送し、該当メモリデバイスからデータを読み出してホストへ送信する。各チャネル制御部は、並列動作が可能であるので、書き込み及び読み出しを各チャネルに分散して行うことでメモリデバイスへのアクセスのスループットを向上することができる。
【０００７】
さらに、今日では、コストパフォーマンスを向上させるため、複数種類のメモリコントローラ及び記憶装置を統合して、記憶装置を構成することが行われている。例えば、高速な読み書きが可能だが高価なＳＳＤと、読み書きは低速だが安価なハードディスクドライブを組み合わせてストレージシステムを構成することが行われる。このような場合、メモリデバイス間の性能差を吸収するため、データ毎のアクセス頻度などの情報を基に、各メモリデバイスへのデータ配置を最適化する技術が提案されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−２１３７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、今日ではメモリデバイスの大容量化に伴い１つのメモリコントローラが管理する記憶容量が増加してきている。そのため、データ毎のアクセス頻度などの情報を基に、各メモリデバイスへのデータ配置を最適化する技術を用いた場合、コントローラ単位の分散制御では粒度が粗いため、柔軟な使用効率の最適化を実現することは困難である。
【００１０】
そこで、メモリコントローラのチャネル単位で処理性能を異ならせ、性能要件のバランスを取ることが考えられる。しかし、１つのメモリコントローラ内でチャネル毎に性能に偏りを持たせた場合、処理速度の低いチャネルへの要求がメモリコントローラ内に滞留して、全チャネル共通の資源を圧迫するおそれがある。この場合、全体の処理速度が低下してしまうおそれがある。
【００１１】
開示の技術は、上記に鑑みてなされたものであって、処理性能及び資源効率を向上させた情報処理装置、記憶装置制御回路及び記憶装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示する情報処理装置は、一つの態様において、演算処理部を有する。さらに、複数のチャネルは、記憶装置を搭載する。複数のデータ処理部は、前記演算処理部からのデータの処理命令に応じて、前記チャネルを用いて前記記憶装置に対してデータ処理を行う。グループ管理部は、前記チャネルの処理性能を基に分けられた前記チャネルのグループ構成及び各前記グループに含まれる前記チャネルを用いてデータ処理を行う前記データ処理部の割り当てを記憶する。制御部は、前記演算処理部からのデータの処理命令を基に、前記グループ管理部が記憶するグループの中からデータ処理を実行させるグループを選択し、選択したグループに割り当てられた前記データ処理部に対してデータ処理を行わせる。
【発明の効果】
【００１３】
本願の開示する情報処理装置、記憶装置制御回路及び記憶装置の制御方法の一つの態様によれば、処理性能及び資源効率を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、情報処理装置の概略構成図である。
【図２】図２は、実施例１に係るＮＡＮＤコントローラのブロック図である。
【図３】図３は、構成レジスタによるグループ構成の保持方法の一例の図である。
【図４】図４は、構成レジスタによるグループ構成の保持方法の他の例の図である。
【図５】図５は、ＣＰＵ側でグループ選択を行う場合を説明するための図である。
【図６】図６は、グループ構成の一例を表す図である。
【図７】図７は、グループ構成の他の例を表す図である。
【図８】図８は、実施例１に係るＮＡＮＤコントローラによるデータ処理のフローチャートである。
【図９】図９は、変形例に係るＮＡＮＤコントローラのブロック図である。
【図１０】図１０は、ＮＡＮＤコントローラ側でグループ選択を行う場合の一例を説明するための図である。
【図１１】図１１は、ＮＡＮＤコントローラ側でグループ選択を行う場合の他の例を説明するための図である。
【図１２】図１２は、実施例３に係るＮＡＮＤコントローラのブロック図である。
【図１３】図１３は、デバイス情報テーブルの一例の図である。
【図１４】図１４は、実施例３に係るグループ構成の設定のフローチャートである。
【図１５】図１５は、実施例４に係る情報処理装置によるグループ構成の一例を表す図である。
【図１６】図１６は、実施例４に係るグループ構成の設定のフローチャートである。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する情報処理装置、記憶装置制御回路及び記憶装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、記憶装置制御回路及び記憶装置の制御方法が限定されるものではない。
【実施例１】
【００１６】
図１は、情報処理装置の概略構成図である。情報処理装置１は、複数のメモリ２ａ及び２ｂ、複数のＣＰＵ４ａ及び４ｂ、Input  Output（Ｉ／Ｏ）ハブ５、並びに、複数のＳＳＤ６ａ及び６ｂを有する。
【００１７】
メモリ２ａ及び２ｂは、複数のＤＩＭＭ３を有する。そして、ＣＰＵ４ａは、図示していないがメモリ２ａを制御するメモリコントローラを有する。また、ＣＰＵ４ｂは、メモリ２ｂを制御するメモリコントローラを有する。
【００１８】
ＳＳＤ６ａは、ＮＡＮＤコントローラ１０ａ及びＮＡＮＤデバイスである複数のＮＡＮＤフラッシュメモリ７を有する。また、ＳＳＤ６ｂは、ＮＡＮＤコントローラ１０ｂ及び複数のＮＡＮＤフラッシュメモリ７を有する。なお、ＳＳＤ６ａとＳＳＤ６ｂとは同様の機能を有する。また、ＮＡＮＤコントローラ１０ａとＮＡＮＤコントローラ１０ｂとは同様の機能を有する。以下の説明では、ＳＳＤ６ｂ及びＮＡＮＤコントローラ１０ｂと、ＳＳＤ６ａ及びＮＡＮＤコントローラ１０ａとを区別しない場合、それぞれ、「ＳＳＤ６」、「ＮＡＮＤコントローラ１０」という。
【００１９】
各メモリ２ａ及び２ｂは、各ＣＰＵ４ａ及び４ｂが演算処理に用いるデータを記憶する記憶装置である。また、各ＣＰＵ４ａ及び４ｂは、メモリ２ａ及び２ｂが有するＤＩＭＭ３に格納されたデータを用いて、各種演算処理を行う演算処理装置である。例えば、ＣＰＵ４ａ及び４ｂは、ＮＵＭＡ（Non-Uniform  Memory  Access）の技術を用いて、メモリ２ａ及び２ｂが有するＤＩＭＭ３に格納されたデータを取得し、取得したデータを用いて演算処理を実行する。
【００２０】
また、ＣＰＵ４ａ及び４ｂは、Ｉ／Ｏハブ５を介して、各ＳＳＤ６ａ及び６ｂが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。詳細には、ＣＰＵ４ａは、ＳＳＤ６ａに対し、データの読出し要求や書込み要求を発行し、各ＮＡＮＤフラッシュメモリ７からデータの読出しや書込みを行う。例えば、ＣＰＵ４ａは、ＳＳＤ６ａに対し、読出し対象となるデータを指定する論理アドレスが格納された読出し要求を発行する。また、ＣＰＵ４ａは、データの書込み先を指定する論理アドレスと、書込み対象となるデータとが格納された書込み要求を発行する。ＣＰＵ４ａ及び４ｂは、「演算処理部」の一例にあたる。
【００２１】
ＮＡＮＤフラッシュメモリ７は、各種データを記憶する不揮発性メモリである。詳細には、ＮＡＮＤフラッシュメモリ７は、データの記憶領域である物理ページを複数有し、物理ページ単位でデータの書込みを行う。また、ＮＡＮＤフラッシュメモリ７は、複数の物理ページを有する物理ブロックを複数有し、ブロック単位でデータの消去を行う。ここで、１つの物理ページは、例えば、８キロバイトの記憶容量を有し、１つの物理ブロックは、例えば、１２８の物理ページを有する。このＮＡＮＤフラッシュメモリ７が、「記憶装置」の一例にあたる。
【００２２】
ＮＡＮＤコントローラ１０は、各ＮＡＮＤフラッシュメモリ７に対してアクセスし、データの読出しや書込みを行う。例えば、ＮＡＮＤコントローラ１０は、データが記憶された記憶領域を各ＣＰＵ４ａ及び４ｂが指定する際に用いる論理アドレスと、データが格納されたＮＡＮＤフラッシュメモリ７の記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。
【００２３】
そして、ＮＡＮＤコントローラ１０は、読出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読出しを行う。その後、ＮＡＮＤコントローラ１０は、Ｉ／Ｏハブ５を介して、読出したデータをＣＰＵ４ａ又は４ｂに送信する。
【００２４】
さらに、図２を参照して、本実施例に係るＮＡＮＤコントローラ１０について詳細に説明する。図２は、実施例１に係るＮＡＮＤコントローラのブロック図である。図２では、ＮＡＮＤデバイスとしてＮＡＮＤフラッシュメモリ７ａ〜７ｆを例に説明する。
【００２５】
本実施例に係るＮＡＮＤコントローラ１０は、構成レジスタ１１、通信インタフェース１２、グループ識別部１３、データ処理部１４ａ〜１４ｃ、チャネル制御部１５ａ〜１５ｆを有している。
【００２６】
ここで、本実施例では、ＮＡＮＤコントローラ１０は、ＣＰＵ４から命令やデータの処理要求を受ける場合で説明するが、ＮＡＮＤコントローラ１０は、情報処理装置１の他の各部から命令やデータを受けても良い。ＮＡＮＤコントローラ１０へ命令や処理要求を行う情報処理装置１の各部は、ホストデバイスと呼ばれる場合がある。
【００２７】
また、チャネル制御部１５ａ〜１５ｆとＮＡＮＤフラッシュメモリ７ａ〜７ｆとをそれぞれ結ぶ伝送経路は、チャネル８ａ〜８ｆとして表す。さらに、以下では、チャネル制御部１５ａ〜１５ｆをそれぞれ区別しない場合には、チャネル制御部１５と表す場合がある。また、ＮＡＮＤフラッシュメモリ７ａ〜７ｆをそれぞれ区別しない場合には、単にＮＡＮＤフラッシュメモリ７と表す場合がある。また、チャネル８ａ〜８ｆをそれぞれ区別しない場合には、チャネル８と表す場合がある。
【００２８】
ここで、本実施例では、３つのデータ処理部１４ａ〜１４ｃ及び６つのチャネル８ａ〜８ｆを有する場合で説明するが、データ処理部及びチャネルの数はこれに限らない。
【００２９】
また、データ処理部１４ａ〜１４ｃは、いずれも同じ構成を有するが、図２では、データ処理部１４ａのみ詳細のブロックを示している。以下では、データ処理部１４ａ〜１４ｃをそれぞれ区別しない場合、単にデータ処理部１４という。
【００３０】
構成レジスタ１１は、ユーザによって決定されたグループ構成を記憶する。また、構成レジスタ１１は、各グループがデータ処理部１４ａ〜１４ｃのいずれに割り当てられているかを記憶する。
【００３１】
具体的には、構成レジスタ１１は、ＣＰＵ４からの書き込み命令又は読み込み命令を受けて、命令にしたがい書き込み又は読み出しを行う。例えば、操作者は、情報処理装置１で動作する管理ソフトウェアやデバッグ用インタフェースを用いてＣＰＵ４に対してグループの構成を書き込む指示を行う。そして、構成レジスタ１１は、操作者からの指示によりＣＰＵ４が送信した書き込み命令にしたがい、グループ構成を書き込むことで記憶する。
【００３２】
例えば、構成レジスタ１１は、図３に示すような形式でグループ構成を記憶する。図３は、構成レジスタによるグループ構成の保持方法の一例の図である。本実施例では、グループ構成が、３つのデータ処理部１４ａ〜１４ｃによって生成可能なグループの最大数である３グループである場合で説明する。ただし、グループ構成は、各グループに１つ以上のデータ処理部を割り当てることができればよく、データ処理部の数以下であればグループの数に制限はない。
【００３３】
構成レジスタ１１は、図３に示すようにグループ毎に各チャネル８ａ〜８ｆのいずれが属しているかを表す情報を保持することでグループ構成を記憶している。図３では、各チャネルは属するグループに対応する欄をＯｎにすることで、そのチャネルが属するグループを表す。例えば、チャネル８ａは、グループ＃１に対応する欄がＯｎになっており、グループ＃２及び＃３に対応する欄はＯｆｆになっている。すなわち、チャネル８ａは、グループ＃１に属している。ここで、本実施例では、グループ＃１がデータ処理部１４ａに割り当てられ、グループ＃２がデータ処理部１４ｂに割り当てられ、グループ＃３がデータ処理部１４ｃに割り当てられている。この構成レジスタ１１が、「グループ管理部」の一例にあたる。
【００３４】
ただし、図３は、グループ構成の保持方法の一例であり、各チャネルがどのグループに属しているか特定できれば、構成レジスタ１１の情報の保持の仕方は特に限定は無い。例えば、図４は、構成レジスタによるグループ構成の保持方法の他の例の図である。図４に示すように、構成レジスタ１１は、グループ毎に属するチャネルの識別情報をそれぞれのグループに対応させて列挙することでグループ構成を記憶してもよい。
【００３５】
本実施例では、構成レジスタ１１の記憶するグループ構成は、全チャネルが重複することなくいずれかのグループに属するように設定される。また、グループの数はデータ処理部１４ａ〜１４ｃの数以下であり、本実施例では、グループの最大数は３である。以下では、グループの最大数である３を全グループ数と呼ぶ場合がある。
【００３６】
通信インタフェース１２は、ＣＰＵ４とＮＡＮＤコントローラ１０が有する各部との間の通信を仲介するインタフェースである。実際には、通信インタフェース１２を介して、ＣＰＵ４とＮＡＮＤコントローラ１０の各部は通信を行うが、以下では説明の都合上、通信インタフェース１２の仲介を省略して説明する場合がある。
【００３７】
グループ識別部１３は、グループ構成を構成レジスタ１１から受信する。また、グループ識別部１３は、ＣＰＵ４から読み出し又は書き込みといったデータの処理要求を受ける。本実施例では、後述するように、ＣＰＵ４は、データの処理要求の中にその処理要求の宛先のグループの情報を格納させている。
【００３８】
グループ識別部１３は、構成レジスタ１１から受信した各グループに割り当てられたデータ処理部１４ａ〜１４ｃの情報を用いて、処理要求で指定された宛先のグループに対応するデータ処理部１４を、データ処理部１４ａ〜１４ｃの中から選択する。そして、グループ識別部１３は、受信したデータの処理要求を選択したデータ処理部１４へ送信する。
【００３９】
その後、グループ識別部１３は、処理要求の応答をＣＰＵ４へ返す。例えば、処理要求がデータの書き込み要求の場合、グループ識別部１３は、データ処理要求のデータ処理部１４への転送完了応答をＣＰＵ４へ返す。また、処理要求が読み出し要求の場合、グループ識別部１３は、処理要求の応答として、読み出し要求で指定されたデータを後述するデータバッファ１４３から受信する。そして、グループ識別部１３は、受信したデータをＣＰＵ４へ送信することで、処理要求に対する応答とする。このグループ識別部１３が、「制御部」の一例にあたる。
【００４０】
データ処理部１４は、リクエストバッファ１４１、アドレス変換制御部１４２、データバッファ１４３、ＲＡＩＤ制御部１４４及びチャネル選択部１４５を有している。
【００４１】
リクエストバッファ１４１は、自己が搭載されているデータ処理部１４に対応するグループ宛のデータの処理要求の入力をグループ識別部１３から受ける。リクエストバッファ１４１は、受信した処理要求を蓄積していく。そして、アドレス変換制御部１４２が処理を行っていなければ、リクエストバッファ１４１は、一番古い処理要求をアドレス変換制御部１４２へ出力する。
【００４２】
アドレス変換制御部１４２は、データの処理要求の入力をリクエストバッファ１４１から受ける。アドレス変換制御部１４２は、自己が搭載されているデータ処理部１４に接続されているチャネル上のＮＡＮＤフラッシュメモリ７のアドレスに、処理要求で指定されているアドレスを変換する。そして、アドレス変換制御部１４２は、変換後のアドレス及び処理要求をチャネル選択部１４５へ出力する。
【００４３】
データバッファ１４３は、処理要求がデータの書き込み要求の場合、自己が搭載されているデータ処理部１４に対応するグループ宛のデータの処理要求の対象となっているデータをグループ識別部１３から受ける。データバッファ１４３は、受信したデータを蓄積していく。そして、ＲＡＩＤ制御部１４４が処理を行っていなければ、データバッファ１４３は、一番古いデータをＲＡＩＤ制御部１４４へ出力する。
【００４４】
また、処理要求がデータの読み出し要求の場合、データバッファ１４３は、データの入力をＲＡＩＤ制御部１４４から受ける。そして、データバッファ１４３は、受信したデータを蓄積していく。その後、グループ識別部１３が処理を実行可能な状態であれば、一番古いデータをグループ識別部１３へ出力する。
【００４５】
ＲＡＩＤ制御部１４４は、処理要求が書き込み要求の場合、データの入力をデータバッファ１４３から受ける。そして、ＲＡＩＤ制御部１４４は、データの宛先のＮＡＮＤフラッシュメモリ７のＲＡＩＤ構成に合わせてデータに対してＲＡＩＤ処理を行う。例えば、ＲＡＩＤ５の場合、ＲＡＩＤ制御部１４４は、受信したデータを用いてパリティ計算を行う。その後、ＲＡＩＤ制御部１４４は、ＲＡＩＤ処理を施したデータをチャネル選択部１４５へ出力する。
【００４６】
また、処理要求が読み出し要求の場合、ＲＡＩＤ制御部１４４は、データの入力をチャネル選択部１４５から受ける。そして、ＲＡＩＤ制御部１４４は、データの再構築等のＲＡＩＤ処理を行う。その後、ＲＡＩＤ制御部１４４は、ＲＡＩＤ処理を施したデータをデータバッファ１４３へ出力する。
【００４７】
チャネル選択部１４５は、グループ構成を構成レジスタ１１から受信する。そして、チャネル選択部１４５は、自己が搭載されたデータ処理部１４が割り当てられたグループに属するチャネルに接続する。ここでは、チャネル選択部１４５が搭載されたデータ処理部１４が割り当てられたグループに属するチャネルが、チャネル８ａ及び８ｂの場合で説明する。
【００４８】
チャネル選択部１４５は、処理要求の入力をアドレス変換制御部１４２から受ける。また、チャネル選択部１４５は、データが書き込み要求の場合、データの入力をＲＡＩＤ制御部１４４から受ける。
【００４９】
そして、チャネル選択部１４５は、チャネル８ａ及び８ｂに接続されているチャネル制御部１５のうち処理要求で指定されたアドレスに応じたＮＡＮＤフラッシュメモリ７を有するチャネルに接続されたチャネル制御部１５へ処理要求を出力する。さらに、処理要求が書き込み要求の場合、チャネル選択部１４５は、処理要求を出力したチャネル制御部１５にデータを出力する。
【００５０】
その後、処理要求がデータの読み出し要求の場合、チャネル選択部１４５は、同じグループに属するチャネル制御部１５がＮＡＮＤフラッシュメモリ７から読み出したデータをチャネル制御部１５から受信する。そして、チャネル選択部１４５は、受信したデータをＲＡＩＤ制御部１４４へ出力する。
【００５１】
チャネル制御部１５は、処理要求で指定されたアドレスを取得する。次に、チャネル制御部１５は、チャネル８ａ及び８ｂ上のＮＡＮＤフラッシュメモリ７の指定されたアドレスに対して処理を行う。
【００５２】
例えば、処理要求が書き込み要求の場合、チャネル制御部１５は、チャネル８ａ及び８ｂ上のＮＡＮＤフラッシュメモリ７の指定されたアドレスに、そのＲＡＩＤ構成に合わせて受信したデータを書き込む。また、処理要求が読み出し要求の場合、チャネル制御部１５は、チャネル８ａ及び８ｂ上のＮＡＮＤフラッシュメモリ７の指定されたアドレスからデータを読み出す。そして、チャネル制御部１５は、ＮＡＮＤフラッシュメモリ７から読み出したデータを自己に接続するデータ処理部１４のチャネル選択部１４５へ出力する。
【００５３】
ＮＡＮＤフラッシュメモリ７ａ〜７ｆは、対応するチャネル８ａ〜８ｆが割り当てられたグループに属するチャネル制御部１５との間でデータの送受信を行う。
【００５４】
以上に説明したように、データ処理部１４は、データの読み出し及び書き込みの処理を行う。そして、上述したように、チャネル８は、データ処理部１４毎にグループ化されている。すなわち、本実施例に係る情報処理装置１は、グループ毎に、それぞれ別個のデータ処理を行うことができる。
【００５５】
ここで、図５を参照して、本実施例に係る処理要求に基づくデータ処理の全体の概要について説明する。図５は、ＣＰＵ側でグループ選択を行う場合を説明するための図である。本実施例では、上述したようにＣＰＵ４により処理要求の対象とするグループが選択される。具体的には、ＣＰＵ４は、構成レジスタ１１からグループの情報を取得する。この時、ＣＰＵ４は、各グループに属するチャネル８の性能の情報などの各グループの性能情報も取得する。そして、ＣＰＵ４は、データの処理要求を生成する際に、各グループの性能情報にしたがいどのグループに対して処理要求を実行させるかを決定する。そして、ＣＰＵ４は、決定したグループを宛先のグループの情報として処理要求に付加する。
【００５６】
この場合、データの処理要求には、図５の処理要求４０１〜４０３のように宛先のグループが格納される。処理要求４０１は、読み出し要求の一例である。処理要求４０１は、グループ＃１からデータを読み出す要求である。また、処理要求４０２及び４０３は、書き込み要求の一例である。処理要求４０２は、グループ＃２に対してデータを書き込む要求である。また、処理要求４０３は、グループ＃３に対してデータを書き込む要求である。
【００５７】
ＮＡＮＤコントローラ１０は、処理要求４０１に格納されている宛先のグループを取得し、処理要求４０１がグループ＃１に対する処理だと判定する。そして、ＮＡＮＤコントローラ１０は、グループ＃１に属するチャネル８上のＮＡＮＤフラッシュメモリ７からデータを読み出す。
【００５８】
また、ＮＡＮＤコントローラ１０は、処理要求４０２に格納されている宛先のグループを取得し、処理要求４０２がグループ＃２に対する処理だと判定する。そして、ＮＡＮＤコントローラ１０は、グループ＃２に属するチャネル８上のＮＡＮＤフラッシュメモリ７に対してデータを書き込む。また、ＮＡＮＤコントローラ１０は、処理要求４０３に格納されている宛先のグループを取得し、処理要求４０３がグループ＃３に対する処理だと判定する。そして、ＮＡＮＤコントローラ１０は、グループ＃３に属するチャネル８上のＮＡＮＤフラッシュメモリ７に対してデータを書き込む。
【００５９】
本実施例のように、ＣＰＵ４などのホストデバイス側でグループを指定する場合、ホストデバイスは各グループを個別の記憶ユニットとして認識しているといえる。
【００６０】
次に、図６及び図７を参照して、各種グループ構成について説明する。図６は、グループ構成の一例の図である。また、図７は、グループ構成の他の例の図である。
【００６１】
例えば、図６に示すように、ＮＡＮＤフラッシュメモリ７ａ〜７ｆのそれぞれの性能が異なる場合がある。図６のＮＡＮＤフラッシュメモリ７ａ〜７ｆの中の括弧内の情報は、それぞれの種別及び速度を表している。例えば、（ＳＬＣ，４００Ｍｂｐｓ）は、種別がSingle  Level  Cellであり、速度が４００Ｍｂｐｓであることを示している。また、ＭＬＣは、種別がMulti  Level  Cellを示している。この場合、ＮＡＮＤフラッシュメモリ７ａと７ｂの性能は同じである。また、ＮＡＮＤフラッシュメモリ７ｃと７ｄの性能は同じである。また、ＮＡＮＤフラッシュメモリ７ｅと７ｆの性能は異なっているが、ＮＡＮＤフラッシュメモリ７ａ〜７ｄとの性能差を比較すると、ＮＡＮＤフラッシュメモリ７ｅと７ｆの性能は同等であるといえる。そこで、同じ性能のＮＡＮＤフラッシュメモリ７を同じグループとして設定した場合、図６のようなグループ構成となる。この場合、ＮＡＮＤフラッシュメモリ７ａ及び７ｂを有するチャネル８ａ及び８ｂが最も性能が良い。また、ＮＡＮＤフラッシュメモリ７ｃ及び７ｄを有するチャネル８ｃ及び８ｄが次に性能が良い。そして、ＮＡＮＤフラッシュメモリ７ｅ及び７ｆを有するチャネル８ｅ及び８ｆが最も性能が劣る。
【００６２】
図６では、チャネル８ａ及び８ｂがグループ９１に属する。そして、グループ９１がグループ＃１として、データ処理部１４ａが割り当てられている。また、チャネル８ｃ及び８ｄがグループ９２に属する。そして、グループ９２がグループ＃２として、データ処理部１４ｂが割り当てられている。また、チャネル８ｅ及び８ｆがグループ９３に属する。そして、グループ９３がグループ＃３として、データ処理部１４ｃが割り当てられている。
【００６３】
例えば、ＣＰＵ４は、処理の重要度に応じてグループを選択する。ＣＰＵ４は、処理の重要度を高レベル、中レベル、低レベルに分ける。そして、処理の重要度が高レベルの場合、ＣＰＵ４は、その処理要求を最も性能が高いチャネル８ａ及び８ｂが属するグループ９１に処理を行わせると決定する。また、処理の重要度が中レベルの場合、ＣＰＵ４は、性能が中位のチャネル８ｃ及び８ｄが属するグループ９２に処理を行わせると決定する。また、処理の重要度が低レベルの場合、ＣＰＵ４は、性能が最も劣るチャネル８ｅ及び８ｆが属するグループ９３に処理を行わせると決定する。
【００６４】
図６において、ＣＰＵ４によりデータの処理要求の宛先としてグループ９１が選ばれた場合、グループ識別部１３によりデータ処理要求はデータ処理部１４ａに送られる。そして、データ処理部１４ａは、チャネル８ａ又は８ｂのどちらかを用いてデータ処理を行う。
【００６５】
また、その他のグループ構成として、図７に示すように、ＮＡＮＤフラッシュメモリ７ａ〜７ｆのＲＡＩＤ構成が異なる場合が考えられる。図７では、ＮＡＮＤフラッシュメモリ７ａ及び７ｂがＲＡＩＤ１を構成している。また、ＮＡＮＤフラッシュメモリ７ｃ〜７ｅがＲＡＩＤ５を構成している。また、ＮＡＮＤフラッシュメモリ７ｆがＲＡＩＤ０を構成している。そこで、同じＲＡＩＤグループに属するＮＡＮＤフラッシュメモリ７を同じグループとして設定した場合、図７のようなグループ構成となる。
【００６６】
図７では、チャネル８ａ及び８ｂがグループ９０１に属する。そして、グループ９０１がグループ＃１として、データ処理部１４ａが割り当てられている。また、チャネル８ｃ〜８ｅがグループ９０２に属する。そして、グループ９０２がグループ＃２として、データ処理部１４ｂが割り当てられている。また、チャネル８ｆがグループ９０３に属する。そして、グループ９０３がグループ＃３として、データ処理部１４ｃが割り当てられている。ここで、ＲＡＩＤ０が最もデータの読み書きの速度が速いが信頼性は低い。これに対して、ＲＡＩＤ１及び５は、信頼性がＲＡＩＤ０に比べて高い。そして、ＲＡＩＤ１はＲＡＩＤ５よりデータの読み書きの速度が速い。ＲＡＩＤ５が最もデータの読み書きの速度が遅い。
【００６７】
この場合も、例えば、ＣＰＵ４は、処理の重要度に応じてグループを選択する。ＣＰＵ４は、処理の重要度を高レベル、中レベル、低レベルに分ける。そして、重要度が高レベルの場合、ＣＰＵ４は、信頼性が高く処理速度も速いＲＡＩＤ１が構成されているグループ９０１に処理を行わせると決定する。また、重要度が中レベルの場合、ＣＰＵ４は、信頼性が高く処理速度が遅いＲＡＩＤ５が構成されているグループ９０２に処理を行わせると決定する。また、重要度が低レベルの場合、ＣＰＵ４は、信頼性が低いＲＡＩＤ０が構成されているグループ９０３に処理を行わせると決定する。
【００６８】
図７において、ＣＰＵ４によりデータの処理要求の宛先としてグループ９０２が選ばれた場合、グループ識別部１３によりデータ処理要求はデータ処理部１４ｂに送られる。そして、データ処理部１４ｂは、チャネル８ｃ〜８ｅのいずれかを用いてデータ処理を行う。
【００６９】
ただし、図６及び図７で示したグループ構成は一例であり、グループの構成に特に制限はない。
【００７０】
次に、図８を参照して、本実施例に係るＮＡＮＤコントローラ１０によるデータ処理の流れについて説明する。図８は、実施例１に係るＮＡＮＤコントローラによるデータ処理のフローチャートである。
【００７１】
構成レジスタ１１は、グループ構成の情報を格納する（ステップＳ１）。
【００７２】
構成レジスタ１１は、グループ構成をグループ識別部１３及びチャネル選択部１４５へ通知する（ステップＳ２）。
【００７３】
チャネル選択部１４５は、自己が搭載されたデータ処理部１４が割り当てられたグループに属するチャネル８に接続する（ステップＳ３）。
【００７４】
グループ識別部１３は、データの処理要求を受信する（ステップＳ４）。
【００７５】
次に、グループ識別部１３は、処理要求の宛先のグループを取得し、宛先のグループを処理対象とするグループとして選択する（ステップＳ５）。
【００７６】
アドレス変換制御部１４２は、処理要求で指定されているアドレスをＮＡＮＤフラッシュメモリ７のアドレスに変換する（ステップＳ６）。
【００７７】
データ処理部１４は、チャネル選択部１４５により接続されたチャネル制御部１５を用いて、割り当てられたグループに属するチャネル８に対してデータ処理を実行する（ステップＳ７）。
【００７８】
以上に説明したように、本実施例に係る情報処理装置は、チャネルをグループ化し、グループ毎にデータ処理を行う。これにより、本実施例に係る情報処理装置は、グループ毎に、それぞれ別個のデータ処理を行うことができる。そして、チャネルは、処理性能によってグループ化されている。そのため、チャネル間で処理性能の差が存在する場合でも、性能の異なるチャネルが互いに影響を受けることなく並列動作することができる。この結果、用途に応じて全てのチャネル上の記憶装置の性能を無駄なく発揮することができる。
【００７９】
また、メモリデバイスの搭載状況やＲＡＩＤ構成などの変更により各チャネルの性能が変化した場合にも、グループ構成を変更するだけでチャネルの性能差による処理能力の低下を回避できる。すなわち、Large  Scale  Integration（ＬＳＩ）などのハードウェアの再設計を行うことなくシステム全体の性能や資源使用効率を向上させることができる。
【００８０】
（変形例）
次に、図９を参照して、実施例１の変形例について説明する。図９は、変形例に係るＮＡＮＤコントローラのブロック図である。
【００８１】
本変形例に係るＮＡＮＤコントローラ１０は、図９に示すように、アドレス変換制御部１４２が１つにまとめられていることが実施例１と異なる。
【００８２】
本変形例では、リクエストバッファ１４１は、アドレス変換制御部１４２に処理要求を出力する。その後、リクエストバッファ１４１は、アドレス変換された処理要求をアドレス変換制御部１４２から受信する。
【００８３】
そして、リクエストバッファ１４１は、チャネル選択部１５に対してアドレス変換された処理要求を送信してＮＡＮＤフラッシュメモリ７に対するアクセス要求を発行する。
【００８４】
アドレス変換制御部１４２は、データ処理部１４ａ〜１４ｃのそれぞれのリクエストバッファ１４１から処理要求を受信する。そして、アドレス変換制御部１４２は、先着順又は任意の優先度付けの調停を行って各処理要求のアドレス変換を行う。そして、アドレス変換制御部１４２は、アドレス変換を行った処理要求を、その処理要求の送信元のリクエストバッファ１４１へ返信する。
【００８５】
以上に説明したように、本変形例に係るＮＡＮＤコントローラは、実施例１におけるデータ処理部におけるアドレス変換制御部を共通にして、それ以外の機能を各データ処理部に持たせた構成である。アドレス変換は他の処理要求に対する処理を遅延させないため、このようにアドレス変換の機能を共通化しても、実施例１と同じ効果を維持することができる。また、本変形例は機能の共通化の一例であり、データ処理部における他の処理要求に対する処理を遅延させない機能であれば、他の機能を共通化してもよい。
【００８６】
また、以上の説明では、ＮＡＮＤフラッシュメモリを制御するＮＡＮＤコントローラを例に説明したが、メモリデバイスなどの記憶装置を制御するコントローラであれば他のコントローラに対しても本発明を適用することができる。例えば、図１のＤＩＭＭ３を制御するメモリコントローラに本発明を適用してもよい。
【実施例２】
【００８７】
次に、実施例２について説明する。本実施例に係る情報処理装置は、グループの選択をＮＡＮＤコントローラ側で行うことが実施例１と異なる。本実施例に係るＮＡＮＤコントローラ１０のブロック図も図２で表される。以下の説明では、実施例１と同様の機能を有する各部については説明を省略する。
【００８８】
本実施例では、ＣＰＵ４は、書き込み処理の場合にその処理の優先度を決定する。そして、ＣＰＵ４は、処理要求に処理の優先度を付加する。
【００８９】
グループ識別部１３は、処理要求をＣＰＵ４から受信する。処理要求が読み出し要求の場合、グループ識別部１３は、処理要求で指定されているアドレスに対応する記憶領域を有するＮＡＮＤフラッシュメモリ７に対応するチャネル８が属するグループに割り当てられたデータ処理部１４に処理要求を出力する。
【００９０】
これに対して、処理要求が書き込み要求の場合、グループ識別部１３は、処理要求に格納されている優先度を取得する。グループ識別部１３は、各優先度とグループとの対応を記憶している。例えば、図６のようにグループ９１〜９３に分かれている場合で説明する。図６では、チャネル８ａ及び８ｂの性能が一番高く、チャネル８ｃ及び８ｄの性能が次に高く、チャネル８ｅ及び８ｆの性能が一番低い。
【００９１】
そして、グループ識別部１３は、処理要求の優先度をグループに対応付けるための第１閾値及び第２閾値を記憶している。第２閾値は、第１閾値よりも低い優先度の閾値である。
【００９２】
グループ識別部１３は、優先度が第１閾値以上の場合、チャネル８ａ及び８ｂが属するグループ９１に割り当てられたデータ処理部１４ａに処理要求を出力する。また、優先度が第１閾値より低く第２閾値以上の場合、グループ識別部１３は、チャネル８ｃ及び８ｄが属するグループ９２に割り当てられたデータ処理部１４ｂに処理要求を出力する。また、優先度が第２閾値より低い場合、グループ識別部１３は、チャネル８ｅ及び８ｆが属するグループ９３に割り当てられたデータ処理部１４ｃに処理要求を出力する。
【００９３】
このように、本実施例に係るグループ識別部１３は、処理要求の優先度に応じてその処理要求を処理するグループを決定する。
【００９４】
さらに、図１０を参照して、本実施例に係る情報処理装置によるデータ処理全体の概要を説明する。図１０は、ＮＡＮＤコントローラ側でグループ選択を行う場合の一例を説明するための図である。ここでは、優先度は１〜３で表され、優先度は値の小さいほど優先度が高いものとする。そして、チャネル８が性能毎に＃１〜＃３の３グループに分けられている場合で説明する。
【００９５】
図１０における処理要求４１１は、読み出し要求である。また、処理要求４１２及び４１３は書き込み要求である。ＣＰＵ４は、読み出し要求の場合は、処理要求４１１のように、通常の読み出し要求を出力する。
【００９６】
これに対して、書き込み要求の場合は、処理要求４１２及び４１３のように優先度を表す情報を付加する。ここでは、処理要求４１２が優先度１であり、処理要求４１３が優先度２である。
【００９７】
ＮＡＮＤコントローラ１０は、処理要求４１１を受信した場合、グループ＃１〜３全てに要求を複製して転送する。各グループではアドレス変換が行われ、処理要求４１１で指定されるアドレスが登録されていれば、ＮＡＮＤコントローラ１０は、そのアドレスに対応する記憶領域を有するＮＡＮＤフラッシュメモリ７からデータを読み出す。一方、処理要求４１１で指定されるアドレスが登録されていなければ、要求を受けたグループは、処理要求は自グループ宛ではないと判断して要求を破棄する。
【００９８】
一方、処理要求４１２を受信すると、ＮＡＮＤコントローラ１０は、処理要求４１２の優先度の情報を確認し、処理要求４１２の優先度が１であると確認する。そして、ＮＡＮＤコントローラ１０は、グループ＃１〜３の中でもっとも性能が高いチャネルが属するグループを選択して、選択したグループに割り当てられたデータ処理部１４を用いて処理要求４１２を処理する。
【００９９】
また、処理要求４１３を受信すると、ＮＡＮＤコントローラ１０は、処理要求４１３の優先度の情報を確認し、処理要求４１３の優先度が２であると確認する。そして、ＮＡＮＤコントローラ１０は、グループ＃１〜３の中で２番目に性能が高いチャネルが属するグループを選択して、選択したグループに割り当てられたデータ処理部１４を用いて処理要求４１３を処理する。
【０１００】
この場合、ＮＡＮＤコントローラ１０が優先度を基にグループを選択するので、ＣＰＵ４はグループの分割状態を把握しなくてもよい。
【０１０１】
（変形例）
また、ＮＡＮＤコントローラ１０側でグループを選択する方法は、優先度を用いる方法に限らない。例えば、処理要求に付加された優先度以外の付随情報を用いてもよい。
【０１０２】
この場合、ＣＰＵ４などのホストデバイスは、書き込み処理の場合にその処理要求に付随情報を付加する。例えば、付随情報としては、その処理要求を出力したホストデバイスの種類などでよい。
【０１０３】
グループ識別部１３は、処理要求をＣＰＵ４から受信する。処理要求が書き込み要求の場合、グループ識別部１３は、処理要求に格納されている付随情報を取得する。
【０１０４】
グループ識別部１３は、付随情報とグループとの対応を記憶している。ここで、付随情報として、処理要求を出力したホストデバイスの種類を用いる場合で説明する。処理要求がＣＰＵ４からの出力であれば、その処理要求が重要なものであると考えられるので、グループ識別部１３は、チャネルの性能の高いグループにその処理要求を処理させる。これに対して、例えば、処理要求がLocal  Area  Network（ＬＡＮ）から出力された場合、その処理要求は重要度が低いと考えられるので、グループ識別部１３は、チャネルの性能の低いグループにその処理要求を処理させる。
【０１０５】
また、ここでは、付随情報として処理要求の出力元のホストデバイスの種類を用いたが、付随情報は、各処理要求を選別することができる情報であれば特に制限はない。例えば、論理アドレス、データサイズ及び発行元ソフトウェアの種類を付随情報として、ＮＡＮＤコントローラ１０は、これら付随情報を解析してグループの選択を行ってもよい。
【０１０６】
さらに、図１１を参照して、本変形例に係る情報処理装置によるデータ処理全体の概要を説明する。図１１は、ＮＡＮＤコントローラ側でグループ選択を行う場合の他の例を説明するための図である。ここでは、チャネル８が性能毎に＃１〜＃３の３グループに分けられている場合で説明する。
【０１０７】
図１１における処理要求４２１は、読み出し要求である。また、処理要求４２２及び４２３は書き込み要求である。ＣＰＵ４は、読み出し要求の場合は、処理要求４２１のように、通常の読み出し要求を出力する。
【０１０８】
これに対して、書き込み要求の場合は、処理要求４２２及び４２３のようにヘッダなどに付随情報を格納する。
【０１０９】
ＮＡＮＤコントローラ１０は、処理要求４２１を受信した場合、グループ＃１〜３全てに要求を複製して転送する。各グループにおいてアドレス変換が行われ、処理要求４２１で指定されるアドレスが登録されていれば、ＮＡＮＤコントローラ１０は、処理要求４２１で指定されるアドレスに対応する記憶領域を有するＮＡＮＤフラッシュメモリ７からデータを読み出す。一方、処理要求４１１で指定されるアドレスが登録されていなければ、要求を受けたグループは、処理要求は自グループ宛ではないと判断して要求を破棄する。
【０１１０】
一方、処理要求４２２又は４２３を受信すると、ＮＡＮＤコントローラ１０は、処理要求４２２又は４２３の付随情報を取得する。そして、ＮＡＮＤコントローラ１０は、取得した付随情報に応じてグループ＃１〜３の中からデータを書き込むグループを選択する。
【０１１１】
この場合も、ＮＡＮＤコントローラ１０が付随情報を基にグループを選択するので、ＣＰＵ４はグループの分割状態は把握しなくてもよい。
【０１１２】
このように、本実施例に係るグループ識別部１３は、付随情報に応じてその処理要求を処理するグループを決定することもできる。
【０１１３】
以上に説明したように、本実施例及び変形例に係る情報処理装置は、ＮＡＮＤコントローラが、処理要求に応じたグループを選択する。これにより、グループに関する処理をＮＡＮＤコントローラ側で一元化でき、ＣＰＵなどの処理に加える変更を抑えることができるので、容易にシステム全体の性能や資源使用効率を向上することができる。
【実施例３】
【０１１４】
次に、実施例３について説明する。本実施例に係る情報処理装置は、ＮＡＮＤコントローラが自動的にグループを構成することが実施例１と異なる。図１２は、実施例３に係るＮＡＮＤコントローラのブロック図である。本実施例に係るＮＡＮＤコントローラ１０は、実施例１のＮＡＮＤコントローラ１０の各機能部に加えて、構成解析部１６をさらに有している。以下の説明では、実施例１と同様の機能を有する各部については説明を省略する。
【０１１５】
ＮＡＮＤフラッシュメモリ７ａ〜７ｆはそれぞれ、自己の仕様情報を格納した仕様格納領域を有している。仕様情報とは、例えば、製造元や速度などである。また、本実施例では、ＮＡＮＤフラッシュメモリを例に説明しているが、他のメモリデバイスでも仕様格納領域を有するものがある。例えば、Double-Data-Rate（ＤＤＲ）３  ＤＩＭＭであれば、Serial  Presence  Detect（ＳＰＤ）が仕様格納領域にあたる。すなわち、他のメモリデバイスでも、仕様格納領域を有するものであれば、本実施例の効果を得ることができる。
【０１１６】
構成解析部１６は、ＮＡＮＤフラッシュメモリ７ａ〜７ｆのそれぞれの仕様格納領域から仕様情報を取得する。図１３は、デバイス情報テーブルの一例の図である。図１３のデバイス情報テーブル１６１は、構成解析部１６がＮＡＮＤフラッシュメモリ７ａ〜７ｆのそれぞれから読み出した仕様情報を集約したテーブルである。デバイス情報テーブル１６１では、各チャネル８ａ〜８ｆに対応させて、ＮＡＮＤフラッシュメモリ７ａ〜７ｆの仕様を表している。
【０１１７】
デバイス情報テーブル１６１に示すように、構成解析部１６は、ＮＡＮＤフラッシュメモリ７ａ〜７ｆの仕様情報として、例えば、製造元、タイプ、速度及び１ページあたりの容量を取得する。そして、構成解析部１６は、取得した情報を用いて構成レジスタ１１に対して各チャネルのグループ構成の設定を行う。
【０１１８】
図１４は、実施例３に係るグループ構成の設定のフローチャートである。構成解析部１６は、チャネルをグループ化するための性能差の閾値を予め記憶している。
【０１１９】
構成解析部１６は、グループ＃ｉのグループ番号を表す変数ｉを初期値の１に設定する（ステップＳ１０１）。
【０１２０】
次に、構成解析部１６は、全てのチャネル８ａ〜８ｆを処理対象に設定する（ステップＳ１０２）。
【０１２１】
次に、構成解析部１６は、処理対象としたチャネル８ａ〜８ｆの中から１つのチャネルを選択し基準チャネルとする（ステップＳ１０３）。
【０１２２】
次に、構成解析部１６は、基準チャネルとの性能差が予め決められた閾値以下のチャネルを処理対象チャネルから抽出する（ステップＳ１０４）。
【０１２３】
そして、構成解析部１６は、基準チャネル及び抽出したチャネルをグループ＃ｉに属するチャネルとして設定する（ステップＳ１０５）。
【０１２４】
次に、構成解析部１６は、基準チャネル及び抽出したチャネルを処理対象から除外する（ステップＳ１０６）。
【０１２５】
次に、構成解析部１６は、グループ番号を表す変数ｉの値を１つインクリメントする（ステップＳ１０７）。
【０１２６】
次に、構成解析部１６は、処理対象チャネルが未だ残っているか否かを判定する（ステップＳ１０８）。処理対象チャネルが残っている場合（ステップＳ１０８：肯定）、構成解析部１６は、ｉが全グループ数以下か否かを判定する（ステップＳ１０９）。言い換えれば、構成解析部１６は、設定可能な空きグループが有るか否かを判定する。
【０１２７】
全グループ数以下の場合（ステップＳ１０９：肯定）、構成解析部１６は、処理をステップＳ１０３へ戻す。
【０１２８】
これに対して、全グループ数より多い場合（ステップＳ１０９：否定）、構成解析部１６は、構成レジスタ１１をリセットする（ステップＳ１１０）。
【０１２９】
そして、構成解析部１６は、基準チャネルとの性能差判定の閾値を大きくし（ステップＳ１１１）、すなわち、判定条件を緩和して、処理をステップＳ１０１へ戻す。
【０１３０】
一方、処理対象チャネルがない場合（ステップＳ１０８：否定）、構成解析部１６は、構成レジスタ１１へのグループ構成の設定を終了する。
【０１３１】
以上の処理を行うことで、構成解析部１６は、全てのチャネル８ａ〜８ｆが重複無くいずれかのグループに属するように設定できる。また、本実施例では、全てのチャネルが全グループ数以下のグループに分けられた場合に、グループ構成の設定の処理を終了させたが、他の方法を用いることもできる。例えば、構成解析部１６は、処理対象がなくなった時点でグループ数が全グループ数に満たない場合、閾値を厳しくして再度グループ構成を行ってもよい。この構成解析部１６が、「グループ構成部」の一例にあたる。
【０１３２】
構成レジスタ１１は、構成解析部１６により設定されたグループ構成を記憶する。
【０１３３】
グループ識別部１３及びデータ処理部１４ａ〜１４ｃは、構成解析部１６により設定されたグループ構成を構成レジスタ１１から受信し、データの処理要求を処理する。
【０１３４】
以上に説明したように、本実施例に係る情報処理装置は、記憶装置の仕様からグループ構成を自動的に生成する。これにより、操作者がグループ構成を決定しなくてもよくなり、操作者の負担を軽減することができる。また、記憶装置の変更が行われた場合、自動的にグループ構成が変更されるので、システム全体の性能や資源使用効率を容易に向上させることができる。
【０１３５】
また、ここでは、ＮＡＮＤコントローラにグループ構成を自動的に生成する機能を搭載させたが、ＮＡＮＤコントローラ以外でグループ構成を生成するようにしてもよい。例えば、外部のコンピュータにチャネルの性能情報を取得させ、そのコンピュータ上で図１４のフローを実行するプログラムを動作させることでグループ構成を生成させ、その結果を構成レジスタ１１に格納させてもよい。
【実施例４】
【０１３６】
次に、実施例４について説明する。本実施例に係る情報処理装置は、複数のグループ間でのチャネルの重複を許してグループを構成することが実施例１と異なる。本実施例に係るＮＡＮＤコントローラ１０も図２のブロック図で表される。以下の説明では、実施例１と同様の機能を有する各部については説明を省略する。
【０１３７】
構成レジスタ１１は、例えば、図１５に示すようにグループ間でのチャネル８の重複を許して生成されたグループ構成を記憶する。図１５は、実施例４に係る情報処理装置によるグループ構成の一例を表す図である。
【０１３８】
図１５では、チャネル８ａ及び８ｂがグループ９１１に属する。また、チャネル８ｃ及び８ｄがグループ９１２に属する。さらに、チャネル８ｄ〜８ｆがグループ９１３に属する。すなわち、チャネル８ｄは、グループ９１２及び９１３のいずれにも属している。
【０１３９】
構成レジスタ１１は、チャネル８ａ〜８ｆのうちいずれがグループ間で重複しているチャネルかを記憶している。そして、構成レジスタ１１は、グループ構成及び重複しているチャネル８の情報をグループ識別部１３及びチャネル選択部１４５へ通知する。
【０１４０】
チャネル選択部１４５は、自己が搭載されたデータ処理部１４が割り当てられたグループに重複するチャネル８がある場合、重複していないチャネルを優先的に使用する。そして、重複していないチャネル８のみではデータ処理が困難な場合、チャネル選択部１４５は、重複するチャネル８をデータ処理に使用する。
【０１４１】
例えば、図１５におけるデータ処理部１４ｃのチャネル選択部１４５は、処理要求が少ない状態では、チャネル８ｅ及び８ｆを使用する。しかし、処理要求が増えると、データ処理部１４ｃのチャネル選択部１４５は、データ処理にチャネル８ｄを使用する。
【０１４２】
このように、グループ間でのチャネルの重複を許すことで、各グループの処理負荷が高い場合に、重複したチャネルを緩衝領域として使用することができ、資源使用効率をさらに向上させることができる。
【０１４３】
また、以上の説明では、構成レジスタ１１がグループ間でのチャネル８の重複を許したグループ構成を記憶している状態から説明したが、本実施例においても実施例３のように自動的にグループ構成を設定してもよい。
【０１４４】
そこで、以下にチャネル８の重複を許す場合のグループ構成の設定について説明する。ここでは、実施例３と同様に、図１２の構成解析部１６がグループ構成の設定を行う場合で説明する。
【０１４５】
図１６は、実施例４に係るグループ構成の設定のフローチャートである。構成解析部１６は、チャネルをグループ化するための性能差の閾値を予め記憶している。
【０１４６】
構成解析部１６は、グループ＃ｉのグループ番号を表す変数ｉを初期値の１に設定する（ステップＳ２０１）。
【０１４７】
次に、構成解析部１６は、全てのチャネル８ａ〜８ｆを処理対象に設定する（ステップＳ２０２）。
【０１４８】
次に、構成解析部１６は、処理対象としたチャネル８ａ〜８ｆの中から１つのチャネルを選択し基準チャネルとする（ステップＳ２０３）。
【０１４９】
次に、構成解析部１６は、基準チャネルとの性能差が予め決められた閾値以下のチャネルを全チャネルの中から抽出する（ステップＳ２０４）。
【０１５０】
そして、構成解析部１６は、基準チャネル及び抽出したチャネルをグループ＃ｉに属するチャネルとして設定する（ステップＳ２０５）。
【０１５１】
次に、構成解析部１６は、基準チャネル及び抽出したチャネルを処理対象から除外する（ステップＳ２０６）。
【０１５２】
次に、構成解析部１６は、グループ番号を表す変数ｉの値を１つインクリメントする（ステップＳ２０７）。
【０１５３】
次に、構成解析部１６は、処理対象チャネルが未だ残っているか否かを判定する（ステップＳ２０８）。処理対象チャネルが残っている場合（ステップＳ２０８：肯定）、構成解析部１６は、ｉが全グループ数以下か否かを判定する（ステップＳ２０９）。
【０１５４】
全グループ数以下の場合（ステップＳ２０９：肯定）、構成解析部１６は、処理をステップＳ２０３へ戻す。
【０１５５】
これに対して、全グループ数より多い場合（ステップＳ２０９：否定）、構成解析部１６は、構成レジスタ１１をリセットする（ステップＳ２１０）。
【０１５６】
そして、構成解析部１６は、基準チャネルとの性能差判定の閾値を大きくし（ステップＳ２１１）、すなわち、判定条件を緩和して、処理をステップＳ２０１へ戻す。
【０１５７】
一方、処理対象チャネルがない場合（ステップＳ２０８：否定）、構成解析部１６は、構成レジスタ１１へのグループ構成の設定を終了する。
【０１５８】
以上の処理を行うことで、構成解析部１６は、全てのチャネル８ａ〜８ｆの重複を許しつつグループ構成を自動的に設定できる。
【０１５９】
このように、チャネルの重複を許すグループ構成を自動的に生成することで、より柔軟に資源使用効率を向上させることができる。
【符号の説明】
【０１６０】
１  情報処理装置
２ａ，２ｂ  メモリ
３  ＤＩＭＭ
４，４ａ，４ｂ  ＣＰＵ
５  Ｉ／Ｏハブ
６ａ，６ｂ  ＳＳＤ
８ａ〜８ｆ  チャネル
７，７ａ〜７ｆ  ＮＡＮＤフラッシュメモリ
１０，１０ａ，１０ｂ  ＮＡＮＤコントローラ
１１  構成レジスタ
１２  通信インタフェース
１３  グループ識別部
１４ａ〜１４ｃ  データ処理部
１５ａ〜１５ｆ  チャネル制御部
１６  構成解析部
１４１  リクエストバッファ
１４２  アドレス変換制御部
１４３  データバッファ
１４４  ＲＡＩＤ制御部
１４５  チャネル選択部
【図１】
2015088071.tif 000003
【図２】
2015088071.tif 000004
【図３】
2015088071.tif 000005
【図４】
2015088071.tif 000006
【図５】
2015088071.tif 000007
【図６】
2015088071.tif 000008
【図７】
2015088071.tif 000009
【図８】
2015088071.tif 000010
【図９】
2015088071.tif 000011
【図１０】
2015088071.tif 000012
【図１１】
2015088071.tif 000013
【図１２】
2015088071.tif 000014
【図１３】
2015088071.tif 000015
【図１４】
2015088071.tif 000016
【図１５】
2015088071.tif 000017
【図１６】
2015088071.tif 000018