80bit += 32bit * 32bit

16bit DSPMAC演算の構成は念仏のように十年一日 40bit += 16bit * 16bitとなっています。符号付き16ビット固定小数点演算*1では、積の形式がQ30*2となります。これを32bitにそろえてQ31とし、あふれ対策に8ビットの整数ガードを追加すれば、40bitとなります。
この形式のMAC演算は

  • 256タップまでのFIRを実行しても、絶対に整数があふれない
  • FIR演算の途中では絶対に丸め誤差が発生しない

という二つの強力な特性があるため、黄金比のごとく扱われています。この思想は24bit DSPであるDSP56000では 56bit += 24bit * 24bitとなってその名前の由来となり、32bit DSPであるSHARCでは、80bit += 32bit * 32bit 構成を持たせるに至っています。
しかしながら、最近ではこの構成は劣勢になっています。まずLSI設計の面から言うと、80bitのアキュームレータを高速化するのはかなり面倒です。ピーク性能を追求したければパイプラインを伸ばして周波数を上げざるを得ず、消費電力も上がります。
さらに、アキュームレータがこういう構成だと、大並列のSIMDを組みにくくなります。
これに対して「いやそれではあふれや丸めの問題が」という声が上がるわけですが、本当に必要なのか考えてみろよ、と言われると答えに窮することになります。
16bit信号処理の場合、そもそもダイナミックレンジが96dBしかないため、演算精度に対して神経質にならざるを得ませんでした。仮に16bit += 16bit * 16bitの構成でMACを行う度に0.5LSBの雑音が追加されると、256タップのFIRフィルタでは実に雑音は8LSBに達します*3。有効ビットは13LSBとなり、Q12相当のデータになります。しかし、32bit += 32bit * 32bitの場合、同じ256タップFIRを実行しても、有効ビットは29bitあり、28bit相当精度です。
また、位相直線フィルタの伝達関数も自然信号の波形もそれほど突拍子もないものにはならないため、そもそも8bitものガードが必要である局面はわずかです。ないとは言い切れませんが、それほど特殊なアルゴリズムであれば特殊なプログラムをすればいいだけで、普通のアルゴリズムがそれにつき合ってハードウェアの足かせに賛同する義理はありません。
幸い、信号処理の代表的アルゴリズムは線形です。Q31でFFTとFIRを用意しておけば、信号側をスケーリングするだけで、Q23だろうがQ24だろうが、好きなフォーマットに対応できます。

*1: 1.15 または Q15フォーマット

*2:あるいは1.30

*3:同じ振幅の雑音を256回たすと、振幅はSQRT(256)=16倍になる。もちろんエネルギは256倍