(57)【特許請求の範囲】
【請求項１】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
処理回路によって読み取り可能な、方法を実行するための命令を格納しているコンピュータ可読記憶媒体を備えており、前記方法が、
符号なし演算または符号付き演算のいずれが比較動作において使用されるかを判定するために使用されるクロック比較器符号制御を取得することと、
クロック比較器の値および時刻クロックの値の少なくとも一部の比較において前記クロック比較器符号制御を使用して、選択された動作が認識されるかどうかを判定することとを含んでいる、
コンピュータ・プログラム製品。
【請求項２】
前記比較において前記クロック比較器符号制御を前記使用することが、前記時刻クロックがオーバーフローしているかどうかに関わらず、前記選択された動作が認識されるかどうかを正確に示すことをもたらす、請求項１に記載のコンピュータ・プログラム製品。
【請求項３】
前記クロック比較器符号制御が第１の値に設定されていることに基づいて、符号なし２進演算が前記比較において使用され、前記第１の値が、さまざまなレベルでオペレーティング・システムに互換性を提供するためのデフォルト値である、請求項１に記載のコンピュータ・プログラム製品。
【請求項４】
前記クロック比較器符号制御が第２の値に設定されていることに基づいて、符号付き２進演算が前記比較において使用される、請求項３に記載のコンピュータ・プログラム製品。
【請求項５】
前記選択された動作が前記コンピューティング環境内の処理の割り込みである、請求項１に記載のコンピュータ・プログラム製品。
【請求項６】
前記クロック比較器があるサイズを有し、前記時刻クロックが、前記クロック比較器と異なるサイズを有する拡張された時刻クロックであり、前記時刻クロックがオーバーフローすることがある、請求項１に記載のコンピュータ・プログラム製品。
【請求項７】
前記クロック比較器符号制御が制御レジスタ内に配置される、請求項１に記載のコンピュータ・プログラム製品。
【請求項８】
前記クロック比較器がクロック比較器レジスタとして実装され、前記時刻クロックが時刻クロック・レジスタとして実装される、請求項１に記載のコンピュータ・プログラム製品。
【請求項９】
前記方法が、前記クロック比較器符号制御を使用して、前記時刻クロックの比較される部分における不連続性を構成するものを指定することをさらに含んでいる、請求項１に記載のコンピュータ・プログラム製品。
【請求項１０】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信するプロセッサとを備えており、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
符号なし演算または符号付き演算のいずれが比較動作において使用されるかを判定するために使用されるクロック比較器符号制御を取得することと、
クロック比較器の値および時刻クロックの値の少なくとも一部の比較において前記クロック比較器符号制御を使用して、選択された動作が認識されるかどうかを判定することとを含んでいる、
コンピュータ・システム。
【請求項１１】
前記比較において前記クロック比較器符号制御を前記使用することが、前記時刻クロックがオーバーフローしているかどうかに関わらず、前記選択された動作が認識されるかどうかを正確に示すことをもたらす、請求項１０に記載のコンピュータ・システム。
【請求項１２】
前記クロック比較器符号制御が第１の値に設定されていることに基づいて、符号なし２進演算が前記比較において使用され、前記第１の値が、さまざまなレベルでオペレーティング・システムに互換性を提供するためのデフォルト値である、請求項１０に記載のコンピュータ・システム。
【請求項１３】
前記クロック比較器符号制御が第２の値に設定されていることに基づいて、符号付き２進演算が前記比較において使用される、請求項１２に記載のコンピュータ・システム。
【請求項１４】
前記選択された動作が前記コンピューティング環境内の処理の割り込みである、請求項１０に記載のコンピュータ・システム。
【請求項１５】
前記クロック比較器があるサイズを有し、前記時刻クロックが、前記クロック比較器と異なるサイズを有する拡張された時刻クロックであり、前記時刻クロックがオーバーフローすることがある、請求項１０に記載のコンピュータ・システム。
【請求項１６】
コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法が、
プロセッサによって、符号なし演算または符号付き演算のいずれが比較動作において使用されるかを判定するために使用されるクロック比較器符号制御を取得することと、
クロック比較器の値および時刻クロックの値の少なくとも一部の比較において前記クロック比較器符号制御を使用して、選択された動作が認識されるかどうかを判定することとを含んでいる、
コンピュータ実装方法。
【請求項１７】
前記比較において前記クロック比較器符号制御を前記使用することが、前記時刻クロックがオーバーフローしているかどうかに関わらず、前記選択された動作が認識されるかどうかを正確に示すことをもたらす、請求項１６に記載のコンピュータ実装方法。
【請求項１８】
前記クロック比較器符号制御が第１の値に設定されていることに基づいて、符号なし２進演算が前記比較において使用され、前記第１の値が、さまざまなレベルでオペレーティング・システムに互換性を提供するためのデフォルト値である、請求項１６に記載のコンピュータ実装方法。
【請求項１９】
前記クロック比較器符号制御が第２の値に設定されていることに基づいて、符号付き２進演算が前記比較において使用される、請求項１８に記載のコンピュータ実装方法。
【請求項２０】
前記クロック比較器があるサイズを有し、前記時刻クロックが、前記クロック比較器と異なるサイズを有する拡張された時刻クロックであり、前記時刻クロックがオーバーフローすることがある、請求項１６に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
１つまたは複数の態様は、一般に、コンピューティング環境内の処理に関しており、特に、そのような処理を容易にすることに関している。
【背景技術】
【０００２】
コンピューティング環境は、多くの場合、その環境内の処理を制御するために使用されるタイミング機能を提供する。１つの例として、インターナショナル・ビジネス・マシーンズ社（ニューヨーク州アーモンク）によって提供されるメインフレームのプロセッサは、さまざまなハードウェア・タイミング・レジスタ、タイミング・レジスタを設定して検査するための命令、およびタイミング・レジスタ内の値がしきい値に達したときのための割り込み機構を含んでいるタイミング機能を実現する。
【０００３】
提供されることのあるレジスタの例は、時刻（ＴＯＤ：time-of-day）クロック・レジスタおよびクロック比較器レジスタである。クロック比較器レジスタは、時刻クロック・レジスタが特定の値に達することに基づいて、割り込みなどの動作が実行されるかどうかを判定するために使用される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】“z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-10, March 2015
【非特許文献２】“Power ISA(TM) Version 2.07B,” International Business Machines Corporation, April 9, 2015
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、クロック比較器符号制御を提供する。
【課題を解決するための手段】
【０００６】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。このコンピュータ・プログラム製品は、処理回路によって読み取り可能な、方法を実行するための命令を格納しているストレージ媒体を備える。この方法は、符号なし演算または符号付き演算のいずれが比較動作において使用されるかの判定に使用されるクロック比較器符号制御を取得することと、クロック比較器の値および時刻クロックの値の少なくとも一部の比較においてクロック比較器符号制御を使用して、選択された動作が認識されるかどうかを判定することとを含む。
【０００７】
比較においてクロック比較器符号制御を使用することは、時刻クロックがオーバーフローしているかどうかに関わらず、選択された動作が認識されるかどうかを正確に示すことをもたらす。
【０００８】
一実施形態では、クロック比較器符号制御が第１の値に設定されていることに基づいて、符号なし２進演算が比較において使用され、この第１の値は、さまざまなレベルでオペレーティング・システムに互換性を提供するためのデフォルト値である。さらに、一実施形態では、クロック比較器符号制御が第２の値に設定されていることに基づいて、符号付き２進演算が比較において使用される。
【０００９】
一例として、選択された動作は、コンピューティング環境内の処理の割り込みである。
【００１０】
さらに、１つの例では、クロック比較器があるサイズを有し、時刻クロックが、クロック比較器と異なるサイズを有する拡張された時刻クロックであり、この時刻クロックはオーバーフローすることがある。
【００１１】
例として、クロック比較器符号制御が制御レジスタ内に配置され、クロック比較器がクロック比較器レジスタとして実装されるか、または時刻クロックが時刻クロック・レジスタとして実装されるか、あるいはその両方が実装される。
【００１２】
さらに、１つの態様では、クロック比較器符号制御は、時刻クロックの比較される部分における不連続性を構成するものを指定するために使用される。
【００１３】
１つまたは複数の態様に関連するコンピュータ実装方法およびシステムも本明細書に記載され、請求される。さらに、１つまたは複数の態様に関連するサービスも本明細書に記載されており、請求されてよい。
【００１４】
その他の特徴および長所が、本明細書に記載された技術によって実現される。その他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
【００１５】
１つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。前述の内容、ならびに１つまたは複数の態様の目的、特徴、および長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【００１６】
【図１】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例を示す図である。
【図２】本発明の態様に従って、図１のプロセッサの詳細をさらに示す図である。
【図３】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。
【図４】図３のメモリの詳細をさらに示す図である。
【図５】本発明の態様に従って、時刻（ＴＯＤ）クロック・レジスタの一例を示す図である。
【図６】本発明の態様に従って使用される時刻クロック・レジスタの別の例を示す図である。
【図７】本発明の態様に従って使用されるクロック格納命令の一例を示す図である。
【図８】本発明の態様に従って、図７のクロック格納命令の結果の形式の一例を示す図である。
【図９】本発明の態様に従って使用されるクロック格納拡張命令の一例を示す図である。
【図１０】本発明の態様に従って、図９のクロック格納拡張命令の結果の形式の一例を示す図である。
【図１１】本発明の態様に従って使用されるクロック比較器レジスタの一例を示す図である。
【図１２】本発明の態様に従って使用される制御レジスタの一例を示す図である。
【図１３】本発明の態様に従って、クロック比較器設定命令の一例を示す図である。
【図１４】本発明の態様に従って、クロック比較器格納命令の一例を示す図である。
【図１５】本発明の態様に従って、クロック比較器符号制御に関連付けられた処理の一実施形態を示す図である。
【発明を実施するための形態】
【００１７】
本発明の態様に従って、コンピューティング環境内の処理を容易にするように、タイミング機能が強化される。例えば、コンピューティング環境内のタイミング情報の比較処理において使用される、クロック比較器符号制御が提供される。符号制御は、あるサイズ（例えば、６４ビット）のクロック比較器と、異なるサイズ（例えば、１０４ビット）の拡張形式の時刻（ＴＯＤ）クロックの少なくとも一部との比較を容易にし、ＴＯＤクロックがオーバーフローしているかどうかに関わらず、クロック比較器の割り込みなどの、認識される（場合によっては、実行される）動作を正確に示すために提供される。
【００１８】
本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一実施形態が、図１を参照して説明される。１つの例では、コンピューティング環境は、インターナショナル・ビジネス・マシーンズ社（ニューヨーク州アーモンク）によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づく。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の一実施形態は、“z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-10, March 2015に記載されており、この文献は本明細書において参照によってその全体が本明細書に組み込まれている。Ｚ／ＡＲＣＨＩＴＥＣＴＵＲＥは、インターナショナル・ビジネス・マシーンズ社（米国ニューヨーク州アーモンク）の登録商標である。
【００１９】
別の例では、コンピューティング環境は、インターナショナル・ビジネス・マシーンズ社（ニューヨーク州アーモンク）によって提供されるＰｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づく。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の一実施形態は、“Power ISATM Version 2.07B,”International Business Machines Corporation, April 9, 2015に記載されており、この文献は本明細書において参照によってその全体が本明細書に組み込まれている。ＰＯＷＥＲ  ＡＲＣＨＩＴＥＣＴＵＲＥは、インターナショナル・ビジネス・マシーンズ社（米国ニューヨーク州アーモンク）の登録商標である。
【００２０】
コンピューティング環境は、Ｉｎｔｅｌ  ｘ８６アーキテクチャを含むが、これに限定されない、他のアーキテクチャに基づいてもよい。その他の例も存在する。
【００２１】
図１に示されているように、コンピューティング環境１００は、例えば、汎用コンピューティング・デバイスの形態などで示されるコンピュータ・システム１０２を含んでいる。コンピュータ・システム１０２は、１つまたは複数のバスまたはその他の接続１１０あるいはその両方を介して互いに結合された、１つまたは複数のプロセッサまたはプロセッシング・ユニット１０４（例えば、中央処理装置（ＣＰＵ：central processing units））、メモリ１０６（例として、メイン・メモリまたはストレージと呼ばれる）、および１つまたは複数の入出力インターフェイス１０８を含んでよいが、これらに限定されない。
【００２２】
バス１１０は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、任意の複数の種類のバス構造のうちの１つまたは複数を表す。例として、そのようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）、ＭＣＡ（Micro Channel Architecture）、ＥＩＳＡ（Enhanced ISA）、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、およびＰＣＩ（Peripheral Component Interconnect）を含むが、これらに限定されない。
【００２３】
メモリ１０６は、例えば、プロセッサ１０４のローカル・キャッシュ１２２に結合されてよい、共有キャッシュなどのキャッシュ１２０を含んでよい。さらに、メモリ１０６は、１つまたは複数のプログラムまたはアプリケーション１３０、オペレーティング・システム１３２、および１つまたは複数のコンピュータ可読プログラム命令１３４を含んでよい。コンピュータ可読プログラム命令１３４は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【００２４】
コンピュータ・システム１０２は、例えばＩ／Ｏインターフェイス１０８を介して、１つまたは複数の外部デバイス１４０、１つまたは複数のネットワーク・インターフェイス１４２、または１つまたは複数のデータ・ストレージ・デバイス１４４、あるいはその組み合わせと通信してもよい。外部デバイスの例としては、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイなどが挙げられる。ネットワーク・インターフェイス１４２は、コンピュータ・システム１０２が、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、一般的な広域ネットワーク（ＷＡＮ：wide area network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組み合わせなどの１つまたは複数のネットワークと通信できるようにし、他のコンピューティング・デバイスまたはシステムとの通信を実現する。
【００２５】
データ・ストレージ・デバイス１４４（例えば、ディスク）は、１つまたは複数のプログラム１４６、１つまたは複数のコンピュータ可読プログラム命令１４８、またはデータ、あるいはその組み合わせなどを格納してよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【００２６】
コンピュータ・システム１０２は、取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であってよい。例えば、コンピュータ・システム１０２は、取り外し不可、不揮発性の磁気媒体（通常は、「ハード・ドライブ」と呼ばれる）、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、あるいはＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りまたは書き込みを行うための光ディスク・ドライブ、あるいはその組み合わせを含むか、またはこれらに結合されるか、あるいはその両方であってよい。その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム１０２と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【００２７】
コンピュータ・システム１０２は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用されてよい。コンピュータ・システム１０２での使用に適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例としては、パーソナル・コンピュータ（ＰＣ：personal computer）システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【００２８】
プロセッサ１０４の一例に関するさらなる詳細が、図２を参照して説明される。プロセッサ１０４は、命令を実行するために使用される複数の機能コンポーネントを含む。これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント１５０と、フェッチされた命令をデコードするため、およびデコードされた命令のオペランドを取得するための命令デコード・ユニット１５２と、デコードされた命令を実行するための命令実行コンポーネント１５４と、必要な場合に、命令を実行するためにメモリにアクセスするためのメモリ・アクセス・コンポーネント１５６と、実行された命令の結果を提供するための書き戻しコンポーネント１６０とを含む。これらのコンポーネントのうちの１つまたは複数は、本発明の態様に従って、下でさらに説明されているように、クロック機能１６６の１つまたは複数の命令を実行するために使用されてよい。
【００２９】
プロセッサ１０４は、一実施形態では、機能コンポーネントのうちの１つまたは複数によって使用される１つまたは複数のレジスタ１７０も含む。
【００３０】
１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態が、図３を参照して説明される。この例では、コンピューティング環境２００は、例えば、１つまたは複数のバス２０８またはその他の接続あるいはその両方などを介して互いに結合された、ネイティブ中央処理装置（ＣＰＵ）２０２、メモリ２０４、および１つまたは複数の入出力デバイスまたはインターフェイス２０６あるいはその両方を含む。例として、コンピューティング環境２００は、インターナショナル・ビジネス・マシーンズ社（ニューヨーク州アーモンク）によって提供されるＰｏｗｅｒＰＣ（Ｒ）プロセッサまたはｐＳｅｒｉｅｓ（Ｒ）サーバ、あるいはインターナショナル・ビジネス・マシーンズ社またはその他の企業によって提供されるアーキテクチャに基づくその他のマシン、あるいはその組み合わせを含んでよい。
【００３１】
ネイティブ中央処理装置２０２は、環境内で処理中に使用される１つまたは複数の汎用レジスタまたは１つまたは複数の専用レジスタあるいはその両方などの、１つまたは複数のネイティブ・レジスタ２１０を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
【００３２】
さらに、ネイティブ中央処理装置２０２は、メモリ２０４に格納された命令およびコードを実行する。１つの特定の例では、中央処理装置は、メモリ２０４に格納されたエミュレータ・コード２１２を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード２１２は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）以外のアーキテクチャに基づくマシン（ＰｏｗｅｒＰＣ（Ｒ）プロセッサ、ｐＳｅｒｉｅｓ（Ｒ）サーバ、あるいはその他のサーバまたはプロセッサなど）が、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）をエミュレートし、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいて開発されたソフトウェアおよび命令を実行できるようにする。
【００３３】
エミュレータ・コード２１２に関連するさらなる詳細が、図４を参照して説明される。メモリ２０４に格納されたゲスト命令２５０は、ネイティブＣＰＵ２０２のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された（例えば、マシン命令と相互関係がある）ソフトウェア命令を含む。例えば、ゲスト命令２５０は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）プロセッサ上で実行するように設計されてよいが、代わりに、例えばインテル・プロセッサであってよい、ネイティブＣＰＵ２０２上でエミュレートされる。１つの例では、エミュレータ・コード２１２は、メモリ２０４から１つまたは複数のゲスト命令２５０を取得するため、および取得された命令のローカル・バッファリングを必要に応じて提供するための命令フェッチ・ルーチン２５２を含む。エミュレータ・コード２１２は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、１つまたは複数の対応するネイティブ命令２５６に変換するための命令変換ルーチン２５４も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
【００３４】
さらに、エミュレータ・コード２１２は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン２６０を含む。エミュレーション制御ルーチン２６０は、ネイティブＣＰＵ２０２に、１つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令２５６の実行は、データをメモリ２０４からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、あるいは変換ルーチンによって決定された何らかの種類の算術演算または論理演算を実行することを含んでよい。
【００３５】
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置２０２によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの１つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組み合わせにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブＣＰＵのレジスタ２１０を使用して、またはメモリ２０４内の位置を使用することによって、エミュレートされてよい。実施形態では、ゲスト命令２５０、ネイティブ命令２５６、およびエミュレータ・コード２１２は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配されてよい。
【００３６】
本明細書において使用されているように、ファームウェアは、例えば、プロセッサのマイクロコードまたはミリコードあるいはその両方を含む。ファームウェアは、例えば、上位レベルの機械コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。一実施形態では、ファームウェアは、例えば、信頼できるソフトウェアを含んでいるマイクロコード、または基盤になるハードウェアに固有のマイクロコードとして通常は提供される、システムのハードウェアへのオペレーティング・システムのアクセスを制御する独自のコードを含む。
【００３７】
取得され、変換されて実行されるゲスト命令２５０は、例えば、本明細書に記載された命令のうちの１つである。あるアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ））の命令が、メモリからフェッチされ、変換され、別のアーキテクチャ（例えば、ＰｏｗｅｒＰＣ（Ｒ）、ｐＳｅｒｉｅｓ（Ｒ）、インテルなど）のネイティブ命令２５６のシーケンスとして表される。その後、これらのネイティブ命令が実行される。
【００３８】
本発明の態様に従って、本明細書に記載された環境またはその他の環境あるいはその両方のうちの１つまたは複数のプロセッサは、例えば、タイミング・レジスタ（例えば、ハードウェア・レジスタ）、タイミング・レジスタを設定して検査するための命令、およびタイミング・レジスタ内の値がしきい値に達したときのための割り込み機構を含んでいるタイミング機能を含む。そのような機能の例が、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）およびその前身を参照して説明されるが、本発明の態様は、その他のアーキテクチャに同様に適用可能である。
【００３９】
タイミング・レジスタの一例は、時刻（ＴＯＤ）クロック・レジスタであり、その例が図５に示されている。インターナショナル・ビジネス・マシーンズ社によって提供されるＳ／３７０（Ｒ）アーキテクチャ（約１９７０年頃）において最初に定義されたように、ＴＯＤクロック・レジスタ３００の内容は、６４ビット符号なし２進整数であり、そのビット位置５１（３０２）が１マイクロ秒ごとにインクリメントされる（ＩＢＭのメインフレーム・アーキテクチャでは、１つの例として、各ビットが左から右に昇順に番号付けされることに留意されたい）。この分解能を前提とすると、ビット０は約７１．３５年を表す。したがって、ＴＯＤクロック・レジスタにおいて考慮できる期間は約１４２．７年であり、この期間はエポックと呼ばれる。
【００４０】
１９９０年代後半において、例えばＩＢＭのシステム・アーキテクチャで使用するために、ＴＯＤクロック・レジスタのサイズを増やした、拡張されたＴＯＤクロック機能が導入された。図６に示されているように、ＴＯＤクロック・レジスタ３５０は、例えば１０４ビットに拡張される。この拡張によって、より正確な測定が可能になる（つまり、レジスタの右にビットが追加された）。ビット位置５１（３５２）は１マイクロ秒を引き続き表し、したがって、このレジスタの全期間は増えていない。
【００４１】
クロック格納（ＳＴＣＫ）命令が定義され、任意のアプリケーション・プログラムによってＴＯＤクロック・レジスタの左端の６４ビットを検査できるようにする（つまり、ＳＴＣＫを実行するために、特権は不要である）。一実施形態では、この命令は、ハードウェア／ソフトウェア・インターフェイスでの単一の設計されたマシン命令であってよい。
【００４２】
クロック格納命令の一例が、図７を参照して説明される。クロック格納命令４００は、クロック格納動作を示すオペコードを含んでいるオペレーション・コード（オペコード）フィールド４０２、ベース（Ｂ２）フィールド４０４、および変位（Ｄ２）フィールド４０６を含む。一実施形態では、この命令のフィールドは、互いに分離し、独立している。しかし、別の実施形態では、２つ以上のフィールドが結合されてよい。さらに、命令のフィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、下付きの２を含んでいるフィールドは第２のオペランドに関連付けられている。
【００４３】
１つの例として、Ｂ２４０４によって指定されたレジスタの内容は、下で説明されているように使用される第２のオペランドのアドレスを提供するために、Ｄ２４０６によって提供された値に追加される。
【００４４】
動作中に、１つの例では、クロックが例えば設定された状態、停止された状態、または設定されていない状態にあるという条件で、例えば、６４ビットのＴＯＤクロック３００のビット０〜６３の現在の値が、第２のオペランドのアドレスによって指定された８バイト・フィールドに格納される。これが図８に示されており、図８は、クロック格納命令の実行の結果４５２（すなわち、６４ビットのＴＯＤクロック値）の形式４５０を示している。
【００４５】
一実施形態では、クロックが停止されたときに、右端のビット位置の右の位置に０が格納され、この値は、クロックが実行されているときにインクリメントされる。クロック格納の場合、実行中のクロックの値が格納されるときに、右端のインクリメントされるビットの右の位置に、０以外の値が格納されてよく、これは、一意の値が格納されることを保証するためである。
【００４６】
一例として、例えばクロックがエラー状態にあるか、または動作可能な状態にないときに、オペランドの位置に０が格納される。
【００４７】
１つの例では、クロックの値がフェッチされる前にシリアライズ機能が実行され、この値がストレージに配置された後に、シリアライズ機能が再び実行される。
【００４８】
命令によって格納されたクロック値の品質は、その結果として得られた条件コードの設定によって示される。条件コードの例としては、０−設定された状態にあるクロック、１−設定されていない状態にあるクロック、２−エラー状態にあるクロック、および３−停止された状態にあるか、または動作可能な状態にないクロックが挙げられる。
【００４９】
さらに、例として、アクセス（格納、オペランド２）、およびトランザクション制約のプログラム例外が発生することがある。
【００５０】
一実施形態では、クロックのビット位置３１が１．０４８５７６秒ごとにインクリメントされ、したがって、人間の応答に関わるタイミング・アプリケーションの場合、左端のクロックのワードは、十分な分解能を提供できる。
【００５１】
さらに、条件コード０は、通常、クロックが制御プログラム（例えば、オペレーティング・システム）によって設定されていることを示す。したがって、この値は、経過時間の測定において使用されてよく、有効な時刻およびカレンダーの指示として使用されてよい。条件コード１は、クロック値が、クロックの電源がオンにされてからの経過時間であることを示す。この場合、この値は、経過時間の測定において使用されてよいが、有効な時刻の指示になることはできない。条件コード２および３は、一実施形態では、クロック格納によって提供される値が時間の測定にも指示にも使用されないということを意味する。
【００５２】
さらに、１つの例では、条件コード３は、クロックが停止された状態にあるか、または動作可能な状態にないことを示す。クロックが動作可能な状態にない場合、１つの例として、すべて０の値が格納されるため、これらの２つの状態は、通常、区別され得る。
【００５３】
拡張されたＴＯＤクロック・レジスタの場合、１０４ビットのＴＯＤクロック全体および（拡大の余裕を残して）ＴＯＤクロックの左の１バイトの０を格納する、クロック格納拡張（ＳＴＣＫＥ）命令が定義される。
【００５４】
クロック格納拡張命令の一例が、図９を参照して説明される。一実施形態では、この命令は、ハードウェア／ソフトウェア・インターフェイスでの単一の設計されたマシン命令であってよい。一例として、クロック格納拡張命令５００は、クロック格納拡張動作を示すオペコードを含んでいるオペレーション・コード（オペコード）フィールド５０２、ベース（Ｂ２）フィールド５０４、および変位（Ｄ２）フィールド５０６を含む。一実施形態では、この命令のフィールドは、互いに分離し、独立している。しかし、別の実施形態では、２つ以上のフィールドが結合されてよい。さらに、命令のフィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、下付きの２を含んでいる各フィールドは第２のオペランドに関連付けられている。
【００５５】
１つの例では、Ｂ２５０４によって指定されたレジスタの内容は、下で説明されているように使用される第２のオペランドのアドレスを提供するために、Ｄ２５０６によって提供された値に追加される。
【００５６】
図１０を参照すると、動作中に、例として、クロックが例えば設定された状態、停止された状態、または設定されていない状態にあるという条件で、ＴＯＤクロックのビット０〜１０３の現在の値が、第２のオペランドのアドレスによって指定された１６バイト・フィールド５５０のバイト位置１〜１３（５５４）に格納される。０がバイト位置０（５５２）に格納され、このバイト位置は拡張されたフィールドであり、本明細書においてさらに説明される、エポック・インデックス（ＥＸ）と呼ばれる。さらに、ＴＯＤプログラム可能フィールド（ＴＯＤプログラム可能レジスタのビット１６〜３１）の内容が、例として、バイト位置１４および１５（５５６）に格納される。
【００５７】
一実施形態では、クロックが停止されたときに、クロック値の右端のビット位置の右の位置に０が格納され、この値は、クロックが実行されているときにインクリメントされる。プログラム可能フィールドが格納されてもよい。
【００５８】
実行中のクロックの値が格納されるときに、クロックの例えばビット位置６４〜１０３（例えば、ストレージ・オペランドのビット位置７２〜１１１）の値は０以外であり、これによって、クロック格納拡張によって格納された値が、クロック格納によって格納されて０を付けて拡張された値と比較されたときに、一意であることを保証する。
【００５９】
一例として、クロックがエラー状態にあるか、または動作可能な状態にないときに、オペランドの位置に０が格納される。
【００６０】
１つの例では、クロックの値がフェッチされる前にシリアライズ機能が実行され、この値がストレージに配置された後に、シリアライズ機能が再び実行される。
【００６１】
命令によって格納されたクロック値の品質は、その結果として得られた条件コードの設定によって示される。条件コードの例としては、０−設定された状態にあるクロック、１−設定されていない状態にあるクロック、２−エラー状態にあるクロック、および３−停止された状態にあるか、または動作可能な状態にないクロックが挙げられる。
【００６２】
さらに、アクセス（格納、オペランド２）、およびトランザクション制約のプログラム例外が発生することがある。
【００６３】
一実施形態では、条件コード０は、通常、クロックが制御プログラムによって設定されていることを示す。したがって、この値は、経過時間の測定において使用されてよく、有効な時刻およびカレンダーの指示として使用されてよい。条件コード１は、クロック値が、クロックの電源がオンにされてからの経過時間であることを示す。この場合、この値は、経過時間の測定において使用されてよいが、有効な時刻の指示にはならない。条件コード２および３は、一実施形態では、クロック格納拡張によって提供される値が時間の測定にも指示にも使用されないということを意味する。
【００６４】
ＴＯＤクロック（拡張されているかどうかに関わらない）を使用しているオペレーティング・システムは、通常、すべて２進ゼロのＴＯＤクロック値が１９００年１月１日午前００：００：００時を表す規約を採用している。この規約は、標準エポックと呼ばれる期間を表す。標準エポックにおけるＴＯＤクロックの期間を前提として、クロックは、２０４２年９月１７日２３：５３：５７．３７０４９６国際原子時（ＴＡＩ：international atomic time）に、０に戻される。
【００６５】
ＴＯＤクロックに加えて、タイミング機能によって提供され、本発明の１つまたは複数の態様で使用される別のレジスタは、クロック比較器である。クロック比較器は、ＴＯＤクロックの値がプログラムによって指定された値を超えたときに、常に外部割り込みがプロセッサによって認識される（および発生し得る）ことを引き起こす手段を提供する。１つの例では、図１１に示されているように、クロック比較器レジスタ６００は、例えば６４ビットを含んでいる。構成内の各ＣＰＵは、１つの例では、クロック比較器レジスタを含み、このレジスタの形式は、ＴＯＤクロックのビット０〜６３と同じである。クロック比較器は、例として、クロック比較器設定命令と呼ばれる特権命令によって設定することができ、クロック比較器格納特権命令によって検査することができる。
【００６６】
１つの態様では、比較されるＴＯＤクロックの一部の値がクロック比較器レジスタの値よりも大きい場合、クロック比較器の割り込みの要求が存在してよい（ただし、クロックがエラー状態にあるか、または実行中の状態にない場合、特定の例外が適用される）。１つの例では、この比較は、符号なし２進演算を使用し、クロック比較器レジスタのすべてのビットを比較しなくてよいが、一実施形態では、少なくともビット０〜４７が比較される（他の実施形態では、さらに多いビットまたはさらに少ないビットが比較されてよい）。保留中のクロック比較器の割り込みが実際に発生するかどうかは、例えば、ＣＰＵがクロック比較器の外部割り込みに関して有効化されているかどうかによって決まる。この有効化は、１つの例では、次の２つの制御によって決定される。
【００６７】
１．外部割り込み（割り込みとも呼ばれる）は、制御レジスタ内の選択されたビット（プログラム状態ワード（ＰＳＷ：program status word）内のビット７など）によって有効化される。プログラム状態ワードは、状態レジスタおよびプログラム・カウンタの機能を実行する制御レジスタである。プログラム状態ワードは、条件コード、命令アドレス、およびその他の情報を含むが、これらに限定されない、プログラムを適切に実行するために使用される情報を含む。ビット７は、外部割り込みの有効化を示す。このビットが例えば１に設定された場合、外部割り込みが有効化される。
【００６８】
２．外部割り込みが有効化された場合、制御レジスタ（制御レジスタ０など）内の第２の制御の１ビットが、外部割り込みのクロック比較器サブクラスが有効化されているかどうかを決定する。
【００６９】
保留中のクロック比較器の割り込みは、クロック比較器レジスタを、ＴＯＤクロックの値以上の値に設定することによって、取り消されてよい。
【００７０】
現在、クロック格納拡張（ＳＴＣＫＥ）命令は、左端の８ビットの位置（図１０のＥＸフィールド５５２）に０を格納する。１９００年１月１日から開始する標準エポックを使用すると、ＴＯＤクロックは２０４２年９月１７日にオーバーフローする。そのようなオーバーフローが発生した場合、繰り上げが左に伝搬する。すなわち、エポック・インデックス（ＥＸ）フィールド５５２は、ＴＯＤクロックの論理的拡張であると考えられる。このようにして、ＥＸフィールドおよびＴＯＤクロック・フィールドが連結された場合、約３５，０００年の拡張されたエポックが提供される。
【００７１】
しかし、クロック比較器レジスタのサイズは増加していない。これによって、よりシンプルな回路が可能になるが、ＴＯＤクロックをクロック比較器の値と比較する方法という問題が提起される。前述した拡張では、ＴＯＤクロックが、単一のエポックより２５６倍大きい拡張されたエポックに対応できるが、クロック比較器が単一のエポックに制限される。
【００７２】
例えば、現在のＴＯＤクロックがオーバーフローに近くなっている（例えば、１６進数のＦＦＦＦＦＦＦＦ，００００００００を含んでいる）状況を考える。ビット位置５１が１マイクロ秒を表すため、ビット位置３１は１．０４８，５７６秒を表す。したがって、ＴＯＤクロックは、ちょうど１秒後にオーバーフローする。プログラムが、正確に２．０９７，１５２秒後に発生するようにクロック比較器を設定したい場合、プログラムは、１６進数の０００００００２，００００００００の値を現在のＴＯＤクロックに追加する。この追加の結果は１６進数の１，０００００００１，００００００００であるが、クロック比較器が、一実施形態では６４ビット値（この６４ビット値のビット位置は、ＴＯＤクロックのビット位置に対応する）のみに対応するため、繰り上げの結果が失われ、クロック比較器が１６進数の０００００００１，００００００００に設定される。このとき、符号なし２進演算のルールに従って、クロック比較器がＴＯＤクロック未満になるため、期待された事象が２秒間発生しない場合でも、クロック比較器の割り込みが直ちに保留になる。
【００７３】
したがって、本発明の態様に従って、ＴＯＤクロックがオーバーフローするかどうかに関わらず（すなわち、エポック・インデックスがＴＯＤクロックの論理的拡張になるかどうかに関わらず）、６４ビットのクロック比較器を拡張形式のＴＯＤクロックと共に使用する機能が提供される。１つの態様では、クロック比較器符号制御を定義する複数エポック機能（ＭＥＦ：multiple-epoch facility）が提供され、符号付きまたは符号なしのいずれかになるクロック比較器の比較を可能にする。クロック比較器符号制御は、オペレーティング・システムによって適切に使用された場合、ＴＯＤクロックの対応するビットがオーバーフローしているかどうかに関わらず、６４ビットのクロック比較器がクロック比較器の割り込みを正確に示すことができるようにする。一実施形態では、構成において複数エポック機能がインストールされた場合に、クロック比較器符号制御が使用可能になる。（ＭＥＦがエポック・インデックスを提供し、ＴＯＤクロックが、最大値に達したときに、オーバーフローして、このエポック・インデックスにあふれ出るということに留意されたい。しかし、クロック比較器符号制御は、エポック・インデックスとは無関係に動作する。）
【００７４】
一実施形態では、クロック比較器符号制御は、制御レジスタ内の１ビットとして実装される。例えば、図１２に示されているように、制御レジスタ０などの制御レジスタ７００は、クロック比較器符号制御７０２を含んでいる。特定の一実施形態では、クロック比較器符号制御７０２は、制御レジスタ０のビット１０であるが、その他の可能性も存在する。クロック比較器符号制御の意味は、１つの例では次のとおりである。
【００７５】
＊  ０＝比較が符号なし２進演算のルールに従う。
【００７６】
＊  １＝比較が符号付き２進演算のルールに従う。
【００７７】
１つの例では、制御レジスタ０のビット１０がすでに符号なしであり、デフォルトで０の値にリセットされたため、０の値を使用して符号なし比較を提供することによって、ＭＥＦを認識しない古いオペレーティング・システムが、ＭＥＦをサポートするマシン上で動作している場合でも、そのようなオペレーティング・システムとの互換性を保証する。
【００７８】
符号制御の使用についてさらに説明するために、上で引用された例が繰り返されるが、符号付き比較が実行されていると仮定する。
【００７９】
ＴＯＤクロック＝１６進数のＦＦＦＦＦＦＦＦ，００００００００
【００８０】
クロック比較器＝１６進数の０００００００１，００００００００
【００８１】
符号付き演算を使用しているとき、各値のビット０は符号ビットである。したがってＴＯＤクロックは、最初に、クロック比較器の正値未満の負値を含む。ＴＯＤクロックが十分な量だけ進んで、クロック比較器を超えた（例えば、０１，０００００００１，０００００１２３の値になった）と仮定する。ここで、左端のバイトはエポック・インデックスであり、比較に関与しない。そのため、このとき、ＴＯＤクロックの値（０００００００１，０００００１２３）がクロック比較器（０００００００１，００００００００）よりも大きいため、クロック比較器の割り込みが保留になる。
【００８２】
一実施形態では、プログラムは、クロック比較器の値を、次のように、クロック比較器の割り込みを決して認識しないような値、またはクロック比較器の割り込みを直ちに認識するような値のいずれかに設定できる。
【００８３】
＊  クロック比較器符号制御がゼロである場合：
【００８４】
＊  クロック比較器を０に設定すると、クロック比較器の割り込みが直ちに保留になる。
【００８５】
＊  クロック比較器を１に設定すると、クロック比較器の割り込み条件が認識されなくなる。
【００８６】
＊  複数エポック機能がインストールされており、クロック比較器符号制御が１である場合：
【００８７】
＊  クロック比較器を最大の負値（１６進数の８０００００００，００００００００）に設定すると、クロック比較器の割り込みが直ちに保留になる。
【００８８】
＊  クロック比較器を最大の正値（１６進数の７ＦＦＦＦＦＦＦ，ＦＦＦＦＦＦＦＦ）に設定すると、クロック比較器の割り込み条件が認識されなくなる。
【００８９】
さらに別の態様では、構成において複数エポック機能がインストールされている場合、クロック比較器符号制御は、クロック比較器が、最大の符号なしＴＯＤクロック値から０に移行すること、または最大の正の符号付きＴＯＤクロック値から最大の負値に移行することのいずれかをチェックする目的で、制御プログラムがＴＯＤクロックの比較される部分における不連続性を構成するものを指定できる手段を提供する。すなわち、符号なし比較が使用される場合、時刻クロックの比較される部分における不連続性は、比較されるビット（符号なし値として扱われる）の値が最大の符号なし値から０に戻るように、比較されるビットが増加したときに発生する。符号付き比較が使用される場合、時刻クロックの比較される部分における不連続性は、比較されるビット（符号付き値として扱われる）の値が最大の正値から最大の負値に戻るように、比較されるビットが増加したときに発生する。
【００９０】
エポックの間に構成が少なくとも１回再初期化されると仮定すると、例えば、プログラムが初期化されるときに、クロック比較器符号制御をＴＯＤクロックのビット位置０の内容に設定することが推奨される。そのように設定することによって、例えばクロック比較器が未来に向かうエポックの半分を超えて設定されない限り、クロック比較器のチェックが、ＴＯＤクロックにおいて不連続性を観察しないことを保証し、未来に向かうエポックの半分は、クロック比較器の値が、通常、例えば１秒未満の短い間隔を示すように設定される場合、そのようなクロック比較器の標準的な用途にとって重要ではない。
【００９１】
クロック比較器符号制御を変更するときに、一貫性のある結果を保証するために、一実施形態では、プログラムは、（ａ）クロック比較器の割り込みを無効化し、（ｂ）クロック比較器符号制御を設定し、（ｃ）クロック比較器設定命令を発行して、比較器の新しい値を設定し、その後、（ｄ）必要に応じて、クロック比較器の割り込みを有効化する。
【００９２】
クロック比較器符号制御は、設定された後、次のＣＰＵの初期リセット（初期プログラム・ローディング（ＩＰＬ：initial program loading）など）まで、変更されないよう意図される。クロック比較器符号制御の動的変更は、変更された制御の結果として取り消されたクロック比較器の状態の誤認識、または変更された制御の結果として保留になったクロック比較器の状態の認識の遅延を引き起こすことがある。
【００９３】
上で示されたように、クロック比較器は、クロック比較器設定命令を使用して設定されてよい。この命令に関するさらなる詳細が、図１３を参照して説明される。一実施形態では、この命令は、ハードウェア／ソフトウェア・インターフェイスでの単一の設計されたマシン命令であってよい。
【００９４】
１つの例では、クロック比較器設定命令８００は、例えば、クロック比較器設定動作を指定するオペコードを含んでいるオペレーション・コード（オペコード）フィールド８０２、ベース（Ｂ２）フィールド８０４、および変位（Ｄ２）フィールド８０６を含む。一実施形態では、この命令のフィールドは、互いに分離し、独立している。しかし、別の実施形態では、２つ以上のフィールドが結合されてよい。さらに、命令のフィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、下付きの２を含んでいるフィールドは第２のオペランドに関連付けられている。
【００９５】
１つの例では、Ｂ２８０４によって指定されたレジスタの内容は、下で説明されているように使用される第２のオペランドのアドレスを提供するために、Ｄ２８０６によって提供された値に追加される。
【００９６】
動作中に、１つの例では、クロック比較器の現在の値が、第２のオペランドのアドレスによって指定されたダブルワードの内容に置き換えられる。
【００９７】
１つの例として、クロック比較器において、ＴＯＤクロックと比較されるビット位置に対応するオペランドのビットが設定され、一実施形態では、クロック比較器において、オペランドの残りの右端のビット位置の内容が無視され、維持されない。
【００９８】
さらに、一実施形態では、オペランドはダブルワード境界上で指定され、そうでない場合、指定例外が認識される。
【００９９】
さらに、１つの例では、すべてのアドレス指定例外および保護例外の発生時に、動作が抑制される。さらに、アクセス（フェッチ、オペランド２）、特権操作、指定、およびトランザクション制約のプログラム例外が発生することがある。
【０１００】
上記に加えて、クロック比較器は、クロック比較器格納命令によって検査されてよい。一実施形態では、この命令は、ハードウェア／ソフトウェア・インターフェイスでの単一の設計されたマシン命令であってよい。
【０１０１】
クロック比較器格納命令の一例が、図１４を参照して説明される。１つの例では、クロック比較器格納命令９００は、例えば、クロック比較器格納動作を指定するオペコードを含んでいるオペレーション・コード（オペコード）フィールド９０２、ベース（Ｂ２）フィールド９０４、および変位（Ｄ２）フィールド９０６を含む。一実施形態では、この命令のフィールドは、互いに分離し、独立している。しかし、別の実施形態では、２つ以上のフィールドが結合されてよい。さらに、命令のフィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、下付きの２を含んでいるフィールドは第２のオペランドに関連付けられている。
【０１０２】
１つの例では、Ｂ２９０４によって指定されたレジスタの内容は、下で説明されているように使用される第２のオペランドのアドレスを提供するために、Ｄ２９０６によって提供された値に追加される。
【０１０３】
動作中に、１つの例では、クロック比較器の現在の値が、第２のオペランドのアドレスによって指定されたダブルワード位置に格納される。
【０１０４】
１つの例として、ＴＯＤクロックと比較されないクロック比較器の右端のビット位置に、０が提供される。
【０１０５】
一実施形態では、オペランドはダブルワード境界上で指定され、そうでない場合、指定例外が認識される。さらに、１つの例では、例えばアクセス（格納、オペランド２）、特権操作、指定、およびトランザクション制約のプログラム例外が発生することがある。
【０１０６】
本明細書では、クロック比較器の比較が符号付きまたは符号なしになることができるようにするクロック比較器符号制御を定義する機能が説明された。これは、ＴＯＤオーバーフロー状態でさえも正しい結果をもたらすことによって、コンピューティング環境内の処理を容易にする。本発明の１つまたは複数の態様は、コンピュータ・システムに密接に関係しており、システム内の処理を改善する。
【０１０７】
クロック比較器符号制御に関連付けられたさらなる詳細が、図１５を参照して説明される。１つの例では、符号なし演算または符号付き演算のいずれが比較動作において使用されるかを判定するために使用されるクロック比較器符号制御が、例えばプロセッサによって取得される（１０００）。この取得は、例えば、制御レジスタ（例えば、制御レジスタ０）の符号制御（例えば、ビット１０）にアクセスすることによって実行される。次に、クロック比較器の値および時刻（ＴＯＤ）クロックの値の少なくとも一部の比較においてクロック比較器符号制御が使用され、選択された動作（例えば、割り込み）が認識されるかどうかを判定する（１００２）。例えば、クロック比較器の値は、例えばクロック比較器格納命令を使用することによって取得され、ＴＯＤクロックの値は、例えばクロック格納拡張命令を使用することによって取得される。クロック比較器の値およびＴＯＤクロックの値の少なくとも一部は、クロック比較器符号制御の値に応じて、符号なし演算または符号付き演算のいずれかを使用して比較される。例えば、この比較が、ＴＯＤクロックの値の少なくとも一部がクロック比較器の値より大きいことを示す場合、選択された動作が認識される。
【０１０８】
一実施形態では、クロック比較器符号制御が第１の値に設定されていることに基づいて、符号なし２進演算が比較において使用され（この第１の値は、さまざまなレベルでオペレーティング・システムに互換性を提供するためのデフォルト値である）（１００４）、クロック比較器符号制御が第２の値に設定されていることに基づいて、符号付き２進演算が比較において使用される（１００６）。
【０１０９】
比較においてクロック比較器符号制御を使用することは、時刻クロックがオーバーフローしているかどうかに関わらず、選択された動作が認識されるかどうかを正確に示すことをもたらす（１００８）。
【０１１０】
１つの例では、クロック比較器があるサイズを有し、時刻クロックが、クロック比較器と異なるサイズを有する拡張された時刻クロックであり、この時刻クロックはオーバーフローすることがある（１０１０）。
【０１１１】
さらに、例として、クロック比較器符号制御が制御レジスタ内に配置され（１０１２）、クロック比較器がクロック比較器レジスタとして実装されるか（１０１４）、または時刻クロックが時刻クロック・レジスタとして実装されるか（１０１６）、あるいはその両方が実装される。
【０１１２】
さらに、１つの例では、クロック比較器符号制御は、時刻クロックの比較される部分における不連続性を構成するものを指定するためにさらに使用される（１０２０）。
【０１１３】
多くの変形が可能である。
【０１１４】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
【０１１５】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスにすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一時的信号であると解釈されるべきではない。
【０１１６】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【０１１７】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide area network）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【０１１８】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【０１１９】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【０１２０】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【０１２１】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも留意されたい。
【０１２２】
上に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、１つまたは複数の態様が提供されること、提示されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、１人または複数人の顧客のために１つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方の下で、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、１つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
【０１２３】
１つの態様では、１つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。１つの例として、アプリケーションのデプロイは、１つまたは複数の実施形態を実行するよう動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【０１２４】
別の態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、１つまたは複数の実施形態を実行できる。
【０１２５】
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が１つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、１つまたは複数の実施形態を実行できる。
【０１２６】
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、１つまたは複数の実施形態を組み込んで使用するために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、異なる命令、命令形式、命令フィールド、または命令値、あるいはその組み合わせが使用されてよい。さらに、コンピュータ・システムまたは環境あるいはその両方は、さらに多いコンポーネント、さらに少ないコンポーネント、または異なるコンポーネント、あるいはその組み合わせを含んでよい。多くの変形が可能である。
【０１２７】
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。一例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも２つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
【０１２８】
入出力デバイスまたはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、およびその他の記憶媒体などを含むが、これらに限定されない）は、直接的に、または介在するＩ／Ｏコントローラを通じて、システムに結合できる。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット（Ｒ）・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
【０１２９】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、特に明示的に示されない限り、複数形も含むことが意図されている。「備える（ｃｏｍｐｒｉｓｅ）」または「備えている（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組み合わせの存在を示すが、１つまたは複数のその他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組み合わせの存在または追加を除外していないということが、さらに理解されるであろう。
【０１３０】
下の特許請求の範囲内のすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および等価なものは、もしあれば、具体的に請求されるとき、その他の請求される要素と組み合わせて、機能を実行するための任意の構造、材料、または動作を含むことが意図されている。１つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
【図１】
0006909297.tif 000002
【図２】
0006909297.tif 000003
【図３】
0006909297.tif 000004
【図４】
0006909297.tif 000005
【図５】
0006909297.tif 000006
【図６】
0006909297.tif 000007
【図７】
0006909297.tif 000008
【図８】
0006909297.tif 000009
【図９】
0006909297.tif 000010
【図１０】
0006909297.tif 000011
【図１１】
0006909297.tif 000012
【図１２】
0006909297.tif 000013
【図１３】
0006909297.tif 000014
【図１４】
0006909297.tif 000015
【図１５】
0006909297.tif 000016