(57)【要約】【課題】複数のプロセッサを有するマルチプロセッサ装置に関し、複数のプロセッサが一時的に実行を停止したプログラム（デバッグ対象プログラム、アプリケーション・プログラム等）の同時実行再開を容易に行うことができるようにする。【解決手段】プロセッサ１２−ｉは、デバッグ対象プログラム１３−ｉを実行する場合にはレジスタ１６−ｉに“０”を書き込み、デバッグ制御プログラム１４−ｉの実行が終了した場合にはレジスタ１６−ｉに“１”を書き込む。停止フラグ１９は、レジスタ１６−０〜１６−２の全てが“０”又は“１”の場合には“０”を表示してデバッグ対象プログラム１３−０〜１３−２の実行を許可し、レジスタ１６−０〜１６−２の一部が“１”の場合には“１”を表示してデバッグ対象プログラム１３−０〜１３−２の実行を禁止する。【選択図】          図１
2006079142.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを有するマルチプロセッサ装置であって、
前記複数のプロセッサの中の選択された複数のプロセッサのステータス情報を保持するステータス情報保持装置を有し、
前記ステータス情報保持装置が保持するステータス情報に基づいて、前記選択された複数のプロセッサが一時的に実行を停止したプログラムの同時実行再開を行うことができるようにされていることを特徴とするマルチプロセッサ装置。
【請求項２】
前記ステータス情報保持装置は、前記選択された複数のプロセッサのステータス情報から、前記選択された複数のプロセッサが一時的に停止したプログラムの実行再開の許否を表示する表示手段を有し、
前記選択された複数のプロセッサは、前記表示手段の表示内容に従って、前記一時的に停止したプログラムの実行再開を行うことを特徴とする請求項１記載のマルチプロセッサ装置。
【請求項３】
前記一時的に実行を停止したプログラムは、デバッグ対象プログラムであることを特徴とする請求項１又は２記載のマルチプロセッサ装置。
【請求項４】
前記一時的に実行を停止したプログラムは、アプリケーション・プログラムであることを特徴とする請求項１又は２記載のマルチプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを有するマルチプロセッサ装置に関する。具体的には、マルチプロセッサ装置内の複数のプロセッサが一時的に実行を停止したプログラム（デバッグ対象プログラム、アプリケーション・プログラム等）の同時実行再開技術に関する。
【背景技術】
【０００２】
図５はデバッグ装置の動作を説明するための図である。図１中、１はデバッグ装置、２はプロセッサ、３はプロセッサ２用のデバッグ対象プログラム、４はプロセッサ２用のデバッグ制御プログラムである。デバッグ装置１は、プロセッサ２がデバッグ対象プログラム３を実行してブレークポイントに達すると、実行プログラムをデバッグ対象プログラム３からデバッグ制御プログラム４にジャンプさせ、デバッグ制御プログラム４によりプロセッサ２のレジスタやメモリの内容等を調査し、その後、プロセッサ２にデバッグ対象プログラム３の実行を再開させる。
【０００３】
図６は従来のマルチプロセッサ装置の一例をデバッグ装置とともに示す図である。５は従来のマルチプロセッサ装置の一例、６はデバッグ装置である。また、マルチプロセッサ装置５において、７−ｉ（但し、ｉ＝０、１、２である。以下、同様。）はプロセッサ、８−ｉはプロセッサ７−ｉ用のデバッグ対象プログラム、９−ｉはプロセッサ７−ｉ用のデバッグ制御プログラムである。図６に示す従来のマルチプロセッサ装置５においては、デバッグ装置６は、デバッグ対象プログラム８−０〜８−２の各々を独立にデバッグすることになる。
【特許文献１】特開平６−３３２７４７号公報
【特許文献２】特開平５−３１３９４６号公報
【特許文献３】特開平３−１５９４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
図６に示す従来のマルチプロセッサ装置５においては、デバッグ対象プログラム８−０〜８−２間に連携がある場合、異なるタイミングでデバッグ制御プログラム９−０〜９−２を実行させた場合であっても、その後、デバッグ対象プログラム８−０〜８−２の実行再開を同時に行うことが必要となる場合がある。例えば、或るタイミングでデバッグ対象プログラム８−０〜８−２の実行再開を同時に行わないと、或るバグが再現できないというようなタイミング・クリティカルな問題が発生した場合等である。
【０００５】
しかしながら、図６に示す従来のマルチプロセッサ装置５においては、デバッグ装置６は、デバッグ対象プログラム８−０〜８−２の各々を独立にデバッグせざるを得ないので、デバッグ対象プログラム８−０〜８−２の実行再開を行うためには、デバッグ対象プログラム８−０〜８−２の実行再開指令をプロセッサ７−０〜７−２に対して順に行わざるを得ない。このため、デバッグ対象プログラム８−０〜８−２の同時実行再開が必要な場合であっても、開始タイミングに時間差が発生してしまうという問題点があった。
【０００６】
また、プロセッサ７−０、７−１、７−２でそれぞれアプリケーション・プログラムＡ０、Ａ１、Ａ２を実行させる場合において、或るタイミングで、プロセッサ７−０、７−１、７−２におけるアプリケーション・プログラムＡ０、Ａ１、Ａ２の実行を揃えたいという場合がある。例えば、マルチタスク処理でタスクを切り換える場合において、切り換えたタスクを同時に実行開始させたいというような場合である。
【０００７】
この場合、アプリケーション・プログラムＡ０〜Ａ２の各々を適当なタイミングで一時的に停止させた後、適当なタイミングでアプリケーション・プログラムＡ０〜Ａ２を同時実行再開させる必要がある。しかしながら、従来、マルチプロセッサ装置において、複数のプロセッサが実行する複数のアプリケーション・プログラムを時間差がないように揃える技術は提案されていない。
【０００８】
本発明は、かかる点に鑑み、複数のプロセッサが一時的に実行を停止したプログラムの同時実行再開を容易に行うことができるようにしたマルチプロセッサ装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、複数のプロセッサを有するマルチプロセッサ装置であって、前記複数のプロセッサの中の選択された複数のプロセッサのステータス情報を保持するステータス情報保持装置を有し、前記ステータス情報保持装置が保持するステータス情報に基づいて、前記選択された複数のプロセッサが一時的に実行を停止したプログラムの同時実行再開を行うことができるようにされているというものである。
【発明の効果】
【００１０】
本発明によれば、ステータス情報保持装置が保持するステータス情報に基づいて、選択された複数のプロセッサが一時的に実行を停止したプログラムの同時実行再開を行うことができるようにされている。したがって、選択された複数のプロセッサが一時的に実行を停止したプログラムの同時実行再開を容易に行わせることができる。
【発明を実施するための最良の形態】
【００１１】
（第１実施形態・・図１、図２）
図１は本発明の第１実施形態のマルチプロセッサ装置をデバッグ装置とともに示す図である。図１中、１０は本発明の第１実施形態のマルチプロセッサ装置、１１はデバッグ装置である。本発明の第１実施形態のマルチプロセッサ装置１０は、その要部を概念的に示している。
【００１２】
本発明の第１実施形態のマルチプロセッサ装置１０において、１２−ｉはプロセッサ、１３−ｉはプロセッサ１２−ｉ用のデバッグ対象プログラム、１４−ｉはプロセッサ１２−ｉ用のデバッグ制御プログラム、１５はデバッグ実行制御用のステータス情報保持装置である。
【００１３】
ステータス情報保持装置１５において、１６−ｉはプロセッサ１２−ｉのステータス情報を保持するステータス情報保持レジスタであり、プロセッサ１２−ｉは、デバッグ対象プログラム１３−ｉを実行する場合（通常動作を行う場合）には、ステータス情報保持レジスタ１６−ｉに“０”を書き込み、デバッグ制御プログラム１４−ｉの実行が終了した場合には、ステータス情報保持レジスタ１６−ｉに“１”を書き込む。
【００１４】
１７−ｉはステータス情報保持レジスタ１６−ｉを有効とするか否かを設定することにより、プロセッサ１２−ｉをデバッグ対象プログラム同時実行再開制御対象プロセッサとするか否かを設定する設定レジスタである。
【００１５】
デバッグ装置１１は、ステータス情報保持レジスタ１６−ｉを有効とする場合（プロセッサ１２−ｉをデバッグ対象プログラム同時実行再開制御対象プロセッサとする場合）には設定レジスタ１７−ｉに “１”を書き込み、ステータス情報保持レジスタ１６−ｉを無効とする場合（プロセッサ１２−ｉをデバッグ対象プログラム同時実行再開制御対象プロセッサとしない場合）には設定レジスタ１７−ｉに “０”を書き込む。
【００１６】
なお、本実施形態では、ステータス情報保持レジスタ１６−０〜１６−２の中の２個又は３個のステータス情報保持レジスタが有効とされる。即ち、プロセッサ１２−０〜１２−２のうち、２個又は３個のプロセッサがデバッグ対象プログラム同時実行再開制御対象プロセッサとされる。
【００１７】
１８はステータス情報保持レジスタ１６−０〜１６−２のうち、有効とされたステータス情報保持レジスタの値のみを入力し、有効とされたステータス情報保持レジスタの全てが“０”又は“１”の場合には“０”を出力し、有効とされたステータス情報保持レジスタの一部が“１”の場合には“１”を出力する演算部、１９は演算部１８の出力値を更新的に保持する停止フラグである。
【００１８】
ここに、停止フラグ１９の値＝“０”は、デバッグ対象プログラム同時実行再開制御対象プロセッサに対して、デバッグ対象プログラムの実行の許可を表示しており、停止フラグ１９の値＝“１”は、デバッグ対象プログラムの実行の禁止を表示している。なお、デバッグ制御プログラム１４−０〜１４−２については、停止フラグ１９の値に関わらず、これを実行するとされている。
【００１９】
図２は本発明の第１実施形態のマルチプロセッサ装置１０の動作例を示すタイムチャートであり、プロセッサ１２−０〜１２−２のステータス及び停止フラグ１９の値を示している。なお、本動作例は、設定レジスタ１７−０〜１７−２に“１”が書き込まれた場合（プロセッサ１２−０〜１２−２の全てがデバッグ対象プログラム同時実行再開制御対象プロセッサとされた場合）を例にしている。
【００２０】
本動作例では、プロセッサ１２−０〜１２−２は、時刻Ｔ１では、デバッグ対象プログラム１３−０〜１３−２を実行しており、ステータス情報保持レジスタ１６−０〜１６−２の値＝“０”、停止フラグ１９の値＝“０”とされている。
【００２１】
その後、時刻Ｔ２、Ｔ３、Ｔ４で、プロセッサ１２−０、１２−１、１２−２は、それぞれブレークポイントに達し、デバッグ制御プログラム１４−０、１４−１、１４−２の実行を開始している。この状態では、ステータス情報保持レジスタ１６−０〜１６−２の値＝“０”、停止フラグ１９の値＝“０”が維持される。
【００２２】
その後、時刻Ｔ５で、プロセッサ１２−０はデバッグ制御プログラム１４−０の実行を終了している。この場合、プロセッサ１２−０は、ステータス情報保持レジスタ１６−０の値を“１”にし、この結果、停止フラグ１９の値は“１”となる。ここに、プロセッサ１２−０は、デバッグ対象プログラム１３−０の実行（通常動作）を再開しようとするが、停止フラグ１９の値＝“１”であるから、デバッグ対象プログラム１３−０の実行再開を保留することになる。
【００２３】
その後、時刻Ｔ６で、プロセッサ１２−１はデバッグ制御プログラム１４−１の実行を終了している。この場合、プロセッサ１２−１は、ステータス情報保持レジスタ１６−１の値を“１”にし、停止フラグ１９の値は“１”が維持される。ここに、プロセッサ１２−１は、デバッグ対象プログラム１３−１の実行（通常動作）を再開しようとするが、停止フラグ１９の値＝“１”であるから、デバッグ対象プログラム１３−１の実行再開を保留することになる。
【００２４】
その後、時刻Ｔ７で、プロセッサ１２−２はデバッグ制御プログラム１４−２の実行を終了している。この場合、プロセッサ１２−２は、ステータス情報保持レジスタ１６−２の値を“１”にし、停止フラグ１９の値は“０”となる。この結果、プロセッサ１２−０〜１２−２は、停止フラグ１９の値“０”を確認し、時刻Ｔ８で、デバッグ対象プログラム１３−０〜１３−２の実行（通常動作）再開を同時に行うことになる。
【００２５】
以上のように、本発明の第１実施形態のマルチプロセッサ装置１０によれば、ステータス情報保持装置１５が備える停止フラグ１９の値に基づいて、複数のデバッグ対象プログラム同時実行再開制御対象プロセッサが一時的に実行を停止したデバッグ対象プログラムの実行再開を行うことができるようにされているので、複数のデバッグ対象プログラム同時実行再開制御対象プロセッサが一時的に実行を停止したデバッグ対象プログラムの同時実行再開を１サイクルの誤差もなく容易に行うことができる。
【００２６】
（第２実施形態・・図３、図４）
図３は本発明の第２実施形態のマルチプロセッサ装置をプログラム実行制御装置とともに示す図である。図３中、２０は本発明の第２実施形態のマルチプロセッサ装置、２１はプログラム実行制御装置である。本発明の第２実施形態のマルチプロセッサ装置２０は、その要部を概念的に示している。
【００２７】
本発明の第２実施形態のマルチプロセッサ装置２０において、２２−ｉはプロセッサ、２３−ｉはプロセッサ２２−ｉ用のアプリケーション・プログラム、２４−ｉはプロセッサ２２−ｉ用のＯＳ（オペレーティング・システム）、２５はアプリケーション・プログラム実行制御用のステータス情報保持装置である。
【００２８】
ステータス情報保持装置２５において、２６−ｉはプロセッサ２２−ｉのステータス情報を保持するステータス情報保持レジスタであり、プロセッサ２２−ｉは、アプリケーション・プログラム２３−ｉを実行する場合（通常動作を行う場合）には、ステータス情報保持レジスタ２６−ｉに“０”を書き込み、ＯＳ２４−ｉの実行が終了した場合には、ステータス情報保持レジスタ２６−ｉに“１”を書き込む。
【００２９】
２７−ｉはステータス情報保持レジスタ２６−ｉを有効とするか否かを設定することにより、プロセッサ２２−ｉをアプリケーション・プログラム同時実行再開制御対象プロセッサとするか否かを設定する設定レジスタである。
【００３０】
プログラム実行制御装置２１は、ステータス情報保持レジスタ２６−ｉを有効とする場合（プロセッサ２２−ｉをアプリケーション・プログラム同時実行再開制御対象プロセッサとする場合）には設定レジスタ２７−ｉに “１”を書き込み、ステータス情報保持レジスタ２６−ｉを無効とする場合（プロセッサ２２−ｉをアプリケーション・プログラム同時実行再開制御対象プロセッサとしない場合）には設定レジスタ２７−ｉに “０”を書き込む。
【００３１】
なお、本実施形態では、ステータス情報保持レジスタ２６−０〜２６−２の中の２個又は３個のステータス情報保持レジスタが有効とされる。即ち、プロセッサ２２−０〜２２−２のうち、２個又は３個のプロセッサがアプリケーション・プログラム同時実行再開制御対象プロセッサとされる。
【００３２】
２８はステータス情報保持レジスタ２６−０〜２６−２のうち、有効とされたステータス情報保持レジスタの値のみを入力し、有効とされたステータス情報保持レジスタの全てが“０”又は“１”の場合には“０”を出力し、有効とされたステータス情報保持レジスタの一部が“１”の場合には“１”を出力する演算部、２９は演算部２８の出力値を更新的に保持する停止フラグである。
【００３３】
ここに、停止フラグ２９の値＝“０”は、アプリケーション・プログラム同時実行再開制御対象プロセッサに対して、アプリケーション・プログラムの実行の許可を表示しており、停止フラグ２９の値＝“１”は、アプリケーション・プログラムの実行の禁止を表示している。なお、ＯＳ２４−０〜２４−２については、停止フラグ２９の値に関わらず、これを実行するとされている。
【００３４】
図４は本発明の第２実施形態のマルチプロセッサ装置２０の動作例を示すタイムチャートであり、プロセッサ２２−０〜２２−２のステータス及び停止フラグ２９の値を示している。なお、本動作例は、設定レジスタ２７−０〜２７−２に“１”が書き込まれた場合（プロセッサ２２−０〜２２−２の全てがアプリケーション・プログラム同時実行再開制御対象プロセッサとされた場合）を例にしている。
【００３５】
本動作例では、プロセッサ２２−０〜２２−２は、時刻Ｔ１では、アプリケーション・プログラム２３−０〜２３−２を実行しており、ステータス情報保持レジスタ２６−０〜２６−２の値＝“０”、停止フラグ２９の値＝“０”とされている。
【００３６】
その後、時刻Ｔ２、Ｔ３、Ｔ４で、プロセッサ２２−０、２２−１、２２−２は、それぞれシステムコール／割り込みにより、ＯＳ２４−０、２４−１、２４−２の実行を開始している。この状態では、ステータス情報保持レジスタ２６−０〜２６−２の値＝“０”、停止フラグ２９の値＝“０”が維持される。
【００３７】
その後、時刻Ｔ５で、プロセッサ２２−０はＯＳ２４−０の実行を終了している。この場合、プロセッサ２２−０は、ステータス情報保持レジスタ２６−０の値を“１”にし、この結果、停止フラグ２９の値＝“１”となる。ここに、プロセッサ２２−０は、アプリケーション・プログラム２３−０の実行（通常動作）を再開しようとするが、停止フラグ２９の値は“１”であるから、アプリケーション・プログラム２３−０の実行再開を保留することになる。
【００３８】
その後、時刻Ｔ６で、プロセッサ２２−１はＯＳ２４−１の実行を終了している。この場合、プロセッサ２２−１は、ステータス情報保持レジスタ２６−１の値を“１”にし、停止フラグ２９の値は“１”が維持される。ここに、プロセッサ２２−１は、アプリケーション・プログラム２３−１の実行（通常動作）を再開しようとするが、停止フラグ２９の値＝“１”であるから、アプリケーション・プログラム２３−１の実行再開を保留することになる。
【００３９】
その後、時刻Ｔ７で、プロセッサ２２−２はＯＳ２４−２の実行を終了している。この場合、プロセッサ２２−２は、ステータス情報保持レジスタ２６−２の値を“１”にし、停止フラグ２９の値は“０”となる。この結果、プロセッサ２２−０〜２２−２は、停止フラグ２９の値“０”を確認し、時刻Ｔ８で、アプリケーション・プログラム２３−０〜２３−２の実行（通常動作）再開を同時に行うことになる。
【００４０】
以上のように、本発明の第２実施形態のマルチプロセッサ装置２０によれば、ステータス情報保持装置２５が備える停止フラグ２９の値に基づいて、複数のアプリケーション・プログラム同時実行再開制御対象プロセッサが一時的に実行を停止したアプリケーション・プログラムの実行再開を行うことができるようにされているので、複数のアプリケーション・プログラム同時実行再開制御対象プロセッサが一時的に実行を停止したアプリケーション・プログラムの同時実行再開を１サイクルの誤差もなく容易に行うことができる。
【００４１】
なお、図１に示す本発明の第１実施形態のマルチプロセッサ装置１０が備えるデバッグ実行制御用のステータス情報保持装置１５を本発明の第２実施形態のマルチプロセッサ装置が備えるアプリケーション・プログラム実行制御用のステータス情報保持装置２５として兼用することもできる。
【００４２】
ここで、特許文献１には、複数のプロセッサの中の一つをデバッグ制御専用として使用し、ユーザからのコマンド等により、他のプロセッサの停止、再開等を制御する技術が記載されているが、本発明は、複数のプロセッサとは別にステータス情報保持装置を設け、複数のプロセッサの通常動作には影響を与えず、デバッグ機能を実現するものであり、特許文献１に記載の技術とは構成、動作を全く異にするものである。
【００４３】
また、特許文献２には、デバッグのためにプロセッサを停止させたい時に、プロセッサに入力しているクロックを停止させる技術が記載されているが、本発明は、クロックを停止させることなく、ステータス情報保持装置の制御によりデバッグを行うものであり、特許文献２に記載の技術とは構成、動作を全く異にしている。
【００４４】
また、特許文献３には、デバッグ時、対象のプロセッサが独占的にバスを使用することにより、デバッグ中にプロセッサ間の共有情報を保持する技術が記載されているが、本発明は、バス動作でなく、プロセッサの働きを制御することによりデバッグを行うものであり、特許文献３に記載の技術とは構成、動作を全く異にしている。
【図面の簡単な説明】
【００４５】
【図１】本発明の第１実施形態のマルチプロセッサ装置をデバッグ装置とともに示す図である。
【図２】本発明の第１実施形態のマルチプロセッサ装置の動作例を示すタイムチャートである。
【図３】本発明の第２実施形態のマルチプロセッサ装置をプログラム実行制御装置とともに示す図である。
【図４】本発明の第２実施形態のマルチプロセッサ装置の動作例を示すタイムチャートである。
【図５】デバッグ装置の動作を説明するための図である。
【図６】従来のマルチプロセッサ装置の一例をデバッグ装置とともに示す図である。
【符号の説明】
【００４６】
１０…本発明の第１実施形態のマルチプロセッサ装置
１１…デバッグ装置
１２−０〜１２−２…プロセッサ
１３−０〜１３−２…デバッグ対象プログラム
１４−０〜１４−２…デバッグ制御プログラム
１５…ステータス情報保持装置
１６−０〜１６−２…ステータス情報保持レジスタ
１７−０〜１７−２…設定レジスタ
１８…演算部
１９…停止フラグ
２０…本発明の第２実施形態のマルチプロセッサ装置
２１…プログラム実行制御装置
２２−０〜２２−２…プロセッサ
２３−０〜２３−２…アプリケーション・プログラム
２４−０〜２４−２…ＯＳ
２５…ステータス情報保持装置
２６−０〜２６−２…ステータス情報保持レジスタ
２７−０〜２７−２…設定レジスタ
２８…演算部
２９…停止フラグ                                                   
【図１】
2006079142.tif 000003
【図２】
2006079142.tif 000004
【図３】
2006079142.tif 000005
【図４】
2006079142.tif 000006
【図５】
2006079142.tif 000007
【図６】
2006079142.tif 000008