JP2595718B2 - In-circuit emulator - Google Patents
In-circuit emulatorInfo
- Publication number
- JP2595718B2 JP2595718B2 JP1152974A JP15297489A JP2595718B2 JP 2595718 B2 JP2595718 B2 JP 2595718B2 JP 1152974 A JP1152974 A JP 1152974A JP 15297489 A JP15297489 A JP 15297489A JP 2595718 B2 JP2595718 B2 JP 2595718B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- stack
- time
- pointer
- break
- 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 - Lifetime
Links
Landscapes
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
【発明の詳細な説明】 〈産業上の利用分野〉 本発明は、インサーキットエミュレータに関し、詳し
くはソフトウェア性能評価機能の改善に関する。DETAILED DESCRIPTION OF THE INVENTION <Industrial Application Field> The present invention relates to an in-circuit emulator, and more particularly to an improvement in a software performance evaluation function.
〈従来の技術〉 マイクロプロセッサ用インサーキットエミュレータ
は、マイクロプロセッサ応用機器の開発およびデバッグ
を行なう際に用いられる。このインサーキットエミュレ
ータは、ターゲットマイクロプロセッサを1命令ごとに
停止させながら実行させターゲットプログラムのデバッ
グを行なう機能を持っている。そして近年の高級言語
(例えば、C言語)の普及により、高級言語でのソース
行ごとに停止させながら実行させ、高級言語レベルのデ
バッグを行なうことができる機能を持つものも出現して
いる。<Prior Art> A microprocessor in-circuit emulator is used when developing and debugging a microprocessor application device. This in-circuit emulator has a function of executing a target microprocessor while stopping it for each instruction and debugging the target program. With the spread of high-level languages (for example, C language) in recent years, there have appeared functions that can be executed while being stopped for each source line in the high-level language to perform high-level language level debugging.
高級言語で記述したプログラムはアセンブラ言語で記
述した場合に比べて処理速度が低下する。そのため、論
理的なデバッグ終了後どの関数が処理時間を要している
かを測定し改善点を見つけ出すことができるようにした
ソフトウェア性能評価の機能がインサーキットエミュレ
ータには望まれる。The processing speed of a program written in a high-level language is lower than that of a program written in an assembler language. Therefore, a function of software performance evaluation that can measure which function requires processing time after completion of logical debugging and find an improvement point is desired for an in-circuit emulator.
〈発明が解決しようとする課題〉 しかしながら、従来のインサーキットエミュレータに
付属する性能評価機能は、測定できる関数の数が少なか
ったり、一定時間ごとにプロセッサの実行アドレスをサ
ンプリングして相対的な所要時間の傾向をつかむことし
かできないものが大半である。<Problems to be Solved by the Invention> However, the performance evaluation function attached to the conventional in-circuit emulator has a small number of functions that can be measured, or samples the execution address of the processor at regular time intervals to determine the relative required time. Most can only grasp the tendency of.
とりわけ第6図に示すようにある関数が他の関数を多
段に呼び出している場合には、正確に個々の関数の所要
時間を測定することが不可能であった。第6図は関数A
から関数Bを呼び出し、更に関数Bが関数Cを呼び出す
場合の例で、a,b,c,a′,b′,c′の点での時刻をそれぞ
れta,tb,tc,ta′,tb′,tc′としている。この場
合、関数Aの所要時間T- Aはta′−taで得られるが、こ
れは関数BおよびCの所要時間T- B(=tb′−tb)、T- C
(=tc′−tc)を含んだものである。関数Aの純粋な所
要時間はTA=T- A−T- B−T- Cを求めなければならない。In particular, when a certain function calls another function in multiple stages as shown in FIG. 6, it is impossible to accurately measure the time required for each function. FIG. 6 shows the function A
Call the function B from further example in which the function B calls function C, a, b, c, a ', b', respectively the time in terms of c 't a, t b, t c, t a ', t b', is set to t c '. In this case, the time required for the function A T - A is t a 'is obtained by -t a, the time required for this function B and C T - B (= tb'- tb), T - C
(= Tc'-tc). Pure duration is T A = T functions A - A -T - B -T - must seek C.
この目的を部分的に達成したものに、例えば2点まで
の測定除外区間(第6図でTB,TCに相当)の設定、ある
いは区間TAの範囲内だけの実行を測定できるものがあ
る。Some of the objectives that have partially achieved this purpose include, for example, the setting of up to two measurement exclusion sections (corresponding to T B and T C in FIG. 6), or the measurement that can be performed only within the range of the section T A. is there.
しかしながら、性能測定の望ましい機能としては、第
6図の例ではTA,TB,TCを同時に正確に測定できること
が必要になる。また、呼び出しの深さは3段に限定され
るものではなく、それが何段であろうとまとめて測定で
きることが必要であるが、そのような機能を実現したも
のは今までに見られなかった。However, as a desirable function of performance measurement, in the example of FIG. 6, it is necessary that T A , T B , and T C can be simultaneously and accurately measured. Also, the call depth is not limited to three steps, but it is necessary to be able to collectively measure the number of steps, but no such function has been realized so far. .
本発明の目的は、このような点に鑑みてなされたもの
で、多段に呼び出される個々の関数内のみの所要時間を
個別かつ正確に測定することができ、更に相互の呼び出
し関係を予め調べる必要がなく、実行時の呼び出し状態
を正しく追跡し、対応する関数の所要時間を測定するこ
とのできるインサーキットエミュレータを提供すること
にある。The object of the present invention has been made in view of such a point, it is possible to individually and accurately measure the required time only in each function called in multiple stages, and it is necessary to check the mutual calling relationship in advance. It is an object of the present invention to provide an in-circuit emulator capable of correctly tracking the call state at execution time and measuring the time required for a corresponding function.
〈課題を解決するための手段〉 このような目的を達成するための本発明は、 ホストコンピュータからターゲットプログラムをダウ
ンロードし、関数の実行時間を測定することのできるイ
ンサーキットエミュレータであって、 各関数の先頭にブレークポイントを設定することので
きる多点ブレーク機能ブロック(1)と、ターゲットCP
Uの動作中の時間のみを計測することのできるタイマ機
能ブロック(2)と、ブレーク中にターゲットシステム
のスタックメモリの内容を読み出すスタックメモリ読み
出し機能ブロック(3)と、全関数の先頭アドレスをホ
ストコンピュータからダウンロードする先頭アドレスダ
ウンロード機能ブロック(4)とから構成される処理手
段(10)と、 ターゲットプログラムを記憶しブレークポイントの設
定ができるブレークRAM(5)と、 各関数の先頭アドレス、計測モード、所要時間の情報
を保持する関数テーブル(6)と、 関数の先頭でブレークするごとに該当する関数のテー
ブルへポインタをスタック状に保持するポインタスタッ
クテーブル(7) を具備したことを特徴とする。<Means for Solving the Problems> The present invention for achieving the above object is an in-circuit emulator that can download a target program from a host computer and measure the execution time of a function. Break function block (1) that can set a breakpoint at the beginning of the target CP
A timer function block (2) that can measure only the time during operation of U, a stack memory read function block (3) that reads the contents of the stack memory of the target system during a break, and a host address of all functions Processing means (10) consisting of a start address download function block (4) downloaded from the computer; a break RAM (5) for storing a target program and setting breakpoints; a start address of each function, a measurement mode A function table (6) for holding information on required time, and a pointer stack table (7) for holding a pointer to a table of a corresponding function in the form of a stack every time a break occurs at the beginning of a function. .
〈作用〉 本発明では、関数の呼び出し関係を実行時に動的にポ
インタスタック形式のデータテーブルで表現する。これ
により、どのような呼び出し関係であっても予め調べる
ことなく正しく追跡できる。<Operation> In the present invention, the calling relation of a function is dynamically represented by a pointer stack format data table at the time of execution. As a result, it is possible to correctly track any calling relationship without checking in advance.
また、スタックから関数の戻りアドレスを読み出しそ
こに戻るポイントでブレークさせる。これにより、論理
的に複数の出口のあるプログラムであってもすべて関数
の終了を検知することができる。In addition, a return address of a function is read from the stack, and a break is made at a point where the function returns. Thereby, even if the program has a plurality of exits logically, it is possible to detect the end of the function.
そして、個々の関数を、それを呼び出した側の所要時
間に含ませるか否かを指定できるようにした。Then, it is possible to specify whether each function is included in the required time of the caller.
以上のようにした結果、すべての関数の所要時間を個
別に測定することができる。As a result, the time required for all functions can be measured individually.
〈実施例〉 以下図面を参照して本発明を詳細に説明する。第1図
は本発明に係るインサーキットエミュレータの一実施例
を示す要部構成図である。図において、10は処理手段
で、各種の機能ブロックより構成されている。処理手段
10において、1は各関数の先頭にブレークポイントを設
定することのできる多点ブレーク機能ブロック、2は対
象とする中央処理装置(以下ターゲットCPUという)の
動作中の時間のみを計測することのできるタイマ機能ブ
ロック、3はブレーク中にターゲットシステムのスタッ
クメモリの内容を読み出すスタックメモリ読み出し機能
ブロック、4は全関数の先頭アドレスをホストコンピュ
ータからダウンロードする先頭アドレスダウンロード機
能ブロックである。<Example> Hereinafter, the present invention will be described in detail with reference to the drawings. FIG. 1 is a main part configuration diagram showing an embodiment of an in-circuit emulator according to the present invention. In the figure, reference numeral 10 denotes a processing means, which comprises various functional blocks. Processing means
In 10, 1 is a multi-point break function block that can set a breakpoint at the beginning of each function, and 2 can measure only the time during which a target central processing unit (hereinafter referred to as a target CPU) is operating. A timer function block 3 is a stack memory read function block for reading the contents of the stack memory of the target system during a break, and 4 is a start address download function block for downloading the start addresses of all functions from the host computer.
5はターゲットプログラムを記憶しブレークポイント
の設定ができるブレークRAM(RAMはRandom Access Memo
ry)、6は各関数の先頭アドレス、計測モード、所要時
間の情報を保持する関数テーブル、7は関数の先頭でブ
レークするごとに該当する関数のテーブルへポインタを
スタック状に保持するポインタスタックテーブルであ
る。5 is a break RAM for storing a target program and setting breakpoints (RAM is a random access memory)
ry), 6 is a function table that holds information on the start address, measurement mode, and required time of each function, and 7 is a pointer stack table that holds a pointer to a table of the corresponding function in a stack every time a break occurs at the start of a function. It is.
第2図はタイマ機能ブロックの詳細を示す構成図で、
アンド(AND)ゲート21は、基本クロックCLK(例えば、
1MHz)に、ターゲットが実行中のみHIGHとなるラン(R
UN)信号でゲートをかけている。ANDゲートより出力さ
れるクロック(ゲーテッドクロック)はカウンタ22によ
りカウントされ、そのカウント値はエミュレータ制御CP
U23により読みとられる。FIG. 2 is a configuration diagram showing details of a timer function block.
An AND gate 21 outputs a basic clock CLK (for example,
To 1MH z), run the target becomes the only running HIGH (R
UN) Gates on signals. The clock (gated clock) output from the AND gate is counted by the counter 22, and the count value is controlled by the emulator control CP.
Read by U23.
これにより、ターゲットの実行時間を測定することが
できる。Thereby, the execution time of the target can be measured.
このような構成における動作を順を追って説明する。
第3図はメモリおよび各種テーブルを示す図であり、こ
れを参照して説明する。The operation in such a configuration will be described step by step.
FIG. 3 shows a memory and various tables, which will be described with reference to FIG.
まず先頭アドレスダウンロード機能ブロック4によ
り、ホストコンピュータ(図示せず)から第3図に示す
ようなターゲットプログラムをダウンロードする。First, the head address download function block 4 downloads a target program as shown in FIG. 3 from a host computer (not shown).
関数アドレスをダウンロードした後、関数テーブル6
を作成する。After downloading the function address, the function table 6
Create
次に多点ブレーク機能ブロック1により、前記関数テ
ーブル6より先頭アドレスを得て、ブレークポイント1,
2,3をそれぞれ関数func−A,func−B,func−Cの先頭に
設定する。Next, the start address is obtained from the function table 6 by the multipoint break function block 1 and the breakpoints 1 and 2 are obtained.
2, 3 are set at the head of the functions func-A, func-B, and func-C, respectively.
このような状態で第4図のような実行が行なわれると
する。ブレークポイントの位置により処理は次の(a)
または(b)に分かれる。It is assumed that the execution as shown in FIG. 4 is performed in such a state. Depending on the position of the breakpoint, processing is as follows (a)
Or (b).
(a)ブレークポイントn(ここではnは1,2,3のいず
れか)によってブレークした時は、次のアルゴリズムに
従った処理を行なう。(A) When a break is caused by a break point n (here, n is one of 1, 2, and 3), processing according to the following algorithm is performed.
(1)停止アドレスと関数テーブルの先頭アドレスを比
較し、どの関数に入ったかを判定する。(1) The stop address is compared with the head address of the function table to determine which function has been entered.
(2)見つかった関数テーブルのアドレスを指すポイン
タをポインタスタックテーブル7のポインタスタック
に積む。(2) The pointer pointing to the address of the found function table is placed on the pointer stack of the pointer stack table 7.
(3)ポインタの指すテーブルについて時刻taを関数テ
ーブルの入口時刻にセットする。(3) sets the time t a the entrance time of the function table for the table pointed to by the pointer.
(4)現在、戻りアドレスに設定されているブレークポ
イントを解除する。(4) Release the breakpoint currently set at the return address.
(5)スタックから戻りアドレスを得、ブレークポイン
ト をセットし、戻りアドレスに記憶しておく。(5) Get return address from stack and breakpoint Is set and stored in the return address.
(6)実行を開始する。(6) Start execution.
(b)戻りアドレスに設定したブレークポイント では次の処理を行なう。(B) Breakpoint set at return address Then, the following processing is performed.
(1)ポインタスタックの一番上のポインタが指すテー
ブルから入口時刻ta(あるいはtb,tc)を得る。(1) The entry time t a (or t b , t c ) is obtained from the table indicated by the pointer at the top of the pointer stack.
(2)現在時刻ta′(あるいはtb′,tc′)を読み込
み、T=ta′−taを計算し、関数テーブルの所要時間に
加算する。(2) the current time t a '(or t b', t c ') reads, T = t a' calculate the -t a, is added to the time required for the function table.
(3)関数テーブルの計時モードが「含まない」であれ
ば、スタックの自分より下に積まれているすべてのポイ
ンタの指すテーブルの所要時間からTを減算する。(3) If the timing mode of the function table is “not included”, T is subtracted from the required time of the table pointed to by all the pointers stacked below the stack.
これにより、呼び出した関数の所要時間を含まない純
粋な所要時間が計算できる。As a result, a pure required time that does not include the required time of the called function can be calculated.
(4)戻りアドレスに設定されていたブレークポイント
を解除し、スタックトップのポインタを取り除く(第3
図のポインタスタックテーブルの,)。(4) Release the breakpoint set at the return address and remove the pointer at the top of the stack (third
In the pointer stack table in the figure,).
(5)新たなスタックトップのポインタの指すテーブル
から戻りアドレスを得て、そこにブレークポイントをセ
ットする(第3図の関数テーブルの戻りアドレス欄参
照)。(5) Obtain a return address from the table pointed to by the new stack top pointer, and set a breakpoint there (see the return address column of the function table in FIG. 3).
(6)実行を再開する。(6) Resume execution.
以上により最終的に に戻った時点で関数func−A,func−B,func−Cの関数テ
ーブルの所要時間の欄には個々の関数の所要時間のみが
格納される。各関数の所要時間の数値がどう変化するか
を第5図に示す。最後の のポイントでは各関数共に望む値が得られていることが
分かる。Finally, At the time of returning to the above, only the required time of each function is stored in the required time column of the function table of the functions func-A, func-B, and func-C. FIG. 5 shows how the value of the required time of each function changes. Last It can be seen that at each point, the desired value is obtained for each function.
〈発明の効果〉 以上詳細に説明したように、本発明によれば、次のよ
うな効果がある。<Effects of the Invention> As described in detail above, the present invention has the following effects.
関数の出口をスタック上の戻りアドレスから得るため
に、複数の出口がある関数であっても各出口ごとに計時
ポイントを設定する必要がなく、利用者がこれらの出口
アドレスを管理することなく関数の所要時間を測定でき
る。Since the function exit is obtained from the return address on the stack, there is no need to set a timing point for each exit even if the function has multiple exits, and the function does not need to be managed by the user. The required time can be measured.
呼び出し関数をポインタのスタックとして表現してい
るため、実際の呼び出し関係を予め調べることなく動的
に正しく把握でき、どのような呼び出し関数にあっても
個々の関数の所要時間が正しく計測できる。Since the calling function is represented as a stack of pointers, it is possible to dynamically and correctly grasp the actual calling relationship without checking in advance, and it is possible to correctly measure the time required for each function regardless of the calling function.
これらのことにより、全体として性能評価の機能を改
善することが可能となった。As a result, it has become possible to improve the performance evaluation function as a whole.
【図面の簡単な説明】 第1図は本発明に係るインサーキットエミュレータの一
実施例を示す要部構成図、第2図はタイマ機能ブロック
の詳細を示す構成図、第3図はメモリおよび各種テーブ
ルを示す図、第4図はプログラムの流れを示す説明図、
第5図は各関数の所要時間の推移を示す図、第6図はあ
る関数が他の関数を多段に呼び出している場合の説明図
である。 1……多点ブレーク機能ブロック、2……タイマ機能ブ
ロック、3……スタックメモリ読み出し機能ブロック、
4……先頭アドレスダウンロード機能ブロック、5……
ブレークRAM、6……関数テーブル、7……ポインタス
タックテーブル、10……処理手段、21……アンドゲー
ト、22……カウンタ、23……エミュレータ制御CPU。BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a block diagram showing an embodiment of an in-circuit emulator according to the present invention, FIG. 2 is a block diagram showing details of a timer function block, and FIG. FIG. 4 is a diagram showing a table, FIG. 4 is an explanatory diagram showing a program flow,
FIG. 5 is a diagram showing the transition of the required time of each function, and FIG. 6 is an explanatory diagram in the case where one function calls another function in multiple stages. 1 ... multipoint break function block, 2 ... timer function block, 3 ... stack memory read function block,
4 ... Start address download function block, 5 ...
Break RAM, 6: Function table, 7: Pointer stack table, 10: Processing means, 21: AND gate, 22: Counter, 23: Emulator control CPU.
Claims (1)
ラムをダウンロードし、関数の実行時間を測定すること
のできるインサーキットエミュレータであって、 各関数の先頭にブレークポイントを設定することのでき
る多点ブレーク機能ブロック(1)と、ターゲットCPU
の動作中の時間のみを計測することのできるタイマ機能
ブロック(2)と、ブレーク中にターゲットシステムの
スタックメモリの内容を読み出すスタックメモリ読み出
し機能ブロック(3)と、全関数の先頭アドレスをホス
トコンピュータからダウンロードする先頭アドレスダウ
ンロード機能ブロック(4)とからなる処理手段(10)
と、 ターゲットプログラムを記憶しブレークポイントの設定
ができるブレークRAM(5)と、 各関数の先頭アドレス、計測モード、所要時間の情報を
保持する関数テーブル(6)と、 関数の先頭でブレークするごとに該当する関数のテーブ
ルへポインタをスタック状に保持するポインタスタック
テーブル(7) を具備し、関数の呼び出し関係を実行時に動的にポイン
タスタック形式のポインタスタックテーブル(7)にデ
ータテーブルで表現し、スタックから関数の戻りアドレ
スを読み出しそこに戻るポイントでブレークさせること
により論理的に複数の出口のあるプログラムであっても
すべて関数の終了を検知し、個々の関数をそれを呼び出
した側の所要時間に含ませるか否かを指定できるように
して、すべての関数の所要時間を個別に測定することが
できるようにしたことを特徴とするインサーキットエミ
ュレータ。1. An in-circuit emulator that can download a target program from a host computer and measure the execution time of a function, and a multipoint break function block that can set a breakpoint at the beginning of each function. 1) and target CPU
A timer function block (2) that can measure only the time during the operation of the stack, a stack memory read function block (3) that reads the contents of the stack memory of the target system during a break, and a host computer Processing means (10) consisting of a top address download function block (4) downloaded from
And a break RAM (5) for storing the target program and setting breakpoints; a function table (6) for storing information on the start address of each function, measurement mode, and required time; And a pointer stack table (7) for holding a pointer to a table of a function corresponding to the above in a stack form, and dynamically expressing a calling relation of the function in a pointer stack table (7) in a pointer stack format at the time of execution. By reading the return address of a function from the stack and breaking at the point where it returns, even if it is logically a program with multiple exits, it detects the end of the function and calls the individual functions as required by the caller. The time required for all functions can be measured individually by specifying whether to include them in the time. In-circuit emulator characterized in that it can be set.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1152974A JP2595718B2 (en) | 1989-06-15 | 1989-06-15 | In-circuit emulator |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1152974A JP2595718B2 (en) | 1989-06-15 | 1989-06-15 | In-circuit emulator |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0318939A JPH0318939A (en) | 1991-01-28 |
JP2595718B2 true JP2595718B2 (en) | 1997-04-02 |
Family
ID=15552206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1152974A Expired - Lifetime JP2595718B2 (en) | 1989-06-15 | 1989-06-15 | In-circuit emulator |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2595718B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5310819B2 (en) | 2010-11-29 | 2013-10-09 | 株式会社デンソー | Microcomputer |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6039254A (en) * | 1983-08-12 | 1985-03-01 | Mitsubishi Electric Corp | Debugger for microcomputer |
JPS62245443A (en) * | 1986-04-18 | 1987-10-26 | Mitsubishi Electric Corp | Measuring method for execution time of program |
-
1989
- 1989-06-15 JP JP1152974A patent/JP2595718B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH0318939A (en) | 1991-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6775826B1 (en) | System and method for replaying workload data in a data storage environment | |
US5301312A (en) | Method and system for utilizing benign fault occurrence to measure interrupt-blocking times | |
KR100292642B1 (en) | Systems and Methods for Interfering Code Instrumentation | |
WO2021057057A1 (en) | Target-code coverage testing method, system, and medium of operating system-level program | |
Flanagan et al. | BACH: BYU address collection hardware, the collection of complete traces | |
EP0084431A2 (en) | Monitoring computer systems | |
JPH0588948A (en) | Method and device for analyzing sampling performance | |
US20060059486A1 (en) | Call stack capture in an interrupt driven architecture | |
JPH11110254A (en) | Exception identification device and method for software debugging | |
RU2003115617A (en) | METHOD AND DEVICE FOR DATA PROCESSING FOR STORING RETURN CONDITION | |
US20050010908A1 (en) | Method, apparatus and computer program product for implementing breakpoint based performance measurement | |
JPH11110255A (en) | Software debugging device and method | |
EP1125199B1 (en) | Method of debugging a program thread | |
JP2595718B2 (en) | In-circuit emulator | |
Kuenning | Kitrace: Precise interactive measurement of operating systems kernels | |
JP3133730B2 (en) | Interruption method and circuit | |
JP2775830B2 (en) | Instruction frequency measurement method | |
JPH0465729A (en) | Symbolic debugger | |
JP2800577B2 (en) | Debug device | |
JP2004348635A (en) | Method for developing program | |
JPH05224989A (en) | Microprocessor containing cache memory and its trace analyzer | |
Dagenais et al. | Software performance analysis | |
JPS6346551A (en) | Debugging device for microprocessor | |
JPS6337436A (en) | Program development backup device | |
JPH0573347A (en) | Emulation device |