3月3日、アクテルジャパン株式会社は同社の「Fusion Mixed-Signal FPGA」にARMの「Cortex-M3 MCU」を統合した「SmartFusion」を発表した。この発表に先立ち、都内で米Actel本社からSenior Vice President, Marketing and EngineeringのFares Mubarak氏が来日しての事前説明会が行なわれた。この内容をご紹介したい。
●FPGAとは何かFPGA業界になじみのない読者のために、簡単に業界の説明をしておきたい。FPGA(Field Programmable Gate Array)とは、直訳すれば「現場で書き換え可能な論理ゲートアレイ」というあたりか。ASIC、つまり、さまざまな専用チップ(広義にはビデオカードのGPUとかチップセットなど、いわゆる特定目的用のチップは全部このASICに含まれる)のように、あらかじめ設計を固めてファウンダリで製造する必要はなく、後からいくらでも設計を変更して作り直す事が可能である。この点だけを見るとFPGAはCPUに近い特徴を持つ。しかし、CPUはハードウェアそのものは固定であり、その上で動くソフトウェアが変更できるのに対し、FPGAは「ハードウェア」そのものを変更する(逆に言えば、原則としてFPGA上でソフトは動かない)点がちょっと異なる。
ではFPGAはどんなところに使われるか、というと、従来一番多かったのは「目的に合わせたカスタマイズ」である。例えばある種の機器を、ASICを使って設計したとする。ところが量産に入ったところ、設計時に想定していたメモリが品薄とか生産中止になってしまい、代替品を使うには少しパラメータをいじらねばならなくなってしまったなんて事が往々にありえる。こうしたケース、FPGAを使わないと、最悪ASICの作り直しになるのだが、ここでASICとメモリの間にFPGAを挟み、ここでパラメータのすりあわせをさせる、なんて事が可能である。
もっとも最近はもっと進んで、当初からFPGAだけで製品を作ってしまうことも多くなった。ASICをイチから設計製造するにはかなりの初期コストがかかるため、かなりの数の量産を前提にしないとそもそもペイしない。だからといって汎用CPUと汎用モジュールで実装したら処理が間に合わなくなるし、サイズ的にも大きくなる。専用ICを安い開発費で作ろうとした場合、FPGAは極めて魅力的な解になりつつある。
もちろんFPGAにもデメリットはある。まず部品コストが高い。大雑把に言って、同じプロセスとダイサイズで比較すると、ASICに比べて回路規模が1桁少なくなる。ASICの場合は専用設計だから、配線レイアウトを最適化したり、無駄なロジックを省いたりすることができるが、FPGAでは汎用性を重視するため、特に配線の無駄が非常に多くならざるをえない。また、構造上それほど動作周波数は上げられず、その一方で消費電力は決して少ないとは言えない。ASICはクリティカルパスを一番短くするようなレイアウトをとることができるし、最近は必要ならクリティカルパスには高速トランジスタ、その他の部分は省電力トランジスタを使うなどの技を使う事で動作周波数を引き上げやすいが、FPGAは汎用だから全体が均一のトランジスタで構成されており、またレイアウトの再配置にも限界がある。まぁ、そんなわけでFPGAはASICと汎用CPUの丁度中間的な位置にあり、それなりのメリットとデメリットを内包しているわけだ。
さてそんなFPGAであるが、このマーケットもさまざまなベンダーが製品を出しているが、トップベンダーはXILINXとALTERAで、この2社でFPGAマーケットの8割以上のシェアを占めている。2社に共通しているのは、高速/大型のFPGAを得意としていることで、XILINXならばVIRTEX、ALTERAならばStratixというハイエンド製品をリリースしている。無理にPCマーケットに当てはめれば、VIRTEXはNehalemベースのCore i7、StratixはPhenom II X4とか、(もうすぐ出るという噂の)Phenom II X6あたりに相当する製品だ。ただしこうした製品に加えて両社ともにメインストリーム~ローエンド向け製品の拡充も図っており、XILINXはSPARTAN、ALTERAはCyclone/Arriaといった製品をリリースしている。この2社の製品に共通する特徴は
・デジタル回路のみ:アナログ回路は提供されない(高速の通信PHYを除く)
・SRAMベースの製品のみ:電源投入/リセット直後には、FPGAの外部に設けられた初期化回路を使って、内部に回路をロードする必要がある
といった制限がある。
さて、話をActelに移そう。Actelは下の図で言えば「その他」に分類されるベンダーであり、実際シェアそのものはそれほど大きくない。むしろ同社は、Flash FPGAと呼ばれる独自の特徴を生かして、省電力あるいは小型といったマーケットにフォーカスした製品をリリースしている。そもそもFPGAの実体とは何かというと、ベースとなるのはSRAMである。
このSRAMを使って簡単なLUT(Look Up Table)を構成し、複数の入力に対して出力がどうなるかをLUTに記載しておき、これを見ながら入力信号に合わせて出力信号を制御するのがFPGAの中の「ゲート」である。このゲートにSRAMを使うために高速動作が可能だが、その一方で電源を切れば内容が消えてしまう(これが外部に初期化回路が必要な理由である)し、微細化したプロセスにおいてはSRAMの(リーク電流に起因する)消費電力が馬鹿にならない。そこでSRAMの代わりにFlash Memoryを使うのがFlash FPGAである。消費電力はずっと小さいし、電源を落としても内容は変わらない。また1個のLUTを構成するために必要なトランジスタも、SRAMの場合よりずっと少なくてすむから小型化が可能である。ただしSRAMに比べて読み出し速度が遅いので、スピードは上げにくい。そこでActelは、回路規模や性能ではなく、省サイズ/省電力が必要な用途向けに特化した製品をラインナップする形でXILINX/ALTERAとの差別化を図っている。
これはXilinxのInvestor Factsheetの2010/3Q分より抜粋させていただいた。こうした数字は他のソースからも出ており、それぞれ多少数字のばらつきはあるものの、おおむねXILINX/ALTERAが2強、という構図は変わらない |
●SmartFusionの利点
ということで、簡単に基礎知識をご紹介したところで今回のSmartFusionである。単純に言えばSmartFusionとは「ProASIC 3のFPGAファブリック+Cortex-3 MCU+“Fusion” Programmable Analog」という複合商品である。これでわかる人にはわかるのだろうが、ちょっとそっけなさ過ぎるのでもう少し解説をしておく。
SmartFusionのブロック図。青がMCU、赤紫がFPGA、黄色がProgrammable Analogの各ブロックである |
ProASIC 3とは、先のFlash FPGAの技術を使った、Actelの主力製品である。上で述べたとおり、XILINX/ALTERAとはマーケットが異なっているので直接比較は難しいが、強いて言えばSPARTANとかCycloneと競合する規模の製品と考えれば良いだろう。SmartFusionの場合、モデルに合わせて6万~50万ゲートのFPGAファブリックが搭載される。50万、というのはそれほど大きいとは言えない(少なくともシステム全体をFPGAで構成するようなケースでは、しばしば足りないこともあるだろう)が、SmartFusionの場合は恐らくこれで十分と思われる。
なぜ十分か、という理由が2番目にあたる、Cortex-M3 MCUの搭載である。上にも述べたとおり、FPGAはあくまでもハードウェアを自由に構成できるだけで、ソフトウェアほどの柔軟性は無い。なので、柔軟性が求められる用途においては、しばしばMCU+FPGAという組み合わせが用いられてきた。ただしこれは当然ながらFPGAとは別にMCUを搭載することになり、コスト増に繋がる。これの解決策としてこれまで用いられてきたのが、(1) Soft Core CPU、(2) Hard Core CPU、である。
(1)は要するにFPGAを使ってCPUを作ってしまうという方法である。この分野で有名なのは、XILINXのMicroBlazeとかALTERAのNios IIで、それぞれ自社のFPGA上で動作する。汎用のものとしてARMがCortex-M1と呼ばれるコアを提供するほか、数社がいろいろなFPGA上で動作するコアを提供しているし、簡単なMCUコアの中には無償で入手できるものもある。ところがこれらは、貴重なFPGAのゲートを食いつぶす事になるので、ユーザーが使える領域が当然減るし、FPGA上での動作だから性能は数十MHzとか、頑張っても100MHz程度の動作性能でしかない。また使えるメモリ量に限りがある(外部のメモリを使うのは無駄が多いので、必然的にFPGA上に用意されるSRAMセルを使うことになるからだ)といった欠点もある。
一方、(2)は文字通り、FPGAと同じダイに汎用CPUを搭載してしまうことだ。XILINXは従来PowerPC系コアを搭載した製品をラインナップしてきたが、今度Cortexシリーズを搭載することをすでに明らかにしている。この方式ではFPGAのセルは無駄にならないし、性能も確保しやすい。問題はダイサイズが大きくなるため、必然的に高価格にならざるをえないことだ。
で、Actelは従来Soft Core CPUとしてCore MP7(ARM7TDMI-S準拠の32bit MCU)やCortex-M1、あるいはCore8051(8051互換8bitMCU)、さらにはLEON3(SPARC互換のCPUコア)などを提供してきていたが、ここに来て初めてHard Core CPUとしてCortex-M3を統合することにした。
このCortex-M3の選択についてMubarak氏は「そもそもActelがARMから(CPUコアの)ライセンスを受けた2006年の時点では、(Cortex-A5など)最新のコアはまだ存在していなかったから、他に選択が無かったというのが事実だ」としつつも、Cortex-M3がSmartFusionの製品ターゲットに最適なCPUコアであると強調した。実のところCortex-M3は昨今の16bit/32bit MCUマーケットをものすごい勢いで席巻しつつあり、そしてSmartFusionが同じマーケットを狙っている以上、Cortex-M3の選択は戦略的に正しいものだったとも考えられる。
最後がProgrammable Analogである。先にもちょっと書いたが、現在のFPGAはあくまでデジタル回路が自由に構成できるだけで、アナログ回路は別途外付けで用意する必要がある。例外は高速入出力で、例えばPCI ExpressとかXAUI(10GbpsのEthernet用I/F)、あるいはその他の高速ネットワークやバスなどに接続するニーズや、外部にDDR/DDR2/DDR3 SDRAMを接続したいといったニーズは、特にハイエンドFPGAでは非常に強い。さすがにこれらを接続するためのI/Fまで別に用意するのは大変なので、これのみは統合されているのが普通だが、逆に言えばアナログらしいアナログはここだけで、後は汎用入出力のみである。
これに対してActelは、“Mixed Signal FPGA”という名称でアナログ部品を集積したFPGAを“Fusion”という製品名で実用化している。FusionにはADC(A/Dコンバータ)/DAC(D/Aコンバータ)やRTC(リアルタイムカウンタ)、コンパレータ、電流モニタ/温度モニタなどを集積しており、これらの組み合わせを自由に変更することができる。なぜActelだけがこれを可能となったかについてMubarak氏曰く、「他社のFPGAは、通常のCMOSプロセスを使っているので、アナログ信号を扱う際に必要な高電圧のハンドリングが極めて困難である。対してActelの場合は、Flash Memoryが20Vを必要とする関係で、高電圧に耐えるCMOSプロセスを利用している。だからこそアナログ信号も容易に取り扱いできる」との事だ(事実Fusionは-10.5V~+16Vまでの信号を直接ハンドリングできる)。
では、SmartFusionが具体的にどんなメリットがあるのか、についての一例として挙げられたのがモータ制御である。グリーン化、あるいはエコ化が叫ばれるようになって、猛烈な勢いで立ち上がりつつあるのがこのマーケットである。背景にあるのは、産業向けのエネルギー消費量で一番大きな割合を占めているのが、工場で使われるモーターの消費電力という点だ。つまり消費電力の低いモータを造れば、多少高くても長期的には電気代の節約でペイするし、エコ化に沿ったものになる。で、消費電力の低減にはもちろんモータ本体の改良も有効だが、外部にモータ制御コントローラを用意し、ここできめ細かな制御をすることで省電力化を進めることも有効であり、この目的にはモータ制御用のMCUが必要、ということになる。
さて、モータ制御にMCUが有効なのはわかるが、従来だとCortex-M3にモータ制御用のPWM回路と、電流/電圧センサーあたりを組み込んだMCUが多く用いられてきた。ただし、この場合はソフトウェアで制御を細かく行なう必要があるため、MCUそのものは常にブン廻る事になっていた。ところがSmartFusionを使う場合、電流変動やトルク変動などはFPGAを使えば、10ns~1μsという極めて短時間でフィードバック制御が行なえることになり、しかもCPUに負荷はかからない。このためCPUはもっと長時間のループで良い速度/位置制御とか、上位のコントローラとのネットワークの処理だけを行なうことができる、というわけだ。もちろん同等の事は、通常のMCU+FPGA+アナログ回路を用意すれば可能だが、部品点数がずっと増えてしまい、コスト的に割にあわないことになる。あまり巨大なシステムをこれ1個でやろうというのは無理だが、この程度の規模のものであれば、MCU単体とそれほど大きく変わらない価格でFPGAが使えるようになり、ここで製品差別化が可能というのがActelの主張である。
ちょっと「風が吹けば桶屋が儲かる」的なロジックを感じなくもないのだが、事実Cortex-M3はこのモータ制御向けでいきなり大きなシェアを握る事に成功している |
●ラインナップその他
さてそのSmartFusionだが、3品種が用意される。すでにAF200は出荷を開始しており、ついでAF500が今年前半に出荷開始、最後にAF060となる予定だそうだ。気になる価格は(事前説明会の時点では)まだ公開されないとしつつも、Mubarak氏は「One Digit(つまり10ドル未満)の、競争力の高い価格を予定している」とした。一般にCortex-M3をベースとしたMCUは、(当然機能やら性能やらでこれは上下するが)おおむね3~6ドル(1万個あたりの単価)といった価格になっており、FPGAファブリックまで含まれて10ドル未満というのは確かに競争力がある価格と言えよう。完全な開発キットは999ドルながら、評価キットは99ドルと比較的抑えた価格で提供される予定だ。
ちなみにどのモデルでもCortex-M3は100MHzで稼動される。ただし搭載されるCortex-M3用メモリには違いがあり、A2F060が64KB Flash/16KB SRAM、A2F200が256KB Flash/64KB SRAM、A2F500が512KB Flash/64KB SRAMとなっている |
開発環境としては、FPGAファブリックとProgrammable AnalogについてはActelが提供するLibero IDEが、Cortex-M3についてはGNUベースの開発環境の他にKEIL/IAR SystemからそれぞれIDE/Debuggerが提供される。また両者を連携させるものとして、ActelからMSS Configuratorと呼ばれるユーティリティが提供される。XILINX/ALTERAとはまた違ったアプローチだけに、今後の動向が気になる製品と言えよう。
機能評価キットの方は本当に最小限であるが、それでもピンヘッダは残されているようなので、ここから色々引っ張り出して遊ぶのも楽しいかもしれない |
(2010年 3月 3日)
[Reported by 大原 雄介]