(57)【要約】      （修正有）【課題】シミュレーション計算時間の増加を抑制するシミュレーション装置を提供する。【解決手段】シミュレーション装置は、複数の制御プログラムからなるファームウエアを格納するプログラムメモリと、ファームウエアの制御対象であるターゲット装置の実ＣＰＵを模擬してファームウエアの動作のシミュレートするＩＳＳ１１０と、ＩＳＳ１１０によってシミュレーションを行った際のシミュレーションの開始から終了までの命令サイクル数を制御プログラム単位で算出する算出処理１１３と、実ＣＰＵによってターゲット装置にファームウエアを実行させた際の命令サイクル数を制御プログラム単位で求める係数部と、算出結果と計数結果を用いて制御プログラムごとに命令サイクル数の補正データを求める補正データ算出部と、補正データを用いて命令サイクル数を制御プログラム単位で補正する補正処理１１４を備える。【選択図】図８
2019008413.tif 000002
【特許請求の範囲】
【請求項１】
命令語を含む複数の制御プログラムからなるファームウエアを格納するプログラムメモリと、
前記ファームウエアの制御対象であるターゲット装置の中央演算装置を模擬して命令語単位で前記ファームウエアの動作のシミュレーションを行うシミュレート手段と、
前記シミュレート手段によって前記シミュレーションを行った際のシミュレーションの開始から終了までの命令サイクル数を制御プログラム単位で算出する命令サイクル数算出手段と、
前記中央演算装置によって前記ターゲット装置に前記ファームウエアを実行させた際の命令サイクル数を前記制御プログラム単位で求める計数手段と、
前記命令サイクル数算出手段の算出結果と前記計数手段の計数結果を用いて制御プログラムごとに命令サイクル数の補正データを求める補正データ算出手段と、
前記補正データ算出手段によって算出された補正データを用いて前記サイクル数算出手段で算出された命令サイクル数を制御プログラム単位で補正する補正手段と、
を備えることを特徴とするシミュレーション装置。
【請求項２】
前記制御プログラムは、状況に応じた計算を行う機能を有する計算プログラム、状況に応じた判断を行う機能を有する判断プログラム、または他の装置と通信を行う機能を有する通信プログラムを含むシステム内の機能別に分かれたモジュールを制御することを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
前記制御プログラムは、管理番号によって管理されることを特徴とする請求項１又は２記載のシミュレーション装置。
【請求項４】
前記制御プログラムは、リアルタイムオペレーティングシステムにより実行を管理されるタスクに対応するプログラムであることを特徴とする請求項１乃至３のいずれか１項に記載のシミュレーション装置。
【請求項５】
前記ターゲット装置は、画像形成装置であり、
前記タスクは、画像形成処理を実行するためのタスクであることを特徴とする請求項４記載のシミュレーション装置。
【請求項６】
前記補正データは、前記計数手段の計数結果と前記算出手段の算出結果の比率、前記計数手段の計数結果と前記算出手段の算出結果との差分、又は前記比率と前記差分の組み合わせとして求められること特徴とする請求項１乃至５のいずれか１項に記載のシミュレーション装置。
【請求項７】
前記シミュレート手段は、前記ファームウエアを前記シミュレーション装置で実行させるためのソフトウエアであることを特徴とする請求項１乃至６のいずれか１項に記載のシミュレーション装置。
【請求項８】
システムメモリを備え、
前記シミュレート手段（ＩＳＳ）は、前記システムメモリに格納されていることを特徴とする請求項１乃至７のいずれか１項に記載のシミュレーション装置。
【請求項９】
シミュレーションの開始と終了を判断する判断手段を備え、
前記判断手段は、制御プログラムごとの開始及び終了を判断することを特徴とする請求項１乃至８のいずれか１項に記載のシミュレーション装置。
【請求項１０】
前記命令サイクル数算出手段は、前記判断手段の判断結果を用いて前記命令サイクル数を算出することを特徴とする請求項９記載のシミュレーション装置。
【請求項１１】
計算結果を格納する計算結果メモリを備え、
前記命令サイクル数算出手段で算出された命令サイクル数は、前記計算結果メモリに格納されることを特徴とする請求項１乃至１０のいずれか１項に記載のシミュレーション装置。
【請求項１２】
情報を表示するための表示部を有し、
前記補正データは、単独で、又は管理番号と共に、前記表示部に表示されることを特徴とする請求項１乃至１１のいずれか１項に記載のシミュレーション装置。
【請求項１３】
前記制御プログラムは、リアルタイムオペレーティングシステムにより実行を管理される関数又は機能モジュールに対応するプログラムであることを特徴とする請求項１乃至３のいずれか１項に記載のシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システムで使用する制御プログラムのシミュレーションを行うシミュレーション装置に係り、特に、命令サイクル数を補正することができるシミュレーション装置に関する。
【背景技術】
【０００２】
組み込み機器は、組み込み機器用のソフトウエア（以下、「ファームウエア」という。）をＣＰＵ（Central Processing Unit）で実行することによってターゲット機器を制御している。ファームウエアの開発時には、ＣＰＵを用いて当該ファームウエアの動作を検証する必要がある。ＣＰＵを用いることでＣＰＵの語長やエンディアンの誤りを検証することや、割込み処理などの挙動を検証することができる。しかし、ＣＰＵを搭載した装置（例えば、試作機）は、製造コストが高く、納入期間が長い。さらに、挙動を検証するための専用装置（例えば、Ｉｎ−ＣｉｒｃｕｉｔＥｍｕｌａｔｏｒやロジックアナライザ、オシロスコープなど）が必要になるという課題があった。
【０００３】
一方、ファームウエアのロジックを確認するために、仮想環境上で一部の制御、例えば、画像形成装置における紙搬送に関する制御の検証に絞った動作検証が行われていた。しかし、ロジックのみの検証でＣＰＵの挙動の検証ができないという課題があった。このため、ＣＰＵもしくはＣＰＵを搭載した専用の装置を用いることなく、汎用的なシミュレーション装置である、例えば、パーソナルコンピュータ上で実ＣＰＵの挙動を検証できる方法が求められていた。
【０００４】
そこで開発されたのが、命令セット・シミュレータ（Instruction Set Simulator：以下、「ＩＳＳ」という。）である。ＩＳＳは、汎用的なシミュレーション装置のＣＰＵ（装置用ＣＰＵ）で実行される。ＩＳＳは、組み込み機器の実ＣＰＵで実行可能なファームウエアの命令語を読み込んで命令語単位で順次実行をすることができるソフトウエアである。また、ＩＳＳは、命令の実行に必要なサイクル数（以下、「命令サイクル数」という。）を計算することもできる。命令サイクル数とは、ＣＰＵの命令の実行に必要なクロック数である。
【０００５】
しかし、ＩＳＳは、命令サイクル数の計算に関して同じ命令語の処理であっても実際の組み込み機器に搭載するＣＰＵの処理時間よりも多くの時間を要する。そのため、ＩＳＳで忠実に命令サイクル数をシミュレーションするには、シミュレーションする対象ファームウエアの規模によっては、シミュレーションに要する時間（シミュレーション計算時間）が非常に長くなることがあった。このような課題を解消するために一部のＩＳＳでは、特定の命令語の命令サイクル数を固定値の命令サイクル数に置き換えることでシミュレーション計算時間の短縮が図られていた。
【０００６】
しかし、上記従来技術は、特定の命令サイクル数を単純に固定値の命令サイクル数に置き換えるものであったために、命令サイクル数の精度に関しては、命令サイクル数を置き換えない場合のＩＳＳのシミュレーションよりも劣化する場合があった。
【０００７】
このため、シミュレーション装置の装置用ＣＰＵが実行するシミュレーション計算時間の増加を抑えつつ、実際の組み込み機器に搭載するＣＰＵ（以下、「実ＣＰＵ」という。）に近い命令サイクル数を計算することができる技術が求められていた。
【０００８】
そこで、特許文献１記載の技術が提案された。すなわち、特許文献１記載の技術は、予め実ＣＰＵを用いてファームウエアの命令語の実行処理時間とＩ／Ｏ（Input／Output）の入出力処理時間を計測してデータベースに記憶させる。そして、その後、装置用ＣＰＵで命令語の実行もしくはＩ／Ｏがあった場合に、データベースから該当する命令語の実行処理時間もしくはＩ／Ｏの入出力処理時間を取得し、取得した処理時間を現実の処理時間として加算するものである。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−２１５９４３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１記載の技術は、実ＣＰＵの計測値から作成したデータベースの命令サイクル数を用いて、ファームウエアの命令語単位で補正を行うので、シミュレーション時に、実ＣＰＵを用いた場合に近い命令サイクル数が得られる。
【００１１】
しかしながら、ファームウエアが大規模になり、または長時間分のシミュレーションを実行する必要がある場合、実行される命令語が増加し、命令サイクル数を補正する回数が多くなる。そのため、シミュレーション計算時間が長くなるという課題があり、現実的な時間内でのシミュレーションが困難になることがあった。
【００１２】
本発明は、ファームウエアが大規模になるか又は長時間分のシミュレーションを実行する場合であっても、シミュレーション計算時間の増加を抑制することができるシミュレーション装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、請求項１記載のシミュレーション装置は、命令語を含む複数の制御プログラムからなるファームウエアを格納するプログラムメモリと、前記ファームウエアの制御対象であるターゲット装置の中央演算装置を模擬して命令語単位で前記ファームウエアの動作のシミュレーションを行うシミュレート手段と、前記シミュレート手段によって前記シミュレーションを行った際のシミュレーションの開始から終了までの命令サイクル数を制御プログラム単位で算出する命令サイクル数算出手段と、前記中央演算装置によって前記ターゲット装置に前記ファームウエアを実行させた際の命令サイクル数を制御プログラム単位で求める計数手段と、前記命令サイクル数算出手段の算出結果と前記計数手段の計数結果を用いて制御プログラムごとに命令サイクル数の補正データを求める補正データ算出手段と、前記補正データ算出手段によって算出された補正データを用いて前記サイクル数算出手段で算出された命令サイクル数を制御プログラム単位で補正する補正手段と、を備えることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、従来技術に比べて、シミュレーション実行時間の増加を抑制しつつ、実際のＣＰＵで実行した場合の命令サイクル数に近い命令サイクル数を求めることができる。
【図面の簡単な説明】
【００１５】
【図１】シミュレーション装置を説明するための図である。
【図２】ファームウエアのデータ構成を示す図である。
【図３】画像形成装置を説明するための図である。
【図４】格納部に格納されるデータ形式の一例を示す図である。
【図５】ＩＳＳの動作を説明するための図である。
【図６】ＲＴＯＳ（real time OS）におけるタスクの切り替わりの一例を示す図である。
【図７】命令サイクル数算出処理の手順を示すフローチャートである。
【図８】シミュレーション装置に補正処理を組み込んだ場合のソフトウエア構成（ａ）及びデータ構成（ｂ）を示す図である。
【図９】作像タスクにおいて補正データ格納部に格納される補正データのデータ形式を示す図である。
【図１０】補正データを作成するための命令サイクル数取得処理の手順を示すフローチャートである。
【図１１】補正係数算出処理の手順を示すフローチャートである。
【図１２】画像形成装置におけるタスクの特徴を説明するための図である。
【図１３】命令サイクル数補正処理の手順を示すフローチャートである。
【図１４】図１３のステップＳ１０７で実行される補正処理の手順を示すフローチャートである。
【図１５】第２の実施の形態におけるシミュレーション装置のソフトウエア構成を示す図である。
【図１６】シミュレーション後に実行される命令サイクル数補正処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、実施の形態について図面を参照しつつ詳細に説明する。
【００１７】
図１は、シミュレーション装置を説明するための図であり、（ａ）は、実施の形態に係るシミュレーション装置１００の概略構成を示すブロック図である。シミュレーション装置１００は、装置用ＣＰＵ１０１、ＲＡＭ１０２、出力装置１０３、入力装置１０４、記憶媒体１０５から主として構成されている。
【００１８】
シミュレーション装置１００は、専用の機器によって実現してもよいし、パーソナルコンピュータ（ＰＣ）であってもよい。また、プログラムメモリとしての記憶媒体１０５は、ハードディスク、ソリッドステートドライブ、フラッシュメモリ、光ディスク、もしくはネットワークなどの通信手段で接続された記憶媒体を用いてもよい。記憶媒体１０５には、ソフトウエア、ソフトウエアが利用するデータ等が格納されている。
【００１９】
次に、シミュレーション装置１００のソフトウエア構成について説明する。
【００２０】
図１（ｂ）は、シミュレーション装置１００のソフトウエア構成を示す図である。ソフトウエアは、ＩＳＳ１１０から構成されている。
【００２１】
ＩＳＳ１１０は、実ＣＰＵの動作の模擬と、命令語の命令サイクルを計算することができる仮想的なＣＰＵ（以下、「仮想ＣＰＵ」という。）１１５と、判断処理１１２と、算出処理１１３から構成される。仮想ＣＰＵ１１５は、後述するファームウエアの命令語をシミュレーション装置１００のＲＡＭ１０２上で仮想的に実行する。
【００２２】
図１（ｃ）は、シミュレーション装置１００のデータ構成を示す図である。シミュレーション装置１００のデータは、ファームウエア１１１、サイクル数格納部１２１、計算結果格納部１２２から構成されている。シミュレーション装置１００のデータは、記憶媒体１０５に格納されている。
【００２３】
次に、図１（ｃ）のデータにおけるファームウエア１１１について説明する。
【００２４】
図２は、ファームウエア１１１のデータ構成を示す図である。図２において、ファームウエア１１１は、実ＣＰＵで実行可能で特定の機能を実現する１つ以上の命令語の集合（以下、「制御プログラム」という。）からなる。図２において、ファームウエア１１１は、制御プログラムＡとしての作像タスクと、制御プログラムＢとしての紙搬送タスクと、制御プログラムＣとしての定着タスクとを含んでいる。
【００２５】
以下、ファームウエアの制御対象であるターゲット装置が画像形成装置である場合を例示して、制御プログラムについて説明する。
【００２６】
図３は、画像形成装置を説明するための図であり、（ａ）は、画像形成装置の概略構成を示す断面図、（ｂ）は、その制御構成を示すブロック図である。
【００２７】
図３（ａ）において、画像形成装置５００は、画像形成部５１０、紙搬送部５２０、及び定着部５３０を備えている。
【００２８】
図３（ｂ）において、画像形成装置５００の制御構成は、画像形成制御部２１２と、画像形成被制御部２１３に大別される。画像形成制御部２１２は、中央演算装置としての実ＣＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０３、記憶手段２０４を備えている。実ＣＰＵ２０１は、通信コントローラ２１０、搬送ローラ３００、二次転写ローラ５１７、レーザスキャナ５１１、定着器５５０、定着ローラ５１８、加圧ローラ５１９を制御する。なお、画像形成被制御部２１３は、画像形成制御部２１２のＣＰＵ２０１がファームウエア１１１を実行することによって制御され、画像形成処理を実行する。
【００２９】
すなわち、画像形成部５１０は、図示省略した操作部又はホストコンピュータ（２１１）からプリント指示を受けて画像を形成するためのタスクを実行する。各色（イエロー（Ｙ）、マゼンダ（Ｍ）、シアン（Ｃ）、ブラック（Ｋ））の画像信号がレーザスキャナ５１１に送られ、感光ドラム５０１Ｙ〜Ｋ上にそれぞれ各色に対応するレーザ光が照射されて静電潜像が形成される。感光ドラム５０１Ｙ〜Ｋ上に形成された静電潜像は、対応する現像器５０５Ｙ〜Ｋから供給されるトナーによって現像されトナー画像となる。感光ドラム５０１Ｙ〜Ｋに形成されたトナー画像は、順次中間転写ベルト５１６に転写されてカラー画像を形成する。その後、中間転写ベルト５１６の回転によってカラー画像は、二次転写ローラ５１７と中間転写ベルト５１６が当接する二次転写部まで移動する。
【００３０】
一方、紙搬送部５２０は、カセット５２１に収容された用紙Ｐを二次転写部まで搬送する。そして、中間転写ベルト５１６に転写され二次転写部まで搬送されたトナー画像は、当該二次転写部まで搬送された用紙Ｐに転写される。
【００３１】
定着部５３０は、トナー像が転写された用紙Ｐを受け入れ、定着器５５０の定着ローラ５１８と加圧ローラ５１９とが当接するニップ部でトナー画像を加熱、加圧して当該トナー画像を用紙Ｐの表面に熱定着する。トナー画像が定着された用紙Ｐは、紙搬送部５２０によって機外に排出される。
【００３２】
このような画像形成装置５００の一連の動作において、レーザスキャナ５１１に画像信号が送られてから二次転写部でトナー画像が用紙Ｐに転写されるまでの作像に関する一連の動作を司る処理を作像タスクとする。また、定着器５５０によって転写画像を用紙Ｐに熱定着する一連の動作を司る処理を定着タスクとする。さらに、カセット５２１から用紙Ｐを給紙し、機外にを排出するまで一連の用紙搬送制御を司る処理を紙搬送タスクとする。
【００３３】
また、上述した各タスクのタイミングや機内状態のシーケンスを管理する処理を管理タスクとする。なお、タスクは、リアルタイムオペレーティングシステム（ＲＴＯＳ）が管理する制御単位であり、実行状態、待ち状態、実行可能状態などに状態を遷移、移行させる。
【００３４】
本実施の形態における制御プログラムは、図２で示す制御プログラムＡに作像タスクを、制御プログラムＢに紙搬送タスクを、制御プログラムＣに定着タスクを割り振ったものである。これら制御プログラムには、計算をするための命令語（命令１）、負荷ＡＳＩＣと通信を行うための通信機能を実現するための命令語（命令２）、条件分岐を行うため条件分岐のための命令語（命令３）が含まれている。制御プログラムは、状況に応じた計算を行う機能を有する計算プログラム、状況に応じた判断を行う機能を有する判断プログラム、または他の装置と通信を行う機能を有する通信プログラムを含むシステム内の機能別に分かれたモジュールを制御する。
【００３５】
なお、タスクの分け方はさまざまな分け方があり、上述した分け方に限定されるものではない。また、ＡＳＩＣは、application specific integrated circuitの略である。
【００３６】
制御プログラムは、プログラムのソースコード上の関数であってもよいし、機能モジュールであってもよい。なお、機能モジュールとは、画像形成装置５００において、定着の制御を行う処理、作像の制御を行う処理など、それぞれの部品的な機能を集め、まとまりをもったプログラムのことである。
【００３７】
また、図２において、各制御プログラムには、管理番号としてそれぞれ固有の数値が割り当てられている。例えば、制御プログラムＡである作像タスクには“１”が割り当てられ、制御プログラムＢである紙搬送タスクには“２”が割り当てられ、制御プログラムＣである定着タスクには“３”が割り当てられている。これによって、作像タスクを“１”、紙搬送タスクを“２”、定着タスクを“３”といったようにタスクを数値で区別することができる。以後、この番号を管理番号と呼ぶ。ファームウエアは、管理番号を用いて管理される。なお、本実施の形態では、管理番号を用いてファームウエアを管理しているが、制御プログラムを区別、管理できる方法であれば、別の方法を採用することもできる。
【００３８】
次に、図１（ｃ）におけるサイクル数格納部１２１、及び計算結果格納部１２２について説明する。
【００３９】
図４は、格納部に格納されるデータ形式の一例を示す図であり、図４（ａ）は、サイクル数格納部に格納されるデータ形式の一例を示す図、図４（ｂ）は、計算結果格納部に格納されるデータ形式の一例を示す図である。
【００４０】
図４（ａ）において、サイクル数格納部１２１には、実行されたタスクの実行開始時の命令サイクル数４０２と、当該タスク（制御プログラム）に対応する管理番号４０１が格納される。例えば、作像タスクを例とすれば、その管理番号４０１である“１”と、作像タスクが実行状態になった時の命令サイクル数４０２である“１０２１”が格納される。また、実行中の作像タスクが実行状態とは別の状態へ移行した時（終了時）の命令サイクル数４０４である”５２５２”が格納される。
【００４１】
図４（ｂ）において、計算結果格納部１２２には、タスクの開始から終了までの命令サイクル数４０６と、対応する制御プログラムの管理番号４０５が格納される。例えば、作像タスクを例にすれば、その管理番号４０５である“１”と、作像タスクが実行状態となった時から別の状態（停止状態）へ移行した時までの命令サイクル数４０６である“４２３１”が格納される。なお、計算結果格納部１２２には、作像タスクの管理番号４０５である“１”に対応するタスクの管理番号４０７である“１”と、当該タスクを実ＣＰＵで実行した場合に実際に計数された命令サイクル数４０８である“３８０８”が予め格納されている。
【００４２】
次に、シミュレーション装置１００の記憶媒体１０５に格納されたソフトウエアであるＩＳＳについて説明する。ＩＳＳは、実ＣＰＵの動作を模擬する環境をシミュレーション装置１００のＲＡＭ１０２上に構築する。
【００４３】
図５は、ＩＳＳ１１０の動作を説明するための図である。
【００４４】
シミュレーション装置１００の装置用ＣＰＵ１０１（図１参照）は、記憶媒体１０５に格納されているＩＳＳ１１０をＲＡＭ１０２にロードし、ＲＡＭ１０２上に実ＣＰＵ２０１の動作を模擬する環境（以下、ＩＳＳ環境１０９）を構築する。記憶媒体１０５は、システムメモリとして機能する。ＩＳＳ環境１０９は、ファームウエア１１１を読み込むことによってシミュレーションを実行する。ファームウエア１１１の読み込み後、ＩＳＳ環境１０９では命令語単位でシミュレートが行われ、順次命令語の命令サイクル数が計算される。
【００４５】
また、ＩＳＳ１１０は、命令サイクル数をファームウエア１１１の実行開始時点から実行した命令語に応じて計数する機能を有している。これによって、実行開始時点からの命令サイクル数の合計値を算出することができる。
【００４６】
一方、ＩＳＳ１１０の判断処理１１２は、装置用ＣＰＵ１０１によって実行される。判断処理１１２は、制御プログラムの開始と終了を検知するための処理である。さらに、制御プログラムの分け方によって判断処理１１２の処理内容は異なる。
【００４７】
以下、制御プログラムをタスクとした場合の判断処理について説明する。
【００４８】
図６は、ＲＴＯＳ（real time OS）におけるタスクの切り替わりの一例を示す図である。図６において、タスクの開始と終了を検知する手段はＲＴＯＳによって実行中のタスクが別のタスクに切り替わったことを示す信号から判断される。以下、画像形成装置５００の例を用いてタスクの開始と終了を検知する判断処理について説明をする。
【００４９】
作像タスクなどの実行状態のタスクが待ち状態に移行するとＲＴＯＳによってタスクが切り替えられ、実行可能状態であった紙搬送タスクなどの別のタスクが実行される。その時のＲＴＯＳによる切り替えを作像タスクが終了した時間と判断し、紙搬送タスクの開始する時間と判断する。このタスクが切り替わるときにＲＴＯＳは、タスクを管理するメモリ変数の値を書き換える動作を行う。
【００５０】
本実施の形態では、このメモリ変数の値が別のタスクの値に書き換えられることによってタスクが終了したと判断する。図６のＲＴＯＳのタスクの切り替わりの例では、タスクの開始９０１の時にタスクを管理するメモリ変数の値が作像タスクの管理番号を示す“１”に切り替わる。その後、タスクの終了９０２の時は、ＲＴＯＳによってレジスタの値が次に実行される紙搬送タスクの管理番号“２”に切り替わる。なお、機能モジュールで分けた場合、機能モジュールの動作開始を要求する信号が発信された時をその機能モジュールの開始と判断し、機能モジュールが要求された動作が完了したことを示す信号を発信した時をその機能モジュールの動作終了と判断される。
【００５１】
また、ＩＳＳ１１０の算出処理１１３は、装置用ＣＰＵ１０１で実行され、判断処理１１２の判断結果に基づいて制御プログラムの実行に必要な命令サイクル数を計算する処理である。本実施の形態では、タスクの開始時と終了時の命令サイクル数を取得し、その差分を計算する。図６の作像タスクの例では、タスクの開始９０１がレーザスキャナ５１１に画像信号が送くられた時であり、タスクの終了９０２が二次転写部で画像が用紙Ｐに転写された時である。すなわち、図４（ａ）の例では、作像タスクの開始を示す命令サイクル数４０２である“１０２１”と、作像タスクの終了を示す命令サイクル数４０４である“５２５２”を取得する。これによって、算出処理１１３は、図４（ｂ）に示すタスクの開始から終了までの命令サイクル数４０６である”４２３１”を上述の命令サイクル数の差分（５２５２−１０２１＝４２３１）として求める。なお、ＩＳＳ１１０が制御プログラムの実行開始から実行した命令語に応じて命令サイクル数を加算して、タスクの終了までの命令サイクル数を計算させてもよい。
【００５２】
次に、ＩＳＳによる命令サイクル数算出処理について説明する。
【００５３】
図７は、ファームウエア１１１をＩＳＳ１１０によってシミュレーションする際の命令サイクル数算出処理の手順を示すフローチャートである。命令サイクル数算出処理は、シミュレーション装置１００の装置用ＣＰＵ１０１によって実行される。
【００５４】
命令サイクル数算出処理が開始されると、装置用ＣＰＵ１０１は、ＩＳＳ１１０の全ての制御プログラム（以下、「タスク」という。）、例えば、作像タスク、紙搬送タスクなどの起動処理を行う（ステップＳ１５１）。このとき、装置用ＣＰＵ１０１は、起動時のＩＳＳ環境１０９が示す命令サイクル数を、指定したタスクの開始時間としてサイクル数格納部１２１に格納する。また、同時に、装置用ＣＰＵ１０１は、指定したタスクの管理番号を命令サイクル数とともにサイクル数格納部１２１に格納する（ステップＳ１５２）。例えば、図４（ａ）の作像タスクであれば、画像信号がレーザスキャナ５１１に送られてから二次転写部で画像が用紙に転写されるまでの期間でＲＴＯＳによって実行可能状態から実行状態に状態移行した時の命令サイクル数４０２である“１０２１”が格納される。
【００５５】
次いで、装置用ＣＰＵ１０１は、ＩＳＳ１１０の判断処理１１２によって、指定したタスクの状態が、例えば、待ち状態など別の状態へ移行したか否かを判定し、移行するまで待機する（ステップＳ１５３）。ステップＳ１５３の判定の結果、タスクの状態が移行した後（ステップＳ１５３で「ＹＥＳ」）、装置用ＣＰＵ１０１は、その時のＩＳＳ環境１０９が示す命令サイクル数をタスクの終了時間としてサイクル数格納部１２１に格納させる（ステップＳ１５４）。例えば、図４の作像タスクであれば、画像信号がレーザスキャナ５１１に送られてから二次転写部で画像が用紙に転写されるまでの期間でＲＴＯＳによって状態が実行状態からそれ以外の状態に移行した時の命令サイクル数４０４である“５２５２”が格納される。また、装置用ＣＰＵ１０１は、この時、終了した作像タスクの管理番号をサイクル数格納部１２１に格納する（ステップＳ１５４）。作像タスクの命令サイクル数取得開始時に格納部に格納した管理番号４０１と命令サイクル数取得終了時に格納部に格納した管理番号４０３は同じ値の”１”となる。
【００５６】
次いで、装置用ＣＰＵ１０１は、ＩＳＳ１１０の算出処理１１３によって、命令サイクル数の差分を算出する（ステップＳ１５５）。差分を算出した後、装置用ＣＰＵ１０１は、上述のタスクと同じ値の管理番号と算出処理１１３の計算結果である命令サイクル数を計算結果格納部１２２に格納する（ステップＳ１５６）。例えば、図４（ｂ）の作像タスクであれば、管理番号４０５である”１”と、命令サイクル数４０６である“（５２５２−１０２１＝）４２３１”を格納する。計算結果格納部１２２は、計算結果メモリとして機能する。
【００５７】
その後、装置用ＣＰＵ１０１は、ＩＳＳ１１０に、次の実行可能状態であるタスクがあるか否かを確認し（ステップＳ１５７）、実行可能状態であるタスクがない場合（ステップＳ１５７で「ＮＯ」）、装置用ＣＰＵ１０１は、本命令サイクル数算出処理を終了する。
【００５８】
一方、実行可能状態であるタスクがある場合（ステップＳ１５７で「ＹＥＳ」）、装置用ＣＰＵ１０１は、処理をステップＳ１５２に戻し、ステップＳ１５２〜Ｓ１５７を繰り返す。
【００５９】
図７の処理によれば、計測開始時の命令サイクル数と計測終了時の命令サイクル数との差分を取ることによって、対象となる制御プログラムであるタスクの命令サイクル数を算出することができる。
【００６０】
次に、本発明の特徴部分であるＩＳＳ１１０に、命令サイクル数を補正するプログラムを組み込んだ命令サイクル数補正処理について説明する。ＩＳＳ１１０に直接命令サイクル数を補正するプログラムを組み込んだ場合、ファームウエアのシミュレーションと同時に命令サイクル数を制御プログラム単位で補正することができる。
【００６１】
ＩＳＳ１１０に命令サイクル数補正処理を組み込んだ場合のシミュレーション装置１００のハード構成は、上述した図１のシミュレーション装置１００のハード構成と同様である。
【００６２】
以下に、ＩＳＳ１１０に命令サイクル数補正処理（以下、単に「補正処理」という。）を組み込んだ場合のシミュレーション装置１００のソフトウエア構成について説明する。
【００６３】
図８は、シミュレーション装置１００に補正処理を組み込んだ場合のソフトウエア構成（ａ）及びデータ構成（ｂ）を示す図である。図８（ａ）において、ソフトウエアは、ＩＳＳ１１０と、補正データ生成プログラム１３０から構成される。
【００６４】
ＩＳＳ１１０は、仮想ＣＰＵ１１５と、判断処理１１２、算出処理１１３、及び補正処理１１４から構成される。一方、補正データ生成プログラム１３０は、判断処理１３１と、算出処理１３２と、補正データ算出処理１３３から構成される。
【００６５】
また、図８（ｂ）において、シミュレーション装置１００のデータに補正処理を組み込んだ場合のデータ構成は、ファームウエア１１１、サイクル数格納部１２１、計算結果格納部１２２、補正データ格納部１２３、及び補正結果格納部１２４から構成される。
【００６６】
次いで、ＩＳＳ１１０に命令サイクル数補正処理を組み込んだ場合のデータ形式について説明する。ファームウエア１１１のデータ形式、サイクル数格納部１２１及び計算結果格納部１２２に格納されるデータ形式は、上述の通りである。従って、ここでは、その説明を省略し、補正データ格納部１２３に格納される補正データのデータ形式、及び補正結果格納部１２４に格納されるデータのデータ形式について説明する。
【００６７】
図９は、作像タスクにおいて補正データ格納部１２３に格納される補正データのデータ形式を示す図である。図９において、補正データは、管理番号７０１と、補正係数７０２として格納される。補正係数７０２は、装置用ＣＰＵ１０１がＩＳＳ１１０を制御することによって管理番号７０１に対応するタスクを実行した際の命令サイクル数と、実ＣＰＵ２０１で管理番号７０１に対応するタスクを実行した際の実命令サイクル数から求めた関係数である。補正係数７０２は、実ＣＰＵ２０１で管理番号“１”の作像タスクを実行した際の命令サイクル数４０８である”３８０８”（図４（ｂ））を、ＩＳＳ１１０で算出した命令サイクル数４０６である”４２３１”（図４（ｂ））で除算した”０．９”として格納される。
【００６８】
補正データとしての補正係数は、単独で、又は管理番号と対応させて情報を表示する表示部に表示させることもできる。
【００６９】
以下に、フローチャートを用いて補正係数算出方法について説明する。
【００７０】
補正データとしての補正係数を算出する際、先ず、補正対象のタスクについて、装置用ＣＰＵ１０１と、実ＣＰＵ２０１によってそれぞれタスクを実行した場合の命令サイクル数が測定される。
【００７１】
図１０は、補正データを作成するための命令サイクル数取得処理の手順を示すフローチャートである。
【００７２】
図１０の（ａ）、（ｂ）は、それぞれ同一のタスクに関し、装置用ＣＰＵ１０１（ＩＳＳ１１０）と、実ＣＰＵ２０１とで命令サイクル数を計測する手順を示している。（ａ）の装置用ＣＰＵ１０１が実行するＩＳＳ１１０のフローをＳ１１０〜Ｓ１１７で示し、（ｂ）の実ＣＰＵ２０１が実行するフローをＳ１２０〜Ｓ１２７で示す。
【００７３】
図１０において、（ａ）の処理と（ｂ）の処理は、対応するステップによる同様の処理である。このため、（ａ）の処理と（ｂ）の処理を並行して説明する。
【００７４】
命令サイクル数取得処理が開始されると、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、まず、予め指定したタスクの命令サイクル数を調べるために、割り込み処理を含む他の処理が実行できないように初期設定を行う（ステップＳ１１０、Ｓ１２０）。例えば、作像タスクであれば、レーザスキャナ５１１に画像信号が送られてから二次転写部で画像が用紙に転写されるまで、タスク状態が実行状態から別の状態へ移行しないように設定される。
【００７５】
次いで、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、指定した制御プログラムとしてのタスクの起動処理を行う（ステップＳ１１１、Ｓ１２１）。指定したタスクの起動処理を行った後、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、それぞれ処理をステップＳ１１２及びＳ１２２に進める。すなわち、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、指定したタスクの開始時間として、その時のＩＳＳ環境１０９が示す命令サイクル数をサイクル数格納部１２１に格納する（ステップＳ１１２、Ｓ１２２）。また、この時、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、同時に、対応するタスクの管理番号をサイクル数格納部１２１に格納する。
【００７６】
命令サイクル数及び管理番号を格納した後、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、指定したタスクが次のタスク状態に移行したか否かを判断し、移行するまで待機する（ステップＳ１１３、Ｓ１２３）。例えば、作像タスクであれば、送られた画像信号に対応する画像が形成され、用紙に転写された後、定着タスクに移行したか否かが判断される。ステップＳ１１３、Ｓ１２３の判定の結果、タスク状態が移行した場合（ステップＳ１１３、Ｓ１２３で「ＹＥＳ」）、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、処理をそれぞれステップＳ１１４及びＳ１２４に進める。すなわち、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、指定したタスクが次のタスク状態に移行した時のＩＳＳ環境１０９が示す命令サイクル数をタスクの終了時間として取得し、サイクル数格納部１２１に格納する（ステップＳ１１４、Ｓ１２４）。また、この時、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、終了したタスクの管理番号を同時にサイクル数格納部１２１に格納する。
【００７７】
命令サイクル数と管理番号を格納した後、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、サイクル数格納部に格納した開始時の命令サイクル数と終了時の命令サイクル数をそれぞれ取得し、差分を計算する（ステップＳ１１５、Ｓ１２５）。装置用ＣＰＵ１０１は、例えば、図４（ｂ）の作像タスクであればレーザスキャナ５１１に画像信号が送られてから、その画像信号に対応する画像が用紙に転写されるまでの命令サイクル数４０６である”４２３１”を算出する。一方、実ＣＰＵ２０１は、例えば、図４（ｂ）の作像タスクであればレーザスキャナ５１１に画像信号が送られてから、その画像信号に対応する画像が用紙に転写されるまでの命令サイクル数４０８である“３８０８”を算出する。
【００７８】
次いで、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、算出処理１３２の計算結果として命令サイクル数と、指定したタスクの管理番号である“１”とを計算結果格納部１２２に格納する（ステップＳ１１６、Ｓ１２６）。算出結果を格納した後、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、他にも計算するタスクがあるか否かを確認する（ステップＳ１１７、Ｓ１２７）。ステップＳ１１７、Ｓ１２７の判定の結果、他に計算するタスクがない場合（ステップＳ１１６、Ｓ１２６で「ＮＯ」）、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、本命令サイクル数取得処理を終了する。
【００７９】
一方、他にも計算するタスクがある場合（ステップＳ１１６、Ｓ１２６で「ＹＥＳ」）、装置用ＣＰＵ１０１及び実ＣＰＵ２０１は、それぞれ処理をステップＳ１１０及び１２０に戻し、命令サイクル数取得処理を継続する。
【００８０】
図１０の処理によれば、各タスクごとの装置用ＣＰＵ１０１を用いたシミュレーション時の命令サイクル数、及び実ＣＰＵ２０１を用いた実命令サイクル数を取得することができる。
【００８１】
次に、求めた２つの命令サイクルから補正データとしての補正係数が求められる。
【００８２】
図１１は、補正係数算出処理の手順を示すフローチャートである。この補正データ算出処理は、同一タスクに関し、装置用ＣＰＵ１０１がＩＳＳ１１０を実行することによって求めた命令サイクル数と、実ＣＰＵ２０１が求めた命令サイクル数を基に補正係数を算出する処理であり、装置用ＣＰＵ１０１が実行する。本実施の形態において補正係数は、装置用ＣＰＵ１０１の命令サイクル数と実ＣＰＵ２０１の命令サイクル数の比率として算出される。
【００８３】
図１１において、補正係数算出処理が開始されると、装置用ＣＰＵ１０１は、まず、装置用ＣＰＵ１０１で求めた命令サイクル数と、実ＣＰＵ２０１で求めた命令サイクル数を取得する。すなわち、装置用ＣＰＵ１０１は、指定したタスクの管理番号に対応する装置用ＣＰＵ１０１で求めた命令サイクル数（４０６）と、実ＣＰＵ２０１で求めた命令サイクル数（４０８）をそれぞれサイクル数格納部１２１から取得する（ステップＳ１３１）。
【００８４】
次いで、装置用ＣＰＵ１０１は、補正データ生成プログラム１３０の補正データ算出処理１３３によって装置用ＣＰＵ１０１の命令サイクル数４０６で、実ＣＰＵ２０１の命令サイクル数４０８を除算して補正係数を求める（ステップＳ１３２）。例えば、図４（ｂ）の作像タスクであれば、実ＣＰＵ２０１で計測した命令サイクル数４０８である“３８０８”を、ＣＰＵ１０１で計算した命令サイクル数４０６である”４２３１”で除算して補正係数“０．９”を求める。
【００８５】
補正係数を求めた後、装置用ＣＰＵ１０１は、上述した図９のように、求めた補正係数７０２である“０．９”と、これに対応する管理番号７０１“１”を、補正データ格納部１２３に格納する（ステップＳ１３３）。補正係数７０２を格納した後、装置用ＣＰＵ１０１は、当該装置用ＣＰＵ１０１と実ＣＰＵ２０１のサイクル数格納部１２１の管理番号を突き合わせて他にも補正係数を算出するタスクがあるか否か判定する（ステップＳ１３４）。ステップＳ１３４の判定の結果、他に計算するタスクがない場合（ステップＳ１３４で「ＮＯ」）、装置用ＣＰＵ１０１は、本補正係数算出処理を終了する。一方、他にも計算するタスクがある場合（ステップＳ１３４で「ＹＥＳ」）、装置用ＣＰＵ１０１は、処理をステップＳ１３１に戻し、補正係数算出処理を続行する。
【００８６】
図１１の処理によれば、実ＣＰＵ２０１で求めた命令サイクル数４０８である“３８０８”を、装置ＣＰＵ１０１で求めた命令サイクル数４０６である“４２３１”で除算することによって補正係数を算出することができる（ステップＳ１３２）。これによって、シミュレーション時に求めた命令サイクル数に順次補正係数を乗算することによって命令サイクル数を素早く補正することができるので、シミュレーション計算時間の増長を抑制することができる。
【００８７】
補正係数は、以下のような特徴がある。すなわち、画像形成装置５００のような特徴的な制御を行うファームウエア１１１でのタスク別の補正係数は、それぞれのタスクの命令語に傾向がみられる。それぞれのタスクで用いられる命令語の種類に大きく偏りが生じるためである。
【００８８】
図１２は、画像形成装置５００におけるタスクの特徴を説明するための図である。図１２において、例えば、定着タスクは、ターゲット温度に調節するために計算を多く行うので、四則演算のような計算をする命令語が多くなる。一方、紙搬送タスクは、センサやモータを制御するために負荷ＡＳＩＣと通信を行う必要があるので、メモリライトなどの通信機能を実現する命令語が多くなる。また、管理タスクは、条件に応じてそれぞれのタスクを管理する必要があるので、条件分岐を行う命令が多い。このように、それぞれのタスクで用いられる命令語の種類には大きく偏りが生じる。
【００８９】
なお、負荷ＡＳＩＣは、特定用途向け集積回路である、実ＣＰＵ２０１と通信を行ってセンサやモータなどの制御を行うことができる。また、機能モジュール毎に制御プログラムを分けても、各機能モジュールにあった係数で補正をすることができる。上述した画像形成装置５００は、各機能モジュールで特色のある制御を行っているので、各モジュールで補正係数に違いがみられる。
【００９０】
次に、補正結果格納部１２４のデータ形式について、上述の図４（ｂ）参照して説明する。補正結果格納部１２４は、タスクの開始から終了までの命令サイクル数を補正処理１１４によって補正した命令サイクル数とその制御プログラムの管理番号を格納する。図４（ｂ）の作像タスクであれば、管理番号４０７として“１”が格納される。また、命令サイクル数４０８として、ＩＳＳで取得した命令サイクル数４０６である“４２３１”に、図９の補正係数７０２である“０．９”を乗算して補正した“３８０８”が格納される。
【００９１】
次に、ＩＳＳ１１０に補正処理を組み込んだ場合のＩＳＳ１１０の動作について、説明する。 
【００９２】
補正処理を組み込んだＩＳＳ１１０を動作させる際、シミュレーション装置１００の記憶媒体１０５に格納されているＩＳＳ１１０を装置用ＣＰＵ１０１によってＲＡＭ１０２にロードし、ＩＳＳ環境１０９が構築される。その後、ＩＳＳ環境１０９にファームウエア１１１を読み込むことによってファームウエア１１１のシミュレーションが可能となる。ファームウエア１１１を読み込んだ後、ＩＳＳ環境１０９では命令語単位でシミュレーションが行われ、順次命令語の命令サイクル数が計算される。このときに、記憶媒体１０５又はＲＡＭ１０２にロードした補正データ格納部１２３の補正データを使って順次命令サイクル数が補正される。
【００９３】
ＩＳＳ１１０の判断処理１１２及び算出処理１１３については、上述したので、ここでは説明を省略する。一方、補正処理１１４は、装置用ＣＰＵ１０１で実行され、タスクの命令サイクルをより実ＣＰＵ２０１の命令サイクル数に近づけるための処理である。
【００９４】
以下、装置用ＣＰＵ１０１がＩＳＳ１１０を実行することによって実行される命令サイクル数補正処理について説明する。
【００９５】
図１３は、命令サイクル数補正処理の手順を示すフローチャートである。この命令サイクル数補正処理は、ＩＳＳ１１０で算出した命令サイクル数を補正する処理であって、装置用ＣＰＵ１０１が実行する。本命令サイクル数補正処理で用いられる補正係数は、図１０及び図１１の処理によって予め算出されたものである。
【００９６】
図１３において、命令サイクル数補正処理が開始されると、装置用ＣＰＵ１０１は、指定された全てのタスクに対応する制御プログラムの起動処理を行う（ステップＳ１０１）。次いで、装置用ＣＰＵ１０１は、指定したタスクの管理番号４０１とその時のＩＳＳ環境１０９が示す命令サイクル数４０２を計測開始時の命令サイクル数としてサイクル数格納部１２１に格納する（ステップＳ１０２）。命令サイクル数を格納した後、装置用ＣＰＵ１０１は、ＩＳＳ１１０の判断処理１１２によって指定したタスクが終了したか否かを判定し、指定したタスクが終了するまで待機する（ステップＳ１０３）。
【００９７】
ステップＳ１０３の判定の結果、指定したタスクが終了した場合（ステップＳ１０３で「ＹＥＳ」）、装置用ＣＰＵ１０１は、処理をステップＳ１０４に進める。すなわち、装置用ＣＰＵ１０１は、タスクの管理番号４０３とその時のＩＳＳ環境１０９が示す命令サイクル数４０４を計測終了のサイクル数としてサイクル数格納部１２１に格納する（ステップＳ１０４）。次いで、装置用ＣＰＵ１０１は、サイクル数格納部１２１から命令サイクル数４０２である“１０２１”と、命令サイクル数４０４である“５２５２”を取得し、ＩＳＳ１１０の算出処理１１３によってその差分の命令サイクル数を算出する（ステップＳ１０５）。
【００９８】
次いで、装置用ＣＰＵ１０１は、算出結果としての命令サイクル数４０６である“４２３１”と、対応する管理番号４０５である“１”を計算結果格納部１２２に格納する（ステップＳ１０６）。その後、装置用ＣＰＵ１０１は、ＩＳＳ１１０の補正処理１１４によって算出結果を補正する（ステップＳ１０７）。ステップＳ１０７で実行される補正処理の詳細については、図１４を用いて後述する。
【００９９】
補正処理を実行した後、装置用ＣＰＵ１０１は、ＩＳＳ１１０によって、次の実行可能状態であるタスクに対応する制御プログラムがあるか否か判定する（ステップＳ１０８）。ステップＳ１０８の判定の結果、実行可能状態であるタスクに対応する制御プログラムがない場合（ステップＳ１０８で「ＮＯ」）、装置用ＣＰＵ１０１は、本処理を終了する。一方、ステップＳ１０８の判定の結果、次の実行可能状態であるタスクに対応する制御プログラムがある場合（ステップＳ１０８で「ＹＥＳ」）、装置用ＣＰＵ１０１は、処理をステップＳ１０２に戻し、命令サイクル数補正処理を続行する。
【０１００】
図１３の処理によれば、指定したタスクに対応する制御プログラムの開始の命令サイクル数と終了時の命令サイクル数との差分によって、指定タスクの命令サイクル数を求め、これに、予め求めておいた補正係数を乗算して命令サイクル数を補正する。これによって、ＩＳＳ１１０を実行することによって計測したタスク単位の命令サイクル数に、補正係数を乗算するという簡易の方法によって、タスク単位で、実ＣＰＵ２０１で測定した命令サイクルに換算することができる。従って、ファームウエアが大規模になるか又は長時間分のシミュレーションを実行する場合であっても正確なシュミレーションを実行してシミュレーション計算時間の増長を抑制することができる。
【０１０１】
次に、図１３のフローチャートのステップＳ１０７で実行される補正処理について説明する。
【０１０２】
図１４は、図１３のステップＳ１０７で実行される補正処理の手順を示すフローチャートである。この補正処理１１４は、装置用ＣＰＵ１０１がＩＳＳ１１０を実行することによって実行される。
【０１０３】
図１４において、補正処理が開始されると、装置用ＣＰＵ１０１は、先ず、計算結果格納部１２２からシミュレーション中のタスクの命令サイクル数４０６と、管理番号４０５（図４（ｂ）参照）を取得する（ステップＳ１７１）。次いで、装置用ＣＰＵ１０１は、管理番号４０５と、管理番号が一致する補正データ格納部１２３に格納されている管理番号７０１と、当該管理番号７０１に対応する補正係数７０２（図９参照）を取得する（ステップＳ１７２）。
【０１０４】
次いで、ＣＰＵ１０１は、計算結果格納部１２２における管理番号と、補正データ格納部１２３における管理番号が一致しているか否かを確認的に確認する（ステップＳ１７３）。ステップＳ１７３の判定の結果、両者の管理番号が一致している場合（ステップＳ１７３で「ＹＥＳ」）、装置ＣＰＵ１０１は、処理をステップＳ１７４に進めて補正後の命令サイクル数を求める。
【０１０５】
例えば、図４（ｂ）及び図９の作像タスクを例にすると、作像タスクの管理番号４０５である“１”と同じ管理番号である管理番号７０１である“１”に対応する補正係数７０２である“０．９”を取得する。そして、計算結果格納部１２２から取得した管理番号“１”の命令サイクル数４０６である“４２３１”に、補正データ格納部１２３から取得した補正係数７０２である“０．９”を積算する。これによって、補正後の命令サイクル数４０８として、実ＣＰＵ２０１の計数結果である命令サイクル数と同じ“３８０８”を得ることができる（ステップＳ１７４）。
【０１０６】
次いで、装置用ＣＰＵ１０１は、補正後の命令サイクル数４０８を計算結果格納部１２２に格納する（ステップＳ１７５）。すなわち、装置用ＣＰＵ１０１は、ＩＳＳ１１０で取得した命令サイクル数４０６である“４２３１”に補正係数７０２である”０．９”を積算して得られる補正後の命令サイクル数“３８０８”を４０８として補正結果格納部１２４に格納する（ステップＳ１７５）。そして、ＣＰＵ１０１は、その後、本処理を終了する。
【０１０７】
一方、ステップＳ１７３の判定の結果、計算結果格納部１２２における管理番号と、補正データ格納部１２３における管理番号が一致していなかった場合（ステップＳ１７３で「ＮＯ」）、装置用ＣＰＵ１０１は、処理をステップＳ１７２に戻す。その後、装置用ＣＰＵ１０１は、ステップＳ１７２、Ｓ１７３を繰り返す。
【０１０８】
図１４の処理によれば、予め、実ＣＰＵ２０１で計測した命令サイクル数に対する装置用ＣＰＵ１０１で計測した命令サイクル数の関係（比率）を求めて補正係数とする。そしてＣＰＵ１０１で計測した命令サイクル数に補正係数を乗算することによって命令サイクル数を補正する。これによって、装置用ＣＰＵ１０１で測定したタスクごとの命令サイクル数を容易に実ＣＰＵで測定したタスクごとの命令サイクル数に補正することができる。従って、ファームウエアが大規模になるか又は長時間分のシミュレーションが必要になっても、シミュレーション計算時間の増加を抑制しつつ、実ＣＰＵに近い命令サイクル数を求めることができる。
【０１０９】
本実施の形態によれば、命令サイクル数の補正を各タスクに対応する制御プログラム毎に行うことができ、従来技術に比べて補正回数を少なくできる。従って、シミュレーションに要する処理時間の増加を抑えてタスク毎の命令サイクル数を正確に計算することができる。また、ユーザは、補正結果格納部１２４のデータ（例えば、上述の図４のデータ）をみることで、ファームウエアのタスクが実行された順番とそのタスクが実行された命令サイクル数を確認することができる。なお、各タスクに対応する制御プログラムには、複数の命令処理が含まれており、従来技術では、命令単位でサイクル数が補正されていたので、シミュレーションに要する処理時間の増加を招いていた。
【０１１０】
本実施の形態において、補正データ生成プログラムはＣＰＵ１０１で実行され、シミュレーション装置１００でシミュレーションする前に、予め補正データが作成される。補正データ作成時は、ＩＳＳ１１０実行時と同一のＰＣ上で動作が行われる。なお、補正データ生成プログラムの判断処理１３１及び算出処理１３２は、前述したシミュレーション時の判断処理１１２及び算出処理１１３と同様の処理である。
【０１１１】
また、本実施の形態において、補正データ算出処理１３３は、命令サイクル数を補正する補正処理１１４で利用する補正データ格納部１２３に格納する補正係数を求めるための処理である。
【０１１２】
また、本実施の形態ではタスク別にＩＳＳ１１０によるシミュレーションで算出した命令サイクル数とＣＰＵ２０１で算出した命令サイクル数から求める比率を補正係数とする。例えば、図９の作像タスクであれば、補正係数７０２である“０．９”を補正データ格納部１２３に格納する。補正係数７０２はＣＰＵ２０１で計測した命令サイクル数４０８である“３８０８”をＩＳＳで取得した命令サイクル数４０６である“４２３１”で除算した値である。
【０１１３】
なお、補正処理１１４によっては、タスク別の装置用ＣＰＵ１０１と、実ＣＰＵ２０１の命令サイクル数の差分を取り、これを補正データとしてもよい。すなわち、本実施の形態において、装置用ＣＰＵ１０１の計測値に補正係数７０２を積算して命令サイクル数を補正したが、補正係数を積算する以外に、加算、減算、除算もしくはこれら四則演算の組み合わせを用いて補正するようにしてもよい。
【０１１４】
また、本実施の形態では、タスク単位で命令サイクル数を取得して補正したが、関数単位又は機能モジュール単位で命令サイクル数を取得し、補正するようにしてもよい。
【０１１５】
また、本実施の形態において、同様の方法で同じタスクを複数回計算もしくは計測して、その平均値もしくは中央値を補正データとして用いても良い。また、同様な機能を実現する複数の種類のタスクで前述した方法で補正データを作成して、その補正データの平均値もしくは中央値を用いても良い。同様な機能を実現するタスクとは、画像形成装置５００におけるＬＡＮ制御ドライバやモータのドライバなどハードウエアに依存しないタスクである。これらの複数回の計算もしくは計測を実施する場合や複数のタスクから補正データを決定する場合、補正データ格納部１２３と同様な格納部を類似タスクの数だけ用意する必要がある。そして、それぞれに上述した補正データを作成する方法で管理番号と補正データを格納する。そして、管理番号が同じ補正データ同士で平均もしくは中央値を計算すればよい。
【０１１６】
次に、第２の実施の形態について説明する。
【０１１７】
上述の第１の実施の形態では、命令サイクル数を補正するプログラムを直接ＩＳＳ１１０に組み込んで命令サイクル数を補正した。しかしながら、ＩＳＳ１１０に直接、命令サイクル数を補正するプログラムを組み込むことができない場合があり得る。この場合、シミュレーションの実行と同時に命令サイクル数を補正することができない。かかる場合を考慮し、本実施の形態では、シミュレーション後に、ＩＳＳ環境１０９外で命令サイクル数の補正を行う。
【０１１８】
本実施の形態に適用されるシミュレーション装置のハード構成は、上述の第１の実施の形態に適用されるシミュレーション装置１００のハード構成と同様であり、ソフトウエア構成のみが異なる。
【０１１９】
図１５は、第２の実施の形態におけるシミュレーション装置のソフトウエア構成を示す図である。図１５において、ソフトウエアは、ＩＳＳ１１０、補正データ生成プログラム１３０、及び補正プログラム１４０から構成されている。
【０１２０】
ＩＳＳ１１０は、仮想ＣＰＵ１１５、判断処理１１２、及び算出処理１１３から構成されている。補正データ生成プログラム１３０は、判断処理１３１、算出処理１３２、及び補正データ算出処理１３３から構成されている。また、補正プログラム１４０は、補正処理１４１から構成されている。
【０１２１】
シミュレーション装置１００のデータは、上述の第１の実施の形態と同様であり、ファームウエア１１１、サイクル数格納部１２１、計算結果格納部１２２、補正データ格納部１２３、及び補正結果格納部１２４から構成される（図８参照）。これらのデータ構成については、第１の実施の形態で説明したので、ここでは説明を省略する。
【０１２２】
ＩＳＳ１１０の動作は、上述した第１の実施の形態で示したＩＳＳ環境１０９での動作と同様である。また、ＩＳＳ１１０の判断処理１１２と、算出処理１１３、補正データ生成プログラム１３０の判断処理１３１と、算出処理１３２と、補正データ算出処理１３３は、それぞれ第１の実施の形態と同様である。さらに、補正プログラム１４０の補正処理１４１は、第１の実施の形態で説明した補正処理１１４と同様な処理である。
【０１２３】
なお、補正処理１４１からなる補正プログラム１４０は、シミュレーション装置１００で、シミュレーション処理が終了した後、装置用ＣＰＵ１０１が実行する処理である。
【０１２４】
以下に、シミュレーション処理が終了した後、命令サイクル数の補正を行う命令サイクル数の補正処理について説明する。
【０１２５】
図１６は、シミュレーション後に実行される命令サイクル数補正処理の手順を示すフローチャートである。このシミュレーション後に実行される命令サイクル数補正処理は、シミュレーション装置１００の装置用ＣＰＵ１０１が実行する。
【０１２６】
図１６において、シミュレーション後に実行される命令サイクル数補正処理が開始されると、装置用ＣＰＵ１０１は、シミュレーションが終了した後、命令サイクル数の補正処理（図１４参照）を実行する（ステップＳ１６１）。すなわち、装置用ＣＰＵ１０１は、補正プログラム１４０の補正処理１４１を実行して、計算結果格納部１２２に格納されているタスク別の命令サイクル数４０６と管理番号４０５を取得する。そして、装置用ＣＰＵ１０１は、命令サイクル数４０６を予め補正データ格納部１２３に格納されていた補正係数７０２を用いてタスク毎に補正する。命令サイクル数を補正した後、装置用ＣＰＵ１０１は、補正結果を補正結果格納部１２４に格納する（ステップＳ１６１）。
【０１２７】
例えば、図４（ｂ）に示した作像タスクであれば、装置用ＣＰＵ１０１は、上述の方法で算出した命令サイクル数４０６である“４２３１”に、図９の補正係数７０２である“０．９”を積算して命令サイクル数“３８０８”を求める。次いで、装置用ＣＰＵ１０１は、求めた命令サイクル数を、図４（ｂ）の命令サイクル数４０８のように、補正結果格納部１２４に格納する。
【０１２８】
補正処理を実行した後（ステップＳ１６１）、装置用ＣＰＵ１０１は、次の実行待ちであるタスクに対応する制御プログラムがあるか否か確認する（ステップＳ１６２）。ステップＳ１６２の判定の結果、実行待ちであるタスクに対応する制御プログラムがない場合（ステップＳ１６２で「ＮＯ」）、装置用ＣＰＵ１０１は、本処理を終了する。一方、ステップＳ１６２の判定の結果、実行待ちであるタスクに対応する制御プログラムがある場合（ステップＳ１６２で「ＹＥＳ」）、装置用ＣＰＵ１０１は、処理をステップＳ１６１に戻し、ステップＳ１６１及びＳ１６２の処理を繰り返す。
【０１２９】
図１６の処理によれば、命令サイクル数の補正をシミュレーション後に行うので、シミュレーションに要する処理時間の増加が抑えられ、かつ精度の高い命令サイクル数を求めることができる。
【０１３０】
本実施の形態において命令サイクル数の取得処理及び補正係数算出処理は、第１の実施の形態と同様である。
【符号の説明】
【０１３１】
１００  シミュレーション装置
１０１  装置用ＣＰＵ
１０２  ＲＡＭ
１０５  記憶媒体
１０９  ＩＳＳ環境
１１０  ＩＳＳ（Instruction Set Simulator）
１１１  ファームウエア
１１２  判断処理
１１３  算出処理
１２１  サイクル数格納部
１２２  計算結果格納部
４０１、４０３，４０５、４０７  管理番号
４０２、４０４，４０６、４０８  命令サイクル数
７０２  補正係数
【図１】
2019008413.tif 000003
【図２】
2019008413.tif 000004
【図３】
2019008413.tif 000005
【図４】
2019008413.tif 000006
【図５】
2019008413.tif 000007
【図６】
2019008413.tif 000008
【図７】
2019008413.tif 000009
【図８】
2019008413.tif 000010
【図９】
2019008413.tif 000011
【図１０】
2019008413.tif 000012
【図１１】
2019008413.tif 000013
【図１２】
2019008413.tif 000014
【図１３】
2019008413.tif 000015
【図１４】
2019008413.tif 000016
【図１５】
2019008413.tif 000017
【図１６】
2019008413.tif 000018