(57)【特許請求の範囲】
【請求項１】
プロセッサに対してインメモリ・トレース（ＩＭＴ）データ・キャプチャを開始することを含み、ＩＭＴデータは、命令が前記プロセッサの実行パイプラインを通って流れている間に収集される命令トレースであり、
アーキテクチャ上のレジスタの内容を、
前記アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び
ロード・ストア・ユニット（ＬＳＵ）に前記所定のメモリ位置の内容を読み出させること
によってキャプチャすることを含む、コンピュータ実装される方法。
【請求項２】
前記ＬＳＵに前記所定のメモリ位置の内容を読み出させることは、前記ＩＭＴデータ・キャプチャにおいて、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを生成することを含む、請求項１に記載のコンピュータ実装される方法。
【請求項３】
前記アーキテクチャ上のレジスタの内容は、ブレークポイントに応答してキャプチャされる、請求項１に記載のコンピュータ実装される方法。
【請求項４】
前記アーキテクチャ上のレジスタの内容は、前記ＩＭＴデータ・キャプチャが拡張ＩＭＴモードで初期化されていることに応答してキャプチャされる、請求項１に記載のコンピュータ実装される方法。
【請求項５】
前記ＩＭＴデータ・キャプチャは、前記命令のオペランドの値を含む、請求項４に記載のコンピュータ実装される方法。
【請求項６】
オペランドの値は、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを用いてキャプチャされ、前記オペランドのアドレスは、ソースオペランド・レコード又は宛先オペランド・レコードを用いてキャプチャされる、請求項５に記載のコンピュータ実装される方法。
【請求項７】
前記メモリフェッチ制御レコードの構造が前記プロセッサの型式に基づくものである、請求項２に記載のコンピュータ実装される方法。
【請求項８】
前記アーキテクチャ上のレジスタの内容は、前記プロセッサによって所定の数の命令が実行されるたびにその後キャプチャされる、請求項１に記載のコンピュータ実装される方法。
【請求項９】
前記プロセッサは、第１のプロセッサであり、前記方法は、
ＩＭＴキャプチャ・データからの前記アーキテクチャ上のレジスタの内容にアクセスすることによって、前記ＩＭＴキャプチャ・データを用いて前記第１のプロセッサによってトレースされた命令を、第２のプロセッサを用いて実行することをさらに含む、
請求項１に記載のコンピュータ実装される方法。
【請求項１０】
ＩＭＴキャプチャ・データからの前記アーキテクチャ上のレジスタの内容にアクセスすることによって、前記ＩＭＴキャプチャ・データを用いて前記プロセッサによってトレースされた命令を、シミュレートされたプロセッサを用いて実行することをさらに含む、請求項１に記載のコンピュータ実装される方法。
【請求項１１】
前記ＩＭＴデータをキャプチャする前に、第１のＡＶＰファイルを用いて擬似ＩＭＴキャプチャを生成すること、
前記擬似ＩＭＴを用いて第２のＡＶＰファイルを生成すること、及び
前記第１のＡＶＰファイルと前記第２のＡＶＰファイルとを比較すること、
によってＩＭＴデータレコードを検証することをさらに含む、請求項１に記載のコンピュータ実装される方法。
【請求項１２】
メモリと、
前記メモリに結合されたプロセッサと、
を含むシステムであって、前記プロセッサが、
インメモリ・トレース（ＩＭＴ）データ・キャプチャを開始する要求を受け取り、ＩＭＴデータは、命令が前記プロセッサの実行パイプラインを通って流れている間に収集される命令トレースであり、
前記ＩＭＴデータにおける前記プロセッサのアーキテクチャ上のレジスタの内容を
前記アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び
ロード・ストア・ユニット（ＬＳＵ）に前記所定のメモリ位置の内容を読み出させること
によってキャプチャする
ように構成された、システム。
【請求項１３】
前記所定のメモリ位置の内容を前記ＬＳＵに読み出させることは、キャプチャされたＩＭＴデータにおいて、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを生成することを含む、請求項１２に記載のシステム。
【請求項１４】
前記アーキテクチャ上のレジスタの内容は、ブレークポイントに応答してキャプチャされる、請求項１２に記載のシステム。
【請求項１５】
前記アーキテクチャ上のレジスタの内容は、前記ＩＭＴデータ・キャプチャが拡張ＩＭＴモードで初期化されていることに応答してキャプチャされる、請求項１２に記載のシステム。
【請求項１６】
前記ＩＭＴデータ・キャプチャは、前記命令のオペランドの値を含む、請求項１５に記載のシステム。
【請求項１７】
オペランドの値は、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを用いてキャプチャされ、前記オペランドのアドレスは、ソースオペランド・レコード又は宛先オペランド・レコードを用いてキャプチャされる、請求項１６に記載のシステム。
【請求項１８】
前記プロセッサは、第１のプロセッサであり、前記システムは、
ＩＭＴキャプチャ・データからの前記アーキテクチャ上のレジスタの内容にアクセスすることによって、前記ＩＭＴキャプチャ・データを用いて前記第１のプロセッサによってトレースされた命令を実行するように構成された、第２のプロセッサをさらに含む、
請求項１２に記載のシステム。
【請求項１９】
前記ＩＭＴデータからの前記アーキテクチャ上のレジスタの内容にアクセスすることによって、前記ＩＭＴデータを用いて前記プロセッサによってトレースされた命令を実行するように構成された、シミュレートされたプロセッサをさらに含む、請求項１２に記載のシステム。
【請求項２０】
請求項１〜１１の何れか１項に記載の各ステップをコンピュータに実行させる、コンピュータプログラム。
【請求項２１】
請求項２０に記載のコンピュータプログラムを、コンピュータ可読ストレージ媒体に記録した、コンピュータ可読ストレージ媒体。
【請求項２２】
プロセッサをテストするための装置であって、
プロセッサに対してインメモリ・トレース（ＩＭＴ）データ・キャプチャを開始する要求を受け取り、ＩＭＴデータは、命令が前記プロセッサの実行パイプラインを通って流れている間に収集される命令トレースであり、
前記ＩＭＴデータにおける前記プロセッサのアーキテクチャ上のレジスタの内容を
前記アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び
ロード・ストア・ユニット（ＬＳＵ）に前記所定のメモリ位置の内容を読み出させること
によってキャプチャし、
キャプチャされたＩＭＴデータを用いてテストシーケンスを生成し、前記テストシーケンスは、前記命令と、前記キャプチャされたＩＭＴデータからの前記アーキテクチャ上のレジスタの内容とを含み、
前記テストシーケンスを第２のプロセッサを用いて実行する
ように構成された、装置。
【請求項２３】
プロセッサをテストするためのコンピュータ実装される方法であって、
プロセッサに対してインメモリ・トレース（ＩＭＴ）データ・キャプチャを開始することを含み、命令がＩＭＴデータは、前記プロセッサの実行パイプラインを通って流れている間に収集される命令トレースであり、
拡張モードで開始されたＩＭＴデータ・キャプチャに応答して、前記ＩＭＴデータにおける前記プロセッサのアーキテクチャ上のレジスタの内容を、
前記アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び
ロード・ストア・ユニット（ＬＳＵ）に前記所定のメモリ位置の内容を読み出させること
によってキャプチャし、
キャプチャされたＩＭＴデータを用いてテストシーケンスを生成し、前記テストシーケンスは、前記命令と、前記キャプチャされたＩＭＴデータからの前記アーキテクチャ上のレジスタの内容と、オペランド・データとを含み、
前記テストシーケンスを第２のプロセッサを用いて実行すること
を含む、コンピュータ実装される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータシステム性能のモデル化に関し、より具体的には改善されたトレースデータを提供することに関する。
【背景技術】
【０００２】
多重仮想アドレス空間における仮想アドレス指定を用いるデータ処理システムは、周知である。多くのデータ処理システムは、例えば、中央処理ユニット（ＣＰＵ）と主ストレージとを含む。ＣＰＵは、命令実行、割込み動作、タイミング機能、初期プログラムロード、及び他のマシン関連機能のためのシーケンシング及び処理ファシリティを含む。主ストレージは、直接アドレス指定可能であり、ＣＰＵによるデータの高速処理を提供する。
主ストレージは、ＣＰＵに物理的に組み込まれる場合もあり、又はスタンドアロンユニットに構築される場合もある。
【０００３】
一般に、主ストレージ内にはアドレス空間が存在し、ここでアドレス空間は、整数の連続的シーケンス（又は仮想アドレス）であり、各数をストレージ内のバイト位置に関連付けることを可能にする特定の変換パラメータが共にある。シーケンスは、ゼロから始まって左から右に進む。
【０００４】
仮想アドレスがＣＰＵによって主ストレージにアクセスするために使用されるとき、これは最初に動的アドレス翻訳（ＤＡＴ）によって実アドレスに変換され、次いでプレフィックス付加によって絶対アドレスに変換される。ＤＡＴは、変換パラメータとして種々のレベルのテーブルを用い、コンピュータシステムの仮想アドレスを翻訳テーブルによって実アドレスに翻訳する。テーブルの指示（designation）（従来は、起点及び長さを含む）は、ＤＡＴによる使用のために制御レジスタ内に見いだされ又はアクセスレジスタによって指定された通りである。
【０００５】
トレーシングは、有意事象のストレージにおける進行中のレコード、又はベンチマークを提供することによって、データ処理システム内に問題が存在するかどうかの判断を支援する。トレーシング・システムの一例は、コンソール監視システム（Console Monitoring System：ＣＭＳ）付属トレーシング・システム（Adjunct  Tracing System：ＣＡＴＳ）であり、これは、データ処理システムを通して命令を処理している間にキャプチャされたアーキテクチャ上の命令レコードの、コヒーレントで、順次の、概ね連続したセットから成る。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第７，９７５，１８２号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、メモリデータ内容を含むハードウェア命令トレースを生成及び検証するための方法、プログラム、コンピュータ可読ストレージ媒体を提供することである。
【課題を解決するための手段】
【０００８】
本発明の実施形態は、メモリデータ内容を含むハードウェア命令トレースを生成及び検証するためのコンピュータ実装される方法に向けられる。本方法は、プロセッサに対してインメモリ・トレース（ＩＭＴ）データ・キャプチャを開始することを含み、ＩＭＴデータは、命令がプロセッサの実行パイプラインを通って流れている間に収集される命令トレースである。本方法は、アーキテクチャ上のレジスタの内容を、アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び、ロード・ストア・ユニット（ＬＳＵ）に所定のメモリ位置の内容を読み出させることによって、キャプチャすることをさらに含む。
【０００９】
１つ又は複数の例において、ＬＳＵに所定のメモリ位置の内容を読み出させることは、ＩＭＴデータ・キャプチャにおいて、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを生成することを含む。１つ又は複数の例において、メモリフェッチ制御レコードの構造は、プロセッサの型式に基づく。
【００１０】
１つ又は複数の例において、命令のオペランドの内容は、ブレークポイントに応答してキャプチャされる。例えば、ブレークポイントは、時間依存的ストア位置からのフェッチ命令である。例えば、ブレークポイントは、入力−出力型命令である。例えば、ブレークポイントは、外部割込みである。
【００１１】
１つ又は複数の例において、アーキテクチャ上のレジスタの内容は、ＩＭＴデータ・キャプチャが拡張ＩＭＴモードで初期化されていることに応答してキャプチャされる。さらに、１つ又は複数の例において、拡張ＩＭＴモードにおいて、ＩＭＴデータ・キャプチャは、実行されている命令のオペランドの値を含む。オペランドの値は、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを用いてキャプチャされ、そのアドレスは、ソースオペランド・レコード及び／又は宛先オペランド・レコードを用いてキャプチャされる。
【００１２】
１つ又は複数の例において、アーキテクチャ上のレジスタの内容は、プロセッサによって所定の数の命令が実行されるたびにその後キャプチャされる。
【００１３】
１つ又は複数の例において、プロセッサは、第１のプロセッサであり、本方法は、ＩＭＴキャプチャ・データを用いて第１のプロセッサによってトレースされた命令を、第２のプロセッサを用いて実行することをさらに含む。
【００１４】
１つ又は複数の例において、本方法は、ＩＭＴキャプチャ・データを用いてプロセッサによってトレースされた命令を、シミュレートされたプロセッサを用いて実行することをさらに含む。
【００１５】
１つ又は複数の例において、オペランドの内容は、ＩＭＴデータ・キャプチャが拡張ＩＭＴモードで開始されたことに応答してキャプチャされる。説明される技術の実装は、ハードウェア、方法若しくはプロセス、又はコンピュータアクセス可能媒体上のコンピュータソフトウェアを含むことができる。
【００１６】
さらに、１つ又は複数の例において、本方法は、ＩＭＴデータをキャプチャする前に、ＩＭＴデータレコードを検証することをさらに含む。検証は、第１のＡＶＰファイルを用いて擬似ＩＭＴキャプチャを生成すること、擬似ＩＭＴを用いて第２のＡＶＰファイルを生成すること、及び、第１のＡＶＰファイルと前記第２のＡＶＰファイルとを比較することをさらに含む、
【００１７】
本発明の実施形態は、メモリデータ内容を含むハードウェア命令トレースを生成及び検証するためのシステムに向けられる。システムの非限定的な例は、互いに結合されたメモリとプロセッサとを含む。プロセッサは、インメモリ・トレース（ＩＭＴ）データ・キャプチャを開始する要求を受け取り、ＩＭＴデータは、命令がプロセッサの実行パイプラインを通って流れている間に収集される命令トレースである。プロセッサは、ＩＭＴデータにおけるプロセッサのアーキテクチャ上のレジスタの内容を、アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び、ロード・ストア・ユニット（ＬＳＵ）に記所定のメモリ位置の内容を読み出させることによってキャプチャする。
【００１８】
本発明の実施形態は、メモリデータ内容を含むハードウェア命令トレースを生成及び検証するためのコンピュータプログラム製品に向けられる。コンピュータプログラム製品は、具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含む。プログラム命令は、プロセッサによって実行可能であり、該プロセッサに、ある方法を行わせる。この方法の非限定的な例は、プロセッサに対してインメモリ・トレース（ＩＭＴ）データ・キャプチャを開始することを含み、ＩＭＴデータは、命令がプロセッサの実行パイプラインを通って流れている間に収集される命令トレースである。この方法は、プロセッサのアーキテクチャ上のレジスタの内容を、アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び、ロード・ストア・ユニット（ＬＳＵ）に所定のメモリ位置の内容を読み出させることによってキャプチャすることをさらに含む。
【００１９】
さらに、本発明の実施形態は、プロセッサをテストするための装置を含む。装置は、テストシステムとすることができる。装置は、プロセッサに対してインメモリ・トレース（ＩＭＴ）データ・キャプチャを開始する要求を受け取り、ＩＭＴデータは、命令がプロセッサの実行パイプラインを通って流れている間に収集される命令トレースである。装置は、ＩＭＴデータにおけるプロセッサのアーキテクチャ上のレジスタの内容を、アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び、ロード・ストア・ユニット（ＬＳＵ）に所定のメモリ位置の内容を読み出させることによってキャプチャする。装置はさらに、キャプチャされたＩＭＴデータを用いてテストシーケンスを生成し、テストシーケンスは、命令と、キャプチャされたＩＭＴデータからのアーキテクチャ上のレジスタの内容とを含む。装置はさらに、テストシーケンスを第２のプロセッサを用いて実行する。
【００２０】
さらにまた、本発明の実施形態は、プロセッサをテストするためのコンピュータ実装される方法を含み、この方法は、プロセッサに対してインメモリ・トレース（ＩＭＴ）データ・キャプチャを開始することを含み、ＩＭＴデータは、命令がプロセッサの実行パイプラインを通って流れている間に収集される命令トレースである。方法はさらに、拡張モードで開始されたＩＭＴデータ・キャプチャに応答して、ＩＭＴデータにおけるプロセッサのアーキテクチャ上のレジスタの内容を、アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び、ロード・ストア・ユニット（ＬＳＵ）に所定のメモリ位置の内容を読み出させることによってキャプチャすることを含む。コンピュータ実装される方法はまた、キャプチャされたＩＭＴデータを用いてテストシーケンスを生成することを含み、テストシーケンスは、命令と、キャプチャされたＩＭＴデータからのアーキテクチャ上のレジスタの内容とを含む。コンピュータ実装される方法はまた、テストシーケンスを第２のプロセッサを用いて実行することを含む。
【００２１】
付加的な技術的特徴及び利益が、本発明の技術を通じて実現される。本発明の実施形態及び態様は、本明細書で詳細に説明され、特許請求される主題の一部であるとみなされる。より良い理解のために、詳細な説明及び図面を参照されたい。
【００２２】
本明細書において説明される排他的権利の細目は、本明細書の結論部にある特許請求の範囲において具体的に指摘されるとともに明確に特許請求される。
本発明の実施形態の上記及び他の特徴及び利点は、添付の図面との関連で解釈される以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００２３】
【図１】本明細書で説明する１つ又は複数の技術的解決策を実装するためのシステムの例示的な実施形態を示す。
【図２】トレースセグメントテーブルの例示的な実施形態を示す。
【図３】本明細書で説明するトレースデータを生成するための方法を示す。
【図４】本明細書で説明するトレースデータを生成するための方法を示す。
【図５】本明細書で説明するトレースデータを生成するための方法を示す。
【図６】本明細書で説明するトレースデータを生成するための方法を示す。
【図７】本発明の１つ又は複数の実施形態によるＩＭＴのキャプチャを示す。
【図８】本発明の１つ又は複数の実施形態によるＩＭＴのキャプチャを示す。
【図９】本発明の１つ又は複数の実施形態による、ＩＭＴにおけるメモリデータ内容をキャプチャするための例示的な方法のフローチャートを示す。
【図１０】本発明の１つ又は複数の実施形態による、ＩＭＴキャプチャにおけるメモリからデータ内容をキャプチャするのに用いられる例示的なＭＦＣレコードを示す。
【図１１】本発明の１つ又は複数の実施形態による、例示的なＭＦＤレコードを示す。
【図１２】本発明の１つ又は複数の実施形態による、メモリデータ内容を検証するための例示的な方法のフローチャートを示す。
【図１３】本発明の１つ又は複数の実施形態による、例示的なソースオペランド（ＳＲＣＯＰ）レコードを示す。
【図１４】本発明の１つ又は複数の実施形態による、例示的な宛先オペランド（ＤＳＴＯＰ）レコードを示す。
【発明を実施するための形態】
【００２４】
本明細書で示す図は例証的である。本発明の思想から逸脱することなく、この図又はその中に記載された動作に対する多くの変形が存在し得る。例えば、動作は、異なる順序で行うこともでき、又は動作を追加、削除若しくは変更することもできる。また、「結合」という用語及びその変形は、２つの要素間に連通経路を有することを説明するものであり、間に介在する要素／接続を伴わない要素間の直接接続を含意したものではない。これらの変形の全ては、明細書の一部とみなされる。
【００２５】
添付の図面及び以下の開示される実施形態の詳細な説明において、図中に示された種々の要素には２桁又は３桁の参照番号が付される。多少の例外を除いて、各参照番号の左端の桁は、その要素が最初に示された図面に対応する。
【００２６】
本発明の種々の実施形態を、関連図面を参照して本明細書において説明する。本発明の代替的な実施形態を、本発明の思想から逸脱することなく考案することができる。種々の接続及び位置的関係（例えば、上、下、隣接など）が、以下の説明及び図面内の要素間で述べられている。これらの接続及び／又は位置的関係は、特段の指示のない限り、直接又は間接とすることができ、本発明は、この点に関して制限することを意図しない。従って、エンティティの結合は、直接的又は間接的な結合のいずれかを指すものとすることができ、エンティティ間の位置的関係は、直接的又は間接的な位置関係とすることができる。
さらに、本明細書で説明する種々のタスク及びプロセスステップは、本明細書では詳細に説明しない付加的なステップ又は機能を有する、より包括的な手順又はプロセスに組み込むことができる。
【００２７】
以下の定義及び略語は、特許請求の範囲及び明細書を解釈するために使用されるものとする。本明細書で用いられる場合、「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、「収容する」又は「収容している」という用語又はいずれかの他のそれらの変形は、非排他的包含を意図する。例えば、要素のリストを含む組成物、混合物、プロセス、方法、物品、又は装置は、必ずしもそれらの要素にのみ限定されるものではなく、明示的に列挙されていない他の要素、又はこのような組成物、混合物、プロセス、方法、物品、又は装置に固有の要素を含むことができる。
【００２８】
さらに、「例示的」という用語は、本明細書において、「例、事例、又は例証として役立つ」ことを意味する。本明細書において「例示的」と説明されたいずれの実施形態又は設計も、必ずしも他の実施形態又は設計と比べて好ましい又は有利であると解釈すべきではない。「少なくとも１つの」及び「１つ又は複数の」という用語は、１より大きい又は等しい任意の整数、すなわち１、２、３、４などを含むものとして理解することができる。「複数の」という用語は、２より大きい又は等しい任意の整数、すなわち２、３、４、５などを含むものとして理解することができる。「接続」という用語は、間接的「接続」及び直接的「接続」の両方を含むことができる。
【００２９】
「約」、「実質的」、「およそ」という用語及びそれらの変形は、出願の時点で利用可能な装置に基づく特定の量の測定に関連した誤差の程度を含むことが意図される。例えば、「約」は、所与の値の±８％又は５％、又は２％の範囲を含むことができる。
【００３０】
簡略にするために、本発明の態様の作成及び使用に関連した従来の技術は、本明細書において詳細に説明している場合も、していない場合もある。特に、本明細書で説明する種々の技術的特徴を実装するためのコンピューティングシステム及び特定のコンピュータプログラムの種々の態様は周知である。従って、簡略にするために、多くの従来の実装の詳細は、本明細書では簡潔に述べるだけにするか、又は周知のシステム及び／又はプロセスの詳細は提供せずに完全に省略される。
【００３１】
ここで、本発明の態様に特に関連する技術の概要に目を向けると、コンピュータサーバのようなデータ処理システムは、命令が実行パイプラインを通って流れる間にハードウェアによって収集される命令トレースを含む、インメモリ・トレース（ＩＭＴ）データをキャプチャする。例えば、ｚ  Ｓｙｓｔｅｍｓ（登録商標）プロセッサコアのようなデータ処理システムは、ハードウェア命令トレースをＩＭＴデータとしてキャプチャする機能を含む。ＩＭＴデータをキャプチャすることは、複雑なワークロードのためのミリコード命令を伴うトレースのキャプチャを有効にすることによって、ＣＭＳ付属トレーシング・システム（ＣＡＴＳ）を用いる従来のトレーシング方法の技術的課題に対処して解決してきた。典型的には、このようなキャプチャは、高度に熟練したエンジニアを必要とし、ＣＡＴＳトレースをキャプチャするために仮想マシンにおいて複雑なワークロード環境の複製が行われる。以前は、このようなデータは、ＣＡＴＳを用いてトレースすることができず、又はＣＡＴＳトレースをキャプチャするために仮想マシンにおいて複雑なワークロード環境を複製するのに高度に熟練したエンジニアを必要としていた。しかしながら、ＣＡＴＳトレースとは異なり、ＩＭＴトレースは、完全自動パッケージ（Complete Automation Package：ＣＡＰ)テストケース・スイートのような制御テストスイートを介してＣＡＰシーケンス・テストケースの生成を可能にするリバースエンジニアリングデータフローのために用いられるメモリデータ内容を提供しない。ＣＡＰテストケースは、コア性能モデル、コアハードウェア記述言語（例えば、ＶＨＤＬ）シミュレータ、及び実際のハードウェア上で無限ＣＰＩ（サイクル毎命令：cycles per instructions）を測定／比較することによって、新たなプロセッサコアの性能検証に用いられてきた。このようなＩＭＴトレースにおけるデータ内容の欠如は、性能検証に対して新たな命令セットを用いる新たなカスタマー・ワークロードを反映することを妨げ、これは次代プロセッサコアの開発にとって決定的である。
【００３２】
ここで、本発明の態様の概観に目を向けると、本発明の１つ又は複数の実施形態は、ＩＭＴにおけるメモリデータ内容を含むハードウェア命令トレースを生成及び検証することを容易にすることによって、上述の技術的課題に対処する。本明細書における技術的特徴は、既存のインフラストラクチャ及びツールを用いてＩＭＴトレースからＣＡＰテストケースを生成することをさらに容易にする。さらに、技術的特徴は、メモリデータ内容を検証することを容易にする。
【００３３】
ここで、図１を参照して、本発明の態様のより詳細な説明に目を向けると、データ処理システム１００が提供される。システム１００は、中央プロセッサ又は中央処理ユニット（ＣＰＵ）１０５を含む。ＣＰＵ１０５は、命令フェッチユニット１１０のようないずれかの適切なコンポーネントを含むことができ、メモリ１１５と通信状態で結合することができる。
【００３４】
典型的には、命令フェッチユニット１１０（ＩＦＵ）は、プロセッサ１０５の代理として命令をフェッチするために使用される。ＩＦＵ１１０は、「次順命令（next sequential instructions）」、分岐成立命令（branchtaken instructions）のターゲット命令、又はコンテキストスイッチに続くプログラムの最初の命令をフェッチする。１つ又は複数の例において、ＩＦＵ１１０は、プリフェッチ技術を使用して、プリフェッチされる命令が使用される見込みの尤度に基づいて推論的にプリフェッチする。例えば、ＩＦＵ１１０は、次順命令及び更なる順次命令の付加的バイトを含む、１６バイトの命令をフェッチする。
【００３５】
被フェッチ命令は次にプロセッサ１０５によって実行される。１つ又は複数の例において、被フェッチ命令は、ＩＦＵ１１０のディスパッチユニットに渡される。ディスパッチユニットは、命令をデコードし、デコードされた命令に関する情報をプロセッサ１０５の適切なユニットに転送する。例えば、プロセッサ１０５は、ＩＦＵ１１０からデコードされた算術命令に関する情報を受け取り、命令のオペコードに従ってオペランドに対して算術演算を行う、実行ユニット１１２を含む。オペランドは、好ましくは、メモリ１１５、プロセッサ１０５のアーキテクチャ上のレジスタ、及び／又は、実行されている命令の直接のフィールドのいずれかから、実行ユニット１１２に提供される。実行の結果は、ストアされる場合、メモリ１１５、アーキテクチャ上のレジスタ、及び／又は他のマシンハードウェア（例えば制御レジスタ、ＰＳＷレジスタなど）のいずれかにストアされる。
【００３６】
プロセッサ１０５はまた、ロード／ストアユニット１１４（ＬＳＵ）を含む。プロセッサ１０５は、ＬＳＵ１１４を用いてストレージにアクセスする。ＬＳＵ１１４は、メモリ内のターゲットオペランドのアドレスを取得し、オペランドをレジスタ若しくは他のメモリ位置にロードすることによって、ロード動作を行い、又は、メモリ内のターゲットオペランドのアドレスを取得し、レジスタ若しくは他のメモリ位置から得たデータをメモリ内のターゲットオペランド位置にストアすることによって、ストア動作を行う。１つ又は複数の例において、ＬＳＵ１１４は、推論的であり、命令シーケンスとは異なる順序のシーケンスでメモリにアクセスすることができるが、それでも、ＬＳＵ１１４は、プログラムに対して、その命令が順序通りに実行されたかのような見かけを維持する。ＬＳＵ１１４は、ＩＦＵ１１０、実行ユニット１１２、レジスタ、デコード／ディスパッチユニット、キャッシュ／メモリインタフェース又はプロセッサ１０５のその他の要素などの、プロセッサ１０５のコンポーネントと通信し、種々のレジスタ回路、ＡＬＵ及び制御論理を含み、ストレージアドレスを計算し、動作を順序正しく保持するためのパイプラインシーケンシングを提供する。いくつかの動作は、順序通りではない場合があるが、ロード／ストアユニットは、当該分野で周知のように、順序通りではない動作が、プログラムに対しては順序通りに行われたように見えるようにする機能を提供する。
【００３７】
典型的には、アプリケーションプログラムが「見る」アドレスは、しばしば仮想アドレスと呼ばれる。仮想アドレスは、時として「論理アドレス」及び「実効アドレス」と呼ばれる。これらの仮想アドレスは、多様な動的アドレス翻訳（ＤＡＴ）技術のうちの１つによって物理メモリ位置にリダイレクトされるという点で仮想的であり、これらのＤＡＴ技術は、単に仮想アドレスにオフセット値をプレフィックス付加すること、仮想アドレスを１つ又は複数の翻訳テーブルにより翻訳することを含むが、それらに限定されず、翻訳テーブルは、好ましくは、少なくともセグメントテーブル及びページテーブルを単独で又は組み合わせて含み、好ましくは、セグメントテーブルはページテーブルをポイントするエントリを有する。例えば、いくつかのプロセッサにおいて、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメントテーブル、及び随意にページテーブルを含む、翻訳の階層が提供される。アドレス翻訳の性能は、多くの場合、翻訳ルックアサイド・バッファ（ＴＬＢ）を利用することによって改善され、ＴＬＢは、仮想アドレスを関連付けられた物理メモリ位置にマッピングするエントリを含む。このエントリは、ＤＡＴが翻訳テーブルを用いて仮想アドレスを翻訳するときに作成される。そして、その後の仮想アドレスの使用は、低速の逐次的な翻訳テーブルアクセスよりも、高速のＴＬＢのエントリを利用することができる。ＴＬＢの内容は、ＬＲＵ（Least Recently used：最長時間未使用法）を含む様々な置換アルゴリズムによって管理することができる。
【００３８】
プロセッサ１０５がマルチプロセッサシステムのプロセッサである場合には、各プロセッサは、Ｉ／Ｏ、キャッシュ、ＴＬＢ及びメモリのような共有リソースがコヒーレンシのために連動されるように保持する責任を有する。典型的には、キャッシュ・コヒーレンシを維持するために「スヌープ」技術が利用される。スヌープ環境において、各キャッシュラインは、共有を容易にするために、共有状態、排他的状態、変更状態、無効状態などのうちのいずれか１つの状態にあるものとしてマーク付けされることができる。
【００３９】
プロセッサ１０５は、一般に翻訳テーブルマッピングのみを保持するキャッシュメモリである、いくつかのＴＬＢと通信状態で結合されることができる。参照ごとに、ＴＬＢを用いて、その参照に対する仮想ページ番号をルックアップする。ヒットが存在する場合、物理ページ番号を用いてアドレスが形成され、対応する参照ビットがオンにされる。ＴＬＢ内でミスが生じた場合、かつ参照ページがメモリ内に存在する場合には、翻訳をメモリ１１５内のページテーブルからＴＬＢにロードすることができ、参照を再試行することができる。メモリ１１５内にそのページが存在しない場合、ページフォールトが発生し、ＣＰＵに例外を通知しなければならない。
【００４０】
１つの実施形態において、ＴＬＢは、第１レベルのＴＬＢ１２０すなわち「ＴＬＢ１」と、ＴＬＢ１をサポートする第２レベルのＴＬＢ１２５すなわち「ＴＬＢ２］とを含む。１つの実施形態において、ＴＬＢ１は、命令ＴＬＢすなわち「ＩＴＬＢ」に対応する命令キャッシュ（Ｉ−キャッシュ）１３０と、データＴＬＢすなわち「ＤＴＬＢ」に対応するデータキャッシュ（Ｄ−キャッシュ）１３５とを含む。
【００４１】
ＴＬＢは、本明細書において、ｚ  Ｓｙｓｔｅｍｓ（登録商標）アーキテクチャに適合した実施形態として説明されるが、これに限定されない。このアーキテクチャは、ＴＬＢページ−テーブルエントリ（ＰＴＥ）に接続されたＴＬＢ複合領域−アンド−セグメント・テーブルエントリ（combined region-and-segment-table entries：ＣＲＳＴＥ）を使用し、ここでアドレス翻訳が行われる順序は、最初に領域、次いでセグメント、その後でページである。
【００４２】
本明細書における例は、ｚ  Ｓｙｓｔｅｍｓ（登録商標）のアーキテクチャと関連して説明されるが、システム１００は、他の例において、任意の適切なコンピュータアーキテクチャと関連して用いることができることに留意されたい。
【００４３】
本明細書で説明されるシステム１００は、単なる例示である。システムは、データの処理を提供するために必要に応じて任意の付加的なコンポーネントを含むことができる。例示的なコンポーネントは、限定されないが、ストレージ、メモリ、入力デバイス、出力デバイスなどを含む。これらのコンポーネントは当業者に知られているので、本明細書では詳細に示さない。
【００４４】
１つ又は複数の例において、ＩＭＴは、種々のレコード形式を含むトレースセグメントテーブルとしてキャプチャされる。本明細書において用いられる場合、「テーブル」は、トレースセグメントの集まりを意味し、これは仮想又はメモリページのような任意の適切な形態をとることができる。１つ又は複数のレコード形式が１つ又は複数のトレースレコードセグメントを作り上げることができ、翻訳命令アドレス（Translations Instructions Addresses）すなわち「ＴｒＩｎＡ」レコードセグメントと呼ぶことができる。これらのレコードは、ＣＰＵ１０５のような様々なユニットによって作成することができ、例えば、メモリ１１５又は他の適切な位置にストアすることができる。実行される命令に対して、ＩＭＴレコードのグループが収集されることに留意されたい。レコードの数及び形式は、命令形式に依存する。例えば、オペランドのフェッチ／ストアをもたらすメモリ命令は、（オペランドの数に依存して）ＳＲＣＯＰ及び／又はＤＥＳＴＯＰレコードをもたらすことになる。命令フェッチ又はデータフェッチのいずれかがＴＬＢ１をミスすると、いくつかの翻訳レコード（仮想アドレス．．．ＰＴＯレコード）のすべてが、ＣＲＳＴＥ／ＰＴＥヒット、及びアドレス翻訳に必要な翻訳テーブルのレベルに依存して、書き込まれる。図２は、実行中の各命令に対して書き込まれる「ＩＭＴレコードの可能な形式」を示す。従って、「トレースレコードセグメント」は、命令毎に書き込まれるＩＭＴレコードのグループを指し、「ＴｒＩｎＡ」は、「トレースレコードセグメント」のグループを指し、これは、１つ又は複数の例において、複数の命令を有する全ＩＭＴトレースである。
【００４５】
図２を参照すると、複数のトレースレコードセグメントを含むトレースセグメントテーブル２００が提供される。各レコードセグメントは、システム事象、例えば命令に関連した特定の情報を提供する。図示されたレコードセグメントは例示的なものであり、他の例において、ＩＭＴは、より少ない、付加的な、及び／又は異なるトレースレコードセグメントを含むことができることに留意されたい。さらに、本明細書で説明される実施形態において、各レコードセグメントは、ビット０−６３を含む６４ビットレコードである。しかしながら、この構成は例示的なものであり、任意の適切な形式又はサイズのレコードセグメントを用いることができる。図示されたトレースセグメントテーブルは、以下の命令レコードセグメントのうちの１つ又は複数を含む：
各命令に対する命令レコード３００（処理／実行中の命令である、被フェッチ命令から）；
命令アドレス（ＩＡ）及び時刻（Time of Day：ＴＯＤ）レコード４００（すなわち、ＩＡ＋ＴＯＤ）（被フェッチ命令から）
命令翻訳ルックアサイド・バッファ（ＩＴＬＢ）レコード５００（ＴＬＢ１から）；及び
必要に応じてオペランド・レコード（被フェッチ命令から）、例えばソースオペランド・レコード６００及び宛先オペランド・レコード７００）。命令形式に依存して、ゼロ又はより多くのオペランド・レコードを生成することができる。
【００４６】
１つ又は複数の例において、トレースセグメントテーブル２００は、一次アドレス空間番号（Primary Address Space Number：ＰＡＳＮ）レコード８００（被フェッチ命令から）を含むこともできる。
【００４７】
あるいは、システムエリアがアクセスされる場合、ＩＴＬＢ及びオペランド・レコードは以下を含むことができる：
ＩＴＬＢシステムエリア・レコード９００（ＴＬＢ１から）；及び
必要に応じて、オペランド・システムエリア・レコード（被フェッチ命令から）、例えばソースオペランド（システムエリア）レコード１０００及び宛先オペランド（システムエリア）レコード１１００。
【００４８】
ＴＬＢミスが生じる状況において、種々の翻訳レコードを生成することができる。複数層の翻訳がサポートされ、これらの翻訳レコードにエンコードすることができる。渡されたレコードセグメントの形式、及び特定のビット値に依存して、翻訳ミス又はヒットの形式を判断することができ、翻訳アクティビティがシステムのどこで行われたのか、例えばＰＴＥ/ＣＲＳＴＥのどこであるのかを判断することもできる。このような翻訳レコードの例は以下を含む：
仮想アドレス・レコード１２００（ＴＬＢ１及び／又はＴＬＢ２から）；
絶対アドレス・レコード１３００（ＴＬＢ１及び／又はＴＬＢ２から）；
アドレス空間制御要素（ＡＳＣＥ）レコード１４００（ＴＬＢ１及び／又はＴＬＢ２から）；
領域第２テーブル起点（region second table origin：ＲＳＴＯ）レコード１５００（ＴＬＢ２から）；
領域第３テーブル起点（region third table origin：ＲＴＴＯ）レコード１６００（ＴＬＢ２から）；
セグメントテーブル起点（segment table origin：ＳＴＯ）レコード１７００（ＴＬＢ２から）；及び
ページテーブル起点（page table origin：ＰＴＯ）レコード１８００（ＴＬＢ２から）。
【００４９】
１つ又は複数の例において、コメント・レコード２０００もまた、トレースセグメントテーブル２００に含めることができる。コメント・レコードは、後処理中に追加することができる。
【００５０】
トレースセグメントを生成し、トレースセグメントからトレースを生成し、生成された結果を確認するための方法が提供される。本方法は、以下の段階の１つ又は複数を含む。本方法は、必ずしも本明細書で説明されるあらゆる段階を含む必要はないこと、及び段階が提示される順番に限られないことに留意のこと。本方法は、本明細書において、システム１００と関連して説明されるが、本方法は、任意の型式、数及び構成のプロセッサ又は処理システムと関連して行うことができる。
【００５１】
第１の段階において、トレースセグメントの最小数が決定される。例えば、ＴＬＢミスが生じた場合、翻訳情報を例えばＴＬＢ１にロードすることができ、仮想アドレス、絶対アドレス及びＡＳＣＥレコードのような翻訳レコードをトレースセグメントとして生成することができる。別の例において、命令からのオペランド情報を用いて、オペランドレコードセグメントを生成すべきか否かを決定することができる。
【００５２】
第２の段階において、上述のような種々のトレースセグメントを生成することができる。トレースセグメントのための情報は、いずれかの必要なストレージエリアから取得することができ、命令、ＰＳＷ、ＡＳＣＥなどのような種々のページを利用することができる。
【００５３】
図３を参照すると、１つの実施形態において、トレースレコードセグメント３０５を、トレース３１０から情報を取得することによって生成することができる。トレース３１０は、事前計算されたトレースであってもよく、又は本明細書で説明される方法の間に生成されたものでもよい。１つの実施形態において、トレースは、ＣＭＳ付属トレーシング・システム（CMS Adjunct Tracing System）によって生成され、すなわちＣＡＴＳトレースであるが、任意の適切なシステム又はプロセスを使用してトレースを生成することができる。
【００５４】
１つの実施形態において、Ｃ（又は他のプログラミング言語）プログラムを作成してトレースレコードセグメントが生成され、これは、ユーザが種々の環境においてどのくらいのデータを出すべきかを決定することを可能にする。このプログラムは、実際のレコードセグメントを処理するための準備をするのに使用することもできる。
【００５５】
図４を参照すると、第３のステージにおいて、レコードセグメント３０５を処理してサブトレース３１５を生成する。サブトレース３１５は、トレース３１０と同じフォーマットであるが、トレース３１０に比べて欠損したデータのピースを有する。１つの実施形態において、サブトレース３１５は、ＣＡＴＳサブトレースである。
【００５６】
１つの実施形態において、Ｃ（又は他のプログラミング言語）プログラムを書いて、レコードセグメント３０５を処理し、ＣＡＴサブトレース３１５を生成する。同じＣプログラムを後で用いて、システムハードウェアによって生成されたレコードセグメント３０５を処理することができる。
【００５７】
図５を参照して、第４の段階において、サブトレース生成プロセスを確認することができる。１つの実施形態において、サブトレース３１５及びトレース３１０は、プロセッサ、キャッシュ、１つ又は複数のＴＬＢ、及びその他を含むシステム１００の種々の部分をシミュレートする性能モデルのようなモデル３２０に入力される。トレース出力３２５及びサブトレース出力３３０が生成される。サブトレース出力３３０をトレース出力３２５と比較して、サブトレース３１５が正しく生成されたか否かを判定することができる。
【００５８】
図６を参照すると、第５の段階において、トレースセグメント生成プロセスは、完全自動パッケージ（ＣＡＰ）テストケース・スイートのような制御テストスイートを介してトレース３１０及びトレースセグメント３０５を生成することによって確認することができる。例えば、トレース３１０は、専有内部システム（proprietary internal system）のようなＩＭＴテストシステム上で、ＣＡＰテストケース３３５を介して生成することができ、トレースセグメント３０５は、トレース３１０から生成することができる。また、トレースセグメント３０５は、独立してハードウェアシミュレータ３４０から生成することができ、これをトレース３１０から生成されたトレースセグメント３０５と比較して、生成プロセスを確認する。
【００５９】
１つ又は複数の例において、テスト／評価されているプロセッサのシミュレータが利用可能になる前に、擬似ＩＭＴが生成されることに留意されたい。例えば、擬似ＩＭＴは、コアモデルから生成される（図７のＣＰＩ解析ツール）。従って、ＩＭＴ内容及び後処理は、本明細書における以下の例で説明するような場合には、擬似ＩＭＴを用いて検証される。
【００６０】
本明細書で説明する方法は単なる一例であることに留意されたい。本発明の思想から逸脱することなくここで説明した段階（又は操作）に対する多くのバリエーションが存在し得る。例えば、これら段階は、異なる順序で行うこともでき、又はステップを追加、削除又は変更することもできる。これらのバリエーションのすべてが特許請求される発明の一部であるとみなされる。
【００６１】
しかしながら、既存技術を用いてキャプチャされるＩＭＴの技術的限界の１つを図７に示す。既存技術を用いたＩＭＴではデータ内容はキャプチャされないので、その結果、「Ｘ」のマークを付した経路によって示されるように、システム１００の新たなワークロードに対するＣＡＰテストケースが欠如する。ＣＡＰテストケースは、性能ＣＰＩツール４１０によって無限ＣＰＩ（cycles per instructions）を測定／比較することによって、新たなプロセッサコアのコア性能検証のために用いられる。ＣＰＩ測定は、コア性能モデル、コアＶＨＤＬシミュレータ、及び／又はシステム１００の実際のハードウェア上で行われる。例えば、図示したシナリオにおいて、システム１００は、１つ又は複数のワークロード・ベンチマーク４０５を実行し、実行中にＩＭＴ４２０をキャプチャする。ＩＭＴ４２０は、ＣＡＴＳジェネレータ・ツール４３０を用いてＣＡＴＳトレース４４０を生成するために用いられる。選択されたトレース４６０（４５０が選択である）は、ＣＰＩ結果４１５を生成するために、性能ＣＰＩ解析ツール４１０によって用いられる。次いでＣＰＩ結果４１５は、さらなる開発のためのコア性能フィードバックのため、並びにコア性能検証のために用いられる。しかしながら、ＩＭＴ４２０におけるデータ内容の欠如は、ＣＡＰのようなサブシーケンステストジェネレータがシーケンス・テストケース４８０を生成することを妨げる。次いでシーケンス・テストケースをシステム１００が用いて、テスト応答４８５を生成する。同様のやり方で、テスト応答４８５は、ＩＭＴモード４１２及び非ＩＭＴモード４１４で、システム１００のシミュレートされたモデルから生成される。１つ又は複数の例において、性能検証／確認は、非ＩＭＴモードＶＨＤＬシミュレータ及び性能ＣＰＩ解析ツールと実際のマシンからの出力を比較することによって行われる。ＩＭＴモードＶＨＤＬシミュレータは、擬似ＩＭＴを作成して、ＣＡＴＳ．サブジェネレータ及びＩＭＴ検証ツールを開発し、これは実際のマシンが利用可能になる前の開発段階においてＩＭＴ内容を検証するために用いられる。様々な、基礎をなす被試験システム（system-under-test：ＳＵＴ）からのテスト応答４８５が、コア性能確認のために比較される。しかしながら、シーケンス・テストケース４８０は、ＩＭＴ４２０から独立して生成され、付加的な努力及びコストを要する。そのため、ＩＭＴ４２０におけるデータ内容の欠如の結果として、性能検証のための新たな命令セットを用いた新たなカスタマー・ワークロードを反映することができない。
【００６２】
ＩＭＴをキャプチャするための本明細書で説明する技術的解決策は、このような技術的課題に対処する。例えば、上記のレコードに加えて、本明細書で説明する技術的解決策は、テストケースにおける命令によってアクセスされるすべてのアーキテクチャ上のレジスタ及びメモリの初期内容を構築するための情報の収集を容易にして、キャプチャされたＩＭＴからＣＭＤ又はＡＶＰファイルを作成することができるようにする。ＣＭＤファイルは、テストケース内の命令によってアクセスされるすべてのアーキテクチャ上のレジスタ及びメモリの初期内容を含むファイルであり、これは、テストシステム上で、例えば専有内部システムのようなＩＭＴテストシステム上で実行することができる。ＡＶＰファイルは、テストケース内の命令によってアクセスされるすべてのアーキテクチャ上のレジスタ及びメモリの初期内容を含むファイルであり、これはＶＨＤＬコアシミュレータ上で実行することができる。
【００６３】
図８は、ＩＭＴ内のデータ内容をキャプチャするための本明細書における技術的解決策を用いた場合の、図７の上記シナリオと比較されるデータフローを示す。図示されるように、データ内容を伴うＩＭＴ５２０からＣＭＤファイルが生成される。ＣＭＤファイルは、シーケンステストジェネレータ４７０が既存のインフラストラクチャ及びツールを用いて新たなワークロードのためのＣＡＰシーケンス・テストケース４８０を生成することを容易にする。１つ又は複数の例において、ＣＭＤファイルは、テストシステム５１５によって、例えば専有内部システムのようなＩＭＴテストシステム上で処理され、ＣＡＴＳトレース５３０を生成する。トレース選択４５０は、ＣＡＴＳトレース５４０のサブセットを選択し、これをシーケンステストジェネレータ４７０が用いて、シーケンス・テストケース４８０を生成する。
【００６４】
メモリデータ内容を伴うＩＭＴトレース５２０を用いてシーケンス・テストケース４８０を直接生成する上記シナリオを容易にするために、システム１００は、ＩＭＴ５２０内のすべての必要情報を収集して、ＶＨＤＬシミュレーション（ｓｉｍ）又は実ハードウェアにおける命令実行（例えばｚ  Ｓｙｓｔｅｍｓ（登録商標）用）を可能にする。１つ又は複数の例において、メモリデータ内容を収集することはさらなる速度低下を引き起こすので、システム１００は、通常ＩＭＴモード及び拡張ＩＭＴモードの２つの異なるモードで実行することができる。通常ＩＭＴモードは、図７と同様に、メモリデータ内容を伴わずに、したがってコア性能モデルを駆動するのに十分なトレースを用いて、命令トレースを生成する。拡張ＩＭＴモードは、図８のように、ＣＡＰテストケースを生成するのに必要なメモリデータ内容を伴う命令トレースを生成する。
【００６５】
図９は、本発明の１つ又は複数実施形態による、ＩＭＴにおけるメモリデータ内容をキャプチャするための方法の一例のフローチャートを示す。６１０に示すように、プロセッサ１０５は、ＩＭＴキャプチャを初期化する要求を受け取る。例えば、要求は、１つ又は複数のミリコード命令を含む。さらに、要求は、ＩＭＴをキャプチャするモード、すなわち通常ＩＭＴ又は拡張ＩＭＴを指示する。通常ＩＭＴモードが選択された場合、それは、シーケンス・テストケースを生成するのにメモリデータ内容をキャプチャする必要はないことを示し、６１５及び６２０に示すように、プロセッサは、前述のように、オペランド値などのメモリデータ内容を伴わずに、命令データを伴うＩＭＴのみをキャプチャするように進行する。
【００６６】
代わりに、拡張ＩＭＴモードが選択された場合、６１５に示すように、プロセッサは、シーケンス・テストケースを生成するためのメモリデータ内容をキャプチャする。１つ又は複数の例において、拡張ＩＭＴモードの場合、プロセッサ１０５は、ＬＳＵ１１４を用いて、そのオペランドがメモリからデータをフェッチするすべての命令について、ＭＦＣ（メモリフェッチ制御）及びＭＦＤ（メモリフェッチデータ）レコードを書き込む。
【００６７】
例えば、図９に示すように、プロセッサは、６３０に示すように、アーキテクチャ上のレジスタの初期内容をキャプチャする。１つ又は複数の例において、初期内容は、すべてのアーキテクチャ上のレジスタ内容を事前定義された順序で事前定義されたメモリ位置に書き込み、ストアされた内容を同じ事前定義されたメモリ位置から読み出すための、１つ又は複数のミリコード命令を実行することによってキャプチャされる。このような逐次的な書き込み及び読み出し動作は、オペランド・アドレスを含むオペランド・レコードを有するＬＳＵ１１４に、ＭＦＤ／ＭＦＣレコードを書き込ませる。次いでこの情報を、例えば後処理プログラムが用いて、ＩＭＴを構文解析し、事前定義された順序及びそれらのメモリ位置を用いて特定のレジスタの初期内容をキャプチャすることができる。プロセッサ１０５は、さらに、６３５に示すように、実行中の命令のＩＭＴをキャプチャする。
【００６８】
プロセッサ１０５は、６４０に示すように、アーキテクチャ上のレジスタの内容をキャプチャする条件が生じるまで、ＩＭＴキャプチャを続ける。その条件に応答して、プロセッサは、６４５に示すように、メモリに、アーキテクチャ上のレジスタの書き込み及び読み出しを行わせて、ＬＳＵ１１４を用いてＩＭＴ内の内容をキャプチャすることによって、アーキテクチャ上のレジスタの内容をキャプチャする。実行中の命令の１つによってフェッチされたあらゆるメモリデータは、ＬＳＵによってＭＦＣ及びＭＦＤレコード（本明細書で説明される）としてキャプチャされる。ＩＭＴオペランド・レコード（ＳＲＣＯＰ／ＤＥＳＴＯＰ）を構文解析して、命令のオペランドのアドレス及びデータをそれぞれ決定することができる。例えば、ＭＦＣレコードは、オペランド・アドレスの一部のみを有する。ＯＰＣカウント及びＭＦＣレコード内の部分的アドレスを用いて、対応するＳＲＣＯＰ／ＤＥＳＴＯＰを見いだし、完全オペランド・アドレスを得る。加えて、ブレークポイント（breakpoint）をトリガすることに応答して、ブレークポイントの後のアーキテクチャ上のレジスタの内容をキャプチャするために、事前定義されたメモリの書き込み／読み出し（６４５）が行われる（ＩＭＴの開始と同様に）。ＬＳＵを用いてアーキテクチャ上のレジスタの内容を読み出し／書き込みすることによって、この技術的解決策は、オペランド・レコード及びデータレコードの書き込みを生成することができ、次いでこれを構文解析して、ＭＦＣ及びＭＦＤレコード内の事前定義されたメモリのオペランド・アドレス及びデータを見ることによって、レジスタ形式及び内容を決定することができる。アーキテクチャ上のレジスタの内容は、事前定義された方式で書き込まれているので、ＭＦＤレコードを同じ事前定義方式で構文解析することで、どのアーキテクチャ上のレジスタの内容が、読み出されたＭＦＤレコード内のどの位置にストアされているのかを識別する。
【００６９】
１つ又は複数の例において、ＩＭＴ拡張モードにおいて、アーキテクチャ上のレジスタの内容のキャプチャを開始する条件まで、ＩＭＴキャプチャは続き、命令がメモリからアクセスするデータを含める。例えば、命令のオペコードを用いて、命令がメモリ１１５からのデータにアクセスするかどうか判断することができる。例えば、所定のサブセットからの命令オペコードは、メモリ内容にアクセスする命令として識別される。代替的に、又は付加的に、命令のオペランドを用いて、メモリ内容がアクセスされているかどうか判断することができる。例えば、オペランドがメモリアドレスを含む場合、その命令は、メモリ内容にアクセスするとみなすことができる。上記のことは少数の例であり、本発明の他の実施形態において、プロセッサ１０５は、トレースされている命令がメモリ内容にアクセスすることを別の方法で判断することができる。オペランド・データは、ＩＭＴによってＭＦＣ及びＭＦＤレコードを用いてキャプチャされ、オペランドのアドレスは、ＳＲＣＯＰ及び／又はＤＥＳＴＯＰレコードを用いてキャプチャされる。ＭＦＣレコードは、ＭＦＤレコードからオペランド値を構文解析するために用いられる。
【００７０】
代替的に、又は付加的に、アーキテクチャ上のレジスタ内容をキャプチャすることを開始する条件は、直近のアーキテクチャ上のレジスタ内容のキャプチャから所定数の命令が実行されたことを含む。例えば、キャプチャされたＩＭＴトレースから複数のＣＡＰテストケースが生成されることを可能にするために、アーキテクチャ上のレジスタの書き込み及び読み出しを、Ｋ個の命令が完了されるたびに行わせ、Ｋは設定可能である。例えば、開始要求は、Ｋについて使用する値を含む。したがって、ひとたびテストケースがブレークポイントにおいて停止する必要があると、次のテストケースは、ＩＭＴがすべてのアーキテクチャ的レジスタのスナップショットを提供するいずれかの点で再びスタートすることができる。ＣＡＰテストケースにおけるブレークポイントは、特定の形式の命令を含むことができる。例えば、ブレークポイントは、とりわけ、時間依存的ストア位置からのフェッチ、ＩＯ命令、外部割込み、テストケース生成に十分な情報を提供しない命令、及び／又はそれらの組み合わせを含むことができる。
【００７１】
プロセッサ１０５はさらに、６５０に示すように、ＩＭＴキャプチャが完了したかどうかチェックする。例えば、ＩＭＴキャプチャは、ＩＭＴキャプチャを停止する他の動作の中でもとりわけ、現在実行中のプログラムが完了したこと、特定のＩＭＴキャプチャ完了要求を受け取ったこと、ＩＭＴキャプチャの手動割込み、及びそれらの組み合わせに応答して、完了することができる。ＩＭＴキャプチャが完了していない場合、プロセッサは、次の命令の監視を続けて、ＩＭＴレコードをＩＭＴモードに応じてキャプチャする。拡張ＩＭＴモードにおいて、プロセッサはまた、アーキテクチャ上のレジスタの内容をキャプチャする条件の発生についても監視する。代わりに、ＩＭＴキャプチャが完了した場合、プロセッサは、６５５に示すように、さらなる初期化要求まで、ＩＭＴのキャプチャを停止する。
【００７２】
図１０は、本発明の１つ又は複数の実施形態による、ＩＭＴキャプチャ内のメモリからデータ内容をキャプチャするために用いられる例示的なＭＦＣレコード７００を示す。図示した例は単なる１つの実装であり、他の実施形態において、プロセッサ１０５は、異なる構成のＭＦＣレコード７００を用いることができることに留意されたい。１つ又は複数の例において、ＭＦＣレコード７００は、データがフェッチされるとき、サイクル毎にＬＳＵ１１４によって生成される。ＭＦＣは、１又は２オペランドをカバーすることができる。例えば、通常のロード／ＩＳＵ動作の場合、命令が単一メモリアクセスを使用するならば、１つのオペランドだけがアクティブである。一方、シーケンサー動作の場合、２つのメモリアクセスを表す２つのデータオペランドがアクティブである。
【００７３】
図示された例において、ＭＦＣレコードは６４ビットを有し、図１０に示すようなフィールドを含む。他の例において、ＭＦＣレコード７００は、異なる数のビット、及び図示されたフィールドとは異なる、多い、又は少ないフィールドを含むことができる。図示されるように、ＭＦＣレコード７００は、スレッド識別子７０５を含み、これはＭＦＣ／ＭＦＤレコードを書き込んでいるスレッドの一意の識別である。ＭＦＣレコード７００はさらに、レポート形式識別子７１０を含み、これは現在のレコード形式がＭＦＣレコードであることを示す。ＭＦＣレコード７００はさらに、第１のメモリデータのための第１の妥当性（validity）インジケータ７１５を含む。妥当性インジケータは、メモリデータ内容が妥当であり、テストに用いることができるかどうかを示す。
【００７４】
さらに、ＭＦＣレコード７００は、オペランド・カウント・フィールド７２５を含み、これは、第１のメモリデータが命令内のどのオペランドに関連付けられるのかを示す。例えば、第１のメモリデータが命令内の第１のオペランドに関連付けられる場合、オペランド・カウント・フィールド７２５は、第１の値、例えば０を有し、その代わりに、第１のメモリデータが命令内の第２のオペランドに関連付けられる場合、オペランド・カウント・フィールド７２５は、第２の値、例えば１を有する。ＭＦＣレコード７００はさらに、第１のメモリデータ情報フィールド７３０を含み、これは、とりわけ、アライメント、長さといった、第１のメモリデータに関する情報を含む。ＭＦＣレコード７００はさらに、第１のメモリデータのメモリアドレスを含む、第１のアドレス・フィールド７３５を含む。１つ又は複数の例において、フィールド７３５は、メモリアドレスの所定のわずかなビット、例えば最後の８ビット、最後の９ビットのみを含む。このアドレス及びＯＰＣ１を用いて、完全オペランド・アドレスを有する別個のレコードであるオペランド・レコード（ＤＥＳＴＯＰ／ＳＲＣＯＰ）から、完全オペランド・アドレスを決定／確認する。
【００７５】
図示されたＭＦＣレコード７００は、２つのフェッチオペランドを有する命令の場合に機能する、２つのオペランドのための情報を有することに留意されたい。命令が１つのオペランドのみを有する場合、ＭＦＣレコード７００は、妥当なオペランド情報を１つだけ有する。例えば、ＲＩＳＣプロセッサの場合、ＭＦＣレコード７００は、１つのオペランド情報のみを有する。
【００７６】
この事例では、ＭＦＣレコード７００はさらに、第２のメモリデータに対応する同様のフィールドを含む。例えば、ＭＦＣレコード７００は、第２のオペランドの妥当性を示す、妥当性インジケータ・フィールド７２０と、第２のメモリデータが命令内のどのオペランドに関連付けられるのかを示す、オペランド・カウント・フィールド７４５とを含む。例えば、第２のメモリデータが命令内の第１のオペランドに関連付けられる場合、オペランド・カウント・フィールド７４５は、第１の値、例えば０を有し、その代わりに、第２のメモリデータが命令内の第２のオペランドに関連付けられる場合、オペランド・カウント・フィールド７４５は、第２の値、例えば１を有する。ＭＦＣレコード７００はさらに、第２のメモリデータ情報フィールド７５０を含み、これは、とりわけ、アライメント、長さといった、第２のメモリデータに関する情報を含む。ＭＦＣレコード７００はさらに、第２のメモリデータのメモリアドレスを含む、第２のアドレス・フィールド７５５を含む。１つ又は複数の例において、フィールド７５５は、メモリアドレスの所定のわずかなビット、例えば最後の８ビット、最後の９ビットのみを含む。
【００７７】
オペランドが８バイトより多くをフェッチする場合、複数のＭＦＣレコードが書き込まれる。例えば、ｚ  Ｓｙｓｔｅｍｓ（登録商標）において、オペランドは２５６バイトまでフェッチすることができ、これは上で示したような３２個のＭＦＣ／ＭＦＤレコードを必要とする。命令が２つのオペランドをフェッチする場合、３２個のＭＦＣレコード（両方のオペランドをカバーする）、次いで６４個のＭＦＤレコードが存在し得る。
【００７８】
１つ又は複数の例において、同じオペランドに対するすべてのＭＦＣレコードは、連続して書き込まれる。どのようにしてＭＦＤレコードをＭＦＣレコードから識別するのかは、実装に依存する。１つ又は複数の例において、すべてのＭＦＣレコードは、連続して書き込まれ、次いですべてのＭＦＤレコードが書き込まれ、それらのＭＦＤレコードは、ＭＦＣレコードが２つの妥当なオペランドを有しているときにはインターリーブされる。妥当なオペランド情報の総数は、ＭＦＤレコードの数と同じであろう。ひとたび対応するＭＦＤレコードが識別されると、ＭＦＤレコード内の実際のデータは、対応するＭＦＣレコード内のアライメント及びデータ長さを用いて決定される。ＭＦＣ及びＭＦＤレコードの配置に応じて、構文解析及び情報の決定は、他の実装では変更することができる。
【００７９】
図１１は、本発明の１つ又は複数の実施形態による、例示的なＭＦＤレコード８００を示す。他の例において、ＭＦＣレコード７００は、異なる数のビット、及び図示されたフィールドは異なる、多い、又は少ないフィールドを含むことができる。ＭＦＤレコードは、フィールド７３５及び７５５のような、ＭＦＣレコード７００内で特定されたメモリアドレスの内容を含む。
【００８０】
キャプチャされたＩＭＴデータは、システム事象に関連したトレースデータを含む。１つ又は複数の例において、プロセッサ１０５は、システム事象に関連した命令を、ＴＬＢ、ＩＦＵ，実行ユニットなどのようなプロセッサ１０５内のある位置から受け取る。ＩＭＴデータの生成はさらに、命令情報を記録するのに必要なトレースセグメントレコードの最小数を決定することを含む。プロセッサ１０５は、その数のトレースセグメントレコードを含むトレースセグメントテーブルを作成し、その数のトレースセグメントレコードは、少なくとも１つの命令レコードを含む。１つ又は複数の例において、プロセッサ１０５はさらに、トレースセグメントレコードからサブトレースを生成し、サブトレースは、その命令に対して生成されたトレースより少ない数のデータレコードを有する。ＩＭＴデータの生成のさらなる詳細は、その内容が引用により組み入れられる特許文献１において提供される。
【００８１】
さらに、本明細書における技術的解決策は、制御されたテストスイートを介してトレース及びトレースセグメントの第１のインスタンスを生成し、トレースからトレースセグメントの第２のインスタンスを生成し、第１のインスタンスと第２のインスタンスとを比較することによって、トレースセグメントテーブルを確認することを容易にする。
【００８２】
例えば、図８に戻ると、１つ又は複数の本発明の実施形態による、キャプチャされたＩＭＴからＣＡＰテストケースを生成するための方法についてのデータフローが図示されている。ＣＡＰテストケースは、既存のインフラストラクチャ及びツールを用いて生成することができる。例えば、ＩＭＴで利用可能なアーキテクチャ上のレジスタ及びメモリの初期内容を用いて、後処理プログラムは、キャプチャされたＩＭＴを構文解析することによってＣＭＤファイルを作成する。ＣＭＤファイルは、専有内部システムとすることができる、ＩＭＴテストシステムのようなテストスイート上で実行され、ＣＡＴＳトレースを生成する。ＣＡＴＳトレースは、既存のＣＡＰテストケース生成ツールのようなツールに供給され、ＣＡＴテストケースを生成する。この、本明細書で説明するような改善されたＩＭＴを用いる方法は、ＩＭＴから直接ＣＡＰテストケースを生成することによって別個の参照モデルを開発することを必要とする実質的な努力及び複雑さを回避する。
【００８３】
技術的解決策は、本明細書で説明されるＩＭＴキャプチャ技術によってキャプチャされたメモリデータ内容を検証する方法をさらに含む。図１２は、本発明の１つ又は複数の実施形態による、ＩＭＴキャプチャレコードを検証するための例示的な方法のフローチャートを示す。ＩＭＴキャプチャレコードは、評価／テストされるプロセッサが利用可能になる前に、したがってＩＭＴ５２０が利用可能になる前に、検証されるべきである。例えば、擬似ＩＭＴ４９０は、ＡＶＰファイルを用いてコアシミュレータから生成される。ＡＶＰファイルは、既存である。ＡＶＰファイルは、アーキテクチャ検証プログラムファイルであり、これは、ＶＨＤＬモデルのようなシミュレータ上で実行することによってハードウェア検証のためのテストケースのために用いられる命令及びデータについての、アーキテクチャ上のレジスタの初期内容及びメモリ内容を有する。ＣＭＤファイルは、ＡＶＰファイルと同じ内容を有するが異なる形式のコマンドファイルであり、専有内部システムなどのＩＭＴテストシステムのようなテストスイート上で実行するために用いられる。
【００８４】
１つ又は複数の例において、擬似ＩＭＴ４９０は、拡張ＩＭＴモードを用いて生成される。コアシミュレータは、テストされるプロセッサ１０５及び／又はハードウェアコンポーネントをシミュレートするモデル、例えば、ＶＨＤＬシミュレートモデルである。シミュレータによってキャプチャされたＩＭＴは、擬似ＩＭＴ４９０と呼ばれる。さらに、本方法は、後処理プログラムを通じて擬似ＩＭＴ４９０から新たなＡＶＰファイルを生成することを含む。本方法は、元のＡＶＰファイルと新たなＡＶＰファイルとを比較して、レジスタ／メモリ内容に何らかのミスマッチがないかどうかを調べることをさらに含む。例えば、ＡＶＰファイルを比較するために、両方のＡＶＰファイルをコアシミュレータ上で実行し、両方の実行からの応答を比較する。既存のＡＶＰファイルと擬似ＩＭＴ４９０を用いて生成された新たなＡＶＰファイルとを、コアシミュレータ上で、非ＩＭＴモードで実行して、これらを比較する。１つ又は複数の例において、ＡＶＰ比較又はコアシミュレータではデバッグできないかもしれないいずれかの問題をデバッグするために、ＣＭＤファイル５１０が、擬似ＩＭＴ４９０から生成され、専有内部システム又は他のいずれかのテストスイートのようなＩＭＴテストシステム上で実行される。
【００８５】
図１３を参照すると、本発明の１つ又は複数の実施形態による、ソースオペランド（システムエリア）レコード１０００（ＳＲＣＯＰ）が示される。１つの実施形態において、ソースオペランド（システムエリア）レコード１０００は、複数の領域１００５−１０３０を含む。ビット０−１に対応するＩＤ領域１００５は、中央プロセッサを識別する。ビット２−６に対応するレコード形式領域１０１０は、レコードの形式を識別する。分岐命令の場合、ビット７に対応する分岐（「Ｂ」）領域１０１８は、分岐が成立したかどうかについてのインジケータを提供する。ビット８−１８に対応する領域１０１５は未使用である。ビット１９に対応するタグ領域１０２０は、任意の正数として定義され、ここで１の値は、いずれかの非システムエリアのロード／ストアユニット（ＬＳＵ）の絶対アドレスを示し、１の値は、システムエリアのＬＳＵを示す。非ゼロビットエリア１０２５は、ビット２０に対応する非ゼロ値を含む。ビット２１−６３に対応するアドレス領域１０３０は、ソースオペランド・アドレス情報を提供する。他の例において、ＳＲＣＯＰ１０００は、上記例に示されているのとは異なる構造を有し得ることに留意されたい。
【００８６】
図１４を参照すると、本発明の１つ又は複数の実施形態による、宛先オペランド（システムエリア）レコード１１００（ＤＳＴＯＰ）が示される。１つの実施形態において、宛先オペランド（システムエリア）レコード１１００は、複数の領域１１０５−１１３０を含む。ビット０−１に対応するＩＤ領域１１０５は、中央プロセッサを識別する。ビット２−６に対応するレコード形式領域１１１０は、レコードの形式を識別する。ビット７−１８に対応する領域１１１５は未使用である。ビット１９に対応するタグ領域１１２０は、任意の正数として定義され、ここで１の値は、いずれかの非システムエリアのロード／ストアユニット（ＬＳＵ）の絶対アドレスを示し、１の値は、システムエリアのＬＳＵを示す。非ゼロビットエリア１１２５は、ビット２０に対応する非ゼロ値を含む。ビット２１−６３に対応するアドレス領域１１３０は、宛先オペランド・アドレス情報を提供する。他の例において、ＤＳＴＯＰ１１００は、上記例に示されているのとは異なる構造を有し得ることに留意されたい。
【００８７】
したがって、本明細書における技術的解決策は、プロセッサがＩＭＴのキャプチャを改善することを容易にする。ＩＭＴは、ｚ  Ｓｙｓｔｅｍｓ（登録商標）コアのようなプロセッサコアによって実行される命令に関する詳細情報を含む、ハードウェアによって生成されるトレースである。ＩＭＴは、将来のシステムの性能を予測及び確認することを助ける性能モデル又はシミュレーションモデルを駆動するために用いられる。ＩＭＴは、専有内部システムのようなＩＭＴテストシステムでシミュレートすることができない、多重層及び多重パーティションベンチマークについてのトレースを提供することができる。本明細書で説明する技術的解決策を実装することによって、キャプチャされたＩＭＴが改善され、シーケンス・テストケースを駆動するのに必要とされるレジスタ内容及び参照メモリデータを提供する。
【００８８】
理想的なシナリオにおいて、ＩＭＴキャプチャは、ブレークポイントごとに停止され、アーキテクチャ上のレジスタの初期内容をキャプチャすることによって再び開始される。しかしながら、このようなＩＭＴキャプチャは、ハードウェアが命令を監視／デコードして、ブレークポイントを生じさせる潜在的な命令を識別する必要があるので、実装するのにコストがかさむ。本明細書で説明する技術的解決策は、Ｋ個の命令ごとにアーキテクチャ上のレジスタの初期内容をキャプチャすることによって、このような技術的課題に対処する。このようにして、ＩＭＴを構文解析している間にＩＭＴ内でブレークポイントが識別された場合、テストケースの生成を停止することができ、アーキテクチャ的レジスタのスナップショットを提供するＩＭＴ内の次のポイントにおいて、次のテストケースを開始することができる。
【００８９】
本発明は、いずれかの可能な技術的詳細レベルの統合における、システム、方法、及び／又はコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有する、コンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【００９０】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって用いるための、命令を保持し格納できる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、これらに限定されるものではないが、例えば、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより特定の例の非網羅的なリストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、フロッピーディスク、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にコード化されたデバイス、及び上記のいずれかの適切な組み合わせを含む。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバケーブルを通る光パルス）、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【００９１】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれの計算／処理デバイスに、又は、例えばインターネット、ローカルエリアネットワーク、広域ネットワーク、及び／又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージデバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、及び／又はエッジサーバを含むことができる。各計算／処理デバイスにおけるネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれの計算／処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
【００９２】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、又は、「Ｃ」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで記述されるソースコード若しくはオブジェクトコードのいずれか、とすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェアパッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカルエリアネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネットサービスプロバイダを用いたインターネットを通じて）。いくつかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラム可能ゲートアレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
【００９３】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータプログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【００９４】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を作り出すようにすることができる。これらのコンピュータプログラム命令を、コンピュータ、プログラム可能データ処理装置、及び／又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、格納された命令を有するコンピュータ可読媒体が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作の態様を実装する命令を含む製品を含むようにすることもできる。
【００９５】
コンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実装プロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するようにすることもできる。
【００９６】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。いくつかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実装できることにも留意されたい。
【００９７】
本発明の種々の実施形態の説明は、例示の目的のために提示されているが、網羅的であること、又は、開示される実施形態に限定されることは意図されない。当業者には、説明される実施形態の範囲及び思想から逸脱することなく、多くの修正及び変形が明らかになるであろう。本明細書で使用される用語は、実施形態の原理、実用的用途若しくは市場で見出される技術に対する技術的改善を最も良く説明するために、又は当業者が本明細書で開示される実施形態を理解することを可能にするために選択された。
【図１】
0006959995.tif 000002
【図２】
0006959995.tif 000003
【図３】
0006959995.tif 000004
【図４】
0006959995.tif 000005
【図５】
0006959995.tif 000006
【図６】
0006959995.tif 000007
【図７】
0006959995.tif 000008
【図８】
0006959995.tif 000009
【図９】
0006959995.tif 000010
【図１０】
0006959995.tif 000011
【図１１】
0006959995.tif 000012
【図１２】
0006959995.tif 000013
【図１３】
0006959995.tif 000014
【図１４】
0006959995.tif 000015