(57)【要約】【課題】仮想計算機とハードウェアとの通信の遅延を抑制可能な仮想化システム、仮想化プログラム、及び、記憶媒体を提供する。【解決手段】ＥＣＵ１は、ハードウェア１３の動作を制御するハードウェア制御コア１１ｘと、それぞれ異なるゲストＯＳを実行することでそれぞれ仮想計算機として動作する複数のＶＭコア１１ａ〜１１ｃと、を備える。ＶＭコア１１ａ〜１１ｃは何れもデバイスドライバを備えない。ハードウェア制御コア１１ｘが各コアを代表してデバイスドライバを備える。ＶＭコア１１は、或るハードウェア１３を使用する必要がある場合、共有メモリであるダウンリンクメモリＭ１に当該ハードウェア１３向けのデータを保存し、ハードウェア制御コア１１ｘに割込み信号を出力する。ハードウェア制御コア１１ｘは、割り込み信号の入力をトリガとしてダウンリンクメモリＭ１に保存されているデータを読み出し、ハードウェアを動作させる。【選択図】図４
2019057162.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアを備える１つの物理計算機上で複数の仮想計算機が動作する仮想化システムであって、
複数のハードウェア（１３ａ、１３ｂ、１３ｃ、１３ｄ）と、
複数の前記ハードウェアのそれぞれの動作を制御するための前記コアであるハードウェア制御コア（１１ｘ）と、
前記仮想計算機のＯＳであるゲストＯＳが動作するための前記コアである複数の仮想計算機コア（１１ａ、１１ｂ、１１ｃ）と、
前記ハードウェア制御コア及び複数の前記仮想計算機コアのそれぞれが同時並行的にアクセス可能なメモリである共有メモリ（１２）と、を備え、
１つの前記仮想計算機は、１つ又は複数の前記仮想計算機コアを専有して動作するように設定されており、
前記ハードウェア制御コアは、複数の前記ハードウェアのそれぞれに対応するデバイスドライバを実行することによって、複数の前記ハードウェアのそれぞれの動作を制御するデバイスドライバ部（Ｆ２）を備え、
前記ハードウェア制御コアと前記仮想計算機コアとの通信は、前記共有メモリへのデータ保存及び当該保存されたデータの読出によって実現され、
前記デバイスドライバ部は、前記仮想計算機が前記共有メモリに保存したデータに基づいて前記ハードウェアの動作を制御するとともに、前記ハードウェアから入力されたデータを前記共有メモリに保存することによって前記仮想計算機コアに提供する仮想化システム。
【請求項２】
請求項１に記載の仮想化システムであって、
前記ハードウェア制御コアは、
前記デバイスドライバ部が前記ハードウェアから取得したデータを前記共有メモリに保存するとともに、前記共有メモリにデータを保存した場合には、前記共有メモリに保存されているデータを読み出すように要求する割込み信号を前記仮想計算機コアに出力する制御側保存処理部（Ｆ１２）と、
前記仮想計算機コアから前記割込み信号が入力されたことに基づいて、前記共有メモリに保存されているデータを読み出す制御側読出部（Ｆ１１）と、を備え、
前記仮想計算機コアは、
前記制御側保存処理部から出力される前記割込み信号を受信したことに基づいて、前記共有メモリに保存されているデータを読み出す仮想計算機側読出部（Ｇ１１）と、
前記仮想計算機側読出部が読み出したデータを用いて所定の演算処理を実行するとともに、前記演算処理の結果として前記ハードウェアに向けたデータを出力する処理実行部（Ｇ２）と、
前記処理実行部から出力されたデータを前記共有メモリに保存するとともに、前記共有メモリにデータを保存した場合には前記割込み信号を前記ハードウェア制御コアに出力する仮想計算機側保存処理部（Ｇ１２）と、を備える仮想化システム。
【請求項３】
請求項１又は２に記載の仮想化システムであって、
前記共有メモリとして、
前記ハードウェア制御コアから前記仮想計算機コアに向けたデータが保存されるアップリンクメモリ（Ｍ２）と、
前記仮想計算機コアから前記ハードウェア制御コアに向けたデータが保存されるダウンリンクメモリ（Ｍ１）と、を前記仮想計算機コア毎に備え、
前記ハードウェア制御コアは、前記アップリンクメモリへのデータ保存は実行可能に設定されている一方、前記ダウンリンクメモリへのデータ保存は禁止されており、
前記仮想計算機コアは、前記ダウンリンクメモリへのデータ保存は実行可能に設定されている一方、前記アップリンクメモリへのデータ保存は禁止されている仮想化システム。
【請求項４】
請求項１から３の何れか１項に記載の仮想化システムであって、
前記物理計算機は車両に搭載されて使用される計算機であって、
前記ゲストＯＳは、前記車両に搭載されている所定の電子機器を制御するためのＯＳ、又は、車両外部との通信に係る機能を提供するＯＳである仮想化システム。
【請求項５】
請求項４に記載の仮想化システムであって、
前記デバイスドライバは、隠匿されたソースコードで実装されている仮想化システム。
【請求項６】
複数のコアと、複数のハードウェアを備える物理層と、ランダムアクセスメモリを備える物理計算機を、請求項１から５の何れか１項に記載の前記仮想化システムとして動作させるプログラムであって、
複数の前記コアのうちの１つを前記ハードウェア制御コアに設定するとともに、残りの前記コアを前記仮想計算機コアに設定するコア割当部（Ｐｍ１１）と、
前記ランダムアクセスメモリが備える記憶領域の一部又は全部を前記共有メモリに設定する共有メモリ設定部（Ｐｍ１２）と、を備える仮想化プログラム。
【請求項７】
複数のコアと、ランダムアクセスメモリと、複数のハードウェアを備える物理層と、を備える物理計算機を、請求項１から５の何れか１項に記載の前記仮想化システムとして動作させるプログラムであって、複数の前記コアのうちの１つを前記ハードウェア制御コアに設定するとともに、残りの前記コアを前記仮想計算機コアに設定するコア割当部（Ｐｍ１１）と、前記ランダムアクセスメモリが備える記憶領域の一部又は全部を前記共有メモリに設定する共有メモリ設定部（Ｐｍ１２）と、を備えるプログラムを記憶している記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実体を有する計算機上で複数のゲストＯＳを動作させることにより、当該計算機を仮想的に複数の計算機として動作させる仮想化システム、仮想化プログラム、及び、記憶媒体に関する。
【背景技術】
【０００２】
近年、実体を有する計算機である物理計算機上で複数のゲストＯＳ（ＯＳ：Operating System）を動作させることにより、当該物理計算機を仮想的に複数の計算機として動作させる仮想化システムが種々提案されている。なお、仮想的な計算機とは、実体を有する計算機（いわゆる物理計算機）を論理的に分割してなる計算機であり、仮想マシンや論理計算機とも称される。ゲストＯＳは、仮想計算機を実現する基本ソフトウェアである。
【０００３】
なお、仮想化システムの種類（換言すれば方式）としては、ハイパーバイザー型の仮想化システムや、ホストＯＳ型の仮想化システムなどがある。ハイパーバイザー型の仮想化システムは、仮想化専用のＯＳ（いわゆるハイパーバイザー；hypervisor）上でゲストＯＳを動作させる方式の仮想化システムである。ハイパーバイザーはハードウェア上で直接動作し、ゲストＯＳへの計算リソースの割り当てや、ゲストＯＳによるハードウェア（いわゆるペリフェラル）へのアクセスを制御する。
【０００４】
ここでのハードウェアとは、ＯＳにとっての物理層に相当する。ハードウェアには、イーサネット（登録商標）やＵＡＲＴなどのインターフェースにおいて論理信号を実際の電気的な信号に変換する構成（いわゆるＩ／Ｏデバイス）や、フラッシュメモリ、ハードディスクなどが含まれる。種々の通信規格に対応するＩ／Ｏデバイスは、それぞれチップセット（いわゆるＰＨＹチップ）として実現されていることが多い。
【０００５】
ホストＯＳ型の仮想化システムは、ホストＯＳ上にアプリケーションとして仮想的に別のＯＳ（つまりゲストＯＳ）を動作させる方式の仮想化システムである。ホストＯＳは、物理計算機上で動作する基本ソフトウェアである。ホストＯＳは、ゲストＯＳを動作させるためのアプリケーション（仮想化アプリケーション）以外のアプリケーションも実行可能である。なお、ホストＯＳが備える仮想化アプリケーションも、ゲストＯＳによるハードウェアへのアクセスを制御する役割を担う。つまり、ホストＯＳが備える仮想化アプリケーションもハイパーバイザーと同様の機能を提供するソフトウェアである。
【０００６】
以降では便宜上、ホスト型システムの仮想化システムを提供する仮想化アプリケーションとハイパーバイザー型の仮想化システムを提供するハイパーバイザーを区別せずに、ゲストＯＳからハードウェアへのアクセスを制御するソフトウェアのことをハイパーバイザーと記載する。
【０００７】
一般的に、各ゲストＯＳは、種々のハードウェアを使用するためのデバイスドライバを備えており、当該デバイスドライバを用いてハードウェアを使用する。或るゲストＯＳが或るハードウェアを使用する場合には、ハイパーバイザーによって当該ゲストＯＳと当該ハードウェアとは１：１に対応付けられ、他のゲストＯＳは使用できなくなる。
【０００８】
特許文献１にはホストＯＳ型の仮想化システムとして、ホストＯＳとゲストＯＳとのシリアルポート通信の安定性を向上させるために、ホストＯＳ上でシリアルポート通信によるデータ入出力を行うホスト側通信手段と、ゲストＯＳ上でシリアルポート通信によるデータ入出力を行うゲスト側通信手段と、ゲストＯＳの起動と同時にホスト側通信手段とゲスト側通信手段との通信路を確立する通信路確保手段と、を備える仮想化システムが開示されている。この特許文献１に記載の構成は、別の観点によれば、ゲストＯＳとハイパーバイザーとを、所定の通信規格に準拠した通信パイプで相互通信可能に接続した構成に相当する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１４−１４９６９８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来の仮想化システムでは、仮想計算機への計算リソースの割り当てや仮想計算機によるハードウェアへのアクセスは、ハイパーバイザーによって制御される。また、或る仮想計算機が或るハードウェアを使用する場合には、ハイパーバイザーによって当該仮想計算機と当該ハードウェアとは１：１に対応付けられ、他の仮想計算機は使用できなくなる。
【００１１】
故に、仮想計算機が或るハードウェアを利用したい状況であっても、他の仮想計算機の動作状況によっては、すぐには当該ハードウェアを使用できない場合がある。つまり、仮想計算機とハードウェアとの通信のリアルタイム性が損なわれる場合がある。
【００１２】
本発明は、この事情に基づいて成されたものであり、その目的とするところは、仮想計算機とハードウェアとの通信の遅延を抑制可能な仮想化システム、仮想化プログラム、及び、記憶媒体を提供することにある。
【課題を解決するための手段】
【００１３】
その目的を達成するための本発明における仮想化システムは、複数のコアを備える１つの物理計算機上で複数の仮想計算機が動作する仮想化システムであって、複数のハードウェア（１３ａ、１３ｂ、１３ｃ、１３ｄ）と、複数のハードウェアのそれぞれの動作を制御するためのコアであるハードウェア制御コア（１１ｘ）と、仮想計算機のＯＳであるゲストＯＳが動作するためのコアである複数の仮想計算機コア（１１ａ、１１ｂ、１１ｃ）と、ハードウェア制御コア及び複数の仮想計算機コアのそれぞれが同時並行的にアクセス可能なメモリである共有メモリ（１２）と、を備え、１つの仮想計算機は、１つ又は複数の仮想計算機コアを専有して動作するように設定されており、ハードウェア制御コアは、複数のハードウェアのそれぞれに対応するデバイスドライバを実行することによって、複数のハードウェアの動作を制御するデバイスドライバ部（Ｆ２）を備え、ハードウェア制御コアと仮想計算機コアとの通信は、共有メモリへのデータ保存及び当該保存されたデータ読出によって実現され、デバイスドライバ部は、仮想計算機が共有メモリに保存したデータに基づいてハードウェアの動作を制御するとともに、ハードウェアから入力されたデータを共有メモリに保存することによって仮想計算機コアに提供する。
【００１４】
上記の構成は、仮想計算機コアと、ハードウェア制御コアとの通信がメモリアクセスによって実現された構成に相当する。このような態様において各仮想計算機コアは、任意のタイミングでデータを共有メモリにデータを保存することができる。また、デバイスドライバ部は、メモリアクセスによって取得した、仮想計算機コアからのデータに基づいてハードウェアを動作させる。故に、各仮想計算機コアは任意のタイミングで所望のハードウェアを利用可能となる。
【００１５】
また、１つの仮想計算機コアは、複数のゲストＯＳ（換言すれば仮想計算機）で共用されない。つまり、各仮想計算機は１つ又は複数のコアを専有して動作する。各仮想計算機は自分自身に割り当てられている仮想計算機コアの計算リソースを、他の仮想計算機の動作状況に関わらずに自由に使用することができる。
【００１６】
つまり、上記の構成によれば各仮想計算機は、自分専用のコアが備える計算リソースを用いて動作するとともに、任意のタイミングで所望のハードウェアを利用することができる。よって、仮想計算機とハードウェアとの通信が遅延する恐れを低減できる。
【００１７】
また、上記目的を達成するための仮想化プログラムの発明は、複数のコアと、複数のハードウェアを備える物理層と、ランダムアクセスメモリを備える物理計算機を、請求項１から５の何れか１項に記載の仮想化システムとして動作させるプログラムであって、複数のコアのうちの１つをハードウェア制御コアに設定するとともに、残りのコアを仮想計算機コアに設定するコア割当部（Ｐｍ１１）と、ランダムアクセスメモリが備える記憶領域の一部又は全部を共有メモリに設定する共有メモリ設定部（Ｐｍ１２）と、を備えるプログラムである。記憶媒体の発明は、コンピュータを上記の仮想化システムとして機能させるためのプログラム（つまり仮想化プログラム）が保存されていることを特徴とする。
【００１８】
なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１９】
【図１】本実施形態に係るＥＣＵ１の構成の概略的な構成を示すブロック図である。
【図２】仮想計算機とハードウェア１３との接続関係を説明するためのブロック図である。
【図３】ＥＣＵ１起動時に実行されるブートプログラムの概略的な構成を示す概念図である。
【図４】仮想計算機によるペリフェラルアクセスを説明するための図である。
【図５】ゲストＯＳの割り当て態様の変形例を示す図である。
【発明を実施するための形態】
【００２０】
以下、本開示の１つの実施の形態について図を用いて説明する。図１は、本開示に係る仮想化システムが適用された電子制御装置（ＥＣＵ：Electronic Control Unit）のハードウェア構成及びソフトウェア構成の一例を示す図である。ＥＣＵ１は車両に搭載されてあって、車両内に構築されているネットワークに接続されている。
【００２１】
ＥＣＵ１は、１つの物理計算機として構成されており、図１に示すように４つのコア１１を備えるプロセッサ１０と、共有メモリ部１２と、複数のハードウェア１３ａ〜１３ｄと、を備える。便宜上、４つのコア１１のそれぞれを区別する場合にはコア１１ａ、コア１１ｂ、コア１１ｃ、及びコア１１ｘと記載する。図中のＣｏｒｅ１やＣｏｒｅ２といった記載は、複数のコア１１を区別するためのラベルである。図１では一例としてＣｏｒｅ０のラベルが付与されているコア１１をコア１１ｘとする態様を例示している。また、種々のハードウェア１３ａ〜１３ｄを区別しない場合には単にハードウェア１３と記載する。図中のＰＨＹは、ハードウェア１３であることを示すラベルである。図１において制御線や情報線の図示は省略している。
【００２２】
ＥＣＵ１は、複数のコア１１が搭載された単一のプロセッサ（つまりマルチコアプロセッサ）を用いて実現されていても良いし、搭載コア数が１のプロセッサを複数用いて実現されていてもよい。また、複数のマルチコアプロセッサを組み合わせて実現されていても良い。ここでは一例としてＥＣＵ１は４つのコア１１を備える単一のプロセッサ（いわゆるクアッドコアプロセッサを用いて実現されているものとする。
【００２３】
なお、ここでのコア１１とは、演算処理を行うための論理回路や１次キャッシュなどが実装されている１つの実体を有するモジュールである。各コア１１は、プロセッサコアや、物理コアとも称される。本実施形態ではＥＣＵ１が備えるコア１１の数は４とするが、これに限らない。ＥＣＵ１が備えるコア１１の数は適宜設計されればよい。ＥＣＵ１が備えるコア１１の数は５以上であってもよい。ＥＣＵ１が備えるコア１１の数は例えば６つであっても良い。
【００２４】
共有メモリ部１２は、複数のコア１１のそれぞれが同時並行的にアクセス可能なメモリ領域である。共有メモリ部１２は換言すれば各コア１１で共有されるメモリ領域である。共有メモリ部１２はランダムアクセスメモリ（以降、ＲＡＭ：Random Access Memory）等を用いて実現されている。共有メモリ部１２は、例えばバスシステムなどのインターコネクト機構を介して各コア１１と接続されている。なお、共有メモリ部１２とコア１１との通信のインターフェースとしてはＳＧＩなどを採用可能である。
【００２５】
複数のハードウェア１３は、プロセッサ１０にとっての物理層を提供する構成である。複数のハードウェア１３は、プロセッサ１０にとってのペリフェラルに相当する。ハードウェア１３は、例えば、ＥＣＵ１が外部装置と接続することによって、外部から情報を入力されたり、外部に情報を出力したりするためのデバイス（いわゆるＩ／Ｏデバイス）である。また、ハードウェア１３は、ハードディスクドライブやＮＯＲ型フラッシュメモリなどの不揮発性の記憶装置であってもよい。
【００２６】
例えばハードウェア１３ａは、イーサネット（登録商標）用の物理的なインターフェースとして機能する回路モジュールである。つまり、ハードウェア１３ａは、イーサネットの規格に準拠して、論理信号を実際の電気的な信号に変換したり、その逆の変換を実施したりする回路モジュールである。また、ハードウェア１３ｂは、ＵＡＲＴ用のインターフェースとして機能する回路モジュールである。すなわち、ハードウェア１３ｂは、ＵＡＲＴの規格に準拠して、論理信号を実際の電気的な信号に変換したりその逆の変換を実施したりする。ハードウェア１３ｃは、例えばＵＳＢ通信のインターフェースとして機能する構成であって、ＵＳＢの規格に準拠して、論理信号を実際の電気的な信号に変換したり、その逆の変換を実施したりする。
【００２７】
ハードウェア１３ｄは、例えばＮＯＲ型のフラッシュメモリである。ハードウェア１３ｄとしてのＮＯＲ型フラッシュメモリには、例えばＥＣＵ１の起動時に実行されるプログラム（以降、ブートプログラム）Ｐｍ１や、後述するゲストＯＳ２ａ〜２ｃ等が保存されているものとする。
【００２８】
その他、ＥＣＵ１はハードウェア１３として、上述した以外の種々の通信規格に対応するＩ／Ｏデバイスや不揮発性の記憶媒体などを備えうる。また、種々のアプリケーションソフトウェアが保存されている不揮発性の記憶媒体も備えている。アプリケーションソフトウェアは、前述のＮＯＲ型フラッシュメモリに保存されていてもよい。ＥＣＵ１が備えるべきハードウェア１３の種類は適宜設計されればよい。ペリフェラルとしての種々のハードウェア１３は、例えば図示しない信号線を介してプロセッサ１０と接続されている。ハードウェア１３とプロセッサ１０との相互通信はバスシステムによって提供されていてもよい。
【００２９】
上記の構成要素を備えるＥＣＵ１は、ＥＣＵ１への電源投入をトリガとして、所定の起動処理（いわゆるブート・ストラップ）を実行し、ＥＣＵ１が備える複数のコア１１の１つを、ハードウェア１３の動作を制御するコア（以降、ハードウェア制御コア）１１ｘとして機能させる。便宜上以降では、或るコア１１をハードウェア制御コア１１ｘとして機能させるためのソフトウェアをハードウェア制御ソフト３と称する。ハードウェア制御コア１１ｘは、別の観点によれば、ＥＣＵ１を仮想的に複数（具体的には３つ）の計算機として動作させる際の、仮想計算機とハードウェア１３との通信インターフェースとしての処理を実行するコア１１に相当する。
【００３０】
複数のコア１１のうち、複数のコア１１のうちの何れのコア１１をハードウェア制御コア１１ｘとするか、すなわち、ハードウェア制御コア１１ｘとして動作させるコア１１は予め設定されていればよい。ここではコア１１ｘがハードウェア制御コア１１ｘとして動作するように設定されているものとする。
【００３１】
また、ＥＣＵ１は起動処理を実行することで、残りのコア１１ａ〜ｃのそれぞれに所定のゲストＯＳ２を割り当てる。各ゲストＯＳ２は、そのゲストＯＳ２を実行するコア１１を１つの計算機（つまり仮想計算機）として動作させるための基本ソフト（いわゆるＯＳ：Operating System）である。各コア１１は、自分自身に割り当てられたゲストＯＳ２を起動及び実行する。各コア１１にはそれぞれ異なるゲストＯＳ２が割り当てられる。図に示すゲストＯＳ２ａはコア１１ａに割り当てられるゲストＯＳ２であり、ゲストＯＳ２ｂはコア１１ｂに割り当てられるゲストＯＳ２である。ゲストＯＳ２ｃはコア１１ｂに割り当てられるゲストＯＳ２である。
【００３２】
複数のコア１１ａ〜ｃに割り当てるゲストＯＳ２は予め設定されていればよい。各コア１１は、自身に割り当てられたゲストＯＳ２を実行することで、それぞれ独立した仮想計算機（ＶＭ：Virtual Machine）として動作する。便宜上、ゲストＯＳ２が割り当てられるコア１１のことをＶＭコア１１とも記載する。ＶＭコア１１とするコア１１は予め設定されていればよい。ＶＭコア１１が請求項に記載の仮想計算機コアに相当する。
【００３３】
ＶＭコア１１ａに割り当てられるゲストＯＳ２ａは、例えばコンピュータを、走行支援ＥＣＵとして動作させるためのＯＳ（以降、走行支援ＯＳ）である。走行支援ＥＣＵは、画像センサやミリ波レーダーセンサーなど、車両の周囲の状況を捉えてくれるセンサからの様々な情報をもとに、障害物との距離などを計算したり、車線からはみ出していないかどうかを判断したりするＥＣＵである。
【００３４】
ＶＭコア１１ａは、走行支援ＯＳを実行するとともに、走行支援ＥＣＵとしての機能を提供するための所定のアプリケーションソフトウェア（以降、走行支援アプリ）も実行する。つまり、ＶＭコア１１ａは走行支援ＥＣＵとしての処理を実行する。なお、走行支援アプリは、ゲストＯＳ２ａとしての走行支援ＯＳと対応づけられて図示しないフラッシュメモリ等に保存されている。走行支援アプリは走行支援ＯＳとパッケージ化された状態で保存されていてもよい。走行支援アプリは走行支援ＯＳの起動後にＶＭコア１１ａによって順次ＲＡＭ等に読み出されて実行される。
【００３５】
また、ゲストＯＳ２ｂは、例えばコンピュータを、ＡＢＳ−ＥＣＵとして動作させるためのＯＳ（以降、ＡＢＳ−ＯＳ）である。ＡＢＳ−ＥＣＵは、車両に搭載されているセンサの出力に基づいて、ＡＢＳ（Antilock Brake System）を構成する種々のアクチュエータの動作を制御するＥＣＵである。ＶＭコア１１ｂは、ＡＢＳ−ＯＳを実行するとともに、ＡＢＳ−ＥＣＵとしての機能を提供するための所定のアプリケーションソフトウェア（以降、ＡＢＳアプリ）も実行する。つまり、ＶＭコア１１ｂは、ＡＢＳ−ＥＣＵとしての処理を実行する。なお、ＡＢＳアプリは、ゲストＯＳ２ｂとしてのＡＢＳ−ＯＳと対応づけられて図示しないフラッシュメモリ等に保存されている。例えばＡＢＳアプリはＡＢＳ−ＯＳとパッケージ化された状態で保存されていてもよい。ＡＢＳアプリはＡＢＳ−ＯＳの起動後、ＶＭコア１１ｂによって順次ＲＡＭに読み出されて実行される。
【００３６】
ゲストＯＳ２ｃは、例えばコンピュータをＥＰＳ−ＥＣＵとして動作させるためのＯＳ（以降、ＥＰＳ−ＯＳ）である。ＥＰＳ−ＥＣＵは、ＥＰＳ（Electric Power Steering）モータを制御するＥＣＵである。ＶＭコア１１ｃは、ＥＰＳ−ＯＳを実行するとともに、ＥＰＳ−ＥＣＵとしての機能を提供するための所定のアプリケーションソフトウェア（ＥＰＳアプリ）も実行する。つまり、ＶＭコア１１ｃは、ＥＰＳ−ＥＣＵとしての処理を実行する。なお、ＥＰＳアプリは、ゲストＯＳ２ｃとしてのＥＰＳ−ＯＳと対応づけられて図示しないフラッシュメモリ等に保存されている。例えばＥＰＳアプリはＥＰＳ−ＯＳとパッケージ化された状態で保存されていてもよい。ＥＰＳアプリはＥＰＳ−ＯＳの起動後、ＶＭコア１１ｃによって順次ＲＡＭに読み出されて実行される。
【００３７】
上述した設定により、ＥＣＵ１は図２に示すように、仮想的に走行支援ＥＣＵ１ａ、ＡＢＳ−ＥＣＵ１ｂ、及びＥＰＳ−ＥＣＵ１ｃとして動作する。走行支援ＥＣＵ１ａ、ＡＢＳ−ＥＣＵ１ｂ、及びＥＰＳ−ＥＣＵ１ｃのそれぞれは、別途後述する手順により、ハードウェア制御コア１１ｘを介して種々のハードウェア１３にアクセスする。各ＶＭコア１１が提供する走行支援ＥＣＵ１ａ、ＡＢＳ−ＥＣＵ１ｂ、及びＥＰＳ−ＥＣＵ１ｃのそれぞれは、所定の機能を提供する仮想計算機である。
【００３８】
なお、複数のコア１１のそれぞれに割り当てられるゲストＯＳ２ａ〜２ｃの種類は適宜設計されれば良く、以上で例示したものに限定されない。本実施形態では一例としＶＭコア１１ａ〜１１ｃを、走る、曲がる、止まるといった、車両の走行制御に係る機能を提供するＥＣＵとして動作させるものとするが、これに限らない。例えばＶＭコア１１ａは、ナビゲーション装置やオーディオ機器などといった、マルチメディア系の機能を提供するＥＣＵとして動作させてもよい。また、ＶＭコア１１ａは、シートやパワーウインドーなどのボディ系のＥＣＵとして動作させてもよい。
【００３９】
さらに、ＶＭコア１１ａは、車両外部との通信を実施するための機能を提供するＥＣＵとして動作させてもよい。車両外部との通信を実施するための機能を提供するＥＣＵとは、例えば広域通信網に無線アクセスする処理を実施するＥＣＵや、車車間通信を実施するＥＣＵなどである。ＶＭコア１１ｂ、１１ｃについても同様に、これらが提供する仮想的に実現するＥＣＵの種類は適宜設計されればよい。各ＶＭコア１１ａ〜１１ｃに割り当てるゲストＯＳ２は、各ＶＭコア１１ａ〜１１ｃに提供させるＥＣＵに応じて適宜選定／設計されればよい。ゲストＯＳ２は、車両に搭載されている所定の電子機器を制御するためのＯＳ、又は、車両外部との通信に係る機能を提供するＯＳとすればよい。
【００４０】
また、ＥＣＵ１に電源が投入されてからゲストＯＳ２ａ〜２ｃが起動されるまでの具体的な処理の内容は、適宜設計されればよい。起動処理には、ＢＩＯＳ（Basic Input Output System）の実行や、ブートローダに相当するプロセスの実行が含まれる。システムファームウェアとしては、ＢＩＯＳの代わりにＵＥＦＩ（Unified Extensible Firmware Interface）が採用されていても良い。ＥＣＵ１が起動する際に実行されるプログラムは、開発者によって独自に作成された、隠匿されているソースコードで実装されていることが好ましい。
【００４１】
図３はＥＣＵ１起動時に実行されるプログラム（つまりブートプログラム）Ｐｍ１のブロック図である。ブートプログラムＰｍ１は、コア割当部Ｐｍ１１と、共有メモリ設定部Ｐｍ１２とを備える。コア割当部Ｐｍ１１は、複数のコア１１のうちの予め定められた１つのコア１１をハードウェア制御コア１１ｘに設定するとともに、残りのコア１１をＶＭコア１１ａ〜１１ｃに設定するプログラムモジュールである。コア割当部Ｐｍ１１は、ハードウェア制御コア１１ｘにハードウェア制御ソフト３を実行させる。また、コア割当部Ｐｍ１１は、ＶＭコア１１ａ〜１１ｃのそれぞれに対して、予め対応付けられているゲストＯＳ２を割り当て起動させる。共有メモリ設定部Ｐｍ１２は、ＲＡＭが備える記憶領域の一部又は全部を共有メモリ部１２に設定するプログラムモジュールである。
【００４２】
ブートプログラムＰｍ１は、ハードウェア１３ｄとしてのフラッシュメモリ（つまり不揮発性の記憶媒体）に保存されている。なお、ブートプログラムＰｍ１の保存装置としては種々の非遷移的実体的記憶媒体（non-transitory tangible storage medium）を採用可能である。ブートプログラムＰｍ１自体は、ハードウェアとプロセッサ１０の協働によって実行されれば良い。ブートプログラムＰｍ１が請求項に記載の仮想化プログラムに相当し、ブートプログラムＰｍ１を記憶している記憶装置（ここではハードウェア１３ｄ）が請求項に記載の記憶媒体に相当する。
【００４３】
次に、ＥＣＵ１の起動処理が完了した後のハードウェア制御コア１１ｘとＶＭコア１１ａとの相互作用について図４を用いて説明する。なお、ここでは一例としてＶＭコア１１ａ〜１１ｃのうち、ＶＭコア１１ａのソフトウェア的な構成及び機能について説明するが、その他のＶＭコア１１ｂ〜１１ｃも同様である。
【００４４】
まずは、ハードウェア制御コア１１ｘが備える機能について説明する。ハードウェア制御コア１１ｘは、図４に示すように、コア間通信部Ｆ１及びデバイスドライバ部Ｆ２を備える。コア間通信部Ｆ１はより細かい機能ブロックとして読出部Ｆ１１、及び、保存処理部Ｆ１２を備える。コア間通信部Ｆ１は、ハードウェア制御コア１１ｘが各ＶＭコア１１（たとえばＶＭコア１１ａ）と通信するための構成である。
【００４５】
ハードウェア制御コア１１ｘとＶＭコア１１ａとの通信は、共有メモリ部１２を介して（換言すればメモリアクセス）によって実現される。ＶＭコア１１ａは、任意のハードウェア１３を使用したい場合、当該ハードウェア１３向けのデータ（換言すればビット列）を共有メモリ部１２に保存することにより、当該データをハードウェア制御コア１１ｘに受け渡す。また、ハードウェア制御コア１１ｘは、ハードウェア１３から取得したデータを共有メモリ部１２に保存することによってＶＭコア１１ａに受け渡す。なお、図４における白塗り矢印はデータの流れを示している。
【００４６】
図４に示すＭ１は、ＶＭコア１１ａからハードウェア制御コア１１ｘ宛のデータが保存されるメモリ領域（以降、ダウンリンクメモリ）である。また、Ｍ２は、ハードウェア制御コア１１ｘからＶＭコア１１ａ宛のデータが保存されるメモリ領域（以降、アップリンクメモリ）である。ダウンリンクメモリＭ１とアップリンクメモリＭ２はハードウェア的に独立したメモリを用いて実現されていても良いし、ソフトウェア的に（換言すれば論理的に）実現されていても良い。ダウンリンクメモリＭ１とアップリンクメモリＭ２は、ＶＭコア１１毎（換言すれば、ゲストＯＳ２毎、仮想計算機毎）に用意されれば良い。
【００４７】
ハードウェア制御コア１１ｘはアップリンクメモリＭ２へのデータの書き込み、読み出し、削除等を実施可能に構成されている一方、ダウンリンクメモリＭ１にはデータを書き込めないように構成されている。つまり、ハードウェア制御コア１１ｘは、ダウンリンクメモリＭ１へのデータ保存は禁止されている。ハードウェア制御コア１１ｘはダウンリンクメモリＭ１に対しては、保存されているデータの読み出しのみが実行可能に構成されている。
【００４８】
また、ＶＭコア１１ａはダウンリンクメモリＭ１へのデータの書き込み、読み出し、削除等を実施可能に構成されている一方、アップリンクメモリＭ２にはデータを書き込めないように構成されている。つまり、ＶＭコア１１ａは、アップリンクメモリＭ２へのデータ保存が禁止されている。ＶＭコア１１ａはアップリンクメモリＭ２に対しては保存されているデータの読み出しのみが実行可能に構成されている。
【００４９】
コア間通信部Ｆ１が備える読出部Ｆ１１は、ダウンリンクメモリＭ１に保存されているデータを読み出すための構成である。読出部Ｆ１１は、ダウンリンクメモリＭ１から読み出したデータをデバイスドライバ部Ｆ２に出力する。読出部Ｆ１１が請求項に記載の制御側読出部に相当する。
【００５０】
保存処理部Ｆ１２はアップリンクメモリＭ２にデータを保存するための構成である。保存処理部Ｆ１２は、後述するデバイスドライバ部Ｆ２が受信したデータをそのまま（つまりローデータを）アップリンクメモリＭ２に保存し、ＶＭコア１１ａに対して割込み信号を出力する。割込み信号は保存データの読出を要求する信号である。ＶＭコア１１ａは、保存処理部Ｆ１２から出力された割込み信号を受信したことに基づいてアップリンクメモリＭ２を参照し、保存されているデータを読み出す。なお、アップリンクメモリＭ２へのデータ保存に伴う割込み信号の出力は、アップリンクメモリＭ２へのデータの保存完了に対して遅延無く（つまり可及的速やかに）実施されるものとする。保存処理部Ｆ１２が請求項に記載の制御側保存処理部に相当する。
【００５１】
デバイスドライバ部Ｆ２は、種々のハードウェア１３に対応するデバイスドライバを実行する構成である。つまり、デバイスドライバ部Ｆ２は種々のハードウェア１３と相互通信を実施し、正常に作動させる。デバイスドライバ部Ｆ２は、読出部Ｆ１１から入力されたデータに基づいて、ハードウェア１３を動作させる。読出部Ｆ１１から入力されたデータとは、換言すればコア間通信部Ｆ１がダウンリンクメモリＭ１を介してＶＭコア１１ａから取得したデータである。
【００５２】
また、デバイスドライバ部Ｆ２は、ハードウェア１３から入力された信号に対応するビット列（換言すればローデータ）をコア間通信部Ｆ１（より具体的には保存処理部Ｆ１２）に出力する。デバイスドライバ部Ｆ２がコア間通信部Ｆ１に出力したビット列としてのデータは、アップリンクメモリＭ２を介してＶＭコア１１ａに出力される。
【００５３】
なお、デバイスドライバ部Ｆ２が出力するデータには、何れのハードウェア１３から取得したデータであるのかを示す出力元情報が付与されていることが好ましい。当該データの受け手であるＶＭコア１１ａが、何れのハードウェア１３から出力されたデータであるかを特定するためである。ただし、必ずしもデバイスドライバ部Ｆ２の出力データに上記の出力元情報が含まれている必要はない。例えば、アップリンクメモリＭ２の記憶領域をハードウェア１３毎に細分化して運用する構成においては、ＶＭコア１１ａは、アップリンクメモリＭ２内におけるデータの保存場所（換言すればアドレス）に基づいて、当該保存データが何れのハードウェア１３から出力されたデータであるかを特定可能となるためである。
【００５４】
また本実施形態では、デバイスドライバ部Ｆ２を実現する、各種のハードウェア１３に対応するデバイスドライバは、隠匿されたソースコードで実装されているものとする。これによれば、ＶＭコア１１ａが提供する仮想計算機（ここでは走行支援ＥＣＵ１ａ）が、外部からハッキングされる恐れを抑制することができる。仮想計算機としてのＶＭコア１１と、デバイスドライバとしてのデバイスドライバ部Ｆ２が互いにローデータをやり取りする構成において、デバイスドライバ部Ｆ２が隠匿されたソースコードで形成されている場合、通常のハッキング手法で仮想計算機に侵入することは困難（実質的に不可能）となるからである。
【００５５】
次に、ＶＭコア１１ａが提供する機能について説明する。ＶＭコア１１ａは機能ブロックとして、コア間通信部Ｇ１及び処理実行部Ｇ２を備える。コア間通信部Ｇ１は、ＶＭコア１１ａがハードウェア制御コア１１ｘと双方向通信するための構成である。コア間通信部Ｇ１はより細かい機能ブロックとして読出部Ｇ１１、及び、保存処理部Ｇ１２を備える。読出部Ｇ１１は、ハードウェア制御コア１１ｘの保存処理部Ｆ１２から出力された割込み信号を受信したことに基づいて、アップリンクメモリＭ２を参照し、保存されているデータを読み出す構成である。読出部Ｇ１１は、アップリンクメモリＭ２から読み出したデータを処理実行部Ｇ２に出力する。読出部Ｇ１１が請求項に記載の仮想計算機側読出部に相当する。
【００５６】
また、保存処理部Ｇ１２は、処理実行部Ｇ２から入力されたデータをそのままダウンリンクメモリＭ１に保存し、ハードウェア制御コア１１ｘに対して割込み信号を出力する。ハードウェア制御コア１１ｘ（より具体的には読出部Ｆ１１）は、保存処理部Ｆ１２から出力された割込み信号を受信したことに基づいてダウンリンクメモリＭ１を参照し、保存されているデータを読み出す。なお、ダウンリンクメモリＭ１へのデータ保存に伴う割込み信号の出力は、ダウンリンクメモリＭ１へのデータの保存完了に対して遅延無く（つまり可及的速やかに）実施されるものとする。保存処理部Ｇ１２が請求項に記載の仮想計算機側保存処理部に相当する。
【００５７】
処理実行部Ｇ２は、ハードウェア１３から入力されたデータに基づいて、所定の処理を実行する機能ブロックである。処理実行部Ｇ２は、細分化した機能ブロックとして、ＯＳ部Ｇ２１及びアプリケーション部Ｇ２２を備える。ＯＳ部Ｇ２１は、ＶＭコア１１ａに割り当てられているゲストＯＳ２ａ（ここでは走行支援ＯＳ）を実行する構成である。ＯＳ部Ｇ２１は、読出部Ｇ１１から入力されたデータを用いて種々の演算処理を実行する。ＯＳ部Ｇ２１は、読出部Ｇ１１から入力されたデータに基づく演算処理の結果としてのデータを、コア間通信部Ｇ１（より具体的には保存処理部Ｇ１２）に出力する。また、ＯＳ部Ｇ２１は、読出部Ｇ１１から入力されたデータを、必要に応じてアプリケーション部Ｇ２２に提供する。
【００５８】
アプリケーション部Ｇ２２は、ゲストＯＳ２ａと対応付けられているアプリケーションソフトウェア（ここでは走行支援アプリ）を実行する構成である。アプリケーション部Ｇ２２はＯＳ部Ｇ２１から提供されたデータに基づいて所定の演算処理を実行する。アプリケーション部Ｇ２２は、当該演算処理の結果に応じて、所定のハードウェア１３向けのデータをＯＳ部Ｇ２１に出力する。
【００５９】
アプリケーション部Ｇ２２からＯＳ部Ｇ２１に出力されたハードウェア１３向けのデータは、ＯＳ部Ｇ２１を介してコア間通信部Ｇ１に出力される。すなわち、ＯＳ部Ｇ２１は、アプリケーション部Ｇ２２からハードウェア１３向けのデータが入力された場合には、当該入力データをコア間通信部Ｇ１に出力する。ＯＳ部Ｇ２１やアプリケーション部Ｇ２２といった処理実行部Ｇ２がコア間通信部Ｆ１に出力したデータは、ダウンリンクメモリＭ１を介してハードウェア制御コア１１ｘに出力される。
【００６０】
ところで、本実施形態では一例として処理実行部Ｇ２は、ＯＳを実行するＯＳ部Ｇ２１と、アプリケーションソフトウェアを実行するアプリケーション部Ｇ２２の２階層構造とするがこれに限らない。処理実行部Ｇ２は、プロトコルスタックやファイルシステムなどのミドルウェアを実行するミドルウェア部を備えていても良い。処理実行部Ｇ２の具体的な構成は、仮想計算機のソフトウェア構成に由来するものである。
【００６１】
なお、仮想計算機を提供する各ゲストＯＳ２は、デバイスドライバを備えている必要はない。デバイスドライバ部Ｆ２が、各仮想計算機が出力するデータに基づいてハードウェア１３を作動させるためである。デバイスドライバ部Ｆ２は、各ゲストＯＳ２の代わりにハードウェア１３を制御する構成に相当する。また、上記理由により、仮にゲストＯＳ２がデバイスドライバを備えていても当該デバイスドライバは動作しない。
【００６２】
処理実行部Ｇ２が出力するデータには、何れのハードウェア１３向けのデータであるのかを示す宛先情報が付与されていることが好ましい。ハードウェア制御コア１１ｘが、受信したデータに基づいて何れのハードウェア１３を動作させるかを特定するためである。ただし、必ずしも処理実行部Ｇ２の出力データに上記の宛先情報が含まれている必要はない。例えば、ダウンリンクメモリＭ１の記憶領域をさらにハードウェア１３毎に細分化して運用する場合には、ハードウェア制御コア１１ｘは、ダウンリンクメモリＭ１内におけるデータの保存場所（換言すればアドレス）に基づいて、当該保存データが何れのハードウェア１３向けのデータであるかを特定可能となるためである。
【００６３】
＜実施形態のまとめ＞
上記の構成によれば、ＥＣＵ１は電源投入に伴う起動処理により、ＥＣＵ１が備える４つのコア１１のうちの１つを、ハードウェア制御コア１１ｘとして動作させる。また、残りの３つコア１１は、それぞれ異なるゲストＯＳ２を実行し、それぞれが独立した仮想計算機として機能する。つまり、ＥＣＵ１は全体として仮想的に複数の計算機として動作する。
【００６４】
上述した実施形態において、各ＶＭコア１１ａ〜１１ｃとハードウェア制御コア１１ｘとはメモリアクセスによって相互に通信するように構成されている。このような態様においてデバイスドライバ部Ｆ２は、メモリアクセスによって各ＶＭコア１１ａ〜１１ｃから取得したローデータに基づいてハードウェア１３を動作させる。また、各ＶＭコア１１ａ〜１１ｃは、共有メモリ部１２に対して任意のタイミングでデータを保存することができる。
【００６５】
つまり、各ＶＭコア１１ａ〜１１ｃは、任意のタイミングで所望のハードウェアを動作させることが可能となる。また、ハードウェア１３から出力される仮想計算機向けのデータは、デバイスドライバ部Ｆ２及びコア間通信部Ｆ１によって共有メモリ部１２を介して、出力すべきＶＭコア１１に提供される。共有メモリ部１２に保存されたデータの読出は、割込み信号の入出力によって遅延なく行われる。
【００６６】
加えて、ゲストＯＳ２ａ〜２ｃはそれぞれ１つのコア１１を専有して動作する。つまり、１つのコア１１が複数のゲストＯＳ２によって共用されることはない。各ゲストＯＳ２は自分自身に割り当てられているコアの計算リソースを、他のゲストＯＳ２の動作状況に関わらずに自由に使用することができる。
【００６７】
つまり、上記の構成によれば各ゲストＯＳ２は、自分専用のコア１１が備える計算リソースを用いて動作するとともに、任意のタイミングで所望のハードウェアを利用することができる。よって、ゲストＯＳ２とハードウェアとの通信が遅延する恐れを低減できる。
【００６８】
また、上記の構成によればハードウェア制御コア１１ｘが、各ＶＭコア１１ａ〜１１ｃにとってのデバイスドライバとしての機能を提供する。故に各ゲストＯＳ２はデバイスドライバを備えている必要はない。一般的にデバイスドライバは、プロトコルやＣＰＵレジスタなどを備える大規模なプログラムモジュールとなる。本実施形態によれば、各ゲストＯＳ２がデバイスドライバを備える必要がないため、ＥＣＵ１に保存されるソフトウェア全体としての規模を抑制することができる。加えて、デバイスドライバ部Ｆ２を実現するデバイスドライバは隠匿されたソースコードで実現されている。故に、ＥＣＵ１上で動作する仮想計算機に対する不正なアクセスに対するセキュリティを高めることができる。
【００６９】
さらに、以上の構成によれば、ハードウェア１３は仮想計算機と対応付けずに運用される。換言すれば、各ハードウェア１３を各仮想計算機で共有することができる。また、これに伴い、従来の仮想化システムで必要であったハードウェアと仮想計算機との対応付けの処理を省略することができる。
【００７０】
ところで、ハイパーバイザーを用いた従来の仮想化システムにおいて、複数の仮想計算機が１つのハードウェア１３を共有するための構成として、仮想計算機とハイパーバイザーとを所定の通信規格に準拠した仮想的な通信パイプで相互通信可能に接続する構成（以降、想定構成）も考えられる。想定構成におけるハイパーバイザーは仮想計算機から受け取ったデータに基づいてハードウェアを制御するとともに、ハードウェアから受け取ったデータを仮想計算機に提供する処理を実施する。
【００７１】
しかしながら、想定構成では、仮想計算機がハードウェアと通信する際には、仮想計算機とハードウェアとの間でやり取りされるデータ／信号を、いったん仮想計算機−ハイパーバイザー間の通信規格に応じた形式に変換する処理（以降、ブリッジ処理）を実行する必要がある。
【００７２】
例えば仮想計算機が或るハードウェア向けのデータを出力する際には、当該データをいったんゲストＯＳとハイパーバイザー間の通信規格に応じた形式に変換にしてハイパーバイザーに出力する。また、ハイパーバイザーは、或るハードウェアから取得したデータを仮想計算機に出力する際には、当該データをいったんゲストＯＳとハイパーバイザー間の通信規格に応じた形式に変換して出力する。このようなブリッジ処理には所定の時間を要するため、当該ブリッジ処理が仮想計算機とハードウェアとの通信の遅延の原因となりうる。
【００７３】
対して、本実施形態の構成によれば、上記の想定構成で必要となるブリッジ処理を実施する必要がない。ブリッジ処理自体が実施されないため、本実施形態によればブリッジ処理に由来してゲストＯＳ２とハードウェア１３との通信遅延が遅延する恐れはない。このように本実施形態によれば、複数の仮想計算機が１つのハードウェアを共有可能であって、且つ、仮想計算機とハードウェアとの通信の遅延を抑制可能な仮想化システムを提供することができる。
【００７４】
ところで、上記のブリッジ処理による通信遅延は、プロセッサ１０の性能を高めることによって低減することができる。しかしながら、本実施形態のように車両に搭載されるＥＣＵ１では、耐環境性やコストの観点から、オフィスや家庭で使用されるコンピュータほど高性能なプロセッサを使用することは難しい。特に、車両の走行制御にかかるＥＣＵ１は、エンジン等の熱源の近くなど（つまり高温環境下）で使用される。高温環境下において利用可能なプロセッサで想定構成を実現しようとすると、ブリッジ処理に由来する通信遅延が顕著となり、所望の通信性能が得られなくなる恐れがある。
【００７５】
対して本実施形態の構成では前述のようにブリッジ処理が存在しないため、高温環境下において利用可能なプロセッサを用いて仮想化システムを構築しても、ハードウェア−仮想計算機間の通信遅延が問題となりくい。つまり、本実施形態は、車両への組み込まれる物理計算機を用いて仮想化システムを構築する場合により一層有用な構成といえる。特に、車両の走行制御にかかるＥＣＵを仮想化する際に好適である。
【００７６】
以上、本開示の実施形態を説明したが、本開示は上述の実施形態に限定されるものではなく、以降で述べる種々の変形例も本開示の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施することができる。
【００７７】
なお、前述の実施形態で述べた部材と同一の機能を有する部材については、同一の符号を付し、その説明を省略する。また、構成の一部のみに言及している場合、他の部分については先に説明した実施形態の構成を適用することができる。
【００７８】
［変形例１］
上述した実施形態では、ハードウェア制御コア１１ｘがＶＭコア１１ａ向けのデータを保存するメモリと、ＶＭコア１１ａがハードウェア制御コア１１ｘ向けのデータを保存するメモリとを、ソフトウェア的又はハードウェア的に別々に用意する態様を開示した。他の態様として、それらは分けられていなくとも良い。つまり、ハードウェア制御コア１１ｘがＶＭコア１１ａ向けのデータを保存するメモリと、ＶＭコア１１ａがハードウェア制御コア１１ｘ向けのデータを保存するメモリは同一のメモリであってもよい。
【００７９】
［変形例２］
上述した実施形態では、１つのゲストＯＳ２に対して１つのＶＭコア１１を割り当てる態様を開示した。つまり、ゲストＯＳ２とＶＭコア１１とを１対１で対応付ける構成を開示した。しかしながら、ゲストＯＳ２に対するＶＭコア１１の割り当て態様はこれに限らない。図５に示すように１つのゲストＯＳ２に対して複数のＶＭコア１１を割り当てても良い。図５の例ではゲストＯＳ２としての第１ＯＳ２ｄには２つのＶＭコア１１ａ、１１ｂを割り当てるとともに、ゲストＯＳ２としての第２ＯＳ２ｅには１つのＶＭコア１１ｃを割り当てた態様を示している。
【００８０】
［変形例３］
以上では、車両に搭載されて使用されるＥＣＵ１に対して本発明に係る仮想化システムを適用した態様を開示したがこれに限らない。オフィスや自宅等で使用されるコンピュータにも適用可能である。
【００８１】
つまり、本実施形態では、ゲストＯＳ２は用途に応じた限定的な機能を提供するための組み込みＯＳ（換言すれば専用ＯＳ）とする態様を開示したが、ゲストＯＳ２は汎用コンピュータで使用されるＯＳ（いわゆる汎用ＯＳ）であってもよい。組み込みＯＳは、換言すれば１つ又は複数の特定のアプリケーションソフトウェアの実行をサポートするＯＳである。汎用ＯＳは、ユーザによってインストールされうる多種多様なアプリケーションソフトウェアをサポートするＯＳに相当する。
【符号の説明】
【００８２】
１  ＥＣＵ（物理計算機）、２・２ａ〜２ｅ  ゲストＯＳ、３  ハードウェア制御ソフト、１１  コア、１１ａ〜１１ｃ  ＶＭコア、１１ｘ  ハードウェア制御コア、１２  共有メモリ部、１３・１３ａ〜１３ｄ  ハードウェア、１３ｄ  ハードウェア（記憶媒体）、Ｆ１  コア間通信部、Ｆ２  デバイスドライバ部、Ｆ１１  読出部（制御側読出部）、Ｆ１２  保存処理部（制御側保存処理部）、Ｇ１  コア間通信部、Ｇ１１  読出部（仮想計算機側読出部）、Ｇ１２  保存処理部（仮想計算機側保存処理部）、Ｇ２  処理実行部
【図１】
2019057162.tif 000003
【図２】
2019057162.tif 000004
【図３】
2019057162.tif 000005
【図４】
2019057162.tif 000006
【図５】
2019057162.tif 000007