新規記事投稿
フォロー記事投稿
記事のキャンセル
From: Akitaka HOSOMI
<hosomi@ga2.so-net.ne.jp>
Subject: Re: デジタルフィルタ( IIR 篇 .... パフォーマンス )
Date: 1998/10/03 02:27:38
Reference: junge/00169
本日、現行のバージョンで行ったフィルタのパフォーマンス試験の結果だ。
FIR フィルタと IIR フィルタで比較してあり、ともに、1 サンプリングデータ
あたりの処理時間を計算で求めている。
フィルタの特性は、どちらも、ほぼ同じ仕様で設定してあるので、処理時間につ
いてのおおよその比較が可能だと判断している。
# FIR フィルタの方は、以前の版から、結構、変更を加えてあるので、その時点
# のパフォーマンス測定結果とは、少し異なっているかも知れない。
CPU は、手持ちの関係で MMX Pentium 200 MHz と Pentium2 333 MHz を使った。
1. MMX Pentium 200 MHz( L2 Cache 512 KB ) の場合
※ FIR フィルタ LPF ( 63 次 ) 3.3 マイクロ秒
※ IIR フィルタ
バターワース型 LPF ( 9 次 ) 1.6 マイクロ秒
チェビシェフ型 LPF ( 5 次 ) 1.0 マイクロ秒
逆チェビシェフ型 LPF ( 5 次 ) 1.0 マイクロ秒
※ FIR フィルタ HPF ( 63 次 ) 3.3 マイクロ秒
※ IIR フィルタ
バターワース型 HPF ( 6 次 ) 1.1 マイクロ秒
チェビシェフ型 HPF ( 4 次 ) 0.9 マイクロ秒
逆チェビシェフ型 HPF ( 4 次 ) 0.9 マイクロ秒
※ FIR フィルタ BPF ( 71 次 ) 3.7 マイクロ秒
※ IIR フィルタ
バターワース型 BPF ( 14 次 ) 2.3 マイクロ秒
チェビシェフ型 BPF ( 8 次 ) 1.4 マイクロ秒
逆チェビシェフ型 BPF ( 8 次 ) 1.4 マイクロ秒
※ FIR フィルタ BRF ( 71 次 ) 3.7 マイクロ秒
※ IIR フィルタ
バターワース型 BRF ( 18 次 ) 2.8 マイクロ秒
チェビシェフ型 BRF ( 10 次 ) 1.6 マイクロ秒
逆チェビシェフ型 BRF ( 10 次 ) 1.6 マイクロ秒
期待した通り、IIR フィルタは、FIR フィルタに比べて、最高で 3 倍強、高速に
動作している。
IIR フィルタは、帰還させて計算させる分、1 次数あたりの計算量は多いのだが、
FIR フィルタと比べると、相対的に次数を低くできるので、結果として処理時間
は短くなる。
2. Pentium2 333 MHz( L2 Cache 512 KB ) の場合
※ FIR フィルタ LPF ( 63 次 ) 1.6 マイクロ秒
※ IIR フィルタ
バターワース型 LPF ( 9 次 ) 1.3 マイクロ秒
チェビシェフ型 LPF ( 5 次 ) 0.6 マイクロ秒
逆チェビシェフ型 LPF ( 5 次 ) 0.6 マイクロ秒
※ FIR フィルタ HPF ( 63 次 ) 1.6 マイクロ秒
※ IIR フィルタ
バターワース型 HPF ( 6 次 ) 0.7 マイクロ秒
チェビシェフ型 HPF ( 4 次 ) 0.5 マイクロ秒
逆チェビシェフ型 HPF ( 4 次 ) 0.5 マイクロ秒
※ FIR フィルタ BPF ( 71 次 ) 1.8 マイクロ秒
※ IIR フィルタ
バターワース型 BPF ( 14 次 ) 1.8 マイクロ秒
チェビシェフ型 BPF ( 8 次 ) 1.1 マイクロ秒
逆チェビシェフ型 BPF ( 8 次 ) 1.1 マイクロ秒
※ FIR フィルタ BRF ( 71 次 ) 1.8 マイクロ秒
※ IIR フィルタ
バターワース型 BRF ( 18 次 ) 2.2 マイクロ秒
チェビシェフ型 BRF ( 10 次 ) 1.3 マイクロ秒
逆チェビシェフ型 BRF ( 10 次 ) 1.3 マイクロ秒
Pentium2 も、MMX Pentium と、ほぼ同じ傾向だね。
これぐらいのパフォーマンスが出せると、CD 並みの音質と言われる 44.1 KHz の
サンプリング周波数( 約 20 マイクロ秒に 1 回のサンプリング )にも、実時間で
対応するフィルタが書けそうだね。
実は、現行の版は、Delphi 3.1J で書いたプログラムで、MMX 命令は使っていない。
( つまり、安直に CPU の浮動小数演算のみで計算させてるのさ )
DSP( Digital Signal Processor ) などでは、16 ビット程度の語長で計算させて
いるものも見かけるので、MMX レジスタを使って並列計算を行わせれば、さらに、
2 〜 3 倍パフォーマンスを上げられる余地を残している。
まだまだ、今のマシンが持ってる本来の能力を使い切っていない、ってことだね。
# まぁ、気が向いたら、MMX 用に組みなおすさ。面白い道具になりそうだし。