FPGA 使え、って社長に言われた。さぁ、どうする? (2)

前回までのお話

 FPGA 事業部の立ち上げに伴い課長に昇進。うれしくもあるが FPGA について余り知らない Y 君。FPGA についてネットで調べると「わからないことはわからない」ということがわかったぐらい。ならば、餅は餅屋。FPGA に関する知識と希望を求めて、大学時代の研究室を訪れることにした。(前回の話はこちら

FPGA は神チップ?

Y 君:FPGA について誤解がある、というお話ですが一体何が誤解なのでしょうか。

先生:ん~、やっぱり、次回までの宿題、にしようか。

Y 君:そんなことは言わずにお願いします。自分の将来は先生にかかっているんです。

先生:いや、それは大げさだし、他力本願すぎるだろう。

Y 君:自分の中では、神様、仏様と同じレベルです。

先生:調子いいなぁ。研究室選びのときは失敗したと言っていたのに。まぁ、いいか。では、ヒントをあげるから一緒に考えていこう。

Y 君:ありがとうございます!

先生:それでは、調べてきたということだけど、FPGA の特性を整理するところから始めよう。FPGA の特性をあげてもらえるかな。

Y 君:はい。インターネットで調べた限りですが、FPGA の特徴をまとめるとこんな感じです。ホワイトボードに書きます。

・様々な回路設計をその都度、プログラムを用いて FPGA に実装できる
  (配線を繋ぎ変えて任意の回路機能を実現できる) 。
・消費電力が低い。
 ・数十ミリワットの電力で動作する FPGA がある。
・十分な演算加速 (高速計算) ができる。
 ・10,000 個を超える高性能乗算器 (DSPユニット) を持っている。
 ・乗算器は IEEE 標準 (IEEE 754) の単精度計算に対応しているものもある。
 ・オンチップメモリのフル活用で毎秒10テラバイト超のデータ読み書きが可能である。
 ・高帯域メモリ (HBM: High Bandwidth Memory) も利用できるようになった。
・FPGA はチップ外のデバイスに対して豊富な入出力を用意している。
 ・電気信号を受け取り、演算を実行するまでの遅延時間が小さい。
 ・1 クロック当たり 1000 ビット超の入出力を扱える FPGA もある。
 ・58.0 [Gbit/s] をサポートする高速トランシーバを備えている。
 ・100 Gbit イーサネット、150 Gbit Interlaken にも対応している。
・プロセッサとの連携が容易
 ・ARM アーキテクチャや Intel CPU を組み込んだ FPGA がある。
 ・FPGA 上に任意の CPU を設計できる。
・最近は、AI 向けの特別な演算回路が追加されたデバイスもある。

先生:そうだね。インターネットにある Web ページやブログなどで書いてあることをまとめるとそうなると思う。

Y 君:間違ってなくてよかったです。

先生:でも、この全部の特徴を備えた FPGA があったら凄いよね。数十ミリワットの消費電力で、毎秒 10 テラバイト超のメモリアクセス可能で、10,000 を超える浮動小数点演算のハードウェア IP が組み込まれていて、外部との強力な通信インタフェースを備えている FPGA。

Y 君:それはもう神チップですね。

FPGA の消費電力から考えてみよう。

先生:FPGA は神チップか。でも、そんな万能チップは聞いたことがないよね。

Y君:確かに。ただ、論文やブログの記事を読んでも間違っているとは思えないんです。

先生:うん。Y 君の調べたどの情報も正しいと思うよ。

Y 君:どういうことですか?

先生:どの情報も噓は言っていない、ということ。例えば、動物園に行ったとしよう。動物園の飼育員が「お手元の双眼鏡で象の顔を見てください」って言うよね。そのときほどんどの人が「鼻が長いね」って答えると思う。でも、尻尾がかわいい、なんて言う人はあまりいない。つまり、ある一つの性能に集中した、もしくは絞り込んだ議論をしていて、他の性能については意図的かはともかく無視しているだろう、ということだ。

Y 君:つまり、一つの性能だけを議論していて、FPGA の性能を全体のバランスを睨みながら議論をしていない、ということでしょうか。うーん、わかったような。わからないような。

先生:それでは別の角度から話そう。そうだな、消費電力から話を始めよう。ただ、FPGA の消費電力はなかなか定義しにくい。加えて、FPGA メーカが消費電力の具体的な数値を示した公開情報も少ないため、よりわかりにくくしているかもしれない。

Y 君:消費電力から始めることに異論はありません。そして、確かに検索して FPGA の消費電力を調べるのは難しかったです。FPGA の消費電力についてあまり情報がない、というのは何故でしょうか。

先生: FPGA の消費電力を決定する要因として、動作周波数、FPGA 上で利用された演算回路量、FPGA 上の実装回路の配置配線、内部メモリのアクセスパターン、使用した入出力数、などがある。つまり、消費電力に影響を与える変数が多すぎて、定式化が難しい。例えば、ある演算に対する消費電力量を示しても、他の環境で同一の消費電力量になるとは限らないからだ。

Y 君:確かに。示された値が異なると会社では困りますね。その FPGA メーカにクレームを入れることになると思います。ただ、標準的な消費電力量について議論ができない、となるとこれで話が終わってしまいますね。

先生:それでも、FPGA ブログとしては説明しなければならない。

Y 君:FPGA ブログとしてですか。

先生:FPGA ブログとしてだ。

Y 君:では、お願いします。

先生:そこで、少し斜め上の方向から FPGA の電力を見てみる。Intel というメーカの FPGA になるけど、このメーカの公開資料「Intel Stratix 10 GX/SX Device Overview (S10-OVERVIEW | 2020.09.28)」の最初のページにこんな一文がある。

Hard fixed-point and IEEE 754 compliant hard floating-point variable precision digital signal processing (DSP) blocks with up to 10 TFLOP compute performance with a power efficiency of 80 GFLOP per Watt (in Intel Stratix 10 GX/SX Device Overview (S10-OVERVIEW | 2020.09.28))

Y 君:IEEE 754 は、浮動小数点算術に関する IEEE 標準に関することだから、要約すると、Intel の FPGA は、IEEE 754 に準拠した DSP ブロックを備えており、10 TFLOPS の性能かつ 80 GFLOPS/W の性能対消費電力を持つ、ということでしょうか。

先生:その通りです。

Y 君:Watt は電力のワットで、1 秒あたりの消費電力ですよね。FLOPS というのも何かの単位と思いますが何の単位でしょうか。

先生:FLOPS は、Floating-point Operations Per Second の略で、1 秒間あたりに浮動小数点演算を何回できるか、という能力を表すための指標だ。10 TFLOPS なら 1 秒間に 10 兆回計算するということだね。

Y 君:なるほど。そうすると、演算加速、という特徴については十分にクリアしていますね。

先生:そうだ。そして 80 [GFLOPS/W] と言っている。

Y 君:はい。これも非常に効率の良い性能ではないでしょうか。

先生:そうだね。さて、10 [TFLOPS] の演算性能を 80 [GFLOPS/W] の電力効率で実現すると考えると、消費電力は 125 [W] と計算できる。この消費電力は小さいかな?

Y 君:あれ。FPGA の消費電力は数十ミリワットという記事を見たのに。1000倍以上違いますね。

先生:うん。これが誤解ということ。数十ミリワットで動作する FPGA も存在する。でも性能はこれと比べてとても低いものになるはずだ。いろいろな種類の FPGA があり、その機能や性能は大きく異なっている。だから、優れた性能や機能の情報だけを寄せ集めても意味が無いんだ。

Y 君:なるほど。そうすると、私が挙げた特徴は正しかったけど、混ぜるな危険、ということですね。

先生:そうだね。ただ、混ぜるな危険と言わずに、ぬえとかキメラとか、実際には存在しないものと言って欲しかったかな。

Y 君:すいません。

人間は凄いんだよ。

先生:さて、ちょっと雑学的な話も交えておこうか。1 ワットというとあまり馴染みがないかもしれないけど、心臓の仕事率がおよそ 1 ワットと言われている。

Y 君:え、そうなんですか。人間が 1 ワットですか。

先生:個人差はあるけど、日本医師会のデータを参考にすると、1 分間の心拍数が 60 ~ 80 回、その 1 回の拍動による血液量が約 60 mL となっている。ここでは心拍数は 70 回として計算しよう。血圧は、日本人間ドッグ協会の血圧値の基準範囲 (収縮期血圧 129 mmHg 以下、拡張期血圧 84 mmHg 以下) を参考にして、うん、間をとって 100 mmHg としよう。これらの値から仕事率を計算すると 0.933 [W]となる。

Y 君:凄い!約 1 [W] で動いているって、人間って凄いんですねぇ。

先生:まぁ、心臓だけで動いている訳ではないけれど効率が良いのは確かだよね。こういう比較をしないと人間が凄い、って思えないのも悲しいけど、生物の長年の進化には敵わないよな、と思う瞬間でもあるよね。

FPGA の種類と規模 (その1)

先生:さて、話を FPGA に戻そうか。Y 君が学生だった頃にも FPGA の種類は沢山あったけど、この 10 年で FPGA の種類は格段に増えているんだ。超省電力タイプ、大規模計算用途、超高速通信特化型、SoC (FPGA+CPU) タイプ、制御用途向け FPGA、とかだね。最近では、AI 用というのも増えたか。

Y 君:本当に多いですね。

先生:そうなんだ。だから、Y 君が挙げてくれた FPGA の特徴は全て正しいけど、挙げてくれた全ての特徴が単一の FPGA チップで実現されているわけではないんだ。

Y 君:それでは、改めて、どのような FPGA があるのか教えて頂けないでしょうか。

先生:そうだね。ただいろいろな FPGA を比較すると大変だから、今日はロジックの観点でまとめておこう。FPGA は、Xilinx というメーカが販売している FPGA を例に説明することにしよう。

Y 君:はい。Xilinx は FPGA 市場の最大手なのでそれは助かります。ただ、Virtx とか Kintex とかいろいろな種類がありますが、それら全てですか。

先生:本質的に大きな違いはないから全部ひっくるめて比較しよう。FPGA の基本演算素子 (LUT) 数、演算の中心となる乗算器 (DSP ユニット) 数、そしてオンチップメモリ (BRAM) の総量を整理してグラフ化すると・・・、こんな感じになるかな。

図1:Xilinx 社の 8 種類のシリーズの各 FPGA をプロットしたグラフ。基本演算素子数を横軸、DSP ユニット数を縦軸、オンチップメモリ量をバルーンサイズで示している。Ultrascale+ シリーズは BRAM だけでなく URAM も備えているため、BRAM と URAM の総量をバルーンサイズで示している。

Y 君:随分と綺麗な右肩上がりなんですね。ちょっと驚きました。

先生:そうだね。右肩上がりなんだよね。バルーンの大きさはどうかな?

Y 君:バルーンも右肩上がりで大きくなっている気がします。

先生:そうなんだ。つまり、このプロットから言えることは、基本演算素子数、DSP ユニット数、オンチップメモリ量の何れも、多い場合は全て多いし、少ない場合は全て少ない、ということだ。

Y 君:ずいぶんとシンプルな結論ですね。わかりやすくて良いのですが・・・。ところで、このプロットから他にどんな特徴がわかるでしょうか。

先生:例えば、バルーンが小さすぎて見えないけど、Spartan7 の XC7S6 という最小チップは、 (#LUT, #DSP, #BRAM) が (3750, 5, 10) なんだ。

Y 君:赤丸で囲ってもらないとこれは見えないですね。

先生:ごめん。ただ、バルーンサイズを恣意的に変えたくないから心の眼で見てほしい。次に、基本演算素子数が最大のデバイス (Virtex Ultrascale+ VU19P) を見てみると、 (#LUT, #DSP, #BRAM) は (4,085,760, 3,840, 2,160) となっている。

Y 君:3,750個と400万個超えって、1000倍以上も違うじゃないですか。

先生:そうだ。そして、VU19P は更に URAM というオンチップメモリも持っている。ここで、1000倍、と聞いて何か思い出さないかい?

Y 君:あ。そういえば消費電力でも 1000 倍以上の違いがあった気が・・・。

先生:よく気がついたね。つまり、そもそもメーカも違うし単純比較はできないけれど、FPGA のサイズと消費電力の大小については相関があるんだ。つまり、消費電力を抑えたいなら小さい FPGA を使う方が良いということ。もちろん、他の要素も大きく関係するから一概には言えないけど、目安にはなるはずだ。

Y 君:わかりました。製品化の際には留意しようとおもいます。

FPGA の種類と規模 (その2)

先生:折角なので、図 1 に再登場してもらいもう少し議論を続けよう。ただ、図 1 は両方の軸がログスケールでわかりにくかったから、ちょっと表示方法を変えて見てみよう。おおよその傾向はわかったと思うのでメモリのバルーン表示も抜いてプロットだけになおそう。すると、このように再表示できる。

図 2: 図 1 の縦軸を標準スケールに戻し、バルーン情報をなくしたプロット。DSP ユニットを急増した Vietex UltraScale+ とロジックを中心とした Ultrascale Virtex のマーケティング戦略の違いが垣間見える。

Y 君:図 1 と図 2 では大分違う印象を受けます。図 2 は、明らかに 2 つの成長曲線があって、一つは Kintex Ultrascale から Virtex UltraScale+ へとつながる曲線、もう一つはVirtex Ultrascale より大きな基本演算子数に続いていく曲線だと思います。

先生:うん、そのとおりだね。このグラフを見ると、FPGA の LUT、BRAM、DSP などをどのような割合にして FPGA を作っているのか試行錯誤している様子がよくわかる。7-Series では迷いが見られたけど、現在はある程度方向が決まった、ということだろうね。

Y 君:そういうもんですか。

先生:そういうもんです。もし気になるなら、この図 1 と図 2 を持って帰ってよく見直すといいだろう。いろいろな情報が見えてくると思うよ。

Y 君:わかりました。

先生:それでは、今日の授業はおしまい。会社に帰って頑張って報告書を書いてくれたまえ。

Y 君:え、まだ、FPGA の何が良いかきちんと伺ってないのですが・・・。

先生:仕事は仕事。ここまで説明したんだから、少しは自分で考えてみなさい。

Y 君:わかりました。先生、長い時間ご説明いただきありがとうございました。

FPGA を分かった気にはなったけど・・・。

はぁー、っと大きなため息をつく Y 君。FPGA についてわかったような、わからなかったような。ただ、アプリケーション選定においてすべきことや FPGA そのものについての誤解を改められたことは幸いだった。ただ、帰ってからやらないといけないことは多い。そもそも、どんな報告書を書くべきか。

関東平野に沈む夕日に包まれながら、東京へ向かって電車は走っていく。

( 次回へ続く )

筑波大学 山口佳樹

タイトルとURLをコピーしました