(57)【要約】【課題】動的部分再構成が失敗した場合においても、リカバリー制御を実行することにより、意図しない回路構成を原因としたデバイス故障を回避する仕組みを提供する。【解決手段】本データ処理装置は、ＦＰＧＡ１４０の少なくとも一部の領域を再構成する部分再構成が失敗したことを検知すると、当該領域に対応する初期化データを用いて、当該領域を再構成させる。【選択図】  図３
2017118450.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって、
回路構成を部分的に再構成可能な再構成可能デバイスと、
前記再構成可能デバイスの少なくとも一部の領域を再構成する再構成手段と、
前記再構成手段による部分的な再構成を行う部分再構成が成功したか又は失敗したかを検知する検知手段と、
前記検知手段によって前記部分再構成が失敗したことを検知すると、初期化データを用いて、前記再構成手段によって該領域を再構成させる制御手段と
を備えることを特徴とするデータ処理装置。
【請求項２】
前記制御手段は、
前記初期化データを用いた部分再構成が成功した場合には、前記再構成手段によって他の領域に必要な回路構成を再構成させることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記制御手段は、
前記初期化データを用いた部分再構成が失敗した場合には、前記再構成手段によって、前記再構成可能デバイスの全ての部分を初期化データを用いて再構成する全面再構成を実行させることにより、該再構成可能デバイスを初期化することを特徴とする請求項１又は２に記載のデータ処理装置。
【請求項４】
前記再構成手段は、
前記全面再構成を実行させる前に、各領域に構成されている回路構成に対応するデータを記憶し、
前記全面再構成を実行した後に、各領域に必要な回路構成を再構成することを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記他の領域とは、回路構成が構成されていない領域であることを特徴とする請求項２に記載のデータ処理装置。
【請求項６】
前記他の領域とは、回路構成が構成されているものの、前記データ処理装置における次の処理に必要のない領域であることを特徴とする請求項２に記載のデータ処理装置。
【請求項７】
前記初期化データは、対応する領域の再構成部が出力ポートを有する場合には、該出力ポートの出力値を非アクティブ方向に固定するデータであることを特徴とする請求項１乃至６の何れか１項に記載のデータ処理装置。
【請求項８】
前記制御手段は、
前記再構成手段による初期化データを用いた再構成が失敗した場合に、操作者にエラーを通知することを特徴とする請求項１乃至７の何れか１項に記載のデータ処理装置。
【請求項９】
回路構成を部分的に再構成可能な再構成可能デバイスを備えるデータ処理装置の制御方法であって、
再構成手段が、前記再構成可能デバイスの少なくとも一部の領域を再構成する再構成工程と、
検知手段が、前記再構成工程による部分的な再構成を行う部分再構成が成功したか又は失敗したかを検知する検知工程と、
制御手段が、前記検知工程で前記部分再構成が失敗したことを検知すると、初期化データを用いて、前記再構成手段によって該領域を再構成させる制御工程と
を実行することを特徴とするデータ処理装置の制御方法。
【請求項１０】
回路構成を部分的に再構成可能な再構成可能デバイスを備えるデータ処理装置の制御方法における各工程をコンピュータに実行させるためのプログラムであって、前記方法は、
再構成手段が、前記再構成可能デバイスの少なくとも一部の領域を再構成する再構成工程と、
検知手段が、前記再構成工程による部分的な再構成を行う部分再構成が成功したか又は失敗したかを検知する検知工程と、
制御手段が、前記検知工程で前記部分再構成が失敗したことを検知すると、初期化データを用いて、前記再構成手段によって該領域を再構成させる制御工程と
を実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
論理回路構成を変更可能なＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等の再構成可能回路が知られている。一般的には、ＰＬＤやＦＰＧＡは起動時に、ＲＯＭ等の不揮発性メモリに格納された回路構成情報を、内部の揮発性メモリであるコンフィギュレーションメモリへ書き込むことにより論理回路の切り替えを行うことができる。また、コンフィギュレーションメモリ内の情報は電源切断時に消去されるため、電源投入時には再度、不揮発性メモリから回路構成情報をコンフィギュレーションメモリに書き込むことで、論理回路の再構成を行う必要がある。このように、一度だけ、ＰＬＤやＦＰＧＡの論理回路の構成を行う方法を静的再構成という。
【０００３】
一方、回路が動作中に論理回路を変更できるＦＰＧＡ等が開発されてきており、動作中に論理回路を変更する方法を動的再構成という。また、ＦＰＧＡには、チップ全体ではなく特定の領域だけを書き換えることが可能なものがあり、このような書き換えを部分再構成という。特に、動作中の論理回路の動作を停止させずに、他の論理回路部分を部分再構成することを動的部分再構成という。動的部分再構成では、動的再構成時にコンフィギュレーションメモリ全体を書き換えるのではなく、コンフィギュレーションメモリ領域の一部のみを書き換えることで、ＦＰＧＡ内の論理回路を部分的に再構成できる。このような動的部分再構成技術を用いることで、ＦＰＧＡ内の一つの領域に複数の論理回路を実装できるため、ハードウェアリソースを時分割多重化した論理回路を実現できる。その結果、少ないハードウェアリソースで、用途に合わせた様々な機能をハードウェアによる高い演算性能を保ったままで柔軟に実現することが可能となる。
【０００４】
特許文献１には、動的部分再構成を用いて、パイプライン構成の処理において、パイプラインの先頭の回路から順に再構成可能回路上に再構成して、機能を切り替えながらデータを処理する手法が開示されている。近年のＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）等のデータ処理装置は、ユーザからの要求に応じた複数の処理（コピージョブ、プリントジョブ、ＳＥＮＤジョブ等）を選択することができる。また、これらの処理に応じた画像処理はハードウェア又はソフトウェアにより実行される。このデータ処理装置のデータ処理用のハードウェアにＦＰＧＡ等の再構成可能回路を採用した場合、上述したような機能毎に、ＦＰＧＡの回路構成を動的かつ部分的に切り替えて実現できる。その結果、少ないハードウェアリソースで様々なデータ処理機能が実現可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１８６９８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来技術には以下に記載する課題がある。例えば、上記従来技術では、部分再構成を行う構成において、デバイス故障や電気的なノイズ等の要因により部分再構成が失敗した場合、必要な回路が構成されないことになり、意図したデータ処理が実現できなくなってしまう。また、部分再構成が失敗した領域には、意図しない回路が構成されており、予期せぬ動作により早期デバイス故障につながる可能性がある。具体的には、構成される回路によっては、内部での信号衝突が発生し、貫通電流により再構成可能デバイスの早期故障につながる可能性があるため、デバイス故障の原因となってしまう。
【０００７】
本発明は、上述の問題に鑑みて成されたものであり、動的部分再構成が失敗した場合においても、リカバリー制御を実行することにより、意図しない回路構成を原因としたデバイス故障を回避する仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、データ処理装置であって、回路構成を部分的に再構成可能な再構成可能デバイスと、前記再構成可能デバイスの少なくとも一部の領域を再構成する再構成手段と、前記再構成手段による部分的な再構成を行う部分的再構成が成功したか又は失敗したかを検知する検知手段と、前記検知手段によって前記部分再構成が失敗したことを検知すると、初期化データを用いて、前記再構成手段によって該領域を再構成させる制御手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、動的部分再構成が失敗した場合においても、リカバリー制御を実行することにより、意図しない回路構成を原因としたデバイス故障を回避することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態に係る画像処理装置の構成の一例を示すブロック図。
【図２】本実施形態に係る画像処理装置の動的部分再構成に関わる構成を示すブロック図。
【図３】本実施形態に係る画像処理装置の再構成部に構成される回路情報の格納方法の一例を示す図。
【図４】本実施形態に係る画像処理装置のジョブ実行処理制御を示すフローチャート。
【図５】本実施形態に係る画像処理装置の動的部分再構成の実行フローについて詳細に説明するフローチャート。
【図６】本実施形態に係る画像処理装置の領域を変更して部分再構成を実行するフローについて詳細に説明するフローチャート。
【図７】本発明の実施形態に係る画像処理装置の全面再構成を実行するフローについて詳細に説明するフローチャート。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１２】
＜画像処理装置の構成＞
まず、図１を参照して、本発明の実施形態に係るデータ処理装置の一例である画像処理装置の装置構成について説明する。本実施形態の画像処理装置１００は、画像処理装置１００を使用するユーザが各種の操作を行うための操作部１０３を有する。また、画像処理装置１００は、操作部１０３からの指示に従い、原稿を読み取って画像データを生成するスキャナ部１０９と、画像データを用紙に印刷するプリンタ部１０７とを有する。スキャナ部１０９は、スキャナ部１０９を制御するＣＰＵや原稿の読取を行うための不図示の照明ランプや走査ミラーなどを有する。プリンタ部１０７は、プリンタ部１０７の制御を行う不図示のＣＰＵや画像形成や定着を行うための不図示の感光体ドラムや定着器を有する。
【００１３】
また、画像処理装置１００は、画像処理装置１００の動作を統括的に制御するＣＰＵ１０１を備え、画像処理装置の各ユニットを制御するための制御ソフトウェアを実行する。また、画像処理装置１００は、ＣＰＵ１０１が実行するプログラムが格納されているＲＯＭ１０４を有する。また、画像処理装置１００は、ＣＰＵ１０１が動作するためのシステムワークメモリであり、かつ画像データを一時記憶するための画像メモリでもあるＲＡＭ１１１を有する。ＲＡＭ１１１と、ＲＡＭ１１１への書き込み、読み出し動作を制御するメモリコントローラ１１０を有する。メモリコントローラ１１０は、システムバス１２０及び画像バス１２１に接続され、ＲＡＭ１１１へのアクセスを制御する。
【００１４】
画像処理装置１００は、回路構成を部分的、かつ、動的に再構成可能な再構成可能デバイスとして画像処理回路等を構成するＦＰＧＡ１４０を有する。本実施例では再構成可能デバイスとしてＦＰＧＡを例に説明しているが、ＦＰＧＡ以外の再構成可能デバイスが接続される構成であってもよい。
画像処理装置１００は、ＣＰＵ１０１の制御の基、ＦＰＧＡの回路構成（コンフィギュレーション）を制御するコンフィグコントローラ１３０を有する。
【００１５】
また、画像処理装置１００はＦＰＧＡ１４０に構成する為の論理回路構成情報（コンフィグデータ）が格納されているコンフィギュレーション用ＲＯＭ１５０を有する。ＦＰＧＡ１４０は、動的書き換え可能かつ部分書き換え可能なものである。すなわち、ＦＰＧＡ１４０の再構成部の一部に構成された回路が動作している間に、その回路が占める部分とは重ならない別の部分に別の回路を再構成することができる。
【００１６】
また、画像処理装置１００は、スキャナ部１０９から画像データが入力されるスキャナＩ／Ｆ１０８と、プリンタへ画像データを出力するプリンタＩ／Ｆ１０６とを有する。ＦＰＧＡ１４０及びスキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６は、処理される画像データを転送するための画像バス１２１に接続される。
【００１７】
また、画像処理装置１００は、ネットワークＩ／Ｆ１０２を介し、ネットワーク上の不図示の汎用コンピュータと通信（送受信）を行う。さらに、画像処理装置１００は、ＵＳＢＩ／Ｆ１１４を介し、画像処理装置１００と接続された不図示の汎用コンピュータと通信（送受信）を行う。また、画像処理装置１００は、ＦＡＸＩ／Ｆ１１５を介し、公衆回線網と接続し、不図示の他の画像処理装置やファクシミリ装置と通信（送受信）を行う。画像処理装置１００は、ＣＰＵ１０１が実行するプログラム、ＲＯＭ１０４への書き込み、読み出し動作を制御するＲＯＭ  Ｉ／Ｆ１１２を有する。また、画像処理装置１００は、ＣＰＵ１０１、ネットワークＩ／Ｆ１０２、操作部１０３、ＲＯＭ  Ｉ／Ｆ１１２、コンフィグコントローラ１３０、ＦＰＧＡ１４０を相互に接続するシステムバス１２０を有する。ＣＰＵ１０１は、ＦＰＧＡ１４０と、スキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６のパラメータ設定を、システムバス１２０を介して行う。
【００１８】
＜部分再構成に関する構成＞
次に、図２を参照して、本実施形態に係る画像処理装置における部分再構成に関する構成について説明する。ＣＰＵ１０１、コンフィグコントローラ１３０、コンフィギュレーション用ＲＯＭ１５０、及びＦＰＧＡ１４０については図１を用いて前述した通りである。
【００１９】
ＦＰＧＡ１４０は内部に、部分再構成部（ＰＲ１）２０１、部分再構成部（ＰＲ２）２０２、部分再構成部（ＰＲ３）２０３、及び部分再構成部（ＰＲ４）２０４を有する。各部分再構成部は動的に画像処理回路等を書き換えることが可能である。本実施形態では、画像処理機能を有する回路を部分再構成部に構成する例について説明するが、もちろん画像処理機能以外の回路を部分再構成部に構成可能である。
【００２０】
コンフィグコントローラ１３０は、再構成管理部２０５及びエラー検知部２０６を有する。再構成管理部２０５は各部分再構成部２０１、２０２、２０３、２０４の部分再構成を管理する機能を有する。例えば、各部分再構成部２０１、２０２、２０３、２０４が現在の処理に使用されているか等、各部分再構成部の空き状況を管理する。その上で、各部分再構成部が書き換え可能かどうかの判断を行う。再構成管理部２０５はＣＰＵ１０１の指示と、各部分再構成部が書き換え可能かどうかの判断を加味し、各部分再構成部２０１、２０２、２０３、２０４へのコンフィギュレーションデータの書き換えを行う。
【００２１】
エラー検知部２０６は部分再構成が正常に終了しなかった場合のエラーを検知する機能を有する。例えば、部分再構成部２０１の書き換えを実施した際に、なんらかの要因で失敗してしまったときに再構成可能デバイスが出力するエラー信号をモニタし、エラーを検知する。また、当該エラーとは、ＣＲＣ（Cyclic Redundancy Check）エラーも想定されうる。エラー検知部２０６は、エラー信号を検知すると、再構成管理部２０５にエラーを通知する。エラー検知部２０６により、エラーが検知された場合の処理フローについては図４乃至図７を用いて後述する。
【００２２】
＜コンフィグレーションデータ＞
次に、図３を参照して、本実施形態に係る画像処理装置におけるＦＰＧＡ１４０の部分再構成部２０１〜２０４に構成されるコンフィギュレーションデータの格納方法について説明する。
【００２３】
コンフィギュレーション用ＲＯＭ１５０には、部分再構成に必要な複数のコンフィギュレーションデータが格納される。ＰＲ１用のコンフィギュレーションデータ３００は部分再構成部（ＰＲ１）２０１に構成することが可能なコンフィギュレーションデータを表している。図３においては、部分再構成部（ＰＲ１）２０１に構成可能な機能がＡ、Ｂ、Ｃの３つである場合を例にしている。３０１はＰＲ１に機能Ａの回路を構成するためのコンフィギュレーションデータである。同様に３０２はＰＲ１に機能Ｂの回路構成を、３０３はＰＲ１に機能Ｃの回路構成を構成するためのコンフィギュレーションデータを表している。３０４はＰＲ１用のブランクコンフィギュレーションデータである。
【００２４】
ここでブランクコンフィギュレーションデータについて説明する。ブランクコンフィギュレーションデータは部分再構成部を初期状態にするためのコンフィギュレーションデータである。このブランクコンフィギュレーションデータを部分再構成部に書き込むことにより、部分再構成部の回路構成を何も書き込まれていない状態、つまり初期化することが可能である。ただし、部分再構成部が出力ポートを持ち、部分再構成部以外と接続されている場合、その出力値を非アクティブ方向に固定し、外部の回路に影響を与えない構成とするものである。即ち、部分再構成部にブランクコンフィグレーションデータが構成されている場合に、動作されることにより、内部での信号衝突が発生し、貫通電流によりＦＰＧＡ１４０に影響を与えることはない。
【００２５】
図３の説明に戻る。ＰＲ２用のコンフィギュレーションデータ３１０は部分再構成部（ＰＲ２）２０２に構成することが可能なコンフィギュレーションデータを表している。ＰＲ２用のコンフィギュレーションデータ３１０についても、機能Ａ、Ｂ、Ｃの３つの機能のコンフィギュレーションデータを格納しており、部分再構成部（ＰＲ２）２０２には３つの機能を切り替えて構成することが可能である。また、ＰＲ２用のブランクコンフィギュレーションデータ３１４も格納しており、ＰＲ２の初期化が可能である。
【００２６】
また、ＰＲ３用のコンフィギュレーションデータ３２０は部分再構成部（ＰＲ３）２０３に構成することが可能なコンフィギュレーションデータを表している。ＰＲ３用のコンフィギュレーションデータ３２０についても、機能Ａ、Ｂ、Ｃの３つの機能のコンフィギュレーションデータを格納しており、部分再構成部（ＰＲ３）２０３には４つの機能を切り替えて構成することが可能である。また、ＰＲ３用のブランクコンフィギュレーションデータ３２４も格納しており、ＰＲ３の初期化が可能である。
【００２７】
また、ＰＲ４用のコンフィギュレーションデータ３３０は部分再構成部（ＰＲ４）２０４に構成することが可能なコンフィギュレーションデータを表している。ＰＲ４用のコンフィギュレーションデータ３３０についても、機能Ａ、Ｂ、Ｃの３つの機能のコンフィギュレーションデータを格納しており、部分再構成部（ＰＲ４）２０４には３つの機能を切り替えて構成することが可能である。また、ＰＲ４用のブランクコンフィギュレーションデータ３３４も格納しており、ＰＲ４の初期化が可能である。
【００２８】
上述したように、各部分再構成部ごとにコンフィギュレーションデータを用意する必要がある。例えば、機能Ａの回路構成を部分再構成部（ＰＲ１）２０１と部分再構成部（ＰＲ２）２０２に構成するためには、ＰＲ１用の機能Ａ３０１、ＰＲ２用の機能Ａ３１１というように同じ機能を実現することを想定する。このような場合でも、構成場所によって異なるコンフィギュレーションデータを用意しておく必要がある。そのため、各部分再構成領域用のコンフィギュレーションデータを多くもっておけば、各部分再構成領域をフレキシブルに使用可能となるが、コンフィギュレーション用ＲＯＭ１５０に格納されるデータ容量は大きくなってしまう。一方で、機能毎にコンフィギュレーションする部分再構成部の場所を限定すれば、各部分再構成部をフレキシブルに使用できなくなるがコンフィギュレーションＲＯＭの容量を削減することができる。
【００２９】
本実施形態では、ＦＰＧＡ１４０は４つの部分再構成領域を有し、部分再構成領域に構成する機能をＡ、Ｂ、Ｃの３つと、ブランクコンフィギュレーションを有する場合を例に説明する。もちろん、部分再構成の領域を４つであることと、そこに構成する機能を３つに限定した理由は、説明を容易にするためだけであり、限定する意図はない。
【００３０】
＜ジョブ実行の処理手順＞
次に、図４を参照して、本発明の実施形態に係る画像処理装置のジョブ実行の処理手順について説明する。以下で説明する処理は、ＣＰＵ１０１がＲＯＭ１０４に格納された制御プログラムをＲＡＭ１１１に読み出して実行することにより実現される。なお、ＣＰＵ１０１の指示に従って、コンフィグコントローラ１３０が実行する処理も含まれる。
【００３１】
まず、画像処理装置１００はジョブの受信待ち状態となる。Ｓ４０１で、ＣＰＵ１０１は、ジョブを受信したか否かを判定する。ジョブには、コピージョブや、プリントジョブ、ＳＥＮＤジョブ等がある。コピージョブは、スキャナ部１０９によって原稿の画像を読み取って画像データを生成し、画像データに基づく印刷をプリンタ部１０７に実行させるジョブである。プリントジョブは、ネットワークＩ／Ｆ１０２を介して外部装置（ＰＣ等）から印刷データと印刷設定を受け付け、受け付けた印刷データと印刷設定に基づいてプリンタ部１０７に印刷を実行させるジョブである。ＳＥＮＤジョブは、読み取った原稿の画像を、スキャナ部１０９によって原稿の画像を読み取って画像データを生成し、画像データをネットワークＩ／Ｆ１０２を介して外部装置に送信するジョブである。コピージョブやＳＥＮＤジョブの場合、操作部１０３に設けられたスタートキーが押下されたときに、Ｓ４０１で、ＣＰＵ１０１は、ジョブを受信したと判定する。プリントジョブの場合、ネットワークＩ／Ｆ１０２を介して印刷データと設定とを受け付けたときに、Ｓ４０１で、ＣＰＵ１０１は、ジョブを受信したと判定する。ジョブを受信するとＳ４０２へ進む。
【００３２】
Ｓ４０２で、ＣＰＵ１０１は、受信したジョブを実行するにあたり、ＦＰＧＡ１４０に構成する必要がある機能を特定する。例えば受信したジョブ処理のために、機能Ａを実現する回路を部分再構成部に構成する必要がある等を特定する。なお、１つのジョブにおいて複数の機能が必要である場合もありうる。
【００３３】
Ｓ４０３で、ＣＰＵ１０１は、Ｓ４０２で特定したＦＰＧＡ１４０に構成する必要がある機能をＦＰＧＡ１４０の部分再構成部に構成する。Ｓ４０３はＣＰＵ１０１の指示のもとコンフィグコントローラ１３０がコンフィギュレーション用ＲＯＭ１５０から、必要なコンフィギュレーションデータを読み出し、ＦＰＧＡ１４０の部分再構成部に書き込むことにより行われる。Ｓ４０３の部分再構成実行処理の詳細については図５を用いて後述する。
【００３４】
Ｓ４０４で、ＣＰＵ１０１は、Ｓ４０２で特定した部分再構成部に構成する必要がある全ての機能のコンフィギュレーションが成功したか否かを判定する。Ｓ４０４はＣＰＵ１０１の指示のもとコンフィグコントローラ１３０の再構成管理部２０５がエラー検知部２０６の検知結果に基づいて成功か否かを判定する。Ｓ４０２で特定したジョブ実行に必要な全ての機能の部分再構成が正常終了した場合にはＳ４０７へ進み、エラー終了した場合にはＳ４０５へ進む。
【００３５】
Ｓ４０５で、ジョブ実行に必要な機能の部分再構成がエラー終了しているため、コンフィグコントローラ１３０は、ＦＰＧＡ１４０の全面再構成処理を実行する。この全面再構成処理を実行することにより、ＦＰＧＡ１４０の部分再構成部の全てが初期化されることとなる。従って、Ｓ４０５では、予め定められた初期化データを用いて全面再構成が行われる。Ｓ４０５で実行するＦＰＧＡ１４０の全面再構成の詳細な処理手順については図７を用いて後述する。続いて、Ｓ４０６でＦＰＧＡ１４０の全面再構成が正常終了したか否かを判定する。この判定もＣＰＵ１０１の指示に従って、コンフィグコントローラ１３０の再構成管理部２０５がエラー検知部２０６の検知結果に従って成功したか否かを判定する。ＦＰＧＡ１４０の全面再構成が正常終了した場合はＳ４０７へ進み、エラー終了した場合はＳ４０８へ進む。なお、ここでの正常終了とは、Ｓ４０３で失敗した部分再構成の領域についても当該必要な回路構成の再構成が成功したことを示す。つまり、全ての領域において、正常な回路が構成されていることが条件となる。なお、後述するブランクコンフィグデータを用いて再構成された領域があってもよく、ジョブを処理するために必要な回路構成が構成されていればよい。
【００３６】
Ｓ４０８で、ＣＰＵ１０１は、Ｓ４０２で特定した必要な機能が構成できないためジョブを実行できない場合、ＣＰＵ１０１はエラー通知を行う。このエラー通知はＣＰＵ１０１の指示の基、操作部１０３の表示部にエラーの旨を表示し、操作者に電源の再投入等を促す。その後、処理を終了する。
【００３７】
Ｓ４０７で、ＣＰＵ１０１は、受信ジョブを処理するための全ての機能のコンフィギュレーションが完了しているので、受信ジョブの処理を実行する。その後、ジョブの実行が完了すると処理を終了する。
【００３８】
＜部分再構成＞
次に、図５を参照して、上記Ｓ４０３で行われる部分再構成の詳細な処理手順について説明する。以下で説明する処理は、ＣＰＵ１０１がＲＯＭ１０４に格納された制御プログラムをＲＡＭ１１１に読み出して実行することにより実現される。なお、ＣＰＵ１０１の指示に従って、コンフィグコントローラ１３０が実行する処理も含まれる。ここでは、部分再構成部（ＰＲ１）２０１に機能Ａを構成する場合を例に説明する。
【００３９】
Ｓ５０１で、ＣＰＵ１０１は、コンフィギュレーション用ＲＯＭ１５０に格納されているコンフィギュレーションデータの中から、部分再構成部に構成するコンフィギュレーションデータを特定する。例えば部分再構成部（ＰＲ１）２０１に機能Ａの回路を構成する場合、コンフィギュレーション用ＲＯＭ１５０に格納されているコンフィギュレーションデータの中からＰＲ１用機能Ａ３０１を特定する。
【００４０】
Ｓ５０２で、コンフィグコントローラ１３０は、部分再構成を実行する。具体的にはＳ５０１で特定したコンフィギュレーションデータを、書き換えるべき部分再構成部に構成する。続いて、Ｓ５０３で、コンフィグコントローラ１３０は、部分再構成が正常終了したか否かを判定する。この判定は、ＦＰＧＡ１４０が出力する部分再構成の正常終了を表す信号を再構成管理部２０５がモニタする等により行われる。部分再構成が正常終了した場合はＳ５１０に進み、エラーにより正常に終了しなかった場合はＳ５０４へ進む。このエラー終了の判断はＦＰＧＡ１４０が出力する部分再構成がエラー終了したことを表す信号をエラー検知部２０６がモニタし、エラー信号が出力されたことを再構成管理部２０５に通知することにより行われる。
【００４１】
Ｓ５０４で、コンフィグコントローラ１３０は、Ｓ５０２で実行した部分再構成が何らかの要因により失敗しているため、Ｓ５０２で実施した部分再構成の再実行を行う。Ｓ５０５で、コンフィグコントローラ１３０は、Ｓ５０４で実行した部分再構成の再実行が正常終了したか否かを判定する。この判定もＳ５０３と同様に、再構成管理部２０５とエラー検知部２０６がＦＰＧＡ１４０の正常終了、エラー終了を表す信号をモニタすることにより行われる。ここで、部分再構成が正常終了したと判断した場合は、Ｓ５１０へ進み、部分再構成が正常終了しなかったと判定した場合は、即ち、エラー終了した場合はＳ５０６へ進む。なお、部分再構成が正常終了しなかったと判定した場合、Ｓ５０４とＳ５０５のステップを複数回実行するように制御してもよい。
【００４２】
Ｓ５０６で、ＣＰＵ１０１は、Ｓ５０４で実行した部分再構成の再実行が失敗しているため、部分再構成領域（ＰＲ１）２０１には意図しない回路が構成されている可能性がある。Ｓ５０６では、部分再構成の失敗により構成された意図しない回路を削除するために、部分再構成が失敗した領域にブランクコンフィグデータの書き込みを実行する。Ｓ５０６でブランクコンフィグデータの書き込みを実行するのは、Ｓ５０４で実行した部分再構成の失敗により構成された意図しない回路を削除するためである。先述したように、ブランクコンフィグデータは部分再構成部を初期化するためのコンフィギュレーションデータである。また、部分再構成部が出力ポートを持っている場合、出力値を非アクティブの方向に固定するものであり、部分再構成部以外の回路に対しても影響を与えることはない。Ｓ５０６でのブランクコンフィグデータの書き込みが成功した場合、部分再構領域（ＰＲ１）２０１には、意図しない回路が構成されておらず、部分再構成領域（ＰＲ１）２０１以外の回路に対しても影響を与えない構成となる。
【００４３】
Ｓ５０７で、コンフィグコントローラ１３０は、Ｓ５０６で実行した、ブランクコンフィグデータの書き込みが成功したか否かを判定する。この判定もＳ５０３と同様に、再構成管理部２０５とエラー検知部２０６が部分再構成の正常終了、エラー終了を表す信号をモニタすることにより行われる。ここで、ブランクコンフィグデータの書き込みが正常終了したと判定した場合はＳ５０８へ進み、エラー終了した場合は、部分再構成実行のフローを終了し、図４のＳ４０４へ進む。
【００４４】
Ｓ５０８において、Ｓ５０６で実行したブランクコンフィグデータの書き込みが成功しているため、部分再構成領域（ＰＲ１）２０１には意図しない回路は残っていない状態となる。従って、Ｓ５０８で、コンフィグコントローラ１３０は、部分再構成領域を他の領域に変えて、同じ機能の部分再構成を実行する。例えば、部分再構成部（ＰＲ１）２０１に機能Ａの回路を構成しようとした際に失敗した場合には、部分再構成部（ＰＲ２）２０２等に機能Ａの回路の再構成を実施する。このＳ５０８において他の領域に変更して部分再構成を実行する詳細な処理手順については、図６を用いて後述する。
【００４５】
次に、Ｓ５０９で、コンフィグコントローラ１３０は、Ｓ５０８で実行した領域を変更して部分再構成が成功したか否かを判定する。この判定もＳ５０３と同様に、再構成管理部２０５とエラー検知部２０６がＦＰＧＡ１４０の正常終了、エラー終了を表す信号をモニタすることにより行われる。Ｓ５０９において部分再構成が正常終了したと判断した場合はＳ５１０へ進み、エラー終了した場合は部分再構成の処理を終了し、図４のＳ４０４へ進む。
【００４６】
Ｓ５１０で、コンフィグコントローラ１３０は、ジョブの実行に必要な全ての機能の部分再構成が終了したか否かを判定する。ジョブの実行に必要な全ての機能の部分再構成が終了していれば、部分再構成の処理を終了し、図４のＳ４０４へ進む。一方、ジョブ実行に必要な全ての機能の部分再構成が終了していなければ、必要な機能の部分再構成を実行するためＳ５０１に処理を戻す。
【００４７】
＜領域を変更した部分再構成＞
次に、図６を参照して、Ｓ５０８で、他の領域に変更して部分再構成を実行する詳細な処理手順について説明する。以下で説明する処理は、ＣＰＵ１０１がＲＯＭ１０４に格納された制御プログラムをＲＡＭ１１１に読み出して実行することにより実現される。なお、ＣＰＵ１０１の指示に従って、コンフィグコントローラ１３０が実行する処理も含まれる。ここでは、他の領域として部分再構成部（ＰＲ２）２０２に機能Ａを構成する場合を例に説明する。
【００４８】
Ｓ６０１で、再構成管理部２０５は、ＦＰＧＡ１４０の部分再構成部に空いている領域があるか否かを判定する。Ｓ６０１で、ＦＰＧＡ１４０の部分再構成部に空いている領域があった場合はＳ６０２に進み、空いている領域がなかった場合はＳ６０４へ進む。
【００４９】
Ｓ６０２で、ＦＰＧＡ１４０の部分再構成部に空いている領域があるので、コンフィグコントローラ１３０は、Ｓ６０１で特定した空き領域に構成するコンフィグデータを特定する。例えば、部分再構成部（ＰＲ２）が空いていた場合で機能Ａを構成する場合はコンフィギュレーション用ＲＯＭ１５０の中からＰＲ２用機能Ａ３１１を特定する。続いて、Ｓ６０３で、コンフィグコントローラ１３０は、Ｓ６０２で特定したコンフィギュレーションデータを用いて、Ｓ６０１で特定した空き領域に対して部分再構成を実行する。
【００５０】
一方、Ｓ６０４で、ＦＰＧＡ１４０の部分再構成部に空いている領域がなかったため、再構成管理部２０５は、ＦＰＧＡ１４０の部分再構成部に書き換え可能な領域があるか否かを判定する。ここで、書き換え可能な領域とは、すでに部分再構成部に何らかのコンフィギュレーションデータが書き込まれているが、現在の処理に使用されていない領域のことを示している。また、Ｓ４０１で受信したジョブを処理するために使用しない領域であることも必要である。Ｓ６０４で、ＦＰＧＡ１４０の部分再構成部に書き換え可能な領域があった場合、Ｓ６０５へ進む。Ｓ６０４において、部分再構成部に書き換え可能な領域がなかった場合、領域を変更して部分再構成の処理を終了し、図５のＳ５０９へ進む。
【００５１】
Ｓ６０５で、ＦＰＧＡ１４０の部分再構成部に書き換え可能な領域があるので、コンフィグコントローラ１３０は、Ｓ６０４で特定した書き換え可能な領域に対して部分再構成を実行し、処理を終了して図５のＳ５０９へ進む。
【００５２】
＜全面再構成＞
次に、図７を参照して、Ｓ４０５で全面再構成を実行する詳細な処理手順について説明する。以下で説明する処理は、ＣＰＵ１０１がＲＯＭ１０４に格納された制御プログラムをＲＡＭ１１１に読み出して実行することにより実現される。なお、ＣＰＵ１０１の指示に従って、コンフィグコントローラ１３０が実行する処理も含まれる。
【００５３】
Ｓ７０１で、コンフィグコントローラ１３０は、部分再構成部に構成されているコンフィグデータの種類を記憶する。ここで、部分再構成部に構成されているコンフィグデータの種類を記憶するのは、全面再構成後に初期化された部分再構成部に対して、必要に応じて部分再構成を実行し、ＦＰＧＡ１４０の当該部分を全面再構成前と同じ状態にするためである。なお、ここでの全面再構成による初期化は、全ての回路構成が初期化されるため上述のような処理が必要となる。
【００５４】
Ｓ７０２で、コンフィグコントローラ１３０は、所定の初期化データを用いて、ＦＰＧＡ１４０の全面再構成の実行を行う。続いて、Ｓ７０３で、コンフィグコントローラ１３０は、Ｓ７０１で記憶した全面再構成前の状態と同じになるように必要に応じて部分再構成の実行を行う。ここでは、例えば、Ｓ４０３で部分再構成を行ってエラー終了した以外の部分再構成部が対象となりうる。以上で、全面再構成の実行を終了し、図４のＳ４０６へと進む。
【００５５】
以上説明したように、本実施形態に係る画像処理装置は、ＦＰＧＡ１４０の少なくとも一部の領域を再構成する部分再構成処理が失敗したことを検知すると、当該領域に対応する初期化データを用いて、当該領域を再構成させる。これにより、本実施形態によれば、意図しない回路構成が動作することにより、内部での信号衝突が発生し、貫通電流によるデバイス故障が引き起こされることを回避することができる。
【００５６】
＜その他の実施形態＞
上述した実施形態では、画像データを処理する画像処理装置１００を例に説明したが、画像データ以外のテキストデータや音声データを処理するデータ処理装置に適用してもよい。
【００５７】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５８】
１００：画像処理装置、１０１：ＣＰＵ、１０４：ＲＯＭ、１１１：ＲＡＭ、１２０：システムバス、１２１：画像バス、１３０：コンフィグコントローラ、１４０：ＦＰＧＡ、１５０：コンフィギュレーション用ＲＯＭ
【図１】
2017118450.tif 000003
【図２】
2017118450.tif 000004
【図３】
2017118450.tif 000005
【図４】
2017118450.tif 000006
【図５】
2017118450.tif 000007
【図６】
2017118450.tif 000008
【図７】
2017118450.tif 000009