DSPとは?


「DSP」という略号

 「DSP」という略号は、

  1. Digital Signal Processor (ディジタル信号処理用プロセッサ)
  2. Digital Signal Processing (ディジタル信号処理)
の二種類の意味で使われることがあります。 ここでは、プロセッサの意味で使っています。


DSPの特徴

 DSP (Digital Signal Processor) は、 ディジタル信号処理に特化したマイクロプロセッサです。 古典的なDSPは、ディジタル信号処理でよく用いられる畳み込み演算
convolution
を高速に処理できるように作られていました。 これは、非再帰形フィルタ Block diagram of an FIR filter
の出力を計算するものです。 最近のDSPは、 動画・オーディオ等のマルチメディア処理、 携帯電話等の音声圧縮、 データ通信用のモデムや等化器も考慮して、 構成も変わってきています。 いろいろな構成のDSPがありますが、 おおむね共通する特徴としては下記があります。


汎用計算機による畳み込み演算

General-Purpose Computer
汎用計算機の構成

 汎用の計算機で1タップの畳み込み演算を行うには、 以下の処理が必要になります。

  1. アドレス計算
  2. メモリから係数 hi 読み出し
  3. メモリから信号 x(n-i) 読み出し
  4. 乗算 hi×x(n-i)
  5. 累算 (加算)
ここまではDSPと同じです。 このためには、メモリとCPUの間で、以下のデータ転送が必要になります。
  1. アドレス計算命令読み出し
  2. 係数 hi 読み出し命令を読み出し
  3. 係数 hi 読み出し
  4. アドレス計算命令読み出し
  5. 信号 x(n-i) 読み出し命令を読み出し
  6. 信号 x(n-i) 読み出し
  7. 乗算 hi×x(n-i)命令を読み出し
  8. 乗算 hi×x(n-i)
  9. 累算 (加算)命令を読み出し
  10. 累算 (加算)
このように、メモリからプログラムやデータを読み出す回数が非常に多くなり、 実行時間が長くなってしまいます。 また、乗算命令を持たない場合や、持っていても低速な場合は、 処理時間は非常に長くなります。

 独立した命令キャッシュとデータキャッシュを持つ計算では、 プログラムとデータを同時に読み出せるため、 メモリからの読み出しに要する時間は短くできます。 しかし、データ2個を同時に読み出すことは難しいため、 この部分は短縮できません。


仮想DSP

 仮想的なDSPを用いて動作を説明します。 やや古いが典型的な構成になっています。 NECのμPD-77230やTexas InstrumentsのTMS320C30などは これに近い構成になっています。 ブロック図は以下のようになります。

Virtual DSP
仮想DSPのブロック図

 このDSPは、

を持っています。 データバスが2本あり、 2個のデータメモリから同時に乗算器へデータを送れるようになっています。 乗算器出力を直接算術論理演算ユニットに送ることができるので、 積和演算を効率よく実行できます。 各演算器は同時に動きます。


仮想DSPによる畳み込み演算

convolution by Virtual DSP
仮想DSPによる畳み込みのデータフロー

 1タップの畳み込み演算を行うには、 以下の処理が必要になります。

  1. アドレス計算
  2. データメモリ1から係数 hi 読み出し
  3. データメモリ2から信号 x(n-i) 読み出し
  4. 乗算 hi×x(n-i)
  5. 累算 (加算)
この処理を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]