JP2020522784A - メモリデータ内容を含むハードウェア命令トレースの生成及び検証 - Google Patents

メモリデータ内容を含むハードウェア命令トレースの生成及び検証 Download PDF

Info

Publication number
JP2020522784A
JP2020522784A JP2019564056A JP2019564056A JP2020522784A JP 2020522784 A JP2020522784 A JP 2020522784A JP 2019564056 A JP2019564056 A JP 2019564056A JP 2019564056 A JP2019564056 A JP 2019564056A JP 2020522784 A JP2020522784 A JP 2020522784A
Authority
JP
Japan
Prior art keywords
imt
processor
data
contents
capture
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019564056A
Other languages
English (en)
Other versions
JP6959995B2 (ja
Inventor
リー、チャンス
ジャコビ、クリスチャン
ツェリン、クリスチャン
リー、デイヴィッド
バルティック、ジェーン
サポリート、アンソニー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020522784A publication Critical patent/JP2020522784A/ja
Application granted granted Critical
Publication of JP6959995B2 publication Critical patent/JP6959995B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 本発明の実施形態は、メモリデータ内容を含むハードウェア命令トレースを生成及び検証するためのコンピュータ実装される方法に向けられる。【解決手段】 本方法は、プロセッサに対してインメモリ・トレース(IMT)データ・キャプチャを開始することを含み、IMTデータは、命令がプロセッサの実行パイプラインを通って流れている間に収集される命令トレースである。本方法は、アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及びロード・ストア・ユニット(LSU)に所定のメモリ位置の内容を読み出させることによって、アーキテクチャ上のレジスタの内容をキャプチャすることをさらに含む。【選択図】 図9

Description

本発明は、一般にコンピュータシステム性能のモデル化に関し、より具体的には改善されたトレースデータを提供することに関する。
多重仮想アドレス空間における仮想アドレス指定を用いるデータ処理システムは、周知である。多くのデータ処理システムは、例えば、中央処理ユニット(CPU)と主ストレージとを含む。CPUは、命令実行、割込み動作、タイミング機能、初期プログラムロード、及び他のマシン関連機能のためのシーケンシング及び処理ファシリティを含む。主ストレージは、直接アドレス指定可能であり、CPUによるデータの高速処理を提供する。
主ストレージは、CPUに物理的に組み込まれる場合もあり、又はスタンドアロンユニットに構築される場合もある。
一般に、主ストレージ内にはアドレス空間が存在し、ここでアドレス空間は、整数の連続的シーケンス(又は仮想アドレス)であり、各数をストレージ内のバイト位置に関連付けることを可能にする特定の変換パラメータが共にある。シーケンスは、ゼロから始まって左から右に進む。
仮想アドレスがCPUによって主ストレージにアクセスするために使用されるとき、これは最初に動的アドレス翻訳(DAT)によって実アドレスに変換され、次いでプレフィックス付加によって絶対アドレスに変換される。DATは、変換パラメータとして種々のレベルのテーブルを用い、コンピュータシステムの仮想アドレスを翻訳テーブルによって実アドレスに翻訳する。テーブルの指示(designation)(従来は、起点及び長さを含む)は、DATによる使用のために制御レジスタ内に見いだされ又はアクセスレジスタによって指定された通りである。
トレーシングは、有意事象のストレージにおける進行中のレコード、又はベンチマークを提供することによって、データ処理システム内に問題が存在するかどうかの判断を支援する。トレーシング・システムの一例は、コンソール監視システム(Console Monitoring System:CMS)付属トレーシング・システム(Adjunct Tracing System:CATS)であり、これは、データ処理システムを通して命令を処理している間にキャプチャされたアーキテクチャ上の命令レコードの、コヒーレントで、順次の、概ね連続したセットから成る。
米国特許第7,975,182号
本発明の目的は、メモリデータ内容を含むハードウェア命令トレースを生成及び検証するための方法、プログラム、コンピュータ可読ストレージ媒体を提供することである。
本発明の実施形態は、メモリデータ内容を含むハードウェア命令トレースを生成及び検証するためのコンピュータ実装される方法に向けられる。本方法は、プロセッサに対してインメモリ・トレース(IMT)データ・キャプチャを開始することを含み、IMTデータは、命令がプロセッサの実行パイプラインを通って流れている間に収集される命令トレースである。本方法は、アーキテクチャ上のレジスタの内容を、アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び、ロード・ストア・ユニット(LSU)に所定のメモリ位置の内容を読み出させることによって、キャプチャすることをさらに含む。
1つ又は複数の例において、LSUに所定のメモリ位置の内容を読み出させることは、IMTデータ・キャプチャにおいて、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを生成することを含む。1つ又は複数の例において、メモリフェッチ制御レコードの構造は、プロセッサの型式に基づく。
1つ又は複数の例において、命令のオペランドの内容は、ブレークポイントに応答してキャプチャされる。例えば、ブレークポイントは、時間依存的ストア位置からのフェッチ命令である。例えば、ブレークポイントは、入力−出力型命令である。例えば、ブレークポイントは、外部割込みである。
1つ又は複数の例において、アーキテクチャ上のレジスタの内容は、IMTデータ・キャプチャが拡張IMTモードで初期化されていることに応答してキャプチャされる。さらに、1つ又は複数の例において、拡張IMTモードにおいて、IMTデータ・キャプチャは、実行されている命令のオペランドの値を含む。オペランドの値は、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを用いてキャプチャされ、そのアドレスは、ソースオペランド・レコード及び/又は宛先オペランド・レコードを用いてキャプチャされる。
1つ又は複数の例において、アーキテクチャ上のレジスタの内容は、プロセッサによって所定の数の命令が実行されるたびにその後キャプチャされる。
1つ又は複数の例において、プロセッサは、第1のプロセッサであり、本方法は、IMTキャプチャ・データを用いて第1のプロセッサによってトレースされた命令を、第2のプロセッサを用いて実行することをさらに含む。
1つ又は複数の例において、本方法は、IMTキャプチャ・データを用いてプロセッサによってトレースされた命令を、シミュレートされたプロセッサを用いて実行することをさらに含む。
1つ又は複数の例において、オペランドの内容は、IMTデータ・キャプチャが拡張IMTモードで開始されたことに応答してキャプチャされる。説明される技術の実装は、ハードウェア、方法若しくはプロセス、又はコンピュータアクセス可能媒体上のコンピュータソフトウェアを含むことができる。
さらに、1つ又は複数の例において、本方法は、IMTデータをキャプチャする前に、IMTデータレコードを検証することをさらに含む。検証は、第1のAVPファイルを用いて擬似IMTキャプチャを生成すること、擬似IMTを用いて第2のAVPファイルを生成すること、及び、第1のAVPファイルと前記第2のAVPファイルとを比較することをさらに含む、
本発明の実施形態は、メモリデータ内容を含むハードウェア命令トレースを生成及び検証するためのシステムに向けられる。システムの非限定的な例は、互いに結合されたメモリとプロセッサとを含む。プロセッサは、インメモリ・トレース(IMT)データ・キャプチャを開始する要求を受け取り、IMTデータは、命令がプロセッサの実行パイプラインを通って流れている間に収集される命令トレースである。プロセッサは、IMTデータにおけるプロセッサのアーキテクチャ上のレジスタの内容を、アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び、ロード・ストア・ユニット(LSU)に記所定のメモリ位置の内容を読み出させることによってキャプチャする。
本発明の実施形態は、メモリデータ内容を含むハードウェア命令トレースを生成及び検証するためのコンピュータプログラム製品に向けられる。コンピュータプログラム製品は、具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含む。プログラム命令は、プロセッサによって実行可能であり、該プロセッサに、ある方法を行わせる。この方法の非限定的な例は、プロセッサに対してインメモリ・トレース(IMT)データ・キャプチャを開始することを含み、IMTデータは、命令がプロセッサの実行パイプラインを通って流れている間に収集される命令トレースである。この方法は、プロセッサのアーキテクチャ上のレジスタの内容を、アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び、ロード・ストア・ユニット(LSU)に所定のメモリ位置の内容を読み出させることによってキャプチャすることをさらに含む。
さらに、本発明の実施形態は、プロセッサをテストするための装置を含む。装置は、テストシステムとすることができる。装置は、プロセッサに対してインメモリ・トレース(IMT)データ・キャプチャを開始する要求を受け取り、IMTデータは、命令がプロセッサの実行パイプラインを通って流れている間に収集される命令トレースである。装置は、IMTデータにおけるプロセッサのアーキテクチャ上のレジスタの内容を、アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び、ロード・ストア・ユニット(LSU)に所定のメモリ位置の内容を読み出させることによってキャプチャする。装置はさらに、キャプチャされたIMTデータを用いてテストシーケンスを生成し、テストシーケンスは、命令と、キャプチャされたIMTデータからのアーキテクチャ上のレジスタの内容とを含む。装置はさらに、テストシーケンスを第2のプロセッサを用いて実行する。
さらにまた、本発明の実施形態は、プロセッサをテストするためのコンピュータ実装される方法を含み、この方法は、プロセッサに対してインメモリ・トレース(IMT)データ・キャプチャを開始することを含み、IMTデータは、命令がプロセッサの実行パイプラインを通って流れている間に収集される命令トレースである。方法はさらに、拡張モードで開始されたIMTデータ・キャプチャに応答して、IMTデータにおけるプロセッサのアーキテクチャ上のレジスタの内容を、アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び、ロード・ストア・ユニット(LSU)に所定のメモリ位置の内容を読み出させることによってキャプチャすることを含む。コンピュータ実装される方法はまた、キャプチャされたIMTデータを用いてテストシーケンスを生成することを含み、テストシーケンスは、命令と、キャプチャされたIMTデータからのアーキテクチャ上のレジスタの内容とを含む。コンピュータ実装される方法はまた、テストシーケンスを第2のプロセッサを用いて実行することを含む。
付加的な技術的特徴及び利益が、本発明の技術を通じて実現される。本発明の実施形態及び態様は、本明細書で詳細に説明され、特許請求される主題の一部であるとみなされる。より良い理解のために、詳細な説明及び図面を参照されたい。
本明細書において説明される排他的権利の細目は、本明細書の結論部にある特許請求の範囲において具体的に指摘されるとともに明確に特許請求される。
本発明の実施形態の上記及び他の特徴及び利点は、添付の図面との関連で解釈される以下の詳細な説明から明らかである。
本明細書で説明する1つ又は複数の技術的解決策を実装するためのシステムの例示的な実施形態を示す。 トレースセグメントテーブルの例示的な実施形態を示す。 本明細書で説明するトレースデータを生成するための方法を示す。 本明細書で説明するトレースデータを生成するための方法を示す。 本明細書で説明するトレースデータを生成するための方法を示す。 本明細書で説明するトレースデータを生成するための方法を示す。 本発明の1つ又は複数の実施形態によるIMTのキャプチャを示す。 本発明の1つ又は複数の実施形態によるIMTのキャプチャを示す。 本発明の1つ又は複数の実施形態による、IMTにおけるメモリデータ内容をキャプチャするための例示的な方法のフローチャートを示す。 本発明の1つ又は複数の実施形態による、IMTキャプチャにおけるメモリからデータ内容をキャプチャするのに用いられる例示的なMFCレコードを示す。 本発明の1つ又は複数の実施形態による、例示的なMFDレコードを示す。 本発明の1つ又は複数の実施形態による、メモリデータ内容を検証するための例示的な方法のフローチャートを示す。 本発明の1つ又は複数の実施形態による、例示的なソースオペランド(SRCOP)レコードを示す。 本発明の1つ又は複数の実施形態による、例示的な宛先オペランド(DSTOP)レコードを示す。
本明細書で示す図は例証的である。本発明の思想から逸脱することなく、この図又はその中に記載された動作に対する多くの変形が存在し得る。例えば、動作は、異なる順序で行うこともでき、又は動作を追加、削除若しくは変更することもできる。また、「結合」という用語及びその変形は、2つの要素間に連通経路を有することを説明するものであり、間に介在する要素/接続を伴わない要素間の直接接続を含意したものではない。これらの変形の全ては、明細書の一部とみなされる。
添付の図面及び以下の開示される実施形態の詳細な説明において、図中に示された種々の要素には2桁又は3桁の参照番号が付される。多少の例外を除いて、各参照番号の左端の桁は、その要素が最初に示された図面に対応する。
本発明の種々の実施形態を、関連図面を参照して本明細書において説明する。本発明の代替的な実施形態を、本発明の思想から逸脱することなく考案することができる。種々の接続及び位置的関係(例えば、上、下、隣接など)が、以下の説明及び図面内の要素間で述べられている。これらの接続及び/又は位置的関係は、特段の指示のない限り、直接又は間接とすることができ、本発明は、この点に関して制限することを意図しない。従って、エンティティの結合は、直接的又は間接的な結合のいずれかを指すものとすることができ、エンティティ間の位置的関係は、直接的又は間接的な位置関係とすることができる。
さらに、本明細書で説明する種々のタスク及びプロセスステップは、本明細書では詳細に説明しない付加的なステップ又は機能を有する、より包括的な手順又はプロセスに組み込むことができる。
以下の定義及び略語は、特許請求の範囲及び明細書を解釈するために使用されるものとする。本明細書で用いられる場合、「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、「収容する」又は「収容している」という用語又はいずれかの他のそれらの変形は、非排他的包含を意図する。例えば、要素のリストを含む組成物、混合物、プロセス、方法、物品、又は装置は、必ずしもそれらの要素にのみ限定されるものではなく、明示的に列挙されていない他の要素、又はこのような組成物、混合物、プロセス、方法、物品、又は装置に固有の要素を含むことができる。
さらに、「例示的」という用語は、本明細書において、「例、事例、又は例証として役立つ」ことを意味する。本明細書において「例示的」と説明されたいずれの実施形態又は設計も、必ずしも他の実施形態又は設計と比べて好ましい又は有利であると解釈すべきではない。「少なくとも1つの」及び「1つ又は複数の」という用語は、1より大きい又は等しい任意の整数、すなわち1、2、3、4などを含むものとして理解することができる。「複数の」という用語は、2より大きい又は等しい任意の整数、すなわち2、3、4、5などを含むものとして理解することができる。「接続」という用語は、間接的「接続」及び直接的「接続」の両方を含むことができる。
「約」、「実質的」、「およそ」という用語及びそれらの変形は、出願の時点で利用可能な装置に基づく特定の量の測定に関連した誤差の程度を含むことが意図される。例えば、「約」は、所与の値の±8%又は5%、又は2%の範囲を含むことができる。
簡略にするために、本発明の態様の作成及び使用に関連した従来の技術は、本明細書において詳細に説明している場合も、していない場合もある。特に、本明細書で説明する種々の技術的特徴を実装するためのコンピューティングシステム及び特定のコンピュータプログラムの種々の態様は周知である。従って、簡略にするために、多くの従来の実装の詳細は、本明細書では簡潔に述べるだけにするか、又は周知のシステム及び/又はプロセスの詳細は提供せずに完全に省略される。
ここで、本発明の態様に特に関連する技術の概要に目を向けると、コンピュータサーバのようなデータ処理システムは、命令が実行パイプラインを通って流れる間にハードウェアによって収集される命令トレースを含む、インメモリ・トレース(IMT)データをキャプチャする。例えば、z Systems(登録商標)プロセッサコアのようなデータ処理システムは、ハードウェア命令トレースをIMTデータとしてキャプチャする機能を含む。IMTデータをキャプチャすることは、複雑なワークロードのためのミリコード命令を伴うトレースのキャプチャを有効にすることによって、CMS付属トレーシング・システム(CATS)を用いる従来のトレーシング方法の技術的課題に対処して解決してきた。典型的には、このようなキャプチャは、高度に熟練したエンジニアを必要とし、CATSトレースをキャプチャするために仮想マシンにおいて複雑なワークロード環境の複製が行われる。以前は、このようなデータは、CATSを用いてトレースすることができず、又はCATSトレースをキャプチャするために仮想マシンにおいて複雑なワークロード環境を複製するのに高度に熟練したエンジニアを必要としていた。しかしながら、CATSトレースとは異なり、IMTトレースは、完全自動パッケージ(Complete Automation Package:CAP)テストケース・スイートのような制御テストスイートを介してCAPシーケンス・テストケースの生成を可能にするリバースエンジニアリングデータフローのために用いられるメモリデータ内容を提供しない。CAPテストケースは、コア性能モデル、コアハードウェア記述言語(例えば、VHDL)シミュレータ、及び実際のハードウェア上で無限CPI(サイクル毎命令:cycles per instructions)を測定/比較することによって、新たなプロセッサコアの性能検証に用いられてきた。このようなIMTトレースにおけるデータ内容の欠如は、性能検証に対して新たな命令セットを用いる新たなカスタマー・ワークロードを反映することを妨げ、これは次代プロセッサコアの開発にとって決定的である。
ここで、本発明の態様の概観に目を向けると、本発明の1つ又は複数の実施形態は、IMTにおけるメモリデータ内容を含むハードウェア命令トレースを生成及び検証することを容易にすることによって、上述の技術的課題に対処する。本明細書における技術的特徴は、既存のインフラストラクチャ及びツールを用いてIMTトレースからCAPテストケースを生成することをさらに容易にする。さらに、技術的特徴は、メモリデータ内容を検証することを容易にする。
ここで、図1を参照して、本発明の態様のより詳細な説明に目を向けると、データ処理システム100が提供される。システム100は、中央プロセッサ又は中央処理ユニット(CPU)105を含む。CPU105は、命令フェッチユニット110のようないずれかの適切なコンポーネントを含むことができ、メモリ115と通信状態で結合することができる。
典型的には、命令フェッチユニット110(IFU)は、プロセッサ105の代理として命令をフェッチするために使用される。IFU110は、「次順命令(next sequential instructions)」、分岐成立命令(branchtaken instructions)のターゲット命令、又はコンテキストスイッチに続くプログラムの最初の命令をフェッチする。1つ又は複数の例において、IFU110は、プリフェッチ技術を使用して、プリフェッチされる命令が使用される見込みの尤度に基づいて推論的にプリフェッチする。例えば、IFU110は、次順命令及び更なる順次命令の付加的バイトを含む、16バイトの命令をフェッチする。
被フェッチ命令は次にプロセッサ105によって実行される。1つ又は複数の例において、被フェッチ命令は、IFU110のディスパッチユニットに渡される。ディスパッチユニットは、命令をデコードし、デコードされた命令に関する情報をプロセッサ105の適切なユニットに転送する。例えば、プロセッサ105は、IFU110からデコードされた算術命令に関する情報を受け取り、命令のオペコードに従ってオペランドに対して算術演算を行う、実行ユニット112を含む。オペランドは、好ましくは、メモリ115、プロセッサ105のアーキテクチャ上のレジスタ、及び/又は、実行されている命令の直接のフィールドのいずれかから、実行ユニット112に提供される。実行の結果は、ストアされる場合、メモリ115、アーキテクチャ上のレジスタ、及び/又は他のマシンハードウェア(例えば制御レジスタ、PSWレジスタなど)のいずれかにストアされる。
プロセッサ105はまた、ロード/ストアユニット114(LSU)を含む。プロセッサ105は、LSU114を用いてストレージにアクセスする。LSU114は、メモリ内のターゲットオペランドのアドレスを取得し、オペランドをレジスタ若しくは他のメモリ位置にロードすることによって、ロード動作を行い、又は、メモリ内のターゲットオペランドのアドレスを取得し、レジスタ若しくは他のメモリ位置から得たデータをメモリ内のターゲットオペランド位置にストアすることによって、ストア動作を行う。1つ又は複数の例において、LSU114は、推論的であり、命令シーケンスとは異なる順序のシーケンスでメモリにアクセスすることができるが、それでも、LSU114は、プログラムに対して、その命令が順序通りに実行されたかのような見かけを維持する。LSU114は、IFU110、実行ユニット112、レジスタ、デコード/ディスパッチユニット、キャッシュ/メモリインタフェース又はプロセッサ105のその他の要素などの、プロセッサ105のコンポーネントと通信し、種々のレジスタ回路、ALU及び制御論理を含み、ストレージアドレスを計算し、動作を順序正しく保持するためのパイプラインシーケンシングを提供する。いくつかの動作は、順序通りではない場合があるが、ロード/ストアユニットは、当該分野で周知のように、順序通りではない動作が、プログラムに対しては順序通りに行われたように見えるようにする機能を提供する。
典型的には、アプリケーションプログラムが「見る」アドレスは、しばしば仮想アドレスと呼ばれる。仮想アドレスは、時として「論理アドレス」及び「実効アドレス」と呼ばれる。これらの仮想アドレスは、多様な動的アドレス翻訳(DAT)技術のうちの1つによって物理メモリ位置にリダイレクトされるという点で仮想的であり、これらのDAT技術は、単に仮想アドレスにオフセット値をプレフィックス付加すること、仮想アドレスを1つ又は複数の翻訳テーブルにより翻訳することを含むが、それらに限定されず、翻訳テーブルは、好ましくは、少なくともセグメントテーブル及びページテーブルを単独で又は組み合わせて含み、好ましくは、セグメントテーブルはページテーブルをポイントするエントリを有する。例えば、いくつかのプロセッサにおいて、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメントテーブル、及び随意にページテーブルを含む、翻訳の階層が提供される。アドレス翻訳の性能は、多くの場合、翻訳ルックアサイド・バッファ(TLB)を利用することによって改善され、TLBは、仮想アドレスを関連付けられた物理メモリ位置にマッピングするエントリを含む。このエントリは、DATが翻訳テーブルを用いて仮想アドレスを翻訳するときに作成される。そして、その後の仮想アドレスの使用は、低速の逐次的な翻訳テーブルアクセスよりも、高速のTLBのエントリを利用することができる。TLBの内容は、LRU(Least Recently used:最長時間未使用法)を含む様々な置換アルゴリズムによって管理することができる。
プロセッサ105がマルチプロセッサシステムのプロセッサである場合には、各プロセッサは、I/O、キャッシュ、TLB及びメモリのような共有リソースがコヒーレンシのために連動されるように保持する責任を有する。典型的には、キャッシュ・コヒーレンシを維持するために「スヌープ」技術が利用される。スヌープ環境において、各キャッシュラインは、共有を容易にするために、共有状態、排他的状態、変更状態、無効状態などのうちのいずれか1つの状態にあるものとしてマーク付けされることができる。
プロセッサ105は、一般に翻訳テーブルマッピングのみを保持するキャッシュメモリである、いくつかのTLBと通信状態で結合されることができる。参照ごとに、TLBを用いて、その参照に対する仮想ページ番号をルックアップする。ヒットが存在する場合、物理ページ番号を用いてアドレスが形成され、対応する参照ビットがオンにされる。TLB内でミスが生じた場合、かつ参照ページがメモリ内に存在する場合には、翻訳をメモリ115内のページテーブルからTLBにロードすることができ、参照を再試行することができる。メモリ115内にそのページが存在しない場合、ページフォールトが発生し、CPUに例外を通知しなければならない。
1つの実施形態において、TLBは、第1レベルのTLB120すなわち「TLB1」と、TLB1をサポートする第2レベルのTLB125すなわち「TLB2]とを含む。1つの実施形態において、TLB1は、命令TLBすなわち「ITLB」に対応する命令キャッシュ(I−キャッシュ)130と、データTLBすなわち「DTLB」に対応するデータキャッシュ(D−キャッシュ)135とを含む。
TLBは、本明細書において、z Systems(登録商標)アーキテクチャに適合した実施形態として説明されるが、これに限定されない。このアーキテクチャは、TLBページ−テーブルエントリ(PTE)に接続されたTLB複合領域−アンド−セグメント・テーブルエントリ(combined region-and-segment-table entries:CRSTE)を使用し、ここでアドレス翻訳が行われる順序は、最初に領域、次いでセグメント、その後でページである。
本明細書における例は、z Systems(登録商標)のアーキテクチャと関連して説明されるが、システム100は、他の例において、任意の適切なコンピュータアーキテクチャと関連して用いることができることに留意されたい。
本明細書で説明されるシステム100は、単なる例示である。システムは、データの処理を提供するために必要に応じて任意の付加的なコンポーネントを含むことができる。例示的なコンポーネントは、限定されないが、ストレージ、メモリ、入力デバイス、出力デバイスなどを含む。これらのコンポーネントは当業者に知られているので、本明細書では詳細に示さない。
1つ又は複数の例において、IMTは、種々のレコード形式を含むトレースセグメントテーブルとしてキャプチャされる。本明細書において用いられる場合、「テーブル」は、トレースセグメントの集まりを意味し、これは仮想又はメモリページのような任意の適切な形態をとることができる。1つ又は複数のレコード形式が1つ又は複数のトレースレコードセグメントを作り上げることができ、翻訳命令アドレス(Translations Instructions Addresses)すなわち「TrInA」レコードセグメントと呼ぶことができる。これらのレコードは、CPU105のような様々なユニットによって作成することができ、例えば、メモリ115又は他の適切な位置にストアすることができる。実行される命令に対して、IMTレコードのグループが収集されることに留意されたい。レコードの数及び形式は、命令形式に依存する。例えば、オペランドのフェッチ/ストアをもたらすメモリ命令は、(オペランドの数に依存して)SRCOP及び/又はDESTOPレコードをもたらすことになる。命令フェッチ又はデータフェッチのいずれかがTLB1をミスすると、いくつかの翻訳レコード(仮想アドレス...PTOレコード)のすべてが、CRSTE/PTEヒット、及びアドレス翻訳に必要な翻訳テーブルのレベルに依存して、書き込まれる。図2は、実行中の各命令に対して書き込まれる「IMTレコードの可能な形式」を示す。従って、「トレースレコードセグメント」は、命令毎に書き込まれるIMTレコードのグループを指し、「TrInA」は、「トレースレコードセグメント」のグループを指し、これは、1つ又は複数の例において、複数の命令を有する全IMTトレースである。
図2を参照すると、複数のトレースレコードセグメントを含むトレースセグメントテーブル200が提供される。各レコードセグメントは、システム事象、例えば命令に関連した特定の情報を提供する。図示されたレコードセグメントは例示的なものであり、他の例において、IMTは、より少ない、付加的な、及び/又は異なるトレースレコードセグメントを含むことができることに留意されたい。さらに、本明細書で説明される実施形態において、各レコードセグメントは、ビット0−63を含む64ビットレコードである。しかしながら、この構成は例示的なものであり、任意の適切な形式又はサイズのレコードセグメントを用いることができる。図示されたトレースセグメントテーブルは、以下の命令レコードセグメントのうちの1つ又は複数を含む:
各命令に対する命令レコード300(処理/実行中の命令である、被フェッチ命令から);
命令アドレス(IA)及び時刻(Time of Day:TOD)レコード400(すなわち、IA+TOD)(被フェッチ命令から)
命令翻訳ルックアサイド・バッファ(ITLB)レコード500(TLB1から);及び
必要に応じてオペランド・レコード(被フェッチ命令から)、例えばソースオペランド・レコード600及び宛先オペランド・レコード700)。命令形式に依存して、ゼロ又はより多くのオペランド・レコードを生成することができる。
1つ又は複数の例において、トレースセグメントテーブル200は、一次アドレス空間番号(Primary Address Space Number:PASN)レコード800(被フェッチ命令から)を含むこともできる。
あるいは、システムエリアがアクセスされる場合、ITLB及びオペランド・レコードは以下を含むことができる:
ITLBシステムエリア・レコード900(TLB1から);及び
必要に応じて、オペランド・システムエリア・レコード(被フェッチ命令から)、例えばソースオペランド(システムエリア)レコード1000及び宛先オペランド(システムエリア)レコード1100。
TLBミスが生じる状況において、種々の翻訳レコードを生成することができる。複数層の翻訳がサポートされ、これらの翻訳レコードにエンコードすることができる。渡されたレコードセグメントの形式、及び特定のビット値に依存して、翻訳ミス又はヒットの形式を判断することができ、翻訳アクティビティがシステムのどこで行われたのか、例えばPTE/CRSTEのどこであるのかを判断することもできる。このような翻訳レコードの例は以下を含む:
仮想アドレス・レコード1200(TLB1及び/又はTLB2から);
絶対アドレス・レコード1300(TLB1及び/又はTLB2から);
アドレス空間制御要素(ASCE)レコード1400(TLB1及び/又はTLB2から);
領域第2テーブル起点(region second table origin:RSTO)レコード1500(TLB2から);
領域第3テーブル起点(region third table origin:RTTO)レコード1600(TLB2から);
セグメントテーブル起点(segment table origin:STO)レコード1700(TLB2から);及び
ページテーブル起点(page table origin:PTO)レコード1800(TLB2から)。
1つ又は複数の例において、コメント・レコード2000もまた、トレースセグメントテーブル200に含めることができる。コメント・レコードは、後処理中に追加することができる。
トレースセグメントを生成し、トレースセグメントからトレースを生成し、生成された結果を確認するための方法が提供される。本方法は、以下の段階の1つ又は複数を含む。本方法は、必ずしも本明細書で説明されるあらゆる段階を含む必要はないこと、及び段階が提示される順番に限られないことに留意のこと。本方法は、本明細書において、システム100と関連して説明されるが、本方法は、任意の型式、数及び構成のプロセッサ又は処理システムと関連して行うことができる。
第1の段階において、トレースセグメントの最小数が決定される。例えば、TLBミスが生じた場合、翻訳情報を例えばTLB1にロードすることができ、仮想アドレス、絶対アドレス及びASCEレコードのような翻訳レコードをトレースセグメントとして生成することができる。別の例において、命令からのオペランド情報を用いて、オペランドレコードセグメントを生成すべきか否かを決定することができる。
第2の段階において、上述のような種々のトレースセグメントを生成することができる。トレースセグメントのための情報は、いずれかの必要なストレージエリアから取得することができ、命令、PSW、ASCEなどのような種々のページを利用することができる。
図3を参照すると、1つの実施形態において、トレースレコードセグメント305を、トレース310から情報を取得することによって生成することができる。トレース310は、事前計算されたトレースであってもよく、又は本明細書で説明される方法の間に生成されたものでもよい。1つの実施形態において、トレースは、CMS付属トレーシング・システム(CMS Adjunct Tracing System)によって生成され、すなわちCATSトレースであるが、任意の適切なシステム又はプロセスを使用してトレースを生成することができる。
1つの実施形態において、C(又は他のプログラミング言語)プログラムを作成してトレースレコードセグメントが生成され、これは、ユーザが種々の環境においてどのくらいのデータを出すべきかを決定することを可能にする。このプログラムは、実際のレコードセグメントを処理するための準備をするのに使用することもできる。
図4を参照すると、第3のステージにおいて、レコードセグメント305を処理してサブトレース315を生成する。サブトレース315は、トレース310と同じフォーマットであるが、トレース310に比べて欠損したデータのピースを有する。1つの実施形態において、サブトレース315は、CATSサブトレースである。
1つの実施形態において、C(又は他のプログラミング言語)プログラムを書いて、レコードセグメント305を処理し、CATサブトレース315を生成する。同じCプログラムを後で用いて、システムハードウェアによって生成されたレコードセグメント305を処理することができる。
図5を参照して、第4の段階において、サブトレース生成プロセスを確認することができる。1つの実施形態において、サブトレース315及びトレース310は、プロセッサ、キャッシュ、1つ又は複数のTLB、及びその他を含むシステム100の種々の部分をシミュレートする性能モデルのようなモデル320に入力される。トレース出力325及びサブトレース出力330が生成される。サブトレース出力330をトレース出力325と比較して、サブトレース315が正しく生成されたか否かを判定することができる。
図6を参照すると、第5の段階において、トレースセグメント生成プロセスは、完全自動パッケージ(CAP)テストケース・スイートのような制御テストスイートを介してトレース310及びトレースセグメント305を生成することによって確認することができる。例えば、トレース310は、専有内部システム(proprietary internal system)のようなIMTテストシステム上で、CAPテストケース335を介して生成することができ、トレースセグメント305は、トレース310から生成することができる。また、トレースセグメント305は、独立してハードウェアシミュレータ340から生成することができ、これをトレース310から生成されたトレースセグメント305と比較して、生成プロセスを確認する。
1つ又は複数の例において、テスト/評価されているプロセッサのシミュレータが利用可能になる前に、擬似IMTが生成されることに留意されたい。例えば、擬似IMTは、コアモデルから生成される(図7のCPI解析ツール)。従って、IMT内容及び後処理は、本明細書における以下の例で説明するような場合には、擬似IMTを用いて検証される。
本明細書で説明する方法は単なる一例であることに留意されたい。本発明の思想から逸脱することなくここで説明した段階(又は操作)に対する多くのバリエーションが存在し得る。例えば、これら段階は、異なる順序で行うこともでき、又はステップを追加、削除又は変更することもできる。これらのバリエーションのすべてが特許請求される発明の一部であるとみなされる。
しかしながら、既存技術を用いてキャプチャされるIMTの技術的限界の1つを図7に示す。既存技術を用いたIMTではデータ内容はキャプチャされないので、その結果、「X」のマークを付した経路によって示されるように、システム100の新たなワークロードに対するCAPテストケースが欠如する。CAPテストケースは、性能CPIツール410によって無限CPI(cycles per instructions)を測定/比較することによって、新たなプロセッサコアのコア性能検証のために用いられる。CPI測定は、コア性能モデル、コアVHDLシミュレータ、及び/又はシステム100の実際のハードウェア上で行われる。例えば、図示したシナリオにおいて、システム100は、1つ又は複数のワークロード・ベンチマーク405を実行し、実行中にIMT420をキャプチャする。IMT420は、CATSジェネレータ・ツール430を用いてCATSトレース440を生成するために用いられる。選択されたトレース460(450が選択である)は、CPI結果415を生成するために、性能CPI解析ツール410によって用いられる。次いでCPI結果415は、さらなる開発のためのコア性能フィードバックのため、並びにコア性能検証のために用いられる。しかしながら、IMT420におけるデータ内容の欠如は、CAPのようなサブシーケンステストジェネレータがシーケンス・テストケース480を生成することを妨げる。次いでシーケンス・テストケースをシステム100が用いて、テスト応答485を生成する。同様のやり方で、テスト応答485は、IMTモード412及び非IMTモード414で、システム100のシミュレートされたモデルから生成される。1つ又は複数の例において、性能検証/確認は、非IMTモードVHDLシミュレータ及び性能CPI解析ツールと実際のマシンからの出力を比較することによって行われる。IMTモードVHDLシミュレータは、擬似IMTを作成して、CATS.サブジェネレータ及びIMT検証ツールを開発し、これは実際のマシンが利用可能になる前の開発段階においてIMT内容を検証するために用いられる。様々な、基礎をなす被試験システム(system-under-test:SUT)からのテスト応答485が、コア性能確認のために比較される。しかしながら、シーケンス・テストケース480は、IMT420から独立して生成され、付加的な努力及びコストを要する。そのため、IMT420におけるデータ内容の欠如の結果として、性能検証のための新たな命令セットを用いた新たなカスタマー・ワークロードを反映することができない。
IMTをキャプチャするための本明細書で説明する技術的解決策は、このような技術的課題に対処する。例えば、上記のレコードに加えて、本明細書で説明する技術的解決策は、テストケースにおける命令によってアクセスされるすべてのアーキテクチャ上のレジスタ及びメモリの初期内容を構築するための情報の収集を容易にして、キャプチャされたIMTからCMD又はAVPファイルを作成することができるようにする。CMDファイルは、テストケース内の命令によってアクセスされるすべてのアーキテクチャ上のレジスタ及びメモリの初期内容を含むファイルであり、これは、テストシステム上で、例えば専有内部システムのようなIMTテストシステム上で実行することができる。AVPファイルは、テストケース内の命令によってアクセスされるすべてのアーキテクチャ上のレジスタ及びメモリの初期内容を含むファイルであり、これはVHDLコアシミュレータ上で実行することができる。
図8は、IMT内のデータ内容をキャプチャするための本明細書における技術的解決策を用いた場合の、図7の上記シナリオと比較されるデータフローを示す。図示されるように、データ内容を伴うIMT520からCMDファイルが生成される。CMDファイルは、シーケンステストジェネレータ470が既存のインフラストラクチャ及びツールを用いて新たなワークロードのためのCAPシーケンス・テストケース480を生成することを容易にする。1つ又は複数の例において、CMDファイルは、テストシステム515によって、例えば専有内部システムのようなIMTテストシステム上で処理され、CATSトレース530を生成する。トレース選択450は、CATSトレース540のサブセットを選択し、これをシーケンステストジェネレータ470が用いて、シーケンス・テストケース480を生成する。
メモリデータ内容を伴うIMTトレース520を用いてシーケンス・テストケース480を直接生成する上記シナリオを容易にするために、システム100は、IMT520内のすべての必要情報を収集して、VHDLシミュレーション(sim)又は実ハードウェアにおける命令実行(例えばz Systems(登録商標)用)を可能にする。1つ又は複数の例において、メモリデータ内容を収集することはさらなる速度低下を引き起こすので、システム100は、通常IMTモード及び拡張IMTモードの2つの異なるモードで実行することができる。通常IMTモードは、図7と同様に、メモリデータ内容を伴わずに、したがってコア性能モデルを駆動するのに十分なトレースを用いて、命令トレースを生成する。拡張IMTモードは、図8のように、CAPテストケースを生成するのに必要なメモリデータ内容を伴う命令トレースを生成する。
図9は、本発明の1つ又は複数実施形態による、IMTにおけるメモリデータ内容をキャプチャするための方法の一例のフローチャートを示す。610に示すように、プロセッサ105は、IMTキャプチャを初期化する要求を受け取る。例えば、要求は、1つ又は複数のミリコード命令を含む。さらに、要求は、IMTをキャプチャするモード、すなわち通常IMT又は拡張IMTを指示する。通常IMTモードが選択された場合、それは、シーケンス・テストケースを生成するのにメモリデータ内容をキャプチャする必要はないことを示し、615及び620に示すように、プロセッサは、前述のように、オペランド値などのメモリデータ内容を伴わずに、命令データを伴うIMTのみをキャプチャするように進行する。
代わりに、拡張IMTモードが選択された場合、615に示すように、プロセッサは、シーケンス・テストケースを生成するためのメモリデータ内容をキャプチャする。1つ又は複数の例において、拡張IMTモードの場合、プロセッサ105は、LSU114を用いて、そのオペランドがメモリからデータをフェッチするすべての命令について、MFC(メモリフェッチ制御)及びMFD(メモリフェッチデータ)レコードを書き込む。
例えば、図9に示すように、プロセッサは、630に示すように、アーキテクチャ上のレジスタの初期内容をキャプチャする。1つ又は複数の例において、初期内容は、すべてのアーキテクチャ上のレジスタ内容を事前定義された順序で事前定義されたメモリ位置に書き込み、ストアされた内容を同じ事前定義されたメモリ位置から読み出すための、1つ又は複数のミリコード命令を実行することによってキャプチャされる。このような逐次的な書き込み及び読み出し動作は、オペランド・アドレスを含むオペランド・レコードを有するLSU114に、MFD/MFCレコードを書き込ませる。次いでこの情報を、例えば後処理プログラムが用いて、IMTを構文解析し、事前定義された順序及びそれらのメモリ位置を用いて特定のレジスタの初期内容をキャプチャすることができる。プロセッサ105は、さらに、635に示すように、実行中の命令のIMTをキャプチャする。
プロセッサ105は、640に示すように、アーキテクチャ上のレジスタの内容をキャプチャする条件が生じるまで、IMTキャプチャを続ける。その条件に応答して、プロセッサは、645に示すように、メモリに、アーキテクチャ上のレジスタの書き込み及び読み出しを行わせて、LSU114を用いてIMT内の内容をキャプチャすることによって、アーキテクチャ上のレジスタの内容をキャプチャする。実行中の命令の1つによってフェッチされたあらゆるメモリデータは、LSUによってMFC及びMFDレコード(本明細書で説明される)としてキャプチャされる。IMTオペランド・レコード(SRCOP/DESTOP)を構文解析して、命令のオペランドのアドレス及びデータをそれぞれ決定することができる。例えば、MFCレコードは、オペランド・アドレスの一部のみを有する。OPCカウント及びMFCレコード内の部分的アドレスを用いて、対応するSRCOP/DESTOPを見いだし、完全オペランド・アドレスを得る。加えて、ブレークポイント(breakpoint)をトリガすることに応答して、ブレークポイントの後のアーキテクチャ上のレジスタの内容をキャプチャするために、事前定義されたメモリの書き込み/読み出し(645)が行われる(IMTの開始と同様に)。LSUを用いてアーキテクチャ上のレジスタの内容を読み出し/書き込みすることによって、この技術的解決策は、オペランド・レコード及びデータレコードの書き込みを生成することができ、次いでこれを構文解析して、MFC及びMFDレコード内の事前定義されたメモリのオペランド・アドレス及びデータを見ることによって、レジスタ形式及び内容を決定することができる。アーキテクチャ上のレジスタの内容は、事前定義された方式で書き込まれているので、MFDレコードを同じ事前定義方式で構文解析することで、どのアーキテクチャ上のレジスタの内容が、読み出されたMFDレコード内のどの位置にストアされているのかを識別する。
1つ又は複数の例において、IMT拡張モードにおいて、アーキテクチャ上のレジスタの内容のキャプチャを開始する条件まで、IMTキャプチャは続き、命令がメモリからアクセスするデータを含める。例えば、命令のオペコードを用いて、命令がメモリ115からのデータにアクセスするかどうか判断することができる。例えば、所定のサブセットからの命令オペコードは、メモリ内容にアクセスする命令として識別される。代替的に、又は付加的に、命令のオペランドを用いて、メモリ内容がアクセスされているかどうか判断することができる。例えば、オペランドがメモリアドレスを含む場合、その命令は、メモリ内容にアクセスするとみなすことができる。上記のことは少数の例であり、本発明の他の実施形態において、プロセッサ105は、トレースされている命令がメモリ内容にアクセスすることを別の方法で判断することができる。オペランド・データは、IMTによってMFC及びMFDレコードを用いてキャプチャされ、オペランドのアドレスは、SRCOP及び/又はDESTOPレコードを用いてキャプチャされる。MFCレコードは、MFDレコードからオペランド値を構文解析するために用いられる。
代替的に、又は付加的に、アーキテクチャ上のレジスタ内容をキャプチャすることを開始する条件は、直近のアーキテクチャ上のレジスタ内容のキャプチャから所定数の命令が実行されたことを含む。例えば、キャプチャされたIMTトレースから複数のCAPテストケースが生成されることを可能にするために、アーキテクチャ上のレジスタの書き込み及び読み出しを、K個の命令が完了されるたびに行わせ、Kは設定可能である。例えば、開始要求は、Kについて使用する値を含む。したがって、ひとたびテストケースがブレークポイントにおいて停止する必要があると、次のテストケースは、IMTがすべてのアーキテクチャ的レジスタのスナップショットを提供するいずれかの点で再びスタートすることができる。CAPテストケースにおけるブレークポイントは、特定の形式の命令を含むことができる。例えば、ブレークポイントは、とりわけ、時間依存的ストア位置からのフェッチ、IO命令、外部割込み、テストケース生成に十分な情報を提供しない命令、及び/又はそれらの組み合わせを含むことができる。
プロセッサ105はさらに、650に示すように、IMTキャプチャが完了したかどうかチェックする。例えば、IMTキャプチャは、IMTキャプチャを停止する他の動作の中でもとりわけ、現在実行中のプログラムが完了したこと、特定のIMTキャプチャ完了要求を受け取ったこと、IMTキャプチャの手動割込み、及びそれらの組み合わせに応答して、完了することができる。IMTキャプチャが完了していない場合、プロセッサは、次の命令の監視を続けて、IMTレコードをIMTモードに応じてキャプチャする。拡張IMTモードにおいて、プロセッサはまた、アーキテクチャ上のレジスタの内容をキャプチャする条件の発生についても監視する。代わりに、IMTキャプチャが完了した場合、プロセッサは、655に示すように、さらなる初期化要求まで、IMTのキャプチャを停止する。
図10は、本発明の1つ又は複数の実施形態による、IMTキャプチャ内のメモリからデータ内容をキャプチャするために用いられる例示的なMFCレコード700を示す。図示した例は単なる1つの実装であり、他の実施形態において、プロセッサ105は、異なる構成のMFCレコード700を用いることができることに留意されたい。1つ又は複数の例において、MFCレコード700は、データがフェッチされるとき、サイクル毎にLSU114によって生成される。MFCは、1又は2オペランドをカバーすることができる。例えば、通常のロード/ISU動作の場合、命令が単一メモリアクセスを使用するならば、1つのオペランドだけがアクティブである。一方、シーケンサー動作の場合、2つのメモリアクセスを表す2つのデータオペランドがアクティブである。
図示された例において、MFCレコードは64ビットを有し、図10に示すようなフィールドを含む。他の例において、MFCレコード700は、異なる数のビット、及び図示されたフィールドとは異なる、多い、又は少ないフィールドを含むことができる。図示されるように、MFCレコード700は、スレッド識別子705を含み、これはMFC/MFDレコードを書き込んでいるスレッドの一意の識別である。MFCレコード700はさらに、レポート形式識別子710を含み、これは現在のレコード形式がMFCレコードであることを示す。MFCレコード700はさらに、第1のメモリデータのための第1の妥当性(validity)インジケータ715を含む。妥当性インジケータは、メモリデータ内容が妥当であり、テストに用いることができるかどうかを示す。
さらに、MFCレコード700は、オペランド・カウント・フィールド725を含み、これは、第1のメモリデータが命令内のどのオペランドに関連付けられるのかを示す。例えば、第1のメモリデータが命令内の第1のオペランドに関連付けられる場合、オペランド・カウント・フィールド725は、第1の値、例えば0を有し、その代わりに、第1のメモリデータが命令内の第2のオペランドに関連付けられる場合、オペランド・カウント・フィールド725は、第2の値、例えば1を有する。MFCレコード700はさらに、第1のメモリデータ情報フィールド730を含み、これは、とりわけ、アライメント、長さといった、第1のメモリデータに関する情報を含む。MFCレコード700はさらに、第1のメモリデータのメモリアドレスを含む、第1のアドレス・フィールド735を含む。1つ又は複数の例において、フィールド735は、メモリアドレスの所定のわずかなビット、例えば最後の8ビット、最後の9ビットのみを含む。このアドレス及びOPC1を用いて、完全オペランド・アドレスを有する別個のレコードであるオペランド・レコード(DESTOP/SRCOP)から、完全オペランド・アドレスを決定/確認する。
図示されたMFCレコード700は、2つのフェッチオペランドを有する命令の場合に機能する、2つのオペランドのための情報を有することに留意されたい。命令が1つのオペランドのみを有する場合、MFCレコード700は、妥当なオペランド情報を1つだけ有する。例えば、RISCプロセッサの場合、MFCレコード700は、1つのオペランド情報のみを有する。
この事例では、MFCレコード700はさらに、第2のメモリデータに対応する同様のフィールドを含む。例えば、MFCレコード700は、第2のオペランドの妥当性を示す、妥当性インジケータ・フィールド720と、第2のメモリデータが命令内のどのオペランドに関連付けられるのかを示す、オペランド・カウント・フィールド745とを含む。例えば、第2のメモリデータが命令内の第1のオペランドに関連付けられる場合、オペランド・カウント・フィールド745は、第1の値、例えば0を有し、その代わりに、第2のメモリデータが命令内の第2のオペランドに関連付けられる場合、オペランド・カウント・フィールド745は、第2の値、例えば1を有する。MFCレコード700はさらに、第2のメモリデータ情報フィールド750を含み、これは、とりわけ、アライメント、長さといった、第2のメモリデータに関する情報を含む。MFCレコード700はさらに、第2のメモリデータのメモリアドレスを含む、第2のアドレス・フィールド755を含む。1つ又は複数の例において、フィールド755は、メモリアドレスの所定のわずかなビット、例えば最後の8ビット、最後の9ビットのみを含む。
オペランドが8バイトより多くをフェッチする場合、複数のMFCレコードが書き込まれる。例えば、z Systems(登録商標)において、オペランドは256バイトまでフェッチすることができ、これは上で示したような32個のMFC/MFDレコードを必要とする。命令が2つのオペランドをフェッチする場合、32個のMFCレコード(両方のオペランドをカバーする)、次いで64個のMFDレコードが存在し得る。
1つ又は複数の例において、同じオペランドに対するすべてのMFCレコードは、連続して書き込まれる。どのようにしてMFDレコードをMFCレコードから識別するのかは、実装に依存する。1つ又は複数の例において、すべてのMFCレコードは、連続して書き込まれ、次いですべてのMFDレコードが書き込まれ、それらのMFDレコードは、MFCレコードが2つの妥当なオペランドを有しているときにはインターリーブされる。妥当なオペランド情報の総数は、MFDレコードの数と同じであろう。ひとたび対応するMFDレコードが識別されると、MFDレコード内の実際のデータは、対応するMFCレコード内のアライメント及びデータ長さを用いて決定される。MFC及びMFDレコードの配置に応じて、構文解析及び情報の決定は、他の実装では変更することができる。
図11は、本発明の1つ又は複数の実施形態による、例示的なMFDレコード800を示す。他の例において、MFCレコード700は、異なる数のビット、及び図示されたフィールドは異なる、多い、又は少ないフィールドを含むことができる。MFDレコードは、フィールド735及び755のような、MFCレコード700内で特定されたメモリアドレスの内容を含む。
キャプチャされたIMTデータは、システム事象に関連したトレースデータを含む。1つ又は複数の例において、プロセッサ105は、システム事象に関連した命令を、TLB、IFU,実行ユニットなどのようなプロセッサ105内のある位置から受け取る。IMTデータの生成はさらに、命令情報を記録するのに必要なトレースセグメントレコードの最小数を決定することを含む。プロセッサ105は、その数のトレースセグメントレコードを含むトレースセグメントテーブルを作成し、その数のトレースセグメントレコードは、少なくとも1つの命令レコードを含む。1つ又は複数の例において、プロセッサ105はさらに、トレースセグメントレコードからサブトレースを生成し、サブトレースは、その命令に対して生成されたトレースより少ない数のデータレコードを有する。IMTデータの生成のさらなる詳細は、その内容が引用により組み入れられる特許文献1において提供される。
さらに、本明細書における技術的解決策は、制御されたテストスイートを介してトレース及びトレースセグメントの第1のインスタンスを生成し、トレースからトレースセグメントの第2のインスタンスを生成し、第1のインスタンスと第2のインスタンスとを比較することによって、トレースセグメントテーブルを確認することを容易にする。
例えば、図8に戻ると、1つ又は複数の本発明の実施形態による、キャプチャされたIMTからCAPテストケースを生成するための方法についてのデータフローが図示されている。CAPテストケースは、既存のインフラストラクチャ及びツールを用いて生成することができる。例えば、IMTで利用可能なアーキテクチャ上のレジスタ及びメモリの初期内容を用いて、後処理プログラムは、キャプチャされたIMTを構文解析することによってCMDファイルを作成する。CMDファイルは、専有内部システムとすることができる、IMTテストシステムのようなテストスイート上で実行され、CATSトレースを生成する。CATSトレースは、既存のCAPテストケース生成ツールのようなツールに供給され、CATテストケースを生成する。この、本明細書で説明するような改善されたIMTを用いる方法は、IMTから直接CAPテストケースを生成することによって別個の参照モデルを開発することを必要とする実質的な努力及び複雑さを回避する。
技術的解決策は、本明細書で説明されるIMTキャプチャ技術によってキャプチャされたメモリデータ内容を検証する方法をさらに含む。図12は、本発明の1つ又は複数の実施形態による、IMTキャプチャレコードを検証するための例示的な方法のフローチャートを示す。IMTキャプチャレコードは、評価/テストされるプロセッサが利用可能になる前に、したがってIMT520が利用可能になる前に、検証されるべきである。例えば、擬似IMT490は、AVPファイルを用いてコアシミュレータから生成される。AVPファイルは、既存である。AVPファイルは、アーキテクチャ検証プログラムファイルであり、これは、VHDLモデルのようなシミュレータ上で実行することによってハードウェア検証のためのテストケースのために用いられる命令及びデータについての、アーキテクチャ上のレジスタの初期内容及びメモリ内容を有する。CMDファイルは、AVPファイルと同じ内容を有するが異なる形式のコマンドファイルであり、専有内部システムなどのIMTテストシステムのようなテストスイート上で実行するために用いられる。
1つ又は複数の例において、擬似IMT490は、拡張IMTモードを用いて生成される。コアシミュレータは、テストされるプロセッサ105及び/又はハードウェアコンポーネントをシミュレートするモデル、例えば、VHDLシミュレートモデルである。シミュレータによってキャプチャされたIMTは、擬似IMT490と呼ばれる。さらに、本方法は、後処理プログラムを通じて擬似IMT490から新たなAVPファイルを生成することを含む。本方法は、元のAVPファイルと新たなAVPファイルとを比較して、レジスタ/メモリ内容に何らかのミスマッチがないかどうかを調べることをさらに含む。例えば、AVPファイルを比較するために、両方のAVPファイルをコアシミュレータ上で実行し、両方の実行からの応答を比較する。既存のAVPファイルと擬似IMT490を用いて生成された新たなAVPファイルとを、コアシミュレータ上で、非IMTモードで実行して、これらを比較する。1つ又は複数の例において、AVP比較又はコアシミュレータではデバッグできないかもしれないいずれかの問題をデバッグするために、CMDファイル510が、擬似IMT490から生成され、専有内部システム又は他のいずれかのテストスイートのようなIMTテストシステム上で実行される。
図13を参照すると、本発明の1つ又は複数の実施形態による、ソースオペランド(システムエリア)レコード1000(SRCOP)が示される。1つの実施形態において、ソースオペランド(システムエリア)レコード1000は、複数の領域1005−1030を含む。ビット0−1に対応するID領域1005は、中央プロセッサを識別する。ビット2−6に対応するレコード形式領域1010は、レコードの形式を識別する。分岐命令の場合、ビット7に対応する分岐(「B」)領域1018は、分岐が成立したかどうかについてのインジケータを提供する。ビット8−18に対応する領域1015は未使用である。ビット19に対応するタグ領域1020は、任意の正数として定義され、ここで1の値は、いずれかの非システムエリアのロード/ストアユニット(LSU)の絶対アドレスを示し、1の値は、システムエリアのLSUを示す。非ゼロビットエリア1025は、ビット20に対応する非ゼロ値を含む。ビット21−63に対応するアドレス領域1030は、ソースオペランド・アドレス情報を提供する。他の例において、SRCOP1000は、上記例に示されているのとは異なる構造を有し得ることに留意されたい。
図14を参照すると、本発明の1つ又は複数の実施形態による、宛先オペランド(システムエリア)レコード1100(DSTOP)が示される。1つの実施形態において、宛先オペランド(システムエリア)レコード1100は、複数の領域1105−1130を含む。ビット0−1に対応するID領域1105は、中央プロセッサを識別する。ビット2−6に対応するレコード形式領域1110は、レコードの形式を識別する。ビット7−18に対応する領域1115は未使用である。ビット19に対応するタグ領域1120は、任意の正数として定義され、ここで1の値は、いずれかの非システムエリアのロード/ストアユニット(LSU)の絶対アドレスを示し、1の値は、システムエリアのLSUを示す。非ゼロビットエリア1125は、ビット20に対応する非ゼロ値を含む。ビット21−63に対応するアドレス領域1130は、宛先オペランド・アドレス情報を提供する。他の例において、DSTOP1100は、上記例に示されているのとは異なる構造を有し得ることに留意されたい。
したがって、本明細書における技術的解決策は、プロセッサがIMTのキャプチャを改善することを容易にする。IMTは、z Systems(登録商標)コアのようなプロセッサコアによって実行される命令に関する詳細情報を含む、ハードウェアによって生成されるトレースである。IMTは、将来のシステムの性能を予測及び確認することを助ける性能モデル又はシミュレーションモデルを駆動するために用いられる。IMTは、専有内部システムのようなIMTテストシステムでシミュレートすることができない、多重層及び多重パーティションベンチマークについてのトレースを提供することができる。本明細書で説明する技術的解決策を実装することによって、キャプチャされたIMTが改善され、シーケンス・テストケースを駆動するのに必要とされるレジスタ内容及び参照メモリデータを提供する。
理想的なシナリオにおいて、IMTキャプチャは、ブレークポイントごとに停止され、アーキテクチャ上のレジスタの初期内容をキャプチャすることによって再び開始される。しかしながら、このようなIMTキャプチャは、ハードウェアが命令を監視/デコードして、ブレークポイントを生じさせる潜在的な命令を識別する必要があるので、実装するのにコストがかさむ。本明細書で説明する技術的解決策は、K個の命令ごとにアーキテクチャ上のレジスタの初期内容をキャプチャすることによって、このような技術的課題に対処する。このようにして、IMTを構文解析している間にIMT内でブレークポイントが識別された場合、テストケースの生成を停止することができ、アーキテクチャ的レジスタのスナップショットを提供するIMT内の次のポイントにおいて、次のテストケースを開始することができる。
本発明は、いずれかの可能な技術的詳細レベルの統合における、システム、方法、及び/又はコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有する、コンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって用いるための、命令を保持し格納できる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、これらに限定されるものではないが、例えば、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより特定の例の非網羅的なリストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にコード化されたデバイス、及び上記のいずれかの適切な組み合わせを含む。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれの計算/処理デバイスに、又は、例えばインターネット、ローカルエリアネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージデバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、及び/又はエッジサーバを含むことができる。各計算/処理デバイスにおけるネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれの計算/処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、又は、「C」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソースコード若しくはオブジェクトコードのいずれか、とすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェアパッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカルエリアネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。いくつかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラム可能ゲートアレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。これらのコンピュータプログラム命令を、コンピュータ、プログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、格納された命令を有するコンピュータ可読媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製品を含むようにすることもできる。
コンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実装プロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。いくつかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実装できることにも留意されたい。
本発明の種々の実施形態の説明は、例示の目的のために提示されているが、網羅的であること、又は、開示される実施形態に限定されることは意図されない。当業者には、説明される実施形態の範囲及び思想から逸脱することなく、多くの修正及び変形が明らかになるであろう。本明細書で使用される用語は、実施形態の原理、実用的用途若しくは市場で見出される技術に対する技術的改善を最も良く説明するために、又は当業者が本明細書で開示される実施形態を理解することを可能にするために選択された。

Claims (25)

  1. プロセッサに対してインメモリ・トレース(IMT)データ・キャプチャを開始することを含み、IMTデータは、命令が前記プロセッサの実行パイプラインを通って流れている間に収集される命令トレースであり、
    アーキテクチャ上のレジスタの内容を、
    前記アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び
    ロード・ストア・ユニット(LSU)に前記所定のメモリ位置の内容を読み出させること
    によってキャプチャすることを含む、コンピュータ実装される方法。
  2. 前記LSUに前記所定のメモリ位置の内容を読み出させることは、前記IMTデータ・キャプチャにおいて、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを生成することを含む、請求項1に記載のコンピュータ実装される方法。
  3. 前記アーキテクチャ上のレジスタの内容は、ブレークポイントに応答してキャプチャされる、請求項1に記載のコンピュータ実装される方法。
  4. 前記アーキテクチャ上のレジスタの内容は、前記IMTデータ・キャプチャが拡張IMTモードで初期化されていることに応答してキャプチャされる、請求項1に記載のコンピュータ実装される方法。
  5. 前記IMTデータ・キャプチャは、前記命令のオペランドの値を含む、請求項4に記載のコンピュータ実装される方法。
  6. オペランドの値は、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを用いてキャプチャされ、前記オペランドのアドレスは、ソースオペランド・レコード又は宛先オペランド・レコードを用いてキャプチャされる、請求項5に記載のコンピュータ実装される方法。
  7. 前記メモリフェッチ制御レコードの構造が前記プロセッサの型式に基づくものである、請求項2に記載のコンピュータ実装される方法。
  8. 前記アーキテクチャ上のレジスタの内容は、前記プロセッサによって所定の数の命令が実行されるたびにその後キャプチャされる、請求項1に記載のコンピュータ実装される方法。
  9. 前記プロセッサは、第1のプロセッサであり、前記方法は、
    IMTキャプチャ・データからの前記アーキテクチャ上のレジスタの内容にアクセスすることによって、前記IMTキャプチャ・データを用いて前記第1のプロセッサによってトレースされた命令を、第2のプロセッサを用いて実行することをさらに含む、
    請求項1に記載のコンピュータ実装される方法。
  10. IMTキャプチャ・データからの前記アーキテクチャ上のレジスタの内容にアクセスすることによって、前記IMTキャプチャ・データを用いて前記プロセッサによってトレースされた命令を、シミュレートされたプロセッサを用いて実行することをさらに含む、請求項1に記載のコンピュータ実装される方法。
  11. 前記IMTデータをキャプチャする前に、第1のAVPファイルを用いて擬似IMTキャプチャを生成すること、
    前記擬似IMTを用いて第2のAVPファイルを生成すること、及び
    前記第1のAVPファイルと前記第2のAVPファイルとを比較すること、
    によってIMTデータレコードを検証することをさらに含む、請求項1に記載のコンピュータ実装される方法。
  12. メモリと、
    前記メモリに結合されたプロセッサと、
    を含むシステムであって、前記プロセッサが、
    インメモリ・トレース(IMT)データ・キャプチャを開始する要求を受け取り、IMTデータは、命令が前記プロセッサの実行パイプラインを通って流れている間に収集される命令トレースであり、
    前記IMTデータにおける前記プロセッサのアーキテクチャ上のレジスタの内容を
    前記アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び
    ロード・ストア・ユニット(LSU)に前記所定のメモリ位置の内容を読み出させること
    によってキャプチャする
    ように構成された、システム。
  13. 前記所定のメモリ位置の内容を前記LSUに読み出させることは、キャプチャされたIMTデータにおいて、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを生成することを含む、請求項12に記載のシステム。
  14. 前記アーキテクチャ上のレジスタの内容は、ブレークポイントに応答してキャプチャされる、請求項12に記載のシステム。
  15. 前記アーキテクチャ上のレジスタの内容は、前記IMTデータ・キャプチャが拡張IMTモードで初期化されていることに応答してキャプチャされる、請求項12に記載のシステム。
  16. 前記IMTデータ・キャプチャは、前記命令のオペランドの値を含む、請求項15に記載のシステム。
  17. オペランドの値は、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを用いてキャプチャされ、前記オペランドのアドレスは、ソースオペランド・レコード又は宛先オペランド・レコードを用いてキャプチャされる、請求項16に記載のシステム。
  18. 前記プロセッサは、第1のプロセッサであり、前記システムは、
    IMTキャプチャ・データからの前記アーキテクチャ上のレジスタの内容にアクセスすることによって、前記IMTキャプチャ・データを用いて前記第1のプロセッサによってトレースされた命令を実行するように構成された、第2のプロセッサをさらに含む、
    請求項12に記載のシステム。
  19. 前記IMTデータからの前記アーキテクチャ上のレジスタの内容にアクセスすることによって、前記IMTデータを用いて前記プロセッサによってトレースされた命令を実行するように構成された、シミュレートされたプロセッサをさらに含む、請求項12に記載のシステム。
  20. プロセッサをテストするためのコンピュータプログラムであって、処理回路によって実行可能なプログラム命令を含み、前記プログラム命令は、前記処理回路に、
    プロセッサに対してインメモリ・トレース(IMT)データ・キャプチャを開始することを含み、IMTデータは、命令が前記プロセッサの実行パイプラインを通って流れている間に収集される命令トレースであり、
    前記IMTデータ・キャプチャにおける前記プロセッサのアーキテクチャ上のレジスタの内容を、
    前記アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び
    ロード・ストア・ユニット(LSU)に前記所定のメモリ位置の内容を読み出させること
    によってキャプチャすること、
    を含む方法を実施させる、コンピュータプログラム。
  21. 前記LSUに前記所定のメモリ位置の内容を読み出させることは、前記IMTデータ・キャプチャにおいて、メモリフェッチ制御レコード及びメモリフェッチ・データ・レコードを生成することを含む、請求項20に記載のコンピュータプログラム。
  22. 前記アーキテクチャ上のレジスタの内容は、前記プロセッサによって所定の数の命令が実行されるたびにその後キャプチャされる、請求項20に記載のコンピュータプログラム。
  23. 前記プロセッサは、第1のプロセッサであり、前記方法は、
    IMTキャプチャ・データからのアーキテクチャ上のレジスタの内容にアクセスすることによって、前記IMTキャプチャ・データを用いて前記第1のプロセッサによってトレースされた命令を、第2のプロセッサを用いて実行することをさらに含む、
    請求項20に記載のコンピュータプログラム。
  24. プロセッサをテストするための装置であって、
    プロセッサに対してインメモリ・トレース(IMT)データ・キャプチャを開始する要求を受け取り、IMTデータは、命令が前記プロセッサの実行パイプラインを通って流れている間に収集される命令トレースであり、
    前記IMTデータにおける前記プロセッサのアーキテクチャ上のレジスタの内容を
    前記アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び
    ロード・ストア・ユニット(LSU)に前記所定のメモリ位置の内容を読み出させること
    によってキャプチャし、
    キャプチャされたIMTデータを用いてテストシーケンスを生成し、前記テストシーケンスは、前記命令と、前記キャプチャされたIMTデータからの前記アーキテクチャ上のレジスタの内容とを含み、
    前記テストシーケンスを第2のプロセッサを用いて実行する
    ように構成された、装置。
  25. プロセッサをテストするためのコンピュータ実装される方法であって、
    プロセッサに対してインメモリ・トレース(IMT)データ・キャプチャを開始することを含み、命令がIMTデータは、前記プロセッサの実行パイプラインを通って流れている間に収集される命令トレースであり、
    拡張モードで開始されたIMTデータ・キャプチャに応答して、前記IMTデータにおける前記プロセッサのアーキテクチャ上のレジスタの内容を、
    前記アーキテクチャ上のレジスタの内容を所定のメモリ位置にストアすること、及び
    ロード・ストア・ユニット(LSU)に前記所定のメモリ位置の内容を読み出させること
    によってキャプチャし、
    キャプチャされたIMTデータを用いてテストシーケンスを生成し、前記テストシーケンスは、前記命令と、前記キャプチャされたIMTデータからの前記アーキテクチャ上のレジスタの内容と、オペランド・データとを含み、
    前記テストシーケンスを第2のプロセッサを用いて実行すること
    を含む、コンピュータ実装される方法。
JP2019564056A 2017-05-23 2018-05-21 メモリデータ内容を含むハードウェア命令トレースの生成及び検証 Active JP6959995B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/602,618 US10331446B2 (en) 2017-05-23 2017-05-23 Generating and verifying hardware instruction traces including memory data contents
US15/602,618 2017-05-23
PCT/IB2018/053567 WO2018215911A1 (en) 2017-05-23 2018-05-21 Generating and verifying hardware instruction traces including memory data contents

Publications (2)

Publication Number Publication Date
JP2020522784A true JP2020522784A (ja) 2020-07-30
JP6959995B2 JP6959995B2 (ja) 2021-11-05

Family

ID=64396434

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019564056A Active JP6959995B2 (ja) 2017-05-23 2018-05-21 メモリデータ内容を含むハードウェア命令トレースの生成及び検証

Country Status (6)

Country Link
US (3) US10331446B2 (ja)
JP (1) JP6959995B2 (ja)
CN (1) CN110651250B (ja)
DE (1) DE112018001257T5 (ja)
GB (1) GB2576288B (ja)
WO (1) WO2018215911A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10331446B2 (en) 2017-05-23 2019-06-25 International Business Machines Corporation Generating and verifying hardware instruction traces including memory data contents
CN111523283B (zh) * 2020-04-16 2023-05-26 北京百度网讯科技有限公司 一种验证处理器的方法、装置、电子设备及存储介质
US11907724B2 (en) 2022-02-04 2024-02-20 International Business Machines Corporation In-memory trace with overlapping processing and logout
CN114996167B (zh) * 2022-08-03 2022-11-01 成都星联芯通科技有限公司 一种测试用例管理方法、装置、存储介质及电子设备

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282629B1 (en) * 1992-11-12 2001-08-28 Compaq Computer Corporation Pipelined processor for performing parallel instruction recording and register assigning
US5838692A (en) * 1996-11-14 1998-11-17 Hewlett-Packard Company System and method for extracting realtime debug signals from an integrated circuit
US6314530B1 (en) * 1997-04-08 2001-11-06 Advanced Micro Devices, Inc. Processor having a trace access instruction to access on-chip trace memory
US6094729A (en) * 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US5933626A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
US6145123A (en) * 1998-07-01 2000-11-07 Advanced Micro Devices, Inc. Trace on/off with breakpoint register
US6173395B1 (en) * 1998-08-17 2001-01-09 Advanced Micro Devices, Inc. Mechanism to determine actual code execution flow in a computer
US6237066B1 (en) * 1999-03-22 2001-05-22 Sun Microsystems, Inc. Supporting multiple outstanding requests to multiple targets in a pipelined memory system
US6530076B1 (en) * 1999-12-23 2003-03-04 Bull Hn Information Systems Inc. Data processing system processor dynamic selection of internal signal tracing
US7043668B1 (en) * 2001-06-29 2006-05-09 Mips Technologies, Inc. Optimized external trace formats
US7080289B2 (en) * 2001-10-10 2006-07-18 Arm Limited Tracing multiple data access instructions
US20030135718A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for instruction tracing by revealing executed opcode or instruction
US20030135719A1 (en) 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for tracing instruction disposition information
GB2389432B (en) * 2002-06-07 2005-09-07 Advanced Risc Mach Ltd Instruction tracing in data processing systems
US7107585B2 (en) * 2002-07-29 2006-09-12 Arm Limited Compilation of application code in a data processing apparatus
US7747989B1 (en) * 2002-08-12 2010-06-29 Mips Technologies, Inc. Virtual machine coprocessor facilitating dynamic compilation
US20040139305A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation Hardware-enabled instruction tracing
US7383428B2 (en) * 2003-09-11 2008-06-03 International Business Machines Corporation Method, apparatus and computer program product for implementing atomic data tracing
US7284153B2 (en) * 2003-11-17 2007-10-16 International Business Machines Corporation Apparatus, method, and system for logging diagnostic information
JP2008523456A (ja) * 2004-05-12 2008-07-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ トレースコプロセッサを備えたデータ処理システム
US7421619B2 (en) 2005-02-11 2008-09-02 International Business Machines Corporation Method in a processor for performing in-memory tracing using existing communication paths
US7437618B2 (en) * 2005-02-11 2008-10-14 International Business Machines Corporation Method in a processor for dynamically during runtime allocating memory for in-memory hardware tracing
GB2424727B (en) * 2005-03-30 2007-08-01 Transitive Ltd Preparing instruction groups for a processor having a multiple issue ports
US7987342B1 (en) * 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US7444499B2 (en) 2006-03-28 2008-10-28 Sun Microsystems, Inc. Method and system for trace generation using memory index hashing
US20080082801A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Apparatus and method for tracing instructions with simplified instruction state descriptors
US8527959B2 (en) 2007-12-07 2013-09-03 International Business Machines Corporation Binary programmable method for application performance data collection
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
US7975182B2 (en) 2008-02-25 2011-07-05 International Business Machines Corporation Method, system and computer program product for generating trace data
US8122437B2 (en) * 2008-03-31 2012-02-21 Freescale Semiconductor, Inc. Method and apparatus to trace and correlate data trace and instruction trace for out-of-order processors
US8438547B2 (en) * 2009-05-05 2013-05-07 Freescale Semiconductor, Inc. Address translation trace message generation for debug
US9063735B2 (en) * 2010-10-19 2015-06-23 Samsung Electronics Co., Ltd. Reconfigurable processor and method for processing loop having memory dependency
CN101976187B (zh) * 2010-11-16 2012-12-26 广州迪庆电子科技有限公司 反编译过程中的堆栈跟踪方法、装置及反编译器
US8626993B2 (en) 2011-11-18 2014-01-07 Apple Inc. Method for tracking memory usages of a data processing system
US10289743B2 (en) * 2012-01-19 2019-05-14 Microsoft Technology Licensing, Llc Client-side minimal download and simulated page navigation features
JP5874433B2 (ja) * 2012-02-20 2016-03-02 富士通株式会社 トレース結合装置及びプログラム
US9124481B2 (en) 2012-05-29 2015-09-01 Alcatel Lucent Custom diameter attribute implementers
CN102789401B (zh) 2012-07-12 2014-11-05 北京泛华恒兴科技有限公司 基于柔性测试技术的测试流程控制方法和装置
CN103679134B (zh) * 2013-09-09 2016-07-13 华中科技大学 一种对海目标红外成像识别装置
US9703675B2 (en) * 2014-08-11 2017-07-11 Microsoft Technology Licensing, Llc Structured logging and instrumentation framework
US9372947B1 (en) 2014-09-29 2016-06-21 Cadence Design Systems, Inc. Compacting trace data generated by emulation processors during emulation of a circuit design
US9535820B2 (en) * 2015-03-27 2017-01-03 Intel Corporation Technologies for application validation in persistent memory systems
US10546075B2 (en) * 2015-05-15 2020-01-28 Futurewei Technologies, Inc. System and method for a synthetic trace model
EP3338192A1 (en) 2015-08-18 2018-06-27 Telefonaktiebolaget LM Ericsson (PUBL) Method for observing software execution, debug host and debug target
US10331446B2 (en) 2017-05-23 2019-06-25 International Business Machines Corporation Generating and verifying hardware instruction traces including memory data contents

Also Published As

Publication number Publication date
GB2576288A (en) 2020-02-12
US10824426B2 (en) 2020-11-03
US10496405B2 (en) 2019-12-03
GB201917044D0 (en) 2020-01-08
CN110651250A (zh) 2020-01-03
GB2576288B (en) 2022-09-28
JP6959995B2 (ja) 2021-11-05
US20180341481A1 (en) 2018-11-29
US10331446B2 (en) 2019-06-25
US20180341480A1 (en) 2018-11-29
DE112018001257T5 (de) 2019-12-12
CN110651250B (zh) 2023-05-05
WO2018215911A1 (en) 2018-11-29
US20190235864A1 (en) 2019-08-01

Similar Documents

Publication Publication Date Title
US10824426B2 (en) Generating and verifying hardware instruction traces including memory data contents
JP6095682B2 (ja) プログラム・イベント記録イベントのランタイム計装イベントへの変換
JP6058020B2 (ja) トランザクション実行モードでのランタイム・インスツルメンテーション・サンプリングを実現するためのコンピュータ・プログラム・プロダクト、方法、およびシステム(トランザクション実行モードでのランタイム・インスツルメンテーション・サンプリング)
JP6138142B2 (ja) 被管理ランタイムのためのハードウェア・ベース・ランタイム計装機構
JP6195572B2 (ja) ランタイム計装制御の状況の決定のためのコンピュータ・プログラム、方法、およびシステム
TWI544410B (zh) 利用執行單步驟以進行編碼診斷
CN110168508B (zh) 监测断点出现的存储器位置的方法、计算机系统和介质
JP6153534B2 (ja) 命令オペレーション・コードによるランタイム計装間接サンプリング
Nanavati et al. Whose cache line is it anyway? operating system support for live detection and repair of false sharing
KR20200088760A (ko) 체크섬 생성
Fang et al. Transformer: A functional-driven cycle-accurate multicore simulator
US9069900B2 (en) Method for determining whether a machine code instruction of a machine code program is executed in the machine code program
Kodakara et al. Extracting effective functional tests from commercial programs
Kempf et al. Software instrumentation
US20150149984A1 (en) Determining instruction execution history in a debugger
US9111034B2 (en) Testing of run-time instrumentation
Jünger et al. Fast SystemC processor models with unicorn
Verdejo et al. Microbenchmarks for Detailed Validation and Tuning of Hardware Simulators
US11907724B2 (en) In-memory trace with overlapping processing and logout
Teodorescu et al. Prototyping architectural support for program rollback using FPGAs
Albertsson Holistic debugging--enabling instruction set simulation for software quality assurance
WO2018103045A1 (zh) 测试点的创建方法,装置和系统
Anwar et al. VG-MIPS: A dynamic binary instrumentation framework for multi-core MIPS processors
JP2014160421A (ja) ソフトエラー解析装置、エラー情報作成装置
Rodriguez DEBUGGING AND INTEL® HARDWARE ACCELERATED EXECUTION MANAGER.

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200525

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201021

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210922

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211005

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211008

R150 Certificate of patent or registration of utility model

Ref document number: 6959995

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150