(57)【要約】【課題】画像データを複数のプロセッサーにより処理する画像処理装置および画像処理方法において、必要な処理内容に応じてプロセッサーを適切に稼働させる。【解決手段】画像データに対する演算処理をそれぞれが実行する複数のプロセッサー５０と、複数のプロセッサー５０が処理する未処理画像データ、および複数のプロセッサー５０により処理された処理済み画像データの少なくとも一方を蓄積するバッファー３３１と、プロセッサー５０の各々に対し、演算処理を実行するための指示を与える制御部３１とを備え、制御部３１は、バッファー３３１に蓄積されたデータ量に応じて定まる数のプロセッサー５０に対し、演算処理を実行させる旨の実行指示を与える画像処理装置である。【選択図】図３
2018045415.tif 000002
【特許請求の範囲】
【請求項１】
画像データに対する演算処理をそれぞれが実行する複数のプロセッサーと、
前記複数のプロセッサーが処理する未処理画像データ、および前記複数のプロセッサーにより処理された処理済み画像データの少なくとも一方を蓄積するバッファーと、
前記プロセッサーの各々に対し、前記演算処理を実行するための指示を与える制御部と
を備え、
前記制御部は、前記バッファーに蓄積されたデータ量に応じて定まる数の前記プロセッサーに対し、前記演算処理を実行させる旨の実行指示を与える画像処理装置。
【請求項２】
前記バッファーは前記処理済み画像データを蓄積し、
前記制御部は、前記実行指示を与える前記プロセッサーの数を、前記バッファーに蓄積された前記処理済み画像データのデータ量に対し段階的にかつ単調に少なくする請求項１に記載の画像処理装置。
【請求項３】
前記バッファーは前記未処理画像データを蓄積し、
前記制御部は、前記実行指示を与える前記プロセッサーの数を、前記バッファーに蓄積された前記未処理画像データのデータ量に対し段階的にかつ単調に多くする請求項１または２に記載の画像処理装置。
【請求項４】
前記制御部は、前記バッファーに蓄積されたデータ量と、データ量に対し予め設定された閾値との比較の結果に応じて、前記実行指示を与える前記プロセッサーの数を設定する請求項１ないし３のいずれかに記載の画像処理装置。
【請求項５】
前記制御部は、前記複数のプロセッサー各々の積算稼働量に応じて、前記実行指示を与える前記プロセッサーを選択する請求項１ないし４のいずれかに画像処理装置。
【請求項６】
前記プロセッサーの各々に対し、当該プロセッサーからアクセス可能なメモリーが設けられており、
前記実行指示が与えられた前記プロセッサーは、前記バッファーから前記メモリーに転送された前記未処理画像データに対し前記演算処理を実行して前記処理済み画像データを前記メモリーに書き込み、前記メモリー内の前記未処理画像データについての前記演算処理が終了すると、前記処理済み画像データを前記メモリーから前記バッファーに転送する請求項１ないし５のいずれかに記載の画像処理装置。
【請求項７】
前記複数のプロセッサーの少なくとも１つが、前記制御部を有するコンピューター装置に対し着脱可能な拡張ユニットに設けられる請求項１ないし６のいずれかに記載の画像処理装置。
【請求項８】
前記制御部から前記実行指示を与えられていない前記プロセッサーは休止状態となる請求項１ないし７のいずれかに記載の画像処理装置。
【請求項９】
前記処理済み画像データに基づき印刷を行う印刷部を備える請求項１ないし８のいずれかに記載の画像処理装置。
【請求項１０】
画像データを蓄積するバッファーと、前記画像データに対する演算処理をそれぞれが実行する複数のプロセッサーとを用いる画像処理方法において、
前記バッファーは、前記複数のプロセッサーが処理する未処理画像データ、および前記複数のプロセッサーにより処理された処理済み画像データの少なくとも一方を蓄積し、
前記複数のプロセッサーのうち、前記バッファーに蓄積されたデータ量に応じて定まる数の前記プロセッサーが、前記演算処理を実行する画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像データを複数のプロセッサーにより処理する画像処理装置および画像処理方法に関するものである。
【背景技術】
【０００２】
例えば適宜の画像編集アプリケーションで作成された画像データを印刷装置で処理可能なデータに変換する場合のように、画像を表す画像データに何らかのデータ処理を施して新たな画像データを作成することが必要な場合がある。このような場合、画像を構成する各画素に対して同一の処理が適用されることが多い。個々の画素を順番に処理したのでは膨大な演算量の繰り返し処理になるため、このような処理を効率よく行うための専用プロセッサーが用いられることがある。
【０００３】
例えばＧＰＵ（Graphics Processing Unit）と呼ばれるプロセッサーでは、演算処理を実行する演算コアが多数設けられてそれらが並列的に動作することで、大量のデータ処理を短時間で行うことが可能となっている。このようなＧＰＵに上記した画像処理を担わせるように構成された画像処理装置が既に実用化されている（例えば、特許文献１参照）。また、画像処理装置の処理能力をさらに高めるために、複数のＧＰＵを搭載したものも提案されている（例えば、特許文献２参照）。
【０００４】
複数のＧＰＵを備えることで、複雑な処理を要する画像やデータ量の多い画像にも対応することが可能となるが、このような高い演算処理能力が常時必要とされるわけではない。すなわち、個々のＧＰＵは単独でも高い処理能力を有しているため、比較的単純な内容の画像や小サイズの画像では、一部のＧＰＵだけでも十分に処理することができる場合がある。複数のＧＰＵを常時稼働させることで生じる過剰な電力消費を抑制するため、特許文献２に記載の技術では、一のＧＰＵがマスターＧＰＵに設定される一方、他のＧＰＵがスレーブＧＰＵに設定されており、必要のないときにはスレーブＧＰＵを休止状態とすることが可能となっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−０９５８０７号公報
【特許文献２】特表２０１３−５０４８１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献２に記載の従来技術では、画像処理装置としてのコンピューターに対し供給される電源が外部交流電源であるかバッテリーであるか、および、特定のグラフィクスアプリケーションが起動されているか否かにより、スレーブＧＰＵの稼働の要否が決定されている。しかしながら、上記したように処理すべき画像によっても必要とされる処理能力は異なっており、必要とされるプロセッサーの数も異なる。上記従来技術はこの点に対応しておらず、電力消費の抑制をより効果的に行うという観点からは改善の余地が残されている。
【０００７】
この発明にかかるいくつかの態様は、上述の課題の少なくとも一部を解決するための構成を有しており、画像データを複数のプロセッサーにより処理する画像処理装置および画像処理方法において、必要な処理内容に応じてプロセッサーを適切に稼働させることができるようにするものである。
【課題を解決するための手段】
【０００８】
本発明の一の態様は、画像データに対する演算処理をそれぞれが実行する複数のプロセッサーと、前記複数のプロセッサーが処理する未処理画像データ、および前記複数のプロセッサーにより処理された処理済み画像データの少なくとも一方を蓄積するバッファーと、前記プロセッサーの各々に対し、前記演算処理を実行するための指示を与える制御部とを備え、前記制御部は、前記バッファーに蓄積されたデータ量に応じて定まる数の前記プロセッサーに対し前記演算処理を実行させる旨の実行指示を与える画像処理装置である。
【０００９】
また、本発明の他の態様は、画像データを蓄積するバッファーと、前記画像データに対する演算処理をそれぞれが実行する複数のプロセッサーとを用いる画像処理方法であって、前記バッファーは、前記複数のプロセッサーが処理する未処理画像データ、および前記複数のプロセッサーにより処理された処理済み画像データの少なくとも一方を蓄積し、前記複数のプロセッサーのうち、前記バッファーに蓄積されたデータ量に応じて定まる数の前記プロセッサーが前記演算処理を実行する。
【００１０】
このように構成された発明では、演算処理を実行するプロセッサーの数は、バッファー内のデータ量に応じて定められる。処理を受けるべき未処理画像データがバッファーに大量に蓄積されていればこれを処理するのに多くの演算資源が必要となる一方、バッファー内における未処理画像データのデータ量が少なければ、より少ない演算資源での処理が可能である。また、処理済み画像データが大量にバッファーに蓄積された状態は、処理済み画像データを使用する後工程でのデータ処理の処理能力に対しプロセッサーの演算処理能力が十分な余裕を有していることを意味する一方、処理済み画像データがバッファーに少ない状態は、後工程での処理能力に対しプロセッサーの演算処理能力が不足していることを意味する。
【００１１】
このように、バッファー内における未処理画像データまたは処理済み画像データのデータ量は、必要とされる演算処理能力の大きさに応じて増減するものであり、必要な演算処理能力を推定するための指標となり得る。したがって、バッファー内のデータ量に基づいて演算処理を実行させるプロセッサーの数を定めることにより、必要な処理能力に応じた演算資源を供給することができる。また、無用なプロセッサーの稼働を抑制することで、消費電力を低減することが可能となる。このように、本発明によれば、複数のプロセッサーを必要な処理内容に応じて適切に稼働させることができる。
【００１２】
本発明は、例えばバッファーが処理済み画像データを蓄積するものであるとき、実行指示を与えるプロセッサーの数を、バッファーに蓄積された処理済み画像データのデータ量に対し段階的にかつ単調に少なくするように構成されてもよい。前記したように、バッファーに多くの処理済み画像データが蓄積された状態では、新たなデータ生成を急ぐ必要はないので、稼働させるプロセッサーの数を少なくして消費電力を抑えることが好ましい。
【００１３】
また、例えばバッファーが未処理画像データを蓄積するものであるとき、実行指示が与えられるプロセッサーの数を、バッファーに蓄積された未処理画像データのデータ量に対し段階的にかつ単調に多くするように構成されてもよい。前記したように、バッファーに多くの未処理画像データが蓄積された状態ではこれを処理するのに多くの演算資源を必要とするので、稼働させるプロセッサーの数を多くすることが好ましい。
【００１４】
また例えば、バッファーに蓄積されたデータ量と、データ量に対し予め設定された閾値との比較の結果に応じて、実行指示を与えるプロセッサーの数が設定されてもよい。このような構成によれば、段階的かつ単調なプロセッサー数の増減を簡単に実施することができる。
【００１５】
また例えば、複数のプロセッサー各々の積算稼働量に応じて、実行指示を与えるプロセッサーが選択されてもよい。このような構成によれば、各プロセッサーの稼働状況に応じた選択が可能となる。例えば、複数のプロセッサーを均等に稼働させることで、特定のプロセッサーに処理が集中して当該プロセッサーの寿命を縮めることを回避することができる。
【００１６】
また例えば、複数のプロセッサーの各々に対し、当該プロセッサーからアクセス可能なメモリーが設けられており、実行指示が与えられたプロセッサーは、バッファーからメモリーに転送された未処理画像データに対し演算処理を実行して処理済み画像データをメモリーに書き込み、メモリー内の未処理画像データについての演算処理が終了すると、処理済み画像データをメモリーからバッファーに転送するように構成されてもよい。このような構成によれば、各プロセッサーがメモリーに直接アクセスして演算処理を行うことで、演算処理の高速化を図ることができる。
【００１７】
また例えば、複数のプロセッサーの少なくとも１つが、制御部を有するコンピューター装置に対し着脱可能な拡張ユニットに設けられてもよい。このような構成によれば、ユーザーが必要に応じてプロセッサーの設置数を増減することが可能となる。
【００１８】
また、本発明においては、実行指示を与えられていないプロセッサーは休止状態となることが好ましい。こうすることで、処理に寄与しないプロセッサーによる電力消費を抑制することができる。
【００１９】
また、本発明の画像処理装置は、処理済み画像データに基づき印刷を行う印刷部を備えるものであってもよい。印刷部により印刷されるべき画像の内容やサイズには大きな個体差があり、画像データを処理するプロセッサーに必要とされる演算処理能力も画像により大きく異なる。このように種々の画像を処理する必要のある画像処理装置に本発明を適用することで、演算資源の効率的な利用および消費電力の低減を図ることが可能となる。
【００２０】
なお、上述した本発明の各態様の有する複数の構成要素はすべてが必須のものではなく、上述の課題の一部または全部を解決するため、あるいは、本明細書に記載された効果の一部または全部を達成するために、適宜、複数の構成要素の一部の構成要素について、その変更、削除、新たな他の構成要素との差し替え、限定内容の一部削除を行うことが可能である。また、上述の課題の一部または全部を解決するため、あるいは、本明細書に記載された効果の一部または全部を達成するために、上述した本発明の一形態に含まれる技術的特徴の一部または全部を上述した本発明の他の形態に含まれる技術的特徴の一部または全部と組み合わせて、本発明の独立した一形態とすることも可能である。
【図面の簡単な説明】
【００２１】
【図１】本発明を適用可能な印刷処理システムの構成例を示すブロック図。
【図２】画像処理ＰＣおよびＧＰＵカードの主要部を示す図。
【図３】この印刷処理システムにおける画像データの流れを模式的に示す図。
【図４】この印刷処理システムにおける主要な動作を示すフローチャート。
【図５】バッファー内のデータ蓄積量に対し定められる閾値の例を示す図。
【図６】稼働させるＧＰＵを決定するための処理の第１の例を示すフローチャート。
【図７】第１の例の変形例を示すフローチャート。
【図８】第１の例のさらなる変形例を示す第１の図。
【図９】第１の例のさらなる変形例を示す第２の図。
【図１０】稼働させるＧＰＵを決定するための処理の第２の例を示すフローチャート。
【発明を実施するための形態】
【００２２】
図１は本発明を適用可能な印刷処理システムの構成例を示すブロック図である。印刷処理システム１は、ユーザー用パーソナルコンピューター（以下「ユーザーＰＣ」と略称する）２、画像処理用パーソナルコンピューター（以下「画像処理ＰＣ」と略称する）３およびプリンター４を含み、それらが互いに通信可能に接続されている。この印刷処理システム１は、ユーザーがプリンター４を作動させて所望の画像を印刷させるためのシステムである。
【００２３】
具体的には、印刷を希望するユーザーは、ユーザーＰＣ２により実行される適宜の画像編集アプリケーションを用いて、印刷したい画像を表す原画像データを作成する。原画像データは画像処理ＰＣ３に送られる。画像処理ＰＣ３に実装された画像処理アプリケーションがデータ処理を実行することで、原画像データが、プリンター４が利用可能な印刷データに変換される。画像処理ＰＣ３からプリンター４へ印刷データが送信され、プリンター４が印刷データに対応して印刷ジョブを実行することで、原画像データに対応する画像が印刷される。
【００２４】
ユーザーＰＣ２は一般的なパーソナルコンピューターやワークステーションと同等のハードウェア構成を有するコンピューター装置である。画像処理ＰＣ３も同様のハードウェア構成を有するものであるが、特に本発明の実施に関わる構成として、ＣＰＵ（Central Processing Unit）３１、本体メモリー３３およびインターフェース（ＩＦ）３５を備える。ＣＰＵ３１は、所定の制御プログラムを実行することで、画像処理ＰＣ３全体の動作を司る。インターフェース３５は、外部装置との通信を行い、例えばユーザーＰＣ２からの原画像データの受信や、プリンター４への印刷データの送信を担う。ＣＰＵ３１は、当該ＣＰＵ３１が実行する処理のうちの画像処理を担うＧＰＵ（Graphics Processing Unit）３１１をパッケージ内にまたはチップセットとして備えるものであってもよい。
【００２５】
また、本体メモリー３３は、ＣＰＵ３１が実行する各種プログラムや該プログラムの実行により生成されるデータを記憶保存する。本体メモリー３３は一般的なパーソナルコンピューターにメインメモリーとして搭載されるものと同等のものであるが、後述するＧＰＵカード５上のメモリーとの区別のために、ここでは特に「本体メモリー」と称している。後述するように、本体メモリー３３の記憶領域のうち一部は、ユーザーＰＣ２から与えられ最終的にプリンター４に送られる画像データを一時的に蓄積保存するバッファー３３１（図２）として使用される。バッファーとして機能する専用ハードウェアが別途設けられてもよい。
【００２６】
画像処理ＰＣ３に設けられた拡張スロット３９には、少なくとも１つの（この例では２つの）ＧＰＵカード５が装着される。ＧＰＵカード５は、次に説明するように画像データ処理に特化されたハードウェア構成を有するものであり、ＣＰＵ３１からの制御指令に応じて原画像データから印刷データを作成する際の各画素についての演算を並列処理することで、印刷データを短時間で作成する機能を担うものである。
【００２７】
図２は画像処理ＰＣおよびＧＰＵカードの主要部を示す図である。ＧＰＵカード５は、画像処理ＰＣ３の拡張スロット３９に装着可能なコネクター５９を有し、画像処理ＰＣ３に装着されることでその機能を拡張するカード型のモジュールである。なお、次に説明するＧＰＵカード５内の各構成は、このように画像処理ＰＣ３に対し着脱可能なモジュールとして実装されるが、画像処理ＰＣ３に予め内蔵されたものであってもよい。また、ＧＰＵ５０を含むモジュールの形態は上記のようなカード型のものに限定されず任意である。
【００２８】
ＧＰＵカード５は、画像処理を並列処理によって行うハードウェア構成を有するプロセッサーであるＧＰＵ５０と、ＧＰＵ５０が処理する画像データを記憶するためのメモリー５５とを備えている。メモリー５５については、画像処理ＰＣ３に設けられた本体メモリー３３との区別のために、以下では「カード上メモリー」と称することとする。１つのＧＰＵカード５に複数のＧＰＵ５０が設けられてもよい。ＧＰＵ５０とカード上メモリー５５とは直結されており、ＧＰＵ５０からカード上メモリー５５への直接アクセスが可能である。
【００２９】
ＧＰＵ５０は、コネクター５９を介してＣＰＵ３１と通信可能に接続されるコントローラー５１と、コントローラー５１からの指示により演算処理を実行する演算部５３とを備えている。コントローラー５１は、ＣＰＵ３１から受け取った制御プログラムや各種の処理パラメーターに基づき、ＧＰＵカード５内の各部の動作を制御する。演算部５３は、コントローラー５１から与えられる共通の演算アルゴリズムと、カード上メモリー５５から読み出された異なるデータセットとに基づく演算処理を並列的に実行する多数の演算コア（図示省略）を備えている。演算部５３による演算結果はカード上メモリー５５に書き出される。
【００３０】
製品化されているＧＰＵには、１つの演算部５３に例えば数百ないし数千の演算コアを含むものがある。各演算コアは、比較的単純な演算を高速で実行するのに対応した、ハードウェア構成を有する。このように、ＧＰＵカード５は、同一処理の繰り返しであるが演算量が膨大となるような演算を、多数の演算コアによる並列処理で高速に実行するのに適した構成を有している。このような構成は、同一の演算を全ての画素について実行することが求められる画像データの処理に特に好適である。
【００３１】
ＣＰＵ３１に内蔵されたＧＰＵ３１１も同様のハードウェア構成および処理機能を有するものである。一般的には、専用チップとして構成されたＧＰＵ５０に比べるとＧＰＵ３１１のハードウェアは小規模であり、演算処理能力も限定的である。このため、この実施形態ではＧＰＵ３１１は例えば画像処理ＰＣ３の図示しない表示部に表示させる画像を処理する目的に限定して使用される。ただし、必要に応じて、後述する画像データ処理の一部を担ってもよい。
【００３２】
図３はこの印刷処理システムにおける画像データの流れを模式的に示す図である。ユーザーＰＣ２から印刷の対象となる画像を表す原画像データが与えられると、画像処理ＰＣ３のＣＰＵ３１は、原画像データを本体メモリー３３内に予め設けられたバッファー領域のうちの未処理データ領域に書き込む。与えられた原画像データは、印刷データに変換処理される前のデータであり、以下では「未処理データ」と称される。図３において、実線矢印は未処理データの流れを表している。
【００３３】
未処理データ領域に蓄積された未処理データは、適宜のタイミングでＧＰＵカード５のカード上メモリー５５に転送される。ＧＰＵカード５上のＧＰＵ５０は、当該ＧＰＵカード５に設けられたカード上メモリー５５に保存された未処理データに対し所定の画像処理を実行する。より具体的には、ＧＰＵ５０の演算部５３は、ＣＰＵ３１からコントローラー５１を介して指定されるアルゴリズムとカード上メモリー５５に保存された未処理データとに基づく演算処理を実行する。演算処理によって生成される画像データを以下では「処理済みデータ」と称する。この場合の処理済みデータは、プリンター４による印刷処理に供される画像データ、すなわち印刷データである。
【００３４】
演算部５３に設けられた多数の演算コアがそれぞれ演算処理により生成した処理済みデータはカード上メモリー５５に一時的に保存される。カード上メモリー５５に保存された全ての未処理データに対する処理が終了すると、本体メモリー３３に設定されたバッファー領域のうちの処理済みデータ領域に転送される。図３において、破線矢印は処理済みデータの流れを表す。
【００３５】
バッファー上の未処理データは、必要に応じて、複数のＧＰＵ５０により処理される。具体的には、バッファー３３１の未処理データ領域に蓄積された未処理データが複数ブロックに分割され、ブロックごとの未処理データがそれぞれ異なるＧＰＵカード５に転送されてＧＰＵ５０により処理される。後述するように、未処理データの処理にいくつのＧＰＵ５０が使われるか、またどのＧＰＵ５０が使われるかは、バッファー内に蓄積されたデータ量に応じて動的に設定される。
【００３６】
ＧＰＵ５０での演算処理により生成された処理済みデータはバッファー３３１の処理済みデータ領域に蓄積される。プリンター４は、印刷準備が整うとバッファー３３１の処理済みデータ領域に蓄積された処理済みデータを取得し、これを印刷データとして印刷ジョブを実行する。
【００３７】
バッファー３３１の未処理データ領域に蓄積された未処理データは、ＧＰＵカード５へ転送されるとバッファー３３１から消去される。したがって、バッファー３３１の未処理データ領域には、印刷用の原画像データとしてユーザーＰＣ２から与えられたデータのうちＧＰＵ５０による処理が済んでいないもののみが蓄積される。また、バッファー３３１の処理済みデータ領域に蓄積された処理済みデータは、プリンター４へ転送されるとバッファー３３１から消去される。したがって、バッファー３３１の処理済みデータ領域には、ＧＰＵ５０により処理された処理済みデータのうちプリンター４にまだ転送されてないもののみが蓄積される。
【００３８】
図４はこの印刷処理システムにおける主要な動作を示すフローチャートである。より具体的には、図４は、ユーザーＰＣ２から画像処理ＰＣ３に原画像データが与えられてから、原画像データに対する演算処理により印刷データが生成されるまでの処理内容を示す図である。ユーザーＰＣ２から原画像データが与えられると、画像処理ＰＣ３のＣＰＵ３１は、与えられた原画像データをバッファー３３１の未処理データ領域に保存し、バッファー３３１内に蓄積されているデータ量を取得する（ステップＳ１０１）。
【００３９】
次いでＣＰＵ３１は、取得されたデータ量に基づき、システム内に装備されたＧＰＵのうちいくつを使用するか、またどれを使用するかを決定するための処理を実行する（ステップＳ１０２）。すなわち、この印刷処理システム１では、装備されたＧＰＵ５０の全てが常時稼働しているわけではなく、バッファー３３１内のデータ量に応じて、稼働させるＧＰＵの数および個体が決定される。その決定の方法については後に詳しく説明するが、この実施形態ではそれぞれＧＰＵ５０を有する２つのＧＰＵカード５が設けられているので、使用されるＧＰＵの数は０、１、２のいずれかである。
【００４０】
処理に使用されるＧＰＵが決定されると、使用が決定されたＧＰＵ５０を有するＧＰＵカード５に対し、ＣＰＵ３１から起動命令が送信されて、当該ＧＰＵカード５が起動される（ステップＳ１０３）。このとき、ＧＰＵ５０の初期化が行われ、ＣＰＵ３１からＧＰＵ５０に対し、演算部５３が演算処理を実行するのに必要な各種情報、例えば演算アルゴリズム、ルックアップテーブル（ＬＵＴ）、ＳＭＬテーブル等が与えられる。
【００４１】
また、使用されるＧＰＵ５０が複数であるとき、ＣＰＵ３１は、バッファー３３１の未処理データ領域に蓄積されている未処理データを例えば画像ファイル単位、ページ単位等の適宜の単位で、使用されるＧＰＵ５０の数に応じた複数のブロックに分割する（ステップＳ１０４）。分割されるブロックのサイズは同一でなくてもよく、例えば各ＧＰＵ５０の処理能力に応じてデータが配分されてもよい。分割された未処理データは、それぞれ異なるＧＰＵ５０に与えられる。具体的には、分割された未処理データはそれぞれ異なるＧＰＵカード５に設けられたカード上メモリー５５に転送される（ステップＳ１０５）。
【００４２】
ＣＰＵ３１からの命令により起動された各ＧＰＵ５０は、与えられた演算アルゴリズムとカード上メモリー５５に転送された未処理データとに基づく演算処理を実行し（ステップＳ１０６）。全ての未処理データについて処理が終了すると、当該ＧＰＵ５０からＣＰＵ３１へ処理終了の旨が通知され、生成された処理済みデータがカード上メモリー５５からバッファー３３１の処理済みデータ領域に転送される（ステップＳ１０７）。
【００４３】
バッファー３３１の未処理データ領域に未処理データが残っていれば、ステップＳ１０１に戻って上記した処理が繰り返し実行される（ステップＳ１０８）。こうすることにより、バッファー３３１の未処理データ領域に書き込まれた未処理データは全て処理済みデータに変換されて、バッファー３３１の処理済みデータ領域に蓄積される。プリンター４は、バッファー３３１の処理済みデータ領域に蓄積された処理済みデータ（印刷データ）を順次処理して印刷を実行する。
【００４４】
次に、画像データ処理に使用されるＧＰＵを決定する方法のいくつかの例を説明する。上記したように、ＣＰＵ３１は、画像データ処理に使用されるＧＰＵの数および個体を、バッファー３３１内のデータ量に応じて動的に決定する。より多くのＧＰＵを稼働させることで印刷処理システム１全体としてのデータ処理能力は高くなるが、消費電力も多くなる。そこで、必要とされる処理能力に応じて稼働させるＧＰＵの数を増減させることが望ましい。この実施形態では、バッファー３３１内のデータ量に応じて稼働させるＧＰＵが決定される。
【００４５】
第１の例では、バッファー３３１の処理済みデータ領域に蓄積された処理済みデータのデータ量に基づき、使用されるＧＰＵが決定される。前記したように、バッファー３３１の処理済みデータ領域では、各ＧＰＵ５０により生成された処理済みデータが蓄積されている。該処理済みデータは印刷データとしてプリンター４に転送されるとバッファー３３１から削除される。したがって、バッファー３３１の処理済みデータ領域におけるデータ量は、ＧＰＵ５０により処理済みデータが生成されるペース、つまりＧＰＵ５０におけるデータ処理速度と、プリンター４による印刷データの消費ペース、つまりプリンター４におけるデータ処理速度とのバランスに応じて増減する。
【００４６】
すなわち、プリンター４での処理速度に対しＧＰＵ５０によるデータ処理速度が高すぎれば、バッファー３３１内の処理済みデータの蓄積量が増加する。したがって、バッファー３３１内に多くの処理済みデータが蓄積された状態は、プリンター４の処理能力に対し画像処理ＰＣ３の処理能力が過剰であることを示しているということができる。この場合には、ＧＰＵ５０の稼働数を減らして処理能力および消費電力を下げることが好ましい。一方、バッファー３３１に特積された処理済みデータが少なくなっている状態は、プリンター４の処理能力に対し画像処理ＰＣ３の処理能力が不足していることを示しているといえる。この場合には、ＧＰＵ５０の稼働数を増やして処理能力を上げることが好ましい。
【００４７】
このように、バッファー３３１内の処理済みデータの蓄積量を考えたとき、データ量が多いほど使用するＧＰＵ５０の数を少なくすることができる。ただし、ＧＰＵ５０を頻繁に起動させたり休止させたりすることは、起動処理によるオーバーヘッドが処理効率を低下させるおそれがあるので好ましくない。そこで、バッファー３３１内における処理済みデータのデータ量に応じて単調に、かつ段階的にＧＰＵ５０の数を少なくすることが好ましい。第１の例はこのような考え方に基づいている。
【００４８】
これに対し、第２の例では、バッファー３３１の未処理データ領域に蓄積された未処理データのデータ量に基づき、使用されるＧＰＵが決定される。バッファー３３１内の未処理データについては、上記した第１の例とは逆に、画像処理ＰＣ３の処理能力が高ければデータ量は少なくなり、処理能力が不足すると未処理データが増加する。したがって、バッファー３３１内における未処理データのデータ量に応じて単調に、かつ段階的にＧＰＵ５０の数を増加させることが好ましい。第２の例はこのような考え方に基づいている。
【００４９】
図５はバッファー内のデータ蓄積量に対し定められる閾値の例を示す図である。後述する第１および第２の例では、バッファー３３１内のデータ蓄積量に対し何段階かの閾値を予め設定しておき、現在のデータ蓄積量と閾値との比較に基づき、演算処理に使用されるＧＰＵ５０の数が決定される。バッファー３３１の処理済みデータ領域または未処理データ領域のデータ蓄積量に対し、ここでは３種類の閾値（閾値０、閾値１、閾値２）が設定される。ただし、（閾値０）＞（閾値１）＞（閾値２）であるものとする。また、以下の説明においては、２つのＧＰＵカード５のそれぞれに設けられたＧＰＵ５０を区別する必要がある場合にはそれぞれ「ＧＰＵ＃１」、「ＧＰＵ＃２」と称する。
【００５０】
図６は稼働させるＧＰＵを決定するための処理の第１の例を示すフローチャートである。この例では、バッファー３３１内の処理済みデータのデータ量に基づいて使用するＧＰＵ５０が決定される。バッファー３３１の処理済みデータ領域に蓄積されたデータ量が閾値０を超えている場合（ステップＳ２０１においてＹＥＳ）、プリンター４が処理すべき印刷データが大量に蓄積されており、当面は新たな印刷データを生成する必要がないと考えられる。そこで、この場合には全てのＧＰＵ５０に起動命令を与えずこれらを休止状態として（ステップＳ２２１）、消費電力の削減を図る。
【００５１】
一方、データ量が閾値０以下であるが閾値１よりは大きい場合には（ステップＳ２０１においてＮＯ、かつステップＳ２０２においてＹＥＳ）、ＧＰＵ＃１、ＧＰＵ＃２の一方のみが稼働される。このときＧＰＵ＃１、ＧＰＵ＃２が均等に使用されるようにするために、適宜のフラグが導入される。すなわち、フラグの値が１であれば（ステップＳ２１１においてＹＥＳ）、ＧＰＵ＃１が稼働対象となり（ステップＳ２１２）、それ以外であれば（ステップＳ２１１においてＮＯ）、ＧＰＵ＃２が稼働対象となる（ステップＳ２１４）。稼働対象となるＧＰＵが選択される度にフラグが切り替えられるので（ステップＳ２１３、Ｓ２１５）、次回の判断では今回選択されたものとは異なるＧＰＵが選択されて、稼働対象となる。こうして２つのＧＰＵが交互に使用されることで、発熱源が一箇所に集中することなく分散されることによる冷却効率の向上が図れ、また稼働量の偏りに起因する寿命の短縮が抑制される。
【００５２】
また、データ量が閾値１以下で閾値２よりも大きい場合には（ステップＳ２０２においてＮＯ、かつステップＳ２０３においてＹＥＳ）、現時点におけるＧＰＵの数および個体の選択状態が維持される（ステップＳ２３１）。常時適量のデータがバッファーに残っている状態は、画像処理ＰＣ３における処理能力とプリンター４における処理能力とが適度にバランスした状態であり、ＧＰＵの数を変化させる必要はないと考えられるからである。
【００５３】
これに対し、データ量が閾値２以下であるときには（ステップＳ２０３においてＮＯ）、プリンター４の処理能力に対し画像処理ＰＣ３の処理能力が不足している、あるいは、処理の初期段階でＧＰＵから出力される印刷データの量が少ない状態にあると考えられる。このときプリンター４は手待ち状態となるから、プリンター４の稼働率を高めるために、早期に印刷データが生成されることが好ましい。そこで、演算処理能力を最大化するために、全てのＧＰＵが稼働対象とされる（ステップＳ２０４）。
【００５４】
このように、第１の例では、バッファー３３１内の処理済みデータのデータ量に応じて稼働させるＧＰＵの数および個体が決定される。具体的には、稼働させるＧＰＵの数はデータ量に対し単調に、かつ段階的に少なくなるように決定される。また、特定のＧＰＵのみに稼働が偏らないように、１つのＧＰＵのみを必要とする場合には２つのＧＰＵが交互に使用される。
【００５５】
なお、画像処理ＰＣ３が３以上のＧＰＵ５０を備えるとき、あるいは、ＣＰＵ３１に内蔵されたＧＰＵ３１１にも画像処理を担わせる場合には、使用するＧＰＵの数やその組み合わせがより多岐になるが、基本的には上記と同様の考え方を適用することが可能である。すなわち、それらのＧＰＵのうちいくつを使用するかがバッファー内のデータ量に基づき決定され、どのＧＰＵを使用するかがさらに決定される。ただし、ＣＰＵ３１に内蔵されたＧＰＵ３１１の処理能力が外付けのＧＰＵ５０よりも劣る場合には、ＧＰＵ３１１の使用頻度を他より低くする、処理させるデータ量を他より少なくする等の対応が取られることが望ましい。
【００５６】
図７は第１の例の変形例を示すフローチャートである。この変形例では、いずれか一方のＧＰＵのみを稼働させるときのＧＰＵの選択ルールが、上記した第１の例とは一部異なっている。図７においては、図６に示す処理と同一内容の処理ステップについては図６と同一の符号を付して詳しい説明を省略する。
【００５７】
この変形例においても、バッファー３３１の処理済みデータの蓄積量が閾値０以下かつ閾値１より大きいとき（ステップＳ２０２においてＹＥＳ）、いずれか一方のＧＰＵのみが使用される。具体的には、上記した第１の例では２つのＧＰＵ＃１、ＧＰＵ＃２が交互に使用されたのに対し、この変形例では、２つのＧＰＵ＃１、ＧＰＵ＃２のうちこれまでの稼働量の少ない方が、次の処理に使用されるＧＰＵとして選択される。すなわち、ＣＰＵ３１は、予め各ＧＰＵ＃１、ＧＰＵ＃２の稼働量を把握しており、その積算値を取得して（ステップＳ２４１）、稼働積算量の少ない方のＧＰＵを稼働させる（ステップＳ２４２）。このような方法によっても、２つのＧＰＵを偏りなく稼働させることができる。
【００５８】
図８および図９は第１の例のさらなる変形例を示す図である。より具体的には、図８はこの変形例において追加される処理内容を示すフローチャートであり、図９はこの変形例における閾値２の設定例を示す図である。この変形例では、稼働させるＧＰＵを決定するためにバッファー３３１のデータ量に対して設定される閾値が一定ではなく、必要に応じて変更される。ここでは、閾値２が変更される例を示す。
【００５９】
図５に示したように、閾値２は複数の閾値のうち最も値の小さいものである。そして、図６および図７に示したように、バッファー３３１内のデータ蓄積量が閾値Ｔ２以下であるときに実行されるデータ処理では、全てのＧＰＵが稼働する。このとき演算処理能力は最大となるが消費電力も大きくなる。一方、バッファー３３１内のデータ蓄積量が閾値Ｔ２を超えた状態のデータ処理では、２つのＧＰＵのうち一方のみが稼働し他方は休止する。
【００６０】
供給される演算処理能力と消費電力とのトレードオフを考えると、バッファー３３１内のデータ蓄積量が例えば閾値１と閾値２との間で推移している状態が好ましい。この状態が維持されているとき、１つのＧＰＵ５０のみによって十分な演算処理能力を供給することができているということができ、また他方のＧＰＵ５０を休止させることで消費電力も抑制される。
【００６１】
さらに消費電力を抑制し、また、休止状態のＧＰＵを起動する際の初期化処理に起因するオーバーヘッドを低減するために、１つのＧＰＵ５０で十分な処理能力が供給されていれば、可能な限りその状態が維持されることが好ましい。この目的のために、バッファー３３１内のデータ蓄積量が急速に減少するといった事情がない限り、１つのＧＰＵ５０による処理を継続することができるのが好ましい。以下に説明する変形例はこのような要求に対応したものである。
【００６２】
この変形例では、ＣＰＵ３１が、バッファー３３１内のデータ蓄積量が閾値１から閾値２に達するまでの時間からバッファー３３１内のデータ量の減少速度を推定し、その結果に基づいて閾値２の値を動的に更新する。具体的には、ＣＰＵ３１は、バッファー３３１内のデータ蓄積量が閾値Ｔ２以下となったとき、閾値１と閾値２との差Ｄと、データ蓄積量が閾値１から閾値２に減少するまでに要した時間Ｔｄとを取得する（ステップＳ３０１、Ｓ３０２）。そして、図９に例示するように、これらから求められる値（Ｔｄ／Ｄ）と閾値２との間で予め定められた関係に基づいて、新たな閾値２が設定される（ステップＳ３０３）。
【００６３】
このようにすることで、次のような効果が得られる。値（Ｔｄ／Ｄ）が小さい、つまり閾値１から閾値２へのデータ量の減少が短い時間で発生したとき、プリンター４の処理能力に対し画像処理ＰＣ３の処理能力が不足しているといえる。したがって、このような場合には閾値２が大きくなるようにすることで、休止状態にあるＧＰＵ５０を早い段階で起動させて処理能力の不足を解消することができる。一方、値（Ｔｄ／Ｄ）が大きい、つまり閾値１から閾値２へのデータ量の減少に要する時間が長ければ、画像処理ＰＣ３の処理能力はプリンター４の処理能力に対し顕著な不足を示していないといえる。そこで、このような場合には閾値２が小さくなるようにすることで、休止状態のＧＰＵの起動を遅らせて、消費電力のさらなる抑制を図ることができる。なお、図９の例では値（Ｔｄ／Ｄ）と閾値２との間に線形の関係が設定されているが、これに限定されるものではない。
【００６４】
次に、稼働させるＧＰＵを決定する方法の第２の例について説明する。上記した第１の例では、バッファー３３１のうち処理済みデータ領域に蓄積された処理済みデータの量に基づいて、ＧＰＵの数が決定される。一方、次に説明する第２の例では、バッファー３３１のうち未処理データ領域に蓄積された未処理データの量に基づいて、ＧＰＵの数が決定される。
【００６５】
図１０は稼働させるＧＰＵを決定するための処理の第２の例を示すフローチャートである。図１０においては、図６に示す処理と同一内容の処理ステップについては図６と同一の符号を付して詳しい説明を省略する。
【００６６】
上記した第１の例において、バッファー３３１に多くの処理済みデータが蓄積された状態は、ＧＰＵカード５を含む画像処理ＰＣ３の演算処理能力に余裕があることを示している。このため、バッファー内のデータ量に対し単調にかつ段階的に、稼働させるＧＰＵの数が減らされる。これに対し、第２の例においては、バッファー３３１に多くの未処理データが蓄積された状態は画像処理ＰＣ３の演算処理能力が不足していることを示す。このため、第１の例とは逆に、バッファー内のデータ量に対し単調にかつ段階的に、稼働させるＧＰＵの数を増加させる必要がある。
【００６７】
このことを反映して、図１０に示す処理では、バッファー内データ量が閾値０より多いとき（ステップＳ２０１においてＹＥＳ）に全てのＧＰＵ５０が稼働され（ステップＳ２５１）、データ量が閾値２以下であるとき（ステップＳ２０３においてＮＯ）に全てのＧＰＵ５０が休止される（ステップＳ２０５）。この点を除けば第１の例と同じであり、第１の変形例と同様の変形例も成立する。ただし、図８および図９に示す変形例においては、同様の考えにより閾値０が随時更新設定されることになる。
【００６８】
以上のように、この実施形態の印刷処理システム１は、画像データの処理を行うためのＧＰＵ５０を複数備えており、これらの稼働状態が、バッファー３３１内に蓄積されたデータ量に応じて設定される。具体的には、バッファー３３１内の処理済みデータのデータ量に対し単調にかつ段階的に、稼働させるＧＰＵ５０の数が減らされる。また、バッファー３３１内の未処理データのデータ量に対し単調にかつ段階的に、稼働させるＧＰＵ５０の数が増やされる。
【００６９】
こうすることにより、この実施形態では、新たに与えられるあるいは消費される画像データの量に応じた演算処理能力を常時供給しつつ、無用な電力の消費を低減することが可能となっている。また、一部のＧＰＵのみが稼働するとき、稼働するＧＰＵが順次遷移するので、特定のＧＰＵのみに処理が集中することが回避され、装置寿命の延長を図ることができる。
【００７０】
以上説明したように、上記実施形態においては、印刷処理システム１、特に画像処理ＰＣ３が本発明の「画像処理装置」として機能している。また、ＧＰＵ５０、３１１が本発明の「プロセッサー」として機能し、メモリー３３の一部領域として設けられるバッファー３３１が本発明の「バッファー」として機能している。また、ＣＰＵ３１が本発明の「制御部」として機能している。そして、上記実施形態における処理済みデータ、未処理データがそれぞれ本発明の「処理済み画像データ」、「未処理画像データ」に相当しており、ＣＰＵ３１からＧＰＵ５０に与えられる起動命令が本発明の「実行指示」に相当している。
【００７１】
また、上記実施形態においては、ＧＰＵカード５が本発明の「拡張ユニット」に相当しており、カード上メモリー５５が本発明の「メモリー」として機能している。また、プリンター４が、本発明の「印刷部」として機能している。
【００７２】
なお、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて上述したものに対して種々の変更を加えることが可能である。例えば、上記実施形態では、ＣＰＵ３１は、稼働させるＧＰＵ５０にのみ起動命令を与える一方、他のＧＰＵ５０には命令を与えないことにより当該ＧＰＵ５０を実質的に休止状態としている。これに代えて、稼働させないＧＰＵ５０またはこれを搭載するＧＰＵカード５に対し休止指令を与えることで、より積極的に低消費電力状態に至らせるようにしてもよい。
【００７３】
また、上記実施形態では、複数のＧＰＵ５０の稼働量が概ね均等となるように、使用されるＧＰＵの選択が行われる。これに代えて、例えば特に複数のＧＰＵの間で演算処理能力に差異がある場合などには、それらの処理能力に応じてＧＰＵが選択されるようにしてもよい。例えば、最も処理能力の高いＧＰＵが優先的に使用されるようにしてもよく、また処理すべきデータ量に最も適した演算処理能力を有するＧＰＵが選択されるようにしてもよい。
【００７４】
また、上記実施形態の説明においては、バッファー内の処理済みデータの蓄積量に応じてＧＰＵの選択を行う第１の例と、バッファー内の未処理データの蓄積量に応じてＧＰＵの選択を行う第２の例とを示したが、第１の例と第２の例とが組み合わされてもよい。すなわち、バッファー内の処理済みデータ量と未処理データ量とから総合的に、稼働させるべきＧＰＵが決定されるようにしてもよい。
【００７５】
また、上記実施形態では、画像処理ＰＣ３とプリンター４とが別体の装置として構成されているが、これらが一体のものであってもよい。すなわち、プリンターが上記した画像処理ＰＣと同様の画像処理機能を内蔵したものであってもよい。この場合にも、必要に応じてＧＰＵカードをプリンターに装着することで、プリンターの画像処理能力を増強することが可能である。
【００７６】
また例えば、ユーザーＰＣ２と画像処理ＰＣとが一体のものであってもよい。すなわち、上記した画像処理ＰＣに画像編集アプリケーションをさらに実装し、画像処理ＰＣ上で原画像を作成することができるようにしてもよい。ユーザーＰＣが拡張スロットを有する汎用コンピューター装置である場合には、拡張スロットにＧＰＵカードを増設することで、画像処理ＰＣとしての機能を付加することが可能になる。
【００７７】
また上記実施形態は、ユーザーＰＣで作成された原画像データをプリンターで利用可能な印刷データに変換する機能を有する印刷処理システムとして本発明の画像処理装置が実現されたものである。しかしながら、本発明の適用対象となるデータ処理は、このように印刷データを生成するものに限定されない。例えば、原画像データから、ディスプレイ等の表示装置による画像表示を行うための表示データを作成する処理にも、本発明を適用することが可能である。特に動画の表示においては高速のデータ処理が必要とされ、本発明はこのような用途にも好適に適用可能なものである。
【符号の説明】
【００７８】
１…印刷処理システム（画像処理装置）、  ３…画像処理ＰＣ（画像処理装置）、  ４…プリンター（印刷部）、  ５…ＧＰＵカード（拡張ユニット）、  ３１…ＣＰＵ（制御部）、  ３３…本体メモリー（バッファー）、  ５０、３１１…ＧＰＵ（プロセッサー）、  ５５…カード上メモリー（メモリー）、  ３３１…バッファー
【図１】
2018045415.tif 000003
【図２】
2018045415.tif 000004
【図３】
2018045415.tif 000005
【図４】
2018045415.tif 000006
【図５】
2018045415.tif 000007
【図６】
2018045415.tif 000008
【図７】
2018045415.tif 000009
【図８】
2018045415.tif 000010
【図９】
2018045415.tif 000011
【図１０】
2018045415.tif 000012