JP6240745B2 - 複数のハイパーバイザを実行するシステムおよび方法 - Google Patents

複数のハイパーバイザを実行するシステムおよび方法 Download PDF

Info

Publication number
JP6240745B2
JP6240745B2 JP2016501236A JP2016501236A JP6240745B2 JP 6240745 B2 JP6240745 B2 JP 6240745B2 JP 2016501236 A JP2016501236 A JP 2016501236A JP 2016501236 A JP2016501236 A JP 2016501236A JP 6240745 B2 JP6240745 B2 JP 6240745B2
Authority
JP
Japan
Prior art keywords
hypervisor
hardware processors
memory address
address translation
primary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016501236A
Other languages
English (en)
Other versions
JP2016529568A (ja
JP2016529568A5 (ja
Inventor
エリック・ジェームズ・プロンドケ
ルシアン・コドレスク
クリストファー・エドワード・クーブ
ピユシュ・パテル
トーマス・アンドリュー・サルトリウス
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2016529568A publication Critical patent/JP2016529568A/ja
Publication of JP2016529568A5 publication Critical patent/JP2016529568A5/ja
Application granted granted Critical
Publication of JP6240745B2 publication Critical patent/JP6240745B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Description

関連出願の相互参照
本出願は、2013年3月14日に出願した本願の所有者が所有する米国非仮特許出願第13/829,023号の優先権を主張するものであり、2013年3月14日に出願した同時係属中の米国非仮特許出願第13/828,183号および2013年2月26日に出願した同時係属中の米国非仮特許出願第13/777,314号に関する。これらの出願の各々の内容は、参照によりそれらの全体が組み込まれている。
本開示は、一般的に、複数のハイパーバイザを使用するオペレーティングシステムの仮想化に関する。
技術の進歩の結果として、より小型かつより強力なコンピューティングデバイスが登場した。たとえば、現在、小型、軽量、かつユーザによって容易に携行される、携帯無線電話機、携帯情報端末(PDA)、タブレットコンピュータ、およびページング装置など、ワイヤレスコンピューティングデバイスを含む、様々なポータブルパーソナルコンピューティングデバイスが存在する。そのような多くのコンピューティングデバイスは、そこに組み込まれた他のデバイスを含む。たとえば、ワイヤレス電話は、また、デジタルスチールカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤを含む可能性がある。また、そのようなコンピューティングデバイスは、インターネットにアクセスするために使用できるウェブブラウザアプリケーション、およびスチールカメラまたはビデオカメラを利用し、マルチメディア再生機能を提供するマルチメディアアプリケーションなど、ソフトウェアアプリケーションを含む、実行可能命令を処理することができる。
モバイル電話などのコンピューティングデバイスは、複数のプロセッサを含み得る。たとえば、モバイル電話は、中央処理装置(CPU)(アプリケーションプロセッサとも呼ばれる)およびデジタル信号プロセッサ(DSP)を含み得る。各プロセッサは、特定の計算タスクを実行するために他方のプロセッサよりも適している場合がある。たとえば、主要なプロセッサとして機能することができ、モバイル電話のオペレーティングシステムを実行できるCPUは、ウェブブラウザおよびユーザインターフェースコードなど、「制御コード」を実行するときにより効率的な場合がある。一方、信号処理および他の数値演算集約的な機能を実行する場合、DSPはCPUよりも効率的な場合がある。CPUおよびDSPは、別個の命令セットアーキテクチャを有することができる。したがって、CPUで実行するように設計されたアプリケーションは、DSPと互換性がない場合があり、その逆もあり得る。
状況によっては、単一のコンピューティングデバイスで複数のオペレーティングシステムを実行することが有利な場合がある。複数のオペレーティングシステムを実行するコンピューティングデバイスでは、オペレーティングシステムに使用可能なハードウェアリソースの抽象的概念を提供するために、ハイパーバイザ(仮想コンピュータモニタとしても知られている)を使用することができる。したがって、ハイパーバイザは、複数のオペレーティングシステムに対するオペレーティングシステムとして機能することができる。しかしながら、異なる命令セットアーキテクチャを有するプロセッサのセットを横断して同時に実行され得るハイパーバイザを設計するのは難しい場合がある。
プロセッサの複数のセットを横断するハイパーバイザ実行のシステムおよび方法が開示される。記述した技術によると、システムのハイパーバイザの1つは「プライマリ」ハイパーバイザでありの場合があり、システムの残りのハイパーバイザは「セカンダリ」ハイパーバイザの場合がある。プライマリハイパーバイザは、セカンダリハイパーバイザとは異なるプロセッサのセットで実行することができる。たとえば、プライマリハイパーバイザは、セカンダリハイパーバイザとは異なる命令セットアーキテクチャと互換性を有する場合がある。
プライマリハイパーバイザは、セカンダリハイパーバイザが特定の動作を実行することを限定することができ、代わりに、限定された動作を実行するために、プライマリハイパーバイザに依存することをセカンダリハイパーバイザに強制することができる。たとえば、プライマリハイパーバイザは、セキュリティ目的のためにセカンダリハイパーバイザのために物理アドレスマッピングを決定することができる。(たとえば、複数のセカンダリハイパーバイザが同じ物理アドレスへのマッピングを作成することを試みる状況を防ぐため)。
セカンダリハイパーバイザは、プライマリハイパーバイザに依存せずに、特定の動作を実行することができる。たとえば、セカンダリハイパーバイザは、プライマリハイパーバイザによる干渉なくタスクスケジューリングを実行できる場合がある。セカンダリハイパーバイザが自身のタスクスケジューリングを実行できるようにすることで、セカンダリハイパーバイザで実行されているゲストオペレーティングシステムに対して、セカンダリハイパーバイザがサービス品質(QoS)保証(たとえば遅延保証)を維持することを可能にすることができる。
特定の実施形態では、装置は、プロセッサの第1のセットで実行可能なプライマリハイパーバイザおよびプロセッサの第2のセットで実行可能なセカンダリハイパーバイザを含む。プライマリハイパーバイザは、メモリアドレス変換マッピングをプログラムするように構成され、セカンダリハイパーバイザは、メモリアドレス変換マッピングを使用するように構成される。
別の具体的な実施形態では、装置は、プロセッサの第1のセットで実行可能なプライマリハイパーバイザおよびプロセッサの第2のセットで実行可能なセカンダリハイパーバイザを含む。プライマリハイパーバイザは、第1のスケジューラを含み、セカンダリハイパーバイザは、第1のスケジューラとは異なる第2のスケジューラを含む。
別の具体的な実施形態では、装置は、プロセッサの第1のセットで実行可能なプライマリハイパーバイザおよびプロセッサの第2のセットで実行可能なセカンダリハイパーバイザを含む。プライマリハイパーバイザは、リソースの設定を定義するように構成され、セカンダリハイパーバイザは、設定に基づいてリソースを使用するように構成される。
別の具体的な実施形態では、方法は、プロセッサの第2のセットで実行されるセカンダリハイパーバイザによって、プロセッサの第1のセットで実行されるプライマリハイパーバイザによってプログラムされた1つまたは複数のメモリアドレス変換マッピングを取り出すステップを含む。方法は、また、データアクセス動作の間に、取り出された1つまたは複数のメモリアドレス変換マッピングを使用するステップを含む。
別の具体的な実施形態では、装置は、処理するための第1の手段および処理するための第2の手段を含む。装置は、また、メモリアドレス変換をプログラムするための手段を含み、プログラムするための手段は、処理するための第1の手段で実行可能である。装置は、メモリアドレス変換を使用するための手段をさらに含み、使用するための手段は、処理するための第2の手段で実行可能である。
別の具体的な実施形態では、非一時的コンピュータ可読媒体は、コンピュータによって実行されたとき、コンピュータが、プロセッサの第2のセットで実行されているセカンダリハイパーバイザによって、プロセッサの第1のセットで実行されているプライマリハイパーバイザによってプログラムされた1つまたは複数のメモリアドレス変換マッピングを取り出すことを生じさせる命令を含む。命令は、また、コンピュータによって実行されたとき、コンピュータが、データアクセス動作の間に、取り出された1つまたは複数のメモリアドレス変換マッピングを使用することを生じさせる。
開示した実施形態の少なくとも1つによって提供される特定の利点の1つは、プロセッサの異なるセット(たとえば、異なる命令セットアーキテクチャを有するプロセッサのセット)で複数のハイパーバイザの実行をサポートする能力である。本開示の他の態様、利点、および機能は、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲の節を含む出願全体を検討した後に明白になるであろう。
複数のハイパーバイザを実行するように動作可能なシステムの具体的な実施形態を示す図である。 図1のシステムによって使用され得るアドレス変換マッピングの具体的な実施形態を示す図である。 複数のハイパーバイザを実行する方法の具体的な実施形態を示す流れ図である。 複数のハイパーバイザの実行をサポートするように動作可能な構成要素を含むワイヤレスデバイスを示すブロック図である。
図1は、複数のハイパーバイザを実行するように動作可能なシステム100の具体的な実施形態を示す図である。システム100は、プロセッサの第1のセット110で実行可能なプライマリハイパーバイザ111およびプロセッサの第2のセット120で実行可能なセカンダリハイパーバイザ121を含む。プロセッサのセット110、120の各々は、本明細書にさらに記述するように、1つまたは複数のプロセッサ、処理ユニット、コア、および/またはハードウェアスレッドを含むことができる。マルチスレッドのプロセッサは、同時に実行されている複数のハードウェア実行コンテキストを用いるプロセッサを介して、または単一のハードウェア実行コンテキストを用いる複数のプロセッサとして(たとえば、対称型マルチプロセッシング(SMP)クラスタ)実装され得る。
たとえば、プライマリハイパーバイザ111は、第1の(たとえばCPUに特有の)命令セットアーキテクチャに従って、1つまたは複数の中央処理装置(CPU)コア/ハードウェアスレッドで実行することができ、セカンダリハイパーバイザ121は、第2の(たとえばDSPに特有の)命令セットアーキテクチャに従って、1つまたは複数のデジタル信号プロセッサ(DSP)コア/ハードウェアスレッドで実行することができる。本明細書に記載のCPUおよびDSPの記述は、例示のみを目的とすることに注意されたい。ネットワーク処理ユニット(NPU)、グラフィック処理ユニット(GPU)など、他のプロセッサまたはプロセッサのセットもシステム100に含まれ得る。
各ハイパーバイザ111、121は、1つまたは複数のゲストオペレーティングシステムによって、プロセッサ110、120へのアクセスを調停することができる。ゲストオペレーティングシステムは、アプリケーションプログラミングインターフェース(API)、共有されたメモリ区域を使用するか、または他の何らかのメカニズムを介して、ハイパーバイザ111、121と通信することができる。プライマリハイパーバイザ111は、プロセッサの第1のセット110で実行されるゲストオペレーティングシステム(複数可)のために「ローカル」スケジューリングを実行するように構成された第1のスケジューラ112を含むことができる。ハイパーバイザによる「ローカル」スケジューリングは、ハイパーバイザに対応するプロセッサのセットで排他的に実行されるゲストオペレーティングシステムのためにハイパーバイザによって実行される動作をスケジューリングすることを表す場合がある。たとえば、プライマリハイパーバイザ111は、プロセッサの第1のセット110で実行するために第1のゲストオペレーティングシステム113の仮想プロセッサ114をスケジューリングすることができる。仮想プロセッサ114の各々は、第1のゲストオペレーティングシステム113のタスク151に対応する場合がある(たとえば、第1のゲストオペレーティングシステム113で実行されているアプリケーションによって作成されたタスク)。
セカンダリハイパーバイザ121は、プロセッサの第2のセット120で実行されるゲストオペレーティングシステム(複数可)のために「ローカル」スケジューリングを実行するように構成された第2のスケジューラ122を含むことができる。たとえば、セカンダリハイパーバイザ121は、プロセッサの第2のセット120で実行するために第2のゲストオペレーティングシステム123の仮想プロセッサ124をスケジューリングすることができる。仮想プロセッサ124の各々は、第2のゲストオペレーティングシステム123のタスク152に対応する場合がある(たとえば、第2のゲストオペレーティングシステム123で実行されているアプリケーションによって作成されたタスク)。したがって、ハイパーバイザ111、121の観点から、仮想プロセッサ114、124の各々は、スケジューリング可能なエンティティである。反対に、ゲストオペレーティングシステム113および123の観点から、仮想プロセッサ114、124の各々は、ハードウェアリソースの抽象的概念である。
スケジューラ112、122は、同じスケジューリングアルゴリズムを使用することも、または異なるスケジューリングアルゴリズムを使用することもできる。たとえば、図1において、第1のスケジューラ112は、タイムスライススケジューリングを実行し、第2のスケジューラ122は、優先度ベースのスケジューリングを実行する。説明するために、第2のスケジューラ122は、仮想プロセッサ124の優先度に基づいて、優先度ベースのスケジューリングを実行することができる。各ハイパーバイザ111、121がローカルスケジューリングに対する責任を保持することを可能にすることによって、図1のシステム100は、各ハイパーバイザ111、121が、サービスの品質(QoS)保証を維持することを可能にできる場合があることを理解されるであろう。たとえば、プロセッサの第2のセット120は、モバイル電話のDSPに対応する場合があり、セカンダリハイパーバイザ121は、モデムオペレーティングシステムまたはオーディオ/音声処理オペレーティングシステムなど、ゲストリアルタイムオペレーティングシステム(RTOS)に対する遅延制約に準拠するために、特定のスケジューリングアルゴリズムを実行することができる。
仮想アドレス(VA)、中間物理アドレス(IPA)、および物理アドレス(PA)という、3タイプのメモリアドレスをシステム100で使用することができる。各仮想アドレスは、仮想アドレス空間に関連付けられ得て、複数の仮想アドレス空間は、システム100で使用されている場合がある。たとえば、各ゲストオペレーティングシステム113、123は、異なる仮想アドレス空間を使用することができる。各中間物理アドレスは、中間物理アドレス空間に関連付けられ得て、複数の中間物理アドレス空間は、システム100で使用されている場合がある。たとえば、各ゲストオペレーティングシステム113、123は、異なる中間物理アドレス空間を使用することができる。メモリの区域(たとえばランダムアクセスメモリ(RAM)、ディスクベースのメモリ、キャッシュメモリ、レジスタメモリなど)に直接的にアクセスするために使用され得る物理アドレス、およびメモリがマッピングされたデバイス(たとえば入力/出力(I/O)デバイス)は、単一の物理アドレス空間に属する場合がある。
仮想アドレス、中間物理アドレス、および物理アドレスがシステム100で使用されている場合、2つのタイプのアドレス変換マッピングがシステム100で定義され得る。第1のタイプのアドレス変換マッピングは、仮想アドレスから中間物理アドレスへの場合があり、第2のタイプのアドレス変換マッピングは、中間物理アドレスから物理アドレスへの場合がある。したがって、システム100の仮想アドレスに対する「完全な」アドレス変換マッピングは、仮想アドレスから中間物理アドレスへの「第1段階の」変換と、それに続く中間物理アドレスから物理アドレスへの「第2段階の」変換を含むことができる。第1段階および第2段階の変換の実施例については、図2に関してさらに記述する。
特定の実施形態では、タスク151および第1のゲストオペレーティングシステム113は、第1の仮想アドレス空間の一部である仮想アドレスを使用して、メモリおよびメモリがマッピングされたデバイスに格納されたデータを参照する場合がある。タスク152および第2のオペレーティングシステム123は、第2の仮想空間の一部である仮想アドレスを使用して、メモリおよびメモリがマッピングされたデバイスに格納されたデータを参照する場合がある。ゲストオペレーティングシステム113、123の各々は、それぞれの仮想アドレス空間に対して第1段階(つまりVAからIPA)の変換141、142を定義することができる。IPAは、メモリまたはメモリがマッピングされたデバイスにアクセスするために直接的に使用され得ないので、各ゲストオペレーティングシステム113、123が、それ自身の第1段階の変換141、142を定義することを許可することは、セキュリティのリスクをもたらさないことを理解されるであろう。
物理アドレスマッピング(つまり第2段階の変換)を決定するための責任は、セキュリティの理由のために、プライマリハイパーバイザ111のみに割り当てられ得る。たとえば、プライマリハイパーバイザ111だけがメモリの物理アドレスに対するマッピングを決定することを許可することで、セカンダリハイパーバイザ121が、プライマリハイパーバイザ111および/または別のセカンダリハイパーバイザによって定義されたマッピングに競合する物理アドレスマッピングを定義することを試みるという状況を防ぐことができる。セカンダリハイパーバイザ121は、したがって、特定の機能(たとえば第2段階の変換の決定すること)のためにプライマリハイパーバイザ111に依存する「シン(thin)」ハイパーバイザの場合がある。
第2段階の変換を決定するために、プライマリハイパーバイザ111は、物理アドレス変換マッピングモジュール115を含むことができる。特定の実施形態では、物理アドレス変換マッピングモジュール115は、第2段階の変換116をプログラムし、構成データ117を決定することができる(たとえば、メモリの第2段階の変換116の位置)。物理アドレス変換マッピングモジュール115は、プロセッサの第2のセット120に関して排他的に実行されるゲストオペレーティングシステムを含む(たとえばゲストオペレーティングシステム123)システム100のすべてのゲストオペレーティングシステムに対して第2段階の変換116をプログラムすることができる。本明細書で使用する場合、特定のプロセッサまたはプロセッサのセットで実行するために、(たとえばハイパーバイザによって)ゲストオペレーティングシステム(またはタスクに対応する少なくとも1つの仮想プロセッサ)の少なくとも1つのタスクをスケジューリングされ得る場合、ゲストオペレーティングシステムは、特定のプロセッサまたはプロセッサのセット「に関して」実行することができる。したがって、物理アドレス変換マッピングモジュール115は、第1のゲストオペレーティングシステム113と第2のゲストオペレーティングシステム123の両方に対して第2段階の変換116をプログラムすることができる。
第2のゲストオペレーティングシステム123によって提供される仮想アドレスに対してアドレス変換を実行する場合、第2段階の変換116を提供するために、セカンダリハイパーバイザ121は、プライマリハイパーバイザ111に依存する場合がある。セカンダリハイパーバイザ121は、プロセッサ仮想化を実行するために、プライマリハイパーバイザ111によって提供される第2段階の変換116を使用することができる。したがって、図1に示すように、プライマリハイパーバイザ111は、第2段階の変換116および構成データ117への読み取り/書き込み(RW)アクセスを有することができる一方、セカンダリハイパーバイザ121は、第2段階の変換116および構成データ117への読み取り専用(RO)アクセスを有する。
特定の実施形態では、プライマリハイパーバイザ111は、プロセッサの第2のセット120に関して排他的に実行されるゲストオペレーティングシステムを含む、すべてのゲストオペレーティングシステムを開始および停止するように構成された開始/停止モジュール118を含むことができる。したがって、プライマリハイパーバイザ111の開始/停止モジュール118は、セカンダリハイパーバイザ121からの要求に応じて第2のゲストオペレーティングシステム123を開始または停止することができる。
特定の実施形態では、システム100は、異なる命令セットアーキテクチャを有するプロセッサでゲストオペレーティングシステムの単一のインスタンスの同時実行をサポートすることができる。たとえば、第3のゲストオペレーティングシステム133は、プロセッサの第1のセット110およびプロセッサの第2のセット120で同時に実行可能な場合がある。第3のゲストオペレーティングシステム133のタスク153に対応する第3のゲストオペレーティングシステム133の仮想プロセッサ134は、スケジューラ112、122のいずれかによってスケジューリングすることができる。第3のゲストオペレーティングシステム133は、それ自身の第1段階の変換143を定義することができるが、第2段階の変換116のためにプライマリハイパーバイザ111に依存する場合がある。
動作の間に、プライマリハイパーバイザ111のゲスト開始/停止モジュール118は、第1のゲストオペレーティングシステム113を開始することができる。ゲスト開始/停止モジュール118は、また、セカンダリハイパーバイザ121からの要求に応じて、第2のゲストオペレーティングシステム123を開始することができる。第1のゲストオペレーティングシステム113は、ハードウェアプロセッサの第1のセット110で実行するために仮想プロセッサ114をスケジューリングすることができ、第2のゲストオペレーティングシステム123は、ハードウェアプロセッサの第2のセット120で実行するために仮想プロセッサ124をスケジューリングすることができる。
メモリがシステム100で割り当てられると、ゲストオペレーティングシステム113、123の各々は、それぞれの第1段階の変換141、142を定義することができる。すべての第2段階の変換116は、プライマリハイパーバイザ111の物理アドレス変換モジュール115によって定義され得る。物理アドレス変換モジュール115は、また、リソース設定(たとえば構成データ117)を定義することができる。したがって、プライマリハイパーバイザ111は、第2段階の変換116および構成データ117への読み取り書き込みアクセスを有することができる(たとえば、システム100のすべてのハイパーバイザのためのページテーブルを確立および修正するため)。第2段階の変換116および構成データ117は、アドレス変換を実行するために、セカンダリハイパーバイザ121によって読み取り専用の方法でアクセスされ得る。たとえば、第2段階の変換116は、仮想プロセッサ124の1つへのコンテキスト切り換え時にセカンダリハイパーバイザ121によってロードされ得る。したがって、図1のシステム100はシステム(プライマリハイパーバイザ111は、1つまたは複数のリソースの設定を定義し(たとえば物理メモリに対するアドレスマッピング)、セカンダリハイパーバイザ121は、様々な動作(たとえばアドレス変換)を実行するためにプライマリハイパーバイザ111によって定義されたリソースの設定を使用する)を提供する。
特定の実施形態では、図1に示した論理モジュールおよび/または機能モジュールの各々(たとえば、スケジューラ112、122、物理アドレス変換マッピングモジュール115、およびゲスト開始/停止モジュール118)は、プロセッサ110または120によって実行可能なソフトウェア命令を使用して実装される。あるいは、そのような機能は、コントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)デバイス、または他の何らかのデバイスなど、ハードウェアデバイスを使用して実装され得る。しかし、様々なモジュール間の動作の分割は、例示のみを目的としていることに注意するべきである。代替実施形態では、特定のモジュールに関して記述した機能は、より多くのモジュールまたはより少ないモジュールを使用して実行され得る。
図1のシステム100は、したがって、異種混合の命令セットアーキテクチャを有するプロセッサを含む、プロセッサの異なるセットで複数のハイパーバイザの同時実行を可能にすることができる。有利なことに、図1のシステム100は、他のハイパーバイザ動作の複製を限定しながら、特定のハイパーバイザ動作の複製を可能にできる場合がある。たとえば、図1のシステム100は、すべてのハイパーバイザがスケジューリングを実行することを可能にすることによって、QoSを維持するコンピュータ環境を提供することができる。図1のシステム100は、プライマリハイパーバイザだけが第2段階の変換を定義すること、およびゲストオペレーティングシステムを開始/停止することを可能にすることによって、セキュリティを維持することができる。
図2は、アドレス変換マッピングの実施例を示している。図1に関して記述したように、アドレス変換は、2つの段階で発生する場合がある。各ゲストオペレーティングシステムの仮想プロセッサは、仮想アドレスを使用してデータを参照することができ、各ゲストオペレーティングシステムは、中間物理アドレスに仮想アドレスをマッピングすることができる。たとえば、図2は、第1のゲストオペレーティングシステムの仮想プロセッサ(VP)201、202(たとえば図1の第1のゲストオペレーティングシステム113)および第2のゲストオペレーティングシステムの仮想プロセッサ203、204(たとえば、図1の第2のゲストオペレーティングシステム123)を示している。
仮想プロセッサ201、202によって使用される仮想アドレスは、図示するように、第1のゲストオペレーティングシステムによって、第1の中間物理アドレス空間205(「IPA1」と記載)にマッピングされ得る。第2のゲストオペレーティングシステムの仮想プロセッサ203、204によって使用される仮想アドレスは、図示するように、第2のゲストオペレーティングシステムによって、第2の中間物理アドレス空間206(「IPA2」と記載)にマッピングされ得る。図1に関して記述したように、中間アドレスは、物理アドレスにマッピングされ得て、そのようなすべてのIPAからPAへのマッピングは、プライマリハイパーバイザによって処理されて定義され得る。
たとえば、第1の仮想プロセッサ201は、中間物理アドレス212の範囲にマッピングされた仮想アドレスの範囲を使用することができる。第2の仮想プロセッサ202は、中間物理アドレス211、213の範囲にマッピングされた仮想アドレスの範囲を使用することができる。第3の仮想プロセッサ203は、第2のゲストオペレーティングシステムによって、中間物理アドレス221および222の範囲にマッピングされた仮想アドレスの範囲を使用することができる。第4の仮想プロセッサ204は、物理アドレス223の範囲にマッピングされた仮想アドレスの範囲を使用することができる。
中間物理アドレス211〜213、221〜223の各範囲は、図示するように、単一の物理アドレス空間(「PA」と記載)207内の物理アドレス231〜235の対応する範囲にマッピングされ得る。特定の実施形態では、異なる中間物理アドレス空間からのアドレス範囲は、同じ物理アドレスにマッピングされ得る。たとえば、図2は、中間物理アドレス212および221の両方の範囲が物理アドレス232の同じ範囲にマッピングされていることを示している。そのような共有されたマッピングは、第1のゲストオペレーティングシステムと第2のゲストオペレーティングシステムの両方は、物理アドレス232の範囲に対応するデータまたはメモリがマッピングされたデバイスにアクセスすることを示す場合がある。たとえば、物理アドレス232の範囲は、タイマなどゲストオペレーティングシステム(およびハイパーバイザ)間で共有される仮想化されたデバイスを表す場合がある。
第1のハイパーバイザが、仮想デバイスに対してメモリがマッピングされた区域を含むが、第2のハイパーバイザが、仮想デバイスに対してメモリがマッピングされた区域を含まない場合、第1のハイパーバイザは、そのゲストオペレーティングシステムに仮想デバイスへのアクセスを提供できるが、第2のハイパーバイザは、そのゲストオペレーティングシステムに仮想デバイスへのアクセスを提供できない場合がある。両方のハイパーバイザが仮想デバイスに対してメモリがマッピングされた区域を含む場合、一方のハイパーバイザは、そのゲストオペレーティングシステムに仮想デバイスへのアクセスを提供することができる。
図3は、複数のハイパーバイザを実行する方法300の具体的な実施形態を示す流れ図である。例示的な一実施形態では、方法300は、図1のシステム100で実行され得る。
方法300は、プロセッサの第2のセットで実行されているセカンダリハイパーバイザによって、302でプロセッサの第1のセットで実行されているプライマリハイパーバイザによってプログラムされた1つまたは複数のメモリアドレス変換マッピングを取り出すステップを含むことができる。1つまたは複数のメモリアドレス変換マッピングは、第2段階の変換(たとえばIPAからPAへの変換)を含む場合がある。たとえば、図1を参照すると、セカンダリハイパーバイザ121は、プライマリハイパーバイザ111によってプログラムされた第2段階の変換116を取り出すことができる。
方法300は、また、304で、データアクセス動作の間に、取り出された1つまたは複数のメモリアドレス変換マッピングを使用するステップを含むことができる。データアクセス動作は、読み取り動作または書き込み動作の場合がある。たとえば、図1を参照すると、セカンダリハイパーバイザ121は、読み取り動作または書き込み動作のターゲットである特定の物理アドレスを決定するために、読み取り動作または書き込み動作の間に、第2段階の変換116を使用することができる。
方法300は、また、306で、セカンダリハイパーバイザのスケジューラによって、プロセッサの第2のセットで実行するために仮想プロセッサをスケジューリングするステップを含むことができる。仮想プロセッサは、セカンダリハイパーバイザで実行されている第2のゲストオペレーティングシステムのタスクに対応する。スケジューリングは、プライマリハイパーバイザのスケジューラと無関係に実行される。たとえば、図1を参照すると、スケジューラ122は、プロセッサの第2のセット120で実行するためにタスク152の1つに対応する仮想プロセッサ124の1つをスケジューリングすることができる。スケジューラ122の動作は、プライマリハイパーバイザ111のスケジューラ112の動作に依存しない場合がある(たとえば、スケジューラ112、122の両方は、他方のスケジューラと無関係に異なるスケジューリングアルゴリズムを使用して、「ローカル」スケジューリングを実行することができる)。
図3の方法300は、デジタル信号プロセッサ(DSP)、中央処理装置(CPU)などの処理ユニット、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、特定用途向け集積回路(ASIC)、別のハードウェアデバイス、ファームウェアデバイス、またはそれらの任意の組合せによって実装され得る。例を挙げると、図4に関して記述したように、図3の方法300は、命令を実行するプロセッサによって実行され得る。
図4を参照すると、電子デバイス400のブロック図が示されている。電子デバイス400は、中央処理装置(CPU)(複数可)などプロセッサの第1のセット410およびデジタル信号プロセッサ(DSP)(複数可)などプロセッサの第2のセット474を含み、それぞれがメモリ432に結合されている。プロセッサの第1のセット410およびプロセッサの第2のセット474は、異なる命令セットアーキテクチャを有することができる。例示的な一実施形態では、プロセッサの第1のセット410は、図1のプロセッサの第1のセット110であり、プロセッサの第2のセット474は、図1のプロセッサの第2のセット120である。電子デバイス400、またはその構成要素は、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定された位置データユニット、コンピューティングデバイス、またはそれらの任意の組合せに含まれ得る。
図4は、また、プロセッサのセット410、474およびディスプレイ428に結合されたディスプレイコントローラ426を示している。符号器/復号器(CODEC)434は、また、プロセッサのセット410、474に結合され得る。スピーカ436およびマイクロフォン438は、CODEC434に結合され得る。図4は、また、ワイヤレス制御装置440は、(たとえば無線周波数(RF)インターフェースを介して)プロセッサのセット410、474およびアンテナ442に結合され得ることを示している。
メモリ432は、実行可能命令456を含む有形の非一時的コンピュータ可読の記憶媒体またはプロセッサ可読の記憶媒体の場合がある。命令456は、図3の方法300を含む、本明細書に記述した様々な機能および方法を実行するために、プロセッサのセット410、474など、プロセッサ(複数可)によって実行され得る。メモリ432は、また、プライマリハイパーバイザ457(たとえば図1のプライマリハイパーバイザ111)、セカンダリハイパーバイザ458(たとえば図1のセカンダリハイパーバイザ121)、および1つまたは複数のゲストオペレーティングシステム459(たとえば、図1のゲストオペレーティングシステム113、123、および/または133の1つまたは複数)に対応する命令を格納することができる。
特定の実施形態では、プロセッサのセット410、474、ディスプレイコントローラ426、メモリ432、CODEC434、およびワイヤレス制御装置440は、システムインパッケージまたはシステムオンチップのデバイス422に含まれている。特定の実施形態では、入力デバイス430および電源444は、システムオンチップデバイス422に結合される。その上、具体的な実施形態では、図4に示すように、ディスプレイ428、入力デバイス430、スピーカ436、マイクロフォン438、アンテナ442、および電源444は、システムオンチップデバイス422の外部にある。しかしながら、ディスプレイ428、入力デバイス430、スピーカ436、マイクロフォン438、アンテナ442、および電源444の各々は、インターフェースまたはコントローラなど、システムオンチップデバイス422の構成要素に結合され得る。
記述した実施形態に関連して、装置は、処理するための第1の手段および処理するための第2の手段を含む。たとえば、処理するための第1の手段は、図1のプロセッサの第1のセット110もしくは図4のプロセッサの第1のセット410のプロセッサなどハードウェアプロセッサ、データを処理するための1つまたは複数の他のデバイスもしくは回路、またはそれらの任意の組合せを含むことができる。処理するための第2の手段は、図1のプロセッサの第2のセット120もしくは図4のプロセッサの第2のセット474のプロセッサなどハードウェアプロセッサ、データを処理するための1つまたは複数の他のデバイスもしくは回路、またはそれらの任意の組合せを含むことができる。特定の実施形態では、処理するための第1の手段は、第1の命令セットアーキテクチャに関連付けられ、処理するための第2の手段は、第1の命令セットアーキテクチャとは異なる第2の命令セットアーキテクチャに関連付けられる。
装置は、また、メモリアドレス変換をプログラムするための手段を含み、プログラムするための手段は、処理するための第1の手段で実行可能である。たとえば、プログラムするための手段は、図1の物理アドレス変換マッピングモジュール115、図4のプライマリハイパーバイザ457、1つまたは複数の他のデバイス、回路、モジュール、もしくはメモリアドレス変換をプログラムするための命令、またはそれらの任意の組合せの場合がある。装置は、メモリアドレス変換を使用するための手段をさらに含むことができ、使用するための手段は、処理するための第2の手段で実行可能である。たとえば、使用するための手段は、図1のセカンダリハイパーバイザ121、図4のセカンダリハイパーバイザ458、1つまたは複数の他のデバイス、回路、モジュール、もしくメモリアドレス変換を使用するための命令、またはそれらの任意の組合せを含むことができる。
装置は、処理するための第1の手段で実行するために仮想プロセッサをスケジューリングするための第1の手段および処理のための第2の手段で実行するために仮想プロセッサをスケジューリングするための第2の手段を含むことができる。たとえば、スケジューリングするための第1の手段は、図1の第1のスケジューラ112、1つまたは複数の他のデバイス、回路、モジュール、もしくは実行するために仮想プロセッサをスケジューリングするための命令、またはそれらの任意の組合せを含むことができる。スケジューリングするための第2の手段は、図1の第2のスケジューラ122、1つまたは複数の他のデバイス、回路、モジュール、もしくは実行するために仮想プロセッサをスケジューリングするための命令、またはそれらの任意の組合せを含むことができる。
本明細書に開示された実施形態に関して記述された論理ブロック、構成、モジュール、回路、およびアルゴリズムのステップは、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、または両方の組合せとして実装できることを当業者はさらに理解されるであろう。様々な実例となる構成要素、ブロック、構成、モジュール、回路、およびステップについて、それらの機能の点から一般的に記述してきた。そのような機能がハードウェアまたはプロセッサの実行可能命令として実装されるかどうかは、特定のアプリケーションおよびシステム全体に課された設計制約に依存する。熟練者であれば、特定の各アプリケーションに対して様々な方法で記述した機能を実装することができるが、そのような実装の決定は、本開示の範囲からの逸脱するものとして解釈するべきでない。
本明細書に開示した実施形態に関して記述した方法またはアルゴリズムのステップは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、または2つの組合せで直接的に具体化または実装され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読み取り専用メモリ(ROM)、プログラム可能読み取り専用メモリ(PROM)、消去可能プログラム可能ROM(EPROM)、電気的消去可能PROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読み取り専用メモリ(CD-ROM)、または当技術分野で知られている非一時的な記憶媒体の他の形態に常駐することができる。代表的な記憶媒体は、プロセッサが記憶媒体から情報を読み出し、かつ情報を書き込めるようにプロセッサに結合される。代替案では、記憶媒体はプロセッサと一体型でもよい。プロセッサおよび記憶媒体は、特定用途向け集積回路(ASIC)に常駐することができる。ASICは、コンピューティングデバイス、通信デバイス、またはユーザ端末に常駐することができる。代替案では、プロセッサおよび記憶媒体は、コンピューティングデバイス、通信デバイス、またはユーザ端末の個別の構成要素として常駐することができる。
開示した実施形態の前述の説明は、当業者が開示された実施形態を構成または使用できるように提供するものである。これらの実施形態に対する様々な修正は、当業者には容易に明白になろう。また、本明細書に規定した原理は、本開示の範囲から逸脱するとなく他の実施形態に適用され得る。したがって、本開示は、本明細書に示した実施形態に限定することを意図するものではなく、以下の請求項によって規定されるような原理および新規な機能に一致する可能な限り広い範囲を与えられるものである。
100 システム
110 プロセッサ
110 プロセッサの第1のセット
111 プライマリハイパーバイザ
112 第1のスケジューラ
112 スケジューラ
113 第1のゲストオペレーティングシステム
113 ゲストOS1
114 仮想プロセッサ
115 物理アドレス変換マッピングモジュール
115 物理アドレス変換マッピング
116 第2段階の変換
116 IPA→PA
117 構成データ
118 開始/停止モジュール
118 ゲスト開始/停止
120 プロセッサ
120 プロセッサの第2のセット
121 セカンダリハイパーバイザ
122 第2のスケジューラ
122 スケジューラ
123 第2のゲストオペレーティングシステム
123 ゲストOS2
124 仮想プロセッサ
133 第3のゲストオペレーティングシステム
133 ゲストOS3
134 仮想プロセッサ
141 第1段階の変換
141 VA→IPA
142 第1段階の変換
142 VA→IPA
143 第1段階の変換
143 VA→IPA
151 タスク
152 タスク
153 タスク
201 仮想プロセッサ
201 ゲスト1VP1
202 仮想プロセッサ
202 ゲスト1VP2
203 仮想プロセッサ
203 ゲスト2VP1
204 仮想プロセッサ
204 ゲスト2VP2
205 第1の中間物理アドレス空間
206 第2の中間物理アドレス空間
207 物理アドレス空間
211 中間物理アドレス
212 中間物理アドレス
213 中間物理アドレス
221 中間物理アドレス
222 中間物理アドレス
223 物理アドレス
231 物理アドレス
232 物理アドレス
233 物理アドレス
234 物理アドレス
235 物理アドレス
400 電子デバイス
410 プロセッサ
410 プロセッサの第1のセット
422 システムオンチップデバイス
426 ディスプレイコントローラ
428 ディスプレイ
430 入力デバイス
432 メモリ
434 符号器/復号器(CODEC)
436 スピーカ
438 マイクロフォン
440 ワイヤレス制御装置
442 アンテナ
444 電源
456 命令
457 プライマリハイパーバイザ
457 プライマリHV
458 セカンダリハイパーバイザ
458 セカンダリHV
459 ゲストオペレーティングシステム
459 ゲストOS
474 プロセッサ
474 プロセッサの第2のセット

Claims (31)

  1. プライマリハイパーバイザを実行させる第1の命令セットアーキテクチャのハードウェアプロセッサの第1のセットであって、前記プライマリハイパーバイザは、ハードウェアプロセッサの前記第1のセットで実行するために第1の仮想プロセッサタスクをスケジューリングする、ハードウェアプロセッサの第1のセットと、
    セカンダリハイパーバイザを実行させる第2の命令セットアーキテクチャのハードウェアプロセッサの第2のセットであって、前記セカンダリハイパーバイザは、ハードウェアプロセッサの前記第2のセットで実行するために第2の仮想プロセッサタスクをスケジューリングし、前記第2の命令セットアーキテクチャは、前記第1の命令セットアーキテクチャとは異なる、ハードウェアプロセッサの第2のセットと、
    前記プライマリハイパーバイザおよび前記セカンダリハイパーバイザによってアクセス可能であるメモリアドレス変換マッピングデータを格納するストレージデバイスであって、前記プライマリハイパーバイザは、前記メモリアドレス変換マッピングデータをプログラムするように構成され、前記セカンダリハイパーバイザは、前記メモリアドレス変換マッピングデータを使用するように構成される、ストレージデバイスと
    を含む、装置。
  2. ハードウェアプロセッサの前記第1のセットは、単一のハードウェアプロセッサを含み、
    ハードウェアプロセッサの前記第2のセットは、単一のハードウェアプロセッサ、またはそれらの任意の組合せを含む、請求項1に記載の装置。
  3. ハードウェアプロセッサの前記第1のセットは、複数のプロセッサを含み、
    ハードウェアプロセッサの前記第2のセットは、複数のプロセッサ、またはそれらの任意の組合せを含む、請求項1に記載の装置。
  4. 前記プライマリハイパーバイザは、前記メモリアドレス変換マッピングデータへの読み取り書き込みアクセスを有し、
    前記セカンダリハイパーバイザは、前記メモリアドレス変換マッピングデータへの読み取り専用アクセスを有する、請求項1に記載の装置。
  5. 前記セカンダリハイパーバイザは、プロセッサ仮想化を実行するために、前記メモリアドレス変換マッピングデータにアクセスするように構成されている、請求項1に記載の装置。
  6. 前記プライマリハイパーバイザは、第1のスケジューリングアルゴリズムにより前記第1の仮想プロセッサタスクをスケジューリングし、
    前記セカンダリハイパーバイザは、前記第1のスケジューリングアルゴリズムとは異なる第2のスケジューリングアルゴリズムにより前記第2の仮想プロセッサタスクをスケジューリングする、請求項1に記載の装置。
  7. 前記第1のスケジューリングアルゴリズムおよび前記第2のスケジューリングアルゴリズムの少なくとも1つは、タイムスライススケジューリングを含む、請求項6に記載の装置。
  8. 前記第1のスケジューリングアルゴリズムおよび前記第2のスケジューリングアルゴリズムの少なくとも1つは、優先度ベースのスケジューリングを含む、請求項6に記載の装置。
  9. ハードウェアプロセッサの前記第1のセットに関して実行可能である第1のゲストオペレーティングシステムと、
    ハードウェアプロセッサの前記第2のセットに関して実行可能である第2のゲストオペレーティングシステムと
    をさらに含む、請求項1に記載の装置。
  10. ハードウェアプロセッサの前記第1のセットの少なくとも1つのプロセッサおよびハードウェアプロセッサの前記第2のセットの少なくとも1つのプロセッサで同時に実行するように構成されたゲストオペレーティングシステムをさらに含む、請求項1に記載の装置。
  11. 前記プライマリハイパーバイザ、前記セカンダリハイパーバイザ、またはそれらの組合せに関連付けられた仮想化されたデバイスをさらに含む、請求項1に記載の装置。
  12. 前記仮想化されたデバイスは、タイマを含み、
    ハードウェアプロセッサの前記第1のセットは、ハードウェアプロセッサの前記第2のセットと区別される、請求項11に記載の装置。
  13. ハードウェアプロセッサの前記第1のセットの少なくとも1つのプロセッサによって実行可能な第1のゲストオペレーティングシステムであって、前記ストレージデバイスへの第2のメモリアドレス変換マッピングデータをプログラムするように構成される、第1のゲストオペレーティングシステムと、
    ハードウェアプロセッサの前記第2のセットの少なくとも1つのプロセッサによって実行可能な第2のゲストオペレーティングシステムであって、前記ストレージデバイスへの第3のメモリアドレス変換マッピングデータをプログラムするように構成される、第2のゲストオペレーティングシステムと
    をさらに含む、請求項1に記載の装置。
  14. プライマリハイパーバイザを実行させる第1の命令セットアーキテクチャのハードウェアプロセッサの第1のセットであって、前記プライマリハイパーバイザは、ハードウェアプロセッサの前記第1のセットで実行するために第1の仮想プロセッサタスクをスケジューリングし、第1のスケジューリングアルゴリズムに関連付けられた第1のタスクスケジューラを含む、ハードウェアプロセッサの第1のセットと、
    セカンダリハイパーバイザを実行させる第2の命令セットアーキテクチャのハードウェアプロセッサの第2のセットであって、前記セカンダリハイパーバイザは、ハードウェアプロセッサの前記第2のセットで実行するために第2の仮想プロセッサタスクをスケジューリングし、前記第1のスケジューリングアルゴリズムと区別される第2のスケジューリングアルゴリズムに関連付けられた第2のタスクスケジューラを含み、前記第2の命令セットアーキテクチャは、前記第1の命令セットアーキテクチャとは異なる、ハードウェアプロセッサの第2のセットと、
    前記プライマリハイパーバイザおよび前記セカンダリハイパーバイザによってアクセス可能であるメモリアドレス変換マッピングデータを格納するストレージデバイスであって、前記プライマリハイパーバイザは、前記メモリアドレス変換マッピングデータをプログラムするように構成され、前記セカンダリハイパーバイザは、前記メモリアドレス変換マッピングデータを使用するように構成される、ストレージデバイスと
    を含む、装置。
  15. 前記プライマリハイパーバイザは、ストレージデバイスへのメモリアドレス変換マッピングデータをプログラムするように構成され、
    前記セカンダリハイパーバイザは、前記プライマリハイパーバイザによってプログラムされた前記メモリアドレス変換マッピングデータを使用するように構成されている、請求項14に記載の装置。
  16. 前記メモリアドレス変換マッピングデータは、中間物理アドレスから物理アドレスへの変換を示す、請求項15に記載の装置。
  17. プライマリハイパーバイザを実行させる第1の命令セットアーキテクチャのハードウェアプロセッサの第1のセットであって、前記プライマリハイパーバイザは、ハードウェアプロセッサの前記第1のセットで実行するために第1の仮想プロセッサタスクをスケジューリングする、ハードウェアプロセッサの第1のセットと、
    セカンダリハイパーバイザを実行させる第2の命令セットアーキテクチャのハードウェアプロセッサの第2のセットであって、前記セカンダリハイパーバイザは、ハードウェアプロセッサの前記第2のセットで実行するために第2の仮想プロセッサタスクをスケジューリングし、前記第2の命令セットアーキテクチャは、前記第1の命令セットアーキテクチャとは異なる、ハードウェアプロセッサの第2のセットと、
    前記プライマリハイパーバイザおよび前記セカンダリハイパーバイザによってアクセス可能であるリソースのメモリアドレス変換設定データを格納するストレージデバイスであって、前記プライマリハイパーバイザは、前記ストレージデバイスに格納された前記メモリアドレス変換設定データをプログラムするように構成され、前記セカンダリハイパーバイザは、前記メモリアドレス変換設定データに基づいて前記リソースを使用するように構成される、ストレージデバイスと
    を含む、装置。
  18. 前記リソースは、少なくともメモリの一部、メモリがマップされたデバイス、またはそれらの任意の組合せを含む、請求項17に記載の装置。
  19. 前記メモリアドレス変換設定データは、メモリアドレス変換マッピングデータを含む、請求項18に記載の装置。
  20. 前記プライマリハイパーバイザは、第1のスケジューリングアルゴリズムに関連付けられた第1のタスクスケジューラを含み、
    前記セカンダリハイパーバイザは、前記第1のスケジューリングアルゴリズムと区別される第2のスケジューリングアルゴリズムに関連付けられた第2のスケジューラを含む、請求項17に記載の装置。
  21. 第2の命令セットアーキテクチャのハードウェアプロセッサの第2のセットで実行中のセカンダリハイパーバイザによって、第1の命令セットアーキテクチャのハードウェアプロセッサの第1のセットで実行中のプライマリハイパーバイザによってプログラムされたメモリアドレス変換マッピングデータから、1つまたは複数のアドレス変換を決定するステップであって、前記プライマリハイパーバイザは、ハードウェアプロセッサの前記第1のセットで実行するために第1の仮想プロセッサタスクをスケジューリングし、前記セカンダリハイパーバイザは、ハードウェアプロセッサの前記第2のセットで実行するために第2の仮想プロセッサタスクをスケジューリングし、前記第2の命令セットアーキテクチャは、前記第1の命令セットアーキテクチャとは異なる、ステップと、
    データアクセス動作の間に、メモリにアクセスするために前記1つまたは複数のメモリアドレス変換を使用するステップであって、前記1つまたは複数のメモリアドレス変換は、前記プライマリハイパーバイザおよび前記セカンダリハイパーバイザによってアクセス可能であるストレージデバイスに格納されている、ステップと
    を含む方法。
  22. 前記1つまたは複数のメモリアドレス変換は、中間物理アドレスから物理アドレスへの変換を含む、請求項21に記載の方法。
  23. 前記データアクセス動作は、読み取り動作または書き込み動作を含む、請求項21に記載の方法。
  24. 前記プライマリハイパーバイザは、前記メモリアドレス変換マッピングデータへの読み取り書き込みアクセスを有し、
    前記セカンダリハイパーバイザは、前記メモリアドレス変換マッピングデータへの読み取り専用アクセスを有する、請求項21に記載の方法。
  25. 前記セカンダリハイパーバイザのスケジューラによって、ハードウェアプロセッサの前記第2のセットで実行するために仮想プロセッサをスケジューリングするステップをさらに含み、
    前記仮想プロセッサは、前記セカンダリハイパーバイザによって実行されているゲストオペレーティングシステムのタスクに対応し、
    前記スケジューラによる前記仮想プロセッサの前記スケジューリングは、前記プライマリハイパーバイザによって実行されるスケジューリングと無関係に実行される、請求項21に記載の方法。
  26. 第1の命令セットアーキテクチャのハードウェアプロセッサの第1のセットを使用して、ハードウェアプロセッサの前記第1のセットで実行するために第1の仮想プロセッサタスクをスケジューリングし、かつ、メモリアドレス変換マッピングデータをプログラムするためのプライマリハイパーバイザを実行するための手段と、
    第2の命令セットアーキテクチャのハードウェアプロセッサの第2のセットを使用して、ハードウェアプロセッサの前記第2のセットで実行するために第2の仮想プロセッサタスクをスケジューリングし、かつ、前記メモリアドレス変換マッピングデータを使用するためのセカンダリハイパーバイザを実行するための手段であって、前記第2の命令セットアーキテクチャは、前記第1の命令セットアーキテクチャとは異なり、前記プライマリハイパーバイザを実行するための手段および前記セカンダリハイパーバイザを実行するための手段は、ハードウェアプロセッサの前記第1のセットおよびハードウェアプロセッサの前記第2のセットでそれぞれ実行され、前記メモリアドレス変換マッピングデータは、前記プライマリハイパーバイザおよび前記セカンダリハイパーバイザによってアクセス可能であり、かつ、メモリに格納される、手段と
    を含む装置。
  27. コンピュータによって実行されたとき、前記コンピュータに、
    第2の命令セットアーキテクチャのハードウェアプロセッサの第2のセットで実行中のセカンダリハイパーバイザによって、第1の命令セットアーキテクチャのハードウェアプロセッサの第1のセットで実行中のプライマリハイパーバイザによってストレージデバイスに対してプログラムされたメモリアドレス変換マッピングデータから、1つまたは複数のアドレス変換を決定するステップであって、前記プライマリハイパーバイザは、ハードウェアプロセッサの前記第1のセットで実行するために第1の仮想プロセッサタスクをスケジューリングし、前記セカンダリハイパーバイザは、ハードウェアプロセッサの前記第2のセットで実行するために第2の仮想プロセッサタスクをスケジューリングし、前記第2の命令セットアーキテクチャは、前記第1の命令セットアーキテクチャとは異なる、ステップと、
    メモリに対するデータアクセス動作の間に、メモリの一部にアクセスするために前記1つまたは複数のメモリアドレス変換を使用するステップであって、前記1つまたは複数のメモリアドレス変換は、前記プライマリハイパーバイザおよび前記セカンダリハイパーバイザによってアクセス可能であるストレージデバイスに格納されている、ステップと
    を実行させる命令を含む非一時的コンピュータ可読記録媒体。
  28. 前記1つまたは複数のアドレス変換は、中間物理アドレスから物理アドレスへの変換を含む、請求項27に記載の非一時的コンピュータ可読記録媒体。
  29. 前記プライマリハイパーバイザは、前記メモリアドレス変換マッピングデータへの読み取り書き込みアクセスを有し、
    前記セカンダリハイパーバイザは、前記メモリアドレス変換マッピングデータへの読み取り専用アクセスを有する、請求項27に記載の非一時的コンピュータ可読記録媒体。
  30. 前記第2のメモリアドレス変換マッピングデータは、第1の仮想アドレスから第1の中間物理アドレスへの第1の変換を示し、
    前記プライマリハイパーバイザによってプログラムされた前記メモリアドレス変換マッピングデータは、前記第1の中間物理アドレスから第1の物理アドレスへの第2の変換を示す、請求項13に記載の装置。
  31. 前記第3のメモリアドレス変換マッピングデータは、第2の仮想アドレスから第2の中間物理アドレスへの第3の変換を示し、
    前記プライマリハイパーバイザによってプログラムされた前記メモリアドレス変換マッピングデータは、前記第2の中間物理アドレスから第2の物理アドレスへの第4の変換を示す、請求項30に記載の装置。
JP2016501236A 2013-03-14 2014-03-11 複数のハイパーバイザを実行するシステムおよび方法 Active JP6240745B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/829,023 2013-03-14
US13/829,023 US9606818B2 (en) 2013-03-14 2013-03-14 Systems and methods of executing multiple hypervisors using multiple sets of processors
PCT/US2014/023445 WO2014159405A1 (en) 2013-03-14 2014-03-11 Systems and methods of executing multiple hypervisors

Publications (3)

Publication Number Publication Date
JP2016529568A JP2016529568A (ja) 2016-09-23
JP2016529568A5 JP2016529568A5 (ja) 2017-06-15
JP6240745B2 true JP6240745B2 (ja) 2017-11-29

Family

ID=50628908

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016501236A Active JP6240745B2 (ja) 2013-03-14 2014-03-11 複数のハイパーバイザを実行するシステムおよび方法

Country Status (7)

Country Link
US (1) US9606818B2 (ja)
EP (1) EP2972834B1 (ja)
JP (1) JP6240745B2 (ja)
KR (1) KR101812727B1 (ja)
CN (1) CN105190552B (ja)
BR (1) BR112015023360A2 (ja)
WO (1) WO2014159405A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
US10114756B2 (en) * 2013-03-14 2018-10-30 Qualcomm Incorporated Externally programmable memory management unit
GB2515536A (en) * 2013-06-27 2014-12-31 Ibm Processing a guest event in a hypervisor-controlled system
WO2015122007A1 (ja) * 2014-02-17 2015-08-20 株式会社日立製作所 計算機、及び、ハイパバイザによる資源スケジューリング方法
TWI540511B (zh) * 2015-04-30 2016-07-01 捷鼎國際股份有限公司 用以存取虛擬機器之電腦系統及方法
GB2546742B (en) * 2016-01-26 2019-12-11 Advanced Risc Mach Ltd Memory address translation management
CN106878389B (zh) * 2017-01-04 2020-02-07 北京百度网讯科技有限公司 用于在云系统中进行资源调度的方法和装置
US10613708B2 (en) * 2017-02-24 2020-04-07 Red Hat Israel, Ltd. Cloning a hypervisor
US11182187B2 (en) * 2018-04-17 2021-11-23 Red Hat Israel, Ltd. Dynamic network connectivity verification in distributed virtual environments
US11016798B2 (en) 2018-06-01 2021-05-25 The Research Foundation for the State University Multi-hypervisor virtual machines that run on multiple co-located hypervisors
US10915351B2 (en) 2018-08-30 2021-02-09 International Business Machines Corporation Cellular hypervisor
KR102147912B1 (ko) 2019-08-13 2020-08-25 삼성전자주식회사 프로세서 칩 및 그 제어 방법들

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286092B1 (en) 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US6516373B1 (en) 1999-06-18 2003-02-04 Samsung Electronics Co., Ltd. Common motherboard interface for processor modules of multiple architectures
US6526462B1 (en) 1999-11-19 2003-02-25 Hammam Elabd Programmable multi-tasking memory management system
US6904483B2 (en) 2001-03-20 2005-06-07 Wind River Systems, Inc. System and method for priority inheritance
GB2378277B (en) 2001-07-31 2003-06-25 Sun Microsystems Inc Multiple address translations
JP2003099272A (ja) 2001-09-20 2003-04-04 Ricoh Co Ltd タスク切替システムと方法およびdspとモデム
US7620678B1 (en) 2002-06-12 2009-11-17 Nvidia Corporation Method and system for reducing the time-to-market concerns for embedded system design
US6981072B2 (en) 2003-06-05 2005-12-27 International Business Machines Corporation Memory management in multiprocessor system
US7134007B2 (en) 2003-06-30 2006-11-07 Intel Corporation Method for sharing firmware across heterogeneous processor architectures
US7424709B2 (en) 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US20050251806A1 (en) 2004-05-10 2005-11-10 Auslander Marc A Enhancement of real-time operating system functionality using a hypervisor
US7937700B1 (en) 2004-05-11 2011-05-03 Advanced Micro Devices, Inc. System, processor, and method for incremental state save/restore on world switch in a virtual machine environment
US8271976B2 (en) * 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
US7299337B2 (en) 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US9785485B2 (en) * 2005-07-27 2017-10-10 Intel Corporation Virtualization event processing in a layered virtualization architecture
US7739476B2 (en) 2005-11-04 2010-06-15 Apple Inc. R and C bit update handling
US7945913B2 (en) 2006-01-19 2011-05-17 International Business Machines Corporation Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system
US20070283336A1 (en) 2006-06-01 2007-12-06 Michael Karl Gschwind System and method for just-in-time compilation in a heterogeneous processing environment
US7490191B2 (en) * 2006-09-22 2009-02-10 Intel Corporation Sharing information between guests in a virtual machine environment
US8082551B2 (en) 2006-10-30 2011-12-20 Hewlett-Packard Development Company, L.P. System and method for sharing a trusted platform module
US7685409B2 (en) 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
JP4864817B2 (ja) * 2007-06-22 2012-02-01 株式会社日立製作所 仮想化プログラム及び仮想計算機システム
US8250254B2 (en) 2007-07-31 2012-08-21 Intel Corporation Offloading input/output (I/O) virtualization operations to a processor
US8522236B2 (en) * 2007-12-28 2013-08-27 Intel Corporation Method and system for establishing a robust virtualized environment
US8245236B2 (en) 2008-02-27 2012-08-14 International Business Machines Corporation Lock based moving of threads in a shared processor partitioning environment
US20090282198A1 (en) 2008-05-08 2009-11-12 Texas Instruments Incorporated Systems and methods for optimizing buffer sharing between cache-incoherent cores
US8135921B2 (en) 2008-06-06 2012-03-13 International Business Machines Corporation Automated paging device management in a shared memory partition data processing system
US8464011B2 (en) 2008-10-27 2013-06-11 Advanced Micro Devices, Inc. Method and apparatus for providing secure register access
US8301863B2 (en) 2008-11-17 2012-10-30 International Business Machines Corporation Recursive logical partition real memory map
US8291414B2 (en) 2008-12-11 2012-10-16 International Business Machines Corporation Shared resource service provisioning using a virtual machine manager
US20100242014A1 (en) 2009-03-17 2010-09-23 Xiaohan Zhu Symmetric multi-processor operating system for asymmetric multi-processor architecture
US9152200B2 (en) * 2009-06-23 2015-10-06 Hewlett-Packard Development Company, L.P. Resource and power management using nested heterogeneous hypervisors
US8479196B2 (en) 2009-09-22 2013-07-02 International Business Machines Corporation Nested virtualization performance in a computer system
US8135898B2 (en) * 2009-10-30 2012-03-13 International Business Machines Corporation Memory management in a nested virtualization environment
US8443376B2 (en) 2010-06-01 2013-05-14 Microsoft Corporation Hypervisor scheduler
US20110320766A1 (en) 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type
US20120072638A1 (en) 2010-09-16 2012-03-22 Unisys Corp. Single step processing of memory mapped accesses in a hypervisor
US8490090B2 (en) * 2011-02-17 2013-07-16 International Business Machines Corporation Multilevel support in a nested virtualization environment
US8307169B2 (en) 2011-03-10 2012-11-06 Safenet, Inc. Protecting guest virtual machine memory
JP5648544B2 (ja) 2011-03-15 2015-01-07 富士通株式会社 スケジューリングプログラム、および情報処理装置
US8984330B2 (en) 2011-03-28 2015-03-17 Siemens Corporation Fault-tolerant replication architecture
JP5655677B2 (ja) * 2011-04-04 2015-01-21 富士通株式会社 ハイパーバイザ置き換え方法および情報処理装置
US9043562B2 (en) 2011-04-20 2015-05-26 Microsoft Technology Licensing, Llc Virtual machine trigger
US8677360B2 (en) 2011-05-12 2014-03-18 Microsoft Corporation Thread-related actions based on historical thread behaviors
US20130013889A1 (en) 2011-07-06 2013-01-10 Jaikumar Devaraj Memory management unit using stream identifiers
US9250969B2 (en) 2011-08-30 2016-02-02 At&T Intellectual Property I, L.P. Tagging a copy of memory of a virtual machine with information for fetching of relevant portions of the memory
US20140053272A1 (en) * 2012-08-20 2014-02-20 Sandor Lukacs Multilevel Introspection of Nested Virtual Machines
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US10114756B2 (en) 2013-03-14 2018-10-30 Qualcomm Incorporated Externally programmable memory management unit
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors

Also Published As

Publication number Publication date
BR112015023360A2 (pt) 2017-07-18
US20140282508A1 (en) 2014-09-18
EP2972834B1 (en) 2017-05-17
JP2016529568A (ja) 2016-09-23
KR101812727B1 (ko) 2017-12-27
EP2972834A1 (en) 2016-01-20
CN105190552B (zh) 2018-10-23
KR20150129816A (ko) 2015-11-20
CN105190552A (zh) 2015-12-23
WO2014159405A1 (en) 2014-10-02
US9606818B2 (en) 2017-03-28

Similar Documents

Publication Publication Date Title
JP6240745B2 (ja) 複数のハイパーバイザを実行するシステムおよび方法
JP6199477B2 (ja) ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法
JP6430970B2 (ja) 異なる命令セットアーキテクチャを有するプロセッサ上におけるオペレーティングシステムの実行
CN107015845B (zh) Gpu虚拟化
JP6345231B2 (ja) 外部からプログラム可能なメモリ管理ユニット
JP5934094B2 (ja) データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング
US8151275B2 (en) Accessing copy information of MMIO register by guest OS in both active and inactive state of a designated logical processor corresponding to the guest OS
JP2018509687A (ja) ユーザレベルの分岐及び結合を行うプロセッサ、方法、システム、及び命令
US10565131B2 (en) Main memory including hardware accelerator and method of operating the same
KR20130010442A (ko) 가상 gpu
TW201411488A (zh) 在作業系統中藉由多個程序對現場可程式設計閘陣列的使用的管理
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
US9934100B2 (en) Method of controlling memory swap operation and data processing system using same
US20150186180A1 (en) Systems and methods for affinity dispatching based on network input/output requests
WO2014142809A1 (en) Accelerator buffer access
TWI760756B (zh) 共用代碼之系統與代碼共用方法
US20150363227A1 (en) Data processing unit and method for operating a data processing unit

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170224

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170425

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170425

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170901

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171006

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171106

R150 Certificate of patent or registration of utility model

Ref document number: 6240745

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250