マルチコアプロセッサの種類 - SMP型とAMP型

マルチプロセッサは、SMPとAMPに大別される。SMPは各コアの機能が対称、すなわちどれも皆平等であるのに対し、AMPはコアごとの役割が定められている。これだけを聞くと単なる機能割り当ての話しに思えるかも知れないが、実際のソフトウェアの仕組みは両者で大きく異なる。

AMPでは、それぞれのコアで固有のプログラムが動作する。つまり各コアのプログラムは静的に決定されている。これに対しSMPでは、各コアに対しプログラムが動的に割り当てられる。割り当てはOSにより各コアの負荷に応じて行われるので、効率良くマルチコアを使用することができる。またSMPではアプリケーションプログラムがコア数に依存することがないことも特徴だ(図1)。

図1 AMP型とSMP型のマルチコアプロセッサ

ただし、SMPはシングルコアと比べてプログラムのスケジューリングが大きく異なるため、従来のプログラムとの互換性と移植性が低くなる傾向にある。反対にAMPはコアごとにはシングルコアと同等のスケジューリングが行われるため、互換性および移植性は高い。

SMPとAMPはそれぞれ長所と短所を持っており、一概にどちらが優れているとは言えない。開発するアプリケーションに応じて適したものを選択する必要がある。そこでMP T-Kernelでは、SMP向けの「SMP T-Kernel」とAMP向けの「AMP T-Kernel」の両方を提供している。両T-Kernelおよび従来のシングルコア用のT-Kernelは、システムコールレベルで高い互換性を持っているのも大きな特徴である。

次項からはAMPとSMP、それぞれのMP T-Kenrelのプログラミングについて説明しよう。