IT用語集 › プログラミング › 非正規化数

非正規化数

プログラミング Svenska → 更新: 2026-10-28

ゼロに極めて近い浮動小数点数で、CPUが低速な経路に入ってしまう。無音のリバーブがプロセッサを食う典型的な原因。

IEEE 754は、最小の正規数の指数より小さい値を、いきなりゼロにせず、精度を落としながらゼロへ向かってなだらかに減衰させる。数学的には美しいが、実用上は高くつく。多くのx86チップではマイクロコードで処理され、1回の演算が通常の100倍かかることもある。

オーディオのコードは、他のどの分野よりもこの罠にはまりやすい。フィードバックフィルターやリバーブの減衰部は値が半分になり続け、すべてが静まったまさにその時に非正規化数の領域に入る。結果、音楽が止まった瞬間にCPU負荷のスパイクとxrunが起きる。対処法はSSE制御レジスタのFTZとDAZフラグで、これらは該当する値をゼロに丸める。あるいは、聞こえない程度のDCオフセットやごく小さなノイズを足す昔ながらの手もある。

← 用語集に戻る