(57)【要約】  方法は、ゲスト仮想マシン（２００）をマイグレーションソースホスト（１１０、１１０ａ）からマイグレーションターゲットホスト（１１０、１１０ｂ）にポストコピーマイグレーションすることと、ゲスト仮想マシンの命令ストリームをマイグレーションターゲットホスト上で実行することと、マイグレーションターゲットホストが、ゲスト仮想マシンがページ違反（２４０）に遭遇したことを判断することとを含む。ゲスト仮想マシンがページ違反に遭遇すると、当該方法は、マイグレーションターゲットホスト上にロードするための不在ページ（２３０、２３０ａ）をマイグレーションソースホストに要求することと、エミュレータ（２５０）上で、ゲスト仮想マシンの命令ストリームの継続実行をエミュレートすることとを含む。当該方法は、エミュレータによって、エミュレートされた命令ストリームの継続実行から将来のページ（２３０、２３０ｂ）への将来のページ参照（２２０）を識別することと、不在ページ要求と並行して、将来のページをマイグレーションソースホストに要求することとをさらに含む。
2019526083.tif 000002
【特許請求の範囲】
【請求項１】
方法（３００）であって、
ゲスト仮想マシン（２００）をマイグレーションソースホスト（１１０、１１０ａ）からマイグレーションターゲットホスト（１１０、１１０ｂ）にポストコピーマイグレーションすることを備え、前記ゲスト仮想マシン（２００）は複数の命令（２１０、２１２）の命令ストリームを有し、前記方法はさらに、
前記ゲスト仮想マシン（２００）の前記命令ストリームを前記マイグレーションターゲットホスト（１１０、１１０ｂ）上で実行することを備え、前記ゲスト仮想マシン（２００）が、前記命令ストリームにおいて不在ページ（２３０、２３０ａ）へのページ参照（２２０）についてのページ違反（２４０）に遭遇すると、前記ゲスト仮想マシン（２００）は前記命令ストリームの実行をストールし、前記不在ページ（２３０、２３０ａ）は前記マイグレーションソースホスト（１１０、１１０ａ）上に存在しており、前記マイグレーションターゲットホスト（１１０、１１０ｂ）上には存在しておらず、前記方法はさらに、
前記マイグレーションターゲットホスト（１１０、１１０ｂ）が、前記ゲスト仮想マシン（２００）が前記ページ違反（２４０）に遭遇したことを判断することを備え、
前記方法は、前記ゲスト仮想マシン（２００）が前記ページ違反（２４０）に遭遇すると、さらに、
前記マイグレーションターゲットホスト（１１０、１１０ｂ）が、前記マイグレーションターゲットホスト（１１０、１１０ｂ）上にロードするための前記不在ページ（２３０、２３０ａ）を前記マイグレーションソースホスト（１１０、１１０ａ）に要求することと、
前記マイグレーションターゲットホスト（１１０、１１０ｂ）上で実行されているかまたは前記マイグレーションターゲットホスト（１１０、１１０ｂ）と通信しているエミュレータ（２５０）上で、前記ゲスト仮想マシン（２００）の前記命令ストリームの継続実行をエミュレートすることと、
前記エミュレータ（２５０）が、エミュレートされた前記命令ストリームの前記継続実行から将来のページ（２３０、２３０ｂ）への将来のページ参照（２２０）を識別することと、
前記マイグレーションターゲットホスト（１１０、１１０ｂ）が、前記不在ページ（２３０、２３０ａ）を求める前記不在ページ要求（２４２）と並行して、識別された前記将来のページ参照（２２０）に対応する前記将来のページ（２３０、２３０ｂ）を前記マイグレーションソースホスト（１１０、１１０ａ）に要求することにより、前記不在ページ（２３０、２３０ａ）を前記マイグレーションターゲットホスト（１１０、１１０ａ）上にロードしつつ、前記将来のページ（２３０、２３０ｂ）を前記マイグレーションターゲットホスト（１１０、１１０ｂ）にプリフェッチすることとを備える、方法。
【請求項２】
前記将来のページ参照（２２０）が識別されると、前記将来のページ（２３０、２３０ｂ）を前記マイグレーションソースホスト（１１０、１１０ａ）に要求することをさらに備える、請求項１に記載の方法（３００）。
【請求項３】
前記ゲスト仮想マシン（２００）の前記命令ストリームの前記継続実行をエミュレートする間、前記不在ページ（２３０、２３０ａ）のロードされた値に依存する命令を除外することによって、前記エミュレータ（２５０）が将来のページ違反（２４０）より後の将来のページ参照（２２０）を識別できるようにすることをさらに備える、請求項１または２に記載の方法（３００）。
【請求項４】
前記マイグレーションターゲットホスト（１１０、１１０ｂ）は、
１つ以上のコンピューティングデバイス（４００）と、
前記１つ以上のコンピューティングデバイス（４００）と通信している１つ以上のメモリホストとを備え、前記１つ以上のメモリホストはページ（２３０）を格納している、請求項１から３のいずれか１項に記載の方法（３００）。
【請求項５】
前記将来のページ参照（２２０）と前記不在ページ（２３０、２３０ａ）との関係に基づいて前記将来のページ参照（２２０）を識別することをさらに備える、請求項１から４のいずれか１項に記載の方法（３００）。
【請求項６】
前記関係は、親ページ（２３０）と１つ以上の子ページ（２３０）との間のページナビゲーションマップ（２６０）を備える、請求項５に記載の方法（３００）。
【請求項７】
前記将来のページ参照（２２０）を識別することは、識別された将来のページ参照（２２０）と関連付けられた少なくとも１つの命令（２１０、２１２）内に、少なくとも１つの付加的な将来のページ参照（２２０）を識別することを備える、請求項１から６のいずれか１項に記載の方法（３００）。
【請求項８】
前記不在ページ（２３０、２３０ａ）を前記マイグレーションターゲットホスト（１１０、１１０ｂ）に配信済みである場合、前記エミュレータ（２５０）による前記命令ストリームの前記継続実行のエミュレーションを中止することをさらに備える、請求項１から７のいずれか１項に記載の方法（３００）。
【請求項９】
前記不在ページ（２３０、２３０ａ）が前記マイグレーションターゲットホスト（１１０、１１０ｂ）上に存在している場合、前記マイグレーションターゲットホスト（１１０、１１０ｂ）上で前記ゲスト仮想マシン（２００）の前記命令ストリームの実行を継続することをさらに備える、請求項８に記載の方法（３００）。
【請求項１０】
エミュレートされた前記命令ストリームの前記継続実行から将来のページ参照（２２０）を識別することは、識別された前記将来のページ参照（２２０）の将来のページアドレス（２３２）を識別することをさらに備える、請求項１から９のいずれか１項に記載の方法（３００）。
【請求項１１】
マイグレーションターゲットホスト（１１０、１１０ｂ）であって、
データ処理ハードウェア（１１２）と、
前記データ処理ハードウェア（１１２）と通信しているメモリハードウェア（１３０）とを備え、前記メモリハードウェア（１３０）は命令（２１０、２１２）を格納しており、前記命令は前記データ処理ハードウェア（１１２）上で実行されると前記データ処理ハードウェア（１１２）に動作を実行させ、前記動作は、
ゲスト仮想マシン（２００）をマイグレーションソースホスト（１１０、１１０ａ）から前記メモリハードウェア（１３０）にポストコピーマイグレーションすることを備え、前記ゲスト仮想マシン（２００）は複数の命令（２１０、２１２）の命令ストリームを有し、前記動作はさらに、
前記ゲスト仮想マシン（２００）の前記命令ストリームを実行することを備え、前記ゲスト仮想マシン（２００）が、前記命令ストリームにおいて不在ページ（２３０、２３０ａ）へのページ参照（２２０）についてのページ違反（２４０）に遭遇すると、前記ゲスト仮想マシン（２００）は前記命令ストリームの実行をストールし、前記不在ページ（２３０、２３０ａ）は前記マイグレーションソースホスト（１１０、１１０ａ）上に存在しており、前記マイグレーションターゲットホスト（１１０、１１０ｂ）の前記メモリハードウェア（１３０）上には存在しておらず、前記動作はさらに、
前記ゲスト仮想マシン（２００）が前記ページ違反（２４０）に遭遇したことを判断することを備え、
前記動作は、前記ゲスト仮想マシン（２００）が前記ページ違反（２４０）に遭遇すると、さらに、
前記マイグレーションターゲットホスト（１１０、１１０ｂ）の前記メモリハードウェア（１３０）上にロードするための前記不在ページ（２３０、２３０ａ）を前記マイグレーションソースホスト（１１０、１１０ａ）に要求することと、
前記データ処理ハードウェア（１１２）上で実行されているかまたは前記マイグレーションターゲットホスト（１１０、１１０ｂ）と通信しているエミュレータ（２５０）上で、前記ゲスト仮想マシン（２００）の前記命令ストリームの継続実行をエミュレートすることと、
前記エミュレータ（２５０）が、エミュレートされた前記命令ストリームの前記継続実行から将来のページ（２３０、２３０ｂ）への将来のページ参照（２２０）を識別することと、
前記不在ページ要求（２４２）と並行して、識別された前記将来のページ参照（２２０）に対応する前記将来のページ（２３０、２３０ｂ）を前記マイグレーションソースホスト（１１０、１１０ａ）に要求することにより、前記不在ページ（２３０、２３０ａ）を前記マイグレーションターゲットホスト（１１０、１１０ａ）の前記メモリハードウェア（１３０）上にロードしつつ、前記将来のページ（２３０、２３０ｂ）を前記マイグレーションターゲットホスト（１１０、１１０ｂ）の前記メモリハードウェア（１３０）にプリフェッチすることとを備える、マイグレーションターゲットホスト。
【請求項１２】
前記動作は、前記将来のページ参照（２２０）が識別されると、識別された前記将来のページ参照（２２０）を前記マイグレーションソースホスト（１１０、１１０ａ）に要求することをさらに備える、請求項１１に記載のマイグレーションターゲットホスト（１１０、１１０ｂ）。
【請求項１３】
前記動作は、前記ゲスト仮想マシン（２００）の前記命令ストリームの前記継続実行をエミュレートする間、前記不在ページ（２３０、２３０ａ）のロードされた値に依存する命令（２１０、２１２）を除外することによって、前記エミュレータ（２５０）が将来のページ違反（２４０）より後の将来のページ参照（２２０）を識別できるようにすることをさらに備える、請求項１１または１２に記載のマイグレーションターゲットホスト（１１０、１１０ｂ）。
【請求項１４】
前記メモリハードウェア（１３０）は、前記データ処理ハードウェア（１１２）と通信している１つ以上のメモリホストをさらに備え、前記１つ以上のメモリホストはページ（２３０）を格納している、請求項１１から１３のいずれか１項に記載のマイグレーションターゲットホスト（１１０、１１０ｂ）。
【請求項１５】
前記動作は、前記将来のページ参照（２２０）と前記不在ページ（２３０、２３０ａ）との関係に基づいて前記将来のページ参照（２２０）を識別することをさらに備える、請求項１１から１４のいずれか１項に記載のマイグレーションターゲットホスト（１１０、１１０ｂ）。
【請求項１６】
前記関係は、親ページ（２３０）と１つ以上の子ページ（２３０）との間のページナビゲーションマップ（２６０）を備える、請求項１５に記載のマイグレーションターゲットホスト（１１０、１１０ｂ）。
【請求項１７】
前記将来のページ参照（２２０）を識別する動作は、識別された将来のページ参照（２２０）と関連付けられた少なくとも１つの命令（２１０、２１２）内に、少なくとも１つの将来のページ参照（２２０）を識別することを備える、請求項１１から１６のいずれか１項に記載のマイグレーションターゲットホスト（１１０、１１０ｂ）。
【請求項１８】
前記動作は、前記不在ページ（２３０、２３０ａ）を前記マイグレーションターゲットホスト（１１０、１１０ｂ）の前記メモリハードウェア（１３０）に配信済みである場合、前記エミュレータ（２５０）による前記命令ストリームの前記継続実行のエミュレーションを中止することをさらに備える、請求項１１から１７のいずれか１項に記載のマイグレーションターゲットホスト（１１０、１１０ｂ）。
【請求項１９】
前記動作は、前記不在ページ（２３０、２３０ａ）が前記マイグレーションターゲットホスト（１１０、１１０ｂ）の前記メモリハードウェア（１３０）上に存在している場合、前記ゲスト仮想マシン（２００）の前記命令ストリームの実行を継続することをさらに備える、請求項１８に記載のマイグレーションターゲットホスト（１１０、１１０ｂ）。
【請求項２０】
エミュレートされた前記命令ストリームの前記継続実行から将来のページ参照（２２０）を識別することは、識別された前記将来のページ参照（２２０）の将来のページアドレス（２３２）を識別することをさらに備える、請求項１１から１９のいずれか１項に記載のマイグレーションターゲットホスト（１１０、１１０ｂ）。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は投機的仮想マシン実行に関する。
【背景技術】
【０００２】
背景
ウェブサービスはサーバ上で仮想マシンを動作させ得る。各サーバは、当該サーバ内で独立したマシンとして存在して動作する複数の仮想マシンをホストし得る。さらに、各仮想マシンは１つ以上の仮想中央処理装置（ｖＣＰＵ）を含み得る。サーバがメンテナンスを必要とする場合、または他の理由で劣化した場合、仮想マシンは異なるサーバに移行され得る。仮想マシンを異なるサーバに移行させるためにライブマイグレーションが行なわれ得る。ライブマイグレーションは一般に、現在のサーバ上の仮想マシンを休止または中断し、仮想マシンを異なるサーバにコピーするかまたは移行させる。そして、異なるサーバが仮想マシンを再開して動作を継続する。ライブマイグレーションでは、コピーまたは移行が起こっている間は仮想マシンの動作を休止または中断する必要がある。仮想マシンの休止または中断によって生じる遅延は、仮想マシン動作にとって許容できない場合がある。したがって、迅速にダウンタイムなしで仮想マシンを別のサーバに移行させることが望ましい場合がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
本開示の一局面は、投機的ＶＭ実行のための方法を提供する。当該方法は、ゲスト仮想マシンをマイグレーションソースホストからマイグレーションターゲットホストにポストコピーマイグレーションすることを含む。ゲスト仮想マシンは複数の命令の命令ストリームを有する。当該方法は、ゲスト仮想マシンの命令ストリームをマイグレーションターゲットホスト上で実行することと、マイグレーションターゲットホストによって、ゲスト仮想マシンがページ違反に遭遇したことを判断することとをさらに含む。ゲスト仮想マシンが、命令ストリームにおいて不在ページへのページ参照についてのページ違反に遭遇すると、ゲスト仮想マシンは命令ストリームの実行をストールする。不在ページはマイグレーションソースホスト上に存在しており、マイグレーションターゲットホスト上には存在していない。ゲスト仮想マシンがページ違反に遭遇すると、当該方法は、マイグレーションターゲットホストが、マイグレーションターゲットホスト上にロードするための不在ページをマイグレーションソースホストに要求することと、マイグレーションターゲットホスト上で実行されているかまたはマイグレーションターゲットホストと通信しているエミュレータ上で、ゲスト仮想マシンの命令ストリームの継続実行をエミュレートすることとを含む。当該方法は、エミュレータが、エミュレートされた命令ストリームの継続実行から将来のページへの将来のページ参照を識別することと、マイグレーションターゲットホストが、不在ページ要求と並行して、マイグレーションソースホストに将来のページを要求することにより、不在ページをマイグレーションターゲットホスト上にロードしつつ、将来のページをマイグレーションターゲットホストにプリフェッチすることとをさらに含む。
【０００４】
本開示の実装例は以下の任意の特徴の１つ以上を含んでもよい。ある実装例では、当該方法は、対応する将来のページ参照が識別されると、将来のページをマイグレーションソースホストに要求することを含む。ゲスト仮想マシンの命令ストリームの継続実行をエミュレートする間、当該方法は、不在ページのロードされた値に依存する命令を除外することによって、エミュレータが将来のページ違反より後の将来のページ参照を識別できるようにすることを含む。
【０００５】
マイグレーションターゲットホストは、１つ以上のコンピューティングデバイスと、１つ以上のコンピューティングデバイスと通信している１つ以上のメモリホストとを含んでもよい。１つ以上のメモリホストはページを格納している。当該方法は、将来のページ参照と不在ページとの関係に基づいて将来のページ参照を識別することをさらに含んでもよい。関係は、親ページと１つ以上の子ページとの間のページナビゲーションマップを含んでもよい。ある例では、将来のページ参照を識別することは、識別された将来のページ参照と関連付けられた少なくとも１つの命令内に、少なくとも１つの付加的な将来のページ参照を識別することを含む。当該方法は、不在ページをマイグレーションターゲットホストに配信済みである場合、エミュレータによる命令ストリームの継続実行のエミュレーションを中止することをさらに含む。当該方法は、不在ページがマイグレーションターゲットホスト上に存在している場合、マイグレーションターゲットホスト上でゲスト仮想マシンの命令ストリームの実行を継続することをさらに含む。エミュレートされた命令ストリームの継続実行から将来のページ参照を識別することは、識別された将来のページ参照の将来のページアドレスを識別することをさらに含んでもよい。
【０００６】
本開示の別の局面は、データ処理ハードウェアと、データ処理ハードウェアと通信しているメモリハードウェアとを含むマイグレーションターゲットホストを提供する。メモリハードウェアは命令を格納しており、命令は、データ処理ハードウェア上で実行されるとデータ処理ハードウェアに動作を実行させる。当該動作は、ゲスト仮想マシンをマイグレーションソースホストからメモリハードウェアにポストコピーマイグレーションすることを含む。ゲスト仮想マシンは複数の命令の命令ストリームを有する。当該動作は、ゲスト仮想マシンの命令ストリームを実行することと、ゲスト仮想マシンがページ違反に遭遇したことを判断することとをさらに含む。ゲスト仮想マシンが、命令ストリームにおいて不在ページへのページ参照についてのページ違反に遭遇すると、ゲスト仮想マシンは命令ストリームの実行をストールし、不在ページはマイグレーションソースホスト上に存在しており、マイグレーションターゲットホストのメモリハードウェア上には存在していない。ゲスト仮想マシンがページ違反に遭遇すると、当該動作は、マイグレーションターゲットホストのメモリハードウェア上にロードするための不在ページをマイグレーションソースホストに要求することと、データ処理ハードウェア上で実行されているかまたはマイグレーションターゲットホストと通信しているエミュレータ上で、ゲスト仮想マシンの命令ストリームの継続実行をエミュレートすることとを含む。当該動作は、エミュレータが、エミュレートされた命令ストリームの継続実行から将来のページへの将来のページ参照を識別することと、不在ページ要求と並行して、将来のページをマイグレーションソースホストに要求することにより、不在ページをマイグレーションターゲットホストのメモリハードウェア上にロードしつつ、将来のページをマイグレーションターゲットホストのメモリハードウェアにプリフェッチすることとをさらに含む。
【０００７】
本局面は以下の任意の特徴の１つ以上を含んでもよい。ある実装例では、当該動作は、対応する将来のページ参照が識別されると、将来のページをマイグレーションソースホストに要求することを含む。当該動作は、ゲスト仮想マシンの命令ストリームの継続実行をエミュレートする間、不在ページのロードされた値に依存する命令を除外することによって、エミュレータが将来のページ違反より後の将来のページ参照を識別できるようにすることをさらに含んでもよい。メモリハードウェアは、データ処理ハードウェアと通信している１つ以上のメモリホストをさらに含んでもよく、１つ以上のメモリホストはページを格納している。ある例では、当該動作は、将来のページ参照と不在ページとの関係に基づいて将来のページ参照を識別することを含む。関係は、親ページと１つ以上の子ページとの間のページナビゲーションマップを含んでもよい。
【０００８】
ある実装例では、将来のページ参照を識別する動作は、識別された将来のページ参照と関連付けられた少なくとも１つの命令内に、少なくとも１つの将来のページ参照を識別することを含む。当該動作は、不在ページをマイグレーションターゲットホストのメモリハードウェアに配信済みである場合、エミュレータによる命令ストリームの継続実行のエミュレーションを中止することをさらに含んでもよい。当該動作は、不在ページがマイグレーションターゲットホストのメモリハードウェア上に存在している場合、ゲスト仮想マシンの命令ストリームの実行を継続することをさらに含んでもよい。エミュレートされた命令ストリームの継続実行から将来のページ参照を識別することは、識別された将来のページ参照の将来のページアドレスを識別することをさらに含んでもよい。
【０００９】
本開示の１つ以上の実装例の詳細は添付の図面および以下の説明に記述されている。他の局面、特徴、および利点は説明および図面から、ならびに請求項から明らかになるであろう。
【００１０】
さまざまな図中の同様の参照符号は同様の要素を示す。
【図面の簡単な説明】
【００１１】
【図１】メモリホストを有する分散システムの概略図である。
【図２Ａ】マイグレーションソースホストからマイグレーションターゲットホストに移行されている仮想マシンの概略図である。
【図２Ｂ】マイグレーションソースホストからマイグレーションターゲットホストに移行される処理中の仮想マシンの概略図である。
【図２Ｃ】マイグレーションソースホストからマイグレーションターゲットホストに移行されてページを取出す処理中の仮想マシンの概略図である。
【図２Ｄ】要求されたページがマイグレーションソースホストからマイグレーションターゲットホストに移行した後の仮想マシンの概略図である。
【図３】投機的仮想マシン実行の方法のための動作の例示的な配列の図である。
【図４】本文書に記載のシステムおよび方法を実現するために用いられるホストであり得る例示的なコンピューティングデバイスの概略図である。
【発明を実施するための形態】
【００１２】
詳細な説明
ポストコピーマイグレーションを用いて仮想マシン（たとえばゲストｖＣＰＵ）をマイグレーションソースホストからマイグレーションターゲットホストに移行させる間、ゲストｖＣＰＵの休止中に物理的な静止状態および最小の動的状態（たとえば登録状態）のみが移行する。この結果、仮想マシンがマイグレーションターゲットホスト上で再開すると、ゲストページ参照を行なうと（ゲストページはその新たなホスト、すなわちマイグレーションターゲットホスト上にまだロードされていないので）不在違反が生じる。ゲストｖＣＰＵが不在ページ違反に遭遇すると、ゲストｖＣＰＵは、命令ストリームの実行をストールし、同時に、不在ページをマイグレーションソースホストに要求して、マイグレーションターゲットホストが不在ページをロードするのを待つ。違反を除去する／無くすために、マイグレーションターゲットホストは、オンデマンドでマイグレーションソースからマイグレーションターゲットへのページの移行を要求する。ゲストｖＣＰＵが不在ページ違反のためにストールしている間、エミュレータがゲストｖＣＰＵによる命令ストリームの実行を継続して、命令ストリームから将来のページ参照を抽出し、抽出された将来のページ参照が発見されるとそれらを不在ページと並行してマイグレーションソースに要求することによって、不在ページをマイグレーションターゲットホスト上にロードしつつ、識別されたページ参照をマイグレーションターゲットホストにプリフェッチし得る。
【００１３】
図１は、サーバまたはホスト１１０を有する分散システム１００の概略図である。１つ以上のサーバまたはホスト１１０、１１０ａ、１１０ｂ…１１０ｎの各々は、データ処理ハードウェア１１２（たとえば１つ以上のコンピュータプロセッサ）と、データ処理ハードウェア１１２と通信しているメモリハードウェア１３０とを含む。各ホスト１１０は、他のホスト１１０と、またはネットワーク１４０を介して（たとえばインターネットを介して）１つ以上のクライアント１２０と通信するように構成されたネットワークインターフェイス接続（ＮＩＣ）１１６を含む。
【００１４】
ある実装例では、１つ以上のホスト１１０は、対応するメモリハードウェア１３０に格納された対応する命令２１０を実行することによって仮想マシン２００を提供する。命令２１０は、１つ以上のホスト１１０、１１０ａ、…１１０ｎが受信する命令ストリームの一部であり得る。仮想マシン２００は特定のコンピュータシステムのエミュレーションであり得る。さらに、仮想マシン２００は、現実のまたは仮想のコンピュータの具体的なコンピュータアーキテクチャおよび１つ以上の機能に基づいて動作し得、その実装は専用のハードウェア、ソフトウェア、またはその組合せを含み得る。ある例では、仮想マシン２００はシステム仮想マシンであるが、他の例では、仮想マシン２００はプロセス仮想マシンである。
【００１５】
システム仮想マシン（完全仮想化ＶＭとしても公知）は、標的リアルマシンの完全な置換、および完全なオペレーティングシステムの実行を可能にする機能のレベルを提供する。システム仮想マシンは通常は既存のアーキテクチャをエミュレートし、ｉ）リアルハードウェアが使用不可能である（たとえば別の状況では旧式のプラットフォーム上で実行されている）場合にプログラムを走らせるプラットフォームを提供する目的で、ii）（たとえばハードウェア仮想化を提供するために）コンピューティングリソースのより効率的な使用に繋がる仮想マシンの複数のインスタンスを提供する目的で、または、iii）その両方の目的で構築される。ハイパーバイザがハードウェアを共有して管理し、さまざまな環境を互いに分離して同一の物理マシン上で実行し得る。
【００１６】
プロセス仮想マシンは、抽象化されてプラットフォームから独立したプログラム実行環境を提供することによって、単一のコンピュータプログラムを実行する。ある例では、プロセス仮想マシンはさまざまなアーキテクチャをエミュレートし、別のＣＰＵまたはアーキテクチャ用に書かれたソフトウェアアプリケーションおよびオペレーティングシステムの実行を可能にする。
【００１７】
各仮想マシン２００は物理的状態２０２および動的状態２０４を含む。物理的状態２０２は、ｖＣＰＵ２０６、仮想ＰＣＩスロット、ＰＣＩスロット内の仮想デバイス、および／または他のコンピュータ機器の数を表わす。ある実装例では、仮想マシン２００は１つの関連付けられたｖＣＰＵ２０６を有するが、他の実装例では、物理的ホスト１１０が複数のＣＰＵコアを自由に使える場合は、仮想マシン２００は複数の関連付けられたｖＣＰＵ２０６を有する。そのような実装例では、ＣＰＵスケジューラが実行コンテキストを割当て得、ｖＣＰＵは本質的に論理プロセッサ上の一連のタイムスロットになる。動的状態２０４は、仮想マシン２００が動作してコンピューティングマシンをエミュレートするのに必要な、仮想ＣＰＵレジスタのコンテンツ、ゲストメモリのコンテンツ等を表わす。
【００１８】
命令２１０はページ参照２２０を含み得る。ページ参照２２０は、クライアント１２０またはデータソースと対話してページ２３０に含まれているデータまたは情報にアクセスすることを命じるコマンドである。命令２１０は１つ以上のｖＣＰＵ２０６を表わし得る。さらに、データ処理ハードウェア１１２が実行する命令２１０は、１つ以上のｖＣＰＵ２０６の命令と同一であり得る。少なくとも１つの実装例では、命令２１０はｘ８６コマンドである。少なくとも１つの他の実装例では、命令２１０はデータ処理ハードウェア１１２が実行する任意の一連のコマンドである。
【００１９】
ページ２３０は、たとえば２０８Ｇｂを超えるなどかなり大きくてもよく、さらに大きい実装例も可能である。たとえば、クライアント１２０は、情報またはデータ１５０を求める要求１２２を、ネットワーク１４０を介して仮想マシン２００に送信し得る。ＮＩＣ１１６は適切なホスト１１０で当該要求を受信する。ホスト１１０のデータ処理ハードウェア１１２は、当該要求を、ホスト１１０のメモリ１３０内に位置する正確な仮想マシン２００に導く。次いで、ホスト１１０のデータ処理ハードウェア１１２は命令２１０にアクセスして、仮想マシン２００の物理的状態２０２および動的状態２０４に従って、仮想マシン２００が実行するように要求１２２に対する適切な処理を実行する。データ処理ハードウェア１１２は、データ１５０を含むさまざまなページ２３０にアクセスし得る。データ処理ハードウェア１１２はページ２３０から適切なデータ１５０を決定し、データ１５０またはページ２３０全体をクライアント１２０に戻す。ある例では、各ホスト１１０、１１０ａ、１１０ｂ…１１０ｎが１つ以上の仮想マシン２００、２００ａ、２００ｂ…２００ｎに対して動作するのと同時に、複数のクライアント１２０、１２０ａ、１２０ｂ…１１０ｎが複数のホスト１１０、１１０ａ、１１０ｂ…１１０ｎにアクセスする。
【００２０】
図２Ａは、マイグレーションソースホスト１１０、１１０ａからマイグレーションターゲットホスト１１０、１１０ｂに移行されている仮想マシン２００の概略図である。さまざまな理由で、仮想マシン２００をマイグレーションソースホスト１１０、１１０ａからマイグレーションターゲットホスト１１０、１１０ｂにマイグレーションしなければならない場合がある。ポストコピーマイグレーションが用いられ得る。そのような実装例では、マイグレーションソースホスト１１０、１１０は、仮想マシン２００の休止中に、物理的状態２０２、最小の動的状態２０４（たとえば登録状態）、および仮想マシン２００と関連付けられた命令２１０の一部またはすべてのみをマイグレーションターゲットホスト１１０、１１０ｂに移行させるかまたはポストコピーする。ある例では、マイグレーションソースホスト１１０、１１０ａは、物理的状態２０２、任意に動的状態２０４の一部、および仮想マシン２００と関連付けられた命令２１０の一部またはすべてを、ＮＩＣ１１６を介してネットワーク１４０上で移行させる。マイグレーションターゲットホスト１１０、１１０ｂは、物理的状態２０２、任意の動的状態２０４、および仮想マシン２００と関連付けられた命令２１０の一部またはすべてを、ＮＩＣ１１６を介してネットワーク１４０上で受信する。ポストコピーマイグレーションは、仮想マシン２００の最小量の情報を移行させ、仮想マシン２００のダウンタイムを最小にするために用いられ得る。すべてのページ２３０がマイグレーションターゲットホスト１１０、１１０ｂに移行するのを待つと、仮想マシン２００にとって許容できないダウンタイムが生じ得る。マイグレーションソースホスト１１０、１１０ａはページ２３０を保持し、ページ２３０を必要に応じてマイグレーションターゲットホスト１１０、１１０ｂに移行させ得る。マイグレーションターゲットホスト１１０、１１０ｂは、物理的状態２０２、動的状態２０４、および仮想マシン２００と関連付けられた命令２１０の一部またはすべてを、そのメモリ１３０、１３０ｂ内にロードする。データ処理ハードウェア１１２、１１２ｂは、所与のページ２３０へのアクセスを要求する命令または要求を含む命令ストリーム形式の命令２１０を実行し始め得る。
【００２１】
図２Ｂは、マイグレーションソースホスト１１０、１１０ａからマイグレーションターゲットホスト１１０、１１０ｂに移行される処理中の仮想マシン２００の概略図である。マイグレーションターゲットホスト１１０、１１０ｂのデータ処理ハードウェア１１２、１１２ｂは命令２１０を実行して、ｖＣＰＵ２０６として作用する仮想マシン２００ａを動作させ始め得る。多くの命令２１０が所与のページ２３０へのアクセスを要求し得る。データ処理ハードウェア１１２が、マイグレーションソースホスト１１０、１１０ａからまだ移行されていないページ２３０を要求する命令２１０に遭遇すると、データ処理ハードウェア１１２は不在ページ違反２４０を提起する。不在ページ違反２４０は、対応するページ２３０、２３０ａが取出され得るまで命令２１０の実行をストールし、ストールしたｖＣＰＵ２０６として作用する。不在ページ違反２４０に続いて、マイグレーションターゲットホスト１１０、１１０ｂはエミュレータ２５０を実行する。エミュレータ２５０は命令２１０を調べるかまたは実行して、マイグレーションターゲットホスト１１０、１１０ｂ上で不在ページ２３０を受信することによって不在ページ違反２４０が取除かれた後にデータ処理ハードウェア１１２がアクセスし得る将来のページ２３０、２３０ｂを識別する。ある例では、エミュレータ２５０は命令２１０の実行を継続し、エミュレータ２５０は不在のページ２３０または値をすべて除外し、命令２１０が次に呼出し得るかまたは必要とし得るページ２３０、２３０ｂを識別し続ける。また、エミュレータ２５０はページ２３０を直接調べて、関係に基づいて、さらなる不在ページ違反２４０を防止するためにデータ処理ハードウェア１１２またはｖＣＰＵ２０６がどのページ２３０、２３０ｂを必要とするかを判断し得る。エミュレータ２５０は、ページ２３０同士の間の過去の使用の頻度、共通のアドレス位置、メモリアクセス要件、埋込まれたリンク付け、またはページ２３０同士の間の他の関係（を含むがこれらに限定されるものではない）を調べて、将来のページ２３０、２３０ｂへの参照を決定し得る。ある例では、将来のページ２３０、２３０ｂへのページ参照２２０は、親ページ２３０と１つ以上の子ページ２３０との間のページナビゲーションマップを含む。
【００２２】
図２Ｃは、マイグレーションソースホスト１１０、１１０ａからマイグレーションターゲットホスト１１０、１１０ｂに移行されてページ２３０を取出す処理中の仮想マシン２００の概略図である。マイグレーションターゲットホスト１１０、１１０ｂのデータ処理ハードウェア１１２、１１２ｂ上で実行される仮想マシン２００が不在ページ違反２４０のためにストールし続けると、データ処理ハードウェア１１２、１１２ｂは、アドレス２３２にある不在ページ２３０ａを求める不在ページ要求２４２を送信し得る。エミュレータ２５０は、データ処理ハードウェア１１２、１１２ｂを用いて、不在ページ２３０ａを求める不在ページ要求２４２の間は動作し続ける。アドレス２３２は、不在ページ違反２４０を生成している可能性がある特定のページ２３０を識別する。マイグレーションターゲットホスト１１０、１１０ｂは、マイグレーションソースホスト１１０、１１０ａまたは不在ページ２３０ａを含む他のホスト１１０に不在ページ要求２４２を配信する。マイグレーションソースホスト１１０、１１０ａは不在ページ２３０ａを取出し、不在ページリターン２４４によって不在ページ２３０ａをマイグレーションターゲットホスト１１０、１１０ｂに配信し得る。不在ページリターン２４４が不在ページ２３０、２３０ａをマイグレーションターゲットホスト１１０、１１０ｂに戻すことによって、マイグレーションターゲットホスト１１０、１１０ｂは不在ページ違反２４０を取除くことができる。
【００２３】
不在ページ要求２４２が送信されて戻されている間、エミュレータ２５０は不在ページ違反２４０が起こった点から命令２１０の継続実行を開始し、ｖＣＰＵ２０６として作用する。エミュレータ２５０は、データ処理ハードウェア１１２、１１２ｂが実行し得る次の命令２１０をステップスルーすることによって命令２１０の継続実行をエミュレートし、エミュレートされた命令２１２に基づいて将来のページ２３０、２３０ｂへの将来のページ参照２２０を識別する。データ処理ハードウェア１１２は、他の参照を用いてページ２３０を識別してもよい。さらに、将来のページ参照２２０は、ページ２３０を識別するためのアドレス２３２または他の参照を含んでもよい。エミュレータ２５０が命令２１０の継続実行をエミュレートして将来のページ参照２２０を識別すると、エミュレータ２５０は、識別された将来のページ参照２２０に対応する将来のページ２３０、２３０ｂを求める将来ページ要求２５２を生成し、エミュレートされた命令２１２に基づいて、命令２１０の将来の継続実行のために何が必要であり得るか（たとえば他のリソース）を任意に判断する。エミュレータ２５０は、命令２１０をエミュレートする間、不在ページ２３０ａを参照する命令２１０を除外し、将来のページ参照２２０を識別し続け得る。マイグレーションターゲットホスト１１０、１１０ｂは、不在ページ違反２４０を生成した不在ページ２３０ａを求める不在ページ要求２４２と並行して、エミュレートされた命令２１２から発見された将来のページ参照２２０に対応する将来のページ２３０ｂを求める１つ以上の将来ページ要求２５２を送信し得る。
【００２４】
１つ以上の将来ページ要求２５２を受信したことに応答して、マイグレーションソースホスト１１０、１１０ａは、要求された将来のページ２３０、２３０ｂを含む１つ以上の対応する将来ページリターン２５４をマイグレーションターゲットホスト１１０、１１０ｂに送信する。不在ページ要求２４２、不在ページリターン２４４、将来ページ要求２５２、および将来ページリターン２５４は、同様のおよび／または重なり合う時間フレームで起こり得る。これによって、マイグレーションソースホスト１１０、１１０ａは複数のページ２３０をマイグレーションターゲットホスト１１０、１１０ｂに完全にまたは部分的に移行させることによって、不在ページ違反２４０の将来の発生と、ｖＣＰＵ２０６についての命令２１０の実行の関連した停止とを減少させることができる。ある例では、データ処理ハードウェア１１２は、不在ページリターン２４４によって不在ページ２３０、２３０ａが戻ってくるとエミュレータ２５０を中断する。エミュレータ２５０が停止された場合でも、マイグレーションソースホスト１１０、１１０ａは将来ページ要求２５２を満たして将来ページリターン２５４をマイグレーションターゲットホスト１１０、１１０ｂに送信し続けてもよい。ある例では、エミュレータ２５０はエミュレートされた命令２１２から将来のページ参照２２０を誤って識別し、誤って識別された将来のページ参照２２０に対応する将来のページ２３０ｂを求める対応する将来ページ要求２５２を生成することによって、対応する将来のページ２３０、２３０ｂがプリフェッチされてしまう。このような例は許容可能であり得る。なぜなら、データ処理ハードウェア１１２は、命令２１０の後の継続実行において、誤って識別された将来のページ参照２２０の将来のページ２３０、２３０ｂを後で使用する可能性があるからである。
【００２５】
図２Ｄは、要求されたページ２３０がマイグレーションソースホスト１１０、１１０ａからマイグレーションターゲットホスト１１０、１１０ｂに移行した後の仮想マシン２００の概略図である。不在ページ２３０、２３０ａが戻されてマイグレーションターゲットホスト１１０、１１０ｂのメモリ１３０、１３０ｂ内にロードされることによって、仮想マシン２００が、データ処理ハードウェア１１２、１１２ｂを介してｖＣＰＵ２０６の動作を継続するために必要なアクセスを有するようになると、エミュレータ２５０は停止または中断され得る。マイグレーションターゲットホスト１１０、１１０ｂが（ｖＣＰＵ２０６を介して）不在ページ違反２４０を取除くことによって、マイグレーションターゲットホスト１１０、１１０ｂ上のｖＣＰＵ２０６は命令２１０を実行し続け、マイグレーションターゲットホスト１１０、１１０ｂ上で仮想マシン２００を動作させ続けることができ得る。不在ページ違反２４０の継続生成およびページ２３０の取出しは、命令２１０が参照する必要なページ２３０がマイグレーションソースホスト１１０、１１０ａからマイグレーションターゲットホスト１１０、１１０ｂに移行されるまで継続し得る。命令２１０が参照するすべてのページ２３０がマイグレーションターゲットホスト１１０、１１０ｂ上に存在するようになると、マイグレーションターゲットホスト１１０、１１０ｂはデータ処理ハードウェア１１２、１１２ｂを介して命令２１０を実行して、さらなる不在ページ違反２４０なしに仮想マシン２００を提供することができる。完全に移行された仮想マシン２００は、完全な物理的状態２０２および動的状態２０４を有する。
【００２６】
図３は、投機的仮想マシン実行の方法３００のための動作の例示的な配列を提供する。ブロック３０２において、方法３００は、ゲスト仮想マシン２００をマイグレーションソースホスト１１０、１１０ａからマイグレーションターゲットホスト１１０、１１０ｂにポストコピーマイグレーションすることを含む。各仮想マシン２００は、仮想ＣＰＵ２０６、ＰＣＩスロット、ＰＣＩスロット内のデバイス等の数を表わす物理的状態２０２と、仮想マシンが動作するのに必要な仮想ＣＰＵレジスタのコンテンツ、ゲストメモリのコンテンツ等を含む動的状態２０４とを含み得る。各仮想マシン２００は、さまざまなページ２３０を参照する１組の命令２１０を有する。ネットワーク１４０は、その物理的状態２０２および動的状態２０４を含む仮想マシン２００をマイグレーションソースホスト１１０、１１０ａからマイグレーションターゲットホスト１１０、１１０ｂに移行させ得る。ブロック３０４において、方法３００は、ゲスト仮想マシン２００の命令２１０をマイグレーションターゲットホスト１１０、１１０ｂ上で実行することを含む。マイグレーションターゲットホスト１１０、１１０ｂのデータ処理ハードウェア１１２、１１２ｂは命令２１０を実行して、少なくとも１つの関連付けられたｖＣＰＵ２０６を有する仮想マシン２００を提供し得る。ゲスト仮想マシン２００が、命令２１０の命令ストリームにおいて不在ページ２３０、２３０ａへのページ２３０へのページ参照またはアドレス２３２についてのページ違反２４０に遭遇すると、ゲスト仮想マシン２００は命令２１０の命令ストリームの実行をストールし得る。不在ページ２３０、２３０ａは、マイグレーションソースホスト１１０、１１０ａ上に存在しており、マイグレーションターゲットホスト１１０、１１０ｂ上には存在していない場合がある。ブロック３０６において、方法３００は、マイグレーションターゲットホスト１１０、１１０ｂが、ゲスト仮想マシン２００がページ違反２４０に遭遇したことを判断することを含み得る。マイグレーションターゲットホスト１１０、１１０ｂのデータ処理ハードウェア１１２は、命令２１０の継続実行に必要なページ２３０がマイグレーションターゲットホスト１１０、１１０ｂのメモリ１３０、１３０ｂに不在である場合に不在ページ違反２４０に遭遇し得る。ゲスト仮想マシン２００がページ違反２４０に遭遇すると、方法３００は以下を含み得る。ブロック３０８において、方法３００は、マイグレーションターゲットホスト１１０、１１０ｂが、マイグレーションターゲットホスト１１０、１１０ｂ上にロードするための不在ページ２３０、２３０ａをマイグレーションソースホスト１１０、１１０ａに要求することを含む。不在ページ２３０、２３０は、不在ページ２３０、２３０ａのアドレス２３２を含む不在ページ２４２を求める要求によって要求され得る。ブロック３１０において、方法３００は、マイグレーションターゲットホスト１１０、１１０ｂ上で実行されているかまたはマイグレーションターゲットホスト１１０、１１０ｂと通信しているエミュレータ２５０上で、ゲスト仮想マシン２００の命令２１０の命令ストリームの継続実行をエミュレートすることを含み得る。エミュレータ２５０は、命令２１０を処理することによって命令２１０の継続実行をエミュレートし続け得る。エミュレータ２５０は、不在ページ違反２４０を通り越して命令２１０を調べ続けて、不在ページ違反２４０の後に仮想マシン２００（および／またはｖＣＰＵ２０６）がどのページ２３０を必要とし得るかを判断する、ストールした仮想マシン２００（および／またはｖＣＰＵ２０６）として作用し得る。ブロック３１２において、方法３００は、エミュレータ２５０が、命令２１０の命令ストリームのエミュレートされた継続実行またはエミュレートされた命令２１２から将来のページ参照２２０を識別することを含み得る。エミュレートされた命令２１２は、命令２１０を調べてページ２３０が必要とする値を除外して、命令２１０がその継続実行のためにどのページ２３０を後で必要とし得るかを判断することによって、将来のページ参照２２０を識別し得る。ある例では、エミュレータ２５０はページ２３０と不在ページ２３０、２３０ａとの関係を調べて、将来のページ２３０、２３０ｂへの将来のページ参照２２０を識別する。ブロック３１４において、方法３００は、マイグレーションターゲットホスト１１０、１１０ｂが、不在ページ２４２を求める要求と並行して、将来のページ２３０、２３０ｂをマイグレーションソースホスト１１０、１１０ａに要求することにより、不在ページ２３０、２３０ａをマイグレーションターゲットホスト１１０、１１０ｂ上にロードしつつ、将来のページ２３０、２３０ｂをマイグレーションターゲットホスト１１０、１１０ｂにプリフェッチすることを含み得る。識別された将来のページ参照２２０は、具体的な将来のページ２３０ｂを識別するアドレス２３２を含み得る。マイグレーションソースホスト１１０、１１０ａは、識別された将来のページ２３０ｂを将来ページリターン２５４によってマイグレーションターゲットホスト１１０、１１０ｂに部分的にまたは完全に移行させ得る。不在ページリターン２４４は不在ページ２３０、２３０ａを戻し得る。不在ページリターン２４４および将来ページリターン２５４は並列動作し得る。
【００２７】
ある実装例では、方法３００は、エミュレータ２５０が対応する将来のページ参照２２０を識別すると、将来ページ要求２５２によって将来のページ２３０、２３０ｂをマイグレーションソースホスト１１０、１１０ｂに要求することを含む。不在ページ要求２４２および不在ページリターン２４４の間に、１つ以上の将来ページ要求２５２が進行中であり得る。ゲスト仮想マシン２００の命令２１０の命令ストリームの継続実行をエミュレートする間、方法３００は、不在ページ２３０、２３０ａのロードされた値に依存する命令２１０を除外することによって、エミュレータ２５０が将来のページ違反または不在ページ違反２４０より後の将来のページ参照２２０を識別できるようにすることを含み得る。
【００２８】
マイグレーションターゲットホスト１１０、１１０ｂは、１つ以上のコンピューティングデバイス４００またはプロセッサ１１２と、１つ以上のコンピューティングデバイス４００またはプロセッサ１１２と通信している１つ以上のメモリホストまたはメモリ１３０とを含み得、１つ以上のメモリホストまたはメモリ１３０はページ２３０を格納している。方法３００は、将来のページ参照２２０と不在ページ２３０、２３０ａとの関係に基づいて将来のページ参照２２０を識別することをさらに含み得る。当該関係は、親ページ２３０と１つ以上の子ページ２３０との間のページナビゲーションマップ２６０を含み得る。ページナビゲーションマップ２６０は、親ページ２３０の関連の使用と子ページ２３０の以前の使用との関係であり得る。ある例では、将来のページ参照２２０を識別することは、識別された将来のページ参照２２０と関連付けられた少なくとも１つの命令２１０内に少なくとも１つの付加的な将来のページ参照２２０を識別することを含む。方法３００は、不在ページ２３０、２３０ａをマイグレーションターゲットホスト１１０、１１０ｂに配信済みである場合、エミュレータ２５０による命令２１０の命令ストリームの継続実行のエミュレーションを中止することをさらに含み得る。不在ページ２３０、２３０ａは、マイグレーションソースホスト１１０、１１０ａから不在ページリターン２４４によって戻され得る。方法３００は、不在ページ２３０、２３０ａがマイグレーションターゲットホスト１１０、１１０ｂ上に存在している場合、マイグレーションターゲットホスト１１０、１１０ｂ上でゲスト仮想マシン２００の命令２１０の命令ストリームの実行を継続することをさらに含み得る。方法３００の、エミュレートされた命令２１０の命令ストリームの継続実行から将来のページ参照２２０を識別することは、識別された将来のページ参照２２０の将来のページアドレス２３２を識別することをさらに含み得る。
【００２９】
図４は、本文書に記載のシステムおよび方法を実装するために用いられるホスト１１０であり得る例示的なコンピューティングデバイス４００の概略図である。コンピューティングデバイス４００は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの、さまざまな形態のデジタルコンピュータを表わすことを意図している。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は例示であることが意図されているに過ぎず、本文書に記載されるおよび／または請求される本発明の実装例を限定することを意図していない。
【００３０】
コンピューティングデバイス４００は、データ処理ハードウェア１１２と、メモリ１３０と、記憶装置４３０と、メモリ１３０および高速拡張ポート４５０に接続している高速インターフェイス／コントローラ４４０と、低速バス４７０および記憶装置４３０に接続している低速インターフェイス／コントローラ４６０とを含む。コンポーネント１１２、１３０、４３０、４５０および４６０の各々はさまざまなバスを用いて相互に接続されており、共通のマザーボード上にまたは他の態様で適宜搭載され得る。プロセッサ１１２は、コンピューティングデバイス４００内で実行される命令を処理可能であり、この命令には、グラフィカルユーザインターフェイス（ＧＵＩ）のためのグラフィック情報を高速インターフェイス４４０に結合されているディスプレイ４８０などの外部入出力デバイス上に表示するためにメモリ１３０内または記憶装置４３０上に記憶されている命令が含まれる。他の実装例では、複数のプロセッサおよび／または複数のバスが、複数のメモリおよび複数種類のメモリとともに適宜用いられ得る。また、複数のコンピューティングデバイス４００が接続され得、各デバイスは（たとえば、サーババンク、ブレードサーバ群、またはマルチプロセッサシステムとして）必要な動作の一部を提供する。
【００３１】
メモリ１３０は、情報を非一時的にコンピューティングデバイス４００内に記憶する。メモリ１３０は、コンピュータ読取可能媒体、揮発性メモリユニット、または不揮発性メモリユニットであり得る。非一時的メモリ１３０は、コンピューティングデバイス４００が使用するプログラム（たとえば命令のシーケンス）またはデータ（たとえばプログラム状態情報）を一時的にまたは永続的に記憶するために用いられる物理装置であり得る。不揮発性メモリの例として、フラッシュメモリおよび読取専用メモリ（ＲＯＭ）／プログラマブルＲＯＭ（ＰＲＯＭ）／消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）／電子的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ（登録商標））（たとえば、ブートプラグラムなどのファームウェアに典型的に用いられる）が挙げられるが、これらに限定されない。揮発性メモリの例として、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、相変化メモリ（ＰＣＭ）およびディスクまたはテープが挙げられるが、これらに限定されない。
【００３２】
記憶装置４３０は、コンピューティングデバイス４００に大容量記憶を提供可能である。ある実装例では、記憶装置４３０はコンピュータ読取可能媒体である。さまざまな異なる実装例では、記憶装置４３０は、フロッピー（登録商標）ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他のコンフィギュレーションにおけるデバイスを含む一連のデバイスであり得る。さらなる実装例では、コンピュータプログラムプロダクトが情報担体において有形に具体化される。コンピュータプログラムプロダクトは、実行されると上述のような１つ以上の方法を実行する命令を含む。情報担体は、メモリ１３０、記憶装置４３０、またはプロセッサ１１２上のメモリなどの、コンピュータ読取可能媒体または機械読取可能媒体である。
【００３３】
高速コントローラ４４０はコンピューティングデバイス４００のための帯域幅集約的な動作を管理するのに対して、低速コントローラ４６０はより低い帯域幅集約的な動作を管理する。そのような機能の割当ては例示に過ぎない。ある実装例では、高速コントローラ４４０はメモリ１３０、ディスプレイ４８０に（たとえばグラフィックスプロセッサまたはアクセラレータを介して）、およびさまざまな拡張カード（図示せず）を受付け得る高速拡張ポート４５０に結合される。ある実装例では、低速コントローラ４６０は記憶装置４３０および低速拡張ポート４７０に結合される。さまざまな通信ポート（たとえばＵＳＢ、ブルートゥース（登録商標）、イーサネット（登録商標）、無線イーサネット）を含み得る低速拡張ポート４７０は、キーボード、ポインティングデバイス、スキャナ、またはスイッチもしくはルータといったネットワーキングデバイスなどの１つ以上の入出力デバイスに、たとえばネットワークアダプタを介して結合され得る。
【００３４】
コンピューティングデバイス４００は、図に示すように多数の異なる形態で実現され得る。たとえば、コンピューティングデバイス４００は標準的なサーバ４００ａとしてもしくはそのようなサーバ４００ａ群内で複数回、ラップトップコンピュータ４００ｂとして、またはラックサーバシステム４００ｃの一部として実現され得る。ここに記載したシステムおよび技法の各種実装は、デジタル電子および／または光回路、集積回路、専用に設計されたＡＳＩＣ（特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはその組み合わせで実現できる。これら各種実装は、少なくとも１つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および／または解釈可能な１つ以上のコンピュータプログラムでの実装を含むことができ、それは、専用または汎用目的でもよく、格納システム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスに対して、データおよび命令を受信し、データおよび命令を送信するように結合される。
【００３５】
多数の実装例が記載されてきた。しかし、本開示の精神および範囲から逸脱することなくさまざまな変形がなされ得ることが理解されるであろう。したがって、他の実装例は、以下の請求項の範囲内にある。たとえば、請求項に記載されている動作は、異なる順序で実行されて、依然として望ましい結果を達成することができる。
【図１】
2019526083.tif 000003
【図２Ａ】
2019526083.tif 000004
【図２Ｂ】
2019526083.tif 000005
【図２Ｃ】
2019526083.tif 000006
【図２Ｄ】
2019526083.tif 000007
【図３】
2019526083.tif 000008
【図４】
2019526083.tif 000009
【国際調査報告】
2019526083.tif 000010
2019526083.tif 000011
2019526083.tif 000012