(57)【要約】【課題】本開示の態様は、ハードウェア内で変換索引バッファ（ＴＬＢ）シュートダウンを指示および追跡することに関する。【解決手段】１つ以上のプロセッサコアを備える１つ以上のプロセッサは、一プロセッサコア上で実行中のプロセスが１つ以上の仮想メモリページと以前に関連付けられた１つ以上の物理メモリアドレスとの関連性を失わせたことを判断することができる。関連性の喪失を引き起こしたプロセスを実行しているプロセッサコアは、ＴＬＢシュートダウン要求を生成することができる。このプロセッサコアは、ＴＬＢシュートダウン要求を他のコアに送信することができる。ＴＬＢシュートダウン要求は、識別情報と、関連性が喪失され且つ他のコアに対応するＴＬＢからフラッシュされる必要のある仮想メモリページを示すシュートダウンアドレスと、他のコアがＴＬＢシュートダウン要求の処理完了を通知する場所を示す通知アドレスとを含むことができる。【選択図】図４
2018181378.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェア内で変換索引バッファ（ＴＬＢ）シュートダウンを指示および追跡するための方法であって、
１つ以上のプロセッサコアをそれぞれ備える１つ以上のプロセッサによって、第１プロセッサコア上で実行中のプロセスが１つ以上の仮想メモリページと以前に関連付けられた１つ以上の物理メモリアドレスとの関連性を失わせたことを検出するステップと、
前記第１プロセッサコアによって、ＴＬＢシュートダウン要求を生成するステップと、
前記第１プロセッサコアによって、前記ＴＬＢシュートダウン要求を前記１つ以上のプロセッサコアのうち他のプロセッサコアに送信するステップとを含み、
前記ＴＬＢシュートダウン要求は、
関連性が喪失され且つ前記他のプロセッサコアに対応するＴＬＢからフラッシュされる必要のある仮想メモリページを示すシュートダウンアドレスと、
前記他のプロセッサコアがＴＬＢシュートダウン要求の処理完了を通知する場所を示す通知アドレスと、
識別情報とを含む、方法。
【請求項２】
前記方法は、前記他のプロセッサコアが前記ＴＬＢシュートダウン要求の処理を完了した場合、前記他のプロセッサコアから通知を受信するステップをさらに含み、
前記通知は、前記通知アドレスで受信される、請求項１に記載の方法。
【請求項３】
前記１つ以上のプロセッサは、１つ以上の仮想マシンを実行し、
前記仮想マシンは、１つ以上の仮想コンピュータプロセッサ（ＶＣＰＵ）を含み、
前記プロセスは、前記１つ以上のＶＣＰＵ上で実行される第１プロセスである、請求項１に記載の方法。
【請求項４】
電力管理ユニットによって、前記ＴＬＢシュートダウン要求を受信した第２コアが低電力状態にあるか否かを判断するステップと、
前記第２コアが低電力状態にある場合、前記電力管理ユニットによって、前記ＴＬＢシュートダウン要求を通知するステップとをさらに含む、請求項１に記載の方法。
【請求項５】
高度なプログラム可能な割込みコントローラ（ＡＰＩＣ）によって、前記ＴＬＢシュートダウン要求を受信した第２コアが低電力状態にあるか否かを判断するステップと、
前記第２コアが低電力状態にある場合、前記ＡＰＩＣによって、前記ＴＬＢシュートダウン要求を通知するステップとをさらに含む、請求項１に記載の方法。
【請求項６】
前記識別情報は、構成要素の識別子を含み、
前記構成要素は、ＶＭ、前記ＶＭに含まれたＶＣＰＵ、プロセッサコア、および／または、ＶＣＰＵもしくはプロセッサコア内で実行されるプロセスのうち１種以上を含む、請求項３に記載の方法。。
【請求項７】
前記識別情報によって識別された前記構成要素のすべてが前記ＴＬＢシュートダウンを通知するまで、前記識別された構成要素から受信した通知の数を追跡するステップと、
前記識別情報によって識別された前記構成要素のすべてから通知を受信した場合、前記第１プロセッサコアによって、前記ＴＬＢシュートダウン要求を完了するステップとをさらに含む、請求項６に記載の方法。
【請求項８】
ハードウェア内で変換索引バッファ（ＴＬＢ）シュートダウンを指示および追跡するためのシステムであって、
１つ以上のプロセッサを備え、各プロセッサは１つ以上のプロセッサコアを含み、
前記１つ以上のプロセッサは、
第１プロセッサコア上で実行中のプロセスが１つ以上の仮想メモリページと以前に関連付けられた１つ以上の物理メモリアドレスとの関連性を失わせたことを決定し、
ＴＬＢシュートダウン要求を生成し、
前記ＴＬＢシュートダウン要求を前記１つ以上のプロセッサコアのうち他のプロセッサコアに送信するように構成され、
前記ＴＬＢショットダウン要求は、
関連性が喪失され且つ前記他のプロセッサコアに対応するＴＬＢからフラッシュされる必要のある仮想メモリページを示すシュートダウンアドレスと、
前記他のプロセッサコアがＴＬＢシュートダウン要求の処理完了を通知する場所を示す通知アドレスと、
識別情報とを含む、システム。
【請求項９】
前記１つ以上のプロセッサは、前記他のプロセッサコアが前記ＴＬＢシュートダウン要求の処理を完了した場合、前記他のプロセッサコアから通知を受信するように構成され、
前記通知は、前記通知アドレスで受信される、請求項８に記載のシステム。
【請求項１０】
前記１つ以上のプロセッサは、１つ以上の仮想マシンを実行するように構成され、
前記仮想マシンは、１つ以上の仮想コンピュータプロセッサ（ＶＣＰＵ）を含み、
前記プロセスは、前記１つ以上のＶＣＰＵ上で実行される第１プロセスである、請求項８に記載のシステム。
【請求項１１】
前記システムは、電力管理ユニットをさらに備え、
前記電力管理ユニットは、前記ＴＬＢシュートダウン要求を受信した第２コアが低電力状態にあるか否かを判断し、前記第２コアが低電力状態にある場合、前記ＴＬＢシュートダウン要求を通知するように構成される、請求項８に記載のシステム。
【請求項１２】
高度なプログラム可能な割込みコントローラ（ＡＰＩＣ）をさらに備え、
前記ＡＰＩＣは、前記ＴＬＢシュートダウン要求を受信した第２コアが低電力状態にあるか否かを判断し、前記第２コアが低電力状態にある場合、前記ＴＬＢシュートダウン要求を通知するように構成される、請求項８に記載のシステム。
【請求項１３】
前記識別情報は、構成要素の識別子を含み、
前記構成要素は、ＶＭ、前記ＶＭに含まれたＶＣＰＵ、プロセッサコア、および／または、ＶＣＰＵもしくはプロセッサコア内で実行されるプロセスのうち１種以上を含む、請求項１０に記載のシステム。
【請求項１４】
前記１つ以上のプロセッサは、前記識別情報によって識別された前記構成要素のすべてが前記ＴＬＢシュートダウンを通知するまで、前記識別された構成要素から受信した通知の数を追跡し、前記識別情報によって識別された前記構成要素のすべてから通知を受信した場合、前記ＴＬＢシュートダウン要求を完了するように構成される、請求項１３に記載のシステム。
【請求項１５】
命令を格納する非一時的なコンピュータ可読媒体であって、前記命令は、１つ以上のプロセッサコアをそれぞれ備える１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、ハードウェア内で変換索引バッファ（ＴＬＢ）シュートダウンを指示および追跡するための方法を実行させ、
前記方法は、
第１プロセッサコア上で実行中のプロセスが１つ以上の仮想メモリページと以前に関連付けられた１つ以上の物理メモリアドレスとの関連性を失わせたことを検出するステッ
プと、
ＴＬＢシュートダウン要求を生成するステップと、
前記ＴＬＢシュートダウン要求を前記１つ以上のプロセッサコアのうち他のプロセッサコアに送信するステップとを含み、
前記ＴＬＢシュートダウン要求は、
関連性が喪失され且つ前記他のプロセッサコアに対応するＴＬＢからフラッシュされる必要のある仮想メモリページを示すシュートダウンアドレスと、
前記他のプロセッサコアがＴＬＢシュートダウン要求の処理完了を通知する場所を示す通知アドレスと、
識別情報とを含む、非一時的なコンピュータ可読媒体。
【請求項１６】
前記方法は、前記他のプロセッサコアが前記ＴＬＢシュートダウン要求の処理を完了した場合、前記他のプロセッサコアから通知を受信するステップをさらに含み、
前記通知は、前記通知アドレスで受信される、請求項１５に記載の非一時的なコンピュータ可読媒体。
【請求項１７】
前記方法は、前記第２コアが低電力状態にある場合、前記電力管理ユニットから、前記ＴＬＢシュートダウン要求の通知を受信するステップをさらに含む、請求項１５に記載の非一時的なコンピュータ可読媒体。
【請求項１８】
前記方法は、第２コアが低電力状態にある場合に、高度なプログラム可能な割込みコントローラ（ＡＰＩＣ）から、前記ＴＬＢシュートダウン要求の通知を受信するステップをさらに含む、請求項１５に記載の非一時的なコンピュータ可読媒体。
【請求項１９】
前記方法は、１つ以上の仮想マシンを実行させるステップをさらに含み、
前記仮想マシンは、１つ以上の仮想コンピュータプロセッサ（ＶＣＰＵ）を含み、
前記プロセスは、前記１つ以上のＶＣＰＵ上で実行される第１プロセスである、請求項１５に記載の非一時的なコンピュータ可読媒体。
【請求項２０】
前記方法は、前記識別情報によって識別された前記構成要素のすべてが前記ＴＬＢシュートダウンを通知するまで、前記識別された構成要素から受信した通知の数を追跡するステップと、
前記識別情報によって識別された前記構成要素のすべてから通知を受信した場合、前記第１プロセッサコアによって、前記ＴＬＢシュートダウン要求を完了するステップとをさらに含む、請求項１５に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
関連出願の相互参照
本願は、２０１６年６月８日に出願された米国仮特許出願第６２／３４７４９５号の出願日の利益を主張し、その開示が参照により本明細書に組み込まれる。
【０００２】
背景
マルチコアプロセッサおよび仮想プロセッサの普及により、仮想メモリの使用が増えている。仮想メモリは、システムのプロセッサ上で動作する各プロセスに使用される実際の物理メモリがシステム内に分散されても、各プロセスに連続したメモリを与えているという錯覚を提供する。この場合、仮想メモリは、一般的にページごとに分けられ、各ページは、システムの物理メモリの位置にマッピングされる。ページテーブルを使用することによって、データを格納している対応の物理メモリアドレスにデータの仮想メモリページをマッピングすることができる。仮想メモリページを対応する物理アドレスに変換する速度を高めるために、プロセッサの各コアは、物理メモリアドレスに最近変換した仮想メモリページを格納する変換索引バッファ（Translation Lookaside Buffer、ＴＬＢ）を実装することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ページテーブル内の仮想メモリページのマッピングを変更するときに、またはハイパーバイザが仮想マシンの仮想メモリからゲストページのマッピングを解除または変更するときに、それに応じて各プロセッサコアのＴＬＢを更新する必要がある。いくつかのシナリオにおいて、このような更新は、マッピングが解除された仮想メモリページエントリのソフトウェア定義リストを見直し、これらのエントリを各々のＴＬＢから削除するように指示する割込み（interrupt）命令、例えば、ＴＬＢシュートダウン割込み（TLB shootdown
interrupt）命令を各目標プロセッサコアに送信することによって達成される。指示されたプロセッサコアは、マッピング解除されたエントリを各々のＴＬＢテーブルから削除し、削除が完了すると、ＴＬＢシュートダウンを開始したプロセッサに知らせることができる。開始したプロセッサ上のＯＳソフトウェアは、さらに他の処理を再開する前に、すべての応答が戻るまで待機しなければならない。同様に、受信したプロセッサコアは、さらに他の処理を再開する前に、ＴＬＢシュートダウン要求の処理を完了しなければならない。
【０００４】
仮想化環境において、物理プロセッサと仮想プロセッサとの間の通信がハイパーバイザを介入する必要があるため、ＴＬＢシュートダウン要求などの割込み命令の送信および受信に時間がかかる場合がある。さらに、仮想プロセッサは、（例えば、ハイパーバイザによりスケジュールから外されることによって、または物理ＣＰＵが一時停止することによって）オフラインになる可能性もある。これによって、これらの仮想プロセッサからのＴＬＢシュートダウンの通知が遅らせられる。多くの仮想プロセッサを備えるシステムにおいて、このような遅延が長くなり、場合によってスーパーリニアに長くなる可能性があるため、システムの性能が大幅に低下する。
【課題を解決するための手段】
【０００５】
概要
本開示内のさまざまな実施形態は、一般的に、ＴＬＢシュートダウン要求の処理に関する。１つの態様は、ハードウェア内でＴＬＢシュートダウンを指示および追跡するための
方法を含む。この場合、１つ以上のプロセッサコアを備える１つ以上のプロセッサは、一プロセッサコア上で実行中のプロセスが１つ以上の仮想メモリページと以前に関連付けられた１つ以上の物理メモリアドレスとの関連性を失わせたことを決定することができる。関連性の喪失を引き起こしたプロセスを実行しているプロセッサコアは、ＴＬＢシュートダウン要求を生成することができる。プロセッサコアは、ＴＬＢシュートダウン要求を他のコアに送信することができる。ＴＬＢシュートダウン要求は、識別情報と、関連性が喪失され且つ他のコアに対応するＴＬＢからフラッシュされる必要のある仮想メモリページを示すシュートダウンアドレスと、他のコアがＴＬＢシュートダウン要求の処理完了を通知する場所を示す通知アドレスとを含むことができる。
【０００６】
いくつかの例において、この方法は、他のプロセッサコアがＴＬＢシュートダウン要求の処理を完了した場合、他のプロセッサコアから通知を受信するステップをさらに含むことができる。その通知は、通知アドレスで受信することができる。１つ以上のプロセッサは、１つ以上の仮想コンピュータを実行することができる。仮想コンピュータは、１つ以上の仮想コンピュータプロセッサを含む。プロセスは、１つ以上の仮想マシンで実行される第１プロセスであってもよい。
【０００７】
いくつかの例において、この方法は、電力管理ユニットによって、ＴＬＢシュートダウン要求を受信した第２コアが低電力状態にあるか否かを判断するステップと、第２コアが低電力状態にある場合、電力管理ユニットによって、ＴＬＢシュートダウン要求を通知するステップとをさらに含むことができる。
【０００８】
別の態様は、ハードウェア内でＴＬＢシュートダウンを指示および追跡するためのシステムを含む。このシステムは、１つ以上のコアを備える１つ以上のプロセッサを有する１つ以上のコンピューティングデバイスを備えることができる。この場合、１つ以上のプロセッサは、１つ以上のプロセッサコアのうち１つで実行中のプロセスが１つ以上の仮想メモリページと以前に関連付けられた１つ以上の物理メモリアドレスとの関連性を失わせたことことを決定するように構成されてもよい。関連性の喪失を引き起こしたプロセスを実行しているプロセッサコアは、ＴＬＢシュートダウン要求を生成することができる。プロセッサコアは、さらに、ＴＬＢシュートダウン要求を他のコアに送信するように構成されてもよい。ＴＬＢシュートダウン要求は、識別情報と、関連性が喪失され且つ他のコアに対応するＴＬＢからフラッシュされる必要のある仮想メモリページを示すシュートダウンアドレスと、他のコアがＴＬＢシュートダウン要求の処理完了を通知する場所を示す通知アドレスとを含むことができる。
【０００９】
本願の技術は、限定ではなく例示として、添付図面に示される。図面において、同様の参照符号は、同様の要素を指す。
【図面の簡単な説明】
【００１０】
【図１】本開示の実施形態に係るシステムを示す図である。
【図２】本開示の実施形態に従って、複数の仮想マシンを実行するシステムを示す図である。
【図３】本開示の実施形態に従って、複数のコア上で仮想マシンを実行するシステムを示す図である。
【図４】本開示の実施形態に係るフロー図である。
【図５】本開示の実施形態に係るフロー図である。
【発明を実施するための形態】
【００１１】
詳細な説明
概要
本願の技術は、変換索引バッファ（Translation Lookaside Buffer、ＴＬＢ）シュートダウンを効率的に処理するためのシステムおよび方法並びにコンピュータ可読媒体に関する。従来のマルチコアプロセッサおよび仮想マシン（ＶＭ）環境において、ＴＬＢシュートダウンは、第１コアから送信され、プロセッサ上の他のコア（またはコアのサブセット）の各々によって受信される。各々の受信コアは、対応するＴＬＢを見直し、ＴＬＢシュートダウンによって除去する必要があると示された仮想ページを含んでいるか否かを判断する必要がある。ＴＬＢシュートダウンを成功に行ったまたは行う必要がないと判断された場合、受信コアは、送信コアに対して、ＴＬＢシュートダウンの処理完了を個別に通知する必要がある。特にＴＬＢシュートダウンが仮想マシンのプロセスインスタンスによって開始される場合、複数層のソフトウェアを介した通信がすべてのコアによるさらに他の処理を大幅に遅延させる可能性があるため、この処理は、莫大な時間およびリソースを要する。
【００１２】
本開示によれば、完全なハードウェア実装を使用して、仮想メモリページを削除する必要のあるＴＬＢに関連付けられたコアのみに、ＴＬＢシュートダウンを指示および追跡することによって、ＴＬＢシュートダウンを完了するために必要な処理リソースを削減することができる。例えば、１つ以上のプロセッサコアで実行しているプロセスが、１つ以上の仮想メモリページと以前に関連付けられた１つ以上の物理メモリアドレスとの関連性を失わせた場合、関連性の喪失を引き起こしたコアがＴＬＢシュートダウン要求を生成することができる。ＴＬＢシュートダウン要求は、シュートダウンが必要であるか否かを各受信コアに迅速に判断させることを可能にする識別情報、対応するＴＬＢからフラッシュされる必要のある仮想メモリページを示すシュートダウンアドレス、および受信コアがＴＬＢシュートダウン要求の処理完了を通知できる場所を示す通知アドレスを含むことができる。
【００１３】
識別情報は、各ＶＭの識別子を含むことができる。各ＶＭに含まれた各ＶＣＰＵ、各プロセッサコア、およびＶＣＰＵおよび／またはプロセッサコア内で実行される各プロセスは、識別子を有することができる。特定の実施形態において、例えばｘ８６システムにおいて、識別情報は、１つ以上の高度なプログラム可能な割込みコントローラＩＤ（ＡＰＩＣＩＤ）、仮想プロセッサＩＤ（ＶＰＩＤ）、およびプロセス定義文ＩＤ（ＰＣＩＤ）を含むことができる。ＡＰＩＣＩＤは、オペレーティングシステムなどのソフトウェアアプリケーションによって提供され、追跡されてもよい。たとえば、オペレーティングシステムまたはハードウェア自体は、システムの各コアにＡＰＩＣＩＤを割り当てることができる。オペレーティングシステムは、特定のプロセスを実行しているコアを追跡し、これらのコアのＡＰＩＣＩＤを決定することができる。プロセスが仮想マシン（ＶＭ）上で動作している場合、オペレーティングシステムは、テーブルを使用して、特定のプロセスを実行しているＶＭの仮想プロセッサ（ＶＣＰＵ）を、ＶＭを実行している物理コアにマッピングすることができる。ＡＰＩＣＩＤは、ＶＭを実行している物理コアであってもよい。
【００１４】
仮想プロセッサＩＤは、ＶＭの論理プロセッサおよび物理コアの両方に割り当てることができる。たとえば、プロセスがＶＭの外部で実行されている場合、その物理コアにＶＰＩＤ値０を割り当てることができる。プロセスがＶＭ内に実行されている場合、ＶＭを制御するハイパーバイザは、そのＶＭにＶＰＩＤ値を割り当てることができる。
【００１５】
実行されているすべてのプロセスに、プロセス定義文ＩＤ（ＰＣＩＤ）を割り当てることができる。この場合、各プロセスのＰＣＩＤは、対応するプロセスに関連付けられた特定のＴＬＢエントリに割り当てられてもよい。ＴＬＢシュートダウン要求を要求したプロセスに対して、ＰＣＩＤを決定することができる。ＴＬＢシュートダウンを要求したプロセスに関連するＡＰＩＣＩＤ、ＶＰＩＤおよびＰＣＩＤは、共に識別情報として見なされることができる。
【００１６】
ＴＬＢシュートダウン要求は、システム上で動作しているすべてのコアに送信されてもよい。本明細書で説明したように、ＴＬＢシュートダウン要求は、識別情報、シュートダウンアドレスおよび通知アドレスを含むことができる。
【００１７】
ＴＬＢシュートダウン要求を受信した各コアに対して、受信コアの識別情報とＴＬＢシュートダウン要求に含まれた識別情報との比較を行うことができる。受信コアの識別情報がＴＬＢシュートダウン要求に含まれた識別情報と一致しない場合、ＴＬＢシュートダウン要求は、ハードウェア機構によって無視され、ＣＰＵの命令ストリームの実行に影響を与えない。そうでない場合、受信コアは、対応するＴＬＢを見直して、シュートダウンアドレスを含むか否かを判断する。シュートダウンアドレスを含む場合、受信コアは、そのアドレスを無効化する。無効化が完了した場合、またはシュートダウンアドレスが受信コアのＴＬＢに含まれていない場合に、または無効化が行われていない場合に、受信コアは、無効通知を通知アドレスに送信し、通常の機能、例えばアプリケーションの継続処理を再開する。
【００１８】
送信コアは、受信コアから受信した通知の数を追跡することができる。この場合、送信コアは、すべての受信コアが予想されたＴＬＢシュートダウン要求の通知を通知するまで、通知アドレスで受信した通知の数を追跡することができる。いくつかの実施形態において、送信コアは、ＴＬＢシュートダウン要求を送信すると、すぐに動作を継続することができる。ＴＬＢシュートダウン要求のステータスを監視するために、オペレーティングシステムなどのソフトウェアがすべての通知を受信したことを保証することができる。
【００１９】
本明細書で説明された特徴によって、システムは、ＴＬＢシュートダウン要求をより効率的に処理することができる。ＴＬＢシュートダウン要求を引き起こしたプロセスを実行していないプロセッサコアは、ＴＬＢシュートダウン要求を無視することができる。さらに、ＴＬＢシュートダウンを送信したプロセッサコアは、ＴＬＢシュートダウンが完了した通知を受信するが、通知を追跡する必要がないため、より迅速に他の動作を継続することができる。
【００２０】
システムの例
図１は、ＴＬＢシュートダウンを実行できるシステム１００を示している。システムは、少なくとも１つのプロセッサ１０３を含む。また、システム１００は、ページテーブル１３１と、物理メモリ１４１と、二次メモリ１５１と、電力管理ユニット１６１とをさらに含む。
【００２１】
物理メモリ１４１および二次メモリ１５１は、１つ以上のプロセッサ１０３によってアクセス可能な情報、例えばプロセッサ１０３によって実行可能な命令（図示せず）を格納することができる。また、物理メモリおよび二次メモリは、プロセッサ１０３によって読出され、操作されまたは格納され得るデータ（図示せず）を格納することができる。物理メモリおよび二次メモリは、プロセッサによってアクセス可能な情報を格納することができる任意の非一時的な媒体、例えば、ハードドライブ、メモリカード、ＲＯＭ、ＲＡＭ、ＤＶＤ、ＣＤ−ＲＯＭ、書き込み可能専用メモリおよび読み出し専用メモリのいずれかであってもよい。
【００２２】
物理メモリおよび二次メモリに格納された命令は、直接に実行される任意の命令、例えば機械コード、またはプロセッサによって間接に実行される任意の命令、例えばスクリプトであってもよい。本明細書において、「命令」、「アプリケーション」、「ステップ」および「プログラム」という用語を交換可能に使用することができる。命令は、プロセッサによる直接処理のために機械コードの形式で、または要求に応じて翻訳されまたは事前
にコンパイルされたスクリプトまたは独立ソースコードモジュール群を含む任意の他のコンピュータ言語で格納されことができる。機能、方法および命令のルーチンは、以下で詳しく説明される。
【００２３】
物理メモリおよび二次メモリに格納されたデータは、命令に従って、プロセッサ１０３によって読出され、格納され、変更されてもよい。例えば、本明細書に記載される主題が特定のデータ構造によって制限されないが、データは、多くの異なるフィールドおよびレコードを有するテーブルまたはＸＭＬ文書として、例えばコンピュータのレジスタまたは関係データベースに格納されることができる。データは、バイナリ値、ＡＳＣＩＩまたはユニコードなどのコンピュータ装置で読み取り可能なフォーマットにフォーマットされてもよい。さらに、データは、数字、記述テキスト、専有コード、ポインタ、他のネットワーク位置などの他のメモリに格納されたデータへの参照などの関連情報を識別するのに、またはある関数に利用され、当該関連情報を計算するための情報を識別するのに十分な情報を含むことができる。
【００２４】
プロセッサ１０３は、従来の任意プロセッサ、例えば、インテル社のプロセッサまたはＡＭＤ社（Advanced Micro Devices）のプロセッサであってもよい。代替的に、プロセッサは、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの専用コントローラであってもよい。さらに、プロセッサ１０３は、複数のプロセッサ、マルチコアプロセッサ、またはそれらの組み合わせを備えることができる。図１には１つのプロセッサ１０３しか示されていないが、システム１００に複数のプロセッサを設けてもよいことは、当業者にとって認識できるであろう。同様に、プロセッサを言及する場合、並列に動作し得るプロセッサまたは専用ロジックの集合を含むことが理解されるであろう。
【００２５】
プロセッサ１０３は、１つ以上のコア１０５〜１１１を含むことができる。各コアが他のコアから独立してプログラム命令を実行することができる。これによって、多重処理を行うことができる。図示されていないが、各コアは、キャッシュを含むことができ、またはすべてのコアに単一のキャッシュを関連付けることができる。
【００２６】
また、システムは、少なくとも１つのページテーブル１３１を含む。ページテーブル１３１を用いて、プロセッサ１０３内にキャッシュされるデータの仮想メモリページを、例えばデータを格納する物理メモリ１４１または二次メモリ１５１内の対応する物理アドレスにマッピングすることができる。ページテーブル１３１は、プロセッサ１０３の外部に配置されていると図示されているが、プロセッサ１０３のキャッシュ内に、もしくは物理メモリ１４１または二次メモリ１５１内に格納されてもよい。
【００２７】
仮想メモリページを対応する物理アドレスに変換する速度を高めるために、プロセッサのコア１０５〜１１１は、仮想メモリページおよび物理メモリアドレスの最近の変換を格納する変換索引バッファ（ＴＬＢ）１２１〜１２７をそれぞれ含むことができる。
【００２８】
システム１００は、電力管理ユニット１６１を備えることができる。電力管理ユニットは、プロセッサ１０３内の各コアの電力状態を追跡することができる。電力状態は、「オン」状態、「オフ」状態、「オン」状態と「オフ」状態との間の中間状態を含む。以下で詳細に説明するように、電力管理ユニットは、各コアの代わりに通信を行うようにプログラムされてもよい。
【００２９】
図２に示すように、システム１００は、１つ以上の仮想マシン（ＶＭ）２０１〜２０５を動作させるように構成されてもよい。そのため、プロセッサ１０３上で実行されるホスト２３１に、ハイパーバイザ２２１をインストールしてもよい。動作中、ホスト２３１は
、ハイパーバイザ２３１などのハイパーバイザまたは仮想マシンマネージャ（ＶＭＭ）を含むオペレーティングシステムを動作させることができる。いくつかの実施形態において、ハイパーバイザ２２１は、ホスト２３１なしでプロセッサ１０３上で直接動作することができる。このような応用を達成するために、ハイパーバイザおよびＶＭＭは、互換的に使用される。さらに、当業者であれば認識するように、ホスト２３１上のオペレーティングシステムは、Linux（登録商標）オペレーティングシステム、Windows（登録商標）オペレーティングシステム、または仮想マシンをサポートすることができる任意適切な他のオペレーティングシステムであってもよい。
【００３０】
ハイパーバイザは、これらのＶＭが互いに隔離されているように各ＶＭを管理することができる。すなわち、各ＶＭ２０１、２０３および２０５が各自のハードウェアリソースを有する独立マシンであると見なすことができる。ハイパーバイザ２２１は、システム１００のリソース（すなわち、メモリ、ネットワークインタフェースコントローラなど）にアクセスするＶＭを制御することができる。ハイパーバイザ２２１は、ハードウェア仮想化スキームを実装することによって、必要に応じてハードウェアリソースをＶＭに割り当てることができる。いくつかの例によれば、プロセッサ１０３は、ハイパーバイザ２２１を介してＶＭ２０１、２０３および２０５と相互作用するハードウェアリソースの１種である。
【００３１】
ＶＭ２０１、２０３および２０５は、コンピュータのソフトウェア実装である。すなわち、ＶＭ２０１、２０３および２０５は、オペレーティングシステムを実行する。図面には３つのＶＭしか示されていないが、当業者なら、システム１００が任意数のＶＭをサポートできることを認識するであろう。各々のＶＭ２０１、２０３および２０５のオペレーティングシステムは、ホスト２３１のオペレーティングシステムと同様であってもよいが、必ずしも同様にする必要がない。さらに、各ＶＭのオペレーティングシステムは、他のＶＭと異なってもよい。例えば、ホスト２３１は、Linux（登録商標）オペレーティング
システムを実行し、ＶＭ２０１は、Windows（登録商標）オペレーティングシステムを実
行し、ＶＭ２０３は、Solaris（登録商標）オペレーティングシステムを実行してもよい
。オペレーティングシステムのさまざまな組み合わせは、当業者には容易に明らかであり、本明細書において詳細に説明しない。いくつかの実施形態において、ＶＭは、他のＶＭ内にネストすることができる。例えば、ＶＭ２０１は、別のゲストＶＭをホストすることができる。
【００３２】
ＶＭは、各自の仮想中央処理装置（ＶＣＰＵ）２１１〜２１５をそれぞれ含むことができる。図２のＶＭが単一のＶＣＰＵしか有しないと示されているが、ＶＭは、任意数のＶＣＰＵを含むことができる。ＶＣＰＵは、物理プロセッサ、例えばプロセッサ１０３のプロセッサコアに割り当てられた仮想化プロセッサである。各ＶＣＰＵは、仮想プロセッサＩＤ（ＶＰＩＤ）として知られている各自の特別な識別情報を有することができる。
【００３３】
方法の例
ＴＬＢシュートダウン要求を効率的に処理するために、仮想メモリページを削除する必要があるＴＬＢに関連付けられたコアのみに、ＴＬＢシュートダウンを指示および追跡することによって、ＴＬＢシュートダウンを低減することができる。例えば、図４に示すように、１つ以上のプロセッサコア上で実行しているプロセスが、１つ以上の仮想メモリページと以前に関連付けられた１つ以上の物理メモリアドレスとの関連性を失わせた場合、ブロック４０１に示すように、関連性の喪失を引き起こしたコアによって、ＴＬＢシュートダウン要求を生成することができる。上記で説明したように、ＴＬＢシュートダウン要求は、シュートダウンが必要であるか否かを各受信コアに迅速に判断させることを可能にする識別情報、各ＴＬＢからフラッシュされる必要のある仮想メモリページを示すシュートダウンアドレス、および受信コアがＴＬＢシュートダウン要求の処理完了を通知できる
場所を示す通知アドレスを含む。
【００３４】
識別情報は、各ＶＭの識別子を含むことができる。ＶＭに含まれた各ＶＣＰＵ、各プロセッサコア、およびＶＣＰＵおよび／またはプロセッサコア内で実行される各プロセスは、識別子を有することができる。特定の実施形態において、例えば、ｘ８６システムにおいて、識別情報は、１つ以上の高度なプログラム可能な割込みコントローラＩＤ（ＡＰＩＣＩＤ）、仮想プロセッサＩＤ（ＶＰＩＤ）、およびプロセス定義文ＩＤ（ＰＣＩＤ）を含むことができる。ＡＰＩＣＩＤは、ブロック４０３に示すように、ホスト２３１上のオペレーティングシステムなどのソフトウェアアプリケーションによって提供され、追跡されてもよい。例えば、オペレーティングシステム、例えばホスト２３１上で実行するオペレーティングシステムは、システムの各コアにＡＰＩＣＩＤを割り当てることができる。オペレーティングシステムは、特定のプロセスを実行しているコアを追跡し、これらのコアのＡＰＩＣＩＤを決定することができる。
【００３５】
ＡＰＩＣＩＤをＴＬＢシュートダウン要求に割り当てるために、ブロック４０４に示すように、ＴＬＢシュートダウン要求を要求したプロセスが（ゲスト）ＶＭまたは（実際の）ホスト上で実行されているか否かを判断することができる。プロセスがＶＭ上で動作している場合、ブロック４０５に示すように、オペレーティングシステムは、テーブルを用いて、特定のプロセスを実行しているＶＭの仮想プロセッサ（ＶＣＰＵ）を、ＶＭを実行している物理コアにマッピングすることができる。ＶＭを実行している物理コアのＡＰＩＣＩＤは、ＴＬＢシュートダウン要求のＡＰＩＣＩＤとして割り当てられることができる。プロセスがＶＭ内で実行されていない場合、ブロック４０９に示すように、ＡＰＩＣＩＤは、プロセスを実行している実際のＡＰＩＣＩＤである。
【００３６】
ＡＰＩＣＩＤをＶＣＰＵに割り当てる例は、図３に示される。ＶＣＰＵ２１１を含むＶＭ２０１は、ホストオペレーティングシステム２３１にインストールされるハイパーバイザ２２１によって、制御されてもよい。四方囲み３０１で示すように、ＶＣＰＵ２１１は、最初にプロセッサのコア１０５に割り当てられ、その後、コア１０７に割り当てられてもよい。ホストオペレーティングシステム２３１は、ＶＣＰＵ２１１のＡＰＩＣＩＤをプロセッサコア１０５および１０７のＡＰＩＣＩＤにマッピングするテーブル（図示せず）を含むことができる。したがって、ＶＭ２０１上で実行している第１プロセスがＴＬＢシュートダウンを要求する場合、ホストオペレーティングシステムは、プロセッサコア１０５および１０７に関連付けられた２つのＡＰＩＣＩＤを割り当てることができる。
【００３７】
再び図４を参照して、仮想プロセッサＩＤは、ＶＭの論理プロセッサおよび物理コアの両方に割り当てられることができる。例えば、プロセスが物理コア上で実行されている場合、ブロック４１１に示すように、その物理コアにＶＰＩＤ値０を割り当てることができる。プロセスがＶＭ上で動作している場合、ブロック４０７に示すように、ＶＭを制御するハイパーバイザは、ＶＰＩＤ値を割り当てることができる。このＶＰＩＤ値は、システム１００にＶＭを追加または削除することによって変更し得るため、ＶＭ内で動作するＶＣＰＵからのＴＬＢシュートダウン要求のＶＰＩＤ値は、無視されてもよい。
【００３８】
実行されたすべてのプロセスにプロセス定義文ＩＤ（ＰＣＩＤ）を割り当てることができる。プロセス定義文ＩＤは、ＶＣＰＵを含むプロセッサによって実行される各プロセスに特異なタグを与える。各プロセスのＰＣＩＤは、各々のプロセスに関連する特定のＴＬＢエントリに割り当てられてもよい。プロセッサは、ＴＬＢシュートダウン要求を要求したプロセスのＰＣＩＤを決定することができる。ＴＬＢシュートダウンを要求したプロセスに関連するＡＰＩＣＩＤ、ＶＰＩＤ、およびＰＣＩＤは、共に識別情報として見なされてもよい。
【００３９】
ＴＬＢシュートダウンの識別情報、シュートダウンアドレスおよび通知アドレスは、タプルとして、物理メモリ１４１などのメモリに書き込まれてもよく、プロセッサ１０３のレジスタ（図示せず）に割り当てられてもよい。例えば、ｘ８６プロセッサの場合、ＴＬＢシュートダウンの識別情報、シュートダウンアドレスおよび通知アドレスは、さまざまなプロセッサレジスタ、例えば、ＲＤＸレジスタ、ＲＡＸレジスタ、ＲＣＸレジスタ、およびＲＤＩレジスタに入力されることができる。一例において、モデル固有レジスタを書き込む命令（ＷＲＭＳＲ）を介して、ＡＰＩＣＩＤをＲＤＸレジスタに入力し、ＶＰＩＤおよびＰＣＩＤをＲＤＩレジスタに入力することができる。
【００４０】
ＲＣＸレジスタは、割込み命令（例えば、ＴＬＢシュートダウン要求）を送信することを示すようにエンコードされてもよい。例えば、ｘ８６システムにおいて、既存のＲＣＸレジスタ値は、０×８３０であり、ＲＤＸは、宛先フィールド（例えば、ＡＰＩＣＩＤ）であってもよい。既存のＲＡＸ値は、以下である、すなわち、宛先記号：００、トリガーモード：０、レベル：１、宛先モード：０（物理モード）または１（論理モード）。これらの値は、「配信モード」および「ベクトル」に新しいエンコーディングを追加することによって変更することができる。たとえば、配信モード＝０１０（ＳＭＩ）、ベクトルが新しい非ゼロ値である。または配信モード＝１００（ＮＭＩ）、ベクトルが新しい非ゼロ値である。この新しいエンコーディングは、ＴＬＢシュートダウンが実行されていることを示すことができる。さらに、他のレジスタは、他の新しい値を有することができる。例えば、ＲＤＩは、拡張宛先フィールド（例えば、ＶＰＩＤおよびＰＣＩＤ）を含むことができ、ＲＳＩは、通知アドレスを含むことができ、ＲＢＸは、シュートダウンアドレスエンコーディングを含むことができる。他のエンコーディングを用いて、ＴＬＢシュートダウンが実行されていることを示すこともできる。これらの値は、モデル固有レジスタを書き込む命令（ＷＲＭＳＲ）を介して、ＲＡＸレジスタおよび他のレジスタに入力することができる。
【００４１】
ＡＰＩＣＩＤは、ＴＬＢシュートダウン要求が論理モードで送信されるかまたは物理モードで送信されるかを示すようにエンコードされてもよい。物理モードの場合、システム内の各コアに対して、ＴＬＢシュートダウン要求を個別に行う必要がある。例えば、プロセッサ１０３は、４つのコアを含み、そのうち１つがＴＬＢ要求を送信した。したがって、３つの異なるＴＬＢシュートダウン要求が残りの３つのコアに各々送信される。ＡＰＩＣＩＤが論理モードである場合、同一のＴＬＢシュートダウン要求が残りの３つのコアに送信される。
【００４２】
シュートダウンアドレスは、タプルまたはレジストリに含まれてもよい。この場合、シュートダウンアドレスをタプルまたはレジストリにエンコードしてもよい。例えば、シュートダウンアドレスは、４ｋｂページのページアドレス（例えば、INVLPG命令の符号化と一致するアドレス）、開始アドレス、およびページ数（例えば、ページ数のログ値またはページ数としてエンコードされる）の１種以上、または無効化アドレスのリストとしてエンコードされてもよい。
【００４３】
ブロック４１７に示すように、ＴＬＢシュートダウン要求は、システム上で動作しているすべてのコアに送信されてもよい。説明したように、ＴＬＢシュートダウン要求は、識別情報、シュートダウンアドレス、および通知アドレスを含むことができる。いくつかの実施形態において、オペレーティングシステムは、１つ以上の仮想メモリページを削除する必要があるＴＬＢに関連付けられたコアのみに、ＴＬＢシュートダウンを指示することができる。したがって、ＯＳは、一組のコアにＴＬＢシュートダウンを指示することができる。
【００４４】
図５を参照して、ブロック５０１に示すように、ＴＬＢシュートダウン要求を受信した
各コアにおいて、受信コアの識別情報とＴＬＢシュートダウン要求に含まれる識別情報との比較を行うことができる。受信コアの識別情報とＴＬＢシュートダウン要求に含まれる識別情報とが一致しない場合、ブロック５０３に示すように、ＴＬＢシュートダウン要求を無視してもよい。そうでない場合、受信コアは、各々のＴＬＢを検討し、シュートダウンアドレスを含むか否かを判断する。シュートダウンアドレスを含む場合、ブロック５０５に示すように、そのアドレスを無効化する。
【００４５】
無効化が完了したまたはシュートダウンアドレスが受信コアのＴＬＢに含まれていない場合、ブロック５０７に示すように、受信コアは、通知アドレスに無効通知を送信することができる。受信コアの識別情報がＴＬＢシュートダウン要求に含まれる識別情報と一致しない場合に、通知を送信することもできる。受信コアは、ＴＬＢシュートダウンを完了した時に、通常の機能、例えばアプリケーションの継続処理を再開することができる。いくつかの例において、ＴＬＢシュートダウンを無視した受信コアを含め、ＴＬＢシュートダウンを受信したすべてのコアが、通知を送信することができる。別の例において、シュートダウンを行ったコアのみが、通知を送信する。
【００４６】
いくつかの例において、プロセッサの電力管理ユニットは、ＴＬＢシュートダウンの完了を通知することができる。コアは、特定の閾値よりも低い電力状態に切り替えるとそのＴＬＢをフラッシュすることができる。これによって、ＴＬＢ無効化がそのコアにさらに影響を与えない。コアが閾値よりも低い電力状態にあるときにＴＬＢシュートダウン要求の処理を完了した場合、低電力状態の受信コアが既に全てのＴＬＢを解放したため、電力管理ユニットは、受信コアの代わりに、ＴＬＢシュートダウン要求の処理完了を通知することができる。電力管理ユニットがＴＬＢシュートダウン要求の処理完了を通知できるようにすることによって、送信コアは、受信コアがより高い電力状態に戻るまで待機する必要がある場合よりも、要求に対する応答を早く受信することができる。さらに、受信コアによる処理は、ＴＬＢシュートダウン要求によって中断されなくてもよい。いくつかの例において、高度なプログラム可能な割込みコントローラ（ＡＰＩＣ）（図示せず）などのシステム１００内の他の構成要素を使用して、各コアの代わりに通信を行うことができる。例えば、ＡＰＩＣは、ＴＬＢシュートダウンの完了を通知することができる。一般的に、他の常時稼働ハードウェアエージェントは、コアの代わりに、通知を実行するように拡張または作成することができる。たとえば、現在稼働されていないＶＣＰＵは、関連するＴＬＢエントリを有しないため、常時稼働プロキシ通知によって、ＶＣＰＵからの入力なしでＴＬＢシュートダウン要求の処理完了を可能にすることができる。
【００４７】
送信コアは、受信コアから受信した通知の数を追跡することができる。この場合、送信コアは、すべての受信コアが予想されたＴＬＢシュートダウン要求の通知を通知するまで、通知アドレスで受信した通知の数を追跡することができる。例えば、ＴＬＢシュートダウン要求に含まれるＡＰＩＣＩＤに基づいて、送信コアは、予想された通知の数を知ることができる。したがって、送信コアは、この数の通知が受信されるまで、通知アドレス、例えばビットベクトルの特定の仮想アドレスまたは物理アドレスを監視することができる。いくつかの例において、送信コアは、ＴＬＢシュートダウン要求を送信すると、すぐに動作を継続することができる。ＴＬＢシュートダウン要求の状態を監視するために、ホストオペレーティングシステム２３１などのソフトウェアは、すべての通知が受信されたことを保証することができる。
【００４８】
単一のシステムが複数のプロセッサを備える場合、各プロセッサにソケットマネージャを割り当てることができる。各々のソケットマネージャは、プロセッサ内のすべてのコアからの通知を監視することができる。ソケットマネージャは、受信した通知を通知アドレスに報告することができる。いくつかの実施形態において、ソケットマネージャは、２つ以上のプロセッサに割り当てられてもよい。ソケットマネージャは、ソケットのサブ領域
、回路基板、シャーシなどに割り当てられてもよい。
【００４９】
ＴＬＢシュートダウンは、キャッシュラインに書き込むことによってトリガすることができる。この場合、各ＶＣＰＵは、ＶＭ−ＶＣＰＵペア毎に特異である共有状態のキャッシュラインを保持することができる。ＴＬＢシュートダウンを開始するために、ＴＬＢシュートダウンを開始したＶＣＰＵは、このキャッシュラインに書き込むことによって、対応するキャッシュからキャッシュラインを解放し、コアがＴＬＢシュートダウンプロセスを開始すべくことを示すハードウェアまたはマイクロコードメカニズムをトリガする。
【００５０】
さらに、ＴＬＢシュートダウンは、特定のコアのみにターゲットすることができる。この場合、ソフトウェアは、すべてのＶＣＰＵ／ＶＭとコアとの間のマッピングを維持することができる。このマッピングに基づいて、ＴＬＢシュートダウンをトリガしたプロセスを処理するコアのみに、ＴＬＢシュートダウンを指示する。
【００５１】
前述した代替例の大部分は、互いに排他的ではなく、独自の利点を達成するためにさまざまな組み合わせで実施することができる。特許請求の範囲によって規定される主題から逸脱することなく、上述した特徴のこれらの変形および組み合わせおよび他の変形および組み合わせを利用することができるため、前述した実施形態の説明は、特許請求の範囲によって規定される主題を限定すものではなく、その例示として理解すべきである。一例として、上記の動作は、上述した正確な順序で実行される必要がない。むしろ、さまざまなステップは、異なる順序で、例えば逆の順序でまたは同時に処理することができる。別段の記載がない限り、ステップを省略することもできる。さらに、本明細書に記載された実施例、ならびに「例えば」および「含む」などの表現は、特許請求の範囲の主題を特定の実施例に限定するものとして解釈すべきではなく、むしろ、これらの実施例は、多くの可能な実施形態の一部を例示することを意図している。さらに、異なる図面において、同様の参照番号は、同一または類似の要素を指すことができる。
【図１】
2018181378.tif 000003
【図２】
2018181378.tif 000004
【図３】
2018181378.tif 000005
【図４】
2018181378.tif 000006
【図５】
2018181378.tif 000007
【外国語明細書】
2018181378000001.pdf