(57)【要約】【課題】  複数のプロセッサを協調してデバッグ動作させるシステムＬＳＩにおいて、デバッグを容易にすることを目的とする。【解決手段】  複数のプロセッサ３０ａ、３０ｂ、３０ｃ毎に設けられ、命令列管理手段６０から供給される命令列を格納するとともに、複数のプロセッサ３０ａ、３０ｂ、３０ｃがデバッグ動作状態にあるとき、命令列を対応する前記プロセッサ３０ａ、３０ｂ、３０ｃに供給する命令列保持手段と、複数のプロセッサに対するクロックパルスの供給を停止することにより、複数のプロセッサ３０ａ、３０ｂ、３０ｃを初期状態に設定し、また、複数のプロセッサ３０ａ、３０ｂ、３０ｃに対するクロックパルスの供給を同期して開始することにより、複数の前記プロセッサ３０ａ、３０ｂ、３０ｃにクロックパルスに同期して命令列を実行させるクロック制御手段とを備える。【選択図】  図１
2010211741.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
複数の前記プロセッサの動作状態を通常動作状態とデバッグ動作状態とに切り替えるプロセッサ動作制御手段と、
デバッグ動作状態において複数の前記プロセッサに実行させる第１命令列を供給する命令列管理手段と、
複数の前記プロセッサ毎に設けられ、前記命令列管理手段から供給される前記第１命令列を格納するとともに、前記プロセッサがデバッグ動作状態にあるとき、対応する前記プロセッサに前記第１命令列を供給する命令列保持手段と、
複数の前記プロセッサに対するクロックパルスの供給を停止することにより、複数の前記プロセッサを初期状態に設定し、また、複数の前記プロセッサに対するクロックパルスの供給を同期して開始することにより、クロックパルスに同期して前記命令列を複数の前記プロセッサに実行させるクロック制御手段と
を備えることを特徴とするシステムＬＳＩ。
【請求項２】
前記クロック制御手段は、前記デバッグ動作状態において前記プロセッサが実行する第１命令列を実行するのに必要なクロックパルスを前記プロセッサに供給することを特徴とする請求項１に記載のシステムＬＳＩ。
【請求項３】
前記プロセッサが、
通常状態において実行する第２命令列を格納するとともに、前記プロセッサが通常動作状態にあるとき、前記第２命令列を供給する通常動作命令列保持手段と、
通常動作時には、前記通常動作命令列保持手段から供給される前記第２命令列を選択し、デバッグ動作時には、前記命令列管理手段から供給される前記第１命令列を選択する切替制御手段と
をさらに備えることを特徴とする請求項１または２記載のシステムＬＳＩ。
【請求項４】
複数のプロセッサの動作状態をデバッグ動作状態に遷移させ、
複数の前記プロセッサに供給するクロックパルスの供給を停止することにより、複数の前記プロセッサの動作を停止させ、
複数の前記プロセッサ毎に設けられた命令列保持手段に、対応する前記プロセッサに実行させるデバッグ命令列を格納させ、
前記命令列保持手段に格納された命令列を対応する前記プロセッサに供給させ、
複数の前記プロセッサにクロックパルスの供給を開始することにより、複数の前記プロセッサの動作を同期して開始させ、クロックパルスに同期して前記命令列を複数の前記プロセッサに実行させる手順を有することを特徴とするシステムＬＳＩのデバッグ方法。
【請求項５】
複数の前記プロセッサが前記命令列を実行できる分だけ前記クロックパルスを供給させることを特徴とする請求項４に記載のシステムＬＳＩのデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムＬＳＩ及びシステムＬＳＩのデバッグ方法に係り、特に複数のプロセッサを備え、複数のプロセッサを協調してデバッグ動作させる構成を有するシステムＬＳＩ及びそのデバッグ方法に関する。
【背景技術】
【０００２】
近年、プロセス技術の進歩や、要求仕様の多機能化、コスト削減の要求などに伴い、システムＬＳＩは複数のプロセッサで構成される場合が増えている。また、システムＬＳＩは、デジタル家電製品、モバイル通信機器など、さまざまな信号処理と同時にシステム制御なども行うことが求められている。このため、システムＬＳＩは非対称なマルチプロセッサ構成になり、それらが協調してアプリケーションプログラムを実行する場合が多い。このようなシステムＬＳＩのデバッグでは、複数のプロセッサを協調してデバッグ動作させることが要求される。
【０００３】
この要求に応じて、例えば、複数のプロセッサの動作状態を一元管理するとともに、個々のプロセッサの動作状態（通常動作状態とデバッグ動作状態）の変化に応じて、他のプロセッサの動作状態をデバッグ動作状態にさせることで、複数のプロセッサを協調してデバッグ動作させる動作試験装置が開示されている（例えば、特許文献１参照。）。
【０００４】
しかし、これまで、複数のプロセッサの動作状態を同時にデバッグ動作状態にさせる具体的な技術は開示されていない。このため、複数のプロセッサを協調してデバッグ動作させること容易ではなかった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１２２３７５号公報。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、複数のプロセッサを協調してデバッグ動作させるシステムＬＳＩにおいて、デバッグを容易にすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様のシステムＬＳＩは、複数のプロセッサと、複数の前記プロセッサの動作状態を通常動作状態とデバッグ動作状態とに切り替えるプロセッサ動作制御手段と、デバッグ動作状態において複数の前記プロセッサに実行させる第１命令列を供給する命令列管理手段と、複数の前記プロセッサ毎に設けられ、前記命令列管理手段から供給される前記第１命令列を格納するとともに、前記プロセッサがデバッグ動作状態にあるとき、対応する前記プロセッサに前記第１命令列を供給する命令列保持手段と、複数の前記プロセッサに対するクロックパルスの供給を停止することにより、複数の前記プロセッサを初期状態に設定し、また、複数の前記プロセッサに対するクロックパルスの供給を同期して開始することにより、クロックパルスに同期して前記命令列を複数の前記プロセッサに実行させるクロック制御手段とを備えることを特徴とする。
【０００８】
本発明の別態様のシステムＬＳＩのデバッグ方法は、複数のプロセッサをデバッグするシステムＬＳＩにおいて複数のプロセッサの動作状態をデバッグ動作状態に遷移させ、複数の前記プロセッサに供給するクロックパルスの供給を停止することにより、複数の前記プロセッサの動作を停止させ、複数の前記プロセッサ毎に設けられた命令列保持手段に、対応する前記プロセッサに実行させる命令列を格納させ、前記命令列保持手段に格納された命令列を対応する前記プロセッサに供給させ、複数の前記プロセッサに供給するクロックパルスの供給を開始することにより、複数の前記プロセッサの動作を開始させ、複数の前記プロセッサがクロックパルスに同期して前記命令列を実行させることを特徴とする。
【発明の効果】
【０００９】
本発明は、複数のプロセッサを協調してデバッグ動作させるシステムＬＳＩにおいて、デバッグを容易にすることを可能とする。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例に係るシステムＬＳＩを示す概念図である。
【図２】本発明の実施例に係るシステムＬＳＩとデバッガを示すブロック図である。
【図３】本発明の実施例に係るクロックコントローラを示すブロック図である。
【図４】本発明の実施例に係るデバッグ方法の手順を示すフローチャートである。
【図５】本発明の実施例に係るシステムＬＳＩに含まれるプロセッサが実行する命令列を示す概念図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施例について図面を参照して説明する。
【実施例】
【００１２】
図１は、本発明の実施例に係るシステムＬＳＩの概念図である。図１に示すように、本発明の実施例に係るシステムＬＳＩは、デバッグモジュール１０と、複数のプロセッサ２０ａ、２０ｂ、２０ｃと、命令保持手段３０ａ、３０ｂ、３０ｃと、クロックコントローラ４０を備える。デバッグモジュール１０は、プロセッサ動作制御手段５０と、命令列管理手段６０と、クロック制御手段７０とから構成される。本実施例では、プロセッサを３個（プロセッサ２０ａ、２０ｂ、２０ｃ）備えたシステムＬＳＩについて説明するが、３個に限定されず、２個以上であればよい。
【００１３】
プロセッサ２０ａ、２０ｂ、２０ｃは、通常動作状態又はデバッグ動作状態で動作する。通常動作状態では、プロセッサ２０ａ、２０ｂ、２０ｃは通常動作状態で実行する命令列（以下、「通常動作命令列」と称する。）を格納するメモリ（図示せず）から供給される通常動作命令列を実行する。デバッグ動作状態では、プロセッサ２０ａ、２０ｂ、２０ｃはデバッグ動作状態で実行する命令列（以下、「デバッグ動作命令列」と称する。）を格納する命令列保持手段３０ａ、３０ｂ、３０ｃから供給されるデバッグ動作命令列を実行する。
【００１４】
また、プロセッサ２０ａ、２０ｂ、２０ｃは、後述するクロックコントローラ４０からクロックパルスが入力しているときは命令列を処理する動作を行い（以下、「動作状態」と称する）、クロックパルスが入力しないときは命令列を処理する動作を行わない（以下「停止状態」と称する）。
【００１５】
命令列保持手段３０ａ、３０ｂ、３０ｃは、プロセッサ２０ａ、２０ｂ、２０ｃ毎に備えられている。命令列保持手段３０ａ、３０ｂ、３０ｃは、命令列管理手段６０から供給されるデバッグ動作命令列を格納し、プロセッサ２０ａ、２０ｂ、２０ｃがデバッグ動作状態にあるときに、対応するプロセッサ２０ａ、２０ｂ、２０ｃにデバッグ動作命令列を供給する。ここで、「対応する」とは、各プロセッサと、プロセッサ毎に設けられた命令列保持手段の関係を意味する。例えば、プロセッサ２０ａに実行させるデバッグ動作命令列は、プロセッサ２０ａに対応する命令保持手段３０ａに供給する。また、本実施例では、命令列保持手段３０ａ、３０ｂ、３０ｃは対応するプロセッサ毎に隣接して設けられているが、すべての命令列保持手段３０ａ、３０ｂ、３０ｃをデバッグモジュール１０内に備える構成としてもよい。
【００１６】
デバッグモジュール１０は、複数のプロセッサ２０ａ、２０ｂ、２０ｃの動作状態を通常動作状態とデバッグ動作状態とに切り替えるプロセッサ動作制御手段５０を備える。通常動作状態のプロセッサ２０ａ、２０ｂ、２０ｃに対して、プロセッサ動作制御手段５０がデバッグ動作状態に遷移させる信号（以下、「デバッグ割り込み要求」と称する）を出力すると、プロセッサ２０ａ、２０ｂ、２０ｃは、デバッグ割り込み信号が入力する直前の動作状態を保存する。ここで保存される動作状態とは、通常動作状態に実行していた処理命令や、実行した命令による結果などを指す。
【００１７】
デバッグモジュール１０は、デバッグ動作状態においてプロセッサ２０ａ、２０ｂ、２０ｃに実行させるデバッグ動作命令列を供給する命令列管理手段６０を備える。命令列管理手段６０は、各プロセッサ２０ａ、２０ｂ、２０ｃに実行させるデバッグ動作命令列を、各プロセッサ２０ａ、２０ｂ、２０ｃに対応する命令列保持手段３０ａ、３０ｂ、３０ｃに供給する。
【００１８】
また、デバッグモジュール１０は、プロセッサ２０ａ、２０ｂ、２０ｃに供給するクロックパルスの供給を制御するクロック制御手段７０を備える。クロック制御手段７０は、複数のプロセッサ２０ａ、２０ｂ、２０ｃに対するクロックパルスの供給を停止することにより、複数のプロセッサ２０ａ、２０ｂ、２０ｃを停止させ初期状態を設定する。また、複数のプロセッサ２０ａ、２０ｂ、２０ｃに対するクロックパルスの供給を開始することにより、複数のプロセッサ２０ａ、２０ｂ、２０ｃにクロックパルスに同期して命令列を実行させる。クロックパルスの供給の制御は、例えば、クロックコントローラ４０を介して行う。
【００１９】
次に、本発明の実施例に係るシステムＬＳＩの具体的な構成について、図２を参照して説明する。図２は、本発明の実施例に係るシステムＬＳＩとデバッガを示すブロック図である。
【００２０】
システムＬＳＩは、３つのプロセッサ２０ａ、２０ｂ、２０ｃを備え、プロセッサ２０ａ、２０ｂ、２０ｃは、グローバルパス８０に接続されている。また、プロセッサ２０ａ、２０ｂ、２０ｃは、デバッグバス９０により、それぞれデバッグモジュール１０内のプロセッサ動作制御部１５０に接続されている。プロセッサ動作制御部１５０は、デバッグバス９０により接続されたプロセッサ２０ａ、２０ｂ、２０ｃの動作状態を通常動作状態とデバッグ動作状態とに切り替える。また、プロセッサ２０ａ、２０ｂ、２０ｃは、クロックコントローラ４０からクロックパルスが入力しているときは動作状態となり、クロックパルスが入力しないときは停止状態となる。
【００２１】
プロセッサ２０ａ、２０ｂ、２０ｃは、各々に、命令列を格納するメモリ（図示せず）から命令を読み出すＩＦＵ２１と、ＩＦＵ２１から供給される通常動作命令列と後述する命令バッファ１３０から供給されるデバッグ動作命令列の一方を選択し、デコーダ２３に供給する切替制御レジスタ２２と、切替制御レジスタ２２から供給される命令列をデコードするＤＣＵ２３と、ＤＣＵ２３によりデコードされた命令列を実行するＥＸＵ２４とを有する。プロセッサ２０ａ、２０ｂ、２０ｃは、通常動作状態では切替制御レジスタ２２によりＩＦＵ２１から供給される通常動作命令列を選択されることにより、ＥＸＵ２４に通常動作命令列を実行させる。一方、デバッグ動作状態では切替制御レジスタ２２により命令バッファ１３０から供給されるデバッグ動作命令列を選択されることにより、ＥＸＵ２４にデバッグ動作命令列を実行させる。ＩＦＵ２１、ＤＣＵ２３、ＥＸＵ２４はプロセッサのパイプラインを構成する。
【００２２】
命令列バッファ１３０ａ、１３０ｂ、１３０ｃは、プロセッサ２０ａ、２０ｂ、２０ｃ毎に備えられている。命令バッファ１３０ａ、１３０ｂ、１３０ｃは、命令列管理部１６０から供給されるデバッグ動作命令列を格納し、プロセッサ２０ａ、２０ｂ、２０ｃがデバッグ動作状態にあるときに、対応するプロセッサ２０ａ、２０ｂ、２０ｃにデバッグ動作命令列を供給する。ここで、「対応する」とは、各プロセッサと、プロセッサ毎に設けられた命令バッファの関係を意味する。また、本実施例では、命令バッファ１３０ａ、１３０ｂ、１３０ｃは対応するプロセッサ２０ａ、２０ｂ、２０ｃ毎に隣接して設けているが、例えば、すべての命令バッファ１３０ａ、１３０ｂ、１３０ｃをデバッグモジュール１０内に備える構成としてもよい。
【００２３】
プロセッサ動作制御部１５０は、複数のプロセッサ２０ａ、２０ｂ、２０ｃの動作状態を通常動作状態とデバッグ動作状態とに切り替える。通常動作状態のプロセッサ２０ａ、２０ｂ、２０ｃに対して、プロセッサ制御部１５０がデバッグ動作状態に遷移させる信号（以下、「デバッグ割り込み要求」と称する）を出力すると、プロセッサ２０ａ、２０ｂ、２０ｃは、デバッグ割り込み信号が入力する直前の動作状態を保存する。ここで保存される動作状態とは、通常動作状態に実行していた処理命令や、実行した命令による結果などを指す。
【００２４】
命令列管理部１６０は、プロセッサ２０ａ、２０ｂ、２０ｃがデバッグ動作中に実行するデバッグ動作命令列を管理し、各プロセッサ２０ａ、２０ｂ、２０ｃに実行させるデバッグ動作命令列を各プロセッサ２０ａ、２０ｂ、２０ｃに対応する命令バッファに供給する。
【００２５】
クロック制御部１７０は、例えば、クロックコントローラ４０を介して、プロセッサ２０ａ、２０ｂ、２０ｃに供給するクロックパルスの供給を制御することにより、複数のプロセッサ２０ａ、２０ｂ、２０ｃの動作状態を停止状態と動作状態とに切り替える。なお、本実施例では、クロック制御部１７０とクロックコントローラ４０は別々に設けられているが、クロック制御部１７０とクロックコントローラ４０は一体となって構成されてもよい。
【００２６】
さらに、デバッグモジュール１０は、システムＬＳＩの外部のデバッガ１００と接続可能であり、デバッガ１００を操作することによりシステムＬＳＩのデバッグすることができる。
【００２７】
図３に、クロックコントローラ４０の構成例を示す。クロックコントローラ４０は、プロセッサ毎に論理回路ＡＮＤ４１と、レジスタ４２と、ラッチ回路４３を備える。論理回路ＡＮＤ４１には、クロック源１１０からのクロックパルスと、ラッチ回路４３からの出力信号とが入力する。ラッチ回路４３には、クロック源１０からのクロックパルスと、レジスタ４２からの出力信号とが入力する。レジスタ４２にはクロック制御部１７０からの信号が入力する。クロック制御部１７０から出力される信号がオン信号「１」である場合、レジスタ４２とラッチ回路４３を介してオン信号「１」が論理回路ＡＮＤ４１に入力する。このとき、論理回路ＡＮＤ４１は、プロセッサ２０ａ、２０ｂ、２０ｃに対してクロックパルスを出力する。一方、クロック制御部１７０から出力される信号がオフ信号「０」である場合、レジスタ４２とラッチ回路４３を介してオフ信号「０」が論理回路ＡＮＤ４１に入力する。このとき、論理回路ＡＮＤ４１は、プロセッサ２０ａ、２０ｂ、２０ｃに対してクロックパルスを出力しない。プロセッサ２０ａ、２０ｂ、２０ｃは、クロックコントローラから供給されるクロックパルスに同期して動作しており、供給が停止するとプロセッサ２０ａ、２０ｂ、２０ｃは直ちに動作を停止してそのときの状態を保持し、供給が再開するとプロセッサは直ちに動作を再開する。クロックコントローラ４０からのクロックパルスの供給は全てのプロセッサ２０ａ、２０ｂ、２０ｃに同時に同位相で行うことができ、プロセッサ２０ａ、２０ｂ、２０ｃ毎に供給と停止を切り替えることができる。これにより、クロック制御部１７０は、クロックコントローラ４０を介して、プロセッサ２０ａ、２０ｂ、２０ｃにクロックパルスを入力する場合にはプロセッサ２０ａ、２０ｂ、２０ｃを動作状態にし、プロセッサ２０ａ、２０ｂ、２０ｃにクロックパルスを入力しない場合にはプロセッサ２０ａ、２０ｂ、２０ｃを停止状態にすることができる。
【００２８】
次に、本実施例に係るシステムＬＳＩの動作について図４を参照して説明する。図４は、本実施例に係るシステムＬＳＩの動作のフローチャートである。
【００２９】
まず、プロセッサ２０ａ、２０ｂ、２０ｃが通常動作状態にある場合を想定する。プロセッサ２０ａ、２０ｂ、２０ｃが通常動作状態にあるとき、プロセッサ２０ａ、２０ｂ、２０ｃは、切り替え制御レジスタ２２がＩＦＵ２１から供給される通常動作命令列を選択し、ＤＣＵ２３に供給し、ＤＣＵ２３によりデコードされ通常動作命令列をＥＸＵ２４が実行している。通常動作状態から、以下に示す手順によりデバッグを行う。
【００３０】
まず、デバッグ動作状態切替工程ｓｔｅｐ１では、デバッグモジュール１０は、プロセッサ動作制御部１５０によりデバッグ対象プロセッサにデバッグ割り込み要求を行う。デバッグ要求を受けたプロセッサは、デバッグ割り込み要求が入力する直前の動作状態を保存する。デバッグ対象外のプロセッサは動作状態とするか、停止状態とするかはクロック制御部１７０により設定する。本実施例の説明では、プロセッサ２０ａ、２０ｂ、２０ｃがすべてデバッグ対象プロセッサである場合について説明する。
【００３１】
次に、クロック供給停止工程ｓｔｅｐ２では、デバッグモジュール１０は、クロック制御部１７０によりプロセッサ２０ａ、２０ｂ、２０ｃへのクロックパルスの供給を停止する。これにより、プロセッサ２０ａ、２０ｂ、２０ｃは直ちに動作を停止する。これにより、すべてのプロセッサ２０ａ、２０ｂ、２０ｃが命令列を実行していない初期状態が設定される。
【００３２】
次に、デバッグ動作命令列セット工程ｓｔｅｐ３では、デバッグモジュール１０は、命令列管理部１６０により、各プロセッサ２０ａ、２０ｂ、２０ｃに実行させるデバッグ動作命令列を各プロセッサ２０ａ、２０ｂ、２０ｃに対応する命令バッファ１３０ａ、１３０ｂ、１３０ｃに供給する。命令バッファ１３０ａ、１３０ｂ、１３０ｃは、このデバッグ動作命令列を格納する。
【００３３】
次に、デバッグ動作命令列供給工程ｓｔｅｐ４では、命令バッファ１３０ａ、１３０ｂ、１３０ｃが、格納しているデバッグ動作命令列を対応するプロセッサ２０ａ、２０ｂ、２０ｃに供給する。命令バッファ１３０ａ、１３０ｂ、１３０ｃからデバッグ動作命令列をプロセッサ２０ａ、２０ｂ、２０ｃに供給するには、プロセッサ２０ａ、２０ｂ、２０ｃは、切り替え制御レジスタ２２が命令バッファ１３０から供給されるデバッグ動作命令列を選択し、ＤＣＵ２３に供給し、ＤＣＵ２３によりデコードされた通常動作命令列をＥＸＵ２４に供給する。このとき、プロセッサ２０ａ、２０ｂ、２０ｃは停止状態であるので、供給されたデバッグ動作命令列を実行しない。
【００３４】
次に、クロック供給開始工程ｓｔｅｐ５では、デバッグモジュール１０は、クロック制御部１７０によりプロセッサ２０ａ、２０ｂ、２０ｃへのクロックパルスの供給を開始する。これにより、プロセッサ２０ａ、２０ｂ、２０ｃは直ちに動作を開始する。これにより、すべてのプロセッサ２０ａ、２０ｂ、２０ｃがクロックパルスに同期してデバッグ動作命令列を実行し始める。
【００３５】
次に、プロセッサ実行停止工程ｓｔｅｐ６では、デバッグ動作命令列の実行を終了した
プロセッサ２０ａ、２０ｂ、２０ｃを停止させる。デバッグ動作命令列の実行を終了した
プロセッサ２０ａ、２０ｂ、２０ｃを停止させる方法としては、例えば、デバッグ動作命令列を実行する分だけのクロックパルスをプロセッサ２０ａ、２０ｂ、２０ｃに供給する方法がある。例えば、プロセッサ２０ａ、２０ｂ、２０ｃが１クロックで１命令を実行する場合、命令列の数だけのクロックをプロセッサ２０ａ、２０ｂ、２０ｃに供給することにより、プロセッサ２０ａ、２０ｂ、２０ｃはデバッグ動作命令列を実行終了後、直ちに実行を停止する。また、例えば、デバッグ動作命令列の最後の命令にデバッグを終了する命令を加えることにより、デバッグ動作命令列を実行終了後、直ちに実行を停止させることも可能である。
【００３６】
次に、デバッグ動作状態から、通常動作状態に遷移させるために、まず、通常動作命令列供給工程ｓｔｅｐ７では、プロセッサ２０ａ、２０ｂ、２０ｃに供給する命令列を通常動作命令列に切り替える。プロセッサ２０ａ、２０ｂ、２０ｃに供給する命令列を通常動作命令列に切り替えるには、プロセッサ２０ａ、２０ｂ、２０ｃは、切替制御レジスタ２２によりＩＦＵ２１から供給される通常動作命令列を選択することにより、ＥＸＵ２４に通常動作命令列を供給する。このとき、プロセッサ２０ａ、２０ｂ、２０ｃは停止状態であるので、供給された通常動作命令列を実行しない。
【００３７】
次に、クロックパルス供給工程ｓｔｅｐ８では、デバッグモジュール１０は、クロック制御部１７０によりプロセッサ２０ａ、２０ｂ、２０ｃへのクロックパルスの供給を開始する。これにより、プロセッサ２０ａ、２０ｂ、２０ｃは通常動作命令列の実行を開始させる。
【００３８】
以上の実施例による効果について図５を参照して説明する。図５は、プロセッサ２０ａ、２０ｂ、２０ｃが実行する命令列の模式図である。図５において、縦方向に並んだ命令（例えば、Ｃｏｄｅ１ａ、Ｃｏｄｅ２ａ、Ｃｏｄｅ３ａ）は各プロセッサが実行する命令列を模式的に示したものである。横方向に並んだ命令（例えば、Ｃｏｄｅ２ａ、Ｃｏｄｅ２ｂ、Ｃｏｄｅ２ｃ）はプロセッサが同期して（同じクロックパルスで）実行する命令を模式的に示したものである。
【００３９】
複数のプロセッサが協調してアプリケーションプログラムを実行するようなシステムＬＳＩでは、複数のプロセッサを協調してデバッグ動作させることが求められる。図５に示すように、プロセッサ２０ａ、２０ｂ、２０ｃがそれぞれＣｏｄｅ２ａ、Ｃｏｄｅ２ｂ、Ｃｏｄｅ２ｃを同時に実行する動作についてデバッグしたい場合には、プロセッサ２０ａ、２０ｂ、２０ｃがそれぞれＣｏｄｅ２ａ、Ｃｏｄｅ２ｂ、Ｃｏｄｅ２ｃを同時に実行しなければならない。例えば、Ｃｏｄｅ２ａ、Ｃｏｄｅ２ｂ、Ｃｏｄｅ２ｃの命令が、プロセッサＣｏｄｅ２ａ、Ｃｏｄｅ２ｂ、Ｃｏｄｅ２ｃが競合してシステム中のレジスタへアクセスする命令であり、この命令がエラーなく実行されるか確認したい場合には、プロセッサ２０ａ、２０ｂ、２０ｃは同時にそれぞれＣｏｄｅ２ａ、Ｃｏｄｅ２ｂ、Ｃｏｄｅ２ｃを実行しなければならない。従来、複数のプロセッサ２０ａ、２０ｂ、２０ｃが同時に所望の命令を実行する技術がなかったため、上記のようなデバッグをすることは困難であった。
【００４０】
本実施例では、デバッグ動作において、まず、複数のプロセッサ２０ａ、２０ｂ、２０ｃへのクロックパルスの供給を停止し、プロセッサ２０ａ、２０ｂ、２０ｃを停止状態とした上で、命令バッファに命令列を供給し、次いで、この命令列をプロセッサに供給した上で、プロセッサ２０ａ、２０ｂ、２０ｃを動作状態とするという工程をとることで、プロセッサ２０ａ、２０ｂ、２０ｃが同時に命令列の実行を開始し、その後クロックと同期して命令列を実行していくため、複数のプロセッサ２０ａ、２０ｂ、２０ｃが同時に所望の命令を実行させることが可能となる。これにより、複数のプロセッサを協調してデバッグ動作させるシステムＬＳＩにおいて、複数のプロセッサをクロックレベルの精度で同期してデバッグ動作させることが可能となり、デバッグを容易にすることが可能となる。
【００４１】
なお、前述した各実施例は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更／改良されうると共に、本発明にはその等価物も含まれる。
【符号の説明】
【００４２】
１  システムＬＳＩ
１０  デバッグモジュール
２０ａ、２０ｂ、２０ｃ  プロセッサ
２１  ＩＦＵ
２２  切替制御部レジスタ
２３  ＤＣＵ
２４  ＥＸＵ
３０ａ、３０ｂ、３０ｃ  命令列保持手段
４０  クロックコントローラ
４１  論理回路ＡＮＤ
４２  レジスタ
４３  ラッチ回路
５０  プロセッサ動作制御手段
６０  命令列管理手段
７０  クロック制御手段
８０  グローバルバス
９０  デバッグバス
１００  デバッガ
１１０  クロック源
１３０ａ、１３０ｂ、１３０ｃ  命令バッファ
１５０  プロセッサ動作制御部
１６０  命令列管理部
１７０  クロック制御部
【図１】
2010211741.tif 000003
【図２】
2010211741.tif 000004
【図３】
2010211741.tif 000005
【図４】
2010211741.tif 000006
【図５】
2010211741.tif 000007