CPU Pentium II 450MHz メモリ 256MB VME アダプタ SBS Model-617 OS Linux 2.4.18 (Vine Linux 2.5) KiNOKO Ver. 1.0.13 (RC1)
以下のグラフは,各データサイズに対して,1回あたりの読み出しに要した時間と,総所要時間から計算した処理速度です.
このうち,データサイズが 2kB から 20 kB の範囲を直線でフィットして,データ転送自体の速度(サイズ比例部分)とオーバーヘッド(定数部分)を計算すると以下のようになります.![]()
![]()
VME PIO 転送速度 1.52 MB/sec VME PIO オーバーヘッド 36 usec VME DMA 転送速度 13.7 MB/sec VME DMA オーバーヘッド 970 usec
パケットサイズ 1kB から 50 kB の範囲を直線でフィットして,データ転送自体の速度(サイズ比例部分)とオーバーヘッド(定数部分)を計算すると以下のようになります.![]()
![]()
データバッファ転送速度 128.3 MB/sec データバッファオーバーヘッド 58.3 usec
時間の計測は,VMEのバックプレーンに直接接続したロジックアナライザを用いて行ないました. 割り込み要求のタイミングは IRQ ラインで,DMA の開始は LWORD ラインで読み取ります. 以下のは時間計測のときのロジックアナライザの画面です.IRQ3でトリガをかけています.画面の右半分で DMA 転送をしていることが読み取れます.
ドライバに直接アクセスするCのネイティブコード: driver-performance-test.c tinykinoko で使用する読み出しスクリプト: ScriptPerformenceTest.kts
計測結果を以下に示します(全て手動での計測のためデータ数が少なくなっています). 計測値は,システムの割り込み応答処理の時間に加え,DMA開始処理の時間も含んでいることに注意してください.Page-1 拡大 Page-2 拡大
これより,それぞれのアクセス方法での平均所要時間は以下のようになります.![]()
単純にこれらの差をとってスクリプトのオーバーヘッドとすると,これは以下のように計算されます.
ドライバ直接アクセス 146.5 usec スクリプト経由 293.5 usec
スクリプトオーバーヘッド 147.0 usec
VME PIO 転送速度 1.52 MB/sec VME PIO オーバーヘッド 36 usec VME DMA 転送速度 13.7 MB/sec VME DMA オーバーヘッド 970 usec データバッファ転送速度 128.3 MB/sec データバッファオーバーヘッド 58.3 usec スクリプトオーバーヘッド 147 usec