(57)【要約】【課題】ＣＰＵとハードウェアモジュールとのメモリ共有時に処理遅延の軽減を図る。【解決手段】コンピュータ装置は、メモリと、ハードウェアモジュールと、ＣＰＵと、メモリコントローラとを備える。ＣＰＵは、所定の時間内に処理の完了が要求されるリアルタイム制御に関わるリアルタイム制御処理と、リアルタイム制御処理とは異なる非リアルタイム制御処理とを実行する。メモリコントローラは、ＣＰＵがメモリにアクセスをするタイミングと、ハードウェアモジュールがメモリにアクセスをするタイミングとが重なったとき、ＣＰＵがリアルタイム制御処理を実行するためにメモリにアクセスをする場合には、ＣＰＵのアクセスをハードウェアモジュールのアクセスよりも優先させるとともに、ＣＰＵが非リアルタイム制御処理を実行するためにメモリにアクセスをする場合には、ＣＰＵのアクセスよりもハードウェアモジュールのアクセスを優先させる。【選択図】図１１
2007172268.tif 000002
【特許請求の範囲】
【請求項１】
（Ａ）メモリと、
（Ｂ）前記メモリにアクセスをするハードウェアモジュールと、
（Ｃ）所定の時間内に処理の完了が要求されるリアルタイム制御に関わるリアルタイム制御処理と、前記リアルタイム制御処理とは異なる非リアルタイム制御処理とを実行するＣＰＵであって、前記リアルタイム制御処理または前記非リアルタイム制御処理を実行するために、前記メモリにアクセスをするＣＰＵと、
（Ｄ）前記ＣＰＵが前記メモリにアクセスをするタイミングと、前記ハードウェアモジュールが前記メモリにアクセスをするタイミングとが重なったときに、前記ＣＰＵおよび前記ハードウェアモジュールのうちのどちらか一方のアクセスを他方のアクセスよりも優先させるメモリコントローラであって、
前記ＣＰＵが前記リアルタイム制御処理を実行するために前記メモリにアクセスをする場合には、前記ＣＰＵのアクセスを前記ハードウェアモジュールのアクセスよりも優先させるとともに、前記ＣＰＵが前記非リアルタイム制御処理を実行するために前記メモリにアクセスをする場合には、前記ＣＰＵのアクセスよりも前記ハードウェアモジュールのアクセスを優先させるメモリコントローラと、
（Ｅ）を備えたことを特徴とするコンピュータ装置。
【請求項２】
前記ＣＰＵは、前記メモリに対してデータを書き込むデータ書き込み処理または前記メモリからデータを読み込むデータ読み込み処理を行うために、前記メモリにアクセスをすることを特徴とする請求項１に記載のコンピュータ装置。
【請求項３】
前記ハードウェアモジュールは、前記メモリに対してデータを書き込むデータ書き込み処理または前記メモリからデータを読み込むデータ読み込み処理を行うために、前記メモリにアクセスをすることを特徴とする請求項１または２に記載のコンピュータ装置。
【請求項４】
前記ハードウェアモジュールが複数あることを特徴とする請求項１〜３のいずれか１項に記載のコンピュータ装置。
【請求項５】
前記ＣＰＵが実行する前記リアルタイム制御処理が複数種類あることを特徴とする請求項１〜４のいずれか１項に記載のコンピュータ装置。
【請求項６】
前記ＣＰＵが実行する前記非リアルタイム制御処理が複数種類あることを特徴とする請求項１〜５のいずれか１項に記載のコンピュータ装置。
【請求項７】
前記ＣＰＵが実行する前記リアルタイム制御処理には、モータを制御するための処理が含まれることを特徴とする請求項１〜６のいずれか１項に記載のコンピュータ装置。
【請求項８】
前記メモリには、前記ＣＰＵが実行する前記リアルタイム制御処理に使用されるデータが格納されることを特徴とする請求項１〜７のいずれか１項に記載のコンピュータ装置。
【請求項９】
前記メモリには、前記ＣＰＵが実行する前記非リアルタイム制御処理に使用されるデータが格納されることを特徴とする請求項１〜８のいずれか１項に記載のコンピュータ装置。
【請求項１０】
前記メモリには、前記ＣＰＵが前記リアルタイム制御処理を実行するためにアクセスをする領域と、前記ＣＰＵが前記非リアルタイム制御処理を実行するためにアクセスをする領域とが設けられていることを特徴とする請求項１〜９のいずれか１項に記載のコンピュータ装置。
【請求項１１】
前記メモリコントローラは、前記ＣＰＵ側から出力された信号に基づき、前記ＣＰＵが前記リアルタイム制御処理を実行するのか、前記ＣＰＵが前記非リアルタイム制御処理を実行するのかを判断することを特徴とする請求項１〜１０のいずれか１項に記載のコンピュータ装置。
【請求項１２】
前記メモリがＳＤＲＡＭであることを特徴とする請求項１〜１１のいずれか１項に記載のコンピュータ装置。
【請求項１３】
（Ａ）メモリと、
（Ｂ）前記メモリにアクセスをするハードウェアモジュールと、
（Ｃ）所定の時間内に処理の完了が要求されるリアルタイム制御に関わるリアルタイム制御処理と、前記リアルタイム制御処理とは異なる非リアルタイム制御処理とを実行するＣＰＵであって、前記リアルタイム制御処理または前記非リアルタイム制御処理を実行するために、前記メモリにアクセスをするＣＰＵと、
（Ｄ）前記ＣＰＵが前記メモリにアクセスをするタイミングと、前記ハードウェアモジュールが前記メモリにアクセスをするタイミングとが重なったときに、前記ＣＰＵおよび前記ハードウェアモジュールのうちのどちらか一方のアクセスを他方のアクセスよりも優先させるメモリコントローラであって、
前記ＣＰＵが前記リアルタイム制御処理を実行するために前記メモリにアクセスをする場合には、前記ＣＰＵのアクセスを前記ハードウェアモジュールのアクセスよりも優先させるとともに、前記ＣＰＵが前記非リアルタイム制御処理を実行するために前記メモリにアクセスをする場合には、前記ＣＰＵのアクセスよりも前記ハードウェアモジュールのアクセスを優先させるメモリコントローラと、
（Ｅ）を備え、
（Ｆ）前記ＣＰＵは、前記メモリに対してデータを書き込むデータ書き込み処理または前記メモリからデータを読み込むデータ読み込み処理を行うために、前記メモリにアクセスをし、
（Ｇ）前記ハードウェアモジュールは、前記メモリに対してデータを書き込むデータ書き込み処理または前記メモリからデータを読み込むデータ読み込み処理を行うために、前記メモリにアクセスをし、
（Ｈ）前記ハードウェアモジュールが複数あり、
（Ｉ）前記ＣＰＵが実行する前記リアルタイム制御処理が複数種類あり、
（Ｊ）前記ＣＰＵが実行する前記非リアルタイム制御処理が複数種類あり、
（Ｋ）前記ＣＰＵが実行する前記リアルタイム制御処理には、モータを制御するための処理が含まれ、
（Ｌ）前記メモリには、前記ＣＰＵが実行する前記リアルタイム制御処理に使用されるデータが格納され、
（Ｍ）前記メモリには、前記ＣＰＵが実行する前記非リアルタイム制御処理に使用されるデータが格納され、
（Ｎ）前記メモリには、前記ＣＰＵが前記リアルタイム制御処理を実行するためにアクセスをする領域と、前記ＣＰＵが前記非リアルタイム制御処理を実行するためにアクセスをする領域とが設けられ、
（Ｏ）前記メモリコントローラは、前記ＣＰＵ側から出力された信号に基づき、前記ＣＰＵが前記リアルタイム制御処理を実行するのか、前記ＣＰＵが前記非リアルタイム制御処理を実行するのかを判断し、
（Ｐ）前記メモリがＳＤＲＡＭであることを特徴とするコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵとハードウェアモジュールとが同一のメモリにアクセスをするコンピュータ装置に関する。
【背景技術】
【０００２】
最近、スキャナ機能やプリンタ機能（印刷機能）、ローカルコピー機能などを備えた複合機とも呼ばれる複合装置が知られている。この複合装置は、原稿から画像を読み取るスキャナ部と、媒体に対して画像を印刷するプリンタ部（印刷部）とを備えている。スキャナ機能では、スキャナ部により原稿から画像を読み取って画像データを生成してパソコンなどの外部のコンピュータに向けて出力する。また、プリント機能では、パソコンなどの外部のコンピュータから送られてきた印刷データに基づき印刷用紙等の各種媒体にプリンタ部により印刷をする。また、ローカルコピー機能では、スキャナ部により原稿から画像を読み取り、そして読み取った画像をプリンタ部により媒体に印刷して複写する（特許文献１等参照）。
【０００３】
このような複合装置では、スキャナ機能を実現するためにスキャナ部を制御するためのスキャナコントロールモジュールや、プリント機能を実現するために媒体に印刷をするヘッドを制御するためのヘッドコントロールモジュール、ローカルコピー機能を実現するためにスキャナ部で読み取った画像のデータに対して画像処理を施してプリンタ部にて印刷をするための印刷データを生成する画像処理モジュールなどといった各種ハードウェアモジュールを備えている。さらに、複合装置では、これら各種ハードウェアモジュールを統括するためにＣＰＵが設けられ、各ハードウェアモジュールを制御するようになっている。
【０００４】
ところで、このような複合装置には、各種ハードウェアモジュールがそれぞれ各機能を実現するための処理を実行するために、処理に必要なデータ等を格納するためのメモリが設けられている。また、ＣＰＵについても同様に、ＣＰＵが実行する処理に必要なデータ等を格納するためのメモリが設けられている。これらＣＰＵと各ハードウェアモジュールとが使用するメモリは、従来、別々に設けられていた。すなわち、複合装置には、ＣＰＵが使用するメモリと、ハードウェアモジュールが使用するメモリとの２つのメモリが設けられていた（特許文献２等参照）。
【特許文献１】特開２００５−３２４５２６号公報
【特許文献２】特開平８−１３７５１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、昨今、複合装置についてもコストダウンの要求が高まっており、部品点数の削減という課題の解決は必須であった。そこで、ＣＰＵが使用するメモリを省くことが検討されている。ところが、ＣＰＵが使用するメモリを省いた場合には、ハードウェアモジュールが使用するメモリをＣＰＵが使用するようにしなければならず、ハードウェアモジュールとＣＰＵとで同一のメモリを共有する必要がある。ＣＰＵがハードウェアモジュールとメモリを共有した場合、ＣＰＵの処理をハードウェアモジュールの処理よりも優先させなければならず、ハードウェアモジュールの処理が遅延する懸念が生じた。
【０００６】
本発明は、このような事情に鑑みてなされたものであって、その目的は、ＣＰＵとハードウェアモジュールとがメモリを共有しても処理の遅延の軽減を図れるようにすることにある。
【課題を解決するための手段】
【０００７】
前記目的を達成するための主たる発明は、
（Ａ）メモリと、
（Ｂ）前記メモリにアクセスをするハードウェアモジュールと、
（Ｃ）所定の時間内に処理の完了が要求されるリアルタイム制御に関わるリアルタイム制御処理と、前記リアルタイム制御処理とは異なる非リアルタイム制御処理とを実行するＣＰＵであって、前記リアルタイム制御処理または前記非リアルタイム制御処理を実行するために、前記メモリにアクセスをするＣＰＵと、
（Ｄ）前記ＣＰＵが前記メモリにアクセスをするタイミングと、前記ハードウェアモジュールが前記メモリにアクセスをするタイミングとが重なったときに、前記ＣＰＵおよび前記ハードウェアモジュールのうちのどちらか一方のアクセスを他方のアクセスよりも優先させるメモリコントローラであって、
前記ＣＰＵが前記リアルタイム制御処理を実行するために前記メモリにアクセスをする場合には、前記ＣＰＵのアクセスを前記ハードウェアモジュールのアクセスよりも優先させるとともに、前記ＣＰＵが前記非リアルタイム制御処理を実行するために前記メモリにアクセスをする場合には、前記ＣＰＵのアクセスよりも前記ハードウェアモジュールのアクセスを優先させるメモリコントローラと、
（Ｅ）を備えたことを特徴とするコンピュータ装置である。
【０００８】
本発明の他の特徴は、本明細書及び添付図面の記載により明らかにする。
【発明を実施するための最良の形態】
【０００９】
本明細書及び添付図面の記載により、少なくとも以下の事項が明らかとなる。
【００１０】
（Ａ）メモリと、
（Ｂ）前記メモリにアクセスをするハードウェアモジュールと、
（Ｃ）所定の時間内に処理の完了が要求されるリアルタイム制御に関わるリアルタイム制御処理と、前記リアルタイム制御処理とは異なる非リアルタイム制御処理とを実行するＣＰＵであって、前記リアルタイム制御処理または前記非リアルタイム制御処理を実行するために、前記メモリにアクセスをするＣＰＵと、
（Ｄ）前記ＣＰＵが前記メモリにアクセスをするタイミングと、前記ハードウェアモジュールが前記メモリにアクセスをするタイミングとが重なったときに、前記ＣＰＵおよび前記ハードウェアモジュールのうちのどちらか一方のアクセスを他方のアクセスよりも優先させるメモリコントローラであって、
前記ＣＰＵが前記リアルタイム制御処理を実行するために前記メモリにアクセスをする場合には、前記ＣＰＵのアクセスを前記ハードウェアモジュールのアクセスよりも優先させるとともに、前記ＣＰＵが前記非リアルタイム制御処理を実行するために前記メモリにアクセスをする場合には、前記ＣＰＵのアクセスよりも前記ハードウェアモジュールのアクセスを優先させるメモリコントローラと、
（Ｅ）を備えたことを特徴とするコンピュータ装置。
【００１１】
このコンピュータ装置にあっては、ＣＰＵがメモリにアクセスをするタイミングと、ハードウェアモジュールがメモリにアクセスをするタイミングとが重なったときに、メモリコントローラが、ＣＰＵがリアルタイム制御処理を実行するためにメモリにアクセスをした場合、ＣＰＵのアクセスを前記ハードウェアモジュールのアクセスよりも優先させる一方、ＣＰＵが非リアルタイム制御処理を実行するためにメモリにアクセスをした場合、ＣＰＵのアクセスよりもハードウェアモジュールのアクセスを優先させることによって、ＣＰＵおよびハードウェアウェアモジュールによるメモリへのアクセスをスムーズに行うことができる。これにより、ＣＰＵやハードウェアモジュールの処理の遅延の軽減を図ることができる。
【００１２】
かかるコンピュータ装置にあっては、前記ＣＰＵは、前記メモリに対してデータを書き込むデータ書き込み処理または前記メモリからデータを読み込むデータ読み込み処理を行うために、前記メモリにアクセスをしても良い。このようにＣＰＵがメモリに対してデータを書き込むデータ書き込み処理またはメモリからデータを読み込むデータ読み込み処理を行うためにメモリにアクセスをする場合に、ハードウェアモジュールとの間でメモリへのアクセスをスムーズに行うことができる。これにより、処理の遅延の軽減を図ることができる。
【００１３】
また、かかるコンピュータ装置にあっては、前記ハードウェアモジュールは、前記メモリに対してデータを書き込むデータ書き込み処理または前記メモリからデータを読み込むデータ読み込み処理を行うために、前記メモリにアクセスをしても良い。このようにハードウェアモジュールが、メモリに対してデータを書き込むデータ書き込み処理またはメモリからデータを読み込むデータ読み込み処理を行うためにメモリにアクセスをする場合に、ＣＰＵとの間でメモリへのアクセスをスムーズに行うことができる。これにより、処理の遅延の軽減を図ることができる。
【００１４】
また、かかるコンピュータ装置にあっては、前記ハードウェアモジュールが複数あっても良い。このようにハードウェアモジュールが複数ある場合であっても、ＣＰＵとの間でメモリへのアクセスをスムーズに行うことができる。これにより、処理の遅延の軽減を図ることができる。
【００１５】
また、かかるコンピュータ装置にあっては、前記ＣＰＵが実行する前記リアルタイム制御処理が複数種類あっても良い。このようにＣＰＵが実行するリアルタイム制御処理が複数種類あった場合でも、ハードウェアモジュールとの間でメモリへのアクセスをスムーズに行うことができる。これにより、処理の遅延の軽減を図ることができる。
【００１６】
また、かかるコンピュータ装置にあっては、前記ＣＰＵが実行する前記非リアルタイム制御処理が複数種類あっても良い。このようにＣＰＵが実行する非リアルタイム制御処理が複数種類あった場合でも、ハードウェアモジュールとの間でメモリへのアクセスをスムーズに行うことができる。これにより、処理の遅延の軽減を図ることができる。
【００１７】
また、かかるコンピュータ装置にあっては、前記ＣＰＵが実行する前記リアルタイム制御処理には、モータを制御するための処理が含まれていても良い。このようにＣＰＵが実行するリアルタイム制御処理には、モータを制御するための処理が含まれていれば、メモリへのアクセスをスムーズに行うことができ、処理の遅延の軽減を図ることができる。
【００１８】
また、かかるコンピュータ装置にあっては、前記メモリには、前記ＣＰＵが実行する前記リアルタイム制御処理に使用されるデータが格納されても良い。このようにＣＰＵが実行するリアルタイム制御処理に使用されるデータがメモリに格納される場合に、ハードウェアモジュールとの間でメモリへのアクセスをスムーズに行うことができ、これにより、処理の遅延の軽減を図ることができる。
【００１９】
また、かかるコンピュータ装置にあっては、前記メモリには、前記ＣＰＵが実行する前記非リアルタイム制御処理に使用されるデータが格納されても良い。このようにＣＰＵが実行する非リアルタイム制御処理に使用されるデータがメモリに格納される場合に、ハードウェアモジュールとの間でメモリへのアクセスをスムーズに行うことができ、これにより、処理の遅延の軽減を図ることができる。
【００２０】
また、かかるコンピュータ装置にあっては、前記メモリには、前記ＣＰＵが前記リアルタイム制御処理を実行するためにアクセスをする領域と、前記ＣＰＵが前記非リアルタイム制御処理を実行するためにアクセスをする領域とが設けられていても良い。このようにＣＰＵがリアルタイム制御処理を実行するためにアクセスをする領域と、ＣＰＵが非リアルタイム制御処理を実行するためにアクセスをする領域とがメモリに設けられていることで、ＣＰＵによるメモリへのアクセスをスムーズに行うことができる。
【００２１】
また、かかるコンピュータ装置にあっては、前記メモリコントローラは、前記ＣＰＵ側から出力された信号に基づき、前記ＣＰＵが前記リアルタイム制御処理を実行するのか、前記ＣＰＵが前記非リアルタイム制御処理を実行するのかを判断しても良い。このようにメモリコントローラが、ＣＰＵ側から出力された信号に基づき、ＣＰＵがリアルタイム制御処理を実行するのか、ＣＰＵが非リアルタイム制御処理を実行するのかを判断することで、メモリへのアクセスを優先すべきか否かを簡単に判別することができる。
【００２２】
また、かかるコンピュータ装置にあっては、前記メモリがＳＤＲＡＭであっても良い。このようにメモリがＳＤＲＡＭであれば、ＣＰＵおよびハードウェアモジュールによるメモリへのアクセスを高速に行うことができる。
【００２３】
（Ａ）メモリと、
（Ｂ）前記メモリにアクセスをするハードウェアモジュールと、
（Ｃ）所定の時間内に処理の完了が要求されるリアルタイム制御に関わるリアルタイム制御処理と、前記リアルタイム制御処理とは異なる非リアルタイム制御処理とを実行するＣＰＵであって、前記リアルタイム制御処理または前記非リアルタイム制御処理を実行するために、前記メモリにアクセスをするＣＰＵと、
（Ｄ）前記ＣＰＵが前記メモリにアクセスをするタイミングと、前記ハードウェアモジュールが前記メモリにアクセスをするタイミングとが重なったときに、前記ＣＰＵおよび前記ハードウェアモジュールのうちのどちらか一方のアクセスを他方のアクセスよりも優先させるメモリコントローラであって、
前記ＣＰＵが前記リアルタイム制御処理を実行するために前記メモリにアクセスをする場合には、前記ＣＰＵのアクセスを前記ハードウェアモジュールのアクセスよりも優先させるとともに、前記ＣＰＵが前記非リアルタイム制御処理を実行するために前記メモリにアクセスをする場合には、前記ＣＰＵのアクセスよりも前記ハードウェアモジュールのアクセスを優先させるメモリコントローラと、
（Ｅ）を備え、
（Ｆ）前記ＣＰＵは、前記メモリに対してデータを書き込むデータ書き込み処理または前記メモリからデータを読み込むデータ読み込み処理を行うために、前記メモリにアクセスをし、
（Ｇ）前記ハードウェアモジュールは、前記メモリに対してデータを書き込むデータ書き込み処理または前記メモリからデータを読み込むデータ読み込み処理を行うために、前記メモリにアクセスをし、
（Ｈ）前記ハードウェアモジュールが複数あり、
（Ｉ）前記ＣＰＵが実行する前記リアルタイム制御処理が複数種類あり、
（Ｊ）前記ＣＰＵが実行する前記非リアルタイム制御処理が複数種類あり、
（Ｋ）前記ＣＰＵが実行する前記リアルタイム制御処理には、モータを制御するための処理が含まれ、
（Ｌ）前記メモリには、前記ＣＰＵが実行する前記リアルタイム制御処理に使用されるデータが格納され、
（Ｍ）前記メモリには、前記ＣＰＵが実行する前記非リアルタイム制御処理に使用されるデータが格納され、
（Ｎ）前記メモリには、前記ＣＰＵが前記リアルタイム制御処理を実行するためにアクセスをする領域と、前記ＣＰＵが前記非リアルタイム制御処理を実行するためにアクセスをする領域とが設けられ、
（Ｏ）前記メモリコントローラは、前記ＣＰＵ側から出力された信号に基づき、前記ＣＰＵが前記リアルタイム制御処理を実行するのか、前記ＣＰＵが前記非リアルタイム制御処理を実行するのかを判断し、
（Ｐ）前記メモリがＳＤＲＡＭであることを特徴とするコンピュータ装置。
【００２４】
＝＝＝複合装置の概要＝＝＝
本発明に係るコンピュータ装置等について、コンピュータ装置を備えた複合装置を例にして説明する。この複合装置は、原稿から画像を読み取って画像データを生成するスキャナ部（画像読み取り部）と、媒体に対して印刷を施す印刷部とを備えている。
【００２５】
図１〜図６は、複合装置の一例について説明したものである。図１は、複合装置１の外観を示した斜視図である。図２は、複合装置１のスキャナ部１０の概要を説明する斜視図である。図３は、複合装置１のプリンタ部の概要を説明する斜視図である。図４は、複合装置１の内部構成を概略的に説明する説明図である。図５は、複合装置１の操作パネル２を説明する平面図である。図６は、複合装置１のシステム構成例を説明した図である。
【００２６】
この複合装置１は、原稿から画像を読み取って画像データを生成するスキャナ機能と、ホストコンピュータ（図示外）から送られてきた印刷データに基づき印刷用紙等の各種媒体に印刷を施すプリンタ機能と、原稿から読み取った画像を媒体に印刷して複写するローカルコピー機能とを備えている。この複合装置１は、図１に示すように、その上部６に原稿５から画像を読み取るためのスキャナ部１０を備えている。また、この複合装置１は、その下部９に印刷用紙等の媒体Ｓに印刷をするためのプリンタ部３０を備えている。また、この複合装置１の前面部には、操作パネル２と、カードリーダー部２０とが設けられている。
【００２７】
スキャナ部１０は、図２に示すように、原稿５がセットされるガラス板が設けられた原稿台１１と、当該原稿台１１を上方から覆う原稿台カバー１２とを備えている。原稿台カバー１２は、複合装置１の後端部に回動可能に取付けられ、原稿台１１の上面部を開閉するように設けられている。
【００２８】
一方、プリンタ部３０は、図３に示すように、スキャナ部１０を上方に持ち上げることによって、その内部が外部に開放されるように構成されている。つまり、スキャナ部１０は、複合装置１の後部にヒンジ部３４を介して回動自在に装着されている。スキャナ部１０が上方へと持ち上げられると、プリンタ部３０の内部が開放される。プリンタ部３０の内部には、キャリッジ４１などが配置されている。このキャリッジ４１には、インクを吐出するヘッド２１が設けられている。ヘッド２１は、キャリッジ４１とともに移動しながら用紙等の媒体に向けてインクを吐出して印刷を施す。
【００２９】
この他に、プリンタ部３０には、媒体を搬送する搬送部（不図示）が設けられている。この搬送部は、複合装置１の背部に設けられた背部給紙口２２又は複合装置１の前部に設けられた前部給紙口２３にセットされた媒体をプリンタ部３０の内部へと送り込み、そして、ヘッド２１により印刷された媒体を、複合装置１の前部に設けられた排紙トレイ２５を通じて排紙する。
【００３０】
また、複合装置１の下部９の前面の左右には、インクカートリッジカバー２７が設けられている。インクカートリッジ２６の取り付け時又は交換時、ユーザは、このインクカートリッジカバー２７を開き、インクカートリッジ２６を取り付け又は交換する。取り付け後又は交換後にユーザがインクカートリッジカバー２７を閉じることにより、インクカートリッジ２６のセットが完了する。このインクカートリッジ２６には、インクが収容されており、このインクは、キャリッジ４１に搭載されたヘッドに供給される。
【００３１】
カードリーダー部２０は、各種メモリカードを差し込むなどしてセットする部分である。そして、カードリーダー部２０は、セットされた各種メモリカードから、格納された画像データを読み込む。ここで読み込まれた画像データの画像は、プリンタ部３０により印刷することができる。カードリーダー部２０にセットすることができるメモリカードとしては、例えば、コンパクトフラッシュ（登録商標）やスマートメディア、メモリスティック、ＳＤメモリカード、ｘＤピクチャーカードなどといった各種フラッシュメモリがある。この他、カードリーダー部２０は、デジタルカメラや携帯電話で使用される各種メモリカードに対応することができる。
【００３２】
＝＝＝スキャナ部１０・プリンタ部３０の内部機構＝＝＝
図４は、スキャナ部１０およびプリンタ部３０の内部機構を示したものである。
【００３３】
＜スキャナ部＞
スキャナ部１０は、同図の上部に示すように、原稿台１１の下側に、スキャナ用キャリッジ６０と、このスキャナ用キャリッジ６０を原稿台１１に対して所定の間隔を保ちつつ図中矢印Ａ方向に沿って平行に移動させる駆動機構６２と、このスキャナ用キャリッジ６０を支持しつつその移動を案内するガイド６４とを備えている。
【００３４】
スキャナ用キャリッジ６０には、原稿台１１を介して原稿５に対し光を照射する光源としての露光ランプ６６と、原稿５により反射された反射光が入射するレンズ７０と、このレンズ７０を通じてスキャナ用キャリッジ６０の内部に取り込まれた反射光を受光するイメージセンサ７２とが設けられている。
【００３５】
本実施形態では、このイメージセンサ７２は、光信号を電気信号に変換するフォトダイオード等の光電変換素子が列状に配置されたリニアＣＣＤセンサにより構成されている。また、このイメージセンサ７２は、密着型イメージセンサ(ＣＩＳイメージセンサ：Contact Image Sensor)となっていて、その幅寸法が読み取り可能な原稿の最大サイズに対応して設定されている。つまり、イメージセンサ７２は、原稿台１１にセットされた原稿５の画像を等倍にて読み取ることができるようになっている。イメージセンサ７２により読み取られた画像に関するデータは、制御部５０に出力される。
【００３６】
また、駆動機構６２は、スキャナ用キャリッジ６０に接続されたタイミングベルト７４と、このタイミングベルト７４が掛け渡された一対のプーリ７５、７６と、一方のプーリ７５を回転駆動する駆動モータ７７とを備えている。駆動モータ７７は、制御部５０からの制御信号によって駆動制御される。
【００３７】
＜プリンタ部＞
一方、プリンタ部３０は、図４の下部に示すように、プリンタ用キャリッジ４１と、このプリンタ用キャリッジ４１に搭載されたヘッド２１と、プリンタ用キャリッジ４１を媒体Ｓに対して所定の間隔を保持しつつ相対的に平行に移動させる駆動機構２４と、媒体Ｓをプリンタ用キャリッジ４１の移動方向と直交する方向に沿って搬送する搬送機構３６とを備えている。
【００３８】
プリンタ用キャリッジ４１には、カートリッジ装着部が設けられ、このカートリッジ装着部には、ブラック（Ｋ）、シアン（Ｃ）、マゼンタ（Ｍ）、イエロ（Ｙ）等のインクが収容されたインクカートリッジが装着される。
【００３９】
ヘッド２１は、インクカートリッジから供給された各色のインクを媒体Ｓに向けて吐出して当該媒体Ｓ上にドットを形成して、媒体Ｓに画像を印刷する。
【００４０】
駆動機構２４は、プリンタ用キャリッジ４１に接続されたタイミングベルト４５と、このタイミングベルト４５に噛合されたプーリ４４と、このプーリ４４を回転駆動するキャリッジモータ４２（以下、ＣＲモータともいう）と、プリンタ用キャリッジ４１の移動を案内するガイドレール４６と、プリンタ用キャリッジ４１の位置を検出するリニア式エンコーダとしてリニア式エンコーダ符号板５１およびこのリニア式エンコーダ符号板５１を読み取る検出部５２とを備えている。この駆動機構２４は、キャリッジモータ４２を駆動してプーリ４４を介してタイミングベルト４５を回転させる。これにより、プリンタ用キャリッジ４１は、媒体Ｓに対してガイドレール４６に沿って相対的に移動する。キャリッジモータ４２は、制御部５０からの制御信号により駆動制御される。
【００４１】
搬送機構３６は、プラテン１４と、搬送ローラ１７Ａと、当該搬送ローラ１７Ａを回転駆動する搬送モータ１５と、媒体Ｓが所定位置に到達したか否かを検出する紙検知センサ５３と、搬送ローラ１７Ａの回転量を検出するロータリ式エンコーダ５６とを備えている。プラテン１４は、ヘッド２１に対向して配置されている。搬送モータ１５が駆動すると、搬送ローラ１７Ａが回転して、媒体Ｓがプラテン１４上を搬送される。搬送モータ１５は、制御部５０からの制御信号により駆動制御される。
【００４２】
印刷時には、媒体Ｓが搬送ローラ１７Ａにより間欠的に所定の搬送量で搬送され、その間欠的な搬送の合間にプリンタ用キャリッジ４１が、搬送ローラ１７Ａによる搬送方向に対して交差する方向に沿って移動しながら、ヘッド２１から媒体Ｓに向けてインクが吐出されて印刷が施される。
【００４３】
＝＝＝操作パネル＝＝＝
図５は、操作パネル２について詳しく説明した図である。操作パネル２は、液晶ディスプレイ８０と、各種ボタンを有する。ここで設けられているボタンの種類としては、例えば、電源ボタン８２、設定ボタン８３、ストップボタン８４、モード選択ボタン８５、カーソル操作ボタン群８６、スタートボタン８７等がある。電源ボタン８２は、複合装置１の電源をオン／オフするためのボタンである。設定ボタン８３は、ヘッドクリーニング、ノズルチェック、インク残量等の設定や確認を行うためのボタンである。ストップボタン８４は、動作中の機能を中止するためのボタンである。モード選択ボタン８５は、複合装置１の機能の選択を行うためのボタンである。カーソル操作ボタン群８６は、液晶ディスプレイ８０に表示される項目の設定等を行うためのボタンである。スタートボタン８７は、カラーボタン８７Ｃ及びモノクロボタン８７Ｂを有し、カラー印刷又はモノクロ印刷の開始に用いられる。
【００４４】
＝＝＝制御部の構成＝＝＝
次にこの複合装置１の内部に搭載された制御部５０の構成について説明する。図６は、この制御部５０の構成の一例を説明するためのブロック構成図である。
【００４５】
この制御部５０は、複合装置１全体の制御を司るＣＰＵ９０と、スキャナ機能、プリント機能、ローカルコピー機能の各制御を司る制御ＡＳＩＣ９４と、カードＡＳＩＣ９２とがＣＰＵバス９８により接続されている。制御ＡＳＩＣ９４には、ＳＤＲＡＭ１０２と、このＳＤＲＡＭを制御するためのＳＤＲＡＭコントローラ１３８とが設けられている。また、カードＡＳＩＣ９２には、カードインターフェイス９６が接続されている。
【００４６】
制御ＡＳＩＣ９４は、スキャナコントロールユニット１０４と、リサイズユニット１０６と、２値化処理ユニット１０８と、インターレース処理ユニット１１０と、イメージバッファユニット１１２と、バスコントロールユニット１１４と、ヘッドコントロールユニット１１６と、外部のホストコンピュータ１４０との入出力手段としてのＵＳＢインターフェイス１１８と、ＬＣＤコントロールユニット１１９と、ローカルバス１２８とを備えている。また、制御ＡＳＩＣ９４に接続されたＳＤＲＡＭ１０２には、シェーディングテーブル１２１と、ラインバッファ１２０と、リサイズバッファ１２２と、ルックアップテーブル（ＬＵＴ）１３６と、ＲＧＢバッファ１２３と、インターレースバッファ１２４、イメージバッファ１２６、１２７と、リアルタイム制御処理用データ格納領域１３０と、非リアルタイム制御処理用データ格納領域１３２と、表示用データ格納領域１３４とがそれぞれ設けられている。なお、ここで、リアルタイム制御処理および非リアルタイム制御処理については、後で詳しく説明する。
【００４７】
なお、前述したユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９のうち、スキャナコントロールユニット１０４と、リサイズユニット１０６と、２値化処理ユニット１０８と、インターレース処理ユニット１１０と、イメージバッファユニット１１２と、、ヘッドコントロールユニット１１６と、ＬＣＤコントロールユニット１１９とは、「ハードウェアモジュール」に相当する。また、ＳＤＲＡＭ１０２は、「メモリ」に相当する。
【００４８】
スキャナコントロールユニット１０４は、スキャナ部１０に設けられた露光ランプ６６やイメージセンサ７２、駆動モータ７７等を制御する。そして、スキャナコントロールユニット１０４は、スキャナ部１０から画像データを読み込んで、その画像データをＳＤＲＡＭ１０２上のラインバッファ１２０に格納してライン間補正を施すとともに、ＳＤＲＡＭ１０２上のシェーディングテーブル１２１を参照しながら、読み込んだ画像データに対してシェーディング補正を実行する。このようにして読み込んだ画像データに対して各種処理を施した後、スキャナコントロールユニット１０４は、読み込んだ画像データを送出する。
【００４９】
リサイズユニット１０６は、所定のサイズの画像データを受け取った後、その画像データを一旦ＳＤＲＡＭ１０２上のリサイズバッファ１２２に格納してから、リサイズバッファ１２２に格納した画像データに対してサイズを変更する処理、即ちリサイズ処理を実行する。その後、リサイズユニット１０６は、サイズ変更された画像データを送出する。
【００５０】
２値化処理ユニット１０８は、送出された多階調のＲＧＢデータを一旦ＳＤＲＡＭ１０２上のＲＧＢバッファ１２３に格納する。その後、２値化処理ユニット１０８は、ＲＧＢバッファ１２３に格納された多階調のＲＧＢデータをＳＤＲＡＭ１０２から読み出して、ＣＭＹＫの２値データ（又は２ビットデータ）に変換する。この際に、２値化処理ユニット１０８は、ＳＤＲＡＭ１０２上のルックアップテーブル（ＬＵＴ）１３６を参照しながら、多階調のＲＧＢデータをＣＭＹＫの２値データ（又は２ビットデータ）に変換する。その変換後、２値化処理ユニット１０８は、その変換により生成されたＣＭＹＫの２値データ（又は２ビットデータ）をインターレース処理ユニット１１０に送出する。
【００５１】
インターレース処理ユニット１１０は、２値化処理ユニット１０８から送られてきたＣＭＹＫの２値データ（又は２ビットデータ）を、ＳＤＲＡＭ１０２のインターレースバッファ１２４に格納する。そして、インターレース処理ユニット１１０は、インターレースバッファ１２４に格納されたＣＭＹＫの２値データ（又は２ビットデータ）を所定のサイズ毎に読み出して、ノズル配列に対応させるべく並び替えてイメージバッファユニット１１２に送出する。
【００５２】
イメージバッファユニット１１２では、インターレース処理ユニット１１０から送出されたデータから、プリンタ用のキャリッジ４１の移動毎の各ノズルにインクを吐出させるためのヘッド駆動データを生成する。ここで、イメージバッファユニット１１２は、ＳＤＲＡＭ１０２上に設けられたイメージバッファ１２６、１２７にヘッド駆動データを格納する。イメージバッファ１２６、１２７には、それぞれプリンタ用のキャリッジ４１が１回移動する毎のヘッド駆動データが格納される。
【００５３】
イメージバッファ１２６、１２７に格納されたヘッド駆動データは、ヘッドコントロールユニット１１６により読み出される。ヘッドコントロールユニット１１６は、イメージバッファ１２６、１２７から読み込んだヘッド駆動データに基づき、ヘッド２１を駆動して、ヘッド２１の各ノズルからインクを吐出させる。
【００５４】
一方、ＳＤＲＡＭコントローラ１３８は、ＳＤＲＡＭ１０２を制御するとともに、各ユニット１０４、１０６、１０８、１１０、１１２、１１４，１１６、１１９からＳＤＲＡＭ１０２に対するアクセスを管理する。具体的には、ＳＤＲＡＭコントローラ１３８は、各ユニット１０４、１０６、１０８、１１０、１１２、１１４，１１６、１１９からＳＤＲＡＭ１０２に対してアクセスをしてきたときに、どのユニットのアクセスを優先させるべきかを決定する。そして、ＳＤＲＡＭコントローラ１３８は、優先させるべきユニットから順に、ＳＤＲＡＭ１０２へのアクセスを許可する。すなわち、ＳＤＲＡＭコントローラ１３８は、各ユニット１０４、１０６、１０８、１１０、１１２、１１４，１１６、１１９と、ＳＤＲＡＭ１０２との間で、アクセスをスムーズに行わせる役割を果たしている。ＣＰＵ９０（バスコントロールユニット１１４）や各ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９がＳＤＲＡＭ１０２にアクセスをする場合には、必ずＳＤＲＡＭコントローラ１３８にリクエストを発する。
【００５５】
ＣＰＵ９０は、ＣＰＵバス９８を経由してバスコントロールユニット１１４を介してＳＤＲＡＭ１０２にアクセスする。具体的には、ＣＰＵ９０は、ＳＤＲＡＭ１０２に対してデータを書き込むデータ書き込み処理を行ったり、またＳＤＲＡＭ１０２からデータを読み込むデータ読み込み処理を行ったりする。ここで、ＣＰＵがＳＤＲＡＭ１０２に書き込んだり、またＳＤＲＡＭ１０２から読み込んだりするデータとしては、リアルタイム制御処理用のデータと、非リアルタイム処理用のデータとがある。リアルタイム制御処理とは、ＣＰＵ９０が実行するリアルタイム制御に関わる処理である。ここで、リアルタイム制御とは、ある一定時間内に完了しなければならない処理を実行するための制御のことである。このリアルタイム制御では、ある一定時間内に処理を完了させることができなかった場合には、装置全体の動作に大きな影響を及ぼす虞がある。リアルタイム制御としては、具体的に、スキャナ用キャリッジ６０を移動させるための駆動モータ７７を制御する処理や、プリンタ用キャリッジ４１を移動させるためのキャリッジモータ４２を制御する処理などがある。これらの処理では、ＣＰＵ９０は、目標速度と現在速度の偏差を計算し、駆動モータ７７やキャリッジモータ４２の制御量を決定する必要がある。この他に、リアルタイム制御としては、各種デバイスドライバに関わる制御が相当する場合がある。なお、これらのリアルタイム制御を例えばリアルタイムＯＳ（ＲＴＯＳ：Real-Time Operating System）上にて実行する場合には、リアルタイムＯＳに関わる処理についてもリアルタイム性が要求されるため、リアルタイム制御処理に該当する。
【００５６】
一方、非リアルタイム制御処理は、ＣＰＵ９０が実行するリアルタイム制御処理とは異なる処理のことをいう。例えば、非リアルタイム制御処理としては、処理自体が遅くなっても装置全体の動作にあまり大きな影響を及ぼさないような処理が相当する。具体的には、ユーザーインターフェース（ＵＩ）に関わる処理やＣＰＵ９０が実行するアプリケーションに関わる処理、各種データ処理、各種画像処理等が含まれる。
【００５７】
ＳＤＲＡＭ１０２には、ＣＰＵ９０がリアルタイム制御処理用のデータを格納するためのリアルタイム制御処理用データ格納領域１３０と、ＣＰＵ９０が非リアルタイム処理用のデータを格納するための非リアルタイム制御処理用データ格納領域１３２が設けられている。ＣＰＵ９０がリアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスしたときには、リアルタイム制御処理用データ格納領域１３０に対してデータの書き込みや読み込みが行われる。また、ＣＰＵ９０が非リアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスしたときには、非リアルタイム制御処理用データ格納領域１３２に対してデータの書き込みや読み込みが行われる。
【００５８】
バスコントロールユニット１１４は、制御ＡＳＩＣ９４に接続されたＳＤＲＡＭ１０２へのＣＰＵ９０からのアクセスを可能にしている。すなわち、バスコントロールユニット１１４は、ＣＰＵ９０がＳＤＲＡＭ１０２にデータを書き込むデータ書き込み処理や、またＳＤＲＡＭ１０２からデータを読み込むデータ読み込み処理を可能にしている。ＣＰＵ９０とＳＤＲＡＭ１０２との間のやり取りは、全てバスコントロールユニット１１４を介して行われている。
【００５９】
ＬＣＤコントロールユニット１１９は、操作パネル２に設けられた液晶ディスプレイ８０を制御する。具体的には、ＳＤＲＡＭ１０２上の表示用データ格納領域１３４から、これに格納された表示データを読み出して、液晶ディスプレイ８０側へと送信する。液晶ディスプレイ８０側では、ＬＣＤコントロールユニット１１９によりＳＤＲＡＭ１０２上の表示用データ格納領域１３４から読み出された表示データをフレームメモリに格納する。そして、フレームメモリに格納された表示データに基づき液晶ディスプレイ８０に画像が表示される。
【００６０】
一方、カードＡＳＩＣ９２は、カードリーダー部２０にセットされた各種メモリカードから、当該メモリカードに格納された画像データを読み込む処理を行う。カードＡＳＩＣ９２は、カードインターフェイス９６を介してカードリーダー部２０にセットされた各種メモリカードから画像データを読み込む。なお、カードＡＳＩＣ９２は、カードリーダー部２０にセットされたメモリカードに、カードインターフェイス９６を介してデータを書き込むことも可能である。
【００６１】
＝＝＝制御部５０内のデータの流れ＝＝＝
＜スキャナ機能時について＞
図７は、スキャナ機能時における制御部５０内のデータの流れについて説明したものである。制御ＡＳＩＣ９４のＵＳＢインターフェイス１１８に接続されたホストコンピュータ１４０から、スキャナ部１０による画像読み取り指令信号と、読み取り解像度、読み取り領域等の読み取り情報データとが制御部５０に送信される。制御部５０では、画像読み取り指令信号と読み取り情報データとに基づいて、スキャナコントロールユニット１０４が制御され、スキャナ部１０による原稿５の読み取りが開始される。このとき、スキャナコントロールユニット１０４は、スキャナ部１０の露光ランプ６６やイメージセンサ７２、駆動機構６２等を駆動して順次画像データとして読み込む（矢印Ａ１参照）。そして、スキャナコントロールユニット１０４は、読み込んだ画像データをＳＤＲＡＭ１０２のラインバッファ１２０に一旦格納する（矢印Ｂ１参照）。そして、スキャナコントロールユニット１０４は、ラインバッファ１２０から画像データを順次読み出して（矢印Ｃ１参照）、読み出した画像データに対してライン間補正処理等を施すとともに、ＳＤＲＡＭ１０２上のシェーディングテーブル１２１を参照しながら（矢印Ｄ１参照）、読み込んだ画像データに対してシェーディング補正を実行する。このようにして読み込んだ画像データに対して各種処理を施した後、スキャナコントロールユニット１０４は、読み込んだ画像データをＵＳＢインターフェイス１１８に出力する（矢印Ｅ１参照）。そして、画像データは、その後、ＵＳＢインターフェイス１１８からホストコンピュータ１４０へと送信される（矢印Ｆ１参照）。
【００６２】
一方、ＣＰＵ９０は、この間に、リアルタイム制御処理または非リアルタイム制御処理を実行するためにバスコントロールユニット１１４を経由してＳＤＲＡＭ１０２にアクセスをする（矢印Ｇ１、Ｈ１、Ｉ１、Ｊ１参照）。具体的には、ＣＰＵ９０は、ＳＤＲＡＭ１０２に対してデータを書き込むデータ書き込み処理を行ったり、またＳＤＲＡＭ１０２からデータを読み込むデータ読み込み処理を行ったりする。ここで、ＣＰＵ９０は、リアルタイム制御処理を実行するときには、バスコントロールユニット１１４を経由してＳＤＲＡＭ１０２上のリアルタイム制御処理用データ格納領域１３０に対してアクセスをする。また、ＣＰＵ９０は、非リアルタイム制御処理を実行するときには、バスコントロールユニット１１４を経由して非リアルタイム制御処理用データ格納領域１３２にアクセスをする。
【００６３】
なお、ここで、ＣＰＵ９０が実行するリアルタイム制御処理としては、スキャナ用キャリッジ６０を移動させるための駆動モータ７７を制御するための処理などがある。
【００６４】
また、ＬＣＤコントロールユニット１１９は、この間に、液晶ディスプレイ８０に画像を表示するための表示データをＳＤＲＡＭ１０２上の表示用データ格納領域１３４から読み出す（矢印Ｋ１参照）。
【００６５】
＜プリンタ機能時について＞
図８は、プリンタ機能時における制御部５０内のデータの流れについて説明したものである。プリンタ機能時には、ホストコンピュータ１４０のプリンタドライバが画像データをヘッド駆動データに変換する。ホストコンピュータ１４０により変換されて生成されたヘッド駆動データは、ホストコンピュータ１４０からＵＳＢインターフェイス１１８へと送られる（矢印Ａ２参照）。ＵＳＢインターフェイス１１８は、ホストコンピュータ１４０から送られてきたヘッド駆動データを受信する。そして、ＵＳＢインターフェイス１１８は、受信したヘッド駆動データをＣＰＵ９０へと送信する（矢印Ｂ２参照）。
【００６６】
ＣＰＵ９０は、ＵＳＢインターフェイス１１８が受信したヘッド駆動データをバスコントロールユニット１１４へと送信する（矢印Ｃ２参照）。バスコントロールユニット１１４は、ＣＰＵ９０から送られてきたヘッド駆動データをＳＤＲＡＭ１０２上のイメージバッファ１２６、１２７へと格納する（矢印Ｄ２参照）。イメージバッファ１２６、１２７には、それぞれプリンタ用のキャリッジ４１が１回移動する毎のヘッド駆動データが格納される。
【００６７】
イメージバッファ１２６、１２７に格納されたヘッド駆動データは、ヘッドコントロールユニット１１６により読み出される（矢印Ｅ２参照）。ここで、ヘッドコントロールユニット１１６は、イメージバッファ１２６、１２７からヘッド駆動データを交互に読み込む。すなわち、ヘッドコントロールユニット１１６がイメージバッファ１２６、１２７のうちの一方からヘッド駆動データを読み込んでいる間、他方のイメージバッファ１２６、１２７には、バスコントロールユニット１１４から送られてきたヘッド駆動データが書き込まれる。そして、バスコントロールユニット１１４により一方のイメージバッファ１２６、１２７へのヘッド駆動データの書き込みが終了すると、その書き込みが終了した一方のイメージバッファ１２６、１２７からヘッドコントロールユニット１１６がヘッド駆動データを読み出す。このようにしてヘッドコントロールユニット１１６は、イメージバッファ１２６、１２７から交互にヘッド駆動データを交互に読み込む。
【００６８】
そして、ヘッドコントロールユニット１１６は、読み込んだヘッド駆動データに基づき、ヘッド２１を駆動して、ヘッド２１の各ノズルからインクを吐出させる（矢印Ｆ２参照）。
【００６９】
一方、ＣＰＵ９０は、この間に、リアルタイム制御処理または非リアルタイム制御処理を実行するためにバスコントロールユニット１１４を経由してＳＤＲＡＭ１０２にアクセスをする（矢印Ｇ２、Ｈ２、Ｉ２、Ｊ２参照）。具体的には、ＣＰＵ９０は、ＳＤＲＡＭ１０２に対してデータを書き込むデータ書き込み処理を行ったり、またＳＤＲＡＭ１０２からデータを読み込むデータ読み込み処理を行ったりする。ここで、ＣＰＵ９０は、リアルタイム制御処理を実行するときには、バスコントロールユニット１１４を経由してＳＤＲＡＭ１０２上のリアルタイム制御処理用データ格納領域１３０に対してアクセスをする。また、ＣＰＵ９０は、非リアルタイム制御処理を実行するときには、バスコントロールユニット１１４を経由して非リアルタイム制御処理用データ格納領域１３２にアクセスをする。
【００７０】
なお、ここで、ＣＰＵ９０が実行するリアルタイム制御処理としては、プリンタ用キャリッジ４１を移動させるためのキャリッジモータ４２を制御するための処理などがある。
【００７１】
また、ＬＣＤコントロールユニット１１９は、この間に、液晶ディスプレイ８０に画像を表示するための表示データをＳＤＲＡＭ１０２上の表示用データ格納領域１３４から読み出す（矢印Ｋ２参照）。
【００７２】
＜コピー機能時について＞
図９は、ローカルコピー機能時における制御部５０内のデータの流れについて説明したものである。操作パネル２上のカラーボタン８７Ｃまたはモノクロボタン８７Ｂが操作されるなどしてローカルコピーが実行されると、スキャナコントロールユニット１０４が制御され、スキャナ部１０による原稿５の読み取りが開始される。このとき、スキャナコントロールユニット１０４は、スキャナ部１０の露光ランプ６６やイメージセンサ７２、駆動機構６２等を駆動して順次画像データとして読み込む（矢印Ａ３参照）。そして、スキャナコントロールユニット１０４は、読み込んだ画像データをＳＤＲＡＭ１０２のラインバッファ１２０に一旦格納する（矢印Ｂ３参照）。そして、スキャナコントロールユニット１０４は、ラインバッファ１２０から画像データを順次読み出して（矢印Ｃ３参照）、読み出した画像データに対してライン間補正処理等を施すとともに、ＳＤＲＡＭ１０２上のシェーディングテーブル１２１を参照しながら（矢印Ｄ３参照）、読み込んだ画像データに対してシェーディング補正を実行する。このようにして読み込んだ画像データに対して各種処理を施した後、スキャナコントロールユニット１０４は、読み込んだ画像データをＲＧＢデータとして２値化処理ユニット１０８へと送出する（矢印Ｅ３参照）。
【００７３】
２値化処理ユニット１０８は、スキャナコントロールユニット１０４から送られてきたＲＧＢデータをＳＤＲＡＭ１０２上のＲＧＢバッファ１２３に一旦格納する（矢印Ｆ３参照）。そして、２値化処理ユニット１０８は、ＲＧＢバッファ１２３から、格納されたＲＧＢデータを順次読み出して（矢印Ｇ３参照）、ＳＤＲＡＭ１０２上のルックアップテーブル（ＬＵＴ）１３６を参照しながら（矢印Ｈ３参照）、ＲＧＢデータをＣＭＹＫの色毎の２値データ（又は２ビットデータ）に変換する。そして、２値化処理ユニット１０８は、この変換により生成したＣＭＹＫの２値データをインターレース処理ユニット１１０に送出する（矢印Ｉ３参照）。
【００７４】
インターレース処理ユニット１１０は、２値化処理ユニット１０８から送られてきたＣＭＹＫの２値データ（又は２ビットデータ）を、ＳＤＲＡＭ１０２のインターレースバッファ１２４に格納する（矢印Ｊ３参照）。そして、インターレース処理ユニット１１０は、インターレースバッファ１２４に格納されたＣＭＹＫの２値データ（又は２ビットデータ）をインターレースバッファ１２４から所定のサイズ毎に順次読み出して（矢印Ｋ３参照）、ノズル配列に対応させるべく並び替えてイメージバッファユニット１１２に送出する（矢印Ｌ３参照）。
【００７５】
イメージバッファユニット１１２は、インターレース処理ユニット１１０から送られてきたデータから、プリンタ用のキャリッジ４１の移動毎の各ノズルにインクを吐出させるためのヘッド駆動データを生成する。ここで、イメージバッファユニット１１２は、ＳＤＲＡＭ１０２上に設けられたイメージバッファ１２６、１２７にヘッド駆動データを格納する（矢印Ｍ３参照）。イメージバッファ１２６、１２７には、それぞれプリンタ用のキャリッジ４１が１回移動する毎のヘッド駆動データが格納される。
【００７６】
イメージバッファ１２６、１２７に格納されたヘッド駆動データは、ヘッドコントロールユニット１１６により順次読み出される（矢印Ｎ３参照）。ここで、ヘッドコントロールユニット１１６は、イメージバッファ１２６、１２７からヘッド駆動データを交互に読み込む。
【００７７】
そして、ヘッドコントロールユニット１１６は、読み込んだヘッド駆動データに基づき、ヘッド２１を駆動して、ヘッド２１の各ノズルからインクを吐出させる（矢印Ｏ３参照）。
【００７８】
一方、ＣＰＵ９０は、ＣＰＵ９０は、この間に、リアルタイム制御処理または非リアルタイム制御処理を実行するためにバスコントロールユニット１１４を経由してＳＤＲＡＭ１０２にアクセスをする（矢印Ｐ３、Ｑ３、Ｒ３、Ｓ３参照）。具体的には、ＣＰＵ９０は、ＳＤＲＡＭ１０２に対してデータを書き込むデータ書き込み処理を行ったり、またＳＤＲＡＭ１０２からデータを読み込むデータ読み込み処理を行ったりする。ここで、ＣＰＵ９０は、リアルタイム制御処理を実行するときには、バスコントロールユニット１１４を経由してＳＤＲＡＭ１０２上のリアルタイム制御処理用データ格納領域１３０に対してアクセスをする。また、ＣＰＵ９０は、非リアルタイム制御処理を実行するときには、バスコントロールユニット１１４を経由して非リアルタイム制御処理用データ格納領域１３２にアクセスをする。
【００７９】
なお、ここで、ＣＰＵ９０が実行するリアルタイム制御処理としては、スキャナ用キャリッジ６０を移動させるための駆動モータ７７を制御するための処理や、プリンタ用キャリッジ４１を移動させるためのキャリッジモータ４２を制御するための処理などがある。
【００８０】
また、ＬＣＤコントロールユニット１１９は、この間に、液晶ディスプレイ８０に画像を表示するための表示データをＳＤＲＡＭ１０２上の表示用データ格納領域１３４から読み出す（矢印Ｔ３参照）。
【００８１】
＜メモリカード印刷時＞
図１０は、メモリカード印刷時における制御部５０内のデータの流れについて説明したものである。操作パネル２上のモード選択ボタン８５が操作されてモードが選択され、カラーボタン８７Ｃやモノクロボタン８７Ｂ等のスタートボタン８７が操作されると、カードリーダー部２０にセットされたメモリカードに格納された画像データについて印刷処理が行われる。ここでは、まず、カードＡＳＩＣによりカードリーダー部２０にセットされたメモリカードから当該メモリカードに格納された画像データがメモリカードインターフェイス９６を介してカードＡＳＩＣ９２へと読み込まれる（矢印Ａ４参照）。ここで、メモリカードに格納された画像データとしては、ＪＰＥＧ形式やビットマップ形式等の各種形式により記録された画像データが含まれる。
【００８２】
カードＡＳＩＣ９２に読み込まれた画像データは、カードＡＳＩＣ９２からＣＰＵ９０へと送られる（矢印Ｂ４参照）。ＣＰＵ９０は、カードＡＳＩＣ９２から送られてきた画像データに対して必要な場合には解凍処理等を施す。これにより、ＣＰＵ９０は、必要な場合には、カードＡＳＩＣ９２から送られてきた画像データを印刷処理に対応したＲＧＢデータに変換する。その後、ＣＰＵ９０は、得られたＲＧＢデータをバスコントロールユニット１１４へと送信する（矢印Ｃ４参照）。
【００８３】
バスコントロールユニット１１４は、ＣＰＵ９０から送られてきたＲＧＢデータをＳＤＲＡＭ１０２上のＲＧＢバッファ１２３に格納する（矢印Ｄ４参照）。ＲＧＢバッファ１２３に格納されたＲＧＢデータは、必要な場合には、リサイズユニット１０６によってデータのサイズを変更する処理が施される。ここでは、がリサイズユニット１０６により印刷処理に適したサイズのデータに変換される。リサイズユニット１０６は、ＲＧＢバッファ１２３に格納されたＲＧＢデータを一旦ＳＤＲＡＭ１０２上のリサイズバッファ１２２に格納してから（矢印Ｅ４参照）、リサイズバッファ１２２に格納した画像データに対してリサイズ処理を実行する。その後、リサイズユニット１０６は、サイズを変更する処理を施したＲＧＢデータを再び元のＲＧＢバッファ１２３に格納する（矢印Ｆ４参照）。
【００８４】
ＲＧＢバッファ１２３に格納されたＲＧＢデータは、２値化処理ユニット１０８によりＲＧＢバッファ１２３から順次読み出される（矢印Ｇ４参照）。そして、２値化処理ユニット１０８は、ＲＧＢバッファ１２３から読み出したＲＧＢデータについて、ＳＤＲＡＭ１０２上のルックアップテーブル（ＬＵＴ）１３６を参照しながら（矢印Ｈ４参照）、ＣＭＹＫの色毎の２値データ（又は２ビットデータ）に変換する。そして、２値化処理ユニット１０８は、この変換により生成したＣＭＹＫの２値データをインターレース処理ユニット１１０に送出する（矢印Ｉ４参照）。
【００８５】
インターレース処理ユニット１１０は、２値化処理ユニット１０８から送られてきたＣＭＹＫの２値データ（又は２ビットデータ）を、ＳＤＲＡＭ１０２のインターレースバッファ１２４に格納する（矢印Ｊ４参照）。そして、インターレース処理ユニット１１０は、インターレースバッファ１２４に格納されたＣＭＹＫの２値データ（又は２ビットデータ）をインターレースバッファ１２４から所定のサイズ毎に順次読み出して（矢印Ｋ４参照）、ノズル配列に対応させるべく並び替えてイメージバッファユニット１１２に送出する（矢印Ｌ４参照）。
【００８６】
イメージバッファユニット１１２は、インターレース処理ユニット１１０から送られてきたデータから、プリンタ用のキャリッジ４１の移動毎の各ノズルにインクを吐出させるためのヘッド駆動データを生成する。ここで、イメージバッファユニット１１２は、ＳＤＲＡＭ１０２上に設けられたイメージバッファ１２６、１２７にヘッド駆動データを格納する（矢印Ｍ４参照）。イメージバッファ１２６、１２７には、それぞれプリンタ用のキャリッジ４１が１回移動する毎のヘッド駆動データが格納される。
【００８７】
イメージバッファ１２６、１２７に格納されたヘッド駆動データは、ヘッドコントロールユニット１１６により順次読み出される（矢印Ｎ４参照）。ここで、ヘッドコントロールユニット１１６は、イメージバッファ１２６、１２７からヘッド駆動データを交互に読み込む。
【００８８】
そして、ヘッドコントロールユニット１１６は、読み込んだヘッド駆動データに基づき、ヘッド２１を駆動して、ヘッド２１の各ノズルからインクを吐出させる（矢印Ｏ４参照）。
【００８９】
一方、ＣＰＵ９０は、この間に、リアルタイム制御処理または非リアルタイム制御処理を実行するためにバスコントロールユニット１１４を経由してＳＤＲＡＭ１０２にアクセスをする（矢印Ｐ４、Ｑ４、Ｒ４、Ｓ４参照）。具体的には、ＣＰＵ９０は、ＳＤＲＡＭ１０２に対してデータを書き込むデータ書き込み処理を行ったり、またＳＤＲＡＭ１０２からデータを読み込むデータ読み込み処理を行ったりする。ここで、ＣＰＵ９０は、リアルタイム制御処理を実行するときには、バスコントロールユニット１１４を経由してＳＤＲＡＭ１０２上のリアルタイム制御処理用データ格納領域１３０に対してアクセスをする。また、ＣＰＵ９０は、非リアルタイム制御処理を実行するときには、バスコントロールユニット１１４を経由して非リアルタイム制御処理用データ格納領域１３２にアクセスをする。
【００９０】
なお、ここで、ＣＰＵ９０が実行するリアルタイム制御処理としては、プリンタ用キャリッジ４１を移動させるためのキャリッジモータ４２を制御するための処理などがある。
【００９１】
また、ＬＣＤコントロールユニット１１９は、この間に、液晶ディスプレイ８０に画像を表示するための表示データをＳＤＲＡＭ１０２上の表示用データ格納領域１３４から読み出す（矢印Ｔ４参照）。
【００９２】
＝＝＝問題点及び解決方法＝＝＝
このような制御部５０の構成にあっては、ＣＰＵ９０が専有のメモリを持たない構成になっている。そして、ＣＰＵ９０（バスコントロールユニット１１４）と、バスコントロールユニット１１４を除く他のユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９とが、同じメモリ、即ちＳＤＲＡＭ１０２を共有する形になっている。ＣＰＵ９０は、処理に必要な全てのデータをＳＤＲＡＭ１０２に格納するようになっている。
【００９３】
このようにＣＰＵ９０が各ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９とメモリ（ここでは、ＳＤＲＡＭ１０２）を共有した場合、ＣＰＵ９０の処理を各ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９の処理よりも優先させなければならない。これは、ＣＰＵ９０が、リアルタイム性の要求されるリアルタイム制御処理を実行しているからである。リアルタイム制御処理は、予め設定された所定の時間内に処理を完了させなければならないという制約がある。ここで設定される所定の時間とは、数ｍｓ〜数百ｍｓのオーダーの非常に短い時間である。このため、ＣＰＵ９０の処理は、各ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９の処理よりも優先させる必要がある。しかしながら、この場合、各ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９の処理がなかなか進まず、装置全体の動作に支障を来してしまう可能性がある。
【００９４】
そこで、本実施形態では、ＣＰＵ９０がリアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスをする場合と、ＣＰＵがリアルタイム制御処理とは異なる処理、即ち非リアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスをする場合とで、各ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９の処理に対する優先度が異なるように設定されている。すなわち、ＣＰＵ９０がＳＤＲＡＭ１０２にアクセスをするタイミングと、各ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９がＳＤＲＡＭ１０２にアクセスをするタイミングとが重なったときに、ＣＰＵ９０が、所定の時間内に処理の完了が要求されるリアルタイム制御に関わるリアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスをした場合には、ＣＰＵ９０のアクセスを他の各ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９のアクセスよりも優先させる。一方、ＣＰＵ９０が、リアルタイム制御処理とは異なる非リアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスをした場合には、ＣＰＵ９０のアクセスよりも他の各ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９のアクセスを優先させる。これにより、装置全体の処理がスムーズに行え、処理の遅延等といった不具合の発生を防ぐことが可能となる。
【００９５】
＝＝＝実際の処理の優先順位＝＝＝
図１１は、本実施形態におけるＳＤＲＡＭ１０２へのアクセスの優先順位について説明したものである。
【００９６】
優先順位は、同図に示すように、ＣＰＵ９０がリアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスする場合が最も高くなっている（Priority Group『１』参照）。さらに、ＣＰＵ９０がリアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスする場合であっても、ＣＰＵ９０がＳＤＲＡＭ１０２にデータを書き込むデータ書き込み処理を実行する場合と、ＣＰＵ９０がＳＤＲＡＭ１０２からデータを読み込むデータ読み込み処理を実行する場合とでは、優先度が異なる。すなわち、ここでは、ＣＰＵ９０がＳＤＲＡＭ１０２にデータを書き込むデータ書き込み処理の方が、ＣＰＵ９０がＳＤＲＡＭ１０２からデータを読み込むデータ読み込み処理よりも、優先順位が高くなっている（Priority Group『１』の「1-1」、「1-2」参照）。なお、ＣＰＵ９０がリアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスするのは、（Ａ）スキャナ機能時と、（Ｂ）プリンタ機能時（ＰＣ印刷時）と、（Ｃ）ローカルコピー機能時と、（Ｄ）メモリカード印刷時とがある。
【００９７】
次に優先順位が高いのは、スキャナコントロールユニット１０４がシェーディング補正を実行するためにＳＤＲＡＭ１０２からシェーディングテーブル１２１を読み出すためにＳＤＲＡＭ１０２にアクセスをする場合である（Priority Group『２』の「2-1」参照）。なお、スキャナコントロールユニット１０４がシェーディング補正を実行するためにＳＤＲＡＭ１０２からシェーディングテーブル１２１を読み出すのは、（Ａ）スキャナ機能時と、（Ｃ）ローカルコピー機能時とである。
【００９８】
次に優先順位が高いのは、ヘッドコントロールユニット１１６がＳＤＲＡＭ１０２のイメージバッファ１２６、１２７からヘッド駆動データを読み出す場合である（Priority Group『２』の「2-2」参照）。なお、ヘッドコントロールユニット１１６がＳＤＲＡＭ１０２のイメージバッファ１２６、１２７からヘッド駆動データを読み出す場合としては、（Ｂ）プリンタ機能時（ＰＣ印刷時）と、（Ｃ）ローカルコピー機能時とがある。
【００９９】
さらに次に優先順位が高いのは、スキャナコントロールユニット１０４がＳＤＲＡＭ１０２のラインバッファ１２０にデータを書き込む場合である（Priority Group『２』の「2-3」参照）。スキャナコントロールユニット１０４がＳＤＲＡＭ１０２のラインバッファ１２０にデータを書き込む場合としては、（Ａ）スキャナ機能時と、（Ｃ）ローカルコピー機能時とがある。
【０１００】
さらに次に優先順位が高いのは、ＳＤＲＡＭコントローラ１３８がＳＤＲＡＭ１０２に対して実行するＳＤＲＡＭ１０２のリフレッシュ動作である（Priority Group『３』参照）。このリフレッシュ動作は、定期的に実行されなければならない。ＳＤＲＡＭコントローラ１３８がＳＤＲＡＭ１０２にリフレッシュ動作を実行するのは、（Ａ）スキャナ機能時と、（Ｂ）プリンタ機能時（ＰＣ印刷時）と、（Ｃ）ローカルコピー機能時と、（Ｄ）メモリカード印刷時とである。
【０１０１】
そして、次に優先順位が高いのは、ＬＣＤコントロールユニット１１９がＳＤＲＡＭ１０２の表示用データ格納領域１３４から表示データを読み出す場合である（Priority Group『４』参照）。ＬＣＤコントロールユニット１１９は、表示用データ格納領域１３４から読み出した表示データを液晶ディスプレイ８０のフレームメモリ等に送信する。ＬＣＤコントロールユニット１１９がＳＤＲＡＭ１０２の表示用データ格納領域１３４から表示データを読み出すのは、（Ａ）スキャナ機能時と、（Ｂ）プリンタ機能時（ＰＣ印刷時）と、（Ｃ）ローカルコピー機能時と、（Ｄ）メモリカード印刷時とである。
【０１０２】
そして、次に優先順位が高いのは、ＣＰＵ９０が非リアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスする場合である（Priority Group『５』参照）。ただし、ここでも、ＣＰＵ９０がＳＤＲＡＭ１０２にデータを書き込むデータ書き込み処理を実行する場合と、ＣＰＵ９０がＳＤＲＡＭ１０２からデータを読み込むデータ読み込み処理を実行する場合とでは、優先度が異なる。すなわち、ここでは、ＣＰＵ９０がＳＤＲＡＭ１０２にデータを書き込むデータ書き込み処理の方が、ＣＰＵ９０がＳＤＲＡＭ１０２からデータを読み込むデータ読み込み処理よりも、優先順位が高くなっている（Priority Group『５』の「5-1」、「5-2」参照）。ＣＰＵ９０が非リアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスするのは、（Ａ）スキャナ機能時と、（Ｂ）プリンタ機能時（ＰＣ印刷時）と、（Ｃ）ローカルコピー機能時と、（Ｄ）メモリカード印刷時とである。
【０１０３】
そして、次に優先順位が高いのは、リサイズユニット１０６がＳＤＲＡＭ１０２上のリサイズバッファ１２２にアクセスをする場合である（Priority Group『６』の「6-1」、「6-2」参照）。なお、ここでは、リサイズユニット１０６がリサイズバッファ１２２にデータを書き込むデータ書き込み処理の方が、リサイズユニット１０６がリサイズバッファ１２２からデータを読み込むデータ読み込み処理よりも、優先順位が高くなっている。リサイズユニット１０６がＳＤＲＡＭ１０２上のリサイズバッファ１２２にアクセスをするのは、（Ｄ）メモリカード印刷時である。
【０１０４】
次に優先順位が高いのは、２値化処理ユニット１０８がＳＤＲＡＭ１０２上のＲＧＢバッファ１２３にアクセスをする場合である（Priority Group『６』の「6-3」、「6-4」参照）。なお、ここでは、２値化処理ユニット１０８がＲＧＢバッファ１２３にデータを書き込むデータ書き込み処理の方が、２値化処理ユニット１０８がＲＧＢバッファ１２３からデータを読み込むデータ読み込み処理よりも、優先順位が高くなっている。２値化処理ユニット１０８がＳＤＲＡＭ１０２上のＲＧＢバッファ１２３にアクセスをするのは、（Ｃ）ローカルコピー機能時と、（Ｄ）メモリカード印刷時とである。
【０１０５】
次に優先順位が高いのは、インターレース処理ユニット１１０がＳＤＲＡＭ１０２上のインターレースバッファ１２４からデータを読み込む処理である（Priority Group『６』の「6-5」参照）。そして、次に優先順位が高いのは、イメージバッファユニット１１２がＳＤＲＡＭ１０２上のイメージバッファ１２６、１２７にヘッド駆動データを書き込む場合である。インターレース処理ユニット１１０がＳＤＲＡＭ１０２上のインターレースバッファ１２４からデータを読み込むのは、（Ｃ）ローカルコピー機能時と、（Ｄ）メモリカード印刷時とである。
【０１０６】
このようにして優先順位が設定されることで、装置全体の処理がスムーズに行え、処理の遅延等といった不具合の発生を防ぐことができる。
【０１０７】
（Ａ）スキャナ機能時
スキャナ機能時には、ＣＰＵ９０がリアルタイム制御処理を実行するためのアクセスが最も優先されるため、ＣＰＵ９０によるリアルタイム制御処理が遅れることを回避することができる。また、次にスキャナコントロールユニット１０４がシェーディング補正を実行するためにＳＤＲＡＭ１０２からシェーディングテーブル１２１を読み出す処理が優先されるため、スキャナコントロールユニット１０４は、読み出した画像データに対して、ＳＤＲＡＭ１０２上のシェーディングテーブル１２１を参照しながら、スムーズにシェーディング補正を実行することができる。さらに次に、スキャナコントロールユニット１０４がＳＤＲＡＭ１０２のラインバッファ１２０にデータを書き込む処理が優先されるため、スキャナコントロールユニット１０４は、読み込んだ画像データをＳＤＲＡＭ１０２のラインバッファ１２０にスムーズに格納することができる。  
そして、ＣＰＵ９０が非リアルタイム制御処理を実行するためのアクセスについては、優先順位が低く設定されている。このため、スキャナ機能時には、スキャナコントロールユニット１０４によるシェーディング補正処理やラインバッファ１２０へのデータ格納処理をＣＰＵ９０の非リアルタイム制御処理よりも優先させることができる。  
また、ＳＤＲＡＭコントローラ１３８によるＳＤＲＡＭ１０２のリフレッシュ動作や、ＬＣＤコントロールユニット１１９による表示データの読み出し処理がＣＰＵ９０の非リアルタイム制御処理よりも高い優先順位に設定されている。これにより、ＳＤＲＡＭコントローラ１３８によるＳＤＲＡＭ１０２のリフレッシュ動作や、ＬＣＤコントロールユニット１１９による表示データの読み出し処理についても同様に、スムーズに行うことができる。
【０１０８】
（Ｂ）プリンタ機能時
プリンタ機能時には、ＣＰＵ９０がリアルタイム制御処理を実行するためのアクセスが最も優先されるため、ＣＰＵ９０によるリアルタイム制御処理が遅れることを回避することができる。また、次に、ヘッドコントロールユニット１１６がＳＤＲＡＭ１０２のイメージバッファ１２６、１２７からヘッド駆動データを読み出す処理が優先されるため、ヘッドコントロールユニット１１６は、ＳＤＲＡＭ１０２のイメージバッファ１２６、１２７からヘッド駆動データをスムーズに読み出すことができる。  
そして、ＣＰＵ９０が非リアルタイム制御処理を実行するためのアクセスについては、優先順位が低く設定されている。このため、プリンタ機能時には、ヘッドコントロールユニット１１６によるヘッド駆動データの読み出し処理をＣＰＵ９０の非リアルタイム制御処理よりも優先させることができる。  
また、ＳＤＲＡＭコントローラ１３８によるＳＤＲＡＭ１０２のリフレッシュ動作や、ＬＣＤコントロールユニット１１９による表示データの読み出し処理がＣＰＵ９０の非リアルタイム制御処理よりも高い優先順位に設定されている。これにより、ＳＤＲＡＭコントローラ１３８によるＳＤＲＡＭ１０２のリフレッシュ動作や、ＬＣＤコントロールユニット１１９による表示データの読み出し処理についても同様に、スムーズに行うことができる。
【０１０９】
（Ｃ）ローカルコピー機能時
ローカルコピー機能時には、ＣＰＵ９０がリアルタイム制御処理を実行するためのアクセスが最も優先されるため、ＣＰＵ９０によるリアルタイム制御処理が遅れることを回避することができる。また、次に、スキャナコントロールユニット１０４がシェーディング補正を実行するためにＳＤＲＡＭ１０２からシェーディングテーブル１２１を読み出す処理が優先されるため、スキャナコントロールユニット１０４は、読み出した画像データに対して、ＳＤＲＡＭ１０２上のシェーディングテーブル１２１を参照しながら、スムーズにシェーディング補正を実行することができる。  
さらに次に、ヘッドコントロールユニット１１６がＳＤＲＡＭ１０２のイメージバッファ１２６、１２７からヘッド駆動データを読み出す処理が優先されるため、ヘッドコントロールユニット１１６は、ＳＤＲＡＭ１０２のイメージバッファ１２６、１２７からヘッド駆動データをスムーズに読み出すことができる。  
そして、次に、スキャナコントロールユニット１０４がＳＤＲＡＭ１０２のラインバッファ１２０にデータを書き込む処理が優先されるため、スキャナコントロールユニット１０４は、読み込んだ画像データをＳＤＲＡＭ１０２のラインバッファ１２０にスムーズに格納することができる。  
そして、ＣＰＵ９０が非リアルタイム制御処理を実行するためのアクセスについては、優先順位が低く設定されている。このため、ローカルコピー機能時には、スキャナコントロールユニット１０４によるシェーディング補正処理やラインバッファ１２０へのデータ格納処理、またヘッドコントロールユニット１１６によるヘッド駆動データの読み出し処理をＣＰＵ９０の非リアルタイム制御処理よりも優先させることができる。  
また、ＳＤＲＡＭコントローラ１３８によるＳＤＲＡＭ１０２のリフレッシュ動作や、ＬＣＤコントロールユニット１１９による表示データの読み出し処理がＣＰＵ９０の非リアルタイム制御処理よりも高い優先順位に設定されている。これにより、ＳＤＲＡＭコントローラ１３８によるＳＤＲＡＭ１０２のリフレッシュ動作や、ＬＣＤコントロールユニット１１９による表示データの読み出し処理についても同様に、スムーズに行うことができる。
【０１１０】
（Ｄ）メモリカード印刷時
メモリカード印刷時には、ＣＰＵ９０がリアルタイム制御処理を実行するためのアクセスが最も優先されるため、ＣＰＵ９０によるリアルタイム制御処理が遅れることを回避することができる。  
また、ＳＤＲＡＭコントローラ１３８によるＳＤＲＡＭ１０２のリフレッシュ動作や、ＬＣＤコントロールユニット１１９による表示データの読み出し処理がＣＰＵ９０の非リアルタイム制御処理よりも高い優先順位に設定されている。これにより、ＳＤＲＡＭコントローラ１３８によるＳＤＲＡＭ１０２のリフレッシュ動作や、ＬＣＤコントロールユニット１１９による表示データの読み出し処理についても同様に、スムーズに行うことができる。
【０１１１】
＝＝＝ＣＰＵの実行処理の判断方法＝＝＝
ＳＤＲＡＭコントローラ１３８は、バスコントロールユニット１１４を介してＣＰＵ９０がＳＤＲＡＭ１０２にアクセスをしてきたときに、そのアクセスが、リアルタイム制御処理を実行するためのアクセスなのか、非リアルタイム制御処理を実行するためのアクセスなのかを次のようにして判断する。
【０１１２】
図１２は、ＣＰＵ９０がＳＤＲＡＭ１０２にアクセスをしてきたときに、そのアクセスが、リアルタイム制御処理を実行するためのアクセスなのか、非リアルタイム制御処理を実行するためのアクセスなのかをＳＤＲＡＭコントローラ１３８により判断する方法について説明したものである。
【０１１３】
ＣＰＵ９０とバスコントロールユニット１１４との間には、同図に示すように、アドレス信号線と、データ信号線とが設けられている。アドレス信号線は、ＣＰＵ９０がアクセスするＳＤＲＡＭ１０２上のアドレスを指定するための信号を伝達する。また、データ信号線は、ＳＤＲＡＭ１０２に書き込むデータを送ったり、またＳＤＲＡＭ１０２から読み込まれたデータを取得するための信号を伝達する。ここでは、データ信号として３２ビット（４バイト）の幅でデータのやり取りが行われる。
【０１１４】
また、バスコントロールユニット１１４と、ＳＤＲＡＭコントローラとの間にも、同図に示すように、アドレス信号線と、データ信号線とが設けられている。アドレス信号線は、ＣＰＵ９０がアクセスするＳＤＲＡＭ１０２上のアドレスを指定するための信号を伝達する。また、データ信号線は、ＳＤＲＡＭ１０２に書き込むデータを送ったり、またＳＤＲＡＭ１０２から読み込まれたデータを取得するための信号を伝達する。ここでは、データ信号として１２８ビット（１６バイト）の幅でデータのやり取りが行われる。
【０１１５】
バスコントロールユニット１１４からＳＤＲＡＭコントローラ１３８へは、同図に示すように、ＣＰＵ９０のＳＤＲＡＭ１０２へのアクセスが、リアルタイム制御処理を実行するためのアクセスなのか、非リアルタイム制御処理を実行するためのアクセスなのかを指示するための識別信号が出力される。ＳＤＲＡＭコントローラ１３８は、バスコントロールユニット１１４から出力された識別信号に基づき、ＣＰＵ９０のアクセスが、リアルタイム制御処理を実行するためのアクセスなのか、非リアルタイム制御処理を実行するためのアクセスなのかを判断する。
【０１１６】
一方、バスコントロールユニット１１４は、ＣＰＵ９０がＳＤＲＡＭ１０２にアクセスをするためのアドレス信号に基づき、ＣＰＵ９０のアクセスが、リアルタイム制御処理を実行するためのアクセスなのか、非リアルタイム制御処理を実行するためのアクセスなのかを判断する。
【０１１７】
図１３は、バスコントロールユニット１１４によりＣＰＵ９０のＳＤＲＡＭ１０２へのアクセスが、リアルタイム制御処理を実行するためのアクセスなのか、非リアルタイム制御処理を実行するためのアクセスなのかを判別する方法について説明したものである。ＣＰＵ９０の空間メモリには、同図に示すように、リアルタイム制御処理用データ格納領域１３０と、非リアルタイム制御処理用データ格納領域１３２とが設定されている。ＣＰＵ９０は、リアルタイム制御処理を実行する場合には、リアルタイム制御処理用データ格納領域１３０にアクセスをする。一方、ＣＰＵ９０は、非リアルタイム制御処理を実行する場合には、非リアルタイム制御処理用データ格納領域１３２にアクセスをする。
【０１１８】
リアルタイム制御処理用データ格納領域１３０と、非リアルタイム制御処理用データ格納領域１３２とでは、ＣＰＵ９０が指示するアドレスが異なる。このことから、バスコントロールユニット１１４は、ＣＰＵ９０が指示するアドレスに基づき、ＣＰＵ９０のアクセスが、リアルタイム制御処理を実行するためのアクセスなのか、非リアルタイム制御処理を実行するためのアクセスなのかを判別する。そして、バスコントロールユニット１１４は、判別した結果に基づき、ＳＤＲＡＭコントローラ１３８に向けて識別信号を出力する。
【０１１９】
＝＝＝まとめ＝＝＝
本実施形態では、ＣＰＵ９０が、所定の時間内に処理の完了が要求されるリアルタイム制御に関わるリアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスをした場合には、ＣＰＵ９０のアクセスを他の各ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９のアクセスよりも優先させるとともに、ＣＰＵ９０が、リアルタイム制御処理とは異なる非リアルタイム制御処理を実行するためにＳＤＲＡＭ１０２にアクセスをした場合には、ＣＰＵ９０のアクセスよりも他の各ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９のアクセスを優先させることで、装置全体の処理をスムーズに行うことができる。これにより、処理の遅延等といった不具合の発生を防ぐことができる。
【０１２０】
＝＝＝その他の実施の形態＝＝＝
以上、一実施形態に基づき、本発明について説明したが、上記の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更または改良され得るとともに、本発明には、その等価物が含まれることは言うまでもない。特に、以下に述べる実施形態であっても、本発明に含まれるものである。
【０１２１】
＜メモリについて＞
前述した実施の形態では、「メモリ」としてＳＤＲＡＭを備えた場合を例にして説明したが、ここでいう「メモリ」にあっては、このようなＳＤＲＡＭに限られるものではなく、他の種類のメモリであっても良い。
【０１２２】
＜ハードウェアモジュールについて＞
前述した実施の形態では、「ハードウェアモジュール」として、スキャナコントロールユニット１０４やリサイズユニット１０６、２値化処理ユニット１０８、インターレース処理ユニット１１０、イメージバッファユニット１１２、ヘッドコントロールユニット１１６、ＬＣＤコントロールユニット１１９などのユニットを備えた場合を例にして説明したが、ここでいう「ハードウェアモジュール」にあっては、このようなユニットには限られない。すなわち、メモリ（ここでは、ＳＤＲＡＭ１０２）にアクセスをするハードウェアモジュールであれば、どのようなタイプのものであっても良い。  
また、前述した実施の形態では、「ハードウェアモジュール」が複数設けられていたが、ここでいう「ハードウェアモジュール」にあっては、１つのみが設けられていても良い。
【０１２３】
＜リアルタイム制御処理について＞
前述した実施の形態では、「リアルタイム制御処理」として、キャナ用キャリッジ６０を移動させるための駆動モータ７７を制御する処理や、プリンタ用キャリッジ４１を移動させるためのキャリッジモータ４２を制御する処理などが例示されていたが、ここでいう「リアルタイム制御処理」にあっては、このようなリアルタイム制御処理に限られず、所定の時間内に処理の完了が要求されるリアルタイム制御であれば、どのようなものであっても構わない。
【０１２４】
＜メモリコントローラについて＞
前述した実施の形態では、「メモリコントローラ」として、ＳＤＲＡＭコントローラ１３８を備えた場合を例にして説明したが、ここでいう「メモリコントローラ」にあっては、このようなＳＤＲＡＭコントローラ１３８には限られず、使用される「メモリ」のタイプに応じてそれぞれ異なる。
【０１２５】
＜アクセスについて＞
前述した実施の形態では、ＣＰＵ９０またはハードウェアモジュール（ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９）のアクセスとして、メモリ（ＳＤＲＡＭ１０２）へデータを書き込むデータ書き込み処理およびメモリ（ＳＤＲＡＭ１０２）からデータを読み込むデータ読み込み処理が例示されていたが、ＣＰＵ９０またはハードウェアモジュール（ユニット１０４、１０６、１０８、１１０、１１２、１１６、１１９）のアクセスとしては、他の目的が含まれていても良い。
【図面の簡単な説明】
【０１２６】
【図１】複合装置の一例を説明する斜視図。
【図２】複合装置のスキャナ部のカバーを開いたときの斜視図。
【図３】複合装置の印刷部を示す斜視図。
【図４】複合装置のスキャナ部及びプリンタ部の構成を説明する説明図。
【図５】複合装置の操作パネルを説明する説明図。
【図６】複合装置の制御部のシステム構成の一例の説明図。
【図７】スキャナ機能時の制御部のデータの流れの説明図。
【図８】プリンタ機能時の制御部のデータの流れの説明図。
【図９】ローカルコピー機能時の制御部のデータの流れの説明図。
【図１０】メモリカード印刷時の制御部のデータの流れの説明図。
【図１１】メモリへのアクセスの優先順位の一例の説明図。
【図１２】ＣＰＵが実行する処理の識別方法の説明図。
【図１３】ＣＰＵが実行する処理がリアルタイム制御処理か否かの判断方法の説明図。
【符号の説明】
【０１２７】
１  複合装置、２  操作パネル、３  排紙部、４  給紙部、５  原稿、６  上部、
７  排紙トレイ、９  下部、１０  スキャナ部、１１  原稿台、１２  原稿台カバー、
１４  プラテン、１５  搬送モータ、１７Ａ  搬送ローラ、２０  カードリーダー部、
２１  ヘッド、２２  背部給紙口、２３  前部給紙口、２４  駆動機構、
２５  排紙トレイ、２６  インクカートリッジ、２７  インクカートリッジカバー、
３０  プリンタ部、３４  ヒンジ部、３６  搬送機構、４１  キャリッジ、
４２  キャリッジモータ、４４  プーリ、４５  タイミングベルト、
４６  ガイドレール、５０  制御部、５１  リニア式エンコーダ符号板、
５２  検出部、５３  紙検知センサ、５６  ロータリ式エンコーダ、
６０  スキャナ用キャリッジ、６２  駆動機構、６４  ガイド、６６  露光ランプ、
７０  レンズ、７２  イメージセンサ、７４  タイミングベルト、
７５  プーリ、７６  プーリ、７７  駆動モータ、８０  液晶ディスプレイ、
８２  電源ボタン、８３  設定ボタン、８４  ストップボタン、
８５  モード選択ボタン、８６  カーソル操作ボタン群、
８７  スタートボタン、８７Ｃ  カラーボタン、８７Ｂ  モノクロボタン、
９０  ＣＰＵ、９２  カードＡＳＩＣ、９４  制御ＡＳＩＣ、
９６  カードインターフェイス、９８  ＣＰＵバス、１０２  ＳＤＲＡＭ、
１０４  スキャナコントロールユニット、１０６  リサイズユニット、
１０８  ２値化処理ユニット、１１０  インターレース処理ユニット、
１１２  イメージバッファユニット、１１４  バスコントロールユニット、
１１６  ヘッドコントロールユニット、１１８  ＵＳＢインターフェイス、
１１９  ＬＣＤコントロールユニット、１２０  ラインバッファ、
１２１  シェーディングテーブル、１２２  リサイズバッファ、
１２３  ＲＧＢバッファ、１２４  インターレースバッファ、
１２６  イメージバッファ、１２７  イメージバッファ、１２８  ローカルバス、
１３０  リアルタイム制御処理用データ格納領域、
１３２  非リアルタイム制御処理用データ格納領域、
１３４  表示用データ格納領域、１３６  ルックアップテーブル（ＬＵＴ）、
１３８  ＳＤＲＡＭコントローラ、１４０  ホストコンピュータ
【図１】
2007172268.tif 000003
【図２】
2007172268.tif 000004
【図３】
2007172268.tif 000005
【図４】
2007172268.tif 000006
【図５】
2007172268.tif 000007
【図６】
2007172268.tif 000008
【図７】
2007172268.tif 000009
【図８】
2007172268.tif 000010
【図９】
2007172268.tif 000011
【図１０】
2007172268.tif 000012
【図１１】
2007172268.tif 000013
【図１２】
2007172268.tif 000014
【図１３】
2007172268.tif 000015