(57)【要約】  【課題】  ＩＣＥ（インサーキットエミュレータ）を用いられない高速に動作するシステムＬＳＩのデバッグ装置において、内蔵するエミュレーションメモリを可能な限り小さくすることでコストを削減する。  【解決手段】  デバッガソフト搭載のコンピュータであるホストＰＣ１０２、予めホストＰＣ１０２で実行命令順にトレースし、命令をエミュレーションメモリ１１５，１１６に転送して格納することにより、容量の少ない内蔵エミュレーションメモリへの書き込みを効率良く行えるとともに、転送トラフィックに起因するオーバーヘッドを防ぎ、効率良くＣＰＵに命令を供給することが可能となる。【選択図】図１
2005071341.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵが実行する命令を格納する複数のＥ‐記憶部（エミュレーション記憶部）と、
前記ＣＰＵと前記Ｅ‐記憶部とホストに接続され、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスが該当しないときは前記ホストに命令書替指令を出力する実行管理部と、
を備えたデバッガ装置。
【請求項２】
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続され、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスが該当しないときは前記ホストに命令書替指令を出力する実行管理部と、
を備えたデバッガ装置。
【請求項３】
請求項２記載のデバッガ装置において、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースし、複数の前記Ｅ‐記憶部の記憶容量分ずつ命令列を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令列を前記記憶容量分ずつ順次に複数の前記Ｅ‐記憶部に書き込み、
前記ＣＰＵは、命令アドレスを前記実行管理部に出力し、
前記実行管理部は、前記ＣＰＵの命令アドレスに従って、今回読み出し先のＥ‐記憶部が前回読み出し先のＥ‐記憶部とは異なるかを判定し、異なるときは前記ホストに命令書替指令を出力し、前記今回読み出し先のＥ‐記憶部から命令列を読み出して前記ＣＰＵに転送し、
前記ＣＰＵは、前記実行管理部から転送されてくる命令列を実行し、
前記ホストは、前記命令書替指令を受けて命令をトレースし、次に実行すべき命令列を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令列を記憶容量分ずつ前回読み出し先のＥ‐記憶部に書き込むように構成されたデバッガ装置。
【請求項４】
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続され、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が無条件分岐命令の実行の場合、前記ホストに命令書替指令を出力する実行管理部と、
を備えたデバッガ装置。
【請求項５】
請求項４記載のデバッガ装置において、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースし、無条件分岐命令が存在している場合に分岐先と分岐元との命令列を分割し、命令列ずつ命令を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令を命令列ずつ順次に複数の前記Ｅ‐記憶部に書き込み、
前記ＣＰＵは、前記無条件分岐命令のアドレスを前記実行管理部に出力し、
前記実行管理部は、前記ＣＰＵの命令アドレスに従って、前記無条件分岐命令の今回読み出し先のＥ‐記憶部が前回読み出し先のＥ‐記憶部とは異なるかを判定し、異なるときは前記ホストに命令書替指令を出力し、前記今回読み出し先のＥ‐記憶部から前記無条件分岐命令を読み出して前記ＣＰＵに転送し、
前記ＣＰＵは、前記実行管理部から転送された前記無条件分岐命令を実行し、
前記ホストは、前記命令書替指令を受けて命令をトレースし、次に実行すべき命令列を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令列を記憶容量分ずつ前回読み出し先のＥ‐記憶部に書き込むように構成されたデバッガ装置。
【請求項６】
請求項５記載のデバッガ装置において、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースし、無条件分岐命令の分岐先が同一のＥ‐記憶部の記憶領域内に該当する場合、前記実行管理部は、前記同一のＥ‐記憶部に収まる複数の命令列を同一のＥ‐記憶部に書き込み、
前記ＣＰＵは、前記無条件分岐命令のアドレスを前記実行管理部に出力し、
前記実行管理部は、前記ＣＰＵの命令アドレスに従って、前記無条件分岐命令の今回読み出し先のＥ‐記憶部が前回読み出し先のＥ‐記憶部と同じかを判定し、同じであるときは前記命令書替指令の出力を停止するように構成されたデバッガ装置。
【請求項７】
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続され、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が無条件分岐命令の実行の場合、前記ホストに命令書替指令を出力し、前記ＣＰＵの命令アドレスの命令がサブルーチンコール命令の実行の場合、前記命令書替指令の出力を停止する実行管理部と、
を備えたデバッガ装置。
【請求項８】
請求項７記載のデバッガ装置において、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースし、サブルーチンコール命令が存在している場合に分岐先と分岐元とを含む命令列を分割し、命令列ずつ命令を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令を命令列ずつ順次に複数の前記Ｅ‐記憶部に書き込み、
前記ＣＰＵは、前記サブルーチンコール命令のアドレスを前記実行管理部に出力し、
前記実行管理部は、前記ＣＰＵの命令アドレスに従って、今回読み出し先のＥ‐記憶部が前回読み出し先のＥ‐記憶部とは異なるかを判定し、異なるときは前記ホストに命令書替指令を出力するのを原則とするが、サブルーチンコール命令のときは前記命令書替指令の出力を停止し、前記今回読み出し先のＥ‐記憶部からサブルーチン命令列を読み出して前記ＣＰＵに転送し、
前記ＣＰＵは、前記実行管理部から転送された前記サブルーチン命令列を実行するように構成されたデバッガ装置。
【請求項９】
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続され、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が無条件分岐命令の実行の場合、前記ホストに命令書替指令を出力し、前記ＣＰＵの命令アドレスの命令が例外処理の実行の場合、前記命令書替指令の出力を停止する実行管理部と、
を備えたデバッガ装置。
【請求項１０】
請求項９記載のデバッガ装置において、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースし、例外処理が存在している場合に分岐先と分岐元とを含む命令列を分割し、命令列ずつ命令を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令を命令列ずつ順次に複数の前記Ｅ‐記憶部に書き込み、
前記ＣＰＵは、前記例外処理のアドレスを前記実行管理部に出力し、
前記実行管理部は、前記ＣＰＵの命令アドレスに従って、今回読み出し先のＥ‐記憶部が前回読み出し先のＥ‐記憶部とは異なるかを判定し、異なるときは前記ホストに命令書替指令を出力するのを原則とするが、例外処理のときは前記命令書替指令の出力を停止し、前記今回読み出し先のＥ‐記憶部から例外処理を読み出して前記ＣＰＵに転送し、
前記ＣＰＵは、前記実行管理部から転送された前記例外処理を実行するように構成されたデバッガ装置。
【請求項１１】
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続され、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が条件分岐命令の実行の場合、分岐が成立するか否かを判定し、成立するときは前記ホストに命令書替指令を出力する実行管理部と、
を備えたデバッガ装置。
【請求項１２】
請求項１１記載のデバッガ装置において、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースし、条件分岐命令が存在している場合に分岐先と分岐元とを含む命令列を分割し、命令列ずつ命令を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令を命令列ずつ順次に複数の前記Ｅ‐記憶部に書き込み、
前記ＣＰＵは、前記条件分岐命令のアドレスを前記実行管理部に出力し、
前記実行管理部は、前記条件分岐命令の分岐が成立するか否かを判定し、さらに、前記ＣＰＵの命令アドレスに従って、前記条件分岐命令の今回読み出し先のＥ‐記憶部が前回読み出し先のＥ‐記憶部とは異なるかを判定し、異なるときは前記ホストに命令書替指令を出力し、前記今回読み出し先のＥ‐記憶部から前記条件分岐命令を読み出して前記ＣＰＵに転送し、また、前記条件分岐命令が成立しないときは、前記条件分岐命令の次命令の書替指令を前記ホストに出力し、
前記ＣＰＵは、前記実行管理部から転送された前記条件分岐命令を実行し、
前記ホストは、前記命令書替指令を受けて命令をトレースし、また、前記次命令の書替指令を受けて命令をトレースし、それぞれ次に実行すべき命令列を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令列を記憶容量分ずつ前回読み出し先のＥ‐記憶部に書き込むように構成されたデバッガ装置。
【請求項１３】
請求項１１または請求項１２記載のデバッガ装置において、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースし、トレースを行った命令に対してシミュレーションを実施し、かつ、前記シミュレーションの結果が前記条件分岐命令の存在を示している場合に、分岐の成立または不成立を予測し、分岐が不成立と予測される場合には、前記実行管理部に対する分岐先の命令列の転送を停止するように構成されたデバッガ装置。
【請求項１４】
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するが、複数の条件分岐命令を含む命令列を転送することがあるホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続され、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が前記複数の条件分岐命令のうちの第１の条件分岐命令の実行の場合、分岐が成立するか否かを判定し、成立するときは前記ホストに命令書替指令を出力し、成立しないときは前記命令書替指令の出力を停止する実行管理部と、
を備えたデバッガ装置。
【請求項１５】
請求項１４記載のデバッガ装置において、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースし、複数の条件分岐命令が存在している場合に複数の分岐先と１つの分岐元とを含む命令列を分割し、命令列ずつ命令を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令を命令列ずつ順次に複数の前記Ｅ‐記憶部に書き込み、
前記ＣＰＵは、第１の条件分岐命令のアドレスを前記実行管理部に出力し、
前記実行管理部は、前記第１の条件分岐命令の分岐が成立するか否かを判定し、さらに、前記ＣＰＵの命令アドレスに従って、前記第１の条件分岐命令の今回読み出し先のＥ‐記憶部が前回読み出し先のＥ‐記憶部とは異なるかを判定し、異なるときは前記ホストに命令書替指令を出力し、前記今回読み出し先のＥ‐記憶部から前記第１の条件分岐命令を読み出して前記ＣＰＵに転送し、また、前記第１の条件分岐命令が成立しないときは、前記第１の条件分岐命令の次命令の書替指令を前記ホストに出力し、
前記ＣＰＵは、前記実行管理部から転送された前記第１の条件分岐命令を実行し、
前記ホストは、前記命令書替指令を受けて命令をトレースし、また、前記次命令の書替指令を受けて命令をトレースし、それぞれ次に実行すべき命令列を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令列を記憶容量分ずつ前回読み出し先のＥ‐記憶部に書き込むように構成され、
前記ＣＰＵは、第２の条件分岐命令のアドレスを前記実行管理部に出力し、
前記実行管理部は、第２の条件分岐命令の分岐の成立もしくは不成立に従って上記同様の処理を行うように構成されたデバッガ装置。
【請求項１６】
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果をタスクの命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続され、前記ホストから転送されてくるタスクの命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つからタスクの命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令がタスク切替の実行の場合、前記ホストに命令書替指令を出力する実行管理部と、
を備えたデバッガ装置。
【請求項１７】
請求項１６記載のデバッガ装置において、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースし、タスク切替が存在している場合に分岐先と分岐元との命令列を分割し、タスク単位の命令を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令をタスク単位で順次に複数の前記Ｅ‐記憶部に書き込み、
前記ＣＰＵは、タスク切替の命令アドレスを前記実行管理部に出力し、
前記実行管理部は、前記ＣＰＵの命令アドレスに従って、タスク切替の分岐先のＥ‐記憶部が前回読み出し先のＥ‐記憶部とは異なるかを判定し、異なるときは前記ホストに命令書替指令を出力し、前記今回読み出し先のＥ‐記憶部からタスクの命令列を読み出して前記ＣＰＵに転送し、
前記ＣＰＵは、前記実行管理部から転送されてくるタスクの命令列を実行し、
前記ホストは、前記命令書替指令を受けて命令をトレースし、次に実行すべきタスクの命令列を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくるタスクの命令列を記憶容量分ずつ前回読み出し先のＥ‐記憶部に書き込むように構成されたデバッガ装置。
【請求項１８】
請求項１３記載のデバッガ装置において、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースして実行の木構造を作成し、
前記ホストは、前記木構造に基づいて分岐命令の分岐先と分岐元との命令列を分割し、命令列ずつ命令を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令を命令列ずつ順次に複数の前記Ｅ‐記憶部に書き込むように構成されたデバッガ装置。
【請求項１９】
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する単一のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして書込み先頭アドレスとともに転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続され、前記ホストから転送されてくる前記書込み先頭アドレスを保持し、前記ホストから転送されてくる前記命令列を前記書込み先頭アドレスに従って前記Ｅ‐記憶部に書き込み、前記ホストから転送されてくる書込み先頭アドレスおよび先頭命令アドレスを保持し、前記ＣＰＵの命令アドレスを、前記書込みアドレスと前記先頭命令アドレスに基づいて前記Ｅ‐記憶部をアクセスするアドレスに変換し、変換後のアドレスに従って前記Ｅ‐記憶部から命令を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が分岐命令の実行の場合、前記ホストにアドレス書替指令を出力し、前記アドレス書替指令によって前記ホストから転送されてくる次に実行すべき命令列の書込み先頭アドレスおよび先頭命令アドレスを保持する実行管理部と、
を備えたデバッガ装置。
【請求項２０】
請求項１９記載のデバッガ装置において、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースし、分岐命令が存在している場合に分岐先と分岐元との命令列を分割し、命令列ずつ命令とその書込み先頭アドレスを前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令を命令列ずつ前記書込み先頭アドレスに従って前記Ｅ‐記憶部に書き込み、さらに先頭命令アドレスを保持し、
前記ＣＰＵは、分岐命令のアドレスを前記実行管理部に出力し、
前記実行管理部は、前記ＣＰＵの分岐命令のアドレスに従って、前記分岐命令のアドレスが今回先頭命令アドレスとは異なるかを判定し、異なるときは前記ホストにアドレス書替指令を出力し、
前記ホストは、前記アドレス書替指令を受けて命令をトレースし、次に実行すべき命令列の書込み先頭アドレスおよび先頭命令アドレスを前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる前記書込み先頭アドレスおよび先頭命令アドレスを保持するように構成されたデバッガ装置。
【請求項２１】
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する単一のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして書込み先頭アドレスとともに転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続され、前記ホストから転送されてくる前記書込み先頭アドレスを保持し、前記ホストから転送されてくる前記命令列を前記書込み先頭アドレスに従って前記Ｅ‐記憶部に書き込み、前記ホストから転送されてくる書込み先頭アドレスおよび先頭命令アドレス、次候補の書込み先頭アドレスおよび次候補の先頭命令アドレスを保持し、前記ＣＰＵの命令アドレスを、前記書込みアドレスと前記先頭命令アドレスに基づいて前記Ｅ‐記憶部をアクセスするアドレスに変換し、変換後のアドレスに従って前記Ｅ‐記憶部から命令を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が分岐命令の実行の場合、現候補の書込み先頭アドレスを前記次候補の書込み先頭アドレスと置き換えるとともに、現候補の先頭命令アドレスを前記次候補の先頭命令アドレスと置き換え、前記ホストにアドレス書替指令を出力し、前記アドレス書替指令によって前記ホストから転送されてくる次に実行すべき命令列の書込み先頭アドレスおよび先頭命令アドレスをそれぞれ次候補として保持する実行管理部と、
を備えたデバッガ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストＰＣからシステムＬＳＩに供給された命令を、Ｅ‐メモリ（エミュレーションメモリ）に一時的に格納し、Ｅ‐メモリからＣＰＵに供給する構成のデバッガ装置に関する。
【背景技術】
【０００２】
従来のデバッガ装置の一例であるインサーキットエミュレータ（ＩＣＥ）は、キャッシュメモリ等の内蔵メモリにデバッグモニタプログラムを書き込み、ＣＰＵの命令のエミュレートを行う。
【特許文献１】特開平１０−１６１９０３号公報（第３−４頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記の従来の技術の場合に、システムＬＳＩとＩＣＥとが別チップであるため、チップ間遅延が大きいと、命令をエミュレートすることができない。ＩＣＥをシステムＬＳＩに内蔵すると、面積増大を招く。また、内蔵メモリを用いるときは、容量不足となる。外付けＲＯＭからモニタプログラムをダウンロードする場合は、内蔵ＲＯＭがデバッグできない。また、命令内蔵ＲＯＭはエミュレーションできない。
【０００４】
したがって、本発明の主たる目的は、面積増を抑制しながら、Ｅ‐メモリへの命令書き込みを効率良く行え、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給できるデバッガ装置を提供することである。
【課題を解決するための手段】
【０００５】
以下、複数種類の構成要素が記述されるが、これら各構成要素については、ハードウエアで構成してもよいし、あるいはソフトウエアで構成してもよいし、あるいはハードウエアとソフトウエアとの組み合わせで構成してもよい。
【０００６】
エミュレーション記憶部は、ＣＰＵが実行する命令を一時的に格納するためのものであり、以下、単にＥ‐記憶部と記載する。
【０００７】
Ｅ‐メモリの実行管理部は、ＣＰＵとＥ‐記憶部とホストＰＣに接続されて、これら３者間での制御信号、データの中継を行うものであり、単に実行管理部と記載する。また、ホストＰＣを単にホストと記載する。
【０００８】
（１）本発明のデバッガ装置は、
ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記ＣＰＵと前記Ｅ‐記憶部とホストに接続された、次のような実行管理部とを備えている。
【０００９】
前記実行管理部は、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスが該当しないときは前記ホストに命令書替指令を出力するものとして構成されている。
【００１０】
この構成においては、予めホストで命令を実行順にトレースし、その結果を順次に複数のＥ‐記憶部に転送して格納する。これにより、Ｅ‐記憶部への命令の書き込みを効率良く行え、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００１１】
（２）本発明のデバッガ装置は、
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続された、次のような実行管理部とを備えている。
【００１２】
前記実行管理部は、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスが該当しないときは前記ホストに命令書替指令を出力するものとして構成されている。
【００１３】
この構成においては、Ｅ‐記憶部に所要の命令が格納されていないときは、Ｅ‐記憶部を切り替えとともに、命令書替指令を出力し、ホストから次に実行すべき命令列を読み込み、現在不使用のＥ‐記憶部の方へ格納する。これにより、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００１４】
（３）本発明のデバッガ装置は、
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続された、次のような実行管理部とを備えている。
【００１５】
前記実行管理部は、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が無条件分岐命令の実行の場合、前記ホストに命令書替指令を出力するものとして構成されている。
【００１６】
この構成においては、予めホストで命令を実行順にトレースし、無条件分岐までの命令列と無条件分岐先命令以降の命令列とを互いに独立した複数のＥ‐記憶部に転送して格納する。そして、無条件分岐命令の実行時にＥ‐記憶部を切り替える。これにより、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００１７】
（４）本発明のデバッガ装置は、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースし、無条件分岐命令の分岐先が同一のＥ‐記憶部の記憶領域内に該当する場合、前記実行管理部は、前記同一のＥ‐記憶部に収まる複数の命令列を同一のＥ‐記憶部に書き込み、
前記ＣＰＵは、前記無条件分岐命令のアドレスを前記実行管理部に出力し、
前記実行管理部は、前記ＣＰＵの命令アドレスに従って、前記無条件分岐命令の今回読み出し先のＥ‐記憶部が前回読み出し先のＥ‐記憶部と同じかを判定し、同じであるときは前記命令書替指令の出力を停止するように構成されている。
【００１８】
この構成においては、予めホストで命令を実行順にトレースする際に、その分岐先がＥ‐記憶部の記憶容量内に収まるか否かを判定する。記憶容量内に収まると判定した場合、分岐先を別の命令列として取り扱わないようにする。これにより、分岐のために新たに命令を転送してＥ‐記憶部に書き込む必要性を排除できる。したがって、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００１９】
（５）本発明のデバッガ装置は、
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続された、次のような実行管理部とを備えている。
【００２０】
前記実行管理部は、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が無条件分岐命令の実行の場合、前記ホストに命令書替指令を出力し、前記ＣＰＵの命令アドレスの命令がサブルーチンコール命令の実行の場合、前記命令書替指令の出力を停止するものとして構成されている。
【００２１】
この構成においては、サブルーチンコール命令で分岐する場合に、サブルーチン分岐情報を保持し、サブルーチンコール命令で分岐の際は、分岐元の命令列を変更しない制御とする。これにより、新たに命令を転送してＥ‐記憶部に書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００２２】
（６）本発明のデバッガ装置は、
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続された、次のような実行管理部とを備えている。
【００２３】
前記実行管理部は、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が無条件分岐命令の実行の場合、前記ホストに命令書替指令を出力し、前記ＣＰＵの命令アドレスの命令が例外処理の実行の場合、前記命令書替指令の出力を停止するものとして構成されている。
【００２４】
この構成においては、割込み処理等の例外処理が発生する場合に、例外処理を保持し、例外処理で分岐の際は、分岐元の命令列を変更しない制御とする。これにより、新たに命令を転送してＥ‐記憶部に書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００２５】
（７）本発明のデバッガ装置は、
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続された、次のような実行管理部とを備えている。
【００２６】
前記実行管理部は、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が条件分岐命令の実行の場合、分岐が成立するか否かを判定し、成立するときは前記ホストに命令書替指令を出力するものとして構成されている。
【００２７】
この構成においては、命令列に条件分岐命令を含む場合、条件分岐命令の成立／不成立によって分岐先命令列が必要か不必要かに分かれる。成立／不成立いずれの場合においても、不必要な命令列を次の必要な命令列に書き替える。これにより、新たに命令を転送してＥ‐記憶部へ書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００２８】
（８）本発明のデバッガ装置は、次のような機能を有するホストを備えている。すなわち、
前記ＣＰＵが実行する命令を実行順にトレースし、トレースを行った命令に対してシミュレーションを実施する。そして、前記シミュレーションの結果が前記条件分岐命令の存在を示している場合に、分岐の成立または不成立を予測し、分岐が不成立と予測される場合には、前記実行管理部に対する分岐先の命令列の転送を停止するものとして構成されている。
【００２９】
この構成においては、予めホストで実行命令をトレースする際に、この命令列のシミュレーションを実施し、内部レジスタ等の値を保持して分岐の成立／不成立を予測する。これにより、新たに命令を転送してＥ‐記憶部へ書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００３０】
（９）本発明のデバッガ装置は、
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして転送するが、複数の条件分岐命令を含む命令列を転送することがあるホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続された、次のような実行管理部とを備えている。
【００３１】
前記実行管理部は、前記ホストから転送されてくる命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つから命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が前記複数の条件分岐命令のうちの第１の条件分岐命令の実行の場合、分岐が成立するか否かを判定し、成立するときは前記ホストに命令書替指令を出力し、成立しないときは前記命令書替指令の出力を停止するものとして構成されている。ここでの技術的特徴は、命令列に複数の条件分岐が含まれているということである。
【００３２】
この構成においては、命令列に複数の条件分岐を含む場合、複数の条件分岐命令のアドレスを例えばＦＩＦＯ（First-In First-Out）に保持し、分岐不成立毎にシフトを実施し、分岐成立時には、ＦＩＦＯの内容をクリアする。これにより、新たに命令を転送してＥ‐記憶部へ書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００３３】
（１０）本発明のデバッガ装置は、
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する複数のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果をタスクの命令列にして転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続された、次のような実行管理部とを備えている。
【００３４】
前記実行管理部は、前記ホストから転送されてくるタスクの命令列を個別に複数の前記Ｅ‐記憶部に書き込み、前記ＣＰＵの命令アドレスに従って前記複数のＥ‐記憶部の１つからタスクの命令列を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令がタスク切替の実行の場合、前記ホストに命令書替指令を出力するものとして構成されている。
【００３５】
この構成においては、予めホストでＯＳ（operating system）のタスク毎に命令列を分割し、タスク毎の命令列をＥ‐記憶部に転送して格納し、タスク切替時にＥ‐記憶部を切り替える。これにより、新たに命令を転送してＥ‐記憶部に書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００３６】
（１１）本発明のデバッガ装置は、
前記ホストは、前記ＣＰＵが実行する命令を実行順にトレースして実行の木構造を作成し、
前記ホストは、前記木構造に基づいて分岐命令の分岐先と分岐元との命令列を分割し、命令列ずつ命令を前記実行管理部に転送し、
前記実行管理部は、前記ホストから転送されてくる命令を命令列ずつ順次に複数の前記Ｅ‐記憶部に書き込むように構成されている。
【００３７】
この構成においては、予めホストで全ての実行命令をトレースし、プログラム処理の乱れが発生する箇所（節部）を検出し、検出した節部のアドレスと、節部と節部との間のバイト数を木構造として記録する。これにより、プログラムの各命令の振る舞いの解析に従ってＥ‐記憶部の書き替えを行う必要性を排除できる。したがって、解析に起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００３８】
（１２）本発明のデバッガ装置は、
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する単一のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして書込み先頭アドレスとともに転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続された、次のような実行管理部とを備えている。
【００３９】
前記実行管理部は、前記ホストから転送されてくる前記書込み先頭アドレスを保持し、前記ホストから転送されてくる前記命令列を前記書込み先頭アドレスに従って前記Ｅ‐記憶部に書き込み、前記ホストから転送されてくる書込み先頭アドレスおよび先頭命令アドレスを保持し、前記ＣＰＵの命令アドレスを、前記書込みアドレスと前記先頭命令アドレスに基づいて前記Ｅ‐記憶部をアクセスするアドレスに変換し、変換後のアドレスに従って前記Ｅ‐記憶部から命令を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が分岐命令の実行の場合、前記ホストにアドレス書替指令を出力し、前記アドレス書替指令によって前記ホストから転送されてくる次に実行すべき命令列の書込み先頭アドレスおよび先頭命令アドレスを保持するものとして構成されている。ここでの技術的特徴は、Ｅ‐記憶部が単一であるということである。
【００４０】
この構成においては、ホストからＥ‐記憶部への書き込みの際に書込み先頭アドレスを転送するとともに、Ｅ‐記憶部からの命令の読み出しの際にホストから書込み先頭アドレスと先頭命令アドレスを転送することで、Ｅ‐記憶部への書き込み、読み出しを連続した空間で行うことができる。その結果、単一のＥ‐記憶部を有効的に使用することが可能となる。
【００４１】
（１３）本発明のデバッガ装置は、
命令を実行するＣＰＵと、
前記ＣＰＵが実行する命令を格納する単一のＥ‐記憶部と、
前記Ｅ‐記憶部に格納する命令をトレースし、その結果を命令列にして書込み先頭アドレスとともに転送するホストと、
前記ＣＰＵと前記Ｅ‐記憶部と前記ホストに接続された、次のような実行管理部とを備えている。
【００４２】
前記実行管理部は、前記ホストから転送されてくる前記書込み先頭アドレスを保持し、前記ホストから転送されてくる前記命令列を前記書込み先頭アドレスに従って前記Ｅ‐記憶部に書き込み、前記ホストから転送されてくる書込み先頭アドレスおよび先頭命令アドレス、次候補の書込み先頭アドレスおよび次候補の先頭命令アドレスを保持し、前記ＣＰＵの命令アドレスを、前記書込みアドレスと前記先頭命令アドレスに基づいて前記Ｅ‐記憶部をアクセスするアドレスに変換し、変換後のアドレスに従って前記Ｅ‐記憶部から命令を読み出して前記ＣＰＵへ転送し、前記ＣＰＵの命令アドレスの命令が分岐命令の実行の場合、現候補の書込み先頭アドレスを前記次候補の書込み先頭アドレスと置き換えるとともに、現候補の先頭命令アドレスを前記次候補の先頭命令アドレスと置き換え、前記ホストにアドレス書替指令を出力し、前記アドレス書替指令によって前記ホストから転送されてくる次に実行すべき命令列の書込み先頭アドレスおよび先頭命令アドレスをそれぞれ次候補として保持するものとして構成されている。
【００４３】
この構成においては、書込み先頭アドレスと先頭命令アドレスの２つを保持し、分岐の際に次候補の書込み先頭アドレス、先頭命令アドレスと置き換える。これにより、分岐の際、新たにアドレスを転送することに起因するオーバーヘッドを抑制することができる。
【発明の効果】
【００４４】
上記（１）の本発明によれば、予めホストで命令を実行順にトレースし、その結果を順次に複数のＥ‐記憶部に転送して格納するので、Ｅ‐記憶部への命令の書き込みを効率良く行え、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００４５】
上記（２）の本発明によれば、Ｅ‐記憶部に所要の命令が格納されていないときは、Ｅ‐記憶部を切り替えるとともに、命令書替指令を出力し、ホストから次に実行すべき命令列を読み込み、現在不使用のＥ‐記憶部の方へ格納するので、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００４６】
上記（３）の本発明によれば、予めホストで命令を実行順にトレースし、無条件分岐までの命令列と無条件分岐先命令以降の命令列とを互いに独立した複数のＥ‐記憶部に転送して格納し、無条件分岐命令の実行時にＥ‐記憶部を切り替えるので、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００４７】
上記（４）の本発明によれば、予めホストで命令を実行順にトレースする際に、その分岐先がＥ‐記憶部の記憶容量内に収まるか否かを判定し、記憶容量内に収まると判定した場合、分岐先を別の命令列として取り扱わないようにするので、分岐のために新たに命令を転送してＥ‐記憶部に書き込む必要性を排除できる。したがって、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００４８】
上記（５）の本発明によれば、サブルーチンコール命令で分岐する場合に、サブルーチン分岐情報を保持し、サブルーチンコール命令で分岐の際は、分岐元の命令列を変更しない制御とするので、新たに命令を転送してＥ‐記憶部に書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００４９】
上記（６）の本発明によれば、割込み処理等の例外処理が発生する場合に、例外処理を保持し、例外処理で分岐の際は、分岐元の命令列を変更しない制御とするので、新たに命令を転送してＥ‐記憶部に書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００５０】
上記（７）の本発明によれば、命令列に条件分岐命令を含む場合、条件分岐命令の成立／不成立によって分岐先命令列が必要か不必要かに分かれる。成立／不成立いずれの場合においても、不必要な命令列を次の必要な命令列に書き替えるので、新たに命令を転送してＥ‐記憶部へ書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００５１】
上記（８）の本発明によれば、予めホストで実行命令をトレースする際に、この命令列のシミュレーションを実施し、内部レジスタ等の値を保持して分岐の成立／不成立を予測するので、新たに命令を転送してＥ‐記憶部へ書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００５２】
上記（９）の本発明によれば、命令列に複数の条件分岐を含む場合、複数の条件分岐命令のアドレスを例えばＦＩＦＯ（First-In First-Out）に保持し、分岐不成立毎にシフトを実施し、分岐成立時には、ＦＩＦＯの内容をクリアするので、新たに命令を転送してＥ‐記憶部へ書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００５３】
上記（１０）の本発明によれば、予めホストでＯＳ（operating system）のタスク毎に命令列を分割し、タスク毎の命令列をＥ‐記憶部に転送して格納し、タスク切替時にＥ‐記憶部を切り替えるので、新たに命令を転送してＥ‐記憶部に書き込む際の転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００５４】
上記（１１）の本発明によれば、予めホストで全ての実行命令をトレースし、プログラム処理の乱れが発生する箇所（節部）を検出し、検出した節部のアドレスと、節部と節部との間のバイト数を木構造として記録するので、プログラムの各命令の振る舞いの解析に従ってＥ‐記憶部の書き替えを行う必要性を排除できる。したがって、解析に起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することができる。
【００５５】
上記（１２）の本発明によれば、ホストからＥ‐記憶部への書き込みの際に書込み先頭アドレスを転送するとともに、Ｅ‐記憶部からの命令の読み出しの際にホストから書込み先頭アドレスと先頭命令アドレスを転送することで、Ｅ‐記憶部への書き込み、読み出しを連続した空間で行うことができる。その結果、単一のＥ‐記憶部を有効的に使用することが可能となる。
【００５６】
上記（１３）の本発明によれば、書込み先頭アドレスと先頭命令アドレスの２つを保持し、分岐の際に次候補の書込み先頭アドレス、先頭命令アドレスと置き換えるので、分岐の際、新たにアドレスを転送することに起因するオーバーヘッドを抑制することができる。
【発明を実施するための最良の形態】
【００５７】
以下、本発明の好ましい実施形態について図面を参照して説明する。
【００５８】
（実施の形態１）
図１は、本発明の実施の形態１におけるデバッグ装置の構成を示すブロック図である。図１に示すように、システムＬＳＩ１０１は、ＣＰＵ１１０、ＲＯＭ１１１、セレクタ１１２、エミュレーションメモリ実行管理部１１３、シリアル送受信部１１４、第１エミュレーションメモリ１１５および第２エミュレーションメモリ１１６から構成されている。以下、エミュレーションメモリ実行管理部は単に実行管理部と記載し、シリアル送受信部は単に送受信部と、第１エミュレーションメモリは第１Ｅ‐メモリと、第２エミュレーションメモリは第２Ｅ‐メモリと、それぞれ略記する。ホストＰＣ（以下、ホストと略記）１０２は、送受信部１１４に対してシリアル送受信可能なデバッガソフト搭載のコンピュータである。
【００５９】
図２は、実施の形態１における実行管理部の構成を示すブロック図である。図２に示すように、実行管理部１１３は、第１アドレスセレクタ１２１、第１アドレス変換器１２２、第１比較器１２３、第１アドレスレジスタ１２４、第２アドレスセレクタ１２５、第２アドレス変換器１２６、第２比較器１２７、第２アドレスレジスタ１２８、書込制御部１２９、アクセスメモリ変更検出部１３０、データセレクタ１３１、論理和回路１３２および実行メモリ保持部１３４から構成されている。以下、第１アドレスセレクタは第１セレクタと略記し、第１アドレス変換器は第１変換器と、第１アドレスレジスタは第１レジスタと、第２アドレスセレクタは第２セレクタと、第２アドレス変換器は第２変換器と、第２アドレスレジスタは第２レジスタと、アクセスメモリ変更検出部は単に変更検出部と、論理和回路はＯＲ回路と、それぞれ略記する。
【００６０】
送受信部１１４は、ホストとシリアル送受信を行い、受信した命令および先頭命令のアドレス（以下、先頭アドレスと略記する）をパラレルデータにして実行管理部１１３に転送する一方、実行管理部１１３より入力した命令書替指令Ｓｃをシリアルデータとしてホストに送信する。
【００６１】
実行管理部１１３は、送受信部１１４を介してホスト１０２から受け取った命令を第１Ｅ‐メモリ１１５および第２Ｅ‐メモリ１１６に書き込み、第１Ｅ‐メモリ１１５または第２Ｅ‐メモリ１１６から読み出した命令をセレクタ１１２に送出するとともに、選択信号Ｓｅを出力する。
【００６２】
第１Ｅ‐メモリ１１５、第２Ｅ‐メモリ１１６は、実行管理部１１３からのアドレスに従ってアクセスされ、データの読み書きを行う。
【００６３】
セレクタ１１２は、実行管理部１１３からの選択信号Ｓｅが“Ｌ”の場合、ＲＯＭ１１１のデータを選択し、選択信号Ｓｅが“Ｈ”の場合、実行管理部１１３からのデータを選択する。ＣＰＵ１１０が出力する命令アドレスに従って、ＲＯＭ１１１がアクセスされ、あるいは、実行管理部１１３を介して第１Ｅ‐メモリ１１５または第２Ｅ‐メモリ１１６がアクセスされる。そして、読み出された命令がセレクタ１１２から供給され、ＣＰＵ１１０は、その命令を実行する。
【００６４】
書込制御部１２９は、送受信部１１４から命令および先頭アドレスを入力し、先頭アドレスを第１レジスタ１２４または第２レジスタ１２８に書き込み、第１Ｅ‐メモリ１１５または第２Ｅ‐メモリ１１６の記憶容量分の命令を第１セレクタ１２１または第２セレクタ１２５に送出する。
【００６５】
第１レジスタ１２４、第２レジスタ１２８は、書込制御部１２９からの先頭アドレスを格納する。
【００６６】
第１比較器１２３は、第１レジスタ１２４の先頭アドレスと、ＣＰＵ１１０からの命令アドレスを入力し、命令アドレスが第１Ｅ‐メモリ１１５の記憶領域に該当するか否かの判定を行う。また、第２比較器１２７は、第２レジスタ１２８の先頭アドレスと、ＣＰＵ１１０からの命令アドレスを入力し、命令アドレスが第２Ｅ‐メモリ１１６の記憶領域に該当するか否かの判定を行う。
【００６７】
第１変換器１２２は、第１比較器１２３の判定結果が肯定を示すときは、ＣＰＵの命令アドレスを、第１レジスタ１２４の先頭アドレスに基づいて、第１Ｅ‐メモリ１１５をアクセスするためのアドレスに変換する。また、第２変換器１２６は、第２比較器１２７の判定結果が肯定を示すときは、ＣＰＵの命令アドレスを、第２レジスタ１２８の先頭アドレスに基づいて、第２Ｅ‐メモリ１１６をアクセスするためのアドレスに変換する。
【００６８】
第１セレクタ１２１は、第１Ｅ‐メモリ１１５へのアクセスが書き込みの場合は書込制御部１２９のアドレスを選択し、それ以外の場合は第１変換器１２２の変換後アドレスを選択する。また、第２セレクタ１２５は、第２Ｅ‐メモリ１１６へのアクセスが書き込みの場合は書込制御部１２９のアドレスを選択し、それ以外の場合は第２変換器１２６の変換後アドレスを選択する。
【００６９】
データセレクタ１３１は、第１比較器１２３の判定結果が肯定を示す場合には第１Ｅ‐メモリ１１５のデータを選択し、第２比較器１２７の判定結果が肯定を示す場合には第２Ｅ‐メモリ１１６のデータを選択する。ＯＲ回路１３２は、第１比較器１２３の判定結果と第２比較器１２７の判定結果との論理和を選択信号Ｓｅとしてセレクタ１１２に出力する。
【００７０】
変更検出部１３０は、第１比較器１２３の判定結果と第２比較器１２７の判定結果に基づいて、現在実行中のメモリ番号と実行メモリ保持部１３４のメモリ番号とが異なるようになったときに、命令書替指令Ｓｃをアクティブにして送受信部１１４に出力する。実行メモリ保持部１３４は、変更検出部１３０から現在実行中のメモリ番号を受け取って保持する。
【００７１】
以上のように構成されたデバッガ装置について、以下にその動作を説明する。図３は、第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理するところのホストから転送される命令列を示す。この命令列は、第１Ｅ‐メモリ１１５および第２Ｅ‐メモリ１１６に格納された後、ＣＰＵ１１０によって実行されるものである。以下、（１），（２），（３）の３つの場合に分けて順を追って説明する。
【００７２】
（１）Ｅ‐メモリへの命令の書き込みの動作
ホストは、ＣＰＵ１１０が最初に実行する命令から始めて、命令の実行順にトレースを行い、命令列１として、命令列番号１と先頭アドレスを記憶する。命令列１のサイズは、第１Ｅ‐メモリ１１５の記憶容量に相当する。次に、ホストは、命令列２として、命令列番号２と先頭アドレスを記憶する。命令列２のサイズは、第２Ｅ‐メモリ１１６の記憶容量に相当する。以下同様に、ホストは、命令列３、命令列４…について、命令列番号と先頭アドレスを記憶する。
【００７３】
ホストは、命令列１の命令と先頭アドレスをシリアルデータに変換し、送受信部１１４に転送する。送受信部１１４は、受信した命令列１の命令と先頭アドレスをパラレルデータに変換した後、書込制御部１２９に転送する。書込制御部１２９は、先頭アドレスを第１レジスタ１２４に書き込む。この場合、第１セレクタ１２１は、書込制御部１２９が送出するアドレスを第１Ｅ‐メモリ１１５に送出し、そのアドレスに基づいて第１Ｅ‐メモリ１１５がアクセスされ、書込制御部１２９が送出する命令列１の命令が書き込まれる。
【００７４】
次いで、ホストは、命令列２の命令と先頭アドレスを送受信部１１４を介して書込制御部１２９に転送し、書込制御部１２９は、先頭アドレスを第２レジスタ１２８に書き込む。この場合、第２セレクタ１２５は、書込制御部１２９が送出するアドレスを第２Ｅ‐メモリ１１６に送出し、そのアドレスに基づいて第２Ｅ‐メモリ１１６がアクセスされ、書込制御部１２９が送出する命令列２の命令が書き込まれる。
【００７５】
（２）命令列１の実行の動作
ＣＰＵ１１０は、命令列１の命令アドレスを出力する。第１比較器１２３は、ＣＰＵの命令アドレスを第１レジスタ１２４の命令列１の先頭アドレスと比較して、命令アドレスが第１Ｅ‐メモリ１１５の記憶領域に該当するか否かを判定する。ここでは、その判定結果は肯定となる。第１変換器１２２は、第１比較器１２３の判定結果が肯定を示しているので、命令アドレスを命令列１の先頭アドレスに基づいて、第１Ｅ‐メモリ１１５をアクセスするためのアドレスに変換する。一方、第２比較器１２７の判定結果は否定となり、第２変換器１２６によるアドレス変換は行われない。
【００７６】
第１変換器１２２の変換後アドレスが第１セレクタ１２１によって選択され、第１Ｅ‐メモリ１１５に送出される。第１Ｅ‐メモリ１１５は変換後アドレスによってアクセスされ、データをデータセレクタ１３１に出力する。データセレクタ１３１は、第１比較器１２３の判定結果が肯定を示しているので、第１Ｅ‐メモリ１１５からのデータを選択し、セレクタ１１２に送出する。また、ＯＲ回路１３２は、第１比較器１２３の判定結果が肯定を示しているので、“Ｈ”の選択信号Ｓｅをセレクタ１１２に出力する。セレクタ１１２は、選択信号Ｓｅが“Ｈ”であるので、第１Ｅ‐メモリ１１５から読み出された命令を選択し、ＣＰＵ１１０に送出する。ＣＰＵ１１０は、第１Ｅ‐メモリ１１５からの命令を入力して、実行する。
【００７７】
変更検出部１３０は、第１比較器１２３の判定結果により、現在実行中のメモリ番号である“１”を実行メモリ保持部１３４に書き込む。
【００７８】
（３）命令列１から命令列２へ移る際の動作
ＣＰＵ１１０は、命令列２の命令アドレスを出力する。上記同様の処理を経て、今度は第２比較器１２７の判定結果が肯定で、第１比較器１２３の判定結果は否定となる。第２変換器１２６は、上記と同様にして、ＣＰＵの命令アドレスを命令列２の先頭アドレスに基づいて、第２Ｅ‐メモリ１１６をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵ１１０は、第２Ｅ‐メモリ１１６から読み出された命令を入力して、実行する。
【００７９】
変更検出部１３０は、第２比較器１２７の判定結果で、現在実行中のメモリ番号が“２”であり、実行メモリ保持部１３４が保持している“１”と異なるので、命令書替指令Ｓｃを送受信部１１４に出力する。また、現在実行中のメモリ番号“２”を実行メモリ保持部１３４に書き込む。
【００８０】
ここで命令書替指令Ｓｃをホストに送信するのは、第１Ｅ‐メモリ１１５からの命令読み出しおよび実行が終了し、命令列１の命令は処理済であるので、命令列２の実行中に次の命令列３を第１Ｅ‐メモリ１１５に格納させるためである。
【００８１】
送受信部１１４は、命令書替指令Ｓｃをホストに送信する。命令書替指令Ｓｃを受信したホストは、次の命令列の命令列３を、上記同様にして転送し、第１Ｅ‐メモリ１１５に格納する。
【００８２】
命令列２の読み出し・実行が終了し、命令列３の読み出し・実行に移行すると、上記と同様にして、命令書替指令Ｓｃがアクティブとされ、実行中の命令列３の次の命令列４をホストから第２Ｅ‐メモリ１１６に転送格納する。
【００８３】
以下同様にして、第１Ｅ‐メモリ１１５への命令格納と第２Ｅ‐メモリ１１６への命令格納とを交互に繰り返す。
【００８４】
以上のように本実施の形態によれば、予めホストで命令を実行順にトレースし、命令列の先頭アドレスを記憶しておき、第１Ｅ‐メモリ１１５と第２Ｅ‐メモリ１１６とを交互に切り替えながら命令列を転送格納することにより、Ｅ‐メモリへの書き込みを効率良く行え、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することが可能となる。
【００８５】
なお、ここでは、Ｅ‐メモリ２個を用いた例を示したが、３個以上を用いると、命令実行中の命令転送回数を減らすことが可能となる。また、システムＬＳＩとホストとの通信については、シリアル方式で行う例を示したが、パラレル方式等、他の通信方式でもよい。
【００８６】
（実施の形態２）
上記の実施の形態１では、Ｅ‐メモリの記憶容量の最終行以前に無条件分岐命令がある場合には、Ｅ‐メモリの全領域を活用することなく、命令列の転送先を別のＥ‐メモリへ切り替える。その際、命令転送のトラフィックに起因するオーバーヘッドが発生する。この不都合に対応したのが本発明の実施の形態２である。実施の形態２では、図１が援用される。
【００８７】
図４は、実施の形態２における実行管理部の構成を示すブロック図である。図４に示すように、Ｅ‐メモリ実行管理部１１３ａは、実施の形態１（図２）の第１レジスタ１２４に代えて第１アドレス・バイト数レジスタ１３６を備え、第２レジスタ１２８に代えて第２アドレス・バイト数レジスタ１３８を備えている。以下、第１アドレス・バイト数レジスタを第１レジスタと略記し、第２アドレス・バイト数レジスタを第２レジスタと略記する。第１レジスタ１３６および第２レジスタ１３８は、書込制御部１２９ａからの先頭アドレスおよび転送バイト数を格納するものとして構成されている。１３５は第１比較器、１３７は第２比較器である。その他の構成については図２と同様であるので、同一部分に同一符号を付すにとどめ、説明を省略する。
【００８８】
ホストは、命令および先頭アドレスに加えて、その命令列の転送バイト数も転送する。書込制御部１２９ａは、送受信部から入力した先頭アドレス、転送バイト数を、第１レジスタ１３６および第２レジスタ１３８に書き込む。そして、書込みアドレスをインクリメントしながら、命令列の命令を第１セレクタ１２１または第２セレクタ１２５に送出する。
【００８９】
第１比較器１３５は、第１レジスタ１３６の先頭アドレスおよび転送バイト数とＣＰＵの命令アドレスを入力し、命令アドレスが、先頭アドレスから転送バイト数内に該当するか否かの判定を行う。また、第２比較器１３７は、第２レジスタ１３８の先頭アドレスおよび転送バイト数とＣＰＵの命令アドレスを入力し、命令アドレスが、先頭アドレスから転送バイト数内に該当するか否かの判定を行う。
【００９０】
第１変換器１２２は、第１比較器１３５の判定結果が肯定を示すときは、ＣＰＵの命令アドレスを、第１レジスタ１３６の先頭アドレスおよび転送バイト数に基づいて、第１Ｅ‐メモリ１１５をアクセスするためのアドレスに変換する。また、第２変換器１２６は、第２比較器１３７の判定結果が肯定を示すときは、ＣＰＵの命令アドレスを、第２レジスタ１３８の先頭アドレスおよび転送バイト数に基づいて、第２Ｅ‐メモリ１１６をアクセスするためのアドレスに変換する。
【００９１】
以上のように構成されたデバッガ装置について、以下にその動作を説明する。図５は、第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理するところのホストから転送される命令列を示す。各命令列は、無条件分岐命令をもっている。
【００９２】
（１）Ｅ‐メモリへの命令の書き込みの動作
ホストは、開始命令から始めて命令の実行順にトレースを行い、無条件分岐命令ごとに命令列を分け、その先頭アドレスを記憶する。また、その命令列のバイト数を転送バイト数として記憶する。他の命令列についても同様である。
【００９３】
ホストは、命令列１の命令と先頭アドレスと転送バイト数を送受信部を介して書込制御部１２９ａに転送する。書込制御部１２９ａは、先頭アドレスおよび転送バイト数を第１レジスタ１３６に書き込む。第１セレクタ１２１は、書込制御部１２９ａが送出するアドレスを第１Ｅ‐メモリ１１５に送出し、そのアドレスに基づいて第１Ｅ‐メモリ１１５がアクセスされ、書込制御部１２９ａが送出する命令列１の命令が書き込まれる。命令列２の命令と先頭アドレスと転送バイト数についても、第２レジスタ１３８、第２セレクタ１２５を用いて同様に処理され、第２Ｅ‐メモリ１１６に命令列２の命令が書き込まれる。
【００９４】
（２）命令列１の実行の動作
ＣＰＵは、命令列１の命令アドレスを出力する。第１比較器１３５は、ＣＰＵの命令アドレスと第１レジスタ１３６の先頭アドレス、転送バイト数を入力し、ＣＰＵの命令アドレスが第１Ｅ‐メモリ１１５の記憶領域に該当する否かを判定する。ここでは、その判定結果は肯定となり、第１変換器１２２に出力される。第１変換器１２２は、ＣＰＵの命令アドレスを、命令列１の先頭アドレスおよび転送バイト数に基づいて、第１Ｅ‐メモリ１１５をアクセスするためのアドレスに変換する。一方、第２比較器１３７の判定結果は否定となり、第２変換器１２６によるアドレス変換は行われない。以下、上記と同様にして、ＣＰＵは、第１Ｅ‐メモリ１１５から読み出された命令を入力して、実行する。現在実行中のメモリ番号である“１”が実行メモリ保持部１３４に書き込まれる。
【００９５】
（３）無条件分岐命令１で分岐する際の動作
無条件分岐命令１がくると、第１比較器１３５では、ＣＰＵの命令アドレスが、第１レジスタ１３６の命令列１の先頭アドレスから転送バイト数内に該当しないので、判定結果は否定となる。したがって、第１変換器１２２によるアドレス変換は行われなくなる。
【００９６】
一方、第２比較器１３７では、ＣＰＵの命令アドレスが、第２レジスタ１３８の命令列２の先頭アドレスから転送バイト数内に該当することになり、判定結果は肯定となる。第２変換器１２６は、ＣＰＵの命令アドレスを、第２Ｅ‐メモリ１１６をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第２Ｅ‐メモリ１１６から読み出された命令を入力して、実行する。現在実行中のメモリ番号である“２”と実行メモリ保持部１３４の“１”とが異なるので、変更検出部１３０は命令書替指令Ｓｃを送信する。
【００９７】
命令書替指令Ｓｃを受信したホストは、次の命令列の命令列３を、上記同様にして転送し、第１Ｅ‐メモリ１１５に格納する。
【００９８】
（４）無条件分岐命令２で分岐する際の動作
無条件分岐命令２がくると、第２比較器１３７では、ＣＰＵの命令アドレスが、第２レジスタ１３８の命令列２の先頭アドレスから転送バイト数内に該当しないので、判定結果は否定となる。したがって、第２変換器１２６によるアドレス変換は行われなくなる。
【００９９】
一方、第１比較器１３５では、ＣＰＵの命令アドレスが、第１レジスタ１３６の先頭アドレスから転送バイト数内に該当することになり、判定結果は肯定となる。第１変換器１２２は、ＣＰＵの命令アドレスを、命令列３の先頭アドレスおよび転送バイト数に基づいて、第１Ｅ‐メモリ１１５をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第１Ｅ‐メモリ１１５から読み出された命令を入力して、実行する。現在実行中のメモリ番号である“１”と実行メモリ保持部１３４の“２”とが異なるので、変更検出部１３０は命令書替指令Ｓｃを送信する。
【０１００】
命令書替指令Ｓｃを受信したホストは、次の命令列４を、上記と同様にして転送し、第２Ｅ‐メモリ１１６に格納する。
【０１０１】
以降、命令列を更新しながら、上記（３）と（４）の動作を繰り返す。
【０１０２】
以上のように本実施の形態によれば、予めホストで命令を実行順にトレースし、命令列の先頭アドレスと転送バイト数を記憶しておき、無条件分岐までの命令列と無条件分岐先命令以降の命令列とを独立したＥ‐メモリに転送して格納する。そして、無条件分岐命令の実行時にＥ‐メモリを切り替える。これにより、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することが可能となる。
【０１０３】
なお、ここでは、Ｅ‐メモリ２個を用いた例を示したが、３個以上を用いると、命令実行中の命令転送回数を減らすことが可能となる。また、システムＬＳＩとホストとの通信については、シリアル方式で行う例を示したが、パラレル方式等、他の通信方式でもよい。
【０１０４】
（実施の形態３）
上記の実施の形態２では、命令列１の無条件分岐命令の分岐先が同一Ｅ‐メモリ内に収まる場合でも、分岐先以降を命令列２として別のＥ‐メモリに書き込んでいる。そのため、転送トラフィックに起因するオーバーヘッドが増える。この不都合に対応したのが本発明の実施の形態３である。実施の形態３では、図１、図４が援用される。
【０１０５】
図６は、実施の形態３におけるＥ‐メモリ内に分岐先が存在する無条件分岐命令を含む命令列を示す。
【０１０６】
（１）Ｅ‐メモリへの命令の書き込みの動作
ホストは、開始命令から始めて命令の実行順にトレースを行い、無条件分岐命令が存在している場合に、第１Ｅ‐メモリ１１５の記憶領域に該当するか否かを検出し、該当する場合には、以降の命令を次の命令列として取り扱わず、そのまま命令列１として取り扱う。該当しない場合には、そこまでのバイト数を命令列１の転送バイト数として記憶する。同様に、命令列２についても、その先頭アドレスと転送バイト数を記憶する。
【０１０７】
これ以降の動作は、上記同様であり、第１Ｅ‐メモリ１１５にその記憶容量分の命令列１の命令が書き込まれ、第２Ｅ‐メモリ１１６にその記憶容量分の命令列２の命令が書き込まれる。
【０１０８】
（２）無条件分岐命令１で分岐する際の動作
ＣＰＵは、命令列１の命令アドレスを出力する。無条件分岐命令１がきたときの、現在実行中のメモリ番号“１”と実行メモリ保持部１３４のメモリ番号“１”とが同じであるため、変更検出部１３０は命令書替指令Ｓｃを出力しない。
【０１０９】
無条件分岐命令２がきたときの、現在実行中のメモリ番号“２”と実行メモリ保持部１３４のメモリ番号“１”とが異なるため、変更検出部１３０は命令書替指令Ｓｃを出力する。
【０１１０】
以上のように本実施の形態によれば、予めホストで命令を実行順にトレースする際に、その分岐先がＥ‐メモリの記憶容量内に収まるか否かを判定する。そして、収まるときは、分岐先を別の命令列として取り扱わないようにする。これにより、分岐に起因する転送トラフィックのオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することが可能となる。
【０１１１】
（実施の形態４）
上記の実施の形態２では、無条件分岐命令があれば、分岐先のＥ‐メモリの内容は書き替えられる。しかし、命令列１から命令列２にサブルーチンコール命令で分岐した場合、一旦、命令列２に分岐後、サブルーチンからの復帰命令を実行し、再び命令列１を実行することになる。すると、再び命令列１をＥ‐メモリに書き込む必要が生じる。その結果、転送トラフィックに起因するオーバーヘッドが増える。この不都合に対応したのが本発明の実施の形態４である。実施の形態４では、図１が援用される。
【０１１２】
図７は、実施の形態４における実行管理部の構成を示すブロック図である。図７に示すように、実施の形態２の場合の図４と相違するのは、サブルーチン分岐保持部（以下、単に保持部と記載）１４０である。保持部１４０は、書込制御部１２９ｂによって書き込まれたサブルーチン分岐情報を保持するとともに、アクセスメモリ変更検出部（以下、単に変更検出部と記載）１３０ｂにおいて変更された分岐回数を保持するように構成されている。
【０１１３】
ホストは、命令列の命令とともに、先頭アドレス、転送バイト数に加えて、その命令列のサブルーチン分岐情報も転送するように構成されている。
【０１１４】
書込制御部１２９ｂは、送受信部から入力した先頭アドレス、転送バイト数を第１レジスタ１３６および第２レジスタ１３８に書き込むとともに、サブルーチン分岐情報を保持部１４０に書き込む。そして、命令を第１セレクタ１２１または第２セレクタ１２５に送出する。
【０１１５】
変更検出部１３０ｂは、第１比較器１３５と第２比較器１３７の判定結果を保持し、判定結果が変化すると、保持部１４０をチェックし、サブルーチン分岐情報の分岐回数が１以上である場合、そのサブルーチン分岐情報を１減算し、また、分岐回数が０の場合、命令書替指令Ｓｃを送受信部に出力する。
【０１１６】
以上のように構成されたデバッガ装置について、以下にその動作を説明する。図８は、実施の形態４における第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理するところのホストから転送される命令列を示す。
【０１１７】
（１）Ｅ‐メモリへの命令の書き込みの動作
ホストは、開始命令から始めて命令の実行順にトレースを行い、サブルーチンコール命令が存在している場合は、その分岐先をサブルーチン命令列として記憶するとともに、その回数を記憶する。そして、無条件分岐命令に達すると、そこまでのバイト数を命令列１の転送バイト数として記憶する。
【０１１８】
次に、ホストは、上記で保持したサブルーチン命令列においてＣＰＵが実行する分岐先命令１から命令の実行順にトレースを行い、サブルーチン復帰命令に達すると、そこまでのバイト数を命令列２の転送バイト数として記憶する。さらに、ホストは、命令列３およびそれ以降の命令列についても、その先頭アドレスと転送バイト数とサブルーチンコール命令の回数を記憶する。
【０１１９】
ホストは、命令列１の命令と先頭アドレスと転送バイト数を送受信部を介して書込制御部１２９ｂに転送する。書込制御部１２９ｂは、先頭アドレスおよび転送バイト数を第１レジスタ１３６に書き込み、命令列１を第１セレクタ１２１に送出する。第１Ｅ‐メモリ１１５は、第１セレクタ１２１からのアドレスによってアクセスされ、書込制御部１２９ｂからの命令列１の命令を書き込む。
【０１２０】
次いで、ホストは、命令列２の命令と先頭アドレスと転送バイト数と分岐回数１回のサブルーチン分岐情報を送受信部を介して書込制御部１２９ｂに転送する。書込制御部１２９ｂは、先頭アドレスおよび転送バイト数を第２レジスタ１３８に書き込み、分岐回数１回のサブルーチン分岐情報を保持部１４０に書き込む。この場合、第２セレクタ１２５は、書込制御部１２９ｂが送出するアドレスを第２Ｅ‐メモリ１１６に送出し、そのアドレスに基づいて第２Ｅ‐メモリ１１６がアクセスされ、書込制御部１２９ｂが送出する命令列２の命令が書き込まれる。
【０１２１】
保持部１４０は、書込制御部１２９ｂからのサブルーチン分岐情報により命令列２がサブルーチンである旨の情報を保持する。
【０１２２】
（２）サブルーチンコール命令で分岐の際の動作
サブルーチンコール命令がくると、第１比較器１３５では、ＣＰＵの命令アドレスが、第１レジスタ１３６の命令列１の先頭アドレスから転送バイト数内に該当しないので、判定結果は否定となる。したがって、第１変換器１２２によるアドレス変換は行われなくなる。
【０１２３】
一方、第２比較器１３７では、ＣＰＵの命令アドレスが、第２レジスタ１３８の命令列２の先頭アドレスから転送バイト数内に該当することになり、判定結果は肯定となる。第２変換器１２６は、第２比較器１３７の判定結果が肯定を示しているので、ＣＰＵの命令アドレスを、第２レジスタ１３８の命令列２の先頭アドレスおよび転送バイト数に基づいて、第２Ｅ‐メモリ１１６をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第２Ｅ‐メモリ１１６から読み出された命令を入力して、実行する。
【０１２４】
変更検出部１３０ｂは、第１比較器１３５と第２比較器１３７の判定結果が変化するので、保持部１４０をチェックする。保持されているサブルーチン分岐情報は分岐回数１回を示していて、０ではないので、命令書替指令Ｓｃの出力は行わない。その結果、第１Ｅ‐メモリ１１５は、命令列１を保持する。変更検出部１３０ｂは、保持部１４０の分岐回数を１減算し、０回と更新する。
【０１２５】
（３）サブルーチン復帰命令で復帰の際の動作
サブルーチン復帰があると、第２比較器１３７では、ＣＰＵの命令アドレスが、第２レジスタ１３８の命令列２の先頭アドレスから転送バイト数内に該当しないので、判定結果は否定となる。したがって、第２変換器１２６によるアドレス変換は行われなくなる。
【０１２６】
一方、第１比較器１３５では、ＣＰＵの命令アドレスが、第１レジスタ１３６の命令列１の先頭アドレスから転送バイト数内に該当することになり、判定結果は肯定となる。第１変換器１２２は、第１比較器１３５の判定結果が肯定を示しているので、ＣＰＵの命令アドレスを、第１レジスタ１３６の命令列１の先頭アドレスおよび転送バイト数に基づいて、第１Ｅ‐メモリ１１５をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第１Ｅ‐メモリ１１５から読み出された命令を入力して、実行する。
【０１２７】
変更検出部１３０ｂは、第１比較器１３５と第２比較器１３７の判定結果が変化するので、保持部１４０をチェックする。保持されているサブルーチン分岐情報は分岐回数０回を示しているので、命令書替指令Ｓｃを送受信部に出力する。命令書替指令Ｓｃを受信したホストは、命令列３の命令と先頭アドレスと転送バイト数を送受信部を介して書込制御部１２９ｂに転送する。書込制御部１２９ｂは、先頭アドレスおよび転送バイト数を第２レジスタ１３８に書き込む。この場合、命令列３の命令を第２セレクタ１２５を介して第２Ｅ‐メモリ１１６に書き込む。
【０１２８】
次に、２回同じ命令列２へサブルーチン分岐する場合の動作について、以下に説明する。図９は、実施の形態４における命令列１から同じ命令列２へサブルーチン分岐する命令列の図である。
【０１２９】
（１）Ｅ‐メモリへの命令の書き込みの動作
図８の場合、命令列２の分岐回数が１回であったのに対して、図９の場合は、分岐回数が２回となっている。したがって、保持部１４０にはサブルーチン分岐情報として分岐回数２回が書き込まれる。その他は、図８での（１）の動作説明と同じである。
【０１３０】
（２）サブルーチンコール命令で分岐の際の動作
サブルーチンコール命令がくると、変更検出部１３０ｂは、保持部１４０をチェックするが、保持されている分岐回数は２回を示すので、命令書替指令Ｓｃの出力は行わない。その結果、第１Ｅ‐メモリ１１５は、命令列１を保持する。変更検出部１３０ｂは、保持部１４０の分岐回数を１減算し、１回と更新する。
【０１３１】
（３）サブルーチン復帰命令で復帰の際の動作
サブルーチン復帰があると、変更検出部１３０ｂは、保持部１４０をチェックするが、保持されている分岐回数は１回を示すので、命令書替指令Ｓｃの出力は行わず、第１Ｅ‐メモリ１１５は、命令列１を保持する。変更検出部１３０ｂは、保持部１４０の分岐回数を１減算し、０回と更新する。
【０１３２】
２回目にサブルーチン分岐したとき、保持部１４０の分岐回数が０であるので、命令書替指令Ｓｃが出力され、ホストから次の命令列のデータが転送される。
【０１３３】
以上のように本実施の形態によれば、サブルーチンコール命令で分岐する場合に、サブルーチン分岐情報とその回数を保持し、サブルーチンコール命令で分岐の際は、分岐元の命令列を変更しない制御を実施することで、再書き込みの転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することが可能となる。
【０１３４】
なお、ここでは、Ｅ‐メモリ２個を用いた例を示したが、３個以上を用いると、命令実行中の命令転送回数を減らすことが可能となる。また、システムＬＳＩとホストとの通信については、シリアル方式で行う例を示したが、パラレル方式等、他の通信方式でもよい。
【０１３５】
また、実施の形態３で述べたホストを用い、サブルーチン分岐先命令がＥ‐メモリの記憶容量に該当する場合、同一の命令列として取り扱うことも可能である。
【０１３６】
（実施の形態５）
上記の実施の形態１〜４において、命令列１の実行中に割込み処理等の例外処理があれば、例外処理からの復帰後に、再び命令列１を実行することになる。そのため、再び命令列１をＥ‐メモリに書き込む必要が生じる。その結果、転送トラフィックに起因するオーバーヘッドが増える。この不都合に対応したのが本発明の実施の形態５である。実施の形態５では、図１が援用される。
【０１３７】
図１０は、実施の形態５における実行管理部の構成を示すブロック図である。実施の形態２の場合の図４と相違するのは、例外処理保持部（以下、単に保持部と記載）１４３である。保持部１４３は、書込制御部１２９ｃによって書き込まれた例外処理情報を保持し、保持情報を変更検出部１３０ｃに出力するように構成されている。
【０１３８】
ホストは、命令列の命令とともに、先頭アドレス、転送バイト数に加えて、その命令列の例外処理情報も転送するように構成されている。
【０１３９】
書込制御部１２９ｃは、送受信部から入力した先頭アドレス、転送バイト数を第１レジスタ１３６または第２レジスタ１３８に書き込むとともに、例外処理情報を保持部１４３に書き込む。そして、命令を第１セレクタ１２１または第２セレクタ１２５に送出する。
【０１４０】
変更検出部１３０ｃは、第１比較器１３５と第２比較器１３７との判定結果を保持し、判定結果が変化すると、保持部１４３をチェックし、例外処理情報がない場合、命令書替指令Ｓｃを送受信部に出力する。
【０１４１】
以上のように構成されたデバッガ装置について、以下にその動作を説明する。図１１は、実施の形態５における第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理するところのホストから転送される命令列を示す。
【０１４２】
（１）Ｅ‐メモリへの命令の書き込みの動作
ホストは、割込み分岐先で最初に実行する開始命令から命令の実行順に割込み復帰命令までトレースを行い、命令列２の先頭アドレスを記憶する。また、その命令列のバイト数を命令列２の転送バイト数とし、例外処理情報も記憶する。
【０１４３】
次に、ホストは、開始命令から始めて命令の実行順にトレースを行い、無条件分岐命令が存在している場合、そこまでのバイト数を命令列１の転送バイト数として記憶する。
【０１４４】
ホストは、命令列１の命令と先頭アドレスと転送バイト数を送受信部を介して書込制御部１２９ｃに転送する。書込制御部１２９ｃは、先頭アドレスおよび転送バイト数を第１レジスタ１３６に書き込む。そして、第１Ｅ‐メモリ１１５は、第１セレクタ１２１からのアドレスによってアクセスされ、書込制御部１２９ｃからの命令列１の命令を書き込む。
【０１４５】
次いで、ホストは、命令列２の命令と先頭アドレスと転送バイト数と例外処理情報を送受信部を介して命令を書込制御部１２９ｃに転送する。書込制御部１２９ｃは、先頭アドレスおよび転送バイト数を第２レジスタ１３８に書き込み、例外処理情報を保持部１４３に書き込む。そして、第２セレクタ１２５を介して、命令列２の命令を第２Ｅ‐メモリ１１６に送出する。保持部１４３は、書込制御部１２９ｃから書き込まれた命令列２の例外処理情報を保持する。第２Ｅ‐メモリ１１６は、第２セレクタ１２５からアドレスを入力し、命令列２の命令を書き込む。
【０１４６】
（２）割込み発生の際の動作
ＣＰＵは、割込みを受け付け、割込み分岐先命令に分岐するために命令アドレスを出力する。命令アドレスの変化に伴って、第１比較器１３５の判定結果は否定となる一方、第２比較器１３７の判定結果は肯定となる。その結果、第１変換器１２２は不動作となり、第２変換器１２６は、ＣＰＵの命令アドレスを、第２Ｅ‐メモリ１１６をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第２Ｅ‐メモリ１１６から読み出された命令を入力して、実行する。
【０１４７】
変更検出部１３０ｃは、保持部１４３をチェックし、命令列２の例外処理情報が格納されていることから、命令書替指令Ｓｃの出力は行わない。その結果、第１Ｅ‐メモリ１１５は、命令列１を保持する。
【０１４８】
（３）割込み復帰命令で復帰の際の動作
ＣＰＵは、割込み復帰命令により割込み発生命令の命令アドレスを出力する。命令アドレスの変化に伴って、第２比較器１３７の判定結果は否定となる一方、第１比較器１３５の判定結果は肯定となる。その結果、第２変換器１２６は不動作となり、第１変換器１２２は、ＣＰＵの命令アドレスを、第１Ｅ‐メモリ１１５をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第１Ｅ‐メモリ１１５から読み出された命令を入力して、実行する。
【０１４９】
変更検出部１３０ｃは、保持部１４０をチェックし、例外処理情報が格納されていないので、命令書替指令Ｓｃを送受信部に出力する。命令書替指令Ｓｃを受信したホストは、次の命令列のデータを転送する。
【０１５０】
以上のように本実施の形態によれば、割込み処理等の例外処理が発生する場合に、例外処理であることを保持し、例外処理で分岐の際は、分岐元の命令列を変更しない制御を実施することで、再書き込みの転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することが可能となる。
【０１５１】
なお、ここでは、Ｅ‐メモリ１個を例外処理専用にしてしまうために、通常処理は、Ｅ‐メモリ１個しか用いられず、その結果、分岐によってオーバーヘッドが生じる。これに対しては、Ｅ‐メモリ３個以上を用いることにより、オーバーヘッドの発生を回避することが可能となる。
【０１５２】
なお、システムＬＳＩとホストとの通信については、シリアル方式で行う例を示したが、パラレル方式等、他の通信方式でもよい。
【０１５３】
（実施の形態６）
上記の実施の形態１〜５において、命令列に条件分岐命令を含む場合、条件分岐命令の成立、不成立に応じて処理が異なる。成立することを前提にして、あらかじめＥ‐メモリに分岐先の命令列を書き込んであるので、成立すれば分岐先の命令列をＥ‐メモリに書き込む必要はない。しかし、不成立であれば、別の命令列の書き替えが必要となる。この間に、転送トラフィックに起因するオーバーヘッドが増える。この不都合に対応したのが本発明の実施の形態６である。実施の形態６では、図１が援用される。
【０１５４】
図１２は、実施の形態６における実行管理部の構成を示すブロック図である。実施の形態２の場合の図４と相違するのは、分岐処理保持部（以下、単に保持部と記載）１４６と第３比較器１４７である。保持部１４６は、書込制御部１２９ｄによって書き込まれた条件分岐命令のアドレスを保持し、条件分岐命令のアドレスを第３比較器１４７に出力するように構成されている。第３比較器１４７は、保持部１４６の条件分岐命令のアドレスとＣＰＵの命令アドレスとを比較し、一致した場合、分岐命令実行情報を変更検出部１３０ｄに出力するように構成されている。
【０１５５】
ホストは、命令列の命令とともに、先頭アドレス、転送バイト数に加えて、その命令列の条件分岐命令のアドレスも転送するように構成されている。
【０１５６】
書込制御部１２９ｄは、送受信部から入力した先頭アドレスおよび転送バイト数を第１レジスタ１３６または第２レジスタ１３８に書き込むとともに、条件分岐命令のアドレスを保持部１４６に書き込む。そして、命令を第１セレクタ１２１または第２セレクタ１２５に送出する。
【０１５７】
変更検出部１３０ｄは、第３比較器１４７の分岐命令実行情報を入力し、次の命令実行サイクルで分岐が成立した場合、命令書替指令Ｓｃとして、分岐元の命令列を書き替える第１状態にセットして送受信部に出力し、次の命令で分岐が成立しない場合は、命令書替指令Ｓｃとして、分岐先の命令列を書き替える第２状態にセットして出力する。
【０１５８】
以上のように構成されたデバッガ装置について、以下にその動作を説明する。図１３は、実施の形態６における第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理するところのホストから転送される命令列を示す。
【０１５９】
（１）Ｅ‐メモリへの命令の書き込みの動作
ホストは、開始命令から始めて命令の実行順にトレースを行い、上記同様の処理を行うほか、条件分岐命令が存在している場合、条件分岐命令のアドレスを記憶するとともに、その分岐先を条件分岐成立命令列として保持する。
【０１６０】
次に、ホストは、上記で保持した条件分岐成立命令列において命令の実行順にトレースを行い、命令列２の先頭アドレスを記憶する。また、その命令列のバイト数を命令列２の転送バイト数とし、さらに、条件分岐成立命令情報を記憶する。さらに、ホストは、命令列３およびそれ以降の先頭アドレスと転送バイト数を記憶する。
【０１６１】
ホストは、命令列１の命令と条件分岐命令のアドレスと先頭アドレス列１の転送バイト数を送受信部を介して書込制御部１２９ｄに転送する。書込制御部１２９ｄは、先頭アドレスおよび転送バイト数を第１レジスタ１３６に書き込み、条件分岐命令のアドレスを保持部１４６に書き込む。そして、第１Ｅ‐メモリ１１５は、第１セレクタ１２１からのアドレスによってアクセスされ、書込制御部１２９ｄからの命令列１の命令を書き込む。保持部１４６は、書込制御部１２９ｄから書き込まれた条件分岐命令のアドレスを保持する。
【０１６２】
次いで、ホストは、命令列２について、前述同様に処理し、第２Ｅ‐メモリ１１６に命令列２の命令を書き込む。
【０１６３】
（２）命令列１の分岐命令が成立する場合の動作
ＣＰＵは、命令列１を実行し、条件分岐命令を実行する。第３比較器１４７は、保持部１４６の条件分岐命令のアドレスとＣＰＵの命令アドレスとを比較するが、ここでは一致するため、分岐命令実行情報を変更検出部１３０ｄに出力する。
【０１６４】
次の実行サイクルは、命令列１の条件分岐命令が成立するため、ＣＰＵは、次に、命令列２の分岐先命令１の命令アドレスを出力する。命令アドレスの変化に伴って、第１比較器１３５の判定結果は否定となる一方、第２比較器１３７の判定結果は肯定となる。その結果、第１変換器１２２は不動作となり、第２変換器１２６は、ＣＰＵの命令アドレスを、第２Ｅ‐メモリ１１６をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第２Ｅ‐メモリ１１６から読み出された命令を入力して、実行する。
【０１６５】
変更検出部１３０ｄは、第１比較器１３５と第２比較器１３７との判定結果により分岐が成立すると判断し、命令書替指令Ｓｃとして、分岐元の命令列１を命令列４に書き替える第１状態にセットし、送受信部に出力する。その結果は、第１Ｅ‐メモリ１１５に命令列４が書き込まれることになる。
【０１６６】
（３）命令列１の条件分岐命令が成立しない場合の動作
ＣＰＵは、命令列１を実行し、条件分岐命令を実行する。第３比較器１４７は、保持部１４６の条件分岐命令のアドレスとＣＰＵの命令アドレスとを比較するが、ここでは一致するため、分岐命令実行情報を変更検出部１３０ｄに出力する。
【０１６７】
次の実行サイクルでは、命令列１の条件分岐命令が不成立となるため、ＣＰＵは、命令列１において条件分岐命令の次の命令の命令アドレスを出力する。命令アドレスの変化に伴って、第１比較器１３５の判定結果は肯定であるが、第２比較器１３７の判定結果は否定となる。そして、変更検出部１３０ｄは、第１比較器１３５と第２比較器１３７との判定結果により分岐が成立しないと判断し、命令書替指令Ｓｃとして、条件分岐先の命令列２を命令列３に書き替える第２状態にセットし、送受信部に出力する。その結果は、第１Ｅ‐メモリ１１５に命令列３が書き込まれることになる。
【０１６８】
このように命令列に条件分岐命令を含む場合、条件分岐命令の成立／不成立によって分岐先命令列が必要か不必要かに分かれ、不必要となった命令列に限って、これを次の必要な命令列に書き替えることにより、再書き込みの転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することが可能となる。
【０１６９】
なお、実施の形態３で述べたホストを用い、条件分岐先命令がＥ‐メモリの記憶容量に該当する場合、同一の命令列として取り扱うことも可能である。
【０１７０】
（実施の形態７）
上記の実施の形態６の場合、命令列に複数の条件分岐を含む場合、次に実行すべき命令列のホストからの転送トラフィックが繁雑化する。そのため、命令列の再書き込みの転送トラフィックに起因するオーバーヘッドが増える。この不都合に対応したのが本発明の実施の形態７である。実施の形態７では、図１が援用される。
【０１７１】
図１４は、実施の形態７における実行管理部の構成を示すブロック図である。実施の形態６の場合の図１２と相違するのは、分岐処理保持ＦＩＦＯ１５１である。ＦＩＦＯ１５１は、書込制御部１２９ｅによって書き込まれた複数の条件分岐命令のアドレスを書き込まれた順序通り保持し、そのうち最前段の条件分岐命令のアドレスを第３比較器１４７ｅに出力する。また、第３比較器１４７ｅの判定結果が一致した際に保持する条件分岐命令のアドレスを１つずつ前段にシフトするように構成されている。第３比較器１４７ｅは、ＦＩＦＯ１５１の条件分岐命令のアドレスとＣＰＵの命令アドレスとを比較し、一致した場合、分岐命令実行情報を変更検出部１３０ｅおよびＦＩＦＯ１５１に出力するように構成されている。
【０１７２】
書込制御部１２９ｅは、命令列の命令とともに、先頭アドレス、転送バイト数、複数の条件分岐命令のアドレスを送受信部から入力し、先頭アドレスおよび転送バイト数を第１レジスタ１３６または第２レジスタ１３８に書き込み、複数の条件分岐命令のアドレスをＦＩＦＯ１５１に書き込む。そして、命令を第１セレクタ１２１または第２セレクタ１２５に送出する。
【０１７３】
変更検出部１３０ｅは、第３比較器１４７ｅの分岐命令実行情報を入力し、次の命令実行サイクルで分岐が成立した場合、命令書替指令Ｓｃとして、分岐元の命令列を書き替える第１状態にセットして送受信部に出力するとともに、ＦＩＦＯ１５１の格納値を全てリセットし、次の命令で分岐が成立しない場合、命令書替指令Ｓｃとして、分岐先の命令列を書き替える第２状態にセットして出力する。
【０１７４】
以上のように構成されたデバッガ装置について、以下にその動作を説明する。図１５は、実施の形態７における第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理するところのホストから転送される命令列を示す。
【０１７５】
（１）Ｅ‐メモリへの命令の書き込みの動作
ホストは、開始命令から始めて命令の実行順にトレースを行い、条件分岐命令が２つ存在している場合、それぞれの条件分岐命令のアドレスを記憶するとともに、それぞれの分岐先を条件分岐成立命令列として保持し、その他は上記同様の処理を行う。
【０１７６】
次に、ホストは、上記で保持した２つの条件分岐成立命令列においてＣＰＵが実行する分岐先命令１と分岐先命令２とから命令の実行順にトレースを行い、命令列２の先頭アドレス、命令列３の先頭アドレスを記憶する。また、命令列２の転送バイト数と命令列３の転送バイト数と、さらに、それぞれの条件分岐成立命令情報を記憶する。さらに、ホストは、命令列４およびそれ以降の先頭アドレスと転送バイト数を記憶する。
【０１７７】
ホストは、命令列１の命令と条件分岐命令１の転送バイト数と分岐命令アドレスと条件分岐命令２の転送バイト数と分岐命令アドレスを送受信部を介して書込制御部１２９ｅに転送する。書込制御部１２９ｅは、先頭アドレスおよび転送バイト数を第１レジスタ１３６に書き込む。書込制御部１２９ｅは、条件分岐命令１の分岐命令アドレスと条件分岐命令２の分岐命令アドレスをＦＩＦＯ１５１に順番に書き込む。
【０１７８】
上記同様にして、第１Ｅ‐メモリ１１５に命令列１の命令を書き込む。また、第２Ｅ‐メモリ１１６に命令列２の命令を書き込む。
【０１７９】
（２）命令列１の条件分岐命令１を実行し分岐が成立する場合の動作
ＣＰＵは、命令列１を実行し、条件分岐命令１を実行する。第３比較器１４７ｅは、ＦＩＦＯ１５１の条件分岐命令１の分岐命令アドレスとＣＰＵの命令アドレスとを比較するが、ここでは一致するため、分岐命令実行情報を変更検出部１３０ｅに出力する。
【０１８０】
次の実行サイクルで、ＣＰＵは、命令列１の条件分岐命令１の条件分岐命令が成立するので、次に、命令列２の分岐先命令１の命令アドレスを出力する。命令アドレスの変化に伴って、第１比較器１３５の判定結果は否定となる一方、第２比較器１３７の判定結果は肯定となる。その結果、第１変換器１２２は不動作となり、第２変換器１２６は、ＣＰＵの命令アドレスを、第２Ｅ‐メモリ１１６をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第２Ｅ‐メモリ１１６から読み出された命令を入力して、実行する。
【０１８１】
変更検出部１３０ｅは、第１比較器１３５と第２比較器１３７との判定結果により分岐が成立すると判断し、命令書替指令Ｓｃとして、分岐元の命令列１を命令列２の次の命令列（図示せず）に書き替える第１状態にセットして送受信部に出力するとともに、分岐が成立するため、ＦＩＦＯ１５１の格納値を全てリセットする。
【０１８２】
（３）命令列１の条件分岐命令１を実行し分岐が成立しない場合でかつ条件分岐命令２を実行し分岐が成立する場合の動作
ＣＰＵは、命令列１を実行し、条件分岐命令１を実行する。第３比較器１４７ｅは、ＦＩＦＯ１５１の条件分岐命令１の分岐命令アドレスとＣＰＵの命令アドレスとを比較するが、ここでは一致するため、分岐命令実行情報を変更検出部１３０ｅに出力する。
【０１８３】
次の実行サイクルで、ＣＰＵは、命令列１の条件分岐命令１の条件分岐命令が不成立であるので、条件分岐命令１から次の命令の命令アドレスを出力する。第１比較器１３５の判定結果は肯定のままで、第２比較器１３７の判定結果は否定となる。変更検出部１３０ｅは、第１比較器１３５と第２比較器１３７との判定結果により分岐が成立しないと判断し、命令書替指令Ｓｃとして、条件分岐先の命令列２を命令列３に書き替える第２状態にセットして送受信部に出力する。ＦＩＦＯ１５１は、第３比較器１４７ｅより判定結果が一致した際に保持する条件分岐命令のアドレスを１つずつ前段にシフトし、最前段は条件分岐命令２のアドレスに変更される。ＣＰＵは、命令列１を実行し、条件分岐命令２を実行する。第３比較器１４７ｅは、ＦＩＦＯ１５１の条件分岐命令２の分岐命令アドレスとＣＰＵの命令アドレスとを比較するが、ここでは一致するため、分岐命令実行情報を変更検出部１３０ｅに出力する。
【０１８４】
次の実行サイクルで、ＣＰＵは、命令列１の条件分岐命令２の条件分岐命令が成立し、次に、命令列２の分岐先命令１の命令アドレスを出力する。命令アドレスの変化に伴って、第１比較器１３５の判定結果は否定となる一方、第２比較器１３７の判定結果は肯定となる。その結果、第１変換器１２２は不動作となり、第２変換器１２６は、ＣＰＵの命令アドレスを、第２Ｅ‐メモリ１１６をアクセスするためのアドレスに変換する。
【０１８５】
変更検出部１３０ｅは、第１比較器１３５と第２比較器１３７との判定結果により分岐が成立すると判断し、命令書替指令Ｓｃとして、分岐元の命令列１を命令列３の次に実行する命令列に書き替える第１状態にセットして送受信部に出力するとともに、分岐が成立するため、ＦＩＦＯ１５１の格納値を全てリセットする。その結果は、第２Ｅ‐メモリ１１６に命令列３が書き込まれることになる。
【０１８６】
（４）命令列１の条件分岐命令１を実行し分岐が成立しない場合でかつ条件分岐命令２を実行し分岐が成立しない場合の動作
命令列１の条件分岐命令１を実行し分岐が成立しない場合の動作は、（３）と同じである。また、命令列１の条件分岐命令２の条件分岐命令が不成立となるので、条件分岐命令２から次の命令の命令アドレスを出力する。第１比較器１３５の判定結果は肯定となる一方、第２比較器１３７の判定結果は否定となる。変更検出部１３０ｅは、第１比較器１３５と第２比較器１３７との判定結果により分岐が成立しないと判断し、命令書替指令Ｓｃとして、条件分岐先の命令列３を命令列４に書き替える第２状態にセットして送受信部に出力する。ＦＩＦＯ１５１は、第３比較器１４７ｅより判定結果が一致した際に保持する条件分岐命令のアドレスを１つずつ前段にシフトし、最前段に保持された条件分岐命令のアドレスがクリアされる。その結果は、第２Ｅ‐メモリ１１６に命令列４が書き込まれることになる。
【０１８７】
このように命令列に複数の条件分岐を含む場合、複数の条件分岐命令のアドレスをＦＩＦＯに保持し、分岐不成立毎にシフトを実施し、分岐成立時には、ＦＩＦＯの内容をクリアすることにより、複数の条件分岐の成立／不成立に対する命令列の再書き込みの転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することが可能となる。
【０１８８】
なお、実施の形態３で述べたホストを用い、条件分岐先命令がＥ‐メモリの記憶容量に該当する場合、同一の命令列として取り扱うことも可能である。
【０１８９】
（実施の形態８）
上記の実施の形態６および実施の形態７において、条件分岐命令の成立／不成立によって分岐先の命令列もしくは条件分岐命令の次以降の命令列のどちらか一方が不必要となることが起こり得る。その場合、命令列の再書き込みの転送トラフィックに起因するオーバーヘッドが増える。この不都合に対応したのが本発明の実施の形態８である。実施の形態８では、図１、図１４が援用される。
【０１９０】
ホストは、ＣＰＵが実行する命令列について予めシミュレーションを実施することにより、ＣＰＵのレジスタ０の値を常に予測する機能を備えたデバッガソフト搭載のコンピュータである。
【０１９１】
以上のように構成されたデバッガ装置について、以下にその動作を説明する。図１６は、実施の形態８におけるシミュレーション予測結果とＣＰＵが処理する命令列の図、図１７は、実施の形態８におけるシミュレーション予測結果とＣＰＵが処理する命令列の図である。図１６および図１７に示すように、ＣＰＵが実行する命令列について、予めホストでシミュレーションを実施することにより、レジスタ０の値を常に予測し、シミュレーション終了後にホストから転送される。
【０１９２】
（１）ＣＰＵが実行する命令をホストがシミュレーションし、条件分岐命令１の分岐が成立する場合の命令を書き込む動作
ホストは、命令のトレースに際して、上記同様の処理のほか、ＣＰＵが実行する命令列について予めシミュレーションを実施することにより、図１６に示すような命令列１の命令実行時のレジスタ０の値を予測し、この際、条件分岐命令１の分岐が成立することを予測する。
【０１９３】
実行管理部は、命令列１の命令を第１Ｅ‐メモリ１１５に書き込むとともに、命令列２の命令を第２Ｅ‐メモリ１１６に書き込む。
【０１９４】
（２）ＣＰＵが実行する命令をホストがシミュレーションし、条件分岐命令１の分岐が成立しない場合の命令を書き込む動作
ホストは、命令のトレースに際して、上記同様の処理のほか、ＣＰＵが実行する命令列について予めシミュレーションを実施することにより、図１７に示すような命令列１の命令実行時のレジスタ０の値を予測し、この際、条件分岐命令１の分岐が成立しないことを予測する。
【０１９５】
（３）前記（１）で書き込んだ命令をＣＰＵが実行する条件分岐命令１の動作
ＣＰＵは、命令列１を実行し、条件分岐命令１を実行する。第３比較器１４７ｅは、ＦＩＦＯ１５１の条件分岐命令１の分岐命令アドレスとＣＰＵの命令アドレスとを比較するが、ここでは一致するため、分岐命令実行情報を変更検出部１３０ｅに出力する。
【０１９６】
次の実行サイクルで、ＣＰＵは、命令列１の条件分岐命令１の条件分岐命令が成立し、次に、命令列２の分岐先命令１の命令アドレスを出力する。第１比較器１３５の判定結果は否定となる一方、第２比較器１３７の判定結果は肯定となる。第２変換器１２６は、ＣＰＵの命令アドレスを、第２Ｅ‐メモリ１１６をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第２Ｅ‐メモリ１１６から読み出された命令を入力して、実行する。
【０１９７】
変更検出部１３０ｅは、第１比較器１３５と第２比較器１３７との判定結果により分岐が成立すると判断し、命令書替指令Ｓｃとして、分岐元の命令列１を命令列２の次の命令列（図示せず）に書き替える第１状態にセットして送受信部に出力するとともに、分岐が成立するため、ＦＩＦＯ１５１の格納値を全てリセットする。
【０１９８】
（４）前記（２）で書き込んだ命令をＣＰＵが実行する条件分岐命令１の動作
ＣＰＵは、命令列１を実行し、条件分岐命令１を実行する。ＦＩＦＯ１５１は、条件分岐命令１の分岐命令アドレスを保持しない。第１比較器１３５の判定結果は肯定となる一方、第２比較器１３７の判定結果は否定となる。第１変換器１２２は、ＣＰＵの命令アドレスを、第１Ｅ‐メモリ１１５をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第１Ｅ‐メモリ１１５から読み出された命令を入力して、実行する。
【０１９９】
変更検出部１３０ｅは、条件分岐命令１を分岐命令と認知しないため、命令書替指令Ｓｃを出力しない。
【０２００】
以上のように本実施の形態によれば、予めホストで実行命令をトレースする際に、この命令列のシミュレーションを実施し、内部レジスタの値をチェックして分岐の成立／不成立を予測することにより、条件分岐の成立／不成立に対する命令列の再書き込みの転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することが可能となる。
【０２０１】
（実施の形態９）
上記の実施の形態１〜８においては、プログラムの各命令の振る舞いの解析に基づいてＥ‐メモリの書き替えを行っているが、Ｅ‐メモリの容量が十分あって、ＯＳのタスク１個以上が格納可能である場合においても、書き替えによる転送トラフィックに起因するオーバーヘッドが増える。この不都合に対応したのが本発明の実施の形態９である。実施の形態９では、図１が援用される。
【０２０２】
図１８は、実施の形態９における実行管理部の構成を示すブロック図である。Ｅ‐メモリ実行管理部１１３ｆは、タスク切替検出部１５４、実行タスク保持部１５５を備えている。
【０２０３】
タスク切替検出部１５４は、第１比較器１３５と第２比較器１３７の判定結果により、現在実行しているタスク番号を実行タスク保持部（以下、単に保持部と記載）１５５に書き込み、第１比較器１３５と第２比較器１３７の判定結果により、現在実行しているタスク番号と保持部１５５のタスク番号とが異なると、命令書替指令Ｓｃを送受信部に出力する。保持部１５５は、初期値としてタスク番号１を保持し、タスク切替検出部１５４が書き込む現在実行しているタスク番号を保持し、保持するタスク番号をタスク切替検出部１５４に出力する。
【０２０４】
以上のように構成されたデバッガ装置について、以下にその動作を説明する。図１９は、実施の形態９におけるホストから転送されるタスクを示す。
【０２０５】
（１）Ｅ‐メモリへの命令の書き込みの動作
ホストは、ＯＳのタスクごとにプログラムを分割する。そして、ＣＰＵがタスク１において最初に実行する開始命令から始めて命令の実行順にトレースを行い、タスク最終命令までトレースし、最初のアドレスをタスク１の先頭アドレスとして記憶する。また、その間、トレースを実施したタスクのバイト数をタスク１の転送バイト数として記憶する。次に、ホストは、タスク２についても同様にして、先頭アドレスと転送バイト数を記憶する。その他のタスクについても同様に処理する。
【０２０６】
ホストは、タスク１の命令と先頭アドレスと転送バイト数を送受信部を介して書込制御部１２９ｆに転送する。書込制御部１２９ｆは、先頭アドレスおよび転送バイト数を第１レジスタ１３６に書き込む。そして、タスク１の命令を第１セレクタ１２１に送出する。第１Ｅ‐メモリ１１５は、第１セレクタ１２１からアドレスを入力し、タスク１の命令を書き込む。
【０２０７】
ホストは、タスク２の命令と先頭アドレスと転送バイト数を送受信部を介して書込制御部１２９ｆに転送する。書込制御部１２９ｆは、先頭アドレスおよび転送バイト数を第２レジスタ１３８に書き込む。そして、タスク２の命令を第２セレクタ１２５に送出する。第２Ｅ‐メモリ１１６は、第２セレクタ１２５からアドレスを入力し、タスク２の命令を書き込む。
【０２０８】
（２）ＣＰＵがタスク１を実行する際の動作
ＣＰＵは、タスク１の命令アドレスを出力する。第１比較器１３５の判定結果は肯定となる一方、第２比較器１３７の判定結果は否定となる。第１変換器１２２は、第１比較器１３５の判定結果が肯定を示しているので、ＣＰＵの命令アドレスを、第１Ｅ‐メモリ１１５をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第１Ｅ‐メモリ１１５から読み出された命令を入力して、実行する。
【０２０９】
タスク切替検出部１５４は、第１比較器１３５と第２比較器１３７の判定結果により、現在実行しているタスク番号１を保持部１５５に書き込むとともに、第１比較器１３５と第２比較器１３７の判定結果により、現在実行しているタスク番号１と保持部１５５のタスク番号１とが同じため、命令書替指令Ｓｃの出力は行わない。
【０２１０】
（３）ＣＰＵがタスク１からタスク２へ移る際の動作
ＣＰＵは、タスク２の命令アドレスを出力する。第１比較器１３５の判定結果は否定となる一方、第２比較器１３７の判定結果は肯定となる。第２変換器１２６は、ＣＰＵの命令アドレスを、第２Ｅ‐メモリ１１６をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、第２Ｅ‐メモリ１１６から読み出された命令を入力して、実行する。
【０２１１】
タスク切替検出部１５４は、第１比較器１３５と第２比較器１３７の判定結果により、現在実行しているタスク番号２と保持部１５５のタスク番号１とが異なるため、命令書替指令Ｓｃを送受信部に出力する。また、現在実行しているタスク番号２を保持部１５５に書き込む。
【０２１２】
送受信部を介して命令書替指令Ｓｃを受け取ったホストは、タスク３の命令と先頭アドレスと転送バイト数を送受信部を介して書込制御部１２９ｆに転送する。書込制御部１２９ｆは、タスク３の先頭アドレスおよび転送バイト数を第１レジスタ１３６に書き込む。そして、タスク３の命令を第１セレクタ１２１に送出する。第１Ｅ‐メモリ１１５は、第１セレクタ１２１からアドレスを入力し、タスク３の命令を書き込む。
【０２１３】
以上のように本実施の形態によれば、予めホストでＯＳのタスク毎に命令列を分割し、タスク毎の命令列をＥ‐メモリに転送して格納し、タスク切替時にＥ‐メモリを切り替えることにより、転送トラフィックに起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することが可能となる。
【０２１４】
なお、ここでは、タスクの先頭番地を検出することでタスクの切り替えを検出してＥ‐メモリの切り替えおよび書き替えを行ったが、ＣＰＵからタスク切替信号を入力してＥ‐メモリの切り替えを行ってもよいし、ホストからタスク切替信号を入力してＥ‐メモリの切り替えを行ってもよい。
【０２１５】
（実施の形態１０）
上記の実施の形態１〜９において、ホストにおいてプログラムをＥ‐メモリへ書き込む際に命令の分岐の振る舞いを解析しており、解析時間に起因するオーバーヘッドが発生してしまう。この不都合に対応したのが本発明の実施の形態１０である。
【０２１６】
ホストは、ＣＰＵが実行する命令列の分岐情報を木構造で解析し、分岐命令等の種類とそのアドレスを記憶する機能を有するデバッガソフト搭載のコンピュータである。
【０２１７】
以上のように構成されたデバッガ装置について、以下にその動作を説明する。図２０は、実施の形態１０のホストにおいて作成された分岐に関する木構造を示す。
【０２１８】
（１）ホストが分岐に関する木構造を作成する動作
ホストは、最初に実行する開始命令から全ての実行命令をトレースする。この際に、条件分岐命令、無条件分岐命令等プログラム処理の乱れが発生する箇所を検出し、検出した箇所の節部のアドレスと、節部と節部との間のバイト数を木構造として記憶する。
【０２１９】
（２）ＣＰＵが実行する動作
ホストは、生成した木構造を基に、開始命令からの先頭アドレス１およびバイト数１とその間の命令を送受信部を介して実行管理部に転送する。実行管理部は、第１Ｅ‐メモリ１１５に命令をバイト数分書き込む。
【０２２０】
次に、ホストは、生成した木構造を基に、開始命令からの先頭アドレス２およびバイト数２とその間の命令を送受信部を介して実行管理部に転送する。実行管理部は、第２Ｅ‐メモリ１１６に命令をバイト数分書き込む。
【０２２１】
その後、ＣＰＵは、実施の形態１乃至９に示す動作に従って、第１Ｅ‐メモリ１１５もしくは第２Ｅ‐メモリ１１６から命令をフェッチして実行する。
【０２２２】
以上のように本実施の形態によれば、予めホストで全ての実行命令をトレースし、プログラム処理の乱れが発生する箇所を検出し、検出した箇所の節部のアドレスと、節部と節部との間のバイト数を木構造として記憶する。これにより、書き込む際の振る舞い解析に起因するオーバーヘッドを抑制し、効率良くＣＰＵに命令を供給することが可能となる。
【０２２３】
（実施の形態１１）
上記の実施の形態２〜１０において、Ｅ‐メモリへの書き込みについて、分岐命令単位で命令を書き込むと、分岐命令以降、メモリへ書き込まれない場合が生じてしまう。このため、メモリ空間の使用状況について、ある場合には不足を生じ、ある場合には不使用を生じるといった具合に、過不足が発生し、Ｅ‐メモリの有効的な利用が困難になっている。この不都合に対応したのが本発明の実施の形態１１である。
【０２２４】
図２１は、本発明の実施の形態１１におけるデバッガ装置の構成を示すブロック図である。
【０２２５】
システムＬＳＩ１０１ｇは、単一のＥ‐メモリ１５８を備えている。
【０２２６】
図２２は、実施の形態１１における実行管理部の構成を示すブロック図である。実行管理部１１３ｇは、アドレスセレクタ１６１、アドレス変換器１６２、比較器１６３、アドレス・バイト数レジスタ（以下、単にレジスタと記載）１６４、書込制御部１２９ｇ、アクセスメモリ変更検出部１３０ｇ、書込みアドレス変換器１６８および書込みアドレス・バイト数レジスタ（以下、単に書込みレジスタと記載）１６９から構成されている。Ｅ‐メモリ１５８が単一であるので、比較器１６３、アドレス変換器１６２、アドレスセレクタ１６１も単一となっている。データセレクタ、論理和回路はない。
【０２２７】
書込制御部１２９ｇは、命令列の命令とともに、その書込み先頭アドレス、先頭アドレス、転送バイト数を送受信部から入力し、Ｅ‐メモリへの書込み先頭アドレスを書込みレジスタ１６９に書き込み、先頭アドレスおよび転送バイト数をレジスタ１６４に書き込み、命令列の命令をＥ‐メモリ１５８に送出するように構成されている。また、比較器１６３からＣＰＵの命令アドレスが該当しない判定結果を入力すると、次の先頭アドレスおよび転送バイト数を送受信部から入力し、先頭アドレスおよび転送バイト数をレジスタ１６４に書き込む。
【０２２８】
書込みレジスタ１６９は、書込制御部１２９ｇからのＥ‐メモリ１５８への書込み先頭アドレスと伝送バイト数とを格納する。
【０２２９】
書込みアドレス変換器１６８は、書込みレジスタ１６９の書込みアドレスを、その転送バイト数に基づいて、Ｅ‐メモリ１５８に書き込むアドレスに変換する。
【０２３０】
アドレス変換器１６２は、比較器１６３の判定結果が肯定を示す場合、ＣＰＵの命令アドレスを、書込みレジスタ１６９の書込み先頭アドレスおよび転送バイト数とレジスタ１６４の先頭アドレスおよび転送バイト数に基づいて、Ｅ‐メモリ１５８をアクセスするためのアドレスに変換する。
【０２３１】
アドレスセレクタ１６１は、Ｅ‐メモリ１５８への書き込みを行う場合は書込みアドレス変換器１６８が送出するアドレスを選択し、それ以外の場合はアドレス変換器１６２が送出するアドレスを選択する。
【０２３２】
以上のように構成されたデバッガ装置について、以下にその動作を説明する。図２３は、実施の形態１１の場合のホスト１０２ｇから転送される命令列を示す。
【０２３３】
（１）Ｅ‐メモリへの命令の書き込みの動作
ホストは、開始命令から始めて命令の実行順にトレースを行い、無条件分岐命令が存在している場合、トレースした最初のアドレスを命令列１の先頭アドレスとして記憶する。また、その命令列のバイト数を命令列１の転送バイト数として記憶する。同様にホストは、命令列２、命令列３およびそれ以降の先頭アドレスと転送バイト数を記憶する。
【０２３４】
ホストは、Ｅ‐メモリへの書込み先頭アドレスを初期値にセットする。ホストは、命令列１の命令と先頭アドレスと転送バイト数と書込み先頭アドレスを書込制御部１２９ｇに転送する。
【０２３５】
書込制御部１２９ｇは、命令列１の書込み先頭アドレスを書込みレジスタ１６９に書き込み、命令列１の先頭アドレスおよび転送バイト数をレジスタ１６４に書き込み、命令列１の命令をＥ‐メモリ１５８に送出する。書込みアドレス変換器１６８は、書込みレジスタ１６９の命令列１の先頭アドレスと転送バイト数に基づいて、前記先頭アドレスをＥ‐メモリ１５８に書き込むアドレスに変換する。Ｅ‐メモリ１５８は、アドレスセレクタ１６１からアドレスを入力し、命令列１の命令を書き込む。
【０２３６】
以下、命令列２およびそれ以降の命令列についても、同様の方法でＥ‐メモリ１５８に書き込む。
【０２３７】
書き込みが完了すると、ホストは、再び、命令列１の書込み先頭アドレスを送受信部を介して書込制御部１２９ｇに転送する。書込制御部１２９ｇは、命令列１の書込み先頭アドレスを書込みレジスタ１６９に書き込む。
【０２３８】
（２）無条件分岐命令１で分岐する際の動作
ＣＰＵは、命令列１の命令アドレスを出力する。無条件分岐命令１がくると、比較器１６３は、レジスタ１６４の先頭アドレスから転送バイト数内にＣＰＵの命令アドレスが該当しない判定結果を出力する。変更検出部１３０ｇは、比較器１６３の判定結果が否定を示すのでアドレス書替指令Ｓｄを送受信部に出力する。その結果、上記同様の手順を経て、ホストから新たに命令列２の書込み先頭アドレス、先頭アドレス、転送バイト数を受信し、命令列２の書込み先頭アドレスを書込みレジスタ１６９に書き込み、命令列２の先頭アドレスおよび転送バイト数をレジスタ１６４に書き込む。
【０２３９】
比較器１６３は、レジスタ１６４の先頭アドレスから転送バイト数内にＣＰＵの命令アドレスが該当する判定結果を出力する。アドレス変換器１６２は、比較器１６３の判定結果が肯定を示すので、ＣＰＵの命令アドレスを、書込みレジスタ１６９の書込み先頭アドレスとレジスタ１６４の先頭アドレスおよび転送バイト数とに基づいて、Ｅ‐メモリ１５８をアクセスするためのアドレスに変換する。比較器１６３の肯定を示す出力は、セレクタ１１２に実行管理部１１３ｇの出力（Ｅ‐メモリからの読み出し命令）を選択する選択信号Ｓｅとなる。以下、上記と同様にして、ＣＰＵは、Ｅ‐メモリ１５８から読み出された命令を入力して、実行する。
【０２４０】
以上のように本実施の形態によれば、ＣＰＵの命令アドレスに一致しなくなったとき、ホストから新しい命令列の書込み先頭アドレス、先頭アドレス、転送バイト数を受信することで、単一のＥ‐メモリへの書き込みを連続した空間で行うことができ、このため、Ｅ‐メモリを有効的に使用することができる。
【０２４１】
（実施の形態１２）
上記の実施の形態１１において、分岐のたびに、ホストからアドレス、転送バイト数を転送するために、オーバーヘッドが発生してしまう。この不都合に対応したのが本発明の実施の形態１２である。実施の形態１２では、図２１が援用される。
【０２４２】
図２４は、実施の形態１２における実行管理部の構成を示すブロック図である。Ｅ‐メモリ実行管理部１１３ｈは、第１書込みアドレス・バイト数レジスタ（第１書込みレジスタと略記）１７２および第２書込みアドレス・バイト数レジスタ（第２書込みレジスタと略記）１７３を備え、第１アドレス・バイト数レジスタ（第１レジスタと略記）１７４、第２アドレス・バイト数レジスタ（第２レジスタと略記）１７５を備えている。その他の構成については実施の形態１１の場合の図２２と同様であるので、同一部分に同一符号を付すにとどめ、説明を省略する。
【０２４３】
書込制御部１２９ｈは、命令列の命令とともに、そのＥ‐メモリへの書込み先頭アドレス、先頭アドレス、転送バイト数を送受信部から入力し、Ｅ‐メモリへの書込み先頭アドレスを第１書込みレジスタ１７２もしくは第２書込みレジスタ１７３に書き込むとともに、先頭アドレスおよび転送バイト数を第１レジスタ１７４もしくは第２レジスタ１７５に書き込み、命令列の命令をＥ‐メモリ１５８に送出し、比較器１６３からＣＰＵの命令アドレスが該当しない判定結果を入力すると、先頭アドレスおよび転送バイト数を送受信部から入力し、書込み先頭アドレスを第２書込みレジスタ１７３に書き込むとともに、先頭アドレスおよび転送バイト数を第２レジスタ１７５に書き込む。
【０２４４】
第１レジスタ１７４は、比較器１６３の判定結果が否定を示す場合、第２レジスタ１７５の値に更新する。
【０２４５】
第１書込みレジスタ１７２は、比較器１６３の判定結果が否定を示す場合、第２書込みレジスタ１７３の書込み先頭アドレスと転送バイト数に更新する。
【０２４６】
変更検出部１３０ｈは、比較器１６３の判定結果が否定を示す場合、アドレス書替指令Ｓｄを送受信部に出力する。
【０２４７】
以上のように構成されたデバッガ装置について、以下にその動作を説明する。図２３は、ホストから転送される命令列を示す。
【０２４８】
（１）Ｅ‐メモリへの命令の書き込みの動作
ホストは、開始命令から始めて命令の実行順にトレースを行い、無条件分岐命令が存在している場合、トレースした最初のアドレスを命令列１の先頭アドレスとして記憶する。また、その命令列のバイト数を命令列１の転送バイト数として記憶する。同様にホストは、命令列２、命令列３およびそれ以降の先頭アドレスと転送バイト数を記憶する。ホストは、Ｅ‐メモリへの書込み先頭アドレスを初期値にセットする。ホストは、命令列１の命令列の命令とともに、その書込み先頭アドレス、先頭アドレス、転送バイト数を送受信部を介して書込制御部１２９ｈに転送する。
【０２４９】
書込制御部１２９ｈは、命令列１の書込み先頭アドレスと転送バイト数を第１書込みレジスタ１７２に書き込み、先頭アドレスおよび転送バイト数を第１レジスタ１７４に書き込み、命令列１の命令をアドレスセレクタ１６１に送出する。書込みアドレス変換器１６８は、第１書込みレジスタ１７２の命令列１の書込み先頭アドレスを、その転送バイト数に基づいて、Ｅ‐メモリ１５８に書き込むアドレスに変換する。Ｅ‐メモリ１５８は、第１アドレスセレクタ１６１からアドレスを入力し、命令列１の命令を書き込む。以下、命令列２およびそれ以降の命令列も同様の方法でＥ‐メモリ１５８に書き込む。
【０２５０】
書き込みが完了すると、ホストは、命令列１の書込み先頭アドレス、先頭アドレス、転送バイト数を送受信部を介して書込制御部１２９ｈに転送する。書込制御部１２９ｈは、命令列１の書込み先頭アドレスを第１書込みレジスタ１７２に書き込み、命令列２の書込み先頭アドレスを第２書込みレジスタ１７３に書き込む。
【０２５１】
（２）無条件分岐命令１で分岐する際の動作
ＣＰＵは、命令列１の命令アドレスを出力する。無条件分岐命令１がくると、比較器１６３は、第１レジスタ１７４の先頭アドレスから転送バイト数内にＣＰＵの命令アドレスが該当しない判定結果を出力する。比較器１６３の判定結果が否定を示すので、第１レジスタ１７４は、第２レジスタ１７５の値に更新し、第１書込みレジスタ１７２は、第２書込みレジスタ１７３の先頭アドレスとバイト数に更新する。これと並行して、変更検出部１３０ｈは、比較器１６３の判定結果が否定を示すことからアドレス書替指令Ｓｄを送受信部を介してホストに送信する。
【０２５２】
上記の更新の結果として、比較器１６３は、第１レジスタ１７４の先頭アドレスから転送バイト数内にＣＰＵの命令アドレスが該当する判定結果を出力する。アドレス変換器１６２は、比較器１６３の判定結果が肯定を示すので、ＣＰＵの命令アドレスを、第１書込みレジスタ１７２の書込み先頭アドレスと第１レジスタ１７４の先頭アドレスおよび転送バイト数に基づいて、Ｅ‐メモリ１５８をアクセスするためのアドレスに変換する。以下、上記と同様にして、ＣＰＵは、Ｅ‐メモリ１５８から読み出された命令を入力して、実行する。
【０２５３】
上記と並行して、アドレス書替指令Ｓｄを受信したホストは、命令列３の命令列の命令とともに、その書込み先頭アドレス、先頭アドレス、転送バイト数を送受信部を介して書込制御部１２９ｈに転送する。書込制御部１２９ｈは、命令列３の書込み先頭アドレスを第２書込みレジスタ１７３に書き込み、先頭アドレスおよび転送バイト数を第２レジスタ１７５に書き込む。
【０２５４】
以上のように本実施の形態によれば、アドレス・バイト数レジスタと書込みアドレス・バイト数レジスタをそれぞれ２つ持ち、分岐の際に、その内容を他方のレジスタ値に更新することにより、分岐の際、発生したアドレス、転送バイト数をシリアルで転送することに起因するオーバーヘッドを抑制することができる。
【産業上の利用可能性】
【０２５５】
本発明のデバッガ装置は、システムＬＳＩのエミュレーション等として有用である。
【図面の簡単な説明】
【０２５６】
【図１】本発明の実施の形態１におけるデバッグ装置の構成を示すブロック図
【図２】実施の形態１の実行管理部の構成を示すブロック図
【図３】実施の形態１の第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理する命令列の図
【図４】実施の形態２の実行管理部の構成を示すブロック図
【図５】実施の形態２の第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理する命令列の図
【図６】実施の形態３の無条件分岐命令を含む命令列の図
【図７】実施の形態４の実行管理部の構成を示すブロック図
【図８】実施の形態４の第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理する命令列の図
【図９】実施の形態４の命令列１から同じ命令列２へサブルーチン分岐する命令列の図
【図１０】実施の形態５の実行管理部の構成を示すブロック図
【図１１】実施の形態５の第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理する命令列の図
【図１２】実施の形態６の実行管理部の構成を示すブロック図
【図１３】実施の形態６の第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理する命令列の図
【図１４】実施の形態７の実行管理部の構成を示すブロック図
【図１５】実施の形態７の第１Ｅ‐メモリおよび第２Ｅ‐メモリに格納された後、ＣＰＵが処理する命令列の図
【図１６】実施の形態８のシミュレーション予測結果とＣＰＵが処理する命令列の図
【図１７】実施の形態８のシミュレーション予測結果とＣＰＵが処理する命令列の図
【図１８】実施の形態９の実行管理部の構成を示すブロック図
【図１９】実施の形態９のＣＰＵが処理するタスク
【図２０】実施の形態１０のホストにおいて作成される分岐に関する木構造
【図２１】本発明の実施の形態１１におけるデバッガ装置の構成を示すブロック図
【図２２】実施の形態１１の実行管理部の構成を示すブロック図
【図２３】実施の形態１１のＥ‐メモリに格納された後、ＣＰＵが処理する命令列の図
【図２４】実施の形態１２における実行管理部の構成を示すブロック図
【符号の説明】
【０２５７】
１０１，１０１ｇ  システムＬＳＩ
１０２，１０２ｇ  ホストＰＣ
１１０  ＣＰＵ
１１１  ＲＯＭ
１１２  セレクタ
１１３，１１３ａ〜１１３ｈ  エミュレーションメモリ実行管理部
１１４  シリアル送受信部
１１５  第１エミュレーションメモリ（第１Ｅ‐メモリ）
１１６  第２エミュレーションメモリ（第２Ｅ‐メモリ）
１２１  第１アドレスセレクタ
１２２  第１アドレス変換器
１２３，１３５  第１比較器
１２４  第１アドレスレジスタ
１２５  第２アドレスセレクタ
１２６  第２アドレス変換器
１２７，１３７  第２比較器
１２８  第２アドレスレジスタ
１２９，１２９ａ〜１２９ｈ  書込制御部
１３０  アクセスメモリ変更検出部
１３１  データセレクタ
１３２  論理和回路
１３４  実行メモリ保持部
１３６，１７４  第１アドレス・バイト数レジスタ
１３８，１７５  第２アドレス・バイト数レジスタ
１４０  サブルーチン分岐保持部
１４３  例外処理保持部
１４６  分岐処理保持部
１４７，１４７ｅ  第３比較器
１５１  分岐処理保持ＦＩＦＯ
１５４  タスク切替検出部
１５５  実行タスク保持部
１５８  エミュレーションメモリ
１６１  アドレスセレクタ
１６２  アドレス変換器
１６３  比較器
１６４  アドレス・バイト数レジスタ
１６８  書込みアドレス変換器
１６９  書込みアドレス・バイト数レジスタ
１７２  第１書込みアドレス・バイト数レジスタ
１７３  第２書込みアドレス・バイト数レジスタ
【図１】
2005071341.tif 000003
【図２】
2005071341.tif 000004
【図３】
2005071341.tif 000005
【図４】
2005071341.tif 000006
【図５】
2005071341.tif 000007
【図６】
2005071341.tif 000008
【図７】
2005071341.tif 000009
【図８】
2005071341.tif 000010
【図９】
2005071341.tif 000011
【図１０】
2005071341.tif 000012
【図１１】
2005071341.tif 000013
【図１２】
2005071341.tif 000014
【図１３】
2005071341.tif 000015
【図１４】
2005071341.tif 000016
【図１５】
2005071341.tif 000017
【図１６】
2005071341.tif 000018
【図１７】
2005071341.tif 000019
【図１８】
2005071341.tif 000020
【図１９】
2005071341.tif 000021
【図２０】
2005071341.tif 000022
【図２１】
2005071341.tif 000023
【図２２】
2005071341.tif 000024
【図２３】
2005071341.tif 000025
【図２４】
2005071341.tif 000026