---
title: 実践的！FPGA開発セミナー vol.22（2023/05/24）
tags:  #fpga #fpga開発 #fpga開発シリーズ  
author: [株式会社フィックスターズ](https://convert.docswell.com/user/fixstars)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/PJR2R42NE9.jpg?width=480
description: フィックスターズならではの「FPGA」に関する高速化手法、 効率的な開発ノウハウ、苦労話などについてお話しいたします。   ＜講演内容＞  1、Versal の NoC (Network-on-Chip) について勉強してみる AMD Xilinx FPGA において、Versal デバイスは Ultrascale+ 以前の FPGA と比較して大きなアップデートが入っています。 本セミナーでは、Versal デバイスにおける新たなインターコネクトである NoC (Network-on-Chip) について、そのアーキテクチャの解説と実際に使ってみた所感を共有します。  ２，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
published: November 02, 23
canonical: https://convert.docswell.com/s/fixstars/KXY3D4-20230524
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/PJR2R42NE9.jpg)

実践的！FPGA開発セミナー
vol.22
2023/05/24 18:00～
Copyright© Fixstars Group
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/PEXDR2D87X.jpg)

Versal の NoC
(Network-on-Chip) について
勉強してみる
Copyright© Fixstars Group
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/3EKXRMXL7D.jpg)

Who I am
Yuki
MATSUDA
写真
松田 裕貴
ソリューション第四事業部
リードエンジニア
Copyright© Fixstars Group


# Page. 4

![Page Image](https://bcdn.docswell.com/page/L7358Y56E5.jpg)

自己紹介
●
松田裕貴
○
2016 年 4 月に Fixstars に入社
○
ハードウェア開発をメインに、ソフトウェア開発なども担当
■
FPGA による画像処理・ネットワーク処理
■
CPU / GPU 上の処理の高速化
Copyright© Fixstars Group
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/87DDM5DM7G.jpg)

Agenda
●
Network-on-Chip (NoC) とは
●
NoC のアーキテクチャ概説
●
NoC の使い方
●
実験1: NoC を使った際に配置配線がどのようになるかを見てみる
●
実験2: NoC の経路衝突による影響を確認してみる
●
まとめ
Copyright© Fixstars Group
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/VJPXRGXQ78.jpg)

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


# Page. 7

![Page Image](https://bcdn.docswell.com/page/2EVLR6LPJQ.jpg)

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


# Page. 8

![Page Image](https://bcdn.docswell.com/page/57GXMNXQEL.jpg)

なぜ NoC ?
●
Xilinx の whitepaper に理由が良く書かれていたので抜粋
○
●
●
FPGA 内のインターコネクトはビットレベルで構築でき、ﬂexible なのが強み
一方でビットレベルのインターコネクトだと大容量のデータ転送には効率が悪い
○
○
●
https://japan.xilinx.com/content/dam/xilinx/support/documents/white_papers/ACAP%20Pa
per.pdf
インターコネクトのリソースが PL リソースの多くを占めてしまう
Timing を満たすためにインターコネクト周辺に回路が固まってしまう
NoC の導入により
ハード実装による高効率なインターコネクトと
PL のビットレベルのインターコネクトを両立する
Copyright© Fixstars Group
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/4EQ8RQ8WJP.jpg)

Agenda
●
Network-on-Chip (NoC) とは
●
NoC のアーキテクチャ概説
●
NoC の使い方
●
実験1: NoC を使った際に配置配線がどのようになるかを見てみる
●
実験2: NoC の経路衝突による影響を確認してみる
●
まとめ
Copyright© Fixstars Group
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/KJ428N21E1.jpg)

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 (&quot;microchip&quot;), 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


# Page. 11

![Page Image](https://bcdn.docswell.com/page/LE1M25M57G.jpg)

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


# Page. 12

![Page Image](https://bcdn.docswell.com/page/GEW3R53WE2.jpg)

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


# Page. 13

![Page Image](https://bcdn.docswell.com/page/47ZVRNV2E3.jpg)

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


# Page. 14

![Page Image](https://bcdn.docswell.com/page/YJ65R8Y67V.jpg)

参考: バースト長と性能への影響
●
バースト長 32B のとき (Write)
○
1 header, 2 data の 3 word で packet ﬂit が構成される
○
バス上でデータを送信できているサイクルは ⅔ = 66.6% -&gt; 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


# Page. 15

![Page Image](https://bcdn.docswell.com/page/GJ5Y89G5J4.jpg)

Agenda
●
Network-on-Chip (NoC) とは
●
NoC のアーキテクチャ概説
●
NoC の使い方
●
実験1: NoC を使った際に配置配線がどのようになるかを見てみる
●
実験2: NoC の経路衝突による影響を確認してみる
●
まとめ
Copyright© Fixstars Group
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/LE358YR5J5.jpg)

NoC を使ったデザインの作り方
●
IP Integrator で、AXI Interconnect/SmartConnect を使っていたところを
置き換えればよい
○
○
○
●
右図
アドレス設定とかも
従来通り
QoS 設定のみ追加で可能 (次頁)
AXI NoC
AXI4 Lite は従来通り
PL で繋ぐ方が良さそう
○
○
あまり回路規模が多くない
NoC の帯域を無駄にしてしまう
Copyright© Fixstars Group
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/8EDDM5YYEG.jpg)

NoC を使ったデザインの作り方: QoS 制約
●
AXI NoC では Interconnect/SmartConnect と異なり、
QoS (Quality of Service) の設定が可能
●
3 種のTraﬃc Class を選択可能
○
○
○
●
Low latency (read のみ)
Isochronous (周期的なアクセス)
Best Eﬀort
ポートあたり必要なバンド幅を
記載できる
○
○
これを元にどの NoC ポートを
使うかがツールにより決定される
要求を満たせない場合は
Validation Error となる
Copyright© Fixstars Group
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/V7PXRG62E8.jpg)

NoC を使ったデザインの作り方: NoC のポート配置
●
NoC タブを表示すると、各ポートの物理配置・転送経路が表示される
○
●
QoS を元にどのような物理配置になったかが可視化される
転送経路はコンパイル時に静的に決定される
○
動的な経路選択ができないので、この時点で性能が出る設定となっていることが重要
Copyright© Fixstars Group
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/2JVLR63X7Q.jpg)

Agenda
●
Network-on-Chip (NoC) とは
●
NoC のアーキテクチャ概説
●
NoC の使い方
●
実験1: NoC を使った際に配置配線がどのようになるかを見てみる
●
実験2: NoC の経路衝突による影響を確認してみる
●
まとめ
Copyright© Fixstars Group
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/5EGXMN3RJL.jpg)

実験1: NoC を使った際の配置配線の確認
●
●
NoC を使うメリットとして以下が挙げられる
○
インターコネクトが不要になったことでの配置配線時間の向上
○
PL 上の配置効率の向上
■
従来だとインターコネクトやその先のスレーブ (例: DDR) に配置が引っ張られがち
■
NoC では PL 上の NoC ポートと 1 つの PL Logic が繋がれば良いため
実験: Implementation 後の配置配線結果を見て、
本当に NoC を使うことで良い形の配線になっているかを確認してみる
○
ボードは VCK190 ES1 を対象
Copyright© Fixstars Group
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/4JQ8RQ5Y7P.jpg)

実験1: 作成したデザイン
●
NoC に対して 16 個の PL master が繋がったデザイン
●
下図のように PL master を NoC に等間隔に繋いでみた
○
NoC のポートはデフォルトではツールが自動で決定するが、
ここでは手動で等間隔になるよう配置した
PL master
Copyright© Fixstars Group
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/K7428N9ZJ1.jpg)

実験1: 結果
●
NoC In
NoC の入力に向けて
配線が行われていることが
確認できる
●
十分散らばっている印象？
○
中心あたりから Reset が
出ていて、それのせいで
少し中央寄り
■
Reset 配線は別で
検討が必要かも
Copyright© Fixstars Group
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/LJ1M25KDEG.jpg)

実験1: まとめ
●
PL に置いた回路が NoC 付近に配置され、
配置効率が上がっていそうなことは確認できた
●
具体的にどれくらい配置配線の実行時間が短くなるかは未調査
○
今回使ったデザイン (16 個の Master, 16Byte 幅, 250 MHz) でも
40 分で impl が終わるので、十分速いという印象はある
Copyright© Fixstars Group
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/GJW3R5D8J2.jpg)

Agenda
●
Network-on-Chip (NoC) とは
●
NoC のアーキテクチャ概説
●
NoC の使い方
●
実験1: NoC を使った際に配置配線がどのようになるかを見てみる
●
実験2: NoC の経路衝突による影響を確認してみる
●
まとめ
Copyright© Fixstars Group
24


# Page. 25

![Page Image](https://bcdn.docswell.com/page/4EZVRNG9J3.jpg)

実験2: NoC の経路衝突による影響確認
●
NoC 上で意図的に経路衝突を起こした際に、
性能が NoC で律速されるかを確認する
○
NoC の 1経路の性能 (片方向, -2MP): 16B * 1000 MHz = 16GB/s
○
ここから Packet Flit のオーバーヘッドが載る
Copyright© Fixstars Group
25


# Page. 26

![Page Image](https://bcdn.docswell.com/page/Y765R8YDEV.jpg)

実験2: 作成したデザイン
●
右図のデザインを作成
●
VDMA x2 (read only)
○
AXI が NoC に繋がる
○
AXIS が性能測定回路に
繋がる
●
NoC x1
○
DDR に繋がる
○
DDR は 32GB/s の帯域
○
NoC はポートあたり
16GB/s
Copyright© Fixstars Group
26


# Page. 27

![Page Image](https://bcdn.docswell.com/page/G75Y89G874.jpg)

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


# Page. 28

![Page Image](https://bcdn.docswell.com/page/9J2GK2YVJR.jpg)

実験2: 2つの構成
●
構成1: 経路が衝突する場合
●
構成2: 経路が衝突しない場合
Copyright© Fixstars Group
28


# Page. 29

![Page Image](https://bcdn.docswell.com/page/DEYVNYGQEM.jpg)

実験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


# Page. 30

![Page Image](https://bcdn.docswell.com/page/VJNMXPG278.jpg)

Agenda
●
Network-on-Chip (NoC) とは
●
NoC のアーキテクチャ概説
●
NoC の使い方
●
実験1: NoC を使った際に配置配線がどのようになるかを見てみる
●
実験2: NoC の QoS (Quality of Service) 機能を使ってみる
●
まとめ
Copyright© Fixstars Group
30


# Page. 31

![Page Image](https://bcdn.docswell.com/page/YE9N83WDE3.jpg)

まとめ
●
●
NoC のアーキテクチャについて勉強し、実際に使ってみた
NoC のアーキテクチャ
○
○
●
ハード化されたインターコネクトで、パケットスイッチング方式で通信を行う
NoC の経路決定はコンパイル時に静的に決まるため、
性能を引き出すには QoS 設定などを行うことが重要
使ってみた感想
○
○
PL 要らずで高帯域な配線が使えるのが良い
■ 合成時間の短縮がやはり FPGA 屋としては嬉しい
■ AXIS の配線に使っても面白そう
QoS はバンド幅指定だけで済むので、使い方も特に難しい点はなかった
■ Best Eﬀort 以外も使ってみたいところ
Copyright© Fixstars Group
31


# Page. 32

![Page Image](https://bcdn.docswell.com/page/GE8K8MN57D.jpg)

Thank you!
お問い合わせ窓口 : hr-seminar@fixstars.com
Copyright © Fixstars Group
32


