AMP T-Kernelプログラミングの概要
AMPの場合、各コアにAMP T-Kernelが存在し、その上でアプリケーションプログラムが実行される。つまりコアごとに見れば従来のシングルコアのプログラムと変わりはない(図2)。
図2 AMP T-Kernelのシステム概略 |
プロセッサ間の同期や通信は、AMP T-Kernelがシステムコールとして機能を提供する。この機能は、従来のT-Kernelの同期・通信機能をプロセッサ間でも使用可能に拡張している。セマフォやイベントフラグ、メッセージバッファなどをそのままプロセッサ間で使用することができる。したがって従来のソフトウェア資産や技術の活用が容易だ。
シングルコアに設計されたソフトをAMPに移植する場合を考えてみよう。元のソフトウェアが複数の機能単位(機能モジュール)から構成され、各モジュールの独立性が十分に高いのであれば、各コアにモジュールを割り当てればよい。必要な独立性として、まずモジュール間でメモリなどの資源の共有をしていてはいけない。次に、モジュール間のインタフェースはT-Kernelのシステムコールのみを使用する。最後にモジュール内のタスク注2のスケジューリングがほかのモジュールに依存しない。これらの条件を満たしていれば、AMPへの移植は比較的簡単に行うことができる(図3)。
図3 AMP T-Kernelへのプログラムの移植 |
注2
タスクはT-Kernelにおけるプログラムの実行単位である。アプリケーションプログラムは複数のタスクから構成される。
また、このようにソフトウェアを独立したモジュールとして設計することは、シングルコアのプロセッサにおいても、ソフトウェアの部品化や保守性の向上などの観点から有用なことである。