検索
特集

マルチプロセッサのアーキテクチャ最適な設計を行うための基礎知識を整理する(2/4 ページ)

シングルコアのプロセッサでは、アーキテクチャに関して適切な分類を行うことで、それぞれが得意とする分野を理解することができた。マルチコアのプロセッサについても、同様なことが言える。適切な分類を行うことにより、チップ開発者、ボードレベルのシステム設計者、ソフトウエア開発者、開発ツールベンダーの間で、各種用途で用いられる用語や主要要件に対する認識の共有を図ることが可能になる。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

マイクロコントローラ

 マイクロコントローラは、柔軟性、処理性能と引き換えに、コストの低さと電力効率の高さを実現する特殊なプロセッサである。コスト面での利点は、メモリーとペリフェラル(周辺機能)を1つのパッケージに搭載することで実現している。一方、電力効率の高さは、低いクロック速度をサポートすることと、制御処理を実行するための回路を最小限に抑えることで実現する。

 より大きな(あるいは小さな)メモリー、異なるペリフェラルセット、より高いクロック速度といった柔軟性が必要になった場合には、マイクロコントローラを別のものに変更する必要がある。この変更を可能とするために、プロセッサベンダーは、メモリー容量、ペリフェラルセット、サポートするクロック速度が異なる多様なマイクロコントローラ製品ファミリを提供している。それにより、開発者が柔軟性を犠牲にすることなく、最大のコスト/電力効率を享受できるようにしているのである。

 マイクロコントローラが得意とするのは、外部の実世界の事象に決定的(Deterministic)に対応しなければならないシステムの処理である。例としては、遅延に関する要件の厳しいモーター制御などが挙げられる。

 マイクロコントローラは、優先度付きのコンテキストスイッチングを迅速かつ頻繁に実行することができる。また、多くの異なるコンテキストを処理することも可能だ。コンテキストスイッチングの処理に関する一般的な差異化要因の1つは、高度なハードウエア割り込み処理を採用することである。すなわち、外部の事象を検知し、それに反応してマイクロコントローラの内部コンテキストを数クロックサイクルで変更できるようにするのだ。あるいは、プロセッサコアとは独立したペリフェラル間通信のためのコプロセッサを用い、システムのコンテキストスイッチングのオーバーヘッドをなくす方法もある。また、キャッシュやパイプラインを使用しないことで、キャッシュミスやパイプラインフラッシュで生じる遅延を原因とする不確実性を回避し、決定的動作の面での差異化を図っている製品も存在する。

 マイクロコントローラ製品のサプライヤは、ペリフェラルセット、オンチップメモリー、クロック速度の範囲、パッケージオプション、いくつもの電源管理手法、決定的動作のレベル、開発サポートなどにより、デバイスの差異化を図っている。マイクロコントローラを使用するプロジェクトは、コスト重視であることが多いため、プロジェクトの実現に本当に必要なペリフェラル/オンチップメモリーのみを提供することが望ましい。高いクロック速度をサポートするには、オンチップのフラッシュメモリーへのアクセス遅延を緩和するためのデータバス幅を拡大するなど、マイクロコントローラのサプライヤが採用できる手法はいくつもある。また、マイクロコントローラの電源管理手法として、スリープモードや低消費電力モードなど、さまざまな粒度でプロセッサのリソースの一部を停止する実装手法がいくつも存在する。こうした詳細な実装の違いが、主要な機能に変更を加えることなく、マイクロコントローラを差異化する要因となっている。

 マイクロコントローラで用いるソフトウエアには、開ループ/閉ループ制御のアルゴリズムや、実世界からの入力をフィルタリングする処理などが実装される。マイクロコントローラは、マルチコアを利用したボードレベル/システムレベルの組み込み設計でよく使用される。システムの監視、分散制御、簡単なユーザーインターフェースの管理、システム上の部品の消費電力管理(電源のオン/オフ)などが主な用途だ。また、DSPとともに1つのチップに搭載することで、DSPの欠点を補完する効率的な手法として用いられる場合もある。

DSP

 DSPは、柔軟性、処理性能と引き換えに低コスト化と高い電力効率を実現する点で、マイクロコントローラと似ている。しかし、ほとんどの信号処理で見られる連続的/反復的な計算における性能を最大限に引き上げるために、コンテキストスイッチングの処理効率を犠牲にしている点が、マイクロコントローラとはまったく異なる。

 また、DSPにはあまり多くのペリフェラルを集積しない。多数のペリフェラルを扱う上では、コンテキストスイッチングの処理性能が重要であるためだ。最も一般的に集積されるペリフェラルはA-Dコンバータである。A-Dコンバータは、実世界の処理データストリームを収集するために使われる。

 DSPでは、分数の計算性能と電力効率を最適化するために、固定小数点演算をサポートする場合が多い。特殊なアドレスジェネレータを用いて、配列、循環バッファ、ビット反転値を扱うアルゴリズムの最適化が図られる。複数のバスとメモリー構造を採用することで、複数のメモリー演算の同時実行を可能とし、連続的なシングルサイクルMAC(積和)演算をサポートする。メモリーアクセスを最小化し、オーバーヘッドのないループ処理を実現するための特殊なレジスタを採用するケースもある。

 DSPが得意とする分野は、連続的で一様なデータストリームを処理するシステムである。特に、そのストリームに対する大規模な計算処理が実行される用途が適している。具体例としては、VoIP(Voice over Internet Protocol)が挙げられる。VoIPのアルゴリズムには、独特のデータ圧縮処理に多数の制御状態や決定が関与するため、例えばFPGAのみで処理したりするよりも、DSPを利用したほうが最適に処理できる。

 通常、DSPのソフトウエア開発には、信号処理アルゴリズムの知識が必要となる。そこで、DSPアプリケーションの開発者を支援するために、特定用途向けの解析/開発ツールやライブラリが数多く提供されている。

 DSP製品のサプライヤは、特定用途向けのハードウエアアクセラレータを搭載したり、複数の実行ユニットの同時動作をサポートするためのSIMD(Single Instruction/Multiple Data)またはVLIW(Very Long Instruction Word)アーキテクチャを実装したりすることにより、デバイスの差異化を図る。最近のDSPでは、直交命令セットを使用することで、大部分のコードにアセンブリ言語ではなくコンパイル済みのCコードを使用できるようになっている。信号処理のプログラミングには、制御系プログラムやアプリケーションプログラムの開発とは異なる経験やスキルが必要になる。そのため、DSPでは信号処理ライブラリの整備が重要な差異化要因になる。それにより、プロジェクトの早期立ち上げが可能になるからだ。また、アプリケーションソフトウエアの開発者が、信号処理アルゴリズムのプログラミング方法を理解しなくても、DSPをコプロセッサとして使用できるようになる。

 DSPは、一般的にマルチコア構成の組み込み設計に使用される。設計者は、制御/アプリケーションの処理を補完するマイクロコントローラやマイクロプロセッサとDSPを組み合わせることが多い。また、大規模な演算処理を実行するために、ハードウエアアクセラレータやFPGAと組み合わせることもよくある。もう1つの一般的なマルチコア構成は、画像処理のように、DSPコアのクラスタ/アレイを、複数のデータストリームやワイドストリームに対して互いに連携して動作させる使い方だ。DSPのアレイには、ボードレベルで接続された数十個のコアが使われる場合がある。

DSC

 DSCという分類は、新たに考え出されたものである。DSPとマイクロコントローラの機能を単一のプロセッサとして統合したものであるため、2007年ごろまでは、「ハイブリッドプロセッサ」、「ユニファイドプロセッサ」などと呼ばれていた。

 DSCが得意とする分野は、高速なコンテキストスイッチングに加えて、大量の信号処理を実行する能力が必要なアプリケーションである。すなわち、DSCは、マイクロコントローラとDSPという2つの異質なプロセッサコアを必要とするケースに対応可能だ。

 DSCを利用すれば、システムのBOM(Bill of Materials)コストを低減することができる。また、ソフトウエア開発者向けツールのコストも削減可能だ。ただし、ソフトウエア開発者は、制御系、信号処理系のプログラミングを詳細に理解しておく必要がある。

 DSCは比較的新しいものなので、設計者はそれらをマルチコア設計に活用する経験をあまり持ち合わせていない。DSCが開発された当初の目的は、マルチコア設計に用いているマイクロコントローラとDSPを、信号処理と制御処理の両方のコードを含む単一の命令スレッドを実行可能な単一のデバイスに置き換えることであった。現在では、デュアル版のDSCがシングルチップとして提供されるまでになっている。

 1つの設計に複数のDSCを使用する理由の1つは、正常時には一方のコアを制御プロセッサとして使い、もう一方を信号処理プロセッサとして使用したいからである。その際、一方の機能の負荷が他方よりも過度に高くなったら、すべてのコアが同じ種類の処理をサポートするように設計する。これによって、コア間での負荷分散をより容易に行うことができる。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る