飽和演算
読み:ほうわえんざん
外語:saturation calculation

 桁溢れした時には、その飽和点を返す演算のこと。
目次

概要
 ディジタル量の演算において、演算結果がオーバーフローする場合、自動的に値を最小値〜最大値の範囲に修正する機能をもった演算。
 例えば16ビットで考えると、数値は0〜0xFFFFまでありうるが、0xFFFFに1を加えても溢れることはなく飽和点である0xFFFFを返す。このような加算を飽和加算という。

特徴

用途
 画像処理や音声処理では、加算を続けて飽和時には飽和点に戻すような処理が求められる。この飽和演算は、それを自動的に行なってくれる演算機能である。
 たとえば、画面の輝度を上げる(下げる)処理の場合、一定以上の明るさでは真っ白(暗さでは真っ黒)より明るさが変わることはない。そういった上限(下限)付きの処理として、よく使われている。

機能
 DSPなどでは一般的な演算である。
 最近ではx86系プロセッサーでも、マルチメディア命令セットにこのような演算が存在する。MMXなどがある。
 たとえばMMXの飽和加算/減算の場合、次のような命令がある。

速度
 飽和時には返す値を飽和点に戻す処理が必要となる。
 このため、それを行なわない演算(ラップアラウンド)よりも処理が遅くなりがちである。

プログラム
 CやC++などの場合、標準では飽和演算の関数や演算子が用意されていないので、マルチメディア命令の飽和演算命令を使うかどうかは、コンパイラー次第である。
 全自動で飽和処理を判定するようなコンパイラーもあるが、うまく判定して処理を最適化できるかどうかもまたコンパイラー次第である。
 この最適化技術に関連して、飽和演算の計算部分を自動判定するロジックは、特許となっているものもある。

再検索