« Windows10におけるデバイスドライバ | トップページ | XILINX XDMAの使い方と速度 »

2017.08.05

Kintex-7のPCI ExpressコアのWrite速度

Kintex-7にAXIベースのPCI Expressのコアを入れて速度を測ってみました。

使ったのは、Cosmo-K+というボード。

1478579823_cosmok

PCI ExpressはGen2のx8なので、毎秒2GByteが理論上の最高速度なのですが、書き込み速度でさえ、65MB/s程度と、わずか3%の速度しか出ていません。

Pcie_rdwr

この回路で使っているのはXILINX XDMAコアですが、今回はDMAポートではなくAXI BYPASSポートを使っています。

Axi_bypass_2

AXI BYPASSのポートにBRAMをつないでいます。BRAMはすぐに応答を返すのでそこがボトルネックになっているというわけではありません。

そこで、XMDAコアからBlockRAMの間のAXIの配線を全部引き出して、MITOUJTAGで波形がみられるようにRTLのコアを横にいれました。

これでAXIの信号を見ることにします。

Pcie_dma

すると、こんな波形が得られました。

Pcie_wr

開始部分を拡大してみます。

Pcie_wr2

128bit幅で125MHzの転送なので、1回のバスサイクルで16バイトを並列に転送できます。ですが、この図を見てわかることは、WSTRBが000F 00F0 0F00 F000と、32bitずつ4回にわけて転送しています。

また、AWLENが00(=256)を指しているのに毎回の転送でLASTが送られてきてしまって、バースト転送が行われていません。

このため、32bitの転送で平均60nsくらいかかってしまいます。4MBytes/0.06us=66MBytes/secなので、計測結果とも一致します。

なぜこんなに遅いのかはわかりませんが、XILINXのAXIベースのPCI Expressコアは、PCI ExpressのWrite転送を小分けにしてしまうようです。

やっぱりDMAを使わないとだめでうね。

|

« Windows10におけるデバイスドライバ | トップページ | XILINX XDMAの使い方と速度 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Windows10におけるデバイスドライバ | トップページ | XILINX XDMAの使い方と速度 »