SMP対応T-Kernelの実装が登場した。標準仕様におけるSMP対応の行方はいまだ不透明だが、SMP実現へ一歩前進したことは間違いない
2006年6月、T-Engineフォーラムはマルチプロセッサ対応T-Kernelである「MP T-Kernel」を発表しました(マルチプロセッサ仕様「MP T-Kernel」の実力参照)。このMP T-KernelはAMP(非対称型マルチプロセッサ)に対応したものであり、現時点ではSMPに対応する標準仕様は発表されていません。
2006年9月8日にイーソルが発表した「eT-Kernel Multi-Core Edition」(以下eT-Kernel MCE)は、これを一歩推し進め、SMP(対照型マルチプロセッサ)をサポートしました(注)。このeT-Kernel MCEを通して、T-KernelによるSMP実現の可能性について解説します。
ご存じのとおり、マルチコアプロセッサを管理するソフトウェアの技術として、AMPとSMPがあります。ここでは、それぞれのメリット/デメリットについて整理しましょう。
ここで重要なのは、SMPのデメリットです。これらは、SMPに簡単に移行できない障壁となる問題です。
SMPになると正常に動作しなくなってしまうプログラムとは、「全割り込み禁止」と「タスク優先度」に依存した排他制御や実行順序の制御を行っているプログラムです。
μITRONやT-Kernelでは、ドライバやアプリケーションでも、排他が必要なごく短い区間においてすべての割り込みを禁止することがあります。シングルコアプロセッサ環境では、割り込みが起きなければプリエンプションを引き起こすトリガが発生しなくなるため、現在実行中のタスクやハンドラの排他的実行が保証されます。しかしSMPでは、別のコアで競合資源にアクセスするタスクやハンドラが実行されることがあり得ます。そのため、全割り込みを禁止しただけでは、排他的実行が保証されません。これは、「ディスパッチ禁止」によるタスク間の排他制御も同様です。
μITRONとT-Kernelが、「最高優先度のレディタスクが、自らレディ状態を止めるか、より優先度の高いタスクがレディ状態となるまで、ランニングし続ける」というスケジューリングポリシーを持っていることはよくご存じかと思います。従って、優先度の高いレディタスクは、その処理を完了するまで実行されることが保証されています。より優先度の低いタスクが、間を割って実行されることはありません。シングルコアプロセッサではこの前提に従って、実行順序を制御したり、それによる排他的実行を保証することができました(図1)。
AMPでは、コアの壁を超えて資源を競合したり、実行順序に依存関係があるなどの高い結合度を持つことは、原則的にありません。そのため、シングルコアプロセッサでの前提を引き継ぐことができます。
しかしSMPでは、タスクが同時に複数動作できるので、この前提が崩れてしまいます。SMPでは、排他対象の割り込みを個々に禁止したり、排他や実行順序の制御にシステムコールを使用するなど、完全なマルチタスクプログラミングによるアプリケーション実装が必要となるのです。
今日の組み込みシステム開発の現場を見てみると、高度化・肥大化する機能と短縮する開発期間というジレンマを抱えています。そのため、過去の資産を再利用しながら、新たに巨大なプログラムを開発しなければなりません。リアルタイム性に優れたμITRONやT-Kernelで開発された資産をマルチコアで利用するには、AMPの技術が必須です。一方で、組み込みシステムでも、GUIやマルチメディア、画像処理、ネットワーク接続など、強力な処理性能を必要とするアプリケーションのニーズが高まっています。そのため、組み込みシステムでも、これらを低消費電力のまま実現するマルチコアプロセッサとSMPの技術が必要となっていくでしょう。組み込みシステムにおけるマルチコアプロセッサを使ったソフトウェア開発では、このAMPとSMPの「ブレンド」が必要であると考えます。
Copyright © ITmedia, Inc. All Rights Reserved.