後藤弘茂のWeekly海外ニュース
PS4のCPUコアがJaguarとなった背景にあるCPUの設計フロー
(2014/7/16 06:00)
Intel CPUとARM CPUのレイアウトの大きな違い
IntelのPC向けCPUコアと、ARMのモバイル向けCPUコアは、見た目が大きく異なる。ARMのCPUコアはユニットの境界がはっきりしない入り組んだフロアプラン(配置)となっている。それに対して、IntelのPC向けCPUコアは、Atom系であっても、各ユニットの境界が明確に分かれ、そのユニット内部も矩形に細かく仕切られたフロアプランになっている。なぜ、IntelとARMのCPUコアは、それぞれ見かけがこんなに違うのか。
IntelとARMの両社のCPUコアのフロアプランの見かけの違いは、設計フローの違いを示している。ARMのCPUコアは、基本的にCPUコア全体が完全に自動設計変換が可能な完全シンセサイザブル(Fully Synthesizable)設計となっている。論理合成(Logic Synthesis)と配置配線ツールが、CPUコア全体で最適なレイアウトを生成するため、明確な機能ブロックの区分が分かりにくい形状となる。
それに対して、IntelのCPUコアは論理合成部分とカスタム/セミカスタム設計の部分が入り交じった構成になっている。コア全体では論理合成されず、明瞭な構造のカスタムマクロが混じる。ぎりぎりまでパフォーマンスや電力の最適化を追求した結果、こうした設計になっている。下のIBMのスライドを見るとパフォーマンスCPUの設計手法がわかる。
データパス部にカスタム設計を用いるパフォーマンスコア
ARMが提供するような完全シンセサイザブルコアは、論理合成と自動レイアウトによって、設計を実際のチップに落とし込むまでが自動化/半自動化されている。HDL(Hardware Description Language:ハードウェア記述言語)で記述されたCPUコアが、最終的にチップのマスクデータに自動または半自動で変換される。
しかし、IntelやIBMなどのパフォーマンスCPUコアの設計では、論理合成と自動レイアウトを前提とした流れのほかに、自動的な配置配線を行なわずに、カスタムの配線設計を行なう場合もある。複雑なデータパス部などによく使われる手法で、カスタム設計により実装密度を高めて性能を上げる。伝統的なデータパス設計では、セルを仮配置して大まかな位置を決め、その配置でのインターコネクト長を見積もり、タイミングや面積を分析する。その分析を元にセル配置を微調整してPPA(Performance, Power, Area:性能、電力、ダイエリア)の最適化を行なう。
マニュアルのカスタム設計が、通常の自動設計よりどれだけ効率的かは、下のIBMのスライドを見るとよく分かる。カスタム配置の場合の方が自動配置よりもダイ面積が小さく、電力や性能でも有利となる。その反面、設計にかかる期間は格段に長くなる。
カスタム設計が用いられるのは、プロセッサの中のデータパス(またはデータフロー)部と呼ばれる部分だ。カスタム設計が適しているとされるデータパスのファンクションユニットに何が含まれるかは、下のIBMのスライドが示している。CPU内部でデータを直接扱う根幹部分のユニット群がデータパス部となる。
高性能CPUでは、伝統的に、性能と電力、ダイ面積を最適化するために、データパス部では手作業のカスタム設計やセミカスタム設計を採る場合が多い。IntelやIBMのパフォーマンスCPUは、そうしたカスタムマクロと論理合成したマクロのパッチワーク状になっている。
マニュアル度の高いカスタムの設計手法は、ソフトウェアに例えれば、アセンブラコーディングのようなものだ。労力がかかり生産性は悪くなるが性能は上がる。以前は、RTLからの論理合成&自動レイアウトでは、動作速度を上げることは難しく、高クロック化するにはカスタムの手作業でゴリゴリに最適化を図る必要があった。
論理合成&配置配線ツール側での最適化が進む
今も、高性能CPUはカスタム設計を多用するが、その一方で組み込みCPUコアの多くは論理合成と自動配置配線を前提としている。ちなみに、同じPC向けプロセッサでも、GPUは完全な論理合成が主流、CPUはカスタム設計が多いといった違いがあった。そのため、GPUは開発期間が短く、CPUは開発期間が長いという違いがあり、その違いが、アーキテクチャの転換が速いGPUと高クロックなCPUという両プロセッサの性格の違いを形成していた。しかし、モバイルや組み込み系になると、こうした違いは明確ではなくなる。
モバイル向けのアプリケーションプロセッサではCPUコアに高い性能が求められるようになったため、完全シンセサイザブルコアでもPPAの高度な最適化が行なわれるようになっている。フルカスタム設計を導入する場合もあるが、主流はコンパイル中に性能や電力の最適化を行なうことで、性能を引き上げ電力や面積を最適化している。RTLから配置配線までの自動化されたフローの中で、ツールによる最適化を図るという流れだ。タイミングシミュレーションなどを行ない、最適な配置配線へと修正して行く。
つまり、大枠で見ると、プロセッサコアなどの高速ロジックでは、カスタム設計による最適化と、合成の段階での自動的な最適化の2つのPPA最適化アプローチがある。Intelなどは前者でARM陣営は後者のアプローチを主に採る。ただし、ARMコアのRTLからカスタムの設計もできる(アプリケーションプロセッサではそうした例も少なくない)し、Intelコアの内部にも論理合成するシンセサイズドマクロが多数がある。さらに、両手法の中間的な手法も提案されており、きれいに二分されるわけではない。実際、最近の研究の焦点の1つは、データパス部などでカスタム設計による構造に近いものを自動生成することにある。
現在では、ツールを使った最適化によってかなりの程度まで最適化ができる。例えば、ARMの技術カンファレンス「ARM Techcon」では、毎年、3大EDAベンダーや大手半導体ベンダーがそれぞれの最適化技術の説明や、ARMコアでの最適化事例の紹介を行なう。最新の最適化技術によって、どれだけ高クロックを達成できたか、どこまで電力を減らすことができたのかが、毎年示される。1例を挙げると、昨年(2013年)のARM Techconでは、ARMとCadenceで、TSMCのFinFETプロセスに載せるCortex-A57の最適化の概要を説明した。
現在の潮流は、ソフトウェア側のインテリジェンスが上がるに連れて、自動化した設計手法の最適度が上がりつつあるが、まだ、完全にカスタム設計を置き換えるには至っていない状況だという。また、ツールでの最適化にも、ある程度の時間が必要となる。ツール自体が発展途上で、新しいツールや手法が導入されるにしたがって最適化が進むので、時間とともにPPAが向上するようになっている。
PlayStation 4(PS4)のAPUのCPUコアが決まった理由
CPUコアの設計手法は、プロセスの移植性にも大きく影響する。カスタムマクロを含むコアは、異なるファウンダリや異なるプロセス技術に移植するにはかなりの労力が必要となる。それに対して、完全シンセサイザブルなコアはRTLで他のファウンダリやプロセス技術に移植することができる。これは、ファブレス半導体ベンダーが自社のIPを使って、特定の顧客のためのカスタムチップを設計する場合も同じだ。
これが大きく影響した最近の例では、ソニー・コンピュータエンタテインメント(SCE)の「PlayStation 4(PS4)」のAPUがある。PS4 APUは、もともと、GLOBALFOUNDRIESの28nmプロセスで製造する予定だったのが、TSMCの28nmプロセスへと切り替わった。PS4の発売タイミングに間に合わせて製造するためにはTSMCにするしかなかったからだ。
GLOBALFOUNDRIES版のPS4 APUはBulldozer(ブルドーザ)系のパフォーマンスCPUコアのSteamroller(スチームローラ)をクアッドコアで使う予定だった。しかし、SteamrollerはGLOBALFOUNDRIESの28nmプロセスに最適化して設計されており、多くのカスタム/セミカスタムマクロを含んでいる。そのため、SteamrollerをTSMCの28nmプロセスに持って行くことは短期間では難しい。
それに対して、同じAMD CPUコアでもJaguar(ジャギュア)は、“ほぼ”シンセサイザブルで製造ファウンダリを選ばない(移植の労力が少ない)上に、すでにTSMCの28nmプロセスに移植されていた。Jaguarでは、ほとんどの部分は自動配置配線で、一部にカスタムアレイが使われているだけだ(Jaguarの前世代のBobcatコアも7種類のカスタムアレイ/マクロを含んでいたが完全にシンセサイザブルとされていた)。そこで、PS4 APUはファウンダリの変更とともに、CPUコアをSteamrollerからJaguarへと切り替えることになった。
Xbox 360のXCGPUがIBMで生産スタートされた理由
賛否両論があっただろうPS4のCPUコアの変更だが、現在のファウンダリの状況を見ると、ファブ間移植可能なJaguarコアになったことは利点がある。ケガの功名だが、SCEはファウンダリの選択の自由を得て、その時々で最適なファウンダリの最適なプロセスを選ぶことが容易になった。
各ファウンダリのプロセス技術の立ち上げと移行がどうなるか見えにくい現在の状況では、これは大きな利点となる。例えば、FinFET 3Dトランジスタ世代のPS4 APUにおいて、SCEは、GLOBALFOUNDRIESのFinFET(Samsungと共通)を待たずに、ファウンダリの中でFinFETで先行するSamsungとTSMCの2社のFinFETプロセスから選択できる。同じことは、AMDの低消費電力APUについても言える。結果としてAMDでは、低消費電力APUの方がプロセス技術の移行のペースが速くなっている。
ゲーム機でファウンダリに依存する例を挙げると、Xbox 360のXCGPUの設計がある。Xbox 360は、CPU側はIBMが中心となって設計し、IBMとIBMパートナーのファブで製造されて来た。それに対してXbox 360のGPUは旧ATI Technologies(現AMD)が中心となって設計し、TSMCで製造されて来た。CPU側は設計手法はカスタムマクロを多く含むのに対して、GPU側は全体でシンセサイザブルな設計となっていた。
そこで、CPUコアとGPUコアを統合したXCGPUでは、Verilog HDLのGPUデータをVHDLに変換してIBM 45nmプロセスに合わせて合成、VHDLで書かれているカスタムマクロとシンセサイズドマクロの両方を含むCPUコアと統合した。CPUコア側は、ファウンダリへの依存度が高いため、GPU側をVHDLに変換してTSMCから持ってきた。GPUコアもVHDLに落とし込むことで、XCGPU全体の検証を可能にした。
こうして見ると、ゲーム機のCPUコアやプロセスがなぜ選ばれたのかを理解するためにも、IPコアの設計フローを知る必要であることが分かる。特に、SteamrollerとJaguarの設計フローの違いと、ファウンダリのプロセス技術の立ち上げの状況が分からないと、PS4がなぜJaguarになったのかは分かりにくい。設計フローの違いが、現在のCPUコアでは非常に重要となっている。