後藤弘茂のWeekly海外ニュース
ARMコアの多様なライセンスモデルとCPUコアの設計フロー
(2014/7/10 12:39)
IPライセンスの形態と連携するチップの設計フロー
コンピューティング機器の半導体チップはPC型の標準半導体製品のモデルから、より多様な組み込み型のモデルへと流れが変わりつつあり、そのために、半導体チップのあり方も変わりつつある。ゲーム機だけでなく、PCとはパラダイムが異なるモバイルやウェアラブル、IoT(The Internet of Things)が興隆したためだ。
PCでは、ごく限られた種類のASSP(Application Specific Standard Produce:特定用途向け標準製品)が大量に生産され、汎用品として使われる。Intel CPUもNVIDIA GPUも、半導体製品として見るなら、ボリュームが出るASSPに過ぎない。またPCでは、CPUならIntelもAMDも、機能的には大きな差がない。PC的に見るなら差異があるが、組み込み的な視点で見るなら似たようなチップだ。この点が、多種多様なチップが溢れる組み込みの世界とは大きく異なる。
コンピューティング市場は、現在、PCやサーバー中心の世界から、モバイル、ウェアラブル、IoTへと小さなデバイスへと広がりつつある。それらの世界では、半導体チップのあり方はPCとは大きく異なる。CPUコアやGPUコアはIPとしてライセンスされ、チップベンダーがIPコアを統合して多様な市場に適合したチップを設計する。あるいはカスタムチップが設計される。そのため、コアIPのライセンスやカスタマイズが重要な意味を持つようになりつつある。
ARMの設計フローは、コアIPをライセンスしやすい手法となっている。ARMはCPUコアをライセンスするIPベンダーで、そのためにCPUコアをライセンスしやすい形に設計する必要がある。ライセンス形態は、ロジックコアの設計フローと密接に関連している。
設計フローの中で、ソフトウェア的に記述されたデータでライセンスする場合は「ソフトマクロ(Soft Macro)」。配置配線を済ませたハードウェア設計をライセンスする場合は「ハードマクロ(Hard Macro)」。あるいは、もっと上流のCPUの命令セットアーキテクチャレベルでのライセンスもある。ARMは設計フローの中で、異なるIPのライセンスモデルを併存させている。
ハードウェア記述言語で書かれている現在のコア
現在の組み込みCPUコアは論理合成(Logic Synthesis)と自動レイアウトによって、設計を実際のチップに落とし込むまでが自動化/半自動化されているのが一般的だ。CPUコア全体で論理合成が可能な場合は、完全合成可能(Fully Synthesizable)コアと呼ばれる。完全合成可能CPUコアの設計フローでは、HDL(Hardware Description Language:ハードウェア記述言語)で記述されたCPUコアが、最終的にチップのマスクデータに自動または半自動で変換される。
HDLには「Verilog HDL」と「VHDL」の2大言語があり、Verilog HDLは、言ってみればハードウェア業界のC言語的な位置にある。そのほかにもいくつかのマイナー言語や内製言語、ビヘイビアレベルの記述言語がある。Intelも2005年までは「iHDL(Intel's Hardware Description Language)」と呼ばれるIntel独自の内製HDLを使っており、HDLレベルから業界標準とは異なっていた。しかし、Core i7(Nehalem:ネハーレン)から「SystemVerilog」に切り替えた。
HDLによって記述された論理回路設計データは「RTL(Register Transfer Level:レジスタ転送レベル)」データとなる。HDLが言語の種類で、RTLが回路記述の抽象化のレベルで、HDLによってRTLのレベルのコードを書くという意味だ。レジスタとその間の論理機能として、抽象化されて記述されているためRTLと呼ばれる。RTLは論理合成(Logic Synthesis)を行なうことで、実際のハードウェアに対応したゲートレベルの回路設計データに変換される。
ソフトウェアに例えると、HDLが高級プログラミング言語で、RTLコードがソースコード、論理合成がコンパイルとなる。RTLコードは可読性がいいため、読めば回路の構成が分かる点もプログラミング言語のソースコードと似ている。実際に、RTLソースコードと呼ばれることも多い。同様に論理合成もコンパイルと呼ばれることが多い。RTLの論理レベル設計のさらに上流に、ビヘイビアレベルのアーキテクチャ設計があり、そちらも記述言語が開発されている。
自動配置配線とカスタムの配置配線
RTLからは論理合成によって、より下位のレベルの回路設計データ「ネットリスト(Net-List)」が自動生成される。半導体チップのハードウェアに対応したゲートレベル(Gate Level)記述の論理回路図だ。実際のトランジスタには、まだ対応していないが、IPはよりブラックボックスとなる。ソフトウェアに例えると、ネットリストは中間言語のようなものだ。
ネットリストは、さらに物理的な配置配線を自動的に生成するツール群に渡され、トランジスタレベルのデータに変換される。自動レイアウトツールによる配置配線のフィティングの結果、最終的なダイ上でのレイアウトのオブジェクトファイルが生成される。実際には、ここまではワンパスではなく、複数のコンパイルツールによる段階を経る。また、最近では論理合成とネットリストからの配置配線を統合的に行なうフローもある。
レイアウトデータからは、さらにマスクパターンが作成され、Fabで製造ができるようになる。ソフトウェアに例えると、レイアウトやマスクパターンが、バイナリコードに当たる。
ちなみに、CPUコアの設計では、自動的な配置配線を行なわずに、手作業で配線設計を行なう場合もある。カスタム設計によりPPA(Performance, Power, Area:性能、電力、ダイ面積)の最適化を行なう。IntelやAMD、IBMなどが高性能CPUの設計で採っている手法だ。この手法の場合、PPAは上がるが、設計は特定のプロセスに依存するようになり、設計に期間と労力が必要となる。
現在は完全合成可能コアをRTLからコンパイルする段階でも、ツールによってPPAの高度な最適化が行なわれるようになっている。しかし、カスタムの設計手法と自動化した合成の2つは、まだ併存している。
設計フローとIPライセンスの関係
プロセッサコアをライセンスする場合は、RTLからマスクまでの間の設計フローの中で、どこかの段階のデータをライセンシに渡すことになる。どの段階のIPを渡すかによって、同じIPライセンスでも、内容が大きく異なる。また、カスタムマクロやセミカスタムマクロを含むコアでは、ライセンス形態も制約される。
合成可能なIPを他社にライセンスする場合には、設計フローの各段階のデータで渡すことができる。RTLでライセンスする場合は、「ソフトマクロ」または「ソフトコア(Soft Core)」と呼ばれるが、単にRTLとだけ呼ばれる場合も多い。ソフトマクロは、ライセンスを受けたチップ設計企業がカスタマイズを行なうことも原理的には可能だ。ただし、実際にカスタマイズできるかどうかは、ライセンスの条件による。ARMの場合は、RTLでライセンスするCPUコアについては、キャッシュの有無を始めとしてさまざまなカスタマイズ項目を設けており、その枠内なら顧客が自由にカスタマイズできる。
RTLから論理合成したネットリストをライセンスする場合もある。IP企業の中には可読性の高いRTLを渡すのを嫌う企業がある。RTLのライセンスはソースコードを渡すことと同じだと考えれば、嫌う理由も分かる。ネットリストは「ファームコア(Firm Core)」と呼ばれる場合もあり、広義のハードマクロに含む場合もある。
ネットリストからさらに配置配線を済ませたデータで渡す場合は「ハードマクロ」または「ハードウェアIP(Hardware IP)」といった呼び方をする。特定のファウンダリの特定のプロセスに最適化されたIPとなり、性能/電力/エリア(PPA)に最適化されているため、性能や電力効率が高い。その反面、完全にブラックボックスで、カスタマイズはできない。また、RTLライセンスでも推奨するフロアプランニングを示している場合もある。
かつては、IPコアはハードマクロやネットリストが一般的だった。しかし、EDAツールによる論理合成を使った設計が一般的になってからは、ソフトマクロが浸透した。現在の流れは、ソフトマクロが浸透したものの、性能と電力への最適化が重要となったためPPAの効率のいいハードマクロのようなソリューションへと振り戻しが来ているところだ。時代がやや揺り戻しているような雰囲気だが、以前のハードマクロ一辺倒だった時代とはかなり異なっている。
カスタムマクロを多く含むコアの場合は、ライセンスする場合はハードマクロが基本となる。もし、IntelのPC向けCPUコアをライセンスしようとしたら、ハードマクロで提供することになると推測される。その場合、IntelのFabからほかのFabへと移すためには、Intel自身が物理設計を行なわなければならない。ただし、カスタムマクロを含むコアを、RTLでライセンスしたり、FPGA合成可能なRTLにしてライセンスするような特殊なケースもある。Intelは実際、初代Atom(Bonnell:ボンネル)コアなどのRTLを、FPGA合成可能に書き換えている。
多岐に渡るARMのCortex-Aライセンス
ARMの場合は、通常はRTLでIPライセンスしている。しかし、Cortex-Aファミリに関しては、特定のファウンダリの特定のプロセスに合わせたハードマクロも用意している。さらに、RTLに各ファウンダリのプロセス技術の最適化データの「POP(Process Optimization Pack)」も提供している。
つまり、ARMのCortex-AファミリのIPライセンスには、大きく分けて(1)RTL、(2)RTL+POP、(3)ハードマクロの3種類がある。ちなみに、ARMも下位のCortex-Mの場合は、POPやハードマクロはほぼ提供していない。
ハードマクロが最もPPA最適化されており性能が高いが、プロセスに依存する。RTLベースの場合はプロセスへの依存がないが、全く最適化しない状態では性能が低い。ただし、RTLからチップベンダーが物理設計の最適化を行なうことでハードマクロのPPAに近付けることができる。ARMの場合、RTLライセンスでPOPを使った場合があり、PPA最適化はRTLから合成しただけの場合とハードマクロの中間になる。
選択としては、カスタマイズが必要なく、ともかく短い設計期間で高いPPAのコアが欲しいという顧客はハードマクロを、自由度が欲しいが、高効率のPPA最適化も手間をかけずに行ないたい場合はPOPソリューションを、PPA最適化を含めて自前(またはEDAベンダーの協力)で実現する場合はRTLを、ということになる。
ARMの場合は、さらに命令セットアーキテクチャのライセンスであるアーキテクチャルライセンスもCortex-Aについては行なっている。アーキテクチャルライセンスでは、ARMのライセンシーは命令セットさえ互換なら、自由に自分のニーズに合ったCPUコアを設計することができる。Qualcommの「Snapdragon」や、NVIDIAの「Denver」などは、アーキテクチャルライセンスでゼロからCPUコアを開発している。ARMのIPでは実現できない機能や性能を実現したい場合はアーキテクチャルライセンスとなる。
ただし、ARMの場合はアーキテクチャルライセンスとIPライセンスを組み合わせることはできない。アーキテクチャルライセンスを持っているベンダーが、ARMのコアのRTLのライセンスを受けて、RTLを自由に書き換えることは通常は許可されていないとARMのJames Bruce氏(Lead Mobile Strategist, ARM)は説明する。改変によって発生する潜在的な問題が発生するのを防ぐためでもあり、2系統のライセンスは区別されており、RTLソフトコアはARMの許可する範囲でしかカスタマイズできないという。例えば、アーキテクチャルライセンスを持つQualcommは、自社コアを開発する一方で、Cortex-A5やCortex-A7はそのまま使っている。
ARMの各ライセンス形態は多岐に渡っており、顧客は自社のニーズに合わせたライセンスを選ぶことが可能だ。この柔軟性がARMの強味となっている。