説明

画像処理装置、及び画像処理プログラム

【課題】処理部に交互に転送する元画像データの画像の構成や、画像処理の内容の如何に関わらず、画像出力装置の動作速度に間に合うように出力画像データを供給する。
【解決手段】画像処理装置に、第1の記憶部にデータがページングされる第1の記憶領域と、ページングされない第2の記憶領域とを有する第2の記憶部を備え、転送部が、データ転送時間の画像処理時間に対する比率に基づいて、元画像データを第1の記憶領域から複数の処理部に転送する第1の転送モードと、一旦第1の記憶領域から前記第2の記憶領域に転送してから処理部に転送する第2の転送モードのいずれかを切り替えて実行するので、元画像データの画像の構成や、画像処理の内容の如何に関わらず、画像出力装置の動作速度に間に合うように出力画像データを供給できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、元画像データに基づいて出力画像データを生成する画像処理装置等に関し、特に、前記元画像データを処理単位ごとに複数の処理部にて処理し、前記出力画像データを生成する画像処理装置等に関する。
【背景技術】
【0002】
画像処理装置の一例として、RIP(Raster Image Processor)として機能するパーソナルコンピュータ(ここではRIP−PCという)が知られている。かかるRIP−PCは、描画コマンドやビットマップ画像データなどの元画像データに対し画像処理を行い、プリンタ(画像出力装置)に供給する印刷データ(出力画像データ)を生成する。画像処理には、描画コマンドに基づきビットマップデータを生成する処理や、ビットマップデータの色や解像度を変換する各種変換処理が含まれる。
【0003】
RIP−PCがプリンタに印刷データを供給する速度は、RIP−PC内のプロセッサの処理速度やメモリに対するデータ読み書きの速度に依存する。近年では、ページ単位の印刷が可能になるなど、プリンタの印刷速度が向上している。これに伴い、印刷データの供給速度の向上が要望されている。
【0004】
かかる要望に応えるために、画像処理用のプロセッサを並列化する方法が提案されている。特許文献1、2には、並列化された画像処理プロセッサについて記載されている。RIP−PCにおいては、CPU(Central Processing Unit)に加え、複数のGPU(Graphic Processing Unit)を並列動作可能に設けた構成が知られている。かかるRIP−PCでは、CPUが、たとえば1ページ分の元画像データを所定の処理単位ごとに分割して各GPUに供給し、各GPUに画像処理を行わせて印刷データを生成させる。そして、各GPUが生成した印刷データを収集し、1ページ分の印刷データをプリンタに供給する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平5−266201号公報
【特許文献2】特開2002−207711号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、上記のRIP−PCにおける画像処理では、RIP−PCのメモリから各GPUへの元画像データの転送時間と、各GPUにおける処理時間と、各GPUからメモリへの印刷データの転送時間とが発生する。
【0007】
ここで、元画像データと印刷データとの転送時間をみてみる。データ転送時間は転送されるデータ量に依存するところ、印刷データのデータ量はプリンタが出力可能な画像の画素数に依存して一定であるので、その転送時間はある程度一定している。これに対し、元画像データのデータ量は元画像の構成により異なるので、元画像の構成に応じて元画像データの転送時間には差が生じる。
【0008】
また、各GPUにおける画像処理時間をみてみると、処理内容により差が生じる。たとえば描画コマンドに基づく元画像データから印刷データを生成する処理の方が、ビットマップデータなどの元画像データから印刷データを生成する処理より処理内容が多いので、処理時間が長くなる。
【0009】
すると、1ページあたりのデータ転送時間とGPUの画像処理時間の合計がプリンタの印刷所要時間以下であるうちは、余裕をもってプリンタに印刷データを供給できる。しかし、元画像データの転送時間が増大したり、画像処理の負荷が増大したりすることで、データ転送時間と画像処理時間の合計が印刷所要時間を上回るようになると、プリンタの印刷速度に合わせて印刷データを供給できなくなる。すると、複数ページを連続して印刷するようなジョブを実行する場合に、印刷データが供給されずにプリンタから白紙が出力されるといった不都合が生じる。あるいは、これを避けるために、RIP−PCのメモリやプリンタ内のメモリに、印刷データをある程度スプールしておくことがある。そして、スプールされた印刷データ量がある程度減少したときに、プリンタを停止させることも可能である。しかし、これは印刷遅延につながるおそれがある。
【0010】
そこで、本発明の目的は、GPUに転送される元画像データの構成や、画像処理の内容の如何に関わらず、画像出力装置の動作速度に間に合うように出力画像データを供給できる画像処理装置等を提供することにある。
【課題を解決するための手段】
【0011】
上記の目的を達成するために、本発明の第1の側面によれば、ページごとの元画像データに基づいて画像出力装置用の出力画像データを生成する画像処理装置において、仮想記憶領域を有する第1の記憶部と、格納されるデータが前記仮想記憶領域に退避される第1の記憶領域と、前記退避がされない第2の記憶領域とを有し、前記第1の記憶部よりデータの読み書きの速度が速い第2の記憶部と、前記ページごとの元画像データを前記ページより小さい処理単位で処理し、前記出力画像データを生成する複数の処理部と、前記第1の記憶領域に格納された前記ページごとの元画像データを前記処理単位ごとに前記複数の処理部に交互に転送して前記出力画像データを生成させる転送部と、前記処理単位の前記元画像データが前記処理部に転送される転送時間を導出する転送時間導出部と、前記処理部にて前記出力画像データが生成される処理時間を導出する処理時間導出部とを設ける。そして、前記転送部は、前記転送時間の前記処理時間に対する比率に基づいて、前記元画像データを前記第1の記憶領域から前記処理部に転送する第1の転送モードと、前記処理部が前記元画像データに基づき前記出力画像データを生成するときに、前記処理部に転送するための前記処理単位の前記元画像データを前記第1の記憶領域から前記第2の記憶領域に転送し、当該元画像データを前記第2の記憶領域から前記処理部に転送する第2の転送モードのいずれかを選択して実行する。
【0012】
上記側面によれば、第2の転送モードでは、仮想記憶領域にデータの退避が行われない第2の記憶領域を用いるので、データの退避が行われる第2の記憶領域を用いる第1の転送モードより、高速なデータ転送が可能となる。よって、処理部に転送される元画像データの構成や、画像処理の内容の如何に関わらず、画像出力装置の動作速度に間に合うように出力画像データを供給できる。また、前記第2の転送モードを実行するときには、前記処理部が前記元画像データに基づき前記出力画像データを生成するときに、前記処理部に転送するための前記処理単位の前記元画像データを前記第1の記憶領域から前記第2の記憶領域に転送する。よって、次の処理単位の元画像データ送信を早いタイミングで実行できるので、その分画像処理にかかる時間を短縮でき、出力画像データの供給の遅延を確実に防止できる。さらに、転送時間導出部は、前記処理単位の前記元画像データを前記処理部に転送する転送時間を導出し、処理時間導出部は、前記処理部における処理時間を導出する。よって、転送部や処理部の処理速度に応じて第1、第2の転送モードの制御が可能になるので、動作環境に依存せずに、出力画像データ供給の遅延を防止できる。
【0013】
上記側面の別の好ましい態様によれば、前記転送部は、前記比率が第1の比率のときには前記第1の転送モード、前記比率が前記第1の比率より大きい第2の比率のときには前記第2の転送モードを選択する。よって、画像処理時間におけるデータ転送時間の比率が大きい場合、つまり転送するデータ量が大きい場合には、第2の転送モードによりデータ転送時間を短縮することができ、出力画像データ供給の遅延を確実に防止できる。
【0014】
上記側面の別の好ましい態様によれば、前記転送部は、前記画像出力装置に対し複数ページの出力画像データを出力する単一のジョブを実行する間に、前記比率が閾値を上回ったときに前記第1の転送モードから第2の転送モードに切り替える。また、前記比率が前記閾値以下になったときに前記第2の転送モードから前記第1の転送モードに切り替える。よって、画像出力装置からの出力が途切れることなく、ジョブを完了することができる。
【図面の簡単な説明】
【0015】
【図1】本実施形態における画像処理装置の構成を説明する図である。
【図2】RAM20とGPU14_1、14_2との間のデータ転送を模式的に示す図である。
【図3】通常転送モードと高速転送モードを説明するシーケンス図である。
【図4】通常転送モードのシーケンスを説明する図である。
【図5】高速転送モードの処理シーケンスを説明する図である。
【図6】パーソナルコンピュータ2が印刷ジョブを実行するとき動作手順を説明するフローチャート図である。
【発明を実施するための形態】
【0016】
以下、図面にしたがって本発明の実施の形態について説明する。但し、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0017】
図1は、本実施形態における画像処理装置の構成を説明する図である。ここでは、画像処理装置は、RIPとして機能するパーソナルコンピュータ2で構成される。また、画像出力装置はプリンタ4で構成される。パーソナルコンピュータ2は、ページごとの元画像データを生成し、これに対し画像処理を行って印刷データ(出力画像データ)を生成する。そして、パーソナルコンピュータ2は、生成した印刷データをプリンタ4に供給する。プリンタ4は、たとえば、ページプリンタである。プリンタ4は、印刷データに基づいて、1ページごとの出力画像をインクやトナーにより印刷用紙に印刷する。
【0018】
パーソナルコンピュータ2の各部について説明する。
【0019】
CPU6は、ROM(Read Only Memory)8に格納された起動プログラムや、ハードディスク10に格納された制御プログラム・処理プログラムに従って動作する。制御プログラムには、オペレーティングシステムOSが含まれる。また、処理プログラムには、たとえば元画像データを生成する描画・文書作成プログラムといったアプリケーションプログラムAPPと、画像処理を行うためのプリンタドライバプログラムPDRが含まれる。
【0020】
RAM20は、CPU6が制御プログラム・処理プログラムを実行するときに、各種演算のためのデータを一時的に格納する。また、ハードディスク10は、RAM20に格納されるデータを一時的に退避させるための仮想記憶領域を有する。本実施形態では、プリンタドライバプログラムPDRに従って後述の動作を行うCPU6が「転送部」、「転送時間導出部」、及び「処理時間導出部」に、プリンタドライバプログラムPDRが「画像処理プログラム」に、RAM20が「第2の記憶部」に、ハードディスク10が「第1の記憶部」に対応する。
【0021】
CPU6は、アプリケーションプログラムAPPを実行するときに、インターフェース12を介して接続されるディスプレイ9に各種画像や文字を表示する。また、CPU6は、操作入力部7に対するユーザの操作入力を、インターフェース12を介して受け取る。かかる操作入力には、たとえば描画や文書作成、または印刷などの指示入力が含まれる。そして、CPU6は、アプリケーションプログラムAPPやプリンタドライバプログラムPDRに従って、入力に対応する処理を実行する。
【0022】
CPU6は、アプリケーションプログラムAPPにより生成した1ページごとの元画像データを、RAM20に格納する。また、後述するように、GPU14_1、14_2にて生成され、CPU6に転送される印刷データを、RAM20に格納する。そして、CPU6は、RAM20から印刷データを読み出し、インターフェース12を介してプリンタ4に転送する。
【0023】
このとき、CPU6は、RAM20の記憶領域をメイン記憶領域20_1、ページロック記憶領域20_2に分けて使用する。メイン記憶領域20_1、ページロック記憶領域20_2の使い分けの方法は、後に詳述する。メイン記憶領域20_1は、格納するデータをハードディスク10上の仮想記憶領域に退避(ページングまたはスワッピング)するための領域であり、「第1の記憶領域」に対応する。これにより、記憶容量不足が回避される。一方、ページロック記憶領域20_2は、かかるデータの退避を行わない、ページロックされた領域であり、「第2の記憶領域」に対応する。よって、ページロック記憶領域20_2では、ハードディスク10へのアクセスを伴わない分、データの読み出しが高速化される。ページロック記憶領域20_2は固定的に確保しておくことも可能であるし、状況に応じて動的に確保することも可能である。ここでは、仮想記憶領域がハードディスク10に設けられる場合を例として説明する。しかし、ハードディスク10以外でも、CPU6からのデータ読み書きの速度はRAM20より劣るものの、RAM20より大容量の記憶媒体であれば、仮想記憶領域を設けることができる。
【0024】
CPU6は、転送部として、RAM20に格納した1ページごとの元画像データを、「処理単位」ごとに、インターフェース12を介してGPU14_1、14_2に転送する。処理単位は、プリンタ4が印刷可能な画像の画素数や、GPU14_1、14_2のメモリ容量などに応じて任意に設定される。たとえば、GPU14_1、14_2のメモリ容量は一般的にRAM20より小容量であり、1ページ分の元画像データを保持できる容量を有さない。よって、処理単位は、1ページより小さい単位に設定される。
【0025】
GPU14_1、14_2は、CPU6の指示に従って、転送された元画像データに対し画像処理を行い、印刷データを生成する。すなわち、GPU14_1、14_2は、1ページ分の元画像データに対し、それぞれの使用可能なメモリ容量に応じて処理単位ごとに分担して画像処理を並列して行う。そうすることで、CPU6が単独で、あるいは単一のGPUのみで1ページ分の元画像データを処理するよりも高速に、1ページあたりの画像処理を実行できる。そして、GPU14_1、14_2は、印刷データをCPU6に転送する。GPU14_1、14_2はそれぞれ、図示を省略するが、入出力データを一時的に保持するメモリと、画像処理プログラムに従って画像処理を実行するプロセッサコアとを有する。GPU14_1、14_2では、キャッシュメモリや、分岐予測・非順次命令実行などの制御ハードウェアが省略されている。そして、浮動小数点演算に特化したプロセッサコアが並列化されることで、計算リソースが高密度に集約化されている。以下では、説明の便宜上、GPU14_1、14_2は同じ仕様のものとし、同じデータに関する転送時間や処理時間はGPU14_1、14_2の間で差がないものとする。ただし、これらが異なる場合も、本実施形態に含まれる。また、図1では、GPU14_1、14_2ともにパーソナルコンピュータ2の内部に設けられているが、GPU14_1、14_2の両方またはいずれか一方が、パーソナルコンピュータ2の外部に設けられる構成であってもよい。
【0026】
GPU14_1、14_2が行う画像処理について説明する。画像処理の内容は、元画像データの種類により異なる。元画像データが、たとえば、ベクタ形式の描画コマンドを含むポストスクリプトなどである場合、これに対する画像処理には、描画コマンドを解析し、画素ごとにRGB(レッド、グリーン、ブルー)階調値を有するRGBビットマップデータを生成する処理、RGBビットマップデータの各画素の階調値をプリンタ4の表色系、たとえばCMYK(シアン、マゼンタ、イエロー、ブラック)階調値に変換してCMYKビットマップデータを生成する色変換処理、CMYKビットマップデータをプリンタ4の印刷解像度に合わせて二値化するハーフトーン処理、および、ハーフトーン処理されたビットマップデータに基づき、プリンタ4における主走査時のドットの記録状態を示すラスタデータと副走査送り量とを有する印刷データを生成する処理などが含まれる。また、元画像データがビットマップデータである場合、これに対する画像処理は、色変換またはハーフトーン処理、及び印刷データの生成処理が含まれる。いずれの場合も、最終的に印刷データが生成されるような画像処理が実行される。
【0027】
次に、プリンタ4について詳細に説明する。プリンタ4では、CPU23がROM25に格納された制御プログラムに従って、印刷動作を統合的に制御する。また、CPU23は、パーソナルコンピュータ2から転送される印刷データをインターフェース22を介して受け取り、RAM24にスプールする。RAM24は、たとえば1または複数ページの印刷データを格納できるページバッファである。そして、CPU23は、RAM24から読み出した印刷データを印刷エンジン26に供給する。印刷エンジン26は、出力画像を構成する画素ごとにインクやトナーなどの記録材でドットを形成し、印刷用紙に出力画像を印刷する。
【0028】
なお、プリンタ4以外にも、たとえばプロジェクタにより画像出力装置を構成することも可能である。その場合、プロジェクタは、出力画像画像を構成する画素ごとに、その階調値に応じた色の光を照射して、出力画像を投影出力する。
【0029】
本実施形態の変形例では、パーソナルコンピュータ2は、インターフェース12により接続される外部記憶装置から元画像データを取得してもよい。外部記憶装置は、CD―ROM(Compact Disk ROM)ドライブユニット、MO(Magneto Optic)ドライブユニット、FD(Floppy(登録商標)Disk)ドライブユニット、USB(Universal Serial Bus)インターフェースにより構成され、CD、MO、FDなどの記憶媒体、あるいはUSBメモリなどから元画像データを読み取る。
【0030】
さらに別の変形例では、パーソナルコンピュータ2は他の情報処理装置から元画像データを取得する。たとえば、パーソナルコンピュータ2は、ネットワーク環境におけるプリンタサーバを構成する。その場合の構成は、破線で図示される。パーソナルコンピュータ2は、ネットワークインターフェース13によりLAN(Local Area Network)などのネットワーク40に接続される。ネットワーク40には、他のパーソナルコンピュータ42が接続される。他のパーソナルコンピュータ42は、アプリケーションプログラムにより生成した元画像データや記憶媒体から読みとった元画像データを、ネットワーク40を介してパーソナルコンピュータ2に転送する。ここで、複数の他のパーソナルコンピュータ42がパーソナルコンピュータ2に元画像データを転送することももちろん可能である。あるいは、ネットワーク40を介さずに、パーソナルコンピュータ2と他のパーソナルコンピュータ42とがピアツーピアで接続される構成も可能である。
【0031】
パーソナルコンピュータ2では、CPU6が、他のパーソナルコンピュータ42から転送された元画像データをネットワークインターフェース13、インターフェース12を介して受け取り、RAM20に格納する。そして、上述のように、元画像データをGPU14_1、14_2に転送して画像処理させる。この場合、元画像データは、描画コマンド、RGBビットマップデータ、CMYKビットマップデータ、ハーフトーン処理されたビットマップデータのいずれでもよい。それぞれの場合に応じ、GPU14_1、14_2では、最終的に印刷データを生成するような画像処理が行われる。
【0032】
ここで、画像処理の際の、RAM20とGPU14_1、14_2との間のデータ転送について説明する。本実施形態では、2つの転送モードが実行される。
【0033】
図2は、RAM20とGPU14_1、14_2との間のデータ転送を模式的に示す図である。図2(A)は「第1の転送モード」(以下、通常転送モードという)に対応し、図2(B)は「第2の転送モード」(以下、高速転送モードという)に対応する。
【0034】
まず通常転送モードについて説明する。図2(A)に示すように、CPU6は、生成され、または他のコンピュータ42から転送された1ページ分の元画像データGDを、まずRAM20のメイン記憶領域20_1に格納する。そして、CPU6は、元画像データGDを、処理単位ごとにGPU14_1、14_2に転送する。ここで、元画像データGD_1はGPU14_1用の処理単位、元画像データGD_2はGPU14_2用の処理単位に対応する。すなわち、CPU6は、元画像データGD_1をGPU14_1に転送し(M2)、元画像データGD_2をGPU14_2に転送する(M4)。
【0035】
すると、GPU14_1は画像処理を行って印刷データPD_1を生成し、CPU6に転送するので、CPU6はこれをメイン記憶領域20_1に格納する(M6)。一方、GPU14_2は画像処理を行って印刷データPD_2を生成しCPU6に転送するので、CPU6はこれをメイン記憶領域20_1に格納する(M8)。このような動作が1ページ分の元画像データGDのすべてに対し実行されることで、1ページ分の印刷データPDが生成される。
【0036】
次に、高速転送モードについて説明する。図2(B)に示すように、CPU6は、RAM20のメイン記憶領域20_1に格納された1ページ分の元画像データGDを、処理単位ごとにページロック記憶領域20_2に転送(または複製)して格納する。ここで、ページロック記憶領域20_2は、GPU14_1用の第1ページロック記憶領域20_21と、GPU14_2用の第2記憶領域20_22とに区分されて使用される。よって、GPU14_1用の元画像データGD_1は第1ページロック記憶領域20_21に格納され(M10)、GPU14_2用の元画像データGD_2は第2ページロック記憶領域20_22に格納される(M12)。
【0037】
そして、CPU6は、第1ページロック記憶領域20_21から元画像データGD_1を読み出してGPU14_1に転送し(M14)、第2ページロック記憶領域20_22から元画像データGD_2を読み出してGPU14_2に転送する(M16)。
【0038】
すると、GPU14_1は画像処理を行って印刷データPD_1を生成しCPU6に転送するので、CPU6はこれを第1ページロック記憶領域20_21に格納する(M18)。一方、GPU14_2は画像処理を行って印刷データPD_2を生成しCPU6に転送するので、CPU6はこれを第2ページロック記憶領域20_22に格納する(M20)。
【0039】
そして、CPU6は、ページロック記憶領域20_2から印刷データPD_1、PD_2を読み出し、印刷データPD_1、PD_2をメイン記憶領域20_1に転送(または複製)して格納する(M22、M24)。このような動作が1ページ分の元画像データGDのすべてに対し実行されることで、1ページ分の印刷データPDが生成される。
【0040】
図3は、通常転送モード、高速転送モードにおける動作手順を説明するシーケンス図である。ここでは、説明を明確にする便宜上、GPU14_1のみに対するデータ転送を例として説明する。ただし、ここにおける説明はGPU14_2についても適用される。
【0041】
通常転送モードに対応する図3(A)には、横軸の時間軸に対し、処理単位ごとに、RAM20のメイン記憶領域20_1からGPU14_1へのデータ転送シーケンス(1)、GPU14_1からメイン記憶領域20_1へのデータ転送シーケンス(2)、及びGPU14_1における画像処理シーケンス(3)が示される。図3(A)に示すように、通常転送モードでは、1つの処理単位に関し、メイン記憶領域20_1からGPU14_1へのデータ転送シーケンス(1)、GPU14_1における画像処理シーケンス(3)、GPU14_1からメイン記憶領域20_1へのデータ転送シーケンス(2)の順で実行され、これが繰り返される。
【0042】
高速転送モードに対応する図3(B)には、横軸の時間軸に対し、処理単位ごとに、メイン記憶領域20_1から第1ページロック記憶領域20_21へのデータ転送シーケンス(1)、第1ページロック記憶領域20_21からGPU14_1へのデータ転送シーケンス(2)、GPU14_1から第1ページロック記憶領域20_21へのデータ転送シーケンス(3)、第1ページロック記憶領域20_21からメイン記憶領域20_1へのデータ転送シーケンス(4)、及びGPU14_1における画像処理シーケンス(5)が示される。図3(B)に示すように、高速転送モードでは、1つの処理単位に関し、メイン記憶領域20_1から第1ページロック記憶領域20_21へのデータ転送シーケンス(1)、第1ページロック記憶領域20_21からGPU14_1へのデータ転送シーケンス(2)、GPU14_1における画像処理シーケンス(5)、GPU14_1から第1ページロック記憶領域20_21へのデータ転送シーケンス(3)、第1ページロック記憶領域20_21からメイン記憶領域20_1へのデータ転送シーケンス(4)の順で実行され、これが繰り返される。
【0043】
ここで、高速転送モードでは、仮想記憶領域にページングを行わない、ページロックされた第1ページロック記憶領域20_21を用いてGPU14_1とのデータ転送を行うので、仮想記憶領域にページングを行うメイン記憶領域20_1からGPU14_1にデータ転送を行う通常転送モードより、データ読み出しを速く行うことができる。よって、データ転送時間が短縮される。
【0044】
さらに、図3(B)に示すように、1つの処理単位についてGPU14_1での画像処理が行われるときに、元画像データの次の処理単位をメイン記憶領域20_1から第1ページロック記憶領域20_21に転送する((1)において矢印A1で指し示す)。また、第1ページロック記憶領域20_21に一旦格納した印刷データは、次の処理単位に関しGPU14_1での画像処理が行われるときに、メイン記憶領域20_1に転送する((4)において矢印A2で指し示す)。よって、生成された印刷データがGPU14_1から転送されたときに、即座に元画像データの次の処理単位の転送を開始できる。よって、全体としての画像処理時間を通常転送モードより短縮することができ、元画像データのデータ量が増大して転送時間が長くなったとしても、プリンタ4に遅延なく印刷データを供給することができる。
【0045】
次に、GPU14_1、14_2を並列で動作させる場合の、通常転送モード、高速転送モードについて説明する。
【0046】
図4は、通常転送モードのシーケンスを説明する図である。図4(A)、(B)には、横軸の時間軸に対し、処理単位ごとに、RAM20のメイン記憶領域20_1からGPU14_1、へのデータ転送シーケンス(1)、GPU14_1からメイン記憶領域20_1へのデータ転送シーケンス(2)、及びGPU14_1における画像処理シーケンス(3)が示され、さらに、RAM20のメイン記憶領域20_1からGPU14_2へのデータ転送シーケンス(1´)、GPU14_2からメイン記憶領域20_1へのデータ転送シーケンス(2´)、及びGPU14_2における画像処理シーケンス(3´)が示される。ここでは、RAM20のメイン記憶領域20_1からGPU14_1へのデータ転送と、GPU14_1からRAM20のメイン記憶領域20_1へのデータ転送とが、GPU14_2における画像処理と重複するように実行される。それとともに、RAM20のメイン記憶領域20_1からGPU14_2へのデータ転送と、GPU14_2からRAM20のメイン記憶領域20_1へのデータ転送とが、GPU14_1における画像処理と重複するように実行される。
【0047】
図4(A)は、特に、データ転送時間が画像処理時間以下の場合を示す。ここでは、GPU14_2における画像処理時間T24に、メイン記憶領域20_1からGPU14_1へのデータ転送時間T11と、GPU14_1からメイン記憶領域20_1へのデータ転送時間T12との合計T13が含まれる。一方では、GPU14_1における画像処理時間T14に、メイン記憶領域20_1からGPU14_2へのデータ転送時間T21と、GPU14_2からメイン記憶領域20_1へのデータ転送時間T22との合計T23が含まれる。このようにすることで、GPU14_1、14_2の待ち時間が最小限となり、全体としての処理時間が短縮される。また、データバスの負荷が分散される。
【0048】
また、図4(B)はデータ転送時間が処理時間より大きい場合を示す。ここでは、メイン記憶領域20_1からGPU14_1へのデータ転送時間T11と、GPU14_1からメイン記憶領域20_1へのデータ転送時間T12の合計時間T13に、GPU14_2における画像処理時間T24が含まれる。一方では、メイン記憶領域20_1からGPU14_2へのデータ転送時間T21と、GPU14_2からメイン記憶領域20_1へのデータ転送時間T22の合計時間T23に、GPU14_1における画像処理時間T14が含まれる。このようにすることで、CPU6の待ち時間が最小限となる。よって、全体としての処理時間が短縮される。また、データバスの負荷が分散される。
【0049】
ここで、元画像データの種類とデータ転送時間の関係に着目すると、元画像データがベクタ形式などの描画コマンドである場合より、ビットマップデータである場合の方が、データ量が大きく、したがってデータ転送時間が長くなる。一方、画像処理時間は、描画コマンドに基づいてビットマップデータを生成し、さらに色変換等の処理を行う場合より、ビットマップデータに対し色変換等の変換処理から行う場合の方が処理負荷が小さく、処理時間が短くなる。すなわち、データ転送時間と画像処理時間との関係は、元画像データのデータ量が小さい場合には、データ転送時間が短い一方で画像処理時間が長く、元画像データのデータ量が大きい場合には、データ転送時間が長い一方で画像処理時間が短いという関係が概ね成り立つ。
【0050】
図4(B)では、GPU14_1、14_2に関し、一方へのデータ転送と他方での画像処理を重複させることで処理を高速化している。しかし、たとえば1つの印刷ジョブにおいてページごとに元画像データが異なるような場合に、転送されるデータ量が途中から増大し、画像処理時間の割に転送時間が長くなってくると、画像処理時間内にデータ転送が終了しないおそれが生じる。かかる場合には、次に述べる高速転送モードの方が、転送時間を短縮することができ有利である。
【0051】
図5は、高速転送モードの処理シーケンスを説明する図である。横軸の時間軸に対し、処理単位ごとに、メイン記憶領域20_1から第1ページロック記憶領域20_21へのデータ転送シーケンス(1)、第1ページロック記憶領域20_21からGPU14_1へのデータ転送シーケンス(2)、GPU14_1から第1ページロック記憶領域20_21へのデータ転送シーケンス(3)、第1ページロック記憶領域20_21からメイン記憶領域20_1へのデータ転送シーケンス(4)、及びGPU14_1における画像処理シーケンス(5)が示され、さらに、メイン記憶領域20_1から第2ページロック記憶領域20_22へのデータ転送シーケンス(1´)、第2ページロック記憶領域20_22からGPU14_2へのデータ転送シーケンス(2´)、GPU14_2から第2ページロック記憶領域20_22へのデータ転送シーケンス(3´)、第2ページロック記憶領域20_22からメイン記憶領域20_1へのデータ転送シーケンス(4´)、及びGPU14_2における画像処理シーケンス(5´)が示される。
【0052】
ここでは、メイン記憶領域20_1から第1ページロック記憶領域20_21へのデータ転送時間T15と、第1ページロック記憶領域20_21からGPU14_1へのデータ転送時間T16と、GPU14_1から第1ページロック記憶領域20_21へのデータ転送時間T17の合計が、GPU14_2における画像処理時間T24に含まれるように、データ転送が実行される。一方では、メイン記憶領域20_1から第2ページロック記憶領域20_22へのデータ転送時間T25と、第2ページロック記憶領域20_22からGPU14_2へのデータ転送時間T26と、GPU14_2から第2ページロック記憶領域20_22へのデータ転送時間T27の合計が、GPU14_1における画像処理時間T14に含まれるように、データ転送が実行される。このようにすることで、データ転送時間が短縮することに加え、CPU6、及びGPU14_1、14_2の待ち時間が最小限となり、全体としての画像処理時間が短縮される。よって、転送されるデータ量が増大した場合であっても、画像処理時間内にデータ転送を実行でき、印刷データ供給の遅延を防止することができる。また、データバスの負荷が軽減される。
【0053】
次に、通常転送モード、高速転送モードの切替えについて説明する。上述したように、データ転送時間と画像処理時間との関係は、元画像データのデータ量が小さい場合には、データ転送時間が短い一方で画像処理時間が長く、元画像データのデータ量が大きい場合には、データ転送時間が長い一方で画像処理時間が短くなるという関係が概ね成り立つ。このことに着目し、本実施形態では、通常転送モードと高速転送モードを、元画像データをGPU14_1、14_2に転送する転送時間の、GPU14_1、14_2での画像処理時間に対する比率に基づいて切り替える。そうすることで、印刷データの供給速度を所望の速度以上に保ち、プリンタ4の印刷速度に間に合うように印刷データを供給することを可能にする。
【0054】
図6は、パーソナルコンピュータ2が印刷ジョブを実行するときの動作手順を説明するフローチャート図である。図6の手順は、CPU6とGPU14_1、14_2における動作手順を示す。
【0055】
CPU6は、印刷開始の指示が入力され、または他のパーソナルコンピュータから印刷開始の指示が送られると(S2)、通常転送モードに設定して(S3)画像処理を開始する。
【0056】
CPU6は、通常転送モードにより、元画像データを処理単位ごとにGPU14_1、14_2に転送し、画像処理を指示する(S4)。
【0057】
GPU14_1、14_2は、元画像データと画像処理の指示を受け取ると(S6)、これに応答して画像処理を行い(S8)、印刷データを生成する。そして、GPU14_1、14_2は、印刷データをCPU6に転送する(S10)。
【0058】
この間、CPU6は、手順S4を実行するときにタイマを動作させ、転送完了後にデータ転送に要した時間を計測する(S11)。そして、CPU6は、印刷データを受け取って(S12)、元画像データの転送後からの経過時間を計測して、GPU14_1、14_2での画像処理時間を計測する(S13)。ここで、印刷データのデータ量は、プリンタ4で印刷可能な画像の画素数や、GPU14_1、14_2の処理能力に応じて予め導出される。よって、印刷データの転送時間も予め計算により導出される。ここにおいて、元画像データ、印刷データの転送時間を導出するCPU6が、転送時間導出部に対応する。また、画像処理時間は、元画像データ転送後からの経過時間から、印刷データの転送時間を減算することで導出される。ここにおいて、画像処理時間を導出するCPU6が、処理時間導出部に対応する。
【0059】
次に、CPU6は、転送対処理時間比率((元画像データの転送時間+印刷データの転送時間)/画像処理時間)が、所定の閾値を上回っている場合には(S14のYES)、高速転送モードに設定して(S15)処理を続行する。この場合、データ転送時間が画像処理時間に対して大きくなっており、元画像データのデータ量が増大したことを意味する。そこで、高速転送モードに切り替えることで、印刷データの供給が遅延することを防止する。ここにおいて、判断のための閾値は、印刷データの供給が遅延する蓋然性が高くなることが想定されるような閾値を実験や計算により求め、任意に設定することができる。また、転送対処理時間比率を、(元画像データの転送時間/画像処理時間)としてもよい。
【0060】
一方、転送対処理時間比率が所定の閾値以下の場合には(S14のNO)、通常転送モードのまま処理を続行する。ここで、高速転送モードを実行するときにはページロック記憶領域20_2をRAM20に確保し、通常転送モードを実行するときにはこれを解放するような制御を実行することが可能である。そうすることですることで、ページロックされたページロック記憶領域20_2によりRAM20の記憶領域を圧迫することを回避することができる。よって、CPU20が他の制御プログラムや処理プログラムを実行しているようなときに、RAM20を効率的に使用することができ、処理効率低下を防止できる。また、他のパーソナルコンピュータ2がネットワーク上のプリンタサーバを構成し、ネットワーク上の複数のパーソナルコンピュータ42から元画像データが送信される場合であっても、RAM20の記憶領域を有効に使用することができる。
【0061】
CPU6は、1ページ分の印刷データが蓄積されるまで手順S4〜S15を繰り返し(S16のNO)、1ページ分の印刷データが蓄積されたときに(S16のYES)、これをプリンタ4に出力する(S17)。なお、手順S16において判断の基準となるページ数は、RAM20の要領に応じて任意に設定される複数ページであってもよい。そうすることで、パーソナルコンピュータ2側でも印刷データをスプールすることができる。
【0062】
そして、CPU6は、最後のページに対する処理が終了するまで上記手順S4〜S17を繰り返し(S18のNO)、最後のページに対する処理が終了すると(S18のYES)本処理を終了する。
【0063】
上記の手順によれば、1つの印刷ジョブの途中でも通常転送モード高速転送モードを切り替えることができる。これにより、ページごと、あるいは処理単位ごとに画像の構成が異なり、したがって元画像データの転送時間が異なるような場合であっても、データ転送時間が増加することで印刷データの供給が遅れることを防止できる。よって、プリンタ4から白紙が出力されたり、プリンタ4の印刷を一旦停止させたりといったことを回避でき、印刷が遅延することを防止できる。
【0064】
本実施形態によれば、パーソナルコンピュータごとにCPUやGPUの処理性能が異なり、データ転送時間や画像処理時間が異なる場合であっても、これらの比率により通常転送モード高速転送モードを切り替えるので、動作環境に依存することなく上述の効果が得られる。
【0065】
また、上述の説明は、2つのGPUを用いて画像処理を行う場合を例とした。しかしながら、3つ以上のGPUを用いて画像処理を行う場合であっても、本実施形態が適用できる。
【0066】
以上、説明したとおり、本実施形態によれば、GPUに転送される元画像データの画像の構成や画像処理の内容の如何に関わらず、画像出力装置の動作速度に間に合うように出力画像データを供給することが可能となる。
【符号の説明】
【0067】
2:パーソナルコンピュータ 4:プリンタ 6:CPU 14_1、14_2:GPU
20:RAM 20_1:メイン記憶領域 20_2:ページロック記憶領域

【特許請求の範囲】
【請求項1】
ページごとの元画像データに基づいて画像出力装置用の出力画像データを生成する画像処理装置において、
仮想記憶領域を有する第1の記憶部と、
格納されるデータが前記仮想記憶領域に退避される第1の記憶領域と、前記退避がされない第2の記憶領域とを有し、前記第1の記憶部よりデータの読み書きの速度が速い第2の記憶部と、
前記ページごとの元画像データを前記ページより小さい処理単位で処理し、前記出力画像データを生成する複数の処理部と、
前記第1の記憶領域に格納された前記ページごとの元画像データを前記処理単位ごとに前記複数の処理部に交互に転送して前記出力画像データを生成させる転送部と、
前記処理単位の前記元画像データが前記処理部に転送される転送時間を導出する転送時間導出部と、
前記処理部にて前記出力画像データが生成される処理時間を導出する処理時間導出部とを有し、
前記転送部は、前記転送時間の前記処理時間に対する比率に基づいて、前記元画像データを前記第1の記憶領域から前記処理部に転送する第1の転送モードと、前記処理部が前記元画像データに基づき前記出力画像データを生成するときに、前記処理部に転送するための前記処理単位の前記元画像データを前記第1の記憶領域から前記第2の記憶領域に転送し、当該元画像データを前記第2の記憶領域から前記処理部に転送する第2の転送モードのいずれかを選択して実行することを特徴とする画像処理装置。
【請求項2】
請求項1において、
前記転送部は、前記比率が第1の比率のときには前記第1の転送モード、前記比率が前記第1の比率より大きい第2の比率のときには前記第2の転送モードを選択することを特徴とする画像処理装置。
【請求項3】
請求項1または2において、
前記転送部は、前記画像出力装置に対し複数ページの出力画像データを出力する単一のジョブを実行する間に、前記比率が閾値を上回ったときに前記第1の転送モードから第2の転送モードに切り替えることを特徴とする画像処理装置。
【請求項4】
請求項3において、
前記転送部は、前記単一のジョブを実行する間に、前記比率が前記閾値以下になったときに前記第2の転送モードから前記第1の転送モードに切り替えることを特徴とする画像処理装置。
【請求項5】
画像処理装置に、ページごとの元画像データに基づいて画像出力装置用の出力画像データを生成させる画像処理プログラムにおいて、
前記画像処理装置が、
仮想記憶領域を有する第1の記憶部と、
格納されるデータが前記仮想記憶領域に退避される第1の記憶領域と、前記退避がされない第2の記憶領域とを有し、前記第1の記憶部よりデータの読み書きの速度が速い第2の記憶部と、
前記ページごとの元画像データを前記ページより小さい処理単位で処理し、前記出力画像データを生成する複数の処理部とを有し、
前記第1の記憶領域に格納されたページごとの元画像データを前記処理単位ごとに前記複数の処理部に交互に転送して前記出力画像データを生成させる転送手順と、
前記処理単位の前記元画像データが前記処理部に転送される転送時間を導出する手順と、
前記処理部にて前記出力画像データが生成される処理時間を導出する手順とを前記画像処理装置に実行させ、
前記転送手順では、前記転送時間の前記処理時間に対する比率に基づいて、前記元画像データを前記第1の記憶領域から前記処理部に転送する第1の転送モードと、前記処理部が前記元画像データに基づき前記出力画像データを生成するときに、前記処理部に転送するための前記処理単位の前記元画像データを前記第1の記憶領域から前記第2の記憶領域に転送し、当該元画像データを前記第2の記憶領域から前記処理部に転送する第2の転送モードのいずれかを選択して実行することを特徴とする画像処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2011−204052(P2011−204052A)
【公開日】平成23年10月13日(2011.10.13)
【国際特許分類】
【出願番号】特願2010−71361(P2010−71361)
【出願日】平成22年3月26日(2010.3.26)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】