積和演算

読み:せきわえんざん
外語:MAC: Multiply and ACcumulation
品詞:名詞

二つの値のを累算中の値に加算する演算のこと。

DSPの得意とする処理であり、かつ信号処理では必須の処理となる。

積和演算は三項演算であり、式で書くと、SUM=SUM+A×B。

極めて単純明快な演算ではあるが、この演算速度が信号処理における最大の律速要因になり、信号処理速度そのものを決めてしまうので侮れない。

この積和演算速度を表わすために、MMACS(メガ積和演算/秒)やGMACS(ギガ積和演算/秒)といった単位も存在するほどである。

従って、全てのDSPには汎用のMPUにはない高速乗算器が搭載され、積和演算命令(MAC命令)が用意されている。これにより、ほぼ全てのDSPはこの演算を1命令サイクルで実行するのである。

DSPの場合

DSPでも様々な実装があり、それぞれに特徴がある。一般的には、ニーモニックで次のように書くことが多いようではある。

MAC A,B,SUM

AとBが二つの値で、SUMが累算する積和演算レジスタである。

積和演算レジスタが一つしかないようなDSPの場合は、これは省略されることになるだろう。

SuperHの場合

SuperHなど汎用のプロセッサでも、積和演算回路が組み込まれた製品がある。こういったプロセッサでは汎用レジスタよりも大きな値を扱う必要があるため、積和演算レジスタとして、専用にレジスタを持っていることが多い。

SuperHの場合は2つの汎用レジスタで16または32ビットの値二つのポインタを示して使う。積和演算レジスタは一つしかないので指定する必要が無い。例えば次のようになる。

MAC.L @R0+,@R1+

演算終了後、レジスタは自動で増分される。このため、メモリ上に連続してデータを用意しておけば、連続して命令を実行することができる。

SuperHの場合は汎用レジスタが32ビット、積和演算レジスタは64ビットなので、積和演算レジスタの上位・下位32ビットごとに分けて、汎用レジスタやメモリに複写する命令が存在する。