(57)【要約】【課題】デバッグ回路の削減を図るとともに、高速なアドレス比較部を用いなくてもよいプロセッサ装置を提供する。【解決手段】演算処理部１１と、演算処理部のトレースデータを格納するトレースメモリ１２と、演算処理部からのメモリアクセスアドレスに従って外部メモリ３０に対するアクセス制御を行うバスコントローラ２０を備える。トレースメモリ１２は、外部メモリにおける命令コードまたはデータ上における置換対象に対応した置換制御用アドレスも格納するように構成される。バスコントローラ２０は、メモリアクセスアドレスとトレースメモリからの置換制御用アドレスとを比較するアドレス比較部２１と、外部メモリから読み出された命令コードまたはデータについて、アドレス比較部による比較結果が所定の条件を満たす場合は、別の命令コードまたはデータに置き換える置換処理部２４を有する。【選択図】図１
2008305306.tif 000002
【特許請求の範囲】
【請求項１】
演算処理部と、前記演算処理部のトレースデータを格納するトレースメモリと、前記演算処理部からのメモリアクセスアドレスに従って外部メモリに対するアクセス制御を行うバスコントローラとを備えたプロセッサ装置であって、
前記トレースメモリは、前記外部メモリにおける命令コードまたはデータ上における置換対象に対応した置換制御用アドレスを含んだ情報ブロックも格納するように構成され、
前記バスコントローラは、前記演算処理部からの前記メモリアクセスアドレスと前記トレースメモリからの前記置換制御用アドレスとを比較するアドレス比較部と、前記メモリアクセスアドレスに従って前記外部メモリから読み出された命令コードまたはデータについて、前記アドレス比較部による比較結果が所定の条件を満たす場合は、別の命令コードまたはデータに置き換える置換処理部とを有するものに構成されているプロセッサ装置。
【請求項２】
前記アドレス比較部は前記外部メモリへのアクセス時間帯にアドレス比較を行う請求項１に記載のプロセッサ装置。
【請求項３】
さらにキャッシュメモリを備え、前記アドレス比較部は前記キャッシュメモリのリフィル時間帯にアドレス比較を行う請求項１に記載のプロセッサ装置。
【請求項４】
前記トレースメモリは、前記トレースデータを格納する領域と前記情報ブロックを格納する領域が分離されている請求項１から請求項３までのいずれかに記載のプロセッサ装置。
【請求項５】
前記トレースメモリは、前記置換制御用アドレスとしてブレークアドレスを対象とし、前記置換処理部は、あらかじめブレークコードを格納し、前記演算処理部の命令フェッチまたは命令キャッシュのリフィルにおいて前記ブレークアドレスと前記メモリアクセスアドレスの比較結果が所定の条件を満たす場合に、前記外部メモリから読み出された命令コードを前記ブレークコードに置き換える請求項１から請求項４までのいずれかに記載のプロセッサ装置。
【請求項６】
前記トレースメモリは、前記置換制御用アドレスとしてデータ置換アドレスを対象とし、前記情報ブロックは付加情報としてさらに置き換え用データを含み、前記置換処理部は、前記演算処理部のメモリアクセス要求において前記データ置換アドレスと前記メモリアクセスアドレスの比較結果が所定の条件を満たす場合に、前記外部メモリから読み出されたデータを前記置き換え用データに置き換える請求項１から請求項４までのいずれかに記載のプロセッサ装置。
【請求項７】
演算処理部と、前記演算処理部のトレースデータを格納するトレースメモリと、前記演算処理部からのメモリアクセスアドレスに従って外部メモリに対するアクセス制御を行うバスコントローラとを備え、前記トレースメモリは、前記外部メモリにおける命令コードまたはデータ上における置換対象に対応した置換制御用アドレスを含んだ情報ブロックも格納するように構成されたプロセッサ装置をデバッグする方法であって、
前記演算処理部からの前記メモリアクセスアドレスと前記トレースメモリからの前記置換制御用アドレスとを比較するステップと、
前記両アドレスの比較結果が所定の条件を満たした場合に、前記外部メモリから読み出した命令コードまたはデータを別の命令コードまたはデータに置き換えるステップとを含むプロセッサデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トレースメモリを搭載したプロセッサ装置および１つまたは複数のプロセッサ装置に対するデバッグ方法に関する。
【背景技術】
【０００２】
ＣＰＵを含むシステムＬＳＩは、プログラムデバッグを効率良く行うために、ＣＰＵ内部にデバッグ回路を搭載している。このデバッグ回路は、ＣＰＵを実行、停止（ブレーク）させる機能や、トレース（実行履歴）を蓄積する機能を備えている。デバッグ回路をＣＰＵの一部として構成してあると、デバッグ機能の増加に比例してチップ面積も増大する。デバッグ回路に含まれるトレースメモリは比較的大きな面積を占める。
【０００３】
プログラムデバッグにおいて頻繁に利用されるものとしてブレーク機能がある。これには、ソフトウェアブレークとハードウェアブレークがある。
【０００４】
ソフトウェアブレークは、ソフトウェア内の一定のアドレスに、ソフトウェア・トラップを設ける（ブレークコードをメモリに書き込む）。ブレークコードをＰＲＯＭ、ＲＯＭなどの書換え不可能メモリに格納する方式ではソフトウェアブレークが実現できないので、書き換え可能なメモリ（ＲＡＭ）が用いられる。メモリ共有されている複数のプロセッサ環境においては、共有ゆえに意図しないプロセッサ上で停止してしまうことがある。この問題は、キャッシュメモリ上にブレークコードを設定することで解決される（例えば特許文献１参照）。しかし、キャッシュメモリ上のブレークコードを維持するためにキャッシュロックする必要があり、そうするとキャッシュの挙動が変わってしまう。また、キャッシュメモリに制御ビットを保持するための回路変更を行わなければならない。
【０００５】
一方、ハードウェアブレークにおいては、マイクロプロセッサのハードウェアを用いてブレーク機能を実現する。メモリから命令が取り出されるにつれてプロセッサにより生成されるアドレス・ストリームをモニタし、各アドレスを所定のブレークアドレスと比較し、一致すればブレークが成立する。この方法であれば、上記のソフトウェアブレーク、特許文献１の問題点はない。また、ソフトウェアを変更する必要がない。しかし、いくつかの不利点がある。一般的にハードウェアブレークは、高価なハードウェアおよび高速なアドレス比較部を必要とするため、回路基板容積が大きなものとなってしまう。さらに、高速プロセッサの場合、リアルタイムでブレーク機能を実現するのに、十分な速さのシステム反応速度を必要とする。
【０００６】
また、ハードウェアブレークには、命令実行に対するブレーク機能のほかに、プロセッサからの特定のメモリに対するリード、ライトのアクセスに対してブレークするデータブレーク機能があり、この機能もハードウェアで実現する必要がある。
【０００７】
その他、デバッグなど用途として使用することのできる機能として、ＲＯＭ上の任意の命令を置換するＲＯＭコレクション機能や、ＲＯＭ等の書き換え不可能なメモリ値やメモリ共有されたマルチプロセッサにおける任意のプロセッサの特定データ値を置換するデータパッチ機能があり、いずれも専用のハード資源を必要とする。
【特許文献１】特開２００４−１０３０２４号公報（第７−１１頁、第１−４図）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記の従来の技術においては、デバッグ機能の増加に伴い回路規模が大きくなるという問題点を有している。例えば、ブレーク機能やＲＯＭコレクション機能やデータパッチ機能の実現に当たっては、それぞれ専用回路を必要とし、さらに回路規模が大きくなる。
【０００９】
本発明は、このような事情に鑑みて創作したものであり、デバッグ回路の削減を図るとともに、高速なアドレス比較部を用いなくてもよいプロセッサ装置およびプロセッサデバッグ方法を提供することを目的としている。
【課題を解決するための手段】
【００１０】
本発明によるプロセッサ装置は、
演算処理部と、前記演算処理部のトレースデータを格納するトレースメモリと、前記演算処理部からのメモリアクセスアドレスに従って外部メモリに対するアクセス制御を行うバスコントローラとを備えたプロセッサ装置であって、
前記トレースメモリは、前記外部メモリにおける命令コードまたはデータ上における置換対象に対応した置換制御用アドレスを含んだ情報ブロックも格納するように構成され、
前記バスコントローラは、前記演算処理部からの前記メモリアクセスアドレスと前記トレースメモリからの前記置換制御用アドレスとを比較するアドレス比較部と、前記メモリアクセスアドレスに従って前記外部メモリから読み出された命令コードまたはデータについて、前記アドレス比較部による比較結果が所定の条件を満たす場合は、別の命令コードまたはデータに置き換える置換処理部とを有するものに構成されているものである。
【００１１】
デバッグ回路の中でも特に大規模なものとしてトレースメモリがある。トレース機能は常に使用するものではなく、プログラムデバッグ中の一部でしか使用しない。したがって、デバッグの大部分の時間帯において、トレースメモリは別用途に利用可能である。そこで、トレースメモリを別のデバッグ用途に利用する。演算処理部から外部メモリに対するメモリアクセスアドレスの送出が行われ、メモリアクセスアドレスに従って外部メモリから命令コードまたはデータが読み出される。一方、バスコントローラにおけるアドレス比較部はトレースメモリから置換制御用アドレスを読み出し、置換制御用アドレスをメモリアクセスアドレスと比較する。その比較結果はバスコントローラにおける置換処理部へ送られる。アドレスの比較結果が所定の条件を満たすとき、置換処理部は外部メモリから読み出された命令コードまたはデータを別の命令コードまたはデータに置き換える。置換制御用アドレスを含む情報ブロックとして、複数の情報ブロックをトレースメモリに格納しておくものとする。アドレス比較は、デバッグの空き時間を利用して行うことが可能である。デバッグの空き時間は充分にあるので、複数の情報ブロックについてアドレス比較を行うことが可能である。すなわち、アドレス比較部としては、特別に高速なものを必要としないですむ。また、演算処理部のトレースデータを格納するトレースメモリを、置換制御用アドレスを含む情報ブロックの格納に兼用している。以上のように本発明によれば、既存デバッグ機能を集約することにより、外部メモリからの命令コードまたはデータを別の命令コードまたはデータに置き換える機能を発揮させながら、デバッグ回路の削減を図ることが可能となる。
【００１２】
なお、後述する実施の形態の説明では説明を簡単にするために、アドレス比較部の比較結果が一致した場合に限って置換処理等を行うように記載しているが、比較結果が一致でなくても、所定の条件を示す評価式の真・偽を判定するように変更することは容易であり、本発明の本質はアドレス一致の場合に限定されない。
【００１３】
上記構成のプロセッサ装置において、前記アドレス比較部は前記外部メモリへのアクセス時間帯にアドレス比較を行うという態様がある。この構成によれば、外部メモリに対するアクセス時間であるデバッグの空き時間を利用して、アドレス比較を繰り返し実行することが可能となる。すなわち、特別に高速なアドレス比較部は必要ないという上記の効果が実現される。
【００１４】
また上記構成のプロセッサ装置において、さらにキャッシュメモリを備え、前記アドレス比較部は前記キャッシュメモリのリフィル時間帯にアドレス比較を行うという態様がある。リフィルとは、キャッシュミス時に主記憶からデータを読み出して該当するキャッシュラインに再格納する処理のことである。この構成によれば、キャッシュメモリのリフィル時間であるデバッグの空き時間を利用して、アドレス比較を繰り返し実行することが可能となる。すなわち、特別に高速なアドレス比較部は必要ないという上記の効果が実現される。
【００１５】
また上記構成のプロセッサ装置において、前記トレースメモリは、前記トレースデータを格納する領域と前記情報ブロックを格納する領域が分離されているという態様がある。この構成によれば、トレースデータの蓄積において、情報ブロックを格納した領域に対するトレースデータの上書きを防ぐことが可能となり、トレースメモリの上記の兼用が実現される。
【００１６】
また上記構成のプロセッサ装置において、前記トレースメモリは、前記置換制御用アドレスとしてブレークアドレスを対象とし、前記置換処理部は、あらかじめブレークコードを格納し、前記演算処理部の命令フェッチまたは命令キャッシュのリフィルにおいて前記ブレークアドレスと前記メモリアクセスアドレスの比較結果が所定の条件を満たす場合に、前記外部メモリから読み出された命令コードを前記ブレークコードに置き換えるという態様がある。この構成によれば、トレースメモリを利用して命令ブレーク機能を実現することが可能となる。
【００１７】
また上記構成のプロセッサ装置において、前記トレースメモリは、前記置換制御用アドレスとしてデータ置換アドレスを対象とし、前記情報ブロックは付加情報としてさらに置き換え用データを含み、前記置換処理部は、前記演算処理部のメモリアクセス要求において前記データ置換アドレスと前記メモリアクセスアドレスの比較結果が所定の条件を満たす場合に、前記外部メモリから読み出されたデータを前記置き換え用データに置き換えるという態様がある。この構成によれば、トレースメモリを利用して外部メモリへのアクセスのあった任意のアドレスのデータを置換することで、ＲＯＭコレクション機能やデータパッチ機能を実現することが可能となる。
【００１８】
本発明によるプロセッサデバッグ方法は、演算処理部と、前記演算処理部のトレースデータを格納するトレースメモリと、前記演算処理部からのメモリアクセスアドレスに従って外部メモリに対するアクセス制御を行うバスコントローラとを備え、前記トレースメモリは、前記外部メモリにおける命令コードまたはデータ上における置換対象に対応した置換制御用アドレスを含んだ情報ブロックも格納するように構成されたプロセッサ装置をデバッグする方法であって、
前記演算処理部からの前記メモリアクセスアドレスと前記トレースメモリからの前記置換制御用アドレスとを比較するステップと、
前記両アドレスの比較結果が所定の条件を満たした場合に、前記外部メモリから読み出した命令コードまたはデータを別の命令コードまたはデータに置き換えるステップとを含むものである。
【００１９】
このプロセッサデバッグ方法によれば、外部メモリからの命令コードまたはデータを別の命令コードまたはデータに置き換える機能を発揮させ、かつ、上記したように、トレースメモリに格納してある複数の情報ブロックについてデバッグの空き時間においてアドレス比較を行うことで、アドレス比較部に特別高速なものを用いないですむとともに、トレースメモリの兼用により、デバッグ回路の削減を図ることが可能となる。
【発明の効果】
【００２０】
本発明によれば、外部メモリからの命令コードまたはデータを別の命令コードまたはデータに置き換える機能を発揮させ、かつ、上記したように、トレースメモリに格納してある複数の情報ブロックについてデバッグにおけるキャッシュメモリのリフィルや外部メモリアクセスなどの空き時間においてアドレス比較を行うことで（複数回のアドレス比較）、アドレス比較部に特別高速なものを用いないですむとともに、トレースメモリの兼用により、デバッグのハードウェア資源を有効に活用でき、回路規模の削減を図ることができる。
【００２１】
そして、同じ回路構成でブレーク、ＲＯＭコレクション、データパッチ、データブレークなどの複数のデバッグ機能を提供することも可能である。
【発明を実施するための最良の形態】
【００２２】
以下、本発明にかかわるプロセッサ装置の実施の形態を図面を用いて詳細に説明する。
【００２３】
（基本的構成）
図１は本発明の実施の形態におけるデバッグ機能を実現するためのプロセッサ装置の基本的な構成を示すブロック図である。図１において、１０は命令の実行処理、演算処理を行う演算処理部１１と演算処理部１１のトレースデータを格納するトレースメモリ１２からなるブロック、２０は演算処理部１１からのメモリアクセスアドレスに従って外部メモリに対するアクセス制御を行うバスコントローラ、３０は外部メモリである。トレースメモリ１２はデバッグ回路の一部を構成し、プロセッサ装置の外部より任意の位置に任意のデータを入力できる手段を備え、外部メモリ３０における命令コードまたはデータ上における置換対象に対応した置換制御用アドレスを含んだ情報ブロックも格納できるように構成されている。
【００２４】
バスコントローラ２０は、演算処理部１１からのメモリアクセスアドレスとトレースメモリ１２に格納された任意の置換制御用アドレスの比較を行うアドレス比較部２１と、メモリアクセスアドレスに従って外部メモリ３０から読み出された命令コードまたはデータについて、アドレス比較部２１による比較が一致する場合は、別の命令コードまたはデータに置き換える置換処理部２４とから構成されている。
【００２５】
以下、より具体的レベルの実施の形態１および実施の形態２について、順次説明する。
【００２６】
（実施の形態１）
本発明の実施の形態１は、ブレーク機能を有するプロセッサ装置に関するものである。図２はブレーク機能を実現するために図１を詳細化したブロック図である。図２において、基本的構成の図１におけるのと同じ符号は同一構成要素を指している。本実施の形態に特有の構成は、次のとおりである。演算処理部１１とトレースメモリ１２を含むブロック１０は、さらにキャッシュメモリ（命令キャッシュ）１３を備えている。プロセッサ装置は、外部からのデバッグ操作を行うための専用のデバッグ制御バスＵ０を備えている。
【００２７】
トレースメモリ１２は、外部メモリ３０における命令コードまたはデータ上における置換対象に対応した置換制御用アドレスを含んだ情報ブロックも格納するように構成されている。ここでの置換制御用アドレスはブレークアドレスＡ１となっている。
【００２８】
ここで、一般的なトレースメモリについて説明する。一般的なトレースメモリはリングバッファ構造になっており、アドレスを比較して最終アドレスになった時点でメモリ先頭に戻す。すなわち、トレースデータをメモリ終端まで格納すると、再びメモリ先頭から格納する。したがって、リングバッファ構造のトレースメモリにおいて、トレースデータと区別なく情報ブロックを格納するように構成すると、トレースデータの上書きにより情報ブロックが消去されてしまう。
【００２９】
本実施の形態のトレースメモリ１２においては、トレースデータを格納する領域とブレークアドレスＡ１を含む情報ブロックを格納する領域とが分離され、その分離をトレース終端ｅで制御するように構成している。レース終端ｅからトレースメモリ１２の最後までの領域はブレークアドレスＡ１を含む情報ブロックを格納するために使用する。ブレーク機能の場合の情報ブロックは、ブレークアドレスＡ１と、ブレークを設定するために必要な情報である付加情報Ｂ１とで構成されている。ここで付加情報Ｂ１はブレーク設定位置情報であり、ブレークする位置を特定するために使用する。ブレーク機能を実現する上で最低限必要な情報はブレークアドレスＡ１である。
【００３０】
トレース終端ｅは、その位置を任意に設定可能となっている。トレースデータの格納においては、トレース終端ｅを検出すると、メモリ先頭へ戻って格納を続行する。トレース終端ｅを可変にすることで、トレースデータ格納領域のサイズをフレキシブルに変更することが可能となっている。トレースメモリ１２は、情報ブロック要求バスＵ３により要求された位置の情報ブロックを情報ブロック取得バスＵ４より送信するようになっている。
【００３１】
情報ブロックにおけるブレークアドレスＡ１などのデータおよびトレース終端ｅは、デバッグ制御バスＵ０を介して外部より設定することが可能である。デバッグのオペレータが、プログラム動作を所望の位置でストップさせたいときに、そのブレークアドレスＡ１を設定する。
【００３２】
バスコントローラ２０は、アドレス比較部２１と置換処理部２４を備えている。アドレス比較部２１は、情報ブロック取得部２２と比較器２３から構成されている。情報ブロック取得部２２は、情報ブロック要求バスＵ３と情報ブロック取得バスＵ４を用いてトレースメモリ１２より情報ブロックの取得を行う。情報ブロック取得部２２は、トレースメモリ１２より取得した情報ブロックをブレークアドレスＡ１と付加情報Ｂ１に分割し、ブレークアドレスＡ１を比較器２３に出力するとともに、付加情報Ｂ１をデータ置換位置設定バスＵ６を介して置換処理部２４へ出力する。付加情報Ｂ１は、ブレークコードを設定する位置（ブレークコードに置換する位置）を特定するための情報（ブレーク設定位置情報）であり、１回のアクセスで複数の位置にブレークコードを設定する必要がある場合に用いるものである。比較器２３は、情報ブロック取得部２２から入力されたブレークアドレスＡ１とアドレスバスＵ１のメモリアクセスアドレスＡ２との比較を行い、一致した場合にデータ置換要求バスＵ５を介して置換処理部２４にデータ置換を要求する。
【００３３】
置換処理部２４は、置き換え用データであるブレークコードを保持するレジスタ２５を備えている。レジスタ２５はデバッグ制御バスＵ０を介して外部よりブレークコードを設定するようになっている。バスコントローラ２０は、演算処理部１１からのメモリアクセスアドレスＡ２に従って外部メモリ３０から命令コードを読み出す。置換処理部２４は、データ置換要求バスＵ５から置換の要求を受けない場合には、外部メモリ３０から読み出した命令コードをそのままデータバスＵ２に送出する。一方、データ置換要求バスＵ５から置換の要求を受けたときは、置換処理部２４が起動され、外部メモリ３０から読み出した命令コードに代えて、レジスタ２５に格納しているブレークコードをデータバスＵ２に送出する。すなわち、比較器２３においてメモリアクセスアドレスＡ２とブレークアドレスＡ１とが一致した場合には、外部メモリ３０から読み出された命令コードについて別の命令コードであるブレークコードに置き換える。演算処理部１１はブレークコードを実行し、プロセッサ停止（ブレーク機能）を実現する。
【００３４】
データ置換位置設定バスＵ６を介して取得した付加情報（ブレーク設定位置情報）Ｂ１を使用する場合には、付加情報Ｂ１で指定された複数の位置にレジスタ２５のブレークコードを送出する。
【００３５】
上記において、バスコントローラ２０内における情報ブロック取得部２２は、デバッグ制御バスＵ０によりあらかじめ設定された情報ブロック設定数ｋに達するまで、トレースメモリ１２からの情報ブロックの取得を繰り返す。そして、比較器２３でのアドレス比較においては、キャッシュメモリ１３のリフィル時間を利用することで複数回のアドレス比較を行うことが可能である。リフィル時間とは、キャッシュミス時に主記憶からデータを読み出して該当するキャッシュラインに再格納するというキャッシュリフィル処理に要する時間のことである。
【００３６】
以上のように本実施の形態によれば、キャッシュメモリ１３のリフィル時間である空き時間においてアドレス比較を行うことで、複数回のアドレス比較が可能となり、比較器２３に特別高速なものを用いないですむとともに、トレースメモリ１２の兼用により、デバッグのハードウェア資源を有効に活用でき、回路規模の削減を図ることができる。
【００３７】
次に、図３および図４を用いて、ブレーク機能の具体例を示す。本例では、命令サイズは固定長で３２ビット（４バイト）、データバスの幅は３２ビット（４バイト）とし、キャッシュメモリ１３は１ラインが４ワード（１６バイト）で構成され、キャッシュメモリ１３のリフィルの要求はバスコントローラ２０に対して１６バイト単位で行われるものとする。
【００３８】
ブレーク機能は、上記のようにブレークコードを用いて実現する。本例ではキャッシュメモリ１３を搭載したプロセッサ装置を想定しているため、デバッグ開始前にすでにブレークを設定するアドレスがキャッシュヒットしている可能性がある。そこで、ブレーク設定の際にすでにキャッシュヒットしているブレークに関しては、あらかじめブレークコードをキャッシュに設定しておく必要がある。また、ブレーク機能によりプロセッサ装置が停止した際にブレークアドレスＡ１に該当しているキャッシュについては、外部メモリ３０の内容に書き戻す処理を行う。以下、ブレークの設定からプロセッサ装置がブレークにより停止するまでの一連の流れについて説明する。
【００３９】
図３は、プロセッサ装置のデバッグを開始する前のブレーク機能の設定についてのフローを示す。
【００４０】
まずステップＳ１では、デバッグ制御バスＵ０を介してブレークの設定情報を情報ブロックでトレースメモリ１２に設定する。デバッグ制御バスＵ０としては、一般的にデバッグに使用されるＪＴＡＧ端子等既存の構成を使用する。
【００４１】
情報ブロックは、ブレークアドレスＡ１と付加情報（ブレーク設定位置情報）Ｂ１で構成される。本例では、命令サイズが４バイトでキャッシュメモリ１３が１ライン４ワードで表現されるため、位置を特定するのに最低４ビット必要である。ここでは、ブレークアドレス３２ビットと位置を特定するための付加情報Ｂ１を４ビットとする。図５は、アドレス０ｘ８００００００４とアドレス０ｘ８００００００Ｃにブレークを設定する場合の例である。この場合、ブレークアドレスＡ１には下位４ビットをマスクした値を設定し、付加情報Ｂ１にはブレークを設定する位置を２進数で表した値１０１０を設定する。付加情報Ｂ１は、ビットが１の場所がブレークを設定する位置を示す。本例では、図６にある３つの情報ブロックを例に説明する。
【００４２】
次にステップＳ２では、ステップＳ１で格納した図６の３つ情報ブロックとトレースメモリとの境界にトレース終端ｅを設定する。
【００４３】
次にステップＳ３では、トレースメモリ１２に格納された情報ブロックの設定数ｋを情報ブロック取得部２２に設定する。ここでは、３つの情報ブロックがトレースメモリ１２に格納されているので、ｋ＝３を設定する。
【００４４】
次にステップＳ４では、情報ブロックを検索する処理で使用する変数ｉの初期化を行う。以下、変数ｉが１から情報ブロック設定数ｋ（＝３）となるまで、処理を繰り返す。
【００４５】
次にステップＳ５では、情報ブロック内のブレークアドレスＡ１がキャッシュヒットしているかを判断する。キャッシュヒットしている場合はステップＳ６に進み、キャッシュメモリ１３上にブレークコードを設定する。キャッシュヒットしていない場合およびステップＳ６の次は、ステップＳ７に進む。
【００４６】
次にステップＳ７では、変数ｉが情報ブロック設定数ｋ（＝３）と一致しているかを判断し、情報ブロック設定数ｋ（＝３）に達してない場合は、ステップＳ８へ進み、変数ｉを１つ増加させてステップＳ５へ進む。情報ブロック設定数ｋ（＝３）に達した場合は、処理を終了する。
【００４７】
以上の処理で、デバッグを開始する前からブレーク設定するまでの流れが完了する。
【００４８】
図４は、キャッシュメモリ１３のリフィル発生からブレークするまでのフローを示す。
【００４９】
まずステップＳ１１では、キャッシュメモリ１３のリフィルが発生し、バスコントローラ２０へメモリアクセスの要求が発生する。
【００５０】
次にステップＳ１２では、情報ブロックを検索する処理で使用する変数ｉの初期化を行う。以下、変数ｉが１から情報ブロック設定数ｋ（＝３）となるまで、処理を繰り返す。
【００５１】
次にステップＳ１３では、情報ブロック取得部２２がトレースメモリ１２に対してｉ番目の情報ブロックを要求する。
【００５２】
次にステップＳ１４では、情報ブロック取得部２２がトレースメモリ１２に格納されているｉ番目の情報ブロックを取得する。
【００５３】
次にステップＳ１５では、ステップＳ１４で取得した情報ブロックをブレークアドレスＡ１と付加情報（ブレーク設定位置情報）Ｂ１に分離して、それぞれ比較器２３とデータ置換位置設定バスＵ６を介して置換処理部２４に出力する。
【００５４】
次にステップＳ１６では、ブレークアドレスＡ１とステップＳ１１でのメモリアクセスアドレスＡ２とを比較器２３で比較し、不一致であればステップＳ１７に進み、一致すればステップＳ１９に進む。
【００５５】
次にステップＳ１７では、変数ｉが情報ブロック設定数ｋ（＝３）と一致しているかを判断し、情報ブロック設定数ｋ（＝３）に達してない場合は、ステップＳ１８へ進み、変数ｉを１つ増加させてステップＳ１３へ進む。情報ブロック設定数ｋ（＝３）に達した場合には、処理を終了する。
【００５６】
次に、アドレス比較で一致した場合のステップＳ１９では、置換処理部２４でステップＳ１５において出力されたブレーク設定位置情報を基に、外部メモリ３０から読み出した命令コードを置換処理部２４のレジスタ２５のブレークコードに置換し、処理を終了する。
【００５７】
実際にプロセッサ装置がブレークを行うのは、キャッシュメモリ１３に設定したブレークコードを実行したときである。この方法であれば、パイプラインを持つプロセッサにおいても、実行のステージで確実に停止することが可能となる。
【００５８】
プロセッサ停止後にキャッシュメモリ１３上に格納されているブレークコードは、ソフトウェアブレーク同様、命令を戻す必要があり、リフィル発生アドレスを含むラインを外部メモリ３０の内容で充填する。
【００５９】
図６で示す３つの情報ブロックのアドレスがすべてキャッシュヒットしていない状態で、キャッシュメモリ１３のリフィルが発生したアドレスが０ｘ８０００７３１０の場合について、リフィル発生からブレークコード置き換えまでの具体例を説明する。
【００６０】
キャッシュメモリ１３のリフィルが発生すると、情報ブロック取得部２２がトレースメモリ１２より１番目の情報ブロック（アドレス：０ｘ８００００２１０、付加情報Ｂ１：０ｂ０００１）を取得し、置換処理部２４に０ｂ０００１を出力し、比較器２３でブレークアドレス０ｘ８００００２１０とリフィル発生アドレス０ｘ８０００７３１０の比較を行う。アドレス不一致のため、情報ブロック取得部２２はトレースメモリ１２より２番目の情報ブロック（アドレス：０ｘ８０００７３１０、付加情報Ｂ１：０ｂ１１００）を取得し、置換処理部２４に０ｂ１１００を出力し、比較器２３でブレークアドレス０ｘ８０００７３１０とリフィル発生アドレス０ｘ８０００７３１０の比較を行う。ここでアドレスは一致するために、置換処理部２４に対してデータ置換を要求する。置換処理部２４はデータ置換の要求により、リフィル発生アドレス０ｘ８０００７３１０と付加情報０ｂ１１００より生成されるアドレス０ｘ８０００７３１８、０ｘ８０００７３１Ｃの位置のデータをブレークコードに置き換える。置き換えられたブレークコードは、キャッシュメモリ１３の０ｘ８０００７３１０のラインに格納される。演算処理部１１がキャッシュメモリ１３を読み込み、前記ブレークコードを実行することでプロセッサが停止する。
【００６１】
以上の方法を用いることによって、キャッシュメモリを搭載したプロセッサ装置においてブレーク機能を実現することが可能となる。
【００６２】
（実施の形態２）
本発明の実施の形態２は、ＲＯＭコレクションやデータパッチに該当するデータ置換機能を有するプロセッサ装置に関するものである。図７はデータ置換機能を実現するために図１を詳細化したブロック図である。図７において、実施の形態１の図２におけるのと同じ符号は同一構成要素を指している。本実施の形態に特有の構成は、次のとおりである。演算処理部１１とトレースメモリ１２を有するブロック１０において、キャッシュメモリ１３は装備されていない。
【００６３】
トレースメモリ１２における情報ブロックは、置換制御用アドレスＣ１と置き換え用データである付加情報Ｄ１を設定するために必要な情報で構成されている。情報ブロックにおける置換制御用アドレスＣ１などのデータおよびトレース終端ｅは、デバッグ制御バスＵ０を介して外部より設定される。置換処理部２４は、置き換え用データＤ１を保持するレジスタ２５を備えている。
【００６４】
情報ブロック取得部２２は、トレースメモリ１２より取得した情報ブロックを置換制御用アドレスＣ１と置き換え用データＤ１に分割し、置換制御用アドレスＣ１を比較器２３に出力し、置き換え用データＤ１については置き換え用データバスＵ７を介して置換処理部２４へ出力する。置き換え用データＤ１は置換処理部２４内のレジスタ２５に格納される。比較器２３は、情報ブロック取得部２２から入力された置換制御用アドレスＣ１とアドレスバスＵ１のメモリアクセスアドレスＡ２の比較を行い、一致した場合にデータ置換要求バスＵ５を介して置換処理部２４にデータ置換を要求する。アドレス比較については、外部メモリ３０のアクセス時間を利用することで複数回のアドレス比較を行うことが可能である。
【００６５】
演算処理部１１からの外部メモリ３０へのアクセスに対して、置換処理部２４は、データ置換の要求を受けると、外部メモリ３０から取得されるデータを、レジスタ２５の置き換え用データＤ１に置き換え、データバスＵ２を介して演算処理部１１へ送出する。これによってデータ置換機能を実現する。
【００６６】
次に、図８および図９を用いて、データ置換機能についての具体例を示す。本例ではデータバスの幅は３２ビット（４バイト）とし、データ置換は３２ビット（４バイト）単位で行われるものとする。また、キャッシュメモリを搭載していないプロセッサ装置（あるいはキャッシュメモリを使用しないメモリ空間における使用）を前提とする。
【００６７】
図８は、プロセッサ装置のデバッグを開始する前のデータ置換機能の設定についてのフローを示す。
【００６８】
まずステップＳ２１では、デバッグ制御バスＵ０を介してデータ置換の設定情報（情報ブロック）をトレースメモリ１２に設定する。情報ブロックは、置換制御用アドレスＣ１と付加情報（置き換え用データ）Ｄ１で構成される。本例では、情報ブロックは図１０に示すように置換するアドレス３２ビット（４バイト）と、付加情報Ｄ１として置換するためのデータ３２ビット（４バイト）から構成されている。
【００６９】
次にステップＳ２２では、ステップＳ２１で格納した情報ブロックとトレースメモリとの境界にトレース終端ｅを設定する。
【００７０】
次にステップＳ２３では、トレースメモリ１２に格納された情報ブロックの設定数ｋ（＝３）を情報ブロック取得部２２に設定する。
【００７１】
以上の処理で、デバッグを開始する前からデータ置換機能を設定するまでの流れが完了する。
【００７２】
図９は、演算処理部１１から外部メモリ３０へのアクセスからデータ置換を行うまでのフローを示す。
【００７３】
まずステップＳ３１では、外部メモリ３０へアクセスが発生し、バスコントローラ２０に対してメモリアクセスの要求が発生する。
【００７４】
次にステップＳ３２では、情報ブロックを検索する処理で使用する変数ｉの初期化を行う。以下、変数ｉが１から情報ブロック設定数ｋ（＝３）となるまで、処理を繰り返す。
【００７５】
次にステップＳ３３では、情報ブロック取得部２２がトレースメモリ１２に対してｉ番目の情報ブロックを要求する。
【００７６】
次にステップＳ３４では、情報ブロック取得部２２がトレースメモリ１２に格納されているｉ番目の情報ブロックを取得する。
【００７７】
次にステップＳ３５では、ステップＳ３４で取得した情報ブロックを置換制御用アドレスＣ１と置き換え用データ（付加情報）Ｄ１に分離して、それぞれ比較器２３と置換処理部２４に出力する。
【００７８】
次にステップＳ３６では、置換制御用アドレスＣ１とステップＳ３１でのメモリアクセスアドレスＡ２とを比較器２３で比較し、不一致であればステップＳ３７に進み、一致すればステップＳ３９に進む。
【００７９】
次にステップＳ３７では、変数ｉが情報ブロック設定数ｋ（＝３）と一致しているかを判断し、情報ブロック設定数ｋ（＝３）に達してない場合は、ステップＳ３８へ進み、変数ｉを１つ増加させてステップＳ３３へ進む。情報ブロック設定数ｋ（＝３）に達した場合には、処理を終了する。
【００８０】
次に、アドレス比較で一致した場合のステップＳ３９では、外部メモリ３０から読み出したデータを置換処理部２４の置き換え用データＤ１に置換し、処理を終了する。
【００８１】
以上の方法を用いることによって、ＲＯＭコレクション機能やデータパッチなどのデータ置換機能を実現することが可能となる。また、本例ではキャッシュメモリを搭載していないプロセッサ装置（あるいはキャッシュメモリを使用しないメモリ空間における使用）を前提にしたが、ブレーク機能と同様にデバッグ開始前にキャッシュヒットしているアドレスに関して、あらかじめキャッシュメモリの内容を置き換え用データＤ１に書き換えて置くことで、キャッシュメモリ搭載のプロセッサ装置においても本機能を実現することが可能である。
【００８２】
図１１は本発明におけるプロセッサデバッグ方法を実現するための基本的なフローを示す。
【００８３】
まずステップＳ４１は、外部メモリ３０へのアクセス発生やキャッシュ搭載のプロセッサにおいてリフィルが発生するまでに行う前処理を示し、デバッガ等プロセッサ外部より置換制御用アドレスと付加情報をトレースメモリ１２内に設定する。
【００８４】
次にステップＳ４２では、外部メモリアクセスや命令キャッシュのリフィルが発生した際にメモリアクセスアドレスと置換制御用アドレスの比較を行い、不一致の場合はステップＳ４３に進み、一致の場合はステップＳ４４に進む。
【００８５】
次にステップＳ４３では、比較すべき置換制御用アドレスが残っている場合、ステップＳ４２からの処理を繰り返す。
【００８６】
次にステップＳ４４では、メモリアクセスアドレスに対応して外部メモリ３０から読み出された命令コードまたはデータを別の命令コードまたはデータに置き換えて処理を終える。
【００８７】
以上により、上記のブレーク機能やＲＯＭコレクション機能、データパッチ機能などのデータ置換機能を実現することが可能となる。
【産業上の利用可能性】
【００８８】
本発明のトレースメモリを有効利用したプロセッサ装置は、デバッグ機能の集約によるデバッグ回路の削減効果を有し、プロセッサ装置のさらなる小型集積化に有用である。また、メモリ共有したマルチプロセッサ環境や書き換え不可のＲＯＭ環境において、高速なアドレス比較部を要することなく、ブレーク機能を実現できる。また、書き換え不可のメモリに対し、データパッチ機能にも回路構成を変更することなく、容易に展開可能である。
【図面の簡単な説明】
【００８９】
【図１】本発明の実施の形態におけるデバッグ機能を実現するためのプロセッサ装置の基本的な構成を示すブロック図
【図２】本発明の実施の形態１におけるブレーク機能を実現するプロセッサ装置の構成を示すブロック図
【図３】本発明の実施の形態１におけるプロセッサ装置でブレークを設定する処理手順を示すフローチャート
【図４】本発明の実施の形態１におけるプロセッサ装置でブレークコードに置換する処理手順を示すフローチャート
【図５】本発明の実施の形態１におけるプロセッサ装置の情報ブロックの説明図
【図６】本発明の実施の形態１におけるプロセッサ装置のトレースメモリ内の情報ブロックの説明図
【図７】本発明の実施の形態２におけるデータ置換機能を実現するプロセッサ装置の構成を示すブロック図
【図８】本発明の実施の形態２におけるプロセッサ装置でデータ置換を設定する処理手順を示すフローチャート
【図９】本発明の実施の形態２におけるプロセッサ装置で置き換え用データに置換する処理手順を示すフローチャート
【図１０】本発明の実施の形態２におけるプロセッサ装置のトレースメモリ内の情報ブロックの説明図
【図１１】本発明におけるプロセッサデバッグ方法の処理の手順を示すフローチャート
【符号の説明】
【００９０】
１１  演算処理部
１２  トレースメモリ
１３  キャッシュメモリ（命令キャッシュ）
２０  バスコントローラ
２１  アドレス比較部
２２  情報ブロック取得部
２３  比較器
２４  置換処理部
２５  レジスタ
３０  外部メモリ
Ａ１  ブレークアドレス
Ａ２  メモリアクセスアドレス
Ｂ１  付加情報（ブレーク設定位置情報）
Ｃ１  置換制御用アドレス
Ｄ１  付加情報（置き換え用データ）
ｅ  トレース終端
Ｕ０  デバッグ制御バス
Ｕ１  アドレスバス
Ｕ２  データバス
Ｕ３  情報ブロック要求バス
Ｕ４  情報ブロック取得バス
Ｕ５  データ置換要求バス
Ｕ６  データ置換位置設定バス
Ｕ７  置き換え用データバス
【図１】
2008305306.tif 000003
【図２】
2008305306.tif 000004
【図３】
2008305306.tif 000005
【図４】
2008305306.tif 000006
【図５】
2008305306.tif 000007
【図６】
2008305306.tif 000008
【図７】
2008305306.tif 000009
【図８】
2008305306.tif 000010
【図９】
2008305306.tif 000011
【図１０】
2008305306.tif 000012
【図１１】
2008305306.tif 000013