(57)【要約】【課題】データ処理装置の処理性能を改善する。【解決手段】データ処理装置は、第１タスクに係る一連のデータ処理を実行するためのコマンドリストを取得する取得手段と、コマンドリストに対応するデータ処理を実行する実行手段と、第１タスクよりも優先して実行されるべき第２タスクが生じた場合、コマンドリストに対応するデータ処理を中断する制御手段と、を備える。制御手段は、コマンドリストとは別に用意されたベースコマンドリストにしたがい、中断されたデータ処理に関して実行手段で用いられているパラメータを退避させる。【選択図】図１
2020102665.tif 000002
【特許請求の範囲】
【請求項１】
第１タスクに係る一連のデータ処理を実行するためのコマンドリストを取得する取得手段と、
前記コマンドリストに対応するデータ処理を実行する実行手段と、
前記第１タスクよりも優先して実行されるべき第２タスクが生じた場合、前記コマンドリストに対応するデータ処理を中断する制御手段と、を備え、
前記制御手段は、前記コマンドリストとは別に用意されたベースコマンドリストにしたがい、中断されたデータ処理に関して前記実行手段で用いられているパラメータを退避させるデータ処理装置。
【請求項２】
前記実行手段は、前記パラメータの退避が完了すると、前記第２タスクに係る一連のデータ処理を実行する請求項１に記載のデータ処理装置。
【請求項３】
前記制御手段は、前記第２タスクに係る一連のデータ処理が完了したと判定されると、前記ベースコマンドリストにしたがい、退避されているパラメータを前記実行手段に復帰させる請求項１または２に記載のデータ処理装置。
【請求項４】
前記制御手段は、前記コマンドリストに対応するデータ処理の中断に併せて該データ処理の進捗に関する情報を保持部に登録し、
前記制御手段は、前記パラメータを復帰させる際、前記保持部に保持される進捗に関する情報に基づいて前記ベースコマンドリストを更新する請求項３に記載のデータ処理装置。
【請求項５】
更新された前記ベースコマンドリストは、前記取得手段に、前記第１タスクの前記パラメータを復帰させるための個別コマンドリストを取得させる請求項４に記載のデータ処理装置。
【請求項６】
前記制御手段は、前記パラメータを退避させる際、前記第１タスクの情報に基づいて前記ベースコマンドリストを更新する請求項１から５のいずれか一項に記載のデータ処理装置。
【請求項７】
更新された前記ベースコマンドリストは、前記取得手段に、前記第１タスクの前記パラメータを退避させるための個別コマンドリストを取得させる請求項６に記載のデータ処理装置。
【請求項８】
前記第１タスクの情報は、前記第１タスクの優先度と、前記個別コマンドリストが格納されている位置を特定する情報と、を含む請求項７に記載のデータ処理装置。
【請求項９】
取得された個別コマンドリストのデータをコマンド化する手段をさらに備え、
コマンド化の結果得られるコマンドは、リードタイプまたはライト・リードタイプであることを示すヘッダを含む請求項７に記載のデータ処理装置。
【請求項１０】
取得された個別コマンドリストのデータをコマンド化する手段をさらに備え、
コマンド化の結果得られるコマンドは、リードタイプであることを示すヘッダを含む請求項５に記載のデータ処理装置。
【請求項１１】
前記ベースコマンドリストは、前記パラメータを退避させる先の領域のベースアドレスを設定するためのコマンドと、前記コマンドリストの中断された位置を示すコマンドリストポインタを設定するためのコマンドと、画像の位置を示す画像データアドレスを設定するためのコマンドと、を含む請求項１に記載のデータ処理装置。
【請求項１２】
実行手段を備えるデータ処理装置で行われる方法であって、
第１タスクに係る一連のデータ処理を実行するためのコマンドリストを取得する取得ステップと、
前記コマンドリストに対応するデータ処理を前記実行手段において実行する実行ステップと、
前記第１タスクよりも優先して実行されるべき第２タスクが生じた場合、前記コマンドリストに対応するデータ処理を中断する制御ステップと、を含み、
前記制御ステップは、前記コマンドリストとは別に用意されたベースコマンドリストにしたがい、中断されたデータ処理に関して前記実行手段で用いられているパラメータを退避させるステップを含む方法。
【請求項１３】
コンピュータを請求項１から１１のいずれか一項に記載の装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置および方法に関する。
【背景技術】
【０００２】
近年、さまざまな機器において処理性能の向上とより一層のコスト削減との両立が求められている。これらの機器には、ある種のコンピュータ・システムが搭載されており、コンピュータ・システムの製造コストあたりの処理性能は、機器の良否を決定する要因の一つと言える。
【０００３】
例えば、ビジネス向け複写機では、ネットワーク上の複数のユーザから同時に複数の処理要求が発生する可能性があり、そのような場合でもユーザへの快適な応答ができることが求められている。一方、機器の低コスト化のために、多種多様な画像処理の間でハードウエアリソースを共有して回路規模を削減することは有益である。例えば複写機の画像処理では、スキャナ画像処理と、汎用画像処理と、がハードウエアリソースを共有しており、２つの処理が同じハードウエアリソースで実行される。その場合、優先度の高い処理要求があった際の、実行中の処理のパラメータの退避および復帰に要する時間が課題になる。
【０００４】
例えば、汎用画像処理の実行中に、優先度の高いスキャナ画像処理要求があった場合、汎用画像処理で設定されていたパラメータを退避し、次にスキャナ画像処理のパラメータを設定する。このように、処理を変更する際、パラメータを退避するための時間と設定するための時間とが必要になる。近年、画像処理の多機能化により、退避および設定の対象となるパラメータの数は増加しており、且つ高速化のため、退避および設定に要する時間の短縮も求められている。これを改善する技術として、例えば、コマンドリストを用いた画像処理／データ処理により、コマンドリストに記載されている１つのコマンドで、パラメータの退避および設定を行う手法が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−２０９８０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の方法では、複数の要求元から同時に処理要求があった場合、その処理ごとにコマンドリストを変更し、且つそれに記載されているタイミングで、パラメータの退避および設定を行うことしかできない。そのため、例えば、中断した汎用画像処理を復帰する際、中断した位置から再開することができない。また、復帰時にコマンドリストを変更すれば、汎用画像処理の中断位置からの復帰も可能であるが、そのような処理には常にファームウエアによる制御が介在するため、全体の処理性能が低下する可能性がある。
【０００７】
本発明はこうした課題に鑑みてなされたものであり、その目的は、共有されるハードウエアリソースに対する複数の処理要求がある場合に、処理を中断した時のパラメータの退避および復帰を、ファームウエアによる制御を必要とせずに実現することができる技術の提供にある。
【課題を解決するための手段】
【０００８】
本発明のある態様はデータ処理装置に関する。このデータ処理装置は、第１タスクに係る一連のデータ処理を実行するためのコマンドリストを取得する取得手段と、コマンドリストに対応するデータ処理を実行する実行手段と、第１タスクよりも優先して実行されるべき第２タスクが生じた場合、コマンドリストに対応するデータ処理を中断する制御手段と、を備える。制御手段は、コマンドリストとは別に用意されたベースコマンドリストにしたがい、中断されたデータ処理に関して実行手段で用いられているパラメータを退避させる。
【発明の効果】
【０００９】
本発明によれば、データ処理装置の処理性能を改善できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係る複合機の構成を示すブロック図。
【図２】図１のＤＲＡＭの領域の構成を示す模式図。
【図３】図３（ａ）〜（ｃ）は、コマンドリストの例を示す模式図。
【図４】パラメータ設定コマンドのフォーマットの一例を示す模式図。
【図５】図１の画像処理部およびそれに接続された部材の機能および構成を示すブロック図。
【図６】図５のタスク情報保持部の一例を示すデータ構造図。
【図７】画像コマンドのフォーマットの一例を示す模式図。
【図８】旧タスク実行時に、優先度の高い新タスクの割り込みが発生した際の全体的な処理の流れを示すフローチャート。
【図９】タスク切り替えシーケンス（退避）における一連の処理の流れを示すフローチャート。
【図１０】タスク切り替えシーケンス（復帰）における一連の処理の流れを示すフローチャート。
【図１１】第２の実施の形態に係るタスク情報保持部の一例を示すデータ構造図。
【図１２】第２の実施の形態に係るタスク切り替えシーケンス（退避）における一連の処理の流れを示すフローチャート。
【図１３】第２の実施の形態に係るベースコマンドリストの一例を示す模式図。
【図１４】第３の実施の形態に係るタスク切り替えシーケンス（全体）における一連の処理の流れを示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。
【００１２】
実施の形態は、フォーマットが定められたコマンドによって処理パラメータ設定や処理制御を行うデータ処理装置に関する。実施の形態では、複数のタスクによって共用されるハードウエアリソースにおいて、タスクに係る一連のデータ処理を実行するためのコマンドリストとは別にパラメータの退避／復帰用のベースコマンドリストを用意する。ハードウエアリソースにおけるタスクの競合によりタスクの切り替えが発生する場合、切り替えの前にベースコマンドリストが実行されることで切り替え前のタスクのパラメータが退避される。切り替え後のタスクの処理が完了すると、再度ベースコマンドリストが実行されることにより、退避されていたパラメータが復帰し、切り替え前のタスクが再開される。これにより、ファームウエアによる制御を必要とせず、かつ、パラメータの退避／復帰が可能なタスクの切り替え制御が実現される。
【００１３】
（第１の実施の形態）
図１は、第１の実施の形態に係る複合機１００の構成を示すブロック図である。複合機１００は、制御部１１０と、スキャナ１２０と、プリンタ１３０と、を備える。スキャナ１２０は原稿１２１を読み取り、画像データに変換する光学装置である。具体的には、スキャナ１２０は原稿１２１に光を照射し、撮像素子によってその反射光を受光してアナログデータを生成し、Ａ／Ｄ変換することで画像データを得る。プリンタ１３０はプリント（印刷）画像データに従い、用紙１３１に対してインクを吐出することで、用紙１３１上に画像を形成するプリント装置である。なお、プリンタ１３０はこのようなインクジェット方式のプリント装置に限られず、電子写真方式やその他のプリント方式を用いたプリント装置であってもよい。
【００１４】
制御部１１０はスキャナ１２０やプリンタ１３０に対する動作の指示や、画像の転送、画像処理を行う制御装置である。制御部１１０は、ＣＰＵ１１１と、ＲＯＭ１１２と、ＤＲＡＭ１１３と、外部Ｉ／Ｆ１１８と、画像処理部１１６と、を含む。これらの構成要素はそれぞれバス１１７と接続され、バス１１７を介してデータのやりとりを行う。
【００１５】
外部Ｉ／Ｆ１１８は制御部１１０の外部とのインタフェースとして機能する。外部Ｉ／Ｆ１１８は、スキャナＩ／Ｆ１１４と、プリンタＩ／Ｆ１１５と、を含む。スキャナＩ／Ｆ１１４はスキャナ１２０とバス１１７との間に設けられ、それらの間のインタフェースとして機能する。プリンタＩ／Ｆ１１５はプリンタ１３０とバス１１７との間に設けられ、それらの間のインタフェースとして機能する。
【００１６】
ＣＰＵ１１１は複合機１００を制御するプロセッサである。
ＲＯＭ１１２はＣＰＵ１１１によって実行されるプログラムを保持する。
バス１１７は制御部１１０の構成要素間でデータを転送する際に用いられる信号伝送路である。
【００１７】
ＤＲＡＭ１１３は複合機１００のメインメモリである。ＤＲＡＭ１１３は、外部Ｉ／Ｆ１１８を介して取得されたスキャンやプリントに用いる画像データや、画像処理のタスクに係る一連の画像処理を実行するためのコマンド群（本明細書では「コマンドリスト」と称す）を保持する。
【００１８】
画像処理部１１６は画像データを処理するデータ処理装置であり、コマンドリストによって制御され、スキャン画像やプリント画像に対して画像処理を行う。画像処理はスキャン画像処理とプリント画像処理とを含む。スキャン画像処理では、スキャナ１２０によって読み取った画像データに対して、光学素子の特性によってずれてしまった色調を自然な色に修正するガンマ（γ）補正や、文字の輪郭をはっきりさせるためのエッジ強調等が行われる。プリント画像処理では、プリント対象の画像データに対して、プリント可能なＣＭＹＫ色空間に変換する色空間変換や、インクで表現するのに適切な階調へと変換するガンマ（γ）変換等が行われる。
【００１９】
図２は、図１のＤＲＡＭ１１３の領域の構成を示す模式図である。ＤＲＡＭ１１３は、コマンドリスト領域２０２と、画像データ領域２０４と、退避領域２０６と、を有する。コマンドリスト領域２０２には、画像処理のタスクに対応するコマンドリストである通常コマンドリストやベースコマンドリスト（後述）などのコマンドリストが保持される。画像データ領域２０４には画像データが保持される。退避領域２０６には、後述のタスク切り替えシーケンスによって退避されるパラメータがタスクごとに保持される。なお、予めタスクごとに退避領域２０６内の所定の領域を割り当ててもよいし、タスクに対して退避領域２０６内の領域を動的に割り当ててもよい。図２では、例として、タスクの切り替えが生じたときの切り替え前のタスク（実行中のタスクであり、以下、「旧タスク」と称する）に割り当てられた領域２０８と、切り替え後のタスク（割り込みタスクであり、以下、「新タスク」と称する）に割り当てられた領域２１０と、が示されている。
【００２０】
図３（ａ）〜（ｃ）は、コマンドリストの例を示す模式図である。本実施の形態におけるコマンドリストは、画像処理のタスクに係る一連の画像処理を実行するための通常コマンドリストと、タスク切り替え時のパラメータ退避／復帰用のベースコマンドリストと、タスクごとのパラメータ退避／復帰処理を規定する個別コマンドリストと、を含む。これらのコマンドリストはコマンドの集合体である点で共通する。これらのコマンドリストは、メインメモリであるＤＲＡＭ１１３に格納されている。以下に示す各コマンドは各コマンドリストに共通である。
【００２１】
図３（ａ）は通常コマンドリスト６０１の一例を示す。通常コマンドリスト６０１は、複数のコマンドにより構成されたタスクの基本動作プログラムであり、基本動作を行うために実行される。通常コマンドリスト６０１に含まれるコマンドには、パラメータ設定コマンド６１０と、ＤＲＡＭアクセスコマンド６２０と、パラメータ読み出しコマンド６３０と、同期コマンド６４０と、分岐コマンド６５０と、終了コマンド６６０と、の少なくとも６種類がある。以下に各コマンドを説明する。
【００２２】
パラメータ設定コマンド６１０は、画像処理部１１６にパラメータを設定するためのコマンドである。図４は、パラメータ設定コマンド６１０のフォーマットの一例を示す模式図である。パラメータ設定コマンド６１０は、ヘッダ部６１１と、データ部６１２と、を有する。ヘッダ部６１１は、パラメータ設定コマンド６１０を特定する識別子と、画像処理部１１６のモジュールを特定するＩＤと、パラメータ設定コマンド６１０のタイプを示すタイプ情報６１３と、ＩＤに対応するアドレスと、を有する。タイプ情報６１３で示されるタイプには、後述する実行部３３０の指定されたアドレスにパラメータを設定する（または書き込む）ライトタイプと、実行部３３０の指定されたアドレスからパラメータを読み出すリードタイプと、その両方を１度に行うライト・リードタイプと、がある。例えば、タイプ情報６１３が「００」であればライトタイプを、「０１」であればリードタイプを、「１１」であればライト・リードタイプを、それぞれ示してもよい。パラメータ設定コマンド６１０はパラメータを設定するためのコマンドであるから、そのタイプ情報６１３はライトタイプとなる。パラメータ設定コマンド６１０を、そのまま後述する入出力部３２０および実行部３３０に送ることで、パラメータが自動で設定される。
【００２３】
図３（ａ）に戻り、ＤＲＡＭアクセスコマンド６２０は、予めパラメータ設定コマンド６１０等で設定されたパラメータを基に、ＤＲＡＭ１１３に保存されているデータを画像処理部１１６に転送するためのコマンドである。ＤＲＡＭアクセスコマンド６２０は主に画像処理を実行するために使用される。ＤＲＡＭアクセスコマンド６２０について、パラメータで設定されるデータ数の転送が終わるまで、次のコマンドに移行しない。
【００２４】
パラメータ読み出しコマンド６３０は、画像処理部１１６に設定されているパラメータを読み出すためのコマンドである。パラメータ読み出しコマンド６３０のフォーマットは図４に示されるパラメータ設定コマンド６１０のフォーマットに準じる。パラメータ読み出しコマンド６３０はパラメータを読み出すためのコマンドであるから、そのタイプ情報６１３はリードタイプとなる。パラメータ読み出しコマンド６３０を用いることで、パラメータを読み出すことができるので、パラメータの退避や分析、デバッグに活用可能である。
【００２５】
同期コマンド６４０は、コマンドをＤＲＡＭ１１３等から読み出して画像処理部１１６へ送信することを一時停止するためのコマンドである。同期コマンド６４０が実行されると、既に実行部３３０に送信されたコマンドがすべて処理されるまで新たなコマンドの送信が一時停止されるため、画像処理のパイプラインを初期化することができる。これにより、例えば一連の画像処理が完了した状態を作り出すことができる。
【００２６】
分岐コマンド６５０は、コマンドリストのアドレスの再設定を行うためのコマンドである。図３（ａ）に示すように通常「処理方向」にそってコマンドが処理されるが、分岐コマンド６５０が実行されると矢印のように分岐コマンド６５０で指定したポインタまで戻ることができる。分岐コマンド６５０には繰り返し数が設定されており、その繰り返し数に到達したら、アドレスの再設定は行わず、次のコマンドに移行する。
【００２７】
終了コマンド６６０は、すべてのデータ処理を終えたときに、ＣＰＵ１１１や外部Ｉ／Ｆ１１８にタスク完了の通知を行うためのコマンドである。
【００２８】
図３（ｂ）は、ベースコマンドリスト６０２の一例を示す。ベースコマンドリスト６０２は、タスクの切り替え前に実行される動作プログラムである。ベースコマンドリスト６０２は、パラメータ設定コマンド６８０、６８１、６８２と、ＤＲＡＭアクセスコマンド６８５、６８３、６８４と、を含む。各コマンドの詳細は上述の通常コマンドリスト６０１の説明で説明したため省略する。
【００２９】
パラメータ設定コマンド６８０は、通常コマンドリスト６０１の位置（ポインタ）を保持する。パラメータ設定コマンド６８０は、後述するタスク切り替えシーケンス（復帰）に使用される。
パラメータ設定コマンド６８１は、ＤＲＡＭ１１３の退避領域２０６内のベースアドレスおよびコマンド数を保持する。パラメータ設定コマンド６８１は、後述するタスク切り替えシーケンス（復帰または退避）に使用される。
パラメータ設定コマンド６８２は、ＤＲＡＭ１１３の画像データ領域２０４内のベースアドレスおよび画像データのデータ数が格納される。パラメータ設定コマンド６８２は、後述するタスク切り替えシーケンス（復帰）に使用される。
パラメータ設定コマンド６８０の位置とパラメータ設定コマンド６８１の位置とは入れ替えてもよい。
【００３０】
ＤＲＡＭアクセスコマンド６８３、６８４、６８５は、上述したＤＲＡＭアクセスコマンド６２０と同様のコマンドで、パラメータ設定コマンド６８０、６８１、６８２で設定された情報を基にＤＲＡＭ１１３からデータをリードしまたはＤＲＡＭ１１３へとデータをライトする。
【００３１】
図３（ｃ）は、個別コマンドリスト６０３の一例を示す。個別コマンドリスト６０３は、タスク切り替えシーケンス（復帰または退避）で、パラメータの設定や退避を行うためのパラメータ設定コマンドの集合であり、ＤＲＡＭ１１３に保持されている。例えば、図２に示す退避領域２０６に、タスクごとに個別コマンドリスト６０３が保持されている。個別コマンドリスト６０３は、ベースコマンドリスト６０２の実行時にリードまたはライトされる。例えば、図３（ｂ）に示すＤＲＡＭアクセスコマンド６８３が実行されると、画像処理部１１６は、パラメータ設定コマンド６８１で設定されたＤＲＡＭ１１３のベースアドレスにアクセスする。そして、そのアドレスから個別コマンドリスト６０３のパラメータ設定コマンドをリードまたはライトする。そうすることで、タスクのパラメータ復帰および退避が可能となる。詳細は、後述するタスク切り替えシーケンス（復帰及び退避）で説明する。
【００３２】
図５は、図１の画像処理部１１６およびそれに接続された部材の機能および構成を示すブロック図である。ここに示す各ブロックは、ハードウエア的には、コンピュータのＣＰＵをはじめとする素子や機械装置で実現でき、ソフトウエア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウエア、ソフトウエアの組合せによっていろいろなかたちで実現できることは、本明細書に触れた当業者には理解されるところである。
【００３３】
画像処理部１１６は、処理制御部３１０と、入出力部３２０と、実行部３３０と、コマンドリスト格納部３４０と、を備える。処理制御部３１０は、タスク情報保持部３１２を含む。入出力部３２０は、コマンドリスト取得部３２１と、コマンド入力部３２２と、画像データ取得部３２３と、コマンド生成部３２４と、コマンド出力部３２５と、画像データ生成部３２６と、画像データ出力部３２７と、を含む。実行部３３０は、インターコネクト３３１と、複数の画像処理回路３３２、３３３、３３４と、を含む。コマンドリスト格納部３４０は、第１格納部３４１と、第２格納部３４２と、を含む。
【００３４】
以下では、画像処理部１１６における基本動作について説明する。
まず、処理制御部３１０は、ＣＰＵ１１１から、最初に実行するタスクの情報（タスク情報）を受信し、タスク情報保持部３１２に格納する。図６は、図５のタスク情報保持部３１２の一例を示すデータ構造図である。タスク情報保持部３１２に保持されるタスク情報はタスクごとに、該タスクを特定するタスクＩＤと、該タスクの優先度と、コマンドリストポインタと、ベースアドレスと、パラメータ退避コマンド数と、画像データアドレスと、画像データ数と、を含む。
【００３５】
タスク情報は、ＣＰＵ１１１や外部Ｉ／Ｆ１１８からタスクが発生するごとに増加する。例えば、図６に示すようにタスクＩＤ「１１」の旧タスクを実行している間にタスクＩＤ「２２」の新タスクの割り込みが発生した場合、新タスクのタスク情報（のエントリ）がタスク情報保持部３１２に追加される。タスクが終了することにより不要となったタスク情報は削除される。
【００３６】
次に、タスク情報の各項目について説明する。優先度は、タスクの優先度を表しており、タスクが競合した際に優先するタスクを決定するために使用される。退避領域ベースアドレスは、タスクに関連するパラメータを退避する先のＤＲＡＭ１１３の領域の先頭アドレスである。この領域は、例えば、退避領域２０６においてタスクに割り当てられた領域である。退避したパラメータは、この退避領域ベースアドレスから順に格納される。パラメータ退避コマンド数は、退避領域ベースアドレスと相関があり、ＤＲＡＭ１１３にコマンドの形で退避されたパラメータの数（コマンド数）を示す。パラメータ退避コマンド数は、タスクを復帰する際、コマンドの読み出し数を決定するために使用される。画像データアドレスは、画像処理を中断したときの画像データの位置（ポインタ）である。画像データアドレスは、タスクを復帰する際、画像データの読み出し位置を決めるために使用される。画像データ数は、画像データアドレスと相関があり、画像処理を中断したときの残りの画像データ数を表す。画像データ数は、タスクを復帰する際、画像データの読み出し数を決めるために使用される。コマンドリストポインタは、画像処理の進捗に関する情報であり、例えば画像処理を中断したときの通常コマンドリストの位置（ポインタ）である。コマンドリストポインタは、タスクを復帰する際、通常コマンドリストの読み出し位置を決めるために使用される。コマンドリストポインタの初期値は、通常コマンドリストの先頭アドレスであってもよい。
【００３７】
図５に戻り、次に、ＣＰＵ１１１は、画像処理部１１６に対し、最初に実行するタスクのパラメータ設定を行う。ＣＰＵ１１１は、少なくとも、ＤＲＡＭ１１３に格納されているコマンドリストのＤＲＡＭアドレスを設定する。この時、コマンドリストのＤＲＡＭアドレスは、タスク情報保持部３１２に保持されているコマンドリストポインタと同じ値になる。最初に実行するタスクに対応するコマンドリストは通常コマンドリストとベースコマンドリストとを含む。
【００３８】
次に、ＣＰＵ１１１から画像処理部１１６を起動する。起動後、コマンドリスト取得部３２１は、上記で設定されたパラメータ（ＤＲＡＭアドレス）に従って、ＤＲＡＭ１１３に格納されているベースコマンドリストを読み出し、第１格納部３４１に格納する。コマンドリスト取得部３２１は、上記で設定されたパラメータ（ＤＲＡＭアドレス）に従って、ＤＲＡＭ１１３に格納されている通常コマンドリストを読み出し、第２格納部３４２に一時的に格納する。そして、処理制御部３１０は、第２格納部３４２に保持されている通常コマンドリストのコマンドを順番に実行する。第２格納部３４２の容量は任意である。通常コマンドリストを一定量おきに格納していくことで、容量を少なくしてもよいし、すべての通常コマンドリストを格納できる容量にしてもよい。
【００３９】
通常コマンドリストのコマンドとして図３（ａ）のパラメータ設定コマンド６１０が実行される場合、画像処理部１１６のパラメータ設定が行われる。パラメータ設定コマンド６１０は、コマンドであり、コマンド入力部３２２に送られる。コマンド入力部３２２は、受けたコマンドをそのまま実行部３３０に送信する。実行部３３０では、インターコネクト３３１を経由して、インターコネクト３３１および複数の画像処理回路３３２、３３３、３３４のパラメータ設定が行われる。
【００４０】
通常コマンドリストのコマンドとして図３（ａ）のＤＲＡＭアクセスコマンド６２０が実行される場合、上記で設定されたパラメータに従って、ＤＲＡＭ１１３からデータを読み出す。通常、ＤＲＡＭ１１３に保持される画像データを読み出し、読み出された画像データに対して画像処理が行われる。まず、画像データ取得部３２３は、設定済のパラメータ（例えば、画像データアドレス、画像データ数）に基づいて、ＤＲＡＭ１１３の画像データ領域２０４から画像データを取得する。コマンド生成部３２４は、取得された画像データを画像コマンドに変換する。
【００４１】
図７は、画像コマンド７００のフォーマットの一例を示す模式図である。画像コマンド７００は、ヘッダ部７０２と、データ部７０４と、を含む。データ部７０４には画像データが格納されている。例えば、データ部７０４には、ＲＧＢの値が決められたフォーマットで格納されている。ヘッダ部７０２には、画像データ以外に必要な副次的な情報が任意で格納されている。例えば、ヘッダ部７０２には、画像コマンド７００を特定する識別子や画像の位置を示す位置情報が格納されている。
【００４２】
図５に戻り、このようにコマンド生成部３２４で生成された画像コマンドは、コマンド入力部３２２に送られ、さらに実行部３３０に送られてそこで画像処理される。実行部３３０で画像処理された画像コマンドは、コマンド出力部３２５によって受信され、画像データ生成部３２６に送られる。画像データ生成部３２６は、画像処理後の画像コマンドを、ＤＲＡＭ１１３への格納に適したフォーマットの画像データに変換し、画像データ出力部３２７に渡す。画像データ出力部３２７は、受けた画像データをＤＲＡＭ１１３の画像データ領域２０４に送信することでＤＲＡＭ１１３の画像データ領域２０４に格納させる。すべての画像処理が終了すると、処理制御部３１０は、ＤＲＡＭアクセスコマンド６２０の次のコマンドに移行する。
【００４３】
通常コマンドリストのコマンドとして図３（ａ）のパラメータ読み出しコマンド６３０が実行される場合、上述したパラメータ設定コマンド６１０と同様の動作が行われる。ただし、インターコネクト３３１および複数の画像処理回路３３２、３３３、３３４のパラメータ設定を行うのではなく、実行部３３０に設定されているパラメータを読み出し、コマンド出力部３２５を介してＤＲＡＭ１１３に退避するか、図示しないレジスタに格納する。読み出されたデータは、内部データのデバッグや解析に使用される。
【００４４】
通常コマンドリストのコマンドとして図３（ａ）の同期コマンド６４０が実行される場合、通常コマンドリストの読み出しと送信が一時停止される。実行部３３０に送信されたコマンドがすべて処理されるまで一時停止状態が継続されるため、画像処理のパイプラインを初期化することができる。これにより、例えば一連の画像処理が完了した状態を作り出すことができる。
【００４５】
通常コマンドリストのコマンドとして図３（ａ）の分岐コマンド６５０が実行される場合、指定されたポインタの位置まで通常コマンドリストの処理が戻される。繰り返し数はパラメータで設定されており、分岐コマンド６５０の実行が繰り返し数に達した場合、処理制御部３１０は指定されたポインタまで戻ることなく、次のコマンドに移行する。
【００４６】
通常コマンドリストのコマンドとして図３（ａ）の終了コマンド６６０が実行される場合、すべてのデータ処理を終え、ＣＰＵ１１１や外部Ｉ／Ｆ１１８にタスク完了通知が行われる。
【００４７】
以上が基本的な画像処理部１１６の動作である。ただし、例えば、旧タスク実行時に、優先度の高い新タスクの割り込みが発生した際のシーケンス（タスク切り替えシーケンス）については、後述する。
【００４８】
以上の構成による複合機１００の動作を説明する。
ＣＰＵ１１１は、外部（例えば、外部Ｉ／Ｆ１１８）から画像処理の要求を受信すると、該画像処理のタスクに対応する通常コマンドリストおよび個別コマンドリストを生成し、ＤＲＡＭ１１３に格納する。ＣＰＵ１１１は、最初に開始するタスクに対応する初期パラメータを画像処理部１１６に設定する。ＣＰＵ１１１は、ＤＲＡＭ１１３に矩形単位の画像（矩形画像）が格納されていることを確認した後、画像処理部１１６に画像処理の実行開始を通知する。もし、上記の画像処理中に、外部から別の画像処理の要求があった際には、ＣＰＵ１１１は、該別の画像処理のタスクに応じた通常コマンドリストおよび個別コマンドリストを生成し、ＤＲＡＭ１１３に格納する。そして、ＣＰＵ１１１は、画像処理部１１６に対してタスク割り込み指示を行う。画像処理部１１６は、ＣＰＵ１１１からのタスク割り込み指示を受けると、以下に説明されるタスク切り替えシーケンスを実施する。
【００４９】
旧タスク実行時に、新タスクの割り込みが発生した際のタスク切り替えシーケンスについて説明する。なお、理解しやすいように、新タスクが発生したときに旧タスクが実行中であるものとする。即ち、新タスクが発生したとき、既に旧タスクのタスク情報はタスク情報保持部３１２に格納されている。また、ベースコマンドリストは、既に第１格納部３４１に格納されているものとする。また、既に旧タスクにおける実行部３３０のパラメータ設定が完了しており、画像処理が実行中の状態であるものとする。
【００５０】
図８は、旧タスク実行時に、優先度の高い新タスクの割り込みが発生した際の全体的な処理の流れを示すフローチャートである。新タスクの割り込みが発生する際、ＣＰＵ１１１によって、新タスクのタスク情報は、タスク情報保持部３１２に格納される（Ｓ３０１）。ステップＳ３０１で設定されるタスク情報の項目は、図６に示される優先度と、退避領域ベースアドレスと、パラメータ退避コマンド数と、を含む。
【００５１】
次に処理制御部３１０は、新タスクの優先度と旧タスクの優先度とを比較する（Ｓ３０２）。その結果、旧タスクの優先度よりも新タスクの優先度のほうが低い場合（Ｓ３０２のＮ）、処理制御部３１０は、すぐにタスク切り替えを実施することはなく、旧タスクの終了を待ってから、新タスクに切り替える（Ｓ３０３）。処理制御部３１０は、旧タスクが終了してから通常コマンドリストの切り替え指示を行い、新タスクに係る動作を開始する。この場合、旧タスクに係る実行部３３０のパラメータを退避する必要はないため、ベースコマンドリストの実行は発生しない。
【００５２】
旧タスクの優先度よりも新タスクの優先度のほうが高い場合（Ｓ３０２のＹ）、処理制御部３１０は、まず、旧タスクのパラメータの退避および新タスクへの切り替えのための、「タスク切り替えシーケンス（退避）」を実行する（Ｓ３０４）。Ｓ３０４において、新タスクへの切り替えが完了すると、処理制御部３１０は、新タスクを実行する（Ｓ３０６）。なお、この時点で画像処理部１１６は既に起動されているため、ＣＰＵ１１１が通常コマンドリストを取得するのではなく、処理制御部３１０が、コマンドリスト取得部３２１に新タスクの通常コマンドリストの取得を指示する。コマンドリスト取得部３２１は、タスク情報保持部３１２を参照し、新タスクについて設定されたパラメータ（ＤＲＡＭアドレス）に従って、ＤＲＡＭ１１３に保持されている新タスクの通常コマンドリストを読み出し、第２格納部３４２に一時的に格納する。以後は図５に関連して説明したシーケンスと同様であるため説明を省略する。
【００５３】
新タスクの画像処理が終了した後、処理制御部３１０は、旧タスクのパラメータの復帰および旧タスクの再開のための「タスク切り替えシーケンス（復帰）」を実行する（Ｓ３０５）。Ｓ３０５が終了した後、処理制御部３１０は中断していた旧タスクの実行を開始する（Ｓ３０７）。Ｓ３０７における処理は、Ｓ３０６に関して説明した処理と同様であるから説明を省略する。
【００５４】
Ｓ３０４の「タスク切り替えシーケンス（退避）」およびＳ３０５の「タスク切り替えシーケンス（復帰）」について説明する。
【００５５】
図９は、タスク切り替えシーケンス（退避）における一連の処理の流れを示すフローチャートである。タスク切り替えシーケンス（退避）は、Ｓ４０２〜Ｓ４０３を含む旧タスクのタスク情報退避フェーズと、Ｓ４０４〜Ｓ４０５を含むパラメータ退避用コマンドの設定・実行フェーズと、Ｓ４０６〜Ｓ４０９を含む旧タスクのパラメータ退避フェーズと、を有する。
【００５６】
まず、Ｓ４０１〜Ｓ４０３にて、旧タスクのタスク情報を更新する。処理制御部３１０は、旧タスクの通常コマンドリストの実行を中断する（Ｓ４０１）。処理制御部３１０は、通常コマンドリストの実行の中断に際し最後に実行したコマンドまたは次に実行されるはずであったコマンドのアドレスに基づき、アドレス情報（コマンドリストポインタ）を取得する。処理制御部３１０は、取得したアドレス情報を、タスク情報のコマンドリストポインタとしてタスク情報保持部３１２に格納する（Ｓ４０２）。処理制御部３１０は、通常コマンドリストの実行の中断に際し最後に処理した画像データまたは次に処理されるはずであった画像データのアドレスに基づき、画像データアドレスおよび残りの画像データ数を取得する。処理制御部３１０は、取得した画像データアドレスおよび残りの画像データ数を、それぞれタスク情報の画像データアドレスおよび画像データ数としてタスク情報保持部３１２に格納する（Ｓ４０３）。このように格納したタスク情報は旧タスクの復帰時に必要となる情報である。
【００５７】
次に、処理制御部３１０は、第１格納部３４１に保持されているベースコマンドリストを設定または更新する（Ｓ４０４）。例えば、処理制御部３１０は、タスク情報保持部３１２に保持されている旧タスクのタスク情報を基に、図３（ｂ）に示されるようなベースコマンドリスト６０２を設定する。例えば、処理制御部３１０は、タスク情報保持部３１２に保持されている旧タスクのタスク情報を基に、少なくとも図３（ｂ）に示すパラメータ設定コマンド６８１を設定する。パラメータ設定コマンド６８１は、旧タスクの中断時の退避領域ベースアドレスとパラメータ退避コマンド数とを設定するためのものである。
【００５８】
Ｓ４０４におけるベースコマンドリストの設定が完了すると、処理制御部３１０はベースコマンドリストを実行する（Ｓ４０５）。実行する順番は、図３（ｂ）に示される「処理方向」の順番である。なお、実行されるコマンドは、パラメータ設定コマンド６８１およびＤＲＡＭアクセスコマンド６８３のみであってもよい。これにより、ＤＲＡＭ１１３の指定アドレスから個別コマンドリストが読み出され、第２格納部３４２に一時的に格納される（Ｓ４０６）。このとき、格納される個別コマンドリストに含まれるコマンドのタイプ（例えば、図４のタイプ６１３）はリードタイプに変更される。これは、画像処理部１１６のパラメータをリードしてＤＲＡＭ１１３に退避するためである。処理制御部３１０は、第２格納部３４２に一時的に保持されている個別コマンドリストのコマンドを順番に実行することで、画像処理部１１６のパラメータをリードする（Ｓ４０７）。リードされた画像処理部１１６のパラメータは、ＤＲＡＭ１１３の退避領域２０６のうち旧タスクに割り当てられた領域に格納される（Ｓ４０８）。個別コマンドリストのパラメータ設定コマンドの全ての実行が終わるまで、Ｓ４０７およびＳ４０８が繰り返される（Ｓ４０９）。個別コマンドリストのパラメータ設定コマンドの全ての実行が終わると、旧タスクのパラメータの退避が完了する。
【００５９】
次にＳ４１０にて新タスクの初期設定を実施する。旧タスクの通常コマンドリストから新タスクの通常コマンドリストに切り替えるために、処理制御部３１０は、タスク情報保持部３１２に保持されている新タスクのタスク情報（コマンドリストポインタ）を基にパラメータ設定を行う。即ち、ＤＲＡＭ１１３に格納されている新タスクのコマンドリストのＤＲＡＭアドレスが設定される。これにより、図８に示されるＳ３０６における新タスクの実行が可能となる。
【００６０】
以上、説明したように図９に示すＳ４０１〜Ｓ４１０を実行することで、旧タスクの中断時のパラメータや画像データアドレスや画像データ数を保持することができる。
【００６１】
図１０は、タスク切り替えシーケンス（復帰）における一連の処理の流れを示すフローチャートである。タスク切り替えシーケンス(復帰)は、Ｓ５０２〜Ｓ５０３を含むパラメータ復帰用コマンドの設定・実行フェーズと、Ｓ５０４を含む旧タスクのコマンドリスト復帰フェーズと、Ｓ５０５〜Ｓ５０７を含む旧タスクのパラメータ復帰フェーズと、Ｓ５０８を含む旧タスクの画像データアドレス復帰フェーズと、を有する。
【００６２】
優先度の高い新タスクの実行が完了すると、処理制御部３１０は、タスク情報保持部３１２に保持してある新タスクのタスク情報を削除する（Ｓ５０１）。処理制御部３１０は、第１格納部３４１に保持されているベースコマンドリストを設定または更新する（Ｓ５０２）。例えば、処理制御部３１０は、タスク情報保持部３１２に保持されている旧タスクのタスク情報を基に、少なくとも図３（ｂ）に示されるパラメータ設定コマンド６８０、６８１、６８２を設定する。パラメータ設定コマンド６８０は、旧タスクを中断したときの旧タスクのコマンドリストポインタを設定するよう更新される。パラメータ設定コマンド６８１は、旧タスクを中断したときの退避領域ベースアドレスとパラメータ退避コマンド数とを設定するよう更新される。パラメータ設定コマンド６８２は、旧タスクを中断したときの画像データアドレスと画像データ数とを設定するよう更新される。
【００６３】
Ｓ５０２におけるベースコマンドリストの設定が完了すると、処理制御部３１０はベースコマンドリストを実行する（Ｓ５０３）。実行する順番は、図３（ｂ）に示す「処理方向」の順番である。これにより、Ｓ５０４〜Ｓ５０７が順番に実施される。まず、Ｓ５０３でパラメータ設定コマンド６８０およびＤＲＡＭアクセスコマンド６８５が実行される。これにより、コマンドリストポインタが処理制御部３１０に自動設定される（Ｓ５０４）。次に、Ｓ５０３でパラメータ設定コマンド６８１およびＤＲＡＭアクセスコマンド６８３が実行される。これにより、ＤＲＡＭ１１３の指定アドレスから個別コマンドリストが読み出され、第２格納部３４２に一時的に格納される（Ｓ５０５）。このとき、格納される個別コマンドリストに含まれるコマンドのタイプ（例えば、図４のタイプ６１３）はライトタイプに変更される。これは、画像処理部１１６にパラメータを設定するためである。処理制御部３１０は、第２格納部３４２に保持されている個別コマンドリストを順番に実行することで、画像処理部１１６のパラメータを設定する（Ｓ５０６）。これにより、旧タスクを中断したときのパラメータを再度設定することができる。そして、個別コマンドリストの全てのパラメータ設定コマンドの実行が完了するまで、Ｓ５０６が繰り返される（Ｓ５０７）。
【００６４】
個別コマンドリストの全てのパラメータ設定コマンドの実行が完了した後、Ｓ５０３で処理制御部３１０はパラメータ設定コマンド６８２およびＤＲＡＭアクセスコマンド６８４を実行する。これにより、旧タスクを中断したときに次に処理されるべきであった画像データが読み出され、旧タスクの画像処理が再開される（Ｓ５０８）。
【００６５】
上述したように、Ｓ５０１〜Ｓ５０８を実施することによって、旧タスクの中断時から画像処理を再開することができる。
【００６６】
本実施の形態に係る複合機１００によると、共有されるハードウエアリソースに対する複数の処理要求が同時に発生する状況において、パラメータ復帰退避用のベースコマンドリストを予め用意し、タスク処理が変わる前にそれを実行する。これにより、ファームウエアによる制御を必要とすることなく、タスクの中断時のパラメータの退避または復帰が可能となるため、処理性能が改善する。
【００６７】
（変形例）
本実施の形態の変形例として複数タスクの切り替えシーケンスを説明する。本実施の形態では、旧タスクおよび新タスクの２つのタスクについて、ベースコマンドリストを共通に使用できることを説明した。本変形例では、３つ以上のタスクの処理要求が発生したとしても、ベースコマンドリストを共通に使用できることを説明する。説明を簡略化するため、旧タスクの実行中に新タスクの割り込みが発生し、新タスクへの切り替えが生じて新タスクが実行されている間にさらに優先度の高い特別タスクの割り込みが発生した例を用いて説明する。この例におけるタスクの優先度は、旧タスク＜新タスク＜特別タスクである。
【００６８】
図８に示されるフローチャートおよび図９に示されるタスク切り替えシーケンス（退避）を用いて、本変形例における旧タスクと新タスクと特別タスクとの間でのタスクの切り替えおよびそれに伴う退避処理を説明する。
【００６９】
Ｓ３０１で、ＣＰＵ１１１は、特別タスクのタスク情報をタスク情報保持部３１２に登録する。図６の例では、タスクＩＤ「１１」のタスクが旧タスク、タスクＩＤ「２２」のタスクが新タスク、タスクＩＤ「３３」のタスクが特別タスクである。図２の例では、ＤＲＡＭ１１３の退避領域２０６において、特別タスクに領域２１２が割り当てられている。特別タスクに割り当てられた領域２１２には、特別タスクに対応した個別コマンドリストが格納されている。なお、特別タスクのタスク情報に含まれるパラメータ退避コマンド数は、特別タスクの個別コマンドリストのコマンド数に対応している。特別タスクのタスク情報に含まれる退避領域ベースアドレスは、図２に示される特別タスクに割り当てられた領域２１２のベースアドレス２１４に対応している。
【００７０】
Ｓ３０２で、タスクの優先度が比較される。本変形例では、実行中の新タスクの優先度と、特別タスクの優先度と、が比較される。新タスクの優先度よりも特別タスクの優先度のほうが高いため、処理はＳ３０４に移る。Ｓ３０４で、タスク切り替えシーケンス（退避）が実行される。ここからは、図９に示されるタスク切り替えシーケンス（退避）を参照して、新タスクから特別タスクに切り替える動作を説明する。重複する説明は適宜省略する。
【００７１】
まず、図９に示されるＳ４０１〜Ｓ４０３で、新タスクのタスク情報が更新される。ここで更新されるタスク情報は、図６に示されるタスクＩＤ「２２」の新タスクのコマンドリストポインタと画像データアドレスと画像データ数とを含む。Ｓ４０４で、ベースコマンドリストが設定される。具体的には、図３（ｂ）に示されるパラメータ設定コマンド６８１に、図６に示される新タスクの退避領域ベースアドレスと、パラメータ退避コマンド数と、が設定される。なお、ここで設定される退避領域ベースアドレスは、例えば図２に示される退避領域２０６内の新タスクに割り当てられた領域２１０のベースアドレス２１６である。パラメータ退避コマンド数は、図２に示される新タスクの領域２１０に格納されている個別コマンドリストのコマンド数である。Ｓ４０５で、ベースコマンドリストが実行され、退避領域２０６内の新タスクに割り当てられた領域２１０に格納されている個別コマンドリストのコマンドが読み出される。そして、Ｓ４０６〜Ｓ４１０で、新タスクに対応する画像処理部１１６のパラメータがＤＲＡＭ１１３に退避される。
【００７２】
ここからは、図１０に示されるタスク切り替えシーケンス（復帰）を参照して、特別タスクの処理が終了した後、新タスクの処理を復帰するための動作を説明する。重複する説明は適宜省略する。
【００７３】
まず、Ｓ５０１で、処理制御部３１０は終了した特別タスクのタスク情報をタスク情報保持部３１２から削除する。Ｓ５０２で、処理制御部３１０はベースコマンドリストを設定するか更新する。具体的には、処理制御部３１０は、図３（ｂ）に示されるパラメータ設定コマンド６８０に、図６に示される新タスクのコマンドリストポインタを設定する。また、図３（ｂ）に示されるパラメータ設定コマンド６８１に、図６に示される新タスクの退避領域ベースアドレスと、パラメータ退避コマンド数と、を設定する。また、図３（ｂ）に示されるパラメータ設定コマンド６８２に、図６に示される新タスクの画像データアドレスと、画像データ数と、を設定する。Ｓ５０３でベースコマンドリストが実行され、Ｓ５０４で新タスクの通常コマンドリストの復帰がなされ、Ｓ５０５〜Ｓ５０７で新タスクのパラメータの復帰がなされ、Ｓ５０８で新タスクの画像データアドレスの復帰がなされる。そして、新タスクの処理が実行される。
【００７４】
このように、３つ以上のタスクの処理要求が発生したとしても、ベースコマンドリストを共通に使用することができる。受け入れ可能なタスクの数はタスク情報保持部３１２の容量に依存してもよい。
【００７５】
（第２の実施の形態）
第１の実施の形態では、ベースコマンドリストをタスク切り替え前に実行することで旧タスクのパラメータの退避および復帰を可能とし、それによって時間を短縮できることを説明した。第２の実施の形態では、特許文献１に代表される方法を組み入れることで、さらに時間を短縮できる例を説明する。
【００７６】
本実施の形態の基本的なタスク切り替えシーケンスの全体フローは図８に示される全体フローと同様である。ただし、本実施の形態では、Ｓ３０１で、パラメータの送信領域ベースアドレスを追加でタスク情報保持部３５０に格納する。図１１は、第２の実施の形態に係るタスク情報保持部３５０の一例を示すデータ構造図である。送信領域ベースアドレスは、例えば、ＤＲＡＭ１１３において、新タスクのパラメータを設定するためのパラメータ設定コマンドが格納されている領域の先頭アドレスである。なお、理解しやすいように、送信領域ベースアドレスと退避領域ベースアドレスとは別のアドレスであることを前提に説明するが、同じであっても構わない。その場合、どちらか一方は不要であることは言うまでもない。
【００７７】
図１２は、第２の実施の形態に係るタスク切り替えシーケンス（退避）における一連の処理の流れを示すフローチャートである。処理制御部３１０は、第１格納部３４１に保持されているベースコマンドリストを設定または更新する（Ｓ４５０）。図１３は、第２の実施の形態に係るベースコマンドリスト６０４の一例を示す模式図である。ベースコマンドリスト６０４は、タスク切り替えシーケンス(退避)に必要なコマンドリストであり、図３（ｂ）を参照して説明したパラメータ設定コマンド６８１およびＤＲＡＭアクセスコマンド６８３に加えて、更なるパラメータ設定コマンド６８６を有する。第１の実施の形態と同様、パラメータ設定コマンド６８１には、旧タスクのタスク情報を基に旧タスクが中断されたときの退避領域ベースアドレスとパラメータ退避コマンド数とが設定される。更なるパラメータ設定コマンド６８６には、新タスクのパラメータの送信領域ベースアドレスが設定される。
【００７８】
図１２に戻り、Ｓ４５０でのベースコマンドリストの設定が完了すると、処理制御部３１０はベースコマンドリストを実行する（Ｓ４５１）。実行される順番は、図１３に示される「処理方向」の順番である。すなわち、処理制御部３１０は、パラメータ設定コマンド６８６、パラメータ設定コマンド６８１、ＤＲＡＭアクセスコマンド６８３、をこの順序で実行する。これにより、パラメータ設定コマンド６８６を介してＤＲＡＭ１１３の送信領域から、新タスクのパラメータを設定するためのパラメータ設定コマンドが読み出され、第２格納部３４２に一時的に格納される（Ｓ４５２）。パラメータ設定コマンド６８１を介してＤＲＡＭ１１３の指定アドレスから個別コマンドリストが読み出され、第２格納部３４２に一時的に格納される（Ｓ４５２）。処理制御部３１０は、送信領域からのパラメータ設定コマンドおよび個別コマンドリストに含まれるコマンドから、新タスクで設定すべきパラメータと旧タスクで退避すべきパラメータとが同じとなる組を抽出して合成する。処理制御部３１０は、合成の結果得られるパラメータ設定コマンドのタイプ（例えば、図４のタイプ６１３）をライト・リードタイプに設定する。これは、画像処理部１１６における旧タスクのパラメータをリードし、且つ新タスクのパラメータをライト（設定）するためである。処理制御部３１０は、このように合成されたパラメータ設定コマンドを順番に実行することで、画像処理部１１６における旧タスクのパラメータをリードし、かつ新タスクのパラメータをライト（設定）する（Ｓ４５３）。
【００７９】
本実施の形態に係る複合機によれば、パラメータ設定コマンドのタイプをライト・リードタイプに設定することで、ひとつのコマンドでパラメータの設定と退避とが可能になる。これにより、新タスクと旧タスクとで設定すべきパラメータと退避すべきパラメータとが同じである必要はあるが、タスク切り替え時のパラメータの設定と退避に係る時間を短縮できるので、処理性能が改善する。
【００８０】
（第３の実施の形態）
第１の実施の形態の図８に示されるタスク切り替えシーケンス（全体）では、新タスクの割り込みが発生すると、処理制御部３１０が新タスクの優先度と旧タスクの優先度とを比較し、即座に旧タスクを退避させるタスク切り替えシーケンス（退避）を実行する。つまり、図３（ａ）に示される通常コマンドリスト６０１と、図３（ｂ）に示されるベースコマンドリスト６０２と、には相関がない。第３の実施の形態では、デバッグの容易化やシステムの高速化を実現するため、通常コマンドリストとベースコマンドリストとに相関を持たせて、タスク切り替えを実行する。例えば、画像を分割して処理する場合（以下、分割の結果得られる画像をバンド画像と称す）、図３（ａ）に示されるパラメータ設定コマンド６１０から分岐コマンド６５０までが、バンド画像を処理するためのシーケンスの１単位となる。この場合、バンド画像に係る１単位の画像処理が終わるタイミング（分岐コマンド６５０）でタスク切り替えを実施したほうが、システム全体として高速化できる。なぜならば、画像処理されたバンド画像を別の処理に使用できるからである。
【００８１】
図１４は、第３の実施の形態に係るタスク切り替えシーケンス（全体）における一連の処理の流れを示すフローチャートである。新タスクの割り込みが発生した場合、新タスクの優先度と旧タスクの優先度とを比較し、新タスクの優先度のほうが高い場合、処理制御部３１０は実行中の通常コマンドリストのポインタを参照する。処理制御部３１０は、参照されたポインタが示すコマンドが分岐コマンド６５０であるか否かを判定する（Ｓ３１０）。ポインタが示すコマンドが分岐コマンド６５０でない場合、まだバンド画像の処理が終了していないと判断されるため、処理制御部３１０はそのポインタが示すコマンドを実行する（Ｓ３１１）。処理制御部３１０は、ポインタを次のコマンドを指すように更新し（Ｓ３１２）、処理をＳ３１０に戻す。処理制御部３１０はポインタが示すコマンドが分岐コマンド６５０になるまでＳ３１０〜Ｓ３１２を繰り返す。Ｓ３１０で、ポインタが示すコマンドが分岐コマンド６５０となった場合、バンド画像の処理が終了したと判断される。そのため、処理はＳ３０４に進み、以降は第１の実施の形態で説明したＳ３０４〜Ｓ３０７が実行される。この時、処理制御部３１０は、実行するコマンドを指すポインタを、通常コマンドリストの分岐コマンド６５０から、図３（ｂ）に示されるベースコマンドリスト６０２の先頭のコマンドに移動させ、実行を開始する。
【００８２】
本実施の形態では、図１４に示されるＳ３０２の後にＳ３１０を行っているが、処理の順序を逆にしてもよい。即ち、バンド画像の処理が終了した段階で、新タスクの優先度と旧タスクの優先度とを比較し、新タスクの優先度が高い場合は、Ｓ３０４〜Ｓ３０７を実行してもよい。また、本実施の形態では、タスク切り替えタイミングが分岐コマンド６５０である場合を説明したが、これに限られない。
【００８３】
本実施の形態に係る複合機によれば、通常コマンドリストとベースコマンドリストとに相関を持たせてタスク切り替えを実施することで、システム全体の高速化を達成できる。
【００８４】
以上、実施の形態に係る複合機の構成と動作について説明した。これらの実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００８５】
第１から第３の実施の形態では、ＤＲＡＭ１１３をコマンドリスト領域２０２と画像データ領域２０４と退避領域２０６とに分ける場合について説明したが、これに限られず、データの欠落がない限り領域を分けなくてもよい。
【００８６】
第１から第３の実施の形態では、ベースコマンドリストを実行することによってＤＲＡＭ１１３から個別コマンドリストを読み出す場合を説明したが、これに限られない。例えば、全てのタスクに亘って個別コマンドリストが同じ内容であれば、ベースコマンドリストに直接、同じ内容の個別コマンドリストを記載してもよい。例えば、図３（ｂ）に示されるパラメータ設定コマンド６８１およびＤＲＡＭアクセスコマンド６８３を、図３（ｃ）に示されるパラメータ設定コマンド６７０で置き換えてもよい。この場合、ＤＲＡＭアクセスの時間を短縮することができる。
【００８７】
第１から第３の実施の形態では、旧タスクの画像処理が実行されているときに新タスクが発生する場合について説明したが、これに限られず、画像処理の実行中以外で新タスクが発生する場合にも、実施の形態の技術的思想を適用することができる。例えば、画像処理の開始前であれば、タスク情報保持部３１２に保持されるタスク情報の画像データアドレスは、画像の先頭アドレスであり、画像の先頭から転送が始まる。一方、画像処理の終了後であれば、画像データ数が０になるため、画像転送は行われない。
【００８８】
第１から第３の実施の形態では、ベースコマンドリストは第１格納部３４１に保持される場合を説明したが、これに限られず、例えばＤＲＡＭ１１３に保持しておき、処理制御部３１０がそれを直接読み出してもよい。
【００８９】
第１から第３の実施の形態では、個別コマンドリストが予めコマンド化された状態でＤＲＡＭ１１３に格納されている場合を説明したが、これに限られず、例えば、コマンドに係るデータのみがＤＲＡＭ１１３に格納されていてもよい。この場合、個別コマンドリスト（データのみ）を読み出した後、読み出されたデータはコマンド生成部３２４にてコマンド化される。コマンド化の結果得られるコマンドは、リードタイプまたはライト・リードタイプであることを示すヘッダを含む。
【００９０】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００９１】
１００  複合機、  １１０  制御部、  １２０  スキャナ、  １３０  プリンタ、  １１１  ＣＰＵ、  １１２  ＲＯＭ、  １１３  ＤＲＡＭ、  １１６  画像処理部。
【図１】
2020102665.tif 000003
【図２】
2020102665.tif 000004
【図３】
2020102665.tif 000005
【図４】
2020102665.tif 000006
【図５】
2020102665.tif 000007
【図６】
2020102665.tif 000008
【図７】
2020102665.tif 000009
【図８】
2020102665.tif 000010
【図９】
2020102665.tif 000011
【図１０】
2020102665.tif 000012
【図１１】
2020102665.tif 000013
【図１２】
2020102665.tif 000014
【図１３】
2020102665.tif 000015
【図１４】
2020102665.tif 000016