DSP

コンピュータ

DSP

でぃーえすぴー

Digital Signal Processor : ディジタル信号プロセッサ

概要

ディジタル信号処理ディジタル制御を行うために設計されたマイコン

大量のデータを処理するため、フォン・ノイマンボトルネックが生じにくいよう注意して設計されている。たとえば内積の計算をするとき、ベクトルAとベクトルBの内積は、初期のDSPでもベクトルの長さのサイクル数だけで演算が可能となっていた。つまり、命令コードのフェッチ、データ乗算と累算(あわせてMACと呼ぶ)、ベクトル要素のインデックス更新(増減)を、すべて一サイクルで実行可能とすることで、ディジタル信号処理ディジタル制御を高速に実現可能となっている。

演算精度に気を使ったアーキテクチャーになっているのも特徴。たとえば、汎用レジスタが16ビットでも、アキュムレータを40ビットとするなど、乗算や累算で桁あふれが生じない工夫がなされている。整数演算だけでなく、固定小数点演算を考慮したり、また、オーバーフローの際に自動的に丸め処理をすることもできる。ベクトルインデックス計算で、自動的に環状(サイクリック)アドレッシングをさせることも容易である。

最近のDSPでは実際の用途を考慮し、ビタビ復号のアクセラレータなども搭載していることが多い。また、VLIWRISCアーキテクチャを採用することで、ハードウェア規模を抑えながらスーパースカラーに匹敵する処理量を持つ製品もある。条件プリフィックスなど、条件分岐による遅延を最小化する機能も以前から実現されている。クロック周波数は、汎用MPUに匹敵する1GHzで動作するものも発表され始めた。

昔のDSPは、アセンブリプログラミングが常識だったが、最近はC言語C++言語のコンパイラを提供するメーカーが普通である。この場合、一般のRISC MPUと同様にコンパイラの性能がDSPの性能を決定することになるが、オブジェクト生成の最適化のためには、プログラマの協力を惜しませない点が特徴的である。たとえば、C言語マクロや疑似関数を用いることで、ループ回数の最小値を宣言させたり、引数配列エイリアシングの有無をプログラマに明示させることで、積極的に効率的なオブジェクトを生成できるようにしている。また、ファイル単位でなく複数のファイルにまたがってコードをなめ、最適化をするコンパイラもある。

なお、消費者向け機器では固定小数点DSPが多く使われるが、浮動小数演算を高速に実現可能な浮動小数DSPというものもラインナップされている。

大手メーカーとしてはTexas Instruments (TI), Analog Devices (ADI)のほか、Motorolaも供給している。

応用

DSPは広い分野で使われている。

携帯電話DSPが最初に大量に使われた分野。ディジタル携帯電話の音声符号化器はDSPの速度向上を見込んだ上で研究・規格化が進められた。アナログ携帯電話は収容回線数の限度に迫りつつあったが、ディジタル携帯電話の登場で回線数が飛躍的に伸びた。DSPの速度向上により音声符号化器も性能が上がり、よりよい音で、電波をより有効に使えるようになった。

AVアンプにもDSPが広く使われている。多くの特殊な規格に対応する上で、ソフトウェア処理を行うDSPは便利なため、AVアンプで好んで使われる。

また、精密機器のモーター回転制御などにも多く使われる。