(57)【要約】【課題】プロセッサがデバッグ対象プログラムを実行する際に正しいステータスを得ることができるシステムＬＳＩを提供する。【解決手段】第２のプロセッサ１０５によって実行されるプログラムがブレークポイントに到達した場合、デバッグ対象のプログラムの実行を中断し、同時に画像処理モジュール１０７も実行中の画像処理を中断する。画像処理モジュール１０７内のステータスレジスタの更新は、デバッグ信号の解除後まで先延ばしにされる。【選択図】図１
2007316986.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、第２のプロセッサと、前記第２のプロセッサによって制御され、バスに接続されたバスインタフェースおよびデータ処理部を有する機能モジュールとを備え、前記第１のプロセッサによって実行されるデバッグプログラムに従って、前記第２のプロセッサによって実行されるデバッグ対象プログラムのデバッグを行うシステムＬＳＩであって、
前記デバッグプログラムの実行時、前記第２のプロセッサによって実行されるデバッグ対象プログラムが所定の条件を満たした場合、前記デバッグ対象プログラムの実行を一時中断し、デバッグ信号を有効にするデバッグ有効化手段と、
前記デバッグ信号が有効になると同時に、前記機能モジュール内の前記バスインタフェースを停止させることなく、前記データ処理部の機能を停止させる機能停止手段とを備えたことを特徴とするシステムＬＳＩ。
【請求項２】
前記機能停止手段は、前記機能モジュールを動作させるためのクロックの供給を制御するクロック供給手段を有し、前記クロック供給手段は、前記デバッグ信号が有効である間、前記データ処理部へのクロックの供給を停止して前記データ処理部の機能を停止させることを特徴とする請求項１記載のシステムＬＳＩ。
【請求項３】
複数の前記クロック供給手段が、それぞれ対応する複数の前記機能モジュールに接続されており、
前記機能停止手段は、前記第１のプロセッサからの中継情報に従って、前記デバッグ信号を前記複数のクロック供給手段の少なくとも１つに中継する中継手段を備え、
前記クロック供給手段は、前記中継されたデバッグ信号が有効になると、対応する前記機能モジュール内のバスインタフェースを停止させることなく、前記データ処理部の機能を停止させることを特徴とする請求項２記載のシステムＬＳＩ。
【請求項４】
複数の前記機能モジュールを備え、前記機能停止手段は、前記デバッグ信号が有効になると同時に、前記データ処理部の機能が停止される、前記複数の機能モジュールの少なくとも１つを選択する選択手段を備えたことを特徴とする請求項１記載のシステムＬＳＩ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムのデバッグを行うシステムＬＳＩに関する。
【背景技術】
【０００２】
近年、ハイエンドシステム向けシステムＬＳＩの多くは、高性能かつ高機能なプロセッサを搭載している。さらなる高速化のためにデュアルプロセッサを搭載するシステムＬＳＩも増えている。
【０００３】
一方、高性能なプロセッサを実装する代わりに、小規模なプロセッサを多数搭載し、連携動作を行わせることにより複雑な機能を実現するシステムＬＳＩも存在する（特許文献１参照）。このシステムＬＳＩは、個々のプロセッサに機能モジュールを制御させたり、互いに連携しながら機能モジュールを操作するためのプログラムを複数のプロセッサに実行させる。このように、小規模なプロセッサは、単独でプログラムを実行することにより、あるいは選択された複数のプロセッサと連繋して一部のプログラムを実行することにより、上位概念のシナリオを実現させる。
【０００４】
図６は従来の高性能プロセッサおよび小規模プロセッサを具備するシステムＬＳＩの構成を示すブロック図である。このシステムＬＳＩは、第１のプロセッサ４０１、ＲＯＭ４０２、ＲＡＭ４０３、第２のプロセッサ４０５〜４０９、画像処理モジュール４１０〜４１３およびＩ／Ｆモジュール４１４から主に構成される。
【０００５】
第１のプロセッサ４０１は、プログラムに従ってシステムＬＳＩ全体の制御を行う高性能プロセッサである。ＲＯＭ４０２はプログラムを記憶する。ＲＡＭ４０３は、プロセッサのワークエリアあるいは各構成要素モジュール間のデータ受け渡しに利用される。バス４０４は、システムＬＳＩの各構成要素間のデータ送受信を行う。
【０００６】
第２のプロセッサ４０５〜４０９は、第１のプロセッサ４０１の指示に従って、任意のプログラムを実行する小規模プロセッサである。画像処理モジュール４１０〜４１３は機能モジュールである。インタフェース（Ｉ／Ｆ）モジュール４１４は、外部との命令やデータ受け渡しを行う機能モジュールである。
【０００７】
このような構成を有するシステムＬＳＩでは、第２のプロセッサ４０５は、画像処理モジュール４１０を主に制御する。同様に、第２のプロセッサ４０６〜４０８は、それぞれ対応する画像処理モジュール４１１〜４１３を主に制御する。第２のプロセッサ４０９はインタフェースモジュール４１４を主に制御する。
【特許文献１】特開2002−230065号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来のシステムＬＳＩでは、第２のプロセッサで実行されるプログラムのデバッグを行う際、以下に掲げる問題があった。第２のプロセッサに対してシングルステップやブレークポイントを設定して一時的にプログラムの実行を停止させる。このとき、主な制御対象である画像処理モジュールやインタフェースモジュールの動作が継続していると、本来、監視したいこれらモジュールのステータスが正しく得られなかった。これは、画像処理モジュールやインタフェースモジュールが、デバッグ対象である第２のプロセッサによって実行されるプログラムで参照されるリソースとなっているためである。
【０００９】
そこで、本発明は、プロセッサがデバッグ対象プログラムを実行する際に正しいステータスを得ることができるシステムＬＳＩを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明のシステムＬＳＩは、第１のプロセッサと、第２のプロセッサと、前記第２のプロセッサによって制御され、バスに接続されたバスインタフェースおよびデータ処理部を有する機能モジュールとを備え、前記第１のプロセッサによって実行されるデバッグプログラムに従って、前記第２のプロセッサによって実行されるデバッグ対象プログラムのデバッグを行うシステムＬＳＩであって、前記デバッグプログラムの実行時、前記第２のプロセッサによって実行されるデバッグ対象プログラムが所定の条件を満たした場合、前記デバッグ対象プログラムの実行を一時中断し、デバッグ信号を有効にするデバッグ有効化手段と、前記デバッグ信号が有効になると同時に、前記機能モジュール内の前記バスインタフェースを停止させることなく、前記データ処理部の機能を停止させる機能停止手段とを備えたことを特徴とする。
【発明の効果】
【００１１】
本発明の請求項１に係るシステムＬＳＩによれば、第２のプロセッサで実行されるデバッグ対象プログラムが所定の条件を満たした場合、デバッグ対象プログラムの実行を一時的に中断させる。所定の条件として、例えば、シングルステップを行ったことや、設定されたブレークポイントに達したことが挙げられる。このとき、そのプロセッサの制御対象である機能モジュールの動作も同時に中断させる。これにより、プロセッサがデバッグ対象プログラムを実行する際に正しいステータスを得ることができる。
【００１２】
請求項２に係るシステムＬＳＩによれば、デバッグ信号が有効になると同時に、機能モジュール内のバスインタフェースを停止させることなく、データ処理部の機能を停止させる制御を簡単に行うことができる。請求項３に係るシステムＬＳＩによれば、複数の機能モジュールに対しても容易に行うことができる。
【発明を実施するための最良の形態】
【００１３】
本発明のシステムＬＳＩの実施の形態について図面を参照しながら説明する。
【００１４】
［第１の実施形態］
図１は第１の実施形態におけるシステムＬＳＩの構成を示す図である。システムＬＳＩは、第１のプロセッサ１０１、ＲＯＭ１０２、ＲＡＭ１０３、割込みコントローラ１０８、第２のプロセッサ１０５、画像処理モジュール１０７及びクロックゲート１１０から主に構成される。
【００１５】
第１のプロセッサ１０１は、プログラムに従ってシステムＬＳＩ全体を制御するとともに、デバッグプログラムを実行する高性能プロセッサである。ＲＯＭ１０２はプロセッサによって実行されるプログラムを記憶する。ＲＡＭ１０３はプロセッサのワークエリアあるいは各構成要素モジュール間のデータ受け渡しに利用される。システムバス１０４はシステムＬＳＩの各構成要素間のデータ送受信を行う。
【００１６】
第２のプロセッサ１０５は、小規模プロセッサであり、第１のプロセッサ１０１の指示に従って任意のプログラムを実行する他、シングルステップやブレークポイントなどのデバッグサポート機能を有する。第２のプロセッサ１０５は、デバッグトリガ条件の発生を検出すると、実行中のプログラムを一時停止し、デバッグモードに遷移してデバッグ信号を有効（アサート）にする。このデバッグ信号１０６の有効（アサート）／無効（デアサート）は第２のプロセッサ１０５によって制御される。
【００１７】
画像処理モジュール１０７には、異なるクロックドメインに分割された画像処理部１０７ａおよびバスＩ／Ｆ１０７ｂが設けられている。また、画像処理部１０７ａには、ステータスを記憶するステータスレジスタ（図示せず）が設けられている。割込みコントローラ１０８は、第１のプロセッサ１０１への割込み要求信号１０９を有効にすることで、第１のプロセッサ１０１に割込み要求を発行する。
【００１８】
クロックゲート１１０は、画像処理モジュール１０７内の画像処理部１０７ａに入力されるクロックの供給を制御するものであり、デバッグ信号１０６が有効である間、そのクロックの供給を停止する。また、クロックゲート１１０およびバスＩ／Ｆ１０７ｂには、クロック１１１が供給されている。
【００１９】
上記構成を有するシステムＬＳＩにおける、第２のプロセッサ１０５で実行されるプログラムのデバッグ時のデバッグサポート機能を示す。本実施形態では、第２のプロセッサ１０５によって実行されるデバッグ対象のプログラムは、画像処理モジュール１０７を制御するものである。また、第２のプロセッサ１０５によって実行されるプログラムをデバッグするためのデバッグプログラムは、第１のプロセッサ１０１によって実行される。なお、デバッグ時、第２のプロセッサ１０５は、シングルステップでプログラムの実行を中断してもよいし、プログラムが予め設定されたブレークポイントに達したことでその実行を中断してもよい。ここでは、ブレークポイントを設定する場合を示す。
【００２０】
図２は第１のプロセッサ１０１によるデバッグ処理手順を示すフローチャートである。この処理プログラムはＲＯＭ１０２に格納されている。まず、デバッグ処理時、第１のプロセッサ１０１は、第２のプロセッサ１０５によって実行されるプログラムのブレークポイントを第２のプロセッサ１０５に通知する（ステップＳ１）。
【００２１】
割込みコントローラ１０８からの割込要求信号１０９が有効であるか否かを判別する（ステップＳ２）。割込要求信号１０９が有効になると、割込みコントローラ１０８内の割込み要因レジスタ（図示せず）を読み込み、割込み要因を検出する（ステップＳ３）。ここでは、割込み要因として、第２のプロセッサ１０５がデバッグモードに入り、デバッグ信号１０６を有効にしていることが検出される。
【００２２】
第２のプロセッサ１０５および画像処理モジュール１０７内のステータスレジスタを監視（モニタ）する等、所定の処理を行う（ステップＳ４）。このとき、後述するように、第２のプロセッサ１０５による処理の中断、および画像処理部１０７ａによる動作の中断があっても、バスＩ／Ｆ１０７ｂは動作している。従って、バスＩ／Ｆ１０７ｂは、第１のプロセッサ１０１からのバスアクセスを受けることができる。また、第１のプロセッサ１０１は、デバッグ信号１０６が有効になる直前の値を保持したままステータスレジスタの値を読み込むことができる。この所定の処理を終えると、第２のプロセッサ１０５の処理を再開させる指示を行う（ステップＳ５）。この後、本処理を終了する。
【００２３】
図３は、第１のプロセッサ１０１によるデバッグ処理に応答して行われる第２のプロセッサ１０５によるデバッグ処理手順を示すフローチャートである。まず、第１のプロセッサ１０１から通知されたブレークポイントを設定する（ステップＳ１１）。デバッグ対象のプログラムのステップ処理を実行する（ステップＳ１２）。ステップ処理の実行を終えると、ブレークポイントに到達したか否かを判別する（ステップＳ１３）。ブレークポイントに到達していない場合、ステップＳ１２に戻り、次のステップ処理を実行する。
【００２４】
一方、ブレークポイントに達すると、そのプログラムの実行を中断してデバッグ信号１０６を有効（アサート）にする（ステップＳ１４）。このデバッグ信号１０６は、割込みコントローラ１０８およびクロックゲート１１０に入力される。割込みコントローラ１０８は、デバッグ信号１０６が有効になると、割込み要求信号１０９を有効にして第１のプロセッサ１０１に割込み要求を行う。これと同時に、クロックゲート１１０は、デバッグ信号１０６が有効になると、画像処理モジュール１０７内の画像処理部１０７ａへのクロック信号１１２の供給を停止する。この結果、画像処理部１０７ａは、内部状態を保ったまま処理を中断する。一方、バスＩ／Ｆ１０７ｂには、クロック信号１１１が供給され続けるので、バスＩ／Ｆ１０７ｂは動作を継続する。
【００２５】
第１のプロセッサ１０１から再開の指示を待つ（ステップＳ１５）。再開の指示があると、デバッグ信号１０６を無効（デアサート）にする（ステップＳ１６）。この後、本処理を終了する。デバッグ信号１０６が無効になると、クロックゲート１１０は、クロック信号１１２の供給を再開する。この結果、画像処理モジュール１０７内の画像処理部１０７ａは、処理を再開するとともに、保留されていたステータスレジスタの更新を行う。
【００２６】
このように、第１の実施形態のシステムＬＳＩでは、ブレークポイントに到達したことにより、デバッグ対象のプログラムの実行を中断した場合、画像処理モジュール１０７も実行中の画像処理を中断する。そして、ステータスレジスタの更新を、デバッグ信号１０６の解除後まで先延ばしにする。これにより、デバッグ対象のプログラムに関わるステータスが書き換えられることを回避することができる。従って、第２のプロセッサ１０５のデバッグモードにおいて、本来、監視（モニタ）したかったステータスを読み出すことができる。なお、上記実施形態では、ブレークポイントにより第２のプロセッサの処理を中断させたが、シングルステップで処理を中断させても、同様である。
【００２７】
［第２の実施形態］
図４は第２の実施形態におけるシステムＬＳＩの構成を示す図である。第２の実施形態では、システムＬＳＩは、複数の第２のプロセッサおよび複数の画像処理モジュールを有する。第２のプロセッサがそれぞれ任意の画像処理モジュールを主な制御対象として選択した場合、システムＬＳＩはそれに対応可能なデバッグサポート機能を有する。
【００２８】
具体的には、システムＬＳＩは、第１のプロセッサ１５１、ＲＯＭ１５２、ＲＡＭ１５３、システムバス１５４、割込みコントローラ１５８および第２のプロセッサ１６５、１６６を有する。また、デバッグ信号ルータ２０１、画像処理モジュール１７１、１７２およびクロックゲート１８１、１８２を有する。デバッグ信号ルータ２０１を除く各部の構成および動作は、前記第１の実施形態と同様である。画像処理モジュール１７１、１７２は、前記第１の実施形態の画像処理モジュール１０７と同様、バスＩ／Ｆおよび画像処理部を有する。デバッグ信号ルータ２０１は、複数の第２のプロセッサ１６５、１６６からのデバッグ信号を任意のクロックゲート１８１、１８２に中継する。
【００２９】
図５はデバッグ信号ルータ２０１の構成を示す図である。このデバッグ信号ルータ２０１は、レジスタ３０３、３０４、バスインタフェース３０５、デコーダ３０６およびデマルチプレクサ（ＤＭＵＸ）３０７を有する。さらに、デバッグ信号ルータ２０１は、ＡＮＤゲート３０８、３０９、３１０、３１１およびＯＲゲート３１２、３１３を有する。
【００３０】
レジスタ３０３は、第２のプロセッサ１６５から出力されるデバッグ信号３０１の中継を制御する。同様に、レジスタ３０４は、第２のプロセッサ１６６から出力されるデバッグ信号の中継を制御する。レジスタ３０３は、画像処理モジュール１７１に対応するビットｂ０、および画像処理モジュール１７２に対応するビットｂ１を有する。同様に、レジスタ３０４は、画像処理モジュール１７１に対応するビットｂ０、および画像処理モジュール１７２に対応するビットｂ１を有する。
【００３１】
バスインタフェース３０５は、システムバス１５４とのインタフェースを行う。デコーダ３０６は、バスインタフェース３０５から送られた、デバッグ信号ルータ２０１へのアクセスのアドレスを復号化（デコード）する。デマルチプレクサ（ＤＭＵＸ）３０７は、デコーダ３０６によって復号化された情報を基に、バスインタフェース３０５から送られたデータをレジスタ３０３、３０４のいずれかに出力する。
【００３２】
２入力１出力のＡＮＤゲート３０８、３０９およびＯＲゲート３１２は、画像処理モジュール１７１へのクロックの供給を制御するために、デバッグ信号３０１及び３０２からクロックゲート１８１に入力されるデバッグ信号３１４を選択する。同様に、２入力１出力のＡＮＤゲート３１０、３１１およびＯＲゲート３１３は、画像処理モジュール１７２へのクロックの供給を制御するために、デバッグ信号３０１及び３０２からクロックゲート１８２に入力されるデバッグ信号３１５を選択する。
【００３３】
上記構成を有するシステムＬＳＩは、第２のプロセッサ１６５、１６６で実行されるプログラムのデバッグ時のデバッグサポート機能を有する。デバッグ処理は、前記第１の実施形態と同様であるので、その説明を省略し、ここでは異なる動作を説明する。第２の実施形態では、デバッグ信号が有効になると、そのデバッグ信号は、デバッグ信号ルータ２０１を経由して、予め選択された画像処理モジュールに対応するクロックゲートに中継される。この中継動作の詳細を示す。また、ここでは、第２のプロセッサ１６５は、画像処理モジュール１７１を制御しているものとする。
【００３４】
始めに、ユーザは、第１のプロセッサ１５１によるデバッグプログラムの実行を指示する。この指示に応じて、第１のプロセッサ１５１は、デバッグ信号ルータ２０１内のレジスタ３０３のビットｂ０に値１、ビットｂ１に値０を書き込むとともに、第２のプロセッサ１６５にブレークポイントの設定を通知する。このとき、第１のプロセッサ１５１からのバスアクセスは、システムバス１５４を介してデバッグ信号ルータ２０１内のバスインタフェース３０５に入力される。デコーダ３０６によってそのアドレスが復号化（デコード）され、このデコード結果に従って、デマルチプレクサ３０７がレジスタ３０３へのアクセスを行う。これにより、レジスタ３０３には、設定値（ここでは、ビットｂ１：値０、ビットｂ０：値１）が書き込まれる。
【００３５】
第２のプロセッサ１６５がデバッグ対象のプログラムを実行してブレークポイントに達すると、デバッグ対象のプログラムを中断してデバッグモードに遷移するとともに、デバッグ信号３０１を有効（値１）にする。
【００３６】
デバッグ信号ルータ２０１では、有効になったデバッグ信号３０１が、予め設定されたレジスタ３０３内のビットｂ０の値（値１）とともに、ＡＮＤゲート３０８に入力され、論理積（値１）が演算される。ＯＲゲート３１２では、ＡＮＤゲート３０８、３０９の出力による論理和が演算され、この論理和の演算値（値１）は、画像処理モジュール１７１に対応するクロックゲート１８１にデバッグ信号３１４として出力される。
【００３７】
クロックゲート１８１は、デバッグ信号３１４が有効（値１）になると、クロック信号１１１を画像処理モジュール１７１に供給することを中断する。つまり、画像処理モジュール１７１に供給されるクロックの発振を停止する。
【００３８】
これにより、画像処理モジュール１７１では、クロックゲート１８１を経由せずにクロック信号１１１が供給され続けているバスＩ／Ｆ（図示せず）を除き、画像処理部を含むその他各部の動作を停止する。従って、画像処理モジュール１７１は、クロックゲート１８１からのクロック信号が停止する直前のステータスを保持する。
【００３９】
このように、第２の実施形態のシステムLＳＩによれば、第２のプロセッサ１６５がデバッグ対象のプログラムを中断した瞬間の画像処理モジュール１７１のステータスを保持することができる。従って、第２のプロセッサ１６５のデバッグモードにおいて、本来、監視したかったステータスを読み出すことができる。
【００４０】
なお、上記実施形態では、画像処理モジュール１７１のステータスだけを読み出す場合を示したが、画像処理モジュール１７２のステータスだけを読み出してもよいことは勿論である。この場合、レジスタ３０３のビットｂ１は値１、ビットｂ０は値０に設定される。また、画像処理モジュール１７１、１７２の両方のステータスを同時に読み出す場合、レジスタ３０３のビットｂ０、ｂ１をともに値１に設定すればよい。また、第２のプロセッサ１６５によるプログラムのデバッグ処理と同様に、第２のプロセッサ１６６によるプログラムのデバッグ処理も行うことが可能である。また、第２のプロセッサの数や機能処理モジュールの数等は、任意の数でよいことは勿論である。
【図面の簡単な説明】
【００４１】
【図１】第１の実施形態におけるシステムＬＳＩの構成を示す図である。
【図２】第１のプロセッサ１０１によるデバッグ処理手順を示すフローチャートである。
【図３】第１のプロセッサ１０１によるデバッグ処理に応答して行われる第２のプロセッサ１０５によるデバッグ処理手順を示すフローチャートである。
【図４】第２の実施形態におけるシステムＬＳＩの構成を示す図である。
【図５】デバッグ信号ルータ２０１の構成を示す図である。
【図６】従来の高性能プロセッサおよび小規模プロセッサを具備するシステムＬＳＩの構成を示すブロック図である。
【符号の説明】
【００４２】
１０１、１５１  第１のプロセッサ
１０５、１６５、１６６  第２のプロセッサ
１０７、１７１、１７２  画像処理モジュール
１０７ａ  画像処理部
１０７ｂ  バスインタフェース（Ｉ／Ｆ）
１１０、１８１、１８２  クロックゲート
３０３、３０４  レジスタ
３０８〜３１１  ＡＮＤゲート
３１２、３１３  ＯＲゲート
【図１】
2007316986.tif 000003
【図２】
2007316986.tif 000004
【図３】
2007316986.tif 000005
【図４】
2007316986.tif 000006
【図５】
2007316986.tif 000007
【図６】
2007316986.tif 000008