(57)【特許請求の範囲】
【請求項１】
不揮発性メモリと前記不揮発性メモリを制御する制御部とを有する複数のメモリ部と、
前記複数のメモリ部の中の少なくとも２つの前記メモリ部に接続され、パケット転送を制御する複数のルーティング部と、前記複数のルーティング部の各々と前記少なくとも２つの前記メモリ部との間に接続され、パケット転送を制御する少なくとも２つのパケット制御部と、を備えるストレージ部と、
前記ストレージ部を外部と接続し、前記ストレージ部を制御するコネクション部と、
を具備し、
前記少なくとも２つのパケット制御部の各々は、オリジナルパケットを複数のサブパケットに分割する分割部と、前記複数のサブパケットから前記オリジナルパケットを再現する再現部とを具備し、
前記複数のルーティング部の各々は、他の第１のルーティング部から受信した複数のサブパケットをそれぞれ格納する複数の受信メモリと、他の第２のルーティング部に送信される複数のサブパケットをそれぞれ格納する複数の送信メモリと、を具備し、前記第１のルーティング部から受信した前記複数のサブパケットを受信した順序にて前記第２のルーティング部に順次送信するストレージシステム。
【請求項２】
前記分割部は、前記複数のサブパケットそれぞれに、送信元アドレス、シグネチャ、および前記複数のサブパケットのそれぞれが前記オリジナルパケットのどの位置であるかを示す情報を少なくとも記述し、
前記再現部は、前記複数のサブパケットそれぞれに記述された前記送信元アドレス、前記シグネチャ、および前記複数のサブパケットのそれぞれが前記オリジナルパケットのどの位置であるかを示す前記情報に基づいて、前記複数のサブパケットから前記オリジナルパケットを再現する請求項１に記載のストレージシステム。
【請求項３】
前記少なくとも２つのパケット制御部の各々は、前記オリジナルパケットを分割するための指示を前記分割部に送信し、前記複数のサブパケットから前記オリジナルパケットを再現するための指示を前記再現部に送信する請求項１又は請求項２に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、一般的に、ストレージシステムに関する。
【背景技術】
【０００２】
ストレージシステムを備える複数の情報処理装置を、相互にネットワークで接続し、一つの情報処理システムを構成する場合がある。このような情報処理システムの一例としては、例えば、クラウドコンピューティングシステム等がある。近年では、情報処理システムにおけるクラウドデータ等のデータの利用が増加する傾向にある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１０３９２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
レイテンシを低減できるストレージシステムを提供する。
【課題を解決するための手段】
【０００５】
実施形態によれば、ストレージシステムは、不揮発性メモリと前記不揮発性メモリを制御する制御部とを有する複数のメモリ部と、前記複数のメモリ部の中の少なくとも２つの前記メモリ部に接続され、パケット転送を制御する複数のルーティング部と、前記複数のルーティング部の各々と前記少なくとも２つの前記メモリ部との間に接続され、パケット転送を制御する少なくとも２つのパケット制御部と、を備えるストレージ部と、前記ストレージ部を外部と接続し、前記ストレージ部を制御するコネクション部と、を具備し、前記少なくとも２つのパケット制御部の各々は、オリジナルパケットを複数のサブパケットに分割する分割部と、前記複数のサブパケットから前記オリジナルパットを再現する再現部とを具備し、前記複数のルーティング部の各々は、他の第１のルーティング部から受信した複数のサブパケットをそれぞれ格納する複数の受信メモリと、他の第２のルーティング部に送信される複数のサブパケットをそれぞれ格納する複数の送信メモリと、を具備し、前記第１のルーティング部から受信した前記複数のサブパケットを受信した順序にて前記第２のルーティング部に順次送信する。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係るストレージシステムを示すブロック図。
【図２】第１実施形態に係るストレージ部を示すブロック図。
【図３】第１実施形態に係るＦＰＧＡを示すブロック図。
【図４】第１実施形態に係るＮＭを示すブロック図。
【図５】第１実施形態に係るパケット構成を示すブロック図。
【図６】第１実施形態に係るＣＵを示すブロック図。
【図７】第１実施形態に係るＲＣのパケット転送動作を示すフローチャート。
【図８】第１実施形態に係る宛先Ｘ，Ｙの構成を示す図。
【図９】比較例に係る転送ステップ数を説明するための図。
【図１０】第１実施形態に係る転送ステップ数を説明するための図。
【図１１】第２実施形態に係るルーティング回路の詳細構成を示すブロック図。
【図１２】第２実施形態に係るパケット処理動作を示すフローチャート。
【図１３】比較例に係るパケット処理を示すタイミングチャート。
【図１４Ａ】図１３の時刻ｔ１におけるパケット処理を示すブロック図。
【図１４Ｂ】図１３の時刻ｔ２におけるパケット処理を示すブロック図。
【図１４Ｃ】図１３の時刻ｔ３におけるパケット処理を示すブロック図。
【図１４Ｄ】図１３の時刻ｔ４におけるパケット処理を示すブロック図。
【図１５】第２実施形態に係るパケット処理を示すタイミングチャート。
【図１６】第３実施形態に係るＦＰＧＡの詳細構成を示すブロック図。
【図１７Ａ】第３実施形態に係る分割パケットの構成を示すブロック図。
【図１７Ｂ】第３実施形態に係る送信バッファの構成を示すブロック図。
【図１８】第３実施形態に係るパケット分割処理を示すフローチャート。
【図１９】第３実施形態に係るパケット再現処理を示すフローチャート。
【図２０】比較例に係るレイテンシを説明するための図。
【図２１】第３実施形態に係るレイテンシを説明するための図。
【図２２】第４実施形態に係る記憶部の冗長化の一例を示す図。
【図２３】第４実施形態に係る記憶部の拡張化の一例を示す図。
【図２４】第４実施形態に係るメモリシステムを収容するエンクロージャをマウント可能なサーバラックを示す斜視図。
【図２５】第４実施形態に係るストレージシステムが収容されるエンクロージャを示す斜視図。
【図２６】エンクロージャの前面図。
【図２７】エンクロージャの背面図。
【図２８】エンクロージャの内部の上面図。
【図２９】バックプレーンの構成例を示す図。
【図３０】エンクロージャの使用形態の一例を示す図。
【図３１】ＮＭカードの構成の一例を示すブロック図。
【図３２】ＮＭカードの概観図。
【図３３】ＮＭカードの概観図。
【図３４】ＮＣ間の論理的な接続関係を示す図。
【図３５】Ｉ／Ｆカードの構成の一例を示すブロック図。
【図３６】ＮＭカードとＩ／Ｆカードとの間の接続関係を示す図。
【図３７】ＣＵカードの構成の一例を示すブロック図。
【図３８】ＭＭカードの構成の一例を示すブロック図。
【図３９】ＮＭカード、ＣＵカード、およびＭＭカードの間の接続関係を示す図。
【図４０】ＣＵカードとＭＭカードとの間の接続関係を示す図。
【図４１】第１接続例において使用されるコネクタ群を示す図。
【図４２】第１接続例による具体的な接続関係を示す図。
【図４３】第１接続例によって論理的に構築される記憶部を示す図。
【発明を実施するための形態】
【０００７】
以下、図面を参照して、発明の実施形態について説明する。なお、以下の説明において、実質的に同一の機能及び要素については、同一符号を付し、必要に応じて説明を行う。また、本明細書では、いくつかの要素に複数の表現の例を付している。なおこれら表現の例はあくまで例示であり、上記要素が他の表現で表現されることを否定するものではない。また、複数の表現が付されていない要素についても、別の表現で表現されてもよい。
【０００８】
さらに、図面は模式的なものであり、厚みと平面寸法との関係や各層の厚みの比率などは現実のものと異なることがある。また、図面相互間において互いの寸法の関係や比率が異なる部分が含まれることもある。
【０００９】
（第１実施形態）
［１．構成］
［１−１．全体構成（ストレージシステム）］
まず、図１を用い、第１実施形態に係るストレージシステム１００の全体構成を簡単に説明する。
【００１０】
図示するように、第１実施形態に係るストレージシステム１００は、記憶部１０１、コネクションユニット（ＣＵ）１１０、インタフェース部（Ｉ／Ｆ部）１２０、マネジメントモジュール（ＭＭ）１３０、電源装置ＰＳＵ、および補助電源装置ＢＢＵを備える。
【００１１】
［記憶部］
記憶部（ストレージ部）１０１は、マトリックス状に配置された複数のルーティング回路（ＲＣ）１１１とノードモジュール（ＮＭ）１４０とを備える。上記構成により、記憶部１０１は、複数のＮＭ１４０に対してデータを分散して記憶し、分散的かつ並列的にデータを処理する。
【００１２】
ルーティング回路（ルーティング部、トーラスルーティング）１１１は、メッシュ状のネットワークにより、コネクションユニット（ＣＵ）１１０や他のルーティング回路１１１等から転送されたデータを含むパケットを、所定の方式にて転送するように構成される。ルーティング回路１１１は、２つ以上のインタフェース１５０を夫々備える。ルーティング回路１１１は、隣接するルーティング回路１１１と、インタフェース１５０を介して互いに電気的に接続される。ルーティング回路１１１の詳細については、後述する。
【００１３】
ＮＭ（メモリ部）１４０は、ルーティング回路１１１およびここでは図示しないパケットマネジメントユニット（ＰＭＵ）を介して、隣接するＮＭ１４０と互いに電気的に接続される。
【００１４】
図１では、各ＮＭ１４０が、其々格子点に配置された、矩形状のネットワークの例を示す。ここでは、格子点の座標を、１０進数表記の座標（ｘ，ｙ）で示す。格子点に配置されるＮＭ１４０の位置情報は、当該格子点の座標と対応する相対的なノードアドレス（ｘD，ｙD）（＝１０進数表記）で示されるものとする。また、図示する例では、左上隅に位置するＮＭ１４０が、原点のノードアドレス（０，０）を有する。各ＮＭ１４０の相対的なノードアドレスは、横方向（Ｘ方向）および縦方向（Ｙ方向）の整数値が変動することで、この変動に伴い増減する。
【００１５】
各ＮＭ１４０は、２以上の異なる方向に隣接するＮＭ１４０と接続される。例えば、最も左上隅のＮＭ１４０（０，０）は、ルーティング回路１１１を介して、Ｘ方向に隣接するＮＭ１４０（１，０）と、Ｘ方向とは異なる方向であるＹ方向に隣接するＮＭ１４０（０，１）と、斜め方向に隣接するＮＭ１４０（１，１）と接続される。以降、相対的なノードアドレス（ｘD、ｙD）で表されるＮＭ１４０を、単にノード（ｘD、ｙD）と表記する場合がある。
【００１６】
なお、図１では、各ＮＭ１４０が、矩形格子の格子点に配置されるように示したが、各ＮＭ１４０の配置の様態は、この例に限定されない。すなわち、格子の形状は、格子点に配置される各ＮＭ１４０が２以上の異なる方向に隣接するＮＭ１４０と接続されればよく、例えば三角形、六角形などでもよい。また、図１では、各ＮＭ１４０が、２次元状に配置されるが、各ＮＭ１４０が３次元状に配置されてもよい。３次元状にＮＭ１４０を配置する場合は、（ｘ、ｙ、ｚ）の３つの値で各ＮＭ１４０を指定することができる。また、ＮＭ１４０が２次元状に配置される場合には、対辺に位置するＮＭ１４０同士を接続することによって、ＮＭ１４０をトーラス状に接続するようにしてもよい。記憶部１０１の詳細については、後述する。
【００１７】
［コネクションユニット（ＣＵ）］
ＣＵ１１０は、外部のユーザと接続可能な所定のコネクタを備え、外部からの要求（コマンド、アドレス等）に応じて、記憶部１０１にデータを記憶し、記憶部１０１から読み出したデータを外部に出力する。具体的には、ＣＵ１１０は、後述する演算装置と記憶装置とを備える。ＣＵ１１０の演算装置は、記憶装置をワークエリアとして使用しながらサーバアプリケーションプログラムを実行する。
【００１８】
ＣＵ１１０は、サーバアプリケーションによる制御の下で、外部からの要求を処理する。ＣＵ１１０は、外部からの要求を処理する過程において、記憶部１０１に対するアクセスを実行する。ＣＵ１１０は、記憶部１０１にアクセスする際には、ルーティング回路１１１が転送したり実行したりすることが可能なパケットを生成し、生成したパケットを、自ＣＵ１１０に接続されるルーティング回路１１１に送信する。
【００１９】
図１の例では、ストレージシステム１００は、４つのＣＵ１１０を備える。４つのＣＵ１１０は、夫々異なるルーティング回路１１１に一対一に接続される。
【００２０】
なお、ＣＵ１１０の数は、任意に構成することが可能である。ＣＵ１１０は、記憶部１０１を構成する任意のルーティング回路１１１に接続されることが可能である。また、１つのＣＵ１１０が複数のルーティング回路１１１に接続されてもよいし、１つのルーティング回路１１１が複数のＣＵ１１０に接続されてもよい。また、記憶部１０１を構成する複数のルーティング回路１１１のうちの任意のルーティング回路１１１にＣＵ１１０が接続されてもよい。ＣＵ１１０の詳細については、後述する。
【００２１】
［インタフェース部（Ｉ／Ｆ部）］
Ｉ／Ｆ部１２０は、記憶部１０１を拡張するための接続インタフェースである。例えば、物理的に異なる２台のストレージシステム１００が、互いにＩ／Ｆ部１２０を介して電気的に接続することが可能である。このように接続することで、各ストレージシステム１００が備える記憶部１０１が論理的に結合されて、１つの記憶部１０１として使用可能となる。Ｉ／Ｆ部１２０は、１以上のルーティング回路１１１からインタフェース１５０により電気的に接続される。ここでは、２つのルーティング回路１１１に接続される各インタフェース１５０が、Ｉ／Ｆ部１２０に夫々接続される。
【００２２】
［マネジメントモジュール（ＭＭ）］
ＭＭ１３０は、各ＣＵ１１０と、ルーティング回路１１１とに電気的に接続される。ＭＭ１３０は、図示しないＢＭＣ（Baseboard 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）、パケットＩＤ（Packet_ID）等が記述される。
【００５１】
ペイロード領域ＰＡには、例えば、コマンドまたはデータ等が記述される。ペイロード領域ＰＡのデータサイズは、可変である。ペイロード領域ＰＡのデータサイズは、例えば最大で４ＫｉＢ（kibibyte）程度である。
【００５２】
冗長領域ＲＡには、例えば、ＣＲＣ（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）に応じて、同様にパケットのルーティングを分離して行ってもよい。より具体的には、上記図１２のステップＢ２１の際、ルーティング回路１１１は、ヘッダ領域ＨＡに記述されたパケットの種類のうちのパケットの送信元を参照し、それがＣＵ１１０である場合（参照ビットが“１”状態である場合）、当該受信するパケットの送信先がＣＵ１１０であると判定する。同様に、ルーティング回路１１１は、ヘッダ領域ＨＡに記述されたパケットの種類のうちのパケットの送信先を参照し、ＮＭ１４０である場合（参照ビットが“０”状態である場合）、当該受信するパケットの送信先がＮＭ１４０であると判定する。
【０１３３】
なお、これらに限られず、例えば、Ｘ方向のルーティングであるのかそうでないのか、Ｙ方向のルーティングであるのかそうでないのか、分割パケットか分割パケットでないのか等のパケットの種類に応じて、パケットのルーティングを分離して行ってもよい。さらに、その他の必要に応じて、パケットのルーティングを分離して行ってもよい。
【０１３４】
（第３実施形態（レイテンシの低減に関する一例））
次に、図１６乃至図２１を用いて、第３実施形態に係るストレージシステム１００ついて説明する。第３実施形態は、レイテンシの低減の一例に関する。この説明において、上記第１、第２実施形態と重複する部分の詳細な説明を省略する。
【０１３５】
［ＦＰＧＡの構成］
図１６を用い、第３実施形態に係るＦＰＧＡの構成について説明する。ここでは、ＦＰＧＡ０を一例に挙げて説明する。
【０１３６】
図１６に示すように、第３実施形態に係るＦＰＧＡ０が備えるＰＭＵ１１２は、スプリッタ１１２Ｓとリアセンブラ１１２Ｒとを更に備える点で、上記第１および第２実施形態と相違する。
【０１３７】
スプリッタ（パケット分割部）１１２Ｓは、ＰＭＵ１１２からの分割パケットの生成指示に基づいて、通常パケット（オリジナルパケット）から１または２以上の所定の分割パケットを生成する。ここで、通常パケット（オリジナルパケット）とは、分割パケットの分割元となるパケットをいう。通常パケット（オリジナルパケット）は、例えば、上記図５に示したパケット構造を備える。従って、分割パケットは、オリジナルパケットの一部を含む。分割パケットの詳細については、後述する。
【０１３８】
リアセンブラ（パケット再現部）１１２Ｒは、ＰＭＵ１１２からの分割パケットの再現（再組立て）指示に基づいて、受信した１または２以上の分割パケットから当該分割パケットのオリジナルパケットを再現する。ここで、オリジナルパケットが再現されるまでの分割パケットは、例えば、第２のメモリ１４２であるＤＲＡＭやＳＤＲＡＭ等に格納される。
【０１３９】
なお、その他のＦＰＧＡについても、ＦＰＧＡ０と同様の構成である。また、その他の構成については、上記第１および第２実施形態と実質的に同様であるため、その詳細な説明を省略する。
【０１４０】
［分割パケットの構成］
図１７Ａを用い、上記スプリッタ１１２Ｓにより生成される、第３実施形態に係る分割パケットの構成について説明する。
【０１４１】
図１７Ａに示すように、分割パケットの生成指示を受けたＰＭＵ１１２のスプリッタ１１２Ｓは、当該分割パケットの生成指示に基づき、１つのオリジナルパケットから３つの分割パケットＳＰＡ１〜ＳＰＡ３を生成する。
【０１４２】
３つの分割パケットＳＰＡ１〜ＳＰＡ３は、ヘッダ領域ＳＨＡ、ペイロード領域ＳＰＡ、および冗長領域ＳＲＡにより構成される。
【０１４３】
各分割パケットＳＰＡ１〜ＳＰＡ３のヘッダ領域ＳＨＡには、例えば、送り元のＸ方向およびＹ方向のアドレス（from_x, from_y）、送り先のＸ方向およびＹ方向のアドレス（to_x, to_y）、パケットＩＤ（Packet_ID）等が記述される。さらに、ヘッダ領域ＳＨＡには、例えば、シグネチャ（Signature）、分割順序情報（Split_No.）、スプリットＩＤ（Split_ID）、分割パケットのサイズ（Split_Size）、およびパケットの寿命（LIFE）等が記述される。
【０１４４】
各分割パケットＳＰＡ１〜ＳＰＡ３のペイロード領域ＳＰＡには、例えば、オリジナルパケットと同様のコマンドまたはデータ等が記述される。ペイロード領域ＳＰＡのデータサイズは、可変である。ペイロード領域ＳＰＡのデータサイズは、最大で１ＫｉＢ程度である。例えば、分割パケットＳＰＡ１，ＳＰＡ２のペイロード領域ＳＰＡのデータサイズは、それぞれ１ＫｉＢ程度である。一方、分割パケットＳＰＡ３のペイロード領域ＳＰＡのデータサイズは、１ＫｉＢよりも小さい。
【０１４５】
各分割パケットＳＰＡ１〜ＳＰＡ３の冗長領域ＳＲＡには、例えば、ＣＲＣ符号等が記述される。ＣＲＣ符号は、ペイロード領域ＳＰＡのデータの誤りを検出するために用いられる符号（情報）である。
【０１４６】
［シグネチャについて］
ここで、シグネチャとは、少なくともストレージシステム１００において、当該分割パケットがユニークであることを示す情報をいう。ここでは、シグネチャは、同じＣＵ１１０やPCIe I/F（同じ送り元アドレス）１１３において、ユニークになるようなビット列で示される。そのため、ヘッダ領域ＳＨＡに記述されるシグネチャと送り元アドレスとを合わせた情報は、ストレージシステム１００全体でその分割パケットに固有な情報（ID情報）となる。より具体的には、第３実施形態に係るシグネチャは、ＣＵ１１０またはPCIe I/F１１３において、パケット（分割パケットではない）を出すたびに、なるべく桁数の多い（例えば、16bit等）カウンタをインクリメント（＋1）することで実現される。ただし、シグネチャの桁数がマイナス（FFFF）になったら、シグネチャの桁数は、初期状態（0）に戻る。
【０１４７】
シグネチャがヘッダ領域ＳＨＡに記述されることで、仮にどこかで迷子になっていた分割パケットが戻ってきてしまった場合でも、ＣＵ１１０に渡さずに破棄することや、分割パケットからオリジナルパケットに再現する際に元のオリジナルパケットが分からなくなること等を防ぐことが可能となる。換言すると、シグネチャがヘッダ領域ＳＨＡにない構成では、最初の分割パケットからオリジナルパケットへの再構成が終わるまでに、同じＣＵ１１０またはPCIe I/F１１３から次の分割パケットが転送される場合がある。この場合、上記次の分割パケットが、上記最初の分割パケットよりも先に目的地に到達してしまうと、上記最初の分割パケットか次の分割パケットかのいずれかに基づき、オリジナルパケットを再現すべきか、区別がつかないということを防止することができる。詳細については、後述する。
【０１４８】
［分割順序情報について］
分割順序情報（分割Ｎｏ.）とは、当該分割パケットが、オリジナルパケットのどの位置のパケットであるかを示す情報をいう。ここでは、当該分割パケットが、オリジナルパケットから分割された順序情報として示される。例えば、分割パケットＳＰＡ１がオリジナルパケットＰＡから１番目に分割されたパケットである場合、分割パケットＳＰＡ１の分割順序情報（分割No.1）は、１番目としてそのヘッダＳＰＡに記述される。例えば、分割パケットＳＰＡ２がオリジナルパケットＰＡから２番目に分割されたパケットである場合、分割パケットＳＰＡ２の分割順序情報（分割No.2）は、２番目としてそのヘッダＳＰＡに記述される。例えば、分割パケットＳＰＡ３がオリジナルパケットＰＡから３番目に分割されたパケットである場合、分割パケットＳＰＡ３の分割順序情報（分割No.3）は、３番目としてそのヘッダＳＰＡに記述される。
【０１４９】
上記分割順序情報がヘッダ領域ＳＨＡに記述されることで、オリジナルパケットの元の位置に当該分割パケットのデータ等を再配置することが可能となる。例えば、リアセンブラ１１２Ｒは、分割パケットＳＰＡ１の分割順序情報（分割No.1）を参照することで、当該分割パケットＳＰＡがオリジナルパケットの１番目に位置することが分かる。そのため、リアセンブラ１１２Ｒは、分割パケットＳＰＡ１のペイロード領域ＳＰＡのコマンド／データ等を、オリジナルパケットのペイロード領域ＰＡの１番目に配置させる。詳細については、後述する。
【０１５０】
このように、分割パケットＳＰＡ１〜ＳＰＡ３は、オリジナルパケットの一部（例えば、オリジナルパケットのヘッダ領域ＨＡの一部およびペイロード領域ＰＡ）を含んで構成される。なお、この例では、１つのオリジナルパケットから３つの分割パケットＳＰＡ１〜ＳＰＡ３を生成する場合を一例に挙げた。しかし、分割パケットを生成する数は、これに限られないことは勿論である。
【０１５１】
［バッファＳＢＦ，ＲＢＦの各構成］
図１７Ｂを用い、上記バッファＳＢＦ，ＲＢＦの各構成について説明する。ここでは、図１１中の送信バッファＳＢＦを一例に挙げて説明する。なお、その他のＲＢＦも同様の構成である。
【０１５２】
図１７Ｂに示すように、第３実施形態に係る送信バッファＳＢＦは、分割パケットを取り扱うための、４つのパケットバッファＳＢＦ−Ｓ１〜ＳＢＦ−Ｓ４を備える。４つのパケットバッファＳＢＦ−Ｓ１〜ＳＢＦ−Ｓ４の入力および出力は、ノードＮ１１，Ｎ１２により共通に接続される。ノードＮ１１は、セレクタＳＥに接続される。ノードＮ１２は、ルーティング計算部１１５Ｓに接続される。
【０１５３】
各パケットバッファＳＢＦ−Ｓ１〜ＳＢＦ−Ｓ４は、各分割パケットのヘッダ領域ＳＨＡも含めた最大のデータサイズ（例えば、２５６Ｂ）を格納可能であるように構成される。例えば、オリジナルパケットから、４つの分割パケットが生成された場合、パケットバッファＳＢＦ−Ｓ１〜ＳＢＦ−Ｓ４は、当該４つの分割パケットをそれぞれ格納することができる。
【０１５４】
上記構成において、例えば、オリジナルパケットＰＡから４つの分割パケットＳＰＡ１〜ＳＰＡ４を転送する場合、パケットバッファＳＢＦ−Ｓ１〜ＳＢＦ−Ｓ４は、まず、分割順序情報にかかわらず、受信した順序で分割パケットＳＰＡ１〜ＳＰＡ４を格納する。次に、格納した分割パケットＳＰＡ１〜ＳＰＡ４を次のバッファＳＢＦに転送する際、転送元のバッファＳＢＦは、当該転送先のバッファＳＢＦから分割パケットＳＰＡ１〜ＳＰＡ４が送信済みの応答を、受信する。当該応答を受信した後、転送元のバッファＳＢＦは、４つの分割パケットＳＰＡ１〜ＳＰＡ４の送信を完了する。
【０１５５】
上記バッファＳＢＦ，ＲＢＦの構成および動作によれば、ルーティング回路１１１のインタフェース１５０にかかわらず、分割パケットの転送速度を向上できる。より具体的には、例えばインタフェース１５０にとしてＬＶＤＳが使用される場合、バッファＳＢＦ，ＲＢＦに分割パケットの全てが揃うまで転送できない場合がある。しかし、第３実施形態に係るパケットバッファＳＢＦ−Ｓ１〜ＳＢＦ−Ｓ４によれば、分割パケットを受信した順序にて、順次、当該分割パケットをルーティング回路１１１から転送することができる。そのため、分割パケットの転送速度を向上することが可能となる。
【０１５６】
さらに、上記パケットバッファＳＢＦ−Ｓ１〜ＳＢＦ−Ｓ４によれば、複数の分割パケットを生成した場合であっても、ストレージシステム１００のネットワークが混雑化することを防止できる。例えば、データサイズが１ｋＢのオリジナルパケットから、４つの分割パケットを生成した場合を考える。この場合、上記パケットバッファＳＢＦ−Ｓ１〜ＳＢＦ−Ｓ４を備えていないと、単純には、同じ量のデータをやり取りする際のパケットの個数が４倍になってしまう。そのため、ストレージシステムのネットワークが混雑化する。しかし、第３実施形態に係る上記パケットバッファＳＢＦ−Ｓ１〜ＳＢＦ−Ｓ４によれば、分割パケットをそれぞれ格納することができる。そのため、複数の分割パケットを生成した場合であっても、ストレージシステム１００のネットワークが混雑化することを防止できる。
【０１５７】
［パケット分割処理］
次に、上記構成において、第３実施形態に係るパケット分割処理について説明する。この説明においては、図１８に示すフローにそって説明する。
【０１５８】
図１８のステップＢ３１において、ルーティング回路１１１は、受信した通常パケット（オリジナルパケット）に記述された内容を解析する。より具体的には、ルーティング回路１１１は、上記ステップＢ２と同様に、受信した通常パケットのヘッダ領域ＨＡを解析し、ヘッダ領域ＨＡに記述されるＦＰＧＡの宛先Ｘ，宛先Ｙが自分宛か否かを判定する。
【０１５９】
ステップＢ３２において、ＰＭＵ１１２は、ステップＢ３１のヘッダ領域ＨＡの解析結果に基づいて、パケット分割指示があるか否かを判定する。例えば、ＰＭＵ１１２は、受信した通常パケットのＦＰＧＡアドレスが自分宛でない場合（Ｂ２でＮＯ）、当該通常パケットを他のＲＣ１１１に転送する際に、解析した通常パケットのヘッダ領域ＨＡにパケット分割指示が記述されるか否かを判定する。なお、上記パケット分割指示は、例えば、転送先が自分のルーティング回路１１１から所定の距離だけ離れている場合（例えば、３ステップ以上等）に指示され、転送先が自分のルーティング回路１１１から近い場合（例えば、３ステップ未満等）に指示されない等の設定が可能である。
【０１６０】
ステップＢ３３において、パケット分割指示がない場合（Ｂ３２でＮＯ）、ＰＭＵ１１２のスプリッタ１１２Ｓは、分割パケットの生成指示を行わない。そのため、この場合、分割パケットは、生成されない。
【０１６１】
ステップＢ３４において、パケット分割指示がある場合（Ｂ３２でＹＥＳ）、ＰＭＵ１１２のスプリッタ１１２Ｓは、上記パケット分割指示に基づき、受信した通常パケット（オリジナルパケット）から１または２以上の分割パケットを生成する。具体的には、ＰＭＵ１１２のスプリッタ１１２Ｓは、パケット分割指示に基づいて、通常パケットから１または２以上の分割パケットを生成する。例えば、スプリッタ１１２Ｓは、パケット分割指示に基づいて、図１７に示したように、１つのオリジナルパケットから、３つの分割パケットＳＰＡ１〜ＳＰＡ３を生成する。
【０１６２】
この際、スプリッタ１１２Ｓは、分割パケットのヘッダ領域ＳＨＡに、例えば、送信元アドレス、宛先、オリジナルパケットと同様のシグネチャ、分割順序情報（Split_No.）、分割パケットのサイズ（Split_Size）、およびパケットの寿命（LIFE）等を少なくとも記述する。上記の通り、ヘッダ領域ＳＨＡに記述されるシグネチャと送り元アドレスとを合わせた情報は、ストレージシステム１００全体でその分割パケットに固有な情報（ID情報）となる。
【０１６３】
その後、生成された各分割パケットは、通常パケットと同様に、バッファＳＢＦ，ＲＢＦから、メッシュ状のインタフェース１５０を介して同時並行的に転送され、所定のアドレスの目的地に到着する。目的に到着した各分割パケットは、後述するパケット再現処理により、オリジナルパケットに再現される。
【０１６４】
なお、第３実施形態では、ステップＢ３４において、スプリッタ１１２Ｓは、パケット分割指示に基づいて、分割パケットを生成した。上記パケット分割指示は、必要に応じて生成することが可能である。例えば、ＰＭＵ１１２は、各ＲＣ１１１間のインタフェース（ＬＶＤＳインタフェース）１５０が転送可能なデータサイズに基づいて、パケット分割指示を生成してもよい。より具体的には、ＰＭＵ１１２は、オリジナルパケットのデータサイズが、インタフェース（ＬＶＤＳインタフェース）１５０が転送可能なデータサイズを超える場合、同様に、パケット分割指示をスプリッタ１１２Ｓに送信してもよい。
【０１６５】
［パケット再現処理］
次に、第３実施形態に係るパケット再現処理について説明する。この説明においては、図１９に示すフローにそって説明する。
【０１６６】
図１９のステップＢ４１において、ルーティング回路１１１は、受信したパケットに記述された内容を解析する。より具体的には、ルーティング回路１１１は、同様に、受信したパケットのヘッダ領域を解析する。
【０１６７】
ステップＢ４２において、ＰＭＵ１１２は、ステップＢ３１のヘッダ領域の解析結果に基づいて、パケット再現指示があるか否かを判定する。例えば、ＰＭＵ１１２は、分割パケットのヘッダ領域ＳＨＡに記述される分割パケットのＩＤ（Split_ID）の有無等に基づいて、パケット再現指示の有無を判定してもよい。
【０１６８】
ステップＢ４３において、ＰＭＵ１１２は、分割パケットでない場合（Ｂ４２でＮＯ）、受信パケットを通常パケットであると判定する。従って、この場合、ＰＭＵ１１２は、オリジナルパケットへの再現を行わない。
【０１６９】
ステップＢ４４において、ＰＭＵ１１２のリアセンブラ１１２Ｒは、分割パケットである場合（Ｂ４２でＹｅｓ）、当該分割パケットからオリジナルパケットを再現する。
【０１７０】
この際、リアセンブラ１１２Ｒは、ヘッダ領域ＳＨＡを参照し、少なくとも送信元アドレス、シグネチャ、および分割順序情報に基づいて、分割パケットからオリジナルパケットを再現する。より具体的には、リアセンブラ１１２Ｒは、まず、パケットバッファに格納された分割ＩＤ情報（シグネチャと送り元アドレスとを合わせた情報）が共通する複数の分割パケットを、例えば第２のメモリ１４２に格納する。次に、リアセンブラ１１２Ｒは、分割順序情報に基づき、分割パケットのペイロード領域ＳＰＡの順序を並び替え、オリジナルパケットのペイロード領域ＰＡを再現する。この際、リアセンブラ１１２Ｒは、分割パケットのヘッダ領域ＳＨＡおよび冗長領域ＳＲＡの一部を共通化させて、オリジナルパケットのヘッダ領域ＨＡおよび冗長領域ＲＡを再現する。なお、リアセンブラ１１２Ｒは、分割パケットの寿命（LIFE）に基づいて、オリジナルパケットへの再現を停止してもよい。
【０１７１】
再現されたオリジナルパケットは、通常パケットと同様に、記述されたコマンドの要求等に基づいて、データ書き込み等の所定の処理が行われる。
【０１７２】
その他の動作に関しては、上記第１および第２実施形態と実質的に同様であるので、その詳細な説明を省略する。
【０１７３】
［作用効果］
以上説明したように、第３実施形態に係るストレージシステム１００の構成および動作よれば、上記（１）乃至（３）と同様の効果が得られる。さらに、第３実施形態に係るストレージシステム１００によれば、少なくとも下記（４）に示す効果が得られる。
【０１７４】
（４）レイテンシを低減できる。
【０１７５】
この説明においては、比較例と第３実施形態とを対比して説明する。
【０１７６】
Ａ）比較例の場合
ここで、比較例は、第３実施形態に係るスプリッタ１１２Ｓやリアセンブラ１１２Ｒを備えていない。そのため、どんなにパケットのデータサイズが大きくなった場合であっても、パケットのデータサイズを小さくすること等のパケットのデータサイズを変更することができない。
【０１７７】
例えば、図２０に示すように、データサイズが４ＫｉＢのパケットＣＰＡのレイテンシを考える。パケットＣＰＡのデータサイズは、小さくされることなく、そのままルーティングされる。そのため、パケットＣＰＡのレイテンシは、典型的には、下記の式（Ａ）のように表される。
【０１７８】
４ＫｉＢ（データサイズ）／スループットＴ．Ｐ．×ステップ数  …式（Ａ）
ここで、例えば、スループットＴ．Ｐ．を１ＫｉＢ／ｓ程度、ステップ数を１００程度である場合を考える。この場合、比較例に係るパケットＣＰＡのレイテンシは、上記式（Ａ）に従えば、４／１＊１００＝４００ｓ程度、となる。
【０１７９】
このように、式（Ａ）に示すように、比較例の場合は、４ＫｉＢ（データサイズ）の増大に伴い、パケットＣＰＡのレイテンシも増大する。
【０１８０】
Ｂ）第３実施形態の場合
上記比較例に対し、第３実施形態に係るストレージシステム１００は、スプリッタ１１２Ｓおよびリアセンブラ１１２Ｒを備える。そのため、パケットのデータサイズが大きくなった場合には、そのパケットのデータサイズを小さくすること等、必要に応じて、パケットのデータサイズを変更することができる。
【０１８１】
例えば、図２１に示すように、同様に、データサイズが４ＫｉＢのパケット（オリジナルパケット）ＯＰＡのレイテンシを考える。ここでは、オリジナルパケットＯＰＡが、スプリッタ１１２Ｓにより、各データサイズが１ＫｉＢである４つの分割パケットＳＰＡ１〜ＳＰＡ４に分割される場合を一例に挙げて説明する。
【０１８２】
この場合、各分割パケットＳＰＡ１〜ＳＰＡ４は、各データサイズがオリジナルパケットのデータサイズに比べて１／４に低減された状態で、メッシュ状のインタフェース１５０を介して同時並行的に転送され、所定のアドレスの目的地に到着する。そのため、オリジナルパケットＯＰＡのレイテンシは、典型的には、下記の式（Ｂ）のように表される。
【０１８３】
１ＫｉＢ（分割パケットのデータサイズ）／スループットＴ．Ｐ．×ステップ数  …式（Ｂ）
ここで、上記と同様の条件として、スループットＴ．Ｐ．を１ＫｉＢ／ｓ、ステップ数を１００stepである場合を考える。この場合、第３実施形態に係るパケットＳＰＡ１〜ＳＰＡ４のレイテンシは、上記式（Ｂ）に従えば、１／１＊１００=１００ｓ程度、となる。さらに、各パケットＳＰＡ１〜ＳＰＡ４の１ステップあたりのレイテンシは、１／１＊１＝１ｓ程度、となる。その結果、第３実施形態に係るレイテンシは、１００＋３＝１０３ｓ程度、となる。
【０１８４】
このように、第３実施形態の場合は、１ＫｉＢ（分割パケットのデータサイズ）の低減に伴い、パケットＯＰＡのレイテンシも低減できることは明らかである。例えば、第３実施形態の場合は、比較例に比べて、１／４程度までレイテンシを低減することができる。この効果は、転送距離が長い場合には、ステップ数が増大するため、より顕著となる。
【０１８５】
なお、リアセンブラ１１２Ｒにより分割パケットからオリジナルパケットに再現することに伴うレイテンシは、上記式（Ｂ）に表されるレイテンシと比べて、十分に小さい。
【０１８６】
（第４実施形態（冗長化、拡張化、実装例等に関する一例））
次に、図２２乃至図４３を用いて、第４実施形態に係るストレージシステム１００ついて説明する。第４実施形態は、上記ストレージシステム１００の冗長化、拡張化、実装例等に関する。ここで、第４実施形態に係るストレージシステム１００は、例えば、システム動作の停止が困難なクラウドシステム等の基幹的な情報処理システムで利用されるストレージシステム等である。
【０１８７】
以下の説明において、上記第１実施形態と重複する部分の詳細な説明を省略する。また、以下の説明において、記憶部１０１に配置されるルーティング回路１１１の図示を省略する。
【０１８８】
［記憶部の冗長化］
まず、図２２を用い、記憶部１０１の冗長化の一例について説明する。
【０１８９】
図示するように、各ＮＭ１４０は、カード基板２０Ｂに実装される。４つのカード基板２０Ｂが、着脱可能にコネクタを介してバックプレーン２２０に装着される。各カード基板２０Ｂには、４つのＮＭ１４０が実装される。Ｙ方向に配列された４つのＮＭ１４０は、同一のカード基板２０Ｂに実装され、Ｘ方向に配列された４つのＮＭ１４０は、夫々異なるカード基板２０Ｂに実装される。
【０１９０】
ここで、記憶部１０１において、ＲＡＩＤ（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  １１３）を備える。そのため、この巨大な不揮発メモリ空間を、複数のＣＵ１１０が備える複数のＣＰＵ６０１によってシェアすることができる。すなわち、第４実施形態に係るメモリシステム１００は、多数のＣＰＵ６０１が、単一の巨大なデータベースを介し、大規模並列演算をするのに都合が良い。そのため、上記３Ｖを兼ね備えるビッグデータ分析のプラットフォームとして適しているといえる。
【０３１４】
例えば、図２３，図４１〜図４３に示したように、第４実施形態に係るストレージシステム１００では、２台のストレージシステム１００Ａ，１００Ｂを、Ｉ／Ｆ部１２０を介して電気的に接続させることで、容易に拡張化（スケールアウト）することが可能である。このように、記憶部１０１を拡張化することで、容易に大容量化することができる。
【０３１５】
さらに、例えば、図１０に示したように、第４実施形態に係るストレージシステム１００では、スケールアウトをした場合であっても、ステップ数を低減することができる。そのため、ステップ数の増大に伴うレイテンシを低減することができる。
【０３１６】
以上説明したように、第４実施形態に係るストレージシステム１００の構成および動作によれば、大容量化とレイテンシの低減化とを両立することができる。
【０３１７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０３１８】
１００…ストレージシステム、１０１…ストレージ部、１１０…コネクション部、１１１…ルーティング部、１１２…パケット制御部、１１２Ｓ…パケット分割部、１１２Ｒ…パケット再現部、１２０…インタフェース部、１３０…マネージメント部、１４０…メモリ部、１４０Ｃ…制御部、１４１…不揮発性メモリ。
【図１】
0006342351.tif 000002
【図２】
0006342351.tif 000003
【図３】
0006342351.tif 000004
【図４】
0006342351.tif 000005
【図５】
0006342351.tif 000006
【図６】
0006342351.tif 000007
【図７】
0006342351.tif 000008
【図８】
0006342351.tif 000009
【図９】
0006342351.tif 000010
【図１０】
0006342351.tif 000011
【図１１】
0006342351.tif 000012
【図１２】
0006342351.tif 000013
【図１３】
0006342351.tif 000014
【図１４Ａ】
0006342351.tif 000015
【図１４Ｂ】
0006342351.tif 000016
【図１４Ｃ】
0006342351.tif 000017
【図１４Ｄ】
0006342351.tif 000018
【図１５】
0006342351.tif 000019
【図１６】
0006342351.tif 000020
【図１７Ａ】
0006342351.tif 000021
【図１７Ｂ】
0006342351.tif 000022
【図１８】
0006342351.tif 000023
【図１９】
0006342351.tif 000024
【図２０】
0006342351.tif 000025
【図２１】
0006342351.tif 000026
【図２２】
0006342351.tif 000027
【図２３】
0006342351.tif 000028
【図２４】
0006342351.tif 000029
【図２５】
0006342351.tif 000030
【図２６】
0006342351.tif 000031
【図２７】
0006342351.tif 000032
【図２８】
0006342351.tif 000033
【図２９】
0006342351.tif 000034
【図３０】
0006342351.tif 000035
【図３１】
0006342351.tif 000036
【図３２】
0006342351.tif 000037
【図３３】
0006342351.tif 000038
【図３４】
0006342351.tif 000039
【図３５】
0006342351.tif 000040
【図３６】
0006342351.tif 000041
【図３７】
0006342351.tif 000042
【図３８】
0006342351.tif 000043
【図３９】
0006342351.tif 000044
【図４０】
0006342351.tif 000045
【図４１】
0006342351.tif 000046
【図４２】
0006342351.tif 000047
【図４３】
0006342351.tif 000048