Blackfinとは

投稿 2015/04/09 (木) 午後 03:25 | Blackfin | hotall


DSPと言えば名前の通り、画像処理や音声処理などの信号処理を行うために開発された特別なプロセッサです。デジタルフィルタやフーリエ変換などの積和演算を高速に行えるような構造になっています。

かつては、DSPソフトウェアは組み込みソフトでも特殊な分野であり、我々汎用プロセッサのソフトウェアエンジニアにはなじみが薄く、むしろハードウェアエンジニアが手掛けることが多かったのではないでしょうか。

実際、要求されるプログラムのスタイルも、汎用プロセッサがイベント主体の処理に対し、DSPは連続的な行列計算を主体とするため、設計方法も異質なものになっています。
むしろ、PLAに近く、ある特別な処理を専用に行う、カスタムロジックモジュールとしての扱いとなっていました。

今回の案件では、信号処理はメーカー側から提供されるライブラリを使用するので、複雑なパイプラインによる積和演算アルゴリズムを設計することはなく、その周りのインターフェース部分が主な開発対象となります。
したがって、話が出た当初は従来通りの汎用プロセッサと変わらない案件と高を括っていました。
今回使用するDSPはANALOG DEVICESのBlackfinです。
初めてのプロセッサなので、まずはマニュアル一式をダウンロードして内容を理解します。

概略構成図をざっと見てわかることは、まず、昔の単機能のDSPとは異なり、様々な入出力インターフェースを含んでいます。
この構成を見る限り、高機能なワンチップマイコンのように見えます。

組み込みプログラム製作者にとって、これら周辺インターフェースユニットの理解は重要です。
制御対象となる周辺装置は様々なインタフェースで繋がり、それぞれのインターフェースをハードウェアレベルでサポートするのがこれらインタフェースユニットです。

インターフェースユニットは同じ入出力仕様であってもプロセッサ毎に実装が異なるため、これらの使い方を理解せずにプログラムを作成することはできません。
つまり、インターフェース毎に異なる処理を記述するのは勿論、同じインターフェースであっても、それぞれのCPUの実装に応じた処理を書かなくてはならないのです。

演算ユニットの内部ブロック図を見ると、二つの汎用演算器のそれぞれの入力に乗算器と二つのビデオ処理用演算器が繋がっているのが特徴的です。
高速性を要求される信号処理用を専用の演算器で処理させ、その周辺の処理を汎用演算器で行うという意図でしょう。

しかし、高級言語を使うプログラマから見れば、どのような演算ユニット構成であっても、演算処理についてはコンパイラがレジスタの割り当てや演算ユニットのスケジューリングを行うので、アプリケーションとしてはそれほど意識しないで済むはずです。特に今回は、信号処理をライブラリに頼るので、演算ユニット内の処理は隠蔽されています。

演算器から外へ視線を向けると、演算器とのデータのやり取り行うL1メモリには、多数のDMAユニットが配置されています。
これは、演算器に比べて低速なメモリアクセスにプロセッサコアを使用せず、裏でDMAにやらせるという意図があります。
つまり、この使い方を習熟することが、このCPUを効率的に処理させるのに欠かせないと云えます。

以上のように、入出力インターフェースとDMAの使用方法、特にDMAと入出力インターフェースとの連携については、かなり癖があることは容易に想像できます。
このプロセッサを使用する技術的なリスクはこの辺にありそうです。
« PrevNext »

コメント

コメントはありません。

コメントする