(57)【特許請求の範囲】
【請求項１】
回路構成を部分的に変えることのできる第１の部分と第２の部分を含む再構成可能回路と、
特定機能を実行する回路を前記第１の部分に構成するために用いられる第１の回路構成情報と、前記特定機能を実行する回路を前記第２の部分に構成するために用いられる第２の回路構成情報と、を記憶する記憶手段と、
前記再構成可能回路の一部分であって、前記特定機能に実行する回路が構成される部分を特定する特定手段と、
前記特定手段によって前記第１の部分が特定されたことに基づいて、前記記憶手段に記憶された前記第１の回路構成情報を用いて前記第１の部分に前記特定機能を実行する回路を構成し、前記特定手段によって前記第２の部分が特定されたことに基づいて、前記記憶手段に記憶された前記第２の回路構成情報を用いて前記第２の部分に前記特定機能を実行する回路を構成する構成手段と、を有することを特徴とする画像処理装置。
【請求項２】
前記特定手段は、前記再構成可能回路に含まれる複数の部分のうち、空いている部分を特定することで前記特定機能に実行する回路が構成される部分を特定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記空いている部分は、回路として実質的に動作していない部分であることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
回路の構成を部分的に変えることのできる第１の部分と第２の部分を含む再構成可能回路を利用する制御方法であって、
前記再構成可能回路の一部分であって、特定機能を実行する回路が構成される部分を特定する特定工程と、
前記特定工程で前記第１の部分が特定されたことに基づいて、第１の回路構成情報を用いて前記第１の部分に前記特定機能を実行する回路を構成する制御を行い、前記特定工程で前記第２の部分が特定されたことに基づいて、第２の回路構成情報を用いて前記第２の部分に前記特定機能を実行する回路を構成する制御を行う制御工程と、を有することを特徴とする制御方法。
【請求項５】
前記特定工程では、前記再構成可能回路に含まれる複数の部分のうち、空いている部分を特定することで前記特定機能を実行する回路が構成される部分を特定することを特徴とする請求項４に記載の制御方法。
【請求項６】
前記空いている部分は、回路として実質的に動作していない部分であることを特徴とする請求項５に記載の制御方法。
【請求項７】
コンピュータを、請求項１乃至３のいずれか１項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、その制御方法およびプログラムに関する。
【背景技術】
【０００２】
論理回路を変更可能なＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等の再構成可能回路が良く知られている。一般的に、ＰＬＤやＦＰＧＡは起動時に、ＲＯＭ等の不揮発性メモリに格納された回路構成情報を、内部の揮発性メモリであるコンフィギュレーションメモリへ書き込むことにより論理回路の切り替えを行う。また、コンフィギュレーションメモリ内の情報は電源切断時に消去されるため、電源投入時には再度、不揮発性メモリから回路構成情報をコンフィギュレーションメモリに書き込むことで、論理回路の再構成を行う必要がある。このように、一度だけ、ＰＬＤやＦＰＧＡの論理回路の構成を行う方法を静的再構成という。
【０００３】
一方で、回路が動作中に論理回路を変更できるＦＰＧＡ等が開発されてきており、動作中に論理回路を変更する方法を動的再構成という。また、ＦＰＧＡには、チップ全体ではなく特定の領域だけを書き換えることが可能なものがあり、このような書き換えを部分再構成という。特に、動作中の論理回路の動作を停止させずに、他の論理回路部分を部分再構成することを動的部分再構成という。
【０００４】
動的部分再構成では、動的再構成時にコンフィギュレーションメモリ全体を書き換えるのではなく、コンフィギュレーションメモリ領域の一部のみを書き換えることで、ＦＰＧＡ内の論理回路を部分的に再構成できる。このような動的部分再構成技術を用いることで、ＦＰＧＡ内の一つの領域に複数の論理回路を実装できるため、ハードウェアリソースを時分割多重化した論理回路を実現できる。その結果、少ないハードウェアリソースで、用途に合わせた様々な機能をハードウェアによる高い演算性能を保ったままで柔軟に実現することが可能となる。
【０００５】
この動的部分再構成を用いた技術として、例えば特許文献１には、パイプライン処理において、パイプラインの先頭の回路から順に再構成可能回路上に再構成して、機能を切り替えながらデータ処理する手法が開示されている。
【０００６】
近年のＭＦＰ（Multi Function Printer）等の画像処理装置は、ユーザからの要求に応じた複数の処理（コピージョブ、プリントジョブ、ＳＥＮＤジョブ等）を選択でき、各処理に応じた画像処理はハードウェア又はソフトウェアにより実行される。この画像処理装置の画像処理用のハードウェアにＦＰＧＡ等の再構成可能回路を採用した場合、上述した様な機能毎に、ＦＰＧＡの回路構成を動的かつ部分的に切り替えて実現できる。その結果、少ないハードウェアリソースで様々な画像処理機能が実現可能となる。但し、部分再構成を行う構成において、デバイスの故障や電気的なノイズ、書き込みタイミング等の何らかの要因により部分再構成が失敗した場合、必要な回路が構成されないことになり、意図したデータ処理が実現できなくなってしまう。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−１８６９８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したように、再構成可能回路を部分再構成しながら使用する場合、部分再構成が失敗すると、その装置のパフォーマンスが劣化してしまう。例えば、特定の画像処理機能が必要なため、ある画像処理機能の部分再構成に何等かの要因で失敗してしまった場合、その画像処理機能を使用することができず処理が停止してしまうことになり、画像処理装置のパフォーマンスが劣化してしまう。そのため、再構成可能回路を部分再構成しながら使用する構成では、部分再構成が失敗する可能性を考慮した実装をする必要がある。
【０００９】
本発明の目的は、上記従来技術の問題点を解決することにある。
【００１０】
本発明の特徴は、回路構成を部分的に再構成可能な再構成可能回路を有する画像処理装置において、再構成可能回路の再構成が失敗した場合に、装置のパフォーマンス劣化を可能な限り抑えることができる技術を提供することにある。
【課題を解決するための手段】
【００１１】
本発明は、回路構成を部分的に変えることのできる第１の部分と第２の部分を含む再構成可能回路と、特定機能を実行する回路を前記第１の部分に構成するために用いられる第１の回路構成情報と、前記特定機能を実行する回路を前記第２の部分に構成するために用いられる第２の回路構成情報と、を記憶する記憶手段と、前記再構成可能回路の一部分であって、前記特定機能に実行する回路が構成される部分を特定する特定手段と、前記特定手段によって前記第１の部分が特定されたことに基づいて、前記記憶手段に記憶された前記第１の回路構成情報を用いて前記第１の部分に前記特定機能を実行する回路を構成し、前記特定手段によって前記第２の部分が特定されたことに基づいて、前記記憶手段に記憶された前記第２の回路構成情報を用いて前記第２の部分に前記特定機能を実行する回路を構成する構成手段と、を有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、回路構成を部分的に再構成可能な再構成可能回路を有する画像処理装置において、再構成可能回路の再構成が失敗した場合に、装置のパフォーマンス劣化を可能な限り抑えることができるという効果がある。
【００１３】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１４】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施の形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】本発明の実施形態に係る画像処理装置の構成を説明するブロック図。
【図２】実施形態に係る画像処理装置の部分再構成に特に関わる構成を説明するブロック図。
【図３】実施形態に係るコンフィギュレーション用ＲＯＭに格納されているコンフィギュレーションデータのデータ構成を説明する図。
【図４】本発明の実施形態に係る画像処理装置の処理を説明するフローチャート。
【図５】本実施形態に係る画像処理装置による図４のＳ４０３のＦＰＧＡの部分再構成実行処理の詳細を説明するフローチャート。
【図６】実施形態に係る画像処理装置による図５のＳ５０６の処理の詳細を説明するフローチャート。
【図７】実施形態に係る画像処理装置による図４のＳ４０５で実行する全面再構成の処理を説明するフローチャート。
【発明を実施するための形態】
【００１５】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１６】
図１は、本発明の実施形態に係る画像処理装置１００の構成を説明するブロック図である。
【００１７】
画像処理装置１００は、画像処理装置１００を使用するユーザが操作するキーやタッチパネル等を有する操作部１０３と、原稿を走査して原稿の画像を読み取るスキャナ部１０９と、画像データに基づいて用紙に画像を印刷するプリンタ部１０７とを有する。スキャナ部１０９は、スキャナ部１０９を制御するＣＰＵ（不図示）や原稿の読取を行うための照明ランプや走査ミラー（いずれも不図示）等を有する。プリンタ部１０６は、プリンタ部１０６を制御するＣＰＵ（不図示）や画像形成や定着を行うための感光体ドラムや定着器（いずれも不図示）等を有する。
【００１８】
また画像処理装置１００は、画像処理装置１００の動作を統括的に制御するＣＰＵ１０１を備え、このＣＰＵ１０１は、画像処理装置１００の各ユニットを制御するための制御プログラムを実行する。またＲＯＭ１０４は、ＣＰＵ１０１が実行する制御プログラムや各データを記憶している。ＲＡＭ１１１は、ＣＰＵ１０１が動作するためのシステムワークメモリや画像データを一時記憶するための画像メモリを提供している。メモリコントローラ１１０はＲＡＭ１１１へのデータの書き込み、及びＲＡＭ１１１からのデータの読み出しを制御する。メモリコントローラ１１０は、システムバス１２０及び画像バス１２１に接続され、ＲＡＭ１１１へのアクセスを制御する。
【００１９】
ＦＰＧＡ（Field Programmable Gate Array）１４０は再構成可能回路で、この画像処理装置１００の画像処理回路等を構成する。実施形態では、再構成可能回路としてＦＰＧＡを例に説明しているが、ＦＰＧＡ以外の再構成可能回路であってもよい。コンフィグコントローラ１３０は、ＣＰＵ１０１の制御の下で、ＦＰＧＡの回路構成（コンフィギュレーション）を制御する。コンフィギュレーション用ＲＯＭ１５０は、ＦＰＧＡ１４０の回路を構成するための回路構成情報（コンフィグデータ）を格納する。ＦＰＧＡ１４０の回路構成情報の書き換えは、動的に書き換え可能で、かつ部分的に書き換え可能である。即ち、ＦＰＧＡ１４０の再構成部の一部に構成された回路が動作している間に、その回路が占める部分と重ならない別の部分に、別の回路を構成することができる。
【００２０】
ネットワークＩ／Ｆ１０２は、ネットワーク上の不図示の汎用コンピュータ等と通信（送受信）を行う。プリンタＩ／Ｆ１０６は、画像バス１２１とプリンタ部１０７とを接続し、プリンタ部１０７とのインタフェースを制御する。スキャナＩ／Ｆ１０８は、スキャナ部１０９から入力された画像データを画像バス１２１に出力して、スキャナ部１０９とのインタフェースを制御する。ＵＳＢＩ／Ｆ１１４は、ＵＳＢインターフェースを介して画像処理装置１００と接続された不図示の汎用コンピュータやＵＳＢデバイス等と通信（送受信）を行う。ＦＡＸＩ／Ｆ１１５は公衆回線網と接続し、不図示の画像処理装置やファクシミリ装置と通信（送受信）を行う。ＲＯＭＩ／Ｆ１１２は、ＣＰＵ１０１が実行するプログラム等のＲＯＭ１０４からのデータの読み出しを制御する。操作部Ｉ／Ｆ１１３は、ＣＰＵ１０１と操作部１０３とのインタフェースを制御する。ここでＦＰＧＡ１４０及びスキャナＩ／Ｆ１０８及びプリンタＩ／Ｆ１０６は、処理対象の画像データを転送するための画像バス１２１に接続される。またネットワークＩ／Ｆ１０２，ＵＳＢＩ／Ｆ１１４，ＦＡＸＩ／Ｆ１１５，操作部Ｉ／Ｆ１１３，ＲＯＭＩ／Ｆ１１２、コンフィグコントローラ１３０、ＦＰＧＡ１４０は、システムバス１２０を介してＣＰＵ１０１と接続されている。ＣＰＵ１０１は、ＦＰＧＡ１４０、スキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６へのパラメータ設定をシステムバス１２０を介して行う。
【００２１】
次に、図２を参照して本実施形態に係る画像処理装置１００における部分再構成に関する構成について説明する。
【００２２】
図２は、実施形態に係る画像処理装置１００の部分再構成に特に関わる構成を説明するブロック図である。図２において、図１で説明した箇所は同じ参照番号で示している。
【００２３】
ＦＰＧＡ１４０は内部に、４つの部分再構成部（ＰＲ１〜ＰＲ４）２０１〜２０４を有する。各部分再構成部は、その回路構成を動的に再構成することが可能である。実施形態では、画像処理機能を持つ回路を部分再構成部に構成する例について説明をしているが、もちろん画像処理機能以外の回路を部分再構成部に構成できることは言うまでもない。
【００２４】
コンフィグコントローラ１３０は、コンフィグレーション用ＲＯＭ１５０に記憶されているコンフィグレーションデータを、ＦＰＧＡ１４０の指示された部分再構成部に書き込む。コンフィグコントローラ１３０は、再構成管理部２０５とエラー検知部２０６とを有する。再構成管理部２０５は、部分再構成部２０１〜２０４のそれぞれを管理する。例えば、部分再構成部２０１〜２０４のそれぞれが現在の処理に使用されているか等、各部分再構成部の空き状況を管理する。その上で、各部分再構成部が書き換え可能かどうかを判定する。再構成管理部２０５は、ＣＰＵ１０１からの指示と、各部分再構成部が書き換え可能かどうかの判定結果とに基づいて、部分再構成部２０１〜２０４のそれぞれへのコンフィギュレーションデータの書き換えを行う。
【００２５】
エラー検知部２０６は、部分再構成部２０１〜２０４のそれぞれの部分再構成が正常に終了しなかった場合のエラーを検知する。例えば、部分再構成部２０１の書き換えを実施した際に、何等かの要因で、コンフィギュレーションデータの書き換えに失敗したときに再構成可能回路（ＦＰＧＡ）が出力するエラー信号をモニタする。エラー検知部２０６は、このエラー信号を検知すると再構成管理部２０５に通知する。エラー検知部２０６により、エラーが検知された場合の処理は、図４〜図７を参照して後述する。
【００２６】
次に、図３を参照して、実施形態に係る画像処理装置１００におけるＦＰＧＡ１４０の部分再構成部２０１〜２０４を構成するコンフィギュレーションデータの格納方法について説明する。
【００２７】
図３は、実施形態に係るコンフィギュレーション用ＲＯＭ１５０に格納されているコンフィギュレーションデータのデータ構成を説明する図である。
【００２８】
コンフィギュレーション用ＲＯＭ１５０には、ＦＰＧＡ１４０の部分再構成部２０１〜２０４の部分再構成に必要な複数のコンフィギュレーションデータが、部分再構成部に対応付けて格納されている。部分再構成部２０１（ＰＲ１）用のコンフィギュレーションデータ３００は、部分再構成部２０１に論理回路を構成するコンフィギュレーションデータを表している。図３においては、部分再構成部２０１に構成可能な機能がＡ，Ｂ，Ｃ，Ｄの４つである場合を例にしている。コンフィギュレーションデータ３０１は、ＰＲ１に機能Ａの回路を構成するためのコンフィギュレーションデータである。同様に、コンフィギュレーションデータ３０２〜３０４はそれぞれ、ＰＲ１に機能Ｂ、機能Ｃ、機能Ｄの回路構成をそれぞれ構成するためのコンフィギュレーションデータである。
【００２９】
またコンフィギュレーションデータ３１０は、部分再構成部（ＰＲ２）２０２に論理回路を構成するコンフィギュレーションデータを表している。ＰＲ２用のコンフィギュレーションデータ３１０でも、機能Ａ，Ｂ，Ｃ，Ｄの４つの機能のコンフィギュレーションデータを格納しており、コンフィギュレーションデータ３１１は、ＰＲ２に機能Ａの回路を構成するためのコンフィギュレーションデータである。同様に、コンフィギュレーションデータ３１２〜３１４はそれぞれ、ＰＲ２に機能Ｂ、機能Ｃ、機能Ｄの回路構成をそれぞれ構成するためのコンフィギュレーションデータである。
【００３０】
またコンフィギュレーションデータ３２０は、部分再構成部（ＰＲ３）２０３に論理回路を構成するコンフィギュレーションデータを表している。ＰＲ３用のコンフィギュレーションデータ３２０でも、機能Ａ，Ｂ，Ｃ，Ｄの４つの機能のコンフィギュレーションデータを格納しており、コンフィギュレーションデータ３２１は、ＰＲ３に機能Ａの回路を構成するためのコンフィギュレーションデータである。同様に、コンフィギュレーションデータ３２２〜３２４はそれぞれ、ＰＲ３に機能Ｂ、機能Ｃ、機能Ｄの回路構成をそれぞれ構成するためのコンフィギュレーションデータである。
【００３１】
またコンフィギュレーションデータ３３０は、部分再構成部（ＰＲ４）２０４に論理回路を構成するコンフィギュレーションデータを表している。ＰＲ４用のコンフィギュレーションデータ３３０でも、機能Ａ，Ｂ，Ｃ，Ｄの４つの機能のコンフィギュレーションデータを格納しており、コンフィギュレーションデータ３３１は、ＰＲ３に機能Ａの回路を構成するためのコンフィギュレーションデータである。同様に、コンフィギュレーションデータ３３２〜３３４はそれぞれ、ＰＲ４に機能Ｂ、機能Ｃ、機能Ｄの回路構成をそれぞれ構成するためのコンフィギュレーションデータである。
【００３２】
上述したように、各部分再構成部ごとにコンフィギュレーションデータを用意する必要がある。例えば、機能Ａの回路構成を、部分再構成部（ＰＲ１）２０１と部分再構成部（ＰＲ２）２０２に構成する場合を考える。この場合、例え同じ機能Ａであっても、ＰＲ１用の機能Ａのコンフィギュレーションデータ３０１、ＰＲ２用の機能Ａのコンフィギュレーションデータ３１１というように、部分再構成部によって異なるコンフィギュレーションデータを用意する必要がある。
【００３３】
そのため、各部分再構成部用のコンフィギュレーションデータを多く備えておけば、各部分再構成部を色々な機能に使用できるが、コンフィギュレーションＲＯＭ１５０に格納するデータ容量が大きくなる。一方で、機能毎にコンフィギュレーションする再構成部を限定すれば、各部分再構成部に構成できる機能が限定されるが、コンフィギュレーションデータの量を少なくできるのでコンフィギュレーションＲＯＭ１５０の容量を削減することができる。
【００３４】
本実施形態では、ＦＰＧＡ１４０は４つの部分再構成領域を持ち、部分再構成領域に構成される機能がＡ，Ｂ，Ｃ，Ｄの４つの場合を例に説明する。もちろん、部分再構成の領域と、そこに構成する機能を４つに限定した理由は、説明をわかりやすくするためだけであり、４つに限定される必要はない。
【００３５】
図４は、本発明の実施形態に係る画像処理装置１００による処理を説明するフローチャートである。尚、図４のフローチャートの各手順は、ＣＰＵ１０１がＲＯＭ１０４に格納された制御プログラムを実行することにより実行される。
【００３６】
まずＳ４０１でＣＰＵ１０１は、ジョブを受信するとＳ４０２へ進み、ＣＰＵ１０１は、その受信したジョブを実行するに際して、ＦＰＧＡ１４０に構成しなければならない機能を特定する。例えば、受信したジョブを実行するために機能Ａが必要である場合、そのジョブを実行するための機能として機能Ａを特定する。次にＳ４０３に進みＣＰＵ１０１は、Ｓ４０２で特定した機能を、ＦＰＧＡ１４０の部分再構成部に構成する。このＳ４０３では、ＣＰＵ１０１の制御の下で、コンフィグコントローラ１３０が、その機能を構成するのに必要なコンフィギュレーションデータをコンフィギュレーションＲＯＭ１５０から読み出し、ＦＰＧＡ１４０の部分再構成部に書き込む。Ｓ４０３の部分再構成実行処理の詳細は図５を参照して後述する。
【００３７】
次にＳ４０４に進みＣＰＵ１０１は、Ｓ４０３において、Ｓ４０２で特定した機能を実行できるように、ＦＰＧＡ１４０の部分再構成部の構成に成功したか否かを判定する。ここでＣＰＵ１０１は、コンフィグコントローラ１３０の再構成管理部２０５がエラー検知部２０６から取得した検知結果を基に、部分再構成部の構成に成功したかどうかを判定する。Ｓ４０４でＣＰＵ１０１は、Ｓ４０２で特定したジョブの実行に必要な全ての機能が、ＦＰＧＡ１４０の部分再構成部に構成できたと判定した場合はＳ４０７へ進む。Ｓ４０７でＣＰＵ１０１は、そのＦＰＧＡ１４０に構成された機能を用いて、受信したジョブの処理を行ってこの処理を終了する。
【００３８】
一方、Ｓ４０４で部分再構成部の構成に失敗したと判定したときはＳ４０５に進む。Ｓ４０５でＣＰＵ１０１は、ジョブの実行に必要な機能の部分再構成がエラー終了しているため、コンフィグコントローラ１３０により、ＦＰＧＡ１４０の全面再構成を実行させる。Ｓ４０５で実行するＦＰＧＡ１４０の全面再構成の実行フローについては図７を参照して後述する。Ｓ４０５の処理が終了するとＳ４０６に進みＣＰＵ１０１は、ＦＰＧＡ１４０の全面再構成が正常終了したかを判定する。ここでもＣＰＵ１０１は、コンフィグコントローラ１３０の再構成管理部２０５がエラー検知部２０６から取得した検知結果を基に成功したかどうかを判定する。Ｓ４０６でＣＰＵ１０１は、ＦＰＧＡ１４０の全面再構成が正常終了したと判定するとＳ４０７へ進み、エラー終了した場合Ｓ４０８へ進んでエラーを通知してこの処理を終了する。このエラー通知は、ＣＰＵ１０１の指示の下に操作部１０３の表示部にエラーの旨を表示し、電源の再投入等を促す。
【００３９】
これにより、受信したジョブを実行するのに必要な機能を再構成可能回路（ＦＰＧＡ）に構成し、その機能が構成された再構成可能回路を使用して、そのジョブを実行することができる。
【００４０】
次に図５を参照して、部分再構成実行の処理について詳細に説明する。
【００４１】
図５は、本実施形態に係る画像処理装置１００による図４のＳ４０３のＦＰＧＡの部分再構成実行処理の詳細を説明するフローチャートである。尚、図５のフローチャートの各手順はＣＰＵ１０１又はＣＰＵ１０１の指示の下でコンフィグコントローラ１３０が実行する。
【００４２】
まずＳ５０１でＣＰＵ１０１は、再構成を行う部分再構成部と、コンフィギュレーション用ＲＯＭ１５０に格納されているコンフィギュレーションデータの中から、その部分再構成部に構成する機能に対応するコンフィギュレーションデータを特定する。例えば部分再構成部（ＰＲ１）２０１に機能Ａの回路を構成する場合、コンフィギュレーション用ＲＯＭ１５０に格納されているコンフィギュレーションデータの中からＰＲ１用機能Ａのコンフィグレーションデータ３０１を特定する。ここでＣＰＵ１０１は、再構成管理部２０５からの情報に基づいて、ＦＰＧＡ１４０でジョブの処理に使用されていない書き換え可能な部分再構成部を特定する。
【００４３】
次にＳ５０２に進みＣＰＵ１０１は、コンフィグコントローラ１３０に対して部分再構成を実行するように指示する。具体的には、Ｓ５０１で特定したコンフィギュレーションデータと、書き込み対象の部分再構成部とを指示する。ここでは例えば、コンフィギュレーションデータを、部分再構成部（ＰＲ１）２０１に書き込むように指示する。そしてＳ５０３に進みＣＰＵ１０１は、コンフィグコントローラ１３０からの応答に基づいて、Ｓ５０２の部分再構成が正常終了したかどうかを判定する。この判定には、ＦＰＧＡ１４０が出力する部分再構成が正常終了を示す信号を再構成管理部２０５がモニタし、エラー検知部２０６がエラーを検知しない場合に正常終了と判定する。Ｓ５０３でＣＰＵ１０１が部分再構成が正常終了したと判定するとＳ５０８に進み、ＣＰＵ１０１は、そのジョブを実行するのに必要な全ての機能の部分再構成が終了したかを判定する。全ての機能の部分再構成が終了したときは、この処理を終了して図４のＳ４０４へ進む。一方、Ｓ５０８でＣＰＵ１０１が、そのジョブを実行するのに必要な全ての機能の部分再構成が終了していないと判定するとＳ５０１に戻り、残りの必要な機能の部分再構成を実行する。
【００４４】
一方、Ｓ５０３でＣＰＵ１０１は、部分再構成が正常終了していないと判定するとＳ５０４に進む。Ｓ５０４では、Ｓ５０２で実行した部分再構成が何等かの原因により失敗しているため、ＣＰＵ１０１は、コンフィグコントローラ１３０に対して、Ｓ５０２で実施した部分再構成の再実行を指示する。そしてＳ５０５に進みＣＰＵ１０１は、前述のＳ５０３と同様に、Ｓ５０４で実行した部分再構成の再実行が正常終了したかどうかを判定する。Ｓ５０５でＣＰＵ１０１が、部分再構成の再実行が正常終了したと判定したときはＳ５０８に進むが、そうでないときはＳ５０６に進む。尚、Ｓ５０５において、部分再構成が正常終了しなかったと判定した場合、ＣＰＵ１０１は、Ｓ５０４とＳ５０５の処理を複数回実行してもよい。
【００４５】
Ｓ５０６でＣＰＵ１０１は、コンフィグコントローラ１３０に対して、その機能を実行するコンフィグレーションデータを書き込む部分再構成部を、他の処理を実行していない部分再構成部に切り替えるように指示する。更に、その切り替えた部分再構成部に、対応するコンフィグレーションデータを書き込むように指示する。例えば、部分再構成部（ＰＲ１）２０１に機能Ａの回路を構成しようとした際に失敗した場合、部分再構成部（ＰＲ２）２０２が空いていれば、そこに機能Ａの回路の再構成を実施する。このＳ５０６における、部分再構成部を切り替えて部分再構成を実行する処理は、図６を参照して後述する。そしてＳ５０７に進みＣＰＵ１０１は、Ｓ５０６で実行した部分再構成部を切り替えた部分再構成が成功したかを判定する。この判定もＳ５０３，Ｓ５０５と同様に、構成管理部２０５とエラー検知部２０６がＦＰＧＡの正常終了、エラー終了を表す信号をモニタすることにより行われる。Ｓ５０７でＣＰＵ１０１が、部分再構成が正常終了したと判定した場合はＳ５０８へ進み、エラー終了した場合は、部分再構成の処理を終了して図４のＳ４０４へ進む。
【００４６】
このようにして、ＦＰＧＡのある部分再構成部へのコンフィグレーションデータの書き込みに失敗した場合は、そのＦＰＧＡの別の部分再構成部へ、同じ機能を実行するコンフィグレーションデータを書き込むことができる。これによりＦＰＧＡのある部分再構成部への、ある機能のコンフィグレーションに失敗しても、他の部分再構成部に同じ機能を構成できる。
【００４７】
次に図６を参照して、部分再構成部を切り替えて部分再構成を実行する処理を詳細に説明する。
【００４８】
図６は、実施形態に係る画像処理装置１００による図５のＳ５０６の処理の詳細を説明するフローチャートである。尚、図６のフローチャートの各手順はＣＰＵ１０１又はＣＰＵ１０１の指示の下でコンフィグコントローラ１３０が実行する。
【００４９】
先ずＳ６０１でＣＰＵ１０１は、再構成管理部２０５からの情報に基づいて、ＦＰＧＡ１４０の部分再構成部の中で、空いている部分再構成部があるかどうかを判定する。Ｓ６０１でＣＰＵ１０１が、ＦＰＧＡ１４０の部分再構成部の中で空いている部分再構成部があると判定した場合はＳ６０２に進み、空いている領域がなかった場合はＳ６０４へ進む。Ｓ６０２でＣＰＵ１０１は、その空いている部分再構成部に書き込むコンフィグレーションデータを特定する。例えば、部分再構成部（ＰＲ２）が空いていて、そこに機能Ａを構成する場合は、コンフィギュレーション用ＲＯＭ１５０の中からＰＲ２用機能Ａのコンフィグレーションデータ３１１を特定する。そしてＳ６０３に進みＣＰＵ１０１は、Ｓ６０２で特定したコンフィグレーションデータを、Ｓ６０１で見つけた、空いている部分再構成部に書き込んで部分再構成を実行して、この処理を終了する。尚、Ｓ６０２で、空いている部分再構成部に対応する、当該機能を実行するコンフィグレーションデータがコンフィグレーション用ＲＯＭ１５０に記憶されていない場合が考えられる。その場合は、その機能を実行するコンフィグレーションデータが記憶されている他の空いている部分再構成部を探すようにしても良い。
【００５０】
一方、Ｓ６０４でＣＰＵ１０１は、ＦＰＧＡ１４０の部分再構成部に空いている部分再構成部がなかったため、ＦＰＧＡ１４０の部分再構成部の中に、書き換え可能な部分再構成部があるか否かを判定する。ここで、書き換え可能な部分再構成部とは、その部分再構成部に既に何らかのコンフィギュレーションデータが書き込まれているが、現在の処理にでは使用されていない部分再構成部である。Ｓ６０４でＣＰＵ１０１は、ＦＰＧＡ１４０の部分再構成部の中に、書き換え可能な部分再構成部があると判定するとＳ６０５に進むが、書き換え可能な部分再構成部がなかった場合は、この処理終了して図５のＳ５０７へ進む。
【００５１】
Ｓ６０５でＣＰＵ１０１は、ＦＰＧＡ１４０の部分再構成部の中に、書き換え可能な部分再構成部があるため、Ｓ６０４で特定した書き換え可能な部分再構成部に構成するコンフィグレーションデータを特定する。例えば、部分再構成部（ＰＲ３）２０３に機能Ａを構成する場合は、コンフィギュレーション用ＲＯＭ１５０の中のＰＲ３用機能Ａのコンフィグレーションデータ３３１を特定する。そしてＳ６０６に進みＣＰＵ１０１は、Ｓ６０５で特定したコンフィグレーションデータを、Ｓ６０４で見つけた、書き換え可能な部分再構成部に上書きして、この処理を終了する。尚、Ｓ６０５で、書き換え可能な部分再構成部に対応する、当該機能を実行するコンフィグレーションデータがコンフィグレーション用ＲＯＭ１５０に記憶されていない場合が考えられる。その場合は、その機能を実行するコンフィグレーションデータが記憶されている他の書き換え可能な部分再構成部を探すようにしても良い。
【００５２】
これによれば、ＦＰＧＡのある部分再構成部のコンフィグレーションに失敗したときは、そのＦＰＧＡの空いている（コンフィグレーションが未実行の）部分再構成部、或いはコンフィグレーションされているが、現在使用されていない部分再構成部を探す。そしてそのような部分再構成部が見つかると、その部分再構成部に対応し、かつそこに構成したい機能に対応するコンフィグレーションデータを特定して、その特定したコンフィグレーションデータでＦＰＧＡのコンフィグレーションを実行することができる。
【００５３】
次に図７を参照して、図４のＳ４０５の全面再構成を実行する処理について詳細に説明する。
【００５４】
図７は、実施形態に係る画像処理装置１００による図４のＳ４０５で実行する全面再構成の処理を説明するフローチャートである。尚、図７のフローチャートの各手順はＣＰＵ１０１と、ＣＰＵ１０１の指示の下でコンフィグコントローラ１３０が処理を実行することにより達成される。
【００５５】
Ｓ７０１でＣＰＵ１０１は、ＦＰＧＡ１４０の部分再構成部に構成されているコンフィグデータの種類をコンフィグコントローラ１３０から取得してＲＡＭ１１１に記憶する。ここで部分再構成部に構成されているコンフィグデータの種類を記憶するのは、全面再構成後に部分再構成を実行し、ＦＰＧＡ１４０の回路構成を全面再構成前と同じ状態にするためである。次にＳ７０２に進みＣＰＵ１０１は、ＦＰＧＡ１４０の全面再構成を実行する。ここではＦＰＧＡ１４０の部分再構成部２０１〜２０４それぞれに対して、ＦＰＧＡ１４０が有する機能Ａ〜Ｄを構成する。例えば、部分再構成部２０１に機能Ａ，部分再構成部２０２に機能Ｂ，部分再構成部２０３に機能Ｃ，部分再構成部２０４に機能Ｄを構成する。次にＳ７０３に進みＣＰＵ１０１は、Ｓ７０１で記憶した全面再構成前の状態と同じになるように必要に応じて部分再構成を実行する。ここでは例えば、部分再構成部２０１に機能Ｂを、部分再構成部２０２に機能Ａを構成する。尚、Ｓ７０２において、Ｓ７０１で記憶したＦＰＧＡ１４０の部分再構成部に構成されているコンフィグデータの種類に基づいてＦＰＧＡ１４０の全面再構成を実行すれば、Ｓ７０３の処理を省略できる。
【００５６】
以上説明したように本実施形態によれば、動的部分再構成が可能なＦＰＧＡを備えた画像処理装置において、動的部分再構成に失敗した場合でも、パフォーマンス劣化を可能な限り抑えるリカバリー制御が実行可能となる。
【００５７】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００５８】
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【００５９】
１００…画像処理装置、１０１…ＣＰＵ，１０４…ＲＯＭ，１１１…ＲＡＭ，１２０…システムバス、１２１…画像バス、１３０…コンフィグコントローラ、１４０…ＦＰＧＡ，１５０…コンフィギュレーション用ＲＯＭ，２０５…再構成管理部、２０６…エラー検知部。
【図１】
0006598432.tif 000002
【図２】
0006598432.tif 000003
【図３】
0006598432.tif 000004
【図４】
0006598432.tif 000005
【図５】
0006598432.tif 000006
【図６】
0006598432.tif 000007
【図７】
0006598432.tif 000008