(57)【要約】【課題】  プロセッサコアとデバッグモジュールが搭載されたＣＰＵにおいて、デバッグをさらにフレキシブルに行うことができるプロセッサコアおよびその制御方法を提供する。【解決手段】  例外の発生により、プログラムの進行を停止するハードウェアブレーク機能２８と、その例外に対処するルーチンを実行するハンドラ機能２９とを、外部入力１６および／または１７に基づき選択する選択機能２１を備えた例外処理モジュール１５を有するプロセッサコアを提供する。例外の発生により、プログラムの進行の停止と、その例外の発生に対処するルーチンの実行とを、ＩＣＥモジュールを介して外部のデバッガからユーザが任意に設定することが可能となる。【選択図】        図３
2005267349.tif 000002
【特許請求の範囲】
【請求項１】
例外の発生によりプログラムの進行を停止する実行停止手段と、
例外に対処するルーチンを実行するハンドラと、
外部入力により前記実行停止手段およびハンドラのいずれかを選択する手段とを有するプロセッシングモジュール。
【請求項２】
請求項１において、前記実行停止手段は、エラー例外によりプログラムの進行を停止する第１の手段と、デバッグ例外によりプログラムの進行を停止する第２の手段とを備えており、
前記選択する手段は、第１の外部入力により前記第１の手段およびハンドラのいずれかを選択する第１の選択手段と、第２の外部入力により前記第２の手段およびハンドラのいずれかを選択する第２の選択手段とを備えている、プロセッシングモジュール。
【請求項３】
請求項１に記載のプロセッシングモジュールを有するデータ処理装置であって、
当該データ処理装置の外部からの制御により前記外部入力を制御するデバッグモジュールを有するデータ処理装置。
【請求項４】
請求項２に記載のプロセッシングモジュールを有するデータ処理装置であって、
前記プロセッシングモジュールのデバッグ情報を当該データ処理装置の外部に出力し、当該データ処理装置の外部からの制御により前記第１の外部入力および第２の外部入力を制御するデバッグモジュールを有するデータ処理装置。
【請求項５】
例外の発生により、プログラムの進行の停止と、その例外に対処するルーチンの実行とを、外部入力に基づき選択する手段を有するプロセッシングモジュール。
【請求項６】
請求項５に記載のプロセッシングモジュールを有するデータ処理装置であって、
当該データ処理装置の外部からの制御により前記外部入力を制御するデバッグモジュールを有するデータ処理装置。
【請求項７】
例外の発生により、プログラムの進行の停止と、その例外の発生に対処するルーチンの実行とを、外部入力に基づき選択する工程を有するプロセッシングモジュールの制御方法。
【請求項８】
請求項７において、前記例外は、エラー例外とデバッグ例外とを含んでおり、
前記選択する工程では、前記エラー例外の発生により、プログラムの進行の停止と、そのエラー例外に対処するルーチンの実行とを、第１の外部入力に基づき選択し、前記デバッグ例外の発生により、プログラムの進行の停止と、そのデバッグ例外に対処するルーチンの実行とを、第２の外部入力に基づき選択する、プロセッシングモジュールの制御方法。
【請求項９】
例外の発生により、プログラムの進行の停止と、その例外に対処するルーチンの実行とを、外部入力に基づき選択する手段を有するプロセッシングモジュールのデバッグ方法であって、
デバッグする際に、前記外部入力を、プログラムの進行の停止、または、例外に対処するルーチンの実行にセットする工程を有するデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩあるいはＡＳＩＣに採用される埋め込み型のＣＰＵ、プロセッシングコアなどのプロセッシングモジュールの構成および制御に関するものである。
【背景技術】
【０００２】
特開２００２−５５８４９号公報には、特定のアドレスの参照またはこのアドレスの命令の実行が行われた際に、プログラムの実行を停止し、デバッガのユーザにプログラムの解析の機会を与えるハードウェアブレーク機能を有するデバッガが開示されている。
【特許文献１】特開２００２−５５８４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
デバッグする際に、特定のアドレスの参照またはこのアドレスの命令の実行に限らず、その他のさまざまな例外が発生したときにもプログラムの動作を停止してユーザが状態をチェックすることが要求されるケースがある。本明細書において、例外とは、プログラムの実行中に、正常な場合の実行処理の「一時的な中断」を引き起す原因になる事象や、予期せぬデータが入ってくることなどを総称しているものであり、算術演算を実行したときの桁あふれ、周辺装置に発生する故障などが含まれる。例外の発生に対してはプログラムの中に、その例外ごとに対処するルーチンを組み込んでおき、そのルーチンを実行し適切なアクションをとった後、正常な処理に戻れるようにしてある。このような処置を例外処理と呼び、それを処理するルーチンのことを例外ハンドラと呼ぶ。
【０００４】
本明細書においては、例外を３つの大きなカテゴリーに分けている。１つめは、エラー例外と呼んでいるものであり、バスエラー、命令アドレス違反、特権違反、データアドレス違反、予約命令違反、ゼロ除算などが含まれ、プログラムの通常の実行を不可能にする例外である。２つめは、デバッグ例外と呼んでいるものであり、ＰＡＮブレーク、トレースブレーク、ブレーク命令、命令アドレスブレーク、データアドレスブレークなどが含まれ、デバッグする際に、プログラムの動作を停止して、ユーザが状態をチェックしたいがために導入するものである。３つめは、その他の例外であり、リセット割り込み、外部要因、例えばタイマによる割り込みなどがある。
【０００５】
デバッグの基本は、例外が発生したときに、その状態でプログラムの進行を停止し、ＬＳＩ、ＤＳＰ、ＣＰＵなどのデータ処理装置（チップ、モジュール）を構成するプロセッシングユニットを始めとする回路あるいはＩＰの状態を確認することである。プログラムの進行を停止した後に、チップ内部の状態を出力する１つの方法としては、ＪＴＡＧ（Joint Test Action Group）を用いたバウンダリースキャンがあり、ＪＴＡＧデバッグユニットを搭載したＣＰＵおよびＤＳＰといった製品が既にある。デバッグユニットを搭載したデバイスは、デバッグ処理を制御するデバッガに対してターゲットデバイスと称される。パーソナルコンピュータなどのホストコンピュータがデバッガとして機能し、ターゲットデバイスに搭載されたエミュレーションコントロールユニット（ＩＣＥ、In Circuit Emulator）を介してデバッグモードと非デバッグモードの切換を行ったり、デバッグのためにメモリあるいはレジスタの値を入出力したり、プログラムの実行停止を制御する。ＪＴＡＧ機構とＩＣＥとしての機構を含めてチップに搭載されるモジュールをデバッグモジュールと称することもある。
【０００６】
デバッグにおいて、例外の発生により即座にプログラムの進行を停止することが望ましいのが原則であるが、必ずしもプログラムの進行を即時停止することが望ましくないこともある。特開２００２−５５８４９号公報においては、ハードウェアブレークが発生したときのアドレスがＣＰＵにより変換できない仮想アドレスのときは、ハードウェアブレーク機能をいったん解除して、ＯＳのアドレスエラー処理ルーチンをＣＰＵに実行させてアクセス不能の仮想アドレスを物理アドレスに変換し、デバッガを利用するユーザが対象のアドレスにアクセスできるようにすることが記載されている。このようなデバッグ機能を備えたＯＳが稼動している場合は、デバッグ例外が発生しても即座にプログラムの進行が停止することはなく、例外ハンドラが作動してしまい、デバッグ例外が発生した直後の状態をＪＴＡＧ機能で読み出すことは実際には不可能になる。一方、ＯＳのデバッグ機能がなければ、ＣＰＵを停止しても、仮想アドレスを物理アドレスに変換できず、デバッガがその機能を果たさないこともありうる。したがって、ユーザは、デバッグ方法を予め決定しておく必要があり、ＯＳのデバッグ機能を使用する設計であれば、ＣＰＵを即座に停止できず、例外発生直後の状態は検証できないことになる。
【０００７】
そこで、本発明においては、デバッグをさらにフレキシブルに行うことができるプロセッシングモジュールおよびその制御方法を提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明においては、例外の発生により、プログラムの進行の停止と、その例外に対処するルーチンの実行とを、外部入力に基づき選択する手段を有するプロセッシングモジュールを提供する。例外の発生によりプログラムの進行を停止する実行停止手段と、例外に対処するルーチンを実行するハンドラとを有するプロセッシングモジュールであれば、外部入力により実行停止手段およびハンドラのいずれかを選択する手段を設ける。このプロセッシングモジュールの制御方法は、例外の発生により、プログラムの進行の停止と、その例外の発生に対処するルーチンの実行とを、外部入力に基づき選択する工程を有しており、例外発生時の基本的な処理方法を、プロセッシングモジュールの外部から自由に設定することが可能となる。
【０００９】
したがって、このプロセッシングモジュールを搭載したデータ処理装置においては、このデータ処理装置の外部からの制御により外部入力を制御するデバッグモジュールを同時に搭載することにより、例外の発生により、プログラムの進行の停止と、その例外の発生に対処するルーチンの実行とを、外部のデバッガから制御することができる。デバッグモジュールの１つの形態は、プロセッシングモジュールのデバッグ情報をデータ処理装置の外部に出力する機能も備えたＩＣＥモジュールである。したがって、例外が発生したときにハンドラに制御を渡しＯＳの機能を使用するなどのプロセスを実行させることによりデバッグを進める処理と、例外の発生により即座にプログラムの進行を止めて状態を検証する処理とをユーザはデバッグする際に設定でき、その設定も自由に変えることができる。すなわち、本発明のデバッグ方法では、デバッグする際に、外部入力を、プログラムの進行の停止、または、例外に対処するルーチンの実行にセットすることにより、いずれの方法でもデバッグすることができる。
【００１０】
実行停止手段は、エラー例外によりプログラムの進行を停止する第１の手段と、デバッグ例外によりプログラムの進行を停止する第２の手段とを備え、選択する手段は、第１の外部入力により第１の手段およびハンドラのいずれかを選択する第１の選択手段と、第２の外部入力により第２の手段およびハンドラのいずれかを選択する第２の選択手段とを備えていることが望ましい。すなわち、例外が、エラー例外とデバッグ例外とを含んでいる場合には、外部入力により分けて取り扱いできることが望ましい。また、本発明のプロセッシングエレメントの制御方法では、選択する工程において、エラー例外の発生により、プログラムの進行の停止と、そのエラー例外に対処するルーチンの実行とを、第１の外部入力に基づき選択し、デバッグ例外の発生により、プログラムの進行の停止と、そのデバッグ例外に対処するルーチンの実行とを、第２の外部入力に基づき選択することが望ましい。
【００１１】
エラー例外とデバッグ例外とを分けて設定できると、エラー例外が発生したときはハンドラを実行するように第２の外部入力をセットし、その処理にデバッグ例外が発生するようにプログラムし、デバッグ例外では即座に実行を停止するように第１の外部入力をセットすることにより、エラー例外発生時の処理をデバッグすることが可能となる。また、逆の設定により、デバッグ例外の処理をデバッグすることも可能となる。
【発明の効果】
【００１２】
本発明においては、プロセッシングモジュールにおいて、例外の発生により即座にプログラムを停止するか、ハンドラに処理を渡すかの選択を外部のデバッグモジュールに開放している。したがって、プロセッシングモジュールにおける例外発生処理をデバッガからコマンド制御することが可能となり、例外発生時のプロセッシングモジュールの動作をさらに詳しく検証することが可能となる。このため、さらに信頼性の高いプロセッシングモジュールおよびそれを搭載したＣＰＵ、ＤＳＰ、ＬＳＩあるいはＡＳＩＣなどのデータ装置を提供することが可能となる。
【発明を実施するための最良の形態】
【００１３】
図１に、ＣＰＵをデバッグするシステムの一例を示してある。デバッグのターゲットとなるＣＰＵ１は、評価用のボード２に搭載され、評価ボード２は適当なインターフェイスを介してパーソナルコンピュータ３に接続されている。パーソナルコンピュータ３では、デバッガ用のソフトウェア４が稼動し、ＣＰＵ１に内蔵されたデバッグモジュール１２によりＣＰＵ１をデバッグモードにしてデバッグを行う。このＣＰＵ１は、１つの一体化されたチップを示しており、汎用的な命令をデコードおよび実行するプロセッサコア（プロセッシングモジュール、ＣＰＵコア、エンベッデドプロセッサなどとも呼ばれる）１１と、エンベッデドＩＣＥと称されるデバッグモジュール１２とを備えている。
【００１４】
図２に、ＣＰＵ１と、デバッガ４とを抜き出して示している。ＣＰＵ１には、プロセッサコア１１と、デバッグモジュール１２の他に、状態を初期化するリセットモジュール１３に加え、図示されていないが、ＲＯＭ、ＲＡＭ、タイマー、ＰＬＬなど周辺モジュールが搭載されている。デバッグモジュール１２は、プロセッサコア１１に限らず、周辺の機能モジュールとも信号を交換し、デバッグモードを設定したり、ＣＰＵ１の状態をリセットしたり、メモリにアクセスするなどのデバッグに必要な処理を行う。本例のプロセッサコア１１は、例外の発生と、その例外に関連付けられた処理とを行う例外処理モジュール１５を備えている。この例外処理モジュール１５は、デバッグモジュール１２から制御できる２つの入力１６および１７を備えている。
【００１５】
図３に、例外処理モジュール１５の概略構成のハードウェア的なイメージを、正論理を用いて示してある。例外処理モジュール１５の機能は、プロセッサコア１１において、ゲート回路などのハードウェアにより実現することができる。例外処理モジュール１５は、例外ハンドラとしての機能を備えており、例外の発生を検出し、発生した例外の種類を識別する例外検出機能２１と、例外に対処するルーチンを実行するハンドラ機能２９を備えている。さらに、ルーチンを実行する代わりに、プロセッサコア１１におけるプログラムの実行を強制的に停止するハードウェアブレーク機能２８と、外部入力１６または１７により、例外が発生したときにハンドラ機能２９とハードウェアブレーク機能２８とを選択する機能２５とを備えている。例外検出機能２１は、検出された例外を、エラー例外Ｅ１と、デバッグ例外Ｅ２と、その他の例外Ｅ３の３つの大きなカテゴリーに分類し、それぞれのカテゴリーに応じた対応が例外処理モジュール１５で実行できるようにしている。それぞれのカテゴリーに含まれる例外の例は上述した通りである。
【００１６】
本例の例外処理モジュール１５においては、エラー例外Ｅ１またはデバッグ例外Ｅ２が発生すると、ハンドラ機能２９とハードウェアブレーク機能２８のいずれかが選択機能２５により選択される。したがって、エラー例外Ｅ１またはデバッグ例外Ｅ２が発生すると、プロセッサコア１１においては、例外ハンドラとして予め個々の例外に対して設定されたルーチンが実行されるか、または、プログラムの進行が停止され、ＣＰＵ１の状態がデバッグモジュール１２を介してデバッガ１４から解析できる状態になる。その他の例外Ｅ３が発生すると、ハンドラ機能２９により例外ハンドラとして予め個々の例外に対して設定されたルーチンが実行される。
【００１７】
選択機能２５は、エラー例外Ｅ１が発生したときの処理を第１の外部入力信号１６により選択できる第１の選択機能２６と、デバッグ例外Ｅ２が発生したときの処理を第２の外部入力信号１７により選択できる第２の選択機能２７とを備えている。したがって、ユーザはパーソナルコンピュータ３の上で稼動するデバッガ４からＩＣＥモジュール１２を介して第１の外部入力信号１６および／または第２の外部入力信号１７を設定し、第１の選択機能２６および／または第２の選択機能２７をユーザが望むように設定することができる。
【００１８】
図４に、例外処理モジュール１５の機能をソフトウェアのイメージで示している。例外処理モジュール１５の機能は、プロセッサコア１１において、マイクロプログラムなどによりプロセッサコアの制御用のソフトウェアとして組み込むことができる。ステップ３１で例外の発生が検出され、ステップ３２でエラー例外Ｅ１であると判断されると、ステップ３３において、ハードウェアブレーク機能２８によりプログラムの実行を停止するか、あるいはハンドラ機能２９により例外に対応したルーチンを実行するかを判断する。ステップ３３の状態を第１の外部入力１６により制御することができる。
【００１９】
一方、発生した例外が、ステップ３４でデバッグ例外Ｅ２であると判断されると、ステップ３５において、ハードウェアブレーク機能２８によりプログラムの実行を停止するか、あるいはハンドラ機能２９により例外に対応したルーチンを実行するかを判断する。ステップ３５の状態を第２の外部入力１７により制御することができる。ステップ３２および３４において、エラー例外Ｅ１であるとも、デバッグ例外Ｅ２であるとも分類されなかったその他の例外Ｅ３については、ハンドラ機能２９により例外に対応したルーチンを実行する。
【００２０】
このように、本例のプロセッサコア１１は、デバッグ用のインターフェイスとして例外発生時の動作を制御することができる外部入力１６および１７を備えている。したがって、プロセッサコア１１をデバッグする場合には、例外が発生したときに、それらの外部入力信号１６および／または１７の状態を判断することにより、例外発生以降の動作を決定することができる。例えば、デバッグ例外Ｅ２は、プログラムの動作を停止してデバッガ４によりプロセッサコア１１およびその他のＣＰＵ１の状態をチェックすることを目的としてアプリケーションプログラムなどに予め設定されているものである。
【００２１】
しかしながら、ＯＳなどの他のソフトウェアにおいてデバッグ例外Ｅ２が発生すると特別なルーチンを実行するようにプログラミングされていると、ハードウェアブレーク機能２８は働かず、デバッグ例外Ｅ２が発生しても即座にプログラムの動作が停止しないのでプロセッサコア１１の状態は推移してしまう。一方、上述したように、デバッグ例外Ｅ２が発生したときにＯＳの機能を用いてアドレス変換しないと、プロセッサコア１１の状態を検出できないこともある。
【００２２】
本例のプロセッサコア１１およびそれを備えたＣＰＵ１においては、内蔵されたＩＣＥモジュール１２を介して第２の外部入力信号１７を設定することにより、デバッグ例外Ｅ２により、プロセッサコア１１のプログラムの進行を即座に停止して状態を検出することも、ＯＳなどの他の機能を用いてさらにデバッグに好都合な状態に進めることも可能である。
【００２３】
エラー例外Ｅ１は、プログラムを設計する際に発生しないように設計するので、エラー例外Ｅ１が発生した場合は直にプログラムを停止することが通常は要求され、そのときの状態を解析することが望ましい。しかしながら、そのような例外処理のデバッグのみしか行えないと、エラー例外Ｅ１が発生した後の処理をデバッグすることができない。本例のプロセッサコア１１であれば、第１の外部入力信号１６によりエラー例外Ｅ１ではハンドラ機能２９が起動するように第１の選択機能２６を設定し、ハンドラ機能２９が実行するルーチンにデバッグ例外Ｅ２を設け、第２の外部入力信号１７により第２の選択機能２７をハードウェアブレークするように設定することにより、エラー例外発生後の処理をデバッグできる。
【００２４】
このプロセッサコア１１であれば、デバッグ例外Ｅ２が発生したときのハンドラ２９の処理をデバッグすることも可能である。第２の外部入力信号１７によりデバッグ例外Ｅ２が発生したときにハンドラ２９により例外処理用のルーチンが実行されるように第２の選択機能２７を設定し、ルーチンが期待する動作と異なる場合にエラー例外Ｅ１が発生するようにプログラムし、第１の外部入力信号１６によりエラー例外Ｅ１が発生したときにハードウェアブレークするように第１の選択機能２６を設定することにより、エラーが発生した事象を直ちに検出することができる。
【００２５】
なお、上記ではプロセッサコアとデバッグモジュールを搭載したＣＰＵを例に本発明を説明しているが、ＣＰＵに限らず、ＤＳＰ、ＬＳＩ、ＡＳＩＣなど、埋め込み型のプロセッシングモジュールを搭載した処理装置に対して本発明を適用することができる。
【図面の簡単な説明】
【００２６】
【図１】ＩＣＥモジュールを搭載したＣＰＵのデバッグシステムの概要を示す図である。
【図２】ＣＰＵの概略構成を示す図である。
【図３】例外処理モジュールのハードウェア的な構成を示す図である。
【図４】例外処理モジュールのソフトウェア的な構成を示すフローチャートである。
【符号の説明】
【００２７】
１    ＣＰＵ
４    デバッガ
１１    プロセッサコア
１２    デバッグモジュール
１５    例外処理モジュール
２５    選択機能
２８    ハードウェアブレーク機能
２９    ハンドラ機能
【図１】
2005267349.tif 000003
【図２】
2005267349.tif 000004
【図３】
2005267349.tif 000005
【図４】
2005267349.tif 000006