(57)【特許請求の範囲】
【請求項１】
ＣＰＵがプログラムフェッチ又はデータ読み書きを行う時のＣＰＵステータス、アドレスバス、及びデータバスを含むバス情報と、プログラム実行開始からＣＰＵクロックに同期してサイクル数をカウントするリアルタイムカウンタのカウント値とを、所定のサイクル時にトレースメモリに書き込むトレースデータ記録装置において、
バス情報をトレースメモリに書き込むサイクルを判定する書き込みサイクル判定手段と、
バス情報をトレースメモリに書き込んだサイクルからの経過サイクルをカウントするｎビットカウンタと、
トレースメモリにリアルタイムカウンタの値を書き込むか、バス情報とｎビットカウンタの値を書き込むかを制御し、トレースメモリの各アドレスに記録される情報がリアルタイムカウンタからの値か、バス情報かを識別する情報識別フラグをトレースメモリに書き込むトレース情報書き込み手段とを備え、
トレース情報書き込み手段は、ｎビットカウンタでカウントアップした状態になれば、リアルタイムカウンタの値をトレースメモリに更新し続け、
サイクル判定手段がバス情報をトレースメモリに書き込むサイクルであると判定すれば、トレースメモリの書き込みアドレスをインクリメントして、バス情報とｎビットカウンタの値を書き込み、ｎビットカウンタをリセットしてｎビットカウンタのカウントを開始する
ことを特徴とするトレースデータ記録装置。
【請求項２】
リアルタイムカウンタのクロックと、ＣＰＵの動作クロックが非同期であり、若しくは周波数が異なっており、
ｎビットカウンタがカウントアップした状態になるまでの時間が、リアルタイムカウンタの下位ｍビットがカウントアップした状態になるまでの時間よりも、短くなるように設定され、
トレース情報書き込み手段が、バス情報を書き込むときに、バス情報とリアルタイムカウンタの下位ｍビットをトレースメモリに書き込む
ことを特徴とする請求項１に記載のトレースデータ記録装置。
【請求項３】
トレースメモリにバス情報が書き込まれた直後のリアルタイムカウンタの値を記憶して、リアルタイムカウンタが周回するのを監視するリアルタイムカウンタ監視手段を更に含み、
リアルタイムカウンタ監視手段は、トレースメモリにバス情報が書き込まれた直後のリアルタイムカウンタの値を記憶したときから、リアルタイムカウンタが一周したことを検出すると、トレース情報書き込み手段にその旨を通知し、
トレース情報書き込み手段は、リアルタイムカウンタが一周した旨の上記の通知を受けると、トレースメモリへの書き込みアドレスをインクリメントしリアルタイムカウンタの値をトレースメモリに書き込むことを特徴とする請求項１又は２に記載のトレースデータ記録装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの開発およびデバッグに使用するインサーキットエミュレータおよびデバッグシステムに関し、特に、トレースデータ記録装置に関する。
【背景技術】
【０００２】
各種システム装置のための組み込み型プログラムの開発においては、プロセッサの動作状況をトレースメモリに取り込み、トレースメモリの内容を解析してデバッグを行う、という手法が一般的に取られている。
【０００３】
近年、プロセッサの動作速度の高速化が著しい。そのため、プロセッサ内部のトレースバスを外部に引き出してデバックの解析を行うことが、事実上不可能になっている。そこで、プロセッサの動作につき、リアルタイムトレースを行なおうとする場合には、プロセッサ内部にトレースメモリを搭載する必要がある。
【０００４】
しかし、トレースメモリのサイズはコストに大きく影響するため、メモリサイズにも事実上制約がある。そのため、トレースメモリを有効に利用することが課題となっている。
【０００５】
トレースメモリの利用時にトレースメモリへの書込みデータ量を少なくする方法として一般的に用いられているものは、次のような方法である。
（１）まず、プログラムが連続したアドレスで実行されている間はトレースメモリへのデータの取り込みを行わない。
（２）分岐命令のサイクルのときのみ、トレースメモリにデータを取り込む。
【０００６】
上記方法によれば、メモリの使用量は抑えられる。この方法では、トレースメモリへの書き込みの時間間隔がランダムになるため、タイムスタンプの記録が必要になる。タイムスタンプを記録することについては、通常メモリのビット幅を広げることで対応する。
【０００７】
このように、バス情報とタイムスタンプをトレースメモリに書き込むことになる。ここで、オーバーフローの頻発を回避するためには、タイムスタンプにはバス情報と同程度のビット幅が必要である。しかし、そうすると、トレースメモリとして取り込めるフレーム数が半減してしまう。
【０００８】
なお、特許文献１に開示される発明は、プログラムトレースデータ記録方式およびトレースメモリに関するものであり、特許文献２は、情報処理システムのトレース情報記録装置に関するものである。いずれの発明でも、常にタイムスタンプの差分がトレースデータとともにトレースメモリに記録されている。
【特許文献１】特開２００４−３０５０５公報
【特許文献２】特開平４−２５７９３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、トレースメモリのビット幅を抑え、最小限の情報量でタイムスタンプを管理し、トレースメモリを有効に活用するトレースデータ記録装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、上記の目的を達成するためになされたものである。本発明に係る請求項１に記載のトレースデータ記録装置は、
ＣＰＵがプログラムフェッチ又はデータ読み書きを行う時のＣＰＵステータス、アドレスバス、及びデータバスを含むバス情報と、プログラム実行開始からＣＰＵクロックに同期してサイクル数をカウントするリアルタイムカウンタのカウント値とを、所定のサイクル時にトレースメモリに書き込むトレースデータ記録装置において、
バス情報をトレースメモリに書き込むサイクルを判定する書き込みサイクル判定手段と、
バス情報をトレースメモリに書き込んだサイクルからの経過サイクルをカウントするｎビットカウンタと、
トレースメモリにリアルタイムカウンタの値を書き込むか、バス情報とｎビットカウンタの値を書き込むかを制御し、トレースメモリの各アドレスに記録される情報がリアルタイムカウンタからの値か、バス情報かを識別する情報識別フラグをトレースメモリに書き込むトレース情報書き込み手段とを備え、
トレース情報書き込み手段は、ｎビットカウンタでカウントアップした状態になれば、リアルタイムカウンタの値をトレースメモリに更新し続け、
サイクル判定手段がバス情報をトレースメモリに書き込むサイクルであると判定すれば、トレースメモリの書き込みアドレスをインクリメントして、バス情報とｎビットカウンタの値を書き込み、ｎビットカウンタをリセットしてｎビットカウンタのカウントを開始することを特徴とする。
【００１１】
本発明に係る請求項２に記載のトレースデータ記録装置は、
リアルタイムカウンタのクロックと、ＣＰＵの動作クロックが非同期であり、若しくは周波数が異なっており、
ｎビットカウンタがカウントアップした状態になるまでの時間が、リアルタイムカウンタの下位ｍビットがカウントアップした状態になるまでの時間よりも、短くなるように設定され、
トレース情報書き込み手段が、バス情報を書き込むときに、バス情報とリアルタイムカウンタの下位ｍビットをトレースメモリに書き込む
ことを特徴とする請求項１に記載のトレースデータ記録装置である。
【００１２】
本発明に係る請求項３に記載のトレースデータ記録装置は、
トレースメモリにバス情報が書き込まれた直後のリアルタイムカウンタの値を記憶して、リアルタイムカウンタが周回するのを監視するリアルタイムカウンタ監視手段を更に含み、
リアルタイムカウンタ監視手段は、トレースメモリにバス情報が書き込まれた直後のリアルタイムカウンタの値を記憶したときから、リアルタイムカウンタが一周したことを検出すると、トレース情報書き込み手段にその旨を通知し、
トレース情報書き込み手段は、リアルタイムカウンタが一周した旨の上記の通知を受けると、トレースメモリへの書き込みアドレスをインクリメントしリアルタイムカウンタの値をトレースメモリに書き込むことを特徴とする請求項１又は２に記載のトレースデータ記録装置である。
【発明の効果】
【００１３】
本発明を利用することにより、トレースデータ記録装置において、トレースメモリのビット幅を抑え、最小限の情報量でタイムスタンプを管理し、トレースメモリを有効に活用できる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明に係る好適な実施形態を説明する。
【００１５】
［第１の実施形態］
本発明の第１の実施形態に係るトレースデータ記録装置は、概略、トレースメモリへの前回の書き込みから一定時間以内であれば、バス情報とタイムスタンプの差分（ｎビット）データとをトレースメモリに書き込み、一定時間以上経過したのであれば、次のトレース情報の書き込みまでタイムスタンプを全ビットトレースメモリに書き込む、というものである。
【００１６】
図１は、本発明の第１の実施形態に係るトレースデータ記録装置である。図２は、本発明の第１の実施形態に係るトレースデータ記録装置を構成するトレースメモリの記録状況を示す模式図である。図３は、本発明の第１の実施形態に係るトレースデータ記録装置を構成するトレース情報書き込み手段１２の動作のフローチャートである。
【００１７】
図１に示すトレースデータ記録装置を構成するエバリュエーションチップ２のＣＰＵ２Ａは、システムクロックによって動作し、ステータス（５４）、アドレスバス（５２）、データバス（５０）などのバス情報がトレースデータとなる。
【００１８】
リアルタイムカウンタ４は、ＣＰＵ２Ａのプログラム実行開始と同時にカウントを開始する。書き込みサイクル判定手段８は、バス情報を監視し、分岐命令などのプログラムフェッチやリード／ライト・サイクルなどのトレースメモリ６に書き込むべきトレースデータを検出すると、トレース情報書き込み手段１２に対してトレースデータ書き込みを要求する。
【００１９】
トレース情報書き込み手段１２は、プログラムが実行開始すると、ｎビットカウンタ１０を“カウントアップした状態”にし（図３・Ｓ０２）、リアルタイムカウンタ４の値をトレースメモリ６の先頭アドレスに繰り返し書き込む（図３・Ｓ０４、Ｓ０６、Ｓ０８・ＮＯ）。
【００２０】
書き込みサイクル判定手段８からトレースデータ書き込み要求があると（図３・Ｓ０８・ＹＥＳ）、トレース情報書き込み手段１２は、ｎビットカウンタ１０が“カウントアップした状態”とされていることから、トレースメモリ６への書き込みアドレスをインクリメントして（図３・Ｓ１０）、バス情報とｎビットカウンタ１０の値とをトレースメモリ６に書き込み（図３・Ｓ１２）、ｎビットカウンタ１０のカウントを開始する（図３・Ｓ１４）。
【００２１】
トレース情報書き込み手段１２は、ｎビットカウンタ１０が“カウントアップした状態”になるまでは、リアルタイムカウンタ４の値のトレースメモリ６への書き込みを停止し（図３・Ｓ１６・ＮＯ、Ｓ１８・ＮＯ）、ｎビットカウンタ１０が“カウントアップした状態”となること、若しくは書き込みサイクル判定手段８からの書き込み要求の発生を待つ。
【００２２】
以降、ｎビットカウンタ１０が“カウントアップした状態”になる前に（図３・Ｓ１６・ＮＯ）、書き込みサイクル判定手段８からの書き込み要求があれば（図３・Ｓ１８・ＹＥＳ）、上記動作（Ｓ１０、Ｓ１２、Ｓ１４）を繰り返す。即ち、トレース情報書き込み手段１２は、トレースメモリ６への書き込みアドレスをインクリメントして（図３・Ｓ１０）、バス情報とｎビットカウンタ１０の値とをトレースメモリ６に書き込み（図３・Ｓ１２）、ｎビットカウンタ１０をリセットして再びカウント開始する（図３・Ｓ１４）。
【００２３】
書き込みサイクル判定手段８からの書き込み要求が来る前にｎビットカウンタ１０が“カウントアップした状態”になると（図３・Ｓ１６・ＹＥＳ）、トレース情報書き込み手段１２は、トレースメモリ６への書き込みアドレスをインクリメントし（図３・Ｓ２０）、リアルタイムカウンタ４の値を書き込み続ける（図３・Ｓ０６、Ｓ０８・ＮＯ）。
【００２４】
図２では、本発明の第１の実施形態に係るトレースデータ記録装置を構成するトレースメモリ６の記録状況、即ち、トレースメモリ６上のデータ構造が示される。情報識別フラグは、データ内容がリアルタイムカウンタ４（の値）のときは“０”であり、データ内容がバス情報及びｎビットカウンタ１０（の値）のときは“１”である。情報識別フラグの設定は、トレース情報書き込み手段１２が行う。
【００２５】
第１の実施形態では、リアルタイムカウンタ４、及びｎビットカウンタ１０は、ＣＰＵ１Ａと同じシステムクロックで動作している。このため、図１ではそれらに関する記述を省略している。
【００２６】
また、第１の実施形態に係るトレースデータ記録装置では、デバッグ制御手段１６がトレースデータ読み出し手段１４を制御することにより、トレースメモリ６に記録されたトレースデータが読み出され、通信手段２０を経由してホストコンピュータ２２上のトレースデータ復元手段２６に展開されている。ここで、トレースデータは、トレースメモリ６からシリアルもしくはパラレルの専用出力手段を用いて外部に出力されてもよい。
【００２７】
［第２の実施形態］
本発明の第２の実施形態に係るトレースデータ記録装置は、概略、ＣＰＵのクロックとタイムスタンプのクロックとが異なる場合でも、矛盾無く経過時間を算出でき、且つ、トレースメモリ６に記録するタイムスタンプのためのビット幅を増やすことなく、トレースデータを記録できるようにするものである。
【００２８】
つまり、上述の第１の実施形態に係るトレースデータ記録装置と異なり、リアルタイムカウンタ４によるタイムスタンプのクロック（第２のクロック発生手段４２）が、ＣＰＵのシステムクロック（第１のクロック発生手段４０）と異なる場合には、経過時間の算出結果に誤差を含み得ることになる。ｎビットカウンタ１０のクロックとしてリアルタイムカウンタ４のクロックを使用することも可能であるが、ＣＰＵクロックよりもリアルタイムカウンタ４のクロックが速い場合には、ｎビットカウンタ１０のカウントアップ時間が短くなり、結果としてトレースメモリ６に取り込まれるデータのビット幅が、増やされなければならないことになる。
【００２９】
そこで、本発明の第２の実施形態に係るトレースデータ記録装置では、リアルタイムカウンタ４の下位ビット（下位ｍビット）を、バス情報と共に書き込む差分データとして利用する。図４は、本発明の第２の実施形態に係るトレースデータ記録装置の一部である。図５は、本発明の第２の実施形態に係るトレースデータ記録装置を構成するトレースメモリ６の記録状況を示す模式図である。第２の実施形態に係るトレースデータ記録装置は、第１の実施形態に係るトレースデータ記録装置と略同様のものである。従って、図４では両者の差異を中心に示している。
【００３０】
図４に示すｎビットカウンタ１０では、ｎビットカウンタ１０が“カウントアップした状態”になるまでの時間が、リアルタイムカウンタ４の下位ｍビットが“カウントアップした状態”になるまでの時間よりも、やや短くなるように、設定する。図５に示すように、トレース情報書き込み手段１２は、書き込みサイクル判定手段８から書き込み要求があると（図３・Ｓ０８、Ｓ１８参照）、バス情報とリアルタイムカウンタ４の下位ｍビットとをトレースメモリ６に書き込み（同・Ｓ１２参照）、ｎビットカウンタ１０のカウントを開始する（同・Ｓ１４参照）。以降のトレース情報書き込み手段１２の動作は、第１の実施形態と同様である。トレースメモリ６のデータ構造の全体は図５のようになり、バス情報の場合にはリアルタイムカウンタ４の下位ｍビットの値が書き込まれている。このことにより、経過時間の計算が可能となる。
【００３１】
［第３の実施形態］
本発明の第３の実施形態に係るトレースデータ記録装置は、概略、タイムスタンプのカウンタのビット幅を越える時間の記録をできるようにするものである。つまり、第１及び第２の実施形態に係るトレースデータ記録装置では、タイムスタンプの計測に使用しているカウンタ（リアルタイムカウンタ４）の備えるビット数で計測できる範囲には制限があり、カウンタがオーバーフローした後には経過時間を算出できない。
【００３２】
そこで、本発明の第３の実施形態に係るトレースデータ記録装置では、リアルタイム監視手段１８を設ける。図６は、本発明の第３の実施形態に係るトレースデータ記録装置の一部である。図７は、本発明の第３の実施形態に係るトレースデータ記録装置を構成するトレースメモリの記録状況を示す模式図である。第３の実施形態に係るトレースデータ記録装置も、第１の実施形態に係るトレースデータ記録装置と略同様のものである。従って、図６では両者の差異を中心に示している。
【００３３】
上記の第１の実施形態で説明したように、トレース情報書き込み手段１２は、書き込みサイクル判定手段８からの書き込み要求があると、トレースメモリ６にトレースデータを書き込んでｎビットカウンタ１０のカウントを開始し、ｎビットカウンタ１０が“カウントアップした状態”になると、トレースメモリ６にリアルタイムカウンタ４の値を書き込み始める。このとき、リアルタイムカウンタ監視手段１８は、トレースメモリ６に書き込み始めた時のカウント値を記憶し、リアルタイムカウンタ４で再びその値が登場するまでリアルタイムカウンタ４を監視する。即ち、リアルタイムカウンタ監視手段１８は、リアルタイムカウンタ４の周回を監視する。
【００３４】
ここで、リアルタイムカウンタ監視手段１８は、リアルタイムカウンタ４が一周したことを検出すると、トレース情報書き込み手段１２にその旨を通知する。トレース情報書き込み手段１２は、リアルタイムカウンタ４が一周した旨の通知を受けると、トレースメモリ６への書き込みアドレスをインクリメントし、更にリアルタイムカウンタ４の値をトレースメモリ６に書き込む。
【００３５】
以上の動作により、トレースメモリ６に記録されたトレースデータにおいて、図７に示すようにリアルタイムカウンタ４の値が連続して書き込まれる箇所が発生し得る。このとき、情報識別フラグ“０”のデータが連続する箇所の連続する個数から“１”だけ引いた数が、そのときにリアルタイムカウンタ４が周回した回数を示すことになる。
【図面の簡単な説明】
【００３６】
【図１】本発明の第１の実施形態に係るトレースデータ記録装置である。
【図２】本発明の第１の実施形態に係るトレースデータ記録装置を構成するトレースメモリの記録状況を示す模式図である。
【図３】本発明の第１の実施形態に係るトレースデータ記録装置を構成するトレース情報書き込み手段１２の動作のフローチャートである。
【図４】本発明の第２の実施形態に係るトレースデータ記録装置の一部である。
【図５】本発明の第２の実施形態に係るトレースデータ記録装置を構成するトレースメモリの記録状況を示す模式図である。
【図６】本発明の第３の実施形態に係るトレースデータ記録装置の一部である。
【図７】本発明の第３の実施形態に係るトレースデータ記録装置を構成するトレースメモリの記録状況を示す模式図である。
【符号の説明】
【００３７】
２・・・エバリュエーションチップ、２Ａ・・・ＣＰＵ、４・・・リアルタイムカウンタ、６・・・トレースメモリ、１０・・・ｎビットカウンタ、１２・・・トレース情報書き込み手段、１８・・・リアルタイムカウンタ監視手段。
【図１】
0004806577.tif 000002
【図２】
0004806577.tif 000003
【図３】
0004806577.tif 000004
【図４】
0004806577.tif 000005
【図５】
0004806577.tif 000006
【図６】
0004806577.tif 000007
【図７】
0004806577.tif 000008