以下、図面を参照して、発明の実施形態について説明する。なお、以下の説明において、実質的に同一の機能及び要素については、同一符号を付し、必要に応じて説明を行う。また、本明細書では、いくつかの要素に複数の表現の例を付している。なおこれら表現の例はあくまで例示であり、上記要素が他の表現で表現されることを否定するものではない。また、複数の表現が付されていない要素についても、別の表現で表現されてもよい。
さらに、図面は模式的なものであり、厚みと平面寸法との関係や各層の厚みの比率などは現実のものと異なることがある。また、図面相互間において互いの寸法の関係や比率が異なる部分が含まれることもある。
(第1実施形態)
[1.構成]
[1−1.全体構成(ストレージシステム)]
まず、図1を用い、第1実施形態に係るストレージシステム100の全体構成を簡単に説明する。
図示するように、第1実施形態に係るストレージシステム100は、記憶部101、コネクションユニット(CU)110、インタフェース部(I/F部)120、マネジメントモジュール(MM)130、電源装置PSU、および補助電源装置BBUを備える。
[記憶部]
記憶部(ストレージ部)101は、マトリックス状に配置された複数のルーティング回路(RC)111とノードモジュール(NM)140とを備える。上記構成により、記憶部101は、複数のNM140に対してデータを分散して記憶し、分散的かつ並列的にデータを処理する。
ルーティング回路(ルーティング部、トーラスルーティング)111は、メッシュ状のネットワークにより、コネクションユニット(CU)110や他のルーティング回路111等から転送されたデータを含むパケットを、所定の方式にて転送するように構成される。ルーティング回路111は、2つ以上のインタフェース150を夫々備える。ルーティング回路111は、隣接するルーティング回路111と、インタフェース150を介して互いに電気的に接続される。ルーティング回路111の詳細については、後述する。
NM(メモリ部)140は、ルーティング回路111およびここでは図示しないパケットマネジメントユニット(PMU)を介して、隣接するNM140と互いに電気的に接続される。
図1では、各NM140が、其々格子点に配置された、矩形状のネットワークの例を示す。ここでは、格子点の座標を、10進数表記の座標(x,y)で示す。格子点に配置されるNM140の位置情報は、当該格子点の座標と対応する相対的なノードアドレス(xD,yD)(=10進数表記)で示されるものとする。また、図示する例では、左上隅に位置するNM140が、原点のノードアドレス(0,0)を有する。各NM140の相対的なノードアドレスは、横方向(X方向)および縦方向(Y方向)の整数値が変動することで、この変動に伴い増減する。
各NM140は、2以上の異なる方向に隣接するNM140と接続される。例えば、最も左上隅のNM140(0,0)は、ルーティング回路111を介して、X方向に隣接するNM140(1,0)と、X方向とは異なる方向であるY方向に隣接するNM140(0,1)と、斜め方向に隣接するNM140(1,1)と接続される。以降、相対的なノードアドレス(xD、yD)で表されるNM140を、単にノード(xD、yD)と表記する場合がある。
なお、図1では、各NM140が、矩形格子の格子点に配置されるように示したが、各NM140の配置の様態は、この例に限定されない。すなわち、格子の形状は、格子点に配置される各NM140が2以上の異なる方向に隣接するNM140と接続されればよく、例えば三角形、六角形などでもよい。また、図1では、各NM140が、2次元状に配置されるが、各NM140が3次元状に配置されてもよい。3次元状にNM140を配置する場合は、(x、y、z)の3つの値で各NM140を指定することができる。また、NM140が2次元状に配置される場合には、対辺に位置するNM140同士を接続することによって、NM140をトーラス状に接続するようにしてもよい。記憶部101の詳細については、後述する。
[コネクションユニット(CU)]
CU110は、外部のユーザと接続可能な所定のコネクタを備え、外部からの要求(コマンド、アドレス等)に応じて、記憶部101にデータを記憶し、記憶部101から読み出したデータを外部に出力する。具体的には、CU110は、後述する演算装置と記憶装置とを備える。CU110の演算装置は、記憶装置をワークエリアとして使用しながらサーバアプリケーションプログラムを実行する。
CU110は、サーバアプリケーションによる制御の下で、外部からの要求を処理する。CU110は、外部からの要求を処理する過程において、記憶部101に対するアクセスを実行する。CU110は、記憶部101にアクセスする際には、ルーティング回路111が転送したり実行したりすることが可能なパケットを生成し、生成したパケットを、自CU110に接続されるルーティング回路111に送信する。
図1の例では、ストレージシステム100は、4つのCU110を備える。4つのCU110は、夫々異なるルーティング回路111に一対一に接続される。
なお、CU110の数は、任意に構成することが可能である。CU110は、記憶部101を構成する任意のルーティング回路111に接続されることが可能である。また、1つのCU110が複数のルーティング回路111に接続されてもよいし、1つのルーティング回路111が複数のCU110に接続されてもよい。また、記憶部101を構成する複数のルーティング回路111のうちの任意のルーティング回路111にCU110が接続されてもよい。CU110の詳細については、後述する。
[インタフェース部(I/F部)]
I/F部120は、記憶部101を拡張するための接続インタフェースである。例えば、物理的に異なる2台のストレージシステム100が、互いにI/F部120を介して電気的に接続することが可能である。このように接続することで、各ストレージシステム100が備える記憶部101が論理的に結合されて、1つの記憶部101として使用可能となる。I/F部120は、1以上のルーティング回路111からインタフェース150により電気的に接続される。ここでは、2つのルーティング回路111に接続される各インタフェース150が、I/F部120に夫々接続される。
[マネジメントモジュール(MM)]
MM130は、各CU110と、ルーティング回路111とに電気的に接続される。MM130は、図示しないBMC(Baseboard Management Controller)を備える。MM130は、BMCの機能の一環として、例えば、環境温度の監視、ファンの回転数の監視とコントロール、電源電流および電源電圧の監視および制御、各CU110のステータスの記録、各CU110の温度の監視、CU110のリセット等を実行する。
また、MM130は、BMCの機能の他に、記憶部101に対する処理(NM制御処理)を実行する。NM制御処理は任意である。例えば、後述する第1のメモリ141がNAND型フラッシュメモリの場合には、MM130は、第1のメモリ141のウェアレベリングを実行してもよい。また、MM130は、NM140の故障が発見されたとき、故障したNM14が実装されているカード基板の交換を、CU110を介して外部に通知してもよい。また、MM130は、カード基板の交換後、RAID(Redundant Arrays of Inexpensive Disks)のリビルドを行ってもよい。
なお、NM140の故障の検知の主体は、後述するノードコントローラ(NC)140Cでもよいし、CU110でもよい。NM140の故障の検知は、そのNM140が有する第1のメモリ141からのリードデータに対するエラー検出に基づいて実行されてもよい。MM130は、記憶部101に対して処理を行う際には、処理に応じたパケットを発行する。MM130は、例えば、後述する図2に示す様式に準拠するパケットを発行する。
[電源装置(PSU)]
電源装置(主電源部)PSUは、外部電源VCから与えられる外部電源電圧を、所定の直流電圧に変換し、上記変換後の電源電圧VCOを上記各構成部(101、110、120、130)に供給する。外部電源VCは、例えば、100Vや200V等の交流電源である。第1実施形態に係るストレージシステム100は、2つの電源装置PSU−1,PSU−2を備える(図示せず)。しかし、電源装置PSUの構成は、これに限られることはない。
[補助電源装置(BBU)]
補助電源装置(バッテリ装置、補助電源部)BBUは、電源装置PSUから電源電圧VCOを受けることで、自身BBUに蓄電する。そして、補助電源装置BBUは、ストレージシステム100が外部電源VCから電気的に遮断された場合に、所定の補助電源電圧を各構成部(101、110、120、130)に供給する補助電源として働く。例えば、補助電源装置BBUは、停電等が発生して外部電源VCからの電源電圧の供給が停止した場合であっても、上記各構成部に補助電源電圧を供給し、記憶部101を動作させる。そして、NM140が備える図示しないノードコントローラ(NC)140Cは、供給された補助電源電圧により、ユーザデータを第1のメモリ141に書き込むこと(データコピー)により、ユーザデータを保護するバックアップを行う。
[インタフェース規格]
なお、第1実施形態では、上記各構成を電気的に接続するインタフェースは、以下の規格が適用可能である。
まず、各ルーティング回路111を互いに接続するインタフェース150には、Low voltage differential signaling(LVDS)規格等が適用される。
ルーティング回路111とCU110とを電気的に接続するインタフェース150には、PCI Express(PCIe)規格等が適用される。
ルーティング回路111とI/F部120とを電気的に接続するインタフェース150には、上記LVDS規格、およびJoint test action group(JTAG)規格等が適用される。
NM140とMM130とを電気的に接続するインタフェース150には、上記PCIe規格、およびInter-integrated circuit(I2C)規格が適用される。
なお、これらの規格は一例であり、必要に応じてその他の規格が適用可能であることは勿論である。
[1−2.記憶部101の構成]
次に、図2を用い、記憶部101の構成の一例について説明する。
図2に示すように、記憶部101は、1つのルーティング回路111と4つのNM140とを有する複数のFPGA(field-programmable gate array)を備える。ここでは、4つのFPGA0〜FPGA3を一例として示す。例えば、FPGA0は、1つのルーティング回路111と、4つのNM(0,0)、NM(1,0)、NM(0,1)、NM(1,1)を備える。
4つのFPGAは、各FPGAアドレスが、2進数表記で(000,000)、(010,000)、(000,010)、(010,010)で表されるものとする。
各FPGAにおいて、1つルーティング回路111と4つのNMとはインタフェース151にて、図示しないパケットマネジメントユニット(PMU)を介して電気的に接続される。
ルーティング回路111は、パケット転送動作において、FPGAアドレスの宛先x, 宛先yのうちの最下位ビットBX0、BY0を無視して(マスクして)、ルーティングを行う。換言すると、ルーティング回路111は、パケット転送動作において、パケットに記述されたアドレスの一部を使用しアドレスの全部を使用しないで、パケットのルーティングを行う。パケット転送動作については、後述する。
[1−3.FPGAの構成]
次に、図3を用い、FPGAの構成の一例について説明する。ここでは、図2に示すFPGA0を一例に挙げて説明する。
図3に示すように、FPGA0は、1つのルーティング回路111と、4つのNM140と、5つのパケットマネジメントユニット(PMU)112と、CUインタフェース(PCIe I/F)113とを備える。
PMU(パケット制御部)112は、CU110およびNM140に対応して設けられ、CU110およびルーティング回路111からのパケットを解析し、解析したパケットに記述される座標(相対的なノードアドレス)と自分の座標とが一致する場合、対応するNM140にそのパケットを直接的に送信する。一方、PMU112は、解析したパケットに記述される座標と自分の座標とが一致しない場合(他の座標である場合)、その旨をルーティング回路111に返信する。
例えば、最終的な目的位置のノードアドレスが(3,3)である場合、当該ノードアドレス(3,3)に接続されるPMU112は、解析したパケットに記述される座標(3,3)と自分の座標(3,3)とが一致すると判定する。そのため、当該ノードアドレス(3,3)に接続されるPMU112は、解析したパケットを自分に接続されるノードアドレス(3,3)のNM140に送信する。送信されたパケットは、NM140の図示しないノードコントローラ(NC)140Cにより、NM140中の不揮発性メモリに記憶される等のパケットに記載の要求に基づいた所定の処理が行われる。
CUインタフェース(PCIe I/F)113は、CU110の要求やパケット等を解析する。また、CUインタフェース113は、解析された要求やパケット等を、PMU112に送信する。なお、送信されたパケットは、ルーティング回路111を介して、他のNM140に転送される。
[1−4.ノードモジュール(NM)の構成]
次に、図4を用い、NM140の構成の一例について説明する。ここでは、NM(0,0)140を一例に挙げて説明する。
図示するように、NM(0,0)140は、ノードコントローラ(NC)140Cと、ストレージメモリとして機能する第1のメモリ141と、NC140Cがワークエリアとして使用する第2のメモリ142とを備える。
NC140Cには、PMU112が電気的に接続される。NC140Cは、CU110または他のNM140からPMU112を介してパケットを受信したり、CU110または他のNM140にPMU112を介してパケットを送信したりする。NC140は、パケットの宛先が自身のNM140である場合には、そのパケット(そのパケットに記録されるコマンド)に応じた処理を実行する。例えば、コマンドがアクセスコマンド(リードコマンドまたはライトコマンド)である場合には、NC140Cは、第1のメモリ141に対するアクセスを実行する。NC140Cは、受信したパケットの宛先が自身のNM140ではない場合には、そのパケットを自身のNM140に接続されている他のNM140に転送する。
第1のメモリ141としては、例えば、NAND型フラッシュメモリ(以下、NANDメモリという。)、ビットコストスケーラブルメモリ(BiCS)、磁気抵抗メモリ(MRAM)、相変化メモリ(PcRAM)、抵抗変化型メモリ(RRAM(登録商標))、またはこれらの組み合わせが適用可能である。
第2のメモリ142としては、DRAM(dynamic random access memory)等の各種RAMが適用可能である。なお、第1のメモリ141がワークエリアとしての機能を提供する場合、第2のメモリ142はNM140に配置されなくともよい。
[1−5.パケット構成]
次に、図5を用い、パケット構成の一例について説明する。
図5に示すように、第1実施形態に係るパケットは、ヘッダ領域HA、ペイロード領域PA、および冗長領域RAにより構成される。
ヘッダ領域HAには、例えば、送り元のX方向およびY方向のアドレス(from_x, from_y)、および送り先のX方向およびY方向のアドレス(to_x, to_y)、パケットID(Packet_ID)等が記述される。
ペイロード領域PAには、例えば、コマンドまたはデータ等が記述される。ペイロード領域PAのデータサイズは、可変である。ペイロード領域PAのデータサイズは、例えば最大で4KiB(kibibyte)程度である。
冗長領域RAには、例えば、CRC(cyclic redundancy check)符号等が記述される。CRC符号は、ペイロード領域PAのデータの誤りを検出するために用いられる符号(情報)である。
上記構成を備えるパケットを受信したルーティング回路111は、所定の転送アルゴリズムに基づいて、ルーティング先を決定する。第1実施形態に係るルーティング回路111は、送り先のFPGAのX方向およびY方向のアドレス(to_x, to_y)の最下位ビットBX0、BY0を無視して(マスクして)、ルーティングを行う。このような転送アルゴリズムに基づいて、パケットは、ルーティング回路111の間を転送されて、最終的な目的地のノードアドレスのNM140に到達する。
例えば、ルーティング回路111は、上記転送アルゴリズムに基づき、自身のNM140から宛先のNM140までの転送回数が最小となる経路上に位置するNM140を、転送先のNM140に決定する。また、ルーティング回路111は、上記転送アルゴリズムに基づき、自身のNM140から宛先のNM140までの転送回数が最小となる経路が複数存在する場合には、複数の経路から1つの経路を任意の方法で選択する。ルーティング回路111は、同様に、自身のNM140に接続される複数のNM140のうちの転送回数が最小となる経路上に位置するNM140が故障していたりビジーであったりする場合には、他のNM140を転送先に決定する。
ここで、記憶部101は、複数のNM140が互いにメッシュネットワーク状で論理的に接続されている。そのため、記憶部101におけるパケットの転送回数が最小となる経路が複数存在する場合がある。この場合において、特定のNM140を宛先とするパケットが複数発行されても、発行された複数のパケットは、上述の転送アルゴリズムにより複数の経路に分散して転送される。そのため、特定のNM140に対するアクセス集中を回避でき、ストレージシステム100全体のスループットの低下を抑制することができる。
[1−6.CUの構成]
次に、図6を用い、CU110の構成の一例について説明する。
図6に示すように、第1実施形態に係るCU110は、CPU(central processing unit)601と、第3のメモリ603とを備える。
CPU(制御部、演算装置)601は、外部のユーザと接続可能な所定のコネクタを介して、外部からの要求(コマンド、アドレス等)に応じて、記憶部101を制御する。CPU601は、第3のメモリ603をワークエリアとして使用しながら、サーバアプリケーションプログラムを実行する。具体的には、CPU601は、サーバアプリケーションによる制御の下で、外部からの要求を処理する。CPU601は、記憶部101にアクセスする際には、ルーティング回路111が転送したり実行したりすることが可能なパケットを生成し、生成したパケットを、自CU110に接続されるルーティング回路111に送信する。
第3のメモリ603は、CPU601のワークエリアとして使用されるメモリである。第3のメモリ603は、例えば、DRAM、SRAM等の揮発性の半導体メモリが適用可能である。しかし、第3のメモリ603は、これらに限られることはない。
[2.動作]
[2−1.パケット転送動作]
次に、図7および図8を用い、第1実施形態に係るストレージシステム100のパケット転送動作を説明する。ここでは、図7に示すフローに則して説明する。
図7のステップB1において、ルーティング回路111は、CU110や他のルーティング回路111からパケットを受信すると、そのパケットのヘッダHAに記述された送り先のX方向およびY方向のアドレスを解析する。この際、ルーティング回路111は、送り先のFPGAのX方向およびY方向のアドレスの最下位ビットを無視して(マスクして)、ルーティングを行う。
例えば図8に示すように、第1実施形態に係るパケットの送り先のFPGAのX方向およびY方向のアドレス(to_x, to_y)は、それぞれ16ビットで記述されている。そこで、ステップB1において、ルーティング回路111は、送り先のFPGAのX方向およびY方向のアドレス(to_x, to_y)の図8に斜線で示す最下位ビットBX0,BY0を無視して、パケットのルーティングを行う。換言すると、ルーティング回路111は、送り先のFPGAのX方向およびY方向のアドレス(to_x, to_y)の最下位ビットBX0,BY0にかかわらず、パケットのルーティングを行う。
より具体的には、図2に示したように、4つのFPGAアドレスが、2進数表記(000,000)、(010,000)、(000,010)、(010,010)で表される場合、ルーティング回路111は、上記4つのFPGAアドレスの最下位ビットを無視して、パケットのルーティングを行う。つまり、ルーティング回路111は、上記4つのFPGAアドレスの最下位ビットを無視する結果、(00X,00Y)、(01X,00Y)、(00X,01Y)、(01X,01Y)で表されるFPGAアドレスに基づいて、パケットのルーティングを行う。ここで、上記アドレス表記において、XおよびYのビットの状態(“0”状態または“1”状態)は、任意である。
続いて、図7のステップB2において、ルーティング回路111は、受け取ったパケットに記述されるFPGAアドレスの宛先Xおよび宛先Yが自分宛か否かを判定する。この際、ルーティング回路111は、ステップB1において説明したように、送り先のFPGAアドレスの最下位ビットBX0,BY0を無視した状態で、アドレスが自分宛か否かを判定する。
ステップB3において、受け取ったパケットのFPGAアドレスが自分宛でない場合(B2でNO)、ルーティング回路111は、転送回数が最小となる経路にて、パケットを他のRC(他のルーティング回路111)に転送し、この動作を終了する。
一方、ステップB4において、受け取ったパケットのFPGAアドレスが自分宛である場合(B2でYES)、ルーティング回路111は、送り先のFPGAアドレスの全ビットを認識して、当該認識したX方向およびY方向のアドレス先のノードアドレスにパケットを割り振る。換言すると、ステップB4において、ルーティング回路111は、送り先のFPGAアドレスの最下位ビットBX0,BY0を無視しないで、当該認識したX方向およびY方向のアドレス先のノードアドレスに相対的にパケットを割り振る。より具体的には、ルーティング回路111は、目的のノードアドレスに対応する自身のPMU112にパケットを転送する。パケットを転送されたPMU112は、目的のノードアドレスのNM140にパケットを割り振り、この動作を終了する。
[作用効果]
以上説明したように、第1実施形態に係るストレージシステム100の構成および動作によれば、少なくとも下記(1)乃至(2)の効果が得られる。
(1)パケットの転送ステップ数を低減できる。
この説明においては、比較例と第1実施形態とを対比して説明する。
A)比較例の場合
まず、比較例に係るストレージシステムについて、図9を用いて説明する。図9に示すように、比較例に係るストレージシステムは、第1実施形態に係るストレージシステム100と比較して、ルーティング回路111を備えていない。そのため、比較例に係るパケットは、ルーティング回路111を介することなく、直接的にNMの間を転送される。
従って、パケット転送動作において、送り先のFPGAのX方向およびY方向のアドレス(to_x, to_y)の最下位ビットBX0,BY0を無視して、パケットのルーティングを行うこともない。換言すると、比較例に係る記憶部では、送り先のFPGAの全てのX方向およびY方向のアドレスに基づき、パケットのルーティングを行う。
例えば、図9に示すように、パケットがノードアドレス(0,0)からノードアドレス(3,3)に転送される場合、パケットの転送回数が最小となる経路では、転送ステップ数は、合計で6ステップ(1S〜6S)必要である。具体的には、パケットは、ノードアドレス:(0,0)→(1,0)→(2,0)→(3,0)→(3,1)→(3,2)→(3,3)に示す経路にて、直接的にNMを介して転送される。
また、ショートカットするような斜め方向の経路(例えば、ノードアドレス:(0,0)→(1,1)→(2,2)→(3,3))にてパケットを転送することもできない。
そのため、比較例に係るストレージシステムは、パケットの転送数が増大する。例えばCUとNMとの転送距離が遠い場合、転送ステップ数がより増大する。転送ステップ数が増大すると、これに伴って、レイテンシが増大する原因ともなり得る。
B)第1実施形態の場合
上記比較例に対し、第1実施形態に係るストレージシステム100の記憶部101が備える各FPGAは、1つのルーティング回路111と、4つのNM140と、5つのパケットマネジメントユニット(PMU)112と、CUインタフェース(PCIe I/F)113とを備える。
上記構成において、ルーティング回路111は、送り先のFPGAアドレスのX方向およびY方向のアドレス(to_x, to_y)の最下位ビットBX0、BY0を無視して(マスクして)、ルーティングを行う。換言すると、ルーティング回路111は、送り先のFPGAのX方向およびY方向のアドレス(to_x, to_y)の最下位ビットBX0、BY0にかかわらず、パケットの転送を行う。つまり、ルーティング回路111は、パケット転送動作において、パケットに記述されたアドレスの一部を使用し、そのアドレスの全部を使用しないで、パケットのルーティングを行う。ルーティング回路111は、パケット転送動作において、パケットに記述されたアドレスの有効けた数(有効ビット数)を減縮するともいえる。
このような転送アルゴリズムに基づいて、パケットは、ルーティング回路111の間を転送されて、最終的な目的地のノードアドレスのNM140に到達する。
例えば、図10に示すように、パケットがノードアドレス(0,0)(=2進数表記:(000,000))からノードアドレス(3,3)(=2進数表記:(011,011)に同様に転送される場合を一例に挙げて説明する。この場合、パケットの転送回数が最小となる経路では、転送ステップ数を、合計で3ステップ(1S〜3S)に低減することができる。
(1S)
まず、各ルーティング回路111は、送り先のFPGAアドレスのX方向およびY方向のFPGAアドレスの最下位ビットBX0、BY0を無視して、ルーティングを行う(B1)。そのため、ルーティング回路111は、パケットに記述されるアドレスが自分宛でない限り、各FPGAアドレス(00X,00Y)〜(01X,01Y)に基づいて、パケットのルーティングを行う。
例えば、図10に示すように、パケットの宛先がノードアドレス(3,3)(=2進数表記:(011,011)である場合、FPGA0のルーティング回路111は、自分のFPGAアドレス(00X,00Y)とパケットに記述されるノードアドレス(3,3)(=2進数表記:(011,011)とが一致するか否かを判定する(B2)。この際、ルーティング回路111は、FPGAアドレスの最下位ビットBX0、BY0を無視した状態で、両アドレスが互いに一致するか否かを判定する。そのため、この場合、ルーティング回路111は、自分のFPGAアドレス(00X,00Y)と、パケットに記述されるノードアドレス(3,3)(=2進数表記:(01X,01Y)とは一致しないと判定し、隣接するFPGA1にパケットを転送する(B3)。
(2S)
パケットが転送されたFPGA1のルーティング回路111は、同様に、自分のFPGAアドレス(01X,00Y)とパケットに記述されるノードアドレス(3,3)(=2進数表記:(011,011)とが一致するか否かを判定する(B2)。この際、ルーティング回路111は、自分のFPGAアドレス(01X,00Y)と、パケットに記述されるノードアドレス(3,3)(=2進数表記:(01X,01Y)とは一致しないと判定し、隣接するFPGA3にパケットを転送する(B3)。
(3S)
パケットが転送されたFPGA3のルーティング回路111は、同様に、自分のFPGAアドレス(01X,01Y)とパケットに記述されるノードアドレス(3,3)(=2進数表記:(011,011)とが一致するか否かを判定する(B2)。この際、ルーティング回路111は、自分のFPGAアドレス(01X,01Y)と、パケットに記述されるノードアドレス(3,3)(=2進数表記:(01X,01Y)とが一致すると判定する。
一致した場合、FPGA3のルーティング回路111は、パケットに記述されたFPGAアドレスの全ビットを認識して((3,3)(=2進数表記:(011,011))、当該認識したX方向およびY方向のアドレス先の自分のノードアドレスにパケットを割り振る(B4)。換言すると、ルーティング回路111は、パケットに記述されたFPGAアドレスの最下位ビットBX0,BY0を無視しないで、当該認識したX方向およびY方向のアドレス先のノードアドレスに相対的にパケットを割り振る。
より具体的には、ルーティング回路111は、目的のノードアドレス(3,3)(=2進数表記:(011,011)に対応する自身のPMU112にパケットを転送する。パケットを転送されたPMU112は、右斜め下の目的のノードアドレス(3,3)(=2進数表記:(011,011)のNM140にパケットを割り振る。なお、パケットを割り振られたNM(3,3)では、当該NM(3,3)が備えるNC140Cが、パケットに記述されたコマンドに基づいて、第1のメモリ141にパケット中のデータを書き込む等の所望の動作を行う。
以上説明したように、第1実施形態に係るストレージシステム100は、パケット転送動作において、まず、最下位ビットBX0,BY0を無視し、その他の上位ビットのアドレスに基づいて、自分のアドレスとパケットに記述されるアドレスとが一致するか否かを判定する(B1〜B2)。次に、自分のアドレスとパケットに記述されるアドレスとが一致する場合、ルーティング回路111は、全てのビットを考慮し、無視した最下位ビットBX0,BY0に対応する自分の配下のNM140のいずれかにパケットを割り振る(B4)。
このような構成および動作により、パケットの転送ステップ数を低減できる。例えば、第1実施形態では、比較例に比べて、パケットの転送ステップ数を半分以下に低減することができる。さらに、X方向、Y方向の他に、ショートカットするような斜め方向のパケット通信も可能となるため(B4)、パケットの転送ステップ数を低減することができる。
(2)パケットの転送アルゴリズムを変更する必要がない。
上記説明したように、第1実施形態に係るストレージシステム100は、少なくとも2つ以上のNM(メモリ部)140の間のパケット転送をまとめて制御するルーティング回路111を備える。例えば、ルーティング回路111が、2つ以上のNM140をまとめる単位は、2N(N:自然数(N=1,2,3, ,,,))等である。
このように、ルーティング回路111は、パケット転送動作において、最下位ビットBX0,BY0を無視して(マスクして)ルーティングを行うだけでよい。
そのため、第1実施形態に係るストレージシステム100は、例えば上記比較例と比較して、パケットに記述するアドレス構成等の転送アルゴリズムを変更する必要がない点で有利である。従って、第1実施形態に係るストレージシステム100は、余計な設計変更等が不要となり、製造コストを低減できる。
なお、第1実施形態に係るストレージシステム100の場合、1個のCU110につき、少なくとも16個のNM140が制御可能である。そのため、1個のCU110につき、少なくとも16個のパケット通信が可能である。
(変形例1)
上記第1実施形態に係るルーティング回路111は、パケット転送動作の際に、最下位ビットBX0,BY0を無視して(マスクして)ルーティングを行ったが、複数のNM140のノードアドレスをまとめてルーティングを行う限り、これに限られないことは勿論である。
例えば、ルーティング回路111は、パケット転送動作の際に、最上位ビットを無視してルーティングを行ってもよい。より具体的には、ルーティング回路111は、最上位ビットを無視したアドレスに基づいて、自分のFPGAアドレスと、パケットに記述されるノードアドレスとが一致すると判定する。当該アドレスが一致した場合、ルーティング回路111は、送り先のFPGAアドレスの全ビットを認識して、当該認識したX方向およびY方向のアドレス先の自分のノードアドレスにパケットを割り振ってもよい。
例えば、ルーティング回路111は、パケット転送動作の際に、X方向、Y方向のアドレスの一部を無視して同様にルーティングを行ってもよい。さらに、例えば、ルーティング回路111は、パケット転送動作の際に、X方向、Y方向のアドレスのうちの少なくとも1ビット以上を無視して同様にルーティングを行ってもよい。
(第2実施形態(デッドロックの発生の防止に関する一例))
次に、第2実施形態に係るストレージシステム100について説明する。第2実施形態は、デッドロックの発生の防止に関する一例である。以下の説明において、上記第1実施形態と重複する部分の詳細な説明を省略する。
[構成(ルーティング回路111の詳細構成)]
まず、図11を用い、第2実施形態に係るストレージシステム100が備えるルーティング回路111の構成について説明する。図11の破線は返信パケットの経路を示し、実線は送信パケットの経路を示す。ここで、返信パケットとは、CU110からの何らかの命令に対して返信するためのパケットであり、パケットルーティングの方向がNM140からCU110へ向かう方向のパケットをいう。送信パケットとは、CU110からの何らかの命令(リクエスト)を送信するためのパケットであり、パケットルーティングの方向がCU110からNM140へ向かう方向のパケットをいう。
図11に示すように、第2実施形態に係るルーティング回路111は、ルーティング回路111の外部のルーティング経路であるインタフェース150の数を第1実施形態と同じ8系統に維持する。一方、ルーティング回路111は、ルーティング計算部115R,115S、バッファRBF,SBF、およびセレクタSEを備え、ルーティング回路111の内部のパケット処理経路の数を倍増させる。上記構成により、ルーティング回路111は、返信パケットと送信パケットとを区別し、各パケット処理を独立してルーティングを行う。
より具体的には、第2実施形態に係るルーティング回路111は、2個のルーティング計算部115R,115Sと、16個のバッファRBF,SBFと、8個のセレクタSEとを備える。
ルーティング計算部115Rと、8個のバッファRBFとは、返信パケットのルーティングを行うための構成である。ルーティング計算部115Rは、返信パケットについての所定のルーティング計算を専門に実行する。各バッファ(返信バッファ)RBFは、返信パケットを一時的に格納する。
ルーティング計算部115Sと、8個のバッファSBFとは、送信パケットのルーティングを行うための構成である。ルーティング計算部115Sは、送信パケットについての所定のルーティング計算を専門に実行する。各バッファ(送信バッファ)SBFは、送信パケットを一時的に格納する。
セレクタ(選択部)SEは、ルーティング回路111の図示しない制御部から通知される制御信号に基づいて、受信するパケットを返信バッファRBFに格納するか送信バッファSBFに格納するかを選択する。これらの動作の詳細については、後述する。
なお、他のルーティング回路111も、図11に示した構成と同様の構成を備える。その他の構成については、上記第1の実施形態と実質的に同様であるので、その詳細な説明を省略する。
[動作(パケット処理動作)]
次に、図12を用い、上記構成を備えるルーティング回路111のパケット処理動作について説明する。
まず、ステップB21において、ルーティング回路111は、受信するパケットが、返信パケットか送信パケットか否かを判定する。より具体的には、ルーティング回路111は、図5で示したヘッダ領域HAに記述されたパケットの種類に基づいて、受信するパケットの種類を判定する。このパケットの種類は、例えば所定の複数のビットにて、ヘッダ領域HAに記述される。このステップB21の際、ルーティング回路111は、ヘッダ領域HAに記述されたパケットの種類のうちの通信タイプ(communication type)を参照し、返信パケット(reply)である場合(参照ビットが“1”状態である場合)、当該受信するパケットが返信パケットであると判定する。同様に、ルーティング回路111は、ヘッダ領域HAに記述されたパケットの種類のうちの通信タイプを参照し、送信パケット(send)である場合(参照ビットが“0”状態である場合)、当該受信するパケットが送信パケットであると判定する。上記判定結果に基づき、ルーティング回路111は、所定の制御信号をセレクタSEに送信する。
(返信パケットの場合)
ステップB22において、上記受信するパケットが返信パケットである場合、セレクタSEは、制御信号に基づいて返信パケットを選択し、返信パケットを自ルーティング回路111の空いている返信バッファRBFに格納させる。
ステップB23において、返信側のルーティング計算部115Rは、CU110までの経路を計算し、返信パケットを、返信バッファRBFからCU110へ返信する。より具体的には、ルーティング計算部115Rは、CU110までの最短経路、または当該返信パケットを格納している返信バッファRBFからCU110までの経路上に存在する他の返信バッファRBFまでの優先経路等を計算する。続いて、ルーティング計算部115Rは、返信バッファRRBから当該計算した経路上へ返信パケットを転送する。
なお、続いて、当該計算された経路上へ転送された返信パケットは、例えば、計算された経路上の空いている返信バッファRBFに格納される。続いて、例えば、返信パケットがCU110に到達すると、返信パケットがCU110により解析され、CU110からの命令に対するNM140の返信パケットの処理が完了する。
(送信パケットの場合)
ステップB24において、上記受信するパケットが送信パケットである場合、セレクタSEは、制御信号に基づいて送信パケットを選択し、送信パケットを自ルーティング回路111の空いている送信バッファSBFに格納させる。
ステップB25において、送信側のルーティング計算部115Sは、目的のNM140までの経路を計算し、送信パケットを、送信バッファSBFから、当該目的のNM140に送信する。より具体的には、ルーティング計算部115Sは、送信パケットに記述された目的のNM140のアドレスを参照し、目的のNM140までの最短経路、または当該送信パケットを格納している送信バッファRBSから目的のNM140までの経路上に存在する他の送信バッファSBFまでの優先経路等を計算する。続いて、ルーティング計算部115Sは、送信バッファSRBから当該計算した経路上へ送信パケットを転送する。
なお、続いて、当該計算された経路上へ転送された送信パケットは、例えば、計算された経路上の空いている送信バッファSBFに格納される。続いて、例えば、送信パケットが宛先のNM140に到達すると、送信パケットが宛先のNM140のPMU112により解析される。続いて、送信パケットの解析結果に基づいて、CU110からの命令(例えば、データ書き込み等)が当該宛先のNM140において実行され、送信パケットの処理が完了する。
[作用効果]
以上説明したように、第2実施形態に係るストレージシステム100の構成および動作よれば、上記(1)乃至(2)と同様の効果が得られる。さらに、第2実施形態に係るストレージシステム100によれば、少なくとも下記(3)に示す効果が得られる。
(3)デッドロックの発生を防止できる。
この説明においては、比較例と第2実施形態とを対比して説明する。
A)比較例の場合
図9に示したように、比較例に係るストレージシステムは、第1、第2実施形態に係るストレージシステム100と比較して、ルーティング回路111を備えていない。そのため、比較例に係るパケットは、ルーティング回路111を介することなく、直接的にNMの間を転送される。
このように、複数のコンピュータノードが、ネットワークを経由して、データや命令をやり取りするような比較例に係るストレージシステムの場合、非常に単純な動作の場合には、特に大きな問題は生じない。しかしながら、例えばより複雑なアルゴリズム等を処理しようとした場合、ネットワーク上にデータや命令を収めたパケットが滞留してしまい、処理がストップしてしまう現象(以下、「デッドロック」という。)が生じるおそれがある。このデッドロックの発生について、図13および図14A〜図14Dを用い、より具体的に説明する。
まず、図13の時刻t1において、比較例に係るノードモジュールNMAが、CUからの命令1を行うためのコマンドcmd1を受信するとする(図14A)。ここで、命令1は、必ず2つの処理(処理1および処理2)を順に実行しなければ完了しない命令であるとする。コマンドcmd1は、一連の上記2つの処理を行うためのコマンドである。
続いて、図13の時刻t2において、コマンドcmd1を受け取ったノードモジュールNMAは、別のノードモジュールNMB1〜NMB3に対して、処理2に係るコマンドcmd2を発行する(図14B)。ここで、ノードモジュールNMB1〜NMB3は、例えば、所定のRAIDグループを構成するノードモジュール群である。なお、このコマンドcmd2の応答(RP1〜RP3)に対して、再度ノードモジュールNMAが何らかの処理を施した返信パケットがCUに返信されると、最初のコマンドcmd1に対する応答が完了する。換言すると、命令1を完了するためには、まず、ノードモジュールNMAが、ノードモジュールNMB1〜NMB3から返信される返信パケットRP1〜RP3を受信する必要がある。
そのため、図13の時刻t3において、コマンドcmd2がノードモジュールNMB1〜NMB3によって処理された後、コマンドcmd2の応答である返信パケットRP1〜RP3が、ノードモジュールNMAに戻ってこようとする(図14C)。
しかしながら、図13の時刻t4において、ノードモジュールNMAは、別の命令2に係る送信パケットSP1〜SP4を大量に受け取っており、これ以上パケットを受け付けられない状態にあったとする(図14D)。この際、ノードモジュールNMAが、以降の処理を続けるためには、ノードモジュールNMB1〜NMB3から帰ってきている返信パケットRP1〜RP3を受け取り、所定の処理をした後、コマンドcmd1に対する応答をCUに返信する必要がある。しかしながら、ノードモジュールNMAは、これ以上パケットを受け付けられない状態にあるため、命令1の完了が不可能となる。その結果、ノードモジュールNMAは、もはやこれ以上の処理を続けることができない(デッドロックの発生)。
換言すると、図13の時刻t4において、ノードモジュールNMAの外部との4つの全てのルーティング経路(スロット)は、命令2に係る送信パケットSP1〜SP4で既に埋まっている。そのため、ノードモジュールNMAは、返信パケットRP1〜RP3を新たに受信できない。従って、ノードモジュールNMAは、返信パケットRP1〜RP3を処理し、コマンドcmd1に対する応答をCUに返信できないので、命令1を完了することができない。命令1を完了することができないので、次の命令2に係る送信パケットSP1〜SP4を送信できず、命令2も完了できない。このように、命令1,2のいずれも他方の命令の処理待ちとなり、命令1,2のいずれも完了せず、デッドロックが発生し得る。
なお、ストレージシステムがクラウドシステム等の基幹的な情報処理システムで利用され場合、デッドロックが発生すると、システム動作全体の停止につながりかねない。そのため、デッドロックの発生は、システム全体の信頼性に大きく影響するものである。
B)第2実施形態の場合
上記比較例に対し、第2実施形態に係るストレージシステム100は、図11に示した構成のルーティング回路111を介して、パケット転送動作を行う。ルーティング回路111は、ルーティング回路111の外部のルーティング経路であるインタフェース150の数を第1実施形態と同じ8系統に維持する。一方、ルーティング回路111は、ルーティング計算部115R,115S、バッファRBF,SBF、およびセレクタSEを備え、ルーティング回路111の内部のパケット処理経路の数を倍増させる。上記構成により、ルーティング回路111は、返信パケットと送信パケットとを区別して分離し、各パケット処理を独立してルーティングを行う(図12)。このように、「分離」とは、ルーティング回路111内の経路がパケットの種類に応じて分離されることをいい、各経路がルーティング回路111内でまじわらないことをいう。
例えば、上記比較例と同様のパケット処理が生じた場合について、図15を用いて説明する。ここでは、一例として、あるNM140が、比較例に係るノードモジュールNMAに対応するものとして説明する。
図15の時刻t4において、NM140は、同様に、別の命令2に係る大量の送信パケットSP1〜SP4が送信されている状態であるとする。この際、受信するパケットが送信パケットSP1〜SP4であると判定すると(図12のB21)、セレクタSEは、送信パケットSP1〜SP4を選択し、選択した送信パケットSP1〜SP4を自ルーティング回路111の空いている送信バッファSBFにそれぞれ格納させる(図12のB24)。
この際、NM140が処理を続けるためには、返信パケットRP1〜RP3を受け取り、所定の処理をした後、コマンドcmd1に対する応答をCU110に返信し、命令1を完了させる必要がある。
そこで、同時刻t4において、まず、NM140のルーティング回路111は、受信するパケットが、返信パケットか送信パケットか否かを判定する(図12のB21)。続いて、受信するパケットが返信パケットRP1〜RP3であると判定すると、セレクタSEは、返信パケットRP1〜RP3を選択し、選択した返信パケットRP1〜RP3を自ルーティング回路111の空いている返信バッファRBFにそれぞれ格納させる(図12のB22)。続いて、返信側のルーティング計算部115Rは、CU110までの経路を計算し、返信パケットRP1〜RP3を、各返信バッファRBFからCU110へ返信する(図12のB23)。そのため、命令1を完了させることが可能となる。
続いて、命令1の完了後の時刻t5において、送信側のルーティング計算部115Sは、目的のNM140までの経路を計算し、送信パケットSP1〜SP4を、各送信バッファSBFから、当該目的のNM140に送信する(図12のB25)。そのため、命令2を完了させることが可能となる。
以上説明したように、第2実施形態に係るストレージシステム100では、送信パケットまたは返信パケットに応じて、格納させるバッファ(SBF,RBF)とルーティング計算を行う計算部(115S,115R)とを分離させ、それぞれを独立してパケットのルーティングを行う。そのため、図15に示したように、少なくとも2つ以上のパケット転送動作を分離独立して行うことができ、2つ以上のパケット転送動作を並行して行うことができる。このように、第2実施形態に係るストレージシステム100の構成およびその動作によれば、デッドロックの発生を防止することができる点で有利である。
(変形例2(パケットの種類のその他の一例))
上記第2実施形態では、送信パケットか返信パケットに応じて、パケットのルーティングを分離して行う形態を一例に挙げて説明した。しかしながら、これは例示であり、パケットの種類(packet type)に基づいて、パケットのルーティングを行う限り、第2実施形態に限定されないことは勿論である。
例えば、ルーティング回路111は、ルーティング方向(routing direction)に応じて、同様にパケットのルーティングを分離して行ってもよい。より具体的には、上記図12のステップB21の際、ルーティング回路111は、ヘッダ領域HAに記述されたパケットの種類のうちのルーティング方向を参照し、返信方向(reverse)である場合(参照ビットが“1”状態である場合)、当該受信するパケットのルーティング方向が返信方向であると判定する。同様に、ルーティング回路111は、ヘッダ領域HAに記述されたパケットの種類のうちのルーティングの方向を参照し、送信方向(forward)である場合(参照ビットが“0”状態である場合)、当該受信するパケットのルーティング方向が送信方向であると判定する。
例えば、ルーティング回路111は、パケットの発行元(source type)に応じて、同様にパケットのルーティングを分離して行ってもよい。より具体的には、上記図12のステップB21の際、ルーティング回路111は、ヘッダ領域HAに記述されたパケットの種類のうちのパケットの発行元を参照し、それがNM140である場合(参照ビットが“1”状態である場合)、当該受信するパケットの発行元がNM140であると判定する。同様に、ルーティング回路111は、ヘッダ領域HAに記述されたパケットの種類のうちのパケットの発行元を参照し、CU110である場合(参照ビットが“0”状態である場合)、当該受信するパケットの発行元がCU110であると判定する。
例えば、ルーティング回路111は、パケットの送信先(destination type)に応じて、同様にパケットのルーティングを分離して行ってもよい。より具体的には、上記図12のステップB21の際、ルーティング回路111は、ヘッダ領域HAに記述されたパケットの種類のうちのパケットの送信元を参照し、それがCU110である場合(参照ビットが“1”状態である場合)、当該受信するパケットの送信先がCU110であると判定する。同様に、ルーティング回路111は、ヘッダ領域HAに記述されたパケットの種類のうちのパケットの送信先を参照し、NM140である場合(参照ビットが“0”状態である場合)、当該受信するパケットの送信先がNM140であると判定する。
なお、これらに限られず、例えば、X方向のルーティングであるのかそうでないのか、Y方向のルーティングであるのかそうでないのか、分割パケットか分割パケットでないのか等のパケットの種類に応じて、パケットのルーティングを分離して行ってもよい。さらに、その他の必要に応じて、パケットのルーティングを分離して行ってもよい。
(第3実施形態(レイテンシの低減に関する一例))
次に、図16乃至図21を用いて、第3実施形態に係るストレージシステム100ついて説明する。第3実施形態は、レイテンシの低減の一例に関する。この説明において、上記第1、第2実施形態と重複する部分の詳細な説明を省略する。
[FPGAの構成]
図16を用い、第3実施形態に係るFPGAの構成について説明する。ここでは、FPGA0を一例に挙げて説明する。
図16に示すように、第3実施形態に係るFPGA0が備えるPMU112は、スプリッタ112Sとリアセンブラ112Rとを更に備える点で、上記第1および第2実施形態と相違する。
スプリッタ(パケット分割部)112Sは、PMU112からの分割パケットの生成指示に基づいて、通常パケット(オリジナルパケット)から1または2以上の所定の分割パケットを生成する。ここで、通常パケット(オリジナルパケット)とは、分割パケットの分割元となるパケットをいう。通常パケット(オリジナルパケット)は、例えば、上記図5に示したパケット構造を備える。従って、分割パケットは、オリジナルパケットの一部を含む。分割パケットの詳細については、後述する。
リアセンブラ(パケット再現部)112Rは、PMU112からの分割パケットの再現(再組立て)指示に基づいて、受信した1または2以上の分割パケットから当該分割パケットのオリジナルパケットを再現する。ここで、オリジナルパケットが再現されるまでの分割パケットは、例えば、第2のメモリ142であるDRAMやSDRAM等に格納される。
なお、その他のFPGAについても、FPGA0と同様の構成である。また、その他の構成については、上記第1および第2実施形態と実質的に同様であるため、その詳細な説明を省略する。
[分割パケットの構成]
図17Aを用い、上記スプリッタ112Sにより生成される、第3実施形態に係る分割パケットの構成について説明する。
図17Aに示すように、分割パケットの生成指示を受けたPMU112のスプリッタ112Sは、当該分割パケットの生成指示に基づき、1つのオリジナルパケットから3つの分割パケットSPA1〜SPA3を生成する。
3つの分割パケットSPA1〜SPA3は、ヘッダ領域SHA、ペイロード領域SPA、および冗長領域SRAにより構成される。
各分割パケットSPA1〜SPA3のヘッダ領域SHAには、例えば、送り元のX方向およびY方向のアドレス(from_x, from_y)、送り先のX方向およびY方向のアドレス(to_x, to_y)、パケットID(Packet_ID)等が記述される。さらに、ヘッダ領域SHAには、例えば、シグネチャ(Signature)、分割順序情報(Split_No.)、スプリットID(Split_ID)、分割パケットのサイズ(Split_Size)、およびパケットの寿命(LIFE)等が記述される。
各分割パケットSPA1〜SPA3のペイロード領域SPAには、例えば、オリジナルパケットと同様のコマンドまたはデータ等が記述される。ペイロード領域SPAのデータサイズは、可変である。ペイロード領域SPAのデータサイズは、最大で1KiB程度である。例えば、分割パケットSPA1,SPA2のペイロード領域SPAのデータサイズは、それぞれ1KiB程度である。一方、分割パケットSPA3のペイロード領域SPAのデータサイズは、1KiBよりも小さい。
各分割パケットSPA1〜SPA3の冗長領域SRAには、例えば、CRC符号等が記述される。CRC符号は、ペイロード領域SPAのデータの誤りを検出するために用いられる符号(情報)である。
[シグネチャについて]
ここで、シグネチャとは、少なくともストレージシステム100において、当該分割パケットがユニークであることを示す情報をいう。ここでは、シグネチャは、同じCU110やPCIe I/F(同じ送り元アドレス)113において、ユニークになるようなビット列で示される。そのため、ヘッダ領域SHAに記述されるシグネチャと送り元アドレスとを合わせた情報は、ストレージシステム100全体でその分割パケットに固有な情報(ID情報)となる。より具体的には、第3実施形態に係るシグネチャは、CU110またはPCIe I/F113において、パケット(分割パケットではない)を出すたびに、なるべく桁数の多い(例えば、16bit等)カウンタをインクリメント(+1)することで実現される。ただし、シグネチャの桁数がマイナス(FFFF)になったら、シグネチャの桁数は、初期状態(0)に戻る。
シグネチャがヘッダ領域SHAに記述されることで、仮にどこかで迷子になっていた分割パケットが戻ってきてしまった場合でも、CU110に渡さずに破棄することや、分割パケットからオリジナルパケットに再現する際に元のオリジナルパケットが分からなくなること等を防ぐことが可能となる。換言すると、シグネチャがヘッダ領域SHAにない構成では、最初の分割パケットからオリジナルパケットへの再構成が終わるまでに、同じCU110またはPCIe I/F113から次の分割パケットが転送される場合がある。この場合、上記次の分割パケットが、上記最初の分割パケットよりも先に目的地に到達してしまうと、上記最初の分割パケットか次の分割パケットかのいずれかに基づき、オリジナルパケットを再現すべきか、区別がつかないということを防止することができる。詳細については、後述する。
[分割順序情報について]
分割順序情報(分割No.)とは、当該分割パケットが、オリジナルパケットのどの位置のパケットであるかを示す情報をいう。ここでは、当該分割パケットが、オリジナルパケットから分割された順序情報として示される。例えば、分割パケットSPA1がオリジナルパケットPAから1番目に分割されたパケットである場合、分割パケットSPA1の分割順序情報(分割No.1)は、1番目としてそのヘッダSPAに記述される。例えば、分割パケットSPA2がオリジナルパケットPAから2番目に分割されたパケットである場合、分割パケットSPA2の分割順序情報(分割No.2)は、2番目としてそのヘッダSPAに記述される。例えば、分割パケットSPA3がオリジナルパケットPAから3番目に分割されたパケットである場合、分割パケットSPA3の分割順序情報(分割No.3)は、3番目としてそのヘッダSPAに記述される。
上記分割順序情報がヘッダ領域SHAに記述されることで、オリジナルパケットの元の位置に当該分割パケットのデータ等を再配置することが可能となる。例えば、リアセンブラ112Rは、分割パケットSPA1の分割順序情報(分割No.1)を参照することで、当該分割パケットSPAがオリジナルパケットの1番目に位置することが分かる。そのため、リアセンブラ112Rは、分割パケットSPA1のペイロード領域SPAのコマンド/データ等を、オリジナルパケットのペイロード領域PAの1番目に配置させる。詳細については、後述する。
このように、分割パケットSPA1〜SPA3は、オリジナルパケットの一部(例えば、オリジナルパケットのヘッダ領域HAの一部およびペイロード領域PA)を含んで構成される。なお、この例では、1つのオリジナルパケットから3つの分割パケットSPA1〜SPA3を生成する場合を一例に挙げた。しかし、分割パケットを生成する数は、これに限られないことは勿論である。
[バッファSBF,RBFの各構成]
図17Bを用い、上記バッファSBF,RBFの各構成について説明する。ここでは、図11中の送信バッファSBFを一例に挙げて説明する。なお、その他のRBFも同様の構成である。
図17Bに示すように、第3実施形態に係る送信バッファSBFは、分割パケットを取り扱うための、4つのパケットバッファSBF−S1〜SBF−S4を備える。4つのパケットバッファSBF−S1〜SBF−S4の入力および出力は、ノードN11,N12により共通に接続される。ノードN11は、セレクタSEに接続される。ノードN12は、ルーティング計算部115Sに接続される。
各パケットバッファSBF−S1〜SBF−S4は、各分割パケットのヘッダ領域SHAも含めた最大のデータサイズ(例えば、256B)を格納可能であるように構成される。例えば、オリジナルパケットから、4つの分割パケットが生成された場合、パケットバッファSBF−S1〜SBF−S4は、当該4つの分割パケットをそれぞれ格納することができる。
上記構成において、例えば、オリジナルパケットPAから4つの分割パケットSPA1〜SPA4を転送する場合、パケットバッファSBF−S1〜SBF−S4は、まず、分割順序情報にかかわらず、受信した順序で分割パケットSPA1〜SPA4を格納する。次に、格納した分割パケットSPA1〜SPA4を次のバッファSBFに転送する際、転送元のバッファSBFは、当該転送先のバッファSBFから分割パケットSPA1〜SPA4が送信済みの応答を、受信する。当該応答を受信した後、転送元のバッファSBFは、4つの分割パケットSPA1〜SPA4の送信を完了する。
上記バッファSBF,RBFの構成および動作によれば、ルーティング回路111のインタフェース150にかかわらず、分割パケットの転送速度を向上できる。より具体的には、例えばインタフェース150にとしてLVDSが使用される場合、バッファSBF,RBFに分割パケットの全てが揃うまで転送できない場合がある。しかし、第3実施形態に係るパケットバッファSBF−S1〜SBF−S4によれば、分割パケットを受信した順序にて、順次、当該分割パケットをルーティング回路111から転送することができる。そのため、分割パケットの転送速度を向上することが可能となる。
さらに、上記パケットバッファSBF−S1〜SBF−S4によれば、複数の分割パケットを生成した場合であっても、ストレージシステム100のネットワークが混雑化することを防止できる。例えば、データサイズが1kBのオリジナルパケットから、4つの分割パケットを生成した場合を考える。この場合、上記パケットバッファSBF−S1〜SBF−S4を備えていないと、単純には、同じ量のデータをやり取りする際のパケットの個数が4倍になってしまう。そのため、ストレージシステムのネットワークが混雑化する。しかし、第3実施形態に係る上記パケットバッファSBF−S1〜SBF−S4によれば、分割パケットをそれぞれ格納することができる。そのため、複数の分割パケットを生成した場合であっても、ストレージシステム100のネットワークが混雑化することを防止できる。
[パケット分割処理]
次に、上記構成において、第3実施形態に係るパケット分割処理について説明する。この説明においては、図18に示すフローにそって説明する。
図18のステップB31において、ルーティング回路111は、受信した通常パケット(オリジナルパケット)に記述された内容を解析する。より具体的には、ルーティング回路111は、上記ステップB2と同様に、受信した通常パケットのヘッダ領域HAを解析し、ヘッダ領域HAに記述されるFPGAの宛先X,宛先Yが自分宛か否かを判定する。
ステップB32において、PMU112は、ステップB31のヘッダ領域HAの解析結果に基づいて、パケット分割指示があるか否かを判定する。例えば、PMU112は、受信した通常パケットのFPGAアドレスが自分宛でない場合(B2でNO)、当該通常パケットを他のRC111に転送する際に、解析した通常パケットのヘッダ領域HAにパケット分割指示が記述されるか否かを判定する。なお、上記パケット分割指示は、例えば、転送先が自分のルーティング回路111から所定の距離だけ離れている場合(例えば、3ステップ以上等)に指示され、転送先が自分のルーティング回路111から近い場合(例えば、3ステップ未満等)に指示されない等の設定が可能である。
ステップB33において、パケット分割指示がない場合(B32でNO)、PMU112のスプリッタ112Sは、分割パケットの生成指示を行わない。そのため、この場合、分割パケットは、生成されない。
ステップB34において、パケット分割指示がある場合(B32でYES)、PMU112のスプリッタ112Sは、上記パケット分割指示に基づき、受信した通常パケット(オリジナルパケット)から1または2以上の分割パケットを生成する。具体的には、PMU112のスプリッタ112Sは、パケット分割指示に基づいて、通常パケットから1または2以上の分割パケットを生成する。例えば、スプリッタ112Sは、パケット分割指示に基づいて、図17に示したように、1つのオリジナルパケットから、3つの分割パケットSPA1〜SPA3を生成する。
この際、スプリッタ112Sは、分割パケットのヘッダ領域SHAに、例えば、送信元アドレス、宛先、オリジナルパケットと同様のシグネチャ、分割順序情報(Split_No.)、分割パケットのサイズ(Split_Size)、およびパケットの寿命(LIFE)等を少なくとも記述する。上記の通り、ヘッダ領域SHAに記述されるシグネチャと送り元アドレスとを合わせた情報は、ストレージシステム100全体でその分割パケットに固有な情報(ID情報)となる。
その後、生成された各分割パケットは、通常パケットと同様に、バッファSBF,RBFから、メッシュ状のインタフェース150を介して同時並行的に転送され、所定のアドレスの目的地に到着する。目的に到着した各分割パケットは、後述するパケット再現処理により、オリジナルパケットに再現される。
なお、第3実施形態では、ステップB34において、スプリッタ112Sは、パケット分割指示に基づいて、分割パケットを生成した。上記パケット分割指示は、必要に応じて生成することが可能である。例えば、PMU112は、各RC111間のインタフェース(LVDSインタフェース)150が転送可能なデータサイズに基づいて、パケット分割指示を生成してもよい。より具体的には、PMU112は、オリジナルパケットのデータサイズが、インタフェース(LVDSインタフェース)150が転送可能なデータサイズを超える場合、同様に、パケット分割指示をスプリッタ112Sに送信してもよい。
[パケット再現処理]
次に、第3実施形態に係るパケット再現処理について説明する。この説明においては、図19に示すフローにそって説明する。
図19のステップB41において、ルーティング回路111は、受信したパケットに記述された内容を解析する。より具体的には、ルーティング回路111は、同様に、受信したパケットのヘッダ領域を解析する。
ステップB42において、PMU112は、ステップB31のヘッダ領域の解析結果に基づいて、パケット再現指示があるか否かを判定する。例えば、PMU112は、分割パケットのヘッダ領域SHAに記述される分割パケットのID(Split_ID)の有無等に基づいて、パケット再現指示の有無を判定してもよい。
ステップB43において、PMU112は、分割パケットでない場合(B42でNO)、受信パケットを通常パケットであると判定する。従って、この場合、PMU112は、オリジナルパケットへの再現を行わない。
ステップB44において、PMU112のリアセンブラ112Rは、分割パケットである場合(B42でYes)、当該分割パケットからオリジナルパケットを再現する。
この際、リアセンブラ112Rは、ヘッダ領域SHAを参照し、少なくとも送信元アドレス、シグネチャ、および分割順序情報に基づいて、分割パケットからオリジナルパケットを再現する。より具体的には、リアセンブラ112Rは、まず、パケットバッファに格納された分割ID情報(シグネチャと送り元アドレスとを合わせた情報)が共通する複数の分割パケットを、例えば第2のメモリ142に格納する。次に、リアセンブラ112Rは、分割順序情報に基づき、分割パケットのペイロード領域SPAの順序を並び替え、オリジナルパケットのペイロード領域PAを再現する。この際、リアセンブラ112Rは、分割パケットのヘッダ領域SHAおよび冗長領域SRAの一部を共通化させて、オリジナルパケットのヘッダ領域HAおよび冗長領域RAを再現する。なお、リアセンブラ112Rは、分割パケットの寿命(LIFE)に基づいて、オリジナルパケットへの再現を停止してもよい。
再現されたオリジナルパケットは、通常パケットと同様に、記述されたコマンドの要求等に基づいて、データ書き込み等の所定の処理が行われる。
その他の動作に関しては、上記第1および第2実施形態と実質的に同様であるので、その詳細な説明を省略する。
[作用効果]
以上説明したように、第3実施形態に係るストレージシステム100の構成および動作よれば、上記(1)乃至(3)と同様の効果が得られる。さらに、第3実施形態に係るストレージシステム100によれば、少なくとも下記(4)に示す効果が得られる。
(4)レイテンシを低減できる。
この説明においては、比較例と第3実施形態とを対比して説明する。
A)比較例の場合
ここで、比較例は、第3実施形態に係るスプリッタ112Sやリアセンブラ112Rを備えていない。そのため、どんなにパケットのデータサイズが大きくなった場合であっても、パケットのデータサイズを小さくすること等のパケットのデータサイズを変更することができない。
例えば、図20に示すように、データサイズが4KiBのパケットCPAのレイテンシを考える。パケットCPAのデータサイズは、小さくされることなく、そのままルーティングされる。そのため、パケットCPAのレイテンシは、典型的には、下記の式(A)のように表される。
4KiB(データサイズ)/スループットT.P.×ステップ数 …式(A)
ここで、例えば、スループットT.P.を1KiB/s程度、ステップ数を100程度である場合を考える。この場合、比較例に係るパケットCPAのレイテンシは、上記式(A)に従えば、4/1*100=400s程度、となる。
このように、式(A)に示すように、比較例の場合は、4KiB(データサイズ)の増大に伴い、パケットCPAのレイテンシも増大する。
B)第3実施形態の場合
上記比較例に対し、第3実施形態に係るストレージシステム100は、スプリッタ112Sおよびリアセンブラ112Rを備える。そのため、パケットのデータサイズが大きくなった場合には、そのパケットのデータサイズを小さくすること等、必要に応じて、パケットのデータサイズを変更することができる。
例えば、図21に示すように、同様に、データサイズが4KiBのパケット(オリジナルパケット)OPAのレイテンシを考える。ここでは、オリジナルパケットOPAが、スプリッタ112Sにより、各データサイズが1KiBである4つの分割パケットSPA1〜SPA4に分割される場合を一例に挙げて説明する。
この場合、各分割パケットSPA1〜SPA4は、各データサイズがオリジナルパケットのデータサイズに比べて1/4に低減された状態で、メッシュ状のインタフェース150を介して同時並行的に転送され、所定のアドレスの目的地に到着する。そのため、オリジナルパケットOPAのレイテンシは、典型的には、下記の式(B)のように表される。
1KiB(分割パケットのデータサイズ)/スループットT.P.×ステップ数 …式(B)
ここで、上記と同様の条件として、スループットT.P.を1KiB/s、ステップ数を100stepである場合を考える。この場合、第3実施形態に係るパケットSPA1〜SPA4のレイテンシは、上記式(B)に従えば、1/1*100=100s程度、となる。さらに、各パケットSPA1〜SPA4の1ステップあたりのレイテンシは、1/1*1=1s程度、となる。その結果、第3実施形態に係るレイテンシは、100+3=103s程度、となる。
このように、第3実施形態の場合は、1KiB(分割パケットのデータサイズ)の低減に伴い、パケットOPAのレイテンシも低減できることは明らかである。例えば、第3実施形態の場合は、比較例に比べて、1/4程度までレイテンシを低減することができる。この効果は、転送距離が長い場合には、ステップ数が増大するため、より顕著となる。
なお、リアセンブラ112Rにより分割パケットからオリジナルパケットに再現することに伴うレイテンシは、上記式(B)に表されるレイテンシと比べて、十分に小さい。
(第4実施形態(冗長化、拡張化、実装例等に関する一例))
次に、図22乃至図43を用いて、第4実施形態に係るストレージシステム100ついて説明する。第4実施形態は、上記ストレージシステム100の冗長化、拡張化、実装例等に関する。ここで、第4実施形態に係るストレージシステム100は、例えば、システム動作の停止が困難なクラウドシステム等の基幹的な情報処理システムで利用されるストレージシステム等である。
以下の説明において、上記第1実施形態と重複する部分の詳細な説明を省略する。また、以下の説明において、記憶部101に配置されるルーティング回路111の図示を省略する。
[記憶部の冗長化]
まず、図22を用い、記憶部101の冗長化の一例について説明する。
図示するように、各NM140は、カード基板20Bに実装される。4つのカード基板20Bが、着脱可能にコネクタを介してバックプレーン220に装着される。各カード基板20Bには、4つのNM140が実装される。Y方向に配列された4つのNM140は、同一のカード基板20Bに実装され、X方向に配列された4つのNM140は、夫々異なるカード基板20Bに実装される。
ここで、記憶部101において、RAID(Redundant Arrays of Inexpensive Disks)を構築することが可能である。例えば、図示する例では、4つのRAIDグループ210が構築されており、各NM140は、4つのRAIDグループ210のうちのいずれかに属する。そして、夫々異なるカード基板20Bに実装されている4つのNM140は、1つのRAIDグループ210が構成される。ここでは、X方向に配列された4つのNM140が同一のRAIDグループ210に属する。例えば、X方向に配列された4つのNM(0,0)、NM(1,0)、NM(2,0)、NM(3,0)は、同一のRAIDグループ210に属する。
適用されるRAIDのレベルは、任意である。例えばRAID5が適用される場合には、RAIDグループ210を構成する複数のNM140のうちの1つが破損したとき、破損したNM140を有するカード基板20Bを交換することで、破損したNM140に記憶されるデータが復旧される。また、RAID6が適用される場合には、RAIDグループ210を構成する複数のNM140のうちの2つのNM140が破損した場合であっても復旧可能である。
[記憶部の拡張化]
次に、図23を用い、記憶部101の拡張化の一例について説明する。I/F部120は、記憶部101を拡張するための接続インタフェースである。
図示する接続関係において、2台のストレージシステム100A,100Bが、I/F部120を介して接続されている。図示するように、2台のストレージシステム100A,100Bのうちの一方のストレージシステム100Aに備えられる4つのNM140と、他方のストレージシステム100Bに備えられる4つのNM14とが、I/F部120を介して一対一で接続される。
2台のストレージシステム100A,100B間では、I/F部120により接続されたインタフェース150を介してパケットが転送可能である。これにより、4行4列のNM140群により構成される2つの記憶部101A,101Bが論理的に結合され、4行8列のNM140群により構成される1つの記憶部101として使用可能となる。
なお、記憶部101を構成する複数のNM140のうちの何れをI/F部120に接続するか、および、I/F部120に接続するNM140の数は、任意である。また、記憶部101間の接続関係のバリエーションについては後述する。また、ここでは、2つの記憶部101A,101Bにおいて、直接的にNM140群が互いに接続されている。しかし、より具体的には、ルーティング回路111を介して、2つの記憶部101A,101Bにおいて、NM140群が互いに接続される。
[3.実装例]
次に、上記各構成を実装して構成した実装例について説明する。
[3−1.全体]
まず、図24を用い、実装例の全体について説明する。図24は、ストレージシステム100が収容される筐体(エンクロージャ)200を示す図である。ストレージシステム100は、サーバラック201にマウント可能なエンクロージャ200に収容される。
エンクロージャ200の寸法は、サーバラック201が準拠する規格によって規定される。エンクロージャ200の寸法のうちの高さは、‘U(ユニット)’によって表現される。例えば、第4実施形態に係るエンクロージャ200は、積層方向(layer stack)において、‘2U’の高さを有する。
[3−1−1.エンクロージャ(外観)]
次に、図25を用い、ストレージシステム100を収容するエンクロージャ200の外観について説明する。
図示するように、エンクロージャ200は、外装部材211〜213、ノードモジュールカード(NMC)、コネクションユニットカード(CUC)、インタフェースカード(IFC)、マネジメントモジュールカード(MMC)、コンソールカード(COC)、電源装置PSU、補助電源装置BBU、ファン203を備える。
外装部材211,212は、積層方向において、エンクロージャ200の上記各構成部材上を覆うように配置され、所定のねじ止め等により固定される。外装部材213は、エンクロージャ200の前面側(Front side)において、上記各構成部材の前面を覆うように配置され、所定のねじ止め等により固定される。
ノードモジュールカードNMCは、上記NM140、NC140C、ルーティング回路111、PMU112、およびCUインタフェース(PCIe I/F)113が所定のカード基板(回路基板)上に実装された、カード状のモジュールである。各NMCは、エンクロージャ200中のバックプレーン220における所定のコネクタに其々装着され、略鉛直方向に起立した姿勢で並べて支持される。複数のNMCが、コネクタを介して電気的に互いに接続されることで、記憶部101を構成する。
コネクションユニットカードCUCは、上記コネクションユニットCUが所定のカード基板上に実装された、カード状のモジュールである。各CUCは、背面側(Rear side)から略水平方向にエンクロージャ200に収容されてコネクタに装着され、並べて配置される。複数のCUCは、コネクタを介して電気的に互いに接続されてもよい。
インタフェースカードIFCは、上記I/F部120が所定のカード基板上に実装された、カード状のモジュールである。各IFCは、背面側から略水平方向にエンクロージャ200に収容されてコネクタに装着され、並べて配置される。複数のIFCは、コネクタを介して電気的に互いに接続されてもよい。
マネジメントモジュールカードMMCは、上記マネジメントモジュール130(MM)が所定のカード基板上に実装された、カード状のモジュールである。各MMCは、背面側から略水平方向にエンクロージャ200に収容されてコネクタに装着され、並べて配置される。複数のMMCは、コネクタを介して電気的に互いに接続されてもよい。
コンソールカードCOCは、ディスプレイ等の表示装置やキーボード等の入出力装置で構成され、上記各構成部材の入出力等を行うためのものである。COCは、前面側において、エンクロージャ200の表面上に配置される。
電源装置PSUは、上記説明したように、電源コネクタ204を介して外部電源VCから与えられる外部電源電圧を、所定の直流電圧に変換し、変換後の電源電圧VCOを各構成部材に供給する。ここでは、2つの電源装置PSUが、背面側からエンクロージャ200に収容される。また、各電源装置PSUは、所定のファン203Pを備える。このファン203Pを動作させることで送風を行い、上記変換等による発生した熱を放熱させることができる。
補助電源装置BBUは、エンクロージャ200の内の略中央部分に並べて配置される。補助記憶装置BBUは、ここでは、3つを配置する場合を一例に挙げる。補助記憶装置BBUは、上記説明したように、電源装置PSUから電源電圧VCOを受けることで、電気を自身に蓄電する。そして、補助電源装置BBUは、電源装置PSUが外部電源VCから電気的に遮断された場合に、所定の補助電源電圧を上記各構成部材に供給する補助電源として働く。
ファン203は、エンクロージャ200の前面側の端部において、一列ごとに2個ずつの合計8個配置される。各ファン203を動作させることで、列状に配置されたNMC、CUC、IFC、およびMMCに送風を行い、上記各構成部材に発生した熱を放熱させることができる。
[3−1−2.エンクロージャ(Front side)]
次に、図26を用い、エンクロージャ200の前面側の外観について説明する。
図示するように、エンクロージャ200の前面側には、その中央にCOCが配置される。COCには、電源ボタン、各種LED、および各種コネクタが設けられる。COCの左右には、空気を吸気または排気する上記ファン203が夫々2つずつ設けられる。
[3−1−3.エンクロージャ(Rear side)]
次に、図27を用い、エンクロージャ200の背面側の外観について説明する。エンクロージャ200の背面側の中央には、2つの電源装置PSUが配置される。電源装置PSUには、電源装置PSUを冷却するためのファン203Pと、電源コネクタ204とが設けられている。
背面側の左右には、CUC、IFC、MMCが配置される。
CUCは、自身が外部と接続するための6対で合計12個のコネクタ205を備える。ここでは、コネクタ205の規格として、イーサネット(登録商標)規格に準拠するコネクタを一例として説明する。しかし、コネクタ205の規格は、ネットワーク接続可能な規格であれば、任意の規格が採用可能である。
IFCは、自身が外部(他のエンクロージャ)と接続するための4対で合計8個のコネクタ206を備える。コネクタ206の規格には、任意の規格が採用可能である。ここでは、NM140間のインタフェース150として上記LVDSが採用され、コネクタ206の規格としてLVDSが採用されるものとする。
MMCは、自身が外部と接続するための1個のコネクタ207を備える。コネクタ207の規格として、任意の規格が採用可能である。
[3−1−4.エンクロージャ(Lear stack side)]
次に、図28および図29を用い、エンクロージャ200の積層側の外観について説明する。
まず、図28に示すように、エンクロージャ200の内部においては、中央部分に、電源用のバックプレーン210が収容される。電源用のバックプレーン210の左右には、2つのバックプレーン300A,300Bが其々収容される。
各バックプレーン300A,300Bには、カード基板に実装されたCU110、I/F部120、MM130、およびNM140が装着される。そのことで、1つのストレージシステム100として機能する。即ち、エンクロージャ200は、2つのストレージシステム100が収容可能である。
なお、エンクロージャ200は、2つのバックプレーン300A,300Bのうちのいずれか一方が収容される状態で動作可能である。また、エンクロージャ200は、2つのバックプレーン300A,300Bが収容された場合、2つのバックプレーン300A,300Bがコネクタ206を介して互いに接続することが可能である。このように接続することで、2つのストレージシステム100の夫々が有する記憶部101を1つの記憶部101に統合して運用することが可能である。
電源用のバックプレーン210には、エンクロージャ200の積層方向(高さ方向)に重ねて配置された2個の電源装置PSUがエンクロージャ200の背面側(Rear)に配置される。また、電源用のバックプレーン210には、エンクロージャ200の前面側(Front)に3個の補助電源装置BBUが並べて配置される。2個の電源装置PSUは、外部から電源コネクタ204を介して供給された外部電源(商用電源)に基づいて内部電源を生成し、生成した内部電源を電源用のバックプレーン210を介して2つのバックプレーン300A,300Bに供給する。3個のバッテリBBUは、停電など商用電源の供給が途絶えたときに内部電源を生成するバックアップ用の電源である。
次に、図29を用い、図28中の一方のバックプレーン300Aについて説明する。
図示するように、CU110、I/F部120、MM130、およびNM140は、夫々カード基板に実装され、CUC、IFC、MMC、およびNMCとしてバックプレーン300Aのスロットに装着される。
例えば、バックプレーン300Aには、背面側において、左から1枚のMMC、2枚のI/FC、および6枚のCUCが装着される。また、バックプレーン300Aには、前面側において、24枚のNMCが2列に配列されて装着されている。24枚のNMCは、紙面左側の12枚のNMCからなるブロック(第1ブロック401)と、紙面右側の12枚のNMCからなるブロック(第2ブロック402)とに分類される。この分類は、装着位置に基づくものである。
[3−1−5.エンクロージャの使用形態の一例]
次に、図30を用い、エンクロージャ200の使用形態の一例について説明する。図30は、エンクロージャ200の使用形態の一例を示す図である。
図示するように、エンクロージャ200は、配線L2,L3により、CUCのコネクタ205と、ネットワークスイッチ(Network SW)3を介して、PCサーバ2に電気的に接続される。
上記使用形態において、エンクロージャ200に収容されるストレージシステム100は、CUCにおいてPCサーバ2からの要求を解釈し、記憶部101にアクセスする。CUCにおいては、サーバアプリケーションが実行される。PCサーバ2は、サーバアプリケーションが受け付け可能な要求を送信することができる。
なお、ここでは、CUC毎にコネクタ205とネットワークスイッチ3とが接続されている。しかし、この使用形態に限られず、任意のCUCとネットワークスイッチ3とを電気的に接続することが可能である。
[4.各カード構成および接続関係]
次に、エンクロージャ200に収容されるストレージシステム100を構成する上記各カード(NMC、IFC、CUC、MMC)およびこれらの接続関係について説明する。
[4−1.NMC]
[4−1−1.構成]
まず、図31〜図33を用い、NMCの構成について説明する。図31は、NMCの構成を示すブロック図である。図32は、NMCの一方の面を示すブロック図である。図33は、NMCの他方の面を示すブロック図である。
図31に示すように、NMCは、第1および第2のFPGA(field-programmable gate array)403,404、NANDメモリ405〜408,411〜414、DRAM409,410,415,416、およびコネクタ417を備える。
図32、図33に示すように、第1のFPGA403、NANDメモリ405,406、DRAM409,410、およびNANDメモリ407,408は、其々、第2のFPGA404、NANDメモリ411,412、DRAM415,416、NANDメモリ414,415に対して位置的に対称に設けられる。
コネクタ417は、該対称の中心から偏心された位置に設けられる。コネクタ417は、バックプレーン300上のスロットに物理的および電気的に接続される接続機構である。NMCは、コネクタ417とバックプレーン300に形成された配線とを介して、他のNMCと電気的に接続され、他のNMCと通信を行うことが可能である。
[第1のFPGA]
図31に示すように、第1のFPGA403は、4つのNANDメモリ405〜408と、2つのDRAM409,410とに接続される。第1のFPGA403は、1つのルーティング回路111と、5つのPMUと、1つのCUインタフェース113と、4つのNC140Cとを内部に含む。第1のFPGA403に含まれる4つのNC140Cは、DRAM409,410を、上記第2のメモリ142として使用する。
また、第1のFPGA403に含まれる4つのNC140Cは、NANDメモリ405〜408のうちの夫々異なるNANDメモリを、第1のメモリ141として使用する。換言すると、第1のFPGA403、NANDメモリ405〜408、DRAM409、410は、4つのNM140CからなるNM140の一群に相当する。
[第2のFPGA]
第2のFPGA404は、4つのNANDメモリ411〜414と、2つのDRAM415,416とに接続される。第2のFPGA404は、1つのルーティング回路111と、5つのPMUと、1つのCUインタフェース113と、4つのNC140Cを内部に含む。第2のFPGA404に含まれる4つのNC140Cは、DRAM415、416を、上記第2のメモリ142として使用する。
また、第2のFPGA404に含まれる4つのNC140は、NANDメモリ411〜414のうちの夫々異なるNANDメモリを、第1のメモリ141として使用する。換言すると、第2のFPGA404、フラッシュメモリ411〜414、DRAM415,416は、4つのNM140CからなるNM140の一群に相当する。
[インタフェース]
第1のFPGA403は、1本のPCIeインタフェース418(CUインタフェース113)および6本のLVDSインタフェース419により、コネクタ417と電気的に接続される。
第2のFPGA404は、同様に、1本のPCIeインタフェース418(CUインタフェース113)および6本のLVDSインタフェース419により、コネクタ417と電気的に接続される。
第1のFPGA403と第2のFPGA404とは、2本のLVDSインタフェース420で互いに電気的に接続される。
第1のFPGA403および第2のFGPA404は、I2Cインタフェース421でコネクタ417に電気的に接続される。
[4−1−2.NMC(各NC間の論理的な接続関係)]
次に、図34を用い、NMCにおける各ノードコントローラ(NC)140C間の論理的な接続関係について、より詳細に説明する。
図示するように、各NC140Cは、合計4つのインタフェースを其々備える。各NC140Cは、FPGAの内部の2つのインタフェースで、同一のFPGAに含まれる他の2つのNC140と接続される。
具体的には、第1のFPGA403に含まれる4つのNC140Cのうち、2つのNC140Cは、第2のFPGA404に含まれる4つのNC140のうちの2つのNC140Cと、LVDSインタフェース420で相互に接続される。このようにNC140C間が接続されることにより、NMCが有する8個相当のNM140は、4行2列のNM140の一群を構成する。
各NC140Cが備える残りのインタフェースは、他のNMC(図示せず)上のFPGAに含まれるNC140Cと接続するためのインタフェース(LVDSインタフェース419)である。4行2列の配列の4隅に位置するNC140Cは、2つのLVDSインタフェース419を備え、4隅以外の外縁部に位置するNC140は、1つのLVDSインタフェース419を備える。即ち、NMCは、合計12本のLVDSインタフェース419を備える。
LVDSインタフェース419は、他のNMCとの間の接続に使用される。X方向のうちの正側(「X+」方向)に位置するNC140Cは、「X+」方向に論理的に隣接して装着される他のNMC上のNC140Cと相互に接続可能である。X方向のうちの負側(「X−」方向)に位置するNC140Cは、「X−」方向に論理的に隣接して装着される他のNMC上のNC140Cと相互に接続可能である。Y方向のうちの正側(「Y+」方向)に位置するNC140Cは、「Y+」方向に論理的に隣接して装着される他のNMC上のNC140と相互に接続可能である。Y方向のうちの負側(「Y−」方向)に位置するNC140Cは、「Y−」方向に論理的に隣接して装着される他のNMC上のNC140と相互に接続可能である。
[オッドグループ/イーブングループ]
第4実施形態では、NMCが有する合計12本のLVDSインタフェース419は、オッドグループとイーブングループとの2つのグループに分類して説明する。
以下、オッドグループに分類されるLVDSインタフェース419を、LVDSインタフェース419aと表記する。イーブングループに分類されるLVDSインタフェース419を、LVDSインタフェース419bと表記する。
図34において、実線は、オッドグループに属するLVDSインタフェース419aを示す。点線は、イーブングループに属するLVDSインタフェース419bを示す。図示するように、12本のLVDSインタフェース419は、「X+」方向、「X−」方向、「Y+」方向、および「Y−」方向の夫々において、オッドグループとイーブングループとで同数となるように、分類される。
[4−2.IFC]
[4−2−1.構成]
次に、図35を用い、IFCの構成について説明する。図35は、IFCの構成を示すブロック図である。
図示するように、IFCは、コネクタ509,206、LVDSバッファ501,502、キャパシタ503,504を備える。
コネクタ509は、バックプレーン300上のスロットに物理的および電気的に接続される接続機構である。IFCは、コネクタ509とバックプレーン300に形成された配線とを介して、NMCおよび各カード等に電気的に接続される。
コネクタ206は、上記のように、他のIFCを介して、他のエンクロージャ200に収容されるストレージシステム100と電気的に接続するための接続機構である。コネクタ206は、4つのコネクタ505〜508を含む。なお、コネクタ505とコネクタ506とは、同時に着脱可能な着脱機構を備え、コネクタ507とコネクタ508とは、同時に着脱可能な着脱機構を備える。
コネクタ505は、「X+」方向のLVDSインタフェース419の端子を集めたLVDSケーブルコネクタである。コネクタ506は、「X−」方向のLVDSインタフェース419の端子を集めたLVDSケーブルコネクタである。コネクタ507は、「Y+」方向のLVDSインタフェース419の端子を集めたLVDSケーブルコネクタである。コネクタ508は、「Y−」方向のLVDSインタフェース419の端子を集めたLVDSケーブルコネクタである。
「X+」方向のLVDSインタフェース419および「X−」方向のLVDSインタフェース419は、コネクタ509、LVDSバッファ501、およびキャパシタ503を介して、コネクタ505およびコネクタ506に夫々接続される。
「Y+」方向のLVDSインタフェース419および「Y−」方向のLVDSインタフェース419は、コネクタ509、LVDSバッファ502、およびキャパシタ504を介して、コネクタ507およびコネクタ508に夫々接続される。
なお、前述のように、各バックプレーン300には、2枚のIFCが装着される。各バックプレーン300に装着される2枚のIFCのうちの一方は、オッドグループだけを集めたものであり、他方はイーブングループだけを集めたものである。
[4−2−2.IFCとNMCとの接続関係]
次に、図36を用い、IFCとNMCとの接続関係について説明する。図36は、IFCとNMCとの間の電気的な接続関係を示す図である。ここで、オッドグループにかかるコネクタには、符号の末尾にアルファベット「a」を付し、イーブングループにかかるコネクタには、符号の末尾にアルファベット「b」を付して互いに区別する。
図36に示すように、X方向に物理的に隣接する2枚のNMCが、第1ブロック401および第2ブロック402の夫々において、1本のLVDSインタフェース419aと1本のLVDSインタフェース419bとで相互に接続される。
Y方向に物理的に隣接する2枚のNMCが、第1ブロック401および第2ブロック402の夫々において、2本のLVDSインタフェース419aと2本のLVDSインタフェース419bとで相互に接続される。
第1ブロック401の下段に装着されているNMCは、第2ブロック402の下段に装着されているNMCと、1本のLVDSインタフェース419aと1本のLVDSインタフェース419bとで一対一に接続される。
第1ブロック401の下段において紙面左側からi番目に装着されているNMCは、第2ブロック402の下段において紙面右側からi番目に装着されているNMCと一対一に接続される。
[NMCとIFCとの論理的な接続関係]
上記のように物理的に接続されることにより、論理的には、X方向の定義およびY方向の定義が、第1ブロック401と第2ブロック402とで相違する。つまり、第1ブロック401においては紙面右方向が「X+」方向に該当する。第2ブロック402においては紙面左方向が「X+」方向に該当する。第1ブロック401においては紙面上方向が「Y+」方向に該当する。第2ブロック402においては紙面下方向が「Y+」方向に該当する。
そのため、コネクタ505aには、第1ブロック401の右端に装着されたNMCおよび第2ブロック402の左端に装着されたNMCが有する「X+」方向のLVDSインタフェース419のうち、オッドグループに属するLVDSインタフェース419aが接続される。
コネクタ505bには、第1ブロック401の右端に装着されたNMCおよび第2ブロック402の左端に装着されたNMCが有する「X+」方向のLVDSインタフェース419のうち、イーブングループに属するLVDSインタフェース419bが接続される。
コネクタ506aには、第1ブロック401の左端に装着されたNMCおよび第2ブロック402の右端に装着されたNMCが有する「X−」方向のLVDSインタフェース419のうち、オッドグループに属するLVDSインタフェース419aが接続される。
コネクタ506bには、第1ブロック401の左端に装着されたNMCおよび第2ブロック402の右端に装着されたNMCが有する「X−」方向のLVDSインタフェース419のうち、イーブングループに属するLVDSインタフェース419bが接続される。
コネクタ507aには、第1ブロック401の上段に装着されたNMCが有する「Y+」方向のLVDSインタフェース419のうち、オッドグループに属するLVDSインタフェース419aが接続される。
コネクタ507bには、第1ブロック401の上段に装着されたNMCが有する「Y+」方向のLVDSインタフェース419のうち、イーブングループに属するLVDSインタフェース419bが接続される。
コネクタ508aには、第2ブロック402の上段に装着されたNMCが有する「Y−」方向のLVDSインタフェース419のうち、オッドグループに属するLVDSインタフェース419aが接続される。
コネクタ508bには、第2ブロック402の上段に装着されたNMCが有する「Y−」方向のLVDSインタフェース419のうち、イーブングループに属するLVDSインタフェース419bが接続される。
[4−3.CUC(構成)]
次に、図37を用い、CUCの構成について説明する。図37は、CUCの構成を示すブロック図である。
図示するように、CUCは、コネクタ611、第1、第2のプロセッサ601、602、DRAM603、604、2つのコネクタ205、SDソケット609、610を備える。
コネクタ611は、バックプレーン300上のスロットに物理的および電気的に接続される接続機構である。CUCは、コネクタ611とバックプレーン300に形成された配線とを介して、他のカードであるMMCおよびNMCと通信を行うことができる。
第1および第2のプロセッサ601、602は、夫々プログラムを実行することにより、夫々個別のCU110として機能する。換言すれば、1つのCUCは、2つのCU11に相当する。
第1のプロセッサ601は、DRAM603に接続されており、DRAM603をワークエリアとして使用する。第1のプロセッサ601は、SDソケット609に接続される。SDソケット609には、第1のプロセッサ601によって実行されるプログラムが予め格納されたMicroSDカード612が接続される。
第1のプロセッサ601は、2個のコネクタ205のうちの1つにイーサネット規格に準拠するインタフェース606で接続される。第1のプロセッサ601は、コネクタ205を介して、外部と接続される。また、第1のプロセッサ601は、2本のPCIeインタフェース605でコネクタ611に接続される。また、第1のプロセッサ601は、イーサネット規格に準拠する1本のインタフェース607でコネクタ611に接続される。また、第1のプロセッサ601は、1本のI2Cインタフェース608でコネクタ611に接続される。第1のプロセッサ601は、コネクタ611を介して、上記NMCおよびMMCと接続される。
第2のプロセッサ602は、同様に、DRAM604に接続されており、DRAM604をワークエリアとして使用する。第2のプロセッサ602は、SDソケット610に接続される。SDソケット610は、第2のプロセッサ602によって実行されるプログラムが予め格納されたMicroSDカード613が接続される。
第2のプロセッサ602は、同様に、2個のコネクタ205のうちの1つにイーサネット規格に準拠するインタフェース606で接続される。また、第2のプロセッサ602は、2本のPCIeインタフェース605でコネクタ611に接続される。第2のプロセッサ602は、コネクタ205を介して、外部と接続される。また、第2のプロセッサ602は、イーサネット規格に準拠する1本のインタフェース607でコネクタ611に接続される。また、第2のプロセッサ602は、1本のI2Cインタフェース608でコネクタ611に接続される。第2のプロセッサ602は、コネクタ611を介して、上記NMCおよびMMCと接続される。
[4−4.MMC]
[4−4−1.構成]
次に、図38を用い、MMCの構成について説明する。図38は、MMCの構成を示すブロック図である。
図示するように、MMCは、コネクタ720、BMCチップ701、第3のプロセッサ702、DRAM703、704、スイッチ705、コネクタ207、SDソケット706、707を備える。
コネクタ720は、バックプレーン300上のスロットに物理的および電気的に接続される接続機構である。MMC700は、コネクタ720と、バックプレーン300に形成された配線と、を介して他のカードであるNMCおよびCUCと通信を行う。
[BMCチップ]
BMCチップ701は、上記BMCの機能を実現するチップである。BMCチップ701は、DRAM703に接続されており、DRAM703をワークエリアとして使用する。BMCチップ701は、SDソケット706と接続される。BMCチップ701は、SDソケット706に接続されたMicroSDカード716に、各種監視データを記録することができる。BMCチップ701は、コネクタ207とイーサネット規格に準拠するインタフェース708で接続されており、コネクタ207を介して外部と通信を行うことができる。
[第3のプロセッサ]
第3のプロセッサ702は、プログラムに基づいて記憶部101に対してNM制御処理を実行する。第3のプロセッサ702は、DRAM704に接続されており、DRAM704をワークエリアとして使用することができる。第3のプロセッサ702は、SDソケット707に接続されている。SDソケット707は、第3のプロセッサ702によって実行されるプログラムが予め格納されたMicroSDカード717が接続される。
スイッチ705は、コネクタ720との間で12本のインタフェース710で接続され、第3のプロセッサ702との間で1本のインタフェース711で接続され、BMCチップ701との間で1本のインタフェースで接続される。スイッチ705に接続される各インタフェースは、イーサネット規格に準拠するものである。12本のインタフェース710は、コネクタ720およびバックプレーン300を介して、CUCに実装されている各プロセッサ(第1のプロセッサ601、第2のプロセッサ602)に接続される。スイッチ705は、第1のプロセッサ601、第2のプロセッサ602、および第3のプロセッサ702と、BMCチップ701と、の間の通信を中継する。BMCチップ701は、各プロセッサが生成する情報を、スイッチ705を介して取得することができる。
また、BMCチップ701は、コネクタ720との間でI2Cインタフェース712で接続されている。I2Cインタフェース712は、途中でI2Cインタフェース713に分岐する。分岐したI2Cインタフェース713は、第3のプロセッサ702に接続されている。I2Cインタフェース712のコネクタ720側の端子は、バックプレーン300および各種カードのコネクタを介して第1のプロセッサ601、第2のプロセッサ602、第1のFPGA403、および第2のFPGA404に接続される。BMCチップ701は、I2Cインタフェース712を介して第1のプロセッサ601、第2のプロセッサ602、第1のFPGA403、および第2のFPGA404を監視する。第1のプロセッサ601、第2のプロセッサ602、第1のFPGA403、および第2のFPGA404から送られてくる監視データは、I2Cインタフェース713を介して第3のプロセッサ702からも参照される。第3のプロセッサ702は、監視データを用いてNM制御処理を実行することができる。
第3のプロセッサ702は、PCIeインタフェース714でコネクタ720と接続される。PCIeインタフェース714のコネクタ720側の端子は、バックプレーン300を介して、1つのNMCに接続される。第3のプロセッサ702は、任意のNC140に対するパケットをPCIeインタフェース714に送信したり、任意のNC140からのパケットをPCIeインタフェース714を介して受信したりする。
[4−4−2.MMC、CUC、NMCの接続関係]
次に、図39を用い、MMC、CUC、CNC間の接続関係について説明する。図39は、NMC、CUC、およびMMCの間の接続関係を示す図である。本図に示す接続は、全てPCIeインタフェースによるものである。また、図示する接続関係は、各カード内の配線とバックプレーン300に形成された配線とによって実現される。
前述のように、各CUCは、4本のPCIeインタフェース605を備え、各NMCは、2本のPCIeインタフェース418を備える。各CUCは、4本のPCIeインタフェース605が夫々異なるNMCとの接続に使用されることにより、4つのNMCに接続される。各NMCは、2本のPCIeインタフェース418のうちの1本がCUCとの接続に使用される。ここでは、第1のFPGA403が有するPCIeインタフェース418がCUCとの接続に使用される。
紙面左側の3枚のCUCが有する各第1のプロセッサ601は、第1ブロック401の上段に装着された夫々異なるNMCと、第2ブロック402の上段に装着された夫々異なるNMCと、に接続される。また、紙面左側の3枚のCUCが有する各第2のプロセッサ602は、第1ブロック401の下段に装着された夫々異なるNMCと、第2ブロック402の下段に装着された夫々異なるNMCと、に接続される。
紙面右側の3枚のCUCが有する各第1のプロセッサ601は、第1ブロック401の上段に装着された夫々異なるNMCと、第2ブロック402の上段に装着された夫々異なるNMCと、の両方に接続される。また、紙面右側の3枚のCUCが有する各第2のプロセッサ602は、第1ブロック401の下段に装着された夫々異なるNMCと、第2ブロック402の下段に装着された夫々異なるNMCと、の両方に接続される。
このように、各CUCは、第1ブロック401に属するNMCと第2ブロック402に属するNMCの両方に接続される。これにより、第1ブロック401および第2ブロック402の何れか一方にしかNMCが装着されない場合であっても、各CUCは、装着されているNMCに対してCU11としての機能を発揮することが可能となる。また、第1ブロック401および第2ブロック402の両方にNMCが装着されているか否かにかかわらず、1〜6のうちの任意の数のCUCを装着した状態で運用することが可能となる。
なお、次に説明するように、MMCは、第1ブロック401に属する1つのNMCにのみ接続されるので、エンクロージャ200は、少なくとも第1ブロック401にNMCが接続されている状態で運用される。MMCが第2ブロック402に属する任意のNMCに接続される場合には、エンクロージャ200は、第2ブロック402にのみNMCが装着されている状態での運用が可能である。
MMCは、1本のPCIeインタフェース714を備える。MMCは、PCIeインタフェース714が使用されることにより、1つのNMCに接続される。ここでは、NMCにおいては、第2のFPGA404が有するPCIeインタフェース418がMMCとの接続に使用される。また、MMCは、第1ブロック401の上段の最も左側に装着されたNMCに接続される。MMCは、PCIeインタフェース714を介してパケットを送受信することができる。
[4−4−3.MMCとCUCとの間の接続関係]
次に、図40を用い、MMCとCUCとの間の接続関係について説明する。図40は、CUCとMMCとの間の接続関係を示す図である。
ここでは、I2Cインタフェースによる接続の図示を省略し、イーサネット規格に準拠するインタフェースによる接続関係を示す。図示する接続関係は、各カード内の配線とバックプレーン300に形成された配線とによって実現する。
MMCは、イーサネット規格に準拠する12本のインタフェース710を備える。また、各CUCは、イーサネット規格に準拠する2本のインタフェース607を備える。MMCは、CUC毎に2本のインタフェース710が使用されることにより、6枚のCUCと接続される。
[5.スケールアウトのための接続例]
次に、図41乃至図43を用い、記憶部101をスケールアウトするための接続例を説明する。
ここでは、1つのエンクロージャ200が備える2つのストレージシステム100を用いて、1つの記憶部101を構築するための接続例(第1接続例)を説明する。複数のストレージシステム100を互いに識別するために、各ストレージシステム100の符号の末尾にアルファベットを付すこととする。
図41は、第1接続例において使用されるコネクタ群を示す図である。図42は、第1接続例による具体的な接続関係を示す図である。図43は、第1接続例によって論理的に構築される記憶部101を示す図である。
図41に示すように、第1接続例においては、配線L4により、1つのエンクロージャ200が備える2つのストレージシステム100のうちの一(ストレージシステム100A)が備えるコネクタ206と、他(ストレージシステム100B)が備えるコネクタ206との間で相互に接続される。
具体的には、図42に示すように、ストレージシステム100Aが備えるコネクタ507aと、ストレージシステム100Bが備えるコネクタ508aとが接続される。また、ストレージシステム100Aが備えるコネクタ507bと、ストレージシステム100Bが備えるコネクタ508bとが接続される。これらの接続により、ストレージシステム100Aが備える記憶部101Aの「Y+」方向にストレージシステム100Bが備える記憶部101Bが接続される。
その結果、図43に示すように、各ストレージシステム100A、100Bの記憶部101A,101Bが互いに統合されて、新たな1つの記憶部101が論理的に構成される。当該新たな記憶部101は、X方向に6枚のNMCが配列され、Y方向に8枚のNMCが配列されて構成される。
なお、第1接続例においてはY方向に2つの記憶部101が接続されたが、これに限らない。例えば、2つの記憶部101をX方向に接続することも同様に可能である。
[作用効果]
以上説明したように、第4実施形態に係るストレージシステム100の構成および動作よれば、上記(1)乃至(4)と同様の効果が得られる。さらに、第4実施形態に係るストレージシステム100によれば、少なくとも下記(4)に示す効果が得られる。
(5)大容量化とレイテンシの低減化とを両立化することができる。
この説明においては、ストレージシステムの技術的な背景を説明しつつ、説明する。
A)技術的な背景
近年、企業や政府等が取り扱うデータ量やデータ処理の複雑性は、飛躍的に増大し続けている。このようなビッグデータ処理を行うため、3V(Volume、Variety、Velocity)を兼ね備えた大規模データ処理を効率的に行えるようなデータ処理プラットフォームが求められる傾向がある。
しかしながら、例えばHadoop等に代表されるシステムでは、データの移動、前処理、メタデータ処理等の実際のコンピューティングを開始する前に、データ管理に相当するプロセスが数多く必要なことが多い。また、データを分散させることにより、データの一貫性管理の複雑さが増すため、プロセッサを大量に並べて同時処理するようなプラットフォームを用意しても、高速かつ効率的に所望のデータ処理を行うことは困難である。
さらに、上記困難さの度合いは、データ量や要求される処理速度が増加するにつれて飛躍的に増大する。そのため、例えば汎用品を組み合わせてこのようなシステムを構成しようとすると、データサイズとレイテンシとのトレードオフに悩まされることになる。すなわち、取り扱えるデータサイズを大きくするためには、レイテンシを犠牲にしなければならない。一方で、レイテンシを小さくするためには、取り扱うデータサイズを小さくしなければならない。より具体的には、例えばTB(テラビット)を超えるオーダーのデータサイズを取り扱えて、かつサブミリ秒のレイテンシを実現できるようなプラットフォーム等は、ほとんど存在しない。また、まれに存在しても、現実的には、極めて高額のシステムとなってしまう。
B)第4実施形態
上記技術的な背景を鑑み、第4実施形態に係るストレージシステム100は、少なくとも以下の2つを備えて構成される。
第一に、アクティブなデータをすべてNM140の第1のメモリであるNANDメモリ141(405〜408,411〜414)に格納する点である。NANDメモリ141は、大規模データベースを格納可能なシステムをリーズナブルなコストで提供可能な「安価なビットコスト」と、エンタープライズ用途に耐えられる高信頼性を満たすために必要な「不揮発性」とを兼ね備えている。そのため、第4実施形態に係るストレージシステム100は、例えばDRAMベースのインメモリのストレージシステム等と比べて、大規模で高信頼なデータベースを構築するのに適している。さらに、ビッグデータ処理で求められる「サブミリ秒オーダー」のレイテンシを実現するのに十分なアクセス速度を備えている。これらの特性は、例えばHDDベースのストレージシステム等では、実現が極めて困難なものである。
第二に、第4実施形態に係るメモリシステム100は、上記NANDメモリ141を読み書きするNC140Cが互いにパケットデータを送受信するためのネットワークポートであるルーティング回路111やPMU112を備えており、このネットワークポートを相互に接続することで二次元メッシュ状のネットワークを構成する点である。そのため、このネットワーク全体を一つのアドレス空間でアクセスできる、(単一の)巨大な不揮発メモリとみなすことができる。さらに、上記NC140Cは,CU110と直接的に接続可能なインタフェース(ここでは、PCIe I/F 113)を備える。そのため、この巨大な不揮発メモリ空間を、複数のCU110が備える複数のCPU601によってシェアすることができる。すなわち、第4実施形態に係るメモリシステム100は、多数のCPU601が、単一の巨大なデータベースを介し、大規模並列演算をするのに都合が良い。そのため、上記3Vを兼ね備えるビッグデータ分析のプラットフォームとして適しているといえる。
例えば、図23,図41〜図43に示したように、第4実施形態に係るストレージシステム100では、2台のストレージシステム100A,100Bを、I/F部120を介して電気的に接続させることで、容易に拡張化(スケールアウト)することが可能である。このように、記憶部101を拡張化することで、容易に大容量化することができる。
さらに、例えば、図10に示したように、第4実施形態に係るストレージシステム100では、スケールアウトをした場合であっても、ステップ数を低減することができる。そのため、ステップ数の増大に伴うレイテンシを低減することができる。
以上説明したように、第4実施形態に係るストレージシステム100の構成および動作によれば、大容量化とレイテンシの低減化とを両立することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。