(57)【要約】【課題】ロジックアナライザを用いずに同時に複数のプログラムモジュールの実行時間及びそのコール回数を測定する。【解決手段】測定したいプログラムモジュールが実行されると、時間計測カウンタ３０７がカウントを始め、同時に、コール回数カウンタ３０８のカウントを１つ増加する。そして、その後、この動作を繰り返し、測定したいプログラムモジュールの実行が終了すると、時間計測カウンタ３０７が停止する。時間計測カウンタ３０７及びコール回数カウンタ３０８の値は、デバッグ用コンピュータ４００によりモニタされる。【選択図】        図２
2004252572.tif 000002
【特許請求の範囲】
【請求項１】
画像データを解析するためのプログラムのプログラムモジュールの実行開始及び実行終了を示すデータを格納した第１格納手段と、
実行時間を計測したいプログラムモジュールが実行開始されたか否か及び実行終了したか否かを前記第１格納手段のデータに基づき判定する判定手段と、
前記判定手段により判定された当該プログラムモジュールの実行開始時点から実行終了時点までの実行時間を計時する第１ないし第Ｎ（≧２）計時手段と、
該第１ないし第Ｎ計時手段からの実行時間のデータを並行して格納する第２格納手段と
を有することを特徴とする記録装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムモジュールの実行時間及びコール回数を記録する記録装置に関するものである。
【０００２】
【従来の技術】
特許文献１のように、組み込み型のＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）において、ハードウェアやソフトウェアのデバッグにＩＣＥ（Ｉｎ−Ｃｉｒｃｕｉｔ  Ｅｍｕｌａｔｏｒ）が広く使用されている。
【０００３】
しかし、近年のＣＰＵの高速化に伴って、かってページプリンタの画像形成に関係するプログラムＲＯＭのシステム最適化において主流であったＩＣＥは、提供されなくなってしまった。
【０００４】
システム最適化を行うためには、プログラムＲＯＭ内の様々なプログラムモジュールのうち、実行するのに時間のかかるモジュールを見つけ出し最適化を行う必要があるから、各々のプログラムモジュールの実行時間及びそのプログラムモジュールのコール回数を測定する必要がある。
【０００５】
インサーキットエミュレーションが提供されなくなってしまったため、現在ではロジックアナライザを用いて特定のプログラムモジュールの実行時間を測定して、パフォーマンスを解析しシステムを最適化する他なかった。
【０００６】
【特許文献１】
特開２００２−３５１６９６号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、測定したいプログラムモジュールの実行時間を測定するのに、空いているＩ／Ｏポートにデータを書き込み、基板上の測定したいピンにロジックアナライザのプローブを直接当てて測定しなければならなく、物理的に非常に煩雑な作業が伴っていた。
【０００８】
また、ロジックアナライザでは広いレンジで信号を測定することができず、なおかつ１つの信号にしかトリガーをかけることができないので、１回の作業では、事実上１つのプログラムモジュールの実行時間しか測定することができないから、１つのプログラムモジュールの実行時間を測定する度にプログラムＲＯＭを作り直して、そしてまた計測するといった煩雑な作業を繰り返さなければならなかった。
【０００９】
さらに、プログラムモジュールのコール回数も測定することができないという問題があった。
【００１０】
以上のことにより、従来の手法ではパフォーマンス解析の効率は極めて低いものであった。
【００１１】
そこで、本発明は、ロジックアナライザを用いずに、同時に複数のプログラムモジュールの実行時間及びそのコール回数を測定することができる記録装置を提供することを目的とする。
【００１２】
【課題を解決するための手段】
請求項１の発明は、画像データを解析するためのプログラムのプログラムモジュールの実行開始及び実行終了を示すデータを格納した第１格納手段と、実行時間を計測したいプログラムモジュールが実行開始されたか否か及び実行終了したか否かを前記第１格納手段のデータに基づき判定する判定手段と、前記判定手段により判定された当該プログラムモジュールの実行開始時点から実行終了時点までの実行時間を計時する第１ないし第Ｎ（≧２）計時手段と、該第１ないし第Ｎ計時手段からの実行時間のデータを並行して格納する第２格納手段とを有することを特徴とする。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【００１４】
図１は本発明の一実施の形態を示す。図１において、２００はプリンタであって、インタフェース２０１と、ＣＰＵ２０２と、ＡＳＩＣ２０３と、ＲＡＭ２０４と、プリンタエンジン２０５と、ＲＯＭ２０８と、拡張インタフェース２０９とが、システムバスを介して相互に接続してある。
【００１５】
インタフェース２０１はホストコンピュータ１００に接続してある。ＲＯＭ２０８には、制御プログラムと、プリンタエンジン２０５へ転送されるビットマップ画像を生成するための画像プログラム等が記憶してあり、また、出力画像を生成する際に使用するフォントデータ（スケーラブルフオントデータ又はドットフォントデータ）等も記憶してある。ＣＰＵ２０２はＲＯＭ２０８の制御プログラムに従って各部とのアクセスを総括的に制御し、プリンタエンジン２０５に出力情報としての画像信号を出力するものである。
【００１６】
記録装置３００は、拡張インタフェース２０９に接続してあり、プログラムＲＯＭ２０６に格納されているプログラムモジュールの実行時間及びコール回数を測定するものである。また、記録装置３００においては、レジスタは物理的には記録装置３００内に存在しているが、Ｉ／Ｏアドレスはプリンタ上のＩ／Ｏ空間にマッピングされており、このＩ／Ｏポートはプリンタ２００上のプログラムＲＯＭ２０６によって制御することができる。デバッグ用コンピュータ４００は記録装置３００のデバッグを行うものである。
【００１７】
図２は図１の記録装置３００の構成を示す。図２において、２０９、４００は図１と同一部分を示す。記録装置３００は、ＣＰＵ３０１と、コントローラ３０２と、ＲＡＭ３０４と、ＲＯＭ３０５と、カウンタ対３０６、３０９、３１２とが、システムバスを介して相互に接続してある。
【００１８】
コントローラ３０２は、カウンタ対３０６、３０９、３１２の動作を制御し、拡張インタフェース３１８を介して拡張インタフェース２０９に接続してある。ＲＯＭ３０５は制御プログラムが格納してある。ＣＰＵ３０１はプログラムモジュールの実行時間を測定するとともに、コール回数をカウントする一連の制御を行うものである。また、ＣＰＵ３０１はＲＯＭ３０５の制御プログラムに従って記録装置３００の各部を制御するとともに、シリアルインタフェース３１６を介してデバッグ用コンピュータ４００と双方向通信するものである。ＲＡＭ３０４はＣＰＵ３０１の作業領域である。
【００１９】
カウンタ対３０６は、プログラムＲＯＭ２０６（図１）に格納されているプログラムモジュールの実行時間を計測する時間計測カウンタ３０７と、コール回数をカウントするコール回数カウンタ３０８との対である。カウンタ対３０９は、プログラムＲＯＭ２０６（図１）に格納されているプログラムモジュールの実行時間を計測する時間計測カウンタ３１０と、コール回数をカウントするコール回数カウンタ３１１との対である。カウンタ対３１２は、プログラムＲＯＭ２０６（図１）に格納されているプログラムモジュールの実行時間を計測する時間計測カウンタ３１３と、コール回数をカウントするコール回数カウンタ３１４との対である。ＳＥＬ３１５は、セレクタであり、デバッグ用コンピュータ４００から選択されたカウンタの値を読み出すことができる。
【００２０】
図３は、プログラムＲＯＭ２０６に格納されている１つのプログラムモジュールを１回だけ測定する手順を示すフローチャートである。まず、測定したいプログラムモジュールの最初で前述したＩ／Ｏアドレスの所定のアドレスに１をライトし、そして測定したいプログラムモジュールの最後で同じＩ／Ｏアドレスに０をライトするように、プログラムＲＯＭ２０６にプログラムする。ここで、１はカウンタイネーブル、０はカウンタディスエーブルをそれぞれ表し、時間計測カウンタ及びコール回数カウンタの指定も行う。このプログラムは、１つのプログラムモジュールに対してだけでなく、最大でカウンタ対３０６、３０９、３１２の数だけ施すことができる。
【００２１】
そうした上で、ホストコンピュータ１００からプリンタ２００に出力したいデータを流す。インタフェース２０１を介して送られてきたコードデータは、ＣＰＵ２０２によって中間コードへ変換される。その後、得られた中間コードに従って画像形成したデータを、バンド処理を行ってビットマップ展開し、プリンタエンジン２０５に送る。
【００２２】
こうした一連の流れの中で、Ｓ１で、測定したいプログラムモジュールが実行されたとする。ここで例えば、このプログラムモジュールの時間及びコール回数を測定するために、プログラムモジュールの開始でカウンタ対３０６の制御に割り当てられたＩ／Ｏアドレスに１をライトし、プログラムモジュールの終了で０をライトするようにしたとする。そうすると、Ｓ２で、所定のＩ／Ｏアドレスに１がライトされ、時間計測カウンタ３０７がイネーブルになる。一方、記録装置３００では、選択されたカウンタ対３０６がイネーブルになると、時間計測カウンタ３０７がカウントを始め、それと同時に、コール回数カウンタ３０８のカウントを１つ増加する。
【００２３】
その後、デバッグ用コンピュータ４００からシリアルインタフェース３１６を介してカウンタストップ命令を送らなければ、そのままカウントアップを継続する。一方、Ｓ８において、ストップ命令を行うと、カウンタの値はその時の値のままストップされ、ストップを解除した時に、その値から再びカウントアップが始まる。
【００２４】
そして、その後、Ｓ３で、測定したいプログラムモジュールの実行が終了したとする。そうすると、Ｓ４で、所定のＩ／Ｏアドレスに０がライトされ、時間計測カウンタ３０７がディスエーブルになる。
【００２５】
Ｓ１０で、カウンタ対３０６がディスエーブルであると判断されれば、Ｓ１１において、時間計測カウンタ３０７は停止する。そして、デバッグ用コンピュータ４００からシリアルインタフェース３１６を介して、拡張インタフェースエリア内の所定のアドレスにアクセスし、時間計測カウンタ３０７及びコール回数カウンタ３０８にリード命令を送れば、デバッグ用コンピュータ４００上でそれぞれのカウンタの値をモニタすることが可能になる。
【００２６】
その後、カウンタの値をクリアしたければ、同様に、デバッグ用コンピュータ４００から拡張インタフェースエリア内の所定のアドレスにアクセスし、所望のカウンタに対してクリア命令を送れば、そのカウンタの値をクリアすることができる。
【００２７】
本実施の形態では、１つのプログラムモジュールが一度しか実行されなかった場合を例として説明したが、実際にはこうした一連の動作が連続して発生し、また同時にカウンタ対３０９、３１２等を並行して制御することができる。
【００２８】
次に、２つのカウンタを並行して動作させる例を、図４のタイミングチャートを参照して説明する。まず、ｔ１で、計測したいプログラムモジュール１が実行され、計測時間カウンタ３０７がイネーブルになる。すると、時間計測カウンタ３０７はカウントを開始し、同時にコール回数カウンタ３０８が１回になる。その後、ｔ２で、今度は別の計測したいプログラムモジュール２が実行され、計測時間カウンタ３１０がイネーブルになる。すると、今度は時間計測カウンタ３１０もカウントを開始し、同時にコール回数カウンタ３１１が１回となる。
【００２９】
その後、ｔ３で、プログラムモジュールの実行が終了すると、計測時間カウンタ３１０がディスエーブルとなる。時間計測カウンタ３１０は、ディスエーブルになった瞬間にカウントを停止し、そのカウント値を保持する。この間、時間計測カウンタ３０７及びコール回数カウンタ３０８には何の影響も与えない。
【００３０】
そして、ｔ４で、再びプログラムモジュール２が実行される。すると、先ほどと同様に計測時間カウンタ３１０がイネーブルになり、先ほどの値から再びカウントが開始される。
【００３１】
同時に、コール回数カウンタ３１１は１つカウントアップされて２回となる。その後、ｔ５で、再びプログラムモジュール２の実行が終了し、時間計測カウンタ３１０がディスエーブルとなる。すると、再びカウントを開始していた時間計測カウンタ３１０は、カウントを停止し、その値を保持する。
【００３２】
それから、プログラムモジュール１の実行が終了し、時間計測カウンタ３０７がディスエーブルとなる。すると、時間計測カウンタ３０７はカウントを停止し、その値を保持する。
【００３３】
このように、２つのプログラムモジュールの実行時間及びコール回数の測定を２つ同時に並行して行うことができる。そして、測定したいプログラムモジュールの数が増えてもカウンタの数が足りていれば、同様に処理できることは当然である。
【００３４】
以下に本発明の実施態様の例を列挙する。
【００３５】
〔実施態様１〕  画像データを解析するためのプログラムのプログラムモジュールの実行開始及び実行終了を示すデータを格納した第１格納手段と、
実行時間を計測したいプログラムモジュールが実行開始されたか否か及び実行終了したか否かを前記第１格納手段のデータに基づき判定する判定手段と、
前記判定手段により判定された当該プログラムモジュールの実行開始時点から実行終了時点までの実行時間を計時する第１ないし第Ｎ（≧２）計時手段と、
該第１ないし第Ｎ計時手段からの実行時間のデータを並行して格納する第２格納手段と
を有することを特徴とする記録装置。
【００３６】
〔実施態様２〕  実施態様１において、前記画像データを解析するためのプログラムは、ファームウェアであることを特徴とする記録装置。
【００３７】
〔実施態様３〕  実施態様１において、複数のプログラムモジュールの実行時間のデータと、プログラムモジュールのコール回数のデータを前記第２格納手段から読み出す読出手段を備えたことを特徴とする記録装置。
【００３８】
〔実施態様４〕  実施態様１において、前記第２格納手段により格納されている、複数のプログラムモジュールの実行時間のデータと、プログラムモジュールのコール回数のデータとを、クリア及びストップさせるクリア・ストップ手段を備えたことを特徴とする記録装置。
【００３９】
【発明の効果】
以上説明したように、本発明によれば、上記のように構成したので、ロジックアナライザを用いずに、同時に複数のプログラムモジュールの実行時間及びそのコール回数を測定することができ、システムの最適化効率がより向上し、デバッグ環境の向上が実現できる。
【図面の簡単な説明】
【図１】本発明の一実施の形態を示すブロック図である。
【図２】図１の記録装置３００の構成を示すブロック図である。
【図３】１つのプログラムモジュールを１回だけ測定する処理手順の一例を示すフローチャートである。
【図４】並行して動作させた２つのカウンタのタイミングの一例を示すタイミングチャートである。
【符号の説明】
２００  プリンタ
２０１  インタフェース
２０２，３０１  ＣＰＵ
２０４，３０４  ＲＡＭ
２０５  プリンタエンジン
２０８，３０５  ＲＯＭ
２０９  拡張インタフェース
３００  記録装置
３０６，３０９，３１２  カウンタ対
３０７，３１０，３１３  時間計測カウンタ
３０８，３１１，３１４  コール回数カウンタ
４００  デバッグ用コンピュータ
【図１】
2004252572.tif 000003
【図２】
2004252572.tif 000004
【図３】
2004252572.tif 000005
【図４】
2004252572.tif 000006