DSPとは?
「DSP」という略号
「DSP」という略号は、
- Digital Signal Processor (ディジタル信号処理用プロセッサ)
- Digital Signal Processing (ディジタル信号処理)
の二種類の意味で使われることがあります。
ここでは、プロセッサの意味で使っています。
DSPの特徴
DSP (Digital Signal Processor) は、
ディジタル信号処理に特化したマイクロプロセッサです。
古典的なDSPは、ディジタル信号処理でよく用いられる畳み込み演算
を高速に処理できるように作られていました。
これは、非再帰形フィルタ
の出力を計算するものです。
最近のDSPは、
動画・オーディオ等のマルチメディア処理、
携帯電話等の音声圧縮、
データ通信用のモデムや等化器も考慮して、
構成も変わってきています。
いろいろな構成のDSPがありますが、
おおむね共通する特徴としては下記があります。
- 高速な乗算器、または、積和演算器
- 同時に2ワード以上のデータを読み書きできるメモリ
複数のメモリを使うものが多い。
例えば、プログラムメモリ×1、データメモリ×2のDSPは多い。
- 畳み込み演算1回のスループットは1命令以下
- 複数の演算器が同時に動く
VLIW (Very Long Instruction Word) 的なものが多い
- 信号処理向アドレス計算
リングバッファ (フィルタ用)、
ビット反転 (FFT用) など
汎用計算機による畳み込み演算
汎用計算機の構成
汎用の計算機で1タップの畳み込み演算を行うには、
以下の処理が必要になります。
- アドレス計算
- メモリから係数 hi 読み出し
- メモリから信号 x(n-i) 読み出し
- 乗算 hi×x(n-i)
- 累算 (加算)
ここまではDSPと同じです。
このためには、メモリとCPUの間で、以下のデータ転送が必要になります。
- アドレス計算命令読み出し
- 係数 hi 読み出し命令を読み出し
- 係数 hi 読み出し
- アドレス計算命令読み出し
- 信号 x(n-i) 読み出し命令を読み出し
- 信号 x(n-i) 読み出し
- 乗算 hi×x(n-i)命令を読み出し
- 乗算 hi×x(n-i)
- 累算 (加算)命令を読み出し
- 累算 (加算)
このように、メモリからプログラムやデータを読み出す回数が非常に多くなり、
実行時間が長くなってしまいます。
また、乗算命令を持たない場合や、持っていても低速な場合は、
処理時間は非常に長くなります。
独立した命令キャッシュとデータキャッシュを持つ計算では、
プログラムとデータを同時に読み出せるため、
メモリからの読み出しに要する時間は短くできます。
しかし、データ2個を同時に読み出すことは難しいため、
この部分は短縮できません。
仮想的なDSPを用いて動作を説明します。
やや古いが典型的な構成になっています。
NECのμPD-77230やTexas InstrumentsのTMS320C30などは
これに近い構成になっています。
ブロック図は以下のようになります。
仮想DSPのブロック図
このDSPは、
- 3個のメモリ
プログラム×1、データ×2
- 乗算器
- 算術論理演算ユニット (Arithmetic-Logic UNIT, ALU)
- レジスタ
を持っています。
データバスが2本あり、
2個のデータメモリから同時に乗算器へデータを送れるようになっています。
乗算器出力を直接算術論理演算ユニットに送ることができるので、
積和演算を効率よく実行できます。
各演算器は同時に動きます。
仮想DSPによる畳み込み演算
仮想DSPによる畳み込みのデータフロー
1タップの畳み込み演算を行うには、
以下の処理が必要になります。
- アドレス計算
- データメモリ1から係数 hi 読み出し
- データメモリ2から信号 x(n-i) 読み出し
- 乗算 hi×x(n-i)
- 累算 (加算)
この処理を1タップ/1命令のスループットで実行します。
レイテンシは3命令になります (3命令後に結果が出てくる)。
4タップの処理例を示します。
6命令で処理しています。
Nタップだと、N+2命令で処理できます。
4タップの畳み込み
命令 |
RAM 1 |
RAM 2 |
乗算器 |
ALU |
アドレス |
1 |
h0読み出し |
x(n)読み出し |
|
|
更新 |
2 |
h1読み出し |
x(n-1)読み出し |
h0×x(n) |
|
更新 |
3 |
h2読み出し |
x(n-2)読み出し |
h1×x(n-1) |
ACC+=h0×x(n) |
更新 |
4 |
h3読み出し |
x(n-3)読み出し |
h2×x(n-2) |
ACC+=h1×x(n-1) |
|
5 |
|
|
h3×x(n-3) |
ACC+=h2×x(n-2) |
|
6 |
|
|
|
ACC+=h3×x(n-3) |
|
[上へ]
[目次]
[次へ 第1世代SHARC DSP]