(57)【要約】【課題】複数のＣＰＵがＦＰＧＡを共用する構成において、各ＣＰＵがＦＰＧＡのコンフィギュレーションの完了タイミングを適切に検知することが難しい。【解決手段】コンフィギュレーションにより処理内容を書き換え可能なプログラマブル処理部と、前記プログラマブル処理部を共用する少なくとも２つの制御部とを備える情報処理装置であって、前記少なくとも２つの制御部のうちの一の制御部は、受け付けたジョブに応じて前記プログラマブル処理部のコンフィギュレーションを制御する制御手段と、コンフィギュレーションの後、前記少なくとも２つの制御部のうちの前記一の制御部とは異なる制御部であって前記プログラマブル処理部を利用して前記ジョブを処理する制御部に対し、前記ジョブが実行可能になったことを示す情報を通知する通知手段とを備える。【選択図】図１
2016071457.tif 000002
【特許請求の範囲】
【請求項１】
コンフィギュレーションにより処理内容を書き換え可能なプログラマブル処理部と、
前記プログラマブル処理部に接続され、前記プログラマブル処理部を共用する少なくとも２つの制御部と
を備え、
前記少なくとも２つの制御部のうちの一の制御部は、
受け付けたジョブに応じて前記プログラマブル処理部のコンフィギュレーションを制御する制御手段と、
前記プログラマブル処理部のコンフィギュレーションの後、前記少なくとも２つの制御部のうちの前記一の制御部とは異なる制御部であって前記プログラマブル処理部を利用して前記ジョブを処理する制御部に対し、前記ジョブが実行可能になったことを示す情報を通知する通知手段と
を備えることを特徴とする情報処理装置。
【請求項２】
コンフィギュレーションにより処理内容を書き換え可能なプログラマブル処理部と、
前記プログラマブル処理部に接続され、前記プログラマブル処理部を共用する少なくとも２つの制御部と
を備え、
前記少なくとも２つの制御部のうちの一の制御部は、受け付けたジョブに応じて前記プログラマブル処理部のコンフィギュレーションを制御する制御手段を備え、
前記少なくとも２つの制御部それぞれは、前記プログラマブル処理部に対し、当該プログラマブル処理部を利用して前記ジョブを処理する制御部を設定する設定手段を備え、
前記プログラマブル処理部は、コンフィギュレーションの後、前記設定手段にて設定された制御部に対し、コンフィギュレーションが完了したことを示す情報を通知する通知手段を備えることを特徴とする情報処理装置。
【請求項３】
前記一の制御部の設定手段は、コンフィギュレーションが完了した後に、前記プログラマブル処理部を利用する制御部を別の制御部に設定し、
前記別の制御部の設定手段は、前記通知手段からの通知を検知した後に、前記プログラマブル処理部を利用する制御部を前記一の制御部に設定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記設定手段は、前記プログラマブル処理部が備えるレジスタを利用して、当該プログラマブル処理部を利用する制御部を設定することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記少なくとも２つの制御部それぞれは、前記ジョブの処理が完了した場合に前記一の制御部にそのことを示す情報を通知することを特徴とする請求項１乃至４のいずれか一項に記載の情報処理装置。
【請求項６】
前記一の制御部と前記プログラマブル処理部を利用して前記ジョブを処理する制御部とが同じ制御部である場合、前記通知手段は、プロセス間通信により通知を行うことを特徴とする請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記一の制御部は、前記ジョブにて要求された機能に応じて、前記少なくとも２つの制御部のいずれが前記ジョブを処理するかを判定する判定手段を備えることを特徴とする請求項１乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
前記判定手段は更に、前記ジョブを処理する際に前記プログラマブル処理部を利用するか否かを判定することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記制御手段は、前記判定手段にて前記ジョブを処理する際に前記プログラマブル処理部を利用すると判定された場合、前記ジョブにて要求された機能に応じたコンフィギュレーションデータを用いて前記プログラマブル処理部にコンフィギュレーションを実行させることを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記プログラマブル処理部はＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）であることを特徴とする請求項１乃至９のいずれか一項に記載の情報処理装置。
【請求項１１】
コンフィギュレーションにより処理内容を書き換え可能なプログラマブル処理部と、
前記プログラマブル処理部に接続され、前記プログラマブル処理部を共用する少なくとも２つの制御部と
を備える情報処理装置の制御方法であって、
前記少なくとも２つの制御部のうちの一の制御部において、
受け付けたジョブに応じて前記プログラマブル処理部のコンフィギュレーションを制御する制御工程と、
前記プログラマブル処理部のコンフィギュレーションの後、前記少なくとも２つの制御部のうちの前記一の制御部とは異なる制御部であって前記プログラマブル処理部を利用して前記ジョブを処理する制御部に対し、前記ジョブが実行可能になったことを示す情報を通知する通知工程と
を有することを特徴とする情報処理装置の制御方法。
【請求項１２】
コンフィギュレーションにより処理内容を書き換え可能なプログラマブル処理部と、
前記プログラマブル処理部に接続され、前記プログラマブル処理部を共用する少なくとも２つの制御部と
を備える情報処理装置の制御方法であって、
前記少なくとも２つの制御部のうちの一の制御部において、受け付けたジョブに応じて前記プログラマブル処理部のコンフィギュレーションを制御する制御工程を有し、
前記少なくとも２つの制御部それぞれは、前記プログラマブル処理部に対し、当該プログラマブル処理部を利用して前記ジョブを処理する制御部を設定する設定工程を有し、
前記プログラマブル処理部において、コンフィギュレーションの後、前記設定工程にて設定された制御部に対し、コンフィギュレーションが完了したことを示す情報を通知する通知工程を有することを特徴とする情報処理装置の制御方法。
【請求項１３】
コンフィギュレーションにより処理内容を書き換え可能なプログラマブル処理部と、
前記プログラマブル処理部に接続され、前記プログラマブル処理部を共用する少なくとも２つの制御部と
を備えるコンピュータにおいて、
前記少なくとも２つの制御部のうちの一の制御部を、
受け付けたジョブに応じて前記プログラマブル処理部のコンフィギュレーションを制御する制御手段、
前記プログラマブル処理部のコンフィギュレーションの後、前記少なくとも２つの制御部のうちの前記一の制御部とは異なる制御部であって前記プログラマブル処理部を利用して前記ジョブを処理する制御部に対し、前記ジョブが実行可能になったことを示す情報を通知する通知手段
として機能させるためのプログラム。
【請求項１４】
コンフィギュレーションにより処理内容を書き換え可能なプログラマブル処理部と、
前記プログラマブル処理部に接続され、前記プログラマブル処理部を共用する少なくとも２つの制御部と
を備えるコンピュータにおいて、
前記少なくとも２つの制御部のうちの一の制御部を、受け付けたジョブに応じて前記プログラマブル処理部のコンフィギュレーションを制御する制御手段として機能させ、
前記少なくとも２つの制御部それぞれを、前記プログラマブル処理部に対し、当該プログラマブル処理部を利用して前記ジョブを処理する制御部を設定する設定手段として機能させ、
前記プログラマブル処理部を、コンフィギュレーションの後、前記設定手段にて設定された制御部に対し、コンフィギュレーションが完了したことを示す情報を通知する通知手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびその制御方法、並びにプログラムに関し、特にプログラマブルロジックデバイスを備えたシステムに関する。
【背景技術】
【０００２】
ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を搭載した様々なシステムが提案されている。例えば特許文献１では、システム内に複数個存在するＣＰＵモジュール毎にＦＰＧＡを１つずつ搭載するようなシステム構成が提案されている。特許文献１のようなシステム構成に対して高性能ＦＰＧＡを適用した場合、コストが非常に高くなってしまう。そこで、ＣＰＵが接続可能な高速ポート（例えばＰＣＩ  Ｅｘｐｒｅｓｓ）を複数搭載したＦＰＧＡを用いて、１つのＦＰＧＡを２つ以上のＣＰＵから共用するようなシステム構成（以下、「ＦＰＧＡ共用構成」）が考えられている。
【０００３】
一方、特許文献２では、ＦＰＧＡのコンフィギュレーション方法として、従来のようにＲＯＭからコンフィギュレーションデータをロードする方法とは異なる新しい手法が示されている。ＣＰＵをマスターデバイスとして、ＨＤＤからコンフィギュレーションデータをＦＰＧＡにロードする手法である（以下、「ＣＰＵマスター・コンフィギュレーション」）。ＣＰＵマスター・コンフィギュレーションを用いることで、ＲＯＭを書き換えることなく、ＨＤＤ内のファイルを置き換えてロードするだけで、ＦＰＧＡの処理内容をアップデートすることが可能になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−０４９５１０号公報
【特許文献２】特開２０１３−０９８８２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的なＦＰＧＡデバイスの場合、ＣＰＵマスター・コンフィギュレーションに対応した高速ポートは１つのみである。つまり、ＦＰＧＡ共用構成のように、２つ以上のＣＰＵをＦＰＧＡに接続していても、コンフィギュレーションのマスターデバイスになるＣＰＵは１つのみである。このような場合、マスターデバイス以外のＣＰＵはコンフィギュレーションを実行できないため、マスターデバイスのＣＰＵに対してコンフィギュレーションを依頼する必要がある。しかしながら、そのようなコンフィギュレーションの依頼処理をソフトウェアに組み込むと、ＣＰＵ間通信が発生するなどの理由から、ソフトウェア構成が煩雑になったり、依頼元であるＣＰＵがＦＰＧＡを使用し始めるまでに時間がかかってしまうという課題がある。
【０００６】
本願発明はかかる課題を鑑み、ＦＰＧＡ共用構成において、簡潔なソフトウェア構成でＣＰＵマスター・コンフィギュレーションを実行するとともに、ＣＰＵがＦＰＧＡを用いた処理を適切なタイミングで開始できるような手法を提案する。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本願発明は以下の構成を有する。すなわち、コンフィギュレーションにより処理内容を書き換え可能なプログラマブル処理部と、前記プログラマブル処理部に接続され、前記プログラマブル処理部を共用する少なくとも２つの制御部とを備える情報処理装置であって、前記少なくとも２つの制御部のうちの一の制御部は、受け付けたジョブに応じて前記プログラマブル処理部のコンフィギュレーションを制御する制御手段と、前記プログラマブル処理部のコンフィギュレーションの後、前記少なくとも２つの制御部のうちの前記一の制御部とは異なる制御部であって前記プログラマブル処理部を利用して前記ジョブを処理する制御部に対し、前記ジョブが実行可能になったことを示す情報を通知する通知手段とを備える。
【０００８】
また、本願発明は別の構成として、以下の構成を有する。すなわち、コンフィギュレーションにより処理内容を書き換え可能なプログラマブル処理部と、前記プログラマブル処理部に接続され、前記プログラマブル処理部を共用する少なくとも２つの制御部とを備える情報処理装置であって、前記少なくとも２つの制御部のうちの一の制御部は、受け付けたジョブに応じて前記プログラマブル処理部のコンフィギュレーションを制御する制御手段を備え、前記少なくとも２つの制御部それぞれは、前記プログラマブル処理部に対し、当該プログラマブル処理部を利用して前記ジョブを処理する制御部を設定する設定手段を備え、前記プログラマブル処理部は、コンフィギュレーションの後、前記設定手段にて設定された制御部に対し、コンフィギュレーションが完了したことを示す情報を通知する通知手段を備える。
【発明の効果】
【０００９】
本願発明により、ＣＰＵ間でのコンフィギュレーション依頼処理が必要なくなり、簡潔なソフト構成でコンフィギュレーションが実現できるとともに、各ＣＰＵがＦＰＧＡを用いた処理を適切なタイミングで開始できる。
【図面の簡単な説明】
【００１０】
【図１】本願発明に係る画像処理システムの全体構成例を示す図。
【図２】本願発明に係るデータの構成例を示す図。
【図３】第一の実施形態に係るプログラマブル処理部の内部構成例を示す図。
【図４】第一、第二の実施形態に係る全体フローを示すフローチャート。
【図５】第一の実施形態に係るＦＰＧＡ付き拡張処理のフローチャート。
【図６】第一の実施形態に係る拡張処理のフローチャート。
【図７】第一の実施形態に係るＦＰＧＡ付き標準処理のフローチャート。
【図８】第一の実施形態に係る標準処理のフローチャート。
【図９】第二の実施形態に係るプログラマブル処理部の内部および周辺回路の構成例を示す図。
【図１０】第二の実施形態に係るＦＰＧＡ付き拡張処理のフローチャート。
【図１１】第二の実施形態に係るＦＰＧＡ付き標準処理のフローチャート。
【発明を実施するための形態】
【００１１】
以下の実施形態においては、背景技術で述べた「ＣＰＵマスター・コンフィギュレーション」を、単に「コンフィギュレーション」と呼称する。
【００１２】
＜第一の実施形態＞
［システムの全体構成］
図１は、本実施形態に係る画像処理システム１００の全体構成の例を示す図である。なお、本実施形態は画像処理システムを例にとって説明するが、他の情報処理装置であってもよい。標準処理部１１０は、画像処理システム１００の動作制御や、色空間変換、ハーフトーニングなどの基本的な画像処理を実行する。標準処理部１１０は一般に、メインコントローラーやマザーボードなどと呼ばれる。以下、標準処理部１１０の内部ブロックを説明する。
【００１３】
制御部１１１は、標準処理部１１０を制御するための中央処理装置（ＣＰＵ）である。本実施形態において制御部１１１は、ＰＣＩ  Ｅｘｐｒｅｓｓのポートを少なくとも１ポート内蔵する。主記憶部１１２は、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などにより構成される高速アクセス可能な記憶装置である。主記憶部１１２では、制御部１１１が処理する画像データや印刷データが展開されるほか、制御部１１１が実行するソフトウェアが展開される。補助記憶部１１３は、ハードディスクやフラッシュメモリなどの不揮発性の記憶装置であり、画像データ、印刷データ、ソフトウェアなどが格納される。
【００１４】
外部ＩＦ部１１４は、Ｅｔｈｅｒｎｅｔ（登録商標）やＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）に対応したインターフェースであり、ＭＡＣやＰＨＹ、コネクタを含んでいる。なお、図１において、標準処理部１１０は外部ＩＦ部１１４を介して拡張処理部１２０のみと接続されているが、ネットワークサーバやクライアントＰＣといった外部情報端末と接続されてもよい。操作表示部１１５は、表示機能と操作機能を兼ね揃えたタッチパネル等のデバイスであり、標準処理部１１０のユーザインターフェース部として機能する。なお、操作表示部１１５は、液晶ディスプレイ（不図示）とハードキー（不図示）とを組み合わせて構成されてもよい。以上の構成がシステムバス１１６上に構成される。
【００１５】
拡張処理部１２０は、標準処理部１１０とは異なる種類の処理が実行できるように構成され、もしくは、同種の処理の場合でもより高速に実行できるように構成される。拡張処理部１２０は一般に、アドオンハードウェアやアクセラレータなどと呼ばれる。以下、拡張処理部１２０の内部ブロックを説明する。
【００１６】
制御部１２１は、拡張処理部１２０を制御するための中央処理装置（ＣＰＵ）である。本実施形態において制御部１２１は、ＰＣＩ  Ｅｘｐｒｅｓｓのポートを少なくとも１ポート内蔵する。主記憶部１２２は、ＳＤＲＡＭなどにより構成される高速アクセス可能な記憶装置である。主記憶部１２２では、制御部１２１が処理するデータが展開されるほか、制御部１２１が実行するソフトウェアが展開される。補助記憶部１２３は、フラッシュメモリなどの不揮発性の記憶装置であり、画像データ、ソフトウェアなどが格納される。
【００１７】
外部ＩＦ部１２４は、Ｅｔｈｅｒｎｅｔ（登録商標）やＵＳＢに対応したインターフェースであり、ＭＡＣやＰＨＹ、コネクタを含んでいる。なお、図１において、拡張処理部１２０は外部ＩＦ部１２４を介して標準処理部１１０のみと接続されているが、ネットワークサーバやクライアントＰＣといった外部情報端末と接続されてもよい。以上の構成がシステムバス１２７上に構成される。
【００１８】
プログラマブル処理部３００は、ＰＣＩ  Ｅｘｐｒｅｓｓ信号およびＦＰＧＡ制御信号で構成されるインターフェース１３０、１３１を介して、制御部１１１および制御部１２１と接続されるデバイスである。プログラマブル処理部３００はプログラミング可能なデバイスであればよく、特に限定はするものではないが、本実施形態ではＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）であると想定して説明を進める。本実施形態に係るプログラマブル処理部３００は、ＰＣＩ  Ｅｘｐｒｅｓｓのポートを少なくとも２ポート内蔵する。また、ＦＰＧＡ制御信号には、ＦＰＧＡのコンフィギュレーション完了を示す信号であるＩｎｉｔＤｏｎｅ信号や、コンフィギュレーションされたロジックの実行終了ステータスを示す信号であるＰｒｏｃＤｏｎｅ＿０／１信号が含まれる。各信号の詳細については図３を用いて後述する。
【００１９】
作動記憶部１２６は、ＳＤＲＡＭなどにより構成される高速アクセス可能な記憶装置であり、プログラマブル処理部３００と接続されワークメモリデバイスとして機能する。以上が本実施形態における画像処理システム１００の全体構成の例である。
【００２０】
［ジョブデータ構成］
図２（Ａ）は、本実施形態に係るジョブデータのデータ構成例である。ここではジョブデータのデータ構成に関してのみ説明し、ジョブデータに関わる処理フローの詳細説明は後述する。
【００２１】
ジョブデータは、ジョブ制御データと画像データとから構成される。画像データは、ジョブで処理される対象の画像データである。画像データは、ＲＡＷデータであってもよいし、ＪＰＥＧやＪＢＩＧ、ＴＩＦＦなど一般的な画像データフォーマットであればいずれであってよい。
【００２２】
ジョブ制御データにはジョブＩＤ、ジョブ要求機能、ジョブ設定パラメータといった情報が含まれる。ジョブＩＤは、ジョブごとに固有の情報であり、ジョブＩＤを参照することでジョブデータを一意に特定することが可能である。ジョブ要求機能は、ジョブを実行するために必要な機能を示す情報である。ジョブ要求機能の詳細については図２（Ｂ）を用いて後述する。ジョブ設定パラメータは、操作表示部１１５や外部情報端末においてジョブデータが生成される際に、ユーザによって選択もしくは任意入力された調整パラメータの値である。ジョブ設定パラメータに含まれる情報としては、例えば、濃度値や、モノクロ／フルカラーの選択情報などが挙げられる。
【００２３】
図２（Ｂ）は、ジョブ要求機能と、その機能に関連する情報を対応付けたジョブ要求機能対応テーブル２０１の一例である。ジョブ要求機能の列には、画像処理システム１００で処理可能な機能が示されている。サポートデバイスの列には、対応するジョブ要求機能を実行可能なデバイスが示されている。ＦＰＧＡ利用の列には、対応するジョブ要求機能を実行する際に、ＦＰＧＡ（プログラマブル処理部３００）を利用する必要があるか否かが示されている。コンフィギュレーションデータの列には、対応するジョブ要求機能を実行する際に必要なＦＰＧＡコンフィギュレーションデータを一意に特定できる情報が示されている。標準処理部１１０は、図２（Ｂ）に示されるようなジョブ要求機能対応テーブル２０１を主記憶部１１２もしくは補助記憶部１１３に格納している。制御部１１１は、ジョブデータ内のジョブ要求機能の情報と、ジョブ要求機能対応テーブルに基づいて、ジョブ要求機能を実現するためのデバイスやコンフィギュレーションデータを決定することができる。
【００２４】
［プログラマブル処理部の構成］
図３は、第一の実施形態に係るプログラマブル処理部３００の内部の構成例を示す図である。前述したように、本実施形態では、プログラマブル処理部３００はＦＰＧＡであることを想定して説明を進める。
【００２５】
コンフィギュレーションコントローラ３０１は、ファブリック３０２のロジック構築や、ＰＣＩ  Ｅｘｐｒｅｓｓ  ＩＰ３０３、メモリコントローラＩＰ３０４のパラメータ設定を制御する。コンフィギュレーションコントローラ３０１は、ＦＰＧＡのコンフィギュレーション完了を示す信号であるＩｎｉｔＤｏｎｅ信号を出力する。ファブリック３０２には、コンフィギュレーションデータに基づいたロジックが構築される。ＰｒｏｃＤｏｎｅ＿Ｒｅｇｉｓｔｅｒ０およびＰｒｏｃＤｏｎｅ＿Ｒｅｇｉｓｔｅｒ１は、コンフィギュレーションされたロジックの実行終了ステータスを示すレジスタである。ＰｒｏｃＤｏｎｅ＿０信号やＰｒｏｃＤｏｎｅ＿１信号は、これらのレジスタから生成される。本実施形態におけるファブリック３０２には、ＰｒｏｃＤｏｎｅ＿Ｒｅｇｉｓｔｅｒ０およびＰｒｏｃＤｏｎｅ＿Ｒｅｇｉｓｔｅｒ１が実装されていることを想定して説明を行う。また、ＰｒｏｃＤｏｎｅ＿Ｒｅｇｉｓｔｅｒ０は、標準処理部１１０側の制御部１１１に対応し、ＰｒｏｃＤｏｎｅ＿Ｒｅｇｉｓｔｅｒ１は、拡張処理部１２０側の制御部１２１に対応しているものとする。
【００２６】
ＰＣＩ  Ｅｘｐｒｅｓｓ  ＩＰ３０３は、ＰＣＩ  ＥｘｐｒｅｓｓのＰＨＹ等を含むプロトコルスタックである。本実施形態に係るプログラマブル処理部３００およびＰＣＩ  Ｅｘｐｒｅｓｓ  ＩＰ３０３は、少なくとも２ポート分のＰＣＩ  Ｅｘｐｒｅｓｓ接続を実現できる。図３のＰＣＩｅ＿０信号およびＰＣＩｅ＿１信号は、各ポートに接続されるＰＣＩ  Ｅｘｐｒｅｓｓの送受信信号およびクロック信号を示している。
【００２７】
メモリコントローラＩＰ３０４は、ＤＤＲ規格等に対応したＰＨＹやコントローラを含むメモリインターフェースである。図３のＤＲＡＭ信号は、データ信号、アドレス信号、クロック信号等を示している。
【００２８】
［全体フロー］
図４は、本実施形態に係る全体フローである。本処理フローは、標準処理部１１０の制御部１１１が、補助記憶部１１３等に記憶されたソフトウェアを読み出して実行する事により実現される。
【００２９】
Ｓ４００にて、制御部１１１は、ジョブデータを受け付ける。ジョブデータは、操作表示部１１５をユーザが操作することで、制御部１１１が実行するアプリケーションソフトにより生成、入力される。ジョブデータは、外部情報端末をユーザが操作することで生成され、ネットワーク経由で外部ＩＦ部１１４から入力されてもよい。
【００３０】
Ｓ４０１にて、制御部１１１は、ジョブデータの処理に要求される機能に対するサポートデバイスが拡張処理部１２０であるか否かを判定する。ここでの判定は、図２（Ｂ）で説明したように、制御部１１１がジョブデータ内のジョブ要求機能の情報と、ジョブ要求機能対応テーブル内の「ジョブ要求機能」および「サポートデバイス」の値とを比較することで実行される。例えば、ジョブデータ内のジョブ要求機能が「拡張ＯＣＲ機能」である場合、サポートデバイスは「拡張処理部」となる。Ｓ４０１の結果、ジョブデータのサポートデバイスが拡張処理部１２０であると判定された場合（Ｓ４０１にてＹＥＳ）、制御部１１１は、Ｓ４０２へ進む。一方、ジョブデータのサポートデバイスが拡張処理部１２０ではないと判定された場合（Ｓ４０１にてＮＯ）、制御部１１１は、Ｓ４０５へ進む。
【００３１】
Ｓ４０２にて、制御部１１１は、ジョブデータがＦＰＧＡを利用するジョブか否かを判定する。こ子での判定は、前述したように、制御部１１１がジョブデータ内のジョブ要求機能の情報と、ジョブ要求機能対応テーブル内の「ジョブ要求機能」および「ＦＰＧＡ利用」の値とを比較することで実行される。ジョブデータがＦＰＧＡを利用するジョブであると判定された場合（Ｓ４０２にてＹＥＳ）、制御部１１１は、Ｓ４０３へ進む。一方、ジョブデータがＦＰＧＡを利用しないジョブであると判定された場合（Ｓ４０２にてＮＯ）、制御部１１１は、Ｓ４０４へ進む。
【００３２】
Ｓ４０３にて、制御部１１１、制御部１２１、およびプログラマブル処理部３００が連携して、ジョブ処理を実行する。ここでの処理の詳細は図５を用いて後述する。本工程の処理後、本処理フローを終了する。
【００３３】
Ｓ４０４にて、制御部１１１および制御部１２１が連携して、ジョブ処理を実行する。ここでの処理の詳細は図６を用いて後述する。本工程の処理後、本処理フローを終了する。
【００３４】
Ｓ４０５にて、制御部１１１は、ジョブデータがＦＰＧＡを利用するジョブか否かを判定する。ここでの具体的な判定方法は、Ｓ４０２と同等である。ジョブデータがＦＰＧＡを利用するジョブであると判定された場合（Ｓ４０５にてＹＥＳ）、制御部１１１は、Ｓ４０６へ進む。一方、ジョブデータがＦＰＧＡを利用しないジョブであると判定された場合（Ｓ４０５にてＮＯ）、制御部１１１は、Ｓ４０７へ進む。
【００３５】
Ｓ４０６にて、制御部１１１およびプログラマブル処理部３００が連携して、ジョブ処理を実行する。ここでの処理の詳細は図７を用いて後述する。本工程の処理後、本処理フローを終了する。
【００３６】
Ｓ４０７にて、制御部１１１がジョブ処理を実行する。ここでの処理の詳細は図８を用いて後述する。本工程の処理後、本処理フローを終了する。
【００３７】
（ＦＰＧＡ付き拡張処理）
図５は、第一の実施形態に係るＦＰＧＡ付き拡張処理のフローチャートであり、図４のＳ４０３の処理に相当する。本処理フローは、制御部１１１、プログラマブル処理部３００、および制御部１２１が連携することで実現する。
【００３８】
Ｓ５００にて、制御部１１１は、拡張処理部１２０へ、Ｓ４００で受け付けたジョブデータを送信する。この送信は、標準処理部１１０側の外部ＩＦ部１１４および拡張処理部１２０側の外部ＩＦ部１２４を介して実行される。
【００３９】
Ｓ５０１にて、制御部１１１は、プログラマブル処理部３００に対してコンフィギュレーションを指示、実行する。Ｓ５０１においてコンフィギュレーションに使用されるデータは、制御部１１１がジョブデータ内のジョブ要求機能の情報と、ジョブ要求機能対応テーブル内の「ジョブ要求機能」および「コンフィギュレーションデータ」の値とを比較することで決定される。制御部１１１は、決定されたデータを、補助記憶部１１３に格納されたデータから検索する。
【００４０】
Ｓ５０２にて、制御部１１１が、Ｓ５０１の指示の後、プログラマブル処理部３００から送信されるコンフィギュレーション完了通知を受信する。このコンフィギュレーション完了通知は、図３に示したＩｎｉｔＤｏｎｅ信号であり、制御部１１１はＩｎｉｔＤｏｎｅ信号がアサートされることでプログラマブル処理部３００のコンフィギュレーションが完了したと判定する。コンフィギュレーション完了通知は、後述するＳ５０６にて、拡張処理部１２０のプログラマブル処理部３００から送信される。
【００４１】
Ｓ５０３にて、制御部１１１は、拡張処理部１２０に対して、ジョブ実行可能通知の送信を行う。この送信は、外部ＩＦ部１１４および外部ＩＦ部１２４を介して実行される。
【００４２】
Ｓ５０４にて、制御部１１１は、Ｓ５０３の通知の後、拡張処理部１２０からジョブ終了通知の受信をする。この受信は、外部ＩＦ部１１４および外部ＩＦ部１２４を介して実行される。ジョブ終了通知は、後述するＳ５１３にて、拡張処理部１２０の制御部１２１から送信される。
【００４３】
Ｓ５０５にて、プログラマブル処理部３００のコンフィギュレーションコントローラ３０１は、Ｓ５０１における制御部１１１からの指示を受け、コンフィギュレーションを実行する。ここで用いるコンフィギュレーションデータや、コンフィギュレーション指示は、制御部１１１とプログラマブル処理部３００間のＰＣＩ  Ｅｘｐｒｅｓｓインターフェース（インターフェース１３０）を介して転送される。
【００４４】
Ｓ５０６にて、プログラマブル処理部３００は、Ｓ５０５におけるコンフィギュレーションが完了した後、制御部１１１にコンフィギュレーション完了通知を送信する。前述したように、このコンフィギュレーション完了通知は、図３に示したＩｎｉｔＤｏｎｅ信号である。コンフィギュレーションコントローラ３０１は、ファブリック３０２のコンフィギュレーションや初期化した後で、ＩｎｉｔＤｏｎｅ信号をアサートする。
【００４５】
Ｓ５０７にて、プログラマブル処理部３００は、制御部１２１から処理実行指示を受け、その指示に応じて処理を開始する。
【００４６】
Ｓ５０８にて、プログラマブル処理部３００は、処理終了後に、制御部１２１に対して処理終了通知をする。この処理終了通知は、図３に示したＰｒｏｃＤｏｎｅ＿１信号である。プログラマブル処理部３００の処理終了をトリガとして、ＰｒｏｃＤｏｎｅ＿１信号がアサートされるようにロジックが構成される。
【００４７】
Ｓ５０９にて、制御部１２１は、Ｓ５００で制御部１１１により送信されたジョブデータを受信する。この受信は、外部ＩＦ部１１４および外部ＩＦ部１２４を介して実行される。
【００４８】
Ｓ５１０にて、制御部１２１は、Ｓ５０３で制御部１１１により送信されたジョブ実行可能通知を受信する。この受信は、外部ＩＦ部１１４および外部ＩＦ部１２４を介して実行される。本処理フローでは、この通知により、制御部１２１がコンフィギュレーション後のプログラマブル処理部３００が提供する機能を利用可能であることが示されることとなる。
【００４９】
Ｓ５１１にて、制御部１２１は、Ｓ５０９にて受信したジョブデータに基づいて、ジョブ処理を開始する。また、制御部１２１は、プログラマブル処理部３００に対して、プログラマブル処理部３００が提供する機能を利用した処理実行指示を発行する。
【００５０】
Ｓ５１２にて、制御部１２１は、ジョブ処理が終了したか否かを判定する。ここでの判定は、プログラマブル処理部３００から出力される終了ステータス信号であるＰｒｏｃＤｏｎｅ＿１信号の監視や、制御部１２１のソフトウェアのパラメータ管理により実現される。
【００５１】
Ｓ５１３にて、制御部１２１は、Ｓ５１２にて処理が終了したと判定した後、制御部１１１にジョブ終了通知を送信する。この送信は、外部ＩＦ部１１４および外部ＩＦ部１２４を介して実行される。
【００５２】
（拡張処理）
図６は、本実施形態に係る拡張処理のフローチャートであり、図４のＳ４０４の処理に相当する。本処理フローは、制御部１１１および制御部１２１が連携することで実現する。図６では、図５の処理フローと比較してＳ５０１、Ｓ５０２、およびＦＰＧＡ実行処理が削除されている。これは拡張処理が、ＦＰＧＡを利用しないジョブを処理する場合に実行されるためである。図６に記載されている各ステップのうち、図５と差分のあるステップのみ、以下で説明を行う。
【００５３】
Ｓ６００にて、制御部１２１は、Ｓ５０９で受信したジョブデータに基づいて、ジョブ処理を開始する。
【００５４】
Ｓ６０１にて、制御部１２１は、ジョブ処理が終了したか否かを判定する。ここでの判定は、制御部１２１のソフトウェアのパラメータ管理により実現される。
【００５５】
（ＦＰＧＡ付き標準処理）
図７は、本実施形態に係るＦＰＧＡ付き標準処理のフローチャートであり、図４のＳ４０６の処理に相当する。本処理フローは、制御部１１１およびプログラマブル処理部３００が連携することで実現する。また、図７に示すＦＰＧＡ付き標準処理とジョブ実行はいずれも制御部１１１で実行される構成であるが、以下では制御部１１１において別プロセスで実行されることを想定して説明を行う。これは、図５で説明したように制御部１２１で実行される場合と、図７のように制御部１１１で実行される場合とで、ソフトウェアの流用性を考慮したためである。図７に記載されている各ステップのうち、図５と差分のあるステップのみ、以下で説明を行う。
【００５６】
Ｓ７００にて、ＦＰＧＡ付き標準処理を実行するプロセスは、ジョブ実行を行うプロセスへ、プロセス間通信によりジョブデータを送信する。
【００５７】
Ｓ７０１にて、ＦＰＧＡ付き標準処理を実行するプロセスは、Ｓ５０２にてプログラマブル処理部３００からコンフィギュレーション完了通知を受信した後、ジョブ実行を行うプロセスへ、プロセス間通信によりジョブ実行可能通知の送信を行う。
【００５８】
Ｓ７０２にて、Ｓ７０２の通知の後、ＦＰＧＡ付き標準処理を実行するプロセスは、ジョブ実行を行うプロセスから、プロセス間通信によりジョブ終了通知の受信をする。
【００５９】
Ｓ７０３にて、プログラマブル処理部３００は、制御部１１１から処理実行指示を受け、処理を開始する。
【００６０】
Ｓ７０４にて、プログラマブル処理部３００は、処理終了後に、制御部１１１に対して処理終了通知をする。この処理終了通知は、図３に示したＰｒｏｃＤｏｎｅ＿０信号である。プログラマブル処理部３００の処理終了をトリガとして、ＰｒｏｃＤｏｎｅ＿０信号がアサートされるようにロジックが構成される。
【００６１】
Ｓ７０５にて、ジョブ実行を行うプロセスは、プロセス間通信により送信されたジョブデータを受信する。
【００６２】
Ｓ７０６にて、ジョブ実行を行うプロセスは、プロセス間通信により送信されたジョブ実行可能通知を受信する。
【００６３】
Ｓ７０７にて、ジョブ実行を行うプロセスは、Ｓ７０６にてジョブ実行可能通知を受信した後、ジョブデータに基づいてジョブ処理を開始する。また、ジョブ実行を行うプロセスは、プログラマブル処理部３００に対して、プログラマブル処理部３００が提供する機能を利用した処理実行指示を発行する。
【００６４】
Ｓ７０８にて、ジョブ実行を行うプロセスは、ジョブ処理が終了したか否かを判定する。ここでの判定は、プログラマブル処理部３００から出力される終了ステータス信号であるＰｒｏｃＤｏｎｅ＿０信号の監視や、制御部１１１のソフトウェアのパラメータ管理により実現される。
【００６５】
Ｓ７０９にて、ジョブ実行を行うプロセスは、Ｓ７０８にて処理が終了したと判定した後、ＦＰＧＡ付き標準処理を実行するプロセスへ、プロセス間通信によりジョブ終了通知を送信する。
【００６６】
（標準処理）
図８は、本実施形態に係る標準処理のフローチャートであり、図４のＳ４０７の処理に相当する。本処理フローは、制御部１１１が実現する。図８では、図７の処理フローと比較してＳ５０１やＳ５０２、およびＦＰＧＡ実行処理が削除されている。これは標準処理が、ＦＰＧＡを利用しないジョブを処理する場合に実行されるためである。図８に記載されている各ステップのうち、図７と差分のあるステップのみ、以下で説明を行う。また、図７にて示した場合と同様、本処理フローの標準処理およびジョブ実行はいずれも制御部１１１にて実行される構成であるが、異なるプロセスにて実行されるものとして説明する。
【００６７】
Ｓ８００にて、ジョブ実行を行うプロセスは、Ｓ７０６にてジョブ実行可能通知を受信した後、Ｓ７０５で受信したジョブデータに基づいて、ジョブ処理を開始する。
【００６８】
Ｓ８０１にて、ジョブ実行を行うプロセスは、ジョブ処理が終了したか否かを判定する。ここでの判定は、制御部１１１のソフトウェアのパラメータ管理により実現する。
【００６９】
以上、本実施形態により、プログラマブル処理部３００を、制御部１１１と制御部１２１とで共用する構成において、制御部１１１がコンフィギュレーションを管理するとともに、ジョブ実行可能通知を制御部１２１に対して送信する。このような構成にすることで、制御部１２１が制御部１１１に対してコンフィギュレーションを依頼する必要がなくなる。そのため、簡潔なソフト構成でコンフィギュレーションが実現できるとともに、各制御部がプログラマブル処理部を用いた処理を適切なタイミングで開始できるようになる。
【００７０】
なお、本実施形態では制御部が２つの例を示したが、これに限定するものではなく、更に多くの制御部を備えた構成であってもよい。
【００７１】
＜第二の実施形態＞
第一の実施形態では、プログラマブル処理部３００のコンフィギュレーションの完了を、ソフトウェアにより通知する構成である。つまり、プログラマブル処理部３００のコンフィギュレーションコントローラ３０１がＩｎｉｔＤｏｎｅ信号を通知していた。本実施形態では、コンフィギュレーションの完了をハードウェアにより通知する構成について述べる。
【００７２】
［ＣｏｎｆｉｇＥｎａｂｌｅ信号の生成］
第二の実施形態における画像処理システム１００では、プログラマブル処理部３００が、制御部１１１および制御部１２１に対してコンフィギュレーション完了を通知するための信号であるＣｏｎｆｉｇＥｎａｂｌｅ＿０／１信号を生成する。図９は、ＣｏｎｆｉｇＥｎａｂｌｅ＿０／１信号を生成するためのプログラマブル処理部３００の内部構成を示す。なお、ＩｎｉｔＤｏｎｅ信号、ＰｒｏｃＤｏｎｅ＿０／１信号、ＰＣＩｅ＿０／１信号、ＤＲＡＭ信号は、図３において既に説明した通りである。
【００７３】
ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ０およびＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ１は、制御部１１１および制御部１２１のうち、どちらの制御部によってプログラマブル処理部３００が利用されるべきかを示すレジスタである。例えば、制御部１１１がプログラマブル処理部３００を利用する場合、ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ０は“１”を出力し、ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ１は“０”を出力する。一方、制御部１２１がプログラマブル処理部３００を利用する場合、ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ０は“０”を出力し、ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ１は“１”を出力する。ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ０／１の設定は、コンフィギュレーション完了時に、コンフィギュレーション制御を行う制御部１１１から適切な値に書き換えられる。
【００７４】
なお、ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ０／１が出力すべき値はデフォルト値としてコンフィギュレーションデータの中に埋め込むこともできる。どちらの制御部がプログラマブル処理部３００を利用するかは、コンフィギュレーションデータに応じて決まるため、このように構成してもよい。
【００７５】
ＣｏｎｆｉｇＥｎａｂｌｅ＿０信号およびＣｏｎｆｉｇＥｎａｂｌｅ＿１信号は、ＩｎｉｔＤｏｎｅ信号と、ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ０もしくはＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ１の出力とのＡＮＤ論理信号である。このように構成することでプロセス間通信を用いずに、制御部１１１および制御部１２１のうち、どちらの制御部に対するコンフィギュレーションが完了したのかを各制御部が検知することが出来る。
【００７６】
［ＦＰＧＡ付き拡張処理］
図１０は、本実施形態に係るＦＰＧＡ付き拡張処理のフローチャートであり、第一の実施形態にて述べた図４のＳ４０３の処理に相当する。本処理フローは、制御部１１１、プログラマブル処理部３００、および制御部１２１が連携することで実現する。以下、第一の実施形態にて説明した図５との差分についてのみ、説明を行う。
【００７７】
Ｓ１０００にて、制御部１１１は、プログラマブル処理部３００のＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ１に対して“１”を設定する。これにより、プログラマブル処理部３００が、制御部１２１にて利用されることを示す。なお、前述したように、ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ１のデフォルト値として“１”を設定してコンフィギュレーションデータを生成している場合は、Ｓ１０００の処理は不要となる。
【００７８】
Ｓ１００１にて、プログラマブル処理部３００は、制御部１２１に対してＣｏｎｆｉｇＥｎａｂｌｅ＿１信号をアサートする。これは、図９に示したように、Ｓ５０６にてコンフィギュレーションが完了したことでアサートされるＩｎｉｔＤｏｎｅ信号と、ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ１の出力とのＡＮＤ論理により実現される。
【００７９】
Ｓ１００２にて、プログラマブル処理部３００は、制御部１２１に対してＣｏｎｆｉｇＥｎａｂｌｅ＿１信号をデアサートする。これは、制御部１２１がＳ１００４にてＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ１に対して“０”を設定することで実現される。
【００８０】
Ｓ１００３にて、制御部１２１は、Ｓ１００１でプログラマブル処理部３００によりアサートされたＣｏｎｆｉｇＥｎａｂｌｅ＿１信号を検知する。
【００８１】
Ｓ１００４にて、制御部１２１は、プログラマブル処理部３００のＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ１に対して“０”を設定する。
【００８２】
［ＦＰＧＡ付き標準処理］
図１１は、本実施形態に係るＦＰＧＡ付き標準処理のフローチャートであり、第一の実施形態にて述べた図４のＳ４０６の処理に相当する。本処理フローは、制御部１１１およびプログラマブル処理部３００が連携することで実現する。以下、第一の実施形態にて説明した図７との差分についてのみ、説明を行う。また、図７にて示した場合と同様、本処理フローの標準処理およびジョブ実行はいずれも制御部１１１にて実行される構成であるが、異なるプロセスにて実行されるものとして説明する。
【００８３】
Ｓ１１００にて、ＦＰＧＡ付き標準処理を実行するプロセスは、プログラマブル処理部３００のＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ０に対して“１”を設定する。なお、前述したように、ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ０のデフォルト値として“１”を設定してコンフィギュレーションデータを生成している場合は、Ｓ１１００の処理は不要となる。
【００８４】
Ｓ１１０１にて、プログラマブル処理部３００は、制御部１１１に対してＣｏｎｆｉｇＥｎａｂｌｅ＿０信号をアサートする。これは、図９に示した通り、Ｓ５０６にてコンフィギュレーションが完了したことでアサートされるＩｎｉｔＤｏｎｅ信号と、ＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ０の出力とのＡＮＤ論理により実現される。
【００８５】
Ｓ１１０２にて、プログラマブル処理部３００は、制御部１１１に対してＣｏｎｆｉｇＥｎａｂｌｅ＿０信号をデアサートする。制御部１１１がＳ１１０４にてＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ０に対して“０”を設定することで実現する。
【００８６】
Ｓ１１０３にて、制御部１１１は、Ｓ１１０１でプログラマブル処理部３００によりアサートされたＣｏｎｆｉｇＥｎａｂｌｅ＿０信号を検知する。
【００８７】
Ｓ１１０４にて、制御部１１１は、プログラマブル処理部３００のＣｏｎｆＥｎｂ＿Ｒｅｇｉｓｔｅｒ０に対して“０”を設定する。
【００８８】
なお、本実施形態における拡張処理（図４のＳ４０４）および標準処理（図４のＳ４０７）の処理内容は、第一の実施形態と同一であるためここでは説明を省略する。
【００８９】
以上、本実施形態によれば、プログラマブル処理部３００を、制御部１１１と制御部１２１とで共用する構成において、制御部１１１がコンフィギュレーションを管理する。さらに、プログラマブル処理部３００からコンフィギュレーションの完了を通知するＣｏｎｆｉｇＥｎａｂｌｅ＿０／１信号を、各制御部に対して出力する。このような構成により、制御部１２１が制御部１１１に対してコンフィギュレーションを依頼する必要がなくなる。さらに、第一の実施形態では必要だったジョブ実行可能通知を制御部１１１が生成、送信する必要がない。そのため、第一の実施形態よりもさらに簡潔なソフトウェア構成でコンフィギュレーションが実現できるとともに、各制御部がプログラマブル処理部を用いた処理を適切なタイミングで開始できるようになる。
【００９０】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００９１】
１００…画像処理システム、１１０…標準処理部、１１１…制御部、１１２…主記憶部、１１４…外部ＩＦ部、１２０…拡張処理部、１２１…制御部、１３０、１３１…インターフェース、３００…プログラマブル処理部 
【図１】
2016071457.tif 000003
【図２】
2016071457.tif 000004
【図３】
2016071457.tif 000005
【図４】
2016071457.tif 000006
【図５】
2016071457.tif 000007
【図６】
2016071457.tif 000008
【図７】
2016071457.tif 000009
【図８】
2016071457.tif 000010
【図９】
2016071457.tif 000011
【図１０】
2016071457.tif 000012
【図１１】
2016071457.tif 000013