JP5029245B2 - プロファイリング方法及びプログラム - Google Patents

プロファイリング方法及びプログラム Download PDF

Info

Publication number
JP5029245B2
JP5029245B2 JP2007243478A JP2007243478A JP5029245B2 JP 5029245 B2 JP5029245 B2 JP 5029245B2 JP 2007243478 A JP2007243478 A JP 2007243478A JP 2007243478 A JP2007243478 A JP 2007243478A JP 5029245 B2 JP5029245 B2 JP 5029245B2
Authority
JP
Japan
Prior art keywords
interrupt
program
target
information
profiling
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.)
Expired - Fee Related
Application number
JP2007243478A
Other languages
English (en)
Other versions
JP2009075812A (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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor 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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2007243478A priority Critical patent/JP5029245B2/ja
Priority to US12/210,552 priority patent/US20090083716A1/en
Publication of JP2009075812A publication Critical patent/JP2009075812A/ja
Application granted granted Critical
Publication of JP5029245B2 publication Critical patent/JP5029245B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis

Landscapes

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

Description

本発明は、プロファイリング方法及びプログラムに係り、特に所定の条件が満たされた際に発生する割り込みにより起動される割り込みハンドラによりプログラムの実行状況に関する情報を収集するプロファイリング方法及びプログラムに関する。
コンピュータシステムにおいて、性能分析や最適化等を行う手段としてプロファイリング手法が広く用いられている。プロファイリングは、ターゲットとするプログラムコードの走行頻度、時間分布、プログラム内部の呼出し頻度等の分析に有効である。プログラムを動作マシンで動作させてプロファイリングする手法には、以下の2つ手法がある。
第1の手法は、コンパイラにプロファイリング用コードを挿入させ、実行情報を収集するプロファイリングである。第1の手法は、最も一般的に使用されているプロファイリング手法であり、コンパイラ製品に標準機能として実装されている。又、第1の手法においてデータの収集を効率化する方法が、例えば、特許文献1及び特許文献2にて提案されている。
第2の手法は、ハードウェアタイマ又はCPUの性能モニタリング機構を利用したサンプリングによるプロファイリングである。第2の手法では、一定の時間毎に、或いは、プロセッサや周辺回路で計測可能な実行命令数やキャッシュミス数のハードウェアカンウタ等が一定の回数に到達する毎に、サンプリング又はハードウェアイベントの割り込みを発生させ、割り込み処理として登録したプロファイリングプログラムで割り込み発生時の実行命令アドレス等を記録することで、統計的に最も時間を費やしたコード範囲や最も頻繁に実行されたコード範囲更に最もハードウェアイベントの発生したコード範囲等を抽出する。第2の手法は、例えば、非特許文献1及び非特許文献2にて提案されている。
尚、命令レベルシミュレータにより命令をトレースする手法も、例えば特許文献3にて提案されている。しかし、シミュレータで高アクセスコスト、即ち、実行サイクル数をシミュレートする場合、1命令ずつシミュレータでトレースするためシミュレーションに時間がかかり、シミュレータではアクセスレイテンシの遅延等の実機環境特有の問題に起因する正確な情報を取得できない等の問題があった。
特開平11−212837号公報 特開2003−140928号公報 特開平7−191882号公報 「OProfile − A System Profiler for Linux」、[平成18年3月18日検索]、インターネット<URL: http://sourceforge.net/projects/oprofile/> 「インテル VTune パフォーマンス・アナライザ」、[平成18年3月18日検索]、インターネット<URL:http://www.intel.com/cd/software/products/ ijkk/jpn/vtune/index.htm>
シミュレータではなくプログラムを動作マシンで動作させてプログラムの実行状況に関する情報を取得するプロファイリング手法の場合、以下の如き問題があった。
上記第1の手法の場合、対象とするコード全般にプロファイリング用処理が付加されるために時間的オーバヘッドが生じるか、或いは、コード挿入のために本来のプログラムバイナリと動作的、メモリ配置的に差異が生じてしまった。特に、通信等のタイミングが重要なプログラムでは本来の動作と異なる場合が多く、必要精度により使用が制限される場合があった。
又、上記第2の手法の場合、対象とするコードに対する改変は必要ないためオーバヘッドの問題やメモリ配置の問題は抑制可能である。しかし、この第2の手法はプロファイリングプログラムで割り込み発生時の実行命令アドレス等を記録する領域の確保が必要であり、組み込み装置等の場合のようにメモリ資源が乏しい環境では実現できていなかった。
そこで、本発明は、少ないオーバヘッドでプログラムの実行状況に関する詳細な情報の収集を可能とするプロファイリング方法及びプログラムを提供することを目的とする。
上記の課題は、所定の条件が満たされた際に発生する割り込みにより起動される割り込みハンドラにより情報収集の対象となる対象プログラムの実行状況に関する情報を収集するコンピュータによるプロファイリング方法であって、該対象プログラムに対して該割り込みハンドラにより情報収集を行うターゲット範囲を指定するターゲット範囲指定ステップと、該ターゲット範囲で該割り込みが発生した際に該割り込みハンドラにより収集される情報をメモリに設定する情報設定ステップとを含むことを特徴とするプロファイリング方法により達成できる。
上記の課題は、コンピュータに、所定の条件が満たされた際に発生する割り込みにより起動される割り込みハンドラにより情報収集の対象となる対象プログラムの実行状況に関する情報を収集するプロファイリングを行わせるプログラムであって、該対象プログラムに対して該割り込みハンドラにより情報収集を行うターゲット範囲を指定させるターゲット範囲指定手順と、該ターゲット範囲で該割り込みが発生した際に該割り込みハンドラにより収集される情報をメモリに設定させる情報設定手順とを該コンピュータに実行させることを特徴とするプログラムにより達成できる。
本発明によれば、組み込み装置等のメモリ資源が乏しいメモリ制約が大きい装置においても少ないオーバヘッドでプログラムの実行状況に関する詳細な情報の収集を可能とするプロファイリング方法及びプログラムを実現することができる。
本発明のプロファイリングは、所定の条件が満たされた際に発生する割り込みにより起動される割り込みハンドラにより情報収集の対象となるプログラムの実行状況に関する情報を収集する。具体的には、プロファイリングは、割り込みハンドラにより情報収集を行うターゲット範囲を指定し、指定されたターゲット範囲で割り込みが発生した際に割り込みハンドラにより収集される情報を設定する。
例えば、ハードウェアカウンタの、データキャッシュミス発生のハードウェアイベントを使用すれば、キャッシュミスの発生した命令で割り込みが発生するため、キャッシュミスの命令を解析してキャッシュミスのアクセス先を解析することができる。
本発明によれば、組み込み装置等のメモリ資源が乏しい等のメモリ制約が大きい装置においても、全ての実行プログラムについて、若しくは、一部の実行プログラムについてプロファイリング対象を絞り込むことで実行頻度情報を取得でき、従来は取得できなかったチューニング情報の取得が可能となる。又、実行プログラムの少なくとも一部について、ハードウェアタイマやハードウェアイベントに着目したプロファイリング対象を絞り込むことで、イベント情報を取得でき、従来は取得できなかったチューニング情報の取得が可能となる。更に情報収集の対象となるプログラムにプロファイリングプログラムをリンクする時に測定対象を絞り込めるため、プログラムの再翻訳が不要となり、プロファイリングを容易に行なうことができると共に、利用者の負担も軽減できる。
以下に、本発明のプロファイリング方法及びプログラムの各実施例を図面と共に説明する。
先ず、本発明が適用可能な電子装置の構成を、図1乃至図3と共に説明する。
図1は、本発明が適用可能な電子装置の構成を示す図である。図1に示すように、電子装置1は、コンピュータハードウェア(又は、プロセッサ)10と、オペレーティングシステム20と、アプリケーションプログラム(又は、実行形式ファイル)30と、プロファイリングプログラム100とが連携して情報を収集する構成を有する。尚、オペレーティングシステムのない環境でもオペレーティングシステムの代替機構を用意することで本発明は実現できる。そのため以降の説明では、オペレーティングシステム20のある例を示す。電子装置1の基本構成は、周知の汎用コンピュータシステムと同様の基本構成を採用可能である。
コンピュータハードウェア10は、プロファイリングプログラム100を含めてプログラムを実行する装置であり、オペレーティングシステム20により設定された条件が満たされた場合、即ち、オペレーティングシステム20により指定されたイベントが発生した場合に割り込みを発生して予め登録された割り込み処理プログラムを実行する。コンピュータハードウェア10は、CPU等のプロセッサで構成されたプロセッサコアと、ハードウェアカウンタと、内蔵タイマと、キャッシュメモリ等の記憶部を有する。
オペレーティングシステム20は、コンピュータハードウェア10のリソースを管理し、アプリケーションプログラム30の実行制御等を行う制御プログラムであり、コンピュータハードウェア10に対して割り込み発生イベントの設定等を行う。
アプリケーションプログラム30は、情報収集の対象(又は、チューニング対象)となるプログラムであり、プロファイリングプログラム100が提供するAPIを用いてライブラリ関数(又は、プロファイリング開始関数)を呼び出すことにより情報収集に必要な処理を実行する。本実施例では、アプリケーションプログラム30に、割り込みハンドラ140を含むプロファイリングプログラム100と、コード範囲マーク用シンボルソース又はオブジェクトを連携(即ち、リンク)させる。このとき、プロファイリングしたいプログラムや関数のみを、ターゲット範囲(又は、測定範囲)として任意に抽出して指定する。ターゲット範囲は、コード範囲マーク用シンボルで対象のコード部を挟むことで指定する。プロファイリングでは、対象のコード部と同じサイズのメモリがコンピュータハードウェア10内に必要となるため、このようにターゲット範囲を指定することにより、たとえ電子装置1がメモリ資源が乏しい等のメモリ制約が大きい組み込み装置であっても、ターゲット範囲を絞ったプロファイリングが可能となる。
尚、以下の説明では、プロファイリング値を格納するメモリ内の領域がコードサイズと同じサイズであり、プロファイリング値を格納する領域サイズと1命令コードサイズが同じである場合を例に取るが、本発明の適用はそのような場合に限られるものではない。つまり、命令の長さにかかわらず、命令毎に対応するプロファイリング値を格納する領域を用意すれば良い。
プロファイリングプログラム100は、アプリケーションプログラム30の情報収集を行うプログラムであり、初期処理ルーチン110と、ターゲット範囲指定インタフェース120と、イベント設定インタフェース130と、割り込みハンドラ140と、イベント管理テーブル150と、割り込みハンドラ記録テーブル160とを有する。本発明のプログラムは、本実施例ではこのプロファイリングプログラム100に相当する。又、本発明のプロファイリング方法は、本実施例ではこのプロファイリングプログラム100を実行するコンピュータによるものである。
初期処理ルーチン110は、オペレーティングシステム20に対して、サンプリング割り込みを発生するタイマの設定や、サンプリング割り込みが発生した際に起動される割り込みハンドラ140の登録等を依頼する。尚、サンプリング割り込み発生イベントとしては、タイマによる一定時間の経過の他に、一定回数の命令実行や一定回数の特定アドレスへのアクセス、更にキャッシュミス発生等のプロセッサ性能モニタリング機構が割り込みを発生するイベントを設定することができる。
ターゲット範囲指定インタフェース120は、アプリケーションプログラム30が測定開始を指定する開始指定APIにて実行される。ターゲット範囲指定インタフェース120は、情報収集のターゲット範囲として関数名或いは実行コードに付されたラベルが指定された場合、該当関数(又は、ラベルを含む関数)の開始アドレスと終了アドレスを、スタートアップルーチンを含むオペレーティングシステム20及びアプリケーションプログラム30より取得してイベント管理テーブル150に登録する。本実施例では、上記の如く、アプリケーションプログラム30に、割り込みハンドラ140を含むプロファイリングプログラムと、コード範囲マーク用シンボルソース又はオブジェクトをリンクさせているので、プロファイリングしたいプログラムや関数のみを任意に抽出して指定することでもターゲット範囲を指定でき、たとえ電子装置1がメモリ制約の厳しい組み込み装置であってもターゲット範囲を絞ったプロファイリングが可能となる。
イベント設定インタフェース130は、アプリケーションプログラム30からイベント値に関する引数を受け取り、情報収集のターゲット範囲に対するイベント値を設定するライブラリ関数であり、アプリケーションプログラム30がイベント値の指定に使用するAPIを提供する。
ここで、イベントとは、情報収集のターゲット範囲内で割り込みハンドラ140が起動された場合に割り込みハンドラ140により収集される値に関連する属性(変数)である。又、イベント値としては複数の値を設定することができる。このイベント設定インタフェース130が、アプリケーションプログラム30からイベント値に関する引数として受け取り、情報収集のターゲット範囲に対するイベント値を設定することにより、アプリケーションプログラム30の実行状況に関する様々な情報を収集することができる。たとえば一定時間ごとの割り込みを発生させる場合、イベントの属性としては割り込み間隔を指定する。アプリケーションプログラム30から、開始指定APIのパラメタとして割り込み間隔を指定する。
割り込みハンドラ140は、タイマによるサンプリング割り込みやプロセッサ性能モニタリング機構によるサンプリング割り込みにより起動され、割り込み発生時の実行アドレスを割り込みハンドラ記録テーブル160に記録する割り込み処理プログラムであり、イベント管理テーブル150に登録された情報収集のターゲット範囲内で起動されると、割り込み発生時の実行アドレスに対応するイベント値を割り込みハンドラ記録テーブル160に記録する。たとえば一定時間に割り込みを発生させる場合では、割り込み発生のプログラムカウンタに対応させた領域に、割り込み回数を割り込み記録テーブル160に格納する。
イベント管理テーブル150は、アプリケーションプログラム30の情報収集に関する情報を格納する。図2は、イベント管理テーブル150の一例を示す図である。図2に示すように、このイベント管理テーブル150は、アプリケーションプログラム30の情報収集のターゲット範囲毎に、ターゲット範囲の開始アドレスと、ターゲット範囲の終了アドレスと、イベント値を対応させて格納する。
例えば、情報収集のターゲット範囲は、開始アドレスが「1000」であり、終了アドレスが「2000」であり、ターゲット範囲内で割り込みハンドラ140が起動されると割り込みハンドラ140によりイベントとして割り込み回数が情報として収集される。
割り込みハンドラ記録テーブル160には、サンプリング割り込みにより割り込みハンドラ140が起動された場合に割り込みハンドラ140により収集された情報が記録される。図3は、割り込みハンドラ記録テーブル160の一例を示す図である。図3に示すように、この割り込みハンドラ記録テーブル160には、サンプリング割り込みが発生した時点で、割り込み時実行アドレスが情報収集のターゲット範囲内である場合にアプリケーションプログラム30の実行アドレスである割り込み時実行アドレスに対応付けられたイベント値(例えば割り込み回数)が記録される。収集した情報の詳細な方法は、図6での51Bで示す方法で格納する。
例えば、サンプリング割り込みが発生した時点でのアプリケーションプログラム30の実行アドレスが「1200」である場合、図2に示した情報収集のターゲット範囲がイベント管理テーブル150の測定範囲であると、割り込み時実行アドレスが情報収集のターゲット範囲となるので、実行アドレス「1200」に対応付けられたとイベント値(割り込み回数)として「+1」した値が記録される。
次に、本実施例の処理手順を、図4と共に説明する。図4は、本実施例の処理手順を説明するフローチャートである。図4に示すように、このプロファイリングシステムにおいて、ステップS101では、プロファイリングプログラム100の初期処理ルーチン110がタイマ設定等のサンプリング割り込み発生イベントに関する設定及び割り込みハンドラ140の登録をオペレーティングシステム20に対して依頼する(オペレーティングシステムのない環境では、代わりに登録する)。
ステップS102では、オペレーティングシステム20が、タイマ設定等のサンプリング割り込み発生に必要な設定をコンピュータハードウェア10に対して行う(オペレーティングシステムのない環境では、代わりに設定する)。これにより一定の時間毎に、或いは、プロセッサイベントの一定回数毎等にサンプリング割り込みが発生し、割り込みハンドラ140が呼ばれる。
ステップS103では、アプリケーションプログラム30がユーザにより埋め込まれたターゲット範囲指定インタフェース120の呼出しを行うと、ターゲット範囲指定インタフェース120は、情報収集のターゲット範囲に関する情報をイベント管理テーブル150に登録する。
ステップS104では、アプリケーションプログラム30がユーザにより経路情報、変数状態等のイベントへの設定のためにイベント設定インタフェース130の呼出しを行うと、イベント設定インタフェース130はイベント値をイベント管理テーブル150に記録する。尚、ユーザは、イベント値の対象となる情報収集の範囲を指定する。
ステップS105では、タイマ割り込み等により割り込みハンドラ140が起動されると、割り込みハンドラ140は、割り込み時実行アドレスを割り込みハンドラ記録テーブル160に記録し、そのアドレスが情報収集のターゲット範囲内であればアドレスに対応するイベント値を記録する。
このように、イベント設定インタフェース130がイベント値をイベント管理テーブル150に記録し、割り込みハンドラ140が割り込み時実行アドレスが情報収集のターゲット範囲内であればイベント値を割り込みハンドラ記録テーブル160に記録することにより、イベント値に設定された経路情報や変数状態等の詳細な情報を収集することができる。イベント管理テーブル150や割り込みハンドラ記録テーブル160内のデータは、コンピュータハードウェア10内のメモリに格納される。
メモリに格納してあるサンプリング値を含むデータは、電子装置1に接続可能な外部装置である解析プロセッサ(図示せず)のデバッガ等に取り込まれる。デバッガ等により取得されたサンプリング値を格納したデータとアプリケーションプログラム30のシンボル情報を照らし合わせるプログラムにより、高コスト関数、高コスト処理や高コスト命令毎にサンプリング値が解析プロセッサの表示部に表示される。これにより、アプリケーションプログラム30でのボトルネック箇所を特定することができる。
次に、プロファイリングのターゲット範囲の指定方法とサンプリング値のメモリ内の格納領域について、より詳細に説明する。
上記の如く、本実施例では、プロファイリングはサンプリングしたアドレスではなく、対応するアドレスのカウント値を設定する。又、アプリケーションプログラム30にプロファイリングプログラム100をリンクする際に、指定したコード範囲マーク用シンボルを設定する。このコード範囲マーク用シンボルのシンボル名は任意であり、例えばTOP_LABEL,BOTTOM_LABELをコード部配置領域の開始位置及び終端位置のアドレスとする。TOP_LABEL,BOTTOM_LABELを定義したソース又はオブジェクトを、情報収集の対象となるアプリケーションプログラム30のプロファイリングプログラム100へのリンク時に結合する。
情報を収集したいアプリケーションプログラム30の箇所は、モジュール又は関数単位でセクションに出力され、コンパイラで自動的に出力されるか、或いは、ユーザが明示的にセクションの切り分けを行なう。尚、全てのコード部を1つのターゲット範囲に設定することもできる。
上記リンク時のターゲット範囲の指定(リンクコマンド文字列)は、例えば次の通りである。
(a) -sc TOP_LABEL,*/code, BOTTOM_LABEL,...,*,WORK_AREA
(b) -sc TOP_LABEL=0x00000100,BOTTOM_LABEL=0x00001100,WORK_AREA=0x01000000
リンク時のターゲット範囲の指定(GUI指定方法)は、例えば図5に示すようになる。図5は、セクション名を表示したリスト一覧から、TOP_LABEL (S)とBOTTOM_LABEL(E)を指定する場合を示す。
上記の方法では、ユーザがリンク時に情報収集する対象となるアプリケーションプログラム30を設定する。ユーザは、アプリケーションプログラム30で使用するサンプリング割り込み回数の格納領域のサイズと、このチューニング対象となるアプリケーションプログラム30を見極める必要がある。通常、チューニングすべきプログラムは判明しており、又、不明な場合でも範囲を順次絞ることでチューニング対象を絞ることができる。
上記の如く、プロファイリングプログラム100をリンクしたアプリケーションプログラム30は、電子装置1の実装環境において実行される。プロファイリングプログラム100の割り込みハンドラ140では、内蔵タイマの割り込み毎にプログラムカウンタやプロセッサ状態を示すハードウェアカウンタの値をメモリに格納する。割り込み処理とサンプリング値の格納方法と、サンプリング値が格納されるメモリの領域の関係は、例えば図6に示すようになっている。図6は、プロファイリングのターゲット範囲の指定方法とサンプリング値のメモリ内の格納領域を説明する図である。図6中、51Aはコンピュータハードウェア10のメモリ内のコード部配置領域、51Bはコンピュータハードウェア10のメモリ内の書き込み可能領域(即ち、ワークエリア)である。
ステップS1では、サンプリング割り込みを発生するタイマを起動する。ステップS2では、割り込み回数カウント領域を、ターゲット範囲のサイズL分だけゼロクリアする。ここで、Lは次式に示すようにシンボルアドレスの差から求める。
L=(BOTTOM_LABELのアドレス)−(TOP_LABELのアドレス)
ステップS3では、起動されたタイマにより一定間隔で割り込み発生させる。割り込み間隔は、開始指定APIで指定する。ステップS4では、コード部配置領域51Aの開始位置TOP_LABELのアドレスからの相対アドレスαを求め、書き込み可能領域51Bの先頭からこの相対アドレスαに対応する位置に割り込み回数データを「+1」だけインクリメントしたデータを格納する。ステップS5では、タイマを終了し、メモリにある割り込み回数データがデバッガ等に取り込まれる。
尚、本発明は、プロセッサ内部のイベント又はプロセッサ外部とのやり取りのイベントをカウントすることによりプロセッサ性能をモニタリングするハードウェアカウンタを有するプロセッサにも適用することができる。この場合、上記の如き一定時間毎に発生する割り込みを情報収集のトリガとしても良く、更に、ハードウェアカウンタの任意のイベント発生時の状態をトリガとしても良い。具体的には、プロセッサの実行サイクル数を指標として情報を取得するケースを、ハードウェアカウンタの例えばデータキャッシュミス発生イベントに置き換える。この場合、キャッシュミスの発生した命令で割り込みが発生するため、キャッシュミスの命令を解析してキャッシュミスのアクセス先を解析することができる。このように、一定時間で発生するハードウェアカウンタやハードウェアカウンタのハードウェアイベントの発生をトリガにしても良い。
ハードウェアイベントの発生は、キャシュミス数、TLB(Translation Lookaside Buffer)ミス数、実行命令数、実行命令並列度、分岐命令数、パイプラインストール要因、レジスタ干渉サイクル数、バスアクセス情報等のプロセッサのハードウェア情報を取得するためのイベントカウンタをプロセッサ側に設けることで検出可能である。
図7は、タイマ割り込み発生時の処理を説明するフローチャートである。図7において、タイマ割り込みが発生すると、ステップS11は、今回のタイマ割り込み時のプログラムカウンタ(PC)の値を求める。ステップS12は、プログラムカウンタの値がターゲット範囲内であるか否か、即ち、(開始位置TOP_LABEL)<PC<(終了位置BOTTOM_LABEL)であるか否かを判定する。ステップS12の判定結果がYESであると、ステップS13は、開始位置TOP_LABELのアドレスからの相対アドレスαを求め、書き込み可能領域の先頭からその相対アドレスαに対応する位置に割り込み回数データを「+1」だけインクリメントしたデータを格納し、処理は呼び出し元に復帰する。
図8は、解析プロセッサの処理を説明するフローチャートである。解析プロセッサ(図示せず)が電子装置1に接続されて解析処理が開始されると、図8において、ステップS21は、アプリケーションプログラム30の割り込みアドレスと割り込み回数を電子装置1内のメモリから取り込む。ステップS22は、電子装置1内のメモリに格納されているプログラム定義や割り込み回数等を読み取って、プログラム位置と割り込み回数をグラフ等の形式で解析プロセッサの表示部に表示する。プログラム位置は、対応するソースプログラムの関数名と照合して表示される。プログラム位置とソースプログラムの関数名の対応付けには、プログラムファイルのシンボル情報やデバッグ情報等を利用可能である。このようにして、例えば図9に示す如きプロファイリングの結果が表示される。
図9は、プロファイリングの結果の表示例を示す図である。図9中、ウィンドウW1内の「38422」等の値は割り込み回数を示し、「FuncE」等は関数、「184」はメモリ領域のサイズを示す。例えば、ウィンドウW1内の関数をダブルクリックすることで、対応するCソースやアセンブラソースウィンドウW2に分岐する。アセンブラソースウィンドウW2内には、アドレスと対応する割り込み検出回数、関数FuncE内での情報収集対象プログラムの実行頻度(即ち、実行状況)が表示されている。図9に示す表示例の場合、割り込みが高頻度の関数順に表示がなされ、関数内でのアセンブラ命令単位にアクセスコスト、即ち、割り込み回数が表示され、対応する関数、命令位置をクリック等で照合することで対応するCソースやアセンブラソースウインドウ(デバッガ、エディタ、ツール等)に分岐することができる。
図8の説明に戻るに、ステップS23は、アクセスコスト、即ち、割り込み回数を、データ定義位置に対して例えば図8に示す如きグラフ形式で表示する。データ定義位置は、ソース名S、関数名F、変数V、アドレスA等で特定可能である。この場合、XXXXXXで示すアドレス近傍でアクセスコストが大きいことがわかる。
このようにして、割り込みハンドラ140により収集されるサンプリング値及び任意のハードウェアイベント情報を、命令毎に対応付けた領域に実行回数として設定することができる。又、割り込みハンドラ140により、収集されたサンプリング値を実行形式プログラムと照合することにより、実行頻度の高い関数、処理及び命令を対比させ、又、対応するCソースや機械語命令と照合して表示することもできる。更に、割り込みハンドラ140により収集されるサンプリング値及び任意のハードウェアイベント情報をマージすることで、これらの情報を取得する毎にマージされた値を経験値としてメモリに保持することで、プロファイリングの精度を向上させることもできる。
図10は、コンピュータハードウェアと解析プロセッサを示すブロック図である。
図10は、測定用プロセッサ201は、図1に示すコンピュータハードウェア10に相当する。測定用プロセッサ201は、各種命令を処理するプロセッサコア211、データを保持するキャッシュメモリ212、測定用プロセッサ201内部のイベント及び/又は測定用プロセッサ201外部とのやり取りのイベントをカウントすることにより性能をモニタリングするハードウェアカウンタ213、一定間隔で割り込み信号を出力する内蔵タイマ214を有する。キャッシュメモリ212は、測定用プロセッサ201に対して外部接続されていても良い。
記憶部202は、解析対象プログラム221、プロファイリングプログラム222、及び検出命令アドレス又はハードウェアカウンタ213のカウント値に基づく割り込み回数を格納するテーブル223を保持する。解析対象プログラム221はプロファイリングされるソフトウェアであり、図1に示すアプリケーションプログラム30に相当する。プロファイリングプログラム222は、解析対象プログラム221のプロファイル情報を取得するソフトウェアであり、図1に示すプロファイリングプログラム100に相当する。測定用プロセッサ201、記憶部202及び性能解析プロセッサ203はバス300で夫々接続されている。
タイマ214は、解析対象プログラム221の実行が開始されてから所定時間間隔で割り込み信号を出力する。この割り込み信号の所定時間間隔は、プロファイリングプログラム222で設定可能である。割り込み発生を検出した命令アドレス又はハードウェアカウンタ213のイベント発生をトリガとして、ハードウェアカウンタ213の割り込み発生を検出した命令アドレスがテーブル223に格納される。ハードウェアカウンタ213は、タイマ214と同様に解析対象プログラム221の実行が開始されると同時に計数を開始する。テーブル223は、解析対象プログラム221の性能解析中に作成される。解析プロセッサ203は、測定用プロセッサ201における実行結果を表示する、測定用プロセッサ201と別体のプロセッサである。解析プロセッサ203は、テーブル223の保持された情報を読み出して、ソース名、関数、変数名、変数内相対アドレスに対応させて図8及び図9の如き表示を行う。
更に、情報収集の対象となるアプリケーションプログラム30(解析対象プログラム221)を自動的に絞るようにしても良い。この場合、情報収集の対象となるアプリケーションプログラム30を、シミュレータで取得したプロファイル情報を基に、実行コストの大きいプログラムからプロファイル対象候補として抽出すれば良い。又、ソースコードを関数の複雑度や、関数間の呼び出し関係等の静的解析情報の大小によりプロファイル対象を抽出しても良い。
図11は、プロファイリングのターゲット範囲を自動抽出する処理を説明するフローチャートである。図11において、ステップS31では、ユーザがプロファイリングの対象を判断できているか否かを判定する。ステップS31の判定結果がYESであると、ステップS32では、ユーザがプロファイリングの対象となるアプリケーションプログラム30をプロファイリングプログラム100にリンクする時に指定し、処理は終了する。
他方、ステップS31の判定結果がNOであると、ステップS33では、コンピュータハードウェア10(即ち、プロセッサ)がプロファイリングの対象となるアプリケーションプログラム30を自動的に抽出する処理を開始する。ステップS34では、コンピュータハードウェア10のメモリ内の使用可能なメモリサイズUMSを算出する。ステップS35では、コンピュータハードウェア10が使用可能なメモリサイズUMSに納まる範囲内でアプリケーションプログラム30のターゲット範囲を抽出し、プロファイリングの対象となるアプリケーションプログラム30をプロファイリングプログラム100にリンクする時に自動的にこのターゲット範囲を指定する。
ステップS35は、プロファイリングの対象となるアプリケーションプログラム30をシミュレータで取得したプロファイル情報を元に、実行コストの大きいプログラムからプロファイリングの対象候補として抽出する第1の方法を用いても、或いは、ソースコードを関数の複雑度や関数間の呼び出し関数等の静的解析情報の大小によりプロファイリングの対象候補を抽出する第2の方法を用いても良い。
尚、本発明は、以下に付記する発明をも包含するものである。
(付記1)
所定の条件が満たされた際に発生する割り込みにより起動される割り込みハンドラにより情報収集の対象となる対象プログラムの実行状況に関する情報を収集するコンピュータによるプロファイリング方法であって、
該対象プログラムに対して該割り込みハンドラにより情報収集を行うターゲット範囲を指定するターゲット範囲指定ステップと、
該ターゲット範囲で該割り込みが発生した際に該割り込みハンドラにより収集される情報をメモリに設定する情報設定ステップとを含むことを特徴とするプロファイリング方法。
(付記2)
該ターゲット範囲指定ステップは、該対象プログラムに、該割り込みハンドラを含むプロファイリングプログラムと、コード範囲マーク用シンボルソース又はオブジェクトをリンクさせる際に、該ターゲット範囲を指定することを特徴とする付記1記載のプロファイリング方法。
(付記3)
該割り込みは、該コンピュータ内部のイベント及び/又は該コンピュータ外部とのやり取りのイベントをカウントするハードウェアカウンタのカウント値に基づき発生することを特徴とする付記1又は2記載のプロファイリング方法。
(付記4)
該割り込みハンドラにより収集された情報に含まれるサンプリング値及びハードウェアイベント情報を、命令毎に対応付けた該メモリの領域に実行回数又はイベント発生回数として設定するステップを含むことを特徴とする付記1乃至3のいずれか1項記載のプロファイリング方法。
(付記5)
該割り込みハンドラにより収集された情報に含まれるサンプリング値を実行形式プログラムと照合し、実行頻度の高い関数、処理及び命令を対比し、対応するCソース又は機械語命令と照合して、該コンピュータに接続される解析プロセッサの表示部に表示するステップを含むことを特徴とする付記1乃至3のいずれか1項記載のプロファイリング方法。
(付記6)
該割り込みハンドラにより収集される情報に含まれるサンプリング値及びハードウェアイベント情報をマージして経験値として該メモリに保持するステップを含むことを特徴とする付記1乃至5のいずれか1項記載のプロファイリング方法。
(付記7)
コンピュータに、所定の条件が満たされた際に発生する割り込みにより起動される割り込みハンドラにより情報収集の対象となる対象プログラムの実行状況に関する情報を収集するプロファイリングを行わせるプログラムであって、
該対象プログラムに対して該割り込みハンドラにより情報収集を行うターゲット範囲を指定させるターゲット範囲指定手順と、
該ターゲット範囲で該割り込みが発生した際に該割り込みハンドラにより収集される情報をメモリに設定させる情報設定手順とを該コンピュータに実行させることを特徴とするプログラム。
(付記8)
該ターゲット範囲指定手順は、該対象プログラムに、該割り込みハンドラを含むプロファイリングプログラムと、コード範囲マーク用シンボルソース又はオブジェクトをリンクさせる際に、該ターゲット範囲を指定させることを特徴とする付記7記載のプログラム。
(付記9)
該割り込みは、該コンピュータ内部のイベント及び/又は該コンピュータ外部とのやり取りのイベントをカウントするハードウェアカウンタのカウント値に基づき発生することを特徴とする付記7又は8記載のプログラム。
(付記10)
該割り込みハンドラにより収集された情報に含まれるサンプリング値及びハードウェアイベント情報を、命令毎に対応付けた該メモリの領域に実行回数として設定させる手順を該コンピュータに実行させることを特徴とする付記7乃至9のいずれか1項記載のプログラム。
(付記11)
該割り込みハンドラにより収集された情報に含まれるサンプリング値を実行形式プログラムと照合させ、実行頻度の高い関数、処理及び命令を対比させ、対応するCソース又は機械語命令と照合させ、該コンピュータに接続される解析プロセッサの表示部に表示させる手順を該コンピュータに実行させることを特徴とする付記7乃至9のいずれか1項記載のプログラム。
(付記12)
該割り込みハンドラにより収集される情報に含まれるサンプリング値及びハードウェアイベント情報をマージして経験値として該メモリに保持させる手順を該コンピュータに実行させることを特徴とする付記7乃至11のいずれか1項記載のプログラム。
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
本発明が適用可能な電子装置の構成を示す図である。 イベント管理テーブルの一例を示す図である。 割り込みハンドラ記録テーブルの一例を示す図である。 実施例の処理手順を説明するフローチャートである。 リンク時のターゲット範囲の指定を説明する図である。 プロファイリングのターゲット範囲の指定方法とサンプリング値のメモリ内の格納領域を説明する図である。 タイマ割り込み発生時の処理を説明するフローチャートである。 解析プロセッサの処理を説明するフローチャートである。 プロファイリングの結果の表示例を示す図である。 コンピュータハードウェアと解析プロセッサを示すブロック図である。 プロファイリングのターゲット範囲を自動抽出する処理を説明するフローチャートである。
符号の説明
1 電子装置
10 コンピュータハードウェア
20 オペレーティングシステム
30 アプリケーションプログラム
100 ポロファイリングプログラム
140 割り込みハンドラ
201 測定用プロセッサ
202 メモリ
203 解析プロセッサ
211 プロセッサコア
212 キャッシュメモリ
213 ハードウェアカウンタ
214 内蔵タイマ
221 解析対象プログラム
222 プロファイリングプログラム
223 テーブル

Claims (6)

  1. 所定の条件が満たされた際に発生する割り込みにより起動される割り込みハンドラにより、情報収集の対象となる対象プログラムの割り込み発生時の実行アドレスに対応する情報を収集するコンピュータによるプロファイリング方法であって、
    前記対象プログラムに、前記割り込みハンドラを含むプロファイリングプログラムと、コード範囲マーク用シンボルソース又はオブジェクトをリンクさせる際に、前記対象プログラムに対して前記割り込みハンドラにより情報収集を行うターゲット範囲を指定するターゲット範囲指定ステップと、
    前記対象プログラムの割り込み発生時の実行アドレスが前記ターゲット範囲内であれば前記割り込みハンドラにより収集される当該実行アドレスに対応するイベントの値をメモリに設定する情報設定ステップと
    を含むことを特徴とするプロファイリング方法。
  2. 前記割り込みは、前記コンピュータ内部のイベント及び/又は前記コンピュータ外部とのやり取りのイベントをカウントするハードウェアカウンタのカウント値に基づき発生することを特徴とする請求項記載のプロファイリング方法。
  3. 前記対象プログラムの割り込み発生時の実行アドレスと割り込み回数と前記メモリに格納されているプログラム定義とに基づいて、プログラム位置と前記割り込み回数を、前記プログラム位置と対応するソースプログラムの関数名を対応付けて解析プロセッサの表示部に表示するステップ
    を更に含むことを特徴とする請求項1又は2記載のプロファイリング方法。
  4. 前記割り込みハンドラにより収集される情報に含まれる前記イベントの情報及びハードウェアイベントの情報をマージして経験値として前記メモリに保持するステップ
    を更に含むことを特徴とする請求項1乃至のいずれか1項記載のプロファイリング方法。
  5. コンピュータに、所定の条件が満たされた際に発生する割り込みにより起動される割り込みハンドラにより、情報収集の対象となる対象プログラムの割り込み発生時の実行アドレスに対応する情報を収集するプロファイリングを行わせるプログラムであって、
    前記対象プログラムに、前記割り込みハンドラを含むプロファイリングプログラムと、コード範囲マーク用シンボルソース又はオブジェクトをリンクさせる際に、前記対象プログラムに対して前記割り込みハンドラにより情報収集を行うターゲット範囲を指定させるターゲット範囲指定手順と、
    前記対象プログラムの割り込み発生時の実行アドレスが前記ターゲット範囲内であれば前記割り込みハンドラにより収集される当該実行アドレスに対応するイベントの値をメモリに設定させる情報設定手順と
    前記コンピュータに実行させることを特徴とするプログラム。
  6. 命令毎に対応付けた前記メモリの領域に、前記割り込みハンドラにより収集された情報に含まれる前記イベントの実行回数又はイベント発生回数、及びハードウェアイベントの実行回数又はイベント発生回数を設定させる手順
    前記コンピュータに実行させることを特徴とする請求項記載のプログラム。
JP2007243478A 2007-09-20 2007-09-20 プロファイリング方法及びプログラム Expired - Fee Related JP5029245B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007243478A JP5029245B2 (ja) 2007-09-20 2007-09-20 プロファイリング方法及びプログラム
US12/210,552 US20090083716A1 (en) 2007-09-20 2008-09-15 Profiling method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007243478A JP5029245B2 (ja) 2007-09-20 2007-09-20 プロファイリング方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2009075812A JP2009075812A (ja) 2009-04-09
JP5029245B2 true JP5029245B2 (ja) 2012-09-19

Family

ID=40473084

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007243478A Expired - Fee Related JP5029245B2 (ja) 2007-09-20 2007-09-20 プロファイリング方法及びプログラム

Country Status (2)

Country Link
US (1) US20090083716A1 (ja)
JP (1) JP5029245B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5326708B2 (ja) * 2009-03-18 2013-10-30 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8850402B2 (en) * 2009-05-22 2014-09-30 International Business Machines Corporation Determining performance of a software entity
WO2012155968A1 (en) * 2011-05-18 2012-11-22 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for enabling analysis of a computer program execution
US10282326B1 (en) * 2014-10-29 2019-05-07 Xilinx, Inc. Active interrupt handler performance monitoring in microprocessors
US9753731B1 (en) * 2015-01-16 2017-09-05 The Mathworks, Inc. Methods and systems for analyzing and improving performance of computer codes
JP6693308B2 (ja) * 2016-07-05 2020-05-13 富士通株式会社 負荷推定プログラム、負荷推定方法及び負荷推定装置
US10455188B2 (en) 2016-11-18 2019-10-22 Microsoft Technology Licensing, Llc Correlating UI with CPU stacks for profiling sessions
JP7415321B2 (ja) * 2019-01-18 2024-01-17 富士フイルムビジネスイノベーション株式会社 制御装置、及び制御プログラム
CN110851297B (zh) * 2019-11-08 2023-08-22 深圳市易检车服科技有限公司 一种接口抖动状态的处理方法、装置、系统及介质

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS593651A (ja) * 1982-06-30 1984-01-10 Fujitsu Ltd フア−ムウエアによる性能測定システム
JP2777496B2 (ja) * 1991-02-28 1998-07-16 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータシステムにおいてマルチプロセスをプロファイリングする際の使用方法
JPH04320548A (ja) * 1991-04-20 1992-11-11 Fujitsu Ltd 実行動作情報採取装置
JPH07191882A (ja) * 1993-12-27 1995-07-28 Nec Corp メモリアクセス頻度測定方式
JPH07219755A (ja) * 1994-02-03 1995-08-18 Fuji Electric Co Ltd データファイル内容の表示方法
EP0689141A3 (en) * 1994-06-20 1997-10-15 At & T Corp Disruption-based hardware support for system performance profiling
JPH096644A (ja) * 1995-06-16 1997-01-10 Hitachi Ltd ソフトウエアデバッグ方法
US6154857A (en) * 1997-04-08 2000-11-28 Advanced Micro Devices, Inc. Microprocessor-based device incorporating a cache for capturing software performance profiling data
US5974536A (en) * 1997-08-14 1999-10-26 Silicon Graphics, Inc. Method, system and computer program product for profiling thread virtual memory accesses
US6662358B1 (en) * 1997-12-12 2003-12-09 International Business Machines Corporation Minimizing profiling-related perturbation using periodic contextual information
JP3199013B2 (ja) * 1998-01-26 2001-08-13 日本電気株式会社 言語処理方法及び言語処理装置並びに言語処理プログラムを記録した記憶媒体
US6079032A (en) * 1998-05-19 2000-06-20 Lucent Technologies, Inc. Performance analysis of computer systems
US6493868B1 (en) * 1998-11-02 2002-12-10 Texas Instruments Incorporated Integrated development tool
US6345295B1 (en) * 1999-01-22 2002-02-05 International Business Machines Corporation Conducting traces in a computer system attachment network
US7013456B1 (en) * 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6374369B1 (en) * 1999-05-21 2002-04-16 Philips Electronics North America Corporation Stochastic performance analysis method and apparatus therefor
DE10036278A1 (de) * 2000-07-26 2002-02-07 Bosch Gmbh Robert Verfahren zur Überwachung eines Programmablaufs mittels einer Debug Logik
JP2002202900A (ja) * 2000-12-28 2002-07-19 Seiko Epson Corp デバッグ装置
GB0125628D0 (en) * 2001-10-25 2001-12-19 Ibm Computer system with watchpoint support
JP2003140928A (ja) * 2001-11-02 2003-05-16 Fujitsu Ltd 仮想マシン内部情報自動取得システム
US7194732B2 (en) * 2003-06-26 2007-03-20 Hewlett-Packard Development Company, L.P. System and method for facilitating profiling an application
US7373637B2 (en) * 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US7937691B2 (en) * 2003-09-30 2011-05-03 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
JP2005215816A (ja) * 2004-01-28 2005-08-11 Hitachi Ltd ハードウェアモニタを用いた性能プロファイリング方法
US20060059486A1 (en) * 2004-09-14 2006-03-16 Microsoft Corporation Call stack capture in an interrupt driven architecture
US7721268B2 (en) * 2004-10-01 2010-05-18 Microsoft Corporation Method and system for a call stack capture
US7716647B2 (en) * 2004-10-01 2010-05-11 Microsoft Corporation Method and system for a system call profiler
US7380241B2 (en) * 2004-12-07 2008-05-27 International Business Machines Corporation Scalable and improved profiling of software programs
US7640539B2 (en) * 2005-04-12 2009-12-29 International Business Machines Corporation Instruction profiling using multiple metrics
JP4832125B2 (ja) * 2006-03-15 2011-12-07 富士通セミコンダクター株式会社 性能解析装置、性能解析方法、性能解析プログラム、および記録媒体
JP4681491B2 (ja) * 2006-03-31 2011-05-11 富士通株式会社 プロファイリングプログラムおよびプロファイリング方法
US7895581B2 (en) * 2007-01-26 2011-02-22 Hewlett-Packard Development Company, L.P. Profiling collector for computer system
JP4940996B2 (ja) * 2007-02-23 2012-05-30 富士通セミコンダクター株式会社 プロファイリング装置およびプロファイリングプログラム
US8041901B2 (en) * 2007-03-05 2011-10-18 Freescale Semiconductor, Inc. Performance monitoring device and method thereof
US8074207B1 (en) * 2007-05-31 2011-12-06 Adobe Systems Incorporated Application profiling

Also Published As

Publication number Publication date
US20090083716A1 (en) 2009-03-26
JP2009075812A (ja) 2009-04-09

Similar Documents

Publication Publication Date Title
JP5029245B2 (ja) プロファイリング方法及びプログラム
JP4681491B2 (ja) プロファイリングプログラムおよびプロファイリング方法
US8490061B2 (en) Profiling application performance according to data structure
US8024719B2 (en) Bounded hash table sorting in a dynamic program profiling system
Shen et al. Cudaadvisor: Llvm-based runtime profiling for modern gpus
Pourghassemi et al. What-if analysis of page load time in web browsers using causal profiling
Liu et al. Pinpointing data locality problems using data-centric analysis
US20060230390A1 (en) Instruction profiling using multiple metrics
Moseley et al. Identifying potential parallelism via loop-centric profiling
EP3835944B1 (en) Apparatus and method for source code optimisation
Liu et al. Pinpointing data locality bottlenecks with low overhead
Wang et al. Featherlight reuse-distance measurement
Doray et al. Diagnosing performance variations by comparing multi-level execution traces
US20080209403A1 (en) Profiling apparatus and profiling program
Schulz et al. Owl: next generation system monitoring
US8612952B2 (en) Performance optimization based on data accesses during critical sections
Moseley et al. Hardware performance monitoring for the rest of us: a position and survey
US7735073B1 (en) Method and apparatus for data object profiling
JP6544054B2 (ja) 情報処理装置、実行情報記録プログラムおよび実行情報記録方法
US8261245B2 (en) Method and system for associating profiler data with a reference clock
Bai et al. A framework for calculating WCET based on execution decision diagrams
US20110239197A1 (en) Instance-based field affinity optimization
US7827543B1 (en) Method and apparatus for profiling data addresses
Botezatu A study on compiler flags and performance events
JP6834457B2 (ja) エミュレーション性能算出装置、エミュレーション性能算出システム、エミュレーション性能算出方法、および、エミュレーション性能算出プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100430

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110809

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111101

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111227

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120502

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120510

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120611

R150 Certificate of patent or registration of utility model

Ref document number: 5029245

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150706

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees