KUMICO

FPGA COLUMN

FPGA入門

FPGAとは「Field Programmable Gate Array」の略です。日本語で意訳するならば「ユーザー(エンジニア)がデバイス(半導体/IC)の入手後、開発現場でプログラミングをすることができるゲートアレイIC」ということになります。開発現場でエンジニア自らの手でプログラミングできるということは一体どういうことなのでしょうか。また、なぜ現場でプログラム可能である必要があったのでしょうか。FPGA誕生の歴史から紐解いて解説していきましょう。

  • FPGA入門

FPGAとは

FPGAとは「Field Programmable Gate Array」の略です。日本語で意訳するならば「ユーザー(エンジニア)がデバイス(半導体/IC)の入手後、開発現場でプログラミングをすることができるゲートアレイIC」ということになります。開発現場でエンジニア自らの手でプログラミングできるということは一体どういうことなのでしょうか。また、なぜ現場でプログラム可能である必要があったのでしょうか。FPGA誕生の歴史から紐解いて解説していきましょう。

FPGAはどのようにして生まれたのか

みなさんが日常を過ごしていて感じる周りの環境。例えば、街頭の様々な音、人々の話し声、太陽の光、ネオン、気温、室温などなど…何気なく感じているものを電子の世界で処理するために数値に置き換えてやる仕組みがデジタル回路です。このデジタル回路は論理回路で構成されており、AND(論理積)、OR(論理和)、NOT(論理反転)が利用されています。これらの基本的な回路を組み合わさることでレジスタ、フリップフロップなどの小規模構成の汎用ロジックICが様々な回路で動作します。
この汎用ロジックICは1960年後半にテキサス・インスツルメント(Texas Instruments)社の技術が幅広く使用されるようになり世界の半導体業界へ爆発的に広まっていきました。その当時このICが使用される先駆けの製品は電卓でした。この電卓をきっかけにさらなる機能を追加して電卓以外にも使用したいというニーズがでてくるのは必然だったでしょう。その結果この汎用ロジックICは多様多種のものが生まれ、機能も集積されていきました。これが「LSI (Large Scale Integration )」、「VLIS(Very Large Scale Integration)」、「ULSI(Ultra-Large Scale Integration)」などと呼称され、歴史とともにその集積規模が増えるにつれ発展していったのです。(※以後代表してLSIと記載)
ところが、この LSI には課題がありました。①開発に非常に時間がかかる(数年単位)、②開発コストが非常に高価(数千万円~数億円といった初期費用)、③汎用品なのでカスタマイズができない、大きく言うとこの3つです。
時代が進むにつれ製品のサイクルは非常に速くなり、メーカも次から次へ新製品を出さなくてはならない、また他社との製品の差別化を明確に出していかなければ売れないなど、半導体の進歩とともに世の中のマーケットも変動していったのです。

この時流を見据えていたのか否か、そのニーズにこたえる半導体の開発が同時期に進んでいきました。1970 年代末には「PLD (Programmable Logic Device)」、1980 年代には「CPLD ( Complex Programmable Logic Device)」が開発され、汎用ロジック IC 小規模相当の回路を実装できるようになりました。
これが冒頭で説明した「ユーザーがデバイスの入手後、開発現場でプログラミングをすることができるゲートアレイIC」、つまりこれがプログラマブルロジックデバイスです。
こちらも世の中の市場ニーズの多様化に伴い、PLDやCPLDよりも大規模のロジック実装ができるものが望まれるようになり、1980年代半ばに初の「FPGA(Field Programmable Gate Array)」が登場することになります。

半導体の中のFPGA

従来のLSIとは異なり、ユーザーが自分で回路を作れるように最低限の機能だけを実装したプログラマブルロジックデバイス。これは、開発のスピードを上げつつコストを抑え、さらにはオリジナリティ創出実現のためのカスタマイズ性をユーザーに与えました。
次に、FPGAは半導体の中でどのような存在なのかを見ていきましょう。半導体は実際の開発プロセスで「特定の用途向けに設計されたデバイス」と「ユーザーが設計する設計デバイス(カスタムデバイス)」の2種類に分けられるでしょう。大まかな違いは下記のとおりです。

【特定の用途向けに設計されたデバイス】

半導体製造メーカがある特定のアプリケーションや用途を想定して生産するデバイス。メーカがあらかじめ回路構成を決めて生産するのでユーザーはカスタムできない。多くのデバイスは数量が多く出るアプリケーションを想定しており大量生産するため、ユーザーが入手する単価は低い。

【ユーザが設計する設計デバイス(カスタムデバイス)】

半導体製造メーカがユーザーの目的や必要性に合わせてユーザー自身で開発することができることを目的に製造するデバイス。別の言い方をすればユーザーが入手した時点では用途が決まっていない汎用品だが、その手でカスタマイズを実行することで独自のデバイスとなる。「特定の用途向けに設計されたデバイス」に比べてさほど数量が出る想定ではない、ユーザーによるカスタム前提となっており、ユーザーが入手する単価は比較的高価である。

FPGAは「ユーザーが設計する設計デバイス(カスタムデバイス)」に該当します。またPLD、CPLDも同様です。ユーザー自身の手で回路実装ができるように最低限の回路を装置に実装してあるので、ユーザーは内部のハードウェア構成を自由に、またいつでも何度でも変更できるため、その効率的な高いフレキシビリティが一番の特徴です。

なぜFPGAが注目されたのか

「ユーザーが設計する設計デバイス(カスタムデバイス)」には、もう一つ種類があります。それは「ASIC(Application Specific IC)」です。「特定の用途向けに設計されたデバイス」では実現できないので【カスタムが必要】という目的はFPGAと同じですが、下記の違いがあります。

【FPGA】

アプリケーション用回路を製造済みデバイスにプログラムするため回路変更が容易

【ASIC】

半導体製造メーカが生産したデバイスを使用して、特定のアプリケーション向けのカスタムデバイスをユーザーが開発する。その回路をいつでも何度でも変更できる。

このように違いが見える両者ですが、実はASICとFPGAの開発手法にも共通点があります。標準的な開発フローでは、要求分析、要件定義、基本設計・詳細設計、RTL設計(Verilog、VHDLなどを用いてコーディング)、論理合成、動作シミュレーション、そして配置配線、この順番が多いかと思いますが、これはほぼ同じなのです。しかしながら上記工程後の工程が大きく異なります。詳細を説明しましょう。

ASICでは、先の開発フローを通じて動作確認が終えた設計データは、半導体製造工場(ファウンドリ)で次の工程へ移ります。まずは配置配線に合わせて実際の半導体のどこに何を置くのかを決めるマスクを作ります。このマスク上のパターンをウエハーに露光、ROMとして半導体が製造されるのです。半導体が出来上がってくると設計したとおりに動作するかのテストが実されます。

このASICの開発フローは数年かかるのが一般的で、またその開発コストも数千万から数億といった膨大な金額となります。万が一テストでエラーが見つかった、デバイス出荷後に不具合が見つかってしまった…となると、ASIC は後から回路を変更することはできない構造なので、今まで費やした期間・コストは無駄になるどころか、追加の莫大なコストが必要となってしまいます。

FPGAでは後工程としてデバイスの製造を行う必要がありません。先に述べた通りユーザーは半導体製造メーカから製造済みのデバイスを供給されています。それ向けの開発を行っています。動作確認が終えた設計データはすぐに実際のFPGA上で回路を動作させることができ、机上やシミュレーション上では見つからない繊細な問題もいち早く発見することができるのです。またそれを修正し何度も試すことができます。FPGAは起動時にFLASH ROMからその回路データを読み込み、FPGA内の回路を構成するという特性があるためです。開発段階のタイミングでも何度でもトライアルできますし、製品出荷後の検証で不具合が見つかってもFLASH ROMに保存されている回路データを更新すれば改修することができるのです。

以前までは、製品出荷数時の一台当たりの単価や性能面で優れているASICの利用が多かったのですが、近年ではFPGAの技術進化に伴い、ASICに追いつく勢いで性能面が向上していますし、安価になってきています。また「すぐに試せる」、「何度でも書き換え可能」というFPGAのフレキシビリティ性が、現在の製品開発スピードやニーズに合致してFPGAを採用する動きも増えています。

FPGAの進化過程と機能

誕生以来さまざまな利点をもって価値を提供し続けてきたFPGA。具体的にはどれくらいの進化を遂げてきたのでしょうか。また、機能はどのようなものを持っているのでしょうか。

FPGAの進化過程

FPGAを提供するメーカは複数存在しますが大きくシェアを取っているメーカは「インテル(Intel) ※旧アルテラ(ALTERA)」社と「ザイリンクス(XILINX)」社になります。(ABC順で掲載)
両社とも1980年代よりFPGAの最初の開発をスタートしており、近年に至るこの30年間以上の間に性能、機能、デバイス価格といったありとあらゆる面で劇的な変化をしてきました。
「ザイリンクス(XILINX)」社では、FPGAは2010年で集積度600 倍以上、速度100 倍以上、デバイス価格は1000分の1 程度に低減、電力は150分の1に低減と圧倒的に進化しています。
「インテル(Intel) ※旧アルテラ(ALTERA)」社でも同様にその集積度、消費電力、デバイス価格は同様に進化していますが、先に述べたスペックとは別の観点からその進化を見るとロジック数は100倍以上、内部動作クロック、高速トランシーバ のデータ性能も5~10倍向上しています。中でも特徴的なのが2015年に「インテル(Intel)」社が、「アルテラ(ALTERA)」社を買収したことによる将来のFPGAです。このニュースは聞く耳新しいですが、それを発表した2013年にはインテル14nm トライゲート・プロセスでFPGAの製造をしていくと発表しており、さらなるFPGAの進化が期待されています。

また、FPGAデバイス自体の進化ということもありますが、それを使うユーザーへのフォローも進化しています。それは開発ソフトウェアの高機能化、IP コアの充実、評価環境(ボード・キット)などにもユーザーにとって開発が少しでも短い期間でできるようこちらも進化し続けています。

FPGAの機能

アルテラ

「インテル(Intel) ※旧アルテラ(ALTERA)」社と「ザイリンクス(XILINX)」社はどのようなFPGA製品があるのでしょうか。まずは「インテル(Intel) ※旧アルテラ(ALTERA)」社製品の4シリーズの製品を見てみましょう。

【Stratix シリーズ】

高帯域幅と高集積度が特徴で回路規模が大きく、高速トランシーバも搭載しているので高速処理を求められるハイエンドのアプリケーションに最適なデバイスです。

【Arria シリーズ】

性能、消費電力そして価格において、StratixシリーズとCycloneシリーズの中間にポジショニングするミドルエンドのデバイスです。ARM Cortex-A9 MPCore™が搭載したラインナップも展開されています。

ユーザが求めやすい価格で設定されているデバイスです。低消費電力も実現しており従来ASICやASSPで利用されていた製品の置き換えも行われ、量産もされています。ARM Cortex-A9 MPCore™が搭載したラインナップも展開されています。

【MAX10 シリーズ】

MAX5シリーズはCPLDベースのデバイスでしたが、MAX10になりFPGAベースとなりました。Cycloneシリーズよりもより省資源のシステムで利用することができる最も低コストのデバイスとなります。

これら「インテル(Intel) ※旧アルテラ(ALTERA)」社のFPGAは、オンチップ メモリ、デジタル信号処理(DSP)ブロック、高速トランシーバー、高速 I/O ピン、パーシャルコンフィグレーションなどの機能を搭載しており、量産型から最先端製品まで、さまざまなアプリケーションに幅広く対応しています。
FPGA開発をサポートするツールとしてQuatus、QsysといったFPGA開発ツールや、MegaCOREといった「インテル(Intel) ※旧アルテラ(ALTERA)」社製のIPコアを提供しています
また、上記FPGA以外にもコンフィグレーション・デバイスのEPC、EPCS、EPCQ、電源デバイスのEnpirionも提供しており、FPGAシステムに必要なデバイスは一貫して提供しています。

ザインリンクス

次に「ザイリンクス(XILINX)」社製品を見ていきましょう。ザイリンクス(XILINX)社にはグレードの異なる5つのFPGAシリーズがあります。

【Virtex シリーズ】

高帯域幅、高集積度、そして最大容量のデバイスで、400Gアプリケーションといった高速伝送が必要なアプリケーションなどに適したハイエンドデバイスです。

【Airtix シリーズ】

VirtexシリーズとKitenxシリーズの中間のミドルエンドのデバイスです。コストを抑えつつ性能や省電力を実現しています。

【Kintex シリーズ】

低価格ながらも性能面の向上や低消費電力を実現したローエンドのデバイスになります。製品出荷数が多いアプリケーションなどに最適で、量産もされています。

【Spartan シリーズ】

Kintexシリーズ同様低価格ながらも性能面の向上や低消費電力を実現したローエンドのデバイスになります。Spartanの後継デバイスがKitenxというようなイメージになります。

【Zynq シリーズ】

ARMプロセッサが搭載されたFPGAデバイスラインナップとなります。Zynq-7000シリーズ、Zynq UltraScale+シリーズが展開されています。

ARMプロセッサは2種類あり、後尾に「SoC」と付与されているデバイスはARM Cortex-A9 MPCore™が搭載、「MPSoC」と付与されているデバイスはARM Cortex-A53 MPCore、ARM Cortex-R5 MPCore、さらにはGPUのARM Mali™-400 MP2も搭載しH.264-H.265 をサポートするビデオ コーデック処理できるハイエンドマルチメディアデバイスとして提供されています。

これら「ザイリンクス(XILINX)」社製品では、コネクティビティ、メモリ インターフェイス、デジタル信号処理、プロセッサソリューションの面でさまざまな工夫が施されており、様々なアプリケーションで利用がされています。
FPGA開発をサポートするツールとしてISE、VivadoといったFPGA開発ツールや、LogiCOREといった「ザイリンクス(XILINX)」社製のIPコアを提供しています。

広がるFPGAの使用範囲

FPGAはこれまで多く利用されていた通信、ネットワーク機器や産業機器だけでなく、自動車や放送機器、OA機器、家電などにも多く活用されるようになりました。
これはFPGA自体の性能進化とともに価格が下がりASIC、ASSPを利用していたユーザーが製品に採用しやすくなったことが一因です。製品リリースのサイクルが非常に早くなっている昨今の市場から、FPGA評価ボード(キット)もメーカーから販売されております。開発しながら仕様も決めつつ(変更しつつ)ということが開発に求められており、さらに開発期間、コスト、そしてリスクを削減することが求められています。それに対応できるデバイスがFPGAの書き換え可能機能という最大限のメリットだということです。

進化を続けるFPGA

昨今のFPGAのトレンドはCPUコアを内蔵した「SoC FPGA」です。これまでFPGAはどちらかというとASICやASSPであるCPUの補助処理や、高速、多量な処理というコンパニオンチップという位置づけで、CPUにはできない部分をハードウェア処理をするという位置づけでした。しかしながらこの2チップ構成にすると、CPUとFPGA間のインタフェースを設計する必要がある、基板の実装面積が増えてしまうなどの課題もありました。またマーケットのニーズから、ハードウェアだけで表現できない複雑なアプリケーション(例えばGUIや様々なネットークプロトコルなど)をある程度の性能を保有したCPU上のソフトウェアで実装する必要があり、満を持して「SoC FPGA」が登場したのです。これはARMを搭載したFPGAで、「インテル(Intel) ※旧アルテラ(ALTERA)」社の製品では「Cyclone V SoC」や「Arria® 10 SoC」、「ザイリンクス(XILINX)」社の製品では「Zynq-7000 SoC」や「Zynq UltraScale+ MPSoC」があります。

FPGAはこれからどのように発展していくのでしょうか?

これまでFPGAは組込機械の制御向けのデバイスとしての用途として活用されてきましたが、近年、FPGAの大容量化、高性能化が進むにつれ、制御ではなく演算を目的した用途へのニーズが高まりつつあります。
また、IoTやクラウドの発展に伴い、大量の情報からの認識や解析の需要が増えていく中で、性能進化が頭打ちになっているCPUに加えFPGAを採用する動きもでてきました。
特にFPGAは並列処理が得意なため、Deep Learning(ディープラーニング)の推論処理をはじめ、大量データ処理への活用が進んでおり、既にGoogleやMicrosoft、Baiduなどが自社クラウドサービスで採用したり、Amazon Web Serviceがユーザー設計によるFPGAデザインをデプロイ可能なEC2 F1 Instanceをサービス化するなど、データセンターとFPGAの組み合わせ(接続)が注目を浴びています。
今後FPGAは、その特性を活かした従来の枠に留まらない利用方法が生み出され、様々な領域での活用が広がっていくでしょう。

OTHER COLUMN

MORE  

PARTNER

  • Intel
  • Xilinx