(57)【要約】【課題】論理的に区分されたコンピュータ・システム内で、仮想リアルタイム・クロック（ｖＲＴＣ）を維持するための方法、装置、システムおよび製品を提供すること。【解決手段】パーティション・マネージャが稼働していない（または十分に動作する状態でない）間に行われるハードウェア・リアルタイム・クロック（ｈＲＴＣ）に対する変更を追跡する。ｈＲＴＣ値に対するこうした変更の累積的効果は、クロック・デルタ変数として捕捉することができる。実施形態によっては、当該パーティション・マネージャが実行されていない間、ｈＲＴＣに対する変更を追跡し、クロック・デルタを生成するように、サービス・プロセッサを構成することができる。ロードされた後、当該パーティション・マネージャは、当該パーティション・マネージャが実行されていない間に行われたｈＲＴＣに対する変更を補償することでｖＲＴＣの保全性を保つのを目的として、こうした捕捉されたクロック・デルタを使用してｖＲＴＣに対する調整を行うことができる。【選択図】図２
2004318878.tif 000002
【特許請求の範囲】
【請求項１】
論理パーティショニング・オペレーティング・システムによって管理される少なくとも１つの論理パーティションに対して、少なくとも１つの仮想リアルタイム・クロックを維持する方法であって、
前記論理パーティショニング・オペレーティング・システムが稼働していない間、ハードウェア・リアルタイム・クロックに対する変更を追跡記録するステップと、
前記ハードウェア・リアルタイム・クロックに対する前記変更に基づいて、前記仮想リアルタイム・クロックが導き出される元となる１つまたは複数のデータ要素を調整するステップと、
を有する方法。
【請求項２】
前記ハードウェア・リアルタイム・クロックの値を読み出すステップと、
前記ハードウェア・リアルタイム・クロックの前記値にオフセット値を加算することによって、前記仮想リアルタイム・クロックの値を計算するステップと、
をさらに有する、請求項１に記載の方法。
【請求項３】
前記調整するステップが、前記仮想リアルタイム・クロックに関連するオフセット値を調整するステップをさらに有する、請求項１に記載の方法。
【請求項４】
フリーラン・カウンタの値を読み出すステップと、
前記フリーラン・カウンタの前記値に前記オフセット値を加算することによって前記仮想リアルタイム・クロックの値を計算するステップと、
をさらに有する、請求項３に記載の方法。
【請求項５】
前記仮想リアルタイム・クロックに最後に設定された記憶値と、フリーラン・タイマーにおける相当する記憶値とから、前記オフセット値を計算するステップ、をさらに有する、請求項３に記載の方法。
【請求項６】
前記調整するステップが、前記ハードウェア・リアルタイム・クロックに対する前記変更に基づいて、前記仮想リアルタイム・クロックの基になるフリーラン・カウンタ値を修正するステップを有する、請求項１に記載の方法。
【請求項７】
前記調整するステップが、前記フリーラン・カウンタを、前記ハードウェア・リアルタイム・クロックに対する前記変更に基づいて、ならびに、ほぼ同時に取られた前記フリーラン・カウンタと前記ハードウェア・リアルタイム・クロックとの各スナップショット値に基づいて、生成された値に設定するステップを有する、請求項６に記載の方法。
【請求項８】
前記フリーラン・カウンタと前記ハードウェア・リアルタイム・クロックとを定期的に同期させるステップをさらに有する、請求項６に記載の方法。
【請求項９】
論理パーティショニング・オペレーティング・システムによって管理される１つまたは複数の論理パーティションをもつコンピュータ・システム内で１つまたは複数の仮想リアルタイム・クロックを維持する方法であって、
サービス・プロセッサによって、前記論理パーティショニング・オペレーティング・システムが稼働していない間、ハードウェア・リアルタイム・クロックに対してなされた変更を捕捉するステップと、
前記論理パーティショニング・オペレーティング・システムによって、前記捕捉された変更に基づいて、前記仮想リアルタイム・クロックが導き出される元となる１つまたは複数のデータ要素を調整するステップと、
を有する方法。
【請求項１０】
前記ハードウェア・リアルタイム・クロックに対してなされた変更を捕捉する前記ステップが、
前記ハードウェア・リアルタイム・クロックを新しい値に変更する要求を受け取るステップと、
前記論理パーティショニング・オペレーティング・システムが稼働しているかどうかを判断するステップと、
稼働中でない場合、前記ハードウェア・リアルタイム・クロックの現在の値を読み出し、前記新しい値と前記現在との値の間の変更量に基づいてデルタ変数を調整し、引き続き、前記ハードウェア・リアルタイム・クロックを前記新しい値に設定するステップと、
を有する、請求項９に記載の方法。
【請求項１１】
前記調整するステップが、
前記論理パーティショニング・オペレーティング・システムによって、前記サービス・プロセッサからの前記デルタ変数にアクセスするステップと、
前記論理パーティショニング・オペレーティング・システムによって、それぞれの論理パーティションに対する１つまたは複数のデータ要素を、前記デルタ変数に基づいて調整するステップと、
を有する、請求項１０に記載の方法。
【請求項１２】
前記論理パーティショニング・オペレーティング・システムによって前記１つまたは複数のデータ要素を調整するステップが、それぞれの論理パーティションに対するオフセット値を調整するステップを有する、請求項１１に記載の方法。
【請求項１３】
前記論理パーティショニング・オペレーティング・システムによって前記１つまたは複数のデータ要素を調整するステップが、フリーラン・カウンタの値を調整するステップを有する、請求項１１に記載の方法。
【請求項１４】
少なくとも１つの仮想リアルタイム・クロックを維持するためのプログラムを含むコンピュータ読取り可能媒体であって、前記プログラムが、プロセッサによって実行される際に、
論理パーティショニング・オペレーティング・システムが稼働していない間のハードウェア・リアルタイム・カウンタの変更を示す変数にアクセスするステップと、
前記変数に基づいて、前記仮想リアルタイム・クロックが導き出される元となる１つまたは複数のデータ要素を調整するステップと、
を有する動作を実施する、コンピュータ読取り可能媒体。
【請求項１５】
前記調整するステップが、前記仮想リアルタイム・クロックに関連するオフセット値を調整するステップを有する、請求項１４に記載のコンピュータ読取り可能媒体。
【請求項１６】
前記処理が、
フリーラン・カウンタの値を読み出すステップと、
前記フリーラン・カウンタの前記値に前記オフセット値を加算することで、前記仮想リアルタイム・クロックの値を計算するステップをさらに有する、請求項１５に記載のコンピュータ読取り可能媒体。
【請求項１７】
前記処理が、前記仮想リアルタイム・クロックに最後に設定された記憶値と、前記フリーラン・タイマーにおける相当する記憶値とから、前記オフセット値を計算するステップ、をさらに有する、請求項１６に記載のコンピュータ読取り可能媒体。
【請求項１８】
論理的に区分されたコンピュータ・システムであって、
ハードウェア・リアルタイム・クロックと、
パーティション・マネージャが稼働していない間の、前記ハードウェア・リアルタイム・クロックに対する変更を、デルタ・クロック変数として捕捉するように構成されたサービス・プロセッサと、
相当する仮想リアルタイム・クロックをもつ少なくとも１つの論理パーティションと、
前記デルタ・クロック変数に基づいて、前記仮想リアルタイム・クロックが導き出される元となる１つまたは複数のデータ要素を調整するように構成されたパーティション・マネージャと、
を有するコンピュータ・システム。
【請求項１９】
フリーラン・カウンタをさらに有し、また、前記１つまたは複数のデータ要素が、前記フリーラン・カウンタの１つの値、および、前記仮想リアルタイム・クロックに関連する１つのオフセット値、のうちの少なくとも１つを有する、請求項１８に記載の論理的に区分されたコンピュータ・システム。
【請求項２０】
前記パーティション・マネージャがさらに、前記オフセット値および前記フリーラン・カウンタに基づいて、前記仮想リアルタイム・クロックの値を計算するように構成される、請求項１９に記載の論理的に区分されたコンピュータ・システム。
【請求項２１】
前記パーティション・マネージャが、前記フリーラン・カウンタを、前記クロック・デルタ変数に基づいて、ならびに、ほぼ同時に取られた前記フリーラン・カウンタと前記ハードウェア・リアルタイム・クロックとの両スナップショット値に基づいて、生成された値に設定するように構成される、請求項２０に記載の論理的に区分されたコンピュータ・システム。
【請求項２２】
前記サービス・プロセッサが、
前記ハードウェア・リアルタイム・クロックを新しい値に変更する要求を受け取るステップと、
前記論理パーティショニング・オペレーティング・システムが稼働中であるかどうかを判断するステップと、
もし稼働中でない場合は、前記ハードウェア・リアルタイム・クロックの現在の値を読み出し、前記新しい値と前記現在の値との間の変更量に基づいてデルタ変数を調整し、引き続いて、前記ハードウェア・リアルタイム・クロックを前記新しい値に設定するステップと、
によって、前記ハードウェア・リアルタイム・クロックに対する変更を捕捉するように構成される、請求項１８に記載の論理的に区分されたコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、論理的に区分されたコンピュータ・システムに関し、より詳細には、ハードウェアのリアルタイム・クロックに基づいて仮想化されたリアルタイム・クロックを維持することに関するものである。
【背景技術】
【０００２】
コンピューティング環境において、並列処理とは、一般に複数のコンピューティング・タスクを並列に実行することを指す。従来、並列処理には、複数のコンピュータ・システムが必要であり、そのそれぞれのリソースが特定のタスク専用とされ、または共通のタスクの一部を実行するために割り当てられていた。しかし、最近のコンピュータ・ハードウェアおよびソフトウェア技術の進歩により、単一のコンピュータ・システムで、システム・リソースを異なるタスクに対して論理的に区分することによって、非常に複雑な並行処理を行うことができるようになった。論理的に区分されたコンピュータ・システムでは、使用可能なシステム・リソースは、複数の論理パーティション（区分）に割り当てられ、そのそれぞれが、他のパーティションとは独立に動作するように見えるように設計される。リソースの論理パーティションへの割当ての管理は、パーティション・マネージャと一般に称されるソフトウェア・コンポーネントの一階層を介して通常実施される。
【０００３】
パーティション・マネージャの一目的は、専用のコンピュータ・システム上で実行するために一般に開発されたソフトウェア（オペレーティング・システムや特定のオペレーティング・システム用のアプリケーションなど）を、ほとんどまたは全く修正を加えないで、それぞれの論理パーティションが独立に実行できるようにすることである。たとえば、ある論理パーティションは、ＩＢＭのＯＳ／４００など第１のオペレーティング・システムを実行し、第２の論理パーティションは、ＩＢＭのＡＩＸなど第２のオペレーティング・システムを実行し、第３の論理パーティションは、Ｌｉｎｕｘなど第３のオペレーティング・システムを実行することができる。複数のオペレーティング・システムを同じコンピュータ・システム上で実行できるようにすると、論理的に区分されたシステムは、アプリケーション・プログラムがどのオペレーティング・システム用に作成されたかにほとんどまたは全く関係なく、ユーザのニーズに最適なアプリケーション・プログラムを選択するより多くの自由度をユーザに提供することができる。
【０００４】
パーティション・マネージャは一般に、それぞれの論理パーティションに対して、当該論理パーティションから見て、相当するハードウェア・コンポーネントと同じように動作する１組の仮想リソース（ソフトウェア・コンポーネント）を与えることによって、それぞれの論理パーティションが、ソフトウェアを独立に実行できるようにするという目的を達成するものである。言い換えれば、パーティション・マネージャによって、それぞれの論理パーティションは、実際には、それ自体の１組の仮想リソースを有する、独立した仮想コンピュータ・システム（または仮想マシン）として動作できるようになる。
【０００５】
それぞれの論理パーティションに設けることができる仮想リソースの一例に、仮想リアルタイム・クロックがある。このクロックは、電源がない時にシステムの時間管理を可能にするためバッテリでバックアップされた実在の単一ハードウェア・リアルタイム（実時間）・クロックから導き出すことができる。パーティション・マネージャは一般に、それぞれの論理パーティションに対して、ハードウェア・リアルタイム・クロックからのオフセット（補正値）を維持することによって、仮想化されたリアルタイム・クロックの動きを常に把握する。論理パーティションは、仮想リアルタイム・クロックを修正することができるが、オフセットを無効にするかもしれないので、ハードウェア・リアルタイム・クロックの修正は一般にできないようにしてある。
【０００６】
それぞれの仮想リアルタイム・クロックは、（たとえば異なるパーティション・オフセットを用いて）異なる時間に設定できるが、論理的に区分されたシステムの保守容易性にとっては、当該システム内でパーティションを維持する役割を担う様々なコンポーネント間で、リアルタイム・クロックを同期化することが一般的な目的であり、こうしたコンポーネントには、パーティション・マネージャ、サービス・プロセッサ、システム全体を制御するために使用する遠隔コンソール、およびこうしたコンポーネントの任意の組合せを含むことができる。これらのシステムにとっては、こうした同期化を行うためにパーティション・マネージャを起動して完全動作状態におくという制約なしに、このような同期化を実施する機能を有することも、更なる目的である。したがって、パーティション・マネージャが稼働していない間に、ハードウェア・リアルタイム・クロックに対する変更を行うことを許可することができる。
【０００７】
しかし、パーティション・マネージャが稼働していない間に、ハードウェア・リアルタイム・クロックが変更されると、論理パーティションに対する仮想リアルタイム・クロック・データ（オフセットなど）が無効になることがある。したがって、従来の論理的に区分されたシステムでは、パーティション・マネージャが稼働していない間にハードウェア・リアルタイム・クロックが変更されると、すべてのパーティションの仮想リアルタイム・クロックが失われることがあり、その後でこの仮想リアルタイム・クロックをユーザが１つずつ再設定しなければならず、それに多大な時間と労力を要することがある。従来の論理的に区分されたシステムにおけるこうしたシナリオを回避するために、パーティション・マネージャが稼働していない間の、ハードウェア・リアルタイム・クロックの設定へのアクセスは厳しく制限され、それによって保守容易性を好ましくないほどに制限することがある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、論理パーティショニング・ソフトウェア（論理区分化ソフトウェア）が稼働していない間に、ハードウェア・リアルタイム・クロックを変更できるようにする、ハードウェア・リアルタイム・クロックに基づいて仮想リアルタイム・クロックを維持するための改良型の方法および装置が求められている。
【課題を解決するための手段】
【０００９】
本発明は、一般に、論理的に区分されたコンピュータ・システム内で、１つまたは複数の仮想リアルタイム・クロックを維持するための方法、製品およびシステムを対象とする。
【００１０】
一実施形態では、論理パーティショニング・オペレーティング・システムによって管理される少なくとも１つの論理パーティションに対する少なくとも１つの仮想リアルタイム・クロックを維持するための方法が提供される。この方法は一般に、論理パーティショニング・オペレーティング・システムが稼働していない間に、ハードウェア・リアルタイム・クロックに対して行われる変更を追跡すること、および当該ハードウェア・リアルタイム・クロックに対する当該変更に基づいて、仮想リアルタイム・クロックを導き出す元である１つまたは複数のデータ要素を調整することを含む。
【００１１】
別の実施形態では、論理パーティショニング・オペレーティング・システムによって管理される１つまたは複数の論理パーティションをもつコンピュータ・システム内で、１つまたは複数の仮想リアルタイム・クロックを維持するための方法が提供される。この方法は一般に、論理パーティショニング・オペレーティング・システムが稼働していない間、ハードウェア・リアルタイム・クロックに対する変更をサービス・プロセッサによって捕捉すること、および当該捕捉された変更に基づいて、論理パーティショニング・オペレーティング・システムによって、仮想リアルタイム・クロックを導き出す元である１つまたは複数のデータ要素を調整することを含む。
【００１２】
別の実施形態では、仮想リアルタイム・クロックを維持するためのプログラムを含むコンピュータ読取り可能媒体が提供される。プロセッサによる実行時、このプログラムは、一般に、論理パーティショニング・オペレーティング・システムが稼働していない間のハードウェア・リアルタイム・クロックの変更を示す変数にアクセスすること、およびこの変数に基づいて、仮想リアルタイム・クロックを導き出す元である１つまたは複数のデータ要素を調整することを含めた処理を実施する。
【００１３】
別の実施形態では、ハードウェア・リアルタイム・クロック、サービス・プロセッサ、相当する仮想リアルタイム・クロックを有する少なくとも１つの論理パーティションおよびパーティション・マネージャを含む、論理的に区分されたコンピュータ・システムが提供される。サービス・プロセッサは一般に、パーティション・マネージャが稼働していない間、ハードウェア・リアルタイム・クロックに対する変更を、デルタ・クロック変数として捕捉するように構成される。パーティション・マネージャは一般に、当該デルタ・クロック変数にアクセスし、当該デルタ・クロック変数に基づいて、仮想リアルタイム・クロックの導き出す元である１つまたは複数のデータ要素を調整するように構成される。
【発明を実施するための最良の形態】
【００１４】
本発明は一般に、論理的に区分されたコンピュータ・システム内で、仮想リアルタイム・クロック（仮想ＲＴＣ）を維持するための方法、装置、システムおよび製品を対象とする。一般に、パーティション・マネージャが稼働していない（または十分に動作する状態でない）間に、ハードウェア・リアルタイム・クロック（ハードウェアＲＴＣ）に対して行われる変更を追跡する。ハードウェアＲＴＣの値に対するこうした変更の累積的効果は、本明細書では「クロック・デルタ」と称する変数として捕捉することができる。実施形態によっては、サービス・プロセッサは、パーティション・マネージャが稼働していない間、ハードウェアＲＴＣに対する変更を追跡して、当該クロック・デルタを生成するように構成することができる。ロードされた後、パーティション・マネージャは、この捕捉されたクロック・デルタを使用して、パーティション・マネージャが稼働していない間にハードウェアＲＴＣに対して行われた変更を補償することでその保全性を保持するよう努めながら、仮想ＲＴＣを調整することができる。
【００１５】
本明細書では、リアルタイム・クロックという用語は一般に、特定の基準時点に対してタイミングを調整する目的で使用され得るどんなタイプのタイミング機構をも指す。本明細書では、仮想という用語は一般に、相当するハードウェア・コンポーネントとして動作するように見えるように構成されるソフトウェア・コンポーネントを指す。したがって、仮想リアルタイム・クロックは一般に、相当するハードウェア・リアルタイム・クロックとして動作するように見えるように構成されるソフトウェア・コンポーネント、たとえばその値を１つのアプリケーション・プログラムが読み出しおよび設定できるようにするもの、を指す。リアルタイム・クロックの一般的な用途は、日時の値（本明細書では併せてＴＯＤ値と称する）を保持および維持することであるが、本発明の諸態様が、他のいずれかの時間管理目的に使用される仮想リアルタイム・クロックを維持するための利点に向いている場合がある。したがって、以下の説明で時刻機能についてのどんな言及も、リアルタイム・クロックの具体的な、しかし限定的ではない、適用例であるとみなすべきである。
【００１６】
本発明の一実施形態は、たとえば、図１に示し、以下で説明する論理的に区分されたコンピュータ・システム１００などのコンピュータ・システムで使用するプログラム製品として実装される。このプログラム製品におけるプログラムは、（本明細書で説明する諸方法を含む）諸実施形態の機能を定義するものであり、様々な信号搬送媒体に含めることができる。模範的な信号搬送媒体としては、それだけには限らないが、（ｉ）書込み不可能な記憶媒体（ＣＤ−ＲＯＭドライブによって読出し可能なＣＤ−ＲＯＭディスクなど、コンピュータ上の読出し専用メモリ装置）に永久的に格納される情報、（ｉｉ）書込み可能な記憶媒体（ディスケット・ドライブ内のフロッピ・ディスクやハード・ディスク・ドライブなど）に格納される変更可能な情報、または（ｉｉｉ）通信媒体によって、たとえば無線通信およびインターネットを含めたコンピュータ・ネットワークまたは電話ネットワークを介して、コンピュータに伝達される情報を含む。
【００１７】
一般に、本発明の諸実施形態を実施するために実行されるルーチンは、オペレーティング・システムの一部でも、たとえば図１に示す論理的に区分されたコンピュータ・システム１００のパーティション・マネージャ１２０およびサービス・プロセッサ１６０として実施されるファームウェアを含めて、特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクトまたは命令シーケンスでもよい。本発明のソフトウェアは一般に、ネイティブ・コンピュータによってマシン読取り可能なフォーマットに、したがって実行可能な命令に変換される複数の命令で構成される。またプログラムは、プログラムにとってローカルなところに常駐し、あるいはメモリまたは記憶装置内にある変数およびデータ構造体で構成される。さらに、以下で説明する様々なプログラムは、それらが本発明の特定の実施形態においてどの適用例に対して実施されているかに基づいて識別することができる。しかし、以下に述べるいずれの具体的な用語（nomenclature）も便宜上使用するものにすぎず、したがって、本発明は、こうした用語によって識別または示唆される特定の適用例だけに使用することに限定されないことを理解されたい。
【００１８】
［模範的な論理的に区分されたシステム］
図１では、論理的に区分されたコンピュータ・システム１００は、１つまたは複数の論理パーティションを有する（任意の数Ｎの論理パーティション１１０をサポートできることを示すために、論理パーティション１１０1から１１０Nとして図示する）。パーティション・マネージャ１２０は一般に、論理パーティション１１０の生成および削除を制御することができる。コンピュータ・システム１００は、ネットワーク・サーバ、メイフレーム・コンピュータなど、論理区分をサポートできるいずれの適切なタイプのコンピュータ・システムであってもよい。一実施形態では、コンピュータ・システム１１０は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ（ＩＢＭ）から入手可能なeServer iSeriesコンピュータ・システムである。
【００１９】
コンピュータ・システム１００は一般に、システム・メモリ１４０に接続された１つまたは複数のシステム・プロセッサ１３０を含む。システム・プロセッサ１３０は、任意の適切な割当て構成に従って論理パーティション１１０に割り当てることができる。たとえば、それぞれの論理パーティション１１０は、システム・プロセッサ１３０のうちの１つまたは複数を、それ専用にすることができ、またシステム・プロセッサ１３０のうちの１つまたは複数を、１つまたは複数の他の論理パーティション１１０と共有することもできる。システム・プロセッサ１３０、システム・メモリ１４０および他の様々な割当てリソースおよび未割当てリソース１７０の論理パーティション１１０への割当ては、パーティション・マネージャ１２０によって制御することができる。
【００２０】
システム・プロセッサ１３０に加えて、コンピュータ・システム１００は、サービス・プロセッサ１６０を含むことができ、このサービス・プロセッサは一般に、パーティション・マネージャ１２０が稼働していないときを含めて、連続して、かつパーティション・マネージャ１２０とは独立に稼働するように構成される。サービス・プロセッサ１６０は一般に、コンポーネント・テストを含むことができる初期プログラムロード（ＩＰＬ）の一部を実行するための特殊なファームウェア・コードを実行する。したがって、サービス・プロセッサ１６０は通常、システム・プロセッサ１３０の始動および停止、ならびに図示する様々なコンポーネント内の障害分離レジスタの読出しができることを含めて、ハードウェアへの制御アクセスを有する。サービス・プロセッサ１６０は、稼働時に発生し得るシステムの問題を診断する助けとして使用することもできる。サービス・プロセッサ１６０は、本明細書に記載する処理および機能を実施するために、（内部または外部メモリを介して）プログラムされる、ＩＢＭから入手可能なＰｏｗｅｒＰＣプロセッサなどのマイクロプロセッサとして実装することができる。
【００２１】
サービス・プロセッサ１６０は、ハードウェア管理コンソール（ＨＭＣ）１８０にとって、コンピュータ・システム１００とのインターフェイスとして働く。ＨＭＣ１８０は、（一般にサービス・プロセッサ１６０をインターフェイスとして使用する）コンピュータ・システム１００に接続されたカスタム構成のパーソナル・コンピュータ（ＰＣ）として実装することができ、また論理区分および他の低レベルのシステム管理を構成するのに使用することができる。実施形態によっては、類似の機能を、やはりサービス・プロセッサ１６０とインターフェイスすることができる１つまたは複数のサービス・パーティション（図示せず）、あるいは他の類似のタイプのインターフェイスによって提供することができる。
【００２２】
実施形態によっては、サービス・プロセッサ１６０は、リアルタイム・クロック（ＲＴＣ）１５０などのハードウェア・コンポーネントとの唯一のソフトウェア・インターフェイスを提供する。言い換えれば、パーティション・マネージャ１２０またはＨＭＣ１８０など他のコンポーネントからのＲＴＣ１５０の設定要求は、サービス・プロセッサ１６０を介してだけ実行することができる。上述したように、サービス・プロセッサ１６０は、パーティション・マネージャ１２０の電源が切れた後、引き続き実行することができ、したがって、ＨＭＣ１８０またはこうした類似のハードウェア・インターフェイスを介してＲＴＣ１５０への変更を可能にすることができる。
【００２３】
ＲＴＣ１５０は一般に、「実際の」システム時刻や「時刻」（ＴＯＤ）の維持などの、永続的な時間管理の目的で使用することができる、連続して動作するように構成されるどんなタイプのカウント装置（バッテリでバックアップされたリアルタイム・クロック・チップなど）をも示している。ＴＯＤは、任意の適切なフォーマットで保持することができ、その個々の詳細は、様々な実施形態によって異なり、パーティション１１０間でさえも異なり得ることが理解されよう。上述のように、パーティション・マネージャ１２０は、それぞれのパーティション１１０に対する、仮想リアルタイム・クロックを維持することができ、このクロックは、ＲＴＣ１５０からのオフセットとして維持することができる。精密な実装に応じて、それぞれのパーティションに対するオフセットを、仮想ＲＴＣデータ１９２として、永続的メモリ１９０（バッテリ・バックアップまたは不揮発性のＲＡＭ）に直接格納し、またはそこから導き出すことができる。
【００２４】
しかし、上述したように、パーティション・マネージャ１２０が稼働していない間に、（たとえばＨＭＣ１８０によって）ＲＴＣ１５０が異なる時間に修正または設定されると、論理パーティション１１０に対する仮想ＲＴＣデータ１９２は、有効ではなくなることがある。したがって、実施形態によっては、サービス・プロセッサ１６０を、パーティション・マネージャ１２０の電源が切れている（稼働していない）間ＲＴＣ１５０に対する変更を監視し、こうした変更の累積効果を変数クロック・デルタ１９４として永続的メモリ１９０内に捕捉するように、構成することができる。ロードされた後、パーティション・マネージャ１２０は、それが稼働していなかった間のＲＴＣ１５０に対する変更を補償する目的で、このクロック・デルタ１９４を使用して、仮想ＲＴＣデータ１９２、または、論理パーティションに対する仮想ＲＴＣ値（ＴＯＤ）を計算するために仮想ＲＴＣデータ１９２とともに使用される他の類似の変数、を調整することができる。
【００２５】
［仮想リアルタイム・クロックの維持］
図２は、本発明の一実施形態による、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントの相関図である。図示するように、パーティション・マネージャ１２０は、ディスパッチ（データ等の発送）可能な部分１２２およびディスパッチ不可能な部分１２４を含む、２つの一般に別個のコード層として実装することができる。ディスパッチ不可能部分１２４は一般に、コンピュータ・システム１００のシステム・ファームウェアとして実装され、転送制御の有効化（Ｉ／Ｏアクセスなど）やページ・テーブル管理などの低レベルのパーティション管理機能を提供し、複数の論理パーティション１１０を構成し、サービスし、実行するために必要なデータおよびアクセス方法を含む。ディスパッチ可能部分１２２は一般に、仮想サービス・プロセッサ機能やパーティションの開始／停止などの高レベルのパーティション管理機能を扱う。
【００２６】
ディスパッチ不可能部分１２４は、論理パーティション１１０に対する仮想ＲＴＣのファンクション呼出しを扱うこともでき、ディスパッチ可能部分１２２は、サービス・プロセッサ１６０とともに、パーティション・マネージャ１２０が稼働していない間にハードウェアＲＴＣ１５０に対する変更が行われた後、仮想ＲＴＣが適切に維持されるようにすることができる。たとえば、上述のように、サービス・プロセッサ１６０は、パーティション・マネージャ１２０が稼働していない間、ＲＴＣ１５０に対する変更を捕捉することができ、パーティション・マネージャのディスパッチ可能部分１２２は、その捕捉された変更を使用して、仮想ＲＴＣを調整することができる。以下でより詳しく述べるように、仮想ＲＴＣに対する実際の調整は、その実際の実装によって変わることがある。
【００２７】
図４に、パーティション・マネージャ１２０が稼働していない間、ハードウェアＲＴＣ１５０に対する変更を追跡し、クロック・デルタ１９４を生成するために、大部分はサービス・プロセッサ１６０（またはハードウェアＲＴＣ１５０に対する変更を追跡できる他のいずれかのタイプのコンポーネント）によって実施することができる模範的な処理３００を示す。クロック・デルタ１９４の値は、処理３００を開始する前に分かっていると想定されているが、その実際の値は想定されていない。処理３００は、図２を参照すれば最もよく説明することができる。
【００２８】
処理３００では、ステップ３０２で、ＲＴＣ１５０を新しい値（ＲＴＣNEW）に設定する要求を受信することから開始する。たとえば、サービス・プロセッサ１６０は、ＨＭＣ１８０またはパーティション・マネージャ１２０から、ＲＴＣ１５０の設定要求を受信することができる。ステップ３０４で、パーティション・マネージャ１２０が稼働しているかどうかを判定する。この判定は、たとえばステータス・フラグを調べ、または単に（要求自体に含まれることがある）要求発信元のコンポーネントの識別に基づいて行うことができる。パーティション・マネージャ１２０が実行中であると判定された場合、パーティション・マネージャ１２０が、ＲＴＣ１５０に対する変更について仮想リアルタイム・クロックと同期をとることができる。したがって、ステップ３０７で、ＲＴＣ１５０を新しい値に設定し、ステップ３０９で、仮想リアルタイム・クロック・データ（仮想ＲＴＣデータ１９２など）を、ＲＴＣ１５０の変更を反映するように更新する。
【００２９】
一方、パーティション・マネージャ１２０が稼働していない場合、ＲＴＣ１５０に対する変更を、（後でパーティション・マネージャ１２０がロードされるときなど）仮想ＲＴＣを調整する際に使用するため、クロック・デルタ１９４として捕捉する。ステップ３０６で、ＲＴＣ１５０の現在の値を読み出し、ステップ３０８で、新しいクロック・デルタ１９４（ΔNEW）を、次式を用いて生成する。
ΔNEW＝ΔCURRENT＋（ＲＴＣNEW−ＲＴＣCURRENT）
ただし、ΔCURRENTおよびＲＴＣCURRENTはそれぞれ、クロック・デルタ１９４およびＲＴＣ１５０の現在の値である。新しいクロック・デルタ１９４が計算されると、ステップ３１０で、ＲＴＣ１５０をＲＴＣNEWに設定することができ、その後、ステップ３１２で、処理３００が終了する。論理パーティション１１０に対する仮想ＲＴＣを調整する際にパーティション・マネージャ１２０が使用できるように、ＲＴＣ１５０に対する累積的変更をクロック・デルタ１９４として捕捉するために、必要に応じて処理３００を繰り返すことができる。
【００３０】
図５に、たとえば、パーティション・マネージャ１２０によって、捕捉されたクロック・デルタ１９４に基づいてパーティション１１０の仮想ＲＴＣを（ロード後などに）調整するために実施することができる模範的な処理４００を示す。処理４００では最初に、ステップ４０２で、パーティション・オペレーティング・システム（パーティション・マネージャ１２０など）の初期プログラム・ロード（ＩＰＬ）が開始される。ステップ４０４で、ＲＴＣ１５０の現在の値（ＲＴＣCURRENT）を読み出し、ステップ４０６で、たとえば永続的メモリ１９０からクロック・デルタ１９４を読み出す。ステップ４０８で、仮想ＲＴＣを、ＲＴＣCURRENTおよびクロック・デルタ１９４に基づいて調整し、その後、ステップ４１０で、（クロック・デルタ１９４が、仮想ＲＴＣを更新するために一度だけ使用されるように）クロック・デルタ１９４をゼロにする。
【００３１】
［模範的な仮想リアルタイム・クロックの実装］
仮想ＲＴＣに対する実際の調整は、仮想ＲＴＣが具体的にはどのように実装されているかによって異なる。図２に示すように、実施形態によっては、仮想ＲＴＣデータ１９２は、リモート・カウンタ１５２およびＲＴＣ１５０から導き出すことができる。リモート・カウンタ１５２は、フリーラン・カウンタとすることができ、そこから仮想ＲＴＣ（またはＴＤＯ）値を、仮想ＲＴＣデータ１９２に格納されているオフセット値に基づいて導き出すことができる。ハードウェアＲＴＣ１５０とリモート・カウンタ１５２は、異なる周波数で動作することができるが、これらの値は、スケーリングおよび変換の任意の組合せによって、整合性のとれたものとすることができる。したがって、ＴＯＤ値は、リモート・カウンタ１５２のバイナリ値を、年、月、日、時、分、秒およびコンマ何秒などの、単位についての別個のコンポーネントを含み得る任意の所望のＴＯＤフォーマットに変換することによって、導き出すことができる。
【００３２】
したがって、リモート・カウンタ１５２を使用して、最初の時刻（たとえば最小値に対応する）および最後の時刻（たとえば最大値に対応する）によって定義されるＴＯＤ値の範囲を示すことができる。具体的な例として、リモート・カウンタ１５２を、８マイクロ秒毎に増分する４９ビット・カウンタとすることができる。このように、リモート・カウンタ１５２は、およそ１４３年（すなわち２49×８×１０-6秒）にわたって動くものになることがある。
【００３３】
実施形態によっては、パーティション・マネージャ１２０は、リモート・カウンタ１５２をシステム・タイムに対する基準として使用し、かつ上述のように、電源が切れたときにシステム・タイムを維持するためにＲＴＣ１５０を使用するように、構成することもできる。しかし、ＲＴＣ１５０およびリモート・カウンタ１５２は、分解能および精度がわずかに異なっているので、リモート・カウンタ１５２から導き出されるリアルタイムとＲＴＣから導き出されるリアルタイムとの間にずれが生じることがある。したがって、こうしたずれを最小に抑えるために、パーティション・マネージャ１２０のディスパッチ可能部分１２２は、たとえばリモート・カウンタ１５２の値に基づいてＲＴＣ１５０を周期的に更新することによって、ＲＴＣ１５０とリモート・カウンタ１５２を周期的に同期させるように構成することができる。
【００３４】
ともかく、上述のように、それぞれの論理パーティションについて、リモート・カウンタ１５２からのオフセットを（たとえば永続的メモリ１９０に）保持することによって、仮想ＲＴＣを維持することができる。こうしたオフセットを直接格納しておくことができるし、また他のデータから導き出すこともでき、どちらも、仮想ＲＴＣデータ１９２として格納することができる。実施形態によっては、あるパーティション１１０上で稼働しているアプリケーションがそれに相当する仮想ＲＴＣを設定するとき、パーティション・マネージャ１２０は、そのパーティション１１０について、リモート・カウンタ１５２からのオフセットを計算する際に使用するために、（たとえば仮想ＲＴＣデータ１９２として）２つのデータ要素、
１）仮想ＲＴＣに設定される値、および
２）仮想ＲＴＣ設定時のリモート・カウンタ１５２の値
を保存することができる。
【００３５】
一例として、図３に、こうした２つのデータ要素を格納するのに使用することができる模範的なデータ構造体を示す。図示するように、クライアント（たとえば対応する論理パーティション１１０）が最後に設定した仮想ＲＴＣ（ＴＯＤ）値を表す基本ＴＯＤ値（ＴＯＤBase）、およびクライアントによって最後の仮想ＲＴＣ値（ＴＯＤBase）が設定されたときのリモート・カウンタ１５２のスナップショット（ＴＯＤSnapshot）がある。
【００３６】
このように、ＴＯＤBaseおよびＴＯＤSnapshotによって、仮想時刻をフリーラン・カウンタ値１５２に関連付ける基準時点が設けられる。言い換えれば、仮想ＲＴＣオフセット（ｖＲＴＣOFFSET）を、次式を用いて決定することができる。
ｖＲＴＣOFFSET＝ＴＯＤBase−ＴＯＤSnapshot
次いで、仮想ＲＴＣオフセットを使用して、次式によって、リモート・カウンタ１５２の現在の値（ＴＯＤCURRENT）から、現在の仮想ＲＴＣ値（ｖＲＴＣCURRENT）を計算することができる。
ｖＲＴＣCURRENT＝ＴＯＤCURRENT＋ｖＲＴＣOFFSET
【００３７】
しかし、リモート・カウンタ１５２は一般に、バッテリによるバックアップはなく、電源が切れているときは動作しない。したがって、電源の初期投入時に、リモート・カウンタ１５２の状態を定義することができない。そこで、リモート・カウンタ１５２をＴＯＤの基準値として使用できるように、電源が切れている間に、仮にリモート・カウンタ１５２が動作し続けていたとしら達するであろう推定値を生成するために、電源が入れ直された後、リモート・カウンタをまずＲＴＣ１５０に基づいて初期設定することができる。
【００３８】
リモート・カウンタ１５２のこうした推定値（ＴＯＤEST）は、基準時点をもたらす、ある既知の時刻におけるＲＴＣ１５０のスナップショット値（ＲＴＣSNAPSHOP）、およびリモート・カウンタ１５２のスナップショット値（ＴＯＤSNAPSHOT）と（これらの値は、ＩＰＬ時にパーティション・マネージャ１２０のディスパッチ可能部分１２２からアクセス可能な仮想ＲＴＣデータ１９２0として格納することができる）、ならびにＲＴＣ１５０の現在の値（ＲＴＣCURRENT）と、に基づいて計算することができる。たとえば、次式を用いてＴＯＤESTを計算することができる。
ＴＯＤEST＝ＴＯＤSNAPSHOT＋ＳＣＡＬＥ（ＲＴＣCURRENT−ＲＴＣSNAPSHOT）
先に示したように、リモート・カウンタ１５２およびＲＴＣ１５０は、異なる周波数で動作していることがあるので、まずＲＴＣ値をスケーリングすることが必要になり得る。実施形態によっては、たとえば、ＲＴＣ１５０が異なる値（年、日、時、秒など）を提供する場合、ＲＴＣ値を、リモート・カウンタ１５２と整合性のとれたフォーマットに変換することも必要になることがある。ともかく、パーティション・マネージャ１２０は、たとえばＩＰＬの後で、リモート・カウンタ１５２を、こうした推定値（ＴＯＤEST）に設定することができ、その結果、リモート・カウンタ１５２は、電源が切れている間も連続して動作していたように見えるようになる。したがって、リモート・カウンタ１５２に基づいて仮想リアルタイム・クロックを適切に維持することができる。
【００３９】
しかし、上述のように、サービス・プロセッサ１６０は、パーティション・マネージャ１２０の電源が切れているか、または十分な動作状態ではないときに、連続して動作することができ、また、ＲＴＣ１５０に対する変更を行えるようにし続けることができ、それによって、上述のＴＯＤ推定値が影響を受け、ＲＴＣSNAPSHOTによって設けられた時刻の基準が実際には無効になることがある。しかし、上述のように、こうした変更を、クロック・デルタ１９４（ΔCLOCK）に捕捉することができ、このクロック・デルタを使用して、次式によって、ＴＯＤ推定値を補償することができる。
ＴＯＤEST＝ＴＯＤSNAPSHOT＋ＳＣＡＬＥ（ＲＴＣCURRENT−ＲＴＣSNAPSHOT−ΔCLOCK）
言い換えれば、ＲＴＣ１５０に対する正の変更は、現在のＲＴＣ値から減算され（または負の変更は現在のＲＴＣ値に加算され）、それによって、リモート・カウンタ１５２の値は、電源が切れていた間に連続して動作していた場合と同じように推定される。この手法の１つの利点は、すべての論理パーティション１１０について、リモート・カウンタ１５２に基づく仮想ＲＴＣの計算値に対して、単一の値（リモート・カウンタ１５２）を調整することによって、ハードウェアＲＴＣ１５０の変更を補償できることである。
【００４０】
もちろん、リモート・カウンタ１５２を調整するのではなく、クロック・デルタ１９４を使用して、様々な他の技法に従って仮想ＲＴＣ計算値を補償することもできる。たとえば、ｖＲＴＣオフセット計算値を、クロック・デルタを用いて、次式によって、補償することができる。
ｖＲＴＣOFFSET＝ＴＯＤBase−ＴＯＤSnapshot−ＳＣＡＬＥ（ΔCLOCK）
別法では、クロック・デルタ１９４を用いて、ｖＲＴＣデータ１９２として格納されている実際の値のうちの１つを調整することができる。たとえば、ＩＰＬ時（または後）、パーティション・マネージャ１２０は、次式に従って図３に示した値のうちのいずれかを調整することができる。
ＴＯＤBaseNEW＝ＴＯＤBaseOLD−ＳＣＡＬＥ（ΔCLOCK）または
ＴＯＤSnapshotNEW＝ＴＯＤSnapshotOLD＋ＳＣＡＬＥ（ΔCLOCK）
どちらの値を調整しても、計算されたオフセットに対して同じ効果をもつ。もちろん、様々な異なるタイプの仮想リアルタイム・クロック実装について、類似のタイプの調整を、クロック・デルタ１９４に基づいて行うことができる。
【００４１】
個々の実装に関係なく、クロック・デルタ１９４に基づいて仮想ＲＴＣを調整した後、たとえばパーティション・マネージャ１２０によって、（図５のステップ４１０に示すように）クロック・デルタ１９４をクリアして、捕捉されたＲＴＣ１５０に対するどの１組の変更についても、仮想ＲＴＣは一度だけしか調整されないようにすることができる。さらに、実施形態によっては、１組の状態変数を永続的メモリ１９０に維持することができ、この１組の状態変数を用いて、周知の技法によって、仮想ＲＴＣ調整中に発生する可能性があるエラーからの回復を行うことができる。
【００４２】
［結論］
本発明の実施形態では、パーティション・マネージャが稼働していない間にハードウェアＲＴＣに対して行われる変更を追跡することによって、論理的に区分されたシステム内の仮想ＲＴＣの保全性が、電源オン・オフのサイクルを通して維持されるようになる。こうしたハードウェアＲＴＣに対する変更を、クロック・デルタ変数として捕捉することができ、この変数を使用して、一旦パーティション・マネージャが稼働した際に、仮想ＲＴＣを調整することができ、。それによって、パーティション・マネージャが稼働していない間に、ハードウェアＲＴＣに対する変更がいつ行われたとしても、ユーザがそれぞれのパーティションに対する仮想ＲＴＣを手動で再設定する必要なしに、望ましいレベルの保守容易性がもたらされることになる。
【００４３】
前述の内容は、本発明の実施形態を対象とするものであるが、その基本の範囲から逸脱せずに、本発明の他のおよび追加の実施形態を考案することができ、その範囲は、特許請求の範囲によって定められる。
【図面の簡単な説明】
【００４４】
【図１】例として使用される本発明による論理的に区分されたコンピュータ・システムの図である。
【図２】本発明の一実施形態のソフトウェア・コンポーネントの相関図である。
【図３】本発明の一実施形態による模範的な仮想リアルタイム・クロック・データ構造体を示す図である。
【図４】本発明の一実施形態による、サービス・プロセッサによって実施することができる模範的な処理を示すフローチャートである。
【図５】本発明の一実施形態による、パーティション・マネージャによって実施することができる模範的な処理を示すフローチャートである。
【符号の説明】
【００４５】
１００  コンピュータ・システム
１１０１  パーティション１
１１０Ｎ  パーティションＮ
１２０  パーティション・マネージャ
１２２  ディスパッチ可能部分
１２４  ディスパッチ不可能部分
１３０  システム・プロセッサ
１４０  システム・メモリ
１５０  リアルタイム・クロック
１５２  リモート・カウンタ
１６０  サービス・プロセッサ
１７０  未割当てリソース
１８０  ハードウェア管理コンソール（ＨＭＣ）
１９０  永続的メモリ
１９２  仮想ＲＴＣデータ
１９２0  仮想ＲＴＣデータ
１９２1  仮想ＲＴＣデータ
１９２N  仮想ＲＴＣデータ
１９４  クロック・デルタ
３００  処理
４００  処理
【図１】
2004318878.tif 000003
【図２】
2004318878.tif 000004
【図３】
2004318878.tif 000005
【図４】
2004318878.tif 000006
【図５】
2004318878.tif 000007