ZynqのAXI_ACPポートとAXI_HPポートの性能の違いを確かめてみることにした。
ここでは、ビットマップ・ディスプレイ・コントローラIPを使用して、AXI_ACPポートとAXI_HPポートでピクセル・データをそれぞれReadして、そのAXIバスの様子をChipScopeで観察するという方法で比較する。
なお、ビットマップ・ディスプレイ・コントローラIPの解像度は、横640ピクセル x 480ラインのVGA解像度とし、ピクセル・データをReadするバースト長は通常は64バーストとする。AXI_ACPポート、AXI_HPポートのビット幅はどちらも64ビットとする。
最初にAXI_ACPポートの Project Navigator のプロジェクトを示す。
XPSプロジェクトを下に示す。Processing_System_7_0 の S_AXI_ACPポートに bitmap_disp_cntrler_axi_master_0 の M_AXIポートが接続されているのがわかる。
Project Navigator で、論理合成、インプリメント、ビットストリームの生成を行い成功した。
ハードウェア構成をエクスポートして、SDKを立ちあげた。
FPGAにビットストリームをダウンロードして、ソフトウェアを起動したところ、キャラクタが表示された。
ChipScope Pro を立ちあげて、ARVALIDでトリガしたAXI_ACPポートの Read Transaction の波形を下に示す。
RVALIDが細かく1、0を繰り返している。トランザクション時間が割と長いのを選んでいる。もっと短い時間でデータ転送できているトランザクションもあるので、後で紹介する。
さて、最初のトランザクションを引き伸ばした。
トランザクション全体の経過時間は 193クロックだった。193クロック x 10nsec(100MHz) = 1.93 usec となった。
次に、ARVALIDが 1 になった後で、最初に RVALID が 1 になった時間を計測してみた。これは、アドレスが入ってからデータが出てくるまでのレイテンシに相当する。これは、10クロックだった。つまり、100nsec となる。
トランザクション全体の経過時間から、データが出るまでのレイテンシを引くとデータ・トランザクション時間になる。これは、1.83 usec となった。
次に、データ転送帯域の使用率を計算する。64バーストのデータをフルスピードで転送すると、0.64 usec のはずなので、0.64 usec / 1.83 usec x 100 ≒ 35 % になる。つまりデータ転送帯域幅の 35 % のスループットとなった。
次に、ChipScope Pro で見えた中で最もトランザクション時間が短い例を示す。
トランザクション全体の経過時間は 100クロックだった。100クロックなので、1.00 usec だった。
ARVALIDが 1 になった後で、最初に RVALID が 1 になった時間は、先程と同じく 10クロックだった。つまり、100 nsec ということになる。
データ・トランザクション時間は、0.90 usec だ。
データ転送帯域の使用率を計算すると、0.64 usec / 0.90 usec x 100 ≒ 71 % になる。
AXI_ACPポートのデータ転送帯域使用率は、35% ~ 71% という結果になった。結構、データ転送帯域を使えていないという印象だ。
次は、全く同じ実装で、AXI_HPポートを観察してみようと思う。
”
ZynqのAXI_ACPポートとAXI_HPポートの性能の違い2(AXI_HPポート)”に続く。
- 2014年03月25日 04:53 |
- Zynq
-
| トラックバック:0
-
| コメント:0