それでは、いつもの様に変なものを。One Stop SystemsといえばIDFの度にPCI Express Switchを使って不思議な製品を出してくるが、今年も見事に楽しいものが出てきた。それがこのSuperSwitch(Photo22)。
構造はもう一目超然、ホストにあたる左上のサーバーと、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を維持しているのは流石だ。 |
さて、この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アーキテクチャである。
勿論実際にはこれだけではなく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)まで繋がるそうで、一体中で何をやっているのか不思議である。