SafeGとは

SafeGは同一ハードウェアプラットフォーム上で、汎用OSとRTOSを安全に同時実行できる高信頼デュアルOSモニタです。SafeGでは汎用OSとRTOSの同時実行を実現するために、ARMプロセッサのTrustZoneセキュリティ拡張機能を利用します。

  • ARM TrustZoneの実装されたプロセッサでは、プロセッサにトラスト状態、ノントラスト状態の2つの状態の概念が追加されます。各状態には独立に特権・非特権レベルが存在します。
  • トラスト状態は、一般的なARMプロセッサの特権レベルおよび非特権レベルと同じ機能を提供します。
  • 一方、ノントラスト状態で動いてるプログラムは、たとえ特権レベルであっても、トラスト用メモリやデバイスへのアクセスが禁止されます。また、一部の命令はノントラスト状態では実行できません。

トラスト状態/ノントラスト状態を制御するために、モニタモードと言う新しいモードが追加されています。SafeGは割込み禁止状態かつモニタモードで、トラスト状態とノントラスト状態を切り替えます。

SafeGのアーキテクチャ

SafeGのデモ

SafeGを用いたシステムのデモの構成図と動画を次に示します。このデモでは、トラスト状態でASPカーネルを、ノントラスト状態でLinux + Androidを動作させています。ASPカーネルでは,カメラの制御や倒立二輪車(PUPPY)の倒立制御を行っています。ASPカーネルとAndroid上のアプリの間は,SafeGが提供するOS間通信機能(COM)を使用して倒立二輪車の制御値をAndroid上のアプリに渡して表示しています.また,ASPカーネルからLinuxの再起動が可能です。

SafeGのデモ構成図

SafeGのデモ動画

SafeGの特徴

  1. シングルプロセッサで汎用OSとRTOSの同時実行を実現します。汎用OSはノントラスト状態で、RTOSはトラスト状態で実行されます。マルチコアプロセッサシステムにおいては、対象型マルチコアプロセッサでの動作を対象とするOSを、2つ安全に同時実行することができます。
  2. 汎用OSの不正なアクセスからRTOS用メモリとデバイスを保護します。RTOS 用メモリとデバイスは、トラスト状態のプロセッサからのみアクセス出来るように設定されています。残りのリソースは、どちらのプロセッサ状態からもアクセス出来ます。
  3. RTOSのリアルタイム性を保証します。RTOSのリアルタイム性保証のため、各状態で異なる割り込み要求ラインを使用します。
    • FIQはRTOSで使用されます。
    • IRQは汎用OSで使用されます。

    トラスト状態ではIRQ割り込みが禁止されています。そのため、汎用OSの割り込みが、RTOSの実行に影響を与えることはありません。

    一方、ノントラスト状態では、いつでもRTOSにプロセッサの制御を渡せるように、常にFIQ割り込みが許可されています。また、ノントラスト状態でFIQ割り込みを禁止出来ないように設定されています。そのため,RTOSの割込みを汎用 OSが禁止することはできません。

  4. ハードウェアの仮想化支援機能を使用しているため、低オーバヘッドで2つのOSの同時実行を実現できます。
  5. 汎用OSは少ない変更で適用可能です。必要な変更点はメモリとデバイスに関するコンフィギュレーションのみです。
  6. SafeGのコードは非常に小規模であり、かつ割り込み禁止状態で動作するため、検証が容易となっています。
  7. マルチコア対応SafeGは、プロセッサ数の変更に対して容易に対応可能なように設計されています。SafeGのデータ領域を除くプログラムコードは、コア間で共有されており、コア数が増えても、SafeGの実行時間およびプログラムコードサイズは増加しません。

マルチコアプロセッサ対応

対象型マルチコアプロセッサシステムを対象とする汎用OSとRTOSの同時実行が可能です。最新のリリースでは、汎用OSとしてLinux、RTOSとしてTOPPERS/FMPカーネルに対応しています。

OS間通信(COM)

汎用OS・RTOS間で、安全にOS間のデータ通信を行うことが可能です。この通信はロックフリーの実装となっており、RTOSのリアルタイム性に影響を与えないように配慮されています。

グローバルスケジューリング

RTOSタスクと、汎用OSタスクの優先度を混合することが可能です。これにより、RTOSのハードリアルタイム性を守りつつ、汎用OSの一部のソフトリアルタイム処理優先度を上げることができます。

対応ハードウェア・OS

SafeGの実行には、TrustZone搭載プロセッサが必要です。TrustZone搭載プロセッサには次のようなものがあります。

  • ARM Cortex-A9
  • ARM Cortex-A9MPCore
  • ARM Cortex-A8
  • ARM Cortex-A5
  • ARM1176

加えて、ターゲットハードウェアには以下のTrustZoneサポートが必要となります。

  • TrustZone対応の割込みコントローラ
  • メモリとデバイスをトラスト側とノントラスト側に分離可能(オプション)

最新のリリースでは次のボードに対応しています。

過去のリリースでは次のボードに対応しています。

最新のリリースでは次のゲストOSに対応しています。

  • Trust : ASP, FMP, bare metal
  • Non-Trust : ASP, FMP, Linux, Android

ダウンロード

SafeGの開発は名古屋大学情報科学研究科TOPPERSメンバーによって、TOPPERS内のプロジェクト管理ツールで行われています。ユーザ向けのパッケージはここからダウンロードできます。

safeg-1.2.1.tar.gzはパッケージに問題があるため公開を中止しています。

最新のリリース
パッケージ リリース サイズ リリース日
safeg-1.2.3.zip 1.2.3 1.32M 2016-07-22
safeg-1.2.2.tar.gz 1.2.2 1.16M 2015-10-13
safeg-1.2.1.tar.gz 1.2.1 1.16M 2015-10-01
safeg-1.2.tar.gz 1.2 1.2M 2015-09-17
safeg-1.1.tar.gz
1.1 1.16M 2015-08-12
safeg-1.0.tar.gz 1.0 1.8M 2013-12-03
safeg-0.5-armadillo-800-eva-21mar2013.tar.gz 0.5 7.5M 2013-03-21
safeg-0.4-qemu-14dec2012.tar.gz 0.4 644KB 2012-12-14
safeg-0.4-13jul2012-src.tar.gz 0.4 8.5MB 2012-07-13
safeg-0.4-13jul2012-bin.tar.gz 17MB
safeg-0.3-22dec2011-src.tar.gz 0.3 8.0MB 2011-12-22
safeg-0.3-22dec2011-bin.tar.gz 12.4MB
safeg-0.2-10jun2011-src.tar.gz 0.2 4.1MB 2011-06-08
safeg-0.2-10jun2011-bin.tar.gz 7.0MB
プリビルドバイナリ
パッケージ SafeGパッケージバージョン サイズ リリース日
safeg_socfpga-20131203.tar.gz 1.0 2.8M 2013-12-03
safeg_zynq-20131203.tar.gz 1.0 2.3M 2013-12-03

今後の予定

  • 仮想化によるintrospectionモニタ
  • 新しいボードへのポーティング
  • マルチコア対応SafeGにおけるロックホルダープリエンプションの解決
  • マルチコア対応SafeGにおける不均等負荷問題の解決

開発スタッフ

SafeGの開発に参加している開発スタッフは次の通りです(所属は参加した時点のもの)。

名前 所属 時期
高田広章 名古屋大学 情報科学研究科 2009年〜
本田晋也 名古屋大学 情報科学研究科 2009年〜
Daniel Sangorrin Lopez 名古屋大学 情報科学研究科 2009年〜
太田貴也 名古屋大学 情報科学研究科 2010年〜

※ 開発スタッフの名前は、掲載を了承された方のみ記載しています。

論文紹介

  1. "車載インフォテイメントシステムの高機能と高信頼性を実現する仮想化技術(SafeG)",本田晋也,堀田考一,大山田光夫,自動車技術,Vol. 67,No. 2,Feb. 2013.
  2. "組込みマルチコア向け仮想化環境における性能低下抑止手法",太田貴也,Daniel Sangorrin,本田晋也,高田広章,情報処理学会 第123回OS・第27回EMB合同研究発表会,東京,Dec 2012.
  3. "組込み向け仮想化環境におけるマルチコア利用時の性能低下抑止手法",太田貴也,Daniel Sangorrin,本田晋也,高田広章,第14回 組込みシステム技術に関するサマーワークショップ(SWEST14)ポスター,予稿集,下呂市,Aug 2012.
  4. "Reliable Device Sharing Mechanisms for Dual-OS Embedded Trusted Computing", Daniel Sangorrin, Shinya Honda and Hiroaki Takada, Proceedings 5th International Conference on Trust and Trustworthy Computing, pp. 74-91, Vienna, Austria, Jun 2012.
  5. "Integrated Scheduling for a Reliable Dual-OS Monitor", Daniel Sangorrin, Shinya Honda and Hiroaki Takada, Journal of Information Processing ACS no.23 2012.
  6. "組込み向け高信頼デュアルOSモニタとそのマルチコア拡張",太田貴也,Daniel Sangorrin,本田晋也,高田広章,第13回 組込みシステム技術に関するサマーワークショップ(SWEST13)ポスター,予稿集, 下呂市, Sep 2011.
  7. "組込み向け高信頼デュアルOSモニタのマルチコアアーキテクチャへの適用",太田貴也,Daniel Sangorrin,一場利幸,本田晋也,高田広章,情報処理学会 第117回OS研究会,Apr 2011.
  8. "Integrated Scheduling in a Real-Time Embedded Hypervisor", Daniel Sangorrin, Shinya Honda and Hiroaki Takada, 18th SIGEMB, Hakodate Mirai University, Aug 2010.
  9. "Dual Operating System Architecture for Real-Time Embedded Systems", Daniel SANGORRIN, Shinya HONDA, Hiroaki TAKADA. OSPERT 2010 Brussels (Belgium)
  10. "セキュリティ支援ハードウェアによるハイブリッドOSシステムの高信頼化", 中嶋 健一郎, 本田 晋也, 手嶋 茂晴, 高田 広章. The IEICE Transactions on Information Systems, 93(2):7585, 2010-02-01

外部リンク