(57)【要約】      （修正有）【課題】ＦＰＧＡを有効活用できない事態発生を避けて、システム全体のパフォーマンスを低下を防止する。【解決手段】それぞれが並行して処理できる複数の処理手段を有し、複数の処理手段の少なくとも一つがＦＰＧＡを有する画像処理装置であって、管理している複数の処理手段の使用状況と複数の処理手段の少なくとも一つを使用して実行する複数の処理形態から、所定の処理を実行するために選択された処理形態とに基づいて処理形態を決定する。その決定された処理形態で要求された処理を実行するように制御し、その要求された処理を実行している際、決定された処理形態で使用されていない複数の処理手段のいずれかが要求された処理を実行可能になったかどうかを、管理手段が管理している使用状況に基づいて判定し、その判定に従って要求された処理を要求された処理を実行可能になった処理手段を使用する処理形態で実行するように処理形態を切り替える。【選択図】図２１
2017085322.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが並行して処理できる複数の処理手段を有し、前記複数の処理手段の少なくとも一つがＦＰＧＡ（Field Programmable Gate Array）を有する画像処理装置であって、
前記複数の処理手段の少なくとも一つを使用して実行する複数の処理形態から、所定の処理を実行するための処理形態を選択する選択手段と、
前記複数の処理手段の使用状況を管理する管理手段と、
処理の要求を受け付けると、前記要求された処理を実行するための処理形態を、前記管理手段が管理している前記複数の処理手段の使用状況と、前記選択手段により選択された処理形態とに基づいて決定する決定手段と、
前記決定手段により決定された処理形態で前記要求された処理を実行するように制御する制御手段と、
前記制御手段により前記要求された処理を実行している際、前記決定された処理形態で使用されていない前記複数の処理手段のいずれかが前記要求された処理を実行可能になったかどうかを、前記管理手段が管理している前記使用状況に基づいて判定する判定手段と、
前記判定手段の判定に従って、前記要求された処理を、前記要求された処理を実行可能になった処理手段を使用する処理形態で実行するように処理形態を切り替える切替手段と、を有し、
前記制御手段は、前記切替手段により処理形態の切り替えがなされると、前記実行するように切替えられた処理形態が、前記ＦＰＧＡを使用する処理形態であれば前記ＦＰＧＡを前記要求された処理に従って再構成することを特徴とする画像処理装置。
【請求項２】
前記制御手段は更に、前記決定手段により決定された処理形態で前記要求された処理を実行する際、当該決定された処理形態が前記ＦＰＧＡを使用する処理形態であれば前記ＦＰＧＡを、前記要求された処理に従って再構成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記選択手段は、前記所定の処理に対応つけて前記複数の処理形態を優先度とともに記憶しており、前記優先度に従って前記所定の処理を実行するための処理形態を選択することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記複数の処理形態は、前記複数の処理手段の一つ或いは複数を使用する処理形態であることを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記要求された処理は、複数のページの画像処理を含み、前記制御手段は、前記切替手段により前記実行するように切替えられた処理形態で前記複数のページの画像処理を実行するように制御することを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
前記要求された処理は複数のページの画像処理を含み、前記制御手段は、前記切替手段による切り替えがなされたときに処理中であったページの画像処理を中断し、前記切替手段により前記実行するように切替えられた処理形態で、前記複数のページの前記処理中であったページを含む残りのページの画像処理を実行するように制御することを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
前記要求された処理は複数のページの画像処理を含み、前記制御手段は、前記切替手段による切り替えがなされたときに処理中であったページの画像処理が完了した後、前記切替手段により前記実行するように切替えられた処理形態で、前記複数のページの残りのページの画像処理を実行するように制御することを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項８】
前記要求された処理は複数のページの画像処理を含み、前記制御手段は、前記切替手段による切り替えがなされたときに処理中であったページの画像処理の進捗状況に応じて、前記切替手段による切り替えがなされたときに処理中であったページの画像処理を中断し、前記切替手段により前記実行するように切替えられた処理形態で、前記複数のページの前記処理中であったページを含む残りのページの画像処理を実行するか、或いは前記切替手段による切り替えがなされたときに処理中であったページの画像処理が完了した後、前記切替手段により前記実行するように切替えられた処理形態で、前記複数のページの残りのページの画像処理を実行するように制御することを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項９】
それぞれが並行して処理できる複数の処理手段を有し、前記複数の処理手段の少なくとも一つがＦＰＧＡを有する画像処理装置を制御する制御方法であって、
選択手段が、前記複数の処理手段の少なくとも一つを使用して実行する複数の処理形態から、所定の処理を実行するための処理形態を選択する選択工程と、
管理手段が、前記複数の処理手段の使用状況を管理する管理工程と、
決定手段が、処理の要求を受け付けると、前記要求された処理を実行するための処理形態を、前記管理工程が管理している前記複数の処理手段の使用状況と、前記選択工程で選択された処理形態とに基づいて決定する決定工程と、
制御手段が、前記決定工程で決定された処理形態で前記要求された処理を実行するように制御する制御工程と、
判定手段が、前記制御工程が前記要求された処理を実行している際、前記決定された処理形態で使用されていない前記複数の処理手段のいずれかが前記要求された処理を実行可能になったかどうかを、前記管理工程が管理している前記使用状況に基づいて判定する判定工程と、
切替手段が、前記判定工程の判定に従って、前記要求された処理を、前記要求された処理を実行可能になった処理手段を使用する処理形態で実行するように処理形態を切り替える切替工程と、を有し、
前記制御工程は、前記切替工程で処理形態の切り替えがなされると、前記実行するように切替えられた処理形態が、前記ＦＰＧＡを使用する処理形態であれば前記ＦＰＧＡを前記要求された処理に従って再構成することを特徴とする制御方法。
【請求項１０】
コンピュータを、請求項１乃至８のいずれか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置とその制御方法、及びプログラムに関する
【背景技術】
【０００２】
特許文献１は、ＦＰＧＡ（Field Programmable Gate Array）の回路構成を変更する方法として、従来のようにＲＯＭからコンフィギュレーションデータをロードする方法とは異なる新しい手法を開示している。それによれば、ＣＰＵをマスターデバイスとし、ＨＤＤからコンフィギュレーションデータ（回路構成情報）をＦＰＧＡにロードしている。この手法によれば、ＲＯＭのデータを書き換えることなく、ＨＤＤから、その機能に対応するファイルをロードするだけでＦＰＧＡの回路構成を更新できる。
【０００３】
また特許文献２は、プログラムで動作する逐次演算部、並列演算部、及びそれらを制御するＣＰＵを有するシステムにおいて、ＣＰＵは逐次演算部、並列演算部にプログラムを送信し、両演算部はそのプログラムで動作することを記載している。このとき逐次演算部、並列演算部は、それぞれ自分自身で負荷を測定し、その測定した負荷量をＣＰＵに通知し、ＣＰＵは、その負荷量に基づいて、その処理を実行する逐次演算部もしくは並列演算部を決定し、その処理を実行するように指示している。このとき、ＣＰＵから指示を受けた演算部は、処理を受けた後に、自身がその処理を受け入れ可能かどうかを判定し、受け入れ可能と判定した場合にその処理を開始する。一方、その処理を受け入れられないと判定した場合は、受け入れ可能になるまで、その演算部で、その処理の実行が待たされることが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−０９８８２３号公報
【特許文献２】特開２０１１−１９１９０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＣＰＵによる回路構成の変更が可能な（コンフィグレーション可能な）ＦＰＧＡを備え、同一の処理をＣＰＵとＦＰＧＡとで実行できる処理部を複数備えるシステムに、上述の特許文献２で提案されているような技術を適用する場合を考える。このとき、ＦＰＧＡにより実行させたい処理がある場合、ＣＰＵが処理を実行中でなくＦＰＧＡが別の処理を実行中であると、そのＦＰＧＡによる別の処理が終了するまで、実行させたい処理の開始が待たされることになる。また仮に、実行中でないＣＰＵがその実行させたい処理を開始した場合、ＣＰＵがその処理を実行中に、ＦＰＧＡが使用状態から未使用状態に変化することが考えられる。このように、単に処理を開始する前に、ＣＰＵやＦＰＧＡそれぞれの状況に応じて処理の振分けを行うと、ＦＰＧＡを有効活用できない事態が発生し、システム全体のパフォーマンスを向上できないおそれがある。
【０００６】
本発明の目的は、上記従来技術の課題を解決することにある。
【０００７】
本発明の特徴は、選択された処理形態により処理を実行中に、刻々と変わる処理状況に応じて最適な処理形態で処理を実行する技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明の一態様に係る画像処理装置は以下のような構成を備える。即ち、
それぞれが並行して処理できる複数の処理手段を有し、前記複数の処理手段の少なくとも一つがＦＰＧＡ（Field Programmable Gate Array）を有する画像処理装置であって、
前記複数の処理手段の少なくとも一つを使用して実行する複数の処理形態から、所定の処理を実行するための処理形態を選択する選択手段と、
前記複数の処理手段の使用状況を管理する管理手段と、
処理の要求を受け付けると、前記要求された処理を実行するための処理形態を、前記管理手段が管理している前記複数の処理手段の使用状況と、前記選択手段により選択された処理形態とに基づいて決定する決定手段と、
前記決定手段により決定された処理形態で前記要求された処理を実行するように制御する制御手段と、
前記制御手段により前記要求された処理を実行している際、前記決定された処理形態で使用されていない前記複数の処理手段のいずれかが前記要求された処理を実行可能になったかどうかを、前記管理手段が管理している前記使用状況に基づいて判定する判定手段と、
前記判定手段の判定に従って、前記要求された処理を、前記要求された処理を実行可能になった処理手段を使用する処理形態で実行するように処理形態を切り替える切替手段と、を有し、
前記制御手段は、前記切替手段により処理形態の切り替えがなされると、前記実行するように切替えられた処理形態が、前記ＦＰＧＡを使用する処理形態であれば前記ＦＰＧＡを前記要求された処理に従って再構成することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、所定の処理を、選択された処理形態で開始した後、他の処理手段が実行可能になると、所定の処理をほかの処理形態に切替えて実行できるようになる。これにより、画像処理等の処理時間が短縮されて、パフォーマンスを向上することが可能となる。
【００１０】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１１】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】本発明の実施形態に係る画像形成装置の構成を説明するブロック図。
【図２】実施形態に係る画像形成装置の拡張処理部の構成を説明するブロック図。
【図３】実施形態に係るＦＰＧＡの構成を説明するブロック図。
【図４】実施形態に係る画像形成装置のＨＤＤに記憶されているＦＰＧＡの回路構成情報の構成を説明する図。
【図５】実施形態に係る画像形成装置において拡張画像処理を実行するときの処理の流れを説明するフローチャート。
【図６】実施形態に係る画像形成装置のメインのＣＰＵと、ＦＰＧＡのＣＰＵのそれぞれが担当している処理を説明する図。
【図７】実施形態に係る拡張処理キューの構成例を説明する図。
【図８】実施形態に係る画像形成装置が拡張処理を実行する際に取り得る処理形態を説明する図。
【図９】実施形態に係る画像形成装置が保持する処理形態管理テーブルの一例を示す図。
【図１０】図５のＳ５００の拡張処理要求の受信処理を説明するフローチャート。
【図１１】図５のＳ５０１の拡張処理要求の選択処理を説明するフローチャート。
【図１２】図５のＳ５０２の処理形態の選択処理を説明するフローチャート。
【図１３】実施形態に係る処理部の空き状況を管理する空き状況管理テーブルの一例を示す図。
【図１４】実施形態に係る拡張処理実行管理テーブルの一例を示す図。
【図１５】実施形態に係る画像形成装置におけるＦＰＧＡの再構成処理を説明するフローチャート。
【図１６】実施形態に係る画像形成装置における画像処理要求の受信処理を説明するフローチャート。
【図１７】実施形態に係る画像形成装置が保持するページ状況管理テーブルの一例を示す図。
【図１８】実施形態に係る画像形成装置が保持するページ内状況管理テーブルの一例を示す図。
【図１９】実施形態に係る画像形成装置が画像処理の実行スレッドにより実行する画像処理制御を説明するフローチャート。
【図２０】実施形態に係る画像形成装置による拡張処理の終了処理（図５のＳ５０７）を説明するフローチャート。
【図２１】図２０のＳ２００３の処理形態の最適化処理を説明するフローチャート。
【図２２】実施形態に係る画像形成装置による第一の処理形態の切換処理（Ｓ２１０７）を説明するフローチャート。
【図２３】実施形態に係る画像形成装置による第二の処理形態の切換処理（Ｓ２１０７）を説明するフローチャート。
【図２４】実施形態に係る画像形成装置による第三の処理形態の切換処理（Ｓ２１０７）を説明するフローチャート。
【図２５】実施形態に係る画像形成装置による第四の処理形態の切換処理（Ｓ２１０７）を説明するフローチャート。
【図２６】実施形態に係る画像形成装置で実行される４つの処理形態の切換処理の違いを説明する模式図。
【図２７】実施形態に係る画像形成装置で実行される４つの処理形態の切換処理の違いを説明する模式図。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１３】
図１は、本発明の実施形態に係る画像形成装置１００の構成を説明するブロック図である。
【００１４】
この実施形態に係る画像形成装置１００は、画像データの入出力や送受信と、それに関連する各種の画像処理を行うことができる複合機（ＭＦＰ）として説明するが、本発明に係る画像処理装置はこのような多機能の画像形成装置に限らない。画像形成装置１００は、メインコントローラ（主制御部）１０１、ユーザインタフェースである操作部１０２、画像入力デバイスであるスキャナ１０３、及び、画像出力デバイスであるプリンタ１０４を備える。操作部１０２、スキャナ１０３及び、プリンタ１０４は、それぞれメインコントローラ１０１に接続され、メインコントローラ１０１が各部の動作を制御する。また画像形成装置１００は、メインコントローラ１０１が備える、後述する拡張Ｉ／Ｆ１２９を介して拡張処理部１０５と接続している。メインコントローラ１０１は、主制御を司るＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０６を備える。ＣＰＵ１０６は、システムバス１３０を介して、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０７、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０８、不揮発メモリ１０９、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１２１と接続する。更に、ＣＰＵ１０６は、画像バスＩ／Ｆ（インタフェース）１１０、操作部Ｉ／Ｆ１１１、ネットワーク（ＮＷ）通信部１１２、モデム１１３、及び、拡張Ｉ／Ｆ１２９と接続する。
【００１５】
ＲＡＭ１０７は、ＣＰＵ１０６の主記憶部として作業領域を提供する読み書き可能なメモリで、処理する画像データを一時記憶するための画像メモリとしても使用される。ＲＯＭ１０８はブートＲＯＭで、起動に必要なブートプログラム、及び、動作に必要な各種処理プログラムを格納している。不揮発メモリ１０９は、例えばフラッシュメモリ等の不揮発性メモリで、画像形成装置１００の電源遮断後にも保持が必要なシステムソフトウエアや設定値や各種データ等を格納している。操作部Ｉ／Ｆ１１１は、例えば、タッチパネル機能を有する操作部１０２との間で入出力を行うためのインタフェースである。操作部Ｉ／Ｆ１１１は、操作部１０２に対して表示すべき画像データを出力し、またユーザが操作部１０２を介して入力した情報をＣＰＵ１０６に伝送する。ネットワーク通信部１１２は、ＬＡＮ等のネットワークと接続するためのインタフェースで、ＬＡＮに対して情報の入出力を行う。モデム１１３は公衆回線と接続し、公衆回線との間で情報の入出力を行う。画像バスＩ／Ｆ１１０は、システムバス１３０と画像データを転送するための画像バス１１４とを接続するインタフェースであり、データ構造を変換するバスブリッジとして動作する。
【００１６】
画像バス１１４には、ＲＩＰ（Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ）１１５、デバイスＩ／Ｆ１１６、スキャナ画像処理部１１７、プリンタ画像処理部１１８、画像回転部１１９、及び、画像圧縮部１２０が接続される。ＲＩＰ１１５は、ＬＡＮから受信したＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）データをビットマップイメージに展開する。デバイスＩ／Ｆ１１６は、スキャナ１０３やプリンタ１０４とメインコントローラ１０１とを接続するインタフェースであり、画像データの同期系、又は、非同期系の変換を行う。スキャナ画像処理部１１７は、スキャナ１０３から入力した画像データに対して、補正、加工、編集等の画像処理を行う。プリンタ画像処理部１１８は、プリンタ１０４へ出力する画像データに対して、色変換、フィルタ処理、解像度変換等の処理を行う。画像回転部１１９は、画像データの回転を行う。画像圧縮部１２０は、多値画像データに対して、例えばＪＰＥＧ圧縮伸張処理を行い、２値画像データに対して、例えばＪＢＩＧ、ＭＭＲ、ＭＨなどの符号化方式を用いた圧縮伸張処理を行う。
【００１７】
ＨＤＤ１２１は不揮発のデータ記憶装置であり、画像データ、システムデータ、ユーザデータ等の各種データ、及び、ＣＰＵ１０６が実行する動作プログラム等を保持している。拡張処理部１０５として接続されるＦＰＧＡを備えるオプションボードの制御プログラムや回路構成情報もこれに含まれる。メインコントローラ１０１が、ＨＤＤ１２１を接続しない構成を採る場合は、各種データは不揮発メモリ１０９に保持される。拡張Ｉ／Ｆ１２９は、例えば、ＰＣＩエクスプレスやＵＳＢなどの周辺機器接続用のインタフェースであり、接続される周辺機器とのデータ送受信を行う。実施形態では、拡張処理部１０５と接続される。また拡張処理部１０５への電源供給は、後述する電力供給ライン１２８を通して行われる。拡張処理部１０５の詳細は後述する。
【００１８】
電源制御部１２２は、電源装置１２３から電力供給ライン１２４を介して受容したＤＣ電源を、電力供給ライン１２５及び１２６を介してメインコントローラ１０１の回路要素１４０，１４１に供給する。また電力供給ライン１２８は、拡張処理部１０５に電源を供給する。電源制御部１２２は、後述する画像形成装置１００の電力状態に応じて電源供給形態を切り換えて給電制御を行う。また電源制御部１２２は、操作部Ｉ／Ｆ１１１、ネットワーク通信部１１２、及び、モデム１１３、及び、ＣＰＵ１０６からの制御信号線１２７を介して制御信号を受信する。そして、この受信した制御信号に基づいて各電力供給ライン（１２５，１２６，１２８）への電力供給制御を行う。電力供給ライン１２５は、ＲＩＰ１１５、デバイスＩ／Ｆ１１６、スキャナ画像処理部１１７、プリンタ画像処理部１１８、画像回転部１１９、及び、画像圧縮部１２０を含む回路要素１４０に接続される。また電力供給ライン１２６は、ＣＰＵ１０６、ＲＯＭ１０８、ＲＡＭ１０７、画像バスＩ／Ｆ１１０、操作部Ｉ／Ｆ１１１、ＮＷ通信部１１２、モデム部１１３、ＨＤＤ１２１、及び、拡張Ｉ／Ｆ１２９を含む回路要素１４１に接続される。更に電力供給ライン１２８は、拡張Ｉ／Ｆ１２９に接続される回路要素１４２へ電力を供給する。
【００１９】
ここで画像形成装置１００は、通常状態と省電力状態の２つの動作状態を取り得る。通常状態では、電源装置１２３は、電力供給ライン１２４を介して電源制御部１２２に電力供給する。このとき電源装置１２３は、大容量の電源回路と小容量の電源回路を併用し、通常状態で使用する全電力容量（例えば、１４００ワット）を供給できる。またＣＰＵ１０６は、電力供給ライン１２５、電力供給ライン１２６、及び、電力供給ライン１２８に対する電力供給が有効となるように電源制御部１２２を制御する。
【００２０】
一方、省電力状態では、電源装置１２３は、電力供給ライン１２４を介して電源制御部１２２に電力を供給する。このとき電源装置１２３は、小容量の電源回路を使用し、省電力状態で使用する電力容量（例えば、３０ワット）を供給できる。またＣＰＵ１０６は、電力供給ライン１２５と電力供給ライン１２８を介した電力供給が無効で、かつ、電力供給ライン１２６を介した電力供給が有効となるように電源制御部１２２を制御する。このとき、省電力状態で使用を想定しない機能を備える回路要素１４０や回路要素１４２に対する電力供給は遮断される。従って、その分、通常状態よりも消費電力を低減できる。他方、省電力状態においても電源供給ライン１２６を介した電力供給は有効であり、回路要素１４１を構成する各回路要素は、通常状態と同様に動作できる。
【００２１】
図２は、実施形態に係る画像形成装置の拡張処理部１０５の構成を説明するブロック図である。
【００２２】
拡張処理部１０５は、ホストＩ／Ｆ２０１、ＦＰＧＡ（Field Programmable Gate Array）２０２、ＲＡＭ２０３、ＣＰＵ２０４、ＲＡＭ２０５、及びそれらを接続するシステムバス２０６を有している。ＦＰＧＡ２０２は、回路構成情報に応じて論理回路を変更できる再構成デバイスであり、本実施形態では動的に回路を構成できるＦＰＧＡとして説明する。ＦＰＧＡ２０２の構成は図３を参照して後述する。
【００２３】
ＲＡＭ２０３は、ＦＰＧＡ２０２が動作時にワークエリアとして使用する主記憶メモリであり、画像データ等の中間処理データを一時的に保持するのに使用される。ＣＰＵ２０４は、ホストＩ／Ｆ２０１、ＦＰＧＡ２０２及び、ＲＡＭ２０５と接続され、ＦＰＧＡ２０２の制御やソフトウエアによる画像処理を行う。ＲＡＭ２０５は、ＣＰＵ２０４の主記憶メモリとして使用されるメモリで、画像データを一時記憶するための画像メモリとしても使用される。システムバス２０６は、ホストＩ／Ｆ２０１、ＦＰＧＡ２０２、及び、ＣＰＵ２０４を接続するバスである。この拡張処理部１０５をメインコントローラ１０１に接続することにより、画像形成装置１００は、ＦＰＧＡ２０２やＣＰＵ２０４を使用した画像処理機能を拡張機能として実行できる。この拡張処理部１０５を用いた拡張処理の制御については後述する。
【００２４】
図３は、実施形態に係るＦＰＧＡ２０２の構成を説明するブロック図である。
【００２５】
ＦＰＧＡ２０２は、ホストＩ／Ｆ２０１と接続するためのホストＩ／Ｆ３０４、ＲＡＭ２０３と接続するメモリコントローラ３０５、ＣＰＵ２０４と接続するための外部Ｉ／Ｆ３０６、再構成できる論理回路領域となる機能部３０２とを有している。システムバス３０１は、ホストＩ／Ｆ３０４、メモリコントローラ３０５、外部Ｉ／Ｆ３０６及び機能部３０２を相互に接続している。
【００２６】
機能部３０２は、回路構成情報に基づいて、その回路構成情報に応じた機能を実現する回路が構成されて、その機能を実現する処理部である。ホストＩ／Ｆ３０４は、ホストＩ／Ｆ２０１を介して、メインコントローラ１０１の拡張Ｉ／Ｆ１２９と接続される。ホストＩ／Ｆ３０４は例えば、ＰＣＩエクスプレスで構成されるインタフェースであり、ＣＰＵ１０６とＦＰＧＡ２０２との通信を媒介する。メモリコントローラ３０５は、ＲＡＭ２０３と接続するインタフェースで、機能部３０２やホストＩ／Ｆ３０４を介して受信するデータのＲＡＭ２０３への書き込み要求や、ＲＡＭ２０３からのデータの読み出し要求に基づくメモリ制御を行う。外部Ｉ／Ｆ３０６は、ＣＰＵ２０４と接続するインタフェースで、ＣＰＵ２０４による機能部３０２等の制御を行う。実施形態に係るＦＰＧＡ２０２では、ホストＩ／Ｆ３０４、メモリコントローラ３０５及び外部Ｉ／Ｆ３０６は、ハードマクロで構成される固定的な回路とする。
【００２７】
またＦＰＧＡ２０２は、電源オン時に、図示しないＲＯＭからＦＰＧＡ２０２のホストＩ／Ｆ３０４、メモリコントローラ３０５、外部Ｉ／Ｆ３０６を形成する固定回路部の設定情報を読み出す。そして、その読み出した設定情報に基づいて、各Ｉ／Ｆの固定回路部の設定を行うことにより、各Ｉ／Ｆとの通信が可能な状態になる。
【００２８】
図４は、実施形態に係る画像形成装置１００のＨＤＤ１２１に記憶されているＦＰＧＡ２０２の回路構成情報の構成を説明する図である。
【００２９】
この回路構成情報は、ＨＤＤ１２１の回路構成情報の格納領域に、各機能ごとに保持されている。図４の回路構成情報４０１〜４０３は、各対応する拡張処理機能の回路構成情報である。これらの回路構成情報は、ＣＰＵ１０６によりＨＤＤ１２１から読み出され、拡張Ｉ／Ｆ１２９を介してＦＰＧＡ２０２に転送されることにより、ＦＰＧＡ２０２の再構成が行われる。
【００３０】
この回路構成情報は、機能部３０２の回路を構成するための回路構成情報であり、この回路構成情報に従って機能部３０２の回路が再構成される。機能部３０２に構成される回路の機能の種類に応じて、回路構成情報は複数用意される。実施形態では、回路構成情報４０１、回路構成情報４０２、回路構成情報４０３の３つが用意されており、それぞれ異なる画像処理を実行可能な回路を構成するための情報である。例えば、回路構成情報４０１〜４０３は、解像度変換処理、色空間処理、画像加工処理などの拡張処理機能に対応しているとする。また回路構成情報４０１〜４０３は、後述する拡張処理７０１〜７０３にそれぞれ対応しているものとする。
【００３１】
次に、実施形態に係る拡張処理部１０５を使用した画像形成装置１００の典型的な動作の一例であるコピージョブの処理について説明する。
【００３２】
ＣＰＵ１０６は、操作部１０２を介して、ユーザによってコピージョブの実行が指示されたことを検知する。コピージョブには、拡張処理部１０５により提供される拡張処理（典型的には画像処理）を使用する設定がされているものとする。このコピージョブの実行が指示されるとＣＰＵ１０６は、デバイスＩ／Ｆ１１６を介して、スキャナ１０３に原稿の読み取りを指示する。スキャナ１０３は、原稿を読み取って得られた画像データを、デバイスＩ／Ｆ１１６を介してスキャナ画像処理部１１７へ送信する。これによりスキャナ画像処理部１１７は、その画像データに各種画像処理を行い、画像処理後の画像データをＲＡＭ１０７へ送信する。次にＣＰＵ１０６は、ＲＡＭ１０７に記憶された画像データを、後述するフローにより決定された処理形態に応じた処理部（ＣＰＵ或いはＦＰＧＡ）に送信する。これにより、その処理部は、その画像データに対して拡張画像処理を行ってＲＡＭ１０７へ送信する。ここで、処理形態に応じた処理部は、拡張処理部１０５（ＦＰＧＡ２０２、ＣＰＵ２０４）、ＣＰＵ１０６のいずれかである。次にＣＰＵ１０６は、こうして拡張画像処理がなされた画像データをＲＡＭ１０７からプリンタ画像処理部１１８へ送信する。プリンタ画像処理部１１８は、その受信した画像データに各種プリント用画像処理を行ってプリンタ１０４へ送信することにより、プリンタ１０４は、その画像データに従って用紙に画像を印刷する。こうして原稿のコピー処理が実行される。
【００３３】
次に、上述したコピー等のジョブを実行する際、拡張処理部１０５を使用した画像処理を行う場合の拡張処理制御フローについて説明する。
【００３４】
図５は、実施形態に係る画像形成装置１００において拡張画像処理を実行するときの処理の流れを説明するフローチャートである。この処理を実行するプログラムはＲＯＭ１０８或いはＨＤＤ１２１に記憶されており、実行時ＲＡＭ１０７に展開されてＣＰＵ１０６の制御の下に実行される。
【００３５】
図６は、実施形態に係る画像形成装置１００のメインのＣＰＵ１０６と、ＦＰＧＡ２０２のＣＰＵ２０４のそれぞれが担当している処理を説明する図である。
【００３６】
図５のフローチャートで示す処理は、図６の拡張処理要求の受信処理６０１、拡張処理のメイン制御６０２、拡張処理終了処理６０３の３つのソフトウエアによって実現され、かつ、これら３つのソフトウエアは並行して動作する。１つ目の拡張処理要求の受信処理６０１は、後述する拡張処理要求を受信する処理であるＳ５００の処理を行う。２つ目の拡張処理のメイン制御６０２は、後述する拡張処理の主たる制御に相当するＳ５０１〜Ｓ５０６の処理を行う。３つ目の拡張処理の終了処理６０３は、後述する拡張処理の終了処理であるＳ５０７の処理を行う。これらのソフトウエアは、電源オン時に起動されて動作を開始する。尚、上述したソフトウェアの構成例は、あくまでも実施形態に係る一例であって、本発明を限定するものではなく、例えば１つのソフトウエアで実装されてもよい。また実施形態では、ユーザにより指定されたコピー等の処理において、拡張処理部１０５での処理が必要かどうかはＣＰＵ１０６で行われる図示しないソフトウエア処理により判定される。そしてＣＰＵ１０６が、拡張処理部１０５による処理が必要と判定した場合は、ＣＰＵ１０６は、拡張処理部１０５に対して拡張処理要求を、他の不図示のソフトウエアによるＨＴＴＰ通信により発行する。
【００３７】
図５の処理は画像形成装置１０１の電源がオンされることにより開始される。まずＳ５００でＣＰＵ１０６は、拡張処理要求の受信処理を行う。ここでは拡張処理部１０５に対する拡張処理要求を受信し、受信した拡張処理要求を図７に示すような拡張処理キューに登録する。
【００３８】
図７は、実施形態に係る拡張処理キューの構成例を説明する図である。
【００３９】
拡張処理キューは、受信した拡張処理を保持して管理するためのキューである。受信した拡張処理は、受信した時間順に、エントリＮｏ．１から登録される。例えば、図７の例では、拡張処理７０１、拡張処理７０２、拡張処理７０３の順に受信したので、拡張処理キューのエントリＮｏ．１から順に保持されている。尚、この拡張処理キューは、ＣＰＵ１０６の制御の下にＲＡＭ１０７に形成されるものとする。また、拡張処理要求の受信処理については後述する。
【００４０】
次にＳ５０１に進みＣＰＵ１０６は、拡張処理要求の選択処理を行う。これは、拡張処理キューに登録されている拡張処理の中から、処理対象とする拡張処理を選択するものである。この拡張処理要求の選択処理については後述する。
【００４１】
次にＳ５０２に進みＣＰＵ１０６は、処理形態の選択処理を行う。ここでは、処理対象として選択された拡張処理を実行するための処理形態（処理部）を選択する処理を行う。ここで処理形態とは、対象となる拡張画像処理を実行するために必要な処理部（ＣＰＵやＦＰＧＡ）を示すものである。
【００４２】
図８は、実施形態に係る画像形成装置１００が拡張処理を実行する際に取り得る処理形態を説明する図である。
【００４３】
図８の処理形態８０１は、ＦＰＧＡ２０２とＣＰＵ１０６の２つの処理部を使用する処理形態である。処理形態８０２は、拡張処理部１０５のＦＰＧＡ２０２とＣＰＵ２０４の２つの処理部を使用する処理形態である。処理形態８０３は、ＣＰＵ１０６のみを使用する処理形態である。更に処理形態８０４は、拡張処理部１０５のＣＰＵ２０４のみを使用する処理形態である。但し、どの処理形態で処理が可能かは処理内容によって異なり、拡張処理毎に処理形態管理テーブルで管理されている。
【００４４】
図９は、実施形態に係る画像形成装置１００が保持する処理形態管理テーブルの一例を示す図である。尚、このテーブルはＲＡＭ１０７に記憶されている。
【００４５】
この処理形態管理テーブルは、処理形態と優先度とを含んでいる。優先度は、処理形態を選択する際の優先度であって、優先度の高い順に「１」〜「４」で表されている。処理形態と優先度については後述するフローの中で参照される。また処理形態は、処理内容に応じて少なくとも１つ以上存在する。
【００４６】
図９（Ａ）は、図７の拡張処理７０１に対応する処理形態管理テーブルを示し、この拡張処理７０１は４つの処理形態８０１〜８０４の何れでも実行可能である。ここでは優先度が「１」の処理形態として処理形態８０１、優先度が「２」の処理形態として処理形態８０２、優先度が「３」の処理形態として処理形態８０３、優先度が「４」の処理形態として処理形態８０４が定義されている。
【００４７】
図９（Ｂ）は、拡張処理７０２に対応する処理形態管理テーブルを示し、この拡張処理７０２は２つの処理形態８０２，８０４の何れでも実行可能である。ここでは優先度が「１」の処理形態として処理形態８０２、優先度が「２」の処理形態として処理形態８０４が定義されている。
【００４８】
図９（Ｃ）は、拡張処理７０３に対応する処理形態管理テーブルを示し、この拡張処理７０３は２つの処理形態８０１，８０２の何れでも実行可能である。ここでは優先度が「１」の処理形態として処理形態８０１、優先度が「２」の処理形態として処理形態８０２が定義されている。処理形態の選択処理については後述する。
【００４９】
次にＳ５０３に進みＣＰＵ１０６は、Ｓ５０２で選択した拡張処理の処理形態がＦＰＧＡ２０２を使用する処理形態かどうか判定する。例えば、処理形態８０１が選択された場合は、ＦＰＧＡ２０２とＣＰＵ１０６の２つの処理部を使用するため、ＦＰＧＡ２０２を使用する処理形態であると判定される。一方で、処理形態８０４の場合は、ＣＰＵ２０４のみを使用するため、ＦＰＧＡ２０２を使用する処理形態でないと判定される。Ｓ５０３でＣＰＵ１０６は、ＦＰＧＡ２０２を使用する処理形態であると判定した場合はＳ５０４に処理を進め、ＦＰＧＡ２０２を使用する処理形態ではないと判定した場合はＳ５０６の処理を進める。Ｓ５０４でＣＰＵ１０６は、ＦＰＧＡ２０２の再構成要求を発行する。この再構成要求の発行では、後述するＦＰＧＡ２０２の再構成処理を行うＣＰＵ１０６で動作するＦＰＧＡの再構成処理６０４に対して、ＨＴＴＰ通信により、再構成要求を表すメッセージと、処理対象である処理内容の情報を送信する。この処理内容の情報は、ＦＰＧＡ２０２に対して再構成すべき回路構成情報を決定するために使用される。次にＳ５０５に進みＣＰＵ１０６は、ＦＰＧＡ２０２の再構成が完了したか否かを判定する。ＦＰＧＡ２０２の再構成処理において、ＣＰＵ１０６とＣＰＵ２０４とのＨＴＴＰ通信により再構成の要求と完了の通知が行われる。従って、Ｓ５０５でＣＰＵ１０６は、ＣＰＵ２０４から、再構成の要求に対する完了の通知を表すメッセージを受信したかを判定する。Ｓ５０５でＣＰＵ１０６が、ＦＰＧＡ２０２の再構成が完了したと判定するとＳ５０６に進み、そうでないときはＳ５０５の処理を繰り返し実行する。
【００５０】
Ｓ５０６でＣＰＵ１０６は、Ｓ５０２で選択された処理形態の処理部となるＣＰＵ（ＣＰＵ１０６又はＣＰＵ２０４）或いはＦＰＧＡ２０２に対して、ＨＴＴＰ通信により、画像処理要求を発行する。この画像処理要求の発行は、後述する画像処理制御を行うＣＰＵ１０６で動作する画像処理要求の受信処理６０７、又はＣＰＵ２０４で動作する画像処理要求の受信処理６０９に対して行われる。この時、ＣＰＵ１０６は、画像処理要求を表すメッセージ、画像処理の内容と処理形態の情報、及び、画像データを送信する。この画像処理要求の発行に対して、ＣＰＵ１０６又はＣＰＵ２０４で行われる画像処理要求の受信処理については後述する。また、選択された処理形態に応じて、画像処理要求の発行先が変わるが、発行先の変更は、アクセスするＩＰアドレスやポート番号を変更することで実現される。
【００５１】
次にＳ５０７に進みＣＰＵ１０６は、拡張処理の終了処理を行う。この拡張処理の終了処理は、基本的には、Ｓ５０６で発行した画像処理要求により画像処理の完了を検知して、拡張処理依頼元へ処理結果を返す処理である。この拡張処理の終了処理については後述する。
【００５２】
図１０は、図５のＳ５００の拡張処理要求の受信処理を説明するフローチャートである。
【００５３】
Ｓ１０００でＣＰＵ１０６は、拡張処理要求を受信したか否かを判定する。上述したように実施形態では、拡張処理要求はＨＴＴＰ通信により発行される。従って、ここでＣＰＵ１０６は、拡張処理の要求が来たかどうかを、所定のポートの受信を監視することにより実現される。但し、この拡張処理要求の通信方式はあくまでも一例であり、本発明を限定するものではない。Ｓ１０００でＣＰＵ１０６は、拡張処理要求を受信したと判定するとＳ１００１に進み、ＣＰＵ１０６は受信した拡張処理要求を拡張処理キューへ登録して、この処理を終了する。拡張処理キューに関しては、図７を参照して上述したため、その説明を省略する。
【００５４】
拡張処理要求の受信処理は、以上のＳ１０００〜Ｓ１００１の処理により実現される。また上述したように、Ｓ５００に該当する拡張処理要求の受信処理は、ＣＰＵ１０６で他のソフトウエア処理と並列で動作可能な形態となる拡張処理要求受信処理６０１として実装され、電源起動時に動作が開始される。但し、この受信処理は、実施形態における一例であって、本発明を限定するものではない。
【００５５】
図１１は、図５のＳ５０１の拡張処理要求の選択処理を説明するフローチャートである。
【００５６】
Ｓ１１００でＣＰＵ１０６は、上述した拡張処理キューを参照して、その拡張処理キューに登録された拡張処理があるか否かを判定する。Ｓ１１００で登録された拡張処理があると判定した場合はＳ１１０１の処理に進むが、Ｓ１１００で登録された拡張処理がないと判定した場合はＳ１１００の処理を繰り返し行う。例えば、拡張処理キューが図７に示す状態の場合は、登録された拡張処理が１つ以上あるので、ＣＰＵ１０６は登録された拡張処理があると判断する。Ｓ１１０１でＣＰＵ１０６は、拡張処理キューの先頭であるエントリーＮｏ．１の拡張処理７０１を処理対象として決定する。ここで処理対象に決定された拡張処理が、拡張処理部１０５を使用した拡張処理として実行される。例えば、拡張処理キューが図７に示した状態の場合は、拡張処理７０１が処理対象として決定される。以降、この処理により決定された処理対象の情報は、ソフトウエアにより管理される。
【００５７】
次にＳ１１０２に進みＣＰＵ１０６は、Ｓ１１０１で決定した処理対象を拡張処理キューから削除する。この削除では、必ずエントリーＮｏ．１の拡張処理が削除され、エントリーＮｏ．２以降の拡張処理が繰り上がる。例えば、拡張処理キューが図７に示す状態の場合は、エントリーＮｏ．１の拡張処理７０１が削除され、次に優先順位の高い拡張処理７０２がエントリーＮｏ．１へ、拡張処理７０３がエントリーＮｏ．２へ繰り上がる。
【００５８】
図１２は、図５のＳ５０２の処理形態の選択処理を説明するフローチャートである。
【００５９】
まずＳ１２００でＣＰＵ１０６は、処理対象となっている拡張処理の処理内容を取得する。ここで処理対象として決定された処理内容は、上述したようにソフトウエアで管理されている。従って、ソフトウエアにより管理されている処理対象の情報を取得することになる。例えば、Ｓ１１０１の説明における具体例に基づくと、処理内容として拡張処理７０１が取得される。次にＳ１２０１に進みＣＰＵ１０６は、その取得した拡張処理７０１に対応する処理形態管理テーブルを決定する。例えば、Ｓ１２０１において、取得された処理内容が拡張処理７０１である場合は、図９（Ａ）に示す処理形態管理テーブルに決定され、この管理テーブルが以降の処理で参照されることになる。
【００６０】
次にＳ１２０２に進みＣＰＵ１０６は、後述する使用可能な処理形態を判定するための一連の処理により使用され、優先度を表す変数であるパラメータＮの初期値として、パラメータＮに「０」を設定する。次にＳ１２０３に進みＣＰＵ１０６は、拡張処理で使用される処理部の空き状況（使用状況）を取得する。尚、このパラメータＮはＲＡＭ１０７に記憶されている。この処理について詳細に説明する。
【００６１】
ＣＰＵ１０６は、画像形成装置１００の電源がオンされて起動した等に、例えば図１３に示すような処理部の空き状況管理テーブルをＲＡＭ１０７に作成しておく。
【００６２】
図１３は、実施形態に係る処理部の空き状況を管理する空き状況管理テーブルの一例を示す図である。
【００６３】
この処理部の空き状況管理テーブルは、拡張処理を実行するために必要な処理部として使用可能な処理部と、各処理部の空き状況を示す情報とを有している。ＣＰＵ１０６は、この空き状況管理テーブルを参照することにより、各処理部の空き状況を取得することができる。またＣＰＵ１０６は、後述する処理において、空き状況管理テーブルの各処理部の空き状況を示す情報を更新する。実施形態では、拡張処理の処理部として使用可能な処理部は、ＦＰＧＡ２０２、ＣＰＵ１０６及び、ＣＰＵ２０４である。例えば、図１３に示す空き状況管理テーブルでは、ＦＰＧＡ２０２、ＣＰＵ１０６、ＣＰＵ２０４はいずれも未使用であり、全ての処理部が使用可能な状態であることを示している。
【００６４】
次にＳ１２０４に進みＣＰＵ１０６は、優先度を表すパラメータＮの値をインクリメントする（＋１する）。最初パラメータＮが「０」の場合、このインクリメント処理によりパラメータＮは「１」となる。パラメータＮがいずれの値であっても、同様の処理である。次にＳ１２０５に進みＣＰＵ１０６は、Ｓ１２０１で決定された処理形態管理テーブルに、パラメータＮの値に対応する優先度の処理形態が存在するかどうかを判定する。例えば、処理形態管理テーブルとして拡張処理７０１のテーブル（図９（Ａ））に決定されている場合、優先度１〜４の処理形態が存在するので、パラメータＮが１〜４の範囲であれば処理形態が存在すると判定される。同様に拡張処理７０２の場合は、パラメータＮが１〜２の処理形態は存在し、拡張処理７０３では、パラメータＮが１〜２の処理形態が存在すると判定される。尚、実施形態では、処理形態は必ず１つ以上存在するので、パラメータＮが１の場合には、必ず処理形態は存在すると判定される。Ｓ１２０５でＣＰＵ１０６が、処理形態が存在すると判定したときはＳ１２０６に進み、そうでないときはＳ１２０２に進む。Ｓ１２０６でＣＰＵ１０６は、図１３のテーブルを参照して、優先度がＮである処理形態に必要な処理部が使用可能かどうかを判定する。この処理は、図９の処理形態管理テーブルと図１３の空き状況管理テーブルを参照することにより行われる。
【００６５】
例えば、拡張処理７０１の優先度１の処理形態は処理形態８０１であり、必要な処理部は、図８よりＦＰＧＡ２０２とＣＰＵ１０６となる。従って、この場合は、これら２つの処理部（ＦＰＧＡ２０２とＣＰＵ１０６）が空き状態であるかを、Ｓ１２０３で、図１３の空き状況管理テーブルから取得した空き状況を参照して判定できる。このようにして、必要な処理部が使用可能かどうかを判定する。Ｓ１２０６でＣＰＵ１０６は、パラメータＮが示す優先度の処理形態に必要な処理部が使用可能と判定するとＳ１２０７に処理を進め、そうでないときはＳ１２０４に処理を進める。またＳ１２０６でＣＰＵ１０６は、パラメータＮが示す優先度の処理形態に必要な処理部が使用できないと判定するとＳ１２０４に進み、次のＮを＋１して次に優先度が高い処理形態を探索する。
【００６６】
Ｓ１２０７でＣＰＵ１０６は、拡張処理を行うための処理形態としてパラメータＮが示す優先度の処理形態に決定する。次にＳ１２０８に進みＣＰＵ１０６は、図１３の空き状況管理テーブルに対して、決定した処理形態に必要な処理部を、使用中であることを示す情報（図１３では×）に更新する。例えば、処理形態が処理形態８０１に決定された場合、ＦＰＧＡ２０２とＣＰＵ１０６の両方を使用するので、図１３の空き状況管理テーブルのこれら２つの処理部の状況を、未使用状態（○）から使用状態（×）へ変更する。この処理によって、後から受信した拡張処理との処理部の競合を回避することができる。次にＳ１２０９に進みＣＰＵ１０６は、これまでのフローにより決定した内容を拡張処理実行管理テーブルに登録する。
【００６７】
図１４は、実施形態に係る拡張処理実行管理テーブルの一例を示す図である。このテーブルはＲＡＭ１０７に設けられている。
【００６８】
この拡張処理実行管理テーブルは、実行中処理番号、拡張処理の内容、使用中の処理形態、要求ページ数、中断状態などの要素を含んでいる。実行中処理番号は、このテーブルに登録された順に１番から配置され、拡張処理が実行状態に移行した順番を表す。拡張処理の内容は、実行されている拡張処理の内容そのものを表す。使用中の処理形態は、この拡張処理を実行するために使用している処理形態を示している。要求ページ数とは、受信した拡張処理を適用するページ数であり、これは拡張処理要求を受信した時の要求内容に基づいている。中断状態は、以降で説明する中断状態となった時に、中断状態として要求ページ数に対して何ページまで処理が済んだかを表している。尚、中断状態のＮ／Ａは、一度も中断されていないことを示している。従って、Ｓ１２０９では、拡張処理の内容には、実行することが決定した拡張処理を、使用中の処理形態には、Ｓ１２０７で決定した処理形態を設定する。また要求ページ数は、実行する拡張処理の適用ページ数、中断状態にはＮ／Ａを登録する。尚、実行中処理番号は、登録されていない番号で最も小さい値を記載する。以上の処理によりＳ１２０９の処理が達成される。
【００６９】
図１５は、実施形態に係る画像形成装置１００におけるＦＰＧＡ２０２の再構成処理を説明するフローチャートである。尚、このフローチャートで示す処理は、ＣＰＵ１０６が対応するプログラムをＲＯＭ１０８或いはＨＤＤ１２１からＲＡＭ１０７に展開して実行することにより実現される。この実施形態ではＣＰＵ１０６は、ＨＴＴＰ通信を介して、再構成の要求を受信することにより実行する。この処理を実行するプログラムは図６のＦＰＧＡ再構成処理６０４に対応しており、図５で示すメイン制御の処理フローチャートから独立したものであり、並列的に動作可能な形態で実装される。また、この処理は画像形成装置１００の電源オンにより起動されて処理が開始される。
【００７０】
先ずＳ１５００でＣＰＵ１０６は、ＦＰＧＡ２０２の再構成の要求を受信したか否かを判定する。ＣＰＵ１０６が再構成要求を受信するときは、再構成要求を表すメッセージと、対象処理の処理内容の情報が受信される。ここで受信した処理内容の情報は、後述するＳ１５０１で参照される。Ｓ１５００で再構成の要求を受信したと判定するとＳ１５０１に進みＣＰＵ１０６は、ＦＰＧＡ２０２に対して、再構成すべき回路構成情報を決定する。この処理は、Ｓ１５００で受信した処理内容の情報に基づいて、対応する回路構成情報を決定する処理である。本実施形態では、上述したように回路構成情報４０１は拡張処理７０１、回路構成情報４０２は拡張処理７０２、回路構成情報４０３は拡張処理７０３に対応するとしている。従って、受信した処理内容の情報が拡張処理７０１である場合は、回路構成情報４０１がＦＰＧＡ２０２を再構成すべき回路構成情報として決定される。
【００７１】
次にＳ１５０２に進みＣＰＵ１０６は、Ｓ１５０１で決定した回路構成情報を使用して、ＦＰＧＡ２０２の再構成を実施する。この処理は、ＣＰＵ１０６がＨＤＤ１２１に格納されている回路構成情報を、拡張Ｉ／Ｆ１２９を介して、ＦＰＧＡ２０２の図示しない所定記憶領域へロードすることにより行われる。この処理によって、ＦＰＧＡ２０２は処理内容に対応した所望の回路構成へ再構成される。次にＳ１５０３に進みＣＰＵ１０６は、ＦＰＧＡ２０２の再構成の要求元へ、ＦＰＧＡ２０２の再構成が完了したことを通知する。この通知では、単に完了を表すメッセージが送信される。
【００７２】
図１６は、実施形態に係る画像形成装置１００における画像処理要求の受信処理を説明するフローチャートである。尚、このフローチャートで示す処理は、ＣＰＵ１０６が対応するプログラムをＲＯＭ１０８或いはＨＤＤ１２１からＲＡＭ１０７に展開して実行することにより実現される。この処理を実行するプログラムは図６の画像処理要求の受信処理６０７に対応しており、図５で示すメイン制御の処理フローチャートから独立したものであり、並列的に動作可能な形態で実装される。またＣＰＵ２０４で動作する画像処理要求の受信処理は、図６の画像処理要求の受信処理６０９に対応している。また、画像処理要求の受信処理６０７，６０９は、画像形成装置１００の電源オンにより起動されて処理が開始される。
【００７３】
先ずＳ１６００でＣＰＵ１０６は、処理ステータスの確認要求を受信したか否かを判定する。この処理ステータスとは、実行中の画像処理に関する処理状況であり、この処理状況に関する情報は、図１７のページ状況管理テーブルと図１８のページ内状況管理テーブルにより管理される情報である。これらテーブルはＲＡＭ１０７に設けられている。
【００７４】
図１７は、実施形態に係る画像形成装置１００が保持するページ状況管理テーブルの一例を示す図であり、図に示されるように実行中の画像処理が要求ページに対してどこまで完了したかを管理する。
【００７５】
図１７では、画像処理の対象である全ページ（Ｎページ）のそれぞれに対して、処理済、処理中、未処理といった状態が記憶されている。
【００７６】
図１８は、実施形態に係る画像形成装置１００が保持するページ内状況管理テーブルの一例を示す図である。
【００７７】
対象である画像処理は更に細分化すると、いくつかの処理単位に分割することができる。例えば、本実施形態では、画像データは基本的にＪＰＥＧ方式で圧縮された状態で保管されている。このため、拡張処理７０１を、より細分化して処理を表すと、ＪＰＥＧ伸張処理、拡張処理、ＪＰＥＧ圧縮処理の３つの処理を含む。そこで、これら処理をページ内状況管理テーブルで表現される下位処理と定義として説明する。また下位処理の内容は、これらの具体的な処理名を記載している。完了領域は、これらの下位処理の単位毎に、処理中のページに対して、どこまでの画像領域の画像データにたいする処理が完了したかを表わしている。これら２つのテーブルにより、要求された画像処理が完了したページ番号や、現在処理中のページの詳細な処理状況を取得できる。こうして取得した結果を、処理ステータスの情報として応答する。尚、これら２つのテーブルは、図１９の画像処理の制御処理で更新され、その説明は後述する。
【００７８】
先ずＳ１６００でＣＰＵ１０６は、処理ステータスの確認要求を受信したと判定した場合はＳ１６０８の処理に進むが、そうでないときはＳ１６０１の処理に進む。Ｓ１６０１でＣＰＵ１０６は、中断要求を受信したか否かを判定する。この中断要求は、現在実行中の画像処理を中断する要求である。実施形態では、中断要求は２種類存在する。１つ目は、現在実行中の画像処理を即時中断するための中断要求で、これを即時中断要求とする。２つ目は、現在実行中のページの画像処理の完了を待ってから中断する中断要求で、これをページ間中断要求とする。これらの中断要求の発行に関する制御等は後述する。Ｓ１６０１でＣＰＵ１０６は、中断要求を受信したと判定したときはＳ１６０７の処理に進むが、そうでないときはＳ１６０２の処理に進む。Ｓ１６０２でＣＰＵ１０６は、画像処理要求を受信したか否かを判定する。この画像処理要求は、前述の図５のＳ５０６でＣＰＵ１０６が発行する画像処理要求である。上述したように、この画像処理要求には、実行すべき拡張処理の内容、使用すべき処理形態、入力画像データ等の情報が含まれている。従って、ＣＰＵ１０６が画像処理要求を受信すると、その要求に応じた、これらの情報を把握することができる。Ｓ１６０２でＣＰＵ１０６が、画像処理要求を受信したと判定するとＳ１６０３の処理に進むが、画像処理要求を受信していないと判定した場合はＳ１６００の処理に移り、次の要求の確認が行われる。
【００７９】
Ｓ１６０３でＣＰＵ１０６は、ＦＰＧＡ２０２を使用するかを判定する。これは受信した画像処理要求で指定された、使用すべき処理形態の情報に基づくものである。例えば、処理形態８０１の情報を受信した場合は、図８よりＦＰＧＡ２０２とＣＰＵ１０６が処理部として使用されるため、ＦＰＧＡ２０２は使用されると判定される。Ｓ１６０３でＦＰＧＡ２０２を使用すると判定した場合はＳ１６０４の処理に進み、そうでないときはＳ１６０６の処理に進む。
【００８０】
Ｓ１６０４でＣＰＵ１０６は、ＦＰＧＡ２０２を使用した画像処理の実行スレッドを起動する。この画像処理の実行スレッドは、図６の画像処理制御６０８に対応し、スレッド起動時には、画像処理の内容、画像処理すべきページ数、入力画像データ、画像処理係数等が渡される。また、このスレッドの起動により、ＦＰＧＡ２０２を使用した画像処理が、この画像処理要求の受信処理と並行して実行される。また、この画像処理が実行される前に、前述の図１５のＳ１５０２で、ＦＰＧＡ２０２は、この画像処理の処理内容に応じた回路構成に再構成されている。尚、画像処理要求の受信処理がＣＰＵ２０４で行われている場合には、図６の画像処理制御６１０で示すスレッドが起動される。そしてＳ１６０５に進みＣＰＵ１０６は、画像処理要求又は中断要求を正常に受け付けた旨の応答を返して、この処理を終了する。またＦＰＧＡ２０２を使用しないときはＳ１６０６でＣＰＵ１０６は、ＣＰＵ１０６自身を使用した画像処理の実行スレッドを起動する。画像処理実行のスレッドに関する説明は、図１６のＳ１６０６で上述した通りである。
【００８１】
また中断要求を受信したときはＳ１６０７に進みＣＰＵ１０６は、Ｓ１６０４又はＳ１６０６で起動した画像処理の実行スレッドに対して中断フラグを設定する。ここでは、受信した中断要求が即時中断要求の場合は即時中断フラグを設定し、ページ間中断要求である場合は、ページ間中断フラグを設定する。このようにして中断フラグを設定することにより、後述する画像処理制御処理を中断することが可能となる。
【００８２】
また処理ステータスの確認要求を受信したときはＳ１６０８でＣＰＵ１０６は、処理ステータスの情報を取得する。この処理ステータスは上述した通りである。即ち、ＣＰＵ１０６は、図１７を参照して説明したページ状況管理テーブルから処理済のページ番号の情報と、図１８のページ内状況管理テーブルから、処理中のページに対して完了した下位処理数と処理中の下位処理の完了領域の情報を取得する。そしてＳ１６０９に進みＣＰＵ１０６は、Ｓ１６０８で取得した処理ステータスの情報とともに応答を返す。
【００８３】
図１９は、実施形態に係る画像形成装置１００が画像処理の実行スレッドにより実行する画像処理制御を説明するフローチャートである。尚、このフローチャートで示す処理は、画像処理要求を受信したＣＰＵ（ＣＰＵ１０６又はＣＰＵ２０４）により実行される。ここではＣＰＵ１０６が画像処理制御を実行するものとして説明するが、ＣＰＵ２０４が画像処理要求を受信した場合は、ＣＰＵ２０４がこの処理を実行する。いずれのＣＰＵが実行しても、処理内容は基本的に同一である。また、この処理はメイン制御処理である図５で説明した処理から独立したものであり、そのメイン制御処理と並列的に動作可能な形態で実装されている。この処理は、図６の画像処理制御６０８，６１０に対応している。この処理は、画像形成装置１００の電源がオンされて、装置が起動することにより開始される。
【００８４】
まずＳ１９００でＣＰＵ１０６は、この処理の起動時に渡された画像処理の内容、画像処理すべきページ数に基づいて、例えば図１７に示すページ状況管理テーブルと、図１８に示すページ内状況管理テーブルを作成する。ここで作成されるページ状況管理テーブルは、ページ番号が画像処理すべきページ番号に対応し、状態は全て「未処理」である。同様にページ内状況管理テーブルは、画像処理内容に基づいて、下位処理１〜３に対応する下位処理内容となり、完了領域は「０」である。尚、下位処理番号は、下位処理番号１〜下位処理番号３として説明したが、これに限るものではない。
【００８５】
次にＳ１９０１に進みＣＰＵ１０６は、画像処理を適用すべき全ページの画像データに対して、画像処理が完了したか否かを判定する。これは、ページ状況管理テーブルを参照し、全ページが処理済となっているかを判定する。この処理の開始時は、Ｓ１９０１において、全ページの状態は「未処理」であるため、画像処理が完了していないと判定する。Ｓ１９０１でＣＰＵ１０６は、画像処理が完了したと判定したときはＳ１９１３に処理を進め、画像処理が完了していないと判定した場合はＳ１９０２に処理を進める。Ｓ１９０２でＣＰＵ１０６は、これから画像処理するページを設定する。ここでは、基本的に、ページ状況管理テーブルのページ番号の小さいものから順に設定される。この画像処理制御の開始時はページ１が設定され、以降ページ２、ページ３と設定されていく。次にＳ１９０３に進みＣＰＵ１０６は、ページ間中断フラグが設定されているか否かを判定する。このページ間中断フラグは、ページ間中断要求に基づいて図１６のＳ１６０７で設定され、ページ間中断要求があったことを表すフラグの情報である。Ｓ１９０３でＣＰＵ１０６は、ページ間中断フラグが設定されていないと判定するとＳ１９０４の処理に進み、ページ間中断フラグが設定されていると判定するとＳ１９１３の処理に進む。
【００８６】
Ｓ１９０４でＣＰＵ１０６は、ページ状況管理テーブルの内のＳ１９０２で設定されたページ番号に対する状態を「未処理」から「処理中」に変更する。次にＳ１９０５に進みＣＰＵ１０６は、処理中のページの画像データに対して、全ての下位処理が完了したか否かを判定する。これは、ページ内状況管理テーブル（図１８）の全ての下位処理の完了領域が、所定値かどうかで判定できる。図１８の完了領域の値は、下位処理が完了したページの画像データの副走査方向のライン数を表している。尚、完了領域の値は、最小１ライン毎に更新することができるが、本実施形態では２５６ライン単位で更新する。また所定値は、入力画像データに依存した値（サイズ）であり、本実施形態では、入力画像データの副走査方向のライン長を表し、例えば「５０００」とする。従って、完了領域に記載される数値が入力画像データのライン長と等しければ、そのページの画像データに対する下位処理が完了したことを示している。尚、上記で具体例で説明した事項は、本発明を限定するものではない。Ｓ１９０５でＣＰＵ１０６が、全ての下位処理が完了したと判定したときはＳ１９１２に処理を進め、全ての下位処理が完了していないと判定したときはＳ１９０６の処理に進む。
【００８７】
Ｓ１９０６でＣＰＵ１０６は、即時中断フラグが設定されているかを判定する。この即時中断フラグは、即時中断要求に基づいて図１６のＳ１６０７で設定されるもので、即時中断要求があったことを表すフラグの情報である。Ｓ１９０６でＣＰＵ１０６が即時中断フラグが設定されていると判定するとＳ１９１３に処理を進め、即時中断フラグが設定されていないと判定したときはＳ１９０７の処理に移る。Ｓ１９０７でＣＰＵ１０６は、処理中のページの画像データに対して、下位処理Ｋが完了したか否かを判定する。下位処理Ｋとは、Ｋ＝１から始まる下位処理を表すパラメータである。Ｋ＝１の場合は下位処理１に対応し、以降、Ｋ＝２では下位処理２、Ｋ＝３では下位処理３に対応する。尚、Ｓ１９０３とＳ１９０４との間で図示しない処理として、パラメータＫは「１」に初期化されているものとする。従って、ページ処理において、初めてＳ１９０７の処理が実行される場合はＫ＝１である。この場合には、ページ内状況管理テーブルの下位処理１の完了領域が、上述した入力画像データに基づいた所定サイズになっているかを判定する。本実施形態では、上述したように完了領域の値が「５０００」となっているか判定することになる。Ｓ１９０７でＣＰＵ１０６は、下位処理Ｋが完了したと判定しときはＳ１９１１の処理に進み、下位処理Ｋが完了していないと判定したときはＳ１９０８の処理に進む。
【００８８】
Ｓ１９０８でＣＰＵ１０６は、下位処理する領域を設定する。この下位処理する領域は基本的に、ページ内状況管理テーブルの対応する下位処理の完了領域の続きの領域である。実施形態では、処理の単位を２５６ラインとしたので、続きの領域から２５６ライン進んだ領域とする。例えば、完了領域が「０」である場合、１ライン目から２５６ライン目までを下位処理する領域として設定する。尚、必ずしも２５６ライン単位である必要はない。ページの終端では、２５６ラインバウンダリになっていない場合は、２５６ライン単位以内の領域となる。次にＳ１９０９に進みＣＰＵ１０６は、指定された領域に対して、下位処理Ｋを実行する。繰り返しになるが、ページ処理において、初めて、この下位処理が実行される場合は、下位処理１が、１ライン目から２５６ライン目に対して実行されることになる。次にＳ１９１０に進みＣＰＵ１０６は、ページ内状況管理テーブルの下位処理Ｋの完了領域を更新してＳ１９０６に進む。これはＳ１９０９の処理で完了した領域を、ページ内状況管理テーブルの完了領域に反映させるものである。本実施形態では、領域は２５６ライン単位であるため、完了領域に「２５６」を加えた値に更新することになる。例えば、図１８（Ａ）の下位処理１の状態の場合は、この更新により、完了領域の値は「２５６」となる。
【００８９】
またＳ１９１１でＣＰＵ１０６は、下位処理Ｋの次に行うべき下位処理を設定してＳ１９０５に進む。下位処理ＫのパラメータはＫ＝１から始まっているため、ここではＫの値をインクリメントする。従って、Ｋ＝１の場合は、ここでＫ＝２に設定される。本実施形態ではいずれの値であってもインクリメントを行う。
【００９０】
また、該当ページに対する全ての下位処理が完了したときはＳ１９１２でＣＰＵ１０６は、ページ状況管理テーブルの状態が「処理中」となっている箇所を「処理済」に更新してＳ１９０１に処理を進める。これにより、該当ページの画像処理が完了したことを表現及び管理する。
【００９１】
またＳ１９１３でＣＰＵ１０６は、ページ状況管理テーブルをもとに、画像処理が完了したページの画像処理結果を、画像処理の要求元へ通知及び送信する。また併せて、全ページに対する画像処理が正常終了したメッセージ、又は、中断フラグに基づいて中断終了したメッセージを送信する。
【００９２】
図２０は、実施形態に係る画像形成装置１００による拡張処理の終了処理（図５のＳ５０７）を説明するフローチャートである。この処理を実行するプログラムはＲＯＭ１０８或いはＨＤＤ１２１に記憶されており、実行時ＲＡＭ１０７に展開されてＣＰＵ１０６の制御の下に実行される。
【００９３】
まずＳ２０００でＣＰＵ１０６は、画像処理要求に対応する処理結果として正常終了のメッセージを受信したか否か判定する。上述したＳ１９１３において、画像処理要求の結果を表すメッセージ（正常終了又は中断終了）と、画像処理後の画像データを処理結果として送信している。このためこの処理では、上述した処理結果のメッセージ内容が正常終了を表しているかを判定することになる。Ｓ２０００で正常終了のメッセージを受信したと判定したときはＳ２００１の処理に進み、正常終了のメッセージを受信していないと判定した場合はＳ２０００で、正常終了のメッセージを受信するまで待つ。Ｓ２００１でＣＰＵ１０６は、受信した正常処理に対応する拡張処理の管理情報を、例えば図１４の拡張処理実行管理テーブルから削除する。
【００９４】
例えば図１４（Ａ）において、拡張処理７０１に対応する正常処理のメッセージを受信した場合には、実行中処理番号１に関する情報が削除される。同時に、実行中処理番号２の情報が、実行中処理番号１の情報として管理され、図１４（Ｂ）で示すようなテーブル内容になる。
【００９５】
次にＳ２００２に進みＣＰＵ１０６は、空き状況管理テーブルの、処理が完了した処理形態で使用していた処理部を、使用中を示す（×）から未使用を示す（○）に変更する。例えば、処理形態８０１で行われていた処理が完了した場合は、使用されていたＦＰＧＡ２０２とＣＰＵ１０６の使用が終了するので、空き状況管理テーブルのＦＰＧＡ２０２とＣＰＵ１０６の空き状況を使用中（×）から未使用（○）へ変更する。この処理によって、他の拡張処理で、これら処理部（ＦＰＧＡ２０２とＣＰＵ１０６）を使用できるようになる。
【００９６】
次にＳ２００３に進みＣＰＵ１０６は、処理形態の最適化処理を行う。これはＳ２００２で使用中であった処理部が未使用となり、別の拡張処理で使用可能な状態に変化している。そのため、処理形態の最適化処理では、現在実行中の拡張処理の処理形態から、より早く処理が完了する処理形態に切り換えることができれば、処理形態の切り換えを行う。この処理形態の最適化処理については後述する。次にＳ２００４に進みＣＰＵ１０６は、完了した拡張処理の処理結果を、ＨＴＴＰ通信により、拡張処理の要求元へ通知する。この処理結果の通知では、拡張処理の結果を表すメッセージ（正常終了、エラー終了など）と、拡張処理を実行した処理済の画像データを送信する。この画像データの送信により、要求された拡張処理が終了する。
【００９７】
図２１は、図２０のＳ２００３の処理形態の最適化処理を説明するフローチャートである。この処理は、図６の処理形態の最適化処理６０５に対応している。
【００９８】
まずＳ２１００でＣＰＵ１０６は、例えば前述の図１４に示すような拡張処理実行管理テーブルの情報を取得する。上述したように拡張処理実行管理テーブルでは、現在実行中の拡張処理が管理されている。従って、ＣＰＵ１０６は、その取得した情報に基づいて、現在実行中の拡張処理を確認できる。次にＳ２１０１に進みＣＰＵ１０６は、実行中の拡張処理があるか否かを判定する。これは上述したように、Ｓ２１００で取得した拡張管理実行テーブルの情報に基づいて判定する。ここで実行中の拡張処理があると判定したときはＳ２１０２の処理に進み、実行中の拡張処理がないと判定した場合は、この処理を終了する。
【００９９】
Ｓ２１０２でＣＰＵ１０６は、空き状況管理テーブルから、各処理部の空き状況を取得する。この処理では、Ｓ２００２で、少なくとも１つ以上の処理部が使用状態から未使用状態へ変更されているので、少なくとも１つ以上の処理部が使用可能な状態である。次にＳ２１０３に進みＣＰＵ１０６は、実行中処理番号を表す変数Ｍを１に設定する。以降、この変数Ｍに基づいて処理が行われる。この変数Ｍにより、実行中の全ての拡張処理に対して、以降のＳ２１０５〜Ｓ２１０８の処理が行われる。
【０１００】
次にＳ２１０４に進みＣＰＵ１０６は、実行中の全ての拡張処理の切換処理が完了したかどうかを判定する。これは、実行中処理番号を表す変数Ｍの値が、Ｓ２１００で取得した拡張処理実行管理テーブルで登録されている実行中処理番号の最大値よりも大きいかどうかで判定できる。例えば、この処理を最初に行う時はＭ＝１であり、実行中処理番号の最大値は少なくとも１以上になるため、実行中の全ての拡張処理に対して切換処理が完了していないと判定される。Ｓ２１０４でＣＰＵ１０６は、実行中の全ての拡張処理に対して切換処理が完了していると判定したときはこの処理を終了し、そうでないときはＳ２１０５の処理に進む。
【０１０１】
Ｓ２１０５でＣＰＵ１０６は、実行中処理番号Ｍの処理に対応する処理形態の情報を取得する。例えば、Ｍ＝１のときには、拡張処理実行管理テーブルの実行中処理番号１の使用処理形態の情報を取得する。例えば図１４（Ｂ）の例では、実行中処理番号１の使用処理形態は処理形態８０４である。次にＳ２１０６に進みＣＰＵ１０６は、実行中処理番号Ｍの実行中の処理形態よりも、使用可能な上位の処理形態があるかどうか判定する。これはＳ２１０５で取得した処理形態と、実行中処理番号Ｍの拡張処理に対応する処理形態管理テーブル（図９）と、Ｓ２１０２で取得した処理部の空き状況の情報を参照して判定できる。
【０１０２】
図１４（Ｂ）の例で説明すると、実行中処理番号１の使用処理形態は処理形態８０４、拡張処理の内容は拡張処理７０２であることが分かる。この拡張処理７０２に対応する処理形態管理テーブルは、実施形態では図９（Ｂ）である。図９（Ｂ）より、処理形態８０４よりも優先度の高い処理形態として処理形態８０２があることが分かる。更に、処理形態８０２で使用する処理部であるＦＰＧＡ２０２とＣＰＵ２０４とが、共に空き状態であることを判定することになる。より厳密には、切換前の処理形態で使用する処理部から、切換後の処理形態で使用する処理部に変更することで、新たに必要となる処理部の空き状況のみを確認すればよい。なぜなら、切換前の処理形態の処理部は、後述する処理により中断されるため、引き継いで使用可能である。また使用可能な、より優先度の高い処理形態がある場合は、それを切換後に使用する処理形態として以降の処理を行う。尚、優先度が高い処理形態が複数存在する場合は、優先度が最も高い処理形態を、切換後に使用する処理形態とする。
【０１０３】
Ｓ２１０６でＣＰＵ１０６が、実行中の処理形態よりも優先度の高い処理形態があると判定した場合はＳ２１０７の処理に進み、実行中の処理形態よりも優先度の高い処理形態がないと判定した場合はＳ２１０８の処理に進む。Ｓ２１０７でＣＰＵ１０６は、処理形態の切換処理を行う。この処理形態の切換処理は、実行中の処理形態から、より優先度の高い処理形態に切り換える処理である。この処理形態の切換処理については後述する。そしてＳ２１０８に進みＣＰＵ１０６は、実行中処理番号を表す変数ＭをインクリメントしてＳ２１０４に進む。
【０１０４】
Ｓ２１０７の処理形態の切換処理は、４つの形態が実現可能であり、それぞれを図２２〜図２５のフローチャートを参照して説明する。この処理形態の切換処理は、図６の処理形態の切替処理６０６に対応している。また、図２２〜図２５のフローチャートは、本実施形態に係る画像形成装置１００に対していずれか１つが適用されるものであり、同時に２つ以上の処理形態の切換処理は適用しない。また４つの処理形態の切換処理を、図２２から順に、第一の処理形態の切換処理、第二の処理形態の切換処理、第三の処理形態の切換処理、第四の処理形態の切換処理として説明する。
【０１０５】
ここで、これら４つの処理形態の切換処理の違いを模式図で表したものが図２６及び図２７である。図２６及び図２７は、図面の右方向を経過時間として表している。また図２６，２７で、処理形態の切換処理を行わない場合の例、第一の処理形態の切換処理を行う場合の例、第二の処理形態の切換処理を行う場合の例、第三の処理形態の切換処理を行う場合の例、及び、第四の処理形態の切換処理を行う場合について示している。また、それぞれの図に記載される切替タイミングは、処理形態の切換処理が行われるタイミングを示したものである。図２６と図２７は、その切替タイミングが異なる場合の例で示しており、所定の拡張処理を１０ページ分、行うことを前提としている。図２６と図２７において、ｐ１〜ｐ１０は、１ページから１０ページの画像処理を示している。また、現在の処理形態は、ＣＰＵ１０６又はＣＰＵ２０４により実行されるとものとし、切換後の処理形態はＦＰＧＡ２０２により実行されるものとしている。但し、これはあくまでも一例であってこれに限るものではない。
【０１０６】
まず、図２６と図２７の処理形態の切換処理を行わない場合に関して説明する。処理形態の切換処理を行わない場合には、使用する処理形態に対して実行指示を出した段階の処理形態で１０ページの全てに対して同一の処理形態で行った様子を表している。切替タイミングが発生しても、そもそも処理形態の切換処理が行われないため、現在の処理形態から変更されることはない。これに対して、第一から第四の各処理形態の切換処理では、切替タイミングを境界として、処理形態が変更される様子を表している。尚、第一から第四の各処理形態の切換処理の詳細な説明は後述する。
【０１０７】
まず、第一の処理形態の切換処理について説明する。これは、切換前の処理形態で行っている画像処理を即座に中断し、切換後の処理形態でゼロから画像処理をやり直すものである。
【０１０８】
図２２は、実施形態に係る画像形成装置１００による第一の処理形態の切換処理（Ｓ２１０７）を説明するフローチャートである。尚、このフローチャートで示す処理は、画像処理要求を受信したＣＰＵ（ＣＰＵ１０６又はＣＰＵ２０４）により実行される。ここではＣＰＵ１０６が実行するものとして説明する。ここではこの処理を実行するプログラムはＲＯＭ１０８或いはＨＤＤ１２１に記憶されており、実行時ＲＡＭ１０７に展開されてＣＰＵ１０６の制御の下に実行されるものとする。
【０１０９】
まずＳ２２００でＣＰＵ１０６は、即時中断要求を発行する。この即時中断要求の発行先は、処理形態の切換処理の対象となっている処理形態のＣＰＵである。このときの処理形態はＳ２１０５で取得した処理形態である。本実施形態では、ＣＰＵ１０６又はＣＰＵ２０４となる。例えば、処理形態の切換処理の対象が処理形態８０４の場合には、ＣＰＵ２０４に対して即時中断要求を発行することになる。また上述したように、ＣＰＵ２０４は、即時中断要求を図１６の画像処理要求の受信処理のＳ１６０１の処理で検知し、Ｓ１６０７の処理で即時中断フラグを設定する。この一連の動作により、図１９の画像処理制御処理のＳ１９０４の処理で即時中断することができる。
【０１１０】
次にＳ２２０１に進みＣＰＵ１０６は、中断要求先の処理形態の処理部から処理結果を受信したか否かを判定する。これはＳ２２００で発行した即時中断要求に応答して、画像処理制御が即時中断したことを確認するものである。画像処理制御処理を中断した場合、図１９のＳ１９１３で中断終了のメッセージを送信するようにしているので、このメッセージを確認することで判定する。Ｓ２２０１でＣＰＵ１０６は、処理結果を受信したと判定するとＳ２２０２の処理に進むが、そうでないときはＳ２２０１で処理結果を受信するまで待つ。
【０１１１】
Ｓ２２０２でＣＰＵ１０６は、Ｓ２２０１で受信した処理結果を削除する。第一の処理形態の切換処理では、切換後の処理形態でゼロから画像処理をやり直すため、Ｓ２２０１で受信した処理結果は以降の処理で不要である。そのため、その処理結果を削除する。次にＳ２２０３に進みＣＰＵ１０６は、空き状況管理テーブルに対して、中断した処理形態の処理部の状況を使用中（×）から未使用（○）に変更する。例えば、処理形態８０４の場合には、図８からＣＰＵ２０４を使用しているので、ＣＰＵ２０４の空き状況を使用中から未使用に変更する。次にＳ２２０４に進みＣＰＵ１０６は、空き状況管理テーブルの、処理形態の切換後に使用する処理部の状況を未使用（○）から使用中（×）に変更する。ここで、処理形態の切換後に使用する処理部は、図２１のＳ２１０６で決定した切換後の処理形態の情報を参照することで確認できる。例えば、処理形態８０４から処理形態８０２に切換えた場合には、処理形態８０２で使用するＦＰＧＡ２０２とＣＰＵ２０４の空き状況を未使用（○）から使用中（×）に変更する。
【０１１２】
次にＳ２２０５に進みＣＰＵ１０６は、切換後に使用する処理形態がＦＰＧＡ２０２を使用するかを判定する。例えば、切換後に使用するものが処理形態８０２であればＦＰＧＡ２０２を使用すると判定する。ここでＦＰＧＡ２０２を使用すると判定したときはＳ２２０６の処理に進み、ＦＰＧＡ２０２を使用しないと判定した場合はＳ２２０８の処理に進む。Ｓ２２０６でＣＰＵ１０６は、ＦＰＧＡ２０２の再構成要求を発行する。これは上述した図５のＳ５０４と同様の処理であり、再構成要求を表すメッセージと処理対象となっている処理内容の情報を送信する。この処理内容の情報は、ＦＰＧＡ２０２に対して再構成すべき回路構成情報の決定のために使用される。そしてＳ２２０７に進みＣＰＵ１０６は、ＦＰＧＡ２０２の再構成が完了したかどうか判定する。これは上述したＳ５０５と同様の処理であり、ＦＰＧＡ２０２の再構成が完了したかどうかは、再構成の要求に対する完了の通知を表すメッセージを受信したかにより判定される。Ｓ２２０７でＦＰＧＡ２０２の再構成が完了したと判定したときはＳ２２０８に進み、ＣＰＵ１０６は、切換先となる処理形態に対して画像処理要求を発行する。これはＳ５０６と同様の処理であり、ＣＰＵ１０６は、切換後に使用する処理形態の処理部となるＣＰＵ（ＣＰＵ１０６又はＣＰＵ２０４）に対して、画像処理要求を発行する。この画像処理要求の発行では、画像処理成要求を表すメッセージ、処理対象の処理内容と処理形態の情報、及び、画像データを送信する。ここでは、画像処理を適用する画像データの全てに対して、処理要求の発行を行う。一方、ＦＰＧＡ２０２の再構成が完了していないと判定した場合はＳ２２０７の処理を繰り返し実行する。
【０１１３】
以上説明した第一の処理形態の切換処理により、即時中断要求を発行し、切換前の処理形態の画像処理実行を即時中断させ、切換後の処理形態でゼロから画像処理をやり直す制御が可能となる。
【０１１４】
図２６（ａ）と図２７（ａ）は、第一の処理形態の切換処理による画像処理の様子を表している。ともに、切替タイミングで第一の処理形態の切換処理が動作し、現在の処理形態の画像処理を即座に中断し、切換後の処理形態でページ１から再度実行している。第一の処理形態の切換処理では、このような画像処理の切換処理が実現可能であり、切り換えタイミングに依存してしまうが、処理形態の切換処理を行わない場合に比べて早く処理が完了する。
【０１１５】
次に、第二の処理形態の切換処理について説明する。
【０１１６】
この第二の処理形態の切換処理は、切換前の処理形態で行っている画像処理を即座に中断し、切換後の処理形態で、切換前の処理形態で画像処理が完了していないページのみ画像処理を実行する。即ち、切換前の処理形態での処理結果を引き継いで、切換後の処理形態に画像処理を実行させる。但し、画像処理が途中のページ（例えば図２６（ｂ）、図２７（ｂ）のページ４）に関しては、そのページ内の処理を引き継がず、そのページの最初から切換後の処理形態で画像処理を実行させる。即ち、図２６（ｂ）、図２７（ｂ）では、処理形態を切替えた後、ページ４の最初から画像処理を実行している。
【０１１７】
図２３は、実施形態に係る画像形成装置１００による第二の処理形態の切換処理（Ｓ２１０７）を説明するフローチャートである。尚、このフローチャートで示す処理は、画像処理要求を受信したＣＰＵ（ＣＰＵ１０６又はＣＰＵ２０４）により実行される。ここではＣＰＵ１０６が実行するものとして説明する。ここではこの処理を実行するプログラムはＲＯＭ１０８或いはＨＤＤ１２１に記憶されており、実行時ＲＡＭ１０７に展開されてＣＰＵ１０６の制御の下に実行されるものとする。
【０１１８】
Ｓ２３００とＳ２３０１の処理は、前述の図２２のＳ２２００とＳ２２０１と同様の処理であるため、その説明を省略する。Ｓ２３０２でＣＰＵ１０６は、受信した処理結果を拡張処理実行管理テーブル（図１４）に登録する。ここで受信した処理結果には、処理済のページの画像データが含まれており、処理済のページ番号を確認できる。処理形態の切換前後で引き継いで画像処理を行うために、後々参照できるように、処理済のページ番号を拡張処理実行管理テーブルの中断状態に格納する。例えば、図１４（Ｃ）では、切換前の処理形態である処理形態８０４を中断させ、このとき３ページまで処理が完了しているため中断状態に「３」を登録している。その後、切換後の処理形態である処理形態８０２は、４ページ目から１０ページ目までの画像処理を実行することになる。
【０１１９】
次にＳ２３０３とＳ２３０４は、図２２のＳ２２０３とＳ２２０４と同様の処理であるため、その説明を省略する。また次にＳ２３０５〜２３０７の処理は、図２２のＳ２２０５〜Ｓ２２０７と同様の処理であるため、その説明を省略する。そしてＳ２３０８に進みＣＰＵ１０６は、拡張処理実行管理テーブルから処理すべきページ番号を取得する。これはＳ２３０２で拡張処理実行管理テーブルの中断状態に登録したページ番号を取得するものである。次にＳ２３０９に進みＣＰＵ１０６は、切換先となる処理形態に対して画像処理要求を発行する。これは基本的に、図２２のＳ２２０８と同様の処理であるが、画像処理要求の発行時において、送信する画像データが異なる。ここでは、Ｓ２３０８で取得した処理すべきページ番号に基づいて、処理済のページと未処理のページとを区別し、未処理のページのみを画像処理要求で送信する画像データとする。この部分が図２２のＳ２２０８とは異なる点である。
【０１２０】
以上説明したようにして第二の処理形態の切換処理を実行できる。この第二の処理形態の切換処理により、即時中断要求を発行し、切換前の処理形態の画像処理実行を即時中断させ、切換後の処理形態では処理結果を引き継いで画像処理を実行する制御が可能となる。
【０１２１】
図２６（ｂ）と図２７（ｂ）は、第二の処理形態の切換処理による画像処理の様子を表している。ともに、切替タイミングで第二の処理形態の切換処理が動作し、現在の処理形態の画像処理を即座に中断している。切換後の処理形態では、第一の処理形態の切換処理の場合のようにページ１から再度実行するのではなく、処理結果を引き継いで画像処理を実行している。より詳細に説明すると、切換前となる現在の処理形態ではページ１〜３の処理が完了していて、ページ４の処理の途中で中断している。従って、切換後の処理形態では、ページ４の処理から実行することになる。このように第二の処理形態の切換処理では、処理結果を引き継いで切換後の処理形態で処理を行うため、第一の処理形態の切換処理よりも処理時間の短縮が可能である。
【０１２２】
次に第三の処理形態の切換処理について説明する。
【０１２３】
この第三の処理形態の切換処理は、切換前の処理形態で行っている画像処理を即座に中断せずに、切替タイミングで処理中のページに対する画像処理が完了した後に、その画像処理を中断して処理形態を切り換える。切換後の処理形態では、第二の処理形態の切換処理と同様に、切換前の処理形態で既に画像処理が完了していないページのみ画像処理を実行する。図２６（ｃ）、図２７（ｃ）は、第三の処理形態の切換処理を説明している。これら図では、ページ４の画像処理中に切替タイミングが発生しているため、そのページ４の画像処理の完了を待って、処理形態を切り換えている。従って、処理形態を切り換えた後は、ページ５から画像処理が実行される。
【０１２４】
図２４は、実施形態に係る画像形成装置１００による第三の処理形態の切換処理（Ｓ２１０７）を説明するフローチャートである。尚、このフローチャートで示す処理は、画像処理要求を受信したＣＰＵ（ＣＰＵ１０６又はＣＰＵ２０４）により実行される。ここではＣＰＵ１０６が実行するものとして説明する。ここではこの処理を実行するプログラムはＲＯＭ１０８或いはＨＤＤ１２１に記憶されており、実行時ＲＡＭ１０７に展開されてＣＰＵ１０６の制御の下に実行されるものとする。
【０１２５】
先ずＳ２４００でＣＰＵ１０６は、ページ間中断要求を発行する。このときのページ間中断要求の発行先は、処理形態の切換処理の対象となっている処理形態のＣＰＵとなる。この処理形態は、Ｓ２１０５で取得した処理形態で、実施形態ではＣＰＵ１０６又はＣＰＵ２０４となる。例えば、処理形態の切換処理の対象が処理形態８０４の場合は、ＣＰＵ２０４に対してページ間中断要求が発行される。また、上述したように、ＣＰＵ２０４はページ間中断要求を図１６の画像処理要求の受信処理のＳ１６０１の処理で検知し、Ｓ１６０７の処理でページ間中断フラグを設定する。この一連の動作により、図１９の画像処理制御処理のＳ１９０３で、ページ処理の完了後に中断することができる。
【０１２６】
次にＳ２４０１に進みＣＰＵ１０６は、中断要求先の処理形態の処理部から処理結果を受信したか否かを判定する。これはＳ２４００で発行したページ間中断要求に応答して、画像処理制御処理がページ間で中断したことを確認するものである。画像処理制御処理を中断した場合には、図１９のＳ１９１３で中断終了のメッセージを送信するようにしているので、このメッセージを確認することで判定する。但し、ページ間中断要求の場合には、切換前の処理形態が最終ページの処理中であった場合には、Ｓ１９０３の処理の前にＳ１９０１の処理で全てのページに対する処理が完了すると判定されるため、正常終了のメッセージを受信することがある。従って、正常終了のメッセージを合わせて確認することでこの処理は実現される。処理結果を受信したと判定した場合はＳ２４０２の処理に移る。処理結果を受信していないと判定された場合、Ｓ２４０１で処理結果を受信するまで待つことになる。
【０１２７】
Ｓ２４０２でＣＰＵ１０６は、受信した処理結果は全ページ処理が完了したものかどうか判定する。Ｓ２４０１で上述したように、全ページ処理が完了している場合には、正常終了を表しているメッセージを処理結果として受信する。従って、正常終了のメッセージ受信をしたかどうかを判定する。受信した処理結果は全ページ処理が完了したものであると判定した場合はこの処理を終了するが、そうでないときはＳ２４０３の処理に進む。Ｓ２４０３〜Ｓ２４１０の処理は、図２３の第二の処理形態の切換処理のＳ２３０２〜Ｓ２３０９と同様であるため、その説明を省略する。
【０１２８】
以上説明した処理により、第三の処理形態の切換処理が実行される。この第三の処理形態の切換処理では、ページ間中断要求を発行し、切換前の処理形態の画像処理実行で行っているページ処理完了を待ってから中断させ、切換後の処理形態では処理結果を引き継いで画像処理を実行する制御が可能となる。
【０１２９】
図２６（ｃ）と図２７（ｃ）は、第三の処理形態の切換処理による画像処理の様子を表している。ともに、切替タイミングで第三の処理形態の切換処理が動作し、現在の処理形態の画像処理で行っているページ処理完了を待ってから中断している。また、切換後の処理形態ではページ１から再度実行するのではなく、処理結果を引き継いで画像処理を実行していることを表している。より詳細に説明すると、切替タイミングでは、切換前となる現在の処理形態ではページ１〜３の処理が完了し、ページ４の処理の途中となっているが、中断はページ４の処理完了を待ってから行っている。そして、切換後の処理形態では、ページ５の処理から実行している。このように、切替タイミングがページ処理の終わりに近ければ、第二の処理形態の切換処理と比べて、図２６の例で示すように、より早く処理を完了することができる。
【０１３０】
次に第四の処理形態の切換処理について説明する。
【０１３１】
図２６と図２７を参照すると、第二の処理形態の切換処理で行った方が合計の処理時間が短くなる場合と、第三の処理形態の切換処理で行った方が合計の処理時間が短くなる場合とがあることがわかる。これは切替タイミングの時の処理中のページの処理状況の違いによるものである。図２６の切替タイミングでは、処理中のページ４の処理状況が、終盤（図２６の例では、１１／１２まで処理が完了した状態）まで処理が進んだ状態である。これに対して図２７の切替タイミングでは、処理中のページ４の処理状況は、処理がまだ序盤（図２７の例では１／３まで完了した状態）である。従って、図２６の切替タイミングでは、処理中のページ４の処理が完了するのを待ってから処理を中断した方が合計の処理時間が短くなり、図２７の切替タイミングでは、即座に中断した方が合計の処理時間が短くなる。そこで第四の処理形態の切換処理では、切替タイミングの時点で、処理中のページの画像処理の進捗状況を取得した上で、即座に処理を中断すべきか、処理中のページ処理が完了するのを待ってから中断すべきかを判定して制御する。
【０１３２】
図２５は、実施形態に係る画像形成装置１００による第四の処理形態の切換処理（２１０７）を説明するフローチャートである。尚、このフローチャートで示す処理は、画像処理要求を受信したＣＰＵ（ＣＰＵ１０６又はＣＰＵ２０４）により実行される。ここではＣＰＵ１０６が実行するものとして説明する。ここではこの処理を実行するプログラムはＲＯＭ１０８或いはＨＤＤ１２１に記憶されており、実行時ＲＡＭ１０７に展開されてＣＰＵ１０６の制御の下に実行されるものとする。
【０１３３】
先ずＳ２５００でＣＰＵ１０６は、処理ステータスを取得する。この処理ステータスの取得は、現在の処理形態で処理を実行しているＣＰＵに対して、処理ステータス確認要求を発行することで取得できる。処理ステータス確認要求を発行すると、上述したように、Ｓ１６００により検知され、処理済みのページ番号の情報と、処理中のページで完了した下位処理の数と処理中の下位処理の完了領域の値が処理ステータスとして取得できる。
【０１３４】
次にＳ２５０１に進みＣＰＵ１０６は、現在実行中のページに対して、下位処理が所定数以上完了しているかを判定する。Ｓ２５００で処理ステータスとして処理中のページに対して完了した下位処理の数を取得しているので、この情報を基に判定できる。例えば、図１８に示すように、そのページの処理が３つの下位処理で構成される場合は、所定数以上として具体的には２以上の下位処理が完了しているかを判定する。閾値となるこの所定数としては、即座に中断した場合と、現在実行中のページの処理が完了するのを待ってから中断した時に、どちらの方が早くなるかを考慮した値とする。例えば、現在実行中の処理形態では、各下位処理に５秒を必要とし、切換後の処理形態では、各下位処理に１秒を必要とする場合を想定する。この場合は、即時中断した方が確実に早くなる境界として、下位処理が２つ以上完了してない状態となり、この数「２」が所定数として決定される。下位処理が２つ以上完了している場合は、更に処理中の下位処理でページのどの領域まで処理が完了しているかを確認しないと、どちらの中断方法を適用した方が早いかを判断できない。従って、後述するＳ２５０２で、更に処理中の下位処理の完了領域の数を判定する。Ｓ２５０１でＣＰＵ１０６は、下位処理が所定数以上完了していると判定した場合はＳ２５０２の処理に進み、そうでないときはＳ２５０４の処理に進んで、即時中断要求を発行してＳ２５０５に進む。Ｓ２５０２でＣＰＵ１０６は、現在実行中の下位処理が所定領域以上完了しているかどうか判定する。Ｓ２５００で処理ステータスとして処理中の下位処理の完了領域の値を取得しているので、この情報を基に判定できる。
【０１３５】
Ｓ２５０１を、上述した具体例に沿って説明する。下位処理が２つ以上完了している場合は、遅くとも５秒以内に処理が完了する。また、即座に中断して切換後の処理形態で実行した場合は、３秒で処理が完了する。従って、現在実行中の下位処理が３／５以上完了している場合には、現在実行中のページの処理完了を待ってから中断した方が、合計の処理時間が短くなる。このように、Ｓ２５０２における閾値も、Ｓ２５０１の閾値の考え方と同様に、即座に中断した場合と、現在実行中のページの処理の完了を待ってから中断した場合に、どちらが合計の処理時間が短くなるかを考慮した値となる。Ｓ２５０２でＣＰＵ１０６が、現在実行中の下位処理が所定領域以上完了していると判定した場合はＳ２５０３の処理に進み、そうでないときはＳ２５０４の処理に移る。
【０１３６】
この後のＳ２５０３の処理は、図２４のＳ２４００と同様の処理であり、Ｓ２５０４の処理は図２３のＳ２３００と同様の処理である。またＳ２５０５〜Ｓ２５１４の処理は、上述した図２４の第三の処理形態の切換処理のＳ２４０１〜Ｓ２４１０の処理と同様であるため、それらの説明を省略する。
【０１３７】
以上説明した処理により、第四の処理形態の切換処理が実行される。この第四の処理形態の切換処理では、処理ステータスを確認した上で、ページ間中断要求を発行すべきか、即時中断要求を発行すべきかを判定し、その判定結果に応じた中断要求を発行する。切換後の処理形態では処理結果を引き継いで画像処理を実行させる制御を行っている。
【０１３８】
図２６（ｄ）と図２７（ｄ）は、第四の処理形態の切換処理による画像処理の様子を表している。ともに、切替タイミングで第四の処理形態の切換処理が動作し、現在の処理形態はページ４の処理中の状態である。図２６（ｄ）の例では、切替タイミングでページ４は１１／１２まで完了した状態である。各下位処理の負荷が均等である場合には、下位処理は２つ以上完了した状態、下位処理３の完了領域は３７５０ライン（７５％）まで完了した状態である。従って、実施形態で説明した各閾値で判定すると、図２６（ｄ）のように現在処理中のページ４の処理の完了を待ってから切り換える制御となる。これに対して図２７（ｄ）の例では、切替タイミングでページ４は１／３まで完了した状態である。各下位処理の負荷が均等である場合には、下位処理は１つ以上完了した状態である。従って、本実施形態で説明した各閾値で判定すると、図２７（ｄ）のように、即時に中断させて切り換える制御となる。
【０１３９】
このように、第四の処理形態の切換処理では、切替タイミングの処理ステータスに応じて、即座に中断して切り換えるか、現在処理中のページ処理の完了を待ってから中断してから切り換えるかのどちらの方法で行うかを制御できる。従って、いずれの切り換えタイミングでも、合計の処理時間を短くすることが可能となる。尚、第四の処理形態の切換処理では、処理ステータスに応じて、中断方法及び切り換え方法を使い分けたが、更に中断時や、切り換え時のオーバーヘッドが大きい場合は、これを考慮してもよい。オーバーヘッドの一例としては、中断時に要するソフトウエア処理時間、切り換え時に要するソフトウエア処理時間、ＦＰＧＡの再構成に要する再構成時間等である。
【０１４０】
以上説明したように実施形態によれば、要求された拡張処理を行うために、複数存在する処理形態の中から、その優先度と、処理形態に必要な処理部の空き状況を参照して処理形態を決定している。処理部の空き状況に変化があった場合には、現在実行中の拡張処理の処理形態を最適化する処理が働くので、より早く完了する処理形態に切り換えることが可能となる。また、実施形態では、プログラマブルデバイスとしてＦＰＧＡを用いて説明してきたが、これに限るものではない。
【０１４１】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１４２】
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【０１４３】
１００…画像形成装置、１０１…メインコントローラ、１０２…操作部、１０３…スキャナ、１０４…プリンタ、１０５…拡張処理部、１０６…ＣＰＵ、１０７…ＲＡＭ、２０２…ＦＰＧＡ，２０４…ＣＰＵ、３０２…機能部
【図１】
2017085322.tif 000003
【図２】
2017085322.tif 000004
【図３】
2017085322.tif 000005
【図４】
2017085322.tif 000006
【図５】
2017085322.tif 000007
【図６】
2017085322.tif 000008
【図７】
2017085322.tif 000009
【図８】
2017085322.tif 000010
【図９】
2017085322.tif 000011
【図１０】
2017085322.tif 000012
【図１１】
2017085322.tif 000013
【図１２】
2017085322.tif 000014
【図１３】
2017085322.tif 000015
【図１４】
2017085322.tif 000016
【図１５】
2017085322.tif 000017
【図１６】
2017085322.tif 000018
【図１７】
2017085322.tif 000019
【図１８】
2017085322.tif 000020
【図１９】
2017085322.tif 000021
【図２０】
2017085322.tif 000022
【図２１】
2017085322.tif 000023
【図２２】
2017085322.tif 000024
【図２３】
2017085322.tif 000025
【図２４】
2017085322.tif 000026
【図２５】
2017085322.tif 000027
【図２６】
2017085322.tif 000028
【図２７】
2017085322.tif 000029