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

ARMコアとx86コアをファブリックとレイアウトで互換にするAMDのSkyBridge

AMDの大物アーキテクトが出戻りでSkyBridgeを指揮

 AMDはARMコアを同社の重要な武器としてx86/x64系と並列に開発・製品化する戦略を立てている。同社は5月の「AMD Core Innovation Day」でこうした戦略を明らかにしているが、その時、AMDの開発責任者として登場したのがJim Keller氏(Vice President and Chief Architect of AMD's Microprocessor Cores)だった。Keller氏は、同社の「Ambidextrous(両手きき)」戦略の技術リーダーとなっており、来年(2015年)登場するARM/x86互換の設計フレームワーク「SkyBridge(スカイブリッジ)」を担当している。

x86コアとARMコアが併存するAMDのロードマップ※PDF版はこちら

 Keller氏は2年前にAMDに戻ってきた出戻りで、AMD時代には「K8」のリードアーキテクトだった。「K7」と「HyperTransport」もKeller氏の仕事だ。AMDの花形時代を築いたアーキテクチャを創造した人物だ。当時のAMDは、DECからCPUエンジニアが大量流入していたが、Keller氏もその1人で、DEC時代には「Alpha 21164/21264」の設計に加わっている。

 Keller氏はAMDの後は、Broadcomなどを経て、有名なCPUスタートアップP.A. Semiにアーキテクトとして参加。超低消費電力PowerPC設計で有名になったP.A. Semiが、Appleに買収された後は、Appleで「A4」、「A5」世代のモバイルSoCの設計を担当した。ARMとSoCの経験もApple時代に積んだことになる。

 その彼が、2年前に古巣のAMDに戻ったのは「プロセッサ設計と、複雑なシステムの設計が好きで、AMDが次世代で大きなこと(big swing)をしようとしていたから」だという。「大きなチームを率いて、何か新しいことをやるのは、自分にとって挑戦だ」とKeller氏は語っていた。逆に、AppleはP.A. Semi買収で得た最有力の人材の1人を失ったことになる。

 AMDの新体制でKeller氏は、ARMとx86の両方のCPUコア開発チームを含むチームを率いている。また、Keller氏はCPUコア開発だけでなくSoC設計の全体を見ているという。2つの異なるCPUコアの開発チーム群とSoC開発チームを、1人のリーダーの下に置いた理由は2つあると見られる。1つは、同じレイアウトのSoCの中のCPUコアスペースに、両アーキテクチャのCPUコアをはめ込める設計にすることでSoC設計の労力を大幅に減らすこと。もう1つは、両アーキテクチャのコア開発を連携させることで、CPUコア開発において両方のノウハウを流用することだ。

ファブリックレベルでの互換を取るSkyBridge

 AMDのMark Papermaster氏(Senior Vice President and Chief Technology Officer, AMD)は、AMDが2年前にぶち上げたフレキシブルな企業にする戦略を現実化したのがAmbidextrous戦略だと説明する。そして、Ambidextrousのポイントである、ARM系とx86/x64系の両CPUコアの製品を併存させるためにAMDが作り上げたのが、両コアに共通のSoC/APU設計フレームワークSkyBridgeだ。AMDのカンファレンスでは、SkyBridgeは製品ファミリ名というより設計フレームワークとして言及されている。設計フレームワークと言っているのは、チップ設計の論理設計と物理設計の両レベルで、ARMコアとx86/x64コアを共通に扱うことができるようにSoC/APUを設計するという意味だ。

 AMDのLisa Su(リサ・スー)氏(Sr. VP & GM, Global Business Units, AMD)は、SkyBridgeによって、ARMとx86にまたがる複雑なSoC設計と、各種のIPの再利用が容易になり、セミカスタムの顧客もその利点を利用できると説明する。実装上では、x86とARMのそれぞれのSoCをピン互換にして、同じマザーボードでARMとx86をサポートできるようにできる。ソフトウェア上では、x86とARMのどちらでもHSA(Heterogeneous System Architecture)によるヘテロジニアス(Heterogeneous:異種混合)コンピューティングを利用できるようになる。

 しかし、SkyBridgeの真の意味はチップの外側ではなく、内側にある。Papermaster氏によると、SkyBridgeでは、チップの内部ファブリック(インターコネクト)を、ARMとx86の両コアを接続できるよう拡張にしたという。また、同社のIPを再エンジニアリングして全てのコンポーネントをSkyBridgeで再利用可能にし、サードパーティのIPも取りこむことができるようにしたという。つまり、SkyBridgeのファブリックが、ARMとx86にまたがる設計の複雑性を隠蔽する役割を果たすようだ。

チップ設計の労力を低減するためのファブリック互換

 SkyBridgeのAPUは20nmプロセス世代で、2015年にはARMからIPライセンスを受けた「Cortex-A57」とx86の「Puma+」の両コアを載せた2種類のAPUが登場する。Cortex-A57はARMのIPなので、AMDが設計を自由にはできない。そのため、2015年のSkyBridgeのファブリックでは、CPU側へのインターフェイスは、ARMとx86の異なるバスに対応する設計になると見られる。

 このファブリックレベルでの互換というSkyBridgeの特徴は重要だ。チップ内で各ユニットを接続するインターコネクト群のファブリックは、各社が独自の技術で開発している。ARMにはARMの標準のファブリックがあり、AMDやIntelもそれぞれ独自のファブリックを備える。CPUコアだけでなく、その他のユニットも内部ファブリックに接続されている。そのため、AMDがARMコア製品にARMのファブリックを採用すると、SoC全体で細かな設計変更が大量に発生する。SoC/APUの設計は、x86/x64系とARM系の2系統で異なるものになり、設計労力が大幅に増えてしまう。しかし、ファブリックをx86とARMで互換にすると、CPUコア以外のユニットは共通化できる。そのため、2系統のSoC/APUの設計が相対的に容易になり、設計労力を軽減できる。

 ちなみに、現在のAMDのAPUの内部ファブリックはやや複雑だ。CPUコアとGPUコアがそれぞれMMUを持ち、同じメモリコントローラに接続されており、CPUコアとGPUコアの間にダイレクトなリンクがある。SkyBridgeのファブリックはどうなるのか。

AMDのパフォーマンスAPUの内部アーキテクチャ。ローパワーAPUも基本的なファブリックの構造は同じ※PDF版はこちら

 AMDのKeller氏によると、最初の世代の2015年のSkyBridgeのファブリックは、既存のAMD APUのファブリックと似通っており、同様に働くという。x86 APU向けのファブリックを拡張して、x86とARMの両方をサポートできるようにしたものがSkyBridgeのファブリックとなるようだ。APUファブリックに接続されているI/OシステムやI/O MMUなどのユニット群は、SkyBridgeのファブリックでも発展継承される。

Cortex-A57のブロック図※PDF版はこちら
Puma+のベースとなるJaguarのブロック図※PDF版はこちら

レイアウトレベルでARMとx86の互換を取るSkyBridge

 ファブリックで互換を取るSkyBridgeだが、それだけでなく、ARMとx86のチップ設計上の互換を、さらにローレベルで取る。

 すでにAMDは、28nmプロセスでCortex-A57とPuma+を実装している。SkyBridgeフレームワークのCPUコアは、それらの20nm版となる。しかし、SkyBridge用のCortex-A57とPuma+は、単純にプロセスを移したものではない。物理設計を大きく変更したものになるようだ。それは、Cortex-A57とPuma+で、物理設計上もレイアウトをほぼ互換にするためだ。

 「最初の段階ではそれら(Cortex-A57コアモジュールとPuma+コアモジュール)は全く似ていない。しかし、我々は同じSoCの中に、コア(モジュール)を据える場所を設けて、(Cortex-A57とPuma+のどちらでも)プラスマイナスはあっても同じサイズと形になるようにしようとしている。そのために、我々は同じSoCに載せられるように、どちらのコアも労力をかけて再構成している」とKeller氏は語っていた。

 サイズと形と言っているため、Keller氏が語っているのはコアのレイアウトであることが分かる。Cortex-A57とPuma+の両CPUコアのモジュールを、ほぼ同じ形と面積にして、同じ設計のSoCのCPUコアモジュールスペースにはめ込むことができるようにしようとしているようだ。言い換えれば、ARMとx86の両コアを、ハードマクロレベルである程度互換になるように、CPUモジュールのレイアウト形状を揃えて行くようだ。

 これはかなりの荒技だが、これが可能になると、確かに開発労力を大幅に節約できる。SoCの基本の設計は、ダイレイアウトのレベルまで共通で、CPUコアモジュール回りだけ挿し変えることで、ARMとx86の2種類のSoCを設計できるようになるからだ。物理設計までかなり共通化できるため、設計と検証の手間を大幅に省くことができる。

想定されるSkyBridgeでのSoCの設計。同じSoCのCPUコアスペースにARMとx86の両方のCPUコアモジュールが収まるようにする※PDF版はこちら

ダイエリアが近づいたARMコアとローパワーx86コア

 もちろん、これを同じコア数と同程度のキャッシュ量で可能にするためには、ARMとx86のCPUコアが同程度のサイズの必要がある。実は、x86系の低電力コアは、ARM系のパフォーマンスコアとCPUコアのサイズが近い。例えば、AMDのJaguarはTMSCの28nmで3.1平方mmで、ARMのCortex-A15はNVIDIAの実装でTSMCの28nmで2.7平方mmだ。Puma+はJaguarのマイナーチェンジ版で、Cortex-A57はCortex-A15をベースに64-bit化したコアだ。Cortex-A57はCortex-A15と比べると、64-bit化以外の拡張も加わるため肥大化するが、それでも基本のパイプラインは似ているので極端に大きくなることはないだろう。そう考えると、Puma+とCortex-A57のCPUコア自体のサイズはそれほど大きな差がないと推測される。

22~28nmプロセス世代で低電力x86系コアのサイズはARMのパフォーマンスコアと並んだ※PDF版はこちら

 とは言え、Cortex-A57とPuma+ではコアの形状は全く異なる。Cortex-A57はRTLでシンセサイザブルだから原理的にはレイアウトは自由になるとはいえ、ARMからはRTLライセンスの際に最も効率の良い推奨レイアウトパターンも提供される。Puma+も、効率の高いレイアウトがあるはずだ。そのため、SkyBridgeでは、かなり注意を払いながら両CPUコアのレイアウトを変更し、おそらくクアッドコアのCPUコアモジュールの形状と面積が似たものになるように設計すると推測される。

 現在のSoC設計は複雑で時間と労力を必要とする。AMDにとっては、ARMとx86の2系統の製品ラインを持つことは、かなりの負担となる。Ambidextrous戦略のキモは、チップ開発をいかに省力化し、低コストに開発できるかようにする点にある。AMDが出した答えたSkyBridgeフレームワークだったというわけだ。SkyBridgeはSoC設計と、ARMとx86それぞれのCPUコアの設計の最適化を必要とする。そのため、それらを1人のリーダーの元に束ねる必要があったと推測される。

2世代目のCortex-A57で設計と検証の手法を変える

 Keller氏の下にはARMとx86/x64の両系統のCPUコア自体の開発チームがある。SkyBridgeフレームワークに統合することがそうした組織編成の目的の1つと見られるが、もう1つAMDが説明していたのはCPUコア開発を連携させることだ。

 Keller氏は「2つの異なるチームで2倍の労力をかけるか、労力を何らかの方法で減らすか。後者が正しいアプローチなのは明白」と語っている。その上で、高性能なCPUコア開発の中身は、多くが高性能向け機能や、その検証手法やCADツールなどにあり、そうした要素は命令セットに関係なく共通していると指摘する。そして、CPUコア全体の開発労力の面では、既存の要素をかなり利用できるので、単に2倍の労力になるわけではないとする。

 AMDのARMコアの開発計画を詳しく見て行くと、その意味が見えてくる。AMDはARMコアの開発について、ステップバイステップの慎重な手法を採っている。Keller氏は「我々は今日、多くの人々が(ARM CPU開発で)全く新しいものに挑戦しており、あらゆる可能性を試している事を知っている。しかし、我々はステップバイステップの計画を取る」と語っている。ちなみに、全く新しい手法の挑戦とAMDが揶揄する中には、NVIDIAの「Denver(デンバー)」も含まれていると見られる。

 AMDのステップバイステップは非常に明瞭だ。まず、ARMのIPをそれほど手をかけずに論理合成したCortex-A57コアをサーバーSoCに載せる。次に、ARMのIPをAMDの設計フローに取り込み、設計手法を変えることでチューンしたCortex-A57コアをSkyBridgeに載せる。最後に、x86/x64で培った高速化技術を反映させた独自ARMコアのK12を投入する。ホップ(Cortex-A57)、ステップ(改良版Cortex-A57)、ジャンプ(K12)で、ARMコアを発展させる。

 AMDは今年後半のSeattleにCortex-A57を載せるが、このコアについては、AMDは特に何も特殊化は言及していない。ARMのIPにそれほど手を加えずに論理合成してツールで最適化して載せると見られる。

 しかし、次のSkyBridgeフレームワークに合わせたCortex-A57は違う。20nmに移行させるだけでなく、コアの設計手法を変えることで、より深いチューニングができるようになるという。その結果、より低電力で電力効率の高いコアになるとAMDは説明している。設計手法的には、x86/x64系のパフォーマンスCPUでは多用しているカスタム設計をデータパス部の設計に組み込む可能性が高い。通常、マニュアルによるカスタム設計を採った場合、通常の自動配置よりダイ面積が小さく、電力や性能でも有利となる。その反面、設計にかかる期間は長くなる。

 AMDによると、これまでx86/x64 CPUコア設計用に運用して来たチップの検証工程も、ARM CPUコアにも適用できるように拡張したという。現在のチップ開発では検証ツールが非常に重要で、CPUベンダーは独自の検証工程を持っている。AMDは、その中にARMコアも取り込んだ。Keller氏のスタッフは、同社の検証工程をARMコアに適用することで、ARMコア自体のバグを見つけることができるかもしれないと興奮したという。

フロムスクラッチで設計するK12マイクロアーキテクチャ

 AMDは20nm版Cortex-A57の次に、アーキテクチャルライセンスによる独自のマイクロアーキテクチャのARM CPUコアK12をリリースする。マイクロアーキテクチャを自由に設計できるライセンスであるため、AMDはコアをフロムスクラッチでゼロから開発する。

AMD CPU/APU/GPUコアの変遷※PDF版はこちら

 AMDのKeller氏が率いるチームは、Bulldozer系の高周波数設計と、Jaguar系のスーパースモールコア設計の両方のDNAを受け継いでいると説明している。高周波数化するための設計手法についても、高密度のメタル配線による密度の高い設計手法についても、ノウハウを持っているため、それをK12 ARMコアの設計に活かすことができると言う。その結果、ARMコアの性能レンジをスケーラブルに拡張できるとAMDは見ている。

 そのため、フロムスクラッチと言っても、全てをゼロから始めなければならないわけではないとKeller氏は説明する。多くの要素がすでに確立しているため、進展はわりと早いだろうという。

 加えて、ARMのARMv8命令セットアーキテクチャ(ISA)自体が非常にいいとKeller氏は評価する。オリジナルARM ISAより多くのレジスタがあり、3オペランド命令セットで扱いやすいと言う。32-bitの従来のARM ISAは、RISC(Reduced Instruction Set Computer)のロード/ストアアーキテクチャなのにレジスタ数が少ないという制約があり、効率が悪かった。こうしたAMDの発言からは、K12がARMv8の64-bitアーキテクチャに最適化されたCPUであることが推測される。

 また、Keller氏は、ARMコアの設計では、命令フォーマットが複雑なx86/x64と比べると命令デコードはより少ないトランジスタ数で実現できると考えているという。x86 ISAのコアと比べると、より多くのトランジスタを、性能の向上に回すことができる。それは転じて、より優れた効率のコアにすることにもなると説明した。

 さらに、Keller氏は、ARMプロセッサコアの設計は、AMDの設計陣に多くの新しいアイデアを与えてくれるという。そして、そうしたアイディアの中は、今後のx86/x64系コアの開発にも役立てることができるものがあるという。これが、AMDのいうARMとx86/x64の両コアを並列に開発するという意味であるようだ。

K12は拡張版のARM/X86互換ファブリックに

 AMDは、K12も新しいファブリックに接続する。同社は、SkyBridgeのx86/ARM互換ファブリックの手法を、2015年のAPU群からさらに発展させる。Keller氏は、SkyBridge 2015の次の世代のファブリックは、APUからサーバーへと拡張されると説明する。ファブリック自体をサーバー向けによりスケーラブルにするほか、より多くの機能をファブリックでサポートできるようにするという。「市場のもう1つの端をターゲットとする」(Keller氏)、2015年には市場の下の端の低電力APUだったが、次は上の端のサーバーSoCをカバーする。

AMDの共通ファブリックの進化※PDF版はこちら

 AMDの独自ARMコアであるK12コアは、この第2世代のx86/ARM互換ファブリックをターゲットに開発されると言う。ちなみに、フロムスクラッチで設計するK12コアの場合は、最初からx86とファブリック互換にすることを前提として設計するため、Cortex-A57の場合よりも設計が容易になるとKeller氏は示唆する。また、このことは、K12コアベースのARMサーバーSoCにも、対応するx86ベースのサーバーSoCが開発されることを暗示している。もしそうなら、今後のAMD製品の大半は、ARM系とx86/x64系が双子のようにペアで登場することになりそうだ。

 ちなみに、AMDが最初に投入するARMベースのサーバーCPU「Opteron A1150」(Seattle)には、I/O回りに大きな特徴がある。通常のサーバー向けI/Oのほかに、独自のサーバー向けトーラスネットワークファブリック「Freedom Fabric」をオンチップに統合する。こちらは、チップ内部のファブリックではなく、チップ間を接続するオフチップのファブリックだ。

AMDが買収したSeaMicroのファブリックがSeattleに使われている

 従来のAMDのインターコネクト「HyperTransport」は、サーバーでは、マルチプロセッサ構成で、各プロセッサがメモリを共有したNUMA(Non-Uniform Memory Access)型の接続をするためのものだ。NUMA構成の粒度の大きなコンピュートノードを実現する。それに対して、Freedom Fabricは、独立した単チップのノードを大量に束ねるファブリックとなる。小さなノード同士を接続するアイディアだ。つまり、サーバーのコンピュートノードの粒度について考え方が大きく異なる。

 AMDに限らず、ARMサーバーの思想は、現在のWebワークロードの多くは、効率的なコア群で構成された一定粒度のノードに分散化が可能という点にある。そうしたワークロードはコンピューティング負荷は低く、メモリとネットワーク負荷が高く、しかも粒度が小さいため、小さなCPUコア群の独立(チップ間のメモリ共有のない)したノードで対応できるという考えに基づいている。

 しかし、どの程度のCPU性能とコア数がノードに適切なのかについては、まだ議論がある。AMDがK12を開発するということは、CPU性能は現在ARMが提供しようとしているレンジより高いレベルが必要と判断したことになる。この発想はNVIDIAとも共通している。ただし、現状では、ARMサーバー陣営の全体の流れとしては、CPUコアの性能は高めても、x86/x64の占めているようなマルチソケットサーバーまでカバーするつもりはない。AMDもこのあたりの思想は共通していると推測される。

 だとすると、高性能x86/x64のマルチプロセッササーバーの市場は長期的に残ることになる。AMDのその市場に対する戦略も注目される。

(後藤 弘茂 (Hiroshige Goto)E-mail