メディア
連載
» 2012年06月29日 15時02分 公開

イチから学ぶDSP基礎の基礎(2):専用プロセッサとしてのDSPの特徴 (2/3)

[日本テキサス・インスツルメンツ]

DSP出現の時代背景(1970年代に整ったDSP誕生の環境)

 1970年代半ば、米国ベル研究所などを中心に進められたデジタル信号処理の理論研究の成果が教科書としてまとまった形で現れ、信号処理技術が世に広まりました。そして、マイクロプロセッサの普及もちょうど1970年代の出来事です。1974年に実用的な8ビットCPUである8080が発表され、1978年には16ビットの8086が登場しています。

 デジタル信号処理技術の普及と、それをLSIとして具体化するための半導体技術の進歩に支えられて、1970年代末ごろから研究所・大学より試作レベルのDSPの発表が相次いでいます。そして1980年代に入ると誰でも購入して使用することのできるDSPの量産が始まりました。

 当初はマイクロコンピュータ用のプロセッサの陰に隠れて一般の目に触れることは少なかったのですが、デジタル化が進んでいた通信・伝送関係の用途から、DSPは急速に普及していきました。

DSPと汎用CPUの機能比較

 それでは、実際のDSP製品の特徴を知るためにDSPと80x86系のCPUとの機能を比較してみましょう。始めにTIの最初のDSP TMS32010と同時期の8086(Intel)、80286(Intel)を比べてみます(表1を参照してください)。

photo

 TMS32010はμPD7720(NEC)などとともに量産されたDSPの第1世代の製品です。回路規模・集積度から見るとTMS32010は8086と同程度か、80286の中間になります。いずれも製造プロセスはNMOSで、消費電力の問題に対処したCMOSプロセスが一般的になる前の設計です。

限られたメモリのDSPとOS指向の80286

 

 DSPと8086、 80286の大きな違いはメモリ空間の大きさです。TMS32010のプログラム・メモリはわずか4kwordしかなく、データ・メモリはさらに小さく144wordのみです(ハーバード・アーキテクチャのDSPとして独立した2系統のメモリを有してる)。一方、8086では1Mbyte、80286では16Mbyteのより大きいメモリ空間があります。

photo

 けれども、TMS32010は容量は小さいもののプログラム・メモリ、データ・メモリともに内蔵しているので、最小構成では外部メモリを必要としません。外部メモリアクセスのオーバヘッドなしに高速演算が可能です(プログラム・メモリは4kwordのメモリ空間のうち1.5kword分のROMを内蔵)。

 メモリ空間以上に大きな違いがあるのが、スタックサイズです。TMS32010はサブルーチンコールのための専用スタックを内蔵していますが、その大きさは4レベルしかありません。

 内蔵スタックのおかげで、わずか2クロックでサブルーチンコールが可能なのですが、その代わり4重以上にネスティングしたサブルーチンは実行できません。

注:TMS32010では処理速度の制約を許容すれば、外部メモリを使ってのスタック拡張は可能

 これではコンパイラで実行効率の良いコードを生成することなど不可能ですし、OSを動かすことも無理です。8086、80286などの汎用CPUは主メモリの一部をスタック領域として使うので、事実上サブルーチンコールのネスティング・レベルは無制限です。

 80286は、初めてMS Windows Ver.3.0が動いたプロセッサです。80286は8086と比較してメモリ空間が拡大されただけでなく、マルチタスクOSを動かすための仮想記憶機構を内蔵しています。80286はソフトウェア技術の進歩に対応した高級言語・OS指向のCPUであるといえるでしょう。

 以上のように、メモリ構成を見ただけでも、当時のDSPは特定の信号処理アプリケーションを動かすためだけの専用プロセッサとして、非常に性格が強かったことが分かります。

DSPの驚異的な乗算能力

 8086、80286よりメモリ空間の大きさでは劣っていたDSPですが、乗算性能は汎用CPUをはるかに上回っています。TMS32010の16ビット乗算演算の速度は、概算で8086の70倍、80286の20倍の高速です。

 一般的にはデザインルールの古いLSIの方がより進んだデザインルールを用いて設計された製品、すなわち、高集積・高速のLSIよりも1けた以上高速であることはあり得ません(TMS32010のデザインルールは2.7μm、80286のデザインルールは1.5μm)。動作クロックで比較しても、TMS32010は80286の半分のクロックなのに乗算速度は上回っています。

photo 図5 TMS32010の演算器の構成
TMS32010は1クロックで16ビット×ビット=32ビットの乗算を実行可能だが、積和演算(乗算+加減算)には2クロック掛かる。TMS32010のシステムクロック周波数は5MHzなので、積和演算の処理速度を基準にすると、実質的にはクロック周波数2.5MHz相当のDSPとなる。現在のモーター制御用のローエンドの固定小数点DSPよりもTMS32010の性能はずっと低い。乗算器の2つの入力は、いずれも同じデータバスに接続されている(片方の入力とバスの間にはレジスタがある)2つの独立したメモリ/バスを有し、2クロックで2つのデータを同時に乗算器(積和演算器)に供給することができるという古典的なDSPの定義とは、若干異なる回路構成をTMS32010は有している

 このようにDSPが優れた乗算性能を有しているのは、ほかの機能を犠牲にしてでも1クロックで乗算ができる乗算器を搭載しているからです。8086、80286の豊富な命令セットの中には乗算命令も含まれていますが、乗算器を持っていないために乗算処理には数十クロック以上掛かります。

80286でデジタル信号処理をすると乗算器がなければ何もできない

 

 試しに80286でデジタル信号処理をしたらどうなるかを考えてみましょう。ここでは議論を簡単にするために積和演算ではなく乗算演算の速度のみを比較します。

 80286の乗算速度は約4000nsですから、逆数を取って周波数で速度を表すと、1/4000ns=250kHzとなります。サンプリング周波数8kHz(電話程度の品位)で音声処理をするとしたら、わずか30タップ程度のFIRフィルタの演算しかできません。

 これではまったく信号処理の役には立ちません。一方、TMS32010では約600タップのFIRフィルタの処理が可能です(5MHz/8kHz=5000kHz/8kHz≒600)。これは現在のDSPと比較するかなり低い性能でしかないのですが、この当時の主要な信号処理アプリケーションであった比較的簡単な音声圧縮伸張処理、フィルタリング、モデムの変調・復調処理等には見合った能力です。

 基本的な信号処理は単純なパイプライン処理の形になりますから、1個のTMS32010で処理性能が足らなければ、複数を縦続接続してシステムを組んでいました。

 このように、まだLSIの集積度が低く回路規模の制約が大きい中でDSPはほかの機能には目をつぶってでも巨大な乗算器を搭載してデジタル信号処理に必須の乗算性能を追求していたのです。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.