(57)【要約】【課題】容易にスケールアウト可能で、データの転送が高速なストレージ装置を提供する。【解決手段】ストレージ装置は、データの読み出し、及び書き込みの制御命令を発行するプロセシング部と、少なくとも２次元以上の配列として、互いに接続された複数の記憶部と、を備え、前記プロセシング部は、プロセッサと、前記プロセッサに対してバスで接続された外部のネットワークとの間で通信するネットワーク通信部と、を備え、前記記憶部は、前記プロセシング部とバスによって接続されるプロセッサ入出力部と、隣接する他の前記記憶部と接続される記憶部入出力部と、データを記憶可能なメモリと、前記データに含まれる前記記憶部の位置情報に基づいて、他の前記記憶部への前記データの転送経路を決定して、転送処理を行うルーティング部と、を備える。【選択図】図１
2014134981.tif 000002
【特許請求の範囲】
【請求項１】
データの読み出し、及び書き込みの制御命令を発行するプロセシング部と、
少なくとも２次元以上の配列として、互いに接続された複数の記憶部と、
を備え、
前記プロセシング部は、
プロセッサと、
前記プロセッサに対してバスで接続された外部のネットワークとの間で通信するネットワーク通信部と、
を備え、
前記記憶部は、
前記プロセシング部とバスによって接続されるプロセッサ入出力部と、
隣接する他の前記記憶部と接続される記憶部入出力部と、
データを記憶可能なメモリと、
前記データに含まれる前記記憶部の位置情報に基づいて、他の前記記憶部への前記データの転送経路を決定して、転送処理を行うルーティング部と、
を備えることを特徴とするストレージ装置。
【請求項２】
前記プロセシング部は、配列された前記記憶部のうち周辺部に位置する前記記憶部と接続されている
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記プロセシング部は、配列された前記記憶部のうち中央に位置する前記記憶部と接続されている
ことを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記記憶部は、他の前記記憶部とトーラス状に接続されている
ことを特徴とする請求項１に記載のストレージ装置。
【請求項５】
前記記憶部の数をＮ、前記プロセシング部の数をＭとし、読み書きにかかる時間のうち前記プロセッシング部での処理時間をｔｃ、前記記憶部間の１度の転送時間をｔｓ、前記記憶部内でそれ以外の処理にかかる時間をｔｆとした場合に、Ｎ×（１＋ｔｃ／ｔｓ）／（２√Ｎ＋ｔｆ／ｔｓ）＜＝Ｍ＜＝Ｎを満たす
ことを特徴とする請求項１に記載のストレージ装置。
【請求項６】
前記プロセシング部と、前記記憶部は、同一のプリント基板上に配設され、
複数の前記プリント基板が互いに接続される
ことを特徴とする請求項１に記載のストレージ装置。
【請求項７】
前記プリント基板が挿入されるスロットは、前記プリント基板が接続されていない状態にあっては対向する各端子が接続されるように切り替えられる切替部を更に備える
ことを特徴とする請求項６に記載のストレージ装置。
【請求項８】
前記プロセシング部、及び前記記憶部は、ホットスワップ可能である
ことを特徴とする請求項６に記載のストレージ装置。
【請求項９】
前記メモリは、前記記憶部からホットスワップ可能である
ことを特徴とする請求項６に記載のストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストレージ装置に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティングなどの広がりによって、ストレージ装置を備えた複数台の情報処理装置を、相互にネットワークで接続して、一つの情報処理システムとして動作させる場合が増加している。また、ストレージ装置としても、従来型のＨＤＤを使用したものと比較してより高速な、ＤＲＡＭチップやＮＡＮＤフラッシュチップなどを多数並べてチップ間配線によって接続し、一つのストレージ装置として用いられるものが存在する。
【０００３】
このような、複数の情報処理装置を接続して成る単一の情報システムでは、システムを構成する情報処理装置の台数を増やすことで性能向上が図られている。しかしながら、台数が増加した大規模な情報処理システムにおいては、想定通りの性能が発揮されない、管理のための手間やコストが増大するなどの問題があった。
【０００４】
このような問題点に対する解決方法として、これまでに、データ転送機能を有するメモリノードを複数接続して成るストレージ装置が提案されている。このようなストレージ装置内では、各メモリノードは、自身に宛てたデータパケットを受信した場合は読み出し、又は書き込みなどの所定の処理を行い、自身宛てでないパケットを受信した場合は、受信パケットを適切な他のメモリノードに転送する。各メモリノードによって適切な転送が繰り返されることで、データパケットは目的のメモリノードに到達できる。このような構成にすると、ストレージ装置が大型化しても設計が容易になるというメリットがあった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２４３９６７号公報
【特許文献２】特開２０１２−１０３９２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、このような技術を用いても、複数のボードや筐体、ラック等から成るような、規模の大きなシステムを構成しようとした場合には、スケールアウトの際、思うような性能向上が実現できなかったり、運用が困難になったりするなどの問題があった。
【０００７】
本発明の実施形態は、上記に鑑みてなされたものであって、容易にスケールアウトが可能となる情報処理システムを実現することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明の実施形態は、データの読み出し、及び書き込みの制御命令を発行するプロセシング部と、少なくとも２次元以上の配列として、互いに接続された複数の記憶部と、を備え、前記プロセシング部は、プロセッサと、前記プロセッサに対してバスで接続された外部のネットワークとの間で通信するネットワーク通信部と、を備え、前記記憶部は、前記プロセシング部とバスによって接続されるプロセッサ入出力部と、隣接する他の前記記憶部と接続される記憶部入出力部と、データを記憶可能なメモリと、前記データに含まれる前記記憶部の位置情報に基づいて、他の前記記憶部への前記データの転送経路を決定して、転送処理を行うルーティング部と、を備えることを特徴とする。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態のストレージ装置の構成を示す図である。
【図２】図２は、従来のストレージ装置の構成を示す図である。
【図３】図３は、従来のストレージ装置の構成を示す図である。
【図４】図４は、実施形態のプロセシングユニットの内部構造を示す図である。
【図５】図５は、実施形態のメモリノードの内部構造を示す図である。
【図６】図６は、実施形態の別のメモリノードの内部構造を示す図である。
【図７】図７は、実施形態のメモリノードにおけるコントローラーの詳細な構成を示す図である。
【図８−１】図８−１は、実施形態のデータの転送の際のルーティングアルゴリズムを説明する図である。
【図８−２】図８−２は、実施形態の異常が発生した場合のデータの転送の際のルーティングアルゴリズムを説明する図である。
【図９−１】図９−１は、実施形態のメモリノードとプロセシングユニットの接続態様を示す図である。
【図９−２】図９−２は、実施形態のメモリノードとプロセシングユニットの接続態様を示す図である。
【図１０−１】図１０−１は、実施形態のメモリノードとプロセシングユニットの接続態様を示す図である。
【図１０−２】図１０−２は、実施形態のメモリノードとプロセシングユニットの接続態様を示す図である。
【図１１】図１１は、実施形態のプロセシングユニットの基板への実装態様を示す図である。
【図１２】図１２は、実施形態のプロセシングユニットの基板への実装態様を示す図である。
【図１３】図１３は、実施形態のメモリノードの基板への実装態様を示す図である。
【図１４】図１４は、実施形態のメモリノードの基板への実装態様を示す図である。
【図１５】図１５は、実施形態のプリント基板の筐体への実装態様を示す図である。
【図１６】図１６は、実施形態のアナログスイッチの一例を示す図である。
【図１７】図１７は、実施形態のメモリノードとプロセシングユニットを同一の基板に実装する態様を示す図である。
【図１８】図１８は、実施形態のメモリノードとプロセシングユニットを同一の基板に実装する態様を示す図である。
【図１９】図１９は、実施形態のプリント基板を筐体へ実装する態様を示す図である。
【図２０】図２０は、実施形態のプリント基板を筐体へ実装する態様を示す図である。
【図２１】図２１は、実施形態のプリント基板を筐体へ実装する態様を示す図である。
【発明を実施するための形態】
【００１０】
以下に本発明の実施形態にかかるストレージ装置について説明する。図１に、ストレージ装置１０の構成を示す。ストレージ装置１０は、プロセシングユニット２００〜２０３、メモリノード３００〜３１５を備えている。プロセシングユニット２００〜２０３は、ストレージ装置１０内でのデータ処理を行い、メモリノード３００〜３１５へのデータの読み書きを制御するプロセシング部に相当する。メモリノード３００〜３１５は、電力供給がなくてもデータが保持される不揮発性メモリであり、他のメモリノードへの転送機能を有し、データの読み出し、書き込みを行うことが可能である。プロセシングユニット２００〜２０３と、メモリノード３００〜３１５は本実施形態では例えばＩＣパッケージのような電子部品となっており、配線を経由して電気信号をやり取りすることができる。
【００１１】
また、プロセシングユニット２００〜２０３（プロセシング部）、及びメモリノード３００〜３１５（記憶部）は、プリント基板１００〜１０３上に実装され、プリント基板１００〜１０３上の配線、又はプリント基板１００〜１０３間を接続するコネクタ１１００〜１１０７等を介して、データをやり取りすることができる。メモリノード３００〜３１５は二次元格子状に配列されている。なお、格子状の接続配線を構成する配線のうち、少なくとも一部、例えばプリント基板１００〜１０３間の配線が、物理的に抜き差し可能なコネクタ１１００〜１１０７を介して、相互的に接続されている。
【００１２】
プロセシングユニット２００はメモリノード３００と接続されており、メモリノード３００を介して、任意の他のメモリノード３０１〜３１５に対して二次元格子における座標を用いてアクセスする。その他のプロセシングユニット２０１〜２０３も同様である。また、プロセシングユニット２００〜２０３は、ホストインターフェース４００〜４０３を介して、ホストシステムとデータのやり取りをすることができる。これらの各部材は筐体５００に収められている。
【００１３】
本実施形態では、説明の便宜上、プリント基板１００〜１０３上にはそれぞれ１つのプロセシングユニットしか実装されていないが、複数を実装することも可能であり、ホストインターフェース４００〜４０３も各基板に対して１つのみが接続されているが、複数になってもかまわない。また同様に、メモリノードも４つを１列に並べて実装されているが、個数も、配列も任意の数とすることができる。さらに、筐体５００に収められるプリント基板であるボードの数も４つに限る必要はない。
【００１４】
実施形態で示した、二次元格子状に配列されたネットワークでは、例えばプロセシングユニット２００からメモリノード３０５に対して、例えばメモリノード３００、３０１、３０５の順に逐次的なデータパケットの送受信によってアクセスが行われる。すなわち、この例だと３回のパケット送受信が行われることとなるが、システム全体のサイズが大きくなるにつれてこの送受信回数が多くなり、実際にアクセスしたいノードに到達するまでに大きな遅延時間が生じるようになる。従って、大規模なシステムだと、このパケットの逐次送受信にかかる時間をいかに小さくできるかが性能に大きく影響する。
【００１５】
従来用いられていた、記憶媒体がＨＤＤであるシステムの場合、ＨＤＤそのものの遅延時間が大きいため、遅延時間を小さくすることができない。また、二次元格子を構成するメモリノード３００〜３１５間を、プリント基板１００〜１０３上以外の配線(ケーブル等)を用いたり、転送経路の選択をプロセシングユニット２００〜２０３等に行わせたりする場合では、このパケットの逐次送受信における遅延時間が極めて大きくなってしまう。したがって、バス接続を介さないプリント基板１００〜１０３上の配線を用いることでこの時間を大幅に短縮している。ちなみに、不揮発性メモリから成るストレージ装置とプリント基板上の配線を用いていても、二次元格子構造を取らなかった場合、筐体間の通信等にかかる時間が大きくなってしまい、伝送時間は遅くなってしまう。
【００１６】
すなわち、図２に示したような、二次元格子状に配列されたメモリノードから成るストレージ装置の場合、メモリノード３００〜３１５がＨＤＤで構成される場合や、メモリノード間の接続が、物理的に抜き差し可能なコネクタ１１００〜１１０５を介した、プリント基板上の配線によって実現されていない場合には、伝送時間が遅くなってしまう。
【００１７】
また、図３に示したように、物理的に抜き差し可能なコネクタ１１００〜１１０３を介した、プリント基板上の配線によって、不揮発性メモリから成るメモリノード３００〜３１５とプロセシングユニット２００〜２０３等を接続したとしても、メモリノード３００〜３１５を２次元格子状に接続した構成を取らない限り、所望の伝送速度は得られない。これは、メモリノード３００〜３１５同士でデータをやり取りしたい場合に、図中に示したような外部のネットワークスイッチ５５０を経由する必要があるからである。
【００１８】
次に、本実施形態の別の効果について説明する。多数のメモリノードから成る単一のシステムの場合、システム内において、いくつかのメモリノードが故障した場合でも、システム全体は不具合なく機能し続ける必要がある。ＲＡＩＤなどの公知の技術を用いれば、このような要件を満たしたシステムを構築することは可能であるが、スケールアウトを容易にするためには、このような場合の運用において必ず発生する、故障が発生したメモリノードの交換が容易でなければならない。
【００１９】
本実施形態では、図１に示したように、少なくとも１つ以上のノードが実装されたプリント基板１００〜１０３が、物理的に抜き差し可能なコネクタ１１００〜１１０５を介して接続された構成となっているため、故障したメモリノードを含むプリント基板１００〜１０３を抜き、新しいプリント基板１００〜１０３を差すだけで交換が完了する。このとき、プリント基板１００〜１０３が交換中であることを、各プロセシングユニット２００〜２０３が把握していなくても、交換中以外のプリント基板１００〜１０３を介して、複数のデータパスが存在するためデータ転送が可能となる。例えば、プロセシングユニット２００から、メモリノード３１３に対して、データを読み書きしたい場合、プリント基板１０２を経由する経路とプリント基板１０１を経由する経路が存在する。従って、例えば、プリント基板１０１が交換中であっても、適切なルーティングアルゴリズムが実装されていれば、各プロセシングユニットがその事実を把握していなくても、メモリノード同士のデータ転送によって、プリント基板１０２を経由する経路が選択できる。
【００２０】
一方、図２で示した構成の場合、故障したメモリノードにつながる各接続線を抜き、ノードを交換する必要があるため、手順が極めて煩雑となる。また、このような作業を行う場合、通信経路上にノイズが乗ることが多く、この点でも、図１で示したような構成であることが望ましい。
【００２１】
また、図３に示したような、メモリノード３００〜３１５がプリント基板１００〜１０３上に実装されていても、二次元ネットワークとなっていない場合では、任意のノード同士の通信に必ずネットワークスイッチ５５０を経由する必要がある。そのため、例えば、プリント基板１００の交換中、ホストインターフェース４００を介してプリント基板１００とやり取りされていたデータが他のホストインターフェース４０１〜４０３を通過することとなり、各インターフェースの負荷が増してしまうため、交換前に負荷の調整を行うなどする必要がある。
【００２２】
本実施形態では、ホストインターフェース４００を介さずとも、メモリノード間のデータ転送によってプリント基板１００上のメモリノード３００〜３０３と、それ以外のメモリノード３０４〜３１５がデータをやり取りしているため、このような負荷調整は必要ない。例えば、プロセシングユニット２００からプリント基板１０１を経由してメモリノード３１３とやり取りをしているような場合に、プリント基板１０１が取り外されたとしても、プリント基板１０２を経由する経路が残っている。そのため、ホストインターフェース４０１〜４０３の負荷調整をする必要がない。ちなみに、二次元格子状の接続の場合、メモリノード間接続によるデータ転送経路は無数にあるため、適切なルーティングアルゴリズムを備えたネットワークなら、負荷の調整は必要ない。
【００２３】
次に、プロセシングユニット２００〜２０３、及びメモリノード３００〜３１５の内部構造について説明する。図４は、プロセシングユニット２００の内部構造を示したものである。プロセシングユニット２００は、データを処理するためのプロセッサに該当するマイクロプロセッサ（ＭＰＵ）２１０、主記憶となるランダムアクセスメモリ（ＲＡＭ）２２０、第１のインターフェース装置６００、第２のインターフェース装置７００を備える。第１のインターフェース装置６００は、ホストインターフェース４００とデータの送受信をするためのものであり、外部のネットワークとの間で通信を行うネットワーク通信部に相当する。２のインターフェース装置７００は、不揮発性メモリを備えるメモリノード３００とデータの送受信をするためのものである。そして、各部はデータのやり取りを行うＢＵＳ２３０によって接続されている。
【００２４】
ＭＰＵ２１０としては、例えばＡＲＭ製Ａ９（８００ＭＨｚ）やＩｎｔｅｌ製のＣｏｒｅ  ｉ７などが用いられる。この場合、ＢＵＳ２３０もＭＰＵ２１０に合わせて、それぞれＡＭＢＡ  ＢＵＳやＱＰＩ（Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）ＢＵＳ等が用いられる。ＲＡＭ２２０としては、例えば４ＧＢ  ＤＲＡＭなどの揮発性メモリや、ＭＲＡＭ、ＰｃＲＡＭ、ＲＲＡＭ（登録商標）等も用いることができる。外部のネットワークとの間で通信を行うネットワーク通信部に相当する、第１のインターフェース装置６００としては、例えばイーサネット（登録商標）、インフィニバンド、ファイバーチャネルといったネットワークインターフェースや、ＰＣＩ  Ｅｘｐｒｅｓｓ、Ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ、Ｓｅｒｉａｌ  ａｔｔａｃｈｅｄ  ＳＣＳＩなどの外部ＢＵＳ、あるいはストレージインターフェース等を用いることができる。また、第２のインターフェース装置７００は、ＭＰＵ２０１がＢＵＳ２３０を通してメモリノード３００との通信を行うものである。
【００２５】
図５はメモリノード３００の内部構造を示したものである。メモリノード３００は、コントローラー８００と、ストレージを構成する第１の不揮発性メモリ９００を備えている。コントローラー８００は、本実施形態では少なくとも６種類のデータ通信用のインターフェースを有しており、そのうちの４種は隣接したメモリノード３００とのデータ通信に用いられる記憶部入出力部８０３に相当する。また、１種はプロセシングユニット２００とのデータ通信に用いられるプロセッサ入出力部８０２に相当する。残る１種は第１の不揮発性メモリ９００に対するインターフェースとなっている。
【００２６】
第１の不揮発性メモリ９００の具体例としては、ＮＡＮＤフラッシュメモリや、ビットコストスケーラブルメモリ（ＢｉＣＳ）、磁気抵抗メモリ(ＭＲＡＭ)、相変化メモリ（ＰｃＲＡＭ）、抵抗変化型メモリ(ＲＲＡＭ（登録商標）)等が挙げられる。
【００２７】
図６はメモリノード３００の別の構成を示したものである。この例では、コントローラー８０１は７種類のデータ通信インターフェースを備えており、新たに第２の不揮発性メモリ１０００に対するインターフェースを備えている。この第２の不揮発性メモリ１０００は、第１の不揮発性メモリ９００と比べて、速度やランダムアクセス性能、書換可能回数が優れたものが用いられ、具体的には、ＤＲＡＭやＭＲＡＭ、ＰｃＲＡＭ、ＲＲＡＭ（登録商標）等である。
【００２８】
第２の不揮発性メモリ１０００には、例えば、読み書き回数の多いメタ情報と呼ばれるデータが格納される。メタ情報の例としては、第１の不揮発性メモリ９００、第２の不揮発性メモリ１０００中における特定のアドレスと、システム上の論理的なアドレスが異なる場合、相互を変換するためのテーブル情報や、第１の不揮発性メモリ９００、第２の不揮発性メモリ１０００に記録されたデータの属性情報などが挙げられる。
【００２９】
続いて、コントローラー８００、８０１の詳細な構造について図７を用いて説明する。図７に示されるように、コントローラー８００、８０１は、０から４までの５つの入出力ポート８１０と、ＩＯブロック８２０、入力ポートバッファ８３０、出力ポートバッファ８４０を備えている。０番の入出力ポート８１０がプロセシングユニット２００とのデータ通信に用いられプロセッサ入出力部８０２に相当する。また、１〜４番ポートはそれぞれ対応するメモリノードとのデータ通信に用いられる記憶部入出力部８０３に相当する。なお、データは、所定のサイズ単位のデータパケットとして、各メモリノード３００〜３１５間を転送される。パケットは、送信先アドレスおよび送信元アドレスからなるメモリノードの位置情報を少なくとも含むヘッダ部と、データ部とを有する。
【００３０】
入出力ポート８１０からデータが入力されると、ルーティングコントローラー８５０（ルーティング部）が、パケットが含む送信先（宛先）アドレスと、そのメモリノード自身のアドレスの少なくとも２つの情報に基づいて、パケットのルーティング先を決定する。そして、ルーティングコントローラー８５０は、マルチプレクサ（ＭＵＸ）８６０を切り替えて、適切な出力ポートバッファ８４０へと入力されたデータを転送する。
【００３１】
この際、自分宛てのデータだった場合は、データはコマンドプロセッサ８７０へと送られる。コマンドプロセッサ８７０は、ＳＲＡＭ８８０や、第１のメモリＩ／Ｆ９１０を介して第１の不揮発性メモリ９００や、第２のメモリＩ／Ｆ９２０を介して第２の不揮発性メモリ１０００等とのデータの読み書きや適切な処理を行う。例えば読み出し命令などの場合には、コマンドプロセッサ８７０は、新たなデータパケットを生成して、出力ポートバッファ８４０へと送る。
【００３２】
ＩＯブロック８２０の内部には、各入出力ポート８１０に対するエラー検出回路が設けられている。エラー検出回路は、データの送受信の最中に異常が発生した場合や、コントローラー８００、８０１及び接続された各不揮発性メモリ９００、１０００等に異常が発生した場合に、エラー情報を送信する。このことにより、隣接したメモリノードは、データの転送を行う前に、エラーを検出し、異常の生じたメモリノードとデータの送受信をしないようになる。
【００３３】
このような場合、エラー情報は、任意の方式を用いられるが、メモリノード自身が故障した場合を考慮して、信号が来ていない状態をエラーと認識するように構成することが望ましい。なお、コントローラー８００については、例えば第２のメモリＩ／Ｆ９２０を設けない構成であってもよい。
【００３４】
次に、データの転送の際のルーティングアルゴリズムについて図８を用いて説明する。図８−１に示されるように、ストレージ装置１０には、複数のメモリノード３００に対してデータが分散して格納される。この例では、各メモリノード３００は、２次元格子状に配置されている。格子点の座標を座標（ｘ，ｙ）で示し、格子点に配置されるメモリノード３００の物理アドレスは、当該格子点の座標と対応して物理アドレス（ｘD，ｙD）で示されるものとする。
【００３５】
また、図８−１の例では、左上隅に位置するメモリノード３００が原点の物理アドレス（０，０）を有し、各メモリノード３００を横方向（Ｘ方向）、及び縦方向（Ｙ方向）に移動することで、物理アドレスが整数値で増減する。
【００３６】
各メモリノード３００は、それぞれ４つの入力ポート１８、及び出力ポート１９を備える。各メモリノード３００は、隣接するメモリノード３００と、これら４つの入力ポート１８、及び出力ポート１９を介して接続される。具体的には、対向する隣接したメモリノード３００は、互いの入力ポート１８、及び出力ポート１９を介して接続される。
【００３７】
例えば、図８−１において左上隅の物理アドレス（０，０）で示されるメモリノード３００は、Ｘ方向に隣接する物理アドレス（１，０）で表されるメモリノード３００と、Ｘ方向とは異なる方向であるＹ方向に隣接する物理アドレス（０，１）で表されるメモリノード３００と、それぞれ接続される。また、物理アドレス（１，１）で表されるメモリノード３００は、互いに異なる４の方向に隣接する、物理アドレス（１，０）、（０，１）、（２，１）、及び（１，２）でそれぞれ示される４つのメモリノード３００に接続される。
【００３８】
ストレージ装置１０は、パリティの計算とデータ読み書き命令の発行とを行う、少なくとも１つのプロセシングユニット１３を備える。プロセシングユニット１３は、ＢＵＳ１７を介してメモリノード３００に接続される。図８―１では、プロセシングユニット１３は、物理アドレス（０，０）と（２，２）で表されるメモリノード３００に、それぞれ接続されている。
【００３９】
各メモリノード３００に格納するためのデータは、例えば外部のクライアントＰＣ１１からネットワークを介してストレージ装置１０に供給され、選択回路１２に入力される。選択回路１２は、各プロセシングユニット１３の状態を調べ、処理に余裕があるプロセシングユニット１３を選択して、当該データを転送する。
【００４０】
続いて、図８−２を参照して、異常が発生した場合のルーティングの流れについて説明する。本来、プロセシングユニット２００から、メモリノード３１２に対して、データを読み書きしようとする場合、最短経路である、出発地点であるプロセシングユニット２００がつながるメモリノード３００と、目的地であるメモリノード３１２とを結んだ直線、例えば、３００→３０１→３０６→３１１→３１２という経路をたどる。ここで、例えば、メモリノード３０６が故障あるいは、混雑していて、メモリノード３０１からデータが送れない状況である場合を想定する。この場合、メモリノード３０１が、優先順位の低い経路である、メモリノード３０２に対してパケットを送信することで、自然と最短距離である３０７→３１２とルーティングされることが望ましい。このように、メモリノード３０６が、メモリノード３０１からデータが送れない状況であることをメモリノード３０１が知るために、上述したＩＯブロック８２０に設けられたエラー検出回路が用いられる。
【００４１】
次に、プロセシングユニット２００と、メモリノード３００との好適な接続の態様について図９、及び図１０を用いて説明する。なお、図９−１においては、５行５列のメモリノードから成る説明図を用いるが、他の構成に関しても同様に実施することができる。
【００４２】
図９−１に示されるように、プロセシングユニット２００〜２１５を、メモリノード３００〜３２４で構成されるネットワーク全体の周辺部に接続すると、他の構成と比べ、隣接したプロセシングユニット２００〜２１５間でデータをやり取りする際の遅延時間を短くできる。周辺部とは、２次元格子状に接続されたメモリノード３００のうち、外側に位置するものを示す。これは、複数のプロセシングユニット２００〜２１５で、仕事を分担しなければならないような構成において有効である。
【００４３】
また、図９−２に示されるように、必ずしも隣り合う周辺部のすべてにプロセシングユニットを接続するのではなく、間隔をあけて接続する構成も考えられる。
【００４４】
また、図１０−１に示されるように、プロセシングユニット２００〜２０３がメモリノード３００〜３２４で構成されるネットワークのうち、内部に位置するメモリノード３０６、３０８、３１６、及び３１８に接続される構成も採用可能である。この場合、図９−１、図９−２で示したように、メモリノードの中央部に接続した場合、周辺部にプロセシングユニットを接続した場合と比較して、任意のメモリノードまでの平均到達ステップ数が少なくなり全体的な遅延時間を短くできる。中央部とは、メモリノードのうち周辺部以外の位置に位置するメモリノードを示す。なお、最も好ましい中央部の態様は、全てのメモリノード３００のうち、中心に位置するものである。これは、プロセシングユニット２００〜２０３間で、データを独立に読み書きするような構成において有効である。
【００４５】
図１０−２に示されるように、ストレージ装置１０のｘ方向のメモリノード数をＮｘ、ｙ方向のメモリノード数をＮｙとする。プロセシングユニット２００の接続先がストレージ装置１０の周辺部に配置されたメモリノードに限定される場合、プロセシングユニット２００からの目的のメモリノードに到達するまでのパケットの平均転送回数は、Ｎｘ／２＋Ｎｙ／２である。一方、ストレージ装置１０の中央部に位置するメモリノードにプロセシングユニットを接続すると、平均転送回数は、Ｎｘ／４＋Ｎｙ／４となる。したがって、ストレージ装置１０の内部のメモリノードにプロセシングユニット２００を接続すると、任意のメモリノードまでの平均到達ステップ数が少なくなる。
【００４６】
なお、プロセシングユニット２００が周辺部のメモリノードに接続されている場合の配線長をｄ、内部に接続されている場合の配線長をｄ’とした時（ｄ＜ｄ’）、信号の遅延時間の増加分をΔｔとする。また、内部に接続することによって減少した平均到達ステップ数をΔｎ、メモリノード間のデータ転送速度をＴとする。この際、Δｔ＜ＴΔｎの時は周辺部のメモリノードに接続し、Δｔ≧ＴΔｎの時は中央に位置するメモリノードに接続すると好適である。
【００４７】
続いて、図１１、図１２を参照して、プロセシングユニット２００の基板実装の具体例を説明する。図１では、プロセシングユニット２００は、複数のメモリノード３００〜３０３と同一のプリント基板１００上に実装されていたが、少なくとも一つ以上のプロセシングユニット２００を備えた基板を別途用いてもよい。
【００４８】
図１１の例では、プロセシングユニット２００が、プリント基板１００の表面に実装されており、端部には基板スロット接続部１１０が設けられている。この場合、上述したホストインターフェース４００との入出力を行う第１のインターフェース装置６００、及び第２のインターフェース装置７００は、基板スロット接続部１１０に配線が接続された形となる。また、図１２に示されるように、プリント基板１００の表面に第１のインターフェース装置６００を直接インターフェースポートとして形成してもよい。
【００４９】
図１３はストレージ装置１０におけるメモリノード３００の基板実装の具体例を表している。この場合は、図１の例とは異なり、各プリント基板にプロセシングユニットが搭載された場合ではなく、メモリノードのみが搭載された場合である。図１３に示されるように、メモリノード基板１２００は、複数のメモリノード３００が実装されており、基板スロット接続部１２１０と、１つのプロセシングユニット２００との配線１２３０と隣接するメモリノード３００との４つの配線１２４０が基板スロット接続部１２１０に接続されて設けられている。図では両面に８個ずつのメモリノード３００を一列に配置しているが、これに限定するものではない。
【００５０】
メモリノード基板１２００に搭載されているメモリノード３００は、基板が差し込まれる筐体５００のスロット側のコネクタ１１００〜１１０５（図１参照）で相互接続することで、メモリノード３００同士が接続される構成となっている。つまり、筐体５００側の接続によって、メモリノード３００同士の接続を柔軟に変更できる。
【００５１】
さらにメモリノード基板１２００は筐体５００の基板のスロットを介して、他のメモリノード基板１２００と接続することが可能であり、これによって、ストレージ規模拡大が容易となる。
【００５２】
このとき、図１４のように、全てのメモリノード３００との配線１２４０を基板スロット接続部１２１０に接続するのではなく、メモリノード基板１２００上でメモリノード３００同士を配線しても構わない。これにより、ストレージ規模拡大時の配線作業削減が期待できる。
【００５３】
図１３、図１４のいずれの場合も、図１５のように、２列８行の単位ボード５０を構成することになり、この場合、右図のような筐体のスロットであるコネクタ１１００に単位ボード５０を挿入する構成が考えられる。このとき、単位ボード５０がメンテナンスで抜かれたり、障害が発生して機能しなくなったりした場合、隣接する単位ボードのルーティング用インターフェースは接続相手を失い、その方向へのパケット転送が不能となる。そこで、単位ボード５０が抜かれるなどルーティング機能がなくなったスロットに、対向するスロット内の各端子７１、７２が接続されるようなアナログスイッチ７０を搭載することで、経路障害による性能低下を抑制することが可能となる。
【００５４】
図１６は、アナログスイッチ７０の一例として、トランスミッションゲートの回路図を表している。図１５、１６に示されるように、アナログスイッチ７０は少なくとも１つの電界効果トランジスタから構成されており、入力端子７１と、出力端子７２と、制御端子７３とを備える。アナログスイッチ７０は、制御端子７３への電気信号のオンとオフを切り替えることで、入力端子７１の電気信号を出力端子７２に出力する回路である。トランスミッションゲートは、異なるチャネルの電界効果トランジスタから構成されており、制御用回路の極性を問わない双方向動作を実現できる。
【００５５】
すなわち、スロットのルーティング機能がなくなったと筺体側ボードの判断回路が判断した時に、アナログスイッチ７０の制御端子７３にオンの電気信号が入力されるような構成にすることで、アナログスイッチ７０を介したパケット転送が実現できる。つまり、メモリノードが機能していない時に、動作するようなノーマリーオンのスイッチを実現できる。なお、回路の一例としてトランスミッションゲートを示したが、この例に限定されるものではない。また、ルーティング機能の正常動作を判断する判断回路が、筺体側のボードにある例を示したが、この例に限定されるものではない。
【００５６】
図１７、図１８は、プロセシングユニット２００とメモリノード３００を共通のプリント基板上で配線した一例を示している。図１７では基板スロット接続部１２１０側でプロセシングユニット２００とメモリノード３００とを接続する構成を示している。一方、図１８は、プロセシングユニット２００とメモリノード３００を同一のプリント基板上（以下、単位ボードという。）で配線した構成を示している。この場合、プロセシングユニット２００とメモリノード３００との間の配線長を短くすることが可能となるため、信号の遅延時間を低減することが可能となる。さらに、ストレージインターフェースの配線を削減することが可能になる。なお、第１のインターフェース装置６００を単位ボード上に設計しているが、配線として基板スロット接続部１２１０に接続する方式でも構わない。またメモリノード３００同士を単位ボード上で配線した構成でも構わない。
【００５７】
さらに、これらの図では、単位ボードの両面に８個ずつのメモリノードを一列に配置し、表面にのみ１つのプロセシングユニット２００を配置しているが、これに限定するものではない。
【００５８】
このようにプロセシングユニットと、メモリノードを同一の基板上に設けることで、ストレージ装置１０の規模拡大において、メモリノード３００間の配線や、プロセシングユニット２００とメモリノード３００の間の配線などの作業を削減することが可能となる。さらに、プリント基板同士を組み合わせることで、メモリノード３００の格子の内部にプロセシングユニット２００を接続した構成を実現できる。そのため目的とするメモリノード３００までの平均到達ステップ数が低減し、ストレージ性能の向上を図ることができる。
【００５９】
図１９はストレージ装置１０を実装するための単位ブレード５１の具体例を表している。単位ブレード５１は、複数の単位ボード５０から構成され、単位ボード５０を挿入するための複数のスロットと、ネットワークと接続するための複数のネットワークポート５２を備えている。ネットワークポート５２は、プロセシングユニット２００の第１のインターフェース装置６００と接続される。
【００６０】
単位ブレード５１として構成することで、異なる単位ボード５０同士を接続し、単位ボード５０に配置されているすべてのメモリノード３００の相互接続が可能となっている。さらに、単位ブレード５１同士を接続することで、メモリノード３００同士の相互接続が可能であれば、複数の単位ブレード５１をまとめてサーバーラック５３として構成することで、規模拡大が容易なシステムとなる。このような構成の場合、サーバーラック５３内のシステムのうち、一部のみを本実施形態のストレージ装置１０として構成してもかまわない。例えば、ある１段のみをストレージ装置１０として構成し、その他のブレードサーバーは通常のサーバーやストレージサーバーで構成してもよい。このような場合、ストレージ装置１０がその他のホストシステムに接続される必要がある。さらに、複数のブレードサーバーにより構成した場合に、必ずしもすべてを単一のストレージ装置として用いる必要もない。
【００６１】
また、メモリノードの相互接続ができればよいのでラックマウントで構成しなくてもよい。例えば図２０のように、ＰＣスロットのような差し込み口が並んだボードに、ＰＣカードを差し込んでいく方式を一例として示す。この形式によって奥行きの小さいスリムな筺体を実現することができる。さらにパッケージされているので、取り扱いやすいと言ったメリットもある。図ではＰＣカードで表現しているが、これに限定するものではない。
【００６２】
もしくは、図２１のように、あらかじめコントローラーを格子状に敷き詰めたボードを用意しておき、後から不揮発性メモリを追加する構成も可能である。このような場合、不揮発性メモリが接続されていないコントローラーもルーティングを行うことができるところが特徴となっている。コントローラーとプロセシングユニットを並べることで、スケールアウト特性を向上させ、必要に応じてメモリの容量を増やすなど柔軟な規模拡張が可能となっている。この時、ＳＤカードやＵＳＢメモリを追加できるようなスロットがあると望ましい。これにより、個人にとっても構成しやすいストレージ装置が実現できる。
【００６３】
以上に示した本実施形態のストレージ装置１０にあっては、プロセシングユニット２００とメモリノード３００が設けられた単位ボード５０を増設することによって、記憶可能なデータ量を増加させることができるとともに、処理能力も向上する。すなわち、プロセシングユニット２００が増加することによって、外部のネットワークを通じて接続されているクライアントＰＣからの処理依頼に対しても遅延を起こすことなく対応が可能となる。したがって、単位ボード５０を増設するのみで、ネットワークの通信速度の向上や、プロセッサの性能の向上などを伴わずに、容易にストレージ装置１０の性能の向上を図ることが可能となることに本実施形態の利点がある。
【００６４】
以下、ストレージ装置１０における、ホットスワップ機能について説明する。サーバーのメンテナンスの際や故障発生時には、システム運用のために問題個所の交換が行われる。特に、スマートメーターなどの連続稼働要求の厳しいクラウドの世界では、電源を完全停止することなく部品交換するようなホットスワップ機能が不可欠である。
【００６５】
実施形態に係るストレージ装置１０では、単位ボード５０や単位ブレード５１がホットスワップ可能であることが、もっとも単純な構成である。この構成では、最小交換単位が単位ボード５０であるため、１つのメモリノード３００が故障した場合でも、他のメモリノード３００とプロセシングユニット２００を交換する必要がある。そこで、単位ボード５０からプロセシングユニット２００とメモリノード３００がそれぞれホットスワップ可能であれば、故障したメモリノード３００、もしくはプロセシングユニット２００のみを交換することが可能となり、保守コストを削減することが可能となる。
【００６６】
また、一般的にコントローラー８００（図７参照）などに用いられるＬＳＩよりも、寿命があるＮＡＮＤ  Ｆｌａｓｈのような不揮発性メモリの方が故障する可能性が高いと考えられる。つまり不揮発性メモリが故障した場合、メモリノード３００単位で交換を行うと、故障していないコントローラーも含めて交換する必要がある。そこで、メモリノード３００から不揮発性メモリをホットスワップ可能とすることで、故障した不揮発性メモリのみを交換することが可能となり、保守コストを削減することが可能となる。
【００６７】
なお、図１では、各メモリノードが矩形格子の格子点に配置されるように示したが、各メモリノードの配置は、これらの例に限定されない。すなわち、格子の形状は、格子点に配置される各メモリノードが２以上の異なる方向に隣接するメモリノードと接続されればよく、例えば三角形、六角形などでもよい。また、図１では各メモリノードが２次元状に配置されているが、コントローラーの入出力ポートの数を２つ増やして、各メモリノードを３次元的に配置しても構わない。３次元的にメモリノードを配置した場合は、メモリノードは（ｘ、ｙ、ｚ）の３つの値でその位置を指定することができる。また、例えば２次元正方格子からトーラスを構成する場合、対辺に位置するノードを接続することで実現が可能である。例えば、図１０−１で示した例では、メモリノード３００と、メモリノード３２０、メモリノード３００とメモリノード３０４などをトーラス状に接続する。トーラス状にすることで、プロセッシングユニットからのメモリノードへの平均アクセス距離を短くすることができ、性能の向上を図ることができる。
【００６８】
また、ストレージ装置１０に接続可能なプロセッシングユニット２００の数について考える。メモリノード３００の数をＮ、プロセシングユニット２００の数をＭとする。内部が渋滞しないようにパケットを投げるための条件は、「プロセッシングユニット２００が１パケット投げた後、帰ってくるまで次のパケットを投げ入れない」こととなる。パケット応答の待ち時間をｔ［ｓｅｃ］とする。この場合のシステム全体のスループット性能は、Ｍ／ｔ［ＩＯＰＳ］と表される。
【００６９】
プロセッシングユニット２００は、最大でメモリノード３００の数Ｎ個設置可能であるため、ＭはＮ以下となる。また、応答の待ち時間ｔは、片道にかかる平均ステップ数が√Ｎ（すなわち往復で２√Ｎ）なので、１回のルーティングにかかる時間をｔｓ、ルーティング以外の時間（たとえばＮＡＮＤフラッシュなどのメモリへの読み書き時間）をｔｆとすると、ｔ＝２√Ｎ×ｔｓ＋ｔｆとなる。
【００７０】
このとき、プロセッシングユニット２００は時間ｔに１回の割合でパケットを送ればよいので、パケットの処理にｔｃだけかかるとすると、プロセッシングユニット２００の数Ｍはメモリノード３００の数Ｎに対して、（ｔｓ＋ｔｃ）／ｔ＝（１＋ｔｃ／ｔｓ）／（２√Ｎ＋ｔｆ／ｔｓ）以上の割合有ればよいこととなる。つまりＭ＞＝Ｎ×（１＋ｔｃ／ｔｓ）／（２√Ｎ＋ｔｆ／ｔｓ）となる。したがってプロセッシングユニット２００の数ＭはＮ×（１＋ｔｃ／ｔｓ）／（２√Ｎ＋ｔｆ／ｔｓ）以上、Ｎ以下が最適となる。
【００７１】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００７２】
１０  ストレージ装置
１１  クライアントＰＣ
１２  選択回路
１３  プロセシングユニット
１８  入力ポート
１９  出力ポート
５０  単位ボード
５１  単位ブレード
５２  ネットワークポート
５３  サーバーラック
７０  アナログスイッチ
７１  入力端子
７２  出力端子
７３  制御端子
１００  プリント基板
１０１  プリント基板
１０２  プリント基板
１１０  基板スロット接続部
２００  プロセシングユニット
３００  メモリノード
４００  ホストインターフェース
５００  筐体
５５０  ネットワークスイッチ
６００  第１のインターフェース装置
７００  第２のインターフェース装置
８００  コントローラー
８０１  コントローラー
８０２  プロセッサ入出力部
８０３  記憶部入出力部
８１０  入出力ポート
８２０  ＩＯブロック
８３０  入力ポートバッファ
８４０  出力ポートバッファ
８５０  ルーティングコントローラー
８７０  コマンドプロセッサ
９００  第１の不揮発性メモリ
１０００  第２の不揮発性メモリ
１１００  コネクタ
１２００  メモリノード基板
１２１０  基板スロット接続部
１２３０  配線
１２４０  配線
【図１】
2014134981.tif 000003
【図２】
2014134981.tif 000004
【図３】
2014134981.tif 000005
【図４】
2014134981.tif 000006
【図５】
2014134981.tif 000007
【図６】
2014134981.tif 000008
【図７】
2014134981.tif 000009
【図８−１】
2014134981.tif 000010
【図８−２】
2014134981.tif 000011
【図９−１】
2014134981.tif 000012
【図９−２】
2014134981.tif 000013
【図１０−１】
2014134981.tif 000014
【図１０−２】
2014134981.tif 000015
【図１１】
2014134981.tif 000016
【図１２】
2014134981.tif 000017
【図１３】
2014134981.tif 000018
【図１４】
2014134981.tif 000019
【図１５】
2014134981.tif 000020
【図１６】
2014134981.tif 000021
【図１７】
2014134981.tif 000022
【図１８】
2014134981.tif 000023
【図１９】
2014134981.tif 000024
【図２０】
2014134981.tif 000025
【図２１】
2014134981.tif 000026
【手続補正書】
【提出日】平成25年4月3日(2013.4.3)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図７
【補正方法】変更
【補正の内容】
【図７】
2014134981.tif 000027