非正規化数
ゼロに極めて近い浮動小数点数で、CPUが低速な経路に入ってしまう。無音のリバーブがプロセッサを食う典型的な原因。
IEEE 754は、最小の正規数の指数より小さい値を、いきなりゼロにせず、精度を落としながらゼロへ向かってなだらかに減衰させる。数学的には美しいが、実用上は高くつく。多くのx86チップではマイクロコードで処理され、1回の演算が通常の100倍かかることもある。
オーディオのコードは、他のどの分野よりもこの罠にはまりやすい。フィードバックフィルターやリバーブの減衰部は値が半分になり続け、すべてが静まったまさにその時に非正規化数の領域に入る。結果、音楽が止まった瞬間にCPU負荷のスパイクとxrunが起きる。対処法はSSE制御レジスタのFTZとDAZフラグで、これらは該当する値をゼロに丸める。あるいは、聞こえない程度のDCオフセットやごく小さなノイズを足す昔ながらの手もある。