FPGA/CPLD ホーム ソリューション 初心者 マイコンと FPGA の違い

マイコンと FPGA の違い


  マイコン も FPGA も中身はハードウェアです。しかし、マイコンはソフトウェアで処理するのに対して FPGA はハードウェアで処理します。
  ここでは処理方法の違いから マイコン・ユーザの方が FPGA を使用するメリットについてご紹介します。


1. 構造から来る処理方法の違い

ソフトウェア処理と、ハードウェア処理は何が違うのでしょうか。


(1)マイコン

マイコンには マイコン・メーカが製作した CPU コアと周辺回路などのハードウェアが あらかじめ組み込まれています。ユーザはハードウェア部分を変更できません。CPU コアには各命令用の専用回路が幾つか搭載されています。そして、ユーザが作成したプログラムで各専用回路の動作順番を決めます(ソフトウェア処理)。ハードウェア部分はあらかじめ作られているのでユーザが自ら設計する必要はなく、個々の命令の順番を決めるだけなので 開発は簡単です。しかし、細かな処理をする度にレジスタにデータを蓄えるのと、複数の処理を同時に行うのが苦手なので速度は遅くなります。汎用マイコンだけで全ての機能をカバーできると思われがちですが、実際には多くの種類のマイコンが使われています。その理由はプログラムで吸収できない機能が必要だからです。その特殊な機能を実現するために用途に応じたハードウェア回路を内蔵していますが、マイコンはハードウェア部分を変更できないので多くの種類のマイコンが存在するわけです。FPGAならこのハードウェア部分を自由に作り変えることができるので、1つのFPGAに複数のマイコンを搭載(アナログ部分を除く)できます。
 

図1.マイコンの構造と処理のイメージ

      図1. マイコンの構造と処理のイメージ


小規模マイコン

小規模マイコンの CPU は、命令を細分化するので 各専用回路が小さく、種類(命令)が少ないのが特徴です。よって、チップが小さく安価で低消費電力です。
しかし、専用回路の種類(命令)が少ないので、1つの命令でも同じ回路を何回も使い回す(クロック数が多くなる)ために速度は遅くなります。例えば 掛け算するには足し算を繰り返し実行します。AD/DA などの周辺回路も搭載されていますので、 速度が遅く 機能が少ない機器の制御に便利です。


高性能マイコン

高性能マイコンや DSP は専用回路の種類と数が多いのでチップサイズが大きくなり デバイス単価が高くなります。専用回路は高速ですが、図1の“処理X”のように使わない機能(回路)や無駄な回路が増えます。そこで、特定のアプリケーション向けの専用回路を搭載したマイコンが製品化されています。アプリケーション毎に製品化されるので、マイコンは FPGAと比べて桁違いに品種が多く、製造中止(ディスコン)になり FPGA に乗り換えるケースが増えてきています 。処理速度を求めるなら高性能 マイコンよりも FPGA の方がお勧めです。


(2)FPGA

FPGA は、回路を構成する素材である小さなロジックセル、乗算器、RAM 等を内蔵しています。これらを組み合わせて自分専用の回路を作ります。処理の順番に沿って各専用回路をつないで動作させるので、信号が来たらすぐに動作します(ハードウェア処理)。ソフトウェアのように プログラムで機能の順番を指定する必要は無いので、下図のように入力信号が来ると “処理A”と“処理B”を並列に行い、その結果をレジスタに蓄えずにすぐに“処理Z”を行えます。


図2.FPGAの構造と処理のイメージ

           図2. FPGA の構造と処理のイメージ


専用回路を自由に構成できるので、使わない機能を搭載する必要はありません。また、リアルタイム性が必要な機能だけを並列化して高速化、他の機能は回路を兼用して小さくするなど、独自の特徴を出すことができます。例えば、32bit の演算なら32個の回路を作れば1クロックで演算が終了します。遅くても良い部分は 1個の回路を Loop させて回路面積を小さくできます。


   チェックポイント ⇒ マイコンは、細分化された機能の処理順番をソフトウェアで制御する

   チェックポイント ⇒ FPGA は、ハードウェアである回路を処理に合わせて接続する


このように、ハードウェア部分をカスタマイズできる LSI は FPGA 以外にも ASIC がありますが、ASIC は開発費が膨大(最近では数十億円)に必要で、しかも接続情報が固定されるので後から回路変更ができません。FPGA はハードウェア部分の構成を後から柔軟に変更することができるので、「Field (現場)」で「Programmable (プログラムできる)」「Gate Array (ASICの1種)」として、『 FPGA 』 と呼ばれています。

FPGA の場合は、起動時に 各セルの構成や各セルを接続した情報(コンフィギュレーション・データ)をメモリなどからロードするので、この接続情報を変えれば機能を自由に変えることができます。


2. 処理速度の違い

マイコンと FPGA の処理能力を動作周波数の数値だけで比べることはできません。

マイコンと FPGA の処理の違いは、マイコンが逐次処理、FPGA が並列処理である点です。同じ動作速度ならマイコンより FPGA の方が処理能力(スループット)は高くなります。
 

(1)マイコン

マイコンは専用回路を使いまわす仕組みなので、コンパイルすると1つの命令をマイコン用の小さな機能に分散させて処理します。そこで、マイコンのチップは実行クロック数が多く必要になります。高速に処理するにはクロック周波数を上げるか、プログラムを改良するか、必要な命令のハードウェアを搭載した専用マイコンを使うしかありません。


図3.サイクル数の比較

図3. サイクル数の比較


FPGA はハードウェア部分を自由にカスタマイズできるLSIなので、小さな処理をまとめて同じサイクル内で処理したり、図4 のように並列化してスループット(単位時間あたりの処理能力)を高くできます。DSP や CPU より FPGA が低消費電力なのは、同じスループットでも低い動作周波数だからです。


図4.並列処理による高速化例

図4. 並列処理による高速化例


   チェックポイント ⇒ FPGA は、1サイクル内に複数の処理ができるのでスループットが高い


3. 割り込みについて

マイコンは、周辺の様々な IC を制御するリアルタイム処理に割り込みを使用します。割り込みをする度に現在実行している処理が中断されます。


図5.マイコンとFPGAの処理

図5. マイコンと FPGA の処理


FPGA は各処理を並列に実行できるので、割り込みによる遅延が発生しない点で、リアルタイム処理に有利です。


   チェックポイント ⇒ FPGA は、割り込みによる処理の遅延を少なくできる


4. マルチ CPU と FPGA の違い

1チップに複数の CPU コア搭載したマルチ CPU でも並列処理は実現可能ですが、FPGA の並列化はレベルが違います。


(1)数百以上のマイコン処理を 1つのFPGAで実現

ハードウェアをカスタマイズできる FPGA は、オリジナルな CPU を作ることができます。

既に数百もの CPU を FPGA 上に実現しているケースがあります。


(2)FPGA 内に構成するオリジナル CPU

FPGA 内に構成するオリジナル CPU とは、使わない機能を省いて使う機能だけの命令セットを搭載した CPU のことです。例えば、アルテラの『 C2H 』ツールを使うと、高速化が要求される ANSI C 関数を FPGA 内のハードウェアである専用回路に変換して、システム性能を最大で数十倍も向上できます。詳しくはこちら


 

ソフトウェアでは時間がかかる演算を1つにまとめて、カスタム演算命令として使うと便利です。詳しくはこちら


 

下図は低コスト FPGA Cyclone®IV にアルテラ社の 32bit ソフトウェア プロセッサ Nios®II を組み込んだ例です。約100M〜180MHz で動作しますが、更に速度が必要なら、同じFPGA 内に専用回路を作れば圧倒的な高速処理を実現できます。

低コストFPGAにNIOSを入れた例

図6. 低コスト FPGA(Cyclone IV) に Nios でマイコン機能を実現した例(AD/DAは外部です)

(3)無駄の無い並列化

並列処理の最大の欠点はチップサイズが大きくなることです。

マルチ CPU は CPU コア全体を複数搭載するのでチップサイズが大きくなり、並列度を大幅に向上できません。並列度に応じて不要な機能も一緒に増えるからです。FPGA は必要な機能だけを並列化できます。


図6.マルチCPUとFPGAのチップ・イメージ

図7. マルチ CPU と FPGA のチップ・イメージ


   チェックポイント ⇒ FPGA は、速度が必要な機能だけを並列化できる


5. マイコンから FPGA へ移行する理由

マイコン・ユーザの方が初めて FPGA を使用される理由は様々です。ここでは FPGA を採用された理由の幾つかの例をご紹介します。


(1)既存マイコンから FPGA への置き換え

  ・使用していたマイコンがディスコン(製造中止)になった。

  ・マイコンは車載や家電などの大企業のユーザが多く、供給バランスが崩れると手に入りづらくなる。

  ・リアルタイム処理が必要になった。

  ・割り込み回数が増えた。

  ・パフォーマンスが足りない。

  ・一部の機能の実現のために高価な高性能マイコンは購入できない。

  ・最新の高速 I/O インタフェースをサポートしたい。

  ・高性能マイコンの消費電力や熱を下げたい。

  ・多くの機能に合わせてピンを兼用していたが、ピン数が足りなくなった。

(2)複数のマイコンや周辺回路⇒1つの FPGA へ置き換え

  ・システム全体のコストを下げたい。

  ・システム全体の消費電力を下げたい。

  ・マイコンの数量が増えるので1個にまとめたい。

  ・小型化のために基板面積を削減したい。
 

(3)マイコン + FPGA

  ・一部の関数を FPGA へ移して、マイコンの動作周波数を下げたい。

  ・アナログ部分は、マイコンの AD/DA の性能で十分だが、デジタル部分の処理が間に合わない。





メールマガジンお申込み


▲ ページトップへ