(57)【要約】【課題】メモリ容量の少ないプロセッサであっても、このプロセッサで実行されるプログラムについて効果的な検査を行う。【解決手段】本発明の一態様に係るプログラム実行装置１は、第１プロセッサ５により実行され、所望の検査位置に配置されている検査要求コードが第１プロセッサ５によって実行された場合に、検査要求を第２プロセッサ２に発するとともに自身の実行を停止状態とし、検査要求に対する応答を受けるとこの応答に基づいて実行再開又は強制終了を選択的に行うターゲットプログラム３ａを記憶する第１記憶手段９と、第２プロセッサ２により実行され、第１プロセッサ５から検査要求が発生した場合に、検査要求とこの検査要求に対して実行される検査プログラムとの関連付け情報１０に基づいて、検査要求に対応する検査プログラムを実行し、第１プロセッサ５に対して応答を返すホストプログラム４ａを記憶する第２の記憶手段７とを具備する。【選択図】      図１
2009116547.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
第２のプロセッサと、
前記第１のプロセッサにより実行され、所望の検査位置に配置されている検査要求コードが前記第１のプロセッサによって実行された場合に、検査要求を前記第２のプロセッサに発するとともに自身の実行を停止状態とし、前記検査要求に対する応答を受けるとこの応答に基づいて実行再開又は強制終了を選択的に行うターゲットプログラムを記憶する第１の記憶手段と、
前記第２のプロセッサにより実行され、前記第１のプロセッサから前記検査要求が発生した場合に、前記検査要求とこの検査要求に対して実行される検査プログラムとの関連付け情報に基づいて、前記検査要求に対応する検査プログラムを実行し、前記ターゲットプログラムの実行を再開させるか又は強制終了させるかを選択的に示す前記応答を前記第１のプロセッサに対して返すホストプログラムを記憶する第２の記憶手段と
を具備するプログラム実行装置。
【請求項２】
請求項１記載のプログラム実行装置において、
前記検査プログラムは、前記第１のプロセッサの実行状態データを生成し、
前記第２のプロセッサは、前記実行状態データを第３の記憶手段に記憶する
ことを特徴とするプログラム実行装置。
【請求項３】
請求項１又は請求項２記載のプログラム実行装置において、
前記ターゲットプログラムは、アサーション記述を含むソースプログラムから前記アサーション記述を取り除いたプログラム本体に対して、前記アサーション記述の代わりにアサーション要求コードを組み込んで、第１のプロセッサ用ターゲット用コンパイラによりコンパイルされたプログラムであり、
前記ホストプログラムは、前記アサーション記述を含むプログラムが第２のプロセッサ用コンパイラによりコンパイルされたプログラムである
ことを特徴とするプログラム実行装置。
【請求項４】
請求項３記載のプログラム実行装置において、
前記アサーション記述には、アサーション識別情報が割り当てられており、
前記プログラム本体には、前記アサーション識別情報を属性として持ち、前記第１のプロセッサによって実行されると前記アサーション要求を発する前記アサーション要求コードが、前記アサーション記述の記述されていた位置に組み込まれており、
前記ホストプログラムは、前記アサーション記述と前記アサーション識別情報との関連付け情報に基づいて、前記第１のプロセッサによって実行された前記アサーション要求コードの前記アサーション識別情報に対応するアサーション記述に関する処理を実行し、前記ターゲットプロセッサに対して戻り値を返す
ことを特徴とするプログラム実行装置。
【請求項５】
マルチプロセッサのプロセッサコアにより実行されるターゲットプログラムの所望の検査位置に配置されている検査要求コードが前記プロセッサコアによって実行された場合に、検査要求を前記マルチプロセッサの制御プロセッサに発するとともに前記プロセッサコアの実行を停止状態とし、
前記制御プロセッサが前記検査要求を受けると、前記検査要求とこの検査要求に対して実行される検査プログラムとの関連付け情報に基づいて、前記制御プロセッサにより実行されるホストプログラムが前記検査要求に対応する検査プログラムを実行し、前記ターゲットプログラムの実行を再開させるか又は強制終了させるかを選択的に示す応答を前記プロセッサコアに対して返し、
前記ターゲットプロセッサが前記検査要求に対する前記応答を受けると、この応答に基づいて前記ターゲットプログラムの実行再開又は強制終了を選択的に行う
ことを特徴とするプログラム検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ量の限られたプロセッサを含むプログラム実行装置、及びプログラム検査方法に関する。
【背景技術】
【０００２】
特許文献１（特開平１０−３０１８０１号公報の請求項１など）には、ターゲットとなる情報処理装置をデバッグするするデバッグ装置が開示されている。この特許文献１のデバッグ装置では、ターゲット機において実行されたデバッグ用プログラムの出力データ及びデバッグ用プログラムのソースコードに基づいて、デバッグ用プログラムの実行位置及び実行内容の少なくとも一つを表す情報が作成される。
【０００３】
特許文献２（特開２００６−１８５２１１号公報の請求項８、［００５３］段落など）には、対象プログラムによるシステムに対して、入力を与え、出力を得、入出力が仕様に適合しているかをアサーションで調べること、検証したいオブジェクトとその原因となったオブジェクトとの間にアサーションを設定してテストを行うことが開示されている。
【０００４】
一般的に、アサーションは、プログラミングでコード内の変数値などのチェックに用いられる機能であり、プログラムの動的検証に用いられる。アサーションでは、データ処理の論理の各地点で各種の条件が満たされているか検証するコードが配置され、論理の正しさが確認される。ある条件をチェックし、条件が成り立たない場合には、エラーなどが通知される。
【０００５】
アサーションについては、有効又は無効を決定できる。例えば、デバッグ時にはアサーションを有効にして容易にデバッグ可能とし、製品のリリース時にはアサーションを無効にして処理速度を向上させ、リリース後の製品を検査する場合に、再びアサーションを有効にすることもできる。
【０００６】
ここで、高級プログラミング言語であるＣ言語を例に、アサーションについて具体的に説明する。
【０００７】
ISO/IEC 9899:1999において、アサーションを行う文は「assert」文である。「assert」文は、プリプロセッサのマクロとして定義されている。
【０００８】
マクロは、一般的には、以下のように定義されている。
【０００９】
アサーションを無効とするとき、
#define assert(ignore)((void) 0)
と定義される。
【００１０】
アサーションを有効とし、アサーションが不成立のときだけに関心があるなら、
#define assert(expr)((void)((expr)?0:_assertion_failure(#expr,_FILE_,_LINE_)))
と定義される。
【００１１】
アサーションを有効とし、アサーションの成否のいずれにも関心があるなら、
#define assert(expr)(void)(_record_assertion((expr),#expr,_FILE_,_LINE_))
と定義される。
【００１２】
次のようなプログラム片があるとする。
【００１３】
{
assert(A==B&&C==D);
…
}
アサーションを無効とした場合には、assertマクロを展開すると次のようになる。
【００１４】
{
（（void）0）;
…
}
アサーションを有効とした場合には、assertマクロを展開すると次のようになる。
【００１５】
{
((void)((A==B&&C==D)?0:_assertion_failure(“A==B&&C==D “,”filek.c,123)))
…
}
アサーションはマクロとして実現されているため、アサーションの条件判断式と、アサーション収集用の関数呼び出しは、いずれもプログラム本体の一部になっていることが分かる。
【００１６】
アサーションの有効・無効により、マクロ展開後のソースコードは大きく異なる。上記の例において、アサーションを有効とすると、プログラムのコードサイズは大きくなる。
【００１７】
さらに、assertマクロの引数として与える評価式は、任意の大きさの式が許されていること、及び、assert自体が任意に文として配置することができることから、アサーションによるプログラムサイズの増大には上限がない。
【特許文献１】特開平１０−３０１８０１号公報
【特許文献２】特開２００６−１８５２１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
限られた記憶容量（メモリ量）のローカルメモリを持つプロセッサでプログラムを動作させる場合、プログラムのコードサイズは、ローカルメモリに収まる必要がある。
【００１９】
しかしながら、アサーションを有効にした場合、プログラムがローカルメモリに入りきらない、あるいはローカルメモリ上のデータ領域を圧迫する場合がある。アサーション結果の記録のためのバッファがローカルメモリである場合には、さらにローカルメモリの容量が足りなくなる原因となる。
【００２０】
ローカルメモリの記憶容量が限定されている場合、ローカルメモリに入りきらないプログラムは、一般的に、複数の小さいプログラムに分割され、オーバーレイを適用して実行される。
【００２１】
しかしながら、このようにオーバーレイを用いる場合、新たにプログラムを書き起こす必要があり、当初とは異なるプログラムを実行することになる。
【００２２】
したがって、プログラムについてテストを行う場合、オーバーレイを適用して実行するように書き換えられたプログラムをテストしたとしても、元のプログラムをテストしたことにはならず、オーバーレイを適用して実行するように書き換えられたプログラムは、元のプログラムのテストとして使用することはできない。
【００２３】
アサーションと同様に、プログラムの実行が通過したことを記録する処理をプログラムに含める場合にも、上記と同様の問題がある。
【００２４】
アサーションほどの記述力は必要とされないが、プログラムのテスト手法において必要とされる機能として、例えばプログラムカウンタのトレース収集、プログラムのガバレッジ収集など、プログラムの実行が通過したことを記録する処理をプログラムに含める場合もある。
【００２５】
これらの機能も、アサーションと同様に、収集を有効にした場合に、コードサイズの増大を招く場合がある。また、収集したデータをローカルメモリ上に保持しておくだけの容量を持てない場合がある。
【００２６】
本発明は、以上のような実情に鑑みてなされたもので、メモリ容量の少ないプロセッサであっても、このプロセッサで実行されるプログラムを効果的に検査可能なプログラム実行装置、及びプログラム検査方法を提供することを目的とする。
【課題を解決するための手段】
【００２７】
本発明の第１の態様のプログラム実行装置は、第１のプロセッサと、第２のプロセッサと、第１のプロセッサにより実行され、所望の検査位置に配置されている検査要求コードが第１のプロセッサによって実行された場合に、検査要求を第２のプロセッサに発するとともに自身の実行を停止状態とし、検査要求に対する応答を受けるとこの応答に基づいて実行再開又は強制終了を選択的に行うターゲットプログラムを記憶する第１の記憶手段と、第２のプロセッサにより実行され、第１のプロセッサから検査要求が発生した場合に、検査要求とこの検査要求に対して実行される検査プログラムとの関連付け情報に基づいて、検査要求に対応する検査プログラムを実行し、ターゲットプログラムの実行を再開させるか又は強制終了させるかを選択的に示す応答を第１のプロセッサに対して返すホストプログラムを記憶する第２の記憶手段とを具備する。
【００２８】
なお、ここでは発明の一態様が装置として表現されているが、方法、プログラム、コンピュータ読み取り可能な記録媒体などにより実現されるとしてもよい。
【００２９】
本発明の第２の態様のプログラム検査方法は、マルチプロセッサのプロセッサコアにより実行されるターゲットプログラムの所望の検査位置に配置されている検査要求コードがプロセッサコアによって実行された場合に、検査要求をマルチプロセッサの制御プロセッサに発するとともにプロセッサコアの実行を停止状態とし、制御プロセッサが検査要求を受けると、検査要求とこの検査要求に対して実行される検査プログラムとの関連付け情報に基づいて、制御プロセッサにより実行されるホストプログラムが検査要求に対応する検査プログラムを実行し、ターゲットプログラムの実行を再開させるか又は強制終了させるかを選択的に示す応答をプロセッサコアに対して返し、ターゲットプロセッサが検査要求に対する応答を受けると、この応答に基づいてターゲットプログラムの実行再開又は強制終了を選択的に行う。
【発明の効果】
【００３０】
本発明により、メモリ容量の少ないプロセッサであっても、このプロセッサで実行されるプログラムを効果的に検査可能なプログラム実行装置、プログラム検査方法を提供することができる。
【発明を実施するための最良の形態】
【００３１】
以下、図面を参照しながら本発明の実施の形態について説明する。なお、以下の各図において略同一の部分については同一の符号を付して説明を省略する。
【００３２】
（第１の実施の形態）
本実施の形態においては、メモリ量の限られたプロセッサ上で実行されるプログラムを、実行時にテストする装置について説明する。本実施の形態においては、プログラムの検査手法として、アサーションを行う場合を例として説明するが、プログラムの実行が通過したことを記録する場合などについても同様に適用可能である。
【００３３】
図１は、本実施の形態に係るプログラム実行装置の構成の一例を示すブロック図である。
【００３４】
本実施の形態に係るプログラム実行装置１は、ソフトウェアのプログラム開発、特にプログラムのテストに用いられる。
【００３５】
プログラム実行装置１は、ホストシステム２、記憶装置３，４、ターゲットシステム５、伝送路１４を具備する。
【００３６】
さらに、ホストシステム２は、ホストプロセッサ６とホスト側ローカルメモリ７を具備する。記憶装置３にはターゲットプログラム３ａが記憶されており、記憶装置４にはホストプログラム４ａが記憶されている。
【００３７】
ホストシステム２は、ターゲットシステム５内のターゲット側ローカルメモリ９から記憶内容を読み出し可能であり、ターゲットシステム５に備えられているターゲットプロセッサ８のレジスタ１２から記憶内容を読み出し可能である。
【００３８】
ターゲットシステム５は、ターゲットプロセッサ８とターゲット側ローカルメモリ９とを具備する。ターゲットシステム５は、割り込み（アサーション要求の発生）をホストシステム２に通知する手段又は機能を持つ。
【００３９】
伝送路１４経由で、プログラム実行装置１は、ホストシステム２と、ターゲットシステム５との間で、データ、信号、命令、プログラムなどを送受信可能である。
【００４０】
本実施の形態において、ホストシステム２側のホスト側ローカルメモリ７は、ターゲットシステム５に備えられているターゲット側ローカルメモリ９よりも記憶容量が大きい。
【００４１】
ホストプロセッサ６は、記憶装置４に記憶されているホストプログラム４ａを読み出し、ホスト側ローカルメモリ７に記憶する。そして、ホストプロセッサ６は、ホスト側ローカルメモリ７に記憶されているホストプログラム４ａにしたがって動作を実行する。
【００４２】
また、ホストプロセッサ６は、記憶装置３に記憶されているターゲットプログラム３ａを読み出し、この読み出したターゲットプログラム３ａをターゲットシステム５に備えられているターゲット側ローカルメモリ９に記憶させる。
【００４３】
ターゲットプロセッサ８は、ターゲットシステム５側のローカルメモリ９に記憶されているターゲットプログラム３ａにしたがって動作する。
【００４４】
本実施の形態において、ターゲットプロセッサ８は、アサーション記述付きソースプログラムをプログラム本体とアサーション記述とに分離したうちの、プログラム本文に相当するターゲットプログラム３ａを実行する。ホストプロセッサ６は、分離されたうちのアサーション記述に関する処理（アサーションプログラム）を含むホストプログラム４ａを実行し、ターゲットプロセッサ８によって実行されるターゲットプログラム３ａの動作を検査・検証（テスト）し、ターゲットプログラム３ａの実行を再開させるか又は強制終了させるかを判断し、実行再開又は強制終了を選択的に示す応答をターゲットプロセッサ８に対して返すための制御を行う。
【００４５】
本実施の形態においては、アサーション記述に対しては、ユニークなアサーション識別情報が割当てられている。
【００４６】
ターゲットプログラム３ａは、所望の検査位置（アサーション位置）に配置されている割り込み命令（アサーション要求コード）がターゲットプロセッサ８によって実行された場合に、割り込み（アサーション要求）を発するとともに停止状態となり、割り込みに対する実行再開又は強制終了を選択的に示す応答を受けると、この応答に基づいて実行再開又は強制終了を選択的に行うためのプログラムである。
【００４７】
このターゲットプログラム３ａでは、アサーション記述付きソースプログラムにおけるアサーション記述に代えて割り込み命令が配置されている。さらに、割り込み命令には、置き換えられたアサーション記述を示すアサーション記述情報が付されている。
【００４８】
ホスト側ローカルメモリ７に記憶されているアサーション識別情報／アサーション記述テーブル１０は、アサーション記述とそのアサーション識別情報とを関連付けている。
【００４９】
ホストプログラム４ａは、ターゲットプロセッサ８からの割り込みを受けた場合に、この割り込みを発した割り込み命令に付されているアサーション識別情報を取得し、ホスト側ローカルメモリ７に記憶されているアサーション識別情報／アサーション記述テーブル１０を参照し、ターゲットプロセッサ８で実行された割り込み命令に対応するアサーション記述に関する処理を実行し、ターゲットプロセッサ８に対して応答を返すためのプログラムである。
【００５０】
以下に、より具体的に、本実施の形態に係るプログラム実行装置１について説明する。
【００５１】
ターゲットプロセッサ８によって実行されるターゲットプログラム３ａには、ホストプロセッサ６へ割り込みを発し、さらにターゲットプロセッサ８を停止状態とする割り込み命令（Trap命令）が含まれている。なお、Trap命令は、数十ビットの情報を属性として付加可能であり、本実施の形態ではアサーション識別情報が属性として付される。
【００５２】
ホストシステム２は、ターゲットプロセッサ８による割り込みに応じて、この割り込みを発したTrap命令のアサーション識別情報を取得し、このアサーション識別情報に対応するアサーション記述に関する処理を実行し、このホストシステム２による処理の結果が実行を再開させる旨を示す場合に、Trap命令を実行して停止状態となっているターゲットプロセッサ８に対して、停止状態を解除し、Trap命令の次に実行されるべき命令から実行を再開させる。
【００５３】
本実施の形態において、検査対象のアサーション記述付きソースプログラムには、プログラムの動作状態の確認文（アサーション記述）が、プログラムの動作記述の文単位で、任意の場所に、任意の演算式で、記述されている。すなわち、本実施の形態のアサーション記述付きソースプログラムにおいては、プログラムの動作記述と並行して、アサーション記述（プログラムの動作検証のためのコード）が記述されている。
【００５４】
本実施の形態においては、アサーション記述付きソースプログラムが、プログラム本体とアサーション記述とに分離され、アサーション記述に関する処理がホストプロセッサ６で実行され、評価結果である実行状態データ１１が生成され、ホスト側ローカルメモリ７に記憶される。
【００５５】
プログラム本体に対しては、アサーション記述に代えてアサーション識別番号を属性として持つ割り込み命令が配置される。
【００５６】
アサーション記述の演算式の実行及び評価は、割り込まれたホストプロセッサ６において実行されるホストプログラム４ａのプログラムコードとして実現される。
【００５７】
ターゲットプロセッサ８は、ホストプロセッサ６に割り込みを行った後、停止状態となる。
【００５８】
ホストプロセッサ６は、停止しているターゲットプロセッサ８の内部状態、すなわちターゲット側ローカルメモリ９、ターゲットプロセッサ８のレジスタ１２等から例えば変数Ａ〜Ｃの値ａ〜ｃなどのデータを読み出し、この読み出したデータに基づいてアサーション記述の演算式におけるデータ要素を評価する。
【００５９】
ターゲットプロセッサ８の動作の評価に必要な例えば変数Ａ〜Ｃの値ａ〜ｃなどのデータとその格納位置との関係を示す変数／位置テーブル１３は、ホストシステム２のホスト側ローカルメモリ７に記憶されているため、ホストプロセッサ６は、ターゲットシステム５側で保持されているデータに基づいてアサーションを実行することが可能である。
【００６０】
ホストプロセッサ６は、アサーション記述の演算式の評価結果を、ターゲットプログラム３ａのアサーション位置（例えば、実行されたアサーションに対応する割り込み命令のあるアドレス）とともに、実行状態データ１１として保存する。
【００６１】
保存ののち、ホストプロセッサ６は、アサーション記述の演算式の評価結果が実行を再開させる旨を示す場合に、停止状態にあるターゲットプロセッサ８の動作を復帰させ、アサーション記述の演算式の評価結果が強制終了させる旨を示す場合に、停止状態にあるターゲットプロセッサ８の動作を終了させる。
【００６２】
ターゲットプロセッサ８は、ホストプロセッサ６によって復帰させられる場合に、ターゲットプログラム３ａの動作を継続し、ホストプロセッサ６によって強制終了させられる場合に、ターゲットプログラム３ａの動作を終了する。
【００６３】
ホストプロセッサ６は、ターゲットプロセッサ８からの次の割り込みがくるまで待ち状態になる。
【００６４】
このように、本実施の形態においては、アサーション記述とプログラム本体とが分離されている。そして、プログラム本体は、ターゲットプロセッサ８で実行され、アサーション記述に関する処理は、ホストプロセッサ６で実行される。アサーション記述の展開や、実行状態データ１１はホスト側ローカルメモリ７に記憶されるため、ターゲットシステム５側でメモリの記憶容量が不足することを防止することができる。
【００６５】
図２は、本実施の形態に係るプログラム実行装置１におけるホストシステム２とターゲットシステム５との間のプログラム又はデータの送受信関係の一例を示すブロック図である。
【００６６】
ホストシステム２は、ターゲットシステム５に、ターゲットプログラム３ａを送信する。
【００６７】
ターゲットシステム５は、ターゲットプログラム３ａを記憶・実行し、所望のアサーション位置が実行されると、アサーション用の割り込みをホストシステム２に通知し、ターゲットプログラム３ａの実行を停止する。
【００６８】
ホストシステム２は、割り込みにより待ち状態を解除し、実行されたアサーション位置に対応するアサーション記述にそって処理を実行し、アサーションに必要なデータに関するターゲット側ローカルメモリ９の読み出し要求、ターゲット側のレジスタ１２の読み出し要求を、ターゲットシステム５に送信する。
【００６９】
ターゲットシステム５は、ホストシステム２から受信したターゲット側ローカルメモリ９の読み出し要求に応じて、ターゲット側ローカルメモリ９のメモリデータをホストシステム２に送信し、ホストシステム２から受信したターゲット側レジスタ１２の読み出し要求に応じて、ターゲット側レジスタ１２のレジスタデータをホストシステム２に送信する。
【００７０】
ホストシステム２は、割り込みに対応するアサーション記述、読み出したメモリデータ及びレジスタデータに基づいてアサーション処理を実行し、実行再開通知又は強制終了通知を示す応答をターゲットシステム５に返す。
【００７１】
以下においては、上記のようなプログラム実行装置１におけるターゲットプログラム３ａのアサーションの実現方法について説明する。
【００７２】
第１の要点としては、ターゲットプログラム３ａ内のアサーション位置と、ホストプログラム４ａのアサーション記述との対応付けを作成する。
【００７３】
ホストプログラム４ａは、ターゲットプログラム３ａの実行経過を監視する。
【００７４】
ターゲットプログラム３ａとホストプログラム４ａは、以下の作成手順にそって作成される。
【００７５】
まず、アサーション記述付きソースプログラムにおけるアサーションを行うべきステップ（アサーション記述）に対して、ユニークなアサーション識別情報を割り当てる。
【００７６】
アサーションを行うべきステップにおいてアサーションの条件式を実現するプログラムを、ホストプログラム４ａの一つの関数とする。この関数をアサーション関数（アサーションプログラム）とする。
【００７７】
アサーション記述付きソースプログラム中の全てのアサーション記述に関するアサーション関数の集合を作成し、アサーション識別情報により、アサーション関数を選択することができるように、アサーション識別情報とアサーション関数とを関連付ける。例えば、アサーション関数のポインタのテーブルを作成し、アサーション識別情報をインデックスとしてテーブルを参照することにより、アサーション識別情報に対応するアサーション関数を選択可能とする。
【００７８】
ターゲットプログラム３ａでは、アサーションを行うべきステップに代えて、ホストシステム２にアサーションを要求するためのTrap命令を挿入する。このTrap命令には、属性としてアサーション識別情報が付されている。
【００７９】
第２の要点としては、ターゲットプログラム３ａのアサーション位置でTrap命令が実行され、対応するアサーション関数がホストシステム２内で呼び出される。
【００８０】
図３は、本実施の形態に係るプログラム実行装置１におけるターゲットプログラム３ａとホストプログラム４ａとの動作の一例を示す動作遷移図である。この図３では、アサーション関数の実行結果が実行再開を示す場合を例に説明をする。
【００８１】
ステップＳ１において、ホストプログラム４ａは、ターゲットプログラム３ａからのアサーション用の割り込み（アサーション要求）の待ち状態にある。
【００８２】
ステップＳ２において、ターゲットプログラム３ａの実行位置が、ターゲットプログラム３ａ中のアサーションを行うべきステップに到達すると、Trap命令が実行される。
【００８３】
ステップＳ３において、ホストプログラム４ａにアサーション要求を通知する割り込みが発生する。ターゲットプログラム３ａの実行は、割り込みを発生させた後、停止する。
【００８４】
ステップＳ４において、ホストプログラム４ａは割り込みを受け、待ち状態を解除する。
【００８５】
ステップＳ５において、ホストプログラム４ａは、ターゲットシステム５へのターゲット側ローカルメモリ９あるいはレジスタ１２に記憶されている内容の読み出しを行い、Trap命令を読み出す。ホストプログラム４ａは、このTrap命令の属性から、アサーション識別情報を取得し、アサーション関数を選択する。
【００８６】
ステップＳ６において、ホストプログラム４ａは、アサーション関数を実行し、アサーション関数の実行結果を示す応答をターゲットシステム５に返すとともに、アサーション関数の実行結果である実行状態データ１１をホスト側ローカルメモリ７に記憶する。
【００８７】
ステップＳ７において、ホストプログラム４ａは、応答に応じて、Trap命令により停止状態のターゲットプログラム３ａを実行状態に復帰させてターゲットプロセッサ８のTrap停止を解除する。
【００８８】
ステップＳ８において、ターゲットプログラム３ａは、Trap命令の次の命令から実行を再開する。
【００８９】
ステップＳ９において、ホストプログラム４ａは、次のアサーション要求の待ち状態となる。
【００９０】
なお、上記ステップＳ６において、ホストシステム２は、アサーション関数を実行することにより、ターゲットシステム５側のターゲットプログラム３ａの実行状態を参照可能である。すなわち、ホストシステム２は、ターゲットシステム５のターゲット側ローカルメモリ９を読み出し、あるいは、ターゲットプロセッサ８のレジスタ１２を読み出し、ターゲットプログラム３ａの実行状態を求める。
【００９１】
上記ステップＳ６の実行中は、ターゲットプログラム３ａは停止状態であるため、ターゲットプログラム３ａの実行状態（レジスタ１２やローカルメモリ９の状態など）はTrap命令の実行時の状態が維持されている。したがって、ホストプログラム４ａからターゲットシステム５のデータを読み出す際には、排他制御を行う必要はない。
【００９２】
上記図３のステップＳ７において、ホストプログラム４ａは、アサーション関数の戻り値が「偽」を表わす場合（例えば戻り値が整数値の０の場合）、ターゲットシステム５に対して、ターゲットプログラム３ａを再開させることなく、強制終了させることを要求するとしてもよい。ターゲットシステム５は、アサーション関数実行後に強制終了の要求を受けると、ターゲットプログラム３ａを強制終了させる。
【００９３】
以上説明した本実施の形態において、ターゲットシステム５に実行させているタゲットプログラム３ａに対するアサーション記述に関する処理(アサーションプログラム)は、ホストシステム２側に用意されており、ホストシステム２において実行される。
【００９４】
ターゲットシステム５におけるターゲットプログラム３ａでは、アサーションの代わりに、ホストシステム２に対してアサーションを要求し（アサーション用の割り込みを行い）、停止する。ホストシステム２は、アサーション要求に対応するアサーション記述に関する処理を選択し、選択したアサーション記述に関する処理を実行する。実行後、アサーション記述に関する処理の実行結果は記憶され、強制終了でなければターゲットプログラム３ａの停止状態は解除される。
【００９５】
これにより、ターゲットシステム５側でアサーション記述が展開されてプログラムサイズが増大することがなく、ターゲットシステム５側のメモリ量が限定されている場合であっても、アサーション記述に関する処理を効果的に実行することができ、プログラムのテストを適切に行うことができる。
【００９６】
すなわち、本実施の形態においては、アサーション記述がプログラム本体から分離され、分離されたアサーション記述に関する処理をホストプログラム４ａに組み込むことにより、ターゲットシステム５側でコードサイズ及びデータサイズが増大することを抑制し、メモリ容量の少ないターゲットシステム４においても効果的にアサーションテストを行うことができる。
【００９７】
本実施の形態においては、アサーション記述を有効化した場合と無効化した場合とで、同一のプログラム実行コードを用いることができる。すなわち、同一のプログラム実行コードであっても、ホストシステム２とターゲットシステム５とを接続し、Trap命令を有効にすることにより、アサーションが実行されるモードとすることができる。また、ホストシステム２とターゲットシステム５との接続を解除するか、Trap命令を無効とすることにより、アサーションが実行されないモードとすることができる。
【００９８】
なお、本実施の形態においては、ホストプログラム４ａとアサーション識別情報／アサーション記述テーブル１０とが別構造としているが、例えば、ホストプログラム４ａが、アサーション識別情報／アサーション記述テーブル１０のデータ構造を含むなどのように、ホストプログラム４ａとアサーション識別情報／アサーション記述テーブル１０とを一体構造としてもよい。
【００９９】
本実施の形態において、例えば、ホストプロセッサ６としてＣＰＵ、ターゲットプロセッサ８としてＤＳＰなどが用いられる。
【０１００】
（第２の実施の形態）
本実施の形態においては、ターゲットプログラム３ａ及びホストプログラム４ａを生成するプログラム生成装置について説明する。
【０１０１】
本実施の形態においては、検査対象となるアサーション記述付きのソースプログラムについて、各アサーション記述にアサーション識別情報が割り当てられるとともに、アサーション記述付きソースプログラムが、プログラム本体とアサーション記述とに分離される。
【０１０２】
そして、プログラム本体のアサーション位置にアサーションを要求する文が挿入され、ターゲット側プログラム本体が生成される。
【０１０３】
アサーション記述は、ホスト側で実行される一つの関数（アサーション関数）とされる。アサーション識別情報を用いてアサーション記述を特定可能なテーブル構造を持つアサーション識別情報／アサーション記述テーブル１０が生成される。
【０１０４】
生成されたターゲット側プログラム本体は、ターゲットプロセッサ用コンパイラでコンパイルされ、ターゲットプログラム３ａが生成される。
【０１０５】
生成されたアサーション関数は、ホスト側プログラム本体とともにホストプロセッサ用コンパイラでコンパイルされ、ホストプログラム４ａが生成される。
【０１０６】
図４は、入力されたアサーション記述付きソースプログラムから、ターゲットプログラム３ａ及びホストプログラム４ａを生成するプログラム生成装置１５の一例を示すブロック図である。なお、このプログラム生成装置１５の動作は、上記第１の実施の形態に係るプログラム実行装置１のホストプロセッサ６とターゲットプロセッサ８のうちの少なくとも一つにより実現されるとしてもよい。
【０１０７】
プログラム生成装置１５に入力され、記憶装置１６に記憶されているアサーション記述付きソースプログラム１７は、例えば、Ｃ言語などの高級言語で記述されている。
【０１０８】
アサーション記述付きソースプログラム１７中では、プログラム本体の記述と、アサーション記述とが、順列に記載されている。
【０１０９】
アサーション検出部１８は、記憶装置１６に記憶されているアサーション記述付きソースプログラム１７中のアサーション記述を検出する。具体的な検出方法としては、例えば、アサーション記述を特殊なキーワードで始めるなど、プログラミング言語の文法拡張が用いられる。
【０１１０】
アサーション切り出し部１９は、アサーション記述付きソースプログラム１７中のプログラム本体とアサーション記述とを分離する。
【０１１１】
アサーション検出部１８又はアサーション切り出し部１９によって、アサーション記述には、ユニークなアサーション識別情報（例えば整数値）が割り当てられる。
【０１１２】
アサーション切り出し部１９は、分離ざれた一方であるプログラム本体に、アサーション記述に代えてアサーション用Trap文を挿入したターゲット側プログラム本体２０を生成し、記憶装置２１に記憶する。
【０１１３】
Trap文は、コンパイルされると、アサーション要求をホストシステム２に発するTrap命令となる。Trap文には、アサーション検出部１８又はアサーション切り出し部１９で生成されたアサーション識別情報が属性として付される。すなわち、アサーション記述付きソースプログラム１７において、アサーション記述を属性付きのTrap文に置き換えた結果が、ターゲット側プログラム本体２０である。
【０１１４】
分離された他方であるアサーション記述付きソースプログラム１７中のアサーション記述は、一つの関数となるようにアサーション切り出し部１９によって整形される。この整形により得られた関数を、アサーション関数とする。アサーション検出部１８又はアサーション切り出し部１９によって生成されたアサーション識別情報と、アサーション関数との組み合わせが、アサーション情報２２である。アサーション情報２２は、記憶装置２３に記憶される。すなわち、このアサーション情報２２は、アサーション関数と、上記第１の実施の形態におけるアサーション記述／アサーションテーブル１０とを組み合わせた情報に相当する。
【０１１５】
ターゲットプロセッサ用コンパイラ２４は、記憶装置２１に記憶されているターゲット側プログラム本体２０をコンパイルし、ターゲットプログラム３ａを生成し、記憶装置３に記憶する。
【０１１６】
また、ターゲットプロセッサ用コンパイラ２４内のコード生成部は、Trap文を処理するときに、そのときのスコープで参照可能な変数（名前）と、その変数が表わすデータの格納位置との組の一覧を示す変数／位置テーブル１３を記憶装置２５に記憶する。
【０１１７】
アサーションプログラム生成部２６は、記憶装置２３に記憶されているアサーション情報２２から、アサーションの実行に用いられるアサーションプログラム２７を生成し、記憶装置２８に記憶する。アサーションプログラム生成部２６では、例えば、アサーション情報２２中のアサーション関数が列挙されており、さらに、この列挙されたアサーション関数へのポインタからなる関数テーブルの内容を列挙する形式のアサーションプログラム２７が生成される。
【０１１８】
アサーションプログラム生成部２６は、アサーション関数内の名前のそれぞれを、変数／位置テーブル１３を用いて、ターゲットシステム５へのメモリ読み出し要求あるいはレジスタ読み出し要求に変換する。
【０１１９】
アサーションプログラム２７は、記憶装置２９に記憶されておりアサーションプログラム２７とは別に提供されるホストプログラム本体３０とともに、ホストプロセッサ用コンパイラ３１でコンパイルされ、ホストプログラム４ａが生成され、ホストプログラム記憶装置４に記憶される。ホストプログラム本体３０は、ターゲットシステム５からの割り込みに応じて、この割り込みを発した割り込み命令に付されているアサーション識別情報に対応するアサーション関数を実行するための各種制御などを行う。
【０１２０】
なお、本実施の形態において、アサーション記述は、ホストプログラム４ａの一部として実行されるアサーション関数に変換される。アサーション記述自体は、ターゲットプログラム３ａとは直接に関係せず、両者の記述に用いるプログラミング言語が一致する必要はない。
【０１２１】
その結果、例えば、ホストプログラム４ａでは、ターゲットプログラム３ａ中に表れる変数名を用いて、ターゲットプログラム３ａで用いられるデータを参照することができない場合がある。そこで、本実施の形態においては、アサーション関数中では、メモリ読み出し要求、レジスタ読み出し要求を用いて、ターゲットプログラム３ａのデータを取得し、この取得したデータを用いた演算によりアサーションを実現する。
【０１２２】
また、例えば、ターゲットプログラム３ａが、アサーションで必要となるデータをターゲット側ローカルメモリ９上の特定の領域に格納し、この特定の領域がどのような構造であるか（どのアドレスにどのデータが格納されているか）を示す情報は、ターゲットプログラム３ａとホストプログラム４ａとの間で共有された情報とし、ホストプログラム４ａは、メモリ読み出し要求にそってターゲットプログラム３ａが特定の領域に格納したデータを読み出し、アサーションプログラムの演算に用いるとしてもよい。
【０１２３】
本実施の形態において、ターゲットプロセッサ用コンパイラ２４は、アサーション関数で参照される変数と、その変数のデータ格納位置とを組み合わせた変数／位置テーブル１３を生成する。アサーション関数で用いられる変数のデータ参照は、この変数／位置テーブル１３を用いて、ターゲットシステム５へのメモリ読み出しやレジスタ読み出し要求へと変換される。よって、アサーション関数とプログラム本体とが同じプログラミング言語で記述されている場合、アサーション関数では、プログラム本体のデータ構造をプログラム本体で使われるデータ名で参照することが可能となる。
【０１２４】
ホストプログラム４ａは、変数名の宣言に応じて、以下の動作によりデータの格納位置を特定する。
【０１２５】
第１の格納位置の特定動作は、静的スコープの変数（ファイルスコープの変数）であり、変数の値がメモリ上に存在する場合に用いられる。この第１の格納位置の特定動作では、格納位置がその変数の名前そのものとなる。この場合、ホストプログラム４ａは、ターゲット側ローカルメモリ９上の変数のアドレスを指定して、ターゲットシステム５へのメモリ読み出し要求によって変数の値を得ることができる。
【０１２６】
第２の格納位置の特定動作は、動的スコープの変数（Ｃ言語のauto）であり、変数の値がメモリ上、すなわちスタック上に存在する場合に用いられる。この第２の格納位置の特定動作では、格納位置はその変数のスタックフレーム中の位置となる。ここで、スタックフレーム内のデータはフレームポインタ相対で参照されるとする。ホストプログラム４ａは、フレームポインタの値を得たのちには、フレームポインタに相対アドレスを加算したアドレスを指定して、ターゲットシステム５へのメモリ読み出し要求によって変数の値を得ることができる。
【０１２７】
上記第１及び第２の格納位置の特定動作のいずれであっても、変数の値がメモリではなく、レジスタ上に配置されている場合、格納位置は、このレジスタのレジスタ番号となる。この場合、ホストプログラム４ａは、ターゲットプロセッサ８のレジスタ読み出しによって変数の値を得ることができる。
【０１２８】
以上説明したように、本実施の形態において、アサーションプログラム生成部２６は、アサーション情報２２に対する変換を行う場合に、アサーション関数に現れる名前を、変数／位置テーブル１３で示されるデータ取得手段に変換する。
【０１２９】
これにより、ホストプログラム４ａのアサーション関数で必要となるデータを、ターゲットシステム５側から読み出すことができる。
【０１３０】
なお、アサーション関数内で繰り返し参照されるデータについては、アサーション関数の実行中は、ターゲットプログラム３ａの状態は不変のため一度の読み出し要求でよい。
【０１３１】
（第３の実施の形態）
本実施の形態においては、上記第２の実施の形態に係るプログラム生成装置１５の変形例について説明する。
【０１３２】
図５は、本実施の形態に係るプログラム生成装置の一例を示すブロック図である。
【０１３３】
本実施の形態に係るプログラム生成装置３６のターゲットプロセッサ用コンパイラ３７は、アサーション切り出し部３８、コンパイラ上流過程３９、コード生成部４０、アサーション情報生成部４１を具備する。
【０１３４】
アサーション切り出し部３８は、記憶装置１６に記憶されているアサーション記述付きソースプログラム１７に対して、プログラム本体とアサーション記述の分離を行う。
【０１３５】
プログラム本体は、コンパイラ上流過程３９、コード生成部４０により、ターゲットプログラム３ａに変換される。ターゲットプログラム３ａは、記憶装置３に記憶される。
【０１３６】
アサーション情報生成部４１は、分離されたアサーション記述や、コード生成部４０によって生成された例えば変数／位置テーブル１３に相当する情報などを含むアサーション情報４２を生成し、記憶装置４３に記憶する。
【０１３７】
アサーションプログラム生成部４４は、記憶装置４３に記憶されているアサーション情報４２と、記憶装置４５に記憶されているテストベンチ４６とを組み合わせ、アサーションプログラム４７を生成し、記憶装置４８に記憶する。
【０１３８】
ホストプロセッサ用コンパイラ４９は、記憶装置４８に記憶されているアサーションプログラム４７をコンパイルし、ホストプログラム４ａを生成し、記憶装置４ａに記憶する。
【０１３９】
（第４の実施の形態）
本実施の形態においては、上記第１の実施の形態に係るプログラム実行装置１の変形例であり、アサーションに代えて、ターゲットプログラムのどの位置が実行されたか（ターゲットプログラムの実行が通過したこと）を記録するプログラム実行装置について説明する。
【０１４０】
図６は、本実施の形態に係るプログラム実行装置で用いられるターゲットプログラムとホストプログラムとの動作の一例を示す動作遷移図である。
【０１４１】
本実施の形態に係るターゲットプログラム３２は、プログラムの実行された位置をトレースするために、所望のトレース位置に、トレース用のTrap命令（トレース要求）が配置されている。
【０１４２】
ステップＴ１において、ホストプログラム３３は、ターゲットプログラム３２からのトレース用の割り込みの待ち状態にある。
【０１４３】
ステップＴ２において、ターゲットプログラム３２の実行位置が、ターゲットプログラム３２中のトレース用のTrap命令に到達すると、このトレース用のTrap命令が実行される。
【０１４４】
ステップＴ３において、ホストプログラム３３にトレース用の割り込みが発生する。ターゲットプログラム３２の実行は、割り込みを発生させた後、停止する。
【０１４５】
ステップＴ４において、ホストプログラム３３は割り込みを受け、待ち状態を解除する。
【０１４６】
ステップＴ５において、ホストプログラム３３は、割り込みを発生させたトレース用のTrap命令の位置を、ホスト側ローカルメモリ９又はトレース用バッファに追加記憶する。
【０１４７】
例えば、ホストプログラム３３は、ターゲットプロセッサ８に備えられているプログラムカウンタに格納されている内容（Trap命令に相当）を読み出し、読み出した内容を、逐次ホスト側ローカルメモリ９又はトレース用バッファに記憶する。
【０１４８】
ステップＴ６において、ホストプログラム３３は、Trap命令によって停止状態となったターゲットプログラム３２を実行状態に復帰させ、ターゲットプロセッサのTrap停止を解除する。
【０１４９】
ステップＴ７において、ターゲットプログラム３２は、Trap命令の次の命令から実行を再開する。
【０１５０】
ステップＴ８において、ホストプログラム３３は、次の割り込みの待ち状態となる。
【０１５１】
上記のように、ターゲットプログラム３２の所望のトレース位置にTrap命令を挿入し、ターゲットプログラム側でTrap命令が実行された場合に、ホストシステムがターゲットシステム側のプログラムカウンタの内容を記録することにより、ターゲットプログラムの実行状態を示すトレース結果を得ることができる。
【０１５２】
本実施の形態に係るターゲットプログラムとホストプログラムとは、上記第２の実施の形態の図４を変形した手法により生成される。具体的には、トレース記述付きソースプログラムについてプログラム本体とトレース記述とが分離され、トレース用Trap命令の挿入されたターゲット側プログラム本体が生成され、ターゲット側プログラム本体がターゲットプロセッサ用コンパイラでコンパイルされてターゲットプログラムが生成される。また、ターゲットシステムからの割り込みに応じてターゲットシステムのプログラムカウンタの内容を読み出すトレースプログラムが生成され、ホストプログラム本体とトレースプログラムとがホストプロセッサ用コンパイラでコンパイルされてホストプログラムが生成される。
【０１５３】
本実施の形態においては、ターゲットシステム側のメモリ量が制約されている場合であっても、このターゲットシステムで実行されるターゲットプログラムのトレース結果を収集することができる。
【０１５４】
（第５の実施の形態）
本実施の形態においては、上記第３の実施の形態において所望のトレース位置においてプログラムカウンタの格納内容を逐次記録することに代えて、ターゲットプログラムの分岐先を特定する位置においてプログラムカウンタの格納内容を収集し、分岐先の処理が実行された回数を示すヒストグラムを生成し、ターゲットプログラムのカバレッジを収集するプログラム実行装置について説明する。
【０１５５】
図７は、本実施の形態に係るプログラム実行装置で用いられるターゲットプログラムとホストプログラムとの動作の一例を示す動作遷移図である。
【０１５６】
本実施の形態に係るターゲットプログラム３４は、プログラムのどの分岐先が実行されているかを特定するために、分岐先を特定するための所望の位置に、カバレッジ用のTrap命令（カバレッジ要求）が配置されている。
【０１５７】
ステップＵ１において、ホストプログラム３５は、ターゲットプログラム３４からのカバレッジ用の割り込み（カバレッジ要求）の待ち状態にある。
【０１５８】
ステップＵ２において、ターゲットプログラム３４の実行位置が、ターゲットプログラム３４中のカバレッジ用のTrap命令に到達すると、このカバレッジ用のTrap命令が実行される。
【０１５９】
ステップＵ３において、ホストプログラム３５にカバレッジ用の割り込みが発生する。ターゲットプログラム３４の実行は、割り込みを発生させた後、停止する。
【０１６０】
ステップＵ４において、ホストプログラム３５は割り込みを受け、待ち状態を解除する。
【０１６１】
ステップＵ５において、ホストプログラム３５は、割り込みを発生させたカバレッジ用のTrap命令に対応する実行回数を求め、ヒストグラムを生成し、ホスト側ローカルメモリ９又はカバレッジ用バッファに記憶する。具体的には、ステップＵ５において、ホストプログラム３５は、カバレッジ用Trap命令の位置に対応するヒストグラム・ビンをインクリメントする。
【０１６２】
ステップＵ６において、ホストプログラム３５は、Trap命令によって停止状態となったターゲットプログラム３４を実行状態に復帰させ、ターゲットプロセッサのTrap停止を解除する。
【０１６３】
ステップＵ７において、ターゲットプログラム３４は、Trap命令の次の命令から実行を再開する。
【０１６４】
ステップＵ８において、ホストプログラム３５は、次の割り込みの待ち状態となる。
【０１６５】
本実施の形態においては、分岐のトレースが行われ、リニアなコードのトレースを生成することが容易となる。ターゲットシステムのプログラムカウンタの格納内容のヒストグラムをホストシステムで生成することにより、ターゲットシステム側のメモリ量が制限されている場合であっても、ターゲットプログラム３４のカバレッジを収集することができ、ターゲットプログラムに存在する各分岐先の処理がどの程度実行されているかを把握することが可能となる。
【０１６６】
（第６の実施の形態）
本実施の形態においては、上記第１の実施の形態に係るプログラム実行装置１をマルチプロセッサに適用した場合について説明する。
【０１６７】
図８は、本実施の形態に係るマルチプロセッサの構成の一例を示すブロック図である。
【０１６８】
マルチプロセッサ５０は、少なくとも一つの制御プロセッサ５１と、複数のプロセッサコア（ＳＰＥ）５２ａ〜５２ｎを具備する。制御プロセッサ５１と複数のプロセッサコア５２ａ〜５２ｎとは、データ等を送受信可能な伝送路５３により接続されている。
【０１６９】
制御プロセッサ５１は、上記第１の実施の形態のホストシステム２として動作する。
【０１７０】
複数のプロセッサコア５２ａ〜５２ｎのいずれか（本実施の形態では、プロセッサコア５２ａとする）は、上記第１の実施の形態のターゲットシステム５として動作する。
【０１７１】
プロセッサコア５２ａではターゲットプログラム３ａが実行される。制御プロセッサ５１ではホストプログラム４ａが実行され、これによりメモリ量に制約のあるプロセッサコア５２ａの代わりに制御プロセッサ５１がアサーションに関する処理を代理実行する。
【０１７２】
アサーションを行う際に、制御プロセッサ５１は、プロセッサコア５２ａのローカルメモリ９、レジスタ１２の記憶内容を参照する。プロセッサコア５２ａは、プロセッサ５２ａのローカルメモリ９、レジスタ１２の記憶内容を、制御プロセッサ５１に渡す。
【０１７３】
本実施の形態に係るマルチプロセッサ５０によるプログラム検査方法では、まず、マルチプロセッサ５０のプロセッサコア５２ａにより実行されるターゲットプログラム３ａの所望の検査位置に配置されている検査要求コードがプロセッサコア５２ａによって実行された場合に、検査要求をマルチプロセッサ５０の制御プロセッサ５１に発するとともにプロセッサコア５２ａの実行を停止状態とする。
【０１７４】
次に、制御プロセッサ５１が検査要求を受けると、検査要求とこの検査要求に対して実行される検査プログラムとの関連付け情報（アサーション識別情報／アサーション記述テーブル１０）に基づいて、制御プロセッサ５１により実行されるホストプログラム４ａが検査要求に対応する検査プログラムアサーションプログラムを実行し、ターゲットプログラム３ａの実行を再開させるか又は強制終了させるかを選択的に示す応答をプロセッサコア５２ａに対して返す。
【０１７５】
そして、ターゲットプロセッサ５２ａが検査要求に対する応答を受けると、この応答に基づいてターゲットプログラム３ａの実行再開又は強制終了を選択的に行う。
【０１７６】
本実施の形態では、制御プロセッサ５１よりもメモリ容量の少ないプロセッサコア５２ａであっても、効果的なアサーションを行うことができる。
【０１７７】
なお、上記第４及び第５の実施の形態に係るプログラム実行装置をマルチプロセッサに適用することも同様に可能である。
【０１７８】
上記各実施の形態において、各種の構成要素は自由に組み合わせ又は分離することができる。例えば、各種の記憶装置は自由に統合可能である。
【図面の簡単な説明】
【０１７９】
【図１】本発明の第１の実施の形態に係るプログラム実行装置の一例を示すブロック図。
【図２】第１の実施の形態に係るプログラム実行装置におけるホストシステムとターゲットシステムとの間の送受信関係の一例を示すブロック図。
【図３】第１の実施の形態に係るプログラム実行装置におけるターゲットプログラムとホストプログラムとの動作の一例を示す動作遷移図。
【図４】本発明の第２の実施の形態に係るプログラム生成装置の一例を示すブロック図。
【図５】本発明の第３の実施の形態に係るプログラム生成装置の一例を示すブロック図。
【図６】本発明の第４の実施の形態に係るプログラム実行装置で用いられるターゲットプログラムとホストプログラムとの動作の一例を示す動作遷移図。
【図７】本発明の第５の実施の形態に係るプログラム実行装置で用いられるターゲットプログラムとホストプログラムとの動作の一例を示す動作遷移図。
【図８】本発明の第６の実施の形態に係るマルチプロセッサの構成の一例を示すブロック図。
【符号の説明】
【０１８０】
１…プログラム実行装置、２…ホストシステム、３，４，１６，２１，２３，２５，２８，２９，４３，４５，４８…記憶装置、３ａ，３２，３４…ターゲットプログラム、４ａ，３３，３５…ホストプログラム、５…ターゲットシステム、６…ホストプロセッサ、７…ホスト側ローカルメモリ、８…ターゲットプロセッサ、９…ターゲット側ローカルメモリ、１０…アサーション識別子／アサーション記述テーブル、１１…実行状態データ、１２…レジスタ、１３…変数／位置テーブル、１４…伝送路、１５，３６…プログラム生成装置、１７…アサーション記述付きソースプログラム、１８…アサーション検出部、１９，３８…アサーション切り出し部、２０…ターゲット側プログラム本体、２２，４２…アサーション情報、２４，３７…ターゲットプロセッサ用コンパイラ、２６…アサーションプログラム生成部、２７…アサーションプログラム、３０…ホストプログラム本体、３１…ホストプロセッサ用コンパイラ、３９…コンパイラ上流過程、４０…コード生成部、４１…アサーション情報生成部、４４…アサーションプログラム生成部、４６…テストベンチ、４７…アサーションプログラム、４９…ホストプロセッサ用コンパイラ
【図１】
2009116547.tif 000003
【図２】
2009116547.tif 000004
【図３】
2009116547.tif 000005
【図４】
2009116547.tif 000006
【図５】
2009116547.tif 000007
【図６】
2009116547.tif 000008
【図７】
2009116547.tif 000009
【図８】
2009116547.tif 000010