組込み向けハイパーバイザーSafeGの詳細解説
「TOPPERS-Pro SafeG」、「TOPPERS-Pro SafeG64」および「TOPPERS-Pro SafeG-M」は、NPO法人TOPPERSプロジェクトが開発したオープンソースソフトウェア「SafeG」、「SafeG64」および「SafeG-M」をベースとした、商用の組込み向けハイパーバイザーです。
ここでは、SafeGシリーズの機能を詳しく解説します。
より詳しい技術や関連製品について知りたい方へ
本コラムに関係する技術や関連する製品について知りたい方は、お気軽にご相談ください。
目次
1. SafeGの仕組み
1-1. SafeGの概要
1-2. マルチコア環境でのSMP構成
1-3. マルチコア環境でのAMP構成
2. SafeGにおけるメモリ保護
3. SafeGにおける割込み管理
4. 高速なOS切り替えとデバイスアクセス
5. まとめ
1. SafeGの仕組み
1-1. SafeGの概要
SafeGはシングルコアで汎用OSとRTOSを時分割で動作させるための(広義の)ハイパーバイザーです。SafeGはArm TrustZone機能を応用し、OSのカーネルが動作する特権モードより強い、モニターモードで動作します。
SafeGはTrustZoneのノーマルワールドで汎用OSを動作させ、セキュアワールドでRTOSを動作させます。SafeGは必要に応じてOSを切り替えます。
SafeGの概要
1-2. マルチコア環境でのSMP構成
SafeGはマルチコア動作もサポートしています。マルチコアプロセッサでSafeGを動かす場合、各コアでSafeGが動作し必要に応じてコアごとにOSを切り替えます。 マルチコア環境では、すべてのコアに汎用OSとRTOSを割り当て、コアをシェアして実行するSMP的な構成をサポートします。
マルチコアサポート:SMP構成
1-3. マルチコア環境でのAMP構成
SafeGでは、汎用OSとRTOSのそれぞれを特定のコアで動作するように実行コアを制約するAMP的な構成もサポートします。
マルチコアサポート:AMP構成
SMP的な構成では、RTOSが動作しない時にSafeGが汎用OSへ切り替え、汎用OSが動作します。AMP的な構成ではRTOSが動作するコアでは汎用OSが動作することはありません。AMP的構成ではOSの切り替えが発生しないため、RTOSから汎用OSへのOSコンテキストスイッチ時間を軽減でき、よりリアルタイム性に優れます。
2. SafeGにおけるメモリ保護
SafeGを使用する場合、RTOSと汎用OSの実行メモリ領域と使用するデバイスを分離する必要があります。SafeGはデバイスの仮想化を行わないため、RTOSと汎用OS間でデバイスを単純に共有することはできません。
メモリやデバイスをセキュアワールドとノーマルワールドに分離する場合、TrustZone®対応のArm®バスではどちらのワールドからのアクセスか判断できます。TrustZone対応のメモリコントローラを実装している場合、セキュアワールドのメモリやデバイスはノーマルワールドから保護されます。またノーマルワールドのバスマスター(DMAやGPU)からも保護されます。
MMU、キャッシュ、TCMはTrustZoneに対応しており、汎用OSからの不正なアクセスから保護されます。
TrustZoneのメモリ保護
OS間のメモリ保護を実現するには、ArmコアがTrustZoneをサポートしていることに加え、バス、メモリコントローラ、割込みコントローラがTrustZoneをサポートしている必要があります。CPU(SoC)のTrustZoneサポート状況によって保護機能がどこまで機能するかは制限される場合があります
3. SafeGにおける割込み管理
SafeGの割込み管理を説明します。
SafeGの割込み管理
Armコアへの割込みもSafeGでRTOS、汎用OSで分離します。
Armコアへの割込みはIRQとFIQ、2種類が存在し、通常(SafeGを使わない場合)はRTOS、汎用OSともにIRQを使用します。
SafeGではRTOS割込みにはFIQを割り当て、汎用OS割込みにはIRQを割り当てます。
汎用OSはTrustZoneの設定によりRTOS割込み(FIQ)がマスク不可にされるため、汎用OS実行中はどのような状態でもFIQによりRTOSに実行がプリエンプトされます。
他方、RTOS実行時は、汎用OS割込み(IRQ)をマスクして実行するため、RTOS実行中は汎用OS割込みによってプリエンプトされることはありません。SafeGはモニタコール呼び出し、およびRTOS割込み(FIQ)発生で起動されます。SafeG実行中はすべての割込みが禁止状態になります。この管理により実行の優先順位は以下の順となります。
SafeGの実行優先順位
4. 高速なOS切り替えとデバイスアクセス
TrustZoneにより大部分のプロセッサのレジスタはハードウェアにより多重化されています。またMMUもワールド毎に持っているため切り替えやコピーの必要はありません。ワールドの切り替え(=OSの切り替え)は命令一つで行われるため、高速にOS切り替えが行えます。
また、ハイパーバイザーによってはハードウェアを仮想化しているため、各OSまたはドライバからデバイスへのアクセスにオーバーヘッドがかかる場合があります。一方、SafeGではデバイスの仮想化は行っていません。ノーマルワールドで動作する汎用OSのデバイスドライバはノーマル領域のデバイスに直接アクセスできます。このため、RTOSおよび汎用OSの通常のデバイスドライバがほぼそのまま使え、オーバーヘッドもかかりません。
5. まとめ
SafeGは、プロセッサが持つ標準の機能のみで動作するため、(もう一つのOSを動かすためのメモリがあれば)ハードウェアはそのままで汎用OSを使ったシステムでRTOSを同時に動かす、またはその逆にRTOSのみで動かしているシステムで汎用OSも動かすことが容易にできます。
高度なネットワーク機能を付加したい、快適なGUIを搭載したい、などRTOS単体では実現が困難な要求もLinuxやAndroidといった汎用OSを同時に動かす事によって容易に実現できます。また、RTOSのみで動作している機器をIoTサーバに接続したいといったような場合も、RTOS側はそのままでIoT系のOSをSafeGを使って並行動作させることにより双方干渉することなく安全に動かすことができます。
ユビキタスAIでは、組込みシステムでの「マルチOS」「64ビット」「マルチコア」を積極的に提案しています。
製品ラインナップ
TOPPERS-Pro SafeGシリーズには、32ビットArm Cortex®-Aシリーズ用のTOPPERS-Pro SafeG、64ビットArm Cortex-Aシリーズ用のTOPPERS-Pro SafeG64、Arm Cortex-Mシリーズ用のTOPPERS-Pro SafeG-Mが用意されています。
※本記事は、TOPPERS-Pro SafeGシリーズの製品に付属する「TOPPERS-Pro SafeG_仕様書」から抜粋・加筆・修正したものです。
より詳しく技術や関連製品について知りたい方へ
本コラムに関係する技術や関連する製品について知りたい方は、お気軽にご相談ください。