(57)【特許請求の範囲】
【請求項１】
コンピューティング環境のイベントをモニタするためのマシン命令を実行することによって、前記コンピューティング環境におけるモニタリングを容易化する方法であって、前記方法は、
前記コンピューティング環境に改良型モニタリング機能実装がインストールされているかどうかを判定するステップと、
前記コンピューティング環境に前記改良型モニタリング機能実装がインストールされていないと判定された場合は、割り込みを介してモニタリング・プログラムに制御を渡すステップと、
前記コンピューティング環境に前記改良型モニタリング機能実装がインストールされていると判定された場合は、モニタ・イベント・カウンティング・オペレーションを実施するステップと、
を含み、前記実施するステップは、
制御レジスタ中のマスク・ビットが１の値を有するかどうかを判定するステップであって、マスク・ビット位置はモニタ・クラスを表す、前記判定するステップと、
前記マスク・ビットが前記１の値を有するのに応じて、モニタ・イベント・カウンティング・オペレーションを実施するステップと、
を含む、前記方法。
【請求項２】
前記モニタ・イベント・カウンティング・オペレーションを実施するステップは、
モニタ・コード値とカウンタ・アレイのリミットとを比較するステップであって、前記カウンタ・アレイはカウンタを含む、前記比較するステップと、
前記比較するステップが第一結果を提示するのに応じ、前記カウンタ・アレイの前記カウンタをインクリメントするステップと、
前記比較するステップが第二結果を提示するのに応じ、例外カウントをインクリメントするステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記第一結果は前記リミットより小さい前記コード値を含み、前記第二結果は前記リミット以上の大きさの前記コード値を含む、請求項２に記載の方法。
【請求項４】
前記カウンタ・アレイは複数のハーフワード・エントリおよびそれに続くフルワード・エントリを含む、請求項２に記載の方法。
【請求項５】
前記カウンタは、前記カウンタ・アレイの、ハーフワード・ポインタによって識別されるハーフワード・エントリに置かれ、前記ハーフワード・エントリのオーバーフロー状態に応じて、前記カウンタは、前記カウンタ・アレイの、フルワード・ポインタによって指定されるフルワード・エントリにさらに置かれる、請求項４に記載の方法。
【請求項６】
前記ハーフワード・ポインタは、（前記モニタ・コード×２）＋前記カウンタ・アレイの起点アドレス、にセットされ、前記フルワード・ポインタは、（前記モニタ・コード×４）＋（前記リミット×２）＋前記起点アドレス、にセットされる、請求項５に記載の方法。
【請求項７】
前記マシン命令は、モニタ・コール命令を含み、前記モニタ・コール命令は、前記モニタ・コール命令を指定する命令コードと、モニタ対象のクラスを指定する指標フィールドと、および前記マシン命令のプロセシングの過程で使用できるモニタ・コードを規定する第一オペランド・フィールドとを含む、請求項１に記載の方法。
【請求項８】
前記命令コードは、前記モニタ・コール命令の命令フォーマットのビット０〜７中に在り、前記指標フィールドはビット８〜１５中に在り、前記第一オペランド・フィールドはビット１６〜３１中に在って、前記第一オペランド・フィールドは、ビット１６〜１９中に基底部分を、ビット２０〜３１中に変位部分を含む、請求項７に記載の方法。
【請求項９】
前記制御レジスタ中の前記マスク・ビット位置は前記マシン命令の指標フィールドによって識別される、請求項１に記載の方法。
【請求項１０】
請求項１ないし請求項９の何れか１項に記載の方法の各ステップを実行するようになされた手段を含むシステム。
【請求項１１】
請求項１ないし請求項９の何れか１項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピューティング環境内での処理に関し、具体的には処理の間に発生するイベントをモニタすることに関する。
【背景技術】
【０００２】
年を追って、処理イベントをモニタするのにいろいろなモニタリング・ツールが使われてきた。かかるツールの一つが、インターナショナル・ビジネス・マシン・コーポレーションが提供しているｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）システム内の処理をモニタリングするため使われるモニタ・コール（ＭＣ：Ｍｏｎｉｔｏｒ  Ｃａｌｌ）命令である。モニタ・コール命令は、モニタ・クラスおよびモニタ・マスクで表現される主要な対象領域をモニタする能力を有するプログラムを備えている。モニタ・マスクは、制御プログラム（例、オペレーティング・システム）が可能な１６のモニタ・クラスの一つ以上を有効化できるようにする。有効化されたモニタ・クラスを指定する（すなわち、特定のクラスに対するマスク・ビットがセットされた）モニタ・コール命令が実行されると、モニタ・イベント・プログラムの割り込みが発生し、制御プログラムは、この命令中に指定されているモニタ・コードに基づいて情報を記録することができる。モニタ・コール命令が実行されたが、特定されたモニタ・クラスが有効化されたモニタ・マスク・ビットに対応していない場合、命令は、無演算（ＮＯＰ：ｎｏ−ｏｐｅｒａｔｉｏｎ）処理をする。
【０００３】
モニタ・コール命令は、例えば、計測対象コード・パスの実行をカウントするために用いられる。このカウンティングは、カウント・プログラムを使って行われる。カウント・プログラムは、例えば、監視プログラム呼び出し（ＳＶＣ：ｓｕｐｅｒｖｉｓｏｒ  ｃａｌｌ）、ロッキング、割り込み、記憶域割り当ておよび解放、スケジューリング、待ち行列化および解除、等々を含む、さまざまなオペレーティング・システムの主要イベントの頻度を算定するため多年にわたって使われてきた。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
既存在来型のモニタ・コール・メカニズムを用いるカウンティング・オペレーションは、プログラムへの割り込み、復帰環境の設定、カウンティング・オペレーションの遂行、その上で割り込まれたプログラムに戻る前に処理を逆行することを含め、相当な量のオーバーヘッドを必要とする。
【課題を解決するための手段】
【０００５】
本発明のある態様によって、プロセッサ・ファームウェア（例、ミリコード）が、割り込みを必要とせずに、モニタ・コール命令に指定されたカウンタを効率的に更新できるようにする改良型モニタリング機能実装が提供される。この改良型モニタリング機能実装は、既存在来型の機能と互換性のある改良された機能を備えている。
【０００６】
コンピューティング環境内のモニタリングを容易化するためのコンピュータ・プログラム製品の提供を介して、従来技術の短所を克服しさらなる利点が提供される。このコンピュータ・プログラム製品は、処理回路による読み取りが可能で処理回路が方法を遂行するため実行する命令を格納する、記憶媒体を含む。上記方法は、例えば、コンピューティング環境のイベントをモニタするためのマシン命令を実行するステップを含み、該実行するステップは、マシン命令によってモニタ対象のイベントを指定するステップと、割り込みを行うことなく、モニタされるイベントに関連付けられたカウンタをインクリメントするステップとを含む。
【０００７】
また、本発明の一つ以上の態様に関連して方法およびシステムが本明細書で説明され、これらは特許請求されている。さらに、本発明の一つ以上の態様に関するサービスも本明細書で説明され、これらには特許請求されるものがある。
【０００８】
本発明の技法を介して、さらなる特質および利点が実現される。本発明の他の実施形態および態様が本明細書で詳細に説明され、これらは請求される本発明の一部と見なされる。
【０００９】
本発明の一つ以上の態様は、本明細書に添付の請求項中の例のように、具体的に指摘され明確に請求される。本発明の前述および他の目的、特質、および利点は、添付の図面と併せ、以下の詳細な説明によって明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一つ以上の態様を組み込み使用するためのコンピューティング環境の一例を示す。
【図２】本発明のある態様に従って使用されるモニタ・コール命令のフォーマットの一例を示す。
【図３】本発明のある態様に従って使用される制御レジスタの一例を示す。
【図４】本発明のある態様による、カウンタ・アレイおよびそれに関連する構造の一例を示す。
【図５】本発明のある態様による、モニタリング・ロジックの一例を示す。
【図６】本発明のある態様による、モニタリング・ロジックの一例を示す。
【図７】本発明の一つ以上の態様を組み込むコンピュータ・プログラム製品の一つの実施形態を示す。
【発明を実施するための形態】
【００１１】
本発明のある態様に従って、割り込みを行うことなくモニタリングを実施可能にする改良型モニタリング機能実装が提供される。特定のフィールドの設定に応じて、割り込みが生じる既存在来型のモニタリング機能実装が選択される（オペレーションの第一モード）か、もしくは割り込みの起こらない本発明の改良型機能実装が選択される（オペレーションの第二モード）という点で、この改良型機能実装は、既存在来型のモニタリング機能実装と互換性がある。改良型機能実装では割り込みは行われないが、例えばイベントのカウントを提供するモニタリングが遂行される。
【００１２】
図１を参照しながら、本発明の一つ以上の態様を組み込み使用するためのコンピューティング環境の一つの実施形態を説明する。コンピューティング環境１００は、例えば、少なくとも一つのプロセッサ１０２（例、中央処理装置（ＣＰＵ、ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ））、メモリ１０４（例、主メモリ）、もしくは例えば一つ以上のバス１０８または接続路を介してお互いに連結された一つ以上の入力／出力デバイス１０６を含む。
【００１３】
一つの例として、コンピューティング環境１００は、インターナショナル・ビジネス・マシン・コーポレーションが提供しているｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）に基づいていて、その例が、「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）−Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ，」、ＳＡ２２−７８３２−０７号、２００９年２月発行、に記載されており、これは当段落で参照することによりその全体が本明細書に組み込まれる。この例において、プロセッサ１０２は、インターナショナル・ビジネス・マシン・コーポレーションにより提供されるｅＳｅｒｖｅｒ  ｚ／Ｓｅｒｉｅｓ（ＩＢＭ社の登録商標）サーバであり、これは、同様にインターナショナル・ビジネス・マシン・コーポレーションにより提供されているｚ／ＯＳ（ＩＢＭ社の登録商標）オペレーティング・システムなどのオペレーティング・システムを実行する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）、ｚ／Ｓｅｒｉｅｓ（ＩＢＭ社の登録商標）、ｚ／ＯＳ（ＩＢＭ社の登録商標）、およびＩＢＭ（ＩＢＭ社の登録商標）は、米国ニューヨーク州アーモントのインターナショナル・ビジネス・マシン・コーポレーションの登録商標である。本明細書で使われている他の名称が、インターナショナル・ビジネス・マシン・コーポレーションまたは他の企業の登録商標、商標または商品名のことがあり得る。
【００１４】
コンピューティング環境１００内の処理は、本発明のある態様に従って、モニタリング機能実装を介してモニタされる。このモニタリング機能実装は、例えば、モニタリングされているプログラム中の選択された点に到達したとき、所定のアクションを作動させるモニタ・コール命令を含む。すなわち、モニタ・コール命令は、モニタ対象プログラムの所望の点に埋め込まれており、これらの点に到達したときアクションが取られる。例として、このアクションには、割り込みを介してモニタリング・プログラムに制御を渡すこと、あるいは、本発明のある態様によって、割り込み処置を取らずに一つ以上のカウントを更新することが含まれる。このモニタリングは、各種の測定機能を遂行するのに有用である。例えば、どのプログラムが実行されたかを示す追跡情報が生成でき、特定のプログラムがどのくらいの頻度で使われたかを示すカウンティング情報を生成することができ、特定のプログラムが実行に要した時間量を示す計時情報を生成することができる。
【００１５】
図２を参照しながらモニタ・コール命令の一例を説明する。この特定の事例では、モニタ・コール命令は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）の一部であり、本発明の以前に存在した該命令の態様が、「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）−Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ，」、ＳＡ２２−７８３２−０７号、２００９年２月発行、に記載されており、これは当段落で参照することによりその全体が本明細書に組み込まれる。この特定の例を提示するが、モニタ・コール命令のフォーマットには多くの変形が可能であり、それらは請求される発明の一部と見なされる。
【００１６】
図２を参照すると、一つの例において、モニタ・コール命令２００は、モニタ・コール命令を特定する８ビットの命令コード２０２（例、‘ＡＦ’）と、例えば、１６のモニタリング・クラスの一つを指定する４ビットの符号なしバイナリ数を含むインデックス・フィールド（Ｉ２）２０４と、以下で説明するように使用されるモニタ・コードを形成する、Ｂ１２０６およびＤ１２０８によって指定される、第一オペランド・アドレスと、を含む。この例では、Ｂ１は４ビット長であり、Ｄ１は１２ビット長である。Ｂ１が０に等しくなければＢ１はレジスタ位置であり、そのコンテンツはＤ１フィールドに加えられてオペランド・アドレスを生成し、このオペランド・アドレスはオペランドをアドレス指定するため使われるのでなく、モニタ・コードを設けるために使われる。
【００１７】
プログラム中でモニタ・コール命令に到達したとき、この命令が実行される。実行の過程において、モニタ・マスクの少なくとも一つのセットがチェックされ、あるモニタ・イベントを遂行することになっているかどうかが判定される。マスクの少なくとも一つのセットが、制御レジスタ（ＣＲ）８などの制御レジスタに含まれる。具体的には、この例では、ＣＰＵは、各々が６４のビット位置を持つ１６の制御レジスタを有する。レジスタ中のビット位置は、システム中の特定の機能に割り当てられ、あるオペレーションが実行可能であることを特定する際に、もしくはこの機能実装が必要とする特定の情報を提供する際に使われる。
【００１８】
制御レジスタは、０〜１５の番号で識別され、命令Ｌｏａｄ  Ｃｏｎｔｒｏｌ（ロード制御）およびＳｔｏｒｅ  Ｃｏｎｔｒｏｌ（記憶制御）中の４ビットのＲフィールドによって指定される。これらの命令によって、複数の制御レジスタをアドレス指定することができる。Ｌｏａｄ  Ｃｏｎｔｒｏｌ（ＬＣＴＬＧ）命令は、該命令で指定されたレジスタ群内の全制御レジスタ・ビット位置に、記憶装置からロードさせる。制御レジスタ８の一例が図３に示されている。
【００１９】
図３を参照すると、制御レジスタ３００は、モニタ・マスクの第一セット３０２およびモニタ・マスクの第二セット３０４を含む。この特定の実施形態において、モニタ・マスクの第一セットは、制御レジスタのビット４８〜６３にあり、既存在来型モニタリング機能実装にも、改良型機能実装にも使用され、一方、モニタ・マスクの第二セットは、ビット１６〜３１にあって改良型モニタリング機能実装に使用される。マスクの各セットは、例えば、１６のモニタ・クラスに対応する１６のマスク・インジケータ（例、ビット群）を含む。モニタ対象の各クラスに対し、それに対応するマスク・ビットが、モニタ・マスクの第一セット中にセットされる。例えば、クラス３および７をモニタする場合、モニタ・マスクの第一セット中にマスク・ビット３および７がセットされる。さらに、モニタ・マスクの第二セット中の各マスク・ビットは、モニタ・マスクの第一セット中のそのマスク・ビットに対応しており、改良型機能実装が使われる場合には、第二セットのマスク・ビットがセットされる。例えば、クラス３および７がモニタされることになり、改良型機能実装が使われる場合には、モニタ・マスクの第一セットおよび第二セットのビット３および７がセット（例えば、１に等しくセット）される。この例において、制御プログラム（例、オペレーティング・システム）は、ユーザのインプットに基づいてビットをセットする。さらに、これらのクラスはユーザ定義であり、モニタされる任意のイベントを表すことができる。それをオペレーティング・システムが設定する。例えば、あるクラスを、監視プログラム呼び出しに設定することができ、オペレーティング・システムがある特定のクラス番号を監視プログラム呼び出しに割り当てることになる。次いで、モニタ・コール命令が、モニタされるプログラムの監視プログラム呼び出しの近辺に挿入され、そのクラスをモニタするように該命令のＩ２フィールドがセットされる。他の任意の所望イベンにトにも、同じようにクラスを割り当て、同様にモニタすることができる。
【００２０】
既存在来型のモニタリング機能実装では、モニタ・コール命令が実行されるとき、モニタ・マスクの第一セット中の、Ｉ２フィールドのビット４〜７に指定された、当該モニタ・クラスに対応するモニタ・マスク・ビットがチェックされる。ビットが１の場合、モニタ・イベント・プログラムの割り込みが発生する。第一オペランド・アドレスによって形成されたモニタ・コードが実メモリ位置１７６の倍長ワードの中に置かれ、実メモリ位置１４８にゼロを格納して、Ｉ２フィールドのコンテンツが実メモリ位置１４９に格納され、プログラム割り込みコードのビット９は１にセットされる。
【００２１】
本発明のある態様によれば、Ｉ２フィールドによって指定されたクラスに対応するモニタ・マスクのビットが１の場合、必ずしも割り込みは行われない。代わりに、ミリコードが、割り込みを行わないでモニタリングを実行する。このモニタリングの実行には連続配置のカウンタ・アレイが使われる。このアレイの一つの例が図４に示されている。
【００２２】
図示のように、カウンタ・アレイ４００は、複数のハーフワード・エントリ４０２および複数のフルワード・エントリ４０４を含む。一つの特定の事例において、このアレイは６４バイトであり、ホーム・アドレス・スペースに格納されており、オペレーティング・システムによって初期化される。ハーフワード・エントリは連続的に配置されており、改良型モニタ・カウンタ・アレイ・リミット（単に、リミットともいう）×２に等しいスペース量を占める。フルワード・エントリは、ハーフワード・エントリのすぐ後に連続的に配置され、これらはリミット×４に等しいスペース量を占める。
【００２３】
さらに、一例において、このアレイの起点アドレスは、改良型モニタ・カウンタ・アレイ起点アドレス４１０によって示され、これはオペレーティング・システムによってセットされ、例えば、実メモリ位置２５６（１６進数１００）に格納される。さらに、改良型モニタリング機能実装のプロセシングのために、実メモリ位置２６４（１６進数１０８）に格納された改良型モニタ・カウンタ・アレイ・リミット４１２、および位置２６８（１６進数１００）に格納された改良型モニタ例外カウント４１４を含め、オペレーティング・システムによって初期化されたさらなる構造が用いられる。
【００２４】
改良型モニタ機能実装に関連するプロセシングの一つの実施形態を、図５〜図６を参照しながら説明する。一つの例において、このロジックを遂行するのはファームウエア（例えば、プロセッサ上で実行されるミリコード）である。
【００２５】
図５を参照すると、最初にステップ５００において、モニタ・クラスが、例えば、モニタ・コール命令から、具体的にはこの命令のＩ２フィールドのビット４〜７から取得される。具体的には、Ｉ２フィールドは、４ビットの符号なしバイナリ数を含み、これはモニタされるクラスを表し、制御レジスタ８のビット４８〜６３中の１６のモニタ・マスクへの指標を形成する。
【００２６】
Ｉ２フィールドによってポイントされた、（例えば、制御レジスタ８のビット４８〜６３中の）モニタ・マスクの第一セット中のマスク・ビットがチェックされる。例えば、Ｉ２フィールドがクラス３を表す３の値を包含していれば、マスクの第一セット中のマスク・ビット３がチェックされる。検査ステップ５０２において、その値が１でない場合、このとき該命令は無演算処理をし、ステップ５０４で終了する。また一方、（モニタ・マスクの第一セット中の）指定されたマスク・ビットが１にセットされている場合、プロセシングは、改良型モニタ機能実装がインストールされているかどうかを判定する検査ステップ５０６に続く。この判定は、インジケータをチェックすることによって行うことができ、または暗黙に定義することができる。改良型モニタ機能実装がインストールされていない場合、ステップ５０８において割り込みが行われる。しかして、この例において、第一オペランド・アドレス（例、Ｄ１（Ｂ１））によって形成されたモニタ・コードは、実メモリ位置１７６の倍長ワード中に置かれ、実メモリ位置１４８にゼロが格納されて、Ｉ２フィールドのコンテンツが実メモリ位置１４９に格納され、プログラム割り込みコードのビット９は１にセットされる。
【００２７】
また一方、検査ステップ５０６において改良型モニタ機能実装がインストールされている場合、検査ステップ５１０において、モニタ・マスクの第二セット（例、ＣＲ８のビット１６〜３１）中の対応するマスク・ビットが１に等しいかどうかがさらに判定される。例えば、モニタ・マスクの第一セット中のマスク・ビット３がチェックされた場合、このときはモニタ・マスクの第二セット中のマスク・ビット３がチェックされる。モニタ・マスクの第二セット中の所与のマスク・ビットがセットされていない場合（例、セロに等しい）、割り込み処置が取られ、プロセシングは、ステップ５０８で上述したように進む。セットされている場合は、モニタ・イベント・カウンティング・オペレーションが以下のように実施される。
【００２８】
最初に、ステップ５１２において、モニタ・コードがＤ１（Ｂ１）の第一オペランド・アドレスにセットされ、検査ステップ５１４（図６）において、そのモニタ・コードが、改良型モニタ・カウンタ・アレイ・リミット以上の大きさであるかどうかが判定される。具体的には、一つの例において、実メモリ位置２６４のワード中に包含されている、左側を３２個のバイナリ・ゼロで拡張された改良型モニタ・カウンタ・アレイ・サイズ（リミット）が、第一オペランド・アドレスによって形成されるモニタ・コードと論理的に比較される。検査ステップ５１４において、モニタ・コードが、改良型モニタ・カウンタ・アレイ・リミット以上の大きさであれば、ステップ５１６において、実メモリ位置２６８のワード中に包含されている改良型モニタ例外カウントに、１が論理的に加算され、この命令はステップ５１８で完了する。この加算の結果からの桁上げは一切無視される。
【００２９】
検査ステップ５１４に戻って、モニタ・コードが、改良型モニタ・カウンタ・アレイ・リミット（左側を３２個のゼロで拡張されている）よりも小さい場合、このモニタ・コードに対応する改良型モニタ・カウンタに１が加えられる。改良型モニタ・カウンタは、２つの非隣接の記憶位置、すなわち、最初にインクリメントされる符号なしのハーフワードと、ハーフワード加算のビット位置０の桁上げ出力が生じた場合はいつでもインクリメントされる、符号なしのワード（別名、フルワード）とを含む。以下に、これをさらに詳細に説明する。
【００３０】
実メモリ位置２５６の倍長ワードのビット０〜６０中の、右側に３個のバイナリ・ゼロを付された改良型モニタ・カウンタ・アレイ起点アドレスは、ホーム・アドレス・スペース中の改良型モニタ・カウンタ・アレイの６４ビットの仮想アドレスを形成する。実メモリ位置２６４の改良型モニタ・カウンタ・アレイ・サイズのフィールドは、アレイ中のハーフワードおよびワード・エントリの数を規定し、アレイ中ではハーフワード・エントリが最初に配置され、そのすぐ後にワード・エントリが続く。
【００３１】
ステップ５２０において、２を乗算されたモニタ・コードが、改良型モニタ・カウンタ・アレイ起点アドレスに加算されてハーフワードの仮想アドレスを形成し、これは所望のハーフワード・エントリへのポインタとして使われる。次いで、ステップ５２２で、ハーフワード・ポインタによって指定されたハーフワード・エントリのコンテンツに１が論理的に加算される。検査ステップ５２４において、この加算がハーフワードのビット位置０の桁上げ出力をもたらした場合、対応するワードに１が論理的に加算される。この場合、ステップ５２６において、改良型モニタ・カウンタ・アレイ・サイズの値に２が乗算され、４を乗算されたモニタ・コードに加算され、この値が改良型モニタ・カウンタ・アレイ起点アドレスに加えられ、ワードのアドレスが形成され、これが、ハーフワード・エントリに対応するワード・エントリへのポインタとして使われる。次いで、ステップ５２８で、ワードのポインタによって指定されたワード・エントリのコンテンツに１が論理的に加算される。これにより処理は完了する。
【００３２】
上記で、既存在来型のモニタリング機能実装と互換性のある改良型モニタリング機能実装を詳細に説明した。モニタ・コール命令の実行に応じて、割り込みが行われるか（既存の機能実装）、もしくは、オペレーティング・システムまたはアプリケーション・プログラムによる割り込みまたは介入なくして、ＣＰＵファームウエアによってカウンタが更新される（改良型機能実装）。改良型機能実装はカウンタ・アレイがホーム・アドレス・スペースに維持されることを可能にし、これにより、より広いカウンタの範囲と、カウンタ幅の増加と、キャッシュの利用性を向上する２ビットおよび４ビットの別個のカウンタとが提供される。本改良型機能実装は、ミリコードによるカウンタの更新の遂行を可能にし、これは、オペレーティング・システムのプログラム割り込みハンドラを介するパスよりも効率的であり、例外カウンタを備え、これは、（例えば、アレイのアドレスおよびリミットが適切に設定され、限度外れおよびアドレス指定例外がミリコードによって処理されることを前提として）プログラム設定の例外処理の必要性を解消する。本改良型機能実装は、固定シーケンスのカウンタとは対照的に、ユーザ定義のカウンタ位置に基づくカウンティング技法の作動を可能にする。
【００３３】
本モニタ・コール命令は、コンピュータ・プログラムの命令であり、この命令の実行では、イベントを識別するため、マシン命令定義のクラスが用いられる。この命令は２つのモード、すなわち、割り込みモードの第一モードと、非割り込みモードの第二モードとで動作可能である。第二モード（非割り込みモード）にあるコンピューティング環境と、命令によって識別されたイベントとの遭遇とに応じて、（メモリ位置の）カウンタがインクリメントされ、プロセシングは、コンピュータ・プログラムの次の命令の実行に進む。第一モードにあるコンピューティング環境と、命令によって識別されたイベントに遭遇したのとに応じて、カウンタをインクリメントせずに、コンピュータ・プログラムから割り込みハンドラ・ルーチンへの割り込みが行われる。
【００３４】
当業者ならよく理解するであろうように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現することができる。従って、本発明の態様は、全体がハードウエアの実施形態、全体がソフトウエアの実施形態（ファームウエア、常駐ソフトウエア、マイクロコードなどを含む）、あるいは、一般に本明細書では全て「回路」、「モジュール」、または「システム」といわれる、ソフトウエアおよびハードウエア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の態様は、内部に具体化されたコンピュータ可読プログラム・コードを有する一つ以上のコンピュータ可読媒体（群）中に具現されたコンピュータ・プログラム製品の形を取ることもできる。
【００３５】
一つ以上のコンピュータ可読媒体（群）の任意の組み合わせを用いることができる。このコンピュータ可読媒体はコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、または半導体の、システム、装置、もしくはデバイス、あるいはこれらの任意の適切な組み合わせとすることができる。コンピュータ可読記憶媒体のさらに具体的な例（非包括的リスト）には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）またはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組み合わせが含まれる。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体とすることができる。
【００３６】
次に図６を参照すると、一つの事例において、コンピュータ・プログラム製品６００は、例えば、媒体中にコンピュータ可読プログラム・コード手段または論理６０４を格納し、本発明の一つ以上の態様を提供し促進するための一つ以上のコンピュータ可読媒体６０２を包含する。
【００３７】
コンピュータ可読媒体中に具現されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、またはこれらの任意の適した組み合わせを含め、適切な媒体を用いて送信することができる。
【００３８】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合せで記述することができる。このプログラム・コードは、全体をユーザのコンピュータで、一部をユーザのコンピュータで、スタンドアロン・ソフトウエア・パッケージとして実行することができ、一部をユーザのコンピュータで他の部分を遠隔コンピュータで、または全体を遠隔のコンピュータまたはサーバで実行することができる。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することができ、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うことができる。
【００３９】
本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート説明図もしくはブロック図またはその両方を参照しながら、本明細書で本発明の態様を説明している。フローチャート説明図もしくはブロック図またはその両方の各ブロック、および、フローチャート説明図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実行可能であることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに供給し、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群／処理群を実施するための手段を生成するようにすることができる。
【００４０】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令できるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群／処理群を実施する命令群を包含する製品を形成するようにすることができる。
【００４１】
同様に、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、これらコンピュータ、他のプログラム可能装置、または他のデバイス上で一連のオペレーション・ステップを実行させてコンピュータ実装のプロセスを生成し、これらコンピュータまたは他のプログラム可能装置で実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群／処理群を実施するためのプロセスを提供するようにすることもできる。
【００４２】
図中のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、およびオペレーションを例示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、所定の論理機能（群）を実行するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図に記載された順序を外れて行われることがあり得ることに留意すべきである。例えば、連続して示された２つのブロックが、実際にはほぼ同時に実行されることがあり、関与する機能によっては、時には、これらブロックが逆の順序で実行されることもあり得る。また、ブロック図もしくはフローチャート説明図またはその両方の各ブロック、およびブロック図もしくはフローチャート説明図またはその両方中のブロックの組み合わせは、特定の機能または処置を実施する、特殊用途のハードウエア・ベースのシステム、または特殊用途のハードウエアとコンピュータ命令との組み合わせによって実装可能なことにも留意することとなる。
【００４３】
上記に加え、顧客環境の管理を提案するサービス・プロバイダによって、本発明の一つ以上の態様を提供し、提案し、展開し、管理し、保守などすることができる。例えば、サービス・プロバイダは、一人以上の顧客に対し、本発明の一つ以上の態様を遂行するコンピュータ・コードもしくはコンピュータ・インフラストラクチャまたはその両方を生成し、維持し、サポートなどすることができる。サービス・プロバイダは、見返りとして、予約申し込みもしくは自由契約またはその両方の下で顧客から支払いを受けることができる。これに加えてまたは換えて、サービス・プロバイダは、一人以上の第三者に広告コンテンツの販売に対する支払いを受けることもできる。
【００４４】
本発明の一つの態様において、本発明の一つ以上の態様を実施するためのアプリケーションを展開することができる。一つの事例として、アプリケーションの展開には、本発明の一つ以上の態様を遂行するため動作可能なコンピュータ・インフラストラクチャを提供することが含まれる。
【００４５】
本発明のさらなる態様として、コンピューティング・システム中にコンピュータ可読コードを組み込むことを含めて、コンピューティング・インフラストラクチャを展開することができ、上記コードは、上記コンピューティング・システムと相まって、本発明の一つ以上の態様を遂行する能力を有する。
【００４６】
本発明のまださらなる態様として、コンピュータ可読コードをコンピュータ・システム中に取り込むことを含め、コンピューティング・インフラストラクチャを統合するためのプロセスを提供することができる。上記コンピュータ・システムは、コンピュータ可読媒体を含み、このコンピュータ可読媒体は、本発明の一つ以上の態様を含む。上記コードは、上記コンピュータ・システムと相まって、本発明の一つ以上の態様を遂行する能力を有する。
【００４７】
さまざまな実施形態を上記で説明したが、これらは単なる例示である。例えば、他のアーキテクチャのコンピューティング環境でも、本発明の一つ以上の態様を組み込んで用いることができる。さらに、他のプロセッサもしくはオペレーティング・システムまたはその両方を使用することができる。さらに、本明細書では具体的なビット、バイト、命令コードもしくは位置または上記の組み合わせを記載しているが、これらは単なる例である。本発明の精神から逸脱しない多くの変形が存在する。さらに、カウンタ・アレイには、異なる構造もしくはサイズまたはその両方を持たせることができる。さらにまた、もっと多いまたは少ないマスクとすることができ、ビット以外のインジケータを使うことができる。また、もっと多いまたは少ないクラスとすることもでき、本明細書で提示した事例は、単なる例である。以下に限らないが、命令、メモリ割当て、および他の種類のイベントを含め、他のもしくは異なるイベントまたはその両方をクラスに指定しモニタすることができる。モニタリングでは、カウンティング以外のタスクを遂行することができる。さらに、割り込み過程またはモニタリングにおいて、本明細書で説明した以外の特定の処置を取ることができる。
【００４８】
さらに、他の種類のコンピューティング環境も、本発明の一つ以上の態様によって益を受けることができる。一例として、ある環境は、エミュレータ（例、ソフトウエアまたは他のエミュレーション・メカニズム）を包含することができ、（例えば、命令実行、アドレス変換などのアーキテクト機能、およびアーキテクト・レジスタを含む）特定のアーキテクチャまたはそのサブセットを（例えば、プロセッサおよびメモリを有するネイティブ・コンピュータ・システム上で）エミュレートすることができる。かかる環境において、エミュレータの一つ以上のエミュレーション機能は、たとえ、エミュレータを実行するコンピュータが、エミュレートされている能力と異なるアーキテクチャを有するような場合であっても、本発明の一つ以上の態様を実施することができる。一つの例として、エミュレーション・モードで、エミュレートされている特定の命令または演算が復号され、適切なエミュレーション機能が構築されて個別の命令または演算が実行される。
【００４９】
エミュレーション環境において、ホスト・コンピュータは、例えば、命令およびデータを格納するメモリと、メモリから命令を取り出し、随意的に取り出された命令に対するローカル・バッファ機能を備える命令フェッチ・ユニットと、取り出された命令を受信し、取り出された命令の種類を判断する命令復号ユニットと、これら命令を実行する命令実行ユニットと、を包含する。実行には、データをメモリからレジスタ中にロードすること、および逆にデータをレジスタからメモリに格納すること、あるいは、復号ユニットの判断により、いくつかの種類の算術または論理演算を行うことを包含することができる。一例では、各ユニットはソフトウエアに実装される。例えば、これらユニットによって遂行されるオペレーションは、エミュレータ・ソフトウエア内の一つ以上のサブルーチンとして実装される。
【００５０】
さらに、プログラム・コードを格納もしくは実行またはその両方を行うのに適したデータ処理システムとして、システム・バスを介してメモリ・エレメントに直接的または間接的に連結された少なくとも一つのプロセッサを包含するシステムが使用可能である。メモリ・エレメントは、例えば、プログラム・コードの実際の実行の過程で用いられるローカル・メモリと、大容量記憶装置と、実行の過程で大容量記憶装置からコードを読み出さなければならない回数を低減するために、少なくとも一部のプログラム・コードの一時的格納を提供するキャッシュ・メモリとを包含する。
【００５１】
入力／出力またはＩ／Ｏデバイス（以下に限らないが、キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、および他の記憶媒体などを含む）は、直接にまたは介在Ｉ／Ｏコントローラを介してシステムに連結することができる。また、ネットワーク・アダプタをシステムに連結し、データ処理システムが、介在する私的ネットワークまたは公衆ネットワークを介して、他のデータ処理システムあるいは遠隔のプリンタまたは記憶デバイスに連結することを可能にすることができる。モデム、ケーブル・モデム、およびイーサネット（Ｒ）カードは、利用可能な種類のネットワーク・アダプタのごくわずかの例である。
【００５２】
本明細書で使用する用語は、特定の実施形態を説明する目的のためだけのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「ある（ａ、ａｎ）」、および「該（ｔｈｅ）」は、文脈上明確に別途に示されていなければ、複数形も同じように含むことを意図されている。さらに、本明細書で用いられる「含む（ｃｏｍｐｒｉｓｅ）」もしくは「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」またはその両方は、述べられた機能、整数、ステップ、オペレーション、エレメント、もしくはコンポーネント、または上記の組み合わせの存在を特定するが、一つ以上の他の機能、整数、ステップ、オペレーション、エレメント、コンポーネント、もしくはこれらの群、または上記の組み合わせの存在を排除するものでないことが理解されよう。
【００５３】
添付の請求項中の全ての手段またはステップに加え機能エレメントの、対応する構造、材料、処置および同等物は、もしあれば、具体的に請求された他の請求エレメントと組み合わせて機能を遂行するための一切の構造、材料または処置を包含することが意図されている。本発明の記述は、例示および説明目的で提示されたもので、網羅的であること、または本発明を開示した形態に限定することは意図されていない。当業者には、本発明の範囲および精神から逸脱しない多くの部分変更および変形が明白であろう。本実施形態は、本発明の原理および実際的な応用を最善に説明し、他の当業者が、意図する特定の用途に適したさまざまな部分変更を加えたさまざまな実施形態のため、本発明を理解できるようにするため、選択され説明されたものである。
【図１】
0005588006.tif 000002
【図２】
0005588006.tif 000003
【図３】
0005588006.tif 000004
【図４】
0005588006.tif 000005
【図５】
0005588006.tif 000006
【図６】
0005588006.tif 000007
【図７】
0005588006.tif 000008