(57)【要約】【課題】動的部分再構成部を有する画像処理装置において、複数の異なるジョブに対応した画像処理回路を複数並列に構成した場合に、それぞれの画像処理回路内に同一の機能のハードウェアモジュールが構成されている場合に、従来通りに１つのハードウェアモジュールに対して予め決められたアドレスマップを用いてレジスタアクセスを行おうとした場合に、どちらのハードウェアモジュールに対してレジスタアクセスをするべきかを決定することができない。【解決手段】同一機能を有する回路のレジスタに同一のアドレスを割り当てるとともに、当該回路を使用するジョブの識別子に基づいて、同一のアドレスが割り当てられているレジスタを区別し、ジョブ及びアドレスに固有のレジスタを特定して設定を行う。【選択図】図１４
2015222873.tif 000002
【特許請求の範囲】
【請求項１】
画像処理の種類と前記画像処理を行うジョブを識別するジョブ識別値とに応じたアドレスを割り当てられたレジスタを含む、画像処理の種類ごとの画像処理回路と、
実行するジョブのジョブ識別値と、該ジョブで実行する前記画像処理の種類に応じたアドレスとによりレジスタを指定して、該レジスタに前記画像処理のパラメータを設定する設定手段と
を有することを特徴とする画像処理装置。
【請求項２】
少なくとも部分的に再構成が可能な再構成可能回路に、所望の回路を再構成するための再構成手段を更に有し、
前記画像処理回路は、前記再構成手段により前記再構成可能回路に構成されることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記再構成可能回路は、前記画像処理の種類と前記ジョブ識別値とにより、前記ジョブにより使用される画像処理回路が特定されるよう、該画像処理回路を構成することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記設定手段は、前記画像処理の種類に応じたアドレスと前記ジョブ識別値とを前記再構成可能回路に入力し、
前記再構成可能回路はモジュールセレクタ部を有し、該モジュールセレクタ部により、前記アドレスと前記ジョブ識別値とを併せてデコードして対応するレジスタを特定することを特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記レジスタのアドレスは前記ＣＰＵのアドレス空間にマッピングされており、
前記設定手段は、前記画像処理の種類に応じた前記ＣＰＵのアドレス空間にマッピングされたアドレスを前記再構成可能回路に入力することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記設定手段は、前記画像処理の種類に応じたアドレスと前記ジョブ識別値とに基づいて固有のアドレスを生成して前記再構成可能回路に入力し、
前記再構成可能回路はモジュールセレクタ部を有し、該モジュールセレクタ部により、前記固有のアドレスをデコードして対応するレジスタを特定することを特徴とする請求項２又は３に記載の画像処理装置。
【請求項７】
前記レジスタのアドレスはＣＰＵのアドレス空間にマッピングされており、
前記設定手段は、前記画像処理の種類に応じた前記ＣＰＵのアドレス空間にマッピングされたアドレスと前記ジョブ識別値とに基づいて、前記再構成可能回路において固有のアドレスを生成して前記再構成可能回路に入力することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記画像処理回路には、ＲＧＢプリント画像処理回路と、ハーフトーン処理回路と、ＣＭＹＫプリント画像処理回路と、ＰＤＬ処理回路と、スキャン画像処理回路との少なくともいずれかを含むことを特徴とする請求項１乃至７のいずれか一項に記載の画像処理装置。
【請求項９】
画像データを入力して前記画像処理回路に入力する入力手段と、
前記画像処理回路から出力される画像データを画像として形成する出力手段と
を更に有することを特徴とする請求項１乃至８のいずれか一項に記載の画像処理装置。
【請求項１０】
前記設定手段は、実行するジョブのジョブＩＤと、処理中のジョブの中においてジョブを固有に識別するためのジョブ識別値と、当該ジョブにより用いる画像処理回路とを関連付けたジョブ管理テーブルを有し、該ジョブ管理テーブルに基づいて、実行するジョブのジョブ識別値と、該ジョブで実行する前記画像処理の種類に応じたアドレスとによりレジスタを指定して、該レジスタに前記画像処理のパラメータを設定することを特徴とする請求項１乃至９のいずれか一項に記載の画像処理装置。
【請求項１１】
画像処理の種類と前記画像処理を行うジョブを識別するジョブ識別値とに応じたアドレスを割り当てられたレジスタを含む、画像処理の種類ごとの画像処理回路を有する画像処理装置において、
実行するジョブのジョブ識別値と、該ジョブで実行する前記画像処理の種類に応じたアドレスとによりレジスタを指定して、該レジスタに前記画像処理のパラメータを設定する設定工程を有することを特徴とする画像処理回路の設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば動的に再構成が可能な再構成可能回路を用いた画像処理装置及び画像処理回路の設定方法に関する。
【背景技術】
【０００２】
内部の論理回路構成を変更可能なPLD（Programmable Logic Device）やFPGA（Field Programmable Gate Array）などの再構成可能デバイスが良く知られている。一般的に、PLDやFPGAは起動時にROM等の不揮発性メモリへ格納された論理回路構成情報を内部の揮発性メモリであるコンフィギュレーションメモリへ書き込み、内部論理ブロックの機能を切り替えることで実現される。また、コンフィギュレーションメモリ内の情報は電源切断時にクリアされるため、電源投入時には再度、論理回路構成情報をコンフィギュレーションメモリに書き込むことで再構成を行う必要がある。このように、一度だけハードウェアリソースの構成を行う方法を静的再構成という。一方で、回路が動作中に論理回路構成を変更することが可能なものも開発されてきており、動作中に論理回路を変更する方法を動的再構成という。また、FPGAには、チップ全体ではなく特定の領域だけを書き換えることが可能なものがあり、このような書き換えを部分再構成という。特に、動作中の他の回路を停止しない状態で部分再構成を行うことを動的部分再構成という。
【０００３】
動的部分再構成では、動的再構成時にコンフィギュレーションメモリ全体を書き換えるのではなく、コンフィギュレーションメモリ領域の一部のみを書き換えることで、FPGA内部の論理ブロックの部分的な再構成を実現することが可能となる。このような動的部分再構成技術を用いることで、一つの領域に複数の回路を切り替えて実装することが可能となるため、ハードウェアリソースの時分割多重化を行い論理ブロックで実現する機能を変更することができる。その結果、少ないハードウェアリソースで用途に合わせた様々な機能をハードウェアによる高い演算性能を保ったままで柔軟に実現することが可能となる。
【０００４】
一方、従来の画像処理装置を構成するデバイスとしてはASICが挙げられる。ASICではそのデバイス内に全ての画像処理回路を実装しており、それら画像処理回路に対して処理内容を指定するためのレジスタに対しては、CPU等の設定手段から認識できるアドレスマップは一意に決まっている。このため、アクセス時に設定されたアドレス値から、実際に設定される画像処理回路へのイネーブル信号を生成するような回路構成が開示されている(例えば、特許文献1参照。)。 
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平5-165631号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の方法によると、所定の機能処理を行う画像処理回路に対して設定を行う場合には当該画像処理回路に対して割り当てられたアドレスにＣＰＵからアクセスするが、そのアドレスは前述のアドレスマップによって予め一意に決まっている。画像処理回路としてＦＰＧＡのような再構成可能デバイスを使用し且つ複数の動作(例えばコピー動作とプリント動作)を並列に処理する場合においては、同一の機能処理を行う画像処理回路が複数個構成されることが考えられる。この時、従来の方法のように所定の機能処理を行う画像処理回路に対するアドレスが一意に決まっていると、同時に複数個実装された画像処理回路に対して重複した同一のアドレスを割り当てることになり、そのいずれにアクセスするべきかを確定できない構成となってしまう。あるいは、同一機能であっても異なる回路に対してはそれぞれ固有のアドレスを割り当てると、機能とアドレスとの紐づけの管理が複雑になってしまう。
【０００７】
本発明は上記従来例に鑑みて成されたもので、同一の機能を有する回路に対しては同一のアドレスを割り当てることで機能とアドレスとの紐づけを簡単化するとともに、複数の同一機能の回路のうちから用いる回路を特定できる画像処理装置及び画像処理回路の設定方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明は以下の構成を有する。
【０００９】
画像処理の種類と前記画像処理を行うジョブを識別するジョブ識別値とに応じたアドレスを割り当てられたレジスタを含む、画像処理の種類ごとの画像処理回路と、
実行するジョブのジョブ識別値と、該ジョブで実行する前記画像処理の種類に応じたアドレスとによりレジスタを指定して、該レジスタに前記画像処理のパラメータを設定する設定手段とを有することを特徴とする画像処理装置。
【発明の効果】
【００１０】
本発明によれば、同一の機能を有する回路に対しては同一のアドレスを割り当てることで機能とアドレスとの紐づけを簡単化するとともに、複数の同一機能の回路のうち用いる回路を特定できる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例１及び実施例２で使用する画像処理装置の構成の一例を示す図である。
【図２】本発明の実施例１及び実施例２で使用するジョブ毎の画像処理機能の構成と画像データフローを説明する図である。
【図３】本発明の実施例１及び実施例２で使用する画像処理装置の制御構成を説明する図である。
【図４】本発明の実施例１及び実施例２で使用するメモリマップを説明する図である。
【図５】本発明の実施例１及び実施例２で使用するメモリマップとコマンドの関係について説明する図である。
【図６】本発明の実施例１及び実施例２で使用するコマンド発行動作時のハードウェア構成を説明する図である。
【図７】本発明の実施例１及び実施例２で使用するジョブ内の処理フローについて説明する図である。
【図８】本発明の実施例１及び実施例２で使用する複数ジョブ実行時のＦＰＧＡの再構成について説明する図である。
【図９】本発明の実施例１で使用する複数ジョブ実行時のＦＰＧＡの再構成について詳細に説明する図である。
【図１０】本発明の実施例１で使用する複数ジョブ実行時のコマンド発行に関してＣＰＵ内の構成について説明する図である。
【図１１】本発明の実施例１及び実施例２で使用する複数ジョブ実行時の各ジョブ内の処理フローについて説明する図である。
【図１２】本発明の実施例１及び実施例２で使用する複数上に実行時の全体の制御を説明するフローチャートである。
【図１３】本発明の実施例１で使用するメモリマップと内部情報の対応を説明する表である。
【図１４】本実施例の実施例１で使用するレジスタ設定時の動作制御を説明するフローチャートである。
【図１５】本発明の実施例２で使用するシステムバスのアドレス空間とコマンドバスのアドレス空間との対応を説明する図である。
【図１６】本発明の実施例２で使用する複数ジョブ実行時のコマンド発行に関してＣＰＵ内の構成について説明する図である。
【図１７】本発明の実施例２で使用する複数ジョブ実行時のＦＰＧＡの再構成について詳細に説明する図である。
【図１８】本発明の実施例２で使用するメモリマップと内部情報の対応を説明する表である。
【図１９】本実施例の実施例２で使用するレジスタ設定時の動作制御を説明するフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を用いて説明する。
［第１の実施例］
＜画像処理装置の構成＞
図１は、本発明の実施形態に関わる画像処理装置の装置構成を説明するブロック図である。本実施形態の画像処理装置１００は、ユーザが各種の操作および設定変更を行うための操作部１０３と、操作部１０３からの指示に従い画像情報を読み取るスキャナ部１０９と、画像データを用紙に印刷するプリンタ部１０７とを有する。スキャナ部１０９は、スキャナ部１０９を制御する図示しないＣＰＵや原稿読取を行うための図示しない照明ランプや走査ミラーなどを有する。プリンタ部１０７は、プリンタ部１０７の制御を行う図示しないＣＰＵや画像形成や定着を行うための図示しない感光体ドラムや定着器を有する。
【００１３】
また、画像処理装置１００は、画像処理装置１００の制御を行うコントローラとして、ＦＰＧＡ１４０を有する。この例では、部分的かつ動的に再構成可能回路であるＦＰＧＡ１４０が画像処理装置１００の動作を統括的に制御するＣＰＵ１０１を備える。このＣＰＵ１０１がＦＰＧＡ１４０や再構成を制御するコンフィグコントローラ１３０などといった、この画像処理装置の各ユニットを制御するための制御ソフトウェアを実行する。なお、ＦＰＧＡ１４０がＣＰＵ１０１を備えていることはあくまで一例にすぎず、ＦＰＧＡ１４０の外部にＣＰＵを設けてもよい。
また、画像処理装置１００は、ＣＰＵ１０１が実行するブートプログラム、および、ＦＰＧＡ１４０の再構成部１３１をコンフィギュレーションする為のコンフィグデータが格納されているＲＯＭ１０４を有する。また、画像処理装置１００は、ＣＰＵ１０１が動作するためのシステムワークメモリであり、かつ画像データを一時記憶するための画像メモリでもあるＲＡＭ１１１を有する。
【００１４】
ＦＰＧＡ１４０は、再構成部１３１と、再構成部１３１のコンフィグデータを制御するコンフィグコントローラ１３０とを有する。再構成部１３１は、書き換え可能な論理回路であり、動的書き換え可能かつ部分書き換え可能なものである。すなわち、再構成部１３１の一部に再構成された回路が動作している間に、その回路が占める部分とは重ならない別の部分に別の回路を再構成することができる。また、ＦＰＧＡ１４０は、スキャナ部１０９から画像データが入力されるスキャナＩ／Ｆ１０８と、プリンタへ画像データを出力するプリンタＩ／Ｆ１０６とを有する。再構成部１３１、及びスキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６は、処理される画像データを転送するための画像バス１２１に接続される。また、ＦＰＧＡ１４０は、画像処理装置の動作を統括的に制御するＣＰＵ１０１を備える。また、ＦＰＧＡ１４０は、ネットワークＩ／Ｆ１０２を介し、ネットワーク上の図示しない汎用コンピュータと通信（送受信）を行う。また、ＦＰＧＡ１４０は、不図示のＵＳＢＩ／Ｆを介し、画像処理装置１００と接続された図示しない汎用コンピュータと通信（送受信）を行う。ＦＰＧＡ１４０は、ＣＰＵ１０１が実行するブートプログラム、および、再構成部１３１をコンフィギュレーションするためのコンフィグデータが格納されているＲＯＭ１０４への書き込み、読み出し動作を制御するＲＯＭ  Ｉ／Ｆ１１２を有する。また、ＦＰＧＡ１４０は、ＣＰＵ１０１、ネットワークＩ／Ｆ１０２、操作部Ｉ／Ｆ１１３、ＲＯＭ  Ｉ／Ｆ１１２、コンフィグコントローラ１３０、再構成部１３１を相互に接続するシステムバス１２０を有する。システムバス１２０は、例えばメモリにアクセスるためのアドレスバスとデータバスとを含むパラレルなバスである。ＣＰＵ１０１は、再構成部１３１内にコンフィギュレーションされた各画像処理部と、スキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６のパラメータ設定を、システムバス１２０を介して行う。また、ＦＰＧＡ１４０は、ＲＡＭ１１１への書き込み、読み出し動作を制御するメモリコントローラ１１０を有する。メモリコントローラ１１０は、システムバス１２０および画像バス１２１に接続され、画像バス１２１に接続されたバスマスタのＲＡＭ１１１へのアクセスと、システムバス１２０に接続されたバスマスタのＲＡＭ１１１アクセスとを、排他的に切り替える。
【００１５】
＜画像処理の例＞
次に、図２を用いて本実施例における再構成部１３１に構成される画像処理機能（画像処理回路）の例とコンフィグデータの関係について説明する。画像処理装置１００は、スキャナ部１０９で読み取られた原稿を複写する機能（コピー機能）、外部の図示しないＰＣ等に実現されたプリンタドライバからネットワークＩ／Ｆ１０２を介してネットワーク経由で送付された印刷データをプリンタ部１０７から印刷する機能（ＰＤＬプリント機能）等を持つ。また、スキャナ部１０９で読み取られた原稿を画像データとしてネットワークＩ／Ｆ１０２を介して外部の図示しないＰＣ等へ送信するＳＥＮＤ機能も持つ。動的再構成が可能な画像処理システムの場合、ユーザにより選択された機能及び変更された設定項目に応じて必要な画像処理機能を実現する画像処理回路を再構成部１３１に構成して実際の処理を行う。再構成部１３１に構成される前記画像処理回路には、ＲＧＢプリント画像処理回路と、ハーフトーン処理回路と、ＣＭＹＫプリント画像処理回路と、ＰＤＬ処理回路と、スキャン画像処理回路との少なくともいずれかを含む。
【００１６】
図２（ａ）はコピー機能を実現するための画像データフローを表している。まず、スキャナ部１０９から読み取られた原稿画像データはスキャナＩ／Ｆ１０８及び画像バス１２１を介してスキャン画像処理部２００に転送される（この画像データ転送フローをフロー２２０と呼ぶ）。スキャン画像処理部２００では像域判定処理や、ＲＧＢダイレクトマッピング処理等の画像処理を画像データに対して実行する。画像処理された画像データは次に画像バス１２１を介してメモリコントローラ１１０に転送され、ＲＡＭ１１１に格納される（この画像データ転送フローをフロー２２１と呼ぶ）。ＲＡＭ１１１に格納された画像データはメモリコントローラ１１０によって読み出され画像バス１２１を介してプリンタ画像処理部２１０に転送される（この画像データ転送フローをフロー２２２と呼ぶ）。プリンタ画像処理部２１０では、ガンマ補正処理や、スクリーン処理等のコピー用ハーフトーン処理を画像データに対して実行する。次に画像処理された画像データは画像バス１２１を介しプリンタＩ／Ｆ１０６を経由してプリンタ部１０７に転送され、プリントアウトされる。（この画像データ転送フローをフロー２２３と呼ぶ）。以上のように画像データ転送フロー２２０からフロー２２３の順に画像データは転送され、それぞれの画像処理部において所定の画像処理を行った後にプリントアウトされることで、コピー機能が実現される。これらフローの順序は図２中にかっこで示した。スキャン画像処理部２００およびプリント画像処理部２１０が、再構成部１３１に構成された回路により実現されている。
【００１７】
図２（ｂ）は、ＰＤＬプリント機能を実現するための画像データフローを表している。まず、ネットワーク上の図示しないＰＣ等から出力された印刷データは、ネットワークＩ／Ｆ１０２を介しシステムバス１２０を経由してメモリコントローラ１１０に転送されＲＡＭ１１１に格納される（この画像データ転送フローをフロー２７０と呼ぶ）。次にＲＡＭ１１１に格納された印刷データはメモリコントローラ１１０によって読み出されシステムバス１２０を介してＰＤＬ処理部２５０に転送される。（この画像データ転送フローをフロー２７１と呼ぶ）。ＰＤＬ処理部２５０では転送された印刷データを元に図示しないプロセッサ手段によって、中間言語情報の作成を行う。更にこれと並行してラスタライズ処理を行う。またこの処理には、印刷データに含まれる文字コードから予め格納されているビットパターン、アウトラインフォント等のフォントデータへの変換等の処理が含まれる。これらの処理によって印刷データは画像データに変換される。変換された画像データは画像バス１２１を介してメモリコントローラ１１０に転送され、再度ＲＡＭ１１１に格納される。（この画像データ転送フローをフロー２７２と呼ぶ）。次にＲＡＭ１１１内に格納された画像データは画像バス１２１を介してＰＤＬジョブ用プリント画像処理部２６０に転送される。（この画像データ転送フローをフロー２７３と呼ぶ）。ＰＤＬジョブ用プリント画像処理部２６０では濃度補正処理や誤差拡散処理等のＰＤＬプリント処理を画像データに対して実行する。次に画像処理された画像データは画像バス１２１を介しプリンタＩ／Ｆ１０６を経由してプリンタ部１０７に転送され、プリントアウトされる。（この画像データ転送フローをフロー２７４と呼ぶ）。以上のように印刷データ及び画像データは画像データ転送フロー２７０からフロー２７４の順に転送され、それぞれの画像処理部において所定の画像処理を行った後にプリントアウトされることで、ＰＤＬプリント機能が実現される。これらフローの順序は図２中にかっこで示した。ＰＤＬ処理部２５０およびプリント画像処理部２６０が、再構成部１３１に構成された回路により実現されている。
【００１８】
図２（ｃ）は上記ＳＥＮＤ機能を実現するための画像データフローを表している。まず、スキャナ部１０９から読み取られた原稿画像データはスキャナＩ／Ｆ１０８及び画像バス１２１を介してスキャン画像処理部２８０に転送される（この画像データ転送フローをフロー２９０と呼ぶ）。スキャン画像処理部２８０では解像度変換処理やＯＣＲ用画像処理を画像データに対して実行する。画像処理された画像データは次に画像バス１２１を介してメモリコントローラ１１０に転送されＲＡＭ１１１に格納される。（この画像データ転送フローをフロー２９１と呼ぶ）。ＲＡＭに格納された画像データはＣＰＵ１０１においてＯＣＵ処理を行い文字領域データに対しては高圧縮処理、非文字調息データに対してはＪＰＥＧ等の低圧縮処理を行いＳＥＮＤ用画像データに変換する。（この画像データ転送フローをフロー２９２と呼ぶ）。次に変換された画像データはシステムバス１２０を経由しネットワークＩ／Ｆ１０２を介してネットワーク上の図示しないＰＣ等に転送される。（この画像データ転送フローをフロー２９３と呼ぶ）。以上のように原稿画像データは画像データ転送フロー２９０からフロー２９４の順に転送され、それぞれの画像処理部において所定の画像処理を行った後にネットワーク上のＰＣ等に転送されることで、ＳＥＮＤ機能が実現される。これらフローの順序は図２中にかっこで示した。スキャン画像処理部２８０が、再構成部１３１に構成された回路により実現されている。
【００１９】
＜画像処理の制御ソフトウェア＞
次に、図３を用いて本実施例で説明するソフトウェア構成について説明する。図３は本実施例によって説明される画像処理装置１００内のＦＰＧＡ１４０の動作を制御する制御ソフトウェアを実現するプログラムの構造を示している。プログラムはＲＯＭ１０４内に格納されており、このプログラムをＣＰＵ１０１によって読み出し及び展開してＲＡＭ１１１内に格納し実行されることにより実現される。プログラムは、図３に示すように３層に階層化された構成を有する。ＦＰＧＡ１４０内に構成される画像処理回路等のハードウェアと通信するサービス階層（低レベルドライバ層）と、ＦＰＧＡ１４０に再構成される各機能を制御するモジュール制御階層（ドライバ層）と、ジョブを受け付けデータのハンドリングを行うシーケンス制御階層（アプリケーション層）とから成る。サービス階層には、デバイスドライバ部３３１を備える。デバイスドライバ部は、上位階層からアクセスコマンドを受け取り、システムバス１２０を介して各ハードウェアリソースに直接アクセスする機能やハードウェアからの割込みを検知する機能等を有する。モジュール制御階層にはスキャンモジュール制御部３２１、プリントモジュール制御部３２２、画像データ転送制御部３２３を備える。シーケンス制御階層は、ジョブ制御部３１１を備える。
【００２０】
例えば、ジョブ制御部３１１がスキャンジョブやプリントジョブ、コピージョブ、センドジョブ等を実行すると、それらジョブに含まれるスキャンやプリント、データ転送等のモジュール処理の実行ために、モジュール制御階層の各制御部３２１〜３２３が呼び出される。制御部３２１〜３２３は、その中で行うハードウェアによる画像処理のために、サービス階層のデバイスドライバ３３１を実行させる。デバイスドライバは、ハードウェアの回路を駆動して画像処理を実行する。各回路（具体的には例えばレジスタ）は、ＣＰＵ１０１のメモリ空間やＩＯ空間等（これらをアドレス空間と呼ぶ。）にマッピングされており、そのアドレス空間へのパラメータ等の書き込みによって、そのアドレスに紐づけられた回路が駆動される。ここで例えばドライバ層の各制御部からデバイスドライバ３３１に対しては、アドレスとデータ（パラメータ）とを組にしたデータであるコマンド（あるいはアクセスコマンドとも呼ぶ）により、ハードウェアモジュールを指定してパラメータを引き渡すことができる。
【００２１】
ここで図４、図５を用いてアクセスコマンドについて説明する。図４のメモリマップ４００は、ＣＰＵ１０１から各ハードウェアモジュールのレジスタへアクセスするために各ハードウェアモジュールにマッピングされているＣＰＵ１０１のアドレス空間の一例を示す。このアドレス空間では、アドレス値によって一意に所望の場所を指定することができる。尚、このアドレス空間の定義は、ＲＯＭ１０４内に格納されたプログラム内に記憶されている。
【００２２】
例えばＲＧＢ用プリント画像処理を行うハードウェアモジュールに処理パラメータを設定する場合には、０ｘＣ０２０＿００００から０ｘＣ０２０＿ＦＦＦＦまでのアドレス空間４０１を指定し、各アドレスに関連付けられたパラメータ情報を設定する。そのために、０ｘＣ０２０＿００００から０ｘＣ０２０＿ＦＦＦＦまでのアドレス空間４０１と各アドレスに関連付けられたデータ（パラメータ情報）とを有するコマンドを用いて、デバイスドライバ３３１に対してパラメータの設定を指示する。これにより、デバイスドライバ３３１は、アクセスコマンドに含まれたアドレスにそのアドレスとともにコマンドに含まれたデータを書き込むことで、ＲＧＢ用プリント画像処理を行うハードウェアモジュールに対して処理内容の指定を行うことができる。同様にＣＭＹＫ用プリント画像処理を行うハードウェアモジュールに処理パラメータを設定する場合には、０ｘＣ０３０＿００００から０ｘＣ０３０＿ＦＦＦＦまでのアドレス空間４０２と各アドレスに関連付けられたパラメータ情報を含むデータとを有するコマンドを用いる。同様にハーフトーン処理を行うハードウェアモジュールに対しては、アドレス空間４０３と各アドレスに関連付けられたパラメータ情報から成るコマンドを用いる。また、ＲＧＢ用スキャン画像処理を行うハードウェアモジュールに対しては、アドレス空間４０４と各アドレスに関連付けられたパラメータ情報から成るコマンドを用いる。また、モノクロ用スキャン画像処理を行うハードウェアモジュールに対しては、アドレス空間４０５と各アドレスに関連付けられたパラメータ情報から成るコマンドを用いる。このほかにも、ＰＤＬ処理を行うハードウェアモジュールに対しても同様にアドレス空間を割り当て、そのアドレス空間と各アドレスに関連付けたパラメータとから成るコマンドでＰＤＬ処理を実現することもできる。  図５は、上位のドライバ層の各制御部からコマンドを受け取ったデバイスドライバ３３１がＲＡＭ１１１にコマンドを格納している状況を説明する図の一例を示している。各制御部は、使用するハードウェアモジュールに応じたアドレスとパラメータと組としたアクセスコマンドをデバイスドライバ３３１に引き渡す。デバイスドライバ３３１は、ＲＡＭ１１１内のメモリマップ４００内の５０１で示されるアドレス位置にアドレス値とコマンドデータ値とから成る複数のアクセスコマンドを整列して格納する。
【００２３】
次にコマンド（アクセスコマンド）と実際のハードウェアモジュールへのレジスタ設定がどのように関連付けられているかについて、図６を用いて説明する。図６では、コマンドの発行からハードウェアに転送するまでの構成について説明する。コマンドを発行するコマンド発行部６０１は、デバイスドライバ３３１によって制御されるハードウェアであるがソフトウェアであってもよい。コマンド発行部６０１はＣＰＵ１０１内部に構成されるものとする。コマンド発行部６０１は、システムバス１２０およびコマンドバス６０２を介して再構成部１３１内に構成された各ハードウェアモジュールに接続され、ＲＡＭ１１１内に格納された、図５に例示したコマンドを順（たとえばアドレス順）に発行する。コマンドの発行は、例えばコマンドに含まれたアドレスを指定して当該コマンドに含まれたデータを書き込むことで行われる。なお図６においては、システムバス１２０は省略されている。本例においては、コマンドバスは、アドレスとデータとを含むパケットによりデータの送受信を行うシリアルなバスである。本実施例では、コマンドバス６０２はシステムバス１２０とは異なるプロトコルを有するバスであり、その信号は、図示しないバス変換部によってシステムバス１２０と相互に変換され、ハードウェアモジュールに対してレジスタアクセスをするために用いられる。バス変換部は再構成部１３１内に設けてもよいし、その外部に、システムバスとのインターフェースとして設けてもよい。バス変換は例えばパラレル−シリアル変換であり、バス変換部は、システムバス１２０に含まれたアドレスバスで指定されたアドレスとデータバスで指定されたデータとを一組としたコマンドに変換する。このコマンドはまさに前述したアクセスコマンドと同様の形式である。コマンドバス６０２ではこの変換後のコマンドが例えばシリアルに搬送される。そしてモジュールセレクタ部６０３により該当するアドレスのハードウェアモジュールにコマンドが送信される。データ読み出しの場合には、各ハードウェアモジュールからアドレスおよびデータを含むコマンドが送信され、それがシステムバス１２０に適合した信号に変換される。これによりＣＰＵ１０１は、システムバス１２０およびコマンドバス６０２を介して、再構成部１３１のハードウェアモジュールに関連付けられたレジスタにアクセスすることができる。
【００２４】
図６では例として再構成部１３１内に、回路Ａ６１０から回路Ｅ６１４までの６つのハードウェアモジュールが構成されていて、それぞれにコマンドバス６０２が接続されているものとする。またコマンドバス６０２にはモジュールセレクタ部６０３が接続されており、発行されたコマンドが図６の回路Ａ６１０から回路Ｅ６１４のいずれかにのみ有効になるように機能する。更に、図４で説明したアドレス空間４０１がハードウェアモジュールＡ６１０に、アドレス空間４０２がハードウェアモジュールＢ６１１に、アドレス空間４０３がハードウェアモジュールＣ６１２に、アドレス空間４０４がハードウェアモジュールＤ６１３に、アドレス空間４０５がハードウェアモジュールＥ６１４にそれぞれ割り当てられているものとする。即ち、例えばハードウェアモジュールＡ６１０は、ＲＧＢ用プリント画像処理を行うハードウェアで構成されているものとする。
【００２５】
また、モジュールセレクタ部６０３はコマンドバス６０２に接続され、コマンド発行部６０１から発行されたコマンド内のアドレス値から、ハードウェアモジュールＡ６１０からＥ６１４の内のいずれに対してのコマンドであるかを判断する。それから、所望のハードウェアモジュールに対してのみパラメータ値の設定を行うためのモジュールセレクト信号をそれぞれ生成する。例えば、図６（ｂ）に示すように、アドレス０ｘＣ０３０＿１２３４に対するコマンドが発行された場合、このアドレス値はアドレス空間４０２に含まれるためハードウェアモジュールＢへのアクセスである。このため、ハードウェアモジュールＢへのモジュールセレクト信号６０４が生成される。これによりハードウェアモジュールＢにのみコマンドが実行されパラメータ値の設定が行われる。他のハードウェアモジュールＡもしくはＣからＦに対してはモジュールセレクト信号６０４が生成されないためコマンドが無視され、パラメータ値の設定は行われない。コマンドを受信したハードウェアモジュールは、たとえば指定されたアドレスに指定されたパラメータを書き込む。
【００２６】
以上のようにして、ＲＡＭ１１１に格納されたコマンドは所望のハードウェアモジュールに対して発行された場合に、所望のハードウェアモジュールに対してのみパラメータ設定が行われる。尚、上記ハードウェアモジュールＡ６１０からＥ６１４は説明を簡単にするために１つのハードウェアモジュールであるように説明した。然しながら、各ハードウェアモジュールが更に複数の異なる機能を有するハードウェアモジュールによって構成されており、それらすべてを実行することで１つの画像処理単位を実行できるような構成となっていても良い。例えばハードウェアモジュールＡはハードウェアモジュールＡ−１、Ａ−２の２つから構成されている場合にはそれぞれのアドレス空間が０ｘＣ０２０＿００００から０ｘＣ０２０＿７ＦＦＦ（Ａ−１）、０ｘＣ０２０＿８０００から０ｘＣ０２０＿ＦＦＦＦ（Ａ−２）のように分割されていても良い。
【００２７】
また図６では、アドレス信号のみでハードウェアモジュールを特定するよう説明したが、本実施形態ではさらに回路指定信号がモジュールセレクタ部６０３に入力されて、回路指定信号とアドレスとを併せてハードウェアモジュールが選択される。この点については図１０で詳述する。
【００２８】
＜ジョブの処理手順＞
ここまでで説明したＪＯＢ処理フローを、「ＦＰＧＡの再構成」、「レジスタ設定」、「画像処理」の３つに分類して説明すると図７のようになる。尚、レジスタ設定とは図６で説明したパラメータ値の設定のことであり、各ハードウェアモジュール内に設定したパラメータを保持しておくための構成をレジスタと呼び、以降パラメータの設定とレジスタへの設定は同義とする。アプリケーション層７０１は、図３で説明したジョブ制御部３１１を含む。ドライバ層７０２は、図３で説明したスキャンモジュール制御部３２１、プリントモジュール制御部３２２及び画像データ転送制御部３２３を含む。低レベルドライバ層７０３は、図３で説明したデバイスドライバによって構成される。以上レイヤー７０１から７０３はＣＰＵ１０１で実行されるソフトウェアの階層を示している。なお図７の説明でいうレイヤーは、そのレイヤーに属するプログラムを指す。次にコンフィグ制御部７０４は、コンフィグコントローラ１３０内の図示しない制御手段で実行される階層である。再構成部処理７０５は、再構成部１３１内で実行される処理内容を示す。図７のように画像形成装置１００では操作部１０３からもしくはネットワークＩ／Ｆ１０２を介して受信したジョブを元に５つの階層間で情報をやり取りすることで各処理を行っている。
【００２９】
（ＦＰＧＡ再構成）
まずジョブを受信した場合にはアプリケーション層７０１においてステップＳ７１０でジョブを受信した後に、ステップＳ７１１で受信したジョブの内容を解析する。次のステップＳ７２１では解析したジョブの内容に応じて必要な画像処理回路を再構成部１３１に対して再構成するために必要なハードウェアモジュールの再構成を要求する。再構成要求はコンフィグ制御７０４においてステップＳ７２２にて受け取られ再構成要求の内容を解析し、必要なハードウェアモジュールの種類・順番を決定する。次に決定されたハードウェアモジュール情報は再構成部処理７０５においてステップＳ７２３にて対応するハードウェアモジュール用の回路を構成する。ハードウェアモジュール用の回路の再構成が完了した場合に再構成部処理７０５から再構成完了割込みを低レベルドライバ層７０３に対して送信する。それから、低レベルドライバ層７０３ではステップＳ７２４で前記割込みを受信した際にアプリケーション層７０１に対して再構成完了タイミングを通知する。以上のようにして、再構成部１３１は入力されたジョブに必要な画像処理回路で再構成される。尚、上記ステップＳ７２１からＳ７２４までの各階層における処理フローを再構成ステップＳ７２０とする。
【００３０】
（パラメータ設定）
ＦＰＧＡの再構成を終えると、次にステップＳ７１１において解析されたジョブ内容から、再構成ステップＳ７２０で再構成された画像処理回路に対するジョブ処理用パラメータの設定指示をドライバ層に対して、ステップＳ７３１で送信する。ドライバ層７０２ではステップＳ７３２において、受信したジョブ処理用パラメータからコマンドを生成し低レベルドライバ層７０３に送信する。低レベルドライバ層７０３では、ステップＳ７３３で、受信したコマンドを順にコマンドバス６０２を介して各ハードウェアモジュールに対して実行（送信）する。次に再構成部処理７０５では、ステップＳ７３４で、受信したコマンド（例えばレジスタ設定コマンド）に応じて指定されたアドレスのレジスタに指定されたパラメータ値を設定する。尚、低レベルドライバ層７０３と再構成部処理７０５との間のコマンド実行はステップＳ７３２において生成されたコマンドの個数回行われる。また各コマンド実行の完了についてはコマンドバス７０２のプロトコルで確認されるものとする。次に低レベルドライバ層７０３ではステップＳ７３５において全てのコマンドが実行されたことを認識する。次に低レベルドライバ層７０３はステップＳ７３５においてアプリケーション層７０１に対してパラメータ設定完了タイミングを通知する。以上のようにして、再構成部１３１内に構成された画像処理回路は所望のジョブ処理用パラメータで設定される。尚、上記ステップＳ７３１からステップＳ７３５までの各階層における処理フローをレジスタ設定ステップＳ７３０とする。
【００３１】
（画像処理）
レジスタ設定を終えると、次にアプリケーション層７０１では、ステップＳ７４１で、画像処理を実行するために画像データ転送指示をドライバ層７０２に対して送信する。画像データ転送指示を受信したドライバ層７０２ではステップＳ７４２において、再構成部処理７０５に対して画像データの転送を開始させる。ここではメモリコントローラ１１０に接続された図示しないＤＭＡＣ手段に対して転送開始コマンドを発行してＲＡＭ１１１に格納されていた画像データの転送を開始する。その他にもスキャナ部１０９に対して読み込み開始を指示するコマンドを発行する。再構成処理部７０５はステップＳ７４３で指示されたコマンドに応じた処理を実行する。例えばスキャン画像処理回路であれば、例えばスキャナ部１０９に載置された画像データの読み込み、必要な画像処理を開始する。画像データの転送は画像バス１２１を経由して行われる。画像バス１２１は例えばコマンドバス６０２と同じ信号形式のバスであり、再構成部１３１のハードウェアモジュールはバス変換なしに画像データを送受信できる。低レベルドライバ層７０３と再構成部処理７０５との間の画像処理の完了通知は予め決められた完了割込みによって通知される。そして、低レベルドライバ層７０３はステップＳ７４４において画像処理完了割込みを受信した際に、アプリケーション層７０１に対して画像処理終了タイミングを通知する。通知を受けたアプリケーション層７０１は指示した画像処理が完了したなら、さらに次の画像処理や出力の工程などを実行する。以上のようにして、再構成部内に構成された画像処理回路を使用して画像データに対して所望の画像処理を実行することができる。尚、ステップＳ７４１からステップＳ７４４までの各階層における処理フローを画像処理ステップＳ７４０とする。
【００３２】
ここまでの説明で任意のジョブに対して再構成部１３１内に画像処理回路を構成し、レジスタ設定し、画像処理を行う手順を説明した。次に複数のジョブが入力された場合における画像処理装置１００の動作について説明する。尚、本実施例では再構成部１３１に対しては複数の画像処理回路を同時に構成するだけの回路規模が用意されているものとし、複数のジョブが入力された際に、それぞれの画像処理回路を並列に構成できるものとする。但し、説明を簡単にするために本実施例の以降の説明では、再構成部１３１内で同時に並行して構成できる異なる画像処理回路の数を２つまでとする。
【００３３】
＜複数ジョブの並列実行＞
図８は、再構成部１３１において、複数のジョブを順に実行する場合のＦＰＧＡ１４０の内部構成について、順を追って説明したものである。尚、ここではまずコピージョブを受信しコピージョブ用の画像処理回路を再構成部１３１内に構成し、レジスタ設定・画像処理を行うものとする。更に上記コピージョブを実行中にＰＤＬプリントジョブを受信したため再構成部１３１内に上記コピージョブ用の画像処理回路と並行してＰＤＬプリントジョブ用の画像処理回路を構成しレジスタ設定を行うものとする。尚、図８では説明を簡単にするために、説明に必須ではない構成は省略する。例えば、画像処理を行う毎に画像バス１２１を介して一旦ＲＡＭ１１１内に画像データを格納する旨を図２等で説明したが、図が煩雑になるため省略しあたかもパイプラインで接続されるように記載されている。
【００３４】
図８（ａ）はコピージョブを受信する前の再構成部１３１内の状態を説明する図である。この時再構成部１３１は、スキャナＩ／Ｆ１０８と接続する画像バス１２１と、プリンタＩ／Ｆ１０６と接続する画像バス１２１と、コマンドバス６０２と、モジュールセレクタ部６０３とが存在している。これらはジョブ受信の有無に関わらず常に再構成部１３１内に存在しているものとする。次にコピージョブを受信した場合には例えば、図８（ｂ）に示すように再構成部１３１内にスキャン画像処理部２００及びコピージョブ用プリント画像処理部２１０が構成され、それぞれが画像バス１２１で接続される。これによりコピージョブ用画像処理を行う経路が形成される。また平行してスキャン画像処理部２００及びコピージョブ用プリント画像処理部２１０に対してレジスタ設定を行うためのコマンドバス６０２がモジュールセレクタ部６０３を経由してそれぞれに配線される。再構成部１３１が図８（ｂ）に表されるような状態に構成された後、レジスタ設定ステップＳ７３０によって各画像処理部内のハードウェアモジュールに対してパラメータ設定が行われ、引き続き画像処理ステップＳ７４０によって画像処理が開始される。
【００３５】
次にコピージョブが実行されている状態においてＰＤＬプリントジョブが受信された場合には、図８（ｃ）に示すようにコピージョブ用の画像処理回路と並行して、ＰＤＬ処理部２５０とＰＤＬジョブ用プリント画像処理部２６０とが構成され、それぞれが画像バス１２１で接続される。これによりＰＤＬプリントジョブ用画像処理を行う経路が形成される。また平行してＰＤＬ処理部２５０とＰＤＬジョブ用プリント画像処理部２６０に対してレジスタ設定を行うためのコマンドバス６０２がモジュールセレクタ部６０３を経由してそれぞれに配線される。再構成部１３１が図８（ｃ）に表されるような状態に構成された後、レジスタ設定ステップＳ７３０によって画像処理部内のハードウェアモジュールに対してパラメータ設定が行われる。なお、この例では最終的に画像データをプリント出力する部分がコピージョブとＰＤＬプリントジョブで競合するため、ＰＤＬプリントジョブ用の画像処理回路はプリントＩ／Ｆ１０６に対して画像データを出力する画像バスが接続されない状態になっている。即ちＰＤＬジョブ用プリント画像処理部２６０から出力される画像データを転送する画像バス１２１はどこにも接続されていない状態となる。
【００３６】
次にコピージョブが終了した場合には例えば、図８（ｄ）に示すようにコピージョブ用画像処理回路と並行して構成されていたＰＤＬジョブ用画像処理回路にプリントＩ／Ｆ１０６が接続される。このように競合する資源は、所定の優先順位に従って順次各処理により占有される。この時図８（ｃ）の説明にて既にレジスタ設定が完了しているため、画像処理ステップＳ７４０によって画像データ転送が開始され、ＰＤＬジョブが開始される。この時すでに完了したコピージョブ用画像処理回路は不要であるため、画像バス１２１はスキャナＩ／Ｆ１０８との接続を切断しても構わないし、更に次に受信されたジョブがあればそのジョブ用の画像処理回路に再構成されて置き換えられても良い。
【００３７】
ここで、図８（ｃ）の例においてコピージョブ用画像処理回路とＰＤＬジョブ用画像処理回路が並列に再構成部１３１内に構成されている。一方、この時にはコピージョブ用画像処理回路内のコピージョブ用プリント画像処理部２１０とＰＤＬプリントジョブ用画像処理回路内のＰＤＬジョブ用プリント画像処理部２６０の内部で同一の画像処理を行うハードウェアモジュールが含まれている場合がある。これについて図９を用いて説明する。
【００３８】
＜複数の同一機能回路から一の指定＞
図９はすでに説明した図８（ｃ）の状態の再構成部１３１について詳細に説明する図である。尚、ここでの説明に必要のない部分については省略してある。図のスキャナＩ／Ｆ１０８から画像バス１２１を介してコピージョブ用プリント画像処理部２１０に接続され更に画像バス１２１を介してプリントＩ／Ｆ１０６に接続される画像処理回路は、コピージョブ用の画像処理回路である。コピージョブ用プリント画像処理部２１０内はＲＧＢ画像処理部９０２とハーフトーン処理部９０３が包含され、それぞれが画像バス１２１で連結されている。またＲＧＢ画像処理部９０２とハーフトーン処理部９０３へのレジスタ設定用にコマンドバス６０２がバス形式でモジュールセレクタ部６０３と接続されている。
【００３９】
一方、ＰＤＬプリントジョブ用画像処理回路についてはＰＤＬジョブ用プリント画像処理部２６０内にＣＭＹＫプリント画像処理部９０４とハーフトーン画像処理部９０５が包含されそれぞれが画像バス１２１で連結されている。またＣＭＹＫプリント画像処理部９０４とハーフトーン画像処理部９０５へのレジスタ設定用にコマンドバス６０２がバス形式でモジュールセレクタ部６０３と接続されている。モジュールセレクト信号９０６は、ＲＧＢプリント画像処理部９０２に対してＣＰＵ１０１内のコマンド生成部６０１によってコマンドが発行された場合にモジュールセレクタ部６０３から出力されるモジュールセレクト信号６０４である。これは図４で説明したメモリマップ４００のアドレス空間４０１に対してコマンドが発行された場合に生成される。モジュールセレクト信号９０８はＣＭＹＫプリント画像処理部９０３に対してコマンドがＣＰＵ１０１内のコマンド生成部６０１によってコマンドが発行された場合にモジュールセレクタ部６０３から出力されるモジュールセレクト信号６０４である。これは同様にアドレス空間４０２に対してコマンドが発行された場合に生成される。
【００４０】
ここで、コピージョブ用プリント画像処理部２１０内のハーフトーン処理部９０３と、ＰＤＬジョブ用プリント画像処理部２６０内のハーフトーン処理部９０５は同一のハードウェアモジュールである。即ち、ＣＰＵ１０１内のコマンド生成部６０１からこれら２つのハードウェアモジュールに対してコマンドを発行する場合には、いずれの場合であっても図４のメモリマップ４００のアドレス空間４０３に対して行うことになる。モジュールセレクタ部６０３はコマンドバス６０２上に発行されたコマンドのアドレス値からモジュールセレクト信号６０４を生成する。このため、アドレスだけでは両方のハーフトーン処理部が該当してしまい、どちらのハーフトーン処理部に対してモジュールセレクト信号（９０７または９０９）を生成するかを判断するための情報が必要である。このための情報がコマンドバス６０２と並行してモジュールセレクタ部６０３に入力される、同一アドレスに割り当てられた画像処理回路を区別するための回路指定信号９０１である。回路指定信号は、並列に処理される処理中の各ジョブに対応する値を有することから、ジョブ識別信号あるいはジョブ識別値とよぶこともできる。なおここで処理中とは、ジョブのための画像処理回路の再構成及び設定を含む。回路指定信号９０１は、再構成部１３１内に並列に構成される同一機能の複数の画像処理回路のいずれかを選択するための信号である。そのため、例えばコピージョブ用画像処理回路に対しては"０"、ＰＤＬジョブ用画像処理回路に対しては"１"が設定されるような１ｂｉｔの信号であるものとする。ここで回路指定信号９０１の生成方法について以下に説明する。
【００４１】
図１０はＣＰＵ１０１内の構成を示しており、回路指定信号９０１を生成するための構成について説明している。図１０（ａ）はコマンドバス６０２と回路指定信号９０１とを出力している構成について説明する図である。ＣＰＵ１０１内にコマンドを発行するためのコマンド発行部６０１と共にジョブ管理部１００１が包含されている。ジョブ管理部１００１はジョブ制御部３１１によって受信したジョブ情報それぞれに対してジョブの開始−実行−完了といった状態遷移を管理するものであり、ジョブ制御部３１１によって制御されるソフトウェアモジュールであるものとする。割り込み信号１００３及び１００４はそれぞれジョブ毎の完了タイミングを受信するための割込み信号である。例えば図７で説明したステップＳ７２４、ステップＳ７３５もしくはステップＳ７４４でのそれぞれの完了割込み信号を上記信号としてＣＰＵ１０１に入力するための信号で、コピージョブからの割込み信号が１００３、ＰＤＬプリントジョブからの割込み信号が１００４となる。ジョブ管理部１００１が割り込みを受け付けるのではなく、逆に、割り込み１００３及び１００４をトリガとしてジョブ管理部１００１が実行されるよう構成してもよい。コマンド同期信号１００２はジョブ管理部１００１からコマンド発行部６０１に対して入力される信号で、コマンドの発行と回路指定信号の出力とを同期させるための信号である。コマンド同期信号１００２は、コマンド発行部６０１がソフトウェアであればプロセス間の通信により、コマンド発行部６０１がハードウェアであれば専用の命令等により実現できる。ジョブ管理部１００１は、状態遷移の管理を行う際にそれぞれのジョブに対してコマンド発行によるレジスタ設定ステップＳ７３０を行うため、コマンド発行部６０１がコマンドバス６０２上にコマンドを発行するタイミングを通知するためにコマンド同期信号１００２を使用する。
【００４２】
次にジョブ管理部１００１内の構成について図１０（ｂ）を用いて説明する。ジョブ状態制御部１００５は、それぞれのジョブの状態を制御している。ジョブの状態については以下図１１を用いて説明する。ジョブ状態制御部１００５では受信したジョブが再構成ステップＳ７２０、レジスタ設定ステップＳ７３０及び画像処理ステップＳ７４０のいずれのステップにいるかを管理する。例えば各ステップの開始はアプリケーション層によって開始されハードウェアモジュールからの割込み受信によって完了を認識するため、該当するジョブがどのステップにいるかが判断できる。このようにしてアプリケーション層では各ジョブの状態遷移を管理することができる。画像処理回路制御部１００７は、ジョブ状態制御部１００５から入力されたジョブＩＤ１００６に応じて回路特定信号９０１を発行する。
【００４３】
図１１では本実施例で説明したコピージョブとＰＤＬプリントジョブの状態遷移の例について説明する。図の上方から下方に向かって時間が経過するものとする。コピージョブの状態遷移９０１では、タイミングＴ１１１１においてジョブを受信した場合、ステップＳ７２０、ステップＳ７３０及びステップＳ７４０の順にジョブを実行する。ＰＤＬジョブの状態遷移１１０２はタイミングＴ１１１２においてジョブを受信した場合、コピージョブが実行中であるものの、回路の再構成を行うステップＳ７２０、設定を行うステップＳ７３０を実行可能である。しかしＰＤＬプリントジョブとコピージョブとはプリント部１０７を競合して使用するため、先行するコピージョブ９０１が完了するまでは画像処理ステップＳ７４０を開始することができない。図２（ｂ）で説明したように、ＰＤＬ処理部２５０による出力をいったんメモリに格納するためＰＤＬ処理のみを並列実行したとしても、ＰＤＬジョブ用プリント画像処理部２６０の出力はそのままプリンタへ出力されるため、少なくともＰＤＬジョブ用プリント画像処理部２６０による処理は開始できない。よってコピージョブの完了タイミングＴ１１１３のタイミングでアプリケーション層ではＰＤＬプリントジョブ１１０２の画像処理ステップＳ７４０を開始する。このように図１１の例ではコピージョブの状態遷移９０１とＰＤＬプリントジョブの状態遷移１１０２はある期間重複してそれぞれのジョブが実行される。一方、ＰＤＬプリントジョブの受信タイミングＴ１１１２がコピージョブの完了タイミングＴ１１１３より後であった場合には両者のジョブの実行期間は重複しないことになる。このような各ジョブの状態遷移の管理はジョブ状態制御部１００５において行われる。ジョブ状態制御部１００５は実行されるジョブに対して、少なくとも同時に実行されているジョブのうちでは固有のＩＤであるジョブＩＤ１００６を発行する。ジョブＩＤ１００６はそれぞれのジョブの受信−開始−実行−完了と言った状態遷移中に有効であり完了と共にそのジョブＩＤ１００６は無効となる。又、複数のジョブが状態遷移中には、同一のジョブＩＤ１００６が重複して発行されることは無い。このため現在実行中のジョブはジョブＩＤ１００６によって一意に識別することができる。また、ジョブＩＤ１００６は画像処理部制御部１００７にも出力される。これは図９で説明したようにコマンドバス６０２上に発行されるコマンドと同期して回路指定信号９０１を発行するためである。
【００４４】
図１０（ｃ）及び図１０（ｄ）は画像処理部制御部１００７におけるジョブ管理テーブル１０１０の例を示す。ジョブ管理テーブル１０１０は画像処理部管理部１００７内で管理されるデータベースで、ジョブＩＤ１００６と回路指定信号９０１の値とを１対１で対応させ管理するために使用される。図１０（ｃ）はコピージョブとＰＤＬプリントジョブが共に実行中の場合の管理テーブルの例で、コピージョブに対してはジョブＩＤとして１２５が発行されている。また、ＰＤＬプリントジョブに対してはジョブＩＤとして１２６が発行されている。またジョブＩＤが１２５であるジョブ（コピージョブ）に対しては回路指定信号９０１には"０"が割り当てられていて、ジョブＩＤが１２６（ＰＤＬプリントジョブ）に対しては回路指定信号９０１には"１"が割り当てられている。また、それぞれのジョブに対しては使用される画像処理モジュール情報も割り当てられる。画像処理モジュール情報は、たとえば各モジュールに割り当てられたアドレス（あるいはそれを代表するアドレス）などを用いることができる。この場合、コピージョブに対してコマンドバス上にコマンドを発行するときには、コマンド発行に同期して回路指定信号９０１には値"０"が出力されることになる。また、コピージョブ（ジョブＩＤ＝１２５）が完了した以降は、図１０（ｄ）に示すように上記ジョブ管理テーブル１０１０においては回路指定信号９０１が"０"に対応するジョブＩＤ１００６は無効化され管理されない。このように実行中のジョブが存在する場合にのみ、ジョブ管理テーブル１０１０内ではジョブＩＤ１００６と回路指定信号９０１は対応・管理される。以上のように、回路指定信号９０１はコマンドと同期して出力され、コマンドセレクタ部６０３に通知される。
【００４５】
一方モジュールセレクタ部６０３は、コマンドに含まれたアドレスと回路指定信号９０１とにより特定される回路（具体的にはレジスタ）に、パラメータをセットする。回路指定信号９０１の値と回路との対応は、当該回路の再構成時に決定しておけばよい。たとえば、再構成部１３１に構成される回路を、回路指定信号９０１の値が０で選択される回路群と、１で選択される回路群とに分け、最初のジョブに対しては画像処理部制御部１００７が回路指定信号値として０を選択し、再構成部１３１に構成する回路に関しても、回路指定信号９０１の値が０で選択されるように構成する。次のジョブのために構成される回路は回路指定信号９０１の値が１で選択されるように構成する。このとき、画像処理部制御部１００７はそのジョブに対する回路指定信号９０１の値として１を選択する。これにより、ジョブ管理テーブル１０１０におけるジョブと回路指定信号値との対応が、モジュールセレクタ部６０３により選択される回路とそのときの回路指定信号値との対応と一致する。このようにして回路を再構成する際にも、ジョブ管理テーブル１０１０内の回路指定信号値とモジュールセレクタ部６０３により選択されるハードウェアモジュールとは対応付けられる。これは２つのグループに分けた例であるが、３以上のグループに対しても同様である。この場合には、回路指定信号はその数に応じたビット数の信号となる。またこれは一例であって、モジュールセレクタ部６０３において選択される回路と、ジョブ管理テーブル１０１０にいて回路指定信号９０１に対応付けた回路とを一致させるための他の多くの方法があり得る。
【００４６】
これにより、再構成部１３１内に同一のハードウェアモジュールが同時且つ並列に構成された場合においても、図４で説明したメモリマップ４００を使用して所望のハードウェアモジュールに対してレジスタ設定を行うことが可能となる。
【００４７】
＜ジョブ実行手順＞
図１２に本実施例で説明した動作を制御するためのフローチャートを示す。尚本実施例は特に指定が無い限り、ＣＰＵ１０１にて実行される。このフローはジョブ制御部３１１の手順といってもよいが、その中では必要に応じてドライバ層のプログラムや、さらにそこから低レベルドライバ層のデバイスドライバ３３１が呼び出されて実現される。
【００４８】
操作部１０３やネットワークインターフェース１０２等からジョブが入力された場合、入力されたジョブ情報はジョブ制御部３１１に入力される。この時フローチャートはステップＳ１２０１からステップＳ１２０２に遷移する。ジョブの入力によりＳ１２０２から処理が開始されてもよい。ステップＳ１２０２では、入力されたジョブ情報はジョブ制御部３１１において解析される。次にステップＳ１２０３では図１０で説明したジョブ管理テーブル１０１０に対して受信したジョブを登録する。すなわち、ジョブＩＤを登録し、回路指定信号値を割り当て、必要な画像処理回路のハードウェアモジュールを、ジョブＩＤに関連付けて登録する。
【００４９】
次にステップＳ１２０４ではすでに実行中のジョブ（すなわち画像処理ステップＳ７４０にあるジョブ）が存在するかどうかを判断する。この時、ジョブ管理部１００１においてジョブの状態を確認する。ステップＳ１２０４にて実行中のジョブが他に存在しないと判断された場合にはフローチャートは図７で説明した通り、ステップＳ７２０、ステップＳ７３０及びステップＳ７４０の順に遷移する。ステップＳ７４０では、入力されたジョブによって画像形成装置１００内に入力された画像データに対して画像処理を実行してジョブ完了となる。次にステップＳ１２０４にてジョブ管理部１００１によって実行中のジョブが存在すると判断された場合には、ステップＳ１２０５においてリソースが競合するかどうかを判断する。ここでリソースが競合するとは、図８で説明したように、ジョブの実行に必要なリソースの競合があることで、例えばコピージョブとＰＤＬプリントジョブが同時に実行された場合にはプリント部１０７がリソース競合していることである。またコピージョブとＳＥＮＤジョブが同時に実行された場合にはスキャナ部１０９がリソース競合していることになる。次にステップＳ１２０５においてリソースが競合していないと判断された場合には、フローチャートは図７で説明した通り、ステップＳ７２０、ステップＳ７３０及びステップＳ７４０の順に遷移する。ステップＳ７４０では、入力されたジョブによって画像形成装置１００内に入力された画像データに対して画像処理を実行してジョブ完了となる。
【００５０】
次にステップＳ１２０５においてリソースが競合していると判断された場合には、フローチャートはステップＳ１２０６に遷移する。ステップＳ１２０６では、競合していない部分の画像処理回路に対してのみ再構成が行われる。競合しない部分の画像処理回路に対してのみ再構成が行われる例としては以下が挙げられる。図８（ｃ）で説明した通り、コピージョブ用プリント画像処理部２１０が画像バス１２１を介してプリンタＩ／Ｆ１０６に接続されコピージョブ用の画像処理が実行されている場合には、ＰＤＬジョブ用プリント画像処理部２６０用にはプリンタＩ／Ｆ１０６が使用できない状態である。このようにリソース競合していない回路部分の画像処理回路に対応するハードウェアモジュールのみ再構成するように、ジョブ制御部３１１はステップＳ７２１において再構成要求を行う。
【００５１】
次にステップＳ７３０においてレジスタ設定が行われる。次にステップＳ１２０７において実行中のジョブが完了したかどうかを判断する。ここではジョブ管理部１００１において、リソース競合の相手である実行中のジョブの状態遷移を確認し、実行中のジョブが完了するまで待機することになる。ステップＳ１２０７において実行中のジョブが完了したと判断された場合、すなわち競合が解消された場合、フローチャートはステップＳ１２０８に遷移する。ステップＳ１２０８ではジョブ実行に必要で且つステップＳ１２０６で構成されていない回路を再構成する。これは例えば図８（ｄ）で既に説明したように、競合していたプリンタＩ／Ｆ１０６をＰＤＬジョブ用プリント画像処理部２６０と画像バス１２１を介して接続されるように再構成することに相当する。次にフローチャートはステップＳ７４０に遷移して入力されたジョブによって画像形成装置１００内に入力された画像データに対して画像処理を実行してジョブ完了となる。最後に、ステップＳ１２０９において、図１０（ｄ）で説明したように、完了したジョブの管理情報をジョブ管理テーブル１０１０から登録解除する。なお、ステップＳ１２０８で構成した回路にレジスタ設定が必要であれば、その設定を行うためのステップＳ７３０を、ステップＳ７４０の前に実行する。
【００５２】
またステップＳ７２０、Ｓ１２０６、Ｓ１２０８においては、ジョブに割り当てられている回路指定信号（あるいはジョブ識別信号）の値がモジュールセレクタ部６０３に入力されたときに、当該ジョブに関連付けて再構成した画像処理回路が選択されるように、画像処理回路を再構成する。
【００５３】
＜レジスタ設定＞
次に、図１３及び図１４を用いてステップＳ７３０におけるレジスタ設定方法について詳細に説明する。図１３はメモリマップ４００のアドレス値とジョブＩＤ１００６の関連を説明する表である。表の右半分のメモリマップ１３０１は図４で説明したメモリマップ４００のアドレス値１３０２とマッピングされたハードウェアモジュールとを表形式にまとめたものである。一方、表の左半分は本実施例で説明した内部情報１３０３であり、ジョブＩＤ１００６と回路指定信号９０１及びコマンド内のアドレス値１３０４を表にまとめたものと、これに対応するジョブの内容を記載している。表のように、コピージョブに対してはＲＧＢスキャン画像処理４０４とＲＧＢ用プリント画像処理４０１とハーフトーン処理４０３の３つのハードウェアモジュールが使用される。この時、ジョブＩＤ１００６が"１２５"で且つ回路指定信号９０１が"０"で対応している。同様にＰＤＬプリントジョブに対してはＣＭＹＫ用プリント画像処理４０２とハーフトーン処理４０３が使用される。この時、ジョブＩＤ１００６が"１２６"で且つ回路指定信号９０１が"１"で対応している。以上のような対応表に示したようなメモリマップ４００と内部情報１３０２の対応が、ジョブが入力されるごとにＣＰＵ１０１内で生成される。
【００５４】
次に、レジスタ設定時の制御フローについて図１４を用いて説明する。図１４（ａ）はＣＰＵ１０１内で制御される制御フローチャート（以下フローチャート（ａ））で、主にアプリケーション層７０１によって実行される。但し、実際の処理については、図７で説明した各ソフトウェア階層で詳細化され実行される。また、図１４（ｂ）は再構成部１３１内のモジュールセレクタ部６０３内で実行される動作フローチャート（以下フローチャート（ｂ））で、入力されたコマンドアドレス１３０４及び回路指定信号９０１によって動作が切り替わる。
【００５５】
レジスタ設定を行う場合には、まずフローチャート（ａ）のステップＳ１４０１において、コマンドを発行すると共に回路指定信号９０１をモジュールセレクタ部６０３に対して出力する。この時フローチャート（ａ）はステップＳ１４０２に遷移し、レジスタ設定が完了するまで待機する。ステップＳ１４０１にてコマンド及び回路指定信号９０１が出力された場合に、タイミングＴ１４２１によってモジュールセレクタ部６０３にコマンドが受信される。これにより、フローチャート（ｂ）はステップＳ１４１１からステップＳ１４１２に遷移する。ステップＳ１４１２では、コマンドと同時に受信した回路指定信号９０１が"０"であるか"１"であるかを判断する。ステップＳ１４１２において回路指定信号９０１が"０"であると判断された場合には、フローチャート（ｂ）はステップＳ１４１３に遷移する。ステップＳ１４１３では回路認識信号が"０"である側のモジュールセレクト信号６０２を出力する。一方、ステップＳ１４１２にて回路指定信号９０１が"１"であると判断された場合には、フローチャート（ｂ）はステップＳ１４１４に遷移する。ステップＳ１４１４では回路認識信号が"０"である側のモジュールセレクト信号６０２を出力する。なおモジュールセレクト信号はアドレスをデコードした信号であり、同一アドレスに対しては同一の回路が選択される。
【００５６】
ステップＳ１４１３もしくはステップＳ１４１４においていずれかのモジュールセレクト信号が出力された場合には、所望のハードウェアモジュールに排他的にレジスタアクセスが実行される（ステップＳ１４１５）。レジスタアクセスが完了した場合には、ステップＳ１４１６においてレジスタ設定完了割込みを出力し、フローチャート（ｂ）は終了する。但し、後述のようにレジスタ設定は１つのジョブにおいて複数回実行されるため、タイミングＴ１４２１を受信した毎にフローチャート（ｂ）は再度実行される。フローチャート（ｂ）のステップＳ１４１６においてレジスタ設定完了割込みが出力された場合、タイミングＴ１４２２がフローチャート（ａ）に通知される。タイミングＴ１４２２によってＣＰＵ１０１に対してレジスタ設定完了が通知された場合、フローチャート（ａ）はステップＳ１４０２からステップＳ１４０３に遷移する。次に、ステップＳ１４０２ではジョブに対する全てのレジスタ設定が終了したかどうかを判断する。ステップＳ１４０２において全てのレジスタ設定が終了していないと判断された場合には、フローチャート（ａ）はステップＳ１４０１に遷移し、再びレジスタ設定動作を行う。一方、ステップＳ１４０２において全てのレジスタ設定が終了したと判断された場合には、フローチャートは終了となる。
【００５７】
なおモジュールセレクタ部６０３は回路指定信号９０１を判断せず、アドレス信号とあわせてデコードしてモジュールセレクト信号を出力する構成としてもよい。この構成では図１４（ｂ）のステップＳ１４１２〜Ｓ１４１４は、回路指定信号とアドレス信号とをデコードしてモジュールセレクト信号を出力するという一つの工程にまとめることができる。
【００５８】
以上のように、本実施例におけるステップＳ７３０でのレジスタ設定方法について説明した。以下に実際のジョブ動作に即したレジスタ設定時の制御フローの一例について説明する。
【００５９】
まずコピージョブ時のハーフトーン処理部４０３に対してレジスタ設定を行う場合には、フローチャート（ａ）のステップＳ１４０１にてコマンドアドレスが例えば０ｘＣ０５０＿００００を含むコマンドが発行される。また同時に回路指定信号９０１が値"０"を出力する。次にフローチャート（ｂ）のステップＳ１４１１ではコマンドを受信したと判断されるためにステップＳ１４１２において回路指定信号９０１の値を判断する。ここではフローチャート（ｂ）はステップＳ１４１３に遷移するため回路指定信号９０１＝"０"の側にモジュールセレクト信号を出力する。ここではモジュールセレクト信号９０７が出力される。モジュールセレクト信号９０７が出力された場合にはコピージョブ用プリント画像処理部２１０内のハーフトーン処理部９０３のみにレジスタ設定を行うことが可能である。次にステップＳ１４１５において実際のレジスタ設定を行い、ステップＳ１４１６においてレジスタ設定完了割込みが出力される。次にフローチャート（ａ）のステップＳ１４０２においてレジスタ設定完了を受信した場合に、ステップＳ１４０３にてコピージョブ用に必要なレジスタ設定が全て終了し赤どうかを判断して、終了である場合にはレジスタ設定が終了する。
【００６０】
次にＰＤＬプリントジョブ時のハーフトーン処理部４０３に対してレジスタ設定を行う場合には、同様にフローチャート（ａ）のステップＳ１４０１にてコマンドアドレスが例えば０ｘＣ０５０＿００００を含むコマンドが発行される。また、同時に回路指定信号９０１が値"１"を出力する。次にフローチャート（ｂ）のステップＳ１４１１ではコマンドを受信したと判断されるためにステップＳ１４１２において回路指定信号９０１の値を判断する。ここではフローチャート（ｂ）はステップＳ１４１４に遷移するため回路指定信号９０１＝"１"の側にモジュールセレクト信号を出力する。ここではモジュールセレクト信号９０９が出力される。モジュールセレクト信号９０９が出力された場合にはＰＤＬプリント画像処理部２６０内のハーフトーン処理部９０５のみにレジスタ設定を行うことが可能である。次にステップＳ１４１５において実際のレジスタ設定を行い、ステップＳ１４１６においてレジスタ設定完了割込みが出力される。次にフローチャート（ａ）のステップＳ１４０２においてレジスタ設定完了を受信した場合に、ステップＳ１４０３にてコピージョブ用に必要なレジスタ設定が全て終了したかどうかを判断して、終了である場合にはレジスタ設定が終了する。
【００６１】
このように、ハーフトーン処理４０３はコピージョブ／ＰＤＬプリントジョブのどちらのジョブにも使用されているため、メモリマップ上は同一アドレスとしてＣＰＵ１０１から認識されるにも関わらず且つジョブＩＤ１００６及び回路指定信号９０１により、同時且つ並列に存在するハードウェアモジュールのそれぞれ適切な方にレジスタ設定できることになる。
【００６２】
以上のようにして、本実施例ではＦＰＧＡ１４０内の再構成部１３１内に複数のジョブ用の画像処理回路を構成し、それぞれのジョブに対して正しいレジスタ設定を行った後に、入力された画像データに対して画像処理を行うことが可能となる。再構成回路１３１に構成された画像処理回路のレジスタに対しては、画像処理の種類とその画像処理を行うジョブを識別するジョブ識別値（回路指定信号の値）とに応じたアドレスを割り当てられていると考えることができ、このため、特に同一のアドレスにマッピングされる複数の回路が再構成された場合にも、ジョブごとに対応付けられた回路にパラメータを設定することができる。尚、本実施例では説明を簡単にするためにいくつか制限を与えた状態で説明したが、実際に実施される構成ではこの制限の限りではない。
【００６３】
尚、本実施例では説明を簡単にするために図４で説明したように予めコマンドバス上のアドレス空間が決められている静的なアドレス変換方法を用いて説明した。しかし、例えばリセット時等の特定のタイミングでコマンドバス上のアドレス空間が再度割り当て直されるような動的なアドレス変換方法を用いても本実施例の構成としては問題ない。
【００６４】
なお本実施例では、コマンド発行部６０１は、デバイスドライバ３３１によるレジスタアドレスを指定してのパラメータ書き込みにより実現されるものと説明したが、システムバスとは別に独立したコマンドバスがＣＰＵ１０１に接続され、再構成部１３１のハードウェアにマッピングされるコマンドバス上のアドレス空間が別途設けられていてもよい。また、パラメータ書き込みのみならず、読み出しも、書き込みと読み出しとを入れ替えることで、書き込みと同様のアドレス決め構成及び手順により実現できる。
［第２の実施例］
本実施例では、第１の実施例で説明したコマンド発行方法とは異なり複数個同時且つ並列に構成された同一のハードウェアモジュールへのコマンド内のアドレス値が、ジョブ毎に異なるように発行される場合の画像形成装置の構成及び制御方法について説明する。
【００６５】
＜メモリマップ＞
図１５は本実施例で実施するＣＰＵ１０１から各ハードウェアモジュールへアクセスするためにマッピングされているメモリマップ４００とコマンドバス６０２上のアドレスマップとの対応を示す図である。図１５のメモリマップ４００は図４で説明した、ＣＰＵ１０１から見たハードウェアモジュールにレジスタアクセスするために、システムバス１２０でアクセス可能なアドレス空間にマッピングされているメモリマップの例である。一方メモリマップ１５００はコマンドバス上のアドレスマッピングを表すメモリマップの例である。ここでコマンドバス上のアドレス領域１５０１は実施例１で説明したコピージョブ用の画像処理回路内のハードウェアモジュールへのレジスタアクセス用に割り当てられているアドレス領域である。同様にコマンドバス上のアドレス領域１５０２は実施例１で説明したＰＤＬプリントジョブ用の画像処理回路内のハードウェアモジュールへのレジスタアクセス用に割り当てられているアドレス領域である。このようにシステムバス上のアドレス領域１５０３のアドレス値とコマンドバス上のアドレス領域１５０１及び１５０２のアドレス値は一致しない。但し、コマンドバスのメモリマップ１５００の内のアドレス領域１５０１及び１５０２のアドレス領域サイズは、システムバス上のアドレス領域１５０３と同じ０ｘ０１００＿００００アドレス分である。即ち、システムバスのアドレス値とコマンドバスのアドレス値は所定のアドレスオフセットを介して同一のアドレス空間を共有している。システムバスのアドレス値をＡｄｄｒ＿ｓｙｓ，コマンドバスのアドレス領域１５０１のアドレス値をＡｄｄｒ＿ｃｍｄ１とすると、
Ａｄｄｒ＿ｃｍｄ１  ＝  Ａｄｄｒ＿ｓｙｓ  −  ０ｘＢＦ００＿００００
となり、０ｘＢＦ００＿００００がシステムバスのアドレス値とコマンドバス上のアドレス領域１５０１のアドレス値とのオフセットとなる。同様にコマンドバスのアドレス領域１５０２のアドレス値をＡｄｄｒ＿ｃｍｄ２とすると、
Ａｄｄｒ＿ｃｍｄ２  ＝  Ａｄｄｒ＿ｓｙｓ  −  ０ｘＢ７００＿００００
となり、０ｘＢ７００＿００００がシステムバスのアドレス値とコマンドバス上のアドレス領域１５０２のアドレス値とのオフセットとなる。
【００６６】
＜アドレス変換＞
次に図１６を用いて上記のようなアドレス値制御を行うための制御方法及び構成について説明する。図１６（ａ）は本実施例で使用するＣＰＵ１０１内の構成でありジョブ管理部１００１とコマンド発行部１６００から構成されている。なお、実施例１ではコマンド発行部６０１はソフトウェアであってもよいものと記載し、その場合にはパラメータ設定のためのコマンドの発行は、ハードウェアモジュールにマッピングされたアドレスへのパラメータの書き込みである旨の説明をしたが、本実施形態では、コマンドバスとシステムバスのマップが相違しており、システムバスを介して図１５のマップ１５００にアクセスすることは困難である。そこで、本実施例ではＣＰＵ１０１と再構成部１３１とは専用のコマンドバス６０１で接続されているものとする。
【００６７】
ジョブ管理部１００１は図１０で説明した通りであるので、ここでは説明は省略する。但し、本実施例ではジョブ管理部１００１で生成された回路指定信号９０１はがコマンド発行部１６００に入力される。コマンド発行部１６００はジョブ管理部１００１から出力されたコマンド同期信号１００２と回路指定信号９０１とを受け取る。コマンド発行部１６００の内部構成としては図１６（ｂ）に示すように、アドレス変換部１６０２とパラメータ出力部１６０３とを有する。アドレス変換部１６０２はコマンド同期信号１００２が入力されたタイミングでレジスタアクセス用のコマンドのアドレス値を出力する。ここで出力されるアドレス値は、図５で説明したようにＲＡＭ１１１に格納されたコマンドの内のアドレス値と回路指定信号９０１から求められる。回路指定信号９０１が"０"の場合は例えば図１５のアドレス領域１５０１へのアドレス値に変換され、回路指定信号９０１が"１"の場合は例えば図１５のアドレス領域１５０２へのアドレス値に変換される。例えば、実施例１で説明したようにコピージョブ用のハーフトーン処理用ハードウェアモジュールに対しては、回路指定信号９０１が"０"であるため、コマンドバス６０２上に発行されるコマンドのアドレス値の上位１２ｂｉｔは、０ｘ０１５となる。また、ＰＤＬプリントジョブ用のハーフトーン処理用ハードウェアに対しては、回路指定信号９０１が"１"であるため、コマンドバス６０２上に発行されるコマンドのアドレス値の上位１２ｂｉｔは０ｘ０９５となる。パラメータ出力部１６０２はＲＡＭ１１１に格納されたコマンドの内のパラメータデータ値をそのまま出力する。尚、パラメータ出力部１６０２は、発行しようとするコマンドからパラメータ値を抽出してそれを出力する。コマンド発行部１６００は、アドレス変換部１６０１から出力されたアドレス値とパラメータデータ値からそれぞれのジョブに対して最適なコマンドを発行する。以上のようにして画像処理回路のレジスタのあドレスと、回路指定信号すなわちジョブ識別信号とに応じた、画像処理毎に固有のアドレスを生成できる。
【００６８】
次に図１７を用いて本実施例で使用する再構成部１３１内の構成を説明する。尚、ここでの説明に必要のない部分については省略してある。図１７は図９で説明した構成とほぼ同じであるが上述のようにＣＰＵ１０１からはコマンドバス６０２を介してコマンドが出力されるだけで回路指定信号は出力されない。このため、モジュールセレクタ部６０３に入力される信号はコマンドバス６０２のみである点が異なる。即ち、モジュールセレクタ部６０３はコマンド内のコマンドアドレスのみでモジュールセレクト信号（９０６から９０９）を生成する構成となっている点が異なる。それ以外の構成は同一である。
【００６９】
＜レジスタ設定＞
次に図１８及び図１９を用いてステップＳ７３０におけるレジスタ設定方法について詳細に説明する。図１８はメモリマップ４００のアドレス値とジョブＩＤ１００６の関連を説明する表である。表の右半分１３０１は図４で説明したメモリマップ４００のアドレス値１３０２を表形式にまとめたものである。一方、表の左半分は本実施例で説明した内部情報１８０１であり、ジョブＩＤ１００６と回路指定信号９０１及びコマンド内のアドレス値１８０２を表にまとめたものと、これに対応するジョブの内容を記載している。表のように、コピージョブに対してはＲＧＢスキャン画像処理４０４とＲＧＢ用プリント画像処理４０１とハーフトーン処理４０３の３つのハードウェアモジュールが使用される。この時、ジョブＩＤ１００６が"１２５"で且つ回路指定信号９０１が"０"で対応している。同様にＰＤＬプリントジョブに対してはＣＭＹＫ用プリント画像処理４０２とハーフトーン処理４０３が使用される。この時、ジョブＩＤ１００６が"１２６"で且つ回路指定信号９０１が"１"で対応している。また、本実施例ではシステムアドレス１３０２とコマンドアドレス１８０２は同一にはならない。回路指定信号９０１とシステムアドレス１３０２を用いてアドレス変換部１６０１内でコマンドアドレスに変換されているためである。以上のような対応表に示したようなメモリマップ４００と内部情報１８０１の対応が、ジョブが入力される毎にＣＰＵ１０１内で生成される。
【００７０】
次に、レジスタ設定時の制御フローについて図１９を用いて説明する。図１９（ａ）はＣＰＵ１０１内で制御される制御フローチャート（以下フローチャート（ａ））で、主にアプリケーション層７０１によって実行される。但し、実際の処理については、図７で説明した各ソフトウェア階層で詳細化され実行される。また、図１９（ｂ）は再構成部内のモジュールセレクタ部６０３内で実行される動作フローチャート（以下フローチャート（ｂ））である。
【００７１】
レジスタ設定を行う場合には、まずフローチャート（ａ）のステップＳ１９０１において、回路指定信号９０１を生成する。これは、図１９に示した内部情報１８０１のジョブＩＤを用いてジョブ管理部１００１によって生成される。次にステップＳ１９０２において回路指定信号９０１の値が"０"であるか"１"であるかを判断する。ステップＳＳ１９０２において回路指定信号９０１が"０"であると判断された場合には、ステップＳ１９０３に遷移する。ステップＳ１９０３では回路指定信号９０１が"０"の場合用のコマンドアドレスを生成する。ここでは図１５で説明したように、コマンドアドレス値はシステムアドレス値から０ｘＢＦ００＿００００を減算することによって求められる。一方、ステップＳ１９０２において回路指定信号９０１が"１"であると判断された場合には、ステップＳ１９０４に遷移する。ここではコマンドアドレス値はシステムアドレス値から０ｘＢ７００＿００００を減算することによって求められる。
【００７２】
次にステップＳ１９０５において、ステップＳ１９０３もしくはステップＳ１９０４で生成されたアドレス値を用いて、コマンドが発行される。この時フローチャート（ａ）はステップＳ１４０２に遷移し、レジスタ設定が完了するまで待機する。ステップＳ１９０５にてコマンドが出力された場合に、タイミングＴ１９２１によってモジュールセレクタ部６０３にコマンドが受信される。これによりフローチャート（ｂ）はステップＳ１９１１に遷移する。ステップＳ１９１１では、再構成部１３１内のモジュールセレクタ部６０３は、受信したコマンドアドレス値に応じてモジュールセレクト信号６０２を出力する。モジュールセレクト信号６０２が出力された場合には、所望のハードウェアモジュールに排他的にレジスタアクセスが実行される（ステップＳ１４１５）。レジスタアクセスが完了した場合には、ステップＳ１４１６においてレジスタ設定完了割込みを出力し、フローチャート（ｂ）は終了する。但し、後述のようにレジスタ設定は１つのジョブにおいて複数回実行されるため、タイミングＴ１９２１でコマンドを受信した毎にフローチャート（ｂ）は再度実行される。フローチャート（ｂ）のステップＳ１４１６においてレジスタ設定完了割込みが出力された場合、タイミングＴ１９２２で割り込み信号がフローチャート（ａ）を実行する例えばデバイスドライバに通知される。タイミングＴ１９２２によってＣＰＵ１０１に対してレジスタ設定完了が通知された場合、フローチャート（ａ）はステップＳ１４０２からステップＳ１４０３に遷移する。次に、ステップＳ１４０３ではジョブに対する全てのレジスタ設定が終了したかどうかを判断する。ステップＳ１４０３において全てのレジスタ設定が終了していないと判断された場合には、フローチャート（ａ）はステップＳ１９０１に遷移し、再びレジスタ設定動作を行う。一方、ステップＳ１４０３において全てのレジスタ設定が終了したと判断された場合には、フローチャートは終了となる。
【００７３】
以上のように、本実施例におけるステップＳ７３０でのレジスタ設定方法について説明したが、以下に実際のジョブ動作に即したレジスタ設定時の制御フローについて説明する。
【００７４】
まずコピージョブ時のハーフトーン処理部４０３に対してレジスタ設定を行う場合には、フローチャート（ａ）のステップＳ１９０１にて回路指定信号９０１に値"０"を生成する。次にステップＳ１９０２では回路指定信号が"０"であるため、ステップＳ１９０３においてコマンドアドレス値（例：０ｘ０１５０＿００００）を生成する。次にステップＳ１９０５において生成されたコマンドアドレス値を含むコマンドを、モジュールセレクタ部６０３に対して発行する。次にフローチャート（ｂ）はＳ１４１１からステップＳ１９１１に遷移し、アドレス値に応じたセレクト信号を出力する。この場合、コピージョブ用プリント画像処理内のハーフトーン処理部９０３に対してモジュールセレクト信号９０７が出力されるモジュールセレクト信号９０７が出力されており、コピージョブ用プリント画像処理部２１０内のハーフトーン処理部９０３のみにレジスタ設定を行うことが可能である。次にステップＳ１４１５において実際のレジスタ設定を行い、ステップＳ１４１６においてレジスタ設定完了割込みが出力される。次にフローチャート（ａ）のステップＳ１４０２においてレジスタ設定完了を受信した場合に、ステップＳ１４０３にてコピージョブ用に必要なレジスタ設定が全て終了したかどうかを判断して、終了である場合にはレジスタ設定が終了する。
【００７５】
次にＰＤＬプリントジョブ時のハーフトーン処理部４０３に対してレジスタ設定を行う場合には、同様にフローチャート（ａ）のステップＳ１９０１にて回路指定信号９０１に値"１"を生成する。次にステップＳ１９０２では回路指定信号が"１"であるため、ステップＳ１９０４においてコマンドアドレス値（例：０ｘ０９５０＿００００）を生成する。次にステップ次にステップＳ１９０５において生成されたコマンドアドレス値を含むコマンドを、モジュールセレクタ部６０３に対して発行する。次にフローチャート（ｂ）はＳ１４１１からステップＳ１９１１に遷移し、アドレス値に応じたセレクト信号を出力する。この場合、ＰＤＬプリントジョブ用プリント画像処理内のハーフトーン画像処理部９０５のみにレジスタ設定を行うことが可能である。次にステップＳ１４１５において実際のレジスタ設定を行い、ステップＳ１４１６においてレジスタ設定完了割込みが出力される。次にフローチャート（ａ）のステップＳ１４０２においてレジスタ設定完了を受信した場合に、ステップＳ１４０３にてコピージョブ用に必要なレジスタ設定が全て終了したかどうかを判断して、終了である場合にはレジスタ設定が終了する。
【００７６】
このように、ハーフトーン処理４０３はコピージョブ／ＰＤＬプリントジョブのどちらのジョブにも使用されているため、メモリマップ上は同一アドレスとしてＣＰＵ１０１から認識されるにも関わらず且つジョブＩＤ１００６及び回路指定信号９０１により、異なるコマンドバスを生成することで、同時且つ並列に存在するハードウェアモジュールのそれぞれ適切な方にレジスタ設定できることになる。
【００７７】
以上のようにして、本実施例ではＦＰＧＡ１４０内の再構成部１３１内に複数のジョブ用の画像処理回路を構成し、それぞれのジョブに対して正しいレジスタ設定を行った後に、入力された画像データに対して画像処理を行うことが可能となる。尚、本実施例では説明を簡単にするためにいくつか制限を与えた状態で説明したが、実際に実施される構成ではこの制限の限りではない。
【００７８】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００７９】
１０１...ＣＰＵ、１２０...システムバス、１３１...再構成部、３１１...ジョブ制御部、３３１...デバイスドライバ、６０２...コマンドバス、６０３...モジュールセレクタ、１００１...ジョブ管理部、１００５...ジョブ状態制御部
【図１】
2015222873.tif 000003
【図２】
2015222873.tif 000004
【図３】
2015222873.tif 000005
【図４】
2015222873.tif 000006
【図５】
2015222873.tif 000007
【図６】
2015222873.tif 000008
【図７】
2015222873.tif 000009
【図８】
2015222873.tif 000010
【図９】
2015222873.tif 000011
【図１０】
2015222873.tif 000012
【図１１】
2015222873.tif 000013
【図１２】
2015222873.tif 000014
【図１３】
2015222873.tif 000015
【図１４】
2015222873.tif 000016
【図１５】
2015222873.tif 000017
【図１６】
2015222873.tif 000018
【図１７】
2015222873.tif 000019
【図１８】
2015222873.tif 000020
【図１９】
2015222873.tif 000021