コンテンツにスキップ

FPGAとは

FPGA(Field Programmable Gate Array)とは、高集積で優れた機能と多数のI/Oを持つセミカスタムICの一種です。 名前のField Programmableは、出荷された後に使う現場で回路構成を書き込めることを指します。

製造の後まで回路を確定させないので、初期費用を避けて何度でも作り直せます。そのかわり、書き換えのための仕組みを常に抱え、面積と電力で専用回路に劣ります。使い分けは数量と、仕様が固まっているかで決まります。

敷き詰めた配線資源から、使う経路を設定で選ぶ

Section titled “敷き詰めた配線資源から、使う経路を設定で選ぶ”

ASICは、製造した時点で回路が固定され、仕様が変われば作り直しが要ります。FPGAのチップの上には、論理を組むためのブロックと、それらをつなぐ配線資源があらかじめ敷き詰められていて、出荷の時点ではどのブロックをどうつなぐかが白紙のままです。

購入した側が構成を書き込むと、その設定に従って経路が有効になり、狙った回路として動きます。物理的な配線はそのままで、用意された経路のうちどれを使うかを選ぶ仕組みなので、何度でも書き換えられます。

用意された配線資源から、使う経路を選ぶ
用意されたものから選ぶ薄い線=用意された配線資源濃い線=設定で有効にした経路書き換えられることの代償選ぶための仕組みが常に載っている同じ機能でも面積・電力・速度で不利になる使い分けの軸は数量と仕様の固さ少量・仕様が動く → FPGA大量・仕様が固い → ASIC
論理ブロックと配線資源はあらかじめ敷き詰められています。設定で有効にする経路を選ぶことで、狙った回路として動きます。選ぶための仕組みを常に載せている分、専用に作り込んだ回路より余分を抱えます。

書き換えの実体は、ルックアップテーブルの16個の値

Section titled “書き換えの実体は、ルックアップテーブルの16個の値”

PolarFireの論理エレメント(Logic Element)は、4入力のルックアップテーブルと、繰り上がり用のキャリーチェーン、D型フリップフロップの組です1。ルックアップテーブル(Lookup Table、LUT)は日本語にすれば表引きで、入力が4本ならその組み合わせ16通りそれぞれに、出力を0か1で書いておきます。この4入力LUTとキャリーチェーンの組で、任意の4入力の組み合わせ論理関数、または算術関数を構成できます。

ANDやORといった論理ゲートを物理的に組み替えるかわりに、表に書いてある16個の値を入れ替えます。値が入れ替われば、同じ回路が別の論理として動きます。これが書き換えの正体です。

フリップフロップは1ビットを覚える回路で、クロックに合わせて値を保ちます。組み合わせ論理をLUTが、順序論理をフリップフロップが受け持ちます。論理エレメントはfracturable(分割して使える)で、LUTだけ、あるいはフリップフロップだけでも使えます。

論理エレメントは12個ずつまとまって論理クラスタ(Logic Cluster)になり、クラスタどうしは階層的な配線でつなぎます。クラスタ内の配線はクラスタ間の配線より伝搬遅延が小さいので、同じ設計でも、まとめて近くに配置されたか離れて配置されたかで、動作周波数に差が生じます。

表の値を書き換えると、別の回路になる
① 表に書く入力 DCBA出力000010001000101⋮⋮111104入力なら16通り各行に0か1を書き込む② 論理エレメント4入力LUTキャリーチェーンDフリップフロップLUTだけ、フリップフロップだけでも使えます(fracturable)③ 12個で1クラスタクラスタ内の配線=遅延が小さいクラスタ間の配線=遅延が大きい同じ設計でも、配置しだいで動作周波数に差が生じます書き換えとは、表の中身と経路の設定を入れ替えること物理的な配線はそのままで、動く回路のほうが入れ替わります
書き換えの実体は、ルックアップテーブルに書いた表の値と、経路の設定です。論理エレメントは4入力LUT・キャリーチェーン・Dフリップフロップの組で、12個で1つの論理クラスタになります。クラスタ内の配線はクラスタ間より伝搬遅延が小さいため、同じ設計でも配置しだいで動作周波数に差が生じます。

内蔵メモリと積和演算器は、はじめから専用回路で載せる

Section titled “内蔵メモリと積和演算器は、はじめから専用回路で載せる”

いまのFPGAは、LUTとフリップフロップのほかに、専用回路として作り込んだブロックも載せています。PolarFireのファブリック(論理が敷き詰められた領域)は、論理エレメント、内蔵メモリブロック、算術ブロック(Math Block)の3種で構成されます。

内蔵メモリは大小2種類で、大きいほうのLSRAM(large SRAM)は1個20Kビット、小さいほうのμSRAM(microSRAM)は1個768ビットです。LUTの表とは別に、設計が読み書きするデータを貯めておくための領域です。

算術ブロックは18×18の積和演算器(MACC)で、乗算器・プリアダー・加算器を内蔵し、FIRフィルタ、IIRフィルタ、FFTのようなデジタル信号のための演算に向けて最適化されています。この内蔵で、乗算・積和の実装に要る外部の論理を最小限にできます。

PolarFireの上位品MPF500は論理エレメント319,992個、20KビットのLSRAM 1,520個、18×18の算術ブロック1,480個を持ち、下位品のMPF100は論理エレメント71,736個、LSRAM 352個、算術ブロック336個です。PolarFireは12.7Gbpsのトランシーバレーンと、PCI Express Gen2も内蔵していて、入出力の側にも、あらかじめ作り込まれた専用回路が載っています。

相手が未定のまま出荷するので、I/Oも論理も余裕をもって積む

Section titled “相手が未定のまま出荷するので、I/Oも論理も余裕をもって積む”

FPGAの特徴に多数のI/O2が挙がるのには理由があります。端子の数は、つながる相手の数で決まります。FPGAは相手が未定のまま出荷されるため、センサでも通信路でも別のチップでも受けられるよう、入出力を多めに用意しておくことになります。

回路の中身も同じで、どんな回路を組まれても対応できるよう、論理ブロックも配線資源も余裕をもって敷き詰めます。使い道の空いた資源が常に残る構造です。この余裕が、面積と電力の不利になります。専用に作り込んだ回路なら省けるものを、可能性のために抱えています。

SRAM型は電源を切ると構成が消え、中性子で設計が書き換わる

Section titled “SRAM型は電源を切ると構成が消え、中性子で設計が書き換わる”

FPGAという1語のなかに、構成の覚え方が2通りあります。SRAM型は構成の設定をSRAMのセルに保持するため、電源を落とすと設定が消えます。そこで電源投入のたびに、外部のフラッシュメモリなどからビットストリーム(構成データ)を入れ直します。

フラッシュ型のAutomotive ProASIC 3は3、電源を落としても書き込んだ設計を保持します。SRAM型と異なり、外付けのブートPROMを省いたうえで、電源投入と同時に全機能が立ち上がります。

この差は、故障の出方にも及びます。ファームエラー(firm error)が最も多く起きるのは、大気の上層で生まれた高エネルギー中性子が、SRAM型の構成セルに当たったときです。衝突のエネルギーが構成セルの状態を変え、その結果として論理・配線・入出力の振る舞いが、予測しがたい形で変化します。設計そのものが書き換わる故障です。

Microchipは、フラッシュ型の構成セルは高エネルギー中性子の衝突を受けても状態を保つので、この誤りを免れるとしています。同社はいっぽうで、利用者データ用のSRAMに起きる回復可能なソフトエラーはすべてのFPGAで生じ、ファブリックに内蔵した誤り検出訂正(EDAC)回路で緩和できるともしています。

覚え方の差は、そのまま製造プロセスの差でもあります。Automotive ProASIC 3は130nm・7層メタル(うち6層が銅)のフラッシュ搭載CMOSプロセス、PolarFireは28nmの不揮発プロセスで作られます。FPGAそのものも、前工程・後工程を通って作られる製品です。

少量で仕様が動くならFPGA、数が出て固まればASIC

Section titled “少量で仕様が動くならFPGA、数が出て固まればASIC”

ASICは、顧客の特定の要求に合わせてカスタムまたはセミカスタムで作られたデバイスです4。FPGAも同じセミカスタムの系譜ですが、確定させるタイミングが違います。ASICは製造の前に確定させ、初期費用を払って専用の効率を得ます。FPGAは製造の後まで開けておき、初期費用を避けるかわりに実行時の効率を差し出します。

だから判断は数量に帰着します。作る数が少なければ初期費用の重さが総額を占め、多ければ1個あたりの効率が総額を占めます。仕様が動く可能性があるかどうかも総額へ響き、動くなら、後から書き換えられることの価値が上がります。

確定させる時期の違いが、どこへ響くか
総費用の増え方(目盛りを省き、向きだけを描いた図)作る数 →総費用FPGA↑ 出だしは低いASIC↑ 出だしが高い(初期費用)ここで逆転する交点の位置は、設計の規模と製造の世代で動きますFPGA ── 製造の後まで開けておく初期費用を避けるかわりに、実行時の効率を差し出す1個あたりが重いので、数が増えるほど総額へ響く仕様が動く見込みがあるなら、この価値は上がるASIC ── 製造の前に確定させる初期費用を払って、専用の効率を得る数が増えるほど、初期費用が1個あたりへ薄まる確定させたぶん、後からの変更は再設計になる同じセミカスタムの系譜で、境目は「いつ確定させるか」
FPGAは出だしが低く傾きが急、ASICは出だしが高く傾きがゆるやかです。どこで逆転するかは、設計の規模と製造の世代で動きます。

書き込む前に、資源の使用数と動作周波数を数える

Section titled “書き込む前に、資源の使用数と動作周波数を数える”

書き込む前に、設計した回路がそのFPGAへ載りきるかを数えます。設計ツールLibero SoCが出力するコンパイルレポートには、ファブリックの資源使用量と、使える資源の総数が載ります。内訳は4LUT、DFF(フリップフロップ)、μSRAM、LSRAM、算術ブロック、I/O、DLL、PLL、トランシーバ、グローバル配線の使用数で、RAMや積和演算器のインタフェース論理のために追加で要る4LUTとDFFの数も載ります。使った数と総数が並ぶので、余裕がどれだけ残っているかが数字で分かります。

もうひとつ数えるのが速度です。クラスタ内配線とクラスタ間配線に遅延差があるため、同じ設計でも配置と配線の結果しだいで、達成できる動作周波数に差が生じます。

資源が足りなければ、より大きい品種へ移すか、設計を小さく作り直します。速度が目標に届かなければ、段数を分けて1段あたりの経路を短くするか、動作周波数を下げます。どちらも書き込み直しで済むところが、製造の後まで確定を開けておくFPGAの利点です。ASICなら、同じやり直しがマスクの作り直しになります。

試作から最終製品、車載のパワートレインまで使われる

Section titled “試作から最終製品、車載のパワートレインまで使われる”

FPGAは、試作と最終製品の両方で、独自の論理を作るための集積回路です5。ソフトウェアのダウンロードで何度もプログラムし直せる柔軟性を持ち、Lattice Semiconductorが示す用途はエッジコンピューティング、AI、システムセキュリティ、5G、工場自動化、ロボティクスです。

車載はもう少し具体的です。フラッシュ型の車載向けFPGAであるAutomotive ProASIC 3は、ファームエラーへの耐性が要る分野として、パワートレイン、安全系、テレマティクス系のサブシステムに向けた製品です。AEC-Q100のGrade 2(周囲温度 −40〜105℃)とGrade 1(−40〜125℃)で規定され、最大100万システムゲート、最大144KビットのSRAM、最大300本のユーザーI/O、350MHzのシステム性能を持ちます。

FPGAとは何ですか?

FPGA(Field Programmable Gate Array)は、高集積で優れた機能と多数のI/Oを持つセミカスタムICの一種です。

Field Programmableとは何を指しますか?

出荷された後、使う現場で回路構成を書き込めることです。製造の時点では回路が確定しておらず、購入した側が用途に合わせて構成を決めます。

どうやって回路を変えるのですか?

あらかじめ用意された論理ブロックと配線資源の、つなぎ方を設定します。物理的な配線はそのままに、どの経路を有効にするかという設定を書き換えます。

なぜI/Oが多いのですか?

用途が未定のまま出荷されるためです。どんな相手とつながるかが設計時点で未定である以上、多くの入出力を用意しておく必要があり、汎用性のための余裕がそのまま端子数に出ます。

ASICと比べて何が不利ですか?

同じ機能を実現するのに要る面積と電力です。書き換えのための仕組みが常に載っているため、専用に作り込んだ回路より余分を抱えます。動作速度でも一般に不利になります。

どう使い分けますか?

数量と、仕様が固まっているかで決まります。少量なら初期費用の重いASICは割に合わず、仕様が動く可能性があるならFPGAの書き換えが強みになります。数が出て仕様が固まればASICが有利になります。

ルックアップテーブル(LUT)とは何ですか?

入力の組み合わせごとに出力を書いておく表です。PolarFireの論理エレメントは4入力のLUTとキャリーチェーン、D型フリップフロップの組で、この組で任意の4入力の組み合わせ論理関数または算術関数を構成できます。

電源を切ると回路構成は消えますか?

型によります。SRAM型は構成をSRAMのセルに保持するため、電源投入のたびに外部から書き込み直します。フラッシュ型は電源を落としても書き込んだ設計を保持し、外部のブートPROMを省けます。

宇宙線でFPGAが誤動作するというのは本当ですか?

大気の上層で生じた高エネルギー中性子がSRAM型FPGAの構成セルに当たると、論理・配線・入出力の振る舞いが予測しがたい形で変化します。Microchipは、フラッシュ型の構成セルはこの衝突を受けても状態を保つので、この誤りを免れるとしています。

設計がFPGAに載りきるかは、どう分かりますか?

設計ツールが出力するコンパイルレポートで数えます。レポートには4LUT、DFF、μSRAM、LSRAM、算術ブロック、I/O、DLL、PLL、トランシーバ、グローバル配線の使用数と、そのFPGAが持つ資源の総数が載ります。

FPGAは論理ブロックだけでできていますか?

違います。PolarFireのファブリックは、論理エレメントのほかに内蔵メモリブロックと算術ブロックで構成されます。内蔵メモリは1個20KビットのLSRAMと1個768ビットのμSRAM、算術ブロックは18×18の積和演算器です。

FPGAはどんな用途で使われますか?

Lattice Semiconductorはエッジコンピューティング、AI、システムセキュリティ、5G、工場自動化、ロボティクスを用途に挙げます。Microchipの車載向けフラッシュ型FPGAは、パワートレイン、安全系、テレマティクス系のサブシステムに向けた製品です。

  • ASICとは── 製造の前に確定させる側
5件を表示
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5