ここはDSP(Digital Signal Processor)の紹介のページです。


CONTENTS

What's DSP

Architecture

Technology For Real-Time Processing

Application

Multi Processing System



[RETURN TO "ABOUT DSP"]


What's DSP


 DSP(Digital Signal Processor)はディジタル信号処理を高速に処理するためのプロセッサです。音響効果やノイズ除去等のフィルタ処理などのように,次々と入力される信号をリアルタイムで処理することを目的としています。このDSPを直接目にすることは,あまりないかと思いますが,その用途は幅広くあります。オーディオ機器,携帯電話,画像の圧縮展開などほんとに身近なところで使われています。DSPは知らず知らずのうちに生活に密着しているのです。

[RETURN TO CONTENTS]


Architecture


 DSPはディジタル信号を高速に処理するように設計されたプロセッサです。その内部構成は通常のマイクロプロセッサとは大きく異なっています。DSPの基本的な内部構成は図1のようになっています。DSPの内部構成は大きくプログラム系統とデータ系統の2つに分けられ、それぞれプログラムとデータの専用のバスとメモリを持つハーバードアーキテクチャ構成をとっています。命令とデータを同時に両方ともアクセスすることができるために、命令の読み出しと解読という内部のハードウェア処理を命令の実行と並行して行うことができます。プログラムとデータの各バスには浮動小数演算部、アドレス演算部、内部データメモリ、外部メモリインターフェイス等のブロックが設けられています。さらに浮動小数点演算部は、加算器と乗算器を持ち積和演算を行いやすい構造となっているのです。

図1 DSPの内部構成

 バスに接続されている各ブロックは独立しているため、同時に動作することが可能です。このため命令に並列性をもち1つの命令で演算を行いつつデータ転送とアドレスの演算を実行できてしまいます。簡単な例として,(1)メモリからデータを読み込む,(2)そのデータを用いて演算する,(3)1~2を3回繰り返す,という処理を考えてみます。プログラム中に並列命令を含まない場合、これらの動作を逐次的に行う必要があるので図2(左)のように6ステップかかります。図2(右)のように並列命令を用いて転送と演算を同時に処理すると,2/3の4ステップになります。この例ではデータの転送(ロード)と演算だけでしたが,図1中のブロックの数だけの並列性を持っているのです。

図2 並列命令を使った例


[RETURN TO CONTENTS]


Technology For Real-Time Processing


 DSPはリアルタイムに信号処理を実行するために,さまざまな技術が使われています。Architectureの内容と重複する部分もあるのですが,高速化のための技術をまとめてみました。

ハーバードアーキテクチャ
プログラム系統とデータ系統が分離しているのでコードを読み込みながら,データ処理が可能です。
パイプライン処理
ハーバードアーキテクチャに関連するのですが,コードの読み出し(Fetch),解読(Decode),実行(Execute)を同時に処理できるためパイプライン処理が可能です。このため各命令を見かけ上1サイクルで処理します。
積算回路と加算回路を搭載
積和演算を1サイクルで処理することができます。
RISC(Reduced Instruction Set Computer)型プロセッサ
RISC型プロセッサは,命令サイクル数をできるだけ1サイクル命令に近づけること、最新最先端の高速デバイス技術をの導入によりサイクル時間を短縮すること、最適化コンパイラにより最適化を行いできる限り命令数の増加を抑えることの3点により高速化を図ったプロセッサです。
内部メモリを搭載
高速な内部メモリを搭載することで,外部メモリアクセスによる遅延が発生しません。また内部・外部メモリを平行してアクセスできるためデータのロード/ストアによる遅延を低減することができます。
固定長命令
命令コードが固定長なので,基本的に1命令が1WORDに対応しています。このため1命令に対しコードの読み込みは1回なのでパイプラインが乱れません。

[RETURN TO CONTENTS]


Application


 DSPが最も得意とする処理ってなんでしょう?積算回路と加算回路を搭載していることから想像できるように,DSPは積和演算が得意なのです。積和演算というとシグマ(総和),FIRフィルタ,行列演算,ベクトル演算,連立方程式の逐次求解,ニューラルネットワーク,図形の回転・拡大・移動など多くの処理があてはまります。これほど様々な処理を高速にできるというのですから,DSPが身近なところで使われているのも納得です。
 余談ですが,私の所属していた電力情報工学研究室ではDSPを用いて電力系統の計算,有限要素法,ニューラルネットワーク,画像処理などの研究を行っております。

[RETURN TO CONTENTS]


Multi Processing System


 DSPがディジタル信号処理を高速に処理できることは前述しましたが,信号処理のデータ量は大量になり複雑化しています。これに伴いDSPの高速化はもちろんですが,複数のDSPを用いたMulti Processing Systemも利用されるようになっています。DSPを複数使うのであるから,これは高速処理が期待できます。しかしMulti Processing Systemでは,通信オーバーヘッドという問題が発生するのです。
 一般的に複数のプロセッサでデータ処理を実行する場合,各プロセッサは他のプロセッサでのデータ処理結果を要求します。このとき要求するデータ処理が完了するまでの待ち時間,又は通信にかかる時間が発生します。これは純粋にデータ処理を行う時間とは全く異なる時間です。これが通信オーバーヘッドです。プロセッサ数が多くなるほど通信オーバーヘッドが増加し,単一プロセッサでのデータ処理時間よりも長くなる場合もあります。しかし通信オーバーヘッドを最小限に抑えれば,Multi Processing Systemの威力は絶大です。このあたりはハード設計者もさることながら,プログラマも一番気を遣うところです。近年では,外部メモリのインターフェイスを2ポート持ったDSP,シリアル転送ポートを5ポート持ったDSPなどMulti化を考慮したDSPも多く発表されています。
 余談ですが電力情報工学研究室にはDSP32基をBinay-5-Cube結合したMulti Processing Systemがあります。実物写真はこちらをご覧ください。

[RETURN TO CONTENTS]