みなさんこんにちは。名古屋開発センターの前原です。
私は車載用ECU (Electronic Control Unit)の開発を主に行っており、今はAUTOSAR Classic Platformに関する研究・開発に携わっています。今後に向け車載用ECUにおける仮想化について力を入れているところです。
最近、自動車業界ではECUの数を減らすために単一のECUで複数の車載制御を動作させるECU統合の検討が進んでおり、ECU統合の方法の一つとして仮想化技術の利用が注目されています。そこで今回はサーバやパソコンのような汎用コンピュータと組込みシステムにおける仮想化の違いについて紹介します。
- 仮想化技術
- 仮想マシン(VM:Virtual Machine)
- VMの実現方法
- 汎用コンピュータと組込みシステムにおける仮想化の違い
「仮想化技術」とは、コンピュータシステムを構成する様々な資源(CPU、メモリ、ストレージ、OSなど)を抽象化することであり、ソフトウェアと物理的なハードウェアの間に抽象化されたレイヤを提供することでコンピュータの資源を管理するための様々な技術です。複数の資源を統合して一つに見せかけたり、一つの資源を分割して複数に見せかけたりすることができます。
仮想化にはコンピュータシステムの仮想化、ネットワークの仮想化などありますが、今回はコンピュータシステムの仮想化(一つのコンピュータ上で複数の仮想コンピュータやOSを動作させる)技術についてくわしく説明します。
はじめに仮想化技術のレイヤが持つ機能について説明してきます。
「VM」とはハードウェアの動作を模した機能を実装し、ハードウェアと同じように振る舞うソフトウェアです。
「ハイパーバイザー」は仮想マシンモニタ(VMM:Virtual Machine Monitor)とも呼ばれ、VMを制御するためのソフトウェアです。VM上で様々な種類のOSを稼働させることができ、それらのOSを互いに干渉させずに並行して動作させられます。
「ホストOS」とはハイパーバイザー を実行するOSのことです。「 ゲストOS 」とはVM上で動作するOSのことです。
仮想化技術の実装でよく利用されている方式には、Type 1の「ハイパーバイザー型」とType 2の「ホスト型」の2種類があります。これらは、仮想化技術の実装レイヤに違いがあります。
ハイパーバイザー型はネイティブハイパーバイザーまたはベアメタルハイパーバイザーとも呼ばれ、ハイパーバイザーがハードウェア上で直接動作し、実行されるOSがすべてVM上で動作する方式です。ホスト型と比べてホストOSの処理を必要とせずハードウェアを直接制御できるため処理速度が向上します。狭義の「ハイパーバイザー」はこちらのみを指します。
ホスト型はハードウェア上でまずホストOSが稼働し、ホストOSのアプリケーションとしてハイパーバイザーが稼働しその上にさらにゲストOSを稼働させる方式です。ホストOS自体の処理も必要になるため、ハイパーバイザー型と比べて処理速度が出にくいのがデメリットです。狭義においては、ホスト型は「ハイパーバイザー」には含まれない場合が多いです。
ここまでに説明してきた仮想化技術において汎用コンピュータと組込みシステムとでは違いはほとんどありません。ただし、要求・要件が異なるためそれにあった仮想化技術を用いる必要があります。ここからは、それぞれの要求・要件の特徴とよく使われる技術について説明していきます。
汎用コンピュータと組込みシステム共通の要求・要件には次のようなものがあります。
- コストや設置スペースを削減したい
これまで複数のハードウェアが必要だったものを一つに集約しコストや設置スペースを削減したい。 - 別のアーキテクチャ向けのプログラムを実行したい
別のハードウェア向けのアプリケーションを実行させたい。 - 一つのハードウェアで複数のOSを実行したい
一つのハードウェアでWindowsやLinuxを実行したい。
組込みシステムだけに求められる要求には次のようなものがあります。
- Secure/Non-Secureでシステムを分けたい
データ暗号化処理を例にすると不正侵入による暗号化に利用する鍵の漏洩を防ぐために、鍵を扱う暗号処理をSecureで実行し、鍵を扱わないストレージやネットワークとの入出力をNon-Secureで実行したい。 - 機能安全の安全度水準が異なる機能を統合したい
一つのハードウェアで安全機能が担うべきリスク軽減の度合いである安全度水準(SIL:Safety Integrity Level)が異なる複数のアプリケーションを実行したい。
組込みシステムだけに求められる要件には次のようなものがあります。
- リアルタイム性
車載用ECUの制御などにおいては応答の遅れが故障に結びつく様なケースが多く、システムで定められた時間制約を満たして動作することが求められます。 - リソース制約
汎用コンピュータのような潤沢な性能やメモリ容量がないハードウェアでのプログラム実行が求められます。 - 信頼性
車載用ECUの制御など人命にかかわる機器を制御する場合があり信頼性が求められます。
汎用コンピュータと組込みシステムとでは特にリソース制約(性能、メモリなど)に関しての違いが大きく、汎用コンピュータではリソースに余裕がありハイパーバイザー型とホスト型のどちらでも使用できますが、組込みシステムではリソース制約が厳しいため基本的にはハイパーバイザー型が使用されます。
「汎用コンピュータと組込みシステムにおける仮想化の違いとは?」
については「仮想化の技術的な違いはほとんどなく製品ごとの要求・要件にあわせた仮想化技術が使われる。組込みシステムではリソース制約が厳しいため基本的にはハイパーバイザー型が使用される。」という結論です。
今後は、組込みシステムにおける仮想化技術について、より踏み込んだ記事を書いていく予定です。