シングルコアのプロセッサでは、アーキテクチャに関して適切な分類を行うことで、それぞれが得意とする分野を理解することができた。マルチコアのプロセッサについても、同様なことが言える。適切な分類を行うことにより、チップ開発者、ボードレベルのシステム設計者、ソフトウエア開発者、開発ツールベンダーの間で、各種用途で用いられる用語や主要要件に対する認識の共有を図ることが可能になる。
プロセッサのベンダーは、シングルプロセッサのアーキテクチャを、それぞれがターゲットとするアプリケーションの種類で分類している。具体的には、マイクロコントローラ、DSP、DSC(Digital Signal Controller:デジタル信号コントローラ)などがあり、それぞれターゲットとする分野の要求を満たすために異なる実装を採用している。このような分類により、設計者は個々のプロセッサの実装の詳細を調査することなく、目的とする用途で候補とすべきプロセッサを迅速に特定することができる。
しかし、例えば低消費電力のマイクロコントローラとDSPにおいて同じ実装手法を採用しつつ、両者をそれぞれマイクロコントローラ、DSPと分類することで、ターゲットが異なることを示す例もある。こうしたことが、現在のマルチコアの分類に混乱を与える要素の1つとなっている。
もう1つ、混乱を招いている大きな要因がある。それは、マルチコアという語は、誰がそれを使用するのかによって意味が異なるということだ。あるときは、システム内の複数のプロセッサのことを指して用いるし、またあるときは、1つのパッケージに複数のコアが収容されている場合に限定して用いる。さらにあるときは、1つのシリコンダイに複数のコアが集積されている場合に限り、この語を用いることもある。加えて、これらすべての場合において、複数のコアが同一であるケースも、異なるものであるケースにも、この語が用いられる。このような使い方により、マルチコアという用語は1つの定義へと収束することができていない。
本稿では、マルチコアという語の最も広義の解釈を採用する。すなわち、複数のプロセッサコアが使われているケースをすべて網羅して考える。その理由の1つは、今日のチップレベルの実装は、一昔前のボードレベルの実装に相当し、上述したような違いによって、ソフトウエアの構築方法が大きく変わるわけではないことだ。ただし、よりアプリケーションに特化した観点から言えば、定義の違いがソフトウエア開発にまったく関係がないとは言えない。ソフトウエアによる処理の種類はほとんどがシングルコアの観点で分類されており、それぞれが異なるプログラミング/解析の知識を必要とし、それを支える異なるツール/ライブラリも必要となるからである。
一部のマルチコアプロセッサは、性能に主眼を置き、いくつのコアをサポートするか、どれだけの帯域幅に対応するか、SMP(Symmetrical Multiprocessing:対称型マルチプロセッシング)構成やAMP(Asymmetrical Multiprocessing:非対称型マルチプロセッシング)構成をサポートするのか否かといったことを提示したものとなっている。また、関連情報として、コヒーレンシ(一貫性)機構、マルチスレッドのサポート、コア間の負荷分散機能の有無や、サポートするOSの種類、共有データ性能といった情報も開示している。ベンダーが提供するこうした情報を基に、ターゲットとするアプリケーションにおけるトレードオフについて検討を行う必要があるだろう。
マルチコアにおいても、シングルコアの場合と同様、ターゲットとするアプリケーションに主眼を置くケースがある。デジタルメディアやネットワーキング、ワイヤレスインフラ、サーバーなどの用途がそれに当たる。しかし、マルチコアの用途は、これらに限られるわけではない。組み込みシステムの設計者は、数十年前から、静かにマルチコアの設計を行い、かつ成功を収めてきている。より包括的なマルチコアの分類を理解するためには、シングルコアのアーキテクチャの分類について理解した上で、それをどのようにしてマルチコアにまで拡張するかを考察する必要がある。
各シングルコアのアーキテクチャには、処理の複雑さに関連した得意分野が存在する。どの種類のプロセッサであれ、ほかの種類のプロセッサが得意とする処理も実行することができるが、それぞれのターゲットにおいて最も必要性の高い処理に最も適したものとなっている。得意分野を理解するための主要な特性として使用されるのは、計算負荷と状態数(コンテキスト)だ(図1)。いずれも、複雑さを表す指標である。
計算負荷とは、システムサイクル内で必要となる処理性能のピーク値、最大値、または実効値のことである。一方、状態数とは、システムがサポートしなければならない、システムの内部状態、入力/出力の数、考えられる状態やコンテキストのレベルのことだ。これらの特性に対し、本稿で広義の定義を提案する理由は、複雑さを緩和し、スカラーデータ/制御フローの管理、集計データ/制御フローの管理、スカラーまたは集計データ/制御フローの多数のチャンネルの管理など、広範囲な処理シナリオを含めるためである。これらの特性はそれぞれ実装とは独立しており、各種プロセッサにおいて、他者とのまったく異なる差異化を可能にする。各種プロセッサは、時の経過とともに異なる速度で進化し、それぞれが一部の性能値を犠牲にして別の性能値を高めていく。
以下では、図1に示した各アーキテクチャについて、それぞれの特徴を中心に説明を進めていく。
Copyright © ITmedia, Inc. All Rights Reserved.