(57)【要約】  プロセッサコアを利用するための技法は、オペレーティングシステムから独立的に使用するためにプロセッサコアを隔離することを含む。本発明の少なくとも１つの実施形態において、方法は、コンピュータシステムの複数のコアのうちの１つ以上のコアを含む、第１のサブセットのコア上でオペレーティングシステムを実行することを含む。オペレーティングシステムは、仮想マシンモニタの制御下でゲストとして実行する。本方法は、複数のコアのうちの１つ以上のコアを含む第２のサブセットのコア上でアプリケーションのための作業を実行することを含む。第１および第２のサブセットのコアは、相互に排他的であり、第２のサブセットのコアは、オペレーティングシステムに可視的ではない。少なくとも１つの実施形態において、本方法は、オペレーティングシステムから第２のサブセットのコアを隔離することを含む。【選択図】図３
2013516021.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムの複数のコアのうちの１つ以上のコアを含む第１のサブセットのコア上でオペレーティングシステムを実行することであって、該オペレーティングシステムは、仮想マシンモニタの制御下でゲストとして実行する、オペレーティングシステムを実行することと、
前記複数のコアのうちの１つ以上のコアを含む第２のサブセットのコア上でアプリケーションのための作業を実行することであって、前記第１および第２のサブセットのコアは、相互に排他的であり、前記第２のサブセットのコアは、前記オペレーティングシステムに可視的ではない、作業を実行することと、
を含む、方法。
【請求項２】
前記オペレーティングシステムから前記第２のサブセットのコアを隔離することを更に含む請求項１に記載の方法。
【請求項３】
前記アプリケーションは、前記オペレーティングシステムの外部にあり、かつ前記オペレーティングシステムから独立した、前記第２のサブセットのコア上で実行する、請求項１に記載の方法。
【請求項４】
前記アプリケーションは、前記オペレーティングシステム上で実行し、前記第２のサブセットのコアのうちの前記コアは、コンピューティングアクセラレータとして構成され、前記アプリケーションは、前記仮想マシンモニタを介して、前記第２のサブセットのコアに間接的にアクセスする、請求項１に記載の方法。
【請求項５】
利用可能なコンピューティングアクセラレータに関する情報を、前記オペレーティングシステム上で実行しているドライバに提供することと、
前記利用可能なコンピューティングアクセラレータのうちのターゲットアクセラレータによって完了されるべき作業をスケジュールすることとを更に含む
請求項４に記載の方法。
【請求項６】
前記実行することは、
前記アプリケーションの利益のために、前記コンピューティングアクセラレータによって完了されるべき作業をリクエストすることと、
前記オペレーティングシステムに完了された作業を示すことと、
作業項目によって生成されたページフォールトを処理することとを含む
請求項４に記載の方法。
【請求項７】
複数のコアと、
前記複数のコアにアクセス可能である、１つ以上の媒体の中にエンコードされたオペレーティングシステムソフトウェアと、
前記複数のコアにアクセス可能で、かつ前記複数のコアのうちの１つ以上で実行可能である、１つ以上の媒体の中にエンコードされたハイパーバイザソフトウェアであって、前記ハイパーバイザソフトウェアは、前記複数のコアのうちの１つ以上のコアを含む、第１のセットのコア上でゲストとして前記オペレーティングシステムソフトウェアの実行を制御し、前記複数のコアのうちの１つ以上のコアを含む、第２のセットのコア上でアプリケーションの少なくとも何らかの作業を実行するように実行可能であり、前記第２のセットのコアは、前記オペレーティングシステムに可視的ではない、ハイパーバイザソフトウェアとを備える装置。
【請求項８】
前記ハイパーバイザソフトウェアは、前記オペレーティングシステムから前記第２のセットのコアを離隔させるように、前記複数のコア上で実行可能なコードを含み、前記第１および第２のセットのコアは相互に排他的である、請求項７に記載の装置。
【請求項９】
前記第１のセットのコアにアクセス可能である、１つ以上の媒体の中にエンコードされたアクセラレーテッドコンピューティングドライバであって、前記アプリケーションの作業を前記第２のセットのコアにスケジュールするように構成されるアクセラレーテッドコンピューティングドライバを更に備える請求項７に記載の装置。
【請求項１０】
前記アプリケーションと前記第２のセットのコアとの間の通信のための少なくとも１つのキューを更に備え、前記少なくとも１つのキューは、
アクセラレーテッドコンピューティングドライバから前記ハイパーバイザに通信するように構成されるコマンドキューと、
前記ハイパーバイザから前記アクセラレーテッドコンピューティングドライバに通信するように構成される応答キューと、
前記ハイパーバイザから前記アクセラレーテッドコンピューティングドライバに通信するように構成されるフォールトキューと、
アクセラレーティングコンピューティングアプリケーションプログラムインターフェースから前記ハイパーバイザに通信するように構成される作業キューとを含む
請求項７に記載の装置。
【請求項１１】
前記複数のコアにアクセス可能である、１つ以上の媒体の中にエンコードされたアプリケーションソフトウェアを更に備え、前記ハイパーバイザソフトウェアは、前記第１のセットのコア上での前記オペレーティングシステムの実行とは独立的に、前記第２のセットのコア上で前記ハイパーバイザの制御下で前記アプリケーションソフトウェアを実行するように、前記複数のコア上で実行可能であるコードを含む
請求項７に記載の装置。
【請求項１２】
前記オペレーティングシステム上で実行可能である前記複数のコアにアクセス可能である、１つ以上の媒体の中にエンコードされたアプリケーションソフトウェアを更に備え、前記ハイパーバイザソフトウェアは、コンピューティングアクセラレータとして前記第２のセットのコアを構成するように実行可能であるコードと、前記第２のセットのコア上で前記アプリケーションソフトウェアのための作業を実行するためのコードとを含む請求項７に記載の装置。
【請求項１３】
少なくとも１つのコンピュータ可読媒体の中にエンコードされたコンピュータプログラム製品であって、前記コンピュータプログラム製品は、
仮想マシンモニタとして、またはこれと連携して実行可能であり、複数のコアのうちの１つ以上のコアを含む、第１のセットのコア上で前記仮想マシンモニタの制御下でゲストとして、オペレーティングシステムシーケンスを実行し、前記複数のコアのうちの１つ以上のコアを含む、第２のセットのコア上でアプリケーションの少なくとも何らかの作業を実行するように構成される、１つ以上の機能シーケンスを備え、前記第２のセットのコアは、前記オペレーティングシステムに可視的ではないコンピュータプログラム製品。
【請求項１４】
前記１つ以上の機能シーケンスは、前記第１のセットのコア上での前記オペレーティングシステムの実行とは独立的に、前記第２のセットのコア上で前記仮想マシンモニタの制御下で、アプリケーションシーケンスを実行するように構成される、請求項１３に記載のコンピュータプログラム製品。
【請求項１５】
前記１つ以上の機能シーケンスは、オペレーティングシステムコードから前記第２のセットのコアを隔離し、前記第２のセットのコア上でアプリケーションコード作業を実行するためのコンピューティングアクセラレータとして、前記第２のセットのコアを構成するように構成される、請求項１３に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、より具体的には、マルチコアコンピュータシステムに関する。
【背景技術】
【０００２】
一般に、コンピューティングシステム内部に含まれる中央処理装置（ＣＰＵ）コア（すなわち、プロセッサコア）および／またはプロセッサの数が、急速に増加している。図１を参照すると、例示的なコンピューティングシステム１００は、複数のプロセッサ１０２を含み、それらの各々が、１つ以上のプロセッサコア（例えば、プロセッサコア１０４）を含む。プロセッサ１０２は、１つ以上のハブ集積回路（例えば、メモリコントローラハブおよびＩ／Ｏコントローラハブ）、バス（例えば、ＰＣＩバス、ＩＳＡバス、およびＳＭバス）、他の好適な通信インターフェース、またはこれらの組み合わせによって、他のプロセッサ１０２、メモリ１０６、デバイス１０８、およびストレージ１１０に連結される。オペレーティングシステム（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）、およびＵＮＩＸ（登録商標））は、ハードウェアとユーザ（すなわちコンピューティングアプリケーション、例えば、アプリケーション１１４）との間にインターフェースを提供する。オペレーティングシステム１１２の実行は、複数のコア１０４に分散される場合がある。
【０００３】
コンピューティングシステムは複数のプロセッサコアを含むが、典型的なコンピューティングシステムは、全てのプロセッサコアを利用すること、または全てのプロセッサコアを効率的に利用することができない場合がある。例えば、オペレーティングシステムは、限定された数のＣＰＵコアにのみアクセスしかつ制御することができ、コンピューティングシステムの中の他のコアがアイドリング状態のままになる場合がある。
【発明の概要】
【０００４】
したがって、プロセッサコアを利用するための技法は、オペレーティングシステムから独立的に使用するためにプロセッサコアを隔離（sequester）することを含む。本発明の少なくとも１つの実施形態において、本方法は、コンピュータシステムの複数のコアのうちの１つ以上のコアを含む、第１のサブセットのコア上でオペレーティングシステムを実行することを含む。オペレーティングシステムは、仮想マシンモニタの制御下でゲストとして実行する。本方法は、複数のコアのうちの１つ以上のコアを含む第２のサブセットのコア上でアプリケーションのための作業を実行することを含む。第１および第２のサブセットのコアは、相互に排他的であり、第２のサブセットのコアは、オペレーティングシステムに可視的ではない。少なくとも１つの実施形態において、本方法は、オペレーティングシステムから第２のサブセットのコアを隔離することを含む。本方法の少なくとも１つの実施形態において、第２のサブセットのコアを隔離することは、共有システムメモリの一部分を第２のセットのコア専用にすることを含む。本方法の少なくとも１つの実施形態において、アプリケーションは、オペレーティングシステムの外部にありかつオペレーティングシステムから独立した、第２のサブセットのコア上で実行する。本方法の少なくとも１つの実施形態において、アプリケーションは、オペレーティングシステム上で実行中であり、コアのうちの第２のサブセットのコアは、コンピューティングアクセラレータとして構成される。本方法の少なくとも１つの実施形態において、アプリケーションは、仮想マシンモニタを介して、第２のサブセットのコアに間接的にアクセスする。少なくとも１つの実施形態において、本方法は、オペレーティングシステム上で実行しているドライバに、利用可能なコンピューティングアクセラレータに関する情報を提供することを更に含む。少なくとも１つの実施形態において、本方法は、コンピューティングアクセラレータのターゲットアクセラレータによって完了されるべき作業をスケジュールすることを含む。本方法の少なくとも１つの実施形態において、実行することは、アプリケーションの利益のために、コンピューティングアクセラレータによって完了されるべき作業をリクエストすることと、オペレーティングシステムに完了した作業を示すことと、作業項目によって生成されるページフォールトを処理することとを含む。少なくとも１つの実施形態において、本方法は、第２のセットのコアによって、オペレーティングシステムによって提供されるアプリケーションプログラムインターフェースにアクセスすることを更に含む。本方法の少なくとも１つの実施形態において、アプリケーションプログラムインターフェースは、オペレーティングシステムメモリ割り当てルーチン、および例外処理ルーチンのうちの１つである。
【０００５】
本発明の少なくとも１つの実施形態において、装置は、複数のコアと、複数のコアにアクセス可能である、１つ以上の媒体の中にエンコードされたオペレーティングシステムソフトウェアとを含む。本装置は、複数のコアにアクセス可能かつ複数のコアのうちの１つ以上で実行可能である、１つ以上の媒体の中にエンコードされたハイパーバイザソフトウェアを含む。ハイパーバイザソフトウェアは、複数のコアのうちの１つ以上のコアを含む、第１のセットのコア上のゲストとしてオペレーティングシステムソフトウェアの実行を制御し、複数のコアのうちの１つ以上のコアを含む、第２のセットのコア上でアプリケーションの少なくとも何らかの作業を実行するように実行可能である。第２のセットのコアは、オペレーティングシステムに可視的ではない。本装置の少なくとも１つの実施形態において、ハイパーバイザソフトウェアは、オペレーティングシステムから第２のセットのコアを離隔するように、複数のコア上で実行可能なコードを含み、第１および第２のセットは、相互に排他的である。少なくとも１つの実施形態において、本装置は、複数のコアによって共有される共有システムメモリを更に含む。少なくとも１つの実施形態において、本装置は、第１のセットのコアにアクセス可能である、１つ以上の媒体の中にエンコードされたアクセラレーテッドコンピューティングドライバを更に含み、アクセラレーテッドコンピューティングドライバは、第２のセットのコアに、アプリケーションの作業をスケジュールするように構成される。少なくとも１つの実施形態において、本装置は、アプリケーションと第２のセットのコアとの間の通信のための少なくとも１つのキューを更に含む。本装置の少なくとも１つの実施形態において、少なくとも１つのキューは、アクセラレーテッドコンピューティングドライバからハイパーバイザに通信するように構成されるコマンドキューと、ハイパーバイザからアクセラレーテッドコンピューティングドライバに通信するように構成される応答キューと、ハイパーバイザからアクセラレーテッドコンピューティングドライバに通信するように構成されるフォールトキューと、アクセラレーティングコンピューティングアプリケーションプログラムインターフェースからハイパーバイザに通信するように構成される作業キューとを含む。少なくとも１つの実施形態において、本装置は、第１のセットのコアにアクセス可能である、１つ以上の媒体にエンコードされたアクセラレーテッドコンピューティングアプリケーションプログラムインターフェースを更に含む。少なくとも１つの実施形態において、本装置は、複数のコアにアクセス可能である、１つ以上の媒体の中にエンコードされたアプリケーションソフトウェアを更に含む。ここで、ハイパーバイザソフトウェアは、第１のセットのコア上でのオペレーティングシステムの実行とは独立的に、第２のセットのコア上でハイパーバイザの制御下でアプリケーションソフトウェアを実行するように、複数のコア上で実行可能であるコードを含む。少なくとも１つの実施形態において、本装置は、オペレーティングシステム上で実行可能である複数のコアにアクセス可能である、１つ以上の媒体の中にエンコードされたアプリケーションソフトウェアを更に含み、ここで、ハイパーバイザソフトウェアは、コンピューティングアクセラレータとして第２のセットのコアを構成するように実行可能であるコードと、第２のセットのコア上でアプリケーションソフトウェアのための作業を実行するためのコードとを含む。
【０００６】
本発明の少なくとも１つの実施形態では、コンピュータプログラム製品は、１つ以上の機能シーケンスを含む。該機能シーケンスは、仮想マシンモニタとして、またはこれと連携して実行可能で、かつ複数のコアのうちの１つ以上のコアを含む第１のセットのコア上で仮想マシンモニタの制御下でゲストとしてオペレーティングシステムシーケンスを実行するように構成される。コンピュータプログラム製品は、複数のコアのうちの１つ以上のコアを含む第２のセットのコア上でアプリケーションの少なくとも何らかの作業を実行するように、１つ以上の機能シーケンスを含む。第２のセットのコアは、オペレーティングシステムに可視的ではない。コンピュータプログラム製品の少なくとも１つの実施形態において、１つ以上の機能シーケンスは、第１のセットのコア上のオペレーティングシステムの実行とは独立的に、第２のセットのコア上で前記仮想マシンモニタの制御下でアプリケーションシーケンスを実行するように構成される。コンピュータプログラム製品の少なくとも１つの実施形態において、１つ以上の機能シーケンスは、オペレーティングシステムコードから第２のセットのコアを隔離し、第２のセットのコア上でアプリケーションコード作業を実行するためのコンピューティングアクセラレータとして、第２のセットのコアを構成するように構成される。コンピュータプログラム製品の少なくとも１つの実施形態において、コンピュータプログラム製品は、ディスク、テープ、あるいは他の磁気、光学式、または電子ストレージ媒体の群から選択される、少なくとも１つのコンピュータ可読媒体の中にエンコードされる。
【図面の簡単な説明】
【０００７】
本発明は、添付の図面を参照することにより、より完全に理解され、その多数の目的、機能、および利点が当業者に明らかになり得る。
【図１】例示的なマルチコアコンピューティングシステムの機能ブロック図を例示する。
【図２】例示的な仮想化システムの機能ブロック図を例示する。
【図３】本発明の少なくとも１つの実施形態による、例示的な仮想化システムの機能ブロック図を示す。
【図４】本発明の少なくとも１つの実施形態による、デファクトアクセラレータとして構成された隔離されたプロセッサコアを備える、図３の仮想化システム上で実行する例示的な仮想マシンモニタの機能ブロック図を例示する。
【図５】本発明の少なくとも１つの実施形態による、デファクトアクセラレータとして構成された隔離されたプロセッサコアを備える、図３の仮想化システムの例示的情報および制御フローを例示する。
【図６】本発明の少なくとも１つの実施形態による、デファクトアクセラレータとして構成された隔離されたプロセッサコアを備える、図３の仮想化システムの中の作業ユニット処理フローの例示的情報および制御フローを例示する。
【図７】本発明の少なくとも１つの実施形態による、デファクトアクセラレータとして構成された隔離されたプロセッサコアを備える、図３の仮想化システムの中の作業ユニットページフォールト処理の例示的情報および制御フローを例示する。
【図８】本発明の少なくとも１つの実施形態による、デファクトアクセラレータとして構成された隔離されたプロセッサコアを備える、図３の仮想化システムの作業ユニットコマンド完了の例示的情報および制御フローを例示する。
【図９】本発明の少なくとも１つの実施形態による、インスタントオンアプリケーション用途に構成される、図３の仮想化システムの情報および制御フローを例示する。  異なる図面の同一参照記号の使用は、類似または同一の項目を示す。
【発明を実施するための形態】
【０００８】
図２を参照すると、コンピューティングシステムの仮想化は、ユーザ（すなわち、コンピューティングシステム上で実行しているソフトウェア）からコンピューティングシステムの物理的特徴を隠すために使用され、その代わりに、抽象エミュレートされたコンピューティングシステム（すなわち、仮想マシン（ＶＭ））をユーザに提示する。コンピューティングシステム１００の物理的ハードウェアリソースは、１つ以上の対応する離隔され、独立しているように見える、仮想マシン（例えば、ＶＭ２０４）として、１つ以上のゲスト（例えば、ゲスト２０６）に公開される。例えば、仮想マシンは、仮想マシンモニタ（ＶＭＭ）（すなわち、ハイパーバイザ、例えば、ＶＭＭ２０２）が仮想マシンに割り当てる、１つ以上の仮想リソース（例えば、ＶＣＰＵ、ＶＭＥＭＯＲＹ、およびＶＤＥＶＩＣＥ）を含む場合があり、該仮想リソースは、コンピューティングシステム１００の物理的リソースによって実装される。
【０００９】
本明細書に使用される場合、「仮想マシンモニタ」（ＶＭＭ）または「ハイパーバイザ」は、仮想化能力を提供するソフトウェアである。ＶＭＭは、ゲストソフトウェアと物理的リソースとの間のインターフェースを提供する。典型的に、ＶＭＭは、コンピュータシステム全体（すなわち、メモリ、中央演算装置（ＣＰＵ）、およびすべての周辺機器）にわたる全ての制御の状況を各ゲストに提供する。タイプ１（すなわち、ネイティブ）のＶＭＭは、物理的リソース上で実行するスタンドアロン型のソフトウェアプログラムであり、１つ以上のゲストに仮想化を提供する。ゲストオペレーティングシステムは、ＶＭＭより上位のレベルで実行する。タイプ２（すなわち、ホストされる）ＶＭＭは、オペレーティングシステムに統合、またはオペレーティングシステム上で実行し、オペレーティングシステムのコンポーネントは、物理的リソース上で直接実行し、ＶＭＭによって仮想化されない。ＶＭＭは、個別のソフトウェアレイヤと考えられ、ゲストオペレーティングシステムは、ハードウェアより上位の第３のソフトウェアレベル上で実行する場合がある。以下の説明では、例示的なタイプ１のＶＭＭに言及するが、本明細書に記載の技法は、タイプ２のＶＭＭの中に実装されてもよい。
【００１０】
図２を再び参照すると、ＶＭ２０４が仮想マシン２０４の仮想リソースにわたる全ての制御を有し、一方でＶＭＭ２０２が物理的リソースにわたる制御を保つ。ゲストシステム、例えば、オペレーティングシステム（例えば、Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）、およびＵＮＩＸ（登録商標））のインスタンスは、対応する仮想マシン上で実行し、他の仮想マシン上で実行している他のゲストシステムと物理的リソースを共有する。このように、複数のオペレーティングシステム（例えば、同じオペレーティングシステムの複数のインスタンス、または異なるオペレーティングシステムのインスタンス）は、同じコンピューティングシステム上に共存することができるが、相互に離隔状態にある。
【００１１】
ＶＭＭ２０２は、物理的リソース内のいくつか、または全てのプロセッサコアによって実行される。個々のゲストは、物理的リソースに含まれるプロセッサコアのセットによって実行される。プロセッサは、ＶＭＭ２０２の実行と、１つ以上のゲスト２０６の実行との間を切り替える。本明細書に使用される場合、「ワールド切り替え」は、ゲストの実行とＶＭＭの実行との間の切り替えである。概して、ワールド切り替えは、ＶＭＭＣＡＬＬ命令によって、または他の好適な技法、例えば、割り込みメカニズムまたは以下に記載の制御ブロックによって定義される所定の命令によって、起動される場合がある。特定のワールド切り替えは、本明細書において、特定の技法を使用して起動されると記載される場合があるが、他の好適な技法が使用されてもよい。ワールド切り替えの間、現在のプロセッサコア環境（例えば、ゲストまたはＶＭＭ）は、その状態情報を保存し、プロセッサコア実行が切り替えられる先である、ターゲットコア環境（例えば、ＶＭＭまたはゲスト）のための状態情報を復元する。例えば、ＶＭＭは、実行がスケジュールされていたゲストをＶＭＭが実行する際、ワールド切り替えを実行する。同様に、ゲストの実行からＶＭＭの実行へのワールド切り替えは、ＶＭＭが物理的リソース全体の制御を実施する場合、例えば、ゲストが物理的デバイスにアクセスしようとする場合、メモリの新しいページがゲストに割り当てられようとする際、またはＶＭＭが別のゲストをスケジュールする時間である場合等に行われる。
【００１２】
仮想化技法は、ソフトウェア（ファームウェアを含む）のみを使用して、またはソフトウェアおよびハードウェアの組み合わせによって、実装される場合がある。例えば、いくつかのプロセッサは、仮想化ハードウェアを含み、これによって、ＶＭＭコードの簡素化を可能にし、完全な仮想化のためのシステム性能を向上させる（例えば、ＡＭＤ−ＶおよびＩｎｔｅｌ  ＶＴ−ｘによって提供される仮想化のためのハードウェア拡張）。ソフトウェアは、本明細書に使用される場合、ディスク、テープ、あるいは他の磁気、光学、または電子記憶媒体の群から選択される少なくとも１つのコンピュータ可読媒体の中にエンコードすることができる。
【００１３】
仮想化技法は、ＶＭＭの制御下で、コンピュータシステムの１つ以上の他の処理中のコア上でゲストとして実行しているオペレーティングシステムから、コンピューティングシステムの１つ以上のプロセッサコアを離隔または隔離するために使用することができる。仮想化システムの少なくとも１つの実施形態において、隔離されたコアは、デファクトアクセラレータとして構成される場合がある。すなわち、隔離されたコアは、オペレーティングシステム環境内から起動された作業を完了するために、ＶＭＭによって使用される。ホストコアおよび隔離されたコアは、共有メモリ環境内に存在するが、隔離されたコアは、オペレーティングシステムによって直接管理されない。ＶＭＭは、隔離されたコアとホストコアとの間の通信のための伝達媒体として構成される。例示的なＶＭＭは、共有メモリ空間内に実装されたキューベースのアーキテクチャを使用して、作業リクエスト、ページフォールト、および完了情報を伝播するためのメモリベースのソリューションを実装する。計算作業は、ゲストオペレーティングシステムの範囲内で起動することができる。ＶＭＭは、次いで、オペレーティングシステムと隔離されたコアとの間の作業を調整する。したがって、ＶＭＭは、汎用計算加速を実装するために使用することができる。ＶＭＭおよび隔離されたコアは、インスタントオンアプリケーション用途を実装するために使用することができる。更に、ＶＭＭは、隔離されたコアをネットワークデバイスアクセラレータとして構成するために使用することができる。
【００１４】
ゲストオペレーティングシステムによって使用されるコア（すなわち、ホストコア）の数は、選択可能であってもよい。例えば、ホストコアの数は、特定のゲストオペレーティングシステムが利用することが可能なコアの最大数の場合がある。しかしながら、仮想システムの少なくとも１つの実施形態において、ゲストオペレーティングシステムによって使用されるコアの数は、それに限定されず、システムは、コアの最大数未満である、オペレーティングシステムのためのコアの所定の数で構成されてもよい。
【００１５】
図３を参照すると、例示的コンピューティングシステム４００は、ＶＭＭ４０２を含む。ＶＭＭ４０２は、分断アーキテクチャをエミュレートし、すなわち、ＶＭＭ４０２は、アプリケーションまたはアプリケーションタスクを実行するためにコアを隔離する。少なくとも１つの実施形態において、ＶＭＭ４０２は、コア４０４からコア４０６を隔離する。少なくとも１つの実施形態において、ＶＭＭ４０２は、ホストコア４０４および隔離されたコア４０６に別々の仮想メモリ空間を割り当てる。少なくとも１つの実施形態において、ＶＭＭ４０２は、ホストコア４０４および隔離されたコア４０６に共有仮想メモリ空間を割り当てる。共有仮想メモリ空間を実装するための技法は、２０１０年１２月２９日に、Ｐａｔｒｙｋ  Ｋａｍｉｎｓｋｉ、Ｔｈｏｍａｓ  Ｗｏｌｌｅｒ、Ｋｅｉｔｈ  Ｌｏｗｅｒｙ、およびＥｒｉｃｈ  Ｂｏｌｅｙｎの名を発明者として出願された米国特許出願第１２／６４８，５５０号、名称「ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＩＭＰＬＥＭＥＮＴＩＮＧ  ＮＯＮ−ＳＨＡＲＥＤ  ＰＡＧＥ  ＴＡＢＬＥＳ  ＦＯＲ  ＳＨＡＲＩＮＧ  ＭＥＭＯＲＹ  ＲＥＳＯＵＲＣＥＳ  ＭＡＮＡＧＥＤ  ＢＹ  Ａ  ＭＡＩＮ  ＯＰＥＲＡＴＩＮＧ  ＳＹＳＴＥＭ  ＷＩＴＨ  ＡＣＣＥＬＥＲＡＴＯＲ  ＤＥＶＩＣＥＳ」、ならびに２００９年１２月２９日に、Ｐａｔｒｙｋ  Ｋａｍｉｎｓｋｉ、Ｔｈｏｍａｓ  Ｗｏｌｌｅｒ、Ｋｅｉｔｈ  Ｌｏｗｅｒｙ、およびＥｒｉｃｈ  Ｂｏｌｅｙｎの名を発明者として出願された米国特許出願第１２／６４８，５５６号、名称「ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＩＭＰＬＥＭＥＮＴＩＮＧ  ＳＨＡＲＥＤ  ＰＡＧＥ  ＴＡＢＬＥＳ  ＦＯＲ  ＳＨＡＲＩＮＧ  ＭＥＭＯＲＹ  ＲＥＳＯＵＲＣＥＳ  ＭＡＮＡＧＥＤ  ＢＹ  Ａ  ＭＡＩＮ  ＯＰＥＲＡＴＩＮＧ  ＳＹＳＴＥＭ  ＷＩＴＨ  ＡＣＣＥＬＥＲＡＴＯＲ  ＤＥＶＩＣＥＳ」に記載される。
【００１６】
少なくとも１つの実施形態において、ＶＭＭ４０２は、ホストコア４０４上のゲストの実行のための状態および制御情報、ならびに隔離されたコア４０６上の作業ユニットの実行のための状態および制御情報のセットを含む、制御ブロックのセットを保持する。少なくとも１つの実施形態において、これらの制御ブロックは、仮想マシン制御ブロック（ＶＭＣＢ）として知られる。各ゲストおよびデファクトアクセラレータは、対応する制御ブロックと関連付けることができる。例示的な制御ブロックは、ホストハードウェアのメモリおよび／またはストレージの中に記憶され、対応するゲストまたはデファクトアクセラレータのための状態および制御情報、ならびに／あるいはＶＭＭのための状態および制御情報を含む。例えば、制御ブロックは、ゲストが最後に終了した時点でのコア状態に対応する状態情報を含む。例示的な制御ブロックは、特定の命令によってアクセスされてもよく、情報は、所定のデータ構造の特定のフィールドの中に記憶されてもよい。
【００１７】
コンピューティングシステム４００の少なくとも１つの実施形態において、ＶＭＭ４０２は、デファクトアクセラレータとして使用するために少なくとも１つのコア（例えば、隔離されたコア４０６）を離隔させるように構成される。オペレーティングシステム４０８（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標））は、ホストコア４０４（例えば、Ｘ８６コア）上でゲストとして実行し、アプリケーション４１４は、オペレーティングシステム４０８上で実行する。オペレーティングシステム４０８上で実行する、カーネルモードドライバ４１０は、ＶＭＭ４０２と情報を交換して、デファクトアクセラレータへの間接的アクセスをユーザアプリケーション４１４に提供する。ゲストオペレーティングシステムは、例えば、呼び出しを使用して、カーネルモデルドライバ４１０を使用して隔離されたコア４０６を利用する場合がある。ＶＭＭ４０２とゲストオペレーティングシステム４０８との間、およびＶＭＭ４０２とデファクトアクセラレータとの間の通信は、共有仮想メモリの中でキュー（例えば、作業キュー４２４、コマンドキュー４１８、フォールトキュー４２２、および応答キュー４２０）を使用して実現される。
【００１８】
スケジューラ４１６は、作業項目が利用可能な分離されたコア４０６に分散される、スレッドプールを含む。スケジューラ４１６の少なくとも１つの実施形態において、作業ユニットは、ラウンドロビンスケジューリングを使用して有効な分離されたコアに割り当てられるが、しかしながら、他の好適なスケジューリングアルゴリズム（例えば、動的優先スケジューリング等）がスケジューラ４１６の他の実施形態で使用されてもよい。コンピューティングシステム４００の少なくとも１つの実施形態において、スケジューラ４１６は、ユーザモードスケジューラであり、スケジューリングがオペレーティングシステムとは別に実施されることを可能にする。しかしながら、コンピューティングシステム４００の少なくとも１つの実施形態において、スケジューラ４１６は、カーネルモードスケジューラであり、オペレーティングシステムのカーネルレベル部分の変更が必要となる。コンピューティングシステム４００の少なくとも１つの実施形態において、スケジューラ４１６の機能のうちの少なくとも何らかは、ＶＭＭ４０２によって実施され、および／またはスケジューラ４１６の機能のうちの少なくとも何らかは、カーネルモードドライバ４１０によって実施される。ＶＭＭ４０２は、カーネルモードドライバ４１０に対して可視的である、情報または制御構造の中に関連のトポロジおよびアーキテクチャ情報を保持する。ＶＭＭ４０２は、少なくとも、利用可能なデファクトアクセラレータに関する情報をカーネルモードドライバ４１０に提供する。
【００１９】
コンピューティングシステム４００の少なくとも１つの実施形態において、フォールトキュー４２２、コマンドキュー４１８、応答キュー４２０、および作業キュー４２４は、共有仮想メモリ空間の中に実装される。これらのキューの全ては、オペレーティングシステムアクセス（例えば、カーネルモードアクセス）を必要とする。コンピューティングシステム４００の少なくとも１つの実施形態において、キューは、作成中アプリケーションの処理コンテキストの外部からアクセス可能でなければならない。したがって、オペレーティングシステム４０８は、メモリ翻訳を提供しなければならない。作業キューのみがユーザモードアクセスを必要とする。少なくとも１つの実施形態において、キュー４１８、４２０、４２２、および４２４は、非ロック実装を使用し、単一の読出者および単一の書込者のために構成される。仮想マシンモニタ４０２は、フォールトキュー４２２および応答キュー４２０にキューを加える。カーネルモードドライバ４１０は、フォールトキュー４２２および応答キュー４２０からキューを取り出す。カーネルモードドライバ４１０は、コマンドキュー４１８にキューを加え、ＶＭＭ４０２は、コマンドキュー４１８からキューを取り出す。アプリケーション４１４は、作業キュー４２４にキューを加える。ＶＭＭ４０２および／またはカーネルモードドライバ４１０を使用して実装することができる、スケジューラ４１６は、作業キュー４２４からキューを取り出す。
【００２０】
コンピューティングシステム４００の少なくとも１つの実施形態において、アプリケーション４１４は、キューアプリケーションプログラムインターフェース（ＡＰＩ）４１２を呼び出して、キューインターフェースを起動する。キューＡＰＩ４１２は、カーネルモードドライバ４１０をインスタンス化し、文書化された入力／出力制御（ｉｏｃｔｌ）呼び出しを行って、キューを割り当てる。上記のように、カーネルモードドライバ４１０は、ｉｏｃｔｌコマンドを受信し、適当なエンティティ（例えば、ＶＭＭ４０２およびカーネルモードドライバ４１０）によって読み出される、または書き込まれる場合がある、キューを割り当てる。カーネルモードドライバ４１０は、作業キュー４２４をアドレス空間に関連付ける、内部作業テーブルを作成する。カーネルモードドライバ４１０はまた、ページテーブルも作成し、デファクトアクセラレータにスタックを割り当てる。カーネルモードドライバ４１０は、カーネルモードスレッドを作成し、更にアプリケーション４１４によって使用される作業キュー４２４へのポインタを返す。
【００２１】
コンピューティングシステム４００の少なくとも１つの実施形態において、キューを処理するためにポーリング技法が使用される。コンピューティングシステム４００の少なくとも１つの実施形態において、ポーリング技法を使用する代わりに、ＶＭＭ４０２とゲストオペレーティングシステム４０８との間、およびＶＭＭ４０２とデファクトアクセラレータとして構成された隔離されたコア４０６との間の通信は、ドアベル技法を使用して実現される。概して、キューへのいずれの書込者（例えば、カーネルモードドライバ４１０、キューＡＰＩ４１２、またはＶＭＭ４０２）もドアベルを鳴らして、受信者（例えば、カーネルモードドライバ４１０またはＶＭＭ４０２）に、利用可能なキュー項目を通知する。コンピューティングシステムの少なくとも１つの実装において、ＶＭＭ４０２は、特定のキューに対するドアベルとして機能するＶＭＭ呼び出しをサポートする。新しいエントリを含むキューを示す情報、および／または他の好適な情報は、ＶＭＭ呼び出しのパラメータの中に含まれる。更に、ＶＭＭ４０２は、ソフトウェア割り込みを発行することによって、カーネルモードドライバ４１０のドアベルを鳴らす。異なるドアベルの受信者の間を区別するために、異なるソフトウェア割り込みが使用されてもよい。
【００２２】
例えば、アプリケーション４１４は、キューＡＰＩ４１２を介して、作業キュー４２４にエントリをプッシュする場合があり、カーネルモードドライバ４１０は、例えば、ＶＭＭＣＡＬＬを実行することによって、ＶＭＭ４０２のドアベルを鳴らして、作業キューが新しいエントリを有することを示す。ＶＭＭＣＡＬＬ命令は、ゲストオペレーティングシステム４０８からＶＭＭ４０２へ制御を移す。同様に、カーネルモードドライバ４１０がコマンドキュー４１８にコマンドをプッシュすると、カーネルモードドライバ４１０は、ＶＭＭ４０２のためにドアベルを鳴らして（例えば、ＶＭＭＣＡＬＬを実行することによって）、コマンドキューが新しいエントリを有することを示す。また別の例において、作業ユニットがデファクトアクセラレータとして構成された隔離されたコア４０６上で完了すると、ＶＭＭ４０２は、フォールトキュー４２２にエントリをプッシュし、ローカルの高度プログラム可能割り込みコントローラ（ＡＰＩＣ）を介して、フォールトキュー割り込みをホストコア４０４に送信する。ＶＭＭ４０２は、ソフトウェア割り込みを使用して、カーネルモードドライバ４１０のドアベルを鳴らすことができる。使用される特定の割り込み番号は、構成ブロックの中のフィールドに記憶され、カーネルモードドライバ４１０によって保持される。
【００２３】
アプリケーション４１４は、作業キュー４２４を作成し、作業キューテーブルの中のエントリポイントをカーネルモードドライバ４１０に登録する。アプリケーション４１４は、キューＡＰＩ４１２を使用して、作業項目を作業キュー４２４に追加する。キューＡＰＩ４１２は、スケジューラ４１６のドアベルを鳴らす。スケジュールロジックがカーネルモードドライバ４１０の中に存在する実施形態では、カーネルモードドライバ４１０が作業キュー４２４を読み出す。したがって、ＶＭＭ４０２への呼び出しは、ＶＭＭ４０２によってターゲットされるべきコアのインジケータを明示的に含むことになる。ドアベルに応答して、スケジューラ４１６は、デファクトアクセラレータが利用可能であるかどうかを判定する。利用可能であるデファクトアクセラレータがない場合、スケジューラ４１６はステータスを更新して、作業キュー４２４が空でないことを示す。デファクトアクセラレータが利用可能である場合、スケジューラ４１６は、作業キュー４２４を読み出す。スケジューラ４１６は、利用可能なデファクトアクセラレータを選択し、ＶＭＭ４０２に対してスケジュール呼び出しを行う。
【００２４】
コンピューティングシステム４００の少なくとも１つの実施形態において、スケジューラ４１６がＶＭＭ４０２から区別される場合、スケジューラ４１６は、コマンドキュー４１８にコマンドを書き込み、ＶＭＭ４０２のドアベルを鳴らすことができる。次いで、ＶＭＭ４０２は、実行コンテキストを設定し、デファクトアクセラレータとして構成されたターゲットの隔離されたコア４０６を初期化する。ＶＭＭ４０２が応答キュー４２０に書き込み、スケジューラ４１６が応答キュー４２０を処理して、隔離されたコア４０６のステータス（例えば、可用性）への可視性を維持する。スケジューラ４１６が作業キュー４２４から作業項目のキューを取り出すと、スケジューラ４１６は、デファクトアクセラレータとして構成された隔離されたコア４０６のうち利用可能なデファクトアクセラレータのリストを検討し、ターゲットの隔離されたコア４０６を選択する。スケジューラ４１６は、次いで、作業項目およびターゲットの隔離されたコア４０６を示す、コマンドキューエントリを作成し、キューに加える。次いで、スケジューラ４１６は、ＶＭＭ４０２のドアベルを鳴らす。スケジューラ４１６がリソース可用性の正確な認識を保持するためには、スケジューラ４１６に作業項目の完了が通知されなければならない。コンピューティングシステム４００の少なくとも１つの実施形態において、システムスタックは、作業項目からの戻り値によって、ＶＭＭの呼び出しが、作業項目の完了をＶＭＭ４０２に通知するように操作される。
【００２５】
図３、４、および５を参照すると、システムのリセット時、ＶＭＭ４０２は、システム４００のコア（例えば、ホストコア４０４および隔離されたコア４０６）上でブートする（５０２）。少なくとも１つの実施形態において、ＶＭＭ４０２は、基本的な入力出力システムとは別に、メモリ（例えば、ハードドライブ上）からブートされる。仮想マシンモニタ４０２は、次いで、ゲストオペレーティングシステムコア４０４上でゲストとしてオペレーティングシステム４０８をブートし、コア４０２からコア４０６を隔離する（５０４）。例えば、オペレーティングシステム４０８をブートする際、ＶＭＭ４０２は、その上で実行するコアの数をオペレーティングシステム４０８に伝達する。そのため、オペレーティングシステム４０８が隔離されたコア４０６にアクセスしようとすることはない。オペレーティングシステムコア４０４からコア４０６を隔離するための他の技法として、オペレーティングシステム４０８が、コアの合計数未満である特定数のコアのみを認識するようにＢＩＯＳテーブルを変更し、仮想マシンモニタ４０２が両方のセットのコア上で環境を制御することが挙げられる。それらのＢＩＯＳテーブルは、読み出し専用メモリから自動的にロードされるか、またはＶＭＭ４０２によってパッチされる場合がある。オペレーティングシステムからコアを隔離するための別の技法では、ＶＭＭ４０２は、いくつかのオペレーティングシステムコアを構成するように、オペレーティングシステムコマンドをインターセプトする。
【００２６】
コアが隔離され、オペレーティングシステムがブートした後、オペレーティングシステム４０８は、アクセラレーテッドコンピューティングカーネルモードデバイスドライバ４１０をロードする（５０８）。アプリケーション４１４は、オペレーティングシステム４０８上で稼動する（５１０）。アプリケーション４１４は、作業ユニットを生成し、これらが次いで、隔離されたコア４０６上で実行するようにスケジュールされる（５１２）。完了後、ＶＭＭ４０２は、オペレーティングシステム４０８に完了した作業を通知する（５１４）。
【００２７】
図３、４、および６を参照して、作業ユニット起動処理の更に詳細を記載する。コンピューティングシステム４００の少なくとも１つの実施形態において、カーネルモードドライバ４１０は、内部作業テーブルを作成し、これは、作業キューテーブルエントリに追加するために使用されてもよい（６０２）。アプリケーション４１４は、作業キューを作成し、作業キューテーブルの中のエントリをカーネルモードドライバ４１０に登録する（６０４）。実行中、アプリケーション４１４は、作業キューエントリを作業キュー４２４にプッシュする（６０６）。カーネルモードドライバ４１０は、上記のようにドアベル（例えば、ＶＭＭＣＡＬＬ）、または他の好適な通知技法を使用して作業キュー４２４が新しいエントリを有することをＶＭＭ４０２に通知する（６０８）。仮想メモリモニタ４０２は、ホストコア４０４上でドアベルを処理し、特定の隔離されたコア４０６にＩＮＩＴプロセッサ間割り込み（ＩＰＩ）を送信する。仮想マシンモニタ４０２は、特定の隔離されたコア４０６上でＶＭＭ４０２への出口を処理する（６１０）。特定の隔離されたコア４０６がアイドルである（すなわち、作業ユニットをまだ処理中ではない）場合、ＶＭＭ４０２は、作業キュー４２４から次の作業ユニットエントリをプルし（６１２）、ＶＭＣＢを変更し、作業ユニットを処理するためにコードの実行を開始する（６１４）。そうでなければ、特定の隔離されたコアは、以前に着手していた作業ユニットの実行を継続する。コンピューティングシステム４００の少なくとも１つの実施形態において、特定の隔離されたコア４０６が既に作業ユニットを実行している場合、ＶＭＭ４０２は、ＶＭＭ４０２への出口を備えるその特定の隔離されたコア４０６に割り込むことはない。
【００２８】
作業ユニットを処理している間に、デファクトアクセラレータとして構成された隔離されたコア４０６は、ページフォールトを経験する場合がある（すなわち、隔離されたコア４０６が、アドレス空間にマップされているページにアクセスするが、物理的メモリにロードされない）。図３、４、および７を参照すると、コンピューティングシステム４００の少なくとも１つの実施形態において、隔離されたコア４０６によって経験されるこれらのページフォールトは、ＶＭＭ４０２によって認識され、ＶＭＭ４０２へのワールド切り替えが発生する（７０２）。仮想マシンモニタ４０２が、隔離されたコアからページフォールト情報を取得し、カーネルレベルのページフォールトエントリを作成し、ＶＭＭ４０２がこれをユーザフォールトキュー４２２上にプッシュする（７０４）。仮想マシンモニタ４０２が、ローカルＡＰＩＣを介して、ホストコア４０４のうちの１つにフォールトキュー割り込みを発行する（７０６）。カーネルモードドライバ４１０の割り込みハンドラが割り込みを処理し、フォールトキューが延期したプロシージャ呼び出しを実行し、システムフォールトキュー４２８からフォールトを読み出す。カーネルモデルドライバ４１０がユーザ処理に関連するページテーブルを更新し（７１０）、デファクトアクセラレータとして構成された隔離されたコア４０６による実行を再開するためのコマンド（例えば、ターゲットコアのフィールドを含むＣＭＤ＿ＲＥＳＵＭＥ）を生成する（７１２）。カーネルモードドライバ４１０が、そのコマンドをコマンドキュー４１８にプッシュし（７１２）、ＶＭＭ４０２のドアベルを鳴らし（例えば、ＶＭＭＣＡＬＬ）、コマンドキュー４１８が新しいエントリを有することを示す（７１４）。仮想マシンモニタ４０２がホストコア４０４上でＶＭＭＣＡＬＬを処理し、コマンドキュー４１８を処理する、キューハンドラ４１２を含む隔離されたコア４０６（すなわち、デファクトアクセラレータコア０）にプロセッサ間割り込み（すなわち、ＩＮＩＴ  ＩＰＩ）を発行する。プロセッサ間割り込みに応答して、デファクトアクセラレータコア０は、コマンドキュー４１８を読み出し、コマンド（例えば、ＣＭＤ＿ＲＥＳＵＭＥ）を処理する（７１６）。このコマンド処理は、例えば、作業ユニットの処理を再開するためにプロセッサ間割り込みを適当な隔離されたコア４０６に送信することによって行われる（７１８）。仮想マシンモニタ４０２は、次いで、ＶＭＥＸＩＴを処理し（例えば、ワールド切り替えを実施する）、隔離されたコア４０６が、作業ユニットの処理を再開する（７２０）。
【００２９】
図３、４、および８を参照すると、コンピューティングシステム４００の少なくとも１つの実施形態において、作業ユニットが処理され、隔離されたコア４０６が作業ユニットの最後の命令を実行すると、隔離されたコア４０６が、作業ユニットが実行を完了したことを示す、１つ以上の命令を含むルーチンを実行する（例えば、ＶＭＭＣＡＬＬ）（８０２）。これによって、隔離されたコア４０６が、ＶＭＭ４０２の実行に戻り、ＶＭＭ４０２は、作業ユニット完了のインジケータを処理する（８０４）。コンピューティングシステム４００の少なくとも１つの実施形態において、ＶＭＭ４０２は、作業ユニット完了の通知を発行するように構成されているかどうかを判定する（８０８）。ＶＭＭが通知を発行するように構成されていない場合、ＶＭＭ４０２は、次の作業ユニットを処理するように進む（８１０）。代替として、ＶＭＭは、完了指令を発行する。少なくとも１つの実施形態において、ＶＭＭ４０２は、システムフォールトキュー４２８に作業ユニット完了エントリをプッシュし、ＶＭＭ４０２は、オペレーティングシステムコア４０４にフォールトキュー割り込みを（例えば、ローカルＡＰＩＣを介して）送信する（８１２）。
【００３０】
カーネルモードドライバ４１０は、フォールトキュー割り込みを処理し、システムフォールトキューからエントリを読み出す。カーネルモードドライバ４１０は、フォールトエントリに関連するユーザ処理コンテキストを検索し、処理コンテキストの特定のユーザフォールトキュー４２２にフォールトエントリをプッシュする（８１４）。カーネルモードドライバ４１０の中のユーザ作業スレッドハンドラが、ユーザフォールトキュー４２２からフォールトエントリをプルし、作業ユニットを完了する（８１８）。
【００３１】
図９を参照すると、コンピューティングシステム４００の少なくとも１つの実施形態において、隔離されたコア４０６は、デファクトアクセラレータとしてではなく、インスタントオンアプリケーション用途のために構成される。システムのリセット時、ＶＭＭ４０２がシステム４００のコア（例えば、ホストコア４０４および隔離されたコア４０６）上で起動する（９０２）。例えば、ＶＭＭ４０２は、ＢＩＯＳ内に存在する場合があり、コア４０２からコア４０６を自動的に隔離する（９０４）。仮想マシンモニタ４０２は、ファイルシステムへのアクセスを有するように構成され、隔離されたコア４０６のうちの１つ以上でユーザアプリケーションを稼動する（９０６）。一方、ＶＭＭ４０２は、ホストコア４０４上のゲストとしてオペレーティングシステム４０８を起動する（９０６）。仮想マシンモニタ４０２は、１つ以上のドライバまたは基本的な入力出力システム（すなわち、ＢＩＯＳインターフェース）機能を含み、隔離されたコア４０６上で最初に稼動するアプリケーションを含む媒体にアクセスする。
【００３２】
ＶＭＭ４０２は、概して仮想マシンモニタとして記載されるが、少なくとも１つの実施形態において、ＶＭＭ４０２は、本明細書に記載の機能、およびいくつかの他の仮想機能を提供するように構成される仮想マシンモニタの最小限の実装である。別の実施形態において、本明細書に記載のＶＭＭ４０２の機能は、他の典型的な仮想マシン機能を提供する、汎用仮想マシンモニタに組み込まれる。コンピューティングシステム４００の少なくとも１つの実施形態において、仮想マシンモニタは、ネストされる場合があり、例えば、オペレーティングシステム４０８は、本明細書に記載の機能に従い、ＶＭＭ４０２によって制御されるＶＭＭマシンモニタである。コンピューティングシステム４００の少なくとも１つの実施形態において、コアを隔離するために仮想技法を使用する際、オペレーティングシステムに対する変更を全く必要としない。
【００３３】
本明細書に記載の本発明の説明は例示的であり、以下の請求項に記載の本発明の範囲を限定することを意図しない。例えば、本発明は、隔離されたコアがＶＭＭの制御下でゲストオペレーティングシステム上のアプリケーション実行のためのデファクトアクセラレータとして構成される実施形態において説明されるが、当業者は、本明細書の教示は、インスタントオンアプリケーション、ネットワークデバイス加速、および汎用計算加速のために利用できることを理解するであろう。例えば、ＶＭＭ４０２は、ネットワークルータデバイスと連携して、隔離されたコア４０６を使用してパケット検証機能を加速する場合がある。更に、本発明は、概してコンピューティングシステムにおいて説明されるが、本明細書に記載の教示の実施形態は、サーバ、デスクトップシステム（例えば、パーソナルコンピュータ）、埋め込みアプリケーション（例えば、移動体通信デバイス）、および他の好適なアプリケーションに含まれてもよい。本明細書に開示される実施形態の変形および変更は、以下の請求項に記載される本発明の範囲および精神を逸脱することなく、本明細書に記載の説明に基づいて行うことができる。
【図１】
2013516021.tif 000003
【図２】
2013516021.tif 000004
【図３】
2013516021.tif 000005
【図４】
2013516021.tif 000006
【図５】
2013516021.tif 000007
【図６】
2013516021.tif 000008
【図７】
2013516021.tif 000009
【図８】
2013516021.tif 000010
【図９】
2013516021.tif 000011
【国際調査報告】
2013516021.tif 000012
2013516021.tif 000013
2013516021.tif 000014