Zynq-7000ならソフトウェアエンジニアでも、ハードウェアを活用したシステム高速化を容易に実現

デュアルコアのARM® Cortex®-A9プロセッサとFPGAファブリックを統合したXilinxの「Zynq®-7000 All Programmable SoC」の採用がオートモーティブを筆頭に広がっている。そうした躍進の陰には、設計支援やコンサルテーションを通じて顧客システムのTTM(Time-to-market)を支援する、Xilinxのアライアンスパートナーの存在がある。今号のLEADER'S VOICEでは、その最上位となる「プレミアパートナー」の称号を国内で唯一得ているOKIアイディエスを迎え話を聞いた。

メインイメージ
集合写真(左より)
ザイリンクス株式会社 マーケティング部 シニアマネージャー 神保 直弘 氏
株式会社OKIアイディエス 開発部 部長 山本 康雄 氏
ザイリンクス株式会社 グローバルセールス アンド マーケット ツール メソドロジー アプリケーション部 シニア エンジニア 黒田 成一 氏
株式会社 OKIアイディエス 開発部 第4チーム 長岡 俊一 氏
ザイリンクス株式会社 グローバルセールス アンドマーケット エンジニアリング本部 フィールド アプリケーション エンジニア 友杉 伸一朗 氏

オートモーティブ市場が活発化。ADASがキラーアプリケーションに

神保(Xilinx):今日は、XilinxのプレミアパートナーであるOKIアイディエスさんをお招きして、2015年3月に発表したXilinxの革新的ツールである「SDSoC™ 開発環境(以下、SDSoC)」を実際に使っていただいた感触を含めて、ソフトウェアエンジニア目線から色々とお話を伺いたいと思います。

山本(OKI):OKIアイディエスで開発のとりまとめをしています山本です。本日はお招きありがとうございます。

神保:OKIアイディエスさんとは、前身である沖情報システムズの頃からのお付き合いで、10年近く一緒にお仕事をさせていただいていますね。

山本:はい。当時、これから主流になっていくであろうFPGAの設計サービスを立ち上げたいと考え、XilinxさんのPCI Expressハードコアに特化した「iDMAC®」というDMAコントローラIPを開発しました。「Virtex®-5 LXTにiDMACを組み込めばPCI Expressを介してきわめて高いデータ転送を実現できます」という触れ込みで、Xilinxさんのご協力もいただきながらお客様にご提案して、ずいぶんとご好評をいただきました。その後、おかげさまでFPGAの設計サービス事業も順調に伸びています。

神保:OKIアイディエスさんは全世界で10社しか認定されていないXilinxのプレミアパートナーです。エンジニアの皆さんのスキルが高いだけではなく、Xilinxと共にマーケットの拡大にも努めていただいているので、安心してお客様にご紹介させていただいています。

山本:はい、とても多くのお客様とビジネスさせていただいています。分野としては基本的に全方位で対応していますが、画像処理、音声処理、通信制御関連のIP開発と、それらIPを使ったデザインサービスを提供しており、マーケットとしてはオートモーティブと医療機器に注力しています。

神保:Xilinxは2010年に、デュアルコアのCortex-A9プロセッサとFPGAファブリックとを統合した「Zynq-7000 All Programmable SoC」を発表しました。高度なシステムを高性能かつコンパクトに実現できるということで、市場での評価も高く、採用事例もかなりの数になっております。現在は、次世代システムの実現に必要な「スマート」、「コネクト」、「ディファレンシエイト」という三つのメッセージを掲げて、ビデオ/ビジョン、インダストリアルIoT(Internet of Things)、ADAS(先進運転支援システム)などを重点マーケットとして取り組んでいます。ソフトウェアプログラマブルなARM Cortex-A9プロセッサと、ハードウェアプログラマブルなFPGAファブリックとがワンチップに入っていることが「Zynq-7000」の最大の特徴で、ビデオ/ビジョンやADASのように、映像をリアルタイムで取得し、その映像をベースに高度な処理や判断をして、システムにフィードバックするような用途がひとつの典型になると考えています。具体的には、産業分野におけるマシンビジョンや防衛、ビデオ監視、高機能ドローンなどが挙げられます。

山本:OKIではXilinxさんがターゲットとする分野を見据えながら設計サービスに取り組んでいますが、なかでもADASをはじめとするオートモーティブは動きが活発だと感じます。OKIでも2年ほど前から、従来のDSPシステムのソフトウェア設計者を「Zynq-7000」の設計にシフトするなど、取り組みを強化しているところです。また、そうした背景を受けて、ADASに対応したFPGA IPを開発しているクロアチアのザイロン社(Xylon)の日本国内における独占使用契約を2014年12月に同社と締結しました。歩行者検出や車線検出に代表される同社のIPやFPGAデザインサービスは欧米のADAS市場で豊富な実績があり、ADASを手掛けられている国内のお客様にザイロン社のソリューションをご提案したところ、すぐに採用が決まったこともあります。

友杉(Xilinx):FAEの友杉です。OKIアイディエスさんと一緒にオートモーティブのお客様を回ることも多いのですが、このところ、お客様の要求仕様がすごく高くなってきているのを感じます。高い性能を得るために複数のプロセッサを組み合わせるヘテロジニアス アーキテクチャといったキーワードも頻繁に聞くようになってきました。従来、パフォーマンスを上げようとすればプロセッサのクロックを速くするという考え方が当たり前でしたが、消費電力や熱の問題が生じてしまいます。そこで、「Zynq-7000」のようなデバイスを使って、プロセッサやFPGAロジックをヘテロジニアスに結合して性能を上げていきたい、といった発想が生まれてきているように感じます。

システムレベル設計を支援するSDSoC開発環境が一般リリース

神保:ADASに代表される複雑な機能を「Zynq-7000」に実装しようとしたとき、課題になるのが開発効率です。Cortex-A9プロセッサで処理する部分とFPGAファブリックで処理する部分とをいかに切り分けるかという問題と、それらを高位言語でいかに効率よく記述するかという問題、そして、ハードウェア化された部分をどのようにして メインプログラムに組み込むのかという問題があり、開発ツールがきわめて重要になってきます。

黒田(Xilinx):Xilinxで開発ツールのプロモーションを担当している黒田です。いま神保から話がありましたように、ハードウェアとソフトウェアの両方が関係する「Zynq-7000」の開発はツールが鍵を握ると考えていて、「使いやすい」かつ「高機能」なツールをユーザーに提供できるよう、積極的な投資を行っています。まず、ハードウェアエンジニア向けに提供しているFPGAファブリック部分の開発ツールが「Vivado® Design Suite」(ビバド)です。従来提供してきた「ISE® Design Suite」に代わるツールで、今後見込まれるFPGAの大容量化にも対応できるようなスケーラビリティを特徴とし、実装の高速化、ロジックエレメント使用率の改善、性能向上および低消費電力化など、次世代レベルの優れた生産性をもたらします。「Vivado Design Suite」に含まれる高位合成ツールが「Vivado HLS」です。C/C++/SystemCで記述されたIPをハンドコーディングと同等レベルのVHDLコードまたはVerilog RTLコードに効率的に合成するツールです。「Zynq-7000」では、Cortex-A9プロセッサ上のソフトウェアアルゴリズムをハードウェア化する際に有用です。ただし、「Vivado HLS」で合成したハードウェアIPをCortex-A9プロセッサ上のソフトウェアから呼び出すには、デバイスドライバの作成やAPIの定義などが必要で、エンジニアが人手で作りこまなければなりません。また、合成したハードウェアIPと他のハードウェアブロックとのインターコネクトについてもエンジニアが人手で対応する必要があります。そうした付帯的な設計作業には、多くの工数が掛かってしまうのが実状でした。この課題に対してXilinxは、それらの作業を自動化する「SDSoC」という新しいツールを開発し、2015年7月から一般への提供を開始したところです(図1)。

図1

図1:「SDSoC」の画面からハードウェア化したい関数(アルゴリズム)を指定すると、赤色で示したハードウェア部のアルゴリズムだけでなく、DMAやインターコネクトの生成や、ソフトウェア部のカスタムドライバも自動的に生成される。

友杉:2015年3月に「SDSoC」のコンセプトを発表した後、山本さんから、「Vivado HLS」でアルゴリズムをハードウェアに落とし込むところまではいけるのだが、その先のソフトウェアとの連係のところで苦労している、というお話を伺って、「SDSoC」なら問題を解決できるのではと思い、アーリーアクセス版をご紹介しました。

山本:いくつかのお客様から、画像処理や信号処理の性能を高めたいというご要望があり、それであれば 「Zynq-7000」を使ったアクセラレーション化が適当だろうと考えて取り組んでいたプロジェクトがありました。元々のソフトウェアアルゴリズムはOpenCV、行列演算、お客様のオリジナル記述の混在するコードで実現されていました。Xilinxさんから提供されている 「Vivado HLS」の中で対応するハードウェア化向けライブラリが存在するものは、そのライブラリに置き換えることで簡単にできました。また、オリジナル記述の部分については性能を満たすようにある程度のリファクタリング(プログラムの書き換え)が必要でしたが、C++記述のまま設計を進められるのでソフトウェア設計の延長線上で済ませることできました。しかし、大変だったのはその後の工程で、IPが出来てもそれをCortex-A9プロセッサ上で走るメインプログラムから呼び出せる状態に持っていくのがなかなか上手くいかないわけです。担当者は休日返上で頑張ったりもしたのですが、残念ながら予定したスケジュールでは作りきれませんでした。そんなときに、友杉さんから「SDSoC」の説明を伺う機会があって、まさにこれだと。さっそくXilinxさんに「SDSoC」のアーリー・アクセス版をお願いして使ってみましたら、月単位で苦労していたハードウェアとソフトウェアの繋ぎの部分が「SDSoC」で自動生成されるので(図1)、わずか数日の作業で動くようになり、今までの苦労は何だったのだろうというぐらいに驚きました。今日同席している長岡は「SDSoC」を担当したエンジニアです。

長岡(OKI):私はもともとDSP向けを中心としたソフトエンジニアで、FPGAに触れるのは今回が実は初めてでした。まず手始めに「Vivado HLS」を使って高位合成の勉強をしていたときに、山本から「SDSoC」をやるように指示され、この新しいツールを担当することになりました。

山本:長岡もそうだったように、FPGAの使用経験がないというのが一般的なソフトウェアエンジニアの感覚だと思います。ソフトウェアで実装されたアルゴリズムをハードウェアアクセラレータに落とし込みたいというとき、ソフトウェアエンジニアがRTLで組めるかといったら無理なわけです。ところが、今回のプロジェクトで長岡が図らずも証明してくれる形になりましたが、「Vivado HLS」と「SDSoC」を使えば、ソフトウェアエンジニアでもハードウェアロジックを組めるということが分かった。これはとても大きいと思っています。今回お持ちしたビデオソリューションのデモシステム(図2)は、ソフトウェアによるビデオデコード処理の内、処理の重いアルゴリズムの部分を「SDSoC」を使用してハードウェアロジックに置き換えたものです。前述のように、既にライブラリにあるコードを活用したり、オリジナル記述をリファクタリングしたり、そして「SDSoC」を使用してさまざまな調整をしながらシステムに最適に組み込むことができました。その結果、元のソフトウェア処理に比べ処理時間を30倍以上向上させることができました。これをXilinxのソフトウェアエンジニアが一人で実現したのです。

図2

図2:ZC706ベースのビデオソリューションに「SDSoC」を用いてパフォーマンスの向上を実現。

黒田:「SDSoC」はハードウェアIPの準備ができた後の全ての工程を自動化しますので、ツール操作自体は全然難しくありません。ハードウェア化の対象としたい関数にクリックしてチェックを入れてビルドを実行するだけで、ハードウェア・ランタイムの生成までを自動で行ってくれます。むしろ大事なのは、アクセラレーションのためにコードをリファクタリングする部分(主にハードウェアIPの部分)で、そこは従来であればRTLやFW設計に相当するのですが、「SDSoC」と「Vivado HLS」の自動生成機能によるアシストによって、C/C++記述の書き換えと若干の#pragma文挿入で済ませられるようになりました。長岡さんは「Vivado HLS」を使った高位合成の手法をある程度習得されていましたので話が早かったです。一方「SDSoC」ではハードウェア・ランタイム生成だけでなく、従来の「Vivado HLS」単体では及ばなかった高い粒度でのアクセラレーションも実現することができます。ここは長岡さんにとっては新しい部分になります。「SDSoC」のツール操作だけでなく、より幅広いレンジの粒度でアクセラレーションを実現するためのリファクタリングも含めて、長岡さんをサポートさせていただきました。

長岡:逐次で実行されるソフトウェアと、クロックに同期して並列に実行されるハードウェアとの違いなどを教えていただきましたが、その他はFPGAということをあまり意識せずにアルゴリズムの落とし込みができました。今まで意識してこなかったアーキテクチャを考えるという工程が新しく学んだ部分で、その習得に少し時間が掛かりましたが、そこが分かればソースコードのリファクタリングはそれほど難しくはなく、私のような初めての人間でもソフトウェアを開発している感覚の延長で取り組めました。しかもやればやるほど高速化できたのでとても楽しかったです。ある関数はソフトウェア処理だと180msecもかかっていたものが4msecまで高速化できました。これは自分でも信じられなかったです(笑)。

友杉:セールスの現場では、「Zynq-7000」の開発は基本的には簡単ですよと売り込むのですが(笑)、ソフトウェアとハードウェアの機能配置だとか、いままではシステムアーキテクトの方が考えていたシステム的な発想が必要なので、実際には難しいところはあると思います。ただ、ソフトウェアエンジニアの方がシステム全体の最適化まで考えられるようになる「SDSoC」はチャレンジに対するリターンがとても大きいツールだなと感じます。長岡さんのようなエンジニアの方が増えてもらえれば嬉しく思います。

Zynq-7000の次世代品の開発も順調 パートナーとSoC市場の拡大を目指す

神保:正式に「SDSoC」がリリースになったことで、「Zynq-7000」の採用がさらに加速すると期待しているのですが、Xilinxでは並行して新しいデバイスの開発にも取り組んでいます。すでにプレスリリースなどを通じて発表していますが、「Zynq-7000」の5倍以上の価値を提供できる16nmの最新プロセスで製造する「Zynq Ultrascale+ MPSoC」の開発を進めていて、2015年7月1日にテープアウトを行いました。最初のサンプルは予定どおり2015年内に完成する予定です。「Zynq Ultrascale+ MPSoC」は、クワッドコアのARM Cortex-A53プロセッサをはじめ、リアルタイム処理用のデュアルコアARM Cortex-R5プロセッサ、2Dおよび3Dなどのグラフィクス処理用のARM Mali™-400MP、パワーマネージメントプロセッサ、セキュリティエンジンなどが内蔵されます。次世代のADASなど、さらに高度かつ高性能なシステムを実現するSoCとして、個人的にも登場を期待しているところです。

山本:神保さんのお話にあったようなXilinxさんの次のデバイスの情報や「SDSoC」のような新しいツールのアーリーアクセスをいかに早く得るか、というのは日本のお客様をサポートしていく上で我々にとってとても大切で、同時に、先ほど「Vivado HLS」で合成した次の段階で苦労したという話をご説明しましたが、私たちの悩みをXilinxさんと共有することも重要です。Xilinxさんとコミュニケーションをより一層密にすることで、お客様にも貢献していきたいと考えています。一方で、「SDSoC」の活用による設計期間の短縮はOKIにとってもビジネスチャンスになると考えていて、コンサルティングを含めてデザインサービスの拡充を図り、お客様のお役に立てるようにさらに努めていきます。

神保:OKIアイディエスさんをはじめとするアライアンスパートナー各社様の強みは、お客様と密な関係を持たれているところなので、Xilinxとしても今後のニーズやトレンドを共有していただけると嬉しいです。それと同時に、XilinxのSoCは次世代のプラットフォームとして安心して使えることを市場に広く伝えていただければ幸いです。本日はありがとうございました。

APS EYE'S

ソフトウェア担当は、時間との戦いである。いかにアルゴリズムを縮められるか?いかに早く実行可能かどうか?そんな声に応えたのが、SDSoCだ。単にアルゴリズムを置き換えるだけではなく、強力なプロファイリング機能により最適なH/W化が行われる。しかも、プロセッサやバスとのI/Fも最適化され、適切なドライバが生成される。アプリケーションは、このドライバから制御を行う。これはソフトウェア担当者にとって朗報でしかない。アルゴリズムをソフトウェア的手法でチューニングするのは、生易しいものではないが、それを可能にするSDSoC。今回は、そんな生の声が届いてくれればいいと思う。