それでは、いつもの様に変なものを。One Stop SystemsといえばIDFの度にPCI Express Switchを使って不思議な製品を出してくるが、今年も見事に楽しいものが出てきた。それがこのSuperSwitch(Photo22)。

Photo22:Gen2対応「すれば」最大80Gb/sで、Infinibandなんかを軽くぶっちぎる帯域が理論上は確保できる事になる。あくまで理論上は、という話であるが。

構造はもう一目超然、ホストにあたる左上のサーバーと、Nodeにあたる7台のクライアントを同社のx4レーン×8のSwitchで繋ぐという構成だが、これを使い相互に高速通信を行えるようにする、という不思議な製品である。実はこのSuperSwitchという製品は3種類あり、

  • Host PCに3枚のPCIe x4カードを挿し、各々をPCIe CableでNode PCに繋げるSuperSwictch 1(Photo23)
  • x4レーン×4のPCIe Switchを搭載したカードをHost PCに装着するSuperSwitch 2(Photo24)。
  • x4レーン×8のPCIe Switchを中核にしたSuperSwitch3(Photo25)

となっている。

Photo23:SuperSwitch1は、Host PC自身にPCI Express Switchの代わりをさせることになるので、ピーク値はともかく実効性能はそれほどではないと思われる。

Photo24:一番バランスが良い(?)SuperSwitch2。流石にHost PCに装着するカードは2スロット分の高さになる。それでもLow Profileを維持しているのは流石だ。

Photo25:本質的にはSuperSwitch2と変わらず、8ポートのスイッチを使うことだけが相違点となる。ただインプリメントには多少の違いがあるらしい。

さて、このSuperSwitchは内部でTCP/IP over PCIExpressの様なことをやっているのか、と思ったらもっと激しく力技であった。例えばHost PCとNode PCが3台の構成を考える(図3)。この構成でシステムが立ち上がると、Host PCと各Node PCはPCI ExpressボードがMapする、同じ構成のMemory空間を共有するようになる。で、例えば今Node PC #1からNode PC #2にメッセージを送りたい場合、Node PC #1はNode PC #2のMemory Addressにそのメッセージを書き込むだけで良い[図中(1)]。この書き込みは、直ちにSuperSwitchを経由して、Node PC #2のMemoryに書き込まれるという仕組みだ[図中(2)]。要するにPCI Expressを使った壮大なUMAアーキテクチャである。

図3

勿論実際にはこれだけではなくInterruptを送る仕組みとかがあるだろうし、根本的に複数のNodeが同時に書き込みを掛けた場合の排他制御どうするんだ? といった疑問はあるのだが、「とりあえず今使える技術で無理やりなんとかしました」感が漂う、非常に面白い仕組みだった。API(Photo22に出てくる、ExpressNet Software)からはPCI Expressは一切見えず、単なるShared Memoryとして扱える(つまりHostとかNodeというのはExpressNetそのものには関係するが、アプリケーションからはHostもNodeもない)というのも、一見便利な様な、良く考えると不便な様な感じだ。

ちなみに「ではもっと大規模なSwitchを使えば台数が増やせるのか?」と聞いたところ、ソフトウェアの制約で8台が限界との事。ただしSuperSwitch2に関しては、Host PC用のI/Fを1台のマシンに4つ接続すれば、最大16台(+Host PC)まで繋がるそうで、一体中で何をやっているのか不思議である。