AMP T-Kernelは、現在「μT-Engine/MP211」(写真1)に実装されている。このμT-Engineは、ARM9プロセッサ・コアを3個搭載したマルチコア・プロセッサ「MP211」(NECエレクトロニクス製)を搭載している。今後は、ほかのプロセッサへの移植も進められる。
AMPでは、プロセッサごとに特定の役割を定め、それぞれにアプリケーション・プログラムが存在する。このようなマルチプロセッサ方式は、従来の組み込みシステムでも比較的なじみのあるものでもある。これにAMP T-Kernelを使用することにより、次のような利点が得られる。
第1に、プロセッサ間の同期・通信の仕組みが標準化される。従来のシステムでは、共有メモリや通信インターフェイスを用いて、独自の方式でデータや制御コマンドのやりとりを行っていた。これを標準化することにより、ソフトウェアの移植性、再利用性を向上させることができる。
第2に、OSレベルのきめ細かい同期・通信の機能が利用できる。AMP T-Kernelでは、標準T-Kernelで提供していた同期・通信の機能をほとんどそのままプロセッサ間でも使用できる。
AMP T-Kernelは、プロセッサ間の同期・通信に新しい概念を導入するのではなく、標準T-Kernelの同期・通信オブジェクトを、プロセッサ間でもアクセスできるように拡張している。よって、標準T-Kernelの知識があれば、AMP T-Kernelのプログラミングも容易である。
メッセージバッファを例にすると、アプリケーションは自身と同じプロセッサ上のメッセージバッファにも、ほかのプロセッサ上のメッセージバッファにも、同じシステムコールでメッセージを送受信できる。カーネルは、システムコールの対象のメッセージバッファがほかのプロセッサ上にあれば、プロセッサ間通信を行ってメッセージの送受信を行う。この際、アプリケーションはメッセージバッファの場所の違いを意識する必要はない。同期・通信には、メッセージバッファのほかにセマフォ、イベントフラグ、ランデブポートなどを使用できる。
AMP T-Kernelの内部に目を向けると、AMP T-Kernelはプロセッサごとの独立性を重視した設計となっている。プロセッサごとにカーネルが存在し、タスクのスケジューリングは個々のカーネルで独立に行われる。プロセッサ間の同期・通信は、最終的にはカーネルによるプロセッサ間通信として実現される。ほかのカーネルの内部情報を直接参照することはない。これにより、共有メモリを持たないシステムや、異なる種類のプロセッサ・コアで構成されたシステムなどにも容易に対応できる。
プロセッサ間の通信の仕組みは、共有メモリの有無などハードウェアに大きく依存する。この通信を行う部分は、独立したソフトウェア・モジュールとして実装される。これは一種のデバイスドライバであり、ほかのマルチプロセッサへの移植の際にはこの部分を変更すればよい(図1)。
なお、同種のプロセッサで構成されており、メモリの共有が可能なシステムであれば、カーネルのコードを共有することでメモリの節約を図ることもできる。
Copyright © ITmedia, Inc. All Rights Reserved.