(57)【要約】【課題】メモリと無関係な、トレースのハンドルを提供する。【解決手段】トレースのメモリ位置ではなく、トレースのコンテンツを用いて、ハンドルを作成する。これによりトレースが、該トレースに関連するアプリケーションの後続する実行において容易に特定できるようになる。【選択図】図１
2010517128.tif 000002
【特許請求の範囲】
【請求項１】
処理環境のトレースのハンドルを定義する方法であって、
前記トレースの少なくとも一部を取得するステップと、
前記トレースの内容に基づくキーを生成するステップであって、前記キーは、前記トレースのハンドルであり、前記ハンドルは、前記トレースがメモリ内のどこに存在するかにかかわらず、前記トレースに関連するアプリケーションの複数実行にまたがって前記トレースを特定する、前記生成するステップと、
を含む、方法。
【請求項２】
前記アプリケーションは、前記処理環境のエミュレータを含む、請求項１に記載の方法。
【請求項３】
前記生成するステップは、前記キーを生成するべくハッシュ・コード機能を使用するステップを含む、請求項１に記載の方法。
【請求項４】
前記生成するステップは、
エンコーダによって、前記トレースを定義している命令シーケンスを取得するステップと、
前記エンコーダによって、前記キーをもたらすべく前記命令シーケンスの１つ以上の命令の少なくとも一部をエンコードするステップと、
を含む、請求項１に記載の方法。
【請求項５】
前記トレースに関連するアプリケーションの１つ以上の後続する実行において前記トレースを特定するべく、前記ハンドルを用いるステップをさらに含み、前記用いるステップが、
前記アプリケーションを１回以上実行することによってもたらされた１つ以上のトレースに対して作り出された１つ以上の生成ハンドルから、或る生成ハンドルを選択するステップと、
前記生成ハンドルと前記ハンドルとを比較するステップであって、前記生成ハンドルと前記ハンドルとの一致が前記トレースを特定する、前記比較するステップと、
を含む、請求項１に記載の方法。
【請求項６】
請求項１乃至５のいずれかに記載の方法のステップを全て実行するようになっている手段を含む、システム。
【請求項７】
コンピュータ・システム上でコンピュータ・プログラムが実行されると請求項１乃至５のいずれかに記載の方法のステップを全て実行する命令を含む、前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に、処理環境内で実施されるトレーシングに関し、特に、トレーシングによって作り出されるトレースのハンドルを定義することに関する。
【背景技術】
【０００２】
処理環境にてトレーシングが実施されると、１つ以上のトレースが作り出される。各トレースは、連続的に実行される１つ以上の命令を含む。トレースに含まれている命令は、トレーシング機能の始動時と停止時の間に実行される命令である。シンボル／モジュール・ベースの技術およびトレースベースの技術など、様々なタイプのトレーシング技術が存在する。トレースベースの技術は、シンボル／モジュール・ベースの技術とは異なり、プログラム・モジュールの境界と無関係に定義される。実際のプログラム・フローは、本来、命令シーケンスで示されるので、トレースベースの技術によって作り出されるシーケンスには、従来のシンボル／モジュール・ベースの方法に優る重要な利点がある。トレースベースの技術を用いると、オプティマイザの適用範囲が、よりグローバルな可能性を提供するように拡張される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
トレースは、処理環境に最適化をもたらすのに有用ではあるが、各トレース用に個別の識別ハンドルを作成することは、本質的に難しい。一般に、トレースを特定するのに使われるハンドルの作成には、メモリ位置に関する情報が使用されるのであるが、このことは、メモリ位置が動的である場合には問題となる。
【課題を解決するための手段】
【０００４】
上記によれば、トレースを特定する強化された機能が必要とされている。特に、そのトレースがメモリ内のどこに存在するのかにかかわらずにトレースを特定するハンドルを作成するための機能が、必要とされている。
【０００５】
請求項１に記載される方法の提供により、従来技術の欠点が克服され、さらに追加的な利点がもたらされる。
【０００６】
本発明は、さらに、対応するシステムおよびコンピュータ・プログラムをも提供する。
【０００７】
本発明の技術により、さらなる特徴および利点が実現される。本発明のその他の実施形態および態様は、本明細書において詳細に記載され、請求項に記載される本発明の一部とみなされる。
【０００８】
具体的には、本発明の態様を１つ以上取り上げて、本明細書の末尾にある請求項に実例として明確に記載する。本発明の上記およびその他の目的、特徴、および利点は、添付の図面とともに記載される以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【０００９】
【図１】本発明の１つ以上の態様を実装し使用する処理環境の一実施形態を示す図である。
【図２】本発明の１つ以上の態様による、図１のメモリの一実施形態のさらなる詳細を示す図である。
【図３】本発明の一態様による、図２のエミュレータのジャスト−イン−タイム・コンパイラの一実施形態のさらなる詳細を示す図である。
【図４】本発明の一態様による、トレース・ハンドルの定義に関連する論理の一実施形態を示す図である。
【図５】本発明の一態様による、トレース・ハンドルの使用に関連する論理の一実施形態を示す図である。
【図６】本発明の１つ以上の態様を実装するコンピュータ・プログラム製品の一実施形態を示す図である。
【発明を実施するための形態】
【００１０】
本発明の一態様によれば、メモリと無関係なトレース・ハンドルを定義する機能が提供される。具体的には、或るトレースに対して、トレース・ハンドルが、該トレースが存在するメモリ内の位置に依存することなく定義される。代わりにハンドルは、トレースの内容に基づく。これにより、トレースが定義される対象であるアプリケーションの複数実行にまたがって、ハンドルをうまく使用することができるようになる。
【００１１】
一例では、アプリケーションが、エミュレータである。エミュレータは、エミュレートされている命令をトレースするトレーシング機能（例えば、記録ルーチン）を含む。該トレーシング機能は、当初エミュレータが始動されるとオンになり、分岐など所定のポイントにてオフになる。上述の期間中に実行された一連の命令が、トレースと称される。分岐では、別のトレースが始動されて他の一連の命令の収集などが行われてもよい。エミュレータの実行中は、１つ以上のトレースが得られる。トレースの命令シーケンスには、複数のユーザ・アプリケーションおよびオペレーション・システムにまたがる命令のほか、トレースされているアプリケーションと通信するコードによる命令など、異なるコード境界にまたがる命令が含まれる。
【００１２】
本発明の１つ以上の態様が実装され使用される処理環境の一実施形態を、図１を参照して説明する。この例では、処理環境１００は、ネイティブ・アーキテクチャとも称される１つのアーキテクチャに基づいているが、ゲスト・アーキテクチャとも称される別のアーキテクチャをエミュレートする。例えば、ネイティブ・アーキテクチャは、ニューヨーク州アーモンク（Ａｒｍｏｎｋ）のインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるＰｏｗｅｒ４もしくはＰｏｗｅｒＰＣ（ＩＢＭ Corporation の登録商標）アーキテクチャ、またはインテル・コーポレーションによって提供されるＩｎｔｅｌ（登録商標）である。ゲスト・アーキテクチャは、同じくニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ Corporation の登録商標）である。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの態様については、「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、ＩＢＭ  Ｐｕｂｌｉｃａｔｉｏｎ  第ＳＡ２２−７８３２−０４号、２００５年９月、に記載されており、本文献は、これにより内容全体を参照によって本明細書に引用したものとする。
【００１３】
処理環境１００には、例えばネイティブ・プロセッサ１０２（例えば、中央処理装置（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ））、メモリ１０４（例えば、メイン・メモリ）および１つ以上の入力／出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）デバイス１０６が含まれており、これらは例えば１つ以上のバス１０８を介して、互いに接続されている。プロセッサ１０２は、例えば、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ（ＩＢＭ Corporation の登録商標）：Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ）が提供するｐＳｅｒｉｅｓ（ＩＢＭ Corporation の登録商標）サーバの一部である。ＩＢＭ、ｐＳｅｒｉｅｓ、ＰｏｗｅｒＰＣ、およびｚ／Ａｒｃｈｉｔｅｃｔｕｒｅは、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。Ｉｎｔｅｌは、Intel Corporationの登録商標である。このほか、本明細書にて使用される名称が、インターナショナル・ビジネス・マシーンズ・コーポレーションあるいはその他の会社の登録商標、商標、または製品名である場合もある。
【００１４】
ネイティブ中央処理装置１０２は、１つ以上の汎用レジスタまたは１つ以上の専用レジスタあるいはその両方など、環境内で処理中に使用される１つ以上のネイティブ・レジスタ１１０を含む。これらのレジスタには、或る特定の時点における環境の状態を示す情報が含まれる。
【００１５】
さらに、ネイティブ中央処理装置１０２は、メモリ１０４に保存されている命令およびコードを実行する。特定の一例では、この中央処理装置が、メモリ１０４に保存されたエミュレータ・コード１１２を実行する。このコードは、１つのアーキテクチャで構成された処理環境が別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード１１２によって、ｐＳｅｒｉｅｓサーバなど、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ以外のアーキテクチャに基づいているマシンが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅをエミュレートしてｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいて開発されたソフトウェアおよび命令を実行することが可能になる。
【００１６】
エミュレータ・コード１１２（エミュレータとも称される）に関するさらなる詳細を、図２を参照して説明する。一例では、エミュレータ・コード１１２には、メモリ１０４から１つ以上のゲスト命令を取得し、さらに必要に応じて１つ以上の取得された命令のローカル・バッファリングを提供する、命令フェッチ・ルーチン２００が含まれる。ゲスト命令２０２は、ネイティブＣＰＵ１０２のアーキテクチャとは異なるアーキテクチャで実行されるように開発されたソフトウェア命令（例えば、マシン命令）を含む。例えば、ゲスト命令２０２は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサ上で実行されるように設計されたものとすればよいが、これらの命令は、例えばｐＳｅｒｉｅｓサーバなどとすればよいネイティブＣＰＵ１０２上でエミュレートされる。
【００１７】
エミュレータ１１２には、さらに、取得されたゲスト命令のタイプを判断し、該ゲスト命令を１つ以上の対応するネイティブ命令２０８へ変換する、命令変換ルーチン２０４が含まれる。上述の変換には、例えば、ゲスト命令によって実行されるべき機能を特定すること、およびその機能を実行するネイティブ命令を選択することなどが含まれる。
【００１８】
さらに、エミュレータ１１２には、ネイティブ命令の実行を引き起こす、エミュレーション制御ルーチン２０６が含まれる。エミュレーション制御ルーチン２０６は、ネイティブＣＰＵ１０２に、以前に取得された１つ以上のゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、かかる実行の終わりには、次の単数または複数のゲスト命令の取得をエミュレートするべく命令フェッチ・ルーチンへ制御を返させるとよい。ネイティブ命令２０８の実行には、変換ルーチンによって指定されたように、データをメモリ１０４からレジスタへロードすること；データをレジスタからメモリへ再保存すること；あるいは何らかの算術的または論理的動作を実施することが含まれるとよい。
【００１９】
各ルーチンは、例えば、メモリに保存されネイティブ中央処理装置１０２によって実行されるソフトウェアで実現される。別の例では、ルーチンまたは動作の１つ以上が、ファームウェア、ハードウェア、ソフトウェアあるいはこれらの何らかの組み合わせで実現される。エミュレートされたゲスト・プロセッサのレジスタは、ネイティブＣＰＵのレジスタ１１０を用いてエミュレートされていてもよいし、またはメモリ１０４内の場所を使うことによってエミュレートされていてもよい。１つ以上の実施形態では、ゲスト命令２０２、ネイティブ命令２０８、およびエミュレーション・コード１１２が、同一のメモリ内に存在していてもよいし、あるいは別々のメモリ・デバイスに分散していてもよい。
【００２０】
一実施形態では、さらに、フェッチ・ルーチンおよび制御ルーチンよって処理された命令の蓄積が、ジャスト−イン−タイム・コンパイラ２１０へ提供される。ジャスト−イン−タイム・コンパイラは、命令を調べ、冗長性を排除する機会を探し、さらにエミュレータが動作しているネイティブ・プラットフォーム上にて命令の一致シーケンスを生成する、動的なコンパイラである。エミュレータが一度に１つの命令に対する可視性を有するのに対し、ジャスト−イン−タイム・コンパイラは、命令シーケンスに対する可視性を有する。命令シーケンスに対する可視性を有するということから、ジャスト−イン−タイム・コンパイラは、命令シーケンスにおける冗長性の探索を試みこれを排除することができる。ジャスト−イン−タイム・コンパイラの一例は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるＪＡＶＡ（登録商標）ジャスト−イン−タイム（ＪＩＴ：Ｊｕｓｔ−ｉｎ−Ｔｉｍｅ）コンパイラである。ＪＡＶＡは、カリフォルニア州サンタ・クララ（Ｓａｎｔａ  Ｃｌａｒａ）のSun Microsystemの登録商標である。
【００２１】
ＪＡＶＡ  ＪＩＴコンパイラの概要は、Ｔ．Ｓｕｇａｎｕｍａ他、「Ｏｖｅｒｖｉｅｗ  ｏｆ  ｔｈｅ  ＩＢＭ  Ｊｕｓｔ−ｉｎ−Ｔｉｍｅ  Ｃｏｍｐｉｌｅｒ」、第３９巻、第１号、２０００年、http://www.research.ibm.com/journal/sj/391/suganuma.htmlに記載されており、本文献は、これにより内容全体を参照によって本明細書に引用したものとする。さらにＪＩＴコンパイラの態様は、例えば、Ｖ．Ｔａｎｇ、Ｊ．Ｓｉｕ、Ａ．Ｖａｓｉｌｅｖｓｋｉｙ、Ｍ．Ｍｉｔｒａｎ、「Ａ  Ｆｒａｍｅｗｏｒｋ  Ｆｏｒ  Ｒｅｄｕｃｉｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｃｈｅｄｕｌｉｎｇ  Ｏｖｅｒｈｅａｄ  Ｉｎ  Ｄｙｎａｍｉｃ  Ｃｏｍｐｉｌｅｒｓ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２００６  Ｃｏｎｆｅｒｅｎｃｅ  ｏｆ  ｔｈｅ  Ｃｅｎｔｅｒ  ｆｏｒ  Ａｄｖａｎｃｅｄ  Ｓｔｕｄｉｅｓ  ｏｎ  Ｃｏｌｌａｂｏｒａｔｉｖｅ  ｒｅｓｅａｒｃｈ、論文５、２００６年；Ｔ．Ｓｕｇａｎｕｍａ、Ｔ．Ｙａｓｕｅ、Ｍ．Ｋａｗａｈｉｔｏ、Ｈ．ＫｏｍａｔｓｕおよびＴ．Ｎａｋａｔａｎｉ、「Ａ  Ｄｙｎａｍｉｃ  Ｏｐｔｉｍｉｚａｔｉｏｎ  Ｆｒａｍｅｗｏｒｋ  Ｆｏｒ  Ａ  Ｊａｖａ  Ｊｕｓｔ−Ｉｎ−Ｔｉｍｅ  Ｃｏｍｐｉｌｅｒ」、ＡＣＭ  ＳＩＧＰＬＡＮ、第３６巻、第１１号、２００１年１１月；Ｃ．Ａ．Ｗａｌｄｓｐｕｒｇｅｒ、「Ｍｅｍｏｒｙ  Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｍｅｎｔ  ｉｎ  ＶＭｗａｒｅ  ＥＳＸ  Ｓｅｒｖｅｒ」、Ｉｎ  Ｐｒｏｃ．Ｆｉｆｔｈ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｄｅｓｉｇｎ  ａｎｄ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  （ＯＳＤＩ’０２）、２００２年１２月、にも記載されており、これらの各文献は、これにより内容全体を参照によって本明細書に引用したものとする。
【００２２】
ジャスト−イン−タイム・コンパイラは、さらに、エミュレータによってもたらされるトレースの、メモリと無関係なトレース・ハンドルを提供する機能をも含む。例えば、エミュレータは、記録ルーチンを用いて、連続的に実行された一連の命令を追跡する。この一連の命令（言い換えれば、トレース）はジャスト−イン−タイム・コンパイラへ転送され、ジャスト−イン−タイム・コンパイラが、該トレースのハンドルを作成する。このハンドルは、メモリ位置ではなく、トレースの内容に基づいている。ジャスト−イン−タイム・コンパイラのこの特徴を、図３を参照して説明する。
【００２３】
図３を参照すると、ジャスト−イン−タイム・コンパイラ３００には、ハッシュ・エンコーダなどのエンコーダ３０２が含まれ、該エンコーダは、命令トレース３０４を入力として取得し（例えば、受信したり、保持したり、フェッチしたり、提供されたりなど）、出力としてｎビットのキー３０６を提供する。このキーは、例えば、トレースのハンドルとして使用される１２８ビットのハッシュ・コードである。上述のハンドルは、命令トレースの内容に基づいており、トレースのメモリ内の位置には依存していない。従って、トレース・ハンドルは、メモリと無関係である。
【００２４】
トレース・ハンドルの作成に関するさらなる詳細を、図４を参照して説明する。一実施形態では、処理環境内でトレーシングが開始され（例えば、エミュレータがトレースされる）、命令シーケンスを含むトレースが作り出される。ステップ４００にて、命令シーケンス（別の実施形態ではトレースまたはその一部のこと）が、エンコーダへ入力される。本例では、ステップ４０２にて、エンコーダが、入力されたトレースに対するハッシュ・エンコーディングを実施する。一例では、使用されるハッシュ・コード機能がＭＤ５である。ＭＤ５の実施形態については、Ｒ．Ｒｉｖｅｓｔ、「Ｔｈｅ  ＭＤ５  Ｍｅｓｓａｇｅ−Ｄｉｇｅｓｔ  Ａｌｇｏｒｉｔｈｍ」、１９９２年４月、http://www.ietf.org/rfc/rfc1221.txt.に記載されており、本文献は、これにより内容全体を参照によって本明細書に引用したものとする。一例としてＭＤ５を提示するが、その他多数のハッシュ技術を用いることが可能である。どのハッシュ技術を選ぶかによって、２つの別個のトレースが結果的に同一のキーとなってしまう可能性が決まる。一方、ＭＤ５などのアルゴリズムでは、その可能性は兆候を示さないほど小さく、故に、この機能は、ＪＩＴなどの動的コンパイラでの使用に適する。
【００２５】
ステップ４０４にて、ハッシュ・エンコーディングの出力はキーである。この特定の実施形態では、キーは、トレースの識別子（言い換えれば、ハンドル）である、１２８ビットのハッシュ・コードである。本例では、ハンドルは１２８ビットであるが、別の実施形態では、ハンドルを別の長さにすることができる。
【００２６】
トレース・ハンドルとして作成され使用されるキーは、メモリ位置に基づいておらず、代わりにトレースの内容に基づいている。例えば、エンコーダが、トレースの命令各々（または選択された命令群）の１つ以上のビットを選択し、これらの選択されたビットをエンコードしてｎビットのキーを作り出す。このｎビットのキーが、ハンドルとして使用される。ハンドルがメモリ位置に基づかないので、トレースがメモリ内のどこに存在するのかにかかわらず、かつアプリケーションの複数実行にまたがって、ハンドルが同一のトレースを特定する。
【００２７】
一例においては、作成されたトレース・ハンドルが、アプリケーション（例えば、エミュレータ）の後続する実行の間、トレースを監視するのに用いられる。例えば、或るトレースの特定例であるｍｙ＿Ｔが、監視対象であると仮定する。このトレースがエンコードされ、ハンドルｍｙ＿ｈ＿ｔが作成される。その後、アプリケーションが１回以上再実行されて、その結果１つ以上のトレースが作り出される。これらのトレースに対しハンドル群が作成され、次いでｍｙ＿ｈ＿ｔと一致するハンドルを探し出すべく、それらのハンドル群の中の検索が実施される。一致したハンドルは、固有のトレースを特定する。このことを、図５を参照してさらに詳細に説明する。
【００２８】
図５を参照すると、この例では、エミュレータが１回以上再始動されることを前提としている。例えば、エミュレータが始動され、１つ以上のトレースが生成されてから、問題が検出される。その後、エミュレータが再始動される。ステップ５００では、これが１回以上行われ、エミュレータの実行の各々（例えば、Ｔ０、Ｔ１、Ｔ２）に対して１つ以上のトレースが生成されるとよい。ステップ５０２では、各トレースのハンドルが作成されるように、各トレースがエンコードされる。例えば、エミュレータ・コードがハッシュ関数Ｈを使って各トレースをエンコードすると、例として以下が得られる：
Ｈ（Ｔ０）＝ｈ＿ｔ０
Ｈ（Ｔ１）＝ｈ＿ｔ１
・・・
Ｈ（Ｔｎ）＝ｈ＿ｔｎ
本例では、エミュレータが、ｍｙ＿ｈ＿ｔによって特定されるトレースに対し、監視可能なハンドルを提供するよう指示されている。例えば、ｍｙ＿ｈ＿ｔによって特定される命令シーケンスが、問題の原因または関心の対象であると考えられる。このため、そのトレースの位置を突き止めなければならない。そのトレースのメモリ位置は不明であるため、トレースの検索が実施される。検索を実施するのに、トレースの命令群の代わりに、トレースのハンドルが使用される。一例では、検索の実施に当たり、ステップ５０４にて、アプリケーションの１つ以上の実行の間に作り出された或るハンドルがＪＩＴによって選択され、ステップ５０６にて、所与のハンドル（例えば、ｍｙ＿ｈ＿ｔ）と比較される。問い合わせ５０８にて、これらのハンドルが同一でなければ、問い合わせ５１０に進み、比較されるべきその他のハンドルがあるのか判断される。その他のハンドルがある場合には、ステップ５０４「作成されたハンドルを選択」から処理を継続する。一方、比較されるべきハンドルがそれ以上ない場合は、その後ステップ５１２にて、処理を終了する。
【００２９】
一方、問い合わせ５０８での比較の結果、一致が得られれば、ステップ５１４に進み、関心の対象である固有のトレースが特定される。シーケンスが見つかれば、それを、所望するあらゆるやり方で使用することが可能である。例えば、トレースのＪＩＴの動作を無効にすること、トレース上で最適化を有効にすることなどが可能であり、選択肢は無限である。
【００３０】
上記に詳述されているのは、メモリと無関係なトレース・ハンドルを定義および使用する機能である。一例では、ハッシュ・エンコーディング機能が、トレースと称される連続的に実行される命令のシーケンスを、ｎビット幅のハンドルに変換する。エンコーディングでは、命令シーケンスのメモリ位置が計算に入れられることはないので、このエンコーディングはメモリと無関係である。これにより、ハンドルを、元の命令シーケンスよりもずっと取り扱いしやすいように定義可能となる。具体的には、命令シーケンス全体の代わりにハンドルを使って、関心の対象である当初の命令シーケンスを再捕捉することができる。
【００３１】
本発明の１つ以上の態様は、例えばコンピュータ使用可能な媒体を有する製品（例えば、1つ以上のコンピュータ・プログラム製品）に含めることができる。媒体は、例えば、本発明の機能を提供し円滑化するコンピュータ可読プログラム・コード手段または論理（例えば、命令、コード、コマンドなど）を、内部に有する。製品は、コンピュータ・システムの一部として包含されている場合もあり、あるいは別途販売されている場合もある。
【００３２】
本発明の１つ以上の態様を実装している製品またはコンピュータ・プログラム製品の一例を、図６を参照して説明する。コンピュータ・プログラム製品６００は、例えばコンピュータ可読のプログラム・コード手段または論理６０４を保存する、１つ以上のコンピュータ使用可能な媒体６０２を含み、本発明の１つ以上の態様を提供し容易にする。本媒体は、電子、磁気、光、電磁気、赤外線、または半導体のシステム（または装置もしくはデバイス）あるいは伝搬媒体とすることができる。コンピュータ可読媒体の例としては、半導体すなわちソリッド・ステートのメモリ、磁気テープ、着脱可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、固定型磁気ディスクおよび光ディスクが挙げられる。光ディスクの例としては、コンパクト・ディスク−読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、コンパクト・ディスク−読み／書き（ＣＤ−Ｒ／Ｗ：ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ／ｗｒｉｔｅ）およびＤＶＤが挙げられる。
【００３３】
１つ以上のコンピュータ可読プログラム・コード手段または論理によって定義された、プログラム命令のシーケンスまたは１つ以上の互いに関連するモジュールの論理アセンブリが、本発明の１つ以上の態様の実施を指示する。
【００３４】
メモリと無関係なトレース・ハンドルを定義する機能が、有利に提供される。本機能により、トレースがメモリ内のどこに存在するのかに関係なく、一意のトレース・ハンドルを作り出すことが可能になる。任意の長さの命令シーケンスが、マッピング機能を介して作り出された固定長の表現によって示される。例えば、命令１０００個の長さのシーケンスが、１２８ビットのバイナリ・パターンによって示される。故に、アプリケーションが再実行され上述の命令１０００個が監視対象になる場合に、命令１０００個全部の代わりに１２８ビットのパターンを使って、シーケンスの位置が突き止められる。
【００３５】
本機能は、アプリケーションの境界にまたがるトレースにＪＩＴなどの動的コンパイラがラベル付けするのに、有利に使用することができる。アプリケーションの後続する実行において、ハンドルを使用してトレースの位置を突き止める。
【００３６】
上記には様々な実施形態が記載されているが、これらは単なる例に過ぎない。例えば、処理環境には、Ｐｏｗｅｒ４、ＰｏｗｅｒＰＣ、またはＩｎｔｅｌ以外のアーキテクチャに基づいた処理ユニットを含めることができる。加えて、ｐＳｅｒｉｅｓサーバ以外のサーバが、本発明の１つ以上の態様を実装し使用することもできる。さらに、処理環境は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ以外の環境をエミュレートすることができる。加えて、様々なエミュレータが使用可能である。エミュレータは、市販されておりかつ様々な会社によって提供されている。その上、処理環境は、エミュレータ・コードを含んでいる必要はない。その他多数のタイプの処理環境によって、本発明の１つ以上の態様を実装または使用あるいはその両方を行うことができる。
【００３７】
さらに、エンコーディング機能の例が提示されているが、ハッシュおよび非ハッシュ機能を含むその他多数のエンコーディング技術を使用することができる。ＭＤ５は、単なる一例として提示されている。
【００３８】
加えて、エミュレータは、アプリケーションの単なる一例に過ぎない。他のタイプのアプリケーションをトレースすることもでき、そうしたトレースに対してトレース・ハンドルが求められればよい。その上、アプリケーションは様々な理由から再始動することができ、あるいはトレースは様々な理由から監視することができる。本明細書に提示する例は、単なる例に過ぎない。
【００３９】
さらになお、１つ以上の実施形態において、プログラム・コードの保存または実行あるいはその両方に適したデータ処理システムが使用可能であり、該データ処理システムは、システム・バスを通じて直接的または間接的にメモリ要素に接続されている少なくとも１つのプロセッサを含む。メモリ要素としては、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量ストレージ、およびキャッシュ・メモリが挙げられる。キャッシュ・メモリは、実行中に大容量ストレージからコードを検索しなければならない回数を減らすために、少なくとも一部のプログラム・コードの一時ストレージを提供するものである。入力／出力すなわちＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブおよびその他のメモリ媒体などを含むがこれらに限定されない）を、直接的にあるいは介在するＩ／Ｏコントローラを通じて、システムに接続することができる。さらに、ネットワーク・アダプタをシステムに接続して、データ処理システムが、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、他のデータ処理システムまたはリモートのプリンタもしくはストレージ・デバイスに接続できるようにしてもよい。モデム、ケーブル・モデム、Ｅｔｈｅｒｎｅｔ（Ｒ）カードは、入手可能な各種ネットワーク・アダプタのほんの一部に過ぎない。
【００４０】
本明細書で用いられる用語「取得する（こと）」とは、フェッチすること、受信すること、有すること、提供すること、提供されること、作成すること、開発することなどを含むが、これらに限定されない。
【００４１】
本発明の１つ以上の態様の機能は、ソフトウェア、ファームウェア、ハードウェアまたはそれらの何らかの組み合わせで実現することができる。本発明の機能を実施するべくマシンによって実行可能な命令の少なくとも１つのプログラムを具現化し、該マシンによって読み出すことのできる少なくとも１つのプログラム・ストレージ・デバイスを、提供することができる。
【００４２】
本明細書に示されるフロー図は、単なる例に過ぎない。これらのフロー図またはそこに記載されたステップ群（あるいは諸動作）に対しては、本発明の精神から逸脱することなく、多数の変形を施し得る。例えば、ステップを異なった順序で実施してもよいし、あるいはステップの追加、削除、または変更を行ってもよい。こうした変形例は全て、請求項に記載される本発明の一部とみなされる。
【００４３】
本明細書にて実施形態を詳細に示し説明してきたが、当業者には当然のことながら、本発明の精神から逸脱することなく、多様な変更、追加、置換などを行うことが可能であり、故にこれらも、以下の請求項にて定義される本発明の精神の範囲内にあるものとみなされる。
【図１】
2010517128.tif 000003
【図２】
2010517128.tif 000004
【図３】
2010517128.tif 000005
【図４】
2010517128.tif 000006
【図５】
2010517128.tif 000007
【図６】
2010517128.tif 000008
【国際調査報告】
2010517128.tif 000009
2010517128.tif 000010
2010517128.tif 000011