FPGAに実装されるさまざまな回路の中で、プロセッサコアの果たす役割の重要度が高まっている。しかし、プロセッサコアをFPGAに実装して、有効に活用するためにはいくつかの課題に留意しておく必要がある。本稿では、まず、FPGAにおけるプロセッサコア利用の歴史と、主要ベンダーのプロダクトを紹介する。
FPGAにプロセッサコアを搭載して利用するための取り組みは、FPGAが登場した初期のころから始まっており、その歴史は長い。そういったFPGA向けのプロセッサコアには、FPGAのプログラマブルロジックに実装される合成可能なソフトウエアベースのもの(ソフトコア)と、FPGAベンダーがダイ上に直接回路を作り込むハードウエアベースのもの(ハードコア)がある。
また、プロセッサのアーキテクチャの仕様についても、業界標準やFPGAベンダー独自のものが存在している。さらに、ビット幅をはじめとする性能も、8ビットから、DSPコアを集積した32ビットまでと広範囲にわたっている。FPGA上で用いることができる多種多様なプロセッサコアには、実装フローやシステム性能、デバッグアクセスにおいて大きな相違点が存在している。このため、FPGAにプロセッサコアを実装する際は、それらを考慮することが必要となってくる。
FPGAに用いるプロセッサコアの現状を理解するには、これまでの歴史を把握しておくとよいだろう。初期のFPGAは、能力が限られていたこともあって、グルーロジックやバスブリッジを実装する用途で用いられており、外付けのMPUやマイコンがプロセッサの役割を担っていた。その後、ムーアの法則に従ってFPGAは進化を遂げる。設計者らは、FPGA上に独自に設計したプロセッサコアを実装したいと考えるようになった。プロセッサコアを独自に設計することは、すべてのデジタル回路の設計者が抱く究極の目標なのである。
FPGAに搭載するプロセッサコアとして当初の目標とされていたのは、ビット幅が4ビットという非常にささやかなものだった。ところが、このように使用するゲート数が少ない場合でも、プロセッサコアをプログラマブルファブリックに実装する際には数々の問題点が存在していた。
問題の一部は構造的なものに起因する。個別のICにプロセッサコアを搭載する場合、スタンダードセル方式やフルカスタム方式を用いることができる。選択肢が豊富にあるので、設計者はICに求められる消費電力や回路の実装面積などの性能を比較的容易に実現できるだろう。さらに、設計をチップに落とし込む実装を担当するチームは、作業に使用するためのツールを確実に入手できる。
しかし、このようなやり方は、FPGAファブリックに適用することはできない。例えば、FPGAと、マイコンの出力回路の1つであるトライステートバスとの相性はあまりよくない。ほかの例としては、プロセッサ設計の中心となる、高速の(シングルサイクルである場合が多い)マルチポートレジスタファイルがある。高度なプロセッサアーキテクチャでは、汎用レジスタファイルに8個以上のポートがあるので、アドレス計算の開始からスカラー演算の実行、結果の保存までのすべてを、異なるパイプライン段で実行することにより同一サイクルで処理できる。しかし、FPGA内に汎用レジスタを実装するための唯一の選択肢は、ロジックセルまたはブロックRAM内にシングルポートのLUT(Look-up Tables)を実装することである。どちらの場合も、大規模なマルチポートアクセスをエミュレーションするためのロジックセルのラッパーが必要となる。FPGAにこれらの回路を実装した場合、機能的には正しく動作しても、プロセッサの動作周波数が著しく低くなるか、設計者による実行パイプラインの大規模な再構成作業が必要になる可能性がある。
一般的に、プロセッサコアをFPGA向けに最適化させる際に問題となるのが、信号の伝播速度が最も遅いクリティカルパスである。個別のICにプロセッサコアを搭載する場合、設計者は、ネガティブスラックパスの数を最小限に抑えてから、低閾(しきい)値セル、高ドライブセル、カスタムセル、手作業による配置配線といった工夫を加えることができる。だがこうした手法は、一般的なFPGAユーザーが手軽に活用できるものではない。
FPGAユーザーは、Freescale Semiconductorの「ColdFire」や広く普及しているARMの「ARM7」のような、さらに大規模なプロセッサコアを求めるようになっている。その一方で、実装が困難であるという現実はその魅力に影を落としてしまっている。結果として、多くの設計者は、「FPGAに搭載したプロセッサコアは、動作が低速で、占有面積や消費電力も大きい。実装のための労力を費やすに値しない」と考え始めるようになった。
それでも、技術者がこれらの問題を解決するまでにそれほど長い時間はかからなかった。Alteraの設計者らは約10年前、「FPGAに実装するのに最適なプロセッサコアは、ゼロベースで設計することができる」という結論に達した。そして、FPGAに適さない機能や構造を省き、ほとんどの用途に対して納得できる性能を実現する仕様を考案した。こうして開発されたのが、Alteraのソフトコア「Nios」である。その後、Xilinxが同様にソフトコア「MicroBlaze」を発表するなど、ほかの半導体ベンダーもこれに続いた。また、FPGAベンダーのアプリケーションチームとサードパーティの設計者の両者が、ARMやMIPS Technologiesなどが提供する業界標準のプロセッサコアに独自の変更を加えて、FPGAで利用しやすいように最適化していった。
Copyright © ITmedia, Inc. All Rights Reserved.