(57)【特許請求の範囲】
【請求項１】
ソフトウェアによって処理を実行するソフトウェア処理手段と、
ハードウェアによって処理を実行するハードウェア処理手段と、
前記ソフトウェア処理手段によって特定処理が実行されたときの第１処理時間と前記ハードウェア処理手段によって前記特定処理が実行されたときの第２処理時間とを算出し、前記特定処理の内容に応じて、前記特定処理を前記ハードウェア処理手段で実行のために前記ハードウェアの初期化に要する初期化時間と前記第２処理時間との第１合計時間を算出する演算手段と、
前記第１処理時間と前記第１合計時間との比較結果に応じて、前記特定処理の実行を前記ソフトウェア処理手段又は前記ハードウェア処理手段のいずれかに割り当てる割当手段と、
を有し、
前記演算手段は、
前記特定処理よりも実行順番が前の処理群であって、前記ソフトウェア処理手段に割り当てられた連続する同一処理内容の未実行の処理群が、前記ソフトウェア処理手段によって実行されたときの第３処理時間を算出する手段と、
前記処理群が前記ハードウェア処理手段によって実行されたときの第４処理時間と前記処理群を前記ハードウェア処理手段によって実行するために前記ハードウェアの初期化に要する初期化時間との第２合計時間を算出する手段と、
を有し、
当該情報処理装置は、
前記第３処理時間と前記第２合計時間との比較結果に応じて、前記処理群の実行手段を、前記ソフトウェア処理手段から前記ハードウェア処理手段に変更する再割当手段を更に有する、
情報処理装置。
【請求項２】
前記割当手段は、前記特定処理の直前に実行される直前処理の内容と前記特定処理の内容とが異なる場合に、前記第１処理時間と前記第１合計時間との比較結果に応じて、前記割り当てを実行し、前記直前処理の内容と前記特定処理の内容とが同一の場合に、前記第１処理時間と前記第２処理時間との比較結果に応じて、前記割り当てを実行する、
ことを特徴とする請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関する。
【背景技術】
【０００２】
画像処理装置等の情報処理装置においては、画像処理等の情報処理がソフトウェア又はハードウェアで実行される場合がある。
【０００３】
特許文献１には、画像データの画質を考慮してソフトウェア処理とハードウェア処理とを切り替える装置が開示されている。
【０００４】
特許文献２には、画像の伸張処理をソフトウェアにより実行したときのソフトウェア処理時間と、伸張処理をハードウェアにより実行したときのハードウェア処理時間と、を算出し、ハードウェア処理時間がソフトウェア処理時間より小さい場合に、圧縮画像を生成する装置が開示されている。
【０００５】
特許文献３には、ダミーソフトウェアを実行した際の対象コンピュータの時間性能特性値を算出し、ダミーソフトウェアの同時並行数とその時間性能特性値との対応関係を算出する装置が開示されている。
【０００６】
特許文献４には、ラスタライズをハードウェアで実行したときの時間とラスタライズをソフトウェアで実行したときの時間との比較結果に応じて、ラスタライズをハードウェア又はソフトウェアで実行する装置が開示されている。
【０００７】
特許文献５には、ハードウェアによって処理を実行したときの処理時間と、ＣＰＵを有する処理装置とデータ処理装置との間の往復通信時間と、の和を求め、その和がソフトウェア処理時間未満となる場合に、データ処理装置にハードウェア処理を依頼する装置が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１１７９６７号公報
【特許文献２】特開２０１０−１０９６３７号公報
【特許文献３】特開２０１２−１２８７７１号公報
【特許文献４】特開２０１１−１６５０２２号公報
【特許文献５】特開２０１４−２０３０８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、ハードウェアで処理を行う場合には、ソフトウェア処理では不要となるハードウェア制御上のオーバーヘッド（ある処理を実行するために付随する作業に要する時間）が必要となる。ハードウェアで画像処理を行う場合のオーバーヘッドとして、例えば、パイプライン機構の構築及び破棄に要する時間、制御パラメータや画像処理パラメータの設定（回路のカウンタ設定やＲＡＭの設定等）に要する時間、ＤＲＰ（Dynamic ReConfigurable Processor）やＦＰＧＡ（Field-Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）等の回路を切り替える際に発生するリコフィング時間等がある。一般的に、複雑な処理ほど、ハードウェアによる処理時間はソフトウェアによる処理時間よりも短くなり、処理時間の差は大きくなる。しかし、比較的単純な処理を実行する場合、ハードウェアによる処理時間とオーバーヘッドとの合計が、ソフトウェアによる処理時間よりも大きくなってしまうことがある。それ故、すべての処理をハードウェアで処理した場合、ソフトウェアで処理する場合よりも全体の処理時間が長くなってしまうという問題が生じ得る。
【００１０】
本発明の目的は、全体の処理時間がより短くなるように、処理の実行がソフトウェア又はハードウェアに割り当てられるようにすることである。
【課題を解決するための手段】
【００１１】
請求項１に係る発明は、ソフトウェアによって処理を実行するソフトウェア処理手段と、ハードウェアによって処理を実行するハードウェア処理手段と、前記ソフトウェア処理手段によって特定処理が実行されたときの第１処理時間と前記ハードウェア処理手段によって前記特定処理が実行されたときの第２処理時間とを算出し、前記特定処理の内容に応じて、前記特定処理を前記ハードウェア処理手段で実行のために前記ハードウェアの初期化に要する初期化時間と前記第２処理時間との第１合計時間を算出する演算手段と、前記第１処理時間と前記第１合計時間との比較結果に応じて、前記特定処理の実行を前記ソフトウェア処理手段又は前記ハードウェア処理手段のいずれかに割り当てる割当手段と、を有し、前記演算手段は、前記特定処理よりも実行順番が前の処理群であって、前記ソフトウェア処理手段に割り当てられた連続する同一処理内容の未実行の処理群が、前記ソフトウェア処理手段によって実行されたときの第３処理時間を算出する手段と、前記処理群が前記ハードウェア処理手段によって実行されたときの第４処理時間と前記処理群を前記ハードウェア処理手段によって実行するために前記ハードウェアの初期化に要する初期化時間との第２合計時間を算出する手段と、を有し、当該情報処理装置は、前記第３処理時間と前記第２合計時間との比較結果に応じて、前記処理群の実行手段を、前記ソフトウェア処理手段から前記ハードウェア処理手段に変更する再割当手段を更に有する、情報処理装置である。
【００１２】
請求項２に係る発明は、前記割当手段は、前記特定処理の直前に実行される直前処理の内容と前記特定処理の内容とが異なる場合に、前記第１処理時間と前記第１合計時間との比較結果に応じて、前記割り当てを実行し、前記直前処理の内容と前記特定処理の内容とが同一の場合に、前記第１処理時間と前記第２処理時間との比較結果に応じて、前記割り当てを実行する、ことを特徴とする請求項１に記載の情報処理装置である。
【発明の効果】
【００１４】
請求項１，２に係る発明によると、全体の処理時間がより短くなるように、処理の実行がソフトウェア又はハードウェアに割り当てられる。また、連続する同一内容の処理群を実行する場合において、全体の処理時間がより短くなるように、処理群の実行がソフトウェア又はハードウェアに割り当てられる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係る画像処理装置を示すブロック図である。
【図２】処理時間を推定するための係数を示す図である。
【図３】アクセラレータの初期化時間を示す図である。
【図４】処理リストの一例を示す図である。
【図５】実施例１に係る処理の一例を示すフローチャートである。
【図６】処理時間推定値と初期化時間とを示す図である。
【図７】処理時間の一例を示す図である。
【図８】実施例２に係る処理の一例を示すフローチャートである。
【図９】実施例２に係る処理の一例を示すフローチャートである。
【図１０】処理時間の合計を示す図である。
【図１１】処理時間の合計を示す図である。
【図１２】処理時間の合計を示す図である。
【図１３】処理時間の合計を示す図である。
【図１４】処理時間の合計を示す図である。
【発明を実施するための形態】
【００１７】
図１には、本発明の実施形態に係る情報処理装置としての画像処理装置の一例が示されている。画像処理装置１０は、外部から画像データを受けて画像処理を実行する装置である。一例として、画像処理装置１０は、プリント機能、スキャン機能、コピー機能及びファクシミリ機能等を有する画像形成装置に接続又は搭載されていてもよい。
【００１８】
アクセラレータ１２は画像処理機能を有するハードウェアである。このアクセラレータ１２によってハードウェア処理が実現される。アクセラレータ１２は、例えば、ＤＲＰやＦＰＧＡやＡＳＩＣ等の回路によって構成されている。アクセラレータ１２においては、例えば、パイプライン処理を実行するパイプライン機構が構築される。
【００１９】
制御部（コントローラ）１４はＣＰＵ等のプロセッサを含む。制御部１４は、ソフトウェア処理部１６、処理時間算出部１８、割当部２０及び再割当部２２を含む。制御部１４は、画像処理要求を順次受け付け、画像処理要求を処理リストに登録する。一例として、その受け付けの順番が画像処理要求の実行順番として登録される。
【００２０】
ソフトウェア処理部１６は、ソフトウェアによって画像処理を実行する機能を有する。ソフトウェア処理部１６による画像処理は、プロセッサが画像処理プログラムを実行することにより実現される。
【００２１】
処理時間算出部１８は、ソフトウェア処理部１６によって画像処理が実行されたときのソフトウェア処理時間と、アクセラレータ１２によって画像処理が実行されたときのハードウェア処理時間と、を算出する。また、処理時間算出部１８は、アクセラレータ１２を構成するハードウェアの初期化に要する初期化時間を算出し、ハードウェア処理時間と初期化時間との合計時間（ハードウェア処理合計時間）を算出する。初期化時間には、例えば、アクセラレータ１２におけるパイプライン機構の破棄に要する破棄時間と、画像処理に適合したパイプライン機構の構築（セットアップ）に要するセットアップ時間と、が含まれる。実行対象の画像処理（対象画像処理）の内容が、その対象画像処理の直前に実行される画像処理（直前画像処理）の内容と異なる場合に、アクセラレータ１２の初期化及びセットアップが実行される。
【００２２】
割当部２０は、ソフトウェア処理時間と、ハードウェア処理時間又はハードウェア処理合計時間と、を比較し、その比較結果に応じて、画像処理の実行をアクセラレータ１２又はソフトウェア処理部１６のいずれかに割り当てる。アクセラレータ１２の初期化が必要な場合、割当部２０は、ソフトウェア処理時間とハードウェア処理合計時間との比較結果に応じて、画像処理の実行をアクセラレータ１２又はソフトウェア処理部１６のいずれかに割り当てる。アクセラレータ１２の初期化が不要な場合、割当部２０は、ソフトウェア処理時間とハードウェア処理時間との比較結果に応じて、画像処理の実行をアクセラレータ１２又はソフトウェア処理部１６のいずれかに割り当てる。具体的には、アクセラレータ１２の初期化が必要な場合においては、割当部２０は、ソフトウェア処理時間がハードウェア処理合計時間未満となる場合に、画像処理の実行をソフトウェア処理部１６に割り当て、ソフトウェア処理時間がハードウェア処理合計時間以上となる場合に、画像処理の実行をアクセラレータ１２に割り当てる。アクセラレータ１２の処理化が不要な場合においては、割当部２０は、ソフトウェア処理時間がハードウェア処理時間未満となる場合に、画像処理の実行をソフトウェア処理部１６に割り当て、ソフトウェア処理時間がハードウェア処理時間以上となる場合に、画像処理の実行をアクセラレータ１２に割り当てる。処理リストには、各画像処理の実行順番と、各画像処理を実行するデバイス（アクセラレータ１２又はソフトウェア処理部１６）と、が示されている。
【００２３】
再割当部２２は、画像処理の実行が割当部２０によってソフトウェア処理部１６に割り当てられた場合に、当該画像処理よりも実行順番が前の画像処理群であって、ソフトウェア処理部１６に割り当てられた連続する同一処理内容の未実行の画像処理群を、アクセラレータ１２又はソフトウェア処理部１６のいずれかに再度割り当てる。例えば、再割当部２２は、当該画像処理群がソフトウェア処理部１６によって実行されたときの処理時間（総ソフトウェア処理時間）、当該画像処理群がアクセラレータ１２によって実行されたときの処理時間（総ハードウェア処理時間）、及び、当該画像処理群をアクセラレータ１２によって実行するためにアクセラレータ１２の初期化に要する初期化時間（総初期化時間）を算出する。そして、再割当部２２は、総ハードウェア処理時間と総初期化時間との合計時間を算出し、その合計時間が総ソフトウェア処理時間以下となる場合に、当該画像処理群の実行をアクセラレータ１２に割り当てる。これにより、画像処理群の実行デバイスがソフトウェア処理部１６からアクセラレータ１２に変更される。再割当部２２によって実行デバイスが変更されることにより、割当部２０によって作成された処理リストが修正される。合計時間が総ソフトウェア処理時間よりも長くなる場合（総ソフトウェア処理時間が合計時間未満となる場合）、実行デバイスの変更は行われない。
【００２４】
記憶部２４はハードディスク等の記憶装置である。記憶部２４には、例えば、プログラム２６、計算用情報２８及び処理リスト３０が記憶されている。また、記憶部２４には、画像処理の対象となる画像データが記憶される。
【００２５】
プログラム２６は、制御部１４によって実行されるプログラムであり、例えば画像処理プログラムである。この画像処理プログラムがＣＰＵ等のプロセッサによって実行されることにより、ソフトウェア処理部１６による画像処理が実現される。また、処理時間算出部１８、割当部２０及び再割当部２２のそれぞれの処理を実行するためのプログラムも、記憶部２４に記憶されている。
【００２６】
計算用情報２８は、ソフトウェア係数、ハードウェア係数及び初期化時間を示す情報である。ソフトウェア係数は、個々の画像処理のソフトウェア処理時間を計算するための係数である。ハードウェア係数は、個々の画像処理のハードウェア処理時間を計算するための係数である。初期化時間は、アクセラレータ１２の初期化に要する時間であり、破棄時間とセットアップ時間を含む。画像処理毎のソフトウェア係数とハードウェア係数が予め決定されており、パイプライン機構毎の破棄時間とセットアップ時間が予め決定されている。この計算用情報２８を利用することにより、ソフトウェア処理時間、ハードウェア処理時間及び初期化時間が算出される。
【００２７】
処理リスト３０は、画像処理装置１０にて実行される画像処理のリストのデータである。処理リスト３０は割当部２０によって作成される。つまり、割当部２０によって画像処理がアクセラレータ１２又はソフトウェア処理部１６に割り当てられることにより、処理リスト３０が作成される。また、再割当部２２によって再割当処理が実行される場合には、割当部２０と再割当部２２とによって処理リスト３０が作成される。
【００２８】
図２には、計算用情報２８としての係数リストの一例が示されている。ＣＰＵ係数はソフトウェア係数の一例であり、ＡＣＣ係数（アクセラレータ係数）はハードウェア係数の一例である。画像処理毎のＣＰＵ係数とＡＣＣ係数とが予め決定されている。
【００２９】
処理時間算出部１８は、実行対象の画像処理に対応するＣＰＵ係数とＡＣＣ係数とを係数リストから取得し、それらに基づいて当該画像処理のソフトウェア処理時間とハードウェア処理時間とを算出する。一例として、「回転」処理と「ドロップカラー」処理とが実行される場合、処理対象の画素数をＰｉｘｓとすると、ソフトウェア処理時間Ｔｃｐｕとハードウェア処理時間Ｔａｃｃは、以下の式で表される。
Ｔｃｐｕ＝Ｐｉｘｓ×Ｃｒｏｔ＋Ｐｉｘｓ×Ｃｄｐ
Ｔａｃｃ＝Ｐｉｘｓ×Ａｒｏｔ＋Ｐｉｘｓ×Ａｄｐ
なお、解像度変換が画像処理に含まれる場合、解像度変換後の画素数に基づいてソフトウェア処理時間Ｔｃｐｕとハードウェア処理時間Ｔａｃｃとが計算される。
【００３０】
図３には、計算用情報２８としての初期化時間のリストの一例が示されている。パイプライン処理（パイプライン機構）毎の初期化時間（破棄時間とセットアップ時間）が予め決定されている。なお、初期化時間には、アクセラレータ１２を構成する回路（ＤＲＰ、ＦＰＧＡ、ＡＳＩＣ等の回路）のリコンフィグ時間（回路の切り替えに要する時間）が含まれてもよい。
【００３１】
処理時間算出部１８は、パイプライン機構に対応する破棄時間とセットアップ時間とをリストから取得し、初期化時間（破棄時間＋セットアップ時間）を算出する。一例として、アクセラレータ１２のパイプライン機構が「ＴｙｐｅＡ」から「ＴｙｐｅＢ」に切り替えられる場合、初期化時間は、「ＴｙｐｅＡ」の破棄時間Ｄａと「ＴｙｐｅＢ」のセットアップ時間Ｓｂとの合計となる。なお、最初にアクセラレータ１２によって画像処理が実行される場合には、前のパイプライン機構が存在しないので、破棄時間が不要となる。この場合、初期化時間はセットアップ時間と等しくなる。
【００３２】
図４には、処理リスト３０の一例が示されている。この処理リスト３０は、割当部２０によって作成されたリスト、又は、割当部２０と再割当部２２とによって作成されたリストである。処理リスト３０においては、画像処理の順番を示すＩｎｄｅｘ、パイプライン処理（パイプライン機構）のタイプ（Ｔｙｐｅ）、ソフトウェア処理時間（Ｔｃｐｕ）、ハードウェア処理時間（Ｔａｃｃ）、パイプライン機構の破棄時間（Ｔｄ）、アクセラレータ１２のセットアップ時間（Ｔｓｅｔｕｐ）、及び、処理デバイス（アクセラレータ１２又はＣＰＵ（ソフトウェア処理部１６））が、画像処理毎に対応付けられている。例えば、制御部１４によって画像処理要求が受け付けられた順番が実行順番として採用され、各画像処理要求が処理リストに登録される。例えば、処理リスト３０の先頭の画像処理はアクセラレータ１２によって実行され、２番目（＋１）の画像処理はソフトウェア処理部１６（ＣＰＵ）によって実行される。
【００３３】
次に、上記の構成を有する画像処理装置１０の具体的な実施例について説明する。
【００３４】
（実施例１）
図５に示されているフローチャートを参照して、実施例１に係る処理について説明する。
【００３５】
まず、制御部１４は、新規の画像処理要求Ｒｎを受け付け（Ｓ０１）、その画像処理要求Ｒｎの画像処理内容Ｐｎを取得する（Ｓ０２）。例えば、画像処理要求Ｒｎのデータに、画像処理内容Ｐｎと、その画像処理の対象となる画像データを識別するためのデータ識別情報と、が含まれており、制御部１４は、画像処理要求Ｒｎから画像処理内容Ｐｎを取得する。なお、画像処理の対象となる画像データは、画像処理要求Ｒｎとともに画像処理装置１０に入力されてもよいし、画像処理装置１０の記憶部２４に記憶されていてもよい。
【００３６】
次に、処理時間算出部１８は、計算用情報２８に含まれる係数リストから画像処理内容Ｐｎに対応するＣＰＵ係数を取得し、そのＣＰＵ係数に基づいてソフトウェア処理時間Ｔｃｐｕ（ｎ）を計算し、画像処理要求Ｒｎとソフトウェア処理時間Ｔｃｐｕ（ｎ）とを対応付けて処理リスト３０に登録する（Ｓ０３）。
【００３７】
また、処理時間算出部１８は、計算用情報２８に含まれる係数リストから画像処理内容Ｐｎに対応するＡＣＣ係数を取得し、そのＡＣＣ係数に基づいてハードウェア処理時間Ｔａｃｃ（ｎ）を計算する（Ｓ０４）。また、処理時間算出部１８は、計算用情報２８に含まれる初期化時間リストから、画像処理内容Ｐｎに対応するパイプライン機構に対応するセットアップ時間Ｔｓｅｔｕｐ（ｎ）と破棄時間Ｔｄ（ｎ）とを取得する（Ｓ０４）。そして、処理時間算出部１８は、画像処理要求Ｒｎと、パイプライン処理のタイプと、ハードウェア処理時間Ｔａｃｃ（ｎ）と、セットアップ時間Ｔｓｅｔｕｐ（ｎ）と、破棄時間Ｔｄ（ｎ）とを対応付けて処理リスト３０に登録する（Ｓ０４）。
【００３８】
次に、制御部１４は、画像処理要求Ｒｎ以前の要求群の中でアクセラレータ１２に割り振られた最後の画像処理内容Ｐｌａｓｔを処理リスト３０から取得する（Ｓ０５）。そして、制御部１４は、画像処理内容Ｐｎと画像処理内容Ｐｌａｓｔとを比較し、アクセラレータ１２の初期化が必要か否かを判断する（Ｓ０６）。画像処理内容Ｐｎと画像処理内容Ｐｌａｓｔとが異なる場合、つまり、パイプライン機構が異なる場合、初期化（画像処理内容Ｐｌａｓｔ用のパイプライン機構の破棄と、画像処理内容Ｐｎ用のパイプライン機構の構築）が必要となる。
【００３９】
アクセラレータ１２の初期化が必要な場合（Ｓ０６，Ｙｅｓ）、つまり、画像処理内容Ｐｎと画像処理内容Ｐｌａｓｔとが異なる場合、処理時間算出部１８は、初期化時間リストから、画像処理内容Ｐｌａｓｔ用のパイプライン機構の破棄時間Ｔｄ（ｌａｓｔ）を取得する（Ｓ０７）。そして、処理時間算出部１８は、破棄時間Ｔｄ（ｌａｓｔ）と、セットアップ時間Ｔｓｅｔｕｐ（ｎ）と、ハードウェア処理時間Ｔａｃｃ（ｎ）と、を加算することにより、ハードウェア処理合計時間（Ｔｄ（ｌａｓｔ）＋Ｔｓｅｔｕｐ（ｎ）＋Ｔａｃｃ（ｎ））を算出する（Ｓ０８）。
【００４０】
アクセラレータ１２の初期化が不要な場合（Ｓ０６，Ｎｏ）、つまり、画像処理内容Ｐｎと画像処理内容Ｐｌａｓｔとが同じ場合や、画像処理要求Ｒｎが最初の要求の場合、処理時間算出部１８は、ハードウェア処理時間Ｔａｃｃ（ｎ）をハードウェアの処理時間として採用する（Ｓ０９）。
【００４１】
次に、割当部２０は、ソフトウェア処理時間Ｔｃｐｕ（ｎ）とハードウェアの処理時間とを比較する（Ｓ１０）。
【００４２】
具体的には、アクセラレータ１２の初期化が必要な場合、割当部２０は、ソフトウェア処理時間Ｔｃｐｕ（ｎ）と、ハードウェア処理合計時間（＝Ｔｄ（ｌａｓｔ）＋Ｔｓｅｔｕｐ（ｎ）＋Ｔａｃｃ（ｎ））と、を比較する（Ｓ１０）。ソフトウェア処理時間Ｔｃｐｕ（ｎ）がハードウェア処理合計時間未満となる場合（Ｓ１０，Ｙｅｓ）、つまり、アクセラレータ１２よりもソフトウェア処理部１６で処理した方が速い場合（Ｓ１０，Ｙｅｓ）、割当部２０は、画像処理要求Ｒｎの実行をソフトウェア処理部１６に割り当てる（Ｓ１１）。これにより、画像処理要求Ｒｎの処理デバイスとしてＣＰＵが利用されることになる。一方、ソフトウェア処理時間Ｔｃｐｕ（ｎ）がハードウェア処理合計時間以上となる場合（Ｓ１０，Ｎｏ）、つまり、アクセラレータ１２よりもソフトウェア処理部１６で処理した方が速いわけではない場合（Ｓ１０，Ｎｏ）、割当部２０は、画像処理要求Ｒｎの実行をアクセラレータ１２に割り当てる（Ｓ１２）。これにより、画像処理要求Ｒｎの処理デバイスとしてアクセラレータ１２が利用されることになる。そして、割当部２０は、画像処理内容Ｐｌａｓｔを画像処理内容Ｐｎに更新する（Ｓ１３）。なお、ソフトウェア処理時間Ｔｃｐｕ（ｎ）とハードウェア処理合計時間とが同一の場合、割当部２０は、画像処理要求Ｒｎの実行を、ソフトウェア処理部１６に割り当ててもよい。
【００４３】
アクセラレータ１２の初期化が不要な場合、割当部２０は、ソフトウェア処理時間Ｔｃｐｕ（ｎ）とハードウェア処理時間Ｔａｃｃ（ｎ）とを比較する（Ｓ１０）。ソフトウェア処理時間Ｔｃｐｕ（ｎ）がハードウェア処理時間Ｔａｃｃ（ｎ）未満となる場合（Ｓ１０，Ｙｅｓ）、割当部２０は、画像処理要求Ｒｎの実行をソフトウェア処理部１６に割り当てる（Ｓ１１）。一方、ソフトウェア処理時間Ｔｃｐｕ（ｎ）がハードウェア処理時間Ｔａｃｃ（ｎ）以上となる場合（Ｓ１０，Ｎｏ）、割当部２０は、画像処理要求Ｒｎの実行をアクセラレータ１２に割り当てる（Ｓ１２）。そして、割当部２０は、画像処理内容Ｐｌａｓｔを画像処理内容Ｐｎに更新する（Ｓ１３）。なお、ソフトウェア処理時間Ｔｃｐｕ（ｎ）とハードウェア処理時間Ｔａｃｃ（ｎ）とが同一の場合、割当部２０は、画像処理要求Ｒｎの実行を、ソフトウェア処理部１６に割り当ててもよい。
【００４４】
制御部１４は、新規の画像処理要求Ｒｎを受け付ける度に、ステップＳ０１〜Ｓ１３の処理を実行する。これにより、１又は複数の画像処理要求が規定された処理リスト３０が作成される。そして、処理リスト３０に登録されている画像処理が、登録されている順番に従って、アクセラレータ１２又はソフトウェア処理部１６によって順次実行される。なお、実施例１では再割当部２２による処理は実行されないので、再割当部２２は画像処理装置１０に設けられていなくてよい。
【００４５】
次に、図６及び図７を参照して、実施例１の具体例について説明する。ここでは、ＯＣＲ前処理と縮小画像生成処理とが交互に実行される場合について説明する。例えば、１枚の画像から、ＯＣＲ（optical character recognition）処理による情報の取り出しと、ファイルサイズの小さい画像の生成、等といった画像処理が指定されることが想定される。この場合、画像毎に、ＯＣＲ処理と縮小画像生成処理とが交互に実行されることが想定される。
【００４６】
図６には、ＯＣＲ前処理及び縮小画像生成処理のそれぞれのソフトウェア処理時間とハードウェア処理時間とが示されている。この処理時間は、画像の画素数に基づいて算出された時間である。ハードウェア処理時間はソフトウェア処理時間よりも短くなっている。また、図６には、ＯＣＲ前処理及び縮小画像生成処理のそれぞれにおけるアクセラレータ１２の初期化時間（破棄時間とセットアップ時間）が示されている。
【００４７】
図７には、全ての画像処理要求をソフトウェア処理部１６によって実行した場合に要する処理時間の合計、全ての画像処理要求をアクセラレータ１２によって実行した場合に要する処理時間の合計、及び、実施例１を適用した場合に要する処理時間の合計、が示されている。
【００４８】
図７に示されているように、１番目の画像処理要求は「ＯＣＲ前処理」である。ＯＣＲ前処理をソフトウェア処理部１６によって実行する場合、図６に示すように、その処理時間は「８２０ｍｓ」となる。最初にアクセラレータ１２で処理する場合、以前のパイプライン機構の破棄が不要となる。それ故、ＯＣＲ前処理をアクセラレータ１２で最初に実行する場合、図６に示すように、その処理時間は、セットアップ時間「３５０ｍｓ」とハードウェア処理時間（ＯＣＲ前処理時間）「２００ｍｓ」との合計「５５０ｍｓ」となる。実施例１を適用した場合、アクセラレータ１２での処理時間「５５０ｍｓ」は、ソフトウェア処理部１６による処理時間「８２０ｍｓ」よりも短いため、１番目の画像処理要求「ＯＣＲ前処理」は、アクセラレータ１２に割り当てられる。つまり、１番目の画像処理要求の処理デバイスとして、アクセラレータ１２（図中のＡＣＣ）が利用されることになる。
【００４９】
２番目の画像処理要求は「縮小画像生成」である。縮小画像生成をソフトウェア処理部１６によって実行する場合、図６に示すように、その処理時間は「１６０ｍｓ」となる。縮小画像生成をアクセラレータ１２で実行するためには、アクセラレータ１２のパイプライン機構を切り替える必要がある。それ故、縮小画像生成をアクセラレータ１２で実行する場合、図６に示すように、その処理時間は、ＯＣＲ前処理の破棄時間「１２０ｍｓ」と、縮小画像生成のセットアップ時間「２２０ｍｓ」と、ハードウェア処理時間（縮小画像生成時間）「５０ｍｓ」との合計「３９０ｍｓ」となる。実施例１を適用した場合、ソフトウェア処理部１６による処理時間「１６０ｍｓ」は、アクセラレータ１２による処理時間「３９０ｍｓ」よりも短いため、２番目の画像処理要求「縮小画像生成」は、ソフトウェア処理部１６に割り当てられる。つまり、２番目の画像処理要求の処理デバイスとして、ＣＰＵが利用されることになる。
【００５０】
３番目の画像処理要求は「ＯＣＲ前処理」である。ＯＣＲ前処理をソフトウェア処理部１６によって実行する場合、その処理時間は「８２０ｍｓ」となる。全ての画像処理要求をアクセラレータ１２によって実行するためには、アクセラレータ１２のパイプライン機構を切り替える必要がある。それ故、ＯＣＲ前処理をアクセラレータ１２で実行する場合、図６に示すように、その処理時間は、縮小画像生成の破棄時間「８０ｍｓ」と、ＯＣＲ前処理のセットアップ時間「３５０ｍｓ」と、ハードウェア処理時間（ＯＣＲ前処理時間）「２００ｍｓ」と、の合計「６３０ｍｓ」となる。一方、３番目の画像処理要求のＯＣＲ前処理をアクセラレータ１２で実行する場合であっても、実施例１を適用する場合には、アクセラレータ１２のパイプライン機構の切り替えは不要となる。１番目の画像処理要求「ＯＣＲ前処理」がアクセラレータ１２に割り当てられており、そのときに構築されたパイプライン機構が利用されるからである。つまり、実施例１を適用した場合、１番目の画像処理要求に応じて、アクセラレータ１２において「ＯＣＲ前処理」用のパイプライン機構が構築される。２番目の画像処理要求「縮小画像生成」はソフトウェア処理部１６に割り当てられるため、アクセラレータ１２のパイプライン機構は「ＯＣＲ前処理」用のパイプライン機構に維持される。それ故、３番目の画像処理要求「ＯＣＲ前処理」をアクセラレータ１２で実行する場合には、１番目の画像処理要求「ＯＣＲ前処理」を実行するときに構築されたパイプライン機構が利用されることになる。その結果、パイプライン機構の破棄とセットアップが不要となり、アクセラレータ１２による処理時間は、ＯＣＲ前処理に要する時間「２００ｍｓ」となる。アクセラレータ１２による処理時間「２００ｍｓ」は、ソフトウェア処理部１６による処理時間「８２０ｍｓ」よりも短いため、３番目の画像処理要求「ＯＣＲ前処理」は、アクセラレータ１２に割り当てられる。つまり、３番目の画像処理要求の処理デバイスとして、アクセラレータ１２が利用されることになる。
【００５１】
４番目以降の画像処理要求についても、上記と同様の処理により、処理時間が計算される。実施例１が適用される場合には、アクセラレータ１２を利用したときの処理時間と、ソフトウェア処理部１６を利用したときの処理時間と、が計算され、それらの比較結果に応じて、画像処理要求が、アクセラレータ１２又はソフトウェア処理部１６（ＣＰＵ）に割り当てられる。
【００５２】
図７には、１〜８番目の画像処理要求の実行に要する処理時間の合計が示されている。全ての画像処理要求をソフトウェア処理部１６（ＣＰＵ）によって実行する場合、処理時間の合計は「３９２０ｍｓ」となる。全ての画像処理要求をアクセラレータ１２によって実行する場合、処理時間の合計は「４０００ｍｓ」となる。実施例１を適用した場合、処理時間の合計は「１７９０ｍｓ」となる。
【００５３】
以上のように、実施例１によると、全ての画像処理要求をソフトウェア処理部１６で実行する場合や、全ての画像処理要求をアクセラレータ１２で実行する場合と比べて、全体の処理時間が短くなる。
【００５４】
例えば、アクセラレータ１２のパイプライン機構を頻繁に切り替える必要がある場合において、全ての画像処理要求をアクセラレータ１２で実行すると、ソフトウェア処理部１６で実行する場合よりも、全体の処理時間が長くなってしまうことがある。アクセラレータ１２の処理速度がソフトウェア処理部１６の処理速度よりも速い場合であっても、アクセラレータ１２の初期化が必要となり、その分、全体の処理時間が増大するからである。実施例１によると、その初期化に要する時間も考慮されて画像処理要求が割り当てられるので、全ての画像処理要求をアクセラレータ１２で処理する場合と比べて、全体の処理時間が短くなる。
【００５５】
（実施例２）
図８及び図９に示されているフローチャートを参照して、実施例２に係る処理について説明する。実施例２では、画像処理の実行がソフトウェア処理部１６に割り当てられた場合、再割当部２２による再割当処理が実行される。なお、図８において、実施例１と同じ処理には、同じステップの番号が示されている。
【００５６】
まず、実施例１と同様に、ステップＳ０１〜Ｓ１０の処理が実行される。アクセラレータ１２の初期化が必要な場合において、ソフトウェア処理時間Ｔｃｐｕ（ｎ）がハードウェア処理合計時間以上となる場合（Ｓ１０，Ｎｏ）、画像処理要求Ｒｎはアクセラレータ１２に割り当てられ（Ｓ１２）、画像処理内容Ｐｌａｓｔが更新される（Ｓ１３）。アクセラレータ１２の初期化が不要な場合において、ソフトウェア処理時間Ｔｃｐｕ（ｎ）がハードウェア処理時間Ｔａｃｃ（ｎ）以上となる場合（Ｓ１０，Ｎｏ）も、ステップＳ１２，Ｓ１３の処理が実行される。これらの処理は実施例１に係る処理と同じであるため、説明を省略する。
【００５７】
一方、アクセラレータ１２の初期化が必要な場合において、ソフトウェア処理時間Ｔｃｐｕ（ｎ）がハードウェア処理合計時間未満となる場合（Ｓ１０，Ｎｏ）、処理はステップＳ１４に移行する。同様に、アクセラレータ１２の初期化が不要な場合において、ソフトウェア処理時間Ｔｃｐｕ（ｎ）がハードウェア処理時間Ｔａｃｃ（ｎ）未満となる場合（Ｓ１０，Ｎｏ）、処理はステップＳ１４に移行する。ステップＳ１４においては、画像処理要求Ｒｎがソフトウェア処理部１６に割り当てられた上で、未実行処理を対象として再割当部２２による再割当処理が実行される。
【００５８】
図９には、再割当処理の流れが示されている。まず、制御部１４は、未実行の画像処理内容が規定されている処理リスト（例えば処理リスト３０）内における新規の画像処理要求Ｒｎのキュー位置（実行順番）を参照する（Ｓ２０）。画像処理要求Ｒｎのキュー位置が先頭でない場合（Ｓ２１，Ｎｏ）、つまり、未実行の画像処理群の中で画像処理要求Ｒｎの実行順番が先頭ではない場合、再割当部２２は、画像処理要求Ｒｎの実行順番よりも１つ前の実行順番の画像処理内容Ｐｂを取得する（Ｓ２２）。例えば、再割当部２２は、その画像処理内容Ｐｂの画像処理要求データから画像処理内容Ｐｂを取得してもよいし、処理リスト３０から画像処理内容Ｐｂを取得してもよい。
【００５９】
画像処理内容Ｐｂがソフトウェア処理部１６に割り当てられている場合（Ｓ２３，Ｙｅｓ）、つまり、画像処理内容Ｐｂの処理デバイスとしてＣＰＵが利用される場合、処理はステップＳ２４に移行する。そして、画像処理内容Ｐｂと画像処理内容Ｐｎが、同じパイプライン機構によって処理される内容である場合（Ｓ２４，Ｙｅｓ）、つまり、画像処理内容Ｐｂと画像処理内容Ｐｎとが同じ処理内容である場合、再割当部２２は、再割当リストに画像処理内容Ｐｂを登録する（Ｓ２５）。なお、再割当リストのデータは記憶部２４に記憶される。次に、再割当部２２は、処理リスト３０において、画像処理内容Ｐｎの位置（実行順番）を１つ前のキュー位置（実行順番）に仮に移動させる（Ｓ２６）。そして、再割当部２２は、移動されられた画像処理内容Ｐｎの位置（実行順番）を基準にして、ステップＳ２１〜Ｓ２６の処理を繰り返し実行する。
【００６０】
処理リスト３０において、画像処理内容Ｐｎのキュー位置（実行順番）が先頭でない場合（Ｓ２１，Ｙｅｓ）、処理はステップＳ２７に移行する。また、画像処理内容Ｐｂの実行がソフトウェア処理部１６（ＣＰＵ）に割り当てられていない場合（Ｓ２３，Ｎｏ）、つまり、画像処理内容Ｐｂの実行がアクセラレータ１２に割り当てられている場合、処理はステップＳ２７に移行する。また、画像処理内容Ｐｂと画像処理内容Ｐｎが、同じパイプライン機構によって処理される内容ではない場合（Ｓ２４，Ｎｏ）、つまり、画像処理内容Ｐｂと画像処理内容Ｐｎとが異なる処理内容である場合、処理はステップＳ２７に移行する。
【００６１】
再割当リストに画像処理内容が１つも登録されていない場合（Ｓ２７，Ｙｅｓ）、つまり、再割当リストが空の場合、再割当処理は終了する。再割当処理後の処理リスト３０に登録されている画像処理が、登録されている順番に従ってアクセラレータ１２又はソフトウェア処理部１６によって順次実行される。
【００６２】
一方、再割当リストに画像処理内容が登録されている場合（Ｓ２７，Ｎｏ）、再割当部２２は、再割当リストに登録されている全ての画像処理内容のソフトウェア処理時間の合計Ｔｃｐｕを算出する（Ｓ２８）。つまり、再割当部２２は、それら全ての画像処理内容がソフトウェア処理部１６によって実行された場合に要するソフトウェア処理時間の合計Ｔｃｐｕを算出する。
【００６３】
次に、再割当部２２は、処理リスト３０の中からアクセラレータ１２に割り当てられている最後の画像処理内容Ｐｌａｓｔを取得する（Ｓ２８）。
【００６４】
次に、再割当部２２は、再割当リストに登録されている全ての画像処理内容がアクセラレータ１２によって実行された場合に要するハードウェア処理時間Ｔａｃｃを算出する（Ｓ２９）。このとき、アクセラレータ１２のパイプライン機構の初期化（破棄とセットアップ）に要する時間も算出され、その初期化時間もハードウェア処理時間Ｔａｃｃに含まれる。
【００６５】
そして、再割当部２２は、ステップＳ２８において算出されたソフトウェア処理時間の合計Ｔｃｐｕと、ステップＳ２９において算出されたハードウェア処理時間Ｔａｃｃ（初期化時間を含む）と、を比較する（Ｓ３０）。
【００６６】
ソフトウェア処理時間の合計Ｔｃｐｕがハードウェア処理時間Ｔａｃｃ未満となる場合、つまり、アクセラレータ１２よりもソフトウェア処理部１６で処理した方が速い場合（Ｓ３０，Ｙｅｓ）、再割当処理は終了する。この場合、画像処理の実行デバイスは変更されず、処理リスト３０に登録されている画像処理が、登録されている順番に従ってアクセラレータ１２又はソフトウェア処理部１６によって順次実行される。
【００６７】
一方、ソフトウェア処理時間の合計Ｔｃｐｕがハードウェア処理時間Ｔａｃｃ以上となる場合、つまり、アクセラレータ１２よりもソフトウェア処理部１６で処理した方が速いわけではない場合（Ｓ３０，Ｎｏ）、再割当部２２は、処理リスト３０において、再割当リストに登録されている全ての画像処理内容の実行をアクセラレータ１２に割り当てる（Ｓ３１）。つまり、ソフトウェア処理部１６に割り当てられていた画像処理内容の実行が、アクセラレータ１２に再割当されることになる。これにより、再割当リストに登録されている全ての画像処理内容の実行デバイスが、ソフトウェア処理部１６（ＣＰＵ）からアクセラレータ１２に変更される。また、再割当部２２は、画像処理内容Ｐｌａｓｔを画像処理内容Ｐｎに更新する。
【００６８】
制御部１４は、新規の画像処理要求Ｒｎを受け付ける度に、ステップＳ０１〜Ｓ３１の処理を実行する。これにより、１又は複数の画像処理要求が規定された処理リスト３０が作成される。そして、処理リスト３０に登録されている画像処理が、登録されている順番に従って、アクセラレータ１２又はソフトウェア処理部１６によって順次実行される。
【００６９】
次に、図１０〜１４を参照して、実施例２の具体例について説明する。図１０〜図１４には、全ての画像処理要求をソフトウェア処理部１６によって実行した場合に要する処理時間の合計、全ての画像処理要求をアクセラレータ１２によって実行した場合に要する処理時間の合計、実施例１を適用した場合に要する処理時間の合計、及び、実施例２を適用した場合に要する処理時間の合計、が示されている。
【００７０】
図１０には、３番目の画像処理要求が画像処理装置１０に与えられたときの処理リストの一例が示されている。ここでは、１，２番目の画像処理が実行待ちの状態となっているものとする。
【００７１】
１番目の画像処理要求は「ＯＣＲ前処理」である。図６に示すように、ＯＣＲ前処理のソフトウェア処理時間は「８２０ｍｓ」であり、最初にＯＣＲ前処理をアクセラレータ１２で実行する場合の処理時間は、「５５０ｍｓ」（セットアップ時間「３５０ｍｓ」＋ハードウェア処理時間「２００ｍｓ」）である。アクセラレータ１２による処理時間「５５０ｍｓ」が、ソフトウェア処理部１６による処理時間「８２０ｍｓ」よりも短いため、実施例１，２ともに、１番目の画像処理要求「ＯＣＲ前処理」は、アクセラレータ１２に割り当てられる(図１０中のＡＣＣ)。１番目の画像処理要求「ＯＣＲ前処理」がアクセラレータ１２に割り当てられるため、実施例２において、再割当処理は実行されない（図８のＳ１０，Ｎｏ）。
【００７２】
２番目の画像処理要求は「ＯＣＲ前処理」である。ＯＣＲ前処理のソフトウェア処理時間は「８２０ｍｓ」である。アクセラレータ１２のパイプライン機構を初期化する必要がないため、ＯＣＲ前処理をアクセラレータ１２で実行する場合の処理時間は「２００ｍｓ」となる。アクセラレータ１２による処理時間がソフトウェア処理部１６による処理時間よりも短いため、実施例１，２ともに、２番目の画像処理要求「ＯＣＲ前処理」は、アクセラレータ１２に割り当てられる（図１０中のＡＣＣ）。この場合も、実施例２において、再割当処理は実行されない（図８のＳ１０，Ｎｏ）。
【００７３】
３番目の画像処理要求は「縮小画像生成」である。図６に示すように、縮小画像生成のソフトウェア処理時間は「１６０ｍｓ」であり、縮小画像生成をアクセラレータ１２で実行する場合の処理時間は、「３９０ｍｓ」（ＯＣＲ前処理のパイプライン機構の破棄時間「１２０ｍｓ」＋セットアップ時間「２２０ｍｓ」＋ハードウェア処理時間「５０ｍｓ」）である。ソフトウェア処理部１６による処理時間「１６０ｍｓ」が、アクセラレータ１２による処理時間「３９０ｍｓ」よりも短いため、実施例１，２ともに、３番目の画像処理要求「縮小画像生成」は、ソフトウェア処理部１６に割り当てられる（図１０中のＣＰＵ）。この場合、実施例２において、再割当処理が実行される（図８中のＳ１０，Ｙｅｓ、Ｓ１４）。３番目の画像処理内容Ｐｎ「縮小画像生成」の１つ前の画像処理内容Ｐｂ（２番目の画像処理内容）は、アクセラレータ１２に割り当てられているため、図９中のフローチャートにおいて、処理はステップＳ２３からステップＳ２７に移行する（Ｓ２３，Ｎｏ）。この段階では、再割当リストに画像処理要求が登録されていないので（Ｓ２７，Ｙｅｓ）、再割当処理は終了する。
【００７４】
図１１には、４番目の画像処理要求が画像処理装置１０に与えられたときの処理リストの一例が示されている。ここでは、１〜３番目の画像処理が実行待ちの状態になっているものとする。
【００７５】
４番目の画像処理要求は「縮小画像生成」である。図６に示すように、縮小画像生成のソフトウェア処理時間は「１６０ｍｓ」であり、縮小画像生成をアクセラレータ１２で実行する場合の処理時間は、「３９０ｍｓ」（ＯＣＲ前処理のパイプライン機構の破棄時間「１２０ｍｓ」＋セットアップ時間「２２０ｍｓ」＋ハードウェア処理時間「５０ｍｓ」）である。ソフトウェア処理部１６による処理時間がアクセラレータ１２による処理時間よりも短いため、実施例１，２ともに、４番目の画像処理要求「縮小画像生成」は、ソフトウェア処理部１６に割り当てられる（図１０中のＣＰＵ）。この場合、実施例２において、再割当処理が実行される（図８中のＳ１０，Ｙｅｓ、Ｓ１４）。４番目の画像処理内容Ｐｎ「縮小画像生成」の１つ前の画像処理内容Ｐｂ（３番目の画像処理内容）は、ソフトウェア処理部１６に割り当てられており（図９中のＳ２３，Ｙｅｓ）、画像処理内容Ｐｎ，Ｐｂは同じパイプライン機構によって実現されるので（図９中のＳ２４，Ｙｅｓ）、３番目の画像処理内容Ｐｂは、再割当リストに登録される。再割当リストには、４番目の画像処理内容Ｐｎも登録される。２番目の画像処理内容Ｐｂはアクセラレータ１２に割り当てられているため、図９中のフローチャートにおいて、処理はステップＳ２３からステップＳ２７に移行する（Ｓ２３，Ｎｏ）。この段階では、３番目と４番目の画像処理内容が再割当リストに登録されているため（Ｓ２７，Ｎｏ）、３番目と４番目の画像処理内容のソフトウェア処理時間の合計Ｔｃｐｕが算出される（Ｓ２８）。縮小画像生成のソフトウェア処理時間は「１６０ｍｓ」であるため、その合計Ｔｃｐｕは「３２０ｍｓ（１６０ｍｓ×２）」となる。また、３番目と４番目の画像処理内容をアクセラレータ１２によって実行する場合に要する処理時間Ｔａｃｃ（初期化時間を含む時間）が算出される（Ｓ２９）。２番目の画像処理内容が「ＯＣＲ前処理」であり、その「ＯＣＲ前処理」がアクセラレータ１２に割り当てられているため、３番目の画像処理内容「縮小画像生成」をアクセラレータ１２によって実行するためには、アクセラレータ１２の初期化が必要となる。それ故、３番目と４番目の画像処理内容の処理時間Ｔａｃｃ（初期化時間を含む時間）は、ＯＣＲ前処理のパイプライン機構の破棄時間「１２０ｍｓ」と、セットアップ時間「２２０ｍｓ」と、ハードウェア処理時間「１００ｍｓ（５０ｍｓ×２）」と、の合計「４４０ｍｓ」となる。ソフトウェア処理部１６での処理時間の合計Ｔｃｐｕ「３２０ｍｓ」が、アクセラレータ１２での処理時間Ｔａｃｃ「４４０ｍｓ」よりも短いため（Ｓ３０，Ｙｅｓ）、３番目と４番目の画像処理の処理デバイスは、ソフトウェア処理部１６（ＣＰＵ）からアクセラレータ１２に変更されずに、ソフトウェア処理部１６（ＣＰＵ）に維持される。
【００７６】
図１２には、６番目の画像処理要求が画像処理装置１０に与えられたときの処理リストの一例が示されている。ここでは、１〜５番目の画像処理が実行待ちの状態になっているものとする。図１２には、実施例１が適用された後の割当状態であって、実施例２の再割当処理が適用される前の割当状態が示されている。
【００７７】
図１１に示されている４番目の画像処理要求と同様に、５番目と６番目の画像処理要求は「縮小画像生成」である。その縮小画像生成のソフトウェア処理時間は「１６０ｍｓ」であり、縮小画像生成をアクセラレータ１２で実行する場合の処理時間は「３９０ｍｓ」である。そのため、実施例１が適用された場合、５番目と６番目の画像処理内容は、ソフトウェア処理部１６に割り当てられる。図１２には、その割当状態が示されている。
【００７８】
この場合、実施例２において、再割当処理が実行される（図８中のＳ１０，Ｙｅｓ、Ｓ１４）。６番目の画像処理内容Ｐｎ「縮小画像生成」の１つ前の画像処理内容Ｐｂ（５番目の画像処理内容）は、ソフトウェア処理部１６に割り当てられており（図９中のＳ２３，Ｙｅｓ）、画像処理内容Ｐｎ，Ｐｂは同じパイプライン機構によって実現されるので（図９中のＳ２４、Ｙｅｓ）、５番目の画像処理内容Ｐｂは再割当リストに登録される。再割当リストには、６番目の画像処理内容Ｐｎも登録される。２〜４番目の画像処理内容もソフトウェア処理部１６に割り当てられており、同一のパイプライン機構によって実現されるので、２〜４番目の画像処理内容も再割当リストに登録される。上述したように、１番目と２番目の画像処理内容はアクセラレータ１２に割り当てられているため、再割当リストに登録されない。その結果、３〜６番目の画像処理内容が再割当リストに登録されることになる。そのため、３〜６番目の画像処理内容のソフトウェア処理時間の合計Ｔｃｐｕが算出される（Ｓ２８）。縮小画像生成のソフトウェア処理時間は「１６０ｍｓ」であるため、その合計Ｔｃｐｕは「６４０ｍｓ（１６０ｍｓ×４）」となる。また、３〜６番目の画像処理内容をアクセラレータ１２によって実行する場合に要する処理時間Ｔａｃｃ（初期化時間を含む時間）が算出される（Ｓ２９）。２番目の画像処理内容が「ＯＣＲ前処理」であり、その「ＯＣＲ前処理」がアクセラレータ１２に割り当てられているため、３番目の画像処理内容「縮小画像生成」をアクセラレータ１２によって実行するためには、アクセラレータ１２の初期化が必要となる。それ故、３〜６番目の画像処理内容の処理時間Ｔａｃc（初期化時間を含む時間）は、ＯＣＲ前処理のパイプライン機構の破棄時間「１２０ｍｓ」と、セットアップ時間「２２０ｍｓ」と、ハードウェア処理時間「２００ｍｓ（５０ｍｓ×４）」と、の合計「５４０ｍｓ」となる。３番目の画像処理内容を実行するためには初期化時間を含めて「３９０ｍｓ」かかるが、４〜６番目の画像処理内容においては初期化時間が不要となるため、４〜６番目の画像処理内容の実行に要する時間は「５０ｍｓ」で済む。アクセラレータ１２による処理時間Ｔａｃｃ「５４０ｍｓ」が、ソフトウェア処理部１６での処理時間の合計Ｔｃｐｕ「６４０ｍｓ」よりも短いため（Ｓ３０，Ｎｏ）、３〜６番目の画像処理の処理デバイスは、ソフトウェア処理部１６（ＣＰＵ）からアクセラレータ１２に変更される（Ｓ３１）。つまり、３〜６番目の画像処理内容の実行は、アクセラレータ１２に再割当される。
【００７９】
図１３には、再割当後の処理リストの一例が示されている。実施例２の再割当処理が適用されることにより、３〜６番目の画像処理の処理デバイスは、ソフトウェア処理部１６（ＣＰＵ）からアクセラレータ１２（ＡＣＣ）に変更されている。上述したように、３番目の画像処理内容においては初期化が必要となるため、処理時間は初期化時間を含めて「３９０ｍｓ」となるが、４〜６番目の画像処理内容においては初期化が不要となるため、処理時間は「５０ｍｓ」で済む。
【００８０】
図１３には、１〜６番目の画像処理要求の実行に要する処理時間の合計が示されている。全ての画像処理要求をソフトウェア処理部１６（ＣＰＵ）によって実行した場合、処理時間の合計は「２２８０ｍｓ」となる。全ての画像処理要求をアクセラレータ１２によって実行した場合、処理時間の合計は「１２９０ｍｓ」となる。実施例１を適用した場合、処理時間の合計は「１３９０ｍｓ」となる。実施例２を適用した場合、処理時間は「１２９０ｍｓ」となる。
【００８１】
以上のように、実施例２によると、同じ画像処理が連続する場合において、全体の処理時間がより短縮されるように、画像処理の実行が再割当される。
【００８２】
例えば、１０ページ分の画像データを対象として縮小画像生成処理が指定された場合、その処理の要求が１ページ毎の処理要求に分解され、１０回分の処理要求が画像処理装置１０に与えられることがある。この場合、前の処理が完了しない間に、複数の同一処理が画像処理装置１０に登録されることになる。上述したように、６番目の画像処理要求が与えられた段階で、１〜５番目の画像処理内容が未実行となっていることが想定される。実施例２ではこのような場合において、全体の処理時間がより短くなるように、画像処理の実行が再割当される。
【００８３】
なお、上述した例において、２番目の画像処理内容まで実行され、３〜５番目の画像処理内容が未実行の場合であっても、再割当の結果は変わらない。
【００８４】
以降、同じ画像処理（初期化が不要となる処理）が連続するほど、実施例２の効果が大きくなる。図１４には、８番目の画像処理要求が与えられた段階の処理リストの一例が示されている。仮に、７番目の画像処理内容が完了しており、処理リストに登録されている画像処理要求がない場合であっても、実施例２によると実施例１よりも処理時間が短くなる。実施例１では、８番目の画像処理内容の実行に際してアクセラレータ１２の初期化が必要となり、その分、処理時間が増大するため、８番目の画像処理内容はソフトウェア処理部１６に割り当てられる。実施例２では、８番目の画像処理をアクセラレータ１２で実行するためのセットアップは既に完了しているため、初期化は不要である。それ故、８番目の画像処理はアクセラレータ１２に割り当てられ、その分、全体の処理時間が実施例１よりも短くなる。
【符号の説明】
【００８５】
１０  画像処理装置、１２  アクセラレータ、１４  制御部、１６  ソフトウェア処理部、１８  処理時間算出部、２０  割当部、２２  再割当部、２４  記憶部、２６  プログラム、２８  計算用情報、３０  処理リスト。
【図１】
0006477045.tif 000002
【図２】
0006477045.tif 000003
【図３】
0006477045.tif 000004
【図４】
0006477045.tif 000005
【図５】
0006477045.tif 000006
【図６】
0006477045.tif 000007
【図７】
0006477045.tif 000008
【図８】
0006477045.tif 000009
【図９】
0006477045.tif 000010
【図１０】
0006477045.tif 000011
【図１１】
0006477045.tif 000012
【図１２】
0006477045.tif 000013
【図１３】
0006477045.tif 000014
【図１４】
0006477045.tif 000015