(57)【要約】      （修正有）【課題】動的部分再構成回路を有し、再構成可能回路を部分再構成しながら使用する画像処理装置において、複数の部分再構成部の再構成を行う場合の再構成時間を削減する。【解決手段】部分再構成を行う単位が同一の複数の部分再構成部を再構成する場合に、各部分再構成部に対応した回路構成情報から、複数の部分再構成部に対して再構成が可能な回路構成情報を生成する手段を有し、生成した回路構成情報を基に部分再構成を実施する。【選択図】図７
2016170629.tif 000002
【特許請求の範囲】
【請求項１】
構成メモリに記憶した回路構成データを書き換えることにより、所定の再構成単位で再構成可能な再構成可能回路を有する画像処理装置であって、
再構成対象である再構成領域ごとに、前記再構成領域の中に構成される回路に応じた回路構成データを格納する格納手段と、
前記再構成単位の中に複数の再構成領域が含まれる場合、それぞれの再構成領域の中に構成される回路に応じた前記回路構成データを含む書き換え用データを合成する合成手段と、
前記合成手段による合成後の書き換え用データにより前記構成メモリの回路構成データを前記再構成単位で書き換える書き換え手段と
を有することを特徴とする画像処理装置。
【請求項２】
前記書き換え用データには、前記再構成単位に含まれた前記再構成領域を選択的にクリアするためのクリア用データと、前記再構成単位に含まれた前記再構成領域を選択的に書き換える回路構成データとを含み、
前記書き換え手段は、前記クリア用データで前記再構成単位に含まれた前記再構成領域を選択的にクリアし、前記回路構成データで前記再構成単位に含まれた前記再構成領域を選択的に書き換えることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記再構成単位は、前記再構成領域と、再構成の対象ではない固定領域とを含み、
前記クリア用データは、前記構成メモリの前記再構成単位に対して所定の論理操作を適用することにより前記再構成領域を選択的にクリアし、かつ前記固定領域を選択的に残すためのデータであり、
前記回路構成データは、前記構成メモリの前記再構成単位に対して所定の論理操作を適用することにより前記再構成領域を選択的に書き換え、前記固定領域を選択的に残すためのデータであることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記再構成単位は、前記再構成可能回路を所定幅の帯状に分割した領域に対応することを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項５】
前記再構成可能回路はジョブの処理のために使用され、
前記合成手段は、前記再構成単位の中に複数の再構成領域が含まれる場合であっても、当該複数の再構成領域に既に構成されている回路がひとつのジョブにより使用されるものではない場合には、前記回路構成データの合成を行わないことを特徴とする請求項１乃至４のいずれか一項に記載の画像処理装置。
【請求項６】
前記クリア用データは、前記再構成領域に対応する値が０、かつ前記固定領域に対応する値が１のデータであり、
前記回路構成データは、前記再構成領域に対応する値が、構成する回路に対応する値、かつ前記固定領域に対応する値が０のデータであり、
前記合成手段は、前記複数の再構成領域それぞれの前記クリア用データの論理積に相当する演算により前記クリア用データを合成し、前記複数の再構成領域それぞれの前記回路構成データの論理和に相当する演算により前記回路構成データを合成し、
前記書き換え手段は、前記構成メモリの前記再構成単位の回路構成データを、該再構成単位のデータと前記クリア用データとの論理積に相当する値で書き換えたのち、前記構成メモリの前記再構成単位の回路構成データを、該再構成単位のデータと前記回路構成データとの論理和に相当する値で書き換えることを特徴とする請求項３に記載の画像処理装置。
【請求項７】
前記再構成可能回路は、画像データを処理する画像処理回路の少なくとも一部を含むことを特徴とする請求項１乃至６のいずれか一項に記載の画像処理装置。
【請求項８】
前記画像処理装置はさらにプリンタ部を有し、
前記プリンタ部は、前記画像処理回路により処理された画像データを出力することを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記画像処理装置はさらにスキャナ部と通信部の少なくとのいずれかを有し、
前記画像処理回路により、前記スキャナ部または前記通信部により入力された画像データを処理することを特徴とする請求項７に記載の画像処理装置。
【請求項１０】
請求項１乃至６のいずれか一項に記載の画像処理装置としてコンピュータを機能させるためのプログラム。
【請求項１１】
構成メモリに記憶した回路構成データを書き換えることにより、所定の再構成単位で再構成可能な再構成可能回路を有する画像処理装置の制御方法であって、
前記画像処理装置は再構成対象である再構成領域ごとに、前記再構成領域の中に構成される回路に応じた回路構成データを格納する格納手段を有し、
前記制御方法は、
前記再構成単位の中に複数の再構成領域が含まれる場合、それぞれの再構成領域の中に構成される回路に応じた前記回路構成データを含む書き換え用データを合成する合成工程と、
前記合成工程による合成後の書き換え用データにより前記構成メモリの回路構成データを前記再構成単位で書き換える書き換え工程と
を有することを特徴とする画像処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、その制御方法、プログラムに関し、特に再構成可能回路を用いた画像処理装置、その制御方法、プログラムに関する。
【背景技術】
【０００２】
内部の論理回路構成を変更可能なPLD（Programmable Logic Device）やFPGA（Field Programmable Gate Array）などの再構成可能回路が良く知られている。一般的に、PLDやFPGAは起動時にROM等の不揮発性メモリへ格納された論理回路構成情報を内部の揮発性メモリであるコンフィギュレーションメモリ（構成メモリ）へ書き込むことにより内部論理ブロックの切り替えを行う。また、ROM等の不揮発メモリに格納された論理回路構成情報をコンフィギュレーションメモリへの書き込む前にDRAM等の高速読み出し可能なメモリに展開しておくことで、コンフィギュレーションメモリへの書き込み時間を短縮することもある。
【０００３】
FPGAには、チップ全体ではなく特定の領域だけを書き換えることが可能なものがあり、このような書き換えを部分再構成という。特に、動作中の他の回路を停止しない状態で部分再構成を行うことを動的部分再構成という。動的部分再構成では、動的再構成時にコンフィギュレーションメモリ全体を書き換えるのではなく、コンフィギュレーションメモリ領域の一部のみを書き換えることで、FPGA内部の論理ブロックの部分的な再構成を実現することが可能となる。この動的部分再構成を用いた技術として、パイプライン構成の処理において、回路構成情報を不揮発性メモリから順次読み出し、パイプライン先頭の部分回路から順に再構成可能回路上に再構成してデータ処理する手法が開示されている。（例えば、特許文献１参照。）
近年のMFP（Multi Function Printer）等の画像処理装置は、ユーザからの要求に応じた複数の処理（コピージョブ, プリントジョブ, SENDジョブ等）を選択可能であり、各処理に応じた画像処理はハードウェアまたはソフトウェアにより実現される。この画像処理装置の画像処理ハードウェアとしてFPGA等の再構成可能回路を適用した場合、上述した様な機能毎に回路構成を動的かつ部分的に切り替えることが可能となる。その結果少ないハードウェアリソースで様々な画像処理機能が実現可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2011-186981号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
動的部分再構成を行う際に、複数の部分再構成領域について論理回路を再構成する場合、各部分再構成領域に対して、論理回路情報をクリアしてから新たな論理回路構成情報をセットする必要がある。そのため、複数の部分再構成領域の再構成を行う場合には、再構成を行う部分再構成領域数分の時間が掛かってしまう。
【０００６】
本発明は、上述したような課題に鑑みてなされたものであり、動的部分再構成が可能な画像処理装置において、フレシキブルな書き換え性能はそのままに、複数の部分再構成部の論理回路を再構成する場合の動的部分再構成に掛かる時間を短縮することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明は以下の構成を有する。
【０００８】
構成メモリに記憶した回路構成データを書き換えることにより、所定の再構成単位で再構成可能な再構成可能回路を有する画像処理装置であって、
再構成対象である再構成領域ごとに、前記再構成領域の中に構成される回路に応じた回路構成データを格納する格納手段と、
前記再構成単位の中に複数の再構成領域が含まれる場合、それぞれの再構成領域の中に構成される回路に応じた前記回路構成データを含む書き換え用データを合成する合成手段と、
前記合成手段による合成後の書き換え用データにより前記構成メモリの回路構成データを前記再構成単位で書き換える書き換え手段とを有する。
【発明の効果】
【０００９】
本発明によれば、動的部分再構成が可能な画像処理装置において、複数の部分再構成領域に対して同時に論理回路構成の切り替えを行うことが可能となり、複数領域の部分再構成に掛かる時間を短縮することが可能となる。また、予め用意しておくコンフィグデータは従来と変わらず、その記憶のための資源を増大させることもない。
【図面の簡単な説明】
【００１０】
【図１】画像処理装置の構成の一例を示すブロック図である。
【図２】画像処理装置における、動的部分再構成に関わる構成を示すブロック図である。
【図３】部分再構成部に構成される回路情報の格納方法の一例を示す図である。
【図４】部分再構成部の設計例を示す図である。
【図５】コンフィグデータの構造について詳細に説明するための図である。
【図６】RAMに格納されるコンフィグデータの格納イメージを示す図である
【図７】ジョブ実行処理制御を示すフローチャートである。
【図８】複数の部分再構成部に対するコンフィグデータの生成処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を用いて説明する。
[画像処理装置の構成]
図１は、本発明の実施形態に関わる画像処理装置の装置構成を説明するブロック図である。本実施形態の画像処理装置１００は、画像処理装置１００を使用するユーザが各種の操作を行うための操作部１０３と、操作部１０３からの指示に従い画像情報を読み取るスキャナ部１０９と、画像データを用紙に印刷するプリンタ部１０７とを有する。スキャナ部１０９は、スキャナ部１０９を制御する図示しないCPUや原稿読取を行うための図示しない照明ランプや走査ミラーなどを有する。プリンタ部１０７、プリンタ部１０７の制御を行う図示しないCPUや画像形成や定着を行うための図示しない感光体ドラムや定着器を有する。操作部１０３は操作部Ｉ／Ｆ１１３を介してバス１２０に接続されている。
【００１２】
また、画像処理装置１００は、画像処理装置１００の動作を統括的に制御するCPU１０１を備え、画像処理装置の各ユニットを制御するための制御ソフトウェアを実行する。また、画像処理装置１００は、CPU１０１が実行するプログラムが格納されているROM１０４を有する。また、画像処理装置１００は、画像処理データのスプールと画像処理装置１００で使用する全コンフィグデータを格納するためのHDDI/F１１５を介して接続されるHDD１１６を有する。コンフィグデータは、回路構成データあるいは黄色構成情報とも呼ばれる。また、画像処理装置１００は、CPU１０１が動作するためのシステムワークメモリであり、かつ画像データを一時記憶するための画像メモリでもあり、かつコンフィグデータを一時保持する為のRAM１１１を有する。コンフィグデータをアクセス速度の遅いHDD１１６からアクセス速度の速いRAM１１１へ事前に複製して一時保持しておくことで、RAM１１１からコンフィグデータを高速に読み出すことが可能になる。このような方法をプリロードと呼ぶ。なお、プリロードに使用する高速メモリは、システムのワークメモリであるRAM１１１に限られるものではない。その他のプリロードメモリとしては、FPGA内部のブロックRAMや、DRP（Dynamic Reconfigurable Processor）等で用いられるような、複数BANKを持つ専用のプリロードメモリ等がある。また、画像処理装置１００は、RAM１１１と、RAM１１１への書き込み、読み出し動作を制御するメモリコントローラ１１０を有する。メモリコントローラ１１０は、システムバス１２０および画像バス１２１に接続され、RAM１１１へのアクセスを制御する。
画像処理装置１００は、再構成可能デバイスとして画像処理回路等を構成するFPGA１４０を有する。本実施例では再構成可能デバイスとしてFPGAを例に説明しているが、FPGA以外の再構成可能デバイスが接続される構成であってもよい。
画像処理装置１００は、CPU１０１の制御の基、FPGAの回路構成（コンフィギュレーション）を制御するコンフィグコントローラ１３０を有する。
【００１３】
FPGA１４０は、動的書き換え可能かつ部分書き換え可能なものである。すなわち、FPGA１４０の再構成部の一部に構成された回路が動作している間に、その回路が占める部分とは重ならない別の部分に別の回路を再構成することができる。
【００１４】
また、画像処理装置１００は、スキャナ部１０９から画像データが入力されるスキャナI/F１０８と、プリンタ部１０７へ画像データを出力するプリンタI/F１０６とを有する。FPGA１４０及びスキャナI/F１０８、プリンタI/F１０６は、処理される画像データを転送するための画像バス１２１に接続される。
【００１５】
また、画像処理装置１００は、通信部としてネットワークI/F１０２を介し、ネットワーク上の図示しない汎用コンピュータと通信（送受信）を行う。また、画像処理装置１００は、USBI/F１１４を介し、画像処理装置１００と接続された図示しない汎用コンピュータと通信（送受信）を行う。画像処理装置１００は、CPU１０１が実行するプログラム、ROM１０４への書き込み、読み出し動作を制御するROM I/F１１２を有する。また、画像処理装置１００は、CPU１０１、ネットワークI/F１０２、操作部１０３、ROM I/F１１２、コンフィグコントローラ１３０、FPGA１４０を相互に接続するシステムバス１２０を有する。CPU１０１は、FPGA１４０と、スキャナI/F１０８、プリンタI/F１０６のパラメータ設定を、システムバス１２０を介して行う。
【００１６】
なお、本実施例においては、コンフィグデータはHDD１１６に格納されており、画像処理装置１００が処理を開始する前に、CPU１０１によってRAM１１１へあらかじめ複製して格納されるものとする。また、コンフィグデータの格納先は画像処理装置１００内部に限定されるものではなく、例えば、ネットワークを介して外部のサーバから随時ダウンロードしてRAM１１１に格納される構成でもよい。
【００１７】
[部分再構成に関する構成]
次に、図２を用いて、本実施例にかかる画像処理装置における部分再構成に関する構成について説明する。図２は画像処理装置１００の部分再構成に特に関わる構成を示したブロック図である。
【００１８】
CPU１０１、コンフィグコントローラ１３０、RAM１１１、HDD１１６、FPGA１４０については図１を用いて前述した通りである。FPGA１４０は内部に、部分再構成部(PR1)２０１、部分再構成部(PR2)２０２、部分再構成部(PR3)２０３、部分再構成部(PR4)２０４をさらに持つ。各部分再構成部は動的に画像処理回路等を書き換えることが可能である。動的な書き換えとはたとえば、書き換え対象の部分再構成部を、それ以外の回路を動作させつつ書き換えることができることを意味する。
【００１９】
本実施例においては、画像処理機能を持つ回路を部分再構成部に構成する例について説明をしているが、もちろん画像処理機能以外の回路を部分再構成部に構成可能であることは言うまでもない。
【００２０】
コンフィグコントローラ１３０は、各部分再構成部２０１、２０２、２０３、２０４の部分再構成を管理する機能を持つ。例えば、各部分再構成部２０１、２０２、２０３、２０４が現在の処理に使用されているか等、各部分再構成部の空き状況を管理する。その上で、各部分再構成部が書き換え可能かどうかの判断を行う。CPU１０１は、コンフィグコントローラ１３０に管理された情報により、各部分再構成部が書き換え可能かどうかの判断を参照して、コンフィグコントローラ１３０へコンフィグデータ転送開始を指示する。コンフィグコントローラ１３０はCPU１０１の指示のもと、必要となるコンフィグデータをRAM１１１から読み出し、各部分再構成部２０１、２０２、２０３、２０４へコンフィグデータを書き込む。
【００２１】
[コンフィグデータの構成]
次に、図３を用いてFPGA１４０の部分再構成部２０１〜２０４に構成されるコンフィグデータの一般的な格納方法について説明する。図３はHDD１１６に格納されるFPGA１４０の各部分再構成部２０１〜２０４に構成するコンフィグデータの例である。
【００２２】
HDD１１６には部分再構成に必要な複数個のコンフィグデータが格納される。PR１用のコンフィグデータ３００は部分再構成部(PR1)２０１に構成することが可能なコンフィグデータを表している。図３においては、部分再構成部(PR1)２０１に構成可能な機能がA、B、C、Dの４つである場合を例にしている。コンフィグデータ３０１はPR1に機能Aの回路を構成するためのコンフィグデータである。同様にコンフィグデータ３０２はPR1に機能Bの回路構成を、コンフィグデータ３０３はPR1に機能Cの回路構成を、コンフィグデータ３０４はPR１に機能Dの回路構成を構成するためのコンフィグデータを表している。
【００２３】
また、PR２用のコンフィグデータ３１０は部分再構成部(PR２)２０２に構成することが可能なコンフィグデータを表している。PR2用のコンフィグデータ３１０についても、機能A、B、C、Dの４つの機能のコンフィグデータを格納しており、部分再構成部(PR2)２０２には４つの機能を切り替えて構成することが可能である。
【００２４】
また、PR３用のコンフィグデータ３２０は部分再構成部(PR３)２０３に構成することが可能なコンフィグデータを表している。PR３用のコンフィグデータ３２０についても、機能A、B、C、Dの４つの機能のコンフィグデータを格納しており、部分再構成部(PR３)２０３には４つの機能を切り替えて構成することが可能である。
【００２５】
また、PR４用のコンフィグデータ３３０は部分再構成部(PR４)２０４に構成することが可能なコンフィグデータを表している。PR４用のコンフィグデータ３３０についても、機能A、B、C、Dの４つの機能のコンフィグデータを格納しており、部分再構成部(PR４)２０４には４つの機能を切り替えて構成することが可能である。
【００２６】
上述したように、各部分再構成部ごとにコンフィグデータを用意する必要がある。例えば、機能Aの回路構成を部分再構成部（PR1）２０１と部分再構成部(PR2)２０２に構成するためには、PR1用の機能A３０１、PR2用の機能B３０２というように同じ機能を実現する場合においても、構成場所によって異なるコンフィグデータを用意しておく必要がある。
【００２７】
上記の説明においては、FPGA１４０は４つの部分再構成部を持ち、部分再構成部に構成する機能をA、B、C、Dの４つの場合を例に説明した。部分再構成の領域数と、そこに構成する機能を４つに限定した理由は、説明をわかりやすくするためだけであり、部分再構成の領域数とそこに構成する機能数を４つに限定される必要はもちろんない。
【００２８】
[部分再構成用コンフィグデータの構成説明]
本実施形態においては、部分再構成に掛かる時間の短縮すること、および部分再構成用のコンフィグデータ容量を削減することを目的としている。そこで、本実施形態に関わる手法を説明するにあたり、部分再構成用のコンフィグデータの構成について図４および図５を用いて詳細に説明する。
【００２９】
まず、図４を用いてFPGA１４０の部分再構成部の設計例について説明する。図４は本実施形態に関わる画像処理装置のFPGA内の部分再構成部の設計例を示す図である。一般に、FPGAの部分再構成を実施する場合、FPGA内部のどの領域を部分再構成部とするかを決定しておく。具体的には部分再構成部の大きさ、部分再構成部の数、部分再構成部をFPGAのどの領域にレイアウトするかを決定する。上述した部分再構成部の大きさ、部分再構成部の数、部分再構成部のレイアウトに関しては自由に設計することが可能である。以降の説明においては図４の部分再構成部(PR1)２０１、部分再構成部(PR2)２０２、部分再構成部(PR3)２０３、および部分再構成部(PR4)２０４で示す部分を部分再構成する領域とし、それ以外の部分再構成しない領域を固定部（あるいは固定領域）４１０と呼ぶ。
【００３０】
また、部分再構成部(PR1)２０１と部分再構成部(PR2)２０２は同一カラム（列）に位置し、部分再構成部(PR3)２０３と部分再構成部(PR4)２０４は同一カラム（列）に位置するものとする。すでに前述しているように部分再構成を行う場合、部分再構成用のコンフィグデータを持つ必要がある。部分再構成を行う際には、コンフィグデータをRAMから読み出し、FPGA内部のコンフィギュレーションメモリに書き込むことにより、部分再構成部の回路構成が再構成される。ただし、部分再構成を行う場合には、自由な単位でFPGA内部のコンフィギュレーションメモリを書き換え可能なわけではなく、コンフィギュレーションメモリの書き換えを行うための最小単位が存在するデバイスがある。本例においては、カラムは再構成可能回路であるＦＰＧＡを所定幅の帯状に分割した領域に対応している。
【００３１】
例えば、FPGAのカラム（列）が書き換えの最小単位（再構成単位とも呼ぶ。）のデバイスもあれば、ロウ（行）や、特定の正方形領域が書き換えの最小単位のデバイスも存在する。本実施形態においては、カラム（列）が書き換えを行うための最小単位であり、カラム（列）方向に8個に分割された最小書き換え単位４００（４００aから４００h）で構成されるFPGAとする。すなわち、このFPGAの再構成は、カラム４００aから４００hの各々あるいはそれらの組み合わせに含まれた部分再構成する領域を対象として行われる。
【００３２】
FPGAのカラム（列）４００が書き換え最小単位の場合、部分再構成部２０１〜２０４の回路構成を決定するコンフィギュレーションメモリ部だけを書き換えることはできない。部分再構成部(PR1)２０１または部分再構成部(PR2)２０２を書き換える場合には、部分再構成部(PR1)２０１および部分再構成部(PR2)２０２と同一カラム（列）にある最小書き換え単位４００ｂ、４００ｃ、４００ｄで構成されるPR1PR2再構成領域４０１を書き換える必要がある。つまり、部分再構成部(PR1)２０１の回路構成を書き換える場合には、部分再構成部(PR1)２０１の回路情報だけでなく、PR1PR2再構成領域４０１内の固定部４１０の該当するPR1PR2再構成領域固定部４１１と部分再構成部(PR2)２０２との回路構成を決定する、コンフィギュレーションメモリ部へ書き込むデータも必要となる。
【００３３】
図５(a)は、部分再構成部(PR1)２０１のみを再構成するために必要なコンフィグデータの構造について詳細に説明するための図である。ここでは部分再構成を行うためのコンフィギュレーションメモリ（構成メモリ）の書き換え最小単位がカラム（列）である場合を例に説明を行う。
【００３４】
コンフィグデータ５００は、部分再構成部(PR1)２０１に特定の機能を有する回路を構成するために必要なコンフィグデータであり、以降、PR1用コンフィグデータ５００と呼ぶ。
【００３５】
コンフィグデータ５０１はPR1用コンフィグデータ５００の一部であり、以降、PR1用論理積コンフィグデータ５０１と呼ぶ。PR1用論理積コンフィグデータ５０１は、再構成対象の部分再構成部に対応するコンフィギュレーションメモリ（構成メモリ）を選択的にクリアするためのクリア用データである。コンフィグデータ５０２はPR1用論理積コンフィグデータ５０１の一部であり、部分再構成部(PR1)２０１の回路構成を決定するコンフィギュレーションメモリ部に書き込むデータを示しており、以降、PR1領域内用の論理積のためのデータであるという意味でPR1内論理積コンフィグデータ５０２と呼ぶ。PR1内論理積コンフィグデータ５０２は、PR1に相当し、論理積操作によりPR1を０でクリアするためのデータである。コンフィグデータ５０３はPR1用論理積コンフィグデータ５０１の一部であり、部分再構成部(PR1)２０１以外の回路構成を決定するコンフィギュレーションメモリ部に書き込むデータを示しており、以降、PR1外論理積コンフィグデータ５０３と呼ぶ。PR1外論理積コンフィグデータ５０３は、PR1PR2再構成領域４０１のうちからPR1を除いた領域に相当し、論理積操作によっても当該領域をそのまま残すためのデータである。
【００３６】
コンフィグデータ５１１はPR1用コンフィグデータ５００の一部であり、以降、PR1用論理和コンフィグデータ５１１と呼ぶ。PR1用論理和コンフィグデータ５１１は、再構成対象の部分再構成部に対応するコンフィギュレーションメモリ（構成メモリ）を選択的に書き換えるための回路構成データである。コンフィグデータ５１２はPR1用論理和コンフィグデータ５１１の一部であり、部分再構成部(PR1)２０１の回路構成を決定するコンフィギュレーションメモリ部に書き込むデータを示しており、以降、PR1内論理和コンフィグデータ５１２と呼ぶ。PR1内論理和コンフィグデータ５１２は、PR1に相当し、論理和操作によりPR1に再構成される新たなコンフィグデータである。コンフィグデータ５１３はPR1用論理和コンフィグデータ５１１の一部であり、部分再構成部(PR1)２０１の回路構成を決定するコンフィギュレーションメモリ部に書き込むデータを示しており、以降、PR1外論理和コンフィグデータ５１３と呼ぶ。PR1外論理和コンフィグデータ５１３は、PR1PR2再構成領域４０１のうちからPR1を除いた領域に相当し、論理和操作によっても当該領域をそのまま残すためのデータである。
【００３７】
上述したPR1用論理積コンフィグデータ５０１とPR1用論理和コンフィグデータ５１１をFPGAに送信することにより部分再構成部(PR1)２０１の再構成が行われる。
【００３８】
以下に部分再構成の動作を説明する。まず、PR1用論理積コンフィグデータ５０１と、PR1PR2再構成領域４０１の回路構成を決定するコンフィギュレーションメモリ部にすでに書き込まれているデータとの論理積をとり、論理積をとったデータがコンフィギュレーションメモリに書き込まれる。これにより、部分再構成部(PR1)２０１の回路構成を決定するコンフィギュレーションメモリ部のデータのみが0にクリアされ、部分再構成部(PR1)２０１以外の領域の回路構成を決定するコンフィギュレーションメモリにはすでに書き込まれていたデータと同じデータを書き込むことになり、回路構成は変更されることはない。
【００３９】
次に、PR1用論理和コンフィグデータ５１１と、PR1PR2再構成領域４０１の回路構成を決定するコンフィギュレーションメモリ部にすでに書き込まれているデータとの論理和をとり、論理和をとったデータがコンフィギュレーションメモリに書き込まれる。これにより、部分再構成部(PR1)２０１には所望の回路構成が書き込まれ、部分再構成部(PR1)２０１以外の領域の回路構成を決定するコンフィギュレーションメモリにはすでに書き込まれていたデータと同じデータを書き込むことになり、回路構成は変更されることはない。
【００４０】
上述した手順により、部分再構成部(PR1)２０１以外の領域の回路動作を止めることなく部分再構成部(PR1)２０１のみの回路構成を書き換えることが可能となる。
【００４１】
また、図５(b)は本発明の実施形態に関わる画像処理装置における、部分再構成部(PR2)２０２を再構成するために必要なコンフィグデータの構造について詳細に説明するための図である。図５(a)で説明した手順と同様に、PR2用論理積コンフィグデータ５２１と、PR2用論理和コンフィグデータ５３１を順次コンフィギュレーションメモリに書き込むことで部分再構成部(PR2)２０２のみの部分再構成が可能である。
【００４２】
つまり、部分再構成部(PR1)２０１と部分再構成部(PR2)２０２の部分再構成を行う場合には、図５(a)および図５(b)を用いて説明したように、PR1用論理積コンフィグデータ５０１、PR1用論理和コンフィグデータ５１１、PR2用論理積コンフィグデータ５２１、およびPR2用論理和コンフィグデータ５３１の計4回のコンフィグデータを書き込む必要があった。
【００４３】
図５(c)は、本実施形態に関わる部分再構成部(PR1)２０１と部分再構成部(PR2)２０２を同時に書き換えるためのPR1PR2用コンフィグデータ５４０の構成について説明するための図である。
【００４４】
PR1PR2用コンフィグデータ５４０は、PR1PR2用論理積コンフィグデータ５４１とPR1PR2用論理和コンフィグデータ５５１で構成される。
【００４５】
PR1PR2用論理積コンフィグデータ５４１は、部分再構成部(PR1)２０１の回路構成を決定するコンフィギュレーションメモリ部のデータを0にクリアするためのコンフィグデータであるPR1用論理積コンフィグデータ５０１と、部分再構成部(PR2)２０２の回路構成を決定するコンフィギュレーションメモリ部のデータを0にクリアするためのコンフィグデータであるPR2用論理積コンフィグデータ５２１との論理積により生成される。つまり、PR1PR2用論理積コンフィグデータ５４１は、部分再構成部(PR1)２０１と部分再構成部(PR2)２０２の両方の回路構成を決定するコンフィギュレーションメモリ部のデータのみを0にクリアすることができる。また、PR1PR2用論理積コンフィグデータ５４１は、コンフィギュレーションメモリ部にすでに書き込まれているデータと論理積を取ることで回路構成をクリアするためのコンフィグデータ同士の論理積から生成されるため、コンフィグデータ内のビットデータが意味する順番が変わることはない。
【００４６】
PR1PR2用論理積コンフィグデータ５５１は、部分再構成部(PR1)２０１の回路構成を決定するコンフィギュレーションメモリ部のデータに所望の回路構成をセットするためのコンフィグデータであるPR1用論理和コンフィグデータ５１１と、部分再構成部(PR2)２０２の回路構成を決定するコンフィギュレーションメモリ部のデータに所望の回路構成をセットするためのコンフィグデータであるPR2用論理和コンフィグデータ５３１との論理和により生成される。つまり、PR1PR2用論理積コンフィグデータ５４１は、部分再構成部(PR1)２０１と部分再構成部(PR2)２０２の両方の回路構成を決定するコンフィギュレーションメモリ部のデータを所望の回路構成に書き換えることができる。また、PR1PR2用論理和コンフィグデータ５５１は、コンフィギュレーションメモリ部にすでに書き込まれているデータと論理和を取ることで回路構成をセットするためのコンフィグデータ同士の論理和から生成されるため、コンフィグデータ内のビットデータが意味する順番が変わることはない。このようにPR1PR2用コンフィグデータ５４０は、PR1用コンフィグデータ５００とPR2用コンフィグデータ５２０とを合成した合成後のコンフィグデータである。
【００４７】
PR1PR2用論理積コンフィグデータ５４１とPR1PR2用論理和コンフィグデータ５５１とを用いることにより、部分再構成部(PR1)２０１と部分再構成部(PR2)２０２以外の領域の回路動作を止めることなく、部分再構成部(PR1)２０１と部分再構成部(PR2)２０２を同時に部分再構成することが可能である。
【００４８】
図４および図５においては、部分再構成部が２つの場合を例に説明を行ったが、部分再構成の数を２つに限定しているわけではなく、部分再構成部を２つ以上持つことはもちろん可能であり、２つに限定されるものではない。
【００４９】
なお、コンフィグデータは、構成メモリのカラム単位の書き換えに用いられるデータであることから、書き換え用データとも呼ぶ。また、論理積コンフィグデータは再構成対象である部分再構成部すなわち再構成領域のクリアに用いられることからクリア用データとも呼ぶ。また、論理和コンフィグデータは再構成領域の回路構成データを構成するために用いられることから、単に回路構成データとも呼ぶ。
【００５０】
図６は、本発明の実施形態に関わる画像処理装置における、RAM１１１に格納される回路情報の格納イメージを示す図である。RAM111には、ハードディスク116から読み出されたコンフィグデータが一時的にロードされ、再構成に用いられる。
【００５１】
コンフィグデータ６０１は部分再構成部(PR1)２０１に機能Aを有する回路を構成するために必要なコンフィグデータであり、RAM１１１のアドレス0x0000_0000~0x0000_1FFFまでに格納されている。また、PR1用コンフィグデータ(機能A)６０１は、図５(a)で説明したPR1用論理積コンフィグデータ５０１とPR1用論理積コンフィグデータ５１１とを含み、それぞれ0x0000_0100と0x0000_0200のアドレスから開始される領域に格納されている。
【００５２】
コンフィグデータ６０２〜６０４は、部分再構成部(PR1)２０１に機能B〜機能Dを有する回路を構成するために必要なコンフィグデータであり、機能Aと同様に各機能に応じたPR1領域内用論理積コンフィグデータとPR1領域外用論理和コンフィグデータとを含む
また、コンフィグデータ６１１〜６１４は、部分再構成部(PR2)２０２に機能A〜機能Dを有する回路を構成するために必要なコンフィグデータである。本実施の形態に関わる、図５(b)で説明したPR2用論理積コンフィグデータ５２１とPR2用論理和コンフィグデータ５３１は、PR2用コンフィグデータ(機能B)６１２の一部である。
【００５３】
コンフィグデータ６０１〜６１４までは、ハードディスク１１６に格納されたデータをRAM１１１にロードしたデータである。これに対してコンフィグデータ６１２は、コンフィグデータ６０１とコンフィグデータ６１２とから、図５(c)の要領で合成された、合成後のデータである。RAM１１１のアドレス0x1000_000~0x1000_1FFFまでは、部分再構成部(PR1)２０１と部分再構成部(PR2)２０２を同時に部分再構成する場合に使用するコンフィグデータ６１２を格納する領域である。本領域には図５(c)で説明したPR1用コンフィグデータおよびPR2用コンフィグデータから生成されたPR1PR2用コンフィグデータ５４０が格納される。PR1PR2用コンフィグデータ５４０は、図５(c)で説明したPR1PR2用論理積コンフィグデータ５４１とPR1PR2用論理積コンフィグデータ５５１とを含み、それぞれ0x1000_0100と0x1000_0200のアドレスから開始される領域に格納されている。
【００５４】
図６においては、部分再構成部(PR1)２０１および部分再構成部(PR2)２０２に構成可能な機能がA、B、C、Dの４つである場合を例にしているが、５つ以上の機能がある場合でも本発明は適用可能である。
【００５５】
[部分再構成実施時のフローの説明]
図７は、本発明の実施形態に関わる画像処理装置のジョブ実行処理制御を示すフローチャートである。なお、図７のフローチャートの各手順はCPU１０１およびコンフィグコントローラ１３０により実行される。
【００５６】
本フローチャートを用いて本発明の実施形態に関わる部分再構成のフローを説明する。まず、ステップＳ７０１において、画像処理装置１００はジョブの受信待ちとなる。ステップＳ７０１において画像処理装置１００がジョブを受信した場合、ステップＳ７０２に進む。
【００５７】
ステップＳ７０２において、CPU１０１は受信したジョブを実行するにあたり、FPGA１４０に回路を構成する必要がある機能およびその領域を特定する。例えば、受信したジョブ処理のために、部分再構成部(PR1)２０１に機能Aを構成し、部分再構成部(PR2)２０２に機能Bを構成する必要がある等を特定する。なおこのとき、複数の機能を構成するならば、それら機能を構成する複数の部分再構成部が、可能であれば同一カラムを共有するように、複数の部分再構成部を決定しても良い。
【００５８】
ステップＳ７０３において、CPU１０１はステップＳ７０２で特定したFPGA１４０に構成する機能が、同一カラム上の複数の部分再構成部に対するものかどうかを判別する。ステップＳ７０３において、FPGA１４０に構成する機能が、同一カラム上の複数の部分再構成部に対するものであればステップＳ７０４に進み、上記以外のものであればステップＳ７０６に進む。
【００５９】
ステップＳ７０４において、CPU１０１は、受信したジョブ処理のための同一カラム上の複数の部分再構成部にすでに構成されている機能が単一ジョブのためのものであるかを判別する。ステップＳ７０４において、単一ジョブのためのものであると判別した場合はステップＳ７０５に進み、単一ジョブのためのものではないと判別した場合にはステップＳ７０６に進む。これは、単一ジョブのための回路でなければ、再構成の対象である複数の再構成領域はそれぞれ別のジョブで使用されていることから、その使用が完了するタイミングも異なるため、再構成も別々に行う方が合理的なためである。ただし、単一ジョブのためのものではないと判別した場合であっても、ステップＳ７０５に進んでコンフィグデータの合成を行ってもよい。この場合には複数の再構成領域すべてについて使用が完了するまで待たされることになるが、部分再構成を行うことはできる。すなわちステップＳ７０４の判定はオプションである。
【００６０】
ステップＳ７０５において、CPU１０１はステップＳ７０２で特定したFPGA１４０に構成する必要のある機能をFPGA１４０内の同一カラム上の複数の部分再構成部を構成するためのコンフィグデータを作成する。ステップＳ７０５におけるコンフィグデータの作成処理の詳細については図８を用いて後述する。
【００６１】
ステップＳ７０６において、CPU１０１はステップＳ７０１で受信したジョブを実行するために必要な部分再構成部において受信したジョブ以外の処理を行っているかを判別し、処理が終了するまで待機する。
【００６２】
ステップＳ７０７においては、部分再構成部のクリアを行うために、CPU１０１はコンフィグコントローラ１３０に対して、再構成部用論理積コンフィグデータを通知する。再構成部用論理積コンフィグデータとは、RAM１１１に格納されているコンフィグデータのアドレスやサイズを含む。例えば、部分再構成部(PR1)２０１に機能Aを構成する場合のPR１用論理積コンフィグデータ５０１であれば、図６で説明したようにアドレスは0x0000_0100となる。また、部分再構成部(PR1)２０１への機能Aの構成と、部分再構成部(PR2)２０２への機能Bの構成を同時行う場合のPR1PR2用論理積コンフィグデータ５４１であれば、アドレスは0x1000_0100となる。
【００６３】
CPU１０１の指示のもと、コンフィグコントローラ１３０はRAM１１１から論理積用コンフィグデータを読み出し、読みだしたデータをFPGA１４０に送信する。FPGA１４０に送信されたデータはFPGA内部のコンフィギュレーションメモリにすでに書き込まれているデータと論理積がとられ、そのデータがコンフィギュレーションメモリに書き込まれる。
【００６４】
ステップＳ７０８においては、部分再構成部に回路を構成するために、CPU１０１はコンフィギュレーションコントローラ１３０に対して、再構成部用論理和コンフィグデータ情報を通知する。再構成部用論理和コンフィグデータ情報とは、RAM１１１に格納されているコンフィグデータのアドレスやサイズを含む。例えば、部分再構成部(PR1)２０１に機能Aを構成する場合のPR1用論理和コンフィグデータ５１１であれば、図６で説明したようにアドレスは0x000_0200となる。CPU１０１の指示のもと、コンフィグコントローラ１３０はRAM１１１から論理和用コンフィグデータを読み出し、読みだしたデータをFPGA１４０に送信する。FPGA１４０に送信されたデータはFPGA内部のコンフィギュレーションメモリにすでに書き込まれているデータと論理和がとられ、そのデータがコンフィギュレーションメモリに書き込まれる。
【００６５】
ステップＳ７０９において、CPU１０１はステップＳ７０２において受信したジョブ実行に必要な機能に対応した部分再構成部への構成が完了したかどうかを判別し、完了していない場合はステップＳ７０７に戻り、完了した場合は部分再構成実行の処理を終了する。
【００６６】
図８は、同一カラム上の複数の部分再構成部に対するコンフィグデータの生成処理（Ｓ７０５）を示すフローチャートであり、各手順はCPU１０１により実行される。図８のフローチャートを用いて、本発明の実施形態に関わる画像処理装置において、同一カラム上の部分再構成部(PR1)２０１への機能Aの構成と部分再構成部(PR2)２０２への機能Bの構成を同時に行うためのコンフィグデータの生成処理を説明する。
【００６７】
ステップＳ８０１において、CPU１０１はRAM１１１に格納されたPR1用論理積コンフィグデータ５０１とPR2用論理積コンフィグデータ５２１を読み出す。
【００６８】
ステップＳ８０２において、CPU１０１はステップＳ８０１で読みだしたPR1用論理積コンフィグデータ５０１とPR2用論理積コンフィグデータ５２１との論理積を取りPR1PR2用論理積コンフィグデータ５４１を生成する。
【００６９】
ステップＳ８０３において、CPU１０１は、生成したPR1PR2用論理積コンフィグデータ５４１をRAM１１１のPR1PR2用論理積コンフィグデータ領域（アドレス0x1000_0100）に書き込む。
【００７０】
ステップＳ８０４において、CPU１０１０はRAM１１１に格納されたPR1用論理和コンフィグデータ５１１とPR2用論理和コンフィグデータ５３１を読み出す。
【００７１】
ステップＳ８０５において、CPU１０１はステップＳ８０４で読みだしたPR1用論理和コンフィグデータ５１１とPR2用論理和コンフィグデータ５３１との論理和を取りPR1PR2用論理和コンフィグデータ５５１を生成する。
【００７２】
ステップＳ８０６において、生成したPR1PR2用論理和コンフィグデータ５５１をRAM１１１のPR1PR2用論理和コンフィグデータ領域（アドレス0x1000_0200）に書き込む。
【００７３】
以上の処理によって、部分再構成部(PR1)２０１と部分再構成部(PR2)２０２を同時に再構成可能なコンフィグデータが作成される。
【００７４】
図７および図８で説明したように、以上の制御を行うことにより、部分再構成が可能な画像処理装置において、同一カラム上の複数の部分再構成部を再構成する場合に、複数の部分再構成部を一度に再構成するためのコンフィグデータを生成してから再構成を実施することで、再構成に掛かる時間を短縮することが可能となる。また、同一カラム上の部分再構成部の再構成を実施する際に必要なコンフィグデータを生成するため、部分再構成部の数と各部分再構成に構成する機能の数の全ての組み合わせを持っておく必要がなく、メモリに格納しておくコンフィグデータの容量削減も可能となる。
【００７５】
［その他の実施例］
なお上記例は、再構成部を０でクリアする場合を例として説明したが、１でクリアする場合にも同様の方法及び構成を適用できる。ただし、０でクリアする場合には、０とクリア対象の領域との論理積操作を行い、回路を残す部分については、１との論理積操作を行っていたのに対して、１でクリアする場合には、１とクリア対象の領域との論理和操作を行い、回路を残す部分については、０との論理和操作を行うこととなる。また新たな回路を構成する部分については、その回路のデータと対象領域との論理積操作を行うことになる。
【００７６】
また、上記実施形態の説明で用いた論理演算は、上記実施形態と同じ結果をもたらす論理操作であれば、どのような操作であってもよい。すなわち、残すべきコンフィグデータを残し、クリアすべきコンフィグデータをクリアし、新たに書き込むべきコンフィグデータを書き込むような論理操作であれば、上記例には限られない。
【００７７】
なお本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７８】
５０１  ＰＲ１用論理積コンフィグデータ、５１１  ＰＲ１用論理和コンフィグデータ、５２１  ＰＲ２用論理積コンフィグデータ、５３１  ＰＲ２用論理和コンフィグデータ、５４１  ＰＲ１ＰＲ２用論理積コンフィグデータ、５５１  ＰＲ１ＰＲ２用論理和コンフィグデータ
【図１】
2016170629.tif 000003
【図２】
2016170629.tif 000004
【図３】
2016170629.tif 000005
【図４】
2016170629.tif 000006
【図５】
2016170629.tif 000007
【図６】
2016170629.tif 000008
【図７】
2016170629.tif 000009
【図８】
2016170629.tif 000010