JP2007058731A - プロセッサ、及び並列命令実行対応デバッグ装置 - Google Patents

プロセッサ、及び並列命令実行対応デバッグ装置 Download PDF

Info

Publication number
JP2007058731A
JP2007058731A JP2005245645A JP2005245645A JP2007058731A JP 2007058731 A JP2007058731 A JP 2007058731A JP 2005245645 A JP2005245645 A JP 2005245645A JP 2005245645 A JP2005245645 A JP 2005245645A JP 2007058731 A JP2007058731 A JP 2007058731A
Authority
JP
Japan
Prior art keywords
instruction
parallel
debug
instructions
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005245645A
Other languages
English (en)
Inventor
Akira Takuma
顯 宅間
Kosaku Shibata
耕作 柴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2005245645A priority Critical patent/JP2007058731A/ja
Priority to US11/509,797 priority patent/US20070050682A1/en
Publication of JP2007058731A publication Critical patent/JP2007058731A/ja
Priority to US12/394,538 priority patent/US20090164764A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements

Abstract

【課題】VLIWアーキテクチャを採用したプロセッサでは、並列に実行するように変換されたプログラムの命令列の任意の命令だけをデバッグのためのデバッグ命令に置き換え、1命令だけをステップ実行することはできない課題があった。
【解決手段】VLIWアーキテクチャを採用したプロセッサに、並列実行が可能な命令数と同じ数のデバッグ命令検出手段を備える命令解析手段と、デバッグ命令が検出された際に、デバッグ命令と同一の実行単位に含まれ且つ前記デバッグ命令より高位のアドレスに配置されている命令の実行を取り消す命令取消手段を備えたことを特徴とする。
【選択図】図32

Description

本発明は、プロセッサに係わるものであり、特に複数の命令を並列に実行するプロセッサにおけるデバッグ方法に関する。
従来の技術では静的に並列に実行できる命令を決めるアーキテクチャを持つプロセッサのデバッグ装置において命令列を表示する場合、論理的または物理的に並列に実行可能な命令列の区切りがどこであるかを表示することができた。
また、並列に実行できる命令列の先頭の命令または、命令列の一部ずつを固定長に分割した入れ物の先頭にブレークポイントを設定することができた。
特開平11−194957号公報 Jonathan B.Rosenberg著,吉川 邦夫訳,「デバッガの理論と実装」,ISBN 4−7561−1745−7
従来の技術では静的に並列に実行できる命令を決めるアーキテクチャを持つプロセッサのデバッグ装置において、並列に実行できる命令列の任意の命令にブレークポイントを設定することは以下のいずれかの課題によりできなかった。
一番目の課題はプロセッサのアーキテクチャによる制限で論理的に並列に実行できる命令の境界(以後、並列境界と略す)が例えば、128bit長単位であるなど固定的に決まって分割されている場合。この場合、この命令列中のいずれかの命令をデバッグ割込みを発生させるデバッグ命令に置き換えても、その命令と同一分割単位の他の命令も並列に実行されてしまう。
例えば、図9に示すソースプログラムに対し、図10に示す機械語コードが生成されたと仮定する。||は次の行の命令と論理的に並列実行できることを意味している。ここで図9の行番号10の命令にブレークを設定しようとするとデバッグ情報よりアドレス0x80000000が得られ、図11のようにアドレス0x80000000のMOV R1,1 ||命令がデバッグ命令であるBRK ||に置換される。
ここで、BRK命令には||が付与されているため、ブレーク成立と同時に後続するMOV R2,2とMOV R3,3命令も論理的に実行される可能性があり、元のソースプログラムにおいては行番号10にブレークを設定したにも関わらず、11、12行目の命令も実行された状態で停止する可能性があるという課題が発生していた。
二番目の課題はプロセッサのアーキテクチャによる制限で並列境界が固定ではないが、いくつかのパターンに限定され、任意の命令では指定できない場合。この場合も一番目の課題と同様に、命令列中のいずれかの命令をデバッグ割込みを発生させるデバッグ命令に置き換えても、デバッグ命令に置き換える位置がパターンの制限により並列境界に設定できなかった場合、その命令と同一分割単位の他の命令も並列に実行されてしまう。
ここでも同じ例を用いて具体例を説明すると仮に並列境界が2命令か3命令おきにしか設定できないプロセッサの場合、先の例でBRK||命令の||を除去しようとしても、BRK命令だけでは1命令なので、並列境界が設定できないため、解決できない課題が発
生していた。
上記課題を解決するために、
本発明の請求項1記載のプロセッサでは、
デバッグ割込みを発生させるデバッグ命令を検出する検出手段を並列実行可能な命令の数だけ用意し、
前記検出手段でデバッグ命令を検出した場合、当該命令と同時に実行される命令のうち、当該命令より高位のアドレスに配置されている命令の実行をキャンセルするキャンセル手段と、
前記検出手段でデバッグ命令を検出した場合、当該命令と同時に実行される命令のうち、当該命令及び当該命令より低位のアドレスに配置されている命令を実行する実行手段を備え、
前記デバッグ命令をもってブレークポイントを設定することで、同時実行される命令のいずれの命令においてもブレークポイントを自由に設定可能となる。さらに、ブレークポイントに後続する命令の実行がキャンセルされるために、ブレークポイントでプログラムが停止した際に、同時実行される複数の命令においても命令が配置されているアドレスから連想される実行順序を正しく再現することができる。
また、本発明の請求項2記載のプロセッサでは、
デバッグ割込みを発生させるデバッグ命令を検出する検出手段を並列実行可能な命令の数だけ用意し、
命令フェッチ時点で命令の一部のビットパターンが特定のビットパターンと一致するか否かを判定する判定手段と、
前記判定手段でパターンが一致したと判定された場合に、
フェッチされた複数の命令のうち、前記判定手段における判定対象の命令より高位のアドレスに配置された命令を無効とする無効化手段と、
フェッチされた複数の命令のうち、前記判定手段における判定対象の命令及び前記判定手段における判定対象の命令より低位のアドレスに配置された命令を、命令解析手段に発行する命令発行手段と、
前記判定手段でパターンが一致される命令のうち、特定の命令を前記デバッグ命令として解読する命令解読手段を備え、
前記デバッグ命令をもってブレークポイントを設定することで、同時実行される命令のいずれの命令においてもブレークポイントを自由に設定可能となる。これにより、請求項1記載のプロセッサと同等の効果が得られることに加え、デバッグ命令を検出した際に後続する命令の実行をキャンセルするキャンセル手段が不要になるため、プロセッサの構造がより簡単になるという効果がある。
さらに、請求項1または請求項2記載のプロセッサのように任意の箇所にデバッグ命令を配置可能であれば、下記に記載する手法でデバッグ命令を用いて前記課題を解決することができる。
本発明の請求項3記載のデバッグ方法は、並列命令実行が可能なプロセッサにおいて任意の命令でブレークポイントが設定できるように論理的に並列実行可能な命令列中の並列実行可能な境界指定を変更してからブレーク用のBRK命令への置換えができるようにしたものである。
また、本発明の請求項4記載の実行制御方法は、並列命令実行が可能なプロセッサにおいて、任意の命令がステップ実行できるように一時的に論理的に並列実行可能な命令列中の並列実行可能な境界指定を変更してからステップ実行ができるようにしたものである。
また、本発明の請求項5記載のデバッグ方法は、並列命令実行が可能なプロセッサにおいて任意の命令でブレークポイントが設定できるように論理的に並列実行可能な命令列をブレーク用のBRK命令と実行しても保証すべき演算結果に影響を与えないプログラムカウンタを進めるだけのNOP命令への置き換えることにより並列境界が変更できないプロセッサ制約を回避できるようにしたものである。
また、本発明の請求項6記載の実行制御方法は、並列命令実行が可能なプロセッサにおいて、任意の命令がステップ実行できるように一時的に論理的に並列実行可能な命令列中のステップ実行したい命令以外をNOP命令に変更することにより並列境界が変更できないプロセッサ制約を回避できるようにしたものである。
また、本発明の請求項7記載のデバッグ方法は、並列命令実行が可能なプロセッサにおいて、任意の命令でブレークポイントが設定できるように論理的に並列実行可能な命令列中の保証すべき演算結果に影響を与えない範囲で命令順を入れ換えることにより、BRK命令自体の記述位置に制限があっても回避できるようにしたものである。
また、本発明の請求項8記載の実行制御方法は、並列命令実行が可能なプロセッサにおいて、任意の命令がステップ実行できるように保証すべき演算結果に影響を与えない範囲で命令順を入れ換えることにより、NOP命令自体の記述位置に制限があっても回避できるようにしたものである。
また、本発明の請求項9記載のデバッグ方法は、並列命令実行が可能なプロセッサにおいて、当該プロセッサ制約に合わせて、ブレークポイント設定位置を補正した場合、補正後の位置で停止したことを検出した後に補正後の位置から補正前の位置までの命令をソフトウェアエミュレーションすることで補正前の位置で停止した場合と同じ演算結果を得られるようにしたものである。
また、本発明の請求項10記載の実行制御方法は、並列命令実行が可能なプロセッサにおいて、任意の命令のみを抽出し、その命令列をソフトウェアエミュレーションすることで、任意の命令のみを実行したした時と同じ演算結果を得られるようにしたものである。
また、本発明の請求項11記載の実行制御方法は、請求項4,6,8,10のいずれかを用いることにより、ソースプログラムの実行文と機械語命令列の対応づけ行なった後も実行文と同じ順で実行可能としたものである。
また、本発明の請求項12記載のプログラムは請求項3から11の少なくとも一つをソフトウェアで制御できるようにしたものである。
また、本発明の請求項13記載のデバッグ装置は請求項3から11の少なくとも一つを備えることにより並列実行対応プロセッサのデバッグを並列実行を意識させずに可能にしたものである。
本発明によりソースプログラムから機械語プログラムへのプログラム変換時に論理的に並列実行できる命令を決めるプログラム装置を用いるプロセッサにおいて、デバッグを行なう場合に、任意の命令でブレークポイントを設定することが可能になる。また、同プロセッサにおいてデバッグを行なう場合に、1命令単位でステップ実行が可能となる。
以下、本発明の実施の形態について、図を用いて説明する。
図30は本発明におけるプロセッサとメモリの関係を示したブロック図である。
プロセッサ901は命令メモリ902とデータメモリ903に接続される。プロセッサ901は命令メモリ902より命令をフェッチし、フェッチされた命令を実行し、プロセッサ901のレジスタなどの内部状態やデータメモリ903の内容を変更する。
プロセッサ901は、複数の命令をひとつの命令パケットとして同時に実行するVLIW(Very Long Instruction Word)アーキテクチャ構成をとっている。以下VLIWアーキテクチャ構成をとるプロセッサをVLIWプロセッサと呼ぶ。
<従来のプロセッサの構成>
ここで、本発明との差異を明確にするために、従来のVLIWプロセッサの構成を説明する。
図31に示されるブロック図は、3命令をひとつの命令パケットとして並列実行可能な従来のVLIWプロセッサにおける命令実行パイプライン構成の一例である。ただし、本発明において重要でない部分については、省略してある。
従来のプロセッサは、命令メモリより命令をフェッチする命令フェッチ部1001と、フェッチされた命令を解読する命令解読部1011〜1013と、解読された命令に応じて演算器を選択するマルチプレクサ1021と、算術及び論理演算を行うALU(Arithmetic and Logic unit)1031と、データメモリにアクセスするメモリアクセスユニット1032と、命令のフェッチ先を変更する分岐ユニット1033からなる。
命令フェッチ部1001でフェッチされた命令パケットに含まれる各命令は、命令解読部1011〜1013で個別に並行して解読される。この際、命令パケット中の最も低位のアドレスに配置された命令は命令解読部1011で、次に低位のアドレスに配置された命令は命令解読部1012で、最も高位のアドレスに配置された命令は命令解読部1013で解読される。
マルチプレクサ1021は命令解読部1011〜1913で解読された命令を実行するために必要な演算器を選択し、各命令を演算器に送出する。VLIWプロセッサにおいて、命令パケット中の各命令は、並列実行されることを前提に配置される。そのため、同一命令パケットに存在する命令には、使用する演算器資源の重複やデータ依存は存在しない。そのため、マルチプレクサ1021は非常に簡単な構成で済むことがVLIWプロセッサの特徴である。
ALU1031、メモリアクセスユニット1032、分岐ユニット1033は、マルチプレクサ1021より送出された命令を個別に並行して実行する。
分岐ユニット1033でデバッグ命令が実行された場合、デバッグ割込み信号1041を命令フェッチ部1001に送出する。命令フェッチ部1001はデバッグ割込み信号1041を受け取ると、デバッグ割込みハンドラとして指定されているアドレスから命令フェッチを行う。
上記で説明したように、VLIWプロセッサは複雑な命令スケジューリング機能を持たないながらも限られた演算器資源を有効に使用し、命令を並列実行する。
しかしながら、デバッグ命令は分岐ユニットで実行されるため、分岐ユニットを使用する命令と同じ命令パケットに配置することはできない。このため、プログラムを任意の箇所で停止させるためのブレークポイントを設定する際、任意の命令をデバッグ命令に置き換えることができない。
<本発明におけるプロセッサの第1の実施例>
本発明におけるプロセッサ901の第1の実施例を説明する。
図32は本発明のVLIWプロセッサにおける命令実行パイプライン構成の一例である。ただし、本発明において重要でない部分については、省略してある。
本発明におけるプロセッサの第1の実施例において、プロセッサ901は、命令フェッチ部1001と、命令解読部1011〜1013と、マルチプレクサ1021と、ALU1031と、メモリアクセスユニット1032と、分岐ユニット1033を備え、これらは従来のプロセッサと同様の構成である。
本発明におけるプロセッサの第1の実施例において、プロセッサ901はさらに、任意の命令がデバッグ割込みを発生させるか否かを検出するデバッグ割込み検出部2051〜2053を備えるデバッグ割込み解読部2081と、命令実行を取り消すための取り消し信号2111〜2113を生成する取り消し信号生成部2061と、命令を無効化することで命令実行を取り消す命令実行制御部2071と、デバッグ割込み検出部2051〜2053より送出されたデバッグ割込み信号2101〜2103の論理和を取る論理和回路2091を備える。
デバッグ割込み検出部2051〜2053は、命令解読部1011〜1013より命令信号2121〜2123を取得し、解読された命令がデバッグ命令か否かを判定する。解読された命令がデバッグ命令であった場合、各デバッグ割込み検出部2051〜2053に対応するデバッグ割込み信号2101〜2103をアサートする。
デバッグ割込み検出部2051〜2053によりアサートされたデバッグ割込み信号2101〜2103は論理和回路2091によりマージされ、デバッグ割込み信号1041として命令フェッチ部1001に入力される。これにより、従来のプロセッサと同様にデバッグ割込みを発生させることができる。
取り消し信号生成部2061は、デバッグ割込み信号2101〜2103を受け、低位のアドレスに配置された命令のデバッグ割込み信号がアサートされている場合、デバッグ割込み信号がアサートされている命令及び、その命令より高位のアドレスに配置された命令の実行を取り消すように対応する取り消し信号2111〜2113をアサートする。
命令実行制御部2071は、アサートされている取り消し信号2111〜2113に対応する命令の命令信号2121〜2123を、NOP(No OPeration)に相当する命令信号に変換し、命令信号2131〜2133としてALU1031、メモリアクセスユニット1032、分岐ユニット1033に送出することで命令の実行を無効化する。
さらに以下で取り消し信号生成部2061と命令実行制御部2071の構成について説明する。
図34に取り消し信号生成部2061の構成をより詳細に示す。
取り消し信号生成部2061は論理和回路4001〜4002を備える。
取り消し信号生成部2061はデバッグ割込み信号2101〜2103を入力とする。
デバッグ割込み信号2101は、命令パケット中の最も低位のアドレスに配置される命令に対応する。
デバッグ割込み信号2102は、命令パケット中の2番目に低位のアドレスに配置される命令に対応する。
デバッグ割込み信号2103は、命令パケット中の3番目に低位のアドレスに配置される命令に対応する。
取り消し信号生成部2061は取り消し信号2111〜2113を出力とする。
取り消し信号2111は、命令パケット中の最も低位のアドレスに配置される命令に対応する。
取り消し信号2112は、命令パケット中の2番目に低位のアドレスに配置される命令に対応する。
取り消し信号2113は、命令パケット中の3番目に低位のアドレスに配置される命令に対応する。
取り消し信号2111はデバッグ割込み信号2101から生成される。
取り消し信号2112は、論理和回路4001に入力されたデバッグ割込み信号2102とデバッグ割込み信号2102の論理和から生成される。
取り消し信号2112は、論理和回路4002に入力されたデバッグ割込み信号2102とデバッグ割込み信号2102とデバッグ割込み信号2103の論理和から生成される。
上記の構成により、命令パケット中の任意の命令でデバッグ割込みが発生した場合は、デバッグ割込みが発生した命令及びデバッグ割込みが発生した命令より高位のアドレスに配置された命令に対応する取り消し信号がアサートされる。
図35に命令実行制御部2071の構成をより詳細に示す。
命令実行制御部2071はマルチプレクサ5001〜5003を備える。
命令実行制御部2071は命令信号2121〜2123、取り消し信号2111〜2113を入力とする。
命令実行制御部2071は命令信号2131〜2133を出力とする。
マルチプレクサ5001〜5003は、命令信号2131〜2133とNOPに相当する命令信号である0を入力とする。この入力を、取り消し信号2111〜2113で選択する。
マルチプレクサ5001〜5003は、取り消し信号2111〜2113が0の場合は命令信号2131〜2133を、取り消し信号が1の場合は0を選択し、出力する。
マルチプレクサ5001〜5003の出力が、そのまま命令信号2131〜2133となり、ALU1031、メモリアクセスユニット1032、分岐ユニット1033に送出される。
上記の構成により、任意の命令に対応した取り消し信号2111〜2113がアサートされた場合、任意の対応する命令信号2131〜2133がNOP相当の命令信号に変換される。これにより、アサートされた取り消し信号に基づき、特定の命令を無効化することができる。
以上説明した構成により、本発明におけるプロセッサの第1の実施例におけるプロセッサ901では、デバッグ命令を解読すると、解読されたデバッグ命令及び解読されたデバッグ命令より高位のアドレスに配置された命令が無効化され、デバッグ命令を命令パケット中のどこに配置しようが演算器などの命令実行資源不足が発生することがなくなる。即ち、デバッグ命令の実行制限がなくなり、命令パケット中の任意の位置にデバッグ命令を配置可能となる。これにより、プログラムを任意の箇所で停止させるためのブレークポイントを設定する際、任意の命令をデバッグ命令に置き換えることができる。また、命令パケット中のデバッグ命令に後続する命令の実行が取り消されるため、デバッグ割込みが発生し、ブレークポイントでプログラムが停止した際には、ブレークポイントより高位のアドレスに配置された命令が実行されておらず、ブレークポイントと命令実行の関係がより直感的に捉えられる。
なお、以上の実施例において、説明の簡単のために同時実行命令数を3としているが、同時実行命令数が2以上のVLIWプロセッサにおいて同様の構成を適用可能であり、同様の効果が得られることは自明である。
<本発明におけるプロセッサの第2の実施例>
本発明におけるプロセッサ901の第2の実施例を説明する。
図33は本発明のVLIWプロセッサにおける命令実行パイプライン構成の一例である。ただし、本発明において重要でない部分については、省略してある。
本発明におけるプロセッサの第2の実施例において、プロセッサ901は、命令フェッチ部1001と、マルチプレクサ1021と、ALU1031と、メモリアクセスユニット1032と、分岐ユニット1033と、デバッグ割込み検出部2051〜2053を備えるデバッグ命令解読部2081と、論理和回路2091を備え、これらは本発明におけるプロセッサ901の第1の実施例と同様の構成である。
本発明におけるプロセッサの第2の実施例において、プロセッサ901はさらに、フェッチされた命令のうち、特定のビットパターンが検出された命令より高位のアドレスに配置される命令を無効化する命令無効化部3151と、有効な命令のみを命令解読部に発行する命令発行部3161と、発行された命令を解読する命令解読部2011〜2013を備える。
命令無効化部3151は、フェッチされた命令パケット中の各命令の一部が、特定のビットパターンを有するか否かを判定する。本発明におけるプロセッサの第2の実施例において、特定のビットパターンとは、図36に示すように16bit命令において、最上位の1ビットが1であるパターンとする。他のビットが0であるか1であるかは問わない。
命令無効化部3151は、任意の命令に特定のビットパターンが有ると判定すると、その命令が無効であることを示す信号を命令発行部3161に送出する。
命令発行部3151は、命令無効化部3151より命令が無効であることを示す信号を基に命令解読部2081に発行する命令を選別する。
命令発行部3151は、無効命令より高位のアドレスに配置された命令パケット中の全ての命令を無効とみなし、命令解読部に命令を発行しない。
命令解読部2011〜2013は、命令発行部3151から命令が発行されない場合は、命令を解読せずにNOP命令に相当する命令信号をマルチプレクサ1021に送出する。
命令解読部2011〜2013は、デバッグ命令を解読した際には、いずれの演算器も使用しないという信号を命令信号としてマルチプレクサ1021に出力する。
本発明におけるプロセッサの第2の実施例における、デバッグ命令のビットパターンを図37に示す。
デバッグ命令は、bit0、bit4、bit8、bit12が0であり、その他のビットが1で構成される。最上位ビットが1であるため、命令無効化部3151により、命令パケット中のデバッグ命令より高位のアドレスに配置された命令は全て無効となり、命令解読部2011〜2013に発行されることはない。これにより、デバッグ命令より高位のアドレスに配置された命令は実行されない。
以上説明した構成により、本発明におけるプロセッサの第2の実施例におけるプロセッサ901では、デバッグ命令はいずれの演算器資源も使用しないと解読されるため、デバッグ命令を命令パケット中のどこに配置しようが演算器などの命令実行資源不足が発生することがなくなる。即ち、デバッグ命令の実行制限がなくなり、命令パケット中の任意の位置にデバッグ命令を配置可能となる。これにより、プログラムを任意の箇所で停止させるためのブレークポイントを設定する際、任意の命令をデバッグ命令に置き換えることができる。また、命令パケット中のデバッグ命令に後続する命令の実行が取り消されるため、デバッグ割込みが発生し、ブレークポイントでプログラムが停止した際には、ブレークポイントより高位のアドレスに配置された命令が実行されておらず、ブレークポイントと命令実行の関係がより直感的に捉えられる。
なお、以上の実施例において、説明の簡単のために同時実行命令数を3としているが、同時実行命令数が2以上のVLIWプロセッサにおいて同様の構成を適用可能であり、同様の効果が得られることは自明である。
<本発明におけるデバッグ方法の実施例>
以下、本発明におけるデバッグ方法の実施の形態について、図1から図29を用いて説明する。
図1に一般的なプログラム変換装置とデバッグ装置を組み合わせたデータの流れを示す。入出力装置105からのユーザの指示によりソースプログラム101はプログラム変換装置102により実行プログラム103aに変換される。その際にソースプログラム101と実行プログラム103aの対応づけをデバッグ情報103bとして出力させることもできる。
入出力装置105からのユーザの指示によりデバッグ装置104は実行プログラム10
3aと存在する場合はソースプログラム101及びデバッグ情報103bを参照し、プログラムの実行、停止、状態参照などの様々なデバッグ操作を制御する。
図2はより具体的なデバッグ装置の例を示したものである。
201はプログラム変換装置及びデバッグ装置のホスト側ソフトウェアを実行するホストコンピュータである。204はターゲットとなるプロセッサの評価ボードであり、これらを接続ケーブル205で接続している。ターゲットとなるプロセッサをホストコンピュータ上でシミュレーションする場合は、204及び205は不要となる。201はホストコンピュータと接続された出力装置のディスプレイであり、203は同じく入力装置のキーボード及びマウスである。206はデバッグ装置が出力した表示画面である。
図3は従来の技術のデバッグ装置の制御上の構成要素を示したものである。入出力手段501、実行プログラム・デバッグ情報読み込み手段502、命令参照・変更手段503、実行・停止制御手段504、デバッグ情報検索手段505から構成される。
図4は本発明の実施の形態におけるデバッグ装置の制御上の構成要素を示したものである。601から605はそれぞれ501から505と同じものである。並列実行命令列境界細分化手段606は論理的に並列実行可能な命令列の並列境界をさらに細分化した命令列に分解し、そこに並列境界を追加設定する手段である。並列実行命令列再構成手段は論理的に並列実行可能な命令列中の並列境界を変更しないまま、その中の複数の命令を置換する手段である。
図5は可変長命令かつ論理的に並列実行可能なプロセッサの32ビット長命令におけるビットパターン構成例を示している。lenは命令長を区別するためのビットでendは並列境界を示すビットを示している。
図6は可変長命令かつ論理的に並列実行可能なプロセッサの16ビット長命令におけるビットパターン構成例を示している。len、endの意味は図5と同じである。
図7は図41のビットパターンに対する並列境界を設定するための論理和で、図8は同じく図42に対するものである。
図9はソースプログラム101の一部分を示した例である。図10は図9のソースプログラムをコンパイルした後の実行プログラムの例である。
図11は図10の実行プログラムの先頭の命令を従来の技術でデバッグ命令に置換した例を示したものである。
図12は図10の実行プログラムの先頭の命令を図22の処理の流れでデバッグ命令に置換した例を示したものである。
図13は図10の実行プログラムの先頭の命令を図23の処理の流れでデバッグ命令に置換した例を示したものである。
図14は図10の実行プログラムの先頭の命令を図24の処理の流れでデバッグ命令に置換した例を示したものである。
図15は図10の実行プログラムの二番目の命令の位置に図25の処理の流れで順序変更してデバッグ命令に置換した例を示したものである。
図16は図10の実行プログラムの二番目の命令の位置に図26の処理の流れでデバッグ命令を補正した上で置換した例を示したものである。
図17は図10の実行プログラムの先頭の命令を図28の処理の流れでステップ実行可能に置換した例を示したものである。
図18は図10の実行プログラムの先頭の命令を図29の処理の流れでステップ実行可能に置換した例を示したものである。
図19は図10の実行プログラムの2つ目の命令を図29の処理の流れでステップ実行可能に置換した例を示したものである。
図20は図10の実行プログラムの2つ目の命令を図29の処理の流れに加え、命令順を入れ換えてステップ実行可能に置換した例を示したものである。
図21は従来の技術における命令置換処理の流れ図を示したものである。
図22は並列境界が変更できて、置換後命令が並列実行できる場合の命令置換処理の流れ図を示したものである。
図23は並列境界が変更できない場合の命令置換処理の流れ図を示したものである。
図24は並列境界が変更できるが、置換後命令が並列実行できない場合の命令置換処理の流れ図を示したものである。
図25は並列実行できる命令順序が変更できる場合の命令置換処理の流れ図を示したものである。
図26はソフトウェアシミュレーションを利用する場合の命令置換処理の流れ図を示したものである。
図27は、ステップ実行の処理の流れ図を示したものである。
図28は、図27のS2003が並列境界を変更できる場合の流れ図を示したものである。
図29は、図27のS2003が並列境界を変更できない場合の流れ図を示したものである。
以下、これらの図を用いて詳細に説明する。
並列命令実行が可能なプロセッサのプログラムをデバッグ装置を利用してデバッグする場合、利用者は図1で説明した通りの流れで、デバッグ装置104に実行プログラム103aと存在する場合、デバッグ情報103bをロードする。
ここで、ソースプログラム101の一部が図9のような場合を想定して説明する。図71をコンパイルした結果、実行プログラムの一部として図10に示すようなコードが生成されたものとする。同図においてアドレスは命令が格納されている位置を示している。グループは説明の便宜上、論理的に並列に実行可能な命令列の固まりを区別するための通し
番号で、実際の機械語コード中には番号自体は含まれていない。ニーモニックは機械語コードを利用者が理解できるように簡略化した英単語や記号の組合せに置き換えたものである。ここで、MOV R1,1とは、R1レジスタに1を転送することを、CALL subとは関数subを呼び出すことを意味している。またニーモニック末尾の||記号は次のアドレスの命令と論理的に並列に実行可能なことを示しているものとする。また、デバッグ割込みを発生させるデバッグ命令はBRK命令、プログラムカウンタを進める命令はNOP命令とする。
デバッグ装置の利用者が図9における行番号10にブレークポイントを設定しようとした場合、該当する機械語コードのアドレスは従来技術を使ってデバッグ情報から0x80000000と変換できる。これを従来の技術で命令境界を変更せずにそのままデバッグ命令に置き換えると図81のMOV R1,1 ||命令は図82のBRK ||命令に置換される。従来の技術の処理の流れは図21に示す通りである。
S1001で命令置換処理を開始し、ブレークポイントを削除した時に備えて、元の命令をS1002で保存し、1020にアドレスと元の命令を格納しておく。S1003で置換後命令、即ちブレーク設定の場合はBRK命令に置き換える。S1004で命令置換処理は終了する。ブレークポイントを削除する時はS1010で命令復元処理を開始し、1020に格納しておいた対応するアドレスと元の命令を使ってS1011で元の命令に置換する。S1012で命令復元処理を完了する。
本発明ではこの処理の流れを図22、図23、図24のいずれかの方法を用いて解決する。図22,図24は請求項3の実施例に対応する。図23は請求項5の実施例に対応する。
プロセッサが任意の命令に並列境界を設定可能なアーキテクチャの場合、図22の方法が利用できる。S1101で命令置換処理を開始し、S1102で元の命令を1120に保存する。ここまでは従来技術と同様である。次にS1103において、置換後命令、即ちブレーク設定の場合はBRK命令と並列境界のビットパターンを合成する。ブレークの場合は、該当命令で区切りをつけたいので、並列境界として合成する。図5,図6の32,16ビット長の2種類の命令長を持つアーキテクチャを例にとると命令長を示すlenビットでまず命令長を判断する。xxx...の部分が命令そのものを示すビットパターンであるため、この部分がBRK命令のパターンとなる。endビットは並列境界を示しており、ここが0なら境界でなく、1なら境界であるとする。BRK命令のパターンと命令長に合わせ、図7または図8の並列境界を設定するビットパターンの論理和をとることにより実現される。最後にS1104において合成されたビットパターンに置き換え、S1105で命令置換処理を終了する。ブレークを削除する場合は、従来のS1010からS1012と全く同様にS1110からS1112の処理を行なう。
図22の処理の流れにより、図9のソースプログラムに対応する行番号10にブレークを設定した場合は、図12のようにデバッグ装置内部で置換された状態となる。
プロセッサが1または3命令単位に並列境界を設定可能だが、2命令単位には設定できないなど制約を持つアーキテクチャの場合、図24の方法が利用できる。S1301で命令置換処理を開始し、S1302でブレークを設定したい自命令と論理的に同時に実行可能な命令グループの元の命令列を1320としてアドレスと元の命令列をセットで格納する。S1303において自命令と同じグループの命令をプロセッサの制約の範囲で別のグループに分解する。グループの分解は先の図22の説明と同様に並列境界を設定することによって行なう。S1304で自命令を置換後命令、即ちBRK命令に置き換え、S1305で命令置換処理を終了する。ブレークを削除する場合は、従来のS1010からS1
012と同様にS1310からS1312の処理を行なう。相違はS1311において単一命令ではなく、同一グループの命令列を復元している点がある。
図24の処理の流れにより、図9のソースプログラムに対応する行番号10にブレークを設定した場合は、図14のようにデバッグ装置内部で置換された状態となる。ブレークを設定する位置がプロセッサ制約内で並列境界に分解できれば、上記で解決できる。
上記の方法でもプロセッサ制約で無理の場合は、図23の方法が利用できる。
S1201で命令置換処理を開始する。S1202は先のS1302と同じである。S1203はブレークを設定したい位置の命令を置換後命令、即ちBRK命令に置換する。次にS1204において、後続する同一グループの命令をプログラムカウンタを進めるだけのNOP命令に置き換える。S1205で命令置換処理を終える。
ブレークを削除する場合は、S1310からS1312と同様にS1210からS1212の処理を行なう。
図23の処理の流れにより、図9のソースプログラムに対応する行番号10にブレークを設定した場合は、図13のようにデバッグ装置内部で置換された状態となる。この場合、実際に停止するのは0x80000008のNOP命令まで実施した後になる可能性があるが、デバッグ装置では1320の情報中のアドレスを利用して、0x80000000で停止したと補正を行なう。
次にデバッグ装置において図9のソースプログラムの行番号10の位置から1実行文(命令ではなくステートメント)だけステップ実行する場合を例に説明する。このソースプログラムに対応する機械語コードは図10のように生成されるものとする。
プロセッサにステップ実行を指示すると行番号10に対応する機械語コードは行番号11,12に対応する機械語コードとも論理的に並列実行可能となっているために、同時に実行されてしまう可能性がある。
図27に本発明の並列実行に対応したステップ実行の基本の制御の流れを示す。S2001においてステップ実行処理を開始する。S2002でステップ実行したい命令が並列実行命令であるかどうかを判定する。先に説明した図5や図6のような命令フォーマットの場合、endビットが0であれば、並列実行命令として判断できる。並列実行命令でないと判断された場合は、従来の並列実行でないプロセッサの時の技術と同様にS2006で自命令のみを単位実行してS2007でステップ実行処理を終える。並列実行命令と判断された場合は、S2003で並列実行命令列を単位実行できるように再構成する。この際、元の命令を保存しておく。詳細は図28と図29を用いて後述する。S2004で再構成した並列実行命令列を単位実行し、S2005で再構成した命令列をS2003で保存しておいた元の命令列に復元する。S2007でステップ実行処理を終了する。
S2003の詳細を説明する。
図28は請求項4の実施例に対応する。S2101で命令置換処理が開始され、S2102で2120にステップ実行したい位置のアドレス、元の命令を保存する。S2103で自命令と並列境界のビットパターンを合成する。並列境界のビットパターンの合成方法は図22のS1103の説明と同じである。S2104で合成したビットパターンに置き換え、S2105で命令置換処理を終える。この状態でステップ実行を行ない、停止した時点でS2110において命令復元処理を開始する。S2111で2120に保存したアドレス、元の命令に置換し、S2112で命令復元処理を終了する。
これらの処理により、ステップ実行する間だけ図17のように置換を行ない、0x80000000の命令のみを単一のグループとして実行することが可能になる。これにより、行番号10に1実行文に対応する命令列だけを区別して実行することが可能になる。
プロセッサの制約により、並列境界が変更できない場合は、図29の方法を用いる。図29は請求項6の実施例に対応する。
S2201により命令置換処理を開始する、S2202によりステップ実行したい位置の自命令と同じ命令グループのアドレスと元の命令列を2220として保存する。293において自命令と同じ命令グループの自命令以外の他の命令をNOP命令に置き換える。S2204で命令置換処理を終了する。この状態でステップ実行を行ない、実行が停止したら、S2210で命令復元処理を開始する。S2211で2220の情報を使って元の命令列に置換する。S2212で命令復元処理を終了する。
これらの処理により、ステップ実行する間だけ図18のように置換を行ない、0x80000000からステップ実行を行なう。この場合、実際に停止するのは0x80000008のNOP命令まで実施した後になる可能性もあるが、デバッグ装置では2220の情報中のアドレスを利用して、1命令分進めた0x80000004で停止したと補正を行なう。同様に更にステップ実行を行なう場合は、0x80000000と0x80000008の命令をNOP命令に置き換えて、図19のように置き換えて、0x80000004の命令だけ実行したのと同様の結果が得られるようにする。
ここで、もしプロセッサがNOP命令は命令グループの末尾にしか配置できないなど制約をもっている場合は、図20のようにNOP命令以外を先頭に、NOP命令を後続するように入れ換えることにより回避する。この方法が請求項8の実施例に対応する。
デバッグ命令の記述箇所が命令グループの最後である必要があるなど制約を持ったプロセッサの場合、デバッグ命令の位置を制約に従い最後に移動し、元々設定したかった位置から移動した位置までの間をNOP命令に置き換える。この時の処理は図29と同じである。そして停止した位置は元々ブレークを設定したかった場所であるとデバッグ装置が補正を行なうことで解決する。
デバッグ命令の記述箇所が命令グループの先頭である必要があるなど制約を持ったプロセッサの場合、デバッグ命令の位置を制約に従い先頭に挿入し、元々設定したかった位置までの命令は命令順序をデバッグ命令を挿入した分だけ移動することで回避する。
例えば、図10の二番目の命令にブレークを設定したい場合、図25のようにS1401で命令置換処理を始め、S1402で自命令と同じ命令グループの元の命令をアドレスと元の命令列をセットで1420として保存する。S1403で自命令と同じ命令グループの命令を置換後命令配置制約、即ち今回の例の場合、先頭にしか配置できないため、自命令を先頭に移動し、元々先頭にあった命令の位置から自命令が元々あった位置までの命令を順に後ろへ移動する。S1404で順序変更後の自命令は置換後命令配置制約を受けなくなっているため置換後命令に置換を行なう。S1405にて命令置換処理を終了する。この結果として図15のような命令列に置換が行なわれる。この方法が請求項7の実施例に対応する。
デバッグ命令の記述箇所が命令グループの先頭である必要があるなど制約を持ったプロセッサの場合、デバッグ命令の位置を制約に従い先頭に移動し、元々ブレークを設定したかった位置までの命令はソフトウェアでシミュレーションすることで回避する。例えば、図10の二番目の命令にブレークを設定したい場合、図26におけるS1501で命令置換処理を始める。S1502で自命令と同じ命令グループの命令列をアドレスと元の命令
列をセットにして1520として保存する。図24におけるS1303と同様の方法でS1503にて自命令と同じ命令グループの命令を別グループに分解する。S1504にて、命令の配置制約に従い、自命令と同じ命令グループの先頭命令を置換後命令に置換し、S1505にて命令置換処理を終了する。ここまでで図87のような状態になる。ここでプログラムの実行を開始し、BRK命令でブレークが検出された場合、S1510で命令復元処理が開始され、S1511にて1520にて保存しておいたアドレスから元の命令列を復元する。S1512にて命令復元処理を終了する。ブレークを検出した位置から元々ブレークを設定したかった命令まで一命令ずつソフトウェアシミュレーションを実施する。MOV R1,1ならR1レジスタに1を設定することでソフトウェアシミュレーションする。元々ブレークを設定したかった位置に到達した時点で再度、S1501からのフローを処理し、命令置換された状態に戻す。ブレークを検出した場所を元々ブレークを設定したかった場所に置き換え、デバッグ装置のブレーク検出を処理を終える。この方法が請求項9の実施例に対応する。
並列境界が変更できず、NOP命令がないなどの制約を持つプロセッサにおいてステップ実行したい場合、既に説明した図28,図29のいずれの方法も解決できない。例えば、図9の先頭の実行文をステップ実行したい場合、実行文に対応する命令列をデバッグ情報中の103bから検索して求める。図10のような機械語コードが生成されていた場合は、この時点でアドレス0x80000000の命令のみが抽出される。ここで該当の命令がMOV R1,1であるので、デバッグ装置においてR1レジスタに1を設定するようにソフトウェアエミュレーションすることで、見かけ上、プロセッサが該当命令のみをステップ実行したのと同じ結果を得ることができる。この方法が請求項11において請求項10を使った実施例に対応する。
本発明にかかる並列命令実行可能なプロセッサは、各種制御装置、信号処理装置など高い実行性能を要求される電子機器に適用可能である。
デバッグ命令を自由に配置可能という本発明のプロセッサの特徴は、電子機器のソフトウェア開発において有用となる。
本発明にかかる並列命令実行対応デバッグ装置はソフトウェアの開発において、プログラム変換装置によって生成された並列に実行可能な命令列に対して、一命令単位に実行するプロセッサにおけるデバッグ装置と同様に自由にブレークポイントの設定、ステップ実行などの単位実行操作を利用する場合に有用である。
ホストコンピュータなど組み込み以外のプロセッサにも応用できる。
プログラム変換装置とデバッグ装置を組み合わせたデータの流れを示す図 デバッグ装置の実施例を示す図 従来の技術のデバッグ装置の制御上の構成要素を示す図 並列命令実行対応デバッグ装置の制御上の構成要素を示す図 32ビット長命令のビットパターンの構成例を示す図 16ビット長命令のビットパターンの構成例を示す図 32ビット長命令の並列境界を合成するビットパターンの例を示す図 16ビット長命令の並列境界を合成するビットパターンの例を示す図 ソースプログラム例を示す図 図9のソースプログラムが並列実行命令を含む実行プログラムに変換された例を示す図 図10の実行プログラムの先頭の命令を従来の技術でデバッグ命令に置換した例を示す図 図10の実行プログラムの先頭の命令を図22の処理の流れでデバッグ命令に置換した例を示す図 図10の実行プログラムの先頭の命令を図23の処理の流れでデバッグ命令に置換した例を示す図 図10の実行プログラムの先頭の命令を図24の処理の流れでデバッグ命令に置換した例を示す図 図10の実行プログラムの二番目の命令の位置に図25の処理の流れで順序変更してデバッグ命令に置換した例を示す図 図10の実行プログラムの二番目の命令の位置に図26の処理の流れでデバッグ命令を補正した上で置換した例を示す図 図10の実行プログラムの先頭の命令を図28の処理の流れでステップ実行可能に置換した例を示す図 図10の実行プログラムの先頭の命令を図29の処理の流れでステップ実行可能に置換した例を示す図 図10の実行プログラムの2つ目の命令を図29の処理の流れでステップ実行可能に置換した例を示す図 図10の実行プログラムの2つ目の命令を図29の処理の流れに加え、命令順を入れ換えてステップ実行可能に置換した例を示す図 従来の技術における命令置換処理の流れを示す図 並列境界が変更できて、置換後命令が並列実行できる場合の命令置換処理の流れを示した図 並列境界が変更できない場合の命令置換処理の流れを示した図 並列境界が変更できるが、置換後命令が並列実行できない場合の命令置換処理の流れを示した図 並列実行できる命令順序が変更できる場合の命令置換処理の流れを示した図 ソフトウェアシミュレーションを利用する場合の命令置換処理の流れを示した図 ステップ実行の処理の流れを示した図 図27のS2003が並列境界を変更できる場合の流れを示した図 図27のS2003が並列境界を変更できない場合の流れを示した図 本発明におけるプロセッサに関わるブロック図 従来技術におけるVLIWプロセッサの命令実効パイプラインのブロック図 本発明におけるプロセッサの第1の実施例における命令実効パイプラインのブロック図 本発明におけるプロセッサの第2の実施例における命令実効パイプラインのブロック図 本発明におけるプロセッサの第1の実施例における取り消し信号生成部のブロック図 本発明におけるプロセッサの第1の実施例における命令実行制御部のブロック図 本発明におけるプロセッサの第2の実施例における命令のビットパターンの一例を示す図 本発明におけるプロセッサの第2の実施例におけるデバッグ命令のビットパターンの一例を示す図
符号の説明
101 ソースプログラム
102 プログラム変換装置
103a 実行プログラム
103b デバッグ情報
104 デバッグ装置
105 入出力装置
201 ホストコンピュータ
202 ディスプレイ
203 入力装置
204 評価用ボード
205 接続ケーブル
206 表示画面
501 入出力手段
502 実行プログラム・デバッグ情報読み込み手段
503 命令参照・変更手段
504 実行・停止制御手段
505 デバッグ情報検索手段
601 入出力手段
602 実行プログラム・デバッグ情報読み込み手段
603 命令参照・変更手段
604 実行・停止制御手段
605 デバッグ情報検索手段
606 条件付命令合成手段
607 条件別実行位置検出手段
1001 命令フェッチ部
1011 命令解読部
1012 命令解読部
1013 命令解読部
1021 マルチプレクサ
1031 ALU
1032 メモリアクセスユニット
1033 分岐ユニット
1041 デバッグ割込み信号
2051 デバッグ割込み検出部
2052 デバッグ割込み検出部
2053 デバッグ割込み検出部
2061 取消信号生成部
2071 命令実行制御部
2081 デバッグ命令解読部
2091 論理和回路
2101 デバッグ割込み信号
2102 デバッグ割込み信号
2103 デバッグ割込み信号
2111 取り消し信号
2112 取り消し信号
2113 取り消し信号
2121 命令信号
2122 命令信号
2123 命令信号
2131 命令信号
2132 命令信号
2133 命令信号
3011 命令解読部
3012 命令解読部
3013 命令解読部
3151 命令無効化部
3161 命令発行部
4001 論理和回路
4002 論理和回路
5001 マルチプレクサ
5002 マルチプレクサ
5003 マルチプレクサ

Claims (13)

  1. 連続したアドレスに配置された複数の命令の集合を実行単位として実行する命令並列実行可能なプロセッサであって、
    デバッグ割込みを発生させるデバッグ命令を検出するデバッグ命令検出手段と、
    並列実行が可能な命令数と同じ数の前記デバッグ命令検出手段を備える命令解析手段と、前記命令解析手段において前記デバッグ命令が検出された際に、前記デバッグ命令と同一の実行単位に含まれ且つ前記デバッグ命令より低位のアドレスに配置されている命令を実行する命令実行手段と、
    前記デバッグ命令が検出された際に、前記デバッグ命令と同一の実行単位に含まれ且つ前記デバッグ命令より高位のアドレスに配置されている命令の実行を取り消す命令取消手段を備えたプロセッサ。
  2. 連続したアドレスに配置された複数の命令の集合を実行単位として実行する命令並列実行可能なプロセッサであって、
    デバッグ割込みを発生させるデバッグ命令を検出するデバッグ命令検出手段と、
    並列実行が可能な命令数と同じ数の前記デバッグ命令検出手段を備える命令解析手段と、命令メモリより複数の命令をフェッチする命令フェッチ手段において、
    命令メモリよりフェッチされた個々の命令の一部分を特定のビットパターンと一致するか否かを判定する命令部分判定手段と、
    前記命令部分判定手段でパターンが一致したと判定された場合に、
    フェッチされた複数の命令のうち、前記命令部分判定手段における判定対象の命令より高位のアドレスに配置された命令を無効とする命令無効化手段と、
    フェッチされた複数の命令のうち、前記命令部分判定手段における判定対象の命令及び前記命令部分判定手段における判定対象の命令より低位のアドレスに配置された命令を、命令解析手段に発行する命令発行手段と、
    前記命令部分判定手段でパターンが一致される命令のうち、特定の命令を前記デバッグ命令として解読する命令解読手段
    を備えたプロセッサ。
  3. 命令並列実行可能なプロセッサで動作するプログラム中の論理的に並列実行可能な命令列中の任意の命令にブレークポイントを設定する動作において、
    論理的に並列実行可能な命令列中の並列実行可能な境界指定を変更するステップ
    を備えたブレークポイント制御方法。
  4. 命令並列実行可能なプロセッサで動作するプログラム中の論理的に並列実行可能な命令列中の任意の命令列のみを実行させる動作において、
    論理的に並列実行可能な命令列中の並列実行可能な境界指定を変更するステップ
    を備えた実行制御方法。
  5. 命令並列実行可能なプロセッサで動作するプログラム中の論理的に並列実行可能な命令列中の任意の命令にブレークポイントを設定する動作において、
    論理的に並列実行可能な命令列中のブレークポイント設定位置に後続する命令を実行しても保証すべき演算結果に影響を与えない命令に置換するステップ
    を備えたブレークポイント制御方法。
  6. 命令並列実行可能なプロセッサで動作するプログラム中の論理的に並列実行可能な命令列の任意の命令列のみを実行させる動作において、
    論理的に並列実行可能な命令列中の任意の実行させたい命令列以外の命令を実行しても保証すべき演算結果に影響を与えない命令に置換するステップ
    を備えた実行制御方法。
  7. 命令並列実行可能なプロセッサで動作するプログラム中の論理的に並列実行可能な命令列中の任意の命令にブレークポイントを設定する動作において、
    論理的に並列実行可能な命令列を保証すべき演算結果に影響を与えない範囲で命令順を変更するステップ
    を備えたブレークポイント制御方法。
  8. 命令並列実行可能なプロセッサで動作するプログラム中の論理的に並列実行可能な命令列の任意の命令列のみを実行させる動作において、
    論理的に並列実行可能な命令列を保証すべき演算結果に影響を与えない範囲で命令順を変更するステップ
    を備えた実行制御方法。
  9. 命令並列実行可能なプロセッサで動作するプログラム中の論理的に並列実行可能な命令列中の任意の命令にブレークポイントを設定する動作において、
    当該プロセッサ制約に合わせて、ブレークポイント設定位置を補正するステップと、
    補正後の位置で停止したことを検出するステップと、
    補正後の位置から補正前の位置までの命令をソフトウェアエミュレーションするステップを備えたブレークポイント制御方法。
  10. 命令並列実行可能なプロセッサで動作するプログラム中の論理的に並列実行可能な命令列の任意の命令列のみを実行させる動作において、
    当該の任意の命令列を抽出するステップと
    抽出した命令列のみをソフトウェアエミュレーションするステップ
    を備えた実行制御方法。
  11. ソースプログラムから生成された命令並列実行可能なプロセッサで動作するプログラムを、ソースプログラムに着目して部分実行する動作において、
    ソースプログラムの実行文と命令位置の対応づけしたデバッグ情報から、ソースプログラムの実行文と命令列の対応づけを抽出するステップと、
    抽出された命令列を請求項4,6,8,10の少なくとも一つにより実行するステップ
    を備えることによりソースプログラムと同じ順で実行可能とする実行制御方法。
  12. 請求項3から11の少なくとも一つをコンピュータに実行させるプログラム。
  13. 請求項3から11の少なくとも一つを実施するデバッグ装置。
JP2005245645A 2005-08-26 2005-08-26 プロセッサ、及び並列命令実行対応デバッグ装置 Pending JP2007058731A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005245645A JP2007058731A (ja) 2005-08-26 2005-08-26 プロセッサ、及び並列命令実行対応デバッグ装置
US11/509,797 US20070050682A1 (en) 2005-08-26 2006-08-25 Processor and debugging device
US12/394,538 US20090164764A1 (en) 2005-08-26 2009-02-27 Processor and debugging device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005245645A JP2007058731A (ja) 2005-08-26 2005-08-26 プロセッサ、及び並列命令実行対応デバッグ装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011112495A Division JP2011181100A (ja) 2011-05-19 2011-05-19 プロセッサ、及び並列命令実行対応デバッグ装置

Publications (1)

Publication Number Publication Date
JP2007058731A true JP2007058731A (ja) 2007-03-08

Family

ID=37805788

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005245645A Pending JP2007058731A (ja) 2005-08-26 2005-08-26 プロセッサ、及び並列命令実行対応デバッグ装置

Country Status (2)

Country Link
US (2) US20070050682A1 (ja)
JP (1) JP2007058731A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011517493A (ja) * 2008-03-11 2011-06-09 クゥアルコム・インコーポレイテッド 実行された命令の結果を選択的にコミットするためのシステムおよび方法
JP2013025559A (ja) * 2011-07-21 2013-02-04 Mitsubishi Electric Corp プログラムトレース管理装置及びプログラムトレース管理方法及びプログラム

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2557343C (en) * 2006-08-28 2015-09-22 Ibm Canada Limited-Ibm Canada Limitee Runtime code modification in a multi-threaded environment
US7689815B2 (en) * 2007-10-12 2010-03-30 Freescale Semiconductor, Inc Debug instruction for use in a data processing system
US8261047B2 (en) * 2008-03-17 2012-09-04 Freescale Semiconductor, Inc. Qualification of conditional debug instructions based on address
JP5163230B2 (ja) * 2008-03-31 2013-03-13 富士通株式会社 検証プログラム、該プログラムを記録した記録媒体、検証装置、および検証方法
RU2553056C2 (ru) * 2013-10-24 2015-06-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ сохранения состояния эмулятора и его последующего восстановления
US9547483B1 (en) * 2015-11-06 2017-01-17 International Business Machines Corporation Feedback directed optimized compiling of optimized executable code
US10394695B2 (en) * 2017-09-25 2019-08-27 Oracle International Corporation Method and system for recording and debugging process flows
US20220358026A1 (en) * 2019-07-12 2022-11-10 Sony Group Corporation Information processing device, information processing method, and program

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04174034A (ja) * 1990-11-02 1992-06-22 Nec Ic Microcomput Syst Ltd プログラム開発支援装置のステップ実行動作方法
JPH0659933A (ja) * 1992-08-11 1994-03-04 Toshiba Corp コード変換装置
JPH0784797A (ja) * 1993-06-30 1995-03-31 Toshiba Corp ロードモジュールへのソースコード行番号登録方法および装置
JPH11194957A (ja) * 1998-01-07 1999-07-21 Matsushita Electric Ind Co Ltd デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体
JP2000284964A (ja) * 1999-03-22 2000-10-13 Sun Microsyst Inc Vliwプロセッサにおける効率的なサブ命令エミュレーション
JP2001154877A (ja) * 1999-11-30 2001-06-08 Fujitsu Ltd 割込制御装置および方法
JP2001256047A (ja) * 2000-03-10 2001-09-21 Fujitsu Ltd 計算機とその制御方法
JP2004206699A (ja) * 2002-12-12 2004-07-22 Matsushita Electric Ind Co Ltd シミュレーション装置、シミュレーション方法及びプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371747A (en) * 1992-06-05 1994-12-06 Convex Computer Corporation Debugger program which includes correlation of computer program source code with optimized object code
US5446900A (en) * 1992-07-24 1995-08-29 Microtec Research, Inc. Method and apparatus for statement level debugging of a computer program
US5694589A (en) * 1995-06-13 1997-12-02 Intel Corporation Instruction breakpoint detection apparatus for use in an out-of-order microprocessor
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6016555A (en) * 1997-11-19 2000-01-18 Texas Instruments Incorporated Non-intrusive software breakpoints in a processor instruction execution pipeline
US6249907B1 (en) * 1998-03-24 2001-06-19 International Business Machines Corporation Method system and article of manufacture for debugging a computer program by encoding user specified breakpoint types at multiple locations in the computer program
EP0992906B1 (en) * 1998-10-06 2005-08-03 Texas Instruments Inc. Apparatus and method for software breakpoint in a delay slot
US6321329B1 (en) * 1999-05-19 2001-11-20 Arm Limited Executing debug instructions
US6408382B1 (en) * 1999-10-21 2002-06-18 Bops, Inc. Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture
US7269720B2 (en) * 2001-06-29 2007-09-11 Nxp B.V. Dynamically controlling execution of operations within a multi-operation instruction
JP2003050716A (ja) * 2001-08-06 2003-02-21 Matsushita Electric Ind Co Ltd ソフトウエアデバッガとソフトウエア開発支援システム
US7257805B2 (en) * 2001-11-09 2007-08-14 International Business Machines Corporation Restoring debugging breakpoints subsequent to program code modifications

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04174034A (ja) * 1990-11-02 1992-06-22 Nec Ic Microcomput Syst Ltd プログラム開発支援装置のステップ実行動作方法
JPH0659933A (ja) * 1992-08-11 1994-03-04 Toshiba Corp コード変換装置
JPH0784797A (ja) * 1993-06-30 1995-03-31 Toshiba Corp ロードモジュールへのソースコード行番号登録方法および装置
JPH11194957A (ja) * 1998-01-07 1999-07-21 Matsushita Electric Ind Co Ltd デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体
JP2000284964A (ja) * 1999-03-22 2000-10-13 Sun Microsyst Inc Vliwプロセッサにおける効率的なサブ命令エミュレーション
JP2001154877A (ja) * 1999-11-30 2001-06-08 Fujitsu Ltd 割込制御装置および方法
JP2001256047A (ja) * 2000-03-10 2001-09-21 Fujitsu Ltd 計算機とその制御方法
JP2004206699A (ja) * 2002-12-12 2004-07-22 Matsushita Electric Ind Co Ltd シミュレーション装置、シミュレーション方法及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011517493A (ja) * 2008-03-11 2011-06-09 クゥアルコム・インコーポレイテッド 実行された命令の結果を選択的にコミットするためのシステムおよび方法
JP2013025559A (ja) * 2011-07-21 2013-02-04 Mitsubishi Electric Corp プログラムトレース管理装置及びプログラムトレース管理方法及びプログラム

Also Published As

Publication number Publication date
US20090164764A1 (en) 2009-06-25
US20070050682A1 (en) 2007-03-01

Similar Documents

Publication Publication Date Title
JP2007058731A (ja) プロセッサ、及び並列命令実行対応デバッグ装置
US7237229B2 (en) Debugging aid parallel execution of a plurality of iterations with source lists display corresponding to each iteration
TWI514267B (zh) 用於多股亂序處理器中之指令排程的方法及裝置與系統
FI102219B (fi) Parannettu virheraportointi käännetyn koodin suorittamiseksi
JP5488697B2 (ja) マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム
JP5335887B2 (ja) アドレスに基づく条件付きデバッグ命令を認証するデバッグ方法、制御方法、およびデバッグ装置
JP4718901B2 (ja) 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム
JP2019537782A (ja) 垂直統合インストルメント化およびトレース再構成のためのシステム、方法およびデバイス
JP6236443B2 (ja) ベクトル処理中のデータ要素処理のための順序制御
JPH09198276A (ja) プログラムデバッグシステム
JP6122749B2 (ja) コンピュータシステム
JP2003050715A (ja) コンパイラおよびデバッグ装置
US20160147517A1 (en) Method and computer program product for disassembling a mixed machine code
US9383977B1 (en) Generation of compiler description from architecture description
Grun et al. RTGEN: An algorithm for automatic generation of reservation tables from architectural descriptions
Wang et al. Accurate source-level simulation of embedded software with respect to compiler optimizations
Chattopadhyay et al. LISA: A uniform ADL for embedded processor modeling, implementation, and software toolsuite generation
KR100303712B1 (ko) 파이프라인기계에서의어드레스파이프라인을위한방법및장치
Fauth Beyond tool-specific machine descriptions
Halambi et al. Automatic software toolkit generation for embedded systems-on-chip
JP2011181100A (ja) プロセッサ、及び並列命令実行対応デバッグ装置
Van Put et al. Lancet: A nifty code editing tool
Leupers et al. Retargetable compilers and architecture exploration for embedded processors
US20140365751A1 (en) Operand generation in at least one processing pipeline
Stitt et al. Thread warping: Dynamic and transparent synthesis of thread accelerators

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080725

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20091126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100701

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110519

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110621