用途によるプロセッサの区別は、チップメーカーが、ハードウエアだけでなく、リファレンスデザインも提供するようになったという傾向を反映したものである。リファレンスデザインには、特定用途向けのソフトウエアコンポーネントなどが含まれる。
今日、開発者は、オーディオ/ビデオ信号の圧縮/符号化/復号化など、ますます増大する多種多様なデジタル信号処理機能について、用途別に実装されたものを購入することができる。そのような環境であるため、開発者の着眼点は、「中核機能をどのように構築するか」から、「実装が、性能、価格、エネルギー効率、開発期間のすべての要件を満たすかどうか」に移行してきている。つまり、処理性能やエネルギー効率、アルゴリズムの柔軟性などで総合的にバランスがとれたシステムを提供することができれば、競争がますます激化する業界において、一歩先を行くことができるのだ。
IC製品/リファレンスデザインにバンドルされるソフトウエアでは、その内部で行われる信号処理の詳細がユーザーに明らかにされていない場合が多い。例えば、タッチセンサーは非常に人気の高い機能であり、2009年には多くのプロセッサベンダーが、自社製品におけるタッチセンサーのサポートを開始したり更新したりしていた。多くの場合、そのサポートには開発キット(デモキット)の提供が含まれ、それには、プロセッサとともにソフトウエアが同梱されている。それらを用いれば、開発者は容易にタッチセンサーの活用法を習得できる。その際にソフトウエア開発者は、タッチセンサーへのアクセス方法として、複雑さを隠蔽したAPI(Application Programming Interface)を用いることになる。タッチセンサーを管理/活用するのには、膨大な量の信号処理が必要となる。特にマルチタッチ製品では、タッチ入力による位置情報の信頼性を高めるために、信号のフィルタリングや校正が行われる。プロセッサベンダーは独自のタッチセンサー技術を構築しており、フィルタリングや校正などの面倒で複雑な処理を隠蔽してくれる。このことにより、開発者はコマンドジェスチャの認識など、より高レベルのタッチ入力の解釈に専念することが可能になるのだ。
APIを利用した隠蔽によって、デジタル信号処理は“見えない技術”へと移行しつつある。このような状況であるためか、プロセッサベンダーやサードパーティから提供される実装の詳細については、特に気にしないというソフトウエア開発者が増えているという。そうした実装では、アセンブリ/C言語で記述されたソフトウエアに対して、コンパイラ組み込み関数を多用しながら手作業で最適化することにより、基盤となるハードウエアの性能を最大限に引き出すといったことが行われている。そのようにして最適化された実装の詳細を、APIにより、開発者に対して隠蔽することができる。
チップメーカーがソフトウエアも提供することで、信号処理の専門知識を持たないソフトウエア開発者が、アルゴリズムの実装についてゼロから習得する必要がなくなる。このことから、チップメーカーはさらに広範囲のソフトウエア開発者をターゲットとすることができる。ソフトウエア開発者はシステムの付加価値を高められる部分を、なじみ深いC言語を用いた設計フローで開発することができ、ライセンス提供される「かなり手が加えられたタイミングクリティカルなコード」については気にかける必要がない。
APIに代表される新たな抽象レイヤーにより、気軽に信号処理を利用するユーザーの爆発的な増加に対応することができる。だが、一方でチップメーカーの開発作業はさらに複雑になるだろう。最終製品のソフトウエアを開発する技術者は、上述したようなライトユーザーだけではない。中級/上級のユーザーは、革新的な開発を行うために、これまでと同様、ソフトウエアに対し細部にわたる可視性を求める。米Atmel社でアプリケーション開発者を務めるPiergiovanni Bazzana氏は、同じカテゴリの最終製品を開発する2社に、DSPを内蔵する同一のマイクロコントローラを供給したケースを紹介してくれた。
それによれば、規模の小さいほうのA社(仮名)は、マイクロコントローラとDSPの両方の開発に対し、単一のグラフィカルプログラミングツールを使用したいと考えた。A社では、このプロジェクトに従事する人員が少なく、また、規格に準拠した標準的なアルゴリズムの実装を目的としていたためである。
それに対し、規模の大きいほうのB社(仮名)は、マイクロコントローラとDSPに対して、個別の開発ツールを望んだ。開発人員が多かっただけでなく、アルゴリズムの実装に新しい手法を取り入れたいと考えていたので、両プロセッサの詳細を知る必要があったからだ。
標準的なアルゴリズムを対象とする設計には、ライブラリを利用する手法が適している。チップメーカーでライブラリの開発を担当する技術者は、規格のドキュメントやリファレンスコードを読んで理解する必要がある。それによって、規格に準拠しつつ、プロセッサのアーキテクチャに対して最適化されたソフトウエアを開発することが可能になる。結果として、チップメーカーは、複数の顧客に対して共通したライブラリを提供できるようになる。
一方、新しいアルゴリズムを実装しようと考える技術者は、用途に対して実装を最適化するだけでなく、アルゴリズムを改良するために、アーキテクチャの物理的な特徴に対しても最適化を図る必要がある。この場合、C言語ベースの手法を用い、必要ならばコンパイラ組み込み関数を使用する方法が適している。ライブラリを利用する手法にはない柔軟性が得られるからだ。
Copyright © ITmedia, Inc. All Rights Reserved.