(57)【要約】【課題】処理中の機能を止めることなく、部分再構成機能を使用可能とすることを目的とする。【解決手段】ジョブに応じた回路機能を特定する特定手段と、部分再構成部領域の使用状態情報を読み出す読み出し手段と、読み出し手段により読み出された使用状態情報に基づいて未使用中の部分再構成部領域を書き込み先と決定する決定手段と、特定手段により特定された回路機能と決定手段により決定された書き込み先の部分再構成部領域とに対応するコンフィグデータを選択する選択手段と、選択手段により選択されたコンフィグデータを書き込み先の部分再構成部領域に書き込む処理を制御する制御手段と、を有することによって課題を解決する。【選択図】図５
2016035692.tif 000002
【特許請求の範囲】
【請求項１】
ジョブに応じた回路機能を特定する特定手段と、
部分再構成部領域の使用状態情報を読み出す読み出し手段と、
前記読み出し手段により読み出された前記使用状態情報に基づいて未使用中の部分再構成部領域を書き込み先と決定する決定手段と、
前記特定手段により特定された前記回路機能と前記決定手段により決定された書き込み先の部分再構成部領域とに対応するコンフィグデータを選択する選択手段と、
前記選択手段により選択された前記コンフィグデータを前記書き込み先の部分再構成部領域に書き込む処理を制御する制御手段と、
を有する画像処理装置。
【請求項２】
ジョブを受信する受信手段を更に有し、
前記特定手段は、前記受信手段により受信されたジョブに応じた回路機能を特定する請求項１記載の画像処理装置。
【請求項３】
前記書き込み手段により部分再構成部領域にコンフィグデータが書き込まれた部分再構成部の回路機能を使用し、前記ジョブに係る処理の実行を制御する制御手段を更に有する請求項１又は２記載の画像処理装置。
【請求項４】
前記決定手段により書き込み先と決定された部分再構成部領域の使用状態情報を使用中に更新する第１の更新手段を更に有する請求項１乃至３何れか１項記載の画像処理装置。
【請求項５】
前記ジョブに係る処理が終了した場合、前記決定手段により書き込み先と決定された部分再構成部領域の使用状態情報を未使用中に更新する第２の更新手段を更に有する請求項３記載の画像処理装置。
【請求項６】
前記読み出し手段は、部分再構成部領域の使用状態情報を保持する管理テーブルより前記使用状態情報を読み出す請求項１乃至５何れか１項記載の画像処理装置。
【請求項７】
前記読み出し手段は、前記回路機能と前記部分再構成部領域とに対応するコンフィグデータより前記使用状態情報を読み出す請求項１乃至３何れか１項記載の画像処理装置。
【請求項８】
部分再構成部にアクセス可能な第一の画像処理装置と第二の画像処理装置とを含むシステムであって、
前記第一の画像処理装置及び第二の画像処理装置は各々、
ジョブに応じた回路機能を特定する特定手段と、
部分再構成部領域の使用状態情報を読み出す読み出し手段と、
前記読み出し手段により読み出された前記使用状態情報に基づいて未使用中の部分再構成部領域を書き込み先と決定する決定手段と、
前記特定手段により特定された前記回路機能と前記決定手段により決定された書き込み先の部分再構成部領域とに対応するコンフィグデータを選択する選択手段と、
前記選択手段により選択された前記コンフィグデータを前記書き込み先の部分再構成部領域に書き込む処理を制御する制御手段と、
を有するシステム。
【請求項９】
画像処理装置が実行する情報処理方法であって、
ジョブに応じた回路機能を特定する特定ステップと、
部分再構成部領域の使用状態情報を読み出す読み出しステップと、
前記読み出しステップにより読み出された前記使用状態情報に基づいて未使用中の部分再構成部領域を書き込み先と決定する決定ステップと、
前記特定ステップにより特定された前記回路機能と前記決定ステップにより決定された書き込み先の部分再構成部領域とに対応するコンフィグデータを選択する選択ステップと、
前記選択ステップにより選択された前記コンフィグデータを前記書き込み先の部分再構成部領域に書き込む処理を制御する制御ステップと、
を含む情報処理方法。
【請求項１０】
コンピュータに、
ジョブに応じた回路機能を特定する特定ステップと、
部分再構成部領域の使用状態情報を読み出す読み出しステップと、
前記読み出しステップにより読み出された前記使用状態情報に基づいて未使用中の部分再構成部領域を書き込み先と決定する決定ステップと、
前記特定ステップにより特定された前記回路機能と前記決定ステップにより決定された書き込み先の部分再構成部領域とに対応するコンフィグデータを選択する選択ステップと、
前記選択ステップにより選択された前記コンフィグデータを前記書き込み先の部分再構成部領域に書き込む処理を制御する制御ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理中の機能を止めることなく、部分再構成機能を使用可能とする画像処理装置、システム、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
内部の論理回路構成を変更可能なＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等の再構成可能回路が良く知られている。一般的に、ＰＬＤやＦＰＧＡは、起動時にＲＯＭ等の不揮発性メモリへ格納された論理回路構成情報を内部の揮発性メモリであるコンフィグレーションメモリへ書き込むことにより内部論理ブロックの切り替えを行う。また、コンフィグレーションメモリ内の情報は電源切断時にクリアされるため、電源投入時には再度、論理回路構成情報をコンフィグレーションメモリに書き込むことで再構成を行う必要がある。このように、一度だけハードウェアリソースの構成を行う方法を静的再構成という。一方で、回路が動作中に論理回路構成を変更することが可能なものも開発されてきており、動作中に論理回路を変更する方法を動的再構成という。
また、ＦＰＧＡには、チップ全体ではなく特定の領域だけを書き換えることが可能なものがあり、このような書き換えを部分再構成という。特に、動作中の他の回路を停止しない状態で部分再構成を行うことを動的部分再構成という。
動的部分再構成では、動的再構成時にコンフィグレーションメモリ全体を書き換えるのではなく、コンフィグレーションメモリ領域の一部のみを書き換えることで、ＦＰＧＡ内部の論理ブロックの部分的な再構成を実現することが可能となる。
このような動的部分再構成技術を用いることで、一つの領域に複数の回路を切り替えて実装することが可能となるため、ハードウェアリソースの時分割多重化を行い論理ブロックで実現する機能を変更することができる。その結果、少ないハードウェアリソースで用途に合わせた様々な機能をハードウェアによる高い演算性能を保ったままで柔軟に実現することが可能となる。
【０００３】
動的部分再構成では、所望の機能を部分再構成回路上で実行するためには、部分再構成可能な領域に適合するコンフィグデータを準備する必要がある。例えば、機能ごとに複数の部分再構成可能な領域に対する別々のコンフィグデータを記憶装置に格納しておき、再構成可能な空き領域のサイズを確認し、空き領域サイズに適合するコンフィグデータを選択し、再構成を実行する技術が開示されている（特許文献１）。
また、近年のＭＦＰ（ＭＵＬＴＩ  ＦＵＮＣＴＩＯＮ  ＰＲＩＮＴＥＲ）等の画像処理装置は、ユーザからの要求に応じた複数の処理（（コピージョブ、プリントジョブ、ＳＥＮＤジョブ等）を選択し、実行することができる。ＭＦＰの各処理に応じた画像処理はハードウェア又はソフトウェアにより実現される。この画像処理装置の画像処理ハードウェアとしてＦＰＧＡ等の再構成可能回路を適用した場合、上述した様な機能毎に回路構成を動的かつ部分的に切り替えることが可能となる。その結果、少ないハードウェアリソースで様々な画像処理機能が実現可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２５２８１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、使用中の回路があるにもかかわらず、別の再構成回路を書き込んでしまうと、現在使用中の再構成回路が上書きされ、処理中の機能が使用できなくなる可能性がある。
本発明は、処理中の機能を止めることなく、部分再構成機能を使用可能とすることを目的とする。
【課題を解決するための手段】
【０００６】
そこで、本発明の画像処理装置は、ジョブに応じた回路機能を特定する特定手段と、部分再構成部領域の使用状態情報を読み出す読み出し手段と、前記読み出し手段により読み出された前記使用状態情報に基づいて未使用中の部分再構成部領域を書き込み先と決定する決定手段と、前記特定手段により特定された前記回路機能と前記決定手段により決定された書き込み先の部分再構成部領域とに対応するコンフィグデータを選択する選択手段と、前記選択手段により選択された前記コンフィグデータを前記書き込み先の部分再構成部領域に書き込む処理を制御する制御手段と、を有する。
【発明の効果】
【０００７】
本発明によれば、処理中の機能を止めることなく、部分再構成機能を使用可能とすることができる。
【図面の簡単な説明】
【０００８】
【図１】画像処理装置のハードウェア構成の一例を示す図である。
【図２】画像処理装置の部分再構成に特に関わる構成を示した図である。
【図３】コンフィグデータの一例を示す図である。
【図４】ＰＲ管理テーブルの内容と、ＦＰＧＡの使用状況と、の一例を示す図である。
【図５】画像処理装置の情報処理の一例を示すフローチャートである。
【図６】ＦＰＧＡとＰＲ管理テーブルとの状態を示す図である。
【図７】システム構成及びハードウェア構成等の一例を示す図である。
【図８】使用ステータスを管理するための領域の一例示す図である。
【図９】コンフィグデータの一例を示す図である。
【図１０】画像処理装置の情報処理の一例を示すフローチャートである。
【図１１】ＦＰＧＡの状態を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面に基づいて説明する。
【００１０】
＜実施形態１＞
［画像処理装置の構成］
図１は、画像処理装置のハードウェア構成の一例を示す図である。本実施形態の画像処理装置１００は、ハードウェア構成として、操作部１０３と、スキャナ部１０９と、プリンタ部１０７と、を有する。操作部１０３は、画像処理装置１００を使用するユーザが各種の操作を行う。スキャナ部１０９は、操作部１０３からの指示に従い画像情報を読み取る。プリンタ部１０７は、画像データを用紙に印刷する。スキャナ部１０９は、スキャナ部１０９を制御するＣＰＵや原稿読取を行うための照明ランプや走査ミラー等を有する。同様に、プリンタ部１０７は、プリンタ部１０７の制御を行うＣＰＵや画像形成や定着を行うための感光体ドラムや定着器を有する。
また、画像処理装置１００は、画像処理装置１００の動作を統括的に制御するＣＰＵ１０１及びＣＰＵ１０１が実行するプログラムやＦＰＧＡ１４０をコンフィグレーションする為のコンフィグデータ（論理回路構成情報）が格納されているＲＯＭ１０４を有する。
ＦＰＧＡ１４０は、動的書き換え可能かつ部分書き換え可能なものである。即ち、例えば、ＣＰＵ１０１は、ＦＰＧＡ１４０の再構成部の一部に構成された回路が動作している間に、その回路が占める部分とは重ならない別の部分に別の回路を再構成することができる。
本実施形態では再構成可能デバイスとしてＦＰＧＡを例に説明しているが、ＦＰＧＡ以外の再構成可能デバイスが画像処理装置のハードウェア構成として画像処理装置のバス等に接続される構成であっても良い。
【００１１】
画像処理装置１００は、ＣＰＵ１０１の制御の基、ＦＰＧＡの回路構成（コンフィグレーション）を制御するコンフィグコントローラ１３０を有する。
また、画像処理装置１００は、ＣＰＵ１０１が動作するためのシステムワークメモリであり、かつ、画像データを一時記憶するための画像メモリでもあるＲＡＭ１１１を有する。また、画像処理装置１００は、ＲＡＭ１１１へのデータ書き込み、読み出し動作を制御するメモリコントローラ１１０を有する。メモリコントローラ１１０は、システムバス１２０及び画像バス１２１に接続され、ＲＡＭ１１１へのアクセスを制御する。
また、画像処理装置１００は、スキャナ部１０９から画像データが入力されるスキャナＩ／Ｆ１０８とプリンタへ画像データを出力するプリンタＩ／Ｆ１０６とを有する。ＦＰＧＡ１４０及びスキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６は、処理される画像データを転送するための画像バス１２１に接続される。
また、画像処理装置１００は、ネットワークＩ／Ｆ１０２を介し、ネットワーク上の汎用コンピュータと通信（送受信）を行う。また、画像処理装置１００は、ＵＳＢ  Ｉ／Ｆ１１４を介し、画像処理装置１００と接続された汎用コンピュータと通信（送受信）を行う。また、画像処理装置１００は、ＦＡＸ  Ｉ／Ｆ１１５を介し、公衆回線網と接続し、他の画像処理装置やファクシミリ装置と通信（送受信）を行う。画像処理装置１００は、ＣＰＵ１０１が実行するプログラム、ＲＯＭ１０４への書き込み、読み出し動作を制御するＲＯＭ  Ｉ／Ｆ１１２を有する。また、画像処理装置１００は、ＣＰＵ１０１、ネットワークＩ／Ｆ１０２、操作部１０３、ＲＯＭ  Ｉ／Ｆ１１２、コンフィグコントローラ１３０、ＦＰＧＡ１４０を相互に接続するシステムバス１２０を有する。ＣＰＵ１０１は、ＦＰＧＡ１４０、スキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６のパラメータ設定を、システムバス１２０を介して行う。
ＣＰＵ１０１がＲＯＭ１０４等に記憶されているプログラムに基づき処理を実行することによって、本実施形態に係る画像処理装置１００の機能及び後述するフローチャートの処理が実現される。
【００１２】
［部分再構成に関する構成］
次に、図２を用いて、本実施形態にかかる画像処理装置における部分再構成に関する構成について説明する。図２は、画像処理装置１００の部分再構成に特に関わる構成を示した図である。
ＣＰＵ１０１、ＲＯＭ１０４、ＲＯＭ  Ｉ／Ｆ１１２、メモリコントローラ１１０、ＲＡＭ１１１、コンフィグコントローラ１３０、ＦＰＧＡ１４０については図１を用いて前述した通りである。
ＦＰＧＡ１４０は内部に、部分再構成部（ＰＲ１）２０１、部分再構成部（ＰＲ２）２０２、部分再構成部（ＰＲ３）２０３、部分再構成部（ＰＲ４）２０４を有する。各部分再構成部は動的に画像処理回路等を書き換えられることができる。本明細書では一例として再構成可能部の数を４つで説明しているが、４つに限られるものではない。
ＲＡＭ１１１は、後述するＰＲ管理テーブル２２０のための領域を有する。ＰＲ管理テーブル２２０は、いくつの部分再構成部をＦＰＧＡ１４０が持っているかと、ＦＰＧＡ１４０内の部分再構成部のそれぞれが現在使用されているかどうかと、を示す情報から構成される。
【００１３】
次に、図３を用いて本実施形態に係る画像処理装置におけるＦＰＧＡ１４０の部分再構成部２０１〜２０４に係るコンフィグデータの格納方法について説明する。
図３は、ＲＯＭ１０４に格納され、ＦＰＧＡ１４０の各部分再構成部２０１〜２０４に構成されるコンフィグデータの一例を示す図である。
ＲＯＭ１０４には部分再構成に必要な複数個のコンフィグデータが格納される。ＰＲ１用のコンフィグデータ３００は、部分再構成部（ＰＲ１）２０１に構成することが可能なコンフィグデータを表している。図３においては、部分再構成部（ＰＲ１）２０１に構成可能な機能がＡ、Ｂ、Ｃ、Ｄ、Ｅの５つである場合を例にしている。コンフィグデータ３０１はＰＲ１に機能Ａの回路を構成するためのコンフィグデータである。同様にコンフィグデータ３０２は、ＰＲ１に機能Ｂの回路構成を構成するためのコンフィグデータを表している。コンフィグデータ３０３は、ＰＲ１に機能Ｃの回路構成を構成するためのコンフィグデータを表している。コンフィグデータ３０４は、ＰＲ１に機能Ｄの回路構成を構成するためのコンフィグデータを表している。コンフィグデータ３０５は、ＰＲ１に機能Ｅの回路構成を構成するためのコンフィグデータを表している。
【００１４】
また、ＰＲ２用のコンフィグデータ３１０は部分再構成部（ＰＲ２）２０２に構成することが可能なコンフィグデータを表している。ＰＲ２用のコンフィグデータ３１０についても、機能Ａ、Ｂ、Ｃ、Ｄ、Ｅの５つの機能のコンフィグデータが格納されている。例えば、ＣＰＵ１０１等は、部分再構成部（ＰＲ２）２０２を、５つの機能を切り替えて構成することができる。
また、ＰＲ３用のコンフィグデータ３２０は部分再構成部（ＰＲ３）２０３に構成することが可能なコンフィグデータを表している。ＰＲ３用のコンフィグデータ３２０についても、機能Ａ、Ｂ、Ｃ、Ｄ、Ｅの５つの機能のコンフィグデータが格納されている。例えば、ＣＰＵ１０１等は、部分再構成部（ＰＲ３）２０３を、５つの機能を切り替えて構成することができる。
また、ＰＲ４用のコンフィグデータ３３０は部分再構成部（ＰＲ４）２０４に構成することが可能なコンフィグデータを表している。ＰＲ４用のコンフィグデータ３３０についても、機能Ａ、Ｂ、Ｃ、Ｄ、Ｅの５つの機能のコンフィグデータが格納されている。例えば、ＣＰＵ１０１等は、部分再構成部（ＰＲ４）２０４を、５つの機能を切り替えて構成することができる。
【００１５】
上述したように、画像処理装置１００は、各部分再構成部ごとにコンフィグデータを用意する必要がある。例えば、機能Ａの回路構成を部分再構成部（ＰＲ１）２０１と部分再構成部（ＰＲ２）２０２とに構成するためには、コンフィグデータ３０１、コンフィグデータ３１１というように同じ機能を実現する場合においても、構成場所によって異なるコンフィグデータを用意しておく必要がある。
また、本実施形態においては、コンフィグデータ３００から３３０までをＲＯＭ１０４に格納しているが、画像処理装置１００のハードディスクのような不揮発性のストレージでも良いし、ネットワーク上のサーバに格納していても良い。つまり、ＣＰＵ１０１がコンフィグデータを読み出すことさえできれば、コンフィグデータ３００から３３０までの格納場所はどこでも良い。
【００１６】
［ＰＲ管理テーブル］
図４は、ＰＲ管理テーブル２２０の内容と、ＦＰＧＡ１４０の使用状況と、の一例を示す図である。
図４（ａ）は、ＰＲ管理テーブル２２０の内容を示す図である。
図４（ｂ）（ｃ）は、ＦＰＧＡ１４０内の部分再構成部２０１から２０４までの使用状況と、そのときのＰＲ管理テーブル２２０の状態との一例を示す図である。
まず、図４（ａ）を用いて、ＰＲ管理テーブル２２０について説明する。
ＰＲ領域４０１は、ＦＰＧＡ１４０に部分再構成可能な領域がいくつあるかを示す項目である。本実施形態の例では、ＦＰＧＡ１４０に４つの部分再構成可能領域があることを示している。つまり、ＰＲ１が部分再構成部（ＰＲ１）２０１、ＰＲ２が部分再構成部（ＰＲ２）２０２、ＰＲ３が部分再構成部（ＰＲ３）２０３、ＰＲ４が部分再構成部（ＰＲ４）２０４を示す。
使用ステータス４０２は、各部分再構成部２０１から２０４までが使用中であるか否かを示すステータスである。各部分再構成部の使用状況により、ＣＰＵ１０１において後述するフローチャートの処理でステータスの書き換えが行われる。
使用ステータス４０２は、ＣＰＵ１０１が部分再構成を実行する場合に、各部分再構成部２０１から２０４までのうちどの領域が未使用中かを判断するために使用される。
部分再構成部の領域（又は後述するＰＲ領域）は、部分再構成部領域の一例である。使用ステータスは、使用状態情報の一例である。
【００１７】
次に、図４（ｂ）（ｃ）を用いて、ＦＰＧＡ１４０内の部分再構成部２０１から２０４までの使用状況と、そのときのＰＲ管理テーブル２２０の状態との一例を説明する。
図４（ｂ）は、ＦＰＧＡ１４０内の部分再構成部２０２に機能Ｂ、部分再構成部２０４に機能Ｃのコンフィグデータがコンフィグレーションされ、部分再構成部２０２と２０４とをＣＰＵ１０１が使用し、処理を実行している状態である。ＦＰＧＡ１４０内の部分再構成部２０１と２０３とは、ＣＰＵ１０１が使用していない状態であり、書き換え可能な領域であることを示している。但し、使用されていない状態でも、一度コンフィグレーションが実行されている場合には、部分再構成部にコンフィグレーション実行時の再構成回路情報（コンフィグデータ）は保持されたままとなる。本実施形態の例においては、部分再構成部２０１には、機能Ａのコンフィグデータ３０１が構成され、部分再構成部２０４には、機能Ｄのコンフィグデータ３３４が構成されている。
図４（ｃ）は、ＦＰＧＡ１４０が図４（ｂ）に示す状態である場合のＰＲ管理テーブル２２０を示す図である。ＰＲ領域毎に、使用中か未使用中かを示すステータスがＣＰＵ１０１により制御され格納されている。図４（ｃ）の例では、ＰＲ２とＰＲ４との領域が使用中であり、ＰＲ１とＰＲ３との領域が未使用となっている。
以下、ＰＲ管理テーブル２２０を使用し、未使用中の領域の判別と、コンフィグデータの書き込みと、の情報処理について説明する。
【００１８】
［情報処理］
図５は、画像処理装置の情報処理の一例を示すフローチャートである。ＣＰＵ１０１は、本フローチャートで示す処理を、ジョブ毎に並列して実行することもできる。また、以下のフローチャートの説明においては、部分再構成部２０１から２０４までをＰＲ領域として説明する。
Ｓ５０１において、ＣＰＵ１０１は、ジョブを受信したか否かを判定する。ＣＰＵ１０１は、ジョブを受信するとＳ５０２に遷移し、ジョブを受信しないとＳ５０１の処理を繰り返す。
Ｓ５０２において、ＣＰＵ１０１は、受信したジョブを実行するにあたり、ＦＰＧＡ１４０に構成する必要がある機能を特定する。例えば、ジョブごとに必要な機能が予め設定情報等としてＲＯＭ１０４等に設定されており、ＣＰＵ１０１は、受信したジョブと、前記設定情報とに基づいて、受信したジョブに応じた機能を特定する。例えば、ＣＰＵ１０１は、受信したジョブ処理のために、機能Ａを実現する回路をＰＲ領域に構成する必要があるかを特定する。
Ｓ５０３において、ＣＰＵ１０１は、ＲＡＭ１１１内に保存されたＰＲ管理テーブル２２０内の使用ステータス４０２を順次、読出す。
Ｓ５０４において、ＣＰＵ１０１は、Ｓ５０３で読み出した結果を基に、未使用中のＰＲ領域があるか否かを判断する。ＣＰＵ１０１は、未使用中の部分再構成領域があればＳ５０５に遷移し、未使用中の部分再構成領域が無い場合はＳ５０３に戻る。
【００１９】
Ｓ５０５において、ＣＰＵ１０１は、未使用中のＰＲ領域をコンフィグレーション先として特定する。
Ｓ５０６において、ＣＰＵ１０１は、Ｓ５０５で特定した未使用中のＰＲ領域に対応するＰＲ管理テーブル２２０の使用ステータス４０２を更新する。更新とは、「未使用中」から「使用中」に変更することである。本処理により他の並列実行中のジョブが誤って使用中の部分再構成領域に対しコンフィグレーションすることを防止することができる。
Ｓ５０７において、ＣＰＵ１０１は、Ｓ５０２で特定した機能と、Ｓ５０５で特定したＰＲ領域と、に対応するコンフィグデータを選択する。
Ｓ５０８において、ＣＰＵ１０１は、Ｓ５０７で選択したコンフィグデータをＲＯＭ１０４等から読み出し、コンフィグレーションを実行する。Ｓ５０８の処理は、コンフィグデータを書き込み先の部分再構成部領域に書き込む処理を制御する制御処理の一例である。
Ｓ５０９において、ＣＰＵ１０１は、コンフィグレーションした回路機能を使用し、ジョブを実行する。Ｓ５０９の処理は、回路起動のためのレジスタ設定、終了割込み待ち動作、終了割り込み対応処理動作等も含む処理である。
ＣＰＵ１０１は、コンフィグレーションした機能を使用したジョブ処理が終了した場合、Ｓ５１０に遷移し、Ｓ５０５で特定したＰＲ領域に対応するＰＲ管理テーブル２２０の使用ステータス４０２を「使用中」から「未使用中」に変更する。これにより他の並列実行中のジョブがＰＲ領域を使用することが可能になる。また、これにより他の並列実行中のジョブがＰＲ領域を使用することが可能になる。
【００２０】
ここで、図５に示すフローチャートに関する動作の詳細を図６（ａ）から（ｆ）までを用いて説明する。本実施形態の例では、ＣＰＵ１０１がジョブを受信し、機能Ｅが必要であると判断し、ＦＰＧＡ１４０に機能Ｅのコンフィグデータを再構成してからジョブ処理終了することを前提として説明する。なお、図６において太線の箇所が変化した箇所を示す。
図６（ａ）（ｂ）は、Ｓ５０１でジョブを受信する前のＦＰＧＡ１４０とＰＲ管理テーブル２２０との状態を示す図である。
図６（ｃ）（ｄ）は、Ｓ５０２からＳ５０８までにおいて、ＦＰＧＡ１４０に機能Ｅをコンフィグレーションした後のＦＰＧＡ１４０とＰＲ管理テーブル２２０との状態を示す図である。
ＣＰＵ１０１は、Ｓ５０２で、機能Ｅが必要であることを特定する。次にＣＰＵ１０１は、Ｓ５０３、Ｓ５０４で、ＰＲ１領域とＰＲ３領域とが未使用であることを確認する。そして、ＣＰＵ１０１は、Ｓ５０５でＰＲ１領域（部分再構成部２０１）に機能Ｅのコンフィグデータを書き込むことを決定する。次にＣＰＵ１０１は、Ｓ５０６で、ＰＲ１領域（部分再構成部２０１）の使用状況を示す使用ステータス４０２を使用中に変更する。次に、ＣＰＵ１０１は、Ｓ５０７で、機能ＥのＰＲ１領域（部分再構成部２０１）用のコンフィグデータであるコンフィグデータ３０５を選択する。そして、ＣＰＵ１０１は、Ｓ５０８でＰＲ１領域（部分再構成部２０１）にコンフィグデータ３０５をコンフィグレーションする。
図６（ｅ）（ｆ）は、Ｓ５０９からＳ５１０までにおいて、機能Ｅを使用したジョブ処理を終了した後のＦＰＧＡ１４０とＰＲ管理テーブル２２０との状態を示す図である。
ＣＰＵ１０１は、Ｓ５０９で機能Ｅが使用されるジョブを実行する。ジョブの実行が終了した場合、ＣＰＵ１０１は、Ｓ５１０でＰＲ１領域（部分再構成部２０１）の使用状況を示す使用ステータス４０２を未使用中に変更する。
【００２１】
以上説明したように、本実施形態の処理によれば、再構成可能回路を有する画像処理装置において、未使用領域の確認を行い、部分再構成（コンフィグレーション）を行うため、現在動作中の処理を止めることなく、部分再構成機能を使用することが可能となる。
【００２２】
＜実施形態２＞
実施形態１は、ＣＰＵを含む１つのシステムが１つのＦＰＧＡ１４０を使用する場合の制御方法について説明している。
ここで、複数のシステムで１つのＦＰＧＡ１４０を使用するケースを想定する。複数のシステムで１つのＦＰＧＡ１４０を使用する場合、システム間同士で通信を行い、部分再構成部２０１から２０４までのどこが未使用領域であるかを確認する通信インターフェースプロトコルが必要となる。
そこで、実施形態２においては、ＰＲ管理テーブル２２０の使用ステータス４０２に相当する機能をコンフィグデータ内に持つ例を説明する。このような構成とすることで、複数のシステムが１つのＦＰＧＡ１４０を使用する場合でも、複数のシステムが個別にＦＰＧＡ１４０を使用することができる。
【００２３】
図７は、本実施形態において、ＣＰＵを含む２つのシステムが１つのＦＰＧＡ１４０を制御する場合のシステム構成及びハードウェア構成等の一例を示す図である。
以下、図２との差分を主に説明する。第一システム（又は第一の画像処理装置）７５０は、ハードウェア構成１０１から１３０までを含む。第二システム（又は第二の画像処理装置）７６０は、ハードウェア構成７０１から７３０までを含む。ハードウェア構成７０１から７３０まではハードウェア構成１０１から１３０までと同様の構成とする。第一システム７５０と第二システム７６０とは、それぞれＦＰＧＡ１４０に接続され、部分再構成部２０１から２０４までのコンフィグレーション及び制御が可能である。
ＣＰＵ１０１がＲＯＭ１０４等に記憶されているプログラムに基づき処理を実行することによって、本実施形態に係る第一システム（又は第一の画像処理装置）７５０の機能及び後述するフローチャートの第一システム７５０に係る処理が実現される。また、ＣＰＵ７０１がＲＯＭ７０４等に記憶されているプログラムに基づき処理を実行することによって、本実施形態に係る第二システム（又は第二の画像処理装置）７６０の機能及び後述するフローチャートの第二システム７６０に係る処理が実現される。
【００２４】
図８は、各部分再構成コンフィグデータ内に、使用ステータス８７０を管理するための領域を持っていることを示す図である。
本実施形態の例においては、ＰＲ１用機能Ａのコンフィグデータ３０１内に、使用ステータス８７０を実装した例を示している。第一システム及び第二システムは、使用ステータス８７０を実装したコンフィグデータを生成しておく必要がある。
使用ステータス８７０は、第一システム７５０のＣＰＵ１０１と第二システム７６０のＣＰＵ７０１とからそれぞれアクセス可能である。使い方としては、実施形態１において、ＣＰＵ１０１がＲＡＭ１１１上で管理していた使用ステータス４０２と同様の使い方がなされる。異なる点としては、第一システム７５０のＣＰＵ１０１と第二システム７６０のＣＰＵ７０１とからそれぞれアクセス可能な使用ステータス８７０であり、部分再構成部２０１から２０４までが使用中か未使用中かを制御する。なお、使用ステータス８７０の初期設定値は使用中を示すようにしておく方が良い。
【００２５】
図９は、図７に示す図において、第一システム７５０内のＲＯＭ１０４に格納されているコンフィグデータと、第二システム７６０内のＲＯＭ７０４に格納されているコンフィグデータと、の一例を示す図である。
第一システム７５０内で実行するジョブを実行するのに必要なコンフィグデータは、機能Ａ、Ｂ、Ｃ、Ｄの４つである。４つの部分再構成部２０１から２０４までのそれぞれに対応するコンフィグデータ３００〜３３０がＲＯＭ１０４に格納され保持されている。
第二システム７６０内で実行するジョブを実行するのに必要なコンフィグデータは、機能Ｏ、Ｐ、Ｑ、Ｒの４つである。４つの部分再構成部２０１から２０４までのそれぞれに対応するコンフィグデータ８００〜８３０がＲＯＭ７０４に格納され保持されている。
何れのコンフィグデータも、図８に示した使用ステータス８７０を持ったコンフィグデータとなっている。
【００２６】
図１０は、画像処理装置の情報処理の一例を示すフローチャートである。図５に示したフローチャートとの差分を主に説明する。ＣＰＵ１０１やＣＰＵ７０１は、本フローチャートで示す処理を、ジョブ毎に並列して実行することもできる。
図１０に示すＳ５０１、Ｓ５０２、Ｓ５０４、Ｓ５０５、Ｓ５０７、Ｓ５０８、Ｓ５０９は図５に示す処理と同じ処理であるため説明を省略する。但し、第一システム（又は第一の画像処理装置）７５０が処理を実行している場合の、各ステップの処理は、ＣＰＵ１０１である。一方、第二システム（又は第二の画像処理装置）７６０が処理を実行している場合の、各ステップの処理は、ＣＰＵ７０１である。以下では、説明の簡略化のため、図１０の説明では、第二システム７６０が処理を実行しているものとして説明を行う。
Ｓ１００３において、ＣＰＵ７０１は、ＦＰＧＡ１４０内のＰＲ１から４までの領域にコンフィグレーションされた部分再構成回路の中にある使用ステータス８７０を順次、読出す。
Ｓ１０１０において、ＣＰＵ７０１は、Ｓ５０５で特定したＰＲ領域の使用ステータス４０２を「使用中」から「未使用中」に変更する。これにより他の並列実行中のジョブがＰＲ領域を使用することが可能になる。また、これにより他の並列実行中のジョブがＰＲ領域を使用することが可能になる。
なお、図５に示すフローチャートのＳ５０６に相当する使用ステータスを使用中に更新する処理が図１０にない理由は、以下のとおりである。即ち、本実施形態の場合、Ｓ５０７において、コンフィグレーションが完了すると同時に、コンフィグレーションされた再構成回路部内の使用ステータス８７０は使用中となっているためである。
【００２７】
ここで、図１０に示すフローチャートに関する動作の詳細を図１１（ａ）から（ｄ）までを用いて説明する。本実施形態の例では、以下の前提で説明する。まず第二システム７６０のＣＰＵ７０１がＦＰＧＡ１４０に機能Ｐのコンフィグデータを再構成する。次に、第一システム７５０のＣＰＵ１０１がＦＰＧＡ１４０に機能Ａのコンフィグデータを再構成する。次に、第二システム７６０のＣＰＵ７０１がＦＰＧＡ１４０の部分再構成部（ＰＲ４）２０４を使用していたジョブの実行が終了する。なお、図１１において太線の箇所が変化した箇所を示し、縦線のハッチがかかったＰＲ領域は、第二システムがコンフィグレーションを実行した回路であることを示す。
図１１（ａ）は、あるタイミングでのＦＰＧＡ１４０の使用ステータス８７０の状況を示す図である。
図１１（ｂ）は、第二システム７６０のＣＰＵ７０１が機能Ｐを使用するジョブを受信し、ＦＰＧＡ１４０に機能Ｐをコンフィグレーション実行した後のＦＰＧＡ１４０の使用ステータス８７０の状況を示す図である。
第二システム７６０のＣＰＵ７０１は、Ｓ５０２で、機能Ｐが必要であることを特定する。次にＣＰＵ７０１は、Ｓ１００３、Ｓ５０４で、ＰＲ１領域とＰＲ３領域とが未使用であることを確認する。そして、ＣＰＵ７０１は、Ｓ５０５でＰＲ１領域に機能Ｐのコンフィグデータを書き込むことを決定する。次に、ＣＰＵ７０１は、Ｓ５０７で、機能ＰのＰＲ１領域（部分再構成部２０１）用のコンフィグデータであるコンフィグデータ８０２を選択する。そして、ＣＰＵ７０１は、Ｓ５０８でＰＲ１領域（部分再構成部２０１）にコンフィグレーションを実行する。
【００２８】
図１１（ｃ）は、図１１（ｂ）の状態で、第一システム７５０のＣＰＵ１０１が機能Ａを使用するジョブを受信し、ＦＰＧＡ１４０に機能Ａをコンフィグレーション実行した後のＦＰＧＡ１４０の使用ステータス８７０の状況を示す図である。
第一システム７５０のＣＰＵ１０１は、Ｓ５０２で、機能Ａが必要であることを特定する。次にＣＰＵ１０１は、Ｓ１００３、Ｓ５０４で、ＰＲ３領域が未使用であることを確認する。ＣＰＵ１０１は、Ｓ５０５で、ＰＲ３領域に機能Ａのコンフィグデータを書き込むことを決定する。次に、ＣＰＵ１０１は、Ｓ５０７で、機能ＡのＰＲ３領域（部分再構成部２０３）用のコンフィグデータであるコンフィグデータ３２１を選択する。そして、ＣＰＵ１０１は、Ｓ５０８でＰＲ３領域（部分再構成部２０３）にコンフィグレーションを実行する。
図１１（ｄ）は、図１１（ｃ）の状態で、第二システム７６０のＣＰＵ７０１が機能Ｏを使用するジョブを終了した後のＦＰＧＡ１４０の使用ステータス８７０の状況を示す図である。
第二システム７６０のＣＰＵ７０１は、Ｓ５０９で機能Ｏを使用したジョブ処理を終了する。すると、ＣＰＵ７０１は、Ｓ１０１０でＰＲ４領域の使用ステータス８７０を未使用中に変更する。
【００２９】
以上説明したように、本実施形態の処理によれば、複数のシステムが１つのＦＰＧＡ１４０を使用する場合でも、複数のシステムが個別にＦＰＧＡ１４０を使用することが可能となる。
【００３０】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００３１】
以上、上述した各実施形態によれば、処理中の機能を止めることなく、部分再構成機能を使用可能とすることができる。
【符号の説明】
【００３２】
１００  画像処理装置、１０１  ＣＰＵ、１４０  ＦＰＧＡ
【図１】
2016035692.tif 000003
【図２】
2016035692.tif 000004
【図３】
2016035692.tif 000005
【図４】
2016035692.tif 000006
【図５】
2016035692.tif 000007
【図６】
2016035692.tif 000008
【図７】
2016035692.tif 000009
【図８】
2016035692.tif 000010
【図９】
2016035692.tif 000011
【図１０】
2016035692.tif 000012
【図１１】
2016035692.tif 000013