デノーマル数は、浮動小数点形式の境界値で、プロセッサーにとって特別な値です。デノーマルデータは、例えば、固定小数点形式でキャプチャーして浮動小数点形式に変換した信号を、無限インパルス応答 (IIR) フィルターおよび有限インパルス応答 (FIR) フィルターでフィルタリングした場合に発生します。デノーマルデータに対する操作を行うと、対応する割り込みが無効な場合でも処理は遅くなります。デノーマルデータの処理による影響を回避するため、インテル® IPP しきい値関数をフィルタリングの前に入力信号に適用することができます。次に例を示します。
if (denormal_data)
ippsThreshold_LT_32f_I( src, len, 1e-6f );
ippsFIR_32f( src, dst, len, st );
1e-6f はしきい値レベルです。このレベルよりも小さな入力データはゼロに設定されます。 インテル® IPP しきい値関数は非常に高速なので、ソースデータにデノーマル数がある場合、2 つの関数が実行されることで処理速度は大幅に向上します。当然、フィルタリング中にデノーマルデータが発生した場合、しきい値関数では対応できません。
インテル® Pentium® 4 プロセッサー以降のインテル® プロセッサーでは、ゼロフラッシュ (FTZ) と デノーマルゼロ (DAZ) の 2 つの特別な計算モードを設定できます。 これらのモードを設定するには、ippSetFlushToZero および ippSetDenormAreZeros 関数を使用します。 この設定は、計算がインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) およびインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) を使用して行われた場合にのみ有効になる点に注意してください。
次の表は、デノーマルデータがパフォーマンスに与える影響と、しきい値を設定した場合の効果を示しています。しきい値を設定した場合、クロック数は 3 クロック増加するだけです。しきい値を設定しない場合、デノーマルデータによりアプリケーションのパフォーマンスが約 250 倍遅くなることがわかります。
© 2007 - 2010 Intel Corporation. 無断での引用、転載を禁じます。