JP2007156594A - プログラムトレース装置及び方法 - Google Patents
プログラムトレース装置及び方法 Download PDFInfo
- Publication number
- JP2007156594A JP2007156594A JP2005347549A JP2005347549A JP2007156594A JP 2007156594 A JP2007156594 A JP 2007156594A JP 2005347549 A JP2005347549 A JP 2005347549A JP 2005347549 A JP2005347549 A JP 2005347549A JP 2007156594 A JP2007156594 A JP 2007156594A
- Authority
- JP
- Japan
- Prior art keywords
- trace
- register
- control unit
- program
- program counter
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Microcomputers (AREA)
Abstract
【課題】非再現性問題を回避できるプログラムトレース。
【解決手段】(1)メインメモリ110と、(2)プログラムカウンタを制御する順序制御部及び制御信号生成回路を有する制御部200と、演算回路及び複数のレジスタを有する演算部300と、を各々有する複数の中央処理装置101と、複数の中央処理装置を制御するコア制御部140と、からなるマルチコアプロセッサ100と、から構成されるマイクロコンピュータ10のプログラムトレース装置1において、コア制御部140は、トレース制御部141を有し、順序制御部は、プログラムカウンタの遷移に応じて、プログラムカウンタの値をトレース制御部に送信するプログラムカウンタ送信部を有し、トレース制御部141は、プログラムカウンタの値を受信すると、コア制御部140が命令コードの実行のために使用していない中央処理装置の未使用レジスタにプログラムカウンタの値を順次書き込む。
【選択図】図1
【解決手段】(1)メインメモリ110と、(2)プログラムカウンタを制御する順序制御部及び制御信号生成回路を有する制御部200と、演算回路及び複数のレジスタを有する演算部300と、を各々有する複数の中央処理装置101と、複数の中央処理装置を制御するコア制御部140と、からなるマルチコアプロセッサ100と、から構成されるマイクロコンピュータ10のプログラムトレース装置1において、コア制御部140は、トレース制御部141を有し、順序制御部は、プログラムカウンタの遷移に応じて、プログラムカウンタの値をトレース制御部に送信するプログラムカウンタ送信部を有し、トレース制御部141は、プログラムカウンタの値を受信すると、コア制御部140が命令コードの実行のために使用していない中央処理装置の未使用レジスタにプログラムカウンタの値を順次書き込む。
【選択図】図1
Description
本発明は、マルチコアプロセッサを有するマイクロコンピュータを利用した処理システムのソフトウェア開発を支援するプログラムトレース装置及び方法に関する。
一般に、開発中のハードウェアをデバッグする場合には、ホストコンピュータと開発中のシステムをICE(In-Circuit Emulator)を介して接続し、このハードウェア上で動作するソフトウェアの動作状態をトレースすることがある。また、一方では、開発中のハードウェアのプロセッサに、デバッグ用コード(デバッグモニタ等)を組み込み、そのデバッグ用コードを介して、ホストコンピュータと開発中のハードウェアを接続し、同ハードウェアが備えるCPU(中央処理装置)にて動作するソフトウェアの動作状態をトレースすることがある。上記のような不具合の原因を解析するには、上記に示したハードウェアのCPU上にて動作するソフトウェアの動作状態をトレースできるデバッグシステムを用いて、ハードウェアに関するログ情報を収集するコードを埋め込んだソフトウェアを動作させ、バグが発生した時点で、ソフトウェアを停止させ、ログを解析する。
しかし、ログ情報を収集するコードを挿入してソフトウェアを実行させると、プログラムサイズの変化やメモリの使用状況の変化により不具合が発生しないことがある。
この問題を解決するために、例えば特許文献1には、プログラムの実行時にジャンプしたアドレスを記録するトレースストレージは、「専用バスによってトレースコントローラに接続された専用メモリ、CPUからアクセスできるメモリバスに接続された専用メモリ、または、オン−チップまたはオフ−チップでCPUによってアクセスできるメモリと同じメモリ、に設ける」ことを想定し、さらにトレースストレージであるこのメモリに関するアドレス情報を管理するための独自のレジスタ・装置を用意する方法が記載されている。
しかしながら、特許文献1では、CPUの複雑さが増しコスト増となるばかりか、トレースストレージ用のメモリが必要であり、デバッグ時と非デバッグ時にメモリマップを変更するとか、デバッグのためだけのメモリを用意しなくてはならない。前者の場合はデバッグ時に不具合が発生しなくなることがある(非再現性問題)。後者の場合製品には不要なコスト増を招いたり、製品開発用とデバッグ用で別々のシステム(ハードウェア構成)を用意する必要がある。
本発明は、このような事情に鑑みてなされたものであり、マルチコアプロセッサにおいてプログラム実行には使用しないCPUのレジスタをトレースストレージとすることにより、プログラムトレース装置にかかるコストを削減することができ、非デバッグ時とデバッグ時で同じメモリ配置で、同じ命令列のプログラムを実行できるため、非再現性問題を回避できるプログラムトレース装置及び方法を提供することを目的とするものである。
上記課題を解決するために、本発明のプログラムトレース装置では、(1)命令コード記憶領域と、データ記憶領域と、を有するメインメモリと、(2)前記命令コード記憶領域から命令コードを読み出すアドレスを指定するプログラムカウンタを制御する順序制御部と読み出した前記命令コードを解釈し制御信号を生成する制御信号生成回路とを有する制御部と、前記制御信号に従い演算を行う演算回路と複数のレジスタとを有する演算部と、を各々有する複数の中央処理装置と、前記複数の中央処理装置を制御するコア制御部と、からなるマルチコアプロセッサと、から構成されるマイクロコンピュータのプログラムトレース装置において、前記コア制御部は、トレース制御部を有し、前記順序制御部は、前記プログラムカウンタの遷移に応じて、前記プログラムカウンタの値を前記トレース制御部に送信するプログラムカウンタ送信部を有し、前記トレース制御部は、前記プログラムカウンタの値を受信すると、前記複数の中央処理装置のうち前記命令コードの実行のために使用していない前記中央処理装置の未使用レジスタに前記プログラムカウンタの値を順次書き込む、ことを要旨とする。
この構成によれば、マルチコアプロセッサにおいてプログラム実行には使用しない中央処理装置のレジスタをトレースストレージとすることにより、プログラムトレース装置にかかるコストを削減することができ、非デバッグ時とデバッグ時で同じメモリ配置で、同じ命令列のプログラムを実行できるため、非再現性問題を回避できる。
また、本発明のプログラムトレース装置では、前記トレース制御部は、前記マイクロコンピュータのプログラムトレースを行うデバッグ用コンピュータから前記未使用レジスタの先頭アドレスを取得し、前記プログラムカウンタの値を前記未使用レジスタの前記先頭アドレスに書き込む前に、すでに前記未使用レジスタに書き込まれた前記プログラムカウンタの値を次のアドレスの前記未使用レジスタに順送りに書き込んだ後、前記プログラムカウンタの値を前記未使用レジスタの前記先頭アドレスに書き込む。
この構成によれば、最新のプログラムカウンタの値を書き込むレジスタの位置を固定することができ、トレース部の処理を単純化できる。
また、本発明のプログラムトレース装置では、前記トレース制御部は、前記未使用レジスタの所定のレジスタを前記未使用レジスタの前記プログラムカウンタの値を書き込むアドレスを管理する位置管理レジスタとし、前記デバッグ用コンピュータから取得した前記未使用レジスタの先頭アドレスを前記位置管理レジスタの初期値として記録し、前記位置管理レジスタに基づき前記未使用レジスタのアドレスに前記プログラムカウンタの値を書き込み、書き込み後、前記位置管理レジスタのアドレスを次のアドレスに更新する。
この構成によれば、最新のプログラムカウンタの値を書き込むレジスタの位置を位置管理レジスタに基づき設定することができ、トレース部の処理を単純化できる。
また、本発明のプログラムトレース装置では、前記トレース制御部は、前記プログラムカウンタの値が前記制御信号生成回路または前記演算部からの指示に基づき変化した場合に、変化する前の前記プログラムカウンタの値を前記未使用レジスタに書き込む。
この構成によれば、プログラムカウンタの値が順次変化しなかった場合の値をトレースするので、トレースストレージを節約でき、プログラムトレースが容易になる。
また、本発明のプログラムトレース装置では、前記コア制御部は、前記複数の中央処理装置が各々どの前記中央処理装置を前記プログラムカウンタの値の保存先として使用するかを指定するモードレジスタを有する。
この構成によれば、複数の中央処理装置を同時に使う場合でも、トレースの保存先をそれぞれ割り当てることができる。
また、本発明のプログラムトレース方法では、(1)命令コード記憶領域と、データ記憶領域と、を有するメインメモリと、(2)前記命令コード記憶領域から命令コードを読み出すアドレスを指定するプログラムカウンタを制御する順序制御部と読み出した前記命令コードを解釈し制御信号を生成する制御信号生成回路とを有する制御部と、前記制御信号に従い演算を行う演算回路と複数のレジスタとを有する演算部と、を各々有する複数の中央処理装置と、前記複数の中央処理装置を制御するコア制御部と、からなるマルチコアプロセッサと、から構成されるマイクロコンピュータのプログラムトレース装置において、前記コア制御部は、トレース制御部を有し、前記順序制御部は、前記プログラムカウンタの遷移に応じて、前記プログラムカウンタの値を前記トレース制御部に送信するプログラムカウンタ送信工程を有し、前記トレース制御部は、前記プログラムカウンタの値を受信すると、前記複数の中央処理装置のうち前記命令コードの実行のために使用していない前記中央処理装置の未使用レジスタに前記プログラムカウンタの値を順次書き込む。
この構成によれば、マルチコアプロセッサにおいてプログラム実行には使用しない中央処理装置のレジスタをトレースストレージとすることにより、プログラムトレース装置にかかるコストを削減することができ、非デバッグ時とデバッグ時で同じメモリ配置で、同じ命令列のプログラムを実行できるため、非再現性問題を回避できる。
以下、本発明を具体化した実施形態について図面に従って説明する。
(第1実施形態)
(第1実施形態)
<プログラムトレース装置の構成>
まず、第1実施形態に係るプログラムトレース装置の構成について、図1を参照して説明する。図1は、本発明の第1実施形態に係るプログラムトレース装置の全体構成図である。図1に示すように、プログラムトレース装置1は、マイクロコンピュータ10と、デバッグ用コンピュータ20と、から構成されている。
まず、第1実施形態に係るプログラムトレース装置の構成について、図1を参照して説明する。図1は、本発明の第1実施形態に係るプログラムトレース装置の全体構成図である。図1に示すように、プログラムトレース装置1は、マイクロコンピュータ10と、デバッグ用コンピュータ20と、から構成されている。
マイクロコンピュータ10は、マルチコアプロセッサ100と、メインメモリ110と、入力装置120と、出力装置130と、から構成されている。さらに、マルチコアプロセッサ100は、本実施形態では、4つの中央処理装置(Central Processing Unit、以下CPU)101、102、103、104と、これら4つのCPUを制御するコア制御部140と、から構成されている。CPU101〜104は、各々、制御部200と、演算部300と、から構成され、コア制御部140は、トレース制御部141と、モードレジスタ142と、を有する。また、メインメモリ110は、命令コード記憶領域111と、データ記憶領域112と、から構成されている。メインメモリ110は、コア制御部140を介して、コア制御部140が選択したCPU101〜104との間で命令コード記憶領域111の命令コード及びデータ記憶領域112のデータを送受信する。
トレース制御部141は、トレース部実行フラグ224と書込みレジスタ特定レジスタ225を有する。トレース部実行フラグ224は、ONであれば本発明のトレース機能を実現し、OFFであればトレース機能を停止する。デバッグを行うときにはデバッグ担当者がトレース部実行フラグ224をONに設定する。製品として動作する場合は、トレース部実行フラグ224は通常OFFである。書込みレジスタ特定レジスタ225は、PC221の値を書き込むレジスタを特定する。なお、トレース制御部141内部に書込みレジスタ特定レジスタ225を設けずに、例えば、最後の未使用レジスタにその機能を割り当てるという構成でも構わない。
<制御部の構成>
次に、制御部200の構成について図2を参照して説明する。図2は、制御部200の構成図である。制御部200は、コア制御部140を介してメインメモリ110の命令コード記憶領域111から読み出した命令コードを保持する命令レジスタ(Instruction Register、以下IR)210と、読み出す命令コードのアドレスを指定するプログラムカウンタ(Program Counter、以下PC)221を制御する順序制御部220と、IR210に保持された命令コードを解釈し制御信号を生成する制御信号生成回路(以下デコーダ)230と、から構成されている。
次に、制御部200の構成について図2を参照して説明する。図2は、制御部200の構成図である。制御部200は、コア制御部140を介してメインメモリ110の命令コード記憶領域111から読み出した命令コードを保持する命令レジスタ(Instruction Register、以下IR)210と、読み出す命令コードのアドレスを指定するプログラムカウンタ(Program Counter、以下PC)221を制御する順序制御部220と、IR210に保持された命令コードを解釈し制御信号を生成する制御信号生成回路(以下デコーダ)230と、から構成されている。
順序制御部220は、現在の命令コードが実行された後、次のアドレスの命令コードに移動するためのPC221を生成するためにPC221の値を命令サイズ分増やすPCインクリメント222と、PC221がデコーダ230または演算部300の制御に基づき所定のアドレスにジャンプするように設定された場合に、現在のPC221の値をコア制御部140のトレース制御部141に送信するPC送信部223と、から構成されている。
<演算部の構成>
次に、演算部300の構成について図3を参照して説明する。図3は、演算部300の構成図である。演算部300は、デコーダ230からの制御信号に基づき演算の種類を切り替える演算回路301と、デコーダ230からの制御信号に基づき値を一時的に保持するr0〜rn−1からなるレジスタ302と、から構成されている。また、各々のレジスタ302は、入力バス312の値を取り込むためのスイッチゲート303と、各々のレジスタ302毎に値を出力バス310、311に出力するためのスイッチゲート304、305と、から構成されている。さらに、出力バス311の値を、制御部200に出力するためのスイッチゲート306と、メインメモリ110に出力するためのスイッチゲート307と、メインメモリ110の値を入力バス312に取り込むためのスイッチゲート308と、から構成されている。スイッチゲート303〜308のゲートの開閉は、デコーダ230からの制御信号に基づき制御される。
次に、演算部300の構成について図3を参照して説明する。図3は、演算部300の構成図である。演算部300は、デコーダ230からの制御信号に基づき演算の種類を切り替える演算回路301と、デコーダ230からの制御信号に基づき値を一時的に保持するr0〜rn−1からなるレジスタ302と、から構成されている。また、各々のレジスタ302は、入力バス312の値を取り込むためのスイッチゲート303と、各々のレジスタ302毎に値を出力バス310、311に出力するためのスイッチゲート304、305と、から構成されている。さらに、出力バス311の値を、制御部200に出力するためのスイッチゲート306と、メインメモリ110に出力するためのスイッチゲート307と、メインメモリ110の値を入力バス312に取り込むためのスイッチゲート308と、から構成されている。スイッチゲート303〜308のゲートの開閉は、デコーダ230からの制御信号に基づき制御される。
<トレース制御部の動作>
次に、第1実施形態に係るトレース制御部141の動作について図4及び図5を参照して説明する。図4は、第1実施形態に係るトレース制御部141の動作を説明するフローチャートであり、図5は、第1実施形態に係るトレース制御部141の動作を説明する各CPU101〜104の演算部300のレジスタ302の動きを示す図である。なお、図5は、コア制御部140がCPU101を命令コードを実行するCPUとして選択した場合について説明する。この場合、CPU102、103、104の各々のレジスタ302が未使用レジスタとなる。
次に、第1実施形態に係るトレース制御部141の動作について図4及び図5を参照して説明する。図4は、第1実施形態に係るトレース制御部141の動作を説明するフローチャートであり、図5は、第1実施形態に係るトレース制御部141の動作を説明する各CPU101〜104の演算部300のレジスタ302の動きを示す図である。なお、図5は、コア制御部140がCPU101を命令コードを実行するCPUとして選択した場合について説明する。この場合、CPU102、103、104の各々のレジスタ302が未使用レジスタとなる。
先ず、ステップS090では、デバッグ用コンピュータ20から指示を受け、トレース実行フラグ224をONに設定する。これによりトレース部が以下の動作を行うモードになる。デバッグPCで行う代わりに、プログラムコードに「トレース実行フラグ224をON」にする命令コードを記述し、そのプログラムコードをCPUで実行することでも、トレース実行フラグ224を設定することができる。
次に、ステップS100では、トレース制御部141は、デバッグ用コンピュータ20から指示を受け、PC221の値を書き込む書き込みレジスタの位置を書込みレジスタ特定レジスタ225に設定する。図5では、CPU102の先頭のレジスタr0が書き込みレジスタとして設定されている。
次に、ステップS102では、デコーダ230が命令コードを解析し演算部300に制御信号を送信する。
次に、ステップS104では、順序制御部220は、PC221がデコーダ230または演算部300からの制御に基づき所定のアドレスにジャンプするように制御された(Yes)か否か(No)を判定し、Yesの場合は、ステップS105に移行し、Noの場合は、ステップS102に移行する。
次に、ステップS105では、PC送信部223は、トレース制御部141に現在のPC221の値を送信する。
次に、ステップS106では、トレース制御部141は、前回書き込みレジスタに書き込まれているPC221の値を次のレジスタに、次のレジスタに書き込まれているPC221の値をその次のレジスタに、というように順送りに書き込むように未使用レジスタとして割り当てられたCPUの演算部300に制御信号を送る。図5では、CPU102のレジスタr0に書き込まれていたPC221の値をCPU102のレジスタr1に、CPU102のレジスタr1に書き込まれていたPC221の値をCPU102のレジスタr2に、それぞれ順送りに書き込まれる様子を示している。また、CPU102のレジスタrn−1に書き込まれていたPC221の値は、次のCPU103のレジスタr0に、同様に、CPU103のレジスタrn−1に書き込まれていたPC221の値は、次のCPU104のレジスタr0に、それぞれ順送りに書き込まれる。
次に、ステップS108では、トレース制御部141は、書き込みレジスタにPC221の値を書き込む。図5では、CPU102のレジスタr0にPC221の値が書き込まれる。
次に、ステップS110では、最後の未使用レジスタまでPC221の値が書き込まれたか(Yes)否か(No)を判定し、Yesの場合は、ステップS112に移行し、Noの場合は、ステップS102に移行する。図5では、CPU104のレジスタRn−1まで書き込まれた場合にYesとなる。
次にステップS112では、トレース制御部141は、未使用レジスタに書き込まれたPC221の値をデバッグ用コンピュータ20に送信し、未使用レジスタの値をクリアするように未使用レジスタとして割り当てられたCPUの演算部300に制御信号を送信し、ステップS102に移行する。
以上、すべての命令コードが実行され終わるまで、ステップS102からS112が繰り返される。
以上に述べた前記実施形態によれば、以下の効果が得られる。
本実施形態では、マルチコアプロセッサにおいてプログラム実行には使用しないCPUのレジスタをトレースストレージとすることにより、プログラムトレース装置にかかるコストを削減することができ、非デバッグ時とデバッグ時で同じメモリ配置で、同じ命令列のプログラムを実行できるため、非再現性問題を回避できる。さらに、最新のプログラムカウンタの値を書き込むレジスタの位置を固定することができ、トレース制御部141の処理を単純化できる。
(第2実施形態)
次に、本発明に係るプログラムトレース装置の第2実施形態について説明する。第1実施形態においては、トレース制御部141は、未使用レジスタにPC221の値を書き込む際、書き込みレジスタを固定にし、古いデータを次のレジスタに順送りに書き込む方法を説明したが、第2実施形態では、未使用レジスタの1つを位置管理レジスタに設定し、位置管理レジスタを参照し、空いているレジスタにPC221の値を書き込む方法について図6及び図7を参照して説明する。
次に、本発明に係るプログラムトレース装置の第2実施形態について説明する。第1実施形態においては、トレース制御部141は、未使用レジスタにPC221の値を書き込む際、書き込みレジスタを固定にし、古いデータを次のレジスタに順送りに書き込む方法を説明したが、第2実施形態では、未使用レジスタの1つを位置管理レジスタに設定し、位置管理レジスタを参照し、空いているレジスタにPC221の値を書き込む方法について図6及び図7を参照して説明する。
図6は、第2実施形態に係るトレース制御部141の動作を説明するフローチャートであり、図7は、第2実施形態に係るトレース制御部141の動作を説明する各CPU101〜104の演算部300のレジスタ302の動きを示す図である。なお、図7は、コア制御部140が命令コードを実行するCPUとしてCPU101を選択した場合について説明する。この場合、CPU102、103、104の各々のレジスタ302が未使用レジスタとなる。さらに、CPU102のレジスタr0を位置管理レジスタに設定している。
図7に示すように、位置管理レジスタは、CPU102のレジスタr0の上位ビットをCPU番号に、下位ビットを書き込みレジスタのアドレスを指し示すように構成されている。図7では、位置管理レジスタの上位ビットが2進数で0010、下位ビットが2進数で0001となっているので、2番目のCPU102のレジスタr1が現在の書き込みレジスタとして指し示されている。書き込みレジスタにPC221の値が書き込まれると、位置管理レジスタの値に1が加算され、下位ビットが0010となる。処理が進み、CPU102のレジスタrn−1にPC221の値が書き込まれると、位置管理レジスタの上位ビットに1が加算され0011となり、下位ビットが0000に戻る。これにより次の書き込みレジスタは、3番目のCPU103のレジスタr0となる。同様に、CPU103のレジスタrn−1にPC221の値が書き込まれると、位置管理レジスタの上位ビットに1が加算され0100となり、下位ビットが0000に戻る。これにより次の書き込みレジスタは、4番目のCPU104のレジスタr0となる。
以下、図6に従い第2実施形態に係るトレース制御部141の動作を説明する。
先ず、ステップS190では、デバッグ用コンピュータ20から指示を受け、トレース実行フラグ224をONに設定する。これによりトレース部が以下の動作を行うモードになる。デバッグPCで行う代わりに、プログラムコードに「トレース実行フラグ224をON」にする命令コードを記述し、そのプログラムコードをCPUで実行することでも、トレース実行フラグ224を設定することができる。
先ず、ステップS200では、トレース制御部141は、デバッグ用コンピュータ20から指示を受け、位置管理レジスタを設定する。図7では、CPU102のレジスタr0が位置管理レジスタとして設定され、r0=00100001に設定されている。
次に、ステップS202では、デコーダ230が命令コードを解析し演算部300に制御信号を送信する。
次に、ステップS204では、順序制御部220は、PC221がデコーダ230または演算部300からの制御に基づき所定のアドレスにジャンプするように制御された(Yes)か否か(No)を判定し、Yesの場合は、ステップS205に移行し、Noの場合は、ステップS202に移行する。
次に、ステップS205では、PC送信部223は、トレース制御部141に現在のPC221の値を送信する。
次に、ステップS206では、トレース制御部141は、位置管理レジスタが指し示すCPUのレジスタにPC221の値を書き込む。図7の位置管理レジスタは、r0=00100001なので、CPU102のレジスタr1に書き込まれる。
次に、ステップS208では、トレース制御部141は、次の書き込みレジスタを指し示すために位置管理レジスタの下位ビットに1を加算する。ただし、演算部300が有するレジスタ302の最後のレジスタrn−1に達した場合は、位置管理レジスタの上位ビットに1が加算され、下位ビットを0000に戻す。図7では、位置管理レジスタは、r0=00100010となり、次の書き込みレジスタがCPU102のレジスタr2であることを指し示す。
次に、ステップS210では、最後の未使用レジスタまでPC221の値が書き込まれたか(Yes)否か(No)を判定し、Yesの場合は、ステップS212に移行し、Noの場合は、ステップS202に移行する。図7では、CPU104のレジスタRn−1まで書き込まれた場合にYesとなる。
次にステップS212では、トレース制御部141は、未使用レジスタのPC221の値をデバッグ用コンピュータ20に送信し、位置管理レジスタを初期値(ステップS200の状態)にリセットするように演算部300に制御信号を送信し、ステップS202に移行する。
以上、すべての命令コードが実行され終わるまで、ステップS202からS212が繰り返される。
以上に述べた前記実施形態によれば、以下の効果が得られる。
本実施形態では、マルチコアプロセッサにおいてプログラム実行には使用しないCPUのレジスタをトレースストレージとすることにより、プログラムトレース装置にかかるコストを削減することができ、非デバッグ時とデバッグ時で同じメモリ配置で、同じ命令列のプログラムを実行できるため、非再現性問題を回避できる。さらに、最新のプログラムカウンタの値を書き込むレジスタの位置を位置管理レジスタに基づき設定することができ、トレース制御部141の処理を単純化できる。
(第3実施形態)
次に、本発明に係るプログラムトレース装置の第3実施形態について説明する。第1実施形態及び第2実施形態においては、コア制御部140が命令コードを実行するCPUとしてCPU101を選択し、CPU102、103、104の各々のレジスタ302を未使用レジスタとなるように説明したが、コア制御部140のモードレジスタ142の設定を使用することにより、様々な組み合わせを実現できる。
次に、本発明に係るプログラムトレース装置の第3実施形態について説明する。第1実施形態及び第2実施形態においては、コア制御部140が命令コードを実行するCPUとしてCPU101を選択し、CPU102、103、104の各々のレジスタ302を未使用レジスタとなるように説明したが、コア制御部140のモードレジスタ142の設定を使用することにより、様々な組み合わせを実現できる。
図8は、モードレジスタの設定方法を説明する図である。4つのCPUを有するマルチコアプロセッサ100の場合、モードレジスタ142は、図8(A1)に示すように、1つのCPUに対し4ビットずつ、合計16ビットで構成される。上位の4ビットは、CPU101(CPU1)のための設定であり、次の4ビットは、CPU102(CPU2)のための設定であり、次の4ビットは、CPU103(CPU3)のための設定であり、次の4ビットは、CPU104(CPU4)のための設定である。各々の4ビットの上位の1ビットがCPU101(CPU1)、次の1ビットがCPU102(CPU2)、次の1ビットがCPU103(CPU3)、次の1ビットがCPU104(CPU4)を指し示す。4ビットのうち少なくとも1つのビットに1が設定されている場合、そのCPUは命令コード実行用となり、1が設定されているビットのCPUが未使用レジスタとして使われることを指し示す。
図8(A1)に示すモードレジスタ142の設定は、図8(A2)に示すように第1実施形態及び第2実施形態で説明したCPU101(CPU1)が命令コード実行用、CPU102(CPU2)、CPU103(CPU3)、CPU104(CPU4)が未使用レジスタとして使われる場合の設定である。
図8(B1)に示すモードレジスタ142の設定は、図8(B2)に示すように、CPU101(CPU1)が命令コード実行用でCPU103(CPU3)を未使用レジスタとして使い、CPU102(CPU2)が命令コード実行用でCPU104(CPU4)を未使用レジスタとして使う場合の設定である。
図8(C1)に示すモードレジスタ142の設定は、図8(C2)に示すように、CPU101(CPU1)CPU102(CPU2)、CPU103(CPU3)が命令コード実行用で、CPU104(CPU4)が未使用レジスタとして使われる場合の設定である。
以上は、CPUが4つの場合であり、CPUが8つの場合ならモードレジスタ142は、8ビット×8=64ビットで構成される。すなわち、CPUの数がm個ならば、モードレジスタ142は、m×mビットで構成される。
以上に述べた前記実施形態によれば、以下の効果が得られる。
この構成によれば、複数の中央処理装置を同時に使う場合でも、トレースの保存先をそれぞれ割り当てることができる。
以上、本発明の実施形態を説明したが、本発明はこうした実施の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施し得ることができる。以下、変形例を挙げて説明する。
(変形例1)本発明に係るプログラムトレース装置の第1変形例について説明する。前記第1実施形態では、未使用レジスタの先頭に最新のPC221の値を書き込み、古いPC221の値をレジスタの番号の大きい方向に順送りに書き込むように説明したが、逆に、未使用レジスタの最後のレジスタに最新のPC221の値を書き込み、古いPC221の値をレジスタの番号の小さい方向に順送りに書き込むようにしてもよい。この場合、書込みレジスタ特定レジスタ225には、未使用レジスタの先頭位置を設定しておけばよい。
(変形例2)本発明に係るプログラムトレース装置の第2変形例について説明する。前記第2実施形態では、未使用レジスタの最初のレジスタを位置管理レジスタとして設定したが、未使用レジスタのどのレジスタを位置管理レジスタとして設定しても構わない。
(変形例3)本発明に係るプログラムトレース装置の第3変形例について説明する。前記第1実施形態および第2実施形態では、ステップS112もしくはステップS212において「レジスタデータのトレース」を行なっているが、トレース結果がいっぱいになったら、一番古いトレースデータを上書きしていき、デバッグ用コンピュータからの制御、あるいはプログラム中のBREAK命令でCPUの処理を停止した時点で、トレース結果をデバッグ用コンピュータに送るようにしてもよい。
1…プログラムトレース装置、10…マイクロコンピュータ、20…デバッグ用コンピュータ、100…マルチコアプロセッサ、101〜104…中央処理装置(CPU)、110…メインメモリ、111…命令コード記憶領域、112…データ記憶領域、120…入力装置、130…出力装置、140…コア制御部、141…トレース制御部、142…モードレジスタ、200…制御部、210…命令レジスタ(IR)、220…順序制御部、221…プログラムカウンタ(PC)、222…PCインクリメント、223…PC送信部、224…トレース実行フラグ、225…書込みレジスタ特定レジスタ、230…制御信号生成回路(デコーダ)、300…演算部、301…演算回路、302…レジスタ、303〜308…スイッチゲート、310、311…出力バス、312…入力バス。
Claims (6)
- (1)命令コード記憶領域と、データ記憶領域と、を有するメインメモリと、
(2)前記命令コード記憶領域から命令コードを読み出すアドレスを指定するプログラムカウンタを制御する順序制御部と読み出した前記命令コードを解釈し制御信号を生成する制御信号生成回路とを有する制御部と、前記制御信号に従い演算を行う演算回路と複数のレジスタとを有する演算部と、を各々有する複数の中央処理装置と、前記複数の中央処理装置を制御するコア制御部と、からなるマルチコアプロセッサと、
から構成されるマイクロコンピュータのプログラムトレース装置において、
前記コア制御部は、トレース制御部を有し、
前記順序制御部は、前記プログラムカウンタの遷移に応じて、前記プログラムカウンタの値を前記トレース制御部に送信するプログラムカウンタ送信部を有し、
前記トレース制御部は、前記プログラムカウンタの値を受信すると、前記複数の中央処理装置のうち前記命令コードの実行のために使用していない前記中央処理装置の未使用レジスタに前記プログラムカウンタの値を順次書き込む、
ことを特徴とするプログラムトレース装置。 - 請求項1に記載のプログラムトレース装置において、前記トレース制御部は、前記マイクロコンピュータのプログラムトレースを行うデバッグ用コンピュータから前記未使用レジスタの先頭アドレスを取得し、前記プログラムカウンタの値を前記未使用レジスタの前記先頭アドレスに書き込む前に、すでに前記未使用レジスタに書き込まれた前記プログラムカウンタの値を次のアドレスの前記未使用レジスタに順送りに書き込んだ後、前記プログラムカウンタの値を前記未使用レジスタの前記先頭アドレスに書き込む、ことを特徴とするプログラムトレース装置。
- 請求項1に記載のプログラムトレース装置において、前記トレース制御部は、前記未使用レジスタの所定のレジスタを前記未使用レジスタの前記プログラムカウンタの値を書き込むアドレスを管理する位置管理レジスタとし、前記デバッグ用コンピュータから取得した前記未使用レジスタの先頭アドレスを前記位置管理レジスタの初期値として記録し、前記位置管理レジスタに基づき前記未使用レジスタのアドレスに前記プログラムカウンタの値を書き込み、書き込み後、前記位置管理レジスタのアドレスを次のアドレスに更新する、ことを特徴とするプログラムトレース装置。
- 請求項1から3のいずれか一項に記載のプログラムトレース装置において、前記トレース制御部は、前記プログラムカウンタの値が前記制御信号生成回路または前記演算部からの指示に基づき変化した場合に、変化する前の前記プログラムカウンタの値を前記未使用レジスタに書き込む、ことを特徴とするプログラムトレース装置。
- 請求項1から4のいずれか一項に記載のプログラムトレース装置において、前記コア制御部は、前記複数の中央処理装置が各々どの前記中央処理装置を前記プログラムカウンタの値の保存先として使用するかを指定するモードレジスタを有する、ことを特徴とするプログラムトレース装置。
- (1)命令コード記憶領域と、データ記憶領域と、を有するメインメモリと、
(2)前記命令コード記憶領域から命令コードを読み出すアドレスを指定するプログラムカウンタを制御する順序制御部と読み出した前記命令コードを解釈し制御信号を生成する制御信号生成回路とを有する制御部と、前記制御信号に従い演算を行う演算回路と複数のレジスタとを有する演算部と、を各々有する複数の中央処理装置と、前記複数の中央処理装置を制御するコア制御部と、からなるマルチコアプロセッサと、
から構成されるマイクロコンピュータのプログラムトレース装置において、
前記コア制御部は、トレース制御部を有し、
前記順序制御部は、前記プログラムカウンタの遷移に応じて、前記プログラムカウンタの値を前記トレース制御部に送信するプログラムカウンタ送信工程を有し、
前記トレース制御部は、前記プログラムカウンタの値を受信すると、前記複数の中央処理装置のうち前記命令コードの実行のために使用していない前記中央処理装置の未使用レジスタに前記プログラムカウンタの値を順次書き込む、
ことを特徴とするプログラムトレース方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005347549A JP2007156594A (ja) | 2005-12-01 | 2005-12-01 | プログラムトレース装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005347549A JP2007156594A (ja) | 2005-12-01 | 2005-12-01 | プログラムトレース装置及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007156594A true JP2007156594A (ja) | 2007-06-21 |
Family
ID=38240912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005347549A Withdrawn JP2007156594A (ja) | 2005-12-01 | 2005-12-01 | プログラムトレース装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007156594A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102008027723A1 (de) | 2007-06-13 | 2008-12-18 | Denso Corporation, Kariya | Bildverarbeitungsvorrichtung zum Verringern von Effekten von Nebel bezüglich Abbildungen, die von einer in ein Fahrzeug eingebauten Kamera erzielt werden, und Fahrerunterstützungsvorrichtung, welche sich ergebende verarbeitete Abbildungen verwendet |
JP2015095061A (ja) * | 2013-11-12 | 2015-05-18 | 日立オートモティブシステムズ株式会社 | 車載用制御装置のロギングシステム |
-
2005
- 2005-12-01 JP JP2005347549A patent/JP2007156594A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102008027723A1 (de) | 2007-06-13 | 2008-12-18 | Denso Corporation, Kariya | Bildverarbeitungsvorrichtung zum Verringern von Effekten von Nebel bezüglich Abbildungen, die von einer in ein Fahrzeug eingebauten Kamera erzielt werden, und Fahrerunterstützungsvorrichtung, welche sich ergebende verarbeitete Abbildungen verwendet |
JP2015095061A (ja) * | 2013-11-12 | 2015-05-18 | 日立オートモティブシステムズ株式会社 | 車載用制御装置のロギングシステム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100350568B1 (ko) | 디버그기능을수행하기위한데이타처리시스템및방법 | |
US7849450B1 (en) | Devices, methods and computer program products for reverse execution of a simulation | |
US6539500B1 (en) | System and method for tracing | |
EP1754156B1 (en) | Data processing system with trace co-processor | |
JP5905911B2 (ja) | シングルステップ実行を用いる診断コード | |
JPH06314213A (ja) | デバッグ装置 | |
US7562258B2 (en) | Generation of trace elements within a data processing apparatus | |
CN101084485A (zh) | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 | |
KR20110070468A (ko) | 인스트루먼테이션 실행 장치 및 방법 | |
US7788543B2 (en) | Methods and systems for generating and storing computer program execution trace data | |
US20090100413A1 (en) | Stack Walking Enhancements Using Sensorpoints | |
TW200903338A (en) | Transactional debugger for a transactional memory system | |
US10162324B2 (en) | Method for manipulating a control program of a control device | |
CN110431536B (zh) | 实现整个数据结构上的断点 | |
JP2005128692A (ja) | シミュレータ及びシミュレーション方法 | |
JP2007156594A (ja) | プログラムトレース装置及び方法 | |
US10962593B2 (en) | System on chip and operating method thereof | |
JP2009175960A (ja) | 仮想マルチプロセッサシステム | |
JP2009223714A (ja) | 演算回路及び演算回路の異常解析方法 | |
Cho et al. | AndroScope: An Insightful Performance Analyzer for All Software Layers of the Android‐Based Systems | |
JP2012155519A (ja) | シミュレーション装置、シミュレーション方法およびそのコンピュータ・プログラム | |
JP4725240B2 (ja) | データトレース方法およびトレースモジュール | |
JP2005353020A (ja) | コンピュータプログラムのシミュレーション方式 | |
JP4806577B2 (ja) | トレースデータ記録装置 | |
JP2007156593A (ja) | プログラムトレース装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20070405 |
|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20090203 |