モバイル用マイコンの限界を超える2つの技術
スマートフォンを始めとするモバイル機器やデジタル家電などの開発(システム開発)では、システムをソフトウェアとハードウェアに分割する作業が非常に重要である。ソフトウェアとは、マイクロプロセッサあるいはマイクロコントローラ(マイコン)とプログラムで処理する部分、ハードウェアとは半導体の論理回路(ロジック)で処理する部分を指す。
ソフトウェア処理とハードウェア処理にはそれぞれ、長短がある。ソフトウェア処理はプログラムの改変によってさまざまな変更に対応するので、システムが市場に出荷された後でもプログラムを入れ換えることで仕様を改良したり、バグを修正したりできる。すなわち、柔軟性がきわめて高い。ハードウェア処理は、シリコンチップに作り込んだ論理回路が動作するので、処理時間が非常に短く、処理に必要な電力が少ない。すなわち、高速で消費エネルギーが低い。
このため、ソフトウェア処理とハードウェア処理の長所と短所を理解しつつ、システムが処理する内容を適切にソフトウェアとハードウェアに配分することが、システム開発ではとても重要になる。そしてシステムは、マイクロプロセッサ(あるいはマイコン)とメモリ(ソフトウェアの格納用)、ロジックの少なくとも3種類の半導体チップで構成されるのが普通だ。あるいはワンチップのSoC(System on a Chip)に、CPUコアとメモリ、ロジックを内蔵するようになっている。
最近では、マイクロプロセッサとマイコンの性能向上が著しい。特に32bitのRISCアーキテクチャが登場してからは、SoCに複数の32bit CPUコアを内蔵し、ソフトウェアでシステムのさまざまな機能を実現することが、現在ではごく普通になった。それも従来得意としてきた制御系(コントロール系)の処理ではなく、データ系の処理も扱うようになっている。
代表的なデータ系の処理は、音声と画像の符号化処理と復号化処理である。MP3やMP4、WMA、JPEC、MPEG、H.264などの略号で知られる、さまざまなデータを扱う。CPUコアの機能を音声処理向けや画像処理向けに拡張したり、音声処理に特化したプロセッサ・コアや画像処理に特化したプロセッサ・コアなどをSoCに載せることは、珍しくない。
●柔軟性を備えたハードウェアがFPGAこれに対して、ハードウェアに柔軟性を持たせることでプロセッサを超える高速処理を低い消費電力で実現する動きも進んでいる。その代表がFPGA(Field Programmable Gate Array)と呼ばれる半導体チップである。
FPGAの最大の特長は、内部に格納するロジックを書き換えられることだ。システムが市場に出荷された後でも「ロジック」を入れ換えることで仕様を改良したり、バグを修正したりできる。すなわち、マイクロプロセッサやマイコンなどと同様に、柔軟性が高い。FPGAは過去には価格がとても高く、一般的ではないとされていた。しかし最近ではロジック・ゲート当たりの単価が急激に下がり、デジタル家電を始めとする民生機器にも搭載されるようになっている。
ただし、数多くのCPUコアを内蔵したマイクロプロセッサやマイコンなどに比べると、FPGAは使いやすいとは言い難い。その大きな理由に、開発環境の違いがある。FPGAの開発環境はASIC(セミカスタムのロジック半導体チップ)と同じく、シリコンにロジックをレイアウトするためのもの。マイクロプロセッサやマイコンなどで用意されているソフトウェア開発環境とは、根本的に異なっている。ASICの開発経験がないマイコン・ソフトウェアの開発者がFPGAを利用することは、簡単ではない。
またCPUコアを内蔵したFPGA製品はすでに存在するものの、開発環境がソフトウェア開発者向けとしては不十分だったり、CPUコアが業界標準でなかったり、CPUコアの更新が活発でなかったりといった事情があったりもして、CPUコアを内蔵したFPGAがSoCとして普及しているとは、とても言えなかった。さらにFPGAベンダーの姿勢にも、本気でCPUコア内蔵FPGAを普及させようとしているのか、疑わしいところがあった(なおFPGAの内部にFPGAベンダーが開発したCPUコアを作り込む機能は、FPGAユーザーには普及していることを、お断りしておく)。
●現在のマイコンを過去に追いやる可能性を秘めるFPGAマイコンこういった状況が変わりそうな兆しが、Hot Chips 22で現れてきた。FPGAの大手ベンダー米Xilinx(ザイリンクス)が開発中の、ARM Cortex-A9を内蔵するSoC「エクステンシブル・プロセッシング・プラットフォーム(EPP:Extensible Processing Platform)」である。2010年4月27日にARMとXilinxが共同でEPPのコンセプトを発表していたが、Hot Chips 22ではEPPのより具体的な内容が公表された。
EPPの半導体チップは大きく、Cortex-A9デュアルコアと周辺回路ブロックで構成するプロセッサ部と、FPGAで構成するプログラマブル・ロジック(PL)部に分かれている。プロセッサ部とPL部を接続するのは、ARMのオンチップ・バス「AMBA-AXI」である。全体では「FPGA内蔵マイコン」あるいは「FPGAマイクロプロセッサ」とも呼べる構成になっている。
この構成からすぐに分かるのは、プロセッサ部を共通仕様とし、PL部に搭載する回路を取捨選択することで、さまざまな派生品のSoCを短期間に開発できることだ。PL部に搭載する回路はXilinxとそのパートナー企業がライブラリとして提供することになっており、EPPのユーザーが独自に開発せずに済む場合が少なくない。当然ながら、PL部に搭載する回路はハードウェアなので、ソフトウェアで処理する場合に比べると高速かつ低消費電力で動く。
PL部のFPGAには、XilinxとTSMCが開発した28nmプロセスの次世代FPGA「7シリーズ」を採用している。当然ながら、EPPのSoCチップも同じ28nmプロセスで製造される。高誘電率膜/金属ゲート(High-k/Metal gate)のHPL(High Performance Low power)プロセスである。
●FPGAのコアライブラリはすべてAMBA-AXIに対応
EPPの動作と開発モデルに話題を移そう。EPPではプロセッサ部を最初にブートする。CPUコア(Cortex-A9コア)のほかにプロセッサ部の周辺回路コアもブートされる。それからプロセッサ部が、PL部のコンフィギュレーションを開始する。外付けのフラッシュメモリやUSBメモリなどに格納してあるコンフィギュレーション・データをCPUコアが読み込んで、PL部に書き込む。
ここでコンフィギュレーションについて簡単に説明しておこう。PL部はSRAMセルを基本素子とする論理回路ブロックなので、電源を切ると格納された回路データ(これをコンフィギュレーション・データと呼ぶ)がすべて消えてしまう。そこで電源を投入するたびにまず、回路データをPL部に読み込まなければならない。これがコンフィギュレーションである。
コンフィギュレーション動作はFPGAユーザーにはごく普通のことだが、マイコン・ユーザーには馴染みがない。EPPではコンフィギュレーションをCPUコアが管理するので、EPPのユーザーからはコンフィギュレーション動作が見えない。
またEPPを使ったシステム開発モデルは、ソフトウェア開発とハードウェア開発がほぼ完全に分かれた。ソフトウェア開発者はPL部(FPGA)を意識せずに、すぐにプログラム開発に取り掛かれる。こういった工夫により、EPPはマイコンに近いデバイスになっている。
プロセッサ部の内部構成と電源投入後の動き | EPPを使ったシステム開発モデル | 出荷計画。EPPの製品化時期は今後、アナウンスされる。AMBA-AXIに対応した回路ブロック(IPコア)は2010年9月に、7シリーズのFPGAは2010年初めに出荷される |
●ソース・コードのホットスポットをハードウェア化する
マイクロプロセッサやマイコンなどのソフトウェアは、C言語プログラムで記述することが多い。そのプログラム・コードの使われ方には、偏りがあることが少なくない。集中的に利用されるコード(ホットコードあるいはホットスポット)と、利用頻度の少ないコード(コールドコード)に分かれる。
ソース・コードをホットコードとコールドコードに分割し、ホットコードをハードウェア(C-core)で処理 |
そこで集中的に利用されるコードをハードウェア化して消費電力を大幅に下げる試みが、Hot Chips22では報告された。University of California, San Diego校の研究開発成果である。開発した仕組みは以下のようなものだ。
ソース・コードを解析し、ホットコードとコールドコードに分ける。ホットコードをハードウェア記述言語(Verilog)のコードに変換し、VerilogのコードをC-core(Conservation Core)と呼ぶハードウェアの処理に変換する。コールドコードは汎用のCPUコアで処理する。
45nmのCMOSプロセスで試作したC-coreは1.0GHz~1.4GHzと高速に動作した。汎用CPUコアにMIPSコアを使用して命令実行当たりのエネルギー消費を比較したところ、MIPSコアでは1命令当たりに91pJ(ピコジュール)を必要としたのに対し、C-coreでは1命令当たりに8pJで済んだ。およそ11分の1と極めて少ないエネルギーで、命令を処理できることが分かる。
MIPSコアとC-coreの消費エネルギーとその内訳 |
University of California, San Diego校は、MIPSコアと複数のC-coreを組み合わせたモジュールを単位ユニットとし、単位ユニットを4×4のマトリクス状に並べた低消費電力マルチコアプロセッサの開発を進めている。モバイル機器用ソフトウェア開発プラットフォームの「Android」を載せるプロセッサとなる予定である。
ソース・コードのホットスポットをハードウェア化する試みとしては、米国のCPUコア・ベンダーTensilicaが提供する「xTensa」プロセッサ・コアが知られている。xTensaコアには命令セットを拡張する機能があり、ユーザーが定義した命令を追加できる。さらに、「XPRES Compiler」と呼ぶ、ソース・コードを解析してホットコードを拡張命令としてxTensaコアを拡張する(ハードウェア化する)ツールを、Tensilicaは提供している。このツールによってxTensaコアの実行性能を大幅に高められる。
University of California, San Diego校はCPUコアを拡張するのではなく、C-coreと呼ぶ特別なコアを用意し、C-coreを数多く用意することでホットスポットをハードウェア化している。技術的には非常に面白い試みだ。今後の発展を期待したい。
(2010年 8月 30日)
[Reported by 福田 昭]