Ryuz's tech blog

FPGAなどの技術ブログ

FPGAユーザは少ないのか?

はじめに

今回はかなり憶測交じりの駄文回です。

当ブログでは FPGA の話を取り上げることが多いわけですが、それは筆者がプログラミングデバイスとして FPGA がとても面白い対象だと思っているに他ならないです。

もちろん私は Python でデータ処理することもあるし、C や Rust でマイコンのベアメタルを書くこともあるし、CUDA プログラミングなども楽しんでいます。それでもその中でやはり FPGA プログラミングは一味違う楽しさがあると思っています。

一方で、なかなか同じように FPGA プログラミングを楽しんでいる人に出会う比率は、CPU や GPU に比べてやはり少ないなと感じています。

当ブログも、普段 FPGA や RTL の話を書いてもアクセス数は大した数では無いのですが、稀に GPU とか Rust とかの話を書くとアクセス数が跳ね上がります。これはおそらく別に記事の内容が秀逸だとかそういうのでは一切なく、FPGAユーザーに比べて 分母が非常に多い という事に他ならない気がしております。

一部のニッチ層に刺さる優良記事よりも、万人がなんとなく楽しめる普通の記事の方がまあ需要があるというか、そもそも 日本中のFPGAが趣味な人が全員アクセスしてきてもそもそも大した数じゃないのかもしれない という身も蓋もない憶測すらあります。

ということで、その原因と、どうすれば FPGA ユーザーは増えてくれるのだろうというのが今回の駄文です。

そもそもデバイスがマイナーなのか?

そもそも FPGA 自体があまり製造されておらず、デバイスとしてニッチなのではないか? という可能性もあるのですが、私はこのようなことを調べる能力はあまりありません。

私の適当なフェルミ推定より、まだAIに聞く方がマシだろうという事で某AIに聞いて表にしてもらったのが下記です。

順位 カテゴリー 推定年間出荷数 主なプレイヤー / 補足
1 マイコン (MCU) 約300億個〜 ルネサス, ST, TI。圧倒的な生活基盤。
2 スマホ用 SoC 約12.5億個 Snapdragon, MediaTek, Apple Aシリーズ。
3 PC/サーバー用 CPU 約2.8億個 Intel Core, AMD Ryzen, EPYCなど。
4 FPGA (全種合計) 約1.8億〜2億個 AMD(Xilinx), Intel, Lattice, GOWIN, Efinix。
5 単体GPU (dGPU) 約4,500万個 NVIDIA GeForce, RT/H100, AMD Radeon。

まあ AI ですので盛大にハルシネーション起こしている可能性もありますが、一旦、これを信じてみることにします。

マイコンの数凄いなと思いつつ、とりあえず、GPU よりは数は出ているようです。

という事は FPGAユーザー数やFPGAコミュニティーが GPUのそれより多くても良さそうな気もしますが、そんなことは無いような気がしてます(体感)。

そもそもトップにいるマイコンユーザーやコミュニティーが、スマホやPC/サーバーのプログラマより多いかと言うのすら怪しい気はしていて、数で決まるなら、プログラマの大半は C/C++ や 組み込み Rust プログラマになってないといけない気がしますが、そんなことは無さそうです。

逆に、これらデバイスの数だけは沢山出ているデバイスのプログラミングをしている人たちはどこに生息しているんだろうかと、不思議に思ってしまいます(苦笑)。

プログラミングされないプログラマブルデバイス

この理由を少し考えて見るに、1つのデバイスの上で動くプログラムが固定されるケースが多いか否かがありそうな気がします。

スマホにせよ、サーバーにせよ、パソコンにせよ、ありとあらゆるアプリが共存しており、それらがとっかえひっかえ実行されています。 つまり、デバイス当たりのアプリ収納数が非常に多い気がしています。

一方でマイコンは、「書き換え寿命の短い内蔵フラッシュに一度だけプログラムを焼いて出荷」と言った使われ方はいまだに多く、FPGA もこれに近い使われ方が多いのではないかと想像します。

要するに 大量のデバイスを少数の人間が独り占めしてプログラミングしている というのが、マイコンやFPGA界で起こっていそうなことな気がします。

再構成可能なプログラマブルデバイスのはずなのに全然再構成されていないという由々しき事態です。

職業プログラマと趣味のプログラマ

上で「独り占め」と書きましたが、こう書くと美味しいものを数人が占めてるようにも聞こえますが、実際には趣味で楽しくプログラミングしている人間の比率も実は少ないんじゃないかなと想像してみました。

「仕事で仕方なくプログラミングしてるけど、会社を一歩出たらもうFPGAの話なんかしたくない」なんて人も中にはいるかもしれません。

「仕事終わったー、FPGA開発しよ」なんて人は実は少ないのかもしれません。お仕事だと守秘義務もあるでしょうしあまり表立った活動がなされないので、オープンな情報交換の起こるコミュニティーにはなりにくい側面があるかと思います。

という事でこれも AI に推測させてみました。

プロセッサ種別 プロ : 趣味 コミュニティの性質
CPU (汎用/Web) 7:3 分母が最大。初心者からプロまで層が厚い。
GPU (CUDA等) 9:1 圧倒的にプロ寄り。 学術・業務利用が中心。
FPGA (SystemVerilog) 8:2 プロの聖域だったが、最近趣味層が急増中。
マイコン (MCU) 5:5 趣味層が最強。 Arduino等の教育・工作需要。

おっと意外なことに GPU よりも趣味な人多い可能性をほのめかしてきました。

使いやすいプログラミングキットの不在

マイコン分野で趣味な人を増やしている要因に Arduino とか Raspberry PI とか M5Stack とかそういうのはある気がしています。

一方で、FPGA にはまだまだそういうものが不足している気はしています。

個人的には、以前 妄想 したように、Arduino 的にパソコンに繋いで VS Code からボタン一発で簡単実行できて、十分な拡張I/O と、CPUをアクセラレーションできるだけの簡単な通信I/Fを持ったボード作りたいなと言うのはあります。

なかなか手が出せていませんが。なんかメモリも高騰してるし安くて良い FPGA も絞り込み切れず、モヤモヤしております。

ベンダーの開発ツールが巨大なので F4PGA みたいな OSS に走るのがいいのかもですが、ベンダーの HLS の性能も捨てがたい。あ、好きなの使えるようにすればいいのか(笑)

おわりに

なんともとりとめもない駄文になってしまいましたが、他人とちょっと違うプログラミンを嗜んでみたいという超絶趣味な人に FPGA は本当にお勧めだと思っています。

正直 GPU より速いとか遅いとかどうでもよくて、CUDAプログラミングより楽しい側面だっていっぱいある というだけじゃダメですかね?(笑)

FPGA ユーザーが増えてくれると嬉しいなと思います。