[go: up one dir, main page]

JP2008158662A - メモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体 - Google Patents

メモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体 Download PDF

Info

Publication number
JP2008158662A
JP2008158662A JP2006344541A JP2006344541A JP2008158662A JP 2008158662 A JP2008158662 A JP 2008158662A JP 2006344541 A JP2006344541 A JP 2006344541A JP 2006344541 A JP2006344541 A JP 2006344541A JP 2008158662 A JP2008158662 A JP 2008158662A
Authority
JP
Japan
Prior art keywords
offset value
pattern
trace information
memory access
address
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.)
Withdrawn
Application number
JP2006344541A
Other languages
English (en)
Inventor
Koichi Kato
浩一 加藤
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2006344541A priority Critical patent/JP2008158662A/ja
Publication of JP2008158662A publication Critical patent/JP2008158662A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】デバッグ作業に必要なトレース情報を効率良く取得する。
【解決手段】デバッグ対象プログラムの実行によって、CPU101がアクセスしたアクセスアドレスを取得するメモリアクセスアドレス取得部103と、取得したアドレスを格納するアドレス格納部104と、格納した最新のアドレスと一つ前のアドレスからオフセット値を計算するオフセット値計算部105と、オフセット値を格納するオフセット値格納部106と、最新のオフセット値と一つ前のオフセット値を比較して両者が一致するか否かを判定するオフセット値比較部107と、2つのオフセット値が一致した場合にその回数をカウントするカウンタ106aと、2つのオフセット値が一致しない場合に、オフセットの基準となるベースアドレスとオフセット値、及びオフセット値の一致した回数を出力するメモリアクセスアドレス情報出力部108から構成される。
【選択図】図1

Description

本発明は、CPUとメモリを有するプロセッサ上で動作するプログラムにより、前記CPUが前記メモリに対してアクセスしたアクセス状況を示すデータをトレース情報として取得するメモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体に関する。
コンピュータシステムにおけるプログラムの動作確認や、プログラム開発におけるデバッグ作業に役立たせるために、コンピュータがどのように命令やメモリアクセスを実行したかを示すデータをトレース情報として取得することが一般に行われている。しかし、トレース情報の全てを取得するには、データ量が膨大となるため効率良く取得する必要がある。
従来、トレース情報を効率良く取得する方法として、プログラムの分岐命令のみを取得し、プログラムの実行後に命令を復帰させる分岐トレース方法が知られている。また、命令のトレース情報を一時的に蓄えておき、トレース情報のパターンを検出して、一致した箇所を他の情報に置き換えることでデータ量を削減するようにした技術が開示されている(例えば、特許文献1、2参照)。更に、分岐命令の繰り返し回数をカウントし、分岐命令と繰り返し回数を出力することでデータ量を削減する技術が開示されている(例えば、特許文献3参照)。
特許第3498702号公報 特許第2702462号公報 特開平05−012061号公報
このような従来の技術によれば、命令のトレース情報は効率良く取得できるものの、データのトレース情報を効率良く取得することが困難であるため、デバッグ作業を行うことが困難である。
また、取得したデータのパターンを比較する際に、メモリ容量が十分であれば問題ないが、メモリ容量に制限がある場合は、パターンを効率良く蓄えなければパターンを検出することが困難である。
本発明は、上記事情に鑑みてなされたものであって、メモリに対するアクセス状況を示すデータをデバッグ作業に必要なトレース情報として効率良く取得できるともに、記憶容量に限りのあるメモリを有効に利用してトレース情報のパターンを効率良く検出することを可能にするメモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体を提供することを目的とする。
上記目的を達成するために、本発明の第1のメモリアクセストレース情報取得方法は、CPUとメモリを有するプロセッサ上で動作するプログラムにより、前記CPUが前記メモリに対してアクセスしたアクセス状況を示すデータを、トレース情報として取得するメモリアクセストレース情報取得方法であって、前記メモリに対するアクセスアドレスを格納するステップと、前記アクセスアドレスと前記アクセスアドレスの一つ前のアクセスアドレスとのオフセット値を1つ以上計算するステップと、前記オフセット値を1つ以上計算した結果を示すオフセット値群が1つ前の前記オフセット値群と比較して、一致するか否かを判定する判定ステップと、前記オフセット値群が一つ前の前記オフセット値群と一致すると判定した場合に、一致した回数をカウントするカウントステップと、前記オフセット値群が一つ前の前記オフセット値群と一致しないと判定した場合、前記一致した回数を出力する出力ステップとを有する方法としている。
この方法により、メモリに対するアクセス状況を示すデータをデバッグ作業に必要なトレース情報として効率良く取得できるともに、記憶容量に限りのあるメモリを有効に利用してトレース情報のパターンを効率良く検出する
また、本発明の第2のメモリアクセストレース情報取得方法は、前記判定ステップにおいて、前記オフセット値を一つ前の前記オフセット値と比較して、一致するか否かを判定し、前記カウントステップにおいて、前記オフセット値が一つ前の前記オフセット値と一致すると判定した場合に、一致した回数をカウントし、前記出力ステップにおいて、前記オフセット値が一つ前の前記オフセット値と一致しないと判定した場合に、前記アクセスアドレス、前記オフセット値、及び前記一致した回数を出力する方法としている。
この方法により、オフセット値の一致する回数をカウントすることで出力するトレース情報の量を減少させることができ、従来に比べてより多くのメモリアクセス状況を取得することが可能となる。
また、本発明の第3のメモリアクセストレース情報取得方法は、前記CPUの前記プログラムを実行するイベントを検出するステップと、前記イベントが検出されなかった場合に、前記オフセット値を第1のバッファに格納するステップとを有し、前記判定ステップにおいて、前記イベントが検出された場合に、前記第1のバッファの内容を第2のバッファに格納された前記オフセット値群を示すパターンと比較して、一致するか否かを判定し、前記カウントステップにおいて、前記第1のバッファの内容が前記パターンと一致すると判定した場合に、一致した回数をカウントするステップを有し、前記出力ステップにおいて、前記第1のバッファの内容が前記パターンと一致しないと判定した場合に、前記パターン及び前記一致した回数を出力し、前記第1のバッファの内容を前記第2のバッファの内容に反映する方法としている。
この方法により、オフセット値が一定でない範囲を省略することができるので、出力する情報量を減少させることが可能となり、従来に比べてより多くのメモリアクセス状況を取得することができる。
更に、本発明の第4のメモリアクセストレース情報取得方法は、前記イベントを検出する毎に、オフセット値の基準となるベースアドレスを格納するステップと、前記判定ステップにおいて前記第1のバッファの内容が前記パターンと一致すると判定した場合に、前記ベースアドレスを前記第2のバッファに格納するステップとを有し、前記出力ステップにおいて、前記第1のバッファの内容が前記パターンと一致しないと判定した場合には、前記パターン、前記一致した回数、及び1つ以上の前記ベースアドレスを示す前記ベースアドレス群を出力する方法としている。
この方法により、イベントを取得した際のアドレスのオフセット値が一定でないものに対しても、デバッグ作業に必要なデータトレース情報を効率良く取得することができる。
また、本発明の第5のメモリアクセストレース情報取得方法は、前記判定ステップにおいて前記第1のバッファの内容が前記パターンと一致しないと判定した場合に、前記パターンに対応するラベルを出力するステップと、前記パターンを前記出力ステップにおいて既に出力したことのあるパターンと比較して、一致するか否かを判定するステップと、前記パターンが前記出力ステップにおいて既に出力したことのあるパターンと一致しないと判定した場合に、前記パターンに新規のラベルを付与するステップと、前記パターンが前記出力ステップにおいて既に出力したことのあるパターンと一致すると判定した場合に、前記既に出力したことのあるパターンと同じラベルを付与するステップとを有する方法としている。
この方法により、同じパターンは一度しか検出されないようにすることができるので、出力する情報量をさらに減少させることが可能となり、デバッグ作業に必要なデータトレース情報を効率良く取得することができる。
また、本発明の第6のメモリアクセストレース情報取得方法は、前記第1のバッファの内容を前記一致した回数が最大となるパターンと比較して、一致するか否かを判定するステップと、前記第1のバッファの内容が前記一致した回数が最大となるパターンと一致しないと判定した場合に、前記パターンに対応するラベルを出力するステップと、前記第1のバッファの内容が前記一致した回数が最大となるパターンと一致すると判定した場合に、前記一致したパターンの優先度を上げるステップとを有し、前記出力ステップにおいて、前記判定ステップにおいて前記第1のバッファの内容が前記パターンと一致しないと判定した場合に、前記パターンに対応するラベル及び前記一致した回数を出力し、前記第1のバッファの内容を最も優先度の低い前記第2のバッファの内容に反映する方法としている。
この方法により、使用頻度が高いパターンを残しておくことができるので、パターンを格納するためのメモリ量が少ない場合でも、メモリアクセス状況を効率良く取得することが可能となる。
また、本発明の第1のメモリアクセストレース情報取得装置は、CPUとメモリを有するプロセッサ上で動作するプログラムにより、前記CPUが前記メモリに対してアクセスしたアクセス状況を示すデータを、トレース情報として取得するメモリアクセストレース情報取得装置であって、前記CPUの前記メモリに対するアクセスアドレスを取得するアクセスアドレス取得部と、取得した前記アクセスアドレスを格納するアクセスアドレス格納部と、前記アクセスアドレス格納部に格納したアクセスアドレスと一つ前の前記アクセスアドレスとのオフセット値を1つ以上計算するオフセット値計算部と、前記オフセット値を1つ以上計算した結果を示すオフセット値群を格納するオフセット値格納部と、前記オフセット値格納部に格納したオフセット値群と一つ前の前記オフセット値群と比較して、一致するか否かを判定するオフセット値比較部と、前記オフセット値群が一つ前の前記オフセット値群と一致すると判定した場合に、一致した回数をカウントするカウンタと、前記オフセット値群が一つ前の前記オフセット値群と一致しないと判定した場合に、前記カウンタの値を出力するトレース情報出力部と、を有する構成としている。
この構成により、メモリに対するアクセス状況を示すデータをデバッグ作業に必要なトレース情報として効率良く取得できるともに、記憶容量に限りのあるメモリを有効に利用してトレース情報のパターンを効率良く検出することができる。
また、本発明の第2のメモリアクセストレース情報取得装置は、前記オフセット値比較部は、前記オフセット値格納部に格納したオフセット値と一つ前の前記オフセット値と比較して、一致するか否かを判定し、前記カウンタは、前記オフセット値が一つ前の前記オフセット値と一致すると判定した場合に、一致した回数をカウントし、前記トレース情報出力部は、前記オフセット値が一つ前の前記オフセット値と一致しないと判定した場合に、前記アクセスアドレス、前記オフセット値、及び前記カウンタの値を出力する構成としている。
この構成により、オフセット値の一致する回数をカウントすることで出力するトレース情報の量を減少させることができ、従来に比べてより多くのメモリアクセス状況を取得することが可能となる。
また、本発明の第3のメモリアクセストレース情報取得装置は、前記CPUの前記プログラムを実行するイベントを検出するイベント検出部を有し、前記オフセット値格納部は、検出した前記イベント間における前記オフセット値を格納するオフセット値バッファおよび前記オフセット値群を示すパターンを格納するパターンバッファを有し、前記オフセット値比較部は、前記オフセット値バッファに格納した前記オフセット値と前記パターンバッファ格納したパターンを比較して、一致するか否かを判定し、前記カウンタは、前記オフセット値バッファの内容が前記パターンと一致すると判定した場合に、一致した回数をカウントし、前記トレース情報出力部は、前記オフセット値バッファの内容が前記パターンと一致しないと判定した場合に、前記パターン及び前記前記カウンタの値を出力する構成としている。
この構成により、オフセット値が一定でない範囲を省略することができるので、出力する情報量を減少させることが可能となり、従来に比べてより多くのメモリアクセス状況を取得することができる。
また、本発明の第1のプログラムは、上記のメモリアクセストレース情報取得方法の各ステップをコンピュータに実行させるためのプログラム。
これにより、本発明をコンピュータの処理によって実現することができ、メモリに対するアクセス状況を示すデータをデバッグ作業に必要なトレース情報として効率良く取得できるともに、記憶容量に限りのあるメモリを有効に利用してトレース情報のパターンを効率良く検出することが可能となる。
また、本発明の第1の記録媒体は、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体である。
これにより、メモリに対するアクセス状況を示すデータをデバッグ作業に必要なトレース情報として効率良く取得できるともに、記憶容量に限りのあるメモリを有効に利用してトレース情報のパターンを効率良く検出することが可能となる。
本発明によれば、メモリに対するアクセス状況を示すデータをデバッグ作業に必要なトレース情報として効率良く取得できるともに、記憶容量に限りのあるメモリを有効に利用してトレース情報のパターンを効率良く検出することを可能にするメモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体を提供できる。
以下、本発明に係るメモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体の複数の実施形態について説明する。尚、記録媒体にはメモリアクセストレース情報取得プログラムが記録されている。
(第1の実施形態)
まず、本発明に係る第1の実施形態のプロセッサを例示する。図1は、本実施形態に係るプロセッサの概略構成を示すブロック図である。
図1において、プロセッサ100は、各部の制御を行う中央処理装置(CPU)101と、プログラム及びデータを格納するメモリ102と、プログラムの実行によってCPU101がアクセスしたアクセスアドレスを取得するメモリアクセスアドレス取得部103と、取得したアドレスを格納するアドレス格納部104と、アドレス格納部104に格納されている最新のアドレスと一つ前のアドレスからオフセット値を計算するオフセット値計算部105と、計算したオフセット値を格納するオフセット値格納部106と、オフセット格納部106に格納されている最新のオフセット値と一つ前のオフセット値を比較して両者が一致するか否かを判定するオフセット値比較部107と、判定の結果で最新のオフセット値と一つ前のオフセット値が一致した場合に、一致した回数をカウントするカウンタ106aと、最新のオフセット値と一つ前の一致しない場合に、アドレス格納部104に格納されているオフセットの基準となるベースアドレスとオフセット値格納部106に格納されているオフセット値、及びカウンタ106aのカウント値を出力するメモリアクセスアドレス情報出力部108を有する構成である。
プロセッサ100は、CPU101がメモリ102に格納されたメモリアクセストレース情報取得プログラムを実行することによりメモリアクセストレース情報取得装置として機能し、トレース情報の生成対象である対象プログラムを実行する際のメモリアクセストレース情報を取得して出力する。
対象プログラムは、C言語を用いて記述されることがある。C言語で記述されたプログラムは、C言語コンパイラによってプロセッサ100が理解することが可能な機械語とほぼ1対1に対応するアセンブリ言語に変換される。さらに、このアセンブリ言語は、アセンブラとリンカによってプロセッサ100上で実行可能な機械語に変換される。
図2は、C言語ソースコード10の一部がC言語コンパイラによってどのようにアセンブリ言語コード11に変換されるかの例を示したものである。
図2(a)に示すC言語ソースコード10の破線で囲まれた実行文は、図2(b)に示すアセンブリ言語コード11の破線で囲まれた部分に対応する。ここで、アセンブリ言語コード11の破線内の“PC”は、命令アドレスを示すプログラムカウンタ値を示し、“MNEMONIC”は、“PC”に対応するニーモニックを示している。
図3は、図2の対象プログラムを実行した際のメモリアクセストレース情報の例を示すものである。図3(a)に示す従来のメモリアクセストレース情報20は、基本となるアドレス、オフセット値、オフセット値の繰り返し回数を計算することで、情報を圧縮した図3(b)に示すようなメモリアクセストレース情報21に変換することができる。ここで、“ADRS”はメモリアクセスが発生したアドレス、“#”はメモリアクセスアドレスの前回とのオフセット値、“REPEAT”はオフセット値の繰り返し回数を表している。
次に、以上のように構成された本実施形態のプロセッサについて、メモリアクセストレース情報の取得処理方法を説明する。図4は、本実施形態におけるメモリアクセストレース情報の取得処理手順を説明するためのフローチャートである。
ステップS100の初期化手順において、CPU101がカウンタ106aに初期値“1”を、終了フラグに“OFF”をそれぞれセットするとともに、アドレス格納部104がベースアドレス及び比較アドレス1、2、オフセット格納部106が比較オフセット値1、2をそれぞれクリアする。
まず、メモリアクセスアドレス取得部103がメモリアクセスアドレスを取得できたか否かを判定し(ステップS101)、メモリアクセスアドレスを取得できたと判定した場合は、アドレス格納部104がベースアドレスが空であるか否かを判定する(ステップS102)。
ステップS102における判定の結果、ベースアドレスが空であると判定した場合は、アドレス格納部104が取得したアドレスをベースアドレス及び比較アドレス1にそれぞれセットして(ステップS103、ステップS104)、ステップS101の手順に戻り、次のメモリアクセスアドレスを取得したか否かを判定する。
一方、ステップS101の手順でメモリアクセスアドレスを取得できなかったと判定した場合は、CPU101が終了フラグを“ON”にセットして(ステップS120)、後述するステップS113にスキップする。
また、ステップS102の手順でベースアドレスが空でないと判定した場合は、アドレス格納部104が取得したアドレスを比較アドレス2にセットして(ステップS105)、オフセット値計算部105が比較アドレス1と比較アドレス2のオフセット値を計算する(ステップS106)。
次に、アドレス格納部104が比較アドレス2のアドレスを比較アドレス1にセットして(ステップS107)、オフセット値格納部106が比較オフセット値1が空であるか否かを判定する(ステップS108)。その結果、比較オフセット値1が空であると判定した場合は、オフセット値格納部106がステップS106の手順で計算したオフセット値を比較オフセット値1にセットして(ステップS109)、ステップS101の手順に戻る。
一方、ステップS108の手順において、比較オフセット値1が空でないと判定した場合は、オフセット値格納部106がステップS106の手順で計算したオフセット値を比較オフセット値2にセットし(ステップS110)、オフセット値比較部107が比較オフセット値1と比較オフセット値2が同じであるか否かを判定する(ステップS111)。
ステップS111における判定の結果、比較オフセット値1と比較オフセット値2が同じであると判定した場合は、オフセット値計算部105がカウンタ106aの値を“1”増加して(ステップS112)、ステップS101の手順に戻る。
一方、ステップS111の手順で比較オフセット値1と比較オフセット値2が同じでないと判定した場合は、メモリアクセスアドレス情報出力部108がベースアドレスを出力するとともに(ステップS113)、オフセット値比較部107がカウンタ106aの値が“1”より大きいか否かを判定する(ステップS114)。その結果、カウンタ値は“1”より大きいと判定した場合は、メモリアクセスアドレス情報出力部108が比較オフセット値1及びカウンタ106aのカウンタ値をそれぞれ出力する(ステップS115、S116)。
また、ステップS114の手順でカウンタ106aのカウンタ値が“1”以下であると判定した場合は、ステップS117の手順にスキップする。
ステップS117では、CPU101が終了フラグが“ON”であるか否かを判定し、終了フラグが“OFF”であると判定した場合は、CPU101がカウンタ106aの値と比較オフセット値1を初期値に戻すとともに(ステップS118)、アドレス格納部104が取得したメモリアクセスアドレスをベースアドレスにセットして(ステップS119)、ステップS101の手順に戻り、次のメモリアクセスアドレスを取得する。
一方、ステップS117において、終了フラグが“ON”であると判定した場合は、メモリアクセストレース情報の取得処理を終了する。
次に、本実施形態におけるメモリアクセストレース情報取得処理の具体例について、図3を参照しながら説明する。
図3(a)において、初めにアドレス“0x10”のデータを取得すると、図4に示したフローチャートのステップS102の手順でベースアドレスは空であるので、アドレス“0x10”はステップS103の手順でベースアドレスにセットされ、ステップ104の手順で比較アドレス1にセットされる。
次に、アドレス“0x14”のデータを取得すると、ステップS102の手順では、ベースアドレスに“0x10”が既にセットされているので空ではないと判定され、取得したアドレス“0x14”は、ステップS105の手順で比較アドレス2にセットされる。
ステップS106では、比較アドレス1に格納されているアドレス“0x10”と、比較アドレス2に格納されているアドレス“0x14”のオフセット値をオフセット値計算部105によって計算し、“#0x4”を得る。そして、次のデータに対する比較に備えるために、続くステップS107の手順で比較アドレス2に格納されているアドレス“0x14”を比較アドレス1にセットする。
次に、ステップS108における判定の結果、比較オフセット値1は空となっているので、ステップS106の手順で計算したオフセット値“#0x4”を、続くステップS109の手順で比較オフセット値1にセットする。
次いで、アドレス“0x18”のデータを取得すると、上記したと同様にステップS108までの処理を実行する。
ステップS108では、比較オフセット値1に“#0x4”が格納されているため、ステップS110の手順に進んで比較オフセット値2に“0x14”と“0x18”のオフセット値“#0x4”をセットし、更に、ステップS111においてこれら二つのオフセット値が同じであるか否かの判定を行う。
ここで、比較オフセット値1と比較オフセット値2にそれぞれ格納されているオフセット値は、同じ“#0x4”であるので、ステップS112の手順でカウンタ106aにおけるカウンタ値を“1”増やして“2”に変更する。
次のアドレス“0x1C”のデータからアドレス“0x2C”のデータまで同様の処理を行うと、ベースアドレスが“0x10”、比較アドレス1が“0x2C”、比較オフセット値1が“#0x4”、カウンタ値が“7”という状態になる。
続いて、例えばアドレス“0x100”のデータを取得したとすると、上記したと同様に、ステップS108までの処理を行う。
ステップS108では、比較オフセット値1に“#0x4”が格納されているため、ステップS110の処理手順で、比較オフセット値2に“0x2C”と“0x100”のオフセット値“#0xD4”をセットし、ステップS111の手順オフセット値が同じかどうかの判定処理を行う。
ここで、比較オフセット値1と比較オフセット値2に格納されているオフセット値は、それぞれ“#0x4”と“#0xD4”になっていて異なっているので、ステップS113の手順でベースアドレス“0x10”を出力するとともに、次のステップS114の手順でカウンタ値が“1”より大きいか否かを判定する。
このとき、カウンタ106aのカウンタ値は“7”となっていて“1”より大きいので、比較オフセット値1に格納されているオフセット値“#0x4”と、カウンタ値“7”を出力して、終了フラグの状態を判定するステップS117の処理を行う。
ステップS117の手順では、終了フラグが初期値の“OFF”であるため、続くステップS118の手順において、カウンタ106aのカウンタ値“7”と、比較オフセット値1に格納されているオフセット値“#0x4”をクリアし、更にステップS119の手順で取得したアドレス“0x100”をベースアドレスにセットしてステップS101の手順に戻り、メモリアクセスアドレスを取得したか否かの判定を繰り返す。
そして、ステップS101の手順で、例えば次のアドレスが取得できなかった場合は、ステップS120の手順で終了フラグを“ON”にセットしてからステップS113の手順に進み、ベースアドレス“0x100”を出力する。
次のステップS114では、カウンタ値が初期値“1”になっているので、ステップS117にジャンプして終了フラグを判定する処理を実行する。その結果、終了フラグはステップS120で“ON”にセットしてあったので、メモリアクセストレース情報取得処理を終了し、図3(b)に示すようなメモリアクセストレース情報21を取得することができる。
以上説明したように、このような本発明に係る第1の実施形態のメモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、記録媒体によれば、オフセット値の一致する回数をカウントすることで出力するトレース情報の量を減少させることができ、デバッグ作業に必要なメモリアクセス状況を効率良く取得することが可能となる。
(第2の実施形態)
まず、本発明の第2の実施形態に係るプロセッサを例示する。図5は、第2の実施形態に係るプロセッサの概略構成を示すブロック図である。
図5において、プロセッサ200は、各部の制御を行うCPU201と、プログラム及びデータを格納するメモリ202と、CPU202がアクセスしたメモリアクセスアドレスを取得するメモリアクセスアドレス取得部203と、取得したアドレスを格納するアドレス格納部204と、イベントを検出するイベント検出部205と、アドレス格納部204に格納されている最新のアドレスと一つ前のアドレスからオフセット値を計算するオフセット値計算部206と、計算したオフセット値を格納するオフセット値格納部207と、検出したイベントからイベントまでのオフセット値を格納する一時格納バッファ208と、オフセット値のパターンを格納するパターンバッファ209と、一時格納バッファ208によって格納されたオフセット値とパターンバッファ209によって格納されたオフセット値のパターンを比較して両者が一致するか否かを判定するパターン比較部210と、パターン比較部210における判定で、一時格納バッファ208によって格納されたオフセット値とパターンバッファ209によって格納されたオフセット値のパターンが一致した場合に、一致した回数をカウントするカウンタ209aと、パターン比較部210における判定で、一時格納バッファ208によって格納されたオフセット値とパターンバッファ209によって格納されたオフセット値のパターンが一致しない場合に、パターンバッファ209によって格納されているオフセット値を出力するメモリアクセスアドレス情報出力部211を有する構成である。
プロセッサ200は、CPU201がメモリ202に格納されたトレース情報取得プログラムを実行することによりメモリアクセストレース情報取得装置として機能し、トレース情報の生成対象である対象プログラムを実行する際のメモリアクセストレース情報を取得して出力する。なお、本実施形態の対象プログラムは、前述した第1の実施の形態における対象プログラムと同じであるので、説明を省略する。
図6は、C言語ソースコード12の一部がC言語コンパイラによってどのようにアセンブリ言語コード13に変換されるかの例を示したものである。
図6(a)に示すC言語ソースコード12の破線で囲まれた実行文は、図6(b)に示すアセンブリ言語コード13の破線で囲まれた部分に対応する。ここで、アセンブリ言語コード13の破線内の“PC”は、命令アドレスを示すプログラムカウンタ値を示し、“MNEMONIC”は“PC”に対応するニーモニックを示している。
図7は、図6に示す対象プログラムを実行した際のメモリアクセストレース情報の例を示したものである。図7(a)に示す従来のメモリアクセストレース情報22は、基本となるアドレス、オフセット値、オフセット値の繰り返し回数を計算することで、情報を圧縮した図7(b)に示すようなメモリアクセストレース情報23に変換することができる。ここで、“LOOP”は分岐によりループの先頭に戻るイベント、“LOOP_BEGIN”及び“LOOP_END”は、それぞれパターンの開始と終了を表している。
次に、以上のように構成された本実施形態のプロセッサについて、メモリアクセストレース情報の取得処理方法を説明する。図8は、本実施形態におけるメモリアクセストレース情報の取得処理手順を説明するためのフローチャートである。
ステップS200の初期化手順において、CPU201がカウンタ209aに初期値“1”を、終了フラグに“OFF”をそれぞれ設定するとともに、一時格納バッファ208、パターンバッファ209をそれぞれクリアする。
まず、ステップS201においてイベント検出部205がイベントを取得し、パターン比較部210が取得したイベントが指定のイベントと一致するか否かを判定する(ステップS202)。
判定の結果、イベントが一致しない場合は、ステップS203においてメモリアクセスアドレス取得部203がメモリアクセスアドレスを取得したか否かを判定する。その結果、取得したと判定した場合は、メモリアクセスアドレス取得部203がそのメモリアクセスアドレスが初めて取得したものであるか否かを判定する(ステップS204)。
取得したメモリアクセスアドレスが初めてのものであると判定した場合は、アドレス格納部204がそのメモリアクセスアドレスを比較アドレス1にセットする(ステップS205)とともに、メモリアクセスアドレス情報出力部211がその情報を出力して(ステップS206)、ステップS201の手順に戻り、イベント検出部205によって次のイベントを取得する。
一方、ステップS202の手順で取得したイベントが指定のイベントと一致したと判定した場合は、後述するステップS211にスキップする。
また、ステップS203の手順でメモリアクセスアドレスを取得できなかったと判定した場合は、CPU201が終了フラグを“ON”にセットして(ステップS220)、後述するステップS211にスキップする。
更に、ステップS204の手順で、取得したメモリアクセスアドレスが2回目以降のものであると判定した場合は、アドレス格納部204がそのメモリアクセスアドレスを比較アドレス2にセットする(ステップS207)。
続いて、比較アドレス1及び比較アドレス2にそれぞれセットしてあるメモリアクセスアドレスからそのオフセット値をオフセット計算部206が計算して(ステップS208)、一時格納バッファ208が計算結果を格納する(ステップS209)。
そして、アドレス格納部204が比較アドレス2にセットしてあるメモリアクセスアドレスを比較アドレス1にセットした後(ステップS210)、ステップS201の手順に戻る。
ステップS211では、パターン比較部210が一時格納バッファ208によって格納されているオフセット値のパターンがパターンバッファ209に格納されているパターンと一致するか否かを判定する。
判定の結果、パターンが一致した場合は、CPU201がカウンタ209aの値を“1”増加させ(ステップS212)、一時格納バッファ208をクリアして(ステップS219)、ステップS201の手順に戻り、イベント検出部205によって次のイベントを取得する。
一方、ステップS211における判定の結果、パターンが一致しない場合は、メモリアクセスアドレス情報出力部211がステップS213でパターンバッファ209によって格納されているパターンを出力し、続くステップS214において、パターン比較部210がカウンタ209aの値が“1”より大きいか否かを判定する。
ステップS214における判定の結果、カウンタ値が“1”より大きい場合は、メモリアクセスアドレス情報出力部211がそのカウンタ値を出力して(ステップS215)、続くステップS216の手順に進む。一方、ステップS214でカウンタ値が“1”以下であると判定した場合は、ステップS216の手順にスキップする。
ステップS216では、CPU201が終了フラグが“ON”であるか否かを判定する。判定の結果、“ON”ではないと判定した場合は、続くステップS217で、CPU201がカウンタ209aに“1”をセットして初期値に戻すとともに、一時格納バッファ208の内容をパターンバッファ209に反映して(ステップS218)、ステップS219の手順に進み、一時格納バッファ208をクリアする。
一方、ステップS216で終了フラグが“ON”であると判定した場合は、メモリアクセスアドレス情報出力部211が一時格納バッファ208の内容を出力して(ステップS221)、メモリアクセストレース情報の取得処理を終了する。
なお、以上のメモリアクセストレース情報取得処理手順では、初期化手順ステップS200でパターンバッファ209の内容を空にしているが、検出頻度が高いか、叉は、始めに出やすいパターン等を格納しておいてもよい。
また、ステップS201ではイベントを取得しているが、分岐などの特定の命令や、ユーザが挿入したイベント、ループの先頭などに置き換えてもよい。
次に、本実施形態におけるメモリアクセストレース情報取得処理の具体例について、図7を参照しながら説明する。
図7(a)において、初めにアドレス“0x10”のデータを取得すると、ステップS204の手順で初めてのメモリアクセスアドレスと判定され、取得したアドレス“0x10”がステップS205の手順で比較アドレス1にセットされるとともに、次のステップS206の手順で出力される。
次に、アドレス“0x30”のデータを取得すると、ステップS204の手順で2回目以降のアドレスと判定されるので、ステップS207において、この取得したアドレス“0x30”が比較アドレス2にセットされる。
ステップS208では、比較アドレス1に格納されているアドレス“0x10”と、比較アドレス2に格納されているアドレス“0x30”のオフセット値“#0x20”をオフセット値計算部206によって計算し、ステップS209の手順でこのオフセット値“#0x20”を一時格納バッファ208によって格納する。そして、次のデータに対する比較に備えるため、ステップS210で比較アドレス2に格納されているアドレス“0x30”を比較アドレス1にセットする。
次に、アドレス“0x50”を取得すると、上記したと同様にステップS209までの処理を行い、一時格納バッファ208に“#0x20”、“#0x20”が格納される。
次いで、イベント“LOOP”を取得すると、ステップS202における判定の結果、指定イベントと一致するので、ステップS211にスキップし、一時格納バッファ208によって格納されている内容“0x20”をパターンと比較して一致するか否かの判定処理を行う。
ステップS211における判定の結果、パターンバッファ209は空であるので一時格納バッファ208によって格納されている内容“0x20”とは一致せず、ステップS213の処理に進んでパターンバッファ209によって格納されているパターンを出力するが、この場合パターンバッファ209は空であるので何も出力しない。
次に、カウンタ209aの値が“1”を超えているかどうかを判定するステップS214では、カウンタ値が“1”であるのでステップS216にスキップし、終了フラグが“ON”であるか否かを判定する。すると、終了フラグは初期化設定した“OFF”のままであるので、ステップS217の手順でカウンタ209aの値をクリアするとともに、ステップS218の手順で一時格納バッファ208によって格納されている“#0x20”、“#0x20”をパターンバッファ209に反映させ、ステップS219の手順で一時格納バッファ208をクリアする。
次いで、図7(a)に示すアドレス“0x14”、“0x34”、“0x54”の各データに対して同様の処理を行うと、一時格納バッファ208にオフセット値“#−0x3C”、“#0x20”、“#0x20”が格納され、パターンバッファ209に“#0x20”、“#0x20”が格納された状態になる。
次のイベント“LOOP”に対して同様に処理を行うと、ステップS213でパターン“#0x20”、“#0x20”を出力し、ステップS218で一時格納バッファ208の内容“#−0x3C”、“#0x20”、“#0x20”をパターンバッファ209に反映する。
続いて、アドレス“0x18”、“0x38”、“0x58”の各データに対して同様の処理を行うと、一時格納バッファ208にオフセット値“#−0x3C”、“#0x20”、“#0x20”が格納され、パターンバッファ209に“#−0x3C”、“#0x20”、“#0x20”が格納された状態になる。
次に、イベント“LOOP”に対してステップS211の処理を行うと、パターンが一致するため、ステップS212でカウンタの値を“1”増加して“2”に変更し、ステップS219で一時格納バッファ208をクリアする。
次のアドレス“0x1C”のデータからアドレス“0x6C”の後に来るイベントの“LOOP”まで同様に処理を行うと、パターンバッファ209に格納されたパターンが“#−0x3C”、“#0x20”となり、カウンタ209aの値が“7”という状態になる。
そして、例えば次のアドレスが取得できなかった場合は、ステップS220の手順で終了フラグを“ON”にセットして、ステップS211の処理を実行する。
このとき、一時格納バッファ208は空になっているのでパターンバッファ209の内容とは一致せず、ステップS213でパターンバッファ209に格納されているパターン“#−0x3C”、“#0x20”、“#0x20”を出力して、ステップS214でカウンタ209aの値が“1”より大きいかどうかを判定する。すると、カウンタ値は“7”になっているので、ステップS215の手順でこれを出力して、次のステップS216の処理を行う。
ステップS216において、終了フラグは“ON”になっているのでステップS221の手順に進み、一時格納バッファ208の内容を出力する。しかし、一時格納バッファ208は空であるので、何も出力することなくメモリアクセストレース情報取得処理を終了し、図7(b)に示すようなメモリアクセストレース情報23を取得することができる。
以上説明したように、このような本発明に係る第2の実施形態のメモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、及びメモリアクセストレース情報取得プログラムによれば、オフセット値が一定でない範囲を省略することで、出力する情報量を減少させることができ、デバッグ作業に必要なメモリアクセス状況を効率良く取得することが可能となる。
(第3の実施形態)
本発明の第3の実施形態に係るプロセッサは、図5で示した第2の実施形態と同一の構成であり、説明を省略する。
図5において、本実施形態のプロセッサ200は、CPU201がメモリ202に格納されたトレース情報取得プログラムを実行することによりメモリアクセストレース情報取得装置として機能し、トレース情報の生成対象である対象プログラムを実行する際のメモリアクセストレース情報を取得して出力する。なお、本実施形態の対象プログラムは、前述した第2の実施の形態における対象プログラムと同じであるので、説明を省略する。
図9は、図6に示す対象プログラムを実行した際のメモリアクセストレース情報の例である。図7(a)に示す従来のメモリアクセストレース情報24は、基本となるアドレス、オフセット値、オフセット値の繰り返し回数を計算することで、情報を圧縮した図9(a)および(b)に示すようなメモリアクセストレース情報25に変換することができる。ここで、“LOOP+ADRS”は、ループの先頭アドレスを表している。
次に、本実施形態のプロセッサについて、メモリアクセストレース情報の取得処理方法を説明する。本実施形態におけるメモリアクセストレース情報の取得処理方法は、前述した本発明の第2の実施の形態におけるメモリアクセストレース情報取得処理方法の変形例である。図10は、本実施形態のメモリアクセストレース情報取得処理手順を説明するためのフローチャートである。
図10において、本実施形態のメモリアクセストレース情報取得処理方法S2aは、図8に示した第2の実施形態のメモリアクセストレース情報取得方法S2の、初めてオフセットの基準となるアドレスを取得したか否かを判定するステップS204に代えて、アドレス格納部204がベースアドレスが空であるか否かを判定するステップS246の手順を設けるとともに、初めて取得したアドレスを出力するステップS206の手順に代えて、アドレス格納部204が取得したアドレスをベースアドレスにセットするステップS241の手順を設けるものである。
また、一時格納バッファ208をクリアするステップS219の手順に代えて、ベースアドレスをパターンバッファ209によって格納するステップS242の手順、及びアドレス格納部によってベースアドレスを、CPU201によって一時格納バッファ208をクリアするステップS243の手順を設けている。更に、終了フラグが“ON”であるか否かを判定するステップS216の手順の直前に、パターンバッファ209によって格納されたベースアドレス群をメモリアクセスアドレス情報出力部211が出力するステップS244を追加し、また、一時格納バッファ208の内容を出力するステップS221に代えて、メモリアクセスアドレス情報出力部211が一時格納バッファ208によって格納されているオフセット値に加えてベースアドレスの内容も併せて出力するステップS245を設けるものである。なお、ステップS244の手順は、前述した第1の実施形態に記載した方法に置き換えてもよい。
次に、本実施形態におけるメモリアクセストレース情報取得処理の具体例について、図7を参照しながら説明する。
図7(a)において、初めにアドレス“0x10”のデータを取得すると、ベースアドレスが空であるか否かを判定するステップS246では、ベースアドレスが空であるので、取得したアドレス“0x10”を比較アドレス1及びベースアドレスにセットする(ステップS205、S241)。
次に、アドレス“0x30”のデータを取得すると、ベースアドレスには“0x10”がセットされているので、ステップS246の次の手順はステップS207となり、取得したアドレス“0x30”が比較アドレス2にセットされる。
続くステップS208では、アドレス格納部204の比較アドレス1に格納されているアドレス“0x10”と、比較アドレス2に格納されているアドレス“0x30”のオフセット値“#0x20”をオフセット値計算部206によって計算し、ステップS209の手順で比較アドレス1に格納されている“0x20”を一時格納バッファ208によって格納する。その後、次のデータに対する比較に備えて、比較アドレス2に格納されているアドレス“0x30”を比較アドレス1にセットする(ステップS210)。
次に、アドレス“0x50” のデータを取得し、上記したと同様にステップS209までの処理を行うと、一時格納バッファ208には“#0x20”、“#0x20”が格納される。
次いで、ステップS201でイベント“LOOP”を取得すると、ステップS202における判定の結果、指定イベントと一致するので、ステップS211の処理を実行する。
ステップS211では、一時格納バッファ208によって格納されている内容をパターンと比較するが、パターンバッファ209が空であるのでステップS213の処理に進み、パターンバッファ209によって格納されているパターンを出力する。この場合パターンバッファ209は空であるので何も出力することなく、続くステップS214の手順を実行する。
ステップS214では、カウンタの値が“1”以下であるので、ステップS244の手順にスキップして、パターンバッファ209に格納されているベースアドレス群を出力する手順を実行する。この場合パターンバッファ209は空であるので何も出力することなく、終了フラグを判定するステップS216の手順に進む。
すると、終了フラグは“OFF”であるので、ステップS217でカウンタ209aに“1”をセットして初期値に戻し、ステップS218で一時格納バッファ208によって格納されている“#0x20”、“#0x20”をパターンバッファ209に反映させた後、ベースアドレスをパターンバッファ209によって格納するステップS242の手順と、ベースアドレス及び一時格納バッファ208をクリアするステップS243の手順を実行する。
次に、アドレス“0x14”、“0x34”、“0x54”の各データに対して同様の処理を行うと、一時格納バッファ208にオフセット値“#0x20”、“#0x20”が、ベースアドレスに“0x14”、パターンバッファ209に“#0x20”、“#0x20”が、パターンバッファ209にベースアドレス群(“0x10”)がそれぞれ格納されている状態になる。
続いて、イベント“LOOP” を取得してステップS211の判定処理を行うと、一時格納バッファ208の内容がパターンと一致するので、ステップS212でカウンタ209aの値を“1”増やして“2”とし、ステップS242でベースアドレス“0x14”をパターンバッファ208に格納するとともに、ステップS243でベースアドレス及び一時格納バッファ209をクリアする。
次のアドレス“0x1C”のデータからアドレス“0x6C”の後に来るイベント “LOOP”まで同様に処理を行うと、パターンバッファ209の内容が“#0x20”、“#0x20”、カウンタ209aの値が“8”という状態になる。
そして、例えば次のアドレスが取得できなかった場合は、ステップS220の手順で終了フラグを“ON”にセットし、ステップS211の処理を実行する。すると、一時格納バッファ208は空になっているので、ステップS213でパターン“#0x20”、“#0x20”を出力して、カウンタ209aの値を判定するステップS214の手順に進む。
ステップS214において、カウンタ209aの値は“1”より大きいので、次のステップS215でその値を出力するとともに、ステップS244でパターンバッファ209によって格納されたベースアドレス群(“0x10、“0x14”、・・・、“0x2C”)を出力して、終了フラグを判定するステップS216の手順を実行する。
ステップS216では、終了フラグが“ON”になっているので、ステップS245の手順に進み、ベースアドレスと一時格納バッファ208の内容を出力する。この場合、ベースアドレスと一時格納バッファ208はいずれも空となっているので何も出力することなく、メモリアクセストレース情報取得処理を終了する。これにより、図9(a)に示すメモリアクセストレース情報24を取得することができる。
また、パターンバッファ209によって格納されたベースアドレス群を出力するステップS244の手順を、図4において示した第1の実施形態の方法に置き換えることでも、図9(b)に示すメモリアクセストレース情報25を取得することができる。
以上説明したように、このような本発明に係る第3の実施形態のメモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体によれば、イベントを取得した際のアドレスのオフセット値が一定でないものに対しても、デバッグ作業に必要なデータトレース情報を効率良く取得することができる。
(第4の実施形態)
本発明の第4の実施形態に係るプロセッサは、図5で示した第2の実施形態と同一の構成であり、説明を省略する。
図5において、本実施形態のプロセッサ200は、CPU201がメモリ202に格納されたトレース情報取得プログラムを実行することによりメモリアクセストレース情報取得装置として機能し、トレース情報の生成対象である対象プログラムを実行する際のメモリアクセストレース情報を取得して出力する。
図12は、図11に示すようなC言語ソースコード14で記述された対象プログラムを実行した際のメモリアクセストレース情報の例を示すものである。図12(a)に示す従来のメモリアクセストレース情報26は、基本となるアドレス、パターン、パターンの繰り返し回数を計算することで、図12(b)に示すように、情報を圧縮したメモリアクセストレース情報27に変換することができる。ここで、“LOOP REPEAT”は、“LOOP_BEGIN”から“LOOP_END”までに同じパターンが繰り返された回数を表している。
次に、本実施形態のプロセッサについて、メモリアクセストレース情報の取得処理方法を説明する。本実施形態におけるメモリアクセストレース情報の取得処理方法は、前述した本発明の第2の実施の形態におけるメモリアクセストレース情報取得処理方法の変形例であり、図13は、本実施形態のメモリアクセストレース情報取得処理手順を説明するためのフローチャートである。
図13に示す本実施形態のメモリアクセストレース情報取得処理手順は、図8で示した第2の実施形態のメモリアクセストレース情報取得処理におけるフローチャートのステップS211とステップ213の間にステップS250を追加し、ステップS218とステップS219の間にステップS251〜S254をそれぞれ追加したものである。
ステップS250は、ステップS211において一時格納バッファ208の内容がパターンと一致しないと判定した際に、メモリアクセスアドレス情報出力部211がラベルを出力する処理手順であり、ステップS251は、ステップS218で一時格納バッファ208の内容をパターンバッファ209に反映した際に、パターン比較部210が既に同じパターンを出力しているか否かを判定する手順である。なお、このステップS250の手順を追加することにより、パターンを出力する処理のステップS213は、初めてラベルを出力するときにのみパターンを出力し、以降はパターンを出力しない構成になっている。
また、ステップS252は、ステップS251における判定の結果、既に同じパターンが出力されている場合に、CPU201がそのパターンのラベルを取得する手順であり、ステップS253は、ステップS251で同じパターンが出力されていないと判定された場合に、CPU201が新規ラベルを取得する手順である。さらに、ステップS254は、ステップS252叉はステップS253の手順で取得したラベルをパターンバッファ209によって格納する手順である。
次に、本実施形態におけるメモリアクセストレース情報取得処理の具体例について、図12(a)に示したメモリアクセストレース情報26を参照しながら説明する。
図12(a)におけるアドレス“0x10”のデータからアドレス“0x50”のデータまでは、第2の実施形態と同様の処理を行い、一時格納バッファ208には“#0x20”、“#0x20”が格納される。
次に、イベント“LOOP” を取得して、パタンーン比較部210が一時格納バッファ208によって格納されている内容をパターンと比較するステップS211を実行すると、パターンバッファ209は空になっているので、ステップS250の処理に進んでメモリアクセスアドレス情報出力部211がラベルを出力し(空の場合は何も出力しない)、更にステップS213でメモリアクセスアドレス情報出力部211がパターンを出力して(空の場合は何も出力しない)、ステップS214でパターン比較部210がカウンタ209aの値が“1”より大きいか否かの判定を行う。
すると、カウンタ209aの値は“1”以下であるので、終了フラグを判定するステップS216にスキップする。このとき、終了フラグは“OFF”であるので、ステップS217でCPU201がカウンタ209aをクリアし、ステップS218で一時格納バッファ208の内容“#0x20”、“#0x20”をパターンバッファ209に反映させた後、ステップS251の処理を行う。
既に同じパターンを出力しているか否かを判定するステップS251では、既に出力したパターンに一致するものがないので、続くステップS253の処理で新規ラベル“LOOP1”を取得し、ステップS254でパターンバッファ209によって取得したラベルを格納して、ステップS219の手順でCPU201が一時格納バッファ208をクリアする。
次のアドレス“0x14”のデータからアドレス“0x6C”の後に来るイベント“LOOP”まで同様に処理を行うと、パターンバッファ209の内容が“#−0x3C”、“#0x20”、“#0x20”となり、カウンタ209aの値が“7”、ラベルが“LOOP2”という状態になる。
次に、例えばアドレス“0x100”のデータを取得すると、上記したと同様に、ステップS209までの処理を実行する。
再び、アドレス“0x10”のデータからのループが発生したとき、アドレス“0x50”のデータまでは上記したと同様の処理を行い、一時格納バッファ208によって“#0xA4”、“#−0xF0”、“#0x20”、“#0x20”が格納される。
次に、イベント“LOOP” を取得して、ステップS211の判定処理を行うと、パターンバッファ208の内容は“LOOP2”になっていて一致しないので、ステップS250の処理に進んでメモリアクセスアドレス情報出力部211がラベルを出力し(空の場合は何も出力しない)、更にステップS213でパターン“#−0x3C”、“#0x20”、“#0x20”を出力して、ステップS214の手順でパターン比較部210がカウンタ209aの値が“1”より大きいか否かの判定を行う。
すると、カウンタ209aの値は“7”になっていて“1”より大きいので、ステップS215の手順でメモリアクセスアドレス情報出力部211がこの値を出力して、CPU201が終了フラグを判定するステップS216の処理を行う。
このとき、終了フラグは“OFF”になっているので、ステップS217の手順でCPU201がカウンタ209aをクリアし、ステップS218で一時格納バッファ208の内容“#0xA4”、“#−0xF0”、“#0x20”、“#0x20”をパターンバッファ209に反映させた後、ステップS251の処理を実行する。
ステップS251における判定処理の結果、既に出力したパターンに一致するものがないので、続くステップS253の手順でCPU201が新規ラベルの“LOOP3”を取得し、ステップS254でパターンバッファ209によってラベルを格納するとともに、ステップS219でCPU201が一時格納バッファ208をクリアする。
次のアドレス“0x14”のデータからアドレス“0x54”のデータまで上記したと同様の処理を行うと、一時格納バッファ208の内容が“#−0x3C”、“#0x20”、“#0x20”、パターンバッファ209の内容が“#0xA4”、“#−0xF0”、“#0x20”、“#0x20”という状態になる。
次に、イベント“LOOP” を取得してステップS211の判定処理を実行すると、パターンバッファ208の内容は“LOOP3”となっていて一致しないため、ステップS250の手順でメモリアクセスアドレス情報出力部211がラベル“LOOP3”を出力し、続くステップS213でパターン“#0xA4”、“#−0xF0”、“#0x20”、“#0x20”をメモリアクセスアドレス情報出力部211が出力した後、ステップS214の判定処理を行う。
ステップS214において、カウンタ209aの値は“1”以下であるので、終了フラグを判定するステップS216にスキップする。すると、終了フラグは“OFF”であるので、ステップS217でCPU201がカウンタ209aをクリアし、ステップS218で一時格納バッファ208の内容“#−0x3C”、“#0x20”、“#0x20”をパターンバッファ209に反映させた後、ステップS251の処理を行う。
ステップS251では、既に出力したパターンに一致するものがあるので、続くステップS252でCPU201がラベル“LOOP2”を取得し、ステップS254でパターンバッファ209によって取得したラベルを格納して、ステップS219でCPU201が一時格納バッファ208をクリアする。
次のアドレス“0x1C”のデータからアドレス“0x6C”の後に来るイベント“LOOP”まで同様に処理を行うことにより、図12(b)に示すメモリアクセストレース情報27を取得することができる。
以上説明したように、このような本発明に係る第4の実施形態のメモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体によれば、既に出力したことのあるパターンは一度しか検出されないようにすることができるので、パターンを格納するメモリを縮減して、なおかつ、多くのパターンを一致させることが可能となり、デバッグ作業に必要なデータトレース情報を効率良く取得することができる。
(第5の実施形態)
本発明の第5の実施形態に係るコンピュータシステムのプロセッサは、図5で示した第2の実施形態と同一の構成であり、説明を省略する。
図5において、本実施形態のプロセッサ200は、CPU201がメモリ202に格納されたトレース情報取得プログラムを実行することによってメモリアクセストレース情報取得装置として機能し、トレース情報の生成対象である対象プログラムを実行する際のメモリアクセストレース情報を取得して出力する。
また、本実施形態における対象プログラム及びメモリアクセストレース情報は、それぞれ図6及び図7に示した第2の実施の形態と同じであり、説明を省略する。
次に、本実施形態のプロセッサについて、メモリアクセストレース情報の取得処理方法を説明する。本実施形態におけるメモリアクセストレース情報の取得処理方法は、前述した本発明の第2の実施の形態におけるメモリアクセストレース情報取得処理方法の変形例である。図14は、本実施形態のメモリアクセストレース情報取得処理手順を説明するためのフローチャートである。
図14に示す本実施形態のメモリアクセストレース情報取得処理手順は、図8で示した第2の実施形態のメモリアクセストレース情報取得処理におけるフローチャートのステップS211に代えてステップS265を設け、ステップS212とステップS219の間にステップS260を追加する。また、変更したステップS265とステップS213の間にステップS262を追加し、更に、ステップS218に代えて、ステップS266、S261、S263、S264を設けるものである。
ステップS265は、パターン比較部210が一時格納バッファ208の内容がカウンタ209aの値が最大となるパターンと一致するか判定する手順であり、ステップS260は、ステップS260において一時格納バッファ208の内容がカウンタ値が最大となるパターンと一致すると判定した際に、一致したパターンの優先度をCPU201が上げる手順である。
また、ステップS262は、ステップS265において一時格納バッファ208の内容がカウンタ値が最大となるパターンと一致しないと判定した際に、メモリアクセスアドレス情報出力部211がラベルを出力する手順である。なお、このステップS262の手順を追加することにより、パターンを出力するステップS213は、初めてラベルを出力するときにのみパターンを出力し、以降はパターンを出力しない構成になっている。
さらに、ステップS266は、パターン比較部210が一時格納バッファ208の内容がパターンと一致するか否かを判定する手順であり、ステップS261は、ステップS263において一時格納バッファ208の内容がパターンと一致しないと判定した際に、一時格納バッファ208の内容を最も優先度の低いパターンバッファ209に反映する手順である。
また、ステップS263はCPU201がラベルを取得する手順であり、ステップS264は取得したラベルをパターンバッファ209によって格納する手順である。
次に、本実施形態におけるメモリアクセストレース情報取得処理の具体例について、図12(a)に示したメモリアクセストレース情報26を参照しながら説明する。ここで、パターンバッファ209は2つのパターンを格納でき、パターン毎にカウンタ値を保持するものとする。
図12(a)におけるアドレス“0x10”のデータからアドレス“0x50”のデータまでは、第2の実施形態と同様の処理を行い、一時格納バッファ208によって“#0x20”、“#0x20”が格納される。
次に、イベント“LOOP” を取得してステップS265の処理を実行すると、パターンバッファ209は空であるので、ステップS262の処理に進んでメモリアクセスアドレス情報出力部211がラベルを出力し(空の場合は何も出力しない)、更に、ステップS213でメモリアクセスアドレス情報出力部211がパターンを出力し(を出力するとともに空の場合は何も出力しない)、パターン比較部210がステップS214でカウンタ209aの値が“1”より大きいか否かの判定を行う。
すると、カウンタ209aの値は “0”であるので、終了フラグを判定するステップS216にスキップする。このとき、終了フラグは“OFF”であるので、ステップS217の手順でCPU201がカウンタ209aをクリアし、ステップS266の処理を実行する。
ステップS266では、一時格納バッファ208の内容“#0x20”、“#0x20”がパターンと一致しないので、これをパターンバッファ1によって反映し(ステップS261)、CPU201がラベルの“LOOP1”を取得して(ステップS263)、パターンバッファ209によって格納する(ステップS264)。
次のアドレス“0x14”のデータからアドレス“0x54”のデータまで同様に処理を行うと、パターンバッファ209によって“#−0x3C”、“#0x20”、“#0x20”が格納される。
次に、イベント“LOOP” を取得してステップS260の判定処理を行うと、パターンバッファ208の内容は“LOOP1”になっていて一致しないので、ステップS262でメモリアクセスアドレス情報出力部211がこのラベル“LOOP1”を出力し、ステップS213でメモリアクセスアドレス情報出力部211がパターン“#0x20”、“#0x20”を出力して、ステップS214でパターン比較部210がカウンタ209aの値が“1”より大きいか否かの判定を行う。
すると、カウンタ209aの値は“1”以下であるので、ステップS216にスキップして終了フラグを判定する。このとき、終了フラグは“OFF”であるので、ステップS217でCPU201がカウンタ209aをクリアし、ステップS266の手順で、パターン比較部210が一時格納バッファ208の内容“#−0x3C”、“#0x20”、“#0x20”がパターンと一致するか否かを判定する。
ステップS266における判定の結果、パターンは一致しないので、一時格納バッファ208の内容“#−0x3C”、“#0x20”、“#0x20”をパターンバッファ209に反映させ(ステップS261)、更に、CPU201がラベル“LOOP2”を取得して(ステップS263)、パターンバッファ209によって格納する(ステップS264)。
次のアドレス“0x18”のデータからアドレス“0x58”のデータまで、上記したと同様の処理を行うと、一時格納バッファ208によって“#−0x3C”、“#0x20”、“#0x20” が格納される。
次に、イベント“LOOP” を取得してステップS265の判定処理を行うと、一時格納バッファ208の内容がパターンと一致するため、CPU201がカウンタ209aの値を“1”増加させて“2”とし(ステップS212)、一致したパターンバッファ2の優先度を上げて(ステップS260)、一時格納バッファ208をクリアする(ステップS219)。
続くアドレス“0x1C”のデータからアドレス“0x6C”の後に来るイベント“LOOP”まで同様に処理を行うと、パターンバッファ1が“#0x20”、“#0x20”、パターンバッファ1のラベルが“LOOP1”、パターンバッファ2が“#−0x3C”、“#0x20”、“#0x20”、パターンバッファ2のラベルが“LOOP2”、カウンタ209aの値が“7”となって、パターンバッファ2の優先度が高いという状態になる。
次に、例えばアドレス“0x100”のデータを取得したとすると、上記したと同様にステップS209までの処理を行う。
再び、アドレス“0x10”のデータからループが発生すると、アドレス“0x50”のデータまでは上記したと同様の処理を行い、一時格納バッファ208には“#0xA4”、“#−0xF0”、“#0x20”、“#0x20”が格納される。
次に、イベント“LOOP” を取得してステップS265の判定処理を行うと、パターンバッファ209の内容はカウンタ値が最大の“LOOP2”になっていて一致しないので、ステップS262の手順でメモリアクセスアドレス情報出力部211がラベル“LOOP2”を出力し、ステップS213でメモリアクセスアドレス情報出力部211がパターン“#−0x3C”、“#0x20”を出力して、ステップS214でパターン比較部210がカウンタ209aの値が“1”より大きいか否かの判定を行う。
すると、カウンタ209aの値は“1”より大きいので、ステップS215の手順でこの値を出力して、終了フラグを判定するステップS216の処理を行う。すると、終了フラグは“OFF”であるので、ステップS217の手順でCPU201がカウンタ209aをクリアし、ステップS266の処理を行う。
ステップS266における判定の結果、一時格納バッファ208の内容はパターンと一致しないので、ステップS261でCPU201が一時格納バッファの内容“#0xA4”、“#−0xF0”、“#0x20”、“#0x20”を優先度の低いパターンバッファ1に反映させた後、ステップS263の手順でラベル“LOOP3”を取得し、ステップS264でこのラベルをパターンバッファによって格納して、CPU201がステップS219で一時格納バッファ208をクリアする。
次のアドレス“0x14”のデータからアドレス“0x54”のデータまで上記したと同様の処理を行うと、一時格納バッファ208の内容が“#−0x3C”、“#0x20”、“#0x20”、パターンバッファ1が“#0xA4”、“#−0xF0”、“#0x20”、“#0x20”、パターンバッファ2が“#−0x3C”、“#0x20”、“#0x20”という状態になる。
次いで、イベント“LOOP” を取得してステップS265の判定処理を行うと、パターンバッファはラベル“LOOP2”に一致するので、CPU201がカウンタ209aの値を“1”増加させて“2”とし(ステップS212)、一致したパターンバッファ2の優先度を上げて(ステップS260)、一時格納バッファをクリアする(ステップS219)。
次のアドレス“0x14”のデータからアドレス“0x6C”の後に来るイベント“LOOP”まで同様に処理を行うことにより、図12(b)に示すメモリアクセストレース情報27を取得することができる。
以上説明したように、このような本発明に係る第5の実施形態のメモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体によれば、優先度が大きいパターンを残しておくことでパターンを一致させる頻度を多くすることができ、デバッグ作業に必要なデータトレース情報を効率良く取得することが可能となる。
なお、本実施形態では、一致したパターンの優先度を上げるようにしたが、一般的に知られているデータ置換のアルゴリズムを使用してもよい。
また、パターンバッファの初期値は空に設定したが、発生する頻度の高いパターンを初期値として格納しておいてもよい。
本発明のメモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体は、メモリに対するアクセス状況を示すデータをデバッグ作業に必要なトレース情報として効率良く取得できるともに、記憶容量に限りのあるメモリを有効に利用してトレース情報のパターンを効率良く検出することを可能にする効果を有し、プログラムのデバッグを支援するシステムのデバッガ等に有用である。
本発明の第1の実施形態に係るメモリアクセストレース情報取得装置の概略構成を示すブロック図 (a)本発明の第1の実施形態に係るデバッグ対象プログラムのC言語ソースコードの一部を示す図 (b)本発明の第1の実施形態に係るデバッグ対象プログラムの変換されたアセンブリ言語コードの一部を示す図 (a)従来のメモリアクセストレース情報を示す図 (b)本発明の第1の実施形態に係るメモリアクセストレース情報を示す図 本発明の第1の実施形態に係るメモリアクセストレース情報の取得処理手順を説明するためのフローチャート 本発明の第2〜第5の実施形態に係るメモリアクセストレース情報取得装置の概略構成を示すブロック図 (a)本発明の第2の実施形態に係るデバッグ対象プログラムのC言語ソースコードの一部を示す図 (b)本発明の第2の実施形態に係るデバッグ対象プログラムの変換されたアセンブリ言語コードの一部を示す図 (a)従来のメモリアクセストレース情報を示す図 (b)本発明の第2の実施形態に係るメモリアクセストレース情報を示す図 本発明の第2の実施形態に係るメモリアクセストレース情報の取得処理手順を説明するためのフローチャート (a)本発明の第3の実施形態に係るメモリアクセストレース情報を示す図 (b)本発明の第3の実施形態に係るメモリアクセストレース情報を示す図 本発明の第3の実施形態に係るメモリアクセストレース情報の取得処理手順を説明するためのフローチャート 本発明の第4の実施形態に係るデバッグ対象プログラムのソースコードを示す図 (a)従来のメモリアクセストレース情報を示す図 (b)本発明の第4の実施形態に係るメモリアクセストレース情報を示す図 本発明の第4の実施形態に係るメモリアクセストレース情報の取得処理手順を説明するためのフローチャート 本発明の第5の実施形態に係るメモリアクセストレース情報の取得処理手順を説明するためのフローチャート
符号の説明
100、200 プロセッサ
101、201 CPU
102、202 メモリ
103、203 メモリアクセスアドレス取得部
104、204 アドレス格納部
105、206 オフセット値計算部
106、207 オフセット値格納部
106a、209a カウンタ
107 オフセット値比較部
108、211 メモリアクセスアドレス情報出力部
208 一時格納バッファ
209 パターンバッファ
210 パターン比較部

Claims (11)

  1. CPUとメモリを有するプロセッサ上で動作するプログラムにより、前記CPUが前記メモリに対してアクセスしたアクセス状況を示すデータを、トレース情報として取得するメモリアクセストレース情報取得方法であって、
    前記メモリに対するアクセスアドレスを格納するステップと、
    前記アクセスアドレスと前記アクセスアドレスの一つ前のアクセスアドレスとのオフセット値を1つ以上計算するステップと、
    前記オフセット値を1つ以上計算した結果を示すオフセット値群がそれ以前に計算された前記オフセット値群と比較して、一致するか否かを判定する判定ステップと、
    前記オフセット値群がそれ以前に計算された前記オフセット値群と一致すると判定した場合に、一致した回数をカウントするカウントステップと、
    前記オフセット値群がそれ以前に計算された前記オフセット値群と一致しないと判定した場合に、前記一致した回数を出力する出力ステップと
    を有するメモリアクセストレース情報取得方法。
  2. 請求項1に記載のメモリアクセストレース情報取得方法であって、
    前記判定ステップにおいて、前記オフセット値を一つ前の前記オフセット値と比較して、一致するか否かを判定し、
    前記カウントステップにおいて、前記オフセット値が一つ前の前記オフセット値と一致すると判定した場合に、一致した回数をカウントし、
    前記出力ステップにおいて、前記オフセット値が一つ前の前記オフセット値と一致しないと判定した場合に、前記アクセスアドレス、前記オフセット値、及び前記一致した回数を出力するメモリアクセストレース情報取得方法。
  3. 請求項1に記載のメモリアクセストレース情報取得方法であって、
    前記CPUの前記プログラムを実行するイベントを検出するステップと、
    前記イベントが検出されなかった場合に、前記オフセット値を第1のバッファに格納するステップと
    を有し、
    前記判定ステップにおいて、前記イベントが検出された場合に、前記第1のバッファの内容を第2のバッファに格納された前記オフセット値群を示すパターンと比較して、一致するか否かを判定し、
    前記カウントステップにおいて、前記第1のバッファの内容が前記パターンと一致すると判定した場合に、一致した回数をカウントするステップを有し、
    前記出力ステップにおいて、前記第1のバッファの内容が前記パターンと一致しないと判定した場合に、前記パターン及び前記一致した回数を出力し、前記第1のバッファの内容を前記第2のバッファの内容に反映するメモリアクセストレース情報取得方法。
  4. 請求項3に記載のメモリアクセストレース情報取得方法であって、更に、
    前記イベントを検出する毎に、オフセット値の基準となるベースアドレスを格納するステップと、
    前記判定ステップにおいて前記第1のバッファの内容が前記パターンと一致すると判定した場合に、前記ベースアドレスを前記第2のバッファに格納するステップと
    を有し、
    前記出力ステップにおいて、前記第1のバッファの内容が前記パターンと一致しないと判定した場合には、前記パターン、前記一致した回数、及び1つ以上の前記ベースアドレスを示す前記ベースアドレス群を出力するメモリアクセストレース情報取得方法。
  5. 請求項3に記載のメモリアクセストレース情報取得方法であって、更に、
    前記判定ステップにおいて前記第1のバッファの内容が前記パターンと一致しないと判定した場合に、
    前記パターンに対応するラベルを出力するステップと、
    前記パターンを前記出力ステップにおいて既に出力したことのあるパターンと比較して、一致するか否かを判定するステップと、
    前記パターンが前記出力ステップにおいて既に出力したことのあるパターンと一致しないと判定した場合に、前記パターンに新規のラベルを付与するステップと、
    前記パターンが前記出力ステップにおいて既に出力したことのあるパターンと一致すると判定した場合に、前記既に出力したことのあるパターンと同じラベルを付与するステップと
    を有するメモリアクセストレース情報取得方法。
  6. 請求項3に記載のメモリアクセストレース情報取得方法であって、
    前記第1のバッファの内容を前記一致した回数が最大となるパターンと比較して、一致するか否かを判定するステップと、
    前記第1のバッファの内容が前記一致した回数が最大となるパターンと一致しないと判定した場合に、前記パターンに対応するラベルを出力するステップと、
    前記第1のバッファの内容が前記一致した回数が最大となるパターンと一致すると判定した場合に、前記一致したパターンの優先度を上げるステップと
    を有し、
    前記出力ステップにおいて、前記判定ステップにおいて前記第1のバッファの内容が前記パターンと一致しないと判定した場合に、前記パターンに対応するラベル及び前記一致した回数を出力し、前記第1のバッファの内容を最も優先度の低い前記第2のバッファの内容に反映するメモリアクセストレース情報取得方法。
  7. CPUとメモリを有するプロセッサ上で動作するプログラムにより、前記CPUが前記メモリに対してアクセスしたアクセス状況を示すデータを、トレース情報として取得するメモリアクセストレース情報取得装置であって、
    前記CPUの前記メモリに対するアクセスアドレスを取得するアクセスアドレス取得部と、
    取得した前記アクセスアドレスを格納するアクセスアドレス格納部と、
    前記アクセスアドレス格納部に格納したアクセスアドレスと一つ前の前記アクセスアドレスとのオフセット値を1つ以上計算するオフセット値計算部と、
    前記オフセット値を1つ以上計算した結果を示すオフセット値群を格納するオフセット値格納部と、
    前記オフセット値格納部に格納したオフセット値群とそれ以前に計算された前記オフセット値群と比較して、一致するか否かを判定するオフセット値比較部と、
    前記オフセット値群がそれ以前に計算された前記オフセット値群と一致すると判定した場合に、一致した回数をカウントするカウンタと、
    前記オフセット値群がそれ以前に計算された前記オフセット値群と一致しないと判定した場合に、前記カウンタの値を出力するトレース情報出力部と、
    を有するメモリアクセストレース情報取得装置。
  8. 請求項7に記載のメモリアクセストレース情報取得装置であって、
    前記オフセット値比較部は、前記オフセット値格納部に格納したオフセット値と一つ前の前記オフセット値と比較して、一致するか否かを判定し、
    前記カウンタは、前記オフセット値が一つ前の前記オフセット値と一致すると判定した場合に、一致した回数をカウントし、
    前記トレース情報出力部は、前記オフセット値が一つ前の前記オフセット値と一致しないと判定した場合に、前記アクセスアドレス、前記オフセット値、及び前記カウンタの値を出力するメモリアクセストレース情報取得装置。
  9. 請求項7に記載のメモリアクセストレース情報取得装置であって、
    前記CPUの前記プログラムを実行するイベントを検出するイベント検出部を有し、
    前記オフセット値格納部は、検出した前記イベント間における前記オフセット値を格納するオフセット値バッファおよび前記オフセット値群を示すパターンを格納するパターンバッファを有し、
    前記オフセット値比較部は、前記オフセット値バッファに格納した前記オフセット値と前記パターンバッファ格納したパターンを比較して、一致するか否かを判定し、
    前記カウンタは、前記オフセット値バッファの内容が前記パターンと一致すると判定した場合に、一致した回数をカウントし、
    前記トレース情報出力部は、前記オフセット値バッファの内容が前記パターンと一致しないと判定した場合に、前記パターン及び前記前記カウンタの値を出力するメモリアクセストレース情報取得装置。
  10. 請求項1ないし6のいずれかに記載のメモリアクセストレース情報取得方法の各ステップをコンピュータに実行させるためのプログラム。
  11. 請求項10に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2006344541A 2006-12-21 2006-12-21 メモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体 Withdrawn JP2008158662A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006344541A JP2008158662A (ja) 2006-12-21 2006-12-21 メモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006344541A JP2008158662A (ja) 2006-12-21 2006-12-21 メモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体

Publications (1)

Publication Number Publication Date
JP2008158662A true JP2008158662A (ja) 2008-07-10

Family

ID=39659519

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006344541A Withdrawn JP2008158662A (ja) 2006-12-21 2006-12-21 メモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体

Country Status (1)

Country Link
JP (1) JP2008158662A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095601A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction for element offset calculation in a multi-dimensional array
US9489196B2 (en) 2011-12-23 2016-11-08 Intel Corporation Multi-element instruction with different read and write masks
US9996350B2 (en) 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095601A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction for element offset calculation in a multi-dimensional array
CN104081341A (zh) * 2011-12-23 2014-10-01 英特尔公司 用于多维数组中的元素偏移量计算的指令
US9489196B2 (en) 2011-12-23 2016-11-08 Intel Corporation Multi-element instruction with different read and write masks
US9507593B2 (en) 2011-12-23 2016-11-29 Intel Corporation Instruction for element offset calculation in a multi-dimensional array
CN104081341B (zh) * 2011-12-23 2017-10-27 英特尔公司 用于多维数组中的元素偏移量计算的指令
US10025591B2 (en) 2011-12-23 2018-07-17 Intel Corporation Instruction for element offset calculation in a multi-dimensional array
US10037208B2 (en) 2011-12-23 2018-07-31 Intel Corporation Multi-element instruction with different read and write masks
US9996350B2 (en) 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US10656944B2 (en) 2014-12-27 2020-05-19 Intel Corporation Hardware apparatus and methods to prefetch a multidimensional block of elements from a multidimensional array

Similar Documents

Publication Publication Date Title
EP1130518B1 (en) Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof
Korel et al. Application of Dynamic Slicing in Program Debugging.
KR101581001B1 (ko) 프로그램의 동적 분석 방법 및 그 장치
EP3387536B1 (en) Method and device for non-intrusively collecting function trace data
US9836379B2 (en) Method and system for generating a memory trace of a program code executable on a programmable target
KR20120031834A (ko) 인스트루먼테이션 장치 및 방법
US20100083237A1 (en) Reducing trace overheads by modifying trace operations
GB2454263A (en) Generating debug information from low level program code
US8448147B2 (en) Heterogenic Coverage Analysis
US20010025295A1 (en) Computer system, memory management method, storage medium and program transmission apparatus
KR20180039830A (ko) 코드 재사용 공격 탐지 장치 및 그 방법
US6678884B1 (en) Method for determining the status of variables during the execution of optimized code
CN105550575A (zh) 一种未导出的函数地址和数据结构偏移的获取方法及装置
US9442826B2 (en) Kernel functionality checker
JP2017167984A (ja) 情報処理装置、情報処理プログラムおよび検査システム
JP2008158662A (ja) メモリアクセストレース情報取得方法、メモリアクセストレース情報取得装置、メモリアクセストレース情報取得プログラム、及び記録媒体
US8756580B2 (en) Instance-based field affinity optimization
US20170364054A1 (en) Numerical controller and variable determining method
WO2002001357A2 (en) A method for allowing execution management of optimized code
EP3379418B1 (en) Trace data representation
CN113439271B (zh) 受保护操作处理
JP2008250838A (ja) ソフトウェア生成装置、方法、およびプログラム
Ha et al. Efficient On-the-fly Detection of First Races in Nested Parallel Programs0
JP2004030514A (ja) 性能解析方法
CN120407353A (zh) 一种查询函数执行时长的方法、装置以及计算机设备

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20100302