2.2K Views
November 02, 23
スライド概要
フィックスターズならではの「FPGA」に関する高速化手法、 効率的な開発ノウハウ、苦労話などについてお話しいたします。
<講演内容>
1、Versal の NoC (Network-on-Chip) について勉強してみる
AMD Xilinx FPGA において、Versal デバイスは Ultrascale+ 以前の FPGA と比較して大きなアップデートが入っています。
本セミナーでは、Versal デバイスにおける新たなインターコネクトである NoC (Network-on-Chip) について、そのアーキテクチャの解説と実際に使ってみた所感を共有します。
2,Vitisのアクセラレーション・アプリケーション開発をエッジで思う存分活用したい 2
2022年11月に ”Vitisのアクセラレーション・アプリケーション開発をエッジで思う存分活用したい” というタイトルで発表させていただきましたが、その続きになります。
・前回資料:https://news.fixstars.com/2617/
前回は、Vitisのアクセラレーション・アプリケーション開発でエッジ・システムをお手軽に構成しようとしましたが、/dev/memを使用したデバイスへのアクセスだったため、アプリケーション・ソフトウェアを動作させるにはスーパー・ユーザー権限が必要でした。
今回は、UIO(User space I/O)を用いて、一般ユーザー権限でアプリケーション・ソフトウェアを動作させることができたので、発表させていただきます。
・当社技術ブログ 記事: https://proc-cpuinfo.fixstars.com/
・フィックスターズグループ/セミナー一覧: https://www.fixstars.com/ja/seminar
・フィックスターズのFPGAシステム開発: https://www.fixstars.com/ja/services/fpga
フィックスターズは、コンピュータの性能を最大限に引き出すソフトウェア開発のスペシャリストです。車載、産業機器、金融、医療など、幅広い分野での開発経験があります。また、ディープラーニングや機械学習などの最先端技術にも力を入れています。 並列化や最適化技術を駆使して、マルチコアCPU、GPU、FPGA、量子アニーリングマシンなど、さまざまなハードウェアでソフトウェアを高速化するサービスを提供しています。さらに、長年の経験から培ったハードウェアの知識と最適化ノウハウを活かし、高精度で高性能なアルゴリズムの開発も行っています。 ・開催セミナー一覧:https://www.fixstars.com/ja/seminar ・技術ブログ :https://proc-cpuinfo.fixstars.com/
実践的!FPGA開発セミナー vol.22 2023/05/24 18:00~ Copyright© Fixstars Group 1
Versal の NoC (Network-on-Chip) について 勉強してみる Copyright© Fixstars Group 2
Who I am Yuki MATSUDA 写真 松田 裕貴 ソリューション第四事業部 リードエンジニア Copyright© Fixstars Group
自己紹介 ● 松田裕貴 ○ 2016 年 4 月に Fixstars に入社 ○ ハードウェア開発をメインに、ソフトウェア開発なども担当 ■ FPGA による画像処理・ネットワーク処理 ■ CPU / GPU 上の処理の高速化 Copyright© Fixstars Group 4
Agenda ● Network-on-Chip (NoC) とは ● NoC のアーキテクチャ概説 ● NoC の使い方 ● 実験1: NoC を使った際に配置配線がどのようになるかを見てみる ● 実験2: NoC の経路衝突による影響を確認してみる ● まとめ Copyright© Fixstars Group 5
AMD Xilinx Versal Architecture ● Xilinx 最新の 7nm ポートフォーリオ ● 従来の FPGA SoC に様々な ハード化された機能を追加したアーキテクチャ ○ AI Engine の追加 ■ ○ これまで何度か紹介済み 色々な機能のハードマクロ (ASIC) 化 (DDR Controller, PCIe Controller, etc.) ○ Network-on-Chip (NoC) の追加 ■ 今日はこれ https://japan.xilinx.com/products/silicon-devices/acap/versal-ai-core.html Copyright© Fixstars Group 6
Network-on-Chip (NoC) とは ● ● Versal のチップ内を繋ぐ 新しいインターコネクト 特徴 ○ ○ ○ NoC はハード実装された インターコネクト ■ PL リソースは不要 PS, PL, AI Engine, DDR 等の 通信は NoC を介して行われる AXI4 MM, AXI4 ST の プロトコルサポート https://docs.xilinx.com/r/en-US/pg313-network-on-chip/Versal-Programmable-NoC-Overview Copyright© Fixstars Group 7
なぜ NoC ? ● Xilinx の whitepaper に理由が良く書かれていたので抜粋 ○ ● ● FPGA 内のインターコネクトはビットレベルで構築でき、flexible なのが強み 一方でビットレベルのインターコネクトだと大容量のデータ転送には効率が悪い ○ ○ ● https://japan.xilinx.com/content/dam/xilinx/support/documents/white_papers/ACAP%20Pa per.pdf インターコネクトのリソースが PL リソースの多くを占めてしまう Timing を満たすためにインターコネクト周辺に回路が固まってしまう NoC の導入により ハード実装による高効率なインターコネクトと PL のビットレベルのインターコネクトを両立する Copyright© Fixstars Group 8
Agenda ● Network-on-Chip (NoC) とは ● NoC のアーキテクチャ概説 ● NoC の使い方 ● 実験1: NoC を使った際に配置配線がどのようになるかを見てみる ● 実験2: NoC の経路衝突による影響を確認してみる ● まとめ Copyright© Fixstars Group 9
NoC のアーキテクチャ ● Network-on-Chip (NoC) という単語自体は割と一般的なもの ● Wikipedia によると... ○ A network on a chip or network-on-chip (NoC) is a network-based communications subsystem on an integrated circuit ("microchip"), most typically between modules in a system on a chip (SoC). ... The network on chip is a router-based packet switching network between SoC modules. ○ ● https://en.wikipedia.org/wiki/Network_on_a_chip Versal の NoC もパケットスイッチング方式のネットワークを採用している Copyright© Fixstars Group 10
Versal NoC のアーキテクチャ ● ● userIP (PL) パケットスイッチ 右図が NoC のブロック図 転送の流れ (青線) ○ ○ ○ NMU (Master) から データを入れる NPS (Packet Switch) が 隣接したスイッチ等に パケットを伝搬する NSU (Slave) にデータが 流れる https://docs.xilinx.com/r/en-US/pg313-network-on-chip/DDR-Basic-Tab Copyright© Fixstars Group 11
NoC のアーキテクチャ userIP (PL) ● NoC のメリット ○ ● パケットスイッチ 経路の自由度が高く 回路の使用効率が良いこと ■ 帯域が十分な場合は共有(緑) ■ 帯域が必要な場合は別経路 (赤) userIP2 userIP3 NoC を使う上で 検討しておくべきこと ○ ○ ○ どういった経路で パケットを送信するのか? 共有した経路上で バンド幅が足りるか? 大体 vivado が自動でやってくれます ■ 詳細は後述 https://docs.xilinx.com/r/en-US/pg313-network-on-chip/DDR-Basic-Tab Copyright© Fixstars Group 12
NoC 内での通信 ● NoC のスイッチ間は 16Byte 幅の双方向リンク ○ ● スイッチ間のデータは AXI そのままでなく、 パケット化されたデータが送られる ○ ○ ● speed grade が -2MP の場合は、NoC の周波数が 1GHz となり片方向あたり 16GB/s の帯域 Write の場合 ■ req: Header 1 + Data N word ■ resp: 1 word Read の場合 ■ req: Header 1 word ■ resp: Data N word AXI のデータ幅・バースト長が多い方が 効率よく NoC の帯域を利用できる https://docs.xilinx.com/r/en-US/pg313-network-on-chip/Packetization-Overhead Copyright© Fixstars Group 13
参考: バースト長と性能への影響 ● バースト長 32B のとき (Write) ○ 1 header, 2 data の 3 word で packet flit が構成される ○ バス上でデータを送信できているサイクルは ⅔ = 66.6% -> 16GB/s * 66.6% = 10.67 GB/s https://docs.xilinx.com/r/en-US/pg313-network-on-chip/Packetization-Overhead Copyright© Fixstars Group 14
Agenda ● Network-on-Chip (NoC) とは ● NoC のアーキテクチャ概説 ● NoC の使い方 ● 実験1: NoC を使った際に配置配線がどのようになるかを見てみる ● 実験2: NoC の経路衝突による影響を確認してみる ● まとめ Copyright© Fixstars Group 15
NoC を使ったデザインの作り方 ● IP Integrator で、AXI Interconnect/SmartConnect を使っていたところを 置き換えればよい ○ ○ ○ ● 右図 アドレス設定とかも 従来通り QoS 設定のみ追加で可能 (次頁) AXI NoC AXI4 Lite は従来通り PL で繋ぐ方が良さそう ○ ○ あまり回路規模が多くない NoC の帯域を無駄にしてしまう Copyright© Fixstars Group 16
NoC を使ったデザインの作り方: QoS 制約 ● AXI NoC では Interconnect/SmartConnect と異なり、 QoS (Quality of Service) の設定が可能 ● 3 種のTraffic Class を選択可能 ○ ○ ○ ● Low latency (read のみ) Isochronous (周期的なアクセス) Best Effort ポートあたり必要なバンド幅を 記載できる ○ ○ これを元にどの NoC ポートを 使うかがツールにより決定される 要求を満たせない場合は Validation Error となる Copyright© Fixstars Group 17
NoC を使ったデザインの作り方: NoC のポート配置 ● NoC タブを表示すると、各ポートの物理配置・転送経路が表示される ○ ● QoS を元にどのような物理配置になったかが可視化される 転送経路はコンパイル時に静的に決定される ○ 動的な経路選択ができないので、この時点で性能が出る設定となっていることが重要 Copyright© Fixstars Group 18
Agenda ● Network-on-Chip (NoC) とは ● NoC のアーキテクチャ概説 ● NoC の使い方 ● 実験1: NoC を使った際に配置配線がどのようになるかを見てみる ● 実験2: NoC の経路衝突による影響を確認してみる ● まとめ Copyright© Fixstars Group 19
実験1: NoC を使った際の配置配線の確認 ● ● NoC を使うメリットとして以下が挙げられる ○ インターコネクトが不要になったことでの配置配線時間の向上 ○ PL 上の配置効率の向上 ■ 従来だとインターコネクトやその先のスレーブ (例: DDR) に配置が引っ張られがち ■ NoC では PL 上の NoC ポートと 1 つの PL Logic が繋がれば良いため 実験: Implementation 後の配置配線結果を見て、 本当に NoC を使うことで良い形の配線になっているかを確認してみる ○ ボードは VCK190 ES1 を対象 Copyright© Fixstars Group 20
実験1: 作成したデザイン ● NoC に対して 16 個の PL master が繋がったデザイン ● 下図のように PL master を NoC に等間隔に繋いでみた ○ NoC のポートはデフォルトではツールが自動で決定するが、 ここでは手動で等間隔になるよう配置した PL master Copyright© Fixstars Group 21
実験1: 結果 ● NoC In NoC の入力に向けて 配線が行われていることが 確認できる ● 十分散らばっている印象? ○ 中心あたりから Reset が 出ていて、それのせいで 少し中央寄り ■ Reset 配線は別で 検討が必要かも Copyright© Fixstars Group 22
実験1: まとめ ● PL に置いた回路が NoC 付近に配置され、 配置効率が上がっていそうなことは確認できた ● 具体的にどれくらい配置配線の実行時間が短くなるかは未調査 ○ 今回使ったデザイン (16 個の Master, 16Byte 幅, 250 MHz) でも 40 分で impl が終わるので、十分速いという印象はある Copyright© Fixstars Group 23
Agenda ● Network-on-Chip (NoC) とは ● NoC のアーキテクチャ概説 ● NoC の使い方 ● 実験1: NoC を使った際に配置配線がどのようになるかを見てみる ● 実験2: NoC の経路衝突による影響を確認してみる ● まとめ Copyright© Fixstars Group 24
実験2: NoC の経路衝突による影響確認 ● NoC 上で意図的に経路衝突を起こした際に、 性能が NoC で律速されるかを確認する ○ NoC の 1経路の性能 (片方向, -2MP): 16B * 1000 MHz = 16GB/s ○ ここから Packet Flit のオーバーヘッドが載る Copyright© Fixstars Group 25
実験2: 作成したデザイン ● 右図のデザインを作成 ● VDMA x2 (read only) ○ AXI が NoC に繋がる ○ AXIS が性能測定回路に 繋がる ● NoC x1 ○ DDR に繋がる ○ DDR は 32GB/s の帯域 ○ NoC はポートあたり 16GB/s Copyright© Fixstars Group 26
NoC と DDR の接続 ● NoC と DDR は 4本の経路で繋がっている ● ある AXI Master のパケットが どの経路を経由するかは NoC の設定から選択可 (下図) https://docs.xilinx.com/r/en-US/pg313-network-on-chip/DDR-Basic-Tab Copyright© Fixstars Group 27
実験2: 2つの構成 ● 構成1: 経路が衝突する場合 ● 構成2: 経路が衝突しない場合 Copyright© Fixstars Group 28
実験2: 結果 ● ● ● 構成1 (経路が衝突する方) ○ 15.34 GB/s となった ○ NoC 1 port の性能 (16GB/s) に律速されていることが分かる 構成2 (経路が衝突しない方) ○ 24.3 GB/s となった ○ NoC 律速ではなく、DDR 律速となっていると思われる まとめ: バス全体の性能を出すには、NoC の経路を意識することが重要 ○ DDR のポート設定で、重いバスは別々の Memory Controller に分配する ○ NoC の QoS 設定により、帯域幅を正しく設定する Copyright© Fixstars Group 29
Agenda ● Network-on-Chip (NoC) とは ● NoC のアーキテクチャ概説 ● NoC の使い方 ● 実験1: NoC を使った際に配置配線がどのようになるかを見てみる ● 実験2: NoC の QoS (Quality of Service) 機能を使ってみる ● まとめ Copyright© Fixstars Group 30
まとめ ● ● NoC のアーキテクチャについて勉強し、実際に使ってみた NoC のアーキテクチャ ○ ○ ● ハード化されたインターコネクトで、パケットスイッチング方式で通信を行う NoC の経路決定はコンパイル時に静的に決まるため、 性能を引き出すには QoS 設定などを行うことが重要 使ってみた感想 ○ ○ PL 要らずで高帯域な配線が使えるのが良い ■ 合成時間の短縮がやはり FPGA 屋としては嬉しい ■ AXIS の配線に使っても面白そう QoS はバンド幅指定だけで済むので、使い方も特に難しい点はなかった ■ Best Effort 以外も使ってみたいところ Copyright© Fixstars Group 31
Thank you! お問い合わせ窓口 : [email protected] Copyright © Fixstars Group 32