JP7116562B2 - 追跡データ表現 - Google Patents

追跡データ表現 Download PDF

Info

Publication number
JP7116562B2
JP7116562B2 JP2018049681A JP2018049681A JP7116562B2 JP 7116562 B2 JP7116562 B2 JP 7116562B2 JP 2018049681 A JP2018049681 A JP 2018049681A JP 2018049681 A JP2018049681 A JP 2018049681A JP 7116562 B2 JP7116562 B2 JP 7116562B2
Authority
JP
Japan
Prior art keywords
sequence
executed
program instructions
branch
data
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.)
Active
Application number
JP2018049681A
Other languages
English (en)
Other versions
JP2018163656A (ja
Inventor
グラント アラスデア
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2018163656A publication Critical patent/JP2018163656A/ja
Application granted granted Critical
Publication of JP7116562B2 publication Critical patent/JP7116562B2/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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

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

Description

本開示は、データ処理システムの分野に関し、特に、データ処理システム内で実行されたプログラム命令列に対応する追跡データの表現に関するものである。
データ処理システムに追跡メカニズムを備えることで、そのデータ処理システムが追跡するプログラム命令を通る実行パス(path)を示す追跡データを生成することにより、プログラム命令列の実行を分析することができることが知られている。このような追跡メカニズムは、例えば、ますます複雑化するデータ処理システムやそれに関連するプログラムで行われるデバッグ及び診断処理において有用である。
追跡メカニズムを提供する上で生じる課題は、管理や取り扱いが困難となり得る大量の追跡データが生成される場合があるということである。この追跡データ量はさまざまな方法で削減し得る。いくつかの追跡メカニズムの形態において、追跡データは、プログラム自体が利用可能である場合に、プログラムを通して実行パスを追跡するのに必要な情報、例えば、条件付き分岐命令についての実行済み又は未実行の結果、プログラムフローのデータに依存する変更、周期的な同期アドレスデータを与えるだけである。さらに、追跡データは、さまざまな圧縮技術により圧縮が行われ、データ量の低減と、追跡データの取り扱いの簡素化が図られてもよい。このような圧縮技術は、追跡データがさまざまな実行スレッド(例えば、マルチコアプロセッサ内におけるさまざまなプロセッサによって実行されるさまざまなスレッド)を示す列に分けられる場合に、交互に配置されたさまざまなスレッドからの追跡データを圧縮する場合と比較して、より高度な圧縮を可能にするスレッド内に高い相関度が得られる傾向があるため、効率向上が図られることがある。
本開示の少なくともいくつかの実施例によれば、プログラムのプログラム命令を実行する処理回路と、
複数の追跡対象を生成する追跡回路と、
を具備し、
追跡対象は、実行済みプログラム命令列を、
前記実行済みプログラム命令列の開始アドレスを示す開始アドレスインジケータ、
前記開始アドレスから始まる前記実行済みプログラム命令列内の分岐結果列を示す分岐結果インジケータ、及び
前記分岐結果列が検出された回数のカウントを示すカウントインジケータ、
として表現する、
ことを特徴とするデータ処理を行う装置が提供される。
本開示の少なくともいくつかの実施例によれば、複数の追跡対象を生成するプログラムのプログラム命令を実行する処理回路と接続するための追跡回路であって、
追跡対象は、実行済みプログラム命令列を、
前記実行済みプログラム命令列の開始アドレスを示す開始アドレスインジケータ、
前記開始アドレスから始まる前記実行済みプログラム命令列内の分岐結果列を示す分岐結果インジケータ、及び
前記分岐結果列が検出された回数のカウントを示すカウントインジケータ、
として表現する、ことを特徴とする追跡回路が提供される。
本開示の少なくともいくつかの実施例によれば、
プログラムのプログラム命令を実行する工程と、
複数の追跡対象を生成する工程と、
を具備し、
追跡対象は、実行済みプログラム命令列を、
前記実行済みプログラム命令列の開始アドレスを示す開始アドレスインジケータ、
前記開始アドレスから始まる前記実行済みプログラム命令列内の分岐結果列を示す分岐結果インジケータ、及び
前記分岐結果列が検出された回数のカウントを示すカウントインジケータ、
として表現する、ことを特徴とするデータ処理方法が提供される。
本開示の少なくともいくつかの実施例によれば、プログラムの実行を分析する方法であって、
前記プログラムのプログラム命令を特定するデータを受信する工程と、
実行済みプログラム命令列を、
前記実行済みプログラム命令列の開始アドレスを示す開始アドレスインジケータ、
前記開始アドレスから始まる前記実行済みプログラム命令列内の分岐結果列を示す分岐結果インジケータ、及び
前記分岐結果列が検出された回数のカウントを示すカウントインジケータ、
として表現する追跡対象を特定するデータを受信する工程と、
前記プログラム命令を特定するデータと、所定のプログラム命令が少なくとも何回実行されたか判定する前記追跡対象を特定するデータとを分析する工程と、
を具備する、ことを特徴とする方法が提供される。
本技術のさらなる態様、特徴及び利点は、添付の図面と併用される以下の実施例の説明から明らかとなるであろう。
オンチップ前駆データ形成を用いたデータ処理システムを概略的に示す図である。 オフチップ前駆データ形成を用いたデータ処理システムを概略的に示す図である。 実行済みプログラム命令列と、その列を示す関連する追跡対象を概略的に示す図である。 実行済みプログラム命令列を示す追跡対象のさらなる例を概略的に示す図である。
図1は、オンチップ前駆データ形成を用いたデータ処理システム2を概略的に示す図である。このデータ処理システム2は、オフチップ追跡回路6を介してプログラム可能な汎用コンピュータ8に接続されたシステムオンチップ集積回路4を備えている。集積回路4は、プロセッサコア14、16が実行するプログラム命令12が格納されたメモリ10を備えている。プロセッサコア14、16と関連付けられている各キャッシュメモリ18、20には、プログラム命令12と操作されるデータが格納されている。
オンチップ追跡回路22は、プロセッサコア14、16に接続され、それらによるプログラム命令の実行を監視する。プログラム命令を実行する処理回路として機能するプロセッサコア14、16は、該コア14、16が実行した条件付き分岐命令の分岐命令結果を示すデータと、コア14、16が追跡した非静的分岐ターゲットのプログラム命令アドレスをオンチップ追跡回路22に提供する。さらに、プロセッサコア14、16は、定期的に同期点アドレスを提供するなど、コア14、16が実行したプログラム命令のプログラム命令アドレスを示すデータを同期点として提供してもよい。オンチップ追跡回路22は、コア14、16から受信したデータのバッファリングを行うのに用いられ、本実施例では、それデータを用いて、以下にさらに説明するように、追跡対象を含むプロファイル前駆データのオンチップ生成を行う。
オンチップ追跡回路22は、それぞれ独立した一連の実行特徴データを各コア14、16から受信し、これらのデータはそれぞれ別々に処理されて、各プロファイル前駆データ、すなわち、コア14に対して一連のプロファイル前駆データ、コア16に対しても一連のプロファイル前駆データが形成されてもよい。
オンチップ追跡回路22は、コア14、16から受信したバッファリングされたデータを処理して、追跡対象を形成する。各追跡対象は、実行済みプログラム命令列の開始アドレスを示す開始アドレスインジケータと、その開始アドレスから始まる実行済みプログラム命令列内における分岐結果列を示す分岐結果インジケータと、オンチップ追跡回路22によって監視され、生成されたプロファイル前駆データによって表されるプログラム命令の実行ウィンドウ内において分岐結果列が検出された回数のカウントを示すカウントインジケータとを用いて、実行済みプログラム命令列を表す。生成されたプロファイル前駆データには、複数の追跡対象が含まれ、それぞれ観測された実行済みプログラム命令列を示している。
プロファイル前駆データの追跡対象は、その実行済みプログラム命令列内で実行された特定のプログラム命令を識別するため、プログラム命令12と組み合わせて考慮されてもよい。追跡対象に次アドレスインジケータが含まれる他の実施例では、プロファイル前駆データを単独で用いて、各分岐ターゲットが対応する受け取った分岐命令の使用カウントを得ることもできる。
このような追跡対象を含むプロファイル前駆データにより、実行挙動をコンパクトに表現することができるが、ウィンドウ全体を通して正確なエンドツーエンド実行フローの判定を行うことはできない。どちらかといえば、実行をより統計に基づく観点から捉えることにより、実行済みプログラム命令列を、それらが検出された回数と共に特定することができる。
コード範囲のテストを行うこと、すなわち、プログラム全体の中でどのプログラム命令が実行されたか又は実行されなかったかチェックすることを目的としたいくつかの実施例では、カウントインジケータは、1で飽和することにより、特定のコードシーケンスが少なくとも一回実行されたか否かを示してもよい。
少なくともいくつかの実施例では、追跡対象には、次アドレスインジケータを含む追跡対象の実行済みプログラム命令列に続いて実行される次のプログラム命令列の開始アドレスを示す次アドレスインジケータが含まれていてもよい。従って、追跡対象には、事実上、次の追跡対象を示すリンク情報が含まれていてもよい。これにより、追跡対象が互いにどのようにリンクし合うのかに関する情報の少なくとも一部を回復することが可能となり、プログラム実行フローをより包括的な視点で捉えることができる。
オンチップ追跡回路22は、コア14、16から受信したバッファリングされたデータを分析する際、この受信データを、受信したプログラム命令アドレスデータ(例えば、データ依存分岐ターゲットデータ、同期点データなど)を用いて、追跡対象と関連付けられるシーケンスに分け、形成される追跡対象間の境界を示すのに用いられてもよく、それにより、現時点で追跡されたプログラム命令列の追跡終了と、次に追跡を行うプログラム命令列の追跡開始をトリガする。
前述したように、図1の例におけるオンチップ追跡回路22によって形成された追跡対象を含むプロファイル前駆データは、実際のプログラム実行フローを理解するために実行されたプログラム命令12と共に分析が行われてもよい。これは、現在コンパクトに表現されているプロファイル前駆データを、オフチップ追跡回路6に転送することによって行われてもよく、そこからデータは汎用コンピュータ8によって読み出すことができる。また、この汎用コンピュータ8は、プロファイル前駆データとともに、集積回路4によって実行されたプログラム命令12の別のコピーにアクセスすることにより、そのプロファイル前駆データに特定された追跡対象に対応するさまざまなプログラム命令列内で特定のプログラム命令の識別を行ってもよい。
追跡対象を含むプロファイル前駆データは、さまざまな形態を取ってもよい。いくつかの形態の例としては、プロファイル前駆データを形成する追跡対象の開始アドレスは、プロファイル前駆データ内の他の追跡対象の開始アドレスからのアドレスオフセットとして表されてもよい。従って、比較的少ない絶対アドレスがプロファイル前駆データ内で特定され、他の追跡対象のアドレスが、これらの絶対的に特定された比較的少ない開始アドレスからのオフセットを用いて導かれる必要がある。これにより、プロファイル前駆データをさらにコンパクトにすることができる。
追跡対象の形態は、いくつかの実施例では、それぞれが一つの実行パスを特定するような形態であってもよい。他の実施例では、追跡対象は、共通開始アドレスから始まり、共有中間分岐ノードを通過して、各リーフノード(leaf node)で個々に終端する各分岐結果列に対応する複数の分岐実行パスを特定してもよい。このような構成により、実行パスをよりコンパクトに表現することで、プロファイル前駆データのデータ量を減らしてもよい。このような実施例では、各リーフノードは、該当する一連のプロファイル前駆データに示すように、そのリーフノードで終端する実行パスが実行された回数のカウントを示す関連カウントインジケータを有していてもよい。このような構成では、追跡対象の所定の中間ノードは、共通開始アドレスからその所定中間ノードを通過するまで延在するプログラム命令列が何回実行されたかのカウントを、その所定中間ノードを含む実行パスのリーフノードと関連付けられたカウント値の合計で表してもよい。これにより、各中間ノードから最終的なリーフノードまで前方へ追跡を行うことにより、各リーフノードカウントの合計を得ることができ、それにより、当該中間ノードについてのカウントが得られる。
リーフノードは、そのリーフノードで終端する分岐実行パスに続いて、処理回路によって実行された次のプログラム命令のアドレスを示す関連する次アドレスインジケータを有していてもよい。そのような関連する次アドレス値は必ずしも入手可能であるとは限らないので、すべてのリーフノードが有していなくてもよい。前述したように、追跡対象には、その追跡対象についての開始アドレスから始まる実行済みプログラム命令列内の分岐結果列を示す分岐結果が含まれる。プロファイル前駆データのデータ量は、分岐結果列のランレングス符号化を行う分岐結果インジケータを用いて減らしてもよい。
図1は、オンチップ追跡回路22によって、追跡対象を含むプロファイル前駆データを形成する実施例を示す。図2は、その追跡対象を含むプロファイル前駆データを形成する役割を果たすのがオフチップ追跡回路6である実施例を示す。図2の実施例では、オンチップ追跡回路22は、処理回路(コア14、16)によって実行された分岐命令についての分岐命令結果を示すデータ(E/Nデータ)をオフチップ追跡回路6に渡す。さらに、オンチップ追跡回路22は、実行された分岐命令の非静的分岐ターゲット(例えば、データ依存分岐ターゲット)のプログラムアドレス、並びに、プログラム命令アドレス又は周期的な同期点として機能するプログラム命令を示すアドレスデータ([addr])をオフチップ追跡回路6に渡す。
図2の本実施例では、オフチップ追跡回路6は、オンチップ追跡回路22から送られてきたデータから追跡対象を形成する。オフチップ追跡回路によって形成されたプロファイル前駆データは、次に、汎用コンピュータ8に送られて、プログラム命令12と共に分析され、デバッグ及び診断情報(並びにプログラム命令12や集積回路4の動作に関する他の情報)が得られる。
ターゲット対象を形成する追跡回路は、オンチップ追跡回路22やオフチップ追跡回路6内に設けられた専用ハードウェアであってもよい。または、自身のプログラムコードを実行することにより追跡対象を形成するよう機能する専用小型プロセッサコアなど、より汎用のハードウェア(例えば、追跡対象を生成するよう機能するファームウェア)であってもよい。また、他の実施例では、追跡回路は、汎用コンピュータ8の処理回路によって設けられてもよく、この汎用コンピュータ8は、プログラム制御の下実行して、プロファイル前駆データを形成し、そのような汎用コンピュータ8によって形成されたプロファイル前駆データは、他の場所への送信のためよりコンパクトに表現されているという利点を生かして、分析のために他の場所へ送られる。
図3は、分岐命令Bと、分岐命令ではないのでプログラムフローが変わる点を形成できない命令Iとを含むプログラム命令列を概略的に示す。図示の例では、命令24に対応するaddr0で、プログラム命令列が入力される。その後、プログラムフローは、プログラム命令24から条件付き分岐命令26へと3回通過する。開始アドレスaddr0の後にプログラム命令列を実行する場合、さらに2つの条件付き分岐命令28、30は通過して実行されず、その後、実行済み(取られた)分岐命令26に達する。分岐命令26、28、30が実行されたか否かは、図3では、EかNで示される。
3回目に分岐命令26と遭遇する時は、実行されないので、この命令24の開始アドレスaddr0までジャンプして戻ることはない。従って、分岐命令26についての分岐結果列は、実行済み、実行済み、未実行(E、E、N)となる。図示のループ内の各分岐命令28、30は、3回すべてにおいて未実行なので、分岐結果は、未実行、未実行、未実行(N、N、N)となる。
3回目の分岐命令26の未実行の後、プログラムフローは、実行済み(取られた)分岐命令であり、新しい開始アドレスaddr1への分岐をトリガする分岐命令32へと進む。
また、図3では、図3に示す一連の実行パスに対応する追跡対象34も概略的に示す。具体的には、追跡対象34は、命令24の命令アドレスに対応する列の開始アドレスを示す開始アドレスインジケータ[addr0]を含んでいる。列の最初の2つのトラバース(パス0(path0)、パス1(path1))の分岐命令28、30、26に対応する分岐結果列を示す分岐結果インジケータは、N、N、Eで示され、未実行、未実行、実行済みを示している。カウントインジケータ#2は、この分岐結果列、すなわち、N、N、Eが2回発生したものとして検出されたことを示すものである。追跡対象34は、開始アドレスaddr0で開始するさらにもう一つの実行パス、すなわち、命令24から分岐命令32まで延びる実行パスを示す。このパスの分岐結果インジケータは、このパスに沿って続くように、分岐命令28、30、26、32の結果に対応して、未実行、未実行、未実行、実行済みである。このパスは、カウントインジケータ#1で示されるように、1回追跡される。この実行パスは、パス2(path2)に対応する。
追跡対象34には示されていないが、いくつかの実施例では、追跡対象は、当該追跡対象に示されるプログラム命令列に続いて実行される次のプログラム命令列の開始アドレスを示す働きをしてもよい。例えば、追跡対象34は、分岐命令32の実行後に実行されるプログラム命令列の開始アドレスaddr2に対するポインタをさらに含んでいてもよい。
以下の疑似コードは、例の追跡対象を生成するために、データを特定する分岐結果とアドレスデータを受け取った際に行われ得る処理をプログラミングで表現したものである。このような疑似コードは、例えば、図1のオンチップ追跡回路22や図2のオフチップ追跡回路によってファームウェアとして実行されたコードに対応してもよい。また、この疑似コード内のコメントは、図4に示すような各追跡対象内で複数の実行パスをリーフや分岐で表現した追跡対象の可能な形態を示している。

#事前デコードプロファイルを構築するための疑似コード
#入力はイベント列(a sequence of events)
#ADDR(アドレス)-特定アドレスへの分岐
#分岐(BRANCH)(E)-次の分岐が取られた
#分岐(BRANCH)(N)-次の分岐が取られなかった

Sequence = {
start_addr: address
branches: LIST OF (E or N)
next_addr: address
}

#追跡対象なしで開始
MAP (Sequence -> integer) objects = []

#現在形成中の列
Sequence current_seq = None

#各イベントを処理
for Event evt in trace:
if evt is ADDR(addr):
if current_seq:
# この分岐は作業中の列を終端する
current_seq.next_addr = addr
if current_seq in objects:
# この列についてすでに対象が存在する
objects[current_seq] += 1
else:
# 新しい列、カウントが1の対象に追加
objects[current_seq] = 1
# 新しい列を開始
current_seq = {start_addr: addr, [], None}
else if evt is E or N:
current_seq.branches.append(evt)

#最後の列を処理することでまとめる
if current_seq in objects:
objects[current_seq] += 1
else:
objects[current_seq] = 1


#ここで‘対象’マップは一連の列から構成され、各列は、
#-開始アドレス
#-一連のE/Nインジケータ
#-最終アドレス
#-カウント
#なお、所定の開始アドレスは、一般に、いくつかの列に位置する

#後にこのデータ構造をプログラムプロファイルに変換するため
#プログラム画像が利用可能となり次第

for Sequence s in objects:
pc = s.start_addr
for b in s.branches:
inspect image to find address pc' of next branch
add s.count to each instruction from pc to pc'
if b == E:
pc = target of b
add s.count to count of banches from b to target of b
else:
pc = pc'
add s.count to each instruction from pc to s.end_addr


#データは共通のプレフィックスを統合することでよりコンパクトに表現可能である。
#一つの開始アドレスにつき一つのエントリを有する新しい配列と列を作成
#分岐データ構造として表現されたそのアドレスから開始
#このよりコンパクトな構造は直接形成可能である。

#このコンパクトなデータ構造からプログラムプロファイルを作成するには、
#元のフラットなデータ構造に展開してもよいし、直接処理してもよい。
図4は、各追跡対象内で複数の実行パスをリーフや分岐で表現した複数の追跡対象を示す。最初の追跡対象は、絶対アドレス[addr]を特定する。それ以降の追跡対象は、最初の追跡対象の開始アドレスからのオフセット値、すなわち、[Δaddr]に基づいてそれぞれの開始アドレスを特定する。個々の追跡対象は、開始アドレスから延び、中間ノード(intermediate node)又はリーフノード(leaf node)に対応する分岐命令を通過する実行パスを表している。リーフノードは、観測/検出された分岐結果列を終端し、図4の表現では「o」で示される。中間ノードは、観測された実行パスを終端せず、図4では「#」で示される分岐結果を表している。リーフノードは、それに関連付けられたカウントインジケータと、必要に応じて、そのリーフノードに対応する分岐命令の後に実行されるプログラム命令列の次のアドレスを示す次アドレスインジケータを有している。中間ノードに対応する分岐命令が実行された回数は、示された分岐パス内でその中間ノードに続く各リーフノードに関連付けられたカウント値を合計することで判定してもよい。
本願において、「するよう構成された」という表現は、装置の構成要素が規定の動作を実行可能な構成を有することを意味するものとして用いられる。これに関し、「構成」とは、ハードウェアやソフトウェアの配置やそれらを相互に接続する方法を指す。例えば、上記装置は、そのような規定の動作を行うための専用ハードウェアを備えていたり、その機能を果たすようプロセッサやその他の処理装置をプログラミングしてもよい。「するよう構成された」という表現は、装置の構成要素に対して、その規定の動作を行うために何らかの変更を加える必要があるということを意味するものではない。
添付の図面を参照して本発明の例示的な実施例を詳細に説明してきたが、本発明はこのような明確な実施例に限定されるものではなく、添付の特許請求の範囲に記載の本発明の範囲や精神から逸脱することなく、当業者によってさまざまな変更及び改良を行えることを理解されたい。
2・・・データ処理システム
4・・・集積回路
6・・・オフチップ追跡回路
8・・・汎用コンピュータ
10・・・メモリ
12・・・プログラム命令
14、16・・・プロセッサコア
18、20・・・キャッシュメモリ
22・・・オンチップ追跡回路
28、30、26、32・・・分岐命令
34・・・追跡対象

Claims (21)

  1. プログラムのプログラム命令を実行する処理回路と、
    複数の追跡対象を生成する追跡回路と、
    を具備し、
    追跡対象は、実行済みプログラム命令列を示し、前記プログラム命令列が分岐結果列の複数のパスを含み、各パスが複数の条件付き分岐を有する場合、単一の追跡対象は、前記複数のパスを
    前記実行済みプログラム命令列の開始アドレスを示す開始アドレスインジケータ、
    前記開始アドレスから始まる前記実行済みプログラム命令列内の前記分岐結果列を示す分岐結果インジケータ、及び
    前記分岐結果列が検出された回数のカウントを示すカウントインジケータ、
    として表現する、
    ことを特徴とするデータ処理を行う装置。
  2. 前記追跡対象には、前記実行済みプログラム命令列の後に実行される次のプログラム命令列の開始アドレスを示す次アドレスインジケータが含まれる、ことを特徴とする請求項1に記載の装置。
  3. 前記カウントインジケータは1で飽和状態となり、前記追跡対象は、プログラム命令が実行されたか否かを示す範囲データを提供する、ことを特徴とする請求項1に記載の装置。
  4. 前記処理回路は、各プログラム命令列を実行する複数のプロセッサを備え、前記追跡回路は、前記プログラム命令列を別々に表現する前記追跡対象を生成するよう構成されている、ことを特徴とする請求項1に記載の装置。
  5. 前記処理回路は、前記処理回路によって実行された分岐命令の分岐命令結果を示すデータと、前記処理回路によって実行された分岐命令の非静的分岐ターゲットのプログラム命令アドレスを前記追跡回路に提供するよう構成されている、ことを特徴とする請求項1に記載の装置。
  6. 前記処理回路は、前記処理回路によって実行されたプログラム命令のプログラム命令アドレスを前記複数の追跡対象間の境界を示す同期点として示すデータを前記追跡回路に提供するよう構成されている、ことを特徴とする請求項5に記載の装置。
  7. 前記追跡回路は、前記処理回路から受信したプログラム命令アドレスデータに応じて、現在追跡中のプログラム命令列の追跡を終了し、次に追跡するプログラム命令列の追跡を開始するよう構成されている、ことを特徴とする請求項5に記載の装置。
  8. 前記追跡回路は、前記追跡対象をまとめてプロファイル前駆データを形成し、前記プロファイル前駆データは、前記プログラムと共に、所定のプログラム命令列が前記処理回路によって何回実行されたかを示す、ことを特徴とする請求項1に記載の装置。
  9. 前記追跡回路は、前記追跡対象をまとめてプロファイル前駆データを形成し、前記プロファイル前駆データは、各分岐ターゲットアドレスを有する分岐命令アドレスのペア数を示す、ことを特徴とする請求項2に記載の装置。
  10. 前記プロファイル前駆データには、各開始アドレスによって順序付けられた前記追跡対象を示すデータが含まれる、ことを特徴とする請求項9に記載の装置。
  11. 前記プロファイル前駆データを形成する追跡対象の前記開始アドレスの少なくとも一部は、前記プロファイル前駆データを形成する他の追跡対象の開始アドレスからのアドレスオフセットとして示される、ことを特徴とする請求項10に記載の装置。
  12. 前記追跡対象は、共有中間分岐ノードを通過し、リーフノードで個別に終端する共通開始アドレスから始まる各分岐結果列に対応する複数の分岐実行パスを特定する、ことを特徴とする請求項1に記載の装置。
  13. 前記リーフノードの各々は、当該リーフノードで終端する分岐実行パスが前記処理回路によって実行された回数のカウントを示す関連カウントインジケータを有する、ことを特徴とする請求項12に記載の装置。
  14. 所定の中間ノードを含む追跡対象では、前記共通開始アドレスから前記所定の中間ノードまで延びるプログラム命令列が実行された回数のカウントが、前記所定の中間ノードを含む実行パスのリーフノードと関連付けられたカウント値の合計で示される、ことを特徴とする請求項13に記載の装置。
  15. リーフノードの少なくとも一部は、前記リーフノードで終端する分岐実行パスの後に前記処理回路によって実行される次のプログラム命令のアドレスを示す関連次アドレスインジケータを有する、ことを特徴とする請求項12に記載の装置。
  16. 前記プロファイル前駆データは、前記分岐結果列のランレングス符号化を行う、ことを特徴とする請求項8に記載の装置。
  17. 前記処理回路は、集積回路のプロセッサコアであり、前記追跡回路は、
    前記集積回路内のオンチップ追跡回路、及び
    通信インタフェースを介して前記集積回路に接続されたオフチップ追跡回路、
    のいずれかである、ことを特徴とする請求項1に記載の装置。
  18. 複数の追跡対象を生成するプログラムのプログラム命令を実行する処理回路と接続するための追跡回路であって、
    追跡対象は、実行済みプログラム命令列を示し、前記プログラム命令列が分岐結果列の複数のパスを含み、各パスが複数の条件付き分岐を有する場合、単一の追跡対象は、前記複数のパスを
    前記実行済みプログラム命令列の開始アドレスを示す開始アドレスインジケータ、
    前記開始アドレスから始まる前記実行済みプログラム命令列内の前記分岐結果列を示す分岐結果インジケータ、及び
    前記分岐結果列が検出された回数のカウントを示すカウントインジケータ、
    として表現する、ことを特徴とする追跡回路。
  19. プログラムのプログラム命令を実行する工程と、
    複数の追跡対象を生成する工程と、
    を具備し、
    追跡対象は、実行済みプログラム命令列を示し、前記プログラム命令列が分岐結果列の複数のパスを含み、各パスが複数の条件付き分岐を有する場合、単一の追跡対象は、前記複数のパスを
    前記実行済みプログラム命令列の開始アドレスを示す開始アドレスインジケータ、
    前記開始アドレスから始まる前記実行済みプログラム命令列内の前記分岐結果列を示す分岐結果インジケータ、及び
    前記分岐結果列が検出された回数のカウントを示すカウントインジケータ、
    として表現する、ことを特徴とするデータ処理方法。
  20. プログラムの実行を分析する方法であって、
    前記プログラムのプログラム命令を特定するデータを受信する工程と、
    実行済みプログラム命令列を示す追跡対象を特定するデータを受信する工程であって、前記プログラム命令列が分岐結果列の複数のパスを含み、各パスが複数の条件付き分岐を有する場合、単一の追跡対象は、前記複数のパスを、
    前記実行済みプログラム命令列の開始アドレスを示す開始アドレスインジケータ、
    前記開始アドレスから始まる前記実行済みプログラム命令列内の前記分岐結果列を示す分岐結果インジケータ、及び
    前記分岐結果列が検出された回数のカウントを示すカウントインジケータ、
    として表現する、データを受信する工程と、
    前記プログラム命令を特定するデータと、所定のプログラム命令が少なくとも何回実行されたか判定する前記追跡対象を特定するデータとを分析する工程と、
    を具備する、ことを特徴とする方法。
  21. 前記分析する工程では、前記所定のプログラム命令がどの実行パスに含まれているかを判断する、ことを特徴とする請求項20に記載の方法。
JP2018049681A 2017-03-24 2018-03-16 追跡データ表現 Active JP7116562B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1704675.6 2017-03-24
GB1704675.6A GB2560749B (en) 2017-03-24 2017-03-24 Trace data representation

Publications (2)

Publication Number Publication Date
JP2018163656A JP2018163656A (ja) 2018-10-18
JP7116562B2 true JP7116562B2 (ja) 2022-08-10

Family

ID=58687827

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018049681A Active JP7116562B2 (ja) 2017-03-24 2018-03-16 追跡データ表現

Country Status (5)

Country Link
US (1) US10956303B2 (ja)
EP (1) EP3379418A1 (ja)
JP (1) JP7116562B2 (ja)
CN (1) CN108628637B (ja)
GB (1) GB2560749B (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802940B1 (en) * 2017-05-22 2020-10-13 Palantir Technologies Inc. Approaches for analyzing data streams
EP3792770B1 (en) * 2019-09-13 2023-11-08 Accemic Technologies GmbH Trace-data processing device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008250867A (ja) 2007-03-30 2008-10-16 Fukuoka Pref Gov Sangyo Kagaku Gijutsu Shinko Zaidan 実行パス検出装置、情報処理装置、実行パス検出方法、プログラム及び記録媒体
WO2012070137A1 (ja) 2010-11-25 2012-05-31 トヨタ自動車株式会社 プロセッサ、電子制御装置、作成プログラム
JP2013171350A (ja) 2012-02-17 2013-09-02 Fuji Electric Co Ltd 図式プログラムのテスト網羅性測定装置およびその方法、並びにプログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62130436A (ja) * 1985-12-03 1987-06-12 Nec Corp トレ−ス制御装置
JPS62288946A (ja) * 1986-06-09 1987-12-15 Fujitsu Ltd ジヤンプ履歴記録方式
US5809293A (en) * 1994-07-29 1998-09-15 International Business Machines Corporation System and method for program execution tracing within an integrated processor
JPH10260872A (ja) * 1997-01-20 1998-09-29 Fujitsu Ltd 計算機システムおよび記録媒体
JP2878264B1 (ja) * 1998-03-11 1999-04-05 甲府日本電気株式会社 トレーサ装置、トレースデータ圧縮方法および圧縮トレースデータ読み出し方法
US6351844B1 (en) * 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
US6233678B1 (en) * 1998-11-05 2001-05-15 Hewlett-Packard Company Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data
US7802236B2 (en) * 2002-09-09 2010-09-21 The Regents Of The University Of California Method and apparatus for identifying similar regions of a program's execution
US7694281B2 (en) * 2005-09-30 2010-04-06 Intel Corporation Two-pass MRET trace selection for dynamic optimization
US9195462B2 (en) * 2007-04-11 2015-11-24 Freescale Semiconductor, Inc. Techniques for tracing processes in a multi-threaded processor
US20090287729A1 (en) * 2008-05-16 2009-11-19 Microsoft Corporation Source code coverage testing
US8959496B2 (en) * 2010-04-21 2015-02-17 Microsoft Corporation Automatic parallelization in a tracing just-in-time compiler system
GB2487355B (en) * 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus
US20130047169A1 (en) * 2011-08-16 2013-02-21 Computer Associates Think, Inc. Efficient Data Structure To Gather And Distribute Transaction Events
EP2873983B1 (en) * 2013-11-14 2016-11-02 Accemic GmbH & Co. KG Trace-data processing and profiling device
EP3144814B1 (en) * 2015-09-16 2021-08-25 ARM Limited Method and apparatus for generating a profile of a target program
US20170277538A1 (en) * 2016-03-24 2017-09-28 Centipede Semi Ltd. Speculative multi-threading trace prediction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008250867A (ja) 2007-03-30 2008-10-16 Fukuoka Pref Gov Sangyo Kagaku Gijutsu Shinko Zaidan 実行パス検出装置、情報処理装置、実行パス検出方法、プログラム及び記録媒体
WO2012070137A1 (ja) 2010-11-25 2012-05-31 トヨタ自動車株式会社 プロセッサ、電子制御装置、作成プログラム
JP2013171350A (ja) 2012-02-17 2013-09-02 Fuji Electric Co Ltd 図式プログラムのテスト網羅性測定装置およびその方法、並びにプログラム

Also Published As

Publication number Publication date
CN108628637A (zh) 2018-10-09
GB2560749B (en) 2020-10-14
GB201704675D0 (en) 2017-05-10
US10956303B2 (en) 2021-03-23
EP3379418A1 (en) 2018-09-26
CN108628637B (zh) 2024-05-03
JP2018163656A (ja) 2018-10-18
US20180276106A1 (en) 2018-09-27
GB2560749A (en) 2018-09-26

Similar Documents

Publication Publication Date Title
US10621068B2 (en) Software code debugger for quick detection of error root causes
US8359584B2 (en) Debugging from a call graph
US9047399B2 (en) Generating visualization from running executable code
US7870437B2 (en) Trace data timestamping
US7213175B2 (en) Methods and systems for managing an application's relationship to its run-time environment
JP5325436B2 (ja) データ処理装置用トレース・ストリームの生成技術
EP2485149A1 (en) Symbolic execution and test generation for programs to be run on a graphic processor
JP4937022B2 (ja) 順序関係解析装置、方法及びプログラム
US9218199B2 (en) Identifying thread progress information by monitoring transitions between interesting states
US9128749B1 (en) Method and system for lock free statistics collection
US7685467B2 (en) Data system simulated event and matrix debug of pipelined processor
JP7116562B2 (ja) 追跡データ表現
US20050251791A1 (en) Systems and methods for branch profiling loops of an executable program
US20220179779A1 (en) Data unit test-based data management system
US8607204B2 (en) Method of analyzing single thread access of variable in multi-threaded program
EP2972880B1 (en) Kernel functionality checker
US20050251790A1 (en) Systems and methods for instrumenting loops of an executable program
US20150154103A1 (en) Method and apparatus for measuring software performance
US20120166887A1 (en) Monitoring multiple data transfers
US20110258613A1 (en) Software debugger activation based on key performance indicators
CN107451038B (zh) 硬件事件采集方法、处理器和计算系统
US9111034B2 (en) Testing of run-time instrumentation
WO2018042935A1 (ja) 電子制御装置、解析システム
US7684970B2 (en) Graphical user interface for use during processor simulation
JP5937530B2 (ja) ソフトエラー解析装置、エラー情報作成装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220425

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: 20220705

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220729

R150 Certificate of patent or registration of utility model

Ref document number: 7116562

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150