4月17日、日本アルテラは、IntelのPSG(Programmable Solution Group:旧Altera)による、自動運転ソリューションに関する説明会を開催した(Photo01)。

Photo01:Business Planning & Marketing Manager, Automotive Business Group, Programmable Solution Groupの生嶋孝之氏。氏の所属はIntel Japanではなく米国Intelである

まず概況であるが、2016年と2025年の自動運転に関する要件をまとめたのがPhoto02である。自動運転の要件は、2025年あたりだと無人で走行可能なSAEのレベル5(完全自動化)がターゲットに入ってくるが、そうなると演算性能は50~100TFlops、カメラの画素数も10億画素オーダー、蓄えられるデータもテラバイト級になるし、安全機能も現在のFail Safe(故障が起きたら止まる)からFail Operation(故障が起きたら安全なところまで避難する)になる。そのため、さまざまなMCUを組み合わせる現在のECUでは構成的に数が膨大になり、これらをさらに統合したチップを、(それでも)50くらい搭載する、といった話になる。これを実現するためのカギを握るのは、演算性能と省電力性、リアルタイム性、安全/セキュリティということになるのは、昔から余り変わっていない(Photo03)。

Photo02:Bandwidthが100Mbps台で足りるのか? というのはちょっと思った

Photo03:この話そのものは別に珍しくない

これを実現するためのソリューションとして、2017年のCESで発表されたのが「Intel Go」である(Photo04)。このIntel Goに向けたFPGAのメリット、として掲げられたのが以下の図の5項目である。

Photo04:ちなみにIntel Goは自動運転向けの「開発」プラットフォームであって、量産車が必ずしもIntel Goを搭載するかというと、また別の話である

Photo05:これももはや目新しいとはいえないスライドである

具体的にどんな使い方か? というと、物体認識はArria 10を使って実施し、その次の運転計画の立案や実際の操縦はAtomやXeon、あるいはArria 10を使って、という形がまずサンプルとして示された(Photo06)。ここでFPGAが有利なのは、例えばセンサフュージョンならば複数の入力を本当にリアルタイムで並列(パラレル)処理できることである(Photo07)。これを本当にパラレルで実施できるのが強い部分で、スループットとレイテンシの両方で、AtomやXeonを使うよりもメリットがあるとする。

Photo06:必ずしも画像とは限らないので、まずセンサフュージョンの形でデータを取りこみ、プリプロセッシングした上で適切な方法(CNNなどを使うかどうかはケースバイケースであろうが)を使って物体の推定を行い、それを後段に渡すという仕組みだ

Photo07:もちろんファンクションの処理に手間取ればレイテンシは増えるが、それでもCPUでやるよりは桁違いに高速である

また自動運転のレベルに応じて、扱うべき画像やセンサのデータ量がどんどん増えてゆく。Photo08は、カメラ映像の例だが、レベルが上がるごとにカメラの解像度と数が増えてゆく関係で、レベル5だとカメラだけで20Gbpsの帯域が必要といった話になる。こうした場合でもFPGAはスケーラブルに対応(1つのArria 10でフルHDカメラを最大16個接続可能)できるという話だ。またセンサフュージョン(Photo09)では、異なるフォーマット、I/F、データレート、抽象度のデータを混在させるという際には、FPGAを使うほうが便利という話である。

Photo08:素朴な疑問として、そもそもC-PHYやらD-PHYやらを使ってRawでカメラを繋ぐのか? という話があるにはある

Photo09:これはまぁその通りで、同じことは汎用CPUでもできるが、I/Oのオーバーヘッドも大きいし、性能が下がる。センサ類が標準化されてしまえば固定機能で持ってもいいのだろうが、まだセンサが、毎年のように新しく高機能なものが出ている状況では、柔軟性の高いFPGAの方が圧倒的に有利である

そしてディープラーニングに関しては、これはもう汎用CPUよりもFPGAを使ったほうが圧倒的に有利(Photo10)なのは説明の必要もないところだ。もちろん、ネットワークを一からVerilogで実装していたら開発の手間が掛かって仕方が無いが、これに関してはフレームワークの形でIntelから提供されるので、アプリケーション開発者は端的に言えばVerilogを書かなくてもFPGAを使ってディープラーニングを実装できるからだ。

Photo10:左端の図はなぜ効率が良いか、である。CNNの場合、畳み込み→合計を繰り返すような処理となる関係で、汎用CPUだと畳み込み→メモリ出力→メモリから読み込み→合計→メモリ出力……、とひたすらメモリ入出力が発生し、これが性能と消費電力のボトルネックとなる。FPGAの場合、内部のメモリブロックを利用できるので、外部メモリアクセスが不要になり、その分効率化と性能アップが期待できる

ところでPhoto05に「Robust Security」という項目があったが、その実例がPhoto11となる)。既存のシステムの中には当然脆弱性を持ったものもあるだろうし、それを利用して侵入され、改竄とか不正データ生成などが行われているケースは考える必要がある。そこで、そうしたデータを基に自動運転の制御を行う前に、セキュアゲートウェイをFPGAで実装するというアイデアである。このセキュアゲートウェイがPacket Inspectionを行うことで不正パケットを排除し、正しいパケットだけを抜き出して処理、その結果は2つ目のFPGAを使って暗号化して、安全なネットワークに流すというものだ。

Photo11:Packet Inspectionはともかく、2つ目の暗号化はホストCPUでもいいのでは? という気はちょっとする