(57)【要約】      （修正有）【課題】回路情報に従った論理回路が構成されるプログラマブルロジックデバイスを複数の制御手段を共有する、複雑化せずにデバイスのコンフィギュレーションを可能にするシステムを提供する。【解決手段】第１の制御手段に対して、第２の制御手段が、ジョブ発生を検知したことに基づいてコンフィギュレーション依頼を送信するＳ５０４。そして、第１の制御手段は、受信したコンフィギュレーション依頼に基づいて、第２の制御手段がそのジョブの処理で利用する論理回路の回路情報を、ＰＣＩｅバス経由でＦＰＧＡデバイスに送信する。ＦＰＧＡデバイスは、この送信された回路情報に従って論理回路を構成し、第２の制御手段は、構成済みの論理回路を利用してそのジョブを処理する。【選択図】図５
2016111633.tif 000002
【特許請求の範囲】
【請求項１】
回路情報に従って論理回路が構成される回路を有するデバイスと、
前記デバイスに接続された制御部であって、第１の回路情報に従って前記回路に構成された第１の論理回路を用いて、第１のジョブを処理する第１の制御手段と、
前記デバイスに接続された制御部であって、第２の回路情報に従って前記回路に構成された第２の論理回路を用いて、第２のジョブを処理する第２の制御手段と、
を有し、
前記デバイスは、前記第１の制御手段から送信される回路情報に従って論理回路を前記回路に構成することが可能であり、
前記第１の制御手段は、前記第１の論理回路の前記回路への構成のために前記第１の回路情報を前記デバイスに送信し、かつ、前記第２の論理回路の前記回路への構成のために前記第２の回路情報を前記デバイスに送信することを特徴とする情報処理システム。
【請求項２】
前記第１の制御手段と接続された記憶手段であって、前記第１の回路情報および前記第２の回路情報を記憶する記憶手段を有することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記第１の制御手段は、前記第１のジョブを処理する際に、前記第２の論理回路を用いないことを特徴とする請求項１に記載の情報処理システム。
【請求項４】
前記デバイスは、
前記第１の制御手段と第１の通信路を介して接続される通信手段であって、前記第１の制御手段からデータを受信する第１の通信手段と、
前記第２の制御手段と第２の通信路を介して接続される通信手段であって、前記第２の制御手段からデータを受信する第２の通信手段と、
を有し、
前記第１の制御手段は、前記第１のジョブの処理において、前記第１の論理回路で処理すべきデータを、前記第１の通信路を介して前記第１の通信手段に送信し、
前記第２の制御手段は、前記第２のジョブの処理において、前記第２の論理回路で処理すべきデータを、前記第２の通信路を介して前記第２の通信手段に送信することを特徴とする請求項１に記載の情報処理システム。
【請求項５】
前記第１の制御手段は、
前記第１の論理回路の前記回路への構成のために前記第１の回路情報を、前記第１の通信路を介して前記第１の通信手段に送信し、
前記第２の論理回路の前記回路への構成のために前記第２の回路情報を、前記第２の通信路を介して前記第２の通信手段に送信することを特徴とする請求項４に記載の情報処理システム。
【請求項６】
前記第１の制御手段は、前記第１の通信路を介して、論理回路の構成の指示を前記デバイスに送信し、
前記第２の制御手段は、前記第２の通信路を介して、論理回路の構成の指示を前記デバイスに送信しないことを特徴とする請求項４または５に記載の情報処理システム。
【請求項７】
前記第１の通信路は、第１のＰＣＩ  Ｅｘｐｒｅｓｓのバスであり、
前記第２の通信路は、第２のＰＣＩ  Ｅｘｐｒｅｓｓのバスであることを特徴とする請求項４乃至６の何れか１項に記載の情報処理システム。
【請求項８】
前記第２の制御手段は、前記第２の論理回路の前記回路への構成のために前記第２の回路情報を前記デバイスに送信する依頼を、前記第１の制御手段に送信し、
前記第１の制御手段は、前記依頼を前記第２の制御手段から受け取ったことに基づいて、前記第２の回路情報を前記デバイスに送信することを特徴とする請求項１乃至７の何れか１項に記載の情報処理システム。
【請求項９】
前記依頼には、前記第２の回路情報を特定するための情報は含まれることを特徴とする請求項８に記載の情報処理システム。
【請求項１０】
前記第１の制御手段は、前記回路に構成済みの論理回路を示す情報に基づいて、前記第２の回路情報を送信することを特徴とする請求項９に記載の情報処理システム。
【請求項１１】
前記第２の制御手段は、前記第２のジョブの発生の検知に基づいて、前記依頼を前記第１の制御手段に送信することを特徴とする請求項８乃至１０の何れか１項に記載の情報処理システム。
【請求項１２】
前記第１の制御手段は、前記第２のジョブの発生前に、前記第２の回路情報を前記デバイスに送信することを特徴とする請求項１乃至７の何れか１項に記載の情報処理システム。
【請求項１３】
前記第１の制御手段は、前記情報処理システムの状態に基づいて複数の回路情報のうちの少なくとも１つの回路情報を特定し、当該特定された回路情報を前記第２の回路情報として前記デバイスに送信することを特徴とする請求項１２に記載の情報処理システム。
【請求項１４】
前記情報処理システムの状態と所定の回路情報との関連付けを示す情報を記憶する記憶手段と、
前記情報処理システムの状態を確認する確認手段と、
を有し、
前記第１の制御手段は、前記確認された状態と、前記関連付けを示す情報とに基づいて特定される回路情報を、前記第２の回路情報として前記デバイスに送信することを特徴とする請求項１３に記載の情報処理システム。
【請求項１５】
前記第１の制御手段は、前記情報処理システムの状態遷移に基づいて、前記第２の回路情報を前記デバイスに送信することを特徴とする請求項１３または１４に記載の情報処理システム。
【請求項１６】
前記第１の制御手段は、前記情報処理システムの状態が第１の消費電力状態から前記第１の消費電力状態よりも低い消費電力状態である第２の消費電力状態へ移行することに基づいて、前記第２の回路情報を前記デバイスに送信する請求項１５に記載の情報処理システム。
【請求項１７】
前記第１の制御手段は、前記情報処理システムの状態が前記第１のジョブの処理実行中の状態から前記第１のジョブの処理完了の状態へ移行することに基づいて、前記第２の回路情報を前記デバイスに送信することを特徴とする請求項１５に記載の情報処理システム。
【請求項１８】
前記第１の制御手段は、前記回路に構成されている論理回路を確認し、当該確認結果に基づいて、前記第２の回路情報を前記デバイスに送信することを特徴とする請求項１乃至１７の何れか１項に記載の情報処理システム。
【請求項１９】
前記第１の制御手段は、
前記確認結果が、前記第２の回路情報に対応する論理回路が前記回路に既に構成されており、且つ、前記第２の制御手段によって利用可能であることを示す場合に、前記第２の回路情報を前記デバイスに送信せず、
前記確認結果が、前記第２の回路情報に対応する論理回路が前記回路に既に構成されており、且つ、前記第２の制御手段によって利用不可能であることを示す場合に、前記第２の回路情報を前記デバイスに送信することを特徴とする請求項１８に記載の情報処理システム。
【請求項２０】
前記デバイスは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、あるいは、ＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）であることを特徴とする請求項１乃至１９の何れか１項に記載の情報処理システム。
【請求項２１】
回路情報を特定するための情報を取得し、当該取得された情報に基づいて特定された前記回路情報を送信する第１の制御手段と、
前記第１の制御手段から送信された前記回路情報を受け取って、当該回路情報に従って論理回路を構成するプログラマブルロジックデバイスと、
前記プログラマブルロジックデバイスが構成した前記論理回路を用いてジョブを処理する第２の制御手段と、
を有する情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は回路情報に従って論理回路を構成可能な回路を持つデバイスと、複数の制御手段とを有する情報処理システムに関する。
【背景技術】
【０００２】
内部の論理回路構成を変更可能なＣＰＬＤ（ＣＯＭＰＬＥＸ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＬＯＧＩＣ  ＤＥＶＩＣＥ）やＦＰＧＡ（ＦＩＥＬＤ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＧＡＴＥ  ＡＲＲＡＹ）などのプログラマブルロジックデバイスが知られている。例えばＦＰＧＡは、ファブリックとコンフィギュレーションメモリを有する。ファブリックは、複数の論理ブロックと、論理ブロック間の配線領域とを含む。またＦＰＧＡは、ＦＰＧＡ内部と外部とのデータを受け渡すインターフェースを有する。コンフィギュレーションメモリにコンフィギュレーションデータ（回路情報とも呼ぶ）を書き込むことで、ファブリック（複数の論理ブロック）を様々な論理回路として機能させることができる。回路情報を書き込むことでファブリックを論理回路として機能させることを、ＦＰＧＡのコンフィギュレーションと呼ぶ。
【０００３】
ＦＰＧＡのファブリックは、コンフィギュレーションによって様々な機能を果たすことができるので、ハードウェアの高速性と、ソフトウェアの柔軟性とを両立させることができる。特許文献１の開示するシステムでは、複数のＣＰＵがコンフィギュレーション済みのＦＰＧＡを共通に利用するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２８７５７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
プログラマブルロジックデバイスは、高速なデータ通信を実現するためのバスインターフェース（例えばＰＣＩ  Ｅｘｐｒｅｓｓバス：ＰＣＩｅバス）のＩＰコア（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ  Ｃｏｒｅ：以下ポートと呼ぶ）を備えるものがある。そのようなデバイスでは、ポートと接続したＣＰＵは、そのポートを介して、論理回路で処理すべきデータをデバイスに高速に送信できる。このような高速ポートを複数備えたＦＰＧＡを複数ＣＰＵで共有すれば、各ポートに異なるＣＰＵを接続でき、各ＣＰＵは対応ポートに向けてデータを他のＣＰＵを介さずに（独立して）送信することで論理回路を用いてそのデータを処理できる。
【０００６】
近年のプログラマブルロジックデバイスは、その高速ポートを介してＣＰＵが回路情報をデバイスに送信することで、ＣＰＵからデバイスのコンフィギュレーションを行うことが可能になってきている。
【０００７】
ここで、プログラマブルロジックデバイスによっては、ＣＰＵから回路情報を受け取ることが可能ではあるが、その回路情報を用いたコンフィギュレーションには対応しないポートが存在する場合がある。つまりコンフィギュレーション可能な高速ポートが割り当てられていないＣＰＵのためのコンフィギュレーションの仕組みが必要となる。
【０００８】
あるいは、異なるＣＰＵがそれぞれ接続されている複数の高速ポートのいずれからでもデバイスのコンフィギュレーションが可能とされている場合であっても、各ＣＰＵは、他のＣＰＵによるコンフィギュレーションと競合しないような制御を行う必要が生じる。例えば他の全てのＣＰＵに対してコンフィギュレーションを禁止するような制御を行う必要があり、システムが複雑化してしまう恐れがある。
【課題を解決するための手段】
【０００９】
本発明は、上記の課題の少なくともいずれか１つを解決することを目的とする。
【００１０】
本発明によれば、請求項１に記載される情報処理システムが提供される。
【発明の効果】
【００１１】
本発明によれば、回路情報に従った論理回路が構成されるプログラマブルロジックデバイスを複数の制御手段が共有するシステムにおいて、システムを複雑化せずにデバイスのコンフィギュレーションを可能にする。
【図面の簡単な説明】
【００１２】
【図１】情報処理システム１００の全体ブロック図である。
【図２】ジョブデータの例、ジョブ要求機能対応テーブルの例である。
【図３】プログラマブル処理部４００の構成情報の構成例である。
【図４】プログラマブル処理部４００の内部ブロック図の一例である。
【図５】第２処理部によるコンフィギュレーション依頼処理のフローチャートである。
【図６】第１処理部によるコンフィギュレーション処理のフローチャートである。
【図７】状態遷移テーブルの例である。
【図８】第１処理部による先行コンフィギュレーション処理を伴うコンフィギュレーション処理のフローチャートである。
【図９】先行コンフィギュレーション処理のフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施例について図面を用いて説明する。
【００１４】
（実施例１）
本実施例によれば、第１の制御手段に対して、第２の制御手段が、ジョブ発生を検知したことに基づいてコンフィギュレーション依頼を送信する。そして、第１の制御手段は、受信したコンフィギュレーション依頼に基づいて、第２の制御手段がそのジョブの処理で利用する論理回路の回路情報を、ＰＣＩｅバス経由でＦＰＧＡデバイスに送信する。するとＦＰＧＡデバイスは、この送信された回路情報に従って論理回路を構成し、第２の制御手段は、構成済みの論理回路を利用してそのジョブを処理する。
【００１５】
つまり、第２の制御手段で処理すべきジョブの発生が検知されたことに基づいて、第１の制御手段は、そのジョブの処理に必要な論理回路の回路情報をＦＰＧＡデバイスに送信する。
【００１６】
また別の視点から述べると、第１の制御手段がジョブの処理において利用しない論理回路であっても、第１の制御手段は、その論理回路の回路情報を、ＰＣＩｅバス経由でＦＰＧＡデバイスに送信する。
【００１７】
なお、以降の全実施例の説明において、「ジョブを処理する」とは、そのジョブで処理すべきデータを処理することである。また「制御手段が論理回路を利用してジョブを処理する」とは、制御手段がＦＰＧＡデバイスにジョブで処理すべきデータを送信し、ＦＰＧＡデバイス上の論理回路がそのデータを処理し、制御手段がその処理結果を受け取ることである。
【００１８】
＜システムの全体構成＞
図１は、本実施例における情報処理システムの一例である画像処理システム１００の全体ブロック図である。本実施例における画像処理システム１００は、ジョブを処理する処理部（制御部）を少なくとも２つ以上有する。
【００１９】
第１処理部１１０は、画像処理システム１００の動作制御や、色空間変換・ハーフトーニングといった基本的な画像処理を実行する。第１処理部１１０は一般に、メインコントローラやマザーボードなどと呼ばれる。以下、第１処理部１１０の内部ブロックを説明する。
【００２０】
制御部１１１は、第１処理部１１０を制御するための中央処理装置（ＣＰＵ）である。制御部１１１は、ＰＣＩｅバスと接続するポートを少なくとも１ポート備える。このＰＣＩｅのポートは、ＰＣＩｅバスを介して、後述のプログラマブル処理部４００の備えるＰＣＩｅ  ＩＰ４０３（後述の第１ポート）と電気的に接続されている。制御部１１１は、このＰＣＩｅのポートから、ＰＣＩｅバスを介して、プログラマブル処理部４００（後述の第１ポート）に対して、ジョブで処理すべきデータや後述の回路情報を送信する。例えば、制御部１１１は、第１の回路情報をＰＣＩｅバス経由でプログラマブル処理部４００（後述の第１ポート）へ送信することで、その第１の回路情報に従って第１の論理回路がプログラマブル処理部４００に構成される。そして制御部１１１は、第１のジョブで処理すべきデータをＰＣＩｅバス経由でプログラマブル処理部４００（後述の第１ポート）に送信する。そして制御部１１１は、第１の論理回路によって処理されたデータ（処理結果）を、プログラマブル処理部４００（後述の第１ポート）から受信する。以上の手順で、制御部１１１は、第１の論理回路を用いてそのデータ（すなわち第１のジョブ）を処理する。
【００２１】
主記憶部１１２は、ＳＤＲＡＭ(Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ)などにより構成される高速アクセス可能な記憶装置である。主記憶部１１２では、制御部１１１が処理する画像データや印刷データが記憶されるほか、制御部１１１が実行するソフトウェアプログラムが記憶される。また主記憶部１１２には、後述のプログラマブル処理部４００に書き込まれる回路情報も記憶される。すなわち、主記憶部１１２は、少なくとも、第１処理部１１０（制御部１１１）によるジョブ処理で用いられる論理回路の回路情報と、第２処理部１２０（制御部１２１）によるジョブ処理で用いられる論理回路の回路情報を記憶する。ＳＤＲＡＭで構成された主記憶部１１２は揮発性メモリであるため、主記憶部１１２に記憶されるデータは、次の補助記憶部１１３から読み出されて一時的に記憶されることになる。
【００２２】
補助記憶部１１３は、ハードディスクやフラッシュメモリなどの不揮発性の記憶装置であり、主記憶部１１２に読み出される画像データ、印刷データ、ソフトウェアプログラム、回路情報などが格納される。
【００２３】
外部ＩＦ部１１４は、Ｅｔｈｅｒｎｅｔ（登録商標）やＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）に対応したインターフェースである。なお図１において、第１処理部１１０は外部ＩＦ部１１４を介して第２処理部１２０と接続されているが、ネットワークサーバやクライアントＰＣといった外部情報端末と接続されても構わない。
【００２４】
操作表示部１１５は、表示機能と操作機能を兼ね揃えたタッチスクリーン等のデバイスであり、第１処理部１１０のユーザインターフェース部として機能する。なお、液晶ディスプレイとハードキーを組み合わせて操作表示部１１５を構成してもよい。
【００２５】
以上の各部がシステムバス１１６を介して相互に電気的に接続される。
【００２６】
第２処理部１２０は第１処理部１１０とは異なる種類の処理の実行や、同種の処理でもより高速に実行できるように構成されている。第２処理部１２０は一般に、アドオンハードウェアやアクセラレータなどと呼ばれる。以下、第２処理部１２０の内部ブロックを説明する。
【００２７】
制御部１２１は、第２処理部１２０を制御するための中央処理装置（ＣＰＵ）である。制御部１２１は、ＰＣＩｅバスと接続するポートを少なくとも１ポート備える。このＰＣＩｅのポートは、ＰＣＩｅバスを介して、後述のプログラマブル処理部４００の備えるＰＣＩｅ  ＩＰ４０３（後述の第２ポート）と電気的に接続されている。制御部１２１は、このＰＣＩｅのポートから、ＰＣＩｅのバスを介して、プログラマブル処理部４００に対して、ジョブで処理すべきデータを送信する。例えば、制御部１２１は、第２のジョブで処理すべきデータをＰＣＩｅバス経由でプログラマブル処理部４００（後述の第２ポート）に送信することで、プログラマブル処理部４００に構成された第２の論理回路を用いてそのデータ（すなわち第２のジョブ）を処理する。なお後述するように、第２の論理回路は、制御部１１１がＰＣＩｅバス経由でプログラマブル処理部４００（後述の第２ポート）に送信した第２の回路情報に従って、プログラマブル処理部４００に構成されている。
【００２８】
また、本実施例の制御部１２１は、制御部間通信用Ｉ／Ｆ（インターフェース）１３２によって制御部１１１と直接に接続されている。しかし、制御部１２１は、制御部１２１が制御部１１１に対して信号を通知できるように、制御部１１１と電気的に接続されていればよい。
【００２９】
主記憶部１２２は、ＳＤＲＡＭなどにより構成される高速アクセス可能な記憶装置である。主記憶部１２２では、制御部１２１が処理するデータが展開されるほか、制御部１２１が実行するソフトウェアが展開される。
【００３０】
補助記憶部１２３は、フラッシュメモリなどの不揮発性の記憶装置であり、画像データ、ソフトウェアなどが格納される。
【００３１】
外部ＩＦ部１２４は、Ｅｔｈｅｒｎｅｔ（登録商標）やＵＳＢに対応したインターフェースである。なお図１において、第２処理部１２０は外部ＩＦ部１２４を介して第１処理部１１０のみと接続されているが、ネットワークサーバやクライアントＰＣといった外部情報端末と接続されても構わない。
【００３２】
デバイスＩＯ（入出力）部１２４は、ＵＳＢやＴｈｕｎｄｅｒｂｏｌｔ（登録商標）等のデータ通信用バス規格に対応したデータ入出力部である。例えば、周囲の温度をモニタリングする温度センサーや、周囲の状況を画像イメージとして取得するイメージセンサー等を接続することが可能である。
【００３３】
以上の各部がシステムバス１２７を介して相互に電気的に接続される。
【００３４】
プログラマブル処理部４００は、インターフェース１３０を介して制御部１１１と接続し、インターフェース１３１を介して制御部１２１と接続する。インターフェース１３０および１３１のそれぞれは、ＰＣＩｅバスおよびＦＰＧＡ制御バスである。プログラマブル処理部４００の詳細ついては図４を用いて後述する。
【００３５】
作動記憶部１２６は、ＳＤＲＡＭなどにより構成される高速アクセス可能な記憶装置であり、プログラマブル処理部４００と接続されワークメモリデバイスとして機能する。
【００３６】
制御部間通信用Ｉ/Ｆ１３２は、ＵＳＢやＴｈｕｎｄｅｒｂｏｌｔ等のデータ通信用バスであり、制御部間でのジョブの制御、コンフィギュレーションの制御情報等に用いられる。ただし画像処理システム１００の変形例として、制御部間通信用Ｉ/Ｆ１３２を備えずに、外部ＩＦ部１２４や外部ＩＦ１１４を介して複数の制御部間でデータ通信を行っても良い。
【００３７】
以上が本実施例における画像処理システム１００の全体ブロック図である。
【００３８】
＜プログラマブル処理部４００構成＞
プログラマブル処理部４００は、内部の論理回路構成がプログラミング可能なプログラマブルロジックデバイスである。本実施例では、プログラマブル処理部４００はＦＰＧＡを例に説明するが、ＣＰＬＤ等の論理回路構成がプログラミング可能なプログラマブルロジックデバイスであれば良い。
【００３９】
また本実施例のプログラマブル処理部４００は、不図示のコンフィギュレーションメモリとファブリック４０２を含む。ファブリック４０２は、複数の論理ブロック、配線領域を有する。１つの論理ブロックは、入力に対する出力を決定するルックアップテーブルと、出力を保持するレジスタとを有する。配線領域は、論理ブロックどうしや、論理ブロックと外部デバイスへのインターフェース（ＰＣＩｅのＩＰコアなど）とを接続する。回路情報がプログラマブル処理部４００に書き込まれると、各論理ブロックに含まれるルックアップテーブルや、配線領域の接続状態が変更されて論理回路が構成される。また、ファブリック４０２は、複数の領域に区分けされ、各領域は、他の領域に構成されている論理回路の内容に影響を与えずに、動的に再構成可能である。各領域は、領域を一意に特定するための情報（識別子ＰＲ１、ＰＲ２、など）によって一意に特定される。
【００４０】
図４は、本実施例におけるプログラマブル処理部４００（ＦＰＧＡ）の内部ブロック図である。プログラマブル処理部４００は、コンフィギュレーションコントローラ４０１、ファブリック４０２、ＰＣＩｅ  ＩＰ４０３、メインコントローラＩＰ４０４を含む。
【００４１】
コンフィギュレーションコントローラ４０１は、制御部１１１から受け取った回路情報のプログラマブル処理部４００への書き込み（コンフィギュレーション）を行う。コンフィギュレーションコントローラ４０１は、ファブリック４０２のコンフィギュレーションが完了したことを検出すると、コンフィギュレーション完了を示す信号であるＩｎｉｔＤｏｎｅ信号を、制御部１１１に出力する。
【００４２】
ファブリック４０２には、回路情報に従った論理回路が構成される。本実施例では、ファブリック４０２内に複数の領域（ＰＲ１、ＰＲ２、等）があらかじめ用意されており、各領域に論理回路の再構成が行える。ファブリック４０２内部のＰｒｏｃＤｏｎｅ＿Ｒｅｇｉｓｔｅｒ０およびＰｒｏｃＤｏｎｅ＿Ｒｅｇｉｓｔｅｒ１は、コンフィギュレーションされた論理回路で実行される処理の実行終了ステータスを示す情報を保持するレジスタである。ＰｒｏｃＤｏｎｅ＿Ｒｅｇｉｓｔｅｒ０からのＰｒｏｃＤｏｎｅ＿０信号は制御部１１１へ出力され、ＰｒｏｃＤｏｎｅ＿Ｒｅｇｉｓｔｅｒ１からのＰｒｏｃＤｏｎｅ＿１信号は制御部１２１へ出力される。
【００４３】
ＰＣＩｅ  ＩＰ４０３は、ＰＣＩｅのＰＨＹ等を含むプロトコルスタックである。このＰＣＩｅ  ＩＰ４０３は、少なくとも２つ以上のＰＣＩｅのＩＰコアを有し、各ＩＰコアは対応するＰＣＩｅ接続を実現する。本実施例のＰＣＩｅ  ＩＰ４０３は、ファブリック４０２に接続されている２つのＰＣＩｅのＩＰコア（第１ポート、第２ポート）を有する。第１ポートによって制御部１１１とファブリック４０２との間のＰＣＩｅ接続が実現され、第２ポートによって制御部１２１とファブリック４０２との間のＰＣＩｅ接続が実現される。
【００４４】
図４のＰＣＩｅ＿０信号、ＰＣＩｅ＿１信号は、各ポートに接続されるＰＣＩｅバスを介してデータの送受信信号およびクロック信号を示している。ＰＣＩｅ  ＩＰ４０３は、ＰＣＩｅ＿０信号を制御部１１１と送受信し、ＰＣＩｅ＿１信号を制御部１２１へ送受信する。これらの信号は、制御部１１１または制御部１２１と、プログラマブル処理部４００間のデータ通信に用いられる。特にＰＣＩｅ＿０信号は、制御部１１１から送信される回路情報を、コンフィギュレーションのために受信する際にも用いられる。すなわち、制御部１１１は、ＰＣＩｅバスを介して、プログラマブル処理部４００へ、回路情報およびその回路情報に従ったコンフィギュレーションの指示を送信できる。具体的には制御部１１１は、コンフィギュレーションが可能かをプログラマブル処理部４００に問い合わせる。そして制御部１１１は、その応答としてプログラマブル処理部４００からＰＣＩｅバス経由でコンフィギュレーションが可能であることを示す情報を受信したことに基づいて回路情報を送信する。以上によって制御部１１１は、プログラマブル処理部４００に対してコンフィギュレーションの実行を指示する。
【００４５】
しかし、ＰＣＩｅ＿１信号は、制御部１２１から回路情報をコンフィギュレーションのために受信することには使用できない。すなわち、制御部１２１は、ＰＣＩｅバスを介して、プログラマブル処理部４００へコンフィギュレーションの指示を送信しない（できない）ように構成されている。
【００４６】
言い換えれば、プログラマブル処理部４００は、制御部１１１から送信される回路情報に従って論理回路をファブリック４０２に構成することが可能であるが、制御部１２１から送信される回路情報に従って論理回路をファブリック４０２に構成することが不可能であるように設定されている。そのため、制御部１１１は、制御部１１１によるジョブの処理において用いられる論理回路の回路情報をＰＣＩｅバス（インターフェース１３０）経由でプログラマブル処理部４００へ送信する。加えて、制御部１１１は、制御部１２１によるジョブの処理において用いられる論理回路の回路情報も、ＰＣＩｅバス（インターフェース１３０）経由でプログラマブル処理部４００へ送信する。
【００４７】
メモリコントローラＩＰ４０４は、ＤＤＲ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ）規格等に対応したＰＨＹやコントローラを含むメモリインターフェースである。図４のＤＲＡＭ信号は、データ信号、アドレス信号、クロック信号等を示している。ＤＲＡＭ信号は作動記憶部１２６へ出力される。
【００４８】
＜ジョブデータ構成＞
図２（Ａ）は、ジョブデータのデータ構成例である。ジョブデータとは、第１処理部１１０あるいは第２処理部１２０において実行されるジョブごとに生成されるデータである。ジョブデータにはジョブＩＤ、ジョブ要求機能、ジョブ設定パラメータといった情報が含まれる。
【００４９】
ジョブＩＤは、ジョブごとに固有の情報であり、ジョブＩＤを参照することでジョブデータを一意に特定することが可能である。
【００５０】
ジョブ要求機能は、当該ジョブを実行するために必要な機能を示す情報である。詳細は後述する。
【００５１】
ジョブ設定パラメータは、画像処理部設定データと画像ソースから構成される。画像処理部設定データとは、操作表示部１１５や外部情報端末、あるいは既に実行中のジョブを起点に、更に別のジョブデータが生成される際に設定される値であり、ユーザによって選択もしくは任意入力された調整パラメータや、予め記録されている画像処理用パラメータの値である。例えば、濃度値や、モノクロかフルカラーかの選択情報などが該当する。画像データソースは、当該ジョブで処理される対象としての画像データが記憶されている場所や画像データの形式を示すものである。例えば、主記憶部１１２に記憶されている画像データを示したり、外部デバイスからストリーム入力される画像データを示したりする。画像データの形式はＲＡＷデータであってもよいし、ＪＰＥＧやＪＢＩＧ、ＴＩＦＦなどの画像データフォーマットでもよく、データ形式を問わない。
【００５２】
図２（Ｂ）は、第１処理部１１０側で発生したジョブにおける、ジョブ要求機能と、その機能に関連する情報を対応付けたジョブ要求機能対応テーブルの一例である。このテーブルは補助記憶部１１３に記憶されており、第１処理部１１０の起動時に制御部１１１が補助記憶部１１３から読み出して主記憶部１１２に記憶する。
【００５３】
ジョブ要求機能の列には、画像処理システム１００で処理可能な機能が示されている。サポートデバイスの列には、対応するジョブ要求機能を実行可能なデバイスが示されている。プログラマブル処理部利用の列には、対応するジョブ要求機能を実行する際に、プログラマブル処理部を利用する必要があるかどうかが示されている。回路情報の列には、対応するジョブ要求機能を実行する際に必要な回路情報を一意に特定できる情報が示されている。制御部１１１は、ジョブデータ内のジョブ要求機能の情報と、図２（Ｂ）のジョブ要求機能対応テーブルとに基づいて、当該ジョブ要求機能を実現するためのデバイスや回路情報を決定することができる。
【００５４】
図２（Ｃ）は、第２処理部１２０側で実行するジョブにおける、ジョブ要求機能と、その機能に関連する情報を対応付けたジョブ要求機能対応テーブルの一例である。このテーブルは補助記憶部１２３に記憶されており、第２処理部１２０の起動時に制御部１２１が補助記憶部１２３から読み出して主記憶部１２２に記憶する。なお、第２処理部１２０側で実行するジョブとは、第１処理部１１０から第２処理部１２０に割り振られた処理の他にも、第２処理部１２０で発生したジョブも含んでいる。
【００５５】
ジョブ要求機能の列には、当該画像処理システムで処理可能な機能が示されている。プログラマブル処理部利用の列には、対応するジョブ要求機能を実行する際に、を利用する必要があるかどうかが示されている。回路情報の列には、対応するジョブ要求機能を実行する際に必要な回路情報を一意に特定できる情報が示されている。制御部１２１は、ジョブデータ内のジョブ要求機能の情報と、図２（Ｃ）のジョブ要求機能対応テーブルとに基づいて、当該ジョブ要求機能を実現するためのデバイスや回路情報を決定することができる。ただし、第２処理部１２０で発生したジョブにおける、ジョブ要求機能対応テーブルで管理される情報は、第１処理部１１０が持つジョブ要求機能対応テーブルと同一のデータでも良い。
【００５６】
＜プログラマブル処理部４００の構成情報＞
図３（Ａ）、（Ｂ）はプログラマブル処理部４００に構成されている論理回路を示す構成情報の一例である。この構成情報は、制御部１１１によって主記憶部１１２に記憶される。また制御部１２１もこの構成情報を主記憶部１２２に記憶する。そうすることで、制御部１１１も制御部１２１も、プログラマブル処理部４００にその時点で構成されている論理回路の機能を、他の制御部に問い合わせることなく独立して知ることができる。すなわち、第１処理部１１０（制御部１１１）は、プログラマブル処理部４００のコンフィギュレーションを行う際に、構成情報を参照して、回路情報が書き込まれることで論理回路が構成されるファブリック４０２上の領域を決定できる。例えば、どのデバイスからも利用されていない論理回路を構成するファブリック４０２上の領域を特定し、その特定された領域に別の論理回路を構成すべく、回路情報を書き込むことができる。第２処理部１２０（制御部１２１）も同様である。すなわち、第２処理部１２０で発生したジョブを実行するためにプログラマブル処理部４００を利用する際に、制御部１２１は、構成情報を参照して、プログラマブル処理部４００のコンフィギュレーションが必要か否かを判定できる。コンフィギュレーションが必要であると判定された場合に、制御部１２１は、どの領域にどの論理回路を構成すべく、どの回路情報を書き込むかを、制御部間通信用Ｉ／Ｆ１３２を介して制御部１１１に指示するようにしても良い。主記憶部１１２、１２２に記憶される各構成情報は、プログラマブル処理部４００に構成される論理回路が変わるたびに更新される。
【００５７】
まずは図３（Ａ）について説明し、図３（Ｂ）については後述する。
【００５８】
図３（Ａ）に示される構成情報は、３つの情報（１）、（２）、（３）を１レコードとして含む。
【００５９】
情報（１）：ＰＲ位置の列（図３の左列）の情報は、プログラマブル処理部４００のファブリック４０２上の各領域（ＰＲ：Ｐａｒｔｉａｌ  Ｒｅｇｉｏｎ）の位置を特定するための情報である。この各領域には、論理回路を構成することができる。この情報は、領域の識別子（領域名など）や、論理回路へアクセス可能なアドレスデータなど、ファブリック４０２上の各領域を特定できる情報であれば良い。
【００６０】
情報（２）：サポートデバイスの列（図３の中列）の情報は、ファブリック４０２上の領域に構成されている論理回路を利用中のデバイスを特定するための情報である。この情報は、本実施例では「第１処理部」、「第２処理部」、あるいは、「非該当」（図３（Ａ）では「−」で示されている）のいずれかである。
【００６１】
情報（３）：回路情報の列（図３の右列）の情報は、ファブリック４０２上の対応領域に構成されている論理回路の回路情報を特定するための情報である。例えば、回路情報の識別子（データファイル名など）や、データが記憶されている場所などである。
【００６２】
なお、本実施例では、構成情報は第１処理部１１０、第２処理部１２０両方に備えられているが、これに限らない。例えば、第１処理部１１０もしくは第２処理部１２０どちらか一方の処理部の主記憶部に構成情報が記憶されていて、他方の処理部によって外部ＩＦ１１４や外部ＩＦ１２４を介して参照されるように構成されても良い。
【００６３】
＜実施例１の制御について＞
実施例１の制御の説明をする上で、以下のように説明していく。
【００６４】
図５を用いて、制御部１２１の制御フローを説明する。
【００６５】
図６を用いて、制御部１１１の制御フローを説明する。
【００６６】
図７を用いて、制御部１１１、制御部１２１、プログラマブル処理部４００が連携して動作した処理フローについて説明する。
【００６７】
＜制御部１２１の制御フロー＞
図５は、制御部１２１の制御フローを示すフローチャートである。本フローは主記憶部１２２にロードされたプログラムに従って制御部１２１により実行される。
【００６８】
Ｓ５００では、制御部１２１は、ジョブの発生を検知し、図２（Ａ）に示したジョブデータから、ジョブ要求機能を取得する。
【００６９】
ジョブの発生とは、ジョブデータが、制御部１２１にて実行されるアプリケーションにより生成されることである。あるいは、他の制御部（例えば制御部１１１）によって生成されたジョブデータを制御部１２１が受信することである。例えば、新たなカメラデバイスがデバイスＩＯ部１２５に接続され、カメラデバイスから送られてくる画像データの処理が新たに必要になった場合等に、カメラデバイスの画像処理を要求機能とした新たなジョブが生成される。そしてカメラ画像処理が行えるようにコンフィギュレーションが行われるなどの所望の処理が開始される。なお、接続されるデバイスはカメラに限ったものでは無い。さらに、ジョブ生成の起点となるイベントは、デバイスＩＯ部１２５に、デバイスが接続された時に限らない。
【００７０】
Ｓ５０１では、制御部１２１は、Ｓ５００で取得したジョブ要求機能と図２（Ｃ）に示したジョブ要求機能対応テーブルとからプログラマブル処理部４００の利用を行うか否かを判断する。具体的には制御部１２１が、Ｓ５００で取得したジョブ要求機能を含む図２（Ｃ）のレコードを特定し、特定されたレコードのプログラマブル処理部利用の列を参照する。「する」であれば、制御部１２１はプログラマブル処理部４００を利用すると判定し、処理はＳ５０２へ進む。一方、「しない」であれば、制御部１２１はプログラマブル処理部４００を利用しないと判定し、処理は終了する。
【００７１】
Ｓ５０２では、制御部１２１は、主記憶部１２２に記憶されている構成情報（図３（Ａ））を確認する。具体的には、制御部１２１は、Ｓ５００で取得したジョブ要求機能を含む図２（Ｃ）のレコードを探す。もし該当するレコードがなければ、制御部１２１は、サポートデバイスの情報として「非該当」を取得する。もし該当するレコードがあれば、制御部１２１は、その図２（Ｃ）のレコードの回路情報の列を参照し、回路情報を特定するための情報を取得する。次に制御部１２１は、その取得された情報を含む図３（Ａ）の構成情報のレコードを特定し、特定されたレコードのサポートデバイスの列の情報を取得する。例えば、ジョブ要求機能が「センサー処理２」であれば、図２（Ｃ）のレコードの回路情報の列は、「ＡＤＶ＿Ｓｅｎｃｉｎｇ．ｃｏｎｆｉｇ」「ＡＤＶ＿Ｉｍｇ＿Ｐｒｏｃｅｓｓ０１．ｃｏｎｆｉｇ」「ＡＤＶ＿Ｉｍｇ＿Ｐｒｏｃｅｓｓ０２．ｃｏｎｆｉｇ」の３つの情報を含む。そのうちの「ＡＤＶ＿Ｓｅｎｃｉｎｇ．ｃｏｎｆｉｇ」については、図３（Ａ）の構成情報に該当するレコードがないので、「非該当」という情報が取得される。
【００７２】
Ｓ５０３では、制御部１２１は、Ｓ５０２で取得された情報が「第１処理部」あるいは「非該当」である場合に、コンフィギュレーションが必要であると判定し、処理をＳ５０４へ進める。一方、制御部１２１は、Ｓ５０２で参照されたサポートデバイスが第２処理部である場合に、コンフィギュレーションが不要であると判定し、処理をＳ５０８へ進める。
【００７３】
Ｓ５０４では、制御部１２１は、制御部間通信用Ｉ／Ｆ１３２を介して、制御部１１１にコンフィギュレーション依頼を行う。このコンフィギュレーション依頼には、Ｓ５００で取得したジョブ要求機能を含む図２（Ｃ）のレコードの回路情報の列の情報（必要な回路情報を特定するための情報）が含まれる。例えば、ジョブ要求機能が「センサー処理２」であれば、「ＡＤＶ＿Ｓｅｎｃｉｎｇ．ｃｏｎｆｉｇ」「ＡＤＶ＿Ｉｍｇ＿Ｐｒｏｃｅｓｓ０１．ｃｏｎｆｉｇ」「ＡＤＶ＿Ｉｍｇ＿Ｐｒｏｃｅｓｓ０２．ｃｏｎｆｉｇ」の３つの情報がコンフィギュレーション依頼に含まれる。そして処理はＳ５０６へ進む。
【００７４】
Ｓ５０６では、制御部１２１は、制御部間通信用Ｉ／Ｆ１３２を介して、制御部１１１からコンフィギュレーション完了通知を受信したかを判定する。受信したならば処理はＳ５０７へ進むが、受信しなかったならば処理はＳ５０６へとループする。すなわち、コンフィギュレーション完了通知を受信するまで処理は待機される。なおコンフィギュレーション完了通知には、制御部１２１に記憶されている構成情報を更新するために用いられる情報（どのＰＲ位置に、どのサポートデバイスが利用中の、どの回路情報による論理回路が構成されたかを示す情報）が含まれる。
【００７５】
Ｓ５０７では、制御部は、主記憶部１２２に記憶されている構成情報（図３（Ａ））を、コンフィギュレーション完了通知を受けて更新する。例えば、コンフィギュレーション完了通知には、「ＰＲ６の領域に「ＡＤＶ＿Ｓｅｎｃｉｎｇ．ｃｏｎｆｉｇ」に対応する論理回路が構成され、第２処理部が利用中である」ということを示す情報が含まれる。すると、制御部１２１は、主記憶部１２２の構成情報を、図３（Ａ）から図３（Ｂ）に更新する。すなわち、主記憶部１２２の構成情報のＰＲ６のレコードが更新される。そして処理はＳ５０８へ進む。
【００７６】
Ｓ５０８では、制御部１２１は、プログラマブル処理部４００のファブリック４０２に構成されている所望の論理回路を用いて、Ｓ５００で発生したジョブの処理を行う。すなわち制御部１２１は、プログラマブル処理部４００の論理回路を利用してジョブを処理する（協調処理を実行する）。ファブリック４０２に構成されたどの論理回路を用いるかは、コンフィギュレーション完了通知に含まれる情報のうち、どのＰＲ位置に論理回路が構成されたかを示す情報に基づいて決定される。この協調処理において、制御部１２１は、ジョブで処理すべきデータを、ＰＣＩｅバス経由でプログラマブル処理部４００（第２ポート）へ送信する。そしてプログラマブル処理部４００（第２ポート）は、処理結果のデータを制御部１２１へ送信してジョブの実行を終了する。ジョブの実行が終了する場合には、プログラマブル処理部４００のＰｒｏｃＤｏｎｅ＿Ｒｅｇｉｓｔｅｒ１からＰｒｏｃＤｏｎｅ＿１信号が、制御部１２１に対して送信される。
【００７７】
Ｓ５０９では、制御部１２１は、協調処理が完了したかを判定する。具体的には制御部１２１は、ＰｒｏｃＤｏｎｅ＿１信号を受信したかを判定し、受信されていれば本フローを終了し、そうでなければ処理をＳ５０８へループする。すなわち、協調処理によるジョブの処理が終了するまで処理は待機される。
【００７８】
以上が制御部１２１の制御フローの説明である。
【００７９】
＜制御部１１１の制御フロー＞
図６は、制御部１１１の制御フローを示すフローチャートである。本フローは主記憶部１１２にロードされたプログラムに従って制御部１１１により実行される。
【００８０】
Ｓ６００では、制御部１１１は、制御部間通信用Ｉ／Ｆ１３２を介して、制御部１２１からＳ５０４のコンフィギュレーション依頼を受信したかを判定する。受信した場合に、処理はＳ６０２へ進むが、受信しなかった場合、処理はＳ６００へとループする。すなわち、コンフィギュレーション依頼を受信するまで処理は待機される。
【００８１】
Ｓ６０１では、制御部１１１は、Ｓ６００で受信されたコンフィギュレーション依頼に含まれる全ての情報（回路情報を特定するための情報）のそれぞれを確認したか判定する。例えばコンフィギュレーション依頼に「ＡＤＶ＿Ｓｅｎｃｉｎｇ．ｃｏｎｆｉｇ」「ＡＤＶ＿Ｉｍｇ＿Ｐｒｏｃｅｓｓ０１．ｃｏｎｆｉｇ」「ＡＤＶ＿Ｉｍｇ＿Ｐｒｏｃｅｓｓ０２．ｃｏｎｆｉｇ」の３つの情報が含まれている場合、各情報について、後続の処理Ｓ６０２以降の処理を行ったかが判定される。全ての情報が確認されていたならば処理はＳ６０６へ進み、そうでなければ制御部１１１は、コンフィギュレーション依頼に含まれる情報のうちで未確認の情報を１つ特定し、その特定された情報についてＳ６０２以降の処理を行う。
【００８２】
Ｓ６０２では、制御部１１１は、主記憶部１１２に記憶されている構成情報（図３（Ａ））を確認する。具体的には、制御部１１１は、Ｓ６０１で特定された情報（回路情報を特定するための情報）が含まれるレコードを図３（Ａ）の構成情報から探す。
【００８３】
もし該当するレコードがなければ、制御部１１１は、所望の論理回路が構成されていないので、その回路情報に従ったコンフィギュレーションが必要であると判定する。
【００８４】
もし該当するレコードがあれば、制御部１１１は、そのレコードのサポートデバイスの列の情報を参照し、その情報によって示されるサポートデバイスが、「コンフィギュレーション依頼を送信した処理部（本実施例では第２処理部）」あるいは「非該当」であるかを判定する。
【００８５】
もしサポートデバイスが「依頼を送信した処理部」あるいは「非該当」であれば、「依頼を送信した処理部」がすぐに利用可能な状態で、所望の論理回路が既に構成されている。したがって制御部１１１は、その回路情報に従ったコンフィギュレーションが不要であると判定する。
【００８６】
そうではなくサポートデバイスが「依頼を送信した処理部とは異なる処理部（本実施例では第１処理部）」であれば、所望の論理回路が既に構成されているものの、「依頼を送信した処理部」がすぐに利用可能な状態ではない。したがって制御部１１１は、その回路情報に従ったコンフィギュレーションが必要であると判定する。
【００８７】
Ｓ６０３では、制御部１１１は、Ｓ６０２での判定結果に基づいて、処理を分岐させる。すなわち、制御部１１１は、回路情報に従ったコンフィギュレーションが必要であれば処理をＳ６０４へ進め、そうでなければ処理をＳ６０１に進める。コンフィギュレーション依頼を受信した上でここでもコンフィギュレーションの要否を判定しているのは、コンフィギュレーション要否を判定してＳ５０３の時点とはプログラマブル処理部４００のコンフィギュレーションの状態が変化している可能性があるためである。例えば、Ｓ５０３の時点では制御部１１１が論理回路を利用しているためにコンフィギュレーションが必要と判断されたが、Ｓ６０３の時点で制御部１１１による論理回路の利用が終了していると、コンフィギュレーションは不要と判定される。
【００８８】
Ｓ６０４では、制御部１１１は、Ｓ６０１で特定された情報（回路情報を特定するための情報）に基づいて、プログラマブル処理部４００にコンフィギュレーションの実行を指示する。具体的には、まず制御部１１１は、書き込まれるべき回路情報（例えばＡＤＶ＿Ｓｅｎｃｉｎｇ．ｃｏｎｆｉｇ）を、Ｓ６０１で特定された情報から特定する。そして制御部１１１は、論理回路が構成されるべきファブリック４０２の空き領域（例えばＰＲ６の領域）を探し、コンフィギュレーションコントローラ４０１に対してその領域を指定する。そして制御部１１１は、ファブリックコントローラ４０１に対して、ＰＣＩｅ＿０信号を用いてＰＣＩｅ  ＩＰ４０３の第１ポート経由で、ファブリック４０２の領域（例えばＰＲ６の領域）に構成されるべき論理回路の回路情報を送信することを通知する。そして制御部１１１は、主記憶部１１２に記憶されている回路情報をＰＣＩｅ  ＩＰ４０３の第１ポート経由でプログラマブル処理部４００に送信する。すると、コンフィギュレーションコントローラ４０１は、ＰＣＩｅ  ＩＰ４０３の第１ポート経由で受信した回路情報をプログラマブル処理部４００に書き込む。以上の手順で、コンフィギュレーションが実行される。コンフィギュレーションコントローラ４０１は、コンフィギュレーションが完了すると、ＩｎｉｔＤｏｎｅ信号を、制御部１１１に送信する。
【００８９】
Ｓ６０５では、制御部１１１は、プログラマブル処理部４００からＩｎｉｔＤｏｎｅ信号を受信したかを判定する。受信していれば、処理はＳ６０１へ進み、そうでなければ処理はＳ６０５へループする。すなわち、ＩｎｉｔＤｏｎｅ信号を受信するまで処理は待機される。
【００９０】
Ｓ６０６では、制御部１１１は、Ｓ６００で受信されたコンフィギュレーション依頼に含まれる全ての情報（回路情報を特定するための情報）について、主記憶部１１２に記憶されている構成情報（図３（Ａ）を最新の情報に更新する。この更新の様子は２通りある。
【００９１】
１つ目は、Ｓ６０１で特定された情報について、Ｓ６０４において、コンフィギュレーションの指示が行われた場合。
【００９２】
２つ目は、Ｓ６０１で特定された情報について、Ｓ６０３において、サポートデバイスが「コンフィギュレーション依頼を送信した処理部」あるいは「非該当」であったために、コンフィギュレーションが不要であると判定された場合。
【００９３】
１つ目の場合は、制御部１１１は、Ｓ６０１で特定された情報について、構成情報（図３（Ａ））を、コンフィギュレーション後のプログラマブル回路の構成を反映した構成情報（例えば図３（Ｂ））に更新する。例えば、サポートデバイスが第２処理部であるＰＲ６の領域に対してＡＤＶ＿Ｓｅｎｃｉｎｇ．ｃｏｎｆｉｇによって特定された回路情報が書き込まれていることを示す情報が追加される。
【００９４】
一方２つ目の場合は、制御部１１１は、Ｓ６０１で特定された情報について、構成情報のサポートデバイスの列だけを更新する。これは、既に制御部１２１が必要な論理回路がファブリック４０２に構成されてはいるのでコンフィギュレーションは実行されはしなかったが、サポートデバイスの情報は更新しておく必要があるからである。
【００９５】
Ｓ６０７では、制御部１１１は、制御部間通信用Ｉ／Ｆ１３２を介して、コンフィギュレーション完了通知を制御部１２１に送信する。ここで、Ｓ６０６で述べた２つの場合について、コンフィギュレーション完了通知に含まれる情報が異なることに注意されたい。
【００９６】
前述の１つ目の場合においては、制御部１１１は、コンフィギュレーション完了通知に、コンフィギュレーションによって変更されたファブリック４０２に関する情報を含める。すなわち、どのＰＲ位置に、どのサポートデバイスが利用中の、どの回路情報による論理回路が構成されたかを示す情報が、完了通知に含まれる。
【００９７】
一方前述の２つ目の場合においては、制御部１１１は、コンフィギュレーション完了通知に、主記憶部１１２に記憶されている構成情報において、サポートデバイスの列の情報が変更されたレコードの情報を含める。
【００９８】
以上が本実施例における、制御部１１１の制御フローの説明である。
（実施例２）
実施例１によれば、制御部１２１で処理すべきジョブが発生したことが検知されたことに基づいて、制御部１１１は、そのジョブが制御部１２１で処理されるべく、そのジョブの処理に必要な論理回路の回路情報を、プログラマブル処理部４００に送信する。すなわち、実施例１では、「制御部１２１で処理すべきジョブの発生が検知された後」に、コンフィギュレーション処理が開始される。
【００９９】
本実施例では、「制御部１２１で処理すべきジョブの発生が検知される前」に、コンフィギュレーション処理が開始される。
【０１００】
これは、図８のフローチャートの処理が実行されることで実現される。図８のフローチャートの処理は、主記憶部１１２にロードされたプログラムに従って制御部１１１により実行される。すなわち、制御部１１１が、図６のフローチャートの処理Ｓ６００における処理の待機中に、先行コンフィギュレーション処理（Ｓ８００）を行うことで実現される。
【０１０１】
先行コンフィギュレーション処理とは、制御部１２１が処理すべきジョブの発生が検知される前に、制御部１２１がそのジョブの処理で利用する論理回路の回路情報を、制御部１１１がプログラマブル処理部４００に送信する処理である。先行コンフィギュレーション処理（Ｓ８００）の詳細は、図９のフローチャートを用いて説明する。
【０１０２】
このように先行コンフィギュレーション処理を行うことによって、本実施例では、実施例１と同様に、制御部１１１は、制御部１２１がジョブの処理で利用する論理回路の回路情報を、プログラマブル処理部４００に送信できる。本実施例ではさらに、制御部１２１が処理すべきジョブの発生が検知される前にコンフィギュレーション処理が開始されるので、ジョブの発生が検知されてからコンフィギュレーション処理を開始する場合よりも早くコンフィギュレーション処理が完了できる。すなわち、制御部１２１による論理回路を利用したジョブの処理の開始を早めることができる。また制御部１１１が処理するジョブについても同様に、論理回路を利用したジョブの処理開始を早めることができる。
【０１０３】
＜先行コンフィギュレーション処理＞
先行コンフィギュレーション処理について、図７、図９を用いて説明する。
【０１０４】
図７は、本実施例の先行コンフィギュレーション処理の実行にあたって用いられる状態遷移テーブルの一例である。この状態遷移テーブルを用いることで、システムの現在の状態から移行される次の状態において発生するジョブの処理で利用される論理回路（特に、制御部１２１によるジョブの処理で利用される論理回路）が予測される。そして、利用が予測されるその論理回路の回路情報を、ジョブ（特に制御部１２１が処理すべきジョブ）の発生が検知される前に、制御部１１１がプログラマブル処理部４００に送信するようにする。この一連のフローの具体的な処理が図９のフローチャートに示される。
［状態遷移テーブル］
状態遷移テーブルの詳細を、図７を用いて説明する。本実施例において、状態遷移テーブルは主記憶部１１２に記憶されており、制御部１１１は、画像処理システム１００の現在の状態（状態テーブル７０１）に応じて、適宜、適切な状態遷移テーブル７０２を取得する。状態遷移テーブル７０２は、画像処理システム１００（特に第１処理部１１０）の現在の状態から移行しうる移行先の状態に関するテーブルである。
【０１０５】
状態テーブル７０１は主記憶部１１２に記憶され、制御部１１１によって管理されている。すなわち、制御部１１１は、画像処理システム１００の状態を所定のタイミングで監視し、システムの状態に関する情報で状態テーブル７０１を更新する。このテーブル７０１には、画像処理システム１００の現在の状態、現在の状態になってからの経過時間、現在の状態が特定の処理を行うものであればその処理の進行度を含む。図７のテーブル７０１では、システムの現在の状態は、特定の処理を行っていない状態を示す「Ｉｄｌｅ」であり、その状態になってからの経過時間は「３分（３ｍｉｎ）」であり、現在の状態は特定の処理を行っていないので処理進行度は「空欄」である。
【０１０６】
状態遷移テーブル７０２には、移行先候補、回路情報、サポートデバイスの列がある。移行先候補の列には、状態テーブル７０１に示される「現在の状態」から移行しうる、移行先の状態の候補が示される。すなわち状態テーブル７０１の「現在の状態」から適切な状態遷移テーブル７０２が辿れるように、状態遷移テーブル７０２は「現在の状態」と関連付けられて記憶されている。そのため移行先候補の内容は固定ではなく、現在の状態に応じて変わる。例えば、状態テーブル７０１の現在の状態が「Ｉｄｌｅ」であれば、移行先の状態の候補として、「Ｓｌｅｅｐ」、「Ｐｒｉｎｔ」、「Ｓｃａｎ」が示される状態遷移テーブル７０２が特定される。
【０１０７】
状態遷移テーブル７０２の移行先候補の１つ１つは、それぞれ異なるレコードに含まれる。レコードには、移行先候補の他、回路情報、サポートデバイスの列がある。ある移行先候補のレコードに含まれる回路情報の列は、その候補となった状態において利用されると予測される論理回路の回路情報を特定するための情報を含む。またサポートデバイスの列は、その候補となった状態において利用されると予測される論理回路を、利用するデバイス（制御部１１１（第１処理部１１０）、制御部１２１（第２処理部１２０）など）を特定するための情報を含む。例えば、移行先候補「Ｓｌｅｅｐ」を含むレコードの回路情報の列には、システム１００（第１処理部１１０）が状態「Ｓｌｅｅｐ」であるときに、サポートデバイスによって利用されると予測される論理回路の回路情報を特定するための情報（例：識別子「ＡＤＶ＿Ｓｅｎｃｉｎｇ．ｃｏｎｆｉｇ」）が含まれる。同様に識別子「ＡＤＶ＿Ｉｍｇ＿Ｐｒｏｃｅｓｓ０１．ｃｏｎｆｉｇ」「ＡＤＶ＿Ｉｍｇ＿Ｐｒｏｃｅｓｓ０２．ｃｏｎｆｉｇ」も同レコードの回路情報の列に含まれる。またそのレコードのサポートデバイスの列には、前述の３つの識別子によって特定される回路情報で実現される論理回路をジョブ処理で利用すると予測される「第２処理部（制御部１２１のこと）」を特定するための情報が含まれる。
【０１０８】
また例えば移行先候補が「Ｐｒｉｎｔ」であるレコードの回路情報には、３つの識別子
が含まれている。その３つのうちの１つの識別子「ＡＤＶ＿Ｓｅｎｃｉｎｇ．ｃｏｎｆｉｇ」に対応する論理回路は「第２処理部」によって利用されると予測されている。そこで、同レコード内で、回路情報の識別情報「ＡＤＶ＿Ｓｅｎｃｉｎｇ．ｃｏｎｆｉｇ」とサポートデバイスの識別情報「第２処理部」とが対応付けられた状態となっている。一方で、残り２つの識別子「ＡＤＶ＿ＩｍｇＰｒｏｃｅｓｓ０１．ｃｏｎｆｉｇ」「ＡＤＶ＿ＩｍｇＰｒｏｃｅｓｓ０２．ｃｏｎｆｉｇ」それぞれに対応する論理回路は、「第２処理部」だけでなく「第１処理部（制御部１１１のこと）」によっても利用されると予測されている。そこで、同レコード内で、回路情報の２つの識別情報「ＡＤＶ＿ＩｍｇＰｒｏｃｅｓｓ０１．ｃｏｎｆｉｇ」「ＡＤＶ＿ＩｍｇＰｒｏｃｅｓｓ０２．ｃｏｎｆｉｇ」と、サポートデバイスの２つの識別情報「第２処理部」「第１処理部」とが対応付けられた状態となっている。
【０１０９】
すなわち状態遷移テーブル７０２は、画像処理システム１００のその時点の状態と、移行先候補に対応した所定の回路情報との関連付けを示す情報として機能している。
［先行コンフィギュレーション処理のフロー］
図９を用いて、先行コンフィギュレーション処理のフローについて説明する。
【０１１０】
Ｓ９００で、制御部１１１は、画像処理システム１００の現在の状態に応じた適切な情報遷移テーブル７０２を取得し、その取得された状態遷移テーブル７０２の「回路情報」列の情報を取得する。すなわち、この処理は、複数の回路情報のうちの、画像処理システム１００の現在の状態に応じた少なくとも１つの回路情報を特定する処理に対応する。そして処理はＳ９０１へ進む。
【０１１１】
具体的には、制御部１１１は、主記憶部１１２に記憶されている状態テーブル７０１の「現在の状態」列を参照し、「現在の状態」列の情報に関連付けられている状態遷移テーブル７０２を、主記憶部１１２から取得する。例えば、「現在の状態」列の情報が「Ｉｄｌｅ」であれば、図７に示された状態遷移テーブル７０２が取得される。次に制御部１１１は、取得された状態遷移テーブル７０２の「回路情報」列の情報を取得する。
【０１１２】
取得される情報は、例えば、テーブル７０２の「回路情報」列の全ての情報であっても良い。
【０１１３】
あるいは、取得される情報は、制御部１１１は、テーブル７０１の「経過時間」列の情報や「処理進行度」の情報を参照し、その参照された情報に基づいて決められても良い。例えば、現在の状態が「Ｉｄｌｅ」であって「経過時間」が所定の閾値を越えた場合を考える。この場合、制御部１１１は、状態遷移テーブル７０２の「移行先候補」列が「Ｓｌｅｅｐ」のレコードの「回路情報」列の情報を取得するが、「Ｐｒｉｎｔ」および「Ｓｃａｎ」のレコードの「回路情報」列の情報を取得しない。これは、システム状態が「Ｉｄｌｅ」のまま長く続くと、システムの状態が「Ｓｌｅｅｐ」に移行する可能性が、他の状態に移行する可能性よりも高くなると予測できるためである。また例えば、現在の状態が「Ｓｃａｎ」であって「処理進行度」が所定の閾値を越えた場合を考える。この場合、制御部１１１は、状態遷移テーブル７０２の「移行先候補」列が「Ｐｒｉｎｔ」のレコードの「回路情報」列の情報を取得するが、「Ｓｌｅｅｐ」のレコードの「回路情報」列の情報を取得しない。これは、システム状態が「Ｓｃａｎ」の状態から抜けた直後にシステムの状態が「Ｓｌｅｅｐ」に移行する可能性よりも、「Ｐｒｉｎｔ」に移行する可能性の方が高いと予測できるためである。このように、状態テーブル７０１「経過時間」列の情報、「処理進行度」列の情報に基づいて、取得すべき情報を決めることで、後段のコンフィギュレーション処理で、不要な回路情報をプログラマブル処理部４００に書き込むことを抑制できる。
【０１１４】
Ｓ９０１では、制御部１１１は、Ｓ９００で取得された全ての情報（回路情報を特定するための情報）のそれぞれを確認したか判定する。例えばＳ９００で取得された情報に２つの情報が含まれている場合、各情報について、後続の処理Ｓ９０２以降の処理を行ったかが判定される。全ての情報が確認されていたならば処理はＳ９０６へ進み、そうでなければ制御部１１１は、コンフィギュレーション依頼に含まれる情報のうちで未確認の情報を１つ特定し、その特定された情報についてＳ９０２以降の処理を行う。
【０１１５】
Ｓ９０２〜Ｓ９０７のそれぞれの処理は、既に説明したＳ６０２〜Ｓ６０７のそれぞれの処理に対応し、実質的に同等の処理である。違いは次の点である。Ｓ６０２〜Ｓ６０７の処理のそれぞれは、Ｓ６０１で特定された情報（回路情報を特定するための情報）についての処理である。それに対して、Ｓ９０２〜Ｓ９０７の処理のそれぞれは、Ｓ９０１で特定された情報（回路情報を特定するための情報）についての処理である。
【０１１６】
以上が本実施例における、制御部１１１の制御フローの説明である。
【０１１７】
＜実施例２の変形例＞
上記の実施例２では、制御部１１１が、先行コンフィギュレーション処理（図９のフローチャートの処理）を、コンフィギュレーション依頼の受信待機中（Ｓ６００における処理待機中）に実行するようにしていた。
【０１１８】
本変形例では、画像処理システム１００の状態が別の状態に移行するタイミングで実行するようにする。すなわち、制御部１１１は、画像処理システム１００の状態が別の所定状態に移行することを検知する。そしてその検知に応じて制御部１１１が先行コンフィギュレーション処理を実行する。
【０１１９】
例えば、この場合、制御部１１１は、Ｓ９０２において取得する情報を、その所定状態に対応するレコードの「回路情報」列の情報に決定する。例えば、システム状態が「Ｉｄｌｅ」から「Ｓｌｅｅｐ」へ移行するタイミングであれば、制御部１１１は、Ｓ９０２において状態遷移テーブル７０２の「移行先候補」が「Ｓｌｅｅｐ」のレコードの「回路情報」列の情報のみを取得する。そうすることで、Ｓ９０５のコンフィギュレーション処理で、不要な回路情報のプログラマブル処理部４００への書き込みを抑制できる。
【０１２０】
ここで説明した変形例、特にシステム状態が「Ｓｌｅｅｐ」へ移行するタイミングで、「Ｓｌｅｅｐ」のレコードの「回路情報」列の情報から特定される回路情報をプログラマブル処理部４００に先行して書き込むことには、特別な効果がある。例えば、システム１００（第１処理部１１０）の動作状態が「Ｓｌｅｅｐ」に移行すると、一般的なシステムであれば、システムは低消費電力での動作状態となる。すなわち、状態「Ｓｌｅｅｐ」における消費電力は、状態「Ｉｄｌｅ」における消費電力より小さい。このような状況において、第１処理部１１０（制御部１１１）の動作状態は「Ｓｌｅｅｐ」の低消費電力状態のまま、第２処理部１２０（制御部１２１）で発生したジョブを処理したいことがある。
【０１２１】
例えばデバイスＩＯ部１２５にカメラデバイスが接続されて、そのカメラデバイスから送られてくる画像データの画像処理のジョブが第２処理部１２０（制御部１２１）で発生した場合である。このような場合に、その画像処理用の論理回路がファブリック４０２上に予め構成されていれば、第２処理部１２０（制御部１２１）は第１処理部１１０（制御部１１１）にコンフィギュレーション依頼を送信することなく、ジョブの処理を開始できる。その結果、第１処理部１１０（制御部１１１）は、コンフィギュレーション依頼を受け付けないので、コンフィギュレーション処理の実行のためにシステムの動作状態を「Ｓｌｅｅｐ」から移行させることはしない。つまり、低消費電力状態である状態「Ｓｌｅｅｐ」が維持されることになり、システム全体としての消費電力を小さくすることができる。
【０１２２】
なお上述の変形例では、先行コンフィギュレーション処理が実行されるタイミングとして、システム状態が「Ｉｄｌｅ」から「Ｓｌｅｅｐ」へ移行するタイミングを例示したが、これに限定されない。
【０１２３】
例えば、第１処理部１１０（制御部１１１）が回路情報（第１の回路情報）をＰＣＩｅバス経由でプログラマブル処理部４００（第１ポート）へ送信することで、その回路情報に対応した論理回路がファブリック４０２に構成される。そして第１処理部１１０（制御部１１１）は、その構成された論理回路を用いて第１のジョブを処理する。このとき画像処理システム１００の状態は、第１のジョブの処理が実行中であることを示す状態へ移行する。そして第１処理部１１０（制御部１１１）が論理回路を用いて第１のジョブの処理を完了すると、画像処理システム１００の状態は、第１のジョブの処理が完了したことを示す状態へ移行する。すなわち、画像処理システム１００の状態が、第１のジョブの処理の実行状態から、第１のジョブの処理の完了状態へ移行する。そして、制御部１１１は、この状態の移行に応じて、第２処理部１２０（制御部１２１）による第２のジョブの処理で用いられると予測される特定の論理回路の回路情報を、ＰＣＩｅバス経由でプログラマブル処理部４００（第１ポート）へ送信する。するとプログラマブル処理部４００は、第２のジョブの発生より前に、特定の論理回路を構成する。なお特定の論理回路は、どのようなものでも良い。例えば、複数の論理回路のうちで、第２処理部１２０（制御部１２１）によって過去に最も頻繁に用いられた論理回路や、ユーザが事前に指定した論理回路であっても良い。なお論理回路の構成先は、ファブリック４０２に空き領域があれば、その空き領域になされる。空き領域がなければ、制御部１１１によって最古に利用された論理回路が構成されている領域になされるようにすれば良いし、あるいは、制御部１１１による使用頻度が最も低い論理回路が構成されている領域になされるようにしても良い。このような構成であっても、第２処理部１２０（制御部１２１）が行うジョブ処理において所望の論理回路を速やかに利用させることができる。その結果ジョブ処理の完了を早めることができる。
（実施例３）
実施例２の先行コンフィギュレーション処理は、第１処理部１１０（制御部１１１）が起点となることで、実行されていた。すなわち、制御部１１１が、Ｓ６０１の処理待機中に、システムの動作状態の遷移を予測し、その予測された遷移後のシステムの状態でのジョブ処理で利用されると予測される論理回路の回路情報をプログラマブル処理部４００に送信する。
【０１２４】
本実施例のシステムは、第２処理部１２０（制御部１２１）が起点となって、先行コンフィギュレーション処理を行う。この場合は、Ｓ５００のジョブ検知前に先行コンフィギュレーション処理が行われる。制御部１２１による先行コンフィギュレーション処理は、Ｓ９００〜Ｓ９０３の処理と実質同様の処理を含む。すなわち、制御部１２１は、Ｓ９００の処理によって、予測される論理回路の回路情報を特定するための情報を取得する。次に制御部１２１は取得された各情報について、ファブリック４０２の構成状態を確認し（Ｓ９０１、Ｓ９０２）、回路情報のコンフィギュレーション処理が必要か否かを判定する（Ｓ９０３）。取得された各情報の全てについて、コンフィギュレーションが必要でなければ処理は終了する。１つの回路情報についてでもコンフィギュレーションが必要であれば、制御部１２１は、続いてＳ５０４〜Ｓ５０７の処理を、その回路情報について行い、処理を終了する。
【０１２５】
以上のような先行コンフィギュレーション処理によって、第２処理部１２０（制御部１２１）からでも、先行してコンフィギュレーション依頼を、制御部間通信用Ｉ／Ｆ１３２を介して、制御部１１１に送信することができる。
【０１２６】
これにより、ジョブの発生前からコンフィギュレーション依頼を行うので、コンフィギュレーション完了を早めることができ、プログラマブル処理部４００の論理回路を用いて速やかにジョブを処理することができる。これはジョブを処理するのが制御部１１１であるか制御部１２１であるかを問わない。
【０１２７】
（その他の実施例）
上述の実施例では、制御部１１１が、ＰＣＩｅバス経由で、プログラマブル処理部４００（第１ポート）に回路情報やデータを直接に送信していた。しかしながらこれだけに限定せず、制御部１１１がＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラを制御して、回路情報やデータをこのＤＭＡコントローラによってＰＣＩｅバス経由で、プログラマブル処理部４００（第１ポート）に送信しても良い。
【０１２８】
また上述の実施例のプログラマブル処理部４００では、制御部１２１からのＰＣＩｅバスを介してのコンフィギュレーションが不可能であった。しかし、本発明は、制御部１１１および制御部１２１のそれぞれから、それぞれが対応するＰＣＩｅバスを介してのコンフィギュレーションが可能であるプログラマブル処理部４００にも適用できる。これにより、コンフィギュレーションの許可および禁止の調停制御を制御部間で行う複雑さを避けることできる。
【０１２９】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2016111633.tif 000003
【図２】
2016111633.tif 000004
【図３】
2016111633.tif 000005
【図４】
2016111633.tif 000006
【図５】
2016111633.tif 000007
【図６】
2016111633.tif 000008
【図７】
2016111633.tif 000009
【図８】
2016111633.tif 000010
【図９】
2016111633.tif 000011