(57)【要約】【課題】  共通発振器に対してステップ実行される操作を実行するための時間基準を提供する、物理クロックを有するコンピュータ・システム用の時刻（ＴＯＤ）クロックをステアリングするための、システム、方法、およびコンピュータ・プログラムを提供すること。【解決手段】  この方法には、論理ＴＯＤクロック値（Ｔｂ）を取得するために物理クロック値（Ｔｒ）値に追加されることになるＴＯＤクロック・オフセット値（ｄ）を算出するステップが含まれ、論理ＴＯＤクロック値は発振器のステッピング・レートを調整せずに調整することができる。【選択図】  図１
2007080264.tif 000002
【特許請求の範囲】
【請求項１】
共通発振器に対してステップ実行される操作を実行するための時間基準を提供する、物理クロックを有するコンピュータ・システム用の時刻（ＴＯＤ）クロック・ステアリング装置であって、
論理ＴＯＤクロック値（Ｔｂ）を取得するために物理クロック値（Ｔｒ）値に追加されることになるＴＯＤクロック・オフセット値（ｄ）を算出するための手段を有し、前記論理ＴＯＤクロック値は前記発振器のステッピング・レートを調整せずに調整することが可能である、装置。
【請求項２】
前記ＴＯＤクロック・オフセット値（ｄ）は、
ｄ＝ｂ＋（Ｔｒ−ｓ）・ｒ
に従って算出され、上式で（ｂ）は（Ｔｒ）のビットと位置合わせされた基本オフセット値であり、（ｓ）は（Ｔｒ）のビットと位置合わせされた現在の開始時刻値であり、（ｒ）は現在のステアリング・レート値であって、前記ｓ、ｂ、およびｒの値がＴＯＤクロック・ステアリング調整値を定義する、請求項１に記載のＴＯＤクロック・ステアリング装置。
【請求項３】
前記現在のステアリング・レート値ｒが約２−４４倍にスケーリングされる、請求項２に記載のＴＯＤクロック・ステアリング装置。
【請求項４】
前記現在のｄ、ｓ、ｂ、およびｒの値を保持するためのＴＯＤクロック・ステアリング・レジスタを有する、請求項２に記載のＴＯＤクロック・ステアリング装置。
【請求項５】
前記コンピュータ・システムは複数の処理ユニットを有し、複数の処理ユニットそれぞれが前記共通発振器に対してステップ実行および同期化される関連する物理クロックを有し、各処理ユニットが前記ＴＯＤクロック・オフセット値（ｄ）を保持するためのＴＯＤクロック・オフセット・レジスタを含み、各処理ユニットが論理ＴＯＤクロック値を算出する、請求項４に記載のＴＯＤクロック・ステアリング装置。
【請求項６】
前記現在のステアリング・レート値ｒが微ステアリング・レート値（ｆ）および総ステアリング・レート値（ｇ）を有し、ｒ＝（ｆ）＋（ｇ）であり、前記ＴＯＤクロック・ステアリング・レジスタは前記ｇおよびｒの値を保持するためのものであり、前記微ステアリング・レート値は前記発振器内の不正確さを修正するために確立され、前記総ステアリング・レート値は他のイベントに応答してステアリング値を動的に修正するために確立される、請求項４に記載のＴＯＤクロック・ステアリング装置。
【請求項７】
前記ステアリング・レート値ｒへの変更を要求するための制御命令を発行するための制御手段をさらに有し、前記制御機能が対応するＴＯＤクロック・ステアリング・レジスタ内に新しいｓ、ｂ、ｆ、およびｇの値を入力する、請求項６に記載のＴＯＤクロック・ステアリング装置。
【請求項８】
さらに前記制御手段が、対応するＴＯＤクロック・ステアリング・レジスタから前記ｓ、ｂ、ｆ、およびｇの値を取得するための照会命令を発行する、請求項７に記載のＴＯＤクロック・ステアリング装置。
【請求項９】
更新の同期化を実行可能にする手段をさらに有し、各処理ユニットが論理ＴＯＤクロック値を算出し、各処理ユニットが新しい論理ＴＯＤクロック値の使用を同時に開始する、請求項５に記載のＴＯＤクロック・ステアリング装置。
【請求項１０】
ステアリング・レートが前記論理ＴＯＤクロックの負の方向のステアリングを可能にするものであり、前記装置が、それによって論理ＴＯＤクロック値の変更が単調に増加するＴＯＤオフセット・レジスタへの負の変更の適用後、処理ユニットに関する新しい論理ＴＯＤクロック値の使用を遅延させるための手段をさらに有し、前記手段が、ＣＰＵに少なくとも前記負の変更の量だけＴＯＤクロックの使用を遅延させなければならないように実行可能である、請求項５に記載のＴＯＤクロック・ステアリング装置。
【請求項１１】
共通発振器に対してステップ実行される操作を実行するための時間基準を提供する、物理クロックを有するコンピュータ・システム用の時刻（ＴＯＤ）クロックをステアリングする方法であって、
論理ＴＯＤクロック値（Ｔｂ）を取得するために物理クロック値（Ｔｒ）値に追加されることになるＴＯＤクロック・オフセット値（ｄ）を算出するステップを有し、前記論理ＴＯＤクロック値は前記発振器のステッピング・レートを調整せずに調整することが可能である、方法。
【請求項１２】
前記ＴＯＤクロック・オフセット値（ｄ）は、
ｄ＝ｂ＋（Ｔｒ−ｓ）・ｒ
に従って算出され、上式で（ｂ）は（Ｔｒ）のビットと位置合わせされた基本オフセット値であり、（ｓ）は（Ｔｒ）のビットと位置合わせされた現在の開始時刻値であり、（ｒ）は現在のステアリング・レート値であって、前記ｓ、ｂ、およびｒの値がＴＯＤクロック・ステアリング調整値を定義する、請求項１１に記載の方法。
【請求項１３】
前記現在のステアリング・レート値ｒが約２−４４倍にスケーリングされる、請求項１２に記載の方法。
【請求項１４】
前記現在のｄ、ｓ、ｂ、およびｒの値を保持するためのＴＯＤクロック・ステアリング・レジスタを提供するステップをさらに有する、請求項１２に記載の方法。
【請求項１５】
前記コンピュータ・システムは複数の処理ユニットを有し、複数の処理ユニットそれぞれが前記共通発振器に対してステップ実行および同期化される関連する物理クロックを有し、各処理ユニットが前記ＴＯＤクロック・オフセット値（ｄ）を保持するためのＴＯＤクロック・オフセット・レジスタを含み、論理ＴＯＤクロック値を算出する、請求項１４に記載の方法。
【請求項１６】
前記現在のステアリング・レート値ｒが微ステアリング・レート値（ｆ）および総ステアリング・レート値（ｇ）を有し、ｒ＝（ｆ）＋（ｇ）であり、前記ＴＯＤクロック・ステアリング・レジスタは前記ｇおよびｒの値を保持するためのものであり、前記微ステアリング・レート値は前記発振器内の不正確さを修正するために確立され、前記総ステアリング・レート値は他のイベントに応答してステアリング値を動的に修正するために確立される、請求項１４に記載の方法。
【請求項１７】
前記ステアリング・レート値ｒへの変更を要求するための制御命令を発行するステップをさらに有し、前記制御機能が対応するＴＯＤクロック・ステアリング・レジスタ内に新しいｓ、ｂ、ｆ、およびｇの値を入力する、請求項１６に記載の方法。
【請求項１８】
対応するＴＯＤクロック・ステアリング・レジスタから前記ｓ、ｂ、ｆ、およびｇの値を取得するための照会命令を発行するステップをさらに有する、請求項１７に記載の方法。
【請求項１９】
更新の同期化を実行可能にするステップをさらに有し、各処理ユニットが論理ＴＯＤクロック値を算出し、各処理ユニットが新しい論理ＴＯＤクロック値の使用を同時に開始する、請求項１５に記載の方法。
【請求項２０】
ステアリング・レートが前記論理ＴＯＤクロックの負の方向のステアリングを可能にするものであり、前記方法が、それによって論理ＴＯＤクロック値の変更が単調に増加するＴＯＤオフセット・レジスタへの負の変更の適用後、処理ユニットに関する新しい論理ＴＯＤクロック値の使用を遅延させるステップをさらに有し、前記ステップが、ＣＰＵに少なくとも前記負の変更の量だけＴＯＤクロックの使用を遅延させなければならないように実行可能である、請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータ・システムにおけるタイミング信号に関し、とりわけ、拡張タイミング精度のためにコンピュータ・システムにおける時刻（ＴＯＤ）クロックを調整するためのシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータ・システムにおいてシステム整合性およびデータ・リカバリを提供するために、譲受人のインターナショナル・ビジネス・マシンズ・コーポレーションから入手可能なｚＳｅｒｉｅｓ（登録商標）  ｅＳｅｒｖｅｒ（登録商標）などのメインフレーム・サーバ・デバイスは、ユニバーサル・タイムスタンプの概念を使用する。データベース・レコードが更新されるたびに、リカバリ・レコードも作成される。リカバリ・レコードは、データベース・レコードがロックされていた間に取得されたタイムスタンプを含む。すべてのスレッドについてのすべてのリカバリ・レコード・データ・セットからのリカバリ・レコードがタイムスタンプを使用して順番にソートされる場合、リカバリ・レコード内の残りの情報はデータベース・レコードを回復させるのに十分である。このためには、シスプレックス内のすべてのＴＯＤクロックが同じ時刻を有する必要がある。
【０００３】
これまで、タイミング・ネットワーク内のＴＯＤクロックは、外部ボックスである９０３７シスプレックス・タイマによって同期化された。９０３７タイミング・ネットワーク内の各中央演算処理複合システム（ＣＰＣ）は、そのＴＯＤクロックを９０３７からの信号にステップ実行（ｓｔｅｐ）した。９０３７によってブロードキャストされるステッピング信号は、９０３７から各ＣＰＣへの特別なＰｏｉｎｔ−ｔｏ−Ｐｏｉｎｔリンク（外部時刻参照（ＥＴＲ）リンク）を必要とした。ＥＴＲリンク上でのステッピング信号の正確な通信は、いかなる他の通信プロトコルとも異なる論理側の特別なプロトコルおよび物理信号レベルを必要とした。論理的に区分されたマシンの論理区画を同期化するためのＥＴＲオフセット値を実装する代表的なシステムについては、本願の所有者が所有する米国特許第６２０９１０６号に記載されている。
【０００４】
現在のクロック同期化ソリューションは、わずかに異なるレートでステップ実行されている（通常、距離的にかなり離れた）クロック（各クロックはローカル発振器を有する）の同期化に対処している。クロックの同期化のためのこれらのソリューションは、１）クロック間の相違（またはエラー）を検出するアクション、および２）エラーの関数として発振器の周波数またはステッピング・レートを調整するアクション、という２つのアクションを必要とする。
【０００５】
ステッピング信号を含まないタイミング・ソリューションを実装する、すなわち、タイミング情報がタイムスタンプおよび他のタイミング情報と共にメッセージによって送られるシステムの場合、各ＣＰＣは、オフセットを計算し、ＴＯＤクロックを調整するためのアクションを実行することによって、そのＴＯＤクロックの調子を他の残りのＣＰＣに合わせなければならない。これは、ＮＴＰ（ネットワーク・タイミング・プロトコル）によって実行されるアクションと同様であり、相違点としては、ＮＴＰは通常、タイムスタンプが制御プログラムによって生成可能なソフトウェア層で実装されることである。しかしながら、ｅＳｅｒｖｅｒ  ｚＳｅｒｉｅｓ（登録商標）アーキテクチャは、ＴＯＤクロックに関する非常に厳密な要件を有しており、何らかの問題のあるプログラムから見ても、すべてのタイムスタンプは異なるものでなければならず、たとえＣＰＣ内の異なるＣＰＵ上で実行しているプログラムから見た場合であっても、タイムスタンプは決して後退するものであってはならず、タイムスタンプは漸増するものでなければならない。新しいタイミング・ソリューションが必要とするＴＯＤクロックの調整を実行するためには、ＴＯＤクロックのステッピング・レートは非常に微細な調整によって加速または減速させなければならず、これらの調整はＣＰＣ内のすべてのＣＰＵによって同時に監視されなければならない。これは、ＴＯＤクロックの右端のビットまでのステッピング・パルス間の時間が、ＣＰＵ間のキャッシュ間転送時間と比較されるという事実により、重要である。したがって、１つのＣＰＵから見ればＴＯＤを最低の値しか変更していないとみなされる場合でも、ＣＰＣ内の他のＣＰＵから見ればそのＴＯＤクロックは、もはやＴＯＤクロックのアーキテクチャ要件に合致しなくなっている可能性がある。
【０００６】
代替のソリューションは、ＴＯＤステッピング・パルスを駆動している物理発振器のレートを調整することである。しかしながら、これには、１）このソリューションは旧式のマシンを改良できないこと、２）必要な（たとえば、１００万分の２（ｐｐｍ）より良い）確度を提供する技術が利用できないこと、３）こうした回路のテストが非常に困難であること、４）調整後の不連続性の問題（エラー後のクロックの再同期化）に対処していないこと、ならびに５）ｚ／ＯＳおよびＴＰＦ（トランザクション処理機構）以外のプラットフォームへの良好なインターフェースを提供していないこと、といういくつかの問題がある。
【０００７】
したがって、共通発振器ステッピング・パルスによってすべての物理クロックがすでに同期化されている、複数のＣＰＣを有する緊密に結合された共有ストレージ・マルチプロセッシング環境において、ＴＯＤクロックを調整するためのシステムおよび方法を提供することが強く望まれる。
【特許文献１】米国特許第６２０９１０６号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の一目的は、共通発振器ステッピング・パルスによってすべての物理クロックが同期化されている、緊密に結合された共有ストレージ・マルチプロセッシング環境（ＣＰＣ）を有するメインフレーム・サーバ・アーキテクチャに、新規な時刻（ＴＯＤ）クロックをステアリング（ｓｔｅｅｒｉｎｇ）する方法および装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明によれば、ＴＯＤクロックのステアリングにより、物理クロックをステップ実行する物理ハードウェア発振器を変更することなく、ＴＯＤクロックの明白なステッピング・レートを変更するための手段が提供される。これは、論理ＴＯＤクロック値を生成するために物理クロックに追加されるコンテンツを有する、ＴＯＤオフセット・レジスタによって実施される。好ましくは、ＴＯＤクロックの調整は、ハードウェア共有ストレージ内の共有場所によってデジタル方式で実行される。
【００１０】
したがって本発明によれば、共通発振器に対してステップ実行される操作を実行するための時間基準を提供する、物理クロックを有するコンピュータ・システム用の時刻（ＴＯＤ）クロックをステアリングするための、システム、方法、およびコンピュータ・プログラムが提供される。この方法には、論理ＴＯＤクロック値（Ｔｂ）を取得するために物理クロック値（Ｔｒ）値に追加されることになるＴＯＤクロック・オフセット値（ｄ）を算出するステップが含まれ、論理ＴＯＤクロック値は発振器のステッピング・レートを調整せずに調整することができる。
【００１１】
合計ステアリング・レートは、微（ｆｉｎｅ）ステアリング・レートおよび総（ｇｒｏｓｓ）ステアリング・レートという、２つの構成要素で構成される。微ステアリング・レートは、比較的長い期間にわたって安定しているローカル発振器内の不正確さを修正するために使用される。この値は、通常、ローカル発振器内の指定された許容範囲（典型的には、±２．０ｐｐｍ）より小さくなる。総ステアリング・レートは、すべての他の影響に対する動的修正として使用され、外部時間ソースおよびタイミング・ネットワーク内の他のクロックと同期させる際に最も優勢である。
【００１２】
この新規な装置および方法は、たとえ特定のＣＰＵが長期間遅延した場合でもクロック「ティック」が決して失われないように構築された数式を使用する。ＴＯＤクロック・ステアリングの最も精密な細部であっても決定および考慮の対象とするために、たとえ第２の実行レベルにある問題のプログラムでも許可するために、インターフェースが提供される。これらのプログラムは、ＴＯＤクロックがたとえば１００万分の４０でステアリングされている場合であっても、１００万分の１の何分の１もの確度でタイミング情報を取得することができる。
【００１３】
さらに、本発明の装置および方法は、１）すべての物理クロックが共通発振器に対してステップ実行され、同期化されることを提供し、２）ＴＯＤオフセット更新イベントの発生を示すためのハードウェア生成信号を提供する。一実施形態例では、これは、各ＣＰＵ内の物理クロックのビット位置の「けた上げ（ｃａｒｒｙ）」によってトリガすることが可能であり、３）現在のステアリング・パラメータをすべてのＣＰＵに送信する。これは、好ましくは、ステアリング・パラメータを変更するために更新がインターロックされた共有ストレージと、オーバヘッドを最低にするためにすべてのプロセッサによる読み取り専用アクセスによって実施され、４）これがオフセットを更新し、厳密な瞬間に適用される、デジタル値を算出するための数式を実装する。この数式は、たとえＣＰＵが長期間スリープ状態になっても値が失われないことを保証するものである。
【００１４】
当業者であれば、添付の図面と組み合わせて以下の詳細な説明を読むことで、本発明の目的、特徴、および利点が明らかとなろう。
【発明を実施するための最良の形態】
【００１５】
本発明は、共通発振器ステッピング・パルスによってすべての物理クロックがすでに同期化された、緊密に結合された共有ストレージ・マルチプロセッシング環境（ＣＰＣ）を有するメインフレーム・サーバ・アーキテクチャのための、時刻（ＴＯＤ）クロック・ステアリングの方法および装置を対象とするものである。
【００１６】
図１は、本発明が実装されたシステム１０を示す図である。システムは、ＣＰＵ＿１、ＣＰＵ＿２、・・・、ＣＰＵ＿Ｎとラベル表示された複数のＣＰＵを有する、本明細書では中央演算処理複合システム（ＣＰＣ）と呼ばれるｚＳｅｒｉｅｓ（登録商標）ｅＳｅｒｖｅｒを含む。ＣＰＣはマスタ・クロック１５を有し、各ＣＰＵはスレーブ物理クロック２０ａ、２０ｂ、・・・、２０ｎを有する。スレーブ物理クロックは、従来技術で周知の手段によってマスタ・クロックと同じ値に設定される。マスタ・クロック１５およびすべてのスレーブ物理クロック２０ａ、２０ｂ、・・・、２０ｎは、発振器１８によって生成された同じステッピング信号（「ｓ」とラベル表示）によってステップ実行される。例示された一実施形態では、各ＣＰＵはスレーブ物理クロック（「Ｔｒ」とラベル表示）に加えて、オフセット・レジスタ（「ｄ」とラベル表示）、基本マシン論理ＴＯＤクロック（「Ｔｂ」とラベル表示）、命令アドレス・レジスタ（「ＩＡ」とラベル表示）、および１６の汎用レジスタ（ＧＲ０〜ＧＲ１５とラベル表示）も有する。図に示されるように、ＣＰＵ＿１、ＣＰＵ＿２、・・・、ＣＰＵ＿Ｎはそれぞれ、プログラムが利用可能な主ストレージ域２６と、サブチャネル情報、ＣＰＵ間通信、暗号バッファ・キュー、測定情報などに関して「隠れて（ｕｎｄｅｒ  ｔｈｅ  ｃｏｖｅｒｓ）」使用されるように区分けされた小さな部分であるハードウェア・ストレージ域２７とを含む、共通ストレージ・デバイス２５を共有する。
【００１７】
周知のように、ＣＰＣは、単一のＣＰＣ内に複数のシステム・イメージを確立することができる論理区分化に適合される。論理区分化（ＬＰＡＲ）構造２８は図１に示されており、それぞれのシステム・イメージは、別々のコンピュータ・システムであるかのように動作可能であり、独立にリセットし、オペレーティング・システム（各論理区画によって異なる）がロードされ、異なるＩ／Ｏデバイスを使用する異なるソフトウェア・プログラムで動作することが可能であるものとして表されている。さらに、図２を参照しながらより詳細に説明するように、各区画はそれ独自の論理区画クロック「Ｔｐ」を有する。図１に示された各ＬＰＡＲ構造は、レジスタ（ＰＳＷ、ＧＲ、ＦＰＲなど）、使用されるストレージ域、およびＬＰＡＲのためのインターセプトに関する制御を指定するための、すべての情報を含む状態記述によって論理的に表される。ＬＰＡＲ専用システムの出現で、ハードウェア・ストレージ域２７はＬＰＡＲハイパーバイザに使用される共有ストレージの一部となった。さらに図１のシステムには、旧エピソード開始時刻（ｏｌｄ．ｓ）、旧エピソード基本オフセット（ｏｌｄ．ｂ）、旧エピソード微ステアリング（ｏｌｄ．ｆ）、旧エピソード総ステアリング（ｏｌｄ．ｇ）、新エピソード開始時刻（ｎｅｗ．ｓ）、新エピソード基本オフセット（ｎｅｗ．ｂ）、新エピソード微ステアリング（ｎｅｗ．ｆ）、および新エピソード総ステアリング（ｎｅｗ．ｇ）を含むが、これらに限定されることのない、クロック・ステアリング値を格納するための「ＴＯＤクロック・ステアリング・レジスタ」を含むステアリング制御２９も示されている。これらのクロック・ステアリング・レジスタ値について、図２に関して本明細書でさらに詳細に説明する。
【００１８】
本発明によれば、ＴＯＤクロック・ステアリングは、物理クロックＴｒをステップ実行する物理ハードウェア発振器を変更することなく、ＴＯＤクロックＴｂの明白なステッピング・レートを変更するための手段を提供する。これは、論理ＴＯＤクロック値を生成するために物理クロックＴｒに追加される、ＴＯＤオフセット・レジスタｄによって実施される。
【００１９】
ＴＯＤオフセット・レジスタｄは、名目上、現在の合計ステアリング・レート「ｒ」と呼ばれ、ＴＯＤオフセット・レジスタのビット６４〜９５と位置合わせされた、３２ビット符号付き値を追加することによって、マイクロ秒ごとに更新される、たとえばビット０〜９５などのビットからなる。この追加では、ＴＯＤオフセット・レジスタのビット位置０からのけた上げがあっても無視される。より高いかまたはより低いレゾリューションを有するモデルでは、ＴＯＤオフセット・レジスタの変更レートがマイクロ秒ごとにｒがビット位置６４〜９５に追加されたのと同じであるような周波数で、および適切に位置合わせされたｒで、追加が実行される。
【００２０】
いくつかのサーバ（ＣＰＣ）アーキテクチャでは、ＴＯＤオフセット・レジスタｄは６４ビット未満とすることが可能であり、数式を使用して定期的に更新されることを理解されよう。この数式は公称レートと等価の結果を生成し、たとえマシンの動作が長期間中断される場合でも、更新が決して失われないように設計される。通常の動作では、プログラムから見て、その影響が均一なステッピング・レートと区別が付かないほどの十分な頻度で、更新が実行される。
【００２１】
本明細書でより詳細に説明するように、ＴＯＤクロック・ステアリングには、機能コードおよびパラメータ・ブロックの指定を含む、半特権命令ＰＥＲＦＯＲＭ  ＴＩＭＩＮＧ  ＦＡＣＩＬＩＴＹ  ＦＵＮＣＴＩＯＮ（ＰＴＦＦ）が含まれる。ＴＯＤクロック・ステアリングには、論理区画用構造内に制御ビットを有する、解釈的な実行制御である「タイミング機構実行制御」も含まれる。第１のレベル状態記述内にあるこのビットが１の場合、その論理区画内のスーパーバイザ・プログラムは４つのＰＴＦＦ制御機能のうちの３つをインターセプトなしに実行できる。
【００２２】
前述のようにＴＯＤクロック・ステアリングは、タイミング機構制御プログラムが、ＴＯＤクロックの明白なステッピング・レートを調整できるようにする。ステッピング・レートは、２４４分の１の精度で、±約１００万分の１２２（ｐｐｍ）まで調整可能である（１日あたり約４．９ナノ秒）。ステッピング・レートは非破壊的様式で変更可能であり、すなわちアプリケーション・プログラムは、変更される場合、構成内でプログラムへのごくわずかな影響で実行可能である。
【００２３】
合計ステアリング・レートは、微ステアリング・レートおよび総ステアリング・レートという、２つの構成要素で構成される。微ステアリング・レートは、比較的長い期間にわたって安定しているローカル発振器内の不正確さを修正するために使用される。この値は通常、ローカル発振器の指定された許容範囲（典型的には、±２．０ｐｐｍ）よりも小さくなり、変化はまれに（およそ１日に１回から１週間に１回）発生し、変化は小さい（典型的には、±０．２ｐｐｍ）。
【００２４】
総ステアリング・レートは、すべての他の影響に対する動的修正として使用され、外部時間ソースおよびタイミング・ネットワーク内の他のクロックと同期させる際に最も優勢である。この値は、通常頻繁に（およそ１秒に１回から１分に１回）変更され、値は±１０ｐｐｍより大きい範囲である可能性がある。
【００２５】
微ステアリング・レートおよび総ステアリング・レートは、タイミング機構制御プログラムによって様々な目的に使用されるが、クロック調整アルゴリズムではこれらの構成要素は交換可能なものとして取り扱われる。３２ビットの微ステアリング・レート（ｆ）が３２ビットの総ステアリング・レート（ｇ）に追加されて３２ビットの現在の合計ステアリング・レート（ｒ）が形成され、この追加では、ビット位置０からのけた上げがあったとしても無視される。ＴＯＤクロック・ステアリングには、１）微ステアリング・レートの設定、２）総ステアリング・レートの設定、３）ＴＯＤオフセットの調整、および４）ＴＯＤオフセットの設定という、タイミング機構制御プログラムによって発行される４つの制御機能が含まれる。微ステアリング・レート設定および総ステアリング・レート設定の機能は、それぞれ微ステアリング・レートおよび総ステアリング・レートのレジスタ上で動作し、論理ＴＯＤクロック内にいかなる不連続性も発生させることなく発行可能である。これらの機能は、タイミング機構制御プログラムのみが使用可能であるが、特別な許可があれば論理区画内で実行中のテスト・プログラムが使用することができる。
【００２６】
基本マシン・レベルで動作する場合、ＴＯＤオフセット設定およびＴＯＤオフセット調整の機能は論理ＴＯＤクロックＴｂを任意の値に設定することができるが、不連続性を伴う。これらの機能は、初期設定、テスト、および特別なエラー状況でのみタイミング機構制御プログラムによって使用されることを意図している。論理区画および仮想マシン・レベルで動作する場合、ＴＯＤオフセット設定機能はスーパーバイザ状態で発行されるとインターセプトを発生させ、状態記述中のＴＯＤエポック差を要求された値に設定するための機能は、ハイパーバイザによってエミュレートすることができる。特別な許可を得て論理区画内で実行中のプログラムの場合、ＴＯＤオフセット設定およびＴＯＤオフセット調整の機能は、異なるレジスタをターゲットとする。ＴＯＤオフセット設定機能はハイパーバイザによってエミュレートされ、前述のようにＴＯＤエポック差で動作する。ＴＯＤオフセット調整機能はＴＯＤオフセット・レジスタで動作し、インターセプトなしにマシンによって実行される。
【００２７】
ＴＯＤクロック・ステアリングには、タイミング機構制御プログラムによってのみでなく、ＴＯＤクロックの品質を決定するために問題プログラムによっても使用される可能性のある、いくつかの照会機能も含まれる。
【００２８】
図２は、ステアリングを含むＴＯＤクロック動作の概要を示す図である。ＴＯＤクロック・ステアリングは、開始時刻（ｓ）、基本オフセット（ｂ）、およびステアリング・レート（ｒ）の、３つの値によって実施される。これら３つの値を使用してＴＯＤオフセット（ｄ）が算出され、これが物理クロック（Ｔｒ）に追加されて基本マシンＴＯＤクロック（Ｔｂ）を形成する。開始時刻（ｓ）および基本オフセット（ｂ）は６４ビットの符号なし２進整数であり、ＴＯＤクロックのビット０〜６３と位置合わせされるとみなされる。ステアリング・レートは３２ビットの符号付き２進固定小数点値であり、本発明の一実施形態に従って２−４４倍にスケーリングされるとみなされる。以下の公式は、物理クロック（Ｔｒ）、現在開始時刻（ｓ）、現在基本オフセット（ｂ）、および現在合計ステアリング・レート（ｒ）からの、ＴＯＤオフセット（ｄ）および基本マシンＴＯＤクロック（Ｔｂ）の導出を示す。
ｄ＝ｂ＋（Ｔｒ−ｓ）・ｒ・２−４４
Ｔｂ＝Ｔｒ＋ｄ
【００２９】
ステアリングは、図２に示されるように、論理区画ＴＯＤクロック（Ｔｐ）および仮想マシンＴＯＤクロック（Ｔｖ）にも適用される。
【００３０】
動作時に、ＴＯＤオフセット（ｄ）は連続して計算されるのではなく、定期的に更新される。この更新は、本明細書ではＴＯＤオフセット更新イベントと呼ばれ、物理クロックのビット位置からのけた上げによってトリガされる。ビット位置はモデルによって異なるが、通常のステアリング・レートの場合、連続するＴＯＤオフセット更新イベントによってＴＯＤオフセット（ｄ）用に算出された値間の差異がＴＯＤクロックのレゾリューションよりも少なくなるように選択される。
【００３１】
３つの値、ｓ、ｂ、およびｒは、無制限に適用可能な線形ステアリング調整を定義する。これらの値が変更されずに適用される期間は、エピソードと呼ばれる。タイミング機構制御プログラムがステアリング・レートの変更を要求した場合は必ず、マシンは新しいエピソードが将来有効となるようにスケジューリングする。平滑な移行を提供するために、マシンは新しいエピソードの開始時刻が次のＴＯＤオフセット更新イベント時となるようにスケジューリングし、新しい値が有効になる時点でＴＯＤオフセットの値に不連続性がなくなるように新しい基本オフセットを算出する。
【００３２】
マシンは、新エピソード開始時刻（ｎｅｗ．ｓ）、新エピソード基本オフセット（ｎｅｗ．ｂ）、新エピソード微ステアリング・レート（ｎｅｗ．ｆ）、および新エピソード総ステアリング・レート（ｎｅｗ．ｇ）と呼ばれる特別なレジスタ内に新しい値を配置し、これら４つのレジスタの以前のコンテンツは、それぞれ旧エピソード開始時刻（ｏｌｄ．ｓ）、旧エピソード基本オフセット（ｏｌｄ．ｂ）、旧エピソード微ステアリング・レート（ｏｌｄ．ｆ）、および旧エピソード総ステアリング・レート（ｏｌｄ．ｇ）と呼ばれるレジスタ内に配置することによって保存される。マシンは、物理クロックが新エピソード開始時刻（ｎｅｗ．ｓ）に達するまで、旧エピソード用の値を使用し続け、その後、自動的に新しいエピソード用の値を使用するように切り替える。任意の特定時点で使用中のレジスタが、現在開始時刻（ｓ）、現在基本オフセット（ｂ）、および現在合計ステアリング・レート（ｒ）と呼ばれる。これらはまとめて、現在エピソード・レジスタと呼ばれる。
【００３３】
図３は、ＴＯＤクロック・ステアリング・レジスタおよびそれらの対応するビット値を要約した図である。すべてのＴＯＤクロック・ステアリング・レジスタのコンテンツは、電源オン・リセットによってゼロに初期設定される。
【００３４】
現在開始時刻（ｓ）
マシンが旧エピソードで動作している場合、現在開始時刻は旧エピソード開始時刻（ｏｌｄ．ｓ）から取得され、新エピソードの場合は新エピソード開始時刻（ｎｅｗ．ｓ）から取得される。現在開始時刻（ｓ）は６４ビットの符号なし２進整数であり、ＴＯＤクロックのビット０〜６３と位置合わせされるものとみなされる。ステアリング調整の計算では、物理クロック（Ｔｒ）の値から現在開始時刻（ｓ）を引いて、６４ビット符号なし差（Ｔｒ−ｓ）を形成する。この減算中、ビット位置０からの借り（またはけた上げ）は無視される。
【００３５】
現在基本オフセット（ｂ）
マシンが旧エピソードで動作している場合、現在基本オフセットは旧エピソード基本オフセット（ｏｌｄ．ｂ）から取得され、新エピソードの場合は新エピソード基本オフセット（ｎｅｗ．ｂ）から取得される。現在基本オフセット（ｂ）は６４ビットの符号なし２進整数であり、ＴＯＤクロックのビット０〜６３と位置合わせされるものとみなされる。
【００３６】
現在ステアリング・レート（ｆ、ｇ、ｒ）
マシンが旧エピソードで動作している場合、現在微ステアリング・レート（ｆ）および現在総ステアリング・レート（ｇ）は、それぞれ旧エピソードの微ステアリング・レート（ｏｌｄ．ｆ）および総ステアリング・レート（ｏｌｄ．ｇ）から取得され、新エピソードの場合は、それぞれ新エピソードの微ステアリング・レート（ｎｅｗ．ｆ）および総ステアリング・レート（ｎｅｗ．ｇ）から取得される。現在合計ステアリング・レート（ｒ）は、現在微ステアリング・レート（ｆ）と現在総ステアリング・レート（ｇ）の合計から取得される。この加算では、ビット位置０からのけた上げがあっても無視される。現在合計ステアリング・レート（ｒ）は３２ビット符号付き２進固定小数点値であり、本発明の一実施形態に従って２−４４倍にスケーリングされるとみなされる。３２ビットの２進符号なし数として扱われる（ｒ）の絶対値に６４ビットの符号なし差（Ｔｒ−ｓ）を掛けて、９６ビットの符号なし２進積を形成し、これが４４桁だけ右にシフトされて５２ビットの中間結果が形成される。その後、左側に１２のゼロが付加されて、６４ビットの調整値が形成される。ｒがゼロの場合、現在基本オフセットがＴＯＤオフセットとして直接使用され、乗算は不要である。ｒが正の場合、調整値を現在基本オフセット（ｂ）に加えてＴＯＤオフセット（ｄ）が形成され、ｒが負の場合、現在基本オフセット（ｂ）から調整値を引いてＴＯＤオフセット（ｄ）が形成される。この加算（または減算）中に発生するけた上げ（または借り）は無視される。ｒが負の場合、単一のエピソード内でＴＯＤオフセット更新イベントが発生するたびに、マシンは、現在ＴＯＤオフセット（ｄ）を計算した後、プログラムから見て論理ＴＯＤクロックが前進するように見えることを保証するのに十分な長さだけ遅延することによって、インターロックを提供する。
【００３７】
ステアリング・レートのビット０および３１は、それぞれ−２−１３および２−４４のステアリング・レートを表すことを理解されたい。したがって、１００万分の±１２２のステアリング・レート（１日あたり１０．５秒）を、１日あたり４．９ナノ秒の精度で指定することができる。
【００３８】
ＴＯＤオフセット（ｄ）
ＴＯＤオフセットは、ＴＯＤクロックのビット０〜６３と位置合わせされた６４ビット値である。６４ビットの符号なし２進値として扱われるＴＯＤオフセットのコンテンツが物理クロックに追加され、基本マシンＴＯＤクロックが取得される。この追加では、ビット位置０からのけた上げがあっても無視される。モデルによって、ＴＯＤクロックのレゾリューションを超えたビットに対応するＴＯＤオフセットの右端のビットを実装せずに、ゼロとして扱うことができる。
【００３９】
ＰＥＲＦＯＲＭ  ＴＩＭＩＮＧ  ＦＡＣＩＬＩＴＹ  ＦＵＮＣＴＩＯＮ
システムは、汎用レジスタ内の機能コードによって指定された、いくつかのタイミング機構機能を実装する。機能の結果、すなわち、要求された機能が実行されたこと、または要求された機能が使用不可であることを示すように、状況コードが設定される。他の汎用レジスタは、ストレージ内にパラメータ・ブロックのアドレスを含む。１）パラメータ・ブロック内に情報を配置するＰＴＦＦ照会機能、および２）パラメータ・ブロックから取得した情報を使用するＰＴＦＦ制御機能という、２タイプのＰＥＲＦＯＲＭ  ＴＩＭＩＮＧ  ＦＡＣＩＬＩＴＹ  ＦＵＮＣＴＩＯＮ（ＰＴＦＦ）機能が実装される。あるビット位置、たとえば汎用レジスタのビット位置５７〜６３は、機能コードを含む。図４は、割り当てられた機能コードを示す。他の汎用レジスタは、ストレージ内にパラメータ・ブロックの左端バイトの論理アドレスを含む。ＰＥＲＦＯＲＭ  ＴＩＭＩＮＧ  ＦＡＣＩＬＩＴＹ  ＦＵＮＣＴＩＯＮの機能コードは、以下のように提供される。
【表１】
2007080264.tif 000003
【００４０】
次に、本発明の実装に使用される機能を示す擬似コード・サブルーチンの例を示す。これらは、簡略にするためおよびこれらを呼び出す機能の共通部分を示すために、サブルーチンとして記載される。実装によって、共通サブルーチンではなく、機能を必要とする各ルーチン内でコードが複製される場合がある。
【００４１】
サブルーチンの説明では、本発明に従って実装されたハードウェア・レジスタに関する記号を示す図４を参照するが、そのサブセットは図１に示されている。図４では、接尾語ｒ、ｂ、ｐ、およびｖはそれぞれ、実、基本マシン、論理区画、および仮想マシンを表す。論理ＴＯＤクロック・レジスタＴｂは、ハードウェア内には直接提供されないが、本明細書に記載された擬似ルーチンに記載されたようにシミュレートされる。クロック・コンパレータ・レジスタＣＣｂは、ハードウェア・ストレージ域内に維持され、本明細書に記載された擬似コード・ルーチンに記載されたようにＣＣｒを使用してシミュレートされる。ＣＰＵタイマのＣＴｒおよびＣＴｂは同じレジスタを実装するが、どちらの記号も、図４に示された２つの列内の他方のエントリとの整合性のために示される。ＴＯＤクロック同期制御レジスタＹｂ、基本マシンＴＯＤクロック同期制御は、ＳＥＴ  ＣＬＯＣＫ（ＳＣＫ）命令を発行しているプログラムから見てクロックを制御する。したがって、ＬＰＡＲハイパーバイザがＳＣＫを発行した場合、Ｙｂが適用される。
【００４２】
次に、本明細書に記載された擬似ルーチンを説明する際に使用される他の記号を要約する。
【００４３】
［］    ビット選択。たとえばＴｒ［０：４１］は、物理クロックのビット０〜４１が使用されることを示す
ａｂｓ（ｒ）    ｒの絶対値
‖    連結。たとえば、Ｔｖ［０：５７］‖ｐａ６は、６４ビット値を形成するために、仮想マシンＴＯＤクロックの５８ビットが６ビット・プロセッサ・アドレスと連結されることを示す
０ｂ１１１    ３つの１ビットのフィールド
０ｂ１１１１    ４つの１ビットのフィールド
ｄ    ＴＯＤオフセット・レジスタ（各ＣＰＵで実装される）
ｏｐ２    ＳＣＫ、ＳＴＣＫ、ＳＴＣＫＥ、ＳＣＫＣ、ＳＴＣＫＣ、ＳＰＴ、またはＳＴＰＴの第２オペランド
ｐａ６    ６ビットのプロセッサ・アドレス
ｐａｘ    プロセッサ・アドレスを含む４０ビットの非ゼロ・フィールド
ｐｒ    基本マシンＴＯＤプログラム可能レジスタの１６ビットの右半分
ｒ    現在の合計ステアリング・レートを示す３２ビットの符号付き２進整数
ＳＤＢ    ステアリング・インターフェース・データ・ブロック。ＳＤＢのコンテンツにはｏｌｄ．ｓ、ｏｌｄ．ｂ、ｏｌｄ．ｆ、ｏｌｄ．ｇ、ｎｅｗ．ｓ、ｎｅｗ．ｂ、ｎｅｗ．ｆ、およびｎｅｗ．ｇが含まれる。
ｔ１    擬似コード・ルーチンの始めの、物理クロックの上位ビット（０：４１または０：５７）を含む６４ビットのタイムスタンプ
ｔ２    擬似コード・ルーチンの終わりの、物理クロックの上位ビット（０：４１または０：５７）を含む６４ビットのタイムスタンプ（ｔ２＞ｔ１の場合、ルーチンが結局は完了しなかったことを示すので、擬似コードはループする）
ｔｃｓ    ゲストの論理クロックが開始する場合のハイパーバイザ論理時間
ｖ４１    ビット位置４１における１の６４ビット値。したがって、ＴＯＤクロック形式ではビット位置４２からのけた上がりの時間値を表す
ｚ（ｎ）    ｎゼロ・ビットのフィールド。たとえばｚ（８）はゼロの８ビット・フィールド
【００４４】
ＰＴＦＦ−ＱＡＦ（使用可能機能照会）
ＰＴＦＦ−ＱＡＦ（使用可能機能照会）機能は、他の機能の可用度を示す手段を提供する。ＰＴＦＦ−ＱＡＦの擬似コード記述は以下のように提供される。
【数１】
2007080264.tif 000004
【００４５】
ＰＴＦＦ−ＱＴＯ（ＴＯＤオフセット照会）
この機能に使用されるパラメータ・ブロックは、直近のＴＯＤオフセット更新イベント時の物理クロックの値である６４ビットの物理クロック値（ｐｂ．Ｔｕ）を含む値を戻す。戻される６４ビットのＴＯＤオフセット値（ｐｂ．ｄ）は、ＴＯＤオフセット（ｄ）の値を示す。戻される６４ビットの論理ＴＯＤオフセット値（ｐｂ．ｄｌ）は、Ｔｃ（現在レベルのＣＰＵ実行に関する論理ＴＯＤクロック）を取得するためにＴｒ（物理クロック）に追加される現在の値を示し、戻される６４ビットのＴＯＤエポック差値（ｐｂ．ｅｄ）は、現在レベルのＣＰＵ実行に関するＴＯＤエポック差である。ＰＴＦＦ−ＱＴＯの擬似コード記述は以下のように提供される。
【数２】
2007080264.tif 000005
【００４６】
ＰＴＦＦ−ＱＳＩ（ステアリング情報照会）
この機能に使用されるパラメータ・ブロックは、直近のＴＯＤオフセット更新イベント時の物理クロックの値である６４ビットの物理クロック値（ｐｂ．Ｔｕ）を含む値を戻す。残りのフィールドは、旧エピソードおよび新エピソードのレジスタの値である。ＰＴＦＦ−ＱＳＩの擬似コード記述は以下のように提供される。
【数３】
2007080264.tif 000006
【００４７】
ＰＴＦＦ−ＱＰＴ（物理クロック照会）
この機能に使用されるパラメータ・ブロックは、物理クロックの現在値である６４ビットの物理クロック値（ｐｂ．Ｔｒ）を含む値を戻す。ＰＴＦＦ−ＱＰＴの擬似コード記述は以下のように提供される。
【数４】
2007080264.tif 000007
【００４８】
ＰＴＦＦ−ＡＴＯ（ＴＯＤオフセット調整）
この機能に使用されるパラメータ・ブロックは、符号なし２進値として扱われ、次のエピソードの基本オフセットに追加される、６４ビット値（ｐｂ．ａ）を提供する。この追加では、ビット位置０からのけた上げがあっても無視される。次のエピソードがすでにスケジューリングされており、まだアクティブになっていない場合、ｎｅｗ．ｂがｐｂ．ａとｎｅｗ．ｂとの合計に置き換えられ、他のアクションは実行されない。次のエピソードがスケジューリングされていない場合、新エピソード・レジスタは旧エピソード・レジスタ内に保存され、新エピソードがスケジューリングされる。新エピソード開始時刻（ｎｅｗ．ｓ）は、次のＴＯＤオフセット更新イベント時の物理クロックの値となる値に設定され、新エピソード基本オフセット（ｎｅｗ．ｂ）は、ｐｂ．ａと、現在のステアリング・パラメータを使用して算出された、それと同じインスタント時のＴＯＤオフセットの値であったであろう値との合計に設定される。
【００４９】
ステアリング・レートはこの機能によって変更されず、新エピソードがスケジューリングされている場合、新エピソードの微ステアリングおよび総ステアリングのレートは現在の値と同じである。ＴＯＤオフセット調整機能の実行は、ＴＯＤオフセット・レジスタのコンテンツ全体が、構成内のすべてのＣＰＵから見て一斉かつ同時に更新されるように見えるようにインターロックされる。しかしながら、構成内のＣＰＵによる論理ＴＯＤクロックへのアクセスは人為的に遅延されないため、大規模な符号なし調整値を追加すると負の変更の効果を及ぼす可能性があり、論理ＴＯＤクロックが後退するように見える可能性がある。ＰＴＦＦ−ＡＴＯの擬似コード記述は以下のように提供される。
【数５】
2007080264.tif 000008
【００５０】
ＰＴＦＦ−ＳＴＯ（ＴＯＤオフセット設定）
この機能に使用されるパラメータ・ブロックは、ＴＯＤオフセットを置き換える６４ビット値（ｐｂ．ｄ）を提供する。基本マシン・レベルで発行された場合、次のエピソードがすでにスケジューリングされており、まだアクティブでなければ、ｐｂ．ｄはｎｅｗ．ｂを置き換え、他のアクションは実行されない。次のエピソードがスケジューリングされていない場合、新エピソード・レジスタは旧エピソード・レジスタ内に保存され、新エピソードがスケジューリングされる。新エピソード開始時刻（ｎｅｗ．ｓ）は、物理クロックが次のＴＯＤオフセット更新イベント時の物理クロックの値となる値に設定され、新エピソード基本オフセット（ｎｅｗ．ｂ）は、ｐｂ．ｄの値に設定される。ステアリング・レートはこの機能によって変更されず、新エピソードがスケジューリングされている場合、新エピソードの微ステアリングおよび総ステアリングのレートは現在の値と同じである。論理区画または仮想マシン・レベルで発行された場合、この機能はハイパーバイザによってシミュレート可能であり、ＣＰＵ実行の現在のレベル（それぞれＤｐまたはＤｖ）に関するＴＯＤエポック差で動作し、新エピソードはスケジューリングされず、変更は即時有効となる。ＴＯＤオフセット設定機能の実行は、ＴＯＤオフセット・レジスタのコンテンツ全体が、構成内のすべてのＣＰＵから見て一斉かつ同時に更新されるように見えるようにインターロックされる。しかしながら、構成内のＣＰＵによる論理ＴＯＤクロックへのアクセスは人為的に遅延されないため、ＴＯＤオフセットを小さな値に置き換えると、論理ＴＯＤクロックが後退するように見える可能性がある。ＰＴＦＦ−ＳＴＯの擬似コード記述は以下のように提供される。
【数６】
2007080264.tif 000009
【００５１】
ＰＴＦＦ−ＳＦＳ（微ステアリング・レート設定）
この機能に使用されるパラメータ・ブロックは、次のエピソードの微ステアリング・レートとなる３２ビット値（ｐｂ．ｆ）を提供する。次のエピソードが既にスケジューリングされており、まだアクティブになっていない場合、ｐｂ．ｆはｎｅｗ．ｆを置き換え、他のアクションは実行されない。次のエピソードがスケジューリングされていない場合、新エピソード・レジスタは旧エピソード・レジスタ内に保存され、新エピソードがスケジューリングされる。新エピソード開始時刻（ｎｅｗ．ｓ）は次のＴＯＤオフセット更新イベント時に物理クロックの値となる値に設定され、新エピソード基本オフセット（ｎｅｗ．ｂ）は、現在のステアリング・パラメータを使用して算出された、それと同じインスタント時のＴＯＤオフセットの値となる値に設定される。新エピソード微ステアリング・レート（ｎｅｗ．ｆ）はｐｂ．ｆに設定され、新エピソード総ステアリング・レートは現在値と同じである。新エピソードが有効になると、構成内のＣＰＵによる論理ＴＯＤクロックへのアクセスは、すべてのプログラムから見て論理ＴＯＤクロックが一意であり、単調に増加しているように見えることを保証するようにインターロックされる。ＰＴＦＦ−ＳＦＳの擬似コード記述は以下のように提供される。
【数７】
2007080264.tif 000010
【００５２】
ＰＴＦＦ−ＳＧＳ（総ステアリング・レート設定）
この機能に使用されるパラメータ・ブロックは、次のエピソードの総ステアリング・レートとなる３２ビット値（ｐｂ．ｇ）を提供する。次のエピソードが既にスケジューリングされており、まだアクティブになっていない場合、ｐｂ．ｇはｎｅｗ．ｇを置き換え、他のアクションは実行されない。
【００５３】
次のエピソードがスケジューリングされていない場合、新エピソード・レジスタは旧エピソード・レジスタ内に保存され、新エピソードがスケジューリングされる。新エピソード開始時刻（ｎｅｗ．ｓ）は次のＴＯＤオフセット更新イベント時に物理クロックの値となる値に設定され、新エピソード基本オフセット（ｎｅｗ．ｂ）は、現在のステアリング・パラメータを使用して算出された、それと同じインスタント時のＴＯＤオフセットの値となる値に設定される。新エピソード総ステアリング・レート（ｎｅｗ．ｇ）はｐｂ．ｇに設定され、新エピソード微ステアリング・レートは現在値と同じである。新エピソードが有効になると、構成内のＣＰＵによる論理ＴＯＤクロックへのアクセスは、すべてのプログラムから見て論理ＴＯＤクロックが一意であり、単調に増加しているように見えることを保証するようにインターロックされる。ＰＴＦＦ−ＳＧＳの擬似コード記述は以下のように提供される。
【数８】
2007080264.tif 000011
【００５４】
ＴＯＤクロック・ステアリング
本発明の一実施形態によれば、ステアリング・パラメータは、読み取り専用オペレーションによる書き込みアクセスを必要としないインターロック・メカニズムを使用して更新しなければならない。これは特に、ＴＯＤオフセット更新イベント用に実装される。このイベントは、たとえば１０２４マイクロ秒ごとなど定期的にあらゆるＣＰＵで同時に発生し、各ＣＰＵが情報のロックを試みるとオーバヘッドが極端に大きくなる。
【００５５】
概念上、現在の合計ステアリング・レート（ｒ）のビット０：３１は、マイクロ秒ごとに１回（すなわち、物理クロックのビット位置５２からビット位置５１へのけた上げが発生するごとに）、ＴＯＤオフセット（ｄ）への拡張のビット６４：９５に追加される。このアーキテクチャにより、結果として生じる効果が本質的に同じであれば、追加のために適切に位置合わせされた物理クロックの異なる位置からのけた上げを使用することによって、実装はこの更新をそれほど頻繁に実行しなくてもよくなる。具体的に言えば、このアーキテクチャでは、ビット位置はモデルによって異なるが、通常のステアリング・レートの場合、連続するＴＯＤオフセット更新イベントによってＴＯＤオフセット（ｄ）用に算出された値間の差異がＴＯＤクロックのレゾリューションよりも少なくなるように選択される必要がある。
【００５６】
たとえば、ＴＯＤクロック・レゾリューションがビット位置５７にあり、ＴＯＤオフセット更新イベントがビット位置４１へのけた上げによってトリガされる場合、通常のステアリング・レートが１６ｐｐｍ未満であればアーキテクチャ要件に合致する。発振器が±２ｐｐｍとなるように指定された場合、通常のステアリング・レートは１６ｐｐｍよりかなり小さいはずである。この例では、物理クロックのビット４２からのけた上げが使用されるものと想定されるが、このビット位置からのけた上げは実装に応じて構成可能である。けた上げは、物理クロックのビット位置４２からビット位置４１へ、たとえば１０２４マイクロ秒ごとまたはほぼミリ秒ごとなど、定期的に伝搬される。ステアリング・パラメータの更新は、このけた上げ実行の周辺で実装される。
【００５７】
現在エピソード・パラメータ算出（ｃｃｅｐ）への擬似コード・サブルーチン
このサブルーチンは、ＴＯＤオフセット更新イベントおよびＴＯＤオフセット照会機能のための擬似コードによって呼び出される。このサブルーチンは、直近のＴＯＤオフセット更新イベント（ｔ１）の時刻および時刻ｔ１のオフセット（ｄｃ）を算出して戻す。さらにサブルーチンは、現在のエピソード・レジスタである、現在の開始時刻（ｓ）、現在の基本オフセット（ｂ）、現在の微ステアリング・レート（ｆ）、現在の総ステアリング・レート（ｇ）、および現在の合計ステアリング・レート（ｒ）も戻す。
【数９】
2007080264.tif 000012
【００５８】
新エピソード・パラメータ算出（ｃｎｅｐ）への擬似コード・サブルーチン
このサブルーチンは、ＴＯＤオフセット調整、ＴＯＤオフセット設定、微ステアリング・レート設定、および総ステアリング・レート設置の、４つのＰＴＦＦ制御機能すべての擬似コードによって呼び出される。サブルーチンは、新エピソードがアクティブかどうかをチェックする。現在時刻が新エピソード開始時刻（ｎｅｗ．ｓ）よりも前であれば、新エピソードはまだアクティブでなく（現在エピソードは旧エピソードである）、他のアクションは不要である。現在時刻がｎｅｗ．ｓよりも後または同じであれば、新エピソードはアクティブであり（現在エピソードは新エピソードである）、現在エピソード・フィールド（ｎｅｗ．ｓ、ｎｅｗ．ｂ、ｎｅｗ．ｆ、およびｎｅｗ．ｇ）は旧エピソード・フィールド内に配置され、新開始時刻（ｎｅｗ．ｓ）および新基本オフセット（ｎｅｗ．ｂ）用に新しい値が算出される。サブルーチンはビット位置４１における１の６４ビット値である値ｖ４１を使用するので、ＴＯＤクロック形式でのビット位置４２からのけた上げの時間値を表す。
【数１０】
2007080264.tif 000013
【００５９】
基本マシン・クロック・コンパレータ更新（ｂｍｃｃｕ）のための擬似コード・サブルーチン
このサブルーチンは、ＴＯＤオフセット更新イベント、基本マシンＳＥＴ  ＣＬＯＣＫ  ＣＯＭＰＡＲＡＴＯＲ、および基本マシン・クロック・コンパレータ割り込みのための擬似コードによって呼び出される。ルーチンは、物理クロックおよび基本マシンＴＯＤクロックの異なるレートを補償するために、物理クロック・コンパレータを調整する。ルーチンは、現在の合計ステアリング・レート（ｒ）が負の場合に対しても保護する。この場合、物理クロックは論理ＴＯＤクロックよりも高速で実行され、物理クロック・コンパレータ割り込みが早期に発生する。ルーチンはこれを、基本マシンＴＯＤクロック値（Ｔｂ）と基本マシン・クロック・コンパレータ（ＣＣｂ）とを比較することによってチェックする。Ｔｂ＞ＣＣｂの場合、基本マシン・クロック・コンパレータ割り込みが実行されるはずであり、これは物理クロック・コンパレータをゼロに設定することで実施される。Ｔｂ＝ＣＣｂおよび（Ｔｂ−ｄ）＝（ＣＣｂ−ｄ）の場合、折り返しはなく、物理クロック・コンパレータ値（ＣＣｒ）は再計算される。Ｔｂ＝ＣＣｂおよび（Ｔｂ−ｄ）＞（ＣＣｂ−ｄ）の場合、折り返しがある。物理クロック・コンパレータ値（ＣＣｒ）はすべて１に設定される（擬似コード記述では−１として示される）。これによりエクスポージャ（ｅｘｐｏｓｕｒｅ）が作成され、クロック・コンパレータ割り込みは今後も決して実行されないため、基本マシンＴＯＤクロックは基本マシン・クロック・コンパレータよりも大きくなる。
【数１１】
2007080264.tif 000014
【００６０】
ＴＯＤオフセット更新イベントのための擬似コード
図５は、ＴＯＤオフセット・レジスタを更新するための実装の詳細を示す図である。実装の一例では、物理クロックのビット位置４２からビット位置４１へのけた上げが伝搬されるごとに、いずれかの論理ＴＯＤクロックを使用する前に、ハードウェア・ストレージ域内のステアリング・パラメータからＴＯＤオフセット・レジスタを更新しなければならない。次に、そのＣＰＵ内のＴＯＤオフセット・レジスタを更新するために構成内のあらゆるＣＰＵで実行されるアクションを示す、擬似コード表現を提供する。
【数１２】
2007080264.tif 000015
【００６１】
基本マシン・クロック・コンパレータ割り込みのための擬似コード
このルーチンは、基本マシン・クロック・コンパレータ割り込みを実行する直前に実行される。このルーチンは、現在の合計ステアリング・レート（ｒ）が負である場合に対して保護する。この場合、物理クロックは論理ＴＯＤクロックよりも高速で実行され、物理クロック・コンパレータ割り込みが早期に発生する。割り込みがまだであれば、基本マシン・クロック・コンパレータ更新のためのサブルーチンが呼び出される。
【数１３】
2007080264.tif 000016
【００６２】
ＳＴＯＲＥ  ＣＬＯＣＫ（ＳＴＣＫ）、ＳＴＯＲＥ  ＣＬＯＣＫ  ＥＸＴＥＮＤＥＤ（ＳＴＣＫＥ）、ＳＥＴ  ＣＬＯＣＫ（ＳＣＫ）、ＳＥＴ  ＣＬＯＣＫ  ＣＯＭＰＡＲＡＴＯＲ（ＳＣＫＣ）、ＳＥＴ  ＣＰＵ  ＴＩＭＥＲ（ＳＰＴ）、ＳＴＯＲＥ  ＣＬＯＣＫ  ＣＯＭＰＡＲＡＴＯＲ（ＳＴＣＫＣ）、およびＳＴＯＲＥ  ＣＰＵ  ＴＩＭＥＲ（ＳＴＰＴ）のタイミング命令を処理するためのコードを表す、以下の擬似コードが提供される。
【表２】
2007080264.tif 000017
【数１４】
2007080264.tif 000018
【数１５】
2007080264.tif 000019
【数１６】
2007080264.tif 000020
【数１７】
2007080264.tif 000021
【００６３】
ＴＯＤクロック同期化
ＣＰＵそれ自体が理解しているように、ＴＯＤクロックのステアリングはＴＯＤクロック内に観察可能な不連続性を導入するものであってはならず、特に、クロックが後退しているように見える、あるいは１行に同じ値を２回生成してはならない。論理ＴＯＤクロックが単調に増加しているように見えることを保証するために、以下でより詳細に説明するように、負のデルタを印加した後、ＣＰＵはＴＯＤクロックを使用して少なくともデルタ量だけ遅延しなければならない。
【００６４】
より困難な要件には、ＣＰＵ間の対話が含まれる。すべてのＣＰＵは、変更が正であるか負であるかにかかわらず、クロック・オフセット内の任意の変更の使用をほぼ同時に開始しなければならない。例では、たった１クロック・ティックの差であっても、同時に適用されなかった場合、問題プログラムによって検出されてしまうことがわかる。
【００６５】
ケース０に示されたような通常のオペレーションを使用して、最良ケースのＣＰＵ間クロック転送時間と呼ばれる値が定義される。ケース１およびケース２は、それぞれ、可能な最小の正デルタまたは負デルタの導入を示すものである。例では、正および負の変更が本質的に同じ問題を発生させること、および実質的なソリューションがすべてのＣＰＵで更新を同時に認識することのみであることを示す。更新の同期化は、あらゆるＣＰＵにまったく同時に新しい値の使用を開始するよう要求することによって解決される。この瞬間がＴＯＤオフセット更新イベントと呼ばれ、物理クロックの特定のビット位置からのけた上げが発生するとトリガされる。アーキテクチャは、選択されるビット位置がモデルによって異なることを提示している。一実施形態では、物理クロックのビット位置４２からビット位置４１へのけた上げが使用される。
【００６６】
単一ＣＰＵの場合のＴＯＤオフセット・レジスタへの負の変更
以下の図は、ＴＯＤオフセット・レジスタへの負の変更の一例を示す。
【表３】
2007080264.tif 000022
【００６７】
各行に、物理クロック、ＴＯＤオフセット・レジスタ、および論理ＴＯＤクロックの、ビット４２〜５７のスナップショットが示されている。スナップショットは、物理クロックがたとえばビット５７などの特定のビット位置でティックするごとに取られる。
【００６８】
表に示された例では、図示されていない現在の合計ステアリング・レートが負の最大値であると想定されるため、ビット位置０が１で、その後はすべて０である。１行目（ティック番号０）は、ビット４２からのけた上げが発生する直前の最後のティック時の物理クロックを示す。この桁上げによって、論理ＴＯＤクロックが後退しているように見せるＴＯＤオフセット・レジスタ内に新しい値が導入されることになる。これをプログラムに気付かれないようにするために、マシンはティック番号９の後までいかなる論理ＴＯＤクロック値も提供してはならない。この例では、ＴＯＤオフセット・レジスタ用の新しい値は、ティック番号１のスナップショットが取られるまでにすでに適用されている。実際の実装では、ＴＯＤオフセット・レジスタを更新するためのアクションには、これよりもかなりの時間がかかる可能性がある。表に示された例では、この更新にかかる時間が１２５ナノ秒（好ましい実施形態では約１６７  ＣＰＵサイクル）未満の場合、マシンはこのように長い時間が経過するまで、クロックの使用を遅延しなければならない。
【００６９】
複数ＣＰＵの場合のＴＯＤクロック同期化
一般性をそれほど喪失することなく、すべての複数ＣＰＵのＴＯＤクロック同期化障害は以下の単一のケースに簡略化することができる。
【数１８】
2007080264.tif 000023
【００７０】
６０のＣＰＵを備えたマシンでは、たとえばＴＯＤクロック値のビット５８〜６３がＣＰＵ番号に置き換えられるため、ＴＯＤクロックのビット５７が右端のステッピング・ビットとなる。ＴＯＤクロックのビット５７は、１５．６２５ナノ秒ごとに増分するが、これは最良ケースのキャッシュ間転送時間（たとえば２２〜２４マシン・サイクル）よりもわずかに短いだけである。最も重大なケースは、第１のＣＰＵが第２のＣＰＵよりも大きいＣＰＵ番号を有する場合である。例ではこれを示すために、ＣＰＵｉおよびＣＰＵｊのＣＰＵ番号がそれぞれ５５および３３（８進数）であるように選択されている。以下の表では、ＴＯＤクロックのビット５８〜６０が時間の経過を示すように表されているが、これらのビットは物理クロックの一部ではない。
【００７１】
ケース０  −  オフセット変更なし、障害なし：表１は、オフセットが変更されていないケースでのＴＯＤクロックの適切なオペレーションを示す。
【表４】
2007080264.tif 000024
【００７２】
第１のＣＰＵでのＳＴＣＫのストア部分の実行時間に、第１のＣＰＵから第２のＣＰＵへの最良ケースのＣＰＵ間キャッシュ間転送時間を加え、第２のＣＰＵでのＳＴＣＫのＬＧおよびアクセス・クロック部分の実行時間を加えた合計が、最良ケースのＣＰＵ間クロック転送時間と呼ばれる。ケース０の場合、正しいオペレーションを保証するためには、最良ケースのＣＰＵ間クロック転送時間が少なくとも１５．６２５ナノ秒でなければならない。これは、必要であれば、各ＣＰＵでのＳＴＣＫの実行時間を人為的に遅延させることで実施可能である。将来のハードウェアで必要となる確率の高い代替形態は、物理クロックのビット５８〜６３を実装することであり、マシンは、物理クロックのビット５８〜６３がこのＣＰＵのＣＰＵ番号と一致するまで、ＣＰＵ上のＳＴＣＫの実行を遅延させる。
【００７３】
ケース１  −  負のオフセット変更、障害あり：表２は、オフセットが１５．６２５ナノ秒（好ましい実施形態での負のステアリング・レートで可能な最小の変更）だけ減じられた場合のＴＯＤクロックの同期障害を示すものであり、この変更は２つのＣＰＵで同時に認識されない。（この障害は、アーキテクチャがすべてのＣＰＵに新しい値の使用を同時に開始させる必要があり、アーキテクチャが従わない場合にのみ発生する。）この例では、障害は、ＣＰＵ３３が新しい値の使用を開始し、ＣＰＵ５５が依然として古い値を使用している場合に発生する。（新しい値の使用の一部として、ＣＰＵ３３はすでに、ＣＰＵ自体から見て論理クロックが後退しているように見えないだけの長い期間遅延していることに留意されたい。）
【表５】
2007080264.tif 000025
【００７４】
ケース１の場合に正しく動作させるためには、最良ケースのＣＰＵ間クロック転送時間を少なくとも１５．６２５ナノ秒プラス変更の絶対量としなければならず、これは通常、好ましい実施形態のケースには当てはまらない。この例は、新しい値の使用を開始している２つのＣＰＵ間の時間が、最良ケースのＣＰＵ間クロック転送時間よりも長い場合、障害が発生する可能性があることを示す。古い値を使用しているＣＰＵがまだ変更に気付いていないため、新しい値を使用しているＣＰＵはすべてのＣＰＵが新しいオフセットに変更するまでＳＴＣＫのそれぞれの実行を遅延させなければならなくなり、これは既知の固定持続時間でない限り非実用的であることがわかる。
【００７５】
ケース２  −  正のオフセット変更、障害あり：表３は、オフセットが１５．６２５ナノ秒（好ましい実施形態での正のステアリング・レートで可能な最小の変更）だけ増加された場合のＴＯＤクロックの同期障害を示すものであり、この変更は２つのＣＰＵで同時に認識されない。（この障害は、アーキテクチャがすべてのＣＰＵに新しい値の使用を同時に開始させる必要があり、アーキテクチャが従わない場合にのみ発生する。）この例では、障害は、ＣＰＵ５５が新しい値の使用を開始し、ＣＰＵ３３が依然として古い値を使用している場合に発生する。
【表６】
2007080264.tif 000026
【００７６】
ケース２の場合に正しく動作させるためには、最良ケースのＣＰＵ間クロック転送時間を少なくとも１５．６２５ナノ秒プラス変更の絶対量としなければならず、これは通常、好ましい実施形態のケースには当てはまらない。この例は、新しい値の使用を開始している２つのＣＰＵ間の時間が、最良ケースのＣＰＵ間クロック転送時間よりも長い場合、障害が発生する可能性があることを示す。古い値を使用しているＣＰＵがまだ変更に気付いていないため、新しい値を使用しているＣＰＵはすべてのＣＰＵが新しいオフセットに変更するまでＳＴＣＫのそれぞれの実行を遅延させなければならなくなり、これは既知の固定持続時間でない限り非実用的であることがわかる。
【００７７】
以上、本発明について、本発明の諸実施形態に従った方法、装置（システム）、およびコンピュータ・プログラムの図を参照しながら説明してきた。各図は、コンピュータ・プログラム命令によって実装可能であることを理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータのプロセッサ、特定用途向けコンピュータ、埋め込み型プロセッサ、またはマシンを生成するための他のプログラム可能データ処理装置に提供することが可能であり、その結果、コンピュータのプロセッサまたは他のプログラム可能データ処理装置を介して実行される命令が、本明細書に指定された機能を実装するための手段を作成する。
【００７８】
これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置に対して特定の様式で機能するように指示することができるコンピュータ読み取り可能メモリ内に格納することも可能であり、その結果、コンピュータ読み取り可能メモリ内に格納された命令が、本明細書に指定された機能を実装する命令手段を含む製品を製造する。
【００７９】
コンピュータ・プログラム命令は、コンピュータ読み取り可能または他のプログラム可能なデータ処理装置にロードして、コンピュータ・実装・プロセスを生成するために一連のオペレーション・ステップをコンピュータまたは他のプログラム可能装置上で実行させることが可能であり、その結果、コンピュータまたは他のプログラム可能装置上で実行された命令が、本明細書に指定された機能を実装するためのステップを提供する。
【００８０】
本明細書に開示された発明は、前述の目的を満たすように首尾良く計算されていることは明らかであるが、当業者であれば様々な修正形態および実施形態を考案可能であり、添付の特許請求の範囲が、本発明の趣旨および範囲内にあるこうした修正形態および実施形態をすべてカバーするように意図されていることを理解されたい。
【図面の簡単な説明】
【００８１】
【図１】本発明が実装されたシステム１０を示す図である。
【図２】本発明の一実施形態に従ったＴＯＤクロック動作の概要を示す図である。
【図３】本発明の一実施形態に従って実装されたＴＯＤクロック・ステアリング・レジスタの要約を示す図である。
【図４】そのサブセットが図１に示された、本発明で実装されるハードウェア・レジスタを表す記号を示す図である。
【図５】ＴＯＤオフセット・レジスタの更新の詳細な実装を示す図である。
【符号の説明】
【００８２】
１０    システム
１５    マスタ・クロック
１８    発振器
２０ａ    ＣＰＵ  １
２０ｂ    ＣＰＵ  ２
２０ｎ    ＣＰＵ  Ｎ
２５    共有ストレージ
２６    主ストレージ域
２７    ハードウェア・ストレージ域
２８    ＬＰＡＲ  １構造
ＬＰＡＲ  ２構造
ＬＰＡＲ  Ｎ構造
２９    ステアリング制御
【図１】
2007080264.tif 000027
【図２】
2007080264.tif 000028
【図３】
2007080264.tif 000029
【図４】
2007080264.tif 000030
【図５】
2007080264.tif 000031