マルチプロセッサのアーキテクチャ:最適な設計を行うための基礎知識を整理する(4/4 ページ)
シングルコアのプロセッサでは、アーキテクチャに関して適切な分類を行うことで、それぞれが得意とする分野を理解することができた。マルチコアのプロセッサについても、同様なことが言える。適切な分類を行うことにより、チップ開発者、ボードレベルのシステム設計者、ソフトウエア開発者、開発ツールベンダーの間で、各種用途で用いられる用語や主要要件に対する認識の共有を図ることが可能になる。
マルチコアのアーキテクチャ
ここまで、シングルコアのプロセッサの各種アーキテクチャの分類とそれぞれの特徴について説明してきた。ここからは、マルチコアシステムのアーキテクチャについて考える。
本稿の冒頭で説明したように、マルチコアという用語はさまざな意味で使われる。従って、本稿におけるマルチコアという語の意味も標準的な定義だというわけではないが、ここではマルチコアという語を使って、いくつかのアーキテクチャの機能レベルの説明を提示したいと考えている。組み込み機器の開発者は、これらマルチコアアーキテクチャのうちの1種、あるいは複数種を1つの設計に取り入れることができる。
■チャンネル型
まず最初に取り上げるのは、チャンネル型のマルチコアアーキテクチャである。このアーキテクチャのターゲットは、ネットワークインフラ機器における並列性の高い処理など、多数の入力ソースに対して同時に同じ種類の処理を適用する用途となる。各入力ソースに対する処理は、ほかの入力ソースに対する処理から比較的独立している。このようなシステムは、同一の処理エンジンを複数搭載し、複数のデータチャンネルに対して各処理エンジンが同一の処理を適用するようになっている。システムには同一種類の複数の処理リソースがあり、それらは各処理エンジンに対して個々に割り付けられる。そのため、共有アクセス機構によって同一リソースにアクセスするタイプのアーキテクチャよりも遅延が小さくなり、処理性能が高くなる。処理エンジンの性質は、特定用途向けであるが、単一の機能向けに制限されるというわけではない。
このような特徴を持つシステムのソフトウエア開発では、システムによるプログラムリソースの管理を最小限に抑えるために、入力ソースに対する分野特有の処理の最適化に注目する。
■集約型
集約型のマルチコアアーキテクチャは、映像/画像の処理など、単一の命令スレッドで実行することが適していない処理タスクをターゲットとする。処理エンジンは、タスク全体の中の別々の部分を実行する複数の同質/異質な処理エレメントから成る。そして、何らかの方法で個々の処理エレメントからの結果を集約し、処理を完了する。
この種類のマルチコアシステムは、ハイエンドの信号処理/シミュレーションシステムとして数十年前から存在する。この領域では、プロセッサのクロック速度が頭打ちの状態になっている。従来のような急速な高速化が望めなくなるに連れて、集約型のマルチコアアーキテクチャは、高性能処理においてますます重要になりつつある。
また、開発者によるソフトウエアの並列性抽出を支援するツールに関して、多くの研究が行われている。ただし、現時点では、任意のコードを自動的に並列化することが可能で、すでに広く普及しているツールは存在しない。信号処理アルゴリズムを構築するために、そのドメインの専門家によるアルゴリズム構造の決定を支援する特定ドメイン向けの解析ツールはすでに存在するが、この種のシステムに合わせて、アルゴリズムやソフトウエアを完全に自動的に並列化することはできない。
■マルチドメイン型
マルチドメイン型のマルチコアアーキテクチャは、携帯電話機をはじめとする多くの民生機器、自動車など、複数のソフトウエアドメインにまたがるアプリケーションをターゲットとする。こうした分野では、何十年も前から組み込みマルチコアの設計が数多く行われている。こうしたシステムでは、コアとコアとの間で、何らかのカップリングや通信が生じる。システム内の各処理エレメントとしては、実行する機能にとって最適なものであるだけでなく、システム内のほかの処理エレメントと互いに連携/補完し合って動作可能なものを選択しなければならない。
マルチドメイン型のマルチコアアーキテクチャを実現するものとして、シングルチップまたはマルチドメイン/マルチコアのデバイスが、豊富なビデオ機能をサポートするモバイル機器などをターゲットとして供給されている。ソフトウエア開発者は、ターゲットとする処理エンジンの個々の特徴を把握しており、タスクに適切な解析/開発ツールを選択して使用する。なお、この種類のシステムでは、各プロセッサが異なるオンチップリソースを持ち、チップによってそれらのリソースの見え方が異なる可能性があるため、デバッグは困難な作業となる。
■フィードバック型
フィードバック型のマルチコアアーキテクチャは、機能を実行するために、サブシステム内、サブシステム間、またはシステムの異なるドメインに対するフィードバックループを備える。ターゲットとなるアプリケーションは自律型システムなどである。この種のシステムでは、中央集約型のコマンドユニットを採用したり、分散する意思決定部の決定を集約したりすることになる。
このアーキテクチャのフィードバックループは、アクチュエータの検知/制御用の単純なものから、システムの傾向把握、予測、計画、学習を支援することが可能なより大規模なものまでさまざまである。このような設計は、主に学術機関、航空/宇宙、軍事の分野に存在していたが、新たに産業/民生分野にも進出しつつある。候補となる産業システムの一例としては、分散した意思決定部の間でシステム全体のリソースを管理するスマートビルが挙げられる。民生分野の候補には、自動車の自動アクティブ機能や、掃除機などの家庭用電気製品がある。
ソフトウエア開発者には、フィルタ、信号処理、制御アルゴリズム、および閉ループシミュレーションを対象とした解析/開発ツールの集合が必要になる。それらは統合され、互いに連携するものでなければならない。
収束に向けて
シングルコアアーキテクチャの時代には、本稿で述べたような分類により、チップ開発者、ボードレベルのシステム設計者、ソフトウエア開発者、開発ツールベンダーの間で、各分野で用いられる用語や主要要件はうまく収束していた。各種プロセッサには、チップ、ボード、ソフトウエアの各設計をサポートするベンダーの集合で構成されるエコシステムがある。複数種のプロセッサにわたって製品やサービスを提供するハードウエア/ソフトウエア企業においても、それぞれ異なるチームが各プロセッサ市場をサポートしている。
マルチコアシステムの市場は、実装や性能の詳細ではなく、機能的な能力に着目して用語と要件を収束させるとよいかもしれない。SMPかAMPかという1つの一般的な議論ではなく、各マルチコアのカテゴリごとに議論が繰り広げられるべきだ。コアの構成や、コヒーレンシ機構、サポートするOS、さらにはメッセージング、マルチスレッド、仮想化、ハイパーバイザ、コードの並列化、負荷分散の各機能についても同じことが言える。まずは、必要な機能的能力を提供する最適な構成を定義/確立することである。それにより、チップ開発者、ボードレベルのシステム設計者、ソフトウエア開発者は、それぞれが構築したものをその場しのぎに組み合わせるのではなく、技術的手法をすべての利害関係者の間でどのように割り当てるかという意味のある議論を行えるようになる。
Copyright © ITmedia, Inc. All Rights Reserved.