(57)【特許請求の範囲】
【請求項１】
ページごとの元画像データに基づいて画像出力装置用の出力画像データを生成する画像処理装置において、
仮想記憶領域を有する第１の記憶部と、
格納されるデータが前記仮想記憶領域に退避される第１の記憶領域と、前記退避がされない第２の記憶領域とを有し、前記第１の記憶部よりデータの読み書きの速度が速い第２の記憶部と、
前記ページごとの元画像データを前記ページより小さい処理単位で処理し、前記出力画像データを生成する複数の処理部と、
前記第１の記憶領域に格納された前記ページごとの元画像データを前記処理単位ごとに前記複数の処理部に交互に転送して前記出力画像データを生成させる転送部と、
前記処理単位の前記元画像データが前記処理部に転送される転送時間を導出する転送時間導出部と、
前記処理部にて前記出力画像データが生成される処理時間を導出する処理時間導出部とを有し、
前記転送部は、前記転送時間の前記処理時間に対する比率に基づいて、前記元画像データを前記第１の記憶領域から前記処理部に転送する第１の転送モードと、前記処理部が前記元画像データに基づき前記出力画像データを生成するときに、前記処理部に転送するための前記処理単位の前記元画像データを前記第１の記憶領域から前記第２の記憶領域に転送し、当該元画像データを前記第２の記憶領域から前記処理部に転送する第２の転送モードのいずれかを選択して実行することを特徴とする画像処理装置。
【請求項２】
請求項１において、
前記転送部は、前記比率が第１の比率のときには前記第１の転送モード、前記比率が前記第１の比率より大きい第２の比率のときには前記第２の転送モードを選択することを特徴とする画像処理装置。
【請求項３】
請求項１または２において、
前記転送部は、前記画像出力装置に対し複数ページの出力画像データを出力する単一のジョブを実行する間に、前記比率が閾値を上回ったときに前記第１の転送モードから第２の転送モードに切り替えることを特徴とする画像処理装置。
【請求項４】
請求項３において、
前記転送部は、前記単一のジョブを実行する間に、前記比率が前記閾値以下になったときに前記第２の転送モードから前記第１の転送モードに切り替えることを特徴とする画像処理装置。
【請求項５】
画像処理装置に、ページごとの元画像データに基づいて画像出力装置用の出力画像データを生成させる画像処理プログラムにおいて、
前記画像処理装置が、
仮想記憶領域を有する第１の記憶部と、
格納されるデータが前記仮想記憶領域に退避される第１の記憶領域と、前記退避がされない第２の記憶領域とを有し、前記第１の記憶部よりデータの読み書きの速度が速い第２の記憶部と、
前記ページごとの元画像データを前記ページより小さい処理単位で処理し、前記出力画像データを生成する複数の処理部とを有し、
前記第１の記憶領域に格納されたページごとの元画像データを前記処理単位ごとに前記複数の処理部に交互に転送して前記出力画像データを生成させる転送手順と、
前記処理単位の前記元画像データが前記処理部に転送される転送時間を導出する手順と、
前記処理部にて前記出力画像データが生成される処理時間を導出する手順とを前記画像処理装置に実行させ、
前記転送手順では、前記転送時間の前記処理時間に対する比率に基づいて、前記元画像データを前記第１の記憶領域から前記処理部に転送する第１の転送モードと、前記処理部が前記元画像データに基づき前記出力画像データを生成するときに、前記処理部に転送するための前記処理単位の前記元画像データを前記第１の記憶領域から前記第２の記憶領域に転送し、当該元画像データを前記第２の記憶領域から前記処理部に転送する第２の転送モードのいずれかを選択して実行することを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、元画像データに基づいて出力画像データを生成する画像処理装置等に関し、特に、前記元画像データを処理単位ごとに複数の処理部にて処理し、前記出力画像データを生成する画像処理装置等に関する。
【背景技術】
【０００２】
画像処理装置の一例として、ＲＩＰ（Raster Image Processor）として機能するパーソナルコンピュータ（ここではＲＩＰ−ＰＣという）が知られている。かかるＲＩＰ−ＰＣは、描画コマンドやビットマップ画像データなどの元画像データに対し画像処理を行い、プリンタ（画像出力装置）に供給する印刷データ（出力画像データ）を生成する。画像処理には、描画コマンドに基づきビットマップデータを生成する処理や、ビットマップデータの色や解像度を変換する各種変換処理が含まれる。
【０００３】
ＲＩＰ−ＰＣがプリンタに印刷データを供給する速度は、ＲＩＰ−ＰＣ内のプロセッサの処理速度やメモリに対するデータ読み書きの速度に依存する。近年では、ページ単位の印刷が可能になるなど、プリンタの印刷速度が向上している。これに伴い、印刷データの供給速度の向上が要望されている。
【０００４】
かかる要望に応えるために、画像処理用のプロセッサを並列化する方法が提案されている。特許文献１、２には、並列化された画像処理プロセッサについて記載されている。ＲＩＰ−ＰＣにおいては、ＣＰＵ（Central Processing Unit）に加え、複数のＧＰＵ（Graphic Processing Unit）を並列動作可能に設けた構成が知られている。かかるＲＩＰ−ＰＣでは、ＣＰＵが、たとえば１ページ分の元画像データを所定の処理単位ごとに分割して各ＧＰＵに供給し、各ＧＰＵに画像処理を行わせて印刷データを生成させる。そして、各ＧＰＵが生成した印刷データを収集し、１ページ分の印刷データをプリンタに供給する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−２６６２０１号公報
【特許文献２】特開２００２−２０７７１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上記のＲＩＰ−ＰＣにおける画像処理では、ＲＩＰ−ＰＣのメモリから各ＧＰＵへの元画像データの転送時間と、各ＧＰＵにおける処理時間と、各ＧＰＵからメモリへの印刷データの転送時間とが発生する。
【０００７】
ここで、元画像データと印刷データとの転送時間をみてみる。データ転送時間は転送されるデータ量に依存するところ、印刷データのデータ量はプリンタが出力可能な画像の画素数に依存して一定であるので、その転送時間はある程度一定している。これに対し、元画像データのデータ量は元画像の構成により異なるので、元画像の構成に応じて元画像データの転送時間には差が生じる。
【０００８】
また、各ＧＰＵにおける画像処理時間をみてみると、処理内容により差が生じる。たとえば描画コマンドに基づく元画像データから印刷データを生成する処理の方が、ビットマップデータなどの元画像データから印刷データを生成する処理より処理内容が多いので、処理時間が長くなる。
【０００９】
すると、１ページあたりのデータ転送時間とＧＰＵの画像処理時間の合計がプリンタの印刷所要時間以下であるうちは、余裕をもってプリンタに印刷データを供給できる。しかし、元画像データの転送時間が増大したり、画像処理の負荷が増大したりすることで、データ転送時間と画像処理時間の合計が印刷所要時間を上回るようになると、プリンタの印刷速度に合わせて印刷データを供給できなくなる。すると、複数ページを連続して印刷するようなジョブを実行する場合に、印刷データが供給されずにプリンタから白紙が出力されるといった不都合が生じる。あるいは、これを避けるために、ＲＩＰ−ＰＣのメモリやプリンタ内のメモリに、印刷データをある程度スプールしておくことがある。そして、スプールされた印刷データ量がある程度減少したときに、プリンタを停止させることも可能である。しかし、これは印刷遅延につながるおそれがある。
【００１０】
そこで、本発明の目的は、ＧＰＵに転送される元画像データの構成や、画像処理の内容の如何に関わらず、画像出力装置の動作速度に間に合うように出力画像データを供給できる画像処理装置等を提供することにある。
【課題を解決するための手段】
【００１１】
上記の目的を達成するために、本発明の第１の側面によれば、ページごとの元画像データに基づいて画像出力装置用の出力画像データを生成する画像処理装置において、仮想記憶領域を有する第１の記憶部と、格納されるデータが前記仮想記憶領域に退避される第１の記憶領域と、前記退避がされない第２の記憶領域とを有し、前記第１の記憶部よりデータの読み書きの速度が速い第２の記憶部と、前記ページごとの元画像データを前記ページより小さい処理単位で処理し、前記出力画像データを生成する複数の処理部と、前記第１の記憶領域に格納された前記ページごとの元画像データを前記処理単位ごとに前記複数の処理部に交互に転送して前記出力画像データを生成させる転送部と、前記処理単位の前記元画像データが前記処理部に転送される転送時間を導出する転送時間導出部と、前記処理部にて前記出力画像データが生成される処理時間を導出する処理時間導出部とを設ける。そして、前記転送部は、前記転送時間の前記処理時間に対する比率に基づいて、前記元画像データを前記第１の記憶領域から前記処理部に転送する第１の転送モードと、前記処理部が前記元画像データに基づき前記出力画像データを生成するときに、前記処理部に転送するための前記処理単位の前記元画像データを前記第１の記憶領域から前記第２の記憶領域に転送し、当該元画像データを前記第２の記憶領域から前記処理部に転送する第２の転送モードのいずれかを選択して実行する。
【００１２】
上記側面によれば、第２の転送モードでは、仮想記憶領域にデータの退避が行われない第２の記憶領域を用いるので、データの退避が行われる第２の記憶領域を用いる第１の転送モードより、高速なデータ転送が可能となる。よって、処理部に転送される元画像データの構成や、画像処理の内容の如何に関わらず、画像出力装置の動作速度に間に合うように出力画像データを供給できる。また、前記第２の転送モードを実行するときには、前記処理部が前記元画像データに基づき前記出力画像データを生成するときに、前記処理部に転送するための前記処理単位の前記元画像データを前記第１の記憶領域から前記第２の記憶領域に転送する。よって、次の処理単位の元画像データ送信を早いタイミングで実行できるので、その分画像処理にかかる時間を短縮でき、出力画像データの供給の遅延を確実に防止できる。さらに、転送時間導出部は、前記処理単位の前記元画像データを前記処理部に転送する転送時間を導出し、処理時間導出部は、前記処理部における処理時間を導出する。よって、転送部や処理部の処理速度に応じて第１、第２の転送モードの制御が可能になるので、動作環境に依存せずに、出力画像データ供給の遅延を防止できる。
【００１３】
上記側面の別の好ましい態様によれば、前記転送部は、前記比率が第１の比率のときには前記第１の転送モード、前記比率が前記第１の比率より大きい第２の比率のときには前記第２の転送モードを選択する。よって、画像処理時間におけるデータ転送時間の比率が大きい場合、つまり転送するデータ量が大きい場合には、第２の転送モードによりデータ転送時間を短縮することができ、出力画像データ供給の遅延を確実に防止できる。
【００１４】
上記側面の別の好ましい態様によれば、前記転送部は、前記画像出力装置に対し複数ページの出力画像データを出力する単一のジョブを実行する間に、前記比率が閾値を上回ったときに前記第１の転送モードから第２の転送モードに切り替える。また、前記比率が前記閾値以下になったときに前記第２の転送モードから前記第１の転送モードに切り替える。よって、画像出力装置からの出力が途切れることなく、ジョブを完了することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態における画像処理装置の構成を説明する図である。
【図２】ＲＡＭ２０とＧＰＵ１４＿１、１４＿２との間のデータ転送を模式的に示す図である。
【図３】通常転送モードと高速転送モードを説明するシーケンス図である。
【図４】通常転送モードのシーケンスを説明する図である。
【図５】高速転送モードの処理シーケンスを説明する図である。
【図６】パーソナルコンピュータ２が印刷ジョブを実行するとき動作手順を説明するフローチャート図である。
【発明を実施するための形態】
【００１６】
以下、図面にしたがって本発明の実施の形態について説明する。但し、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１７】
図１は、本実施形態における画像処理装置の構成を説明する図である。ここでは、画像処理装置は、ＲＩＰとして機能するパーソナルコンピュータ２で構成される。また、画像出力装置はプリンタ４で構成される。パーソナルコンピュータ２は、ページごとの元画像データを生成し、これに対し画像処理を行って印刷データ（出力画像データ）を生成する。そして、パーソナルコンピュータ２は、生成した印刷データをプリンタ４に供給する。プリンタ４は、たとえば、ページプリンタである。プリンタ４は、印刷データに基づいて、１ページごとの出力画像をインクやトナーにより印刷用紙に印刷する。
【００１８】
パーソナルコンピュータ２の各部について説明する。
【００１９】
ＣＰＵ６は、ＲＯＭ（Read Only Memory）８に格納された起動プログラムや、ハードディスク１０に格納された制御プログラム・処理プログラムに従って動作する。制御プログラムには、オペレーティングシステムＯＳが含まれる。また、処理プログラムには、たとえば元画像データを生成する描画・文書作成プログラムといったアプリケーションプログラムＡＰＰと、画像処理を行うためのプリンタドライバプログラムＰＤＲが含まれる。
【００２０】
ＲＡＭ２０は、ＣＰＵ６が制御プログラム・処理プログラムを実行するときに、各種演算のためのデータを一時的に格納する。また、ハードディスク１０は、ＲＡＭ２０に格納されるデータを一時的に退避させるための仮想記憶領域を有する。本実施形態では、プリンタドライバプログラムＰＤＲに従って後述の動作を行うＣＰＵ６が「転送部」、「転送時間導出部」、及び「処理時間導出部」に、プリンタドライバプログラムＰＤＲが「画像処理プログラム」に、ＲＡＭ２０が「第２の記憶部」に、ハードディスク１０が「第１の記憶部」に対応する。
【００２１】
ＣＰＵ６は、アプリケーションプログラムＡＰＰを実行するときに、インターフェース１２を介して接続されるディスプレイ９に各種画像や文字を表示する。また、ＣＰＵ６は、操作入力部７に対するユーザの操作入力を、インターフェース１２を介して受け取る。かかる操作入力には、たとえば描画や文書作成、または印刷などの指示入力が含まれる。そして、ＣＰＵ６は、アプリケーションプログラムＡＰＰやプリンタドライバプログラムＰＤＲに従って、入力に対応する処理を実行する。
【００２２】
ＣＰＵ６は、アプリケーションプログラムＡＰＰにより生成した１ページごとの元画像データを、ＲＡＭ２０に格納する。また、後述するように、ＧＰＵ１４＿１、１４＿２にて生成され、ＣＰＵ６に転送される印刷データを、ＲＡＭ２０に格納する。そして、ＣＰＵ６は、ＲＡＭ２０から印刷データを読み出し、インターフェース１２を介してプリンタ４に転送する。
【００２３】
このとき、ＣＰＵ６は、ＲＡＭ２０の記憶領域をメイン記憶領域２０＿１、ページロック記憶領域２０＿２に分けて使用する。メイン記憶領域２０＿１、ページロック記憶領域２０＿２の使い分けの方法は、後に詳述する。メイン記憶領域２０＿１は、格納するデータをハードディスク１０上の仮想記憶領域に退避（ページングまたはスワッピング）するための領域であり、「第１の記憶領域」に対応する。これにより、記憶容量不足が回避される。一方、ページロック記憶領域２０＿２は、かかるデータの退避を行わない、ページロックされた領域であり、「第２の記憶領域」に対応する。よって、ページロック記憶領域２０＿２では、ハードディスク１０へのアクセスを伴わない分、データの読み出しが高速化される。ページロック記憶領域２０＿２は固定的に確保しておくことも可能であるし、状況に応じて動的に確保することも可能である。ここでは、仮想記憶領域がハードディスク１０に設けられる場合を例として説明する。しかし、ハードディスク１０以外でも、ＣＰＵ６からのデータ読み書きの速度はＲＡＭ２０より劣るものの、ＲＡＭ２０より大容量の記憶媒体であれば、仮想記憶領域を設けることができる。
【００２４】
ＣＰＵ６は、転送部として、ＲＡＭ２０に格納した１ページごとの元画像データを、「処理単位」ごとに、インターフェース１２を介してＧＰＵ１４＿１、１４＿２に転送する。処理単位は、プリンタ４が印刷可能な画像の画素数や、ＧＰＵ１４＿１、１４＿２のメモリ容量などに応じて任意に設定される。たとえば、ＧＰＵ１４＿１、１４＿２のメモリ容量は一般的にＲＡＭ２０より小容量であり、１ページ分の元画像データを保持できる容量を有さない。よって、処理単位は、１ページより小さい単位に設定される。
【００２５】
ＧＰＵ１４＿１、１４＿２は、ＣＰＵ６の指示に従って、転送された元画像データに対し画像処理を行い、印刷データを生成する。すなわち、ＧＰＵ１４＿１、１４＿２は、１ページ分の元画像データに対し、それぞれの使用可能なメモリ容量に応じて処理単位ごとに分担して画像処理を並列して行う。そうすることで、ＣＰＵ６が単独で、あるいは単一のＧＰＵのみで１ページ分の元画像データを処理するよりも高速に、１ページあたりの画像処理を実行できる。そして、ＧＰＵ１４＿１、１４＿２は、印刷データをＣＰＵ６に転送する。ＧＰＵ１４＿１、１４＿２はそれぞれ、図示を省略するが、入出力データを一時的に保持するメモリと、画像処理プログラムに従って画像処理を実行するプロセッサコアとを有する。ＧＰＵ１４＿１、１４＿２では、キャッシュメモリや、分岐予測・非順次命令実行などの制御ハードウェアが省略されている。そして、浮動小数点演算に特化したプロセッサコアが並列化されることで、計算リソースが高密度に集約化されている。以下では、説明の便宜上、ＧＰＵ１４＿１、１４＿２は同じ仕様のものとし、同じデータに関する転送時間や処理時間はＧＰＵ１４＿１、１４＿２の間で差がないものとする。ただし、これらが異なる場合も、本実施形態に含まれる。また、図１では、ＧＰＵ１４＿１、１４＿２ともにパーソナルコンピュータ２の内部に設けられているが、ＧＰＵ１４＿１、１４＿２の両方またはいずれか一方が、パーソナルコンピュータ２の外部に設けられる構成であってもよい。  
【００２６】
ＧＰＵ１４＿１、１４＿２が行う画像処理について説明する。画像処理の内容は、元画像データの種類により異なる。元画像データが、たとえば、ベクタ形式の描画コマンドを含むポストスクリプトなどである場合、これに対する画像処理には、描画コマンドを解析し、画素ごとにＲＧＢ（レッド、グリーン、ブルー）階調値を有するＲＧＢビットマップデータを生成する処理、ＲＧＢビットマップデータの各画素の階調値をプリンタ４の表色系、たとえばＣＭＹＫ（シアン、マゼンタ、イエロー、ブラック）階調値に変換してＣＭＹＫビットマップデータを生成する色変換処理、ＣＭＹＫビットマップデータをプリンタ４の印刷解像度に合わせて二値化するハーフトーン処理、および、ハーフトーン処理されたビットマップデータに基づき、プリンタ４における主走査時のドットの記録状態を示すラスタデータと副走査送り量とを有する印刷データを生成する処理などが含まれる。また、元画像データがビットマップデータである場合、これに対する画像処理は、色変換またはハーフトーン処理、及び印刷データの生成処理が含まれる。いずれの場合も、最終的に印刷データが生成されるような画像処理が実行される。
【００２７】
次に、プリンタ４について詳細に説明する。プリンタ４では、ＣＰＵ２３がＲＯＭ２５に格納された制御プログラムに従って、印刷動作を統合的に制御する。また、ＣＰＵ２３は、パーソナルコンピュータ２から転送される印刷データをインターフェース２２を介して受け取り、ＲＡＭ２４にスプールする。ＲＡＭ２４は、たとえば１または複数ページの印刷データを格納できるページバッファである。そして、ＣＰＵ２３は、ＲＡＭ２４から読み出した印刷データを印刷エンジン２６に供給する。印刷エンジン２６は、出力画像を構成する画素ごとにインクやトナーなどの記録材でドットを形成し、印刷用紙に出力画像を印刷する。
【００２８】
なお、プリンタ４以外にも、たとえばプロジェクタにより画像出力装置を構成することも可能である。その場合、プロジェクタは、出力画像画像を構成する画素ごとに、その階調値に応じた色の光を照射して、出力画像を投影出力する。
【００２９】
本実施形態の変形例では、パーソナルコンピュータ２は、インターフェース１２により接続される外部記憶装置から元画像データを取得してもよい。外部記憶装置は、ＣＤ―ＲＯＭ（Compact Disk ROM）ドライブユニット、ＭＯ（Magneto Optic）ドライブユニット、ＦＤ（Floppy（登録商標）Disk）ドライブユニット、ＵＳＢ（Universal Serial Bus）インターフェースにより構成され、ＣＤ、ＭＯ、ＦＤなどの記憶媒体、あるいはＵＳＢメモリなどから元画像データを読み取る。
【００３０】
さらに別の変形例では、パーソナルコンピュータ２は他の情報処理装置から元画像データを取得する。たとえば、パーソナルコンピュータ２は、ネットワーク環境におけるプリンタサーバを構成する。その場合の構成は、破線で図示される。パーソナルコンピュータ２は、ネットワークインターフェース１３によりＬＡＮ（Local Area Network）などのネットワーク４０に接続される。ネットワーク４０には、他のパーソナルコンピュータ４２が接続される。他のパーソナルコンピュータ４２は、アプリケーションプログラムにより生成した元画像データや記憶媒体から読みとった元画像データを、ネットワーク４０を介してパーソナルコンピュータ２に転送する。ここで、複数の他のパーソナルコンピュータ４２がパーソナルコンピュータ２に元画像データを転送することももちろん可能である。あるいは、ネットワーク４０を介さずに、パーソナルコンピュータ２と他のパーソナルコンピュータ４２とがピアツーピアで接続される構成も可能である。
【００３１】
パーソナルコンピュータ２では、ＣＰＵ６が、他のパーソナルコンピュータ４２から転送された元画像データをネットワークインターフェース１３、インターフェース１２を介して受け取り、ＲＡＭ２０に格納する。そして、上述のように、元画像データをＧＰＵ１４＿１、１４＿２に転送して画像処理させる。この場合、元画像データは、描画コマンド、ＲＧＢビットマップデータ、ＣＭＹＫビットマップデータ、ハーフトーン処理されたビットマップデータのいずれでもよい。それぞれの場合に応じ、ＧＰＵ１４＿１、１４＿２では、最終的に印刷データを生成するような画像処理が行われる。
【００３２】
ここで、画像処理の際の、ＲＡＭ２０とＧＰＵ１４＿１、１４＿２との間のデータ転送について説明する。本実施形態では、２つの転送モードが実行される。
【００３３】
図２は、ＲＡＭ２０とＧＰＵ１４＿１、１４＿２との間のデータ転送を模式的に示す図である。図２（Ａ）は「第１の転送モード」（以下、通常転送モードという）に対応し、図２（Ｂ）は「第２の転送モード」（以下、高速転送モードという）に対応する。
【００３４】
まず通常転送モードについて説明する。図２（Ａ）に示すように、ＣＰＵ６は、生成され、または他のコンピュータ４２から転送された１ページ分の元画像データＧＤを、まずＲＡＭ２０のメイン記憶領域２０＿１に格納する。そして、ＣＰＵ６は、元画像データＧＤを、処理単位ごとにＧＰＵ１４＿１、１４＿２に転送する。ここで、元画像データＧＤ＿１はＧＰＵ１４＿１用の処理単位、元画像データＧＤ＿２はＧＰＵ１４＿２用の処理単位に対応する。すなわち、ＣＰＵ６は、元画像データＧＤ＿１をＧＰＵ１４＿１に転送し（Ｍ２）、元画像データＧＤ＿２をＧＰＵ１４＿２に転送する（Ｍ４）。
【００３５】
すると、ＧＰＵ１４＿１は画像処理を行って印刷データＰＤ＿１を生成し、ＣＰＵ６に転送するので、ＣＰＵ６はこれをメイン記憶領域２０＿１に格納する（Ｍ６）。一方、ＧＰＵ１４＿２は画像処理を行って印刷データＰＤ＿２を生成しＣＰＵ６に転送するので、ＣＰＵ６はこれをメイン記憶領域２０＿１に格納する（Ｍ８）。このような動作が１ページ分の元画像データＧＤのすべてに対し実行されることで、１ページ分の印刷データＰＤが生成される。
【００３６】
次に、高速転送モードについて説明する。図２（Ｂ）に示すように、ＣＰＵ６は、ＲＡＭ２０のメイン記憶領域２０＿１に格納された１ページ分の元画像データＧＤを、処理単位ごとにページロック記憶領域２０＿２に転送（または複製）して格納する。ここで、ページロック記憶領域２０＿２は、ＧＰＵ１４＿１用の第１ページロック記憶領域２０＿２１と、ＧＰＵ１４＿２用の第２記憶領域２０＿２２とに区分されて使用される。よって、ＧＰＵ１４＿１用の元画像データＧＤ＿１は第１ページロック記憶領域２０＿２１に格納され（Ｍ１０）、ＧＰＵ１４＿２用の元画像データＧＤ＿２は第２ページロック記憶領域２０＿２２に格納される（Ｍ１２）。
【００３７】
そして、ＣＰＵ６は、第１ページロック記憶領域２０＿２１から元画像データＧＤ＿１を読み出してＧＰＵ１４＿１に転送し（Ｍ１４）、第２ページロック記憶領域２０＿２２から元画像データＧＤ＿２を読み出してＧＰＵ１４＿２に転送する（Ｍ１６）。
【００３８】
すると、ＧＰＵ１４＿１は画像処理を行って印刷データＰＤ＿１を生成しＣＰＵ６に転送するので、ＣＰＵ６はこれを第１ページロック記憶領域２０＿２１に格納する（Ｍ１８）。一方、ＧＰＵ１４＿２は画像処理を行って印刷データＰＤ＿２を生成しＣＰＵ６に転送するので、ＣＰＵ６はこれを第２ページロック記憶領域２０＿２２に格納する（Ｍ２０）。
【００３９】
そして、ＣＰＵ６は、ページロック記憶領域２０＿２から印刷データＰＤ＿１、ＰＤ＿２を読み出し、印刷データＰＤ＿１、ＰＤ＿２をメイン記憶領域２０＿１に転送（または複製）して格納する（Ｍ２２、Ｍ２４）。このような動作が１ページ分の元画像データＧＤのすべてに対し実行されることで、１ページ分の印刷データＰＤが生成される。
【００４０】
図３は、通常転送モード、高速転送モードにおける動作手順を説明するシーケンス図である。ここでは、説明を明確にする便宜上、ＧＰＵ１４＿１のみに対するデータ転送を例として説明する。ただし、ここにおける説明はＧＰＵ１４＿２についても適用される。
【００４１】
通常転送モードに対応する図３（Ａ）には、横軸の時間軸に対し、処理単位ごとに、ＲＡＭ２０のメイン記憶領域２０＿１からＧＰＵ１４＿１へのデータ転送シーケンス（１）、ＧＰＵ１４＿１からメイン記憶領域２０＿１へのデータ転送シーケンス（２）、及びＧＰＵ１４＿１における画像処理シーケンス（３）が示される。図３（Ａ）に示すように、通常転送モードでは、１つの処理単位に関し、メイン記憶領域２０＿１からＧＰＵ１４＿１へのデータ転送シーケンス（１）、ＧＰＵ１４＿１における画像処理シーケンス（３）、ＧＰＵ１４＿１からメイン記憶領域２０＿１へのデータ転送シーケンス（２）の順で実行され、これが繰り返される。
【００４２】
高速転送モードに対応する図３（Ｂ）には、横軸の時間軸に対し、処理単位ごとに、メイン記憶領域２０＿１から第１ページロック記憶領域２０＿２１へのデータ転送シーケンス（１）、第１ページロック記憶領域２０＿２１からＧＰＵ１４＿１へのデータ転送シーケンス（２）、ＧＰＵ１４＿１から第１ページロック記憶領域２０＿２１へのデータ転送シーケンス（３）、第１ページロック記憶領域２０＿２１からメイン記憶領域２０＿１へのデータ転送シーケンス（４）、及びＧＰＵ１４＿１における画像処理シーケンス（５）が示される。図３（Ｂ）に示すように、高速転送モードでは、１つの処理単位に関し、メイン記憶領域２０＿１から第１ページロック記憶領域２０＿２１へのデータ転送シーケンス（１）、第１ページロック記憶領域２０＿２１からＧＰＵ１４＿１へのデータ転送シーケンス（２）、ＧＰＵ１４＿１における画像処理シーケンス（５）、ＧＰＵ１４＿１から第１ページロック記憶領域２０＿２１へのデータ転送シーケンス（３）、第１ページロック記憶領域２０＿２１からメイン記憶領域２０＿１へのデータ転送シーケンス（４）の順で実行され、これが繰り返される。
【００４３】
ここで、高速転送モードでは、仮想記憶領域にページングを行わない、ページロックされた第１ページロック記憶領域２０＿２１を用いてＧＰＵ１４＿１とのデータ転送を行うので、仮想記憶領域にページングを行うメイン記憶領域２０＿１からＧＰＵ１４＿１にデータ転送を行う通常転送モードより、データ読み出しを速く行うことができる。よって、データ転送時間が短縮される。
【００４４】
さらに、図３（Ｂ）に示すように、１つの処理単位についてＧＰＵ１４＿１での画像処理が行われるときに、元画像データの次の処理単位をメイン記憶領域２０＿１から第１ページロック記憶領域２０＿２１に転送する（（１）において矢印Ａ１で指し示す）。また、第１ページロック記憶領域２０＿２１に一旦格納した印刷データは、次の処理単位に関しＧＰＵ１４＿１での画像処理が行われるときに、メイン記憶領域２０＿１に転送する（（４）において矢印Ａ２で指し示す）。よって、生成された印刷データがＧＰＵ１４＿１から転送されたときに、即座に元画像データの次の処理単位の転送を開始できる。よって、全体としての画像処理時間を通常転送モードより短縮することができ、元画像データのデータ量が増大して転送時間が長くなったとしても、プリンタ４に遅延なく印刷データを供給することができる。
【００４５】
次に、ＧＰＵ１４＿１、１４＿２を並列で動作させる場合の、通常転送モード、高速転送モードについて説明する。
【００４６】
図４は、通常転送モードのシーケンスを説明する図である。図４（Ａ）、（Ｂ）には、横軸の時間軸に対し、処理単位ごとに、ＲＡＭ２０のメイン記憶領域２０＿１からＧＰＵ１４＿１、へのデータ転送シーケンス（１）、ＧＰＵ１４＿１からメイン記憶領域２０＿１へのデータ転送シーケンス（２）、及びＧＰＵ１４＿１における画像処理シーケンス（３）が示され、さらに、ＲＡＭ２０のメイン記憶領域２０＿１からＧＰＵ１４＿２へのデータ転送シーケンス（１´）、ＧＰＵ１４＿２からメイン記憶領域２０＿１へのデータ転送シーケンス（２´）、及びＧＰＵ１４＿２における画像処理シーケンス（３´）が示される。ここでは、ＲＡＭ２０のメイン記憶領域２０＿１からＧＰＵ１４＿１へのデータ転送と、ＧＰＵ１４＿１からＲＡＭ２０のメイン記憶領域２０＿１へのデータ転送とが、ＧＰＵ１４＿２における画像処理と重複するように実行される。それとともに、ＲＡＭ２０のメイン記憶領域２０＿１からＧＰＵ１４＿２へのデータ転送と、ＧＰＵ１４＿２からＲＡＭ２０のメイン記憶領域２０＿１へのデータ転送とが、ＧＰＵ１４＿１における画像処理と重複するように実行される。
【００４７】
図４（Ａ）は、特に、データ転送時間が画像処理時間以下の場合を示す。ここでは、ＧＰＵ１４＿２における画像処理時間Ｔ２４に、メイン記憶領域２０＿１からＧＰＵ１４＿１へのデータ転送時間Ｔ１１と、ＧＰＵ１４＿１からメイン記憶領域２０＿１へのデータ転送時間Ｔ１２との合計Ｔ１３が含まれる。一方では、ＧＰＵ１４＿１における画像処理時間Ｔ１４に、メイン記憶領域２０＿１からＧＰＵ１４＿２へのデータ転送時間Ｔ２１と、ＧＰＵ１４＿２からメイン記憶領域２０＿１へのデータ転送時間Ｔ２２との合計Ｔ２３が含まれる。このようにすることで、ＧＰＵ１４＿１、１４＿２の待ち時間が最小限となり、全体としての処理時間が短縮される。また、データバスの負荷が分散される。
【００４８】
また、図４（Ｂ）はデータ転送時間が処理時間より大きい場合を示す。ここでは、メイン記憶領域２０＿１からＧＰＵ１４＿１へのデータ転送時間Ｔ１１と、ＧＰＵ１４＿１からメイン記憶領域２０＿１へのデータ転送時間Ｔ１２の合計時間Ｔ１３に、ＧＰＵ１４＿２における画像処理時間Ｔ２４が含まれる。一方では、メイン記憶領域２０＿１からＧＰＵ１４＿２へのデータ転送時間Ｔ２１と、ＧＰＵ１４＿２からメイン記憶領域２０＿１へのデータ転送時間Ｔ２２の合計時間Ｔ２３に、ＧＰＵ１４＿１における画像処理時間Ｔ１４が含まれる。このようにすることで、ＣＰＵ６の待ち時間が最小限となる。よって、全体としての処理時間が短縮される。また、データバスの負荷が分散される。
【００４９】
ここで、元画像データの種類とデータ転送時間の関係に着目すると、元画像データがベクタ形式などの描画コマンドである場合より、ビットマップデータである場合の方が、データ量が大きく、したがってデータ転送時間が長くなる。一方、画像処理時間は、描画コマンドに基づいてビットマップデータを生成し、さらに色変換等の処理を行う場合より、ビットマップデータに対し色変換等の変換処理から行う場合の方が処理負荷が小さく、処理時間が短くなる。すなわち、データ転送時間と画像処理時間との関係は、元画像データのデータ量が小さい場合には、データ転送時間が短い一方で画像処理時間が長く、元画像データのデータ量が大きい場合には、データ転送時間が長い一方で画像処理時間が短いという関係が概ね成り立つ。
【００５０】
図４（Ｂ）では、ＧＰＵ１４＿１、１４＿２に関し、一方へのデータ転送と他方での画像処理を重複させることで処理を高速化している。しかし、たとえば１つの印刷ジョブにおいてページごとに元画像データが異なるような場合に、転送されるデータ量が途中から増大し、画像処理時間の割に転送時間が長くなってくると、画像処理時間内にデータ転送が終了しないおそれが生じる。かかる場合には、次に述べる高速転送モードの方が、転送時間を短縮することができ有利である。
【００５１】
図５は、高速転送モードの処理シーケンスを説明する図である。横軸の時間軸に対し、処理単位ごとに、メイン記憶領域２０＿１から第１ページロック記憶領域２０＿２１へのデータ転送シーケンス（１）、第１ページロック記憶領域２０＿２１からＧＰＵ１４＿１へのデータ転送シーケンス（２）、ＧＰＵ１４＿１から第１ページロック記憶領域２０＿２１へのデータ転送シーケンス（３）、第１ページロック記憶領域２０＿２１からメイン記憶領域２０＿１へのデータ転送シーケンス（４）、及びＧＰＵ１４＿１における画像処理シーケンス（５）が示され、さらに、メイン記憶領域２０＿１から第２ページロック記憶領域２０＿２２へのデータ転送シーケンス（１´）、第２ページロック記憶領域２０＿２２からＧＰＵ１４＿２へのデータ転送シーケンス（２´）、ＧＰＵ１４＿２から第２ページロック記憶領域２０＿２２へのデータ転送シーケンス（３´）、第２ページロック記憶領域２０＿２２からメイン記憶領域２０＿１へのデータ転送シーケンス（４´）、及びＧＰＵ１４＿２における画像処理シーケンス（５´）が示される。
【００５２】
ここでは、メイン記憶領域２０＿１から第１ページロック記憶領域２０＿２１へのデータ転送時間Ｔ１５と、第１ページロック記憶領域２０＿２１からＧＰＵ１４＿１へのデータ転送時間Ｔ１６と、ＧＰＵ１４＿１から第１ページロック記憶領域２０＿２１へのデータ転送時間Ｔ１７の合計が、ＧＰＵ１４＿２における画像処理時間Ｔ２４に含まれるように、データ転送が実行される。一方では、メイン記憶領域２０＿１から第２ページロック記憶領域２０＿２２へのデータ転送時間Ｔ２５と、第２ページロック記憶領域２０＿２２からＧＰＵ１４＿２へのデータ転送時間Ｔ２６と、ＧＰＵ１４＿２から第２ページロック記憶領域２０＿２２へのデータ転送時間Ｔ２７の合計が、ＧＰＵ１４＿１における画像処理時間Ｔ１４に含まれるように、データ転送が実行される。このようにすることで、データ転送時間が短縮することに加え、ＣＰＵ６、及びＧＰＵ１４＿１、１４＿２の待ち時間が最小限となり、全体としての画像処理時間が短縮される。よって、転送されるデータ量が増大した場合であっても、画像処理時間内にデータ転送を実行でき、印刷データ供給の遅延を防止することができる。また、データバスの負荷が軽減される。
【００５３】
次に、通常転送モード、高速転送モードの切替えについて説明する。上述したように、データ転送時間と画像処理時間との関係は、元画像データのデータ量が小さい場合には、データ転送時間が短い一方で画像処理時間が長く、元画像データのデータ量が大きい場合には、データ転送時間が長い一方で画像処理時間が短くなるという関係が概ね成り立つ。このことに着目し、本実施形態では、通常転送モードと高速転送モードを、元画像データをＧＰＵ１４＿１、１４＿２に転送する転送時間の、ＧＰＵ１４＿１、１４＿２での画像処理時間に対する比率に基づいて切り替える。そうすることで、印刷データの供給速度を所望の速度以上に保ち、プリンタ４の印刷速度に間に合うように印刷データを供給することを可能にする。
【００５４】
図６は、パーソナルコンピュータ２が印刷ジョブを実行するときの動作手順を説明するフローチャート図である。図６の手順は、ＣＰＵ６とＧＰＵ１４＿１、１４＿２における動作手順を示す。
【００５５】
ＣＰＵ６は、印刷開始の指示が入力され、または他のパーソナルコンピュータから印刷開始の指示が送られると（Ｓ２）、通常転送モードに設定して（Ｓ３）画像処理を開始する。
【００５６】
ＣＰＵ６は、通常転送モードにより、元画像データを処理単位ごとにＧＰＵ１４＿１、１４＿２に転送し、画像処理を指示する（Ｓ４）。
【００５７】
ＧＰＵ１４＿１、１４＿２は、元画像データと画像処理の指示を受け取ると（Ｓ６）、これに応答して画像処理を行い（Ｓ８）、印刷データを生成する。そして、ＧＰＵ１４＿１、１４＿２は、印刷データをＣＰＵ６に転送する（Ｓ１０）。
【００５８】
この間、ＣＰＵ６は、手順Ｓ４を実行するときにタイマを動作させ、転送完了後にデータ転送に要した時間を計測する（Ｓ１１）。そして、ＣＰＵ６は、印刷データを受け取って（Ｓ１２）、元画像データの転送後からの経過時間を計測して、ＧＰＵ１４＿１、１４＿２での画像処理時間を計測する（Ｓ１３）。ここで、印刷データのデータ量は、プリンタ４で印刷可能な画像の画素数や、ＧＰＵ１４＿１、１４＿２の処理能力に応じて予め導出される。よって、印刷データの転送時間も予め計算により導出される。ここにおいて、元画像データ、印刷データの転送時間を導出するＣＰＵ６が、転送時間導出部に対応する。また、画像処理時間は、元画像データ転送後からの経過時間から、印刷データの転送時間を減算することで導出される。ここにおいて、画像処理時間を導出するＣＰＵ６が、処理時間導出部に対応する。
【００５９】
次に、ＣＰＵ６は、転送対処理時間比率（（元画像データの転送時間＋印刷データの転送時間）／画像処理時間）が、所定の閾値を上回っている場合には（Ｓ１４のＹＥＳ）、高速転送モードに設定して（Ｓ１５）処理を続行する。この場合、データ転送時間が画像処理時間に対して大きくなっており、元画像データのデータ量が増大したことを意味する。そこで、高速転送モードに切り替えることで、印刷データの供給が遅延することを防止する。ここにおいて、判断のための閾値は、印刷データの供給が遅延する蓋然性が高くなることが想定されるような閾値を実験や計算により求め、任意に設定することができる。また、転送対処理時間比率を、（元画像データの転送時間／画像処理時間）としてもよい。
【００６０】
一方、転送対処理時間比率が所定の閾値以下の場合には（Ｓ１４のＮＯ）、通常転送モードのまま処理を続行する。ここで、高速転送モードを実行するときにはページロック記憶領域２０＿２をＲＡＭ２０に確保し、通常転送モードを実行するときにはこれを解放するような制御を実行することが可能である。そうすることですることで、ページロックされたページロック記憶領域２０＿２によりＲＡＭ２０の記憶領域を圧迫することを回避することができる。よって、ＣＰＵ２０が他の制御プログラムや処理プログラムを実行しているようなときに、ＲＡＭ２０を効率的に使用することができ、処理効率低下を防止できる。また、他のパーソナルコンピュータ２がネットワーク上のプリンタサーバを構成し、ネットワーク上の複数のパーソナルコンピュータ４２から元画像データが送信される場合であっても、ＲＡＭ２０の記憶領域を有効に使用することができる。
【００６１】
ＣＰＵ６は、１ページ分の印刷データが蓄積されるまで手順Ｓ４〜Ｓ１５を繰り返し（Ｓ１６のＮＯ）、１ページ分の印刷データが蓄積されたときに（Ｓ１６のＹＥＳ）、これをプリンタ４に出力する（Ｓ１７）。なお、手順Ｓ１６において判断の基準となるページ数は、ＲＡＭ２０の要領に応じて任意に設定される複数ページであってもよい。そうすることで、パーソナルコンピュータ２側でも印刷データをスプールすることができる。
【００６２】
そして、ＣＰＵ６は、最後のページに対する処理が終了するまで上記手順Ｓ４〜Ｓ１７を繰り返し（Ｓ１８のＮＯ）、最後のページに対する処理が終了すると（Ｓ１８のＹＥＳ）本処理を終了する。
【００６３】
上記の手順によれば、１つの印刷ジョブの途中でも通常転送モード高速転送モードを切り替えることができる。これにより、ページごと、あるいは処理単位ごとに画像の構成が異なり、したがって元画像データの転送時間が異なるような場合であっても、データ転送時間が増加することで印刷データの供給が遅れることを防止できる。よって、プリンタ４から白紙が出力されたり、プリンタ４の印刷を一旦停止させたりといったことを回避でき、印刷が遅延することを防止できる。
【００６４】
本実施形態によれば、パーソナルコンピュータごとにＣＰＵやＧＰＵの処理性能が異なり、データ転送時間や画像処理時間が異なる場合であっても、これらの比率により通常転送モード高速転送モードを切り替えるので、動作環境に依存することなく上述の効果が得られる。
【００６５】
また、上述の説明は、２つのＧＰＵを用いて画像処理を行う場合を例とした。しかしながら、３つ以上のＧＰＵを用いて画像処理を行う場合であっても、本実施形態が適用できる。
【００６６】
以上、説明したとおり、本実施形態によれば、ＧＰＵに転送される元画像データの画像の構成や画像処理の内容の如何に関わらず、画像出力装置の動作速度に間に合うように出力画像データを供給することが可能となる。
【符号の説明】
【００６７】
２：パーソナルコンピュータ  ４：プリンタ  ６：ＣＰＵ  １４＿１、１４＿２：ＧＰＵ
２０：ＲＡＭ  ２０＿１：メイン記憶領域  ２０＿２：ページロック記憶領域  
【図１】
0005471696.tif 000002
【図２】
0005471696.tif 000003
【図３】
0005471696.tif 000004
【図４】
0005471696.tif 000005
【図５】
0005471696.tif 000006
【図６】
0005471696.tif 000007