(57)【要約】【課題】画像データを複数のプロセッサーにより処理する画像処理装置において、必要な処理内容に応じてプロセッサーを適切に動作させることができるようにする。【解決手段】画像データに対する演算処理をそれぞれが実行する複数のプロセッサー５，３１１と、複数のプロセッサーそれぞれの演算処理速度に関する情報を保持する情報保持部３６と、複数のプロセッサーに対し、画像データのうちそれぞれのプロセッサーが処理すべき部分データを指定して演算処理を実行させる制御部３１とを備え、制御部は、情報に基づき複数のプロセッサーそれぞれに処理させる部分データを決定する画像処理装置である。【選択図】図１
2018073162.tif 000002
【特許請求の範囲】
【請求項１】
画像データに対する演算処理をそれぞれが実行する複数のプロセッサーと、
前記複数のプロセッサーそれぞれの演算処理速度に関する情報を保持する情報保持部と、
前記複数のプロセッサーに対し、前記画像データのうちそれぞれの前記プロセッサーが処理すべき部分データを指定して演算処理を実行させる制御部と
を備え、
前記制御部は、前記情報に基づき、前記複数のプロセッサーそれぞれに処理させる前記部分データを決定する画像処理装置。
【請求項２】
前記制御部は、演算処理速度がより高い前記プロセッサーに、より処理量の多い前記部分データを処理させる請求項１に記載の画像処理装置。
【請求項３】
前記制御部は、複数ページの画像に対応する前記画像データを処理する場合において、前記プロセッサーの各々にページ単位で分割した前記部分データを処理させる請求項１または２に記載の画像処理装置。
【請求項４】
前記制御部は、前記複数ページのうち最初に出力すべきページに対応する前記部分データを、前記プロセッサーのうち最も演算処理速度の高いものに処理させる請求項３に記載の画像処理装置。
【請求項５】
処理済みの画像データを蓄積するバッファーを備え、
前記制御部は、前記バッファーに蓄積されたデータ量が所定値未満であるとき、１つの画像に対応する前記画像データを分割した前記部分データを前記プロセッサーの各々に処理させる請求項１ないし４のいずれかに記載の画像処理装置。
【請求項６】
前記制御部は、前記バッファー内のデータ量が前記所定値を超えるとき、ページ単位で分割した前記部分データを前記プロセッサーの各々に処理させる請求項５に記載の画像処理装置。
【請求項７】
前記情報保持部は、事前に前記プロセッサーの各々が所定の標準画像データを処理した結果に基づく前記情報を保持する請求項１ないし６のいずれかに記載の画像処理装置。
【請求項８】
前記プロセッサーの少なくとも１つは、前記制御部を有するコンピューター装置に対し着脱可能な拡張ユニットに設けられる請求項１ないし７のいずれかに記載の画像処理装置。
【請求項９】
前記制御部は、前記拡張ユニットの装着状況に応じて前記情報保持部が保持する前記情報を書き換える請求項８に記載の画像処理装置。
【請求項１０】
前記複数のプロセッサーにより処理された前記画像データに基づき印刷を行う印刷部を備える請求項１ないし９のいずれかに記載の画像処理装置。
【請求項１１】
複数のプロセッサーにより画像データを処理する画像処理方法において、
前記複数のプロセッサーそれぞれの演算処理速度に関する情報を予め求めておき、
制御部が、前記画像データのうち前記複数のプロセッサー各々に処理させる部分データを前記情報に基づき決定し、
前記制御部が、前記複数のプロセッサーそれぞれに対し、当該プロセッサーに対応する前記部分データを送信し、
前記複数のプロセッサーの各々が、受信した前記部分データに基づく演算処理を実行する、画像処理方法。
【請求項１２】
画像データを処理するプロセッサーを複数備えたコンピューター装置の制御部に、
前記複数のプロセッサーそれぞれの演算処理速度に関する情報を求める工程と、
前記画像データのうち前記複数のプロセッサー各々に処理させる部分データを前記情報に基づき決定する工程と、
前記複数のプロセッサーそれぞれに対し、当該プロセッサーに対応する前記部分データを送信する工程と
を実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像データを複数のプロセッサーにより処理する画像処理装置および画像処理方法に関するものである。
【背景技術】
【０００２】
例えば適宜の画像編集アプリケーションで作成された画像データを印刷装置で処理可能なデータに変換する場合のように、画像を表す画像データに何らかのデータ処理を施して新たな画像データを作成することが必要な場合がある。このような場合、画像を構成する各画素に対して同一の処理が適用されることが多い。個々の画素を順番に処理したのでは膨大な演算量の繰り返し処理になるため、このような処理を効率よく行うための専用プロセッサーが用いられることがある。
【０００３】
例えばＧＰＵ（Graphics Processing Unit）と呼ばれるプロセッサーでは、演算処理を実行する演算コアが多数設けられてそれらが並列的に動作することで、大量のデータ処理を短時間で行うことが可能となっている。このようなＧＰＵに上記した画像処理を担わせるように構成された画像処理装置が既に実用化されている（例えば、特許文献１参照）。
【０００４】
画像処理装置の処理能力をさらに高めるために、複数のＧＰＵを搭載したものも提案されている。１つのコンピューター装置に複数のＧＰＵが搭載される場合、それらの性能が互いに同一であるとは限らない。例えば、現在の一般的な構成のパーソナルコンピューター装置においては、装置本体には比較的小規模のＧＰＵが予め組み込まれている。そして、必要に応じて、ＧＰＵを搭載する例えばカード型のモジュールを装置の拡張スロットに装着することで演算処理能力をさらに高めることができる。２以上のモジュールが装着されることもあり得る。この場合、複数のＧＰＵが同じものとならないことがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−０９５８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のプロセッサーが全て同一性能であれば、各プロセッサーを特に区別することなく使用することが可能である。一方、演算能力に差異がある場合、どのプロセッサーにどれだけの画像データを処理させるかによって処理に要する時間が異なってくる。しかしながら、このような場合に各プロセッサーをどのように動作させるかの具体的な手法については、これまで確立されるに至っていない。
【０００７】
この発明にかかるいくつかの態様は、上述の課題の少なくとも一部を解決するための構成を有しており、画像データを複数のプロセッサーにより処理する画像処理装置および画像処理方法において、必要な処理内容に応じてプロセッサーを適切に動作させることができるようにするものである。
【課題を解決するための手段】
【０００８】
本発明の一の態様は、画像データに対する演算処理をそれぞれが実行する複数のプロセッサーと、前記複数のプロセッサーそれぞれの演算処理速度に関する情報を保持する情報保持部と、前記複数のプロセッサーに対し、前記画像データのうちそれぞれの前記プロセッサーが処理すべき部分データを指定して演算処理を実行させる制御部とを備え、前記制御部は、前記情報に基づき、前記複数のプロセッサーそれぞれに処理させる前記部分データを決定する画像処理装置である。
【０００９】
また、本発明の他の態様は、複数のプロセッサーにより画像データを処理する画像処理方法であって、前記複数のプロセッサーそれぞれの演算処理速度に関する情報を予め求めておき、制御部が、前記画像データのうち前記複数のプロセッサー各々に処理させる部分データを前記情報に基づき決定し、前記制御部が、前記複数のプロセッサーそれぞれに対し、当該プロセッサーに対応する前記部分データを送信し、前記複数のプロセッサーの各々が、受信した前記部分データに基づく演算処理を実行する。
【００１０】
このような構成では、予め複数のプロセッサーそれぞれの演算処理速度が定められている。そして、画像データのうち各プロセッサーが処理すべき部分データは、演算処理速度を表す情報に基づいて決定される。このため、各プロセッサーへの画像データの配分を、それぞれの処理能力に応じて最適化することが可能である。その結果、複数のプロセッサーを必要な処理に応じて適切に動作させることができる。
【００１１】
この発明において、制御部は、例えば演算処理速度がより高いプロセッサーにより処理量の多い部分データを処理させるように構成されてもよい。このように、処理能力の高いプロセッサーにより多くの画像データを処理させることで、例えば処理速度の遅いプロセッサーによる処理が律速となって全体の処理時間が長くなることを回避し、複数のプロセッサーを全体として効率よく利用することが可能になる。
【００１２】
また、制御部は、例えば複数ページの画像に対応する画像データを処理する場合において、プロセッサーの各々にページ単位で分割した部分データを処理させるように構成されてもよい。特にプロセッサーが多数の演算器により画像データを並列処理するものである場合、まとまった量の画像データを一括してプロセッサーに取得させ処理させるのが演算資源の効率的利用という点で有利である。ページ単位で画像を分割することで、このようなプロセッサーの特性に応じたデータ分割を行うことが可能になる。
【００１３】
この場合において、制御部は、例えば複数ページのうち最初に出力すべきページに対応する部分データを、プロセッサーのうち最も演算処理速度の高いものに処理させるように構成されてもよい。このような構成は、最初の１ページに対応する画像データを最も早く生成することができるので、最初の出力を早期に得たい場合に好適である。
【００１４】
また例えば、処理済みの画像データを蓄積するバッファーを備える構成では、制御部は、バッファーに蓄積されたデータ量が所定値未満であるとき、１つの画像に対応する画像データを分割した部分データをプロセッサーの各々に処理させるように構成されてもよい。このような構成では、１つの画像が複数のプロセッサーの演算資源を用いて処理されるので、バッファーに蓄積すべき処理済みの画像データを早期に生成することができる。
【００１５】
この場合、制御部は、例えばバッファー内のデータ量が所定値を超えるとき、ページ単位で分割した部分データをプロセッサーの各々に処理させるように構成されてもよい。バッファー内にある程度の処理済みの画像データが蓄積されている場合には、直ちに次の画像データを生成することより全体の処理を効率よく行うことが優先されてもよい。このような場合には画像データをページ単位で分割することで、演算資源を効率的に利用して画像データ全体の処理を効率よく行うことが可能になる。
【００１６】
また例えば、情報保持部は、事前にプロセッサーの各々が所定の標準画像データを処理した結果に基づく情報を保持するように構成されてもよい。複数のプロセッサーが画像処理装置に実装された状態で互いに同じ標準画像データを処理した結果により各プロセッサーの演算処理速度が表されることで、プロセッサー間の相対的な演算処理速度の差異に応じた画像データの分割を行うことが可能になる。
【００１７】
また例えば、プロセッサーの少なくとも１つは、制御部を有するコンピューター装置に対し着脱可能な拡張ユニットに設けられてもよい。拡張ユニットに設けられるプロセッサーの種類は様々であり、１つの画像処理装置に複数種のプロセッサーが実装されることもあり得る。このような場合、当然にプロセッサー間の演算処理速度に違いが生じるため、上記のように演算処理速度に応じた画像データの分割が特に有効に機能することになる。
【００１８】
この場合、制御部は、拡張ユニットの装着状況に応じて情報保持部が保持する情報を書き換え可能に構成されてもよい。こうすることで、画像処理装置に実装されるプロセッサーの組み合わせが変化した場合でも、それらの演算処理速度に応じた態様での画像データの分割が可能になる。
【００１９】
また例えば、この画像処理装置は、複数のプロセッサーにより処理された画像データに基づき印刷を行う印刷部を備えるものであってもよい。このような構成によれば、印刷に供される画像データが複数のプロセッサーにより効率よく出力されるので、短いファーストプリントが得られる。また連続印刷時にデータ処理に起因する印刷の中断を回避することができる。
【００２０】
また、この発明のさらに別の態様は、画像データを処理するプロセッサーを複数備えたコンピューター装置の制御部に、前記複数のプロセッサーそれぞれの演算処理速度に関する情報を求める工程と、前記画像データのうち前記複数のプロセッサー各々に処理させる部分データを前記情報に基づき決定する工程と、前記複数のプロセッサーそれぞれに対し、当該プロセッサーに対応する前記部分データを送信する工程とを実行させる制御プログラムである。
【００２１】
画像データを処理するプロセッサーが予め複数設けられている、あるいは拡張ユニット等の形態でプロセッサーが追加されることで複数のプロセッサーを有することとなったコンピューター装置の制御部に上記制御プログラムを実行させることにより、当該コンピューター装置に本発明を実施させることが可能である。すなわち、各プロセッサーへの画像データの配分を、それぞれの処理能力に応じて最適化し、複数のプロセッサーを必要な処理に応じて適切に動作させることができる。
【００２２】
なお、上述した本発明の各態様の有する複数の構成要素はすべてが必須のものではなく、上述の課題の一部または全部を解決するため、あるいは、本明細書に記載された効果の一部または全部を達成するために、適宜、複数の構成要素の一部の構成要素について、その変更、削除、新たな他の構成要素との差し替え、限定内容の一部削除を行うことが可能である。また、上述の課題の一部または全部を解決するため、あるいは、本明細書に記載された効果の一部または全部を達成するために、上述した本発明の一形態に含まれる技術的特徴の一部または全部を上述した本発明の他の形態に含まれる技術的特徴の一部または全部と組み合わせて、本発明の独立した一形態とすることも可能である。
【図面の簡単な説明】
【００２３】
【図１】本発明を適用可能な印刷処理システムの構成例を示すブロック図。
【図２】画像処理ＰＣおよびＧＰＵカードの主要部を示す図。
【図３】この印刷処理システムにおける画像データの流れを模式的に示す図。
【図４】ＧＰＵの演算処理能力を評価するための処理を示すフローチャート。
【図５】この印刷処理システムにおける画像処理の概要を示すフローチャート。
【図６】画像データの分割の例を示す第１の図。
【図７】画像データの分割の例を示す第２の図。
【発明を実施するための形態】
【００２４】
図１は本発明を適用可能な印刷処理システムの構成例を示すブロック図である。印刷処理システム１は、ユーザー用パーソナルコンピューター（以下「ユーザーＰＣ」と略称する）２、画像処理用パーソナルコンピューター（以下「画像処理ＰＣ」と略称する）３およびプリンター４を含み、それらが互いに通信可能に接続されている。この印刷処理システム１は、ユーザーがプリンター４を作動させて所望の画像を印刷させるためのシステムである。
【００２５】
具体的には、印刷を希望するユーザーは、ユーザーＰＣ２により実行される適宜の画像編集アプリケーションを用いて、印刷したい画像を表す原画像データを作成する。原画像データは画像処理ＰＣ３に送られる。画像処理ＰＣ３に実装された画像処理アプリケーションがデータ処理を実行することで、原画像データが、プリンター４が利用可能な印刷データに変換される。画像処理ＰＣ３からプリンター４へ印刷データが送信され、プリンター４が印刷データに対応して印刷ジョブを実行することで、原画像データに対応する画像が印刷される。
【００２６】
ユーザーＰＣ２は一般的なパーソナルコンピューターやワークステーションと同等のハードウェア構成を有するコンピューター装置である。画像処理ＰＣ３も同様のハードウェア構成を有するものである。具体的構成としては、ＣＰＵ（Central Processing Unit）３１、本体メモリー３３およびインターフェース（ＩＦ）３５などが設けられる。ＣＰＵ３１は、所定の制御プログラムを実行することで、画像処理ＰＣ３全体の動作を司る。インターフェース３５は、外部装置との通信を行い、例えばユーザーＰＣ２からの原画像データの受信や、プリンター４への印刷データの送信を担う。ＣＰＵ３１は、当該ＣＰＵ３１が実行する処理のうちの画像処理を担うＧＰＵ（Graphics Processing Unit）３１１をパッケージ内にまたはチップセットとして備えるものであってもよい。
【００２７】
また、本体メモリー３３は、ＣＰＵ３１が各種プログラムを実行することにより生成されるデータを記憶保存する。本体メモリー３３は一般的なパーソナルコンピューターにメインメモリーとして搭載されるものと同等のものであるが、後述するＧＰＵカード５上のメモリーとの区別のために、ここでは特に「本体メモリー」と称している。後述するように、本体メモリー３３の記憶領域のうち一部は、ユーザーＰＣ２から与えられ最終的にプリンター４に送られる画像データを一時的に蓄積保存するバッファー３３１（図２）として使用される。バッファーとして機能する専用ハードウェアが別途設けられてもよい。
【００２８】
また、画像処理ＰＣ３は、ＣＰＵ３１が実行すべき制御プログラムやその実行に必要な処理パラメーターなどを記憶するストレージ３６を備えている。ストレージ３６は不揮発記憶装置であり、例えばハードディスクドライブ（ＨＤＤ）やソリッドステートドライブ（ＳＳＤ）などで構成することができる。ストレージ３６は、本体メモリー３３と比較するとＣＰＵ３１からのアクセス速度が遅いが大容量であり、大量のデータを長期的に記憶保存しておくことができる。
【００２９】
画像処理ＰＣ３に設けられた拡張スロット３９には、少なくとも１つの（この例では２つの）ＧＰＵカード５が装着される。ＧＰＵカード５は、次に説明するように画像データ処理に好適なハードウェア構成を有するものであり、ＣＰＵ３１からの制御指令に応じて原画像データから印刷データを作成する際の各画素についての演算を並列処理することで、印刷データを短時間で作成する機能を担うものである。
【００３０】
図２は画像処理ＰＣおよびＧＰＵカードの主要部を示す図である。ＧＰＵカード５は、画像処理ＰＣ３の拡張スロット３９に装着可能なコネクター５９を有し、画像処理ＰＣ３に装着されることでその機能を拡張するカード型のモジュールである。なお、次に説明するＧＰＵカード５内の各構成は、このように画像処理ＰＣ３に対し着脱可能なモジュールとして実装されるが、画像処理ＰＣ３に予め内蔵されたものであってもよい。また、ＧＰＵ５０を含むモジュールの形態は上記のようなカード型のものに限定されず任意である。
【００３１】
ＧＰＵカード５は、画像処理を並列処理によって行うハードウェア構成を有するプロセッサーであるＧＰＵ５０と、ＧＰＵ５０が処理する画像データを記憶するためのメモリー５５とを備えている。メモリー５５については、画像処理ＰＣ３に設けられた本体メモリー３３との区別のために、以下では「カード上メモリー」と称することとする。１つのＧＰＵカード５に複数のＧＰＵ５０が設けられてもよい。ＧＰＵ５０とカード上メモリー５５とは直結されており、ＧＰＵ５０からカード上メモリー５５への直接アクセスが可能である。
【００３２】
ＧＰＵ５０は、コネクター５９を介してＣＰＵ３１と通信可能に接続されるコントローラー５１と、コントローラー５１からの指示により演算処理を実行する演算部５３とを備えている。コントローラー５１は、ＣＰＵ３１から受け取った制御プログラムや各種の処理パラメーターに基づき、ＧＰＵカード５内の各部の動作を制御する。演算部５３は、コントローラー５１から与えられる共通の演算アルゴリズムと、カード上メモリー５５から読み出された異なるデータセットとに基づく演算処理を並列的に実行する多数の演算コア（図示省略）を備えている。演算部５３による演算結果はカード上メモリー５５に書き出される。
【００３３】
製品化されているＧＰＵには、１つの演算部５３に例えば数百ないし数千の演算コアを含むものがある。各演算コアは、比較的単純な演算を高速で実行するのに対応したハードウェア構成を有する。このように、ＧＰＵカード５は、同一処理の繰り返しであるが演算量が膨大となるような演算を、多数の演算コアによる並列処理で高速に実行するのに適した構成を有している。このような構成は、同一の演算を全ての画素について実行することが求められる画像データの処理に特に好適である。
【００３４】
ＣＰＵ３１に内蔵されたＧＰＵ３１１も同様のハードウェア構成および処理機能を有するものである。一般的には、専用チップとして構成されたＧＰＵ５０に比べるとＧＰＵ３１１のハードウェアは小規模である場合が多く、また演算処理能力も限定的であることが多い。このため、この実施形態においてＧＰＵ３１１は、例えば画像処理ＰＣ３の図示しない表示部に表示させる画像を処理する目的に主に使用されることが多い。ただし、必要に応じて、後述する画像データ処理の一部を担ってもよい。
【００３５】
図３はこの印刷処理システムにおける画像データの流れを模式的に示す図である。ユーザーＰＣ２から印刷の対象となる画像を表す原画像データが与えられると、画像処理ＰＣ３のＣＰＵ３１は、原画像データを本体メモリー３３内に予め設けられたバッファー領域３３０のうちの未処理データ領域３３１に書き込む。与えられた原画像データは、印刷データに変換処理される前のデータであり、以下では「未処理データ」と称される。図３において、実線矢印は未処理データの流れを表している。
【００３６】
未処理データ領域に蓄積された未処理データは、適宜のタイミングでＧＰＵカード５のカード上メモリー５５に転送される。ＧＰＵカード５上のＧＰＵ５０は、当該ＧＰＵカード５に設けられたカード上メモリー５５に保存された未処理データに対し所定の画像処理を実行する。より具体的には、ＧＰＵ５０の演算部５３は、ＣＰＵ３１からコントローラー５１を介して指定されるアルゴリズムとカード上メモリー５５に保存された未処理データとに基づく演算処理を実行する。演算処理によって生成される画像データを以下では「処理済みデータ」と称する。この場合の処理済みデータは、プリンター４による印刷処理に供される画像データ、すなわち印刷データである。
【００３７】
演算部５３に設けられた多数の演算コアがそれぞれ演算処理により生成した処理済みデータはカード上メモリー５５に一時的に保存される。カード上メモリー５５に保存された全ての未処理データに対する処理が終了すると、本体メモリー３３に設定されたバッファー領域３３０のうちの処理済みデータ領域３３２に転送される。図３において、破線矢印は処理済みデータの流れを表す。ＧＰＵ５０による処理が終わったとき、ＧＰＵ５０がカード上メモリー５５から本体メモリー３３に処理済みデータを書き込んでもよい。また、ＧＰＵ５０が処理を終えたことを画像処理ＰＣ３のＣＰＵ３１に通知し、通知を受けた画像処理ＰＣ３のＣＰＵ３１がカード上メモリー５５から本体メモリー３３に処理済みデータを書き込んでもよい。
【００３８】
バッファー上の未処理データは、複数のＧＰＵ５０により処理される。具体的には、バッファー３３０の未処理データ領域３３１に蓄積された未処理データが複数ブロックに分割され、ブロックごとの未処理データがそれぞれ異なるＧＰＵカード５に転送されてＧＰＵ５０により処理される。図示を省略しているが、ＣＰＵ３１に内蔵されたＧＰＵ３１１が画像データ処理に供される場合も同様である。すなわち、バッファー３３０の未処理データ領域３３１に蓄積された画像データの一部がＧＰＵ３１１に送られて処理され、処理済みの画像データはバッファー３３０の処理済みデータ領域３３２に転送される。
【００３９】
各ＧＰＵで生成された処理済みデータはバッファー３３０の処理済みデータ領域３３２に蓄積される。プリンター４は、印刷準備が整うとバッファー３３０の処理済みデータ領域３３２に蓄積された処理済みデータを取得し、これを印刷データとして印刷ジョブを実行する。
【００４０】
このように、この印刷処理システム１においては、バッファー３３０に蓄積されている未処理データが、複数のＧＰＵに対応する複数ブロックの部分データに分割され、部分データがそれぞれ異なるＧＰＵに送られて各ＧＰＵ間で並列的に処理される。各ＧＰＵがそれぞれ部分データを処理することで生成された処理済みデータは、バッファー３３０において統合される。
【００４１】
バッファー３３０の未処理データ領域３３１に蓄積された未処理データは、ＧＰＵカード５へ転送されるとバッファー３３０から消去される。したがって、未処理データ領域３３１には、印刷用の原画像データとしてユーザーＰＣ２から与えられたデータのうちＧＰＵ５０による処理が済んでいないもののみが蓄積される。また、バッファー３３０の処理済みデータ領域３３２に蓄積された処理済みデータは、プリンター４へ転送されるとバッファー３３０から消去される。したがって、処理済みデータ領域３３２には、ＧＰＵ５０により処理された処理済みデータのうちプリンター４にまだ転送されてないもののみが蓄積される。
【００４２】
上記のように複数のＧＰＵを有する画像処理ＰＣ３においては、各ＧＰＵの演算処理能力は必ずしも同じではない。例えば、前記したように、画像処理専用のモジュールとして構成されるＧＰＵカード５に搭載されているＧＰＵ５０に比べると、画像処理ＰＣ３に内蔵されているＧＰＵ３１１の演算能力は限定的である。また、複数のＧＰＵカード５の間においても、搭載されるＧＰＵ５０の種類やクロック速度等の違いに起因して演算処理能力が異なる場合がある。
【００４３】
各ＧＰＵの演算処理能力が互いに同一であれば、処理すべき画像データをＧＰＵの数に応じて等分し、各ＧＰＵに割り当てればよい。一方、ＧＰＵの演算処理能力が異なる場合には、画像データの割り当て量を同一とせず、それらの能力に応じてデータ処理の割り当てが決められることが好ましい。例えば１つの画像に対応する画像データを複数のＧＰＵで等分に分割して処理する場合を考えると、演算処理能力の違いに起因して処理時間の最も遅いＧＰＵが全体の処理速度を律速することになるからである。
【００４４】
以下に説明するように、この印刷処理システム１では、画像処理ＰＣ３に備えられた複数のＧＰＵ５０，３１１について、それぞれの演算処理能力が予め評価されている。そして、画像データを処理する際には、各ＧＰＵ５０，３１１の演算処理能力に応じて、画像データの割り当てが決定される。
【００４５】
図４はＧＰＵの演算処理能力を評価するための処理を示すフローチャートである。この処理は、ＣＰＵ３１が予めストレージ３６に記憶された所定の制御プログラムを実行することにより実現される。この処理は、例えば画像処理ＰＣ３にＧＰＵカード５が新たに装着されたとき、ＧＰＵカード５が交換されたときなど、評価の済んでいないＧＰＵがあることがＣＰＵ３１により認識されたときに実行される。これにより、ストレージ３６に記憶されている情報は随時更新される。
【００４６】
最初に、評価の済んでいないＧＰＵの１つが選択される（ステップＳ１０１）。選択されたＧＰＵに対しＣＰＵ３１から起動指示が与えられ（ステップＳ１０２）、当該ＧＰＵに対し、予め用意された評価用画像データが送信される（ステップＳ１０３）。評価用画像データは、適宜の画像内容を有する画像に対応する画像データである。テキスト、線画、写真画像など、各種の画像内容を含むものであることが好ましい。また、互いに異なる画像内容を有する画像に対応する複数種の画像データが評価用画像データとして用いられてもよい。
【００４７】
ＣＰＵ３１は、評価用画像データが与えられたＧＰＵから処理終了の通知を受け取るまでの所要時間を計測する（ステップＳ１０４、Ｓ１０５）。その結果から、当該ＧＰＵの演算処理能力、具体的には評価用画像データの処理速度が求められる。求められた各ＧＰＵの処理速度に関する情報はストレージ３６に記憶される（ステップＳ１０６）。他に未評価のＧＰＵがある場合にはステップＳ１０１に戻って（ステップＳ１０７）、そのＧＰＵについて上記と同様の処理が行われる。全てのＧＰＵについて評価が済んでいれば処理は終了する。同一の評価用画像データを処理させることにより、画像処理ＰＣ３に実装された状態での各ＧＰＵの処理速度を相対的に評価することが可能である。
【００４８】
このように、画像処理ＰＣ３に備えられたＧＰＵ各々の処理速度が予め求められ、ストレージ３６に記憶されている。実際の画像データ処理においては、次に説明するように、こうして求められた各ＧＰＵの処理速度に応じて、処理すべき画像データの分割が行われる。その目的とするところは、与えられた画像データに対応する印刷物が全て出力されるまでの時間をできるだけ短くするように、ＧＰＵの演算処理を最適化することである。以下の説明においては、２つのＧＰＵカード５にそれぞれ設けられた２つのＧＰＵ５０、画像処理ＰＣ３に予め設けられたＧＰＵ３１１の３つが画像データ処理に用いられるものとする。また、図４に示す処理により各ＧＰＵの処理速度が予め求められており、各ＧＰＵを処理速度の高い順に「ＧＰＵ−Ａ」、「ＧＰＵ−Ｂ」、「ＧＰＵ−Ｃ」と称することとする。
【００４９】
図５はこの印刷処理システムにおける画像処理の概要を示すフローチャートである。なお、画像データに対する演算処理は複数のＧＰＵにより並列的に実行される。図５に示す処理は、各ＧＰＵに実行させる演算処理を最適化するためにＣＰＵ３１が実行する処理である。プリンター４が印刷処理を実行可能な状態にあり、ユーザーＰＣ２から画像データを処理すべき旨の制御指示が与えられると、ＣＰＵ３１は、画像処理ＰＣ３に実装されている各ＧＰＵの処理速度に関する情報をストレージ３６から取得する（ステップＳ２０１）。また、バッファー３３０のうちの処理済みデータ領域３３２に残留している処理済みデータの量を取得する（ステップＳ２０２）。
【００５０】
処理済みデータ領域３３２内のデータ量が所定の閾値と比較される（ステップＳ２０３）。バッファー３３０に残る処理済みデータは、まだプリンター４による印刷に供されていない印刷データである。したがって、バッファー３３０内にある程度の処理済みデータが蓄積された状態では、新たな画像データ処理により印刷データが作成されたとしても直ちに印刷処理に供されるわけではない。言い換えれば、プリンター４が当面処理すべき印刷データが既にバッファー３３０にあるため、画像処理ＰＣ３では新たな印刷データが必要とされるまでに時間的余裕がある。
【００５１】
そのため、処理済みデータ領域３３２内のデータ量が閾値以上であれば（ステップＳ２０３においてＹＥＳ）、画像データはページ単位の部分データに分割される（ステップＳ２０４）。すなわち、画像１ページ分の画像データは１つのＧＰＵにより処理されるようにする。ＧＰＵでの演算処理においては、１つのＧＰＵが一括して取得し処理する画像データを多くする方が処理効率がよいからである。
【００５２】
一方、処理済みデータ領域３３２内のデータ量が閾値より小さければ（ステップＳ２０３においてＮＯ）、画像データはページ内で分割される（ステップＳ２０５）。すなわち、１ページの画像に相当する画像データが複数ブロックの部分データに分割され、各ブロックの部分データがそれぞれ異なるＧＰＵにより処理される。印刷すべき画像が複数ページある場合には、特にそのうち最初に印刷されるべきページに対し、ページ内での画像分割が行われる。
【００５３】
画像１ページ分の画像データを１つのＧＰＵに処理させる態様は、ＧＰＵにまとまった画像データを与えて演算資源を有効に活用することができるため、多くの画像データを継続的に処理する場合に適している。その一方、最初の１ページ分の印刷データを生成するまでに要する時間は、そのページの画像データを処理するＧＰＵの処理速度によって決まる。これに対して、１ページ分の画像データを分割して複数ＧＰＵで並列処理する態様では、当該ページの処理により多くの演算資源が投入される。そのため、１つのＧＰＵで処理する場合よりも早く当該ページの印刷データを生成することができる。
【００５４】
このことから、バッファー３３０内の処理済みデータ（すなわち印刷データ）の量が閾値より少ない場合には、少なくとも最初の１ページ分については複数のＧＰＵにより並列処理されるようにする。こうすることで、当該ページに対応する印刷データを早期にバッファー３３０内に書き込むことができる。例えばバッファー３３０内に処理済みデータが全くない状態から処理が始まった場合を考えると、最初の１ページ分を複数のＧＰＵで処理させることにより、ファーストプリントタイムを短くすることができる。
【００５５】
また、バッファー３３０内にいくらかの印刷データがあった場合でも、それらのデータがプリンター４により使用されてから新たな印刷データが供給されるまでの時間を最小限に抑えることができる。これにより、プリンター４が印刷データの生成を待つ待機状態となる時間を短縮することができる。
【００５６】
一方、バッファー３３０内に既に十分な量の印刷データがある場合には、直ちに印刷データを供給することよりも、残っている未処理データをできるだけ早く処理してバッファー３３０の未処理データ領域３３１を空けることが重要である。こうすることで、バッファー３３０が新たな未処理データを受け入れることが可能となるからである。このために、バッファー３３０内の処理済みデータ量が閾値以上であれば、より処理効率のよいページ単位での演算処理が選択される。各ＧＰＵでの処理効率が向上し、また複数ページ分の画像データが複数のＧＰＵにより並列処理されることで、バッファー３３０内の未処理データを効率よく減らして処理済みデータを生成することができる。
【００５７】
上記のようにして分割された画像データ（部分データ）はそれぞれ対応するＧＰＵに送信される（ステップＳ２０６）。各ＧＰＵは与えられた部分データを処理し、処理済みデータをバッファー３３０の処理済みデータ領域３３２に書き込む。ＣＰＵ３１は、バッファー３３０の未処理データ領域３３１に未処理データが残っていればステップＳ２０２に戻って上記の処理を繰り返す（ステップＳ２０７）。
【００５８】
このように、この印刷処理システム１では、バッファー３３０の処理済みデータ領域３３２に蓄積された処理済みデータの量に応じて、ページ単位での画像データ分割とページ内での画像データ分割とが選択的に実行される。そして、分割された部分データがそれぞれ異なるＧＰＵで並列処理される。こうすることで、プリンター４に対し早期に印刷データを供給してファーストプリントタイムを短くすることができる。また、引き続き印刷が行われる場合においても複数のＧＰＵが印刷データを順次生成してプリンター４に供給することで、データ処理が律速となって印刷処理の中断を招くことが回避される。
【００５９】
図６および図７は画像データの分割の例を示す図である。図６はページ単位での分割の例を示し、図７は１ページ分の画像データが分割される場合の例を示す。ページ単位で画像データを分割する場合、処理速度の高いＧＰＵほどより多くの画像データが割り当てられる。この場合、各ＧＰＵに割り当てられる画像のページ数が処理速度に比例したものとされることが好ましい。
【００６０】
例えば、３つのＧＰＵすなわちＧＰＵ−Ａ、ＧＰＵ−Ｂ、ＧＰＵ−Ｃの処理速度の比が３：２：１であれば、図６に示すように、最も高速のＧＰＵ−Ａに３ページ分の画像Ｉｍ１〜Ｉｍ３、次のＧＰＵ−Ｂに２ページ分の画像Ｉｍ４，Ｉｍ５、最も遅いＧＰＵ−Ｃに１ページ分の画像Ｉｍ６が割り当てられる。こうすることで、各ＧＰＵが与えられた部分データの処理を完了するタイミングがほぼ揃うこととなる。なお、実際にはこのように速度比が整数比となるわけではないので、適宜に丸めた速度比に基づき割り当てが決められればよい。
【００６１】
また、図６に示すように、複数ページの印刷において印刷順序の最も高いものが、最も処理速度の高いＧＰＵ−Ａによって処理されるようにする。このようにすると、最初の１ページ分について処理が終了し印刷開始が可能となるまでの時間が最も短くなるので、ファーストプリントタイムの短縮につながる。なお、少なくとも最初の１ページについては最も処理速度の高いＧＰＵにより処理されることが好ましいが、第２ページ以降の画像データについては必ずしも図６に示すものに限定されない。例えばＧＰＵ−ＡとＧＰＵ−Ｂとの速度比が上記ほど大きくない場合には、ＧＰＵ−Ａで作成される２ページ目の印刷データよりもＧＰＵ−Ｂで作成される１ページ目の印刷データの方が早く出力される場合がある。このような場合には、印刷順序における第２ページの画像データがＧＰＵ−Ｂにより処理されるようにしてもよい。
【００６２】
さらに未処理の画像Ｉｍ７，…に対応する画像データがある場合には、同様にして、最も処理速度の高いＧＰＵ−Ａから順次それらの処理が割り当てられる。これにより、連続印刷時にも遅滞なく印刷データをプリンター４へ供給することが可能になる。
【００６３】
一方、１ページ分の画像データが分割される場合には、図７に示すように、当該ページの画像Ｉｍのうち各ＧＰＵに割り当てられる面積比が、各ＧＰＵの処理速度比に対応したものとされる。こうすることで、各ＧＰＵが与えられた部分データの処理を完了するタイミングがほぼ揃うこととなる。
【００６４】
この場合にも、画像Ｉｍの印刷方向における先頭部分が、最も処理速度の高いＧＰＵ−Ａに割り当てられることが好ましい。プリンター４が例えばインクジェットプリンターのようにバンド単位で印刷を行うものである場合、ページプリンターとは異なり、１ページ分の画像データが揃っていなくても印刷を開始することが可能である。印刷方向における先頭部分の画像データを最も高速のＧＰＵで処理させるようにすれば、このようなプリンターでは最も早いタイミングで印刷を開始することが可能となる。
【００６５】
以上説明したように、上記実施形態においては、印刷処理システム１、特に画像処理ＰＣ３が本発明の「画像処理装置」として機能している。また、ＧＰＵ５０、３１１が本発明の「プロセッサー」として機能し、ＣＰＵ３１が本発明の「制御部」として機能している。また、メモリー３３の一部領域として設けられるバッファー３３０のうち、特に処理済みデータ領域３３２が本発明の「バッファー」として機能している。また、ストレージ３６が本発明の「情報保持部」として機能している。
【００６６】
また、上記実施形態においては、ＧＰＵカード５が本発明の「拡張ユニット」に相当している。また、プリンター４が、本発明の「印刷部」として機能している。また、図４の処理で用いられる評価用画像データが、本発明の「標準画像データ」に相当している。
【００６７】
なお、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて上述したものに対して種々の変更を加えることが可能である。例えば、上記実施形態における画像処理ＰＣ３は、予め１つのＧＰＵ３１１が内蔵され、さらに２枚のＧＰＵカード５が増設されたものである。しかしながら、複数のＧＰＵが実装された状態で本発明にいう「画像処理装置」として機能する装置であれば、各ＧＰＵがどのような態様で装置に実装されるかによらず本発明を好適に適用可能である。
【００６８】
また、上記実施形態では、画像処理ＰＣ３に実装されたＧＰＵの全てが画像データ処理に使用されている。しかしながら、常に全てのＧＰＵを作動させることを必要とするわけではない。例えば、与えられた画像データが一部のＧＰＵのみで対応可能な量である場合には、他の一部のＧＰＵには処理を行わせないようにしてもよい。すなわち、いずれかのＧＰＵに割り当てられるデータ量がゼロである態様も、上記技術思想に含まれる。
【００６９】
例えば、バッファー３３０の処理済みデータ領域３３２に蓄積された印刷データが少ない状態から印刷データの作成処理が実行される場合には、ファーストプリントタイムを短くするためにできるだけ多くのＧＰＵを処理に関与させることが有効である。一方、バッファー３３０に多くの印刷データが蓄積された状態では、必ずしもデータ生成を急ぐ必要はない。このような場合に一部のＧＰＵを休止させることができる。
【００７０】
この場合、データ割当量がゼロとされるＧＰＵは、他のＧＰＵに比べ相対的に処理能力の低いものとなるのが妥当である。このような観点から、例えば、画像処理ＰＣ３本体に実装されたＧＰＵ３１１には、他のＧＰＵでの処理負荷が過大となるような状況においてのみ印刷データの作成に関与させるようにする、との構成も有効である。
【００７１】
また、上記実施形態では個々のＧＰＵに対しそれぞれ画像データの割り当てが定められる。しかしながら、いくつかのＧＰＵを含むＧＰＵグループへのデータ割り当てが、当該ＧＰＵグループの処理能力に応じて決定される態様でもよい。例えば、互いに同一性能を有する複数のＧＰＵからなるグループは、それらの演算能力を合計した演算能力を有する１つの大きなＧＰＵとみなすことができる。そして、画像データの割り当てにおいては、グループ内個々のＧＰＵではなく、このグループ全体に対し処理すべき部分データが指定されるようにすることができる。
【００７２】
また、図６に例示する画像データの割り当てにおいては、最も演算処理速度の高いＧＰＵ−Ａに対して最も多くの、かつ最初に印刷に供される画像データが与えられる。ここには、より演算処理速度の高いＧＰＵにより多くの画像データを処理させるという技術思想と、最初に必要とされる画像データを最も演算処理速度の高いＧＰＵに処理させるという技術思想との両方が盛り込まれている。しかしながら、これらの技術思想はそれぞれ単独で具現化されてもよい。例えば、１つのＧＰＵに１ページずつ画像データを処理させる態様であって、第１ページをＧＰＵ−Ａに、第２ページをＧＰＵ−Ｂに、というように、各ページの割り当て順序がＧＰＵの処理能力に応じて決定されるものも、本発明の技術思想に含まれる。各ＧＰＵの能力差が上記例ほど顕著ではない場合に、このような手法は特に有効である。
【００７３】
また、上記実施形態においては、各ＧＰＵの演算処理能力（速度）の評価は、画像処理ＰＣ３が評価のための所定の処理を実行することにより決定される。これに代えて、例えばＧＰＵの処理能力を指標するスコアが記録されたデータベースから情報を取得する態様や、例えば専任のオペレータが専用の評価ツールを用いて、画像処理装置に実装された各ＧＰＵの処理能力を評価する態様であってもよい。
【００７４】
また、上記実施形態では、画像処理ＰＣ３とプリンター４とが別体の装置として構成されているが、これらが一体のものであってもよい。すなわち、プリンターが上記した画像処理ＰＣと同様の画像処理機能を内蔵したものであってもよい。この場合にも、必要に応じてＧＰＵカードをプリンターに装着することで、プリンターの画像処理能力を増強することが可能である。
【００７５】
また例えば、ユーザーＰＣ２と画像処理ＰＣとが一体のものであってもよい。すなわち、上記した画像処理ＰＣに画像編集アプリケーションをさらに実装し、画像処理ＰＣ上で原画像を作成することができるようにしてもよい。ユーザーＰＣが拡張スロットを有する汎用コンピューター装置である場合には、拡張スロットにＧＰＵカードを増設することで、画像処理ＰＣとしての機能を付加することが可能になる。この場合、当該コンピューター装置が実行する制御プログラムとして本発明を提供することが可能である。
【００７６】
また上記実施形態は、ユーザーＰＣで作成された原画像データをプリンターで利用可能な印刷データに変換する機能を有する印刷処理システムとして本発明の画像処理装置が実現されたものである。しかしながら、本発明の適用対象となるデータ処理は、このように印刷データを生成するものに限定されない。例えば、原画像データから、ディスプレイ等の表示装置による画像表示を行うための表示データを作成する処理にも、本発明を適用することが可能である。特に動画の表示においては高速のデータ処理が必要とされ、本発明はこのような用途にも好適に適用可能なものである。
【符号の説明】
【００７７】
１…印刷処理システム（画像処理装置）、  ３…画像処理ＰＣ（画像処理装置）、  ４…プリンター（印刷部）、  ５…ＧＰＵカード（拡張ユニット）、  ３１…ＣＰＵ（制御部）、  ３６…ストレージ（情報保持部）、  ５０，３１１…ＧＰＵ（プロセッサー）、  ３３２…（バッファー３３０の）処理済みデータ領域（バッファー）
【図１】
2018073162.tif 000003
【図２】
2018073162.tif 000004
【図３】
2018073162.tif 000005
【図４】
2018073162.tif 000006
【図５】
2018073162.tif 000007
【図６】
2018073162.tif 000008
【図７】
2018073162.tif 000009