スタートアップのSeaMicroがHot Chips 23で、同社のAtomベースのSM10000-64サーバについて発表した。プロセサ自体はネットブックやタブレットに使われているIntel製のAtomで特別な点はなく、同社のサーバアーキテクチャとそれを実現するために独自開発したLSIがポイントである。

SeaMicroのサーバについて発表するAshutoush Dhodapkar氏

データセンターと言っても用途により色々なものがあるが、同社の分析では、クラウド時代のデータセンターのキラーアプリは、小さくて単純なワークロードが時にはバースト的に大量に押し寄せる。そして、それらのワークロードは大きなデータベースを参照し、高い同時処理性を必要とし、多くのコミュニケーションを必要とするものであるという。

と、いうことから、同社は、このようなワークロードを走らせるのに最も適したサーバの構造を考えた。

SeaMicroのサーバアーキテクチャの考え方(すべての図は、SeaMicroのHot Chips 23での発表から転載)

その結果、値段が安く、エネルギー効率の高い携帯電話用のプロセサを大量に使用して、それらのプロセサを低レーテンシで高バンド幅のネットワークで結合したCluster in a boxが最適であるという結論に達した。そして、開発されたのが、次の図に示すような構造のサーバである。

SeaMicroのFabricと呼ぶ3次元トーラスネットワークでAtomを結合

SeaMicroのサーバは8×8×8の512個のノードを3次元トーラスで接続している。3次元トーラスはCrayのXK6、IBMのBlue Gene、そして我が国の「京」スパコンも採用している多数の計算ノードを結合するのに適した方式であるが、それをスパコンではなくAtomベースの小規模なノードに適用したところが新しい。

この3次元トーラスにより、512ノード全体では1.28Tbit/sという高いバンド幅と、最も離れたノード間でも5μsという短いレーテンシで通信が可能となった。また、3次元トーラスでは迂回経路が多く存在するので、故障で1つのパスが切れてもそこを迂回することにより運用を続けられるという故障耐性があるというメリットがある。

SeaMicroは、このような3次元トーラス接続を行うLSIを開発した。このFabric LSIは、X+/-、Y+/-、Z+/-の6方向の隣接ノードへの2.5Gb/sのリンクとCPUに接続するPCI Express(PCIe)ポートを持ち、これらの7つのリンクの間のデータ転送を行うクロスバスイッチを持っている。

SeaMicroのファブリックLSI

そして、SeaMicroのサーバアーキテクチャの特徴は、同社のFabric LSIに仮想I/O機能を組み込んでおり、Atom CPUから見るとPCIeと低速のLPCが繋がっているように見え、さらにその先にEthernetアダプタと4台のSATAディスク、そしてLPC側にはBIOSとUARTが繋がっているように見えるようになっている点である。

SeaMicroのI/O仮想化

実際にはEthernetアダプタやSATAディスクはそれぞれのCPUに対応して存在するのではなく、EthernetはI/Oを集約する8ポートのGbE(あるいは2ポートの10GbE)を持つE-Cardを共有し、SATAディスクは8台のHDD/SDDを制御するS-CardをZ方向で同じ平面に載る64ノードで共有している。

仮想I/Oは同じZ平面のノードでE-Card、S-Cardを共有する

このI/O Cardは次の図のように、制御プロセサとFPGAで実現されている。FPGAであれば、顧客からのフィードバックに応じて改良や新たな機能の追加がすぐに出来るというメリットがある。一般的にはFPGAはASICに比べて消費電力が大きいとかコストが高いという問題があるが、SeaMicroの場合はノードの数が多いので、ノードあたりで見ると電力やコストはあまり負担にはならない。

このような思想とアーキテクチャで作られたのが、SeaMicronのSM10000-64サーバである。1枚のCompute Cardに4チップのデュアルコアAtomプロセサ4個(最新の製品では6個)とCPUチップあたり4GBのDRAM、そして4個のFabric LSIを搭載している。このカード64枚で512ノードを構成できる。そして中央に最大8枚のE-CardとS-Cardが搭載できる構造となっている。また、S-Card側には合計64台のSATAディスクの搭載スペースが設けられ、筐体は10Uである。

なお、この構成ではFabric ASICが4×64枚で256個使われている。そして各ASICには2CPUチップが接続できるので、合計512Atomチップで1024コアまでサポートできるのであるが、512コアの製品では半分、768コアの製品では1/4のFabric ASICのCPU側のポートが余っていることになる。

SeaMicroのSM10000-64サーバ

Webサーバで良く使われるApacheを走らせて、このSM10000-64サーバと低電力Xeonデュアルソケットの1Uサーバの性能を比較した結果が次の図である。

SeaMicroのSM10000-64と通常のXeonデュアルソケットサーバの性能比較

SM10000-64は1.66GHzクロックのAtomコアを合計512個使い、毎秒100万回のアクセスを捌くことができている。一方、2.13GHzクロックのクワッドコアのデュアルソケットの1Uサーバは45台を使って100万アクセスを捌けるようになっている。単純にコアだけでいうとXeonは4×2×45=360個であるが、クロックが約28%高い。また、AtomはIn Order実行なのにXeonはOut-of-Order実行でクロック比よりも高いコア性能を持っているので、まあ、妥当な結果である。

しかし、このシステムはSM10000-64を使えば消費電力は2,490Wで、体積も10Uで済むのに対して、1UのXeonサーバ45台は、消費電力10,090W、体積は45Uであり、SM10000-64の方が消費電力、体積ともに1/4以下ということになる。

どのような用途でも通常の1UサーバよりSeaMicroのサーバの方が良いということはないが、SeaMicroがクラウド時代のキラーアプリと考える用途に最適なサーバを作ったことの効果が実証されたということであろう。