時代はメモリ重視へ…。で、eX5(MAX5)ってなーに?

なーに?シリーズ第2弾(^_^;)、DELLのFlexMem Bridgeに続いて、今回はIBM eX5について。ソースはlivestreamで公開されたこちらのIBMセミナー動画「「eX5」で実現するスマートなx86インフラ構築セミナー」*1

eX5はIBMがIAサーバ向けに提供する拡張仕様の5世代目という意味の総称なので、それ自体が具体的な技術仕様を意味しているのではありません。eX5として発表された技術の中身としては、メモリ拡張モジュール"MAX5"、フラッシュ型記憶装置"eXFlash"、ノード連結・分離技術"FlexNode"の3つの技術ですが、このエントリーで取り上げるのはMAX5(Memory Access for eX5)のみに絞ります。
まずはMAX5誕生の背景から。

要はCPUの性能向上に対して、メモリの搭載容量の増加速度は比較的なだらかな増加となっているため、その乖離が次第に大きくなってきていますよね、という点。たしかに、CPUは単純なクロック性能という意味ではそれほど向上はしていないかもしれませんが、コア数の増加や、チップセット機能の統合、バス帯域の拡張、メモリコントロールなど様々な面をトータルに考慮するとかなりの性能向上が継続的に進んでいます。それに対してメモリはゆっくりと主流の単体メモリスロットあたりのサイズが1GB - 2GB - 4GB - 8GB ( - 16GB)と次第に増加はしていますが、比較的ゆっくりな向上となっています。また、CPUにメモリコントローラが統合されているために仕様的にサポートされるメモリスロット数には限界があります*2。単純にCPU性能の向上だけでパフォーマンスが向上するシステムならよいのですが、そもそもマルチコア化されたCPUの性能を最大限に引き出すソフトウェアを開発すること自体がなかなか難しいですし、多くのシステムでは計算を行うこと自体よりもデータを処理することが求められているため、どちらかというとCPUの計算速度よりもメモリ容量を拡張した方が単純に処理性能が向上する場合が多いのではないかと思います。特にシステムを仮想化インフラとして利用する場合はCPUに対してメモリ容量が統合率向上のボトルネックになっている場合がかなりあるのではないでしょうか。
で、この課題に対して各社それぞれの対応が行われ始めた、というのが現在の状況。前回紹介したDELLのFlexMem Bridgeは、2CPUシステムであってもXeon 7500を搭載する4ソケットシャーシを利用して、空きスロットにFlexMem Bridgeを搭載することによって4CPU分のメモリスロットを使えるようにするという技術でしたが、IBMのMAX5はより根本的に、メモリコントローラとメモリスロットを拡張してしまおうというモジュールになっています。

IBMのセミナー資料ではどこにもQPIってなに?という部分についての説明がありませんでした(当たり前なのでしょうか?)が、QPIはIntelが開発したCPU向けインターコネクトの規格"QuickPath Interconnect"の略称。他へのリンクもまとめられているWikipediaの解説はこちら。つまり、IBMはQPIというインターコネクトな仕様を外部モジュールに拡張した、ということになります*3

MAX5はラックマウント型X5対応サーバに対してメモリスロットを32スロット追加、ブレードサーバHX5にメモリスロットを24スロット追加する拡張モジュールですが、ポイントの2番目に挙げられているように、想定する主要ターゲットは仮想インフラであることは明確です。
唯一気になる点は、QPIを基板の範囲を超えてコネクタを通じた外部接続モジュールとして接続している点ですが、この点については「IBM固有のテクノロジーによりメモリー拡張ユニット間も高速接続」と書かれている程度で、その信頼性をどのように担保しているのかなどについては特に説明はありませんでした。eX技術としてこれまでノード間結合を実現してきた実績はありますので問題はないとは思うのですが、CPUとメモリの間の超高速データ通信バスとなりますのでその信頼性をユーザにアピールしていく必要はあるのではないかと思います。
…ということで、FlexMem BridgeにしろMAX5にしろ、メモリの拡張性を強化する仕組みなわけで、CPUの進化に追いつくべく様々な取り組みが行われ始めています。30コア以上のCPU、1TB以上RAMを搭載した2Uサーバももはや夢ではないわけで、いやいやとんでもない時代になったものです。仮想化以外にこれだけの性能を活用できるソリューションははたしてあるのでしょうか?

*1:我が家の回線側の問題なのかもしれませんが、あまりスムーズな再生ではありませんでした

*2:1チャネルに接続するメモリカード数を増やすと帯域が低下するというトレードオフ問題もあります

*3:別に外部モジュール接続用として使ってはいけないわけではありませんが、仕様的には基本的にチップセット上で用いることを主に想定していると思います