« Zybo 開発環境構築記 | トップページ | ZyboでLinuxからUIOアクセス(備忘録) »

2018年4月14日 (土)

Zynq の面白さとハードルの高さと(駄文)

XILINXのZynqについて思うところを駄文ですが、少し書いてみます。

ユーザーから見るとZynqにはいくつもの側面があると思います。

[エッジコンピューティングにおけるTegraの対抗としてのZynq]

1つはGPGPUにおけるnVidiaのTegraの対抗であり、FPGAによるアクセラレーター型コンピュータをエッジコンピューティングに持ち込んだものという考え方です。これはCUDAに相当する部分をHLSやSDxで置き換えていこうという試みだと思っています。おそらくここがXilinx社の本命で、もっともデバイスの数が出ると思われる部分で、力を入れている分野かと思います。
サーバー側をSDAccel、エッジ側をSDSoCとしてツール化されており、戦略として非常に分かりやすい思います。Zynqは後者ですが、SoCとつけている通り、システムをオンチップに載せるということを少し強調しているようにも思います。nVidiaの場合、サーバーもエッジも特にツール名は変えておらず、むしろTeslaの資産や開発のノウハウがそのままTegraに持ち込めることを利点としています。ただ、GPGPUのコアアーキテクチャの特性上、SoC化しても、一旦メモリを介さないと演算器の入出力が他に接続できないので、単に転送ボトルネックが小さくなったアクセラレータ型HPC(High Performance Computer)にしかならず、アーキテクチャとしてはAMDのAPUと同等かと思います。一方でZynq(SDSoC)の場合SDAccelとも少し異なり、PLの演算回路と外部I/OやプロセッサがLSI内の太い帯域で直結可能ですので、PS-PL間の帯域の変化だけではなく、さらにもう一段レベル上がって、エッジコンピュータのアーキテクチャのあり方自体に革新が出てくる可能性があります。基本的に従来のHPCは、外部機器との接続はプロセッサ側が通信する先にあるものであって、アクセラレーターにとってはもっと無縁でしたが、エッジでは非常に興味深い位置づけになり、このあしらい方で世界観が変わってくると思います。

[RaspberryPi + FPGA の置き換えとしてのZynq]

 さてまた別の1つの見方として、ZynqをFPGA付きのRaspberryPi的な見方と思います。Zynqberryのようなボードがあるのがその通りなように、ホビー的な意味での活用可能性が広く、実にワクワクします。クラウド経由でAIスピーカーと繋ぐなんてことも簡単に視野に入ってきますので、カメラ画像をHLSで処理して認識結果をクラウド経由でAIスピーカーにしゃべらせるなんて使い方も出てきます。
 ただこの際の最大の欠点はPS側の環境として、NOOBSやRaspbianなどの、「誰でも使える」環境の存在がまだ十分立ち上がっていない無い点かと思います。
 そしてXilinx的には市場規模読みかねている部分では無いかとも想像します。RaspberryPiは1000万台以上売れています。ここまで数がでるとLSIメーカーとしてホビー市場が無視できなくなると思うのですが、今はまだ見通しが効かない部分ではあろうと思います。ただ、ネットでバズる/バズらない、がLSIメーカーの経営戦略にまで影響を及ぼす時代になったとしたら、それはとても面白いことだと思います。

[Aruduino + FPGA の置き換えとしてのZynq]

そして、最後にもうひいとつのZynqの見方として、筆者がそうであったように、Arduinoの延長としてZynqをマイコン付きFPGAとして利用してしまうというちょっともったいないところで止まっているケースです(「RaspberryPiとArduinoの違い」において後者を使うケースですね)。Linuxまで載せてしまうとPCに近くなりますが、Z80とかH8とか昔ながらのマイコンで育った人間からするとまずは簡易なマイコンとして使うところから始めたかったりもします。その点、普通のFPGAでのMicroBlazeも便利なものでありました。
内蔵シーケンサとしてMicroBlazeを使う延長で、Xilinx SDK を standalone で使う人間にはMicroBlaze時代と同様にEtherとかUSBとかはやや敷居が高く、利用されないままとなるケースも多いのではと思います。
 もともと、マイコンに対するFPGAの良さのひとつは、ブートストラップ書かなくていいという部分があります。マイコンの「ブートストラップを書く」という行為は、マイコンを含めたシステムが複雑になるほど難しくなります。ある意味で組み込み屋の登竜門でもあります。そしてマイコンは高機能で複雑な製品になるほどブートストラップが難解になります。今まで自分で書いていた世界から、急にu-boot + Linuxの システムブートの理解と、知らないものが大量に一気に出てくるので、やはりどうしてもハードルが高くなります。
また、Linuxでのユーザー空間でのプログラミングではどうしても時間保証が難しくなってくるので、ベタな制御マイコンの代わりに使いたい層ではPICやAVRのようなマイコンやFPGAというのはやはり手放せないところがあり、そういう層にとってはPSが少しもったいない使い方で落ち着いてしまう可能性があると思います。Linuxでやろうとするとカーネルモードで動くデバイスドライバの作成やRT-Linuxから取り込まれた各種要素の理解が必要になってくるので、これまた知らないものが大量に一気に出てくるのが原因と思います(そもそも理解している人でもめんどくさくて、ちょっとした制御程度ではやりたくないらしいので)。
 Zynq-UltraScale+ で Linuxなどを動かす想定のCoretex-A53の他にRTOSを動かす想定のCortex-R5 も搭載されているのは少なからずそういう側面への答えではなかろうかと想像しています。ただ、MicroBlazeでも十分この位置は代替できると思いますし、部分的にはHLSを簡単なシーケンサ設計ツールにする手もあるかもしれませんので、Zynq-7000でもいろいろな答えがありそうにも思っています。

 いろいろな見方や使い方があると思いますので、それぞれで、多様な使い方が出来るように、いろんな方向性へそれぞれ面白い進化が続くと良いなと思う次第です。

« Zybo 開発環境構築記 | トップページ | ZyboでLinuxからUIOアクセス(備忘録) »

駄文」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Zynq の面白さとハードルの高さと(駄文):

« Zybo 開発環境構築記 | トップページ | ZyboでLinuxからUIOアクセス(備忘録) »