JP6777050B2 - 仮想化システム、仮想化プログラム、及び、記憶媒体 - Google Patents

仮想化システム、仮想化プログラム、及び、記憶媒体 Download PDF

Info

Publication number
JP6777050B2
JP6777050B2 JP2017181565A JP2017181565A JP6777050B2 JP 6777050 B2 JP6777050 B2 JP 6777050B2 JP 2017181565 A JP2017181565 A JP 2017181565A JP 2017181565 A JP2017181565 A JP 2017181565A JP 6777050 B2 JP6777050 B2 JP 6777050B2
Authority
JP
Japan
Prior art keywords
core
hardware
virtual computer
data
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017181565A
Other languages
English (en)
Other versions
JP2019057162A5 (ja
JP2019057162A (ja
Inventor
正剛 隈部
正剛 隈部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2017181565A priority Critical patent/JP6777050B2/ja
Priority to PCT/JP2018/031416 priority patent/WO2019058874A1/ja
Publication of JP2019057162A publication Critical patent/JP2019057162A/ja
Publication of JP2019057162A5 publication Critical patent/JP2019057162A5/ja
Priority to US16/816,813 priority patent/US11494221B2/en
Application granted granted Critical
Publication of JP6777050B2 publication Critical patent/JP6777050B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45541Bare-metal, i.e. hypervisor runs directly on hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Description

本発明は、実体を有する計算機上で複数のゲストOSを動作させることにより、当該計算機を仮想的に複数の計算機として動作させる仮想化システム、仮想化プログラム、及び、記憶媒体に関する。
近年、実体を有する計算機である物理計算機上で複数のゲストOS(OS:Operating System)を動作させることにより、当該物理計算機を仮想的に複数の計算機として動作させる仮想化システムが種々提案されている。なお、仮想的な計算機とは、実体を有する計算機(いわゆる物理計算機)を論理的に分割してなる計算機であり、仮想マシンや論理計算機とも称される。ゲストOSは、仮想計算機を実現する基本ソフトウェアである。
なお、仮想化システムの種類(換言すれば方式)としては、ハイパーバイザー型の仮想化システムや、ホストOS型の仮想化システムなどがある。ハイパーバイザー型の仮想化システムは、仮想化専用のOS(いわゆるハイパーバイザー;hypervisor)上でゲストOSを動作させる方式の仮想化システムである。ハイパーバイザーはハードウェア上で直接動作し、ゲストOSへの計算リソースの割り当てや、ゲストOSによるハードウェア(いわゆるペリフェラル)へのアクセスを制御する。
ここでのハードウェアとは、OSにとっての物理層に相当する。ハードウェアには、イーサネット(登録商標)やUARTなどのインターフェースにおいて論理信号を実際の電気的な信号に変換する構成(いわゆるI/Oデバイス)や、フラッシュメモリ、ハードディスクなどが含まれる。種々の通信規格に対応するI/Oデバイスは、それぞれチップセット(いわゆるPHYチップ)として実現されていることが多い。
ホストOS型の仮想化システムは、ホストOS上にアプリケーションとして仮想的に別のOS(つまりゲストOS)を動作させる方式の仮想化システムである。ホストOSは、物理計算機上で動作する基本ソフトウェアである。ホストOSは、ゲストOSを動作させるためのアプリケーション(仮想化アプリケーション)以外のアプリケーションも実行可能である。なお、ホストOSが備える仮想化アプリケーションも、ゲストOSによるハードウェアへのアクセスを制御する役割を担う。つまり、ホストOSが備える仮想化アプリケーションもハイパーバイザーと同様の機能を提供するソフトウェアである。
以降では便宜上、ホスト型システムの仮想化システムを提供する仮想化アプリケーションとハイパーバイザー型の仮想化システムを提供するハイパーバイザーを区別せずに、ゲストOSからハードウェアへのアクセスを制御するソフトウェアのことをハイパーバイザーと記載する。
一般的に、各ゲストOSは、種々のハードウェアを使用するためのデバイスドライバを備えており、当該デバイスドライバを用いてハードウェアを使用する。或るゲストOSが或るハードウェアを使用する場合には、ハイパーバイザーによって当該ゲストOSと当該ハードウェアとは1:1に対応付けられ、他のゲストOSは使用できなくなる。
特許文献1にはホストOS型の仮想化システムとして、ホストOSとゲストOSとのシリアルポート通信の安定性を向上させるために、ホストOS上でシリアルポート通信によるデータ入出力を行うホスト側通信手段と、ゲストOS上でシリアルポート通信によるデータ入出力を行うゲスト側通信手段と、ゲストOSの起動と同時にホスト側通信手段とゲスト側通信手段との通信路を確立する通信路確保手段と、を備える仮想化システムが開示されている。この特許文献1に記載の構成は、別の観点によれば、ゲストOSとハイパーバイザーとを、所定の通信規格に準拠した通信パイプで相互通信可能に接続した構成に相当する。
特開2014−149698号公報
従来の仮想化システムでは、仮想計算機への計算リソースの割り当てや仮想計算機によるハードウェアへのアクセスは、ハイパーバイザーによって制御される。また、或る仮想計算機が或るハードウェアを使用する場合には、ハイパーバイザーによって当該仮想計算機と当該ハードウェアとは1:1に対応付けられ、他の仮想計算機は使用できなくなる。
故に、仮想計算機が或るハードウェアを利用したい状況であっても、他の仮想計算機の動作状況によっては、すぐには当該ハードウェアを使用できない場合がある。つまり、仮想計算機とハードウェアとの通信のリアルタイム性が損なわれる場合がある。
本発明は、この事情に基づいて成されたものであり、その目的とするところは、仮想計算機とハードウェアとの通信の遅延を抑制可能な仮想化システム、仮想化プログラム、及び、記憶媒体を提供することにある。
その目的を達成するための本発明における第1の仮想化システムは、複数のコアを備える1つの物理計算機上で複数の仮想計算機が動作する仮想化システムであって、複数のハードウェア(13a、13b、13c、13d)と、複数のハードウェアのそれぞれの動作を制御するためのコアであるハードウェア制御コア(11x)と、仮想計算機のOSであるゲストOSが動作するためのコアである複数の仮想計算機コア(11a、11b、11c)と、ハードウェア制御コア及び複数の仮想計算機コアのそれぞれが同時並行的にアクセス可能なメモリである共有メモリ(12)と、を備え、1つの仮想計算機は、1つ又は複数の仮想計算機コアを専有して動作するように設定されており、ハードウェア制御コアは、複数のハードウェアのそれぞれに対応するデバイスドライバを実行することによって、複数のハードウェアのそれぞれの動作を制御するデバイスドライバ部(F2)を備え、ゲストOSは、デバイスドライバを備えておらず、デバイスドライバ部を用いてハードウェアを使用するものであり、ハードウェア制御コアと仮想計算機コアとの通信は、共有メモリへのデータ保存及び当該保存されたデータの読出によって実現され、デバイスドライバ部は、仮想計算機が共有メモリに保存したデータに基づいてハードウェアの動作を制御するとともに、ハードウェアから入力されたデータを共有メモリに保存することによって仮想計算機コアに提供する。
その目的を達成するための本発明における第2の仮想化システムは、複数のコアを備える1つの物理計算機上で複数の仮想計算機が動作する仮想化システムであって、複数のハードウェア(13a、13b、13c、13d)と、複数のハードウェアのそれぞれの動作を制御するためのコアであるハードウェア制御コア(11x)と、仮想計算機のOSであるゲストOSが動作するためのコアである複数の仮想計算機コア(11a、11b、11c)と、ハードウェア制御コア及び複数の仮想計算機コアのそれぞれが同時並行的にアクセス可能なメモリである共有メモリ(12)と、を備え、1つの仮想計算機は、1つ又は複数の仮想計算機コアを専有して動作するように設定されており、ハードウェア制御コアは、複数のハードウェアのそれぞれに対応するデバイスドライバを実行することによって、複数のハードウェアのそれぞれの動作を制御するデバイスドライバ部(F2)を備え、ハードウェア制御コアと仮想計算機コアとの通信は、共有メモリへのデータ保存及び当該保存されたデータの読出によって実現され、デバイスドライバ部は、仮想計算機が共有メモリに保存したデータに基づいてハードウェアの動作を制御するとともに、ハードウェアから入力されたデータを共有メモリに保存することによって仮想計算機コアに提供し、共有メモリとして、ハードウェア制御コアから仮想計算機コアに向けたデータが保存されるアップリンクメモリ(M2)と、仮想計算機コアからハードウェア制御コアに向けたデータが保存されるダウンリンクメモリ(M1)と、を仮想計算機コア毎に備え、ハードウェア制御コアは、アップリンクメモリへのデータ保存は実行可能に設定されている一方、ダウンリンクメモリへのデータ保存は禁止されており、仮想計算機コアは、ダウンリンクメモリへのデータ保存は実行可能に設定されている一方、アップリンクメモリへのデータ保存は禁止されている。
上記の構成は、仮想計算機コアと、ハードウェア制御コアとの通信がメモリアクセスによって実現された構成に相当する。このような態様において各仮想計算機コアは、任意のタイミングでデータを共有メモリにデータを保存することができる。また、デバイスドライバ部は、メモリアクセスによって取得した、仮想計算機コアからのデータに基づいてハードウェアを動作させる。故に、各仮想計算機コアは任意のタイミングで所望のハードウェアを利用可能となる。
また、1つの仮想計算機コアは、複数のゲストOS(換言すれば仮想計算機)で共用されない。つまり、各仮想計算機は1つ又は複数のコアを専有して動作する。各仮想計算機は自分自身に割り当てられている仮想計算機コアの計算リソースを、他の仮想計算機の動作状況に関わらずに自由に使用することができる。
つまり、上記の構成によれば各仮想計算機は、自分専用のコアが備える計算リソースを用いて動作するとともに、任意のタイミングで所望のハードウェアを利用することができる。よって、仮想計算機とハードウェアとの通信が遅延する恐れを低減できる。
また、上記目的を達成するための仮想化プログラムの発明は、複数のコアと、複数のハードウェアを備える物理層と、ランダムアクセスメモリを備える物理計算機を、請求項1から5の何れか1項に記載の仮想化システムとして動作させるプログラムであって、複数のコアのうちの1つをハードウェア制御コアに設定するとともに、残りのコアを仮想計算機コアに設定するコア割当部(Pm11)と、ランダムアクセスメモリが備える記憶領域の一部又は全部を共有メモリに設定する共有メモリ設定部(Pm12)と、を備えるプログラムである。記憶媒体の発明は、コンピュータを上記の仮想化システムとして機能させるためのプログラム(つまり仮想化プログラム)が保存されていることを特徴とする。
なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
本実施形態に係るECU1の構成の概略的な構成を示すブロック図である。 仮想計算機とハードウェア13との接続関係を説明するためのブロック図である。 ECU1起動時に実行されるブートプログラムの概略的な構成を示す概念図である。 仮想計算機によるペリフェラルアクセスを説明するための図である。 ゲストOSの割り当て態様の変形例を示す図である。
以下、本開示の1つの実施の形態について図を用いて説明する。図1は、本開示に係る仮想化システムが適用された電子制御装置(ECU:Electronic Control Unit)のハードウェア構成及びソフトウェア構成の一例を示す図である。ECU1は車両に搭載されてあって、車両内に構築されているネットワークに接続されている。
ECU1は、1つの物理計算機として構成されており、図1に示すように4つのコア11を備えるプロセッサ10と、共有メモリ部12と、複数のハードウェア13a〜13dと、を備える。便宜上、4つのコア11のそれぞれを区別する場合にはコア11a、コア11b、コア11c、及びコア11xと記載する。図中のCore1やCore2といった記載は、複数のコア11を区別するためのラベルである。図1では一例としてCore0のラベルが付与されているコア11をコア11xとする態様を例示している。また、種々のハードウェア13a〜13dを区別しない場合には単にハードウェア13と記載する。図中のPHYは、ハードウェア13であることを示すラベルである。図1において制御線や情報線の図示は省略している。
ECU1は、複数のコア11が搭載された単一のプロセッサ(つまりマルチコアプロセッサ)を用いて実現されていても良いし、搭載コア数が1のプロセッサを複数用いて実現されていてもよい。また、複数のマルチコアプロセッサを組み合わせて実現されていても良い。ここでは一例としてECU1は4つのコア11を備える単一のプロセッサ(いわゆるクアッドコアプロセッサを用いて実現されているものとする。
なお、ここでのコア11とは、演算処理を行うための論理回路や1次キャッシュなどが実装されている1つの実体を有するモジュールである。各コア11は、プロセッサコアや、物理コアとも称される。本実施形態ではECU1が備えるコア11の数は4とするが、これに限らない。ECU1が備えるコア11の数は適宜設計されればよい。ECU1が備えるコア11の数は5以上であってもよい。ECU1が備えるコア11の数は例えば6つであっても良い。
共有メモリ部12は、複数のコア11のそれぞれが同時並行的にアクセス可能なメモリ領域である。共有メモリ部12は換言すれば各コア11で共有されるメモリ領域である。共有メモリ部12はランダムアクセスメモリ(以降、RAM:Random Access Memory)等を用いて実現されている。共有メモリ部12は、例えばバスシステムなどのインターコネクト機構を介して各コア11と接続されている。なお、共有メモリ部12とコア11との通信のインターフェースとしてはSGIなどを採用可能である。
複数のハードウェア13は、プロセッサ10にとっての物理層を提供する構成である。複数のハードウェア13は、プロセッサ10にとってのペリフェラルに相当する。ハードウェア13は、例えば、ECU1が外部装置と接続することによって、外部から情報を入力されたり、外部に情報を出力したりするためのデバイス(いわゆるI/Oデバイス)である。また、ハードウェア13は、ハードディスクドライブやNOR型フラッシュメモリなどの不揮発性の記憶装置であってもよい。
例えばハードウェア13aは、イーサネット(登録商標)用の物理的なインターフェースとして機能する回路モジュールである。つまり、ハードウェア13aは、イーサネットの規格に準拠して、論理信号を実際の電気的な信号に変換したり、その逆の変換を実施したりする回路モジュールである。また、ハードウェア13bは、UART用のインターフェースとして機能する回路モジュールである。すなわち、ハードウェア13bは、UARTの規格に準拠して、論理信号を実際の電気的な信号に変換したりその逆の変換を実施したりする。ハードウェア13cは、例えばUSB通信のインターフェースとして機能する構成であって、USBの規格に準拠して、論理信号を実際の電気的な信号に変換したり、その逆の変換を実施したりする。
ハードウェア13dは、例えばNOR型のフラッシュメモリである。ハードウェア13dとしてのNOR型フラッシュメモリには、例えばECU1の起動時に実行されるプログラム(以降、ブートプログラム)Pm1や、後述するゲストOS2a〜2c等が保存されているものとする。
その他、ECU1はハードウェア13として、上述した以外の種々の通信規格に対応するI/Oデバイスや不揮発性の記憶媒体などを備えうる。また、種々のアプリケーションソフトウェアが保存されている不揮発性の記憶媒体も備えている。アプリケーションソフトウェアは、前述のNOR型フラッシュメモリに保存されていてもよい。ECU1が備えるべきハードウェア13の種類は適宜設計されればよい。ペリフェラルとしての種々のハードウェア13は、例えば図示しない信号線を介してプロセッサ10と接続されている。ハードウェア13とプロセッサ10との相互通信はバスシステムによって提供されていてもよい。
上記の構成要素を備えるECU1は、ECU1への電源投入をトリガとして、所定の起動処理(いわゆるブート・ストラップ)を実行し、ECU1が備える複数のコア11の1つを、ハードウェア13の動作を制御するコア(以降、ハードウェア制御コア)11xとして機能させる。便宜上以降では、或るコア11をハードウェア制御コア11xとして機能させるためのソフトウェアをハードウェア制御ソフト3と称する。ハードウェア制御コア11xは、別の観点によれば、ECU1を仮想的に複数(具体的には3つ)の計算機として動作させる際の、仮想計算機とハードウェア13との通信インターフェースとしての処理を実行するコア11に相当する。
複数のコア11のうち、複数のコア11のうちの何れのコア11をハードウェア制御コア11xとするか、すなわち、ハードウェア制御コア11xとして動作させるコア11は予め設定されていればよい。ここではコア11xがハードウェア制御コア11xとして動作するように設定されているものとする。
また、ECU1は起動処理を実行することで、残りのコア11a〜cのそれぞれに所定のゲストOS2を割り当てる。各ゲストOS2は、そのゲストOS2を実行するコア11を1つの計算機(つまり仮想計算機)として動作させるための基本ソフト(いわゆるOS:Operating System)である。各コア11は、自分自身に割り当てられたゲストOS2を起動及び実行する。各コア11にはそれぞれ異なるゲストOS2が割り当てられる。図に示すゲストOS2aはコア11aに割り当てられるゲストOS2であり、ゲストOS2bはコア11bに割り当てられるゲストOS2である。ゲストOS2cはコア11bに割り当てられるゲストOS2である。
複数のコア11a〜cに割り当てるゲストOS2は予め設定されていればよい。各コア11は、自身に割り当てられたゲストOS2を実行することで、それぞれ独立した仮想計算機(VM:Virtual Machine)として動作する。便宜上、ゲストOS2が割り当てられるコア11のことをVMコア11とも記載する。VMコア11とするコア11は予め設定されていればよい。VMコア11が請求項に記載の仮想計算機コアに相当する。
VMコア11aに割り当てられるゲストOS2aは、例えばコンピュータを、走行支援ECUとして動作させるためのOS(以降、走行支援OS)である。走行支援ECUは、画像センサやミリ波レーダーセンサーなど、車両の周囲の状況を捉えてくれるセンサからの様々な情報をもとに、障害物との距離などを計算したり、車線からはみ出していないかどうかを判断したりするECUである。
VMコア11aは、走行支援OSを実行するとともに、走行支援ECUとしての機能を提供するための所定のアプリケーションソフトウェア(以降、走行支援アプリ)も実行する。つまり、VMコア11aは走行支援ECUとしての処理を実行する。なお、走行支援アプリは、ゲストOS2aとしての走行支援OSと対応づけられて図示しないフラッシュメモリ等に保存されている。走行支援アプリは走行支援OSとパッケージ化された状態で保存されていてもよい。走行支援アプリは走行支援OSの起動後にVMコア11aによって順次RAM等に読み出されて実行される。
また、ゲストOS2bは、例えばコンピュータを、ABS−ECUとして動作させるためのOS(以降、ABS−OS)である。ABS−ECUは、車両に搭載されているセンサの出力に基づいて、ABS(Antilock Brake System)を構成する種々のアクチュエータの動作を制御するECUである。VMコア11bは、ABS−OSを実行するとともに、ABS−ECUとしての機能を提供するための所定のアプリケーションソフトウェア(以降、ABSアプリ)も実行する。つまり、VMコア11bは、ABS−ECUとしての処理を実行する。なお、ABSアプリは、ゲストOS2bとしてのABS−OSと対応づけられて図示しないフラッシュメモリ等に保存されている。例えばABSアプリはABS−OSとパッケージ化された状態で保存されていてもよい。ABSアプリはABS−OSの起動後、VMコア11bによって順次RAMに読み出されて実行される。
ゲストOS2cは、例えばコンピュータをEPS−ECUとして動作させるためのOS(以降、EPS−OS)である。EPS−ECUは、EPS(Electric Power Steering)モータを制御するECUである。VMコア11cは、EPS−OSを実行するとともに、EPS−ECUとしての機能を提供するための所定のアプリケーションソフトウェア(EPSアプリ)も実行する。つまり、VMコア11cは、EPS−ECUとしての処理を実行する。なお、EPSアプリは、ゲストOS2cとしてのEPS−OSと対応づけられて図示しないフラッシュメモリ等に保存されている。例えばEPSアプリはEPS−OSとパッケージ化された状態で保存されていてもよい。EPSアプリはEPS−OSの起動後、VMコア11cによって順次RAMに読み出されて実行される。
上述した設定により、ECU1は図2に示すように、仮想的に走行支援ECU1a、ABS−ECU1b、及びEPS−ECU1cとして動作する。走行支援ECU1a、ABS−ECU1b、及びEPS−ECU1cのそれぞれは、別途後述する手順により、ハードウェア制御コア11xを介して種々のハードウェア13にアクセスする。各VMコア11が提供する走行支援ECU1a、ABS−ECU1b、及びEPS−ECU1cのそれぞれは、所定の機能を提供する仮想計算機である。
なお、複数のコア11のそれぞれに割り当てられるゲストOS2a〜2cの種類は適宜設計されれば良く、以上で例示したものに限定されない。本実施形態では一例としVMコア11a〜11cを、走る、曲がる、止まるといった、車両の走行制御に係る機能を提供するECUとして動作させるものとするが、これに限らない。例えばVMコア11aは、ナビゲーション装置やオーディオ機器などといった、マルチメディア系の機能を提供するECUとして動作させてもよい。また、VMコア11aは、シートやパワーウインドーなどのボディ系のECUとして動作させてもよい。
さらに、VMコア11aは、車両外部との通信を実施するための機能を提供するECUとして動作させてもよい。車両外部との通信を実施するための機能を提供するECUとは、例えば広域通信網に無線アクセスする処理を実施するECUや、車車間通信を実施するECUなどである。VMコア11b、11cについても同様に、これらが提供する仮想的に実現するECUの種類は適宜設計されればよい。各VMコア11a〜11cに割り当てるゲストOS2は、各VMコア11a〜11cに提供させるECUに応じて適宜選定/設計されればよい。ゲストOS2は、車両に搭載されている所定の電子機器を制御するためのOS、又は、車両外部との通信に係る機能を提供するOSとすればよい。
また、ECU1に電源が投入されてからゲストOS2a〜2cが起動されるまでの具体的な処理の内容は、適宜設計されればよい。起動処理には、BIOS(Basic Input Output System)の実行や、ブートローダに相当するプロセスの実行が含まれる。システムファームウェアとしては、BIOSの代わりにUEFI(Unified Extensible Firmware Interface)が採用されていても良い。ECU1が起動する際に実行されるプログラムは、開発者によって独自に作成された、隠匿されているソースコードで実装されていることが好ましい。
図3はECU1起動時に実行されるプログラム(つまりブートプログラム)Pm1のブロック図である。ブートプログラムPm1は、コア割当部Pm11と、共有メモリ設定部Pm12とを備える。コア割当部Pm11は、複数のコア11のうちの予め定められた1つのコア11をハードウェア制御コア11xに設定するとともに、残りのコア11をVMコア11a〜11cに設定するプログラムモジュールである。コア割当部Pm11は、ハードウェア制御コア11xにハードウェア制御ソフト3を実行させる。また、コア割当部Pm11は、VMコア11a〜11cのそれぞれに対して、予め対応付けられているゲストOS2を割り当て起動させる。共有メモリ設定部Pm12は、RAMが備える記憶領域の一部又は全部を共有メモリ部12に設定するプログラムモジュールである。
ブートプログラムPm1は、ハードウェア13dとしてのフラッシュメモリ(つまり不揮発性の記憶媒体)に保存されている。なお、ブートプログラムPm1の保存装置としては種々の非遷移的実体的記憶媒体(non-transitory tangible storage medium)を採用可能である。ブートプログラムPm1自体は、ハードウェアとプロセッサ10の協働によって実行されれば良い。ブートプログラムPm1が請求項に記載の仮想化プログラムに相当し、ブートプログラムPm1を記憶している記憶装置(ここではハードウェア13d)が請求項に記載の記憶媒体に相当する。
次に、ECU1の起動処理が完了した後のハードウェア制御コア11xとVMコア11aとの相互作用について図4を用いて説明する。なお、ここでは一例としてVMコア11a〜11cのうち、VMコア11aのソフトウェア的な構成及び機能について説明するが、その他のVMコア11b〜11cも同様である。
まずは、ハードウェア制御コア11xが備える機能について説明する。ハードウェア制御コア11xは、図4に示すように、コア間通信部F1及びデバイスドライバ部F2を備える。コア間通信部F1はより細かい機能ブロックとして読出部F11、及び、保存処理部F12を備える。コア間通信部F1は、ハードウェア制御コア11xが各VMコア11(たとえばVMコア11a)と通信するための構成である。
ハードウェア制御コア11xとVMコア11aとの通信は、共有メモリ部12を介して(換言すればメモリアクセス)によって実現される。VMコア11aは、任意のハードウェア13を使用したい場合、当該ハードウェア13向けのデータ(換言すればビット列)を共有メモリ部12に保存することにより、当該データをハードウェア制御コア11xに受け渡す。また、ハードウェア制御コア11xは、ハードウェア13から取得したデータを共有メモリ部12に保存することによってVMコア11aに受け渡す。なお、図4における白塗り矢印はデータの流れを示している。
図4に示すM1は、VMコア11aからハードウェア制御コア11x宛のデータが保存されるメモリ領域(以降、ダウンリンクメモリ)である。また、M2は、ハードウェア制御コア11xからVMコア11a宛のデータが保存されるメモリ領域(以降、アップリンクメモリ)である。ダウンリンクメモリM1とアップリンクメモリM2はハードウェア的に独立したメモリを用いて実現されていても良いし、ソフトウェア的に(換言すれば論理的に)実現されていても良い。ダウンリンクメモリM1とアップリンクメモリM2は、VMコア11毎(換言すれば、ゲストOS2毎、仮想計算機毎)に用意されれば良い。
ハードウェア制御コア11xはアップリンクメモリM2へのデータの書き込み、読み出し、削除等を実施可能に構成されている一方、ダウンリンクメモリM1にはデータを書き込めないように構成されている。つまり、ハードウェア制御コア11xは、ダウンリンクメモリM1へのデータ保存は禁止されている。ハードウェア制御コア11xはダウンリンクメモリM1に対しては、保存されているデータの読み出しのみが実行可能に構成されている。
また、VMコア11aはダウンリンクメモリM1へのデータの書き込み、読み出し、削除等を実施可能に構成されている一方、アップリンクメモリM2にはデータを書き込めないように構成されている。つまり、VMコア11aは、アップリンクメモリM2へのデータ保存が禁止されている。VMコア11aはアップリンクメモリM2に対しては保存されているデータの読み出しのみが実行可能に構成されている。
コア間通信部F1が備える読出部F11は、ダウンリンクメモリM1に保存されているデータを読み出すための構成である。読出部F11は、ダウンリンクメモリM1から読み出したデータをデバイスドライバ部F2に出力する。読出部F11が請求項に記載の制御側読出部に相当する。
保存処理部F12はアップリンクメモリM2にデータを保存するための構成である。保存処理部F12は、後述するデバイスドライバ部F2が受信したデータをそのまま(つまりローデータを)アップリンクメモリM2に保存し、VMコア11aに対して割込み信号を出力する。割込み信号は保存データの読出を要求する信号である。VMコア11aは、保存処理部F12から出力された割込み信号を受信したことに基づいてアップリンクメモリM2を参照し、保存されているデータを読み出す。なお、アップリンクメモリM2へのデータ保存に伴う割込み信号の出力は、アップリンクメモリM2へのデータの保存完了に対して遅延無く(つまり可及的速やかに)実施されるものとする。保存処理部F12が請求項に記載の制御側保存処理部に相当する。
デバイスドライバ部F2は、種々のハードウェア13に対応するデバイスドライバを実行する構成である。つまり、デバイスドライバ部F2は種々のハードウェア13と相互通信を実施し、正常に作動させる。デバイスドライバ部F2は、読出部F11から入力されたデータに基づいて、ハードウェア13を動作させる。読出部F11から入力されたデータとは、換言すればコア間通信部F1がダウンリンクメモリM1を介してVMコア11aから取得したデータである。
また、デバイスドライバ部F2は、ハードウェア13から入力された信号に対応するビット列(換言すればローデータ)をコア間通信部F1(より具体的には保存処理部F12)に出力する。デバイスドライバ部F2がコア間通信部F1に出力したビット列としてのデータは、アップリンクメモリM2を介してVMコア11aに出力される。
なお、デバイスドライバ部F2が出力するデータには、何れのハードウェア13から取得したデータであるのかを示す出力元情報が付与されていることが好ましい。当該データの受け手であるVMコア11aが、何れのハードウェア13から出力されたデータであるかを特定するためである。ただし、必ずしもデバイスドライバ部F2の出力データに上記の出力元情報が含まれている必要はない。例えば、アップリンクメモリM2の記憶領域をハードウェア13毎に細分化して運用する構成においては、VMコア11aは、アップリンクメモリM2内におけるデータの保存場所(換言すればアドレス)に基づいて、当該保存データが何れのハードウェア13から出力されたデータであるかを特定可能となるためである。
また本実施形態では、デバイスドライバ部F2を実現する、各種のハードウェア13に対応するデバイスドライバは、隠匿されたソースコードで実装されているものとする。これによれば、VMコア11aが提供する仮想計算機(ここでは走行支援ECU1a)が、外部からハッキングされる恐れを抑制することができる。仮想計算機としてのVMコア11と、デバイスドライバとしてのデバイスドライバ部F2が互いにローデータをやり取りする構成において、デバイスドライバ部F2が隠匿されたソースコードで形成されている場合、通常のハッキング手法で仮想計算機に侵入することは困難(実質的に不可能)となるからである。
次に、VMコア11aが提供する機能について説明する。VMコア11aは機能ブロックとして、コア間通信部G1及び処理実行部G2を備える。コア間通信部G1は、VMコア11aがハードウェア制御コア11xと双方向通信するための構成である。コア間通信部G1はより細かい機能ブロックとして読出部G11、及び、保存処理部G12を備える。読出部G11は、ハードウェア制御コア11xの保存処理部F12から出力された割込み信号を受信したことに基づいて、アップリンクメモリM2を参照し、保存されているデータを読み出す構成である。読出部G11は、アップリンクメモリM2から読み出したデータを処理実行部G2に出力する。読出部G11が請求項に記載の仮想計算機側読出部に相当する。
また、保存処理部G12は、処理実行部G2から入力されたデータをそのままダウンリンクメモリM1に保存し、ハードウェア制御コア11xに対して割込み信号を出力する。ハードウェア制御コア11x(より具体的には読出部F11)は、保存処理部F12から出力された割込み信号を受信したことに基づいてダウンリンクメモリM1を参照し、保存されているデータを読み出す。なお、ダウンリンクメモリM1へのデータ保存に伴う割込み信号の出力は、ダウンリンクメモリM1へのデータの保存完了に対して遅延無く(つまり可及的速やかに)実施されるものとする。保存処理部G12が請求項に記載の仮想計算機側保存処理部に相当する。
処理実行部G2は、ハードウェア13から入力されたデータに基づいて、所定の処理を実行する機能ブロックである。処理実行部G2は、細分化した機能ブロックとして、OS部G21及びアプリケーション部G22を備える。OS部G21は、VMコア11aに割り当てられているゲストOS2a(ここでは走行支援OS)を実行する構成である。OS部G21は、読出部G11から入力されたデータを用いて種々の演算処理を実行する。OS部G21は、読出部G11から入力されたデータに基づく演算処理の結果としてのデータを、コア間通信部G1(より具体的には保存処理部G12)に出力する。また、OS部G21は、読出部G11から入力されたデータを、必要に応じてアプリケーション部G22に提供する。
アプリケーション部G22は、ゲストOS2aと対応付けられているアプリケーションソフトウェア(ここでは走行支援アプリ)を実行する構成である。アプリケーション部G22はOS部G21から提供されたデータに基づいて所定の演算処理を実行する。アプリケーション部G22は、当該演算処理の結果に応じて、所定のハードウェア13向けのデータをOS部G21に出力する。
アプリケーション部G22からOS部G21に出力されたハードウェア13向けのデータは、OS部G21を介してコア間通信部G1に出力される。すなわち、OS部G21は、アプリケーション部G22からハードウェア13向けのデータが入力された場合には、当該入力データをコア間通信部G1に出力する。OS部G21やアプリケーション部G22といった処理実行部G2がコア間通信部F1に出力したデータは、ダウンリンクメモリM1を介してハードウェア制御コア11xに出力される。
ところで、本実施形態では一例として処理実行部G2は、OSを実行するOS部G21と、アプリケーションソフトウェアを実行するアプリケーション部G22の2階層構造とするがこれに限らない。処理実行部G2は、プロトコルスタックやファイルシステムなどのミドルウェアを実行するミドルウェア部を備えていても良い。処理実行部G2の具体的な構成は、仮想計算機のソフトウェア構成に由来するものである。
なお、仮想計算機を提供する各ゲストOS2は、デバイスドライバを備えている必要はない。デバイスドライバ部F2が、各仮想計算機が出力するデータに基づいてハードウェア13を作動させるためである。デバイスドライバ部F2は、各ゲストOS2の代わりにハードウェア13を制御する構成に相当する。また、上記理由により、仮にゲストOS2がデバイスドライバを備えていても当該デバイスドライバは動作しない。
処理実行部G2が出力するデータには、何れのハードウェア13向けのデータであるのかを示す宛先情報が付与されていることが好ましい。ハードウェア制御コア11xが、受信したデータに基づいて何れのハードウェア13を動作させるかを特定するためである。ただし、必ずしも処理実行部G2の出力データに上記の宛先情報が含まれている必要はない。例えば、ダウンリンクメモリM1の記憶領域をさらにハードウェア13毎に細分化して運用する場合には、ハードウェア制御コア11xは、ダウンリンクメモリM1内におけるデータの保存場所(換言すればアドレス)に基づいて、当該保存データが何れのハードウェア13向けのデータであるかを特定可能となるためである。
<実施形態のまとめ>
上記の構成によれば、ECU1は電源投入に伴う起動処理により、ECU1が備える4つのコア11のうちの1つを、ハードウェア制御コア11xとして動作させる。また、残りの3つコア11は、それぞれ異なるゲストOS2を実行し、それぞれが独立した仮想計算機として機能する。つまり、ECU1は全体として仮想的に複数の計算機として動作する。
上述した実施形態において、各VMコア11a〜11cとハードウェア制御コア11xとはメモリアクセスによって相互に通信するように構成されている。このような態様においてデバイスドライバ部F2は、メモリアクセスによって各VMコア11a〜11cから取得したローデータに基づいてハードウェア13を動作させる。また、各VMコア11a〜11cは、共有メモリ部12に対して任意のタイミングでデータを保存することができる。
つまり、各VMコア11a〜11cは、任意のタイミングで所望のハードウェアを動作させることが可能となる。また、ハードウェア13から出力される仮想計算機向けのデータは、デバイスドライバ部F2及びコア間通信部F1によって共有メモリ部12を介して、出力すべきVMコア11に提供される。共有メモリ部12に保存されたデータの読出は、割込み信号の入出力によって遅延なく行われる。
加えて、ゲストOS2a〜2cはそれぞれ1つのコア11を専有して動作する。つまり、1つのコア11が複数のゲストOS2によって共用されることはない。各ゲストOS2は自分自身に割り当てられているコアの計算リソースを、他のゲストOS2の動作状況に関わらずに自由に使用することができる。
つまり、上記の構成によれば各ゲストOS2は、自分専用のコア11が備える計算リソースを用いて動作するとともに、任意のタイミングで所望のハードウェアを利用することができる。よって、ゲストOS2とハードウェアとの通信が遅延する恐れを低減できる。
また、上記の構成によればハードウェア制御コア11xが、各VMコア11a〜11cにとってのデバイスドライバとしての機能を提供する。故に各ゲストOS2はデバイスドライバを備えている必要はない。一般的にデバイスドライバは、プロトコルやCPUレジスタなどを備える大規模なプログラムモジュールとなる。本実施形態によれば、各ゲストOS2がデバイスドライバを備える必要がないため、ECU1に保存されるソフトウェア全体としての規模を抑制することができる。加えて、デバイスドライバ部F2を実現するデバイスドライバは隠匿されたソースコードで実現されている。故に、ECU1上で動作する仮想計算機に対する不正なアクセスに対するセキュリティを高めることができる。
さらに、以上の構成によれば、ハードウェア13は仮想計算機と対応付けずに運用される。換言すれば、各ハードウェア13を各仮想計算機で共有することができる。また、これに伴い、従来の仮想化システムで必要であったハードウェアと仮想計算機との対応付けの処理を省略することができる。
ところで、ハイパーバイザーを用いた従来の仮想化システムにおいて、複数の仮想計算機が1つのハードウェア13を共有するための構成として、仮想計算機とハイパーバイザーとを所定の通信規格に準拠した仮想的な通信パイプで相互通信可能に接続する構成(以降、想定構成)も考えられる。想定構成におけるハイパーバイザーは仮想計算機から受け取ったデータに基づいてハードウェアを制御するとともに、ハードウェアから受け取ったデータを仮想計算機に提供する処理を実施する。
しかしながら、想定構成では、仮想計算機がハードウェアと通信する際には、仮想計算機とハードウェアとの間でやり取りされるデータ/信号を、いったん仮想計算機−ハイパーバイザー間の通信規格に応じた形式に変換する処理(以降、ブリッジ処理)を実行する必要がある。
例えば仮想計算機が或るハードウェア向けのデータを出力する際には、当該データをいったんゲストOSとハイパーバイザー間の通信規格に応じた形式に変換にしてハイパーバイザーに出力する。また、ハイパーバイザーは、或るハードウェアから取得したデータを仮想計算機に出力する際には、当該データをいったんゲストOSとハイパーバイザー間の通信規格に応じた形式に変換して出力する。このようなブリッジ処理には所定の時間を要するため、当該ブリッジ処理が仮想計算機とハードウェアとの通信の遅延の原因となりうる。
対して、本実施形態の構成によれば、上記の想定構成で必要となるブリッジ処理を実施する必要がない。ブリッジ処理自体が実施されないため、本実施形態によればブリッジ処理に由来してゲストOS2とハードウェア13との通信遅延が遅延する恐れはない。このように本実施形態によれば、複数の仮想計算機が1つのハードウェアを共有可能であって、且つ、仮想計算機とハードウェアとの通信の遅延を抑制可能な仮想化システムを提供することができる。
ところで、上記のブリッジ処理による通信遅延は、プロセッサ10の性能を高めることによって低減することができる。しかしながら、本実施形態のように車両に搭載されるECU1では、耐環境性やコストの観点から、オフィスや家庭で使用されるコンピュータほど高性能なプロセッサを使用することは難しい。特に、車両の走行制御にかかるECU1は、エンジン等の熱源の近くなど(つまり高温環境下)で使用される。高温環境下において利用可能なプロセッサで想定構成を実現しようとすると、ブリッジ処理に由来する通信遅延が顕著となり、所望の通信性能が得られなくなる恐れがある。
対して本実施形態の構成では前述のようにブリッジ処理が存在しないため、高温環境下において利用可能なプロセッサを用いて仮想化システムを構築しても、ハードウェア−仮想計算機間の通信遅延が問題となりくい。つまり、本実施形態は、車両への組み込まれる物理計算機を用いて仮想化システムを構築する場合により一層有用な構成といえる。特に、車両の走行制御にかかるECUを仮想化する際に好適である。
以上、本開示の実施形態を説明したが、本開示は上述の実施形態に限定されるものではなく、以降で述べる種々の変形例も本開示の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施することができる。
なお、前述の実施形態で述べた部材と同一の機能を有する部材については、同一の符号を付し、その説明を省略する。また、構成の一部のみに言及している場合、他の部分については先に説明した実施形態の構成を適用することができる。
[変形例1]
上述した実施形態では、ハードウェア制御コア11xがVMコア11a向けのデータを保存するメモリと、VMコア11aがハードウェア制御コア11x向けのデータを保存するメモリとを、ソフトウェア的又はハードウェア的に別々に用意する態様を開示した。他の態様として、それらは分けられていなくとも良い。つまり、ハードウェア制御コア11xがVMコア11a向けのデータを保存するメモリと、VMコア11aがハードウェア制御コア11x向けのデータを保存するメモリは同一のメモリであってもよい。
[変形例2]
上述した実施形態では、1つのゲストOS2に対して1つのVMコア11を割り当てる態様を開示した。つまり、ゲストOS2とVMコア11とを1対1で対応付ける構成を開示した。しかしながら、ゲストOS2に対するVMコア11の割り当て態様はこれに限らない。図5に示すように1つのゲストOS2に対して複数のVMコア11を割り当てても良い。図5の例ではゲストOS2としての第1OS2dには2つのVMコア11a、11bを割り当てるとともに、ゲストOS2としての第2OS2eには1つのVMコア11cを割り当てた態様を示している。
[変形例3]
以上では、車両に搭載されて使用されるECU1に対して本発明に係る仮想化システムを適用した態様を開示したがこれに限らない。オフィスや自宅等で使用されるコンピュータにも適用可能である。
つまり、本実施形態では、ゲストOS2は用途に応じた限定的な機能を提供するための組み込みOS(換言すれば専用OS)とする態様を開示したが、ゲストOS2は汎用コンピュータで使用されるOS(いわゆる汎用OS)であってもよい。組み込みOSは、換言すれば1つ又は複数の特定のアプリケーションソフトウェアの実行をサポートするOSである。汎用OSは、ユーザによってインストールされうる多種多様なアプリケーションソフトウェアをサポートするOSに相当する。
1 ECU(物理計算機)、2・2a〜2e ゲストOS、3 ハードウェア制御ソフト、11 コア、11a〜11c VMコア、11x ハードウェア制御コア、12 共有メモリ部、13・13a〜13d ハードウェア、13d ハードウェア(記憶媒体)、F1 コア間通信部、F2 デバイスドライバ部、F11 読出部(制御側読出部)、F12 保存処理部(制御側保存処理部)、G1 コア間通信部、G11 読出部(仮想計算機側読出部)、G12 保存処理部(仮想計算機側保存処理部)、G2 処理実行部


Claims (8)

  1. 複数のコアを備える1つの物理計算機上で複数の仮想計算機が動作する仮想化システムであって、
    複数のハードウェア(13a、13b、13c、13d)と、
    複数の前記ハードウェアのそれぞれの動作を制御するための前記コアであるハードウェア制御コア(11x)と、
    前記仮想計算機のOSであるゲストOSが動作するための前記コアである複数の仮想計算機コア(11a、11b、11c)と、
    前記ハードウェア制御コア及び複数の前記仮想計算機コアのそれぞれが同時並行的にアクセス可能なメモリである共有メモリ(12)と、を備え、
    1つの前記仮想計算機は、1つ又は複数の前記仮想計算機コアを専有して動作するように設定されており、
    前記ハードウェア制御コアは、複数の前記ハードウェアのそれぞれに対応するデバイスドライバを実行することによって、複数の前記ハードウェアのそれぞれの動作を制御するデバイスドライバ部(F2)を備え、
    前記ゲストOSは、デバイスドライバを備えておらず、前記デバイスドライバ部を用いてハードウェアを使用するものであり、
    前記ハードウェア制御コアと前記仮想計算機コアとの通信は、前記共有メモリへのデータ保存及び当該保存されたデータの読出によって実現され、
    前記デバイスドライバ部は、前記仮想計算機が前記共有メモリに保存したデータに基づいて前記ハードウェアの動作を制御するとともに、前記ハードウェアから入力されたデータを前記共有メモリに保存することによって前記仮想計算機コアに提供する仮想化システム。
  2. 請求項1に記載の仮想化システムであって、
    前記共有メモリとして、
    前記ハードウェア制御コアから前記仮想計算機コアに向けたデータが保存されるアップリンクメモリ(M2)と、
    前記仮想計算機コアから前記ハードウェア制御コアに向けたデータが保存されるダウンリンクメモリ(M1)と、を前記仮想計算機コア毎に備え、
    前記ハードウェア制御コアは、前記アップリンクメモリへのデータ保存は実行可能に設定されている一方、前記ダウンリンクメモリへのデータ保存は禁止されており、
    前記仮想計算機コアは、前記ダウンリンクメモリへのデータ保存は実行可能に設定されている一方、前記アップリンクメモリへのデータ保存は禁止されている仮想化システム。
  3. 複数のコアを備える1つの物理計算機上で複数の仮想計算機が動作する仮想化システムであって、
    複数のハードウェア(13a、13b、13c、13d)と、
    複数の前記ハードウェアのそれぞれの動作を制御するための前記コアであるハードウェア制御コア(11x)と、
    前記仮想計算機のOSであるゲストOSが動作するための前記コアである複数の仮想計算機コア(11a、11b、11c)と、
    前記ハードウェア制御コア及び複数の前記仮想計算機コアのそれぞれが同時並行的にアクセス可能なメモリである共有メモリ(12)と、を備え、
    1つの前記仮想計算機は、1つ又は複数の前記仮想計算機コアを専有して動作するように設定されており、
    前記ハードウェア制御コアは、複数の前記ハードウェアのそれぞれに対応するデバイスドライバを実行することによって、複数の前記ハードウェアのそれぞれの動作を制御するデバイスドライバ部(F2)を備え、
    前記ハードウェア制御コアと前記仮想計算機コアとの通信は、前記共有メモリへのデータ保存及び当該保存されたデータの読出によって実現され、
    前記デバイスドライバ部は、前記仮想計算機が前記共有メモリに保存したデータに基づいて前記ハードウェアの動作を制御するとともに、前記ハードウェアから入力されたデータを前記共有メモリに保存することによって前記仮想計算機コアに提供し、
    前記共有メモリとして、
    前記ハードウェア制御コアから前記仮想計算機コアに向けたデータが保存されるアップリンクメモリ(M2)と、
    前記仮想計算機コアから前記ハードウェア制御コアに向けたデータが保存されるダウンリンクメモリ(M1)と、を前記仮想計算機コア毎に備え、
    前記ハードウェア制御コアは、前記アップリンクメモリへのデータ保存は実行可能に設定されている一方、前記ダウンリンクメモリへのデータ保存は禁止されており、
    前記仮想計算機コアは、前記ダウンリンクメモリへのデータ保存は実行可能に設定されている一方、前記アップリンクメモリへのデータ保存は禁止されている仮想化システム。
  4. 請求項1から3の何れか1項に記載の仮想化システムであって、
    前記ハードウェア制御コアは、
    前記デバイスドライバ部が前記ハードウェアから取得したデータを前記共有メモリに保存するとともに、前記共有メモリにデータを保存した場合には、前記共有メモリに保存されているデータを読み出すように要求する第1の割込み信号を前記仮想計算機コアに出力する制御側保存処理部(F12)と、
    前記仮想計算機コアから第2の割込み信号が入力されたことに基づいて、前記共有メモリに保存されているデータを読み出す制御側読出部(F11)と、を備え、
    前記仮想計算機コアは、
    前記制御側保存処理部から出力される前記第1の割込み信号を受信したことに基づいて、前記共有メモリに保存されているデータを読み出す仮想計算機側読出部(G11)と、
    前記仮想計算機側読出部が読み出したデータを用いて所定の演算処理を実行するとともに、前記演算処理の結果として前記ハードウェアに向けたデータを出力する処理実行部(G2)と、
    前記処理実行部から出力されたデータを前記共有メモリに保存するとともに、前記共有メモリにデータを保存した場合には前記第2の割込み信号を前記ハードウェア制御コアに出力する仮想計算機側保存処理部(G12)と、を備える仮想化システム。
  5. 請求項1からの何れか1項に記載の仮想化システムであって、
    前記物理計算機は車両に搭載されて使用される計算機であって、
    前記ゲストOSは、前記車両に搭載されている所定の電子機器を制御するためのOS、又は、車両外部との通信に係る機能を提供するOSである仮想化システム。
  6. 請求項に記載の仮想化システムであって、
    前記デバイスドライバは、隠匿されたソースコードで実装されている仮想化システム。
  7. 複数のコアと、複数のハードウェアを備える物理層と、ランダムアクセスメモリを備える物理計算機を、請求項1からの何れか1項に記載の前記仮想化システムとして動作させるプログラムであって、
    複数の前記コアのうちの1つを前記ハードウェア制御コアに設定するとともに、残りの前記コアを前記仮想計算機コアに設定するコア割当部(Pm11)と、
    前記ランダムアクセスメモリが備える記憶領域の一部又は全部を前記共有メモリに設定する共有メモリ設定部(Pm12)と、を備える仮想化プログラム。
  8. 複数のコアと、ランダムアクセスメモリと、複数のハードウェアを備える物理層と、を備える物理計算機を、請求項1からの何れか1項に記載の前記仮想化システムとして動作させるプログラムであって、複数の前記コアのうちの1つを前記ハードウェア制御コアに設定するとともに、残りの前記コアを前記仮想計算機コアに設定するコア割当部(Pm11)と、前記ランダムアクセスメモリが備える記憶領域の一部又は全部を前記共有メモリに設定する共有メモリ設定部(Pm12)と、を備えるプログラムを記憶している記憶媒体。
JP2017181565A 2017-09-21 2017-09-21 仮想化システム、仮想化プログラム、及び、記憶媒体 Active JP6777050B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017181565A JP6777050B2 (ja) 2017-09-21 2017-09-21 仮想化システム、仮想化プログラム、及び、記憶媒体
PCT/JP2018/031416 WO2019058874A1 (ja) 2017-09-21 2018-08-24 仮想化システム、仮想化プログラム、及び、記憶媒体
US16/816,813 US11494221B2 (en) 2017-09-21 2020-03-12 Hardware control core controlling operation of hardware devices by executing device drivers within the hardware control core used by virtual machine cores via shared memory having an uplink and downlink memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017181565A JP6777050B2 (ja) 2017-09-21 2017-09-21 仮想化システム、仮想化プログラム、及び、記憶媒体

Publications (3)

Publication Number Publication Date
JP2019057162A JP2019057162A (ja) 2019-04-11
JP2019057162A5 JP2019057162A5 (ja) 2019-08-15
JP6777050B2 true JP6777050B2 (ja) 2020-10-28

Family

ID=65811246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017181565A Active JP6777050B2 (ja) 2017-09-21 2017-09-21 仮想化システム、仮想化プログラム、及び、記憶媒体

Country Status (3)

Country Link
US (1) US11494221B2 (ja)
JP (1) JP6777050B2 (ja)
WO (1) WO2019058874A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109855646B (zh) * 2019-04-30 2020-02-28 奥特酷智能科技(南京)有限公司 分布集中式自动驾驶系统和方法
US11455180B2 (en) 2019-10-11 2022-09-27 Google Llc Extensible computing architecture for vehicles
JP2021124902A (ja) 2020-02-04 2021-08-30 トヨタ自動車株式会社 車両制御装置、車両制御方法、及び車両制御プログラム
CN114448963B (zh) * 2020-10-30 2024-03-01 中车株洲电力机车研究所有限公司 一种融合控制架构下外设共享通信的方法及系统

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200433A (ja) * 1994-01-07 1995-08-04 Fuji Facom Corp ゲートウエイ
JP2004178115A (ja) * 2002-11-26 2004-06-24 Kyocera Mita Corp データ転送装置
US7512826B2 (en) 2005-04-20 2009-03-31 International Business Machines Corporation Method, apparatus, and product for an efficient virtualized time base in a scaleable multi-processor computer
JP5277434B2 (ja) * 2007-12-17 2013-08-28 エヌエイチエヌ コーポレーション コンテンツ提供方法及びコンテンツ提供システム
JP5125659B2 (ja) 2008-03-24 2013-01-23 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
JP4854710B2 (ja) * 2008-06-23 2012-01-18 株式会社東芝 仮想計算機システム及びネットワークデバイス共有方法
US8392917B2 (en) * 2009-03-30 2013-03-05 Microsoft Corporation Timer access from user mode through a shared memory page
JP5434616B2 (ja) * 2010-01-15 2014-03-05 富士通株式会社 仮想計算機、仮想計算機モニタ、および計算機の制御方法
JP2012018515A (ja) * 2010-07-07 2012-01-26 Fujitsu Ltd 情報処理装置,制御方法,制御プログラム
JP5698280B2 (ja) 2013-02-01 2015-04-08 日本電信電話株式会社 仮想化装置、通信方法、およびプログラム
US9158569B2 (en) * 2013-02-11 2015-10-13 Nvidia Corporation Virtual interrupt delivery from a graphics processing unit (GPU) of a computing system without hardware support therefor
US9762497B2 (en) * 2013-11-26 2017-09-12 Avago Technologies General Ip (Singapore) Pte. Ltd. System, method and apparatus for network congestion management and network resource isolation
JP2015103129A (ja) * 2013-11-27 2015-06-04 日産自動車株式会社 車載情報装置
JP2015170887A (ja) * 2014-03-05 2015-09-28 富士通株式会社 パケット処理方法及びシステム
WO2017005330A1 (en) * 2015-07-09 2017-01-12 Hitachi Data Systems Engineering UK Limited Storage control system managing file-level and block-level storage services, and methods for controlling such storage control system
CN105159753B (zh) * 2015-09-25 2018-09-28 华为技术有限公司 加速器虚拟化的方法、装置及集中资源管理器
US20170103192A1 (en) * 2015-10-12 2017-04-13 Renesas Electronics America Inc. Secure code delivery
US10452572B2 (en) * 2016-10-06 2019-10-22 Vmware, Inc. Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive
US10589628B2 (en) * 2017-02-09 2020-03-17 Medallion Instrumentation Systems, Llc System and method for hosting applications in a graphical instrument
US10853113B2 (en) * 2017-06-07 2020-12-01 Dell Products L.P. Hierarchically nested virtualized functions having a physical function providing processing requests and responses to each level of the hierarchy
CN107479943B (zh) * 2017-07-03 2020-02-21 北京东土科技股份有限公司 基于工业互联网操作系统的多操作系统运行方法及装置
US11888710B2 (en) * 2018-09-25 2024-01-30 Intel Corporation Technologies for managing cache quality of service
US11003484B2 (en) * 2019-06-28 2021-05-11 Intel Corporation Inter-processor interrupt virtualization with pass-through of local interrupt controller

Also Published As

Publication number Publication date
WO2019058874A1 (ja) 2019-03-28
JP2019057162A (ja) 2019-04-11
US20200210222A1 (en) 2020-07-02
US11494221B2 (en) 2022-11-08

Similar Documents

Publication Publication Date Title
US11494221B2 (en) Hardware control core controlling operation of hardware devices by executing device drivers within the hardware control core used by virtual machine cores via shared memory having an uplink and downlink memory
US9135044B2 (en) Virtual function boot in multi-root I/O virtualization environments to enable multiple servers to share virtual functions of a storage adapter through a MR-IOV switch
US8595723B2 (en) Method and apparatus for configuring a hypervisor during a downtime state
US8387043B2 (en) USB port shared control method in a plurality of virtual machines
JP5608243B2 (ja) 仮想化環境においてi/o処理を行う方法および装置
US10133504B2 (en) Dynamic partitioning of processing hardware
JP5690403B2 (ja) 電力が最適化された割込み配信
US8856781B2 (en) Method and apparatus for supporting assignment of devices of virtual machines
TWI512479B (zh) 針對記憶體映射組態分派處理器之技術
US20050235083A1 (en) Computer system
JP5308522B2 (ja) ハイパーバイザ・ローディングのためのメモリ管理
US10140214B2 (en) Hypervisor translation bypass by host IOMMU with virtual machine migration support
WO2016160147A1 (en) Additional secured execution environment with sr-iov and xhci-iov
KR102568906B1 (ko) PCIe 디바이스 및 그 동작 방법
US20080229325A1 (en) Method and apparatus to use unmapped cache for interprocess communication
KR20220141677A (ko) PCIe 디바이스 및 그 동작 방법
JP2016018555A (ja) 動作環境の切換方法、コンピュータ、およびコンピュータ・プログラム
US10922149B2 (en) System comprising a plurality of virtualization systems
US11829772B2 (en) Heterogeneous compute domains with an embedded operating system in an information handling system
US10860397B1 (en) Communication of data between software applications
CN115309678A (zh) 处理系统、相关集成电路、设备及方法
KR20230142095A (ko) 인터페이스 디바이스 및 그 동작 방법
CN115576439A (zh) 一种cpu控制器的扩展方法及装置
KR20190138031A (ko) 반도체 장치
KR20160036795A (ko) 컴퓨터 운용체제에서 물리적 디바이스 드라이버를 없애는 디바이스 액세스 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190708

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190708

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200317

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200318

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200803

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200908

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200921

R151 Written notification of patent or utility model registration

Ref document number: 6777050

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250