携帯電話端末の中のDSPって何するの?

こんにちはuzakadeuです。


前二回はDSPファーム開発の前夜として二つの仕事の話をしました。

今回は携帯電話端末の中のDSPって何するの?という話をします。


携帯基地局の仕事が終わってから2,3ヶ月JavaCORBAの仕事を手伝っていたら、新しい仕事の話が持ち込まれました。携帯電話端末の中のDSPのプログラムを作る仕事です。でもよくわかりません...

ケータイのDSPって何するの?

はじめて携わった機種の開発期間は4ヶ月くらいしかなく、目の前の仕事(外国出張、外国との方との技術的な交渉、チップの調査、コーディング)に懸命だったので、なかなか疑問を考える時間がありません。結局この疑問が解消されたのはずいぶん後になってからでした。


携帯電話端末のDSP(アプリケーションDSP)の役割は大まかに次のとおりです。

  • CPU(アプリケーションCPU)からの依頼をきっかけとして
  • CPUとは並行して
  • 音声、静止画、動画の符号化と復号を行う。

CPUから見るとコーデックを専門とするコプロセッサみたいなものですね。


・・・


少し話題がずれます。
CPUと並行して動くということは次の特性を持つことになります。

  • 雑多な処理から解放されて符号化と復号に専念できるので、処理時間の予測がしやすい
  • 設計がシンプルになり単体の開発効率が上がる
  • CPUとDSP間の通信仕様(手順とタイミング)を厳密に定義する必要がある。
  • 電力がもったいないので、空き時間をなるべく多く作り、その間はスリープしなければならない。

CPUとDSPおよびその他周辺機能がパッケージにまとめられた統合チップでは次の特性も追加されます。

  • CPU側のプログラムを用意するまで単体では電力さえ供給されない
  • 何もしない時は電力を一切カットされる(リセットホールド)。


「単体では電力さえ供給されない」ということは、必然的にCPU側のプログラムを先に用意しなければならないのですが、DSPファームの開発はCPU側のプログラムよりかなり先行させられる*1のです。
けっきょく相当な時間を使って、DSPのテストにだけ使うCPU側のプログラムを作っていました。

おかげで
CPUのバグに振り回されず純粋な単体評価ができる
ので、開発効率がとてもよくなり、たいへん助かりました。


今回は携帯電話端末のDSPの役割が伝われば幸いです。

*1:理由は知らない。うすうすとは分かるけど。