(57)【要約】【課題】デバッグ作業の効率化および工数の削減を図ること。【解決手段】デバッグ支援装置１は、履歴情報格納部５と、制御部６とを有している。デバッガ２は、デバッグ用のプログラムをＣＰＵ４に転送する。命令処理部３は、デバッガ２がＣＰＵ４に転送したデバッグ用のプログラムに基づいてＣＰＵ４が発行したデバッグ対象の命令を処理する。処理命令格納部９は、キュー構造をなしており、命令処理部３に処理させる命令を一時記憶する。履歴情報格納部５は、処理命令格納部９に記憶される命令に関する情報を格納する。制御部６は、処理命令格納部９に記憶される命令に関する情報を履歴情報格納部５に格納する。このようにして履歴情報格納部５に格納された命令処理部３の動作に関する情報は、デバッガ２によって取得される。【選択図】図１
2010122860.tif 000002
【特許請求の範囲】
【請求項１】
デバッグを支援するデバッグ支援装置において、
デバッグ対象となる専用の命令を処理する命令処理部に処理させる命令を一時記憶するキュー構造をなす一時記憶部と、
前記一時記憶部に記憶される命令に関する情報を格納する履歴情報格納部と、
前記一時記憶部に記憶される命令に関する情報を取得して前記履歴情報格納部に格納する制御部と、
を有することを特徴とするデバッグ支援装置。
【請求項２】
前記履歴情報格納部に情報を格納する際の書き込みアドレスを格納するアドレス格納部をさらに有し、
前記制御部は、前記アドレス格納部に格納されているアドレスに基づいて、前記一時記憶部に記憶される命令に関する情報を前記履歴情報格納部に格納することを特徴とする請求項１記載のデバッグ支援装置。
【請求項３】
前記制御部は、さらに、前記命令処理部が命令を処理する際に用いる記憶部との間のアクセス情報を前記履歴情報格納部に格納することを特徴とする請求項１記載のデバッグ支援装置。
【請求項４】
前記制御部の前記履歴情報格納部への格納を開始する条件を格納する条件格納部をさらに有し、
前記制御部は、前記条件格納部に格納された条件に基づいて前記履歴情報格納部への格納を開始することを特徴とする請求項１記載のデバッグ支援装置。
【請求項５】
前記制御部の前記履歴情報格納部に格納する情報を選別する条件を格納する選別条件格納部をさらに有し、
前記制御部は、前記選別条件格納部に格納された条件に一致する情報を前記履歴情報格納部に格納することを特徴とする請求項１記載のデバッグ支援装置。
【請求項６】
デバッグを支援するデバッグ支援方法において、
デバッグ支援装置が有する、
キュー構造をなす一時記憶手段が、デバッグ対象となる専用の命令を処理する命令処理手段に処理させる命令を一時記憶し、
制御手段が、前記一時記憶手段に記憶される情報を取得して履歴情報格納手段に格納する、
ことを特徴とするデバッグ支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデバッグ支援装置およびデバッグ支援方法に関し、特に、デバッグを支援するデバッグ支援装置およびデバッグ支援方法に関する。
【背景技術】
【０００２】
一般的なソフトウェアを開発する場合、まず、ソフトウェアのプロトタイプを作成する。
次に、作成されたプロトタイプのソフトウェアがシステム上で正しく機能するか否かのテストデバッグを行う。そして、デバッグをクリアしたソフトウェアについてパフォーマンスが正しく発揮できるか否かのテストを行い、結果に応じてチューニング（プログラム最適化）を行う。
【０００３】
近年、ソフトウェアの開発に要する工数が増加している。その中でも特に、デバッグ、チューニングにかかる工数の増加が問題となっている。
また、プログラム処理の高速化を実現するために、ハードウェアの構成としてＤＳＰ（Digital Signal Processor）やコプロセッサ（co-processor）やＡＳＩＣ（Application Specific Integrated Circuit）等を備えるアクセラレータ（accelerator）と、ＣＰＵ（Central Processing Unit）とを組み合わせたプロセッサシステムが近年使用されつつある。
【０００４】
プログラム開発者は、ＣＰＵのデバッグ情報のみを用いてデバッグ、チューニングを行うため、このようなプロセッサシステムではアクセラレータの動作を確認することができず、プログラムのデバッグ効率が非常に悪い。
【０００５】
このため、アクセラレータがコプロセッサで構成されているプロセッサシステムに対しては、コプロセッサ内のレジスタ情報をメインメモリ内に設けた領域に記録する技術が知られている（例えば、特許文献１参照）。これにより、コプロセッサの動作情報を取得し、コプロセッサのデバッグ情報として利用することができる。
【特許文献１】特開平０１−２９７７６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＡＳＩＣ等のハードウェア・アクセラレータは、プログラムやレジスタを持たないため、このようなプロセッサシステムに特許文献１に記載した方法を直接適用することができない。従って、ＡＳＩＣ等のハードウェア・アクセラレータとＣＰＵとを組み合わせたプロセッサシステム上でプログラムのデバッグを行う場合、アクセラレータのデバッグ情報を取得することが非常に困難であるという問題があった。
【０００７】
本発明はこのような点に鑑みてなされたものであり、デバッグ作業の効率化および工数の削減を図ることができるデバッグ支援装置およびデバッグ支援方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、デバッグを支援するデバッグ支援装置において、デバッグ対象となる専用の命令を処理する命令処理部に処理させる命令を一時記憶するキュー構造をなす一時記憶部と、前記一時記憶部に記憶される命令に関する情報を格納する履歴情報格納部と、前記一時記憶部に記憶される命令に関する情報を取得して前記履歴情報格納部に格納する制御部と、を有することを特徴とするデバッグ支援装置が提供される。
【０００９】
このようなデバッグ支援装置によれば、一時記憶部により、デバッグ対象となる専用の命令を処理する一時記憶部に処理させる命令が一時記憶される。また、制御部により、一時記憶部に記憶される命令に関する情報が履歴情報格納部に格納される。
【発明の効果】
【００１０】
開示のデバッグ支援装置によれば、命令処理部の動作に関する情報が履歴情報格納部に格納されるため、デバッガが、その情報を容易に取得することができる。従って、デバッグ作業の効率化および工数の削減を図ることができる。
【発明を実施するための最良の形態】
【００１１】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態のシステムについて説明し、その後、実施の形態をより具体的に説明する。
【００１２】
図１は、実施の形態のシステムの概要を示す図である。
図１に示すデバッグ対象となるシステム８は、命令処理部３と、処理命令格納部（一時記憶部）９と、ＣＰＵ４とデバッグ支援装置１とを有している。
【００１３】
デバッグ支援装置１は、デバッガ２のデバッグを支援する装置である。このデバッグ支援装置１は、履歴情報格納部５と、制御部６とを有している。
デバッガ２は、デバッグ用となる専用のプログラムをＣＰＵ４に転送する。
【００１４】
命令処理部３は、デバッガ２がＣＰＵ４に転送したデバッグ用のプログラムに基づいてＣＰＵ４が発行したデバッグ対象の命令を処理する。
その際、命令処理部３が処理中の場合、処理命令格納部９にて処理命令を一時的に保管し、命令処理部３の処理が終了後、処理命令を転送する。
【００１５】
履歴情報格納部５は、処理命令格納部９、および命令処理部３の動作に関する情報（動作履歴情報）を格納する。この動作履歴情報としては、特に限定されないが、例えば、処理命令格納部９が命令処理部３に命令を発行した時刻に関する情報およびその命令の内容や、命令処理部３が処理に要した各命令の時刻に関する情報や、命令処理部３と図示しないメモリ間とのデータアクセスの情報等が挙げられる。
【００１６】
制御部６は、処理命令格納部９、および命令処理部３の動作に関する情報を履歴情報格納部５に格納する。
また、制御部６は、デバッグ情報を命令処理格納部９から取得する。
【００１７】
このようにして履歴情報格納部５に格納された処理命令格納部９、および命令処理部３の動作に関する情報は、デバッガ２によって取得される。
このようなデバッグ支援装置１によれば、命令処理部３の動作に関する情報を処理命令格納部９の動作情報から取得し、格納するようにした。これにより、命令処理部３がプログラムやレジスタを実装することができないような構成であっても、命令処理部３がどのような処理を行っているのかをデバッガ２が容易に把握することができる。これにより、プログラム開発者は、その処理内容に応じてプログラムのデバッグ、チューニング等を容易に行うことができる。
【００１８】
以下、実施の形態をより具体的に説明する。
図２は、実施の形態のシステムの構成例を示す図である。
システム（デバッグ支援装置）１０は、ＣＰＵ１１と、アクセラレータ１２と、メインメモリ（記憶部）１３と、動作履歴レコーダ１４とを有している。
【００１９】
ＣＰＵ１１は、システム１０の全体を制御している。
ＣＰＵ１１とメインメモリ１３、アクセラレータ１２とメインメモリ１３、動作履歴レコーダ１４とメインメモリ１３は、それぞれバス１５を介して接続されている。
【００２０】
ＣＰＵ１１は、デバッガ（ＰＣ）２０からデバッグまたはチューニング用の条件データを受け取ると、デバッガ２０がアクセラレータ１２の処理履歴を把握できる設定情報を専用線を介して動作履歴レコーダ１４に設定する。
【００２１】
また、ＣＰＵ１１は、デバッガ２０に対しＣＰＵ１１の情報を送信する。
また、ＣＰＵ１１は、バス１５を介してアクセラレータ１２に処理させる命令（ＡＣＣ命令）をアクセラレータ１２に送る。
【００２２】
アクセラレータ１２は、ＡＣＣ命令メモリ（一時記憶部）１２１とＡＣＣ処理部（命令処理部）１２２とを有している。
ＡＣＣ命令メモリ１２１は、キュー構造をなしており、ＣＰＵ１１からバス１５を介して送られてきたＡＣＣ命令を順次蓄えていく。
【００２３】
ＡＣＣ処理部１２２は、ＡＣＣ命令メモリ１２１に格納されているＡＣＣ命令を順次処理する。具体的には、キュー１２１ａに格納されている命令を処理する。ＡＣＣ命令メモリ１２１は、ＡＣＣ処理部１２２によってＡＣＣ命令が処理される度に、キュー１２１ｂ〜１２１ｅに格納されているＡＣＣ命令を１つずつ繰り上げる。
【００２４】
メインメモリ１３は、動作履歴レコーダ１４が取得したＡＣＣ命令メモリ１２１の情報を保持する動作履歴テーブル（履歴情報格納部）１３１を有している。
動作履歴レコーダ１４は、専用線を介してアクセラレータ１２の動作をモニタリングすることにより取得したＡＣＣ命令メモリ１２１の情報を動作履歴テーブル１３１に書き込む。
【００２５】
ここで、取得する情報としては、例えばＡＣＣ命令がＡＣＣ処理部１２２によって処理されるときの時刻の情報や、ＡＣＣ命令メモリ１２１における各命令の動作履歴や、その命令を識別する情報や、キュー１２１ａ〜１２１ｅに格納される命令の量等が挙げられる。
【００２６】
なお、ＡＣＣ命令メモリ１２１における各命令の動作履歴としては、例えば、キュー１２１ａ〜１２１ｅでの命令の遷移する時刻等が挙げられる。
この動作履歴レコーダ１４は、レコーダ設定レジスタ（アドレス格納部）１４１と、レコーダコントローラ（制御部）１４２とを有している。
【００２７】
レコーダ設定レジスタ１４１は、取得した情報を動作履歴テーブル１３１に書き込む際の書き込み開始アドレスを指定する動作履歴テーブルアドレス格納部１４１ａを有している。
【００２８】
レコーダ設定レジスタ１４１の格納部の内容は専用の信号線を介してＣＰＵ１１から書き込まれる。
レコーダコントローラ１４２は、動作履歴テーブル１３１にＡＣＣ命令メモリ１２１の情報を書き込む動作履歴テーブルライタ１４２ａを有している。
【００２９】
動作履歴テーブルライタ１４２ａは、動作履歴テーブルアドレス格納部１４１ａを参照し、動作履歴テーブル１３１の書き込みアドレスを取得する。そして、取得した書き込みアドレスに、取得したＡＣＣ命令メモリ１２１の情報を書き込む。その後は、動作履歴テーブルアドレス格納部１４１ａから取得した書き込みアドレスを順次オフセットさせ、そのオフセットしたアドレスに、順次データを書き込んでいく。このオフセットの情報は、例えばレコーダ設定レジスタ１４１に設定される。
【００３０】
デバッガ２０は、モニタ２１を有している。デバッガ２０は、動作履歴テーブル１３１から取得した情報を編集した画面をモニタ２１に表示させる。
以上のような構成によって、本実施の形態の処理機能を実現することができる。
【００３１】
次に、システム１０の処理を説明する。
図３は、システムの処理を示すシーケンス図である。
なお、図３では、説明を分かりやすくするために、動作履歴テーブル１３１のブロックをメインメモリ１３とは別個に設けている。また、以下に示すステップ番号は、処理の対応関係を示すものである。
【００３２】
まず、デバッガ２０が、ＣＰＵ１１にデバッグ／チューニング用のプログラムを実装する。これによりＣＰＵ１１は、プログラムの実行を開始する（ステップＳ１）。
ＣＰＵ１１は、動作履歴レコーダ１４にレコーダ設定レジスタ１４１に条件情報の設定を行う（ステップＳ２）。
【００３３】
レコーダ設定レジスタ１４１の設定を受けた動作履歴レコーダ１４は、メインメモリ１３内に動作履歴テーブル１３１の領域を設定する（ステップＳ３）。
ＣＰＵ１１は、ＡＣＣ命令＃１、ＡＣＣ命令＃２、ＡＣＣ命令＃３をアクセラレータ１２に出力する。
【００３４】
本実施の形態では、まず、ＡＣＣ命令＃１が、ＡＣＣ命令メモリ１２１のキュー１２１ａに格納される（ステップＳ４）。このとき、動作履歴レコーダ１４が、ＡＣＣ命令＃１のＡＣＣ処理部１２２による処理が行われるタイミングおよびＡＣＣ命令＃１を識別する情報を取得する（ステップＳ５）。
【００３５】
なお、ＡＣＣ処理部１２２が、他のＡＣＣ命令の処理を行っているときに、ＡＣＣ命令＃１が発行されると、待ち合わせを行う（ステップＳ５ａ）。
動作履歴レコーダ１４は、取得した情報を動作履歴テーブル１３１に格納する（ステップＳ６）。
【００３６】
また、ＡＣＣ処理部１２２が、ＡＣＣ命令＃１の処理を行う。具体的には、ＡＣＣ処理部１２２は、キュー１２１ａに格納されているＡＣＣ命令＃１を取得する（ステップＳ７）。
【００３７】
ＡＣＣ処理部１２２は、メインメモリ１３を使用してＡＣＣ命令＃１の処理を行う（ステップＳ８）。
そして、ＡＣＣ処理部１２２は、処理が完了すると、処理完了通知をキュー１２１ａに送る（ステップＳ９）。
【００３８】
また、ＣＰＵ１１は、ＡＣＣ命令＃１が実行される前に、ＡＣＣ命令＃２をアクセラレータ１２に送る。アクセラレータ１２は、このＡＣＣ命令＃２を、キュー１２１ｂに格納する（ステップＳ１０）。そして、キュー１２１ａに格納されていたＡＣＣ命令＃１がＡＣＣ処理部１２２に送られると、キュー１２１ｂに格納されていたＡＣＣ命令＃２を、キュー１２１ａに移動する（ステップＳ１１）。
【００３９】
動作履歴レコーダ１４は、キュー１２１ａを参照し、ＡＣＣ命令＃２のＡＣＣ処理部１２２による処理が行われるタイミングおよびＡＣＣ命令＃２を識別する情報を取得する（ステップＳ１２）。動作履歴レコーダ１４は、取得した情報を動作履歴テーブル１３１に格納する（ステップＳ１３）。
【００４０】
キュー１２１ａは、ステップＳ９においてＡＣＣ処理部１２２から処理完了通知を受け取ると、ＡＣＣ処理部１２２は、キュー１２１ａに格納されているＡＣＣ命令＃２を取得する（ステップＳ１４）。
【００４１】
ＡＣＣ処理部１２２は、メインメモリ１３を使用してＡＣＣ命令＃２の処理を行う（ステップＳ１５）。
そして、ＡＣＣ処理部１２２は、処理が完了すると、処理完了通知をキュー１２１ａに送る（ステップＳ１６）。
【００４２】
また、ＣＰＵ１１は、ＡＣＣ命令＃２が実行される前に、ＡＣＣ命令＃３をアクセラレータ１２に送る。アクセラレータ１２は、このＡＣＣ命令＃３を、キュー１２１ｃに格納する（ステップＳ１７）。そして、キュー１２１ｂに格納されていたＡＣＣ命令＃２がキュー１２１ａに送られると、キュー１２１ｃに格納されていたＡＣＣ命令＃３を、キュー１２１ｂに移動する（ステップＳ１８）。そして、キュー１２１ｂに格納されていたＡＣＣ命令＃２がＡＣＣ処理部１２２に送られると、キュー１２１ｂに格納されていたＡＣＣ命令＃３を、キュー１２１ａに移動する（ステップＳ１９）。
【００４３】
動作履歴レコーダ１４は、キュー１２１ａを参照し、ＡＣＣ命令＃３のＡＣＣ処理部１２２による処理が行われるタイミングおよびＡＣＣ命令＃３を識別する情報を取得する（ステップＳ２０）。動作履歴レコーダ１４は、取得した情報を動作履歴テーブル１３１に格納する（ステップＳ２１）。
【００４４】
キュー１２１ａは、ステップＳ１６においてＡＣＣ処理部１２２から処理完了通知を受け取ると、ＡＣＣ処理部１２２は、キュー１２１ａに格納されているＡＣＣ命令＃３を取得する（ステップＳ２２）。
【００４５】
ＡＣＣ処理部１２２は、メインメモリ１３を使用してＡＣＣ命令＃３の処理を行う（ステップＳ２３）。
そして、ＡＣＣ処理部１２２は、処理が完了すると、処理完了通知をキュー１２１ａに送る（ステップＳ２４）。
【００４６】
その後、デバッガ２０は、デバッグ開始時に、動作履歴テーブル１３１に格納されている情報を取得する（ステップＳ２５）。
以上でシステム１０の処理の説明を終了する。
【００４７】
以上述べたように、本実施の形態のシステム１０によれば、システム１０の動作中に、ＣＰＵ１１からレコーダ設定レジスタ１４１に動作履歴テーブル１３１への書き込み開始アドレスを設定した。そして、ＡＣＣ命令メモリ１２１の情報をデバッグ・チューニング情報として動作履歴テーブル１３１内に格納するようにした。これにより、各命令のＡＣＣ処理部１２２での処理開始／終了時刻や、各命令のＡＣＣ処理部１２２での処理時間を容易に把握することができる。従って、プログラム開発者は、この情報を用いて容易にプログラムのデバッグ・チューニングを行うことができる。
【００４８】
次に、プログラム開発者が、ステップＳ２５にて取得した情報を用いてチューニングを行う例を説明する。
図４は、デバッガが取得した情報をモニタに表示する一例を示す図である。
【００４９】
図４中、命令Ａ、Ｂ、Ｃは、それぞれＣＰＵ１１がアクセラレータ１２に実行させる命令であり、処理Ｄは、命令Ａの処理結果に基づいてＣＰＵ１１が実行する処理であり、処理Ｅは、命令Ｂの処理結果に基づいてＣＰＵ１１が実行する処理であり、処理Ｆは、命令Ｃの処理結果に基づいてＣＰＵ１１が実行する処理である。
【００５０】
図４（ａ）は、デバッガ２０が、動作履歴テーブル１３１に格納されている情報を編集し、処理を時系列に沿って並べた画面を示している。
この画面には、ＣＰＵ１１が処理Ｄの処理を終了した後、処理Ｅの処理を開始する前に、処理Ｅの処理を待機していることが示されている。その理由として、アクセラレータ１２が、命令Ｂの処理を終了していないことが示されている。さらに、アクセラレータ１２が、命令Ｃの処理に要する時間が、命令Ｂの処理に要する時間よりも短いことが示されている。
【００５１】
このように、動作履歴レコーダ１４および動作履歴テーブル１３１を設けることにより、アクセラレータ１２の内部でどのような処理が行われているのかを容易に把握することができる。
【００５２】
従って、プログラム開発者は、図４（ａ）に示す情報に基づいて、全体の処理時間が短縮するようにプログラムのスケジューリングを容易に行うことができる。図４（ａ）に示す例では、命令Ｂを命令Ｃの後にアクセラレータ１２に読み込ませるようにＣＰＵ１１のアクセラレータ１２に対する命令発行の順序を入れ替えればよいことが容易に把握できる。これにより、図４（ｂ）に示すように、処理時間の短縮を図ることができる。
【００５３】
このように、動作履歴テーブル１３１に格納されている情報を活用することにより、チューニングの効率を向上させることができる。
なお、本実施の形態では、ＡＣＣ命令メモリ１２１がアクセラレータ１２の内部に設けられているものとして説明したが、ＡＣＣ命令メモリ１２１はアクセラレータ１２の外部に設けられていてもよい。
【００５４】
また、本実施の形態では、動作履歴テーブル１３１を、メインメモリ１３の内部に設けたが、動作履歴テーブル１３１を、メインメモリ１３の外部に設けるようにしてもよい。
さらに、本実施の形態では、ＣＰＵ１１が、レコーダ設定レジスタ１４１を設定したが、デバッガ２０（外部）から直接、レコーダ設定レジスタ１４１を設定するようにしてもよい。
【００５５】
＜第２の実施の形態＞
次に、第２の実施の形態のシステムについて説明する。
以下、第２の実施の形態のシステムについて、前述した第１の実施の形態のシステム１０との相違点を中心に説明し、同様の事項については、その説明を省略する。
【００５６】
図５は、第２の実施の形態のシステムを示すブロック図である。
図５に示す第２の実施の形態のシステム１０ａは、レコーダ設定レジスタ１４１およびレコーダコントローラ１４２の構成が第１の実施の形態のシステム１０と異なっている。
【００５７】
レコーダ設定レジスタ１４１は、動作履歴テーブル１３１に記録の開始条件（記録開始条件）および記録の終了条件（記録終了条件）を設定する条件格納部１４１ｂをさらに有している。この記録開始条件および記録終了条件としては特に限定されないが、例えば、アクセラレータ１２に発行される命令の内部に埋め込まれたトリガとなる情報を受け取ったときを条件としてもよい。また、ＡＣＣ命令メモリ１２１内のトラフィック状態を条件としてもよい。すなわち、例えば、キュー１２１ａ〜１２１ｅに一定以上命令が蓄えられたら記録を開始し、キュー１２１ａ〜１２１ｅに蓄えられた命令が一定以下になったら記録を終了するようにしてもよい。
【００５８】
また、記録を開始するカウント数および記録を終了するカウント数、並びに、カウンタとして採用する情報を条件格納部１４１ｂに予め設定しておき、カウンタとして採用する情報が、このカウント数に一致したことを条件としてもよい。すなわち、カウンタとして採用する情報が、このカウント数に一致したときに記録を開始、終了するようにしてもよい。なお、カウントとして採用する情報としては、例えばクロックやＡＣＣ処理部１２２での命令処理数等が挙げられる。
【００５９】
レコーダコントローラ１４２は、記録開始条件および記録終了条件を判定する条件判定部１４２ｂをさらに有している。
条件判定部１４２ｂは、ＡＣＣ命令メモリ１２１の情報を記録する際、条件格納部１４１ｂを参照する。そして、記録開始条件に一致すればＡＣＣ命令メモリ１２１の情報の記録を開始する。また、記録終了条件に一致すればＡＣＣ命令メモリ１２１の情報の記録を終了する。
【００６０】
次に、システム１０ａの処理を説明する。
図６は、第２の実施の形態のシステムの処理を示すフローチャートである。
まず、ＣＰＵ１１がプログラムの実行を開始し（ステップＳ３１）、動作履歴テーブルアドレス格納部１４１ａに格納するアドレス情報や、条件格納部１４１ｂに格納する記録開始条件および記録終了条件の情報を転送する（ステップＳ３２）。
【００６１】
動作履歴レコーダ１４は、ＣＰＵから、アドレス情報を動作履歴テーブルアドレス格納部１４１ａに、記録開始条件および記録終了条件を条件格納部１４１ｂに設定される（ステップＳ３３）。
【００６２】
その後、条件判定部１４２ｂは、条件格納部１４１ｂに格納されている記録開始条件に一致するか否かを判断する（ステップＳ３４）。
具体的には、記録開始条件として「アクセラレータ１２に発行される命令の内部に埋め込まれたトリガとなる情報を受け取ったとき」が設定されている場合、この情報を受け取ったか否かを判断する。また、記録開始条件として「ＡＣＣ命令メモリ１２１内のトラフィック状態」が設定されている場合、例えば、キュー１２１ｃに命令が蓄えられているか否かを判断する。
【００６３】
記録開始条件に一致していない場合（ステップＳ３４のＮｏ）、ステップＳ３４に移行し、ステップＳ３４の処理を再度行う。
一方、記録開始条件に一致する場合（ステップＳ３４のＹｅｓ）、ＡＣＣ命令メモリ１２１から取得した情報の記録を開始する。すなわち、ＡＣＣ命令メモリ１２１から取得した情報を動作履歴テーブル１３１に格納する（ステップＳ３５）。動作履歴テーブル１３１は、格納された情報を保持する。
【００６４】
その後、条件判定部１４２ｂは、ＡＣＣ命令メモリ１２１から取得した情報が、条件格納部１４１ｂに格納された記録終了条件に一致するか否かを判断する（ステップＳ３６）。
【００６５】
記録終了条件に一致していない場合（ステップＳ３６のＮｏ）、ステップＳ３５に移行し、ステップＳ３５の処理を再度行う。
一方、記録終了条件に一致する場合（ステップＳ３６のＹｅｓ）、記録を終了する。
【００６６】
デバッガ２０は、ブレークポイントにてＣＰＵ１１の処理を一時停止する（ステップＳ３７）。そして、動作履歴テーブル１３１に格納されている情報を参照する（ステップＳ３８）。
【００６７】
次に、デバッガ２０は、デバッグが終了したか否かを判断する（ステップＳ３９）。
デバッグが終了していない場合（ステップＳ３９のＮｏ）、ステップＳ３２に移行し、ステップＳ３２以降の処理を引き続き行う。
【００６８】
一方、デバッグが終了した場合（ステップＳ３９のＹｅｓ）、処理を終了する。
なお、ステップＳ３４にて記録を開始した後に、ステップＳ３６の判断処理を行うまでの時間は、特に限定されないが、例えば、ＣＰＵ１１のクロック数をカウントし、予め指定されたサイクル数の経過後に、ステップＳ３６の判断処理を行うようにしてもよい。また、ＣＰＵ１１が発行する命令の数に応じてステップＳ３６の判断処理を行うようにしてもよい。また、アクセラレータ１２のメインメモリ１３へのアクセス数に応じてステップＳ３６の判断処理を行うようにしてもよい。
【００６９】
この第２の実施の形態のシステム１０ａによれば、第１の実施の形態のシステム１０と同様の効果が得られる。
そして、第２の実施の形態のシステム１０ａによれば、アクセラレータ１２の動作情報を適切なタイミングで動作履歴テーブル１３１に格納することができる。従って、デバッガ２０が、この動作履歴テーブル１３１に格納された情報を参照することで、デバッグ効率をさらに、向上させることができる。また、動作履歴テーブル１３１に格納する情報量を減らすことができるため、動作履歴テーブル１３１の容量を削減することができる。
【００７０】
なお、本実施の形態では、条件判定部１４２ｂは、条件格納部１４１ｂに格納された情報に基づいて動作を開始または終了するようにした。しかし、これに限定されず、ＣＰＵ１１から動作履歴レコーダ１４に直接発行される開始コマンドおよび終了コマンドに基づいて動作を開始または終了するようにしてもよい。
【００７１】
＜第３の実施の形態＞
次に、第３の実施の形態のシステムについて説明する。
以下、第３の実施の形態のシステムについて、前述した第１の実施の形態のシステム１０との相違点を中心に説明し、同様の事項については、その説明を省略する。
【００７２】
図７は、第３の実施の形態のシステムを示すブロック図である。
図７に示す第３の実施の形態のシステム１０ｂは、レコーダ設定レジスタ１４１およびレコーダコントローラ１４２の構成が第１の実施の形態のシステム１０と異なっている。
【００７３】
レコーダ設定レジスタ１４１は、動作履歴テーブル１３１に格納する情報の種別を指定する情報を格納する記録情報種別格納部（選別条件格納部）１４１ｃをさらに有している。
【００７４】
この格納する情報の種別を指定する情報としては、例えば、ＡＣＣメモリの情報を指定する情報や、アクセラレータ１２とメインメモリ１３との間のアクセス情報を指定する情報等が挙げられる。
【００７５】
レコーダコントローラ１４２は、記録情報種別格納部１４１ｃに格納された情報に基づいて、動作履歴テーブルライタ１４２ａに書き込ませる情報を選別する記録情報選別部１４２ｃをさらに有している。
【００７６】
次に、システム１０ｂの処理を説明する。
図８は、第３の実施の形態のシステムの処理を示すシーケンス図である。
ステップＳ８ａ、Ｓ１５ａ、Ｓ２３ａ：アクセラレータ１２とメインメモリ１３との間のメモリアクセス情報を動作履歴レコーダ１４が取得する。
【００７７】
ステップＳ８ｂ、Ｓ１５ｂ、Ｓ２３ｂ：取得したメモリアクセス情報を履歴テーブルライタ１４２ａが動作履歴テーブル１３１に格納する。このとき、記録情報選別部１４２ｃが、記録情報種別格納部１４１ｃに格納された情報により、格納するデータを選別する。
【００７８】
この第３の実施の形態のシステム１０ｂによれば、第１の実施の形態のシステム１０と同様の効果が得られる。
そして、第３の実施の形態のシステム１０ｂによれば、記録する情報の種別を設定することにより、さらに、動作履歴テーブル１３１に格納する情報量を減らすことができるため、動作履歴テーブル１３１の容量を削減することができる。
【００７９】
図９は、第３の実施の形態のシステムにおいてデバッガが取得した情報をモニタに表示する一例を示す図である。
図９（ａ）は、ＣＰＵ１１が、ＡＣＣ処理部１２２による１回の処理でデータＨ〜Ｌが生成される命令Ｇをアクセラレータ１２に発行し、生成されたデータＨ〜Ｌを利用して処理Ｍを実行する場合を示している。
【００８０】
動作履歴テーブル１３１に格納されている情報を参照することにより、図９（ａ）に示すように、ＡＣＣ処理部１２２がデータＨ〜Ｌを生成するタイミングを容易に把握することができる。
【００８１】
従って、プログラム開発者は、この情報に基づいて、処理時間が短縮するようにプログラムのチューニングを容易に行うことができる。図９（ａ）に示す例では、ＡＣＣ処理部１２２によるデータＨ生成のタイミングで、ＣＰＵ１１に生成されたデータＨを使用する処理Ｎを実行させる。データＩ生成のタイミングで、ＣＰＵ１１に生成されたデータＩを使用する処理Ｏを実行させる。データＪ生成のタイミングで、ＣＰＵ１１に生成されたデータＪを使用する処理Ｐを実行させる。データＫ生成のタイミングで、ＣＰＵ１１に生成されたデータＫを使用する処理Ｑを実行させる。データＬ生成のタイミングで、ＣＰＵ１１に生成されたデータＬを使用する処理Ｒを実行させる。これにより、図９（ｂ）に示すように、処理時間の短縮を図ることができる。
【００８２】
以上、本発明のデバッグ支援装置およびデバッグ支援方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【００８３】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
また、前述した各実施の形態では、システム１０、１０ａ、１０ｂがアクセラレータ（ハードウェアアクセラレータ）１２を備える構成とし、動作履歴レコーダ１４が、アクセラレータ１２の情報を取得するようにしたが、情報を取得する対象のハードウェアはこれに限定されず、例えば、コプロセッサやＤＳＰ等を備えている場合は、動作履歴レコーダ１４が、これらの情報を取得するようにしてもよい。
【００８４】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、システム１０、１０ａ、１０ｂが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【００８５】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００８６】
デバッグ支援プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００８７】
以上の第１〜第３の実施の形態に関し、更に以下の付記を開示する。
（付記１）  デバッグを支援するデバッグ支援装置において、
デバッグ対象となる専用の命令を処理する命令処理部に処理させる命令を一時記憶するキュー構造をなす一時記憶部と、
前記一時記憶部に記憶される命令に関する情報を格納する履歴情報格納部と、
前記一時記憶部に記憶される命令に関する情報を取得して前記履歴情報格納部に格納する制御部と、
を有することを特徴とするデバッグ支援装置。
【００８８】
（付記２）  前記履歴情報格納部に情報を格納する際の書き込みアドレスを格納するアドレス格納部をさらに有し、
前記制御部は、前記アドレス格納部に格納されているアドレスに基づいて、前記一時記憶部に記憶される命令に関する情報を前記履歴情報格納部に格納することを特徴とする付記１記載のデバッグ支援装置。
【００８９】
（付記３）  前記制御部は、さらに、前記命令処理部が命令を処理する際に用いる記憶部との間のアクセス情報を前記履歴情報格納部に格納することを特徴とする付記１記載のデバッグ支援装置。
【００９０】
（付記４）  前記制御部の前記履歴情報格納部への格納を開始する条件を格納する条件格納部をさらに有し、
前記制御部は、前記条件格納部に格納された条件に基づいて前記履歴情報格納部への格納を開始することを特徴とする付記１記載のデバッグ支援装置。
【００９１】
（付記５）  前記条件格納部は、前記制御部の前記履歴情報格納部への格納を終了する条件を格納しており、
前記制御部は、前記条件格納部に格納された前記履歴情報格納部への格納を終了する条件に基づいて前記履歴情報格納部への格納を終了することを特徴とする付記４記載のデバッグ支援装置。
【００９２】
（付記６）  前記制御部の前記履歴情報格納部に格納する情報を選別する条件を格納する選別条件格納部をさらに有し、
前記制御部は、前記選別条件格納部に格納された条件に一致する情報を前記履歴情報格納部に格納することを特徴とする付記１記載のデバッグ支援装置。
【００９３】
（付記７）  前記一時記憶部に記憶される命令に関する情報は、前記命令処理部が前記命令を処理するときの時刻の情報であることを特徴とする付記１記載のデバッグ支援装置。
【００９４】
（付記８）  前記一時記憶部に記憶される命令に関する情報は、キュー内を前記命令が移動する時刻の情報であることを特徴とする付記１記載のデバッグ支援装置。
（付記９）  前記命令処理部をさらに有することを特徴とする付記１記載のデバッグ支援装置。
【００９５】
（付記１０）  前記記憶部をさらに有することを特徴とする付記３記載のデバッグ支援装置。
（付記１１）  前記履歴情報格納部は、前記記憶部の一部の領域で構成されていることを特徴とする付記２記載のデバッグ支援装置。
【００９６】
（付記１２）  デバッグを支援するデバッグ支援方法において、
デバッグ支援装置が有する、
キュー構造をなす一時記憶手段が、デバッグ対象となる専用の命令を処理する命令処理手段に処理させる命令を一時記憶し、
制御手段が、前記一時記憶手段に記憶される情報を取得して履歴情報格納手段に格納する、
ことを特徴とするデバッグ支援方法。
【００９７】
（付記１３）  デバッグを支援するデバッグ支援プログラムにおいて、
コンピュータを、
デバッグ対象となる専用の命令を処理する命令処理手段に処理させる命令を一時記憶するキュー構造をなす一時記憶部手段、
前記一時記憶手段に記憶される命令に関する情報を格納する履歴情報格納手段、
前記一時記憶手段に記憶される命令に関する情報を取得して前記履歴情報格納手段に格納する制御手段、
として機能させることを特徴とするデバッグ支援プログラム。
【図面の簡単な説明】
【００９８】
【図１】実施の形態のシステムの概要を示す図である。
【図２】実施の形態のシステムの構成例を示す図である。
【図３】システムの処理を示すシーケンス図である。
【図４】デバッガが取得した情報をモニタに表示する一例を示す図である。
【図５】第２の実施の形態のシステムを示すブロック図である。
【図６】第２の実施の形態のシステムの処理を示すフローチャートである。
【図７】第３の実施の形態のシステムを示すブロック図である。
【図８】第３の実施の形態のシステムの処理を示すシーケンス図である。
【図９】第３の実施の形態のシステムにおいてデバッガが取得した情報をモニタに表示する一例を示す図である。
【符号の説明】
【００９９】
１  デバッグ支援装置
２、２０  デバッガ
３  命令処理部
４、１１  ＣＰＵ
５  履歴情報格納部
６  制御部
８、１０、１０ａ、１０ｂ  システム
９  処理命令格納部
１２  アクセラレータ
１３  メインメモリ
１４  動作履歴レコーダ
１５  バス
２１  モニタ
１２１ａ〜１２１ｅ  キュー
１２１  ＡＣＣ命令メモリ
１２２  ＡＣＣ処理部
１３１  動作履歴テーブル
１４１  レコーダ設定レジスタ
１４１ａ  動作履歴テーブルアドレス格納部
１４１ｂ  条件格納部
１４１ｃ  記録情報種別格納部
１４２  レコーダコントローラ
１４２ａ  動作履歴テーブルライタ
１４２ｂ  条件判定部
１４２ｃ  記録情報選別部
【図１】
2010122860.tif 000003
【図２】
2010122860.tif 000004
【図３】
2010122860.tif 000005
【図４】
2010122860.tif 000006
【図５】
2010122860.tif 000007
【図６】
2010122860.tif 000008
【図７】
2010122860.tif 000009
【図８】
2010122860.tif 000010
【図９】
2010122860.tif 000011