(57)【特許請求の範囲】
【請求項１】
命令実行中の分岐の発生を検出する分岐発生検出手段と、前記分岐に対する分岐情報を生成する分岐情報生成手段と、データアクセスに対するデータアクセス情報を生成するデータアクセス情報生成手段と、前記分岐情報を前記データアクセス情報の出力系列の中に挿入して出力するデータ出力手段とを備える情報処理装置であって、
前記データ出力手段は、
前記データアクセス情報を遅延させる遅延手段と、
前記分岐情報の出力と前記データアクセス情報の出力との競合を検出する競合検出手段とを備え、
前記競合が検出された場合、前記分岐情報の出力後に、前記遅延手段で遅延させたデータアクセス情報を出力する、  
ことを特徴とする情報処理装置。
【請求項２】
前記分岐の発生によりキャンセルされた命令を検出するキャンセル命令検出手段をさらに備え、
前記データ出力手段は前記キャンセルされた命令の出力を行わないようにする、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
命令実行中の分岐の発生を検出する分岐発生検出手段と、前記分岐に対する分岐情報を生成する分岐情報生成手段と、データアクセスに対するデータアクセス情報を生成するデータアクセス情報生成手段と、前記分岐情報を前記データアクセス情報の出力系列の中に挿入して出力するデータ出力手段とを備える情報処理装置であって、
前記分岐情報生成手段は、
前記分岐によるアドレス変位を算出するアドレス変位算出手段と、
前記分岐の発生から次の分岐の発生までの命令実行数を算出する命令実行数算出手段と、
前記アドレス変位算出手段における算出結果の有効桁数を算出する第１の有効桁数算出手段と、
前記命令実行数算出手段における算出結果の有効桁数を算出する第２の有効桁数算出手段とを備え、
前記データ出力手段は、
前記分岐情報として、前記アドレス変位及び前記命令実行数を前記有効桁数分だけ出力する、
ことを特徴とする情報処理装置。
【請求項４】
前記分岐情報生成手段は、前記有効桁数を前記分岐情報の中に含めることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記分岐情報生成手段により生成された相対アドレスの有効桁数と前記分岐による絶対アドレスの桁数とを比較する比較手段をさらに備え、
前記データ出力手段は、前記比較結果に基づいて、前記相対アドレスまたは前記絶対アドレスを切り替えて出力する、
ことを特徴とする請求項３または４に記載の情報処理装置。
【請求項６】
前記データアクセス情報生成手段は、
データアドレスの有効桁数を算出する第３の有効桁数算出手段と、
アクセスデータの有効桁数を算出する第４の有効桁数算出手段とを備え、
前記データ出力手段は、
前記データアクセス情報として、前記データアドレス及び前記アクセスデータを前記有効桁数分だけ出力する、
ことを特徴とする請求項１乃至５の何れか一つに記載の情報処理装置。
【請求項７】
前記データ出力手段は、所定の期間に最低１回は相対アドレスではなく、絶対アドレスを出力することを特徴とする請求項３乃至６の何れか一つに記載の情報処理装置。
【請求項８】
前記データ出力手段は、
出力データの出力タイミングを調整するバッファと、
前記バッファから読み出されたデータのパラレルシリアル変換を行うパラレルシリアル変換手段と、
前記パラレルシリアル変換後のデータを出力する第１の出力バスと、
前記バッファから読み出されたデータをデコードするデコード手段と、
前記デコード結果に基づいて、前記第１の出力バスから出力されているデータのステータスを出力する第２の出力バスと、
を備えることを特徴とする請求項１乃至７の何れか一つに記載の情報処理装置。
【請求項９】
前記パラレルシリアル変換手段は、出力データの有効桁以外の部分を切り捨てながら、パラレルシリアル変換を行うことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記データ出力手段は、前記データ出力手段に入力されたデータをパラレルに出力する第３の出力バスを備え、
前記第３の出力バスから出力される分岐情報は、絶対アドレスである、
ことを特徴とする請求項８または９に記載の情報処理装置。
【請求項１１】
前記データ出力手段は、前記第３の出力バスから分岐情報及びデータアクセス情報を出力する場合、前記第１の出力バスから前記分岐情報及び前記データアクセス情報以外のシステム情報を出力することを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記データ出力手段は、
前記バッファがフルになった場合、データ消失ステータスを前記バッファに書き込む書き込み手段と、
前記データ消失ステータスを書き込んだ後の前記バッファへのデータの書き込みを中断する中断手段と、
を備えることを特徴とする請求項８乃至１１の何れか一つに記載の情報処理装置。
【請求項１３】
前記データ出力手段は、前記バッファに空きができた後に分岐が発生した場合、分岐情報として絶対アドレスを前記バッファに書き込んでから、前記バッファへのデータの書き込みを再開することを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記バッファをトレースメモリとして使用することを特徴とする請求項８乃至１３の何れか一つに記載の情報処理装置。
【請求項１５】
命令実行中の分岐の発生を検出するステップと、
前記分岐に対する分岐情報を生成するステップと、
データアクセスに対するデータアクセス情報を生成するステップと、
前記データアクセス情報を遅延させるステップと、
前記分岐情報の出力と前記データアクセス情報の出力との競合を検出するステップと、
前記競合が検出された場合、前記分岐情報の出力後に、前記遅延させたデータアクセス情報を出力するステップと、
を備えることを特徴とするトレースデータの出力方法。
【請求項１６】
命令実行中の分岐の発生を検出するステップと、
データアクセスに対するデータアクセス情報を生成するステップと、
前記分岐によるアドレス変位を算出するステップと、
前記分岐の発生から次の分岐の発生までの命令実行数を算出するステップと、
前記アドレス変位及び命令実行数の有効桁数を算出するステップと、
前記アドレス変位及び前記命令実行数の有効桁の部分のみを分岐情報として、前記データアクセス情報の出力系列の中に挿入して出力するステップと、
を備えることを特徴とするトレースデータの出力方法。
【請求項１７】
前記分岐情報または前記データアクセス情報を含むトレースデータの出力タイミング調整用のバッファがフルになった場合、データ消失ステータスを前記バッファに書き込んでから前記バッファへのデータの書き込みを中断するステップと、
前記バッファに空きができた後に分岐が発生した場合、前記分岐情報として絶対アドレスを前記バッファに書き込むステップと、
前記バッファへのデータの書き込みを再開するステップと、
を備えることを特徴とする請求項１５または１６に記載のトレースデータの出力方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は情報処理装置に関し、特に、組込み用途のマイクロコントローラ（以下、マイコンと称す）におけるインサーキットエミュレータ（以下、ＩＣＥと称す）とのインタフェース部に適用して好適なものである。
【０００２】
【従来の技術】
ＣＰＵの動作をトレースする場合、その実行履歴を示すトレースデータを外部に出力する必要がある。
【０００３】
一方、ＣＰＵの動作を高速化するために、ＲＩＳＣマイコンなどのように命令バスとデータバスとを別個に設けたり、バス幅の多ビット化を図ったりすることが行われている。
【０００４】
これらの技術に対応してトレースデータを出力するためのバス幅を拡大することは、１パッケージ当たりのピン数が増大し、実現が困難である。
【０００５】
このため、マイコンで扱うアドレスやデータのビット幅が８ビットや１６ビット程度で低速で動作する場合には、比較的容易に全てのトレースデータを外部に出力することが可能であるが、マイコンで扱うアドレスやデータのビット幅が３２ビットや６４ビット程度で１００ＭＨＺ以上の高速で動作する場合には、全てのトレースデータを外部に出力することが困難になってきている。
【０００６】
このような事態に対処するため、従来のトレース装置では、以下に示すような技術が用いられている。
【０００７】
図１５は、従来のトレース装置の構成を示すブロック図である。
【０００８】
図１５において、２０１はマイコン、２０２はＣＰＵ、２０３はバスコントローラ、２０４はＩＣＥ２０５とのインタフェース回路であるトレースモジュール、２０５はマイコン２０１の実行履歴であるトレースデータを受信するＩＣＥ、２０６はトレースデータを格納するトレースメモリを示す。
【０００９】
また、２１１はＣＰＵ２０２が命令フェッチに使用する命令アドレスバス、２１２はＣＰＵ２０２がデータアクセスに使用するデータアドレスバス、２１３はＣＰＵ２０２がデータアクセスに使用するデータバス、２１４はマイコン２０１の外部バス、２１５はＩＣＥ２０５に対してＣＰＵ２０２の命令実行状態を出力するためのトレース用バス、２１６はトレース用バス２１５から出力されるデータのステータスを示す信号を出力するためのステータス出力バス、２１７はトレース用バス２１５からのトレースデータの出力が間に合わなくなった時に、ＣＰＵ２０２を止めるためのウエイト信号を出力するため信号線を示す。
【００１０】
ここで、命令アドレスバス２１１、データアドレスバス２１２、データデータバス２１３及びトレース用バス２１５のビット幅はいずれも３２ビットであるものとすると、トレースモジュール２０４は、命令アドレスバス２１１から出力される命令アドレスのみをトレース用バス２１５を介してＩＣＥ２０５に出力し、命令アドレスについてだけ、各クロックごとにトレースデータが出力されるようにする。この場合、データアドレスバス２１２及びデータデータバス２１３から出力されるデータアクセス情報は、ＩＣＥ２０５に出力されない。
【００１１】
一方、データアクセス情報も命令アドレスと同時にトレースしたいという要求がある場合は、トレースモジュール２０４は、データアクセス情報及び命令アドレスをトレース用バス２１５に出力する。ここで、命令アクセスとデータアクセスが同一タイミングで発生した場合、トレース用バス２１５には、これらの両方の情報を同時に乗せるためのバス幅の余裕がないため、トレースモジュール２０４は、これらのトレースデータの出力が終わるまで、ＣＰＵ２０２にウエイトを掛け、トレースデータの消失を防止する。
【００１２】
図１６は、従来のトレース装置の別の構成を示すブロック図である。
【００１３】
図１６において、２２１はマイコン、２２２はＣＰＵ、２２３はバスコントローラ、２２４はＩＣＥ２２５とのインタフェース回路としてのデバッグサポートユニット（以下、ＤＳＵと称す）、２２５はＩＣＥ、２２６はトレースデータを格納するトレースメモリを示す。
【００１４】
また、２３１はＣＰＵ２２２が命令フェッチに使用する命令アドレスバス、２３２はＣＰＵ２２２がデータアクセスに使用するデータアドレスバス、２３３はＣＰＵ２２２がデータアクセスに使用するデータバス、２３４はマイコン２２１の外部バス、２３５はＩＣＥ２２５に対してＣＰＵ２２２の命令実行状態を出力するためのトレース用バス、２３６はトレース用バス２３５から出力されるデータのステータスとマイコン２２２の内部ステータスを示す信号を出力するステータス出力バス、２３７はＣＰＵ２２２が命令実行したことと、分岐命令を実行したことをＤＳＵ２２４に伝える信号線を示す。
【００１５】
図１７は、図１６のＤＳＵ２２４の構成を示すブロック図である。
【００１６】
図１７において、２４１は命令アドレスバス２３１から出力される命令アドレスを保持するためのバッファ、２４２はデータアドレスバス２３２から出力されるデータアドレスを保持するためのバッファ、２４３はデータバス２３３から出力されるデータを保持するためのバッファ、２４４はバッファ２４１〜２４３の中からトレース用バス２３５に出力するデータを選択するためのスイッチ、２４５はスイッチ２４４で選択されたデータを保持するためのバッファ、２４６はバッファ２４５に保持されているデータをトレース用バス２３５にシリアルで出力するためのパラレル−シリアル変換器、２４７はバッファ２４１〜２４３の状態とパラレル−シリアル変換器２４６の状態から次に出力するデータを決定してスイッチ２４４を制御する制御回路、２４８は特定アドレスへのデータライトを検出するためのアドレスデコーダを示す。
【００１７】
ここで、ＤＳＵ２２４は、トレース用バス２３５から出力されるデータの種類によって出力に必要なクロック数が固定されており、出力中のデータが途中で出力を打ち切られることはない。
【００１８】
また、データアクセスのトレースを行う場合には、トレース用バス２３５のバス幅が足りないため、ユーザプログラムで指定されたバッファ２４３の割り当てアドレスへのデータライトの情報のみをアドレスデコーダ２４８で選択し、トレース用バス２３５に出力する。
【００１９】
さらに、ＤＳＵ２２４は、ＣＰＵ２２２による１命令の実行と分岐命令の実行を示す情報をＣＰＵ２２２から受け取る。そして、分岐先アドレスをトレース用バス２３５から出力することに加え、実行命令数をＩＣＥ２２５でカウントするためのステータスをステータス出力バス２３６から常に出力する。ＩＣＥ２２５は、分岐先アドレスと実行命令数とをＤＳＵ２２４から受け取ると、これらの情報を用いることにより、分岐が発生した時の分岐元の命令アドレスと分岐先の命令アドレスとを算出し、ユーザプログラムの実行履歴を復元する。
【００２０】
【発明が解決しようとする課題】
しかしながら、図１５のトレース装置では、命令実行のみがトレースされる場合は、ＣＰＵ２０２にウエイトが掛からないが、命令実行だけでなくデータアクセスも同時にトレースする場合は、ＣＰＵ２０２にウエイトが掛かることがある。このため、トレースをしない時とトレースをする時とで、ＣＰＵ２０２の動作速度が異なり、例えば、マイコン２０１を用いてモータを制御したり、シリアル通信を行ったりすると、トレースをしない場合はＣＰＵ２０２が動作するが、トレースをする場合はＣＰＵ２０２の処理速度が間に合わなくなるという問題があった。
【００２１】
また、図１６のトレース装置では、マイコン２２１をリアルタイムで動作させた場合、１回の分岐情報出力に必要なクロック数以下の間隔で分岐が発生したり、ユーザがデバッグのためにアドレスデコーダ２４８で定めているアドレスへのデータライトを短時間に複数回行ったりすると、これらの情報がバッファ２４１〜２４３からあふれ出す。このため、バッファ２４１〜２４３に格納できない分の情報がＩＣＥ２２５側に出力できなくなり、命令実行のトレースが行えなくなるという問題があった。
【００２２】
また、トレースデータがトレース用バス２３５からシリアルで出力されるため、データアクセスのトレースを行うにはトレース用バス２３５のバンド幅が足りず、ユーザプログラムによるバッファ２４３の割り当てアドレスへのデータライトの情報だけしか出力できないという問題があった。
【００２３】
また、ステータス出力バス２３６から出力されるステータス情報は、ＣＰＵ２０２に接続されている信号線２３７の情報に同期して生成される。このため、ステータス出力バス２３６から出力される実行命令数は、トレース用バス２３５から出力される分岐先アドレスと非同期で出力され、これらの情報から分岐元の命令アドレスと分岐先の命令アドレスとをＩＣＥ２２５側で算出する場合の処理が複雑になるという問題があった。
【００２４】
また、組み込み用途のマイコン２２１では、応用製品の開発中であっても、最終的なプログラム形態でデバッグすることが要求される。このため、図１６のＤＳＵ２２４では、データ監視用のデータライトの命令コードが最終的なユーザプログラム中に残ってしまうという問題があった。
【００２５】
そこで、本発明の目的は、トレースデータを効率的に出力することが可能な情報処理装置を提供することである。
【００２６】
【課題を解決するための手段】
上述した課題を解決するために、本発明によれば、データアクセス情報の出力系列の中に分岐情報を挿入して出力するようにしている。
【００２７】
このことにより、データアクセス情報を出力するための出力バスと分岐情報を出力するための出力バスとを共通にすることが可能となり、データアクセス情報を出力するための出力バスと分岐情報を出力するための出力バスとを個別に設ける必要がなくなることから、トレースを行う場合の装置の規模を低減させることが可能となる。
【００２８】
また、本発明の一態様によれば、分岐情報の出力とデータアクセス情報の出力との競合が検出された場合、分岐情報の出力後に、データアクセス情報を出力するようにしている。
【００２９】
このことにより、分岐情報をデータアクセス情報の出力系列の中に挿入した場合においても、分岐情報とデータアクセス情報との時間関係の整合性を保つことが可能となり、トレース解析を効率よく行うことが可能となる。
【００３０】
また、本発明の一態様によれば、分岐の発生によりキャンセルされた命令の出力を行わないようにしている。
【００３１】
このことにより、分岐情報の出力とデータアクセス情報の出力とが競合した場合においても、その競合により溢れた情報を命令のキャンセルされた位置で吸収することができ、溢れた情報を保持するためのバッファの負担を軽減することが可能となる。
【００３２】
また、本発明の一態様によれば、分岐情報として、分岐の発生によるアドレス変位と分岐の発生から次の分岐の発生までの命令実行数とを算出し、前記アドレス変位及び前記命令実行数をその有効桁数分だけ出力するようにしている。
【００３３】
このことにより、分岐元アドレスと分岐先アドレスとがあまり離れていないにもかかわらず、プログラムがアドレス空間の最後の方に配置されているために、分岐元アドレス及び分岐先アドレスの桁数が大きくなるような場合には、これらの情報を圧縮することが可能となり、これらの情報の出力を高速に行うことが可能となる。
【００３４】
また、本発明の一態様によれば、有効桁数を分岐情報の中に含めるようにしている。
【００３５】
このことにより、トレースデータの上位ビットが０のみであった部分のデータ出力を行わなくても、分岐元アドレスと分岐先アドレスとを復元することが可能となることから、トレースデータの上位ビットが０のみであった部分のデータ出力を行わなくて済み、トレースデータの圧縮が可能となる。
【００３６】
また、本発明の一態様によれば、分岐による相対アドレスの有効桁数と分岐による絶対アドレスの桁数との大小関係に基づいて、相対アドレスと絶対アドレスとを切り替えて出力するようにしている。
【００３７】
このことにより、分岐元アドレスと分岐先アドレスとが離れているために、相対アドレスの有効桁数が大きくなった場合には、分岐情報として相対アドレスを出力するのではなく、絶対アドレスをそのまま分岐情報として出力することが可能となり、ＩＣＥでのトレースデータの解析を効率よく行うことが可能となる。
【００３８】
また、本発明の一態様によれば、データアクセス情報として、データアドレスとアクセスデータとをその有効桁数分だけ出力するようにしている。
【００３９】
このことにより、データがアドレス空間の最初の方に格納されている場合などでは、冗長な部分を効率よく切り捨てて出力することが可能となり、これらの情報の出力を高速に行うことが可能となる。
【００４０】
また、本発明の一態様によれば、所定の期間に最低１回は絶対アドレスを出力するようにしている。
【００４１】
このことにより、絶対アドレスが出力された時点から命令実行による分岐アドレスのチェーンを辿ることが可能となり、相対アドレスを出力している途中でデータロストが発生し、アドレスのチェーンが途中で切れた場合においても、絶対アドレスが出力された時点からトレースデータの解析を行うことが可能となるとともに、相対アドレスから絶対アドレスを復元する際の遡る回数を減らして、トレースリストの作成を容易にすることが可能となる。
【００４２】
また、本発明の一態様によれば、出力タイミング調整用バッファから読み出されたデータをパラレルシリアル変換しながら出力するとともに、そのデータのデコード結果をトレースバスのステータス信号として同時に出力するようにしている。
【００４３】
このことにより、トレースデータと、トレースデータのステータスを示す信号とを同期をとりながら出力することが可能となり、トレースデータの解析を効率的に行うことが可能となる。
【００４４】
また、本発明の一態様によれば、トレースデータをパラレルシリアル変換して出力する第１の出力バスの他に、トレースデータをパラレルのまま出力する第２の出力バスを設け、トレースデータを第２の出力バスから出力する場合には、分岐情報として絶対アドレスのみを出力するようにしている。
【００４５】
このことにより、トレースデータの圧縮を行わない場合でも、トレースデータの消失を伴うことなく、トレースデータを出力することが可能となる。
【００４６】
また、本発明の一態様によれば、第２の出力バスから分岐情報及びデータアクセス情報を出力する場合、第１の出力バスから分岐情報及びデータアクセス情報以外のシステム情報を出力するようにしている。
【００４７】
このことにより、トレースデータの消失を伴うことなくトレースデータを出力することが可能となるとともに、第１の出力バスをデバイスのステータス出力などに有効に利用することが可能となる。
【００４８】
また、本発明の一態様によれば、出力タイミングを調整するバッファがフルになった場合、データ消失ステータスをバッファに書き込んでから、バッファへのデータの書き込みを中断するようにしている。
【００４９】
このことにより、データロストが起こった場合に、データロストが起こるまでに既にバッファに書き込まれているデータを保護することが可能となるとともに、そのデータロストが起こった位置を確認することが可能となり、データトレースを効率よく行うことが可能となる。
【００５０】
また、本発明の一態様によれば、データロスト後のバッファへのデータの書き込みを分岐発生時から再開し、その時の分岐情報として絶対アドレスをバッファに書き込むようにしている。
【００５１】
このことにより、データの書き込みの再開の開始時点からデータのチェーンを辿ることが可能となり、データの書き込みの再開時に無駄なデータが書き込まれることを防止して、データトレースを効率的に行うことが可能となる。
【００５２】
また、本発明の一態様によれば、バッファをトレースメモリとして使用するようにしている。
【００５３】
このことにより、バッファの容量分だけは、データ消失させないでトレースデータを保持することが可能となり、データ消失がないトレースデータのデバッグを保証することが可能となる。
【００５４】
【発明の実施の形態】
以下、本発明の一実施例に係わる情報処理装置について図面を参照しながら説明する。
【００５５】
図１は、本発明の第１実施例に係わる情報処理装置の構成を示すブロック図である。
【００５６】
図１において、競合検出手段１は、分岐情報の入力とデータアクセス情報の入力とを監視し、分岐情報の入力とデータアクセス情報の入力とが競合した場合、そのことを出力データ選択手段２に伝える。
【００５７】
出力データ選択手段２には、分岐情報及びデータアクセス情報が入力されるとともに、遅延手段３により遅延させられたデータアクセス情報が入力される。そして、競合検出手段１からの指令に基づいて、分岐情報及びデータアクセス情報の出力を切り替えることにより、分岐情報及びデータアクセス情報を同一のバスライン上に出力する。
【００５８】
ここで、出力データ選択手段２は、分岐情報の入力とデータアクセス情報の入力とが競合するという通知を競合検出手段１から受けた場合、分岐情報を出力した後に、遅延手段３で遅延させられたデータアクセス情報を出力する。
【００５９】
このことにより、分岐情報とデータアクセス情報との時間関係の整合性を保ちつつ、分岐情報及びデータアクセス情報を単一のバスライン上に出力することが可能となり、トレースデータを出力するために必要なビット幅を低減させて、パケージのピン数を削減することが可能となる。
【００６０】
また、出力データ選択手段２は、分岐の発生により分岐命令の直後の命令がキャンセルされる場合、その命令の出力を行わないようにすることもできる。
【００６１】
このことにより、データの出力系列の中に隙間を生成することが可能となり、分岐情報の出力とデータアクセス情報の出力との競合により溢れた情報を、その隙間で吸収することが可能となることから、溢れた情報を保持するためのバッファの負担を軽減することが可能となる。
【００６２】
図２は、本発明の第２実施例に係わる情報処理装置の構成を示すブロック図である。
【００６３】
図２において、アドレス変位算出手段１１は、分岐によるアドレス変位を算出する。なお、アドレス変位は、（分岐先アドレス−分岐元アドレス）の計算を行うことにより、算出できる。命令実行数算出手段１２は、分岐の発生から次の分岐の発生までの命令実行数を算出する。有効桁数算出手段１３は、アドレス変位の有効桁数及び命令実行数の有効桁数を算出し、その算出結果をデータ出力手段１４に出力する。データ出力手段１４は、アドレス変位算出手段１１から送られたアドレス変位から有効桁の部分のみを取り出すとともに、命令実行数算出手段１２から送られた実行命令数から有効桁の部分のみを取り出す。そして、分岐情報として、アドレス変位及び命令実行数を有効桁数分だけ出力する。
【００６４】
ここで、分岐情報として命令アドレスが入力された場合に、実行された命令をトレースするために必要な情報は、分岐が発生した場合の分岐元の命令アドレス及び分岐先の命令アドレスである。分岐元の命令アドレスは、分岐が発生して次の分岐が発生するまでの間に行われた実行命令数により求めることができる。また、分岐先の命令アドレスは、分岐元の命令アドレスから分岐先の命令アドレスへのアドレス変位により求めることができる。
【００６５】
従って、アドレス変位及び実行命令数を求め、これらのデータを分岐情報として出力することにより、実行された命令をトレースすることが可能となる。なお、プログラムの開始も分岐とみなす。
【００６６】
図３は、図２のアドレス変位及び実行命令数の算出方法を示す図である。
【００６７】
図３において、分岐元アドレス“１００”の位置で分岐が発生し、分岐先アドレス“２００”の位置にジャンプして命令を実行し、分岐元アドレス“２２０”の位置で再び分岐が発生し、分岐先アドレス“３００”の位置にジャンプしたものとする。この場合、分岐元アドレス“１００”から分岐先アドレス“２００”へのアドレス変位＝１００、最初の分岐発生から次の分岐発生までの実行命令数＝２０、分岐元アドレス“２２０”から分岐先アドレス“３００”へのアドレス変位＝８０である。従って、アドレス変位及び実行命令数を用いることにより、分岐元アドレス及び分岐先アドレスを算出することが可能となる。
【００６８】
ここで、アドレス変位及び命令実行数を算出するのは、分岐元の命令アドレス及び分岐元の命令アドレスから冗長な部分を取り除くためである。例えば、通常のプログラムでは、アドレス変位の有効桁数が１０ビット以下のループが組まれることが多い。この場合、例えば、ビット幅が３２ビットの命令アドレスをそのまま出力すると、その出力データには冗長な部分が多く含まれ、多くのビット数が無駄になるため、トレース用バスの利用効率が悪くなる。
【００６９】
そこで、分岐情報としてアドレス変位及び命令実行数を出力することにより、トレース用バスの利用効率を高める。
【００７０】
図４は、図２の情報処理装置の出力データの一例を示す図である。
【００７１】
図４において、アドレス空間のアドレス“０”〜“１０”の間にループが組まれ、アドレス“１９９９９０”〜“２０００００”の間にループが組まれているものとする。この場合、いずれのループにおいても、アドレスの差分は１０であるが、アドレス“０”〜“１０”の位置のループの実行結果を絶対アドレスで送ると、アドレス幅が２桁分（１０進数の場合）で済む。これに対し、アドレス“１９９９９０”〜“２０００００”の位置のループの実行結果を絶対アドレスで送ると、アドレス幅が６桁分（１０進数の場合）必要となる。
【００７２】
すなわち、ループがアドレス空間の後ろの方に置かれると、分岐元アドレスと分岐先アドレスとの間に冗長な部分が増加し、これらのデータをそのまま出力すると、トレース用バスの利用効率が悪くなる。特に、ループの繰り返し回数によっては、このような冗長なデータが何回も出力され、効率が悪い。
【００７３】
そこで、アドレス“１９９９９０”〜“２０００００”の位置のループについて、分岐元から分岐先へのアドレス変位（▲１▼）及び各分岐間の実行命令数（▲２▼）を算出する。そして、分岐先アドレスと分岐元アドレスとをそのまま出力するのではなく、それらのアドレスを復元するための必要最小限の情報、すなわち、アドレス変位及び実行命令数を出力するとともに、アドレス変位及び実行命令数が下から何ビット有効かを示すタグ情報を出力するようにする。
【００７４】
このことにより、アドレス“１９９９９０”〜“２０００００”の位置のループの実行結果を出力するために必要なデータ幅が２桁分（１０進数の場合、符号を除く）で済むようになり、トレース用バスを効率的に利用することが可能となる。
【００７５】
図５は、本発明の第３実施例に係わる情報処理装置の構成を示すブロック図である。
【００７６】
図５において、２１はＣＰＵ、２２はＤＳＵ、２３は各分岐間に実行した命令数を求める実行命令数カウンタ、２４はＣＰＵ２１が出力した命令アドレスの差分から分岐発生を検出する分岐検出部、２５は命令アドレスの差分を求める減算器、２６は分岐発生時に命令実行数カウンタ２３及び分岐検出部２４の出力データからトレース出力に必要なデータを生成するエンコーダ、２７は命令実行数カウンタ２３及び分岐検出部２４の出力データの有効桁数を算出するタグ生成部、２８はデータアドレスバス４２のデータのタイミングを取るバッファ、２９はデータバス４３のデータのタイミングを取るバッファ、３０はバッファ２８、２９に保持されているデータアクセス情報からトレースデータを生成するエンコーダ、３１はデータアクセス情報を遅延させるバッファ、３２はデータアクセス情報の有効桁数を算出するタグ生成部、３３は制御回路３４からの指示に基づいて、エンコーダ２６から出力される分岐情報とエンコーダ３０から出力されるデータアクセス情報との出力の切り替えを行うマルチプレクサ、３４は分岐発生とデータアクセスの状況からトレース用バス５３に出力するデータをマルチプレクサ３３に指示する制御部、３５は分岐発生とデータアクセスの競合を検出する競合検出部、３６は不定期に発生するトレースデータのタイミング調整を行うＦＩＦＯを含むパラレル−シリアル変換器、３７はパラレル−シリアル変換器３６から出力されるトレースデータの種類を示すステータス信号を出力するエンコーダ、３８はＩＣＥ、３９はＩＣＥ３８内のトレースメモリである。
【００７７】
また、４１はＣＰＵ２１が命令フェッチに使用する命令アドレスバス、４２はＣＰＵ２１がデータアクセスに使用するデータアドレスバス、４３はＣＰＵ２１がデータアクセスに使用するデータバス、４４は実行命令数をエンコーダ２６に出力する信号線、４５はアドレス変位をエンコーダ２６に出力する信号線、４６は分岐発生をエンコーダ２６及び制御部３４に伝えるための信号線、４７はエンコーダ２６が生成した分岐情報をマルチプレクサ３３に出力する信号線、４８はエンコーダ３０が生成したデータアクセス情報をマルチプレクサ３３に出力する信号線、４９はデータアクセスの発生を制御部３４に伝えるための信号線、５０はマルチプレクサ３３の切り替え指示を出力するための信号線、５１はＦＩＦＯに空きエントリがあるかどうかを伝えるための信号線、５２は、マルチプレクサ３３からのトレースデータを出力する信号線、５３はトレースデータをＩＣＥ３８へ出力するためのトレース用バス、５４はトレース用バス５３に出力中のデータのステータスをＩＣＥ３８へ伝えるためのステータス出力用バスである。
【００７８】
以下、図５のＤＳＵ２２の動作について説明する。
【００７９】
ＣＰＵ２１が命令を実行すると、実行した命令の命令アドレスが命令アドレスバス４１を介して実行命令数カウンタ２３及び分岐検出部２４に出力される。実行命令数カウンタ２３は、入力された命令アドレスの数を計数することにより、ＣＰＵ２１が実行した命令の数を算出する。
【００８０】
図６は、図５の実行命令数カウンタ２３の動作を示すフローチャートである。
【００８１】
図６において、実行命令数カウンタ２３は、分岐発生の場合（ステップＳ１）、実行命令数カウンタ２３のリセットを行い（ステップＳ２）、分岐発生でない場合（ステップＳ１）、ＣＰＵ２１で命令が実行されるごとに（ステップＳ３）、実行命令数カウンタ２３の内容を１づつインクリメントする（ステップＳ４）。
【００８２】
分岐検出部２４は、現在入力された命令アドレスとその直前に入力された命令アドレスとの差分を算出することにより、命令アドレスのアドレス変位を算出する。そして、アドレス変位からＣＰＵ２１の命令実行中に分岐が発生したかどうかを検出する。分岐検出部２４が分岐発生を検出すると、分岐が発生したことをエンコーダ２６及び制御部３４に伝えるとともに、実行命令数カウンタ２３をリセットする。
【００８３】
エンコーダ２６は、分岐発生の通知を受けると、分岐検出部２４から出力されたアドレス変位の有効ビット数を算出する。なお、有効ビット数は、送られてきたデータを最上位ビットから見た時に、初めて０でないビットが出現する位置から求めることができる。
【００８４】
アドレス変位の有効ビット数が求まると、この有効ビット数をタグデータとしてアドレス変位に付加した分岐情報を生成する。そして、アドレス変位の有効ビット数にタグデータのビット数を加えた値と、命令アドレスのビット幅とを比較する。ここで、アドレス変位の有効ビット数にタグデータのビット数を加えた値が、命令アドレスのビット幅以上の場合は、命令アドレスバス４１から出力された分岐先の絶対アドレスをそのままマルチプレクサ３３に出力する。
【００８５】
一方、アドレス変位の有効ビット数にタグデータのビット数を加えた値が、命令アドレスのビット幅より小さい場合は、タグデータが付加されたアドレス変位をマルチプレクサ３３に出力する。
【００８６】
例えば、命令アドレスのビット幅が３２ビットで、タグデータのビット数が５ビットであるものとすると、アドレス変位の有効ビット数が２７ビット以上の場合は、命令アドレスバス４１から出力された分岐先の絶対アドレスをそのまま出力し、アドレス変位の有効ビット数が２７ビットより小さい場合は、タグデータが付加されたアドレス変位を出力する。すなわち、アドレス空間の端から端までジャンプする場合には、アドレス変位の有効ビット数が大きくなるため、絶対アドレスがそのまま出力され、小さなループの繰り返しの場合は、アドレス変位の有効ビット数が小さくなるため、相対アドレスが出力される。
【００８７】
また、エンコーダ２６は、分岐発生の通知を受けると、実行命令数カウンタ２３から出力された実行命令数についても、有効ビット数を算出する。実行命令数の有効ビット数が求まると、この有効ビット数をタグデータとして実行命令数に付加した分岐情報を生成し、マルチプレクサ３３に出力する。
【００８８】
ここで、エンコーダ２６は、アドレス変位及び実行命令数の有効ビット数がどのような値であっても、任意の期間に最低１回は、絶対アドレスをマルチプレクサ３３に出力する。例えば、数千クロックに１回は必ず絶対アドレスをマルチプレクサ３３に出力するようにする。これは、ＩＣＥ３８側でのトレースデータの解析を容易に行えるようにするためである。すなわち、相対アドレスばかり出力した場合には、レースリストの解析を行う際にトレースリストの最初まで遡る必要があり、トレースデータの解析に手間がかかる。一方、数千クロックに１回は必ず絶対アドレスが出力されると、最大でも数千クロック分だけ遡ればよく、トレースリストの解析を効率よく行うことが可能となる。さらに、相対アドレスばかり出力されると、その途中でデータロストが起こった場合には、それ以後のトレースデータの解析が不可能となるが、絶対アドレスが出力されている場合には、そこからトレースデータの解析が可能となる。
【００８９】
一方、ＣＰＵ２１の動作中にデータアクセスが発生すると、データアドレスバス４２に出力されたデータアドレスがバッファ２８を介してエンコーダ３０に出力されるとともに、データバス４３に出力されたアクセスデータがバッファ２９を介してエンコーダ３０に出力される
エンコーダ３０は、データアドレス及びアクセスデータが入力されると、データアクセスの発生を制御部３４に伝えるとともに、データアドレス及びアクセスデータの有効ビット数を求める。そして、求めた有効ビット数をタグデータとしてデータアドレス及びアクセスデータに付加したデータアクセス情報を生成し、生成したデータアクセス情報をマルチプレクサ３３に出力する。また、生成したデータアクセス情報をバッファ３１に格納し、現在のデータアクセス情報に加え、遅延させたデータアクセス情報もマルチプレクサ３３に出力する。
【００９０】
制御部３４は、分岐検出部２４から伝えられた分岐の発生と、エンコーダ３０から伝えられたデータアクセスの発生とを監視し、分岐の発生とデータアクセスの発生とが競合する場合には、競合が起こったことをマルチプレクサ３３に伝える。
【００９１】
図７は、図５の制御部３４の動作を示すフローチャートである。
【００９２】
図７において、制御部３４は、分岐発生の場合（ステップＳ１１）、データアクセス発生があったかどうかを判断し、データアクセス発生の場合（ステップＳ１２）、分岐情報の出力指示をマルチプレクサ３３に与え（ステップＳ１３）、フラグを１にセットする（ステップＳ１４）。この場合、ステップＳ１２で発生したアクセスデータは、バッファ３１に保持されている。
【００９３】
一方、ステップＳ１２において、データアクセス発生でない場合、分岐情報の出力指示をマルチプレクサ３３に与え（ステップＳ１５）、フラグを０にクリアする（ステップＳ１６）。
【００９４】
一方、ステップＳ１１において、分岐発生でない場合、データアクセス発生があったかどうかを判断し（ステップＳ１７）、データアクセス発生の場合、フラグが１がどうかを判断する（ステップＳ１８）。ここで、フラグが１の場合、１クロック前のアクセスデータの出力指示をマルチプレクサ３３に与える（ステップＳ１９）。一方、フラグが１でない場合、現在のアクセスデータの出力指示をマルチプレクサ３３に与え（ステップＳ２０）、フラグを０にクリアする（ステップＳ２１）。
【００９５】
一方、ステップＳ１７において、データアクセス発生でない場合、フラグが１がどうかを判断し（ステップＳ２２）、フラグが１の場合、現在のアクセスデータの出力指示をマルチプレクサ３３に与え（ステップＳ２０）、フラグを０にクリアする（ステップＳ２１）。  一方、ステップＳ２２において、フラグが１でない場合、処理を終了する。
【００９６】
マルチプレクサ３３は、エンコーダ２６からの分岐情報、またはエンコーダ３０からのデータアクセス情報が入力されると、これらの情報を共通の信号線５２を介してパラレル−シリアル変換器３６に出力する。ここで、マルチプレクサ３３は、分岐の発生とデータアクセスの発生との競合を制御回路３４から通知されると、エンコーダ２６からの分岐情報を選択して信号線５２に出力した後、エンコーダ３０からの遅延後のデータアクセス情報を選択して信号線５２に出力する。
【００９７】
この結果、有効ビット数を含む分岐情報及びデータアクセス情報が時系列で並んだ状態で、パラレル−シリアル変換器３６に送られる。
【００９８】
パラレル−シリアル変換器３６は、分岐情報及びデータアクセス情報が信号線５２を介して送られてくると、パラレル−シリアル変換器３６に含まれているＦＩＦＯにそのまま格納する。そして、分岐情報及びデータアクセス情報の出力タイミング調整を行いながら、分岐情報及びデータアクセス情報をＦＩＦＯから読み出し、分岐情報及びデータアクセス情報をシリアルデータに変換した後、トレース用バス５３を介してＩＣＥ３８に出力する。ここで、分岐情報及びデータアクセス情報をＦＩＦＯから読み出した際に、分岐情報及びデータアクセス情報に含まれている有効ビット数を取り出し、この有効ビット数で示されるデータ以外を切り捨てながら、パラレル−シリアル変換を行う。
【００９９】
また、パラレル−シリアル変換器３６は、パラレル−シリアル変換の対象となるデータをエンコーダ３７に送り、トレース用バス５３に出力しているデータのステータスをエンコードさせる。そして、パラレル−シリアル変換されたデータがトレース用バス５３に出力されている時に、エンコーダ３７でデコードされたステータス信号がステータス出力用バス５４を介してＩＣＥ３８に出力されるようにする。
【０１００】
例えば、命令アドレスバス４１、データアドレスバス４２及びデータバス４３のビット幅がそれぞれ３２ビットであるものとし、マルチプレクサ３３からの信号線５２のビット幅が６４ビット、トレース用バス５３のビット幅が４ビットであるものとすると、マルチプレクサ３３は、命令アドレスバス４１、データアドレスバス４２及びデータバス４３から入力された分岐情報及びデータアクセス情報が６４ビットパラレルでパラレル−シリアル変換器３６に送られる。パラレル−シリアル変換器３６はマルチプレクサ３３から送られた６４ビットパラレルのデータを４ビットパラレルのデータに変換してＩＣＥ３８に出力する。この際、パラレル−シリアル変換器３６は、マルチプレクサ３３から送られた６４ビットパラレルのデータに含まれる冗長な部分を切り落としてＩＣＥ３８に出力する。このため、トレースデータをパラレルシリアル変換してＩＣＥ３８に出力する際に、トレースデータの出力に必要なクロック数を減らすことが可能となり、トレースデータの欠落を防止することが可能となる。
【０１０１】
また、図５のＤＳＵ２２では、トレースデータの出力が間に合わなくなった時の復帰のためのプロトコルが定義されている。
【０１０２】
例えば、分岐やデータアクセスが頻発し、タイミング調節用のバッファがフルになり、トレースデータの出力が間に合わなくなると、パラレル−シリアル変換器３６は、バッファフルであることを制御部３４に伝える。制御部３４は、バッファフルという通知を受けた場合、データ消失ステータスをバッファの最後に書き込んで、トレースデータのバッファへの出力を中断させる。
【０１０３】
このことにより、バッファフルになるまでに格納されたトレースデータを保護して、バッファフルになるまでに格納されたトレースデータの出力を保証することが可能となるとともに、データロストが発生した時点を容易に確認することが可能となる。
【０１０４】
そして、トレースデータのバッファへの書き込みを再開する場合には、バッファに空きができた時の分岐発生からトレースデータの書き込みを開始し、出力再開時に書き込む分岐情報は絶対アドレスとする。
【０１０５】
このことにより、データロスト後に再開されたトレースデータの出力開始直後からデータのチェーンを辿ることが可能となり、トレースデータの解析を効率的に行うことが可能となる。
【０１０６】
このように、図５の実施例によれば、エンコーダ２６からの分岐情報とエンコーダ３０からのデータアクセス情報とを切り替えながら、これらの情報を共通の信号線５２に出力することにより、トレースデータを出力するための必要な信号線の本数を減らすことが可能となる。
【０１０７】
また、実行命令数とアドレス変位を分岐情報として出力することにより、分岐先が近距離の場合はデータ圧縮を効率的に行うことが可能となり、小さなループが実行されて分岐が短期間に連続して発生した場合でも、１回分の分岐情報の出力に必要なクロック数を減らすことが可能となり、トレース情報の欠落を防止することが可能となる。
【０１０８】
また、分岐の発生とデータアクセスとが競合した場合には、分岐情報を出力した後、データアクセス情報を出力することにより、分岐情報とデータアクセス情報との時間関係の整合性を保ちつつ、分岐情報の出力とデータアクセス情報の出力の衝突を回避することが可能となる。
【０１０９】
また、トレースデータにタグ情報を付加したままパラレル−シリアル変換器３６に送り、パラレル−シリアル変換する時に冗長なデータを切り捨てることにより、トレース用バス５３から出力されるトレースデータとステータス用バス５４から出力されるステータス信号を同期させることが可能となることから、出力されたデータの解析を容易にすることが可能となるとともに、ステータス用バス５４で多くの情報を送ることが可能になり、出力データに複雑なフォーマットを指定することが可能となる。
【０１１０】
図８は、本発明の第４実施例に係わる情報処理装置の構成を示すブロック図である。
【０１１１】
図８において、７１はＣＰＵ、７２はＤＳＵ、７３は命令アドレスバス１０１のデータから実際に実行された命令のアドレスだけを取り出すアドレスパイプライン、７４は各分岐間に実行した命令数を求める命令実行数カウンタ、７５はＣＰＵ７１が出力した命令アドレスの差分から分岐発生を検出する分岐検出部、７６は命令アドレスの差分を求める減算器、７７は分岐発生時に命令実行数カウンタ７４及び分岐検出部７５の出力データからトレース出力に必要なデータを生成するエンコーダ、７８は命令実行数カウンタ７４及び分岐検出部７５の出力データの有効桁数を算出するタグ生成部、７９はデータアドレスバス１０２のデータのタイミングを取るバッファ、８０はデータバス１０３のデータのタイミングを取るバッファ、８１はバッファ７９、８０に保持されているデータアクセス情報からトレースデータを生成するエンコーダ、８２はデータアクセス情報を遅延させるバッファ、８３はデータアクセス情報の有効桁数を算出するタグ生成部、８４はトレース対象とするデータアドレスを指定するレジスタ、８５はレジスタ８４で指定されたデータアドレスとデータアドレスバス１０２から出力されたデータアドレスとを比較するアドレス比較部、８６は制御部８７からの指示に基づいて、エンコーダ７７から出力される分岐情報とエンコーダ８１から出力されるデータアクセス情報の出力の切り替えを行うマルチプレクサ、８７はトレース用バス１１３とトレース用バス１１５との切替を指示したり、分岐発生とデータアクセスの状況からトレース用バス１１５に出力するデータをマルチプレクサ８６に指示したりする制御部、８８は分岐発生とデータアクセスの競合を検出する競合検出部、８９はＦＩＦＯ９０をタイミング調整用バッファとして使用するか、トレースメモリとして使用するかを設定するレジスタ、９０はトレースデータの生成タイミングのばらつきを吸収するためのＦＩＦＯ、９１はＦＩＦＯ９０から出力されるデータの種別を示すためのステータス信号を生成するエンコーダ、９２はＩＣＥ、９３はトレースメモリである。
【０１１２】
また、１０１はＣＰＵ７１が命令フェッチに使用する命令アドレスバス、１０２はＣＰＵ７１がデータアクセスに使用するデータアドレスバス、１０３はＣＰＵ７１がデータアクセスに使用するデータバス、１０１’はパイプライン７３から出力されたアドレス情報を出力する信号線、１０４は実行命令数をエンコーダ７７に出力する信号線、１０５はアドレス変位をエンコーダ７７に出力する信号線、１０６は分岐発生をエンコーダ７７及び制御部８７に伝えるための信号線、１０７はエンコーダ７７が生成した分岐情報をマルチプレクサ８６に出力する信号線、１０８はエンコーダ８１が生成したデータアクセス情報をマルチプレクサ８６に出力する信号線、１０９はデータアクセスの発生を制御部８７に伝えるための信号線、１１０はマルチプレクサ８６の切り替えを指示するための信号線、１１１はＦＩＦＯ９０に設けられている２ポートＲＡＭ１４１に空きエントリがあるかどうかを伝えるための信号線、１１２はＦＩＦＯ９０をタイミング調整用バッファとして使用するか、トレースメモリとして使用するかを指示するための信号線、１１３はトレースデータをＩＣＥ９２へパラレルで出力するためのトレース用バス、１１５はトレースデータをパラレルシリアル変換してＩＣＥ９２へ出力するためのトレース用バス、１１６はトレース用バス１１５に出力中のデータのステータスをＩＣＥ９２へ伝えるためのステータス出力用バスである。
【０１１３】
ここで、トレースデータ出力バス１１３は、データアドレス、データ、データサイズ及びリード／ライト信号をパラレルに出力するもので、例えば、データアドレス及びデータのビット幅が３２ビットであるものとすると、トレースデータ出力バス１１３のビット幅は７０ビット程度になる。
【０１１４】
以下、図８のＤＳＵ７２の動作について説明する。
【０１１５】
ＣＰＵ７１が命令をフェッチすると、その命令アドレスが命令アドレスバス１０１を介してパイプライン７３に送られる。このパイプライン７３は、ＣＰＵ７１で行われるパイプライン動作と同様の処理を行い、命令アドレスバス１０１のデータから実際に実行された命令のアドレスだけを取り出して、命令実行数カウンタ７４及び分岐検出部７５に出力する。パイプライン７３からアドレス情報が出力されると、命令実行数カウンタ７４は、ＣＰＵ７１により実際に実行された命令実行数を算出する。また、分岐検出部７５は、命令アドレスのアドレス変位を算出することにより、ＣＰＵ７１の命令実行中に分岐が発生したかどうかを検出する。そして、分岐検出部７５が分岐発生を検出すると、分岐が発生したことをエンコーダ７７及び制御部８７に伝えるとともに、命令実行数カウンタ７４をリセットする。
【０１１６】
制御部８７には、トレースデータをトレース用バス１１５を介して送るか、トレース用バス１１３を介して送るかが設定され、トレースデータをトレース用バス１１３を介して送る場合、制御部８７は、分岐情報として絶対アドレスのみを出力するようにエンコーダ７７に指示する。また、トレースデータをトレース用バス１１３に出力するようにマルチプレクサ８６に指示するとともに、トレース用バス１１５からは分岐とデータアクセス以外のシステム情報を出力するように指示する。このシステム情報は、例えば、ＣＰＵ７１が動作しているのか動作していないのかを示す情報や省電力モードかどうかを示す情報などである。
【０１１７】
エンコーダ７７は、トレースデータがトレース用バス１１５を介して送られる場合、分岐検出部７５から出力されたアドレス変位の有効ビット数を算出する。アドレス変位の有効ビット数が求まると、この有効ビット数をタグデータとしてアドレス変位に付加した分岐情報を生成する。そして、アドレス変位の有効ビット数にタグデータのビット数を加えた値と、命令アドレスのビット幅とを比較する。ここで、アドレス変位の有効ビット数にタグデータのビット数を加えた値が、命令アドレスのビット幅以上の場合は、パイプライン７３から出力された分岐先の絶対アドレスをそのままマルチプレクサ８６に出力する。
【０１１８】
一方、アドレス変位の有効ビット数にタグデータのビット数を加えた値が、命令アドレスのビット幅より小さい場合は、タグデータが付加されたアドレス変位をマルチプレクサ８６に出力する。
【０１１９】
また、エンコーダ７７は、実行命令数カウンタ７４から出力された実行命令数についても、有効ビット数を算出する。実行命令数の有効ビット数が求まると、この有効ビット数をタグデータとして実行命令数に付加した分岐情報を生成し、マルチプレクサ８６に出力する。
【０１２０】
ここで、エンコーダ７７は、アドレス変位及び実行命令数の有効ビット数がどのような値であっても、任意の期間に最低１回は、絶対アドレスをマルチプレクサ８６に出力する。
【０１２１】
図９は、図８の分岐検出部７５及びエンコーダ７７の構成例を示すブロック図である。
【０１２２】
図９において、ラッチ１３１には、実行命令アドレスが入力され、命令アドレスが有効の場合、分岐前に実行された命令アドレスをラッチする。分岐が発生すると、減算器１３２は、ラッチ１３１に格納されている実行命令アドレスと現在の実行命令アドレスとの差分を算出し、アドレスブロック数算出部１３３及び切り替えスイッチ１３４に出力する。アドレスブロック数算出部１３３は、命令アドレスの差分のアドレスブロック数を算出し、そのアドレスブロック数をタグデータとして出力するとともに、切り替えスイッチ１３４に伝える。切り替えスイッチ１３４は、アドレスブロック数が所定値以上の場合、実行命令アドレスをそのまま分岐情報として出力し、アドレスブロック数が所定値より小さい場合、命令アドレスの差分を分岐情報として出力する。
【０１２３】
図１０は、アドレスブロック数算出処理の一例を示すフローチャートである。なお、図１０の実施例では、アドレスのビット幅は３２ビット、１ブロック当たりのビット数は４ビットとしているが、１ブロック当たりのビット数は、トレース用バス１１５のビット幅と対応するように設定することができる。例えば、ＦＩＦＯ９０で３２ビットパラレルのデータを４ビットパラレルのデータに変換して出力する場合には、１ブロック当たりのビット数は４とする。
【０１２４】
図１０において、アドレスの３１〜２８ビット目が０かどうかを判断し（ステップＳ２１）、アドレスの３１〜２８ビット目が０でない場合、アドレスブロック数として７を出力する（ステップＳ２２）。
【０１２５】
一方、アドレスの３１〜２８ビット目が０である場合、アドレスの２７〜２４ビット目が０かどうかを判断し（ステップＳ２３）、アドレスの２７〜２４ビット目が０でない場合、アドレスブロック数として６を出力する（ステップＳ２４）。
【０１２６】
一方、アドレスの２７〜２４ビット目が０である場合、アドレスの２３〜２０ビット目が０かどうかを判断し（ステップＳ２５）、アドレスの２３〜２０ビット目が０でない場合、アドレスブロック数として５を出力する（ステップＳ２６）。
【０１２７】
一方、アドレスの２３〜２０ビット目が０である場合、アドレスの１９〜１６ビット目が０かどうかを判断し（ステップＳ２７）、アドレスの１９〜１６ビット目が０でない場合、アドレスブロック数として４を出力する（ステップＳ２８）。
【０１２８】
一方、アドレスの１９〜１６ビット目が０である場合、アドレスの１５〜１２ビット目が０かどうかを判断し（ステップＳ２９）、アドレスの１５〜１２ビット目が０でない場合、アドレスブロック数として３を出力する（ステップＳ３０）。
【０１２９】
一方、アドレスの１１〜８ビット目が０である場合、アドレスの１１〜８ビット目が０かどうかを判断し（ステップＳ３１）、アドレスの１１〜８ビット目が０でない場合、アドレスブロック数として２を出力する（ステップＳ３２）。
【０１３０】
一方、アドレスの１１〜８ビット目が０である場合、アドレスの７〜４ビット目が０かどうかを判断し（ステップＳ３３）、アドレスの７〜４ビット目が０でない場合、アドレスブロック数として１を出力する（ステップＳ３４）。
【０１３１】
一方、アドレスの７〜４ビット目が０である場合、アドレスブロック数として０を出力する（ステップＳ３５）。
【０１３２】
一方、エンコーダ７７は、トレースデータがトレース用バス１１３を介して送られる場合には、パイプライン７３から送られる命令アドレスをそのままマルチプレクサ７７に送る。
【０１３３】
これは、トレース用バス１１３のビット幅は、トレースデータの欠落なくトレースデータをＩＣＥ９２に出力できるように設定されており、絶対アドレスをそのまま出力してもデータの欠落のない場合には、絶対アドレスをそのまま出力した方が、トレースデータの解析を効率よく行うことができるからである。
【０１３４】
一方、ＣＰＵ７１の動作中にデータアクセスが発生すると、データアドレスバス１０２に出力されたデータアドレスがバッファ７９を介してエンコーダ８１に送られるとともに、データバス１０３に出力されたデータがバッファ８０を介してエンコーダ８１に送られる。また、データアドレスバス１０２に出力されたデータアドレスは比較部８５にも送られる。
【０１３５】
比較部８５は、データアドレスバス１０２に出力されたデータアドレスを受け取ると、レジスタ８４に設定されているデータアドレスと比較を行い、その比較結果をエンコーダ８１に出力する。
【０１３６】
エンコーダ８１は、データアドレス及びアクセスデータが入力されると、比較部８５から送られた比較結果に基づいて、入力されたデータアドレス及びアクセスデータを処理対象とするかどうかを判断する。そして、入力されたデータアドレス及びアクセスデータを処理対象とする場合、データアクセスの発生を制御部８７に伝えるとともに、データアドレス及びアクセスデータの有効ビット数を求める。そして、求めた有効ビット数をタグデータとしてデータアドレス及びアクセスデータに付加したデータアクセス情報を生成し、生成したデータアクセス情報をマルチプレクサ８６に伝える。また、生成したデータアクセス情報をバッファ８２に格納し、現在のデータアクセス情報に加え、遅延させたデータアクセス情報もマルチプレクサ８６に伝える。
【０１３７】
ここで、エンコーダ８１は、データアドレスについて、図１０と同様の処理を行うことにより、アドレスブロック数を算出する。また、アクセスデータについて、以下の処理を行うことにより、データブロック数を算出する。
【０１３８】
図１１は、データブロック数算出処理の一例を示すフローチャートである。
【０１３９】
図１１において、３２ビットアクセスかどうかを判断し（ステップＳ４１）、３２ビットアクセスの場合、データブロック数として７を出力する（ステップＳ４２）。
【０１４０】
一方、３２ビットアクセスでない場合、１６ビットアクセスかどうかを判断し（ステップＳ４３）、１６ビットアクセスの場合、データブロック数として３を出力する（ステップＳ４４）。
【０１４１】
一方、１６ビットアクセスでない場合、データブロック数として０を出力する（ステップＳ４５）。
【０１４２】
制御部８７は、分岐検出部７５から伝えられた分岐の発生と、エンコーダ８１から伝えられたデータアクセスの発生とを監視し、分岐の発生とデータアクセスの発生とが競合する場合には、競合が起こったことをマルチプレクサ８６に伝える。
【０１４３】
マルチプレクサ８６は、トレースデータをトレース用バス１１５に出力するように指示された場合には、エンコーダ７７から送られた分岐情報及びエンコーダ８１から送られたデータアクセス情報を信号線１１４を介してＦＩＦＯ９０に出力する。ここで、マルチプレクサ８６は、分岐の発生とデータアクセスの発生との競合の発生を制御回路８７から受けると、エンコーダ７７からの分岐情報を選択して信号線１１４に出力した後、エンコーダ８１からの遅延後のデータアクセス情報を選択して信号線１１４に出力する。
【０１４４】
一方、マルチプレクサ８６は、トレースデータをトレース用バス１１３に出力するように指示された場合には、エンコーダ７７から送られた分岐情報及びエンコーダ８１から送られたデータアクセス情報をトレース用バス１１３を介してＩＣＥ９２に送る。
【０１４５】
ＦＩＦＯ９０は、分岐情報及びデータアクセス情報が信号線１１４を介して送られてくると、それらの情報をそのまま格納する。そして、分岐情報及びデータアクセス情報の出力タイミング調整を行いながら、分岐情報及びデータアクセス情報を読み出し、分岐情報及びデータアクセス情報をシリアルデータに変換した後、トレース用バス１１５を介してＩＣＥ９２に出力する。ここで、分岐情報及びデータアクセス情報をＦＩＦＯ９０から読み出した際に、分岐情報及びデータアクセス情報に含まれている有効ビット数を取り出し、この有効ビット数で示されるデータ以外を切り捨てながら、パラレルシリアル変換を行い、ＩＣＥ９２に出力する。
【０１４６】
図１２は、図８のＦＩＦＯ９０の構成例を示すブロック図である。
【０１４７】
図１２において、ＦＩＦＯ９０には、２ポートＲＡＭ１４１、比較回路１４２及びパラレルシリアル変換器１４３が設けられている。２ポートＲＡＭ１４１には、アドレスとデータの入出力端子が２セット設けられ、２つのアクセス要求を同時に処理できるようになっている。
【０１４８】
トレースデータ１４５を２ポートＲＡＭ１４１に書き込む場合、比較回路１４２は、ライトポインタ１４４の値とリードポインタ１４６の値とを比較し、その比較結果を制御部８７に送る。制御部８７は、比較回路１４２から送られた比較結果からＦＩＦＯ９０に空きがあるかどうかを判断し、ＦＩＦＯ９０に空きがある場合、ライトポインタ１４４の値をインクリメントし、トレースデータ１４５を２ポートＲＡＭ１４１に書き込む。
【０１４９】
トレースデータ１４５を２ポートＲＡＭ１４１から読み出す場合、リードポインタ１４６は、２ポートＲＡＭ１４１から前回読み出されたトレースデータ１４５のパラレルシリアル変換が終わっているかどうかを調べる。そして、パラレルシリアル変換が終わっている場合には、リードポインタ１４６の値をインクリメントし、トレースデータ１４５を２ポートＲＡＭ１４１から読み出し、パラレルシリアル変換器１４３及びエンコーダ９１に出力する。
【０１５０】
パラレルシリアル変換器１４３は、２ポートＲＡＭ１４１から読み出されたトレースデータ１４５が入力されると、そのトレースデータ１４５の有効ビット部分のみをシリアルデータに変換して、ＩＣＥ９２へ出力する。そして、２ポートＲＡＭ１４１から読み出されたトレースデータ１４５のパラレルシリアル変換が終了すると、そのことをリードポインタ１４６に伝える。
【０１５１】
エンコーダ９１は、２ポートＲＡＭ１４１から読み出されたトレースデータ１４５が入力されると、トレース用バス１１５に出力されているデータのステータスをエンコードし、ステータス出力用バス１１６を介してＩＣＥ９２に出力する。
【０１５２】
一方、制御部８７は、比較回路１４２から比較結果が送られた時に、ＦＩＦＯ９０に空きがないと判断した場合、データの出力が間に合わなくなった時の復帰のためのプロトコルに従って処理を行う。
【０１５３】
この復帰のためのプロトコルでは、ＦＩＦＯ９０に空きがないと判断した場合、データ消失ステータスをＦＩＦＯ９０の最後に書き込んで、トレースデータのＦＩＦＯ９０への出力を中断する。そして、ＦＩＦＯ９０に格納されたトレースデータがトレースデータ出力バス１１５を介してＩＣＥ９２に出力され、ＦＩＦＯ９０に空きができた時の分岐発生により、ＦＩＦＯ９０への書き込みを再開し、出力再開時の分岐情報として絶対アドレスを書き込む、
また、図８のＤＳＵ７２では、レジスタ８９で設定することにより、タイミング調整用のＦＩＦＯ９０をトレースメモリ９３として使用することができる。
【０１５４】
例えば、ＦＩＦＯ９０の容量が１２８ステップ分あるとすると、この１２８ステップ分のトレースデータをＦＩＦＯ９０に格納し、ＦＩＦＯ９０に格納されたトレースデータをトレース出力バス１１５から出力しないようにする。
【０１５５】
このことにより、１２８ステップ分のトレースデータについては、データ出力時のデータロストを防止することができ、１２８ステップ分のトレースデータについては、データロストしないようにして欲しいというユーザの要求に応えることができる。
【０１５６】
なお、ＦＩＦＯ９０に格納されているトレースデータの解析は、ＩＣＥ９２側からの中断命令などによりＣＰＵ７１を停止させ、エミュレータ用のプログラムに実行を移し、デバッカによりＦＩＦＯ９０に格納されているトレースデータを読み出させることにより行うことができる。
【０１５７】
図１３は、図８の制御部８７の動作の一例を示すフローチャートである。
【０１５８】
図１３において、トレースデータが発生した場合（ステップＳ６１）、レジスタ８９の内容を確認することにより、ＦＩＦＯ９０をタイミング調整用バッファとして使用しているかどうかを判断する（ステップＳ６２）。ここで、ＦＩＦＯ９０をタイミング調整用バッファとして使用している場合、空きエントリがＦＩＦＯ９０にあるかどうかを判断する（ステップＳ６３）。空きエントリがＦＩＦＯ９０にある場合、トレースデータをＦＩＦＯ９０に書き込む（ステップＳ６４）。一方、空きエントリがＦＩＦＯ９０にない場合、データロスト処理を行う（ステップＳ６５）。なお、このデータロスト処理は、上述したデータの出力が間に合わなくなった時の復帰のためのプロトコルに従って行う。
【０１５９】
一方、ＦＩＦＯ９０をタイミング調整用バッファとして使用していない場合、トレースメモリに空きがあるかどうかを判断する（ステップＳ６６）。ここで、ＦＩＦＯ９０をタイミング調整用バッファとして使用していない場合とは、ＦＩＦＯ９０をトレースメモリとして使うように指定した場合や、ＤＳＵ７２が集積されているチップ外部にトレース用メモリを接続してトレースを行う場合である。トレースメモリに空きがある場合、トレースデータをトレースメモリに書き込む（ステップＳ６７）。
【０１６０】
一方、トレースメモリに空きがない場合、トレースメモリがリングバッファかどうか判断する（ステップＳ６８）。ここで、トレースメモリがリングバッファの場合、トレースデータをトレースメモリに書き込む（ステップＳ６９）。一方、トレースメモリがリングバッファでない場合、トレースを停止する（ステップＳ７０）。なお、トレースメモリをリングバッファとして使用する場合、トレースデータの古い部分から新たなトレースデータが上書きされる。
【０１６１】
図１４（ａ）は、図８のパイプライン７３の動作を説明する図であり、分岐命令を実行した時のパイプライン動作を行うＣＰＵ７１の内部動作タイミングを示したものである。。
【０１６２】
図１４（ａ）において、ＩＦは命令フェッチステージ、ＩＤは命令デコードステージ、ＥＸは演算ステージ、ＭＡはメモリアクセスステージ、ＷＢは演算結果をレジスタに書き戻すためのライトバックステージ、▲１▼〜▲７▼はＣＰＵ７１のサイクルを示し、右側が時間的に後になる。また、ＪＭＰは分岐命令を、＃０は分岐命令ＪＭＰの直後の命令を、＃１は分岐命令ＪＭＰの分岐先の１命令目を、×は命令＃０が分岐命令ＪＭＰによってフェッチ後にキャンセルされたことを示す。
サイクル▲１▼で分岐命令ＪＭＰをフェッチし、サイクル▲２▼で分岐命令ＪＭＰがＩＤステージに送られるとともに、命令＃０がフェッチされる。ここで、分岐命令ＪＭＰをデコードした結果、分岐の発生を検知すると、分岐命令ＪＭＰの直後の命令＃０はキャンセルされる。この結果、サイクル▲３▼で分岐命令ＪＭＰがＥＸステージに送られるとともに、キャンセルされた命令の隙間がＩＤステージに発生する。また、後続の命令＃１がフェッチされる。
【０１６３】
次に、サイクル▲４▼で分岐命令ＪＭＰがＭＡステージに送られ、キャンセルされた命令の隙間がＥＸステージに送られ、命令＃１がＩＤステージに送られ、サイクル▲５▼で分岐命令ＪＭＰがＥＸステージに送られ、キャンセルされた命令の隙間がＭＡステージに送られ、命令＃１がＷＢステージに送られ、サイクル▲６▼でキャンセルされた命令の隙間がＭＡステージに送られるとともに、命令＃１がＷＢステージに送られ、サイクル▲７▼で命令＃１がＷＢステージに送られる。
【０１６４】
図１４（ｂ）は分岐命令実行時の差分アドレスの生成方法を説明する図であり、図１４（ａ）からＭＡステージのみを抜き出したものである。
【０１６５】
図１４（ｂ）において、差分アドレスを求めるためには、分岐元アドレスと分岐先アドレスが必要である。このため、分岐命令ＪＭＰがＭＡステージに入るサイクル▲４▼で、分岐元アドレスをラッチし、分岐先の１命令目がＭＡステージに入るサイクル▲６▼で、（分岐先アドレス−分岐元アドレス）の演算を分岐検出部７５で行うことにより、差分アドレスを算出する。ここで、ＭＡステージを基準に命令トレースのデータを生成するのは、データアクセスのトレースデータの生成と同期をとるためである。
【０１６６】
一方、データアクセスのトレースデータは、データアクセスを伴う命令によりＭＡステージで実際にアクセスが行われた時に生成する。そのため、図１４（ａ）において、分岐命令ＪＭＰが存在せず、命令＃１がデータアクセス命令の場合には、データアクセスのトレースデータはサイクル▲６▼で生成される。この場合、エンコーダ８１から出力されるデータアクセス情報がマルチプレクサ８６で選択され、ＦＩＦＯ９０へ送られる。
【０１６７】
次に、分岐発生による差分アドレスとデータアクセスによるトレースデータが同一タイミングで発生した場合の競合回避の方法につい説明する。
【０１６８】
図１４（ｃ）は、分岐による差分アドレスとデータアクセスによるトレースデータの生成タイミングを説明する図であり、図１４（ａ）の命令＃１がストア命令ＳＴである場合を示している。
【０１６９】
図１４（ｃ）において、分岐発生とデータアクセスとが競合した場合には、命令トレース用の差分アドレスとデータアクセス情報との両方のデータがサイクル▲６▼で生成される。この場合、競合検出部８８は、分岐発生とデータアクセスとの競合の発生をマルチプレクサ８６に伝える。マルチプレクサ８６は、分岐発生とデータアクセスとの競合の発生を知らされると、命令トレース用の差分アドレスを選択してＦＩＦＯ９０に出力した後、バッファ８２で１クロック分遅延させられたデータアクセス情報を選択してＦＩＦＯ９０に出力する。この結果、分岐発生とデータアクセスとが競合した場合においても、分岐情報とデータアクセス情報の時間関係の整合性を保ちつつ、分岐情報とデータアクセス情報とを共通の信号線１１４を用いて出力することが可能となる。
【０１７０】
なお、データアクセスが連続して発生している時に分岐が発生し、分岐情報を送るためにデータアクセス情報を１クロック分遅延させると、１クロック分遅延させられたデータアクセス情報と現在のデータアクセス情報とが競合する。この場合、競合したデータアクセス情報は、分岐発生直後のキャンセルされた命令の隙間で吸収することができる。
【０１７１】
以上説明したように、本実施例によれば、単一のトレース用バスで命令実行とデータアクセスの２つの情報をトレース結果として出力することが可能になり、今後のシステム高速化の際もトレース用端子の増加を防ぐことができ、機能を落とすことなく、ＩＣＥを含めたシステム全体を容易に実現することが可能となる。
【０１７２】
また、出力情報の冗長部分を削減し、トレース用バスに出力する情報の密度を上げることが可能となり、トレース用バスのビット幅を増やすことなしに、より多くのトレース情報を出力することが可能となる。
【０１７３】
【発明の効果】
以上説明したように、本発明によれば、データアクセス情報の出力系列の中に分岐情報を挿入することにより、データアクセス情報を出力するための出力バスと分岐情報を出力するための出力バスとを共通にすることが可能となることから、トレースデータの出力に必要なパケージのピン数を減らすことが可能となる。
また、本発明の一態様によれば、分岐情報の出力とデータアクセス情報の出力との競合が検出された場合、分岐情報の出力後に、データアクセス情報を出力することにより、分岐情報とデータアクセス情報との時間関係の整合性を保ちつつ、分岐情報とデータアクセス情報とを共通の出力バスを介して出力することが可能となる。
【０１７４】
また、本発明の一態様によれば、分岐の発生によりキャンセルされた命令の出力を行わないようにすることにより、不要となったデータの出力を防止して、トレース解析に必要な情報のみを出力することが可能となる。
【０１７５】
また、本発明の一態様によれば、分岐によるアドレス変位と命令実行数をその有効桁数分だけ出力することにより、それらの情報をシリアルで出力する際に必要なクロック数を減らすことが可能となり、トレースデータを高速に出力することが可能となる。
【０１７６】
また、本発明の一態様によれば、有効桁数を分岐情報の中に含めることにより、有効桁数と分岐情報とを同時に転送することが可能となり、有効桁数と分岐情報とを同期させて出力することが可能となる。
【０１７７】
また、本発明の一態様によれば、相対アドレスの有効桁数の方が絶対アドレスの桁数よりも大きい場合、相対アドレスを出力するのではなく、絶対アドレスをそのまま分岐情報として出力することにより、トレースデータの出力を効率よく行うことが可能となる。
【０１７８】
また、本発明の一態様によれば、データアドレスとアクセスデータとをその有効桁数分だけ出力することにより、データアクセス情報の出力についても効率化を図ることが可能となる。
【０１７９】
また、本発明の一態様によれば、所定の期間に最低１回は絶対アドレスを出力することにより、トレースデータの解析を容易に行うことが可能となるとともに、データロストが起こった時のトレースが不能となる部分を減らすことができる。
【０１８０】
また、本発明の一態様によれば、出力タイミング調整用バッファから読み出されたデータをパラレルシリアル変換しながら出力するとともに、そのデータのデコード結果を同時に出力することにより、これらの情報の出力を同期させることが可能となる。
【０１８１】
また、本発明の一態様によれば、トレースデータをパラレルシリアル変換して出力する出力バスに加え、トレースデータをパラレルのまま出力する出力バスを設け、分岐情報として絶対アドレスを出力することにより、データロストの発生を伴うことなく、トレースデータを出力することが可能となる。
【０１８２】
また、本発明の一態様によれば、トレースデータをパラレルのまま出力する場合には、余った出力バスからシステム情報を出力することにより、出力バスを有効に利用することが可能となる。
【０１８３】
また、本発明の一態様によれば、出力タイミングを調整するバッファがフルになった場合、データ消失ステータスをバッファに書き込んだ後に、バッファへのデータの書き込みを中断することにより、データロストが起こるまでに既にバッファに書き込まれているデータを保護することが可能となるとともに、そのデータロストが起こった位置を確認することが可能となる。
【０１８４】
また、本発明の一態様によれば、バッファへのデータの書き込みを分岐発生時から再開し、その時の分岐情報として絶対アドレスをバッファに書き込むことにより、データの書き込みの再開時にトレース不能なデータが書き込まれることを防止して、データトレースを効率的に行うことが可能となる。
【０１８５】
また、本発明の一態様によれば、バッファをトレースメモリとして使用することにより、バッファの容量分だけは、データ消失させないでトレースデータを保持することが可能となり、データ消失がないトレースデータのデバッグを保証することが可能となる。
【図面の簡単な説明】
【図１】本発明の第１実施例に係わる情報処理装置の構成を示すブロック図である。
【図２】本発明の第２実施例に係わる情報処理装置の構成を示すブロック図である。
【図３】図２のアドレス変位及び実行命令数の算出方法を示す図である。
【図４】図２の情報処理装置の出力データの一例を示す図である。
【図５】本発明の第３実施例に係わる情報処理装置の構成を示すブロック図である。
【図６】図５の実行命令数カウンタ２３の動作を示すフローチャートである。
【図７】図５の制御部３４の動作を示すフローチャートである。
【図８】本発明の第４実施例に係わる情報処理装置の構成を示すブロック図である。
【図９】図８の分岐検出部７５及びエンコーダ７７の構成の一例を示すブロック図である。
【図１０】アドレスブロック数算出処理の一例を示すフローチャートである。
【図１１】データブロック数算出処理の一例を示すフローチャートである。
【図１２】図８のＦＩＦＯ９０の構成例を示すブロック図である。
【図１３】図８の制御部８７の動作の一例を示すフローチャートである。
【図１４】（ａ）は図８のパイプライン７３の動作を説明する図、（ｂ）は分岐命令実行時の差分アドレスの生成方法を説明する図、（ｃ）は分岐による差分アドレスとデータアクセスによるトレースデータの生成タイミングを説明する図である。
【図１５】従来のトレース装置の構成を示すブロック図である。
【図１６】従来のトレース装置の構成を示すブロック図である。
【図１７】図１６のＤＳＵ２２４の構成を示すブロック図である。
【符号の説明】
１  競合検出手段
２  出力データ選択手段
３  遅延手段
１１  アドレス変位算出手段
１２  命令実行数算出手段
１３  有効桁数算出手段
１４  データ出力手段
２１、７１  ＣＰＵ
２２、７２  ＤＳＵ
２３、７４  実行命令数カウンタ
２４、７５  分岐検出部
２５、７６、１３２  減算器
２６、３０、３７、７７、８１、９１  エンコーダ
２７、３２、７８、８３  タグ生成部
２８、２９、３１、７９、８０、８２  バッファ
３４、８７  制御部
３５、８８  競合検出部
３３、８６  マルチプレクサ
３６、１４３  パラレルシリアル変換部
３８、９２  ＩＣＥ
３９、９３  トレースメモリ
７３  パイプライン
８４、８９  レジスタ
８５  比較部
９０  ＦＩＦＯ
１３１  命令アドレス用ラッチ
１３３  アドレスブロック数算出部
１４１  ２ポートＲＡＭ
１４２  比較回路
【図１】
0003583937.tif 000002
【図２】
0003583937.tif 000003
【図３】
0003583937.tif 000004
【図４】
0003583937.tif 000005
【図５】
0003583937.tif 000006
【図６】
0003583937.tif 000007
【図７】
0003583937.tif 000008
【図８】
0003583937.tif 000009
【図９】
0003583937.tif 000010
【図１０】
0003583937.tif 000011
【図１１】
0003583937.tif 000012
【図１２】
0003583937.tif 000013
【図１３】
0003583937.tif 000014
【図１４】
0003583937.tif 000015
【図１５】
0003583937.tif 000016
【図１６】
0003583937.tif 000017
【図１７】
0003583937.tif 000018