(57)【特許請求の範囲】
【請求項１】
複数のメモリ部と、複数のルーティング部とを備えるストレージ部と、
前記ストレージ部を外部と接続し、前記ストレージ部を制御するコネクション部と、
前記ストレージ部および前記コネクション部の電源電圧の監視を少なくとも実行するマネージメント部と、を具備し、
前記複数のメモリ部の各々は、不揮発性メモリと前記不揮発性メモリを制御する制御部とを具備し、
前記複数のルーティング部の各々は、前記複数のメモリ部の中の１又は複数のメモリ部に接続され、
前記複数のルーティング部は複数のインターフェースを介して互いに接続され、前記複数のルーティング部の間のパケットの転送を制御し、
前記複数のルーティング部の各々は、前記複数のインターフェースより多数の内部パケット経路を含むストレージシステム。
【請求項２】
前記複数のルーティング部の各々は、第１パケットを記憶する第１記憶部と、前記第１パケットと種類が異なる第２パケットを記憶する第２記憶部とを有し、前記第１記憶部と前記第２記憶部は前記複数のインターフェースの各々に接続される請求項１に記載のストレージシステム。
【請求項３】
前記複数のルーティング部の各々は、前記第１記憶部に記憶される前記第１パケットのルーティング計算を実行する第１計算部と、前記第２記憶部に記憶される前記第２パケットのルーティング計算を実行する第２計算部と、を更に有する請求項２に記載のストレージシステム。
【請求項４】
前記複数のルーティング部の各々は、前記第１パケットと前記第２パケットのいずれかを選択し、選択した前記第１パケットと前記第２パケットのいずれかを前記第１記憶部と前記第２記憶部のいずれかに記憶させる選択部を更に有する請求項２または請求項３に記載のストレージシステム。
【請求項５】
前記第１パケットと前記第２パケットは、送信パケットと返信パケット、ルーティング方向が返信方向のパケットと送信方向のパケット、異なる発行元からの複数のパケット、又は異なる送信先の複数のパケットを含む請求項２乃至請求項４のいずれか一項に記載のストレージシステム。
【請求項６】
前記複数のルーティング部の各々は、前記パケットに記述されたアドレスの最下位ビットを無視し、前記最下位ビット以外のその他の上位ビットに基づいてルーティングを行う請求項１乃至請求項５のいずれか一項に記載のストレージシステム。
【請求項７】
前記ストレージ部は、前記複数のルーティング部の中のいずれかのルーティング部から転送される前記パケットを解析し、解析結果に基づいて、前記メモリ部に前記パケットを送信するパケット制御部を更に備える請求項１乃至請求項６のいずれか一項に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、一般的に、ストレージシステムに関する。
【背景技術】
【０００２】
ストレージシステムを備える複数の情報処理装置を、相互にネットワークで接続し、一つの情報処理システムを構成する場合がある。このような情報処理システムの一例としては、例えば、クラウドコンピューティングシステム等がある。近年では、情報処理システムにおけるクラウドデータ等のデータの利用が増加する傾向にある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１０３９２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
デッドロックの発生を防止できるストレージシステムを提供する。
【課題を解決するための手段】
【０００５】
実施形態によれば、ストレージシステムは、複数のメモリ部と複数のルーティング部とを備えるストレージ部と、前記ストレージ部を外部と接続し、前記ストレージ部を制御するコネクション部と、前記ストレージ部および前記コネクション部の電源電圧の監視を少なくとも実行するマネージメント部と、を具備し、前記複数のメモリ部の各々は、不揮発性メモリと前記不揮発性メモリを制御する制御部とを具備し、前記複数のルーティング部の各々は、前記複数のメモリ部の中の１又は複数のメモリ部に接続され、前記複数のルーティング部は複数のインターフェースを介して互いに接続され、前記複数のルーティング部の間のパケットの転送を制御し、前記複数のルーティング部の各々は、前記複数のインターフェースより多数の内部パケット経路を含む。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係るストレージシステムを示すブロック図。
【図２】第１実施形態に係るストレージ部を示すブロック図。
【図３】第１実施形態に係るＦＰＧＡを示すブロック図。
【図４】第１実施形態に係るＮＭを示すブロック図。
【図５】第１実施形態に係るパケット構成を示すブロック図。
【図６】第１実施形態に係るＣＵを示すブロック図。
【図７】第１実施形態に係るＲＣのパケット転送動作を示すフロー。
【図８】第１実施形態に係る宛先Ｘ，Ｙの構成を示す図。
【図９】比較例に係る転送ステップ数を説明するための図。
【図１０】第１実施形態に係る転送ステップ数を説明するための図。
【図１１】第２実施形態に係るルーティング回路の詳細構成を示すブロック図。
【図１２】第２実施形態に係るパケット処理動作を示すフロー。
【図１３】比較例に係るパケット処理を示すタイミングチャート。
【図１４Ａ】図１３の時刻ｔ１におけるパケット処理を示すブロック図。
【図１４Ｂ】図１３の時刻ｔ２におけるパケット処理を示すブロック図。
【図１４Ｃ】図１３の時刻ｔ３におけるパケット処理を示すブロック図。
【図１４Ｄ】図１３の時刻ｔ４におけるパケット処理を示すブロック図。
【図１５】第２実施形態に係るパケット処理を示すタイミングチャート。
【図１６】第３実施形態に係る記憶部の冗長化の一例を示す図。
【図１７】第３実施形態に係る記憶部の拡張化の一例を示す図。
【図１８】第３実施形態に係るメモリシステムを収容するエンクロージャをマウント可能なサーバラックを示す斜視図。
【図１９】第３実施形態に係るストレージシステムが収容されるエンクロージャを示す斜視図。
【図２０】エンクロージャの前面図。
【図２１】エンクロージャの背面図。
【図２２】エンクロージャの内部の上面図。
【図２３】バックプレーンの構成例を示す図。
【図２４】エンクロージャの使用形態の一例を示す図。
【図２５】ＮＭカードの構成の一例を示すブロック図。
【図２６】ＮＭカードの概観図。
【図２７】ＮＭカードの概観図。
【図２８】ＮＣ間の論理的な接続関係を示す図。
【図２９】Ｉ／Ｆカードの構成の一例を示すブロック図。
【図３０】ＮＭカードとＩ／Ｆカードとの間の接続関係を示す図。
【図３１】ＣＵカードの構成の一例を示すブロック図。
【図３２】ＭＭカードの構成の一例を示すブロック図。
【図３３】ＮＭカード、ＣＵカード、およびＭＭカードの間の接続関係を示す図。
【図３４】ＣＵカードとＭＭカードとの間の接続関係を示す図。
【図３５】第１接続例において使用されるコネクタ群を示す図。
【図３６】第１接続例による具体的な接続関係を示す図。
【図３７】第１接続例によって論理的に構築される記憶部を示す図。
【発明を実施するための形態】
【０００７】
以下、図面を参照して、発明の実施形態について説明する。なお、以下の説明において、実質的に同一の機能及び要素については、同一符号を付し、必要に応じて説明を行う。また、本明細書では、いくつかの要素に複数の表現の例を付している。なおこれら表現の例はあくまで例示であり、上記要素が他の表現で表現されることを否定するものではない。また、複数の表現が付されていない要素についても、別の表現で表現されてもよい。
【０００８】
さらに、図面は模式的なものであり、厚みと平面寸法との関係や各層の厚みの比率などは現実のものと異なることがある。また、図面相互間において互いの寸法の関係や比率が異なる部分が含まれることもある。
【０００９】
（第１実施形態）
［１．構成］
［１−１．全体構成（ストレージシステム）］
まず、図１を用い、第１実施形態に係るストレージシステム１００の全体構成を簡単に説明する。
【００１０】
図示するように、第１実施形態に係るストレージシステム１００は、記憶部１０１、コネクションユニット（ＣＵ）１１０、インタフェース部（Ｉ／Ｆ部）１２０、マネジメントモジュール（ＭＭ）１３０、電源装置ＰＳＵ、および補助電源装置ＢＢＵを備える。
【００１１】
［記憶部］
記憶部（ストレージ部）１０１は、マトリックス状に配置された複数のルーティング回路（ＲＣ）１１１とノードモジュール（ＮＭ）１４０とを備える。上記構成により、記憶部１０１は、複数のＮＭ１４０に対してデータを分散して記憶し、分散的かつ並列的にデータを処理する。
【００１２】
ルーティング回路（ルーティング部、トーラスルーティング）１１１は、メッシュ状のネットワークにより、コネクションユニット（ＣＵ）１１０や他のルーティング回路１１１等から転送されたデータを含むパケットを、所定の方式にて転送するように構成される。ルーティング回路１１１は、２つ以上のインタフェース１５０を夫々備える。ルーティング回路１１１は、隣接するルーティング回路１１１と、インタフェース１５０を介して互いに電気的に接続される。ルーティング回路１１１の詳細については、後述する。
【００１３】
ＮＭ（メモリ部）１４０は、ルーティング回路１１１およびここでは図示しないパケットマネジメントユニット（ＰＭＵ）を介して、隣接するＮＭ１４０と互いに電気的に接続される。
【００１４】
図１では、各ＮＭ１４０が、其々格子点に配置された、矩形状のネットワークの例を示す。ここでは、格子点の座標を、１０進数表記の座標（ｘ，ｙ）で示す。格子点に配置されるＮＭ１４０の位置情報は、当該格子点の座標と対応する相対的なノードアドレス（ｘD，ｙD）（＝１０進数表記）で示されるものとする。また、図示する例では、左上隅に位置するＮＭ１４０が、原点のノードアドレス（０，０）を有する。各ＮＭ１４０の相対的なノードアドレスは、横方向（Ｘ方向）および縦方向（Ｙ方向）の整数値が変動することで、この変動に伴い増減する。
【００１５】
各ＮＭ１４０は、２以上の異なる方向に隣接するＮＭ１４０と接続される。例えば、最も左上隅のＮＭ１４０（０，０）は、ルーティング回路１１１を介して、Ｘ方向に隣接するＮＭ１４０（１，０）と、Ｘ方向とは異なる方向であるＹ方向に隣接するＮＭ１４０（０，１）と、斜め方向に隣接するＮＭ１４０（１，１）と接続される。以降、相対的なノードアドレス（ｘD、ｙD）で表されるＮＭ１４０を、単にノード（ｘD、ｙD）と表記する場合がある。
【００１６】
なお、図１では、各ＮＭ１４０が、矩形格子の格子点に配置されるように示したが、各ＮＭ１４０の配置の様態は、この例に限定されない。すなわち、格子の形状は、格子点に配置される各ＮＭ１４０が２以上の異なる方向に隣接するＮＭ１４０と接続されればよく、例えば三角形、六角形などでもよい。また、図１では、各ＮＭ１４０が、２次元状に配置されるが、各ＮＭ１４０が３次元状に配置されてもよい。３次元状にＮＭ１４０を配置する場合は、（ｘ、ｙ、ｚ）の３つの値で各ＮＭ１４０を指定することができる。また、ＮＭ１４０が２次元状に配置される場合には、対辺に位置するＮＭ１４０同士を接続することによって、ＮＭ１４０をトーラス状に接続するようにしてもよい。記憶部１０１の詳細については、後述する。
【００１７】
［コネクションユニット（ＣＵ）］
ＣＵ１１０は、外部のユーザと接続可能な所定のコネクタを備え、外部からの要求（コマンド、アドレス等）に応じて、記憶部１０１にデータを記憶し、記憶部１０１から読み出したデータを外部に出力する。具体的には、ＣＵ１１０は、後述する演算装置と記憶装置とを備える。ＣＵ１１０の演算装置は、記憶装置をワークエリアとして使用しながらサーバアプリケーションプログラムを実行する。
【００１８】
ＣＵ１１０は、サーバアプリケーションによる制御の下で、外部からの要求を処理する。ＣＵ１１０は、外部からの要求を処理する過程において、記憶部１０１に対するアクセスを実行する。ＣＵ１１０は、記憶部１０１にアクセスする際には、ルーティング回路１１１が転送したり実行したりすることが可能なパケットを生成し、生成したパケットを、自ＣＵ１１０に接続されるルーティング回路１１１に送信する。
【００１９】
図１の例では、ストレージシステム１００は、４つのＣＵ１１０を備える。４つのＣＵ１１０は、夫々異なるルーティング回路１１１に一対一に接続される。
【００２０】
なお、ＣＵ１１０の数は、任意に構成することが可能である。ＣＵ１１０は、記憶部１０１を構成する任意のルーティング回路１１１に接続されることが可能である。また、１つのＣＵ１１０が複数のルーティング回路１１１に接続されてもよいし、１つのルーティング回路１１１が複数のＣＵ１１０に接続されてもよい。また、記憶部１０１を構成する複数のルーティング回路１１１のうちの任意のルーティング回路１１１にＣＵ１１０が接続されてもよい。ＣＵ１１０の詳細については、後述する。
【００２１】
［インタフェース部（Ｉ／Ｆ部）］
Ｉ／Ｆ部１２０は、記憶部１０１を拡張するための接続インタフェースである。例えば、物理的に異なる２台のストレージシステム１００が、互いにＩ／Ｆ部１２０を介して電気的に接続することが可能である。このように接続することで、各ストレージシステム１００が備える記憶部１０１が論理的に結合されて、１つの記憶部１０１として使用可能となる。Ｉ／Ｆ部１２０は、１以上のルーティング回路１１１からインタフェース１５０により電気的に接続される。ここでは、２つのルーティング回路１１１に接続される各インタフェース１５０が、Ｉ／Ｆ部１２０に夫々接続される。
【００２２】
［マネジメントモジュール（ＭＭ）］
ＭＭ１３０は、各ＣＵ１１０と、ＮＭ（０，０）とに電気的に接続される。ＭＭ１３０は、図示しないＢＭＣ（Base  Management  Controller）を備える。ＭＭ１３０は、ＢＭＣの機能の一環として、例えば、環境温度の監視、ファンの回転数の監視とコントロール、電源電流および電源電圧の監視および制御、各ＣＵ１１０のステータスの記録、各ＣＵ１１０の温度の監視、ＣＵ１１０のリセット等を実行する。
【００２３】
また、ＭＭ１３０は、ＢＭＣの機能の他に、記憶部１０１に対する処理（ＮＭ制御処理）を実行する。ＮＭ制御処理は任意である。例えば、後述する第１のメモリ１４１がＮＡＮＤ型フラッシュメモリの場合には、ＭＭ１３０は、第１のメモリ１４１のウェアレベリングを実行してもよい。また、ＭＭ１３０は、ＮＭ１４０の故障が発見されたとき、故障したＮＭ１４が実装されているカード基板の交換を、ＣＵ１１０を介して外部に通知してもよい。また、ＭＭ１３０は、カード基板の交換後、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）のリビルドを行ってもよい。
【００２４】
なお、ＮＭ１４０の故障の検知の主体は、後述するノードコントローラ（ＮＣ）１４０Ｃでもよいし、ＣＵ１１０でもよい。ＮＭ１４０の故障の検知は、そのＮＭ１４０が有する第１のメモリ１４１からのリードデータに対するエラー検出に基づいて実行されてもよい。ＭＭ１３０は、記憶部１０１に対して処理を行う際には、処理に応じたパケットを発行する。ＭＭ１３０は、例えば、後述する図２に示す様式に準拠するパケットを発行する。
【００２５】
［電源装置（ＰＳＵ）］
電源装置（主電源部）ＰＳＵは、外部電源ＶＣから与えられる外部電源電圧を、所定の直流電圧に変換し、上記変換後の電源電圧ＶＣＯを上記各構成部（１０１、１１０、１２０、１３０）に供給する。外部電源ＶＣは、例えば、１００Ｖや２００Ｖ等の交流電源である。第１実施形態に係るストレージシステム１００は、２つの電源装置ＰＳＵ−１，ＰＳＵ−２を備える（図示せず）。しかし、電源装置ＰＳＵの構成は、これに限られることはない。
【００２６】
［補助電源装置（ＢＢＵ）］
補助電源装置（バッテリ装置、補助電源部）ＢＢＵは、電源装置ＰＳＵから電源電圧ＶＣＯを受けることで、自身ＢＢＵに蓄電する。そして、補助電源装置ＢＢＵは、ストレージシステム１００が外部電源ＶＣから電気的に遮断された場合に、所定の補助電源電圧を各構成部（１０１、１１０、１２０、１３０）に供給する補助電源として働く。例えば、補助電源装置ＢＢＵは、停電等が発生して外部電源ＶＣからの電源電圧の供給が停止した場合であっても、上記各構成部に補助電源電圧を供給し、記憶部１０１を動作させる。そして、ＮＭ１４０が備える図示しないノードコントローラ（ＮＣ）１４０Ｃは、供給された補助電源電圧により、ユーザデータを第１のメモリ１４１に書き込むこと（データコピー）により、ユーザデータを保護するバックアップを行う。
【００２７】
［インタフェース規格］
なお、第１実施形態では、上記各構成を電気的に接続するインタフェースは、以下の規格が適用可能である。
【００２８】
まず、各ルーティング回路１１１を互いに接続するインタフェース１５０には、Low voltage differential signaling（ＬＶＤＳ）規格等が適用される。
【００２９】
ルーティング回路１１１とＣＵ１１０とを電気的に接続するインタフェース１５０には、PCI Express（ＰＣＩｅ）規格等が適用される。
【００３０】
ルーティング回路１１１とＩ／Ｆ部１２０とを電気的に接続するインタフェース１５０には、上記ＬＶＤＳ規格、およびJoint test action group（ＪＴＡＧ）規格等が適用される。
【００３１】
ＮＭ１４０とＭＭ１３０とを電気的に接続するインタフェース１５０には、上記ＰＣＩｅ規格、およびInter-integrated circuit（Ｉ２Ｃ）規格が適用される。
【００３２】
なお、これらの規格は一例であり、必要に応じてその他の規格が適用可能であることは勿論である。
【００３３】
［１−２．記憶部１０１の構成］
次に、図２を用い、記憶部１０１の構成の一例について説明する。
【００３４】
図２に示すように、記憶部１０１は、１つのルーティング回路１１１と４つのＮＭ１４０とを有する複数のＦＰＧＡ（field-programmable gate array）を備える。ここでは、４つのＦＰＧＡ０〜ＦＰＧＡ３を一例として示す。例えば、ＦＰＧＡ０は、１つのルーティング回路１１１と、４つのＮＭ（０，０）、ＮＭ（１，０）、ＮＭ（０，１）、ＮＭ（１，１）を備える。
【００３５】
４つのＦＰＧＡは、各ＦＰＧＡアドレスが、２進数表記で（０００,０００）、（０１０,０００）、（０００,０１０）、（０１０,０１０）で表されるものとする。
【００３６】
各ＦＰＧＡにおいて、１つルーティング回路１１１と４つのＮＭとはインタフェース１５１にて、図示しないパケットマネジメントユニット（ＰＭＵ）を介して電気的に接続される。
【００３７】
ルーティング回路１１１は、パケット転送動作において、ＦＰＧＡアドレスの宛先ｘ, 宛先ｙのうちの最下位ビットＢＸ０、ＢＹ０を無視して（マスクして）、ルーティングを行う。パケット転送動作については、後述する。
【００３８】
［１−３．ＦＰＧＡの構成］
次に、図３を用い、ＦＰＧＡの構成の一例について説明する。ここでは、図２に示すＦＰＧＡ０を一例に挙げて説明する。
【００３９】
図３に示すように、ＦＰＧＡ０は、１つのルーティング回路１１１と、４つのＮＭ１４０と、５つのパケットマネジメントユニット（ＰＭＵ）１１２と、ＣＵインタフェース（ＰＣＩｅ  Ｉ／Ｆ）１１３とを備える。
【００４０】
ＰＭＵ（パケット制御部）１１２は、ＣＵ１１０およびＮＭ１４０に対応して設けられ、ＣＵ１１０およびルーティング回路１１１からのパケットを解析し、解析したパケットに記述される座標（相対的なノードアドレス）と自分の座標とが一致する場合、対応するＮＭ１４０にそのパケットを直接的に送信する。一方、ＰＭＵ１１２は、解析したパケットに記述される座標と自分の座標とが一致しない場合（他の座標である場合）、その旨をルーティング回路１１１に返信する。
【００４１】
例えば、最終的な目的位置のノードアドレスが（３，３）である場合、当該ノードアドレス（３，３）に接続されるＰＭＵ１１２は、解析したパケットに記述される座標（３，３）と自分の座標（３，３）とが一致すると判定する。そのため、当該ノードアドレス（３，３）に接続されるＰＭＵ１１２は、解析したパケットを自分に接続されるノードアドレス（３，３）のＮＭ１４０に送信する。送信されたパケットは、ＮＭ１４０の図示しないノードコントローラ（ＮＣ）１４０Ｃにより、ＮＭ１４０中の不揮発性メモリに記憶される等のパケットに記載の要求に基づいた所定の処理が行われる。
【００４２】
ＣＵインタフェース（ＰＣＩｅ  Ｉ／Ｆ）１１３は、ＣＵ１１０の要求やパケット等を解析する。また、ＣＵインタフェース１１３は、解析された要求やパケット等を、ＰＭＵ１１２に送信する。なお、送信されたパケットは、ルーティング回路１１１を介して、他のＮＭ１４０に転送される。
【００４３】
［１−４．ノードモジュール（ＮＭ）の構成］
次に、図４を用い、ＮＭ１４０の構成の一例について説明する。ここでは、ＮＭ（０，０）１４０を一例に挙げて説明する。
【００４４】
図示するように、ＮＭ（０，０）１４０は、ノードコントローラ（ＮＣ）１４０Ｃと、ストレージメモリとして機能する第１のメモリ１４１と、ＮＣ１４０Ｃがワークエリアとして使用する第２のメモリ１４２とを備える。
【００４５】
ＮＣ１４０Ｃには、ＰＭＵ１１２が電気的に接続される。ＮＣ１４０Ｃは、ＣＵ１１０または他のＮＭ１４０からＰＭＵ１１２を介してパケットを受信したり、ＣＵ１１０または他のＮＭ１４０にＰＭＵ１１２を介してパケットを送信したりする。ＮＣ１４０は、パケットの宛先が自身のＮＭ１４０である場合には、そのパケット（そのパケットに記録されるコマンド）に応じた処理を実行する。例えば、コマンドがアクセスコマンド（リードコマンドまたはライトコマンド）である場合には、ＮＣ１４０Ｃは、第１のメモリ１４１に対するアクセスを実行する。ＮＣ１４０Ｃは、受信したパケットの宛先が自身のＮＭ１４０ではない場合には、そのパケットを自身のＮＭ１４０に接続されている他のＮＭ１４０に転送する。
【００４６】
第１のメモリ１４１としては、例えば、ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリという。）、ビットコストスケーラブルメモリ（ＢｉＣＳ）、磁気抵抗メモリ（ＭＲＡＭ）、相変化メモリ（ＰｃＲＡＭ）、抵抗変化型メモリ（ＲＲＡＭ（登録商標））、またはこれらの組み合わせが適用可能である。
【００４７】
第２のメモリ１４２としては、ＤＲＡＭ（dynamic random access memory）等の各種ＲＡＭが適用可能である。なお、第１のメモリ１４１がワークエリアとしての機能を提供する場合、第２のメモリ１４２はＮＭ１４０に配置されなくともよい。
【００４８】
［１−５．パケット構成］
次に、図５を用い、パケット構成の一例について説明する。
【００４９】
図５に示すように、第１実施形態に係るパケットは、ヘッダ領域ＨＡ、ペイロード領域ＰＡ、および冗長領域ＲＡにより構成される。
【００５０】
ヘッダ領域ＨＡには、例えば、送り元のＸ方向およびＹ方向のアドレス（from_x, from_y）、および送り先のＸ方向およびＹ方向のアドレス（to_x, to_y）等が記述される。
【００５１】
ペイロード領域ＰＡには、例えば、コマンドまたはデータ等が記述される。ペイロード領域ＰＡのデータサイズは、可変である。
【００５２】
冗長領域ＲＡには、例えば、ＣＲＣ（cyclic redundancy check）符号等が記述される。ＣＲＣ符号は、ペイロード領域ＰＡのデータの誤りを検出するために用いられる符号（情報）である。
【００５３】
上記構成を備えるパケットを受信したルーティング回路１１１は、所定の転送アルゴリズムに基づいて、ルーティング先を決定する。第１実施形態に係るルーティング回路１１１は、送り先のＦＰＧＡのＸ方向およびＹ方向のアドレス（to_x, to_y）の最下位ビットＢＸ０、ＢＹ０を無視して（マスクして）、ルーティングを行う。このような転送アルゴリズムに基づいて、パケットは、ルーティング回路１１１の間を転送されて、最終的な目的地のノードアドレスのＮＭ１４０に到達する。
【００５４】
例えば、ルーティング回路１１１は、上記転送アルゴリズムに基づき、自身のＮＭ１４０から宛先のＮＭ１４０までの転送回数が最小となる経路上に位置するＮＭ１４０を、転送先のＮＭ１４０に決定する。また、ルーティング回路１１１は、上記転送アルゴリズムに基づき、自身のＮＭ１４０から宛先のＮＭ１４０までの転送回数が最小となる経路が複数存在する場合には、複数の経路から１つの経路を任意の方法で選択する。ルーティング回路１１１は、同様に、自身のＮＭ１４０に接続される複数のＮＭ１４０のうちの転送回数が最小となる経路上に位置するＮＭ１４０が故障していたりビジーであったりする場合には、他のＮＭ１４０を転送先に決定する。
【００５５】
ここで、記憶部１０１は、複数のＮＭ１４０が互いにメッシュネットワーク状で論理的に接続されている。そのため、記憶部１０１におけるパケットの転送回数が最小となる経路が複数存在する場合がある。この場合において、特定のＮＭ１４０を宛先とするパケットが複数発行されても、発行された複数のパケットは、上述の転送アルゴリズムにより複数の経路に分散して転送される。そのため、特定のＮＭ１４０に対するアクセス集中を回避でき、ストレージシステム１００全体のスループットの低下を抑制することができる。
【００５６】
［１−６．ＣＵの構成］
次に、図６を用い、ＣＵ１１０の構成の一例について説明する。
【００５７】
図６に示すように、第１実施形態に係るＣＵ１１０は、ＣＰＵ（central processing unit）６０１と、第３のメモリ６０３とを備える。
【００５８】
ＣＰＵ（制御部、演算装置）６０１は、外部のユーザと接続可能な所定のコネクタを介して、外部からの要求（コマンド、アドレス等）に応じて、記憶部１０１を制御する。ＣＰＵ６０１は、第３のメモリ６０３をワークエリアとして使用しながら、サーバアプリケーションプログラムを実行する。具体的には、ＣＰＵ６０１は、サーバアプリケーションによる制御の下で、外部からの要求を処理する。ＣＰＵ６０１は、記憶部１０１にアクセスする際には、ルーティング回路１１１が転送したり実行したりすることが可能なパケットを生成し、生成したパケットを、自ＣＵ１１０に接続されるルーティング回路１１１に送信する。
【００５９】
第３のメモリ６０３は、ＣＰＵ６０１のワークエリアとして使用されるメモリである。第３のメモリ６０３は、例えば、ＤＲＡＭ、ＳＲＡＭ等の揮発性の半導体メモリが適用可能である。しかし、第３のメモリ６０３は、これらに限られることはない。
【００６０】
［２．動作］
［２−１．パケット転送動作］
次に、図７および図８を用い、第１実施形態に係るストレージシステム１００のパケット転送動作を説明する。ここでは、図７に示すフローに則して説明する。
【００６１】
図７のステップＢ１において、ルーティング回路１１１は、ＣＵ１１０や他のルーティング回路１１１からパケットを受信すると、そのパケットのヘッダＨＡに記述された送り先のＸ方向およびＹ方向のアドレスを解析する。この際、ルーティング回路１１１は、送り先のＦＰＧＡのＸ方向およびＹ方向のアドレスの最下位ビットを無視して（マスクして）、ルーティングを行う。
【００６２】
例えば図８に示すように、第１実施形態に係るパケットの送り先のＦＰＧＡのＸ方向およびＹ方向のアドレス（to_x, to_y）は、それぞれ１６ビットで記述されている。そこで、ステップＢ１において、ルーティング回路１１１は、送り先のＦＰＧＡのＸ方向およびＹ方向のアドレス（to_x, to_y）の図８に斜線で示す最下位ビットＢＸ０，ＢＹ０を無視して、パケットのルーティングを行う。換言すると、ルーティング回路１１１は、送り先のＦＰＧＡのＸ方向およびＹ方向のアドレス（to_x, to_y）の最下位ビットＢＸ０，ＢＹ０にかかわらず、パケットのルーティングを行う。
【００６３】
より具体的には、図２に示したように、４つのＦＰＧＡアドレスが、２進数表記（０００,０００）、（０１０,０００）、（０００,０１０）、（０１０,０１０）で表される場合、ルーティング回路１１１は、上記４つのＦＰＧＡアドレスの最下位ビットを無視して、パケットのルーティングを行う。つまり、ルーティング回路１１１は、上記４つのＦＰＧＡアドレスの最下位ビットを無視する結果、（００Ｘ,００Ｙ）、（０１Ｘ,００Ｙ）、（００Ｘ,０１Ｙ）、（０１Ｘ,０１Ｙ）で表されるＦＰＧＡアドレスに基づいて、パケットのルーティングを行う。ここで、上記アドレス表記において、ＸおよびＹのビットの状態（“０”状態または“１”状態）は、任意である。
【００６４】
続いて、図７のステップＢ２において、ルーティング回路１１１は、受け取ったパケットに記述されるＦＰＧＡアドレスの宛先Ｘおよび宛先Ｙが自分宛か否かを判定する。この際、ルーティング回路１１１は、ステップＢ１において説明したように、送り先のＦＰＧＡアドレスの最下位ビットＢＸ０，ＢＹ０を無視した状態で、アドレスが自分宛か否かを判定する。
【００６５】
ステップＢ３において、受け取ったパケットのＦＰＧＡアドレスが自分宛でない場合（Ｂ２でＮＯ）、ルーティング回路１１１は、転送回数が最小となる経路にて、パケットを他のＲＣ（他のルーティング回路１１１）に転送し、この動作を終了する。
【００６６】
一方、ステップＢ４において、受け取ったパケットのＦＰＧＡアドレスが自分宛である場合（Ｂ２でＹＥＳ）、ルーティング回路１１１は、送り先のＦＰＧＡアドレスの全ビットを認識して、当該認識したＸ方向およびＹ方向のアドレス先のノードアドレスにパケットを割り振る。換言すると、ステップＢ４において、ルーティング回路１１１は、送り先のＦＰＧＡアドレスの最下位ビットＢＸ０，ＢＹ０を無視しないで、当該認識したＸ方向およびＹ方向のアドレス先のノードアドレスに相対的にパケットを割り振る。より具体的には、ルーティング回路１１１は、目的のノードアドレスに対応する自身のＰＭＵ１１２にパケットを転送する。パケットを転送されたＰＭＵ１１２は、目的のノードアドレスのＮＭ１４０にパケットを割り振り、この動作を終了する。
【００６７】
［作用効果］
以上説明したように、第１実施形態に係るストレージシステム１００の構成および動作によれば、少なくとも下記（１）乃至（２）の効果が得られる。
【００６８】
（１）パケットの転送ステップ数を低減できる。
【００６９】
この説明においては、比較例と第１実施形態とを対比して説明する。
【００７０】
Ａ）比較例の場合
まず、比較例に係るストレージシステムについて、図９を用いて説明する。図９に示すように、比較例に係るストレージシステムは、第１実施形態に係るストレージシステム１００と比較して、ルーティング回路１１１を備えていない。そのため、比較例に係るパケットは、ルーティング回路１１１を介することなく、直接的にＮＭの間を転送される。
【００７１】
従って、パケット転送動作において、送り先のＦＰＧＡのＸ方向およびＹ方向のアドレス（to_x, to_y）の最下位ビットＢＸ０，ＢＹ０を無視して、パケットのルーティングを行うこともない。換言すると、比較例に係る記憶部では、送り先のＦＰＧＡの全てのＸ方向およびＹ方向のアドレスに基づき、パケットのルーティングを行う。
【００７２】
例えば、図９に示すように、パケットがノードアドレス（０，０）からノードアドレス（３，３）に転送される場合、パケットの転送回数が最小となる経路では、転送ステップ数は、合計で６ステップ（１Ｓ〜６Ｓ）必要である。具体的には、パケットは、ノードアドレス：（０，０）→（１，０）→（２，０）→（３，０）→（３，１）→（３，２）→（３，３）に示す経路にて、直接的にＮＭを介して転送される。
【００７３】
また、ショートカットするような斜め方向の経路（例えば、ノードアドレス：（０，０）→（１，１）→（２，２）→（３，３））にてパケットを転送することもできない。
【００７４】
そのため、比較例に係るストレージシステムは、パケットの転送数が増大する。例えばＣＵとＮＭとの転送距離が遠い場合、転送ステップ数がより増大する。転送ステップ数が増大すると、これに伴って、レイテンシが増大する原因ともなり得る。
【００７５】
Ｂ）第１実施形態の場合
上記比較例に対し、第１実施形態に係るストレージシステム１００の記憶部１０１が備える各ＦＰＧＡは、１つのルーティング回路１１１と、４つのＮＭ１４０と、５つのパケットマネジメントユニット（ＰＭＵ）１１２と、ＣＵインタフェース（ＰＣＩｅ  Ｉ／Ｆ）１１３とを備える。
【００７６】
上記構成において、ルーティング回路１１１は、送り先のＦＰＧＡアドレスのＸ方向およびＹ方向のアドレス（to_x, to_y）の最下位ビットＢＸ０、ＢＹ０を無視して（マスクして）、ルーティングを行う。換言すると、ルーティング回路１１１は、送り先のＦＰＧＡのＸ方向およびＹ方向のアドレス（to_x, to_y）の最下位ビットＢＸ０、ＢＹ０にかかわらず、パケットの転送を行う。このような転送アルゴリズムに基づいて、パケットは、ルーティング回路１１１の間を転送されて、最終的な目的地のノードアドレスのＮＭ１４０に到達する。
【００７７】
例えば、図１０に示すように、パケットがノードアドレス（０，０）（＝２進数表記：（０００，０００））からノードアドレス（３，３）（＝２進数表記：（０１１，０１１）に同様に転送される場合を一例に挙げて説明する。この場合、パケットの転送回数が最小となる経路では、転送ステップ数を、合計で３ステップ（１Ｓ〜３Ｓ）に低減することができる。
【００７８】
（１Ｓ）  
まず、各ルーティング回路１１１は、送り先のＦＰＧＡアドレスのＸ方向およびＹ方向のＦＰＧＡアドレスの最下位ビットＢＸ０、ＢＹ０を無視して、ルーティングを行う（Ｂ１）。そのため、ルーティング回路１１１は、パケットに記述されるアドレスが自分宛でない限り、各ＦＰＧＡアドレス（００Ｘ，００Ｙ）〜（０１Ｘ，０１Ｙ）に基づいて、パケットのルーティングを行う。
【００７９】
例えば、図１０に示すように、パケットの宛先がノードアドレス（３，３）（＝２進数表記：（０１１，０１１）である場合、ＦＰＧＡ０のルーティング回路１１１は、自分のＦＰＧＡアドレス（００Ｘ，００Ｙ）とパケットに記述されるノードアドレス（３，３）（＝２進数表記：（０１１，０１１）とが一致するか否かを判定する（Ｂ２）。この際、ルーティング回路１１１は、ＦＰＧＡアドレスの最下位ビットＢＸ０、ＢＹ０を無視した状態で、両アドレスが互いに一致するか否かを判定する。そのため、この場合、ルーティング回路１１１は、自分のＦＰＧＡアドレス（００Ｘ，００Ｙ）と、パケットに記述されるノードアドレス（３，３）（＝２進数表記：（０１Ｘ，０１Ｙ）とは一致しないと判定し、隣接するＦＰＧＡ１にパケットを転送する（Ｂ３）。
【００８０】
（２Ｓ）  
パケットが転送されたＦＰＧＡ１のルーティング回路１１１は、同様に、自分のＦＰＧＡアドレス（０１Ｘ，００Ｙ）とパケットに記述されるノードアドレス（３，３）（＝２進数表記：（０１１，０１１）とが一致するか否かを判定する（Ｂ２）。この際、ルーティング回路１１１は、自分のＦＰＧＡアドレス（０１Ｘ，００Ｙ）と、パケットに記述されるノードアドレス（３，３）（＝２進数表記：（０１Ｘ，０１Ｙ）とは一致しないと判定し、隣接するＦＰＧＡ３にパケットを転送する（Ｂ３）。
【００８１】
（３Ｓ）  
パケットが転送されたＦＰＧＡ３のルーティング回路１１１は、同様に、自分のＦＰＧＡアドレス（０１Ｘ，０１Ｙ）とパケットに記述されるノードアドレス（３，３）（＝２進数表記：（０１１，０１１）とが一致するか否かを判定する（Ｂ２）。この際、ルーティング回路１１１は、自分のＦＰＧＡアドレス（０１Ｘ，０１Ｙ）と、パケットに記述されるノードアドレス（３，３）（＝２進数表記：（０１Ｘ，０１Ｙ）とが一致すると判定する。
【００８２】
一致した場合、ＦＰＧＡ３のルーティング回路１１１は、パケットに記述されたＦＰＧＡアドレスの全ビットを認識して（（３，３）（＝２進数表記：（０１１，０１１））、当該認識したＸ方向およびＹ方向のアドレス先の自分のノードアドレスにパケットを割り振る（Ｂ４）。換言すると、ルーティング回路１１１は、パケットに記述されたＦＰＧＡアドレスの最下位ビットＢＸ０，ＢＹ０を無視しないで、当該認識したＸ方向およびＹ方向のアドレス先のノードアドレスに相対的にパケットを割り振る。
【００８３】
より具体的には、ルーティング回路１１１は、目的のノードアドレス（３，３）（＝２進数表記：（０１１，０１１）に対応する自身のＰＭＵ１１２にパケットを転送する。パケットを転送されたＰＭＵ１１２は、右斜め下の目的のノードアドレス（３，３）（＝２進数表記：（０１１，０１１）のＮＭ１４０にパケットを割り振る。なお、パケットを割り振られたＮＭ（３，３）では、当該ＮＭ（３，３）が備えるＮＣ１４０Ｃが、パケットに記述されたコマンドに基づいて、第１のメモリ１４１にパケット中のデータを書き込む等の所望の動作を行う。
【００８４】
以上説明したように、第１実施形態に係るストレージシステム１００は、パケット転送動作において、まず、最下位ビットＢＸ０，ＢＹ０を無視し、その他の上位ビットのアドレスに基づいて、自分のアドレスとパケットに記述されるアドレスとが一致するか否かを判定する（Ｂ１〜Ｂ２）。次に、自分のアドレスとパケットに記述されるアドレスとが一致する場合、ルーティング回路１１１は、全てのビットを考慮し、無視した最下位ビットＢＸ０，ＢＹ０に対応する自分の配下のＮＭ１４０のいずれかにパケットを割り振る（Ｂ４）。
【００８５】
このような構成および動作により、パケットの転送ステップ数を低減できる。例えば、第１実施形態では、比較例に比べて、パケットの転送ステップ数を半分以下に低減することができる。さらに、Ｘ方向、Ｙ方向の他に、ショートカットするような斜め方向のパケット通信も可能となるため（Ｂ４）、パケットの転送ステップ数を低減することができる。
【００８６】
（２）パケットの転送アルゴリズムを変更する必要がない。
【００８７】
上記説明したように、第１実施形態に係るストレージシステム１００は、少なくとも２つ以上のＮＭ（メモリ部）１４０の間のパケット転送を制御するルーティング回路１１１を備える。例えば、ルーティング回路１１１が、２つ以上のＮＭ１４０をまとめる単位は、２Ｎ（Ｎ：自然数（Ｎ＝１，２，３， ，，，））等である。
【００８８】
このように、ルーティング回路１１１は、パケット転送動作において、最下位ビットＢＸ０，ＢＹ０を無視して（マスクして）ルーティングを行うだけでよい。
【００８９】
そのため、第１実施形態に係るストレージシステム１００は、例えば上記比較例と比較して、パケットに記述するアドレス構成等の転送アルゴリズムを変更する必要がない点で有利である。従って、第１実施形態に係るストレージシステム１００は、余計な設計変更等が不要となり、製造コストを低減できる。
【００９０】
なお、第１実施形態に係るストレージシステム１００の場合、１個のＣＵ１１０につき、少なくとも１６個のＮＭ１４０が制御可能である。そのため、１個のＣＵ１１０につき、少なくとも１６個のパケット通信が可能である。
【００９１】
（変形例１）
上記第１実施形態に係るルーティング回路１１１は、パケット転送動作の際に、最下位ビットＢＸ０，ＢＹ０を無視して（マスクして）ルーティングを行ったが、複数のＮＭ１４０のノードアドレスをまとめてルーティングを行う限り、これに限られないことは勿論である。
【００９２】
例えば、ルーティング回路１１１は、パケット転送動作の際に、最上位ビットを無視してルーティングを行ってもよい。より具体的には、ルーティング回路１１１は、最上位ビットを無視したアドレスに基づいて、自分のＦＰＧＡアドレスと、パケットに記述されるノードアドレスとが一致すると判定する。当該アドレスが一致した場合、ルーティング回路１１１は、送り先のＦＰＧＡアドレスの全ビットを認識して、当該認識したＸ方向およびＹ方向のアドレス先の自分のノードアドレスにパケットを割り振ってもよい。
【００９３】
例えば、ルーティング回路１１１は、パケット転送動作の際に、Ｘ方向、Ｙ方向のアドレスの一部を無視して同様にルーティングを行ってもよい。さらに、例えば、ルーティング回路１１１は、パケット転送動作の際に、Ｘ方向、Ｙ方向のアドレスのうちの少なくとも１ビット以上を無視して同様にルーティングを行ってもよい。
【００９４】
（第２実施形態（デッドロックの発生の防止に関する一例））
次に、第２実施形態に係るストレージシステム１００について説明する。第２実施形態は、デッドロックの発生の防止に関する一例である。以下の説明において、上記第１実施形態と重複する部分の詳細な説明を省略する。
【００９５】
［構成（ルーティング回路１１１の詳細構成）］
まず、図１１を用い、第２実施形態に係るストレージシステム１００が備えるルーティング回路１１１の構成について説明する。図１１の破線は返信パケットの経路を示し、実線は送信パケットの経路を示す。ここで、返信パケットとは、ＣＵ１１０からの何らかの命令に対して返信するためのパケットであり、パケットルーティングの方向がＮＭ１４０からＣＵ１１０へ向かう方向のパケットをいう。送信パケットとは、ＣＵ１１０からの何らかの命令（リクエスト）を送信するためのパケットであり、パケットルーティングの方向がＣＵ１１０からＮＭ１４０へ向かう方向のパケットをいう。
【００９６】
図１１に示すように、第２実施形態に係るルーティング回路１１１は、ルーティング回路１１１の外部のルーティング経路であるインタフェース１５０の数を第１実施形態と同じ８系統に維持する。一方、ルーティング回路１１１は、ルーティング計算部１１５Ｒ，１１５Ｓ、バッファＲＢＦ，ＳＢＦ、およびセレクタＳＥを備え、ルーティング回路１１１の内部のパケット処理経路の数を倍増させる。上記構成により、ルーティング回路１１１は、返信パケットと送信パケットとを区別し、各パケット処理を独立してルーティングを行う。
【００９７】
より具体的には、第２実施形態に係るルーティング回路１１１は、２個のルーティング計算部１１５Ｒ，１１５Ｓと、１６個のバッファＲＢＦ，ＳＢＦと、８個のセレクタＳＥとを備える。
【００９８】
ルーティング計算部１１５Ｒと、８個のバッファＲＢＦとは、返信パケットのルーティングを行うための構成である。ルーティング計算部１１５Ｒは、返信パケットについての所定のルーティング計算を専門に実行する。各バッファ（返信バッファ）ＲＢＦは、返信パケットを一時的に格納する。
【００９９】
ルーティング計算部１１５Ｓと、８個のバッファＳＢＦとは、送信パケットのルーティングを行うための構成である。ルーティング計算部１１５Ｓは、送信パケットについての所定のルーティング計算を専門に実行する。各バッファ（送信バッファ）ＳＢＦは、送信パケットを一時的に格納する。
【０１００】
セレクタ（選択部）ＳＥは、ルーティング回路１１１の図示しない制御部から通知される制御信号に基づいて、受信するパケットを返信バッファＲＢＦに格納するか送信バッファＳＢＦに格納するかを選択する。これらの動作の詳細については、後述する。
【０１０１】
なお、他のルーティング回路１１１も、図１１に示した構成と同様の構成を備える。その他の構成については、上記第１の実施形態と実質的に同様であるので、その詳細な説明を省略する。
【０１０２】
［動作（パケット処理動作）］
次に、図１２を用い、上記構成を備えるルーティング回路１１１のパケット処理動作について説明する。
【０１０３】
まず、ステップＢ２１において、ルーティング回路１１１は、受信するパケットが、返信パケットか送信パケットか否かを判定する。より具体的には、ルーティング回路１１１は、図５で示したヘッダ領域ＨＡに記述されたパケットの種類に基づいて、受信するパケットの種類を判定する。このパケットの種類は、例えば所定の複数のビットにて、ヘッダ領域ＨＡに記述される。このステップＢ２１の際、ルーティング回路１１１は、ヘッダ領域ＨＡに記述されたパケットの種類のうちの通信タイプ（communication type）を参照し、返信パケット（reply）である場合（参照ビットが“１”状態である場合）、当該受信するパケットが返信パケットであると判定する。同様に、ルーティング回路１１１は、ヘッダ領域ＨＡに記述されたパケットの種類のうちの通信タイプを参照し、送信パケット（send）である場合（参照ビットが“０”状態である場合）、当該受信するパケットが送信パケットであると判定する。上記判定結果に基づき、ルーティング回路１１１は、所定の制御信号をセレクタＳＥに送信する。
【０１０４】
（返信パケットの場合）  
ステップＢ２２において、上記受信するパケットが返信パケットである場合、セレクタＳＥは、制御信号に基づいて返信パケットを選択し、返信パケットを自ルーティング回路１１１の空いている返信バッファＲＢＦに格納させる。
【０１０５】
ステップＢ２３において、返信側のルーティング計算部１１５Ｒは、ＣＵ１１０までの経路を計算し、返信パケットを、返信バッファＲＢＦからＣＵ１１０へ返信する。より具体的には、ルーティング計算部１１５Ｒは、ＣＵ１１０までの最短経路、または当該返信パケットを格納している返信バッファＲＢＦからＣＵ１１０までの経路上に存在する他の返信バッファＲＢＦまでの優先経路等を計算する。続いて、ルーティング計算部１１５Ｒは、返信バッファＲＲＢから当該計算した経路上へ返信パケットを転送する。
【０１０６】
なお、続いて、当該計算された経路上へ転送された返信パケットは、例えば、計算された経路上の空いている返信バッファＲＢＦに格納される。続いて、例えば、返信パケットがＣＵ１１０に到達すると、返信パケットがＣＵ１１０により解析され、ＣＵ１１０からの命令に対するＮＭ１４０の返信パケットの処理が完了する。
【０１０７】
（送信パケットの場合）  
ステップＢ２４において、上記受信するパケットが送信パケットである場合、セレクタＳＥは、制御信号に基づいて送信パケットを選択し、送信パケットを自ルーティング回路１１１の空いている送信バッファＳＢＦに格納させる。
【０１０８】
ステップＢ２５において、送信側のルーティング計算部１１５Ｓは、目的のＮＭ１４０までの経路を計算し、送信パケットを、送信バッファＳＢＦから、当該目的のＮＭ１４０に送信する。より具体的には、ルーティング計算部１１５Ｓは、送信パケットに記述された目的のＮＭ１４０のアドレスを参照し、目的のＮＭ１４０までの最短経路、または当該送信パケットを格納している送信バッファＲＢＳから目的のＮＭ１４０までの経路上に存在する他の送信バッファＳＢＦまでの優先経路等を計算する。続いて、ルーティング計算部１１５Ｓは、送信バッファＳＲＢから当該計算した経路上へ送信パケットを転送する。
【０１０９】
なお、続いて、当該計算された経路上へ転送された送信パケットは、例えば、計算された経路上の空いている送信バッファＳＢＦに格納される。続いて、例えば、送信パケットが宛先のＮＭ１４０に到達すると、送信パケットが宛先のＮＭ１４０のＰＭＵ１１２により解析される。続いて、送信パケットの解析結果に基づいて、ＣＵ１１０からの命令（例えば、データ書き込み等）が当該宛先のＮＭ１４０において実行され、送信パケットの処理が完了する。
【０１１０】
［作用効果］
以上説明したように、第２実施形態に係るストレージシステム１００の構成および動作よれば、上記（１）乃至（２）と同様の効果が得られる。さらに、第２実施形態に係るストレージシステム１００によれば、少なくとも下記（３）に示す効果が得られる。
【０１１１】
（３）デッドロックの発生を防止できる。
【０１１２】
この説明においては、比較例と第２実施形態とを対比して説明する。
【０１１３】
Ａ）比較例の場合
図９に示したように、比較例に係るストレージシステムは、第１、第２実施形態に係るストレージシステム１００と比較して、ルーティング回路１１１を備えていない。そのため、比較例に係るパケットは、ルーティング回路１１１を介することなく、直接的にＮＭの間を転送される。
【０１１４】
このように、複数のコンピュータノードが、ネットワークを経由して、データや命令をやり取りするような比較例に係るストレージシステムの場合、非常に単純な動作の場合には、特に大きな問題は生じない。しかしながら、例えばより複雑なアルゴリズム等を処理しようとした場合、ネットワーク上にデータや命令を収めたパケットが滞留してしまい、処理がストップしてしまう現象（以下、「デッドロック」という。）が生じるおそれがある。このデッドロックの発生について、図１３および図１４Ａ〜図１４Ｄを用い、より具体的に説明する。
【０１１５】
まず、図１３の時刻ｔ１において、比較例に係るノードモジュールＮＭＡが、ＣＵからの命令１を行うためのコマンドｃｍｄ１を受信するとする（図１４Ａ）。ここで、命令１は、必ず２つの処理（処理１および処理２）を順に実行しなければ完了しない命令であるとする。コマンドｃｍｄ１は、一連の上記２つの処理を行うためのコマンドである。
【０１１６】
続いて、図１３の時刻ｔ２において、コマンドｃｍｄ１を受け取ったノードモジュールＮＭＡは、別のノードモジュールＮＭＢ１〜ＮＭＢ３に対して、処理２に係るコマンドｃｍｄ２を発行する（図１４Ｂ）。ここで、ノードモジュールＮＭＢ１〜ＮＭＢ３は、例えば、所定のＲＡＩＤグループを構成するノードモジュール群である。なお、このコマンドｃｍｄ２の応答（ＲＰ１〜ＲＰ３）に対して、再度ノードモジュールＮＭＡが何らかの処理を施した返信パケットがＣＵに返信されると、最初のコマンドｃｍｄ１に対する応答が完了する。換言すると、命令１を完了するためには、まず、ノードモジュールＮＭＡが、ノードモジュールＮＭＢ１〜ＮＭＢ３から返信される返信パケットＲＰ１〜ＲＰ３を受信する必要がある。
【０１１７】
そのため、図１３の時刻ｔ３において、コマンドｃｍｄ２がノードモジュールＮＭＢ１〜ＮＭＢ３によって処理された後、コマンドｃｍｄ２の応答である返信パケットＲＰ１〜ＲＰ３が、ノードモジュールＮＭＡに戻ってこようとする（図１４Ｃ）。
【０１１８】
しかしながら、図１３の時刻ｔ４において、ノードモジュールＮＭＡは、別の命令２に係る送信パケットＳＰ１〜ＳＰ４を大量に受け取っており、これ以上パケットを受け付けられない状態にあったとする（図１４Ｄ）。この際、ノードモジュールＮＭＡが、以降の処理を続けるためには、ノードモジュールＮＭＢ１〜ＮＭＢ３から帰ってきている返信パケットＲＰ１〜ＲＰ３を受け取り、所定の処理をした後、コマンドｃｍｄ１に対する応答をＣＵに返信する必要がある。しかしながら、ノードモジュールＮＭＡは、これ以上パケットを受け付けられない状態にあるため、命令１の完了が不可能となる。その結果、ノードモジュールＮＭＡは、もはやこれ以上の処理を続けることができない（デッドロックの発生）。
【０１１９】
換言すると、図１３の時刻ｔ４において、ノードモジュールＮＭＡの外部との４つの全てのルーティング経路（スロット）は、命令２に係る送信パケットＳＰ１〜ＳＰ４で既に埋まっている。そのため、ノードモジュールＮＭＡは、返信パケットＲＰ１〜ＲＰ３を新たに受信できない。従って、ノードモジュールＮＭＡは、返信パケットＲＰ１〜ＲＰ３を処理し、コマンドｃｍｄ１に対する応答をＣＵに返信できないので、命令１を完了することができない。命令１を完了することができないので、次の命令２に係る送信パケットＳＰ１〜ＳＰ４を送信できず、命令２も完了できない。このように、命令１，２のいずれも他方の命令の処理待ちとなり、命令１，２のいずれも完了せず、デッドロックが発生し得る。
【０１２０】
なお、ストレージシステムがクラウドシステム等の基幹的な情報処理システムで利用され場合、デッドロックが発生すると、システム動作全体の停止につながりかねない。そのため、デッドロックの発生は、システム全体の信頼性に大きく影響するものである。
【０１２１】
Ｂ）第２実施形態の場合
上記比較例に対し、第２実施形態に係るストレージシステム１００は、図１１に示した構成のルーティング回路１１１を介して、パケット転送動作を行う。ルーティング回路１１１は、ルーティング回路１１１の外部のルーティング経路であるインタフェース１５０の数を第１実施形態と同じ８系統に維持する。一方、ルーティング回路１１１は、ルーティング計算部１１５Ｒ，１１５Ｓ、バッファＲＢＦ，ＳＢＦ、およびセレクタＳＥを備え、ルーティング回路１１１の内部のパケット処理経路の数を倍増させる。上記構成により、ルーティング回路１１１は、返信パケットと送信パケットとを区別して分離し、各パケット処理を独立してルーティングを行う（図１２）。ここで、「分離」とは、ルーティング回路１１１内において、返信パケットと送信パケットとの転送経路が、互いに交わらないことをいう。
【０１２２】
例えば、上記比較例と同様のパケット処理が生じた場合について、図１５を用いて説明する。ここでは、一例として、あるＮＭ１４０が、比較例に係るノードモジュールＮＭＡに対応するものとして説明する。
【０１２３】
図１５の時刻ｔ４において、ＮＭ１４０は、同様に、別の命令２に係る大量の送信パケットＳＰ１〜ＳＰ４が送信されている状態であるとする。この際、受信するパケットが送信パケットＳＰ１〜ＳＰ４であると判定すると（図１２のＢ２１）、セレクタＳＥは、送信パケットＳＰ１〜ＳＰ４を選択し、選択した送信パケットＳＰ１〜ＳＰ４を自ルーティング回路１１１の空いている送信バッファＳＢＦにそれぞれ格納させる（図１２のＢ２４）。
【０１２４】
この際、ＮＭ１４０が処理を続けるためには、返信パケットＲＰ１〜ＲＰ３を受け取り、所定の処理をした後、コマンドｃｍｄ１に対する応答をＣＵ１１０に返信し、命令１を完了させる必要がある。
【０１２５】
そこで、同時刻ｔ４において、まず、ＮＭ１４０のルーティング回路１１１は、受信するパケットが、返信パケットか送信パケットか否かを判定する（図１２のＢ２１）。続いて、受信するパケットが返信パケットＲＰ１〜ＲＰ３であると判定すると、セレクタＳＥは、返信パケットＲＰ１〜ＲＰ３を選択し、選択した返信パケットＲＰ１〜ＲＰ３を自ルーティング回路１１１の空いている返信バッファＲＢＦにそれぞれ格納させる（図１２のＢ２２）。続いて、返信側のルーティング計算部１１５Ｒは、ＣＵ１１０までの経路を計算し、返信パケットＲＰ１〜ＲＰ３を、各返信バッファＲＢＦからＣＵ１１０へ返信する（図１２のＢ２３）。そのため、命令１を完了させることが可能となる。
【０１２６】
続いて、命令１の完了後の時刻ｔ５において、送信側のルーティング計算部１１５Ｓは、目的のＮＭ１４０までの経路を計算し、送信パケットＳＰ１〜ＳＰ４を、各送信バッファＳＢＦから、当該目的のＮＭ１４０に送信する（図１２のＢ２５）。そのため、命令２を完了させることが可能となる。
【０１２７】
以上説明したように、第２実施形態に係るストレージシステム１００では、送信パケットまたは返信パケットに応じて、格納させるバッファ（ＳＢＦ，ＲＢＦ）とルーティング計算を行う計算部（１１５Ｓ，１１５Ｒ）とを分離させ、それぞれを独立してパケットのルーティングを行う。そのため、図１５に示したように、少なくとも２つ以上のパケット転送動作を分離独立して行うことができ、２つ以上のパケット転送動作を並行して行うことができる。このように、第２実施形態に係るストレージシステム１００の構成およびその動作によれば、デッドロックの発生を防止することができる点で有利である。
【０１２８】
（変形例２（パケットの種類のその他の一例））
上記第２実施形態では、送信パケットか返信パケットに応じて、パケットのルーティングを分離して行う形態を一例に挙げて説明した。しかしながら、これは例示であり、パケットの種類（packet type）に基づいて、パケットのルーティングを行う限り、第２実施形態に限定されないことは勿論である。
【０１２９】
例えば、ルーティング回路１１１は、ルーティング方向（routing direction）に応じて、同様にパケットのルーティングを分離して行ってもよい。より具体的には、上記図１２のステップＢ２１の際、ルーティング回路１１１は、ヘッダ領域ＨＡに記述されたパケットの種類のうちのルーティング方向を参照し、返信方向（reverse）である場合（参照ビットが“１”状態である場合）、当該受信するパケットのルーティング方向が返信方向であると判定する。同様に、ルーティング回路１１１は、ヘッダ領域ＨＡに記述されたパケットの種類のうちのルーティングの方向を参照し、送信方向（forward）である場合（参照ビットが“０”状態である場合）、当該受信するパケットのルーティング方向が送信方向であると判定する。
【０１３０】
例えば、ルーティング回路１１１は、パケットの発行元（source type）に応じて、同様にパケットのルーティングを分離して行ってもよい。より具体的には、上記図１２のステップＢ２１の際、ルーティング回路１１１は、ヘッダ領域ＨＡに記述されたパケットの種類のうちのパケットの発行元を参照し、それがＮＭ１４０である場合（参照ビットが“１”状態である場合）、当該受信するパケットの発行元がＮＭ１４０であると判定する。同様に、ルーティング回路１１１は、ヘッダ領域ＨＡに記述されたパケットの種類のうちのパケットの発行元を参照し、ＣＵ１１０である場合（参照ビットが“０”状態である場合）、当該受信するパケットの発行元がＣＵ１１０であると判定する。
【０１３１】
例えば、ルーティング回路１１１は、パケットの送信先（destination type）に応じて、同様にパケットのルーティングを分離して行ってもよい。より具体的には、上記図１２のステップＢ２１の際、ルーティング回路１１１は、ヘッダ領域ＨＡに記述されたパケットの種類のうちのパケットの送信元を参照し、それがＣＵ１１０である場合（参照ビットが“１”状態である場合）、当該受信するパケットの送信先がＣＵ１１０であると判定する。同様に、ルーティング回路１１１は、ヘッダ領域ＨＡに記述されたパケットの種類のうちのパケットの送信先を参照し、ＮＭ１４０である場合（参照ビットが“０”状態である場合）、当該受信するパケットの送信先がＮＭ１４０であると判定する。
【０１３２】
なお、これらに限られず、例えば、Ｘ方向のルーティングであるのかそうでないのか、Ｙ方向のルーティングであるのかそうでないのか、分割パケットか分割パケットでないのか等のパケットの種類に応じて、パケットのルーティングを分離して行ってもよい。さらに、その他の必要に応じて、パケットのルーティングを分離して行ってもよい。
【０１３３】
（第３実施形態（冗長化、拡張化、実装例等に関する一例））
次に、図１６乃至図３７を用いて、第３実施形態に係るストレージシステム１００ついて説明する。第３実施形態は、上記ストレージシステム１００の冗長化、拡張化、実装例等に関する。ここで、第３実施形態に係るストレージシステム１００は、例えば、システム動作の停止が困難なクラウドシステム等の基幹的な情報処理システムで利用されるストレージシステム等である。
【０１３４】
以下の説明において、上記第１実施形態と重複する部分の詳細な説明を省略する。また、記憶部１０１に配置されるルーティング回路１１１の図示を省略する。
【０１３５】
［記憶部の冗長化］
まず、図１６を用い、記憶部１０１の冗長化の一例について説明する。
【０１３６】
図示するように、各ＮＭ１４０は、カード基板２０Ｂに実装される。４つのカード基板２０Ｂが、着脱可能にコネクタを介してバックプレーン２２０に装着される。各カード基板２０Ｂには、４つのＮＭ１４０が実装される。Ｙ方向に配列された４つのＮＭ１４０は、同一のカード基板２０Ｂに実装され、Ｘ方向に配列された４つのＮＭ１４０は、夫々異なるカード基板２０Ｂに実装される。
【０１３７】
ここで、記憶部１０１において、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）を構築することが可能である。例えば、図示する例では、４つのＲＡＩＤグループ２１０が構築されており、各ＮＭ１４０は、４つのＲＡＩＤグループ２１０のうちのいずれかに属する。そして、夫々異なるカード基板２０Ｂに実装されている４つのＮＭ１４０は、１つのＲＡＩＤグループ２１０が構成される。ここでは、Ｘ方向に配列された４つのＮＭ１４０が同一のＲＡＩＤグループ２１０に属する。例えば、Ｘ方向に配列された４つのＮＭ（０，０）、ＮＭ（１，０）、ＮＭ（２，０）、ＮＭ（３，０）は、同一のＲＡＩＤグループ２１０に属する。
【０１３８】
適用されるＲＡＩＤのレベルは、任意である。例えばＲＡＩＤ５が適用される場合には、ＲＡＩＤグループ２１０を構成する複数のＮＭ１４０のうちの１つが破損したとき、破損したＮＭ１４０を有するカード基板２０Ｂを交換することで、破損したＮＭ１４０に記憶されるデータが復旧される。また、ＲＡＩＤ６が適用される場合には、ＲＡＩＤグループ２１０を構成する複数のＮＭ１４０のうちの２つのＮＭ１４０が破損した場合であっても復旧可能である。
【０１３９】
［記憶部の拡張化］
次に、図１７を用い、記憶部１０１の拡張化の一例について説明する。Ｉ／Ｆ部１２０は、記憶部１０１を拡張するための接続インタフェースである。
【０１４０】
図示する接続関係において、２台のストレージシステム１００Ａ，１００Ｂが、Ｉ／Ｆ部１２０を介して接続されている。図示するように、２台のストレージシステム１００Ａ，１００Ｂのうちの一方のストレージシステム１００Ａに備えられる４つのＮＭ１４０と、他方のストレージシステム１００Ｂに備えられる４つのＮＭ１４とが、Ｉ／Ｆ部１２０を介して一対一で接続される。
【０１４１】
２台のストレージシステム１００Ａ，１００Ｂ間では、Ｉ／Ｆ部１２０により接続されたインタフェース１５０を介してパケットが転送可能である。これにより、４行４列のＮＭ１４０群により構成される２つの記憶部１０１Ａ，１０１Ｂが論理的に結合され、４行８列のＮＭ１４０群により構成される１つの記憶部１０１として使用可能となる。
【０１４２】
なお、記憶部１０１を構成する複数のＮＭ１４０のうちの何れをＩ／Ｆ部１２０に接続するか、および、Ｉ／Ｆ部１２０に接続するＮＭ１４０の数は、任意である。また、記憶部１０１間の接続関係のバリエーションについては後述する。また、ここでは、２つの記憶部１０１Ａ，１０１Ｂにおいて、直接的にＮＭ１４０群が互いに接続されている。しかし、より具体的には、ルーティング回路１１１を介して、２つの記憶部１０１Ａ，１０１Ｂにおいて、ＮＭ１４０群が互いに接続される。
【０１４３】
［３．実装例］
次に、上記各構成を実装して構成した実装例について説明する。
【０１４４】
［３−１．全体］
まず、図１８を用い、実装例の全体について説明する。図１８は、ストレージシステム１００が収容される筐体（エンクロージャ）２００を示す図である。ストレージシステム１００は、サーバラック２０１にマウント可能なエンクロージャ２００に収容される。
【０１４５】
エンクロージャ２００の寸法は、サーバラック２０１が準拠する規格によって規定される。エンクロージャ２００の寸法のうちの高さは、‘Ｕ（ユニット）’によって表現される。例えば、第３実施形態に係るエンクロージャ２００は、積層方向（layer stack）において、‘２Ｕ’の高さを有する。
【０１４６】
［３−１−１．エンクロージャ（外観）］
次に、図１９を用い、ストレージシステム１００を収容するエンクロージャ２００の外観について説明する。
【０１４７】
図示するように、エンクロージャ２００は、外装部材２１１〜２１３、ノードモジュールカード（ＮＭＣ）、コネクションユニットカード（ＣＵＣ）、インタフェースカード（ＩＦＣ）、マネジメントモジュールカード（ＭＭＣ）、コンソールカード（ＣＯＣ）、電源装置ＰＳＵ、補助電源装置ＢＢＵ、ファン２０３を備える。
【０１４８】
外装部材２１１，２１２は、積層方向において、エンクロージャ２００の上記各構成部材上を覆うように配置され、所定のねじ止め等により固定される。外装部材２１３は、エンクロージャ２００の前面側（Front side）において、上記各構成部材の前面を覆うように配置され、所定のねじ止め等により固定される。
【０１４９】
ノードモジュールカードＮＭＣは、上記ＮＭ１４０、ＮＣ１４０Ｃ、ルーティング回路１１１、ＰＭＵ１１２、およびＣＵインタフェース（ＰＣＩｅ  Ｉ／Ｆ）１１３が所定のカード基板（回路基板）上に実装された、カード状のモジュールである。各ＮＭＣは、エンクロージャ２００中のバックプレーン２２０における所定のコネクタに其々装着され、略鉛直方向に起立した姿勢で並べて支持される。複数のＮＭＣが、コネクタを介して電気的に互いに接続されることで、記憶部１０１を構成する。
【０１５０】
コネクションユニットカードＣＵＣは、上記コネクションユニットＣＵが所定のカード基板上に実装された、カード状のモジュールである。各ＣＵＣは、背面側（Rear side）から略水平方向にエンクロージャ２００に収容されてコネクタに装着され、並べて配置される。複数のＣＵＣは、コネクタを介して電気的に互いに接続されてもよい。
【０１５１】
インタフェースカードＩＦＣは、上記Ｉ／Ｆ部１２０が所定のカード基板上に実装された、カード状のモジュールである。各ＩＦＣは、背面側から略水平方向にエンクロージャ２００に収容されてコネクタに装着され、並べて配置される。複数のＩＦＣは、コネクタを介して電気的に互いに接続されてもよい。
【０１５２】
マネジメントモジュールカードＭＭＣは、上記マネジメントモジュール１３０（ＭＭ）が所定のカード基板上に実装された、カード状のモジュールである。各ＭＭＣは、背面側から略水平方向にエンクロージャ２００に収容されてコネクタに装着され、並べて配置される。複数のＭＭＣは、コネクタを介して電気的に互いに接続されてもよい。
【０１５３】
コンソールカードＣＯＣは、ディスプレイ等の表示装置やキーボード等の入出力装置で構成され、上記各構成部材の入出力等を行うためのものである。ＣＯＣは、前面側において、エンクロージャ２００の表面上に配置される。
【０１５４】
電源装置ＰＳＵは、上記説明したように、電源コネクタ２０４を介して外部電源ＶＣから与えられる外部電源電圧を、所定の直流電圧に変換し、変換後の電源電圧ＶＣＯを各構成部材に供給する。ここでは、２つの電源装置ＰＳＵが、背面側からエンクロージャ２００に収容される。また、各電源装置ＰＳＵは、所定のファン２０３Ｐを備える。このファン２０３Ｐを動作させることで送風を行い、上記変換等による発生した熱を放熱させることができる。
【０１５５】
補助電源装置ＢＢＵは、エンクロージャ２００の内の略中央部分に並べて配置される。補助記憶装置ＢＢＵは、ここでは、３つを配置する場合を一例に挙げる。補助記憶装置ＢＢＵは、上記説明したように、電源装置ＰＳＵから電源電圧ＶＣＯを受けることで、電気を自身に蓄電する。そして、補助電源装置ＢＢＵは、電源装置ＰＳＵが外部電源ＶＣから電気的に遮断された場合に、所定の補助電源電圧を上記各構成部材に供給する補助電源として働く。
【０１５６】
ファン２０３は、エンクロージャ２００の前面側の端部において、一列ごとに２個ずつの合計８個配置される。各ファン２０３を動作させることで、列状に配置されたＮＭＣ、ＣＵＣ、ＩＦＣ、およびＭＭＣに送風を行い、上記各構成部材に発生した熱を放熱させることができる。
【０１５７】
［３−１−２．エンクロージャ（Front side）］
次に、図２０を用い、エンクロージャ２００の前面側の外観について説明する。
【０１５８】
図示するように、エンクロージャ２００の前面側には、その中央にＣＯＣが配置される。ＣＯＣには、電源ボタン、各種ＬＥＤ、および各種コネクタが設けられる。ＣＯＣの左右には、空気を吸気または排気する上記ファン２０３が夫々２つずつ設けられる。
【０１５９】
［３−１−３．エンクロージャ（Rear side）］
次に、図２１を用い、エンクロージャ２００の背面側の外観について説明する。エンクロージャ２００の背面側の中央には、２つの電源装置ＰＳＵが配置される。電源装置ＰＳＵには、電源装置ＰＳＵを冷却するためのファン２０３Ｐと、電源コネクタ２０４とが設けられている。
【０１６０】
背面側の左右には、ＣＵＣ、ＩＦＣ、ＭＭＣが配置される。
【０１６１】
ＣＵＣは、自身が外部と接続するための６対で合計１２個のコネクタ２０５を備える。ここでは、コネクタ２０５の規格として、イーサネット（登録商標）規格に準拠するコネクタを一例として説明する。しかし、コネクタ２０５の規格は、ネットワーク接続可能な規格であれば、任意の規格が採用可能である。
【０１６２】
ＩＦＣは、自身が外部（他のエンクロージャ）と接続するための４対で合計８個のコネクタ２０６を備える。コネクタ２０６の規格には、任意の規格が採用可能である。ここでは、ＮＭ１４０間のインタフェース１５０として上記ＬＶＤＳが採用され、コネクタ２０６の規格としてＬＶＤＳが採用されるものとする。
【０１６３】
ＭＭＣは、自身が外部と接続するための１個のコネクタ２０７を備える。コネクタ２０７の規格として、任意の規格が採用可能である。
【０１６４】
［３−１−４．エンクロージャ（Lear stack side）］
次に、図２２および図２３を用い、エンクロージャ２００の積層側の外観について説明する。
【０１６５】
まず、図２２に示すように、エンクロージャ２００の内部においては、中央部分に、電源用のバックプレーン２１０が収容される。電源用のバックプレーン２１０の左右には、２つのバックプレーン３００Ａ，３００Ｂが其々収容される。
【０１６６】
各バックプレーン３００Ａ，３００Ｂには、カード基板に実装されたＣＵ１１０、Ｉ／Ｆ部１２０、ＭＭ１３０、およびＮＭ１４０が装着される。そのことで、１つのストレージシステム１００として機能する。即ち、エンクロージャ２００は、２つのストレージシステム１００が収容可能である。
【０１６７】
なお、エンクロージャ２００は、２つのバックプレーン３００Ａ，３００Ｂのうちのいずれか一方が収容される状態で動作可能である。また、エンクロージャ２００は、２つのバックプレーン３００Ａ，３００Ｂが収容された場合、２つのバックプレーン３００Ａ，３００Ｂがコネクタ２０６を介して互いに接続することが可能である。このように接続することで、２つのストレージシステム１００の夫々が有する記憶部１０１を１つの記憶部１０１に統合して運用することが可能である。
【０１６８】
電源用のバックプレーン２１０には、エンクロージャ２００の積層方向（高さ方向）に重ねて配置された２個の電源装置ＰＳＵがエンクロージャ２００の背面側（Rear）に配置される。また、電源用のバックプレーン２１０には、エンクロージャ２００の前面側（Front）に３個の補助電源装置ＢＢＵが並べて配置される。２個の電源装置ＰＳＵは、外部から電源コネクタ２０４を介して供給された外部電源（商用電源）に基づいて内部電源を生成し、生成した内部電源を電源用のバックプレーン２１０を介して２つのバックプレーン３００Ａ，３００Ｂに供給する。３個のバッテリＢＢＵは、停電など商用電源の供給が途絶えたときに内部電源を生成するバックアップ用の電源である。
【０１６９】
次に、図２３を用い、図２２中の一方のバックプレーン３００Ａについて説明する。
【０１７０】
図示するように、ＣＵ１１０、Ｉ／Ｆ部１２０、ＭＭ１３０、およびＮＭ１４０は、夫々カード基板に実装され、ＣＵＣ、ＩＦＣ、ＭＭＣ、およびＮＭＣとしてバックプレーン３００Ａのスロットに装着される。
【０１７１】
例えば、バックプレーン３００Ａには、背面側において、左から１枚のＭＭＣ、２枚のＩ／ＦＣ、および６枚のＣＵＣが装着される。また、バックプレーン３００Ａには、前面側において、２４枚のＮＭＣが２列に配列されて装着されている。２４枚のＮＭＣは、紙面左側の１２枚のＮＭＣからなるブロック（第１ブロック４０１）と、紙面右側の１２枚のＮＭＣからなるブロック（第２ブロック４０２）とに分類される。この分類は、装着位置に基づくものである。
【０１７２】
［３−１−５．エンクロージャの使用形態の一例］
次に、図２４を用い、エンクロージャ２００の使用形態の一例について説明する。図２４は、エンクロージャ２００の使用形態の一例を示す図である。
【０１７３】
図示するように、エンクロージャ２００は、配線Ｌ２，Ｌ３により、ＣＵＣのコネクタ２０５と、ネットワークスイッチ（Network  SW）３を介して、ＰＣサーバ２に電気的に接続される。
【０１７４】
上記使用形態において、エンクロージャ２００に収容されるストレージシステム１００は、ＣＵＣにおいてＰＣサーバ２からの要求を解釈し、記憶部１０１にアクセスする。ＣＵＣにおいては、サーバアプリケーションが実行される。ＰＣサーバ２は、サーバアプリケーションが受け付け可能な要求を送信することができる。
【０１７５】
なお、ここでは、ＣＵＣ毎にコネクタ２０５とネットワークスイッチ３とが接続されている。しかし、この使用形態に限られず、任意のＣＵＣとネットワークスイッチ３とを電気的に接続することが可能である。
【０１７６】
［４．各カード構成および接続関係］
次に、エンクロージャ２００に収容されるストレージシステム１００を構成する上記各カード（ＮＭＣ、ＩＦＣ、ＣＵＣ、ＭＭＣ）およびこれらの接続関係について説明する。
【０１７７】
［４−１．ＮＭＣ］
［４−１−１．構成］
まず、図２５〜図２７を用い、ＮＭＣの構成について説明する。図２５は、ＮＭＣの構成を示すブロック図である。図２６は、ＮＭＣの一方の面を示すブロック図である。図２７は、ＮＭＣの他方の面を示すブロック図である。
【０１７８】
図２５に示すように、ＮＭＣは、第１および第２のＦＰＧＡ（field-programmable gate array）４０３，４０４、ＮＡＮＤメモリ４０５〜４０８，４１１〜４１４、ＤＲＡＭ４０９，４１０，４１５，４１６、およびコネクタ４１７を備える。
【０１７９】
図２６、図２７に示すように、第１のＦＰＧＡ４０３、ＮＡＮＤメモリ４０５，４０６、ＤＲＡＭ４０９，４１０、およびＮＡＮＤメモリ４０７，４０８は、其々、第２のＦＰＧＡ４０４、ＮＡＮＤメモリ４１１，４１２、ＤＲＡＭ４１５，４１６、ＮＡＮＤメモリ４１４，４１５に対して位置的に対称に設けられる。
【０１８０】
コネクタ４１７は、該対称の中心から偏心された位置に設けられる。コネクタ４１７は、バックプレーン３００上のスロットに物理的および電気的に接続される接続機構である。ＮＭＣは、コネクタ４１７とバックプレーン３００に形成された配線とを介して、他のＮＭＣと電気的に接続され、他のＮＭＣと通信を行うことが可能である。
【０１８１】
［第１のＦＰＧＡ］
図２５に示すように、第１のＦＰＧＡ４０３は、４つのＮＡＮＤメモリ４０５〜４０８と、２つのＤＲＡＭ４０９，４１０とに接続される。第１のＦＰＧＡ４０３は、１つのルーティング回路１１１と、５つのＰＭＵと、１つのＣＵインタフェース１１３と、４つのＮＣ１４０Ｃとを内部に含む。第１のＦＰＧＡ４０３に含まれる４つのＮＣ１４０Ｃは、ＤＲＡＭ４０９，４１０を、上記第２のメモリ１４２として使用する。
【０１８２】
また、第１のＦＰＧＡ４０３に含まれる４つのＮＣ１４０Ｃは、ＮＡＮＤメモリ４０５〜４０８のうちの夫々異なるＮＡＮＤメモリを、第１のメモリ１４１として使用する。換言すると、第１のＦＰＧＡ４０３、ＮＡＮＤメモリ４０５〜４０８、ＤＲＡＭ４０９、４１０は、４つのＮＭ１４０ＣからなるＮＭ１４０の一群に相当する。
【０１８３】
［第２のＦＰＧＡ］
第２のＦＰＧＡ４０４は、４つのＮＡＮＤメモリ４１１〜４１４と、２つのＤＲＡＭ４１５，４１６とに接続される。第２のＦＰＧＡ４０４は、１つのルーティング回路１１１と、５つのＰＭＵと、１つのＣＵインタフェース１１３と、４つのＮＣ１４０Ｃを内部に含む。第２のＦＰＧＡ４０４に含まれる４つのＮＣ１４０Ｃは、ＤＲＡＭ４１５、４１６を、上記第２のメモリ１４２として使用する。
【０１８４】
また、第２のＦＰＧＡ４０４に含まれる４つのＮＣ１４０は、ＮＡＮＤメモリ４１１〜４１４のうちの夫々異なるＮＡＮＤメモリを、第１のメモリ１４１として使用する。換言すると、第２のＦＰＧＡ４０４、フラッシュメモリ４１１〜４１４、ＤＲＡＭ４１５，４１６は、４つのＮＭ１４０ＣからなるＮＭ１４０の一群に相当する。
【０１８５】
［インタフェース］
第１のＦＰＧＡ４０３は、１本のＰＣＩｅインタフェース４１８（ＣＵインタフェース１１３）および６本のＬＶＤＳインタフェース４１９により、コネクタ４１７と電気的に接続される。
【０１８６】
第２のＦＰＧＡ４０４は、同様に、１本のＰＣＩｅインタフェース４１８（ＣＵインタフェース１１３）および６本のＬＶＤＳインタフェース４１９により、コネクタ４１７と電気的に接続される。
【０１８７】
第１のＦＰＧＡ４０３と第２のＦＰＧＡ４０４とは、２本のＬＶＤＳインタフェース４２０で互いに電気的に接続される。
【０１８８】
第１のＦＰＧＡ４０３および第２のＦＧＰＡ４０４は、Ｉ２Ｃインタフェース４２１でコネクタ４１７に電気的に接続される。
【０１８９】
［４−１−２．ＮＭＣ（各ＮＣ間の論理的な接続関係）］
次に、図２８を用い、ＮＭＣにおける各ノードコントローラ（ＮＣ）１４０Ｃ間の論理的な接続関係について、より詳細に説明する。
【０１９０】
図示するように、各ＮＣ１４０Ｃは、合計４つのインタフェースを其々備える。各ＮＣ１４０Ｃは、ＦＰＧＡの内部の２つのインタフェースで、同一のＦＰＧＡに含まれる他の２つのＮＣ１４０と接続される。
【０１９１】
具体的には、第１のＦＰＧＡ４０３に含まれる４つのＮＣ１４０Ｃのうち、２つのＮＣ１４０Ｃは、第２のＦＰＧＡ４０４に含まれる４つのＮＣ１４０のうちの２つのＮＣ１４０Ｃと、ＬＶＤＳインタフェース４２０で相互に接続される。このようにＮＣ１４０Ｃ間が接続されることにより、ＮＭＣが有する８個相当のＮＭ１４０は、４行２列のＮＭ１４０の一群を構成する。
【０１９２】
各ＮＣ１４０Ｃが備える残りのインタフェースは、他のＮＭＣ（図示せず）上のＦＰＧＡに含まれるＮＣ１４０Ｃと接続するためのインタフェース（ＬＶＤＳインタフェース４１９）である。４行２列の配列の４隅に位置するＮＣ１４０Ｃは、２つのＬＶＤＳインタフェース４１９を備え、４隅以外の外縁部に位置するＮＣ１４０は、１つのＬＶＤＳインタフェース４１９を備える。即ち、ＮＭＣは、合計１２本のＬＶＤＳインタフェース４１９を備える。
【０１９３】
ＬＶＤＳインタフェース４１９は、他のＮＭＣとの間の接続に使用される。Ｘ方向のうちの正側（「Ｘ＋」方向）に位置するＮＣ１４０Ｃは、「Ｘ＋」方向に論理的に隣接して装着される他のＮＭＣ上のＮＣ１４０Ｃと相互に接続可能である。Ｘ方向のうちの負側（「Ｘ−」方向）に位置するＮＣ１４０Ｃは、「Ｘ−」方向に論理的に隣接して装着される他のＮＭＣ上のＮＣ１４０Ｃと相互に接続可能である。Ｙ方向のうちの正側（「Ｙ＋」方向）に位置するＮＣ１４０Ｃは、「Ｙ＋」方向に論理的に隣接して装着される他のＮＭＣ上のＮＣ１４０と相互に接続可能である。Ｙ方向のうちの負側（「Ｙ−」方向）に位置するＮＣ１４０Ｃは、「Ｙ−」方向に論理的に隣接して装着される他のＮＭＣ上のＮＣ１４０と相互に接続可能である。
【０１９４】
［オッドグループ／イーブングループ］
第３実施形態では、ＮＭＣが有する合計１２本のＬＶＤＳインタフェース４１９は、オッドグループとイーブングループとの２つのグループに分類して説明する。
【０１９５】
以下、オッドグループに分類されるＬＶＤＳインタフェース４１９を、ＬＶＤＳインタフェース４１９ａと表記する。イーブングループに分類されるＬＶＤＳインタフェース４１９を、ＬＶＤＳインタフェース４１９ｂと表記する。
【０１９６】
図２８において、実線は、オッドグループに属するＬＶＤＳインタフェース４１９ａを示す。点線は、イーブングループに属するＬＶＤＳインタフェース４１９ｂを示す。図示するように、１２本のＬＶＤＳインタフェース４１９は、「Ｘ＋」方向、「Ｘ−」方向、「Ｙ＋」方向、および「Ｙ−」方向の夫々において、オッドグループとイーブングループとで同数となるように、分類される。
【０１９７】
［４−２．ＩＦＣ］
［４−２−１．構成］
次に、図２９を用い、ＩＦＣの構成について説明する。図２９は、ＩＦＣの構成を示すブロック図である。
【０１９８】
図示するように、ＩＦＣは、コネクタ５０９，２０６、ＬＶＤＳバッファ５０１，５０２、キャパシタ５０３，５０４を備える。
【０１９９】
コネクタ５０９は、バックプレーン３００上のスロットに物理的および電気的に接続される接続機構である。ＩＦＣは、コネクタ５０９とバックプレーン３００に形成された配線とを介して、ＮＭＣおよび各カード等に電気的に接続される。
【０２００】
コネクタ２０６は、上記のように、他のＩＦＣを介して、他のエンクロージャ２００に収容されるストレージシステム１００と電気的に接続するための接続機構である。コネクタ２０６は、４つのコネクタ５０５〜５０８を含む。なお、コネクタ５０５とコネクタ５０６とは、同時に着脱可能な着脱機構を備え、コネクタ５０７とコネクタ５０８とは、同時に着脱可能な着脱機構を備える。
【０２０１】
コネクタ５０５は、「Ｘ＋」方向のＬＶＤＳインタフェース４１９の端子を集めたＬＶＤＳケーブルコネクタである。コネクタ５０６は、「Ｘ−」方向のＬＶＤＳインタフェース４１９の端子を集めたＬＶＤＳケーブルコネクタである。コネクタ５０７は、「Ｙ＋」方向のＬＶＤＳインタフェース４１９の端子を集めたＬＶＤＳケーブルコネクタである。コネクタ５０８は、「Ｙ−」方向のＬＶＤＳインタフェース４１９の端子を集めたＬＶＤＳケーブルコネクタである。
【０２０２】
「Ｘ＋」方向のＬＶＤＳインタフェース４１９および「Ｘ−」方向のＬＶＤＳインタフェース４１９は、コネクタ５０９、ＬＶＤＳバッファ５０１、およびキャパシタ５０３を介して、コネクタ５０５およびコネクタ５０６に夫々接続される。
【０２０３】
「Ｙ＋」方向のＬＶＤＳインタフェース４１９および「Ｙ−」方向のＬＶＤＳインタフェース４１９は、コネクタ５０９、ＬＶＤＳバッファ５０２、およびキャパシタ５０４を介して、コネクタ５０７およびコネクタ５０８に夫々接続される。
【０２０４】
なお、前述のように、各バックプレーン３００には、２枚のＩＦＣが装着される。各バックプレーン３００に装着される２枚のＩＦＣのうちの一方は、オッドグループだけを集めたものであり、他方はイーブングループだけを集めたものである。
【０２０５】
［４−２−２．ＩＦＣとＮＭＣとの接続関係］
次に、図３０を用い、ＩＦＣとＮＭＣとの接続関係について説明する。図３０は、ＩＦＣとＮＭＣとの間の電気的な接続関係を示す図である。ここで、オッドグループにかかるコネクタには、符号の末尾にアルファベット「ａ」を付し、イーブングループにかかるコネクタには、符号の末尾にアルファベット「ｂ」を付して互いに区別する。
【０２０６】
図３０に示すように、Ｘ方向に物理的に隣接する２枚のＮＭＣが、第１ブロック４０１および第２ブロック４０２の夫々において、１本のＬＶＤＳインタフェース４１９ａと１本のＬＶＤＳインタフェース４１９ｂとで相互に接続される。
【０２０７】
Ｙ方向に物理的に隣接する２枚のＮＭＣが、第１ブロック４０１および第２ブロック４０２の夫々において、２本のＬＶＤＳインタフェース４１９ａと２本のＬＶＤＳインタフェース４１９ｂとで相互に接続される。
【０２０８】
第１ブロック４０１の下段に装着されているＮＭＣは、第２ブロック４０２の下段に装着されているＮＭＣと、１本のＬＶＤＳインタフェース４１９ａと１本のＬＶＤＳインタフェース４１９ｂとで一対一に接続される。
【０２０９】
第１ブロック４０１の下段において紙面左側からｉ番目に装着されているＮＭＣは、第２ブロック４０２の下段において紙面右側からｉ番目に装着されているＮＭＣと一対一に接続される。
【０２１０】
［ＮＭＣとＩＦＣとの論理的な接続関係］
上記のように物理的に接続されることにより、論理的には、Ｘ方向の定義およびＹ方向の定義が、第１ブロック４０１と第２ブロック４０２とで相違する。つまり、第１ブロック４０１においては紙面右方向が「Ｘ＋」方向に該当する。第２ブロック４０２においては紙面左方向が「Ｘ＋」方向に該当する。第１ブロック４０１においては紙面上方向が「Ｙ＋」方向に該当する。第２ブロック４０２においては紙面下方向が「Ｙ＋」方向に該当する。
【０２１１】
そのため、コネクタ５０５ａには、第１ブロック４０１の右端に装着されたＮＭＣおよび第２ブロック４０２の左端に装着されたＮＭＣが有する「Ｘ＋」方向のＬＶＤＳインタフェース４１９のうち、オッドグループに属するＬＶＤＳインタフェース４１９ａが接続される。
【０２１２】
コネクタ５０５ｂには、第１ブロック４０１の右端に装着されたＮＭＣおよび第２ブロック４０２の左端に装着されたＮＭＣが有する「Ｘ＋」方向のＬＶＤＳインタフェース４１９のうち、イーブングループに属するＬＶＤＳインタフェース４１９ｂが接続される。
【０２１３】
コネクタ５０６ａには、第１ブロック４０１の左端に装着されたＮＭＣおよび第２ブロック４０２の右端に装着されたＮＭＣが有する「Ｘ−」方向のＬＶＤＳインタフェース４１９のうち、オッドグループに属するＬＶＤＳインタフェース４１９ａが接続される。
【０２１４】
コネクタ５０６ｂには、第１ブロック４０１の左端に装着されたＮＭＣおよび第２ブロック４０２の右端に装着されたＮＭＣが有する「Ｘ−」方向のＬＶＤＳインタフェース４１９のうち、イーブングループに属するＬＶＤＳインタフェース４１９ｂが接続される。
【０２１５】
コネクタ５０７ａには、第１ブロック４０１の上段に装着されたＮＭＣが有する「Ｙ＋」方向のＬＶＤＳインタフェース４１９のうち、オッドグループに属するＬＶＤＳインタフェース４１９ａが接続される。
【０２１６】
コネクタ５０７ｂには、第１ブロック４０１の上段に装着されたＮＭＣが有する「Ｙ＋」方向のＬＶＤＳインタフェース４１９のうち、イーブングループに属するＬＶＤＳインタフェース４１９ｂが接続される。
【０２１７】
コネクタ５０８ａには、第２ブロック４０２の上段に装着されたＮＭＣが有する「Ｙ−」方向のＬＶＤＳインタフェース４１９のうち、オッドグループに属するＬＶＤＳインタフェース４１９ａが接続される。
【０２１８】
コネクタ５０８ｂには、第２ブロック４０２の上段に装着されたＮＭＣが有する「Ｙ−」方向のＬＶＤＳインタフェース４１９のうち、イーブングループに属するＬＶＤＳインタフェース４１９ｂが接続される。
【０２１９】
［４−３．ＣＵＣ（構成）］
次に、図３１を用い、ＣＵＣの構成について説明する。図３１は、ＣＵＣの構成を示すブロック図である。
【０２２０】
図示するように、ＣＵＣは、コネクタ６１１、第１、第２のプロセッサ６０１、６０２、ＤＲＡＭ６０３、６０４、２つのコネクタ２０５、ＳＤソケット６０９、６１０を備える。
【０２２１】
コネクタ６１１は、バックプレーン３００上のスロットに物理的および電気的に接続される接続機構である。ＣＵＣは、コネクタ６１１とバックプレーン３００に形成された配線とを介して、他のカードであるＭＭＣおよびＮＭＣと通信を行うことができる。
【０２２２】
第１および第２のプロセッサ６０１、６０２は、夫々プログラムを実行することにより、夫々個別のＣＵ１１０として機能する。換言すれば、１つのＣＵＣは、２つのＣＵ１１に相当する。
【０２２３】
第１のプロセッサ６０１は、ＤＲＡＭ６０３に接続されており、ＤＲＡＭ６０３をワークエリアとして使用する。第１のプロセッサ６０１は、ＳＤソケット６０９に接続される。ＳＤソケット６０９には、第１のプロセッサ６０１によって実行されるプログラムが予め格納されたＭｉｃｒｏＳＤカード６１２が接続される。
【０２２４】
第１のプロセッサ６０１は、２個のコネクタ２０５のうちの１つにイーサネット規格に準拠するインタフェース６０６で接続される。第１のプロセッサ６０１は、コネクタ２０５を介して、外部と接続される。また、第１のプロセッサ６０１は、２本のＰＣＩｅインタフェース６０５でコネクタ６１１に接続される。また、第１のプロセッサ６０１は、イーサネット規格に準拠する１本のインタフェース６０７でコネクタ６１１に接続される。また、第１のプロセッサ６０１は、１本のＩ２Ｃインタフェース６０８でコネクタ６１１に接続される。第１のプロセッサ６０１は、コネクタ６１１を介して、上記ＮＭＣおよびＭＭＣと接続される。
【０２２５】
第２のプロセッサ６０２は、同様に、ＤＲＡＭ６０４に接続されており、ＤＲＡＭ６０４をワークエリアとして使用する。第２のプロセッサ６０２は、ＳＤソケット６１０に接続される。ＳＤソケット６１０は、第２のプロセッサ６０２によって実行されるプログラムが予め格納されたＭｉｃｒｏＳＤカード６１３が接続される。
【０２２６】
第２のプロセッサ６０２は、同様に、２個のコネクタ２０５のうちの１つにイーサネット規格に準拠するインタフェース６０６で接続される。また、第２のプロセッサ６０２は、２本のＰＣＩｅインタフェース６０５でコネクタ６１１に接続される。第２のプロセッサ６０２は、コネクタ２０５を介して、外部と接続される。また、第２のプロセッサ６０２は、イーサネット規格に準拠する１本のインタフェース６０７でコネクタ６１１に接続される。また、第２のプロセッサ６０２は、１本のＩ２Ｃインタフェース６０８でコネクタ６１１に接続される。第２のプロセッサ６０２は、コネクタ６１１を介して、上記ＮＭＣおよびＭＭＣと接続される。
【０２２７】
［４−４．ＭＭＣ］
［４−４−１．構成］
次に、図３２を用い、ＭＭＣの構成について説明する。図３２は、ＭＭＣの構成を示すブロック図である。
【０２２８】
図示するように、ＭＭＣは、コネクタ７２０、ＢＭＣチップ７０１、第３のプロセッサ７０２、ＤＲＡＭ７０３、７０４、スイッチ７０５、コネクタ２０７、ＳＤソケット７０６、７０７を備える。
【０２２９】
コネクタ７２０は、バックプレーン３００上のスロットに物理的および電気的に接続される接続機構である。ＭＭＣ７００は、コネクタ７２０と、バックプレーン３００に形成された配線と、を介して他のカードであるＮＭＣおよびＣＵＣと通信を行う。
【０２３０】
［ＢＭＣチップ］
ＢＭＣチップ７０１は、上記ＢＭＣの機能を実現するチップである。ＢＭＣチップ７０１は、ＤＲＡＭ７０３に接続されており、ＤＲＡＭ７０３をワークエリアとして使用する。ＢＭＣチップ７０１は、ＳＤソケット７０６と接続される。ＢＭＣチップ７０１は、ＳＤソケット７０６に接続されたＭｉｃｒｏＳＤカード７１６に、各種監視データを記録することができる。ＢＭＣチップ７０１は、コネクタ２０７とイーサネット規格に準拠するインタフェース７０８で接続されており、コネクタ２０７を介して外部と通信を行うことができる。
【０２３１】
［第３のプロセッサ］
第３のプロセッサ７０２は、プログラムに基づいて記憶部１０１に対してＮＭ制御処理を実行する。第３のプロセッサ７０２は、ＤＲＡＭ７０４に接続されており、ＤＲＡＭ７０４をワークエリアとして使用することができる。第３のプロセッサ７０２は、ＳＤソケット７０７に接続されている。ＳＤソケット７０７は、第３のプロセッサ７０２によって実行されるプログラムが予め格納されたＭｉｃｒｏＳＤカード７１７が接続される。
【０２３２】
スイッチ７０５は、コネクタ７２０との間で１２本のインタフェース７１０で接続され、第３のプロセッサ７０２との間で１本のインタフェース７１１で接続され、ＢＭＣチップ７０１との間で１本のインタフェースで接続される。スイッチ７０５に接続される各インタフェースは、イーサネット規格に準拠するものである。１２本のインタフェース７１０は、コネクタ７２０およびバックプレーン３００を介して、ＣＵＣに実装されている各プロセッサ（第１のプロセッサ６０１、第２のプロセッサ６０２）に接続される。スイッチ７０５は、第１のプロセッサ６０１、第２のプロセッサ６０２、および第３のプロセッサ７０２と、ＢＭＣチップ７０１と、の間の通信を中継する。ＢＭＣチップ７０１は、各プロセッサが生成する情報を、スイッチ７０５を介して取得することができる。
【０２３３】
また、ＢＭＣチップ７０１は、コネクタ７２０との間でＩ２Ｃインタフェース７１２で接続されている。Ｉ２Ｃインタフェース７１２は、途中でＩ２Ｃインタフェース７１３に分岐する。分岐したＩ２Ｃインタフェース７１３は、第３のプロセッサ７０２に接続されている。Ｉ２Ｃインタフェース７１２のコネクタ７２０側の端子は、バックプレーン３００および各種カードのコネクタを介して第１のプロセッサ６０１、第２のプロセッサ６０２、第１のＦＰＧＡ４０３、および第２のＦＰＧＡ４０４に接続される。ＢＭＣチップ７０１は、Ｉ２Ｃインタフェース７１２を介して第１のプロセッサ６０１、第２のプロセッサ６０２、第１のＦＰＧＡ４０３、および第２のＦＰＧＡ４０４を監視する。第１のプロセッサ６０１、第２のプロセッサ６０２、第１のＦＰＧＡ４０３、および第２のＦＰＧＡ４０４から送られてくる監視データは、Ｉ２Ｃインタフェース７１３を介して第３のプロセッサ７０２からも参照される。第３のプロセッサ７０２は、監視データを用いてＮＭ制御処理を実行することができる。
【０２３４】
第３のプロセッサ７０２は、ＰＣＩｅインタフェース７１４でコネクタ７２０と接続される。ＰＣＩｅインタフェース７１４のコネクタ７２０側の端子は、バックプレーン３００を介して、１つのＮＭＣに接続される。第３のプロセッサ７０２は、任意のＮＣ１４０に対するパケットをＰＣＩｅインタフェース７１４に送信したり、任意のＮＣ１４０からのパケットをＰＣＩｅインタフェース７１４を介して受信したりする。
【０２３５】
［４−４−２．ＭＭＣ、ＣＵＣ、ＮＭＣの接続関係］
次に、図３３を用い、ＭＭＣ、ＣＵＣ、ＣＮＣ間の接続関係について説明する。図３３は、ＮＭＣ、ＣＵＣ、およびＭＭＣの間の接続関係を示す図である。本図に示す接続は、全てＰＣＩｅインタフェースによるものである。また、図示する接続関係は、各カード内の配線とバックプレーン３００に形成された配線とによって実現される。
【０２３６】
前述のように、各ＣＵＣは、４本のＰＣＩｅインタフェース６０５を備え、各ＮＭＣは、２本のＰＣＩｅインタフェース４１８を備える。各ＣＵＣは、４本のＰＣＩｅインタフェース６０５が夫々異なるＮＭＣとの接続に使用されることにより、４つのＮＭＣに接続される。各ＮＭＣは、２本のＰＣＩｅインタフェース４１８のうちの１本がＣＵＣとの接続に使用される。ここでは、第１のＦＰＧＡ４０３が有するＰＣＩｅインタフェース４１８がＣＵＣとの接続に使用される。
【０２３７】
紙面左側の３枚のＣＵＣが有する各第１のプロセッサ６０１は、第１ブロック４０１の上段に装着された夫々異なるＮＭＣと、第２ブロック４０２の上段に装着された夫々異なるＮＭＣと、に接続される。また、紙面左側の３枚のＣＵＣが有する各第２のプロセッサ６０２は、第１ブロック４０１の下段に装着された夫々異なるＮＭＣと、第２ブロック４０２の下段に装着された夫々異なるＮＭＣと、に接続される。
【０２３８】
紙面右側の３枚のＣＵＣが有する各第１のプロセッサ６０１は、第１ブロック４０１の上段に装着された夫々異なるＮＭＣと、第２ブロック４０２の上段に装着された夫々異なるＮＭＣと、の両方に接続される。また、紙面右側の３枚のＣＵＣが有する各第２のプロセッサ６０２は、第１ブロック４０１の下段に装着された夫々異なるＮＭＣと、第２ブロック４０２の下段に装着された夫々異なるＮＭＣと、の両方に接続される。
【０２３９】
このように、各ＣＵＣは、第１ブロック４０１に属するＮＭＣと第２ブロック４０２に属するＮＭＣの両方に接続される。これにより、第１ブロック４０１および第２ブロック４０２の何れか一方にしかＮＭＣが装着されない場合であっても、各ＣＵＣは、装着されているＮＭＣに対してＣＵ１１としての機能を発揮することが可能となる。また、第１ブロック４０１および第２ブロック４０２の両方にＮＭＣが装着されているか否かにかかわらず、１〜６のうちの任意の数のＣＵＣを装着した状態で運用することが可能となる。
【０２４０】
なお、次に説明するように、ＭＭＣは、第１ブロック４０１に属する１つのＮＭＣにのみ接続されるので、エンクロージャ２００は、少なくとも第１ブロック４０１にＮＭＣが接続されている状態で運用される。ＭＭＣが第２ブロック４０２に属する任意のＮＭＣに接続される場合には、エンクロージャ２００は、第２ブロック４０２にのみＮＭＣが装着されている状態での運用が可能である。
【０２４１】
ＭＭＣは、１本のＰＣＩｅインタフェース７１４を備える。ＭＭＣは、ＰＣＩｅインタフェース７１４が使用されることにより、１つのＮＭＣに接続される。ここでは、ＮＭＣにおいては、第２のＦＰＧＡ４０４が有するＰＣＩｅインタフェース４１８がＭＭＣとの接続に使用される。また、ＭＭＣは、第１ブロック４０１の上段の最も左側に装着されたＮＭＣに接続される。ＭＭＣは、ＰＣＩｅインタフェース７１４を介してパケットを送受信することができる。
【０２４２】
［４−４−３．ＭＭＣとＣＵＣとの間の接続関係］
次に、図３４を用い、ＭＭＣとＣＵＣとの間の接続関係について説明する。図３４は、ＣＵＣとＭＭＣとの間の接続関係を示す図である。
【０２４３】
ここでは、Ｉ２Ｃインタフェースによる接続の図示を省略し、イーサネット規格に準拠するインタフェースによる接続関係を示す。図示する接続関係は、各カード内の配線とバックプレーン３００に形成された配線とによって実現する。
【０２４４】
ＭＭＣは、イーサネット規格に準拠する１２本のインタフェース７１０を備える。また、各ＣＵＣは、イーサネット規格に準拠する２本のインタフェース６０７を備える。ＭＭＣは、ＣＵＣ毎に２本のインタフェース７１０が使用されることにより、６枚のＣＵＣと接続される。
【０２４５】
［５．スケールアウトのための接続例］
次に、図３５乃至図３７を用い、記憶部１０１をスケールアウトするための接続例を説明する。
【０２４６】
ここでは、１つのエンクロージャ２００が備える２つのストレージシステム１００を用いて、１つの記憶部１０１を構築するための接続例（第１接続例）を説明する。複数のストレージシステム１００を互いに識別するために、各ストレージシステム１００の符号の末尾にアルファベットを付すこととする。
【０２４７】
図３５は、第１接続例において使用されるコネクタ群を示す図である。図３６は、第１接続例による具体的な接続関係を示す図である。図３７は、第１接続例によって論理的に構築される記憶部１０１を示す図である。
【０２４８】
図３５に示すように、第１接続例においては、配線Ｌ４により、１つのエンクロージャ２００が備える２つのストレージシステム１００のうちの一（ストレージシステム１００Ａ）が備えるコネクタ２０６と、他（ストレージシステム１００Ｂ）が備えるコネクタ２０６との間で相互に接続される。
【０２４９】
具体的には、図３６に示すように、ストレージシステム１００Ａが備えるコネクタ５０７ａと、ストレージシステム１００Ｂが備えるコネクタ５０８ａとが接続される。また、ストレージシステム１００Ａが備えるコネクタ５０７ｂと、ストレージシステム１００Ｂが備えるコネクタ５０８ｂとが接続される。これらの接続により、ストレージシステム１００Ａが備える記憶部１０１Ａの「Ｙ＋」方向にストレージシステム１００Ｂが備える記憶部１０１Ｂが接続される。
【０２５０】
その結果、図３７に示すように、各ストレージシステム１００Ａ、１００Ｂの記憶部１０１Ａ，１０１Ｂが互いに統合されて、新たな１つの記憶部１０１が論理的に構成される。当該新たな記憶部１０１は、Ｘ方向に６枚のＮＭＣが配列され、Ｙ方向に８枚のＮＭＣが配列されて構成される。
【０２５１】
なお、第１接続例においてはＹ方向に２つの記憶部１０１が接続されたが、これに限らない。例えば、２つの記憶部１０１をＸ方向に接続することも同様に可能である。
【０２５２】
［作用効果］
以上説明したように、第３実施形態に係るストレージシステム１００の構成および動作よれば、上記（１）乃至（３）と同様の効果が得られる。さらに、第３実施形態に係るストレージシステム１００によれば、少なくとも下記（４）に示す効果が得られる。
【０２５３】
（４）大容量化とレイテンシの低減化とを両立化することができる。
【０２５４】
この説明においては、ストレージシステムの技術的な背景を説明しつつ、説明する。
【０２５５】
Ａ）技術的な背景
近年、企業や政府等が取り扱うデータ量やデータ処理の複雑性は、飛躍的に増大し続けている。このようなビッグデータ処理を行うため、３Ｖ（Volume、Variety、Velocity)を兼ね備えた大規模データ処理を効率的に行えるようなデータ処理プラットフォームが求められる傾向がある。
【０２５６】
しかしながら、例えばHadoop等に代表されるシステムでは、データの移動、前処理、メタデータ処理等の実際のコンピューティングを開始する前に、データ管理に相当するプロセスが数多く必要なことが多い。また、データを分散させることにより、データの一貫性管理の複雑さが増すため、プロセッサを大量に並べて同時処理するようなプラットフォームを用意しても、高速かつ効率的に所望のデータ処理を行うことは困難である。
【０２５７】
さらに、上記困難さの度合いは、データ量や要求される処理速度が増加するにつれて飛躍的に増大する。そのため、例えば汎用品を組み合わせてこのようなシステムを構成しようとすると、データサイズとレイテンシとのトレードオフに悩まされることになる。すなわち、取り扱えるデータサイズを大きくするためには、レイテンシを犠牲にしなければならない。一方で、レイテンシを小さくするためには、取り扱うデータサイズを小さくしなければならない。より具体的には、例えばＴＢ（テラビット）を超えるオーダーのデータサイズを取り扱えて、かつサブミリ秒のレイテンシを実現できるようなプラットフォーム等は、ほとんど存在しない。また、まれに存在しても、現実的には、極めて高額のシステムとなってしまう。
【０２５８】
Ｂ）第３実施形態
上記技術的な背景を鑑み、第３実施形態に係るストレージシステム１００は、少なくとも以下の２つを備えて構成される。
【０２５９】
第一に、アクティブなデータをすべてＮＭ１４０の第１のメモリであるＮＡＮＤメモリ１４１（４０５〜４０８，４１１〜４１４）に格納する点である。ＮＡＮＤメモリ１４１は、大規模データベースを格納可能なシステムをリーズナブルなコストで提供可能な「安価なビットコスト」と、エンタープライズ用途に耐えられる高信頼性を満たすために必要な「不揮発性」とを兼ね備えている。そのため、第３実施形態に係るストレージシステム１００は、例えばＤＲＡＭベースのインメモリのストレージシステム等と比べて、大規模で高信頼なデータベースを構築するのに適している。さらに、ビッグデータ処理で求められる「サブミリ秒オーダー」のレイテンシを実現するのに十分なアクセス速度を備えている。これらの特性は、例えばＨＤＤベースのストレージシステム等では、実現が極めて困難なものである。
【０２６０】
第二に、第３実施形態に係るメモリシステム１００は、上記ＮＡＮＤメモリ１４１を読み書きするＮＣ１４０Ｃが互いにパケットデータを送受信するためのネットワークポートであるルーティング回路１１１やＰＭＵ１１２を備えており、このネットワークポートを相互に接続することで二次元メッシュ状のネットワークを構成する点である。そのため、このネットワーク全体を一つのアドレス空間でアクセスできる、（単一の）巨大な不揮発メモリとみなすことができる。さらに、上記ＮＣ１４０Ｃは，ＣＵ１１０と直接的に接続可能なインタフェース（ここでは、PCIe I/F  １１３）を備える。そのため、この巨大な不揮発メモリ空間を、複数のＣＵ１１０が備える複数のＣＰＵ６０１によってシェアすることができる。すなわち、第３実施形態に係るメモリシステム１００は、多数のＣＰＵ６０１が、単一の巨大なデータベースを介し、大規模並列演算をするのに都合が良い。そのため、上記３Ｖを兼ね備えるビッグデータ分析のプラットフォームとして適しているといえる。
【０２６１】
例えば、図１７，図３５〜図３７に示したように、第３実施形態に係るストレージシステム１００では、２台のストレージシステム１００Ａ，１００Ｂを、Ｉ／Ｆ部１２０を介して電気的に接続させることで、容易に拡張化（スケールアウト）することが可能である。このように、記憶部１０１を拡張化することで、容易に大容量化することができる。
【０２６２】
さらに、例えば、図１０に示したように、第３実施形態に係るストレージシステム１００では、スケールアウトをした場合であっても、ステップ数を低減することができる。そのため、ステップ数の増大に伴うレイテンシを低減することができる。
【０２６３】
以上説明したように、第３実施形態に係るストレージシステム１００の構成および動作によれば、大容量化とレイテンシの低減化とを両立することができる。
【０２６４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２６５】
１００…ストレージシステム、１０１…ストレージ部、１１０…コネクション部、１１１…ルーティング部、１１２…パケット制御部、１２０…インタフェース部、１３０…マネージメント部、１４０…メモリ部、１４０Ｃ…制御部、１４１…不揮発性メモリ、ＳＢＦ，ＲＢＦ…記憶部、１１５Ｓ，１１５Ｒ…計算部、ＳＥ…選択部。
【図１】
0006313237.tif 000002
【図２】
0006313237.tif 000003
【図３】
0006313237.tif 000004
【図４】
0006313237.tif 000005
【図５】
0006313237.tif 000006
【図６】
0006313237.tif 000007
【図７】
0006313237.tif 000008
【図８】
0006313237.tif 000009
【図９】
0006313237.tif 000010
【図１０】
0006313237.tif 000011
【図１１】
0006313237.tif 000012
【図１２】
0006313237.tif 000013
【図１３】
0006313237.tif 000014
【図１４Ａ】
0006313237.tif 000015
【図１４Ｂ】
0006313237.tif 000016
【図１４Ｃ】
0006313237.tif 000017
【図１４Ｄ】
0006313237.tif 000018
【図１５】
0006313237.tif 000019
【図１６】
0006313237.tif 000020
【図１７】
0006313237.tif 000021
【図１８】
0006313237.tif 000022
【図１９】
0006313237.tif 000023
【図２０】
0006313237.tif 000024
【図２１】
0006313237.tif 000025
【図２２】
0006313237.tif 000026
【図２３】
0006313237.tif 000027
【図２４】
0006313237.tif 000028
【図２５】
0006313237.tif 000029
【図２６】
0006313237.tif 000030
【図２７】
0006313237.tif 000031
【図２８】
0006313237.tif 000032
【図２９】
0006313237.tif 000033
【図３０】
0006313237.tif 000034
【図３１】
0006313237.tif 000035
【図３２】
0006313237.tif 000036
【図３３】
0006313237.tif 000037
【図３４】
0006313237.tif 000038
【図３５】
0006313237.tif 000039
【図３６】
0006313237.tif 000040
【図３７】
0006313237.tif 000041