昨日、
Zynq-7000 All Programmable SoC Seminar 2013に行ってきました。
ためになるセミナだったと思います。いろいろと新しいことも聞けました。
・「ザイリンクスUltraScale™ 真の次世代アーキテクチャ」
・Vivado® HLS (高位合成ツール)とZynq®-7000 All Programmable SoC全てをCで設計するテクニック
・Zynq-7000 All Programmable SoC搭載のARM CPUの活用 ~複雑なデザインの構築を可能にする性能 向上テクニック~
・Zynq-7000 All Programmable SoCユーザロジックから見たProcessing System活用テクニック
上の4つのセミナを聞きましたが、Workshopは1つも聞いていません。
・「ザイリンクスUltraScale™ 真の次世代アーキテクチャ」Xilinxの方が、7シリーズでは、一気にArtix(安価なFPGA)を含めて、一気に 28nmプロセスに移行していましたが、今後は、そのようなことはないそうです。つまり10年くらいの長いスパンで 28nmプロセスのFPGAを売り続けるそうです。Artixは 20nmプロセスにも移行せずに 28nmプロセスのままだそうです。Zynq、Kintex、Virtexは 20nmプロセスで作るそうですが、28nmプロセス製品のファミリーも増やすそうです。あくまで 28nmプロセスをベースにするようなことを言ってました。Virtexは16nmプロセスのも作るそうです。やはり、Kintexで小さい規模のFPGAがなかなか出てこないのを考えると、もうプロセスを微細化してもしょうがないんでしょうね?たぶん。IOパッドの面積は相対的に大きくなるし。。。そのようなことをちらっと仰っていました。
内部構造の改良については、ASICのようにするとのことでした。
・ロジックエレメントのルーティングトラックを4x4にスライスが並んでいるところに各スライスに行くFast Track Routes を新設するそうです。つまり1つのライス辺り15本のルートを確保してクロスバーの様に接続できるんでしょう?
・クロッキングは今までは、グローバルクロックが真ん中に走っていましが、今度はマルチリージョンのクロックにするそうです。クロック領域を分けてクロックを供給しますが、複数のリージョンをまたがったクロックの接続もできるとのことでした。チップが大きくなるとグローバルクロックは限界が来るんでしょうね?
・DSPユニットも25x18入力から、27x18入力にするそうです。これだと54ビット入力に2個のDSPで対応できるそうです。今までは3個使う必要があって無駄だったそうです。
・BRAMのカスケードがBRAM外部のロジックリソースを使わずに、BRAMブロックに組込んであるロジックを使って出来るようです。リソースの使用率の軽減と動作スピードを改善できるとのことです。
・100G EthernetやGen4 PCIeとかに対応するそうです。
とにかく、本音が聞けた気がします。今まで無い有意義なセミナでした。面白かったです。
・Vivado® HLS (高位合成ツール)とZynq®-7000 All Programmable SoC全てをCで設計するテクニックVivado HLSの概要はもうすでに知っていたので退屈だったんですが、途中からデザイン構築の流れ辺りからよく聞いてました。
デザインはまずARMのソフトウェアのみで作って、プロファイリングしてハードウェア化を検討するとのことでした。全く同感です。SDKにプロファイリングの機能があるそうです。後で試してみたいと思います。
ボトルネックを見つけて、それをハードウェア化とのことです。HLS化の過程もよくまとまってました。
最後にOpenCVについての情報もありました。概要はよくわかりました
。OpenCVやりたいです、まずはZedBoardのLinuxにインストールする必要がありますね。Ubuntu に変えたいと思ってきました。
展示のところで発表者にVivado HLSのことを聞いてきました。AXI Master の辺りはバグありそうなので、AXI DMAを使って、HLS部分はAXI Stream で実装したほうが良さそうだそうです。いろいろとソフトとハードの負荷分散に付いても検討してみたいと思いました。
・Zynq-7000 All Programmable SoC搭載のARM CPUの活用 ~複雑なデザインの構築を可能にする性能 向上テクニック~以前、セミナでお世話になったNさんが講義でした。
最初はプロセッサの説明でした。キャッシュやTLBや割り込みの種類(レベルトリガ、エッジトリガ)、インタラプトハンドラの説明でした。これはハード・エンジニアの方でプロセッサに詳しくない方向けなんでしょうか?あまり、キャッシュやTLBの図が簡単すぎて、かえってよくわからないじゃないだろうか?と思いながら見てました。
次は、Zynqのプロセッサを2つ使う方法ですね。短時間ですが、具体的なやり方を説明してくれて良かったです。
その次は、Xil_L2CacheFlush() などのキャッシュ操作の説明でした。SIMDエンジンNEONの使い方を説明してくれて、最後にOSの説明がありました。
・Zynq-7000 All Programmable SoCユーザロジックから見たProcessing System活用テクニックこの方の話し方はあまり好きじゃないんですが(すいません。。。)、話す内容はノウハウ満載でとても気に入っています。
ツールやZynqのPSとPLを接続するバスのことについて詳しく説明していただきました。やはり、IP Integrator は今のところバグがあるので、おすすめしないそうです。私も同感です。
2つHPポートを使う場合は、HP0とHP2にするとか、そんな感じです。しかし、PS部にレベルシフタがあって、デフォルトオフと言うのは知りませんでした。FSBLでONにするそうです。ONにしないとまずいそうなので、デバックの場合は、JTAGでSDKからビットストリームをダウンロードして、ソフトウェアを流す前にONにしてくれているのだと思います。QoSの話とかもあって、あまりAXIバスの優先順位を考えたことがなかったですが、考慮の対象にしようと思いました。
AXIバスのAWCHACHE とARCHACHEですが、Xilinxの推奨値は0'b0011 (Normal Non-cacheable Bufferable) だそうです。以前、
私がやった時には、Readは大丈夫だったんですが、Write はSLVERR が帰ってきました。もう一度やってみようと思います。それでいまのところ、私は、AWCHACHE とARCHACHEを0'b0010 (Normal Non-cacheable Non-bufferable)にしています。もう一度、確かめてみます。
AXIバスのカスタムIPを作る方法として、次の3つを説明していました。
・IPIF(これってスレーブしか出来ませんよね?)を使う
・AR37425をテンプレートにして自作する
・Vivado HLSで作る
私は、Xilinxだと自分でカスタムIP作ったほうが良いと思っています。IPIFだとラッパーをはさむのでレイテンシが遅くなりますし、
たぶん?マスタは作れません。(2013/10/24:更新 マスタも作れるようです。)更に、マスタ2ポート、スレーブ1ポートを持つカスタムIPは無理です。AXIバスのカスタムIPをネイティブに作れるようになれば、とっても有用だと思っています。それを感じたので、1年以上前からAXIバスの勉強を初めました。それにAXIバスで作れば、Alteraでも使えるかもしれません。
私は、ネイティブなAXIバスのカスタムIPの作り方を含めたZynqのセミナをちょっと拡大した内部的に開こうとしています。セミナ資料も100枚くらい作りました。後80枚くらい作ろうと思っています。ネイティブなAXIバスのカスタムIPの作り方を覚えると、とっても有利だと思います。機能を少し限定すれば、作るのは難しくありません。
という訳で、ノウハウやツールの使い方などを説明していただいて、とっても有用なセミナでした。Xilinx社の方、東京エレクトロンデバイスのセミナ講師の方々、ありがとうございました。そして、お疲れ様でした。また、こんなセミナに行きたいです。また、よろしくお願いいたします。
(2013/10/21:追記)ISE14.6を使用して、AWCACHE、ARCACHEの値を 3 にして、AXIバスのデータ転送を行ってみました。Write もRead もBRESP、RRESPの返り値が 0 で問題ないことが分かりました。”
AXI4バスでのAWCACHE、ARCACHEの値”を参照下さい。
- 2013年10月19日 05:41 |
- その他のFPGAの話題
-
| トラックバック:0
-
| コメント:0