« PCI ExpressのDMA実装 | トップページ | PCI Expressでの割り込みの発生 »

2010.03.04

DMAによる長いメモリライトを実装

開発中のPCI Expressコアで、DMAによる長いメモリライトを実装しました。
128バイトを超えるサイズのデータを、128バイト単位に細切れにして複数回のMemWrトランザクションを発生させるというものです。

下の図は800バイト分のDMAを行ったところです。128バイトのペイロードを持つパケットが6個と、32バイトのが1個発行されました。

Pcie_dma3

各パケットは920ns間隔で発行されているので、転送速度は128Bytes/0.92us = 139MBytes/secとなります。
問題は、コアがパケットを送ってからAckが返るまでの時間が長いこと。264nsもかかっているので、この時間が無駄となって、もっと密度を上げることができません。
本当はAckが返る前に次のパケットを送ってもよいのですが、そうするともっと速くなりそうですね。
でも、フローコントロールが必要になってきますので、FPGAのリソース使用率とのトレードオフになります。

最初に5回、PCからFPGAにむけて書き込んでいるのは、DMAの転送先アドレスや長さなどです。このオーバーヘッドはほとんど無視できるほどです。

|

« PCI ExpressのDMA実装 | トップページ | PCI Expressでの割り込みの発生 »

コメント

コメントを書く



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




« PCI ExpressのDMA実装 | トップページ | PCI Expressでの割り込みの発生 »