オンデマンドで仮想マシンモニタをデプロイするアルゴリズムおよび装置

 

様々な態様では、仮想化技法を使用して、サンドボックスセッション中にコンピューティングデバイス上で動作するハイパーバイザを選択的にイネーブルにすることによって、性能を向上させ、消費電力量を削減することができる。様々な態様では、ハイレベルオペレーティングシステムは、その中間物理アドレスが物理アドレスと等しくなるようにメモリを割り振ることができる。ハイパーバイザは、ディセーブル状態であるときには、中間物理アドレスから物理アドレスへの第2段階の変換を中断することができる。サンドボックスセッション中に、ハイパーバイザがイネーブルにされ、第2段階の変換の実行を再開することもできる。

 

 

一般に、仮想化技術は、オペレーティングシステムとハードウェアとの間にソフトウェア制御プログラム(たとえば仮想マシンモニタ「VMM」またはハイパーバイザ)を配置することによって、コンピューティング資源の抽出(または仮想化)を可能にする。ハイパーバイザは、特権モードで動作し、複数のオペレーティングシステム(ゲストオペレーティングシステムと呼ばれる)のホストとなり得る。各ゲストオペレーティングシステムは、ハイパーバイザとハードウェアの組合せを単一の仮想マシンと見なして、物理ハードウェアと通信するときと同様の方法でハイパーバイザと通信する。これにより、各ゲストオペレーティングシステムは、プロセッサ、周辺機器、メモリ、およびI/Oに対する排他的なアクセスを有するように錯覚して動作することができる。
オペレーティングシステムは、複数のプロセスにわたる物理メモリの分割を担当する。仮想マシンの上で動作するゲストオペレーティングシステムを含むシステムでは、ゲストオペレーティングシステムによって割り振られたメモリは、真の物理メモリではなく、中間物理メモリである。そのようなシステムでは、ハイパーバイザが、物理メモリの実際の割振りを担当する。
ほとんどのプロセッサは、メモリアドレス空間変換の1つの段階しかサポートせず、ハイパーバイザが、仮想アドレス(VA)と、中間物理アドレス(IPA)と、物理アドレス(PA)との間の関係を管理する。これは、一般に、ハイパーバイザが、ゲストオペレーティングシステムの変換テーブルの各々を解釈することによって導出されるそれ自体の変換テーブル(シャドー変換テーブルと呼ばれる)を維持することによって実現される。具体的には、ハイパーバイザは、ゲストオペレーティングシステムの変換テーブルのすべての変更がシャドー構造に反映されることを保証し、保護と、アクセス障害の適当な段階へのリダイレクトとを施行する。
上述の1段階プロセッサとは異なり、ARMプロセッサシステムは、(たとえばシステムメモリ管理ユニット「SMMU」などのARM仮想化拡張機能を介して)両方の段階のメモリ変換のためのハードウェア補助を提供する。たとえば、ARMプロセッサは、第1段階(すなわち第1段階の変換)で仮想アドレス(VA)が中間物理アドレス(IPA)に変換され、第2段階(すなわち第2段階の変換)で中間物理アドレス(IPA)が物理アドレスに変換される、2段階変換を可能にする仮想化拡張機能を含む。これにより、ハイパーバイザに関連するオーバヘッドが低減される。
様々な態様は、必要なときに効率的にアクセス制御を施行してデータおよび/またはソフトウェアを保護するようにハイパーバイザを選択的に実装するコンピューティングデバイスおよび方法を含む。様々な態様では、ハイパーバイザは、通常はディセーブル状態で、ハイパーバイザがアクセス制御(すなわち「サンドボックスセッション」)を実施することを求められる状態が検出されたときにイネーブルにされる。ハイレベルオペレーティングシステム(HLOS)は、ハイパーバイザによって管理される仮想マシン中で動作することができる。HLOSは、HLOS上で実行される様々なプロセスまたはアプリケーションに仮想アドレスを割り振る際に使用される中間物理アドレスページテーブルを維持することができる。HLOSは、物理メモリアドレス空間から直接メモリを割り振ることによって、中間物理メモリアドレスが物理メモリアドレスと常に同じになることを保証することができる。HLOSが中間物理アドレスが常に物理アドレスと等しくなるようにメモリを割り振ることができることを保証することによって、ハイパーバイザを、サンドボックス化セッションが必要なときに選択的にイネーブルにし、現在のサンドボックス化セッションがないときにはディセーブルにすることができる。ディセーブル状態である間は、ハイパーバイザは、中間物理アドレスから物理アドレスへの段階2の変換を実行しないことがある。また、ハイパーバイザがディセーブル状態である間は、HLOSは、物理メモリアドレス空間の全体からメモリを割り振ることができる。
様々な態様では、ハイパーバイザは、サンドボックスセッションの持続時間の間、イネーブル状態にすることができる。イネーブル状態である間は、ハイパーバイザは、中間物理アドレスから物理アドレスへの段階2の変換の実行を再開することができる。また、イネーブル状態である間は、ハイパーバイザは、HLOSの物理メモリアドレス空間へのアクセスを制約することによって、HLOSが物理メモリアドレス空間の一部分のみからメモリを割り振ることができるようにすることができ、いくつかの態様では、HLOSのハードウェア割込みおよび/またはハードウェアタイマへのアクセスを制約することができる。とりわけサンドボックス化が不要であるとき(すなわちハイパーバイザがディセーブル状態であるとき)に、ハイパーバイザが段階2の変換を実行しないように構成することによって、様々な態様は、必要なセキュリティを適宜提供しながら、コンピューティングデバイスの全体的な性能を向上させることができる。
様々な態様は、ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化するステップと、初期化後にハイパーバイザをディセーブルにするステップと、サンドボックスセッションを開始するためのセキュリティモニタからの信号がないかどうか監視するステップと、サンドボックスセッションを開始するための信号が受信されたときに、ハイパーバイザをイネーブルにするステップと、ハイパーバイザがイネーブル状態である間にアクセス制御を実施するステップとによって、コンピューティングデバイス上のメモリを管理する方法を含む。一態様では、セキュリティモニタは、ARM TrustZone(登録商標)である。別の態様では、ハイパーバイザは、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得る。別の態様では、ハイパーバイザを初期化するステップは、HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るようにHLOSを構成するステップを含むことができる。さらに別の態様では、ハイパーバイザを初期化するステップは、セキュリティモニタによってハイパーバイザのコードおよびデータを認証するステップをさらに含むことができる。別の態様では、この方法は、ハイパーバイザのコードおよびデータを、ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよびデジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成するステップをさらに含むことができる。
別の態様では、ハイパーバイザをディセーブルにするステップは、すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成するステップと、HLOSについて第2段階の変換をオフにするステップとを含むことができる。一態様では、ハイパーバイザをディセーブルにするステップは、HLOSのハードウェア割込みへのアクセスの制限を中断するステップ、HLOSのハードウェアタイマへのアクセスの制限を中断するステップ、およびHLOSのI/Oアクセスの制限を中断するステップのうちの少なくとも1つをさらに含むことができる。
別の態様では、この方法は、サンドボックスセッションが終了したかどうかを判定するステップと、サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行するステップと、サンドボックスセッションティアダウン手順を実行した後で、ハイパーバイザをディセーブルにするステップとをさらに含むことができる。別の態様では、サンドボックスセッションが終了したかどうかを判定するステップは、サンドボックスセッションが終了したことを示す別の信号を受信するステップを含むことができる。さらに別の態様では、サンドボックスセッションティアダウン手順を実行するステップは、サンドボックス化された構成要素に対してすべてのバッファを解放するステップと、第2段階の変換ページテーブルを復元して、すべての断片化を解消するステップとを含むことができる。
一態様では、ハイパーバイザをイネーブルにするステップは、PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにするステップと、割込み要求がハイパーバイザモードで受けられるように構成するステップと、SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れるステップとを含むことができる。別の態様では、この方法は、デジタル信号プロセッサとのプロセッサ間通信を開始するステップも含むことができる。別の態様では、この方法は、SMMU障害を処理するステップをさらに含むことができる。
別の態様では、アクセス制御を実施するステップは、第2段階の変換を実施するステップを含むことができる。さらに別の態様では、アクセス制御を実施するステップは、HLOSのハードウェア割込みへのアクセスの制限を再開するステップ、HLOSのハードウェアタイマへのアクセスの制限を再開するステップ、およびHLOSのI/Oアクセスの制限を再開するステップのうちの少なくとも1つをさらに含むことができる。一態様では、第2段階の変換を実施するステップは、HLOSによるメモリを割り振ろうとする試みがないか監視するステップと、HLOSがメモリを割り振ろうと試みているときに、HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスをHLOSに提供するステップとを含むことができる。
別の態様では、この方法は、HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定するステップと、サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、サンドボックス化された構成要素に物理アドレス空間中の物理アドレスから物理アドレスを提供するステップとをさらに含むことができる。一態様では、サンドボックス化された構成要素に物理アドレスを提供するステップは、サンドボックス化された構成要素に提供される物理アドレスを、HLOSからアクセス可能な物理アドレス空間中の物理アドレスから除去するステップと、物理アドレス空間中の利用可能な物理アドレスからサンドボックス化された構成要素に物理アドレスを提供するステップとを含むことができる。
さらに別の態様は、メモリと、メモリに結合されたプロセッサとを含み、プロセッサが、プロセッサ実行可能命令によって、ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化する動作と、初期化後にハイパーバイザをディセーブルにする動作と、サンドボックスセッションを開始するためのセキュリティモニタからの信号がないかどうか監視する動作と、サンドボックスセッションを開始するための信号が受信されたときに、ハイパーバイザをイネーブルにする動作と、ハイパーバイザがイネーブル状態である間にアクセス制御を実施する動作とを含むことができる動作を実行するように構成される、コンピューティングデバイスを含む。別の態様では、セキュリティモニタは、ARM TrustZone(登録商標)である。別の態様では、プロセッサは、プロセッサ実行可能命令によって、ハイパーバイザが集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得るように動作を実行するように構成することができる。
さらに別の態様では、プロセッサは、プロセッサ実行可能命令によって、ハイパーバイザを初期化する動作が、HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るようにHLOSを構成する動作を含むように動作を実行するように構成することができる。一態様では、プロセッサは、プロセッサ実行可能命令によって、ハイパーバイザを初期化する動作が、セキュリティモニタによってハイパーバイザのコードおよびデータを認証する動作をさらに含むように動作を実行するように構成することができる。別の態様では、プロセッサは、プロセッサ実行可能命令によって、ハイパーバイザのコードおよびデータを、ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよびデジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成する動作を含む動作を実行するように構成することができる。
一態様では、プロセッサは、プロセッサ実行可能命令によって、ハイパーバイザをディセーブルにする動作が、すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成する動作と、HLOSについて第2段階の変換をオフにする動作とを含むように動作を実行するように構成することができる。別の態様では、プロセッサは、プロセッサ実行可能命令によって、ハイパーバイザをディセーブルにする動作が、HLOSのハードウェア割込みへのアクセスの制限を中断する動作、HLOSのハードウェアタイマへのアクセスの制限を中断する動作、およびHLOSのI/Oアクセスの制限を中断する動作のうちの少なくとも1つをさらに含むように動作を実行するように構成することができる。
別の態様では、プロセッサは、プロセッサ実行可能命令によって、サンドボックスセッションが終了したかどうかを判定する動作と、サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行する動作と、サンドボックスセッションティアダウン手順を実行した後で、ハイパーバイザをディセーブルにする動作とを含む動作を実行するように構成することができる。別の態様では、プロセッサは、プロセッサ実行可能命令によって、サンドボックスセッションが終了したかどうかを判定する動作が、サンドボックスセッションが終了したことを示す別の信号を受信する動作を含むように動作を実行するように構成することができる。さらに別の態様では、プロセッサは、プロセッサ実行可能命令によって、サンドボックスセッションティアダウン手順を実行する動作が、サンドボックス化された構成要素に対してすべてのバッファを解放する動作と、第2段階の変換ページテーブルを復元して、すべての断片化を解消する動作とを含むように動作を実行するように構成することができる。
一態様では、プロセッサは、プロセッサ実行可能命令によって、ハイパーバイザをイネーブルにする動作が、PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにする動作と、割込み要求がハイパーバイザモードで受けられるように構成する動作と、SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる動作とを含むように動作を実行するように構成することができる。別の態様では、プロセッサは、プロセッサ実行可能命令によって、デジタル信号プロセッサとのプロセッサ間通信を開始する動作を含む動作を実行するように構成することができる。さらに別の態様では、プロセッサは、プロセッサ実行可能命令によって、SMMU障害を処理する動作を含む動作を実行するように構成することができる。
一態様では、プロセッサは、プロセッサ実行可能命令によって、アクセス制御を実施する動作が、第2段階の変換を実施する動作を含むように動作を実行するように構成することができる。別の態様では、プロセッサは、プロセッサ実行可能命令によって、アクセス制御を実施する動作が、HLOSのハードウェア割込みへのアクセスの制限を再開する動作、HLOSのハードウェアタイマへのアクセスの制限を再開する動作、およびHLOSのI/Oアクセスの制限を再開する動作のうちの少なくとも1つをさらに含むように動作を実行するように構成することができる。
一態様では、プロセッサは、プロセッサ実行可能命令によって、第2段階の変換を実施する動作が、HLOSによるメモリを割り振ろうとする試みがないか監視する動作と、HLOSがメモリを割り振ろうと試みているときに、HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスをHLOSに提供する動作とを含むように動作を実行するように構成することができる。別の態様では、プロセッサは、プロセッサ実行可能命令によって、HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定する動作と、サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、サンドボックス化された構成要素に物理アドレス空間中の物理アドレスから物理アドレスを提供する動作とをさらに含む動作を実行するように構成することができる。さらに別の態様では、プロセッサは、プロセッサ実行可能命令によって、サンドボックス化された構成要素に物理アドレスを提供する動作が、サンドボックス化された構成要素に提供される物理アドレスを、HLOSからアクセス可能な物理アドレス空間中の物理アドレスから除去する動作と、物理アドレス空間中の利用可能な物理アドレスからサンドボックス化された構成要素に物理アドレスを提供する動作とを含むように動作を実行するように構成することができる。
さらに別の態様は、ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化するための手段と、初期化後にハイパーバイザをディセーブルにするための手段と、サンドボックスセッションを開始するためのセキュリティモニタからの信号がないかどうか監視するための手段と、サンドボックスセッションを開始するための信号が受信されたときに、ハイパーバイザをイネーブルにするための手段と、ハイパーバイザがイネーブル状態である間にアクセス制御を実施するための手段とを含む、コンピューティングデバイスを含む。別の態様では、セキュリティモニタは、ARM TrustZone(登録商標)とすることができる。さらに別の態様では、ハイパーバイザは、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得る。別の態様では、ハイパーバイザを初期化するための手段は、HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るようにHLOSを構成するための手段を含むことができる。別の態様では、ハイパーバイザを初期化するための手段は、セキュリティモニタによってハイパーバイザのコードおよびデータを認証するための手段をさらに含むことができる。さらに別の態様では、コンピュータデバイスは、ハイパーバイザのコードおよびデータを、ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよびデジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成するための手段を含むことができる。
一態様では、ハイパーバイザをディセーブルにするための手段は、すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成するための手段と、HLOSについて第2段階の変換をオフにするための手段とを含むことができる。別の態様では、ハイパーバイザをディセーブルにするための手段は、HLOSのハードウェア割込みへのアクセスの制限を中断するための手段、HLOSのハードウェアタイマへのアクセスの制限を中断するための手段、およびHLOSのI/Oアクセスの制限を中断するための手段のうちの少なくとも1つをさらに含むことができる。
一態様では、コンピュータデバイスは、サンドボックスセッションが終了したかどうかを判定するための手段と、サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行するための手段と、サンドボックスセッションティアダウン手順を実行した後で、ハイパーバイザをディセーブルにするための手段とをさらに含むことができる。別の態様では、サンドボックスセッションが終了したかどうかを判定するための手段は、サンドボックスセッションが終了したことを示す別の信号を受信するための手段を含むことができる。別の態様では、サンドボックスセッションティアダウン手順を実行するための手段は、サンドボックス化された構成要素に対してすべてのバッファを解放するための手段と、第2段階の変換ページテーブルを復元して、すべての断片化を解消するための手段とを含むことができる。
一態様では、ハイパーバイザをイネーブルにするための手段は、PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにするための手段と、割込み要求がハイパーバイザモードで受けられるように構成するための手段と、SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる手段とを含むことができる。別の態様では、コンピュータデバイスは、デジタル信号プロセッサとのプロセッサ間通信を開始するための手段をさらに含むことができる。さらに別の態様では、コンピュータデバイスは、SMMU障害を処理するための手段を含むことができる。
一態様では、アクセス制御を実施するための手段は、第2段階の変換を実施するための手段を含むことができる。別の態様では、アクセス制御を実施するための手段は、HLOSのハードウェア割込みへのアクセスの制限を再開するための手段、HLOSのハードウェアタイマへのアクセスの制限を再開するための手段、およびHLOSのI/Oアクセスの制限を再開するための手段のうちの少なくとも1つを含むことができる。さらに別の態様では、第2段階の変換を実施するための手段は、HLOSによるメモリを割り振ろうとする試みがないか監視するための手段と、HLOSがメモリを割り振ろうと試みているときに、HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスをHLOSに提供するための手段とを含むことができる。別の態様では、コンピュータデバイスは、HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定するための手段と、サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、サンドボックス化された構成要素に物理アドレス空間中の物理アドレスから物理アドレスを提供するための手段とを含むこともできる。さらに別の態様では、サンドボックス化された構成要素に物理アドレスを提供するための手段は、サンドボックス化された構成要素に提供される物理アドレスを、HLOSからアクセス可能な物理アドレス空間中の物理アドレスから除去するための手段と、物理アドレス空間中の利用可能な物理アドレスからサンドボックス化された構成要素に物理アドレスを提供するための手段とを含むことができる。
さらに別の態様では、非一時的プロセッサ可読記憶媒体は、プロセッサにコンピューティングデバイス上のメモリを管理するための動作を実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶することができ、動作は、ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化する動作と、初期化後にハイパーバイザをディセーブルにする動作と、サンドボックスセッションを開始するためのセキュリティモニタからの信号がないかどうか監視する動作と、サンドボックスセッションを開始するための信号が受信されたときに、ハイパーバイザをイネーブルにする動作と、ハイパーバイザがイネーブル状態である間にアクセス制御を実施する動作とを含む。別の態様では、セキュリティモニタは、ARM TrustZone(登録商標)とすることができる。別の態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ハイパーバイザが、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得るように動作をプロセッサに実行させるように構成することができる。
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ハイパーバイザを初期化する動作が、HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るようにHLOSを構成する動作を含むように動作をプロセッサに実行させるように構成することができる。別の態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ハイパーバイザを初期化する動作が、セキュリティモニタによってハイパーバイザのコードおよびデータを認証する動作をさらに含むように動作をプロセッサに実行させるように構成することができる。別の態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ハイパーバイザのコードおよびデータを、ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよびデジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成する動作を含む動作をプロセッサに実行させるように構成することができる。
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ハイパーバイザをディセーブルにする動作が、すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成する動作と、HLOSについて第2段階の変換をオフにする動作とを含むように動作をプロセッサに実行させるように構成することができる。別の態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ハイパーバイザをディセーブルにする動作が、HLOSのハードウェア割込みへのアクセスの制限を中断する動作、HLOSのハードウェアタイマへのアクセスの制限を中断する動作、およびHLOSのI/Oアクセスの制限を中断する動作のうちの少なくとも1つをさらに含むように動作をプロセッサに実行させるように構成することができる。
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、サンドボックスセッションが終了したかどうかを判定する動作と、サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行する動作と、サンドボックスセッションティアダウン手順を実行した後で、ハイパーバイザをディセーブルにする動作とを含む動作をプロセッサに実行させるように構成することができる。一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、サンドボックスセッションが終了したかどうかを判定する動作が、サンドボックスセッションが終了したことを示す別の信号を受信する動作を含むように動作をプロセッサに実行させるように構成することができる。別の態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、サンドボックスセッションティアダウン手順を実行する動作が、サンドボックス化された構成要素に対してすべてのバッファを解放する動作と、第2段階の変換ページテーブルを復元して、すべての断片化を解消する動作とを含むように動作をプロセッサに実行させるように構成することができる。
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ハイパーバイザをイネーブルにする動作が、PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにする動作と、割込み要求がハイパーバイザモードで受けられるように構成する動作と、SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる動作とを含むように動作をプロセッサに実行させるように構成することができる。別の態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、デジタル信号プロセッサとのプロセッサ間通信を開始する動作を含む動作をプロセッサに実行させるように構成することができる。別の態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、SMMU障害を処理する動作を含む動作をプロセッサに実行させるように構成することができる。
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、アクセス制御を実施する動作が、第2段階の変換を実施する動作を含むように動作をプロセッサに実行させるように構成することができる。別の態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、アクセス制御を実施する動作が、HLOSのハードウェア割込みへのアクセスの制限を再開する動作、HLOSのハードウェアタイマへのアクセスの制限を再開する動作、およびHLOSのI/Oアクセスの制限を再開する動作のうちの少なくとも1つをさらに含むように動作をプロセッサに実行させるように構成することができる。別の態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、第2段階の変換を実施する動作が、HLOSによるメモリを割り振ろうとする試みがないか監視する動作と、HLOSがメモリを割り振ろうと試みているときに、HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスをHLOSに提供する動作とを含むように動作をプロセッサに実行させるように構成することができる。さらに別の態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定する動作と、サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、サンドボックス化された構成要素に物理アドレス空間中の物理アドレスから物理アドレスを提供する動作とを含む動作をプロセッサに実行させるように構成することができる。別の態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、サンドボックス化された構成要素に物理アドレスを提供する動作が、サンドボックス化された構成要素に提供される物理アドレスを、HLOSからアクセス可能な物理アドレス空間中の物理アドレスから除去する動作と、物理アドレス空間中の利用可能な物理アドレスからサンドボックス化された構成要素に物理アドレスを提供する動作とを含むように動作をプロセッサに実行させるように構成することができる。
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本発明の例示的な態様を示すものであり、上記に与えた概略的な説明および以下に与える詳細な説明とともに、本発明の特徴を説明する役割を果たすものである。
一態様によるコンピューティングデバイスの構成要素ブロック図である。 コンピューティングデバイスのモジュールの機能ブロック図である。 一態様によるコンピューティングシステムの階層型コンピュータアーキテクチャ図である。 仮想マシン内の一態様による論理構成要素の階層型コンピュータアーキテクチャ図である。 仮想マシン内の一態様による論理構成要素の階層型コンピュータアーキテクチャ図である。 システム仮想マシンを実装するコンピューティングデバイス内の2段階メモリアドレスマッピングを示す機能ブロック/メモリマップ図である。 ハイパーバイザがディセーブル状態である間にシステム仮想マシンを実装するコンピューティングデバイス内の2段階メモリアドレスマッピングを示すメモリマップ図である。 サンドボックスセッション中にハイパーバイザがイネーブル状態である間にシステム仮想マシンを実装するコンピューティングデバイス内の2段階メモリアドレスマッピングを示すメモリマップ図である。 サンドボックスセッション中にハイパーバイザがイネーブル状態である間に共用仮想メモリを有するシステム仮想マシンを実装するコンピューティングデバイス内の2段階メモリアドレスマッピングを示すメモリマップ図である。 ハイパーバイザを選択的にイネーブルおよびディセーブルにするための一態様による方法を示すプロセスフロー図である。 コンピューティングデバイス上で共用仮想メモリ環境を開始する際に行われる信号通信を示すコールフロー図である。 共用仮想メモリセッションを構成する一態様による方法を示すプロセスフロー図である。 ハイパーバイザをディセーブルにする一態様による方法を示すプロセスフロー図である。 コンピューティングデバイス上でサンドボックスセッションを開始する際に行われる信号通信を示すコールフロー図である。 ハイパーバイザをイネーブルにする一態様による方法を示すプロセスフロー図である。 第2段階の変換を実施する一態様による方法を示すプロセスフロー図である。 第2段階の変換を実施する一態様による方法を示すプロセスフロー図である。 サンドボックスセッションティアダウンを実行する一態様による方法を示すプロセスフロー図である。 様々な態様を実施するのに適したコンピューティングデバイスの構成要素ブロック図である。 様々な態様を実施するのに適した別のコンピューティングデバイスの構成要素ブロック図である。
添付の図面を参照して、様々な態様について詳細に説明する。図面では、可能な限り、同じまたは同様の部分を示すのに同じ参照番号が使用される。具体的な例および実施態様への言及は、例示を目的としたものであり、本発明の範囲または特許請求の範囲を限定するためのものではない。
概観すると、これらの様々な態様は、コンピューティングデバイスと、このコンピューティングデバイス上にハイパーバイザを選択的に実装して、ハイパーバイザを用いたアクセス制御を効率的に施行するための方法とを含む。様々な態様では、ハイパーバイザは、通常はディセーブル状態で、ハイパーバイザがアクセス制御(すなわち「サンドボックスセッション」)を実施することを求められる状態が検出されたときにイネーブルにされる。ディセーブル状態である間は、ハイパーバイザは、第2段階の変換を実行することができないが、イネーブル状態である間は、ハイパーバイザは、第2段階の変換を再開することができる。いくつかの態様では、イネーブル状態である間に、ハイパーバイザは、入出力(I/O)アクセス、ハードウェア割込みアクセス、および/またはハードウェアタイマアクセスを制限するなど、ハイパーバイザがディセーブル状態である間に中断された他のアクティビティを再開することもできる。したがって、サンドボックス化が必要とされている間にのみ選択的にハイパーバイザをイネーブルにすることにより、コンピューティングデバイスは、安全な動作環境を維持しながら、全体的な性能およびユーザエクスペリエンスを向上させることができる。
様々な態様では、コンピューティングデバイスは、メモリと、ハードウェア(すなわちベアメタルハイパーバイザ)、ソフトウェア(すなわち従来のオペレーティングシステム環境内で動作するホスト型ハイパーバイザ)、またはハードウェアとソフトウェアの組合せとして実装されるハイパーバイザを備えるように構成されるメモリに結合されたプロセッサとを含むことができる。ハイパーバイザは、さらに、様々なアプリケーション、オペレーティングシステム、プロセス、信号などに対応する1つまたは複数の仮想マシンを作成し、管理することができる。
「コンピューティングデバイス」という用語は、本明細書では、携帯電話、スマートフォン、個人用またはモバイルのマルチメディアプレイヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット接続可能携帯電話、ワイヤレスゲームコントローラ、ならびに電力節約方法が有益となるようにバッテリ電力で動作する、プログラマブルプロセッサとメモリとを含む同様の個人用電子デバイスのうちの任意の1つまたはすべてを指すものとして使用される。様々な態様は、限られた処理能力およびバッテリ容量を有する携帯電話などのモバイルデバイスで特に有用であるが、それらの態様は、プロセッサ性能の向上とエネルギー消費の低減の恩恵を受け得る任意のコンピューティングデバイスで一般に有用である。
「仮想マシンモニタ」、「VMM」、および「ハイパーバイザ」という用語は、本明細書では、仮想マシンマネージャを指すものとして交換可能に使用される。「ハイレベルオペレーティングシステム」(HLSO)という用語は、本明細書では、ハイパーバイザが管理する仮想マシン内で動作するゲストオペレーティングシステムを指すものとして使用される。一態様では、ハイパーバイザは、サンドボックスセッション中にHLOSを隔離することができる。
「段階1の変換」および「第1段階の変換」という用語は、本明細書では、仮想メモリアドレス(「VA」)から中間メモリアドレス(「IPA」)への変換またはマッピングを指すものとして交換可能に使用される。一例では、HLOSは、HLOS上で動作するプロセスに割り振られた仮想アドレスからHLOSの中間物理アドレス空間内に維持される中間物理アドレスへの第1段階の変換を実行することができる。
「段階2の変換」および「第2段階の変換」という用語は、本明細書では、中間物理アドレスから物理メモリアドレス(「PA」)への変換またはマッピングを指すものとして交換可能に使用される。一例では、ハイパーバイザまたはシステムメモリ管理ユニット(「SMMU」)は、HLOSに割り振られた中間物理アドレスからハイパーバイザによって物理アドレス空間内に維持されている物理アドレスへの第2段階の変換を実行することができる。
「サンドボックスセッション」という用語は、本明細書では、ハイパーバイザが2つ以上のエンティティの間のアクセス制御を実行している期間を指すものとして使用される。一態様では、サンドボックスセッションは、ハイパーバイザがコンピューティングデバイス(たとえばDRMメディアを再生するセキュアビデオデバイス)上で分離して処理されなければならない保護されたコンテンツ(たとえばデジタル権管理(DRM)技法によって保護されるコンテンツ)に関する警告を受けたときに開始することができ、たとえばその保護されたコンテンツの処理または再生が終了したとき、およびサービスまたはアプリケーションが解除されたときなど、その分離が必要なくなったときに終了することができる。
「サンドボックス化された構成要素」という用語は、本明細書では、ハイパーバイザがHLOSから分離する(すなわちサンドボックス化する)構成要素、アプリケーション、プロセスなどを指すものとして使用される。一態様では、ハイパーバイザは、サンドボックス化された構成要素に、HLOSに割り振られた物理アドレスと重複しない、物理メモリアドレス空間内の物理アドレスを割り振ることができる。
「共用エンティティ」という用語は、本明細書では、仮想メモリをHLOSと共用する構成要素、アプリケーション、プロセスなどを指すものとして使用される。一態様では、共用エンティティとHLOSとが、物理メモリアドレス空間内の1つまたは複数の物理アドレスへのアクセスを共用することができる。
仮想マシンを作成し、管理することにより、ハイパーバイザは、「サンドボックス」を作成する、あるいはオペレーティングシステム、アプリケーション、プロセスなど様々な動作またはデータの周囲の安全な分離を生じることができる。ハイパーバイザは、サンドボックスを使用して様々な機構へのアクセスを制限することにより、動作またはデータのセキュリティを実現することができる。たとえば、HLOSは、ハイパーバイザが管理する仮想マシン内でゲストオペレーティングシステムとして動作することができ、ハイパーバイザは、HLOSの仮想マシンの外部で処理されるビデオ信号を、HLOSがそのビデオ信号に気付かない(すなわち検出またはアクセスすることができない)ように管理することができる。
ただし、アクセス制御を施行するためにハイパーバイザを使用することに関連する性能コストがある。ベンチマークテストでは、アクセス制御を施行するためにハイパーバイザを使用すると、ベンチマークにもよるが、約5%〜30%の性能低下を引き起こす可能性があることがわかっている。様々な態様では、サンドボックスによって与えられるデータおよびまたはソフトウェアのセキュリティが必要なときにだけハイパーバイザを実施することにより、この性能上の不利益を克服する。
様々な態様では、HLOSは、ハイパーバイザによって管理される仮想マシン内で動作することができる。HLOSは、HLOS上で実行される様々なプロセスまたはアプリケーションに仮想アドレスを割り振る際に使用される中間物理アドレスページテーブルを維持することができる。HLOSは、物理メモリアドレス空間から直接メモリを割り振ることにより、中間物理アドレスが常に物理アドレスと同じであることを保証することができる。言い換えれば、HLOSの中間物理アドレス空間内の中間物理アドレスは、常に、物理アドレス空間内の物理アドレスと等しい。中間物理アドレスが常に物理アドレスと等しくなるようにHLOSがメモリを割り振ることができることを保証することにより、様々な態様では、ハイパーバイザのパフォーマンスヒットはサンドボックスセッションが必要になったときにしか生じないので、ハイパーバイザを選択的にイネーブルおよびディセーブルすることによって全体的な性能を向上させることを可能にする。
様々な態様では、HLOSは、物理メモリアドレス空間から直接メモリを割り振ることができる。しかし、ハイパーバイザがイネーブル状態である間は、ハイパーバイザは、物理メモリアドレス空間へのHLOSのアクセスを制限することによって、HLOSが物理メモリアドレス空間の一部分からしかメモリを割り振ることができないようにすることができる。
一態様では、コンピューティングデバイスのプロセッサは、サンドボックス化が必要とされる状況(すなわちサンドボックスセッションで処理すべきデータおよび/またはソフトウェア)がないかどうか監視することができる。一態様では、サンドボックスセッションは、別個のプロセス、アプリケーションなどの間のアクセス制御を施行するためにサンドボックス化が必要とされる状況または期間とすることができる。たとえば、コンピューティングデバイスは、安全な信号(たとえばデジタル権管理を受けているビデオ信号)が受信されていること、またはHLOSから隔離された状態に保たれなければならない第2のオペレーティングシステムが開始されていることを検出することができる。サンドボックスセッションが必要とされていることを検出すると、コンピューティングデバイスは、ハイパーバイザをイネーブルにすることができる。イネーブルにされた後で、ハイパーバイザは、第2段階の変換を実施し、HLOSを物理メモリアドレス空間の一部分からしかメモリを割り振らないように制限することにより、サンドボックスセッションを確立することができる。ハイパーバイザは、イネーブル状態である間、I/Oアクセス、ハードウェア割込みアクセス、およびハードウェアタイマアクセスのうちの1つまたは複数を制限するなどの他のアクセス制御動作を再開することもできる。
別の態様では、ハイパーバイザは、たとえば安全なビデオ信号が受信されなくなっているかどうか判定するなど、サンドボックスセッションが終了していないかどうか監視することができる。サンドボックスセッションが終了しているときには、ハイパーバイザは、セッションのティアダウンを実行することができる。セッションティアダウンプロセスでは、ハイパーバイザは、サンドボックス化された構成要素に割り振られた資源を解放することができる。たとえば、ハイパーバイザは、安全なビデオ信号を処理するためにデジタル信号プロセッサに割り振られた資源を解放することによって、HLOSが物理メモリアドレス空間の全体からメモリを割り振ることができるようにすることができる。さらに別の態様では、ハイパーバイザは、次のサンドボックス化状況が始まるまでディセーブル状態にすることもできる。
さらに別の態様では、ハイパーバイザは、HLOSおよび共用エンティティの第2段階の変換を可能にすることができる。この態様では、共用エンティティおよびHLOSは、仮想メモリを共用し、物理メモリアドレス空間内の物理アドレスへのアクセスを共用することができる。さらに別の態様では、ハイパーバイザは、共用されていないメモリアドレスについて、HLOSと共用エンティティの間のアクセス制御を実行することができる。
様々な態様は、幅広いシングルプロセッサコンピュータアーキテクチャおよびマルチプロセッサコンピュータアーキテクチャ上に実装することができ、その一例が、図1に示してある。コンピューティングデバイス100は、図示のデジタル信号プロセッサ(DSP)102、モデムプロセッサ104、グラフィックスプロセッサ106、およびアプリケーションプロセッサ108など、いくつかの異種プロセッサを含むことができる。コンピューティングデバイス100は、プロセッサ102〜108のうちの1つまたは複数に接続された1つまたは複数のベクトルコプロセッサ110も含むことができる。各プロセッサ102〜110は、1つまたは複数のコアを含むことができ、各プロセッサ/コアは、他のプロセッサ/コアから独立した動作を実行することができる。各プロセッサ102〜110は、メモリ(図示せず)および/またはメモリ管理システムコントローラも含むことができる。一態様では、コンピューティングデバイス100の構成要素は、単一の基板上に配置され、かつ/またはシステムオンチップ(SOC)125として互いに密接に結合されることもある。
コンピューティングデバイス100は、センサデータの管理と、アナログデジタル変換と、ワイヤレスデータ送信と、ゲームおよび映画の符号化された音声信号の処理など他の特殊動作の実行とを行うアナログ回路/カスタム回路114を含むことができる。コンピューティングデバイス100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマ、ならびにコンピューティングデバイス上で動作するプロセッサ、メモリ、およびクライアントをサポートするために使用される他の同様の構成要素などのシステム構成要素/資源116をさらに含むことができる。システム構成要素/資源116の各々は、メモリ(図示せず)および/またはメモリ管理システムコントローラをさらに含むことができる。
様々な態様では、アプリケーションプロセッサ108は、中央処理装置(CPU)であることも、CPUの構成要素であることも、あるいはCPUに結合された処理ユニットであることもある。一態様では、CPUは、プロセッサ102〜110、システム構成要素/資源116、および/または周辺機器の様々なメモリから情報を読み取り、またそれらに情報を書き込むように構成することができ、これは、それぞれプロセッサ102〜110、資源116、および/または周辺機器のメモリ管理システムコントローラを介して実現することができる。
コンピューティングデバイス100は、クロック118および電圧調整器120など、構成要素間および資源間の通信のための入出力モジュール(図示せず)をさらに含むことができる。プロセッサ102〜108は、相互接続/バスモジュール122を介して、1つまたは複数のメモリ要素112、資源116、カスタム回路114、および様々な他のシステム構成要素と相互接続することができる。
上述のように、コンピューティングデバイス100は、プロセッサ102〜108のうちの1つまたは複数に接続された1つまたは複数のベクトルコプロセッサ110を含むことができる。このようなベクトルコプロセッサ110は、マルチメディアおよびビデオストリーミングのアプリケーションなど、高速の並列実行を必要とするアプリケーションを処理するのに特に有用である可能性がある。一態様では、ベクトルコプロセッサ110は、独立したハードウェアレジスタ、メモリ、および/または実行ハードウェアを含む単一命令多重データ(SIMD)命令セットアーキテクチャ(ISA)を実装することができる。SIMDベクトルコプロセッサは、コンピューティングデバイス100のメインプロセッサ(たとえばアプリケーションプロセッサ108、CPUなど)の一部とする、またはコンピューティングデバイス100のメインプロセッサに密接に結合することができる。
図2は、安全な仮想環境(すなわちサンドボックス)を維持することができる一態様によるコンピューティングデバイス206を示す構成要素図である。安全でないオペレーティングシステム208(すなわちHLOS)は、ハイパーバイザ212と通信していることがある。ハイパーバイザは、物理メモリ216と通信していることがある。一態様では、ハイパーバイザは、安全でないオペレーティングシステム208と物理メモリ216または他のハードウェア(図示せず)との間の仲介物として作用することができる。別の態様では、ハイパーバイザ212は、安全でないオペレーティングシステム208が維持する中間物理アドレス(IPA)の、物理メモリ216内の物理アドレス(PA)へのマッピングを容易にすることができる。
一態様では、ハイパーバイザ212は、セキュリティモニタ214(たとえばARM TrustZone(登録商標))とも通信していることがある。セキュリティモニタ214は、ゲートキーパとして作用して、安全なデータのみが安全な仮想環境210に出入りすることを保証することができる。安全な仮想環境210は、安全なネットワーク204と通信していることがある。安全な仮想環境210は、安全なネットワーク204にデータを送信する、または安全なネットワーク204からデータを受信することができる。一例では、安全な仮想環境210は、安全なネットワーク204から感知可能データを受信することができるデジタル信号プロセッサ(すなわちDSP)を含むことができる。この例では、感知可能データは、デジタル権管理の制限によって調整されたビデオデータを含む信号とすることができる。一態様では、セキュリティモニタ214は、ハイパーバイザ212と通信して、感知可能データが安全でないオペレーティングシステム(または他のシステムまたはプロセス)がアクセスできない物理メモリ216の一部分に記憶されることを保証することができる。さらに別の態様では、この感知可能データは、物理メモリ216内の暗号化されたメモリ(図示せず)に記憶することができる。
図3は、代表的なコンピュータシステム中の論理構成要素およびインターフェースを示す、プロセッサの階層型アーキテクチャを示す図である。図示のコンピュータシステムアーキテクチャ300は、ハードウェア構成要素322、およびソフトウェア構成要素320の両方を含む。ソフトウェア構成要素320は、オペレーティングシステム302と、ライブラリモジュール304と、1つまたは複数のアプリケーションプログラム(A0〜An)306とを含むことができる。ハードウェア構成要素322は、周辺機器308(たとえばハードウェアアクセラレータ、入出力デバイスなど)と、中央処理装置(CPU)310と、中央処理装置メモリ管理ユニット(CPU MMU)316と、1つまたは複数のシステムメモリ管理ユニット(本明細書では「システムMMU」または「SMMU」)312と、1つまたは複数のメモリ314とを含むことができる。
モバイルコンピューティングデバイス用に書き込まれたアプリケーションソフトウェアは、コンパイルして、一般に「アプリケーション」、「app」、またはアプリケーションプログラム306と呼ばれるものである実行可能コードにすることができる。各アプリケーションプログラム306は、単一のプロセスまたはスレッドであることもあるし、あるいは複数のプロセスまたはスレッドを含むこともある。
アプリケーションプログラム306は、アプリケーションプログラムインターフェース(API)を介して、ライブラリモジュール304に対して高水準言語(HLL)ライブラリコールを発行することができる。ライブラリモジュール304は、アプリケーションバイナリインターフェース(ABI)を介して、(たとえばオペレーティングシステムコールを介して)オペレーティングシステム302上でサービスを呼び出すことができる。オペレーティングシステム302は、ハードウェア322によって実施される特定の演算コード(オペコード)およびネイティブコマンドのリスティングである特定の命令セットアーキテクチャ(ISA)を用いてハードウェア構成要素と通信することができる。このようにして、命令セットアーキテクチャは、オペレーティングシステム302から見たハードウェア322を定義することができる。
オペレーティングシステム302は、複数のアプリケーションプログラム(A0〜An)306の間での物理メモリの分割を含むこともある、アプリケーションプログラム306の間での様々なメモリ314の割振りおよび使用の調整および制御を担当することができる。一態様では、オペレーティングシステム302は、様々なアプリケーションプログラム(A0〜An)306によるシステムメモリの割振りおよび使用を管理するための1つまたは複数のメモリ管理システム(たとえば仮想メモリマネージャなど)を含むことができる。メモリ管理システムは、1つのプロセスで使用されるメモリが別のプロセスですでに使用されているメモリと干渉しないことを保証するように機能することができる。
一態様では、オペレーティングシステム302は、オペレーティングシステム302が特定の物理アドレスを別のアドレス(すなわち仮想アドレス)のように見えるようにすることを可能にする「仮想アドレッシング」動作を実行するように構成された仮想メモリマネージャ(OS VMM)を含むことができる。仮想アドレッシング動作は、仮想メモリアドレスをアプリケーションプログラム(A0〜An)306に割り振ることを含むことができる。オペレーティングシステム302内に仮想メモリマネージャを含めることにより、複数のプロセスまたはアプリケーションプログラム(A0〜An)306の間のシステムメモリの調整および制御を簡略化することができる。
上述のソフトウェアベースのメモリ管理システム(たとえばOS VMMなど)に加えて、このシステムは、図3に示す中央処理装置(CPU)メモリ管理ユニット(MMU)316およびシステムMMU312など、1つまたは複数のハードウェアベースのメモリ管理システムも含むことができる。CPU MMU316およびシステムMMU312は、それぞれ、仮想アドレスから物理アドレスへの変換、キャッシュ制御、バスアービトレーション、およびメモリ保護など、様々なメモリ関連動作の実行を担当する1つまたは複数のハードウェア構成要素を含むことができる。一態様では、CPU MMU316が、アドレス変換サービスおよび保護機能性をメインCPU310に提供することを担当することができ、システムMMU312が、アドレス変換サービスおよび保護機能性を他のハードウェア構成要素(たとえばデジタル信号プロセッサ、モデムプロセッサ、グラフィックスプロセッサなど)に提供することを担当することができる。
様々な態様では、メモリ管理システム(たとえばシステムMMU312、CPU MMU316など)の1つまたは複数は、メモリアドレス変換(たとえば仮想アドレスから物理アドレスへの変換など)に使用することができるキャッシュメモリである、変換索引バッファ(TLB)を含むことができる。一態様では、変換索引バッファ(TLB)は、記憶された情報がキーバリューフォーマット(たとえばハッシュテーブル)に編成されるハードウェア連想アレイメモリとすることができる連想メモリ(CAM)とすることができる。キーを仮想アドレスとし、値を物理アドレスとすることができる。様々な態様では、変換索引バッファは、ハードウェア管理型であることも、ソフトウェア管理型であることも、またはハードウェアとソフトウェアの組合せによって管理されることもある。ハードウェア管理型変換索引バッファでは、変換索引バッファのエントリのフォーマットはソフトウェアには可視でないことがあり、したがって、中央プロセッサユニットのタイプによって異なることがある。
一般に、メモリアドレス変換プロセスの一部として、メモリ管理システム(たとえばOS VMM、システムMMU312、CPU MMU316など)は、連想メモリ検索を実行して、変換索引バッファにキーとして仮想アドレスを送ることによって、変換索引バッファに物理アドレスを要求することができる。仮想アドレスキーが変換索引バッファ中に対応する物理アドレス値を有する(すなわち「TLBヒット」が生じる)場合には、この連想メモリ検索で、その対応する物理アドレスを取り出し、戻すことができる。要求されたアドレスが変換索引バッファ中にない(すなわち「TLBミス」が生じる)場合には、メモリアドレス変換プロセスは、複数のメモリ位置の内容を読み取り、物理アドレスを計算することによって、ページウォーク(たとえばソフトウェアページウォーク、ハードウェアページウォークなど)を実行することができる。ページウォークによって物理アドレスが決定された後で、仮想アドレスから物理アドレスへのマッピングを、変換索引バッファに記憶することができる。
ソフトウェア管理型変換索引バッファを含む態様では、TLBミスによって、オペレーティングシステムがページテーブルをウォークし、ソフトウェアで変換を実行することがある。ハードウェア管理型変換索引バッファを含む態様では、メモリ管理システムは、ハードウェアテーブルウォークを実行して、指定された仮想アドレスキーに対して有効なページテーブルエントリが存在するかどうかを判定することができる。
様々な態様は、仮想化技法を利用するメモリ管理システムを提供する。仮想化技術は、オペレーティングシステムとハードウェアとの間に制御プログラム(たとえば仮想マシンモニタ「VMM」またはハイパーバイザ)を配置することによって実現することができる、コンピューティング資源の抽出(または仮想化)を可能にする。仮想化技法は、一般に、物理ハードウェアマシンのようにアプリケーションプログラムを実行するソフトウェアアプリケーションとすることができる仮想マシン(VM)中で実施される。仮想マシンは、アプリケーションプログラムと実行ハードウェアとの間のインターフェースを提供して、特定の命令セットアーキテクチャに結合されたアプリケーションプログラムが異なる命令セットアーキテクチャを実施するハードウェア上で実行されることを可能にする。
図4および図5は、仮想マシンを実装する代表的なコンピュータシステム中の論理構成要素を示す図である。仮想マシンは、大まかに2つのカテゴリ、すなわちシステム仮想マシンとプロセス仮想マシンとに分類することができる。システム仮想マシンは、その基礎をなす物理ハードウェアを異なるプロセスまたはアプリケーションの間で共用することを可能にする。一方、プロセス仮想マシンは、単一のプロセスまたはアプリケーションをサポートする。
図4は、プロセス仮想マシン410を実装するコンピューティングデバイス400の論理層を示す階層型アーキテクチャ図である。コンピュータシステム400は、ハードウェア408と、アプリケーションプロセスモジュール402、仮想化モジュール404、およびオペレーティングシステム406を含むソフトウェア構成要素とを含むことができる。
図3を参照して上述したように、ハードウェア構成要素は、オペレーティングシステム302を通してアプリケーションプログラム306にのみ可視であり、ABIおよびAPIは、アプリケーションプログラム306が利用可能なハードウェア機構を効果的に定義する。仮想化ソフトウェアモジュール404は、ABI/APIレベルの論理演算を実行し、かつ/あるいはアプリケーションプロセス402が他の場合にハードウェア構成要素と通信するのと同様の方法で(すなわちシステム/ライブラリコールを介して)仮想化ソフトウェアモジュール404と通信するように、オペレーティングシステムコールまたはライブラリコールをエミュレートすることができる。このようにして、アプリケーションプロセス402は、仮想化モジュール404と、オペレーティングシステム406と、ハードウェア408との組合せを、図4に示すプロセス仮想マシン410のような単一のマシンと見なす。これにより、アプリケーションソフトウェアを、アプリケーションが最終的に実行されることになるコンピューティングデバイスの実際のアーキテクチャと関連付ける必要がないので、アプリケーションデベロッパのジョブが簡略になる。
プロセス仮想マシン410は、単一のアプリケーションプロセス402をサポートするためにのみ存在するので、プロセス402によって作成され、プロセス402が実行を終了するときに終了される。仮想マシン410上で実行されるプロセス402は、「ゲスト」と呼ばれ、その基礎をなすプラットフォームは、「ホスト」と呼ばれる。プロセス仮想マシンを実装する仮想化ソフトウェア404は、通常、ランタイムソフトウェア(または単に「ランタイム」)と呼ばれる。
図5は、システム仮想マシン510を実装するコンピューティングデバイス500の論理層を示す階層型アーキテクチャ図である。このコンピュータシステムは、ハードウェア構成要素(たとえば実行ハードウェア、メモリ、I/Oデバイスなど)508と、アプリケーションプログラムモジュール502、オペレーティングシステム504、および仮想化モジュール506を含むソフトウェア構成要素とを含むことができる。仮想化モジュール506の上で実行されるソフトウェアは、「ゲスト」ソフトウェアと呼ばれ、仮想化モジュールをサポートする基礎をなすプラットフォームは、「ホスト」ハードウェアと呼ばれる。
プロセス仮想マシンとは異なり、システム仮想マシン510は、複数のオペレーティングシステム(「ゲストオペレーティングシステム」と呼ばれる)が共存することができる完全な環境を提供する。同様に、ホストハードウェアプラットフォームは、複数の、分離されたゲストオペレーティングシステム環境を同時にサポートするように構成することができる。同時に実行するオペレーティングシステムの間を分離することにより、あるレベルのセキュリティがシステムに追加される。たとえば、ゲストオペレーティングシステムにおけるセキュリティが侵害された場合、または1つのゲストオペレーティングシステムが故障した場合に、他のゲストシステム上で実行されるソフトウェアは、その侵害/故障の影響を受けない。ホストハードウェアプラットフォームも、アプリケーションソフトウェアをアプリケーションが最終的に実行されることになるコンピューティングデバイスの実際のアーキテクチャと関連付ける必要がないので、アプリケーションデベロッパのジョブを簡略にする。
仮想化ソフトウェアモジュール506は、ホストハードウェアとゲストソフトウェアとの間に論理的に位置づけることができる。仮想化ソフトウェアは、実際のハードウェア(ネイティブ)上、またはオペレーティングシステム(ホスト型)の上で実行することができ、通常は「ハイパーバイザ」または仮想マシンモニタ(VMM)と呼ばれる。固有構成では、仮想化ソフトウェアは、利用可能な最高の特権モードで実際のハードウェア上で実行され、ゲストオペレーティングシステムは、仮想化ソフトウェアが通常ハードウェア資源へのアクセスまたは操作を行うすべてのゲストオペレーティングシステムのアクションに割り込んで、それらをエミュレートすることができるように、より低い特権で実行される。ホスト型構成では、仮想化ソフトウェアは、既存のホストオペレーティングシステムの上で実行され、ホストオペレーティングシステムに依拠して、デバイスドライバおよび他のより低いレベルのサービスを提供することができる。いずれの場合も、ゲストオペレーティングシステムの各々(たとえばオペレーティングシステム504)は、物理ハードウェア508と通信する場合と同様の方法で仮想化ソフトウェアモジュール506と通信して、仮想化モジュール506とハードウェア508との組合せを単一の仮想マシン510と見なす。これにより、各ゲストオペレーティングシステム(たとえばオペレーティングシステム504)は、プロセッサ、周辺機器、I/O、MMU、およびハードウェア508内のメモリへの排他的アクセスを有するように錯覚して動作することができる。
図3を参照して上述したように、オペレーティングシステムは、複数のプロセス間での物理メモリの分割を担当することができる。これは、メモリアドレス空間変換プロセスによって実現することができる。メモリアドレス空間変換プロセスでは、オペレーティングシステムは、各アプリケーションプログラムに仮想アドレスを割り当て、次いで、そのプログラムの実行前に、それらの仮想アドレスに基づいて物理アドレスを割り振る。ただし、仮想マシンの上で動作するゲストオペレーティングシステムを含むシステムでは、ゲストオペレーティングシステムによって割り振られたメモリアドレスは、真の物理アドレスではなく、中間物理アドレスである。そのようなシステムでは、物理メモリの実際の割振りは、一般に、ハイパーバイザによって実行され、ハイパーバイザは、仮想アドレスと、中間物理アドレスと、物理アドレスとの間の関係を維持することを求められる可能性がある。
ほとんどのプロセッサシステムは、メモリアドレス変換プロセスの1つの段階しかサポートせず、仮想アドレスと、中間物理アドレスと、物理アドレスとの間の関係をハイパーバイザが管理することを必要とする。これは、一般に、ハイパーバイザが、ゲストオペレーティングシステムの変換テーブルの各々を解釈することによって導出することができる、それ自体の変換テーブル(シャドー変換テーブルと呼ばれる)を維持することによって実現される。そのようなシステム上では、ハイパーバイザは、ゲストオペレーティングシステムの変換テーブルのすべての変更がシャドー構造に反映されることを保証し、保護と、アクセス障害の適当な段階へのリダイレクトとを施行する。上述のように、これらの動作により、ハイパーバイザの複雑さが増し、ハイパーバイザの実行、維持、および/または管理に有意なオーバヘッドが追加される。
上述の1段階プロセッサとは異なり、いくつかのプロセッサシステム(たとえばARM v7-A)は、両方の段階のメモリ変換のハードウェア補助を提供する。たとえば、ARMプロセッサは、ゲストオペレーティングシステムが第1段階で仮想アドレスを中間物理アドレスに変換し(すなわち第1段階の変換)、ハードウェアが第2段階で中間物理アドレスを物理アドレスに変換する(すなわち第2段階の変換)ことを可能にする、仮想化拡張機能を含むことができる。このような仮想化拡張機能により、ハイパーバイザの実行、維持、および/または管理に関連するオーバヘッドが低減され、コンピューティングデバイスの性能が向上する。
図6は、システム仮想マシンを実装するコンピュータデバイス600における2段階のメモリ割振りに関連する、例示的な論理構成要素およびアドレス変換を示す図である。ゲストオペレーティングシステム610(たとえばHLOS)のメモリ管理システムは、アプリケーションプログラム/プロセス(A0、An)の各々に仮想アドレス空間602、604を割り当てることができる。たとえば、仮想アドレス空間602、604は、仮想メモリマネージャ(たとえばゲストOS VMM)に割り当てることができる。各アプリケーションプログラム/プロセス(A0、An)には、それ自体の仮想アドレス空間602、604を割り当てることができ、各仮想アドレス空間602、604は、1つまたは複数の仮想アドレスVA0616、VAn618を含むことができる。
図6に示す例では、メモリアドレスは、2段階で変換される。第1段階の変換612では、ゲストオペレーティングシステム610の仮想メモリマネージャ(ゲストOS VMM)は、仮想アドレスVA0616、VAn618を、中間物理アドレス空間606中の中間物理アドレスIPA0626、IPAn628にマッピングすることができる。第2段階の変換614では、ハイパーバイザおよび/または仮想化拡張機能は、中間物理アドレスIPA0626、IPAn628を、物理アドレス空間608中の物理アドレスPA0636、PAn638にマッピングすることができる。第1段階の変換612は、第2段階の変換614から独立して実行することができ、既存のシステムでは、第2段階の変換614を実行する構成要素は、メモリの特徴に基づいて物理アドレスを割り振らない。
図7は、ハイパーバイザがディセーブル状態である間にシステム仮想マシンを実装するコンピュータデバイス700における2段階のメモリ割振りに関連する、例示的な論理構成要素およびアドレス変換を示す図である。一態様では、ディセーブル状態である間、ハイパーバイザは、サンドボックスセッションが開始するまで、第2段階の変換708に従事しないことがある。たとえば、ゲストオペレーティングシステム(たとえばHLOS)のみがコンピューティングデバイス上で実行されているときには、サンドボックス化が必要ないこともある。したがって、様々な態様では、ハイパーバイザは、サンドボックス化が不要であると決定されたときには第2段階の変換に従事しないことによって、より効率的に機能することができる。
一態様では、ハイパーバイザがディセーブル状態である間に、第1段階の変換706で、HLOSは、図6を参照して上述したように、仮想アドレス空間710中の仮想アドレスを、そのHLOSの中間物理アドレス空間720中の中間物理アドレスにマッピングすることができる。たとえば、HLOSは、仮想アドレスVA0712およびVAn714を、それぞれ中間物理アドレスIPA0722およびIPAn724に変換/マッピングすることができる。別の例では、HLOS(またはHLOS上で動作するMMU)は、仮想アドレス空間710と中間物理アドレス空間720との間で第1段階の変換706を実行することにより、アプリケーションA0〜Anが使用する仮想メモリのブロックを割り振ることができる。
さらに別の態様では、ディセーブル状態である間に、ハイパーバイザは、第2段階の変換708による中間物理アドレス空間720から物理アドレス空間730への変換を実行しないこともある。この態様では、HLOSは、第2段階の変換708をバイパスすることができる。したがって、HLOSが第2段階の変換708をバイパスすることができるので、HLOSは、物理アドレス空間730から直接メモリを割り振ることができる。HLOSが第2段階の変換708をバイパスすることができるようにすることによって、ハイパーバイザは、中間物理アドレスが物理アドレスと等しくなることを保証する。したがって、一例では、中間物理アドレス空間720中のIPAn724は、物理アドレス空間730中のPAn734と等しい。同様に、中間物理アドレス空間720中のIPA0722は、物理アドレス空間730中のPA0732と等しい。
図8は、サンドボックスセッション中のコンピュータデバイス800における2段階のメモリ割振りに関連する、例示的な論理構成要素およびアドレス変換を示す図である。様々な態様では、ハイパーバイザは、サンドボックスセッションの開始を検出したのに応答してイネーブルにすることができる。
一態様では、サンドボックスセッションは、保護されたコンテンツからHLOSを隔離しなければならない状況とすることができる。保護されたコンテンツは、安全なアプリケーション、コンピューティングデバイス上で動作する第2のオペレーティングシステム、あるいは分離して処理または記憶する必要がある可能性がある他の任意のものを含み得る。たとえば、デジタル信号プロセッサ(すなわちDSP)は、処理を行うために安全なビデオ信号(すなわち保護されたコンテンツ)を受信することができる。この例では、安全なビデオ信号は、ビデオ信号の完全性および/またはセキュリティを維持するために、HLOSから分離して処理する必要があることがある。さらに別の態様では、安全なビデオ信号が分離して処理する必要があると決定したのに応答して、ARM TrustZone(登録商標)などのセキュリティモニタが、サンドボックスセッションが開始されたとハイパーバイザに警告することができる。この警告を受信したのに応答して、ハイパーバイザがイネーブルにされ、中間物理アドレス空間から物理アドレス空間への第2段階の変換の実施を再開することができる。
図8に示すように、サンドボックスセッションが開始され、ハイパーバイザがイネーブルにされると、ハイパーバイザは、第2段階の変換808および846を再開することができる。一態様では、保護されたコンテンツは、図6を参照して上述したHLOSがメモリを割り振る方法と同様に、第1段階の変換844および第2段階の変換846の両方を用いて処理することができる。たとえば、安全な環境(たとえば安全な仮想マシン内で動作するDSP)は、図2を参照して上述した安全なネットワークとの接続を介して、安全なビデオ信号を受信することができる。この例では、DSPは、受信した安全なビデオ信号を記憶するために、仮想アドレス空間850からDSP上で実行されるビデオ処理アプリケーションにメモリの1つまたは複数の4kbブロック(たとえばVACP852)を割り振ることができる。DSPは、第1段階の変換844を実行することによって、仮想アドレス空間850中のVACP852から中間物理アドレス空間860中の中間物理アドレスIPACP862へのマッピングを維持することもできる。
サンドボックスセッション中(すなわち安全な環境の中間物理アドレス空間860からのメモリ割振り中)には、HLOSも、メモリ割振りを実行することができる。ただし、ハイパーバイザがイネーブル状態であり、第2段階の変換808を再開しているので、HLOSは、物理アドレス空間830の全体から直接メモリを割り振る無制限の能力はもはや有していない。
したがって、一態様では、ハイパーバイザは、HLOSによる割振りに利用可能な物理アドレス空間830中の物理アドレスを制限することができる。言い換えれば、HLOSは、依然として物理アドレス空間830から直接メモリ割振りを実行することができるが、ハイパーバイザが、HLOSの物理アドレス空間830のいくつかの部分にアクセスする能力を制限する可能性がある。たとえば、HLOSは、仮想メモリVA0712およびVAn714を割り振ることができ、これらはそれぞれ第1段階の変換706の後、中間物理アドレス空間720中のIPA0722およびIPAn724にマッピングされる。さらに、IPA0722およびIPAn724は、依然として図7に示すようにPA0732およびPAn734にマッピングすることができるが、HLOSは、ハイパーバイザがディセーブル状態である間(すなわちHLOSが第2段階の変換808をバイパスすることができる間)は図7を参照して上述したように物理アドレス空間830の全体からメモリを割り振ることができるが、ハイパーバイザがイネーブル状態である間は、HLOSがアクセスできる物理アドレスがそれよりも小さなセットになる可能性がある。
ハイパーバイザがイネーブル状態であり、第2段階の変換808、846を実行している間は、ハイパーバイザは、以前にHLOSが利用することができた物理アドレスからサンドボックス化された構成要素にメモリを割り振ることができる。たとえば、ハイパーバイザは、IPACP862を、すでにHLOSが利用することができなくなっているPACP872にマッピングすることができる。したがって、イネーブル状態である間、ハイパーバイザは、たとえばサンドボックス化されたエンティティにメモリを割り振ることによって、ハイパーバイザがディセーブル状態である間にHLOSが利用することができる物理アドレスを「パンクチャ」することができる。HLOSの中間物理アドレス空間720から物理アドレス空間830への第2段階の変換808を実行する際に、ハイパーバイザは、物理アドレス空間830中の「パンクチャされた」物理アドレスを隠蔽することによって、HLOSがその「パンクチャされた」物理アドレスにアクセスすることを防止することができる。したがって、たとえば、ハイパーバイザがPACP872をサンドボックス化された構成要素に割り振った後で、HLOSは、その物理アドレスにアクセスできなくなる可能性がある。
HLOSが段階2変換808をバイパスしないようにすることによって、ハイパーバイザは、HLOS(と、したがってサンドボックス化された構成要素と)が最終的にアクセスできる物理アドレスを、再度管理することができる。したがって、ハイパーバイザは、隔離しなければならない複数のアプリケーション、プロセス、オペレーティングシステムなどがさらに存在するときに、とりわけ段階2変換を再開することによって(すなわち物理メモリへのアクセスを直接管理することによって)、サンドボックス化を開始することができる。
図9は、サンドボックスセッションおよび共用仮想メモリプロセスの間のコンピュータデバイス900における2段階のメモリ割振りに関連する、例示的な論理構成要素およびアドレス変換を示す図である。様々な態様では、ハイパーバイザは、共用エンティティ(たとえばDSP)とのサンドボックスセッションの開始を検出したのに応答してイネーブルにすることができ、HLOSおよび共用エンティティは、物理アドレス空間930中のいくつかの物理アドレスを共用することができる。
図11および図12を参照して以下に述べる態様では、コンピューティングデバイスは、HLOSとデジタル信号プロセッサ(DSP)との間などの共用仮想メモリセッションを開始することができる。さらに別の態様では、HLOSとDSPとの間の共用仮想メモリセッションは、物理アドレス空間930中の1組の物理アドレスのセットへのアクセスを共用するようにHLOSとDSPとを構成することを含むことができる。たとえば、HLOSおよびDSPは、HLOSおよびDSPがデータ構造、ルーチンなどを共用する必要があるときに、共用仮想メモリセッションを受けることができる。直接メモリアクセスを共用することにより、HLOSおよびDSPは、物理アドレス空間930に記憶された情報をコピーおよび送信する必要なく、情報を効率的に共用することができる。
図9に示すように、HLOSおよびDSPは、それぞれ仮想アドレス空間910、950中の仮想メモリ(すなわちVASVM1914およびVASVMn912)を、HLOSおよびDSP上で動作するアプリケーション、プロセスなどに割り振っている可能性がある。たとえば、HLOSおよびDSP上で動作するアプリケーションは、特定のデータ構造、機能、またはライブラリを共用することができる。HLOSおよびDSPは、それぞれ第1段階の変換906、944を実行して、仮想アドレスVASVM1914およびVASVMn912を、共用エンティティの中間物理アドレス空間960およびHLOSの中間物理アドレス空間920の各々のIPASVM1924およびIPASVMn922にマッピングすることができる。
別の態様では、ハイパーバイザは、サンドボックスセッションの開始に応答してイネーブルにされるので、中間物理アドレスをHLOSの中間物理アドレス空間920から物理アドレス空間930にマッピングする第2段階の変換908を起動することができる。ハイパーバイザは、共用エンティティの中間物理アドレス空間960の中間物理アドレスを物理アドレス空間930にマッピングする第2段階の変換946を起動することもできる。
一態様では、図8を参照して説明したように、HLOSの中間物理アドレス空間920および物理アドレス空間930からの第2段階の変換908をイネーブルにすることによって、ハイパーバイザは、HLOSがアクセスする物理アドレス空間930中の物理アドレスを制限することができる(すなわちHLOSが物理アドレス空間930中の一部の物理アドレスにアクセスできないようにそれらの物理アドレスへのマッピングを除去することができる)。図9に示すように、ハイパーバイザは、IPAHLOS926、IPASVM1924、およびIPASVMn922からそれぞれ物理アドレスPAHLOS936、PASVM1934、およびPASVMn932へのマッピング940を維持して、HLOSの中間物理アドレス空間920から物理アドレス空間930へのマッピング940が、中間物理アドレスが物理アドレスと等しくなることを保証するようにすることができる。同様に、ハイパーバイザは、とりわけ、共用エンティティの中間物理アドレス空間960中のIPASVM1924およびIPASVMn922からそれぞれ物理アドレス空間930中の物理アドレスPASVM1934およびPASVMn932への共用マッピング941を維持することもできる。
別の態様では、ハイパーバイザは、共用エンティティの「部分的」サンドボックス化を実施することができる。この態様では、ハイパーバイザは、HLOSから、共用エンティティに割り振られたそのHLOSと共用されていない物理アドレス(たとえばPAnon-SVM962)へのマッピングを除去することができる。共用エンティティおよびHLOSは、それぞれ、共用されていない物理アドレス空間中のメモリへのマッピングを維持することができる。たとえば、DSPは、たとえばDSPのカーネルとなり得るIPAnon-SVM923に関連する情報を維持することができる。別の例では、HLOSは、共用エンティティと共用されていない、PAHLOS936にマッピングされるHLOSの中間物理アドレス空間920中のIPAHLOS926のメモリを維持することができる。
ただし、ハイパーバイザは、HLOSから、共用エンティティに割り振られているがHLOSと共用されていない物理アドレス(たとえばIPASVM1924、およびIPASVMn922)へのマッピングを除去しないこともある。これらのマッピングを除去しないことによって、ハイパーバイザは、HLOSと共用エンティティとが、データ構造、ライブラリ、ルーチンなどを指すポインタなど、これらの物理アドレスに記憶された情報を共用することを可能にすることができる。
したがって、HLOSの中間物理アドレス空間920から、第2段階の変換908から除去された物理アドレス空間930へのマッピングを管理することによって、ハイパーバイザは、HLOSと共用エンティティとが、特定の物理アドレスに記憶された情報を共用することができるようにすることができ、共用されていないアドレス(たとえばPAnon-SVM962およびPAHLOS936)のアクセス制御を依然として施行することができる。
図10は、サンドボックスセッション中にハイパーバイザを選択的にイネーブルにするためにコンピューティングデバイスのプロセッサ(たとえばCPU)で実施することができる一態様による方法1000を示す図である。ブロック1002で、コンピューティングデバイスのプロセッサは、ハイパーバイザ、セキュリティモニタ、およびHLOSを初期化することができる。一態様では、コンピューティングデバイスのプロセッサは、Linaro ARMv8セキュアブートフローおよびXenスタイルのグラントテーブルを用いてハイパーバイザ、セキュリティモニタ、およびHLOSをブートすることによって、ハイパーバイザ、セキュリティモニタ、およびHLOSを初期化することができる。別の態様では、セキュリティモニタは、ARM TrustZone(登録商標)とすることができる。
さらに別の態様では、ハイパーバイザのコードおよびデータは、初期化中に、セキュリティモニタによって認証および/またはサインすることができる。初期化中に、ハイパーバイザを、そのコードおよびデータにデジタル信号プロセッサ(DSP)またはDSPに含まれるCPUなどの外部プロセッサがアクセスできないように構成することもできる。別の態様では、ハイパーバイザを認証すること、ならびに/またはハイパーバイザがイネーブルである間は外部プロセッサがハイパーバイザのコードおよびデータにアクセスすることを防止することによって、将来のサンドボックスセッションが安全になることを保証することができる。
任意選択の判定ブロック1004で、コンピューティングデバイスのプロセッサは、共用仮想メモリを用いた同時異種計算セッションがあるかどうかを判定することができる。一態様では、HLOSと共用エンティティ(たとえばDSP)とは、複雑な、ポインタを含むデータ構造を共用することができる。コンピューティングデバイスのプロセッサは、共用仮想メモリを用いた同時異種計算セッションの状況が存在すると判定した場合(すなわち判定ブロック1004=「Yes」である場合)には、ブロック1006で、その共用仮想メモリを用いた同時異種計算セッションをセットアップすることができる。一態様では、HLOSおよびDSPは、たとえば、同じ第1段階のページテーブルを共用するように構成することができる。共用仮想メモリを用いた同時異種計算セッションのセットアップについては、以下で図11および図12を参照して詳細に述べる。コンピューティングデバイスのプロセッサは、引き続きブロック1008の動作に進むことができる。コンピューティングデバイスのプロセッサは、共用仮想メモリを用いた同時異種計算セッションがないと判定した場合(すなわち任意選択の判定ブロック1004=「No」である場合)にも、引き続きブロック1008の動作に進むことができる。
ブロック1008で、コンピューティングデバイスのプロセッサは、ハイパーバイザをディセーブルにすることができる。一態様では、ハイパーバイザのデフォルト状態を、ディセーブルにすることができる。別の態様では、ハイパーバイザをディセーブルにすることで、中間物理アドレス空間から物理メモリアドレス空間への第2段階の変換がディセーブルになることがある。ハイパーバイザをディセーブルにすることの他の結果としては、ハードウェア割込み、ハードウェアタイマ、および入出力へのHLOSのアクセス制限を止めることが含まれ得る。ハイパーバイザをディセーブルにすることについては、図13を参照して以下でさらに説明する。
ブロック1009で、コンピューティングデバイスのプロセッサは、サンドボックスセッションを開始するためにハイパーバイザで受信された信号がないか監視することができる。一態様では、セキュリティモニタ(たとえばARM TrustZone(登録商標))が、保護されたコンテンツを受信または検出し、サンドボックスセッションを開始するためにウェイクアップ信号をハイパーバイザに送ることができる。たとえば、安全な仮想環境内で動作するDSPが、安全なビデオ信号を受信して安全な処理を行うことができる。この例では、DSPは、たとえば物理メモリアドレス空間のうちHLOSがアクセスできない部分にビデオ信号を記憶するように構成することができる。
判定ブロック1010で、コンピューティングデバイスのプロセッサは、ハイパーバイザがサンドボックスセッションを開始するための信号を受信したかどうかを判定することができる。コンピューティングデバイスのプロセッサは、ハイパーバイザがサンドボックスセッションを開始するための信号を受信していないと判定した場合(すなわち判定ブロック1010=「No」である場合)には、引き続きブロック1009の動作に進むことができる。一態様では、コンピューティングデバイスのプロセッサは、引き続きハイパーバイザがサンドボックスセッションを開始するための信号がないか監視することができる。
コンピューティングデバイスのプロセッサは、ハイパーバイザがサンドボックスセッションを開始するための信号を受信したと判定した場合(すなわち判定ブロック1010=「Yes」の場合)には、ブロック1012で、ハイパーバイザをイネーブルにすることができる。一態様では、ハイパーバイザをイネーブルにすることは、第2段階の変換を再開することを含むことがある。ハイパーバイザをイネーブルにすることについては、図14および図15を参照して以下でさらに詳細に説明する。
ハイパーバイザは、次いで、ブロック1014でアクセス制御を実施することができる。一態様では、ハイパーバイザは、中間物理アドレスから物理アドレスへの第2段階の変換を実行することによって、アクセス制御を実施することができる。さらに別の態様では、ハイパーバイザは、さらに、I/O、ハードウェア割込み、およびハードウェアタイマへのアクセス制限を再開することによって、アクセス制御を実施することができる。アクセス制御を実施するプロセスについては、図16Aおよび図16Bを参照して以下でさらに詳細に説明する。
判定ブロック1016で、ハイパーバイザは、サンドボックスセッションが終了したかどうかを判定することができる。たとえば、HLOSあるいは他のプロセス、アプリケーション、または構成要素から守らなければならない、または隔離しなければならないコンテンツがないときに、サンドボックスセッションは終了することができる。たとえば、上記に挙げた例では、DSPが安全なビデオ信号を受信したときに開始されたサンドボックスセッションは、DSPがその安全なビデオ信号の処理を終わり、そのビデオ信号のビデオバッファを物理メモリ内に記憶しておく必要がなくなった後で、終了することができる。別の態様では、セキュリティモニタ、または安全な仮想環境内の別の構成要素が、サンドボックスセッションが終了したことをハイパーバイザに信号通信することができる。
サンドボックスセッションが終了していない場合(すなわち判定ブロック1016=「No」の場合)には、ハイパーバイザは、ブロック1014で、引き続き動作を実行することができる。それ以外の場合(すなわち判定ブロック1016=「Yes」の場合)には、ハイパーバイザは、ブロック1018で、サンドボックスセッションをティアダウンすることができる。一態様では、ハイパーバイザは、サンドボックスセッションティアダウン手順を実行した結果として、HLOSおよびコンピューティングデバイスの様々な他の構成要素を、「デフォルト」状態または構成に戻すことができる。サンドボックス化セッションのティアダウンについては、図17を参照して以下でさらに詳細に説明する。コンピューティングデバイスは、引き続きブロック1008の動作を実行することができる。
図11は、同時異種計算セッションを開始するためのコンピューティングデバイスの様々な構成要素の間の信号およびコールの一態様によるフローを示す図である。一態様では、動作1112で、HLOS1102は、第1段階の変換テーブルを作成することができる。HLOS1102は、動作1114で、HLOSの仮想マシン識別子(すなわち「HLOS_VMID」)中の特定用途向け識別子(ASID)を割り振ることができる。別の態様では、ハイパーバイザ1104は、デジタル信号プロセッサ(DSP)の第2段階のシステムメモリ管理ユニット(SMMU)1106に信号1116を送って、HLOSのHLOS_VMIDを用いて第2段階の変換テーブルを作成することができる。一態様では、DSPの第2段階のSMMUは、第2段階の変換テーブルを使用して、HLOSの中間物理アドレス空間から物理アドレス空間への第2段階の変換を実行することができる。
一態様では、HLOSは、DSPのハイパーバイザ1108に信号1118を送って、HLOSのHLOS_VMID、選択された特定用途向け識別子、および第1段階の変換テーブルを用いた共用仮想メモリ(SVM)プロセスの作成を要求することができる。DSPのハイパーバイザ1108は、DSPのメモリ管理ユニット(MMU)の第1段階の変換テーブルをプログラムする信号1120によってDSPの共用仮想メモリプロセス1110を開始することができ、次いで、DSPの共用仮想メモリプロセス1110を開始する。
図12は、HLOSとDSPとの間の共用仮想メモリプロセスを開始するためにコンピューティングデバイスで実施することができる一態様による方法1006aを示す図である。コンピューティングデバイスのプロセッサは、そのプロセッサが共用仮想メモリを用いた同時異種計算セッションがあると判定したとき(すなわち判定ブロック1004=「Yes」のとき)に、方法1006aを開始することができる。ブロック1204で、コンピューティングデバイスのプロセッサは、HLOSを、第1段階の変換テーブルを作成するように構成することができる。一態様では、HLOSは、第1段階の変換テーブルを使用して、仮想アドレスを中間物理アドレスにマッピングすることができる。コンピューティングデバイスは、ブロック1206で、HLOSを、HLOSの仮想マシン識別子(すなわちHLOS_VMID)中の特定用途向け識別子を割り振るように構成することもできる。
ブロック1208で、コンピューティングデバイスは、HLOS_VMIDに基づく第2段階の構成をDSPの第2段階のSMMUに送るようにハイパーバイザを構成することができる。一態様では、DSPの第2段階のSMMUは、HLOS_VMIDに基づいてHLOS用の第2段階の変換テーブルを作成することができる。SMMU(またはハイパーバイザ)は、この第2段階の変換テーブルを使用して、HLOSの中間物理アドレス空間からコンピューティングデバイスの物理メモリアドレス空間への第2段階の変換を実行することができる。
ブロック1210で、コンピューティングデバイスは、DSPのハイパーバイザが、HLOS_VMID、選択されたASID、およびHLOSの第1段階の変換テーブルを用いて共用仮想メモリプロセスを作成することを要求するように、HLOSを構成することができる。
コンピューティングデバイスは、ブロック1212で、第1段階のメモリ管理ユニット(MMU)をプログラムし、共用仮想メモリプロセスを開始するように、DSPのハイパーバイザを構成することもできる。一態様では、DSPの第1段階のMMUは、HLOSの第1段階の変換テーブルと同じである第1段階の変換テーブルを開始することができる。したがって、この態様では、HLOSとDSPとは、同じ第1段階の変換テーブルを共用するので、仮想メモリを共用することができる。
ブロック1212で共用仮想メモリプロセスが完了したら、コンピューティングデバイスのプロセッサは、サンドボックスセッションが必要ない場合には、図10を参照して上述したように、ブロック1008でハイパーバイザをディセーブルにすることができる。
図13は、コンピューティングデバイス上のハイパーバイザをディセーブルにする一態様による方法1008aを示す図である。
ブロック1304で、ハイパーバイザは、すべてのSMMUの第1段階のコンテキストバンクを、第2段階の変換をバイパスするように構成することができる。ハイパーバイザは、ブロック1306で、HLOSの第2段階の変換をオフにすることもできる。
いくつかの態様では、ハイパーバイザは、ディセーブルになったときに、様々な他のアクティビティを中断することができる。たとえば、ハイパーバイザは、任意選択のブロック1308で、必要に応じてI/Oアクセスを制限することを中断することができる。ハイパーバイザは、任意選択のブロック1310で、ハードウェア割込みアクセスを制限することを中断することもできる。さらに、任意選択のブロック1312で、ハイパーバイザは、ハードウェアタイマアクセスを制限することを中断することもできる。
ハイパーバイザは、図10を参照して上述したように、判定ブロック1010で、サンドボックスセッションを開始するための信号をハイパーバイザが受信したかどうかを判定することができる。
いくつかの態様では、様々なハイパーバイザの機能(たとえばアクセス制御、メモリのサンドボックス化など)を、集積回路の境界および/またはチップの境界を越えてディセーブルにすることができる。一態様では、別個のチップセット(たとえばモデムチップおよびアプリケーションプロセッサチップ)を含むフュージョンライクの(fusion-like)チップセットの組合せにおいて、マスタチップセット(すなわちマスタハイパーバイザ)は、ハイパーバイザの機能性がディセーブルにされているときに、他のチップセットにおけるメモリのサンドボックス化または他のアクセス制御を中断することができる。たとえば、アプリケーションプロセッサチップセット中のマスタハイパーバイザが、モデムまたはDSPチップセットにおける中間物理アドレスから物理アドレスへの第2段階の変換を中断することができる。したがって、ハイパーバイザの機能がディセーブルされたときに、マスタハイパーバイザは、いくつかの別個のチップにおいてこれらの機能を中断することができる。
図14は、コンテンツが保護されたビデオ信号のためのサンドボックスセッションをセットアップする間にコンピューティングデバイス上で動作する複数の構成要素間のコールのフロー1400を示す図である。様々な態様では、ビデオバッファ用のページは、4kbページとすることができ、HLOSの第2段階の変換ページテーブルを断片化することができる。
一態様では、信号1402を、Android MMフレームワーク1450、OpenMax(OMX)構成要素1452、V4L2ビデオドライバ1454、カーネルページアロケータ1456、ハイパーバイザ1458、SMMU1460、およびコア1462などの様々な構成要素に送って、セキュリティ認証を有するファームウェアを初期化することができる。一態様では、このセキュリティ認証は、ARM TrustZone(登録商標)とすることができる。別の態様では、ビデオがDSP上にある場合には、コンピューティングデバイスは、DSPビデオアプリケーションおよびコーデックをロードすることができる。
一態様では、Android MMフレームワーク1450は、OMX構成要素に信号1404を送って、これを初期化することができる。OMX構成要素1452は、信号1406を送って、V4L2ビデオドライバ1454にコーデックを設定することができる。OMX構成要素1452は、V4L2ビデオドライバ1454にバッファサイジング問合せ信号1408を送ることもできる。Android MMフレームワーク1450は、OMX構成要素1452にアイドリング信号1410を送ることもできる。
別の態様では、OMX構成要素1452は、ストリームオン入力信号1412を、V4L2ビデオドライバ1454に送ることができる。V4L2ビデオドライバ1454は、ホストファームウェアインターフェース(HFI)セッション初期化信号1414を、コア1462に送ることができる。コア1462は、「HFIセッション終了」信号1416をV4L2ビデオドライバ1454に送ることによって、HFIセッション初期化信号1414に応答することができる。
Android MMフレームワークは、メモリ割振り信号1418(すなわち「loctl ION_IOC_ALLOC」)を、OMX構成要素1452に送ることができる。別の態様では、Android MMフレームワークは、メモリ割振り信号1418を送って、ページプールを管理することができる。OMX V4L2ビデオドライバ1454は、「Ion_alloc(ION cp heap)」信号1420を、カーネルページアロケータ1456に送ることができる。
カーネルページアロケータ1456は、次いで、VMM_CALL信号1422をハイパーバイザ1458に送って、プロセッサの第2段階のマッピングを除去することができる。一態様では、この信号1422は、ハイパーバイザに、サンドボックスセッションが開始したこと、および特定の物理メモリ位置をHLOSがアクセスできる物理アドレスから除去しなければならないことを通知することができる。さらに別の態様では、ハイパーバイザ1458は、第2段階の変換マッピング信号1424をSMMU1460に送ることができる。一態様では、SMMUは、これらの第2段階の変換を実施することができる(すなわち、SMMUは、第2段階の変換を再開することができる)。さらに別の態様では、SMMUは、HLOSからアクセス可能な物理アドレスへのマッピング(すなわちHLOSから隠されていない物理アドレスへのマッピング)を維持することができる。さらに別の態様では、ビデオがDSP上にある場合には、カーネルページアロケータ1456は、さらに、DSPの第2段階の変換マッピングにページをマッピングするようにハイパーバイザ1458に信号通信することができる。
別の態様では、V4L2ビデオドライバ1454は、ホストファームウェアインターフェースセットバッファ1426をコア1462に送ることができ、すべてのバッファの準備ができたことをAndroid MMフレームワークに対して示すアイドル信号1428を送ることができる。Android MMフレームワーク1450は、次いで、OMX構成要素に実行に移行するように信号通信する(1430)ことができる。Android MMフレームワーク1450は、ヘッダによって第1のバッファをキューイングするための信号1432をOMX構成要素1452に送ることもできる。OMX構成要素1452は、ヘッダによって第1のバッファをキューイングするために、信号1434をV4L2ビデオドライバ1454に送ることもできる。
V4L2ビデオドライバ1454は、カーネルページアロケータ1456に、第1のバッファをコア1462にマッピングするための信号1436を送ることができる。カーネルページアロケータ1456は、第1のバッファを第1段階の変換入力コンテキストバンクにマッピングするために、信号1438をSMMU1460に送ることができる。V4L2ビデオドライバ1454は、ヘッダによって第1のバッファをキューイングする信号1440を、コア1462に送ることもできる。
図15は、ハイパーバイザがイネーブルにするために(すなわち図10を参照して上述したブロック1010でハイパーバイザがディセーブルにされた後で)コンピューティングデバイスで実施することができる一態様による方法1012aを示す図である。ブロック1504で、コンピューティングデバイスは、HCR."VM"を「1」に設定することにより、PL0およびPL1(すなわち特権レベル1および特権レベル2)の第2段階のMMUをイネーブルにすることができる。ブロック1506で、コンピューティングデバイスは、割込み要求(「IRQ」)をハイパーバイザモードで受けられるように構成することができる。一態様では、コンピューティングデバイスは、SCR.IMOを「1」に設定することによってこれを実施することができる。
コンピューティングデバイスは、ブロック1508で、SMMUドライバを呼び出して、すべてのアクティブなSMMUコンテキストバンクを、第1段階の変換が第2段階の変換とネストされた状態にすることもできる。コンピューティングデバイスは、SMMU_CBARn.type要素を「0b11」に設定することによって、この状態を設定することができる。
一態様では、これらのステップが実施されたら、図10を参照して上述したように、ブロック1012で、ハイパーバイザをイネーブルにすることができる。ハイパーバイザは、ブロック1012でイネーブルにされた後で、任意選択のブロック1510で、必要に応じてDSPとのプロセッサ間通信(IPC)を開始することができる。ハイパーバイザは、任意選択のブロック1512で、必要に応じてSMMU障害を処理することもできる。
いくつかの態様では、ハイパーバイザは、イネーブルにされたときに、様々な他のアクティビティを再開することができる。たとえば、ハイパーバイザは、任意選択のブロック1514で、I/Oアクセスの制限を再開することができる。ハイパーバイザは、ブロック1516で、ハードウェア割込みアクセスの制限を再開することもできる。ブロック1518で、ハイパーバイザは、さらにハードウェアタイマアクセスの制限を再開することもできる。
コンピューティングデバイスのプロセッサは、次いで、図10を参照して上述したように、ブロック1014でアクセス制御を実施することができる。
いくつかの態様では、様々なハイパーバイザの機能(たとえばアクセス制御、メモリのサンドボックス化など)を、集積回路の境界および/またはチップの境界を越えてイネーブルにすることができる。図13に関連して上述したように、一態様では、マスタチップセット(すなわちマスタハイパーバイザ)は、たとえば周辺構成要素エクスプレスインターフェースを介して他のチップセットのメモリのサンドボックス化を制御することができる。たとえば、アプリケーションプロセッサチップセットのマスタハイパーバイザが、モデムまたはDSPチップセットにおける中間物理アドレスから物理アドレスへの変換を制御することができる。したがって、ハイパーバイザの機能がイネーブルにされたときに、マスタハイパーバイザは、いくつかの別個のチップにまたがってそれらの機能を実行することができる。
図16Aおよび図16Bは、サンドボックスセッション中に第2段階の変換を実行するためにコンピューティングデバイスのプロセッサ上で実施することができる、一態様による方法を示す図である。様々な態様では、ハイパーバイザは、様々な構成要素(たとえばHLOSまたはDSP)がアクセスすることができる物理メモリアドレス空間中の位置を管理することができる。
図16Aは、サンドボックスセッション中にハイパーバイザがメモリを割り振るための一態様による方法1014aを示す図である。図10を参照して上述したように、ブロック1012で、ハイパーバイザがイネーブルにされたときに。
ハイパーバイザは、任意選択の判定ブロック1604で、共用仮想メモリ状況が現在存在するかどうかを判定することができる。一態様では、共用仮想メモリ状況は、たとえばHLOSが別の構成要素と仮想メモリを共用しているときに存在することができる。共用仮想メモリ状況が発生している場合(すなわち判定ブロック1604=「Yes」)には、ハイパーバイザは、図16Bを参照して以下に述べる方法1014bを実行することができる。それ以外の場合(すなわち判定ブロック1604=「No」)の場合には、ハイパーバイザは、ブロック1608で、メモリを割り振ろうとする試みがないかどうか監視することができる。ハイパーバイザは、判定ブロック1610で、HLOSがメモリを割り振ろうと試みているかどうかを判定することができる。一態様では、HLOSは、現在HLOS上で動作しているアプリケーションまたはプロセスにメモリを割り振ろうと試みることができる。たとえば、HLOSは、アプリケーションに対して、そのアプリケーションによってアクセスされる仮想アドレス空間を作成することによって、メモリを割り振ることができる。プロセッサが、HLOSがメモリを割り当てようと試みていると判定した場合(すなわち判定ブロック1610=「Yes」の場合)には、ハイパーバイザは、ブロック1612で、HLOSがアクセスできる物理メモリアドレス空間から、HLOSに物理アドレスを提供することができる。一態様では、物理アドレスの一部がHLOSの第2段階の変換マッピングから除去され、保護されたコンテンツに割り振られる可能性があるので、HLOSは、物理アドレス空間への自由アクセスを有していないことがある。たとえば、HLOSは、4kbビデオバッファを記憶するためにDSPに割り振られた物理アドレスへのマッピングを有していないことがある。ハイパーバイザは、次いで、図10を参照して上述した判定ブロック1016で、サンドボックスセッションが終了したかどうかを判定することができる。
HLOSがメモリを割り振ろうと試みていない場合(すなわち判定ブロック1610=「No」の場合)には、ハイパーバイザは、判定ブロック1611で、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定することができる。たとえば、ハイパーバイザは、安全なビデオ信号を処理しているDSPが物理メモリに4kbビデオバッファを記憶しようと試みているかどうかを判定することができる。サンドボックス化された構成要素がメモリを割り振ろうと試みていない場合(すなわち判定ブロック1611=「No」の場合)には、ハイパーバイザは、図10を参照して上述した判定ブロック1016で、サンドボックスセッションが終了したかどうかを判定することができる。
ハイパーバイザが、サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定した場合(すなわち判定ブロック1611=「Yes」の場合)には、ハイパーバイザは、ブロック1614で、HLOSがアクセスできる物理アドレス空間内の物理アドレスから、サンドボックス化された構成要素に提供される物理アドレスを除去することができる。ハイパーバイザは、ブロック1616で、物理アドレス空間内の利用可能な物理アドレスから、サンドボックス化された構成要素に物理アドレスを提供することもできる。一態様では、利用可能な物理アドレスは、HLOSに割り振られていない物理アドレス空間内の物理アドレスとすることができる。言い換えれば、利用可能な物理アドレスは、「空き」のメモリアドレスである。一態様では、ハイパーバイザが物理アドレス空間内のメモリをサンドボックス化された構成要素による使用のために割り振ったら、HLOSは、サンドボックスセッション中に、その物理メモリへのアクセスを有さなくなる可能性がある。たとえば、安全なビデオのための4kbビデオバッファが特定の物理アドレスに記憶されたら、HLOSは、その物理アドレスへのマッピングを有さなくなる可能性がある(すなわち、HLOSからは、それに割り振られた物理アドレスが「見え」なくなる可能性がある)。ハイパーバイザは、次いで、図10を参照して上述した判定ブロック1016で、サンドボックスセッションが終了したかどうかを判定することができる。
図16Bは、HLOSが別の構成要素と仮想メモリを共用している間に(すなわち判定ブロック1604=「Yes」のときに)サンドボックスセッション中にメモリを割り振るためにハイパーバイザで実施することができる、一態様による方法1014bを示す図である。判定ブロック1624で、ハイパーバイザは、HLOSが物理アドレスを割り振ろうと試みているかどうかを判定することができる。たとえば、HLOSは、HLOS上で実行されるアプリケーションによる使用のために、物理アドレス空間中の特定の物理アドレスを割り振ろうと試みている可能性がある。ハイパーバイザが、HLOSが物理アドレスを割り振ろうと試みていると判定した場合(すなわち判定ブロック1624=「Yes」の場合)には、ハイパーバイザは、ブロック1612で、HLOSがアクセスできる物理メモリアドレス空間中の物理アドレスから、HLOSに物理アドレスを提供することができる。図16Aを参照して上述した態様では、物理アドレスは、たとえばHLOSがそれらの物理アドレスを割り振ることをハイパーバイザが許可しているときに、HLOSからアクセス可能である可能性がある。言い換えれば、HLOSがアクセスできる物理アドレスは、サンドボックス化された構成要素に割り振られておらず、HLOSから隠されていない。HLOSに物理アドレスを割り振った後で、ハイパーバイザは、図10を参照して上述した判定ブロック1016で、サンドボックスセッションが終了したかどうかを判定することができる。
ハイパーバイザが、HLOSが物理アドレスを割り振ろうと試みていないと判定した場合(すなわち判定ブロック1624=「No」の場合)には、ハイパーバイザは、判定ブロック1626で、サンドボックス化された構成要素が物理アドレスを割り振ろうと試みているかどうかを判定することができる。たとえば、サンドボックス化された構成要素内で動作するDSPが、4kbビデオバッファを記憶するために特定の物理ドレスにアクセスしようと試みる可能性がある。ハイパーバイザが、サンドボックス化された構成要素が物理アドレスを割り振ろうと試みていると判定した場合(すなわち判定ブロック1626=「Yes」の場合)には、ハイパーバイザは、ブロック1628で、HLOSがアクセスできる物理メモリアドレス空間中のPAから、サンドボックス化された構成要素に提供される物理アドレスを除去することができる。一態様では、サンドボックス化された構成要素に割り振られる物理アドレスを、HLOSから隠すことができる。言い換えれば、ハイパーバイザは、HLOSからサンドボックス化された構成要素に割り振られる物理アドレスへの第2段階のマッピングを除去することができる。ハイパーバイザは、ブロック1632で、物理アドレス空間中の利用可能な物理アドレスから、サンドボックス化された構成要素に物理アドレスを提供することもできる。一態様では、利用可能な物理アドレスは、ハイパーバイザがHLOSによる使用のために取り置いていない物理アドレス(すなわち物理アドレス空間中の「空き」の物理アドレス)を含むことができる。物理アドレスをサンドボックス化された構成要素に割り振った後で、ハイパーバイザは、図10を参照して上述した判定ブロック1016で、サンドボックスセッションが終了したかどうかを判定することができる。
ハイパーバイザが、サンドボックス化された構成要素が物理アドレスを割り振ろうと試みていないと判定した場合(すなわち判定ブロック1626=「No」の場合)には、ハイパーバイザは、判定ブロック1630で、共用エンティティが物理アドレスを割り振ろうと試みているかどうかを判定することができる。一態様では、共用エンティティは、HLOSと仮想メモリを共用している、コンピューティングデバイス上で動作する構成要素とすることができる。別の態様では、HLOSと別のエンティティとが、物理アドレスを指すポインタを共用することによって、仮想メモリを共用することができる。言い換えれば、HLOSと共用エンティティとは、物理メモリアドレス空間中の同じ物理アドレスにアクセスする、またはこれらを割り振ることができる可能性がある。
ハイパーバイザが、共用エンティティが物理アドレスを割り振ろうと試みていないと判定した場合(すなわち判定ブロック1630=「No」の場合)には、ハイパーバイザは、図10を参照して上述した判定ブロック1016で、サンドボックスセッションが終了したかどうかを判定することができる。それ以外の場合(すなわち判定ブロック1630=「Yes」の場合)には、ハイパーバイザは、判定ブロック1632で、共用エンティティが共用物理アドレスを割り振ろうと試みているかどうかを判定することができる。言い換えれば、ハイパーバイザは、共用エンティティが、HLOSと共用される物理アドレスの利用、変更、アクセス、割振り、あるいはその他の読取りまたは書込みを試みているかどうかを判定することができる。
ハイパーバイザが、共用エンティティが共用物理アドレスを割り振ろうと試みていると判定した場合(すなわち判定ブロック1632=「Yes」の場合)には、ハイパーバイザは、ブロック1636で、共用物理アドレスを共用エンティティに提供することができる。一態様では、HLOSは、共用物理アドレスにアクセスし、これらを割り振ることもできる。言い換えれば、ハイパーバイザは、共用エンティティに割り振られる共用物理アドレスを、HLOSから隠さないこともある。ハイパーバイザは、図10を参照して上述した判定ブロック1016で、サンドボックスセッションが終了したかどうかを判定することができる。
それ以外の場合には、ハイパーバイザが、共用物理アドレスを割り振ろうと試みていないと判定した場合(すなわち判定ブロック1632=「No」の場合)には、ハイパーバイザは、ブロック1634で、共用エンティティに提供される物理アドレスを、HLOSがアクセスできる物理メモリアドレス空間中の物理アドレスから除去することができる。ブロック1638で、ハイパーバイザは、物理アドレス空間中の利用可能な物理アドレスから、共用エンティティに物理アドレスを提供することができる。一態様では、共用エンティティがHLOSと共用されている物理アドレスにアクセスしていないときには、ハイパーバイザは、共用エンティティを上述のようにサンドボックス化された構成要素として扱うことができる。物理アドレスを割り振った後で、ハイパーバイザは、図10を参照して上述した判定ブロック1016で、サンドボックスセッションが終了したかどうかを判定することができる。
図17は、セッションティアダウンを実行するためにハイパーバイザで実施することができる一態様による方法1018aを示す図である。ハイパーバイザが、サンドボックスセッションが終了したと判定したとき(すなわち判定ブロック1016=「Yes」のとき)には、ハイパーバイザは、ブロック1704で、すべてのサンドボックス化された構成要素のバッファを解放することができる。たとえば、ハイパーバイザは、物理メモリアドレス空間中の様々な物理アドレスに記憶された4kbビデオバッファを解放することができる。一態様では、これらのバッファを解放することにより、ハイパーバイザは、これらのアドレスをHLOSからアクセス可能になるように準備することができる。
ブロック1706で、ハイパーバイザは、第2段階の変換ページテーブルを復元して、すべての断片化を解消することができる。一態様では、ハイパーバイザは、メモリ割振りによってサンドボックス化された構成要素にパンクチャされていた可能性がある物理アドレス空間中の物理アドレスを復元することができる。別の態様では、ハイパーバイザは、ハイパーバイザがサンドボックス化された構成要素に割り振った後で隠した物理アドレスにHLOSがアクセスすることを可能にする可能性がある第2段階のマッピングを追加することができる。ハイパーバイザは、図10を参照して上述したように、ブロック1008でディセーブルにすることもできる。したがって、一態様では、セッションティアダウン手順を実行した後で、ハイパーバイザは、HLOSを、物理メモリアドレス空間の全体から直接メモリを割り振ることができる位置に戻すことができ、次いでディセーブルにすることができる。
これらの様々な態様とともに使用するのに適した典型的なコンピューティングデバイス1800は、共通して、図18に示す構成要素を有する。たとえば、典型的なコンピューティングデバイス1800は、内部メモリ1801、ディスプレイ1803、およびスピーカ1864に結合されたプロセッサ1802を含むことができる。さらに、コンピューティングデバイスは、プロセッサ1802に結合された、電磁放射を送り、受信するためのアンテナ1804を有することもできる。いくつかの態様では、コンピューティングデバイス1800は、複数のシステムオンチップを含むことができる1つまたは複数の特殊目的または汎用プロセッサ1805、1824を含むことができる。コンピューティングデバイスは、また、通常は、ユーザ入力を受け取るためのキーパッドまたは小型キーボード(図示せず)と、メニュー選択ボタン1808a、1808bとを含む。コンピューティングデバイスは、コンピューティングデバイスを電源オンおよび電源オフにする電源ボタン1834も含むことができる。
図19に示すラップトップコンピュータ1900など、他の形態のコンピューティングデバイスも、これらの様々な態様を実施し、それらの恩恵を受けることができる。ラップトップコンピュータ1900のようなコンピューティングデバイスは、通常は、内部メモリ1901およびディスクドライブ1905またはフラッシュメモリなどの大容量不揮発性メモリに結合されたプロセッサ1902と、ディスプレイ1909とを含む。コンピューティングデバイスは、ユーザ入力を受け取るための、キーボード1908および選択ボタン1907も含むことができる。
これらの様々な態様を実施するコンピューティングデバイス内で使用されるプロセッサ1802、1805、1824、1902は、プロセッサ実行可能ソフトウェア命令(アプリケーション)によって本明細書に記載する様々な態様の機能を含む様々な機能を実行するように構成することができる、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、あるいは1つまたは複数のマルチプロセッサチップとすることができる。通常は、ソフトウェアアプリケーションおよびプロセッサ実行可能命令は、アクセスされ、プロセッサ1802、1805、1824、1902にロードされる前に、内部メモリ1801、1901に記憶することができる。いくつかのコンピューティングデバイスでは、プロセッサ1802、1805、1824、1902は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含むことができる。
いくつかのコンピューティングデバイスでは、安全なメモリは、プロセッサ1802、1805、1824、1902に結合された別個のメモリチップ内にあることもある。多くのコンピューティングデバイスでは、内部メモリ1801、1901は、フラッシュメモリなどの揮発性メモリまたは不揮発性メモリ、あるいはその両方の混合とすることができる。メモリは、相変化メモリ(PCM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、不揮発性ランダムアクセスメモリ(NVRAM)、擬スタティックランダムアクセスメモリ(PSRAM)、ダブルデータレートシンクロナスダイナミックランダムアクセスメモリ(DDR SDRAM)、および当技術分野で既知の他のランダムアクセスメモリ(RAM)および読取り専用メモリ(ROM)技術など、任意数の異なるタイプのメモリ技術を含むことができる。この説明では、一般的に「メモリ」に言及する場合、内部メモリ、コンピューティングデバイスに差し込まれた取外し可能メモリ、およびプロセッサ内部のメモリなど、プロセッサ1802、1805、1824、1902がアクセスすることができるすべてのメモリを指す。
前述の方法の説明およびプロセスフロー図は、単に例示として与えたものであり、それらの様々な態様のステップが提示した順序で実行されることを必要とする、または実行されなければならないことを示唆するためのものではない。当業者なら理解されるように、前述の態様のステップの順序は、任意の順序で実行することができる。「その後」、「次いで」、「次に」などの言葉は、ステップの順序を限定するためのものではなく、単に、方法を説明する上で読者を誘導するために用いられているものである。さらに、たとえば冠詞「a」、「an」または「the」を用いるなどして請求項の要素について単数形で言及していても、それを、その要素を単数に限定するものとして解釈すべきではない。
本明細書に開示する態様に関連して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両者の組合せとして実装することができる。このハードウェアとソフトウェアの相互交換可能性を明白に説明するために、上記では、様々な例示的な構成要素、ブロック、モジュール、回路およびステップについて、一般にそれらの機能性に関して説明した。そのような機能性がハードウェアで実装されるかソフトウェアで実装されるかは、システム全体に課される個々のアプリケーションおよび設計の制約によって決まる。当業者なら、個々のアプリケーションの各々に応じて様々な方法で記載した機能性を実装することができるが、そのような実装の判断は、本発明の範囲からの逸脱を引き起こすものとして解釈すべきではない。
本明細書に開示する態様に関連して説明される様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、本明細書に記載される機能を実行するように設計された、汎用プロセッサ、デジタル信号プロセッサ(DSP)、マルチメディアブロードキャスト受信機チップ内のDSP、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいはそれらの任意の組合せで実装または実行することができる。汎用プロセッサは、マイクロプロセッサとすることができるが、代替形態では、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。プロセッサは、たとえばDSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと関連付けられた1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成など、複数のコンピューティングデバイスの組合せとして実装することもできる。あるいは、いくつかのステップまたは方法は、所与の機能に特有の回路によって実行することもできる。
1つまたは複数の例示的な態様では、記載した機能を、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実施することができる。ソフトウェアで実施する場合には、それらの機能は、1つまたは複数の命令またはコードとして非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体に記憶することができる。本明細書に開示する方法またはアルゴリズムのステップは、非一時的プロセッサ可読記憶媒体または非一時的コンピュータ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールで実施することができる。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサがアクセスすることができる任意の記憶媒体とすることができる。例として、そのような非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROMまたは他の光学ディスク(disk)記憶装置、磁気ディスク(disk)記憶装置または他の磁気記憶デバイス、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用することができる、コンピュータがアクセスすることができる任意の他の媒体を含み得るが、これらに限定されるわけではない。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル汎用ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびblu-rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、磁気的にデータを再現するものであり、ディスク(disc)は、レーザを用いて光学的にデータを再現するものである。上記のものの組合せも、非一時的コンピュータ可読媒体および非一時的プロセッサ可読媒体の範囲に含まれる。さらに、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上の、コードおよび/または命令のうちの1つ、あるいはそれらの任意の組合せまたはセットとして存在し得る。
開示する態様の上記の説明は、任意の当業者が本発明を作製または使用することができるようにするために与えたものである。これらの態様に対する様々な修正は、当業者には容易に明らかになり、本明細書に定義する包括的な原理は、本発明の趣旨または範囲を逸脱することなく、他の態様にも適用することができる。したがって、本発明は、本明細書に示される態様に限定されるものではなく、本発明には、以下の特許請求の範囲と、本明細書に開示する原理および新規の特徴とに矛盾しない最も広い範囲が与えられるものとする。
104 モデムプロセッサ
106 グラフィックスプロセッサ
108 アプリケーションプロセッサ
110 ベクタコプロセッサ
102 デジタル信号プロセッサ
112 メモリ
114 アナログ/カスタム回路
116 システム構成要素/資源
118 クロック
120 電圧調整器
122 相互接続/バス
202 安全でないネットワーク
204 安全なネットワーク
206 コンピューティングデバイス
208 安全でないオペレーティングシステム(HLOS)
210 安全な仮想環境
212 ハイパーバイザ
214 セキュリティモニタ
216 物理メモリ
302 オペレーティングシステム
304 ライブラリ
306 アプリケーションプログラム/プロセス
308 周辺機器(I/Oデバイスなど)
310 CPU
312 システムMMU
314 メモリ
320 ソフトウェア
322 ハードウェア
402 アプリケーションプログラム/プロセス
404 仮想化モジュール
406 オペレーティングシステム
408 ハードウェア
410 プロセス仮想マシン
502 アプリケーションプログラム
504 オペレーティングシステム
506 仮想化モジュール
506 仮想化モジュール
508 ハードウェア
510 システム仮想マシン
602 仮想アドレス空間
604 仮想アドレス空間
606 中間物理アドレス空間
608 物理アドレス空間
610 ゲストオペレーティングシステム(HLOS)
710 仮想アドレス空間
720 中間物理アドレス空間(HLOS)
730 物理アドレス空間
710 仮想アドレス空間
720 中間物理アドレス空間(HLOS)
830 物理アドレス空間
850 仮想アドレス空間
860 中間物理アドレス空間(保護されたコンテンツ)
910 仮想アドレス空間
920 中間物理アドレス空間(HLOS)
930 物理アドレス空間
950 仮想アドレス空間
960 中間物理アドレス空間(共用エンティティ)
1102 HLOS計算ホスト
1104 ARMハイパーバイザ
1106 DSPの第2段階のSMMU
1108 DSPハイパーバイザ
1110 DSP SVMプロセス
1450 Android MMフレームワーク
1452 OMX構成要素
1454 V4L2ビデオドライバ
1456 カーネルページアロケータ
1458 ハイパーバイザ
1462 コア
1800 コンピューティングデバイス
1801 内部メモリ
1802 プロセッサ
1803 ディスプレイ
1804 アンテナ
1805 複数の特殊目的または汎用プロセッサ
1808a メニュー選択ボタン
1808b メニュー選択ボタン
1824 特殊目的または汎用プロセッサ
1864 スピーカ
1900 ラップトップコンピュータ
1901 内部メモリ
1902 プロセッサ
1905 ディスクドライブ
1908 キーボード
1907 選択ボタン
1909 ディスプレイ



  1. コンピューティングデバイス上のメモリを管理する方法であって、
    ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化するステップと、
    初期化後に前記ハイパーバイザをディセーブルにするステップと、
    サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視するステップと、
    前記サンドボックスセッションを開始するための前記信号が受信されたときに、前記ハイパーバイザをイネーブルにするステップと、
    前記ハイパーバイザがイネーブル状態である間にアクセス制御を実施するステップとを含む、方法。

  2. 前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項1に記載の方法。

  3. 前記ハイパーバイザが、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得る、請求項1に記載の方法。

  4. 前記ハイパーバイザを初期化するステップが、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るように前記HLOSを構成するステップを含む、請求項1に記載の方法。

  5. 前記ハイパーバイザを初期化するステップが、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証するステップをさらに含む、請求項4に記載の方法。

  6. 前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成するステップをさらに含む、請求項5に記載の方法。

  7. 前記ハイパーバイザをディセーブルにするステップが、
    すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成するステップと、
    前記HLOSについて第2段階の変換をオフにするステップとを含む、請求項1に記載の方法。

  8. 前記ハイパーバイザをディセーブルにするステップが、
    前記HLOSのハードウェア割込みへのアクセスの制限を中断するステップ、
    前記HLOSのハードウェアタイマへのアクセスの制限を中断するステップ、および
    前記HLOSのI/Oアクセスの制限を中断するステップのうちの少なくとも1つをさらに含む、請求項7に記載の方法。

  9. 前記サンドボックスセッションが終了したかどうかを判定するステップと、
    前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行するステップと、
    前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにするステップとをさらに含む、請求項1に記載の方法。

  10. 前記サンドボックスセッションが終了したかどうかを判定するステップが、前記サンドボックスセッションが終了したことを示す別の信号を受信するステップを含む、請求項9に記載の方法。

  11. 前記サンドボックスセッションティアダウン手順を実行するステップが、
    サンドボックス化された構成要素に対してすべてのバッファを解放するステップと、
    第2段階の変換ページテーブルを復元して、すべての断片化を解消するステップとを含む、請求項9に記載の方法。

  12. 前記ハイパーバイザをイネーブルにするステップが、
    PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにするステップと、
    割込み要求がハイパーバイザモードで受けられるように構成するステップと、
    SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れるステップとを含む、請求項1に記載の方法。

  13. デジタル信号プロセッサとのプロセッサ間通信を開始するステップをさらに含む、請求項12に記載の方法。

  14. SMMU障害を処理するステップをさらに含む、請求項12に記載の方法。

  15. アクセス制御を実施するステップが、第2段階の変換を実施するステップを含む、請求項1に記載の方法。

  16. アクセス制御を実施するステップが、
    前記HLOSのハードウェア割込みへのアクセスの制限を再開するステップ、
    前記HLOSのハードウェアタイマへのアクセスの制限を再開するステップ、および
    前記HLOSのI/Oアクセスの制限を再開するステップのうちの少なくとも1つをさらに含む、請求項15に記載の方法。

  17. 第2段階の変換を実施するステップが、
    前記HLOSによるメモリを割り振ろうとする試みがないか監視するステップと、
    前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供するステップとを含む、請求項15に記載の方法。

  18. 前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定するステップと、
    前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供するステップとをさらに含む、請求項17に記載の方法。

  19. 前記サンドボックス化された構成要素に前記物理アドレスを提供するステップが、
    前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去するステップと、
    前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供するステップとを含む、請求項18に記載の方法。

  20. メモリと、
    前記メモリに結合されたプロセッサとを含み、前記プロセッサが、プロセッサ実行可能命令によって、
    ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化する動作と、
    初期化後に前記ハイパーバイザをディセーブルにする動作と、
    サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視する動作と、
    前記サンドボックスセッションを開始するための前記信号が受信されたときに、前記ハイパーバイザをイネーブルにする動作と、
    前記ハイパーバイザがイネーブル状態である間にアクセス制御を実施する動作とを含む動作を実行するように構成される、コンピューティングデバイス。

  21. 前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項20に記載のコンピューティングデバイス。

  22. 前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザが集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得るように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。

  23. 前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザを初期化する動作が、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るように前記HLOSを構成する動作を含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。

  24. 前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザを初期化する動作が、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証する動作をさらに含むように動作を実行するように構成される、請求項23に記載のコンピューティングデバイス。

  25. 前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成する動作をさらに含む動作を実行するように構成される、請求項24に記載のコンピューティングデバイス。

  26. 前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザをディセーブルにする動作が、
    すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成する動作と、
    前記HLOSについて第2段階の変換をオフにする動作とを含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。

  27. 前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザをディセーブルにする動作が、
    前記HLOSのハードウェア割込みへのアクセスの制限を中断する動作、
    前記HLOSのハードウェアタイマへのアクセスの制限を中断する動作、および
    前記HLOSのI/Oアクセスの制限を中断する動作のうちの少なくとも1つをさらに含むように動作を実行するように構成される、請求項26に記載のコンピューティングデバイス。

  28. 前記プロセッサが、プロセッサ実行可能命令によって、
    前記サンドボックスセッションが終了したかどうかを判定する動作と、
    前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行する動作と、
    前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにする動作とをさらに含む動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。

  29. 前記プロセッサが、プロセッサ実行可能命令によって、前記サンドボックスセッションが終了したかどうかを判定する動作が、前記サンドボックスセッションが終了したことを示す別の信号を受信する動作を含むように動作を実行するように構成される、請求項28に記載のコンピューティングデバイス。

  30. 前記プロセッサが、プロセッサ実行可能命令によって、前記サンドボックスセッションティアダウン手順を実行する動作が、
    サンドボックス化された構成要素に対してすべてのバッファを解放する動作と、
    第2段階の変換ページテーブルを復元して、すべての断片化を解消する動作とを含むように動作を実行するように構成される、請求項28に記載のコンピューティングデバイス。

  31. 前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザをイネーブルにする動作が、
    PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにする動作と、
    割込み要求がハイパーバイザモードで受けられるように構成する動作と、
    SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる動作とを含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。

  32. 前記プロセッサが、プロセッサ実行可能命令によって、デジタル信号プロセッサとのプロセッサ間通信を開始する動作をさらに含む動作を実行するように構成される、請求項31に記載のコンピューティングデバイス。

  33. 前記プロセッサが、プロセッサ実行可能命令によって、SMMU障害を処理する動作をさらに含む動作を実行するように構成される、請求項31に記載のコンピューティングデバイス。

  34. 前記プロセッサが、プロセッサ実行可能命令によって、アクセス制御を実施する動作が、第2段階の変換を実施する動作を含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。

  35. 前記プロセッサが、プロセッサ実行可能命令によって、アクセス制御を実施する動作が、
    前記HLOSのハードウェア割込みへのアクセスの制限を再開する動作、
    前記HLOSのハードウェアタイマへのアクセスの制限を再開する動作、および
    前記HLOSのI/Oアクセスの制限を再開する動作のうちの少なくとも1つをさらに含むように動作を実行するように構成される、請求項34に記載のコンピューティングデバイス。

  36. 前記プロセッサが、プロセッサ実行可能命令によって、第2段階の変換を実施する動作が、
    前記HLOSによるメモリを割り振ろうとする試みがないか監視する動作と、
    前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供する動作とを含むように動作を実行するように構成される、請求項34に記載のコンピューティングデバイス。

  37. 前記プロセッサが、プロセッサ実行可能命令によって、前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定する動作と、
    前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供する動作とをさらに含む動作を実行するように構成される、請求項36に記載のコンピューティングデバイス。

  38. 前記プロセッサが、プロセッサ実行可能命令によって、前記サンドボックス化された構成要素に前記物理アドレスを提供する動作が、
    前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去する動作と、
    前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供する動作とを含むように動作を実行するように構成される、請求項37に記載のコンピューティングデバイス。

  39. ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化するための手段と、
    初期化後に前記ハイパーバイザをディセーブルにするための手段と、
    サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視するための手段と、
    前記サンドボックスセッションを開始するための前記信号が受信されたときに、前記ハイパーバイザをイネーブルにするための手段と、
    前記ハイパーバイザがイネーブル状態である間にアクセス制御を実施するための手段とを含む、コンピューティングデバイス。

  40. 前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項39に記載のコンピューティングデバイス。

  41. 前記ハイパーバイザが、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得る、請求項39に記載のコンピューティングデバイス。

  42. 前記ハイパーバイザを初期化するための手段が、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るように前記HLOSを構成するための手段を含む、請求項39に記載のコンピューティングデバイス。

  43. 前記ハイパーバイザを初期化するための手段が、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証するための手段をさらに含む、請求項42に記載のコンピューティングデバイス。

  44. 前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成するための手段をさらに含む、請求項43に記載のコンピューティングデバイス。

  45. 前記ハイパーバイザをディセーブルにするための手段が、
    すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成するための手段と、
    前記HLOSについて第2段階の変換をオフにするための手段とを含む、請求項39に記載のコンピューティングデバイス。

  46. 前記ハイパーバイザをディセーブルにするための手段が、
    前記HLOSのハードウェア割込みへのアクセスの制限を中断するための手段、
    前記HLOSのハードウェアタイマへのアクセスの制限を中断するための手段、および
    前記HLOSのI/Oアクセスの制限を中断するための手段のうちの少なくとも1つをさらに含む、請求項45に記載のコンピューティングデバイス。

  47. 前記サンドボックスセッションが終了したかどうかを判定するための手段と、
    前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行するための手段と、
    前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにするための手段とをさらに含む、請求項39に記載のコンピューティングデバイス。

  48. 前記サンドボックスセッションが終了したかどうかを判定するための手段が、前記サンドボックスセッションが終了したことを示す別の信号を受信するための手段を含む、請求項47に記載のコンピューティングデバイス。

  49. 前記サンドボックスセッションティアダウン手順を実行するための手段が、
    サンドボックス化された構成要素に対してすべてのバッファを解放するための手段と、
    第2段階の変換ページテーブルを復元して、すべての断片化を解消するための手段とを含む、請求項47に記載のコンピューティングデバイス。

  50. 前記ハイパーバイザをイネーブルにするための手段が、
    PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにするための手段と、
    割込み要求がハイパーバイザモードで受けられるように構成するための手段と、
    SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる手段とを含む、請求項39に記載のコンピューティングデバイス。

  51. デジタル信号プロセッサとのプロセッサ間通信を開始するための手段をさらに含む、請求項50に記載のコンピューティングデバイス。

  52. SMMU障害を処理するための手段をさらに含む、請求項50に記載のコンピューティングデバイス。

  53. アクセス制御を実施するための手段が、第2段階の変換を実施するための手段を含む、請求項39に記載のコンピューティングデバイス。

  54. アクセス制御を実施するための手段が、
    前記HLOSのハードウェア割込みへのアクセスの制限を再開するための手段、
    前記HLOSのハードウェアタイマへのアクセスの制限を再開するための手段、および
    前記HLOSのI/Oアクセスの制限を再開するための手段のうちの少なくとも1つをさらに含む、請求項53に記載のコンピューティングデバイス。

  55. 第2段階の変換を実施するための手段が、
    前記HLOSによるメモリを割り振ろうとする試みがないか監視するための手段と、
    前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供するための手段とを含む、請求項53に記載のコンピューティングデバイス。

  56. 前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定するための手段と、
    前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供するための手段とをさらに含む、請求項55に記載のコンピューティングデバイス。

  57. 前記サンドボックス化された構成要素に前記物理アドレスを提供するための手段が、
    前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去するための手段と、
    前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供するための手段とを含む、請求項56に記載のコンピューティングデバイス。

  58. プロセッサにコンピューティングデバイス上のメモリを管理するための動作を実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記動作が、
    ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化する動作と、
    初期化後に前記ハイパーバイザをディセーブルにする動作と、
    サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視する動作と、
    前記サンドボックスセッションを開始するための前記信号が受信されたときに、前記ハイパーバイザをイネーブルにする動作と、
    前記ハイパーバイザがイネーブル状態である間にアクセス制御を実施する動作とを含む、非一時的プロセッサ可読記憶媒体。

  59. 前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項58に記載の非一時的プロセッサ可読記憶媒体。

  60. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザが、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得るように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。

  61. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザを初期化する動作が、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るように前記HLOSを構成する動作を含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。

  62. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザを初期化する動作が、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証する動作をさらに含むように動作をプロセッサに実行させるように構成される、請求項61に記載の非一時的プロセッサ可読記憶媒体。

  63. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成する動作をさらに含む動作をプロセッサに実行させるように構成される、請求項62に記載の非一時的プロセッサ可読記憶媒体。

  64. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザをディセーブルにする動作が、
    すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成する動作と、
    前記HLOSについて第2段階の変換をオフにする動作とを含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。

  65. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザをディセーブルにする動作が、
    前記HLOSのハードウェア割込みへのアクセスの制限を中断する動作、
    前記HLOSのハードウェアタイマへのアクセスの制限を中断する動作、および
    前記HLOSのI/Oアクセスの制限を中断する動作のうちの少なくとも1つをさらに含むように動作をプロセッサに実行させるように構成される、請求項64に記載の非一時的プロセッサ可読記憶媒体。

  66. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックスセッションが終了したかどうかを判定する動作と、
    前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行する動作と、
    前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにする動作とをさらに含む動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。

  67. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックスセッションが終了したかどうかを判定する動作が、前記サンドボックスセッションが終了したことを示す別の信号を受信する動作を含むように動作をプロセッサに実行させるように構成される、請求項66に記載の非一時的プロセッサ可読記憶媒体。

  68. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックスセッションティアダウン手順を実行する動作が、
    サンドボックス化された構成要素に対してすべてのバッファを解放する動作と、
    第2段階の変換ページテーブルを復元して、すべての断片化を解消する動作とを含むように動作をプロセッサに実行させるように構成される、請求項66に記載の非一時的プロセッサ可読記憶媒体。

  69. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザをイネーブルにする動作が、
    PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにする動作と、
    割込み要求がハイパーバイザモードで受けられるように構成する動作と、
    SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる動作とを含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。

  70. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、デジタル信号プロセッサとのプロセッサ間通信を開始する動作をさらに含む動作をプロセッサに実行させるように構成される、請求項69に記載の非一時的プロセッサ可読記憶媒体。

  71. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、SMMU障害を処理する動作をさらに含む動作をプロセッサに実行させるように構成される、請求項69に記載の非一時的プロセッサ可読記憶媒体。

  72. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、アクセス制御を実施する動作が、第2段階の変換を実施する動作を含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。

  73. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、アクセス制御を実施する動作が、
    前記HLOSのハードウェア割込みへのアクセスの制限を再開する動作、
    前記HLOSのハードウェアタイマへのアクセスの制限を再開する動作、および
    前記HLOSのI/Oアクセスの制限を再開する動作のうちの少なくとも1つをさらに含むように動作をプロセッサに実行させるように構成される、請求項72に記載の非一時的プロセッサ可読記憶媒体。

  74. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、第2段階の変換を実施する動作が、
    前記HLOSによるメモリを割り振ろうとする試みがないか監視する動作と、
    前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供する動作とを含むように動作をプロセッサに実行させるように構成される、請求項72に記載の非一時的プロセッサ可読記憶媒体。

  75. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定する動作と、
    前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供する動作とをさらに含む動作をプロセッサに実行させるように構成される、請求項74に記載の非一時的プロセッサ可読記憶媒体。

  76. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックス化された構成要素に前記物理アドレスを提供する動作が、
    前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去する動作と、
    前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供する動作とを含むように動作をプロセッサに実行させるように構成される、請求項75に記載の非一時的プロセッサ可読記憶媒体。

 

 

Patent trol of patentswamp
類似の特許
この開示は、グラフィックス処理のための技術を提案する。一例では、グラフィックス処理ユニット(GPU)は、非安全モード及び安全モードの1つに従って、第1のメモリユニットにアクセスするように構成される。GPUは、GPUが非安全モードにあるとき、第1のメモリユニットの安全でない部分のみからデータをGPUが読み取ることを可能にするように構成され、及びGPUが安全モードにあるとき、第1のメモリユニットの安全な部分のみにデータをGPUが書き込むことを可能にするように構成されたメモリアクセスコントローラを備える。
様々な実施形態は概して、階層化された仮想マシン(VM)モニタリングソフトウェアコンポーネントの状態を監視するための、様々なハードウェア及びソフトウェアコンポーネントの提供及び使用に関する。装置は、第1のプロセッサ素子及びロジックを含み、該ロジックは、第1のタイマーが第1の期間の終わりに到達したことのインジケーションを受信し、第2のプロセッサ素子による仮想マシンモニタ(VMM)ウォッチャーの実行を監視し、第2のプロセッサ素子が、VMMのインテグリティを検証するためのVMMウォッチャーの実行を、第2のタイマーが第2の期間の終わりに到達する前に完了したかを決定し、且つ該決定のインジケーションをコンピューティング装置に送信する。他の実施形態も記述されて特許請求される。
開示されるシステムおよび方法はコンピュータシステムをウイルスおよびルートキットなどのマルウェアから保護することを可能にする。いくつかの実施形態において、ハイパーバイザはオペレーティングシステム(OS)の集合をホストするハードウェア仮想化プラットフォームを構成する。ハイパーバイザのプロセッサ特権レベルで実行するメモリイントロスペクションエンジンは各OSを動的に識別し、保護準備モジュールを使用して、それぞれのOSにネイティブのメモリ割り当て関数による対象ソフトウェアオブジェクトへのメモリの割り当て方を変更する。いくつかの実施形態において、変更はマルウェア保護を必要とする対象オブジェクトのみに影響し、また対象オブジェクトのデータを含むメモリページがそれぞれのオブジェクトのために排他的に予約されるように実施することを含む。メモリイントロスペクションエンジンは次いでそれぞれのメモリページを書き込み保護する。
システム管理モード(SMM)で実行されるサービスなどの特権的な暗号サービスが記載される。特権的なサービスは、暗号鍵及び/または他のセキュリティリソースを、マルチテナント遠隔プログラム実行環境において格納及び管理するように動作可能である。特権的なサービスは、暗号鍵を用いる要求を受け取って、これらの要求に応答を発行することができる。また、特権的なサービスは、ハイパーバイザーの改ざんの証拠を検出する目的で、実行時に(例えば、定期的に、または要求に応答して)ハイパーバイザーを測定することができる。特権的なサービスはハイパーバイザーよりも特権的なシステム管理モードで動作しているため、特権的なサービスは、仮想マシンエスケープ及び他のハイパーバイザー攻撃に対し、堅牢であり得る。
【選択図】 図1
オペレーティングシステム(OS)カーネル及び/またはハイパーバイザーのようなシステム上の特権操作の結果を保護するために、非対称(または対称)暗号のようなセキュリティスキームを使用するインターフェース(例えば、アプリケーションプログラミングインターフェース(API))の正式なセットを記述する。このインターフェースは、ハイパーバイザー及び/またはカーネルで特権操作を行うための要求に公開鍵を含めることを可能にする。カーネル及び/またはハイパーバイザーは、要求内に含まれる鍵を使用して特権操作の結果を暗号化する。いくつかの実施形態では、要求自体もまた暗号化することができ、一切の中間の関係者は、要求のパラメータ及び他の情報を読み取ることができない。
【選択図】 図1
仮想化レイヤに送信されたリクエストを許可及び認証するために、非対称(または対称)暗号法などのセキュリティスキームを用いる一組の形式化されたインターフェイス(例えば、アプリケーション・プログラミング・インターフェイス(API))が記載される。インターフェイスは、実行時に、セキュリティ監視、フォレンジックキャプチャ及び/またはパッチソフトウェアシステムを実行するように呼び出されることができる。上記に加えて、他の形態が特許請求の範囲、詳細な説明及び図面に記載される。
【選択図】 図1
セキュリティ仮想マシン上で走るデータ損失防止(DLP)マネージャは、複数のゲスト仮想マシンに対するDLPポリシーを管理する。DLPマネージャは、ファイルオープン又は作成イベントと関連付けられたソースを識別する。ソースは、ゲスト仮想マシン(GVM)が使用しているアプリケーション又はデバイスのうちの少なくとも1つである。DLPマネージャは、ソースがソース制御ポリシー毎の非承認ソースであるとき、GVMと関連付けられた第1の応答規則を実施する。DLPマネージャは、ファイルがDLPポリシーに違反しているとき、第2の応答規則を実施する。
【課題】既存のシグネチャーが検出しないマルウェアを検出するためのマルウェア解析システムを提供する。
【解決手段】マルウェア解析システムは、ファイアウォールからマルウェア候補サンプルを受信し502、マルウェア候補サンプルがマルウェアであるか否かを判定するために仮想マシンを用いてマルウェア候補サンプルを解析し504、マルウェア候補サンプルがマルウェアであると判定された場合にシグネチャーを自動的に生成する506。そして生成したシグネチャーをファイアウォールに送信する508。
【選択図】図5
【課題】ネットワークエンティティーどうしの間においてセキュアな通信が確立されること。【解決手段】たとえば、UE(ユーザ装置)は、ユーザ/UEの認証のためにユーザIDを発行するIDプロバイダとの間でセキュアチャネルを確立する。UEは、ネットワークを介してUEにサービスを提供するサービスプロバイダとの間でセキュアチャネルを確立する。IDプロバイダは、セキュアな通信を実行するために、サービスプロバイダとの間でセキュアチャネルを確立する。これらのセキュアチャネルをそれぞれ確立することは、それぞれのネットワークエンティティーが、その他のネットワークエンティティーに対して認証を行うことを可能にする。これらのセキュアチャネルは、UEがサービスにアクセスするために、自分がそのセキュアチャネルを確立したサービスプロバイダが、意図されたサービスプロバイダであることを検証することを可能にする。【選択図】図2
【課題】悪意のあるソフトウェアに対するローカル保護をするシステム及び方法を提供する。
【解決手段】計算装置上のネットワーク・アクセス試行を遮断し710、ネットワーク・アクセス試行と関連付けられたソフトウェア・プログラム・ファイルを判定し720、ソフトウェア・プログラム・ファイルの信頼性状態を評価してネットワーク・アクセス試行が許可されるかどうかを判定する。信頼性状態は、ソフトウェア・プログラム・ファイルが信頼できるプログラム・ファイルのホワイトリストに含まれる場合に、信頼できると定義され、ソフトウェア・プログラム・ファイルがホワイトリストに含まれない場合に信頼できないと定義される。ソフトウェア・プログラム・ファイルが非信頼状態を有する場合は、ネットワーク・アクセス試行が阻止され780、イベントがログ記録される。
【選択図】図7
To top