Digital Signal Processor


かなり久しぶりの更新。ここしばらく研究で手一杯だったためちっとも更新できなかったが、研究会での発表も無事終わり一段落したので、久しぶりに更新する気になった。せっかくなので、研究で使っているDigital Signal Processor (DSP)というものについて書いておこう。
DSPはディジタル信号処理に特化したプロセッサで、Texas Instruments (TI)が大きなシェアを持っている。研究で使用しているのもTI製のDSPなので、ここでは主にTI製のDSPについて書こうと思う。
DSPと汎用のプロセッサとの大きな違いは掛け算機がハードウェアで搭載されれている点。これは、ディジタル信号処理というのが主に足し算と掛け算で行われるため。何とかフィルタにしろ何とか変換にしろ、結局掛けて足している。よって、汎用のプロセッサには通常は搭載されていない掛け算機を演算ユニットとして持つことで処理を高速に行っている。また、命令を格納するメモリとデータを格納するメモリが別にあり各々が別のバスにつながっているため、ロスを少なくできるというのも特徴的。この仕組みはハーバードアーキテクチャと言われている。
また、DSPではリアルタイム処理が要求されることが多いのでDSP/BIOSというOSもリアルタイム処理に特化されているし、ソフトウェアパイプラインといった並列処理のための命令も実行できたりする。そう考えると、DSPはいわゆるCISCの系統に属するのかも知れない。
DSPはさまざまなペリフェラルと一緒にボードとして提供されているものもあるが、企業が使う場合は石だけ買ってきて自分で必要なペリフェラルとくっつけるというのが一般的らしい。
かなりハードに近い層のプログラミングだし、アーキテクチャも色々特殊だし、リアルタイム処理なら最適化も必要だし、固定小数点ならそのあたりのケアも必要だし、と色々大変だが実際使うとかなり勉強になることが多い。
ということで、これからも研究がんばろうと思う今日この頃。