マルチコア通信API (MCAPI)は、マルチコア協会が策定した最初の仕様です。MCAPIは、密集した(チップ上の複数のコアやボード上のチップ)組み込みシステム間の通信と同期のための標準化されたAPIを提供します。
概要
MCAPIは、言語に依存しず、プロセッサやオペレーティングシステムに依存しない通信プロトコルであり、マルチコアデバイスのプログラミングに使用されます。MCAPIは、メッセージ、パケット、スカラーの3つの通信モードを提供します。MCAPIは、メッセージパッシングアプリケーションプログラマインターフェースであり、あらゆる実装においてその機能がどのように動作すべきかを規定するプロトコルおよびセマンティクス仕様を備えています。MCAPI実装の主な目標は、極めて高いパフォーマンスとメモリフットプリントの削減です。
MCAPIは、 MPIやBerkeleyソケットといった通信APIの系譜を受け継いでいます。MPIとソケットはどちらも主にコンピュータ間通信を念頭に開発されましたが、MCAPIは主にマルチコアチップにおけるコア間通信を対象としています。したがって、MCAPIの主な設計目標は、マルチコアチップにおける効率的なオンチップ相互接続を活用した低レイテンシのインターフェースとして機能することでした。しかし、マルチコア通信の範囲が限定的であることと、低レイテンシを目標としていることから、MCAPIはMPIやソケットよりも柔軟性に欠けます。
MCAPI通信モード
MCAPI は 3 つの通信モードを提供します。
- メッセージ – コネクションレス型データグラム。メッセージは、ペイロードに関して柔軟性を備え、受信者や優先度、設定作業を動的に変更しますが、パフォーマンスは若干低下します。
- パケット – コネクション指向、任意サイズ、単方向、FIFO ストリーム。パケットはペイロードに関して柔軟性を持たせることを目的としており、設定の手間はかかりますが、メッセージよりも高いパフォーマンスを提供します。
- スカラー – コネクション指向、固定サイズ、単方向、FIFO ストリーム。スカラーは、ペイロードの柔軟性と設定の手間を犠牲にしつつも、最高性能の通信モードとなるように設計されています。
MCAPIとMPIの比較
MCAPIは組み込み通信に特化しており、メッセージ、パケット、スカラー、そして接続されたチャネルという概念を追加しています。これにより、MCAPIは様々なサービス品質(QoS)をサポートでき、接続されたチャネルは基盤となる組み込みハードウェアを活用できます。さらに、MCAPIは様々な優先度をサポートしており、メッセージにはメッセージごとに優先度を設定でき、チャネルも異なる優先度を持つものとして扱うことができます。これにより、実装は一部またはすべてのチャネルを専用ハードウェアにマッピングできます。MCAPIは、接続されたチャネルに属性を割り当てることでゼロコピーもサポートできます。
その他の大きな違いは次のとおりです。
- MCAPI には FORTRAN 用の言語バインディングがありません。これは組み込みシステムでは一般的ではないためです。
- MCAPIはMPIのような集団通信をサポートしていません。これにより、MCAPIvはより小規模な実装が可能になります。
- MCAPI にはグループの概念はありません。
- MCAPI には、MPI のような同期メソッドはなく、バリア、フェンス、ロックもありません。
- MCAPI にはファイル オブジェクトやそれに関連付けられた関数はありません。
- MCAPI には、プロセスの作成または管理のためのモデルはありません。
参考文献
- Holt, Jim; Agarwal, Anant; Brehmer, Sven; Domeika, Max; Griffin, Patrick; Schirrmeister, Frank (2009年6月)「マルチコア時代のソフトウェア標準」IEEE Micro , 29 (3): 40– 51, doi :10.1109/MM.2009.48, hdl : 1721.1/52432
外部リンク
- マルチコア通信API
- ポリメッセンジャー/MCAPI
- Kactus2/MCAPI と IP-XACT
- MCAPI仕様の無料ダウンロード
- LinkedIn プロフィール API