(57)【要約】【課題】  回路基板のトレース情報の収集処理を，チップ上の簡易な組み込み機構を使用して実現することを目的とする。【解決手段】  トレース情報収集システム１では，トレース情報収集装置１０のカウンタ部１５がプログラムの実行開始時からインクリメントするカウンタ値を生成し，タイマ部１３が所定の期間毎に割り込み信号を発生する。トレース用インタフェース１１は，割り込み信号を受信すると，カウンタ値を取得し，対応するコンポーネントから取得したトレース情報にカウンタ値を付加する。カウンタ値付きトレース情報は，データ収集部１７とポート部１９を介して出力される。トレース情報処理装置２０のデータ取得部２１は，カウンタ値付きトレース情報を取得し，データソート部２１は，カウンタ値でトレース情報をソートして，トレース情報記憶部２３に格納する。【選択図】  図１
2011100388.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行する回路が出力するトレース情報を収集するトレース情報収集装置であって，
プログラムを実行する回路と，
前記プログラムの実行サイクル毎にカウンタ値をインクリメントするカウンタ部と，
前記回路が出力するトレース情報を取り込むタイミングにおける前記トレース情報と，該取り込みタイミングにおける前記カウンタ部のカウント値とを出力する収集部と
を備えることを特徴とするトレース情報収集装置。
【請求項２】
所定の周期で割り込み信号を出力するタイム部と，
前記収集部が出力したトレース情報とカウンタ値とを，所定ポートから前記トレース情報装置の外部へ出力するポート部と，を更に備え，
前記カウンタ部は，前記プログラムの実行開始時に前記カウンタ値を初期化して，前記プログラムの実行サイクル毎に前記カウンタ値をインクリメントし，
前記収集部は，出力された割り込み信号を受信すると，前記回路が出力したトレース情報と前記カウンタ値とを前記ポート部に出力する，
ことを特徴とする請求項１記載のトレース情報収集装置。
【請求項３】
前記回路は，プロセッサまたはハードマクロである，
ことを特徴とする請求項１または請求項２に記載のトレース情報収集装置。
【請求項４】
前記収集部は，前記回路から，複数のサイクルに対応するトレース情報を時間順に保持して，前記割り込み信号を受信した場合に，前記保持しているトレース情報と前記カウンタ値とを出力する，
ことを特徴とする請求項１から請求項３の何れか一項に記載のトレース情報収集装置。
【請求項５】
乱数を生成する乱数生成部を備えて，
前記タイマ部は，生成された乱数に基づいて前記周期を延長または短縮した時に，前記割り込み信号を出力する，
ことを特徴とする請求項１から請求項４の何れか一項に記載のトレース情報収集装置。
【請求項６】
前記プログラムは，連続して複数回実行される
ことを特徴とする請求項１から請求項５のいずれか一項に記載のトレース情報収集装置。
【請求項７】
プログラムを実行する回路が出力するトレース情報を処理するトレース情報処理装置であって，
回路でプログラムが実行され，前記プログラムの実行サイクル毎に前記カウンタ値をインクリメントし，前記回路が出力するトレース情報を取り込むタイミングにおける前記トレース情報と，該取り込みタイミングにおける前記カウンタ部のカウント値とを出力するするトレース情報収集装置から，前記トレース情報と前記カウンタ値とを取得するトレース情報取得部と，
取得したトレース情報を前記カウンタ値に基づいてソートするソート処理部と，
ソートされたトレース情報を記憶するトレース情報記憶部と，
を備えることを特徴とするトレース情報処理装置。
【請求項８】
回路基板を構成する回路ブロックのトレース情報を取得するために，該回路基板上に設けられたトレース情報収集装置および該トレース情報収集装置と接続するトレース情報処理装置が実行するトレース情報収集方法であって，
前記トレース情報収集装置が，前記プログラムの実行サイクル毎にカウンタ値をインクリメントする処理ステップと，
前記トレース情報収集装置が，前記回路が出力するトレース情報を取り込むタイミングにおける前記トレース情報と，該取り込みタイミングにおける前記カウンタ部のカウント値とを出力する処理ステップと，
前記トレース情報処理装置が，前記トレース情報と前記カウンタ値とを取得する処理ステップと，
前記トレース情報収集装置が，取得したトレース情報を前記カウンタ値に基づいてソートする処理ステップと，
を備えることを特徴とするトレース情報収集方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ＬＳＩチップを構成するＣＰＵ，ハードマクロ（チップ上にマスク固定のハードウェアとして組み込まれている回路ブロック），バス等のコンポーネントの各トレース情報収集技術に関する。
【背景技術】
【０００２】
トレースとは，対象となるチップ上のＣＰＵ，ハードマクロ，バス等の動作の記録情報であって外部に読み出し可能なトレース情報を収集する技術である。一般的に，トレース情報は，チップ上のコンポーネントの内部状態を忠実に表現するものであるため，デバッグ，問題解析，各種評価等を行うために広く利用されている。
【０００３】
トレースを用いる処理手法として，非浸襲型の，エンベデッドトレースによるデバッグ手法が知られている。
【０００４】
このエンベデッドトレースによるデバッグ手法では，高速で動作する対象コンポーネントから，それぞれの動作情報をサイクル単位で収集し，バックプレーンの専用ルートを使用して外部へ転送する。その後，外部転送されたトレース情報を，開発用ワークステーション，パソコン等で専用ビューワを利用して解析する。
【０００５】
エンベデッドトレースでは，ハードウェアアシスト，すなわち実施構成の一部にハードウェアの利用が伴う。エンベデッドトレースは，対象を停止させないため，最も信頼できる情報が得られるが，一方で，予め定義された記録情報を大量に外部に転送する必要がある。
【０００６】
浸襲型のデバッグ手法としては，ＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）手法が知られている。ＪＴＡＧ手法では，チップ上に構成したブレークポイントやウォッチポイントといった組み込み機能を利用して，ＣＰＵやハードマクロを停止させた後に，レジスタやメモリの参照や変更およびステップ実行などを行いながらデバッグする。対象の動作に手を加え，かつ動作を停止させるため，実際とは異なる動きによる情報が得られてしまう可能性があり，また，ピンポイントでの情報しか得られず，トレースの網羅性に欠ける。しかし，一方で，実装に伴う負担が軽く，多くの場合に細い伝送路で十分に対応できる。
【０００７】
また，別のトレース手法として，タイマースケール値と共通バスのトレース情報とを対応させて記憶しておき，トレース情報の発生時間を特定して，複数のコアに対応するトレースの順番を捕捉するマルチプロセッサシステムのバストレース装置によるものが知られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平３−１２７２５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来，エンベデッドトレースでは，サイクル単位で，予め定義された大量の情報を外部に転送するため，チップ上に，コンポーネントから読み出したトレース情報の外部転送用の機構，さらに，読み出したデータの流量に対応する大容量の中間バッファ，高スループットのインタフェースなどが必要であった。また，チップ外部でも，転送されてくるトレース情報の受信に対応するインタフェース，大容量バッファが同様に必要であった。そのため，全体としては，かなりの規模の物理的容量に対応する必要が生じるという問題があった。
【００１０】
そのため，トレース情報の推定される流量から，エンベデッドトレースの対象が限定されてしまうという問題があった。例えば，トレース対象がプロセッサである場合に，トレース情報は，一般的に，プロセッサの実行履歴であり，命令単位のものとなり，プロセッサが複雑かつ高速である場合は，トレース機構も大規模なものが必要となる。また，対象がハードマクロである場合には，対象のハードマクロの構成によっては，１回のトレースにおけるトレース情報のデータ量が格段に多くなる場合がある。ハードマクロにステートマシンが複数個存在する場合に，各状態データ×ステートマシン数のデータを取り扱う必要があり，より大規模の物理的容量に対応する構成を準備しておかなければならなかった。
【００１１】
以上のように，従来，エンベデッドトレースの機構を組み込むことが可能な対象は，試作チップ，エミュレータ等の比較的小規模のものに限定されていた。また，チップの構成上の制約によって，エンベデッドトレースの機構の組み込みがかなり困難になる場合もあった。
【００１２】
エンベデッドトレースの特長に鑑みれば，チップの最終的形態，すなわち実際の製品形態でエンベデッドトレースの組み込み機構を実施して，トレース情報収集を可能にすることが望まれる。
【００１３】
しかし，構成の高集積化による物理的制約，コンポーネント毎のデータ処理量の増大等により，チップ上にエンベデッドトレースの組み込み機構を適用することが，ますます困難になっている。
【００１４】
本発明は，その一実施態様において，トレース対象のチップ上に大掛かりな組み込み機構を用いることなくトレース情報を外部転送できるトレース情報収集装置，および，対象のチップから出力されるトレース情報を，問題解析や各種評価に使用可能な情報に処理するトレース情報処理装置を提供することを目的とする。
【００１５】
また，本発明は，別の実施態様において，問題解析や各種評価に使用可能なトレース情報を収集するために，トレース対象のチップ上に大掛かりな組み込み機構を用いることなくトレース情報を外部転送できるトレース情報収集装置，および，対象のチップから出力されるトレース情報を処理するトレース情報処理装置が実行する収集方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本願において開示されるトレース情報収集装置およびトレース情報処理装置の代表的なものの概要を簡単に説明すれば，以下のとおりである。
【００１７】
すなわち，トレース情報収集装置は，プログラムを実行する回路が出力するトレース情報を収集する装置であって，プログラムを実行する回路と，前記プログラムの実行サイクル毎にカウンタ値をインクリメントするカウンタ部と，前記回路が出力するトレース情報を取り込むタイミングにおける前記トレース情報と，該取り込みタイミングにおける前記カウンタ部のカウント値とを出力する収集部とを備える。
【００１８】
また，トレース情報処理装置は，プログラムを実行する回路が出力するトレース情報を処理する装置であって，回路でプログラムが実行され，前記プログラムの実行サイクル毎に前記カウンタ値をインクリメントし，前記回路が出力するトレース情報を取り込むタイミングにおける前記トレース情報と，該取り込みタイミングにおける前記カウンタ部のカウント値とを出力するするトレース情報収集装置から，前記トレース情報と前記カウンタ値とを取得するトレース情報取得部と，取得したトレース情報を前記カウンタ値に基づいてソートするソート処理部と，ソートされたトレース情報を記憶するトレース情報記憶部とを備える。
【００１９】
また，本願において開示されるトレース情報収集方法は，回路基板を構成する回路ブロックのトレース情報を取得するために，該回路基板上に設けられたトレース情報収集装置および該トレース情報収集装置と接続するトレース情報処理装置が実行する方法であって，前記トレース情報収集装置が，前記プログラムの実行サイクル毎にカウンタ値をインクリメントする処理ステップと，前記トレース情報収集装置が，前記回路が出力するトレース情報を取り込むタイミングにおける前記トレース情報と，該取り込みタイミングにおける前記カウンタ部のカウント値とを出力する処理ステップと，前記トレース情報処理装置が，前記トレース情報と前記カウンタ値とを取得する処理ステップと，前記トレース情報収集装置が，取得したトレース情報を前記カウンタ値に基づいてソートする処理ステップとを備える。
【発明の効果】
【００２０】
上記開示したトレース情報収集装置によれば，回路基板上の回路ブロックから，サイクル単位ではなく所定のサンプリング周期でトレース情報を収集することができる。
【００２１】
また，上記開示したトレース情報処理装置によれば，プログラムの実行開始時から時間経過順に並ぶトレース情報を取得することができる。
【００２２】
これにより，実際のサンプリング周期に比べて短い間隔でサンプリングした状態と同等のトレース情報の一群を取得することができる。
【００２３】
よって，従来，外部転送するべき情報の流量に対応するために大掛かりな機構が必要であったエンベデッドトレースの機構を大幅に簡略化しつつ，従来と同等のトレース情報を取得することが可能となる。特に，従来では実際には不可能であった，複雑な高速プロセスやハードマクロのトレース情報の収集が可能となる。
【００２４】
例えば，最終形態のチップに，エンベデッドトレースの機構として，上記の開示されたトレース情報収集装置を組み込むことによって，製品チップのトレース情報を直接収集することが可能となる。
【図面の簡単な説明】
【００２５】
【図１】本発明の一実施の形態として開示するトレース情報収集システムの構成例を示す図である。
【図２】本発明の一実施の形態として開示するトレース情報収集システムにおける処理の流れを示す図である。
【図３】本発明の一実施の形態として開示するトレース情報収集システムにおけるトレース情報の流れを模式的に示す図である。
【図４】開示するトレース情報収集システムの一実施例として，トレース情報収集装置がトレース情報をハードウェアにより収集する場合の構成例を示す図である。
【図５】開示するトレース情報収集システムの一実施例として，トレース情報収集装置１０がトレース情報をＣＰＵ処理により収集する場合の構成例を示す図である。
【図６】一実施例におけるタイマ部のロジック構成例を示す図である。
【図７】一実施例におけるカウンタ部のロジック構成例を示す図である。
【図８】一実施例におけるトレース用インタフェース部のロジック構成例を示す図である。
【図９】一実施例におけるトレース情報記憶部の内部構成例を示す図である。
【図１０】一実施例におけるトレース対象がＣＰＵである場合のトレース情報取得の処理フローを示す図である。
【図１１】一実施例におけるトレース対象がハードマクロである場合のトレース情報取得の処理フローを示す図である。
【図１２】図８に示す構成のトレース用インタフェース部の処理フローを示す図である。
【図１３】一実施例におけるトレース情報収集システムでトレース情報収集をする場合に，対象ハードウェアで実行されるプログラム例を示す図である。
【図１４】図１３に示すプログラムの実行時に収集されたトレースデータの例を示す図である。
【図１５】本発明者が検討したエンベデッドトレースの機構を実装した回路基板の構成例を示す図である。
【図１６】図１５に示すエンベデッドトレースの機構の処理フロー例を示す図である。
【図１７】本発明者が検討したエンベデッドトレースの機構におけるチップから外部転送されたトレース情報の格納例を示す図である。
【図１８】本発明者が検討したエンベデッドトレースの機構におけるトレース対象の回路ブロックからサイクル毎に収集されるトレース情報の流れを模式的に示す図である。
【発明を実施するための形態】
【００２６】
まず，本発明の発明者が検討したエンベデッドトレースの機構の一例を説明する。
【００２７】
図１５は，エンベデッドトレースの機構を実装した回路基板の構成例を示す図である。
【００２８】
チップ（ＳｏＣ）９０は，エンベデッドトレースの機構を実装したＳｏＣ（System on a Chip）の回路基板である。チップ９０上のトレース情報の収集対象となるコンポーネントを対象ハードウェア９００とする。ここで，対象ハードウェア９００は回路基板を構成する回路ブロックであり，ＣＰＵ９０１，ハードマクロ９０２，バス９０３，メモリ９０４等の内部コンポーネントを有する。ハードマクロ９０２は，マスク固定のハードウェアとして組み込まれる回路の部分である。
【００２９】
対象ハードウェア９００内には，ＣＰＵ９０１，ハードマクロ９０２，バス９０３の各々に対応してトレース用インタフェース部９１１，９１２，９１３が備えられる。さらに，チップ９０上の対象ハードウェア９００の外部に，データ収集部９２０およびポート部９５０が備えられる。さらに，チップ９０は，外部構成のデバッグ装置９７０が備えられる。
【００３０】
トレース用インタフェース部９１１，９１２，９１３は，対応するチップ９０のＣＰＵ９０１，ハードマクロ９０２，バス９０３から，チップ９０のサイクル単位でトレース情報を取得してレジスタに保持する。ここで，サイクル単位は，チップ９０の処理実行の周期の単位であり，チップ９０のクロックに同期してトレース情報が取得される。
【００３１】
データ収集部９２０は，セレクタ９２１，９２３およびバッファ９２５を備えて，セレクタ９１２，９１３を介してトレース用インタフェース部９１１，９１２，９１３からトレース情報を収集してバッファ９２５に保持する。
【００３２】
ポート部９５０は，トレース用ポート９５１およびデバッグ用ポート９５３を備えて，トレース用ポート９５１を介して，データ収集部９２０のバッファ９２５に格納されるトレース情報を，チップ９０の外部に出力する。例えば，デバッグ装置９７０に転送する。
【００３３】
デバッグ装置９７０は，トレースデータテーブル９７１およびデバッグ処理部９７３を備えて，チップ９０から出力されたトレース情報をトレースデータテーブル９７１で保持し，デバッグ処理部９７３によって所定のデバッグ処理が行われる。デバッグ装置９７０は，例えばＩＣＥ（Ｉｎ−Ｃｉｒｃｕｉｔ  Ｅｍｕｌａｔｏｒ，インテル社の登録商標）である。なお，デバッグ装置９７０は，必要に応じて，トレースデータテーブル９７１に格納するトレース情報を接続するコンピュータ（ＰＣ）へ出力する。
【００３４】
図１６は，図１５に示すチップ９０におけるエンベデッドトレースの機構の処理フロー例を示す図である。
【００３５】
チップ９０のトレース対象ブロックとして，対象ハードウェア９００が設定される（ステップＳ９０）。対象ハードウェア９００でアプリケーションプログラムの動作が開始されると（ステップＳ９１），対象ハードウェア９００の内部コンポーネント各々について，以下の処理が行われる。
【００３６】
対象ハードウェア９００の各トレース用インタフェース部９１１，９１２，９１３が対応する内部コンポーネントからサイクル毎にトレース情報（トレースデータ）を読み出すと，データ収集部９２０が，各トレース用インタフェース部９１１，９１２，９１３からトレースデータを収集してバッファ９２５に一時的に保持する（ステップＳ９２）。その後，ポート部９５０は，トレース用ポート９５１から，トレースデータを順次外部のデバッグ装置９７０へ転送する（ステップＳ９３）。アプリケーションプログラムの実行が継続されている間は（ステップＳ９４），ステップＳ９２の処理へ戻り，トレースデータの収集が繰り返される。
【００３７】
図１７は，チップ９０から外部転送されたトレース情報の格納例を示す図である。
【００３８】
図１７に示すように，デバッグ装置９７０のトレースデータテーブル９７１には，転送順にトレースデータが順次追加される。
【００３９】
対象ハードウェア９００のアプリケーションの動作が継続している間，ステップＳ９２〜Ｓ９４の処理が繰り返される（ステップＳ９５）。
【００４０】
ここで，図１５に示すチップ９０が例えば３２ビットアーキテクチャである場合に，対象ハードウェア９００のＣＰＵ９０１の命令実行およびデータ転送を示すトレース情報のデータ量は，約３２〜１２８byte／サイクルとなる。同様に，ハードマクロ９０２のデータ処理および状態遷移を示すトレース情報のデータ量は，約３２〜１０２４byte／サイクル，バス９０３のデータ転送，転送タイプ等を示すトレース情報のデータ量は，約１６〜２５６byte／サイクルとなる。
【００４１】
したがって，トレース対象の回路ブロックからサイクル毎に収集されるトレース情報の流れを模式的に示す図１８に示すように，トレース対象の回路ブロックの内部コンポーネントから，サイクル毎にトレース情報を収集する場合には，各トレース用インタフェース部９１１，９１２，９１３からデータ収集部９２０へのデータ路のバンド幅を大きくする必要がある。
【００４２】
さらに，チップ９０の物理的制約から，ポート部９５０のトレース用ポート９５１のピン数が制限される場合には，トレース用ポート９５１の規模に対応してデータ収集部９２０のバッファ９２５を大きくする必要がある。
【００４３】
しかし，チップ９０にトレース情報専用の大規模データ路やバッファを設けることは困難な場合がある。特に，チップ９０のポートに制約がある場合には，そもそも，サイクル単位の大量のトレース情報を外部出力させることが困難である。
【００４４】
そのため，エンベデッドトレースの機構が組み込み可能なチップは，比較的小規模のチップに限られていて，高度に集積化したチップ，例えば量産チップに実装することは不可能である。
【００４５】
特に，ハードマクロ９０２のように，サイクル毎のトレース情報が１０００byte超であると見積もられるようなコンポーネントについては，最大のデータ流量を見込んだバンド幅やバッファサイズが必要となるため，トレース対象とすることは実際には不可能である。
【００４６】
以上の考察に基づき，本願の発明者は，回路基板の構成上の負荷とならない規模の組み込み機構を使用して，データ流量を抑止しつつ，後の解析等で使用可能なトレース情報を収集できる機構を発明した。
【００４７】
図１は，本発明の一実施の形態として開示するトレース情報収集システム１の構成例を示す図である。
【００４８】
トレース情報収集システム１は，回路基板（チップ）１００上に搭載されるトレース情報収集装置１０，およびチップ１００の外部に設けられるトレース情報処理装置２０を備える。
【００４９】
チップ１００は，ＳｏＣ（System on a Chip）チップである。
【００５０】
チップ（ＳｏＣ）１００の回路ブロックであって，トレース情報の収集対象となる回路ブロックを対象ハードウェア１００ｂとする。ここで，対象ハードウェア１００ｂは，ＣＰＵ１１０，ハードマクロ１２０，バス１３０，メモリ１４０等のコンポーネントを有する。
【００５１】
トレース情報収集装置１０は，トレース用インタフェース部（トレースＩ／Ｆ）１１，タイマ部１３，カウンタ部１５，データ収集部１７，およびポート部１９を備える。トレース用インタフェース部１１，タイマ部１３およびカウンタ部１５は，対象ハードウェア１００ｂ内に設けられる。
【００５２】
トレース用インタフェース部１１（１１ａ，１１ｂ，１１ｃ）は，プログラム実行中の回路ブロックからトレース情報を取得して，タイマ部１３の割り込み信号を受信すると，取得したトレース情報にカウンタ部１５が生成したカウンタ値を付加して出力する。
【００５３】
より具体的には，トレース用インタフェース部１１は，プログラムを実行している対象ハードウェア１００ｂの内部コンポーネント（ＣＰＵ１１０，ハードマクロ１２０，バス１３０）の対応するものから，チップ１００のサイクル毎にトレース情報を読み出し，読み出したトレース情報を内部のレジスタに書き込む。そして，トレース用インタフェース部１１は，タイマ部１３が生成した割り込み信号を受信すると，カウンタ部１５が生成したカウンタ値を取得して，レジスタに保持していたトレース情報に，取得したカウンタ値を付加して出力する。
【００５４】
本実施の形態では，トレース用インタフェース部１１ａ，１１ｂ，１１ｃが，それぞれ，ＣＰＵ１１０，ハードマクロ１２０，バス１３０に対応してトレース情報を読み出す。
【００５５】
タイマ部１３は，チップ１００のサイクルに基づく所定の期間毎に，割り込み信号を出力する。
【００５６】
タイマ部１３は，乱数を生成する乱数生成部を備えてもよい。この場合に，タイマ部１３は，前記の乱数生成部が生成した乱数に基づいて，所定の期間を延長または短縮した時点で，割り込み信号を生成・出力するようにしてもよい。
【００５７】
カウンタ部１５は，対象ハードウェア１００ｂのプログラムの実行開始時毎に値を初期化して，サイクル毎に値をインクリメントするカウンタ値を生成する。すなわち，カウンタ部１５は，対象ハードウェア１００ｂがプログラムを実行する場合に，そのプログラムが呼び出されて開始される直前にカウンタ値を初期化し，その後にカウンタ値をインクリメントする。
【００５８】
データ収集部１７は，対象ハードウェア１００ｂの各内部コンポーネントに対応するトレース用インタフェース部１１ａ，１１ｂ，１１ｃから，カウンタ値が付加されたトレース情報を取得して，ポート部１９へ渡す。
【００５９】
ポート部１９は，データ収集部１７から，カウンタ値付きのトレース情報を受け取り，所定のトレース用ポート１９１を用いて外部出力する。カウンタ値付きのトレース情報は，チップ１００の外部へ，例えば，デバッグ装置（ＩＣＥ）１５０へ転送され，デバッグ装置１５０を介してトレース情報処理装置２０が受信する。
【００６０】
なお，ポート部１９はデバッグ用の情報を出力するデバッグ用ポートを備えていてもよい。
【００６１】
トレース情報処理装置２０は，データ取得部２１，データソート部２２およびトレース情報記憶部２３を備える。トレース情報処理装置２０は，コンピュータ（ＰＣ）で実施される。
【００６２】
データ取得部２１は，トレース情報収集装置１０から転送された，カウンタ値付きのトレース情報を受信する。
【００６３】
データソート部２２は，データ取得部２１が取得したカウンタ値付きのトレース情報を，カウンタ値でソートして，トレース情報記憶部２３へ格納する。
【００６４】
トレース情報記憶部２３は，データソート部２２でソートされた拡張トレース情報を記憶する。
【００６５】
トレース情報収集システム１のトレース情報収集装置１０がトレース情報に付加するカウンタ値は，プログラムの実行開始時に初期化されてインクリメントされる値であり，トレース対象の回路ブロックで同一のプログラムが複数回実行されている期間中に収集したトレース情報には，共通のカウンタ値が付加されることになる。そして，トレース情報処理システム１のトレース情報処理装置２０がカウンタ値でトレース情報をソートすることによって，複数回の実行中に収集されたトレース情報が，１つの時間軸上でソートされる。
【００６６】
図２は，トレース情報収集システム１における処理の流れを示す図である。
【００６７】
ここで，対象ハードウェア１００ｂのハードマクロ１２０のトレース情報収集を例に説明する。
【００６８】
トレース情報収集装置１０の処理は，対象ハードウェア１００ｂが実行するアプリケーションプログラムを呼び出す親（上位）レイヤのプログラム実行において開始される。
【００６９】
ステップＳ１：  カウンタ部１５は，親レイヤのプログラムの実行によって，カウンタ値を初期化する。続いて，アプリケーションプログラムが呼び出されて実行開始となる。カウンタ部１５は，初期化したカウンタ値をサイクル毎にインクリメント（＋１）する。
【００７０】
ステップＳ２：  対象ハードウェア１００ｂで，アプリケーションプログラムが実行される。
【００７１】
ステップＳ３：  タイマ部１３が，１〜１０ミリ秒（ｍｓ）の間隔で割り込み信号を発生する。この割り込み信号に基づいて，周期的割り込み処理（Ｓ３〜Ｓ６）が開始され，ステップＳ６までの処理が繰り返される。
【００７２】
ステップＳ４：  トレース用インタフェース部１１ｂは，サイクル毎にハードマクロ１２０からトレースデータを取得して内部のレジスタに保持する。そして，トレース用インタフェース部１１ｂは，割り込み信号を受信すると，レジスタのロック設定を行い，レジスタに保持したトレースデータを読み出し，カウンタ部１５が生成したカウンタ値を取得して，読み出したトレースデータにカウンタ値を付加して出力する。
【００７３】
ステップＳ５：  データ収集部１７は，トレース用インタフェース部１１ｂからカウンタ値付きのトレースデータを取得して，ポート部１９を介して外部に出力する。
【００７４】
ステップＳ６：  割り込み処理から復帰する。
【００７５】
ステップＳ７：  対象ハードウェア１００ｂがアプリケーションプログラムの実行を継続している場合には（ステップＳ７のＹ），ステップＳ１の処理へ戻り，アプリケーションプログラムの実行を継続していない場合には（ステップＳ７のＮ），処理を終了する。
【００７６】
ステップＳ８：  トレース情報処理装置２０のデータ取得部２１は，ステップＳ５の処理において外部出力されたカウンタ値付きのトレースデータを受信する。
【００７７】
ステップＳ９：  データソート部２２は，受信したカウンタ値付きのトレースデータを，カウンタ値でソートして，トレース情報記憶部２３に格納する。
【００７８】
図３は，トレース情報収集システム１におけるトレース情報の流れを模式的に示す図である。
【００７９】
トレース情報収集システム１では，トレース情報収集装置１０のトレース用インタフェース部１１ａ，１１ｂ，１１ｃが，割り込み信号に従ってトレースデータを取得する。すなわち，ＣＰＵ１１０，ハードマクロ１２０，バス１３０のトレースデータは，対象ハードウェア１００ｂの動作サイクル単位ではなく，所定のサンプリング周期で収集されるため，トレース情報収集での全体のデータ流量が少なくなる。そのため，データ路，中間バッファ，ポート等の規模を従来よりも小さくすることができる。また，割り込み信号発生の期間を変化させて，組み込み可能な構成規模に対応させたデータ流量でのトレース情報収集が可能となる。
【００８０】
さらに，収集されるトレースデータは，アプリケーションプログラムの実行開始から増加する値をとるカウンタ値が付加されているため，同一のアプリケーションプログラムの実行中に収集されたトレースデータは，同一時間軸上で並び替えられてまとめることができる。そのため，実際のサンプリング周期より短い間隔で取得されたトレースデータ群の収集が実現できる。
【００８１】
したがって，タイマ部１３の周期の設定変更によって，実際のサンプリング周期を変更するだけでなく，アプリケーションプログラムの実行回数の増減によって，目的，用途等に応じた密度でトレース情報を収集することができる。
【００８２】
図４は，開示するトレース情報収集システム１の一実施例として，トレース情報収集装置１０がトレース情報をハードウェアにより収集する場合の構成例を示す図である。
【００８３】
図４に示すトレース情報収集システム１の構成例で用いる各符号は，図１に示す同一の符号に対応する。
【００８４】
図４に示す構成例では，トレース情報収集装置１０のトレース用インタフェース部１１ａ，１１ｂ，１１ｃとデータ収集部１７との間にトレース情報専用のデータ路が設けられる。データ収集部１７は，セレクタ１７１，１７３を備える。データ収集部１７は，データ路を経て，トレース情報の取得先となるトレース用インタフェース部１１ａ，１１ｂ，１１ｃを選択して，カウンタ値付きのトレース情報を収集する。トレース用インタフェース部１１ａ，１１ｂ，１１ｃは，それぞれ，タイマ部１３が生成した割り込み信号とカウンタ部１５が生成したカウンタ値とを受信して，割り込み信号受信時に，カウンタ値を付加したトレース情報を出力する。
【００８５】
図５は，開示するトレース情報収集システム１の一実施例として，トレース情報収集装置１０がトレース情報をＣＰＵ処理により収集する場合の構成例を示す図である。
【００８６】
図５に示すトレース情報収集システム１の構成例で用いる各符号は，図１に示す同一の符号に対応する。
【００８７】
図５に示す構成例では，トレース情報収集装置１０のトレース用インタフェース部１１ａ，１１ｂ，１１ｃで読み出されたトレース情報は，ＣＰＵ１１０のトレース情報収集処理においてデータ収集部１７へ出力される。
【００８８】
ＣＰＵ１１０は，タイマ部１３が生成した割り込み信号を受信して，トレース情報収集処理を行う。トレース情報収集処理では，トレース用インタフェース部１１ａ，１１ｂ，１１ｃが，それぞれ，カウンタ部１５から得たカウンタ値と，対応する内部コンポーネントから取得したトレース情報とを出力し，データ収集部１７が，このカウンタ値付きトレース情報を収集する。
【００８９】
図４または図５に示す構成をとるトレース情報収集システム１によれば，従来のトレース情報収集のようにサイクル単位でのトレース情報転送がないため，データ路のバンド幅が小さくてすみ，データ収集部１７での大規模バッファが不要となる。さらに，トレース情報の外部転送先であるデバッグ装置１５０でも，１回に受信するデータ量が少なくなり，大規模バッファが不要となる。さらに図５に示す構成例によれば，トレース情報専用のデータ路も不要となる。
【００９０】
図１（図４および図５）に示すトレース情報収集装置１０のタイマ部１３は，既知の周期的な割り込み信号発生機構で実施する。また，タイマ部１３は，既知の乱数発生機能を備えてもよい。
【００９１】
図６は，一実施例におけるタイマ部１３のロジック構成例を示す図である。
【００９２】
タイマ部１３には，タイマリセット信号（ｒｅｓｅｔ＿ｔｉｍｅｒ），クロック信号（ｃｌｏｃｋ），中断信号（ｓｕｓｐｅｎｄ）信号が入力される。
【００９３】
タイマ部１３は，タイマ値を，例えば，関数ｒｅｓｅｔ＿ｔｉｍｅｒ（）で生成されるタイマリセット信号（ｒｅｓｅｔ＿ｔｉｍｅｒ）によって，１０ミリ秒（ｍｓ）もしくは乱数を加算した値にリセットし，それ以外では，チップ１００のサイクル毎，すなわちクロック信号（ｃｌｏｃｋ）の入力で常にデクリメント（−１）し続けて，タイマ値＝０で割り込み信号を発生する。
【００９４】
中断信号（ｓｕｓｐｅｎｄ）は，対象ブロックがプログラム実行を中断している場合に“１”となる信号であり，中断しない場合は常時“０”である。中断信号は，例えば，ＣＰＵ１１０，ハードマクロ１２０等によって出力される。
【００９５】
タイマ部１３は，中断信号＝１で，タイマ値のデクリメントを中断する。
【００９６】
タイマ部１３で生成される乱数は，０．１ｍｓ以下の値をとり，乱数を使用しない場合には乱数＝０にセットされる。
【００９７】
図７は，一実施例におけるカウンタ部１５のロジック構成例を示す図である。
【００９８】
カウンタ部１５には，カウンタリセット信号（ｒｅｓｅｔ＿ｃｏｕｎｔｅｒ），クロック信号（ｃｌｏｃｋ），中断信号（ｓｕｓｐｅｎｄ）信号が入力される。
【００９９】
カウンタ部１５は，カウンタ値を，例えば関数ｒｅｓｅｔ＿ｃｏｕｎｔｅｒ（）で生成されるカウンタリセット信号（ｒｅｓｅｔ＿ｃｏｕｎｔｅｒ）によって“０”にリセットし，それ以外では，クロック信号（ｃｌｏｃｋ）の入力で常にインクリメント（＋１）し続ける。カウンタ部１５は，中断信号＝１で，カウンタ値のインクリメントを中断する。
【０１００】
図８は，一実施例におけるトレース用インタフェース部１１のロジック構成例を示す図である。
【０１０１】
トレース用インタフェース部１１には，トレース情報，有効信号（ｖａｌｉｄ），カウンタリセット値，中断信号（ｓｕｓｐｅｎｄ）信号が入力される。
【０１０２】
トレース用インタフェース部１１は，割り込み処理中にレジスタの内容の上書きを禁止するためにレジスタロック機構（Ｉ／Ｆ  Ｌｏｃｋ）を備える。
【０１０３】
トレース用インタフェース部１１は，対象ハードウェア１００ｂの所定の内部コンポーネントから，トレースデータと有効信号とを受け取り，有効信号が“有効（オン）”であれば，受け取ったトレースデータをレジスタに格納する。
【０１０４】
トレース用インタフェース部１１は，レジスタロック機構によって，ロック信号（Ｌｏｃｋ）が“１”であればロック設定を行い，“０”でロック解除を行う。ロックが解除されている間のみレジスタが書き込み可能となる。トレース用インタフェース部１１は，レジスタからトレースデータとカウンタ値の組（拡張トレースデータ）が読み出されると，読み出しと同時にレジスタをリセットとする。
【０１０５】
トレース用インタフェース部１１は，複数のトレースデータ，すなわち，複数のサイクル分のトレースデータをレジスタに格納しておくことができる。この場合には，トレース用インタフェース部１１は，過去の複数サイクル分のトレースデータを一度に出力する。
【０１０６】
図９は，一実施例におけるトレース処理装置２０のトレース情報記憶部２３の内部構成例を示す図である。
【０１０７】
トレース情報記憶部２３には，トレースデータに付加されているカウンタ値をもとに，０から最大値（ＭＡＸ）までの昇順にソート（アセンディングソート）されたトレースデータが格納される。
【０１０８】
図１０は，トレース対象がＣＰＵ１１０である場合のトレース情報取得の処理フローを示す図である。
【０１０９】
ＣＰＵ１１０は，命令をメモリからフェッチし（ステップＳ１００），フェッチした命令を解読し（ステップＳ１０１），命令を実行し（ステップＳ１０２），実行の完了または割込を行う（ステップＳ１０３）という通常の実行ループ中において，命令実行（ステップＳ１０２）と並行して，命令に応じたトレースデータ生成を行う（ステップＳ１０４）。
【０１１０】
ＣＰＵ１１０は，命令が分岐であれば（ステップＳ１０５），プログラムカウンタ（ＰＣ），命令タイプ（Ｔｙｐｅ）＝分岐，分岐先アドレス等を含むトレースデータを生成する（ステップＳ１０６）。また，ＣＰＵ１１０は，命令がＬＤ命令であれば（ステップＳ１０７），プログラムカウンタ（ＰＣ），命令タイプ（Ｔｙｐｅ）＝ＬＤ，ＬＤデータ（レジスタ転送されたデータ），ＬＤアドレス等を含むトレースデータを生成する（ステップＳ１０８）。また，ＣＰＵ１１０は，命令がＳＴ命令であれば（ステップＳ１０９），プログラムカウンタ（ＰＣ），命令タイプ（Ｔｙｐｅ）＝ＳＴ，ＳＴデータ（メモリ転送されたデータ），ＳＴアドレス等を含むトレースデータを生成する（ステップＳ１１０）。また，ＣＰＵ１１０は，命令が演算命令であれば（ステップＳ１１１），プログラムカウンタ（ＰＣ），命令タイプ（Ｔｙｐｅ）＝演算，入力データ，演算結果等を含むトレースデータを生成する（ステップＳ１１２）。
【０１１１】
そして，トレース用インタフェース部１１ａは，ステップＳ１０６，Ｓ１０８，Ｓ１１０，Ｓ１１２の処理で生成されたトレースデータを，内部のレジスタに格納する（ステップＳ１１３）。
【０１１２】
図１１は，トレース対象がハードマクロ１２０である場合のトレース情報取得の処理フローを示す図である。
【０１１３】
ハードマクロ１２０は，選択された実行ステートに遷移し（ステップＳ２００），処理を選択し（ステップＳ２０１），処理を実行し（ステップＳ２０２），次の実行ステートを選択する（ステップＳ２０３）という通常の実行ステートマシンの実行中において，処理実行（ステップＳ２０２）と並行して，処理内容に応じたトレースデータ生成を行う（ステップＳ２０４）。
【０１１４】
ハードマクロ１２０は，処理が演算Ｂｌｋ１であれば（ステップＳ２０５），ステート情報，処理タイプ（Ｔｙｐｅ）＝演算，データ等を含むトレースデータを生成する（ステップＳ２０６）。また，ハードマクロ１２０は，処理が演算Ｂｌｋ２であれば（ステップＳ２０７），ステート情報，処理タイプ（Ｔｙｐｅ）＝演算，データ等を含むトレースデータを生成し（ステップＳ２０８），処理が演算Ｂｌｋ３であれば（ステップＳ２０９），ステート情報，処理タイプ（Ｔｙｐｅ）＝演算，データ等を含むトレースデータを生成する（ステップＳ２１０）。また，ハードマクロ１２０は，処理がデータ入出力であれば（ステップＳ２１１），ステート情報，処理タイプ（Ｔｙｐｅ）＝入出力，データ等を含むトレースデータを生成する（ステップＳ２１２）。
【０１１５】
そして，トレース用インタフェース部１１ｂは，ステップＳ２０６，Ｓ２０８，Ｓ２１０，Ｓ２１２の処理で生成されたトレースデータを，内部のレジスタに格納する（ステップＳ２１３）。
【０１１６】
図１２は，図８に示す構成のトレース用インタフェース部１１の処理フローを示す図である。
【０１１７】
トレース用インタフェース部１１は，対象ハードウェア１００ｂが実行するアプリケーションプログラムを呼び出す親（上位）レイヤのプログラムの実行において開始される。親レイヤのプログラムは，例えば，図１２に破線の矩形で示すプログラムである。
【０１１８】
カウンタ部１５は，カウンタ値を初期化し，アプリケーションプログラムが呼び出されて実行が開始され，対象ハードウェア１００ｂでアプリケーションが実行される（ステップＳ３０）。
【０１１９】
タイマ部１３が，１〜１０ミリ秒（ｍｓ）の間隔で割り込み信号を発生させる（ステップＳ３１）。そして，ステップＳ３２の処理で発生された割り込み信号に基づいて，ステップＳ３２からＳ３６までの処理が周期的に繰り返される。
【０１２０】
トレース用インタフェース部１１は，ロック設定を行い（ステップＳ３２），レジスタに格納されているトレースデータを読み出し（ステップＳ３３），カウンタ部１５が生成したカウンタ値を付加したトレースデータを対象ハードウェア１００ｂの外部のデータ収集部１７へ転送する（ステップＳ３４）。そして，トレース用インタフェース部１１は，ロック解除を行い（ステップＳ３５），割り込み処理から復帰する（ステップＳ３６）。
【０１２１】
トレース対象の回路ブロックでアプリケーションプログラムの実行が継続していれば（ステップＳ３７），ステップＳ３０の処理へ戻り，ステップＳ３０以降の処理が繰り返される。
【０１２２】
図１３は，トレース情報収集システム１のトレース情報収集の際に，対象ハードウェア１００ｂで実行されるプログラム例を示す図である。
【０１２３】
図１３（Ａ）に示す親プログラムｉｎｔ  ｍａｉｎ（）が含む関数ｃｏｕｎｔｅｒ＿ｒｅｓｔ（）により，カウンタ部１５のカウンタ値がリセットされる。
【０１２４】
図１３（Ｂ）に示す，親プログラムｉｎｔ  ｍａｉｎ（）で呼び出されるプログラム（ＢＯＤＹ  （））において，いくつかの関数ＦＮが，“ＦＮ＿Ａ（），ＦＮ＿Ａ（），ＦＮ＿Ｄ（）”，“ＦＮ＿Ａ（），ＦＮ＿Ｂ（）”，“ＦＮ＿Ｂ（），ＦＮ＿Ｃ（）”，“ＦＮ＿Ｃ（）”，“ＦＮ＿Ｄ（）”という順で実行されるとする。
【０１２５】
図１４は，図１３に示すプログラムの実行時に収集されたトレース情報の例を示す図である。図１４中，トレースデータは丸印で示される。
【０１２６】
図１４の左部は，図１３に示すプログラム実行時に，実行された関数によるプロセスを示す部分である。図１４の左部は，同一のプログラムが２回以上実行されている間にトレースデータが収集された状態を示す。
【０１２７】
図１４の中央部は，図１４の左部に示すプログラムのトレース情報をアドレス（関数名）でソートした場合のトレースデータの並びを示す部分である。図１４の右部は，図１４の左部に示すプログラムのトレース情報を，付加されたカウンタ値でソートした場合のトレースデータの並びを示す部分である。
【０１２８】
図１４の左部に示す状態で収集されたトレースデータをアドレスでソートすると，図１４の中央部に示すように，トレースデータが同一アドレスのプロセスでまとめられて，１つのプログラム実行におけるトレース情報として並び替えられる。
【０１２９】
また，図１４の左部に示す状態で収集されたトレースデータをカウンタ値でソートすると，図１４の右部に示すように，トレースデータが同一のカウンタ値でまとめられて，１つのプログラム実行におけるトレース情報として並び替えられる。
【０１３０】
ここで，カウンタ値は，サイクル毎に値がインクリメントされるため，同一のカウンタ値が付加されるトレースデータは，同一アドレスのものに比べて少ないと予想できる。
【０１３１】
図１４の中央部に示すように，トレース情報収集装置１０が，１０ｍｓの周期でトレース情報収集を行う場合に，アドレスによるトレースデータのソート処理では，プログラム実行中のある期間のトレースデータが収集できていない状態が生じる可能性がある。
【０１３２】
これに対し，カウンタ値によるソート処理では，ソートされたトレースデータが，実際のサンプリング周期の間を埋めるような状態で並び，より密なトレース情報を取得することが可能となる。
【０１３３】
特に，トレース用インタフェース部１１が，複数のサイクル分のトレースデータを保持する場合には，トレース情報処理装置２０でのトレースデータのソート処理により，サンプリング周期毎に複数サイクル分のトレースデータが収集できるため，さらに密な間隔で収集した場合と同等のトレース情報を収集することが可能となる。
【０１３４】
上記説明した実施の形態のほか，開示されたトレース情報収集システム１は，他の構成により実施することが可能である。
【０１３５】
既に説明したように，トレース情報処理装置２０を実施するコンピュータ（ＰＣ）は，主制御部（ＣＰＵ），主記憶，ファイル装置，表示装置，キーボード等の入力手段である入力装置などのハードウェアで構成される。
【０１３６】
この場合に，トレース情報処理装置２０のデータ取得部２１およびデータソート部２２は，コンピュータが実行するプログラムとして実施することができる。
【０１３７】
データ取得部２１およびデータソート部２２の処理内容を記述したプログラムが提供され，そのプログラムがコンピュータで実行されることにより，これらの処理部がコンピュータのトレース情報記憶部２３と協働して，上記説明したトレース情報処理装置２０の処理機能が実現される。
【０１３８】
プログラムを実行するコンピュータは，例えば，可搬型の記録媒体に記録されたプログラムもしくは他のコンピュータからＬＡＮ等のネットワークを介して転送されたプログラムを自己の記憶装置に格納して，自己の記憶装置からプログラムを読み取り，プログラムに従った処理を実行する。
【０１３９】
なお，コンピュータは，可搬型記録媒体から直接プログラムを読み取り，そのプログラムに従った処理を実行することもできる。また，コンピュータは，サーバコンピュータからプログラムが転送されるごとに，逐次，受け取ったプログラムに従った処理を実行することもできる。さらに，このプログラムは，コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【０１４０】
以上の本実施例に示されるように，開示したトレース情報収集システムにより，次のような効果が得られる。
【０１４１】
（１）従来，大規模な機構が必要であったエンベデッドトレースによるトレース情報の抽出手段を大幅に簡略化できる。特に，従来は実際にはかなり困難であった，ハードマクロのトレース情報収集にも対応することできる。
【０１４２】
（２）トレース情報抽出のための実装の簡略化により，いわゆる量販チップにもトレース情報抽出機構を組み入れることが可能となる。よって，最終製品形態のチップから生の実行履歴情報を抽出することができる。
【０１４３】
（３）従来，適用が限られていたエンベデッドトレースによるトレース情報抽出手段の組み入れ対象を大幅に拡大することが可能となる。
【０１４４】
以上の説明したとおり，主として本願発明者によってなされた発明を，その背景となった技術分野であるトレース情報収集に適用した場合について説明したが，本発明は，これに限定されるものではなく，その記述の主旨の範囲において種々の変形が可能であることは当然である。
【符号の説明】
【０１４５】
１  トレース情報収集システム
１０  トレース情報収集装置
１１ａ，１１ｂ，１１ｃ  トレース用インタフェース部
１３  タイマ部
１５  カウンタ部
１７  データ収集部
１７１，１７３  セレクタ
１９  ポート部
１９１  トレース用ポート
２０  トレース情報処理装置
２１  データ取得部
２２  データソート部
２３  トレース情報記憶部
１００  回路基板（チップ）
１００ｂ  対象ハードウェア
１１０  ＣＰＵ
１２０  ハードマクロ
１３０  バス
１４０  メモリ
１５０  デバッグ装置
【図１】
2011100388.tif 000003
【図２】
2011100388.tif 000004
【図３】
2011100388.tif 000005
【図４】
2011100388.tif 000006
【図５】
2011100388.tif 000007
【図６】
2011100388.tif 000008
【図７】
2011100388.tif 000009
【図８】
2011100388.tif 000010
【図９】
2011100388.tif 000011
【図１０】
2011100388.tif 000012
【図１１】
2011100388.tif 000013
【図１２】
2011100388.tif 000014
【図１３】
2011100388.tif 000015
【図１４】
2011100388.tif 000016
【図１５】
2011100388.tif 000017
【図１６】
2011100388.tif 000018
【図１７】
2011100388.tif 000019
【図１８】
2011100388.tif 000020