画像のデータを入力する入力部と、処理されたデータに基づいて画像を形成する出力部と、1前記入力部および前記出力部を制御する入出力インターフェイス部、2入力されたデータを処理し、かつ、前記入出力インターフェイス部を制御する制御部としてのCPU、および3前記制御部が実行する制御プログラムであって、処理および制御の対象に応じてモジュール化された複数の制御プログラムを格納する不揮発性記憶部が一体に構成された画像処理ユニットと、処理されたデータを格納する画像記憶部と、外部の機器と前記データを送受信する通信部とを備え、1つまたは2つの前記画像処理ユニットを有してなり、前記制御部は、データを処理する前に1つの画像処理ユニットのみを有する構成か2つの画像処理ユニットを有する構成かを認識し、2つの画像処理ユニットを有するとき、一方の画像処理ユニットの制御部は、どの処理および制御を他方の画像処理ユニットで行わせるかを決定することを特徴とする画像処理装置。一方の画像処理ユニットの制御部は、一方の不揮発性記憶部に予め格納された制御プログラムのうち他方の画像処理ユニットで行わせる処理および制御に係る制御プログラムを他方のユニットの不揮発性記憶部に転送する請求項1に記載の画像処理装置。一方の画像処理ユニットの制御部は、前記入出力インターフェイス部、前記画像記憶部および前記通信部に係るデータ転送の単位サイズの大小に基づいて、どの処理および制御を他方の画像処理ユニットで行わせるかを決定する請求項1または2に記載の画像処理装置。前記入出力インターフェイス部、前記画像記憶部および前記通信部に係るデータ転送の単位サイズは、予め定められており、一方および他方のいずれの画像処理ユニットでもそれらのデータ転送が可能であり、一方の画像処理ユニットの制御部は、前記単位サイズが予め定められた閾値以上のものを他方の画像処理ユニットで行わせると決定する請求項3に記載の画像処理装置。一方の画像処理ユニットの制御部は、各制御プログラムのCPU占有率の大小に基づいてどの処理および制御を他方の画像処理ユニットで行わせるかを決定する請求項1または2に記載の画像処理装置。一方の画像処理ユニットの不揮発性メモリは、各制御プログラムのCPU占有率の測定値を予め格納し、一方の画像処理ユニットの制御部は、各制御プログラムのうちCPU占有率が予め定められた閾値以上のものを他方の画像処理ユニットに実行させることを決定する請求項5に記載の画像処理装置。前記測定値は、一つの画像処理ユニットのみを有する構成において各制御プログラムを実行して得られる測定値である請求項6に記載の画像処理装置。しかし、従来の構成では、低速機と高速機でコントローラ部に共通のものが適用できたとしても、要求される処理能力が異なる各機能部分を共通化することはむずかしい。さらに、低速機と高速機とで各機能部分の処理能力が大きく異なると、共通のコントローラ部を用いることについても無駄が生じる。即ち、低速機では、コントローラ部の処理能力に余裕がありすぎることになる。低速機と共通の画像処理ユニットを2つ用いて高速機に供給される処理能力を実現し、しかも、CPUが自律的に各画像処理ユニットの処理を決定することができれば、便宜である。また、低速機と高速機で同じ画像処理ユニットおよびソフトウェアモジュールを適用することができれば、個別のハードウェアおよびソフトウェアを開発している従来の手法に比べて開発工数の削減を図ることができ、コスト的にも有利である。なお、ASICの異なる態様として、CPUを除く各回路を集積したASICを単体のCPUと共に用いる構成も考えられる。この場合、CPUとASICは別体で実装されるが、機能的には両者で一対のものとして画像処理ユニットに用いられる態様と考えられ、この発明に含まれる。この発明は、以上のような事情を考慮してなされたものであって、要求される処理能力に応じて画像処理ユニットを1つあるいは2つ用いる構成において、構成に応じてソフトウェアモジュールの分散を決定する手法を提供するものである。この発明は、画像のデータを入力する入力部と、処理されたデータに基づいて画像を形成する出力部と、1前記入力部および前記出力部を制御する入出力インターフェイス部、2入力されたデータを処理し、かつ、前記入出力インターフェイス部を制御する制御部としてのCPU、および3前記制御部が実行する制御プログラムであって、処理および制御の対象に応じてモジュール化された複数の制御プログラムを格納する不揮発性記憶部が一体に構成された画像処理ユニットと、処理されたデータを格納する画像記憶部と、外部の機器と前記データを送受信する通信部とを備え、1つまたは2つの前記画像処理ユニットを有してなり、前記制御部は、データを処理する前に1つの画像処理ユニットのみを有する構成か2つの画像処理ユニットを有する構成かを認識し、2つの画像処理ユニットを有するとき、一方の画像処理ユニットの制御部は、どの処理および制御を他方の画像処理ユニットで行わせるかを決定することを特徴とする画像処理装置を提供する。この発明において、制御部は、データを処理する前に1つの画像処理ユニットのみを有する構成か2つの画像処理ユニットを有する構成かを認識し、2つの画像処理ユニットを有するとき、一方の画像処理ユニットの制御部は、どの処理および制御を他方の画像処理ユニットで行わせるかを決定するので、1つの画像処理ユニットのみを有する低速機の構成と2つの画像処理ユニットを有する高速機の構成とで画像処理ユニットおよびソフトウェアモジュールを共通化できる。さらに、2つの画像処理ユニットを有する高速機の構成においては、一方の画像処理ユニットの制御部が、どの処理および制御を他方の画像処理ユニットで行わせるかを決定するので、一方と他方の画像処理ユニットでそれぞれ処理および制御する内容が自律的に決定される。即ち、2つの画像処理ユニットを有する構成においては、一方と他方の画像処理ユニットで実行するソフトウェアモジュールの構成が自律的に決定され、分散される。よって、低速機と高速機とで共通の画像処理ユニットが使用できるとともに、共通のソフトウェアモジュールを使用することができ、全体として開発工数やコストの低減が可能となる。この発明において、入力部は、画像を読取ってそのデータを入力するものである。具体例は、原稿の画像を読取るイメージスキャナである。後述する実施形態におけるイメージスキャナ部は、この発明の入力部に該当する。ただし、イメージスキャナの他にも画像を読取るものであれば特に限定されない。また、出力部は、後述する画像処理ユニットで処理された画像のデータに基づいて、画像を形成するものである。具体的な態様は、電子写真方式のプリンタエンジンである。ただし、画像を形成するものであれば特にその態様は限定されない。また、画像を形成する手法は、電子写真方式に限定されない。後述する実施形態のプリンタエンジン部は、この発明の出力部に該当する。入出力インターフェイス部は、入力部および出力部の動作を制御する回路である。入力部および出力部は、動作を制御するために各種のセンサ、スイッチ、検出器を備えており、入出力インターフェイス部は、それらのものから信号を受領する。また、入力部および出力部は、動作を制御するために各種のアクチュエータ、モータ等を備えており、入出力インターフェイス部は、それらのものを制御し動作させる信号を出力する。後述する実施形態の入出力インターフェイスは、この発明の入出力インターフェイス部に該当する。画像処理ユニットは、前記入出力インターフェイス部としての回路の他、CPUおよび不揮発性メモリを備える。それ以外に、図1のASICの構成に示すようにRAMを備えていてもよい。また、図示していないが、画像のデータに対して特定の処理を行うためのハードウェアを備えていてもよい。特定の処理とは、例えば、画像の回転、拡大および縮小、色変換、尖鋭化やノイズ除去を目的とする画像フィルタ処理である。これらの画像処理用ハードウェアは周知であるので、これ以上の説明は省略する。後述する実施形態のCPUは、この発明の制御部に該当する。画像処理ユニットは、具体的にはLSI大規模集積回路として一つのパッケージに実装され、ASICとして提供されてもよい。後述する実施形態のASICは、この発明の画像処理ユニットの全部または一部に該当する。画像記憶部は、画像のデータを格納するものであって、その具体的な態様としてはハードディスクドライブ装置やフラッシュメモリが挙げられる。ただし、データを格納できるものであれば、これらの装置、素子限定されない。後述する実施形態で、HDDユニットはこの発明の画像機億部に該当する。通信部は、外部の機器とデータを送受するための回路である。通信の方式や形態は問わない。有線の通信に限らず無線でもよい。後述する実施形態において、ネットワーク通信デバイスが通信部に該当する。また、周辺機器との間の通信を担うシリアル通信デバイスも通信部に該当する。以下、この発明の好ましい態様について説明する。一方の画像処理ユニットの制御部は、一方の不揮発性記憶部に予め格納された制御プログラムのうち他方の画像処理ユニットで行わせる処理および制御に係る制御プログラムを他方のユニットの不揮発性記憶部に転送してもよい。このようにすれば、処理するサイズにより動作させるASICを分けることで、Tサイズ未満のデータ処理のソフトオーバヘッド時間を最小限にすることができる。また、一方の画像処理ユニットの制御部は、前記入出力インターフェイス部、前記画像記憶部および前記通信部に係るデータ転送の単位サイズの大小に基づいて、どの処理および制御を他方の画像処理ユニットで行わせるかを決定してもよい。このようにすれば、データ転送の単位サイズの大小に基づいて処理を行う画像処理ユニットを分けることで、データ転送に係るCPUの処理負担が大きい処理を一方の画像処理ユニットで分担し、多量のデータ転送を行う処理を他方の画像処理ユニットに分担させて要求される性能を満足することができる。さらに、前記入出力インターフェイス部、前記画像記憶部および前記通信部に係るデータ転送の単位サイズは、予め定められており、一方および他方のいずれの画像処理ユニットでもそれらのデータ転送が可能であり、一方の画像処理ユニットの制御部は、前記単位サイズが予め定められた閾値以上のものを他方の画像処理ユニットで行わせると決定してもよい。このようにすれば、予め定められたデータ転送の単位サイズに応じてソフトウェアモジュールの分散を決定することができる。一方の画像処理ユニットの制御部は、各制御プログラムのCPU占有率の大小に基づいてどの処理および制御を他方の画像処理ユニットで行わせるかを決定してもよい。このようにすれば、CPU占有率の大きい処理を他方の画像処理ユニットに分担させて要求される性能を満足するように処理し、他の処理を一方の画像処理ユニットで分担して他方の画像処理ユニットに負担をかけないように処理を分散できる。さらに、一方の画像処理ユニットの不揮発性メモリは、各制御プログラムのCPU占有率の測定値を予め格納し、一方の画像処理ユニットの制御部は、各制御プログラムのうちCPU占有率が予め定められた閾値以上のものを他方の画像処理ユニットに実行させることを決定してもよい。このようにすれば、予め測定に基づいて定められたCPU占有率に応じてソフトウェアモジュールの分散を決定することができる。前記測定値は、一つの画像処理ユニットのみを有する構成において各制御プログラムを実行して得られる測定値であってもよい。この発明の好ましい態様は、ここで示した複数の態様のうち何れかを組み合わせたものも含む。以下、図面を用いてこの発明をさらに詳述する。なお、以下の説明は、すべての点で例示であって、この発明を限定するものと解されるべきではない。≪画像処理ASICの構成≫図1は、この発明に係る画像処理ASICの構成を示す説明図である。aは低速機に1つ使用されるときの態様を示しており、bは高速機に2つ使用されるときの態様を示している。aのASIC11とbのASIC11Aおよび11Bは、いずれも同一の構成を有するASICである。即ち、aとbで対応する構成要素には同じ数字の符号を伏している。bの符号で、数字に続くアルファベットAおよびBは、2つのASICを区別するために付した記号である。以下の図面においても、同様の規則で符号を付している。aを例にASICの構成を説明する。ASIC11は、CPU13、不揮発性メモリ15、RAM19および入出力インターフェイス21を備える。CPU13は、ソフトウェアモジュールとしての制御プログラムを実行してハードウェア資源23を制御することにより、画像処理装置の機能を実現する。不揮発性メモリ15は、前記ソフトウェアモジュール、BIOSおよびCPU13が使用するデータを格納する。ソフトウェアモジュール格納部17は、不揮発性メモリ15の記憶領域のうち、前記ソフトウェアモジュールを格納する記憶領域のことである。なお、各ソフトウェアモジュールは、CPU13のリセット解除後、一旦RAM19にダウンロードされた状態でCPU13に参照される。不揮発性メモリ15の読み出し時間よりもRAM19の読み出し時間の方が短いためである。RAM19は、CPU13が実行する各ソフトウェアモジュールを格納すると共に、CPUが処理に用いるデータや画像データを格納する。入出力インターフェイス21は、ハードウェア資源23を制御するためのインターフェイス回路である。ハードウェア資源23の具体例は、図2で説明する。bに示すように、複数のASICを使用する高速機の構成において、ハードウェア資源23は基本的にいずれのASICからも制御可能なように各ASICに接続されている。その場合、一つのハードウェア資源は一つのASICによって制御されるように排他的に管理する必要がある。この発明は、各ハードウェア資源をASIC11Aおよび11Bの何れが管理するかをCPU13Aが自律的に判断する手法に関する。ただし、これが必須の構成要件というわけではなく、一部のハードウェア資源が特定のASICのみに接続されてもよい。その場合、接続されたASICのみが前記ハードウェア資源を制御できるので、この発明を適用するまでもなく排他的構成が決まる。よって、複数のASICに接続されるハードウェア資源が、この発明に係るハードウェア資源といえる。≪入出力インターフェイスとハードウェア資源との対応≫図2は、この発明の画像処理装置が低速機としての構成を有する場合、入出力インターフェイス21とハードウェア資源23の詳細を示す説明図である。図2に示すように、入出力インターフェイス21は、イサーネットインターフェイス25、USBインターフェイス27、汎用DMA29、画像処理DMA31およびHDDDMA33を備える。図2では、それらの各要素に接続されるハードウェア資源を示している。イサーネットインターフェイス25に対応するハードウェア資源は、ネットワーク通信デバイス35である。USBインターフェイス27に対応するハードウェア資源は、USBメモリデバイス37である。汎用DMA29に対応するハードウェア資源は、シリアル通信デバイス39および外部のASICである。画像処理DMA31に対応するハードウェア資源は、イメージスキャナ部43およびプリンタエンジン部45である。HDDDMA33に対応するハードウェア資源は、HDDユニット47である。以下に、各ハードウェア資源について説明する。まず、画像処理装置87として分かり易い、基本的なハードウェア資源はイメージスキャナ部43とプリンタエンジン部45であろう。イメージスキャナ部43は、画像処理装置がコピア、イメージスキャナおよびファクシミリとして機能する際に、原稿の画像を読取って画像データを出力する。画像処理DMA31は、出力された画像データをRAM19へ読み込むDMA転送を制御する。また、プリンタエンジン部45は、画像処理装置がコピア、プリンタおよびファクシミリとして機能する際に、画像データに基づいて印刷シートに画像を印刷する。画像処理DMA31は、その画像データを印刷する際に、RAM19からプリンタエンジン部45への画像データのDMA転送を制御する。HDDDMA33は、HDDハードディスクドライブユニットへの読み書きに係るDMA転送を制御する。即ち、RAM19からHDDユニット47への書き込みに係るDMA転送およびHDDユニット47からRAM19への読み出しに係るDMA転送である。イサーネットインターフェイス25は、ネットワークを介したデータの送受信を制御する。ネットワークを介した通信は、例えば、画像処理装置がプリンタ、スキャナおよびファクシミリとして機能する際に行われる。プリンタの場合は、ネットワークを介して接続されたホストコンピュータから印刷データおよび印刷に係る指示を受信する。スキャナの場合は、ネットワークを介したコンピュータへ読取られた原稿の画像を送信する。ファクシミリの場合は、インターネットファックスとして画像データの送信および受信を行う。図2のネットワーク通信デバイス35は、前述のホストコンピュータおよび端末コンピュータとの通信インターフェイス回路を指す。画像処理装置87には、ユーザーがUSBメモリを装着するためのUSBコネクタが設けられている。ユーザーは所定の印刷データあるいは画像データが格納されたUSBメモリをそのUSBコネクタに装着し、プリンタエンジン部45を用いて前記印刷データあるいは画像データを印刷することができる。また、イメージスキャナ部43で読取った原稿の画像を前記USBコネクタに装着されたUSBメモリに格納することができる。USBインターフェイス27は、USBメモリへの読み書きを制御する。図2のUSBメモリデバイス37は、前述のUSBメモリを装着するコネクタおよびインターフェイス回路を指す。シリアル通信デバイス39は、例えば、オプションで画像処理装置87に装着される自動原稿送り装置や後処理装置など周辺機器との間のシリアル通信を制御するインターフェイス回路である。また、汎用DMA29は、ネットワークを介して受信した通信データを他のASICへDMA転送する制御を行う。次の図3では、ASIC11AからASIC11Bへ通信データをDMA転送する制御を、汎用DMA29Aが行う。以上、ソフトウェアモジュールの分散に特に関係の深いハードウェア資源を挙げて説明した。図3は、この発明の画像形成装置が高速機としての構成を有する場合、入出力インターフェイス21とハードウェア資源23の詳細を示す説明図である。図3は、図1bに対応する構成であり、図2の低速機が1つのASICでハードウェア資源23を制御するのに対して、2つのASIC11Aおよび11Bを用いてハードウェア資源23を制御している。即ち、ASIC11Aの入出力インターフェイス21Aは、ネットワーク通信デバイス35、USBメモリデバイス37およびシリアル通信デバイス39の制御を行う。汎用DMA29Aは、ネットワーク通信デバイス35から受信した通信データをASIC11BへDMA転送する制御を行う。なお、画像処理DMA31AおよびHDDDMA33Aは、使用しない。ASIC11Bの入出力インターフェイス21Bは、イメージスキャナ部43、プリンタエンジン部45およびHDDユニット47を制御する。なお、イサーネットインターフェイス25B、USBインターフェイス27Bおよび汎用DMA29Bは使用しない。≪入出力インターフェイスとソフトウェアモジュールとの対応≫次に、ソフトウェアモジュールの構成について説明する。図4は、この発明の画像形成装置が低速機としての構成を有する場合のソフトウェアモジュール構成の一例を示す説明図である。図4に示すように、ソフトウェアモジュールは階層的に構成されている。下位の階層として、ハードウェアの制御に関連するデバイスドライバ51、リアルタイムOS63、CPU間通信処理65がある。その階層から上の階層に向かうにつれて高い抽象度のモジュールが配置されている。まず、画像処理ミドルウェア67、ファイルシステムミドルウェア69、プリンタ画像処理71および表示描画処理73がある。その上層には、画像ハンドリングサービス75がある。さらに、その上位にコピア77、プリンタ79、スキャナ81およびファックス83があり、最上位にユーザーインターフェイス85がある。リアルタイムOS63は、CPU13がマルチタスク環境で各ソフトウェアモジュールを実行する仕組みを提供するオペレーティングシステムである。リアルタイムOS63は、周知のものが適用される。幾種類かのリアルタイムOSが市場で入手可能であり、リアルタイムOSに関する技術資料も発行されている。例えば、TRONTheRealtimeOperatingSystemNucleus使用に関する技術資料である。各ソフトウェアモジュールはそれぞれ独立した処理の単位、言い換えると一つのプロセスである。各プロセスは、一以上のタスクに分割される。各タスクは、CPUが処理を実行する単位である。デバイスドライバ51は、ハードウェアを用いた入出力制御を行うソフトウェアモジュールである。ハードウェア資源23に対応する入出力インターフェイス21の各要素を制御する。デバイスドライバ51は、制御する各要素に対応してネットワークドライバ53、USBドライバ55、DMAドライバ57、画像処理ドライバ59およびHDDドライバ61を含む。ネットワークドライバ53は、イサーネットインターフェイス25を制御するソフトウェアモジュールである。USBドライバ55は、USBインターフェイス27を制御するソフトウェアモジュールである。さらにDMAドライバ57は汎用DMA29を、画像処理ドライバ59は、画像処理DMA31を、HDDドライバ61はHDDDMA33をそれぞれ制御するソフトウェアモジュールである。CPU間通信処理65は、CPU13と他のCPUとの通信を制御するソフトウェアモジュールである。例えば、自動原稿送り装置や後処理装置などのオプション機器がその機器を制御する専用のCPUを有する場合、それらのオプション機器を制御するCPUとの通信を制御する。また、図5に示す高速機の構成において、ASICの間の通信を制御する。CPU間通信処理65は、入出力制御を行うソフトウェアモジュールといえる。これより上位層のソフトウェアモジュールは、ハードウェア制御から独立したCPU処理である。まず、画像処理ミドルウェア67は、画像処理ドライバ59を制御して、イメージスキャナ部43からの画像データを取り込み、プリンタエンジン部45に出力するための画像データを処理する。また、ファイルシステムミドルウェア69は、画像処理ドライバ59を使用して読み込まれた画像を圧縮し、HDDドライバ61を使用して、HDDユニット47へデータ保存を行い、また、保存したデータをHDDユニット47から読み出す処理を行う。プリンタ画像処理71は、ネットワーク通信デバイス35より入力されたプリンタ記述言語PDLデータを解析し、ビットマップ画像をメモリに展開する処理を行う。表示描画処理73は、画像処理装置87の操作部に配置される図示しないディスプレイ装置に、イメージスキャナ部43が読み込んだ原稿の画像をプレビュー機能として表示する。さらに、画像ハンドリングサービス75は、イメージスキャナ部43、プリンタエンジン部45とシリアル通信デバイス39を介して通信を行い、原稿画像の読み取りを実行して、画像データを取り込むために、画像処理ミドルウェア67を呼び出して、画像の読み込みをページ単位で実行を行う。また、読み込まれた画像データをプリンタエンジン部45へ出力して、印刷シートに画像を形成するために画像処理ミドルウェア67を呼び出して、出画像の出力をページ単位で処理する。また、コピア77、プリンタ79、スキャナ81およびファックス83は、コピア、プリンタ、スキャナおよびファックスとしてのジョブの設定、開始、終了、中断、再開を制御する。ユーザーインターフェイス85は、前述のディスプレイ装置に画像処理装置87の設定や状態を表示させる制御を行い、さらに、そのディスプレイ装置上に配置されるタッチパネルや操作パネルに配置される操作キーを用いたユーザーの操作を検出し、操作に応じた処理を行う。図5は、この発明の画像形成装置が高速機としての構成を有する場合のソフトウェアモジュール構成の一例を示す説明図である。図5は、図3に対応する構成であり、図4の低速機が1つのASICでハードウェア資源23を制御するのに対して、2つのASIC11Aおよび11Bを用いてハードウェア資源23を制御している。即ち、ASIC11AのCPU13Aは、デバイスドライバ51Aとしてネットワークドライバ53A、USBドライバ55A、DMAドライバ57Aを実行する。さらに、画像処理ミドルウェア67Aとファイルシステムミドルウェア69Aを実行する。ネットワークドライバ53Aは、イサーネットインターフェイス25Aを制御する。USBドライバ55Aは、USBインターフェイス27Aを制御する。これに対し、ASIC11BのCPU13Bは、デバイスドライバ51Bとして画像処理ドライバ59BおよびHDDドライバ61Bを実行する。さらに、プリンタ画像処理71B、表示描画処理73B、画像ハンドリングサービス75B、コピア77B、プリンタ79B、スキャナ81B、ファックス83Bおよびユーザーインターフェイス85Bを実行する。画像処理ドライバ59Bは、画像処理DMA31Bを制御する。HDDドライバ61Bは、HDDDMA33Bを制御する。ただし、リアルタイムOSとCPU間通信処理は、両方のCPUがそれぞれ実行する。CPU13AはリアルタイムOS63AおよびCPU間通信処理65Aを実行し、CPU13BはリアルタイムOS63BおよびCPU間通信処理65Bを実行する。以上のように、高速機の構成ではASIC11Aと11Bがソフトウェアモジュールの実行を分担し、それぞれのCPUに過度の負荷がかからないように協働する。≪ソフトウェアモジュールの並列処理≫次に、図5に示す高速機の構成で、CPU13AがASIC11Aおよび11Bで処理するソフトウェアモジュールの分担を決定する手順を説明する。図3に示すように、画像処理装置87のASIC11Aは、ソフトウェアモジュール格納部17Aを備えている。ソフトウェアモジュール格納部17Aは、画像処理装置87が必要とする各ソフトウェアモジュールを予め格納している。画像処理装置87の電源が投入され、リセットが解除されてCPU13Aが処理を開始すると、CPU13Aは、初期化処理において、低速機の構成か高速機の構成かの判定を行う。即ち、自身のASIC11Aの他にASIC11Bが存在するか否かを確認する。確認は、CPU間通信処理65Aの処理の中で、ASIC11Bからの応答があるか否かを調べることによって実現される。一方、ASIC11Bにおいては、リセット解除後にCPU13Bは、ASIC11Bの最小限の初期化処理およびリアルタイムOS63B、CPU間通信処理65Bを実行する。そして、ASIC11AとCPU間通信が行える状態で、前記応答をCPU11Aに返して待機する。CPU11Bからの応答を受信すると、CPU13Aは、高速機の構成であると判断し、ASIC11Bにソフトウェアモジュール格納部17Aに格納されたソフトウェアモジュールの制御プログラムを転送する。ASIC11Aから制御プログラムを受信すると、CPU13Bは、受信した制御婦グラムを不揮発性メモリ15Bに格納する。その後、実行すべきソフトウェアモジュールの制御プログラムをRAM19Bにダウンロードし、ダウンロードした制御プログラムを実行する。各ソフトウェアモジュールの処理のうち初期化処理の部分を実行して、各ソフトウェアモジュールが処理待ちの状態になると、CPU13Bは、その旨をASCI11Aに通知する。通知を受けたASIC11AのCPU13Aは、ASIC11Aおよび11Bの各ソフトウェアモジュールとタスク間の通信を開始し、協働して画像処理装置87をジョブ開始待ちの待機状態にする。待機状態でジョブ開始の指示を受けると、それに応答して指示されたジョブを実行する。図6は、この発明の画像処理装置が高速機としての構成を有する場合に、2つのASICが協働することにより全体の処理能力が向上する様子を示す説明図である。図6aは、図4に示す低速機としての構成に対応する。図6bは、図5に示す高速機としての構成に対応する。図6で、入出力制御は、デバイスドライバ51に属する何れかのプロセスの一つのタスクかあるいはCPU間通信処理65の一つのタスクである。即ち、入出力制御は、例えばCPU間通信処理65のタスクである。あるいは、画像処理ドライバ59のタスクである。CPU処理αおよびβは、それより上位の何れかのソフトウェアモジュールである。例えば、CPU処理αは画像処理ミドルウェア67の一つのタスクであり、CPU処理βはコピア77の一つのタスクである。あるいは、CPU処理αはユーザーインターフェイス85の一つのタスクであり、CPU処理βは表示描画処理73の一つのタスクである。各タスクのうちCPU処理αおよびβの実行中はCPU13が占有され、入出力制御の実行中はCPU13および制御対象のハードウェア資源23および対応する入出力インターフェイスが占有される。なお、入出力制御にかかるプロセスの中には、DMA転送を行うものが含まれておりDMA転送中、CPU資源は厳密にいえば占有されない。しかし、バスが占有されるためにCPUは、RAM19に格納された制御プログラムの命令フェッチを前記DMA転送と並行して進めることができない。即ち、処理を大きく先へ進めることができない。この観点から、入出力制御の実行中はCPU13が占有されるとみなすことができる。図6aに示すように、低速機の構成ではASIC11が一つしかないので、各タスクは順次実行される。一方、図6bの例では、CPU処理αをASIC11AのCPU13Aが実行している間に、並行してASIC11BのCPU13Bが入出力制御を実行することができる。なお、CPU処理βは、ASIC11Aが処理するので、CPU処理αの実行後に処理される。aとbを比較すると、CPU処理αと並行処理された入出力制御の処理時間分だけ全体としての処理能力が向上したといえる。図4に示す低速機の構成において、ASIC11は、ユーザーインターフェイス85を実行してディスプレイ装置にジョブの設定や画像処理装置87の状態を表示させる。さらに、ネットワークドライバ53を実行してネットワーク通信デバイス35の先にあるネットワークを介して外部の端末コンピュータから印刷データを取り込む。また、プリンタ画像処理71を実行して前記印刷データを展開する。そして、また、画像処理ミドルウェア67を実行してプリンタエンジン部45の画質補正に係る画像処理を実行する。CPU13は、リアルタイムOS63の環境下でこれらのプロセスをタスク単位の短い実行時間で切り換えて交互に実行するので、ユーザーからは、各プロセスが並列処理されているようにみえる。図6に示すよりも長期間にわたりASIC11が行う処理を巨視的に見た場合に、交互に実行される各プロセスが並列処理に見えるということである。即ち、ユーザーインターフェイス85、ネットワークドライバ53、プリンタ画像処理71および画像処理ミドルウェア67の各プロセスが並列処理されているように見える。ところが、高速機は低速機に比べて同じ期間に大量のデータを処理しなければならない。そのため、高速機に要求される処理能力に、ASIC11の処理速度が追いつかなくなる。この問題を解決するために、ASIC11Aと11Bに機能を分散化することで、高速機としての処理能力を実現している。ASIC11Aは、ネットワークドライバ53および画像処理ミドルウェア67のプロセスを実行し、ASIC11Bは、ユーザーインターフェイス85およびプリンタ画像処理71のプロセスを実行する。CPU13Aは、初期化処理において、ユーザーインターフェイス85およびプリンタ画像処理71に係る制御プログラムをソフトウェアモジュール格納部17Aから不揮発性メモリ15Bに転送する。≪データ転送サイズに基づく分散決定≫この発明において、ソフトウェアモジュールの分担を決定する第1の指標は、DMA転送に係るデータ転送サイズである。例えば、HDDユニット47に対してデータを読み書きする場合、HDDユニット47の仕様に基づきかつ効率的な転送を実現するための設定として、HDDドライバ61は、1ブロックあたり512キロバイトの単位でDMA転送を行う。一方、ネットワークドライバ53は、1ブロックあたり1キロバイトの単位でDMA転送を行う。その他、USBドライバ55、DMAドライバ57および画像処理ドライバ59も予めデータ転送サイズが定められている。このデータ転送サイズに応じて、DMA転送の設定に要するCPU処理のオーバーヘッドが異なる。即ち、小さなデータ転送サイズのものは、大きなデータ転送サイズのものに比べて、レジスタ設定などCPU処理に要する時間が多い。図7は、この発明に係るASICにおいて、小さなデータ転送サイズと大きなデータ転送サイズのものが同じ容量のデータを転送するときの処理を示す説明図である。aは小さなデータ転送サイズのものに対応し、bは大きなデータ転送サイズのものに対応する。図7aの場合、CPU13は、転送すべきデータの容量がデータ転送サイズよりも大きいので、DMA転送を3回行う。それぞれのDMA転送で、CPU13は、まず、DMA転送に係るDMAレジスタに必要なパラメータを設定した後、DMA転送の開始を指示するコマンドを前記DMAレジスタに書き込むステップS11。指示に応答してDMA転送が開始されるステップS12。DMA転送中、CPU13はデータ転送に係る処理を実行する必要はないが、データ転送が終了すると割り込み等の手段によってその旨がCPU13に通知される。通知を受けたCPU13は、DMA転送完了後の処理を実行するステップS13。データ転送バッファのポインタ更新、その他データ転送に関連する処理である。第1回目のDMA転送後、CPU13は、第2回目のDMA転送を実行するために、同様の処理を繰り返すステップS21~S23。さらに、第2回目のDMA転送後、CPU13は、第3回目のDMA転送を実行するステップS31~S33。これに対して、転送すべきデータサイズよりデータ転送サイズが大きいbの場合、CPU13は、1回のDMA転送を行うだけでよいステップS51~53。aとbを比較すると、DMAレジスタの設定および転送完了後の処理に係るCPU処理は、aの場合bの3倍行っている。DMA転送に要する時間は、aとbで等しい。全体として、CPU処理のオーバーヘットは、aの方が大きい。図4のデバイスドライバ51のうち、データ転送サイズが512キロバイト以上のものは、画像処理ドライバ59およびHDDドライバ61である。一方、データ転送サイズが512キロバイト未満のものは、ネットワークドライバ53、USBドライバ55およびDMAドライバ57である。各デバイスドライバに対するデータ転送サイズは予め定められているので、データテーブル形式で予め不揮発性メモリ15Aに格納しておけばよい。CPU13Aは、初期化処理においてソフトウェアモジュール格納部17Aに格納された各デバイスドライバのデータ転送サイズを確認する。そして、データ転送サイズが512キロバイト未満のものとして、ネットワークドライバ53、USBドライバ55およびDMAドライバ57があることを確認する。確認の結果、CPU13Aは、ネットワークドライバ53、USBドライバ55およびDMAドライバ57をASIC11Aで処理すると決定する。CPU処理のオーバーヘッドが大きいからである。一方、データ転送サイズが512キロバイトの画像処理ドライバ59およびHDDドライバ61は、ASIC11Bで処理すると決定する。このように、デバイスドライバが取り扱うデータ転送サイズに応じて、デバイスドライバを実行するASICを振り分けることで、各ASICの処理負荷を分散させることが可能になる。勿論、データ転送サイズの閾値としての512キロバイトは一例であって、制御プログラムの設計者はデータ転送サイズに係る閾値を適宜選択すればよい。一旦、設計者により前記閾値が決定されて制御プログラムが作成されたら、CPU13Aはその制御プログラムを実行し、決定された閾値に基づいてデバイスドライバの分散を決定する。≪CPU占有率に基づく分散決定≫この発明において、ソフトウェアモジュールの分担を決定する第2の指標は、CPUが各ソフトウェアモジュール、即ち、各プロセスを実行するときのCPU占有率である。各プロセスのCPU占有率は、そのプロセスが実行される一定の期間のうち、CPUがそのプロセスに係るタスクを実行した時間の割合である。なお、CPU占有率の算出は、1つのASICを用いる低速機の構成において算出するものとする。図8は、この発明に係るCPU13が、各プロセスの処理を実行する様子を模式的に示す説明図である。図8でCPU13は、プロセスA、BおよびCを実行する。また、デバイスドライバが入出力Dを制御する。前述のように、各プロセスは、一以上のタスクに分割されて実行される。タスクは、CPUが処理を実行する単位である。図8で、プロセスAは、タスクa1~a4に分割されている。プロセスBは、タスクb1およびb2に、プロセスCはタスクc1およびc2に分割されている。図8の下に示す横軸は、時間の経過を示す。分かり易くするために1~10まで番号を付した等間隔の期間で時間の経過を示している。1目盛りは、ある処理時間の単位である。各タスクは、1または2目盛りの処理時間で実行される。なお、各タスクの処理時間はCPU占有率の説明を分かり易くするために模式化したものである。図8に示すように、期間1で、CPU13は、タスクa1を実行する。タスクa1の処理において、CPU13は、入出力Dの動作を開始させる処理を行う。入出力Dの動作の一例は、印刷シートを給送する動作である。入出力Dは、動作完了が完了すると事象d1を発生させる。事象d1の一例は、印刷シートが所定の位置まで搬送されてその位置にあるセンサが印刷シートの到達を検出した事象である。タスクa1が終了した後、CPU13はプロセスAの次のタスクa2を実行することはしない。この例で、タスクa2は、プロセスBのタスクb1の終了を待って実行されるように設計されており、そのタスクb1がまだ実行されていないからである。タスクa1の終了後、リアルタイムOS63が有するタスクスケジューラは、次に実行すべきタスクを決定し、CPU13は、決定されたタスクを期間2で実行する。リアルタイムOSにおけるタスクスケジューリング手法は、周知のものがいくつか提案されているので説明は省略する。結果的に、タスクb1が期間2で実行されたとする。即ち、期間1と期間2との間でリアルタイムOS63に実行が移り、タスクa1からタスクb1へのタスクスイッチングが実行される。タスクb1の終了後、さらにタスクスイッチングが実行される。このとき、タスクb1の実行が終了しているので、期間3でタスクa2が実行される。プロセスAの後続のタスクa3は、タスクc1の実行を待って実行されるように設計されている。よって、図8に示すように、タスクa2の実行が終了した後期間4および5で、CPU13はタスクc1を実行する。その後、期間6でタスクa3を実行する。プロセスAの後続のタスクa4は、入出力Dの事象d1を待って実行されるように設計されているが、期間6終了時点で事象d1は発生していない。よって、リアルタイムOS63は、実行待ちの制約条件がないタスクb2へのタスクスイッチングを行う。CPU13は、期間7でタスクb2を実行する。同様に、期間7の終了後、実行待ちの制約条件がないタスクc2へのタスクスイッチングが行われ、期間8でCPU13はタスクc2を実行する。期間8の間に事象d1が発生する。期間8の終了後、事象d1を待っていたタスクa4へのタスクスイッチングが行われ、CPU13は、期間9および10でタスクa4を実行する。以上、1~10の期間のうち、プロセスAに係るタスクa1~a4が実行された期間は、期間1、3、6、9および10の5つの期間である。よって、期間1~10におけるプロセスAのCPU占有率は、5/10×100=50である。同様に、プロセスBに係るタスクb1およびb2は、期間2および7で実行されるので、期間1~10におけるプロセスBのCPU占有率は、2/10×100=20である。また、プロセスCに係るタスクc1およびc2は、期間4、5および8で実行されるので、期間1~10におけるプロセスCのCPU占有率は、3/10×100=20である。制御プログラムの設計者は、ASICが1つの低速機の構成で予め各プロセスのCPU占有率を算出しておく。そして、各プロセスのCPU占有率を各ソフトウェアモジュールの制御プログラムと共にソフトウェアモジュール格納部17Aに格納しておく。また、前記設計者は、CPU占有率に係る閾値を決定しておく。例えば、算出された各プロセスのCPU占有率のうち最大のものを閾値とする。そして、図1b、図3および図5に示す高速機の構成の場合に、ASIC11AのCPU13Aは、ソフトウェアモジュールの分散を決定する際、前記閾値以上のCPU占有率を有するソフトウェアモジュールを、ASIC11Bで処理するようにソフトウェアモジュールを割り当てる。このように、CPU占有率の高いソフトウェアモジュールをASIC11Bで処理させ、ASIC11Aの処理負担を低減させることによって、ユーザーインターフェイス85のレスポンスを低下させることなく、高速機に要求される性能を満たすことができる。前述した実施の形態の他にも、この発明について種々の変形例があり得る。それらの変形例は、この発明の範囲に属さないと解されるべきものではない。この発明には、請求の範囲と均等の意味および前記範囲内でのすべての変形とが含まれるべきである。