(57)【特許請求の範囲】
【請求項１】
通信手段を介してプロセッサデバイスと接続し、プロセッサデバイスのデバッグを行なうデバッグ装置であって、
プロセッサデバイスは複数のコアを含み、
夫々のコアには、
コアに搭載されるプログラムの実行を開始する実行手段と、
所定の条件によりコアに搭載されるプログラムの実行を停止する停止手段と、
各コアの停止直前までのトレースデータを記録するトレースデータ記憶手段と、
実行サイクルをカウントするサイクルカウンタとが備わり、
上記デバッグ装置は、
各コアのトレースデータ記憶手段からトレースデータを読み出して表示するトレース結果表示手段と、
各々のサイクルカウンタのカウント値の差に基づいて、複数のコアの停止タイミングの差を算出するサイクル遅延計算手段とを含み、
上記トレース結果表示手段は、停止タイミングの異なる複数のコアのトレース結果を、同じ時間軸に並べて表示することを特徴とするデバッグ装置。
【請求項２】
上記サイクル遅延計算手段は、
各コアの動作周波数が異なる場合には、動作周波数の比率、及び各々のサイクルカウンタのカウント値の差に基づいて、複数のコアの停止タイミングの差を各コアのサイクル数として算出する
ことを特徴とする請求項１に記載のデバッグ装置。
【請求項３】
更に、
各コアに搭載されるプログラムリストを表示するプログラム表示手段と、
上記サイクル遅延計算手段が算出した停止タイミングの差を用いて、各コアのプログラムリスト上に、他のコアの停止タイミングを表示するサイクル遅延表示手段と
を備えることを特徴とする請求項１又は２に記載のデバッグ装置。
【請求項４】
接続するプロセッサデバイスが複数であり、それら複数のプロセッサデバイスがカスケード接続されており、
上記サイクル遅延計算手段は、プロセッサデバイス間のコマンド遅延、各コアの動作周波数の比率、及び各々のサイクルカウンタのカウント値の差に基づいて、複数のコアの停止タイミングの差を各コアのサイクル数として算出することを特徴とする請求項１に記載のデバッグ装置。
【請求項５】
請求項４に記載のデバッグ装置と、
一つのプロセッサデバイスからコア停止を通知するコア停止通知信号が出力されると、該コア停止通知信号を直接受信してデバッグ装置へ通知する停止通知手段を含む通信手段と
からなるデバッグシステム。
【請求項６】
複数のコアを含むプロセッサデバイスのデバッグ方法であって、
夫々のコアには、
コアに搭載されるプログラムの実行を開始する実行手段と、
所定の条件によりコアに搭載されるプログラムの実行を停止する停止手段と、
各コアの停止直前までのトレースデータを記録するトレースデータ記憶手段と、
実行サイクルをカウントするサイクルカウンタとが備わり、
上記デバッグ方法は、
各々のサイクルカウンタのカウント値の差に基づいて、複数のコアの停止タイミングの差を算出するサイクル遅延計算ステップと、
各コアのトレースデータ記憶手段からトレースデータを読み出して表示する際に、複数のコアのトレース結果を、上記サイクル遅延計算ステップで算出された停止タイミングの差に基づいて、同じ時間軸に並べて表示するトレース結果表示ステップと
を含むデバッグ方法。
【請求項７】
上記サイクル遅延計算ステップでは、
各コアの動作周波数が異なる場合には、動作周波数の比率、及び各々のサイクルカウンタのカウント値の差に基づいて、複数のコアの停止タイミングの差を各コアのサイクル数として算出する
ことを特徴とする請求項６に記載のデバッグ方法。
【請求項８】
更に、
各コアに搭載されるプログラムリストを表示するプログラム表示ステップと、
上記サイクル遅延計算ステップにて算出された停止タイミングの差を用いて、各コアのプログラムリスト上に、他のコアの停止タイミングを表示するサイクル遅延表示ステップと
を備えることを特徴とする請求項６又は７に記載のデバッグ方法。
【請求項９】
接続するプロセッサデバイスが複数であり、それら複数のプロセッサデバイスがカスケード接続されており、
上記サイクル遅延計算ステップでは、
プロセッサデバイス間のコマンド遅延、各コアの動作周波数の比率、及び各々のサイクルカウンタのカウント値の差に基づいて、複数のコアの停止タイミングの差を各コアのサイクル数として算出する
ことを特徴とする請求項６に記載のデバッグ方法。
【請求項１０】
請求項９に記載のデバッグ方法において、更に、
一つのプロセッサデバイスからコア停止を通知するコア停止通知信号が出力されると、カスケード接続される複数のプロセッサデバイスのうちの先頭のプロセッサデバイスに接続する通信手段に対して、直接にコア停止通知信号を通知する停止通知ステップを含む
デバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサデバイスのためのデバッグ装置に関する。
【背景技術】
【０００２】
近年の電子機器では、システムの制御やデータの処理をプログラムに従って行うマイクロプロセッサやＤＳＰが多用されている。そこではプログラムの品質が製品の品質を左右することになるため、プログラムのデバッグは非常に重要になっている。
【０００３】
マイクロプロセッサやＤＳＰに含まれるプロセッサの動作速度も高速になってきているが、処理内容も益々複雑になり更なる高速化が要求されている。このために１個のデバイスに複数のＣＰＵを搭載するマルチコア方式を利用したり、複数個のデバイスを同時に使用するマルチデバイス方式を利用したりして、処理能力を上げるという方策が採られている。なお、マルチコア（Ｍｕｌｔｉ−ｃｏｒｅ、Ｍｕｌｔｉｐｌｅ  ｃｏｒｅ）は、一つのプロセッサパッケージ内に複数のプロセッサコアを封入した技術であり、マルチプロセッシングの一形態である。
【０００４】
このようなマルチコア環境では、各コアが連携して動作することが多く、幾つかのコアを同時にデバッグする必要がある。そのため、デバッグ環境もマルチコアに対応したものが増えている。
【０００５】
なお、本願発明の先行技術文献として、後述の特許文献１〜１１が挙げられる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、マルチコア環境のデバッグにおいて、プログラムの停止タイミングのずれや、動作周波数の違いを考慮して、デバッグ効率を向上させるデバッグ装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記の目的を達成するためになされたものである。本発明に係るデバッグ装置は、通信手段を介してプロセッサデバイスと接続し、プロセッサデバイスのデバッグを行なうデバッグ装置である。プロセッサデバイスは複数のコアを含み、夫々のコアには、コアに搭載されるプログラムの実行を開始する実行手段と、所定の条件によりコアに搭載されるプログラムの実行を停止する停止手段と、各コアの停止直前までのトレースデータを記録するトレースデータ記憶手段と、実行サイクルをカウントするサイクルカウンタとが備わる。上記デバッグ装置は、各コアのトレースデータ記憶手段からトレースデータを読み出して表示するトレース結果表示手段と、各々のサイクルカウンタのカウント値の差に基づいて、複数のコアの停止タイミングの差を算出するサイクル遅延計算手段とを含み、上記トレース結果表示手段は、停止タイミングの異なる複数のコアのトレース結果を、同じ時間軸に並べて表示することを特徴とする。
【０００８】
上記サイクル遅延計算手段は、各コアの動作周波数が異なる場合には、動作周波数の比率、及び各々のサイクルカウンタのカウント値の差に基づいて、複数のコアの停止タイミングの差を各コアのサイクル数として算出することが好ましい。
【０００９】
デバッグ装置は、更に、各コアに搭載されるプログラムリストを表示するプログラム表示手段と、上記サイクル遅延計算手段が算出した停止タイミングの差を用いて、各コアのプログラムリスト上に、他のコアの停止タイミングを表示するサイクル遅延表示手段とを備えることが好ましい。
【００１０】
接続するプロセッサデバイスが複数であり、それら複数のプロセッサデバイスがカスケード接続されている場合には、上記サイクル遅延計算手段は、プロセッサデバイス間のコマンド遅延、各コアの動作周波数の比率、及び各々のサイクルカウンタのカウント値の差に基づいて、複数のコアの停止タイミングの差を各コアのサイクル数として算出することをが、好ましい。また、このとき、デバッグ装置と、一つのプロセッサデバイスからコア停止を通知するコア停止通知信号が出力されると、該コア停止通知信号を直接受信してデバッグ装置へ通知する停止通知手段を含む通信手段とから、デバッグシステムを構成してもよい。
【発明の効果】
【００１１】
本発明に係るデバッグ装置は、停止タイミングの異なるマルチコアのトレースデータを、同じ時間軸に並べて表示できるので、複数のコアにおける処理の様子を一目で把握することが可能になる。このことにより、デバッグ作業の効率が向上する。また、本発明に係るデバッグ装置は、停止タイミングの異なるマルチコアの、停止した順番と時間差をそれぞれのコアのサイクル数で表示するので、最初のコアが停止してから他のコアがどのような処理を行ったかを視覚的に捉えることが可能となる。このことによっても、デバッグ作業の効率が向上する。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態に係るデバッグシステムの構成を示すブロック図である。
【図２】第１のコアが先に停止し、遅れて第２のコアが停止した場合における、夫々のトレースデータの例である（図２（ａ））。第２のコアのトレース結果に対して第１のコアのトレース結果を２サイクル早めて表示する例である（図２（ｂ））。
【図３】図１に示す第１の実施形態のデバッグシステムに関する、第１のコアの実行停止と、第２のコアの実行停止との、時間的関係を示す図である（図３（１））。図１に示す本実施形態のデバッグシステムに関して、プロセッサデバイス内の全コアの停止を制御する停止制御手段が無い構成である場合の、第１のコアの実行停止と、第１のコアの実行停止との、時間的関係を示す図である（図３（２））。
【図４】本発明の第２の実施形態に係るデバッグシステムの構成を示すブロック図である。
【図５】サイクル遅延表示手段の機能を説明するための、プログラム表示の例である。
【図６】トレース結果の表示の例である。
【図７】行間距離を各コアの動作周波数の比に基づいて変更している、トレース結果の表示の例である。
【図８】サイクル遅延表示手段の機能を説明するための、プログラム表示の例である。
【図９】本発明の第４の実施形態に係るデバッグシステムの構成を示すブロック図である。
【図１０】図９に示す本実施形態のデバッグシステムに関する、第１のプロセッサデバイスのコアの動作と、第２のプロセッサデバイスのコアの動作との、時間的関係を示す図である。
【図１１】サイクル遅延計算手段の算出する停止タイミングの差、及び、各コアの動作周波数の比に基づいて、トレース結果表示手段が表示するトレース結果である。
【図１２】本発明の第５の実施形態に係るデバッグシステムの構成を示すブロック図である。
【図１３】第５の実施形態に係るデバッグシステムに関する、第１のプロセッサデバイスのコアと、第２のプロセッサデバイスのコアとの、特に停止時の動作の時間的関係を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明に係る好適な実施形態を説明する。
【００１４】
[第１の実施形態]
図１は、本発明の第１の実施形態に係るデバッグシステムの構成を示すブロック図である。図１に示すデバッグシステムは、デバッグ機能を内蔵するマルチコアのプロセッサデバイス２のためのものであり、インサーキットエミュレータである通信手段６と、デバッガ（デバッグ装置）８とを含む。
【００１５】
プロセッサデバイス２は、複数のコア（第１のコア１４ａ、第２のコア１４ｂ）を含む。夫々のコアには、リソースアクセス手段（第１のリソースアクセス手段１６ａ、第２のリソースアクセス手段１６ｂ）、実行手段（第１の実行手段１８ａ、第２の実行手段１８ｂ）、停止手段（第１の停止手段２０ａ、第２の停止手段２０ｂ）、ＣＬＯＣＫ（第１のＣＬＯＣＫ１２ａ、第２のＣＬＯＣＫ１２ｂ）、サイクルカウンタ（第１のサイクルカウンタ２２ａ、第２のサイクルカウンタ２２ｂ）、及び、トレースデータ記憶手段（第１のトレースデータ記憶手段２４ａ、第２のトレースデータ記憶手段２４ｂ）が、関連付けられて接続される。
【００１６】
図１に示すマルチコアのプロセッサデバイス２は、２個のコアを備えるが、勿論、それ以上の数のコアを備えるプロセッサデバイスにも本実施形態は適用可能である。
【００１７】
リソースアクセス手段（第１のリソースアクセス手段１６ａ、第２のリソースアクセス手段１６ｂ）は、デバッガ８からのコマンド等に従って、リソース、主としてコアへのアクセスを行いコアに搭載されるプログラムの読出し等を行う。実行手段（第１の実行手段１８ａ、第２の実行手段１８ｂ）は、デバッガ８からのコマンド等に従って、コアに対してコアに搭載されるプログラムの実行を開始させる手段である。停止手段（第１の停止手段２０ａ、第２の停止手段２０ｂ）は、デバッガ８からのコマンド等に基づいて、コアに対してコアに搭載されるプログラムの実行を停止させる手段である。
【００１８】
ＣＬＯＣＫ（第１のＣＬＯＣＫ１２ａ、第２のＣＬＯＣＫ１２ｂ）は、コアに対してクロック信号を供給する。サイクルカウンタ（第１のサイクルカウンタ２２ａ、第２のサイクルカウンタ２２ｂ）は、コアにおけるプログラムの実行の開始と同時にカウントアップを行なう。更に、トレースデータ記憶手段（第１のトレースデータ記憶手段２４ａ、第２のトレースデータ記憶手段２４ｂ）は、コアにおけるプログラムの実行の開始と同時にトレースデータの記録を行なう。
【００１９】
更に、プロセッサデバイス２は、各コアの停止を制御する停止制御手段２６と、プロセッサデバイス２におけるデバッグの制御を行なうデバッグ制御手段４とを備える。
【００２０】
デバッガ８は、パーソナルコンピュータ等のコンピュータに、デバッガプログラムを搭載することにより実現される。デバッガ８は、コアにおけるプログラムの実行を操作する実行操作手段３０、コアにおけるプログラムの実行の停止を操作する停止操作手段３２、コアにおけるプログラムの実行の停止設定を操作する停止設定操作手段３４、コアで実行されるプログラムを表示するプログラム表示手段３６、トレースデータ記憶手段に記録されたトレースデータを表示するトレース結果表示手段３８、及び、サイクル遅延計算手段４０を備える。サイクル遅延計算手段４０の動作の詳細については後述する。
【００２１】
図１のように構成される本実施形態に係るデバッグシステムの動作を説明する。デバッガ８は、通信手段８を介してプロセッサデバイス２のデバッグ処理を行う。デバッガ８からの実行コマンド発行前に、サイクルカウンタ（第１のサイクルカウンタ２２ａ、第２のサイクルカウンタ２２ｂ）は、デバッガ８からのクリアコマンドによりクリア（リセット）される。デバッガ８から、第１のコア１４ａ、第２のコア１４ｂのプログラムを実行する、というコマンドが発せられると、プロセッサデバイス２のデバッグ制御手段４は、第１の実行手段２０ａ、第２の実行手段２０ｂを介して、第１のコア１４ａ、第２のコア１４ｂにプログラムの実行を開始させる。このとき同時に、第１のサイクルカウンタ２２ａ、第２のサイクルカウンタ２２ｂのカウントアップと、第１のトレースデータ記憶手段２４ａ、第２のトレースデータ記憶２４ｂへのトレースデータの記録とが開始される。
【００２２】
同様に、デバッガ８から、第１のコア１４ａ、第２のコア１４ｂのプログラムを停止する、というコマンドが発せられると、各停止手段が、対応するコアを停止させ、サイクルカウンタのカウントアップと、トレースデータ記憶手段によるトレースデータの記録を停止する。ここで、各停止手段（第１の停止手段２０ａ、第２の停止手段２０ｂ）は、対応するコアのアドレスバス、データバス、コアステータス等を監視し、予め停止設定操作手段３４により設定された条件に一致すると、対応するコアを停止させる。更に、一つのコアが停止すると、停止制御手段２６を通じて、他のコアも停止されるように構成されている。
【００２３】
停止の際、実行中の命令によっては、コアは即座に停止せず数サイクル実行してから停止することが多い。また、各トレースデータ記憶手段（２４ａ、２４ｂ）は、対応するコアにおけるプログラムの停止直前までを記録する。そのため、停止直前までトレースデータ記憶手段（第１のトレースデータ記憶手段２４ａ、第２のトレースデータ記憶手段２４ｂ）に取りこまれた複数のコアに対応するトレースデータの末尾は、通常、時間的に一致しない。
【００２４】
デバッガ８のトレース結果表示手段３８は、デバッグ制御手段４を通じて各トレースデータを、第１のトレースデータ記憶手段２４ａ、第２のトレースデータ記憶手段２４ｂから読み出し、コア毎に個別のトレースデータを表示する。その際、デバッガ８のサイクル遅延計算手段４０は、各コアにおけるプログラム停止時のサイクルカウンタ（第１のサイクルカウンタ２２ａ、第２のサイクルカウンタ２２ｂ）のカウント値を読み出し、停止タイミングの差を算出する。この停止タイミングの差に従い、トレース結果表示手段３８は、コア毎のトレースデータを、時間軸上一致するように表示する。このことにより、複数のコアにおける処理の様子を一目で把握することが可能になり、デバッグ作業の効率が向上する。
【００２５】
各コアの動作クロックが同じである（即ち、動作周波数が同じである）場合、上述のサイクル遅延計算手段４０により算出される停止タイミングの差は、以下の式により求められる。
【００２６】
第１のコアに対する、第２のコアの停止サイクル遅延差＝（第２のサイクルカウンタの値）−（第１のサイクルカウンタの値）
第２のコアに対する、第１のコアの停止サイクル遅延差＝（第１のサイクルカウンタの値）−（第２のサイクルカウンタの値）
【００２７】
図２（ａ）は、第１のコア１４ａが先に停止し、遅れて第２のコア１４ｂが停止した場合における、夫々のトレースデータの例である。各サイクルカウンタは、コアに搭載されるプログラムが開始から停止までに実行したサイクル数を示している。第１のコア１４ａでは１３（０００Ｄ）サイクルが、第２のコア１４ｂでは１５（０００Ｆ）サイクルが、実行されている。上記表１の計算式により、第１のコア１４ａに対する第２のコア１４ｂの停止サイクル遅延は、
１５−１３＝２
となる。そこで、図２（ｂ）に示すように、トレース結果表示手段３８は、サイクル遅延計算手段４０の上記算出結果に基づいて、第２のコア１４ｂのトレース結果に対して第１のコア１４ｂのトレース結果を２サイクル早めて表示する。そうすると、両トレース結果の左右の関係においては、経過時間は一致することになる。
【００２８】
なお、図３（１）は、図１に示す本実施形態のデバッグシステムに関する、第１のコア１４ａの実行停止と、第２のコア１４ｂの実行停止との、時間的関係を示す図である。図３（１）に示す図では、まず、第１のコア１４ａが停止し、このことが停止制御手段２６に通知され、この通知を受けた停止制御手段２６が第２のコア１４ｂ（の停止手段２０ｂ）に停止要求を発している。要求を受けた第２のコア１４ｂは条件が整えば停止する。このとき、第１のサイクルカウンタ２２ａは、第１のコア１４ａにおける「実行中」の「コアクロック」数をカウントする。第２のサイクルカウンタ２２ｂは、第２のコア１４ｂにおける「実行中」の「コアクロック」数をカウントする。そして、サイクル遅延計算手段４０は、「停止遅延」のコアクロック数を計算する。
【００２９】
また、図１に示す本実施形態のデバッグシステムに関して、プロセッサデバイス２内の全コアの停止を制御する停止制御手段２６を備えていないという構成も想定され得る。この場合のデバッグシステムに関する、第１のコア１４ａの実行停止と、第１のコア１４ｂの実行停止との、時間的関係を、図３（２）に示す。この場合、第１のコア１４ａの停止を（停止制御手段ではなく）デバッガ８が認識する。更にデバッガ８が、全コアに対して停止コマンドを発行する。従って、図３（２）に示すように、「停止サイクル遅延」が大きくなるが、このような構成においても、サイクル遅延計算手段４０を設けて、各コアにおけるプログラム停止時のサイクルカウンタのカウント値を読み出し、停止タイミングの差を算出することができる。更にこの停止タイミングの差に従い、トレース結果表示手段３８は、コア毎のトレースデータを時間軸上一致するように表示することができる。
【００３０】
一般に、マルチコアのプロセッサデバイスでは、複数のコアのうち一つが特定アドレスのフェッチやデータアクセスを条件として搭載プログラムの動作を停止すると、他のコアの搭載プログラムも動作を停止する機能が用意されている。このとき、あるコアが停止して他のコアが停止するまでには遅延が生じる。各コアの動作を記録するトレースデータは、上述のように、プログラムの停止直前まで記録されるが、コアによって停止タイミングにずれ（即ち、遅延）が生じるために、複数のコアのトレースデータを単純に並べて表示しても時間的なずれを含んだままである。本実施形態では、停止タイミングの異なる複数のコアのトレースデータを、時間的に揃えて表示することができる。これにより、複数のコアにおける処理の様子を容易に把握することが可能になり、デバッグ効率を向上させることができる。
【００３１】
また、本実施形態に係るデバッガは、停止タイミングの異なるマルチコアのトレースデータを、時間情報をトレースメモリに記録することなく、同じ時間軸に並べて表示できるので、トレースメモリを節約することもできる。
【００３２】
[第２の実施形態]
図４は、本発明の第２の実施形態に係るデバッグシステムの構成を示すブロック図である。第２の実施形態に係るデバッグシステムは、第１の実施形態に係るデバッグシステムと略同じである。従って、同一部位には同一符号を付して説明を省略し、両者の差異を中心に説明する。
【００３３】
図４に示す第２の実施形態に係るデバッグシステムでは、デバッガ８が更に、サイクル遅延表示手段４２を備える。
【００３４】
上述したように、デバッガ８のプログラム表示手段３０は、プロセッサデバイス２のリソースアクセス手段（第１のリソースアクセス手段１６ａ、第２のリソースアクセス手段１６ｂ）を通じて、各コアに搭載されているプログラムを読み出し、画面に表示する。その際、プログラム表示手段３０は、停止時における、プログラムカウンタが指す位置をプログラム表示画面中に「ＰＣ」と表示する。ここでサイクル遅延表示手段４２は、各プログラム表示画面において、他のコアのプログラムの停止タイミングの差を表示する。
【００３５】
図５に示すプログラム表示の例を用いて、サイクル遅延表示手段４２の機能を説明する。サイクル遅延計算手段４０により、第１のコア１４ａに対する第２のコア１４の停止遅延サイクルが“２”と算出された場合、サイクル遅延表示手段４２は、図５左部に示すように、第１のコア１４ａのプログラム表示画面１０１上の「ＰＣ」から２サイクル後に、第２のコア１４ｂの停止タイミングの表示として「ＣＰＵ２」を表示する。また、図５右部に示すように、第２のコア１４ｂのプログラム表示画面１０２上の「ＰＣ」から２サイクル前に、第１のコア１４ａの停止タイミングの表示として「ＣＰＵ１」を表示する。
【００３６】
マルチコアのプロセッサデバイスでは、コアによってプログラムの停止タイミングに通常、差異が生じるが、一般的なデバッガの機能では各コアの停止した順番とタイミングを知ることができない。これに対して、本実施形態では、複数のコアが時間差をもって停止した場合に、それらの順番とタイミングとを、ソースプログラムリスト上で視覚的に認識することができる。
【００３７】
[第３の実施形態]
本発明の第３の実施形態に係るデバッグシステムについて説明する。第１の実施形態に係るデバッグシステム及び第２の実施形態に係るデバッグシステムに対しては、プロセッサデバイスに含まれる複数のコアの動作周波数（動作クロック）が同じであった。第３の実施形態に係るデバッグシステムに対しては、プロセッサデバイスに含まれる複数のコアの動作周波数が、夫々異なっている。このような条件下で、サイクル遅延計算手段４０がコア毎の停止サイクルの差を計算し、サイクル遅延表示手段４２が各コアのプログラムの停止タイミングの差を表示する。
【００３８】
なお、第３の実施形態に係るデバッグシステムの構成は、図１及び図４に示す、第１の実施形態に係るデバッグシステム及び第２の実施形態に係るデバッグシステムと、同様のものである。
【００３９】
コアの動作周波数が異なる場合、サイクル遅延計算手段４０は、以下の式に従って、停止タイミングの差を算出する。つまり、第１のコアの周波数をＦ１、第２のコアの周波数をＦ２とすると、
・第１のコアに対する、第２のコアの停止サイクル遅延差＝（第２のサイクルカウンタの値）÷Ｆ２×Ｆ１−（第１のサイクルカウンタの値）
・第２のコアに対する、第１のコアの停止サイクル遅延差＝（第１のサイクルカウンタの値）÷Ｆ１×Ｆ２−（第２のサイクルカウンタの値）
となる。
【００４０】
一定の時間内にトレースデータ記憶手段に取り込まれるデータ量は、動作周波数の低いコアの方が少ない。図６に示すように、第１のコア１４ａの動作周波数が６００ＭＨｚであり、第２のコア１４ｂの動作周波数が４００ＭＨｚである場合、第１のコア１４ａのための第１のサイクルカウンタの値が「１６（００１０）」で停止し、第２のコア１４ｂのための第２のサイクルカウンタの値が「１２（０００Ｃ）」で停止していれば、第１のコア１４ａに対する第２のコア１４ｂの停止サイクル遅延差は、以下のように計算される。
１２÷４００×６００−１６＝２
【００４１】
同様にこのとき、第２のコア１４ｂに対する第１のコア１４ａの停止サイクル遅延差は、以下のように計算される。
１６÷６００×４００−１２＝−１．３≒−１
【００４２】
従って、第１のコア１４ａからみて、第２のコア１４ｂは２サイクル遅れて停止したことになり、第２のコア１４ｂからみて、第１のコア１４ａは１サイクル早く停止したことになる。この差を踏まえて、トレース結果表示手段３８は、各コアのトレース結果を表示する（図７参照）。
【００４３】
このときトレース結果表示手段３８は、各コアの動作周波数の比に基づいて各トレース結果の行間距離を設定することが好ましい。例えば、図６に示す例の場合、第２のコア１４ｂの動作周波数（４００ＭＨｚ）は、第１のコア１４ａの動作周波数（６００ＭＨｚ）の２／３であるので、トレース結果表示手段３８は、第２のコア１４ｂによるトレース結果を、第１のコア１４ａによるトレース結果に対して行間距離を１．５倍に設定して表示するのが好ましい。図７に示すトレース結果は、行間距離を各コアの動作周波数の比に基づいて変更している。
【００４４】
更に、サイクル遅延表示手段４２は、サイクル遅延計算手段４０により計算された、第１のコア１４ａに対する第２のコア１４ｂの停止サイクル遅延差の値に基づいて、第１のコア１４ａのプログラム表示画面上の「ＰＣ」に対して、第２のコア１４ｂの停止タイミングを「ＣＰＵ２」として表示する。図６に示す例の場合、サイクル遅延計算手段４０により計算された、第１のコア１４ａに対する第２のコア１４ｂの停止サイクル遅延差の値は「２」である。よって、サイクル遅延表示手段４２は、図８左部に示すように、第１のコア１４ａのプログラム表示画面１０１上の「ＰＣ」から２サイクル後に、第２のコア１４ｂの停止タイミングの表示として「ＣＰＵ２」を表示する。
【００４５】
また、サイクル遅延表示手段４２は、サイクル遅延計算手段４０により計算された、第２のコア１４ｂに対する第１のコア１４ａの停止サイクル遅延差の値に基づいて、第２のコア１４ｂのプログラム表示画面上の「ＰＣ」に対して、第１のコア１４ａの停止タイミングを「ＣＰＵ１」として表示する。図６に示す例の場合、サイクル遅延計算手段４０により計算された、第２のコア１４ｂに対する第１のコア１４ａの停止サイクル遅延差の値は「−１．３」である。よって、サイクル遅延表示手段４２は、図８右部に示すように、第２のコア１４ｂのプログラム表示画面１０２上の「ＰＣ」から１．３サイクル前に、第１のコア１４ａの停止タイミングの表示として「ＣＰＵ１」を表示する。
【００４６】
以上のように  第３の実施形態に係るデバッグシステムでは、異なる周波数で動作する複数のコアが時間差を持って停止した場合のトレースデータを、時間的に揃えて表示することができる。また、異なる周波数で動作する複数のコアが時間差をもって停止した場合の、順番とタイミングを視覚的に知ることができる。
【００４７】
[第４の実施形態]
図９は、本発明の第４の実施形態に係るデバッグシステムの構成を示すブロック図である。第４の実施形態に係るデバッグシステムは、カスケード接続される複数のプロセッサデバイスのためのものである。図９に示すように、通信手段６は、カスケード接続される複数のプロセッサデバイスの先頭に接続する。なお、図９に示す構成では、２つのプロセッサデバイス（第１のプロセッサデバイス２ｐ、第２のプロセッサデバイス２ｑ）が備わるが、それ以上の数のプロセッサデバイスが備わる構成にも勿論、本実施形態は適用可能である。
【００４８】
各プロセッサデバイスの構成は、第３の実施形態のデバッグシステムに係るプロセッサデバイスと略同様である。また、デバッガ８の構成も、第３の実施形態のデバッグシステムにおけるデバッガと同様であるが、サイクルカウンタクリア手段４４が新たに備わる。
【００４９】
図９に示す第４の実施形態に係るデバッグシステムでは、通信手段６を通じて発行されたコマンドは、通信手段６の発する通信クロックの１サイクル以上の遅延をもって、プロセッサデバイスを伝わっていく。このため、各プロセッサデバイスにおいてコマンドの実行に遅延が生じる。
【００５０】
図１０は、図９に示す本実施形態のデバッグシステムに関する、第１のプロセッサデバイス２ｐのコア１４の動作と、第２のプロセッサデバイス２ｑのコア１４の動作との、時間的関係を示す図である。まず、デバッガ８は、実行コマンド発行前にサイクルカウンタクリア手段４４により、全コアのサイクルカウンタ２２をクリア（リセット）する。このとき、クリアコマンドは、第１のプロセッサデバイス２ｐのコア１４よりも、通信クロックの１サイクル以上遅れて、第２のプロセッサデバイス２ｑのコア１４に伝えられている。
【００５１】
続いて、デバッガ８が実行コマンドを発行する。これを受けて、通信手段８から通信データとして実行コマンドが第１のプロセッサデバイス２ｐに送られる。第１のプロセッサデバイス２ｐのコアは、実行コマンドを受け取ると実行を開始する。これと同時に、サイクルカウンタのカウントとトレースデータ記憶手段によるトレースデータの取り込みが開始される。このとき、第２のプロセッサデバイス２ｑのコアは、第１のプロセッサデバイス２ｐに対して通信クロックで１サイクル以上遅れて実行を開始する。
【００５２】
第１のプロセッサデバイス２ｐのコアが所定の条件により停止すると、停止ステータスが立てられる。デバッガ８は定期的に各コアのステータスチェックを行っており、いずれかのコアが停止していることを検知すると、全コアに対して停止コマンドを発行する。このとき、第２のプロセッサデバイス２ｑは、通信手段８の停止コマンド発行から１サイクル以上遅れて停止コマンドを受け取り、第２のプロセッサデバイス２ｑのコアに停止要求を行い、実行中のコマンドを終了して停止する。
【００５３】
このような、プロセッサデバイス間の遅延を考慮して、第１のプロセッサデバイス２ｐの第１のコア１４ａを基準とした、第１のプロセッサデバイス２ｐの第２のコア１４ｂと、第２のプロセッサの第１のコア１４ａとの、停止サイクル遅延は、以下の計算式で算出される。
【００５４】
まず、
・通信クロックの周波数を「Ｆ０」、
・第１のプロセッサデバイスの第１のコアの周波数を「Ｆ１」、
・第１のプロセッサデバイスの第２のコアの周波数を「Ｆ２」、
・第２のプロセッサデバイスの第１のコアの周波数を「Ｆ３」とする。
また、
・第１のプロセッサデバイスから第２のプロセッサデバイス２へのコマンド遅延を「Ｃ０」、
・第１のプロセッサデバイスの第１のコアの、第１のサイクルカウンタの値を「カウント（１）」、
・第１のプロセッサデバイスの第２のコアの、第２のサイクルカウンタの値を「カウント（２）」、
・第２のプロセッサデバイスの第１のコアの、第１のサイクルカウンタの値を「カウント（３）」とする。
すると、
・第１のプロセッサデバイスの第１のコアに対する、第２のプロセッサデバイスの第１のコアの停止サイクル遅延差
＝（カウント（３）＋Ｃ０×Ｆ３÷Ｆ０）÷Ｆ３×Ｆ１−（カウント（１））
・第１のプロセッサデバイスの第１のコアに対する、第１のプロセッサデバイスの第２のコアの停止サイクル遅延差
＝（カウント（２））÷Ｆ２×Ｆ１−（カウント（１））
と計算される。
【００５５】
条件の例として、
・通信クロックの周波数を「１００ＭＨｚ」、
・第１のプロセッサデバイス２ｐの第１のコア１４ａの動作周波数を「６００ＭＨｚ」、
・第１のプロセッサデバイス２ｐの第２のコア１４ｂの動作周波数を「４００ＭＨｚ」、
・第２のプロセッサデバイス２ｑの第１のコア１４ａの動作周波数を「６００ＭＨｚ」、
・第１のプロセッサデバイス２ｐから第２のプロセッサデバイス２ｑへの遅延を「（通信クロックで）１サイクル」、
・カウント（１）を「５０」、
・カウント（２）を「４０」、
・カウント（３）を「１００」
とすると、夫々の値は以下の通りとなる。
【００５６】
・第１のプロセッサデバイスの第１のコアに対する、第２のプロセッサデバイスの第１のコアの停止サイクル遅延差
＝（１００＋１×６００÷１００）÷６００×６００−５０
＝５６
・第１のプロセッサデバイスの第１のコアに対する、第１のプロセッサデバイスの第２のコアの停止サイクル遅延差
＝４０÷４００×６００−５０
＝１０
【００５７】
特に、第１のプロセッサデバイス２ｐから第２のプロセッサデバイス２ｑへの遅延は、第２のプロセッサデバイス２ｑの第１のコア１４ａのコアクロックのサイクル数に換算して、第２のプロセッサデバイス２ｑの第１のコア１４ａの第１のサイクルカウンタ２２ａの値に、加算されている。
【００５８】
デバッガ８におけるサイクル遅延計算手段４０は、上記表３の式に従って計算を行なうことになる。図１１は、サイクル遅延計算手段４０の算出する停止タイミングの差、及び、各コアの動作周波数の比に基づいて、トレース結果表示手段３８が表示するトレース結果である。
【００５９】
以上のように、第４の実施形態に係るデバッグシステムを利用することにより、カスケード接続されたプロセッサデバイスにおいて、接続方式に依存する実行・停止コマンドの通信遅延差を考慮して、トレースデータを同じ時間軸上に揃えて表示することが可能となる。
【００６０】
[第５の実施形態]
図１２は、本発明の第５の実施形態に係るデバッグシステムの構成を示すブロック図である。第５の実施形態に係るデバッグシステムは、第４の実施形態に係るデバッグシステムと略同じである。従って、同一部位には同一符号を付して説明を省略し、両者の差異を中心に説明する。
【００６１】
図１２に示す第５の実施形態に係るデバッグシステムでは、通信手段６が更に、停止通知手段５を備える。第５の実施形態において、いずれかのコアが所定の条件により停止すると、停止したコアを含むプロセッサデバイスは、通信手段６の停止通知手段５に対して直接にコア停止通知信号を発する。つまり、各プロセッサデバイスは、通信手段６の停止通知手段５に直接コア停止通知信号を送信する経路を有している。通信手段６の停止通知手段５は、コア停止通知信号を受けると、デバッガ８に対してコアの停止を通知する。デバッガ８は、コアの停止の通知を受けると、即座に全コアに対して停止コマンドを発行する。
【００６２】
図１３は、本実施形態のデバッグシステムに関する、第１のプロセッサデバイス２ｐのコア１４と、第２のプロセッサデバイス２ｑのコア１４との、特に停止時の動作の時間的関係を示す図である。図１０の場合と同様に、図１３では、第１のプロセッサデバイス２ｐのコアがまず停止し、そのことに基づいてデバッガ８が他の（全ての）コア（例えば、第２のプロセッサデバイス２ｑのコア）に停止コマンドを発行している。
【００６３】
図１３と図１０とを比較すると明白なように、第１のプロセッサデバイス２ｐのコアの停止から、第２のプロセッサデバイス２ｑのコアへの停止コマンド発行までは、図１３に示す例の方がずっと短い。
【００６４】
なお、通信手段６に備えられる停止通知手段５は、停止するコアを含むプロセッサデバイスが発したコア停止通知信号を受けると、デバッガ８に対してコアの停止を通知するのと同時に、全コアに対して停止コマンドを発行するように構成されていてもよい。この構成の場合、デバッガ８ではなく停止通知手段５が全コアに対して停止コマンドを発行するから、停止コマンドがより早く全コアに届くことになる。
【００６５】
このように、本実施形態に係るデバッグシステムでは、いずれかのコア停止から全コア停止までの時間を短縮することが可能になる。
【符号の説明】
【００６６】
２・・・プロセッサデバイス、４・・・デバッグ制御手段、５・・・停止通知手段、６・・・通信手段、８・・・デバッガ、１２ａ・・・第１のＣＬＯＣＫ、１２ｂ・・・第２のＣＬＯＣＫ、１４ａ・・・第１のコア、１４ｂ・・・第２のコア、１６ａ・・・第１のリソースアクセス手段、１６ｂ・・・第２のリソースアクセス手段、１８ａ・・・第１の実行手段、１８ｂ・・・第２の実行手段、２０ａ・・・第１の停止手段、２０ｂ・・・第２の停止手段、２２ａ・・・第１のサイクルカウンタ、２２ｂ・・・第２のサイクルカウンタ、２４ａ・・・第１のトレースデータ記憶手段、２４ｂ・・・第２のトレースデータ記憶手段、２６・・・停止制御手段、３６・・・プログラム表示手段、３８・・・トレース結果表示手段、４０・・・サイクル遅延計算手段、４２・・・サイクル遅延表示手段。
【先行技術文献】
【特許文献】
【００６７】
【特許文献１】特開２００７−１４１２００号
【特許文献２】特開２００３−１６２４２６号
【特許文献３】特開２００５−２３４６１７号
【特許文献４】特開２００２−２１５４２１号
【特許文献５】特開２００１−３３１４６６号
【特許文献６】特開２００７−１２２５４３号
【特許文献７】特開平１０−１８７４８６号
【特許文献８】特許第４０８４９１２号
【特許文献９】特許第４２２２３７０号
【特許文献１０】特公昭６３−０５７８１６号
【特許文献１１】特開平１０−２６０８６４号公報
【図１】
0005477085.tif 000002
【図２】
0005477085.tif 000003
【図３】
0005477085.tif 000004
【図４】
0005477085.tif 000005
【図５】
0005477085.tif 000006
【図６】
0005477085.tif 000007
【図７】
0005477085.tif 000008
【図８】
0005477085.tif 000009
【図９】
0005477085.tif 000010
【図１０】
0005477085.tif 000011
【図１１】
0005477085.tif 000012
【図１２】
0005477085.tif 000013
【図１３】
0005477085.tif 000014