マルチコアプロセッサにおけるOS環境、AMPとSMPのそれぞれの特徴・仕組みについて解説します。組込み開発を行ううえで、どちらが向いているかではなく、それぞれの特徴を生かした開発を行うことが重要になります。
SMP(Symmetric Mlutiprocessing)
SMP(Symmetric Multi-Processing:対称型マルチプロセッシング)とは、一台のコンピュータに複数のマイクロプロセッサ(MPU/MCU)を搭載する方式の一つです。各プロセッサが対等な立場で処理を分担する手法で、処理要求は全てのプロセッサに均等に割り当てられます。
SMPの用途
私たちが普段使っているPC環境のWindows(Intel x86 CPU)/LinuxなどのOSはSMPアーキテクチャのデバイスです。別々のCPUコアであっても、各コア上のプログラムはコア番号を意識することなく処理することができます(CPU間通信やメモリアクセスなど)。SMPはデータセンターでよく用いられます。均一性により、何万ものCPUコア間でタスクを割り当てる際に高い柔軟性が得られるためです。
SMPの特徴
SMPはCPUの負荷が分散されるため、システム全体の処理性能(スループット)が向上する点が利点として挙げられます。また、各コアに対する処理の割り当てをOSが自動的に行うため、ユーザーは割り当てを検討する必要がなく、デッドロックやデータ競合などの並列化の問題を考慮せずに移植が可能です。一方で、リアルタイム性能の予測が困難なため、リアルタイム性を保証しなくてはいけない部分には適していません。また、優先度ベースにスケジューリング方式に頼った排他を行っている場合、低優先度プログラムがCPUコアに空いているときに実行してしまう点にも留意が必要です。
AMP(Asymmetric Mlutiprocessing)
AMP(Asymmetric Multi-Processing:非対称型マルチプロセッシング)とは複数のプロセッサの間で役割分担や制御-非制御の関係などが存在し、対称な関係になっていないような機能分散型の方式をさします。各処理は特定(指定)されたコアで実行されます。あえて同じハードウェア構成としないことにより回路を簡素化。ハードウェア規模を抑えつつ、マルチコアによる並列性を実現します。個別のプロセッサの性質はシングルコアに近く、SMP型と比較してリアルタイム性の保証が容易と言えます。
AMPの用途
AMPは、特定のハードウェアが接続しているコアが限定されている場合や、動作するコアを特定しなくてはいけない場合、リアルタイム性を保証しなくてはいけない処理などに適しています。特定の処理を目的とした「組み込みシステム」に最適化しやすいアーキテクチャと言えるでしょう。組込みシステムの場合、パソコンなどと異なり実行する処理が事前にわかっているケースが一般的です。そのため、AMP型のマルチコアシステムを用いることが多いといえます。
シングルコアプロセッサを搭載したデジタルカメラの場合、一つのプロセッサで撮影と画像の処理を行っていくため、短時間での連続撮影を行うことが困難でした。AMP環境のマルチコアプロセッサを搭載することにより、片方のコアで撮影をする間、もう片方のコアで画像処理を行うという形で、各コアに静的にタスクを割り当てることで連続撮影の間隔短縮を実現できます。
AMPの特徴
SMPのように負荷配分を自動で行うのではなく、プログラマが負荷を予測し思い通りのコアへ処理を割り振ることで負荷配分ができるのがAMPの利点です。一方で、各コアに対する処理の割り当てをユーザーが決定する必要があります。開発ではユーザーが機能の割り当てや依存関係などを考慮して検討しなければならない点に留意点すべきでしょう。
SMPとAMPを混在させた構成
マルチコアCPUを生かす組込みOSの開発手法として、SMPとAMP混在型の構成があげられます。機器のIoT化を進めるにあたって、AMPだけでなくSMPの概念を取り入れると、リアルタイム性の保証とネットワーク管理における利便性を両方享受することができます。
一例としてRTOS(μC3)+ Linuxを使用した産業機器のIoT化を挙げます。機器内部の通信にRTOS(μC3・AMP環境)制御の産業用Ethernet、外部との通信にLinux(SMP環境)制御のEthernetを使用することで、複数ネットワークへの対応を実現することができます。
https://www.eforce.co.jp/uc3linux/
SMPとAMPの比較まとめ
SMPとAMPの特徴をまとめると、以下の通りです。
AMP Asymmetric Multiprocessing |
SMP Symmetric Multiprocessing |
|
非対称型マルチプロセッシング | 対称型マルチプロセッシング | |
構成 | 機能分散型(コア毎に別の機能を選任) | 負荷分散型(同じ処理を適時分散) |
用途 | 組込みシステム | Windows/ LinuxなどのOS・データセンター |
利点 |
|
|
留意点 |
|
|
μC3/Standard+M
μC3(マイクロ・シー・キューブ)/Standrd+Mは、μC3/StandardにAMP型のマルチコア拡張を追加した、マルチコアプロセッサ向けRTOSです。μITRON4.0スタンダード・プロファイルをベースにAMP型の特徴を活かしたコア毎の処理・リソースの割り当て、コア間連携のためのAPIを追加しています。Cortex-Aシリーズを中心にマルチコアのプロセッサをサポートしています。
東京エレクトロンデバイス社のZynq7000評価用ボードにμC3/Standard+Mを搭載、コア1側でネットワークの転送速度を計測、コア0側でHTTPサーバから転送レートを表現したCPU負荷表示デモ動画もございます。是非ご覧ください。