« PCI Expressバスアナライザ | トップページ | バーストリード »

2008.01.08

PCI Expressのリードライト

PCI デバッグライブラリを使って、開発中のPCI Express IPコアに読み書きを行ってみました。

・読み出し
使った関数は、_MemReadBlockLongで、8ワード(32バイト)です。
Rd_8dword

・書きこみ
使った関数は、_MemWriteBlockLongで、8ワード(32バイト)です。
Wr_8dword

これらの関数名にはBlockとついていますが、JTAGロジックアナライザで見てみると、1ワードの転送をN回繰り返していました。
本来はPCI Expressは1つのTLPパケットに256バイトくらいのデータを載せられるのですが、パソコンから単純にアクセスすると、1ワードにつきTLPパケットを1個発行してしまうようです。
DMAモードというか、1つのTLPに複数のワードを載せる「バースト転送」は発行されませんでした。
PCIでもバースト転送を発行させるのは大変だみたいなことがTech-Iの本にかかれていたので、同じような理由なのでしょう。

ただ、明らかに書きこみのほうが速いですね。書きこみでは1μ秒の間に32バイト書き込んでいるので、32MBytes/secといったところでしょう。読み出しはその約8分の1でした。

今からDMAモードの実装に入ることにします。

|

« PCI Expressバスアナライザ | トップページ | バーストリード »

コメント

コメントを書く



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




« PCI Expressバスアナライザ | トップページ | バーストリード »