(57)【要約】  様々な態様では、仮想化技法を使用して、サンドボックスセッション中にコンピューティングデバイス上で動作するハイパーバイザを選択的にイネーブルにすることによって、性能を向上させ、消費電力量を削減することができる。様々な態様では、ハイレベルオペレーティングシステムは、その中間物理アドレスが物理アドレスと等しくなるようにメモリを割り振ることができる。ハイパーバイザは、ディセーブル状態であるときには、中間物理アドレスから物理アドレスへの第2段階の変換を中断することができる。サンドボックスセッション中に、ハイパーバイザがイネーブルにされ、第2段階の変換の実行を再開することもできる。
2016517572.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上のメモリを管理する方法であって、
ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化するステップと、
初期化後に前記ハイパーバイザをディセーブルにするステップと、
サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視するステップと、
前記サンドボックスセッションを開始するための前記信号が受信されたときに、前記ハイパーバイザをイネーブルにするステップと、
前記ハイパーバイザがイネーブル状態である間にアクセス制御を実施するステップとを含む、方法。
【請求項２】
前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項1に記載の方法。
【請求項３】
前記ハイパーバイザが、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得る、請求項1に記載の方法。
【請求項４】
前記ハイパーバイザを初期化するステップが、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るように前記HLOSを構成するステップを含む、請求項1に記載の方法。
【請求項５】
前記ハイパーバイザを初期化するステップが、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証するステップをさらに含む、請求項4に記載の方法。
【請求項６】
前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成するステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記ハイパーバイザをディセーブルにするステップが、
すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成するステップと、
前記HLOSについて第2段階の変換をオフにするステップとを含む、請求項1に記載の方法。
【請求項８】
前記ハイパーバイザをディセーブルにするステップが、
前記HLOSのハードウェア割込みへのアクセスの制限を中断するステップ、
前記HLOSのハードウェアタイマへのアクセスの制限を中断するステップ、および
前記HLOSのI/Oアクセスの制限を中断するステップのうちの少なくとも1つをさらに含む、請求項7に記載の方法。
【請求項９】
前記サンドボックスセッションが終了したかどうかを判定するステップと、
前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行するステップと、
前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにするステップとをさらに含む、請求項1に記載の方法。
【請求項１０】
前記サンドボックスセッションが終了したかどうかを判定するステップが、前記サンドボックスセッションが終了したことを示す別の信号を受信するステップを含む、請求項9に記載の方法。
【請求項１１】
前記サンドボックスセッションティアダウン手順を実行するステップが、
サンドボックス化された構成要素に対してすべてのバッファを解放するステップと、
第2段階の変換ページテーブルを復元して、すべての断片化を解消するステップとを含む、請求項9に記載の方法。
【請求項１２】
前記ハイパーバイザをイネーブルにするステップが、
PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにするステップと、
割込み要求がハイパーバイザモードで受けられるように構成するステップと、
SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れるステップとを含む、請求項1に記載の方法。
【請求項１３】
デジタル信号プロセッサとのプロセッサ間通信を開始するステップをさらに含む、請求項12に記載の方法。
【請求項１４】
SMMU障害を処理するステップをさらに含む、請求項12に記載の方法。
【請求項１５】
アクセス制御を実施するステップが、第2段階の変換を実施するステップを含む、請求項1に記載の方法。
【請求項１６】
アクセス制御を実施するステップが、
前記HLOSのハードウェア割込みへのアクセスの制限を再開するステップ、
前記HLOSのハードウェアタイマへのアクセスの制限を再開するステップ、および
前記HLOSのI/Oアクセスの制限を再開するステップのうちの少なくとも1つをさらに含む、請求項15に記載の方法。
【請求項１７】
第2段階の変換を実施するステップが、
前記HLOSによるメモリを割り振ろうとする試みがないか監視するステップと、
前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供するステップとを含む、請求項15に記載の方法。
【請求項１８】
前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定するステップと、
前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供するステップとをさらに含む、請求項17に記載の方法。
【請求項１９】
前記サンドボックス化された構成要素に前記物理アドレスを提供するステップが、
前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去するステップと、
前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供するステップとを含む、請求項18に記載の方法。
【請求項２０】
メモリと、
前記メモリに結合されたプロセッサとを含み、前記プロセッサが、プロセッサ実行可能命令によって、
ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化する動作と、
初期化後に前記ハイパーバイザをディセーブルにする動作と、
サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視する動作と、
前記サンドボックスセッションを開始するための前記信号が受信されたときに、前記ハイパーバイザをイネーブルにする動作と、
前記ハイパーバイザがイネーブル状態である間にアクセス制御を実施する動作とを含む動作を実行するように構成される、コンピューティングデバイス。
【請求項２１】
前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項20に記載のコンピューティングデバイス。
【請求項２２】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザが集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得るように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項２３】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザを初期化する動作が、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るように前記HLOSを構成する動作を含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項２４】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザを初期化する動作が、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証する動作をさらに含むように動作を実行するように構成される、請求項23に記載のコンピューティングデバイス。
【請求項２５】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成する動作をさらに含む動作を実行するように構成される、請求項24に記載のコンピューティングデバイス。
【請求項２６】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザをディセーブルにする動作が、
すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成する動作と、
前記HLOSについて第2段階の変換をオフにする動作とを含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項２７】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザをディセーブルにする動作が、
前記HLOSのハードウェア割込みへのアクセスの制限を中断する動作、
前記HLOSのハードウェアタイマへのアクセスの制限を中断する動作、および
前記HLOSのI/Oアクセスの制限を中断する動作のうちの少なくとも1つをさらに含むように動作を実行するように構成される、請求項26に記載のコンピューティングデバイス。
【請求項２８】
前記プロセッサが、プロセッサ実行可能命令によって、
前記サンドボックスセッションが終了したかどうかを判定する動作と、
前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行する動作と、
前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにする動作とをさらに含む動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項２９】
前記プロセッサが、プロセッサ実行可能命令によって、前記サンドボックスセッションが終了したかどうかを判定する動作が、前記サンドボックスセッションが終了したことを示す別の信号を受信する動作を含むように動作を実行するように構成される、請求項28に記載のコンピューティングデバイス。
【請求項３０】
前記プロセッサが、プロセッサ実行可能命令によって、前記サンドボックスセッションティアダウン手順を実行する動作が、
サンドボックス化された構成要素に対してすべてのバッファを解放する動作と、
第2段階の変換ページテーブルを復元して、すべての断片化を解消する動作とを含むように動作を実行するように構成される、請求項28に記載のコンピューティングデバイス。
【請求項３１】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザをイネーブルにする動作が、
PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにする動作と、
割込み要求がハイパーバイザモードで受けられるように構成する動作と、
SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる動作とを含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項３２】
前記プロセッサが、プロセッサ実行可能命令によって、デジタル信号プロセッサとのプロセッサ間通信を開始する動作をさらに含む動作を実行するように構成される、請求項31に記載のコンピューティングデバイス。
【請求項３３】
前記プロセッサが、プロセッサ実行可能命令によって、SMMU障害を処理する動作をさらに含む動作を実行するように構成される、請求項31に記載のコンピューティングデバイス。
【請求項３４】
前記プロセッサが、プロセッサ実行可能命令によって、アクセス制御を実施する動作が、第2段階の変換を実施する動作を含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項３５】
前記プロセッサが、プロセッサ実行可能命令によって、アクセス制御を実施する動作が、
前記HLOSのハードウェア割込みへのアクセスの制限を再開する動作、
前記HLOSのハードウェアタイマへのアクセスの制限を再開する動作、および
前記HLOSのI/Oアクセスの制限を再開する動作のうちの少なくとも1つをさらに含むように動作を実行するように構成される、請求項34に記載のコンピューティングデバイス。
【請求項３６】
前記プロセッサが、プロセッサ実行可能命令によって、第2段階の変換を実施する動作が、
前記HLOSによるメモリを割り振ろうとする試みがないか監視する動作と、
前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供する動作とを含むように動作を実行するように構成される、請求項34に記載のコンピューティングデバイス。
【請求項３７】
前記プロセッサが、プロセッサ実行可能命令によって、前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定する動作と、
前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供する動作とをさらに含む動作を実行するように構成される、請求項36に記載のコンピューティングデバイス。
【請求項３８】
前記プロセッサが、プロセッサ実行可能命令によって、前記サンドボックス化された構成要素に前記物理アドレスを提供する動作が、
前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去する動作と、
前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供する動作とを含むように動作を実行するように構成される、請求項37に記載のコンピューティングデバイス。
【請求項３９】
ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化するための手段と、
初期化後に前記ハイパーバイザをディセーブルにするための手段と、
サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視するための手段と、
前記サンドボックスセッションを開始するための前記信号が受信されたときに、前記ハイパーバイザをイネーブルにするための手段と、
前記ハイパーバイザがイネーブル状態である間にアクセス制御を実施するための手段とを含む、コンピューティングデバイス。
【請求項４０】
前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項39に記載のコンピューティングデバイス。
【請求項４１】
前記ハイパーバイザが、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得る、請求項39に記載のコンピューティングデバイス。
【請求項４２】
前記ハイパーバイザを初期化するための手段が、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るように前記HLOSを構成するための手段を含む、請求項39に記載のコンピューティングデバイス。
【請求項４３】
前記ハイパーバイザを初期化するための手段が、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証するための手段をさらに含む、請求項42に記載のコンピューティングデバイス。
【請求項４４】
前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成するための手段をさらに含む、請求項43に記載のコンピューティングデバイス。
【請求項４５】
前記ハイパーバイザをディセーブルにするための手段が、
すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成するための手段と、
前記HLOSについて第2段階の変換をオフにするための手段とを含む、請求項39に記載のコンピューティングデバイス。
【請求項４６】
前記ハイパーバイザをディセーブルにするための手段が、
前記HLOSのハードウェア割込みへのアクセスの制限を中断するための手段、
前記HLOSのハードウェアタイマへのアクセスの制限を中断するための手段、および
前記HLOSのI/Oアクセスの制限を中断するための手段のうちの少なくとも1つをさらに含む、請求項45に記載のコンピューティングデバイス。
【請求項４７】
前記サンドボックスセッションが終了したかどうかを判定するための手段と、
前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行するための手段と、
前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにするための手段とをさらに含む、請求項39に記載のコンピューティングデバイス。
【請求項４８】
前記サンドボックスセッションが終了したかどうかを判定するための手段が、前記サンドボックスセッションが終了したことを示す別の信号を受信するための手段を含む、請求項47に記載のコンピューティングデバイス。
【請求項４９】
前記サンドボックスセッションティアダウン手順を実行するための手段が、
サンドボックス化された構成要素に対してすべてのバッファを解放するための手段と、
第2段階の変換ページテーブルを復元して、すべての断片化を解消するための手段とを含む、請求項47に記載のコンピューティングデバイス。
【請求項５０】
前記ハイパーバイザをイネーブルにするための手段が、
PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにするための手段と、
割込み要求がハイパーバイザモードで受けられるように構成するための手段と、
SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる手段とを含む、請求項39に記載のコンピューティングデバイス。
【請求項５１】
デジタル信号プロセッサとのプロセッサ間通信を開始するための手段をさらに含む、請求項50に記載のコンピューティングデバイス。
【請求項５２】
SMMU障害を処理するための手段をさらに含む、請求項50に記載のコンピューティングデバイス。
【請求項５３】
アクセス制御を実施するための手段が、第2段階の変換を実施するための手段を含む、請求項39に記載のコンピューティングデバイス。
【請求項５４】
アクセス制御を実施するための手段が、
前記HLOSのハードウェア割込みへのアクセスの制限を再開するための手段、
前記HLOSのハードウェアタイマへのアクセスの制限を再開するための手段、および
前記HLOSのI/Oアクセスの制限を再開するための手段のうちの少なくとも1つをさらに含む、請求項53に記載のコンピューティングデバイス。
【請求項５５】
第2段階の変換を実施するための手段が、
前記HLOSによるメモリを割り振ろうとする試みがないか監視するための手段と、
前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供するための手段とを含む、請求項53に記載のコンピューティングデバイス。
【請求項５６】
前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定するための手段と、
前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供するための手段とをさらに含む、請求項55に記載のコンピューティングデバイス。
【請求項５７】
前記サンドボックス化された構成要素に前記物理アドレスを提供するための手段が、
前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去するための手段と、
前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供するための手段とを含む、請求項56に記載のコンピューティングデバイス。
【請求項５８】
プロセッサにコンピューティングデバイス上のメモリを管理するための動作を実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記動作が、
ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化する動作と、
初期化後に前記ハイパーバイザをディセーブルにする動作と、
サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視する動作と、
前記サンドボックスセッションを開始するための前記信号が受信されたときに、前記ハイパーバイザをイネーブルにする動作と、
前記ハイパーバイザがイネーブル状態である間にアクセス制御を実施する動作とを含む、非一時的プロセッサ可読記憶媒体。
【請求項５９】
前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項６０】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザが、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得るように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項６１】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザを初期化する動作が、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るように前記HLOSを構成する動作を含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項６２】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザを初期化する動作が、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証する動作をさらに含むように動作をプロセッサに実行させるように構成される、請求項61に記載の非一時的プロセッサ可読記憶媒体。
【請求項６３】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成する動作をさらに含む動作をプロセッサに実行させるように構成される、請求項62に記載の非一時的プロセッサ可読記憶媒体。
【請求項６４】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザをディセーブルにする動作が、
すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成する動作と、
前記HLOSについて第2段階の変換をオフにする動作とを含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項６５】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザをディセーブルにする動作が、
前記HLOSのハードウェア割込みへのアクセスの制限を中断する動作、
前記HLOSのハードウェアタイマへのアクセスの制限を中断する動作、および
前記HLOSのI/Oアクセスの制限を中断する動作のうちの少なくとも1つをさらに含むように動作をプロセッサに実行させるように構成される、請求項64に記載の非一時的プロセッサ可読記憶媒体。
【請求項６６】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックスセッションが終了したかどうかを判定する動作と、
前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行する動作と、
前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにする動作とをさらに含む動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項６７】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックスセッションが終了したかどうかを判定する動作が、前記サンドボックスセッションが終了したことを示す別の信号を受信する動作を含むように動作をプロセッサに実行させるように構成される、請求項66に記載の非一時的プロセッサ可読記憶媒体。
【請求項６８】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックスセッションティアダウン手順を実行する動作が、
サンドボックス化された構成要素に対してすべてのバッファを解放する動作と、
第2段階の変換ページテーブルを復元して、すべての断片化を解消する動作とを含むように動作をプロセッサに実行させるように構成される、請求項66に記載の非一時的プロセッサ可読記憶媒体。
【請求項６９】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザをイネーブルにする動作が、
PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにする動作と、
割込み要求がハイパーバイザモードで受けられるように構成する動作と、
SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる動作とを含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項７０】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、デジタル信号プロセッサとのプロセッサ間通信を開始する動作をさらに含む動作をプロセッサに実行させるように構成される、請求項69に記載の非一時的プロセッサ可読記憶媒体。
【請求項７１】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、SMMU障害を処理する動作をさらに含む動作をプロセッサに実行させるように構成される、請求項69に記載の非一時的プロセッサ可読記憶媒体。
【請求項７２】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、アクセス制御を実施する動作が、第2段階の変換を実施する動作を含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項７３】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、アクセス制御を実施する動作が、
前記HLOSのハードウェア割込みへのアクセスの制限を再開する動作、
前記HLOSのハードウェアタイマへのアクセスの制限を再開する動作、および
前記HLOSのI/Oアクセスの制限を再開する動作のうちの少なくとも1つをさらに含むように動作をプロセッサに実行させるように構成される、請求項72に記載の非一時的プロセッサ可読記憶媒体。
【請求項７４】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、第2段階の変換を実施する動作が、
前記HLOSによるメモリを割り振ろうとする試みがないか監視する動作と、
前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供する動作とを含むように動作をプロセッサに実行させるように構成される、請求項72に記載の非一時的プロセッサ可読記憶媒体。
【請求項７５】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定する動作と、
前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供する動作とをさらに含む動作をプロセッサに実行させるように構成される、請求項74に記載の非一時的プロセッサ可読記憶媒体。
【請求項７６】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックス化された構成要素に前記物理アドレスを提供する動作が、
前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去する動作と、
前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供する動作とを含むように動作をプロセッサに実行させるように構成される、請求項75に記載の非一時的プロセッサ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
一般に、仮想化技術は、オペレーティングシステムとハードウェアとの間にソフトウェア制御プログラム(たとえば仮想マシンモニタ「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  ディスプレイ
【図１】
2016517572.tif 000003
【図２】
2016517572.tif 000004
【図３】
2016517572.tif 000005
【図４】
2016517572.tif 000006
【図５】
2016517572.tif 000007
【図６】
2016517572.tif 000008
【図７】
2016517572.tif 000009
【図８】
2016517572.tif 000010
【図９】
2016517572.tif 000011
【図１０】
2016517572.tif 000012
【図１１】
2016517572.tif 000013
【図１２】
2016517572.tif 000014
【図１３】
2016517572.tif 000015
【図１４】
2016517572.tif 000016
【図１５】
2016517572.tif 000017
【図１６Ａ】
2016517572.tif 000018
【図１６Ｂ】
2016517572.tif 000019
【図１７】
2016517572.tif 000020
【図１８】
2016517572.tif 000021
【図１９】
2016517572.tif 000022
【手続補正書】
【提出日】平成27年5月27日(2015.5.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上のメモリを管理する方法であって、
ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化するステップと、
初期化後に前記ハイパーバイザをディセーブルにするステップと、
前記HLOSの中間物理アドレス空間中の中間物理アドレスが物理アドレス空間中の物理アドレスと等価になるように、前記HLOSがメモリを割り振るステップと、
サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視するステップと、
前記サンドボックスセッションを開始するための前記セキュリティモニタからの前記信号を受信したのに応答して、前記ハイパーバイザをイネーブルにするステップと、
前記ハイパーバイザがイネーブル状態である間に、前記ハイパーバイザによって提供される第2段階の変換を介してアクセス制御を実施するステップとを含む、方法。
【請求項２】
前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項1に記載の方法。
【請求項３】
前記ハイパーバイザが、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得る、請求項1に記載の方法。
【請求項４】
前記HLOSの中間物理アドレス空間中の中間物理アドレスが物理アドレス空間中の物理アドレスと等価になるように、前記HLOSがメモリを割り振るステップが、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るステップを含む、請求項1に記載の方法。
【請求項５】
前記ハイパーバイザを初期化するステップが、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証するステップをさらに含む、請求項4に記載の方法。
【請求項６】
前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれる中央処理装置(CPU)のうちの少なくとも1つからアクセス不能になるように構成するステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記ハイパーバイザをディセーブルにするステップが、
すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成するステップと、
前記HLOSについて第2段階の変換をオフにするステップとを含む、請求項1に記載の方法。
【請求項８】
前記ハイパーバイザをディセーブルにするステップが、
前記HLOSのハードウェア割込みへのアクセスの制限を中断するステップ、
前記HLOSのハードウェアタイマへのアクセスの制限を中断するステップ、および
前記HLOSのI/Oアクセスの制限を中断するステップのうちの少なくとも1つをさらに含む、請求項7に記載の方法。
【請求項９】
前記サンドボックスセッションが終了したかどうかを判定するステップと、
前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行するステップと、
前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにするステップとをさらに含む、請求項1に記載の方法。
【請求項１０】
前記サンドボックスセッションが終了したかどうかを判定するステップが、前記サンドボックスセッションが終了したことを示す別の信号を受信するステップを含む、請求項9に記載の方法。
【請求項１１】
前記サンドボックスセッションティアダウン手順を実行するステップが、
サンドボックス化された構成要素に対してすべてのバッファを解放するステップと、
第2段階の変換ページテーブルを復元して、すべての断片化を解消するステップとを含む、請求項9に記載の方法。
【請求項１２】
前記ハイパーバイザをイネーブルにするステップが、
PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにするステップと、
割込み要求がハイパーバイザモードで受けられるように構成するステップと、
SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れるステップとを含む、請求項1に記載の方法。
【請求項１３】
デジタル信号プロセッサとのプロセッサ間通信を開始するステップをさらに含む、請求項12に記載の方法。
【請求項１４】
SMMU障害を処理するステップをさらに含む、請求項12に記載の方法。
【請求項１５】
アクセス制御を実施するステップが、第2段階の変換を実施するステップを含む、請求項1に記載の方法。
【請求項１６】
アクセス制御を実施するステップが、
前記HLOSのハードウェア割込みへのアクセスの制限を再開するステップ、
前記HLOSのハードウェアタイマへのアクセスの制限を再開するステップ、および
前記HLOSのI/Oアクセスの制限を再開するステップのうちの少なくとも1つをさらに含む、請求項15に記載の方法。
【請求項１７】
第2段階の変換を実施するステップが、
前記HLOSによるメモリを割り振ろうとする試みがないか監視するステップと、
前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供するステップとを含む、請求項15に記載の方法。
【請求項１８】
前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定するステップと、
前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供するステップとをさらに含む、請求項17に記載の方法。
【請求項１９】
前記サンドボックス化された構成要素に前記物理アドレスを提供するステップが、
前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去するステップと、
前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供するステップとを含む、請求項18に記載の方法。
【請求項２０】
メモリと、
前記メモリに結合されたプロセッサとを含み、前記プロセッサが、プロセッサ実行可能命令によって、
ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化する動作と、
初期化後に前記ハイパーバイザをディセーブルにする動作と、
前記HLOSの中間物理アドレス空間中の中間物理アドレスが物理アドレス空間中の物理アドレスと等価になるように、前記HLOSがメモリを割り振る動作と、
サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視する動作と、
前記サンドボックスセッションを開始するための前記セキュリティモニタからの前記信号を受信したのに応答して、前記ハイパーバイザをイネーブルにする動作と、
前記ハイパーバイザがイネーブル状態である間に、前記ハイパーバイザによって提供される第2段階の変換を介してアクセス制御を実施する動作とを含む動作を実行するように構成される、コンピューティングデバイス。
【請求項２１】
前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項20に記載のコンピューティングデバイス。
【請求項２２】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザが集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得るように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項２３】
前記プロセッサが、プロセッサ実行可能命令によって、前記HLOSの中間物理アドレス空間中の中間物理アドレスが物理アドレス空間中の物理アドレスと等価になるように、前記HLOSがメモリを割り振る動作が、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振る動作を含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項２４】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザを初期化する動作が、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証する動作をさらに含むように動作を実行するように構成される、請求項23に記載のコンピューティングデバイス。
【請求項２５】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成する動作をさらに含む動作を実行するように構成される、請求項24に記載のコンピューティングデバイス。
【請求項２６】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザをディセーブルにする動作が、
すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成する動作と、
前記HLOSについて第2段階の変換をオフにする動作とを含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項２７】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザをディセーブルにする動作が、
前記HLOSのハードウェア割込みへのアクセスの制限を中断する動作、
前記HLOSのハードウェアタイマへのアクセスの制限を中断する動作、および
前記HLOSのI/Oアクセスの制限を中断する動作のうちの少なくとも1つをさらに含むように動作を実行するように構成される、請求項26に記載のコンピューティングデバイス。
【請求項２８】
前記プロセッサが、プロセッサ実行可能命令によって、
前記サンドボックスセッションが終了したかどうかを判定する動作と、
前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行する動作と、
前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにする動作とをさらに含む動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項２９】
前記プロセッサが、プロセッサ実行可能命令によって、前記サンドボックスセッションが終了したかどうかを判定する動作が、前記サンドボックスセッションが終了したことを示す別の信号を受信する動作を含むように動作を実行するように構成される、請求項28に記載のコンピューティングデバイス。
【請求項３０】
前記プロセッサが、プロセッサ実行可能命令によって、前記サンドボックスセッションティアダウン手順を実行する動作が、
サンドボックス化された構成要素に対してすべてのバッファを解放する動作と、
第2段階の変換ページテーブルを復元して、すべての断片化を解消する動作とを含むように動作を実行するように構成される、請求項28に記載のコンピューティングデバイス。
【請求項３１】
前記プロセッサが、プロセッサ実行可能命令によって、前記ハイパーバイザをイネーブルにする動作が、
PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにする動作と、
割込み要求がハイパーバイザモードで受けられるように構成する動作と、
SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる動作とを含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項３２】
前記プロセッサが、プロセッサ実行可能命令によって、デジタル信号プロセッサとのプロセッサ間通信を開始する動作をさらに含む動作を実行するように構成される、請求項31に記載のコンピューティングデバイス。
【請求項３３】
前記プロセッサが、プロセッサ実行可能命令によって、SMMU障害を処理する動作をさらに含む動作を実行するように構成される、請求項31に記載のコンピューティングデバイス。
【請求項３４】
前記プロセッサが、プロセッサ実行可能命令によって、アクセス制御を実施する動作が、第2段階の変換を実施する動作を含むように動作を実行するように構成される、請求項20に記載のコンピューティングデバイス。
【請求項３５】
前記プロセッサが、プロセッサ実行可能命令によって、アクセス制御を実施する動作が、
前記HLOSのハードウェア割込みへのアクセスの制限を再開する動作、
前記HLOSのハードウェアタイマへのアクセスの制限を再開する動作、および
前記HLOSのI/Oアクセスの制限を再開する動作のうちの少なくとも1つをさらに含むように動作を実行するように構成される、請求項34に記載のコンピューティングデバイス。
【請求項３６】
前記プロセッサが、プロセッサ実行可能命令によって、第2段階の変換を実施する動作が、
前記HLOSによるメモリを割り振ろうとする試みがないか監視する動作と、
前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供する動作とを含むように動作を実行するように構成される、請求項34に記載のコンピューティングデバイス。
【請求項３７】
前記プロセッサが、プロセッサ実行可能命令によって、前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定する動作と、
前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供する動作とをさらに含む動作を実行するように構成される、請求項36に記載のコンピューティングデバイス。
【請求項３８】
前記プロセッサが、プロセッサ実行可能命令によって、前記サンドボックス化された構成要素に前記物理アドレスを提供する動作が、
前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去する動作と、
前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供する動作とを含むように動作を実行するように構成される、請求項37に記載のコンピューティングデバイス。
【請求項３９】
ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化するための手段と、
初期化後に前記ハイパーバイザをディセーブルにするための手段と、
前記HLOSの中間物理アドレス空間中の中間物理アドレスが物理アドレス空間中の物理アドレスと等価になるように、前記HLOSがメモリを割り振るための手段と、
サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視するための手段と、
前記サンドボックスセッションを開始するための前記セキュリティモニタからの前記信号を受信したのに応答して、前記ハイパーバイザをイネーブルにするための手段と、
前記ハイパーバイザがイネーブル状態である間にアクセス制御を実施するための手段とを含む、コンピューティングデバイス。
【請求項４０】
前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項39に記載のコンピューティングデバイス。
【請求項４１】
前記ハイパーバイザが、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得る、請求項39に記載のコンピューティングデバイス。
【請求項４２】
前記HLOSの中間物理アドレス空間中の中間物理アドレスが物理アドレス空間中の物理アドレスと等価になるように、前記HLOSがメモリを割り振るための手段が、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振るための手段を含む、請求項39に記載のコンピューティングデバイス。
【請求項４３】
前記ハイパーバイザを初期化するための手段が、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証するための手段をさらに含む、請求項42に記載のコンピューティングデバイス。
【請求項４４】
前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成するための手段をさらに含む、請求項43に記載のコンピューティングデバイス。
【請求項４５】
前記ハイパーバイザをディセーブルにするための手段が、
すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成するための手段と、
前記HLOSについて第2段階の変換をオフにするための手段とを含む、請求項39に記載のコンピューティングデバイス。
【請求項４６】
前記ハイパーバイザをディセーブルにするための手段が、
前記HLOSのハードウェア割込みへのアクセスの制限を中断するための手段、
前記HLOSのハードウェアタイマへのアクセスの制限を中断するための手段、および
前記HLOSのI/Oアクセスの制限を中断するための手段のうちの少なくとも1つをさらに含む、請求項45に記載のコンピューティングデバイス。
【請求項４７】
前記サンドボックスセッションが終了したかどうかを判定するための手段と、
前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行するための手段と、
前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにするための手段とをさらに含む、請求項39に記載のコンピューティングデバイス。
【請求項４８】
前記サンドボックスセッションが終了したかどうかを判定するための手段が、前記サンドボックスセッションが終了したことを示す別の信号を受信するための手段を含む、請求項47に記載のコンピューティングデバイス。
【請求項４９】
前記サンドボックスセッションティアダウン手順を実行するための手段が、
サンドボックス化された構成要素に対してすべてのバッファを解放するための手段と、
第2段階の変換ページテーブルを復元して、すべての断片化を解消するための手段とを含む、請求項47に記載のコンピューティングデバイス。
【請求項５０】
前記ハイパーバイザをイネーブルにするための手段が、
PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにするための手段と、
割込み要求がハイパーバイザモードで受けられるように構成するための手段と、
SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる手段とを含む、請求項39に記載のコンピューティングデバイス。
【請求項５１】
デジタル信号プロセッサとのプロセッサ間通信を開始するための手段をさらに含む、請求項50に記載のコンピューティングデバイス。
【請求項５２】
SMMU障害を処理するための手段をさらに含む、請求項50に記載のコンピューティングデバイス。
【請求項５３】
アクセス制御を実施するための手段が、第2段階の変換を実施するための手段を含む、請求項39に記載のコンピューティングデバイス。
【請求項５４】
アクセス制御を実施するための手段が、
前記HLOSのハードウェア割込みへのアクセスの制限を再開するための手段、
前記HLOSのハードウェアタイマへのアクセスの制限を再開するための手段、および
前記HLOSのI/Oアクセスの制限を再開するための手段のうちの少なくとも1つをさらに含む、請求項53に記載のコンピューティングデバイス。
【請求項５５】
第2段階の変換を実施するための手段が、
前記HLOSによるメモリを割り振ろうとする試みがないか監視するための手段と、
前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供するための手段とを含む、請求項53に記載のコンピューティングデバイス。
【請求項５６】
前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定するための手段と、
前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供するための手段とをさらに含む、請求項55に記載のコンピューティングデバイス。
【請求項５７】
前記サンドボックス化された構成要素に前記物理アドレスを提供するための手段が、
前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去するための手段と、
前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供するための手段とを含む、請求項56に記載のコンピューティングデバイス。
【請求項５８】
プロセッサにコンピューティングデバイス上のメモリを管理するための動作を実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記動作が、
ハイパーバイザ、セキュリティモニタ、およびハイレベルオペレーティングシステム(HLOS)を初期化する動作と、
初期化後に前記ハイパーバイザをディセーブルにする動作と、
前記HLOSの中間物理アドレス空間中の中間物理アドレスが物理アドレス空間中の物理アドレスと等価になるように、前記HLOSがメモリを割り振る動作と、
サンドボックスセッションを開始するための前記セキュリティモニタからの信号がないかどうか監視する動作と、
前記サンドボックスセッションを開始するための前記セキュリティモニタからの前記信号を受信したのに応答して、前記ハイパーバイザをイネーブルにする動作と、
前記ハイパーバイザがイネーブル状態である間にアクセス制御を実施する動作とを含む、非一時的プロセッサ可読記憶媒体。
【請求項５９】
前記セキュリティモニタが、ARM TrustZone(登録商標)である、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項６０】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザが、集積回路の境界およびチップの境界のうちの少なくとも1つにまたがってディセーブルまたはイネーブルにされ得るように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項６１】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記HLOSの中間物理アドレス空間中の中間物理アドレスが物理アドレス空間中の物理アドレスと等価になるように、前記HLOSがメモリを割り振る動作が、前記HLOSの中間物理アドレス空間中の各中間物理アドレスが前記物理アドレス空間中の対応する物理アドレスと等しくなるようにメモリ空間を割り振る動作を含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項６２】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザを初期化する動作が、前記セキュリティモニタによって前記ハイパーバイザのコードおよびデータを認証する動作をさらに含むように動作をプロセッサに実行させるように構成される、請求項61に記載の非一時的プロセッサ可読記憶媒体。
【請求項６３】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザのコードおよびデータを、前記ハイパーバイザがイネーブル状態である間は、デジタル信号プロセッサおよび前記デジタル信号プロセッサに含まれるCPUのうちの少なくとも1つからアクセス不能になるように構成する動作をさらに含む動作をプロセッサに実行させるように構成される、請求項62に記載の非一時的プロセッサ可読記憶媒体。
【請求項６４】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザをディセーブルにする動作が、
すべてのシステムメモリ管理ユニット(SMMU)のコンテキストバンクを、第2段階の変換をバイパスするように構成する動作と、
前記HLOSについて第2段階の変換をオフにする動作とを含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項６５】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザをディセーブルにする動作が、
前記HLOSのハードウェア割込みへのアクセスの制限を中断する動作、
前記HLOSのハードウェアタイマへのアクセスの制限を中断する動作、および
前記HLOSのI/Oアクセスの制限を中断する動作のうちの少なくとも1つをさらに含むように動作をプロセッサに実行させるように構成される、請求項64に記載の非一時的プロセッサ可読記憶媒体。
【請求項６６】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックスセッションが終了したかどうかを判定する動作と、
前記サンドボックスセッションが終了したと判定されたときに、サンドボックスセッションティアダウン手順を実行する動作と、
前記サンドボックスセッションティアダウン手順を実行した後で、前記ハイパーバイザをディセーブルにする動作とをさらに含む動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項６７】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックスセッションが終了したかどうかを判定する動作が、前記サンドボックスセッションが終了したことを示す別の信号を受信する動作を含むように動作をプロセッサに実行させるように構成される、請求項66に記載の非一時的プロセッサ可読記憶媒体。
【請求項６８】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックスセッションティアダウン手順を実行する動作が、
サンドボックス化された構成要素に対してすべてのバッファを解放する動作と、
第2段階の変換ページテーブルを復元して、すべての断片化を解消する動作とを含むように動作をプロセッサに実行させるように構成される、請求項66に記載の非一時的プロセッサ可読記憶媒体。
【請求項６９】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記ハイパーバイザをイネーブルにする動作が、
PL0およびPL1の第2段階のメモリ管理ユニットをイネーブルにする動作と、
割込み要求がハイパーバイザモードで受けられるように構成する動作と、
SMMUドライバを呼び出して、すべてのアクティブなSMMUのコンテキストバンクを、第2段階の変換内にネストされた第1段階の変換に入れる動作とを含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項７０】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、デジタル信号プロセッサとのプロセッサ間通信を開始する動作をさらに含む動作をプロセッサに実行させるように構成される、請求項69に記載の非一時的プロセッサ可読記憶媒体。
【請求項７１】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、SMMU障害を処理する動作をさらに含む動作をプロセッサに実行させるように構成される、請求項69に記載の非一時的プロセッサ可読記憶媒体。
【請求項７２】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、アクセス制御を実施する動作が、第2段階の変換を実施する動作を含むように動作をプロセッサに実行させるように構成される、請求項58に記載の非一時的プロセッサ可読記憶媒体。
【請求項７３】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、アクセス制御を実施する動作が、
前記HLOSのハードウェア割込みへのアクセスの制限を再開する動作、
前記HLOSのハードウェアタイマへのアクセスの制限を再開する動作、および
前記HLOSのI/Oアクセスの制限を再開する動作のうちの少なくとも1つをさらに含むように動作をプロセッサに実行させるように構成される、請求項72に記載の非一時的プロセッサ可読記憶媒体。
【請求項７４】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、第2段階の変換を実施する動作が、
前記HLOSによるメモリを割り振ろうとする試みがないか監視する動作と、
前記HLOSがメモリを割り振ろうと試みているときに、前記HLOSからアクセス可能な物理アドレス空間中の1つまたは複数の物理アドレスを前記HLOSに提供する動作とを含むように動作をプロセッサに実行させるように構成される、請求項72に記載の非一時的プロセッサ可読記憶媒体。
【請求項７５】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記HLOSがメモリを割り振ろうと試みているときに、サンドボックス化された構成要素がメモリを割り振ろうと試みているかどうかを判定する動作と、
前記サンドボックス化された構成要素がメモリを割り振ろうと試みていると判定されたときに、前記サンドボックス化された構成要素に物理アドレス空間中の前記物理アドレスから物理アドレスを提供する動作とをさらに含む動作をプロセッサに実行させるように構成される、請求項74に記載の非一時的プロセッサ可読記憶媒体。
【請求項７６】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記サンドボックス化された構成要素に前記物理アドレスを提供する動作が、
前記サンドボックス化された構成要素に提供される前記物理アドレスを、前記HLOSからアクセス可能な前記物理アドレス空間中の前記物理アドレスから除去する動作と、
前記物理アドレス空間中の利用可能な物理アドレスから前記サンドボックス化された構成要素に前記物理アドレスを提供する動作とを含むように動作をプロセッサに実行させるように構成される、請求項75に記載の非一時的プロセッサ可読記憶媒体。
【国際調査報告】
2016517572.tif 000023
2016517572.tif 000024
2016517572.tif 000025