
概要
ディジタル信号処理、ディジタル制御を行うために設計されたマイコン。
大量のデータを処理するため、フォン・ノイマン・ボトルネックが生じにくいよう注意して設計されている。たとえば内積の計算をするとき、ベクトルAとベクトルBの内積は、初期のDSPでもベクトルの長さのサイクル数だけで演算が可能となっていた。つまり、命令コードのフェッチ、データ乗算と累算(あわせてMACと呼ぶ)、ベクトル要素のインデックス更新(増減)を、すべて一サイクルで実行可能とすることで、ディジタル信号処理やディジタル制御を高速に実現可能となっている。
演算精度に気を使ったアーキテクチャーになっているのも特徴。たとえば、汎用レジスタが16ビットでも、アキュムレータを40ビットとするなど、乗算や累算で桁あふれが生じない工夫がなされている。整数演算だけでなく、固定小数点演算を考慮したり、また、オーバーフローの際に自動的に丸め処理をすることもできる。ベクトルのインデックス計算で、自動的に環状(サイクリック)アドレッシングをさせることも容易である。
最近のDSPでは実際の用途を考慮し、ビタビ復号のアクセラレータなども搭載していることが多い。また、VLIWのRISCアーキテクチャを採用することで、ハードウェア規模を抑えながらスーパースカラーに匹敵する処理量を持つ製品もある。条件プリフィックスなど、条件分岐による遅延を最小化する機能も以前から実現されている。クロック周波数は、汎用MPUに匹敵する1GHzで動作するものも発表され始めた。
昔のDSPは、アセンブリプログラミングが常識だったが、最近はC言語やC++言語のコンパイラを提供するメーカーが普通である。この場合、一般のRISC MPUと同様にコンパイラの性能がDSPの性能を決定することになるが、オブジェクト生成の最適化のためには、プログラマの協力を惜しませない点が特徴的である。たとえば、C言語のマクロや疑似関数を用いることで、ループ回数の最小値を宣言させたり、引数配列のエイリアシングの有無をプログラマに明示させることで、積極的に効率的なオブジェクトを生成できるようにしている。また、ファイル単位でなく複数のファイルにまたがってコードをなめ、最適化をするコンパイラもある。
なお、消費者向け機器では固定小数点DSPが多く使われるが、浮動小数点演算を高速に実現可能な浮動小数点DSPというものもラインナップされている。
大手メーカーとしてはTexas Instruments (TI), Analog Devices (ADI)のほか、Motorolaも供給している。
注目の関連商品
Digital Signal Processing : ディジタル信号処理
信号をディジタル化して処理すること。
二種類のディジタル信号処理
- 従来のアナログ回路を置き換えて性能を上げ、コストを下げる
- 従来のアナログ回路でできない処理を行う
前者の例としてはCDプレイヤーの出力フィルタがある。これをディジタル信号処理化することで位相特性が大幅に向上した。
後者の例としては音声や画像の圧縮伸張がある。
信号処理はかつてはディジタル信号プロセッサの独壇場だったが、最近では大量生産ならASIC、少量生産ならFPGAといった具合にデバイスが細分化している。
応用
信号処理はアナログ信号の出入り口にさしはさむことで大きな変革を起こすことが出来る。例えばサーボ制御をディジタル信号処理化することで、アナログ回路には難しい高速非線形制御が出来るようになった。これによって磁気ディスクのアクセス時間が短縮した。
また、生体信号のように特徴をつかみにくい信号でもディジタル信号処理を施すことで信号を雑音から浮かび上がらせたり、波形とは違う観点から信号を観測するなどのことが出来る。
インテルがPentiumに導入したMMXは信号処理能力の向上を目的としていた。これをきっかけにPCで実時間信号処理が可能になり、リアルタイムの音声コーデック、ビデオコーデックが一気に普及することになった。