• 公開日:2021年03月26日
  • | 更新日:2022年11月30日

まだまだ現役!?DSPコアを活用してみよう

はじめに

積和演算に特化したDSPコアは、画像や音声など様々なデジタル信号処理に利用されています。また、リアルタイム性を実現するためには、信号の入力から、演算、結果の出力までを高速に処理しなければなりませんが、とりわけDSPコアによる演算処理が重要になります。本稿では、DSPコアを効果的に使用する方法について、Texas Instruments社(以下TIとします)のC6000 DSPコアのアーキテクチャを踏まえて説明いたします。

TI C6000 DSPコアについては、以下の記事でも紹介していますので、ぜひ御覧ください。

マイコンとはここが違う!デジタル信号処理に特化したDSPとは?

 

DSPコアのアーキテクチャ

C6000 DSPコアは、固定小数点のコア開発から始まり、世代を重ね、浮動小数点命令をサポートし、当初は最大動作周波数が300MHz程度あったコアが、現在では1.4GHzで動作可能なまでに進化しています。C66x DSPコアであれば、1GHz動作時において、32GMACS(Giga Multiply and Accumulation per Second)と16GFLOPS(Giga Floating operation per Second)を実現しており、動作周波数だけを見ても演算能力が向上していることがわかります。

出典:Texas Instruments – Introduction to TMS320C6000 DSP Optimization
https://www.ti.com/lit/an/sprabf2/sprabf2.pdf

 

C6000 DSPコア内部には、L、S、M、Dの演算ユニットがそれぞれ2つ、計8ユニットが存在し、各演算ユニットが独立動作しています。つまり、DSPコアのパフォーマンスを最大限に活用するためには、この8つの演算ユニットをいかに効率よく並列動作させるかにかかっています。この並列動作を用いたループ処理をソフトウェア・パイプラインと呼びます。

C6000 DSPコア内部構造

 

ソフトウェア・パイプライン

ソフトウェア・パイプラインはループ処理を高速に動作させる最適化手法の一つですが、ソフトウェア・パイプラインの仕組みについて見ていきましょう。ここでは例として、積和演算をループ処理させるケースを想定します。積和演算は下記のシグマ式で表されます。

この積和演算をC6000 DSPのアセンブリ命令に置き換えます。

配列aとxへのロード命令(LDH) が2回、積算(MPY)と加算(ADD)命令をそれぞれ1回ずつ実行するループ処理を5回ループ(count=5)させた場合、各アセンブリ命令は1サイクルで実行されますので、このループ処理は計15サイクルかかります。

 

下図はサイクル毎の演算ユニットと実行命令を示しています。

ソフトウェア・パイプライン処理を用いて、演算ユニットの隙間を詰めていくことで、ループ処理の実行サイクルを短縮させることができます。なお、このソフトウェア・パイプライン化はコンパイラの設定によって自動的に生成させることができます。

 

ソフトウェア・パイプライン化しやすいプログラムの書き方

基本的にはループ処理をソフトウェア・パイプライン化することで高速化/効率化が期待できますが、すべてのプログラムがソフトウェア・パイプライン化されるわけではありません。ここでは、ソフトウェア・パイプライン化され易いプログラムについて一例をご紹介いたします。

以下のプログラムの様に、for文内にif文などの条件分岐が存在する場合、ループ構造を構築できず、ソフトウェア・パイプライン化が阻害される可能性があります。このような場合は、if文の条件ごとにfor文処理を分離させることで、この問題を回避することができます。
※for文処理の分離によって、必ずしもソフトウェア・パイプライン化されるということではありません。

例えば、カメラからの画像をDSPに取り込みデジタル信号処理を行う場合、カメラ入力画像に含まれる、「ブランキング」部分とデジタル信号処理を行う画像データに分離して、それぞれfor文で処理するプログラムに変更することで、より高効率なソフトウェア・パイプライン化が期待できます。

まとめ

ソフトウェア・パイプライン以外にも、SIMD(Single Instruction Multiple Data)命令を用いたり、キャッシュ/メモリアロケーションを工夫したりすることによって、DSPコアを効率的に使うことができます。複数コアや演算用にFPGAを用いていた既存システムをDSPデバイス1つにまとめることができるかもしれません。

より詳しい情報をお求めの方は以下からお問い合わせください。

お問い合わせはこちらから!

関連情報