(57)【要約】      （修正有）【課題】再構成可能回路を有する情報処理装置において処理のスケジュール管理を行う際、演算リソース及びメモリリソースを効果的に使用することで、パフォーマンス劣化を可能な限り抑える。【解決手段】情報処理装置であって、複数の部分再構成部に構成された回路が、ジョブを処理する際にワークメモリとして使用することが可能な記憶手段と、複数の部分再構成部及び記憶手段の使用状況を管理するリソース管理手段と、複数の部分再構成部に構成された回路を用いてジョブの処理を制御する制御手段とを有する。制御手段は、キューの先頭のジョブを処理させる際に、複数の部分再構成部及び記憶手段の使用状況を参照し、当該先頭のジョブを処理するためのリソースとして部分再構成部及び記憶手段の容量が確保できない場合は、キューに登録されたジョブを処理する順序を変更する。【選択図】図１
2016206729.tif 000002
【特許請求の範囲】
【請求項１】
動的に回路構成を再構成可能な複数の部分再構成部を含む再構成可能回路を備える情報処理装置であって、
前記複数の部分再構成部に構成された回路が、ジョブを処理する際にワークメモリとして使用することが可能な記憶手段と、
前記複数の部分再構成部および前記記憶手段の使用状況を管理するリソース管理手段と、
ジョブをキューにて管理するジョブキュー管理手段と、
前記複数の部分再構成部に構成された回路を用いてジョブの処理を制御する制御手段と
を有し、
前記制御手段は、前記キューの先頭のジョブを処理させる際に、前記リソース管理手段が管理する前記複数の部分再構成部および前記記憶手段の使用状況を参照し、当該先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できる場合は、当該リソースを確保して前記先頭のジョブを処理させ、確保できない場合は、前記キューに登録されたジョブを処理する順序を変更することを特徴とする情報処理装置。
【請求項２】
前記リソース管理手段は、前記複数の部分再構成部それぞれの使用状況および前記記憶手段の使用可能な容量を管理することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ジョブキュー管理手段は、各ジョブを処理するために必要な機能および前記記憶手段の使用量を管理することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記制御手段は、前記先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できない場合、前記先頭のジョブの後続のジョブに対し処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できるか否かを順次判定し、リソースが確保できる後続のジョブを先行して処理させることを特徴とする請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
前記ジョブキュー管理手段は更に、部分再構成部および前記記憶手段の容量が確保できない場合に、他のジョブから処理の順序を追い越された回数および追い越される回数の上限を管理し、
前記制御手段は、前記先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できない際に、当該先頭のジョブが他のジョブに追い越された回数が前記上限に達していた場合、部分再構成部および前記記憶手段の容量が確保できるまで追い越しを発生させずに、当該先頭のジョブの処理を待機させることを特徴とする請求項１乃至４のいずれか一項に記載の情報処理装置。
【請求項６】
前記追い越される回数の上限は、ジョブごとに定義されることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記ジョブキュー管理手段は更に、ジョブを処理する際に必要な前記記憶手段の容量に対する最大値と最小値とを管理し、
前記制御手段は、前記キューの先頭のジョブを処理させる際に、
前記記憶手段に対し前記最大値の容量が確保できる場合は、当該最大値の容量を確保して前記先頭のジョブを処理させ、
前記記憶手段に対し前記最大値の容量が確保できず、前記最小値の容量が確保できる場合において、前記先頭のジョブがリアルタイム性を要求されないジョブである場合には、当該最小値の容量を確保して前記先頭のジョブを処理させる
ことを特徴とする請求項１乃至４のいずれか一項に記載の情報処理装置。
【請求項８】
前記ジョブキュー管理手段は更に、ジョブを処理する際に必要な前記記憶手段の容量に対する最大値と最小値とを管理し、
前記制御手段は、前記キューの先頭のジョブを処理させる際に、
前記記憶手段に対し前記最大値の容量が確保できる場合は、当該最大値の容量を確保して前記先頭のジョブを処理させ、
前記記憶手段に対し前記最大値の容量が確保できず、前記最大値から前記最小値の範囲内で容量が確保できる場合において、前記先頭のジョブがリアルタイム性を要求されないジョブである場合には、確保が可能な容量全てを確保して前記先頭のジョブを処理させる
ことを特徴とする請求項１乃至４のいずれか一項に記載の情報処理装置。
【請求項９】
前記制御手段は更に、前記複数の部分再構成部の再構成を制御し、
前記制御手段は、ジョブを処理するリソースとして確保された部分再構成部に、当該ジョブを処理するための機能を備えた回路が構成されていない場合、前記機能に対応するコンフィギュレーションデータを用いて前記確保された部分再構成部に回路を再構成させることを特徴とする請求項１乃至８のいずれか一項に記載の情報処理装置。
【請求項１０】
動的に回路構成を再構成可能な複数の部分再構成部を含む再構成可能回路と、
前記複数の部分再構成部に構成された回路が、ジョブを処理する際にワークメモリとして使用することが可能な記憶手段と、
前記複数の部分再構成部および前記記憶手段の使用状況を管理するリソース管理手段と、
ジョブをキューにて管理するジョブキュー管理手段と
を備える情報処理装置の制御方法であって、
前記キューの先頭のジョブを処理させる際に、前記リソース管理手段が管理する前記複数の部分再構成部および前記記憶手段の使用状況を参照し、当該先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できる場合は、当該リソースを確保して前記先頭のジョブを処理させ、確保できない場合は、前記キューに登録されたジョブを処理する順序を変更することを特徴とする情報処理装置の制御方法。
【請求項１１】
動的に回路構成を再構成可能な複数の部分再構成部を含む再構成可能回路を備えるコンピュータを、
前記複数の部分再構成部に構成された回路が、ジョブを処理する際にワークメモリとして使用することが可能な記憶手段、
前記複数の部分再構成部および前記記憶手段の使用状況を管理するリソース管理手段、
ジョブをキューにて管理するジョブキュー管理手段、
前記複数の部分再構成部に構成された回路を用いてジョブの処理を制御する制御手段
として機能させ、
前記制御手段は、前記キューの先頭のジョブを処理させる際に、前記リソース管理手段が管理する前記複数の部分再構成部および前記記憶手段の使用状況を参照し、当該先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できる場合は、当該リソースを確保して前記先頭のジョブを処理させ、確保できない場合は、前記キューに登録されたジョブを処理する順序を変更することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびその制御方法、並びにプログラムに関する。
【背景技術】
【０００２】
内部の論理回路構成を変更可能なＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの再構成可能回路が良く知られている。一般的に、ＰＬＤやＦＰＧＡは起動時にＲＯＭ等の不揮発性メモリへ格納された論理回路構成情報を内部の揮発性メモリであるコンフィギュレーションメモリへ書き込むことにより内部論理ブロックの切り替えを行う。回路が動作中に論理回路構成を変更することが可能なものも開発されてきており、動作中に論理回路を変更する方法を動的再構成という。
【０００３】
また、ＦＰＧＡには、チップ全体ではなく特定の領域だけを部分的に書き換えることが可能なものがあり、このような書き換えを部分再構成という。特に、動作中の他の回路を停止しない状態で部分再構成を行うことを動的部分再構成という。動的部分再構成技術を用いることで、一つの領域に複数の回路を切り替えて実装することが可能となるため、ハードウェアリソースの時分割多重化を行い論理ブロックで実現する機能を変更することができる。その結果、少ないハードウェアリソースで用途に合わせた様々な機能をハードウェアによる高い演算性能を保ったままで柔軟に実現することが可能となる。
【０００４】
特許文献１では、大規模な処理を小さな処理単位に分割して処理する場合、処理内容が動的に変化しても柔軟に論理回路構成の書換え、実行をスケジュール管理し効率的な処理を可能とする技術が開示されている。大規模な処理を小さな処理単位に分割した場合、各処理単位の実行順や書換え順は一意に決定されるものではなく、様々な要因によって動的に変化するため、要因の変化に合わせて書換え、実行の順序をスケジュール管理する必要がある。
【０００５】
動的部分再構成技術を用いて大規模な処理を実現する場合、限られた演算リソースを効果的に用いるよう、処理実行のスケジュールを効率よく管理する必要がある。ここで言う演算リソースとは、分割された処理単位を実行する動的部分再構成領域と、各動的部分再構成領域が処理単位を実行する際に必要とするワークメモリ領域である。ワークメモリ領域には、各処理単位において処理される入力データ、中間データ、出力データが保持される。各処理単位が必要とするワークメモリ領域の量は、それぞれの処理内容によって異なる。ワークメモリを多く必要とする処理として、リアルタイム処理が挙げられる。リアルタイム処理とは、外部装置が情報処理装置に対して、ある一定の決められたタイミングでデータの入力もしくは出力を要求する処理のことを指す。外部装置が情報処理装置に対してデータの入力、出力を要求するタイミングは情報処理装置の内部状態に依らない。このため、リアルタイム処理を行う処理単位を動的部分再構成領域で実行するためには、外部機器が要求するデータ入出力タイミングを満たすようにワークメモリを多く確保する必要があり、メモリ領域が足りないとデータの消失が発生する。一方で非リアルタイムな処理、すなわち外部機器等によるタイミング要求の無い処理については、リアルタイム処理と比較して必要となるワークメモリメモリ領域は少なくすることができる。これは、非リアルタイム処理では、メモリ領域が足りなくなった場合は処理を中断することや、小さな単位で処理を実行し、都度、データを大容量ストレージ等に書き戻すなどが可能であるためである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第５０１８４８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように、動的部分再構成技術を用いて大規模な処理を実現する場合、ＦＰＧＡ内部の動的部分再構成領域等の演算リソースのみならず、動的部分再構成領域に書き込まれた処理単位の実行に必要となるメモリリソースも確保しなければならない。しかしながら、多様な機能を実現する情報処理装置においては、各動的部分再構成領域で実行される処理単位は必ずしも一連の一つの処理に限られたものではない。多くの場合、複数ユーザや複数の外部からの処理要求依頼によって、相互が連携することのない処理が同時並列に各動的部分再構成領域で実行される。特許文献１のような従来のスケジュール管理方法を用いた場合、動的部分再構成領域に書き込まれた処理単位が必要とするメモリリソースは、同時点において並列に実行されている他の処理単位のメモリ使用状況によっては確保できない状態が生じ得る。ある処理単位がメモリ領域を確保できない場合、処理単位は処理を開始することができず、特にリアルタイム処理ではデータの消失を招く恐れがある。よって、このようなメモリリソースの確保できない処理が処理の先頭にスケジュールされてしまうと、処理を開始していないにも関わらず、演算リソースを占有し続けてしまう。処理を開始していない処理単位が演算リソースを占有してしまうことで、ＦＰＧＡの限られた演算リソースの利用効率が悪化してしまうという問題があった。
【課題を解決するための手段】
【０００８】
上記課題を解決するために本願発明は以下の構成を有する。すなわち、動的に回路構成を再構成可能な複数の部分再構成部を含む再構成可能回路を備える情報処理装置であって、前記複数の部分再構成部に構成された回路が、ジョブを処理する際にワークメモリとして使用することが可能な記憶手段と、前記複数の部分再構成部および前記記憶手段の使用状況を管理するリソース管理手段と、ジョブをキューにて管理するジョブキュー管理手段と、前記複数の部分再構成部に構成された回路を用いてジョブの処理を制御する制御手段とを有し、前記制御手段は、前記キューの先頭のジョブを処理させる際に、前記リソース管理手段が管理する前記複数の部分再構成部および前記記憶手段の使用状況を参照し、当該先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できる場合は、当該リソースを確保して前記先頭のジョブを処理させ、確保できない場合は、前記キューに登録されたジョブを処理する順序を変更する。
【発明の効果】
【０００９】
本発明によれば、再構成可能回路を有する情報処理装置において処理のスケジュール管理を行う際、演算リソース及びメモリリソースを効果的に使用することで、パフォーマンス劣化を可能な限り抑える制御が実行可能となる。
【図面の簡単な説明】
【００１０】
【図１】本願発明に係る画像処理装置のハードウェア構成の一例を示す図。
【図２】本願発明に係る動的部分再構成に関わる構成例を示す図。
【図３】本願発明に係るシステム領域とワークメモリ領域割り当ての一例を示す図。
【図４】本願発明に係るリソース管理テーブルの構成例を示す図。
【図５】第一の実施形態に係るジョブキュー管理テーブルの構成例を示す図。
【図６】第一の実施形態に係るジョブスケジューリング制御処理のフローチャート。
【図７】第一の実施形態に係るジョブスケジューリング制御処理のフローチャート。
【図８】第二の実施形態に係るジョブキュー管理テーブルの構成例を示す図。
【図９】第二の実施形態に係るジョブスケジューリング制御処理のフローチャート。
【図１０】第三の実施形態に係るジョブキュー管理テーブルの構成例を示す図。
【図１１】第三の実施形態に係るジョブスケジューリング制御処理のフローチャート。
【図１２】第三の実施形態に係るジョブスケジューリング制御処理のフローチャート。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の説明では、対象とする装置を画像処理装置として説明するが、部分的かつ動的に再構成が可能なＦＰＧＡなどの再構成可能回路を備えた情報処理装置であれば、本願発明は適用可能である。また、本願明細書では内部の論理回路構成を変更可能な回路としてＦＰＧＡを例に挙げて説明するがこれに限定するものではない。
【００１２】
＜第一の実施形態＞
［画像処理装置の構成］
図１は、第一の実施形態に係る画像処理装置のハードウェアの構成例を示す図である。画像処理装置１００は、画像処理装置１００を使用するユーザが各種の操作を行うための操作部１０３と、操作部１０３からの指示に従い画像情報を読み取るスキャナ部１０９と、画像データを用紙に印刷するプリンタ部１０７とを有する。スキャナ部１０９は、スキャナ部１０９を制御するＣＰＵ（不図示）や原稿読取を行うための照明ランプや走査ミラー（不図示）などを有する。プリンタ部１０７は、プリンタ部１０７の制御を行うＣＰＵ（不図示）や画像形成や定着を行うための感光体ドラムや定着器（不図示）を有する。
【００１３】
また、画像処理装置１００は、ＣＰＵ１０１、ＲＯＭ１０４、ＨＤＤ１１６、ＲＡＭ１１１、メモリコントローラ１１０を有する。ＣＰＵ１０１は、画像処理装置１００の動作を統括的に制御し、画像処理装置１００の各ユニットを制御するための制御ソフトウェアを実行する。ＲＯＭ１０４は、ＣＰＵ１０１が実行するプログラムが格納される。ＨＤＤ１１６は、画像処理データのスプールや、画像処理装置１００で使用する全コンフィギュレーションデータの格納に用いられる。ＲＡＭ１１１は、ＣＰＵ１０１が動作するためのシステムワークメモリであり、かつ画像データを一時記憶するためのワークメモリでもある。メモリコントローラ１１０は、ＲＡＭ１１１と、ＲＡＭ１１１への書き込み、読み出し動作を制御する。メモリコントローラ１１０は、システムバス１２０および画像バス１２１に接続され、ＲＡＭ１１１へのアクセスを制御する。
【００１４】
また、画像処理装置１００は、再構成可能デバイスとして画像処理回路等を構成するＦＰＧＡ１４０を有する。本実施形態では再構成可能デバイスとしてＦＰＧＡを例に説明しているが、ＦＰＧＡ以外の再構成可能デバイスが接続される構成であってもよい。ＦＰＧＡ１４０における処理の実行に際しては、ワークメモリとしてＲＡＭ１１１を使用する。画像処理装置１００は、ＣＰＵ１０１の制御の基、ＦＰＧＡ１４０の回路構成（コンフィギュレーション）を制御するコンフィグコントローラ１３０を有する。ＦＰＧＡ１４０は、動的書き換え可能かつ部分書き換え可能な、動的部分再構成可能回路である。すなわち、ＦＰＧＡ１４０の再構成部の一部に構成された回路が動作している間に、その回路が占める部分とは重ならない別の部分に、別の回路を再構成することができる。本構成の詳細については、図２を用いて後述する。
【００１５】
また、画像処理装置１００は、スキャナ部１０９から画像データが入力されるスキャナＩ／Ｆ１０８と、プリンタへ画像データを出力するプリンタＩ／Ｆ１０６とを有する。スキャナ部１０９から取り込まれた画像データは、スキャナＩ／Ｆ１０８を介して画像処理装置１００内部へ取り込まれる。また、スキャナ部１０９から取り込まれたデータは同時に、ＦＰＧＡ１４０にも取り込まれることで、ＦＰＧＡ１４０においてスキャン画像に対する画像処理の実行が可能となる。なお、ＦＰＧＡ１４０においてスキャナ部１０９からの入力画像データに対して実行される処理は、前述したリアルタイム処理である。ＦＰＧＡ１４０及びスキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６は、処理される画像データを転送するための画像バス１２１に接続される。
【００１６】
また、画像処理装置１００は、ネットワークＩ／Ｆ１０２やＵＳＢＩ／Ｆ１１４を介し、ネットワーク上の汎用コンピュータ（不図示）と通信（データ送受信）を行う。また、画像処理装置１００は、ＦＡＸＩ／Ｆ１１５を介し、公衆回線網と接続し、他の画像処理装置やファクシミリ装置（不図示）と通信（データ送受信）を行う。画像処理装置１００は、ＣＰＵ１０１が実行するプログラム、ＲＯＭ１０４への書き込み、読み出し動作を制御するＲＯＭ  Ｉ／Ｆ１１２を有する。また、画像処理装置１００において、ＣＰＵ１０１、ネットワークＩ／Ｆ１０２、操作部１０３、ＲＯＭ  Ｉ／Ｆ１１２、コンフィグコントローラ１３０、ＦＰＧＡ１４０は、システムバス１２０を介して相互に接続される。ＣＰＵ１０１は、ＦＰＧＡ１４０と、スキャナＩ／Ｆ１０８、プリンタＩ／Ｆ１０６のパラメータ設定を、システムバス１２０を介して行う。
【００１７】
なお、本実施形態において、コンフィギュレーションデータはＨＤＤ１１６に格納されているが、格納先は画像処理装置１００内部に限定されるものではなく、例えば、ネットワークを介して外部のサーバから随時ダウンロードする構成でもよい。
【００１８】
［部分再構成に関する構成］
図２を用いて、本実施形態に係る画像処理装置１００の部分再構成に関する構成について説明する。ＣＰＵ１０１、コンフィグコントローラ１３０、ＲＡＭ１１１、ＨＤＤ１１６、およびＦＰＧＡ１４０については図１を用いて前述した通りである。
【００１９】
ＦＰＧＡ１４０は、内部に４つの部分再構成部を備える。具体的には、部分再構成部（ＰＲ０）２０１、部分再構成部（ＰＲ１）２０２、部分再構成部（ＰＲ２）２０３、および部分再構成部（ＰＲ３）２０４である。各部分再構成部は動的に画像処理回路等を書き換えることが可能である。本実施形態では、画像処理機能を持つ回路を部分再構成部に構成する例について説明をしているが、もちろん画像処理機能以外の処理回路を部分再構成部に構成可能であることは言うまでもない。また、４つの部分再構成部を備えた例を示すが、これ以外の数の部分再構成部を備えた構成であってもよい。
【００２０】
コンフィグコントローラ１３０は、リソース管理部２０５、エラー検知部２０６、およびコンフィグ転送部２０７を備える。リソース管理部２０５は、ＦＰＧＡ１４０で実行される画像処理機能が使用するリソースを管理する。例えば、部分再構成部２０１〜２０４それぞれが現在の処理に使用されているかなど、各部分再構成部の空き状況を管理する。その上で、リソース管理部２０５は、各部分再構成部が書き換え可能か否かの判定を行う。また、リソース管理部２０５は、部分再構成部２０１〜２０４それぞれに書き込まれた画像処理機能がＲＡＭ１１１において使用するメモリリソース量を管理し、画像処理機能がメモリリソースを確保可能か否かの判定を行う。
【００２１】
ＣＰＵ１０１は、リソース管理部２０５に管理された情報により、各部分再構成部が書き換え可能か否かの判定を加味し、コンフィグ転送部２０７へコンフィギュレーションデータ転送開始を指示する。コンフィグ転送部２０７は、ＣＰＵ１０１の指示の下、必要となるコンフィギュレーションデータをＨＤＤ１１６から読み出し、各部分再構成部へコンフィギュレーションデータを書き込む。この書き込みにより、コンフィギュレーションデータに応じた画像処理機能が実行可能な部分再構成部が構成される。
【００２２】
エラー検知部２０６は、部分再構成が正常に終了しなかった場合のエラーを検知する。例えば、部分再構成部２０１の書き換えを実施した際に、なんらかの要因で失敗してしまった時に再構成可能デバイスが出力するエラー信号をモニタする。エラー検知部２０６は、エラー信号を検知した場合、リソース管理部２０５に通知する。リソース管理部２０５は、コンフィギュレーションデータの転送指示が正常に完了したか否かをステータスとして保持し、ＣＰＵ１０１は保持されたステータスを読み取ることで、再構成が正常に終了したことを検知する。
【００２３】
［メモリリソースの割り当てに関する構成］
図３を用いて、本実施形態に係る画像処理装置１００におけるメモリリソースのＲＡＭ１１１への割り当てに関する構成について説明する。ＲＡＭ１１１は、ＣＰＵ１０１がシステムを統括的に制御するためのオペレーティングシステム（ＯＳ）用に割り当てられたシステム領域３００を有する。システム領域３００は、ＣＰＵ１０１において画像処理装置１００を統括的に制御する制御プログラムが割り当てられる。制御プログラムは、ＯＳのメモリ管理機能によって自動的にシステム領域３００内にメモリリソースを割り当てられる。
【００２４】
また、ＲＡＭ１１１は、ＦＰＧＡ１４０の画像処理機能の実行に際して必要となるワークメモリ領域３０１を有する。ワークメモリ領域３０１は、ＯＳのメモリ管理領域外である。従って、システム上で動作するソフトウェアプログラムがワークメモリ領域３０１に割り当てられロードされることはない。ワークメモリ領域３０１は、ＣＰＵ１０１により実行される、画像処理機能制御プログラムによって、画像処理機能ごとにメモリ領域を割り当てられる。
【００２５】
ＣＰＵ１０１は、リソース管理部２０５に管理されたワークメモリ領域３０１の使用状況により、画像処理機能において必要となるメモリ領域がワークメモリ領域３０１上に確保可能か否かを判定し、メモリリソースの確保を行う。メモリリソースの確保が完了すると、ＣＰＵ１０１は画像処理機能の実行を指示する。
【００２６】
［リソース管理テーブルの構成］
図４を用いて本実施形態に係るリソース管理部２０５によるリソース管理方法について説明する。リソース管理部２０５は、各部分再構成部の使用状況、及び各部分再構成部が使用中のメモリ使用量を管理するためのリソース管理テーブル４００を有する。リソース管理テーブル４００は、各部分再構成部が使用中か未使用かの使用状況に関するステータスを記憶して保持する。ＣＰＵ１０１は、いずれかの部分再構成部へのコンフィギュレーション開始依頼を行う場合、それに先立ち、リソース管理テーブル４００の対応するＰＲ番号のＰＲ使用状況を「使用中」に変更する。また、ＣＰＵ１０１は、いずれかの部分再構成部における画像処理機能の実行が終了した時点で、リソース管理テーブル４００の対応するＰＲ番号のＰＲ使用状況を「未使用」に変更する。更に、ＣＰＵ１０１は、いずれかの部分再構成部へのコンフィギュレーション開始要求を行う場合、リソース管理テーブル４００の対応するＰＲ番号のメモリ使用量を登録する。ＣＰＵ１０１は、いずれかの部分再構成部における画像処理機能の実行が終了した時点で、リソース管理テーブル４００の対応するＰＲ番号に登録されたメモリ使用量を破棄させる。
【００２７】
リソース管理部２０５はまた、リソース管理テーブル４００における各ＰＲの使用状況により、各部分再構成部の未使用個数を管理するためのＰＲ空き個数管理テーブル４０１を有する。ＰＲ空き個数管理テーブル４０１は、部分再構成部の個数、及び、リソース管理テーブル４００に登録されたＰＲ使用状況に基づいて、ＰＲ空き個数が更新される。
【００２８】
リソース管理部２０５はまた、リソース管理テーブル４００における各ＰＲのメモリ使用量より、ワークメモリ領域３０１におけるメモリ空き容量を管理するメモリ空き容量管理テーブル４０２を有する。メモリ空き容量管理テーブル４０２は、ワークメモリ領域３０１の容量、及び、リソース管理テーブル４００に登録された各ＰＲのメモリ使用量に基づいて、メモリ空き容量が更新される。ここでのメモリ空き容量は、各部分再構成部が使用可能なメモリ容量を意味する。
【００２９】
ＣＰＵ１０１は、各部分再構成部における画像処理機能の実行に際し、リソース管理部２０５に対してＰＲの空き状況、及びメモリリソースの空き状況の問い合わせを行う。リソース管理部２０５は、ＣＰＵ１０１からの問い合わせを受け付けると、ＰＲ空き個数管理テーブル４０１、及びメモリ空き容量管理テーブル４０２の情報に基づいて、ＰＲおよびメモリリソースが確保可能であるか否かをＣＰＵ１０１へ返答する。ＣＰＵ１０１は、リソース管理部２０５からの返答に基づいて、リソースが確保できるか否かを判定する。
【００３０】
［ジョブキュー管理テーブルの構成］
図５を用いて本実施形態に係るＣＰＵ１０１によるジョブキュー管理方法について説明する。ジョブキュー管理テーブル５００は、現在受け付けたジョブをキューイング処理するためのテーブルであり、画像処理装置１００が受け付けた各ジョブについて、ジョブを受け付けた順にジョブ番号を連番で割り付け保持する。また、ジョブキュー管理テーブル５００は、各ジョブを一意に判別するためのジョブ名を保持する。ジョブ名は、様々な画像処理機能に対応する機能名であり、例えば画像処理機能Ｘ、画像処理機能Ｙ、画像処理機能Ｚなどである。また、ジョブキュー管理テーブル５００は、画像処理機能ごとに固有で必要となるメモリ容量や、各画像処理機能で処理するデータ量に基づいて、各ジョブが必要なメモリ容量の情報を保持する。
【００３１】
［ジョブスケジューリング制御処理］
図６及び図７を用いて本実施形態に係る、ＦＰＧＡ１４０で実行されるジョブのジョブスケジューリング制御処理について説明する。
【００３２】
図６は、ジョブキュー管理テーブル５００に新たなジョブが登録されてから、ジョブキュー管理テーブル５００に登録された全てのジョブの処理がＦＰＧＡ１４０で開始されるまでのスケジューリング制御を説明するためのフローチャートである。ジョブスケジューリング制御処理は、ＣＰＵ１０１とリソース管理部２０５とが連携することによって実現される。
【００３３】
図７は、図６のジョブスケジューリング制御処理における、ジョブ順序制御処理（Ｓ６０７）及びジョブ実行処理（Ｓ６０８）の定義済み処理の詳細を説明するためのフローチャートである。なお、図７の各処理フローはＣＰＵ１０１によってなされる。
【００３４】
ＣＰＵ１０１の制御処理は、ジョブキュー管理テーブル５００に新たなジョブキューが登録されることで開始される。また、リソース管理部２０５の制御処理は、画像処理装置１００の起動とともに開始される。
【００３５】
Ｓ６０１にて、ＣＰＵ１０１は、ジョブキュー管理テーブル５００において参照するジョブ番号を“０”にリセットする。Ｓ６０２にて、ＣＰＵ１０１は、現在参照しているジョブ番号のジョブについて、ジョブキュー管理テーブル５００のジョブ名、及びメモリ必要量に基づいて、ＰＲの空き状況、及びメモリ空き状況をリソース管理部２０５に問い合わせる。
【００３６】
Ｓ６０３にて、リソース管理部２０５は、ＰＲ空き個数管理テーブル４０１を参照し、現在のＰＲの空き状況を確認する。Ｓ６０４にて、リソース管理部２０５は、メモリ空き容量管理テーブル４０２を参照し、現在のワークメモリ領域３０１の空き状況を確認する。Ｓ６０５にて、リソース管理部２０５は、Ｓ６０３及びＳ６０４での各リソース空き状況の確認結果をＣＰＵ１０１に返答する。
【００３７】
ＣＰＵ１０１は、Ｓ６０２にてリソース管理部２０５へリソース空き状況を問い合わせした後、Ｓ６０５にてリソース管理部２０５から各リソース空き状況確認結果の返答を受けると、Ｓ６０６へ移行する。Ｓ６０６にて、ＣＰＵ１０１は、リソース管理部２０５からの返答結果に基づき、ＰＲリソース、及びメモリリソースが両方とも確保可能であるか否かの判定を行う。少なくとも一方が確保可能でなければ（Ｓ６０６にてＮＯ）Ｓ６０７へ移行する。リソースが両方とも確保可能であれば（Ｓ６０６にてＹＥＳ）Ｓ６０８へ移行する。
【００３８】
Ｓ６０７にて、ＣＰＵ１０１は、リソース確保できないジョブ番号のジョブについて、実行開始延期を行うためのジョブ順序制御処理を行う。Ｓ６０７においてジョブ順序制御処理が開始されると、図７（ａ）のＳ７０１へと移行する。Ｓ７０１にて、ＣＰＵ１０１は、現在参照しているジョブが、キューに登録された全ジョブのうちの最後尾であるか否かを判定する。ここでは、参照しているジョブのジョブ番号が、ジョブキュー内のジョブの数よりも小さいか否かで判定される。最後尾でなければ（Ｓ７０１にてＹＥＳ）Ｓ７０２へ移行し、最後尾であれば（Ｓ７０１にてＮＯ）、Ｓ７０３へ移行する。Ｓ７０２にて、ＣＰＵ１０１は、ジョブキュー管理テーブル５００において参照するジョブ番号を１インクリメントする。これにより、リソースが確保できるか否かの判定を行う対象を１つ後ろのジョブに変更することとなる。これを繰り返すことで後続のジョブに対し順次判定することができる。その後、本処理フローを終了する。Ｓ７０３にて、ＣＰＵ１０１は、参照するジョブ番号を再び先頭の“０”にリセットし、本処理フローを終了する。ＣＰＵ１０１は、Ｓ６０７のジョブ順序制御処理が終了すると、Ｓ６０２へと移行し、新たに参照すべきジョブ番号について、Ｓ６０２〜Ｓ６０６の処理を再び行う。
【００３９】
Ｓ６０８にて、ＣＰＵ１０１は、リソースが確保可能なジョブ番号のジョブについて、ジョブを開始するためのジョブ実行処理を行う。Ｓ６０８においてジョブ実行処理が開始されると、図７（ｂ）のＳ７０４へと移行する。Ｓ７０４にて、ＣＰＵ１０１は、現在参照しているジョブ番号のジョブが使用するＰＲ番号およびメモリ使用量を、リソース管理テーブル４００に登録する。
【００４０】
Ｓ７０５にて、ＣＰＵ１０１は、コンフィグ転送部２０７に対して、特定のＰＲに対してコンフィギュレーションデータの転送処理を指示する。このとき、以前の処理により、ここでのジョブを処理するための機能が動的部分再構成部にすでに構成されている場合には、再構成は行わないように制御しても構わない。その後、再構成が正常に終了するとＳ７０６へ移行する。Ｓ７０６にて、ＣＰＵ１０１は、書き込まれた処理回路に対する必要なパラメータ設定、及びワークメモリ領域３０１上へメモリ領域の確保等の必要な前処理を行う。その後、ＣＰＵ１０１は、画像処理機能の実行開始を行う。
【００４１】
Ｓ７０７にて、ＣＰＵ１０１は、現在参照しているジョブ番号のジョブを、ジョブキュー管理テーブル５００から削除する。その後、本処理を終了する。なお、ジョブキュー管理テーブル５００において特定の番号のジョブが削除されると、削除されたジョブ番号より後段にあたるジョブはジョブ番号が１ずつデクリメントされることで、ジョブ番号が連番となるように更新、調整される。
【００４２】
ＣＰＵ１０１は、Ｓ６０８のジョブ実行処理が終了すると、Ｓ６０９へと移行する。Ｓ６０９にて、ＣＰＵ１０１は、ジョブキュー管理テーブル５００に未処理のジョブが残っているか否かを判定する。ジョブが残っている場合（Ｓ６０９にてＹＥＳ）Ｓ６０１へ移行して再びジョブキューの先頭のジョブから順次、処理を行う。ジョブキュー管理テーブル５００にジョブが残っていない場合（Ｓ６０９にてＮＯ）、本処理フローを終了する。なお、前述したようにリソース管理部２０５の処理は画像処理装置１００の起動とともに開始され、ＣＰＵ１０１からのリソース空き状況の問い合わせを受けると、都度リソースの確認を行い、結果をＣＰＵ１０１へと返答する。リソース管理部２０５の処理は、画像処理装置１００が停止した時点で終了する。
【００４３】
以上の制御により、画像処理装置１００は、キューイングされた複数のジョブをＦＰＧＡ１４０の限られた演算リソース（部分再構成部２０１〜２０４：ＰＲ）及び、メモリリソース（ワークメモリ領域３０１）を効率よく使用し実行することができる。本制御処理では、画像処理機能の実行に必要なリソースが確保できない場合、他のリソースが確保できるジョブを先行して実行させることでリソース利用率を向上させることが肝要である。ＣＰＵ１０１は、演算リソースとメモリリソースの少なくとも一方が確保できない場合、ジョブ順序を制御することで効果的なジョブ実行スケジューリングが可能となる。本制御処理を用いることで、ＣＰＵ１０１は、メモリリソースの確保できない処理が演算リソースを占有してしまうことを防ぐことが可能となる。
【００４４】
なお、本実施形態においては、コンフィグコントローラ１３０がリソース管理部２０５を有し、更にリソース管理部２０５は、リソース管理テーブル４００、ＰＲ空き個数管理テーブル４０１、メモリ空き容量管理テーブル４０２を有する構成例を示した。しかしながら、本実施形態は一例にすぎず、リソース管理部２０５と同等の機能をコンフィグコントローラ１３０以外が担うことも可能であり、例としてＣＰＵ１０１がリソース管理部２０５と同等の機能を担うことも可能である。
【００４５】
＜第二の実施形態＞
第一の実施形態では、ジョブキューの先頭となったジョブがメモリリソースを確保できない場合、ジョブキューの後続のジョブでリソース確保可能なジョブを先行して（順番を入れ替えて）実行することで、リソース利用率を向上させることが可能な制御フローを示した。しかしながら、メモリリソースを確保できないジョブは、ジョブキューの後続のジョブに次々と追抜かされてしまうと、いつまでも処理を開始することができない場合が生じる。これは、特にＲＡＭ１１１の容量が非常に限られたものであり、かつ、ワークメモリ領域３０１に割り当てられたメモリ容量も非常に小さい場合には顕著となる。ジョブキューに先に登録されたジョブがいつまでも開始されないことは、ユーザの利便性の低下につながる。第二の実施形態では、このような状況が起こることを抑止するための方法について説明する。以下、第二の実施形態について、第一の実施形態との差分に着目し、図を用いて説明する。
【００４６】
［順番追い越し回数を考慮したジョブキュー管理テーブル］
図８を用いて本実施形態に係るＣＰＵ１０１によるジョブキュー管理方法について説明する。図８は、ジョブキューの順番追い越し回数が考慮されたジョブキュー管理テーブル８００を示す。第一の実施形態のジョブキュー管理テーブル５００との差分は、ジョブキューに登録された各ジョブについて、被追い越し最大許可数と被追い越し数カウントを保持している点である。ジョブキュー管理テーブル８００に保持されるジョブ番号、ジョブ名、およびメモリ必要量は、第一の実施形態にて示したジョブキュー管理テーブル５００と同等である。被追い越し許可数は、ジョブキューのそれぞれのジョブについて、他のジョブに追い越される回数の最大許可数である。本実施形態では、この最大許可数を上限として、追い越しの回数を制御する。この値は、ジョブ毎に設定されても良いし、機能の種類ごとに設定されてもよい。被追い越し数カウントは、各ジョブがジョブキューに登録されてから、現在までに他のジョブに追い越された回数を示す。この値は、処理中において、追い越しが発生した際にカウントされる。
【００４７】
［順番追い越し回数を考慮したジョブスケジューリング制御処理］
図９を用いて本実施形態に係るＣＰＵ１０１によるジョブスケジューリング制御方法について説明する。図９は、本実施形態に係る、ジョブの順番追い越し回数が考慮された、ジョブスケジューリング制御処理を示す。図９（ａ）は、本実施形態に係るジョブ順序制御処理を示し、Ｓ８０１以外の処理は、第一の実施形態のジョブ順序制御処理と同等である。また、図９（ｂ）は、本実施形態に係るジョブ実行処理を示し、Ｓ８０２以外の処理は、第一の実施形態のジョブ実行処理と同等である。
【００４８】
まず、本実施形態のジョブ順序制御処理（図９（ａ））について説明する。Ｓ７０１にて、ＣＰＵ１０１は、参照しているジョブが、ジョブキュー内のジョブのうち最後尾であるか否かの判定を行う。参照しているジョブ以降に他のジョブが存在する場合には（Ｓ７０１にてＹＥＳ）Ｓ８０１へと移行する。
【００４９】
Ｓ８０１にて、ＣＰＵ１０１は、ジョブキュー管理テーブル８００に基づき、参照中のジョブの現在の被追い越し数カウントが、被追い越し最大許可数以内であるか否かの判定を行う。参照中のジョブの被追い越し数カウントが被追い越し最大許可数以内である場合は（Ｓ８０１にてＹＥＳ）、Ｓ７０２へ移行し、ＣＰＵ１０１は、参照するジョブ番号を１インクリメントする。その後、本処理フローを終了し、図６のＳ６０２へ戻る。一方、参照中のジョブの被追い越し数カウントが被追い越し最大数以内でない場合（Ｓ８０１にてＮＯ）、Ｓ７０３へ移行し、ＣＰＵ１０１は、参照するジョブ番号を“０”にリセットする。これにより、後続のジョブが順番追い越しを行うことを抑制する。その結果、部分再構成部およびワークメモリ領域３０１のリソースが確保できるまで、先頭のジョブの処理は待機され、このときキューに登録された他のジョブからの追い越しは生じないこととなる。その後、本処理フローを終了し、図６のＳ６０２へ戻る。
【００５０】
次に、本実施形態のジョブ実行制御処理（図９（ｂ））について説明する。Ｓ７０７の処理後、Ｓ８０２へと移行する。Ｓ８０２にて、ＣＰＵ１０１は、ジョブキュー管理テーブル８００において、現在参照しているジョブより手前、すなわち、現在参照しているジョブのジョブ番号よりジョブ番号が小さいすべてのジョブの被追い越し数カウント項目を１インクリメントする。その後、本処理フローを終了し、図６のＳ６０９へ進む。
【００５１】
以上の制御により、画像処理装置１００において、メモリリソースを確保できないジョブが、ジョブキューの後続のジョブに次々と追抜かされることでいつまでも処理を開始することができなくなることを抑制することが可能となる。また、ジョブキュー管理テーブル８００において、各ジョブに対して被追い越し最大許可数を適切に設定することにより、演算リソースおよびメモリリソースを効率よく使用しながらジョブを実行することが可能となる。
【００５２】
＜第三の実施形態＞
第一の実施形態では、ジョブキューの先頭となったジョブがメモリリソースを確保できない場合、ジョブキューの後続のジョブでリソース確保可能なジョブを先に実行することで、リソース利用率を向上させることが可能な制御を示した。
【００５３】
ここで、各ジョブにおける画像処理の処理内容によっては、使用するメモリリソース量を状況に応じて制御することが可能である。使用するメモリリソース量を制御可能な処理内容として、非リアルタイムな処理が挙げられる。非リアルタイムな処理は、外部機器等によるタイミング要求の無い処理であり、リアルタイム処理と比較して必要となるワークメモリメモリ領域は少なくすることができる。これは、非リアルタイム処理では、メモリ領域が足りなくなった場合は処理を中断することや、小さな単位で処理を実行し、都度、データを大容量ストレージ等に書き戻すなどが可能であるためである。非リアルタイム処理において、使用するメモリリソース量を制限することはパフォーマンスの低下につながる。しかしながら、多くのジョブを同時に複数処理することで、画像処理装置１００の並列処理性を向上することが可能となる。
【００５４】
一方、使用するメモリリソース量を制御することのできない処理内容として、リアルタイムな処理がある。リアルタイムな処理とは、例えば、スキャナ部１０９から入力された画像データに対し、スキャナ部１０９の要求タイミングに合わせてＦＰＧＡ１４０内部で処理を行う処理である。リアルタイムな処理では、スキャナ部１０９の要求タイミング及びＦＰＧＡ１４０に書き込まれる論理回路の処理能力に応じて必要となるメモリリソース量が決定される。このため、リアルタイム処理では、必要となるメモリリソース量が足りない状態で処理を開始してしまうと、スキャナ部１０９からの入力データをメモリ上に記憶することができず、データの消失の恐れがある。
【００５５】
第三の実施形態として、非リアルタイムな処理について使用するメモリリソースを制限することで、ＦＰＧＡ１４０の演算リソース及びメモリリソースを効率よく使用しながら、並列処理性をも向上することを可能とする制御方法について説明する。以下、第三の実施形態について第一の実施形態との差分に着目し、図を用いて説明する。
【００５６】
［処理内容を考慮したジョブキュー管理テーブル］
図１０を用いて本実施形態に係るＣＰＵ１０１によるジョブキュー管理方法について説明する。図１０は、ジョブの処理内容が考慮されたジョブキュー管理テーブル１０００を示す。
【００５７】
本実施形態のジョブキュー管理テーブル１０００は、ジョブ番号、ジョブ名、最大メモリ必要量、最小メモリ必要量、及びリアルタイム処理要求を保持する。本実施形態のジョブキュー管理テーブル１０００における、ジョブ番号、及びジョブ名は、第一の実施形態におけるジョブキュー管理テーブル５００と同等である。
【００５８】
最大メモリ必要量は、各ジョブにおける推奨されるメモリ必要量を示す。つまり、最大メモリ必要量は、ジョブを処理する際に利用するメモリ容量の最大値が定義されているものとする。最小メモリ必要量は、各ジョブにおける許容される最小のメモリ必要量を示す。つまり、ジョブを処理する際に必要とするメモリ容量の最小値を示し、これ以下のメモリ容量しか確保できない場合はジョブの実行が不可であることを意味する。
【００５９】
リアルタイム処理要求は、各ジョブについて、処理内容がリアルタイム性を要求されているか否かを示す。リアルタイム処理要求は、他の部位や外部装置から要求を受信した際に指定されているものとする。リアルタイム処理要求がなされているジョブは、例えば図１０においてはジョブ番号「１」のジョブのように、最大メモリ必要量と最小メモリ必要量が一致している。これは、リアルタイム処理については、メモリ必要量は、前述したとおり一意に決定されていることからなる。一方、リアルタイム処理要求がなされていないジョブは、例えば図１０においてはジョブ番号「０」のジョブのように、最大メモリ必要量と最小メモリ必要量が一致していない。非リアルタイム処理においては、最大メモリ必要量は処理パフォーマンスの観点から推奨されたメモリ量を表し、最小メモリ必要量は許容される最小のパフォーマンスを満たすメモリ量をそれぞれ表している。
【００６０】
［処理内容を考慮したジョブスケジューリング制御処理］
図１１、図１２を用いて本実施形態に係るＣＰＵ１０１によるジョブスケジューリング制御方法について説明する。図１１は、本実施形態における、ジョブの処理内容が考慮された、ジョブスケジューリング制御処理を示す。また、図１２は、図１１のジョブスケジューリング制御処理内のリアルタイム処理判別制御（Ｓ１１０２）の定義済み処理の詳細を説明するフローチャートである。
【００６１】
第一の実施形態のジョブスケジューリング制御処理との差分は、Ｓ６０２においてリソース空き状況の問い合わせ処理がＳ１１０１に変更されている点と、Ｓ１１０１とＳ６０６の間にＳ１１０２が追加されている点である。以下差分についてのみ説明する。
【００６２】
Ｓ１１０１にて、ＣＰＵ１０１は、現在参照しているジョブのジョブ番号について、ジョブキュー管理テーブル１０００のジョブ名、及び最大メモリ必要量に基づいて、ＰＲの空き状況、及びメモリ空き状況をリソース管理部２０５に問い合わせる。Ｓ６０２との違いは、問い合わせるメモリリソース量について、ジョブキュー管理テーブル１０００の最大メモリ必要量を用いている点である。問い合わせた結果がリソース管理部２０５より返答されると、Ｓ１１０２へ移行する。Ｓ１１０２にて、ＣＰＵ１０１は、リアルタイム処理判別制御処理を開始し、Ｓ１２０１へと移行する。
【００６３】
Ｓ１２０１にて、ＣＰＵ１０１は、Ｓ６０５におけるリソース管理部２０５からの返答内容に基づいて、現在参照しているジョブについて、ＰＲリソースが確保可能か否かを判定する。ＰＲリソースが確保可能であれば（Ｓ１２０１にてＹＥＳ）Ｓ１２０２へ移行し、確保可能でなければ（Ｓ１２０１にてＮＯ）本処理フローを終了し、図１１のＳ６０６へ進む。
【００６４】
Ｓ１２０２にて、ＣＰＵ１０１は、Ｓ６０５におけるリソース管理部２０５からの返答内容に基づいて、現在参照しているジョブについて、メモリリソースが確保可能か否かを判定する。メモリリソースが確保可能でなければ（Ｓ１２０２にてＮＯ）Ｓ１２０３へ移行し、確保可能であれば（Ｓ１２０２にてＹＥＳ）本処理フローを終了し、図１１のＳ６０６へ進む。
【００６５】
Ｓ１２０３にて、ＣＰＵ１０１は、ジョブキュー管理テーブル１０００に基づいて、現在参照しているジョブが非リアルタイム処理であるか否かを判定する。非リアルタイム処理であれば（Ｓ１２０３にてＹＥＳ）Ｓ１２０４へ移行し、リアルタイム処理であれば（Ｓ１２０３にてＮＯ）本処理フローを終了し、図１１のＳ６０６へ進む。
【００６６】
Ｓ１２０４にて、ＣＰＵ１０１は、現在参照しているジョブのジョブ番号について、ジョブキュー管理テーブル１０００の最小メモリ必要量に基づいて、メモリ空き状況をリソース管理部２０５に再び問い合わせる。
【００６７】
Ｓ１２０５にて、リソース管理部２０５は、ＣＰＵ１０１からのメモリリソース空き状況の問い合わせを受けると、メモリ空き容量管理テーブル４０２を参照し、メモリリソースの空き状況を確認する。Ｓ１２０６にて、リソース管理部２０５は、メモリリソースの空き状況の確認結果をＣＰＵ１０１に返答する。
【００６８】
Ｓ１２０７にて、ＣＰＵ１０１は、リソース管理部２０５からの返答に基づいて、最小メモリ必要量でのメモリリソースの確保確認結果により、リソース確保確認結果を更新する。その後、本処理フローを終了し、図１１のＳ６０６へ進む。Ｓ６０６以降では、ＣＰＵ１０１は、Ｓ１１０２で更新されたリソースの確保確認結果に基づいて、第一の実施形態と同様にジョブ順序制御処理もしくはジョブ実行処理を行う。
【００６９】
以上の制御により、メモリリソースが確保できないジョブが非リアルタイム処理である場合に必要とするメモリ使用量を抑制することで、ＦＰＧＡ１４０の演算リソース及びメモリリソースを効率よく使用しながら、並列処理性をも向上することが可能となる。本実施形態では、非リアルタイム処理については、まず最大メモリ必要量でメモリリソースが確保できるか否かを確認し、確保できなければ最小メモリ必要量で再度、メモリリソースの確保ができるか否かを確認することが肝要となる。これにより、最大メモリ必要量でメモリリソースが確保不可であっても、最小メモリ必要量であればメモリリソースが確保できる場合に、ジョブキューの後続のジョブに順番の追い越しをさせることなく処理を開始することが可能となる。
【００７０】
なお、本実施形態では、リアルタイム処理判別制御処理（Ｓ１１０２）において、最大メモリ必要量でメモリリソースが確保できない場合は、次に最小メモリ必要量でメモリリソースの確保を行う例を示した。しかしながら、本実施形態はあくまで一例であり、本実施形態に示した例に限定されるものではない。例えば、Ｓ１２０４において初めに最小メモリ必要量で確保を行うのではなく、最大メモリ必要量から最小メモリ必要量まで、メモリリソースが確保できるまで段階的に要求するメモリ使用量を下げてリソース確認を行うこともできる。また、最大メモリ必要量と最小メモリ必要量との間の範囲内で容量が確保できる場合には、その確保できる容量全てを確保して非リアルタイムな処理を行うようにしてもよい。このような制御を行うことで、非リアルタイムな処理であっても、極力パフォーマンスを犠牲にすることなく、本実施形態で示した効果と同等の効果を得ることができる。
【符号の説明】
【００７１】
１００・・・画像処理装置、１０１・・・ＣＰＵ、１０４・・・ＲＯＭ、１１１・・・ＲＡＭ、１２０・・・システムバス、１２１・・・画像バス、１３０・・・コンフィグコントローラ、１４０・・・ＦＰＧＡ
【図１】
2016206729.tif 000003
【図２】
2016206729.tif 000004
【図３】
2016206729.tif 000005
【図４】
2016206729.tif 000006
【図５】
2016206729.tif 000007
【図６】
2016206729.tif 000008
【図７】
2016206729.tif 000009
【図８】
2016206729.tif 000010
【図９】
2016206729.tif 000011
【図１０】
2016206729.tif 000012
【図１１】
2016206729.tif 000013
【図１２】
2016206729.tif 000014