Wind River Blog Network 翻訳版
本サイトでは、Wind River Blog Networkの一部を翻訳し公開しております。

November 30, 2016

VxWorksにおけるソフトウェア隔離:VxPOD – 仮想化に代わる分離手法


投稿者:Ka Kay Achacoso

リアルタイム組込みシステムのハードウェア統合においての課題は、サブシステムが互いに干渉しないようにすることです。ハードウェア統合によってもたらされる、スペースやハードウェアコストの削減というメリットを生かすため、一部のシステムでは仮想化テクノロジを用いてサブシステムを相互に分離しています。仮想化では、ハードウェア上(Type 1の仮想化)またはOS上(Type 2の仮想化)のいずれかでハイパーバイザが実行されます。ハイパーバイザは仮想マシン(VM)をインスタンス化してソフトウェアロードを実行し、VM間ですべてのハードウェアリソースを分離または仮想化します。OS全体は、あたかもハードウェア上でネイティブに実行されているように、VM内で実行されます。

仮想化システムには、統合しやすいというメリットがありますが、その反面で 1) 仮想化をサポートするハードウェア(通常は高額)が必要になり、2) リソース(各VMはそれぞれ完全なOSを実行するため)が増え、3) 設計はさらに複雑(ゲストOSのインタラクションにハイパーバイザが追加されるため)になります。

Wind River® VxWorks®は、組込み型のType 1仮想化ソリューションの他に、代替手段である単一OSの分離メカニズム「VxWorks Portable Deterministic(VxPOD)コンテナ」も提供します。VxPODは、単一のリアルタイムOS(RTOS)内にVxWorksプロセスグループに関するタイム、スペース、リソースの制約を定める一連のテクノロジで、MMU搭載のあらゆるプロセッサで使用できます。ハードウェアの仮想化拡張機能は不要であり、仮想化と比べると必要なリソースやテクノロジが少なくて済みます。

このブログでは生産セルの例を使用して、VxPODで解決できる問題を説明します。他の多くのハードウェア統合事例にもこのソリューションは適用でき、産業用制御システムの小型化・軽量化、複数の医療機器の単一ユニットへの統合などが可能になります。

統合の例:生産セル

生産セルとは、工業製品の製造や組み立て工程を完成まで行う生産方式です。この例におけるサブシステムには、次のようなものがあります。

  • ロボット制御(重要度が高いサブシステム)
  • 環境制御(重要度が中程度のサブシステム)
  • 品質制御(重要度が低いサブシステム)
  • クラウド接続による在庫管理(重要度が低いサブシステム)

図1は、4つのサブシステムとそれぞれの特性を示しています。


図1:単一のコントローラハードウェアに統合される生産セルのサブシステム

1つの生産セルで各サブシステムを稼働させるために4つの個別のコントローラが必要である場合、コントローラのハードウェアコストは4倍に増加し、工場全体や複数の拠点にわたって50~100ものセルが存在するため、コストはさらに膨れ上がります。メーカーはハードウェアコストを削減してスペースを節約するために、4つのシステムのコントローラを単一のハードウェアに統合します。

1つ目の課題:複数チームによる開発

ロボット制御サブシステムは下請企業が開発し、環境制御は地球の反対側にいるチーム、品質制御と在庫管理サブシステムのコントローラは現地の2つの異なるチームが開発します。各開発チームは、単独でサブシステムのテストを実施します。異なるチームが開発したコントローラは、単一のハードウェア機器内にまとめられます。このため1つ目の課題は、他のサブシステムと物理的なハードウェアを共有しても、各サブシステムが予想どおりに動作するようにすることです。

2つ目の課題:信頼性

複数チームで開発した結果、各チームが異なる開発アプローチを採用している可能性があります。通常、組込み開発はC言語で行われますが、オープンソースから大量のコンテンツを取り込んでいたり、一部のパーティションではJavaを使用している可能性すらあります。つまり、システム内で信頼できないコードが実行される可能性があり、これは重要なコンテンツから切り離す必要があります。

3つ目の課題:再利用

製造工場では、セルの20%を修正して構成を変更することに決めました。新しいセルでは、環境制御と在庫管理制御は同じものを使用しますが、ロボット制御と品質制御は取りやめ、別のベンダが開発したレーザー切断機とコンベヤーベルト式仕分け装置に置き換えることになりました。実際には後になってから、別の種類の生産セルでも既存システムのさまざまなサブシステムを組み合わせ、新しいセルを作ることになりました。3つ目の課題は、異なる組み合わせでも統合可能なサブシステムを構築し、複数のシステム構成を実現することです。

VxPODで上記の課題を解決する方法

すべてのVxPODサブシステムは、単一のスケジューラによって制御され、単一のOS内で実行されます。VxWorksは、メモリ、タイムウィンドウ、システムオブジェクト、ファイルシステム、システムコールを特定のプロセスグループに割り当てることで、OS内で各サブシステムを分離します。こうした分離に加え、VxPODはサブシステムに共通の動作環境も提供します。すべてのサブシステム間で同じ分離メカニズムを使用することで、各サブシステムの組み合わせを変えて新しいシステムを作ることが可能になります。図2では、生産セルにおけるVxPODについて説明する目的で、各サブシステムのソフトウェアコンポネントを示しています。


図2:サブシステムのソフトウェアコンポネント

この例では、各サブシステムは2~4個のプロセスで構成されています。サブシステム間でハードウェア定義によるリソースの制限は行われていません。すべてのサブシステムは、ファイルシステムにファイルを保存します。一部のサブシステムは、マルチプロセスのメモリ領域、マルチプロセスのセマフォ、マルチプロセスのメッセージキューを使用しています。重要度の高いロボット制御システムは分離されたプライベートセンサーネットワーク、在庫管理システムはパブリッククラウドにつながっています。

最終的なシステムは、すべてのサブシステムがシングルコアを共有するシングルコアプロセッサになる場合も、サブシステムが複数のコアにわたって分離されるマルチコアシステムになる場合もあります。この事例では、単一のサブシステムが複数のコアを使用する可能性もあります。

最終的なシステムの構成はおそらく、C言語でプログラミングされたロボット制御、アクセラレーテッドグラフィックスと高度なヒューマンマシンインタフェース(HMI)を使用してC++で作成されたユーザインタフェース、Javaで開発された在庫管理制御、オープンソースの画像分析コンテンツを使用した品質制御となります。システムインテグレータがこうしたコンポネントすべてを単一のマイクロコントローラにまとめる際に、干渉が生じる可能性があります。以下の表は、VxPODテクノロジが干渉を防ぐために、共有リソースを1つのサブシステムに保持する手法を示しています。

こうしたテクノロジの目的は、VxWorksを共通の動作環境とする一貫性のあるユニットに、サブシステムを隔離することにあります。マルチベンダによるマルチサイトでの開発の場合、各開発チームはVxWorksとそのVxPODテクノロジに基づいて、隔離されたサブシステムを作成します。複数のチームの貢献によって、隔離されたVxWorksサブシステムのライブラリが実現します。インテグレータは複数のサブシステムの組み合わせを選別し、さまざまな種類のシステムを構築できます。

VxPODと仮想化の比較

場合によっては、それぞれのOS内に存在する複数のワークロードを同一MCU上に統合したほうが好ましく、ハイパーバイザソリューションの複雑さとコストに見合う価値が得られることもあります。VxPODは、よりシンプルな代替策を提供します。以下に、仮想化よりもVxPODのほうが設計として適切なケースを挙げます。

  • ワークロードに対して単独のOSが必要な場合。VxPODではすべてのワークロードが同じOSインスタンスで動作し、仮想化では各仮想マシンがそれぞれのOSインスタンスを取得します。
  • チップにハードウェア仮想化サポートが備わっていない。この場合でも仮想化は可能ですが、ワークロードの侵襲的な変更が必要になります。
  • 仮想化オーバーヘッドを許容できない。仮想化によって、ハイパーバイザ内であろうとチップ内であろうと、わずかであるとはいえ、特定のOSオペレーションのオーバーヘッドが増加します。VxPODではこのオーバーヘッドが発生しません。
  • 部分的な隔離はより軽量。重要ではない複数のサブシステムでネットワークスタックを共有したり、タイムやリソースを共有したりする必要がある場合もあります。VxPODでは、システムインテグレータはサブシステムの境界を超えるシステムリソースに関して、選択できます。

VxPODの詳細については、VxWorksプロダクトノート(https://www.windriver.com/products/product-notes/pn_vxworks/)をご覧ください。ウインドリバーのオンラインヘルプにアクセスできる皆さんは、Wind River Knowledge Library(https://knowledge.windriver.com)から入手できる「VxWorks Programmer’s Guide」の「Safety Profile Facilities for RTP Application Control」で、VxPODテクノロジの説明をご覧いただけます。