(57)【要約】【課題】データ処理システムにおいて、論理的に分割したデータ処理システムの仮想タイムベースを提供するための方法、機器、およびコンピュータプログラム製品を提供する。【解決手段】複数のプロセッサコアの各々についてタイムベースを判定する。このタイムベースを使って、タイムベースを判定するプロセッサコアのうちのひとつに現在の時間を示す。プロセッサコアの各々が同期タイムベースのそれ自身のコピーを備えるように、プロセッサコアのタイムベースを互いに同期させる。プロセッサコアのうちのひとつについて、同期タイムベースとは異なるが、同期タイムベースの少なくとも一部とは同期したままの仮想タイムベースを生成する。プロセッサコアは、プロセッサコアに現在の時間を示すために、同期タイムベースの代わりに仮想タイムベースを利用する。同期タイムベースと仮想タイムベースの一部は互いに同期したままである。【選択図】  図３
2006302270.tif 000002
【特許請求の範囲】
【請求項１】
論理的に分割したデータ処理システムにおいて仮想タイムベースを提供する方法で、前記方法が、
複数のプロセッサコアの各々についてタイムベースを判定するステップで、前記タイムベースを使って前記タイムベースが判定される前記複数のプロセッサコアのうちのひとつに現在の時間を示す、前記判定するステップと
前記複数のプロセッサコアの各々が同期タイムベースのそれ自身のコピーを備える前記複数のプロセッサコアについて、前記タイムベースを互いに同期するステップと
前記複数のプロセッサコアについて、前記同期タイムベースとは異なるが、前記同期タイムベースの少なくとも一部とは同期したままである仮想タイムベースを生成するステップと
前記現在の時間を前記複数のプロセッサコアのうちの前記ひとつに示すために、前記複数のプロセッサコアのうちの前記ひとつが、前記同期タイムベースの代わりに前記仮想タイムベースを利用するステップと
前記同期タイムベースと前記仮想タイムベースの前記一部が互いに同期したままであるステップとを有することを特徴とする方法。
【請求項２】
さらに、
前記同期タイムベースと前記仮想タイムベースを、第１ビットと第２ビットを含む複数のビットを使って表すステップと
前記タイムベースの前記第２ビットに影響しないで、前記タイムベースの前記第１ビットを修正することにより前記仮想タイムベースを生成するステップで、前記仮想タイムベースが前記修正した第１ビットと前記第２ビットを備える、前記生成するステップとを有することを特徴とする請求項１に記載の方法。
【請求項３】
さらに、
前記第１ビットだけを修正して、前記第２ビットには影響しないままにする特殊目的レジスタへの転送命令を実行するステップと
前記命令が新たな値を前記第１ビットのみに書き込むステップとを有することを特徴とする請求項２に記載の方法。
【請求項４】
さらに、
前記タイムベースの前記第２ビットが、前記第１ビットが修正された後も前記同期タイムベースの前記第２ビットに同期し続けるステップとを有することを特徴とする請求項２に記載の方法。
【請求項５】
さらに、
第１マシンにある前記複数のプロセッサコアのうちの第１のコアで複数の論理区画のうちのひとつを実行するステップで、前記複数のプロセッサコアのうちの前記ひとつが前記同期タイムベースを利用する、前記実行するステップと
前記複数の論理区画のうちの前記ひとつに関するタイムベースオフセットを特定するステップと
前記タイムベースオフセットを利用する前記タイムベースの前記第１ビットを修正するステップとを有することを特徴とする請求項４に記載の方法が方法。
【請求項６】
さらに、
前記第１ビットの修正後、前記第２ビットにより表される前記時間が、前記第１ビットを修正していた間に前記第１ビットに繰り上がったかどうかを判定するステップと
前記第２ビットにより表される前記時間が、前記第１ビットが修正されている間に前記第１ビットに繰り上がっていたという判定に応答して、前記繰り上がりを表すように前記第１ビットを更新するステップとを有することを特徴とする請求項５に記載の方法。
【請求項７】
さらに、
第１マシンにある前記複数のプロセッサコアのうちの第１のもので第１複数の論理区画のうちのひとつを実行するステップで、前記複数のプロセッサコアのうちの前記ひとつが前記同期タイムベースを利用する、前記実行するステップと
前記第１マシンで前記複数の論理区画のうちの前記ひとつの処理を中断するステップと
前記複数の論理区画のうちの前記ひとつを、第２マシンに組み込まれる第２複数のプロセッサコアのうちのひとつで処理するために、前記第２マシンに送信するステップと
前記第２複数のプロセッサコアの各々について、第２タイムベースを判定するステップと
前記第２複数のプロセッサコアの各々が第２の同期タイムベースのそれ自身のコピーを備える前記第２複数のプロセッサコアについて、前記第２タイムベースを互いに同期させるステップと
前記第２複数のプロセッサコアのうちの前記ひとつについて第２の仮想タイムベースを生成するステップで、前記第２の仮想タイムベースが前記第２の同期タイムベースとは異なるが、前記第２の同期タイムベースの少なくとも一部とは同期したままである、前記生成するステップと
前記第２複数のプロセッサコアのうちの前記ひとつを利用する前記複数の論理区画のうちの前記ひとつを実行するステップで、前記第２複数のプロセッサコアのうちの前記ひとつが前記第２の仮想タイムベースを利用する、前記実行するステップとを有することを特徴とする請求項１に記載の方法。
【請求項８】
さらに、
前記第１マシンに前記第１複数の論理区画を作成するステップと
前記第２マシンで、前記第１複数の論理区画のうちの前記ひとつに関するタイムベースオフセットを生成するステップで、前記タイムベースオフセットが、前記第１マシンの前記同期タイムベースと前記第２マシンの前記第２の同期タイムベースとの相対的な時間差を示す、前記生成するステップとを有することを特徴とする請求項７に記載の方法。
【請求項９】
さらに、
前記第１マシンで前記第１複数の論理区画のうちの前記ひとつを作成するステップと
前記第１複数の論理区画のうちの前記ひとつを前記第２マシンに送信する前に、前記第１マシンで、前記第１複数の論理区画のうちの前記ひとつに関するタイムベースオフセットを生成するステップで、前記タイムベースオフセットが当初ゼロに等しく設定され、前記第１複数の論理区画のうちの前記ひとつが前記第１マシンで処理され、他のマシンに送信されない限り、前記タイムベースオフセットが静的な状態のままである、前記生成するステップと
前記第２マシンで、前記第１マシンの前記同期タイムベースと前記第２マシンの前記第２の同期タイムベースとの相対的な時間差を示すように、前記タイムベースオフセットを修正するステップと
前記第１複数の論理区画のうちの前記ひとつが前記第２マシンで処理され、他のマシンに送信されない限り、前記修正したタイムベースオフセットが前記第２マシンで静的な状態のままであるステップとを有することを特徴とする請求項７に記載の方法。
【請求項１０】
さらに、
前記複数のプロセッサコアを備え、前記同期タイムベースを利用する第１マシンにより論理区画を作成するステップと
前記論理区画を第２マシンで実行するために前記第２マシンに送信するステップで、前記第２マシンが第２の同期タイムベースを利用する、前記送信するステップと
前記論理区画に関するタイムベースオフセットを判定するステップで、前記タイムベースオフセットが、前記第１の同期タイムベースと前記第２の同期タイムベースとの差を表す、前記判定するステップとを有することを特徴とする請求項１に記載の方法。
【請求項１１】
さらに、
前記タイムベースオフセットを利用して第２の仮想タイムベースを判定するステップと
前記第２マシンのプロセッサコアで前記論理区画を実行するステップで、前記第２マシンの前記プロセッサコアに現在の時間を示すために、前記プロセッサコアが前記第２の同期タイムベースの代わりに前記第２の仮想時間を利用する、前記実行するステップとを有することを特徴とする請求項１０に記載の方法。
【請求項１２】
さらに、
前記第１マシンを前記第２マシンに同期させるステップと
前記第１マシンから前記第２マシンに前記論理区画を送信する間に生じた経過時間を判定するステップと
前記経過時間を前記タイムベースオフセットに加えることによって、前記経過時間を利用して前記第２の仮想タイムベースを調整するステップとを有することを特徴とする請求項１１に記載の方法。
【請求項１３】
さらに、
前記複数のプロセッサコアのうちのある特定のひとつを利用して、第１タイムベースオフセットを有する第１論理区画を実行するステップと
前記第１論理区画の実行を中断するステップと
前記複数のプロセッサコアのうちの前記ある特定のひとつにより実行する第２論理区画を特定するステップと
前記第２論理区画の第２タイムベースオフセットを特定するステップと、
前記第１タイムベースオフセットと第２タイムベースオフセットとの差を判定するステップと
前記複数のプロセッサコアのうちの前記特定のひとつに関する仮想タイムベースを、第１ビットが前記差を表す前記仮想タイムベースの前記第１ビットを修正することにより判定するステップとを有することを特徴とする請求項１に記載の方法。
【請求項１４】
さらに、
前記複数のプロセッサコアのうちある特定のひとつが実行する次の論理区画を特定するステップと
前記次の論理区画に関する第１タイムベースオフセットを特定するステップと、
前記複数のプロセッサコアのうち前記特定のひとつが実行しながらたった今終了した前の論理区画に関する第２タイムベースオフセットを判定するステップと
前記第１タイムベースオフセットと第２タイムベースオフセットとの差を判定するステップと
前記複数のプロセッサコアのうち前記特定のひとつに関する仮想タイムベースを、第１ビットが前記差を表す前記仮想タイムベースの前記第１ビットを修正することにより判定するステップとを有することを特徴とする請求項１に記載の方法。
【請求項１５】
さらに、
前記複数のプロセッサコアのうち前記特定のひとつでマシン検査を実行するステップと
前記複数のプロセッサコアのうち前記特定のひとつに関する同期タイムベースを、前記複数のプロセッサコアのうち前記特定のひとつを備えるチップが維持する時刻レジスタから復元するステップと
前記マシン検査が起こった後、前記第２タイムベースオフセットが不明であるステップと
前記第１タイムベースオフセットと前記時刻レジスタから復元したタイムベースとの差を判定するステップと
前記複数のプロセッサコアのうち前記特定のひとつに関する仮想タイムベースを、第１ビットが前記差を表す前記仮想タイムベースの前記第１ビットを修正することにより判定するステップとを有することを特徴とする請求項１４に記載の方法。
【請求項１６】
論理的に分割したデータ処理システムにおいて仮想タイムベースを提供するための機器で、前記機器が
複数のプロセッサコアの各々について判定されるタイムベースで、前記タイムベースが判定される前記複数のプロセッサコアのうちのひとつに現在の時間を示すために使用するタイムベースと
前記複数のプロセッサコアの各々が同期タイムベースのそれ自身のコピーを備える前記複数のプロセッサコアに関する前記タイムベースが互いに同期され
前記複数のプロセッサコアのひとつについて生成され、前記同期タイムベースとは異なるが、前記同期タイムベースの少なくとも一部とは同期したままである仮想タイムベースとを具備し
前記複数のプロセッサコアのうち前記ひとつが、前記複数のプロセッサコアのうち前記ひとつに前記現在の時間を示すために、同期タイムベースの代わりに前記仮想タイムベースを利用し
前記同期タイムベースと前記仮想タイムベースの前記一部が互いに同期したままであることを特徴とする機器。
【請求項１７】
さらに、
第１タイムベースオフセットを有し、第１論理区画を実行する前記複数のプロセッサコアのうちの特定のひとつと
前記第１論理区画の実行を中断し
特定された前記複数のプロセッサコアのうち前記特定のひとつが実行する第２論理区画と
前記第２論理区画に関する第２タイムベースオフセットとを具備し
前記システムが、前記第１タイムベースオフセットと第２タイムベースオフセットとの差を判定するために、コードを実行するＣＰＵを備え
第１ビットが前記差を表す前記仮想タイムベースの前記第１ビットを修正することにより前記コードが前記複数のプロセッサコアのうち前記特定のひとつに関する仮想タイムベースを判定することを特徴とする請求項１６に記載の機器。
【請求項１８】
さらに、
次の論理区画を実行するための前記複数のプロセッサコアのうち特定のひとつと
特定された前記次の論理区画に関する第１タイムベースオフセットとを具備し
前記システムが、前記複数のプロセッサコアのうち前記特定のひとつが実行しながらたった今終了した前の論理区画に関する第２タイムベースオフセットを判定するためのコードを実行するＣＰＵを備え
前記コードが前記第１タイムベースオフセットと第２タイムベースオフセットとの差を判定し
第１ビットが前記差を表す仮想タイムベースの前記第１ビットを修正することにより、前記コードが前記複数のプロセッサコアのうち前記特定のひとつに関する仮想タイムベースを判定することを特徴とする請求項１６に記載の機器。
【請求項１９】
さらに、
第１複数の論理区画のうちのひとつを実行する第１マシンにある前記複数のプロセッサコアの第１のコアで、前記同期タイムベースを利用する前記複数のプロセッサコアの前記第１のコアと
前記複数の論理区画のうちの前記ひとつの処理が前記第１マシンで中断され
前記複数の論理区画のうちの前記ひとつが、第２マシンに組み込まれる第２複数のプロセッサのうちのひとつで処理するために、前記第２マシンに送信され
前記第２複数のプロセッサコアの各々に関して判定される第２タイムベースと
前記第２複数のプロセッサコアの各々が第２の同期タイムベースのそれ自身のコピーを備える前記第２複数のプロセッサコアに関して、前記第２タイムベースが互いに同期され
前記第２複数のプロセッサコアのうち前記ひとつに関して生成される第２仮想タイムベースで、前記第２の同期タイムベースとは異なるが、前記第２の同期タイムベースの少なくとも一部と同期したままである第２仮想タイムベースとを具備し
前記第２複数のプロセッサコアのうち前記ひとつが前記複数の論理区画のうち前記ひとつを実行し、前記第２複数のプロセッサコアのうち前記ひとつが前記第２仮想タイムベースを利用することを特徴とする請求項１６に記載の機器。
【請求項２０】
論理的に分割したデータ処理システムにおいて仮想タイムベースを提供するためのコンピュータプログラムで、前記プログラムが、
複数のプロセッサコアの各々のタイムベースを判別するための命令で、前記タイムベースを使って、前記タイムベースを判定する前記複数のプロセッサコアのうちのひとつに現在の時間を示す命令と
前記複数のプロセッサコアの各々が同期タイムベースのそれ自身のコピーを備える前記複数のプロセッサコアに関して、前記タイムベースを互いに同期させるための命令と
前記複数のプロセッサコアのうちのひとつについて、前記同期タイムベースとは異なるが前記同期タイムベースの少なくとも一部とは同期したままである仮想タイムベースを生成するための命令と
前記複数のプロセッサコアのうち前記ひとつが、前記複数のプロセッサコアのうち前記ひとつに前記現在の時間を示すために、前記同期タイムベースの代わりに前記仮想タイムベースを利用するための命令とを具備し
前記同期タイムベースと前記仮想タイムベースの前記一部が互いに同期したままであることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムの分野に関係し、より具体的には拡大縮小可能ななマルチプロセッサコンピュータシステムにおいて効率的な仮想タイムベースを提供するための方法、機器、およびプログラムに関係する。
【背景技術】
【０００２】
対称型マルチプロセッシング（ＳＭＰ）データ処理システムは、各プロセッサコアが同じ処理速度と待ち時間をもつように対称にした複数のプロセッサコアを有する。ＳＭＰシステムは、各プロセッサコアごとに作業の１ソフトウェアスレッドを一度にディスパッチすることによって、様々なコアに作業を均等に分散するタスクを分割するひとつのオペレーティングシステムを有する。このように、ＳＭＰシステムのプロセッサコアは一度にスレッドをひとつだけ実行する。
【０００３】
同時マルチスレッディング（ＳＭＴ）データ処理システムは、それぞれひとつのプロセッサコアにつき一度に複数のスレッドを同時に実行できる複数のプロセッサコアを備える。ＳＭＴシステムは２つのスレッドが同じプロセッサコアをランしているとき一方のスレッドを他方に優先させる能力をもつ。
【０００４】
周知のシステムは、共用プロセッサコアがシステムが実行している様々なプロセス間で共用されるひとつ又は複数の共用プロセッサコアを備えることができる。プロセッサコアはＳＭＴプロセッサコアでもよい。共用プロセッサコアは論理的に分割したシステムの一部となって、システムの様々な区画間で共用することができる。各区画に割り振られる仮想区画の数とシステム容量の量は、システムオペレーターによってブート時に定義又は変更できる。
【０００５】
これらシステムは一般に、ハイパーバイザーとも呼ばれるファームウェアを備え、システム内のすべてのプロセッサコアの分割または共用もしくは分割および共用を管理、強制実行する。例えば、ハイパーバイザーは仮想区画をひとつ又は複数の物理的なプロセッサコアにディスパッチできる。仮想区画は各物理的なプロセッサコアが行うべき作業の定義と、物理的なプロセッサコアが作業を実行するために、各物理的なプロセッサコア内に設定する必要のある様々な設定や状態情報を含む。こうして、各仮想区画は「仮想」ＳＭＰシステムにできる。
【０００６】
周知の共用プロセッサシステムでは、ハイパーバイザーは各物理的なプロセッサコアを論理区画のすべてで共用することを監視および管理する。ハイパーバイザーは各論理区画にディスパッチタイムスライスを割り当てる。ハイパーバイザーは論理区画を物理的なプロセッサコアにディスパッチすることによって、論理区画のすべてを使えるようにする。ハイパーバイザーは、論理区画をひとつ又は複数の物理的なプロセッサコアで実行する時間を各論理区画に与えることによって、論理区画を使えるようにする。ハイパーバイザーは複数の論理区画を同時に別々のグループの物理的なプロセッサコアにディスパッチできる。
【０００７】
各論理区画は、物理的なプロセッサコアがその論理区画を処理するのに必要な特定の構成データによって定義する。構成データは、ある特定のデータ、レジスタ値、状態、設定、および情報を含む。構成データはすべてハイパーバイザーによってハイパーバイザーのメモリーに格納される。ある特定の論理区画をある物理的なプロセッサコアにディスパッチしようとする場合、ハイパーバイザーはその区画の構成データを検索し、すべての設定をレジスタに戻してプロセッサコアの状態を復元し、区画が最後に中断された時点から処理を再開する。その物理的な区画に与えられたタイムスライスが終了したら、ハイパーバイザーは構成データのすべての現在値をそのメモリーに保存し直して、後に論理区画の以後の処理をするために検索できるようにする。
【０００８】
各プロセッサコアは、それ自身のタイムベース（ＴＢ）レジスタを備える。ＴＢレジスタは、その値を相対的な時間で表せるように一定の率で増分する自由継続６４ビットレジスタである。ＴＢレジスタは当初はＳＭＰシステム内のすべてのプロセッサで同期させて、システム内のすべてのプロセッサが同じ相対時間をもつようにする。ＴＢレジスタが示す時間は、マシンが再始動してから経過した時間である。
【０００９】
ＴＢレジスタはマルチスレッドプロセッサにあるすべてのスレッドの共用リソースであり、増分する一定の率は各スレッドで実行するソフトウェアに知らされる。ハイパーバイザーはまた各論理区画のリアルタイムオフセット（ＲＴＯ）も維持する。ＲＴＯとは、ＴＢがゼロから増分を開始した時点の実時間である。ＲＴＯはハイパーバイザーが更新するまで静的な状態のままである。
【００１０】
ハイパーバイザーは、ＴＢの増分の期間をＴＢ値で掛けてからＲＴＯを足して、ＴＢ値を現在の実時間に変換できる。ハイパーバイザーはＲＴＯを各区画の構成データの一部として維持する。オペレーティングシステムのソフトウェアがその実時間を変更したい場合、ソフトウェアがハイパーバイザーに通知すると、ハイパーバイザーはハードウェアのＴＢを修正せず、その区画のＲＴＯを修正するだけである。ソフトウェアのタスクは相対時間しか必要ないことが多いが、これはＴＢに格納された現在値を読み取るだけで判断できる。
【００１１】
論理区画はひとつ又は複数の物理的なプロセッサコアに同時にディスパッチできる。これらプロセッサコアは同じチップ内、又は同じマシンの別のチップ内に配置できる。さらに、論理区画は一度にあるプロセッサコアにディスパッチしてから、後で全く別のプロセッサコアにディスパッチできる。２つのプロセッサコアを同じチップ内、又は同じマシンの別のチップ内に配置できる。
【００１２】
区画が現在の相対時間を得るには、現在その区画を実行しているプロセッサコアのＴＢレジスタに現在格納されている値を読み取る。区画が中断された後に第２のプロセッサコアで再開する場合、区画は第２のプロセッサコア内に組み込まれるＴＢレジスタに格納されている値を使って現在の相対時間を得る。
【００１３】
異なる論理区画で実行するソフトウェアは異なる実時間をもつことができるが、すべての区画の全スレッドは必ず時間が実時間と相対時間の両方が進んでいることを観測しなければならない。時間がわずかに前方へ飛び越すのは認められるが後方に飛び越すのは認められない。
【００１４】
ＴＢレジスタは、同じ論理区画を実行しているすべての物理的なプロセッサで同期しなければならない。オペレーティングシステム又はディスパッチされる処理スレッドは区画をランしている様々なプロセッサからどの順番でもＴＢを読み取ることができるため、必ず時間が進んでいるのを観測しなければならないためである。同じ区画をランするすべてのプロセッサはそのＴＢレジスタを同期させなければならず、ハイパーバイザーはどの論理区画もマシンのどの物理的なプロセッサにもディスパッチできるため、ＴＢレジスタはマシン全体のすべてのプロセッサコアで同期しなければならない。
【００１５】
ＴＢレジスタは同じマシン内のすべてのプロセッサで同期するため、中断されて、同じマシンの別のプロセッサで再開される区画は、区画が中断した時間の分だけ時間が前方に飛び越すであろう。ディスパッチする区画に割り当てられたタイムスライスはこの前方への飛び越しを許容可能な程度に小さく保つ。
【００１６】
ＴＢレジスタが同期しなかった場合、あるプロセッサの中断された区画を別のＴＢ値で再開すると、見かけ上時間の大幅な前方又は後方への飛び越しのように見えることがあり、これはアーキテクチャから認められない。別のマシンにあるプロセッサコアのＴＢは一般に別の値をもつため、先行技術の限界は、論理区画が同じマシン内のプロセッサでランすることに限られることである。同じマシン又は別のマシンの論理区画を中断して再開できることが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【００１７】
先行技術で、各論理区画がディスパッチされる度にそのプロセッサコアのすべてのＴＢの値を変更することを認めているのは、許容できる状況ではない。ある区画のひとつのコアのＴＢ値が変更されたら、その区画のＴＢすべての値はすべてが互いに同期しなくなってしまう。ＴＢの値は、マシンで実行しているすべての区画を中断し、すべてのＴＢ値が前進するのを止めて、その区画をランする他のコアで必要なＴＢ値を更新し、すべてのタイムベースでカウントを再開してから、すべての区画を再開することによって、互いに同期しなおす必要があるだろう。このアプローチは許容できない。論理区画の処理を中断する結果、頻繁にＴＢレジスタを休止させることからこのマシンと別のマシンやクロックとの間に明らかな時間のずれが生じるので、このアプローチはマシンの性能に影響するためである。
【００１８】
考えられるひとつの解決策が、ハイパーバイザーであるファームウェアにＴＢへのすべてのソフトウェアのアクセスを割込みによって中断させ、各区画のハイパーバイザーが維持する追加オフセットを適用することであろう。しかし、この方法は、ＴＢへのアクセスのたびに割込みを処理するオーバーヘッドのために、性能に悪影響があるだろう。
【００１９】
そのため、拡大縮小可能なマルチプロセッサシステムの仮想タイムベースのために、他のマシン又はクロックとのリアルタイムの相関を維持しながら、同じマシン又は別のマシンで中断して再開するとき、論理区画のすべてのソフトウェアスレッドで単調非減少時間の正確な同期を提供する方法、機器、および製品に対してのニーズがある。
【課題を解決するための手段】
【００２０】
データ処理システムにおいて、論理的に分割したデータ処理システムの仮想タイムベースを提供するための方法、機器、およびコンピュータプログラム製品を開示する。複数のプロセッサコアの各々についてタイムベースを決定する。タイムベースを使って、タイムベースが決定される現在の時間をプロセッサコアのひとつに示す。プロセッサコアの各々が同期タイムベースのそれ自身のコピーを有するように、プロセッサコアのタイムベースを互いに同期させる。プロセッサコアのひとつに関し、同期タイムベースとは異なるが、同期タイムベースの少なくとも一部とは依然同期したままの仮想タイムベースが生成される。プロセッサコアは、現在の時間をプロセッサコアに示すために、同期タイムベースの代わりに仮想タイムベースを利用する。同期タイムベースと仮想タイムベースの一部は互いに同期したままである。
【００２１】
本発明の上記並びに別の目的、特徴および利点は、以下に詳細に述べる説明で明らかになるであろう。
【発明を実施するための最良の形態】
【００２２】
本発明の好適な実施例並びにその利点は図面を参照するとよりよく理解でき、添付の図面の同様かつ対応する部品には同じ番号を用いる。
【００２３】
本発明は、他のマシンの時間又は他のクロックとリアルタイムとの相関を維持しながら、同じマシン又は別のマシンで区画を中断して再開するとき、論理区画のすべてのソフトウェアスレッドに単調非減少時間の正確な同期を提供する。
【００２４】
各マルチコアプロセッサチップは、マシンのすべてのプロセッサチップで同期させたそれ自身の時刻（ＴＯＤ）レジスタを維持する。プロセッサチップの各プロセッサコアはそれ自身のタイムベース（ＴＢ）レジスタを備える。チップにある各プロセッサコアの各ＴＢの値は当初、そのチップのＴＯＤレジスタに同期する。この同期は、ハイパーバイザーが特殊目的レジスタへの転送（ＭＴＳＰＲ）命令を介してタイマー機構管理レジスタ（ＴＭＦＲ）にビットを書き込むことに応答して、ハードウェア内の状態マシンによって行う。ＴＦＭＲは特殊目的レジスタである。同期は、システムのすべてのチップＴＯＤが同時に受け取り、チップＴＯＤから同じチップのプロセッサコアのＴＢまで送られる３２ＭＨｚステップ信号を使って行う。３２ＭＨｚステップ信号は０．０３１２５マイクロ秒の期間をもつが、これは好適な実施例においてＴＢのビット５９に対応する。
【００２５】
２マイクロ秒はＴＢレジスタのビット５３に対応し、そのため２．０マイクロ秒の境界ごとに、ＴＢのビット５４：６３はゼロになる。ハイパーバイザーがＴＦＭＲに書き込むとき、ハードウェアは次の２マイクロ秒の境界を待ってから、３２ＭＨｚステップ信号を使って、ゼロからＴＢ値のビット５４から５９までのステッピングを開始するとともに、ＴＢのビット０から５３はチップのＴＯＤ値からロードされる。このＴＢとチップのＴＯＤとの再同期は、定常な操作中（例えば、マシン検査後）ならいつでも行える。
【００２６】
マシンにあるチップすべてのＴＯＤは互いに同期するとともに、チップのＴＢレジスタは当初そのチップのＴＯＤに同期するため、ＴＢレジスタは当初マシン全体で互い同士にも同期する。当初同期させたら、各プロセッサコアのＴＢレジスタ値は、チップのＴＯＤから送られる同期３２ＭＨｚステップ信号によって増分する。このため、すべてのＴＢレジスタも同時にステップして、正確な相対時間の同期を維持する。
【００２７】
ＴＢの相対時間は、ＴＢ値にその増分期間を掛けて、区画のＲＴＯを足すことによって、区画の実時間に変換する。ＲＴＯは、ＴＢの相対時間がゼロだった場合、区画の実時間となる。論理区画が異なれば、異なる実時間が設定されるのは明らかであろうが、マシンが異なればたいていは異なる時間に始動するため、実時間が同じでもマシンが異なる区画はたいてい相対時間が異なる。単純化するために、異なる２台のマシンの区画が４：００ｐｍの実時間をもつと仮定する。第１マシンは１：００ｐｍに始動していたとすると、第１マシンの区画は４：００ｐｍのＲＴＯと３時間の相対時間がそのＴＢに表示される。第２マシンは３：００ｐｍに始動していたとすると、第２マシンの区画は３：００ｐｍのＲＴＯと１時間の相対時間がそのＴＢに表示される。この例では、第２マシンの区画を中断してから、処理のために第１マシンで再開した場合、時間は区画にとって見かけ上４：００ｐｍから２：００ｐｍにさかのぼっているように見える。これは、第２マシンの区画を実行していたプロセッサコアのＴＢレジスタが３時間の相対時間を示す値を含んでいたが、第１マシンの区画を実行することになるプロセッサコアのＴＢレジスタは１時間の相対時間を示すＴＢ値を含むからである。区画は、実行されているＴＢレジスタから現在の相対時間を取得するため、区画は時間が４ｐｍから２ｐｍにさかのぼると考える。区画がさかのぼる時間を観測しないようにする必要がある。
【００２８】
本発明は、論理区画を実行するソフトウェアが、ある論理区画を処理するのにどのシステムのどのプロセッサを選ぶかに関係なく、必ず時間が前に進むと考える拡大縮小可能ななマルチプロセッサシステムにおいて、仮想タイムベースを提供する方法、機器、およびプログラムである。
【００２９】
論理区画で実行しているソフトウェアとオペレーティングシステムは、プロセッサコアに内蔵されて区画を実行しているＴＢレジスタに現在格納されている値を使って現在の相対時間を取得する。
【００３０】
さらに、本発明は、各論理区画についてハイパーバイザーによって計算され、各論理区画の構成データに格納されるタイムベースオフセット（ＴＢＯ）を提供する。ＴＢＯは、区画が最初に作られたマシンのＴＢと区画が現在ランしているマシンのＴＢとの差を表す。
【００３１】
各ＴＢ値は６４ビット値が好ましい。６４ビット値の精度は、低位のビットが最も正確な時間を表すように、上位のビットから低位のビットへと増す。低位ビットはビット４０〜６３とし、上位のビットはビット０〜３９とするのが好ましい。好適な実施例では、ビット５３が２．０マイクロ秒を表し、ビット３９が３２．７６８ミリ秒（０．０３２７６８秒）を表す。
【００３２】
各ＴＢは符号付き４０ビット値として、正の数又は負の数を表せるようにするのが好ましい。４０ビットのＴＢＯは、上位４０ビットのＴＢ値と同じ分解能を表す。ＴＢＯの単位はビット３９のＴＢが表す時間数に対応し、これは３２．７６８ミリ秒である。例えば、１時間を表すＴＢＯの１６進法の値は０ｘ０００００１ＡＤ２７である。符号付き値は標準的な２の補数を使うため、マイナス１時間を表すＴＢＯの１６進法の値は０ｘＦＦＦＦＦＥ５２Ｄ９である。
【００３３】
ハイパーバイザーが新たな論理区画を作るとき、ＴＢＯ値はゼロである。論理区画が最初に作られた同じマシンでのみディスパッチする限り、ＴＢＯはゼロのままとなる。論理区画が別のマシンに移送されると、ＴＢＯはその別のマシンでランするように調整が必要となる。
【００３４】
単純化した例として、第１マシンを再始動してから１時間後の相対時間で操作し、第２マシンを再始動してから３時間後の相対時間で操作し、第３マシンを再始動してから６時間後の相対時間で操作していると仮定する。最初に第２マシンで作られた第１論理区画が第２マシンで中断されて、第１マシンで再開する場合、第１マシンでランする第１論理区画について計算されるＴＢＯは、第２マシンが第１マシンから２時間後に操作しているため、２時間となる。
【００３５】
最初に第３マシンで作られた第２論理区画が第３マシンで中断されて、第１マシンで再開する場合、第１マシンでランする第２論理区画について計算されるＴＢＯは、第３マシンが第１マシンの５時間後に操作しているため、５時間となる。
【００３６】
第３マシンで最初に作られた第２論理区画がさらに第１マシンで中断されて、第２マシンで再開すると、ＴＢＯは再計算しなければならない。第２論理区画のＴＢＯはもはや５時間ではなく、第３マシンが第２マシンの３時間後に操作しているため、３時間となるように再計算される。
【００３７】
ＴＢＯは符号付き値である。そのため、これは正の数又は負の数を表すことができる。例えば、第１マシンで最初に作られた第３論理区画が第１マシンで中断されて、第３マシンで再開する場合、その第３論理区画について計算されるＴＢＯは、第１マシンが第３マシンの５時間前に操作しているため、マイナス５時間となる。
【００３８】
区画が中断されて、別のマシンで再開される場合、新たなマシンのハイパーバイザーがその区画の構成データを受け取る。この場合の構成データには、第１マシンが区画の構成データに格納したＴＢＯが含まれる。さらに、第１マシンのハイパーバイザーが実行するための別のマシンに区画を送る場合、第１マシンはその区画を最後に実行したプロセッサコアのＴＢレジスタの現在値も送る。こうして、第２マシンのハイパーバイザーはそれ自身のデータとその区画の構成データから新たなＴＢＯ値を計算するとともに、最初に作ったマシンのハイパーバイザーから第２マシンに渡されたＴＢ値を計算する。
【００３９】
前述の例のひとつに続いて、第２論理区画が第３マシンで最初に作られたと仮定する。区画が最初に作られた場合、そのＴＢＯはゼロである。第２区画が第３マシン内のプロセッサコアで処理され続ける限り、その区画のＴＢＯはゼロのままとなる。第２区画が第３マシンで中断されて、第１マシンで再開する場合、第３マシンのハイパーバイザーは第１マシンにその区画の構成データを送る。
【００４０】
この区画の構成データは、区画が最初に作られたマシンで実行されていたため、ゼロのＴＢＯが含まれる。さらに、第３マシンのハイパーバイザーは、第２区画を最後に実行していたコアのＴＢレジスタの値も送る。そのＴＢレジスタの値は、第３マシンのそのコアの相対時間が６時間であったことを示す。
【００４１】
第１マシンのハイパーバイザーはさらに、第２区画の新たなＴＢＯ値を計算する。第１マシンのハイパーバイザーはそれ自身のデータを使って、第１マシンの相対時間が１時間であると判定する。第１マシンのハイパーバイザーは、第２区画の構成データで受け取ったＴＢＯと、第３マシンから受け取ったＴＢ値を分析する。第１マシンのハイパーバイザーはさらに、新たなＴＢＯが５時間になると判定する。第１マシンのハイパーバイザーはさらに、この新たなＴＢＯ値を第２区画のＴＢＯの現在値として区画の構成データに格納する。
【００４２】
中断された論理区画をあるプロセッサで再開するには、ハイパーバイザーのメモリーから論理区画の構成データを検索し、その論理区画の処理のために選択された各プロセッサコアにあるすべての設計したレジスタの値と状態を復元する。この構成データにはタイムベースオフセット（ＴＢＯ）値が含まれる。ハイパーバイザーは新たにディスパッチされた区画のＴＢＯを、論理区画の処理のために選択された各プロセッサコアのＴＢに適用する。以下に、ＴＢＯをＴＢに適用する方法を説明する。
【００４３】
中断された区画が選んだプロセッサコアで再開できるようになるには、その同じプロセッサコアで現在実行している区画をまず中断しなければならない。区画を中断するステップは、後で区画の実行を再開するのに必要なすべての設計したレジスタのコンテンツとその他の状態を抽出するステップと、そのデータをその区画に割り当てられたハイパーバイザーのメモリー領域に保存するステップとを含む。中断される区画は、区画を処理する各プロセッサコアのＴＢに適用されるそのＴＢＯをすでにもっていることがある。
【００４４】
区画を再開する場合、ハイパーバイザーは新たな区画のＴＢＯをＴＢレジスタに適用するときに古い区画のＴＢＯを考慮しなければならない。ハイパーバイザーは特殊目的レジスタからの転送（ＭＦＳＰＲ）命令でＴＢレジスタの現在値を読み取る。ハイパーバイザーはさらに、古い区画のＴＢＯと新たな区画のＴＢＯとの差をＴＢレジスタから読み取った値に加えて、その結果をＭＴＳＰＲ命令を使ってＴＢレジスタの高位のビットだけに書き込む。新たなＳＰＲ数、ニーモニックＴＢＵ４０（タイムベース上位４０）を、ＴＢレジスタの高位の４０ビットだけを示すように割り当てる。上位４０ビットのＴＢに新たなニーモニック（ＳＰＲ数）を割り当てることで、プロセッサコアのハードウェアはＭＴＳＰＲ  ＴＢＵ４０の命令を新たな操作として区別できる。
【００４５】
ＭＴＳＰＲ  ＴＢＵ４０の命令を実行するとき、ハードウェアはビット０から３９だけをＴＢレジスタに書き込む。ＴＢ値のうちそれより低位のビット、すなわちビット４０〜６３はＭＴＳＰＲから影響を受けず、チップのＴＯＤとの正確な同期を維持する。チップのＴＯＤはこの命令が実行された後も変化しないままである。
【００４６】
ＴＢレジスタを読み取り、旧区画のＴＢＯと新区画のＴＢＯとの差を計算し、ＭＴＳＰＲ命令を実行するというシーケンスは数マシンサイクルを要することがあるため、ＴＢ値は、それを読み取った時間から新たな値を高位４０ビットに書き込んだ時間までの間に増えていることもある。高位ビットがＴＢレジスタに書き込まれる前に、低位ビットの値がたまたま高位ビットに繰り上ってしまう可能性がある。このように上位のビットへの繰り上がりはＭＴＳＰＲ  ＴＢＵ４０の命令の実行により上書きされた。その結果、ＴＢが見かけ上さかのぼる、又は異なる物理的なプロセッサコアのＴＢ値が異なることになる可能性がある。
【００４７】
ＴＢＲのビット３９だけが約３２ミリ秒ごとに変化するため、当初読み取ったＴＢ値を、ビット３９に繰り上がってからある限られた増分数以内にあるかを点検することによって、これは簡単に回避できる。例えば、ビット４０：５３がすべて１だった場合、増分値は次の２マイクロ秒以内にビット３９に繰り上がることを意味することになるだろう（ビット５３が２マイクロ秒に対応するため）。ビット４０：５３のいずれかがゼロだった場合、ハイパーバイザーは繰り上がりを示すビット３９の前にシーケンスを完了するのに少なくとも２マイクロ秒かかることを意味することになるだろう。読み取った値はシーケンスが繰り上がりを示すビット３９の前に完了することを保証できるほどの時間の余裕がない場合、ハイパーバイザーは繰り上がりを示すビット３９が観測される後まで、ＴＢを読み取りながらループで待機できるであろう。その場合、３２ミリ秒ウィンドウ全体が利用できる。
【００４８】
上記境界メカニズムは繰り上がりを示すビット３９を待つ間に著しい機能停止になることがある。この機能停止を避けるために、好適な実施例は繰り上がりを示すビット３９を点検して、機能停止が発生した場合に値を補正する。これを行うには、更新後にもう一度ＴＢ値を読み取って、低位のビットを元の値と比較し、新たなＴＢレジスタの値が元のＴＢレジスタよりも小さい場合、ビット３９で再び値を増分する。
【００４９】
マシン検査は、ハイパーバイザーがすぐに処理しなければならない優先度の高い割込みである。ある場合には、割込み後に戻る命令アドレスが失われることがある。ハイパーバイザーが中断又は再開の途中で、割込みした命令に正確に戻れなかった可能性があり、そうなるとどの区画のＴＢＯが現在ＴＢの上位ビットに適用されているかのトラックが失われる。マシン検査の場合、ＴＢの値はチップのＴＯＤから復元されて、プロセッサコアが実行する次の論理区画のＴＢＯがＴＢＲの上位のビットに加わる。この値を検査して、ＴＢＯが適用されていた間にＴＢの低位ビットがビット３９に繰り上げられたかどうかを確かめて、そうなっている場合にはＴＢをもう一度ビット３９で増分する。
【００５０】
ＴＢＯがＴＢに適用されたら、ＴＢはその区画の相対時間を表し、一方チップのＴＯＤはマシンの相対時間を表す。
【００５１】
論理区画が第１マシンのプロセッサコアから第２マシンの別のプロセッサコアに移送する場合、両マシンともに仮想化をサポートして、区画の移送をサポートするハイパーバイザーであるファームウェアのレイヤをもち、同じ固定のＴＢ増分率をもち、データをいずれかのハイパーバイザーから他方に送信できるネットワークで接続しなければならない。区画のオペレーティングシステムが別のマシンへの移送を知っておく必要がある場合もあるため、すでに中断された区画は直接移送できない。ハイパーバイザーはそのハイパーバイザーのマシンのプロセッサコアにまだ行っていない場合に区画をディスパッチし、移送する論理区画のオペレーティングシステムに移送の準備をするように通知し、別のマシンに移送する目的で区画がプロセッサコアで実行するのを中断する。
【００５２】
第１マシンのハイパーバイザーは、別のマシンで論理区画の処理を再開するのに必要な区画の構成データのすべてを実装するが、これには区画のＲＴＯ値が含まれる。また、区画の処理を中断するために、送信側のマシンの最後のプロセッサのＴＢ値も含まれる。ＴＢ値には、この時点の区画のＴＢＯが含まれることに注意する。この構成データをネットワークで第２マシンに送る。各マシンのハイパーバイザーはデータの実装、送信、および受信の作業を行うサービス区画を定義する。
【００５３】
ＴＢＯを判定するために先に述べた例は例示のために、あるマシンから別のマシンへの区画の移送が瞬間的なものであると仮定して単純化した。現実には、ネットワーク上でのデータの送信には無視できない程度の時間がかかるため、新たなＴＢＯの計算にはこの経過時間を計算に入れるべきである。
【００５４】
第２（受信側）マシンで新ＴＢＯ値を計算する際に、ネットワークで区画データを送信する経過時間を考慮するために、両マシンのサービス区画は同じ実時間、例えばグリニッジ平均時（ＧＭＴ）を使用する。各マシンで時間を維持する３２ＭＨｚステップ信号は一般には＋／−２０ｐｐｍ（百万分率）までの精度しかなく、つまり２台のマシンのサービス区画の実時間は長期的にはゆっくりずれが大きくなってくるであろう。２台のマシンのサービス区画でランするハイパーバイザーは、長期的なずれを補正するために、ネットワーク上のメッセージで定期的に互いに同期させる。
【００５５】
サービス区画はそれ自身のマシンだけでランするため、そのＴＢＯ値は必ずゼロである。従ってサービス区画をランするプロセッサのＴＢ値は必ず、マシンの相対時間を表すチップのＴＯＤ値と同じである。第１（送信側）マシンのハイパーバイザーはサービス区画からのＴＢ値と区画時間（ＴＢ増分期間×ＴＢ値＋ＲＴＯ）を含むとともに、移送する区画に関するデータが第２（受信側）マシンに送られる。
【００５６】
第２マシンのハイパーバイザーが移送する区画データのデータを受け取ったら、第１（送信側）マシンのサービス区画の実時間をそれ自身のサービス区画の実時間から引いて、データを送信しながら経過時間を判定する。
【００５７】
第２（受信側）マシンのハイパーバイザーも、移送する区画の新たなＴＢＯを計算しなければならない。データ送信に要する経過時間を、一定のＴＢ増分率に経過した実時間を掛けてＴＢの単位に変換する。新たなＴＢＯ値はさらに、移送する区画のＴＢにＴＢの単位に変換したデータ送信に要する経過時間を足して、第２（受信側）マシンのサービス区画のＴＢを引く。
【００５８】
この新たなＴＢＯ値を移送した区画のデータと一緒に第２（受信側）マシンのハイパーバイザーのメモリーに格納する。第２マシンのハイパーバイザーはそれから、前述したようにＴＢＯを適用して、論理区画を第２マシンのあるプロセッサコアにディスパッチできる。
【００５９】
図１は、タイミング信号を受信してディスパッチし、ひとつ又は複数のインバウンド発振器信号がエラーになったときには回復する機能を行える代表的なマイクロプロセッサ又はチップである。チップ１００は第１プロセッサコア１０１ａと第２プロセッサコア１０１ｂとを備える。各プロセッサコアを単にコアということもある。プロセッサコアはマルチスレッディング能力、エラー検出と回復機能、多数の汎用レジスタ（ＧＰＲ）、特殊目的レジスタ（ＳＰＲ）を有する。
【００６０】
第１コア１０１ａと第２コア１０１ｂとの接続は、レベル２のキャッシュ１０３（Ｌ２）と、キャッシュ不能ユニット１０５（ＮＣＵ）とするのが好ましい。ＮＣＵ１０５はメインメモリーに格納するために、ファブリックバス１１０を介してコアから受け取ったデータを格納するコマンドを処理する。上記記憶装置はメモリーマップドＩ／Ｏでもよい。後に頻繁なアクセスを受けやすいメモリーへのアクセスは、コアが行う操作の待ち時間を短縮するためにＬ２  １０３に格納してもよい。
【００６１】
Ｌ２キャッシュ１０３は同様に同じ基板上の他のチップに、またチップ１００が配置される基板以外の他のチップにも相互接続できるファブリックバス１１０を介してそのコンテンツへのアクセスを提供できる。
【００６２】
チップのすぐ近くではあるがオフチップのレベル３キャッシュ（L３）を設けてもよい。コアとL３とのアクセスを管理する制御はL３キャッシュ制御１１３にある。同様に、メモリーコントローラー１１５とＩ／Ｏインターフェース１１７をオンチップに設けて、それぞれ汎用ＲＡＭや様々な周辺機器への待ち時間が長期のアクセスを容易にすることができる。
【００６３】
対称型マルチプロセッサ（ＳＭＰ）のファブリック制御１１９は、ファブリックバスの競合を様々な付属デバイスでとりもつ特殊目的デバイスであり、拡張ポートＡ、Ｂ、Ｘ、Ｙ、Ｚを介してＳＭＰのトポロジー構成を規定する。実施例では５つの拡張ポートを示しているが、多様なレベルの複雑なマルチチップのトポロジーを達成するには、これより少ない又は多い拡張ポートを使用できることは了解される。５つのポートは６４個のチップどうしの素早い命令、データ、およびタイミング信号のやり取りを提供できることが期待される。
【００６４】
パーベイシブ制御１２１は、チップにある様々な処理ブロックの外にも、その内部に一緒にも存在する回路である。パーベイシブ制御の機能には、各コアプロセッサの都合のよい命令の境界で、各コアの様々なＧＰＲやＳＰＲの冗長コピーを提供することによって、各コアのプロセッサの状態にバックアップを提供することがある。さらに、パーベイシブ制御はエラー検出と、例えばファームウェアでその後の措置のために上記エラーを外部のサービスプロセッサに通信することを支援できる。
【００６５】
パーベイシブ制御１２１は、冗長発振器と微分タイミング信号を提供又は受信する他の回路のゲートポイントである。故障又は他の状態のためにひとつ又は複数の冗長発振器を構成から外すことがあることは認められ、パーベイシブ制御の目的は、冗長発振器の中からよりよいタイミング信号（又は許容差内の少なくともひとつ）と、拡張ポートを介して到達できるステップコード化された信号を選択することである。
【００６６】
各プロセッサコアはそれ自身のタイムベースレジスタ（ＴＢＲ）を備える。例えば、プロセッサコア１０１ａはタイムベースレジスタ１０１ａａを備え、プロセッサコア１０１ｂはタイムベースレジスタ１０１ｂｂを備える。ある特定のチップを備えるマシンが再始動されるとき、そのチップに組み込まれる各プロセッサコアの各タイムベースレジスタは、そのチップに組み込まれる時刻（ＴＯＤ）レジスタと同期する。例えば、チップ１００を備えるマシンを再始動する場合、システムの各チップに組み込まれる時刻レジスタに値が書き込まれる。こうして値はＴＯＤ１３０に書き込まれる。その後、ＴＢレジスタ１０１ａａおよび１０１ｂｂは、ＴＯＤ１３０にある値を各ＴＢレジスタ１０１ａａおよび１０１ｂｂにある周知の時間境界単位で書き込みことによってＴＯＤ１３０に同期させて、その後共通のステップ信号に従って増分することによって同期を維持する。
【００６７】
３２ＭＨｚステップ信号１３２はＴＯＤ１３０、ＴＢレジスタのＭＴＳＰＲ  ＴＢＵ４０の命令１０１ａａおよびＴＢレジスタ１０１ｂｂによってチップ１００の内部で受け取られる。
【００６８】
図２は、本発明の好適な実施例に従い、あるコンピュータシステム機に内蔵される回路基板の対称型マルチプロセッサ（ＳＭＰ）構成において、図１のチップなどのマルチプロセッサチップの物理的な構成を図示する。プロセッサノード２００はメモリーバンク２０１ａおよび２０１ｂ、Ｉ／Ｏハブ２０３、サービスプロセッサ２０５ａおよび２０５ｂ、マルチチップモジュール（ＭＣＭ）２２１ａ、２２１ｂ、２２１ｃ、および２２１ｄのそれぞれからＡおよびＢのＳＭＰファブリック拡張ポートを扱うポート又はコネクタ２０７ａおよび２０７ｂを内蔵できる。ＳＭＰのファブリック拡張ポートＸ、Ｙ、Ｚはノード２００内のＭＣＭ２２１と相互接続する一方、ポートＡ、Ｂは複数の異なるノードのＭＣＭと相互接続する。各マルチチップモジュールはそのハードウェア構成が同一でもよいが、例えばマスター／スレーブの機能間のように、多様なトポロジーや機能をもつようにソフトウェアで構成できる。ＭＣＭ内には図２のチップ２２２ａ〜２２２ｄや、レベル３キャッシュメモリー２２３ａおよび２２３ｂがあることもある。プロセッサノード２００は、それぞれプロセッサノードにある各チップに経路指定される一次発振器２３１と二次発振器を備えることができる。発振器と機能ユニットとの接続は基板とチップの全体に及ぶが、煩雑にならないように図２では図示していない。同様に、そのような相互接続をここでは図示していないが、数多くの入り組んだ相互接続が、コンポーネントの中でも特にポートとＩ／Ｏハブとの間に存在することは了解される。
【００６９】
各ＭＣＭはチップを備える。例えば、ＭＣＭ２２１ａはチップ２２２ａを備える。ＭＣＭ２２１ｂはチップ２２２ｂを備える。ＭＣＭ２２１ｃはチップ２２２ｃを備える。ＭＣＭ２２１ｄはチップ２２２ｄを備える。
【００７０】
各チップはそれ自身の時刻（ＴＯＤ）レジスタを備える。例えば、チップ２２２ａはＴＯＤ２３０ａを備える。チップ２２２ｂはＴＯＤ２３０ｂを備える。チップ２２２ｃはＴＯＤ２３０ｃを備える。チップ２２２ｄはＴＯＤ２３０ｄを備える。
【００７１】
あるマシンにあるすべてのチップのＴＯＤレジスタは当初全部が同期する。ＴＯＤレジスタ値をマシン全体に分散される３２ＭＨｚパルスにステップすることによって、同期が維持される。３２ＭＨｚパルスに加えて、２マイクロ秒の境界ごとに同期パルスが送られる。好適な実施例では、３２ＭＨｚパルスは６４ビット値のビット５９に補正し、ビット５４から６３まですべてがゼロになるときに２マイクロ秒の境界が生じる。
【００７２】
図３は、本発明に従い、あるマシン内部の各チップをそのマシン内部の他のチップに同期させるステップと、各チップ内の各プロセッサコアのＴＢをそのチップの他のすべてのプロセッサコアのＴＢと同期させるステップと、複数の別々のマシンを互いに同期させるステップを説明する高次のフローチャートを示す。プロセスはブロック３００で示されるとおり開始し、その後、マシンの電源を入れてブートする、例えばマシンでパワーオンリセットを実行するステップを示すブロック３０２に移る。マシンのブートは、ハイパーバイザーであるファームウェアをロードし始動するステップを含む。
【００７３】
次に、ブロック３０４は、すべてのチップの時刻（ＴＯＤ）レジスタの値を同期させるステップを表す。好適な方法では、この同期させるステップは、初期値（通常ゼロ）を１チップのＴＯＤに書き込むステップと、次にハードウェアの状態マシンを、例えばＴＭＦＲに書き込んで呼び出すステップを含み、それによってマシン全体の値を他のすべてのチップに伝播して、２マイクロ秒の境界ごとに同期信号に従いすべてのチップのＴＯＤを同時に増分できるステップと、ＴＯＤ値のビット（５９）に対応する３２ＭＨｚステップ信号を使って同期を維持するステップとを伴う。
【００７４】
次に、ブロック３０６はこのマシンの各チップについて、そのチップにある各プロセッサコアのタイムベースレジスタ（ＴＢ）の値をチップのＴＯＤ値と同期させるステップを表す。好適な方法では、これを行うには、ハイパーバイザーがＭＴＳＰＲ命令を使って各プロセッサコアのタイミング機構管理レジスタ（ＴＭＦＲ）に書き込んで、チップのＴＯＤ値を次の２マイクロ秒同期境界でＴＢレジスタに転送させ、さらにＴＢレジスタをチップのＴＯＤがステップされるのと同じ３２ＭＨｚステップパルスにステップすることによって同期を維持する。次に、ブロック３０８はこのマシンのハイパーバイザーのサービス区画を始動するステップを表す。
【００７５】
プロセスはさらにブロック３１０に移り、ブロック３１０はこのマシンとこのマシンに連結されて論理区画の移送をサポートするすべてのマシンのサービス区画で同じ実時間（例、ＧＭＴ）を設定するステップを表す。各マシンのハイパーバイザーはサービス区画のリアルタイムオフセット（ＲＴＯ）をそのメモリーに格納する。ＲＴＯは、規定される実時間からＴＢ値を引いて、ＴＢの増分期間を掛けて決める。区画の移送にどのマシンが利用できるかという判定は、ネットワークのアドミニストレーターとシステムオペレーターが行う。
【００７６】
プロセスはさらにブロック３１２に移り、ブロック３１２はマシンの電源をオフ／オンする、又はマシンをリブートするなどして、マシンが再始動したかどうかの判定を表す。マシンが再始動されたという判定が行われた場合、プロセスはブロック３０４に戻る。もう一度ブロック３１２を参照して、マシンが再始動されていないという判定が行われると、プロセスはブロック３１４に移り、ブロック３１４はこのマシンのハイパーバイザーが他のマシンのサービス区画にそのハイパーバイザーから照会を続けるステップを表す。この目的は、このサービス区画の時間を他のマシンのサービス区画の時間に同期させ続けることである。プロセスはその後ブロック３１２に戻る。
【００７７】
図４は、本発明に従い、正常な区画処理中に、ある特定のマシンのハイパーバイザーが、プロセッサコアのＴＢレジスタの値をプロセッサで再開されるある特定の区画に関連する相対時間に調整するために実行するプロセスを表す高次のフローチャートを示す。プロセスはブロック４００で示されるとおり開始し、その後、ある特定のプロセッサコアで現在実行している論理区画のタイムスライスが終了するステップを示すブロック４０２に移る。次に、ブロック４０４は、ハイパーバイザーがある特定のプロセッサコアで現在実行している区画を中断するステップと、そのプロセッサコアで再開する区画を判定するステップを表す。さらに、ブロック４０６はその特定のプロセッサコアで前に実行していた区画について、後で区画の処理を再開するために必要なすべての構成データと状態情報をハイパーバイザーのメモリーに格納するステップを示す。
【００７８】
プロセスはさらにブロック４０８に移り、ブロック４０８はハイパーバイザーがある特定のコアにディスパッチされた前の区画のＴＢＯをハイパーバイザーのメモリーに格納されているその区画の構成データから得るステップを示している。次に、ブロック４１０は、ハイパーバイザーがその特定のコアにディスパッチされることになる次の区画のＴＢＯをハイパーバイザーのメモリーに格納されるその区画の構成データから得るステップを示している。
【００７９】
その後、ブロック４１２は、この２つのＴＢＯが等しいかどうかの判定を示している。２つのＴＢＯが同じであるという判定がなされたら、プロセスはブロック４１４に移り、ブロック４１４はこの特定のプロセッサコアのＴＢレジスタ値が修正されないことを示している。プロセスはこうしてブロック４１６で示されるとおり終了する。
【００８０】
もう一度ブロック４１２を参照して、２つのＴＢＯが異なるという判定がなされたら、プロセスはブロック４１８に移り、ブロック４１８は前にディスパッチした区画のＴＢＯとこのプロセッサコアにディスパッチすることになる次の区画のＴＢＯとの差を計算するステップを示している。その後、ブロック４２０はこのプロセッサコアから現在のＴＢレジスタ値を読み取って、コアから読み取ったＴＢレジスタ値から、前の区画のＴＢＯと次の区画のＴＢＯとの差を引いて、新たなＴＢレジスタ値を計算するステップを示す。
【００８１】
次に、ブロック４２２は、ＴＢＵ４０へＭＴＳＰＲ命令を実行して、新たなＴＢ値の上位４０ビットを、このコアのＴＢの上位４０ビットに書き込むステップを示す。プロセスはさらにブロック４２３に移り、ブロック４２３はチップのＴＯＤと同期させてステッピングを続けることにより、低位ビット、すなわちビット４０〜６３が時間をカウントし続けるステップを示す。
【００８２】
さらに、ブロック４２４は、このコアのＴＢレジスタの現在（更新）値を読み取るステップを示す。その後、ブロック４２０に示すように、ブロック４２６は更新値のうち低位ビットだけを、読み取った古い値の低位ビットと比較するステップを示す。
【００８３】
その後、ブロック４２８は、たった今読み取った現在（更新）値の低位ビットが古い値の低位ビット以上であるかどうかの判定を示す。たった今読み取った現在値の低位ビットが古い値の低位ビット以上であるという判定がなされたら、このプロセスは終了し、ブロック４３４で示される処理を続ける。もう一度ブロック４２８を参照して、たった今読み取った現在値の低位ビットが古い値の低位ビット未満であるという判定がなされたら、プロセスはブロック４３０に移り、ブロック４３０はビット３９を増分することによりたった今読み取った現在のＴＢ値を増分するステップを示す。ブロック４２８での比較の結果がノーであるということは、ＴＢレジスタ値が最初に読み取った時点から修正された値が上位４０ビットに書き直されたときまでに増分して、ビット３９に繰り上ったことを示す。ビット３９での値の増分は、上書きされることにより失われた増分の分を調整する。
【００８４】
次に、ブロック４３２は、ＴＢＵ４０へＭＴＳＰＲ命令で、増分したＴＢ値の上位４０ビットをこのコアのＴＢレジスタの上位４０ビットに書き込むステップを示す。このプロセスはこれで完了し、ブロック４３４に示すとおり処理を続ける。
【００８５】
図５は、本発明に従い、マシン検査の発生後、ある特定のマシンのハイパーバイザーが、プロセッサコアのＴＢ値をプロセッサで再開されるある特定の区画に関連する相対時間に調整するために実行するプロセスを図示する高次のフローチャートを示す。プロセスはブロック５００で示されるとおり開始し、その後マシンでマシン検査が起こっているステップを示すブロック５０２に移る。マシン検査が起こっても、各チップのＴＯＤの値は影響を受けない。そのためＴＯＤ値は依然有効である。
【００８６】
プロセスはさらにブロック５０４に移り、ブロック５０４はハイパーバイザーがある特定のプロセッサコアのＴＢ値をそのプロセッサコアのタイミング機構管理レジスタ（ＴＦＭＲ）に書き込むことによってチップＴＯＤから復元するステップを示す。これによりハードウェアは次の２マイクロ秒の境界を待機してから、チップのＴＯＤからコアのＴＢに値を転送し、同期ステッピングを再開する。
【００８７】
その後、ブロック５０６はある特定のコアにディスパッチする予定の次の区画のタイムベースオフセット（ＴＢＯ）を、ハイパーバイザーのメモリーに格納しているその区画の構成データから取得するステップを示す。次に、ブロック５０７は、このプロセッサコアのこのＴＢレジスタから現在のＴＢ値を読み取り、次の区画のＴＢＯをたった今読み取ったＴＢ値に加えて、新たなＴＢ値を計算するステップを示す。さらに、ブロック５０８は、ＴＢＵ４０へＭＴＳＰＲ命令で、新たなＴＢ値の上位４０ビットをこのコアのＴＢレジスタの上位４０ビットに書き込むステップを示す。
【００８８】
次に、ブロック５１０は、このコアのＴＢの現在（更新）値をコアのＴＢレジスタから読み取るステップを示す。さらにブロック５１２は、更新値の低位ビットだけを古い値の低位ビットと比較するステップを示す。
【００８９】
プロセスはさらにブロック５１４に移り、ブロック５１４はたった今読み取った現在（更新）値の低位ビットが古い値の低位ビット以上であるかどうかの判定を示す。たった今読み取った現在（更新）値の低位ビットが古い値の低位ビット未満であるという判定がなされたら、プロセスはブロック５１８に移り、ブロック５１８はビット３９を増分することによってたった今読み取った現在のＴＢ値を増分するステップを示す。ブロック５１４での比較の結果がノーということは、最初に読み取った時点から、修正値がＴＢレジスタの上位４０ビットに書き直されたときまでにＴＢが増分し、ビット３９に繰り上ったことを意味する。ビット３９での値の増分は、上書きされることによって失われた増分の分を調整する。
【００９０】
次に、ブロック５２０は、ＴＢＵ４０へＭＴＳＰＲ命令で、増分したＴＢ値の上位４０ビットをこのコアのＴＢレジスタの上位４０ビットに書き込むステップを示す。ステップはさらにブロック５１６に移り、処理を続ける。
【００９１】
もう一度ブロック５１４を参照して、たった今読み取った現在（更新）値の低位ビットが古い値の低位ビット以上であるという判定がなされたら、プロセスはブロック５１４に移り、処理を続ける。
【００９２】
図６は、本発明に従い、論理区画を作成し、その区画にゼロの初期のタイムベースオフセット（ＴＢＯ）を割り当て、その区画の構成データにＴＢＯを格納するステップを示すフローチャートを図示する。図６に示されるステップはハイパーバイザーが実行する。プロセスはブロック６００で示されるとおり開始し、その後論理区画を構成するステップを示すブロック６０２に移る。次に、ブロック６０４は、レジスタのデータ、値、および状態を含めてこの区画のすべての構成データをハイパーバイザーのメモリーに格納するステップを示す。
【００９３】
プロセスはさらにブロック６０６に移り、ブロック６０６は区画にゼロの初期のＴＢＯを割り当てるステップを示す。ハイパーバイザーが新たな論理区画を作る場合、当初ＴＢＯ値はゼロである。論理区画が作成した同じマシンでのみディスパッチする限り、ＴＢＯはゼロのままとなる。次に、ブロック６０８は、メモリーにこの区画のタイムベースオフセットを、この区画の他の構成データ、値、および状態と合わせて格納するステップを示す。プロセスはさらにブロック６１０で示されるように終了する。
【００９４】
図７の（Ａ）は、本発明に従い、第１コンピュータシステム機のハイパーバイザーが論理区画を、第２コンピュータシステム機のプロセッサコアで実行するために第２コンピュータシステム機に送信するステップを示す。プロセスはブロック７００で示されるとおり開始し、その後ブロック７０２に移り、ブロック７０２は第１マシンのハイパーバイザーが第２マシンのプロセッサコアで実行することになるある特定の論理区画のディスパッチを決定するステップを示す。
【００９５】
次に、ブロック７０４は、その区画があるコアでまだ実行されていない場合、ハイパーバイザーがその特定の区画を現在のマシンのプロセッサコアにディスパッチするステップを示す。ハイパーバイザーはその区画のオペレーティングシステムに対して、第２マシンへ移送の準備をするよう通知する。さらに、ブロック７０６は、ハイパーバイザーがその区画をコアでの実行を中断して、その区画のリアルタイムオフセット（ＲＴＯ）を含めその構成データと状態をハイパーバイザーのメモリーに格納するステップを示す。ハイパーバイザーはその区画を実行した最後のプロセッサコアのタイムベース（ＴＢ）値も含む。これは最後にその区画を中断したコアである。このＴＢ値はそれに適用される区画のＴＢＯを有する。
【００９６】
さらにブロック７０８は、第１マシンのハイパーバイザーが構成データを第２マシンに送信するステップを示す。ハイパーバイザーは第１マシンのサービス区画の実時間も送るが、これは第２マシンのサービス区画の実時間と同期させる。こうしてプロセスはブロック７１０で示すとおり終了する。
【００９７】
図７の（Ｂ）は、本発明に従い、第１コンピュータシステム機のハイパーバイザーが論理区画を、第１コンピュータシステム機のプロセッサコアで実行するために、第２コンピュータシステム機から受け取るステップを示す。プロセスはブロック７２０で示すとおり開始し、その後ブロック７２２に移り、ブロック７２２は、第１マシンによりある特定の論理区画の構成データを、移送する区画のＲＴＯ、第２マシンでその区画を前にランしていたプロセッサコアから適用されるＴＢＯを有するＴＢ値、第２マシンのサービス区画の実時間を含めて第２マシンから受け取るステップを示す。その後、ブロック７２４は構成データの送信に要する経過時間を計算するステップを示す。
【００９８】
次に、ブロック７２６は、第２マシンから適用された移送する区画のＴＢＯを有するＴＢ、第１マシンでサービス区画をランするプロセッサのＴＢ、データ送信に要する経過時間を使って、移送する区画の新たなＴＢＯを計算するステップを示す。データ送信に要する経過時間を、一定のＴＢ増分率に経過した実時間を掛けて、ＴＢの単位に変換する。新たなＴＢＯ値はさらに、移送する区画のＴＢにＴＢの単位に変換したデータ送信に要する経過時間を足して、第１（受信側）マシンのサービス区画のＴＢを引く。
【００９９】
次に、ブロック７２８は、第１マシンのハイパーバイザーのメモリーに、受け取った構成データと移送された論理区画の新たなＴＢＯを格納するステップを示す。こうしてこのプロセスはブロック７３０で示すとおり終了する。
【０１００】
図８は、本発明に従い、本発明を備えるコンピュータシステム機のネットワークを図示する。ネットワークデータ処理システム８００は、本発明を実施できるコンピュータシステム機のネットワークである。ネットワークデータ処理システム８００はネットワーク８０２を内蔵するが、これはネットワークデータ処理システム８００内部で互いに接続される様々なデバイスやコンピュータ間の通信リンクを提供するために使う媒体である。ネットワーク８０２はワイヤ、ワイヤレス通信リンク、又は光ファイバーケーブルなどの接続を組み込める。
【０１０１】
図示する実施例では、サーバーなどのマシン８０４をネットワーク８０２に記憶装置８０６とともに接続する。さらに、他のマシン８０８、８１０、８１２もネットワーク８０２に接続する。このマシン８０２、８１０、８１２はクライアントになることがある。マシン８０８、８１０、８１２は、例えば、パーソナルコンピュータ、ネットワークコンピュータ、又は他のコンピュータ機器となることがある。図示する例では、サーバー８０４はブートファイル、オペレーティングシステムの画像、およびアプリケーションなどのデータをクライアント８０８〜８１２に提供する。クライアント８０８、８１０、８１２はサーバー８０４にとってのクライアントである。ネットワークデータ処理システム８００は図示していない追加のサーバー、クライアント、および他のデバイスを備えることもできる。図示する例では、ネットワークデータ処理システム８００は、互いに通信するためのプロトコルであるＴＣＰ／ＩＰスイートを使うネットワークおよびゲートウェイの世界的な集合体を表すネットワーク８０２を有するインターネットである。インターネットの中核は、データやメッセージを伝送する大量の商業、行政、教育、およびその他のコンピュータシステムから構成される大規模なノード又はホストコンピュータ間の高速データ通信回線のバックボーンである。
【０１０２】
当然、ネットワークデータ処理システム８００は多数の様々な種類のネットワークとして、例えばイントラネット、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、又はワイヤレスネットワークなどとしても実施できる。図８は例示を目的としており、本発明のアーキテクチャ上の制限を意図していない。
【０１０３】
図９は、本発明に従いプロセッサを備えるコンピュータシステム機の図である。データ処理システム９００はシステムバス９０６に接続される複数のプロセッサ９０２および９０４を備える対称型マルチプロセッサ（ＳＭＰ）システムである。代わりに、シングルプロセッサシステムを採用してもよい。ひとつのプロセッサはサービスプロセッサ、例えばサービスプロセッサ９０４である。またシステムバス９０６に接続されるのはメモリーコントローラー／キャッシュ９０８であり、これはローカルメモリー９０９とのインターフェースを提供する。Ｉ／Ｏバスブリッジ９１０をシステムバス９０６に接続して、Ｉ／Ｏバス９１２とのインターフェースを提供する。メモリーコントローラー／キャッシュ９０８とＩ／Ｏバスブリッジ９１０は図示するように統合してもよい。
【０１０４】
Ｉ／Ｏバス９１２に接続される周辺構成要素相互接続（ＰＣＩ）バスブリッジ９１４がＰＣＩローカルバス９１６とのインターフェースを提供する。多数のモデムをＰＣＩバス９１６に接続してもよい。代表的なＰＣＩバスの実装では、４つのＰＣＩ拡張スロット又はアドインコネクタをサポートする。他のコンピュータとの通信リンクは、アドインボードからＰＣＩローカルバス９１６に接続されるモデム９１８とネットワークアダプタ９２０から提供できる。
【０１０５】
ネットワークアダプタ９２０は、例えばＲ４５コネクタからイーサーネットネット（Ｒ）ワークなど、ネットワークへ向かうアナログ信号を条件付ける物理層９８２を備える。メディアアクセスコントローラー（ＭＡＣ）９８０がネットワークアダプタ９２０に組み込まれる。メディアアクセスコントローラー（ＭＡＣ）９８０はバス９１６に連結されて、デジタルネットワーク信号を処理する。ＭＡＣ９８０はバス９１６と物理層９８２とのインターフェースの役目を果たす。
【０１０６】
追加ＰＣＩバスブリッジ９２２および９２４は追加ＰＣＩバス９２６および９２８のインターフェースを提供し、そこから追加のモデムやネットワークアダプタをサポートできる。このように、データ処理システム９００は複数のネットワークコンピュータとの接続を可能にする。図示するように、メモリーマップドグラフィックスアダプタ９３０とハードディスク９３２も、直接又は間接的にＩ／Ｏバス９１２に接続できる。
【０１０７】
当業者には図９に図示するハードウェアが変わることがあることは理解されよう。図示するハードウェアに追加して、又はその代わりに、例えば、光ディスクドライブなどの他の周辺機器を使用することもできる。図示する例には本発明に関してアーキテクチャ上の制限する意図はない。
【０１０８】
図１０は本発明を実施できるハイパーバイザーを組み込んだコンピュータシステム機のブロック図である。システム１０００は対称型マルチプロセッシング（ＳＭＰ）サーバーコンピュータシステムであることが好ましい。ＳＭＰサーバーコンピュータシステム１０００は、そのアプリケーションを実行するためにユーザーアプリケーションにマッピングできる、すなわち一時的にユーザーアプリケーションが所有できる物理的なハードウェアディバイスを備える。
【０１０９】
ＳＭＰサーバーコンピュータシステム１０００は物理的なＳＭＰサーバー１００２を備える。物理的なＳＭＰサーバー１００２は、プロセッサ１００４、メモリー１００６、Ｉ／Ｏアダプタ１００８などの物理的なハードウェアデバイスを備える。これら物理的なデバイスはハードウェア１０１０が管理する。プロセッサ１００４の各々は、プロセッサの複数の異なるスレッドを同時に実行できる同時マルチスレッド（ＳＭＴ）プロセッサであることが好ましい。
【０１１０】
仮想サーバーは、同じ容量、インターフェース、状態を有する物理的なサーバーのプロキシである。仮想サーバーは物理的なＳＭＰサーバーコンピュータシステム１０００に存在するハイパーバイザーが作成して管理する。仮想サーバーはそのユーザー、そこでランするオペレーティングシステム、ミドルウェア、アプリケーションソフトウェアにとっては見かけ上物理的なＳＭＰサーバーのように見える。ＳＭＰサーバーコンピュータシステム１０００は、仮想サーバー１０１２や仮想サーバー１０１２ａなどのひとつ又は複数の仮想サーバーを備える。
【０１１１】
各仮想サーバーはそのソフトウェアにとっては、見かけ上その仮想サーバーの専用に利用できるそれ自身の仮想プロセッサ、メモリー、Ｉ／Ｏアダプタを備えるように見える。例えば、仮想サーバー１０１２は、仮想プロセッサ１０２０、仮想メモリー１０２２、仮想Ｉ／Ｏアダプタ１０２４を備える。仮想サーバー１０１２ａは、仮想プロセッサ１０２０ａ、仮想メモリー１０２２ａ、仮想Ｉ／Ｏアダプタ１０２４ａを備える。
【０１１２】
各仮想サーバーは、オペレーティングシステム、ミドルウェア、アプリケーションを含めてそれ自身のソフトウェア環境をサポートする。各仮想サーバーのソフトウェア環境は、他の仮想サーバーのソフトウェア環境とは異なっていてもよい。例えば、各仮想サーバーが実行するオペレーティングシステムは互いに異なることがある。
【０１１３】
例えば、仮想サーバー１０１２はオペレーティングシステム１０１４、ミドルウェア１０１６、アプリケーション１０１８をサポートする。仮想サーバー１０１２ａはオペレーティングシステム１０１４ａ、ミドルウェア１０１６ａ、アプリケーション１０１８ａをサポートする。オペレーティングシステム１０１４および１０１４ａは同じオペレーティングシステムでも異なるオペレーティングシステムであってもよい。
【０１１４】
仮想サーバーとは、ユーザーにとっては、物理的なサーバーと同じようにアクセスされ、情報を提供し、物理的なサーバーのように動作するサーバー環境を定義するサーバーの論理的な記述である。各仮想サーバーのために定義される仮想プロセッサ、仮想メモリー、仮想Ｉ／Ｏアダプタは、物理的なプロセッサ、メモリー、Ｉ／Ｏアダプタの論理的な代用品である。
【０１１５】
ハイパーバイザー１０１０はその仮想プロセッサ、仮想メモリー、および仮想Ｉ／Ｏアダプタをもつ仮想サーバーと、これら仮想デバイスを実施するために選択された物理的なハードウェアデバイスとの間のマッピングを管理する。例えば、仮想プロセッサがディスパッチされるとき、物理的なプロセッサ１００４のうちのひとつなどの物理的なプロセッサがその仮想プロセッサを実行および実施するのに使うためにハイパーバイザー１０１０から選択される。ハイパーバイザー１０１０は物理的なデバイスの選択とその仮想デバイスへの一時的な割り当てを管理する。
【０１１６】
ハイパーバイザー１０１０は仮想ＳＭＰサーバーの動的な作成、管理および展開を担う。仮想プロセッサ、仮想Ｉ／Ｏアダプタ、および仮想メモリーブロック全体をハイパーバイザーから取り外したり追加したりできる。ハイパーバイザー１０１０はオペレーティングシステムを巻き込まずに、動的資源割振り、物理的なリソースのタイムシェアリングの管理、プロセッサにマッピングされる物理的なリソースの変更も担う。ハイパーバイザー１０１０はシステム１０００のひとつ又は複数の物理的なプロセッサコアに論理区画をディスパッチすることも担う。ハイパーバイザー１０１０は共用が望ましくない状況では、物理的なリソースを仮想リソースにあてがうこともできる。ハイパーバイザー１０１０は物理的なリソースの追加又は除去の管理を担う。ハイパーバイザー１０１０はこのような追加や削除を上位レベルのアプリケーションには見えないようにする。
【０１１７】
図１１は、本発明を備える論理的に分割したプラットフォームのブロック図である。データ処理システム１１２０は論理的に分割したプラットフォーム１１５０を備える。プラットフォーム１１５０は、分割したハードウェア１１５２、ハイパーバイザー１１５４とも呼ばれる区画管理ファームウェア、区画１１５６〜１１５９を備える。
【０１１８】
オペレーティングシステム１１６１〜１１６４が区画１１５６〜１１５９の内部に存在する。オペレーティングシステム１１６１〜１１６４は、プラットフォーム１１５０で同時にランされるシングルオペレーティングシステムの複数のコピーでも複数の異種オペレーティングシステムでもよい。
【０１１９】
サービス区画１１５５がシステム１１２０に内蔵され、ハイパーバイザー１１５４の専用にされる。
【０１２０】
分割したハードウェア１１５２は複数のプロセッサノード１１６５〜１１６８と、複数のシステムメモリーユニット１１７０〜１１７３と、複数の入出力（Ｉ／Ｏ）アダプタ１１７４〜１１８１と、記憶装置１１８２とを備える。プロセッサノード１１６５〜１１６８、メモリーユニット１１７０〜１１７３、ＮＶＲＡＭ記憶装置１１８３、およびＩ／Ｏアダプタ１１７４〜１１８１に組み込まれるプロセッサコアのそれぞれを、複数の区画１１５６〜１１５９のうちのひとつに割り当てできる。分割したハードウェア１１５２もサービスプロセッサ１１９０を備える。ＮＶＲＡＭデバイスなどの不揮発性メモリーデバイス１１９１がサービスプロセッサ１１９０に組み込まれる。
【０１２１】
区画管理ファームウェア（ハイパーバイザー）１１５４は区画１１５６〜１１５９に対して多数の機能やサービスを行って、論理的に分割したプラットフォーム１１５０の区画を作成し、強制実行する。ハイパーバイザー１１５４は、搭載されるハードウェアと同一の仮想マシンを実施するファームウェアである。ファームウェアとは、電力がなくてもそのコンテンツを入れておくメモリーチップに格納される「ソフトウェア」のことであり、例えば読み出し専用メモリー（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、消去可能プログラム可能ＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラム可能ＲＯＭ（ＥＥＰＲＯＭ）、不揮発性ランダムアクセスメモリー（不揮発性ＲＡＭ）などである。このためハイパーバイザー１１５４は、論理的に分割したプラットフォーム１１５０のハードウェアのリソースすべてを仮想化することによって、独立ＯＳの画像１１６１〜１１６４を同時に実行できる。ハイパーバイザー１１５４はＩ／ＯデバイスをＩ／Ｏアダプタ１１７４〜１１８１から、ＯＳ画像１１６１〜１１６４のうちのひとつが使用するための専用モードのシングル仮想マシンに接続できる。
【０１２２】
メモリー１１５４ａはハイパーバイザー１１５４が専用に確保される。
【０１２３】
ハードウェア管理コンソール（ＨＭＣ）１１８０をデータ処理システム１１２０のサービスプロセッサ１１９０に連結できる。ＨＭＣ１１８０はサービスプロセッサ６９０に連結される個別のコンピュータシステムで、サービスプロセッサ１１９０からシステム１１２０の様々な機能を制御するためにユーザーが使用できる。
【０１２４】
本発明は完全な機能を備えたデータ処理システムに関して述べてきたが、当業者には、本発明のプロセスが、命令のコンピュータ読み取り可能媒体の形態や多様な形態で配布できること、また本発明は配布を行うために実際に使う特定の種類の信号伝達媒体に関係なく同様に適用されることは理解されよう。コンピュータ読み取り可能媒体の例としては、フレキシブルディスク、ハードディスクドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの記録可能なタイプの媒体や、デジタルおよびアナログの通信リンクのような送信媒体、例えば無線周波数や光波伝送などの伝送形態を使う有線又は無線通信リンクがある。コンピュータ読み取り可能媒体は、ある特定のデータ処理システムで実際に使用するために復号される符号化フォーマットの形態をとることがある。
【０１２５】
本発明は具体的に例示して説明するために詳しく説明してきたが、すべてを網羅している、又は発明を開示する形に制限するつもりはない。当業者には数多くの変更や変型ができることは明らかであろう。実施例は発明の原理、実際の用途を最良に説明し、当業者が意図する特定の目的に合うように様々な変更を加えた様々な実施例に関して発明を理解できるように選択し、説明した。
【図面の簡単な説明】
【０１２６】
発明の特色と考えられる新規な特徴は添付の請求項に記載される。しかし、発明自体、また好適な使用態様、その別の目的および利点は、添付の図面と合わせて以下の例示的な実施例の詳細な説明を参照すれば最良に理解されるであろう。
【０１２７】
【図１】本発明に従うチップに複数のプロセッサコアを有するチップを示す図である。
【図２】本発明の好適な実施例に従い、１台のコンピュータシステム機に組み込まれる回路基板の対称型マルチプロセッサ（ＳＭＰ）構成において、図１のチップなどのマルチプロセッサチップの物理的な構成を示す図である。
【図３】本発明に従い、マシン内の各チップをそのマシンの他のチップと同期させるステップと、各プロセッサコアのＴＢをそのチップの他のすべてのプロセッサコアのＴＢと同期させるステップと、複数の個々のマシンを互いに同期させるステップを説明する高次のフローチャートである。
【図４】本発明に従い、ある特定のマシンのハイパーバイザーが、プロセッサコアのＴＢ値を、正常な区画の処理中にプロセッサで再開されるある特定の区画に関連した相対時間に調整するために実行するプロセスを図示する高次のフローチャートである。
【図５】本発明に従い、ある特定のマシンのハイパーバイザーがプロセッサコアのＴＢ値をマシン検査の発生後プロセッサで再開されるある特定の区画に関連する相対時間に調整するために実行するプロセスを説明する高次のフローチャートである。
【図６】本発明に従い、論理区画を作成するステップと、その区画にゼロの初期タイムベースオフセット（ＴＢＯ）を割り当てるステップと、その区画の構成データにＴＢＯを格納するステップを示す高次のフローチャートである。
【図７】（Ａ）は、本発明に従い、第１マシンのハイパーバイザーが、第２マシンのプロセッサコアで実行するために論理区画を第２マシンに送信するステップを示す図である。（Ｂ）は、本発明に従い、第１マシンのハイパーバイザーが、第１マシンのプロセッサコアで実行するために第２マシンから論理区画を受け取るステップを示す図である。
【図８】本発明に従い、本発明を備えるマシンのネットワークの図である。
【図９】本発明に従い、プロセッサを備えるコンピュータシステム機の図である。
【図１０】本発明を実施できるハイパーバイザーを備えるコンピュータシステム機のブロック図である。
【図１１】本発明を組み込んだ、論理的に分割したプラットフォームのブロック図である。
【図１】
2006302270.tif 000003
【図２】
2006302270.tif 000004
【図３】
2006302270.tif 000005
【図４】
2006302270.tif 000006
【図５】
2006302270.tif 000007
【図６】
2006302270.tif 000008
【図７】
2006302270.tif 000009
【図８】
2006302270.tif 000010
【図９】
2006302270.tif 000011
【図１０】
2006302270.tif 000012
【図１１】
2006302270.tif 000013