本記事では、AUBIST Hypervisor for MCUについて前編・後編に分けて紹介します。
前編では、ECU統合が進む中でなぜ仮想化技術が求められるのか、その背景とあわせてAUBIST Hypervisor for MCUの概要と特長を解説しました。
AUBIST Hypervisor for MCUは、単なる仮想化レイヤにとどまらず、リアルタイム性・安全性・柔軟性を実現するための多機能なハイパーバイザです。
後編となる本記事では、AUBIST Hypervisor for MCUが提供する8つの主要機能について、実装観点からより深く掘り下げて紹介します。
- AUBIST Hypervisor for MCUが提供する8つの主要機能
- 1.VMスケジューリング機能
- 2.VM間メモリ保護機能
- 3.VM管理機能
- 4.VM間通信機能
- 5.VM監視機能
- 6.ユーザコールアウト追加機能
- 7.VMエラー管理機能
- 8.HVC管理機能
- まとめ
AUBIST Hypervisor for MCUが提供する8つの主要機能
| 機能 | 説明 | |
|
1 |
VM※1スケジューリング機能 | VMに実行時間を割り当て、スケジューリングテーブルに登録された順番でVMを切り替えます |
| 2 | VM間メモリ保護機能 | MPUとペリフェラルガードを使用して、メモリやI/OデバイスをVM間で安全に分離します |
| 3 | VM管理機能 | VMの開始・終了・リセットなどVMの管理を行います |
| 4 | VM間通信機能 | VM間で通信をする仕組みとして、VCC※2 (Virtual Communication Channel)を提供します |
| 5 | VM監視機能 | 仮想ウォッチドッグタイマにより、VMの動作状況を監視します |
| 6 | UC※3 (User Callout)追加機能 | ユーザが作成したユーザコールアウトの追加および実行を可能にする機能を提供します |
| 7 | VMエラー管理機能 | VM内で発生した各種エラーや例外をハンドリングするための機能を提供します |
| 8 | HVC※4(Hypervisor Call)管理機能 | 各VMに対してハイパーバイザコールのアクセス権限の許可または拒否する設定を行います |
※1 VM (Virtual Machine)
仮想マシンは物理的なコンピュータ上で動作する仮想的なコンピュータ環境です。
OSやアプリケーションを、物理マシンとは独立して実行できる仕組みです。
※2 VCC (Virtual Communication Channel)
仮想通信チャネルは、仮想マシン間や仮想マシンとホストOS間で通信を行うための論理的なチャネルです。
※3 UC (User Callout)
ユーザコールアウトは、システムやミドルウェアが特定のイベントや処理のタイミングで、ユーザー定義の関数やスクリプトを呼び出す仕組みです。
※4 HVC (Hypervisor Call)
ハイパーバイザコールは、仮想マシンがハイパーバイザ(仮想化を管理するソフトウェア)に対して特定の操作を要求するための呼び出しです。
それぞれの主要機能について詳しく解説していきます。
1.VMスケジューリング機能
コア毎に時分割スケジューリングを提供し、VMはあらかじめ定義された時間区間のみ実行されます。
スケジューリングテーブルに従ってVMが順番に切り替えられるため、各VMに公平かつ予測可能な実行時間を割り当てることができます。

2.VM間メモリ保護機能
- VM間で互いの領域へ誤ってアクセスしないよう、各VMで使用するアドレス範囲を明確に定義し、重複しないよう配置することが重要です。

3.VM管理機能
■VMの起動
各VMは、コンフィグで起動要因(仮想/物理のウェイクアップファクタ)を設定できます。
ハイパーバイザはその起動要因に従って各VMを起動します。
また、管理VMは一般VMに対して動作開始抑制の有効/無効を設定できます。
動作開始抑制が有効な場合は、起動要因がセットされても、その一般VMは起動しません。
■VMの終了
一般VM:ハイパーバイザコールを利用して、VM自身で終了処理を実行できます。終了後は仮想スリープ状態となります。
管理VM:全ての一般VMが終了状態であることを確認した後、DeepStopモードへ遷移できます。
DeepStopモード解除の割込みが発生すると、管理VMのリセットベクタから起動してハイパーバイザ含むシステム全体が再起動します。
【VMの起動と終了の例】
VM0(終了状態→起動状態):
最初のMajor Time Frameでは終了状態 次のMajor Time Frameの先頭で起動要因を検知して起動状態へ遷移
VM1(起動状態→終了状態):
最初のMajor Time Frameでは起動状態で自己終了を実行 次のMajor Time Frameの先頭で起動要因がないため終了状態のまま

4.VM間通信機能
VM間でデータ通信を行うための仕組みとしてVirtual Communication Channel (VCC)を提供します。
- 1対多の通信をサポートしており、1つの送信側VMに対して複数の受信側VMを割り当てることができます。
- VCCを使用して送受信できるVMはコンフィギュレーションで設定されたものに限られます。
- 受信方法は、割り込みによる受信完了通知とポーリングによる受信確認のどちらにも対応しています。

5.VM監視機能
仮想ウォッチドッグタイマ(VWDT)は、各VMに割り当てられる仮想的なウォッチドッグタイマです。
- ハイパーバイザはHV周期ごとにカウンタをインクリメントし、カウンタ値がタイムアウト値の75%に達すると75%割込みを発行します。
VMは、この割込みを受け取り、カウンタが最大値になる前に仮想ウォッチドッグタイマのクリア処理を実行する必要があります。 - カウンタ値が最大値を超えるとVMエラー管理機能へ通知されます。VMエラー管理機能は、対象VMに対してリセット要求割込みを発行し、Hypervisor for MCUがそのVMを強制的にリセットします。
[例]
VM0 : VWDT1つ
VM1 : VWDT2つ
VM2 : VWDT未使用


6.ユーザコールアウト追加機能
ユーザが作成したユーザコールアウト(UC)の追加および実行する機能を提供します。
- 多層防御の要件により、VM側でPortレジスタへ直接アクセスできないという課題に対応するための仕組みです。
- UCは、ハイパーバイザの権限で実行されるため、VMのアクセス権限に影響されずレジスタやメモリにアクセスできます。
- 各UCは特定の1つのVMからのみ呼び出し可能となるよう制限されています。

7.VMエラー管理機能
VM内で発生した各種エラーや例外をハンドリングするための機能を提供します。
- 各VMでエラーや例外が発生すると、その情報は管理VMへエラーメッセージとして通知されます。
管理VMは受信したエラー内容に基づき、必要な対処を実行します。
| エラーメッセージ形式 |
| エラー発生時刻hi(64ビットタイマカウンタの上位32ビット値(4バイト) |
| エラー発生時刻o(64ビットタイマカウンタの下位32ビット値(4バイト) |
| エラー番号(4バイト) |
| エラー番号に付随するエラー情報1つ目(4バイト) |
| エラー番号に付随するエラー情報2つ目(4バイト) |
| ユーザメッセージ(サイズはコンフィグレーションで設定) |
8.HVC管理機能
他VMへ影響を及ぼす可能性のあるハイパーバイザ機能について、不要な呼び出しを制限できます。
- 各VMに設定されたアクセス権限は、コンフィグレーション上で「HVCアクセス権限」として管理されます。
- コンフィグレーションで許可された権限であっても、運用中に一時的に拒否(HVCアクセス拒否リスト)へ設定することが可能です。
コンフィグレーションでHVCアクセス権限を「固定」に設定した場合は、拒否リストの影響を受けず、常に許可された状態を維持します。

まとめ
AUBIST Hypervisor for MCUは、単なる仮想化レイヤにとどまらず、リアルタイム制御・機能安全・セキュリティを支える多層的な機能を備えています。
これらの機能を適切に設計・設定することで、車載システムにおける高信頼な仮想化基盤を構築できます。
本記事では、eSOLが提供するAUBIST Hypervisor for MCUの特長と主要機能をご紹介しました。
eSOLは、世界トップクラスの車載技術や、長年にわたりお客様と共に積み重ねてきた豊富な車載開発のノウハウに基づき、ECU開発スタイルに合わせたスケーラブルな製品群を提供しています。
お客様のご要望に合わせて柔軟なご提案も可能です。
車載ECU開発をご検討されている方は、ぜひお気軽にご相談ください。
執筆:ビジネスマネジメント本部 技術営業部 橋本 賢一

