(57)【要約】【課題】  動的部分再構成回路を有し、再構成可能な回路を部分再構成しながら使用する画像処理装置において、回路構成情報の情報保持部への転送が完了していても、部分再構成部が他処理により使用中の場合には転送済みの回路構成情報のミスヒットが発生する。ミスヒットが発生することにより、画像処理装置の能率が劣化してしまう。【解決手段】  未使用の再構成回路部の回路構成情報の転送と、他処理の処理終了待機とを並行して実行し、早く完了して使用できるようになった回路構成情報を使用して回路の再構成を行う。【選択図】  図２
2016103755.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
回路構成の複数の部分再構成部を有する再構成可能な回路を有し、
前記再構成可能な回路の再構成を制御する制御手段と、
前記再構成可能な回路に構成する回路構成情報を記録する情報保持部と、
前記情報保持部に記録する前記回路構成情報を入手する情報入手手段と、
部分再構成部が使用中であるかどうかを判断する第１の判断手段と、
特定の部分再構成部が使用中で前記情報保持部に記録されている前記回路構成情報を書き込むことができない場合には、前記情報入手手段から前記情報保持部へ、使用可能な部分再構成部の回路構成情報を転送する転送手段と、
前記情報入手手段から前記情報保持部へ前記回路構成情報の転送が完了したかどうかを判断する第２の判断手段と、を備え、
前記制御手段は、前記第２の判断手段により前記部分再構成部を使用中の他処理が終了するよりも、転送の完了が早いと判断された場合には、転送された回路構成情報を用いて前記使用可能な部分再構成部の再構成を行い、
前記第１の判断手段により前記部分再構成部を使用中の他処理が、前記転送の完了よりも早く終了したと判断された場合には、前記情報保持部に格納されている回路構成情報を用いて、前記部分再構成部の再構成を行うことを特徴とする情報処理装置。
【請求項２】
前記転送された回路構成情報を用いて、前記使用可能な部分再構成部の再構成を行った場合は、不要となった前記情報保持部に記録されている回路構成情報を情報保持部から削除することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１の判断手段により、他処理が早く終了したと判断された場合には、前記情報入手手段からの回路構成情報の転送を中断することを特徴とする請求項１乃至２のいずれか１項に記載の情報処理装置。
【請求項４】
前記第１の判断手段は、前記特定の部分再構成部が使用中の場合には、その終了時間を予測する第１の予測手段と、
前記情報入手手段から前記情報保持部へ回路構成情報を転送する時間を予測する第２の予測手段と、を備え、
前記特定の部分再構成部が使用中で前記情報保持部に格納されている回路構成情報を書き込むことができない場合に、
前記第２の予測手段の予測時間が前記第１の予測手段の予測時間より遅い場合には、前記情報入手手段から前記情報保持部へ回路構成情報を転送せずに、前記特定の部分再構成部が使用中の他処理が終了するまで待機することを特徴とする請求項１乃至３いずれか１項に記載の情報処理装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の情報処理装置を備えた画像処理装置。
【請求項６】
情報処理装置の制御方法であって、
再構成可能な回路の再構成を制御する制御工程と、
回路構成情報を記録する情報保持部に、前記回路構成情報を入手する情報入手工程と、
部分再構成部が使用中であるかどうかを判断する第１の判断工程と、
特定の部分再構成部が使用中で前記情報保持部に記録されている前記回路構成情報を書き込むことができない場合には、前記情報保持部へ使用可能な部分再構成部の回路構成情報を転送する転送工程と、
前記情報入手工程において、前記情報保持部へ前記回路構成情報の転送が完了したかどうかを判断する第２の判断工程と、を備え、
前記制御工程は、前記第２の判断工程において、前記部分再構成部を使用中の他処理が終了するよりも、転送の完了が早いと判断された場合には、転送された回路構成情報を用いて前記使用可能な部分再構成部の再構成を行い、
前記第１の判断工程において、前記部分再構成部を使用中の他処理が、前記転送の完了よりも早く終了したと判断された場合には、前記情報保持部に格納されている回路構成情報を用いて、前記部分再構成部の再構成を行うことを特徴とする情報処理装置の制御方法。
【請求項７】
請求項１乃至４のいずれか１項に記載の情報処理装置の各手段をコンピュータで実現するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その情報処理装置を備え画像データを扱う画像処理装置、その制御方法、プログラムに関する。
【背景技術】
【０００２】
内部の論理回路構成を変更可能なPLD（Programmable Logic Device）やFPGA（Field Programmable Gate Array）などの再構成可能な回路が良く知られている。一般的に、PLDやFPGAは起動時にROM等の不揮発性メモリへ格納された回路構成情報を内部の揮発性メモリであるコンフィギュレーションメモリへ書き込むことにより内部論理ブロックの切り替えを行う。また、コンフィギュレーションメモリ内の情報は電源切断時にクリアされるため、電源投入時には再度、回路構成情報をコンフィギュレーションメモリに書き込むことで再構成を行う必要がある。このように、一度だけハードウェアリソースの構成を行う方法を静的再構成という。一方で、回路が動作中に回路構成を変更することが可能なものも開発されてきており、動作中に論理回路を変更する方法を動的再構成という。
【０００３】
また、FPGAには、チップ全体ではなく特定の領域だけを書き換えることが可能なものがあり、このような書き換えを部分再構成という。特に、動作中の他の回路を停止しない状態で部分再構成を行うことを動的部分再構成という。
動的部分再構成では、動的再構成時にコンフィギュレーションメモリ全体を書き換えるのではなく、コンフィギュレーションメモリ領域の一部のみを書き換えることで、FPGA内部の論理ブロックの部分的な再構成を実現することが可能となる。
【０００４】
このような動的部分再構成技術を用いることで、一つの領域に複数の回路を切り替えて実装することが可能となるため、ハードウェアリソースの時分割多重化を行い論理ブロックで実現する機能を変更することができる。その結果、少ないハードウェアリソースで用途に合わせた様々な機能をハードウェアによる高い演算性能を保ったままで柔軟に実現することが可能となる。また、この動的部分再構成を用いることで、FPGA内部の一部の論理回路のみを書き換えることで機能が実現できるようになり、従来のFPGA全体を再構成する場合にくらべて再構成にかかる時間を短縮することが可能になる。（例えば、特許文献１参照。）
【０００５】
論理回路の再構成にかかる時間を短縮する技術として、その他の技術も開示されている。）特許文献２では、画像処理中に次に処理する可能性の高い処理を予測し、予測した処理を実現するためのコンフィギュレーションデータ（以下「回路構成情報」という。）を高速なメモリに先行して転送するという技術が開示されている。これをプリロードと呼ぶ。プリロードにより、画像処理中の回路構成情報の転送時間を短縮でき、画像処理速度の高速化を図ることができる（例えば、特許文献２参照。）。
【０００６】
部分再構成技術とプリロード技術を組み合わせることにより、従来のFPGA再構成にくらべて再構成にかかる時間を大幅に削減することができ、より細分化した時分割多重を図ることが可能となる。
しかしながら、機能単位の細分化を図ることは、同時に、必要となる回路構成情報数の増大につながる。その結果、プリロードされた回路構成情報のミスヒット率が増大してしまう。なお、ここで言うミスヒットとは、必要となる回路構成情報が転送されていない、若しくは、転送されている特定の部分再構成部用の回路構成情報が、該当領域が現在使用中のために使用できない場合のことである。
このプリロードされた回路構成情報のミスヒット率が増大することは、画像処理の能率の劣化につながってしまう。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開2001-320271号公報
【特許文献２】特開2012-234337号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したように、再構成可能な回路を部分再構成しながら使用する構成において、情報保持部に記録されている回路構成情報が利用できなかった場合、能率が劣化してしまうという課題がある。
例えば、ある機能の処理を開始したい場合、その機能の特定部分再構成部用の回路構成情報がプリロード（転送）されていても、該当する領域が他の処理に使用されていると、その領域を再構成することができずに処理が停止してしまう。このように、ある機能の処理用の回路構成情報が転送済みであっても、その機能の処理用である回路構成情報がどの部分再構成部のものかによって、ミスヒットとなってしまう場合がある。
本発明は、このような問題に鑑みてなされたものであり、動的部分再構成が可能な画像処理装置において、転送済み回路構成情報のミスヒットが発生した場合の処理フローを定義する。それにより、ミスヒットが発生した場合においても、能率の劣化を可能な限り抑える制御を実行可能とすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、回路構成の複数の部分再構成部を有する再構成可能な回路を有し、前記再構成可能な回路の再構成を制御する制御手段と、前記再構成可能な回路に構成する回路構成情報を記録する情報保持部と、前記情報保持部に記録する前記回路構成情報を入手する情報入手手段と、部分再構成部が使用中であるかどうかを判断する第１の判断手段と、特定の部分再構成部が使用中で前記情報保持部に記録されている前記回路構成情報を書き込むことができない場合には、前記情報入手手段から前記情報保持部へ、使用可能な部分再構成部の回路構成情報を転送する転送手段と、前記情報入手手段から前記情報保持部へ前記回路構成情報の転送が完了したかどうかを判断する第２の判断手段と、を備え、前記第２の判断手段により、前記部分再構成部を使用中の他処理が終了するよりも、転送の完了が早いと判断された場合には、転送された回路構成情報を用いて前記使用可能な部分再構成部の再構成を行い、前記第１の判断手段により、前記部分再構成部を使用中の他処理が、前記転送の完了よりも早く終了したと判断された場合には、前記情報保持部に格納されている回路構成情報を用いて、前記部分再構成部の再構成を行うことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、再構成可能な回路を有する画像処理装置において、再構成可能な回路を部分再構成しながら使用する際、回路情報保持部に転送された回路構成情報のミスヒット時に能率の劣化を可能な限り抑える制御が実行可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の画像処理装置の構成を示すブロック図。
【図２】動的部分再構成に関わる構成を示すブロック図。
【図３】再構成部に構成される回路情報の格納方法を示す図。
【図４】情報保持部への回路情報の格納方法を示す図。
【図５】機能実行処理制御に関するフローチャート。
【図６】機能実行処理制御の効果を示すタイムチャート。
【図７】実施例２における時間予測のためのテーブル示す図。
【図８】機能実行処理制御に関するフローチャート。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を用いて説明する。以下では、画像処理装置を実施例として取り上げるが、本発明の技術思想を逸脱しない範囲で、部分再構成制御が可能な情報処理装置であれば、どのようなものでも良い。
【実施例１】
【００１３】
［画像処理装置の構成］
図１は、本発明の実施形態に関わる画像処理装置の装置構成を説明するブロック図である。本実施形態の画像処理装置100は、画像処理装置100を使用するユーザが各種の操作を行うための操作部103と、操作部103からの指示に従い画像情報を読み取るスキャナ部109と、画像データを用紙に印刷するプリンタ部107とを有する。スキャナ部109は、スキャナ部109を制御する図示しないCPUや原稿読取を行うための図示しない照明ランプや走査ミラーなどを有する。プリンタ部107は、プリンタ部107の制御を行う図示しないCPUや画像形成や定着を行うための図示しない感光体ドラムや定着器を有する。
【００１４】
また、画像処理装置100は、画像処理装置100の動作を統括的に制御するCPU101を備え、画像処理装置の各ユニットを制御するための制御ソフトウェアを実行する。また、画像処理装置100は、CPU101が実行するプログラムが格納されているROM104を有する。また、画像処理装置100は、画像処理データをスプールするためと、画像処理装置100で使用する全回路構成情報を格納するためのHDD116を有する。
【００１５】
また、画像処理装置100は、CPU101が動作するためのシステムワークメモリであり、かつ画像データを一時記憶するための画像メモリでもあり、かつ回路構成情報を一時保持するための情報保持部であるRAM111を有する。回路構成情報をアクセス速度の遅いHDD116からアクセス速度の速いRAM111へ事前に複製して一時的に情報保持しておくことで、RAM111から回路構成情報を高速に読み出すことが可能になる。このような方法をプリロードと呼ぶ。なお、プリロードに使用する高速メモリは、システムのワークメモリであるRAM111に限られるものではない。その他のプリロードメモリとしては、FPGA内部のブロックRAMや、DRP（Dynamic Reconfigurable Processor）等で用いられるような、複数BANKを持つ専用のプリロードメモリ等がある。また、画像処理装置100は、RAM111と、RAM111への書き込み、読み出し動作を制御するメモリコントローラ110を有する。メモリコントローラ110は、システムバス120及び画像バス121に接続され、RAM111へのアクセスを制御する。
【００１６】
画像処理装置100は、再構成可能な回路デバイスとして画像処理回路等を構成するFPGA140を有する。本実施例では再構成可能な回路デバイスとしてFPGAを例に説明しているが、FPGA以外の再構成可能な回路デバイスが接続される構成であってもよい。
画像処理装置100は、CPU101の制御の下、FPGAの回路構成（コンフィギュレーション）を制御するコンフィグコントローラ130を有する。
FPGA140は、動的書き換え可能かつ部分書き換え可能なものである。すなわち、FPGA140の再構成部の一部に構成された回路が動作している間に、その回路が占める部分とは重ならない別の部分に別の回路を再構成することができる。
【００１７】
また、画像処理装置100は、スキャナ部109から画像データが入力されるスキャナI/F108と、プリンタへ画像データを出力するプリンタ I/F106とを有する。FPGA140及びスキャナ I/F108、プリンタ I/F106は、処理される画像データを転送するための画像バス121に接続される。
また、画像処理装置100は、ネットワーク I/F102を介し、ネットワーク上の図示しない汎用コンピュータと通信（送受信）を行う。また、画像処理装置100は、USB I/F114を介し、画像処理装置100と接続された図示しない汎用コンピュータと通信（送受信）を行う。また、画像処理装置100は、FAX I/F118を介し、公衆回線網と接続し、図示しない他の画像処理装置やファクシミリ装置と通信（送受信）を行う。画像処理装置100は、CPU101が実行するプログラム、ROM104への書き込み、読み出し動作を制御するROM I/F112を有する。また、画像処理装置100は、CPU101、ネットワークI/F102、操作部103、ROM I/F112、USB I/F114、HDD I/F115、FAX I/F118、コンフィグコントローラ130、FPGA140を相互に接続するシステムバス120を有する。CPU101は、FPGA140と、スキャナ I/F108、プリンタ I/F106のパラメータ設定を、システムバス120を介して行う。
【００１８】
また、画像処理装置100は、FPGA140に接続され、図示しないセンサ等の拡張モジュールを増設するための拡張 I/F117を有する。なお、本実施例においては、回路構成情報はHDD116に格納されているが、格納先は画像処理装置100内部に限定されるものではなく、例えば、ネットワークを介して外部のサーバから随時ダウンロードすることにより入手する構成でもよい。
【００１９】
［部分再構成に関する構成］
次に、図２を用いて、本実施例にかかる画像処理装置における部分再構成に関する構成について説明する。図２は画像処理装置100の部分再構成に特に関わる構成を示したブロック図である。
CPU101、コンフィグコントローラ130、RAM111、HDD116、FPGA140については図１を用いて前述したとおりである。
【００２０】
FPGA140は内部に、部分再構成部(PR1)201、部分再構成部(PR2)202、部分再構成部(PR3)203、部分再構成部(PR4)204をさらに持つ。各部分再構成部は動的に画像処理回路等を書き換えることが可能である。本実施例においては、画像処理機能を持つ回路を部分再構成部に構成する例について説明をしているが、もちろん画像処理機能以外の回路を部分再構成部に構成可能であることは言うまでもない。例えば、拡張I/F117に接続されたセンサ等に関わる処理を部分再構成部に構成して機能を実現することができる。
【００２１】
コンフィグコントローラ130は、再構成管理部205とError検知部206を有している。再構成管理部205は各部分再構成部201、202、203、204の部分再構成を管理する機能を持つ。例えば、各部分再構成部201、202、203、204が現在の処理に使用されているか等、各部分再構成部の空き状況を管理する。その上で、各部分再構成部が書き換え可能かどうかの判断を行う。
【００２２】
CPU101は、再構成管理部205に管理された情報により、各部分再構成部が書き換え可能かどうかの判断を加味し、コンフィグ転送部207へ回路構成情報の転送開始を指示する。コンフィグ転送部207はCPU101の指示のもと、必要となる回路構成情報をRAM111から読み出し、各部分再構成部201、202、203、204へ回路構成情報を書き込む。ここで、RAM111へ格納されている回路構成情報は、CPU101によってあらかじめHDD116から複製して格納されているものとする。
【００２３】
Error検知部206は部分再構成が正常に終了しなかった場合のErrorを検知する機能を持つ。例えば、部分再構成部201の書き換えを実施した際に、なんらかの要因で失敗してしまった時に再構成可能な回路デバイスが出力するError信号をモニタする。Error検知部206はこのError信号を検知した場合、再構成管理部205に通知する機能を持つ。
【００２４】
［回路構成情報の構成］
次に、図３を用いて本実施形態に係る画像処理装置におけるFPGA140の部分再構成部201〜204に構成される回路構成情報の格納方法について説明する。
図３はHDD116に格納されるFPGA140の各部分再構成部201〜204に構成する回路構成情報の例である。
HDD116には部分再構成に必要な複数個の回路構成情報が格納される。PR1用の回路構成情報300は部分再構成部(PR1)201に構成することが可能な回路構成情報を表している。図３においては、部分再構成部(PR1)201に構成可能な機能がA、B、C、D、E、Fの６つである場合を例にしている。301はPR1に機能Aの回路を構成するための回路構成情報である。同様に302はPR1に機能Bの回路構成を、303はPR1に機能Cの回路構成、304はPR1に機能Dの回路構成を構成するための回路構成情報を表している。同様に、305、306はPR1にそれぞれ機能E、機能Fの回路構成を構成する為の回路構成情報を表している。
【００２５】
また、PR2用の回路構成情報310は部分再構成部(PR2)202に構成することが可能な回路構成情報を表している。PR2用の回路構成情報310についても、機能A、B、C、D、E、Fの６つの機能の回路構成情報を格納しており、部分再構成部(PR2)202には6つの機能を切り替えて構成することが可能である。
また、PR3用の回路構成情報320は部分再構成部(PR3)203に構成することが可能な回路構成情報を表している。PR3用の回路構成情報320についても、機能A、B、C、D、E、Fの6つの機能の回路構成情報を格納しており、部分再構成部(PR3)203には６つの機能を切り替えて構成することが可能である。
また、PR4用の回路構成情報330は部分再構成部(PR4)204に構成することが可能な回路構成情報を表している。PR4用の回路構成情報330についても、機能A、B、C、D、E、Fの6つの機能の回路構成情報を格納しており、部分再構成部(PR4)204には６つの機能を切り替えて構成することが可能である。
【００２６】
上述したように、各部分再構成部ごとに回路構成情報を用意する必要がある。例えば、機能Aの回路構成を部分再構成部（PR1）201と部分再構成部(PR2)202に構成するためには、PR1用機能A301、PR2用機能A311が必要になる。このように、同じ機能を実現する場合においても、構成場所によって異なる回路構成情報を用意しておく必要がある。
そのため、各部分再構成部の回路構成情報を多くもっておけば、各部分再構成部をフレキシブルに使用可能となるが、HDD116に格納されるデータ容量は大きくなってしまう。
【００２７】
本実施例では、FPGA140は４つの部分再構成部を持ち、部分再構成部に構成する機能をA、B、C、D、E、Fの６つの場合を例に説明する。もちろん、部分再構成の領域と、そこに構成する機能を６つに限定した理由は、説明をわかりやすくするためだけであり、６つに限定される必要はない。
【００２８】
［プリロードされた回路構成情報の構成］
図４はRAM111へプリロードされる回路構成情報の例を説明する図である。
前述したとおり、部分再構成部の回路構成情報が多い場合、回路構成情報の総容量は大きくなってしまう。また、RAM111はシステムワークメモリとしてや、画像データの一時記憶領域としても使用されるため、回路構成情報のプリロードに用いることのできる領域はある程度限られる。なお、プリロードメモリとしてRAM111以外を用いた場合（例えばDRPの専用プリロードメモリ）でも、同様にプリロード用の領域が限られてしまう。
【００２９】
よって、RAM111へはHDD116に格納されるすべての回路構成情報をプリロードすることはできない。本実施例では、RAM111へプリロードすることのできる回路構成情報が６つに限られている。例として、図４に示すとおり、RAM111へは機能A、B、C、D、E、Fについて、それぞれPR1、2、3、4、1、2用の回路構成情報がプリロードされている。なお、図４では機能A301と機能E305について、同じ部分再構成部（PR1）用の回路構成情報がプリロードされている。同様に、機能B312と機能F316について、同じ部分再構成部（PR2）用の回路構成情報がプリロードされている。
【００３０】
このように、部分再構成部の回路構成情報が多くなると、プリロードメモリの容量が限られてしまうことから、重複した部分再構成部用の回路構成情報をプリロードせざるを得なくなる場合が生じる。これにより、各機能A〜F用の回路構成情報はプリロードされているのにもかかわらず、例えば機能Aの処理と機能Eの処理が重複すると、プリロードされた回路構成情報の衝突が生じてしまう。これをプリロードのミスヒットと呼ぶ。なお、プリロードのミスヒットとは、上で述べた状況だけでなく、ある機能用の回路構成情報が部分再構成部に関わらずプリロードされていない状況のことも指す。
【００３１】
［機能実行処理制御フロー］
図５は本発明の実施形態に係る画像処理装置の機能実行処理制御を表すフローチャートである。
ある機能の処理を開始したいときにプリロードのミスヒットが生じると、その機能を開始することができないために、能率の劣化につながってしまう。ミスヒットが生じた場合に能率劣化をできる限り抑えるための処理について図５を用いて詳細に説明する。
【００３２】
図５のフローチャートでは、操作部103やネットワーク I/F102に接続された図示しない汎用コンピュータ等から、ある機能Xの処理開始要求がなされた場合についての処理フローについて示す。なお、本フローは特定の機能Xについて限定されるものではなく、また、プリロードされた回路構成情報が図４の場合に限定されるものでもないことは言うまでもない。なお、図５のフローチャートの各手順はCPU101により実行される。
【００３３】
＜S501＞  まず、S501において機能Xが部分再構成部PR1〜4に書き込み済みであるかどうかを判断する。
−−機能XがPRに無い場合、S502へ移行する。
＜S502＞  S502では、機能XがRAM111にプリロードされているかどうかの判断を行う。
−−機能Xの回路構成情報がプリロード済みである場合には、S503へ移行する。
＜S503＞  S503では、プリロードされている機能Xの回路構成情報が、FPGA140の、どのPR用であるかを特定する。
＜S504＞  S504では、S503で特定されたPRが現在、他の処理によって使用中であるかどうかの判断を行う。
−−使用中でない場合にはS505へ移行する。
＜S505＞  S505は、プリロード済みである機能XをS503で特定されたPRへ書き込みを行う。
＜S506＞  S506では、FPGA140へ書き込まれた機能Xに対して、必要な設定等を行い、処理を実行する。
−−S504において、S503で特定されたPRが使用中である場合は、S507へ移行する。
【００３４】
＜S507＞  S507では、部分再構成部PR1〜4について、空きPRを検索する。なお、空きPRとは、回路構成情報が何も書き込まれていない、もしくは、ある機能が書き込まれているが、処理が終了しているPRのことを指す。
−−空きPRが無い場合には、機能Xを書き込むことは出来ないために、空きPRが見つかるまで待機を行う。
＜S508＞  S508では、S507で見つかった空きPR用機能XをHDD116からRAM111へ再ロードを行う。
なお、再ロードとは、機能XがRAM111へプリロードされている状態で、新たに他のPR用機能XをHDD116からRAM111へプリロードすることを指す。また、すでにプリロードされていた機能Xと再ロードした機能Xについて、それぞれ異なるPR用である場合は、両方の回路構成情報をRAM111に保持し、上書きはしない。
＜S509＞  S509では、S503で特定されたPR、すなわち、あらかじめプリロード済みの機能Xを書き込むことのできるPRが解放されたかどうかの判断を行う。
−−PRが解放されていない場合、S510へ移行する。
−−PRが解放された場合には、S514へ移行する。
＜S510＞  S510では、S508において開始された再ロードが完了したかどうかの判断（ロード完了判断）を行う。
−−再ロードが完了していない場合はS509へ戻る。
−−再ロードが完了している場合には、S511へ移行する。
【００３５】
＜S511＞  S511では、RAM111へ再ロードした機能Xを、S507で特定されたPRへ書込みを行う。
＜S512＞  S512では、FPGA140へ書き込まれた機能Xに対して必要な設定等を行い、処理を実行する。
＜S513＞  S513では、不要となったプリロード済みの機能XをRAM111から削除する。
なお、S512の時点では、RAM111には処理開始前からRAM111にプリロードされていた機能Xと、S508において再ロードを行った、空きPR用の機能Xの両方がロードされている状態である。一つの機能の機能Xに対して、複数の部分再構成部用機能XをRAM111にプリロードしておくことは、RAM111の容量を逼迫することにつながる。よって、不要になった、すなわち、FPGA140の部分再構成部に書き込まれなかった方の機能Xは削除する。
【００３６】
＜S514＞  S514では、あらかじめRAM111へプリロードされていた機能Xを、S503で特定されたPRへ書込みを行う。
＜S515＞  S515では、FPGA140へ書き込まれた機能Xに対して必要な設定等を行い、処理を実行する。
＜S516＞  S516では、S508で開始された再ロードの中断処理を行うことで、前述したとおり、機能XがRAM111に重複してプリロードされることを防ぐ。
なお、本制御フローでは、再ロード中断処理をS516のタイミングで行っているが、中断処理を行うタイミングはS516のタイミングに限定されるものではない。CPU101において、S508の再ロード開始処理を別プロセスとして並行して実行している場合には、再ロードの中断処理はS514の前に行っても良い。
【００３７】
−−S502において、機能XがRAM111へプリロードされていないと判断された場合は、S517へ移行する。
＜S517＞  S517では、S507と同様に、部分再構成部PR1〜4について、空きPRを検索する。
−−空きPRが無い場合には、いずれのPR用の機能Xが次に使用できるかどうかの判断ができないため、空きPRが見つかるまで待機を行う。
＜S518＞  S518では、S517で見つかった空きPR用機能XをHDD116からRAM111へロードを行う。
＜S519＞  S519ではS518で開始したロード処理が完了するまで待機を行う。
−−S519において、ロード処理が完了したと判断されるS520へ移行する。
＜S520＞  S520では、S518でRAM111へロードした機能Xを、S517で見つかったPRへ書込みを行う。
＜S521＞  S521では、FPGA140へ書き込まれた機能Xに対して必要な設定等を行い、処理を実行する。
−−S501において、機能XがPRに書き込み済みであると判断された場合には、S522へ移行する。
【００３８】
＜S522＞  S522では、書き込まれていた機能Xに対して必要な設定等を行い、処理を実行する。
本制御フローでは、プリロードのミスヒットが生じた場合、特に、必要な機能の回路構成情報がプリロード済みであるにもかかわらず、別の処理が部分再構成部を使用中のために処理を開始できない場合の制御が肝要となる。S508〜S510において、空きPR用の回路構成情報の再ロードと、他処理が使用中の部分再構成部の解放待ちを並行して実行する。これにより、早く終了した方の回路構成情報を使用することができ、待ち時間を削減することが可能となる。
【００３９】
［効果を表すタイミングチャート］
（a）再ロードが他処理終了より早く終了した場合
図６は図５に示した本発明の実施形態に係る画像処理装置の機能実行処理制御フローの効果について表すタイムチャートである。図６（a）は、S508〜S510において、空きPR用の回路構成情報の再ロードが、S503で特定されたPRで実行中の他処理の終了よりも早く終了した場合のタイムチャートである。
この場合、再ロードが完了した時点で、再ロードされた回路構成情報を用いてFPGA140へ書き込みを行い、処理を開始することができる。これにより、他処理の終了を待たずに処理開始することが可能となる。
図６（a）に示したケースは、他処理の処理内容が、大量のデータを処理する時など、処理の時間が非常に長い場合に有効である。
【００４０】
（b）他処理終了が再ロードより早く終了した場合
一方、図６（b）に示すように、S508〜S510において、他処理の終了が再ロードよりも早く終了する場合も当然発生する。この場合、あらかじめプリロードされていた回路構成情報を用い、解放されたPRへ書き込みを行って、処理開始することができる。よって、回路構成情報の再ロード処理完了を待たずに処理開始することが可能となる。
図６（b）に示したケースは、他処理が短い時間で終了する時や、再ロードに時間がかかる場合、特にネットワークを介して回路構成情報をロードする場合などのロードに時間がかかる場合に有効である。
以上の制御を行うことにより、動的部分再構成が可能な画像処理装置において、プリロードがミスヒットした場合でも、能率劣化を可能な限り抑えることが可能となる。
【実施例２】
【００４１】
実施例１では、プリロードのミスヒットが生じた場合、特に、プリロード済みであるにもかかわらず、他処理が部分再構成部を使用中のために再構成が実行できない場合に、再ロードと他処理終了待ちを並行して実行する制御フローを説明した。
実施例２では、再ロードを必ず実行するのではなく、再ロードにかかる時間と、他処理が終了する時間について、それぞれ予測を行い、他処理が終了する時間が再ロードにかかる時間より早い場合には再ロードを行わないという制御を実行する。このことは、再ロードのためのCPU101の処理負荷軽減や再ロードのためにCPU101が使用するメモリを削減するために重要となる。特に、回路構成情報がネットワークを介して接続された外部サーバ等から随時ダウンロードする必要があるなどの場合には、ダウンロードするための認証処理等が必要となることから、CPU101の処理負荷は無視できなくなる。実施例２の制御はこのような場合に特に有効である。以下、実施例２について、実施例１との差に着目して図を用いながら説明する。
【００４２】
［時間予測のためのテーブル］
図７は、各部分再構成部（PR1〜4）で実行されている処理の終了時間、及び再ロード時間を予測するためのテーブルを説明する図である。部分再構成部管理テーブル701は各部分再構成部の使用状態を管理して記録する。再ロード時間予測テーブル702は再ロードにかかる時間を予測して記録する。なお、部分再構成部管理テーブル701、再ロード時間予測テーブル702は、CPU101を用いて管理される。
【００４３】
部分再構成部管理テーブル701は、部分再構成部が使用中である場合にはジョブの種類、ジョブ種類に対応したある機能Xの処理能力[n/s]、処理データ量[n]、処理が開始されてからの経過時間[s]を記録している。CPU101は各PRについて使用中である場合には部分再構成部管理テーブル701の処理能力、処理データ量、開始からの経過時間を用いて終了時間を予測することができる。終了時間は（処理終了時間＝処理データ量/処理能力−開始からの経過時間）で求められる。
図７では例として、部分再構成部PR1、PR2が、それぞれプリントジョブ、拡張 I/F処理に使用されており、部分再構成部PR3、PR4は未使用である場合について示している。なお、プリントジョブとは、外部のプリンタドライバから送付された印刷データを、プリンタ部107を用いて印刷するジョブである。また、拡張 I/F処理とは、拡張 I/F117に接続された、例えば各種センサ等にかかわる処理である。なお、本実施例での終了時間の算出方法は飽くまで一例であり、この限りではない。
【００４４】
また、一部の処理によっては、処理データ量の算出が困難である場合がある。例えば、SENDジョブなどが該当する。SENDジョブとは、スキャナ部109で読み取られた原稿を画像データとしてネットワーク I/F102を介して外部の図示しない汎用コンピュータへ送信するジョブである。SENDジョブの場合にはユーザが原稿を何枚読み取らせるかは、実際にスキャナ部109で読み取られるまではわからない場合がある。このようなジョブの場合には、処理データ量にはジョブごとに定数を用いることで終了時間の予測を行うことができる。
【００４５】
再ロード時間予測テーブル702は、回路構成情報をRAM111へ再ロードするために必要な時間の予測値が記録されている。再ロード時間の予測は、回路構成情報の情報入手手段ごとに異なる。HDD116からRAM111へ回路構成情報を転送する場合、HDD I/F115（SATA等）の理論値を用いることができる。また、ネットワークを介してサーバからRAM111へ回路構成情報を転送する場合には、理論値を用いた予測が困難なことから、過去の実績の平均値を用いるなどの方法で再ロード時間の予測を行うことができる。なお、各PRの大きさが異なる場合には、必要となる回路構成情報のサイズも異なることから、PRごとに再ロード予測時間が異なる場合もある。また、同じPRであっても、機能によっては回路構成情報のサイズが異なる場合があり、機能ごとで再ロード予測時間が異なる場合がある。
【００４６】
［予測値を用いた機能実行制御フロー］
図８は、本発明の実施形態に係る画像処理装置の時間予測値を用いた機能実行制御フローを表すフローチャートである。なお、図８のフローチャートの各手順はCPU101により実行される。
本制御フローは、実施例1の図５の制御フローにおいて、時間予測値を用いた制御フローS801、S802、S803、S804が追加されている。その他の部分については図５の制御フローと同一である。
【００４７】
＜S801＞  S801では、S503で特定されたPRについて、部分再構成部管理テーブル701を用いて他処理が終了する時間の予測値（他処理終了時間予測値）を求める。
＜S802＞  S802では、再ロード時間予測テーブル702を用いてS503で特定されたPRへ機能Xを再ロードするのにかかる時間の予測値（転送時間予測値）を求める。
＜S803＞  S803では、S801、S802で求めたそれぞれの予測値の比較を行い、再ロード時間と現在実行中の他処理の、どちらが早く終わるかを判断する。
−−再ロードが、他処理の終了より早く終わると予測される場合、S508へ移行する。
S508以降の処理は図５のフローと同様である。
−−S803において、再ロードが、他処理の終了より遅く終わると予測される場合、S804へ移行する。
＜S804＞  S804では、S503で特定されたPRが解放されるまで待機処理を行う。
−−S503で特定されたPRが解放されるとS514へ移行する。
S514以降の処理は図５のフローと同様である。
【００４８】
以上の制御を行うことにより、動的部分再構成が可能な画像処理装置において、プリロードがミスヒットした場合でも、CPU101の負荷を抑えつつ、かつ能率劣化を可能な限り抑えることが可能となる。
実施例2における本制御を行うことにより、図５の制御と比較してCPU101の負荷を抑えることができ、無駄な再ロード処理を削減することが可能となる。
【００４９】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【符号の説明】
【００５０】
100  ・・・画像処理装置
101  ・・・CPU
104  ・・・ROM
111  ・・・RAM
120  ・・・システムバス
121  ・・・画像バス
130  ・・・コンフィグコントローラ
140  ・・・FPGA
【図１】
2016103755.tif 000003
【図２】
2016103755.tif 000004
【図３】
2016103755.tif 000005
【図４】
2016103755.tif 000006
【図５】
2016103755.tif 000007
【図６】
2016103755.tif 000008
【図７】
2016103755.tif 000009
【図８】
2016103755.tif 000010