FPGAが遍在しないのはなぜですか?


65

FPGAを読んで、正しく理解すれば、基本的に完全に構​​成可能な論理ゲート回路です。これにより、人は何でもデザインできます。可能な限り最もカスタマイズされた方法ですべてを設計できるため、マイクロコントローラーを使用して得られる非常に効率的な方法で同じ目的を達成できます。これにより、FPGAがいつでも、いつでもマイクロコントローラーを打ち負かすように見えます。それで、私の質問は、FPGAが本当にこれほど素晴らしいのであれば、マイクロコントローラよりもはるかに普及しているのはなぜですか?この観点から、私にとっては、FPGAはずっと前にマイクロコントローラーを一掃したはずのように思えます。では、なぜそうではないのでしょうか?それは、コスト、FPGAのプログラミングの難しさ、またはまったく別のものですか?



また、このスレッドを参照することもできます。electronics.stackexchange.com/questions/4382/...
トム・L.

43
ヘリコプターは車よりも柔軟性が高いのに、なぜだれでも車を使って通勤するのですか
オリンラスロップ

15
すべてのFPGA企業が、膨大な学習曲線を持ち、ほとんどの開発者がアクセスできない非常に恐ろしい独自のツールを提供するためです。それを完全にオープンなツールチェーンに置き換えれば、おそらくどこにでもあるでしょう。
R ..

@R .. ...または、少なくとも絶対的な最終手段の選択肢ではありません。
ダンニーリー

回答:


94

あなたは、デザインの選択を行う際の多くの要因を無視しています。

  1. コスト。FPGAは、同じ複雑さのロジックのために、マイクロよりも高価です。

  2. ロジックの複雑さ。実行可能なコードは、直接使用されるマイクロ内の同数のゲートよりもはるかに複雑なロジックを実装できます。

  3. 開発のしやすさ。小さな問題を除くすべてのロジックを定義するよりも、実行可能コードを書く方が簡単です。控えめなマイクロコントローラープロジェクトでも、数千行のコードがあります。同等のロジック定義の開発には、はるかに時間がかかり、デバッグと検証がはるかに困難になります。

  4. 消費電力。FPGAは、マイクロでは処理できない高速動作(マイクロを使用しない場合)を対象としているため、低電力用に最適化されていません。そのため、一部の低電力アプリケーションには適していません。一部のマイクロは1 µA未満のスリープ電流を持ち、低速クロックレートでわずか数µAで動作できます。これを実行できるFPGAを見つけてください。

マイクロと比較したFPGAの主な利点は、FPGAが高速であり、より多くのことを並行して実行できることです。それ以外は、むしろマイクロを使用します。そのため、設計プロセスでは、通常、マイクロから始めて、実際に速度および/または同時高速動作が本当に必要なときに、しぶしぶFPGAにアクセスします。その場合でも、FPGAには速度が重要な部分のみを実装し、低速制御機能などをマイクロに残します。


2
「それでも、FPGAには速度が重要な部分のみを実装し、低速制御機能などはマイクロに残します。」それは、FPGAの開発が苦痛だからですよね?
Utku

2
@Utku:はい、それは上記の理由3です。ただし、理由1-2も通常当てはまります。FPGAは、同じタスクのマイクロほど費用対効果が高くありませんが、そのタスクがマイクロではできないほど高速な要件がある場合除きます。
オリンラスロップ

4
この答えがCPUユーザーの観点から書かれていることは簡単にわかります。「本当にスピードや同時高速動作が必要な場合、しぶしぶFPGAにアクセスしてください」。彼らはそうではないという悪いです。FPGA上でCPUを使用することさえ考えないアプリケーションがあります。
スタンリ

26
私が通常説明する方法:CPU上で並行して物事を行うことは困難であり、FPGAで物事を連続して行うことは困難です。
ベンジャクソン

14
FPGAについて覚えておくべき1つの大きなこと:ロジックの再構成可能性には代償が伴います-FPGAが実装する同等のロジックは、FPGA自体よりもはるかに複雑ではありません。ルックアップテーブル、ルーティングマトリックスコンポーネントなどはすべて、ハードロジックの同等の実装よりもはるかに多くのシリコン面積と電力を消費します。これは、マイクロコントローラ、汎用CPU、およびFPGA自体で実行されるのと同じ機能をシリコンで直接構築するよりも、FPGAがすべてのパフォーマンスメトリック(アクティブおよびアイドル消費電力、密度、クロック速度など)で劣ることを意味します。
alex.forencich

45

ここでは詳しく説明していませんが、プロセッサまったく異なる方法でFPGAが使用され、動作することを区別しています。

FPGAは、まったく同じタスクを何度も何度も繰り返すのが得意です。たとえば、ビデオ、オーディオ、またはRF信号の処理。または、イーサネットパケットをルーティングします。または、流体の流れをシミュレートします。大量の同じ種類のデータが非常に高速でスローされ、すべて同じ方法で処理したい状況。または、同じアルゴリズムを繰り返し実行したい場合。FPGAには実際に開始および停止する「タスク」がありません[1]。その全ジョブは、オンになっている限り、取得したデータに対して同じことを行うことです。それはギアを変更せず、他に何もしません。それは究極の生産ライン労働者です。同じことを、可能な限り高速で、永久に繰り返し実行します。

一方、CPUは柔軟性の縮図です。それらは何でもするようにプログラムすることができ、同時に複数の異なることをするようにプログラムすることができます。開始と停止を行うタスクがあり、ギアを変更し、マルチタスクを行い、機能を絶えず切り替え、変更しています。

FPGAとCPUはまったく逆です。CPUの必需品は時間です-それはより速く物事を成し遂げなければなりません。アプリケーションの実行速度が速いほど優れています。

FPGAの商品はスペースです。FPGAは非常に大きく、必要なタスクを実行するために使用できるゲートは非常に多くあります。ほとんどの場合、問題は速度よりもサイズが大きい[2]。

FPGAをCPUのように動作させることができます。CPU IPコアをFPGAに配置できますが、他の人が説明している理由のために正当化するのは非常に困難です[3]。FPGAとCPUは正反対であり、どちらも独自の長所と短所を持ち、結果として独自の場所を持っています。


ノート:

1)FPGAはさまざまなタスクを実行するように設計できますが、それでも事前に設計された特定の数になります。

2)速度もFPGAの設計仕様です。速度とサイズのトレードオフです。

3)CPUをFPGAに配置することは比較的頻繁に行われますが、特定のアプリケーションに応じて、ケースバイケースで行われます。たとえば、本当に小さなマイクロコントローラーが必要で、FPGAのスペースが余分にある場合。

そして最後に、この答えは非常に単純化されています-FPGAは非常に多様で複雑な方法で使用され、これは一般的な使用方法の非常に簡単な概要です。


1
「またはイーサネットパケットをルーティングします。または、流体の流れをシミュレートします。」私の知る限り、前者にはASICが(少なくとも大量生産では)通常使用され、後者はGPUがより高速、安価、低消費電力で、より簡単にプログラムできます。
reirab

1
@reirabこれらはFPGAがうまくできる種類の操作の例であり、FPGAを個人的にコーディングした両方のアプリケーションであるために思い浮かびました。猫の皮を剥ぐ方法は複数あります。デバイスの選択は、多くの設計要因に依存します。
スタンリ

5
低消費電力と限界生産コストを削減するために、FPGAがASICでできることはすべて@reirabです。FPGAの利点は、ASICの初期費用がはるかに大きいため、プロトタイピングと少量生産にあります。後者は、デザインが完成し、多くを作成している場合にのみ意味があります。
ダン・ニーリー

CPUをFPGA内に簡単に実装できることを考えると、CPUがFPGAよりも柔軟であると主張するのは奇妙です(CSの本格的な学生なら、少なくとも1回はそれを行うべきです)。FPGAはCPUよりもはるかに低い概念であるため、それらを直接比較することはあまり意味がありません。
Voo

この答えは本当に気になります。「CPUの商品は時間です」、「FPGAの商品はスペースです。」え?ASICとCPUは正反対であり、FPGAは真ん中にあり、両方の世界の最高と最悪の両方を獲得しています。
44分

20

Olinが言うように、マイクロのようなものは多くのタスクに対してより効率的であり、FPGAが現れる場所であればどこでもマイクロを使用することがほとんど常にあります。使用されるシリコンの面積(非線形の方法でコストに変換されます)と消費電力ははるかに少なくなります。そのため、FPGAに「ソフト」MCUを実装することは珍しくありませんが、そのようなマイクロのコストとパフォーマンスは圧倒的です。

一部の最新のFPGAには、ユビキタスARMシリーズなどの1つ以上の「ハード」コアが含まれています。また、ゲートからメモリを作成するのは本当に非効率的であるため、専用のメモリブロックが含まれている場合があります。32ビットのマイクロコアは、一般的なFPGAのシリコン領域のごく一部を占有するため、相対的なコストを把握できます。

開発は非常に難しく、IPは、LCDコントローラー、PCIインターフェース、イーサネットMACなどのマイクロおよび専用のSOCソリューションほど自由に利用できない傾向があります。その理由の1つは、HDLロジックの説明を公開することで、デザインのインスタンス化だけでなく、デザインを転送していることです。もう1つの理由は、パフォーマンスがFPGAのロジックのレイアウトに依存するため、開発中に多大な労力が必要になることです。

さらに複雑なのは、ほとんどの複雑なFPGAがコンフィギュレーション用のRAMベースであり、プロセスコストにより、ボード上のMCUのコンフィギュレーションおよびプログラムメモリを保存するために外部不揮発性メモリが必要になることです。このメモリは、電源投入時にRAMにロードする必要があります。

FPGAはツールボックス内で非常に便利なツールですが、MCUやASICを近いうちに普遍的に置き換えることはありません。


10

シリコンをジョブに最適に使用するのはASICであり、無駄はありませんが、学習曲線、NRE、および柔軟性が非常に大きくなっています。

チップに柔軟性を組み込むには2つの方法があります。a)スペースが最適化されたALUを使用し、保存されたデータで何度も繰り返し使用します。これはMCUと呼ばれ、「何もしていない」シリコンの広大な領域、プログラムメモリ、ユニット間を走るワイドバス、およびバスアクセススイッチが必要です。b)乗算器、小さなRAM、シンプルなCPUなど、スペースが最適化されたオプションのオプションを備えた、きめ細かいロジックを備えています。これはFPGAと呼ばれ、「何もしていない」広大なシリコン領域、プログラム可能なスイッチ、接続ラインが必要です。

これらの構造では、MCUはシリアルチャンクに分解できるタスクに最適に機能し、FPGAは高速並列動作を必要とするタスクに最適に機能します。アプリケーションが重く、コストがシリコンコストに支配される場合、2つのタイプが自然に使用される方法です。

アプリケーションが軽量で大量にある場合、コストはシリコンではなくパッケージングに左右され、どちらのタイプも実行可能です。アルテラには、非常に小さな超低消費電力のFPGAがあり、1ドル相当のMCUと競合します。

少量のアプリの場合、開発コストが支配的となる傾向があり、速度があると仮定するとMCUが勝ちます


9

消費電力とシリコン使用率の観点から、FPGAはマイクロプロセッサと比較して非常に劣っています。

FPGAは、ロジックコンフィギュレーション回路のシリコン領域の多くを、マイクロには適用されないものを消費します。マイクロプロセッサの専用実装で必要とされるよりも多くの相互接続が利用可能でなければなりません。

FPGAは、ロジックが効率的に実装されていないため、マイクロプロセッサなどの専用ASICよりも多くの電力を消費します。

FPGAに実装できるすべての機能は、専用のASICでより効率的に、安価に、低消費電力、小さなボードスペースなどで実行できます。これは、ボリュームがNREを相殺するのに十分な大きさであると仮定しています。


目標がマイクロプロセッサの機能セット全体を実装することである場合、必ず。特定のタスクに取り掛かると、マイクロコントローラ内の多くの無駄なシリコンも特定できます。おそらく、暗号化エンジンはプロジェクト内の無駄なスペースです。またはCAN周辺機器?それとも浮動小数点ユニットですか?FPGAの最適な使用率は低くなりますが、マイクロコントローラーのように広い領域で0%の使用率が低下することもありません。(一方、クロックゲーティングを用いて、大規模回路の0%使用率を有する電力の観点から非常に望ましい)
ベンフォークト

8

マイクロプロセッサベースのdsystems、およびその後のマイクロコントローラは、その中の個々の回路の多くを使用して、さまざまな時間にさまざまなタスクを実行できるため、膨大な機能を実現できました。1976年に設計されたアーケードマシンのタンクと、世界で2番目のマイクロプロセッサ制御のゲームマシンであるAtari 2600で実行されるゲームCombatとを比較することは有益だと思います。タンクのようなゲームを最小限のコストで実装する。さまざまなROMカートリッジを挿入することでさまざまなゲームをプレイできるという事実は、素晴らしいボーナスでした。

ゲームTankでは、2人のプレイヤーが戦車を画面上で動かし、お互いに射撃を行うことができます。各戦車のXおよびY位置の「スリップ」カウンター、各プレイヤーのショットのXおよびY位置、各プレイヤーの角度と各プレイヤーのショットの角度のアップ/ダウンカウンター、各プレイヤーのスコアのカウンター、XおよびYラスタービーム-位置カウンタ、およびそれらの上にある多くの制御回路。ROMからプレイフィールドデータを取得して表示するハードウェアと、2つのプレイヤーの戦車の形状とROMからスコアを取得して表示するハードウェアがあります。

Atari 2600には、2つのプレイヤーオブジェクト、2つのミサイルオブジェクト、および戦闘では使用されないが他のゲームで使用される「ボール」と呼ばれる1つの追加オブジェクトの水平位置用のスリップカウンターがあります。プレーヤーオブジェクトごとに、8ビットラッチに保存されたパターンを出力するハードウェアと、各プレーヤーの「遅延」8ビットラッチが出力され、他のプレーヤーの形状が更新されます。また、水平ビーム位置カウンターと、スキャンラインごとに2回画面に出力される20ビットのプレイフィールド型ラッチがあり、右側のコピーが繰り返しまたは左側の反射として表示されます。衝突を検出するためのハードウェアがありますが、それらの結果として何もすることはありません。しませ オブジェクトの垂直位置、ラスタービームの垂直位置(!)、またはスコアの維持、スコアの表示、ゲームの期間などに関連するハードウェアはありません。

2600でハードウェアが省略されている機能はすべて、カートリッジ内のソフトウェアによって処理されます。各オブジェクトの垂直位置をスキャンラインごとにラスタービームの位置と照合するだけでよく、プレーヤーのスコアと残りのゲーム時間をフレームごとに最大1つ更新するだけでよく、プレーヤーのスコアはプレイフィールドの上のスキャンラインに保存されますそのため、プレイフィールドなどで使用されているものと同じハードウェアを共有できます。

FPGAに「タンク」のようなゲームを実装するための通常のアプローチは、1976年のアーケードマシンとほぼ同じ方法で、異なる機能に別々の回路を使用することです。このようなアプローチは機能しますが、かなりの量のハードウェアを使用します。マイクロプロセッサベースのアプローチでは、交換するハードウェアよりも回路が少ないマイクロプロセッサを追加する代わりに、ハードウェアの半分以上を削除できます(2600は、タンクよりもはるかに洗練されたゲームを実装できます。マイクロプロセッサを使用しなかった場合)。

FPGAは、多くの単純なタスクを同時に実行できるデバイスが必要な場合に優れています。マイクロプロセッサベース(またはマイクロコントローラベース)のシステムは一般に優れていますが、実行する必要のあるタスクが多くあり、同時に処理する必要がない場合は、少量で簡単に使用できるためです。多数の異なる目的を達成するための回路。


地雷も置けませんか?? ;-)
スコットセイドマン

@ScottSeidman:アーケードマシンには、配線された位置にいくつかの機雷があり、Xとして描かれました。2600が両方のプレイヤーと両方のミサイルを表示しながら地雷をXとして表示することは非常に困難でした。鉱山が60Hzでちらつくことを気にしない場合、後で発見されたいくつかのトリックを使用して可能だったでしょうが、より多くのコードを必要とするでしょう(COMBATは、ほぼ完全な2Kカートリッジです-未使用の2バイト$ FFFE / FFFFのBRK / IRQベクトルは、2バイトのテーブルを保持するために使用されます!)。
supercat

戦闘でショットの跳ね返りなど、他のオプションのいくつかを放棄しても構わないと思っていた場合、Combatがフラッシングスクエアとして実装することはおそらく可能でしたが、Joe Decuir(プログラマー)はプレイ可能なオプションを選択するのに良い仕事をしたと思います。私の唯一の問題は、爆撃機が4xスプライトではなく2xであった場合、biplane-vs-bomberはもっと面白かったかもしれないということです。
supercat

5

それは完全にコストです。マイクロが30セントという低価格の場合、安価なFPGAは5ドルの領域にあります。コストはそれほど高くないように思えるかもしれませんが、10ドルで売るために何百万というおならのノベルティグッズを作ると、FPGAの価格が最終的な利益を失います。


6
コストは確かに1つの問題ですが、違いは完全にコストであるということは、すべてのマイクロをFPGAで置き換えることができると考えるのと同じくらい単純なことです。
オリンラスロップ

@OlinLathropコストが問題にならなければ、マイクロができることなら何でもFPGAで実行できます。これは、ソフトマイクロコントローラーコアを保持するFPGAの能力で示されています。問題は、そのようなコアを保持できるFPGAは少なくともコアのエミュレートされているマイクロよりも桁違いに高価であることです。
vini_i

コストはユニットあたりの価格よりもはるかに多くのことを意味しますが、この分析に取り入れたいのはそれだけです。
スコットサイドマン

2
あなたが意図的にポイントを見逃しているふりをしているのか、それともただ密かになっているのかはわかりません。いずれにせよ、あなたは誰も言っていないことに反応しています。FPGAのコストが高く、そのコストが問題であることに全員が同意します。しかし、繰り返しますが、それが唯一の問題であると主張するのは間違っています。無料のマイクロとFPGAを大量に提供したとしても、多くのデザインでFPGAを介してマイクロを使用する重要な理由がまだあります。
オリンラスロップ

4
@sleb:いいえ、コストの違いはボリュームだけではありません。提供されるゲートごとに必要なシリコン面積は、マイクロコントローラのようなカスタムチップよりもFPGAの方が大幅に大きくなります。ゲート相互接続レベルでのすべての構成可能性は、実装にシリコン領域を必要とします。大量生産では、チップのコストはすべてシリコン面積にかかっています。
オリンラスロップ

5

他の非常に良い答えに追加するために、FPGAの採用もドメインの問題だと思います。たとえば、ニューロモーフィックデバイスの場合、並列処理が非常に必要であるため、FPGAボードは非常にユビキタスになりつつあります。 FPGAの。

ニューロモーフィックデバイスで見られる傾向を推定すると、並列処理に基づいている、または非常に必要な他の分野では、おそらくFPGAがより多く採用されると想像できます。そのため、FPGAは一般消費者向け製品ではどこにでもあるとは限りませんが、ニューロモーフィックデバイスで現在発生しているように見えるため、特定のドメインで使用することができます。


これは事実かもしれませんが、完全な答えを得るには十分ではありません。おそらくコメントとしてより良いものになるか、それを拡張することができます。
ヌル

これは質問に対する答えを提供しません。著者に批判や説明を求めるには、投稿の下にコメントを残してください。
ファンキーガイ

3
@Funkyguy、これは質問に答えます。彼らは基本的に、一般的な民生用アプリケーションはFPGAの強力なスーツである並列性を必要としないため、FPGAは遍在していないと言っています。
スタンリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.