(57)【要約】【課題】  ＰＣトレース機能を有するマイクロプロセッサおよびその制御方法において、ＰＣトレースのリアルタイム性を向上させる。【解決手段】  本発明のマイクロプロセッサおよびその制御方法は、分岐命令などによりＰＣ（プログラムカウンタ）が分岐先ＰＣへ不連続に変化する場合に、分岐先ＰＣをあらかじめ設定されたアドレス範囲と比較し、当該比較結果に基づいて分岐先ＰＣの圧縮情報１５を生成するＴＰＣ圧縮回路１２と、分岐先ＰＣ、および、ＴＰＣ圧縮回路１２からの圧縮情報１５に基づいて、分岐先ＰＣの部分ビット列を圧縮アドレスとして抽出し、圧縮情報１５および圧縮アドレスをトレース情報１４として出力する圧縮ＴＰＣ出力回路１３を有する。【選択図】  図１
2006268746.tif 000002
【特許請求の範囲】
【請求項１】
分岐命令などによりＰＣ（プログラムカウンタ）が分岐先ＰＣへ不連続に変化する場合に、前記分岐先ＰＣをあらかじめ設定されたアドレス範囲と比較し、当該比較結果に基づいて前記分岐先ＰＣの圧縮情報を生成する圧縮手段と、
前記分岐先ＰＣ、および、前記圧縮手段からの前記圧縮情報に基づいて、前記分岐先ＰＣの部分ビット列を圧縮アドレスとして抽出し、前記圧縮情報および前記圧縮アドレスをトレース情報として出力する圧縮アドレス出力手段を有することを特徴とするマイクロプロセッサ。
【請求項２】
前記圧縮手段は、
基準アドレスが格納される第１の記憶手段と、
前記第１の記憶手段に格納された前記基準アドレスに対応して前記アドレス範囲を生成するために、前記分岐先ＰＣと比較するビット位置を指定するアドレスマスクが格納される第２の記憶手段と、
前記第２の記憶手段に格納された前記アドレスマスクに基づいて、前記基準アドレスと前記分岐先ＰＣとを比較し、これらが一致したことを示す一致信号、および前記圧縮アドレスのビット数を示す圧縮ビット数を生成するアドレス比較手段と、
前記アドレス比較手段からの前記一致信号および前記圧縮ビット数に基づいて、前記圧縮情報を生成するコード生成手段を有することを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
前記第１および第２の記憶手段、および前記アドレス比較手段を有する複数のチャネルを備え、
前記コード生成手段は、
前記複数のチャネルからの前記一致信号および前記圧縮ビット数に基づいて、前記複数のチャネルのうち少なくとも１つで前記一致信号が生成されたことを示す出力モード、前記一致信号を出力した前記複数のチャネルから選択された１つのチャネル番号、および選択された前記チャネルからの前記圧縮ビット数に基づいて生成された出力ビット数を前記圧縮情報として生成することを特徴とする請求項２に記載のマイクロプロセッサ。
【請求項４】
前記圧縮アドレス出力手段は、
前記コード生成手段からの前記出力モードを前記トレース情報として出力する第１の出力手段と、
前記コード生成手段からの前記チャネル番号を前記トレース情報として出力する第２の出力手段と、
前記分岐先ＰＣ、および、前記コード生成手段からの前記圧縮ビット数に基づいて、前記分岐先ＰＣの部分ビット列を圧縮アドレスとして抽出し、当該圧縮アドレスを前記トレース情報として出力する第３の出力手段を有することを特徴とする請求項３に記載のマイクロプロセッサ。
【請求項５】
分岐命令などによりＰＣ（プログラムカウンタ）が分岐先ＰＣへ不連続に変化する場合に、前記分岐先ＰＣとあらかじめ設定されたアドレス範囲とを比較し判定する第１のステップと、
前記第１のステップで前記分岐先ＰＣが前記アドレス範囲に含まれていると判定された場合に、前記比較結果に基づいて前記分岐先ＰＣの圧縮情報を生成する第２のステップと、
前記分岐先ＰＣ、および、前記第２のステップで生成された前記圧縮情報に基づいて、前記分岐先ＰＣの部分ビット列を圧縮アドレスとして抽出し、前記圧縮情報および前記圧縮アドレスをトレース情報として出力する第３のステップを有することを特徴とするマイクロプロセッサの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイムトレース機能を有するマイクロプロセッサおよびその制御方法に関する。
【背景技術】
【０００２】
リアルタイムトレース機能を有する従来のマイクロプロセッサおよびその制御方法では、分岐命令などの実行によりプログラムカウンタ（以下、「ＰＣ」という。）がジャンプ先のアドレス（以下、「分岐先ＰＣ」という。）へ不連続に変化する場合、トレース情報として分岐先ＰＣを出力する（例えば、「特許文献１」を参照。）。外部端子数を減らすため、分岐先ＰＣは、通常、シリアルデータに変換され、クロックに同期して順次出力される。したがって、従来は、分岐先ＰＣを出力するためにＰＣのビット幅分のクロック数を必要としていた（例えば、「非特許文献１」を参照。）。
【０００３】
図１２は、従来のマイクロプロセッサおよびその制御方法におけるリアルタイムトレース機能を示す回路ブロック図の一例である。従来は、図１２に示すように、ＰＣトレース制御回路１０１とＴＰＣ出力回路１０２でリアルタイムトレース機能が実現されていた。ＰＣトレース制御回路１０１は、“実行”、“ストール”、“分岐”、“例外検出”などのＣＰＵ（Central Processing Unit）の状態を示す信号が入力され、分岐命令、条件分岐命令などでＰＣが不連続に変化した場合に、デバッグのためにＰＣを出力するＰＣトレースの開始を示すＴＰＣ出力開始信号をＴＰＣ出力回路１０２へ供給する。ＴＰＣ出力回路１０２は、ＴＰＣ出力開始信号を受けて、分岐先ＰＣをシリアルデータに変換してトレース情報１０３としてＴＰＣ端子へ出力する。また、ＰＣトレース制御回路１０１は、ＰＣが不連続に変化した時のＣＰＵの状態をコード化してトレース情報１０３としてＰＣＳＴ端子へ出力する。
【０００４】
図１３は、従来のマイクロプロセッサおよびその制御方法におけるトレース情報１０３の出力タイミングを示す波形図である。ここでは、一例として、ＰＣは３２ｂｉｔ、ＴＰＣは１ｂｉｔシリアル出力の場合を示した。ＴＰＣ出力回路１０２は、ＰＣトレース出力開始を示すＰＣＳＴコードを“ＪＭＰ”として、ＰＣＳＴがＪＭＰになったクロックサイクルで分岐先ＰＣのｂｉｔ［３１］（以下、［］で囲まれた数字はビット位置を示す。）を出力し、次のクロックサイクルで分岐先ＰＣのｂｉｔ［３０］を出力し、以下クロック（ＣＬＫ）に同期してｂｉｔ［２９］、ｂｉｔ［２８］と順次出力する。したがって、図１３に示したように、分岐先ＰＣを出力するためには３２クロック（分岐先ＰＣ出力期間）を必要とする。
【０００５】
このため、従来のマイクロプロセッサおよびその制御方法では、例えば、命令が格納されているプログラムエリアが“０ｘｂｆｃ０００００〜０ｘｂｆｃｆｆｆｆｆ”（以下、１６進数には先頭に“０ｘ”を付して表す。）の１Ｍバイトであり、プログラムエリア内でＰＣが不連続に変化するジャンプが頻繁に起きるようなプログラムの場合に、分岐先ＰＣ出力期間中に次の分岐命令が実行されてＴＰＣ出力のオーパーフローが生じ、ＰＣトレースのリアルタイム性が損なわれるという問題があった。すなわち、このようなオーバーフローが生じた場合に、従来は、ＴＰＣ出力を中止するか、あるいは出力中のＴＰＣ出力が終了するのを待って次のＴＰＣ出力を開始していた。
【０００６】
近年、マイクロプロセッサの高速化が進展し、ＣＰＵの動作クロックが外部機器とのインターフェースで使用される外部クロックに比べ数倍の周波数であることも珍しくなくなっている。したがって、ＰＣトレースにおけるＴＰＣ出力のオーバーフロー問題は、今後ますます深刻、かつ、重要になっていくものと思われる。
【特許文献１】特開平１０−２７５０９２号公報（第６頁）
【非特許文献１】矢野達男、宮森高 著、「リアルタイム・トレースを５０ＭＨｚの量産用ＭＰＵで実現」日経ＢＰ社、日経エレクトロニクス１９９５．７．３１（ｎｏ．６４１）、ｐ．１３３−１４０（図５）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、ＰＣトレースにおけるリアルタイム性を向上させることができるマイクロプロセッサおよびその制御方法を提供する。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、分岐命令などによりＰＣ（プログラムカウンタ）が分岐先ＰＣへ不連続に変化する場合に、前記分岐先ＰＣをあらかじめ設定されたアドレス範囲と比較し、当該比較結果に基づいて前記分岐先ＰＣの圧縮情報を生成する圧縮手段と、前記分岐先ＰＣ、および、前記圧縮手段からの前記圧縮情報に基づいて、前記分岐先ＰＣの部分ビット列を圧縮アドレスとして抽出し、前記圧縮情報および前記圧縮アドレスをトレース情報として出力する圧縮アドレス出力手段を有することを特徴とするマイクロプロセッサが提供される。
【０００９】
本発明の別の一態様によれば、分岐命令などによりＰＣ（プログラムカウンタ）が分岐先ＰＣへ不連続に変化する場合に、前記分岐先ＰＣとあらかじめ設定されたアドレス範囲とを比較し判定する第１のステップと、前記第１のステップで前記分岐先ＰＣが前記アドレス範囲に含まれていると判定された場合に、前記比較結果に基づいて前記分岐先ＰＣの圧縮情報を生成する第２のステップと、前記分岐先ＰＣ、および、前記第２のステップで生成された前記圧縮情報に基づいて、前記分岐先ＰＣの部分ビット列を圧縮アドレスとして抽出し、前記圧縮情報および前記圧縮アドレスをトレース情報として出力する第３のステップを有することを特徴とするマイクロプロセッサの制御方法が提供される。
【発明の効果】
【００１０】
本発明によれば、トレース情報として分岐先ＰＣを圧縮して出力できるので、ＰＣトレースにおけるリアルタイム性を大幅に向上させたマイクロプロセッサおよびその制御方法を実現することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照しながら、本発明の実施例を説明する。
【実施例】
【００１２】
図１は、本発明の実施例に係わるマイクロプロセッサを示す回路ブロック図である。ここでは、主に、トレース情報１４の出力にかかわる部分を示した。
【００１３】
本発明の実施例に係わるマイクロプロセッサは、ＰＣトレース制御回路１１、ＴＰＣ圧縮回路１２、および圧縮ＴＰＣ出力回路１３を備えている。
【００１４】
ＰＣトレース制御回路１１の第１の入力には実行信号が入力され、第２の入力にはストール信号が入力され、第３の入力には分岐信号が入力され、第４の入力には例外検出信号が入力され、ＰＣトレース制御回路１１の第１の出力はデバッグのためにＰＣを出力するトレース情報１４の出力開始を示すＴＰＣ出力開始信号としてＴＰＣ圧縮回路１２の第１の入力および圧縮ＴＰＣ出力回路１３の第１の入力へ供給され、第２の出力はＣＰＵの状態を示すトレース情報１４としてＰＣＳＴ端子へ供給されている。
【００１５】
ＴＰＣ圧縮回路１２の第２の入力には分岐先ＰＣが入力され、ＴＰＣ圧縮回路１２の第１の出力はＴＰＣ出力モードを示す圧縮情報１５として圧縮ＴＰＣ出力回路１３の第２の入力へ供給され、第２の出力はＴＰＣ圧縮ｃｈコードを示す圧縮情報１５として圧縮ＴＰＣ出力回路１３の第３の入力へ供給され、第３の出力はＴＰＣ出力ｂｉｔ数を示す圧縮情報１５として圧縮ＴＰＣ出力回路１３の第４の入力へ供給されている。
【００１６】
圧縮ＴＰＣ出力回路１３の第５の入力には分岐先ＰＣが入力され、圧縮ＴＰＣ出力回路１３の出力は分岐先ＰＣを示すトレース情報１４としてＴＰＣ端子へ供給されている。
【００１７】
ＰＣトレース制御回路１１は、入力された実行信号、ストール信号、分岐信号、および例外検出信号に基づいて、ＰＣが不連続に変化する（以下、「ジャンプする」という。）場合に、ＰＣトレース情報の出力開始を指示するＴＰＣ出力開始信号を出力する。
【００１８】
ＴＰＣ圧縮回路１２は、分岐命令などによりＰＣが分岐先ＰＣへジャンプする場合に、分岐先ＰＣをあらかじめ設定されたアドレス範囲と比較し、その比較結果に基づいて分岐先ＰＣの圧縮情報１５を生成する。
【００１９】
圧縮ＴＰＣ出力回路１３は、分岐先ＰＣおよび圧縮情報１５に基づいて、分岐先ＰＣの部分ビット列を圧縮アドレスとして抽出し、圧縮情報１５および圧縮アドレスをトレース情報１４として出力する。
【００２０】
図２は、本発明の実施例に係わるマイクロプロセッサのＴＰＣ圧縮回路１２を示す回路ブロック図である。
【００２１】
本発明の実施例に係わるマイクロプロセッサのＴＰＣ圧縮回路１２は、設定レジスタ２１ａ〜２１ｄ、アドレス比較器２２ａ〜２２ｄ、およびチャネルセレクタ２３を備えている。
【００２２】
設定レジスタ２１ａおよびアドレス比較器２２ａは対でチャネル０（以下、「ｃｈ０」という。）を構成し、設定レジスタ２１ｂおよびアドレス比較器２２ｂは対でチャネル１（以下、「ｃｈ１」という。）を構成し、設定レジスタ２１ｃおよびアドレス比較器２２ｃは対でチャネル２（以下、「ｃｈ２」という。）を構成し、設定レジスタ２１ｄおよびアドレス比較器２２ｄは対でチャネル３（以下、「ｃｈ３」という。）を構成している。
【００２３】
ｃｈ０〜ｃｈ３は、図３に示したように、２ｂｉｔのチャネル番号で表したＴＰＣ圧縮ｃｈコードで識別される。
【００２４】
設定レジスタ２１ａの出力はｃｈ０のレジスタ設定値としてアドレス比較器２２ａの第１の入力へ供給され、設定レジスタ２１ｂの出力はｃｈ１のレジスタ設定値としてアドレス比較器２２ｂの第１の入力へ供給され、設定レジスタ２１ｃの出力はｃｈ２のレジスタ設定値としてアドレス比較器２２ｃの第１の入力へ供給され、設定レジスタ２１ｄの出力はｃｈ３のレジスタ設定値としてアドレス比較器２２ｄの第１の入力へ供給されている。
【００２５】
アドレス比較器２２ａの第２の入力には分岐先ＰＣ、およびＰＣトレース制御回路１１からのＴＰＣ出力開始信号が入力され、アドレス比較器２２ａの第１の出力はｃｈ０の圧縮出力ｂｉｔ数としてチャネルセレクタ２３の第１の入力へ供給され、第２の出力はｃｈ０の比較一致検出信号としてチャネルセレクタ２３の第２の入力へ供給されている。
【００２６】
アドレス比較器２２ｂの第２の入力には分岐先ＰＣ、およびＰＣトレース制御回路１１からのＴＰＣ出力開始信号が入力され、アドレス比較器２２ｂの第１の出力はｃｈ１の圧縮出力ｂｉｔ数としてチャネルセレクタ２３の第３の入力へ供給され、第２の出力はｃｈ１の比較一致検出信号としてチャネルセレクタ２３の第４の入力へ供給されている。
【００２７】
アドレス比較器２２ｃの第２の入力には分岐先ＰＣ、およびＰＣトレース制御回路１１からのＴＰＣ出力開始信号が入力され、アドレス比較器２２ｃの第１の出力はｃｈ２の圧縮出力ｂｉｔ数としてチャネルセレクタ２３の第５の入力へ供給され、第２の出力はｃｈ２の比較一致検出信号としてチャネルセレクタ２３の第６の入力へ供給されている。
【００２８】
アドレス比較器２２ｄの第２の入力には分岐先ＰＣ、およびＰＣトレース制御回路１１からのＴＰＣ出力開始信号が入力され、アドレス比較器２２ｄの第１の出力はｃｈ３の圧縮出力ｂｉｔ数としてチャネルセレクタ２３の第７の入力へ供給され、第２の出力はｃｈ３の比較一致検出信号としてチャネルセレクタ２３の第８の入力へ供給されている。
【００２９】
チャネルセレクタ２３の第９の入力には分岐先ＰＣ、およびＰＣトレース制御回路１１からのＴＰＣ出力開始信号が入力され、チャネルセレクタ２３の第１の出力はＴＰＣ出力モードとして圧縮ＴＰＣ出力回路１３へ供給され、第２の出力はＴＰＣ圧縮ｃｈコードとして圧縮ＴＰＣ出力回路１３へ供給され、第３の出力はＴＰＣ出力ｂｉｔ数として圧縮ＴＰＣ出力回路１３へ供給されている。
【００３０】
設定レジスタ２１ａ〜２１ｄには、圧縮する分岐先ＰＣのアドレス範囲を規定する値がプログラム実行前にそれぞれ格納される。
【００３１】
アドレス比較器２２ａは、ＰＣトレース制御回路１１からのＴＰＣ出力開始信号によって起動され、設定レジスタ２１ａからのレジスタ設定値でｃｈ０のアドレス範囲を生成し、これを分岐先ＰＣと比較する。
【００３２】
そして、比較結果に基づいて、分岐先ＰＣがｃｈ０のアドレス範囲に含まれていることを示す比較一致検出信号、および分岐先ＰＣの圧縮されたビット数を示す圧縮出力ｂｉｔ数を出力する。
【００３３】
アドレス比較器２２ｂ〜２２ｄは、アドレス比較器２２ａと同様である。アドレス比較器２２ａとの違いは、設定レジスタ２１ｂ〜２１ｄからのレジスタ設定値に基づいて、それぞれ、そのチャネルでのアドレス範囲に応じて、比較一致検出信号および圧縮出力ｂｉｔ数を出力することである。
【００３４】
チャネルセレクタ２３は、ＰＣトレース制御回路１１からのＴＰＣ出力開始信号によって起動され、ｃｈ０〜ｃｈ３からの比較一致信号に基づいて、分岐先ＰＣを含むアドレス範囲が設定されているチャネルを選択する。
【００３５】
そして、選択されたチャネルのチャネル番号をＴＰＣ圧縮ｃｈコードに設定し、さらに、ＴＰＣ出力モードを圧縮出力に設定する。また、その選択されたチャネルからの圧縮出力ｂｉｔ数に基づいて、ＴＰＣ出力ｂｉｔ数を生成する。
【００３６】
該当するチャネルが存在しない分岐先ＰＣの場合には、ＴＰＣ出力モードをノーマル出力に設定する。
【００３７】
そして、チャネルセレクタ２３は、生成したＴＰＣ出力モード、ＴＰＣ圧縮ｃｈコード、およびＴＰＣ出力ｂｉｔ数を圧縮情報１５として圧縮ＴＰＣ出力回路１３へ出力する。
【００３８】
図４は、本発明の実施例に係わるマイクロプロセッサのＴＰＣ圧縮回路１２における設定レジスタを示すイメージ図である。ここでは、一例として、ＰＣが３２ｂｉｔであるマイクロプロセッサの場合を示した。
【００３９】
本発明の実施例に係わるマイクロプロセッサのＴＰＣ圧縮回路１２における設定レジスタ２１ａ〜２１ｄは、それぞれ、基準アドレスレジスタ３１、アドレスマスクレジスタ３２、および圧縮イネーブルレジスタ３３を備えている。
【００４０】
図４の各レジスタの上部に付した数字は、それぞれのレジスタのビット位置（最下位ビットを“０”で表す。以下、ビット位置については同様である。）を示している。
【００４１】
基準アドレスレジスタ３１は、１６ｂｉｔ構成で、分岐先ＰＣと比較するアドレス範囲を規定する基準アドレスの上位１６ｂｉｔが格納される。例えば、３２ｂｉｔの基準アドレスを設定する場合、図４に示したように、基準アドレスレジスタ３１には、基準アドレス［１６：３１］が格納される。
【００４２】
ここで、“［１６：３１］”は、基準アドレスの第１６ビット〜第３１ビット（最下位ビットは第０ビットである。）を表している。以下、ビット位置の記述は同様である。
【００４３】
なお、図４では、下位ビットを右に置き、上位ビットを左に置いて表示しているため、“［３１：２８］”のように記述している。
【００４４】
アドレスマスクレジスタ３２は、４ｂｉｔ構成で、基準アドレスと分岐先ＰＣを比較する時のマスクデータが格納される。
【００４５】
アドレスマスクレジスタ３２の第０ビットが基準アドレス［１６：１９］（基準アドレスレジスタ３１の第０ビット〜第３ビット。）に対応し、第１ビットが基準アドレス［２０：２３］に対応し、第２ビットが基準アドレス［２４：２７］に対応し、第３ビットが基準アドレス［２８：３１］に対応している。
【００４６】
アドレスマスクレジスタ３２の値が“０”の場合は、そのビットに対応する基準アドレスの４ｂｉｔと分岐先ＰＣの同じビット位置の４ｂｉｔとが比較され、アドレスマスクレジスタ３２の値が“１”であれば、それらは実際には比較されずに一致しているものと判断（具体的な詳細は（１）式で後述する。）される。
【００４７】
基準アドレスレジスタ３１とアドレスマスクレジスタ３２に設定される値によって、分岐先ＰＣと比較されるアドレス範囲を任意に設定することができる。
【００４８】
圧縮イネーブルレジスタ３３は、圧縮出力を行う場合に“１”（圧縮有効）が格納され、圧縮出力を行わない場合に“０”（圧縮無効）が格納される。圧縮無効は、基準アドレスレジスタ３１およびアドレスマスクレジスタ３２に設定されている値を無視してトレース情報１４を出力する場合に利用される。
【００４９】
次に、ＴＰＣ圧縮回路１２の動作、すなわち、本発明の実施例に係わるマイクロプロセッサの制御方法について説明する。  
図５は、本発明の実施例に係わるマイクロプロセッサの制御方法を示すフロー図である。
【００５０】
本発明の実施例に係わるマイクロプロセッサの制御方法は、設定レジスタ２１ａ〜２１ｄに所望のアドレス範囲を格納するステップ（ＳＴ５１）、分岐先ＰＣを基準アドレスと比較するステップ（ＳＴ５２）、およびチャネルを選択して圧縮情報１５を出力するステップ（ＳＴ５３）を備えている。
【００５１】
ＳＴ５１は、トレース前の準備段階として、書き込み回路（図示していない。）によって実行される。また、ＳＴ５２およびＳＴ５３は、トレース中の“分岐の発生”時にＰＣトレース制御回路１１からのＴＰＣ出力開始信号によって起動される。
【００５２】
ＳＴ５１では、設定レジスタ２１ａ〜２１ｄのそれぞれにおいて、基準アドレスレジスタ３１に所望の基準アドレスの上位ビットが格納され、アドレスマスクレジスタ３２にアドレス範囲を規定するアドレスマスクが格納され、圧縮イネーブルレジスタに“１”が設定される。
【００５３】
ＳＴ５２では、ｃｈ０〜ｃｈ３のそれぞれのアドレス比較器２２ａ〜２２ｄにおいて、ＳＴ５１で設定レジスタ２１ａ〜２１ｄに設定されたアドレス範囲と、“分岐の発生”によってＰＣがジャンプした分岐先ＰＣとが比較される。
【００５４】
そして、分岐先ＰＣがアドレス範囲に含まれていれば、そのチャネルのアドレス比較器２２ａ〜２２ｄが、比較一致検出信号と圧縮出力ｂｉｔ数をチャネルセレクタ２３へ出力する。
【００５５】
比較一致検出信号は、以下の論理演算によって生成される。  
比較一致検出 ＝
［！｛｜（分岐先ＰＣ［３１：２８］＾基準アドレス［３１：２８］）
||（アドレスマスクレジスタ３２［３］｝］＆
［！｛｜（分岐先ＰＣ［２７：２４］＾基準アドレス［２７：２４］）
||（アドレスマスクレジスタ３２［２］｝］＆
［！｛｜（分岐先ＰＣ［２３：２０］＾基準アドレス［２３：２０］）
||（アドレスマスクレジスタ３２［１］｝］＆
［！｛｜（分岐先ＰＣ［１９：１６］＾基準アドレス［１９：１６］）
||（アドレスマスクレジスタ３２［０］｝］＆ 圧縮イネーブルレジスタ…（１）
ここで、“＾”は、２つのオペランドに対してそれぞれ対応するビット位置の排他的論理和（ＸＯＲ）を演算するビット演算子であり、“｜”は、１つのオペランドに対してビットごとの論理和を演算して１ｂｉｔの論理値にするリダクション演算子である。また、“||”は論理和を表し、“！”は論理否定を表し、“＆”は論理積を表している。
【００５６】
（１）式は、比較一致検出信号の生成とともに、ＳＴ５１であらかじめ設定レジスタ２１ａ〜２１ｄに格納しておくアドレス範囲の設定方法（具体的な例は図８で後述する。）も示している。
【００５７】
圧縮出力ｂｉｔ数は、設定レジスタ２１ａ〜２１ｄに設定されたアドレス範囲に基づいて分岐先ＰＣから抽出された部分ビット列のビット数であり、概ね、（３２−アドレス範囲の上位ｂｉｔ数）に相当する。
【００５８】
したがって、例えば、システムコールなどのように、分岐先ＰＣの範囲（ＰＣがジャンプする範囲）が限定されている場合には、設定されるアドレス範囲が狭く、アドレス範囲の上位ｂｉｔ数が大きくなるので、圧縮出力ｂｉｔ数は小さく（詳細は、図８で後述する。）なる。
【００５９】
ＳＴ５３では、チャネルセレクタ２３が、受信した比較一致検出信号に基づいて、ｃｈ０〜ｃｈ３の中から１つのチャネルを選択する。そして、選択したチャネルからの圧縮出力ｂｉｔ数に基づいて、ＴＰＣ出力ｂｉｔ数を生成する。
【００６０】
さらに、チャネルセレクタ２３は、ＳＴ５３で、ＴＰＣ出力モードを設定し、選択したチャネル番号をＴＰＣ圧縮ｃｈコードに設定し、これらをＴＰＣ出力ｂｉｔ数とともに、圧縮情報１５として圧縮ＴＰＣ出力回路１３へ出力する。
【００６１】
図６は、本発明の実施例に係わるマイクロプロセッサの制御方法におけるチャネルセレクタ２３の動作を示すフロー図である。
【００６２】
本発明の実施例に係わるマイクロプロセッサの制御方法におけるチャネルセレクタ２３の動作は、ｃｈ０の判定ステップ（ＳＴ６１）、ｃｈ０の圧縮情報１５を生成するステップ（ＳＴ６２）、ｃｈ１の判定ステップ（ＳＴ６３）、ｃｈ１の圧縮情報１５を生成するステップ（ＳＴ６４）、ｃｈ２の判定ステップ（ＳＴ６５）、ｃｈ２の圧縮情報１５を生成するステップ（ＳＴ６６）、ｃｈ３の判定ステップ（ＳＴ６７）、ｃｈ３の圧縮情報１５を生成するステップ（ＳＴ６８）、分岐先ＰＣを圧縮しないことを示す圧縮情報１５を生成するステップ（ＳＴ６９）、および生成した圧縮情報１５を出力するステップ（ＳＴ７０）を備えている。
【００６３】
ＳＴ６１では、チャネルセレクタ２３は、ｃｈ０の比較結果を判定する。ｃｈ０から比較一致検出信号が出されていれば、チャネルセレクタ２３の動作は、ＳＴ６２へ移行し、比較一致検出信号が出されていなければ、ＳＴ６３へ移行する。
【００６４】
ＳＴ６２では、チャネルセレクタ２３は、圧縮情報１５として、ＴＰＣ出力モードを圧縮出力を示す“０”に設定し、ＴＰＣ圧縮ｃｈコードを“０”に設定し、ｃｈ０からの圧縮出力ｂｉｔ数に基づいてＴＰＣ出力ｂｉｔ数を生成する。
【００６５】
ＳＴ６３、ＳＴ６５、およびＳＴ６７はＳＴ６１と同様である。ＳＴ６１との違いは、ｃｈ０の替わりに、それぞれ、ＳＴ６３ではｃｈ１を判定し、ＳＴ６５ではｃｈ２を判定し、ＳＴ６７ではｃｈ３を判定することである。
【００６６】
それぞれのステップにおいて、対応するチャネルから比較一致検出信号が出されていなければ、チャネルセレクタ２３は、次のチャネルの判定ステップへ移行する。また、対応する比較一致検出信号が出されていれば、チャネルセレクタ２３は、それぞれ、対応するコード生成ステップへ移行する。
【００６７】
すなわち、ＳＴ６３からはＳＴ６４へ移行し、ＳＴ６５からはＳＴ６６へ移行し、ＳＴ６７からはＳＴ６８へ移行する。
【００６８】
ＳＴ６４、ＳＴ６６、およびＳＴ６８はＳＴ６２と同様である。ＳＴ６２との違いは、ＴＰＣ圧縮ｃｈコードがそれぞれのチャネル番号に設定されることと、ＴＰＣ出力ｂｉｔ数がそれぞれのチャネルからの圧縮出力ｂｉｔ数に基づいて生成されることである。
【００６９】
ＳＴ６７で、ｃｈ３から比較一致検出信号が出されていなければ、チャネルセレクタ２３は、ＳＴ６９へ移行する。
【００７０】
ＳＴ６９では、チャネルセレクタ２３は、圧縮情報１５として、ＴＰＣ出力モードをノーマル出力を示す“１”に設定し、ＴＰＣ出力ｂｉｔ数を“３３”に設定する。
【００７１】
ＳＴ６９は、分岐先ＰＣを含むアドレス範囲がｃｈ０〜ｃｈ３のいずれにも設定されていない場合に実行され、分岐先ＰＣは３２ｂｉｔで出力される。ＳＴ６９では、ＴＰＣ圧縮ｃｈコード（２ｂｉｔ）を出力しないように、上述した圧縮情報１５が設定される。
【００７２】
生成ステップ（ＳＴ６２、ＳＴ６４、ＳＴ６６、ＳＴ６８、およびＳＴ６９）が終了すると、チャネルセレクタ２３は、ＳＴ７０へ移行する。
【００７３】
ＳＴ７０では、チャネルセレクタ２３は、生成された圧縮情報１５をＴＰＣ圧縮出力回路へ出力する。
【００７４】
図７は、本発明の実施例に係わるマイクロプロセッサにおけるトレース情報１４の出力を示す波形図である。ここでは、主に、ＴＰＣ圧縮出力回路における分岐先ＰＣの出力にかかわる部分を示した。
【００７５】
ＣＬＫは、ＴＰＣ端子からのシリアルデータと同期を取るためのクロック信号である。また、ＰＣＳＴは、ＣＰＵの動作状態を示すコード信号で、ＰＣＳＴ端子から出力される。
【００７６】
ＴＰＣ（１）〜ＴＰＣ（６）は、ＴＰＣ端子から出力される６つの異なる出力波形を示している。これらは、設定レジスタ２１ａ〜２１ｄにＳＴ５１で格納されたアドレス範囲と“分岐の発生”で生ずる分岐先ＰＣによって異なっている。
【００７７】
ＴＰＣ（１）は、図７に示したように、ＴＰＣ出力コード（１ｂｉｔ）、ＴＰＣ圧縮ｃｈコード（２ｂｉｔ）、圧縮アドレス（圧縮された分岐先ＰＣ、１６ｂｉｔ）の順でシリアルに出力されている。また、圧縮アドレスは、上位ビット（ＰＣ［１５］）から順に出力されている。
【００７８】
ＴＰＣ（２）〜ＴＰＣ（５）は、ＴＰＣ（１）と同様である。ＴＰＣ（１）との違いは、出力される分岐先ＰＣのｂｉｔ数とチャネル番号である。
【００７９】
すなわち、ＴＰＣ（１）では、分岐先ＰＣとして、１６ｂｉｔが出力されているのに対して、ＴＰＣ（２）では２０ｂｉｔ、ＴＰＣ（３）では２４ｂｉｔ、ＴＰＣ（４）では２８ｂｉｔ、ＴＰＣ（５）では３２ｂｉｔが出力されている。
【００８０】
また、ＴＰＣ（１）では、ＴＰＣ圧縮ｃｈコードとして、ｃｈ３が出力されているのに対して、ＴＰＣ（２）ではｃｈ２、ＴＰＣ（３）ではｃｈ１、ＴＰＣ（４）およびＴＰＣ（５）ではｃｈ０が出力されている。
【００８１】
これは、ＴＰＣ（１）の圧縮情報１５がＳＴ６８で生成され、ＴＰＣ（２）の圧縮情報１５がＳＴ６６で生成され、ＴＰＣ（３）の圧縮情報１５がＳＴ６４で生成され、ＴＰＣ（４）およびＴＰＣ（５）の圧縮情報１５がＳＴ６２で生成されたことに対応している。
【００８２】
ＴＰＣ（６）は、図７に示したように、ＴＰＣ出力コード（１ｂｉｔ）、分岐先ＰＣ（３２ｂｉｔ）の順でシリアルに出力されている。また、分岐先ＰＣは、上位ビット（ＰＣ［３１］）から順に出力されている。
【００８３】
ＴＰＣ（６）の圧縮情報１５は、ＳＴ６９で生成され、対応するチャネルは存在しないので、出力サイクル数を減らすために、ＴＰＣ（６）では、ＴＰＣ圧縮ｃｈコードは出力されていない。
【００８４】
図８は、本発明の実施例に係わるマイクロプロセッサのＴＰＣ圧縮回路１２におけるＴＰＣ出力ｂｉｔ数を示すテーブルである。ここでは、一例として、図７に示したＴＰＣ（１）〜ＴＰＣ（６）に対応した値をそれぞれアドレスマスクレジスタ３２および圧縮イネーブルレジスタ３３に設定した場合の比較するアドレス範囲、分岐先ＰＣ、およびＴＰＣ出力ｂｉｔ数を示した。
【００８５】
図８に示したアドレス範囲は、（１）式に従って、基準アドレスレジスタ３１、アドレスマスクレジスタ３２、および圧縮イネーブルレジスタの値に基づいて求められる。
【００８６】
また、図８に示したように、ＴＰＣ（１）〜ＴＰＣ（５）では、ＴＰＣ出力ｂｉｔ数は、チャネルからの圧縮出力ｂｉｔ数にＴＰＣ出力モード（１ｂｉｔ）とＴＰＣ圧縮ｃｈコード（２ｂｉｔ）のｂｉｔ数を加えた値になっている。また、ＴＰＣ（６）では、分岐先ＰＣ（３２ｂｉｔ）にＴＰＣ出力モードのｂｉｔ数を加えた３３ｂｉｔになっている。
【００８７】
次に、上述した構成を持つマイクロプロセッサのデバッグ方法について説明する。  
図９は、本発明の実施例に係わるマイクロプロセッサにおけるデバッグ方法の一例を示すイメージ図である。ここでは、分岐命令によりＰＣがメインルーチン９１からサブルーチン９２へジャンプし、サブルーチン９２の最後で再びメインルーチン９１へジャンプする場合を示した。
【００８８】
メインルーチン９１のＰＣ＝“０ｘｂｆｃ０２７８８”からサブルーチン９２のＰＣ＝“０ｘ００００６ｃ２８”へのジャンプ（ａ）では、基準アドレスとして“０ｘ００００”を設定レジスタ２１ａ〜２１ｄのいずれかにあらかじめ設定しておくことで、トレース情報１４として出力される分岐先ＰＣを１６ｂｉｔに圧縮することができる。
【００８９】
すなわち、ＳＴ５１で、例えば、ｃｈ１の基準アドレスレジスタ３１に“０ｘ００００”を設定し、アドレスマスクレジスタ３２に“００００”を設定し、圧縮イネーブルレジスタに“１”を設定しておけばよい。
【００９０】
サブルーチン９２のＰＣ＝“０ｘ００００６ｃ９４”からメインルーチン９１のＰＣ＝“０ｘｂｆｃ０２７９０”へのジャンプ（ｂ）（サブルーチン９２からのリターン）では、同様に、基準アドレスとして“０ｘｂｆｃ０”を、例えば、ｃｈ０に設定しておけばよい。
【００９１】
このようにすれば、デバッグ中にＣＰＵが図９に示したサブルーチン９２をコールした時に、トレース情報１４として出力される分岐先ＰＣは１６ｂｉｔに短縮される。
【００９２】
図１０および図１１は、本発明の実施例に係わるマイクロプロセッサのデバッグ方法におけるトレース出力の一例を示す波形図である。
【００９３】
図１０は、図９に示したジャンプ（ａ）のトレース出力であり、図１１は、ジャンプ（ｂ）のトレース出力である。  
ＣＬＫおよびＰＣＳＴは、図７と同様なので説明は省略する。また、上部に付した３２ｂｉｔの数値は、各クロックサイクルでのＣＰＵのＰＣを示している。
【００９４】
ジャンプ（ａ）では、図１０に示したように、ＴＰＣ端子からトレース情報１４として、まず、１ｂｉｔのＴＰＣ出力モード（“０”）が出力され、次に、２ｂｉｔのＴＰＣ圧縮ｃｈコード（“１”）が出力され、最後に、１６ｂｉｔの圧縮アドレス（“０ｘ６ｃ２８”）が上位ビット（ＰＣ［１５］）から順に出力される。
【００９５】
ジャンプ（ｂ）では、図１１に示したように、ＴＰＣ端子からトレース情報１４として、まず、１ｂｉｔのＴＰＣ出力モード（“０”）が出力され、次に、２ｂｉｔのＴＰＣ圧縮ｃｈコード（“０”）が出力され、最後に、１６ｂｉｔの圧縮アドレス（“０ｘ２７９０”）が上位ビット（ＰＣ［１５］）から順に出力される。
【００９６】
上記実施例によれば、トレース情報１４として分岐先ＰＣを圧縮して出力できるので、ＰＣトレースにおけるリアルタイム性を大幅に向上させたマイクロプロセッサおよびその制御方法を実現することができる。
【００９７】
すなわち、従来のマイクロプロセッサおよびその制御方法では、３２ｂｉｔの分岐先ＰＣを１ｂｉｔでシリアル出力するのに３２クロックサイクルを必要としていたが、上記実施例によれば、分岐先ＰＣが設定レジスタ２１ａ〜２１ｄにあらかじめ設定されたアドレス範囲に含まれていれば、分岐先ＰＣの出力ｂｉｔ数が圧縮され、トレース情報１４の出力に要するクロックサイクル数が削減される。
【００９８】
例えば、命令が格納されているプログラムエリアが“０ｘｂｆｃ０００００〜０ｘｂｆｃｆｆｆｆｆ”であるマイクロプロセッサでは、プログラム実行中のＰＣと分岐先ＰＣとで上位アドレスが同じであるため、上記実施例に従って“０ｘｂｆｃＸＸＸＸＸ”の範囲で一致するように設定レジスタ２１ａ〜２１ｄを設定すれば、トレース情報１４の出力にかかる時間が１９または２３クロックサイクルまで短縮される。
【００９９】
これにより、トレース情報１４の出力中に次の分岐命令が実行されてトレース情報１４の出力が中止されるケースが減り、プログラムエリア内でのジャンプが頻繁に起きるような場合に、ＰＣトレースのリアルタイム性を大幅に向上させることができる。
【０１００】
さらに、上記実施例によれば、プログラム実行前に任意のアドレス範囲を設定レジスタ２１ａ〜２１ｄに設定できるので、プログラムのエリア構成やデバッグの進捗度に合わせて柔軟に分岐先ＰＣの圧縮を行うことができる。
【０１０１】
これにより、デバッグ効率を大幅に向上させることができ、そのマイクロプロセッサを用いたシステムの開発期間を短縮でき、ひいては、システムの開発コストを削減することができる。
【０１０２】
上述の実施例では、圧縮アドレスを含むトレース情報１４は、１ｂｉｔシリアルデータで出力するとしたが、本発明はこれに限られるものではなく、原理的には複数ｂｉｔで出力することもできる。例えば、分岐先ＰＣを偶数ビット位置と奇数ビット位置に分け、それらをそれぞれシリアルに２ｂｉｔ出力としても良い。
【０１０３】
また、分岐先ＰＣは、説明のため、３２ｂｉｔであるとしたが、本発明はこれに限られるものではない。
【０１０４】
さらに、上述の実施例では、ＴＰＣ圧縮回路１２がアドレス範囲を設定するためのチャネルを４つ持つとしたが、本発明はこれに限られるものではなく、原理的には１つ以上のチャネルでＴＰＣ圧縮回路１２を構成することができる。
【０１０５】
さらに、上述の実施例では、アドレスマスクレジスタ３２は、４ｂｉｔ構成で、各ｂｉｔが基準アドレスレジスタ３１の４ｂｉｔに対応するとしたが、本発明はこれに限られるものではなく、マイクロプロセッサのアドレス空間と命令構成などに合わせて最適なｂｉｔ構成を選択することができる。
【０１０６】
さらに、上述の実施例では、圧縮アドレスは上位ビットからシリアルに出力するとしたが、本発明はこれに限られるものではない。
【図面の簡単な説明】
【０１０７】
【図１】本発明の実施例に係わるマイクロプロセッサを示す回路ブロック図。
【図２】本発明の実施例に係わるマイクロプロセッサのＴＰＣ圧縮回路１２を示す回路ブロック図。
【図３】本発明の実施例に係わるマイクロプロセッサのＴＰＣ圧縮回路１２におけるＴＰＣ圧縮ｃｈコードを示すテーブル。
【図４】本発明の実施例に係わるマイクロプロセッサのＴＰＣ圧縮回路１２における設定レジスタを示すイメージ図。
【図５】本発明の実施例に係わるマイクロプロセッサの制御方法を示すフロー図。
【図６】本発明の実施例に係わるマイクロプロセッサの制御方法におけるチャネルセレクタ２３の動作を示すフロー図。
【図７】本発明の実施例に係わるマイクロプロセッサにおけるトレース情報１４の出力を示す波形図。
【図８】本発明の実施例に係わるマイクロプロセッサのＴＰＣ圧縮回路１２におけるＴＰＣ出力ｂｉｔ数を示すテーブル。
【図９】本発明の実施例に係わるマイクロプロセッサにおけるデバッグ方法の一例を示すイメージ図。
【図１０】本発明の実施例に係わるマイクロプロセッサのデバッグ方法におけるトレース出力の一例を示す波形図。
【図１１】本発明の実施例に係わるマイクロプロセッサのデバッグ方法におけるトレース出力の一例を示す別の波形図。
【図１２】従来のマイクロプロセッサおよびその制御方法におけるＰＣトレース機能を示す回路ブロック図。
【図１３】従来のマイクロプロセッサおよびその制御方法におけるトレース情報１０３の出力タイミングを示す波形図。
【符号の説明】
【０１０８】
１１  ＰＣトレース制御回路
１２  ＴＰＣ圧縮回路
１３  圧縮ＴＰＣ出力回路
１４  トレース情報
１５  圧縮情報
２１ａ〜２１ｄ  設定レジスタ
２２ａ〜２２ｄ  アドレス比較器
２３  チャネルセレクタ
ＳＴ５１  レジスタ設定ステップ
ＳＴ５２  アドレス比較ステップ
ＳＴ５３  チャネル選択/出力ステップ
ＳＴ６１、ＳＴ６３、ＳＴ６５、ＳＴ６７  チャネル判定ステップ
ＳＴ６２、ＳＴ６４、ＳＴ６６、ＳＴ６８、ＳＴ６９  圧縮情報生成ステップ
ＳＴ７０  圧縮情報出力ステップ
【図１】
2006268746.tif 000003
【図２】
2006268746.tif 000004
【図３】
2006268746.tif 000005
【図４】
2006268746.tif 000006
【図５】
2006268746.tif 000007
【図６】
2006268746.tif 000008
【図７】
2006268746.tif 000009
【図８】
2006268746.tif 000010
【図９】
2006268746.tif 000011
【図１０】
2006268746.tif 000012
【図１１】
2006268746.tif 000013
【図１２】
2006268746.tif 000014
【図１３】
2006268746.tif 000015