後藤弘茂のWeekly海外ニュース

ARM/Atom/Bobcatをベースとするスモールコアサーバーとは



●盛り上がるスモールコアサーバーの議論

 ARMは、次世代命令セット「ARMv8」で64-bitをサポートすることで、サーバーとHPC(High Performance Computing)の市場の扉を開いた。今後、ARMサーバーが新しい製品カテゴリとして浮上して来ることは間違いない。ただし、ARMサーバーは、x86などのサーバーと完全に競合するわけではない。当面考えられるのは、一部の限られた用途だ。

 ARMコアをサーバーに使おうとしているベンダーの多くは、ARMコアをx86 CPU並のハイパフォーマンスコアに進化させて使おうと考えているわけではない。むしろ、ARMコアの小さく電力効率が高いという特長を活かした使い方を考えている。それは、“スモールコアサーバー”あるいは“スモールメニイコアサーバー”という分野だ。

 実は、スモールコアサーバーは、現在、注目を浴びているコンセプトで、もしかすると今後のサーバーの波の1つになるかも知れない。なぜなら、スモールコアサーバーが、極めて高い電力効率を発揮できるからだ。電力効率が重視されるようになったため、スモールコアサーバーが盛り上がりつつある。

AMDのDon Newell氏

 実際、ARMがARMv8を発表したARM TechConの翌週開催されたJEDECの「Server Memory Forum」のキーノートプレゼンテーションでも、スモールコアサーバーがテーマとして取り上げられた。しかも、スモールコアサーバーについて語ったのは、x86 CPUの片方の雄であるAMDだ。AMDのサーバーの技術部門を統括するDon Newell氏(VP and CTO, Server Business Unit)は、Server Memory Forumで次のように語った。

 「今、ARMに加えて、AtomやBobcat(ボブキャット)などのスモールコアのx86を使ったスモールコアのサーバーがあちこちで議論されている。学会と業界から、スモールコアは一定のワークロードに対しては非常に有用だとする論文が多数出されている。スモールコアサーバーが、業界にとって、大げさな宣伝(Hype)なのか、希望(Hope)なのか、大きな関心事となっている」。

 AMDはBobcatをローエンドの低消費電力ノートPC向けに投入した。しかし、AMDはスモールコアサーバーへの期待の盛り上がりを受けて、Bobcatのサーバー市場での可能性も探ろうとしているようだ。


●電力効率が最重要となったサーバー市場

 なぜ、サーバー業界はスモールコアサーバーで盛り上がっているのか。

 「スモールコアサーバーへのモチベーションは、パフォーマンス効率と絶対パフォーマンスのトレードオフにある。スモールコアは、絶対パフォーマンスが低くても、パフォーマンス効率に優れる。そのため、電力当たりのパフォーマンス効率を重視するサーバー分野では、低電力プロセッサアーキテクチャでサーバーを作ろうと考え始めている」(Newell氏)。

パフォーマンス効率に優れたスモールコアサーバー

 スモールコアサーバーは、なぜパフォーマンス効率に優れるのか、それは、『ポラックの法則(Pollack's Rule)』があるからだ。ポラックの法則は、Intelが名付けたCPU開発の経験則だが、名前がつく以前からCPU業界では知られていた。同じプロセス技術でCPUのダイサイズ(=トランジスタ数)を2~3倍に増やしても、整数演算パフォーマンスはその平方根(約1.4~1.7倍)程度にしか伸びないという法則だ。

ポラックの法則と電力の関係
PDF版はこちら

 上の図のように、CPUコアのサイズを2倍にしてトランジスタ数を2倍にすると、アクティブ時の電力は単純計算で2倍なる。ところが、シングルスレッドの整数演算パフォーマンスはポラックの法則の予測では平方根分の1.4倍にしか伸びない。そのため、電力当たりのパフォーマンス効率は70%にまで落ちてしまう。つまり、シングルスレッドの整数演算パフォーマンスを伸ばすことは、CPU設計上では非常に電力とトランジスタの効率が悪いことになる。

 図を逆にして2倍のコアを基準にすると、スモールコアの理論上の利点がよくわかる。下の図がそれだ。2分の1のサイズのスモールコアは、トランジスタ数が半分になり、アクティブの電力も半分になる。しかし、シングルスレッドの整数パフォーマンスは70%にしか理論上落ちない。そのため、電力効率は1.4倍になる。

スモールコアの場合のポラックの法則と電力の関係
PDF版はこちら

 そのため、スモールコアはチップ全体の効率が高くなる。下がラージコアとスモールコアのチップ全体の比較だ。ラージコアで4コアの構成と、半分のサイズのスモールコアで8コアの構成が、I/Oも含めて同じ程度のチップサイズになると仮定する。

 その場合、チップ全体でのトランジスタ数と電力は理論上は同程度になる。シングルスレッドの絶対性能はスモールコアは70%に落ちる。しかし、コア数が2倍であるため、チップ全体でのスループットは1.4倍に増える。そのため、マルチスレッドでのパフォーマンス/電力の効率は理論上1.4倍に増えることになる。

チップ全体でみたポラックの法則と電力
PDF版はこちら

●SunのNiagaraのコンセプトがスタート地点

 理論上は電力効率が高いスモールコアサーバーだが、シングルスレッドのパフォーマンスはラージコアより落ちてしまう。そのため、スモールコアサーバーを適用して効果が上がるケースはある程度限定される。AMDのNewell氏は、次のように説明する。

 「スモールコアが有効となる重要な条件は、シングルスレッドパフォーマンスがクリティカルなワークロードではないことだ。具体的には、(キャッシュヒット率が低く)メモリやI/Oへのアクセスが多発するようなワークロードがスモールコアに適している。メモリやI/Oからのデータを待つ時間が長ければ、ラージコアは余計な電力を消費してしまうからだ」。

 こうした分析は、別に新しいものではない。それどころか、すでに2004年にこのコンセプトに従ったスモールコアサーバーCPUが発表されている。現在はOracleに吸収されたSun Microsystemsの「Niagara(ナイアガラ)」だ。8個のスモールコアをワンチップに納めたNiagaraから始まるUltraSparc Tシリーズで、Sunはスモールコアサーバーのコンセプトを発展させた。下がSunがNiagaraを発表した時の、コンセプトを説明したスライドだ。

Niagaraのコンセプト

 Sunはこの時、スレッド並列性(TLP)が非常に高いアプリケーションで、ワークセットが大きくデータ局所性が低くキャッシュミス率が高く、スレッド間のデータ共有も多い場合、従来型のラージコアでは性能が発揮できないと指摘。NiagaraのようなスモールコアサーバーCPUが、そうしたアプリケーションで性能を発揮できるとした。

●メモリアクセスが支配的ならスモールコアサーバーが有利

 ラージコアの場合、コンピュート時間はスモールコアよりも短くなる。ところが、キャッシュミス率が高いと、メモリアクセスに時間を食われ、トータルのタスク実行時間が長くなってしまう。一方、スモールコアは、コンピュート時間そのものはラージコアより長くなる。しかし、メモリアクセスのレイテンシ自体は、ラージコアと変わらない。そのため、トータルで見ると、タスク実行時間にはそれほど大きな差が出ない。つまり、ラージコアとスモールコアのパフォーマンスの差は小さくなる。

スモールコアとレイテンシ
PDF版はこちら

 さらに、スモールコアは同じチップサイズならコア数が多くなるので、より多くのスレッドを並列に実行できる。そのため、スレッド並列性の高いアプリケーションの場合、スレッドを多数並列に実行することで、ワークロード全体の処理時間が短くなる。スモールコアサーバーの方が、ラージコアサーバーより、パフォーマンスで上回ることになる。

 ただし、そうした利点がある場合も、ユーザーのQoS(Quality of Service)を満たすことが前提だとAMDのNewell氏は指摘する。

 「QoSを考慮する必要がある。重要な点は、ユーザーの入力に対するレスポンス時間が演算時間に左右されていないこと。ユーザーリクエストに対する反応が、スモールコアで特に遅くなるようなら、スモールコアには向いていない。逆に、演算以外の要素でユーザーが待たされているような場合にスモールコアが理にかなう」。

 この他、Newell氏はスレッド間の同期オーバーヘッドが急増しないことや、スレッドスケジューリングが容易であることなどが、スモールコアサーバーの適用できるアプリケーションでは重要だと説明した。

QoSを満たすことがスモールコアサーバーが有利になる前提

●マルチスレッディングが次のARMの動き

 ARMやスモールコアx86でのサーバーを考えているベンダーは、こうしたワークロードを想定している。そのため、CPUコアの絶対性能よりも、電力効率が重要となる。そして、ARM自身も、今やこの市場を本気で考えている。サーバーに不可欠な要素のうち、バーチャライゼーションのサポートをどんどん強化しており、64-bitメモリアドレッシングもARMv8で加える。

 こうした動きにあるため、ARMの次の手も読むことができる。サーバー市場で望ましい要素のうち、ARMの持ち駒で欠けている残りの要素は、まず、NUMAメモリ構成が可能なメモリコヒーレンシを取れる低レイテンシのチップ間インターコネクトだ。必須ではないが、あればあった方がいいため、ARMがこの技術も提示してくる可能性がある。

 もう1つの要素は、チップマルチスレッディングだ。スモールコアサーバーのコンセプトは、メモリレイテンシが支配的なアプリケーションをターゲットとしている。そのため、スモールコアにマルチスレッディングを加えると、さらに有効性が増す。メモリアクセスの待ち時間に、コアをアイドルにしてしまうのではなく、他のスレッドのコンピュートをさせれば、チップ全体のスループットが上がるからだ。実際に、SunのUltraSparc Tシリーズは1コア当たり4スレッド以上のマルチスレッディング機能を備えている。

 この場合、目的はメモリレイテンシの隠蔽であるため、制御が複雑なSMT(Simultaneous Multithreading)である必要はない。メモリアクセスでストールする度にスレッドをスイッチ(コンテクストは保持したまま)できればいいだけだ。粒度の大きなマルチスレッディングなので、実装も相対的に容易だ。

スモールコアとマルチスレッディング
PDF版はこちら

 スモールコアサーバーは、現在はモチベーションが高まっているところで、実際の展開がどうなるのかは、まだわからない。しかし、x86コアを持たない半導体ベンダーにとってみれば、サーバー市場へ入るチャンスだ。そのため、特にARMベースのスモールコアサーバーで今後動きが活発化すると思われる。もし、市場が本格的に立ち上がるのなら、IntelとAMDも、自社のコアをその市場に適用させて行くだろう。