« LinuxでのCombined Write | トップページ | MITOUJTAG Lightの販売が間もなく終了となります »

2017.01.08

Kintex-7のPCI Expressのバーストライト

Kintex-7のPCI Expressでバーストライトをさせて、その速度を見てみました。

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

1478579823_cosmok

PCI Express Gen2でx4という構成です。理論的には2GByte/sec出るはずです。

しかし、実際にやってみると514MBくらいしか出ません。

Cmbwr512mb

原因の1つは、デバイスドライバの問題で、ユーザ空間とカーネル空間を行き来するときにバッファの内容がコピーされるのですが、そのコピーの時間が無駄にかかっているためです。

もう一つの理由は、WriteCombinedで書き込んでいるのですが、AXIから読み出すときに、m_axis_tx_ready_intという信号がパタパタと遷移していて、1つのデータの読み出しに2クロックかかっているためです。

Wr64png

Gen1 x1のときには250MB/secしか出ないので、XILINXのCore Gen IPが作るユーザ側インタフェースは64bit 62.5MHz(最低速度)でも十分に間に合いました。

最低速度の半分のレートしか出ないので、AXバスをパタパタさせてもオーバーヘッドはなかったのですが、Gen2 x8だと64bit 250MHzになるので、もはやReadyをパタパタさせてはなりません。

Gen1のx1では、WriteCombinedで200MBくらい出るので、DMAよりも手軽で速く、速度的にも満足だったのですが、Gen2x4ではそうはいかなくなってきました。

毎クロックできびきび動作するよう、ステートマシンの作り直しが必要なのと、バッファのコピーを避けるためドライバがユーザ空間のメモリ領域のアドレスを見つけて、直接DMAする必要なのでしょう。

|

« LinuxでのCombined Write | トップページ | MITOUJTAG Lightの販売が間もなく終了となります »

コメント

コメントを書く



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




« LinuxでのCombined Write | トップページ | MITOUJTAG Lightの販売が間もなく終了となります »